WindowMaker-0.95.9/0000755000175000017500000000000013642365214011054 500000000000000WindowMaker-0.95.9/The-perfect-Window-Maker-patch.txt0000644000175000017500000001632113642357773017320 00000000000000____________ Introduction ------------ These notes are meant to help you in the process of making and submitting patches to the git repository of wmaker-crm. It assumes you have 'git' correctly installed and you have set the most basic configuration options via 'git config'. See the end of this file for an example .gitconfig. To clone the wmaker-crm repository you can do: git clone git://repo.or.cz/wmaker-crm.git You should note that the development occur in the #next branch, and patches are backported to #master when considered ok. So, you probably want to switch to #next branch, if not already done: git checkout next ____________________ Testing your changes -------------------- If you want to raise the quality of your contribution, you are strongly encouraged to use at least this configure option: ./configure --enable-debug This does not only enable debugging information, which you may need when testing your work, it also enables a number of extra compiler warning which help keeping safer code. You will probably want also to run this in the end, because it does some checks on the source tree: make check __________________________ Producing a patch with git -------------------------- You have the wmaker source and you want to write a patch in order to fix a bug or improve something. A possible work-flow is the following: # Optional: Create a new branch (to be safe in case you screw up) git checkout -b fixbug Now you fix the bug... # Check what you did, review etc git diff # if it looks good, commit your changes git commit -a Git will open the editor set in your .gitconfig and you'll have to write a commit message. Writing a good message is as important as the source code modifications you've just made! See "Writing the commit log" for advice. # Prepare the patch to submit to the mailing-list. # (use HEAD~2 if you want patches for the last 2 commits etc) git format-patch HEAD~1 # If you have created your own branch, and want all your commits created # after the #next branch, you can use: git format-patch next In order to ensure consistency in the code, there's an extra step to check the patchs. You should run this script (inherited from the Linux kernel) on the patch files generated and fix your commits for what it reports: ./checkpatch.pl 00* ______________________ Writing the commit log ---------------------- You had a motivation to write your patch, you studied the sources and you found a way to do what you wanted to do. This whole process takes time and other people will not want to invest that time to rediscover what you've already found. So the main reason for the commit message is to explain to other people what you did, _why_ and _how_. And you must assume that the person you must explain these things to will not be as familiar with the code you just modified as you are right after writing the patch -- and that includes yourself in a year or so. Be verbose in all the steps below. The good commit log will start with the reason for writing the patch. For example, if you use wmaker in some way and you expect that X happens but you get Y, you should say that very clearly. Sometimes that's enough for other more experienced people to know how to solve your issue. They will be able to judge your patch better if they know what you wanted to do -- sometimes there can be a better way to fix it. Then you should explain why the wmaker source leads to Y and not to X. Technical stuff can be expected at this point, e.g. "upon doing xyz in function foobar(), wmaker sets the variable foo to 'y' instead of setting it to 'x', and that will lead to blabla happening in function foobar_squared()...". And finally you explain how you fixed it. "You have to set foo to 'x', because then when the function foobar_squared() is called it will do X instead of Y because..." At this point other people will have a clear understanding of what you did with minimal effort. And that leads to better patch reviews. Furthermore, the above reasons should also tell you that you must not do more than one thing in the same patch. Again: "Each patch must do one thing and one thing only." If your patch does too much of unrelated stuff, it makes reviewing a nightmare and long-term maintenance much worse (think about a patch which introduces a regression in the middle of many other nice improvements, and now you have to get rid of the regression without removing the improvements -- 'git revert' will not help you here). If you find yourself having troubles to write what you did in the commit message, perhaps you did too much. In this case you should split your patch into smaller unrelated pieces and produce a patch series. Unfortunately it's more work for you, but it's much better for wmaker. _____________________________________ Sending the patch to the mailing list ------------------------------------- Send your patches to: wmaker-dev@googlegroups.com Please do not send patches to any individual developer unless you have a very good reason to avoid more people being able to comment (and improve) on your patches. The HIGHLY RECOMMENDED way to send a patch is to actually let Git do it for you, otherwise you may face the problems below. Doing this is really easy: # Tell git once how to send mails: # (of course, replace smtp.example.com with your ISP's) git config --global sendemail.smtpserver "smtp.example.com" git config --global sendemail.validate true git config sendemail.to "Window Maker Devel " # If you're sending more than 1 patch, you may be interested in having an # introduction mail for the batch: git format-patch --cover-letter next vi/emacs/nedit/whatever 0000-cover-letter.patch # When you're satisfied, ask Git to mail all the patches: git send-email 00* If you do not want or cannot let Git send them for you, please note that sending the patch _properly_ is not as trivial as you may think. Some mail clients convert TABs to spaces or word wrap long lines automatically, which will result in your patch being rejected as it will not apply with 'git apply'. You could send the patch as an attachement to the mail, but this generally makes it a bit harder to review, and a lot harder to comment on; that's why the preferred method is inlined patches (like Git does). Ideally your patch should contain a very good commit message that explains why you wrote the patch in the first place (see "Writing the commit log"). In this case you can simply send the file(s) created in the 'git format-patch' step above as the sole content of your email to the mailing list. All your reasons and explanations will be in the commit log, and your email will look like: ********************************** From: someone@someplace Subject: [PATCH] Fix something The commit message. The diff itself. ********************************** Read the file email-clients.txt in the topdir of the wmaker-crm repository to be advised on how to tweak your email client to avoid common pitfalls. ___________________ Example .gitconfig ------------------- [user] name = Erwin Schrodinger email = schrodinger@gmail.com [core] editor = xjed [status] showUntrackedFiles = no [color] branch = auto status = auto diff = auto ui = auto [apply] whitespace = fix WindowMaker-0.95.9/po/0000755000175000017500000000000013642365213011471 500000000000000WindowMaker-0.95.9/po/it.po0000644000175000017500000015271613431646201012374 00000000000000# Italian messages for windowmaker. # Copyright (C) 2001, 2005 Free Software Foundation, Inc. # This file is distributed under the same license as the windowmaker package. # Marco Colombo , 2005. # Michele Campeotto , 2001. # msgid "" msgstr "" "Project-Id-Version: WindowMaker 0.91\n" "POT-Creation-Date: 2005-03-04 15:31+0000\n" "PO-Revision-Date: 2005-03-04 16:33+0000\n" "Last-Translator: Marco Colombo \n" "Language-Team: Italian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../src/appicon.c:415 ../src/dialog.c:295 ../src/dock.c:3335 #: ../src/dockedapp.c:231 ../src/main.c:271 ../src/rootmenu.c:1854 #: ../src/winspector.c:394 ../src/winspector.c:411 msgid "Error" msgstr "Errore" #: ../src/appicon.c:416 msgid "Could not open specified icon file" msgstr "Impossibile aprire l'icona specificata" #: ../src/appicon.c:417 ../src/dialog.c:192 ../src/dialog.c:295 #: ../src/dialog.c:725 ../src/dialog.c:1796 ../src/dock.c:515 #: ../src/dock.c:523 ../src/dock.c:547 ../src/dock.c:3336 #: ../src/dockedapp.c:232 ../src/dockedapp.c:427 ../src/main.c:271 #: ../src/rootmenu.c:1858 ../src/winspector.c:395 ../src/winspector.c:412 msgid "OK" msgstr "Ok" #: ../src/appicon.c:445 ../src/dock.c:244 msgid "" " will be forcibly closed.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" " sarà chiuso forzatamente.\n" "Tutte le modifiche non salvate saranno perse.\n" "Confermare." #: ../src/appicon.c:453 ../src/dock.c:263 ../src/winmenu.c:124 msgid "Kill Application" msgstr "Termina l'applicazione" #: ../src/appicon.c:454 ../src/dock.c:264 ../src/winmenu.c:126 msgid "Yes" msgstr "Sì" #: ../src/appicon.c:454 ../src/dock.c:264 ../src/winmenu.c:126 msgid "No" msgstr "No" #: ../src/appicon.c:484 ../src/dock.c:1168 ../src/dock.c:3501 msgid "Unhide Here" msgstr "Mostra qui" #: ../src/appicon.c:485 ../src/appicon.c:510 ../src/dock.c:1170 #: ../src/dock.c:1172 ../src/dock.c:3513 ../src/winmenu.c:461 msgid "Hide" msgstr "Nascondi" #: ../src/appicon.c:486 msgid "Set Icon..." msgstr "Cambia icona..." #: ../src/appicon.c:487 ../src/dock.c:1176 ../src/rootmenu.c:248 #: ../src/rootmenu.c:264 ../src/winmenu.c:508 msgid "Kill" msgstr "Termina" #: ../src/appicon.c:508 ../src/dock.c:3511 msgid "Unhide" msgstr "Mostra" #: ../src/application.c:405 #, c-format msgid "recreating missing icon '%s'" msgstr "rigenerazione dell'icona mancante '%s'" #: ../src/defaults.c:933 ../src/defaults.c:1095 #, c-format msgid "Domain %s (%s) of global defaults database is corrupted!" msgstr "Il dominio %s (%s) del database globale dei default è rovinato!" #: ../src/defaults.c:938 #, c-format msgid "could not load domain %s from global defaults database" msgstr "impossibile leggere il dominio \"%s\" dal database globale dei default" #: ../src/defaults.c:990 ../src/defaults.c:1005 #, c-format msgid "invalid global menu file %s" msgstr "file di menù globale %s non valido" #: ../src/defaults.c:1033 ../src/startup.c:762 ../src/startup.c:780 #: ../src/startup.c:787 #, c-format msgid "could not read domain \"%s\" from defaults database" msgstr "impossibile leggere il dominio \"%s\" dal database dei default" #: ../src/defaults.c:1079 ../src/defaults.c:1184 ../src/defaults.c:1225 #: ../src/defaults.c:1281 #, c-format msgid "Domain %s (%s) of defaults database is corrupted!" msgstr "Il dominio %s (%s) del database dei default è rovinato!" #: ../src/defaults.c:1084 ../src/defaults.c:1204 ../src/defaults.c:1261 #: ../src/defaults.c:1291 #, c-format msgid "could not load domain %s from user defaults database" msgstr "impossibile leggere il dominio \"%s\" dal database personale dei default" #: ../src/defaults.c:1114 #, c-format msgid "could not load domain %s from global defaults database (%s)" msgstr "impossibile leggere il dominio \"%s\" dal database globale dei default (%s)" #: ../src/defaults.c:1251 ../src/screen.c:419 #, c-format msgid "could not load logo image for panels: %s" msgstr "impossibile caricare il logo per i pannelli: %s" #. --------------------------- Local ----------------------- #: ../src/defaults.c:1500 ../src/defaults.c:1639 ../src/defaults.c:1765 #: ../src/defaults.c:2243 ../src/defaults.c:2260 ../src/defaults.c:2305 #: ../src/defaults.c:2352 ../src/defaults.c:2825 ../src/wdefaults.c:571 #: ../src/wdefaults.c:604 #, c-format msgid "Wrong option format for key \"%s\". Should be %s." msgstr "Formato dell'opzione sbagliato per la chiave \"%s\". Deve essere %s." #: ../src/defaults.c:1502 ../src/defaults.c:1583 ../src/defaults.c:1613 #: ../src/defaults.c:1644 ../src/defaults.c:1657 ../src/defaults.c:1672 #: ../src/defaults.c:1686 ../src/defaults.c:1770 ../src/defaults.c:1782 #: ../src/defaults.c:2248 ../src/defaults.c:2265 ../src/defaults.c:2278 #: ../src/defaults.c:2310 ../src/defaults.c:2326 ../src/defaults.c:2357 #: ../src/defaults.c:2444 ../src/defaults.c:2830 ../src/defaults.c:2841 #, c-format msgid "using default \"%s\" instead" msgstr "viene usato il valore predefinito \"%s\" invece" #: ../src/defaults.c:1533 #, c-format msgid "wrong option value for key \"%s\". Should be one of %s" msgstr "opzione sbagliata per la chiave \"%s\". Deve essere una di %s" #: ../src/defaults.c:1578 #, c-format msgid "can't convert \"%s\" to boolean for key \"%s\"" msgstr "impossibile convertire \"%s\" in booleano per la chiave \"%s\"" #: ../src/defaults.c:1610 #, c-format msgid "can't convert \"%s\" to integer for key \"%s\"" msgstr "impossibile convertire \"%s\" in intero per la chiave \"%s\"" #: ../src/defaults.c:1652 #, c-format msgid "Incorrect number of elements in array for key \"%s\"." msgstr "Numero di elementi dell'array sbagliato per la chiave \"%s\"." #: ../src/defaults.c:1667 #, c-format msgid "Wrong value for key \"%s\". Should be Coordinate." msgstr "Valore errato per la chiave \"%s\". Devono essere delle coordinate." #: ../src/defaults.c:1682 #, c-format msgid "can't convert array to integers for \"%s\"." msgstr "impossibile convertire l'array in interi per \"%s\"." #: ../src/defaults.c:1715 #, c-format msgid "Wrong value for key \"%s\". Should be an array." msgstr "Valore errato per la chiave \"%s\". Deve essere un array." #: ../src/defaults.c:1893 ../src/defaults.c:1925 ../src/defaults.c:1941 #: ../src/defaults.c:1970 ../src/defaults.c:1993 ../src/defaults.c:2046 #: ../src/defaults.c:2086 ../src/defaults.c:2124 ../src/defaults.c:2140 #, c-format msgid "\"%s\" is not a valid color name" msgstr "\"%s\" non è un nome di colore valido" #: ../src/defaults.c:1906 ../src/defaults.c:1958 msgid "bad number of arguments in gradient specification" msgstr "numero errato di argomenti nella definizione della sfumatura" #: ../src/defaults.c:2019 msgid "too few arguments in multicolor gradient specification" msgstr "argomenti mancanti nella definizione della sfumatura multicolore" #: ../src/defaults.c:2113 msgid "bad number of arguments in textured gradient specification" msgstr "numero errato di argomenti nella definizione della sfumatura con trama" # FIXME UPSTREAM: tgradient -> the gradient REPORTED #: ../src/defaults.c:2156 #, c-format msgid "bad opacity value for tgradient texture \"%s\". Should be [0..255]" msgstr "valore di opacità errato per la sfumatura con trama \"%s\". Deve essere [0..255]" #: ../src/defaults.c:2216 #, c-format msgid "could not initialize library %s" msgstr "impossibile inizializzare la libreria %s" #: ../src/defaults.c:2219 #, c-format msgid "could not find function %s::%s" msgstr "impossibile trovare la funzione %s::%s" #: ../src/defaults.c:2226 #, c-format msgid "invalid texture type %s" msgstr "tipo di trama non valido %s" #: ../src/defaults.c:2273 #, c-format msgid "Error in texture specification for key \"%s\"" msgstr "Errore nella definizione della trama per la chiave \"%s\"" #: ../src/defaults.c:2322 msgid "Wrong type for workspace background. Should be a texture type." msgstr "" "Tipo errato per lo sfondo dell'area di lavoro. Deve essere un tipo di trama." #: ../src/defaults.c:2370 #, c-format msgid "Wrong type for background of workspace %i. Should be a texture." msgstr "" "Tipo errato per lo sfondo dell'area di lavoro %i. Deve essere una trama." #: ../src/defaults.c:2412 msgid "could not load any usable font!!!" msgstr "impossibile caricare un font utilizzabile" #: ../src/defaults.c:2439 #, c-format msgid "could not get color for key \"%s\"" msgstr "impossibile trovare il colore per la chiave \"%s\"" # FIXME UPSTREAM #: ../src/defaults.c:2497 ../src/rootmenu.c:531 #, c-format msgid "%s:invalid key modifier \"%s\"" msgstr "%s: modificatore di tasto non valido \"%s\"" # FIXME UPSTREAM #: ../src/defaults.c:2509 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\"" msgstr "%s: definizione di scorciatoia non valida \"%s\"" # FIXME UPSTREAM #: ../src/defaults.c:2516 #, c-format msgid "%s:invalid key in shortcut \"%s\"" msgstr "%s: tasto non valido nella scorciatoia \"%s\"" #: ../src/defaults.c:2541 #, c-format msgid "%s: modifier key %s is not valid" msgstr "%s: il tasto modificatore %s non è valido" #: ../src/defaults.c:2573 #, c-format msgid "could not load image in option %s: %s" msgstr "impossibile caricare l'immagine nell'opzione %s: %s" #: ../src/defaults.c:2690 #, c-format msgid "failed to open bitmap file \"%s\"" msgstr "apertura del file bitmap \"%s\" non riuscita" #: ../src/defaults.c:2693 #, c-format msgid "\"%s\" is not a valid bitmap file" msgstr "\"%s\" non è un file bitmap valido" #: ../src/defaults.c:2696 #, c-format msgid "out of memory reading bitmap file \"%s\"" msgstr "memoria esaurita leggendo il file bitmap \"%s\"" #: ../src/defaults.c:2735 ../src/defaults.c:2768 msgid "bad number of arguments in cursor specification" msgstr "numero di argomenti errato nella definizione del cursore" #: ../src/defaults.c:2751 #, c-format msgid "unknown builtin cursor name \"%s\"" msgstr "nome di cursore incorporato sconosciuto \"%s\"" #: ../src/defaults.c:2778 ../src/defaults.c:2790 #, c-format msgid "could not find cursor bitmap file \"%s\"" msgstr "impossibile trovare il file bitmap \"%s\" del cursore" #: ../src/defaults.c:2837 #, c-format msgid "Error in cursor specification for key \"%s\"" msgstr "Errore nella definizione del cursore per la chiave \"%s\"" #: ../src/defaults.c:2922 msgid "could not render texture for icon background" msgstr "impossibile generare la trama per lo sfondo dell'icona" #: ../src/defaults.c:3542 ../src/defaults.c:3617 #, c-format msgid "Invalid arguments for option \"%s\"" msgstr "Argomenti non validi per l'opzione \"%s\"" #: ../src/defaults.c:3549 ../src/defaults.c:3624 #, c-format msgid "Could not find image \"%s\" for option \"%s\"" msgstr "Impossibile trovare l'immagine \"%s\" per l'opzione \"%s\"" #: ../src/defaults.c:3555 ../src/defaults.c:3632 #, c-format msgid "Could not load image \"%s\" for option \"%s\"" msgstr "Impossibile caricare l'immagine \"%s\" per l'opzione \"%s\"" #: ../src/defaults.c:3567 msgid "Invalid split sizes for switch panel back image." msgstr "" #: ../src/defaults.c:3640 #, c-format msgid "Invalid number of arguments for option \"%s\"" msgstr "Numero di argomenti non valido per l'opzione \"%s\"" #: ../src/dialog.c:147 msgid "Save workspace state" msgstr "Salva l'area di lavoro" #: ../src/dialog.c:192 ../src/dialog.c:732 ../src/dock.c:547 #: ../src/dockedapp.c:432 ../src/rootmenu.c:198 ../src/rootmenu.c:248 #: ../src/rootmenu.c:264 msgid "Cancel" msgstr "Annulla" #: ../src/dialog.c:290 msgid "Could not open directory \"%s\":\n%s" msgstr "Impossibile aprire la directory \"%s\":\n%s" #: ../src/dialog.c:345 msgid "Could not load image file " msgstr "Impossibile caricare il file immagine " #: ../src/dialog.c:659 msgid "Directories" msgstr "Directory" #: ../src/dialog.c:668 msgid "Icons" msgstr "Icone" #: ../src/dialog.c:701 msgid "Preview" msgstr "Anteprima" #: ../src/dialog.c:714 msgid "File Name:" msgstr "Nome file:" #: ../src/dialog.c:738 msgid "Choose File" msgstr "Selezione del file" #: ../src/dialog.c:757 ../src/dialog.c:759 msgid "Icon Chooser" msgstr "Selezione dell'icona" #: ../src/dialog.c:1196 ../src/dialog.c:1304 #, c-format msgid "Version %s" msgstr "Versione %s" #: ../src/dialog.c:1302 msgid "Window Manager for X" msgstr "Gestore di finestre per X" #: ../src/dialog.c:1325 #, c-format msgid "Using visual 0x%x: %s %ibpp " msgstr "Si sta usando la visual 0x%x: %s %ibpp" #: ../src/dialog.c:1333 msgid "(32 thousand colors)\n" msgstr "(32 mila colori)\n" #: ../src/dialog.c:1336 msgid "(64 thousand colors)\n" msgstr "(64 mila colori)\n" #: ../src/dialog.c:1340 msgid "(16 million colors)\n" msgstr "(16 milioni di colori)\n" #: ../src/dialog.c:1343 #, c-format msgid "(%d colors)\n" msgstr "(%d colori)\n" #: ../src/dialog.c:1353 #, c-format msgid "Total allocated memory: %i kB. Total memory in use: %i kB.\n" msgstr "Memoria allocata: %i kB. Memoria utilizzata: %i kB.\n" #: ../src/dialog.c:1283 msgid "Image formats: " msgstr "Formati di immagine: " #: ../src/dialog.c:1367 msgid "" "\n" "Additional support for: " msgstr "" "\n" "Supporto aggiuntivo per: " #: ../src/dialog.c:1384 msgid " and " msgstr " e " #: ../src/dialog.c:1394 msgid "" "\n" "Sound disabled" msgstr "\nAudio disabilitato" #: ../src/dialog.c:1396 msgid "" "\n" "Sound enabled" msgstr "\nAudio abilitato" #: ../src/dialog.c:1401 msgid ", VirtualDesktop enabled" msgstr ", VirtualDesktop abilitato" #: ../src/dialog.c:1403 msgid ", VirtualDesktop disabled" msgstr ", VirtualDesktop disabilitato" #: ../src/dialog.c:1407 msgid "\n" msgstr "\n" #: ../src/dialog.c:1409 msgid "Solaris " msgstr "Solaris " #: ../src/dialog.c:1411 msgid "Xinerama: " msgstr "Xinerama: " #: ../src/dialog.c:1445 msgid "Info" msgstr "Informazioni" #: ../src/dialog.c:1469 msgid "Merry Christmas!" msgstr "Buon Natale!" #: ../src/dialog.c:1417 msgid "" " Window Maker 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.\n" "\n" " Window Maker 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.\n" "\n" " You should have received a copy of the GNU General Public License along " "with this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin Street, Fifth Floor, Boston, MA02110-1301 USA." msgstr "" " Window Maker è software libero; può essere ridistribuito e/o modificato " "nei termini della GNU General Public License come pubblicata dalla Free " "Software Foundation; versione 2 della licenza o (a vostra scelta) " "qualsiasi versione successiva.\n" "\n" " WindowMaker è distribuito nella speranza che sia utile, ma SENZA " "NESSUNA GARANZIA; neppure l'implicita garanzia di COMMERCIABILITÀ o " "IDONEITÀ AD UN SCOPO PARTICOLARE. Per maggiori informazioni, vedere la " "GNU General Public License.\n" "\n" " Dovreste aver ricevuto una copia della GNU General Public License " "insieme a questo programma; se non è così, scrivete alla Free Software " "Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA." #: ../src/dialog.c:1563 msgid "Legal" msgstr "Condizioni legali" #: ../src/dialog.c:1719 msgid "cannot open connection for crashing dialog panel. Aborting." msgstr "impossibile aprire una connessione per la finestra di crash. Interrotto." #: ../src/dialog.c:1745 msgid "Fatal error" msgstr "Errore fatale" #: ../src/dialog.c:1756 #, c-format msgid "" "Window Maker received signal %i\n" "(%s)." msgstr "" "Window Maker ha ricevuto il segnale %i\n" "(%s)." #: ../src/dialog.c:1759 #, c-format msgid "Window Maker received signal %i." msgstr "Window Maker ha ricevuto il segnale %i." #: ../src/dialog.c:1768 msgid "" " This fatal error occured probably due to a bug. Please fill the included " "BUGFORM and report it to %s." msgstr "" " Questo errore fatale è probabilmente dovuto ad un bug. Si prega di " "compilare il file BUGFORM allegato e inviarlo a %s." #: ../src/dialog.c:1777 msgid "What do you want to do now?" msgstr "Che cosa si vuole fare adesso?" #: ../src/dialog.c:1783 msgid "Select action" msgstr "Selezione dell'azione" #: ../src/dialog.c:1784 msgid "Abort and leave a core file" msgstr "Abbandona e genera un core dump" #: ../src/dialog.c:1785 msgid "Restart Window Maker" msgstr "Riavvia Window Maker" #: ../src/dialog.c:1786 msgid "Start alternate window manager" msgstr "Avvia un altro gestore di finestre" #: ../src/dialog.c:1964 msgid "" "Window Maker is part of the GNUstep project.\n" "The GNUstep project aims to create a free\n" "implementation of the OpenStep(tm) specification\n" "which is a object-oriented framework for\n" "creating advanced graphical, multi-platform\n" "applications. Additionally, a development and\n" "user desktop environment will be created on top\n" "of the framework. For more information about\n" "GNUstep, please visit: www.gnustep.org" msgstr "" "Window Maker è parte del progetto GNUStep.\n" "Il progetto GNUStep intende creare una\n" "implementazione libera delle specifiche\n" "OpenStep(tm) che costituiscono un framework\n" "ad oggetti per creare applicazioni grafiche\n" "avanzate multi-piattaforma. Inoltre, verranno\n" "creati un ambiente di sviluppo ed un ambiente\n" "desktop al di sopra del framework. Per maggiori\n" "informazioni, visitate: www.gnustep.org" #: ../src/dialog.c:1987 msgid "About GNUstep" msgstr "Informazioni su GNUStep" #: ../src/dock.c:193 #, c-format msgid "Type the name for workspace %i:" msgstr "Scrivere il nome dell'area di lavoro %i:" #: ../src/dock.c:194 ../src/dock.c:1132 ../src/dock.c:1135 ../src/dock.c:3419 msgid "Rename Workspace" msgstr "Rinomina area di lavoro" #: ../src/dock.c:509 ../src/dock.c:517 msgid "Warning" msgstr "Attenzione" #: ../src/dock.c:510 msgid "" "Some icons cannot be made omnipresent. Please make sure that no other icon " "is docked in the same positions on the other workspaces and the Clip is not " "full in some workspace." msgstr "Alcune icone non possono essere rese onnipresenti. Assicurarsi che non ci siano altre icone nella stessa posizione in altre aree di lavoro e che la clip non sia piena in qualche area di lavoro." #: ../src/dock.c:518 msgid "" "Icon cannot be made omnipresent. Please make sure that no other icon is " "docked in the same position on the other workspaces and the Clip is not full " "in some workspace." msgstr "L'icona non può essere resa onnipresente. Assicurarsi che non ci siano altre icone nella stessa posizione in altre aree di lavoro e che la clip non sia piena in qualche area di lavoro." #: ../src/dock.c:545 msgid "Workspace Clip" msgstr "Clip dell'area di lavoro" #: ../src/dock.c:546 msgid "All selected icons will be removed!" msgstr "Tutte le icone selezionate saranno eliminate" #: ../src/dock.c:598 ../src/dock.c:1147 ../src/dock.c:1149 ../src/dock.c:3455 msgid "Keep Icon" msgstr "Trattieni l'icona" #: ../src/dock.c:599 ../src/dock.c:2139 ../src/dock.c:2276 msgid "Type the command used to launch the application" msgstr "Scrivi il comando da usare per avviare l'applicazione" #: ../src/dock.c:954 #, c-format msgid "could not launch application %s\n" msgstr "impossibile avviare l'applicazione %s\n" #: ../src/dock.c:1010 msgid "could not create workspace submenu for Clip menu" msgstr "impossibile creare il sottomenù aree di lavoro per il menù della clip" #: ../src/dock.c:1069 msgid "could not create options submenu for Clip menu" msgstr "impossibile creare il sottomenù Opzioni per il menù della clip" #: ../src/dock.c:1073 ../src/dock.c:1121 msgid "Keep on Top" msgstr "In primo piano" #: ../src/dock.c:1079 msgid "Collapsed" msgstr "Collassata" #: ../src/dock.c:1085 msgid "Autocollapse" msgstr "Collassa automatico" #: ../src/dock.c:1091 msgid "Autoraise" msgstr "Alza automaticamente" #: ../src/dock.c:1097 msgid "Autoattract Icons" msgstr "Attrai le icone automatico" #: ../src/dock.c:1127 msgid "Clip Options" msgstr "Opzioni della clip" #: ../src/dock.c:1137 msgid "Selected" msgstr "Selezionata" #: ../src/dock.c:1142 ../src/dock.c:1145 ../src/dock.c:3446 msgid "Select All Icons" msgstr "Seleziona tutte" #: ../src/dock.c:1151 ../src/dock.c:1153 ../src/dock.c:3463 msgid "Move Icon To" msgstr "Sposta l'icona in" #: ../src/dock.c:1158 ../src/dock.c:1161 ../src/dock.c:3474 msgid "Remove Icon" msgstr "Elimina l'icona" #: ../src/dock.c:1163 msgid "Attract Icons" msgstr "Attrai le icone" #: ../src/dock.c:1166 msgid "Launch" msgstr "Avvia" #: ../src/dock.c:1174 msgid "Settings..." msgstr "Proprietà..." #: ../src/dock.c:1538 ../src/dock.c:1645 #, c-format msgid "bad value in docked icon state info %s" msgstr "valore errato nelle informazioni di stato dell'icona nel dock %s" #: ../src/dock.c:1653 #, c-format msgid "bad value in docked icon position %i,%i" msgstr "valore errato nella posizione dell'icona nel dock %i,%i" #: ../src/dock.c:1673 #, c-format msgid "bad value in dock state info:%s" msgstr "valore errato nelle informazioni di stato del dock: %s" # FIXME #: ../src/dock.c:1923 msgid "there are too many icons stored in dock. Ignoring what doesn't fit" msgstr "ci sono troppe icone nel dock. Ignorate quelle che non ci entrano" #. icon->forced_dock = 1; #: ../src/dock.c:2138 ../src/dock.c:2275 msgid "Dock Icon" msgstr "Icona del dock" #: ../src/dock.c:3333 #, c-format msgid "Could not execute command \"%s\"" msgstr "Impossibile eseguire il comando \"%s\"" #: ../src/dock.c:3425 msgid "Toggle Omnipresent" msgstr "Inverti Onnipresente" #: ../src/dock.c:3430 ../src/winmenu.c:414 ../src/winspector.c:1383 msgid "Omnipresent" msgstr "Onnipresente" #: ../src/dock.c:3444 msgid "Unselect All Icons" msgstr "Deseleziona tutte" #: ../src/dock.c:3453 msgid "Keep Icons" msgstr "Trattieni le icone" #: ../src/dock.c:3461 msgid "Move Icons To" msgstr "Sposta le icone in" #: ../src/dock.c:3472 msgid "Remove Icons" msgstr "Elimina selezionate" #: ../src/dock.c:3503 msgid "Bring Here" msgstr "Porta qui" #: ../src/dockedapp.c:150 #, c-format msgid "could not find icon %s, used in a docked application" msgstr "impossibile trovare l'icona %s, usata in una applicazione nel dock" #: ../src/dockedapp.c:230 #, c-format msgid "Could not open specified icon file: %s" msgstr "Impossibile aprire il file dell'icona: %s" #: ../src/dockedapp.c:232 msgid "Ignore" msgstr "Ignora" #: ../src/dockedapp.c:334 msgid "Start when Window Maker is started" msgstr "Esecuzione automatica all'avvio" #: ../src/dockedapp.c:341 msgid "Lock (prevent accidental removal)" msgstr "Blocca (evita l'eliminazione accidentale)" #: ../src/dockedapp.c:345 msgid "Application path and arguments" msgstr "Percorso dell'applicazione e argomenti" #: ../src/dockedapp.c:358 msgid "Command for middle-click launch" msgstr "" #: ../src/dockedapp.c:372 #, c-format msgid "%s will be replaced with current selection" msgstr "%s sarà sostituito dalla selezione corrente" #: ../src/dockedapp.c:377 msgid "Command for files dropped with DND" msgstr "Comando per i file ricevuti tramite DnD" #: ../src/dockedapp.c:391 #, c-format msgid "%d will be replaced with the file name" msgstr "%d sarà sostituito col nome del file" #: ../src/dockedapp.c:395 msgid "DND support was not compiled in" msgstr "Il supporto DnD non è stato compilato" #: ../src/dockedapp.c:400 msgid "Icon Image" msgstr "Icona" #: ../src/dockedapp.c:414 ../src/winspector.c:1521 msgid "Browse..." msgstr "Sfoglia..." #: ../src/dockedapp.c:475 msgid "Docked Application Settings" msgstr "Impostazioni dell'applicazione nel dock" #: ../src/framewin.c:647 ../src/framewin.c:742 ../src/menu.c:463 #: ../src/texture.c:594 #, c-format msgid "could not render texture: %s" msgstr "impossibile generare la trama: %s" #: ../src/framewin.c:670 ../src/framewin.c:681 ../src/framewin.c:697 #: ../src/framewin.c:708 ../src/framewin.c:715 ../src/framewin.c:722 #: ../src/icon.c:360 ../src/menu.c:492 #, c-format msgid "error rendering image:%s" msgstr "errore nella generazione dell'immagine: %s" #: ../src/framewin.c:775 #, c-format msgid "error rendering image: %s" msgstr "errore nella generazione dell'immagine: %s" #: ../src/icon.c:239 ../src/wdefaults.c:443 #, c-format msgid "error loading image file \"%s\": %s" msgstr "errore nel caricamento del file \"%s\": %s" #: ../src/icon.c:503 ../src/icon.c:512 #, c-format msgid "could not create directory %s" msgstr "impossibile creare la directory %s" #: ../src/icon.c:782 #, c-format msgid "could not find default icon \"%s\"" msgstr "impossibile trovare l'icona predefinita \"%s\"" #: ../src/icon.c:788 #, c-format msgid "could not load default icon \"%s\":%s" msgstr "impossibile caricare l'icona predefinita \"%s\":%s" #: ../src/main.c:220 msgid "failed to restart Window Maker." msgstr "riavvio di Window Maker non riuscito." #: ../src/main.c:223 #, c-format msgid "could not exec %s" msgstr "impossibile eseguire %s" #: ../src/main.c:269 msgid "Could not execute command: " msgstr "Impossibile eseguire il comando: " #: ../src/main.c:426 #, c-format msgid "%s aborted.\n" msgstr "%s interrotto.\n" #: ../src/main.c:437 #, c-format msgid "Usage: %s [options]\n" msgstr "Uso: %s [opzioni]\n" #: ../src/main.c:438 msgid "The Window Maker window manager for the X window system" msgstr "Il gestore di finestre Window Maker per il sistema X Window" #: ../src/main.c:440 msgid " -display host:dpy\tdisplay to use" msgstr " -display host:disp\tdisplay da usare" #: ../src/main.c:442 msgid " --no-cpp \t\tdisable preprocessing of configuration files" msgstr " --no-cpp \t\tdisabilita la preanalisi dei file di configurazione" #: ../src/main.c:444 msgid " --no-dock\t\tdo not open the application Dock" msgstr " --no-dock\t\tnon avvia il dock per le applicazioni" #: ../src/main.c:445 msgid " --no-clip\t\tdo not open the workspace Clip" msgstr " --no-clip\t\tnon avvia la clip delle aree di lavoro" #: ../src/main.c:446 msgid " --no-autolaunch\tdo not autolaunch applications" msgstr " --no-autolaunch\tnon avvia automaticamente le applicazioni" #: ../src/main.c:447 msgid " --dont-restore\t\tdo not restore saved session" msgstr " --dont-restore\t\tnon ripristina la sessione salvata" #: ../src/main.c:449 msgid " --locale locale\tlocale to use" msgstr " --locale locale\tlocalizzazione da usare" #: ../src/main.c:451 msgid "" " --create-stdcmap\tcreate the standard colormap hint in PseudoColor visuals" msgstr "" " --create-stdcmap\tcrea l'hint standard della colormap nelle visual\n" " PseudoColor" #: ../src/main.c:452 msgid " --visual-id visualid\tvisual id of visual to use" msgstr " --visual-id visualid\tID della visuale da usare" #: ../src/main.c:453 msgid " --static\t\tdo not update or save configurations" msgstr " --static\t\tnon aggiorna e non salva la configurazione" #: ../src/main.c:454 msgid " --no-polling\t\tdo not periodically check for configuration updates" msgstr "" " --no-polling\t\tnon controlla periodicamente le modifiche alla\n" " configurazione" #: ../src/main.c:456 msgid " --synchronous\t\tturn on synchronous display mode" msgstr " --synchronous\t\tattiva la modalità sincrona del display" #: ../src/main.c:458 msgid " --version\t\tprint version and exit" msgstr " --version\t\tstampa la versione ed esce" #: ../src/main.c:459 msgid " --help\t\t\tshow this message" msgstr " --help\t\t\tmostra questo messaggio" #: ../src/main.c:473 #, c-format msgid "" "could not find user GNUstep directory (%s).\n" "Make sure you have installed Window Maker correctly and run wmaker.inst" msgstr "" "impossibile trovare la directory GNUstep dell'utente (%s).\n" "Assicurarsi di aver installato correttamente Window Maker e di aver eseguito\n" "wmaker.inst" #: ../src/main.c:478 #, c-format msgid "could not find user GNUstep directory (%s)." msgstr "impossibile trovare la directory GNUstep dell'utente (%s)" #: ../src/main.c:481 msgid "" "There was an error while creating GNUstep directory, please make sure you " "have installed Window Maker correctly and run wmaker.inst" msgstr "" "Si è verificato un errore durante la creazione della directory GNUsterp, \n" "assicurarsi di aver installato correttamente Window Maker e di aver eseguito\n" "wmaker.inst" #: ../src/main.c:484 #, c-format msgid "%s directory created with default configuration." msgstr "directory %s creata con la configurazione predefinita." # FIXME UPSTREAM #: ../src/main.c:506 ../src/main.c:511 #, c-format msgid "%s:could not execute initialization script" msgstr "%s: impossibile eseguire lo script di inizializzazione" # FIXME UPSTREAM #: ../src/main.c:533 ../src/main.c:538 #, c-format msgid "%s:could not execute exit script" msgstr "%s: impossibile eseguire lo script di uscita" #: ../src/main.c:622 ../src/main.c:722 ../src/main.c:730 ../src/main.c:738 #: ../src/main.c:758 #, c-format msgid "too few arguments for %s" msgstr "argomenti mancanti per %s" #: ../src/main.c:742 #, c-format msgid "bad value for visualid: \"%s\"" msgstr "valore errato per l'ID di visuale: \"%s\"" #: ../src/main.c:766 #, c-format msgid "%s: invalid argument '%s'\n" msgstr "%s: argomento non valido '%s'\n" #: ../src/main.c:767 #, c-format msgid "Try '%s --help' for more information\n" msgstr "Provare '%s --help' per maggiori informazioni\n" #: ../src/main.c:802 msgid "X server does not support locale" msgstr "Il server X non supporta la localizzazione" #: ../src/main.c:806 msgid "cannot set locale modifiers" msgstr "impossibile impostare i modificatori della localizzazione" #: ../src/main.c:822 #, c-format msgid "could not open display \"%s\"" msgstr "impossibile aprire il display \"%s\"" #: ../src/menu.c:1273 msgid "could not grab keyboard" msgstr "impossibile catturare la tastiera" # FIXME UPSTREAM REPORTED #: ../src/menu.c:2612 #, c-format msgid "bad value in menus state info:%s" msgstr "valore errato nelle informazioni di stato dei menu: %s" #: ../src/misc.c:65 #, c-format msgid "could not define value for %s for cpp" msgstr "impossibile definire un valore per %s per cpp" #: ../src/misc.c:95 #, c-format msgid "could not get password entry for UID %i" msgstr "impossibile trovare la password per l'UID %i" #: ../src/misc.c:120 #, c-format msgid "your machine is misconfigured. HOSTNAME is set to %s" msgstr "la macchina è mal configurata. HOSTNAME è impostato a %s" #: ../src/misc.c:126 #, c-format msgid "your machine is misconfigured. HOST is set to %s" msgstr "la macchina è mal configurata. HOST è impostato a %s" #: ../src/misc.c:621 msgid "Program Arguments" msgstr "Argomenti del programma" #: ../src/misc.c:622 msgid "Enter command arguments:" msgstr "Scrivere gli argomenti del comando:" #: ../src/misc.c:736 ../src/misc.c:874 #, c-format msgid "out of memory during expansion of \"%s\"" msgstr "memoria esaurita durante l'espansione di \"%s\"" #: ../src/misc.c:790 msgid "out of memory during expansion of \"%w\"" msgstr "memoria esaurita durante l'espansione di \"%w\"" #: ../src/misc.c:808 msgid "out of memory during expansion of \"%W\"" msgstr "memoria esaurita durante l'espansione di \"%W\"" #: ../src/misc.c:824 #, c-format msgid "out of memory during expansion of \"%a\"" msgstr "memoria esaurita durante l'espansione di \"%a\"" #: ../src/misc.c:853 #, c-format msgid "out of memory during expansion of \"%d\"" msgstr "memoria esaurita durante l'espansione di \"%d\"" #: ../src/misc.c:867 msgid "selection not available" msgstr "selezione non disponibile" #: ../src/misc.c:911 ../src/misc.c:917 #, c-format msgid "bad window name value in %s state info" msgstr "nome della finestra errato nelle informazioni di stato di %s" #: ../src/misc.c:1156 msgid "could not send message to background image helper" msgstr "impossibile inviare il messaggio al gestore dello sfondo" #: ../src/pixmap.c:235 #, c-format msgid "could not load mask bitmap file \"%s\". Won't use mask" msgstr "impossibile caricare la maschera dal file bitmap \"%s\". Non verrà usata" #: ../src/resources.c:44 #, c-format msgid "could not parse color \"%s\"" msgstr "impossibile analizzare il colore \"%s\"" #: ../src/resources.c:48 #, c-format msgid "could not allocate color \"%s\"" msgstr "impossibile allocare il colore \"%s\"" #: ../src/rootmenu.c:196 ../src/rootmenu.c:198 msgid "Exit" msgstr "Uscita" #: ../src/rootmenu.c:197 msgid "Exit window manager?" msgstr "Uscire da Window Maker?" #: ../src/rootmenu.c:245 msgid "Close X session" msgstr "Chiudi la sessione X" #: ../src/rootmenu.c:246 msgid "" "Close Window System session?\n" "Kill might close applications with unsaved data." msgstr "" "Chiudere la sessione del Window System?\n" "Il comando potrebbe chiudere applicazioni con dati non salvati." #. #. entry = wMenuAddCallback(menu, _("Select Shortcut"), NULL, NULL); #. wMenuEntrySetCascade(menu, entry, makeMakeShortcutMenu(scr)); #. #: ../src/rootmenu.c:248 ../src/winmenu.c:501 msgid "Close" msgstr "Chiudi" #: ../src/rootmenu.c:261 msgid "Kill X session" msgstr "Termina la sessione X" #: ../src/rootmenu.c:262 msgid "" "Kill Window System session?\n" "(all applications will be closed)" msgstr "" "Terminare la sessione del Window System?\n" "(Tutte le applicazioni saranno chiuse)" #: ../src/rootmenu.c:544 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\" for entry %s" msgstr "%s: definizione di scorciatoia non valida \"%s\" per l'elemento %s" #: ../src/rootmenu.c:552 #, c-format msgid "%s:invalid key in shortcut \"%s\" for entry %s" msgstr "%s: tasto non valido nella scorciatoia \"%s\" per l'elemento %s" #: ../src/rootmenu.c:605 #, c-format msgid "%s: unmatched '\"' in menu file" msgstr "%s: virgolette \" non corrisposte nel file di menù" #: ../src/rootmenu.c:655 #, c-format msgid "%s: missing command" msgstr "%s: comando mancante" #: ../src/rootmenu.c:687 #, c-format msgid "invalid OPEN_MENU specification: %s" msgstr "specificazione OPEN_MENU non valida: %s" #: ../src/rootmenu.c:738 #, c-format msgid "%s:could not stat menu" msgstr "%s: impossibile aprire il menù" #: ../src/rootmenu.c:746 #, c-format msgid "%s:could not stat menu:%s" msgstr "%s: impossibile aprire il menù: %s" #: ../src/rootmenu.c:764 #, c-format msgid "too many parameters in OPEN_MENU: %s" msgstr "troppi parametri in OPEN_MENU: %s" #: ../src/rootmenu.c:808 msgid "" "There are more than one WORKSPACE_MENU commands in the applications menu. " "Only one is allowed." msgstr "C'è più di un comando WORKSPACE_MENU nel menù delle applicazioni. Ne è permesso uno solo." #: ../src/rootmenu.c:842 msgid "" "There are more than one WINDOWS_MENU commands in the applications menu. Only " "one is allowed." msgstr "C'è più di un comando WINDOWS_MENU nel menù delle applicazioni. Ne è permesso uno solo." #: ../src/rootmenu.c:847 msgid "Window List" msgstr "Elenco delle finestre" #: ../src/rootmenu.c:876 ../src/rootmenu.c:894 ../src/rootmenu.c:904 #, c-format msgid "%s:missing parameter for menu command \"%s\"" msgstr "%s: manca un parametro per il comando di menù \"%s\"" #: ../src/rootmenu.c:972 #, c-format msgid "%s:unknown command \"%s\" in menu config." msgstr "%s: comando sconosciuto \"%s\" nella definizione di menù." # FIXME UPSTREAM #: ../src/rootmenu.c:980 #, c-format msgid "%s:can't add shortcut for entry \"%s\"" msgstr "%s: impossibile assegnare una scorciatoia all'elemento \"%s\"" # FIXME UPSTREAM #: ../src/rootmenu.c:1117 #, c-format msgid "%s:maximal line size exceeded in menu config: %s" msgstr "%s: linea troppo lunga nella definizione di menù: %s" # FIXME UPSTREAM #: ../src/rootmenu.c:1139 ../src/rootmenu.c:1232 ../src/rootmenu.c:1336 #, c-format msgid "%s:missing command in menu config: %s" msgstr "%s: comando mancante nella definizione di menù: %s" # FIXME UPSTREAM #: ../src/rootmenu.c:1169 #, c-format msgid "%s:syntax error in menu file:END declaration missing" msgstr "%s: errore di sintassi nel file di menù: manca l'istruzione END" #: ../src/rootmenu.c:1198 ../src/rootmenu.c:1300 msgid "could not make arguments for menu file preprocessor" msgstr "impossibile generare gli argomenti per il preprocessore del file di menù" # FIXME UPSTREAM #: ../src/rootmenu.c:1205 ../src/rootmenu.c:1308 #, c-format msgid "%s:could not open/preprocess menu file" msgstr "%s: impossibile aprire/preelaborare il file di menù" #: ../src/rootmenu.c:1217 ../src/rootmenu.c:1321 #, c-format msgid "could not open menu file \"%s\": %s" msgstr "impossibile aprire il file di menù \"%s\": %s" # FIXME UPSTREAM< #: ../src/rootmenu.c:1244 #, c-format msgid "%s:invalid menu file. MENU command is missing" msgstr "%s: file di menù non valido: manca il comando MENU" #: ../src/rootmenu.c:1253 msgid "error reading preprocessed menu data" msgstr "errore nella lettura dei dati di menù preelaborati" # FIXME UPSTREAM #: ../src/rootmenu.c:1348 #, c-format msgid "%s:no title given for the root menu" msgstr "%s: nessun titolo fornito per il menù principale" #: ../src/rootmenu.c:1439 ../src/rootmenu.c:1512 ../src/rootmenu.c:1553 #, c-format msgid "out of memory while constructing directory menu %s" msgstr "memoria esaurita costruendo il menù %s" # FIXME UPSTREAM #: ../src/rootmenu.c:1449 #, c-format msgid "%s:could not stat file \"%s\" in menu directory" msgstr "%s: impossibile identificare il file \"%s\" nella directory del menù" #: ../src/rootmenu.c:1607 msgid "Commands" msgstr "Comandi" #: ../src/rootmenu.c:1610 msgid "Restart" msgstr "Riavvia" #: ../src/rootmenu.c:1611 msgid "Exit..." msgstr "Esci..." #: ../src/rootmenu.c:1656 #, c-format msgid "could not find menu file \"%s\" referenced in WMRootMenu" msgstr "impossibile trovare il file di menù \"%s\" indicato in WMRootMenu" #: ../src/rootmenu.c:1663 #, c-format msgid "could not access menu \"%s\" referenced in WMRootMenu" msgstr "impossibile accedere al file di menù \"%s\" indicato in WMRootMenu" #: ../src/rootmenu.c:1674 #, c-format msgid "" "using default menu file \"%s\" as the menu referenced in WMRootMenu could " "not be found " msgstr "viene usato il file di menù predefinito \"%s\" perché non si trova il menù indicato in WMRootMenu " # FIXME UPSTREAM #: ../src/rootmenu.c:1697 ../src/rootmenu.c:1773 #, c-format msgid "%s:format error in root menu configuration \"%s\"" msgstr "%s: errore di formato nella configurazione del menù principale \"%s\"" #: ../src/rootmenu.c:1855 msgid "" "The applications menu could not be loaded. Look at the console output for a " "detailed description of the errors." msgstr "" "Il menù delle applicazioni non può essere caricato. Consultare l'output " "nella console per una descrizione dettagliata del problema." #: ../src/screen.c:709 #, c-format msgid "could not initialize graphics library context: %s" msgstr "impossibile inizializzare il contesto della libreria grafica: %s" #: ../src/screen.c:737 msgid "could not initialize WINGs widget set" msgstr "impossibile inizializzare i widget WINGs" #: ../src/screen.c:1144 #, c-format msgid "could not save session state in %s" msgstr "impossibile salvare lo stato della sessione in %s" #: ../src/session.c:183 ../src/wdefaults.c:589 ../src/winspector.c:459 #, c-format msgid "can't convert \"%s\" to boolean" msgstr "impossibile convertire \"%s\" in booleano" #: ../src/session.c:1018 msgid "out of memory while saving session state" msgstr "memoria esaurita salvando lo stato della sessione" #: ../src/session.c:1101 msgid "end of memory while saving session state" msgstr "memoria esaurita salvando lo stato della sessione" #. 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:1239 msgid "connection to the session manager was lost" msgstr "connessione al gestore di sessione perduta." #: ../src/stacking.c:81 msgid "could not get window list!!" msgstr "impossibile trovare l'elenco delle finestre" #: ../src/startup.c:195 #, c-format msgid "internal X error: %s\n" msgstr "errore interno di X: %s\n" #: ../src/startup.c:772 #, c-format msgid "icon size is configured to %i, but it's too small. Using 16, instead\n" msgstr "la dimensione delle icone è impostata a %i, ma è troppo piccola. Viene usato 16.\n" #: ../src/startup.c:801 msgid "XKB is not supported. KbdModeLock is automatically disabled." msgstr "XKB non è supportato. KbdModeLock è disabilitato automaticamente." #: ../src/startup.c:820 msgid "it seems that there is already a window manager running" msgstr "sembra che ci sia già un altro gestore di finestre in esecuzione." #: ../src/startup.c:826 #, c-format msgid "could not manage screen %i" msgstr "impossibile gestire lo schermo %i" #: ../src/startup.c:885 msgid "could not manage any screen" msgstr "impossibile gestire alcuno schermo" #: ../src/switchmenu.c:145 msgid "Windows" msgstr "Finestre" #: ../src/texture.c:329 ../src/texture.c:371 #, c-format msgid "image file \"%s\" used as texture could not be found." msgstr "impossibile trovare il file di immagine \"%s\" usato come trama." #: ../src/texture.c:335 ../src/texture.c:377 #, c-format msgid "could not load texture pixmap \"%s\":%s" msgstr "impossibile caricare il pixmap della trama \"%s\": %s" #: ../src/texture.c:437 #, c-format msgid "library \"%s\" cound not be opened." msgstr "impossibile aprire la libreria \"%s\"." #: ../src/texture.c:446 #, c-format msgid "function \"%s\" not found in library \"%s\"" msgstr "funzione \"%s\" non trovata nella libreria \"%s\"" #: ../src/texture.c:453 msgid "function textures not supported on this system, sorry." msgstr "le funzioni trama non sono supportate da questo sistema." #: ../src/texture.c:598 msgid "could not allocate image buffer" msgstr "impossibile allocare il buffer per l'immagine" #: ../src/wdefaults.c:437 #, c-format msgid "could not find icon file \"%s\"" msgstr "impossibile trovare il file dell'icona \"%s\"" #: ../src/window.c:3052 ../src/window.c:3193 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 "" "Sembra che BlocNum, BlocScorr o altri tasti simili siano attivati.\n" "Disattivali o alcune funzioni del mouse e scorciatoie non funzioneranno." #: ../src/winmenu.c:125 msgid "" "This will kill the application.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" "Questo terminerà l'applicazione.\n" "Tutte le modifiche non salvate saranno perse.\n" "Continuare?" #: ../src/winmenu.c:268 ../src/winmenu.c:277 msgid "Set Shortcut" msgstr "Imposta scorciatoia" #: ../src/winmenu.c:355 ../src/winmenu.c:400 msgid "could not create submenu for window menu" msgstr "impossibile creare il sottomenu del menù della finestra" #: ../src/winmenu.c:404 msgid "Keep on top" msgstr "In primo piano" #: ../src/winmenu.c:409 msgid "Keep at bottom" msgstr "Tieni in fondo" #. #. * 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:437 ../src/winmenu.c:571 msgid "Maximize" msgstr "Ingrandisci" #: ../src/winmenu.c:445 ../src/winmenu.c:557 msgid "Miniaturize" msgstr "Riduci a icona" #: ../src/winmenu.c:453 ../src/winmenu.c:588 msgid "Shade" msgstr "Arrotola" #: ../src/winmenu.c:469 msgid "Resize/Move" msgstr "Sposta/Ridimensiona" #: ../src/winmenu.c:477 msgid "Select" msgstr "Seleziona" #: ../src/winmenu.c:485 msgid "Move To" msgstr "Sposta in" #: ../src/winmenu.c:490 msgid "Attributes..." msgstr "Proprietà..." #: ../src/winmenu.c:492 msgid "Options" msgstr "Opzioni" #: ../src/winmenu.c:552 msgid "Deminiaturize" msgstr "Ripristina" #: ../src/winmenu.c:566 msgid "Unmaximize" msgstr "Ripristina" #: ../src/winmenu.c:583 msgid "Unshade" msgstr "Srotola" #: ../src/winspector.c:392 #, c-format msgid "Could not find icon \"%s\" specified for this window" msgstr "Impossibile trovare l'icona \"%s\" specificata per questa finestra" #: ../src/winspector.c:409 #, c-format msgid "Could not open specified icon \"%s\":%s" msgstr "Impossibile aprire l'icona specificata \"%s\":%s" #: ../src/winspector.c:1129 #, c-format msgid "Inspecting %s.%s" msgstr "Ispezione di %s.%s" #: ../src/winspector.c:1155 msgid "Click in the window you wish to inspect." msgstr "Fare clic nella finestra da ispezionare." #: ../src/winspector.c:1194 msgid "" "The configuration will apply to all\n" "windows that have their WM_CLASS\n" "property set to the above selected\n" "name, when saved." msgstr "" "La configurazione sarà applicata\n" "a tutte le finestre che hanno la\n" "proprietà WM_CLASS impostata\n" "al nome selezionato." #: ../src/winspector.c:1223 msgid "Save" msgstr "Salva" #: ../src/winspector.c:1231 msgid "Apply" msgstr "Applica" #: ../src/winspector.c:1237 msgid "Reload" msgstr "Ricarica" #: ../src/winspector.c:1246 ../src/winspector.c:1256 msgid "Window Specification" msgstr "Specifica classe finestra" #: ../src/winspector.c:1247 msgid "Window Attributes" msgstr "Attributi della finestra" #: ../src/winspector.c:1248 msgid "Advanced Options" msgstr "Opzioni avanzate" #: ../src/winspector.c:1249 msgid "Icon and Initial Workspace" msgstr "Icona e area di lavoro iniziale" #: ../src/winspector.c:1250 msgid "Application Specific" msgstr "Specifiche dell'applicazione" #: ../src/winspector.c:1264 msgid "Defaults for all windows" msgstr "Predefinito per tutte le finestre" #: ../src/winspector.c:1318 msgid "Select window" msgstr "Seleziona finestra" #: ../src/winspector.c:1332 msgid "Attributes" msgstr "Attributi" #: ../src/winspector.c:1343 msgid "Disable titlebar" msgstr "Elimina la barra del titolo" #: ../src/winspector.c:1345 msgid "" "Remove the titlebar of this window.\n" "To access the window commands menu of a window\n" "without it's titlebar, press Control+Esc (or the\n" "equivalent shortcut, if you changed the default\n" "settings)." msgstr "" "Elimina la barra del titolo di questa finestra.\n" "Per accedere al menù di una finestra senza\n" "barra del titolo, usare Control+Esc (oppure la\n" "scorciatoia impostata, se è stato cambiato il\n" "valore predefinito)." #: ../src/winspector.c:1352 msgid "Disable resizebar" msgstr "Elimina barra di ridimensionamento" #: ../src/winspector.c:1354 msgid "Remove the resizebar of this window." msgstr "Elimina la barra di ridimensionamento dalla finestra." #: ../src/winspector.c:1357 msgid "Disable close button" msgstr "Elimina il pulsante Chiudi" #: ../src/winspector.c:1359 msgid "Remove the `close window' button of this window." msgstr "Elimina il pulsante 'Chiudi finestra' da questa finestra." #: ../src/winspector.c:1362 msgid "Disable miniaturize button" msgstr "Elimina il pulsante Riduci a icona" #: ../src/winspector.c:1364 msgid "Remove the `miniaturize window' button of the window." msgstr "Elimina il pulsante 'Riduci a icona' da questa finestra." #: ../src/winspector.c:1367 msgid "Disable border" msgstr "Elimina il bordo" #: ../src/winspector.c:1369 msgid "Remove the 1 pixel black border around the window." msgstr "Elimina il bordo nero di 1 pixel attorno alla finestra." #: ../src/winspector.c:1372 msgid "Keep on top (floating)" msgstr "Mantieni in primo piano" #: ../src/winspector.c:1374 msgid "" "Keep the window over other windows, not allowing\n" "them to cover it." msgstr "" "Mantiene la finestra sopra tutte le altre,\n" "impedendo che esse la coprano." #: ../src/winspector.c:1378 msgid "Keep at bottom (sunken)" msgstr "Mantieni in fondo" #: ../src/winspector.c:1380 msgid "Keep the window under all other windows." msgstr "Mantiene la finestra dietro a tutte le altre." #: ../src/winspector.c:1385 msgid "Make window present in all workspaces." msgstr "La finestra è presente in tutte le aree di lavoro." #: ../src/winspector.c:1388 msgid "Start miniaturized" msgstr "Avvia ridotta ad icona" #: ../src/winspector.c:1390 msgid "" "Make the window be automatically miniaturized when it's\n" "first shown." msgstr "" "La finestra viene automaticamente ridotta ad icona\n" "quando appare la prima volta." #: ../src/winspector.c:1394 msgid "Start maximized" msgstr "Avvia massimizzata" #: ../src/winspector.c:1396 msgid "" "Make the window be automatically maximized when it's\n" "first shown." msgstr "" "La finestra viene automaticamente massimizzata\n" "quando appare la prima volta." #: ../src/winspector.c:1400 msgid "Full screen maximization" msgstr "Massimizza a tutto schermo" #: ../src/winspector.c:1402 msgid "" "Make the window use the whole screen space when it's\n" "maximized. The titlebar and resizebar will be moved\n" "to outside the screen." msgstr "" "Fà in modo che la finestra utilizzi tutto lo schermo\n" "quando viene ingrandita. La barra del titolo e quella\n" "di ridimensionamento vengono spostate fuori dallo\n" "schermo." #: ../src/winspector.c:1419 msgid "Advanced" msgstr "Avanzate" #: ../src/winspector.c:1436 msgid "Do not bind keyboard shortcuts" msgstr "Blocca gli shortcut di tastiera" #: ../src/winspector.c:1438 msgid "" "Do not bind keyboard shortcuts from Window Maker\n" "when this window is focused. This will allow the\n" "window to receive all key combinations regardless\n" "of your shortcut configuration." msgstr "" "Window Maker non risponde alle scorciatoie di tastiera quando\n" "questa finestra è attiva. Ciò fà sì che l'applicazione riceva\n" "tutti i tasti premuti, indipendentemente dalla configurazione\n" "delle scorciatoie." #: ../src/winspector.c:1444 msgid "Do not bind mouse clicks" msgstr "Blocca i clic del mouse" #: ../src/winspector.c:1446 msgid "" "Do not bind mouse actions, such as `Alt'+drag\n" "in the window (when Alt is the modifier you have\n" "configured)." msgstr "" "Non risponde alle azioni del mouse, come 'Alt'+trascina\n" "nella finestra (se Alt è il modificatore configurato)." #: ../src/winspector.c:1451 msgid "Do not show in the window list" msgstr "Non mostrare nella lista finestre" #: ../src/winspector.c:1453 msgid "Do not list the window in the window list menu." msgstr "La finestra non viene mostrata nel menù delle finestre aperte." #: ../src/winspector.c:1456 msgid "Do not let it take focus" msgstr "Non permettere che riceva il focus" #: ../src/winspector.c:1458 msgid "" "Do not let the window take keyboard focus when you\n" "click on it." msgstr "" "Evita che la finestra riceva il focus di tastiera\n" "cliccandovi sopra." #: ../src/winspector.c:1462 msgid "Keep inside screen" msgstr "Mantieni nello scermo" #: ../src/winspector.c:1464 msgid "" "Do not allow the window to move itself completely\n" "outside the screen. For bug compatibility.\n" msgstr "" "Evita che la finestra vada completamente fuori dallo\n" "schermo. Per compatibilità con qualche bug.\n" #: ../src/winspector.c:1468 msgid "Ignore 'Hide Others'" msgstr "Ignora 'Nascondi gli altri'" #: ../src/winspector.c:1470 msgid "" "Do not hide the window when issuing the\n" "`HideOthers' command." msgstr "" "La finstra non viene nascosta quando si invoca\n" "il comando 'Nascondi gli altri'." #: ../src/winspector.c:1474 msgid "Ignore 'Save Session'" msgstr "Ignora 'Salva sessione'" #: ../src/winspector.c:1476 msgid "" "Do not save the associated application in the\n" "session's state, so that it won't be restarted\n" "together with other applications when Window Maker\n" "starts." msgstr "" "Non salva l'applicazione nello stato sessione,\n" "in modo che non venga avviata quando parte\n" "Window Maker." #: ../src/winspector.c:1482 msgid "Emulate application icon" msgstr "Emula l'icona dell'applicazione" #: ../src/winspector.c:1484 msgid "" "Make this window act as an application that provides\n" "enough information to Window Maker for a dockable\n" "application icon to be created." msgstr "" "Fà in modo che la finestra funzioni come un'applicazione\n" "che fornisce le informazioni necessarie a Window Maker\n" "per creare un'icona corretta." #: ../src/winspector.c:1490 msgid "Disable language button" msgstr "Disabilita il pulsante della lingua" #: ../src/winspector.c:1492 msgid "Remove the `toggle language' button of the window." msgstr "Elimina il pulsante 'Cambia lingua' da questa finestra." #: ../src/winspector.c:1509 msgid "Miniwindow Image" msgstr "Icona" #: ../src/winspector.c:1536 msgid "Icon filename:" msgstr "Nome file:" #: ../src/winspector.c:1549 msgid "Ignore client supplied icon" msgstr "Ignora l'icona dell'applicazione" #: ../src/winspector.c:1556 msgid "Initial Workspace" msgstr "Area di lavoro iniziale" #: ../src/winspector.c:1558 msgid "The workspace to place the window when it's first shown." msgstr "L'area di lavoro in cui la finestra appare la prima volta." #: ../src/winspector.c:1564 msgid "Nowhere in particular" msgstr "Nessuna in particolare" #: ../src/winspector.c:1582 msgid "Application Attributes" msgstr "Attributi dell'applicazione" #: ../src/winspector.c:1593 msgid "Start hidden" msgstr "Avvia nascosta" #: ../src/winspector.c:1595 msgid "Automatically hide application when it's started." msgstr "Nascondi automaticamente l'applicazione all'avvio." #: ../src/winspector.c:1598 msgid "No application icon" msgstr "Disabilita l'icona" #: ../src/winspector.c:1600 msgid "" "Disable the application icon for the application.\n" "Note that you won't be able to dock it anymore,\n" "and any icons that are already docked will stop\n" "working correctly." msgstr "" "Disabilita l'icona per l'applicazione. Nota che\n" "non potrà più essere trascinata sul dock, e le\n" "icone che già sono sul dock non funzioneranno\n" "correttamente." #: ../src/winspector.c:1606 msgid "Shared application icon" msgstr "Icona condivisa dell'applicazione" #: ../src/winspector.c:1608 msgid "" "Use a single shared application icon for all of\n" "the instances of this application.\n" msgstr "" "Una sola icona condivisa per tutte le istanze\n" "di questa applicazione.\n" #: ../src/workspace.c:103 ../src/workspace.c:104 ../src/workspace.c:1302 #, c-format msgid "Workspace %i" msgstr "Area %i" #: ../src/workspace.c:1352 msgid "Workspaces" msgstr "Aree di lavoro" #: ../src/workspace.c:1354 msgid "could not create Workspace menu" msgstr "impossibile creare il menù Aree di lavoro" #: ../src/workspace.c:1361 msgid "New" msgstr "Nuova" #: ../src/workspace.c:1362 msgid "Destroy Last" msgstr "Elimina l'ultima" WindowMaker-0.95.9/po/Makefile.in0000644000175000017500000004274513642360054013470 00000000000000# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = po ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ $(top_srcdir)/m4/ax_pthread.m4 \ $(top_srcdir)/m4/ld-version-script.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/windowmaker.m4 \ $(top_srcdir)/m4/wm_attributes.m4 \ $(top_srcdir)/m4/wm_cflags_check.m4 \ $(top_srcdir)/m4/wm_i18n.m4 \ $(top_srcdir)/m4/wm_imgfmt_check.m4 \ $(top_srcdir)/m4/wm_libexif.m4 $(top_srcdir)/m4/wm_libmath.m4 \ $(top_srcdir)/m4/wm_prog_cc_c11.m4 \ $(top_srcdir)/m4/wm_xext_check.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in README DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ GFXLIBS = @GFXLIBS@ GREP = @GREP@ HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLIBS = @INTLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBBSD = @LIBBSD@ LIBEXIF = @LIBEXIF@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXINERAMA = @LIBXINERAMA@ LIBXMU = @LIBXMU@ LIBXRANDR = @LIBXRANDR@ LINGUAS = @LINGUAS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAGICKFLAGS = @MAGICKFLAGS@ MAGICKLIBS = @MAGICKLIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MANLANGDIRS = @MANLANGDIRS@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOLIBS = @PANGOLIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILMOFILES = @UTILMOFILES@ VERSION = @VERSION@ WINGSMOFILES = @WINGSMOFILES@ WINGS_VERSION = @WINGS_VERSION@ WMAKERMOFILES = @WMAKERMOFILES@ WPREFSMOFILES = @WPREFSMOFILES@ WRASTER_VERSION = @WRASTER_VERSION@ WUTIL_VERSION = @WUTIL_VERSION@ XCFLAGS = @XCFLAGS@ XFTCONFIG = @XFTCONFIG@ XFTFLAGS = @XFTFLAGS@ XFTLIBS = @XFTLIBS@ XGETTEXT = @XGETTEXT@ XLFLAGS = @XLFLAGS@ XLIBS = @XLIBS@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBRARY_PATH = @X_LIBRARY_PATH@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ defsdatadir = @defsdatadir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ inc_search_path = @inc_search_path@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lcov_output_directory = @lcov_output_directory@ lib_search_path = @lib_search_path@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pixmapdir = @pixmapdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ wprefs_bindir = @wprefs_bindir@ wprefs_datadir = @wprefs_datadir@ DOMAIN = WindowMaker CATALOGS = @WMAKERMOFILES@ CLEANFILES = $(CATALOGS) $(DOMAIN).pot # Please keep this sorted in alphabetic order! EXTRA_DIST = be.po bg.po bs.po ca.po cs.po da.po de.po el.po es.po et.po \ fi.po fr.po fy.po gl.po hr.po hu.po hy.po it.po ja.po ko.po ms.po nl.po \ no.po pl.po pt.po ro.po ru.po sk.po sv.po tr.po uk.po zh_CN.po zh_TW.po POTFILES = \ $(top_srcdir)/src/actions.c \ $(top_srcdir)/src/appicon.c \ $(top_srcdir)/src/application.c \ $(top_srcdir)/src/appmenu.c \ $(top_srcdir)/src/balloon.c \ $(top_srcdir)/src/client.c \ $(top_srcdir)/src/colormap.c \ $(top_srcdir)/src/cycling.c \ $(top_srcdir)/src/defaults.c \ $(top_srcdir)/src/dialog.c \ $(top_srcdir)/src/dock.c \ $(top_srcdir)/src/dockedapp.c \ $(top_srcdir)/src/event.c \ $(top_srcdir)/src/framewin.c \ $(top_srcdir)/src/geomview.c \ $(top_srcdir)/src/icon.c \ $(top_srcdir)/src/main.c \ $(top_srcdir)/src/menu.c \ $(top_srcdir)/src/misc.c \ $(top_srcdir)/src/monitor.c \ $(top_srcdir)/src/motif.c \ $(top_srcdir)/src/moveres.c \ $(top_srcdir)/src/osdep_bsd.c \ $(top_srcdir)/src/osdep_darwin.c \ $(top_srcdir)/src/osdep_linux.c \ $(top_srcdir)/src/osdep_stub.c \ $(top_srcdir)/src/pixmap.c \ $(top_srcdir)/src/placement.c \ $(top_srcdir)/src/properties.c \ $(top_srcdir)/src/resources.c \ $(top_srcdir)/src/rootmenu.c \ $(top_srcdir)/src/screen.c \ $(top_srcdir)/src/session.c \ $(top_srcdir)/src/shutdown.c \ $(top_srcdir)/src/stacking.c \ $(top_srcdir)/src/startup.c \ $(top_srcdir)/src/superfluous.c \ $(top_srcdir)/src/switchpanel.c \ $(top_srcdir)/src/switchmenu.c \ $(top_srcdir)/src/texture.c \ $(top_srcdir)/src/usermenu.c \ $(top_srcdir)/src/wcore.c \ $(top_srcdir)/src/wdefaults.c \ $(top_srcdir)/src/window.c \ $(top_srcdir)/src/winmenu.c \ $(top_srcdir)/src/winspector.c \ $(top_srcdir)/src/wmspec.c \ $(top_srcdir)/src/workspace.c \ $(top_srcdir)/src/wsmap.c \ $(top_srcdir)/src/xdnd.c \ $(top_srcdir)/src/xinerama.c \ $(top_srcdir)/src/xmodifier.c \ $(top_srcdir)/src/xutil.c SUFFIXES = .po .mo # Create a 'silent rule' for our make check the same way automake does AM_V_CHKTRANS = $(am__v_CHKTRANS_$(V)) am__v_CHKTRANS_ = $(am__v_CHKTRANS_$(AM_DEFAULT_VERBOSITY)) am__v_CHKTRANS_0 = @echo " CHK translations" ; am__v_CHKTRANS_1 = all: all-am .SUFFIXES: .SUFFIXES: .po .mo $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu po/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu po/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) check-local check: check-am all-am: Makefile all-local installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-data-local install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-local .MAKE: check-am install-am install-strip .PHONY: all all-am all-local check check-am check-local clean \ clean-generic clean-libtool cscopelist-am ctags-am distclean \ distclean-generic distclean-libtool distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-data-local install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-local .PRECIOUS: Makefile .po.mo: $(AM_V_GEN)$(MSGFMT) -c -o $@ $< all-local: $(CATALOGS) .PHONY: update-lang @HAVE_XGETTEXT_TRUE@update-lang: $(DOMAIN).pot @HAVE_XGETTEXT_TRUE@ $(AM_V_GEN)$(top_srcdir)/script/generate-po-from-template.sh \ @HAVE_XGETTEXT_TRUE@ -n "$(PACKAGE_NAME)" -v "$(PACKAGE_VERSION)" -b "$(PACKAGE_BUGREPORT)" \ @HAVE_XGETTEXT_TRUE@ -t "$(DOMAIN).pot" "$(srcdir)/$(PO).po" @HAVE_XGETTEXT_TRUE@$(DOMAIN).pot: $(POTFILES) @HAVE_XGETTEXT_TRUE@ $(AM_V_GEN)$(XGETTEXT) --default-domain=$(DOMAIN) \ @HAVE_XGETTEXT_TRUE@ --add-comments --keyword=_ --keyword=N_ $(POTFILES) @HAVE_XGETTEXT_TRUE@ @if cmp -s $(DOMAIN).po $(DOMAIN).pot; then \ @HAVE_XGETTEXT_TRUE@ rm -f $(DOMAIN).po; \ @HAVE_XGETTEXT_TRUE@ else \ @HAVE_XGETTEXT_TRUE@ mv -f $(DOMAIN).po $(DOMAIN).pot; \ @HAVE_XGETTEXT_TRUE@ fi install-data-local: $(CATALOGS) $(mkinstalldirs) $(DESTDIR)$(localedir) for n in $(CATALOGS) __DuMmY ; do \ if test "$$n" -a "$$n" != "__DuMmY" ; then \ l=`basename $$n .mo`; \ $(mkinstalldirs) $(DESTDIR)$(localedir)/$$l/LC_MESSAGES; \ $(INSTALL_DATA) -m 644 $$n $(DESTDIR)$(localedir)/$$l/LC_MESSAGES/$(DOMAIN).mo; \ fi; \ done uninstall-local: for n in $(CATALOGS) ; do \ l=`basename $$n .mo`; \ rm -f $(DESTDIR)$(localedir)/$$l/LC_MESSAGES/$(DOMAIN).mo; \ done # 'make check' will make sure the tranlation sources are in line with the compiled source check-local: $(AM_V_CHKTRANS)$(top_srcdir)/script/check-translation-sources.sh \ "$(srcdir)" -s "$(top_srcdir)/src/Makefile.am" -v wmaker_SOURCES # 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. .NOEXPORT: WindowMaker-0.95.9/po/fi.po0000644000175000017500000015464213431646201012356 00000000000000# Finnish translation of Window Maker # Copyright (C) 1998 Free Software Foundation, Inc. # Ramin Miraftabi , # Ville Hautamäki , 1998. # # Updates: Tomi Kajala , 1999-2001 # Still more: Pauli Virtanen , 2000 # msgid "" msgstr "" "Project-Id-Version: Window Maker 0.64.0\n" "POT-Creation-Date: 2001-09-03 16:15+0300\n" "PO-Revision-Date: 2001-09-03 21:56+03:00\n" "Last-Translator: Tomi Kajala \n" "Language-Team: Finnish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" #: ../src/appicon.c:542 ../src/dialog.c:224 ../src/dock.c:3244 #: ../src/dockedapp.c:212 ../src/main.c:256 ../src/rootmenu.c:1815 #: ../src/winspector.c:388 ../src/winspector.c:405 msgid "Error" msgstr "Virhe" #: ../src/appicon.c:543 msgid "Could not open specified icon file" msgstr "Määritellyn kuvaketiedoston avaus ei onnistunut" #: ../src/appicon.c:544 ../src/dialog.c:121 ../src/dialog.c:224 #: ../src/dialog.c:672 ../src/dialog.c:1735 ../src/dock.c:493 #: ../src/dock.c:501 ../src/dock.c:525 ../src/dock.c:3245 #: ../src/dockedapp.c:213 ../src/dockedapp.c:371 ../src/main.c:256 #: ../src/rootmenu.c:1819 ../src/winspector.c:389 ../src/winspector.c:406 msgid "OK" msgstr "OK" #: ../src/appicon.c:571 ../src/dock.c:256 msgid "" " will be forcibly closed.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" " suljetaan väkisin.\n" "Kaikki tallentamattomat muutokset katoavat.\n" "Vahvista." #: ../src/appicon.c:577 ../src/dock.c:261 ../src/winmenu.c:128 msgid "Kill Application" msgstr "Tapa sovellus" #: ../src/appicon.c:578 ../src/dock.c:262 ../src/winmenu.c:130 msgid "Yes" msgstr "Kyllä" #: ../src/appicon.c:578 ../src/dock.c:262 ../src/winmenu.c:130 msgid "No" msgstr "Ei" #: ../src/appicon.c:596 ../src/dock.c:1139 ../src/dock.c:3410 msgid "Unhide Here" msgstr "Tuo näkyviin täällä" #: ../src/appicon.c:597 ../src/appicon.c:623 ../src/dock.c:1141 #: ../src/dock.c:1143 ../src/dock.c:3422 ../src/winmenu.c:465 msgid "Hide" msgstr "Piilota" #: ../src/appicon.c:598 ../src/appicon.c:629 msgid "Collapse" msgstr "Häivytä" #: ../src/appicon.c:599 msgid "Set Icon..." msgstr "Valitse kuvake..." #: ../src/appicon.c:600 ../src/dock.c:1147 ../src/rootmenu.c:223 #: ../src/rootmenu.c:237 ../src/winmenu.c:512 msgid "Kill" msgstr "Tapa" #: ../src/appicon.c:621 ../src/dock.c:3420 msgid "Unhide" msgstr "Tuo näkyviin" #: ../src/appicon.c:627 msgid "Uncollapse" msgstr "Häivytys pois" #: ../src/defaults.c:917 ../src/startup.c:890 ../src/startup.c:908 #: ../src/startup.c:914 #, c-format msgid "could not read domain \"%s\" from defaults database" msgstr "tiedon \"%s\" luku oletustietokannasta ei onnistunut" #: ../src/defaults.c:963 ../src/defaults.c:1088 ../src/defaults.c:1127 #: ../src/defaults.c:1173 #, c-format msgid "Domain %s (%s) of defaults database is corrupted!" msgstr "Oletustietokannan kenttä %s (%s) on vioittunut!" #: ../src/defaults.c:968 ../src/defaults.c:1109 ../src/defaults.c:1156 #: ../src/defaults.c:1182 #, c-format msgid "could not load domain %s from user defaults database" msgstr "arvon %s lataaminen käyttäjän oletustietokannasta ei onnistu" #: ../src/defaults.c:979 ../src/defaults.c:1073 #, c-format msgid "Domain %s (%s) of global defaults database is corrupted!" msgstr "Globaalin oletustietokannan arvo %s (%s) on vioittunut!" #: ../src/defaults.c:998 #, c-format msgid "could not load domain %s from global defaults database (%s)" msgstr "arvon %s lataus globaalista oletustietokannasta (%s) ei onnistu" #: ../src/defaults.c:1078 #, c-format msgid "could not load domain %s from global defaults database" msgstr "arvon %s lataus globaalista oletustietokannasta ei onnistu" #: ../src/defaults.c:1146 ../src/screen.c:458 #, c-format msgid "could not load logo image for panels: %s" msgstr "paneelien %s logo-kuvaa ei voitu ladata" #: ../src/defaults.c:1424 #, c-format msgid "wrong option value for key \"%s\". Should be one of %s" msgstr "avaimella \"%s\" on väärä optioarvo. Pitäisi olla joku näistä: %s" #: ../src/defaults.c:1469 #, c-format msgid "can't convert \"%s\" to boolean for key \"%s\"" msgstr "\"%s\":n muunto boolean-muotoon avaimelle \"%s\" ei onnistu" #: ../src/defaults.c:1474 ../src/defaults.c:1506 ../src/defaults.c:1538 #: ../src/defaults.c:1551 ../src/defaults.c:1566 ../src/defaults.c:1580 #: ../src/defaults.c:1650 ../src/defaults.c:1662 ../src/defaults.c:2129 #: ../src/defaults.c:2146 ../src/defaults.c:2159 ../src/defaults.c:2191 #: ../src/defaults.c:2207 ../src/defaults.c:2238 ../src/defaults.c:2325 #: ../src/defaults.c:2713 ../src/defaults.c:2724 #, c-format msgid "using default \"%s\" instead" msgstr "käytetään sen sijaan oletusarvoa \"%s\"" #: ../src/defaults.c:1503 #, c-format msgid "can't convert \"%s\" to integer for key \"%s\"" msgstr "\"%s\":n muuntaminen kokonaisluvuksi avaimelle \"%s\" ei onnistu" #: ../src/defaults.c:1533 ../src/defaults.c:1645 ../src/defaults.c:2124 #: ../src/defaults.c:2141 ../src/defaults.c:2186 ../src/defaults.c:2233 #: ../src/defaults.c:2708 ../src/wdefaults.c:570 ../src/wdefaults.c:606 #, c-format msgid "Wrong option format for key \"%s\". Should be %s." msgstr "Avaimella \"%s\" on väärä optiomuoto. Pitäisi olla %s." #: ../src/defaults.c:1546 #, c-format msgid "Incorrect number of elements in array for key \"%s\"." msgstr "Taulukossa on väärä määrä alkioita avaimelle \"%s\"." #: ../src/defaults.c:1561 #, c-format msgid "Wrong value for key \"%s\". Should be Coordinate." msgstr "Avaimella \"%s\" on väärä arvo. Pitäisi olla koordinaatti." #: ../src/defaults.c:1576 #, c-format msgid "can't convert array to integers for \"%s\"." msgstr "taulukkoa ei voida muuntaa kokonaisluvuiksi \"%s\":lle." #: ../src/defaults.c:1774 ../src/defaults.c:1806 ../src/defaults.c:1822 #: ../src/defaults.c:1851 ../src/defaults.c:1874 ../src/defaults.c:1927 #: ../src/defaults.c:1967 ../src/defaults.c:2005 ../src/defaults.c:2021 #, c-format msgid "\"%s\" is not a valid color name" msgstr "\"%s\" ei ole sallittu värin nimi" #: ../src/defaults.c:1787 ../src/defaults.c:1839 msgid "bad number of arguments in gradient specification" msgstr "virheellinen määrä argumentteja liukuvärin määritelmässä" #: ../src/defaults.c:1900 msgid "too few arguments in multicolor gradient specification" msgstr "liian vähän argumentteja monivärisen liukuvärin määritelmässä" #: ../src/defaults.c:1994 msgid "bad number of arguments in textured gradient specification" msgstr "virheellinen määrä argumentteja liukuväritetyn kuvion määritelmässä" #: ../src/defaults.c:2037 #, c-format msgid "bad opacity value for tgradient texture \"%s\". Should be [0..255]" msgstr "väärä peittävyysarvo kuvioliukuvärille \"%s\". Pitäisi olla [0..255]" #: ../src/defaults.c:2097 #, c-format msgid "could not initialize library %s" msgstr "kirjaston %s alustus epäonnistui" #: ../src/defaults.c:2100 #, c-format msgid "could not find function %s::%s" msgstr "funktiota %s::%s ei löydy" #: ../src/defaults.c:2107 #, c-format msgid "invalid texture type %s" msgstr "virheellinen kuviotyyppi %s" #: ../src/defaults.c:2154 #, c-format msgid "Error in texture specification for key \"%s\"" msgstr "Virhe kuviomääritelmässä avaimelle \"%s\"" #: ../src/defaults.c:2203 msgid "Wrong type for workspace background. Should be a texture type." msgstr "Väärä tyyppi työtilan taustakuvaksi. Pitäisi olla kuviotyyppi." #: ../src/defaults.c:2251 #, c-format msgid "Wrong type for background of workspace %i. Should be a texture." msgstr "Väärä tyyppi työtilan %i taustakuvaksi. Pitäisi olla kuvio." #: ../src/defaults.c:2293 msgid "could not load any usable font!!!" msgstr "minkään käyttökelpoisen fontin lataaminen ei onnistunut!!!" #: ../src/defaults.c:2320 #, c-format msgid "could not get color for key \"%s\"" msgstr "en löytänyt avainta \"%s\" vastaavaa väriä" #: ../src/defaults.c:2378 ../src/rootmenu.c:491 #, c-format msgid "%s:invalid key modifier \"%s\"" msgstr "%s: virheellinen avainmääre \"%s\"" #: ../src/defaults.c:2390 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\"" msgstr "%s: virheellinen näppäinpikavalinnan määrittely \"%s\"" #: ../src/defaults.c:2397 #, c-format msgid "%s:invalid key in shortcut \"%s\"" msgstr "%s: epäkelpo näppäin pikavalinnassa \"%s\"" #: ../src/defaults.c:2422 #, c-format msgid "%s: modifier key %s is not valid" msgstr "%s: muunnosnäppäin %s ei ole voimassa" #: ../src/defaults.c:2454 #, c-format msgid "could not load image in option %s: %s" msgstr "optioon %s: %s liittyvän kuvan lataus ei onnistunut" #: ../src/defaults.c:2573 #, c-format msgid "failed to open bitmap file \"%s\"" msgstr "bittikarttatiedoston \"%s\" lataus epäonnistui" #: ../src/defaults.c:2576 #, c-format msgid "\"%s\" is not a valid bitmap file" msgstr "\"%s\" ei ole kelvollinen bittikarttatiedosto" #: ../src/defaults.c:2579 #, c-format msgid "out of memory reading bitmap file \"%s\"" msgstr "muisti loppui luettaessa bittikarttatiedostoa \"%s\"" #: ../src/defaults.c:2618 ../src/defaults.c:2651 msgid "bad number of arguments in cursor specification" msgstr "kohdistinmääritelmässä on virheellinen määrä argumentteja" #: ../src/defaults.c:2634 #, c-format msgid "unknown builtin cursor name \"%s\"" msgstr "tuntematon sisäänrakennettu kohdistinnimi \"%s\"" #: ../src/defaults.c:2661 ../src/defaults.c:2673 #, c-format msgid "could not find cursor bitmap file \"%s\"" msgstr "kohdistinbittikarttatiedostoa \"%s\" ei löytynyt" #: ../src/defaults.c:2720 #, c-format msgid "Error in cursor specification for key \"%s\"" msgstr "Virhe avaimen \"%s\" kohdistinmääritelmässä" #: ../src/defaults.c:2807 msgid "could not render texture for icon background" msgstr "kuvion piirto kuvakkeen taustalle ei onnistu" #: ../src/dialog.c:121 ../src/dialog.c:679 ../src/dock.c:525 #: ../src/dockedapp.c:377 ../src/rootmenu.c:185 ../src/rootmenu.c:223 #: ../src/rootmenu.c:237 msgid "Cancel" msgstr "Peruuta" #: ../src/dialog.c:219 msgid "Could not open directory \"%s\":\n%s" msgstr "Ei voi avata hakemistoa \"%s\":\n%s" #: ../src/dialog.c:274 msgid "Could not load image file " msgstr "Ei voi avata kuvatiedostoa " #: ../src/dialog.c:606 msgid "Directories" msgstr "Hakemistot" #: ../src/dialog.c:615 msgid "Icons" msgstr "Kuvakkeet" #: ../src/dialog.c:648 msgid "Preview" msgstr "Esikatselu" #: ../src/dialog.c:661 msgid "File Name:" msgstr "Tiedosto:" #: ../src/dialog.c:685 msgid "Choose File" msgstr "Valitse tiedosto" #: ../src/dialog.c:703 ../src/dialog.c:705 msgid "Icon Chooser" msgstr "Kuvakkeen valitsin" #: ../src/dialog.c:1162 ../src/dialog.c:1272 #, c-format msgid "Version %s" msgstr "Versio %s" #: ../src/dialog.c:1269 msgid "Window Manager for X" msgstr "Ikkunamanageri X:ään" #: ../src/dialog.c:1292 #, c-format msgid "Using visual 0x%x: %s %ibpp " msgstr "" #: ../src/dialog.c:1300 msgid "(32 thousand colors)\n" msgstr "(32 000 väriä)\n" #: ../src/dialog.c:1303 msgid "(64 thousand colors)\n" msgstr "(64 000 väriä)\n" #: ../src/dialog.c:1307 msgid "(16 million colors)\n" msgstr "(16 miljoonaa väriä)\n" #: ../src/dialog.c:1310 #, c-format msgid "(%d colors)\n" msgstr "(%d väriä)\n" #: ../src/dialog.c:1320 #, c-format msgid "Total allocated memory: %i kB. Total memory in use: %i kB.\n" msgstr "Muistia varattu yhteensä %i kt. Muistia käytössä yhteensä %i kt.\n" #: ../src/dialog.c:1283 msgid "Image formats: " msgstr "Kuvamuodot: " #: ../src/dialog.c:1334 msgid "" "\n" "Additional support for: " msgstr "" #: ../src/dialog.c:1357 msgid " and " msgstr " ja " #: ../src/dialog.c:1367 msgid "" "\n" "Sound disabled" msgstr "\nÄäni pois" #: ../src/dialog.c:1369 msgid "" "\n" "Sound enabled" msgstr "\nÄäni päällä" #: ../src/dialog.c:1393 msgid "Info" msgstr "Info" #: ../src/dialog.c:1416 msgid "Merry X'mas!" msgstr "" #: ../src/dialog.c:1417 msgid "" " Window Maker 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.\n" "\n" " Window Maker 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.\n" "\n" " You should have received a copy of the GNU General Public License along " "with this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin Street, Fifth Floor, Boston, MA02110-1301 USA." msgstr "" " Window Maker on vapaa ohjelmisto; voit jakaa sitä edelleen ja/tai " "muokata sitä Free Software Foundationin julkaiseman GNU General Public " "Licensen (version 2 tai halutessasi jonkin myöhemmän version) ehtojen " "mukaisesti.\n" "\n" " Window Makeria jaetaan siinä toivossa, että siitä on hyötyä, " "mutta ILMAN MITÄÄN TAKUUTA; siihen ei sisälly edes epäsuoraa " "takuuta siitä, että se SOVELTUISI MARKKINOITAVAKSI tai SOPISI " "JOHONKIN TIETTYYN TARKOITUKSEEN. Katso tarkempia tietoja GNU " "General Public Licensestä.\n" "\n" " Tämän ohjelman mukana pitäisi tulla kopio GNU General Public " "Licensestä. Jos näin ei ole, ilmoita siitä osoitteeseen Free Software " "Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA " "02110-1301, USA." #: ../src/dialog.c:1507 msgid "Legal" msgstr "Käyttöehdot" #: ../src/dialog.c:1658 ../src/startup.c:388 msgid "cannot open connection for crashing dialog panel. Aborting." msgstr "yhteyden avaus kaatumis-valintapaneeliin ei onnistunut. Keskeytetään." #: ../src/dialog.c:1684 msgid "Fatal error" msgstr "Vakava virhe" #: ../src/dialog.c:1695 #, c-format msgid "" "Window Maker received signal %i\n" "(%s)." msgstr "" "Window Maker vastaanotti signaalin %i\n" "(%s)." #: ../src/dialog.c:1698 #, c-format msgid "Window Maker received signal %i." msgstr "Window Maker vastaanotti signaalin %i." #: ../src/dialog.c:1707 msgid "" " This fatal error occured probably due to a bug. Please fill the included " "BUGFORM and report it to %s." msgstr "" " Tämä vakava virhe tapahtui luultavasti bugin johdosta. Ole hyvä ja täytä " "oheinen bugi-kaavake ja lähetä se osoitteeseen %s." #: ../src/dialog.c:1716 msgid "What do you want to do now?" msgstr "Mitä haluat nyt tehdä?" #: ../src/dialog.c:1722 msgid "Select action" msgstr "Valitse toiminta" #: ../src/dialog.c:1723 msgid "Abort and leave a core file" msgstr "Keskeytä ja kirjoita core-tiedosto" #: ../src/dialog.c:1724 msgid "Restart Window Maker" msgstr "Käynnistä Window Maker uudelleen" #: ../src/dialog.c:1725 msgid "Start alternate window manager" msgstr "Käynnistä vaihtoehtoinen ikkunamanageri" #: ../src/dialog.c:1903 msgid "" "Window Maker is part of the GNUstep project.\n" "The GNUstep project aims to create a free\n" "implementation of the OpenStep(tm) specification\n" "which is a object-oriented framework for\n" "creating advanced graphical, multi-platform\n" "applications. Additionally, a development and\n" "user desktop environment will be created on top\n" "of the framework. For more information about\n" "GNUstep, please visit: www.gnustep.org" msgstr "" "Window Maker on osa GNUstep-projektia.\n" "GNUstep-projektin tarkoituksena on luoda vapaa\n" "toteutus OpenStep(tm)-määrittelystä, joka on\n" "olio-orientoitunut kehys kehittyneiden\n" "graafisten, monilla alustoilla toimivien\n" "sovellusten luontiin. Kehyksen päälle tullaan\n" "lisäksi luomaan kehitys- ja käyttäjätyöpöytä-\n" "ympäristö. Saat GNUstepistä lisää tietoa\n" "osoitteesta www.gnustep.org" #: ../src/dialog.c:1923 msgid "About GNUstep" msgstr "Tietoa GNUstepistä" #: ../src/dock.c:213 #, c-format msgid "Type the name for workspace %i:" msgstr "Kirjoita nimi työtilalle %i:" #: ../src/dock.c:214 ../src/dock.c:1103 ../src/dock.c:1106 ../src/dock.c:3328 msgid "Rename Workspace" msgstr "Vaihda työtilan nimi" #: ../src/dock.c:487 ../src/dock.c:495 msgid "Warning" msgstr "Varoitus" #: ../src/dock.c:488 msgid "" "Some icons cannot be made omnipresent. Please make sure that no other icon " "is docked in the same positions on the other workspaces and the Clip is not " "full in some workspace." msgstr "" "Eräitä kuvakkeita saada kaikkialla näkyviksi. Varmista, ettei toisia " "ikoneita ole telakoitu samoihin paikkoihin muissa työtiloissa ja ettei " "Liitin ole täynnä jossain työtilassa." #: ../src/dock.c:496 msgid "" "Icon cannot be made omnipresent. Please make sure that no other icon is " "docked in the same position on the other workspaces and the Clip is not full " "in some workspace." msgstr "" "Kuvaketta ei saada kaikkialla näkyväksi. Varmista, ettei toista ikonia ole " "telakoitu samaan kohtaan muissa työtiloissa ja ettei Liitin ole täynnä " "jossain työtilassa." #: ../src/dock.c:523 msgid "Workspace Clip" msgstr "Työtilan Liitin" #: ../src/dock.c:524 msgid "All selected icons will be removed!" msgstr "Kaikki valitut kuvakkeet poistetaan!" #: ../src/dock.c:575 ../src/dock.c:1118 ../src/dock.c:1120 ../src/dock.c:3364 msgid "Keep Icon" msgstr "Pidä kuvake" #: ../src/dock.c:576 ../src/dock.c:2083 ../src/dock.c:2218 msgid "Type the command used to launch the application" msgstr "Kirjoita komento, jolla ohjelma käynnistetään" #: ../src/dock.c:927 #, c-format msgid "could not launch application %s\n" msgstr "sovelluksen %s käynnistys ei onnistu\n" #: ../src/dock.c:982 msgid "could not create workspace submenu for Clip menu" msgstr "Liittimen valikkoon ei voitu luoda työtila-alivalikkoa" #: ../src/dock.c:1040 msgid "could not create options submenu for Clip menu" msgstr "Liittimen valikkoon ei voitu luoda asetukset-alivalikkoa" #: ../src/dock.c:1044 ../src/dock.c:1092 msgid "Keep on Top" msgstr "Pidä päällimmäisenä" #: ../src/dock.c:1050 msgid "Collapsed" msgstr "Häivytetty" #: ../src/dock.c:1056 msgid "Autocollapse" msgstr "Automaattinen häivytys" #: ../src/dock.c:1062 msgid "Autoraise" msgstr "Nosta automaattisesti" #: ../src/dock.c:1068 msgid "Autoattract Icons" msgstr "Kerää kuvakkeet automaattisesti" #: ../src/dock.c:1098 msgid "Clip Options" msgstr "Liittimen asetukset" #: ../src/dock.c:1108 msgid "Selected" msgstr "Valittu" #: ../src/dock.c:1113 ../src/dock.c:1116 ../src/dock.c:3355 msgid "Select All Icons" msgstr "Valitse kaikki kuvakkeet" #: ../src/dock.c:1122 ../src/dock.c:1124 ../src/dock.c:3372 msgid "Move Icon To" msgstr "Siirrä kuvake tilaan" #: ../src/dock.c:1129 ../src/dock.c:1132 ../src/dock.c:3383 msgid "Remove Icon" msgstr "Poista kuvake" #: ../src/dock.c:1134 msgid "Attract Icons" msgstr "Kerää kuvakkeet" #: ../src/dock.c:1137 msgid "Launch" msgstr "Käynnistä" #: ../src/dock.c:1145 msgid "Settings..." msgstr "Asetukset..." #: ../src/dock.c:1504 ../src/dock.c:1607 #, c-format msgid "bad value in docked icon state info %s" msgstr "virheellinen arvo telakoidun kuvakkeen tilatiedossa %s " #: ../src/dock.c:1615 #, c-format msgid "bad value in docked icon position %i,%i" msgstr "virheellinen arvo telakoidun kuvakkeen paikassa %i,%i" #: ../src/dock.c:1867 msgid "there are too many icons stored in dock. Ignoring what doesn't fit" msgstr "Telakassa on liikaa kuvakkeita. Jätän huomiotta ne, jotka eivät mahdu." #. icon->forced_dock = 1; #: ../src/dock.c:2082 ../src/dock.c:2217 msgid "Dock Icon" msgstr "Telakoi kuvake" #: ../src/dock.c:3237 ../src/dock.c:3241 #, c-format msgid "Could not execute command \"%s\"" msgstr "Komennon \"%s\" suoritus ei onnistunut" #: ../src/dock.c:3334 msgid "Toggle Omnipresent" msgstr "Näkyvyys kaikkialla päälle/pois" #: ../src/dock.c:3339 ../src/winmenu.c:417 ../src/winspector.c:1395 msgid "Omnipresent" msgstr "Näkyvissä kaikkialla" #: ../src/dock.c:3353 msgid "Unselect All Icons" msgstr "Kaikkien kuvakkeiden valinta pois" #: ../src/dock.c:3362 msgid "Keep Icons" msgstr "Pidä kuvakkeet" #: ../src/dock.c:3370 msgid "Move Icons To" msgstr "Siirrä kuvakkeet ->" #: ../src/dock.c:3381 msgid "Remove Icons" msgstr "Poista kuvakkeet" #: ../src/dock.c:3412 msgid "Bring Here" msgstr "Tuo tänne" #: ../src/dockedapp.c:131 #, c-format msgid "could not find icon %s, used in a docked application" msgstr "telakoidussa sovelluksessa käytettävää kuvaketta %s ei löydy" #: ../src/dockedapp.c:211 #, c-format msgid "Could not open specified icon file: %s" msgstr "Määritellyn kuvaketiedoston %s avaus ei onnistu" #: ../src/dockedapp.c:213 msgid "Ignore" msgstr "Jätä huomiotta" #: ../src/dockedapp.c:306 msgid "Start when Window Maker is started" msgstr "Käynnistä, kun WMaker käynnistetään" #: ../src/dockedapp.c:313 msgid "Lock (prevent accidental removal)" msgstr "Lukitse (estä tahaton poisto)" #: ../src/dockedapp.c:319 msgid "Application path and arguments" msgstr "Sovelluksen polku ja argumentit" #: ../src/dockedapp.c:330 msgid "Command for files dropped with DND" msgstr "Komento tiedostoille, jotka vedetään ja tiputetaan" #: ../src/dockedapp.c:342 #, c-format msgid "%d will be replaced with the file name" msgstr "%d korvataan tiedoston nimellä" #: ../src/dockedapp.c:346 msgid "DND support was not compiled in" msgstr "vedä ja tiputa -tukea ei käännetty mukaan" #: ../src/dockedapp.c:352 msgid "Icon Image" msgstr "Kuvake" #: ../src/dockedapp.c:364 ../src/winspector.c:1533 msgid "Browse..." msgstr "Selaa..." #: ../src/dockedapp.c:409 msgid "Docked Application Settings" msgstr "Telakoidun ohjelman asetukset" #: ../src/framewin.c:649 ../src/framewin.c:744 ../src/menu.c:456 #: ../src/texture.c:594 #, c-format msgid "could not render texture: %s" msgstr "kuviota %s ei voitu piirtää" #: ../src/framewin.c:672 ../src/framewin.c:683 ../src/framewin.c:699 #: ../src/framewin.c:710 ../src/framewin.c:717 ../src/framewin.c:724 #: ../src/icon.c:350 ../src/menu.c:485 #, c-format msgid "error rendering image:%s" msgstr "virhe piirrettäessä kuvaa:%s" #: ../src/framewin.c:777 #, c-format msgid "error rendering image: %s" msgstr "virhe piirrettäessä kuvaa: %s" #: ../src/icon.c:229 ../src/wdefaults.c:440 #, c-format msgid "error loading image file \"%s\": %s" msgstr "virhe ladattaessa kuvaa \"%s\": %s" #: ../src/icon.c:491 ../src/icon.c:500 #, c-format msgid "could not create directory %s" msgstr "hakemiston %s luonti ei onnistunut" #: ../src/icon.c:767 #, c-format msgid "could not find default icon \"%s\"" msgstr "Oletuskuvaketta \"%s\" ei löydy" #: ../src/icon.c:773 #, c-format msgid "could not load default icon \"%s\":%s" msgstr "oletuskuvakkeen \"%s\":%s lataus ei onnistu" #: ../src/main.c:205 msgid "failed to restart Window Maker." msgstr "Window Makerin uudelleenkäynnistys epäonnistui." #: ../src/main.c:208 #, c-format msgid "could not exec %s" msgstr "%s:n suoritus ei onnistunut" #: ../src/main.c:254 msgid "Could not execute command: " msgstr "Seuraavan komennon suoritus epäonnistui: " #: ../src/main.c:411 #, c-format msgid "%s aborted.\n" msgstr "%s keskeytetty.\n" #: ../src/main.c:422 #, c-format msgid "Usage: %s [options]\n" msgstr "käyttö: %s [optiot]\n" #: ../src/main.c:423 msgid "The Window Maker window manager for the X window system" msgstr "Window Maker -ikkunamanageri X-ikkunointijärjestelmälle" #: ../src/main.c:425 msgid " -display host:dpy\tdisplay to use" msgstr " -display host:dpy\tkäytettävä näyttö" #: ../src/main.c:427 msgid " --no-cpp \t\tdisable preprocessing of configuration files" msgstr " --no-cpp \t\tkonfiguraatiotiedostojen esiprosessointi pois käytöstä" #: ../src/main.c:429 msgid " --no-dock\t\tdo not open the application Dock" msgstr " --no-dock\t\tälä avaa sovellustelakkaa" #: ../src/main.c:430 msgid " --no-clip\t\tdo not open the workspace Clip" msgstr " --no-clip\t\tälä avaa työtilaliitintä" #: ../src/main.c:431 msgid " --no-autolaunch\tdo not autolaunch applications" msgstr " --no-autolaunch\tälä käynnistä sovelluksia automaattisesti" #: ../src/main.c:432 msgid " --dont-restore\t\tdo not restore saved session" msgstr "--dont-restore\t\tälä palauta tallennettua istuntoa" #: ../src/main.c:434 msgid " --locale locale\tlocale to use" msgstr " --locale locale\tkäytettävä maa-asetus" #: ../src/main.c:436 msgid "" " --create-stdcmap\tcreate the standard colormap hint in PseudoColor visuals" msgstr "" #: ../src/main.c:437 msgid " --visual-id visualid\tvisual id of visual to use" msgstr " --visual-id visualid\tkäytettävän visualin id" #: ../src/main.c:438 msgid " --static\t\tdo not update or save configurations" msgstr " --static\t\tälä päivitä tai tallenna asetuksia" #: ../src/main.c:439 #, fuzzy msgid " --no-polling\t\tdo not periodically check for configuration updates" msgstr " --static\t\tälä päivitä tai tallenna asetuksia" #: ../src/main.c:441 msgid " --synchronous\t\tturn on synchronous display mode" msgstr " --synchronous\t\tsynkroninen näyttötila päälle" #: ../src/main.c:443 msgid " --version\t\tprint version and exit" msgstr " --version\t\ttulosta versio ja poistu" #: ../src/main.c:444 msgid " --help\t\t\tshow this message" msgstr " --help\t\t\tnäytä tämä viesti" #: ../src/main.c:456 #, c-format msgid "" "could not find user GNUstep directory (%s).\n" "Make sure you have installed Window Maker correctly and run wmaker.inst" msgstr "" "käyttäjän GNUstep-hakemistoa (%s) ei löydy.\n" "Tarkista, että olet asentanut Window Makerin oikein ja ajanut komennon " "wmaker.inst" #: ../src/main.c:477 ../src/main.c:482 #, c-format msgid "%s:could not execute initialization script" msgstr "%s:ei voi suorittaa alustusskriptiä" #: ../src/main.c:502 ../src/main.c:507 #, c-format msgid "%s:could not execute exit script" msgstr "%s:lopetusskriptin suoritus ei onnistu" #: ../src/main.c:623 ../src/main.c:631 ../src/main.c:639 ../src/main.c:659 #, c-format msgid "too few arguments for %s" msgstr "liian vähän argumentteja %s:lle" #: ../src/main.c:643 #, c-format msgid "bad value for visualid: \"%s\"" msgstr "väärä arvo visualid:lle: \"%s\"" #: ../src/main.c:667 #, c-format msgid "%s: invalid argument '%s'\n" msgstr "%s: virheellinen argumentti '%s'\n" #: ../src/main.c:668 #, c-format msgid "Try '%s --help' for more information\n" msgstr "Saat lisätietoa kirjoittamalla '%s --help'\n" #: ../src/main.c:699 msgid "X server does not support locale" msgstr "X-palvelin ei tue maa-asetusta" #: ../src/main.c:703 msgid "cannot set locale modifiers" msgstr "maa-asetus-määreiden asetus ei onnistu" #: ../src/main.c:719 #, c-format msgid "could not open display \"%s\"" msgstr "näytön \"%s\" avaus ei onnistu" #: ../src/menu.c:1255 #, fuzzy msgid "could not grab keyboard" msgstr "hakemiston %s luonti ei onnistunut" #: ../src/misc.c:71 #, c-format msgid "could not define value for %s for cpp" msgstr "ei voitu määritellä arvoa %s cpp:lle" #: ../src/misc.c:101 #, c-format msgid "could not get password entry for UID %i" msgstr "käyttäjän, jonka UID on %i, salasanamerkintää ei saatu" #: ../src/misc.c:126 #, c-format msgid "your machine is misconfigured. HOSTNAME is set to %s" msgstr "koneesi on konfiguroity väärin. HOSTNAME on asetettu arvoon %s" #: ../src/misc.c:132 #, c-format msgid "your machine is misconfigured. HOST is set to %s" msgstr "koneesi on konfiguroity väärin. HOST on asetettu arvoon %s" #: ../src/misc.c:626 msgid "Program Arguments" msgstr "Ohjelman argumentit" #: ../src/misc.c:627 msgid "Enter command arguments:" msgstr "Syötä komentoriviargumentit:" #: ../src/misc.c:720 msgid "unable to get dropped data from DND drop" msgstr "vedä ja tiputa -datan saanti ei onnistunut" #: ../src/misc.c:728 msgid "error getting dropped data from DND drop" msgstr "virhe vedä ja tiputa -datan vastaanotossa" #: ../src/misc.c:734 msgid "out of memory while getting data from DND drop" msgstr "muisti loppui vastaanotettaessa vedä ja tiputa -dataa" #: ../src/misc.c:779 ../src/misc.c:919 #, c-format msgid "out of memory during expansion of \"%s\"" msgstr "muisti loppui \"%s\":n lavennuksen aikana" #: ../src/misc.c:833 msgid "out of memory during expansion of \"%w\"" msgstr "muisti loppui \"%w\":n lavennuksen aikana" #: ../src/misc.c:851 msgid "out of memory during expansion of \"%W\"" msgstr "muisti loppui \"%W\":n lavennuksen aikana" #: ../src/misc.c:867 msgid "out of memory during expansion of \"%a\"" msgstr "muisti loppui \"%a\":n lavennuksen aikana" #: ../src/misc.c:898 #, c-format msgid "out of memory during expansion of \"%d\"" msgstr "muisti loppui \"%d\":n lavennuksen aikana" #: ../src/misc.c:912 msgid "selection not available" msgstr "valintaa ei ole saatavilla" #: ../src/misc.c:985 ../src/misc.c:991 #, c-format msgid "bad window name value in %s state info" msgstr "virheellinen ikkunan nimi tilatiedossa %s" #: ../src/misc.c:1248 msgid "could not send message to background image helper" msgstr "viestin lähetys taustakuva-apurille epäonnistui" #: ../src/pixmap.c:235 #, c-format msgid "could not load mask bitmap file \"%s\". Won't use mask" msgstr "maski-bittikarttatiedostoa \"%s\" ei voitu ladata. Maskia ei käytetä" #: ../src/proplist.c:180 msgid "unterminated string" msgstr "terminoimaton merkkijono" #: ../src/proplist.c:247 msgid "unterminated array" msgstr "terminoimaton taulukko" #: ../src/proplist.c:256 msgid "missing , in array or unterminated array" msgstr "taulukosta puuttuu pilkku tai taulukkoa ei ole terminoitu" #: ../src/proplist.c:267 msgid "could not get array element" msgstr "taulukon alkiota ei saatu" #: ../src/proplist.c:297 msgid "unterminated dictionary" msgstr "terminoimaton hakemisto" #: ../src/proplist.c:315 msgid "missing dictionary key" msgstr "hakemistoavain puuttuu" #: ../src/proplist.c:317 msgid "missing dictionary entry key or unterminated dictionary" msgstr "sanakirja-avain puuttuu tai sanakirjaa ei ole terminoitu" #: ../src/proplist.c:323 msgid "error parsing dictionary key" msgstr "virhe sanakirja-avainta jäsennettäessä" #: ../src/proplist.c:332 msgid "missing = in dictionary entry" msgstr "sanakirjamerkinnästä puuttuu =" #: ../src/proplist.c:351 msgid "missing ; in dictionary entry" msgstr "Sanakirjamerkinnästä puuttuu ;" #: ../src/proplist.c:432 msgid "" "was expecting a string, dictionary, data or array. If it's a string, try " "enclosing it with \"." msgstr "" "odotettiin merkkijonoa, sanakirjaa, dataa tai taulukkoa. Jos kyseessä on " "merkkijono, kokeile laittaa se lainausmerkkeihin." #: ../src/proplist.c:434 msgid "Comments are not allowed inside WindowMaker owned domain files." msgstr "" "Kommentit eivät ole sallittuja Window Makerille kuuluvissa tiedostoissa." #: ../src/proplist.c:453 #, c-format msgid "could not open domain file %s" msgstr "domain-tiedoston %s avaus ei onnistunut" #: ../src/proplist.c:466 msgid "extra data after end of file" msgstr "ylimääräistä dataa tiedoston lopun perässä" #: ../src/resources.c:44 #, c-format msgid "could not parse color \"%s\"" msgstr "värin \"%s\" jäsennys ei onnistunut" #: ../src/resources.c:48 #, c-format msgid "could not allocate color \"%s\"" msgstr "värin \"%s\" varaus ei onnistunut" #: ../src/rootmenu.c:183 ../src/rootmenu.c:185 msgid "Exit" msgstr "Poistu" #: ../src/rootmenu.c:184 msgid "Exit window manager?" msgstr "Poistutaanko ikkunamanagerista?" #: ../src/rootmenu.c:220 msgid "Close X session" msgstr "Sulje X-istunto" #: ../src/rootmenu.c:221 msgid "" "Close Window System session?\n" "Kill might close applications with unsaved data." msgstr "" "Suljetaanko ikkunointijärjestelmän istunto?\n" "Tallentamatonta tietoa sisältävät sovellukset saattavat sulkeutua." #. #. entry = wMenuAddCallback(menu, _("Select Shortcut"), NULL, NULL); #. wMenuEntrySetCascade(menu, entry, makeMakeShortcutMenu(scr)); #. #: ../src/rootmenu.c:223 ../src/winmenu.c:505 msgid "Close" msgstr "Sulje" #: ../src/rootmenu.c:234 msgid "Kill X session" msgstr "Sulje X-istunto" #: ../src/rootmenu.c:235 msgid "" "Kill Window System session?\n" "(all applications will be closed)" msgstr "" "Tapetaanko ikkunointijärjestelmän istunto?\n" "(kaikki ohjelmat suljetaan)" #: ../src/rootmenu.c:504 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\" for entry %s" msgstr "%s: virheellinen näppäinpikavalinnan määrittely \"%s\" merkinnälle %s" #: ../src/rootmenu.c:512 #, c-format msgid "%s:invalid key in shortcut \"%s\" for entry %s" msgstr "%s: vääränlainen näppäin pikavalinnassa \"%s\" merkinnälle %s" #: ../src/rootmenu.c:565 #, c-format msgid "%s: unmatched '\"' in menu file" msgstr "%s: valikkotiedostosta ei löydy paria merkille '\"'" #: ../src/rootmenu.c:615 #, c-format msgid "%s: missing command" msgstr "%s: puuttuva komento" #: ../src/rootmenu.c:647 #, c-format msgid "invalid OPEN_MENU specification: %s" msgstr "virheellinen OPEN_MENU-määritelmä: %s" #: ../src/rootmenu.c:695 #, c-format msgid "%s:could not stat menu" msgstr "" #: ../src/rootmenu.c:703 #, c-format msgid "%s:could not stat menu:%s" msgstr "" #: ../src/rootmenu.c:721 #, c-format msgid "too many parameters in OPEN_MENU: %s" msgstr "liian monta parametria OPEN_MENUssa: %s" #: ../src/rootmenu.c:765 msgid "" "There are more than one WORKSPACE_MENU commands in the applications menu. " "Only one is allowed." msgstr "" "Sovellusvalikossa on enemmän kuin yksi WORKSPACE_MENU-komento. Vain yksi on " "sallittu." #: ../src/rootmenu.c:799 #, fuzzy msgid "" "There are more than one WINDOWS_MENU commands in the applications menu. Only " "one is allowed." msgstr "" "Sovellusvalikossa on enemmän kuin yksi WORKSPACE_MENU-komento. Vain yksi on " "sallittu." #: ../src/rootmenu.c:804 #, fuzzy msgid "Window List" msgstr "Älä näytä ikkunaluettelossa" #: ../src/rootmenu.c:833 ../src/rootmenu.c:851 ../src/rootmenu.c:861 #, c-format msgid "%s:missing parameter for menu command \"%s\"" msgstr "%s: puuttuva parametri valikkokomennolla \"%s\"" #: ../src/rootmenu.c:929 #, c-format msgid "%s:unknown command \"%s\" in menu config." msgstr "%s: tuntematon komento \"%s\" valikkomääritelmässä." #: ../src/rootmenu.c:937 #, c-format msgid "%s:can't add shortcut for entry \"%s\"" msgstr "%s: kohdalle \"%s\" ei voida lisätä pikavalintaa" #: ../src/rootmenu.c:1074 #, c-format msgid "%s:maximal line size exceeded in menu config: %s" msgstr "%s: rivin maksimipituus ylitetty valikkomääritelmässä: %s" #: ../src/rootmenu.c:1096 ../src/rootmenu.c:1189 ../src/rootmenu.c:1291 #, c-format msgid "%s:missing command in menu config: %s" msgstr "%s: komento puuttuu valikkomääritelmässä: %s" #: ../src/rootmenu.c:1126 #, c-format msgid "%s:syntax error in menu file:END declaration missing" msgstr "%s: virhe valikkotiedoston syntaksissa: END-määre puuttuu" #: ../src/rootmenu.c:1155 ../src/rootmenu.c:1255 msgid "could not make arguments for menu file preprocessor" msgstr "ei voitu tehdä argumentteja valikkotiedoston esikäsittelijälle" #: ../src/rootmenu.c:1162 ../src/rootmenu.c:1263 #, c-format msgid "%s:could not open/preprocess menu file" msgstr "%s: valikkotiedostoa ei voitu avata/esikäsitellä" #: ../src/rootmenu.c:1174 ../src/rootmenu.c:1276 #, c-format msgid "could not open menu file \"%s\": %s" msgstr "valikkotiedoston \"%s\" avaus ei onnistunut: %s" #: ../src/rootmenu.c:1201 #, c-format msgid "%s:invalid menu file. MENU command is missing" msgstr "%s:virheellinen valikkotiedosto. MENU-komento puuttuu." #: ../src/rootmenu.c:1210 msgid "error reading preprocessed menu data" msgstr "virhe luettaessa esikäsiteltyä valikkodataa" #: ../src/rootmenu.c:1303 #, c-format msgid "%s:no title given for the root menu" msgstr "%s: juurivalikolle ei ole annettu nimeä" #: ../src/rootmenu.c:1394 ../src/rootmenu.c:1467 ../src/rootmenu.c:1508 #, c-format msgid "out of memory while constructing directory menu %s" msgstr "muisti loppui luotaessa hakemistovalikkoa %s" #: ../src/rootmenu.c:1404 #, c-format msgid "%s:could not stat file \"%s\" in menu directory" msgstr "%s: tiedostolta \"%s\" ei saatu stat-tietoja valikkohakemistossa" #: ../src/rootmenu.c:1562 msgid "Commands" msgstr "Komennot" #: ../src/rootmenu.c:1565 msgid "Restart" msgstr "Käynnistä uudelleen" #: ../src/rootmenu.c:1566 msgid "Exit..." msgstr "Poistu..." #: ../src/rootmenu.c:1611 #, c-format msgid "could not find menu file \"%s\" referenced in WMRootMenu" msgstr "WMRootMenussa mainittua valikkotiedostoa \"%s\" ei löydy" #: ../src/rootmenu.c:1618 #, c-format msgid "could not access menu \"%s\" referenced in WMRootMenu" msgstr "WMRootMenussa mainittua valikkoa \"%s\" ei saada käyttöön" #: ../src/rootmenu.c:1629 #, c-format msgid "" "using default menu file \"%s\" as the menu referenced in WMRootMenu could " "not be found " msgstr "" "käytetään oletusvalikkoa \"%s\", koska WMRootMenussa mainittua valikkoa ei " "löydy" #: ../src/rootmenu.c:1652 ../src/rootmenu.c:1728 #, c-format msgid "%s:format error in root menu configuration \"%s\"" msgstr "%s: muotoiluvirhe juurivalikon määrittelyssä \"%s\"" #: ../src/rootmenu.c:1816 msgid "" "The applications menu could not be loaded. Look at the console output for a " "detailed description of the errors." msgstr "" "Sovellusvalikkoa ei voitu ladata. Saat virheistä tarkan kuvauksen katsomalla " "konsolitulostetta." #: ../src/screen.c:740 #, c-format msgid "could not initialize graphics library context: %s" msgstr "grafiikkakirjastokontekstin %s alustus ei onnistunut" #: ../src/screen.c:771 msgid "could not do initialization of WINGs widget set" msgstr "WINGs-widget-setin alustus ei onnistunut" #: ../src/screen.c:1135 #, c-format msgid "could not save session state in %s" msgstr "istunnon tilan tallennus -> %s ei onnistunut" #: ../src/session.c:183 ../src/wdefaults.c:588 ../src/winspector.c:453 #, c-format msgid "can't convert \"%s\" to boolean" msgstr "\"%s\":ää ei voida muuttaa boolean-tyyppiseksi" #: ../src/session.c:1021 msgid "out of memory while saving session state" msgstr "muisti loppui istunnon tilaa tallennettaessa" #: ../src/session.c:1112 msgid "end of memory while saving session state" msgstr "muisti loppui istunnon tilaa tallennettaessa" #. 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:1250 msgid "connection to the session manager was lost" msgstr "yhteys istunnon manageriin menetettiin" #: ../src/stacking.c:73 msgid "could not get window list!!" msgstr "ikkunaluetteloa ei saatu!!" #: ../src/startup.c:202 #, c-format msgid "internal X error: %s\n" msgstr "sisäinen X-virhe: %s\n" #: ../src/startup.c:260 #, c-format msgid "got signal %i (%s) - restarting\n" msgstr "vastaanotettiin signaali %i (%s) - käynnistetään uudelleen\n" #: ../src/startup.c:262 #, c-format msgid "got signal %i - restarting\n" msgstr "vastaanotettiin signaali %i - käynnistetään uudelleen\n" #: ../src/startup.c:272 #, fuzzy, c-format msgid "got signal %i (%s) - rereading defaults\n" msgstr "vastaanotettiin signaali %i (%s) - käynnistetään uudelleen\n" #: ../src/startup.c:274 #, fuzzy, c-format msgid "got signal %i - rereading defaults\n" msgstr "vastaanotettiin signaali %i - käynnistetään uudelleen\n" #: ../src/startup.c:284 #, c-format msgid "got signal %i (%s) - exiting...\n" msgstr "vastaanotettiin signaali %i (%s) - poistutaan...\n" #: ../src/startup.c:286 #, c-format msgid "got signal %i - exiting...\n" msgstr "vastaanotettiin signaali %i - poistutaan...\n" #: ../src/startup.c:322 #, c-format msgid "got signal %i (%s)\n" msgstr "vastaanotettiin signaali %i (%s)\n" #: ../src/startup.c:324 #, c-format msgid "got signal %i\n" msgstr "vastaanotettiin signaali %i\n" #: ../src/startup.c:335 msgid "" "crashed while trying to do some post-crash cleanup. Aborting immediatelly." msgstr "" "kaatui, kun yritettiin tehdä kaatumisen jälkeistä siivousta. Keskeytetään " "välittömästi." #. we try to restart Window Maker #: ../src/startup.c:400 msgid "trying to restart Window Maker..." msgstr "yritetään käynnistää Window Maker uudelleen..." #: ../src/startup.c:405 msgid "trying to start alternate window manager..." msgstr "yritetään käynnistää vaihtoehtoista ikkunamanageria..." #: ../src/startup.c:410 msgid "failed to start alternate window manager. Aborting." msgstr "vaihtoehtoisen ikkunamanagerin käynnistys epäonnistui. Keskeytetään." #: ../src/startup.c:412 msgid "" "a fatal error has occured, probably due to a bug. Please fill the included " "BUGFORM and report it." msgstr "" "vakava virhe on tapahtunut - luultavasti bugin johdosta. Ole hyvä ja täytä " "oheinen bugi-kaavake ja lähetä se." #: ../src/startup.c:900 #, c-format msgid "icon size is configured to %i, but it's too small. Using 16, instead\n" msgstr "" "kuvakkeiden kooksi on säädetty %i, mutta se on liian pieni. Käytetään sen " "sijaan kokoa 16.\n" #: ../src/startup.c:928 msgid "XKB is not supported. KbdModeLock is automatically disabled." msgstr "XKB:tä ei tueta. KbdModeLockin käyttö estetään automaattisesti." #: ../src/startup.c:947 msgid "it seems that there is already a window manager running" msgstr "näyttää siltä, että jokin ikkunamanageri on jo käynnissä" #: ../src/startup.c:953 #, c-format msgid "could not manage screen %i" msgstr "ruudun %i käsittely ei onnistu" #: ../src/startup.c:1021 msgid "could not manage any screen" msgstr "minkään ruudun käsittely ei onnistu" #: ../src/switchmenu.c:114 msgid "Windows" msgstr "Ikkunat" #: ../src/texture.c:329 ../src/texture.c:371 #, c-format msgid "image file \"%s\" used as texture could not be found." msgstr "kuviona käytettyä kuvatiedostoa \"%s\" ei löydy." #: ../src/texture.c:335 ../src/texture.c:377 #, c-format msgid "could not load texture pixmap \"%s\":%s" msgstr "kuvio-kuvakarttaa \"%s\":%s ei löydy" #: ../src/texture.c:437 #, c-format msgid "library \"%s\" cound not be opened." msgstr "kirjaston \"%s\" avaus ei onnistunut." #: ../src/texture.c:446 #, c-format msgid "function \"%s\" not found in library \"%s\"" msgstr "funktiota \"%s\" ei löytynyt kirjastosta \"%s\"" #: ../src/texture.c:453 msgid "function textures not supported on this system, sorry." msgstr "tämä järjestelmä ei valitettavasti tue kuviofunktioita." #: ../src/texture.c:598 msgid "could not allocate image buffer" msgstr "Kuvapuskurin varaus epäonnistui" #: ../src/wdefaults.c:434 #, c-format msgid "could not find icon file \"%s\"" msgstr "kuvaketiedostoa \"%s\" ei löytynyt" #: ../src/window.c:2825 ../src/window.c:2960 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 tai muu samantapainen näppäin näyttää olevan päällä.\n" "Laita se pois, tai jotkut hiiritoiminnot ja näppäinpikavalinnat eivät toimi." #: ../src/winmenu.c:129 msgid "" "This will kill the application.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" "Tämä sulkee ohjelman väkisin.\n" "Kaikki tallentamattomat muutokset menetetään.\n" "Vahvista." #: ../src/winmenu.c:271 ../src/winmenu.c:280 msgid "Set Shortcut" msgstr "Aseta pikavalinta" #: ../src/winmenu.c:358 ../src/winmenu.c:403 msgid "could not create submenu for window menu" msgstr "ikkunavalikkoon ei voitu luoda alivalikkoa" #: ../src/winmenu.c:407 msgid "Keep on top" msgstr "Pidä päällimmäisenä" #: ../src/winmenu.c:412 msgid "Keep at bottom" msgstr "Pidä alimmaisena" #. #. * 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:440 ../src/winmenu.c:575 msgid "Maximize" msgstr "Suurenna" #: ../src/winmenu.c:448 ../src/winmenu.c:561 msgid "Miniaturize" msgstr "Pienennä" #: ../src/winmenu.c:457 ../src/winmenu.c:592 msgid "Shade" msgstr "Vain otsikkopalkki" #: ../src/winmenu.c:473 msgid "Resize/Move" msgstr "Muuta kokoa/Siirrä" #: ../src/winmenu.c:481 msgid "Select" msgstr "Valitse" #: ../src/winmenu.c:489 msgid "Move To" msgstr "Siirrä työtilaan" #: ../src/winmenu.c:494 msgid "Attributes..." msgstr "Ominaisuudet..." #: ../src/winmenu.c:496 msgid "Options" msgstr "Valintoja" #: ../src/winmenu.c:556 msgid "Deminiaturize" msgstr "Peruuta pienennys" #: ../src/winmenu.c:570 msgid "Unmaximize" msgstr "Peruuta suurennus" #: ../src/winmenu.c:587 msgid "Unshade" msgstr "Myös sisältö" #: ../src/winspector.c:386 #, c-format msgid "Could not find icon \"%s\" specified for this window" msgstr "Tälle ikkunalle määriteltyä kuvaketta \"%s\" ei löytynyt" #: ../src/winspector.c:403 #, c-format msgid "Could not open specified icon \"%s\":%s" msgstr "Ei voinut avata määriteltyä kuvaketta \"%s\":%s" #: ../src/winspector.c:1141 #, c-format msgid "Inspecting %s.%s" msgstr "" #: ../src/winspector.c:1167 msgid "Click in the window you wish to inspect." msgstr "Paina ikkunaa, jota haluat tarkastella." #: ../src/winspector.c:1206 msgid "" "The configuration will apply to all\n" "windows that have their WM_CLASS\n" "property set to the above selected\n" "name, when saved." msgstr "" "Kun asetukset tallennetaan, ne\n" "vaikuttavat kaikkiin ikkunoihin,\n" "joiden WM_CLASS-ominaisuus on asetettu\n" "yllä valituksi nimeksi." #: ../src/winspector.c:1235 msgid "Save" msgstr "Tallenna" #: ../src/winspector.c:1243 msgid "Apply" msgstr "Toteuta" #: ../src/winspector.c:1249 msgid "Reload" msgstr "Lataa uudelleen" #: ../src/winspector.c:1258 ../src/winspector.c:1268 msgid "Window Specification" msgstr "Ikkunan määrittely" #: ../src/winspector.c:1259 msgid "Window Attributes" msgstr "Ikkunan ominaisuudet" #: ../src/winspector.c:1260 msgid "Advanced Options" msgstr "Tarkemmat asetukset" #: ../src/winspector.c:1261 msgid "Icon and Initial Workspace" msgstr "Kuvake ja alustava työtila" #: ../src/winspector.c:1262 msgid "Application Specific" msgstr "Sovelluskohtaiset" #: ../src/winspector.c:1276 msgid "Defaults for all windows" msgstr "Kaikkien ikkunoiden oletusarvot" #: ../src/winspector.c:1330 #, fuzzy msgid "Select window" msgstr "Valitse ikkuna" #: ../src/winspector.c:1344 msgid "Attributes" msgstr "Ominaisuudet" #: ../src/winspector.c:1355 #, fuzzy msgid "Disable titlebar" msgstr "Ei otsikkopalkkia" #: ../src/winspector.c:1357 msgid "" "Remove the titlebar of this window.\n" "To access the window commands menu of a window\n" "without it's titlebar, press Control+Esc (or the\n" "equivalent shortcut, if you changed the default\n" "settings)." msgstr "" "Poista tämän ikkunan otsikkopalkki. Pääset\n" "otsikkopalkittoman ikkunan komentovalikkoon\n" "painamalla Control+Esc (tai vastaavaa\n" "pikavalintaa, jos muutit oletusasetuksia)." #: ../src/winspector.c:1364 #, fuzzy msgid "Disable resizebar" msgstr "Ei koonsäätöpalkkia" #: ../src/winspector.c:1366 msgid "Remove the resizebar of this window." msgstr "Poista tämän ikkunan koonsäätöpalkki." #: ../src/winspector.c:1369 #, fuzzy msgid "Disable close button" msgstr "Ei sulje-painiketta" #: ../src/winspector.c:1371 msgid "Remove the `close window' button of this window." msgstr "Poista tämän ikkunan 'sulje ikkuna'-painike." #: ../src/winspector.c:1374 #, fuzzy msgid "Disable miniaturize button" msgstr "Ei pienennyspainiketta" #: ../src/winspector.c:1376 msgid "Remove the `miniaturize window' button of the window." msgstr "Poista tämän ikkunan 'pienennä ikkuna'-painike." #: ../src/winspector.c:1379 #, fuzzy msgid "Disable border" msgstr "Ei reunaa" #: ../src/winspector.c:1381 msgid "Remove the 1 pixel black border around the window." msgstr "Poista ikkunan ympäriltä 1 pikselin levyinen musta reuna." #: ../src/winspector.c:1384 #, fuzzy msgid "Keep on top (floating)" msgstr "Pidä päällimmäisenä" #: ../src/winspector.c:1386 #, fuzzy msgid "" "Keep the window over other windows, not allowing\n" "them to cover it." msgstr "" "Pidä ikkuna muiden ikkunoiden päällä;\n" "älä anna niiden peittää sitä." #: ../src/winspector.c:1390 #, fuzzy msgid "Keep at bottom (sunken)" msgstr "Pidä pohjimmaisena" #: ../src/winspector.c:1392 msgid "Keep the window under all other windows." msgstr "Pidä ikkuna kaikkien muiden ikkunoiden alla." #: ../src/winspector.c:1397 #, fuzzy msgid "Make window present in all workspaces." msgstr "Näytä ikkuna kaikissa työtiloissa." #: ../src/winspector.c:1400 #, fuzzy msgid "Start miniaturized" msgstr "Käynnistä pienennettynä" #: ../src/winspector.c:1402 msgid "" "Make the window be automatically miniaturized when it's\n" "first shown." msgstr "" "Pienennä ikkuna automaattisesti, kun se näytetään\n" "ensimmäisen kerran." #: ../src/winspector.c:1406 #, fuzzy msgid "Start maximized" msgstr "Käynnistä suurennettuna" #: ../src/winspector.c:1408 msgid "" "Make the window be automatically maximized when it's\n" "first shown." msgstr "" "Suurenna ikkuna automaattisesti, kun se näytetään\n" "ensimmäisen kerran." #: ../src/winspector.c:1412 #, fuzzy msgid "Full screen maximization" msgstr "Kokoruudun suurennus" #: ../src/winspector.c:1414 msgid "" "Make the window use the whole screen space when it's\n" "maximized. The titlebar and resizebar will be moved\n" "to outside the screen." msgstr "" "Aseta ikkuna käyttämään koko ruutualaa, kun se on\n" "suurennettu. Otsikko- ja koonmuutospalkki siirretään\n" "ruudun ulkopuolelle." #: ../src/winspector.c:1431 msgid "Advanced" msgstr "Tarkemmat asetukset" #: ../src/winspector.c:1448 #, fuzzy msgid "Do not bind keyboard shortcuts" msgstr "Älä sido näppäinpikavalintoja" #: ../src/winspector.c:1450 msgid "" "Do not bind keyboard shortcuts from Window Maker\n" "when this window is focused. This will allow the\n" "window to receive all key combinations regardless\n" "of your shortcut configuration." msgstr "" "Älä sido Window Makerin näppäinpikavalintoja, kun\n" "tämä ikkuna on aktiivinen. Tämä sallii ikkunan\n" "vastaanottaa kaikki näppäinyhdistelmät pika-\n" "valinta-asetuksistasi riippumatta." #: ../src/winspector.c:1456 #, fuzzy msgid "Do not bind mouse clicks" msgstr "Älä sido hiiren napautuksia" #: ../src/winspector.c:1458 msgid "" "Do not bind mouse actions, such as `Alt'+drag\n" "in the window (when Alt is the modifier you have\n" "configured)." msgstr "" "Älä sido ikkunassa hiiritoimintoja kuten\n" "'Alt'-siirtoja (kun Alt on määrittelemäsi modifier)." #: ../src/winspector.c:1463 #, fuzzy msgid "Do not show in the window list" msgstr "Älä näytä kyseistä ikkunaa ikkunalista-valikossa." #: ../src/winspector.c:1465 msgid "Do not list the window in the window list menu." msgstr "Älä näytä kyseistä ikkunaa ikkunalista-valikossa." #: ../src/winspector.c:1468 #, fuzzy msgid "Do not let it take focus" msgstr "Älä anna syöttökohdistusta" #: ../src/winspector.c:1470 msgid "" "Do not let the window take keyboard focus when you\n" "click on it." msgstr "" "Älä anna ikkunalle syöttökohdistusta,\n" "kun napautat hiirellä sen alueella." #: ../src/winspector.c:1474 #, fuzzy msgid "Keep inside screen" msgstr "Pidä näyttöalueella" #: ../src/winspector.c:1476 msgid "" "Do not allow the window to move itself completely\n" "outside the screen. For bug compatibility.\n" msgstr "" "Älä anna ikkunan siirtyä kokonaan ruudun\n" "ulkopuolelle. Bugi-yhteensopivuuden takia.\n" #: ../src/winspector.c:1480 #, fuzzy msgid "Ignore 'Hide Others'" msgstr "Älä välitä PiilotaMuut-komennosta" #: ../src/winspector.c:1482 msgid "" "Do not hide the window when issuing the\n" "`HideOthers' command." msgstr "" "Älä piilota ikkunaa, kun annetaan\n" "'Piilota muut'-komento." #: ../src/winspector.c:1486 #, fuzzy msgid "Ignore 'Save Session'" msgstr "Älä tallenna istuntoa" #: ../src/winspector.c:1488 msgid "" "Do not save the associated application in the\n" "session's state, so that it won't be restarted\n" "together with other applications when Window Maker\n" "starts." msgstr "" "Älä tallenna ks. sovellusta istunnon tilaan,\n" "jotta sitä ei käynnistetä uudelleen muiden\n" "sovellusten kanssa, kun Window Maker\n" "käynnistyy." #: ../src/winspector.c:1494 #, fuzzy msgid "Emulate application icon" msgstr "Matki sovelluskuvaketta" #: ../src/winspector.c:1496 msgid "" "Make this window act as an application that provides\n" "enough information to Window Maker for a dockable\n" "application icon to be created." msgstr "" "Laita tämä ikkuna käyttäytymään sovelluksena, joka\n" "tarjoaa Window Makerille tarpeeksi informaatiota, jotta\n" "voidaan luoda telakoituva sovelluskuvake." #: ../src/winspector.c:1502 #, fuzzy msgid "Disable language button" msgstr "Älä käytä kieli-painiketta" #: ../src/winspector.c:1504 msgid "Remove the `toggle language' button of the window." msgstr "Poista ikkunan 'vaihda kieltä'-painike." #: ../src/winspector.c:1521 msgid "Miniwindow Image" msgstr "Kuvake" #: ../src/winspector.c:1548 #, fuzzy msgid "Icon filename:" msgstr "Kuvakkeen tiedostonimi:" #: ../src/winspector.c:1561 msgid "Ignore client supplied icon" msgstr "Älä käytä sovelluksen antamaa" #: ../src/winspector.c:1568 msgid "Initial Workspace" msgstr "Työtila käynnistettäessä" #: ../src/winspector.c:1570 msgid "The workspace to place the window when it's first shown." msgstr "" "Työtila, johon ikkuna sijoitetaan, kun se näytetään ensimmäisen kerran." #: ../src/winspector.c:1576 msgid "Nowhere in particular" msgstr "Ei erityistä tilaa" #: ../src/winspector.c:1594 #, fuzzy msgid "Application Attributes" msgstr "Sovelluksenlaajuinen" #: ../src/winspector.c:1605 #, fuzzy msgid "Start hidden" msgstr "Käynnistä piilotettuna" #: ../src/winspector.c:1607 msgid "Automatically hide application when it's started." msgstr "Piilota sovellus automaattisesti, kun se käynnistetään." #: ../src/winspector.c:1610 #, fuzzy msgid "No application icon" msgstr "Ei sovelluskuvaketta" #: ../src/winspector.c:1612 msgid "" "Disable the application icon for the application.\n" "Note that you won't be able to dock it anymore,\n" "and any icons that are already docked will stop\n" "working correctly." msgstr "" "Poista sovelluksen sovelluskuvake. Huomaa, että et\n" "voi enää telakoida sitä, ja jo telakoidut kuvakkeet\n" "lakkaavat toimimasta oikein." #: ../src/winspector.c:1618 msgid "Collapse application icons" msgstr "Häivytä sovelluskuvakkeet" #: ../src/winspector.c:1620 msgid "" "Collapse application icons from other instances\n" "of this application into one.\n" msgstr "" "Häivytä tämän sovelluksen muiden esiintymien\n" "sovellusikonit yhdeksi.\n" #: ../src/workspace.c:110 ../src/workspace.c:111 ../src/workspace.c:897 #, c-format msgid "Workspace %i" msgstr "Työtila %i" #: ../src/workspace.c:954 msgid "Workspaces" msgstr "Työtilat" #: ../src/workspace.c:956 msgid "could not create Workspace menu" msgstr "Työtilavalikon luonti ei onnistunut" #: ../src/workspace.c:963 msgid "New" msgstr "Uusi" #: ../src/workspace.c:964 msgid "Destroy Last" msgstr "Tuhoa viimeinen" #~ msgid "Sound" #~ msgstr "Ääni" #~ msgid "Allow Lowering" #~ msgstr "Salli peittyminen" #~ msgid "error making logo image for panel:%s" #~ msgstr "virhe paneelin %s logon luonnissa" #~ msgid "selection timed-out" #~ msgstr "valinta on vanhentunut" #~ msgid "Update" #~ msgstr "Päivitä" #~ msgid "invalid data in selection" #~ msgstr "virheellistä dataa valinnassa" WindowMaker-0.95.9/po/fr.po0000644000175000017500000016012613431646201012361 00000000000000# French Message file for Window Maker # Last Update: version 0.80.0 # # Update History: # Maintained by Antoine Hulin # previously maintained by Bastien Nocera # msgid "" msgstr "" "Project-Id-Version: 0.80.0\n" "POT-Creation-Date: 2003-05-02 15:39+0200\n" "PO-Revision-Date: 2002-01-21 07:08+0100\n" "Last-Translator: Antoine Hulin \n" "Language-Team: French \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" #: ../src/appicon.c:415 ../src/dialog.c:295 ../src/dock.c:3357 #: ../src/dockedapp.c:231 ../src/main.c:273 ../src/rootmenu.c:1859 #: ../src/winspector.c:389 ../src/winspector.c:406 msgid "Error" msgstr "Erreur" #: ../src/appicon.c:416 msgid "Could not open specified icon file" msgstr "Impossible d'ouvrir l'icône spécifiée." #: ../src/appicon.c:417 ../src/dialog.c:192 ../src/dialog.c:295 #: ../src/dialog.c:724 ../src/dialog.c:1776 ../src/dock.c:532 #: ../src/dock.c:540 ../src/dock.c:564 ../src/dock.c:3358 #: ../src/dockedapp.c:232 ../src/dockedapp.c:427 ../src/main.c:273 #: ../src/rootmenu.c:1863 ../src/winspector.c:390 ../src/winspector.c:407 msgid "OK" msgstr "Accepter" #: ../src/appicon.c:445 ../src/dock.c:262 msgid "" " will be forcibly closed.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" " va être arrêté.\n" "Les changements non sauvegardés seront perdus.\n" "Confirmez-vous ?" #: ../src/appicon.c:453 ../src/dock.c:281 ../src/winmenu.c:125 msgid "Kill Application" msgstr "Arrêter l'application" #: ../src/appicon.c:454 ../src/dock.c:282 ../src/winmenu.c:127 msgid "Yes" msgstr "Oui" #: ../src/appicon.c:454 ../src/dock.c:282 ../src/winmenu.c:127 msgid "No" msgstr "Non" #: ../src/appicon.c:484 ../src/dock.c:1184 ../src/dock.c:3523 msgid "Unhide Here" msgstr "Montrer ici" #: ../src/appicon.c:485 ../src/appicon.c:510 ../src/dock.c:1186 #: ../src/dock.c:1188 ../src/dock.c:3535 ../src/winmenu.c:467 msgid "Hide" msgstr "Masquer" #: ../src/appicon.c:486 msgid "Set Icon..." msgstr "Associer une icône..." #: ../src/appicon.c:487 ../src/dock.c:1192 ../src/rootmenu.c:248 #: ../src/rootmenu.c:264 ../src/winmenu.c:522 msgid "Kill" msgstr "Terminer" #: ../src/appicon.c:508 ../src/dock.c:3533 msgid "Unhide" msgstr "Montrer" #: ../src/application.c:398 #, c-format msgid "recreating missing icon '%s'" msgstr "Création de l'icône manquante « %s »." #: ../src/defaults.c:924 ../src/defaults.c:1013 #, c-format msgid "Domain %s (%s) of global defaults database is corrupted!" msgstr "Le domaine %s (%s) de la configuration générale est corrompu !" #: ../src/defaults.c:929 #, c-format msgid "could not load domain %s from global defaults database" msgstr "Le domaine %s est illisible dans la configuration générale." #: ../src/defaults.c:951 ../src/startup.c:884 ../src/startup.c:902 #: ../src/startup.c:908 #, c-format msgid "could not read domain \"%s\" from defaults database" msgstr "Le domaine « %s » est introuvable dans la configuration par défaut." #: ../src/defaults.c:997 ../src/defaults.c:1101 ../src/defaults.c:1142 #: ../src/defaults.c:1198 #, c-format msgid "Domain %s (%s) of defaults database is corrupted!" msgstr "Le domaine %s (%s) de la configuration par défaut est corrompu !" #: ../src/defaults.c:1002 ../src/defaults.c:1121 ../src/defaults.c:1178 #: ../src/defaults.c:1207 ../src/menureader.c:397 #, c-format msgid "could not load domain %s from user defaults database" msgstr "" "Le domaine %s est introuvable dans la configuration par défaut de " "l'utilisateur." #: ../src/defaults.c:1032 #, c-format msgid "could not load domain %s from global defaults database (%s)" msgstr "Le domaine %s est introuvable dans la configuration générale (%s)." #: ../src/defaults.c:1168 ../src/screen.c:425 #, c-format msgid "could not load logo image for panels: %s" msgstr "Le chargement des logos pour les fenêtres de messages a échoué : %s" #. --------------------------- Local ----------------------- #: ../src/defaults.c:1416 ../src/defaults.c:1558 ../src/defaults.c:1670 #: ../src/defaults.c:2149 ../src/defaults.c:2166 ../src/defaults.c:2211 #: ../src/defaults.c:2258 ../src/defaults.c:2731 ../src/wdefaults.c:571 #: ../src/wdefaults.c:607 #, c-format msgid "Wrong option format for key \"%s\". Should be %s." msgstr "Format incorrect pour la clé « %s ». Le format devrait être %s." #: ../src/defaults.c:1418 ../src/defaults.c:1499 ../src/defaults.c:1531 #: ../src/defaults.c:1563 ../src/defaults.c:1576 ../src/defaults.c:1591 #: ../src/defaults.c:1605 ../src/defaults.c:1675 ../src/defaults.c:1687 #: ../src/defaults.c:2154 ../src/defaults.c:2171 ../src/defaults.c:2184 #: ../src/defaults.c:2216 ../src/defaults.c:2232 ../src/defaults.c:2263 #: ../src/defaults.c:2350 ../src/defaults.c:2736 ../src/defaults.c:2747 #, c-format msgid "using default \"%s\" instead" msgstr "La valeur utilisée en remplacement est « %s »." #: ../src/defaults.c:1449 #, c-format msgid "wrong option value for key \"%s\". Should be one of %s" msgstr "Valeur incorrecte pour la clé « %s ». Les valeurs autorisées sont %s." #: ../src/defaults.c:1494 #, c-format msgid "can't convert \"%s\" to boolean for key \"%s\"" msgstr "Impossible de convertir « %s » en booléen (pour la clé « %s »)." #: ../src/defaults.c:1528 #, c-format msgid "can't convert \"%s\" to integer for key \"%s\"" msgstr "Impossible de convertir « %s » en valeur entière (pour la clé « %s »)." #: ../src/defaults.c:1571 #, c-format msgid "Incorrect number of elements in array for key \"%s\"." msgstr "Nombre d'éléments incorrect pour la clé « %s »." #: ../src/defaults.c:1586 #, c-format msgid "Wrong value for key \"%s\". Should be Coordinate." msgstr "Mauvaise valeur pour la clé « %s ». Il devrait y avoir une coordonnée." #: ../src/defaults.c:1601 #, c-format msgid "can't convert array to integers for \"%s\"." msgstr "" "Impossible de convertir le tableau de la clé « %s » en valeurs entières." #: ../src/defaults.c:1799 ../src/defaults.c:1831 ../src/defaults.c:1847 #: ../src/defaults.c:1876 ../src/defaults.c:1899 ../src/defaults.c:1952 #: ../src/defaults.c:1992 ../src/defaults.c:2030 ../src/defaults.c:2046 #, c-format msgid "\"%s\" is not a valid color name" msgstr "« %s » n'est pas un nom de couleur valide." #: ../src/defaults.c:1812 ../src/defaults.c:1864 msgid "bad number of arguments in gradient specification" msgstr "Mauvais nombre d'arguments dans la description du dégradé." #: ../src/defaults.c:1925 msgid "too few arguments in multicolor gradient specification" msgstr "Trop peu d'arguments dans la description du dégradé multicolore." #: ../src/defaults.c:2019 msgid "bad number of arguments in textured gradient specification" msgstr "Mauvais nombre d'arguments dans la description du dégradé texturé." #: ../src/defaults.c:2062 #, c-format msgid "bad opacity value for tgradient texture \"%s\". Should be [0..255]" msgstr "L'opacité du dégradé texturé doit être entre 0 et 255 et non « %s »." #: ../src/defaults.c:2122 #, c-format msgid "could not initialize library %s" msgstr "L'initialisation de la bibliothèque %s a échoué." #: ../src/defaults.c:2125 #, c-format msgid "could not find function %s::%s" msgstr "La fonction %s::%s est introuvable." #: ../src/defaults.c:2132 #, c-format msgid "invalid texture type %s" msgstr "Type de texture invalide : %s." #: ../src/defaults.c:2179 #, c-format msgid "Error in texture specification for key \"%s\"" msgstr "Erreur dans la description de la texture pour la clé « %s »." #: ../src/defaults.c:2228 msgid "Wrong type for workspace background. Should be a texture type." msgstr "Mauvais type de fond d'écran. Il devrait s'agir d'une texture." #: ../src/defaults.c:2276 #, c-format msgid "Wrong type for background of workspace %i. Should be a texture." msgstr "" "Mauvais type de fond d'écran pour le bureau %i. Il devrait s'agir d'une " "texture." #: ../src/defaults.c:2318 msgid "could not load any usable font!!!" msgstr "Impossible de charger une police utilisable !" #: ../src/defaults.c:2345 #, c-format msgid "could not get color for key \"%s\"" msgstr "La lecture de la couleur pour la clé « %s » a échoué." #: ../src/defaults.c:2403 ../src/rootmenu.c:531 #, c-format msgid "%s:invalid key modifier \"%s\"" msgstr "%s : « %s » n'est pas un modificateur de touche valide." #: ../src/defaults.c:2415 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\"" msgstr "%s : « %s » n'est pas un raccourci clavier valide." #: ../src/defaults.c:2422 #, c-format msgid "%s:invalid key in shortcut \"%s\"" msgstr "%s : touche invalide dans le raccourci « %s »." #: ../src/defaults.c:2447 #, c-format msgid "%s: modifier key %s is not valid" msgstr "%s : modificateur de touche « %s » invalide." #: ../src/defaults.c:2479 #, c-format msgid "could not load image in option %s: %s" msgstr "Le chargement de l'image pour la clé %s a échoué : %s" #: ../src/defaults.c:2596 #, c-format msgid "failed to open bitmap file \"%s\"" msgstr "Impossible d'ouvrir le fichier image « %s »." #: ../src/defaults.c:2599 #, c-format msgid "\"%s\" is not a valid bitmap file" msgstr "« %s » n'est pas une image valide." #: ../src/defaults.c:2602 #, c-format msgid "out of memory reading bitmap file \"%s\"" msgstr "Plus assez de mémoire pendant la lecture de l'image « %s »." #: ../src/defaults.c:2641 ../src/defaults.c:2674 msgid "bad number of arguments in cursor specification" msgstr "Nombre d'arguments incorrect dans la définition du curseur." #: ../src/defaults.c:2657 #, c-format msgid "unknown builtin cursor name \"%s\"" msgstr "Nom de curseur prédéfini inconnu « %s »." #: ../src/defaults.c:2684 ../src/defaults.c:2696 #, c-format msgid "could not find cursor bitmap file \"%s\"" msgstr "Le fichier image « %s » du curseur est introuvable." #: ../src/defaults.c:2743 #, c-format msgid "Error in cursor specification for key \"%s\"" msgstr "Erreur dans la description de texture pour la clé « %s »" #: ../src/defaults.c:2828 msgid "could not render texture for icon background" msgstr "L'affichage de la texture de fond d'icône a échoué." #: ../src/dialog.c:147 msgid "Save workspace state" msgstr "Enregistrer l'état des bureaux" #: ../src/dialog.c:192 ../src/dialog.c:731 ../src/dock.c:564 #: ../src/dockedapp.c:432 ../src/rootmenu.c:198 ../src/rootmenu.c:248 #: ../src/rootmenu.c:264 msgid "Cancel" msgstr "Annuler" #: ../src/dialog.c:290 msgid "Could not open directory \"%s\":\n%s" msgstr "Impossible d'accéder au répertoire « %s »:\n%s" #: ../src/dialog.c:345 msgid "Could not load image file " msgstr "Impossible de lire l'image." #: ../src/dialog.c:658 msgid "Directories" msgstr "Répertoires" #: ../src/dialog.c:667 msgid "Icons" msgstr "Icônes" #: ../src/dialog.c:700 msgid "Preview" msgstr "Aperçu" #: ../src/dialog.c:713 msgid "File Name:" msgstr "Fichier :" #: ../src/dialog.c:737 msgid "Choose File" msgstr "Choisissez un fichier" #: ../src/dialog.c:756 ../src/dialog.c:758 msgid "Icon Chooser" msgstr "Sélecteur d'icônes" #: ../src/dialog.c:1192 ../src/dialog.c:1301 #, c-format msgid "Version %s" msgstr "Version %s" #: ../src/dialog.c:1299 msgid "Window Manager for X" msgstr "Gestionnaire de fenêtres" #: ../src/dialog.c:1323 #, c-format msgid "Using visual 0x%x: %s %ibpp " msgstr "Mode graphique 0x%x : %s %i bpp " #: ../src/dialog.c:1331 msgid "(32 thousand colors)\n" msgstr "(32 000 couleurs).\n" #: ../src/dialog.c:1334 msgid "(64 thousand colors)\n" msgstr "(64 000 couleurs).\n" #: ../src/dialog.c:1338 msgid "(16 million colors)\n" msgstr "(16 millions de couleurs).\n" #: ../src/dialog.c:1341 #, c-format msgid "(%d colors)\n" msgstr "(%d couleurs)\n" #: ../src/dialog.c:1351 #, c-format msgid "Total allocated memory: %i kB. Total memory in use: %i kB.\n" msgstr "Mémoire allouée : %i ko. Mémoire utilisée : %i ko.\n" #: ../src/dialog.c:1283 msgid "Image formats: " msgstr "Formats d'images : " #: ../src/dialog.c:1365 msgid "" "\n" "Additional support for: " msgstr "" "\n" "Support complémentaire : " #: ../src/dialog.c:1388 msgid " and " msgstr " et " #: ../src/dialog.c:1398 msgid "" "\n" "Sound disabled" msgstr "" "\n" "Son désactivé" #: ../src/dialog.c:1400 msgid "" "\n" "Sound enabled" msgstr "" "\n" "Son activé" #: ../src/dialog.c:1429 msgid "Info" msgstr "Information" #: ../src/dialog.c:1453 msgid "Merry Christmas!" msgstr "Joyeux Noël !" #: ../src/dialog.c:1417 msgid "" " Window Maker 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.\n" "\n" " Window Maker 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.\n" "\n" " You should have received a copy of the GNU General Public License along " "with this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin Street, Fifth Floor, Boston, MA02110-1301 USA." msgstr "" " Window Maker est un logiciel libre ; il peut être redistribué " "et/ou modifié selon les termes de la Licence Publique Générale du " "projet GNU (GNU GPL), telle que publiée par la Free Software " "Foundation (version 2 ou toute version postérieure).\n" "\n" " Window Maker est distribué dans l'espoir qu'il sera utile, mais " "sans aucune garantie, sans même la garantie implicite d'une possible " "valeur marchande ou d'une adéquation à un besoin particulier. " "Consultez la Licence Publique Générale du projet GNU pour plus de " "détails.\n" "\n" " Vous devriez avoir reçu une copie de la Licence Publique " "Générale avec ce programme ; dans le cas contraire, écrivez à la " "Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, " "Boston, MA 02110-1301, USA." #: ../src/dialog.c:1547 msgid "Legal" msgstr "Informations légales" #: ../src/dialog.c:1699 ../src/startup.c:394 msgid "cannot open connection for crashing dialog panel. Aborting." msgstr "" "Impossible d'ouvrir la boîte de dialogue dédiée aux incidents. Abandon." #: ../src/dialog.c:1725 msgid "Fatal error" msgstr "Erreur fatale" #: ../src/dialog.c:1736 #, c-format msgid "" "Window Maker received signal %i\n" "(%s)." msgstr "" "Window Maker a reçu le signal %i\n" "(%s)." #: ../src/dialog.c:1739 #, c-format msgid "Window Maker received signal %i." msgstr "Window Maker a reçu le signal %i." #. Comment for the PO file: the %s is an email address #: ../src/dialog.c:1632 #, c-format msgid "" " This fatal error occured probably due to a bug. Please fill the included " "BUGFORM and report it to %s." msgstr "" " Cette erreur est probablement due à un bogue. Remplissez le formulaire " "BUGFORM et envoyez-le à %s." #: ../src/dialog.c:1757 msgid "What do you want to do now?" msgstr "Que voulez-vous faire maintenant ?" #: ../src/dialog.c:1763 msgid "Select action" msgstr "Choisissez une action" #: ../src/dialog.c:1764 msgid "Abort and leave a core file" msgstr "Abandonner et créer une image mémoire (fichier « core »)." #: ../src/dialog.c:1765 msgid "Restart Window Maker" msgstr "Redémarrer Window Maker" #: ../src/dialog.c:1766 msgid "Start alternate window manager" msgstr "Démarrer un autre gestionnaire de fenêtres" #: ../src/dialog.c:1944 msgid "" "Window Maker is part of the GNUstep project.\n" "The GNUstep project aims to create a free\n" "implementation of the OpenStep(tm) specification\n" "which is a object-oriented framework for\n" "creating advanced graphical, multi-platform\n" "applications. Additionally, a development and\n" "user desktop environment will be created on top\n" "of the framework. For more information about\n" "GNUstep, please visit: www.gnustep.org" msgstr "" "Window Maker fait partie du projet GNUstep.\n" "Le projet GNUstep vise à créer une mise en\n" "oeuvre libre de la spécification OpenStep(tm)\n" "(une boîte à outils orientée objet pour le\n" "développement d'applications graphiques\n" "évoluées et multi-plates-formes). De plus,\n" "un environnement pour l'utilisateur et le\n" "développeur sera créé à partir de cette boîte\n" "à outils. Visitez la page : www.gnustep.org" #: ../src/dialog.c:1967 msgid "About GNUstep" msgstr "À propos de GNUstep" #: ../src/dock.c:211 #, c-format msgid "Type the name for workspace %i:" msgstr "Entrez un nom pour le bureau %i : " #: ../src/dock.c:212 ../src/dock.c:1148 ../src/dock.c:1151 ../src/dock.c:3441 msgid "Rename Workspace" msgstr "Renommer le bureau" #: ../src/dock.c:526 ../src/dock.c:534 msgid "Warning" msgstr "Attention" #: ../src/dock.c:527 msgid "" "Some icons cannot be made omnipresent. Please make sure that no other icon " "is docked in the same positions on the other workspaces and the Clip is not " "full in some workspace." msgstr "" "Certaines icônes ne peuvent être rendues omniprésentes. Assurez-vous " "qu'aucune autre icône n'est présente à la même place sur un autre bureau et " "que le Trombone n'est plein sur aucun bureau." #: ../src/dock.c:535 msgid "" "Icon cannot be made omnipresent. Please make sure that no other icon is " "docked in the same position on the other workspaces and the Clip is not full " "in some workspace." msgstr "" "Cette icône ne peut être rendue omniprésente. Assurez-vous qu'aucune autre " "icône n'est présente à la même place sur un autre bureau et que le Trombone " "n'est plein sur aucun bureau." #: ../src/dock.c:562 msgid "Workspace Clip" msgstr "Trombone" #: ../src/dock.c:563 msgid "All selected icons will be removed!" msgstr "Toutes les icônes sélectionnées seront supprimées !" #: ../src/dock.c:614 ../src/dock.c:1163 ../src/dock.c:1165 ../src/dock.c:3477 msgid "Keep Icon" msgstr "Figer l'icône" #: ../src/dock.c:615 ../src/dock.c:2154 ../src/dock.c:2295 msgid "Type the command used to launch the application" msgstr "Entrez la commande utilisée pour lancer l'application" #: ../src/dock.c:971 #, c-format msgid "could not launch application %s\n" msgstr "Le lancement de l'application %s a échoué.\n" #: ../src/dock.c:1026 msgid "could not create workspace submenu for Clip menu" msgstr "La création du sous-menu Bureau pour le menu du Trombone a échoué." #: ../src/dock.c:1085 msgid "could not create options submenu for Clip menu" msgstr "La création d'un sous-menu Options pour le menu du Trombone a échoué." #: ../src/dock.c:1089 ../src/dock.c:1137 msgid "Keep on Top" msgstr "Toujours devant" #: ../src/dock.c:1095 msgid "Collapsed" msgstr "Fermé" #: ../src/dock.c:1101 msgid "Autocollapse" msgstr "Fermeture automatique" #: ../src/dock.c:1107 msgid "Autoraise" msgstr "Passer devant" #: ../src/dock.c:1113 msgid "Autoattract Icons" msgstr "Trombone magnétique" #: ../src/dock.c:1143 msgid "Clip Options" msgstr "Options du Trombone" #: ../src/dock.c:1153 msgid "Selected" msgstr "Sélectionnée(s)" #: ../src/dock.c:1158 ../src/dock.c:1161 ../src/dock.c:3468 msgid "Select All Icons" msgstr "Sélectionner les icônes" #: ../src/dock.c:1167 ../src/dock.c:1169 ../src/dock.c:3485 msgid "Move Icon To" msgstr "Déplacer l'icône vers" #: ../src/dock.c:1174 ../src/dock.c:1177 ../src/dock.c:3496 msgid "Remove Icon" msgstr "Supprimer l'icône" #: ../src/dock.c:1179 msgid "Attract Icons" msgstr "Attirer les icônes" #: ../src/dock.c:1182 msgid "Launch" msgstr "Lancer" #: ../src/dock.c:1190 msgid "Settings..." msgstr "Paramètres..." #: ../src/dock.c:1555 ../src/dock.c:1662 #, c-format msgid "bad value in docked icon state info %s" msgstr "Mauvaise valeur dans l'information %s sur l'état de l'icône dockée." #: ../src/dock.c:1670 #, c-format msgid "bad value in docked icon position %i,%i" msgstr "Mauvaise valeur pour la position %i,%i de l'icône dockée." # Cette chaîne sera concaténée avec la suivante (Il y a trop d'icône...), il faut # donc un espace après le point. #: ../src/dock.c:1690 #, c-format msgid "bad value in dock state info:%s" msgstr "Mauvaise valeur dans l'information %s sur l'état du Dock. " #: ../src/dock.c:1936 msgid "there are too many icons stored in dock. Ignoring what doesn't fit" msgstr "Il y a trop d'icônes dans le Dock. Le surplus sera ignoré." #. icon->forced_dock = 1; #: ../src/dock.c:2153 ../src/dock.c:2294 msgid "Dock Icon" msgstr "Docker l'icône" #: ../src/dock.c:3355 #, c-format msgid "Could not execute command \"%s\"" msgstr "L'exécution de la commande « %s » a échoué." #: ../src/dock.c:3447 msgid "Toggle Omnipresent" msgstr "Changer l'omniprésence" #: ../src/dock.c:3452 ../src/kwm.c:637 ../src/winmenu.c:420 #: ../src/winspector.c:1375 msgid "Omnipresent" msgstr "Omniprésente" #: ../src/dock.c:3466 msgid "Unselect All Icons" msgstr "Désélectionner les icônes" #: ../src/dock.c:3475 msgid "Keep Icons" msgstr "Figer les icônes" #: ../src/dock.c:3483 msgid "Move Icons To" msgstr "Déplacer les icônes vers" #: ../src/dock.c:3494 msgid "Remove Icons" msgstr "Supprimer les icônes" #: ../src/dock.c:3525 ../src/kwm.c:643 msgid "Bring Here" msgstr "Attirer sur ce bureau" #: ../src/dockedapp.c:150 #, c-format msgid "could not find icon %s, used in a docked application" msgstr "L'icône %s, utilisée dans une application dockée, est introuvable." #: ../src/dockedapp.c:230 #, c-format msgid "Could not open specified icon file: %s" msgstr "Impossible d'ouvrir l'icône « %s »." #: ../src/dockedapp.c:232 msgid "Ignore" msgstr "Ignorer" #: ../src/dockedapp.c:334 msgid "Start when Window Maker is started" msgstr "Lancer au démarrage de Window Maker" #: ../src/dockedapp.c:341 msgid "Lock (prevent accidental removal)" msgstr "Verrouiller (l'icône ne peut être enlevée)" #: ../src/dockedapp.c:345 msgid "Application path and arguments" msgstr "Chemin et arguments de l'application" #: ../src/dockedapp.c:358 msgid "Command for middle-click launch" msgstr "Commande du bouton central" #: ../src/dockedapp.c:372 #, c-format msgid "%s will be replaced with current selection" msgstr "%s sera remplacé par la sélection" #: ../src/dockedapp.c:377 msgid "Command for files dropped with DND" msgstr "Fichiers lâchés par glisser-déposer" #: ../src/dockedapp.c:391 #, c-format msgid "%d will be replaced with the file name" msgstr "%d sera remplacé par le nom du fichier" #: ../src/dockedapp.c:395 msgid "DND support was not compiled in" msgstr "Compilé sans le support glisser-déposer" #: ../src/dockedapp.c:400 msgid "Icon Image" msgstr "Icône" #: ../src/dockedapp.c:414 ../src/winspector.c:1513 msgid "Browse..." msgstr "Parcourir..." #: ../src/dockedapp.c:475 msgid "Docked Application Settings" msgstr "Paramètres de l'application dockée" #: ../src/framewin.c:647 ../src/framewin.c:742 ../src/menu.c:456 #: ../src/texture.c:594 #, c-format msgid "could not render texture: %s" msgstr "L'affichage de la texture %s a échoué." #: ../src/framewin.c:670 ../src/framewin.c:681 ../src/framewin.c:697 #: ../src/framewin.c:708 ../src/framewin.c:715 ../src/framewin.c:722 #: ../src/icon.c:350 ../src/menu.c:485 #, c-format msgid "error rendering image:%s" msgstr "Erreur lors de l'affichage de l'image « %s »." #: ../src/framewin.c:775 #, c-format msgid "error rendering image: %s" msgstr "Erreur lors de l'affichage de l'image « %s »." #: ../src/gnome.c:216 ../src/gnome.c:343 ../src/gnome.c:401 msgid "out of memory while updating GNOME hints" msgstr "" "Plus assez de mémoire pendant la mise à jour des extensions (hints) GNOME." #: ../src/icon.c:229 ../src/wdefaults.c:443 #, c-format msgid "error loading image file \"%s\": %s" msgstr "Erreur au chargement de l'image « %s ».: %s" #: ../src/icon.c:493 ../src/icon.c:502 #, c-format msgid "could not create directory %s" msgstr "La création du répertoire %s a échoué." #: ../src/icon.c:769 #, c-format msgid "could not find default icon \"%s\"" msgstr "L'icône par défaut « %s » est introuvable." #: ../src/icon.c:775 #, c-format msgid "could not load default icon \"%s\":%s" msgstr "Le chargement de l'icône par défaut « %s » a échoué : %s" #. #. * 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/kwm.c:633 ../src/winmenu.c:443 ../src/winmenu.c:585 msgid "Maximize" msgstr "Taille maximale" #: ../src/kwm.c:634 ../src/winmenu.c:580 msgid "Unmaximize" msgstr "Taille normale" #: ../src/kwm.c:635 ../src/winmenu.c:451 ../src/winmenu.c:571 msgid "Miniaturize" msgstr "Miniaturiser" #: ../src/kwm.c:636 ../src/winmenu.c:566 msgid "Deminiaturize" msgstr "Restaurer" #: ../src/kwm.c:638 msgid "Not Omnipresent" msgstr "Ici seulement" #: ../src/kwm.c:639 msgid "Move" msgstr "Déplacer" #: ../src/kwm.c:640 msgid "Resize" msgstr "Dimensionner" #. #. entry = wMenuAddCallback(menu, _("Select Shortcut"), NULL, NULL); #. wMenuEntrySetCascade(menu, entry, makeMakeShortcutMenu(scr)); #. #: ../src/kwm.c:641 ../src/rootmenu.c:248 ../src/winmenu.c:515 msgid "Close" msgstr "Fermer" #: ../src/kwm.c:642 ../src/winmenu.c:499 msgid "Move To" msgstr "Déplacer vers" #: ../src/kwm.c:1096 msgid "%a(Run Command,Type the command to run:)" msgstr "%a(Démarrer,Saisir la commande :)" #: ../src/main.c:222 msgid "failed to restart Window Maker." msgstr "Échec du redémarrage de Window Maker." #: ../src/main.c:225 #, c-format msgid "could not exec %s" msgstr "L'exécution de %s a échoué." #: ../src/main.c:271 msgid "Could not execute command: " msgstr "Échec à l'exécution de la commande : " #: ../src/main.c:428 #, c-format msgid "%s aborted.\n" msgstr "%s abandonné.\n" #: ../src/main.c:439 #, c-format msgid "Usage: %s [options]\n" msgstr "Usage : %s [options]\n" #: ../src/main.c:440 msgid "The Window Maker window manager for the X window system" msgstr "Le gestionnaire de fenêtres Window Maker pour X" #: ../src/main.c:442 msgid " -display host:dpy\tdisplay to use" msgstr " -display hôte:dpy\taffichage à utiliser" #: ../src/main.c:444 msgid " --no-cpp \t\tdisable preprocessing of configuration files" msgstr " --no-cpp \t\tsans pré-traitement des fichiers de configuration" #: ../src/main.c:446 msgid " --no-dock\t\tdo not open the application Dock" msgstr " --no-dock\t\tsans le Dock" #: ../src/main.c:447 msgid " --no-clip\t\tdo not open the workspace Clip" msgstr " --no-clip\t\tsans le Trombone" #: ../src/main.c:448 msgid " --no-autolaunch\tdo not autolaunch applications" msgstr "--no-autolaunch\tpas de démarrage automatique des applications" #: ../src/main.c:449 msgid " --dont-restore\t\tdo not restore saved session" msgstr " --dont-restore\t\tsans restaurer la session" #: ../src/main.c:451 msgid " --locale locale\tlocale to use" msgstr " --locale langue\t\tlangue à utiliser" #: ../src/main.c:453 msgid "" " --create-stdcmap\tcreate the standard colormap hint in PseudoColor visuals" msgstr " --create-stdcmap\tpalette de couleurs standard en mode PseudoColor" #: ../src/main.c:454 msgid " --visual-id visualid\tvisual id of visual to use" msgstr " --visual-id visualid\tidentifiant du mode graphique à utiliser" #: ../src/main.c:455 msgid " --static\t\tdo not update or save configurations" msgstr " --static\t\tni mise à jour ni sauvegarde de la configuration" #: ../src/main.c:456 msgid " --no-polling\t\tdo not periodically check for configuration updates" msgstr "" " --no-polling\t\tpas de recherche périodique des changements de configuration" #: ../src/main.c:458 msgid " --synchronous\t\tturn on synchronous display mode" msgstr " --synchronous\t\tutilise un affichage synchrone" #: ../src/main.c:460 msgid " --version\t\tprint version and exit" msgstr " --version\t\taffiche la version et s'arrête" #: ../src/main.c:461 msgid " --help\t\t\tshow this message" msgstr " --help\t\t\taffiche ce message" #: ../src/main.c:474 #, c-format msgid "" "could not find user GNUstep directory (%s).\n" "Make sure you have installed Window Maker correctly and run wmaker.inst" msgstr "" "Le répertoire GNUstep (%s) de l'utilisateur est introuvable.\n" "Assurez-vous d'avoir correctement installé Window Maker et exécuté wmaker." "inst." #: ../src/main.c:479 #, c-format msgid "could not find user GNUstep directory (%s)." msgstr "Le répertoire GNUstep (%s) de l'utilisateur est introuvable." #: ../src/main.c:482 msgid "" "There was an error while creating GNUstep directory, please make sure you " "have installed Window Maker correctly and run wmaker.inst" msgstr "" "Erreur lors de la création du répertoire GNUstep. Assurez-vous d'avoir " "correctement installé Window Maker et exécuté wmaker.inst." #: ../src/main.c:485 #, c-format msgid "%s directory created with default configuration." msgstr "Répertoire %s créé avec la configuration par défaut." #: ../src/main.c:505 ../src/main.c:510 #, c-format msgid "%s:could not execute initialization script" msgstr "%s : échec du script d'initialisation." #: ../src/main.c:528 ../src/main.c:533 #, c-format msgid "%s:could not execute exit script" msgstr "%s : échec du script de sortie." #: ../src/main.c:661 ../src/main.c:669 ../src/main.c:677 ../src/main.c:697 #, c-format msgid "too few arguments for %s" msgstr "Trop peu d'arguments pour %s." #: ../src/main.c:681 #, c-format msgid "bad value for visualid: \"%s\"" msgstr "Mauvaise valeur pour visualid : « %s »" #: ../src/main.c:705 #, c-format msgid "%s: invalid argument '%s'\n" msgstr "%s : argument « %s » invalide\n" #: ../src/main.c:706 #, c-format msgid "Try '%s --help' for more information\n" msgstr "Essayez « %s --help » pour plus d'informations\n" #: ../src/main.c:737 msgid "X server does not support locale" msgstr "Pas de gestion des langues dans le serveur X." #: ../src/main.c:741 msgid "cannot set locale modifiers" msgstr "Impossible de configurer X pour le support du français." #: ../src/main.c:757 #, c-format msgid "could not open display \"%s\"" msgstr "L'ouverture de l'affichage (display) %s a échoué." #: ../src/menu.c:1266 msgid "could not grab keyboard" msgstr "La réservation du clavier a échoué" #: ../src/menu.c:2607 #, c-format msgid "bad value in menus state info:%s" msgstr "Mauvaise valeur dans l'information %s sur l'état du menu." #: ../src/menureader.c:264 ../src/rootmenu.c:738 #, c-format msgid "%s:could not stat menu" msgstr "%s : échec de stat() pour le menu." #: ../src/menureader.c:341 ../src/menureader.c:380 #, c-format msgid "could not stat() menu file '%s'" msgstr "Échec de stat() pour le menu : %s" #: ../src/menureader.c:416 #, c-format msgid "could not find menu file '%s' referenced in WMRootMenu" msgstr "Le fichier de menu « %s » référencé dans WMRootMenu est introuvable." #: ../src/menureader.c:423 #, c-format msgid "could not find any usable menu files. Please check '%s'" msgstr "Aucun fichier de menu utilisable. Vérifiez « %s »." #: ../src/menureader.c:438 ../src/rootmenu.c:1673 #, c-format msgid "" "using default menu file \"%s\" as the menu referenced in WMRootMenu could " "not be found " msgstr "" "Le menu référencé dans WMRootMenu n'a pu être trouvé, il sera remplacé par " "le menu par défaut « %s »." #: ../src/menureader.c:457 #, c-format msgid "" "invalid content in menu file '%s'.\n" "It should either be a property list menu or the path to the file, enclosed " "in \"." msgstr "" "Le contenu du fichier de menu « %s » est incorrect.\n" "Il devrait contenir une liste de propriétés (property list) ou le chemin du " "fichier encadré par \"." #: ../src/misc.c:71 #, c-format msgid "could not define value for %s for cpp" msgstr "Impossible de définir la valeur %s pour cpp." #: ../src/misc.c:101 #, c-format msgid "could not get password entry for UID %i" msgstr "Le mot de passe de l'UID %i est introuvable." #: ../src/misc.c:158 #, c-format msgid "your machine is misconfigured. HOSTNAME is set to %s" msgstr "Votre machine est mal configurée. HOSTNAME a pour valeur %s." #: ../src/misc.c:164 #, c-format msgid "your machine is misconfigured. HOST is set to %s" msgstr "Votre machine est mal configurée. HOST a pour valeur %s." #: ../src/misc.c:656 msgid "Program Arguments" msgstr "Arguments du programme" #: ../src/misc.c:657 msgid "Enter command arguments:" msgstr "Entrez les arguments de la commande :" #: ../src/misc.c:750 msgid "unable to get dropped data from DND drop" msgstr "Impossible de lire le glisser-déposer." #: ../src/misc.c:758 msgid "error getting dropped data from DND drop" msgstr "Erreur de lecture du glisser-déposer." #: ../src/misc.c:764 msgid "out of memory while getting data from DND drop" msgstr "Plus assez de mémoire pendant la lecture du glisser-déposer." #: ../src/misc.c:809 ../src/misc.c:949 #, c-format msgid "out of memory during expansion of \"%s\"" msgstr "Plus assez de mémoire pendant l'interprétation de « %s »." #: ../src/misc.c:863 #, c-format msgid "out of memory during expansion of '%s' for command \"%s\"" msgstr "Plus assez de mémoire pour l'interprétation du « %s » dans la commande « %s »" #: ../src/misc.c:942 msgid "selection not available" msgstr "Sélection indisponible." #: ../src/misc.c:986 ../src/misc.c:992 #, c-format msgid "bad window name value in %s state info" msgstr "Nom de fenêtre incorrect dans les informations sur %s." #: ../src/misc.c:1249 msgid "could not send message to background image helper" msgstr "L'envoi de message au gestionnaire de fond d'écran a échoué." #: ../src/pixmap.c:235 #, c-format msgid "could not load mask bitmap file \"%s\". Won't use mask" msgstr "Le chargement du masque « %s » a échoué. Aucun masque ne sera utilisé." #: ../src/resources.c:44 #, c-format msgid "could not parse color \"%s\"" msgstr "L'analyse de la couleur « %s » a échoué." #: ../src/resources.c:48 #, c-format msgid "could not allocate color \"%s\"" msgstr "L'allocation de la couleur « %s » a échoué." #: ../src/rootmenu.c:196 ../src/rootmenu.c:198 msgid "Exit" msgstr "Quitter" #: ../src/rootmenu.c:197 msgid "Exit window manager?" msgstr "Quitter Window Maker ?" #: ../src/rootmenu.c:245 msgid "Close X session" msgstr "Fermer la session X" #: ../src/rootmenu.c:246 msgid "" "Close Window System session?\n" "Kill might close applications with unsaved data." msgstr "" "Fermer la session X-Window ?\n" "(Ceci fermera les applications sans enregistrer vos dernières modifications.)" #: ../src/rootmenu.c:261 msgid "Kill X session" msgstr "Terminer la session X" #: ../src/rootmenu.c:262 msgid "" "Kill Window System session?\n" "(all applications will be closed)" msgstr "" "Terminer la session X ?\n" "(Toutes les applications seront fermées.)" #: ../src/rootmenu.c:544 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\" for entry %s" msgstr "" "%s : description de raccourci clavier « %s » invalide pour l'entrée %s." #: ../src/rootmenu.c:552 #, c-format msgid "%s:invalid key in shortcut \"%s\" for entry %s" msgstr "%s : touche invalide dans le raccourci « %s » pour l'entrée %s." #: ../src/rootmenu.c:605 #, c-format msgid "%s: unmatched '\"' in menu file" msgstr "%s : « \" » manquant dans le fichier de menu." #: ../src/rootmenu.c:655 #, c-format msgid "%s: missing command" msgstr "%s : commande manquante." #: ../src/rootmenu.c:687 #, c-format msgid "invalid OPEN_MENU specification: %s" msgstr "Description de OPEN_MENU invalide : %s" #: ../src/rootmenu.c:746 #, c-format msgid "%s:could not stat menu:%s" msgstr "%s : échec de stat() pour le menu : %s" #: ../src/rootmenu.c:764 #, c-format msgid "too many parameters in OPEN_MENU: %s" msgstr "Trop de paramètres pour OPEN_MENU : %s" #: ../src/rootmenu.c:808 msgid "" "There are more than one WORKSPACE_MENU commands in the applications menu. " "Only one is allowed." msgstr "" "Il y a plus d'une déclaration WORKSPACE_MENU dans le menu Applications. Une " "seule est autorisée." #: ../src/rootmenu.c:842 msgid "" "There are more than one WINDOWS_MENU commands in the applications menu. Only " "one is allowed." msgstr "" "Il y a plus d'une déclaration WINDOW_MENU dans le menu Applications. Une " "seule est autorisée." #: ../src/rootmenu.c:847 msgid "Window List" msgstr "Liste des fenêtres" #: ../src/rootmenu.c:876 ../src/rootmenu.c:894 ../src/rootmenu.c:904 #, c-format msgid "%s:missing parameter for menu command \"%s\"" msgstr "%s : paramètre manquant pour la commande de menu « %s »." #: ../src/rootmenu.c:972 #, c-format msgid "%s:unknown command \"%s\" in menu config." msgstr "%s : commande « %s » inconnue dans le fichier du menu." #: ../src/rootmenu.c:980 #, c-format msgid "%s:can't add shortcut for entry \"%s\"" msgstr "%s : impossible d'ajouter le raccourci pour l'entrée « %s »." #: ../src/rootmenu.c:1117 #, c-format msgid "%s:maximal line size exceeded in menu config: %s" msgstr "%s : ligne trop longue dans la description du menu %s." #: ../src/rootmenu.c:1139 ../src/rootmenu.c:1232 ../src/rootmenu.c:1335 #, c-format msgid "%s:missing command in menu config: %s" msgstr "%s : commande manquante dans la description du menu %s." #: ../src/rootmenu.c:1169 #, c-format msgid "%s:syntax error in menu file:END declaration missing" msgstr "" "%s : erreur de syntaxe dans la description du menu, la déclaration END est " "manquante." #: ../src/rootmenu.c:1198 ../src/rootmenu.c:1299 msgid "could not make arguments for menu file preprocessor" msgstr "La création des arguments pour le pré-processeur a échoué." #: ../src/rootmenu.c:1205 ../src/rootmenu.c:1307 #, c-format msgid "%s:could not open/preprocess menu file" msgstr "%s : échec à l'ouverture ou au traitement du fichier de menu." #: ../src/rootmenu.c:1217 ../src/rootmenu.c:1320 #, c-format msgid "could not open menu file \"%s\": %s" msgstr "l'ouverture du fichier de menu \"%s\" a échoué: %s" #: ../src/rootmenu.c:1244 #, c-format msgid "%s:invalid menu file. MENU command is missing" msgstr "%s : fichier de menu invalide, la déclaration MENU est manquante." #: ../src/rootmenu.c:1253 msgid "error reading preprocessed menu data" msgstr "Erreur lors de la lecture du menu prétraité." #: ../src/rootmenu.c:1347 #, c-format msgid "%s:no title given for the root menu" msgstr "%s : le menu principal n'a pas de titre." #: ../src/rootmenu.c:1438 ../src/rootmenu.c:1511 ../src/rootmenu.c:1552 #, c-format msgid "out of memory while constructing directory menu %s" msgstr "Plus assez de mémoire pendant la création du sous-menu %s." #: ../src/rootmenu.c:1448 #, c-format msgid "%s:could not stat file \"%s\" in menu directory" msgstr "%s : échec de stat() sur le fichier « %s » dans le répertoire du menu." #: ../src/rootmenu.c:1606 msgid "Commands" msgstr "Commandes" #: ../src/rootmenu.c:1609 msgid "Restart" msgstr "Redémarrer" #: ../src/rootmenu.c:1610 msgid "Exit..." msgstr "Sortir..." #: ../src/rootmenu.c:1655 #, c-format msgid "could not find menu file \"%s\" referenced in WMRootMenu" msgstr "Le fichier de menu « %s » référencé dans WMRootMenu est introuvable." #: ../src/rootmenu.c:1662 #, c-format msgid "could not access menu \"%s\" referenced in WMRootMenu" msgstr "Le fichier de menu « %s » référencé dans WMRootMenu est inaccessible." #: ../src/rootmenu.c:1696 ../src/rootmenu.c:1772 #, c-format msgid "%s:format error in root menu configuration \"%s\"" msgstr "" "%s : erreur de syntaxe dans le fichier de configuration du menu principal « %" "s »." #: ../src/rootmenu.c:1860 msgid "" "The applications menu could not be loaded. Look at the console output for a " "detailed description of the errors." msgstr "" "Le menu Applications n'a pu être chargé. Regardez la console pour une " "description détaillée des erreurs." #: ../src/screen.c:708 #, c-format msgid "could not initialize graphics library context: %s" msgstr "L'initialisation de la bibliothèque graphique a échoué : %s" #: ../src/screen.c:736 msgid "could not initialize WINGs widget set" msgstr "L'initialisation de la bibliothèque WINGs a échoué." #: ../src/screen.c:1097 #, c-format msgid "could not save session state in %s" msgstr "La sauvegarde de la session dans %s a échoué." #: ../src/session.c:183 ../src/wdefaults.c:589 ../src/winspector.c:454 #, c-format msgid "can't convert \"%s\" to boolean" msgstr "Conversion de « %s » en booléen impossible." #: ../src/session.c:1023 msgid "out of memory while saving session state" msgstr "Plus assez de mémoire pendant le sauvegarde de session." #: ../src/session.c:1106 msgid "end of memory while saving session state" msgstr "Plus assez de mémoire pendant le sauvegarde de session." #. 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:1244 msgid "connection to the session manager was lost" msgstr "La connexion au gestionnaire de session est interrompue." #: ../src/stacking.c:79 msgid "could not get window list!!" msgstr "Impossible d'obtenir la liste des fenêtres !" #: ../src/startup.c:202 #, c-format msgid "internal X error: %s\n" msgstr "erreur interne X : %s\n" #: ../src/startup.c:260 #, c-format msgid "got signal %i (%s) - restarting\n" msgstr "Signal %i (%s) reçu - Redémarrage.\n" #: ../src/startup.c:262 #, c-format msgid "got signal %i - restarting\n" msgstr "Signal %i reçu - Redémarrage.\n" #: ../src/startup.c:272 #, c-format msgid "got signal %i (%s) - rereading defaults\n" msgstr "Signal %i (%s) reçu - Rechargement des paramètres par défaut.\n" #: ../src/startup.c:274 #, c-format msgid "got signal %i - rereading defaults\n" msgstr "Signal %i reçu - Rechargement des paramètres par défaut.\n" #: ../src/startup.c:284 #, c-format msgid "got signal %i (%s) - exiting...\n" msgstr "Signal %i (%s) reçu. Arrêt...\n" #: ../src/startup.c:286 #, c-format msgid "got signal %i - exiting...\n" msgstr "Signal %i reçu - Arrêt...\n" #: ../src/startup.c:329 #, c-format msgid "got signal %i (%s)\n" msgstr "Signal %i (%s) reçu.\n" #: ../src/startup.c:331 #, c-format msgid "got signal %i\n" msgstr "Signal %i reçu.\n" #: ../src/startup.c:342 msgid "" "crashed while trying to do some post-crash cleanup. Aborting immediatelly." msgstr "Incident pendant le nettoyage d'un incident. Arrêt immédiat." #. we try to restart Window Maker #: ../src/startup.c:406 msgid "trying to restart Window Maker..." msgstr "Redémarrage de Window Maker..." #: ../src/startup.c:411 msgid "trying to start alternate window manager..." msgstr "Démarrage d'un autre gestionnaire de fenêtres..." #: ../src/startup.c:417 msgid "failed to start alternate window manager. Aborting." msgstr "Impossible de démarrer un autre gestionnaire de fenêtres. Abandon." #: ../src/startup.c:894 #, c-format msgid "icon size is configured to %i, but it's too small. Using 16, instead\n" msgstr "" "La taille des icônes est configurée à %i mais c'est trop petit. La valeur " "utilisée sera 16.\n" #: ../src/startup.c:922 msgid "XKB is not supported. KbdModeLock is automatically disabled." msgstr "XKB n'est pas supporté. KbdModeLock est automatiquement désactivé." #: ../src/startup.c:941 msgid "it seems that there is already a window manager running" msgstr "Il semble qu'un gestionnaire de fenêtres soit déjà actif." #: ../src/startup.c:947 #, c-format msgid "could not manage screen %i" msgstr "Gestion de l'écran %i impossible." #: ../src/startup.c:1015 msgid "could not manage any screen" msgstr "Aucun écran ne peut être géré." #: ../src/switchmenu.c:137 msgid "Windows" msgstr "Fenêtres" #: ../src/texture.c:329 ../src/texture.c:371 #, c-format msgid "image file \"%s\" used as texture could not be found." msgstr "L'image « %s » utilisée comme texture est introuvable." #: ../src/texture.c:335 ../src/texture.c:377 #, c-format msgid "could not load texture pixmap \"%s\":%s" msgstr "Le chargement de la texture « %s » a échoué : %s." #: ../src/texture.c:437 #, c-format msgid "library \"%s\" cound not be opened." msgstr "Impossible d'ouvrir la bibliothèque « %s »." #: ../src/texture.c:446 #, c-format msgid "function \"%s\" not found in library \"%s\"" msgstr "La fonction « %s » est introuvable dans la bibliothèque « %s »." #: ../src/texture.c:453 msgid "function textures not supported on this system, sorry." msgstr "Les greffons de textures ne sont pas supportés par ce système, désolé." #: ../src/texture.c:598 msgid "could not allocate image buffer" msgstr "L'allocation du tampon d'image a échoué." #: ../src/wdefaults.c:437 #, c-format msgid "could not find icon file \"%s\"" msgstr "L'icône « %s » est introuvable." #: ../src/window.c:3028 ../src/window.c:3167 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 ou une touche similaire semble activée.\n" "Désactivez-la ou certaines actions du clavier et de la souris ne " "fonctionneront pas." #: ../src/winmenu.c:126 msgid "" "This will kill the application.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" "Ceci arrêtera l'application.\n" "Tout changement non sauvegardé sera perdu.\n" "Confirmez-vous ?" #: ../src/winmenu.c:274 ../src/winmenu.c:283 msgid "Set Shortcut" msgstr "Attribuer le raccourci" #: ../src/winmenu.c:361 ../src/winmenu.c:406 msgid "could not create submenu for window menu" msgstr "La création d'un sous-menu pour le menu Fenêtres a échoué." #: ../src/winmenu.c:410 msgid "Keep on top" msgstr "Toujours devant" #: ../src/winmenu.c:415 msgid "Keep at bottom" msgstr "Toujours derrière" #: ../src/winmenu.c:459 ../src/winmenu.c:602 msgid "Shade" msgstr "Enrouler" #: ../src/winmenu.c:475 msgid "Hide Others" msgstr "Masquer les autres" #: ../src/winmenu.c:483 msgid "Resize/Move" msgstr "Déplacer/Dimensionner" #: ../src/winmenu.c:491 msgid "Select" msgstr "Sélectionner" #: ../src/winmenu.c:504 msgid "Attributes..." msgstr "Attributs..." #: ../src/winmenu.c:506 msgid "Options" msgstr "Options" #: ../src/winmenu.c:597 msgid "Unshade" msgstr "Dérouler" #: ../src/winspector.c:387 #, c-format msgid "Could not find icon \"%s\" specified for this window" msgstr "L'icône « %s » spécifiée pour cette fenêtre est introuvable." #: ../src/winspector.c:404 #, c-format msgid "Could not open specified icon \"%s\":%s" msgstr "L'ouverture de l'icône « %s » a échoué : %s" #: ../src/winspector.c:1121 #, c-format msgid "Inspecting %s.%s" msgstr "Examen de %s.%s" #: ../src/winspector.c:1147 msgid "Click in the window you wish to inspect." msgstr "Cliquez sur la fenêtre que vous voulez examiner." #: ../src/winspector.c:1186 msgid "" "The configuration will apply to all\n" "windows that have their WM_CLASS\n" "property set to the above selected\n" "name, when saved." msgstr "" "Après enregistrement, la configuration\n" "s'appliquera à toutes les fenêtres\n" "dont la propriété WM_CLASS coïncidera\n" "avec le nom sélectionné ci-dessus." #: ../src/winspector.c:1215 msgid "Save" msgstr "Enregistrer" #: ../src/winspector.c:1223 msgid "Apply" msgstr "Appliquer" #: ../src/winspector.c:1229 msgid "Reload" msgstr "Annuler" #: ../src/winspector.c:1238 ../src/winspector.c:1248 msgid "Window Specification" msgstr "Fenêtres concernées" #: ../src/winspector.c:1239 msgid "Window Attributes" msgstr "Attributs de la fenêtre" #: ../src/winspector.c:1240 msgid "Advanced Options" msgstr "Options avancées" #: ../src/winspector.c:1241 msgid "Icon and Initial Workspace" msgstr "Icône et bureau initial" #: ../src/winspector.c:1242 msgid "Application Specific" msgstr "Attributs de l'application" #: ../src/winspector.c:1256 msgid "Defaults for all windows" msgstr "Toutes les fenêtres" #: ../src/winspector.c:1310 msgid "Select window" msgstr "Choisir une fenêtre" #: ../src/winspector.c:1324 msgid "Attributes" msgstr "Attributs" #: ../src/winspector.c:1335 msgid "Disable titlebar" msgstr "Sans barre de titre" #: ../src/winspector.c:1337 msgid "" "Remove the titlebar of this window.\n" "To access the window commands menu of a window\n" "without it's titlebar, press Control+Esc (or the\n" "equivalent shortcut, if you changed the default\n" "settings)." msgstr "" "Supprime la barre de titre de cette fenêtre.\n" "Pour afficher le menu d'une fenêtre sans barre\n" "de titre, appuyez sur Ctrl+Esc (ou le raccourci\n" "équivalent, si vous avez changé le raccourci par\n" "défaut)." #: ../src/winspector.c:1344 msgid "Disable resizebar" msgstr "Sans barre de redimensionnement" #: ../src/winspector.c:1346 msgid "Remove the resizebar of this window." msgstr "Supprime la barre de redimensionnement de cette fenêtre." #: ../src/winspector.c:1349 msgid "Disable close button" msgstr "Sans bouton de fermeture" #: ../src/winspector.c:1351 msgid "Remove the `close window' button of this window." msgstr "Supprime le bouton de fermeture de cette fenêtre." #: ../src/winspector.c:1354 msgid "Disable miniaturize button" msgstr "Sans bouton de miniaturisation" #: ../src/winspector.c:1356 msgid "Remove the `miniaturize window' button of the window." msgstr "Supprime le bouton de miniaturisation de cette fenêtre." #: ../src/winspector.c:1359 msgid "Disable border" msgstr "Sans bordure" #: ../src/winspector.c:1361 msgid "Remove the 1 pixel black border around the window." msgstr "Supprime la bordure noire d'un pixel qui entoure la fenêtre." #: ../src/winspector.c:1364 msgid "Keep on top (floating)" msgstr "Toujours devant" #: ../src/winspector.c:1366 msgid "" "Keep the window over other windows, not allowing\n" "them to cover it." msgstr "" "La fenêtre reste au premier plan, les autres fenêtres\n" "ne peuvent la recouvrir." #: ../src/winspector.c:1370 msgid "Keep at bottom (sunken)" msgstr "Toujours derrière" #: ../src/winspector.c:1372 msgid "Keep the window under all other windows." msgstr "" "La fenêtre reste à l'arrière plan, derrière\n" "toutes les autres." #: ../src/winspector.c:1377 msgid "Make window present in all workspaces." msgstr "La fenêtre est présente sur tous les bureaux." #: ../src/winspector.c:1380 msgid "Start miniaturized" msgstr "Lancer miniaturisée" #: ../src/winspector.c:1382 msgid "" "Make the window be automatically miniaturized when it's\n" "first shown." msgstr "" "La fenêtre est automatiquement miniaturisée\n" "quand elle apparaît pour la première fois." #: ../src/winspector.c:1386 msgid "Start maximized" msgstr "Lancer maximisée" #: ../src/winspector.c:1388 msgid "" "Make the window be automatically maximized when it's\n" "first shown." msgstr "" "La fenêtre est automatiquement maximisée\n" "quand elle apparaît pour la première fois." #: ../src/winspector.c:1392 msgid "Full screen maximization" msgstr "Plein écran" #: ../src/winspector.c:1394 msgid "" "Make the window use the whole screen space when it's\n" "maximized. The titlebar and resizebar will be moved\n" "to outside the screen." msgstr "" "La fenêtre utilise tout l'écran quand elle est maximisée.\n" "Les barres de titre et de redimensionnement seront déplacées\n" "en dehors de l'écran." #: ../src/winspector.c:1411 msgid "Advanced" msgstr "Avancées" #: ../src/winspector.c:1428 msgid "Do not bind keyboard shortcuts" msgstr "Sans raccourci clavier" #: ../src/winspector.c:1430 msgid "" "Do not bind keyboard shortcuts from Window Maker\n" "when this window is focused. This will allow the\n" "window to receive all key combinations regardless\n" "of your shortcut configuration." msgstr "" "Les raccourcis clavier de Window Maker ne sont pas\n" "gérés quand cette fenêtre est active. La fenêtre\n" "recevra toutes les combinaisons de touches quels\n" "que soient vos raccourcis." #: ../src/winspector.c:1436 msgid "Do not bind mouse clicks" msgstr "Sans raccourci souris" #: ../src/winspector.c:1438 msgid "" "Do not bind mouse actions, such as `Alt'+drag\n" "in the window (when Alt is the modifier you have\n" "configured)." msgstr "" "Les actions de la souris telles que Alt+glisser\n" "ne sont pas gérées par Window Maker dans cette\n" "fenêtre (si « Alt » est le modificateur configuré)." #: ../src/winspector.c:1443 msgid "Do not show in the window list" msgstr "Masquer dans le menu Fenêtres" #: ../src/winspector.c:1445 msgid "Do not list the window in the window list menu." msgstr "La fenêtre n'apparaît pas dans le menu Fenêtres." #: ../src/winspector.c:1448 msgid "Do not let it take focus" msgstr "Sans focus clavier" #: ../src/winspector.c:1450 msgid "" "Do not let the window take keyboard focus when you\n" "click on it." msgstr "" "La fenêtre ignore les événements du clavier\n" "quand vous cliquez dessus." #: ../src/winspector.c:1454 msgid "Keep inside screen" msgstr "Toujours à l'écran" #: ../src/winspector.c:1456 msgid "" "Do not allow the window to move itself completely\n" "outside the screen. For bug compatibility.\n" msgstr "" "Ne pas autoriser la fenêtre à sortir complètement de l'écran.\n" "Pour compatibilité avec certaines applications.\n" #: ../src/winspector.c:1460 msgid "Ignore 'Hide Others'" msgstr "Ignorer « Masquer les autres »" #: ../src/winspector.c:1462 msgid "" "Do not hide the window when issuing the\n" "`HideOthers' command." msgstr "" "La fenêtre ignore l'ordre « Masquer les autres »\n" "et reste visible." #: ../src/winspector.c:1466 msgid "Ignore 'Save Session'" msgstr "Ignorer « Enregistrer la session »" #: ../src/winspector.c:1468 msgid "" "Do not save the associated application in the\n" "session's state, so that it won't be restarted\n" "together with other applications when Window Maker\n" "starts." msgstr "" "Window Maker ignore cette application quand il enregistre\n" "la session. Elle ne sera pas lancée au prochain démarrage\n" "de Window Maker." #: ../src/winspector.c:1474 msgid "Emulate application icon" msgstr "Émuler l'icône-application" #: ../src/winspector.c:1476 msgid "" "Make this window act as an application that provides\n" "enough information to Window Maker for a dockable\n" "application icon to be created." msgstr "" "La fenêtre se comporte comme si elle donnait suffisamment\n" "d'informations à Window Maker pour la création d'une\n" "icône-application." #: ../src/winspector.c:1482 msgid "Disable language button" msgstr "Pas de bouton de langue" #: ../src/winspector.c:1484 msgid "Remove the `toggle language' button of the window." msgstr "Enlever le bouton de changement de langue de la fenêtre." #: ../src/winspector.c:1501 msgid "Miniwindow Image" msgstr "Image de la mini-fenêtre" #: ../src/winspector.c:1528 msgid "Icon filename:" msgstr "Nom du fichier :" #: ../src/winspector.c:1541 msgid "Ignore client supplied icon" msgstr "Ignorer l'icône fournie" #: ../src/winspector.c:1548 msgid "Initial Workspace" msgstr "Bureau initial" #: ../src/winspector.c:1550 msgid "The workspace to place the window when it's first shown." msgstr "Le bureau où la fenêtre apparaîtra." #: ../src/winspector.c:1556 msgid "Nowhere in particular" msgstr "N'importe où" #: ../src/winspector.c:1574 msgid "Application Attributes" msgstr "Attributs de l'application" #: ../src/winspector.c:1585 msgid "Start hidden" msgstr "Démarrer masquée" #: ../src/winspector.c:1587 msgid "Automatically hide application when it's started." msgstr "Dès qu'elle est lancée, la fenêtre est automatiquement masquée." #: ../src/winspector.c:1590 msgid "No application icon" msgstr "Pas d'icône-application" #: ../src/winspector.c:1592 msgid "" "Disable the application icon for the application.\n" "Note that you won't be able to dock it anymore,\n" "and any icons that are already docked will stop\n" "working correctly." msgstr "" "Désactive l'icône-application de l'application.\n" "Notez que vous ne pourrez plus la mettre dans le\n" "Dock et que les icônes déjà dans le Dock ne\n" "fonctionneront plus correctement." #: ../src/winspector.c:1598 msgid "Shared application icon" msgstr "Icône-application partagée" #: ../src/winspector.c:1600 msgid "" "Use a single shared application icon for all of\n" "the instances of this application.\n" msgstr "" "Une seule icône-application pour toutes les instances\n" "de cette application.\n" #: ../src/wmspec.c:277 msgid "out of memory while updating wm hints" msgstr "" "Plus assez de mémoire pendant la sauvegarde des extensions (hints) Window " "Maker." #: ../src/workspace.c:105 ../src/workspace.c:106 ../src/workspace.c:899 #, c-format msgid "Workspace %i" msgstr "Bureau %i" #: ../src/workspace.c:949 msgid "Workspaces" msgstr "Bureaux" #: ../src/workspace.c:951 msgid "could not create Workspace menu" msgstr "La création du menu Bureaux a échoué." #: ../src/workspace.c:958 msgid "New" msgstr "Nouveau" #: ../src/workspace.c:959 msgid "Destroy Last" msgstr "Détruire le dernier" WindowMaker-0.95.9/po/README0000644000175000017500000000640313431646201012267 00000000000000File Language Note Current Maintainer ------------------------------------------------------------------------------ ja.po Japanese 1 ABE Shige MANOME Tomonori Takeo Hashimoto pt.po Portuguese Eliphas Levy Theodoro de.po German Torsten Marek Bernd Eggert Matthias Warkus Guido Scholz es.po Spanish Quique Raul Benito Garcia ko.po Korean 1,2 Byeong-Chan Kim sv.po Swedish John Forgoil cs.po Czech 3 Jiri Hnidek gl.po Galician Xose Vazquez Perez fr.po French Bastien Nocera Jean-Francois BIGNOLLES Antoine Hulin it.po Italian Michele Campeotto ru.po Russian Alexey Vyskubov Michael Sobolev tr.po Turkish F. Kagan Gurkaynak fi.po Finnish Ville Hautamaki Ramin Miraftabi Tomi Kajala hr.po Croatian 3 Toni Bilic el.po Greek Nikolaos Papagrigoriou pl.po Polish Piotr Dembiski ro.po Romanian Andrei Vuta da.po Danish Birger Langkjer zh_TW.Big5.po Chinese Li Wei Jih zh_CN.po Chinese Wang Jian sk.po Slovak Jan 'judas' Tomka Milan Hromada bg.po Bulgarian Slavei Karadjov Anton Zinoviev hu.po Hungarian HORVATH Szabolcs et.po Estonian Ivar Smolin ms.po Malay Hasbullah Bin Pit (sebol) be.po Belarusian Ihar Viarheichyk ca.po Catalan Ernest Adrogu bs.po Bosnian Ahmet Mulalic hy.po Armenian Norayr Chilignaryan nl.po Dutch Alwin fy.po Frisian Alwin Some translations are based on previous translations by other people. The history of translations can be found in the po files. If you want to update a translation that's maintained by someone else please please please contact the original maintainer first. It's for your own good. Notes ----- 1. Multibyte character support must be enabled in WindowMaker. 2. WindowMaker must also be started from a terminal program that can display the messages in that language, like xterm that supports Korean characters. 3. Uses iso8859-2 character set. Notes: - if you update a translation of someone else, please contact the current maintainer, so that we don't have duplicate work. Also put a "history" log in the top of the file, like: # # Portuguese Message Catalog # # Version Maintainer # Original Joe Shmoe # 0.17.5 Joao da Silva # You may also want to translate the menu definition file. -- Alfredo Kojima WindowMaker-0.95.9/po/fy.po0000644000175000017500000016342213431646201012372 00000000000000# Translation into Western Frisian for Window Maker # Copyright (C) 2015-2016 Window Maker Developers Team # This file is distributed under the same license as the windowmaker package. # Original by Alwin , 2015. # msgid "" msgstr "" "Project-Id-Version: wmaker-0.95.7+\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-01-21 16:19+0100\n" "PO-Revision-Date: 2016-01-21 00:00+0000\n" "Last-Translator: Alwin \n" "Language-Team: Western Frisian\n" "Language: fy\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../src/actions.c:1067 #, c-format msgid "window \"%s\" has a severely broken WM_TRANSIENT_FOR hint" msgstr "finster \"%s\" hat in swier skansearre WM_TRANSIENT_FOR-hint" #: ../src/actions.c:1177 #, c-format msgid "creation of mini-preview failed for window \"%s\"" msgstr "miniatuer oanmeitsjen mislearre foar finster \"%s\"" #: ../src/appicon.c:539 ../src/dialog.c:583 ../src/dock.c:3370 #: ../src/dockedapp.c:171 ../src/main.c:292 ../src/rootmenu.c:1670 #: ../src/winspector.c:472 ../src/winspector.c:488 ../src/workspace.c:150 msgid "Error" msgstr "Flater" #: ../src/appicon.c:540 msgid "Could not open specified icon file" msgstr "Koe opjûn ikoanbestân net iepenje" #: ../src/appicon.c:541 ../src/dialog.c:428 ../src/dialog.c:489 #: ../src/dialog.c:583 ../src/dialog.c:994 ../src/dialog.c:1660 #: ../src/dock.c:452 ../src/dock.c:459 ../src/dock.c:506 ../src/dock.c:3370 #: ../src/dock.c:4501 ../src/dockedapp.c:172 ../src/dockedapp.c:345 #: ../src/main.c:292 ../src/rootmenu.c:1673 ../src/winspector.c:472 #: ../src/winspector.c:488 ../src/winspector.c:821 ../src/workspace.c:150 msgid "OK" msgstr "OK" #: ../src/appicon.c:571 ../src/dock.c:229 msgid "" " will be forcibly closed.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" " sil twongen ôfsletten wurde.\n" "Net-bewarre wizigingen sille ferlern gean.\n" "Befêstigje a.j.w." #: ../src/appicon.c:578 ../src/dock.c:247 ../src/winmenu.c:253 msgid "Kill Application" msgstr "Programma deadzje" #: ../src/appicon.c:579 ../src/dock.c:248 ../src/winmenu.c:256 msgid "Yes" msgstr "Ja" #: ../src/appicon.c:579 ../src/dock.c:248 ../src/winmenu.c:256 msgid "No" msgstr "Nee" #: ../src/appicon.c:604 ../src/dock.c:1278 ../src/dock.c:3551 msgid "Unhide Here" msgstr "Hjir weromsette" #: ../src/appicon.c:605 ../src/appicon.c:629 ../src/dock.c:1280 #: ../src/dock.c:1282 ../src/dock.c:3563 ../src/winmenu.c:88 msgid "Hide" msgstr "Ferbergje" #: ../src/appicon.c:606 ../src/dock.c:1276 ../src/winmenu.c:94 msgid "Launch" msgstr "Opstarte" #: ../src/appicon.c:607 msgid "Set Icon..." msgstr "Ikoan ynstelle..." #: ../src/appicon.c:608 ../src/dock.c:1286 ../src/dock.c:1288 #: ../src/dock.c:3581 ../src/rootmenu.c:233 ../src/winmenu.c:96 msgid "Kill" msgstr "Deadzje" #: ../src/appicon.c:627 ../src/dock.c:3561 msgid "Unhide" msgstr "Weromsette" #: ../src/appmenu.c:94 ../src/appmenu.c:110 ../src/appmenu.c:126 #: ../src/appmenu.c:136 ../src/appmenu.c:173 ../src/appmenu.c:195 #, c-format msgid "appmenu: bad menu entry \"%s\" in window %lx" msgstr "programmamenu: ferkearde menuyngong \"%s\" yn finster %lx" #: ../src/appmenu.c:98 #, c-format msgid "appmenu: menu command size exceeded in window %lx" msgstr "programmamenu: oer menukommandolingte gongen yn finster %lx" #: ../src/appmenu.c:144 ../src/appmenu.c:154 ../src/appmenu.c:187 #, c-format msgid "appmenu: out of memory creating menu for window %lx" msgstr "programmamenu: ûnthâldtekoart by menu oanmeitsjen foar finster %lx" #: ../src/appmenu.c:219 #, c-format msgid "appmenu: unknown version of WMMenu in window %lx: %s" msgstr "programmamenu: ûnbekende WMMenu-ferzje yn finster %lx: %s" #: ../src/defaults.c:881 #, c-format msgid "Domain %s (%s) of global defaults database is corrupted!" msgstr "Domein %s (%s) út algemiene ynstellingedatabase is skansearre!" #: ../src/defaults.c:885 #, c-format msgid "could not load domain %s from global defaults database" msgstr "koe domein %s net lade út algemiene ynstellingedatabase" #: ../src/defaults.c:930 ../src/defaults.c:944 #, c-format msgid "invalid global menu file %s" msgstr "ûnjildich algemien menubestân %s" #: ../src/defaults.c:979 ../src/defaults.c:1058 ../src/defaults.c:1097 #: ../src/defaults.c:1138 #, c-format msgid "Domain %s (%s) of defaults database is corrupted!" msgstr "Domein %s (%s) út ynstellingedatabase is skansearre!" #: ../src/defaults.c:983 ../src/defaults.c:1080 ../src/defaults.c:1124 #: ../src/defaults.c:1148 #, c-format msgid "could not load domain %s from user defaults database" msgstr "koe domein %s net lade út brûkers-ynstellingedatabase" #: ../src/defaults.c:1233 msgid "" "your configuration is using old syntax for Mini-Preview settings; consider " "running WPrefs.app to update" msgstr "" "jo konfiguraasje brûkt de âlde syntaks foar miniatuerynstellingen; fier " "WPrefs.app út om by te wurkjen" #. --------------------------- Local ----------------------- #: ../src/defaults.c:1342 ../src/defaults.c:1471 ../src/defaults.c:1566 #: ../src/defaults.c:1974 ../src/defaults.c:1990 ../src/defaults.c:2035 #: ../src/defaults.c:2084 ../src/defaults.c:2502 ../src/wdefaults.c:639 #: ../src/wdefaults.c:668 #, c-format msgid "Wrong option format for key \"%s\". Should be %s." msgstr "Ferkearde opsjefoarm foar 'key' \"%s\". Moat %s wêze." #: ../src/defaults.c:1344 ../src/defaults.c:1420 ../src/defaults.c:1448 #: ../src/defaults.c:1475 ../src/defaults.c:1487 ../src/defaults.c:1501 #: ../src/defaults.c:1515 ../src/defaults.c:1570 ../src/defaults.c:1582 #: ../src/defaults.c:1978 ../src/defaults.c:1995 ../src/defaults.c:2007 #: ../src/defaults.c:2040 ../src/defaults.c:2056 ../src/defaults.c:2089 #: ../src/defaults.c:2172 ../src/defaults.c:2507 ../src/defaults.c:2518 #, c-format msgid "using default \"%s\" instead" msgstr "brûkt standert \"%s\" yn plak dêrfan" #: ../src/defaults.c:1371 #, c-format msgid "wrong option value for key \"%s\"; got \"%s\", should be one of %s." msgstr "" "ferkearde opsjewearde foar 'key' \"%s\"; krige \"%s\", moat ien fan %s wêze." #: ../src/defaults.c:1416 #, c-format msgid "can't convert \"%s\" to boolean for key \"%s\"" msgstr "kin \"%s\" net omsette nei 'boolean' foar 'key' \"%s\"" #: ../src/defaults.c:1446 #, c-format msgid "can't convert \"%s\" to integer for key \"%s\"" msgstr "kin \"%s\" net omsette nei 'integer' foar 'key' \"%s\"" #: ../src/defaults.c:1483 #, c-format msgid "Incorrect number of elements in array for key \"%s\"." msgstr "Unkrekt oantal eleminten yn 'array' foar 'key' \"%s\"." #: ../src/defaults.c:1497 #, c-format msgid "Wrong value for key \"%s\". Should be Coordinate." msgstr "Ferkearde wearde foar 'key' \"%s\". Moat koördinaat wêze." #: ../src/defaults.c:1511 #, c-format msgid "can't convert array to integers for \"%s\"." msgstr "kin 'array' net omsette nei 'integers' foar \"%s\"." #: ../src/defaults.c:1688 ../src/defaults.c:1718 ../src/defaults.c:1734 #: ../src/defaults.c:1763 ../src/defaults.c:1785 ../src/defaults.c:1836 #: ../src/defaults.c:1875 ../src/defaults.c:1912 ../src/defaults.c:1928 #, c-format msgid "\"%s\" is not a valid color name" msgstr "\"%s\" is gjin jildige kleurnamme" #: ../src/defaults.c:1700 ../src/defaults.c:1751 msgid "bad number of arguments in gradient specification" msgstr "ferkeard oantal arguminten yn kleurferrinopjefte" #: ../src/defaults.c:1809 msgid "too few arguments in multicolor gradient specification" msgstr "te min arguminten yn mearkleureferrinopjefte" #: ../src/defaults.c:1901 msgid "bad number of arguments in textured gradient specification" msgstr "ferkeard oantal arguminten yn opjefte teksturearre kleurferrin" #: ../src/defaults.c:1944 #, c-format msgid "bad opacity value for tgradient texture \"%s\". Should be [0..255]" msgstr "" "ferkearde trochsichtichheidswearde tekst. kleurferrin \"%s\". Moat [0..255] " "wêze" #: ../src/defaults.c:1961 #, c-format msgid "invalid texture type %s" msgstr "ûnjildich tekstuertype %s" #: ../src/defaults.c:2003 #, c-format msgid "Error in texture specification for key \"%s\"" msgstr "Flater yn tekstueropjefte foar 'key' \"%s\"" #: ../src/defaults.c:2052 msgid "Wrong type for workspace background. Should be a texture type." msgstr "Ferkeard type foar wurkromte-eftergrûn. Moat in tekstuertype wêze." #: ../src/defaults.c:2102 #, c-format msgid "Wrong type for background of workspace %i. Should be a texture." msgstr "Ferkeard type foar eftergrûn fan wurkromte %i. Moat in tekstuer wêze." #: ../src/defaults.c:2143 msgid "could not load any usable font!!!" msgstr "koe gjin brûkber lettertype lade!!!" #: ../src/defaults.c:2168 #, c-format msgid "could not get color for key \"%s\"" msgstr "koe kleur net krije foar 'key' \"%s\"" #: ../src/defaults.c:2224 ../src/rootmenu.c:470 #, c-format msgid "%s: invalid key modifier \"%s\"" msgstr "%s: ûnjildige toetsmodifikator \"%s\"" #: ../src/defaults.c:2236 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\"" msgstr "%s:ûnjildige fluchtoetsopjefte \"%s\"" #: ../src/defaults.c:2242 #, c-format msgid "%s:invalid key in shortcut \"%s\"" msgstr "%s:ûnjildige toets yn fluchkeppeling \"%s\"" #: ../src/defaults.c:2267 #, c-format msgid "%s: modifier key %s is not valid" msgstr "%s: modifikatortoets %s is net jildich" #: ../src/defaults.c:2374 #, c-format msgid "failed to open bitmap file \"%s\"" msgstr "iepenjen bitmapbestân \"%s\" mislearre" #: ../src/defaults.c:2377 #, c-format msgid "\"%s\" is not a valid bitmap file" msgstr "\"%s\" is gjin jildich bitmapbestân" #: ../src/defaults.c:2380 #, c-format msgid "out of memory reading bitmap file \"%s\"" msgstr "ûnthâldtekoart by ynlêzen bitmapbestân \"%s\"" #: ../src/defaults.c:2418 ../src/defaults.c:2451 msgid "bad number of arguments in cursor specification" msgstr "ferkeard oantal arguminten yn kursoropjefte" #: ../src/defaults.c:2434 #, c-format msgid "unknown builtin cursor name \"%s\"" msgstr "ûnbekende ynboude kursornamme \"%s\"" #: ../src/defaults.c:2461 ../src/defaults.c:2473 #, c-format msgid "could not find cursor bitmap file \"%s\"" msgstr "koe kursorbitmapbestân \"%s\" net fine" #: ../src/defaults.c:2514 #, c-format msgid "Error in cursor specification for key \"%s\"" msgstr "Flater yn kursoropjefte foar 'key' \"%s\"" #: ../src/defaults.c:2639 msgid "could not render texture for icon background" msgstr "koe tekstuer foar ikoaneftergrûn net werjaan" #: ../src/defaults.c:3115 #, c-format msgid "Invalid arguments for background \"%s\"" msgstr "Unjildige arguminten foar eftergrûn \"%s\"" #: ../src/defaults.c:3352 ../src/defaults.c:3421 #, c-format msgid "Invalid arguments for option \"%s\"" msgstr "Unjildige arguminten foar opsje \"%s\"" #: ../src/defaults.c:3358 ../src/defaults.c:3427 #, c-format msgid "Could not find image \"%s\" for option \"%s\"" msgstr "Koe ôfbylding \"%s\" foar opsje \"%s\" net fine" #: ../src/defaults.c:3363 ../src/defaults.c:3435 #, c-format msgid "Could not load image \"%s\" for option \"%s\"" msgstr "Koe ôfbylding \"%s\" foar opsje \"%s\" net lade" #: ../src/defaults.c:3373 msgid "Invalid split sizes for switch panel back image." msgstr "Unjildige dielôfmjittingen foar efterôfbylding skeakelpaniel." #: ../src/defaults.c:3442 #, c-format msgid "Invalid number of arguments for option \"%s\"" msgstr "Unjildich oantal arguminten foar opsje \"%s\"" #: ../src/defaults.c:3458 #, c-format msgid "Value for option \"%s\" must be an array of 7 strings" msgstr "Wearde foar opsje \"%s\" moat in 'array' fan 7 'strings' wêze" #: ../src/defaults.c:3472 #, c-format msgid "Invalid argument for option \"%s\" item %d" msgstr "Unjildich argumint foar opsje \"%s\" item %d" #: ../src/dialog.c:131 msgid "Save workspace state" msgstr "Wurkromtesteat bewarje" #: ../src/dialog.c:428 ../src/dialog.c:489 ../src/dialog.c:1001 #: ../src/dock.c:506 ../src/dock.c:4501 ../src/dockedapp.c:350 #: ../src/rootmenu.c:190 ../src/rootmenu.c:233 msgid "Cancel" msgstr "Annulearje" #: ../src/dialog.c:581 #, c-format msgid "" "Could not open directory \"%s\":\n" "%s" msgstr "" "Koe map \"%s\" net iepenje:\n" "%s" #: ../src/dialog.c:597 #, c-format msgid "full path for file \"%s\" in \"%s\" is longer than %d bytes, skipped" msgstr "" "folslein paad foar bestân \"%s\" yn \"%s\" is langer as %d byte, oerslein" #: ../src/dialog.c:631 msgid "Could not load image file " msgstr "Laden mislearre fan ôfbyldingsbestân " #: ../src/dialog.c:928 msgid "Directories" msgstr "Mappen" #: ../src/dialog.c:937 msgid "Icons" msgstr "Ikoanen" #: ../src/dialog.c:970 msgid "Preview" msgstr "Foarbyld" #: ../src/dialog.c:983 msgid "File Name:" msgstr "Bestânsnamme:" #: ../src/dialog.c:1007 msgid "Choose File" msgstr "Kies bestân" #: ../src/dialog.c:1024 msgid "Icon Chooser" msgstr "Ikoankiezer" #: ../src/dialog.c:1235 msgid "Window Manager for X" msgstr "Finsterbehearder foar X" #: ../src/dialog.c:1237 #, c-format msgid "Version %s" msgstr "Ferzje %s" #: ../src/dialog.c:1258 #, c-format msgid "Using visual 0x%x: %s %ibpp " msgstr "Brûkt visual 0x%x: %s %i bpp " #: ../src/dialog.c:1265 msgid "(32 thousand colors)\n" msgstr "(32 tûzen kleuren)\n" #: ../src/dialog.c:1268 msgid "(64 thousand colors)\n" msgstr "(64 tûzen kleuren)\n" #: ../src/dialog.c:1272 msgid "(16 million colors)\n" msgstr "(16 miljoen kleuren)\n" #: ../src/dialog.c:1275 #, c-format msgid "(%d colors)\n" msgstr "(%d kleuren)\n" #: ../src/dialog.c:1285 #, c-format msgid "Total memory allocated: %i kB (in use: %i kB, %d free chunks).\n" msgstr "Tawiisd ûnthâld: %i kB (brûkt: %i kB, %d blok frij).\n" #: ../src/dialog.c:1287 #, c-format msgid "Total memory allocated: %i kB (in use: %i kB).\n" msgstr "Totaal tawiisd ûnthâld: %i kB (brûkt: %i kB).\n" #: ../src/dialog.c:1305 msgid "Image formats: " msgstr "Ofb.foarmen: " #: ../src/dialog.c:1315 msgid "" "\n" "Additional support for: " msgstr "" "\n" "Oanfoljende stipe: " #: ../src/dialog.c:1331 ../src/dialog.c:1344 msgid "\n" msgstr "\n" #: ../src/dialog.c:1333 msgid "Solaris " msgstr "Solaris " #: ../src/dialog.c:1335 msgid "Xinerama: " msgstr "Xinerama: " #: ../src/dialog.c:1338 #, c-format msgid "%d head(s) found." msgstr "%d kop(pen) fûn." #: ../src/dialog.c:1347 msgid "supported" msgstr "stipe" #: ../src/dialog.c:1349 msgid "unsupported" msgstr "net stipe" #: ../src/dialog.c:1375 msgid "Info" msgstr "Ynfo" #: ../src/dialog.c:1450 msgid "" " Window Maker 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.\n" "\n" " Window Maker 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.\n" "\n" " You should have received a copy of the GNU General Public License along " "with this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin Street, Fifth Floor, Boston, MA02110-1301 USA." msgstr "" "Window Maker is frije software; jo meie it werdistribuearje en/of wizigje " "ûnder de betingsten fan 'e GNU Algemiene Publike Lisinsje sa as publisearre " "troch de Free Software Foundation; ûnder ferzje 2 fan 'e Lisinsje, of (nei " "jo kar) elke lettere ferzje.\n" "\n" "Window Maker is distribuearre yn 'e hoop dat it nuttich wêze sil, mar SUNDER " "WATFOAR GARANSJE; sels sûnder de ymplisite garânsjes dy't GEBRUKLIK YN 'E " "HANNEL BINNE of foar BRUKBERENS FOAR IN SPESIFYK DOEL. Sjoch de GNU " "Algemiene Publike Lisinsje foar mear details.\n" "\n" "Jo heare in kopy fan 'e GNU Algemiene Publike Lisinsje ûntfongen te hawwen " "tegearre mei dit programma; as dat net it gefal is, skriuw nei de Free " "Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, " "MA02110-1301 USA." #: ../src/dialog.c:1470 msgid "Legal" msgstr "Juridyske ynfo" #: ../src/dialog.c:1586 ../src/monitor.c:56 msgid "cannot open connection for crashing dialog panel. Aborting." msgstr "kin ferbining foar crashdialoochpaniel net iepenje. Ofbrekke." #: ../src/dialog.c:1614 msgid "Fatal error" msgstr "Unwerstelbere flater" #: ../src/dialog.c:1624 #, c-format msgid "Window Maker received signal %i." msgstr "Window Maker ûntfong sinjaal %i." #. Comment for the PO file: the %s is an email address #: ../src/dialog.c:1632 #, c-format msgid "" " This fatal error occurred probably due to a bug. Please fill the included " "BUGFORM and report it to %s." msgstr "" " Dizze ûnwerstelbere flater trede mooglik op troch in bug. Folje a.j.w. " "bygeand BUGFORM yn, en rapportearje it oan %s." #: ../src/dialog.c:1641 msgid "What do you want to do now?" msgstr "Wat wolle jo no dwaan?" #: ../src/dialog.c:1647 msgid "Select action" msgstr "Aksje selektearje" #: ../src/dialog.c:1648 msgid "Abort and leave a core file" msgstr "Ofbrekke en ûnthâlddump efterlitte" #: ../src/dialog.c:1649 msgid "Restart Window Maker" msgstr "Window Maker werstarte" #: ../src/dialog.c:1650 msgid "Start alternate window manager" msgstr "Oare finsterbehearder starte" #: ../src/dock.c:181 ../src/menu.c:1774 #, c-format msgid "Type the name for workspace %i:" msgstr "Typ de namme foar wurkromte %i:" #: ../src/dock.c:182 ../src/dock.c:1242 ../src/dock.c:1244 ../src/dock.c:3463 #: ../src/menu.c:1778 msgid "Rename Workspace" msgstr "Wurkromte omneame" #: ../src/dock.c:447 ../src/dock.c:454 ../src/winspector.c:821 msgid "Warning" msgstr "Warskôging" #: ../src/dock.c:448 msgid "" "Some icons cannot be made omnipresent. Please make sure that no other icon " "is docked in the same positions on the other workspaces and the Clip is not " "full in some workspace." msgstr "" "Sommige ikoanen kinne net rûnombywêzich makke wurde. Soargje a.j.w. derfoar, " "dat gjin oar ikoan dokt is op deselde plakken yn 'e oare wurkromten, en de " "Klip net fol is yn hokker wurkromte ek." #: ../src/dock.c:455 msgid "" "Icon cannot be made omnipresent. Please make sure that no other icon is " "docked in the same position on the other workspaces and the Clip is not full " "in some workspace." msgstr "" "Ikoan kin net rûnombywêzich makke wurde. Soargje a.j.w. derfoar, dat gjin " "oar ikoan dokt is op deselde plak yn 'e oare wurkromten, en de Klip net fol " "is yn hokker wurkromte ek." #: ../src/dock.c:504 msgid "Workspace Clip" msgstr "Wurkromteklip" #: ../src/dock.c:504 ../src/dock.c:4499 msgid "Drawer" msgstr "Laad" #: ../src/dock.c:505 msgid "All selected icons will be removed!" msgstr "Alle selektearre ikoanen sille ferwidere wurde!" #. can be: Unselect all icons #: ../src/dock.c:547 ../src/dock.c:1256 ../src/dock.c:1258 ../src/dock.c:3501 msgid "Keep Icon" msgstr "Ikoan behâlde" #: ../src/dock.c:548 ../src/dock.c:2151 ../src/dock.c:2293 msgid "Type the command used to launch the application" msgstr "Typ it brûkte programmaopstartkommando" #: ../src/dock.c:940 #, c-format msgid "could not launch application %s" msgstr "koe programma %s net opstarte" #: ../src/dock.c:986 msgid "could not create workspace submenu for Clip menu" msgstr "koe wurkromtesubmenu net oanmeitsje foar klipmenu" #: ../src/dock.c:1043 msgid "could not create options submenu for Clip menu" msgstr "koe opsjesubmenu net oanmeitsje foar klipmenu" #: ../src/dock.c:1047 ../src/dock.c:1194 msgid "Keep on Top" msgstr "Boppe-op hâlde" #: ../src/dock.c:1052 msgid "Collapsed" msgstr "Ynskood" #: ../src/dock.c:1057 msgid "Autocollapse" msgstr "Fansels skowe" #: ../src/dock.c:1062 msgid "Autoraise" msgstr "Fansels ferheegje" #: ../src/dock.c:1067 msgid "Autoattract Icons" msgstr "Fansels ikoanen oanlûke" #: ../src/dock.c:1182 msgid "could not create options submenu for dock position menu" msgstr "koe opsjesubmenu net oanmeitsje foar dokposysjemenu" #: ../src/dock.c:1186 msgid "Normal" msgstr "Normaal" #: ../src/dock.c:1190 msgid "Auto raise & lower" msgstr "Fansels ferheegje & ferleegje" #: ../src/dock.c:1218 msgid "Dock position" msgstr "Dokposysje" #: ../src/dock.c:1224 msgid "Add a drawer" msgstr "Laad tafoegje" #: ../src/dock.c:1228 msgid "Clip Options" msgstr "Klipopsjes" #. if (type == WM_DRAWER) #: ../src/dock.c:1230 msgid "Drawer options" msgstr "Laadopsjes" #: ../src/dock.c:1247 msgid "Selected" msgstr "Selektearre" #: ../src/dock.c:1252 ../src/dock.c:1254 ../src/dock.c:3491 msgid "Select All Icons" msgstr "Alle ikoanen selektearje" #: ../src/dock.c:1261 ../src/dock.c:1263 ../src/dock.c:3511 msgid "Move Icon To" msgstr "Ikoan ferpleatse nei" #: ../src/dock.c:1269 ../src/dock.c:1271 ../src/dock.c:3525 msgid "Remove Icon" msgstr "Ikoan ferwiderje" #. can be: Remove Icons #: ../src/dock.c:1273 msgid "Attract Icons" msgstr "Ikoanen oanlûke" #. can be: Unhide #: ../src/dock.c:1284 msgid "Settings..." msgstr "Ynstellingen..." #: ../src/dock.c:1632 ../src/dock.c:1720 #, c-format msgid "bad value in docked icon state info %s" msgstr "ferkearde wearde yn steatynfo dokt ikoan %s" #: ../src/dock.c:1743 #, c-format msgid "bad value in dock state info:%s" msgstr "ferkearde wearde yn steatynfo Dok:%s" #: ../src/dock.c:1942 msgid "there are too many icons stored in dock. Ignoring what doesn't fit" msgstr "der binne te folle ikoanen bewarre yn Dok. Negearret wat net past" #. icon->forced_dock = 1; #: ../src/dock.c:2150 ../src/dock.c:2292 msgid "Dock Icon" msgstr "Dokikoan" #: ../src/dock.c:3368 #, c-format msgid "Could not execute command \"%s\"" msgstr "Koe kommando \"%s\" net útfiere" #: ../src/dock.c:3469 msgid "Toggle Omnipresent" msgstr "Rûnombywêzich yn-/útskeakelje" #: ../src/dock.c:3474 ../src/winmenu.c:115 ../src/winspector.c:96 msgid "Omnipresent" msgstr "Rûnombywêzich" #: ../src/dock.c:3489 msgid "Unselect All Icons" msgstr "Alle ikoanen deselektearje" #: ../src/dock.c:3499 msgid "Keep Icons" msgstr "Ikoanen behâlde" #: ../src/dock.c:3509 msgid "Move Icons To" msgstr "Ikoanen ferpleatse nei" #: ../src/dock.c:3523 msgid "Remove Icons" msgstr "Ikoanen ferwiderje" #: ../src/dock.c:3553 msgid "Bring Here" msgstr "Hjir bringe" #: ../src/dock.c:3577 msgid "Remove drawer" msgstr "Laad ferwiderje" #: ../src/dock.c:4500 msgid "All icons in this drawer will be detached!" msgstr "Alle ikoanen yn dizze laad sille losmakke wurde!" #: ../src/dock.c:4885 msgid "there are too many icons stored in drawer. Ignoring what doesn't fit" msgstr "der binne te folle ikoanen bewarre yn laad. Negearret wat net past" #: ../src/dockedapp.c:94 #, c-format msgid "could not find icon %s, used in a docked application" msgstr "koe ikoan %s, brûkt yn in dokt programma, net fine" #: ../src/dockedapp.c:170 #, c-format msgid "Could not open specified icon file: %s" msgstr "Koe opjûn ikoanbestân net iepenje: %s" #: ../src/dockedapp.c:172 msgid "Ignore" msgstr "Negearje" #: ../src/dockedapp.c:264 msgid "Start when Window Maker is started" msgstr "Starte as Window Maker start wurdt" #: ../src/dockedapp.c:269 msgid "Lock (prevent accidental removal)" msgstr "Beskoattelje (komt b.û. ferwiderjen foar)" #: ../src/dockedapp.c:273 msgid "Application path and arguments" msgstr "Programmapaad en arguminten" #: ../src/dockedapp.c:284 msgid "Command for middle-click launch" msgstr "Kommando foar opstarten mei middenklik" #: ../src/dockedapp.c:296 #, c-format msgid "%s will be replaced with current selection" msgstr "%s wurdt ferfongen troch aktuele seleksje" #: ../src/dockedapp.c:300 msgid "Command for dragged and dropped files" msgstr "Kommando foar fersleepte bestannen" #: ../src/dockedapp.c:312 #, c-format msgid "%d will be replaced with the file name" msgstr "%d wurdt ferfongen troch de bestânsnamme" #: ../src/dockedapp.c:315 msgid "XDnD support was not compiled in" msgstr "XDnD-stipe is net ynkompilearre" #: ../src/dockedapp.c:323 msgid "Icon Image" msgstr "Ikoanôfbylding" #: ../src/dockedapp.c:334 ../src/winspector.c:1383 msgid "Browse..." msgstr "Blêdzje..." #: ../src/dockedapp.c:392 msgid "Docked Application Settings" msgstr "Ynstellingen dokt programma" #: ../src/event.c:328 #, c-format msgid "read problem when trying to get INotify event: %s" msgstr "Ynlêsprobleem by probearjen 'INotify event' te krijen: %s" #: ../src/event.c:341 msgid "" "the defaults database has been deleted! Restart Window Maker to create the " "database with the default settings" msgstr "" "de ynstellingedatabase is ferwidere! Werstart Window Maker om 'e database " "oan te meitsjen mei de standertynstellingen" #: ../src/event.c:350 msgid "" "the unit containing the defaults database has been unmounted. Setting --" "static mode. Any changes will not be saved." msgstr "" "de ienheid mei de ynstellingedatabase is ôfkeppele. Stelt '--static'-modus " "yn. Wizigingen sille net bewarre wurde." #: ../src/event.c:361 msgid "Inotify: Reading config files in defaults database." msgstr "Inotify: Ynlêze konfiguraasjebestannen út ynstellingedatabase." #. an error has occurred #: ../src/event.c:412 msgid "" "select failed. The inotify instance will be closed. Changes to the defaults " "database will require a restart to take effect." msgstr "" "selektearjen mislearre. It 'Inotify'-eksimplaar sil ôfsletten wurde. " "Wizigingen yn 'e ynstellingedatabase sille in werstart fereaskje om te " "wurkjen." #: ../src/event.c:1013 msgid "Got Reconfigure command" msgstr "Krige kommando 'werkonfigurearje'" #: ../src/event.c:1016 #, c-format msgid "Got unknown command %s" msgstr "Krige ûnbekend kommando %s" #: ../src/event.c:1828 #, c-format msgid "exec %A(Run,Type command to run:)" msgstr "exec %A(Utfiere,Typ út te fieren kommando:)" #: ../src/event.c:2006 msgid "another window manager is replacing us!" msgstr "in oare finsterbehearder ferfangt ús!" #: ../src/framewin.c:660 ../src/framewin.c:750 ../src/menu.c:405 #: ../src/texture.c:454 #, c-format msgid "could not render texture: %s" msgstr "koe tekstuer net werjaan: %s" #: ../src/framewin.c:683 ../src/framewin.c:693 ../src/framewin.c:709 #: ../src/framewin.c:720 ../src/framewin.c:727 ../src/framewin.c:733 #: ../src/icon.c:311 ../src/menu.c:432 #, c-format msgid "error rendering image:%s" msgstr "flater by werjaan ôfbylding:%s" #: ../src/framewin.c:778 #, c-format msgid "error rendering image: %s" msgstr "flater by werjaan ôfbylding: %s" #: ../src/main.c:231 msgid "failed to restart Window Maker." msgstr "Window Maker werstarten mislearre." #: ../src/main.c:234 #, c-format msgid "could not exec %s" msgstr "koe kommando %s net útfiere" #: ../src/main.c:256 #, c-format msgid "the display name has an unexpected syntax: \"%s\"" msgstr "de skermnamme hat in ûnferwachte syntaks: \"%s\"" #: ../src/main.c:290 msgid "Could not execute command: " msgstr "Koe kommando net útfiere: " #: ../src/main.c:425 #, c-format msgid "%s aborted.\n" msgstr "%s ôfbrutsen.\n" #: ../src/main.c:434 #, c-format msgid "Usage: %s [options]\n" msgstr "Gebrûk: %s [opsjes]\n" #: ../src/main.c:435 msgid "The Window Maker window manager for the X window system" msgstr "De Window Maker-finsterbehearder foar X Window System" #: ../src/main.c:437 msgid " -display host:dpy\tdisplay to use" msgstr " -display host:dpy\tte brûken skerm" #: ../src/main.c:439 msgid " --replace\t\treplace running window manager" msgstr " --replace\t\trinnende finsterbehearder ferfange" #: ../src/main.c:441 msgid " --no-dock\t\tdo not open the application Dock" msgstr " --no-dock\t\tit programmadok net iepenje" #: ../src/main.c:442 msgid " --no-clip\t\tdo not open the workspace Clip" msgstr " --no-clip\t\tde wurkromteklip net iepenje" #: ../src/main.c:443 msgid " --no-autolaunch\tdo not autolaunch applications" msgstr " --no-autolaunch\tprogramma's net fansels opstarte" #: ../src/main.c:444 msgid " --no-drawer\t\tdisable drawers in the dock" msgstr " --no-drawer\t\tde laden yn it dok útskeakelje" #: ../src/main.c:445 msgid " --dont-restore\t\tdo not restore saved session" msgstr " --dont-restore\t\tbewarre sesje net fuortsette" #: ../src/main.c:447 msgid " --locale locale\tlocale to use" msgstr " --locale locale\tte brûken lokalisaasje" #: ../src/main.c:449 msgid " --visual-id visualid\tvisual id of visual to use" msgstr " --visual-id visualid\tte brûken 'visual id' foar kleurdjipte" #: ../src/main.c:450 msgid " --static\t\tdo not update or save configurations" msgstr " --static\t\tynstellingen net bywurkje of bewarje" #: ../src/main.c:452 msgid " --no-polling\t\tdo not periodically check for configuration updates" msgstr " --no-polling\t\tnet periodyk kontrolearje op bywurke ynstellingen" #: ../src/main.c:454 msgid " --global_defaults_path\tprint the path for default config and exit" msgstr "" " --global_defaults_path\tpaad foar standertynstellingen ôfdrukke, en ôfslute" #: ../src/main.c:455 msgid " --version\t\tprint version and exit" msgstr " --version\t\tferzje ôfdrukke, en ôfslute" #: ../src/main.c:456 msgid " --help\t\t\tshow this message" msgstr " --help\t\t\tdizze boadskip toane" #: ../src/main.c:466 #, c-format msgid "could not find user GNUstep directory (%s)." msgstr "koe brûkers-GNUstep-map (%s) net fine." #: ../src/main.c:469 msgid "" "There was an error while creating GNUstep directory, please make sure you " "have installed Window Maker correctly and run wmaker.inst" msgstr "" "Der trede in flater op by oanmeitsjen fan 'e GNUstep-map. Soargje a.j.w. " "derfoar dat jo Window Maker korrekt ynstallearre hawwe, en fier 'wmaker." "inst' út" #: ../src/main.c:472 #, c-format msgid "%s directory created with default configuration." msgstr "map %s oanmakke mei standertynstellingen." #: ../src/main.c:491 msgid "" "could not initialise an inotify instance. Changes to the defaults database " "will require a restart to take effect. Check your kernel!" msgstr "" "koe gjin 'inotify'-eksimplaar inisjalisearje. Wizigingen yn 'e " "ynstellingedatabase sille in werstart fereaskje om te wurkjen. Kontrolearje " "jo kernel!" #: ../src/main.c:502 #, c-format msgid "" "could not add an inotify watch on path %s. Changes to the defaults database " "will require a restart to take effect." msgstr "" "koe gjin 'inotify watch' tafoegje op paad %s. Wizigingen yn 'e " "ynstellingedatabase sille in werstart fereaskje om te wurkjen." #: ../src/main.c:525 #, c-format msgid "%s:could not execute initialization script" msgstr "%s:koe inisjalisearringsskript net útfiere" #: ../src/main.c:543 #, c-format msgid "%s:could not execute exit script" msgstr "%s:koe ôfslutingsskript net útfiere" #: ../src/main.c:589 ../src/main.c:670 ../src/main.c:677 ../src/main.c:684 #, c-format msgid "too few arguments for %s" msgstr "te min arguminten foar %s" #: ../src/main.c:638 #, c-format msgid "option \"%s\" is deprecated, please remove it from your script" msgstr "opsje \"%s\" wurdt ôfret, ferwiderje it a.j.w. út jo skript" #: ../src/main.c:688 #, c-format msgid "bad value for visualid: \"%s\"" msgstr "ferkearde wearde foar 'visualid': \"%s\"" #: ../src/main.c:697 msgid "" "your version of Window Maker was compiled with INotify support, so \"--no-" "polling\" has no effect" msgstr "" "jo ferzje fan Window Maker is kompilearre mei INotify-stipe, dat \"--no-" "polling\" hat gjin effekt" #: ../src/main.c:703 #, c-format msgid "%s: invalid argument '%s'\n" msgstr "%s: ûnjildich argumint '%s'\n" #: ../src/main.c:704 #, c-format msgid "Try '%s --help' for more information\n" msgstr "Probearje '%s --help' foar mear ynformaasje\n" #: ../src/main.c:747 msgid "X server does not support locale" msgstr "X-server stipet lokalisaasje net" #: ../src/main.c:751 msgid "cannot set locale modifiers" msgstr "kin lokalisaasjemodifikatoaren net ynstelle" #: ../src/main.c:767 #, c-format msgid "could not open display \"%s\"" msgstr "koe skerm \"%s\" net iepenje" #: ../src/menu.c:2366 #, c-format msgid "bad value in menus state info: %s" msgstr "ferkearde wearde yn staetynfo menu's: %s" #: ../src/misc.c:476 ../src/misc.c:481 msgid "Program Arguments" msgstr "Programma-arguminten" #: ../src/misc.c:477 ../src/misc.c:482 msgid "Enter command arguments:" msgstr "Fier kommandoarguminten yn:" #: ../src/misc.c:523 #, c-format msgid "out of memory during expansion of \"%s\"" msgstr "ûnthâldtekoart by útwurkjen fan \"%s\"" #: ../src/misc.c:576 ../src/misc.c:593 ../src/misc.c:610 ../src/misc.c:633 #: ../src/misc.c:654 #, c-format msgid "out of memory during expansion of '%s' for command \"%s\"" msgstr "ûnthâldtekoart by útwurkjen fan '%s' foar kommando \"%s\"" #: ../src/misc.c:647 msgid "selection not available" msgstr "seleksje net beskikber" #: ../src/misc.c:689 ../src/misc.c:695 #, c-format msgid "bad window name value in %s state info" msgstr "ferkearde finsternammewearde yn steatynfo %s" #: ../src/misc.c:922 ../src/misc.c:929 ../src/misc.c:945 #, c-format msgid "%s failed, can't set workspace specific background image (%s)" msgstr "" "%s mislearre, kin wurkromtespesifike eftergrûnôfbylding (%s) net ynstelle" #: ../src/misc.c:957 #, c-format msgid "could not execute \"%s\": %s" msgstr "koe \"%s\" net útfiere: %s" #: ../src/misc.c:965 #, c-format msgid "" "could not set close-on-exec flag for bg_helper's communication file handle " "(%s)" msgstr "" #: ../src/misc.c:1005 msgid "could not send message to background image helper" msgstr "koe berjocht nei eftergrûnôfbyldingshelper net ferstjoere" #: ../src/monitor.c:63 msgid "trying to start alternate window manager..." msgstr "probearret oare finsterbehearder te starten..." #: ../src/monitor.c:69 msgid "failed to start alternate window manager. Aborting." msgstr "starten oare finsterbehearder mislearre. Ofbrekke." #: ../src/monitor.c:98 ../src/monitor.c:101 msgid "Error respawning Window Maker" msgstr "Flater by opnij starten Window Maker" #: ../src/monitor.c:108 msgid "Error during monitoring of Window Maker process." msgstr "Flater by tafersjoch op Window Maker-proses." #: ../src/monitor.c:133 #, c-format msgid "Window Maker exited due to a crash (signal %i) and will be restarted." msgstr "" "Window Maker sleat ôf troch in crash (sinjaal %i) en sil werstart wurde." #. #. * 1st %s is a function name #. * 2nd %s is an email address #. * 3rd %s is the name of the operating system #. #: ../src/osdep_stub.c:23 #, c-format msgid "" "%s is not implemented on this platform; tell %s you are running %s release " "%s version %s" msgstr "" "%s is net ymplemintearre op dit platfoarm; meld %s dat jo %s, útjefte %s, " "ferzje %s brûke" #: ../src/resources.c:41 #, c-format msgid "could not parse color \"%s\"" msgstr "koe kleur \"%s\" net ferwurkje" #: ../src/resources.c:45 #, c-format msgid "could not allocate color \"%s\"" msgstr "koe kleur \"%s\" net tawize" #: ../src/rootmenu.c:189 ../src/rootmenu.c:190 msgid "Exit" msgstr "Ofslute" #: ../src/rootmenu.c:190 msgid "Exit window manager?" msgstr "Finsterbehearder ôfslute?" #: ../src/rootmenu.c:231 msgid "Kill X session" msgstr "X-sesje deadzje" #: ../src/rootmenu.c:232 msgid "" "Kill Window System session?\n" "(all applications will be closed)" msgstr "" "Deadzje Window System-sesje?\n" "(Alle programma's sille ôfsletten wurde.)" #: ../src/rootmenu.c:483 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\" for entry %s" msgstr "%s:ûnjildige fluchtoetsopjefte \"%s\" foar yngong %s" #: ../src/rootmenu.c:491 #, c-format msgid "%s:invalid key in shortcut \"%s\" for entry %s" msgstr "%s:ûnjildige toets yn fluchkeppeling \"%s\" foar yngong %s" #: ../src/rootmenu.c:525 #, c-format msgid "%s: unmatched '\"' in menu file" msgstr "%s: ûnkeppele '\"' yn menubestân" #: ../src/rootmenu.c:574 #, c-format msgid "%s: missing command" msgstr "%s: ûntbrekkend kommando" #: ../src/rootmenu.c:630 #, c-format msgid "invalid OPEN_MENU specification: %s" msgstr "ûnjildige OPEN_MENU-opjefte: %s" #: ../src/rootmenu.c:692 #, c-format msgid "%s:could not stat menu" msgstr "%s:koe status menu net fêststelle" #: ../src/rootmenu.c:700 #, c-format msgid "%s:could not stat menu:%s" msgstr "%s:koe status menu net fêststelle:%s" #: ../src/rootmenu.c:716 #, c-format msgid "too many parameters in OPEN_MENU: %s" msgstr "te folle parameters yn OPEN_MENU: %s" #: ../src/rootmenu.c:754 #, c-format msgid "invalid OPEN_PLMENU specification: %s" msgstr "ûnjildige OPEN_PLMENU-opjefte: %s" #: ../src/rootmenu.c:810 msgid "" "There are more than one WORKSPACE_MENU commands in the applications menu. " "Only one is allowed." msgstr "" "Der stean mear as ien WORKSPACE_MENU-kommando's yn it programmamenu. Mar ien " "is tastien." #: ../src/rootmenu.c:841 msgid "" "There are more than one WINDOWS_MENU commands in the applications menu. Only " "one is allowed." msgstr "" "Der stean mear as ien WINDOWS_MENU-kommando's yn it programmamenu. Mar ien " "is tastien." #: ../src/rootmenu.c:846 msgid "Window List" msgstr "Finsterlist" #: ../src/rootmenu.c:873 ../src/rootmenu.c:890 ../src/rootmenu.c:907 #: ../src/rootmenu.c:915 #, c-format msgid "%s:missing parameter for menu command \"%s\"" msgstr "%s:ûntbrekkende parameter foar menukommando \"%s\"" #: ../src/rootmenu.c:979 #, c-format msgid "%s:unknown command \"%s\" in menu config." msgstr "%s:ûnbekend kommando \"%s\" yn menukonfiguraasje." #: ../src/rootmenu.c:986 #, c-format msgid "%s:can't add shortcut for entry \"%s\"" msgstr "%s:kin fluchtoets foar yngong \"%s\" net tafoegje" #: ../src/rootmenu.c:1018 ../src/rootmenu.c:1064 msgid "missing command in menu config" msgstr "ûntbrekkend kommando yn menukonfiguraasje" #: ../src/rootmenu.c:1046 msgid "syntax error in menu file: END declaration missing" msgstr "syntaksflater yn menubestân: END-deklaraasje ûntbrekt" #: ../src/rootmenu.c:1078 msgid "invalid menu, no menu title given" msgstr "ûnjildich menu, gjin menutitel opjûn" #: ../src/rootmenu.c:1097 ../src/rootmenu.c:1139 ../src/rootmenu.c:1169 #: ../src/rootmenu.c:1183 #, c-format msgid "could not open menu file \"%s\": %s" msgstr "koe menubestân \"%s\" net iepenje: %s" #: ../src/rootmenu.c:1140 msgid "pipe command for PropertyList is too long" msgstr "PropertyList-kommando mei 'pipe' is te lang" #: ../src/rootmenu.c:1170 msgid "pipe command is too long" msgstr "kommando mei 'pipe' is te lang" #: ../src/rootmenu.c:1291 ../src/rootmenu.c:1363 ../src/rootmenu.c:1401 #, c-format msgid "out of memory while constructing directory menu %s" msgstr "ûnthâldtekoart by gearstallen mapmenu %s" #: ../src/rootmenu.c:1300 #, c-format msgid "%s:could not stat file \"%s\" in menu directory" msgstr "%s:koe status bestân \"%s\" yn menumap net fêststelle" #: ../src/rootmenu.c:1450 msgid "Commands" msgstr "Kommando's" #: ../src/rootmenu.c:1453 msgid "Restart" msgstr "Werstarte" #: ../src/rootmenu.c:1454 msgid "Exit..." msgstr "Ofslute..." #: ../src/rootmenu.c:1493 #, c-format msgid "could not find menu file \"%s\" referenced in WMRootMenu" msgstr "koe menubestân \"%s\", ferwiisd yn WMRootMenu, net fine" #: ../src/rootmenu.c:1499 #, c-format msgid "could not access menu \"%s\" referenced in WMRootMenu" msgstr "gjin tagong ta menu \"%s\", ferwiisd yn WMRootMenu" #: ../src/rootmenu.c:1511 #, c-format msgid "" "using default menu file \"%s\" as the menu referenced in WMRootMenu could " "not be found " msgstr "" "standertmenubestân \"%s\" wurdt brûkt, want it menu ferwiisd yn WMRootMenu " "koe net fûn wurde " #: ../src/rootmenu.c:1534 ../src/rootmenu.c:1594 #, c-format msgid "%s:format error in root menu configuration \"%s\"" msgstr "%s:opmaakflater yn haadmenukonfiguraasje \"%s\"" #: ../src/rootmenu.c:1671 msgid "" "The applications menu could not be loaded. Look at the console output for a " "detailed description of the errors." msgstr "" "It programmamenu koe net laden wurde. Besjoch de terminaloutput foar in " "detaillearre beskriuwing fan 'e flaters." #: ../src/screen.c:136 msgid "another window manager is running" msgstr "der rint in oare finsterbehearder" #: ../src/screen.c:137 msgid "use the --replace flag to replace it" msgstr "brûk de '--replace'-opsje om him te ferfangen" #: ../src/screen.c:165 #, c-format msgid "waiting %lus for other window manager to exit" msgstr "wachtet %lus op ôfsluten oare finsterbehearder" #: ../src/screen.c:176 msgid "other window manager hasn't exited!" msgstr "oare finsterbehearder is net ôfsletten!" #: ../src/screen.c:180 msgid "replacing the other window manager" msgstr "ferfangt de oare finsterbehearder" #: ../src/screen.c:512 #, c-format msgid "could not load logo image for panels: %s" msgstr "koe logo-ôfbylding foar panielen net lade: %s" #: ../src/screen.c:696 #, c-format msgid "can't create Context on screen %d, %s" msgstr "kin Context net oanmeitsje op skerm %d, %s" #: ../src/screen.c:710 msgid "could not initialize WINGs widget set" msgstr "koe WINGs-bestjoeringseleminten net inisjalisearje" #: ../src/screen.c:1002 #, c-format msgid "could not save session state in %s" msgstr "koe sesjesteat net bewarje yn %s" #: ../src/session.c:147 ../src/wdefaults.c:655 ../src/winspector.c:525 #, c-format msgid "can't convert \"%s\" to boolean" msgstr "kin \"%s\" net omsette nei 'boolean'" #: ../src/stacking.c:70 msgid "could not get window list!!" msgstr "koe finsterlist net krije!!" #: ../src/startup.c:118 #, c-format msgid "internal X error: %s" msgstr "ynterne X-flater: %s" #: ../src/startup.c:568 ../src/startup.c:584 ../src/startup.c:590 #, c-format msgid "could not read domain \"%s\" from defaults database" msgstr "koe domein \"%s\" net ynlêze út ynstellingedatabase" #: ../src/startup.c:576 #, c-format msgid "icon size is configured to %i, but it's too small. Using 16 instead" msgstr "ynstelde ikoangrutte %i is te lyts. Brûkt 16 yn plak dêrfan" #: ../src/startup.c:606 msgid "XKB is not supported. KbdModeLock is automatically disabled." msgstr "XKB wurdt net stipe. KbdModeLock is automatysk útskeakele." #: ../src/startup.c:636 msgid "it seems that there is already a window manager running" msgstr "it liket dat der al in finsterbehearder rint" #: ../src/startup.c:642 #, c-format msgid "could not manage screen %i" msgstr "koe skerm %i net beheare" #: ../src/startup.c:706 msgid "could not manage any screen" msgstr "koe gjin inkeld skerm beheare" #: ../src/superfluous.c:312 #, c-format msgid "Impossible direction: %d" msgstr "Unmooglike rjochting: %d" #: ../src/switchmenu.c:121 msgid "Windows" msgstr "Finsters" #: ../src/texture.c:331 #, c-format msgid "image file \"%s\" used as texture could not be found." msgstr "ôfbyldingsbestân \"%s\", brûkt as tekstuer, net fûn." #: ../src/texture.c:336 #, c-format msgid "could not load texture pixmap \"%s\":%s" msgstr "koe tekstuerpixmap \"%s\" net lade:%s" #: ../src/texture.c:458 msgid "could not allocate image buffer" msgstr "koe ôfbyldingsbuffer net tawize" #: ../src/wdefaults.c:399 #, c-format msgid "icon \"%s\" doesn't exist, check your config files" msgstr "ikoan \"%s\" bestiet net, kontrolearje jo konfiguraasjebestannen" #: ../src/wdefaults.c:430 #, c-format msgid "error loading image file \"%s\": %s" msgstr "flater by laden ôfbyldingsbestân \"%s\": %s" #: ../src/wdefaults.c:466 #, c-format msgid "could not find default icon \"%s\"" msgstr "koe standertikoan \"%s\" net fine" #: ../src/window.c:2786 ../src/window.c:2948 msgid "" "The NumLock, ScrollLock or similar key seems to be turned on. Turn it off or " "some mouse actions and keyboard shortcuts will not work." msgstr "" "De NumLock, ScrollLock of sokke toets liket ynskeakele te wêzen. Skeakelje " "it út, of sommige mûsaksjes en fluchtoetsen sille net wurkje." #: ../src/winmenu.c:84 ../src/winmenu.c:663 msgid "Maximize" msgstr "Maksimalisearje" #: ../src/winmenu.c:85 msgid "Other maximization" msgstr "Oare maksimalisearring" #: ../src/winmenu.c:86 ../src/winmenu.c:646 msgid "Miniaturize" msgstr "Miniaturisearje" #: ../src/winmenu.c:87 ../src/winmenu.c:682 msgid "Shade" msgstr "Oprôlje" #: ../src/winmenu.c:89 msgid "Resize/Move" msgstr "Fergrutsje/ferpleatse" #: ../src/winmenu.c:90 ../src/winmenu.c:699 msgid "Select" msgstr "Selektearje" #: ../src/winmenu.c:91 msgid "Move To" msgstr "Ferpleatse nei" #: ../src/winmenu.c:92 msgid "Attributes..." msgstr "Eigenskippen..." #: ../src/winmenu.c:93 msgid "Options" msgstr "Opsjes" #: ../src/winmenu.c:95 msgid "Close" msgstr "Slute" #: ../src/winmenu.c:113 msgid "Keep on top" msgstr "Boppe-op hâlde" #: ../src/winmenu.c:114 msgid "Keep at bottom" msgstr "Underop hâlde" #: ../src/winmenu.c:126 msgid "Maximize vertically" msgstr "Fertikaal maksimalisearje" #: ../src/winmenu.c:127 msgid "Maximize horizontally" msgstr "Horizontaal maksimalisearje" #: ../src/winmenu.c:128 msgid "Maximize left half" msgstr "Lofterhelte maksimalisearje" #: ../src/winmenu.c:129 msgid "Maximize right half" msgstr "Rjochterhelte maksimalisearje" #: ../src/winmenu.c:130 msgid "Maximize top half" msgstr "Boppehelte maksimalisearje" #: ../src/winmenu.c:131 msgid "Maximize bottom half" msgstr "Underhelte maksimalisearje" #: ../src/winmenu.c:132 msgid "Maximize left top corner" msgstr "Lofterboppehoeke maksimalisearje" #: ../src/winmenu.c:133 msgid "Maximize right top corner" msgstr "Rjochterboppehoeke maksimalisearje" #: ../src/winmenu.c:134 msgid "Maximize left bottom corner" msgstr "Lofterûnderhoeke maksimalisearje" #: ../src/winmenu.c:135 msgid "Maximize right bottom corner" msgstr "Rjochterûnderhoeke maksimalisearje" #: ../src/winmenu.c:136 msgid "Maximus: tiled maximization" msgstr "Maximus: tegelmaksimalisearring" #: ../src/winmenu.c:255 msgid "" "This will kill the application.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" "Dit sil it programma deadzje.\n" "Net-bewarre wizigingen sille ferlern gean.\n" "Befêstigje a.j.w." #: ../src/winmenu.c:408 ../src/winmenu.c:416 msgid "Set Shortcut" msgstr "Ynstelde fluchtoets" #: ../src/winmenu.c:523 ../src/winmenu.c:548 ../src/winmenu.c:573 msgid "could not create submenu for window menu" msgstr "koe submenu net oanmeitsje foar finstermenu" #: ../src/winmenu.c:640 msgid "Deminiaturize" msgstr "Deminiaturisearje" #: ../src/winmenu.c:656 msgid "Unmaximize" msgstr "Demaksimalisearje" #: ../src/winmenu.c:676 msgid "Unshade" msgstr "Ofrôlje" #: ../src/winmenu.c:693 msgid "Deselect" msgstr "Deselektearje" #: ../src/winspector.c:70 msgid "Disable titlebar" msgstr "Titelbalke útskeakelje" #: ../src/winspector.c:71 msgid "" "Remove the titlebar of this window.\n" "To access the window commands menu of a window\n" "without it's titlebar, press Control+Esc (or the\n" "equivalent shortcut, if you changed the default\n" "settings)." msgstr "" "Ferwiderje de titelbalke fan dit finster. Om it\n" "finsterkommandomenu te berikken fan in\n" "finster sûnder syn titelbalke, druk Control+Esc\n" "(of de oerienkomstige fluchtoets, as jo de\n" "standertynstellingen wizige hawwe)." #: ../src/winspector.c:77 msgid "Disable resizebar" msgstr "Fergrutbalke útskeakelje" #: ../src/winspector.c:78 msgid "Remove the resizebar of this window." msgstr "Ferwiderje de fergrutbalke fan dit finster." #: ../src/winspector.c:80 msgid "Disable close button" msgstr "Knop 'slute' útskeakelje" #: ../src/winspector.c:81 msgid "Remove the `close window' button of this window." msgstr "Ferwiderje de knop 'finster slute' fan dit finster." #: ../src/winspector.c:83 msgid "Disable miniaturize button" msgstr "Knop 'miniaturisearje' útskeakelje" #: ../src/winspector.c:84 msgid "Remove the `miniaturize window' button of the window." msgstr "Ferwiderje de knop 'finster miniaturisearje' fan it finster." #: ../src/winspector.c:86 msgid "Disable border" msgstr "Râne útskeakelje" #: ../src/winspector.c:87 msgid "Remove the 1 pixel black border around the window." msgstr "Ferwiderje de swarte râne fan 1 pixel om it finster." #: ../src/winspector.c:89 msgid "Keep on top (floating)" msgstr "Boppe-op hâlde (driuwend)" #: ../src/winspector.c:90 msgid "" "Keep the window over other windows, not allowing\n" "them to cover it." msgstr "" "Hâld it finster boppe oare finsters, net tasteand\n" "dat se it bedekke." #: ../src/winspector.c:93 msgid "Keep at bottom (sunken)" msgstr "Underop hâlde (fersonken)" #: ../src/winspector.c:94 msgid "Keep the window under all other windows." msgstr "Hâld it finster ûnder alle oare finsters." #: ../src/winspector.c:97 msgid "Make window present in all workspaces." msgstr "Meitsje finster oanwêzich yn alle wurkromten." #: ../src/winspector.c:99 msgid "Start miniaturized" msgstr "Miniaturisearre starte" #: ../src/winspector.c:100 msgid "" "Make the window be automatically miniaturized when it's\n" "first shown." msgstr "" "Meitsje it finster fansels miniaturisearre, wannear't it\n" "foar it earst toand wurdt." #: ../src/winspector.c:103 msgid "Start maximized" msgstr "Maksimalisearre starte" #: ../src/winspector.c:104 msgid "" "Make the window be automatically maximized when it's\n" "first shown." msgstr "" "Meitsje it finster fansels maksimalisearre, wannear't it\n" "foar it earst toand wurdt." #: ../src/winspector.c:107 msgid "Full screen maximization" msgstr "Skermfolj. maksimalisearring" #: ../src/winspector.c:108 msgid "" "Make the window use the whole screen space when it's\n" "maximized. The titlebar and resizebar will be moved\n" "to outside the screen." msgstr "" "Lit it finster de hiele skermromte brûke, wannear't\n" "it miniaturisearre wurdt. De titel- en fergrutbalke sille\n" "bûten it skerm pleatst wurde." #: ../src/winspector.c:113 msgid "Do not bind keyboard shortcuts" msgstr "Fluchtoetsen net ferbine" #: ../src/winspector.c:114 msgid "" "Do not bind keyboard shortcuts from Window Maker\n" "when this window is focused. This will allow the\n" "window to receive all key combinations regardless\n" "of your shortcut configuration." msgstr "" "Ferbyn fluchtoetsen út Window Maker net, wannear't\n" "dit finster fokus hat. Dat stiet it finster ta alle\n" "toetskombinaasjes te ûntfangen, likefolle jo\n" "fluchtoetsekonfiguraasje." #: ../src/winspector.c:119 msgid "Do not bind mouse clicks" msgstr "Mûsklikken net ferbine" #: ../src/winspector.c:120 msgid "" "Do not bind mouse actions, such as `Alt'+drag\n" "in the window (when Alt is the modifier you have\n" "configured)." msgstr "" "Ferbyn mûsaksjes net, sa as 'Alt'+ferslepen\n" "yn it finster (as Alt de modifikator is dy't jo\n" "ynsteld hawwe)." #: ../src/winspector.c:124 msgid "Do not show in the window list" msgstr "Net yn 'e finsterlist toane" #: ../src/winspector.c:125 msgid "Do not list the window in the window list menu." msgstr "Fermeld it finster net yn it finsterlistmenu." #: ../src/winspector.c:127 msgid "Do not show in the switch panel" msgstr "Net yn it skeakelpaniel toane" #: ../src/winspector.c:128 msgid "Do not include in switch panel while cycling windows." msgstr "" "Nim net op yn it skeakelpaniel by wikseljen fan\n" "finster." #: ../src/winspector.c:130 msgid "Do not let it take focus" msgstr "Gjin fokus nimme litte" #: ../src/winspector.c:131 msgid "" "Do not let the window take keyboard focus when you\n" "click on it." msgstr "" "Lit it finster gjin toetseboerdfokus nimme,\n" "wannear't jo derop klikke." #: ../src/winspector.c:134 msgid "Keep inside screen" msgstr "Binnen it skerm hâlde" #: ../src/winspector.c:135 msgid "" "Do not allow the window to move itself completely\n" "outside the screen. For bug compatibility.\n" msgstr "" "Stean it finster net ta, it folslein bûten it\n" "skerm te ferpleatsen. Foar bugkompatibiliteit.\n" #: ../src/winspector.c:138 msgid "Ignore 'Hide Others'" msgstr "'Oare ferbergje' negearje" #: ../src/winspector.c:139 msgid "" "Do not hide the window when issuing the\n" "`HideOthers' command." msgstr "" "Ferbergje it finster net, wannear't it kommando\n" "'Oare ferbergje' jûn wurdt." #: ../src/winspector.c:142 msgid "Ignore 'Save Session'" msgstr "'Sesje bewarje' negearje" #: ../src/winspector.c:143 msgid "" "Do not save the associated application in the\n" "session's state, so that it won't be restarted\n" "together with other applications when Window Maker\n" "starts." msgstr "" "Bewarje it ferbûn programma net yn 'e\n" "sesjesteat, sadat it net werstart sil wurde\n" "tagelyk mei oare programma's, wannear't\n" "Window Maker start." #: ../src/winspector.c:148 msgid "Emulate application icon" msgstr "Programma-ikoan emulearje" #: ../src/winspector.c:149 msgid "" "Make this window act as an application that provides\n" "enough information to Window Maker for a dockable\n" "application icon to be created." msgstr "" "Lit dit finster it hâlde en drage, as in programma dat\n" "foldwaande ynformaasje ferstrekt oan Window Maker,\n" "om in dokber programma-ikoan oan te meitsjen." #: ../src/winspector.c:153 msgid "Focus across workspaces" msgstr "Fokusje dwers troch wurkromten" #: ../src/winspector.c:154 msgid "" "Allow Window Maker to switch workspace to satisfy\n" "a focus request (annoying)." msgstr "" "Stean Window Maker ta fan wurkromte te wikseljen,\n" "om oan in fokusfersyk te foldwaan (hinderlik)." #: ../src/winspector.c:157 msgid "Do not let it be minimized" msgstr "Net miniaturisearje litte" #: ../src/winspector.c:158 msgid "" "Do not let the window of this application be\n" "minimized.\n" msgstr "" "Lit it finster fan dit programma net\n" "miniaturisearje.\n" #: ../src/winspector.c:162 msgid "Disable language button" msgstr "Taalknop útskeakelje" #: ../src/winspector.c:163 msgid "Remove the `toggle language' button of the window." msgstr "Ferwiderje de knop 'taal wikselje' fan it finster." #: ../src/winspector.c:167 msgid "Start hidden" msgstr "Ferburgen starte" #: ../src/winspector.c:168 msgid "Automatically hide application when it's started." msgstr "" "Ferbergje it programma fansels, wannear't it start\n" "wurdt." #: ../src/winspector.c:170 msgid "No application icon" msgstr "Gjin programma-ikoan" #: ../src/winspector.c:171 msgid "" "Disable the application icon for the application.\n" "Note that you won't be able to dock it anymore,\n" "and any icons that are already docked will stop\n" "working correctly." msgstr "" "Skeakelje it programma-ikoan foar it programma\n" "út. Merk op, dat jo net mear yn steat sille wêze it\n" "te dokken, en ikoanen dy't al dokt binne, sille\n" "net mear korrekt wurkje." #: ../src/winspector.c:176 msgid "Shared application icon" msgstr "Dield programma-ikoan" #: ../src/winspector.c:177 msgid "" "Use a single shared application icon for all of\n" "the instances of this application.\n" msgstr "" "Brûk in inkeld dield programma-ikoan foar alle\n" "eksimplaren fan dit programma.\n" #: ../src/winspector.c:471 #, c-format msgid "Could not find icon \"%s\" specified for this window" msgstr "Koe ikoan \"%s\", opjûn foar dit finster, net fine" #: ../src/winspector.c:486 #, c-format msgid "Could not open specified icon \"%s\":%s" msgstr "Koe opjûn ikoan \"%s\" net iepenje:%s" #: ../src/winspector.c:820 #, c-format msgid "" "Ignore client supplied icon is set, but icon filename textbox is empty. " "Using client supplied icon" msgstr "" "Negearje kliïnt levere ikoan ynsteld, mar Bestânsnamme ikoan is leech. Brûkt " "ikoan kliïnt" #: ../src/winspector.c:1007 #, c-format msgid "Inspecting %s.%s" msgstr "Ynspektearje %s.%s" #: ../src/winspector.c:1032 msgid "Click in the window you wish to inspect." msgstr "Klik yn it finster dat jo ynspektearje wolle." #: ../src/winspector.c:1056 msgid "" "The configuration will apply to all\n" "windows that have their WM_CLASS\n" "property set to the above selected\n" "name, when saved." msgstr "" "De konfiguraasje wurdt tapast, op alle\n" "finsters dy't har WM_CLASS-eigenskip\n" "ynsteld hawwe op 'e boppesteand\n" "selektearre namme, nei bewarje." #: ../src/winspector.c:1076 msgid "Save" msgstr "Bewarje" #: ../src/winspector.c:1084 msgid "Apply" msgstr "Tapasse" #: ../src/winspector.c:1090 msgid "Reload" msgstr "Werlade" #: ../src/winspector.c:1099 ../src/winspector.c:1109 msgid "Window Specification" msgstr "Finsterspesifikaasje" #: ../src/winspector.c:1100 msgid "Window Attributes" msgstr "Finstereigenskippen" #: ../src/winspector.c:1101 msgid "Advanced Options" msgstr "Avansearre opsjes" #: ../src/winspector.c:1102 msgid "Icon and Initial Workspace" msgstr "Ikoan en inisjele wurkromte" #: ../src/winspector.c:1103 msgid "Application Specific" msgstr "Programmaspesifyk" #: ../src/winspector.c:1116 msgid "Defaults for all windows" msgstr "Standert foar alle finsters" #: ../src/winspector.c:1167 msgid "Select window" msgstr "Finster selektearje" #: ../src/winspector.c:1311 msgid "Attributes" msgstr "Eigenskippen" #: ../src/winspector.c:1339 msgid "Advanced" msgstr "Avansearre" #: ../src/winspector.c:1371 msgid "Miniwindow Image" msgstr "Ofbylding minyfinster" #: ../src/winspector.c:1388 msgid "Icon filename:" msgstr "Bestânsnamme ikoan:" #: ../src/winspector.c:1399 msgid "Ignore client supplied icon" msgstr "Negearje troch kliïnt levere ikoan" #: ../src/winspector.c:1405 msgid "Initial Workspace" msgstr "Inisjele wurkromte" #: ../src/winspector.c:1407 msgid "The workspace to place the window when it's first shown." msgstr "" "De wurkromte om it finster yn te pleatsen,\n" "wannear't it foar it earst toand wurdt." #: ../src/winspector.c:1413 msgid "Nowhere in particular" msgstr "Nearne yn it bysûnder" #: ../src/winspector.c:1434 msgid "Application Attributes" msgstr "Programma-eigenskippen" #: ../src/workspace.c:101 ../src/workspace.c:721 #, c-format msgid "Workspace %i" msgstr "Wurkromte %i" #: ../src/workspace.c:148 #, c-format msgid "Workspace \"%s\" in use; cannot delete" msgstr "Wurkromte \"%s\" yn gebrûk; kin net ferwiderje" #: ../src/workspace.c:767 msgid "Workspaces" msgstr "Wurkromten" #: ../src/workspace.c:769 msgid "could not create Workspace menu" msgstr "koe wurkromtemenu net oanmeitsje" #: ../src/workspace.c:776 msgid "New" msgstr "Nij" #: ../src/workspace.c:777 msgid "Destroy Last" msgstr "Lêste ferneatigje" #: ../src/workspace.c:779 msgid "Last Used" msgstr "Lêst brûkt" #: ../src/xdnd.c:255 #, c-format msgid "wXDNDGetTypeList failed = %ld" msgstr "" #: ../src/xmodifier.c:134 #, c-format msgid "key %s (0x%x) generates %s, which is generated by %s" msgstr "toets %s (0x%x) generearret %s dy't troch %s generearre wurdt" #: ../src/xmodifier.c:140 #, c-format msgid "key %s (0x%x) generates %s, which is nonsensical" msgstr "toets %s (0x%x) generearret %s, wat ûnsinnich is" #: ../src/xmodifier.c:153 #, c-format msgid "key %s (0x%x) generates both %s and %s, which is nonsensical" msgstr "toets %s (0x%x) generearret sawol %s as %s, wat ûnsinnich is" #: ../src/xmodifier.c:301 #, c-format msgid "Can't convert keymask 0x%04X to a shortcut label" msgstr "Kin 'keymask' 0x%04X net omsette nei fluchtoetsbeneaming" # Keep next entry for wmaker-0.95.7 msgid "" " This fatal error occured probably due to a bug. Please fill the included " "BUGFORM and report it to %s." msgstr "" " Dizze ûnwerstelbere flater trede mooglik op troch in bug. Folje a.j.w. " "bygeand BUGFORM yn, en rapportearje it oan %s." WindowMaker-0.95.9/po/zh_CN.po0000644000175000017500000013017613431646201012755 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) 1999 Free Software Foundation, Inc. # Created By : Wang Jian , 1999.4 # msgid "" msgstr "" "Project-Id-Version: Window Maker-0.60.0\n" "POT-Creation-Date: 1999-06-17 00:08+0800\n" "PO-Revision-Date: 1999-07-05 21:30+0800\n" "Last-Translator: Wang Jian \n" "Language-Team: chinese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "Translator: Wang Jian \n" #: ../src/appicon.c:570 ../src/dialog.c:223 ../src/dock.c:3301 #: ../src/dockedapp.c:210 ../src/dockedapp.c:251 ../src/rootmenu.c:1754 #: ../src/winspector.c:290 ../src/winspector.c:306 msgid "Error" msgstr "错误" #: ../src/appicon.c:571 msgid "Could not open specified icon file" msgstr "不能打开指定的图标文件" #: ../src/appicon.c:572 ../src/dialog.c:122 ../src/dialog.c:223 #: ../src/dialog.c:460 ../src/dialog.c:1477 ../src/dock.c:514 #: ../src/dock.c:522 ../src/dock.c:545 ../src/dock.c:3302 #: ../src/dockedapp.c:211 ../src/dockedapp.c:257 ../src/dockedapp.c:371 #: ../src/rootmenu.c:1758 ../src/winspector.c:291 ../src/winspector.c:307 msgid "OK" msgstr "确定" #: ../src/appicon.c:599 ../src/dock.c:278 msgid "" " will be forcibly closed.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" "将会被强行中止.\n" "没有保存的修改会丢失.\n" "请确定." #: ../src/appicon.c:605 ../src/dock.c:283 ../src/winmenu.c:125 msgid "Kill Application" msgstr "强行中止程序" #: ../src/appicon.c:606 ../src/dock.c:284 ../src/winmenu.c:127 msgid "Yes" msgstr "是" #: ../src/appicon.c:606 ../src/dock.c:284 ../src/winmenu.c:127 msgid "No" msgstr "否" #: ../src/appicon.c:624 ../src/dock.c:1196 msgid "Unhide Here" msgstr "显示" #: ../src/appicon.c:625 ../src/appicon.c:650 ../src/dock.c:1198 #: ../src/dock.c:1200 ../src/dock.c:3468 ../src/dock.c:3470 #: ../src/winmenu.c:465 msgid "Hide" msgstr "隐藏" #: ../src/appicon.c:626 msgid "Set Icon..." msgstr "设置图标..." #: ../src/appicon.c:627 ../src/dock.c:1204 ../src/rootmenu.c:228 #: ../src/rootmenu.c:242 ../src/winmenu.c:512 msgid "Kill" msgstr "强行中止" #: ../src/appicon.c:648 ../src/dock.c:3466 msgid "Unhide" msgstr "显示" #: ../src/defaults.c:836 ../src/startup.c:767 ../src/startup.c:785 #: ../src/startup.c:791 #, c-format msgid "could not read domain \"%s\" from defaults database" msgstr "不能从默认的数据库中读取域 \"%s\"" #: ../src/defaults.c:882 ../src/defaults.c:1007 ../src/defaults.c:1046 #: ../src/defaults.c:1076 #, c-format msgid "Domain %s (%s) of defaults database is corrupted!" msgstr "默认数据库中的域 %s (%s)的数据已经损坏!" #: ../src/defaults.c:887 ../src/defaults.c:1028 ../src/defaults.c:1059 #: ../src/defaults.c:1085 #, c-format msgid "could not load domain %s from user defaults database" msgstr "不能从用户的默认数据库中载入域 %s" #: ../src/defaults.c:898 ../src/defaults.c:992 #, c-format msgid "Domain %s (%s) of global defaults database is corrupted!" msgstr "全局数据库中的域 %s (%s)的数据已经损坏!" #: ../src/defaults.c:917 ../src/defaults.c:997 #, c-format msgid "could not load domain %s from global defaults database" msgstr "不能从全局数据库中载入域 %s" #: ../src/defaults.c:1305 #, c-format msgid "wrong option value for key \"%s\". Should be one of %s" msgstr "使用的关键字\"%s\"的值不正确.应该是%s之一" #: ../src/defaults.c:1352 #, c-format msgid "can't convert \"%s\" to boolean for key \"%s\"" msgstr "不能把关键字\"%s\"的值\"%s\"转化成布尔值" #: ../src/defaults.c:1357 ../src/defaults.c:1391 ../src/defaults.c:1423 #: ../src/defaults.c:1436 ../src/defaults.c:1451 ../src/defaults.c:1465 #: ../src/defaults.c:1537 ../src/defaults.c:1549 ../src/defaults.c:1955 #: ../src/defaults.c:1972 ../src/defaults.c:1985 ../src/defaults.c:2018 #: ../src/defaults.c:2034 ../src/defaults.c:2065 ../src/defaults.c:2155 #, c-format msgid "using default \"%s\" instead" msgstr "使用默认的\"%s\"" #: ../src/defaults.c:1388 #, c-format msgid "can't convert \"%s\" to integer for key \"%s\"" msgstr "不能把关键字\"%s\"的值\"%s\"转化成整数值" #: ../src/defaults.c:1418 ../src/defaults.c:1532 ../src/defaults.c:1950 #: ../src/defaults.c:1967 ../src/defaults.c:2013 ../src/defaults.c:2060 #: ../src/wdefaults.c:557 ../src/wdefaults.c:593 #, c-format msgid "Wrong option format for key \"%s\". Should be %s." msgstr "关键字\"%s\"的值格式不正确.应该是%s." #: ../src/defaults.c:1431 #, c-format msgid "Incorrect number of elements in array for key \"%s\"." msgstr "关键字\"%s\"的值中数组的元素数目不对." #: ../src/defaults.c:1446 #, c-format msgid "Wrong value for key \"%s\". Should be Coordinate." msgstr "关键字\"%s\"的值不正确.应该是坐标." #: ../src/defaults.c:1461 #, c-format msgid "can't convert array to integers for \"%s\"." msgstr "不能把\"%s\"的数组转化为整数值." #: ../src/defaults.c:1659 ../src/defaults.c:1691 ../src/defaults.c:1707 #: ../src/defaults.c:1753 ../src/defaults.c:1793 ../src/defaults.c:1831 #: ../src/defaults.c:1847 #, c-format msgid "\"%s\" is not a valid color name" msgstr "\"%s\"不是有效的颜色名" #: ../src/defaults.c:1672 msgid "bad number of arguments in gradient specification" msgstr "在过渡色设置中的参数个数不正确" #: ../src/defaults.c:1726 msgid "too few arguments in multicolor gradient specification" msgstr "在多颜色过渡色设置中参数过少" #: ../src/defaults.c:1820 msgid "bad number of arguments in textured gradient specification" msgstr "在纹理过渡色设置中的参数个数不正确" #: ../src/defaults.c:1863 #, c-format msgid "bad opacity value for tgradient texture \"%s\". Should be [0..255]" msgstr "纹理过渡色的纹理\"%s\"的不透明值不正确.应该是[0..255]" #: ../src/defaults.c:1923 #, c-format msgid "could not initialize library %s" msgstr "不能初始化库: %s" #: ../src/defaults.c:1926 #, c-format msgid "could not find function %s::%s" msgstr "找不到函数 %s::%s" #: ../src/defaults.c:1933 #, c-format msgid "invalid texture type %s" msgstr "无效的纹理类型 %s" #: ../src/defaults.c:1980 #, c-format msgid "Error in texture specification for key \"%s\"" msgstr "关键值\"%s\"的纹理设置不正确" #: ../src/defaults.c:2030 msgid "Wrong type for workspace background. Should be a texture type." msgstr "工作区背景的类型不正确.应该是纹理类型." #: ../src/defaults.c:2078 #, c-format msgid "Wrong type for background of workspace %i. Should be a texture." msgstr "工作区 %i 的背景类型不正确.应该是纹理图." #: ../src/defaults.c:2122 msgid "could not load any usable font!!!" msgstr "不能载入任何可用的字体!!!" #: ../src/defaults.c:2150 #, c-format msgid "could not get color for key \"%s\"" msgstr "不能给关键值\"%s\"分配到颜色" #: ../src/defaults.c:2210 ../src/rootmenu.c:494 #, c-format msgid "%s:invalid key modifier \"%s\"" msgstr "%s:无效的键修饰符\"%s\"" #: ../src/defaults.c:2222 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\"" msgstr "%s:无效的快捷键设置\"%s\"" #: ../src/defaults.c:2229 #, c-format msgid "%s:invalid key in shortcut \"%s\"" msgstr "%s:在快捷键\"%s\"中有无效的键" #: ../src/defaults.c:2255 #, c-format msgid "%s: modifier key %s is not valid" msgstr "%s: 修饰键 %s 无效" #: ../src/defaults.c:2289 #, c-format msgid "could not load image in option %s: %s" msgstr "不能载入选项\"%s\" 中的图像: %s" #: ../src/defaults.c:2371 msgid "could not render texture for icon background" msgstr "不能给图标背景绘制纹理" #: ../src/dialog.c:122 ../src/dialog.c:467 ../src/dock.c:545 #: ../src/dockedapp.c:377 ../src/rootmenu.c:190 ../src/rootmenu.c:228 #: ../src/rootmenu.c:242 msgid "Cancel" msgstr "取消" #: ../src/dialog.c:218 msgid "Could not open directory \"%s\":\n%s" msgstr "不能打开目录 \"%s\":\n%s" #: ../src/dialog.c:271 msgid "Could not load image file " msgstr "不能载入图像文件 " #: ../src/dialog.c:403 msgid "Directories" msgstr "目录" #: ../src/dialog.c:412 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/dialog.c:1401 ../src/startup.c:325 msgid "cannot open connection for crashing dialog panel. Aborting." msgstr "不能为退出对话框打开连接.中止." #: ../src/dialog.c:1427 msgid "Fatal error" msgstr "致命错误" #: ../src/dialog.c:1438 #, c-format msgid "" "Window Maker received signal %i\n" "(%s)." msgstr "" "Window Maker收到信号 %i\n" "(%s)." #: ../src/dialog.c:1441 #, c-format msgid "Window Maker received signal %i." msgstr "Window Maker收到信号%i." #: ../src/dialog.c:1450 msgid "" " This fatal error occured probably due to a bug. Please fill the included " "BUGFORM and report it to %s." msgstr "" "发生一个致命错误,也许是因为一个 bug.请填写好软件中包含的 BUGFORM 并向" "%s 报告 bug." #: ../src/dialog.c:1458 msgid "What do you want to do now?" msgstr "你现在想做什么?" #: ../src/dialog.c:1464 msgid "Select action" msgstr "选择动作" #: ../src/dialog.c:1465 msgid "Abort and leave a core file" msgstr "中止并产生 core 文件" #: ../src/dialog.c:1466 msgid "Restart Window Maker" msgstr "重新启动 WindowMaker" #: ../src/dialog.c:1467 msgid "Start alternate window manager" msgstr "使用备用的窗口管理器" #: ../src/dock.c:212 #, c-format msgid "Type the name for workspace %i:" msgstr "输入工作区 %i 的名字:" #: ../src/dock.c:213 ../src/dock.c:1160 ../src/dock.c:1163 ../src/dock.c:3384 msgid "Rename Workspace" msgstr "重新命名工作区" #: ../src/dock.c:508 ../src/dock.c:516 msgid "Warning" msgstr "警告" #: ../src/dock.c:509 msgid "" "Some icons cannot be made omnipresent. Please make sure that no other icon " "is docked in the same positions on the other workspaces and the Clip is not " "full in some workspace." msgstr "" "一些图标不能放在所有的工作空间里. 请确定在其它工作空间" "的相同位置上没有其它的图标,并且在所有的工作空间里" "夹子都没有装满." #: ../src/dock.c:517 msgid "" "Icon cannot be made omnipresent. Please make sure that no other icon is " "docked in the same position on the other workspaces and the Clip is not full " "in some workspace." msgstr "" "图标不能放在所有的工作空间里.请确定在其它工作空间" "的相同位置上没有其它的图标,并且在所有的工作空间里" "夹子都没有装满." #: ../src/dock.c:543 msgid "Workspace Clip" msgstr "工作区夹子" #: ../src/dock.c:544 msgid "All selected icons will be removed!" msgstr "所有选中的图标会被删除!" #: ../src/dock.c:591 ../src/dock.c:1175 ../src/dock.c:1177 ../src/dock.c:3420 msgid "Keep Icon" msgstr "保留图标" #: ../src/dock.c:592 ../src/dock.c:2130 ../src/dock.c:2264 msgid "Type the command used to launch the application" msgstr "输入启动程序所使用的命令" #: ../src/dock.c:973 #, c-format msgid "could not launch application %s\n" msgstr "不能启动程序 %s\n" #: ../src/dock.c:1028 msgid "could not create workspace submenu for Clip menu" msgstr "不能为夹子菜单建立工作区子菜单" #: ../src/dock.c:1091 msgid "could not create options submenu for Clip menu" msgstr "不能为夹子菜单建立选项子菜单" #: ../src/dock.c:1095 msgid "Keep on Top" msgstr "保持在最上" #: ../src/dock.c:1101 msgid "Collapsed" msgstr "已打开" #: ../src/dock.c:1107 msgid "AutoCollapse" msgstr "自动打开" #: ../src/dock.c:1113 msgid "AutoRaiseLower" msgstr "自动放前和放后" #: ../src/dock.c:1119 msgid "AutoAttract Icons" msgstr "自动吸附图标" #: ../src/dock.c:1125 msgid "Keep Attracted Icons" msgstr "保留吸附的图标" #: ../src/dock.c:1149 ../src/winmenu.c:407 msgid "Keep on top" msgstr "保持在最上" #: ../src/dock.c:1155 msgid "Clip Options" msgstr "夹子选项" #: ../src/dock.c:1165 msgid "Selected" msgstr "选中" #: ../src/dock.c:1170 ../src/dock.c:1173 ../src/dock.c:3411 msgid "Select All Icons" msgstr "选择所有图标" #: ../src/dock.c:1179 ../src/dock.c:1181 ../src/dock.c:3428 msgid "Move Icon To" msgstr "把图标移动到" #: ../src/dock.c:1186 ../src/dock.c:1189 ../src/dock.c:3439 msgid "Remove Icon" msgstr "删除图标" #: ../src/dock.c:1191 msgid "Attract Icons" msgstr "吸附图标" #: ../src/dock.c:1194 msgid "Launch" msgstr "启动" #: ../src/dock.c:1202 msgid "Settings..." msgstr "设置..." #: ../src/dock.c:1595 ../src/dock.c:1609 ../src/dock.c:1623 ../src/dock.c:1633 #: ../src/dock.c:1658 #, c-format msgid "bad value in docked icon state info %s" msgstr "嵌入图标的状态信息 %s 的值不正确" #: ../src/dock.c:1641 #, c-format msgid "bad value in docked icon position %i,%i" msgstr "嵌入图标的位置 %i,%i 值错误" #: ../src/dock.c:1897 msgid "there are too many icons stored in dock. Ignoring what doesn't fit" msgstr "在嵌入器中有太多的图标.忽略不能放入的图标" #. icon->forced_dock = 1; #: ../src/dock.c:2129 ../src/dock.c:2263 msgid "Dock Icon" msgstr "嵌入图标" #: ../src/dock.c:3294 ../src/dock.c:3298 #, c-format msgid "Could not execute command \"%s\"" msgstr "不能执行命令\"%s\"" #: ../src/dock.c:3390 msgid "Toggle Omnipresent" msgstr "切换存在所有工作区" #: ../src/dock.c:3395 ../src/winmenu.c:417 ../src/winspector.c:1197 msgid "Omnipresent" msgstr "存在所有工作区" #: ../src/dock.c:3409 msgid "Unselect All Icons" msgstr "取消选择所有图标" #: ../src/dock.c:3418 msgid "Keep Icons" msgstr "保留图标" #: ../src/dock.c:3426 msgid "Move Icons To" msgstr "把图标移动到" #: ../src/dock.c:3437 msgid "Remove Icons" msgstr "删除图标" #: ../src/dockedapp.c:130 #, c-format msgid "could not find icon %s, used in a docked application" msgstr "找不到在嵌入运行的程序中使用的图标 %s" #: ../src/dockedapp.c:209 #, c-format msgid "Could not open specified icon file: %s" msgstr "不能打开指定的图标文件: %s" #: ../src/dockedapp.c:211 msgid "Ignore" msgstr "忽略" #: ../src/dockedapp.c:252 msgid "" "Sorry, icon cannot be made omnipresent. Please make sure that no other icon " "is docked in the same position on the other workspaces, and the Clip is not " "full in some workspace, then try again." msgstr "" "对不起, 图标不能设为存在所有的工作区. 请确定在其他工作区的相同位置" "处没有其他的嵌入图标, 并且在所有的工作区中, 夹子不是满的. 然后可以" "重试." #: ../src/dockedapp.c:313 msgid "Start when WindowMaker is started" msgstr "在 WindowMaker 启动时启动" #: ../src/dockedapp.c:319 msgid "Application path and arguments" msgstr "程序路径和参数" #: ../src/dockedapp.c:330 msgid "Command for files dropped with DND" msgstr "用DND拖放的文件的处理命令" #: ../src/dockedapp.c:342 #, c-format msgid "%d will be replaced with the file name" msgstr "%d 将被替换为指定的文件名" #: ../src/dockedapp.c:346 msgid "DND support was not compiled in" msgstr "没有编译进对 DND 的支持" #: ../src/dockedapp.c:352 msgid "Icon Image" msgstr "图标图像" #: ../src/dockedapp.c:364 ../src/winspector.c:1333 msgid "Browse..." msgstr "浏览..." #: ../src/dockedapp.c:409 msgid "Docked Application Settings" msgstr "嵌入程序的设置" #: ../src/framewin.c:642 ../src/framewin.c:737 ../src/menu.c:467 #: ../src/texture.c:549 #, c-format msgid "could not render texture: %s" msgstr "不能绘制纹理: %s" #: ../src/framewin.c:665 ../src/framewin.c:676 ../src/framewin.c:692 #: ../src/framewin.c:703 ../src/framewin.c:710 ../src/framewin.c:717 #: ../src/icon.c:350 ../src/menu.c:496 #, c-format msgid "error rendering image:%s" msgstr "显示图像时出错:%s" #: ../src/framewin.c:770 #, c-format msgid "error rendering image: %s" msgstr "显示图像时出错: %s" #: ../src/icon.c:229 ../src/wdefaults.c:427 #, c-format msgid "error loading image file \"%s\": %s" msgstr "载入图像文件\"%s\"时出错: %s" #: ../src/icon.c:477 ../src/icon.c:486 #, c-format msgid "could not create directory %s" msgstr "不能建立目录 %s" #: ../src/icon.c:753 #, c-format msgid "could not find default icon \"%s\"" msgstr "找不到默认的图标\"%s\"" #: ../src/icon.c:759 #, c-format msgid "could not load default icon \"%s\":%s" msgstr "不能载入默认图标\"%s\":%s" #: ../src/main.c:193 msgid "failed to restart Window Maker." msgstr "不能重新启动Window Maker." #: ../src/main.c:196 #, c-format msgid "could not exec %s" msgstr "不能执行 %s" #: ../src/main.c:245 #, c-format msgid "%s aborted.\n" msgstr "%s 中止.\n" #: ../src/main.c:256 #, c-format msgid "Usage: %s [options]\n" msgstr "用法: %s [选项]\n" #: ../src/main.c:257 msgid "The Window Maker window manager for the X window system" msgstr "X 窗口系统的 Window Maker 窗口管理器" #: ../src/main.c:259 msgid " -display host:dpy\tdisplay to use" msgstr " -display host:dpy\t要使用的显示服务器" #: ../src/main.c:261 msgid " --no-cpp \t\tdisable preprocessing of configuration files" msgstr " --no-cpp \t\t禁止对配置文件的预处理" #: ../src/main.c:263 msgid " --no-dock\t\tdo not open the application Dock" msgstr " --no-dock\t\t不打开程序嵌入器" #: ../src/main.c:264 msgid " --no-clip\t\tdo not open the workspace Clip" msgstr " --no-clip\t\t不打开工作区夹子" #. #. puts(_(" --locale locale locale to use")); #. #: ../src/main.c:268 msgid " --visual-id visualid\tvisual id of visual to use" msgstr " --visual-id visualid\t要使用的 visual 的 visual id" #: ../src/main.c:269 msgid " --static\t\tdo not update or save configurations" msgstr " --static\t\t不更新或保存配置" #: ../src/main.c:271 msgid " --synchronous\t\tturn on synchronous display mode" msgstr " --synchronous\t\t打开同步显示模式" #: ../src/main.c:273 msgid " --version\t\tprint version and exit" msgstr " --version\t\t显示版本信息然后退出" #: ../src/main.c:274 msgid " --help\t\t\tshow this message" msgstr " --help\t\t\t显示这个信息" #: ../src/main.c:286 #, 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" "请确定你正确安装了 WindowMaker 并运行了 wmaker.inst" #: ../src/main.c:307 ../src/main.c:312 #, c-format msgid "%s:could not execute initialization script" msgstr "%s:不能执行初始化脚本" #: ../src/main.c:332 ../src/main.c:337 #, c-format msgid "%s:could not execute exit script" msgstr "%s:不能执行退出脚本" #: ../src/main.c:410 ../src/main.c:417 ../src/main.c:425 ../src/main.c:441 #, c-format msgid "too few arguments for %s" msgstr "%s 的参数太少" #: ../src/main.c:429 #, c-format msgid "bad value for visualid: \"%s\"" msgstr "visualid 的值不正确: \"%s\"" #: ../src/main.c:449 #, c-format msgid "%s: invalid argument '%s'\n" msgstr "%s: 无效参数 '%s'\n" #: ../src/main.c:450 #, c-format msgid "Try '%s --help' for more information\n" msgstr "用 '%s --help' 得到更多信息\n" #: ../src/main.c:493 msgid "X server does not support locale" msgstr "X 服务器不支持地区设置" #: ../src/main.c:496 msgid "cannot set locale modifiers" msgstr "不能设置地区设置修饰符" #: ../src/main.c:513 #, c-format msgid "could not open display \"%s\"" msgstr "不能打开显示服务器 \"%s\"" #: ../src/menu.c:303 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:749 msgid "selection timed-out" msgstr "文字选择超时" #: ../src/misc.c:765 msgid "Program Arguments" msgstr "程序参数" #: ../src/misc.c:766 msgid "Enter command arguments:" msgstr "输入命令参数:" #: ../src/misc.c:859 msgid "unable to get dropped data from DND drop" msgstr "不能从 DND 拖放中提取拖放的数据" #: ../src/misc.c:867 msgid "error getting dropped data from DND drop" msgstr "从 DND 拖放中提取拖放数据时发生错误" #: ../src/misc.c:873 msgid "out of memory while getting data from DND drop" msgstr "从 DND 拖放中提取拖放数据时内存不足" #: ../src/misc.c:918 ../src/misc.c:1058 #, c-format msgid "out of memory during expansion of \"%s\"" msgstr "在展开\"%s\"时内存不足" #: ../src/misc.c:972 msgid "out of memory during expansion of \"%w\"" msgstr "在展开\"%w\"时内存不足" #: ../src/misc.c:990 msgid "out of memory during expansion of \"%W\"" msgstr "在展开\"%W\"时内存不足" #: ../src/misc.c:1006 msgid "out of memory during expansion of \"%a\"" msgstr "在展开\"%a\"时内存不足" #: ../src/misc.c:1037 #, c-format msgid "out of memory during expansion of \"%d\"" msgstr "在展开\"%d\"时内存不足" #: ../src/misc.c:1051 msgid "selection not available" msgstr "文本选择不可用" #: ../src/misc.c:1123 ../src/misc.c:1129 #, c-format msgid "bad window name value in %s state info" msgstr "在 %s 状态信息中窗口名字错" #: ../src/misc.c:1384 msgid "could not send message to background image helper" msgstr "不能发送消息到背景图像辅助程序" #: ../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. If it's a string, try " "enclosing it with \"." msgstr "需要一个字符串,字典,数据或者数组.如果它是个字符串,试用\"来括起它." #: ../src/proplist.c:434 msgid "Comments are not allowed inside WindowMaker owned domain files." msgstr "在 WindowMaker 拥有的域文件里不能有注释." #: ../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:44 #, c-format msgid "could not parse color \"%s\"" msgstr "不能分析颜色\"%s\"" #: ../src/resources.c:48 #, c-format msgid "could not allocate color \"%s\"" msgstr "不能分配颜色\"%s\"" #: ../src/rootmenu.c:188 ../src/rootmenu.c:190 msgid "Exit" msgstr "退出" #: ../src/rootmenu.c:189 msgid "Exit window manager?" msgstr "退出窗口管理器?" #: ../src/rootmenu.c:225 msgid "Close X session" msgstr "关闭 X 会话" #: ../src/rootmenu.c:226 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:228 ../src/winmenu.c:505 msgid "Close" msgstr "关闭" #: ../src/rootmenu.c:239 msgid "Kill X session" msgstr "中止 X 会话" #: ../src/rootmenu.c:240 msgid "" "Kill Window System session?\n" "(all applications will be closed)" msgstr "" "强行结束窗口系统会话?\n" "(所有的程序会被关闭)" #: ../src/rootmenu.c:507 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\" for entry %s" msgstr "%s:入口%s的快捷键\"%s\"是无效的" #: ../src/rootmenu.c:515 #, c-format msgid "%s:invalid key in shortcut \"%s\" for entry %s" msgstr "%s:入口 %s 的快捷键\"%s\"含有无效键" #: ../src/rootmenu.c:568 #, c-format msgid "%s: unmatched '\"' in menu file" msgstr "%s: 菜单文件中'\"'未配对" #: ../src/rootmenu.c:618 #, c-format msgid "%s: missing command" msgstr "%s: 缺少命令" #: ../src/rootmenu.c:651 #, c-format msgid "invalid OPEN_MENU specification: %s" msgstr "无效的 OPEN_MENU 定义: %s" #: ../src/rootmenu.c:699 #, c-format msgid "%s:could not stat menu" msgstr "%s:不能启动菜单" #: ../src/rootmenu.c:707 #, c-format msgid "%s:could not stat menu:%s" msgstr "%s:不能启动菜单:%s" #: ../src/rootmenu.c:725 #, c-format msgid "too many parameters in OPEN_MENU: %s" msgstr "OPEN_MENU 有太多的参数: %s" #: ../src/rootmenu.c:761 msgid "" "There are more than one WORKSPACE_MENU commands in the applications menu. " "Only one is allowed." msgstr "在应用程序菜单中有多个'WORKSPACE_MENU'命令.只允许有一个." #: ../src/rootmenu.c:790 ../src/rootmenu.c:808 ../src/rootmenu.c:818 #, c-format msgid "%s:missing parameter for menu command \"%s\"" msgstr "%s:缺少菜单命令\"%s\"的参数" #: ../src/rootmenu.c:882 #, c-format msgid "%s:unknown command \"%s\" in menu config." msgstr "%s:在菜单配置中有未知的命令\"%s\"." #: ../src/rootmenu.c:890 #, c-format msgid "%s:can't add shortcut for entry \"%s\"" msgstr "%s:不能给入口\"%s\"添加快捷方式" #: ../src/rootmenu.c:1027 #, c-format msgid "%s:maximal line size exceeded in menu config: %s" msgstr "%s:在菜单配置中超过了最大行长度: %s" #: ../src/rootmenu.c:1049 ../src/rootmenu.c:1141 ../src/rootmenu.c:1242 #, c-format msgid "%s:missing command in menu config: %s" msgstr "%s:在菜单配置中缺少命令: %s" #: ../src/rootmenu.c:1079 #, c-format msgid "%s:syntax error in menu file:END declaration missing" msgstr "%s:菜单文件语法错误:没有'END'声明" #: ../src/rootmenu.c:1108 ../src/rootmenu.c:1207 msgid "could not make arguments for menu file preprocessor" msgstr "不能给菜单文件预处理器提供参数" #: ../src/rootmenu.c:1114 ../src/rootmenu.c:1214 #, c-format msgid "%s:could not open/preprocess menu file" msgstr "%s:不能打开或预处理菜单文件" #: ../src/rootmenu.c:1126 ../src/rootmenu.c:1227 #, c-format msgid "could not open menu file \"%s\": %s" msgstr "不能打开菜单文件 \"%s\": %s" #: ../src/rootmenu.c:1153 #, c-format msgid "%s:invalid menu file. MENU command is missing" msgstr "%s:无效的菜单文件. 缺少'MENU'命令" #: ../src/rootmenu.c:1162 msgid "error reading preprocessed menu data" msgstr "在读取预处理后的菜单数据时出错" #: ../src/rootmenu.c:1254 #, c-format msgid "%s:no title given for the root menu" msgstr "%s:没有给出根窗口菜单的标题" #: ../src/rootmenu.c:1337 ../src/rootmenu.c:1404 ../src/rootmenu.c:1448 #, c-format msgid "out of memory while constructing directory menu %s" msgstr "在构造目录菜单%s时内存不足" #: ../src/rootmenu.c:1347 #, c-format msgid "%s:could not stat file \"%s\" in menu directory" msgstr "%s:不能查看菜单目录中的文件\"%s\"" #: ../src/rootmenu.c:1502 msgid "Commands" msgstr "命令" #: ../src/rootmenu.c:1505 msgid "Restart" msgstr "重新启动" #: ../src/rootmenu.c:1506 msgid "Exit..." msgstr "退出..." #: ../src/rootmenu.c:1551 #, c-format msgid "could not find menu file \"%s\" referenced in WMRootMenu" msgstr "找不到在'WMRootMenu'中引用的菜单文件\"%s\"" #: ../src/rootmenu.c:1558 #, c-format msgid "could not access menu \"%s\" referenced in WMRootMenu" msgstr "不能存取在'WMRootMenu'中引用的菜单 \"%s\"" #: ../src/rootmenu.c:1569 #, c-format msgid "" "using default menu file \"%s\" as the menu referenced in WMRootMenu could " "not be found " msgstr "当找不到在'WMRootMenu'中引用的菜单时试用默认菜单\"%s\"" #: ../src/rootmenu.c:1592 ../src/rootmenu.c:1668 #, c-format msgid "%s:format error in root menu configuration \"%s\"" msgstr "%s:根窗口菜单配置\"%s\"格式错误" #: ../src/rootmenu.c:1755 msgid "" "The applications menu could not be loaded. Look at the console output for a " "detailed description of the errors." msgstr "不能载入应用程序菜单.请在控制台输出中查看错误的详细说明" #: ../src/screen.c:459 #, c-format msgid "could not load logo image for panels: %s" msgstr "不能载入面板使用的标志图像: %s" #: ../src/screen.c:463 #, c-format msgid "error making logo image for panel:%s" msgstr "创建面板使用的标志图像时出错:%s" #: ../src/screen.c:751 #, c-format msgid "could not initialize graphics library context: %s" msgstr "不能初始化图形库上下文: %s" #: ../src/screen.c:782 msgid "could not do initialization of WINGs widget set" msgstr "不能初始化'WINGs'的构件集" #: ../src/screen.c:1114 #, c-format msgid "could not save session state in %s" msgstr "不能在%s中保存会话的状态" #: ../src/session.c:182 ../src/wdefaults.c:575 ../src/winspector.c:354 #, c-format msgid "can't convert \"%s\" to boolean" msgstr "不能把\"%s\"转化为布尔值" #: ../src/session.c:981 msgid "out of memory while saving session state" msgstr "在保存会话状态时内存不足" #: ../src/session.c:1072 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:1206 msgid "connection to the session manager was lost" msgstr "到会话管理器的连接中断" #: ../src/stacking.c:73 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:259 #, c-format msgid "got signal %i (%s) - restarting\n" msgstr "收到信号 %i (%s) - 正在重新启动\n" #: ../src/startup.c:261 #, 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:303 msgid "" "crashed while trying to do some post-crash cleanup. Aborting immediatelly." msgstr "在试图做崩溃后处理时崩溃.立即中止." #. we try to restart Window Maker #: ../src/startup.c:337 msgid "trying to restart Window Maker..." msgstr "正在尝试重新启动 Window Maker..." #: ../src/startup.c:342 msgid "trying to start alternate window manager..." msgstr "正在尝试启动其他的窗口管理器..." #: ../src/startup.c:347 msgid "failed to start alternate window manager. Aborting." msgstr "无法启动替代的窗口管理器.中止." #: ../src/startup.c:349 msgid "" "a fatal error has occured, probably due to a bug. Please fill the included " "BUGFORM and report it." msgstr "" "发生一个致命错误,也许是因为一个 bug.请填写好软件中包含的 BUGFORM 并报告 bug." #: ../src/startup.c:777 #, 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:805 msgid "XKB is not supported. KbdModeLock is automatically disabled." msgstr "不支持 XKB. 自动关闭 KbdModeLock 功能." #: ../src/startup.c:824 msgid "it seems that there is already a window manager running" msgstr "看起来已经有窗口管理器在运行了" #: ../src/startup.c:830 #, c-format msgid "could not manage screen %i" msgstr "不能管理屏幕 %i" #: ../src/startup.c:890 msgid "could not manage any screen" msgstr "不能管理任何屏幕" #: ../src/switchmenu.c:114 msgid "Windows" msgstr "窗口" #: ../src/texture.c:290 ../src/texture.c:334 #, c-format msgid "image file \"%s\" used as texture could not be found." msgstr "找不到被用来作为纹理的文件\"%s\"." #: ../src/texture.c:296 ../src/texture.c:340 #, c-format msgid "could not load texture pixmap \"%s\":%s" msgstr "不能载入纹理位图\"%s\":%s" #: ../src/texture.c:400 #, c-format msgid "library \"%s\" cound not be opened." msgstr "不能打开库\"%s\"." #: ../src/texture.c:409 #, c-format msgid "function \"%s\" not found in library \"%s\"" msgstr "没有在库\"%s\"中找到函数\"%s\"" #: ../src/texture.c:416 msgid "function textures not supported on this system, sorry." msgstr "在这个系统中没有对函索纹理功能的支持." #: ../src/wdefaults.c:421 #, c-format msgid "could not find icon file \"%s\"" msgstr "找不到图标文件\"%s\"" #: ../src/window.c:2607 ../src/window.c:2741 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:126 msgid "" "This will kill the application.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" "这会强行中止指定的程序.\n" "没有保存的修改会丢失.\n" "请确定." #: ../src/winmenu.c:269 ../src/winmenu.c:277 msgid "Set Shortcut" msgstr "设置快捷键" #: ../src/winmenu.c:357 ../src/winmenu.c:403 msgid "could not create submenu for window menu" msgstr "不能为窗口菜单建立子菜单" #: ../src/winmenu.c:412 msgid "Keep at bottom" 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:440 ../src/winmenu.c:575 msgid "Maximize" msgstr "最大化" #: ../src/winmenu.c:448 ../src/winmenu.c:561 msgid "Miniaturize" msgstr "最小化" #: ../src/winmenu.c:457 ../src/winmenu.c:592 msgid "Shade" msgstr "卷起" #: ../src/winmenu.c:473 msgid "Resize/Move" msgstr "调整大小/移动" #: ../src/winmenu.c:481 msgid "Select" msgstr "选择" #: ../src/winmenu.c:489 msgid "Move To" msgstr "移到" #: ../src/winmenu.c:494 msgid "Attributes..." msgstr "属性..." #: ../src/winmenu.c:496 msgid "Options" msgstr "选项" #: ../src/winmenu.c:556 msgid "Deminiaturize" msgstr "恢复大小" #: ../src/winmenu.c:570 msgid "Unmaximize" msgstr "恢复大小" #: ../src/winmenu.c:587 msgid "Unshade" msgstr "恢复" #: ../src/winspector.c:288 #, c-format msgid "Could not find icon \"%s\" specified for this window" msgstr "找不到给窗口指定的图标\"%s\"" #: ../src/winspector.c:304 #, c-format msgid "Could not open specified icon \"%s\":%s" msgstr "不能打开指定的图标\"%s\":%s" #: ../src/winspector.c:1052 msgid "Save" msgstr "保存" #: ../src/winspector.c:1060 msgid "Apply" msgstr "应用" #: ../src/winspector.c:1066 msgid "Reload" msgstr "重新载入" #: ../src/winspector.c:1075 ../src/winspector.c:1085 msgid "Window Specification" msgstr "窗口规格" #: ../src/winspector.c:1076 msgid "Window Attributes" msgstr "窗口属性" #: ../src/winspector.c:1077 msgid "Advanced Options" msgstr "高级选项" #: ../src/winspector.c:1078 msgid "Icon and Initial Workspace" msgstr "图标和初始工作区" #: ../src/winspector.c:1079 msgid "Application Specific" msgstr "应用细节" #: ../src/winspector.c:1093 msgid "Defaults for all windows" msgstr "所有窗口使用的默认值" #: ../src/winspector.c:1144 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 "" "保存后,配置会应用到\n" "把'WM_CLASS'特性设置为\n" "上面选中的名字的所有窗口" #: ../src/winspector.c:1151 msgid "Attributes" msgstr "属性" #: ../src/winspector.c:1162 msgid "Disable Titlebar" msgstr "不使用标题行" #: ../src/winspector.c:1164 msgid "" "Remove the titlebar of this window.\n" "To access the window commands menu of a window\n" "without it's titlebar, press Control+Esc (or the\n" "equivalent shortcut, if you changed the default\n" "settings)." msgstr "" "去掉这个窗口的标题行.\n" "如果要使用没有标题行的窗口的窗口命令\n" "菜单,按下 Control+Esc (如果你改变了\n" "默认设置, 那么使用相同功能的\n" "的快捷方式" #: ../src/winspector.c:1171 msgid "Disable Resizebar" msgstr "不显示调整大小边框" #: ../src/winspector.c:1173 msgid "Remove the resizebar of this window." msgstr "去掉这个窗口的调整大小边框." #: ../src/winspector.c:1176 msgid "Disable Close Button" msgstr "不显示关闭按钮" #: ../src/winspector.c:1178 msgid "Remove the `close window' button of this window." msgstr "去掉这个窗口的`关闭窗口'按钮." #: ../src/winspector.c:1181 msgid "Disable Miniaturize Button" msgstr "不显示最小化按钮" #: ../src/winspector.c:1183 msgid "Remove the `miniaturize window' button of the window." msgstr "去掉这个窗口的`最小化窗口'按钮." #: ../src/winspector.c:1186 msgid "Keep on Top / Floating" msgstr "保持在上/浮动" #: ../src/winspector.c:1188 msgid "" "Keep the window over other windows, not allowing\n" "them to cover it." msgstr "" "保持这个窗口在其他窗口之上, 不允许它们覆盖\n" "这个窗口." #: ../src/winspector.c:1192 msgid "Keep at Bottom / Sunken" msgstr "保持在下/埋没" #: ../src/winspector.c:1194 msgid "Keep the window under all other windows." msgstr "保持这个窗口在其他窗口之下." #: ../src/winspector.c:1199 msgid "Make window occupy all workspaces." msgstr "让窗口占据所有的工作空间." #: ../src/winspector.c:1202 msgid "Start Miniaturized" msgstr "启动时最小化" #: ../src/winspector.c:1204 msgid "" "Make the window be automatically miniaturized when it's\n" "first shown." msgstr "" "当窗口第一次出现时, 自动地使它最小化." #: ../src/winspector.c:1208 msgid "Start Maximized" msgstr "启动时最大化" #: ../src/winspector.c:1210 msgid "" "Make the window be automatically maximized when it's\n" "first shown." msgstr "" "当窗口第一次出现时, 自动地使它最大化." #: ../src/winspector.c:1214 msgid "Skip Window List" msgstr "跳过窗口列表" #: ../src/winspector.c:1216 msgid "Do not list the window in the window list menu." msgstr "不在窗口列表菜单中列出这个窗口." #: ../src/winspector.c:1231 msgid "Advanced" msgstr "高级" #: ../src/winspector.c:1246 msgid "Ignore HideOthers" msgstr "忽略'隐藏其他'选项" #: ../src/winspector.c:1248 msgid "" "Do not hide the window when issuing the\n" "`HideOthers' command." msgstr "在执行`隐藏其他'命令时, 不隐藏这个窗口" #: ../src/winspector.c:1252 msgid "Don't Bind Keyboard Shortcuts" msgstr "不关联快捷键" #: ../src/winspector.c:1254 msgid "" "Do not bind keyboard shortcuts from Window Maker\n" "when this window is focused. This will allow the\n" "window to receive all key combinations regardless\n" "of your shortcut configuration." msgstr "" "在焦点在这个窗口时, 不关联 Window Maker\n" "的键盘快捷方式. 这样就允许这个窗口接收\n" "所有的键组合, 而不管快捷方式是怎样的." #: ../src/winspector.c:1260 msgid "Don't Bind Mouse Clicks" msgstr "不关联鼠标点击" #: ../src/winspector.c:1262 msgid "" "Do not bind mouse actions, such as `Alt'+drag\n" "in the window (when Alt is the modifier you have\n" "configured)." msgstr "" "不关联鼠标动作, 比如, 在窗口中使用 `Alt'+拖动\n" "(当 Alt 是你配置的修饰键时)." #: ../src/winspector.c:1267 msgid "Keep Inside Screen" msgstr "保持在屏幕内" #: ../src/winspector.c:1269 msgid "" "Do not allow the window to move itself completely\n" "outside the screen. For bug compatibility.\n" msgstr "" "不允许窗口把自己完全移动到屏幕之外. 这是为了\n" "兼容某些缺陷.\n" #: ../src/winspector.c:1273 msgid "Don't Let It Take Focus" msgstr "不允许取得焦点" #: ../src/winspector.c:1275 msgid "" "Do not let the window take keyboard focus when you\n" "click on it." msgstr "" "当在窗口上点击时, 不允许它取得键盘输入焦点." #: ../src/winspector.c:1279 msgid "Don't Save Session" msgstr "不保存会话" #: ../src/winspector.c:1281 msgid "" "Do not save the associated application in the\n" "session's state, so that it won't be restarted\n" "together with other applications when Window Maker\n" "starts." msgstr "" "不保存在会话状态中相关联的应用, 这样在 Window\n" "Maker 启动的时候, 不会重新启动它和其他的应用\n." #: ../src/winspector.c:1287 msgid "Emulate Application Icon" msgstr "模拟程序图标" #: ../src/winspector.c:1289 msgid "" "Make this window act as an application that provides\n" "enough information to Window Maker for a dockable\n" "application icon to be created." msgstr "" "使这个窗口能够给 Window Maker 提供足够的信息\n" "以建立可嵌入的应用程序图标." #: ../src/winspector.c:1294 msgid "Full Screen Maximization" msgstr "最大化到满屏幕" #: ../src/winspector.c:1296 msgid "" "Make the window use the whole screen space when it's\n" "maximized. The titlebar and resizebar will be moved\n" "to outside the screen." msgstr "" "在窗口最大化时, 让窗口使用整个的屏幕空间.\n" "标题行和调整大小边框会在屏幕外." #: ../src/winspector.c:1302 msgid "Disable Language Button" msgstr "不显示语言按钮" #: ../src/winspector.c:1304 msgid "Remove the `toggle language' button of the window." msgstr "去掉窗口的`切换语言'按钮." #: ../src/winspector.c:1321 msgid "Miniwindow Image" msgstr "小窗口图像" #: ../src/winspector.c:1340 msgid "Update" msgstr "更新" #: ../src/winspector.c:1355 msgid "Icon File Name:" msgstr "图标文件名:" #: ../src/winspector.c:1367 msgid "Ignore client supplied icon" msgstr "忽略程序内建的图标" #: ../src/winspector.c:1374 msgid "Initial Workspace" msgstr "初始工作区" #: ../src/winspector.c:1376 msgid "The workspace to place the window when it's first shown." msgstr "窗口第一次出现时放置的工作空间." #: ../src/winspector.c:1382 msgid "Nowhere in particular" msgstr "无特别处理" #: ../src/winspector.c:1400 msgid "Application Wide" msgstr "全部应用" #: ../src/winspector.c:1411 msgid "Start Hidden" msgstr "启动后隐藏" #: ../src/winspector.c:1413 msgid "Automatically hide application when it's started." msgstr "当程序启动后自动隐藏." #: ../src/winspector.c:1416 msgid "No Application Icon" msgstr "没有程序图标" #: ../src/winspector.c:1418 msgid "" "Disable the application icon for the application.\n" "Note that you won't be able to dock it anymore,\n" "and any icons that are already docked will stop\n" "working correctly." msgstr "" "不使用应用程序的图标.\n" "注意,你不能再把它嵌入,\n" "并且已经嵌入的图标不能\n" "正确的工作." #: ../src/workspace.c:107 ../src/workspace.c:108 ../src/workspace.c:703 #, c-format msgid "Workspace %i" msgstr "工作区 %i" #: ../src/workspace.c:760 msgid "Workspaces" msgstr "工作区" #: ../src/workspace.c:762 msgid "could not create Workspace menu" msgstr "不能建立工作区菜单" #: ../src/workspace.c:769 msgid "New" msgstr "新建" #: ../src/workspace.c:770 msgid "Destroy Last" msgstr "去掉最后一个" #: ../src/xutil.c:228 msgid "invalid data in selection" msgstr "文本选择中有无效数据" WindowMaker-0.95.9/po/da.po0000644000175000017500000020677313431646201012347 00000000000000# Window Maker 0.80.0 fordansket # Copyright (C) 1999 Free Software Foundation, Inc. # Birger Langkjer , 1999. # msgid "" msgstr "" "Project-Id-Version: Window Maker 0.60.0\n" "POT-Creation-Date: 2002-02-17 19:22+0100\n" "PO-Revision-Date: 2002-02-20 20:56+0100\n" "Last-Translator: Birger Langkjer \n" "Language-Team: Danish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" # ../src/appicon.c:572 ../src/dialog.c:223 ../src/dock.c:3362 # ../src/dockedapp.c:210 ../src/dockedapp.c:251 ../src/misc.c:1406 # ../src/rootmenu.c:1764 ../src/winspector.c:290 ../src/winspector.c:306 #: ../src/appicon.c:426 ../src/dialog.c:282 ../src/dock.c:3325 #: ../src/dockedapp.c:230 ../src/main.c:273 ../src/rootmenu.c:1853 #: ../src/winspector.c:389 ../src/winspector.c:406 msgid "Error" msgstr "Fejl" # ../src/appicon.c:573 #: ../src/appicon.c:427 msgid "Could not open specified icon file" msgstr "Kunne ikke åbne specificeret ikonfil" # ../src/appicon.c:574 ../src/dialog.c:122 ../src/dialog.c:223 # ../src/dialog.c:460 ../src/dialog.c:1477 ../src/dock.c:515 # ../src/dock.c:523 ../src/dock.c:547 ../src/dock.c:3363 # ../src/dockedapp.c:211 ../src/dockedapp.c:257 ../src/dockedapp.c:371 # ../src/misc.c:1406 ../src/rootmenu.c:1768 ../src/winspector.c:291 # ../src/winspector.c:307 #: ../src/appicon.c:428 ../src/dialog.c:179 ../src/dialog.c:282 #: ../src/dialog.c:729 ../src/dialog.c:1818 ../src/dock.c:526 #: ../src/dock.c:534 ../src/dock.c:558 ../src/dock.c:3326 #: ../src/dockedapp.c:231 ../src/dockedapp.c:426 ../src/main.c:273 #: ../src/rootmenu.c:1857 ../src/winspector.c:390 ../src/winspector.c:407 msgid "OK" msgstr "OK" # ../src/appicon.c:601 ../src/dock.c:277 #: ../src/appicon.c:456 ../src/dock.c:264 msgid "" " will be forcibly closed.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" " vil blive brat afsluttet.\n" "Alle ugemte data bliver tabt.\n" "Bekræft venligst." # ../src/appicon.c:607 ../src/dock.c:282 ../src/winmenu.c:125 #: ../src/appicon.c:464 ../src/dock.c:283 ../src/winmenu.c:125 msgid "Kill Application" msgstr "Dræb program" # ../src/appicon.c:608 ../src/dock.c:283 ../src/winmenu.c:127 #: ../src/appicon.c:465 ../src/dock.c:284 ../src/winmenu.c:127 msgid "Yes" msgstr "Ja" # ../src/appicon.c:608 ../src/dock.c:283 ../src/winmenu.c:127 #: ../src/appicon.c:465 ../src/dock.c:284 ../src/winmenu.c:127 msgid "No" msgstr "Nej" # ../src/appicon.c:626 ../src/dock.c:1205 #: ../src/appicon.c:495 ../src/dock.c:1177 ../src/dock.c:3491 msgid "Unhide Here" msgstr "Vis igen her" # ../src/appicon.c:627 ../src/appicon.c:652 ../src/dock.c:1207 # ../src/dock.c:1209 ../src/dock.c:3529 ../src/dock.c:3531 # ../src/winmenu.c:465 #: ../src/appicon.c:496 ../src/appicon.c:521 ../src/dock.c:1179 #: ../src/dock.c:1181 ../src/dock.c:3503 ../src/winmenu.c:465 msgid "Hide" msgstr "Skjul" # ../src/appicon.c:628 #: ../src/appicon.c:497 msgid "Set Icon..." msgstr "Vælg ikon..." # ../src/appicon.c:629 ../src/dock.c:1213 ../src/rootmenu.c:227 # ../src/rootmenu.c:241 ../src/winmenu.c:512 #: ../src/appicon.c:498 ../src/dock.c:1185 ../src/rootmenu.c:248 #: ../src/rootmenu.c:264 ../src/winmenu.c:520 msgid "Kill" msgstr "Dræb" # ../src/appicon.c:650 ../src/dock.c:3527 #: ../src/appicon.c:519 ../src/dock.c:3501 msgid "Unhide" msgstr "Vis igen" #: ../src/application.c:398 #, c-format msgid "recreating missing icon '%s'" msgstr "genskaber manglende ikon '%s'" # ../src/defaults.c:907 ../src/defaults.c:1001 #: ../src/defaults.c:922 ../src/defaults.c:1011 #, c-format msgid "Domain %s (%s) of global defaults database is corrupted!" msgstr "Domænet %s (%s) i den globale standard-database er ødelagt!" # ../src/defaults.c:1006 #: ../src/defaults.c:927 #, c-format msgid "could not load domain %s from global defaults database" msgstr "kunne ikke indlæse domænet %s fra den globale standard-database" # ../src/defaults.c:845 ../src/startup.c:767 ../src/startup.c:785 # ../src/startup.c:791 #: ../src/defaults.c:949 ../src/startup.c:884 ../src/startup.c:902 #: ../src/startup.c:908 #, c-format msgid "could not read domain \"%s\" from defaults database" msgstr "kunne ikke læse domænet \"%s\" fra standard-databasen" # ../src/defaults.c:891 ../src/defaults.c:1016 ../src/defaults.c:1055 # ../src/defaults.c:1085 #: ../src/defaults.c:995 ../src/defaults.c:1099 ../src/defaults.c:1140 #: ../src/defaults.c:1196 #, c-format msgid "Domain %s (%s) of defaults database is corrupted!" msgstr "Domænet %s (%s) i standard-databasen er ødelagt!" # ../src/defaults.c:896 ../src/defaults.c:1037 ../src/defaults.c:1068 # ../src/defaults.c:1094 #: ../src/defaults.c:1000 ../src/defaults.c:1119 ../src/defaults.c:1176 #: ../src/defaults.c:1205 ../src/menureader.c:397 #, c-format msgid "could not load domain %s from user defaults database" msgstr "kunne ikke indlæse domænet \"%s\" fra bruger-standard-database" # ../src/defaults.c:926 #: ../src/defaults.c:1030 #, c-format msgid "could not load domain %s from global defaults database (%s)" msgstr "kunne ikke indlæse domænet %s fra den globale standard-database (%s)" # ../src/screen.c:459 #: ../src/defaults.c:1166 ../src/screen.c:458 #, c-format msgid "could not load logo image for panels: %s" msgstr "kunne ikke indlæse logobillede for panelerne: %s" # ../src/defaults.c:1445 ../src/defaults.c:1559 ../src/defaults.c:1977 # ../src/defaults.c:1994 ../src/defaults.c:2097 ../src/defaults.c:2144 # ../src/wdefaults.c:560 ../src/wdefaults.c:596 #. --------------------------- Local ----------------------- #: ../src/defaults.c:1414 ../src/defaults.c:1556 ../src/defaults.c:1668 #: ../src/defaults.c:2147 ../src/defaults.c:2164 ../src/defaults.c:2209 #: ../src/defaults.c:2256 ../src/defaults.c:2729 ../src/wdefaults.c:571 #: ../src/wdefaults.c:607 #, c-format msgid "Wrong option format for key \"%s\". Should be %s." msgstr "Forkert konfigurationsformat for tast \"%s\". Skulle have været %s." # ../src/defaults.c:1384 ../src/defaults.c:1418 ../src/defaults.c:1450 # ../src/defaults.c:1463 ../src/defaults.c:1478 ../src/defaults.c:1492 # ../src/defaults.c:1564 ../src/defaults.c:1576 ../src/defaults.c:1982 # ../src/defaults.c:1999 ../src/defaults.c:2012 ../src/defaults.c:2102 # ../src/defaults.c:2118 ../src/defaults.c:2149 ../src/defaults.c:2239 #: ../src/defaults.c:1416 ../src/defaults.c:1497 ../src/defaults.c:1529 #: ../src/defaults.c:1561 ../src/defaults.c:1574 ../src/defaults.c:1589 #: ../src/defaults.c:1603 ../src/defaults.c:1673 ../src/defaults.c:1685 #: ../src/defaults.c:2152 ../src/defaults.c:2169 ../src/defaults.c:2182 #: ../src/defaults.c:2214 ../src/defaults.c:2230 ../src/defaults.c:2261 #: ../src/defaults.c:2348 ../src/defaults.c:2734 ../src/defaults.c:2745 #, c-format msgid "using default \"%s\" instead" msgstr "bruger standard \"%s\" istedet" # ../src/defaults.c:1332 #: ../src/defaults.c:1447 #, c-format msgid "wrong option value for key \"%s\". Should be one of %s" msgstr "forkert konfigurationsværdi for tast \"%s\". Skulle have været %s." # ../src/defaults.c:1379 #: ../src/defaults.c:1492 #, c-format msgid "can't convert \"%s\" to boolean for key \"%s\"" msgstr "kan ikke konvertere \"%s\" til boolsk værdi for tast \"%s\"" # ../src/defaults.c:1415 #: ../src/defaults.c:1526 #, c-format msgid "can't convert \"%s\" to integer for key \"%s\"" msgstr "kan ikke konvertere \"%s\" til heltalsværdi for tast \"%s\"" # ../src/defaults.c:1458 #: ../src/defaults.c:1569 #, c-format msgid "Incorrect number of elements in array for key \"%s\"." msgstr "Forkert antal elementer i array for tast \"%s\"." # ../src/defaults.c:1473 #: ../src/defaults.c:1584 #, c-format msgid "Wrong value for key \"%s\". Should be Coordinate." msgstr "Forkert værdi for tast \"%s\". Burde være Coordinate." # ../src/defaults.c:1488 #: ../src/defaults.c:1599 #, c-format msgid "can't convert array to integers for \"%s\"." msgstr "kan ikke konvertere array til heltal for \"%s\"." # ../src/defaults.c:1686 ../src/defaults.c:1718 ../src/defaults.c:1734 # ../src/defaults.c:1780 ../src/defaults.c:1820 ../src/defaults.c:1858 # ../src/defaults.c:1874 #: ../src/defaults.c:1797 ../src/defaults.c:1829 ../src/defaults.c:1845 #: ../src/defaults.c:1874 ../src/defaults.c:1897 ../src/defaults.c:1950 #: ../src/defaults.c:1990 ../src/defaults.c:2028 ../src/defaults.c:2044 #, c-format msgid "\"%s\" is not a valid color name" msgstr "\"%s\" er et ugyldigt farvenavn" # ../src/defaults.c:1699 #: ../src/defaults.c:1810 ../src/defaults.c:1862 msgid "bad number of arguments in gradient specification" msgstr "forkert antal argumenter i definition af farveovergang" # ../src/defaults.c:1753 #: ../src/defaults.c:1923 msgid "too few arguments in multicolor gradient specification" msgstr "for få argumenter i definition af flerfarve-farveovergang" # ../src/defaults.c:1847 #: ../src/defaults.c:2017 msgid "bad number of arguments in textured gradient specification" msgstr "forkert antal argumenter i definition af tekstur-farveovergang" # ../src/defaults.c:1890 #: ../src/defaults.c:2060 #, c-format msgid "bad opacity value for tgradient texture \"%s\". Should be [0..255]" msgstr "" "forkert gennemsigtighedsværdi for tgradient-tekstur \"%s\". Burde være " "[0..255]" # ../src/defaults.c:1950 #: ../src/defaults.c:2120 #, c-format msgid "could not initialize library %s" msgstr "kunne ikke opstarte biblitek %s" # ../src/defaults.c:1953 #: ../src/defaults.c:2123 #, c-format msgid "could not find function %s::%s" msgstr "kunne ikke finde funktion %s::%s" # ../src/defaults.c:1960 #: ../src/defaults.c:2130 #, c-format msgid "invalid texture type %s" msgstr "ugyldig teksturtype %s" # ../src/defaults.c:2007 #: ../src/defaults.c:2177 #, c-format msgid "Error in texture specification for key \"%s\"" msgstr "Fejl i teksturspecifikation for tast \"%s\"" # ../src/defaults.c:2114 #: ../src/defaults.c:2226 msgid "Wrong type for workspace background. Should be a texture type." msgstr "Forkert type baggrund for arbejdsbord. Bør være en tekstur." # ../src/defaults.c:2162 #: ../src/defaults.c:2274 #, c-format msgid "Wrong type for background of workspace %i. Should be a texture." msgstr "Forkert type baggrund for arbejdsbord %i. Bør være en tekstur." # ../src/defaults.c:2206 #: ../src/defaults.c:2316 msgid "could not load any usable font!!!" msgstr "ingen brugbare fonte fundet!!!" # ../src/defaults.c:2234 #: ../src/defaults.c:2343 #, c-format msgid "could not get color for key \"%s\"" msgstr "kunne ikke finde farve for tast \"%s\"" # ../src/defaults.c:2294 ../src/rootmenu.c:493 #: ../src/defaults.c:2401 ../src/rootmenu.c:526 #, c-format msgid "%s:invalid key modifier \"%s\"" msgstr "%s: ugyldigt tasteargument \"%s\"" # ../src/defaults.c:2306 #: ../src/defaults.c:2413 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\"" msgstr "%s:ugyldig tastaturgenvej \"%s\"" # ../src/defaults.c:2313 #: ../src/defaults.c:2420 #, c-format msgid "%s:invalid key in shortcut \"%s\"" msgstr "%s:ugyldig tast i tastaturgenvej \"%s\"" # ../src/defaults.c:2339 #: ../src/defaults.c:2445 #, c-format msgid "%s: modifier key %s is not valid" msgstr "%s: modificeringstast %s er ugyldig" # ../src/defaults.c:2373 #: ../src/defaults.c:2477 #, c-format msgid "could not load image in option %s: %s" msgstr "kunne ikke indlæse billede i konfiguration %s: %s" # ../src/proplist.c:453 #: ../src/defaults.c:2594 #, c-format msgid "failed to open bitmap file \"%s\"" msgstr "kunne ikke åbne bitmapfil %s" # ../src/defaults.c:1686 ../src/defaults.c:1718 ../src/defaults.c:1734 # ../src/defaults.c:1780 ../src/defaults.c:1820 ../src/defaults.c:1858 # ../src/defaults.c:1874 #: ../src/defaults.c:2597 #, c-format msgid "\"%s\" is not a valid bitmap file" msgstr "\"%s\" er en ugyldig bitmapfil" # ../src/misc.c:919 ../src/misc.c:1059 #: ../src/defaults.c:2600 #, c-format msgid "out of memory reading bitmap file \"%s\"" msgstr "løb tør for hukommelse under læsning af bitmapfil \"%s\"" # ../src/defaults.c:1699 #: ../src/defaults.c:2639 ../src/defaults.c:2672 msgid "bad number of arguments in cursor specification" msgstr "forkert antal argumenter i markørspecifikation" #: ../src/defaults.c:2655 #, c-format msgid "unknown builtin cursor name \"%s\"" msgstr "ukendt indbygget markørnavn \"%s\"" # ../src/wdefaults.c:424 #: ../src/defaults.c:2682 ../src/defaults.c:2694 #, c-format msgid "could not find cursor bitmap file \"%s\"" msgstr "kunne ikke finde markørbitmapfil \"%s\"" # ../src/defaults.c:2007 #: ../src/defaults.c:2741 #, c-format msgid "Error in cursor specification for key \"%s\"" msgstr "Fejl i markørspecifikation for tast \"%s\"" # ../src/defaults.c:2455 #: ../src/defaults.c:2826 msgid "could not render texture for icon background" msgstr "kunne ikke lave tekstur for ikonbaggrund" # ../src/dock.c:212 ../src/dock.c:1169 ../src/dock.c:1172 ../src/dock.c:3445 #: ../src/dialog.c:135 msgid "Save workspace state" msgstr "Gem arbejdsbords status" # ../src/dialog.c:122 ../src/dialog.c:467 ../src/dock.c:547 # ../src/dockedapp.c:377 ../src/rootmenu.c:189 ../src/rootmenu.c:227 # ../src/rootmenu.c:241 #: ../src/dialog.c:179 ../src/dialog.c:736 ../src/dock.c:558 #: ../src/dockedapp.c:431 ../src/rootmenu.c:198 ../src/rootmenu.c:248 #: ../src/rootmenu.c:264 msgid "Cancel" msgstr "Annullér" # ../src/dialog.c:218 #: ../src/dialog.c:277 msgid "Could not open directory \"%s\":\n%s" msgstr "Kunne ikke åbne mappe \"%s\":\n%s" # ../src/dialog.c:271 #: ../src/dialog.c:332 msgid "Could not load image file " msgstr "Kunne ikke indlæse billedfil " # ../src/dialog.c:403 #: ../src/dialog.c:663 msgid "Directories" msgstr "Mapper" # ../src/dialog.c:412 #: ../src/dialog.c:672 msgid "Icons" msgstr "Ikoner" #: ../src/dialog.c:705 msgid "Preview" msgstr "Eksempel" # ../src/dialog.c:450 #: ../src/dialog.c:718 msgid "File Name:" msgstr "Filnavn:" # ../src/dialog.c:473 #: ../src/dialog.c:742 msgid "Choose File" msgstr "Vælg fil" # ../src/dialog.c:490 ../src/dialog.c:492 #: ../src/dialog.c:760 ../src/dialog.c:762 msgid "Icon Chooser" msgstr "Ikonvælger" #: ../src/dialog.c:1241 ../src/dialog.c:1351 #, c-format msgid "Version %s" msgstr "Version %s" # ../src/rootmenu.c:188 #: ../src/dialog.c:1348 msgid "Window Manager for X" msgstr "Vindueshåndtering for X" #: ../src/dialog.c:1373 #, c-format msgid "Using visual 0x%x: %s %ibpp " msgstr "Bruger visual 0x%x: %s %ibpp " #: ../src/dialog.c:1381 msgid "(32 thousand colors)\n" msgstr "(32 tusind farver)\n" #: ../src/dialog.c:1384 msgid "(64 thousand colors)\n" msgstr "(64 tusind farver)\n" #: ../src/dialog.c:1388 msgid "(16 million colors)\n" msgstr "(16 millioner farver)\n" #: ../src/dialog.c:1391 #, c-format msgid "(%d colors)\n" msgstr "(%d farver)\n" #: ../src/dialog.c:1401 #, c-format msgid "Total allocated memory: %i kB. Total memory in use: %i kB.\n" msgstr "Total tildelt hukommelse: %i kB. Total hukommelse i brug: %i kB.\n" #: ../src/dialog.c:1283 msgid "Image formats: " msgstr "Billedformater: " #: ../src/dialog.c:1415 msgid "" "\n" "Additional support for: " msgstr "\nYderligere understøttelse af: " #: ../src/dialog.c:1438 msgid " and " msgstr " og " #: ../src/dialog.c:1448 msgid "" "\n" "Sound disabled" msgstr "\nLyd slået fra" #: ../src/dialog.c:1450 msgid "" "\n" "Sound enabled" msgstr "\nLyd slået til" # ../src/dockedapp.c:211 #: ../src/dialog.c:1476 msgid "Info" msgstr "Info" #: ../src/dialog.c:1499 msgid "Merry Christmas!" msgstr "Glædelig jul!" #: ../src/dialog.c:1417 msgid "" " Window Maker 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.\n" "\n" " Window Maker 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.\n" "\n" " You should have received a copy of the GNU General Public License along " "with this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin Street, Fifth Floor, Boston, MA02110-1301 USA." msgstr "" #: ../src/dialog.c:1590 msgid "Legal" msgstr "Jura" # ../src/dialog.c:1401 ../src/startup.c:325 #: ../src/dialog.c:1741 ../src/startup.c:394 msgid "cannot open connection for crashing dialog panel. Aborting." msgstr "kan ikke åbne forbindelse til dialogboks der er gået ned. Afbryder." # ../src/dialog.c:1427 #: ../src/dialog.c:1767 msgid "Fatal error" msgstr "Fatal fejl" # ../src/dialog.c:1438 #: ../src/dialog.c:1778 #, c-format msgid "" "Window Maker received signal %i\n" "(%s)." msgstr "" "Window Maker modtog signal %i\n" "(%s)." # ../src/dialog.c:1441 #: ../src/dialog.c:1781 #, c-format msgid "Window Maker received signal %i." msgstr "Window Maker modtog signal %i" # ../src/dialog.c:1450 #: ../src/dialog.c:1790 msgid "" " This fatal error occured probably due to a bug. Please fill the included " "BUGFORM and report it to %s." msgstr "" "en fatal fejl er opstået, sikkert pga. en bug. Udfyld venligst den vedlagte " "BUGFORM og indberet det til %s." # ../src/dialog.c:1458 #: ../src/dialog.c:1799 msgid "What do you want to do now?" msgstr "Hvad vil du nu?" # ../src/dialog.c:1464 #: ../src/dialog.c:1805 msgid "Select action" msgstr "Vælg handling" # ../src/dialog.c:1465 #: ../src/dialog.c:1806 msgid "Abort and leave a core file" msgstr "Afbryd og lav en core-fil" # ../src/dialog.c:1466 #: ../src/dialog.c:1807 msgid "Restart Window Maker" msgstr "Genstart Window Maker" # ../src/dialog.c:1467 #: ../src/dialog.c:1808 msgid "Start alternate window manager" msgstr "Start alternativ vindueshåndtering" #: ../src/dialog.c:1986 msgid "" "Window Maker is part of the GNUstep project.\n" "The GNUstep project aims to create a free\n" "implementation of the OpenStep(tm) specification\n" "which is a object-oriented framework for\n" "creating advanced graphical, multi-platform\n" "applications. Additionally, a development and\n" "user desktop enviroment will be created on top\n" "of the framework. For more information about\n" "GNUstep, please visit: www.gnustep.org" msgstr "" #: ../src/dialog.c:2006 msgid "About GNUstep" msgstr "Om GNUstep" # ../src/dock.c:211 #: ../src/dock.c:213 #, c-format msgid "Type the name for workspace %i:" msgstr "Indtast navn for arbejdsbord %i:" # ../src/dock.c:212 ../src/dock.c:1169 ../src/dock.c:1172 ../src/dock.c:3445 #: ../src/dock.c:214 ../src/dock.c:1141 ../src/dock.c:1144 ../src/dock.c:3409 msgid "Rename Workspace" msgstr "Omdøb arbejdsbord" # ../src/dock.c:509 ../src/dock.c:517 #: ../src/dock.c:520 ../src/dock.c:528 msgid "Warning" msgstr "Advarsel" # ../src/dock.c:510 #: ../src/dock.c:521 msgid "" "Some icons cannot be made omnipresent. Please make sure that no other icon " "is docked in the same positions on the other workspaces and the Clip is not " "full in some workspace." msgstr "" "Nogle ikoner kan ikke være på alle arbejdsborde. Se til at ingen andre " "ikoner er indfældet på samme sted på de andre arbejdsborde og at clip'en " "ikke er fuld på noget arbejdsbord." # ../src/dock.c:518 #: ../src/dock.c:529 msgid "" "Icon cannot be made omnipresent. Please make sure that no other icon is " "docked in the same position on the other workspaces and the Clip is not full " "in some workspace." msgstr "" "Ikonen kan ikke være på alle arbejdsborde. Se til at ingen anden ikon er " "indfældet på samme sted på de andre arbejdsborde og at clip'en ikke er fuld " "på noget arbejdsbord." # ../src/dock.c:545 #: ../src/dock.c:556 msgid "Workspace Clip" msgstr "Arbejdsbordsclip" # ../src/dock.c:546 #: ../src/dock.c:557 msgid "All selected icons will be removed!" msgstr "Alle markerede ikoner vil blive fjernet!" # ../src/dock.c:598 ../src/dock.c:1184 ../src/dock.c:1186 ../src/dock.c:3481 #: ../src/dock.c:608 ../src/dock.c:1156 ../src/dock.c:1158 ../src/dock.c:3445 msgid "Keep Icon" msgstr "Behold ikon" # ../src/dock.c:599 ../src/dock.c:2191 ../src/dock.c:2325 #: ../src/dock.c:609 ../src/dock.c:2137 ../src/dock.c:2278 msgid "Type the command used to launch the application" msgstr "Indtast kommandoen der starter programmet" # ../src/dock.c:982 #: ../src/dock.c:965 #, c-format msgid "could not launch application %s\n" msgstr "kunne ikke starte program %s\n" # ../src/dock.c:1037 #: ../src/dock.c:1020 msgid "could not create workspace submenu for Clip menu" msgstr "kunne ikke lave arbejdsbordsundermenu for clipmenu" # ../src/dock.c:1100 #: ../src/dock.c:1078 msgid "could not create options submenu for Clip menu" msgstr "kunne ikke lave konfigurationsundermenu for clipmenu" # ../src/dock.c:1104 #: ../src/dock.c:1082 ../src/dock.c:1130 msgid "Keep on Top" msgstr "Altid øverst" # ../src/dock.c:1110 #: ../src/dock.c:1088 msgid "Collapsed" msgstr "Sammenfoldet" # ../src/dock.c:1116 #: ../src/dock.c:1094 msgid "Autocollapse" msgstr "Autosammenfold" # ../src/dock.c:1122 #: ../src/dock.c:1100 msgid "Autoraise" msgstr "Autoløft" # ../src/dock.c:1128 #: ../src/dock.c:1106 msgid "Autoattract Icons" msgstr "Tiltræk ikoner" # ../src/dock.c:1164 #: ../src/dock.c:1136 msgid "Clip Options" msgstr "Clipkonfiguration" # ../src/dock.c:1174 #: ../src/dock.c:1146 msgid "Selected" msgstr "Valgt" # ../src/dock.c:1179 ../src/dock.c:1182 ../src/dock.c:3472 #: ../src/dock.c:1151 ../src/dock.c:1154 ../src/dock.c:3436 msgid "Select All Icons" msgstr "Vælg alle ikoner" # ../src/dock.c:1188 ../src/dock.c:1190 ../src/dock.c:3489 #: ../src/dock.c:1160 ../src/dock.c:1162 ../src/dock.c:3453 msgid "Move Icon To" msgstr "Flyt ikon til" # ../src/dock.c:1195 ../src/dock.c:1198 ../src/dock.c:3500 #: ../src/dock.c:1167 ../src/dock.c:1170 ../src/dock.c:3464 msgid "Remove Icon" msgstr "Fjern ikon" # ../src/dock.c:1200 #: ../src/dock.c:1172 msgid "Attract Icons" msgstr "Tiltræk ikoner" # ../src/dock.c:1203 #: ../src/dock.c:1175 msgid "Launch" msgstr "Kør" # ../src/dock.c:1211 #: ../src/dock.c:1183 msgid "Settings..." msgstr "Indstillinger..." # ../src/dock.c:1635 ../src/dock.c:1649 ../src/dock.c:1663 ../src/dock.c:1673 # ../src/dock.c:1698 #: ../src/dock.c:1548 ../src/dock.c:1655 #, c-format msgid "bad value in docked icon state info %s" msgstr "forkert værdi i indfældet ikonstatusinfo %s" # ../src/dock.c:1681 #: ../src/dock.c:1663 #, c-format msgid "bad value in docked icon position %i,%i" msgstr "forkert værdi i indfældet ikonplacering %i,%i" # ../src/dock.c:1635 ../src/dock.c:1649 ../src/dock.c:1663 ../src/dock.c:1673 # ../src/dock.c:1698 #: ../src/dock.c:1683 #, c-format msgid "bad value in dock state info:%s" msgstr "forkert værdi i indfældet ikon-statusinfo:%s" # ../src/dock.c:1958 #: ../src/dock.c:1919 msgid "there are too many icons stored in dock. Ignoring what doesn't fit" msgstr "der er for mange ikoner i dokken. Ignorerer dem der ikke er plads til" # ../src/dock.c:2190 ../src/dock.c:2324 #. icon->forced_dock = 1; #: ../src/dock.c:2136 ../src/dock.c:2277 msgid "Dock Icon" msgstr "Indfæld ikon" # ../src/dock.c:3355 ../src/dock.c:3359 #: ../src/dock.c:3323 #, c-format msgid "Could not execute command \"%s\"" msgstr "Kunne ikke udføre kommando \"%s\"" # ../src/dock.c:3451 #: ../src/dock.c:3415 msgid "Toggle Omnipresent" msgstr "På alle arbejdsborde" # ../src/dock.c:3456 ../src/winmenu.c:417 ../src/winspector.c:1215 #: ../src/dock.c:3420 ../src/kwm.c:637 ../src/winmenu.c:418 #: ../src/winspector.c:1377 msgid "Omnipresent" msgstr "På alle arbejdsborde" # ../src/dock.c:3470 #: ../src/dock.c:3434 msgid "Unselect All Icons" msgstr "Fravælg alle ikoner" # ../src/dock.c:3479 #: ../src/dock.c:3443 msgid "Keep Icons" msgstr "Behold ikoner" # ../src/dock.c:3487 #: ../src/dock.c:3451 msgid "Move Icons To" msgstr "Flyt ikoner til" # ../src/dock.c:3498 #: ../src/dock.c:3462 msgid "Remove Icons" msgstr "Fjern ikoner" #: ../src/dock.c:3493 ../src/kwm.c:643 msgid "Bring Here" msgstr "Placér her" # ../src/dockedapp.c:130 #: ../src/dockedapp.c:149 #, c-format msgid "could not find icon %s, used in a docked application" msgstr "kunne ikke finde ikon %s, som bruges i et indfældet program" # ../src/dockedapp.c:209 #: ../src/dockedapp.c:229 #, c-format msgid "Could not open specified icon file: %s" msgstr "Kunne ikke åbne angivet ikonfil: %s" # ../src/dockedapp.c:211 #: ../src/dockedapp.c:231 msgid "Ignore" msgstr "Ignorer" # ../src/dockedapp.c:313 #: ../src/dockedapp.c:333 msgid "Start when Window Maker is started" msgstr "Start samtidig med Window Maker" #: ../src/dockedapp.c:340 msgid "Lock (prevent accidental removal)" msgstr "Lås (forhindr fjernelse ved uheld)" # ../src/dockedapp.c:319 #: ../src/dockedapp.c:344 msgid "Application path and arguments" msgstr "Programsøgesti og argumenter" #: ../src/dockedapp.c:357 msgid "Command for middle-click launch" msgstr "Kommando for klik med midterknap" # ../src/dockedapp.c:342 #: ../src/dockedapp.c:371 #, c-format msgid "%s will be replaced with current selection" msgstr "%s bliver erstattet med nuværende markering" # ../src/dockedapp.c:330 #: ../src/dockedapp.c:376 msgid "Command for files dropped with DND" msgstr "\"Træk og slip\"-kommando" # ../src/dockedapp.c:342 #: ../src/dockedapp.c:390 #, c-format msgid "%d will be replaced with the file name" msgstr "%d bliver erstattet med filnavnet" # ../src/dockedapp.c:346 #: ../src/dockedapp.c:394 msgid "DND support was not compiled in" msgstr "DND understøttelse blev ikke kompileret ind" # ../src/dockedapp.c:352 #: ../src/dockedapp.c:399 msgid "Icon Image" msgstr "Ikonfil" # ../src/dockedapp.c:364 ../src/winspector.c:1351 #: ../src/dockedapp.c:413 ../src/winspector.c:1515 msgid "Browse..." msgstr "Find..." # ../src/dockedapp.c:409 #: ../src/dockedapp.c:466 msgid "Docked Application Settings" msgstr "Indfældet programs indstillinger" # ../src/framewin.c:649 ../src/framewin.c:744 ../src/menu.c:471 # ../src/texture.c:549 #: ../src/framewin.c:649 ../src/framewin.c:744 ../src/menu.c:456 #: ../src/texture.c:594 #, c-format msgid "could not render texture: %s" msgstr "kunne ikke lave tekstur: %s" # ../src/framewin.c:672 ../src/framewin.c:683 ../src/framewin.c:699 # ../src/framewin.c:710 ../src/framewin.c:717 ../src/framewin.c:724 # ../src/icon.c:350 ../src/menu.c:500 #: ../src/framewin.c:672 ../src/framewin.c:683 ../src/framewin.c:699 #: ../src/framewin.c:710 ../src/framewin.c:717 ../src/framewin.c:724 #: ../src/icon.c:350 ../src/menu.c:485 #, c-format msgid "error rendering image:%s" msgstr "fejl i tegning af billede:%s" # ../src/framewin.c:777 #: ../src/framewin.c:777 #, c-format msgid "error rendering image: %s" msgstr "fejl i tegning af billede: %s" # ../src/session.c:980 #: ../src/gnome.c:216 ../src/gnome.c:343 ../src/gnome.c:401 msgid "out of memory while updating GNOME hints" msgstr "løb tør for hukommelse da GNOME hints blev opdateret" # ../src/icon.c:229 ../src/wdefaults.c:430 #: ../src/icon.c:229 ../src/wdefaults.c:443 #, c-format msgid "error loading image file \"%s\": %s" msgstr "fejl ved åbning af billedfil \"%s\": %s" # ../src/icon.c:477 ../src/icon.c:486 #: ../src/icon.c:491 ../src/icon.c:500 #, c-format msgid "could not create directory %s" msgstr "kunne ikke oprette mappe %s" # ../src/icon.c:753 #: ../src/icon.c:767 #, c-format msgid "could not find default icon \"%s\"" msgstr "kunne ikke finde standardikon \"%s\"" # ../src/icon.c:759 #: ../src/icon.c:773 #, c-format msgid "could not load default icon \"%s\":%s" msgstr "kunne ikke indlæse standardikon \"%s\":%s" # ../src/winmenu.c:440 ../src/winmenu.c:575 #. #. * 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/kwm.c:633 ../src/winmenu.c:441 ../src/winmenu.c:583 msgid "Maximize" msgstr "Maksimér" # ../src/winmenu.c:570 #: ../src/kwm.c:634 ../src/winmenu.c:578 msgid "Unmaximize" msgstr "Afmaksimér" # ../src/winmenu.c:448 ../src/winmenu.c:561 #: ../src/kwm.c:635 ../src/winmenu.c:449 ../src/winmenu.c:569 msgid "Miniaturize" msgstr "Minimér" # ../src/winmenu.c:556 #: ../src/kwm.c:636 ../src/winmenu.c:564 msgid "Deminiaturize" msgstr "Afminimér" # ../src/dock.c:3456 ../src/winmenu.c:417 ../src/winspector.c:1215 #: ../src/kwm.c:638 msgid "Not Omnipresent" msgstr "Ikke overalt" # ../src/winmenu.c:489 #: ../src/kwm.c:639 msgid "Move" msgstr "Flyt" # ../src/winmenu.c:473 #: ../src/kwm.c:640 msgid "Resize" msgstr "Ændr størrelse" # ../src/rootmenu.c:227 ../src/winmenu.c:505 #. #. entry = wMenuAddCallback(menu, _("Select Shortcut"), NULL, NULL); #. wMenuEntrySetCascade(menu, entry, makeMakeShortcutMenu(scr)); #. #: ../src/kwm.c:641 ../src/rootmenu.c:248 ../src/winmenu.c:513 msgid "Close" msgstr "Luk" # ../src/winmenu.c:489 #: ../src/kwm.c:642 ../src/winmenu.c:497 msgid "Move To" msgstr "Flyt til" #: ../src/kwm.c:1096 msgid "%a(Run Command,Type the command to run:)" msgstr "%a(Kør kommando,Indtast kommando at køre:)" # ../src/main.c:193 #: ../src/main.c:222 msgid "failed to restart Window Maker." msgstr "kunne ikke genstarte Window Maker." # ../src/main.c:196 #: ../src/main.c:225 #, c-format msgid "could not exec %s" msgstr "kunne ikke udføre %s" # ../src/misc.c:1404 #: ../src/main.c:271 msgid "Could not execute command: " msgstr "Kunne ikke udføre kommando: " # ../src/main.c:245 #: ../src/main.c:428 #, c-format msgid "%s aborted.\n" msgstr "%s afbrudt.\n" # ../src/main.c:256 #: ../src/main.c:439 #, c-format msgid "Usage: %s [options]\n" msgstr "Brug: %s [muligheder]\n" # ../src/main.c:257 #: ../src/main.c:440 msgid "The Window Maker window manager for the X window system" msgstr "Window Maker vindueshåndtering til X window systemet" # ../src/main.c:259 #: ../src/main.c:442 msgid " -display host:dpy\tdisplay to use" msgstr " -display host:dpy\tskærm som skal bruges" # ../src/main.c:261 #: ../src/main.c:444 msgid " --no-cpp \t\tdisable preprocessing of configuration files" msgstr " --no-cpp \t\tundlad forbehandling af konfigurationsfiler" # ../src/main.c:263 #: ../src/main.c:446 msgid " --no-dock\t\tdo not open the application Dock" msgstr " --no-dock\t\tåbn ikke programdokken" # ../src/main.c:264 #: ../src/main.c:447 msgid " --no-clip\t\tdo not open the workspace Clip" msgstr " --no-clip\t\tåbn ikke arbejdsbordsclippen" # ../src/dock.c:982 #: ../src/main.c:448 msgid " --no-autolaunch\tdo not autolaunch applications" msgstr " --no-autolaunch\tautostart ikke programmer" #: ../src/main.c:449 msgid " --dont-restore\t\tdo not restore saved session" msgstr " --dont-restore\t\tgendan ikke gemt session" # ../src/main.c:266 #: ../src/main.c:451 msgid " --locale locale\tlocale to use" msgstr " --locale lokalitet\tlokalitet at bruge" #: ../src/main.c:453 msgid "" " --create-stdcmap\tcreate the standard colormap hint in PseudoColor visuals" msgstr "" # ../src/main.c:268 #: ../src/main.c:454 msgid " --visual-id visualid\tvisual id of visual to use" msgstr " --visual-id visualid\tvisuel id af visual som skal bruges" # ../src/main.c:269 #: ../src/main.c:455 msgid " --static\t\tdo not update or save configurations" msgstr " --static\t\thverken updatér eller gem konfigurationer" # ../src/main.c:269 #: ../src/main.c:456 msgid " --no-polling\t\tdo not periodically check for configuration updates" msgstr " --no-polling\t\ttjek ikke regelmæssigt efter opdateret konfiguration" # ../src/main.c:271 #: ../src/main.c:458 msgid " --synchronous\t\tturn on synchronous display mode" msgstr " --synchronous\t\tstart synkronskærmtilstand" # ../src/main.c:273 #: ../src/main.c:460 msgid " --version\t\tprint version and exit" msgstr " --version\t\tvis version og afslut" # ../src/main.c:274 #: ../src/main.c:461 msgid " --help\t\t\tshow this message" msgstr " --help\t\t\tvis denne besked" # ../src/main.c:286 #: ../src/main.c:474 #, c-format msgid "" "could not find user GNUstep directory (%s).\n" "Make sure you have installed Window Maker correctly and run wmaker.inst" msgstr "" "kunne ikke finde brugerens GNUstep mappe (%s).\n" "Har du installeret Window Maker korrekt og kørt wmaker.inst?" # ../src/icon.c:477 ../src/icon.c:486 #: ../src/main.c:479 #, c-format msgid "could not find user GNUstep directory (%s)." msgstr "kunne ikke finde brugerens GNUstep mappe (%s)." # ../src/main.c:286 #: ../src/main.c:482 msgid "" "There was an error while creating GNUstep directory, please make sure you " "have installed Window Maker correctly and run wmaker.inst" msgstr "Der opstod en fejl ved oprettelse af GNUstep mappen, sørg venligst for at du har installeret Window Maker korrekt og kør wmaker.inst" #: ../src/main.c:485 #, c-format msgid "%s directory created with default configuration." msgstr "%s mappe oprettet med standard konfiguration." # ../src/main.c:307 ../src/main.c:312 #: ../src/main.c:505 ../src/main.c:510 #, c-format msgid "%s:could not execute initialization script" msgstr "%s:kunne ikke køre autostart-skript" # ../src/main.c:332 ../src/main.c:337 #: ../src/main.c:530 ../src/main.c:535 #, c-format msgid "%s:could not execute exit script" msgstr "%s:kunne ikke køre exit-skript" # ../src/main.c:452 ../src/main.c:459 ../src/main.c:467 ../src/main.c:483 #: ../src/main.c:663 ../src/main.c:671 ../src/main.c:679 ../src/main.c:699 #, c-format msgid "too few arguments for %s" msgstr "for få argumenter til %s" # ../src/main.c:471 #: ../src/main.c:683 #, c-format msgid "bad value for visualid: \"%s\"" msgstr "forkert værdi for visualid: \"%s\"" # ../src/main.c:491 #: ../src/main.c:707 #, c-format msgid "%s: invalid argument '%s'\n" msgstr "%s: ugyldigt argument '%s'\n" # ../src/main.c:492 #: ../src/main.c:708 #, c-format msgid "Try '%s --help' for more information\n" msgstr "Prøv '%s --help' for at få mere information\n" # ../src/main.c:535 #: ../src/main.c:739 msgid "X server does not support locale" msgstr "X-server understøtter ikke lokale" # ../src/main.c:538 #: ../src/main.c:743 msgid "cannot set locale modifiers" msgstr "kan ikke sætte lokalemodificeringer" # ../src/main.c:555 #: ../src/main.c:759 #, c-format msgid "could not open display \"%s\"" msgstr "kunne ikke åbne skærm \"%s\"" # ../src/icon.c:477 ../src/icon.c:486 #: ../src/menu.c:1255 msgid "could not grab keyboard" msgstr "kunne ikke opsnappe tastatur" # ../src/dock.c:1635 ../src/dock.c:1649 ../src/dock.c:1663 ../src/dock.c:1673 # ../src/dock.c:1698 #: ../src/menu.c:2569 #, c-format msgid "bad value in menus state info:%s" msgstr "forkert værdi i menustatusinfo:%s" # ../src/rootmenu.c:699 #: ../src/menureader.c:264 ../src/rootmenu.c:733 #, c-format msgid "%s:could not stat menu" msgstr "%s:kunne ikke undersøge menu" # ../src/rootmenu.c:707 #: ../src/menureader.c:341 ../src/menureader.c:380 #, c-format msgid "could not stat() menu file '%s'" msgstr "kunne ikke stat()'e menufilen '%s'" # ../src/rootmenu.c:1561 #: ../src/menureader.c:416 #, c-format msgid "could not find menu file '%s' referenced in WMRootMenu" msgstr "kunne ikke finde menufilen '%s' angivet i WMRootMenu" #: ../src/menureader.c:423 #, c-format msgid "could not find any usable menu files. Please check '%s'" msgstr "kunne ikke finde nogen anvendelige menufiler. Undersøg venligst '%s'" # ../src/rootmenu.c:1579 #: ../src/menureader.c:438 ../src/rootmenu.c:1667 #, c-format msgid "" "using default menu file \"%s\" as the menu referenced in WMRootMenu could " "not be found " msgstr "" "bruger standardmenufil \"%s\" da menuen angivet i WMRootMenu ikke fandtes " #: ../src/menureader.c:457 #, c-format msgid "" "invalid content in menu file '%s'.\n" "It should either be a property list menu or the path to the file, enclosed " "in \"." msgstr "" "ugyldigt indhold i menufilen '%s'.\n" "Det skal enten være en egenskabslistemenu eller stien til filen indkapslet i \"" # ../src/misc.c:71 #: ../src/misc.c:71 #, c-format msgid "could not define value for %s for cpp" msgstr "kunne ikke definere værdi for %s i cpp" # ../src/misc.c:101 #: ../src/misc.c:101 #, c-format msgid "could not get password entry for UID %i" msgstr "kunne ikke finde adgangskodelinje for UID %i" # ../src/misc.c:126 #: ../src/misc.c:126 #, c-format msgid "your machine is misconfigured. HOSTNAME is set to %s" msgstr "din maskine er sat forkert op. HOSTNAME er sat til %s" # ../src/misc.c:132 #: ../src/misc.c:132 #, c-format msgid "your machine is misconfigured. HOST is set to %s" msgstr "din maskine er sat forkert op. HOST er sat til %s" # ../src/misc.c:766 #: ../src/misc.c:630 msgid "Program Arguments" msgstr "Programargumenter" # ../src/misc.c:767 #: ../src/misc.c:631 msgid "Enter command arguments:" msgstr "Indtast kommandoargumenter:" # ../src/misc.c:860 #: ../src/misc.c:724 msgid "unable to get dropped data from DND drop" msgstr "kan ikke modtage data fra DND-slip" # ../src/misc.c:868 #: ../src/misc.c:732 msgid "error getting dropped data from DND drop" msgstr "fejl i modtagelse af data fra DND-slip" # ../src/misc.c:874 #: ../src/misc.c:738 msgid "out of memory while getting data from DND drop" msgstr "løb tør for hukommelse mens data blev hentet fra DND-slip" # ../src/misc.c:919 ../src/misc.c:1059 #: ../src/misc.c:783 ../src/misc.c:923 #, c-format msgid "out of memory during expansion of \"%s\"" msgstr "løb tør for hukommelse under udvidelse af \"%s\"" # ../src/misc.c:973 #: ../src/misc.c:837 msgid "out of memory during expansion of \"%w\"" msgstr "løb tør for hukommelse under udvidelse af \"%w\"" # ../src/misc.c:991 #: ../src/misc.c:855 msgid "out of memory during expansion of \"%W\"" msgstr "løb tør for hukommelse under udvidelse af \"%W\"" # ../src/misc.c:1007 #: ../src/misc.c:871 msgid "out of memory during expansion of \"%a\"" msgstr "løb tør for hukommelse under udvidelse af \"%a\"" # ../src/misc.c:1038 #: ../src/misc.c:902 #, c-format msgid "out of memory during expansion of \"%d\"" msgstr "løb tør for hukommelse under udvidelse af \"%d\"" # ../src/misc.c:1052 #: ../src/misc.c:916 msgid "selection not available" msgstr "markering ikke tilgængelig" # ../src/misc.c:1124 ../src/misc.c:1130 #: ../src/misc.c:972 ../src/misc.c:978 #, c-format msgid "bad window name value in %s state info" msgstr "ugyldig værdi for vinduesnavn i %s statusinfo" # ../src/misc.c:1385 #: ../src/misc.c:1235 msgid "could not send message to background image helper" msgstr "kunne ikke sende besked til baggrundsbilledehjælper" # ../src/pixmap.c:235 #: ../src/pixmap.c:235 #, c-format msgid "could not load mask bitmap file \"%s\". Won't use mask" msgstr "kunne ikke indlæse bitmapfil \"%s\". Vil ikke bruge maske" # ../src/resources.c:44 #: ../src/resources.c:44 #, c-format msgid "could not parse color \"%s\"" msgstr "\"%s\" er en ugyldig farve" # ../src/resources.c:48 #: ../src/resources.c:48 #, c-format msgid "could not allocate color \"%s\"" msgstr "kunne ikke tildele farve \"%s\"" # ../src/rootmenu.c:187 ../src/rootmenu.c:189 #: ../src/rootmenu.c:196 ../src/rootmenu.c:198 msgid "Exit" msgstr "Afslut" # ../src/rootmenu.c:188 #: ../src/rootmenu.c:197 msgid "Exit window manager?" msgstr "Afslut vindueshåndtering?" # ../src/rootmenu.c:224 #: ../src/rootmenu.c:245 msgid "Close X session" msgstr "Luk X-session" # ../src/rootmenu.c:225 #: ../src/rootmenu.c:246 msgid "" "Close Window System session?\n" "Kill might close applications with unsaved data." msgstr "" "Luk Window System session?\n" "Kan medføre datatab i åbne programmer med ugemt data." # ../src/rootmenu.c:238 #: ../src/rootmenu.c:261 msgid "Kill X session" msgstr "Dræb X-session" # ../src/rootmenu.c:239 #: ../src/rootmenu.c:262 msgid "" "Kill Window System session?\n" "(all applications will be closed)" msgstr "" "Dræb Window System session?\n" "(alle programmer bliver lukket)" # ../src/rootmenu.c:506 #: ../src/rootmenu.c:539 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\" for entry %s" msgstr "%s:ugyldig tastaturgenvej \"%s\" i linje %s" # ../src/rootmenu.c:514 #: ../src/rootmenu.c:547 #, c-format msgid "%s:invalid key in shortcut \"%s\" for entry %s" msgstr "%s:ugyldig tast i genvej \"%s\" i linje %s" # ../src/rootmenu.c:567 #: ../src/rootmenu.c:600 #, c-format msgid "%s: unmatched '\"' in menu file" msgstr "%s: ingen matchende '\"' i menufilen" # ../src/rootmenu.c:617 #: ../src/rootmenu.c:650 #, c-format msgid "%s: missing command" msgstr "%s: manglende kommando" # ../src/rootmenu.c:651 #: ../src/rootmenu.c:682 #, c-format msgid "invalid OPEN_MENU specification: %s" msgstr "ugyldig OPEN_MENU specifikation: %s" # ../src/rootmenu.c:707 #: ../src/rootmenu.c:741 #, c-format msgid "%s:could not stat menu:%s" msgstr "%s:kunne ikke undersøge menu:%s" # ../src/rootmenu.c:725 #: ../src/rootmenu.c:759 #, c-format msgid "too many parameters in OPEN_MENU: %s" msgstr "for mange parametre i OPEN_MENU: %s" # ../src/rootmenu.c:761 #: ../src/rootmenu.c:803 msgid "" "There are more than one WORKSPACE_MENU commands in the applications menu. " "Only one is allowed." msgstr "" "Der er mere end én WORKSPACE_MENU kommando i applikationsmenuen. Kun én er " "tilladt." # ../src/rootmenu.c:761 #: ../src/rootmenu.c:837 msgid "" "There are more than one WINDOWS_MENU commands in the applications menu. Only " "one is allowed." msgstr "Der er mere end én WORKSPACE_MENU kommando i applikationsmenuen. Kun én er tilladt." # ../src/winspector.c:1232 #: ../src/rootmenu.c:842 msgid "Window List" msgstr "Vinduesliste" # ../src/rootmenu.c:790 ../src/rootmenu.c:808 ../src/rootmenu.c:818 #: ../src/rootmenu.c:871 ../src/rootmenu.c:889 ../src/rootmenu.c:899 #, c-format msgid "%s:missing parameter for menu command \"%s\"" msgstr "%s:manglende parameter for menukommando \"%s\"" # ../src/rootmenu.c:882 #: ../src/rootmenu.c:967 #, c-format msgid "%s:unknown command \"%s\" in menu config." msgstr "%s:ukendt kommando \"%s\" i menukonfig" # ../src/rootmenu.c:890 #: ../src/rootmenu.c:975 #, c-format msgid "%s:can't add shortcut for entry \"%s\"" msgstr "%s:kan ikke tilføje genvej for linje \"%s\"" # ../src/rootmenu.c:1027 #: ../src/rootmenu.c:1112 #, c-format msgid "%s:maximal line size exceeded in menu config: %s" msgstr "%s:maksimal linjestørrelse overskredet i menukonfig: %s" # ../src/rootmenu.c:1049 ../src/rootmenu.c:1141 ../src/rootmenu.c:1242 #: ../src/rootmenu.c:1134 ../src/rootmenu.c:1227 ../src/rootmenu.c:1329 #, c-format msgid "%s:missing command in menu config: %s" msgstr "%s:manglende kommando i menukonfig: %s" # ../src/rootmenu.c:1079 #: ../src/rootmenu.c:1164 #, c-format msgid "%s:syntax error in menu file:END declaration missing" msgstr "%s:syntaksfejl i menufil:END deklaration mangler" # ../src/rootmenu.c:1108 ../src/rootmenu.c:1207 #: ../src/rootmenu.c:1193 ../src/rootmenu.c:1293 msgid "could not make arguments for menu file preprocessor" msgstr "kunne ikke skabe argumenter for menufilforbehandler" # ../src/rootmenu.c:1114 ../src/rootmenu.c:1214 #: ../src/rootmenu.c:1200 ../src/rootmenu.c:1301 #, c-format msgid "%s:could not open/preprocess menu file" msgstr "%s:kunne ikke åbne/forbehandle menufil" # ../src/rootmenu.c:1126 ../src/rootmenu.c:1227 #: ../src/rootmenu.c:1212 ../src/rootmenu.c:1314 #, c-format msgid "could not open menu file \"%s\": %s" msgstr "kunne ikke åbne menufil \"%s\": %s" # ../src/rootmenu.c:1153 #: ../src/rootmenu.c:1239 #, c-format msgid "%s:invalid menu file. MENU command is missing" msgstr "%s:ugyldig menufil. MENU-kommando mangler" # ../src/rootmenu.c:1162 #: ../src/rootmenu.c:1248 msgid "error reading preprocessed menu data" msgstr "kunne ikke indlæse forbehandlet menudata" # ../src/rootmenu.c:1254 #: ../src/rootmenu.c:1341 #, c-format msgid "%s:no title given for the root menu" msgstr "%s:ingen titel angivet for rodmenuen" # ../src/rootmenu.c:1344 ../src/rootmenu.c:1417 ../src/rootmenu.c:1458 #: ../src/rootmenu.c:1432 ../src/rootmenu.c:1505 ../src/rootmenu.c:1546 #, c-format msgid "out of memory while constructing directory menu %s" msgstr "løb tør for memory mens mappemenu %s blev lavet" # ../src/rootmenu.c:1354 #: ../src/rootmenu.c:1442 #, c-format msgid "%s:could not stat file \"%s\" in menu directory" msgstr "%s: kunne ikke undersøge fil \"%s\" i menumappen" # ../src/rootmenu.c:1512 #: ../src/rootmenu.c:1600 msgid "Commands" msgstr "Kommandoer" # ../src/rootmenu.c:1515 #: ../src/rootmenu.c:1603 msgid "Restart" msgstr "Genstart" # ../src/rootmenu.c:1516 #: ../src/rootmenu.c:1604 msgid "Exit..." msgstr "Afslut..." # ../src/rootmenu.c:1561 #: ../src/rootmenu.c:1649 #, c-format msgid "could not find menu file \"%s\" referenced in WMRootMenu" msgstr "kunne ikke åbne menufil \"%s\" angivet i WMRootMenu" # ../src/rootmenu.c:1568 #: ../src/rootmenu.c:1656 #, c-format msgid "could not access menu \"%s\" referenced in WMRootMenu" msgstr "kunne ikke åbne menu \"%s\" angivet i WMRootMenu" # ../src/rootmenu.c:1602 ../src/rootmenu.c:1678 #: ../src/rootmenu.c:1690 ../src/rootmenu.c:1766 #, c-format msgid "%s:format error in root menu configuration \"%s\"" msgstr "%s:formateringsfejl i konfiguration af hovedmenu \"%s\"" # ../src/rootmenu.c:1765 #: ../src/rootmenu.c:1854 msgid "" "The applications menu could not be loaded. Look at the console output for a " "detailed description of the errors." msgstr "" "Applikationsmenuen kunne ikke indlæses. Læs kommandolinjens uddata for en " "detaljeret beskrivelse af fejlen(e)" # ../src/screen.c:751 #: ../src/screen.c:740 #, c-format msgid "could not initialize graphics library context: %s" msgstr "kunne ikke opstarte grafikbibliotek: %s" # ../src/screen.c:782 #: ../src/screen.c:771 msgid "could not do initialization of WINGs widget set" msgstr "kunne ikke opstarte WINGs widgetsæt" # ../src/screen.c:1115 #: ../src/screen.c:1137 #, c-format msgid "could not save session state in %s" msgstr "kunne ikke gemme sessionsstatus i %s" # ../src/session.c:181 ../src/wdefaults.c:578 ../src/winspector.c:354 #: ../src/session.c:183 ../src/wdefaults.c:589 ../src/winspector.c:454 #, c-format msgid "can't convert \"%s\" to boolean" msgstr "kan ikke konvertere \"%s\" til boolsk værdi" # ../src/session.c:980 #: ../src/session.c:1023 msgid "out of memory while saving session state" msgstr "løb tør for hukommelse mens sessionsstatus blev gemt" # ../src/session.c:1071 #: ../src/session.c:1106 msgid "end of memory while saving session state" msgstr "ikke mere hukommelse mens sessionsstatus blev gemt" # ../src/session.c:1205 #. 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:1244 msgid "connection to the session manager was lost" msgstr "forbindelse til sessionshåndteringen forsvandt" # ../src/stacking.c:73 #: ../src/stacking.c:79 msgid "could not get window list!!" msgstr "kunne ikke få vinduesliste!!" # ../src/startup.c:194 #: ../src/startup.c:202 #, c-format msgid "internal X error: %s\n" msgstr "intern X-fejl: %s\n" # ../src/startup.c:259 #: ../src/startup.c:260 #, c-format msgid "got signal %i (%s) - restarting\n" msgstr "fik signal %i (%s) - genstarter\n" # ../src/startup.c:261 #: ../src/startup.c:262 #, c-format msgid "got signal %i - restarting\n" msgstr "fik signal %i - genstarter\n" # ../src/startup.c:259 #: ../src/startup.c:272 #, c-format msgid "got signal %i (%s) - rereading defaults\n" msgstr "fik signal %i (%s) - genindlæser standard\n" # ../src/startup.c:261 #: ../src/startup.c:274 #, c-format msgid "got signal %i - rereading defaults\n" msgstr "fik signal %i - genindlæser standard\n" # ../src/startup.c:275 #: ../src/startup.c:284 #, c-format msgid "got signal %i (%s) - exiting...\n" msgstr "fik signal %i (%s) - afslutter...\n" # ../src/startup.c:277 #: ../src/startup.c:286 #, c-format msgid "got signal %i - exiting...\n" msgstr "fik signal %i - afslutter...\n" # ../src/startup.c:290 #: ../src/startup.c:329 #, c-format msgid "got signal %i (%s)\n" msgstr "fik signal %i (%s)\n" # ../src/startup.c:292 #: ../src/startup.c:331 #, c-format msgid "got signal %i\n" msgstr "fik signal %i\n" # ../src/startup.c:303 #: ../src/startup.c:342 msgid "" "crashed while trying to do some post-crash cleanup. Aborting immediatelly." msgstr "gik ned under forsøg at rydde op efter crash. Afbryder med det samme." # ../src/startup.c:337 #. we try to restart Window Maker #: ../src/startup.c:406 msgid "trying to restart Window Maker..." msgstr "prøver at genstarte Window Maker..." # ../src/startup.c:342 #: ../src/startup.c:411 msgid "trying to start alternate window manager..." msgstr "prøver at starte alternativ vindueshåndtering..." # ../src/startup.c:347 #: ../src/startup.c:417 msgid "failed to start alternate window manager. Aborting." msgstr "det lykkedes ikke at starte alternativ vindueshåndtering. Afbryder." # ../src/startup.c:349 #: ../src/startup.c:419 msgid "" "a fatal error has occured, probably due to a bug. Please fill the included " "BUGFORM and report it." msgstr "" "en fatal fejl er opstået, sikkert pga. en bug. Udfyld venligst den vedlagte " "BUGFORM og indberet det." # ../src/startup.c:777 #: ../src/startup.c:894 #, c-format msgid "icon size is configured to %i, but it's too small. Using 16, instead\n" msgstr "ikonstørrelse er sat til %i, men det er for lidt. Bruger 16 istedet\n" # ../src/startup.c:805 #: ../src/startup.c:922 msgid "XKB is not supported. KbdModeLock is automatically disabled." msgstr "XKB er ikke understøttet. KbdModeLock er slået fra." # ../src/startup.c:824 #: ../src/startup.c:941 msgid "it seems that there is already a window manager running" msgstr "det ser ud til at der kører en vindueshåndtering i forvejen" # ../src/startup.c:830 #: ../src/startup.c:947 #, c-format msgid "could not manage screen %i" msgstr "kunne ikke håndtere skærm %i" # ../src/startup.c:890 #: ../src/startup.c:1015 msgid "could not manage any screen" msgstr "kunne ikke håndtere nogen skærm" # ../src/switchmenu.c:114 #: ../src/switchmenu.c:137 msgid "Windows" msgstr "Vinduer" # ../src/texture.c:290 ../src/texture.c:334 #: ../src/texture.c:329 ../src/texture.c:371 #, c-format msgid "image file \"%s\" used as texture could not be found." msgstr "billedfil \"%s\" som er brugt som tekstur, fandtes ikke." # ../src/texture.c:296 ../src/texture.c:340 #: ../src/texture.c:335 ../src/texture.c:377 #, c-format msgid "could not load texture pixmap \"%s\":%s" msgstr "kunne ikke indlæse teksturpixmap \"%s\":%s" # ../src/texture.c:400 #: ../src/texture.c:437 #, c-format msgid "library \"%s\" cound not be opened." msgstr "bibliotek \"%s\" kunne ikke åbnes." # ../src/texture.c:409 #: ../src/texture.c:446 #, c-format msgid "function \"%s\" not found in library \"%s\"" msgstr "funktion \"%s\" fandtes ikke i bibliotek \"%s\"" # ../src/texture.c:416 #: ../src/texture.c:453 msgid "function textures not supported on this system, sorry." msgstr "teksturfunktionen er ikke understøttet af dette system, desværre." # ../src/dialog.c:271 #: ../src/texture.c:598 msgid "could not allocate image buffer" msgstr "kunne ikke tildele billedmellemlager" # ../src/wdefaults.c:424 #: ../src/wdefaults.c:437 #, c-format msgid "could not find icon file \"%s\"" msgstr "kunne ikke finde ikonfil \"%s\"" # ../src/window.c:2638 ../src/window.c:2772 #: ../src/window.c:2934 ../src/window.c:3073 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 eller en lignende tast er trykket ind.\n" "Tryk den ud eller visse musefunktioner og tastaturgenveje vil ikke fungere." # ../src/winmenu.c:126 #: ../src/winmenu.c:126 msgid "" "This will kill the application.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" "Dette vil lukke programmet.\n" "Alle ugemte data bliver slettet.\n" "Bekræft venligst." # ../src/winmenu.c:271 ../src/winmenu.c:279 #: ../src/winmenu.c:272 ../src/winmenu.c:281 msgid "Set Shortcut" msgstr "Angiv genvej" # ../src/winmenu.c:357 ../src/winmenu.c:403 #: ../src/winmenu.c:359 ../src/winmenu.c:404 msgid "could not create submenu for window menu" msgstr "kunne ikke lave undermenu for vinduesmenu" # ../src/dock.c:1158 ../src/winmenu.c:407 #: ../src/winmenu.c:408 msgid "Keep on top" msgstr "Altid øverst" # ../src/winmenu.c:412 #: ../src/winmenu.c:413 msgid "Keep at bottom" msgstr "Altid nederst" # ../src/winmenu.c:457 ../src/winmenu.c:592 #: ../src/winmenu.c:457 ../src/winmenu.c:600 msgid "Shade" msgstr "Rul op" # ../src/winspector.c:1264 #: ../src/winmenu.c:473 msgid "Hide Others" msgstr "Skjul andre" # ../src/winmenu.c:473 #: ../src/winmenu.c:481 msgid "Resize/Move" msgstr "Ændre størrelse/Flyt" # ../src/winmenu.c:481 #: ../src/winmenu.c:489 msgid "Select" msgstr "Vælg" # ../src/winmenu.c:494 #: ../src/winmenu.c:502 msgid "Attributes..." msgstr "Attributter..." # ../src/winmenu.c:496 #: ../src/winmenu.c:504 msgid "Options" msgstr "Indstillinger" # ../src/winmenu.c:587 #: ../src/winmenu.c:595 msgid "Unshade" msgstr "Rul ned" # ../src/winspector.c:288 #: ../src/winspector.c:387 #, c-format msgid "Could not find icon \"%s\" specified for this window" msgstr "Kunne ikke finde ikon \"%s\" specificeret for dette vindue" # ../src/winspector.c:304 #: ../src/winspector.c:404 #, c-format msgid "Could not open specified icon \"%s\":%s" msgstr "Kunne ikke finde specificeret ikon \"%s\":%s" #: ../src/winspector.c:1123 #, c-format msgid "Inspecting %s.%s" msgstr "Inspicerer %s.%s" #: ../src/winspector.c:1149 msgid "Click in the window you wish to inspect." msgstr "Klik på det vindue, du vil inspicere." # ../src/winspector.c:1162 #: ../src/winspector.c:1188 msgid "" "The configuration will apply to all\n" "windows that have their WM_CLASS\n" "property set to the above selected\n" "name, when saved." msgstr "" "Denne konfiguration vil gælde for\n" "alle vinduer, hvis WM_CLASS egenskab\n" "er sat til det valgte ovenstående\n" "navn, når den er gemt." # ../src/winspector.c:1064 #: ../src/winspector.c:1217 msgid "Save" msgstr "Gem" # ../src/winspector.c:1072 #: ../src/winspector.c:1225 msgid "Apply" msgstr "Anvend" # ../src/winspector.c:1078 #: ../src/winspector.c:1231 msgid "Reload" msgstr "Genindlæs" # ../src/winspector.c:1087 ../src/winspector.c:1097 #: ../src/winspector.c:1240 ../src/winspector.c:1250 msgid "Window Specification" msgstr "Vinduesspecifikation" # ../src/winspector.c:1088 #: ../src/winspector.c:1241 msgid "Window Attributes" msgstr "Vinduesattributter" # ../src/winspector.c:1089 #: ../src/winspector.c:1242 msgid "Advanced Options" msgstr "Udvidede indstillinger" # ../src/winspector.c:1090 #: ../src/winspector.c:1243 msgid "Icon and Initial Workspace" msgstr "Ikon og første arbejdsbord" # ../src/winspector.c:1091 #: ../src/winspector.c:1244 msgid "Application Specific" msgstr "Specifikt for program" # ../src/winspector.c:1105 #: ../src/winspector.c:1258 msgid "Defaults for all windows" msgstr "Standard for alle vinduer" # ../src/dialog.c:1464 #: ../src/winspector.c:1312 msgid "Select window" msgstr "Vælg vindue" # ../src/winspector.c:1169 #: ../src/winspector.c:1326 msgid "Attributes" msgstr "Attributter" # ../src/winspector.c:1180 #: ../src/winspector.c:1337 msgid "Disable titlebar" msgstr "Fjern titellinje" # ../src/winspector.c:1182 #: ../src/winspector.c:1339 msgid "" "Remove the titlebar of this window.\n" "To access the window commands menu of a window\n" "without it's titlebar, press Control+Esc (or the\n" "equivalent shortcut, if you changed the default\n" "settings)." msgstr "" "Fjern dette vindues titellinje.\n" "For at komme til et vindues kommandomenu\n" "uden titellinjen, tryk Control+Esc (eller\n" "den korrekte genvej, hvis du har ændret i\n" "standardindstillingerne)." # ../src/winspector.c:1189 #: ../src/winspector.c:1346 msgid "Disable resizebar" msgstr "Fjern bundlinje" # ../src/winspector.c:1191 #: ../src/winspector.c:1348 msgid "Remove the resizebar of this window." msgstr "Fjern dette vindues bundlinje." # ../src/winspector.c:1194 #: ../src/winspector.c:1351 msgid "Disable close button" msgstr "Fjern lukkeknap" # ../src/winspector.c:1196 #: ../src/winspector.c:1353 msgid "Remove the `close window' button of this window." msgstr "Fjern dette vindues 'luk vindue'-knap." # ../src/winspector.c:1199 #: ../src/winspector.c:1356 msgid "Disable miniaturize button" msgstr "Fjern minimeringsknap" # ../src/winspector.c:1201 #: ../src/winspector.c:1358 msgid "Remove the `miniaturize window' button of the window." msgstr "Fjern dette vindues `minimér vindue' knap." # ../src/winspector.c:1180 #: ../src/winspector.c:1361 msgid "Disable border" msgstr "Fjern kantlinje" # ../src/winspector.c:1191 #: ../src/winspector.c:1363 msgid "Remove the 1 pixel black border around the window." msgstr "Fjern den tynde sorte kant omkring vinduet." # ../src/winspector.c:1204 #: ../src/winspector.c:1366 msgid "Keep on top (floating)" msgstr "Altid øverst (flydende)" # ../src/winspector.c:1206 #: ../src/winspector.c:1368 msgid "" "Keep the window over other windows, not allowing\n" "them to cover it." msgstr "" "Placér dette vindue ovenover andre vinduer,\n" "og lad dem ikke dække over det." # ../src/winspector.c:1210 #: ../src/winspector.c:1372 msgid "Keep at bottom (sunken)" msgstr "Altid nederst (sunket)" # ../src/winspector.c:1212 #: ../src/winspector.c:1374 msgid "Keep the window under all other windows." msgstr "Placér dette vindue under alle andre vinduer." # ../src/winspector.c:1217 #: ../src/winspector.c:1379 msgid "Make window present in all workspaces." msgstr "Dette vindue skal ses på alle arbejdsborde." # ../src/winspector.c:1220 #: ../src/winspector.c:1382 msgid "Start miniaturized" msgstr "Start minimeret" # ../src/winspector.c:1222 #: ../src/winspector.c:1384 msgid "" "Make the window be automatically miniaturized when it's\n" "first shown." msgstr "" "Dette vindue skal automatisk være minimeret, når det\n" "vises første gang." # ../src/winspector.c:1226 #: ../src/winspector.c:1388 msgid "Start maximized" msgstr "Start maksimeret" # ../src/winspector.c:1228 #: ../src/winspector.c:1390 msgid "" "Make the window be automatically maximized when it's\n" "first shown." msgstr "" "Dette vindue skal automatisk være maksimeret, når det\n" "vises første gang." # ../src/winspector.c:1312 #: ../src/winspector.c:1394 msgid "Full screen maximization" msgstr "Fyld hele skærmen" # ../src/winspector.c:1314 #: ../src/winspector.c:1396 msgid "" "Make the window use the whole screen space when it's\n" "maximized. The titlebar and resizebar will be moved\n" "to outside the screen." msgstr "" "Lad dette vindue bruge hele skærmen, når det er\n" "maksimeret. Titellinjen og bundlinjen vil blive\n" "flyttet udenfor skærmen." # ../src/winspector.c:1249 #: ../src/winspector.c:1413 msgid "Advanced" msgstr "Udvidet" # ../src/winspector.c:1270 #: ../src/winspector.c:1430 msgid "Do not bind keyboard shortcuts" msgstr "Tastaturgenveje gælder ikke" # ../src/winspector.c:1272 #: ../src/winspector.c:1432 msgid "" "Do not bind keyboard shortcuts from Window Maker\n" "when this window is focused. This will allow the\n" "window to receive all key combinations regardless\n" "of your shortcut configuration." msgstr "" "Window Makers tastaturgenveje gælder ikke, når\n" "dette vindue er i fokus. Dette tillader vinduet\n" "at modtage alle tastekombinationer, uanset hvilke\n" "tastaturgenveje du har valgt for Window Maker." # ../src/winspector.c:1278 #: ../src/winspector.c:1438 msgid "Do not bind mouse clicks" msgstr "Museklik gælder ikke" # ../src/winspector.c:1280 #: ../src/winspector.c:1440 msgid "" "Do not bind mouse actions, such as `Alt'+drag\n" "in the window (when Alt is the modifier you have\n" "configured)." msgstr "" "Musehandlinger såsom 'Alt'+træk gælder ikke for dette\n" "vindue (hvis du har valgt Alt som modificeringstast)." # ../src/winspector.c:1234 #: ../src/winspector.c:1445 msgid "Do not show in the window list" msgstr "Vis ikke vindueslisten." # ../src/winspector.c:1234 #: ../src/winspector.c:1447 msgid "Do not list the window in the window list menu." msgstr "Vis ikke dette vindue i vindueslistemenuen." # ../src/winspector.c:1291 #: ../src/winspector.c:1450 msgid "Do not let it take focus" msgstr "Må ikke få fokus" # ../src/winspector.c:1293 #: ../src/winspector.c:1452 msgid "" "Do not let the window take keyboard focus when you\n" "click on it." msgstr "" "Dette vindue må ikke få tastaturfokus, når du\n" "klikker på det." # ../src/winspector.c:1285 #: ../src/winspector.c:1456 msgid "Keep inside screen" msgstr "Hold indenfor skærmen" # ../src/winspector.c:1287 #: ../src/winspector.c:1458 msgid "" "Do not allow the window to move itself completely\n" "outside the screen. For bug compatibility.\n" msgstr "" "Dette vindue må ikke flytte sig selv helt udenfor\n" "skærmen, af hensyn til fejlbehæftede programmer.\n" # ../src/winspector.c:1264 #: ../src/winspector.c:1462 msgid "Ignore 'Hide Others'" msgstr "Ignorér 'Skjul andre'" # ../src/winspector.c:1266 #: ../src/winspector.c:1464 msgid "" "Do not hide the window when issuing the\n" "`HideOthers' command." msgstr "" "Skjul ikke dette vindue, når du bruger\n" "'Skjul andre' kommandoen." # ../src/winspector.c:1297 #: ../src/winspector.c:1468 msgid "Ignore 'Save Session'" msgstr "Ignorér 'Gem session'" # ../src/winspector.c:1299 #: ../src/winspector.c:1470 msgid "" "Do not save the associated application in the\n" "session's state, so that it won't be restarted\n" "together with other applications when Window Maker\n" "starts." msgstr "" "Gem ikke det associerede program i\n" "sessionsstatus, så den ikke bliver genstartet\n" "sammen med andre programmer, når Window Maker\n" "starter." # ../src/winspector.c:1305 #: ../src/winspector.c:1476 msgid "Emulate application icon" msgstr "Emulér programikon" # ../src/winspector.c:1307 #: ../src/winspector.c:1478 msgid "" "Make this window act as an application that provides\n" "enough information to Window Maker for a dockable\n" "application icon to be created." msgstr "" "Lad dette vindue fungere som et program, der giver\n" "tilstrækkelig information til Window Maker til at\n" "lave en programikon, som kan indfældes i dokken." # ../src/winspector.c:1320 #: ../src/winspector.c:1484 msgid "Disable language button" msgstr "Brug ikke sprogknap" # ../src/winspector.c:1322 #: ../src/winspector.c:1486 msgid "Remove the `toggle language' button of the window." msgstr "Fjern vinduets `toggle language' knap." # ../src/winspector.c:1339 #: ../src/winspector.c:1503 msgid "Miniwindow Image" msgstr "Miniaturebillede" # ../src/winspector.c:1373 #: ../src/winspector.c:1530 msgid "Icon filename:" msgstr "Ikonfilnavn:" # ../src/winspector.c:1385 #: ../src/winspector.c:1543 msgid "Ignore client supplied icon" msgstr "Ignorér programmets egen ikon" # ../src/winspector.c:1392 #: ../src/winspector.c:1550 msgid "Initial Workspace" msgstr "Første arbejdsbord" # ../src/winspector.c:1394 #: ../src/winspector.c:1552 msgid "The workspace to place the window when it's first shown." msgstr "Hvilket arbejdsbord vinduet først skal dukke op på." # ../src/winspector.c:1400 #: ../src/winspector.c:1558 msgid "Nowhere in particular" msgstr "Intet specielt sted" # ../src/winspector.c:1418 #: ../src/winspector.c:1576 msgid "Application Attributes" msgstr "Programattributter" # ../src/winspector.c:1429 #: ../src/winspector.c:1587 msgid "Start hidden" msgstr "Start skjult" # ../src/winspector.c:1431 #: ../src/winspector.c:1589 msgid "Automatically hide application when it's started." msgstr "Skjul automatisk programmet, når det starter." # ../src/winspector.c:1434 #: ../src/winspector.c:1592 msgid "No application icon" msgstr "Ingen programikon" # ../src/winspector.c:1436 #: ../src/winspector.c:1594 msgid "" "Disable the application icon for the application.\n" "Note that you won't be able to dock it anymore,\n" "and any icons that are already docked will stop\n" "working correctly." msgstr "" "Ingen programikon for dette program. Bemærk at du\n" "ikke længere vil kunne indfælde det i dokken, og\n" "alle ikoner for programmet som allerede er indfældet\n" "vil ikke længere fungere ordentligt." # ../src/winspector.c:1305 #: ../src/winspector.c:1600 msgid "Shared application icon" msgstr "Fælles programikon" #: ../src/winspector.c:1602 msgid "" "Use a single shared application icon for all of\n" "the instances of this application.\n" msgstr "" "Brug et enkelt fælles programikon, hver gang dette\n" "program forekommer.\n" # ../src/session.c:980 #: ../src/wmspec.c:277 msgid "out of memory while updating wm hints" msgstr "løb tør for hukommelse mens vinduehåndteringshints blev opdateret" # ../src/workspace.c:107 ../src/workspace.c:108 ../src/workspace.c:707 #: ../src/workspace.c:107 ../src/workspace.c:108 ../src/workspace.c:893 #, c-format msgid "Workspace %i" msgstr "Arbejdsbord %i" # ../src/workspace.c:764 #: ../src/workspace.c:943 msgid "Workspaces" msgstr "Arbejdsborde" # ../src/workspace.c:766 #: ../src/workspace.c:945 msgid "could not create Workspace menu" msgstr "kunne ikke lave arbejdsbordsmenu" # ../src/workspace.c:773 #: ../src/workspace.c:952 msgid "New" msgstr "Ny" # ../src/workspace.c:774 #: ../src/workspace.c:953 msgid "Destroy Last" msgstr "Fjern sidste" #~ msgid "Allow Lowering" #~ msgstr "Tillad skjul" # ../src/misc.c:750 #~ msgid "selection timed-out" #~ msgstr "tiden løb ud for udvalg" # ../src/proplist.c:180 #~ msgid "unterminated string" #~ msgstr "uafsluttet tekststreng" # ../src/proplist.c:247 #~ msgid "unterminated array" #~ msgstr "uafsluttet array" # ../src/proplist.c:256 #~ msgid "missing , in array or unterminated array" #~ msgstr "mangler, i array eller uafsluttet array" # ../src/proplist.c:267 #~ msgid "could not get array element" #~ msgstr "kunne ikke skaffe array element" # ../src/proplist.c:297 #~ msgid "unterminated dictionary" #~ msgstr "uafsluttet ordbog" # ../src/proplist.c:315 #~ msgid "missing dictionary key" #~ msgstr "manglende ordbogstast" # ../src/proplist.c:317 #~ msgid "missing dictionary entry key or unterminated dictionary" #~ msgstr "manglende ordbogslinjetast eller uafsluttet ordbog" # ../src/proplist.c:323 #~ msgid "error parsing dictionary key" #~ msgstr "kunne ikke behandle ordbogstast" # ../src/proplist.c:332 #~ msgid "missing = in dictionary entry" #~ msgstr "manglende = i ordbogslinje" # ../src/proplist.c:351 #~ msgid "missing ; in dictionary entry" #~ msgstr "manglende ; i ordbogslinje" # ../src/proplist.c:432 #~ msgid "" #~ "was expecting a string, dictionary, data or array. If it's a string, try " #~ "enclosing it with \"." #~ msgstr "" #~ "forventede en tekststreng, ordbog, data eller array. Hvis det er en " #~ "streng, prøv at afslutte den med \"." # ../src/proplist.c:434 #~ msgid "Comments are not allowed inside WindowMaker owned domain files." #~ msgstr "Kommentarer er ikke tilladt inden i WindowMakers domænefiler." # ../src/proplist.c:453 #~ msgid "could not open domain file %s" #~ msgstr "kunne ikke åbne domænefil %s" # ../src/proplist.c:466 #~ msgid "extra data after end of file" #~ msgstr "ekstra data efter filens slutning" # ../src/screen.c:463 #~ msgid "error making logo image for panel:%s" #~ msgstr "kunne ikke lave logobillede for panel:%s" # ../src/winspector.c:1358 #~ msgid "Update" #~ msgstr "Opdatér" # ../src/xutil.c:228 #~ msgid "invalid data in selection" #~ msgstr "ugyldigt data i markering" # ../src/dock.c:1134 #~ msgid "Keep Attracted Icons" #~ msgstr "Behold tiltrukkede ikoner" # ../src/dockedapp.c:252 #~ msgid "" #~ "Sorry, icon cannot be made omnipresent. Please make sure that no other " #~ "icon is docked in the same position on the other workspaces, and the Clip " #~ "is not full in some workspace, then try again." #~ msgstr "" #~ "Ikonen kan ikke være på alle arbejdsborde. Se til at ingen anden ikon er " #~ "indfældet på samme sted på de andre arbejdsborde og at Clip'en ikke er " #~ "fuld på noget arbejdsbord, og prøv igen." # ../src/menu.c:307 #~ msgid "wrealloc() failed while trying to add menu item" #~ msgstr "wrealloc() fejlede under opbygningning af menuen" #~ msgid "(Un)Select Icon" #~ msgstr "(Fra)Vælg ikon" #~ msgid "Keep Icon(s)" #~ msgstr "Behold ikon(er)" #~ msgid "The following character sets are missing in %s:" #~ msgstr "Følgende tegnsæt mangler %s:" #~ msgid "The string \"%s\" will be used in place" #~ msgstr "Tekststrengen \"%s\" vil blive brugt i stedetfor" #~ msgid "of any characters from those sets." #~ msgstr "for tegn fra disse tegnsæt." #~ msgid "could not create font set %s. Trying fixed" #~ msgstr "kunne ikke skabe font sæt %s. Prøver standard" #~ msgid "could not load font %s. Trying fixed" #~ msgstr "kunne ikke indlæse font %s. Prøver standard" WindowMaker-0.95.9/po/ca.po0000644000175000017500000016200313431646201012331 00000000000000# Catalan messages for Window Maker. # Copyright (C) 2003 Ernest Adrogué . # This file is distributed under the terms of the GNU General Public License. # # Version history: # WM-ver author email date # 0.80.2 Ernest Adrogué eadrogue@gmx.net 23 Feb 2003 # CVS-20030914 Ernest Adrogué eadrogue@gmx.net 15 Set 2003 # msgid "" msgstr "" "Project-Id-Version: windowmaker CVS-20030914\n" "POT-Creation-Date: 2003-09-16 22:59+0200\n" "PO-Revision-Date: 2003-09-16 23:13+0200\n" "Last-Translator: Ernest Adrogué \n" "Language-Team: Catalan \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../src/appicon.c:415 ../src/dialog.c:295 ../src/dock.c:3361 #: ../src/dockedapp.c:231 ../src/main.c:273 ../src/rootmenu.c:1854 #: ../src/winspector.c:389 ../src/winspector.c:406 msgid "Error" msgstr "Error" #: ../src/appicon.c:416 msgid "Could not open specified icon file" msgstr "No s'ha pogut obrir l'icona especificada" #: ../src/appicon.c:417 ../src/dialog.c:192 ../src/dialog.c:295 #: ../src/dialog.c:724 ../src/dialog.c:1780 ../src/dock.c:533 #: ../src/dock.c:541 ../src/dock.c:565 ../src/dock.c:3362 #: ../src/dockedapp.c:232 ../src/dockedapp.c:427 ../src/main.c:273 #: ../src/rootmenu.c:1858 ../src/winspector.c:390 ../src/winspector.c:407 msgid "OK" msgstr "D'acord" #: ../src/appicon.c:445 ../src/dock.c:262 msgid "" " will be forcibly closed.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" " es finalitzarà forçosament.\n" "Els canvis que no hagueu salvat es perdràn.\n" "Voleu continuar?" #: ../src/appicon.c:453 ../src/dock.c:281 ../src/winmenu.c:125 msgid "Kill Application" msgstr "Finalitza l'aplicació" #: ../src/appicon.c:454 ../src/dock.c:282 ../src/winmenu.c:127 msgid "Yes" msgstr "Sí" #: ../src/appicon.c:454 ../src/dock.c:282 ../src/winmenu.c:127 msgid "No" msgstr "No" #: ../src/appicon.c:484 ../src/dock.c:1186 ../src/dock.c:3527 msgid "Unhide Here" msgstr "Mostra aquí" #: ../src/appicon.c:485 ../src/appicon.c:510 ../src/dock.c:1188 #: ../src/dock.c:1190 ../src/dock.c:3539 ../src/winmenu.c:467 msgid "Hide" msgstr "Amaga" #: ../src/appicon.c:486 msgid "Set Icon..." msgstr "Assigna icona..." #: ../src/appicon.c:487 ../src/dock.c:1194 ../src/rootmenu.c:248 #: ../src/rootmenu.c:264 ../src/winmenu.c:522 msgid "Kill" msgstr "Finalitza" #: ../src/appicon.c:508 ../src/dock.c:3537 msgid "Unhide" msgstr "Mostra" #: ../src/application.c:398 #, c-format msgid "recreating missing icon '%s'" msgstr "s'està recreant l'icona desapareguda '%s'" #: ../src/defaults.c:921 ../src/defaults.c:1082 #, c-format msgid "Domain %s (%s) of global defaults database is corrupted!" msgstr "El domini \"%s\" (%s) de la configuració global està malmès!" #: ../src/defaults.c:926 #, c-format msgid "could not load domain %s from global defaults database" msgstr "no s'ha pogut carregar el domini \"%s\" de la configuració global" #: ../src/defaults.c:977 ../src/defaults.c:992 #, c-format msgid "invalid global menu file %s" msgstr "el fitxer global de menú %s no és vàlid" #: ../src/defaults.c:1020 ../src/startup.c:884 ../src/startup.c:902 #: ../src/startup.c:909 #, c-format msgid "could not read domain \"%s\" from defaults database" msgstr "no s'ha pogut llegir el domini \"%s\" de la configuració" #: ../src/defaults.c:1066 ../src/defaults.c:1171 ../src/defaults.c:1212 #: ../src/defaults.c:1268 #, c-format msgid "Domain %s (%s) of defaults database is corrupted!" msgstr "El domini \"%s\" (%s) de la configuració està malmès!" #: ../src/defaults.c:1071 ../src/defaults.c:1191 ../src/defaults.c:1248 #: ../src/defaults.c:1278 ../src/menureader.c:397 #, c-format msgid "could not load domain %s from user defaults database" msgstr "no s'ha pogut carregar el domini \"%s\" de la configuració de l'usuari" #: ../src/defaults.c:1101 #, c-format msgid "could not load domain %s from global defaults database (%s)" msgstr "no s'ha pogut carregar el domini \"%s\" de la configuració global (%s)" #: ../src/defaults.c:1238 ../src/screen.c:425 #, c-format msgid "could not load logo image for panels: %s" msgstr "no s'ha pogut carregar el logotip pels panells: %s" #. --------------------------- Local ----------------------- #: ../src/defaults.c:1487 ../src/defaults.c:1629 ../src/defaults.c:1741 #: ../src/defaults.c:2220 ../src/defaults.c:2237 ../src/defaults.c:2282 #: ../src/defaults.c:2329 ../src/defaults.c:2802 ../src/wdefaults.c:571 #: ../src/wdefaults.c:607 #, c-format msgid "Wrong option format for key \"%s\". Should be %s." msgstr "El format de l'opció \"%s\" no és correcte. Hauria de ser %s." #: ../src/defaults.c:1489 ../src/defaults.c:1570 ../src/defaults.c:1602 #: ../src/defaults.c:1634 ../src/defaults.c:1647 ../src/defaults.c:1662 #: ../src/defaults.c:1676 ../src/defaults.c:1746 ../src/defaults.c:1758 #: ../src/defaults.c:2225 ../src/defaults.c:2242 ../src/defaults.c:2255 #: ../src/defaults.c:2287 ../src/defaults.c:2303 ../src/defaults.c:2334 #: ../src/defaults.c:2421 ../src/defaults.c:2807 ../src/defaults.c:2818 #, c-format msgid "using default \"%s\" instead" msgstr "s'usa el valor per omissió \"%s\"" #: ../src/defaults.c:1520 #, c-format msgid "wrong option value for key \"%s\". Should be one of %s" msgstr "" "el valor de l'opció \"%s\" no és correcte. Els valors possibles són: %s" #: ../src/defaults.c:1565 #, c-format msgid "can't convert \"%s\" to boolean for key \"%s\"" msgstr "\"%s\" a l'opció \"%s\" no es pot convertir a valor booleà" #: ../src/defaults.c:1599 #, c-format msgid "can't convert \"%s\" to integer for key \"%s\"" msgstr "\"%s\" a l'opció \"%s\" no es pot convertir a enter" #: ../src/defaults.c:1642 #, c-format msgid "Incorrect number of elements in array for key \"%s\"." msgstr "El nombre d'elements de la matriu a l'opció \"%s\" no és correcte." #: ../src/defaults.c:1657 #, c-format msgid "Wrong value for key \"%s\". Should be Coordinate." msgstr "" "El valor de l'opció \"%s\" no és correcte. Hauria de ser \"Coordinate\"." #: ../src/defaults.c:1672 #, c-format msgid "can't convert array to integers for \"%s\"." msgstr "la matriu de l'opció \"%s\" no es pot convertir a enters." #: ../src/defaults.c:1870 ../src/defaults.c:1902 ../src/defaults.c:1918 #: ../src/defaults.c:1947 ../src/defaults.c:1970 ../src/defaults.c:2023 #: ../src/defaults.c:2063 ../src/defaults.c:2101 ../src/defaults.c:2117 #, c-format msgid "\"%s\" is not a valid color name" msgstr "\"%s\" no és un nom de color vàlid" #: ../src/defaults.c:1883 ../src/defaults.c:1935 msgid "bad number of arguments in gradient specification" msgstr "nombre d'arguments incorrecte a la definició del degradat" #: ../src/defaults.c:1996 msgid "too few arguments in multicolor gradient specification" msgstr "falten arguments a la definició del degradat multicolor" #: ../src/defaults.c:2090 msgid "bad number of arguments in textured gradient specification" msgstr "nombre d'arguments incorrecte a la definició de degradat amb textura" #: ../src/defaults.c:2133 #, c-format msgid "bad opacity value for tgradient texture \"%s\". Should be [0..255]" msgstr "" "l'opacitat \"%s\" a la textura \"tgradient\" és incorrecte. Ha de ser " "[0...255]" #: ../src/defaults.c:2193 #, c-format msgid "could not initialize library %s" msgstr "no s'ha pogut inicialitzar la biblioteca %s" #: ../src/defaults.c:2196 #, c-format msgid "could not find function %s::%s" msgstr "no s'ha trobat la rutina %s::%s" #: ../src/defaults.c:2203 #, c-format msgid "invalid texture type %s" msgstr "el tipus de textura \"%s\" no és vàlid" #: ../src/defaults.c:2250 #, c-format msgid "Error in texture specification for key \"%s\"" msgstr "Error de definició de textura a l'opció \"%s\"" #: ../src/defaults.c:2299 msgid "Wrong type for workspace background. Should be a texture type." msgstr "" "El tipus de fons de l'àrea de treball no és vàlid. Ha de ser un tipus de " "textura." #: ../src/defaults.c:2347 #, c-format msgid "Wrong type for background of workspace %i. Should be a texture." msgstr "" "El tipus de fons de l'àrea de treball %i no és vàlid. Ha de ser una textura." #: ../src/defaults.c:2389 msgid "could not load any usable font!!!" msgstr "no s'ha pogut carregar cap tipus de lletra usable !!!" #: ../src/defaults.c:2416 #, c-format msgid "could not get color for key \"%s\"" msgstr "no s'ha pogut obtenir el color de l'opció \"%s\"" #: ../src/defaults.c:2474 ../src/rootmenu.c:531 #, c-format msgid "%s:invalid key modifier \"%s\"" msgstr "%s: el modificador de tecla \"%s\" no és vàlid" #: ../src/defaults.c:2486 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\"" msgstr "%s: el vincle de tecla kbd \"%s\" no és vàlid" #: ../src/defaults.c:2493 #, c-format msgid "%s:invalid key in shortcut \"%s\"" msgstr "%s: tecla no vàlida en el vincle \"%s\"" #: ../src/defaults.c:2518 #, c-format msgid "%s: modifier key %s is not valid" msgstr "%s: el modificador de tecla \"%s\" no és vàlid" #: ../src/defaults.c:2550 #, c-format msgid "could not load image in option %s: %s" msgstr "no s'ha pogut carregar l'imatge de l'opció %s: %s" #: ../src/defaults.c:2667 #, c-format msgid "failed to open bitmap file \"%s\"" msgstr "no s'ha pogut obrir fitxer de mapa de bits \"%s\"" #: ../src/defaults.c:2670 #, c-format msgid "\"%s\" is not a valid bitmap file" msgstr "\"%s\" no és un fitxer de mapa de bits vàlid" #: ../src/defaults.c:2673 #, c-format msgid "out of memory reading bitmap file \"%s\"" msgstr "s'ha esgotat la memòria mentre es llegia el mapa de bits \"%s\"" #: ../src/defaults.c:2712 ../src/defaults.c:2745 msgid "bad number of arguments in cursor specification" msgstr "nombre d'arguments incorrecte en la definició del cursor" #: ../src/defaults.c:2728 #, c-format msgid "unknown builtin cursor name \"%s\"" msgstr "el nom de cursor \"%s\" és desconegut" #: ../src/defaults.c:2755 ../src/defaults.c:2767 #, c-format msgid "could not find cursor bitmap file \"%s\"" msgstr "no s'ha trobat el mapa de bits \"%s\" pel cursor" #: ../src/defaults.c:2814 #, c-format msgid "Error in cursor specification for key \"%s\"" msgstr "Error de definició de cursor a l'opció \"%s\"" #: ../src/defaults.c:2899 msgid "could not render texture for icon background" msgstr "no s'ha pogut dibuixar la textura de fons de l'icona" # desa la sessió (hi ha poc espai) eac #: ../src/dialog.c:147 msgid "Save workspace state" msgstr "Desar la sessió actual" #: ../src/dialog.c:192 ../src/dialog.c:731 ../src/dock.c:565 #: ../src/dockedapp.c:432 ../src/rootmenu.c:198 ../src/rootmenu.c:248 #: ../src/rootmenu.c:264 msgid "Cancel" msgstr "Cancel·la" #: ../src/dialog.c:290 msgid "Could not open directory \"%s\":\n%s" msgstr "No s'ha pogut obrir el directori \"%s\":\n%s" #: ../src/dialog.c:345 msgid "Could not load image file " msgstr "No s'ha pogut carregar la imatge" #: ../src/dialog.c:658 msgid "Directories" msgstr "Directoris" #: ../src/dialog.c:667 msgid "Icons" msgstr "Icones" #: ../src/dialog.c:700 msgid "Preview" msgstr "Visualitza" #: ../src/dialog.c:713 msgid "File Name:" msgstr "Nom del fitxer:" #: ../src/dialog.c:737 msgid "Choose File" msgstr "Trieu un fitxer" #: ../src/dialog.c:756 ../src/dialog.c:758 msgid "Icon Chooser" msgstr "Selecció d'icona" #: ../src/dialog.c:1192 ../src/dialog.c:1301 #, c-format msgid "Version %s" msgstr "Versió %s" #: ../src/dialog.c:1299 msgid "Window Manager for X" msgstr "Gestor de finestres per a X" #: ../src/dialog.c:1323 #, c-format msgid "Using visual 0x%x: %s %ibpp " msgstr "Dispositiu de visualització 0x%x: %s %ibpp " #: ../src/dialog.c:1331 msgid "(32 thousand colors)\n" msgstr "(trenta-dos mil colors)\n" #: ../src/dialog.c:1334 msgid "(64 thousand colors)\n" msgstr "(seixanta-quatre mil colors)\n" #: ../src/dialog.c:1338 msgid "(16 million colors)\n" msgstr "(16 milions de colors)\n" #: ../src/dialog.c:1341 #, c-format msgid "(%d colors)\n" msgstr "(%d colors)\n" #: ../src/dialog.c:1351 #, c-format msgid "Total allocated memory: %i kB. Total memory in use: %i kB.\n" msgstr "Memòria assignada total: %i KB. Memòria en ús: %i KB.\n" #: ../src/dialog.c:1283 msgid "Image formats: " msgstr "Formats d'imatge: " #: ../src/dialog.c:1365 msgid "" "\n" "Additional support for: " msgstr "" "\n" "Suport adicional per: " #: ../src/dialog.c:1388 msgid " and " msgstr " i " #: ../src/dialog.c:1398 msgid "" "\n" "Sound disabled" msgstr "" "\n" "Efectes de so deshabilitats" #: ../src/dialog.c:1400 msgid "" "\n" "Sound enabled" msgstr "" "\n" "Efectes de so habilitats" #: ../src/dialog.c:1404 msgid "; Antialiased text" msgstr "; Text allisat" #: ../src/dialog.c:1433 msgid "Info" msgstr "Informació" #: ../src/dialog.c:1457 msgid "Merry Christmas!" msgstr "Bon Nadal!" #: ../src/dialog.c:1417 msgid "" " Window Maker 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.\n" "\n" " Window Maker 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.\n" "\n" " You should have received a copy of the GNU General Public License along " "with this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin Street, Fifth Floor, Boston, MA02110-1301 USA." msgstr "" " Window Maker és programari lliure; el podeu redistribuïr i/o modificar " "sota els termes de la Llicència Pública General GNU tal com ha estat " "publicada per la Free Software Foundation; ja sigui la versió 2 d'aquesta " "llicència o qualsevol altra versió posterior, a la vostra elecció.\n" "\n" " Window Maker es distribueix amb l'esperança que sigui útil, però SENSE " "CAP MENA DE GARANTIA; ni tan sols amb la garantía implícita de " "COMERCIABILITAT o ADEQUACIÓ A UN PROPÒSIT DETERMINAT. Vegeu la Llicència " "Pública General GNU per a més detalls.\n" "\n" " Haurieu d'haver rebut una còpia de Llicència Pública General GNU " "juntament amb aquest programa; en cas contrari demaneu-la a la Free Software " "Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, E.U.A. " #: ../src/dialog.c:1551 msgid "Legal" msgstr "Legal" #: ../src/dialog.c:1703 ../src/startup.c:394 msgid "cannot open connection for crashing dialog panel. Aborting." msgstr "" "no s'ha pogut obrir una connexió per a un quadre de diàleg d'errors crítics. " "S'avorta." #: ../src/dialog.c:1729 msgid "Fatal error" msgstr "Error fatal" #: ../src/dialog.c:1740 #, c-format msgid "" "Window Maker received signal %i\n" "(%s)." msgstr "" "Window Maker ha rebut un senyal %i\n" "(%s)." #: ../src/dialog.c:1743 #, c-format msgid "Window Maker received signal %i." msgstr "Window Maker ha rebut un senyal %i." #. Comment for the PO file: the %s is an email address #: ../src/dialog.c:1632 #, c-format msgid "" " This fatal error occured probably due to a bug. Please fill the included " "BUGFORM and report it to %s." msgstr "" " Aquest error fatal probablement ha estat causat per un \"bug\". Si us plau, " "ompliu el formulari d'error inclòs i envieu-lo a l'adreça %s." #: ../src/dialog.c:1761 msgid "What do you want to do now?" msgstr "Què voleu fer ara?" #: ../src/dialog.c:1767 msgid "Select action" msgstr "Escolliu una acció" #: ../src/dialog.c:1768 msgid "Abort and leave a core file" msgstr "Avorta i deixa una imatge del nucli" #: ../src/dialog.c:1769 msgid "Restart Window Maker" msgstr "Reinicia Window Maker" #: ../src/dialog.c:1770 msgid "Start alternate window manager" msgstr "Inicia un altre gestor de finestres" #: ../src/dialog.c:1948 msgid "" "Window Maker is part of the GNUstep project.\n" "The GNUstep project aims to create a free\n" "implementation of the OpenStep(tm) specification\n" "which is a object-oriented framework for\n" "creating advanced graphical, multi-platform\n" "applications. Additionally, a development and\n" "user desktop environment will be created on top\n" "of the framework. For more information about\n" "GNUstep, please visit: www.gnustep.org" msgstr "" "Window Maker és part del projecte GNUstep.\n" "El projecte GNUstep aspira a crear una\n" "implementació lliure de l'especificació\n" "OpenStep(tm), un marc de treball orientat\n" "a objectes per crear aplicacions gràfiques\n" "avançades i multiplataforma. Adicionalment\n" "es crearà un entorn d'usuari i un entorn de\n" "desenvolupament. Per a més informació sobre\n" "GNUstep, si us plau, visiteu: www.gnustep.org" #: ../src/dialog.c:1971 msgid "About GNUstep" msgstr "Quant a GNUstep" #: ../src/dock.c:211 #, c-format msgid "Type the name for workspace %i:" msgstr "Nom per a l'àrea de treball %i:" #: ../src/dock.c:212 ../src/dock.c:1150 ../src/dock.c:1153 ../src/dock.c:3445 msgid "Rename Workspace" msgstr "Reanomena l'àrea" #: ../src/dock.c:527 ../src/dock.c:535 msgid "Warning" msgstr "Atenció" #: ../src/dock.c:528 msgid "" "Some icons cannot be made omnipresent. Please make sure that no other icon " "is docked in the same positions on the other workspaces and the Clip is not " "full in some workspace." msgstr "" "Algunes icones no s'han pogut fer omnipresents. Si us plau, assegureu-vos " "que cap altra icona no estigui ancorada en la mateixa posició a altres àrees " "de treball i que el Clip no estigui plè." #: ../src/dock.c:536 msgid "" "Icon cannot be made omnipresent. Please make sure that no other icon is " "docked in the same position on the other workspaces and the Clip is not full " "in some workspace." msgstr "" "L'icona no s'ha pogut fer omnipresent. Si us plau, assegureu-vos que cap " "altra icona no estigui ancorada en la mateixa posició a altres àrees de " "treball i que el Clip no estigui plè." #: ../src/dock.c:563 msgid "Workspace Clip" msgstr "Clip de l'àrea de treball" #: ../src/dock.c:564 msgid "All selected icons will be removed!" msgstr "Totes les icones seleccionades seran eliminades!" #: ../src/dock.c:616 ../src/dock.c:1165 ../src/dock.c:1167 ../src/dock.c:3481 msgid "Keep Icon" msgstr "Deixa l'icona" #: ../src/dock.c:617 ../src/dock.c:2157 ../src/dock.c:2298 msgid "Type the command used to launch the application" msgstr "Entreu les ordres per executar l'aplicació" #: ../src/dock.c:973 #, c-format msgid "could not launch application %s\n" msgstr "no s'ha pogut executar l'aplicació %s\n" #: ../src/dock.c:1028 msgid "could not create workspace submenu for Clip menu" msgstr "no s'ha pogut crear el submenú d'àrea en el menú del Clip" #: ../src/dock.c:1087 msgid "could not create options submenu for Clip menu" msgstr "no s'ha pogut crear el submenú d'opcions en el menú del Clip" #: ../src/dock.c:1091 ../src/dock.c:1139 msgid "Keep on Top" msgstr "Sempre en primer plà" #: ../src/dock.c:1097 msgid "Collapsed" msgstr "Col·lapsat" #: ../src/dock.c:1103 msgid "Autocollapse" msgstr "Autocol·lapsa" #: ../src/dock.c:1109 msgid "Autoraise" msgstr "Autoeleva" #: ../src/dock.c:1115 msgid "Autoattract Icons" msgstr "Autoatreu les icones" #: ../src/dock.c:1145 msgid "Clip Options" msgstr "Opcions del Clip" #: ../src/dock.c:1155 msgid "Selected" msgstr "Seleccionada" # totes les icones? (el menú queda massa ample) eac #: ../src/dock.c:1160 ../src/dock.c:1163 ../src/dock.c:3472 msgid "Select All Icons" msgstr "Selecciona totes" #: ../src/dock.c:1169 ../src/dock.c:1171 ../src/dock.c:3489 msgid "Move Icon To" msgstr "Mou l'icona a" #: ../src/dock.c:1176 ../src/dock.c:1179 ../src/dock.c:3500 msgid "Remove Icon" msgstr "Elimina l'icona" #: ../src/dock.c:1181 msgid "Attract Icons" msgstr "Atreu les icones" #: ../src/dock.c:1184 msgid "Launch" msgstr "Executa" #: ../src/dock.c:1192 msgid "Settings..." msgstr "Configuració..." #: ../src/dock.c:1558 ../src/dock.c:1665 #, c-format msgid "bad value in docked icon state info %s" msgstr "valor no vàlid a l'informació d'estat de l'icona ancorada \"%s\"" #: ../src/dock.c:1673 #, c-format msgid "bad value in docked icon position %i,%i" msgstr "valor no vàlid a l'icona ancorada a la posició %i,%i" #: ../src/dock.c:1693 #, c-format msgid "bad value in dock state info:%s" msgstr "valor no vàlid a l'informació d'estat del moll: %s" #: ../src/dock.c:1939 msgid "there are too many icons stored in dock. Ignoring what doesn't fit" msgstr "hi ha massa icones ancorades al moll. S'ignoren les que no hi caben" #. icon->forced_dock = 1; #: ../src/dock.c:2156 ../src/dock.c:2297 msgid "Dock Icon" msgstr "Ancora l'icona" #: ../src/dock.c:3359 #, c-format msgid "Could not execute command \"%s\"" msgstr "No s'ha pogut executar l'ordre \"%s\"" #: ../src/dock.c:3451 msgid "Toggle Omnipresent" msgstr "Omnipresència" #: ../src/dock.c:3456 ../src/kwm.c:639 ../src/winmenu.c:420 #: ../src/winspector.c:1375 msgid "Omnipresent" msgstr "Omnipresent" # totes les icones? (menú massa ample) eac #: ../src/dock.c:3470 msgid "Unselect All Icons" msgstr "Deselecciona totes" #: ../src/dock.c:3479 msgid "Keep Icons" msgstr "Deixa les icones" #: ../src/dock.c:3487 msgid "Move Icons To" msgstr "Mou les icones a" #: ../src/dock.c:3498 msgid "Remove Icons" msgstr "Elimina les icones" #: ../src/dock.c:3529 ../src/kwm.c:645 msgid "Bring Here" msgstr "Porta aquí" #: ../src/dockedapp.c:150 #, c-format msgid "could not find icon %s, used in a docked application" msgstr "no s'ha trobat l'icona \"%s\", usada per una aplicació ancorada" #: ../src/dockedapp.c:230 #, c-format msgid "Could not open specified icon file: %s" msgstr "No s'ha pogut obrir l'icona especificada: %s" #: ../src/dockedapp.c:232 msgid "Ignore" msgstr "Ignora" #: ../src/dockedapp.c:334 msgid "Start when Window Maker is started" msgstr "Executar quan s'inicia Window Maker" #: ../src/dockedapp.c:341 msgid "Lock (prevent accidental removal)" msgstr "Bloquejar (impedeix que es pugui eliminar)" #: ../src/dockedapp.c:345 msgid "Application path and arguments" msgstr "Ubicació i arguments de l'aplicació" #: ../src/dockedapp.c:358 msgid "Command for middle-click launch" msgstr "Ordre per a l'execució amb el botó del mig" #: ../src/dockedapp.c:372 #, c-format msgid "%s will be replaced with current selection" msgstr "%s es substituirà amb el text seleccionat" #: ../src/dockedapp.c:377 msgid "Command for files dropped with DND" msgstr "Ordre per a l'execució amb fitxers deixats anar" #: ../src/dockedapp.c:391 #, c-format msgid "%d will be replaced with the file name" msgstr "%d es substituirà amb el nom del fitxer" #: ../src/dockedapp.c:395 msgid "DND support was not compiled in" msgstr "No s'ha compilat suport per DND" #: ../src/dockedapp.c:400 msgid "Icon Image" msgstr "Icona" #: ../src/dockedapp.c:414 ../src/winspector.c:1513 msgid "Browse..." msgstr "Vés a..." #: ../src/dockedapp.c:475 msgid "Docked Application Settings" msgstr "Configuració de l'aplicació ancorada" #: ../src/framewin.c:647 ../src/framewin.c:742 ../src/menu.c:456 #: ../src/texture.c:594 #, c-format msgid "could not render texture: %s" msgstr "no s'ha pogut dibuixar la textura: %s" #: ../src/framewin.c:670 ../src/framewin.c:681 ../src/framewin.c:697 #: ../src/framewin.c:708 ../src/framewin.c:715 ../src/framewin.c:722 #: ../src/icon.c:350 ../src/menu.c:485 #, c-format msgid "error rendering image:%s" msgstr "error dibuixant l'imatge: %s" #: ../src/framewin.c:775 #, c-format msgid "error rendering image: %s" msgstr "error dibuixant l'imatge: %s" #: ../src/gnome.c:217 ../src/gnome.c:344 ../src/gnome.c:402 msgid "out of memory while updating GNOME hints" msgstr "memòria esgotada quan s'actualitzaven les pistes de GNOME" #: ../src/icon.c:229 ../src/wdefaults.c:443 #, c-format msgid "error loading image file \"%s\": %s" msgstr "error en carregar el fitxer d'imatge \"%s\": %s" #: ../src/icon.c:493 ../src/icon.c:502 #, c-format msgid "could not create directory %s" msgstr "no s'ha pogut crear el directori %s" #: ../src/icon.c:769 #, c-format msgid "could not find default icon \"%s\"" msgstr "no s'ha trobat l'icona per omissió \"%s\"" #: ../src/icon.c:775 #, c-format msgid "could not load default icon \"%s\":%s" msgstr "no s'ha pogut carregar l'icona per omissió \"%s\": %s" #. #. * 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/kwm.c:635 ../src/winmenu.c:443 ../src/winmenu.c:585 msgid "Maximize" msgstr "Maximitza" #: ../src/kwm.c:636 ../src/winmenu.c:580 msgid "Unmaximize" msgstr "Desmaximitza" #: ../src/kwm.c:637 ../src/winmenu.c:451 ../src/winmenu.c:571 msgid "Miniaturize" msgstr "Miniaturitza" #: ../src/kwm.c:638 ../src/winmenu.c:566 msgid "Deminiaturize" msgstr "Desminiaturitza" #: ../src/kwm.c:640 msgid "Not Omnipresent" msgstr "No omnipresent" #: ../src/kwm.c:641 msgid "Move" msgstr "Mou" #: ../src/kwm.c:642 msgid "Resize" msgstr "Redimensiona" #. #. entry = wMenuAddCallback(menu, _("Select Shortcut"), NULL, NULL); #. wMenuEntrySetCascade(menu, entry, makeMakeShortcutMenu(scr)); #. #: ../src/kwm.c:643 ../src/rootmenu.c:248 ../src/winmenu.c:515 msgid "Close" msgstr "Tanca" #: ../src/kwm.c:644 ../src/winmenu.c:499 msgid "Move To" msgstr "Mou a" #: ../src/kwm.c:1111 msgid "%a(Run Command,Type the command to run:)" msgstr "%a(Executar,Entreu les ordres a executar:)" #: ../src/main.c:222 msgid "failed to restart Window Maker." msgstr "no s'ha pogut reiniciar Window Maker." #: ../src/main.c:225 #, c-format msgid "could not exec %s" msgstr "no s'ha pogut executar %s" #: ../src/main.c:271 msgid "Could not execute command: " msgstr "No s'ha pogut executar l'ordre: " #: ../src/main.c:428 #, c-format msgid "%s aborted.\n" msgstr "%s avortat.\n" #: ../src/main.c:439 #, c-format msgid "Usage: %s [options]\n" msgstr "Mode d'ús: %s [opcions}\n" #: ../src/main.c:440 msgid "The Window Maker window manager for the X window system" msgstr "El gestor de finestres Window Maker pel sistema de finestres X" #: ../src/main.c:442 msgid " -display host:dpy\tdisplay to use" msgstr " -display host:dpy\tpantalla a utilitzar" #: ../src/main.c:444 msgid " --no-cpp \t\tdisable preprocessing of configuration files" msgstr " --no-cpp\t\tomet el preprocessament dels fitxers de configuració" #: ../src/main.c:446 msgid " --no-dock\t\tdo not open the application Dock" msgstr " --no-dock\t\tno obre el Moll d'aplicacions" #: ../src/main.c:447 msgid " --no-clip\t\tdo not open the workspace Clip" msgstr " --no-clip\t\tno obre el Clip" #: ../src/main.c:448 msgid " --no-autolaunch\tdo not autolaunch applications" msgstr " --no-autolaunch\tno executa aplicacions automàticament" #: ../src/main.c:449 msgid " --dont-restore\t\tdo not restore saved session" msgstr " --dont-restore\t\tno restaura la sessió desada" #: ../src/main.c:451 msgid " --locale locale\tlocale to use" msgstr " --locale local\tlocal a utilitzar" #: ../src/main.c:453 msgid "" " --create-stdcmap\tcreate the standard colormap hint in PseudoColor visuals" msgstr "" " --create-stdcmap\tcrea un mapa de colors estàndard pels dispositius " "PseudoColor" #: ../src/main.c:454 msgid " --visual-id visualid\tvisual id of visual to use" msgstr " --visual-id visualid\tdispositiu de visualualització a utilitzar" #: ../src/main.c:455 msgid " --static\t\tdo not update or save configurations" msgstr " --static\t\tno actualitza ni desa la configuració" #: ../src/main.c:456 msgid " --no-polling\t\tdo not periodically check for configuration updates" msgstr "" " --no-polling\t\tno comprova periòdicament si ha canviat la configuració" #: ../src/main.c:458 msgid " --synchronous\t\tturn on synchronous display mode" msgstr " --synchronous\t\thabilita el mode de pantalla sincronitzat" #: ../src/main.c:460 msgid " --version\t\tprint version and exit" msgstr " --version\t\tmostra la versió i surt" #: ../src/main.c:461 msgid " --help\t\t\tshow this message" msgstr " --help\t\t\tmostra aquesta ajuda" #: ../src/main.c:474 #, c-format msgid "" "could not find user GNUstep directory (%s).\n" "Make sure you have installed Window Maker correctly and run wmaker.inst" msgstr "" "no s'ha trobat el directori d'usuari GNUstep (%s).\n" "Assegureu-vos que heu instal·lat Window Maker correctament i executeu wmaker." "inst" #: ../src/main.c:479 #, c-format msgid "could not find user GNUstep directory (%s)." msgstr "no s'ha trobat el directori d'usuari GNUstep (%s)." #: ../src/main.c:482 msgid "" "There was an error while creating GNUstep directory, please make sure you " "have installed Window Maker correctly and run wmaker.inst" msgstr "" "S'ha produït un error quan es creava el directori GNUstep, si us plau " "assegureu-vos que heu instal·lat Window Maker correctament i executeu wmaker." "inst" #: ../src/main.c:485 #, c-format msgid "%s directory created with default configuration." msgstr "s'ha creat el directori %s amb la configuració per omissió." #: ../src/main.c:505 ../src/main.c:510 #, c-format msgid "%s:could not execute initialization script" msgstr "%s: no s'ha pogut executar l'script s'inicialització" #: ../src/main.c:530 ../src/main.c:535 #, c-format msgid "%s:could not execute exit script" msgstr "%s: no s'ha pogut executar l'script de sortida" #: ../src/main.c:663 ../src/main.c:671 ../src/main.c:679 ../src/main.c:699 #, c-format msgid "too few arguments for %s" msgstr "falten arguments per a %s" #: ../src/main.c:683 #, c-format msgid "bad value for visualid: \"%s\"" msgstr "valor de visualid incorrecte: \"%s\"" #: ../src/main.c:707 #, c-format msgid "%s: invalid argument '%s'\n" msgstr "%s: l'argument '%s' no és vàlid\n" #: ../src/main.c:708 #, c-format msgid "Try '%s --help' for more information\n" msgstr "Proveu '%s --help' per a més informació\n" #: ../src/main.c:739 msgid "X server does not support locale" msgstr "el servidor X no suporta el local" #: ../src/main.c:743 msgid "cannot set locale modifiers" msgstr "no s'han pogut establir els modificadors del local" #: ../src/main.c:759 #, c-format msgid "could not open display \"%s\"" msgstr "no s'ha pogut obrir la pantalla \"%s\"" #: ../src/menu.c:1266 msgid "could not grab keyboard" msgstr "no s'ha detectat cap teclat" #: ../src/menu.c:2607 #, c-format msgid "bad value in menus state info:%s" msgstr "valor incorrecte en l'informació d'estat dels menus: %s" #: ../src/menureader.c:264 ../src/rootmenu.c:738 #, c-format msgid "%s:could not stat menu" msgstr "%s: no s'ha pogut determinar l'estat del menú" #: ../src/menureader.c:341 ../src/menureader.c:380 #, c-format msgid "could not stat() menu file '%s'" msgstr "no s'ha pogut determinar l'estat del fitxer '%s'" #: ../src/menureader.c:416 #, c-format msgid "could not find menu file '%s' referenced in WMRootMenu" msgstr "no s'ha trobat el fitxer de menú '%s' esmentat a WMRootMenu" #: ../src/menureader.c:423 #, c-format msgid "could not find any usable menu files. Please check '%s'" msgstr "no s'ha trobat cap fitxer de menú usable. Si us plau, comproveu '%s'" #: ../src/menureader.c:438 ../src/rootmenu.c:1674 #, c-format msgid "" "using default menu file \"%s\" as the menu referenced in WMRootMenu could " "not be found " msgstr "" "com que el menú esmentat a WMRootMenu no existeix, s'usa el menú per omissió " "\"%s\"" #: ../src/menureader.c:457 #, c-format msgid "" "invalid content in menu file '%s'.\n" "It should either be a property list menu or the path to the file, enclosed " "in \"." msgstr "" "el contingut del fitxer de menú \"%s\" no és vàlid.\n" "Hauria de contenir una llista de propietats o bé l'ubicació d'un fitxer " "entre \"cometes\"." #: ../src/misc.c:71 #, c-format msgid "could not define value for %s for cpp" msgstr "no s'ha pogut establir el valor de %s per cpp" #: ../src/misc.c:101 #, c-format msgid "could not get password entry for UID %i" msgstr "no s'ha trobat l'informació de compte de l'UID %i" #: ../src/misc.c:126 #, c-format msgid "your machine is misconfigured. HOSTNAME is set to %s" msgstr "el sistema està mal configurat. HOSTNAME definit com a %s" #: ../src/misc.c:132 #, c-format msgid "your machine is misconfigured. HOST is set to %s" msgstr "el sistema està mal configurat. HOST definit com a %s" #: ../src/misc.c:630 msgid "Program Arguments" msgstr "Arguments del programa" #: ../src/misc.c:631 msgid "Enter command arguments:" msgstr "Entreu els arguments del programa:" #: ../src/misc.c:724 msgid "unable to get dropped data from DND drop" msgstr "no s'han pogut obtenir les dades DND" #: ../src/misc.c:732 msgid "error getting dropped data from DND drop" msgstr "error mentre s'obtenien les dades DND" #: ../src/misc.c:738 msgid "out of memory while getting data from DND drop" msgstr "memòria exhaurida quan s'obtenien dades DND" #: ../src/misc.c:783 ../src/misc.c:923 #, c-format msgid "out of memory during expansion of \"%s\"" msgstr "memòria exhaurida durant l'expansió de \"%s\"" #: ../src/misc.c:837 msgid "out of memory during expansion of \"%w\"" msgstr "memòria exhaurida durant l'expansió de \"%w\"" #: ../src/misc.c:855 msgid "out of memory during expansion of \"%W\"" msgstr "memòria exhaurida durant l'expansió de \"%W\"" #: ../src/misc.c:871 msgid "out of memory during expansion of \"%a\"" msgstr "memòria exhaurida durant l'expansió de \"%a\"" #: ../src/misc.c:902 #, c-format msgid "out of memory during expansion of \"%d\"" msgstr "memòria exhaurida durant l'expansió de \"%d\"" #: ../src/misc.c:916 msgid "selection not available" msgstr "selecció no disponible" #: ../src/misc.c:960 ../src/misc.c:966 #, c-format msgid "bad window name value in %s state info" msgstr "nom de finestra incorrecte en l'informació d'estat de %s" #: ../src/misc.c:1205 msgid "could not send message to background image helper" msgstr "no s'ha pogut enviar un missatge al programa auxiliar d'imatge de fons" #: ../src/pixmap.c:235 #, c-format msgid "could not load mask bitmap file \"%s\". Won't use mask" msgstr "" "no s'ha pogut carregar el fitxer de màscara \"%s\". No s'usarà cap màscara" #: ../src/resources.c:44 #, c-format msgid "could not parse color \"%s\"" msgstr "no s'ha pogut analitzar el nom de color \"%s\"" #: ../src/resources.c:48 #, c-format msgid "could not allocate color \"%s\"" msgstr "no s'ha pogut assignar memòria pel color \"%s\"" #: ../src/rootmenu.c:196 ../src/rootmenu.c:198 msgid "Exit" msgstr "Surt" #: ../src/rootmenu.c:197 msgid "Exit window manager?" msgstr "Voleu sortir del gestor de finestres?" #: ../src/rootmenu.c:245 msgid "Close X session" msgstr "Tanca la sessió X" #: ../src/rootmenu.c:246 msgid "" "Close Window System session?\n" "Kill might close applications with unsaved data." msgstr "" "Voleu tancar la sessió del sistema de finestres?\n" "Això podria tancar aplicacions obertes amb dades no desades." #: ../src/rootmenu.c:261 msgid "Kill X session" msgstr "Finalitza la sessió X" #: ../src/rootmenu.c:262 msgid "" "Kill Window System session?\n" "(all applications will be closed)" msgstr "" "Voleu finalitzar la sessió del sistema de finestres?\n" "(es tancaràn totes les aplicacions)" #: ../src/rootmenu.c:544 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\" for entry %s" msgstr "%s: de vincle de tecla \"%s\" a l'entrada \"%s\" no és vàlid" #: ../src/rootmenu.c:552 #, c-format msgid "%s:invalid key in shortcut \"%s\" for entry %s" msgstr "%s: tecla no vàlida en el vincle \"%s\" a l'entrada %s" #: ../src/rootmenu.c:605 #, c-format msgid "%s: unmatched '\"' in menu file" msgstr "%s: cometes '\"' desaparellades en el fitxer de menú" #: ../src/rootmenu.c:655 #, c-format msgid "%s: missing command" msgstr "%s: falta l'ordre d'execució" #: ../src/rootmenu.c:687 #, c-format msgid "invalid OPEN_MENU specification: %s" msgstr "l'especificació OPEN_MENU no és vàlida: %s" #: ../src/rootmenu.c:746 #, c-format msgid "%s:could not stat menu:%s" msgstr "%s: no s'ha pogut determinar l'estat del menú: %s" #: ../src/rootmenu.c:764 #, c-format msgid "too many parameters in OPEN_MENU: %s" msgstr "sobren paràmetres a l'especificació OPEN_MENU: %s" #: ../src/rootmenu.c:808 msgid "" "There are more than one WORKSPACE_MENU commands in the applications menu. " "Only one is allowed." msgstr "" "Hi ha més d'una instrucció WORKSPACE_MENU en el menú d'aplicacions. Sols " "n'hi pot haver una." #: ../src/rootmenu.c:842 msgid "" "There are more than one WINDOWS_MENU commands in the applications menu. Only " "one is allowed." msgstr "" "Hi ha més d'una instrucció WINDOWS_MENU en el menú d'aplicacions. Sols n'hi " "pot haver una." #: ../src/rootmenu.c:847 msgid "Window List" msgstr "Llista de finestres" #: ../src/rootmenu.c:876 ../src/rootmenu.c:894 ../src/rootmenu.c:904 #, c-format msgid "%s:missing parameter for menu command \"%s\"" msgstr "%s: falta un paràmetre a l'ordre de menú \"%s\"" #: ../src/rootmenu.c:972 #, c-format msgid "%s:unknown command \"%s\" in menu config." msgstr "%s: ordre desconeguda \"%s\" a la configuració del menú." #: ../src/rootmenu.c:980 #, c-format msgid "%s:can't add shortcut for entry \"%s\"" msgstr "%s: no s'ha pogut afegir el vincle de l'entrada \"%s\"" #: ../src/rootmenu.c:1117 #, c-format msgid "%s:maximal line size exceeded in menu config: %s" msgstr "" "%s: s'ha excedit la longitud màxima de línia en la configuració del menú: %s" #: ../src/rootmenu.c:1139 ../src/rootmenu.c:1232 ../src/rootmenu.c:1336 #, c-format msgid "%s:missing command in menu config: %s" msgstr "%s: falta una ordre a la configuració del menú: %s" #: ../src/rootmenu.c:1169 #, c-format msgid "%s:syntax error in menu file:END declaration missing" msgstr "%s: error de sintaxi en el fitxer de menú: falta la declaració \"END\"" #: ../src/rootmenu.c:1198 ../src/rootmenu.c:1300 msgid "could not make arguments for menu file preprocessor" msgstr "" "no s'han pogut crear els arguments pel preprocessador del fitxer de menú" #: ../src/rootmenu.c:1205 ../src/rootmenu.c:1308 #, c-format msgid "%s:could not open/preprocess menu file" msgstr "%s: no s'ha pogut obrir/preprocessar el fitxer de menú" #: ../src/rootmenu.c:1217 ../src/rootmenu.c:1321 #, c-format msgid "could not open menu file \"%s\": %s" msgstr "no s'ha pogut obrir el fitxer de menú \"%s\": %s" #: ../src/rootmenu.c:1244 #, c-format msgid "%s:invalid menu file. MENU command is missing" msgstr "%s: el fitxer de menú no és vàlid. Falta l'ordre \"MENU\"" #: ../src/rootmenu.c:1253 msgid "error reading preprocessed menu data" msgstr "error mentre es llegien les dades del menú preprocessades" #: ../src/rootmenu.c:1348 #, c-format msgid "%s:no title given for the root menu" msgstr "%s: no hi ha cap títol especificat pel menú arrel" #: ../src/rootmenu.c:1439 ../src/rootmenu.c:1512 ../src/rootmenu.c:1553 #, c-format msgid "out of memory while constructing directory menu %s" msgstr "memòria exhaurida mentre es construia el menú de directori %s" #: ../src/rootmenu.c:1449 #, c-format msgid "%s:could not stat file \"%s\" in menu directory" msgstr "" "%s: no s'ha pogut obtenir l'estat del fitxer \"%s\" pel menú de directori" #: ../src/rootmenu.c:1607 msgid "Commands" msgstr "Ordres" #: ../src/rootmenu.c:1610 msgid "Restart" msgstr "Reinicia" #: ../src/rootmenu.c:1611 msgid "Exit..." msgstr "Surt..." #: ../src/rootmenu.c:1656 #, c-format msgid "could not find menu file \"%s\" referenced in WMRootMenu" msgstr "no s'ha trobat el fitxer de menú \"%s\" esmentat a WMRootMenu" #: ../src/rootmenu.c:1663 #, c-format msgid "could not access menu \"%s\" referenced in WMRootMenu" msgstr "no s'ha pogut accedir al menú \"%s\" esmentat a WMRootMenu" #: ../src/rootmenu.c:1697 ../src/rootmenu.c:1773 #, c-format msgid "%s:format error in root menu configuration \"%s\"" msgstr "%s: error de format a la configuració del menú arrel \"%s\"" #: ../src/rootmenu.c:1855 msgid "" "The applications menu could not be loaded. Look at the console output for a " "detailed description of the errors." msgstr "" "No s'ha pogut carregar el menú d'aplicacions. Feu un cop d'ull als missatges " "de la consola per tenir una descripció detallada dels errors." #: ../src/screen.c:715 #, c-format msgid "could not initialize graphics library context: %s" msgstr "no s'ha pogut inicialitzar el context de la biblioteca gràfica: %s" #: ../src/screen.c:743 msgid "could not initialize WINGs widget set" msgstr "no s'ha pogut inicialitzar el conjunt d'elements WINGs" #: ../src/screen.c:1252 #, c-format msgid "could not save session state in %s" msgstr "no s'ha pogut desar l'estat de la sessió a %s" #: ../src/session.c:183 ../src/wdefaults.c:589 ../src/winspector.c:454 #, c-format msgid "can't convert \"%s\" to boolean" msgstr "no s'ha pogut convertir \"%s\" a un valor booleà" #: ../src/session.c:1023 msgid "out of memory while saving session state" msgstr "memòria exhaurida mentre es desava l'estat de la sessió" #: ../src/session.c:1106 msgid "end of memory while saving session state" msgstr "memòria exhaurida mentre es desava l'estat de la sessió" #. 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:1244 msgid "connection to the session manager was lost" msgstr "s'ha perdut la connexió amb el gestor de sessions" #: ../src/stacking.c:79 msgid "could not get window list!!" msgstr "no s'ha pogut obtenir la llista de finestres !!" #: ../src/startup.c:202 #, c-format msgid "internal X error: %s\n" msgstr "error intern de X: %s\n" #: ../src/startup.c:260 #, c-format msgid "got signal %i (%s) - restarting\n" msgstr "s'ha rebut un senyal %i (%s) - reiniciant\n" #: ../src/startup.c:262 #, c-format msgid "got signal %i - restarting\n" msgstr "s'ha rebut un senyal %i - reiniciant\n" #: ../src/startup.c:272 #, c-format msgid "got signal %i (%s) - rereading defaults\n" msgstr "s'ha rebut un senyal %i (%s) - re-llegint els valors per omissió\n" #: ../src/startup.c:274 #, c-format msgid "got signal %i - rereading defaults\n" msgstr "s'ha rebut un senyal %i - re-llegint els valors per omissió\n" #: ../src/startup.c:284 #, c-format msgid "got signal %i (%s) - exiting...\n" msgstr "s'ha rebut un senyal %i (%s) - sortint...\n" #: ../src/startup.c:286 #, c-format msgid "got signal %i - exiting...\n" msgstr "s'ha rebut un senyal %i - sortint...\n" #: ../src/startup.c:329 #, c-format msgid "got signal %i (%s)\n" msgstr "s'ha rebut un senyal %i (%s)\n" #: ../src/startup.c:331 #, c-format msgid "got signal %i\n" msgstr "s'ha rebut un senyal %i\n" #: ../src/startup.c:342 msgid "" "crashed while trying to do some post-crash cleanup. Aborting immediatelly." msgstr "" "error fatal mentre s'intentava arreglar una situació post-crítica. S'avorta " "immediatament." #. we try to restart Window Maker #: ../src/startup.c:406 msgid "trying to restart Window Maker..." msgstr "s'està intentant reiniciar Window Maker..." #: ../src/startup.c:411 msgid "trying to start alternate window manager..." msgstr "s'està intentant iniciar un gestor de finestres alternatiu..." #: ../src/startup.c:417 msgid "failed to start alternate window manager. Aborting." msgstr "no s'ha pogut iniciar cap gestor de finestres alternatiu. S'avorta." #: ../src/startup.c:419 msgid "" "a fatal error has occured, probably due to a bug. Please fill the included " "BUGFORM and report it." msgstr "" "s'ha produït un error fatal, probablement a causa d'un \"bug\". Si us plau, " "ompliu el formulari d'error inclòs i envieu-lo." #: ../src/startup.c:894 #, c-format msgid "icon size is configured to %i, but it's too small. Using 16, instead\n" msgstr "" "la mida de les icones està establerta en %i, però és massa petita. S'usarà " "el valor 16.\n" #: ../src/startup.c:923 msgid "XKB is not supported. KbdModeLock is automatically disabled." msgstr "" "XKB no està suportat. KbdModeLock ha estat deshabilitada automàticament." #: ../src/startup.c:942 msgid "it seems that there is already a window manager running" msgstr "sembla que ja hi ha un gestor de finestres funcionant" #: ../src/startup.c:948 #, c-format msgid "could not manage screen %i" msgstr "no s'ha pogut controlar la pantalla %i" #: ../src/startup.c:1020 msgid "could not manage any screen" msgstr "no s'ha pogut controlar cap pantalla" #: ../src/switchmenu.c:145 msgid "Windows" msgstr "Finestres" #: ../src/texture.c:329 ../src/texture.c:371 #, c-format msgid "image file \"%s\" used as texture could not be found." msgstr "el fitxer d'imatge \"%s\" usat com a textura no s'ha trobat." #: ../src/texture.c:335 ../src/texture.c:377 #, c-format msgid "could not load texture pixmap \"%s\":%s" msgstr "no s'ha pogut carregar el fitxer de mapa de bits \"%s\": %s" # error a l'original #: ../src/texture.c:437 #, c-format msgid "library \"%s\" cound not be opened." msgstr "no s'ha pogut obrir la biblioteca \"%s\"." #: ../src/texture.c:446 #, c-format msgid "function \"%s\" not found in library \"%s\"" msgstr "no s'ha trobat la rutina \"%s\" a la biblioteca \"%s\"" #: ../src/texture.c:453 msgid "function textures not supported on this system, sorry." msgstr "aquest sistema no suporta funcions de textura." #: ../src/texture.c:598 msgid "could not allocate image buffer" msgstr "no s'ha pogut assignar memòria pel buffer d'imatge" #: ../src/wdefaults.c:437 #, c-format msgid "could not find icon file \"%s\"" msgstr "no s'ha trobat el fitxer d'icona \"%s\"" #: ../src/window.c:3026 ../src/window.c:3167 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 "" "sembla que la tecla BloqNum, BloqDespl o una similar està activada.\n" "Desactiveu-la o algunes accions del ratolí o vincles de tecla no funcionaran." #: ../src/winmenu.c:126 msgid "" "This will kill the application.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" "Això finalitzarà l'aplicació.\n" "Els canvis no desats es perdràn.\n" "Voleu continuar?" #: ../src/winmenu.c:274 ../src/winmenu.c:283 msgid "Set Shortcut" msgstr "Assigna al vincle" #: ../src/winmenu.c:361 ../src/winmenu.c:406 msgid "could not create submenu for window menu" msgstr "no s'ha pogut crear el submenú en el menú de finestra" #: ../src/winmenu.c:410 msgid "Keep on top" msgstr "Sempre en primer plà" #: ../src/winmenu.c:415 msgid "Keep at bottom" msgstr "Sempre en últim plà" #: ../src/winmenu.c:459 ../src/winmenu.c:602 msgid "Shade" msgstr "Ombreja" #: ../src/winmenu.c:475 msgid "Hide Others" msgstr "Amaga altres" #: ../src/winmenu.c:483 msgid "Resize/Move" msgstr "Mou o canvia de mida" #: ../src/winmenu.c:491 msgid "Select" msgstr "Selecciona" #: ../src/winmenu.c:504 msgid "Attributes..." msgstr "Propietats..." #: ../src/winmenu.c:506 msgid "Options" msgstr "Opcions" #: ../src/winmenu.c:597 msgid "Unshade" msgstr "Desombreja" #: ../src/winspector.c:387 #, c-format msgid "Could not find icon \"%s\" specified for this window" msgstr "No s'ha trobat l'icona \"%s\" especificada per aquesta finestra" #: ../src/winspector.c:404 #, c-format msgid "Could not open specified icon \"%s\":%s" msgstr "No s'ha pogut obrir l'icona especificada \"%s\": %s" #: ../src/winspector.c:1121 #, c-format msgid "Inspecting %s.%s" msgstr "Propietats de %s.%s" #: ../src/winspector.c:1147 msgid "Click in the window you wish to inspect." msgstr "Feu clic sobre la finestra que volgueu inspeccionar." #: ../src/winspector.c:1186 msgid "" "The configuration will apply to all\n" "windows that have their WM_CLASS\n" "property set to the above selected\n" "name, when saved." msgstr "" "La configuració s'aplicarà a totes les\n" "finestres que tinguin la propietat\n" "WM_CLASS igual que la seleccionada." #: ../src/winspector.c:1215 msgid "Save" msgstr "Desa" #: ../src/winspector.c:1223 msgid "Apply" msgstr "Aplica" #: ../src/winspector.c:1229 msgid "Reload" msgstr "Rellegeix" #: ../src/winspector.c:1238 ../src/winspector.c:1248 msgid "Window Specification" msgstr "Especificació de la finestra" #: ../src/winspector.c:1239 msgid "Window Attributes" msgstr "Atributs de la finestra" #: ../src/winspector.c:1240 msgid "Advanced Options" msgstr "Opcions avançades" #: ../src/winspector.c:1241 msgid "Icon and Initial Workspace" msgstr "Icona i àrea de treball inicial" #: ../src/winspector.c:1242 msgid "Application Specific" msgstr "Específics de l'aplicació" #: ../src/winspector.c:1256 msgid "Defaults for all windows" msgstr "Per omissió a totes les finestres" #: ../src/winspector.c:1310 msgid "Select window" msgstr "Seleccionar una finestra" #: ../src/winspector.c:1324 msgid "Attributes" msgstr "Atributs" #: ../src/winspector.c:1335 msgid "Disable titlebar" msgstr "Deshabilitar la barra de títol" #: ../src/winspector.c:1337 msgid "" "Remove the titlebar of this window.\n" "To access the window commands menu of a window\n" "without it's titlebar, press Control+Esc (or the\n" "equivalent shortcut, if you changed the default\n" "settings)." msgstr "" "Treu la barra de títol d'aquesta finestra.\n" "Per accedir al menú de finestra un cop hagi\n" "desaparegut la barra de títol premeu Control-Esc\n" "(o bé el vincle equivalent, si heu canviat la\n" "configuració per omissió)." #: ../src/winspector.c:1344 msgid "Disable resizebar" msgstr "Deshabilitar la barra inferior" #: ../src/winspector.c:1346 msgid "Remove the resizebar of this window." msgstr "Treu la barra inferior d'aquesta finestra." #: ../src/winspector.c:1349 msgid "Disable close button" msgstr "Deshabilitar el botó de tancar" #: ../src/winspector.c:1351 msgid "Remove the `close window' button of this window." msgstr "Treu el botó per tancar la finestra d'aquesta finestra." #: ../src/winspector.c:1354 msgid "Disable miniaturize button" msgstr "Deshabilitar el botó de miniaturitzar" #: ../src/winspector.c:1356 msgid "Remove the `miniaturize window' button of the window." msgstr "Treu el botó per miniaturitzar la finestra d'aquesta finestra." #: ../src/winspector.c:1359 msgid "Disable border" msgstr "Deshabilitar el marc" #: ../src/winspector.c:1361 msgid "Remove the 1 pixel black border around the window." msgstr "" "Elimina el marc negre d'un píxel de\n" "gruix del voltant d'aquesta finestra." #: ../src/winspector.c:1364 msgid "Keep on top (floating)" msgstr "Sempre en primer plà (flotant)" #: ../src/winspector.c:1366 msgid "" "Keep the window over other windows, not allowing\n" "them to cover it." msgstr "" "Manté aquesta finestra per sobre les\n" "altres, impedint que la cobreixin." #: ../src/winspector.c:1370 msgid "Keep at bottom (sunken)" msgstr "Sempre en últim plà (enfonsada)" #: ../src/winspector.c:1372 msgid "Keep the window under all other windows." msgstr "Manté la finestra per sota totes les altres." #: ../src/winspector.c:1377 msgid "Make window present in all workspaces." msgstr "Fa la finestra present a totes les àrees de treball." #: ../src/winspector.c:1380 msgid "Start miniaturized" msgstr "Començar miniaturitzada" #: ../src/winspector.c:1382 msgid "" "Make the window be automatically miniaturized when it's\n" "first shown." msgstr "" "Fa que la finestra es miniaturitzi automàticament\n" "tan bon punt aparegui per primer cop." #: ../src/winspector.c:1386 msgid "Start maximized" msgstr "Començar maximitzada" #: ../src/winspector.c:1388 msgid "" "Make the window be automatically maximized when it's\n" "first shown." msgstr "" "Fa que la finestra es maximitzi automàticament\n" "tan bon punt aparegui per primer cop." #: ../src/winspector.c:1392 msgid "Full screen maximization" msgstr "Maximització a pantalla completa" #: ../src/winspector.c:1394 msgid "" "Make the window use the whole screen space when it's\n" "maximized. The titlebar and resizebar will be moved\n" "to outside the screen." msgstr "" "Fa que la finestra ocupi tot l'espai de la pantalla\n" "quan es maximitza. La barra de títol i la barra\n" "inferior es desplaçaran fora la pantalla." #: ../src/winspector.c:1411 msgid "Advanced" msgstr "Opcions avançades" #: ../src/winspector.c:1428 msgid "Do not bind keyboard shortcuts" msgstr "Deshabilitar els vincles de tecla" #: ../src/winspector.c:1430 msgid "" "Do not bind keyboard shortcuts from Window Maker\n" "when this window is focused. This will allow the\n" "window to receive all key combinations regardless\n" "of your shortcut configuration." msgstr "" "Deshabilita els vincles de tecla de Window Maker quan\n" "aquesta finestra està enfocada. D'aquesta manera la\n" "finestrà rebrà totes les tecles independentment de la\n" "configuració de Window Maker." #: ../src/winspector.c:1436 msgid "Do not bind mouse clicks" msgstr "Deshabilitar els vincles del ratolí" #: ../src/winspector.c:1438 msgid "" "Do not bind mouse actions, such as `Alt'+drag\n" "in the window (when Alt is the modifier you have\n" "configured)." msgstr "" "Deshabilita els vincles i accions de ratolí de\n" "Window Maker, com ara Alt+arrossegar, en aquesta\n" "finestra (si Alt és el modificador que heu configurat)." #: ../src/winspector.c:1443 msgid "Do not show in the window list" msgstr "No mostrar a la llista de finestres" #: ../src/winspector.c:1445 msgid "Do not list the window in the window list menu." msgstr "No mostra aquesta finestra a la llista de finestres." #: ../src/winspector.c:1448 msgid "Do not let it take focus" msgstr "Sempre desenfocada" #: ../src/winspector.c:1450 msgid "" "Do not let the window take keyboard focus when you\n" "click on it." msgstr "No permet mai que s'enfoqui aquesta finestra." #: ../src/winspector.c:1454 msgid "Keep inside screen" msgstr "Mantenir a dins de la pantalla" #: ../src/winspector.c:1456 msgid "" "Do not allow the window to move itself completely\n" "outside the screen. For bug compatibility.\n" msgstr "" "No permet moure la finestra completament fora la\n" "pantalla. Per compatibiltat amb algun \"bug\".\n" #: ../src/winspector.c:1460 msgid "Ignore 'Hide Others'" msgstr "Ignorar l'ordre \"Amagar altres\"" #: ../src/winspector.c:1462 msgid "" "Do not hide the window when issuing the\n" "`HideOthers' command." msgstr "" "No amaga aquesta finestra quan s'executa\n" "l'instrucció \"Amagar altres\"." #: ../src/winspector.c:1466 msgid "Ignore 'Save Session'" msgstr "Ignorar l'ordre \"Desar la sessió\"" #: ../src/winspector.c:1468 msgid "" "Do not save the associated application in the\n" "session's state, so that it won't be restarted\n" "together with other applications when Window Maker\n" "starts." msgstr "" "No inclou aquesta aplicació quan és desa l'estat\n" "de la sessió i per tant no es reinicia junt amb\n" "les altres aplicacions quan s'inicia Window Maker\n" "per pròxima vegada." #: ../src/winspector.c:1474 msgid "Emulate application icon" msgstr "Emular l'icona d'aplicació" #: ../src/winspector.c:1476 msgid "" "Make this window act as an application that provides\n" "enough information to Window Maker for a dockable\n" "application icon to be created." msgstr "" "Actua com si aquesta aplicació proporcionés l'informació\n" "necessària per què Window Maker pugui crear una icona\n" "d'aplicació que es pugui ancorar. " #: ../src/winspector.c:1482 msgid "Disable language button" msgstr "Deshabilitar el botó de llenguatge" #: ../src/winspector.c:1484 msgid "Remove the `toggle language' button of the window." msgstr "Treu el botó de canvi d'idioma de la finestra." #: ../src/winspector.c:1501 msgid "Miniwindow Image" msgstr "Imatge de la finestra en miniatura" #: ../src/winspector.c:1528 msgid "Icon filename:" msgstr "Fitxer d'icona:" # "Ignora l'icona facilitada pel client" no hi cap. eac #: ../src/winspector.c:1541 msgid "Ignore client supplied icon" msgstr "Ignorar la facilitada pel client" #: ../src/winspector.c:1548 msgid "Initial Workspace" msgstr "Àrea de treball inicial" #: ../src/winspector.c:1550 msgid "The workspace to place the window when it's first shown." msgstr "Àrea de treball on posar la finestra quan apareix per primer cop." #: ../src/winspector.c:1556 msgid "Nowhere in particular" msgstr "Cap en particular" #: ../src/winspector.c:1574 msgid "Application Attributes" msgstr "Atributs de l'aplicació" #: ../src/winspector.c:1585 msgid "Start hidden" msgstr "Iniciar amagada" #: ../src/winspector.c:1587 msgid "Automatically hide application when it's started." msgstr "Amaga l'aplicació automàticament quan s'inicia." #: ../src/winspector.c:1590 msgid "No application icon" msgstr "Deshabilitar l'icona d'aplicació" #: ../src/winspector.c:1592 msgid "" "Disable the application icon for the application.\n" "Note that you won't be able to dock it anymore,\n" "and any icons that are already docked will stop\n" "working correctly." msgstr "" "Deshabilita l'icona d'aplicació per a l'aplicació.\n" "Tingueu en compte que sense icona d'aplicació no la\n" "podreu ancorar més, i que les icones que estiguin\n" "ancorades actualment deixaran de funcionar correctament." #: ../src/winspector.c:1598 msgid "Shared application icon" msgstr "Icona d'aplicació compartida" #: ../src/winspector.c:1600 msgid "" "Use a single shared application icon for all of\n" "the instances of this application.\n" msgstr "" "Usa una única icona d'aplicació per a totes les\n" "instàncies d'aquesta aplicació.\n" # wm hints? #: ../src/wmspec.c:277 msgid "out of memory while updating wm hints" msgstr "memòria esgotada quan s'actualitzaven les pistes wm" #: ../src/workspace.c:105 ../src/workspace.c:106 ../src/workspace.c:902 #, c-format msgid "Workspace %i" msgstr "Àrea de treball %i" #: ../src/workspace.c:952 msgid "Workspaces" msgstr "Àrees de treball" #: ../src/workspace.c:954 msgid "could not create Workspace menu" msgstr "no s'ha pogut crear el menú de l'àrea de treball" #: ../src/workspace.c:961 msgid "New" msgstr "Nou" #: ../src/workspace.c:962 msgid "Destroy Last" msgstr "Destrueix l'últim" WindowMaker-0.95.9/po/ms.po0000644000175000017500000014666513431646201012405 00000000000000# terjemahan WindowMaker untuk Bahasa Melayu. # Copyright (C) 2001 Free Software Foundation, Inc. # Hasbullah Bin Pit , 2001. # msgid "" msgstr "" "Project-Id-Version: WindowMaker 0.8.x\n" "POT-Creation-Date: 2001-12-26 03:25+0800\n" "PO-Revision-Date: 2001-12-31 02:53+0800\n" "Last-Translator: Hasbullah Bin Pit \n" "Language-Team: Projek Gabai (Bahasa Melayu) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../src/appicon.c:426 ../src/dialog.c:282 ../src/dock.c:3325 #: ../src/dockedapp.c:230 ../src/main.c:273 ../src/rootmenu.c:1850 #: ../src/winspector.c:389 ../src/winspector.c:406 msgid "Error" msgstr "Ralat" #: ../src/appicon.c:427 msgid "Could not open specified icon file" msgstr "Tak dapat membuka fail ikon yang dinyatakan" #: ../src/appicon.c:428 ../src/dialog.c:179 ../src/dialog.c:282 #: ../src/dialog.c:729 ../src/dialog.c:1814 ../src/dock.c:526 #: ../src/dock.c:534 ../src/dock.c:558 ../src/dock.c:3326 #: ../src/dockedapp.c:231 ../src/dockedapp.c:426 ../src/main.c:273 #: ../src/rootmenu.c:1854 ../src/winspector.c:390 ../src/winspector.c:407 msgid "OK" msgstr "OK" #: ../src/appicon.c:456 ../src/dock.c:264 msgid "" " will be forcibly closed.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" " akan ditutup secara paksa.\n" "Sebarang perubahan yang tidak disimpan akan hilang.\n" "Sila pastikan." #: ../src/appicon.c:464 ../src/dock.c:283 ../src/winmenu.c:124 msgid "Kill Application" msgstr "Bunuh Aplikasi" #: ../src/appicon.c:465 ../src/dock.c:284 ../src/winmenu.c:126 msgid "Yes" msgstr "Ya" #: ../src/appicon.c:465 ../src/dock.c:284 ../src/winmenu.c:126 msgid "No" msgstr "Tidak" #: ../src/appicon.c:495 ../src/dock.c:1177 ../src/dock.c:3491 msgid "Unhide Here" msgstr "Nyahsorok di sini" #: ../src/appicon.c:496 ../src/appicon.c:521 ../src/dock.c:1179 #: ../src/dock.c:1181 ../src/dock.c:3503 ../src/winmenu.c:461 msgid "Hide" msgstr "Sorok" #: ../src/appicon.c:497 msgid "Set Icon..." msgstr "Tetapkan Ikon..." #: ../src/appicon.c:498 ../src/dock.c:1185 ../src/rootmenu.c:248 #: ../src/rootmenu.c:264 ../src/winmenu.c:508 msgid "Kill" msgstr "Bunuh" #: ../src/appicon.c:519 ../src/dock.c:3501 msgid "Unhide" msgstr "Nyahsorok" #: ../src/application.c:398 #, c-format msgid "recreating missing icon '%s'" msgstr "Mencipta semula ikon hilang '%s'" #: ../src/defaults.c:919 ../src/defaults.c:1008 #, c-format msgid "Domain %s (%s) of global defaults database is corrupted!" msgstr "Domain %s (%s) pangkalan data default global telah rosak!" #: ../src/defaults.c:924 #, c-format msgid "could not load domain %s from global defaults database" msgstr "Tak dapat memuatkan domain %s daripada pangkalan data defaul global" #: ../src/defaults.c:946 ../src/startup.c:884 ../src/startup.c:902 #: ../src/startup.c:908 #, c-format msgid "could not read domain \"%s\" from defaults database" msgstr "tak dapat membaca domain \"%s\" daripada pangakalandata default" #: ../src/defaults.c:992 ../src/defaults.c:1096 ../src/defaults.c:1137 #: ../src/defaults.c:1193 #, c-format msgid "Domain %s (%s) of defaults database is corrupted!" msgstr "Domain %s (%s) pangkalan data telah rosak!" #: ../src/defaults.c:997 ../src/defaults.c:1116 ../src/defaults.c:1173 #: ../src/defaults.c:1202 ../src/menureader.c:397 #, c-format msgid "could not load domain %s from user defaults database" msgstr "Tak dapat memuatkan domain %s daripada pangkalan data default" #: ../src/defaults.c:1027 #, c-format msgid "could not load domain %s from global defaults database (%s)" msgstr "tak dapat memuatkan domain %s drpd pangkalan data default global(%s)" #: ../src/defaults.c:1163 ../src/screen.c:458 #, c-format msgid "could not load logo image for panels: %s" msgstr "tak dapat memuatkan imej logo panels:%s" #. --------------------------- Local ----------------------- #: ../src/defaults.c:1411 ../src/defaults.c:1553 ../src/defaults.c:1665 #: ../src/defaults.c:2144 ../src/defaults.c:2161 ../src/defaults.c:2206 #: ../src/defaults.c:2253 ../src/defaults.c:2726 ../src/wdefaults.c:571 #: ../src/wdefaults.c:607 #, c-format msgid "Wrong option format for key \"%s\". Should be %s." msgstr "Format opsyen salah untuk kekunci \"%s\". Sepatutnya %s." #: ../src/defaults.c:1413 ../src/defaults.c:1494 ../src/defaults.c:1526 #: ../src/defaults.c:1558 ../src/defaults.c:1571 ../src/defaults.c:1586 #: ../src/defaults.c:1600 ../src/defaults.c:1670 ../src/defaults.c:1682 #: ../src/defaults.c:2149 ../src/defaults.c:2166 ../src/defaults.c:2179 #: ../src/defaults.c:2211 ../src/defaults.c:2227 ../src/defaults.c:2258 #: ../src/defaults.c:2345 ../src/defaults.c:2731 ../src/defaults.c:2742 #, c-format msgid "using default \"%s\" instead" msgstr "mengguna \"%s\" default sebaliknya" #: ../src/defaults.c:1444 #, c-format msgid "wrong option value for key \"%s\". Should be one of %s" msgstr "Nilai opsyen salah untuk kekunci \"%s\". Sepatutnya salah satu drpd %s" #: ../src/defaults.c:1489 #, c-format msgid "can't convert \"%s\" to boolean for key \"%s\"" msgstr "Tak dapat menukar \"%s\" ke boolean untuk kekunci \"%s\"" #: ../src/defaults.c:1523 #, c-format msgid "can't convert \"%s\" to integer for key \"%s\"" msgstr "Tak dapat menukar \"%s\" ke integer untuk kekunci \"%s\"" #: ../src/defaults.c:1566 #, c-format msgid "Incorrect number of elements in array for key \"%s\"." msgstr "Bilangan unsur yang salah dalam jujukan untuk kekunci \"%s\"." #: ../src/defaults.c:1581 #, c-format msgid "Wrong value for key \"%s\". Should be Coordinate." msgstr "Nilai salah untuk kekunci \"%s\". Sepatutnya Koordinat" #: ../src/defaults.c:1596 #, c-format msgid "can't convert array to integers for \"%s\"." msgstr "tak dapat menukar array ke intiger untuk \"%s\"." #: ../src/defaults.c:1794 ../src/defaults.c:1826 ../src/defaults.c:1842 #: ../src/defaults.c:1871 ../src/defaults.c:1894 ../src/defaults.c:1947 #: ../src/defaults.c:1987 ../src/defaults.c:2025 ../src/defaults.c:2041 #, c-format msgid "\"%s\" is not a valid color name" msgstr "\"%s\" adalah nama warna yang tidak sah" #: ../src/defaults.c:1807 ../src/defaults.c:1859 msgid "bad number of arguments in gradient specification" msgstr "nombor hujah yang salah pada spesifikasi gradient" #: ../src/defaults.c:1920 msgid "too few arguments in multicolor gradient specification" msgstr "terlalu sedikit hujah pada spesifikasi hujah perlbagaiwarna" #: ../src/defaults.c:2014 msgid "bad number of arguments in textured gradient specification" msgstr "bilangan hujah salah pada spesifikasi gradient tertekstur" #: ../src/defaults.c:2057 #, c-format msgid "bad opacity value for tgradient texture \"%s\". Should be [0..255]" msgstr "nilai opacity salah untuk tekstur gradient \"%s\". sepatutnya [0..255]" #: ../src/defaults.c:2117 #, c-format msgid "could not initialize library %s" msgstr "tak dapat memulakan pustaka %s" #: ../src/defaults.c:2120 #, c-format msgid "could not find function %s::%s" msgstr "tak menjumpai fungsi %s::%s" #: ../src/defaults.c:2127 #, c-format msgid "invalid texture type %s" msgstr "jenis tekstur tak sah %s" #: ../src/defaults.c:2174 #, c-format msgid "Error in texture specification for key \"%s\"" msgstr "Ralat pada spesifikasi tekstur untuk kekunci \"%s\"" #: ../src/defaults.c:2223 msgid "Wrong type for workspace background. Should be a texture type." msgstr "Jenis yang salah bagi latar ruang kerja. Sepatutnya jenis tekstur" #: ../src/defaults.c:2271 #, c-format msgid "Wrong type for background of workspace %i. Should be a texture." msgstr "Jenis yang salah bagi latar ruangkerja %i. Sepatutnya tekstur." #: ../src/defaults.c:2313 msgid "could not load any usable font!!!" msgstr "tak dapat memuatkan font yang boleh digunakan" #: ../src/defaults.c:2340 #, c-format msgid "could not get color for key \"%s\"" msgstr "tak boleh mendapatkan warna untuk kekunci \"%s\"" #: ../src/defaults.c:2398 ../src/rootmenu.c:523 #, c-format msgid "%s:invalid key modifier \"%s\"" msgstr "%s:kekunci modifier tak sah \"%s\"" #: ../src/defaults.c:2410 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\"" msgstr "%s:spesifikasi pintasan kbd tidak sah \"%s\"" #: ../src/defaults.c:2417 #, c-format msgid "%s:invalid key in shortcut \"%s\"" msgstr "%s: kekunci tidak sah pasa pintasan \"%s\"" #: ../src/defaults.c:2442 #, c-format msgid "%s: modifier key %s is not valid" msgstr "%s: kekunci modifier %s adalah tidak sah" #: ../src/defaults.c:2474 #, c-format msgid "could not load image in option %s: %s" msgstr "tak dapat memuatkan imej pada opsyen %s: %s" #: ../src/defaults.c:2591 #, c-format msgid "failed to open bitmap file \"%s\"" msgstr "gagal membuka fail bitmap \"%s\"" #: ../src/defaults.c:2594 #, c-format msgid "\"%s\" is not a valid bitmap file" msgstr "\"%s\" adalah fail bitmap yang tidak sah" #: ../src/defaults.c:2597 #, c-format msgid "out of memory reading bitmap file \"%s\"" msgstr "kehausan memori ketika membaca fail bitmap \"%s\"" #: ../src/defaults.c:2636 ../src/defaults.c:2669 msgid "bad number of arguments in cursor specification" msgstr "bilangan hujah salah pada spesifikasi kursor" #: ../src/defaults.c:2652 #, c-format msgid "unknown builtin cursor name \"%s\"" msgstr "nama kursor dalaman tidak diketahui \"%s\"" #: ../src/defaults.c:2679 ../src/defaults.c:2691 #, c-format msgid "could not find cursor bitmap file \"%s\"" msgstr "tak menjumpai fail bitmap kursor \"%s\"" #: ../src/defaults.c:2738 #, c-format msgid "Error in cursor specification for key \"%s\"" msgstr "Ralat pada spesifikasi kursor bagi kekunci \"%s\"" #: ../src/defaults.c:2823 msgid "could not render texture for icon background" msgstr "tak dapat render tekstur untuk latar ikon" #: ../src/dialog.c:135 msgid "Save workspace state" msgstr "Simpan keadaan ruangkerja" #: ../src/dialog.c:179 ../src/dialog.c:736 ../src/dock.c:558 #: ../src/dockedapp.c:431 ../src/rootmenu.c:198 ../src/rootmenu.c:248 #: ../src/rootmenu.c:264 msgid "Cancel" msgstr "Batal" #: ../src/dialog.c:277 msgid "Could not open directory \"%s\":\n%s" msgstr "Tak dapat membuka direktori \"%s\":\n%s" #: ../src/dialog.c:332 msgid "Could not load image file " msgstr "Tak dapat memuatkan fail imej" #: ../src/dialog.c:663 msgid "Directories" msgstr "Direktori" #: ../src/dialog.c:672 msgid "Icons" msgstr "Ikon" #: ../src/dialog.c:705 msgid "Preview" msgstr "Pralihat" #: ../src/dialog.c:718 msgid "File Name:" msgstr "Nama Fail:" #: ../src/dialog.c:742 msgid "Choose File" msgstr "Pilih Fail" #: ../src/dialog.c:760 ../src/dialog.c:762 msgid "Icon Chooser" msgstr "Pemilih Ikon" #: ../src/dialog.c:1241 ../src/dialog.c:1351 #, c-format msgid "Version %s" msgstr "Versi %s" #: ../src/dialog.c:1348 msgid "Window Manager for X" msgstr "Pengurus Tetingkap untuk X" #: ../src/dialog.c:1371 #, c-format msgid "Using visual 0x%x: %s %ibpp " msgstr "Menggunakan visual 0x%x: %s %ibpp" #: ../src/dialog.c:1379 msgid "(32 thousand colors)\n" msgstr "(32 ribu warna)\n" #: ../src/dialog.c:1382 msgid "(64 thousand colors)\n" msgstr "(64 ribu warna)\n" #: ../src/dialog.c:1386 msgid "(16 million colors)\n" msgstr "(16 juta warna)\n" #: ../src/dialog.c:1389 #, c-format msgid "(%d colors)\n" msgstr "(%d warna)\n" #: ../src/dialog.c:1399 #, c-format msgid "Total allocated memory: %i kB. Total memory in use: %i kB.\n" msgstr "Jumlam memori diperuntukkan: %i kB. Jumlah memori digunakan: %i kB.\n" #: ../src/dialog.c:1283 msgid "Image formats: " msgstr "Format imej: " #: ../src/dialog.c:1413 msgid "" "\n" "Additional support for: " msgstr "" "\n" "Sokongan tambahan untuk: " #: ../src/dialog.c:1436 msgid " and " msgstr " dan " #: ../src/dialog.c:1446 msgid "" "\n" "Sound disabled" msgstr "" "\n" "Bunyi dimatikan" #: ../src/dialog.c:1448 msgid "" "\n" "Sound enabled" msgstr "" "\n" "Bunyi dihidupkan" #: ../src/dialog.c:1472 msgid "Info" msgstr "Maklumat" #: ../src/dialog.c:1495 msgid "Merry Christmas!" msgstr "Selamat Hari Natal!" #: ../src/dialog.c:1417 msgid "" " Window Maker 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.\n" "\n" " Window Maker 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.\n" "\n" " You should have received a copy of the GNU General Public License along " "with this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin Street, Fifth Floor, Boston, MA02110-1301 USA." msgstr "" #: ../src/dialog.c:1586 msgid "Legal" msgstr "Perundangan" #: ../src/dialog.c:1737 ../src/startup.c:395 msgid "cannot open connection for crashing dialog panel. Aborting." msgstr "Tak dapat membuka sambungan untuk panel dialog terjahaman. Diabaikan." #: ../src/dialog.c:1763 msgid "Fatal error" msgstr "Ralat Fatal" #: ../src/dialog.c:1774 #, c-format msgid "" "Window Maker received signal %i\n" "(%s)." msgstr "" "Window Maker menerima isyarat %i\n" "(%s)." #: ../src/dialog.c:1777 #, c-format msgid "Window Maker received signal %i." msgstr "Window Maker menerima isyarat %i." #: ../src/dialog.c:1786 msgid "" " This fatal error occured probably due to a bug. Please fill the included " "BUGFORM and report it to %s." msgstr "" " Ralat fatal ini berlaku kemungkinan disebabkan pepijat. Sila ini BUGFORM " "yang disertakan dan laporkan ke %s." #: ../src/dialog.c:1795 msgid "What do you want to do now?" msgstr "Apa yang anda ingin lakukan sekarang?" #: ../src/dialog.c:1801 msgid "Select action" msgstr "Pilih aksi" #: ../src/dialog.c:1802 msgid "Abort and leave a core file" msgstr "Abai dan tinggalkan fail core" #: ../src/dialog.c:1803 msgid "Restart Window Maker" msgstr "Ulanghidupkan Window Maker" #: ../src/dialog.c:1804 msgid "Start alternate window manager" msgstr "Hidupkan pengurus tetingkap lain" #: ../src/dialog.c:1982 msgid "" "Window Maker is part of the GNUstep project.\n" "The GNUstep project aims to create a free\n" "implementation of the OpenStep(tm) specification\n" "which is a object-oriented framework for\n" "creating advanced graphical, multi-platform\n" "applications. Additionally, a development and\n" "user desktop enviroment will be created on top\n" "of the framework. For more information about\n" "GNUstep, please visit: www.gnustep.org" msgstr "" #: ../src/dialog.c:2002 msgid "About GNUstep" msgstr "Perihal GNUstep" #: ../src/dock.c:213 #, c-format msgid "Type the name for workspace %i:" msgstr "Taip nama ruangkerja %i:" #: ../src/dock.c:214 ../src/dock.c:1141 ../src/dock.c:1144 ../src/dock.c:3409 msgid "Rename Workspace" msgstr "Tukarnama Ruangkerja" #: ../src/dock.c:520 ../src/dock.c:528 msgid "Warning" msgstr "Amaran" #: ../src/dock.c:521 msgid "" "Some icons cannot be made omnipresent. Please make sure that no other icon " "is docked in the same positions on the other workspaces and the Clip is not " "full in some workspace." msgstr "" "Terdapat ikon tak dapat dijadikan omnipresent. Sila pastikan tiada ikon lain " "dilabuhkan pada posisi sama pada ruang kerja lain dan Klipnya tidak penuh " "pada semua ruang kerja." #: ../src/dock.c:529 msgid "" "Icon cannot be made omnipresent. Please make sure that no other icon is " "docked in the same position on the other workspaces and the Clip is not full " "in some workspace." msgstr "" "Ikon tak dpaat dijadikan omnipresent. Sila pastikan tiada ikon lain " "dilabuhkan pada posisi sama pada ruang kerja lain dan Klipnya tidak penuh " "pada semua ruang kerja." #: ../src/dock.c:556 msgid "Workspace Clip" msgstr "Klip Ruangkerja" #: ../src/dock.c:557 msgid "All selected icons will be removed!" msgstr "Semua ikon yang dipilih akan dibuang!" #: ../src/dock.c:608 ../src/dock.c:1156 ../src/dock.c:1158 ../src/dock.c:3445 msgid "Keep Icon" msgstr "Simpan Ikon" #: ../src/dock.c:609 ../src/dock.c:2137 ../src/dock.c:2278 msgid "Type the command used to launch the application" msgstr "Taip arahan yang digunakan untuk melancarkan aplikasi" #: ../src/dock.c:965 #, c-format msgid "could not launch application %s\n" msgstr "tak dapat melancarkan aplikasi %s\n" #: ../src/dock.c:1020 msgid "could not create workspace submenu for Clip menu" msgstr "tak dapat mencipta submenu ruangkerja untuk menu Klip" #: ../src/dock.c:1078 msgid "could not create options submenu for Clip menu" msgstr "tak dapat mencipta submenu opsyen untuk menu Klip" #: ../src/dock.c:1082 ../src/dock.c:1130 msgid "Keep on Top" msgstr "Sentiada di atas" #: ../src/dock.c:1088 msgid "Collapsed" msgstr "Runtuh" #: ../src/dock.c:1094 msgid "Autocollapse" msgstr "AutoRuntuh" #: ../src/dock.c:1100 msgid "Autoraise" msgstr "Autonaik" #: ../src/dock.c:1106 msgid "Autoattract Icons" msgstr "Autotarik Ikon" #: ../src/dock.c:1136 msgid "Clip Options" msgstr "Opsyen Klip" #: ../src/dock.c:1146 msgid "Selected" msgstr "Dipilih" #: ../src/dock.c:1151 ../src/dock.c:1154 ../src/dock.c:3436 msgid "Select All Icons" msgstr "Pilih Semua Ikon" #: ../src/dock.c:1160 ../src/dock.c:1162 ../src/dock.c:3453 msgid "Move Icon To" msgstr "Pindah Ikon Ke" #: ../src/dock.c:1167 ../src/dock.c:1170 ../src/dock.c:3464 msgid "Remove Icon" msgstr "Buang Ikon" #: ../src/dock.c:1172 msgid "Attract Icons" msgstr "Tarik Ikon" #: ../src/dock.c:1175 msgid "Launch" msgstr "Lancar" #: ../src/dock.c:1183 msgid "Settings..." msgstr "Tetapan..." #: ../src/dock.c:1548 ../src/dock.c:1655 #, c-format msgid "bad value in docked icon state info %s" msgstr "nilai salah untuk maklumat keadaan ikon terlabuh %s" #: ../src/dock.c:1663 #, c-format msgid "bad value in docked icon position %i,%i" msgstr "nilai salah untuk posisi ikon terlabuh %i,%i" #: ../src/dock.c:1683 #, c-format msgid "bad value in dock state info:%s" msgstr "" #: ../src/dock.c:1919 msgid "there are too many icons stored in dock. Ignoring what doesn't fit" msgstr "" #. icon->forced_dock = 1; #: ../src/dock.c:2136 ../src/dock.c:2277 msgid "Dock Icon" msgstr "" #: ../src/dock.c:3323 #, c-format msgid "Could not execute command \"%s\"" msgstr "Tak dapat melaksanakan arahan \"%s\"" #: ../src/dock.c:3415 msgid "Toggle Omnipresent" msgstr "" #: ../src/dock.c:3420 ../src/kwm.c:637 ../src/winmenu.c:413 #: ../src/winspector.c:1375 msgid "Omnipresent" msgstr "" #: ../src/dock.c:3434 msgid "Unselect All Icons" msgstr "Nyahpilih Semua Ikon" #: ../src/dock.c:3443 msgid "Keep Icons" msgstr "Simpan Ikon" #: ../src/dock.c:3451 msgid "Move Icons To" msgstr "Pindahkan Ikon Ke" #: ../src/dock.c:3462 msgid "Remove Icons" msgstr "Buang Ikon" #: ../src/dock.c:3493 ../src/kwm.c:643 msgid "Bring Here" msgstr "Bawa ke sini" #: ../src/dockedapp.c:149 #, c-format msgid "could not find icon %s, used in a docked application" msgstr "" #: ../src/dockedapp.c:229 #, c-format msgid "Could not open specified icon file: %s" msgstr "tak dapat membuka fail ikon yang dinyatakan: %s" #: ../src/dockedapp.c:231 msgid "Ignore" msgstr "Abaikan" #: ../src/dockedapp.c:333 msgid "Start when Window Maker is started" msgstr "Dimulakan bila Window Maker dihidupkan" #: ../src/dockedapp.c:340 msgid "Lock (prevent accidental removal)" msgstr "Kunci (cegah pembuangan tak disengajakan)" #: ../src/dockedapp.c:344 msgid "Application path and arguments" msgstr "Path Aplikasi dan hujah" #: ../src/dockedapp.c:357 msgid "Command for middle-click launch" msgstr "Arahan untuk pelancaran klik-tengah" #: ../src/dockedapp.c:371 #, c-format msgid "%s will be replaced with current selection" msgstr "%s akan digantikan dengan pilihan semasa" #: ../src/dockedapp.c:376 msgid "Command for files dropped with DND" msgstr "Arahan untuk fail yang dijatuhkan dengan DND" #: ../src/dockedapp.c:390 #, c-format msgid "%d will be replaced with the file name" msgstr "%d akan digantikan dengan nama fail" #: ../src/dockedapp.c:394 msgid "DND support was not compiled in" msgstr "Sokongan DND tidak dikompil bersama" #: ../src/dockedapp.c:399 msgid "Icon Image" msgstr "Imej Ikon" #: ../src/dockedapp.c:413 ../src/winspector.c:1513 msgid "Browse..." msgstr "Lihat..." #: ../src/dockedapp.c:466 msgid "Docked Application Settings" msgstr "Tetapan Aplikasi Limbungan" #: ../src/framewin.c:649 ../src/framewin.c:744 ../src/menu.c:456 #: ../src/texture.c:594 #, c-format msgid "could not render texture: %s" msgstr "tak dapat render tekstur: %s" #: ../src/framewin.c:672 ../src/framewin.c:683 ../src/framewin.c:699 #: ../src/framewin.c:710 ../src/framewin.c:717 ../src/framewin.c:724 #: ../src/icon.c:350 ../src/menu.c:485 #, c-format msgid "error rendering image:%s" msgstr "ralat merender imej:%s" #: ../src/framewin.c:777 #, c-format msgid "error rendering image: %s" msgstr "ralat merender imej: %s" #: ../src/gnome.c:216 ../src/gnome.c:343 ../src/gnome.c:401 msgid "out of memory while updating GNOME hints" msgstr "tak cukup memori bila mengemaskini petua GNOME" #: ../src/icon.c:229 ../src/wdefaults.c:443 #, c-format msgid "error loading image file \"%s\": %s" msgstr "ralat memuatkan fail imej \"%s\": %s" #: ../src/icon.c:491 ../src/icon.c:500 #, c-format msgid "could not create directory %s" msgstr "tak dapat mencipta direktori %s" #: ../src/icon.c:767 #, c-format msgid "could not find default icon \"%s\"" msgstr "tak menjumpai ikon default \"%s\"" #: ../src/icon.c:773 #, c-format msgid "could not load default icon \"%s\":%s" msgstr "tak dapat memuatkan ikon default \"%s\":%s" #. #. * 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/kwm.c:633 ../src/winmenu.c:436 ../src/winmenu.c:571 msgid "Maximize" msgstr "Maksima" #: ../src/kwm.c:634 ../src/winmenu.c:566 msgid "Unmaximize" msgstr "Nyah Maksima" #: ../src/kwm.c:635 ../src/winmenu.c:444 ../src/winmenu.c:557 msgid "Miniaturize" msgstr "" #: ../src/kwm.c:636 ../src/winmenu.c:552 msgid "Deminiaturize" msgstr "" #: ../src/kwm.c:638 msgid "Not Omnipresent" msgstr "" #: ../src/kwm.c:639 msgid "Move" msgstr "Gerak" #: ../src/kwm.c:640 msgid "Resize" msgstr "Ubahsaiz" #. #. entry = wMenuAddCallback(menu, _("Select Shortcut"), NULL, NULL); #. wMenuEntrySetCascade(menu, entry, makeMakeShortcutMenu(scr)); #. #: ../src/kwm.c:641 ../src/rootmenu.c:248 ../src/winmenu.c:501 msgid "Close" msgstr "Tutup" #: ../src/kwm.c:642 ../src/winmenu.c:485 msgid "Move To" msgstr "Pindah ke" #: ../src/kwm.c:1096 msgid "%a(Run Command,Type the command to run:)" msgstr "%a(Laksana arahan, taip arahan untuk dilaksanakan:)" #: ../src/main.c:222 msgid "failed to restart Window Maker." msgstr "gagal mengulanghidupkan Window Maker." #: ../src/main.c:225 #, c-format msgid "could not exec %s" msgstr "tak dpaat melaksanakan %s" #: ../src/main.c:271 msgid "Could not execute command: " msgstr "tak dapat melaksanakan arahan:" #: ../src/main.c:428 #, c-format msgid "%s aborted.\n" msgstr "%s diabaikan.\n" #: ../src/main.c:439 #, c-format msgid "Usage: %s [options]\n" msgstr "Penggunaan: %s [opsyen]\n" #: ../src/main.c:440 msgid "The Window Maker window manager for the X window system" msgstr "Window Maker pengurus tetingkap untuk sistem Xwindow" #: ../src/main.c:442 msgid " -display host:dpy\tdisplay to use" msgstr " -display hos:dpy\tpaparan untuk digunakan" #: ../src/main.c:444 msgid " --no-cpp \t\tdisable preprocessing of configuration files" msgstr " --no-cpp \t\tmatikan praproses konfigurasi fail" #: ../src/main.c:446 msgid " --no-dock\t\tdo not open the application Dock" msgstr " --no-dock\t\tjangan buka aplikasi limbungan" #: ../src/main.c:447 msgid " --no-clip\t\tdo not open the workspace Clip" msgstr " --no-clip\t\tjangan bula Klip Ruangkerja" #: ../src/main.c:448 msgid " --no-autolaunch\tdo not autolaunch applications" msgstr " --no-autolaunch\tjangan auto laksanakan aplikasi" #: ../src/main.c:449 msgid " --dont-restore\t\tdo not restore saved session" msgstr " --dont-restore\t\tjangan pulihkan sessi tersimpan" #: ../src/main.c:451 msgid " --locale locale\tlocale to use" msgstr " --locale locale\tlocale untuk digunakan" #: ../src/main.c:453 msgid "" " --create-stdcmap\tcreate the standard colormap hint in PseudoColor visuals" msgstr "" " --create-stdcmap\tcipta hint colormap standard pada visual PseudoColor" #: ../src/main.c:454 msgid " --visual-id visualid\tvisual id of visual to use" msgstr " --visual-id visualid\tvisual id pada visual untuk digunakan" #: ../src/main.c:455 msgid " --static\t\tdo not update or save configurations" msgstr " --static\t\tjangan kemaskini atau simpam konfigurasi" #: ../src/main.c:456 msgid " --no-polling\t\tdo not periodically check for configuration updates" msgstr " --no-polling\t\tjangan periksa kemaskini konfigurasi secara berkala" #: ../src/main.c:458 msgid " --synchronous\t\tturn on synchronous display mode" msgstr " --synchronous\t\thidupkan mod paparan synchronous" #: ../src/main.c:460 msgid " --version\t\tprint version and exit" msgstr " --version\t\tcetak versi dan keluar" #: ../src/main.c:461 msgid " --help\t\t\tshow this message" msgstr " --help\t\t\tpapar mesej ini" #: ../src/main.c:474 #, c-format msgid "" "could not find user GNUstep directory (%s).\n" "Make sure you have installed Window Maker correctly and run wmaker.inst" msgstr "" "tak dapat menjumpai direktori GNUstep pengguna (%s).\n" "Pastikan Window Maker dipasang dengan betul dan laksanakan wmaker.inst" #: ../src/main.c:479 #, c-format msgid "could not find user GNUstep directory (%s)." msgstr "tak menjmpai direktori GNUstep pengguna (%s)" #: ../src/main.c:482 msgid "" "There was an error while creating GNUstep directory, please make sure you " "have installed Window Maker correctly and run wmaker.inst" msgstr "" "terdapat ralat bila mencipta direktori GNUstep , sila pastikan Window Maker " "dipasang dengan betul dan laksanakan wmaker.inst" #: ../src/main.c:485 #, c-format msgid "%s directory created with default configuration." msgstr "%s direktori dicpta dengan konfigurasi default" #: ../src/main.c:505 ../src/main.c:510 #, c-format msgid "%s:could not execute initialization script" msgstr "%s:tak dapat melaksanakan skrip permulaan" #: ../src/main.c:530 ../src/main.c:535 #, c-format msgid "%s:could not execute exit script" msgstr "%s:tak dapat melaksanakan skrip keluar" #: ../src/main.c:651 ../src/main.c:659 ../src/main.c:667 ../src/main.c:687 #, c-format msgid "too few arguments for %s" msgstr "terlalu sedikit hujah untuk %s" #: ../src/main.c:671 #, c-format msgid "bad value for visualid: \"%s\"" msgstr "nilai salah untuk visualid: \"%s\"" #: ../src/main.c:695 #, c-format msgid "%s: invalid argument '%s'\n" msgstr "%s: hujah tidak sah '%s'\n" #: ../src/main.c:696 #, c-format msgid "Try '%s --help' for more information\n" msgstr "Cuba '%s --help' untuk maklumat lanjut\n" #: ../src/main.c:727 msgid "X server does not support locale" msgstr "Pelayan X tidak menyokong locale" #: ../src/main.c:731 msgid "cannot set locale modifiers" msgstr "tak dapat menetapkan modifier locale" #: ../src/main.c:747 #, c-format msgid "could not open display \"%s\"" msgstr "tak dapat membuka paparan \"%s\"" #: ../src/menu.c:1255 msgid "could not grab keyboard" msgstr "Tak dapat grab papan kekunci" #: ../src/menu.c:2569 #, c-format msgid "bad value in menus state info:%s" msgstr "nilai salah pada maklumat keadaan menu:%s" #: ../src/menureader.c:264 ../src/rootmenu.c:730 #, c-format msgid "%s:could not stat menu" msgstr "%s:tak dapat stat menu" #: ../src/menureader.c:341 ../src/menureader.c:380 #, c-format msgid "could not stat() menu file '%s'" msgstr "Tak dapat stat() fail menu '%s'" #: ../src/menureader.c:416 #, c-format msgid "could not find menu file '%s' referenced in WMRootMenu" msgstr "tak menjumpai fail menu yang dirujuk '%s' pada WMRootMenu" #: ../src/menureader.c:423 #, c-format msgid "could not find any usable menu files. Please check '%s'" msgstr "tak menjumpai fail menu yang boleh digunakan. Sila periksa '%s'" #: ../src/menureader.c:438 ../src/rootmenu.c:1664 #, c-format msgid "" "using default menu file \"%s\" as the menu referenced in WMRootMenu could " "not be found " msgstr "" "menggunakan fail menu default \"%s\" sebagai menu, menu yang dirujukkan pada " "WMRootMenu tak dapat dijumpai" #: ../src/menureader.c:457 #, c-format msgid "" "invalid content in menu file '%s'.\n" "It should either be a property list menu or the path to the file, enclosed " "in \"." msgstr "" "kandungan fail menu '%s' tidak sah.\n" "Ia sepatutnya adalah menu senarai ciri-ciri atau path ke fail, ditutup " "dengan \"." #: ../src/misc.c:71 #, c-format msgid "could not define value for %s for cpp" msgstr "Tak dapat nyatakan nilai untuk %s cpp" #: ../src/misc.c:101 #, c-format msgid "could not get password entry for UID %i" msgstr "Tak dapat kemasukan katalaluan untuk UID %i" #: ../src/misc.c:126 #, c-format msgid "your machine is misconfigured. HOSTNAME is set to %s" msgstr "Mesin anda salah dikonfigurasikan. HOSTNAME ditetapkan sebagai %s" #: ../src/misc.c:132 #, c-format msgid "your machine is misconfigured. HOST is set to %s" msgstr "Mesin anda salah dikonfigurasikan. HOST ditetapkan sebagai %s" #: ../src/misc.c:630 msgid "Program Arguments" msgstr "Hujah Program" #: ../src/misc.c:631 msgid "Enter command arguments:" msgstr "Masukkan hujah arahan:" #: ../src/misc.c:724 msgid "unable to get dropped data from DND drop" msgstr "Tak dapat menjatuhkan data daripada DND drop" #: ../src/misc.c:732 msgid "error getting dropped data from DND drop" msgstr "ralat mendapatkan data yang dijatuhkan daripada DND drop" #: ../src/misc.c:738 msgid "out of memory while getting data from DND drop" msgstr "tak cukup memori bila mendapatkan data daripada DND drop" #: ../src/misc.c:783 ../src/misc.c:923 #, c-format msgid "out of memory during expansion of \"%s\"" msgstr "tak cukup memori semasa pengembangan \"%s\"" #: ../src/misc.c:837 msgid "out of memory during expansion of \"%w\"" msgstr "tak cukup memori semasa pengembangan \"%w\"" #: ../src/misc.c:855 msgid "out of memory during expansion of \"%W\"" msgstr "tak cukup memori semasa pengembangan \"%W\"" #: ../src/misc.c:871 msgid "out of memory during expansion of \"%a\"" msgstr "tak cukup memori semasa pengembangan \"%a\"" #: ../src/misc.c:902 #, c-format msgid "out of memory during expansion of \"%d\"" msgstr "tak cukup memori semasa pengembangan \"%d\"" #: ../src/misc.c:916 msgid "selection not available" msgstr "pilihan tidak ada" #: ../src/misc.c:972 ../src/misc.c:978 #, c-format msgid "bad window name value in %s state info" msgstr "nilai nama tetingkap tak elok pada maklumat keadaan %s" #: ../src/misc.c:1235 msgid "could not send message to background image helper" msgstr "tak dapat mengirim mesej ke aplikasi bantuan imej latar" #: ../src/pixmap.c:235 #, c-format msgid "could not load mask bitmap file \"%s\". Won't use mask" msgstr "tak dapat memuatkanfail bitmap mask \"%s\". Tidak akan guna mask" #: ../src/resources.c:44 #, c-format msgid "could not parse color \"%s\"" msgstr "tak boleh menghantar warna \"%s\"" #: ../src/resources.c:48 #, c-format msgid "could not allocate color \"%s\"" msgstr "tak dapat memperuntukkan warna \"%s\"" #: ../src/rootmenu.c:196 ../src/rootmenu.c:198 msgid "Exit" msgstr "Keluar" #: ../src/rootmenu.c:197 msgid "Exit window manager?" msgstr "Keluar pengurus tetingkap?" #: ../src/rootmenu.c:245 msgid "Close X session" msgstr "Tutup sessi X" #: ../src/rootmenu.c:246 msgid "" "Close Window System session?\n" "Kill might close applications with unsaved data." msgstr "" "Tutup sessi Sistem Tetingkap?\n" "Pembunuhan akan menutup aplikasi tetapi data tidak disimpan." #: ../src/rootmenu.c:261 msgid "Kill X session" msgstr "Bunuh Sessi X" #: ../src/rootmenu.c:262 msgid "" "Kill Window System session?\n" "(all applications will be closed)" msgstr "" "Bunuh sessi Sistem Tetingkap?\n" "(semua aplikasi akan ditutup)" #: ../src/rootmenu.c:536 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\" for entry %s" msgstr "%s:spesifikasi pintasan kdb tidak sah \"%s\" untuk kemasukan %s" #: ../src/rootmenu.c:544 #, c-format msgid "%s:invalid key in shortcut \"%s\" for entry %s" msgstr "%s:pintasan kekunci tidak sah \"%s\" untuk kemasukan %s" #: ../src/rootmenu.c:597 #, c-format msgid "%s: unmatched '\"' in menu file" msgstr "%s: '\"' tidak dipadankan pada fail menu" #: ../src/rootmenu.c:647 #, c-format msgid "%s: missing command" msgstr "%s: kehilangan arahan" #: ../src/rootmenu.c:679 #, c-format msgid "invalid OPEN_MENU specification: %s" msgstr "spesifikasi OPEN_MENU tak sah: %s" #: ../src/rootmenu.c:738 #, c-format msgid "%s:could not stat menu:%s" msgstr "%s:tak dapat stat menu:%s" #: ../src/rootmenu.c:756 #, c-format msgid "too many parameters in OPEN_MENU: %s" msgstr "terlalu banyak parameter pada OPEN_MENU: %s" #: ../src/rootmenu.c:800 msgid "" "There are more than one WORKSPACE_MENU commands in the applications menu. " "Only one is allowed." msgstr "" "Terdapat lebih daripada satu arahan WORKSPACE_MENU pada menu aplikasi.Hanya " "satu diizinkan." #: ../src/rootmenu.c:834 msgid "" "There are more than one WINDOWS_MENU commands in the applications menu. Only " "one is allowed." msgstr "" "Terdapat lebih daripada satu arahan WINDOWS_MENU pada menu aplikasi.Hanya " "satu diizinkan." #: ../src/rootmenu.c:839 msgid "Window List" msgstr "Senarai Tetingkap" #: ../src/rootmenu.c:868 ../src/rootmenu.c:886 ../src/rootmenu.c:896 #, c-format msgid "%s:missing parameter for menu command \"%s\"" msgstr "%s: kehilangan parameter untuk menu arahan \"%s\"" #: ../src/rootmenu.c:964 #, c-format msgid "%s:unknown command \"%s\" in menu config." msgstr "%s: arahan tidak diketahui \"%s\" pada config menu." #: ../src/rootmenu.c:972 #, c-format msgid "%s:can't add shortcut for entry \"%s\"" msgstr "%s: tak dapat menambah kemasukan pintasan \"%s\"" #: ../src/rootmenu.c:1109 #, c-format msgid "%s:maximal line size exceeded in menu config: %s" msgstr "%s:melebihi had maksima baris pada konfigurasi menu: %s" #: ../src/rootmenu.c:1131 ../src/rootmenu.c:1224 ../src/rootmenu.c:1326 #, c-format msgid "%s:missing command in menu config: %s" msgstr "%s:arahan hilang pada konfigurasi menu: %s" #: ../src/rootmenu.c:1161 #, c-format msgid "%s:syntax error in menu file:%s" msgstr "%s:ralat sintaks pada fail menu:%s" #: ../src/rootmenu.c:1190 ../src/rootmenu.c:1290 msgid "could not make arguments for menu file preprocessor" msgstr "tak dapat buat hujah untuk fail pra pemproses menu" #: ../src/rootmenu.c:1197 ../src/rootmenu.c:1298 #, c-format msgid "%s:could not open/preprocess menu file" msgstr "%s:tak dapat membuka/mempraproses fail menu)" #: ../src/rootmenu.c:1209 ../src/rootmenu.c:1311 #, c-format msgid "could not open menu file \"%s\": %s" msgstr "tak dapat membuka fail menu \"%s\": %s" #: ../src/rootmenu.c:1236 #, c-format msgid "%s:invalid menu file. MENU command is missing" msgstr "%s:fail menu tak sah. Arahan MENU hilang" #: ../src/rootmenu.c:1245 msgid "error reading preprocessed menu data" msgstr "Ralat membaca data menu pra pemproses" #: ../src/rootmenu.c:1338 #, c-format msgid "%s:no title given for the root menu" msgstr "%s:tiada tajuk diberikan untuk menu pangkal" #: ../src/rootmenu.c:1429 ../src/rootmenu.c:1502 ../src/rootmenu.c:1543 #, c-format msgid "out of memory while constructing directory menu %s" msgstr "tak cukup memori semasa membina menu direktori %s" #: ../src/rootmenu.c:1439 #, c-format msgid "%s:could not stat file \"%s\" in menu directory" msgstr "%s:tak dapat stat fail \"%s\" pada direktori menu" #: ../src/rootmenu.c:1597 msgid "Commands" msgstr "Arahan" #: ../src/rootmenu.c:1600 msgid "Restart" msgstr "Ulanghidup" #: ../src/rootmenu.c:1601 msgid "Exit..." msgstr "Keluar..." #: ../src/rootmenu.c:1646 #, c-format msgid "could not find menu file \"%s\" referenced in WMRootMenu" msgstr "tak menjumpai rujukan fail menu \"%s\" pada WMRootMenu" #: ../src/rootmenu.c:1653 #, c-format msgid "could not access menu \"%s\" referenced in WMRootMenu" msgstr "tak dapat mengakses rujukan menu \"%s\" pada WMRootMenu" #: ../src/rootmenu.c:1687 ../src/rootmenu.c:1763 #, c-format msgid "%s:format error in root menu configuration \"%s\"" msgstr "%s: ralat format pada configurasi menu pangkal \"%s\"" #: ../src/rootmenu.c:1851 msgid "" "The applications menu could not be loaded. Look at the console output for a " "detailed description of the errors." msgstr "" "Aplikasi tidak dapat dimuatkan. Lihat output konsol untuk huraian terperinci " "ralat." #: ../src/screen.c:740 #, c-format msgid "could not initialize graphics library context: %s" msgstr "tak dapat memulakan konteks pustaka grafik: %s " #: ../src/screen.c:771 msgid "could not do initialization of WINGs widget set" msgstr "tak dapat memulakan set widget WINGs" #: ../src/screen.c:1139 #, c-format msgid "could not save session state in %s" msgstr "tak dapat simpan keadaan sessi pada %s" #: ../src/session.c:183 ../src/wdefaults.c:589 ../src/winspector.c:454 #, c-format msgid "can't convert \"%s\" to boolean" msgstr "tak dapat menukar \"%s\" pada boolean" #: ../src/session.c:1021 msgid "out of memory while saving session state" msgstr "tak cukup memori ketika menyimpan keadaan sessi" #: ../src/session.c:1104 msgid "end of memory while saving session state" msgstr "tak cukup memori ketika menyimpan keadaan sessi" #. 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:1242 msgid "connection to the session manager was lost" msgstr "sambungan ke pengurus sessi telah tiada" #: ../src/stacking.c:79 msgid "could not get window list!!" msgstr "tak dapat senarai tetingkap!!" #: ../src/startup.c:202 #, c-format msgid "internal X error: %s\n" msgstr "ralat dalaman X: %s\n" #: ../src/startup.c:260 #, c-format msgid "got signal %i (%s) - restarting\n" msgstr "dapat isyarat %i (%s) - mengulanghidup\n" #: ../src/startup.c:262 #, c-format msgid "got signal %i - restarting\n" msgstr "dapat isyarat %i - mengulanghidup\n" #: ../src/startup.c:272 #, c-format msgid "got signal %i (%s) - rereading defaults\n" msgstr "dapat isyarat %i (%s) - membaca semula defaults\n" #: ../src/startup.c:274 #, c-format msgid "got signal %i - rereading defaults\n" msgstr "dapat isyarat %i - membaca semula defaults\n" #: ../src/startup.c:284 #, c-format msgid "got signal %i (%s) - exiting...\n" msgstr "dapat isyarat %i (%s) - keluar...\n" #: ../src/startup.c:286 #, c-format msgid "got signal %i - exiting...\n" msgstr "dapat isyarat %i - keluar...\n" #: ../src/startup.c:329 #, c-format msgid "got signal %i (%s)\n" msgstr "dapat isyarat %i (%s)\n" #: ../src/startup.c:331 #, c-format msgid "got signal %i\n" msgstr "dapat isyarat %i\n" #: ../src/startup.c:342 msgid "" "crashed while trying to do some post-crash cleanup. Aborting immediatelly." msgstr "" "Jahanam bila cuba melakukan sesuatu pembersihan selepas jahaman. keluar " "terus." #. we try to restart Window Maker #: ../src/startup.c:407 msgid "trying to restart Window Maker..." msgstr "cuba mengulanghidupkan Window Maker..." #: ../src/startup.c:412 msgid "trying to start alternate window manager..." msgstr "cuba menghidupkan pengurus tetingkap lain..." #: ../src/startup.c:417 msgid "failed to start alternate window manager. Aborting." msgstr "gagl menghidupkan pengurus tetingkap lain. Diabaikan." #: ../src/startup.c:419 msgid "" "a fatal error has occured, probably due to a bug. Please fill the included " "BUGFORM and report it." msgstr "" "ralat fatal berlaku, mungkin kerana pepijat. Sila ini BUGFORM yang " "disertakan dan buat laporan." #: ../src/startup.c:894 #, c-format msgid "icon size is configured to %i, but it's too small. Using 16, instead\n" msgstr "" "saiz ikon dikonfigurasikan sebagai %i, tapi ianya terlalu kecik. Menggunakan " "16 sebaliknya\n" #: ../src/startup.c:922 msgid "XKB is not supported. KbdModeLock is automatically disabled." msgstr "XKB tidak disokong. KbdModeLock dimatikan secara automatik" #: ../src/startup.c:941 msgid "it seems that there is already a window manager running" msgstr "Nampaknya terdapat pengurus tetingkap yang tersedia terlaksana" #: ../src/startup.c:947 #, c-format msgid "could not manage screen %i" msgstr "tak dapat mengurus layar %i" #: ../src/startup.c:1015 msgid "could not manage any screen" msgstr "tak dapat mengurus sebarang layar" #: ../src/switchmenu.c:137 msgid "Windows" msgstr "Tetingkap" #: ../src/texture.c:329 ../src/texture.c:371 #, c-format msgid "image file \"%s\" used as texture could not be found." msgstr "fail imej \"%s\" digunakan sebagai tekstur tak dijumpai." #: ../src/texture.c:335 ../src/texture.c:377 #, c-format msgid "could not load texture pixmap \"%s\":%s" msgstr "tak dapat memuatkan pixmap tekstur \"%s\":%s" #: ../src/texture.c:437 #, c-format msgid "library \"%s\" cound not be opened." msgstr "Pustaka \"%s\" tak dapat dibuka." #: ../src/texture.c:446 #, c-format msgid "function \"%s\" not found in library \"%s\"" msgstr "fungsi \"%s\" tak dijumpai pada pustaka \"%s\"" #: ../src/texture.c:453 msgid "function textures not supported on this system, sorry." msgstr "fungsi tekstur tidak disokong pasa sistem ini, maaf ya" #: ../src/texture.c:598 msgid "could not allocate image buffer" msgstr "tak dapat memperuntukkan buffer imej" #: ../src/wdefaults.c:437 #, c-format msgid "could not find icon file \"%s\"" msgstr "tak jumpa fail ikon \"%s\"" #: ../src/window.c:2936 ../src/window.c:3075 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 "" #: ../src/winmenu.c:125 msgid "" "This will kill the application.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" "Ini akan membunuh aplikasi\n" "Sebarang perubahan yang belum disimpan akan hilang.\n" "Sila buat kepastian." #: ../src/winmenu.c:267 ../src/winmenu.c:276 msgid "Set Shortcut" msgstr "Tetapkan Pintasan" #: ../src/winmenu.c:354 ../src/winmenu.c:399 msgid "could not create submenu for window menu" msgstr "Tak dapat mencipta submenu untuk menu tetingkap" #: ../src/winmenu.c:403 msgid "Keep on top" msgstr "Kekal di atas" #: ../src/winmenu.c:408 msgid "Keep at bottom" msgstr "Kekal di bawah" #: ../src/winmenu.c:453 ../src/winmenu.c:588 msgid "Shade" msgstr "Suram" #: ../src/winmenu.c:469 msgid "Resize/Move" msgstr "Ubahsaiz/Pindah" #: ../src/winmenu.c:477 msgid "Select" msgstr "Pilih" #: ../src/winmenu.c:490 msgid "Attributes..." msgstr "Atribut..." #: ../src/winmenu.c:492 msgid "Options" msgstr "Opsyen" #: ../src/winmenu.c:583 msgid "Unshade" msgstr "NyahSuram" #: ../src/winspector.c:387 #, c-format msgid "Could not find icon \"%s\" specified for this window" msgstr "tak menjumpai ikon \"%s\" yang dinyatakan untuk tetingkap ini" #: ../src/winspector.c:404 #, c-format msgid "Could not open specified icon \"%s\":%s" msgstr "Tak dapat membuka ikon yang dinyatakan \"%s\":%s" #: ../src/winspector.c:1121 #, c-format msgid "Inspecting %s.%s" msgstr "Memeriksa %s.%s" #: ../src/winspector.c:1147 msgid "Click in the window you wish to inspect." msgstr "Klik pada tetingkap yang anda ingin periksa." #: ../src/winspector.c:1186 msgid "" "The configuration will apply to all\n" "windows that have their WM_CLASS\n" "property set to the above selected\n" "name, when saved." msgstr "" "Konfigurasi akan menerapkan semua\n" "tetingkap yang mempunyai Ciri-ciri\n" "WM_CLASS untuk ditetapkan di atas nama\n" "dipilih, bila disimpan." #: ../src/winspector.c:1215 msgid "Save" msgstr "Simpan" #: ../src/winspector.c:1223 msgid "Apply" msgstr "Terapkan" #: ../src/winspector.c:1229 msgid "Reload" msgstr "Ulangmuat" #: ../src/winspector.c:1238 ../src/winspector.c:1248 msgid "Window Specification" msgstr "Spesifikasi Window" #: ../src/winspector.c:1239 msgid "Window Attributes" msgstr "Atribut Window" #: ../src/winspector.c:1240 msgid "Advanced Options" msgstr "Opsyen Lanjutan" #: ../src/winspector.c:1241 msgid "Icon and Initial Workspace" msgstr "Ikon dan Ruangkerja Permulaan" #: ../src/winspector.c:1242 msgid "Application Specific" msgstr "Aplikasi tertentu" #: ../src/winspector.c:1256 msgid "Defaults for all windows" msgstr "Default untuk semua tetingkap" #: ../src/winspector.c:1310 msgid "Select window" msgstr "Pilih tetingkap" #: ../src/winspector.c:1324 msgid "Attributes" msgstr "Atribut" #: ../src/winspector.c:1335 msgid "Disable titlebar" msgstr "Matikan titlebar" #: ../src/winspector.c:1337 msgid "" "Remove the titlebar of this window.\n" "To access the window commands menu of a window\n" "without it's titlebar, press Control+Esc (or the\n" "equivalent shortcut, if you changed the default\n" "settings)." msgstr "" #: ../src/winspector.c:1344 msgid "Disable resizebar" msgstr "Matikan resizebar" #: ../src/winspector.c:1346 msgid "Remove the resizebar of this window." msgstr "Buang resizebar tetingkap ini" #: ../src/winspector.c:1349 msgid "Disable close button" msgstr "Matikan butang tutup" #: ../src/winspector.c:1351 msgid "Remove the `close window' button of this window." msgstr "Buang buang 'tutup tetingkap' tetingkap ini" #: ../src/winspector.c:1354 msgid "Disable miniaturize button" msgstr "Matikan butang bahasa" #: ../src/winspector.c:1356 msgid "Remove the `miniaturize window' button of the window." msgstr "" #: ../src/winspector.c:1359 msgid "Disable border" msgstr "Matikan sempadan" #: ../src/winspector.c:1361 msgid "Remove the 1 pixel black border around the window." msgstr "Buang 1 piksel sempadan hitam di sekeliling tetingkap." #: ../src/winspector.c:1364 msgid "Keep on top (floating)" msgstr "Sentiasa di atas (terapung)" #: ../src/winspector.c:1366 msgid "" "Keep the window over other windows, not allowing\n" "them to cover it." msgstr "" "Biarkan tetingkap di atas tetingkap lain\n" "jangan izinkan mereka menghadangnya." #: ../src/winspector.c:1370 msgid "Keep at bottom (sunken)" msgstr "Sentiasa di bawah (tenggelam)" #: ../src/winspector.c:1372 msgid "Keep the window under all other windows." msgstr "Sentiasa tetingkap di bawah semua tetingkap lain." #: ../src/winspector.c:1377 msgid "Make window present in all workspaces." msgstr "Jadikan tetingkap ada semua ruangkerja." #: ../src/winspector.c:1380 msgid "Start miniaturized" msgstr "" #: ../src/winspector.c:1382 msgid "" "Make the window be automatically miniaturized when it's\n" "first shown." msgstr "" #: ../src/winspector.c:1386 msgid "Start maximized" msgstr "Dimulakan secara maksima" #: ../src/winspector.c:1388 msgid "" "Make the window be automatically maximized when it's\n" "first shown." msgstr "" "Jadikan tetingkap automatik dimaksimakan bila ianya\n" "pertama kali dipaparkan." #: ../src/winspector.c:1392 msgid "Full screen maximization" msgstr "Pemaksimaan layar penuh" #: ../src/winspector.c:1394 msgid "" "Make the window use the whole screen space when it's\n" "maximized. The titlebar and resizebar will be moved\n" "to outside the screen." msgstr "" "Buatkan tetingkap menggunakan seluruh ruang layar bila ianya\n" "dimaksimakan. Titlebar dan resizebar akan digerakkankan\n" "ke luar layar." #: ../src/winspector.c:1411 msgid "Advanced" msgstr "Lanjutan" #: ../src/winspector.c:1428 msgid "Do not bind keyboard shortcuts" msgstr "Jangan bind pintasan papan pekunci" #: ../src/winspector.c:1430 msgid "" "Do not bind keyboard shortcuts from Window Maker\n" "when this window is focused. This will allow the\n" "window to receive all key combinations regardless\n" "of your shortcut configuration." msgstr "" #: ../src/winspector.c:1436 msgid "Do not bind mouse clicks" msgstr "Jangan bind klik tetikus" #: ../src/winspector.c:1438 msgid "" "Do not bind mouse actions, such as `Alt'+drag\n" "in the window (when Alt is the modifier you have\n" "configured)." msgstr "" "Jangan bind aksi tetikus, seperti `Alt'+heret pada\n" "tetingkap (bila Alt ialah modifier yang telah anda konfigurasikan)." #: ../src/winspector.c:1443 msgid "Do not show in the window list" msgstr "Jangan papar pada senarai tetingkap" #: ../src/winspector.c:1445 msgid "Do not list the window in the window list menu." msgstr "Jangan senaraikan tetingkap pada menu senarai tetingkap" #: ../src/winspector.c:1448 msgid "Do not let it take focus" msgstr "Jangan biarkan ia mengambil fokus" #: ../src/winspector.c:1450 msgid "" "Do not let the window take keyboard focus when you\n" "click on it." msgstr "" "Jangan biarkan tetingkap mengambil fokus papan kekunci\n" "apabila Anda klik padanya." #: ../src/winspector.c:1454 msgid "Keep inside screen" msgstr "Biarkan di dalam layar" #: ../src/winspector.c:1456 msgid "" "Do not allow the window to move itself completely\n" "outside the screen. For bug compatibility.\n" msgstr "" "Jangan izinkan tetingkap untuk digerakkan dirinya\n" "terus ke luar layar. Untuk penyesuaian pepijat.\n" #: ../src/winspector.c:1460 msgid "Ignore 'Hide Others'" msgstr "Abaikan 'Hide Others'" #: ../src/winspector.c:1462 msgid "" "Do not hide the window when issuing the\n" "`HideOthers' command." msgstr "" "Jangan sembunyikan tetingkap bila mengemukakan\n" "arahan `HideOthers'." #: ../src/winspector.c:1466 msgid "Ignore 'Save Session'" msgstr "Abaikan 'Simpan Sessi'" #: ../src/winspector.c:1468 msgid "" "Do not save the associated application in the\n" "session's state, so that it won't be restarted\n" "together with other applications when Window Maker\n" "starts." msgstr "" "Jangan simpan aplikasi yang dikaitkan pada\n" "keadaan sessi, oleh itu ianya tidak akan diulanghidupkan\n" "bersama dengan aplikasi lain bila Window Maker\n" "dihidupkan." #: ../src/winspector.c:1474 msgid "Emulate application icon" msgstr "Emulasikan ikon aplikasi" #: ../src/winspector.c:1476 msgid "" "Make this window act as an application that provides\n" "enough information to Window Maker for a dockable\n" "application icon to be created." msgstr "" #: ../src/winspector.c:1482 msgid "Disable language button" msgstr "Matikan butang bahasa" #: ../src/winspector.c:1484 msgid "Remove the `toggle language' button of the window." msgstr "Buang butang `toggle bahasa' tetingkap ini" #: ../src/winspector.c:1501 msgid "Miniwindow Image" msgstr "Imej Miniwindow" #: ../src/winspector.c:1528 msgid "Icon filename:" msgstr "Nama fail ikon:" #: ../src/winspector.c:1541 msgid "Ignore client supplied icon" msgstr "Abaikan ikon yang dibekali aplikasi" #: ../src/winspector.c:1548 msgid "Initial Workspace" msgstr "Ruangkerja permulaan" #: ../src/winspector.c:1550 msgid "The workspace to place the window when it's first shown." msgstr "Ruangkerja dimana letaknya tetingkap bila ianya pertamakali dipaparkan" #: ../src/winspector.c:1556 msgid "Nowhere in particular" msgstr "" #: ../src/winspector.c:1574 msgid "Application Attributes" msgstr "Atribut Aplikasi" #: ../src/winspector.c:1585 msgid "Start hidden" msgstr "Dimulakan dengan tersorok" #: ../src/winspector.c:1587 msgid "Automatically hide application when it's started." msgstr "Automatik sorok aplikasi bila ianya dimulakan" #: ../src/winspector.c:1590 msgid "No application icon" msgstr "Tiada ikon aplikasi" #: ../src/winspector.c:1592 msgid "" "Disable the application icon for the application.\n" "Note that you won't be able to dock it anymore,\n" "and any icons that are already docked will stop\n" "working correctly." msgstr "" #: ../src/winspector.c:1598 msgid "Shared application icon" msgstr "Ikon aplikasi terkongsi" #: ../src/winspector.c:1600 msgid "" "Use a single shared application icon for all of\n" "the instances of this application.\n" msgstr "" "Guna ikon aplikasi terkongsi untuk semua\n" "instance aplikasi ini\n" #: ../src/wmspec.c:277 msgid "out of memory while updating wm hints" msgstr "tak cukup memori bila mengemaskini petua wm" #: ../src/workspace.c:107 ../src/workspace.c:108 ../src/workspace.c:876 #, c-format msgid "Workspace %i" msgstr "Ruangkerja %i" #: ../src/workspace.c:926 msgid "Workspaces" msgstr "Ruangkerja" #: ../src/workspace.c:928 msgid "could not create Workspace menu" msgstr "tak dpat mencipta menu Ruangkerja" #: ../src/workspace.c:935 msgid "New" msgstr "Baru" #: ../src/workspace.c:936 msgid "Destroy Last" msgstr "Musnahkan yang terakhir" WindowMaker-0.95.9/po/sk.po0000644000175000017500000015767013431646201012401 00000000000000# Slovak messages for WindowMaker # (C) 2001 Jan "judas" Tomka # # Original translation by Jan "judas" Tomka on Jan 20 2001 # Currently maintained by Jan "judas" Tomka # # Revision history: # WM-ver author email date # 0.63.1 Jan "judas" Tomka Jan 28 2001 # 0.64.0 Jan "judas" Tomka Feb 22 2001 # 0.65.1 Jan "judas" Tomka Aug 08 2001 # 0.70.0 Jan "judas" Tomka Oct 15 2001 # 0.70.1 Jan "judas" Tomka Nov 02 2001 # 0.80.0 Jan "judas" Tomka Dec 20 2001 # 0.80.2 Jan "judas" Tomka Jan 31 2004 # msgid "" msgstr "" "Project-Id-Version: WindowMaker 0.80.2\n" "POT-Creation-Date: 2004-01-31 18:25+0100\n" "PO-Revision-Date: 2001-12-20 03:53+0100\n" "Last-Translator: Jan \"judas\" Tomka \n" "Language-Team: Slovak \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../src/appicon.c:415 ../src/dialog.c:295 ../src/dock.c:3361 #: ../src/dockedapp.c:231 ../src/main.c:273 ../src/rootmenu.c:1854 #: ../src/winspector.c:389 ../src/winspector.c:406 msgid "Error" msgstr "Chyba" #: ../src/appicon.c:416 msgid "Could not open specified icon file" msgstr "Nemožno otvoriť daný súbor s ikonou" #: ../src/appicon.c:417 ../src/dialog.c:192 ../src/dialog.c:295 #: ../src/dialog.c:724 ../src/dialog.c:1780 ../src/dock.c:533 #: ../src/dock.c:541 ../src/dock.c:565 ../src/dock.c:3362 #: ../src/dockedapp.c:232 ../src/dockedapp.c:427 ../src/main.c:273 #: ../src/rootmenu.c:1858 ../src/winspector.c:390 ../src/winspector.c:407 msgid "OK" msgstr "OK" #: ../src/appicon.c:445 ../src/dock.c:262 msgid "" " will be forcibly closed.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" " bude nútene ukončená.\n" "Všetky neuložené zmeny sa stratia.\n" "Prosím, potvrďte." #: ../src/appicon.c:453 ../src/dock.c:281 ../src/winmenu.c:125 msgid "Kill Application" msgstr "Zabiť aplikáciu" #: ../src/appicon.c:454 ../src/dock.c:282 ../src/winmenu.c:127 msgid "Yes" msgstr "Áno" #: ../src/appicon.c:454 ../src/dock.c:282 ../src/winmenu.c:127 msgid "No" msgstr "Nie" #: ../src/appicon.c:484 ../src/dock.c:1186 ../src/dock.c:3527 msgid "Unhide Here" msgstr "Odhaliť tu" #: ../src/appicon.c:485 ../src/appicon.c:510 ../src/dock.c:1188 #: ../src/dock.c:1190 ../src/dock.c:3539 ../src/winmenu.c:467 msgid "Hide" msgstr "Skryť" #: ../src/appicon.c:486 msgid "Set Icon..." msgstr "Zmeniť ikonu..." #: ../src/appicon.c:487 ../src/dock.c:1194 ../src/rootmenu.c:248 #: ../src/rootmenu.c:264 ../src/winmenu.c:522 msgid "Kill" msgstr "Zabiť" #: ../src/appicon.c:508 ../src/dock.c:3537 msgid "Unhide" msgstr "Odhaliť" #: ../src/application.c:398 #, c-format msgid "recreating missing icon '%s'" msgstr "znovu sa vytvára chýbajúca ikona '%s'" #: ../src/defaults.c:921 ../src/defaults.c:1082 #, c-format msgid "Domain %s (%s) of global defaults database is corrupted!" msgstr "" "Doména %s (%s) v globálnej databáze implicitných nastavení je poškodená!" #: ../src/defaults.c:926 #, c-format msgid "could not load domain %s from global defaults database" msgstr "nemožno načítať doménu %s z globálnej databázy implicitných nastavení" #: ../src/defaults.c:977 ../src/defaults.c:992 #, c-format msgid "invalid global menu file %s" msgstr "chybný globálny súbor s menu %s" #: ../src/defaults.c:1020 ../src/startup.c:884 ../src/startup.c:902 #: ../src/startup.c:909 #, c-format msgid "could not read domain \"%s\" from defaults database" msgstr "nemožno načítať doménu \"%s\" z databázy implicitných nastavení" #: ../src/defaults.c:1066 ../src/defaults.c:1171 ../src/defaults.c:1212 #: ../src/defaults.c:1268 #, c-format msgid "Domain %s (%s) of defaults database is corrupted!" msgstr "Doména %s (%s) v databáze implicitných nastavení je poškodená!" #: ../src/defaults.c:1071 ../src/defaults.c:1191 ../src/defaults.c:1248 #: ../src/defaults.c:1278 ../src/menureader.c:397 #, c-format msgid "could not load domain %s from user defaults database" msgstr "" "nemožno načítať doménu %s z uživateľskej databázy implicitných nastavení" #: ../src/defaults.c:1101 #, c-format msgid "could not load domain %s from global defaults database (%s)" msgstr "" "nemožno načítať doménu %s z globálnej databázy implicitných nastavení (%s)" #: ../src/defaults.c:1238 ../src/screen.c:425 #, c-format msgid "could not load logo image for panels: %s" msgstr "nemožno načítať obrázok s logom pre panely: %s" #. --------------------------- Local ----------------------- #: ../src/defaults.c:1487 ../src/defaults.c:1629 ../src/defaults.c:1741 #: ../src/defaults.c:2220 ../src/defaults.c:2237 ../src/defaults.c:2282 #: ../src/defaults.c:2329 ../src/defaults.c:2802 ../src/wdefaults.c:571 #: ../src/wdefaults.c:607 #, c-format msgid "Wrong option format for key \"%s\". Should be %s." msgstr "Chybný formát voľby kľúča \"%s\". Má byť %s." #: ../src/defaults.c:1489 ../src/defaults.c:1570 ../src/defaults.c:1602 #: ../src/defaults.c:1634 ../src/defaults.c:1647 ../src/defaults.c:1662 #: ../src/defaults.c:1676 ../src/defaults.c:1746 ../src/defaults.c:1758 #: ../src/defaults.c:2225 ../src/defaults.c:2242 ../src/defaults.c:2255 #: ../src/defaults.c:2287 ../src/defaults.c:2303 ../src/defaults.c:2334 #: ../src/defaults.c:2421 ../src/defaults.c:2807 ../src/defaults.c:2818 #, c-format msgid "using default \"%s\" instead" msgstr "použitá implicitná \"%s\"" #: ../src/defaults.c:1520 #, c-format msgid "wrong option value for key \"%s\". Should be one of %s" msgstr "chybná hodnota kľúča \"%s\". Má býť jedna z %s" #: ../src/defaults.c:1565 #, c-format msgid "can't convert \"%s\" to boolean for key \"%s\"" msgstr "nemožno previesť \"%s\" na boolean pre kľúč \"%s\"" #: ../src/defaults.c:1599 #, c-format msgid "can't convert \"%s\" to integer for key \"%s\"" msgstr "nemožno previesť \"%s\" na integer pre kľúč \"%s\"" #: ../src/defaults.c:1642 #, c-format msgid "Incorrect number of elements in array for key \"%s\"." msgstr "Nesprávny počet prvkov v poli kľúča \"%s\"." #: ../src/defaults.c:1657 #, c-format msgid "Wrong value for key \"%s\". Should be Coordinate." msgstr "Chybná hodnota kľúča \"%s\". Má byť Coordinate." #: ../src/defaults.c:1672 #, c-format msgid "can't convert array to integers for \"%s\"." msgstr "nemožno previesť pole integery pre \"%s\"." #: ../src/defaults.c:1870 ../src/defaults.c:1902 ../src/defaults.c:1918 #: ../src/defaults.c:1947 ../src/defaults.c:1970 ../src/defaults.c:2023 #: ../src/defaults.c:2063 ../src/defaults.c:2101 ../src/defaults.c:2117 #, c-format msgid "\"%s\" is not a valid color name" msgstr "\"%s\" nie je akceptovateľné meno farby" #: ../src/defaults.c:1883 ../src/defaults.c:1935 msgid "bad number of arguments in gradient specification" msgstr "chybný počet argumetov v definícii prechodu farieb" #: ../src/defaults.c:1996 msgid "too few arguments in multicolor gradient specification" msgstr "nedostatok argumentov v definícii prechodu viacerých farieb" #: ../src/defaults.c:2090 msgid "bad number of arguments in textured gradient specification" msgstr "chybný počet argumetov v definícii prechodu textúr" #: ../src/defaults.c:2133 #, c-format msgid "bad opacity value for tgradient texture \"%s\". Should be [0..255]" msgstr "" "chybná hodnota nepriehľadnosti pre textúry prechodu \"%s\". Má byť [0..255]" #: ../src/defaults.c:2193 #, c-format msgid "could not initialize library %s" msgstr "nemožno inicializovať knižnicu %s" #: ../src/defaults.c:2196 #, c-format msgid "could not find function %s::%s" msgstr "nemožno nájsť funkciu %s::%s" #: ../src/defaults.c:2203 #, c-format msgid "invalid texture type %s" msgstr "chybný typ textúry %s" #: ../src/defaults.c:2250 #, c-format msgid "Error in texture specification for key \"%s\"" msgstr "Chyba v definícii textúry kľúča \"%s\"" #: ../src/defaults.c:2299 msgid "Wrong type for workspace background. Should be a texture type." msgstr "Chybný typ pozadia pracovnej plochy. Má byť textúra." #: ../src/defaults.c:2347 #, c-format msgid "Wrong type for background of workspace %i. Should be a texture." msgstr "Chybný typ pozadia pracovnej plochy %i. Má byť textúra." #: ../src/defaults.c:2389 msgid "could not load any usable font!!!" msgstr "nemožno načítať žiadny použiteľný font!!!" #: ../src/defaults.c:2416 #, c-format msgid "could not get color for key \"%s\"" msgstr "nemožno získať farbu kľúča \"%s\"" #: ../src/defaults.c:2474 ../src/rootmenu.c:531 #, c-format msgid "%s:invalid key modifier \"%s\"" msgstr "%s:chybný klávesový modifikátor \"%s\"" #: ../src/defaults.c:2486 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\"" msgstr "%s:chybná definícia klávesovej skratky \"%s\"" #: ../src/defaults.c:2493 #, c-format msgid "%s:invalid key in shortcut \"%s\"" msgstr "%s:nesprávna klávesa v klávesovej skratke \"%s\"" #: ../src/defaults.c:2518 #, c-format msgid "%s: modifier key %s is not valid" msgstr "%s: nesprávny klávesový modifikátor %s" #: ../src/defaults.c:2550 #, c-format msgid "could not load image in option %s: %s" msgstr "nemožno načítať obrázok vo voľbe %s: %s" #: ../src/defaults.c:2667 #, c-format msgid "failed to open bitmap file \"%s\"" msgstr "nepodarilo sa otvoriť bitmapový súbor \"%s\"" #: ../src/defaults.c:2670 #, c-format msgid "\"%s\" is not a valid bitmap file" msgstr "\"%s\" nie je podporovaný bitmapový súbor" #: ../src/defaults.c:2673 #, c-format msgid "out of memory reading bitmap file \"%s\"" msgstr "nedostatok pamäti pre načítanie bitmapového súboru \"%s\"" #: ../src/defaults.c:2712 ../src/defaults.c:2745 msgid "bad number of arguments in cursor specification" msgstr "chybný počet argumetov v špecifikácii kurzoru" # fixme! builtin! #: ../src/defaults.c:2728 #, c-format msgid "unknown builtin cursor name \"%s\"" msgstr "neznáme meno vstavaného kurzoru \"%s\"" #: ../src/defaults.c:2755 ../src/defaults.c:2767 #, c-format msgid "could not find cursor bitmap file \"%s\"" msgstr "nemožno nájsť súbor s kurzorom \"%s\"" #: ../src/defaults.c:2814 #, c-format msgid "Error in cursor specification for key \"%s\"" msgstr "Chyba v definícii kurzoru pre kľúč \"%s\"" # info: nebolo by lepšie spracovať? asi nie... #: ../src/defaults.c:2899 msgid "could not render texture for icon background" msgstr "nemožno renderovať textúru pozadia ikon" #: ../src/dialog.c:147 msgid "Save workspace state" msgstr "Uložiť stav pracovných plôch" #: ../src/dialog.c:192 ../src/dialog.c:731 ../src/dock.c:565 #: ../src/dockedapp.c:432 ../src/rootmenu.c:198 ../src/rootmenu.c:248 #: ../src/rootmenu.c:264 msgid "Cancel" msgstr "Zrušiť" #: ../src/dialog.c:290 msgid "Could not open directory \"%s\":\n%s" msgstr "Nemožno otvoriť adresár \"%s\":\n%s" #: ../src/dialog.c:345 msgid "Could not load image file " msgstr "Nemožno načítať súbor s obrázkom " #: ../src/dialog.c:658 msgid "Directories" msgstr "Adresáre" #: ../src/dialog.c:667 msgid "Icons" msgstr "Ikony" #: ../src/dialog.c:700 msgid "Preview" msgstr "Náhľad" #: ../src/dialog.c:713 msgid "File Name:" msgstr "Súbor:" #: ../src/dialog.c:737 msgid "Choose File" msgstr "Vyberte súbor" #: ../src/dialog.c:756 ../src/dialog.c:758 msgid "Icon Chooser" msgstr "Výber ikony" #: ../src/dialog.c:1192 ../src/dialog.c:1301 #, c-format msgid "Version %s" msgstr "Verzia %s" #: ../src/dialog.c:1299 msgid "Window Manager for X" msgstr "Manažér okien pre X" #: ../src/dialog.c:1323 #, c-format msgid "Using visual 0x%x: %s %ibpp " msgstr "Režim zobrazenia 0x%x: %s %ibpp " #: ../src/dialog.c:1331 msgid "(32 thousand colors)\n" msgstr "(32 tisíc farieb)\n" #: ../src/dialog.c:1334 msgid "(64 thousand colors)\n" msgstr "(64 tisíc farieb)\n" #: ../src/dialog.c:1338 msgid "(16 million colors)\n" msgstr "(16 miliónov farieb)\n" #: ../src/dialog.c:1341 #, c-format msgid "(%d colors)\n" msgstr "(%d farby)\n" #: ../src/dialog.c:1351 #, c-format msgid "Total allocated memory: %i kB. Total memory in use: %i kB.\n" msgstr "Alokovaná pamäť spolu: %i kB. Využívaná pamäť spolu: %i kB.\n" #: ../src/dialog.c:1283 msgid "Image formats: " msgstr "Grafických formátov: " #: ../src/dialog.c:1365 msgid "" "\n" "Additional support for: " msgstr "" "\n" "Ďalšia podpora pre: " #: ../src/dialog.c:1388 msgid " and " msgstr " a " #: ../src/dialog.c:1398 msgid "" "\n" "Sound disabled" msgstr "" "\n" "Zvuk vypnutý" #: ../src/dialog.c:1400 msgid "" "\n" "Sound enabled" msgstr "" "\n" "Zvuk povolený" #: ../src/dialog.c:1404 msgid "; Antialiased text" msgstr "; Antialiasovaný text" #: ../src/dialog.c:1433 msgid "Info" msgstr "Info" #: ../src/dialog.c:1457 msgid "Merry Christmas!" msgstr "Šťastné a veselé!" #: ../src/dialog.c:1417 msgid "" " Window Maker 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.\n" "\n" " Window Maker 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.\n" "\n" " You should have received a copy of the GNU General Public License along " "with this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin Street, Fifth Floor, Boston, MA02110-1301 USA." msgstr "" " Tento program je free software; môžete ho rozširovať a/alebo " "modifikovať v súlade s GNU General Public License, ktorú publikuje " "Free Software Foundation; buď verziou 2 licencie, alebo " "ktoroukoľvek neskoršou verziou.\n" "\n" "Tento program je rozširovaný vo viere, že bude užitočný, " "ale bez AKEJKOĽVEK ZÁRUKY; aj bez záruky PREDAJNOSTI " "alebo SPÔSOBILOSTI PRE DANÝ CIEĽ. Pre bližšie informácie " "viď GNU General Public License\n" "\n" "Kópiu GNU General Public License by ste mali obdržať " "spolu s týmto programom; ak nie, píšte na Free Software Foundation, " " Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, " "USA." #: ../src/dialog.c:1551 msgid "Legal" msgstr "Licencia" #: ../src/dialog.c:1703 ../src/startup.c:394 msgid "cannot open connection for crashing dialog panel. Aborting." msgstr "nemožno otvoriť spojenie pre padajúci dialógový panel. Ukončené." #: ../src/dialog.c:1729 msgid "Fatal error" msgstr "Fatálna chyba" #: ../src/dialog.c:1740 #, c-format msgid "" "Window Maker received signal %i\n" "(%s)." msgstr "" "Window Maker prijal signál %i\n" "(%s)." #: ../src/dialog.c:1743 #, c-format msgid "Window Maker received signal %i." msgstr "Window Maker prijal signál %i." #. Comment for the PO file: the %s is an email address #: ../src/dialog.c:1632 #, c-format msgid "" " This fatal error occured probably due to a bug. Please fill the included " "BUGFORM and report it to %s." msgstr "" "Táto fatálna chyba sa vyskytla " "pravdepodobne kvôli chybe vo Window Makery. " "Prosím vyplňte priložený BUGFORM a " "pošlite ho na %s." #: ../src/dialog.c:1761 msgid "What do you want to do now?" msgstr "Čo chcete urobiť?" #: ../src/dialog.c:1767 msgid "Select action" msgstr "Vyberte činnosť" #: ../src/dialog.c:1768 msgid "Abort and leave a core file" msgstr "Skončiť a vytvoriť súbor core" #: ../src/dialog.c:1769 msgid "Restart Window Maker" msgstr "Reštartovať Window Maker" #: ../src/dialog.c:1770 msgid "Start alternate window manager" msgstr "Spustiť alternatívny manažér okien" #: ../src/dialog.c:1948 msgid "" "Window Maker is part of the GNUstep project.\n" "The GNUstep project aims to create a free\n" "implementation of the OpenStep(tm) specification\n" "which is a object-oriented framework for\n" "creating advanced graphical, multi-platform\n" "applications. Additionally, a development and\n" "user desktop environment will be created on top\n" "of the framework. For more information about\n" "GNUstep, please visit: www.gnustep.org" msgstr "" "Window Maker je súčasťou projektu GNUstep.\n" "Cieľom projektu GNUstep je vytvoriť free\n" "implementáciu špecifikácie OpenStep(tm),\n" "čo je objektovo orientovaný základ pre\n" "tvorbu pokročilých, multiplatformových\n" "aplikácií. Navyše, na tomto základe bude\n" "postavené vývojové a užívateľské prostredie.\n" "Viac informácií o projekte GNUstep možno\n" "získať na adrese www.gnustep.org" #: ../src/dialog.c:1971 msgid "About GNUstep" msgstr "O projekte GNUstep" #: ../src/dock.c:211 #, c-format msgid "Type the name for workspace %i:" msgstr "Zadajte meno pre pracovnú plochu %i:" #: ../src/dock.c:212 ../src/dock.c:1150 ../src/dock.c:1153 ../src/dock.c:3445 msgid "Rename Workspace" msgstr "Premenovať plochu" #: ../src/dock.c:527 ../src/dock.c:535 msgid "Warning" msgstr "Varovanie" #: ../src/dock.c:528 msgid "" "Some icons cannot be made omnipresent. Please make sure that no other icon " "is docked in the same positions on the other workspaces and the Clip is not " "full in some workspace." msgstr "" "Niektoré ikony nemôžu byť umiestnené na všetkých plochách.\n" "Ubezpečte sa, že iné ikony nie sú umiestnené v rovnakej\n" "pozícii na ostatných plochách a Spinka nie je na žiadnej\n" "ploche zaplnená." #: ../src/dock.c:536 msgid "" "Icon cannot be made omnipresent. Please make sure that no other icon is " "docked in the same position on the other workspaces and the Clip is not full " "in some workspace." msgstr "" "Ikona nemôže byť umiestňená na všetkých plochách.\n" "Ubezpečte sa, že iné ikony nie sú umiestnené v\n" "rovnakej pozícii na ostatných plochách a Spinka\n" "nie je na žiadnej ploche zaplnená." #: ../src/dock.c:563 msgid "Workspace Clip" msgstr "Spinka" #: ../src/dock.c:564 msgid "All selected icons will be removed!" msgstr "Všetky označené ikony budú odstránené!" #: ../src/dock.c:616 ../src/dock.c:1165 ../src/dock.c:1167 ../src/dock.c:3481 msgid "Keep Icon" msgstr "Ponechať ikonu" #: ../src/dock.c:617 ../src/dock.c:2157 ../src/dock.c:2298 msgid "Type the command used to launch the application" msgstr "Zadajte príkaz, ktorý spustí aplikáciu" #: ../src/dock.c:973 #, c-format msgid "could not launch application %s\n" msgstr "nemožno spustiť aplikáciu %s\n" #: ../src/dock.c:1028 msgid "could not create workspace submenu for Clip menu" msgstr "v menu Spinky nemožno vytvoriť submenu pracovnej plochy" #: ../src/dock.c:1087 msgid "could not create options submenu for Clip menu" msgstr "v menu Spinky nemožno vytvoriť submenu volieb" #: ../src/dock.c:1091 ../src/dock.c:1139 msgid "Keep on Top" msgstr "Vždy navrchu" #: ../src/dock.c:1097 msgid "Collapsed" msgstr "Zvinuté" #: ../src/dock.c:1103 msgid "Autocollapse" msgstr "Automaticky zvinúť" #: ../src/dock.c:1109 msgid "Autoraise" msgstr "Auto navrchu/naspodu" #: ../src/dock.c:1115 msgid "Autoattract Icons" msgstr "Vždy pritiahnuť ikony" #: ../src/dock.c:1145 msgid "Clip Options" msgstr "Voľby Spinky" #: ../src/dock.c:1155 msgid "Selected" msgstr "Vybraná" #: ../src/dock.c:1160 ../src/dock.c:1163 ../src/dock.c:3472 msgid "Select All Icons" msgstr "Vybrať všetky ikony" #: ../src/dock.c:1169 ../src/dock.c:1171 ../src/dock.c:3489 msgid "Move Icon To" msgstr "Presunúť ikonu na" #: ../src/dock.c:1176 ../src/dock.c:1179 ../src/dock.c:3500 msgid "Remove Icon" msgstr "Odstrániť ikonu" #: ../src/dock.c:1181 msgid "Attract Icons" msgstr "Pritiahnuť ikony" #: ../src/dock.c:1184 msgid "Launch" msgstr "Spustiť" #: ../src/dock.c:1192 msgid "Settings..." msgstr "Nastavenia..." #: ../src/dock.c:1558 ../src/dock.c:1665 #, c-format msgid "bad value in docked icon state info %s" msgstr "chybná hodnota v informácii o stave ukotvenej ikony %s" #: ../src/dock.c:1673 #, c-format msgid "bad value in docked icon position %i,%i" msgstr "chybná hodnota umiestnenia ukotvenej ikony %i,%i" #: ../src/dock.c:1693 #, c-format msgid "bad value in dock state info:%s" msgstr "chybná hodnota v informácii o stave docku:%s" #: ../src/dock.c:1939 msgid "there are too many icons stored in dock. Ignoring what doesn't fit" msgstr "v Doku je príliš veľa ikon. Prebytočné budú ignorované." #. icon->forced_dock = 1; #: ../src/dock.c:2156 ../src/dock.c:2297 msgid "Dock Icon" msgstr "Ukotviť ikonu" #: ../src/dock.c:3359 #, c-format msgid "Could not execute command \"%s\"" msgstr "Nemožno vykonať príkaz \"%s\"" #: ../src/dock.c:3451 msgid "Toggle Omnipresent" msgstr "Prepnúť Na všetkých plochách" #: ../src/dock.c:3456 ../src/kwm.c:639 ../src/winmenu.c:420 #: ../src/winspector.c:1375 msgid "Omnipresent" msgstr "Na všetkých plochách" #: ../src/dock.c:3470 msgid "Unselect All Icons" msgstr "Odznačit všetky ikony" #: ../src/dock.c:3479 msgid "Keep Icons" msgstr "Ponechať ikony" #: ../src/dock.c:3487 msgid "Move Icons To" msgstr "Presunúť ikony na" #: ../src/dock.c:3498 msgid "Remove Icons" msgstr "Odstrániť ikony" #: ../src/dock.c:3529 ../src/kwm.c:645 msgid "Bring Here" msgstr "Preniesť sem" #: ../src/dockedapp.c:150 #, c-format msgid "could not find icon %s, used in a docked application" msgstr "nemôžno nájsť ikonu %s ukotvenej aplikácie" #: ../src/dockedapp.c:230 #, c-format msgid "Could not open specified icon file: %s" msgstr "Nemôžno otvoriť daný súbor s ikonou: %s" #: ../src/dockedapp.c:232 msgid "Ignore" msgstr "Ignorovať" #: ../src/dockedapp.c:334 msgid "Start when Window Maker is started" msgstr "Spustiť pri štarte WindowMakeru" #: ../src/dockedapp.c:341 msgid "Lock (prevent accidental removal)" msgstr "Chrániť pred náhodným odstránením" #: ../src/dockedapp.c:345 msgid "Application path and arguments" msgstr "Umiestnenie a argumenty aplikácie" #: ../src/dockedapp.c:358 msgid "Command for middle-click launch" msgstr "Príkaz pre stredné tlačítko" #: ../src/dockedapp.c:372 #, c-format msgid "%s will be replaced with current selection" msgstr "%s sa nahradí aktuálnym výberom" #: ../src/dockedapp.c:377 msgid "Command for files dropped with DND" msgstr "Príkaz pre položené súbory (DND)" #: ../src/dockedapp.c:391 #, c-format msgid "%d will be replaced with the file name" msgstr "%d sa nahradí menom súboru" #: ../src/dockedapp.c:395 msgid "DND support was not compiled in" msgstr "Podpora DND nebola skompilovaná" #: ../src/dockedapp.c:400 msgid "Icon Image" msgstr "Ikona" #: ../src/dockedapp.c:414 ../src/winspector.c:1513 msgid "Browse..." msgstr "Hľadať..." #: ../src/dockedapp.c:475 msgid "Docked Application Settings" msgstr "Nastavenia aplikácie v Doku" #: ../src/framewin.c:647 ../src/framewin.c:742 ../src/menu.c:456 #: ../src/texture.c:594 #, c-format msgid "could not render texture: %s" msgstr "nemožno renderovať textúru: %s" #: ../src/framewin.c:670 ../src/framewin.c:681 ../src/framewin.c:697 #: ../src/framewin.c:708 ../src/framewin.c:715 ../src/framewin.c:722 #: ../src/icon.c:350 ../src/menu.c:485 #, c-format msgid "error rendering image:%s" msgstr "chyba pri renderovaní obrázku:%s" #: ../src/framewin.c:775 #, c-format msgid "error rendering image: %s" msgstr "chyba pri renderovaní obrázku: %s" #: ../src/gnome.c:217 ../src/gnome.c:344 ../src/gnome.c:402 msgid "out of memory while updating GNOME hints" msgstr "nedostatok pamäti pri obnovovaní príznakov GNOME" #: ../src/icon.c:229 ../src/wdefaults.c:443 #, c-format msgid "error loading image file \"%s\": %s" msgstr "chyba pri čítaní obrázku zo súboru \"%s\": %s" #: ../src/icon.c:493 ../src/icon.c:502 #, c-format msgid "could not create directory %s" msgstr "nemožno vytvoriť adresár %s" #: ../src/icon.c:769 #, c-format msgid "could not find default icon \"%s\"" msgstr "nemožno nájsť implicitnú ikonu \"%s\"" #: ../src/icon.c:775 #, c-format msgid "could not load default icon \"%s\":%s" msgstr "nemožno načítať implicitnú ikonu \"%s\":%s" #. #. * 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/kwm.c:635 ../src/winmenu.c:443 ../src/winmenu.c:585 msgid "Maximize" msgstr "Maximalizovať" #: ../src/kwm.c:636 ../src/winmenu.c:580 msgid "Unmaximize" msgstr "Demaximalizovať" #: ../src/kwm.c:637 ../src/winmenu.c:451 ../src/winmenu.c:571 msgid "Miniaturize" msgstr "Minimalizovať" # info: s týmito dvomi sú dosť dobré halušky. Nemôžem tam dať windowsácke # obnoviť, lebo ak by sme minimalizovali maximalizované okno, mali by # sme v menu dve rovnaké položky. čo sa mám obesiť?! #: ../src/kwm.c:638 ../src/winmenu.c:566 msgid "Deminiaturize" msgstr "Deminimalizovať" #: ../src/kwm.c:640 msgid "Not Omnipresent" msgstr "Nie na všetkých plochách" #: ../src/kwm.c:641 msgid "Move" msgstr "Presunúť" #: ../src/kwm.c:642 msgid "Resize" msgstr "Veľkosť" #. #. entry = wMenuAddCallback(menu, _("Select Shortcut"), NULL, NULL); #. wMenuEntrySetCascade(menu, entry, makeMakeShortcutMenu(scr)); #. #: ../src/kwm.c:643 ../src/rootmenu.c:248 ../src/winmenu.c:515 msgid "Close" msgstr "Zatvoriť" #: ../src/kwm.c:644 ../src/winmenu.c:499 msgid "Move To" msgstr "Premiestniť na" #: ../src/kwm.c:1111 #, c-format msgid "%a(Run Command,Type the command to run:)" msgstr "%a(Spustiť,Zadajte príkaz:)" #: ../src/main.c:222 msgid "failed to restart Window Maker." msgstr "nepodarilo sa reštartovať Window Maker." #: ../src/main.c:225 #, c-format msgid "could not exec %s" msgstr "nemožno vykonať %s" #: ../src/main.c:271 msgid "Could not execute command: " msgstr "Nemožno vykonať príkaz: " #: ../src/main.c:428 #, c-format msgid "%s aborted.\n" msgstr "%s zrušený.\n" #: ../src/main.c:439 #, c-format msgid "Usage: %s [options]\n" msgstr "Použitie: %s [voľby]\n" #: ../src/main.c:440 msgid "The Window Maker window manager for the X window system" msgstr "Správca okien Window Maker pre X window system" #: ../src/main.c:442 msgid " -display host:dpy\tdisplay to use" msgstr " -display host:dpy\tpoužiť daný display" #: ../src/main.c:444 msgid " --no-cpp \t\tdisable preprocessing of configuration files" msgstr " --no-cpp \t\tzakázať preprocessing konfiguračných súborov" #: ../src/main.c:446 msgid " --no-dock\t\tdo not open the application Dock" msgstr " --no-dock\t\tneotvárať Dok aplikácií" #: ../src/main.c:447 msgid " --no-clip\t\tdo not open the workspace Clip" msgstr " --no-clip\t\tneotvárať Spinku pracovných plôch" #: ../src/main.c:448 msgid " --no-autolaunch\tdo not autolaunch applications" msgstr " --no-autolaunch\tnespúšťať automaticky aplikácie" #: ../src/main.c:449 msgid " --dont-restore\t\tdo not restore saved session" msgstr " --dont-restore\t\tneobnovovať uložené sedenie" #: ../src/main.c:451 msgid " --locale locale\tlocale to use" msgstr " --locale locale\tpoužiť dané miestne nastavenia" #: ../src/main.c:453 msgid "" " --create-stdcmap\tcreate the standard colormap hint in PseudoColor visuals" msgstr "" " --create-stdcmap\tvytvoriť štandardnú mapu farieb v režimoch PseudoColor" #: ../src/main.c:454 msgid " --visual-id visualid\tvisual id of visual to use" msgstr " --visual-id visualid\tčíslo obrazového režimu" #: ../src/main.c:455 msgid " --static\t\tdo not update or save configurations" msgstr " --static\t\tneobnovovať ani neukladať nastavenia" #: ../src/main.c:456 msgid " --no-polling\t\tdo not periodically check for configuration updates" msgstr " --no-polling\t\tnekontrolovať pravidelne zmenu konfigurácie" #: ../src/main.c:458 msgid " --synchronous\t\tturn on synchronous display mode" msgstr " --synchronous\t\tzapnúť režim synchrónneho zobrazovania" #: ../src/main.c:460 msgid " --version\t\tprint version and exit" msgstr " --version\t\tvypíše verziu a ukončí sa" #: ../src/main.c:461 msgid " --help\t\t\tshow this message" msgstr " --help\t\t\tvypíše tento text" #: ../src/main.c:474 #, c-format msgid "" "could not find user GNUstep directory (%s).\n" "Make sure you have installed Window Maker correctly and run wmaker.inst" msgstr "" "nemožno nájsť uživateľov adresár GNUstep (%s).\n" "Uistite se, že Window Maker je správne nainštalovaný a spustite wmaker.inst" #: ../src/main.c:479 #, c-format msgid "could not find user GNUstep directory (%s)." msgstr "nemožno nájsť užívateľov GNUstep adresár (%s)." #: ../src/main.c:482 msgid "" "There was an error while creating GNUstep directory, please make sure you " "have installed Window Maker correctly and run wmaker.inst" msgstr "" "Pri vytváraní GNUstep adresára došlo k chybe. Prosím, uistite sa, či je " "Window Maker správne nainštalovaný a spustite wmaker.inst" #: ../src/main.c:485 #, c-format msgid "%s directory created with default configuration." msgstr "adresár %s vytvorený so štandardnou konfiguráciou." #: ../src/main.c:505 ../src/main.c:510 #, c-format msgid "%s:could not execute initialization script" msgstr "%s:nemožno vykonať inicializačný skript" #: ../src/main.c:530 ../src/main.c:535 #, c-format msgid "%s:could not execute exit script" msgstr "%s:nemožno vykonať záverečný skript" #: ../src/main.c:663 ../src/main.c:671 ../src/main.c:679 ../src/main.c:699 #, c-format msgid "too few arguments for %s" msgstr "málo argumetov pre %s" #: ../src/main.c:683 #, c-format msgid "bad value for visualid: \"%s\"" msgstr "chybná hodnota obrazového režimu (visualid): \"%s\"" #: ../src/main.c:707 #, c-format msgid "%s: invalid argument '%s'\n" msgstr "%s: nesprávny argument '%s'\n" #: ../src/main.c:708 #, c-format msgid "Try '%s --help' for more information\n" msgstr "Príkaz '%s --help' poskytne bližšie informácie\n" #: ../src/main.c:739 msgid "X server does not support locale" msgstr "X server nepodporuje miestne nastavenia" #: ../src/main.c:743 msgid "cannot set locale modifiers" msgstr "nemožno nastaviť modifikátory miestnych nastavení" #: ../src/main.c:759 #, c-format msgid "could not open display \"%s\"" msgstr "nemožno otvoriť display \"%s\"" # fixme! grab po slovensky. #: ../src/menu.c:1266 msgid "could not grab keyboard" msgstr "nemožno grabovať klávesnicu" #: ../src/menu.c:2607 #, c-format msgid "bad value in menus state info:%s" msgstr "chybná hodnota v informácii o stave menu:%s" #: ../src/menureader.c:264 ../src/rootmenu.c:738 #, c-format msgid "%s:could not stat menu" msgstr "%s:nemožno získať atribúty súboru s menu" #: ../src/menureader.c:341 ../src/menureader.c:380 #, c-format msgid "could not stat() menu file '%s'" msgstr "nemožno získať atribúty súboru s menu '%s'" #: ../src/menureader.c:416 #, c-format msgid "could not find menu file '%s' referenced in WMRootMenu" msgstr "nemožno nájsť súbor s menu '%s', určený vo WMRootMenu" #: ../src/menureader.c:423 #, c-format msgid "could not find any usable menu files. Please check '%s'" msgstr "nemožno nájsť žiadne použiteľné menu. Prosím, skontrolujte '%s'" #: ../src/menureader.c:438 ../src/rootmenu.c:1674 #, c-format msgid "" "using default menu file \"%s\" as the menu referenced in WMRootMenu could " "not be found " msgstr "" "použitý implicitný súbor s menu \"%s\", keďže nemožno nájsť menu určené vo " "WMRootMenu " #: ../src/menureader.c:457 #, c-format msgid "" "invalid content in menu file '%s'.\n" "It should either be a property list menu or the path to the file, enclosed " "in \"." msgstr "" "nesprávny obsah súboru s menu '%s'.\n" "Mal by obsahovať buď property list alebo cestu k súboru uzavretú medzi \"." #: ../src/misc.c:71 #, c-format msgid "could not define value for %s for cpp" msgstr "nemožno určiť hodnotu %s pre cpp" #: ../src/misc.c:101 #, c-format msgid "could not get password entry for UID %i" msgstr "nemožno získať informácie o užívateľovi s UID %i" #: ../src/misc.c:126 #, c-format msgid "your machine is misconfigured. HOSTNAME is set to %s" msgstr "váš systém nie je správne nakonfigurovaný. HOSTNAME má hodnotu %s" #: ../src/misc.c:132 #, c-format msgid "your machine is misconfigured. HOST is set to %s" msgstr "váš systém nie je správne nakonfigurovaný. HOST má hodnotu %s" #: ../src/misc.c:630 msgid "Program Arguments" msgstr "Argumenty programu" #: ../src/misc.c:631 msgid "Enter command arguments:" msgstr "Zadajte argumenty príkazu:" #: ../src/misc.c:724 msgid "unable to get dropped data from DND drop" msgstr "nemožno získat položené dáta DND operácie drop" #: ../src/misc.c:732 msgid "error getting dropped data from DND drop" msgstr "chyba pri získavaní položených dát DND operácie drop" #: ../src/misc.c:738 msgid "out of memory while getting data from DND drop" msgstr "nedostatok pamäti pri čítaní dát DND operácie drop" # fix me! jednoducho schmatne nejaký reťazec a parsuje a expanduje a ...neviem # nó! robí to aj printf, keď mu tam šibnete "\t\"No nazdar!\"\n" #: ../src/misc.c:783 ../src/misc.c:923 #, c-format msgid "out of memory during expansion of \"%s\"" msgstr "nedostatok pamäti pri nahradzovaní \"%s\"" #: ../src/misc.c:837 msgid "out of memory during expansion of \"%w\"" msgstr "nedostatok pamäti pri nahradzovaní \"%w\"" #: ../src/misc.c:855 msgid "out of memory during expansion of \"%W\"" msgstr "nedostatok pamäti pri nahradzovaní \"%W\"" #: ../src/misc.c:871 #, c-format msgid "out of memory during expansion of \"%a\"" msgstr "nedostatok pamäti pri nahradzovaní \"%a\"" #: ../src/misc.c:902 #, c-format msgid "out of memory during expansion of \"%d\"" msgstr "nedostatok pamäti pri nahradzovaní \"%d\"" #: ../src/misc.c:916 msgid "selection not available" msgstr "výber nie je dostupný" #: ../src/misc.c:960 ../src/misc.c:966 #, c-format msgid "bad window name value in %s state info" msgstr "chybná hodnota názvu okna v informácii o stave %s" # fix me!: pomocníkovi obrázku pozadia (ktorého nájdete na 3 poschodí, č.d 32) #: ../src/misc.c:1205 msgid "could not send message to background image helper" msgstr "nemožno poslať správu umiestňovaču pozadia" #: ../src/pixmap.c:235 #, c-format msgid "could not load mask bitmap file \"%s\". Won't use mask" msgstr "nemožno načítať súbor masky \"%s\". Maska sa nepoužije" # fix me! nie parsovať #: ../src/resources.c:44 #, c-format msgid "could not parse color \"%s\"" msgstr "nemožno spracovať farby \"%s\"" #: ../src/resources.c:48 #, c-format msgid "could not allocate color \"%s\"" msgstr "nemožno alokovať farbu \"%s\"" # fix me! fix me! fix me! fix me! fix me! #: ../src/rootmenu.c:196 ../src/rootmenu.c:198 msgid "Exit" msgstr "Koniec" #: ../src/rootmenu.c:197 msgid "Exit window manager?" msgstr "Ukončiť manažér okien?" #: ../src/rootmenu.c:245 msgid "Close X session" msgstr "Ukončit sedenie X systému" #: ../src/rootmenu.c:246 msgid "" "Close Window System session?\n" "Kill might close applications with unsaved data." msgstr "" "Ukončiť sedenie systému okien?\n" "Núteným ukončením aplikacií môže dôjsť k strate dát." #: ../src/rootmenu.c:261 msgid "Kill X session" msgstr "Zabiť sedenie X systému" #: ../src/rootmenu.c:262 msgid "" "Kill Window System session?\n" "(all applications will be closed)" msgstr "" "Nútene ukončit sedenie systému okien?\n" "(všetky aplikácie budú ukončené)" #: ../src/rootmenu.c:544 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\" for entry %s" msgstr "%s:chybná klávesová skratka \"%s\" položky %s" #: ../src/rootmenu.c:552 #, c-format msgid "%s:invalid key in shortcut \"%s\" for entry %s" msgstr "%s:chybná klávesa v klávesovej skratke \"%s\" položky %s" #: ../src/rootmenu.c:605 #, c-format msgid "%s: unmatched '\"' in menu file" msgstr "%s: nepriradené '\"' v súbore s menu" #: ../src/rootmenu.c:655 #, c-format msgid "%s: missing command" msgstr "%s: chýbajúci príkaz" #: ../src/rootmenu.c:687 #, c-format msgid "invalid OPEN_MENU specification: %s" msgstr "chybne zadaný príkaz OPEN_MENU: %s" #: ../src/rootmenu.c:746 #, c-format msgid "%s:could not stat menu:%s" msgstr "%s:nemožno získať atribúty súboru s menu:%s" #: ../src/rootmenu.c:764 #, c-format msgid "too many parameters in OPEN_MENU: %s" msgstr "priveľa parametrov pre príkaz OPEN_MENU: %s" #: ../src/rootmenu.c:808 msgid "" "There are more than one WORKSPACE_MENU commands in the applications menu. " "Only one is allowed." msgstr "" "V aplikačnom menu je viac než jeden príkaz WORKSPACE_MENU. Povolený je len " "jeden." #: ../src/rootmenu.c:842 msgid "" "There are more than one WINDOWS_MENU commands in the applications menu. Only " "one is allowed." msgstr "" "V aplikačnom menu je viac než jeden príkaz WORKSPACE_MENU. Povolený je len " "jeden." #: ../src/rootmenu.c:847 msgid "Window List" msgstr "Okná" #: ../src/rootmenu.c:876 ../src/rootmenu.c:894 ../src/rootmenu.c:904 #, c-format msgid "%s:missing parameter for menu command \"%s\"" msgstr "%s:chýbajúci parameter pre príkaz menu \"%s\"" #: ../src/rootmenu.c:972 #, c-format msgid "%s:unknown command \"%s\" in menu config." msgstr "%s:neznámy príkaz \"%s\" v konfigurácii menu." #: ../src/rootmenu.c:980 #, c-format msgid "%s:can't add shortcut for entry \"%s\"" msgstr "%s:nemožno priradiť klávesovú skratku položke \"%s\"" #: ../src/rootmenu.c:1117 #, c-format msgid "%s:maximal line size exceeded in menu config: %s" msgstr "%s:prekročená maximálna dĺžka riadku v konfigurácii menu: %s" #: ../src/rootmenu.c:1139 ../src/rootmenu.c:1232 ../src/rootmenu.c:1336 #, c-format msgid "%s:missing command in menu config: %s" msgstr "%s:chýbajúci príkaz v konfigurácii menu: %s" #: ../src/rootmenu.c:1169 #, c-format msgid "%s:syntax error in menu file:END declaration missing" msgstr "%s:syntaktická chyba v súbore s menu: chýbajúci príkaz END" #: ../src/rootmenu.c:1198 ../src/rootmenu.c:1300 msgid "could not make arguments for menu file preprocessor" msgstr "nemožno vytvoriť argumety pre preprocesor súboru s menu" # fix me! predspracovať je oničom #: ../src/rootmenu.c:1205 ../src/rootmenu.c:1308 #, c-format msgid "%s:could not open/preprocess menu file" msgstr "%s:nemožno otvoriť alebo predspracovať súbor s menu" #: ../src/rootmenu.c:1217 ../src/rootmenu.c:1321 #, c-format msgid "could not open menu file \"%s\": %s" msgstr "nemožno otvoriť súbor s menu \"%s\": %s" #: ../src/rootmenu.c:1244 #, c-format msgid "%s:invalid menu file. MENU command is missing" msgstr "%s:syntaktická chyba v súbore s menu: chýbajúci príkaz MENU" #: ../src/rootmenu.c:1253 msgid "error reading preprocessed menu data" msgstr "chyba pri čítaní dát predspracovaného menu" #: ../src/rootmenu.c:1348 #, c-format msgid "%s:no title given for the root menu" msgstr "%s:hlavné menu nemá určený názov" #: ../src/rootmenu.c:1439 ../src/rootmenu.c:1512 ../src/rootmenu.c:1553 #, c-format msgid "out of memory while constructing directory menu %s" msgstr "nedostatok pamäti pri vytváraní adresárového menu %s" #: ../src/rootmenu.c:1449 #, c-format msgid "%s:could not stat file \"%s\" in menu directory" msgstr "%s:nemožno získať atribúty súboru \"%s\" v adresári menu" #: ../src/rootmenu.c:1607 msgid "Commands" msgstr "Príkazy" #: ../src/rootmenu.c:1610 msgid "Restart" msgstr "Reštart" #: ../src/rootmenu.c:1611 msgid "Exit..." msgstr "Koniec..." #: ../src/rootmenu.c:1656 #, c-format msgid "could not find menu file \"%s\" referenced in WMRootMenu" msgstr "nemožno nájsť súbor s menu \"%s\", určený vo WMRootMenu" #: ../src/rootmenu.c:1663 #, c-format msgid "could not access menu \"%s\" referenced in WMRootMenu" msgstr "nemožno pristúpiť k menu \"%s\", určenom vo WMRootMenu" #: ../src/rootmenu.c:1697 ../src/rootmenu.c:1773 #, c-format msgid "%s:format error in root menu configuration \"%s\"" msgstr "%s:chybný formát v konfigurácii hlavného menu \"%s\"" #: ../src/rootmenu.c:1855 msgid "" "The applications menu could not be loaded. Look at the console output for a " "detailed description of the errors." msgstr "" "Nemožno načítať menu aplikácií. Detailný popis chýb nájdete na výstupe " "konzoly." #: ../src/screen.c:715 #, c-format msgid "could not initialize graphics library context: %s" msgstr "nemožno inicializovať kontext grafickej knižnice: %s" #: ../src/screen.c:743 msgid "could not initialize WINGs widget set" msgstr "nemožno inicializovať sadu widgetov WINGs" #: ../src/screen.c:1252 #, c-format msgid "could not save session state in %s" msgstr "nemožno uložit sedenie do %s" #: ../src/session.c:183 ../src/wdefaults.c:589 ../src/winspector.c:454 #, c-format msgid "can't convert \"%s\" to boolean" msgstr "nemožno previesť \"%s\" na boolean" #: ../src/session.c:1023 msgid "out of memory while saving session state" msgstr "nedostatok pamäti pri ukladaní sedenia" #: ../src/session.c:1106 msgid "end of memory while saving session state" msgstr "nedostatok pamäti pri ukladaní sedenia" #. 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:1244 msgid "connection to the session manager was lost" msgstr "spojenie so správcom sedení sa stratilo" #: ../src/stacking.c:79 msgid "could not get window list!!" msgstr "nemožno získať zoznam okien!!!" #: ../src/startup.c:202 #, c-format msgid "internal X error: %s\n" msgstr "interná chyba X systému: %s\n" #: ../src/startup.c:260 #, c-format msgid "got signal %i (%s) - restarting\n" msgstr "prijatý signál %i (%s) - reštart\n" #: ../src/startup.c:262 #, c-format msgid "got signal %i - restarting\n" msgstr "prijatý signál %i - reštart\n" #: ../src/startup.c:272 #, c-format msgid "got signal %i (%s) - rereading defaults\n" msgstr "prijatý signál %i (%s) - znovunačítanie nastavení\n" #: ../src/startup.c:274 #, c-format msgid "got signal %i - rereading defaults\n" msgstr "prijatý signál %i - znovunačítanie nastavení\n" #: ../src/startup.c:284 #, c-format msgid "got signal %i (%s) - exiting...\n" msgstr "prijatý signál %i (%s) - koniec...\n" #: ../src/startup.c:286 #, c-format msgid "got signal %i - exiting...\n" msgstr "prijatý signál %i - koniec...\n" #: ../src/startup.c:329 #, c-format msgid "got signal %i (%s)\n" msgstr "prijatý signál %i (%s)\n" #: ../src/startup.c:331 #, c-format msgid "got signal %i\n" msgstr "signál %i\n" # fix me! ak vieš #: ../src/startup.c:342 msgid "" "crashed while trying to do some post-crash cleanup. Aborting immediatelly." msgstr "" "havária pri pokuse upratať po predchádzajúcej havárii. Okamžitý koniec." #. we try to restart Window Maker #: ../src/startup.c:406 msgid "trying to restart Window Maker..." msgstr "reštart Window Makeru..." #: ../src/startup.c:411 msgid "trying to start alternate window manager..." msgstr "spustenie alternatívneho manažéru okien..." #: ../src/startup.c:417 msgid "failed to start alternate window manager. Aborting." msgstr "nepodarilo sa spustiť alternatívny manažér okien. Koniec." #: ../src/startup.c:419 msgid "" "a fatal error has occured, probably due to a bug. Please fill the included " "BUGFORM and report it." msgstr "" "fatálna chyba nastala pravdepodobne v dôsledku chyby vo Window Makery. " "Prosím, vyplňte a pošlite priložený BUGFORM." #: ../src/startup.c:894 #, c-format msgid "icon size is configured to %i, but it's too small. Using 16, instead\n" msgstr "veľkosť ikony je nastavená na %i, ale to je málo. Použje sa 16\n" #: ../src/startup.c:923 msgid "XKB is not supported. KbdModeLock is automatically disabled." msgstr "" "rozšírenie XKB nie je podporované. KbdModeLock je automaticky zakázaný." #: ../src/startup.c:942 msgid "it seems that there is already a window manager running" msgstr "zdá sa, že manažér okien už beží" #: ../src/startup.c:948 #, c-format msgid "could not manage screen %i" msgstr "nemožno spravovať obrazovku %i" #: ../src/startup.c:1020 msgid "could not manage any screen" msgstr "nemožno spravovať žiadnu obrazovku" #: ../src/switchmenu.c:145 msgid "Windows" msgstr "Okná" #: ../src/texture.c:329 ../src/texture.c:371 #, c-format msgid "image file \"%s\" used as texture could not be found." msgstr "súbor s obrázkom \"%s\" použitým ako textúra nemožno nájsť." #: ../src/texture.c:335 ../src/texture.c:377 #, c-format msgid "could not load texture pixmap \"%s\":%s" msgstr "nemožno načítať textúru \"%s\":%s" # fix you! cound? #: ../src/texture.c:437 #, c-format msgid "library \"%s\" cound not be opened." msgstr "nemožno otvoriť knižnicu \"%s\"." #: ../src/texture.c:446 #, c-format msgid "function \"%s\" not found in library \"%s\"" msgstr "funkciu \"%s\" nemožno nájsť v knižnici \"%s\"" #: ../src/texture.c:453 msgid "function textures not supported on this system, sorry." msgstr "funkčné textúry na tomto systéme nie sú podporované." #: ../src/texture.c:598 msgid "could not allocate image buffer" msgstr "nemožno alokovať pamäť pre obrázok" #: ../src/wdefaults.c:437 #, c-format msgid "could not find icon file \"%s\"" msgstr "nemožno nájsť súbor s ikonou \"%s\"" #: ../src/window.c:3026 ../src/window.c:3167 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 alebo podobná klávesa je zrejme zapnutá.\n" "Vypnite ju, lebo niektoré akcie myši a klávesové skratky nebudú fungovať." #: ../src/winmenu.c:126 msgid "" "This will kill the application.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" "Aplikácia bude nútene ukončená.\n" "Akékoľvek zmeny budú stratené.\n" "Prosím potvrďte." #: ../src/winmenu.c:274 ../src/winmenu.c:283 msgid "Set Shortcut" msgstr "Nastaviť skratku" #: ../src/winmenu.c:361 ../src/winmenu.c:406 msgid "could not create submenu for window menu" msgstr "nemožno vytvoriť submenu pre menu okna" #: ../src/winmenu.c:410 msgid "Keep on top" msgstr "Vždy navrchu" #: ../src/winmenu.c:415 msgid "Keep at bottom" msgstr "Vždy naspodu" #: ../src/winmenu.c:459 ../src/winmenu.c:602 msgid "Shade" msgstr "Zrolovať" #: ../src/winmenu.c:475 msgid "Hide Others" msgstr "Skryť ostatné" #: ../src/winmenu.c:483 msgid "Resize/Move" msgstr "Veľkosť/Presun" #: ../src/winmenu.c:491 msgid "Select" msgstr "Vybrať" #: ../src/winmenu.c:504 msgid "Attributes..." msgstr "Nastavenia..." #: ../src/winmenu.c:506 msgid "Options" msgstr "Možnosti" #: ../src/winmenu.c:597 msgid "Unshade" msgstr "Vyrolovať" #: ../src/winspector.c:387 #, c-format msgid "Could not find icon \"%s\" specified for this window" msgstr "Nemožno nájsť ikonu \"%s\" nastavenú pre toto okno." #: ../src/winspector.c:404 #, c-format msgid "Could not open specified icon \"%s\":%s" msgstr "Nemožno otvoriť danú ikonu \"%s\":%s" #: ../src/winspector.c:1121 #, c-format msgid "Inspecting %s.%s" msgstr "Atribúty %s.%s" #: ../src/winspector.c:1147 msgid "Click in the window you wish to inspect." msgstr "" "Kliknite na okno,\n" "ktorého vlastnosti chcete upraviť." #: ../src/winspector.c:1186 msgid "" "The configuration will apply to all\n" "windows that have their WM_CLASS\n" "property set to the above selected\n" "name, when saved." msgstr "" "Konfigurácia bude použitá pre všetky\n" "okná, ktoré majú vlastnosť WM_CLASS\n" "nastavenú na hodnotu uvedenú vyššie." #: ../src/winspector.c:1215 msgid "Save" msgstr "Uložiť" #: ../src/winspector.c:1223 msgid "Apply" msgstr "Použiť" #: ../src/winspector.c:1229 msgid "Reload" msgstr "Obnoviť" #: ../src/winspector.c:1238 ../src/winspector.c:1248 msgid "Window Specification" msgstr "Určenie okna" #: ../src/winspector.c:1239 msgid "Window Attributes" msgstr "Nastavenia okna" #: ../src/winspector.c:1240 msgid "Advanced Options" msgstr "Rozšírené možnosti" #: ../src/winspector.c:1241 msgid "Icon and Initial Workspace" msgstr "Ikona a počiatočná plocha" #: ../src/winspector.c:1242 msgid "Application Specific" msgstr "Špecifické pre aplikáciu" #: ../src/winspector.c:1256 msgid "Defaults for all windows" msgstr "Implicitné pre všetky okná" #: ../src/winspector.c:1310 msgid "Select window" msgstr "Vybrať okno" #: ../src/winspector.c:1324 msgid "Attributes" msgstr "Nastavenia" #: ../src/winspector.c:1335 msgid "Disable titlebar" msgstr "Odstrániť hornú lištu" #: ../src/winspector.c:1337 msgid "" "Remove the titlebar of this window.\n" "To access the window commands menu of a window\n" "without it's titlebar, press Control+Esc (or the\n" "equivalent shortcut, if you changed the default\n" "settings)." msgstr "" "Odstrániť hornú lištu tohto okna. Prístup k\n" "príkazom menu okna bez hornej lišty umožňuje\n" "kombinácia kláves Control+Esc (alebo iná\n" "klávesová skratka, ak ste zmenili implicitné\n" "nastavenia)." #: ../src/winspector.c:1344 msgid "Disable resizebar" msgstr "Odstrániť spodnú lištu" #: ../src/winspector.c:1346 msgid "Remove the resizebar of this window." msgstr "" "Odstrániť spodnú lištu tohto okna,\n" "ktorá slúži na zmenu veľkosti okna." #: ../src/winspector.c:1349 msgid "Disable close button" msgstr "Odstrániť tlačidlo Zatvoriť" #: ../src/winspector.c:1351 msgid "Remove the `close window' button of this window." msgstr "Odstrániť z tohto okna tlačidlo Zatvoriť okno." #: ../src/winspector.c:1354 msgid "Disable miniaturize button" msgstr "Odstrániť tlačidlo Minimalizovať" #: ../src/winspector.c:1356 msgid "Remove the `miniaturize window' button of the window." msgstr "Odstrániť z tohto okna tlačidlo Minimalizovať okno." #: ../src/winspector.c:1359 msgid "Disable border" msgstr "Odstrániť okraj" #: ../src/winspector.c:1361 msgid "Remove the 1 pixel black border around the window." msgstr "Odstrániť čierny okraj (hrubý 1 bod) okolo okna" #: ../src/winspector.c:1364 msgid "Keep on top (floating)" msgstr "Vždy navrchu" #: ../src/winspector.c:1366 msgid "" "Keep the window over other windows, not allowing\n" "them to cover it." msgstr "" "Držať okno vždy nad ostatnými,\n" "a nedovoliť, aby ho prekryli." #: ../src/winspector.c:1370 msgid "Keep at bottom (sunken)" msgstr "Vždy naspodu" #: ../src/winspector.c:1372 msgid "Keep the window under all other windows." msgstr "Držať okno pod všetkými ostatnými." #: ../src/winspector.c:1377 msgid "Make window present in all workspaces." msgstr "Zobrazovať okno na všetkých plochách." #: ../src/winspector.c:1380 msgid "Start miniaturized" msgstr "Spustiť minimalizované" #: ../src/winspector.c:1382 msgid "" "Make the window be automatically miniaturized when it's\n" "first shown." msgstr "Automaticky minimalizovať okno pri jeho prvom zobrazení." #: ../src/winspector.c:1386 msgid "Start maximized" msgstr "Spustiť maximalizované" #: ../src/winspector.c:1388 msgid "" "Make the window be automatically maximized when it's\n" "first shown." msgstr "Automaticky maximalizovať okno pri jeho prvom zobrazení." #: ../src/winspector.c:1392 msgid "Full screen maximization" msgstr "Maximalizovať na celú obrazovku" #: ../src/winspector.c:1394 msgid "" "Make the window use the whole screen space when it's\n" "maximized. The titlebar and resizebar will be moved\n" "to outside the screen." msgstr "" "Použiť pri maximalizácii celú plochu obrazovky.\n" "Horná a spodná lišta budú mimo obrazovky." #: ../src/winspector.c:1411 msgid "Advanced" msgstr "Rozšírené" #: ../src/winspector.c:1428 msgid "Do not bind keyboard shortcuts" msgstr "Ignorovať klávesové skratky" #: ../src/winspector.c:1430 msgid "" "Do not bind keyboard shortcuts from Window Maker\n" "when this window is focused. This will allow the\n" "window to receive all key combinations regardless\n" "of your shortcut configuration." msgstr "" "Ignorovať klávesové skratky Window Makeru, keď\n" "je okno zamerané. To umožní oknu prijímať všetky\n" "kombinácie kláves bez ohľadu na vaše nastavenia\n" "klávesových skratiek." #: ../src/winspector.c:1436 msgid "Do not bind mouse clicks" msgstr "Ignorovať akcie myši" #: ../src/winspector.c:1438 msgid "" "Do not bind mouse actions, such as `Alt'+drag\n" "in the window (when Alt is the modifier you have\n" "configured)." msgstr "" "Ignorovať akcie myši ako napr. Alt+ťahanie\n" "v okne (ak je Alt váš nastavený modifikátor)." #: ../src/winspector.c:1443 msgid "Do not show in the window list" msgstr "Nezobrazovať v zozname okien" #: ../src/winspector.c:1445 msgid "Do not list the window in the window list menu." msgstr "Nezaradiť okno do menu Okná." #: ../src/winspector.c:1448 msgid "Do not let it take focus" msgstr "Zakázať aktivovanie" #: ../src/winspector.c:1450 msgid "" "Do not let the window take keyboard focus when you\n" "click on it." msgstr "" "Zakázať oknu aktivovanie pri kliknutí\n" "alebo prechode myšou nad ním." #: ../src/winspector.c:1454 msgid "Keep inside screen" msgstr "Vždy vnútri obrazovky" #: ../src/winspector.c:1456 msgid "" "Do not allow the window to move itself completely\n" "outside the screen. For bug compatibility.\n" msgstr "Nedovoliť presunutie celého okna mimo obrazovky.\n" #: ../src/winspector.c:1460 msgid "Ignore 'Hide Others'" msgstr "Ignorovať Skryť ostatné" #: ../src/winspector.c:1462 msgid "" "Do not hide the window when issuing the\n" "`HideOthers' command." msgstr "Neskrývať okno pri príkaze Skryť ostatné" #: ../src/winspector.c:1466 msgid "Ignore 'Save Session'" msgstr "Ignorovať Uložiť sedenie" #: ../src/winspector.c:1468 msgid "" "Do not save the associated application in the\n" "session's state, so that it won't be restarted\n" "together with other applications when Window Maker\n" "starts." msgstr "" "Neukladať príslušnú aplikáciu pri ukladaní\n" "sedenia, takže tá nebude automaticky spustená\n" "pri ďalšom štarte Window Makeru." #: ../src/winspector.c:1474 msgid "Emulate application icon" msgstr "Emulovať ikonu aplikácie" #: ../src/winspector.c:1476 msgid "" "Make this window act as an application that provides\n" "enough information to Window Maker for a dockable\n" "application icon to be created." msgstr "" "Umožniť tomuto oknu správať sa ako aplikácia, ktorá\n" "Window Makeru poskytuje dostatok informácií na\n" "vytvorenie ukotviteľnej ikony aplikácie." #: ../src/winspector.c:1482 msgid "Disable language button" msgstr "Odstrániť tlačidlo Jazyk" #: ../src/winspector.c:1484 msgid "Remove the `toggle language' button of the window." msgstr "Odstrániť z okna tlačidlo Prepínanie jazykov." #: ../src/winspector.c:1501 msgid "Miniwindow Image" msgstr "Ikona miniokna" #: ../src/winspector.c:1528 msgid "Icon filename:" msgstr "Súbor ikony:" #: ../src/winspector.c:1541 msgid "Ignore client supplied icon" msgstr "" "Ignorovať ikonu poskytnutú\n" "klientom" #: ../src/winspector.c:1548 msgid "Initial Workspace" msgstr "Počiatočná plocha" #: ../src/winspector.c:1550 msgid "The workspace to place the window when it's first shown." msgstr "Plocha, na ktorú sa umiestni okno pri prvom zobrazení." #: ../src/winspector.c:1556 msgid "Nowhere in particular" msgstr "Ľubovoľná" #: ../src/winspector.c:1574 msgid "Application Attributes" msgstr "Aplikácia" #: ../src/winspector.c:1585 msgid "Start hidden" msgstr "Pri štarte skryť" #: ../src/winspector.c:1587 msgid "Automatically hide application when it's started." msgstr "Automaticky skryť aplikáciu pri štarte." #: ../src/winspector.c:1590 msgid "No application icon" msgstr "Zakázať ikonu aplikácie" #: ../src/winspector.c:1592 msgid "" "Disable the application icon for the application.\n" "Note that you won't be able to dock it anymore,\n" "and any icons that are already docked will stop\n" "working correctly." msgstr "" "Zakázať ikonu aplikácie. Nebudete ju môcť\n" "ukotviť a ikony, ktoré sú už ukotvené\n" "prestanú správne fungovať." #: ../src/winspector.c:1598 msgid "Shared application icon" msgstr "Zdieľať ikonu aplikácie" #: ../src/winspector.c:1600 msgid "" "Use a single shared application icon for all of\n" "the instances of this application.\n" msgstr "" "Použiť jedinú zdieľanú ikonu aplikácie pre\n" "všetky inštancie tejto aplikácie.\n" #: ../src/wmspec.c:277 msgid "out of memory while updating wm hints" msgstr "nedostatok pamäti pri obnovovaní príznakov wm" #: ../src/workspace.c:105 ../src/workspace.c:106 ../src/workspace.c:902 #, c-format msgid "Workspace %i" msgstr "Plocha %i" #: ../src/workspace.c:952 msgid "Workspaces" msgstr "Pracovné plochy" #: ../src/workspace.c:954 msgid "could not create Workspace menu" msgstr "nemožno vytvoriť menu Pracovné plochy" #: ../src/workspace.c:961 msgid "New" msgstr "Nová" #: ../src/workspace.c:962 msgid "Destroy Last" msgstr "Odstrániť poslednú" WindowMaker-0.95.9/po/hy.po0000644000175000017500000017732313642357774012423 00000000000000# WindowMaker armenian translation. # Copyright (C) 2008 Norayr Chilingaryan # This file is distributed under the same license as the Windowmaker package. # Norayr Chilingarian , 2008. # msgid "" msgstr "" "Project-Id-Version: WindowMaker\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-12-14 18:25+0000\n" "PO-Revision-Date: 2008-09-28 02:48+0400\n" "Last-Translator: Norayr Chilingarian \n" "Language: Armenian\n" "Language-Team: Armenian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../src/appicon.c:415 #: ../src/dialog.c:295 #: ../src/dock.c:3335 #: ../src/dockedapp.c:231 #: ../src/main.c:271 #: ../src/rootmenu.c:1854 #: ../src/winspector.c:394 #: ../src/winspector.c:411 msgid "Error" msgstr "Սխալ" #: ../src/appicon.c:416 msgid "Could not open specified icon file" msgstr "Հնարաւոր չէ բացել պատկերակը" #: ../src/appicon.c:417 #: ../src/dialog.c:192 #: ../src/dialog.c:295 #: ../src/dialog.c:725 #: ../src/dialog.c:1797 #: ../src/dock.c:515 #: ../src/dock.c:523 #: ../src/dock.c:547 #: ../src/dock.c:3336 #: ../src/dockedapp.c:232 #: ../src/dockedapp.c:427 #: ../src/main.c:271 #: ../src/rootmenu.c:1858 #: ../src/winspector.c:395 #: ../src/winspector.c:412 msgid "OK" msgstr "Լաւ" #: ../src/appicon.c:445 #: ../src/dock.c:244 msgid "" " will be forcibly closed.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" " ստիպողաբար փակուելու է։\n" "Չպահուած տուեալները կորելու են։\n" "Հաստատէք։" #: ../src/appicon.c:453 #: ../src/dock.c:263 #: ../src/winmenu.c:124 msgid "Kill Application" msgstr "Սպանել յաւելուածը" #: ../src/appicon.c:454 #: ../src/dock.c:264 #: ../src/winmenu.c:126 msgid "Yes" msgstr "Այո" #: ../src/appicon.c:454 #: ../src/dock.c:264 #: ../src/winmenu.c:126 msgid "No" msgstr "Ոչ" #: ../src/appicon.c:484 #: ../src/dock.c:1168 #: ../src/dock.c:3501 msgid "Unhide Here" msgstr "Բացել այստեղ" #: ../src/appicon.c:485 #: ../src/appicon.c:510 #: ../src/dock.c:1170 #: ../src/dock.c:1172 #: ../src/dock.c:3513 #: ../src/winmenu.c:461 msgid "Hide" msgstr "Թաքցնել" #: ../src/appicon.c:486 msgid "Set Icon..." msgstr "Նշել պատկերակը…" #: ../src/appicon.c:487 #: ../src/dock.c:1176 #: ../src/rootmenu.c:248 #: ../src/rootmenu.c:264 #: ../src/winmenu.c:508 msgid "Kill" msgstr "Սպանել" #: ../src/appicon.c:508 #: ../src/dock.c:3511 msgid "Unhide" msgstr "Ապաթաքցնել" #: ../src/application.c:405 #, c-format msgid "recreating missing icon '%s'" msgstr "վերստեղծուում է բացակայող '%s' պատկերակը" #: ../src/defaults.c:930 #: ../src/defaults.c:1148 #, c-format msgid "Domain %s (%s) of global defaults database is corrupted!" msgstr "Ընդհանուր լռելեայնների տուեալների բազայի %s (%s) տիրոյթը վնասուած է" #: ../src/defaults.c:935 #, c-format msgid "could not load domain %s from global defaults database" msgstr "հնարաւոր չէ բեռնել %s տիրոյթը ընդհանուր լռելեայնների տուեալների բազայից" #: ../src/defaults.c:1034 #: ../src/defaults.c:1049 #, c-format msgid "invalid global menu file %s" msgstr "ընդհանուր ցանկի %s նիշքն անվաւեր է" #: ../src/defaults.c:1077 #: ../src/startup.c:761 #: ../src/startup.c:779 #: ../src/startup.c:786 #, c-format msgid "could not read domain \"%s\" from defaults database" msgstr "հնարաւոր չէ կարդալ \"%s\" տիրոյթը լռելեայնների տուեալների բազայից" #: ../src/defaults.c:1123 #: ../src/defaults.c:1237 #: ../src/defaults.c:1278 #: ../src/defaults.c:1334 #, c-format msgid "Domain %s (%s) of defaults database is corrupted!" msgstr "Լռելեայնների տուեալների բազայի %s (%s) տիրոյթը վնասուած է" #: ../src/defaults.c:1137 #: ../src/defaults.c:1257 #: ../src/defaults.c:1314 #: ../src/defaults.c:1344 #, c-format msgid "could not load domain %s from user defaults database" msgstr "հնարաւոր չէ բեռնել %s տիրոյթը օգտատիրոջ լռելեայնների տուեալների բազայից" #: ../src/defaults.c:1167 #, c-format msgid "could not load domain %s from global defaults database (%s)" msgstr "հնարաւոր չէ բեռնել %s տիրոյթը ընդհանուր լռելեայնների (%s) տուեալների բազայից" #: ../src/defaults.c:1304 #: ../src/screen.c:419 #, c-format msgid "could not load logo image for panels: %s" msgstr "հնարաւոր չէ բեռնել %s պատկերակը վահանակների համար" #. --------------------------- Local ----------------------- #: ../src/defaults.c:1553 #: ../src/defaults.c:1692 #: ../src/defaults.c:1812 #: ../src/defaults.c:2290 #: ../src/defaults.c:2307 #: ../src/defaults.c:2352 #: ../src/defaults.c:2399 #: ../src/defaults.c:2872 #: ../src/wdefaults.c:571 #: ../src/wdefaults.c:604 #, c-format msgid "Wrong option format for key \"%s\". Should be %s." msgstr "\"%s\" ստեղնի համար սխալ կարգաւորումների ձեւ։ պիտի լինի %s։" #: ../src/defaults.c:1555 #: ../src/defaults.c:1636 #: ../src/defaults.c:1666 #: ../src/defaults.c:1697 #: ../src/defaults.c:1710 #: ../src/defaults.c:1725 #: ../src/defaults.c:1739 #: ../src/defaults.c:1817 #: ../src/defaults.c:1829 #: ../src/defaults.c:2295 #: ../src/defaults.c:2312 #: ../src/defaults.c:2325 #: ../src/defaults.c:2357 #: ../src/defaults.c:2373 #: ../src/defaults.c:2404 #: ../src/defaults.c:2491 #: ../src/defaults.c:2877 #: ../src/defaults.c:2888 #, c-format msgid "using default \"%s\" instead" msgstr "փոխարէնը օգտագործուում է լռելեայն \"%s\"֊ը" #: ../src/defaults.c:1586 #, c-format msgid "wrong option value for key \"%s\". Should be one of %s" msgstr "\"%s\" ստեղնի կարգաւորման սխալ արժէք։ պիտի լինի %s֊ից մէկը" #: ../src/defaults.c:1631 #, c-format msgid "can't convert \"%s\" to boolean for key \"%s\"" msgstr "հնարաւոր չէ փոխակերպել \"%s\"֊ը բուլեանի՝ \"%s\" ստեղնի համար" #: ../src/defaults.c:1663 #, c-format msgid "can't convert \"%s\" to integer for key \"%s\"" msgstr "հնարաւոր չէ փոխակերպել \"%s\"֊ը ամբողջ թուի՝ \"%s\" ստեղնի համար" #: ../src/defaults.c:1705 #, c-format msgid "Incorrect number of elements in array for key \"%s\"." msgstr "\"%s\" ստեղնի համար սխալ է զանգուածի անդամների քանակը" #: ../src/defaults.c:1720 #, c-format msgid "Wrong value for key \"%s\". Should be Coordinate." msgstr "\"%s\" ստեղնի սխալ արժէք։ պէտք է լինի կոորդինատ։" #: ../src/defaults.c:1735 #, c-format msgid "can't convert array to integers for \"%s\"." msgstr "հնարաւոր չէ փոխակերպել զանգուածը ամբողջ թուերի՝ \"%s\"֊ի համար։" #: ../src/defaults.c:1940 #: ../src/defaults.c:1972 #: ../src/defaults.c:1988 #: ../src/defaults.c:2017 #: ../src/defaults.c:2040 #: ../src/defaults.c:2093 #: ../src/defaults.c:2133 #: ../src/defaults.c:2171 #: ../src/defaults.c:2187 #, c-format msgid "\"%s\" is not a valid color name" msgstr "\"%s\" վաւեր գոյնի անուն չէ" #: ../src/defaults.c:1953 #: ../src/defaults.c:2005 msgid "bad number of arguments in gradient specification" msgstr "արգումենտների քանակի սխալ՝ սահանցման յատկորոշման մէջ" #: ../src/defaults.c:2066 msgid "too few arguments in multicolor gradient specification" msgstr "պակասող արգումենտներ բազմագոյն սահանցման յատկորոշման մէջ" #: ../src/defaults.c:2160 msgid "bad number of arguments in textured gradient specification" msgstr "հիւսուածքի սահանցման յատկորոշման արգումենտների սխալ քանակ" #: ../src/defaults.c:2203 #, c-format msgid "bad opacity value for tgradient texture \"%s\". Should be [0..255]" msgstr "\"%s\" հիւսուածքի սահանցման թափանցիկութեան սխալ արժէք։ պիտի լինի՝ [0..255]" #: ../src/defaults.c:2263 #, c-format msgid "could not initialize library %s" msgstr "%s դարանը չի մեկնարկել" #: ../src/defaults.c:2266 #, c-format msgid "could not find function %s::%s" msgstr "%s::%s ֆունկցիան չի գտնուել" #: ../src/defaults.c:2273 #, c-format msgid "invalid texture type %s" msgstr "հիւսուածքի %s տիպը անվաւեր է" #: ../src/defaults.c:2320 #, c-format msgid "Error in texture specification for key \"%s\"" msgstr "Սխալ հիւսուածքի յատկորոշման մէջ՝ \"%s\" ստեղնի համար" #: ../src/defaults.c:2369 msgid "Wrong type for workspace background. Should be a texture type." msgstr "Տիրոյթի ետնանկարի սխալ տիպ։ Պէտք է լինի հիւսուածքի տիպ։" #: ../src/defaults.c:2417 #, c-format msgid "Wrong type for background of workspace %i. Should be a texture." msgstr "Տիրոյթի ետնանկարի սխալ տիպ՝ %i։ Պէտք է լինի հիւսուածք։" #: ../src/defaults.c:2459 msgid "could not load any usable font!!!" msgstr "հնարաւո՛ր չէ բեռնել ոչ մի տառատեսակ։" #: ../src/defaults.c:2486 #, c-format msgid "could not get color for key \"%s\"" msgstr "հնարաւոր չէ գտնել գոյն՝ \"%s\" ստեղնի համար" #: ../src/defaults.c:2544 #: ../src/rootmenu.c:531 #, c-format msgid "%s: invalid key modifier \"%s\"" msgstr "%s՝ ստեղնի անվաւեր փոփոխիչ \"%s\"" #: ../src/defaults.c:2556 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\"" msgstr "%s՝ ստեղնաշարի կարճատի անվաւեր \"%s\" յատկորոշում" #: ../src/defaults.c:2563 #, c-format msgid "%s:invalid key in shortcut \"%s\"" msgstr "%s՝ անվաւեր ստեղն \"%s\" կարճատում" #: ../src/defaults.c:2588 #, c-format msgid "%s: modifier key %s is not valid" msgstr "%s՝ %s փոփոխիչ ստեղնը անվաւեր է" #: ../src/defaults.c:2620 #, c-format msgid "could not load image in option %s: %s" msgstr "հնարաւոր չէ բեռնել նկար %s՝ %s կարգաւորման մէջ" #: ../src/defaults.c:2737 #, c-format msgid "failed to open bitmap file \"%s\"" msgstr "\"%s\" կէտապատկեր նիշքի բացման անվաւեր" #: ../src/defaults.c:2740 #, c-format msgid "\"%s\" is not a valid bitmap file" msgstr "\"%s\"֊ը վաւեր կէտապատկեր նիշք չէ" #: ../src/defaults.c:2743 #, c-format msgid "out of memory reading bitmap file \"%s\"" msgstr "\"%s\" նիշք կարդալուց յիշողութիւնը սպառուեց" #: ../src/defaults.c:2782 #: ../src/defaults.c:2815 msgid "bad number of arguments in cursor specification" msgstr "արգումենտների անվաւեր քանակ նշիչի յատկորոշման մէջ" #: ../src/defaults.c:2798 #, c-format msgid "unknown builtin cursor name \"%s\"" msgstr "անյայտ նշիչի անուն \"%s\"" #: ../src/defaults.c:2825 #: ../src/defaults.c:2837 #, c-format msgid "could not find cursor bitmap file \"%s\"" msgstr "\"%s\" նշիչի կէտապատկեր նիշքը չի գտնուել" #: ../src/defaults.c:2884 #, c-format msgid "Error in cursor specification for key \"%s\"" msgstr "Սխալ՝ \"%s\" կոճակի համար նշիչի յատկորոշման մէջ" #: ../src/defaults.c:2969 msgid "could not render texture for icon background" msgstr "հնարաւոր չէ նիւթաւորել պատկերակի ետնանկարի հիւսուածքը" #: ../src/defaults.c:3597 #: ../src/defaults.c:3672 #, c-format msgid "Invalid arguments for option \"%s\"" msgstr "\"%s\" յատկութեան համար անվաւեր արգումենտ" #: ../src/defaults.c:3604 #: ../src/defaults.c:3679 #, c-format msgid "Could not find image \"%s\" for option \"%s\"" msgstr "\"%s\" յատկութեան \"%s\" պատկերը չգտնուեց" #: ../src/defaults.c:3610 #: ../src/defaults.c:3687 #, c-format msgid "Could not load image \"%s\" for option \"%s\"" msgstr "հնարաւոր չէ բեռնել \"%s\" յատկութեան \"%s\" պատկերը" #: ../src/defaults.c:3622 msgid "Invalid split sizes for switch panel back image." msgstr "Փոխարկչի վահանակի ետնանկարի անվաւեր բաժանիչի չափեր" #: ../src/defaults.c:3695 #, c-format msgid "Invalid number of arguments for option \"%s\"" msgstr "անվաւեր քանակի արգումենտներ \"%s\" յատկութեան համար" #: ../src/dialog.c:147 msgid "Save workspace state" msgstr "Յիշել տիրոյթների վիճակը" #: ../src/dialog.c:192 #: ../src/dialog.c:732 #: ../src/dock.c:547 #: ../src/dockedapp.c:432 #: ../src/rootmenu.c:198 #: ../src/rootmenu.c:248 #: ../src/rootmenu.c:264 msgid "Cancel" msgstr "Չեղարկել" #: ../src/dialog.c:290 msgid "Could not open directory \"%s\":\n%s" msgstr "Հնարաւոր չէ բացել \"%s\"՝ \n%s պանակը" #: ../src/dialog.c:345 msgid "Could not load image file " msgstr "Հնարաւոր չէ բեռնել նկարի նիշքը" #: ../src/dialog.c:659 msgid "Directories" msgstr "Պանակներ" #: ../src/dialog.c:668 msgid "Icons" msgstr "Պատկերակներ" #: ../src/dialog.c:701 msgid "Preview" msgstr "Նախադիտում" #: ../src/dialog.c:714 msgid "File Name:" msgstr "Նիշքի անունը՝" #: ../src/dialog.c:738 msgid "Choose File" msgstr "Ընտրել նիշք" #: ../src/dialog.c:757 #: ../src/dialog.c:759 msgid "Icon Chooser" msgstr "Պատկերակի ընտրիչ" #: ../src/dialog.c:1197 #: ../src/dialog.c:1305 #, c-format msgid "Version %s" msgstr "Տարբերակ %s" #: ../src/dialog.c:1303 msgid "Window Manager for X" msgstr "X պատուհանների կառավարիչ" #: ../src/dialog.c:1326 #, c-format msgid "Using visual 0x%x: %s %ibpp " msgstr "Կիրառուում է 0x%x: %s %ibpp տեսողականը" #: ../src/dialog.c:1334 msgid "(32 thousand colors)\n" msgstr "(32 հազար գոյն)\n" #: ../src/dialog.c:1337 msgid "(64 thousand colors)\n" msgstr "(64 հազար գոյն)\n" #: ../src/dialog.c:1341 msgid "(16 million colors)\n" msgstr "(16 միլիոն գոյն)\n" #: ../src/dialog.c:1344 #, c-format msgid "(%d colors)\n" msgstr "(%d գոյն)\n" #: ../src/dialog.c:1354 #, c-format msgid "Total allocated memory: %i kB. Total memory in use: %i kB.\n" msgstr "Ընդհանուր յատկացուած յիշողութիւնը՝ %i կբ․ Ընդհանուր օգտագործուող յիշողութիւնը՝ %i կբ.\n" #: ../src/dialog.c:1283 msgid "Image formats: " msgstr "Պատկերային ձեւաչափերը՝ " #: ../src/dialog.c:1368 msgid "" "\n" "Additional support for: " msgstr "" "\n" "Յաւելեալ աջակցութիւն՝ " #: ../src/dialog.c:1385 msgid " and " msgstr " եւ " #: ../src/dialog.c:1395 msgid "" "\n" "Sound disabled" msgstr "" "\n" "Ձայնն կասեցուած է" #: ../src/dialog.c:1397 msgid "" "\n" "Sound enabled" msgstr "" "\n" "Ձայնը միացուած է" #: ../src/dialog.c:1402 msgid ", VirtualDesktop enabled" msgstr ", ԿարծականՏիրոյթը միացուած է" #: ../src/dialog.c:1404 msgid ", VirtualDesktop disabled" msgstr ", ԿարծականՏիրոյթը կասեցուած է" #: ../src/dialog.c:1408 msgid "\n" msgstr "\n" #: ../src/dialog.c:1410 msgid "Solaris " msgstr "Սոլարիս" #: ../src/dialog.c:1412 msgid "Xinerama: " msgstr "Զիներամա՝" #: ../src/dialog.c:1446 msgid "Info" msgstr "Տեղեկութիւններ" #: ../src/dialog.c:1470 msgid "Merry Christmas!" msgstr "Շնորհաւոր Սուրբ Ծնունդ" #: ../src/dialog.c:1417 msgid "" " Window Maker 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.\n" "\n" " Window Maker 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.\n" "\n" " You should have received a copy of the GNU General Public License along " "with this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin Street, Fifth Floor, Boston, MA02110-1301 USA." msgstr "" " Window Maker֊ն ազատ ծրագրային ապահովում է; դուք կարող էք փոփոխել եւ/կամ " "տարածել այն ըստ Ազատ Ծրագրային Ապահովման Հիմնադրամի (Free Software Foundation) " "կողմից մշակուած GNU Ազատ ԾԱ Արտօնագրի 2֊րդ " "կամ (ըստ Ձեր ցանկութեան) իւրաքանչիւր հետագայ տարբերակի։\n" "\n" " Window Maker-ը տարածուում է այն յոյսով, որ օգտակար կը լինի, " "բայց ԱՌԱՆՑ ՈՐԵՒԷ ԵՐԱՇԽԻՔ; նոյնիսկ առանց ենթադրուող ԱՌԵՒՏՐԱՅԻՆ կամ" "ՈՐՈՇԱԿԻ ՆՊԱՏԱԿԻ ԴԷՊՔՈՒՄ ԿԻՐԱՌԵԼԻ լինելու երաշխիքի։ " "Տես GNU Ազատ ԾԱ Արտօնագիրն մանրամասների համար։\n" " Դուք պէտք ա որ GNU Ազատ ԾԱ Արտօնագիրը ստացած լինէիք այս յաւելուածի հետ։ " "Եթէ ոչ, դիմէք Ազատ ԾԱ֊ի Հիմնադրամ՝ " "Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA " "02110-1301, USA." #: ../src/dialog.c:1564 msgid "Legal" msgstr "Իրաւական" #: ../src/dialog.c:1720 msgid "cannot open connection for crashing dialog panel. Aborting." msgstr "հնարաւոր չէ կապ հաստատել խափանուող երկխօսութեան վահանակի համար։ Փորձերը դադարեցւում են։" #: ../src/dialog.c:1746 msgid "Fatal error" msgstr "Վճռորոշ սխալ" #: ../src/dialog.c:1757 #, c-format msgid "" "Window Maker received signal %i\n" "(%s)." msgstr "" "Window Maker֊ը ստացել է %i ազդանշանը\n" "(%s)." #: ../src/dialog.c:1760 #, c-format msgid "Window Maker received signal %i." msgstr "Window Maker֊ը ստացել է %i ազդանշանը" #: ../src/dialog.c:1778 msgid "What do you want to do now?" msgstr "Հիմա ի՞նչ անենք" #: ../src/dialog.c:1784 msgid "Select action" msgstr "Ընտրէք գործողութիւն" #: ../src/dialog.c:1785 msgid "Abort and leave a core file" msgstr "Դադարեցնել աշխատանքն ու պարպել յաւելուածի յիշողութեան նիշքը։" #: ../src/dialog.c:1786 msgid "Restart Window Maker" msgstr "Վերագործարկել Window Maker֊ը" #: ../src/dialog.c:1787 msgid "Start alternate window manager" msgstr "Միացնել այլ պատուհանային կառավարիչ" #: ../src/dialog.c:1965 msgid "" "Window Maker is part of the GNUstep project.\n" "The GNUstep project aims to create a free\n" "implementation of the OpenStep(tm) specification\n" "which is a object-oriented framework for\n" "creating advanced graphical, multi-platform\n" "applications. Additionally, a development and\n" "user desktop enviroment will be created on top\n" "of the framework. For more information about\n" "GNUstep, please visit: www.gnustep.org" msgstr "" "Window Maker֊ը՝ GNUstep նախագծի մասն է։\n" "GNUstep նախագիծը միտուած է ստեղծելու\n" "OpenStep(tm) յատկորոշման ազատ իրականացում։\n" "OpenStep(tm)֊ը օբյեկտ կողմնորոշուած նախագծման համակարգ է\n" "առաջադէմ գրաֆիկական, բազմահարթակ ԾԱ ստեղծելու համար։\n" "Նախատեսուած է նաեւ նախագծման եւ աշխատանքային միջավայրի\n" "ստեղծում այս համակարգի հիման վրայ։\n" "GNUstep֊ի վերաբերող այլ տեղեկութիւնները\n" "կարող էք գտնել www.gnustep.org կայքում։" #: ../src/dialog.c:1988 msgid "About GNUstep" msgstr "GNUstep֊ի մասին" #: ../src/dock.c:193 #, c-format msgid "Type the name for workspace %i:" msgstr "Ներմուծէք %i տիրոյթի անուն՝" #: ../src/dock.c:194 #: ../src/dock.c:1132 #: ../src/dock.c:1135 #: ../src/dock.c:3419 msgid "Rename Workspace" msgstr "Վերանուանել Տիրոյթը" #: ../src/dock.c:509 #: ../src/dock.c:517 msgid "Warning" msgstr "Զգուշացում" #: ../src/dock.c:510 msgid "Some icons cannot be made omnipresent. Please make sure that no other icon is docked in the same positions on the other workspaces and the Clip is not full in some workspace." msgstr "Որոշ պատկերակները չեն կարող դարձուել ամէն տիրոյթում հասանելի։ Համոզուէք որ ոչ մի այլ պատկերակ յարակցուած չէ նոյն դիրքում այլ տիրոյթներում եւ որ Ամրակը չի լրացել որեւէ տիրոյթում։" #: ../src/dock.c:518 msgid "Icon cannot be made omnipresent. Please make sure that no other icon is docked in the same position on the other workspaces and the Clip is not full in some workspace." msgstr "Պատկերակը չի կարող դարձուել ամէն տիրոյթում հասանելի։ Համոզուէք որ ոչ մի այլ պատկերակ յարակցուած չէ նոյն դիրքում այլ տիրոյթներում եւ որ Ամրակը չի լրացել որեւէ տիրոյթում։" #: ../src/dock.c:545 msgid "Workspace Clip" msgstr "Տիրոյթի Ամրակ" #: ../src/dock.c:546 msgid "All selected icons will be removed!" msgstr "Բոլոր ընտրուած պատկերակները հեռացուելու են" #: ../src/dock.c:598 #: ../src/dock.c:1147 #: ../src/dock.c:1149 #: ../src/dock.c:3455 msgid "Keep Icon" msgstr "Պահել Պատկերակը" #: ../src/dock.c:599 #: ../src/dock.c:2139 #: ../src/dock.c:2276 msgid "Type the command used to launch the application" msgstr "Ներմուծէք յաւելուածը գործարկող հրամանը" #: ../src/dock.c:954 #, c-format msgid "could not launch application %s\n" msgstr "հնարաւոր չէ գործարկել %s յաւելուածը\n" #: ../src/dock.c:1010 msgid "could not create workspace submenu for Clip menu" msgstr "հնարաւոր չէ ստեղծել Ամրակի ցանկի տիրոյթի ենթացանկ" #: ../src/dock.c:1069 msgid "could not create options submenu for Clip menu" msgstr "հնարաւոր չէ ստեղծել Ամրակի ցանկի յատկութիւնների ենթացանկ" #: ../src/dock.c:1073 #: ../src/dock.c:1121 msgid "Keep on Top" msgstr "Պահել վերեւից" #: ../src/dock.c:1079 msgid "Collapsed" msgstr "Կոծկուած" #: ../src/dock.c:1085 msgid "Autocollapse" msgstr "Ինքնին կոծկուել" #: ../src/dock.c:1091 msgid "Autoraise" msgstr "Ինքնին բացուել" #: ../src/dock.c:1097 msgid "Autoattract Icons" msgstr "Ինքնին գրաւել պատկերակները" #: ../src/dock.c:1127 msgid "Clip Options" msgstr "Ամրակի յատկութիւններ" #: ../src/dock.c:1137 msgid "Selected" msgstr "Ընտրուած" #: ../src/dock.c:1142 #: ../src/dock.c:1145 #: ../src/dock.c:3446 msgid "Select All Icons" msgstr "Ընտրել բոլոր պատկերակները" #: ../src/dock.c:1151 #: ../src/dock.c:1153 #: ../src/dock.c:3463 msgid "Move Icon To" msgstr "Տեղաշարժել Պատկերակը դէպի" #: ../src/dock.c:1158 #: ../src/dock.c:1161 #: ../src/dock.c:3474 msgid "Remove Icon" msgstr "Հեռացնել Պատկերակը" #: ../src/dock.c:1163 msgid "Attract Icons" msgstr "Գրաւել Պատկերակները" #: ../src/dock.c:1166 msgid "Launch" msgstr "Գործարկել" #: ../src/dock.c:1174 msgid "Settings..." msgstr "Յատկութիւններ…" #: ../src/dock.c:1538 #: ../src/dock.c:1645 #, c-format msgid "bad value in docked icon state info %s" msgstr "յարակցուած պատկերակի վիճակի %s անվաւեր արժէք" #: ../src/dock.c:1653 #, c-format msgid "bad value in docked icon position %i,%i" msgstr "յարակցուած պատկերակի տեղայնութեան %i,%i անվաւեր արժէք" #: ../src/dock.c:1673 #, c-format msgid "bad value in dock state info:%s" msgstr "յարակցիչի վիճակի տեղեկատուութեան անվաւեր արժէք՝ %s" #: ../src/dock.c:1923 msgid "there are too many icons stored in dock. Ignoring what doesn't fit" msgstr "չափազանց շատ պատկերակներ են յարակցուած։ Տեղ չանողները արհամարհուում են։" #. icon->forced_dock = 1; #: ../src/dock.c:2138 #: ../src/dock.c:2275 msgid "Dock Icon" msgstr "Յարակցիչ Պատկերակ" #: ../src/dock.c:3333 #, c-format msgid "Could not execute command \"%s\"" msgstr "Հնարաւոր չէ գործարկել \"%s\" հրամանը" #: ../src/dock.c:3425 msgid "Toggle Omnipresent" msgstr "Ցուցադրել բոլոր տիրոյթներում" #: ../src/dock.c:3430 #: ../src/winmenu.c:414 #: ../src/winspector.c:1383 msgid "Omnipresent" msgstr "Ցուցադրել բոլոր տիրոյթներում" #: ../src/dock.c:3444 msgid "Unselect All Icons" msgstr "Ապանշել Բոլոր Պատկերակները" #: ../src/dock.c:3453 msgid "Keep Icons" msgstr "Պահել Պատկերակները" #: ../src/dock.c:3461 msgid "Move Icons To" msgstr "Տեղաշարժել Պատկերակները դէպի" #: ../src/dock.c:3472 msgid "Remove Icons" msgstr "Հեռացնել Պատկերակները" #: ../src/dock.c:3503 msgid "Bring Here" msgstr "Բերել Այստեղ" #: ../src/dockedapp.c:150 #, c-format msgid "could not find icon %s, used in a docked application" msgstr "հնարաւոր չէ գտնել %s պատկերակը, որն օգտագործուում է յարակցուած յաւելուածում" #: ../src/dockedapp.c:230 #, c-format msgid "Could not open specified icon file: %s" msgstr "Հնարաւոր չէ բացել նշուած պատկերակի նիշքը՝ %s" #: ../src/dockedapp.c:232 msgid "Ignore" msgstr "Անտեսել" #: ../src/dockedapp.c:334 msgid "Start when Window Maker is started" msgstr "Գործարկել Window Maker֊ի հետ միասին" #: ../src/dockedapp.c:341 msgid "Lock (prevent accidental removal)" msgstr "Ամրացնել (կանխել պատահական հեռացումը)" #: ../src/dockedapp.c:345 msgid "Application path and arguments" msgstr "Յաւելուածի ուղին եւ արգումենտները" #: ../src/dockedapp.c:358 msgid "Command for middle-click launch" msgstr "Միջին կտոցով գործարկելու հրահանգ" #: ../src/dockedapp.c:372 #, c-format msgid "%s will be replaced with current selection" msgstr "%s֊ը փոխարինուելու է ընթացիկ նշուածով" #: ../src/dockedapp.c:377 msgid "Command for files dropped with DND" msgstr "Հրահանգ Քաշել֊Գցելով նիշքերի համար" #: ../src/dockedapp.c:391 #, c-format msgid "%d will be replaced with the file name" msgstr "%d֊ն փոխարինուելու է նիշքի անունով" #: ../src/dockedapp.c:395 msgid "DND support was not compiled in" msgstr "Զետեղելու հնարաւորութիւնը կազմարկուած չէ" #: ../src/dockedapp.c:400 msgid "Icon Image" msgstr "Պատկերակի Նկար" #: ../src/dockedapp.c:414 #: ../src/winspector.c:1521 msgid "Browse..." msgstr "Զննել…" #: ../src/dockedapp.c:475 msgid "Docked Application Settings" msgstr "Յարակցուած Յաւելուածերի Յատկութիւններ" #: ../src/framewin.c:647 #: ../src/framewin.c:742 #: ../src/menu.c:463 #: ../src/texture.c:594 #, c-format msgid "could not render texture: %s" msgstr "հնարաւոր չէ նիւթաւորել %s հիւսուածքը" #: ../src/framewin.c:670 #: ../src/framewin.c:681 #: ../src/framewin.c:697 #: ../src/framewin.c:708 #: ../src/framewin.c:715 #: ../src/framewin.c:722 #: ../src/icon.c:360 #: ../src/menu.c:492 #, c-format msgid "error rendering image:%s" msgstr "%s պատկեր նիւթաւորելու սխալ" #: ../src/framewin.c:775 #, c-format msgid "error rendering image: %s" msgstr "%s պատկեր նիւթաւորելու սխալ" #: ../src/icon.c:239 #: ../src/wdefaults.c:443 #, c-format msgid "error loading image file \"%s\": %s" msgstr "\"%s\"՝ %s պատկերային նիշքի բեռնման սխալ" #: ../src/icon.c:503 #: ../src/icon.c:512 #, c-format msgid "could not create directory %s" msgstr "հնարաւոր չէ ստեղծել %s պանակը" #: ../src/icon.c:782 #, c-format msgid "could not find default icon \"%s\"" msgstr "հնարաւոր չէ գտնել \"%s\" լռելեայն պատկերակը" #: ../src/icon.c:788 #, c-format msgid "could not load default icon \"%s\":%s" msgstr "հնարաւոր չէ բեռնել \"%s\"՝ %s լռելեայն պատկերակը" #: ../src/main.c:220 msgid "failed to restart Window Maker." msgstr "Window Maker֊ի վերագործարկումը խափանուեց" #: ../src/main.c:223 #, c-format msgid "could not exec %s" msgstr "հնարաւոր չէ գործարկել %s" #: ../src/main.c:269 msgid "Could not execute command: " msgstr "Հնարաւոր չէ գործարկել հրամանը՝" #: ../src/main.c:426 #, c-format msgid "%s aborted.\n" msgstr "%s֊ը խափանուեց։\n" #: ../src/main.c:437 #, c-format msgid "Usage: %s [options]\n" msgstr "Օգտագործում՝ %s [options]\n" #: ../src/main.c:438 msgid "The Window Maker window manager for the X window system" msgstr "Window Maker պատուհանների կառավարիչ Էքս պատուհանային համակարգի համար" #: ../src/main.c:440 msgid " -display host:dpy\tdisplay to use" msgstr " -display host:dpy\tնշել դիսպլէյը" #: ../src/main.c:442 msgid " --no-cpp \t\tdisable preprocessing of configuration files" msgstr " --no-cpp \t\tկասեցնել կարգաւորման նիշքերի նախամշակումը" #: ../src/main.c:444 msgid " --no-dock\t\tdo not open the application Dock" msgstr " --no-dock\t\tչբացել յաւելուածերի Յարակցիչը" #: ../src/main.c:445 msgid " --no-clip\t\tdo not open the workspace Clip" msgstr " --no-clip\t\tչբացել տիրոյթի Ամրակը" #: ../src/main.c:446 msgid " --no-autolaunch\tdo not autolaunch applications" msgstr " --no-autolaunch\tյաւելուածերն ինքաշխատօրէն չգործարկել" #: ../src/main.c:447 msgid " --dont-restore\t\tdo not restore saved session" msgstr " --dont-restore\t\tչվերականգնել պահուած նիստը" #: ../src/main.c:449 msgid " --locale locale\tlocale to use" msgstr " --locale locale\tտարածաշրջանի կարգաւորումներ" #: ../src/main.c:451 msgid " --create-stdcmap\tcreate the standard colormap hint in PseudoColor visuals" msgstr " --create-stdcmap\tստեղծել ստանդարտ գունային քարտէզի ակնարկ PseudoColor տեսողականներում" #: ../src/main.c:452 msgid " --visual-id visualid\tvisual id of visual to use" msgstr " --visual-id visualid\tտեսողականի համարը" #: ../src/main.c:453 msgid " --static\t\tdo not update or save configurations" msgstr " --static\t\tչթարմացնել կամ չպահել կարգաւորումները" #: ../src/main.c:454 msgid " --no-polling\t\tdo not periodically check for configuration updates" msgstr " --no-polling\t\tպարբերաբար չստուգել կարաւորումների թարմացումները" #: ../src/main.c:456 msgid " --synchronous\t\tturn on synchronous display mode" msgstr " --synchronous\t\tմիացնել սինքրոն ցուցադրման ռեժիմ" #: ../src/main.c:458 msgid " --version\t\tprint version and exit" msgstr " --version\t\tտպել վարկածն ու դուրս գալ" #: ../src/main.c:459 msgid " --help\t\t\tshow this message" msgstr " --help\t\t\tցուցադրել այս ձեռնարկը" #: ../src/main.c:473 #, 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:478 #, c-format msgid "could not find user GNUstep directory (%s)." msgstr "հնարաւոր չէ գտնել օգտատիրոջ GNUstep պանակը (%s)։" #: ../src/main.c:481 msgid "There was an error while creating GNUstep directory, please make sure you have installed Window Maker correctly and run wmaker.inst" msgstr "GNUstep պանակի ստեղծումը խափանուեց, համոզուէք որ ճիշտ էք տեղակայել էք Window Maker֊ը եւ գործարկէք wmaker.inst հրամանը" #: ../src/main.c:484 #, c-format msgid "%s directory created with default configuration." msgstr "%s պանակը ստեղծուած է լռելեայն կարգաւորումներով։" #: ../src/main.c:506 #: ../src/main.c:511 #, c-format msgid "%s:could not execute initialization script" msgstr "%s՝ հնարաւոր չէ գործարկել մեկնարկման սկրիպտը" #: ../src/main.c:533 #: ../src/main.c:538 #, c-format msgid "%s:could not execute exit script" msgstr "%s՝ հնարաւոր չէ գործարկել ելքի սկրիպտը" #: ../src/main.c:622 #: ../src/main.c:722 #: ../src/main.c:730 #: ../src/main.c:738 #: ../src/main.c:758 #, c-format msgid "too few arguments for %s" msgstr "պակասող արգումենտներ %s֊ի համար" #: ../src/main.c:742 #, c-format msgid "bad value for visualid: \"%s\"" msgstr "\"%s\" տեսողականի id֊ի անվաւեր արժէք" #: ../src/main.c:766 #, c-format msgid "%s: invalid argument '%s'\n" msgstr "%s՝ անվաւեր արգումենտ '%s'\n" #: ../src/main.c:767 #, c-format msgid "Try '%s --help' for more information\n" msgstr "Փորձէք '%s --help' տեղեկութիւնների համար\n" #: ../src/main.c:802 msgid "X server does not support locale" msgstr "Էքս սպասարկիչը չի սատարում ընտրուած տարածաշրջանի կարգաւորումները" #: ../src/main.c:806 msgid "cannot set locale modifiers" msgstr "հնարաւոր չէ ստեղծել տարածաշրջանի փոփոխիչները" #: ../src/main.c:822 #, c-format msgid "could not open display \"%s\"" msgstr "հնարաւոր չէ բացել \"%s\" դիսպլէյը" #: ../src/menu.c:1276 msgid "could not grab keyboard" msgstr "հնարաւոր չէ գտնել ստեղնաշարը" #: ../src/menu.c:2615 #, c-format msgid "bad value in menus state info: %s" msgstr "ցանկերի վիճակի տեղեկատուութեան անվաւեր արժէք՝ %s" #: ../src/misc.c:65 #, c-format msgid "could not define value for %s for cpp" msgstr "հնարաւոր չէ որոշել %s֊ի արժէքը cpp կանխազննչի համար" #: ../src/misc.c:95 #, c-format msgid "could not get password entry for UID %i" msgstr "հնարաւոր չէ ստանալ ծածկագիրը %i UID֊ի համար" #: ../src/misc.c:120 #, c-format msgid "your machine is misconfigured. HOSTNAME is set to %s" msgstr "ձեր մեքենան սխալ է կարգաւորուած։ որպէս HOSTNAME նշուած է՝ %s" #: ../src/misc.c:126 #, c-format msgid "your machine is misconfigured. HOST is set to %s" msgstr "ձեր մեքենան սխալ է կարգաւորուած։ որպէս HOST նշուած է՝ %s" #: ../src/misc.c:621 msgid "Program Arguments" msgstr "յաւելուածի արգումենտներ" #: ../src/misc.c:622 msgid "Enter command arguments:" msgstr "Ներմուծէք գործարկուող յաւելուածի արգումենտները՝" #: ../src/misc.c:736 #: ../src/misc.c:874 #, c-format msgid "out of memory during expansion of \"%s\"" msgstr "յիշողութիւնը լրացաւ \"%s\"֊ի աւելացման ընթացքում" #: ../src/misc.c:790 msgid "out of memory during expansion of \"%w\"" msgstr "յիշողութիւնը լրացաւ \"%w\"֊ի աւելացման ընթացքում" #: ../src/misc.c:808 msgid "out of memory during expansion of \"%W\"" msgstr "յիշողուըիւնը լրացաւ \"%W\"֊ի աւելացման ընթացքում" #: ../src/misc.c:824 #, c-format msgid "out of memory during expansion of \"%a\"" msgstr "յիշողութիւնը լրացաւ \"%a\"֊ի աւելացման ընթացքում" #: ../src/misc.c:853 #, c-format msgid "out of memory during expansion of \"%d\"" msgstr "յիշողութիւնը լրացաւ \"%d\"֊ի աւելացման ընթացքում" #: ../src/misc.c:867 msgid "selection not available" msgstr "նշուածը գոյութիւն չունի" #: ../src/misc.c:911 #: ../src/misc.c:917 #, c-format msgid "bad window name value in %s state info" msgstr "սխալ պատուհանի անուան արժէք %s վիճակի տեղեկատուութեան մէջ" #: ../src/misc.c:1156 msgid "could not send message to background image helper" msgstr "հնարաւոր չէ հաղորդակցութիւն ուղարկել ետնանկարի օժանդակողին" #: ../src/pixmap.c:235 #, c-format msgid "could not load mask bitmap file \"%s\". Won't use mask" msgstr "հնարաւոր չէ բեռնել \"%s\" կէտապատկեր նիշքը։ Դիմակ չի օգտագործուի" #: ../src/resources.c:44 #, c-format msgid "could not parse color \"%s\"" msgstr "հնարաւոր չէ հասկանալ \"%s\" գոյնը" #: ../src/resources.c:48 #, c-format msgid "could not allocate color \"%s\"" msgstr "հնարաւոր չէ յատկացնել \"%s\" գոյնը" #: ../src/rootmenu.c:196 #: ../src/rootmenu.c:198 msgid "Exit" msgstr "Ելք" #: ../src/rootmenu.c:197 msgid "Exit window manager?" msgstr "Դո՞ւրս գալ" #: ../src/rootmenu.c:245 msgid "Close X session" msgstr "Փակել X նիստը" #: ../src/rootmenu.c:246 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:248 #: ../src/winmenu.c:501 msgid "Close" msgstr "Փակել" #: ../src/rootmenu.c:261 msgid "Kill X session" msgstr "Սպանել X նիստը" #: ../src/rootmenu.c:262 msgid "" "Kill Window System session?\n" "(all applications will be closed)" msgstr "" "Սպանե՞լ նիստը\n" "(բոլոր յաւելուածերը կը փակուեն)" #: ../src/rootmenu.c:544 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\" for entry %s" msgstr "%s՝ անվաւեր ստեղնաշարի կարճատի յատկորոշում \"%s\"՝ %s ֊ի համար" #: ../src/rootmenu.c:552 #, c-format msgid "%s:invalid key in shortcut \"%s\" for entry %s" msgstr "%s՝ անվաւեր ստեղն \"%s\" կարճատում %s֊ի համար" #: ../src/rootmenu.c:605 #, c-format msgid "%s: unmatched '\"' in menu file" msgstr "%s՝ չհամապատասխանող '\"' ցանկի նիշքում" #: ../src/rootmenu.c:655 #, c-format msgid "%s: missing command" msgstr "%s՝ բացակայող հրահանգ" #: ../src/rootmenu.c:687 #, c-format msgid "invalid OPEN_MENU specification: %s" msgstr "անվաւեր OPEN_MENU յատկորոշում՝ %s" #: ../src/rootmenu.c:738 #, c-format msgid "%s:could not stat menu" msgstr "%s՝ հնարաւոր չէ գտնել ցանկը" #: ../src/rootmenu.c:746 #, c-format msgid "%s:could not stat menu:%s" msgstr "%s՝ հնարաւոր չէ գտնել ցանկը՝ %s" #: ../src/rootmenu.c:764 #, c-format msgid "too many parameters in OPEN_MENU: %s" msgstr "չափազանց շատ հարաչափ OPEN_MENU֊ում՝ %s" #: ../src/rootmenu.c:808 msgid "There are more than one WORKSPACE_MENU commands in the applications menu. Only one is allowed." msgstr "Աւելի քան մէկ WORKSPACE_MENU հրահանգ յաւելուածերի ցանկում։ Միայն մէկն է հնարաւոր։" #: ../src/rootmenu.c:842 msgid "There are more than one WINDOWS_MENU commands in the applications menu. Only one is allowed." msgstr "Աւելի քան մէկ WINDOWS_MENU հրահանգ յաւելուածերի ցանկում։ Միայն մէկն է հնարաւոր։" #: ../src/rootmenu.c:847 msgid "Window List" msgstr "Պատուհանների ցանկ" #: ../src/rootmenu.c:876 #: ../src/rootmenu.c:894 #: ../src/rootmenu.c:904 #, c-format msgid "%s:missing parameter for menu command \"%s\"" msgstr "%s՝ բացակայող հարաչափ \"%s\" ցանկի հրահանգի համար" #: ../src/rootmenu.c:972 #, c-format msgid "%s:unknown command \"%s\" in menu config." msgstr "%s՝ անյայտ հրահանգ \"%s\" ցանկի կարգաւորումներում։" #: ../src/rootmenu.c:980 #, c-format msgid "%s:can't add shortcut for entry \"%s\"" msgstr "%s՝ հնարաւոր չէ աւելացնել կարճատ \"%s\"֊ի համար" #: ../src/rootmenu.c:1117 #, c-format msgid "%s:maximal line size exceeded in menu config: %s" msgstr "%s՝ առաւելագոյն տողի չափը լրացած է ցանկի կարգաւորումներում՝ %s" #: ../src/rootmenu.c:1139 #: ../src/rootmenu.c:1232 #: ../src/rootmenu.c:1336 #, c-format msgid "%s:missing command in menu config: %s" msgstr "%s՝ ցանկի կարգաւորումներում պակասող հրահանգ՝ %s" #: ../src/rootmenu.c:1169 #, c-format msgid "%s:syntax error in menu file:END declaration missing" msgstr "%s՝ շարահիւսական սխալ ցանկի նիշքում՝ բացակայում է END֊ի յայտարարութիւնը" #: ../src/rootmenu.c:1198 #: ../src/rootmenu.c:1300 msgid "could not make arguments for menu file preprocessor" msgstr "հնարաւոր չէ ստեղծել արգումենտներ ցանկի նիշքի նախամշակիչի համար" #: ../src/rootmenu.c:1205 #: ../src/rootmenu.c:1308 #, c-format msgid "%s:could not open/preprocess menu file" msgstr "%s՝ հնարաւոր չէ բացել/նախամշակել ցանկի նիշքը" #: ../src/rootmenu.c:1217 #: ../src/rootmenu.c:1321 #, c-format msgid "%s:could not open menu file" msgstr "%s՝ հնարաւոր չէ բացել ցանկի նիշքը" #: ../src/rootmenu.c:1244 #, c-format msgid "%s:invalid menu file. MENU command is missing" msgstr "%s՝ անվաւեր ցանկի նիշք։ MENU հրահանգը բացակայում է։" #: ../src/rootmenu.c:1253 msgid "error reading preprocessed menu data" msgstr "սխալ նախամշակուած ցանկի տուեալներն ընթերցելիս" #: ../src/rootmenu.c:1348 #, c-format msgid "%s:no title given for the root menu" msgstr "%s՝ որոշուած չի վերնագիր հիմնական ցանկի համար" #: ../src/rootmenu.c:1439 #: ../src/rootmenu.c:1512 #: ../src/rootmenu.c:1553 #, c-format msgid "out of memory while constructing directory menu %s" msgstr "յիշողութիւնը լրացաւ %s պանակների ցանկ կազմելիս" #: ../src/rootmenu.c:1449 #, c-format msgid "%s:could not stat file \"%s\" in menu directory" msgstr "%s՝ հնարաւոր չէ գտնել \"%s\" նիշքը ցանկի պանակում" #: ../src/rootmenu.c:1607 msgid "Commands" msgstr "Հրահանգներ" #: ../src/rootmenu.c:1610 msgid "Restart" msgstr "Վերագործարկում" #: ../src/rootmenu.c:1611 msgid "Exit..." msgstr "Ելք…" #: ../src/rootmenu.c:1656 #, c-format msgid "could not find menu file \"%s\" referenced in WMRootMenu" msgstr "հնարաւոր չէ գտնել WMRootMenu֊ում նշուած \"%s\" ցանկի նիշքը" #: ../src/rootmenu.c:1663 #, c-format msgid "could not access menu \"%s\" referenced in WMRootMenu" msgstr "հնարաւոր չէ դիմել WMRootMenu֊ում նշուած \"%s\" ցանկին" #: ../src/rootmenu.c:1674 #, c-format msgid "using default menu file \"%s\" as the menu referenced in WMRootMenu could not be found " msgstr "կօգտագործուի \"%s\" լռելեայն ցանկի նիշքը որովհետեւ WMRootMenu֊ում նշուած ցանկը չի գտնուել" #: ../src/rootmenu.c:1697 #: ../src/rootmenu.c:1773 #, c-format msgid "%s:format error in root menu configuration \"%s\"" msgstr "%s՝ ձեւաչափի սխալ \"%s\" հիմնական ցանկի կարգաւորումներում" #: ../src/rootmenu.c:1855 msgid "The applications menu could not be loaded. Look at the console output for a detailed description of the errors." msgstr "Հնարաւոր չէ բեռնել յաւելուածերի ցանկը։ Զննէք կոնսոլի տեքստը սխալի մասին մանրամասնութիւնները գտնելու համար" #: ../src/screen.c:709 #, c-format msgid "could not initialize graphics library context: %s" msgstr "հնարաւոր չէ մեկնարկել գրաֆիկական դարանի ենթատեքստ՝ %s" #: ../src/screen.c:737 msgid "could not initialize WINGs widget set" msgstr "հնարաւոր չէ մեկնարկել WINGs վիջեթները" #: ../src/screen.c:1146 #, c-format msgid "could not save session state in %s" msgstr "հնարաւոր չէ պահել նիստի վիճակը %s֊ում" #: ../src/session.c:183 #: ../src/wdefaults.c:589 #: ../src/winspector.c:459 #, c-format msgid "can't convert \"%s\" to boolean" msgstr "հնարաւոր չէ փոխակերպել \"%s\"֊ը բուլեանի" #: ../src/session.c:1018 msgid "out of memory while saving session state" msgstr "յիշողութիւնը լրացաւ նիստի վիճակը պահելիս" #: ../src/session.c:1101 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:1239 msgid "connection to the session manager was lost" msgstr "նիստի կառավարչի հետ կապն ընդհատուեց" #: ../src/stacking.c:81 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:771 #, 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:800 msgid "XKB is not supported. KbdModeLock is automatically disabled." msgstr "XKB֊ն չի աջակցուում։ KbdModeLock֊ը ինքնաշխատօրէն կասեցուած է" #: ../src/startup.c:819 msgid "it seems that there is already a window manager running" msgstr "կարծես թէ արդէն մէկ պատուհանային կառավարիչ գործարկուած է" #: ../src/startup.c:825 #, c-format msgid "could not manage screen %i" msgstr "հնարաւոր չէ կառավարել %i էկրանը" #: ../src/startup.c:884 msgid "could not manage any screen" msgstr "հնարաւոր չէ կառավարել ոչ մի էկրան" #: ../src/switchmenu.c:145 msgid "Windows" msgstr "Պատուհաններ" #: ../src/texture.c:329 #: ../src/texture.c:371 #, c-format msgid "image file \"%s\" used as texture could not be found." msgstr "\"%s\" նկարի նիշքն, որն օգտագործուում է որպէս հիւսուածք չի գտնուել։" #: ../src/texture.c:335 #: ../src/texture.c:377 #, c-format msgid "could not load texture pixmap \"%s\":%s" msgstr "հնարաւոր չէ բեռնել հիւսուածքի \"%s\"՝ %s կէտապատկերը։" #: ../src/texture.c:437 #, c-format msgid "library \"%s\" cound not be opened." msgstr "\"%s\" դարանը հնարաւոր չէ բացել։" #: ../src/texture.c:446 #, c-format msgid "function \"%s\" not found in library \"%s\"" msgstr "\"%s\" ֆունկցիան գտնուած չէ \"%s\" դարանում" #: ../src/texture.c:453 msgid "function textures not supported on this system, sorry." msgstr "աւաղ, ֆունկցիայի հիւսուածքները չեն աջակցուում այս համակարգում։" #: ../src/texture.c:598 msgid "could not allocate image buffer" msgstr "հնարաւոր չէ յատկացնել պատկերի պահնակ" #: ../src/wdefaults.c:437 #, c-format msgid "could not find icon file \"%s\"" msgstr "հնարաւոր չէ գտնել \"%s\" պատկերաի նիշքը" #: ../src/window.c:3041 #: ../src/window.c:3182 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:125 msgid "" "This will kill the application.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" "Սա սպանելու է յաւելուածը։\n" "Բոլոր չպահուած տուեալները կորելու են։\n" "Հաստատէք։" #: ../src/winmenu.c:268 #: ../src/winmenu.c:277 msgid "Set Shortcut" msgstr "Նշել Կարճատը" #: ../src/winmenu.c:355 #: ../src/winmenu.c:400 msgid "could not create submenu for window menu" msgstr "հնարաւոր չէ ստեղծել ենթացանկ պատուհանների ցանկում" #: ../src/winmenu.c:404 msgid "Keep on top" msgstr "Պահել վերեւում" #: ../src/winmenu.c:409 msgid "Keep at bottom" 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:437 #: ../src/winmenu.c:571 msgid "Maximize" msgstr "Մեծացնել" #: ../src/winmenu.c:445 #: ../src/winmenu.c:557 msgid "Miniaturize" msgstr "Դարձնել մանրանկար" #: ../src/winmenu.c:453 #: ../src/winmenu.c:588 msgid "Shade" msgstr "Ստուերել" #: ../src/winmenu.c:469 msgid "Resize/Move" msgstr "Չափափոխել/Տեղաշարժել" #: ../src/winmenu.c:477 msgid "Select" msgstr "Ընտրել" #: ../src/winmenu.c:485 msgid "Move To" msgstr "Տեղափոխել" #: ../src/winmenu.c:490 msgid "Attributes..." msgstr "Յատկանիշներ…" #: ../src/winmenu.c:492 msgid "Options" msgstr "Յատկութիւններ" #: ../src/winmenu.c:552 msgid "Deminiaturize" msgstr "Ապամանրանկարեցնել" #: ../src/winmenu.c:566 msgid "Unmaximize" msgstr "Ապամեծացնել" #: ../src/winmenu.c:583 msgid "Unshade" msgstr "Ապաստուերել" #: ../src/winspector.c:392 #, c-format msgid "Could not find icon \"%s\" specified for this window" msgstr "Հնարաւոր չէ գտնել \"%s\" պատկերակը, որ նշուած է այս պատուհանի համար" #: ../src/winspector.c:409 #, c-format msgid "Could not open specified icon \"%s\":%s" msgstr "Հնարաւոր չէ բացել նշուած \"%s\"՝ %s պատկերակը։" #: ../src/winspector.c:1129 #, c-format msgid "Inspecting %s.%s" msgstr "Ստուգուում է %s.%s" #: ../src/winspector.c:1155 msgid "Click in the window you wish to inspect." msgstr "Կտացրէք պատուհանին, որն ուզում էք ստուգել։" #: ../src/winspector.c:1194 msgid "" "The configuration will apply to all\n" "windows that have their WM_CLASS\n" "property set to the above selected\n" "name, when saved." msgstr "" "Կարգաւորումը կիրառուելու է բոլոր\n" "պատուհաններին, որոնց WM_CLASS\n" "յատկութիւնը համապատասխանում է վերը նշուած\n" "անուանը, երբ պահուի։" #: ../src/winspector.c:1223 msgid "Save" msgstr "Պահել" #: ../src/winspector.c:1231 msgid "Apply" msgstr "Կիրառել" #: ../src/winspector.c:1237 msgid "Reload" msgstr "Վերբեռնել" #: ../src/winspector.c:1246 #: ../src/winspector.c:1256 msgid "Window Specification" msgstr "Պատուհանի Բնորոշում" #: ../src/winspector.c:1247 msgid "Window Attributes" msgstr "Պատուհանի Յատկանիշներ" #: ../src/winspector.c:1248 msgid "Advanced Options" msgstr "Առաջադէմ Յատկութիւններ" #: ../src/winspector.c:1249 msgid "Icon and Initial Workspace" msgstr "Պատկերակ եւ Մեկնարկային Տիրոյթ" #: ../src/winspector.c:1250 msgid "Application Specific" msgstr "Յաւելուածին բնորոշ" #: ../src/winspector.c:1264 msgid "Defaults for all windows" msgstr "Լռելեայն է բոլոր պատուհանների համար" #: ../src/winspector.c:1318 msgid "Select window" msgstr "Ընտրել պատուհանը" #: ../src/winspector.c:1332 msgid "Attributes" msgstr "Յատկանիշներ" #: ../src/winspector.c:1343 msgid "Disable titlebar" msgstr "Կասեցնել անուանագօտին" #: ../src/winspector.c:1345 msgid "" "Remove the titlebar of this window.\n" "To access the window commands menu of a window\n" "without it's titlebar, press Control+Esc (or the\n" "equivalent shortcut, if you changed the default\n" "settings)." msgstr "" "Հեռացնել սոյն պատուհանի անուանագօտին։\n" "Առանց անուանագօտու պատուհանի հրահանգային ցանկը\n" "գտնելու համար սեղմէք Control+Esc (կամ\n" "համարժէք կարճատ, եթէ փոխել էք լռելեայն\n" "կարգաւորումները)։" #: ../src/winspector.c:1352 msgid "Disable resizebar" msgstr "Կասեցնել չափափոխագօտին" #: ../src/winspector.c:1354 msgid "Remove the resizebar of this window." msgstr "Հեռացնել սոյն պատուհանի չափափոխագօտին։" #: ../src/winspector.c:1357 msgid "Disable close button" msgstr "Կասեցնել փակելու կոճակը" #: ../src/winspector.c:1359 msgid "Remove the `close window' button of this window." msgstr "Հեռացնել սոյն պատուհանի «փակել պատուհանը» կոճակը։" #: ../src/winspector.c:1362 msgid "Disable miniaturize button" msgstr "Կասեցնել մանրանկար դարձնելու կոճակը" #: ../src/winspector.c:1364 msgid "Remove the `miniaturize window' button of the window." msgstr "Հեռացնել սոյն պատուհանի «դարձնել պատուհանը մանրանկար» կոճակը։" #: ../src/winspector.c:1367 msgid "Disable border" msgstr "Կասեցնել եզրագիծը" #: ../src/winspector.c:1369 msgid "Remove the 1 pixel black border around the window." msgstr "Հեռացնել պատուհանի շուրջ 1 պիքսելանոց սեւ եզրագիծը։" #: ../src/winspector.c:1372 msgid "Keep on top (floating)" msgstr "Պահել վերեւում (սաւառնող)" #: ../src/winspector.c:1374 msgid "" "Keep the window over other windows, not allowing\n" "them to cover it." msgstr "" "Պահել պատուհանը այլ պատուհանների վերեւից, չթողնելով նրանց\n" "ծածկել այն։" #: ../src/winspector.c:1378 msgid "Keep at bottom (sunken)" msgstr "Պահել ներքեւում (սուզուած)" #: ../src/winspector.c:1380 msgid "Keep the window under all other windows." msgstr "Պահել պատուհանն այլ պատուհանների տակ։" #: ../src/winspector.c:1385 msgid "Make window present in all workspaces." msgstr "Դարձնել պատուհանը բոլոր տիրոյթներում երեւացող։" #: ../src/winspector.c:1388 msgid "Start miniaturized" msgstr "Մեկնարկել մանրանկարուած" #: ../src/winspector.c:1390 msgid "" "Make the window be automatically miniaturized when it's\n" "first shown." msgstr "" "Դարձնել պատուհանն ինքնաշխատօրէն մանրանկարուած, երբ այն\n" "առաջին անգամ ցուցադրուում է։" #: ../src/winspector.c:1394 msgid "Start maximized" msgstr "Մեկնարկել մեծացուած" #: ../src/winspector.c:1396 msgid "" "Դարձնել պատուհանն ինքնաշխատօրէն մեծացուած, երբ այն\n" "առաջին անգամ ցուցադրուում է։" msgstr "" #: ../src/winspector.c:1400 msgid "Full screen maximization" msgstr "Լիաէկրան" #: ../src/winspector.c:1402 msgid "" "Make the window use the whole screen space when it's\n" "maximized. The titlebar and resizebar will be moved\n" "to outside the screen." msgstr "" "Պատուհանը կօգտագործի ամբողջ էկրանի, երբ այն\n" "մեծացուում է։ Անուանագօտին եւ չափափոխման գօտին տեղափոխուելու են\n" "էկրանից դուրս։" #: ../src/winspector.c:1419 msgid "Advanced" msgstr "Առաջադէմ" #: ../src/winspector.c:1436 msgid "Do not bind keyboard shortcuts" msgstr "Չկապել ստեղնաշարանային կարճատները" #: ../src/winspector.c:1438 msgid "" "Do not bind keyboard shortcuts from Window Maker\n" "when this window is focused. This will allow the\n" "window to receive all key combinations regardless\n" "of your shortcut configuration." msgstr "" "Չկապել Window Maker֊ի ստեղնաշարանային կարճատները\n" "երբ պատուհանը կիզակէտում է։ Սա թոյլ է տալու\n" "պատուհանին ստանալ բոլոր ստեղների համադրութիւններն, անախ\n" "ձեր կարճատային կարգաւորումներից։" #: ../src/winspector.c:1444 msgid "Do not bind mouse clicks" msgstr "Չկապել մկնիկի կտոցները" #: ../src/winspector.c:1446 msgid "" "Do not bind mouse actions, such as `Alt'+drag\n" "in the window (when Alt is the modifier you have\n" "configured)." msgstr "" "Չկապել մկնիկի գործողութիւններն, ինչպիսին են `Alt'+drag\n" "պատուհանին (երբ Alt֊ը կերպափոխիչ է\n" "կարգաւորուած)։" #: ../src/winspector.c:1451 msgid "Do not show in the window list" msgstr "Չցուցադրել պատուհանների ցանկում" #: ../src/winspector.c:1453 msgid "Do not list the window in the window list menu." msgstr "Չցուցադրել պատուհանը պատուհանների ցանկում։" #: ../src/winspector.c:1456 msgid "Do not let it take focus" msgstr "Կանխել կիզակէտում լինելը" #: ../src/winspector.c:1458 msgid "" "Do not let the window take keyboard focus when you\n" "click on it." msgstr "" "Կանխել պատուհանի կիզակէտում լինելը, երբ դու\n" "կտացնում ես այն։" #: ../src/winspector.c:1462 msgid "Keep inside screen" msgstr "Պահել էկարնի տիրոյթում" #: ../src/winspector.c:1464 msgid "" "Do not allow the window to move itself completely\n" "outside the screen. For bug compatibility.\n" msgstr "" "Չթողնել պատուհանը տեղափոխի իրեն ամբողջովին\n" "էկրանից դուրս։\n" #: ../src/winspector.c:1468 msgid "Ignore 'Hide Others'" msgstr "Արհամարհել «Թացքնել այլ»֊ը" #: ../src/winspector.c:1470 msgid "" "Do not hide the window when issuing the\n" "`HideOthers' command." msgstr "" "Չթաքցնել պատուհանը երբ ստացուում է\n" "«Թաքցնել Այլ» հրահանգը։" #: ../src/winspector.c:1474 msgid "Ignore 'Save Session'" msgstr "Արհամարհել «Պահել Նիստը»" #: ../src/winspector.c:1476 msgid "" "Do not save the associated application in the\n" "session's state, so that it won't be restarted\n" "together with other applications when Window Maker\n" "starts." msgstr "" "Չպահել կապուած յաւելուածը նիստի ցանկում\n" "որպէսզի այն չվերագործարկուի\n" "այլ Window Maker֊ի յաւելուածների հետ միասին\n" "երբ նիստը սկսուում է։" #: ../src/winspector.c:1482 msgid "Emulate application icon" msgstr "Նմանեցնել յաւելուածի պատկերակը" #: ../src/winspector.c:1484 msgid "" "Make this window act as an application that provides\n" "enough information to Window Maker for a dockable\n" "application icon to be created." msgstr "" "Այս պատուհանը կը պահի իրեն որպէս յաւելուած, որը տրամադրում է\n" "Window Maker֊ին բաւական տեղեկատուութիւն, որ անհրաժեշտ է յարակցուող\n" "յաւելուածի պատկերակ ստեղծելու համար։" #: ../src/winspector.c:1490 msgid "Disable language button" msgstr "Կասեցնել լեզուի կոճակը" #: ../src/winspector.c:1492 msgid "Remove the `toggle language' button of the window." msgstr "Հեռացնել պատուհանի «փոխել լեզուն» կոճակը" #: ../src/winspector.c:1509 msgid "Miniwindow Image" msgstr "Փոքրացուած պատուհանի Պատկեր" #: ../src/winspector.c:1536 msgid "Icon filename:" msgstr "Պատկերակի նիշքը՝" #: ../src/winspector.c:1549 msgid "Ignore client supplied icon" msgstr "Արհամարհել սպասառուի մատակարարուած պատկերակը" #: ../src/winspector.c:1556 msgid "Initial Workspace" msgstr "Մեկնարկային Տիրոյթ" #: ../src/winspector.c:1558 msgid "The workspace to place the window when it's first shown." msgstr "Տիրոյթ, որի վրայ մեկնարկելու է պատուհանը։" #: ../src/winspector.c:1564 msgid "Nowhere in particular" msgstr "Ոչ մի տեղ" #: ../src/winspector.c:1582 msgid "Application Attributes" msgstr "Յաւելուածի Յատկանիշներ" #: ../src/winspector.c:1593 msgid "Start hidden" msgstr "Մեկնարկել թաքցուած" #: ../src/winspector.c:1595 msgid "Automatically hide application when it's started." msgstr "Ինքնաշխատօրէն թաքցնել յաւելուածը, երբ այն մեկնարկում է։" #: ../src/winspector.c:1598 msgid "No application icon" msgstr "Բացակայում է յաւելուածի պատկերակը" #: ../src/winspector.c:1600 msgid "" "Disable the application icon for the application.\n" "Note that you won't be able to dock it anymore,\n" "and any icons that are already docked will stop\n" "working correctly." msgstr "" "Կասեցնել յաւելուածի պատկերակը սոյն յաւելուածի համար։\n" "Նկատի ունեցէք, որ այլեւս չէք կարողանալու այն յարակցել,\n" "եւ բոլոր այլ արդէն յարակցուած պատկերակները\n" "դադարելու են սպասելի աշխատել։" #: ../src/winspector.c:1606 msgid "Shared application icon" msgstr "Համօգտագործուող պատկերակ" #: ../src/winspector.c:1608 msgid "" "Use a single shared application icon for all of\n" "the instances of this application.\n" msgstr "" "Օգտագործել մէկ համօգտագործուող պատկերակ\n" "յաւելուածի բոլոր հատանմուշների համար։\n" #: ../src/workspace.c:103 #: ../src/workspace.c:104 #: ../src/workspace.c:1302 #, c-format msgid "Workspace %i" msgstr "Տիրոյթ %i" #: ../src/workspace.c:1352 msgid "Workspaces" msgstr "Տիրոյթներ" #: ../src/workspace.c:1354 msgid "could not create Workspace menu" msgstr "հնարաւոր չէ ստեղծել Տիրոյթի ցանկ" #: ../src/workspace.c:1361 msgid "New" msgstr "Նոր" #: ../src/workspace.c:1362 msgid "Destroy Last" msgstr "Ոչնչացնել վերջինը" WindowMaker-0.95.9/po/sv.po0000644000175000017500000003245613431646201012406 00000000000000# # WindowMaker messages in swedish # msgid "" msgstr "" "Project-Id-Version: WindowMaker 0.65.1\n" "PO-Revision-Date: 1997-06-02 18:29:09-0300\n" "Last-Translator: John \n" "Language-Team: Swedish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" #: ../main.c:147 msgid "Restart failed!!!" msgstr "Omstart misslyckades!!!" #: ../main.c:162 msgid "%s aborted.\n" msgstr "%s avbruten.\n" #: ../main.c:170 msgid "usage: %s [-options]\n" msgstr "användning: %s [-alternativ]\n" #: ../main.c:171 msgid "options:" msgstr "alternativ:" #: ../main.c:173 msgid " -nocpp \t\tdisable preprocessing of configuration files" msgstr " -nocpp \t\tstäng av preprocessing för konfigurationsfilerna" #: ../main.c:176 msgid " -nodock\t\tdo not open the application Dock" msgstr " -nodock\t\töppna inte the Dock" #: ../main.c:178 msgid " -locale locale\t\tlocale to use" msgstr " -locale locale\t\tlocale som skall användas" #: ../main.c:179 msgid " -display host:dpy\tdisplay to use" msgstr " -display host:dpy\tdisplay som skall användas" #: ../main.c:180 msgid " -version\t\tprint version and exit" msgstr " -version\t\tskriv ut version och avsluta" #: ../main.c:234 msgid "cannot set locale %s" msgstr "kan inte sätta locale %s" #: ../main.c:235 msgid "falling back to C locale" msgstr "går tillbaka till C locale" #: ../main.c:263 msgid "X server does not support locale" msgstr "X servern har inte support för locale" #: ../main.c:266 msgid "cannot set locale modifiers" msgstr "kan inte sätta locale-modifierare" #: ../main.c:276 msgid "could not open display %s" msgstr "kunde inte öppna display %s" #: ../event.c:230 msgid "stack overflow: too many dead processes" msgstr "stacken full: för många döda processer" #: ../startup.c:137 msgid "internal X error: %s\n" msgstr "internt X-fel: %s\n" #: ../startup.c:152 msgid "got signal %i (%s)\n" msgstr "fick signal %i (%s)\n" #: ../startup.c:154 msgid "got signal %i\n" msgstr "fick signal %i\n" #: ../texture.c:317 ../texture.c:327 msgid "unsupported visual/depth for gradients" msgstr "kan ej hantera gradienter på denna visual/färgdjup" #: ../menu.c:231 msgid "wrealloc() failed while trying to add menu item" msgstr "wrealloc() misslyckades vid addering av ett menyval" #: ../pixmap.c:211 msgid "could not load mask bitmap file \"%s\". Won't use mask" msgstr "kunde inte ladda maskfil \"%s\". Kommer inte att använda masken" #: ../image.c:183 ../image.c:889 ../pixmap.c:261 msgid "could not load XPM file \"%s\"" msgstr "kunde inte ladda XP- fil \"%s\"" #: ../pixmap.c:264 msgid "cannot load \"%s\": XPM support not compiled in" msgstr "kan inte ladda \"%s\": hantering av är inte inkompilerat" #: ../pixmap.c:271 msgid "could not load XBM file \"%s\"" msgstr "kunde inte ladda XBM-fil \"%s\"" #: ../image.c:196 ../pixmap.c:275 msgid "can't identify image file \"%s\"" msgstr "kan inte identifiera bildfil \"%s\"" #: ../image.c:200 ../pixmap.c:279 msgid "unknown image format in \"%s\"" msgstr "okänt bildformat i \"%s\"" #: ../image.c:65 ../image.c:494 msgid "can't load pixmap file \"%s\". Size too weird" msgstr "kan inte ladda pixmap-fil \"%s\". Storleken för underlig" #: ../image.c:83 ../image.c:746 ../image.c:768 msgid "virtual memory exhausted during pixmap load. Not fatal..." msgstr "slut virtuellt minne vid laddning av pixmap. Inte fatalt..." #: ../image.c:100 ../image.c:510 msgid "virtual memory exhausted. Continuing..." msgstr "slut virtuellt minne. Fortsätter..." #: ../image.c:186 msgid "cannot load \"%s\": XPM format not supported" msgstr "kan inte ladda \"%s\": Kan ej hantera XPM-formatet" #. XPM #: ../image.c:191 msgid "can't convert XBM file \"%s\" to internal format" msgstr "kan inte konvertera XBM-filen \"%s\" till det interna formatet" #: ../image.c:556 ../image.c:562 ../image.c:581 msgid "virtual memory exhausted during XPM load." msgstr "slut virtuellt minne vid laddning av XPM" #: ../image.c:712 ../image.c:855 msgid "could not convert image \"%s\" to internal format" msgstr "kunde inte konvertera bilden \"%s\" till det interna formatet" #: ../image.c:901 msgid "can't load \"%s\": unknown image format" msgstr "kan inte ladda \"%s\": okänt bildformat" #: ../screen.c:83 msgid "it seems that there already is a window manager running" msgstr "det verkar som en fönsterhanterare redan är igång" #: ../screen.c:234 ../screen.c:344 msgid "could not parse color %s" msgstr "felaktig färgspecifikation %s" #: ../screen.c:289 msgid "The following character sets are missing:" msgstr "Följande teckenuppsättningar saknas:" #: ../screen.c:293 msgid "The string \"%s\" will be used in place" msgstr "Strängen \"%s\" kommer att användas istället" #: ../screen.c:295 msgid "of any characters from those sets." msgstr "någon av de tecknena ifrån de uppsättningarna." #: ../screen.c:298 msgid "could not create font set %s. Using fixed" msgstr "kunde inte skapa typsnitt %s. Använder fixed" #: ../screen.c:305 msgid "could not load any usable font set" msgstr "kunde inte ladda någon användbar teckenuppsättning" #: ../screen.c:315 msgid "could not load font %s. Using fixed" msgstr "kunde inte ladda typsnitt %s. Använder fixed" #: ../screen.c:318 msgid "could not load any usable font" msgstr "kunde inte ladda någon användbart typsnitt" #: ../screen.c:439 msgid "Gradient texture not supported for your display (PseudoColor %ibpp)" msgstr "Kan ej hantera \"gradient texture\" på denna display (PseudoColor %ibpp)" #: ../screen.c:442 msgid "You must enable dithering to be able to use gradients with this display" msgstr "Du måste slå på dithering för att kunna använda gradienter med den här displayen" #: ../screen.c:456 msgid "Gradient texture available only for PseudoColor and TrueColor displays" msgstr "Gradient texture är bara tillgänglig för PseudoColor- och TrueColor-displayer" #: ../screen.c:478 msgid "could not allocate texture" msgstr "kunde inte allokera textur" #: ../screen.c:1058 msgid "colormap size value(s) too large" msgstr "färgpalettens storleks värde(n) för stora" #: ../dialog.c:208 ../rootmenu.c:108 msgid "Exit" msgstr "Avsluta" #: ../rootmenu.c:109 msgid "Exit window manager?" msgstr "Avsluta fönsterhanterare?" #: ../rootmenu.c:128 msgid "Close X session" msgstr "Stäng X-session" #: ../rootmenu.c:129 msgid "" "Close Window System session?\n" "(all applications will be closed)" msgstr "" "Stäng fönstersystems sessionen?\n" "(alla applikatoner kommer att stängas)" #: ../rootmenu.c:217 ../rootmenu.c:314 ../rootmenu.c:496 msgid "Switch to %i" msgstr "Byt till %i" #: ../rootmenu.c:283 msgid "out of memory to store menu commands. Nuking it." msgstr "inget minne kvar för att spara menykommandon. Bombar det." #: ../rootmenu.c:303 msgid "Workspaces" msgstr "Arbetsyta" #: ../rootmenu.c:305 msgid "could not create Workspace menu" msgstr "kunde inte skapa arbetsytans meny" #: ../rootmenu.c:308 msgid "New" msgstr "Ny" #: ../rootmenu.c:309 msgid "Destroy Last" msgstr "Förstöra sista" #: ../rootmenu.c:350 msgid "missing command in menu config: %s" msgstr "kommando saknas i menykonfigurationen: %s" #: ../rootmenu.c:390 msgid "menu can only have one WORKSPACE_MENU" msgstr "menyn kan bara ha en WORKSPACE_MENU (arbetsytemeny)" #: ../rootmenu.c:406 msgid "unknown command \"%s\" in menu config." msgstr "okänt kommando \"%s\" i menykonfigurationen." #: ../rootmenu.c:410 msgid "syntax error in menu config. END declaration missing" msgstr "syntaxfel i menykonfigurationen. END-deklarationen saknas" #: ../rootmenu.c:435 msgid "syntax error in menu config. %s" msgstr "syntaxfel i menykonfigurationen. %s" #: ../rootmenu.c:443 msgid "no title given for the root menu" msgstr "ingen titel (title) angiven för rot menyn" #: ../rootmenu.c:455 msgid "Commands" msgstr "Kommandon" #: ../rootmenu.c:456 msgid "Exit..." msgstr "Avsluta..." #: ../rootmenu.c:573 msgid "could not stat menu configuration file \"%s\"" msgstr "kunde inte stat(2): menykonfigurationsfilen \"%s\"" #: ../rootmenu.c:578 msgid "no read permision to menu configuration file" msgstr "inga läsrättigheter till menykonfigurationsfilen" #: ../rootmenu.c:595 msgid "could not make arguments for menu file preprocessor" msgstr "kunde inte skapa parametrar för förbehandling av menyfilen" #: ../rootmenu.c:603 msgid "could not open menu configuration preprocessor" msgstr "kunde inte öppna menykonfigurations-preprocessorn" #: ../rootmenu.c:613 msgid "couldn't open menu configuration file \"%s\"" msgstr "kunde inte öppna menykonfigurationsfilen \"%s\"" #: ../dock.c:689 ../rootmenu.c:646 msgid "Error" msgstr "Fel" #: ../rootmenu.c:647 msgid "" "Could not read menu configuration\n" "(see console log for details)" msgstr "" "Kunde inte läsa menykonfigurationen\n" "(se konsol loggen för detaljer)" #: ../dialog.c:196 msgid "OK " msgstr "OK " #: ../dialog.c:210 msgid "Cancel" msgstr "Avbryt" #: ../resource.c:297 ../resource.c:359 ../resource.c:368 ../resource.c:497 ../resource.c:521 ../resource.c:530 ../resource.c:555 msgid "%s: syntax error in line \"%s\"" msgstr "%s: syntax fel på rad \"%s\"" #: ../resource.c:309 msgid "%s: invalid window attribute specification in \"%s\"" msgstr "%s: felaktig fönsterattributspecifikation i \"%s\"" #: ../resource.c:336 msgid "%s: unknown attribute in line \"%s\"" msgstr "%s: okänt attribut på rad \"%s\"" #: ../resource.c:416 ../resource.c:425 ../resource.c:437 msgid "%s:invalid kbd shortcut specification \"%s\"" msgstr "%s:felaktig tangenbordsgenvägsspecifikation \"%s\"" #: ../resource.c:477 msgid "%s: expected section identifier but got %s" msgstr "%s: väntade sektions identifierare, men fick %s" #: ../resource.c:510 msgid "%s: unknown option in line \"%s\"" msgstr "%s: okänt alternativ på rad \"%s\"" #: ../resource.c:559 msgid "%s: invalid colormap size in line \"%s\"" msgstr "%s: felaktig palettstorlek på rad \"%s\"" #: ../resource.c:579 msgid "%s: invalid geometry display type \"%s\". Shouldbe center, corner, floating or line" msgstr "%s: felaktig geometrivisningstyp \"%s\". Borde vara center, corner, floating eller line" #: ../resource.c:601 msgid "%s: invalid focus mode \"%s.\" Should be manual, auto or semiauto" msgstr "%s: felaktig focus mode \"%s.\" Borde vara manual, auto eller semiauto" #: ../resource.c:619 msgid "%s: invalid window placement mode \"%s\". Should be auto, cascade or manual" msgstr "%s: felaktigt window placement mode \"%s\". Borde vara auto, cascade eller manual" #: ../resource.c:639 msgid "%s: invalid texture type \"%s\" Should be solid, dgradient, vgradient or hgradient" msgstr "%s: felaktigt texture type \"%s\" Borde vara solid, dgradient, vgradient eller hgradient" #: ../resource.c:666 msgid "%s: invalid gradient spec. \"%s\"" msgstr "%s: felaktig gradientspecifikation \"%s\"" #: ../resource.c:685 msgid "%s: invalid coordinate \"%s\"" msgstr "%s: felaktig koordinat \"%s\"" #: ../resource.c:701 msgid "%s: invalid justification type \"%s\". Should be left, center or right" msgstr "%s: felaktig justification type \"%s\". Borde vara left, center eller right" #: ../resource.c:731 msgid "could not make arguments for preference file preprocessor" msgstr "kunde inte skapa argument till preference-filens preprocessor" #: ../resource.c:737 msgid "could not open preference file preprocessor" msgstr "kunde inte öppna preference-filens preprocessor" #: ../resource.c:744 msgid "could not open configuration file: \"%s\"" msgstr "kunde inte öppna konfigurationsfilen: \"%s\"" #: ../resource.c:791 msgid "could not find default icon \"%s\"" msgstr "kunde inte hitta standardikonen \"%s\"" #: ../resource.c:797 msgid "could not find a preference file (%s) in \"%s\"" msgstr "kunde inte hitta en preference-fil (%s) i \"%s\"" #: ../resource.c:805 msgid "could not find icon background \"%s\"" msgstr "kunde inte hitta ikonbakgrunden \"%s\"" #: ../raster.c:183 msgid "invalid dither colormap size specification.disabling" msgstr "Felaktig storlek för dither-paletten. Slår av" #: ../raster.c:193 msgid "Could not build PseudoColor color table\n" msgstr "Kunde inte skapa PseudoColor-färgtabell\n" #: ../misc.c:50 msgid "could not define value for %s for cpp" msgstr "kunde inte definiera värde för %s till cpp" #: ../misc.c:80 msgid "could not get password entry for UID %i" msgstr "kunde inte få lösenordspost för användar-ID %i" #: ../appmenu.c:114 msgid "appmenu:could not create menu" msgstr "appmenu:kunde inte skapa meny" #: ../appmenu.c:145 msgid "appmenu:could not create menu entry" msgstr "appmenu:kunde inte skapa menypost" #: ../stacking.c:89 ../stacking.c:148 msgid "could not get window list!!" msgstr "kunde inte få fönsterlista!!" #: ../switchmenu.c:109 msgid "Windows" msgstr "Fönster" #: ../dock.c:171 msgid "could not open file \"%s\" to save Dock state" msgstr "kunde inte öppna filen \"%s\" för att spara Dockens tillstånd" #: ../dock.c:687 msgid "Could not execute program \"%s\"" msgstr "kunde inte köra program \"%s\"" #: ../winmenu.c:119 msgid "(Un)Maximize" msgstr "(O)Maximera" #: ../winmenu.c:126 msgid "Miniaturize" msgstr "Minimera" #: ../winmenu.c:133 msgid "(Un)Shade" msgstr "(O)Skugga" #: ../winmenu.c:140 msgid "Hide" msgstr "Gömma" #: ../winmenu.c:146 msgid "Hide Others" msgstr "Gömma Andra" #: ../winmenu.c:149 msgid "Close" msgstr "Stäng" #: ../winmenu.c:156 msgid "Kill" msgstr "Döda" #: ../generic/error.c:46 msgid " fatal error: " msgstr " fatalt fel: " #: ../generic/error.c:72 msgid " warning: " msgstr " varning: " WindowMaker-0.95.9/po/be.po0000644000175000017500000020223313431646201012334 00000000000000# Messages for Window Maker # Copyright (C) 2002 Free Software Foundation, Inc. # Text below is in CP1251 encoding. # Ihar Viarheichyk , 2002. # msgid "" msgstr "" "Project-Id-Version: WindowMaker 0.80.0\n" "POT-Creation-Date: 2002-08-11 19:48+0300\n" "PO-Revision-Date: 2002-10-17 19:02+0300\n" "Last-Translator: Ihar Viarheichyk \n" "Language-Team: Belarusian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../src/appicon.c:426 ../src/dialog.c:304 ../src/dock.c:3326 #: ../src/dockedapp.c:230 ../src/main.c:273 ../src/rootmenu.c:1854 #: ../src/winspector.c:389 ../src/winspector.c:406 msgid "Error" msgstr "Памылка" #: ../src/appicon.c:427 msgid "Could not open specified icon file" msgstr "Немагчыма адкрыць файл иконкі" #: ../src/appicon.c:428 ../src/dialog.c:201 ../src/dialog.c:304 #: ../src/dialog.c:751 ../src/dialog.c:1850 ../src/dock.c:526 #: ../src/dock.c:534 ../src/dock.c:558 ../src/dock.c:3327 #: ../src/dockedapp.c:231 ../src/dockedapp.c:426 ../src/main.c:273 #: ../src/rootmenu.c:1858 ../src/winspector.c:390 ../src/winspector.c:407 msgid "OK" msgstr "OK" #: ../src/appicon.c:456 ../src/dock.c:264 msgid "" " will be forcibly closed.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" " будзе прымусова закрыта.\n" "Незахаваныя змены будуць страчаны.\n" "Пацвердзце." #: ../src/appicon.c:464 ../src/dock.c:283 ../src/winmenu.c:125 msgid "Kill Application" msgstr "Прымусова закрыць праграму" #: ../src/appicon.c:465 ../src/dock.c:284 ../src/winmenu.c:127 msgid "Yes" msgstr "Так" #: ../src/appicon.c:465 ../src/dock.c:284 ../src/winmenu.c:127 msgid "No" msgstr "Не" #: ../src/appicon.c:495 ../src/dock.c:1178 ../src/dock.c:3492 msgid "Unhide Here" msgstr "Схаваць тут" #: ../src/appicon.c:496 ../src/appicon.c:521 ../src/dock.c:1180 #: ../src/dock.c:1182 ../src/dock.c:3504 ../src/winmenu.c:465 msgid "Hide" msgstr "Схаваць" #: ../src/appicon.c:497 msgid "Set Icon..." msgstr "Задаць іконку..." #: ../src/appicon.c:498 ../src/dock.c:1186 ../src/rootmenu.c:248 #: ../src/rootmenu.c:264 ../src/winmenu.c:520 msgid "Kill" msgstr "Закрыць прымусова" #: ../src/appicon.c:519 ../src/dock.c:3502 msgid "Unhide" msgstr "Паказаць" #: ../src/application.c:398 #, c-format msgid "recreating missing icon '%s'" msgstr "ствараю адсутнічаючу іконку '%s'" #: ../src/defaults.c:922 ../src/defaults.c:1011 #, c-format msgid "Domain %s (%s) of global defaults database is corrupted!" msgstr "Дамен %s (%s) агульнай базы стандартных параметраў пашкоджаны" #: ../src/defaults.c:927 #, c-format msgid "could not load domain %s from global defaults database" msgstr "немагчыма загрузіць дамен %s з агульнай базы стандартных параметраў" #: ../src/defaults.c:949 ../src/startup.c:884 ../src/startup.c:902 #: ../src/startup.c:908 #, c-format msgid "could not read domain \"%s\" from defaults database" msgstr "немагчыма загрузіць дамен %s з базы стандартных параметраў" #: ../src/defaults.c:995 ../src/defaults.c:1099 ../src/defaults.c:1140 #: ../src/defaults.c:1196 #, c-format msgid "Domain %s (%s) of defaults database is corrupted!" msgstr "Дамен %s (%s) базы стандартных параметраў пашкоджаны" #: ../src/defaults.c:1000 ../src/defaults.c:1119 ../src/defaults.c:1176 #: ../src/defaults.c:1205 ../src/menureader.c:397 #, c-format msgid "could not load domain %s from user defaults database" msgstr "немагчыма загрузіць дамен %s базы стандартных параметраў карыстальніка" #: ../src/defaults.c:1030 #, c-format msgid "could not load domain %s from global defaults database (%s)" msgstr "немагчыма загрузіць дамен %s з агульнай базы стандартных параметраў (%s)" #: ../src/defaults.c:1166 ../src/screen.c:460 #, c-format msgid "could not load logo image for panels: %s" msgstr "немагчыма загрузіць выяву лагатыпу панэлей: %s" #. --------------------------- Local ----------------------- #: ../src/defaults.c:1414 ../src/defaults.c:1556 ../src/defaults.c:1668 #: ../src/defaults.c:2147 ../src/defaults.c:2164 ../src/defaults.c:2209 #: ../src/defaults.c:2256 ../src/defaults.c:2729 ../src/wdefaults.c:571 #: ../src/wdefaults.c:607 #, c-format msgid "Wrong option format for key \"%s\". Should be %s." msgstr "Памылковы фармат параметру дзеля ключа \"%s\". Павінен быць %s." #: ../src/defaults.c:1416 ../src/defaults.c:1497 ../src/defaults.c:1529 #: ../src/defaults.c:1561 ../src/defaults.c:1574 ../src/defaults.c:1589 #: ../src/defaults.c:1603 ../src/defaults.c:1673 ../src/defaults.c:1685 #: ../src/defaults.c:2152 ../src/defaults.c:2169 ../src/defaults.c:2182 #: ../src/defaults.c:2214 ../src/defaults.c:2230 ../src/defaults.c:2261 #: ../src/defaults.c:2348 ../src/defaults.c:2734 ../src/defaults.c:2745 #, c-format msgid "using default \"%s\" instead" msgstr "будзе ужыта стандартнае значэнне \"%s\"" #: ../src/defaults.c:1447 #, c-format msgid "wrong option value for key \"%s\". Should be one of %s" msgstr "дрэннае значэнне для ключа \"%s\". Павінна быць адно з %s" #: ../src/defaults.c:1492 #, c-format msgid "can't convert \"%s\" to boolean for key \"%s\"" msgstr "немагчыма прывесці \"%s\" да тыпу boolean для ключа \"%s\"" #: ../src/defaults.c:1526 #, c-format msgid "can't convert \"%s\" to integer for key \"%s\"" msgstr "немагчыма прывесці \"%s\" да тыпу integer для ключа \"%s\"" #: ../src/defaults.c:1569 #, c-format msgid "Incorrect number of elements in array for key \"%s\"." msgstr "Недапушчальная колькасць элементаў у масіве для ключа \"%s\"." #: ../src/defaults.c:1584 #, c-format msgid "Wrong value for key \"%s\". Should be Coordinate." msgstr "Дрэннае значэнне для ключа \"%s\". Павинна быць Coordinate." #: ../src/defaults.c:1599 #, c-format msgid "can't convert array to integers for \"%s\"." msgstr "немагчыма сканвертаваць масіў да цэлых для \"%s\"" #: ../src/defaults.c:1797 ../src/defaults.c:1829 ../src/defaults.c:1845 #: ../src/defaults.c:1874 ../src/defaults.c:1897 ../src/defaults.c:1950 #: ../src/defaults.c:1990 ../src/defaults.c:2028 ../src/defaults.c:2044 #, c-format msgid "\"%s\" is not a valid color name" msgstr "\"%s\" не дапушчальнае імя для колера" #: ../src/defaults.c:1810 ../src/defaults.c:1862 msgid "bad number of arguments in gradient specification" msgstr "неадпаведны лік агрументаў у спецыфікацыі градыенту" #: ../src/defaults.c:1923 msgid "too few arguments in multicolor gradient specification" msgstr "замала аргументаў у спецыфікацыі шматкаляровага градыенту" #: ../src/defaults.c:2017 msgid "bad number of arguments in textured gradient specification" msgstr "неадпаведны лік аргументаў у спецыфікацыі тэкстурнага градыенту" #: ../src/defaults.c:2060 #, c-format msgid "bad opacity value for tgradient texture \"%s\". Should be [0..255]" msgstr "дрэннае значэнне непразрыстасці для градыетнай тэкстуры \"%s\"." "Павінна быць [0..255]" #: ../src/defaults.c:2120 #, c-format msgid "could not initialize library %s" msgstr "немагчыма ініцыялізаваць бібліятэку %s" #: ../src/defaults.c:2123 #, c-format msgid "could not find function %s::%s" msgstr "немагчыма знайсці функцыю %s::%s" #: ../src/defaults.c:2130 #, c-format msgid "invalid texture type %s" msgstr "дрэнны тып тэкстуры %s" #: ../src/defaults.c:2177 #, c-format msgid "Error in texture specification for key \"%s\"" msgstr "Памылка ў спецыфікацыі тэкстуры з ключом \"%s\"" #: ../src/defaults.c:2226 msgid "Wrong type for workspace background. Should be a texture type." msgstr "Дрэнны тып фона працамесца. Павінен быць тэкстурай" #: ../src/defaults.c:2274 #, c-format msgid "Wrong type for background of workspace %i. Should be a texture." msgstr "Дрэнны тып фона працамесца %i. Павінен быць тэкстурай." #: ../src/defaults.c:2316 msgid "could not load any usable font!!!" msgstr "немагчыма загрузіць аніякі падыходзячы шрыфт!!!" #: ../src/defaults.c:2343 #, c-format msgid "could not get color for key \"%s\"" msgstr "немагчыма знайсці колер дзеля ключа \"%s\"" #: ../src/defaults.c:2401 ../src/rootmenu.c:526 #, c-format msgid "%s:invalid key modifier \"%s\"" msgstr "%s: дрэнны клавіятурны мадыфікатар \"%s\"" #: ../src/defaults.c:2413 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\"" msgstr "%s: дрэнная спецыфікацыя гарачай клавішы \"%s\"" #: ../src/defaults.c:2420 #, c-format msgid "%s:invalid key in shortcut \"%s\"" msgstr "%s: дрэнная спецыфікацыя клавішы \"%s\"" #: ../src/defaults.c:2445 #, c-format msgid "%s: modifier key %s is not valid" msgstr "%s: недапушчальны клавіятурны мадыфікатар %s" #: ../src/defaults.c:2477 #, c-format msgid "could not load image in option %s: %s" msgstr "немагчыма загрузіць выяву для %s: %s" #: ../src/defaults.c:2594 #, c-format msgid "failed to open bitmap file \"%s\"" msgstr "немагчыма адкрыць bitmap файл \"%s\"" #: ../src/defaults.c:2597 #, c-format msgid "\"%s\" is not a valid bitmap file" msgstr "\"%s\" не з'яўляецца карэктным файлам выявы" #: ../src/defaults.c:2600 #, c-format msgid "out of memory reading bitmap file \"%s\"" msgstr "не хапае памяці для чытання bitmap файлу\"%s\"" #: ../src/defaults.c:2639 ../src/defaults.c:2672 msgid "bad number of arguments in cursor specification" msgstr "неадпаведны лік агрументаў у спецыфікацыі курсора" #: ../src/defaults.c:2655 #, c-format msgid "unknown builtin cursor name \"%s\"" msgstr "невядомае імя стандартнага курсору \"%s\"" #: ../src/defaults.c:2682 ../src/defaults.c:2694 #, c-format msgid "could not find cursor bitmap file \"%s\"" msgstr "немагчыма знайсці файл з выявай курсора \"%s\"" #: ../src/defaults.c:2741 #, c-format msgid "Error in cursor specification for key \"%s\"" msgstr "Памылка ў спецыфікацыі курсору дзеля ключа \"%s\"" #: ../src/defaults.c:2826 msgid "could not render texture for icon background" msgstr "немагчыма згенераваць тэкстуру для фону іконкі" #: ../src/dialog.c:157 msgid "Save workspace state" msgstr "Захаваць стан працамесца" #: ../src/dialog.c:201 ../src/dialog.c:758 ../src/dock.c:558 #: ../src/dockedapp.c:431 ../src/rootmenu.c:198 ../src/rootmenu.c:248 #: ../src/rootmenu.c:264 msgid "Cancel" msgstr "Адмена" #: ../src/dialog.c:299 msgid "Could not open directory \"%s\":\n%s" msgstr "Немагчыма адкрыць каталаг \"%s\":\n%s" #: ../src/dialog.c:354 msgid "Could not load image file " msgstr "Немагчыма загрузіць файл выявы " #: ../src/dialog.c:685 msgid "Directories" msgstr "Каталагі" #: ../src/dialog.c:694 msgid "Icons" msgstr "Іконкі" #: ../src/dialog.c:727 msgid "Preview" msgstr "Прагляд" #: ../src/dialog.c:740 msgid "File Name:" msgstr "Імя файла:" #: ../src/dialog.c:764 msgid "Choose File" msgstr "Выбар файла" #: ../src/dialog.c:783 ../src/dialog.c:785 msgid "Icon Chooser" msgstr "Выбар іконкі" #: ../src/dialog.c:1265 ../src/dialog.c:1375 #, c-format msgid "Version %s" msgstr "Версія %s" #: ../src/dialog.c:1372 msgid "Window Manager for X" msgstr "Ваконны менеджар для X" #: ../src/dialog.c:1397 #, c-format msgid "Using visual 0x%x: %s %ibpp " msgstr "Відэарэжым 0x%x: %s %i бітаў на піксел" #: ../src/dialog.c:1405 msgid "(32 thousand colors)\n" msgstr "(32 тысячы колераў)\n" #: ../src/dialog.c:1408 msgid "(64 thousand colors)\n" msgstr "(64 тысячы колераў)\n" #: ../src/dialog.c:1412 msgid "(16 million colors)\n" msgstr "(16 мільёнаў колераў)\n" #: ../src/dialog.c:1415 #, c-format msgid "(%d colors)\n" msgstr "(%d колераў)\n" #: ../src/dialog.c:1425 #, c-format msgid "Total allocated memory: %i kB. Total memory in use: %i kB.\n" msgstr "Зарэзервавана памяці: %i кБ. Выкарыстоўваецца: %i кБ.\n" #: ../src/dialog.c:1283 msgid "Image formats: " msgstr "Графічныя фарматы: " #: ../src/dialog.c:1439 msgid "" "\n" "Additional support for: " msgstr "" "\n" "Дадаткова падтрымліваецца: " #: ../src/dialog.c:1462 msgid " and " msgstr " і " #: ../src/dialog.c:1472 msgid "" "\n" "Sound disabled" msgstr "" "\n" "Звук забаронены" #: ../src/dialog.c:1474 msgid "" "\n" "Sound enabled" msgstr "" "\n" "Звук дазволены" #: ../src/dialog.c:1503 msgid "Info" msgstr "Інфармацыя" #: ../src/dialog.c:1527 msgid "Merry Christmas!" msgstr "Вяселых Каляд!" #: ../src/dialog.c:1417 msgid "" " Window Maker 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.\n" "\n" " Window Maker 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.\n" "\n" " You should have received a copy of the GNU General Public License along " "with this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin Street, Fifth Floor, Boston, MA02110-1301 USA." msgstr "" " Window Maker з'яўляецца свабодным праграмным " "забеспячэннем і распаўсюджваецца на ўмовах ліцэнзі " "GPL версіі 2 ці вышэй ад Free Software Foundation.\n" "\n" " Window Maker распаўсюджваецца з наздеяй што можа быць " "карысны, але без усялякіх гарантый. Падрабязную інфармацыю " "глядзіце ў GNU General Public License.\n" "\n" " Копія GNU GPL распаўсюджваецца разам з гэтай " "праграмай. Калі вы атрымалі гэтую праграму без копіі " "ліцэнзіі, звярніціся ў Free Software Foundation, Inc., " "51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA." #: ../src/dialog.c:1621 msgid "Legal" msgstr "Ліцэнзія" #: ../src/dialog.c:1773 ../src/startup.c:394 msgid "cannot open connection for crashing dialog panel. Aborting." msgstr "немагчыма ўсталяваць злучэнне ў вакне крытычнай памылкі. Выхад." #: ../src/dialog.c:1799 msgid "Fatal error" msgstr "Крытычная памылка" #: ../src/dialog.c:1810 #, c-format msgid "" "Window Maker received signal %i\n" "(%s)." msgstr "" "Window Maker атрымаў сігнал %i\n" "(%s)." #: ../src/dialog.c:1813 #, c-format msgid "Window Maker received signal %i." msgstr "Window Maker атрымаў сігнал %i." #. Comment for the PO file: the %s is an email address #: ../src/dialog.c:1632 #, c-format msgid "" " This fatal error occured probably due to a bug. Please fill the included " "BUGFORM and report it to %s." msgstr "" " Гэты крытычны збой магчыма вызваны памылкамі ў WindowMaker." "Дашліце запоўненае паведамленне аб памылке (BUGFORM) на %s" #: ../src/dialog.c:1831 msgid "What do you want to do now?" msgstr "Што вы збіраецесь зараз рабіць?" #: ../src/dialog.c:1837 msgid "Select action" msgstr "Выберыце дзеянне" #: ../src/dialog.c:1838 msgid "Abort and leave a core file" msgstr "Завершыць працу пакінуўшы core-файл" #: ../src/dialog.c:1839 msgid "Restart Window Maker" msgstr "Перазапусціць Window Maker" #: ../src/dialog.c:1840 msgid "Start alternate window manager" msgstr "Запусціць іншы ваконны менеджар" #: ../src/dialog.c:2018 msgid "" "Window Maker is part of the GNUstep project.\n" "The GNUstep project aims to create a free\n" "implementation of the OpenStep(tm) specification\n" "which is a object-oriented framework for\n" "creating advanced graphical, multi-platform\n" "applications. Additionally, a development and\n" "user desktop environment will be created on top\n" "of the framework. For more information about\n" "GNUstep, please visit: www.gnustep.org" msgstr "" "Window Maker з'яўляецца часткай праекту GNUstep.\n" "Мэта GNUstep - стварэнне свабоднай рэалізацыі\n" "спецыфікацый OpenStep(tm) - аб'ектна-арыентаванага\n" "асяроддзя для стварэння графічных шматплатформенных\n" "дастасаванняў. На базе гэтага асяроддзя таксама\n" "ствараецца асяроддзе карыстальніка. Большь інфармацыі\n" "можна знайсці на сайце GNUstep: www.gnustep.org" #: ../src/dialog.c:2041 msgid "About GNUstep" msgstr "Аб GNUstep" #: ../src/dock.c:213 #, c-format msgid "Type the name for workspace %i:" msgstr "Задайце імя працамесца %i:" #: ../src/dock.c:214 ../src/dock.c:1142 ../src/dock.c:1145 ../src/dock.c:3410 msgid "Rename Workspace" msgstr "Перайменаваць працамесца" #: ../src/dock.c:520 ../src/dock.c:528 msgid "Warning" msgstr "Увага" #: ../src/dock.c:521 msgid "" "Some icons cannot be made omnipresent. Please make sure that no other icon " "is docked in the same positions on the other workspaces and the Clip is not " "full in some workspace." msgstr "" "Некаторыя іконкі ня могуць быць бачнымі на ўсіх працамесцах. Напэўна " "нейкая іконка задакавана ў той жа пазіцыі на іншым працамесцы ці скрэпка " "аднаго працамесца перапоўнена." #: ../src/dock.c:529 msgid "" "Icon cannot be made omnipresent. Please make sure that no other icon is " "docked in the same position on the other workspaces and the Clip is not full " "in some workspace." msgstr "" "Гэту іконку нельга зрабіць прысутнічаючай на ўсіх працамесцах. Напэўна " "нейкая іконка задакавана ў той жа пазіцыі на іншым працамесцы ці скрэпка " "аднаго працамесца перапоўнена." #: ../src/dock.c:556 msgid "Workspace Clip" msgstr "Скрэпка працамесца" #: ../src/dock.c:557 msgid "All selected icons will be removed!" msgstr "Усе абраныя іконкі будуць выдалены!" #: ../src/dock.c:608 ../src/dock.c:1157 ../src/dock.c:1159 ../src/dock.c:3446 msgid "Keep Icon" msgstr "Трымаць іконку" #: ../src/dock.c:609 ../src/dock.c:2138 ../src/dock.c:2279 msgid "Type the command used to launch the application" msgstr "Каманда дзеля запуску праграмы" #: ../src/dock.c:965 #, c-format msgid "could not launch application %s\n" msgstr "немагчыма запусціць праграму %s\n" #: ../src/dock.c:1020 msgid "could not create workspace submenu for Clip menu" msgstr "немагчыма стварыць падменю працамесца для меню скрэпкі" #: ../src/dock.c:1079 msgid "could not create options submenu for Clip menu" msgstr "немагчыма стварыць падменю параметраў для меню скрэпкі" #: ../src/dock.c:1083 ../src/dock.c:1131 msgid "Keep on Top" msgstr "Трымаць зверху" #: ../src/dock.c:1089 msgid "Collapsed" msgstr "Звёрнуты" #: ../src/dock.c:1095 msgid "Autocollapse" msgstr "Зварачвацца аўтаматычна" #: ../src/dock.c:1101 msgid "Autoraise" msgstr "Аўтаўсплыцце" #: ../src/dock.c:1107 msgid "Autoattract Icons" msgstr "Прыцягваць іконкі" #: ../src/dock.c:1137 msgid "Clip Options" msgstr "Параметры скрэпкі" #: ../src/dock.c:1147 msgid "Selected" msgstr "Абраная" #: ../src/dock.c:1152 ../src/dock.c:1155 ../src/dock.c:3437 msgid "Select All Icons" msgstr "Абраць усе іконкі" #: ../src/dock.c:1161 ../src/dock.c:1163 ../src/dock.c:3454 msgid "Move Icon To" msgstr "Перанесці іконку на" #: ../src/dock.c:1168 ../src/dock.c:1171 ../src/dock.c:3465 msgid "Remove Icon" msgstr "Выдаліць іконку" #: ../src/dock.c:1173 msgid "Attract Icons" msgstr "Прыцягваць іконкі" #: ../src/dock.c:1176 msgid "Launch" msgstr "Запусціць" #: ../src/dock.c:1184 msgid "Settings..." msgstr "Настройкі" #: ../src/dock.c:1549 ../src/dock.c:1656 #, c-format msgid "bad value in docked icon state info %s" msgstr "дрэннае значэнне інфармацыі аб стане задакаванай іконкі %s" #: ../src/dock.c:1664 #, c-format msgid "bad value in docked icon position %i,%i" msgstr "дрэннае значэнне пазіцыі задакаванай іконкі %i,%i" #: ../src/dock.c:1684 #, c-format msgid "bad value in dock state info:%s" msgstr "дрэннае значэнне інфармацыі аб стане дока %s" #: ../src/dock.c:1920 msgid "there are too many icons stored in dock. Ignoring what doesn't fit" msgstr "зашмат іконак задакавана. Лішнія будуць ігнараваны" #. icon->forced_dock = 1; #: ../src/dock.c:2137 ../src/dock.c:2278 msgid "Dock Icon" msgstr "Задакаваць іконку" #: ../src/dock.c:3324 #, c-format msgid "Could not execute command \"%s\"" msgstr "Немагчыма выканаць каманду \"%s\"" #: ../src/dock.c:3416 msgid "Toggle Omnipresent" msgstr "Інвертаваць прысутнасць" #: ../src/dock.c:3421 ../src/kwm.c:637 ../src/winmenu.c:418 #: ../src/winspector.c:1375 msgid "Omnipresent" msgstr "На ўсіх працамесцах" #: ../src/dock.c:3435 msgid "Unselect All Icons" msgstr "Зняць вылучэнне з усіх іконак" #: ../src/dock.c:3444 msgid "Keep Icons" msgstr "Трымаць іконкі" #: ../src/dock.c:3452 msgid "Move Icons To" msgstr "Перанесці іконкі на" #: ../src/dock.c:3463 msgid "Remove Icons" msgstr "Выдаліць іконкі" #: ../src/dock.c:3494 ../src/kwm.c:643 msgid "Bring Here" msgstr "Перанесці сюды" #: ../src/dockedapp.c:149 #, c-format msgid "could not find icon %s, used in a docked application" msgstr "немагчыма знайсці іконку %s для дакаванай праграмы" #: ../src/dockedapp.c:229 #, c-format msgid "Could not open specified icon file: %s" msgstr "Немагчыма адкрыць азначаны файл іконкі: %s" #: ../src/dockedapp.c:231 msgid "Ignore" msgstr "Ігнараваць" #: ../src/dockedapp.c:333 msgid "Start when Window Maker is started" msgstr "Запускаць пры старце Window Maker" #: ../src/dockedapp.c:340 msgid "Lock (prevent accidental removal)" msgstr "Заблакаваць ад нежаданага выдалення" #: ../src/dockedapp.c:344 msgid "Application path and arguments" msgstr "Імя і аргументы праграмы" #: ../src/dockedapp.c:357 msgid "Command for middle-click launch" msgstr "Каманда для запуску пя сярэдняй кнопцы" #: ../src/dockedapp.c:371 #, c-format msgid "%s will be replaced with current selection" msgstr "%s заменіцца бягучым selection" #: ../src/dockedapp.c:376 msgid "Command for files dropped with DND" msgstr "Каманда для перанесеных файлаў" #: ../src/dockedapp.c:390 #, c-format msgid "%d will be replaced with the file name" msgstr "%d аменiцца імём файла" #: ../src/dockedapp.c:394 msgid "DND support was not compiled in" msgstr "Падтрымка DND не была абрана пачдчас зборкі" #: ../src/dockedapp.c:399 msgid "Icon Image" msgstr "Выява іконкі" #: ../src/dockedapp.c:413 ../src/winspector.c:1513 msgid "Browse..." msgstr "Выбар..." #: ../src/dockedapp.c:466 msgid "Docked Application Settings" msgstr "Параметры дакаванай праграмы" #: ../src/framewin.c:649 ../src/framewin.c:744 ../src/menu.c:456 #: ../src/texture.c:594 #, c-format msgid "could not render texture: %s" msgstr "немагчыма згенераваць тэкстуру: %s" #: ../src/framewin.c:672 ../src/framewin.c:683 ../src/framewin.c:699 #: ../src/framewin.c:710 ../src/framewin.c:717 ../src/framewin.c:724 #: ../src/icon.c:350 ../src/menu.c:485 #, c-format msgid "error rendering image:%s" msgstr "памылка адлюстравання выявы:%s" #: ../src/framewin.c:777 #, c-format msgid "error rendering image: %s" msgstr "памылка адлюстравання выявы: %s" #: ../src/gnome.c:216 ../src/gnome.c:343 ../src/gnome.c:401 msgid "out of memory while updating GNOME hints" msgstr "не хапіла памяці падчас абноўлення падказак GNOME" #: ../src/icon.c:229 ../src/wdefaults.c:443 #, c-format msgid "error loading image file \"%s\": %s" msgstr "памылка загрузкі файла выявы \"%s\": %s" #: ../src/icon.c:493 ../src/icon.c:502 #, c-format msgid "could not create directory %s" msgstr "немагчыма стварыць каталаг %s" #: ../src/icon.c:769 #, c-format msgid "could not find default icon \"%s\"" msgstr "немагчыма знайсці стандартную іконку \"%s\"" #: ../src/icon.c:775 #, c-format msgid "could not load default icon \"%s\":%s" msgstr "немагчыма знайсці стандартную іконку \"%s\":%s" #. #. * 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/kwm.c:633 ../src/winmenu.c:441 ../src/winmenu.c:583 msgid "Maximize" msgstr "Максімізаваць" #: ../src/kwm.c:634 ../src/winmenu.c:578 msgid "Unmaximize" msgstr "Дэмаксімізаваць" #: ../src/kwm.c:635 ../src/winmenu.c:449 ../src/winmenu.c:569 msgid "Miniaturize" msgstr "Мінімізаваць" #: ../src/kwm.c:636 ../src/winmenu.c:564 msgid "Deminiaturize" msgstr "Дэмінімізаваць" #: ../src/kwm.c:638 msgid "Not Omnipresent" msgstr "Толькі на гэтым працамесцы" #: ../src/kwm.c:639 msgid "Move" msgstr "Перанесці" #: ../src/kwm.c:640 msgid "Resize" msgstr "Змяніць памер" #. #. entry = wMenuAddCallback(menu, _("Select Shortcut"), NULL, NULL); #. wMenuEntrySetCascade(menu, entry, makeMakeShortcutMenu(scr)); #. #: ../src/kwm.c:641 ../src/rootmenu.c:248 ../src/winmenu.c:513 msgid "Close" msgstr "Закрыць" #: ../src/kwm.c:642 ../src/winmenu.c:497 msgid "Move To" msgstr "Перанесці на" #: ../src/kwm.c:1096 msgid "%a(Run Command,Type the command to run:)" msgstr "%a(Выканаць каманду:)" #: ../src/main.c:222 msgid "failed to restart Window Maker." msgstr "немагчыма перазапусціць Window Maker." #: ../src/main.c:225 #, c-format msgid "could not exec %s" msgstr "немагчыма выканаць %s" #: ../src/main.c:271 msgid "Could not execute command: " msgstr "Немагчыма выканаць каманду: " #: ../src/main.c:428 #, c-format msgid "%s aborted.\n" msgstr "%s завершана з-за памылкі.\n" #: ../src/main.c:439 #, c-format msgid "Usage: %s [options]\n" msgstr "Выкарыстанне: %s [параметры]\n" #: ../src/main.c:440 msgid "The Window Maker window manager for the X window system" msgstr "Window Maker - ваконны менеджар для сістэмы X window" #: ../src/main.c:442 msgid " -display host:dpy\tdisplay to use" msgstr " -display host:dpy\tвыкарыстоўваць дадзены дысплей" #: ../src/main.c:444 msgid " --no-cpp \t\tdisable preprocessing of configuration files" msgstr " --no-cpp \t\tзабароніць прэпрацэссінг канфігурацыйных фацлаў" #: ../src/main.c:446 msgid " --no-dock\t\tdo not open the application Dock" msgstr " --no-dock\t\tзабароніць док" #: ../src/main.c:447 msgid " --no-clip\t\tdo not open the workspace Clip" msgstr " --no-clip\t\tзабароніць скрэпку" #: ../src/main.c:448 msgid " --no-autolaunch\tdo not autolaunch applications" msgstr " --no-autolaunch\tзабароніць аўтазапуск праграм" #: ../src/main.c:449 msgid " --dont-restore\t\tdo not restore saved session" msgstr " --dont-restore\t\tне узнаўляць захаванцю сесію" #: ../src/main.c:451 msgid " --locale locale\tlocale to use" msgstr " --locale locale\tвыкарыстоўваць дадзеную лакаль" #: ../src/main.c:453 msgid "" " --create-stdcmap\tcreate the standard colormap hint in PseudoColor visuals" msgstr "" " --create-stdcmap\tгенераваць стандартную карту колераў для PseudoColor" #: ../src/main.c:454 msgid " --visual-id visualid\tvisual id of visual to use" msgstr " --visual-id visualid\tвыкарыстроўваць дадзены відэарэжым" #: ../src/main.c:455 msgid " --static\t\tdo not update or save configurations" msgstr " --static\t\tне захоўваць і не абнаўляць канфігурацыю" #: ../src/main.c:456 msgid " --no-polling\t\tdo not periodically check for configuration updates" msgstr " --no-polling\t\tзабароніць перыядычную праверку змен у канфігурацыі" #: ../src/main.c:458 msgid " --synchronous\t\tturn on synchronous display mode" msgstr " --synchronous\t\tсінхронны рэжым для графікі" #: ../src/main.c:460 msgid " --version\t\tprint version and exit" msgstr " --version\t\tпаказаць версію ды выйсці" #: ../src/main.c:461 msgid " --help\t\t\tshow this message" msgstr " --help\t\t\tпаказаць гэты тэкст" #: ../src/main.c:474 #, 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:479 #, c-format msgid "could not find user GNUstep directory (%s)." msgstr "немагчыма знайсці карыстальніцкі каталаг GNUstep (%s)." #: ../src/main.c:482 msgid "" "There was an error while creating GNUstep directory, please make sure you " "have installed Window Maker correctly and run wmaker.inst" msgstr "" "Памылка падчас стварэння каталага GNUstep. Праверце, што Window Maker" "усталяваны карэктна і запусціце wmaker.inst" #: ../src/main.c:485 #, c-format msgid "%s directory created with default configuration." msgstr "створаны каталаг %s са стандартнай канфігурацыяй." #: ../src/main.c:505 ../src/main.c:510 #, c-format msgid "%s:could not execute initialization script" msgstr "%s: немагчыма выканаць ініцыялізацыйны скрыпт" #: ../src/main.c:530 ../src/main.c:535 #, c-format msgid "%s:could not execute exit script" msgstr "%s:немагчыма выканаць скрыпт па выхадзе" #: ../src/main.c:663 ../src/main.c:671 ../src/main.c:679 ../src/main.c:699 #, c-format msgid "too few arguments for %s" msgstr "замала аргументаў для %s" #: ../src/main.c:683 #, c-format msgid "bad value for visualid: \"%s\"" msgstr "дрэннае значэнне ідэнтыфікатара відэарэжыму: \"%s\"" #: ../src/main.c:707 #, c-format msgid "%s: invalid argument '%s'\n" msgstr "%s: дрэнны аргумент '%s'\n" #: ../src/main.c:708 #, c-format msgid "Try '%s --help' for more information\n" msgstr "%s --help можа даць больш інфармацыі\n" #: ../src/main.c:739 msgid "X server does not support locale" msgstr "X-сервер не падтрымлівае лакалі" #: ../src/main.c:743 msgid "cannot set locale modifiers" msgstr "немагчыма задаць мадыфікатары лакалі" #: ../src/main.c:759 #, c-format msgid "could not open display \"%s\"" msgstr "немагчыма адкрыць дысплей \"%s\"" #: ../src/menu.c:1264 msgid "could not grab keyboard" msgstr "немагчыма захапіць клавіятуру" #: ../src/menu.c:2578 #, c-format msgid "bad value in menus state info:%s" msgstr "дрэннае значэнне інфармацыі аб стане меню:%s" #: ../src/menureader.c:264 ../src/rootmenu.c:733 #, c-format msgid "%s:could not stat menu" msgstr "%s: немагчыма атрымаць інфармацыю аб меню" #: ../src/menureader.c:341 ../src/menureader.c:380 #, c-format msgid "could not stat() menu file '%s'" msgstr "немагчыма выканаць stat() на файл меню '%s'" #: ../src/menureader.c:416 #, c-format msgid "could not find menu file '%s' referenced in WMRootMenu" msgstr "немагчыма знайсці файл меню '%s' на які ёсць спасылка ў WMRootMenu" #: ../src/menureader.c:423 #, c-format msgid "could not find any usable menu files. Please check '%s'" msgstr "немагчыма знайсці ніякіх файлаў меню. Калі ласка, праверце '%s'" #: ../src/menureader.c:438 ../src/rootmenu.c:1668 #, c-format msgid "" "using default menu file \"%s\" as the menu referenced in WMRootMenu could " "not be found " msgstr "" "будзе ўжыты стандартны файл меню \"%s\" бо меню на якое спасылаецца " "WMRootMenu ня знойдзена" #: ../src/menureader.c:457 #, c-format msgid "" "invalid content in menu file '%s'.\n" "It should either be a property list menu or the path to the file, enclosed " "in \"." msgstr "" "Дрэнны склад файла менб '%s'.\n" "Павінны быць або меню са спісу ўласцівасцяў, або шлях да файла, заключаны " "ў двукоссі \"" #: ../src/misc.c:71 #, c-format msgid "could not define value for %s for cpp" msgstr "немагчыма задаць значэнне %s для cpp" #: ../src/misc.c:101 #, c-format msgid "could not get password entry for UID %i" msgstr "немагчыма атрымаць пароль для UID %i" #: ../src/misc.c:126 #, c-format msgid "your machine is misconfigured. HOSTNAME is set to %s" msgstr "ваша машына дрэнна сканфігуравана. HOSTNAME устаноўлена ў %s" #: ../src/misc.c:132 #, c-format msgid "your machine is misconfigured. HOST is set to %s" msgstr "ваша машына дрэнна сканфігуравана. HOST устаноўлена ў %s" #: ../src/misc.c:630 msgid "Program Arguments" msgstr "Аргументы праграмы" #: ../src/misc.c:631 msgid "Enter command arguments:" msgstr "Задайце агрументы праграмы:" #: ../src/misc.c:724 msgid "unable to get dropped data from DND drop" msgstr "немагчыма атрымаць дазденыя перанесеныя з DND" #: ../src/misc.c:732 msgid "error getting dropped data from DND drop" msgstr "памылка атрымання дазденых перанесеных з DND" #: ../src/misc.c:738 msgid "out of memory while getting data from DND drop" msgstr "не хапае памяці падчас атрымання дазденых перанесеных з DND" #: ../src/misc.c:783 ../src/misc.c:923 #, c-format msgid "out of memory during expansion of \"%s\"" msgstr "не хапае памяці каб выканаць \"%s\"" #: ../src/misc.c:837 msgid "out of memory during expansion of \"%w\"" msgstr "не хапіла памяці падчас падстаноўкі \"%w\"" #: ../src/misc.c:855 msgid "out of memory during expansion of \"%W\"" msgstr "не хапіла памяці падчас падстаноўкі \"%W\"" #: ../src/misc.c:871 msgid "out of memory during expansion of \"%a\"" msgstr "не хапіла памяці падчас падстаноўкі \"%a\"" #: ../src/misc.c:902 #, c-format msgid "out of memory during expansion of \"%d\"" msgstr "не хапіла памяці падчас падстаноўкі \"%d\"" #: ../src/misc.c:916 msgid "selection not available" msgstr "вылучэнне недаступна" #: ../src/misc.c:972 ../src/misc.c:978 #, c-format msgid "bad window name value in %s state info" msgstr "дрэннае імя вакна ў інфармацыі аб стане %s" #: ../src/misc.c:1235 msgid "could not send message to background image helper" msgstr "немагчыма даслаць паведамленне да фонавага апрацоўшчыка выяў" #: ../src/pixmap.c:235 #, c-format msgid "could not load mask bitmap file \"%s\". Won't use mask" msgstr "немагчыма загрузіць файл бітавай маскі \"%s\". Маска ня будзе ужывацца" #: ../src/resources.c:44 #, c-format msgid "could not parse color \"%s\"" msgstr "немагчыма апрацаваць колер \"%s\"" #: ../src/resources.c:48 #, c-format msgid "could not allocate color \"%s\"" msgstr "немагчыма вылучыць месца для колера \"%s\"" #: ../src/rootmenu.c:196 ../src/rootmenu.c:198 msgid "Exit" msgstr "Выхад" #: ../src/rootmenu.c:197 msgid "Exit window manager?" msgstr "Выйці з ваконнага менеджара?" #: ../src/rootmenu.c:245 msgid "Close X session" msgstr "Закрыць X-сесію" #: ../src/rootmenu.c:246 msgid "" "Close Window System session?\n" "Kill might close applications with unsaved data." msgstr "" "Закрыць сесію ў Window System?\n" "Пры гэтым будуць закрыты праграмы з незахаванымі зменамі." #: ../src/rootmenu.c:261 msgid "Kill X session" msgstr "Прымусова закрыць X-сесію" #: ../src/rootmenu.c:262 msgid "" "Kill Window System session?\n" "(all applications will be closed)" msgstr "" "Завершыць прымусова сесію Window System?\n" "(усе праграмы будуць завершаны)" #: ../src/rootmenu.c:539 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\" for entry %s" msgstr "%s: дрэнная камбінацыя клавіш \"%s\" для элемента %s" #: ../src/rootmenu.c:547 #, c-format msgid "%s:invalid key in shortcut \"%s\" for entry %s" msgstr "%s: дрэнная клавіша ў камбінацыі \"%s\" для элемента %s" #: ../src/rootmenu.c:600 #, c-format msgid "%s: unmatched '\"' in menu file" msgstr "%s: двукоссе \" ня мае пары ў файле меню" #: ../src/rootmenu.c:650 #, c-format msgid "%s: missing command" msgstr "%s: адсутнічае каманда" #: ../src/rootmenu.c:682 #, c-format msgid "invalid OPEN_MENU specification: %s" msgstr "дрэнная спецыфікацыя OPEN_MENU: %s" #: ../src/rootmenu.c:741 #, c-format msgid "%s:could not stat menu:%s" msgstr "%s: немагчыма атрымаць інфармацыю аб меню:%s" #: ../src/rootmenu.c:759 #, c-format msgid "too many parameters in OPEN_MENU: %s" msgstr "зашмат параметраў у OPEN_MENU: %s" #: ../src/rootmenu.c:803 msgid "" "There are more than one WORKSPACE_MENU commands in the applications menu. " "Only one is allowed." msgstr "" "Меню праграм мае некалькі каманд WORKSPACE_MENU. Дазваляецца толькі адна." #: ../src/rootmenu.c:837 msgid "" "There are more than one WINDOWS_MENU commands in the applications menu. Only " "one is allowed." msgstr "" "Меню праграм мае некалькі каманд WINDOWS_MENU. Дазваляецца толькі адна." #: ../src/rootmenu.c:842 msgid "Window List" msgstr "Cпіс вакон" #: ../src/rootmenu.c:871 ../src/rootmenu.c:889 ../src/rootmenu.c:899 #, c-format msgid "%s:missing parameter for menu command \"%s\"" msgstr "%s:адсутнічае параметр для каманды меню \"%s\"" #: ../src/rootmenu.c:967 #, c-format msgid "%s:unknown command \"%s\" in menu config." msgstr "%s:невядомая каманда \"%s\" у канфігурацыі меню." #: ../src/rootmenu.c:975 #, c-format msgid "%s:can't add shortcut for entry \"%s\"" msgstr "%s:немагчыма задаць камбінацыю клавіш для \"%s\"" #: ../src/rootmenu.c:1112 #, c-format msgid "%s:maximal line size exceeded in menu config: %s" msgstr "%s:перавышана максімальная даўжыня стракі ў канфігурацыі меню: %s" #: ../src/rootmenu.c:1134 ../src/rootmenu.c:1227 ../src/rootmenu.c:1330 #, c-format msgid "%s:missing command in menu config: %s" msgstr "%s:адсутнічае каманда ў канфігурацыі меню :%s" #: ../src/rootmenu.c:1164 #, c-format msgid "%s:syntax error in menu file:END declaration missing" msgstr "%s: сінтаксічная памылка ў файле меню: адсутнічае END" #: ../src/rootmenu.c:1193 ../src/rootmenu.c:1294 msgid "could not make arguments for menu file preprocessor" msgstr "немагчыма стварыць агрументы для прэпрацэсара меню" #: ../src/rootmenu.c:1200 ../src/rootmenu.c:1302 #, c-format msgid "%s:could not open/preprocess menu file" msgstr "%s: немагчыма адкрыць ці апрацаваць файл меню" #: ../src/rootmenu.c:1212 ../src/rootmenu.c:1315 #, c-format msgid "could not open menu file \"%s\": %s" msgstr "немагчыма адкрыць файл меню \"%s\": %s" #: ../src/rootmenu.c:1239 #, c-format msgid "%s:invalid menu file. MENU command is missing" msgstr "%s: дрэнны файл меню. Адсутнічае каманда MENU" #: ../src/rootmenu.c:1248 msgid "error reading preprocessed menu data" msgstr "памылка чытання апрацаваных дадзеных меню" #: ../src/rootmenu.c:1342 #, c-format msgid "%s:no title given for the root menu" msgstr "%s: у галоўнага меню няма загалоўка" #: ../src/rootmenu.c:1433 ../src/rootmenu.c:1506 ../src/rootmenu.c:1547 #, c-format msgid "out of memory while constructing directory menu %s" msgstr "не хапіла памяці каб пабудаваць меню каталагаў %s" #: ../src/rootmenu.c:1443 #, c-format msgid "%s:could not stat file \"%s\" in menu directory" msgstr "%s:немагчыма атрымаць інфармацыю аб файле \"%s\" у каталаге меню" #: ../src/rootmenu.c:1601 msgid "Commands" msgstr "Каманды" #: ../src/rootmenu.c:1604 msgid "Restart" msgstr "Перазапуск" #: ../src/rootmenu.c:1605 msgid "Exit..." msgstr "Выхад..." #: ../src/rootmenu.c:1650 #, c-format msgid "could not find menu file \"%s\" referenced in WMRootMenu" msgstr "немагчыма знайсці файл меню \"%s\" на які спасылаецца WMRootMenu" #: ../src/rootmenu.c:1657 #, c-format msgid "could not access menu \"%s\" referenced in WMRootMenu" msgstr "няма доступу да файла меню \"%s\" на які спасылаецца WMRootMenu" #: ../src/rootmenu.c:1691 ../src/rootmenu.c:1767 #, c-format msgid "%s:format error in root menu configuration \"%s\"" msgstr "%s: памылковы фармат канфігурацыі галоўнага меню \"%s\"" #: ../src/rootmenu.c:1855 msgid "" "The applications menu could not be loaded. Look at the console output for a " "detailed description of the errors." msgstr "" "Немагчыма загрузіць меню праграм. Глядзіце падрабязнасці ў вывадзе на кансоль." #: ../src/screen.c:747 #, c-format msgid "could not initialize graphics library context: %s" msgstr "немагчыма ініцыялізаваць кантэкст графічнай бібліятэкі: %s" #: ../src/screen.c:778 msgid "could not do initialization of WINGs widget set" msgstr "немагчыма ініцыялізаваць бібліятэку віджэтаў WINGs" #: ../src/screen.c:1144 #, c-format msgid "could not save session state in %s" msgstr "немагчыма захаваць стан сесіі ў %s" #: ../src/session.c:183 ../src/wdefaults.c:589 ../src/winspector.c:454 #, c-format msgid "can't convert \"%s\" to boolean" msgstr "немагчыма сканвертаваць \"%s\" да boolean" #: ../src/session.c:1023 msgid "out of memory while saving session state" msgstr "не хапіла памяці каб захаваць стан сесіі" #: ../src/session.c:1106 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:1244 msgid "connection to the session manager was lost" msgstr "згублена злучэнне з менеджарам сесій" #: ../src/stacking.c:79 msgid "could not get window list!!" msgstr "немагчыма атрымаць спіс вакон!!" #: ../src/startup.c:202 #, c-format msgid "internal X error: %s\n" msgstr "унутраная памылка X:%s\n" #: ../src/startup.c:260 #, c-format msgid "got signal %i (%s) - restarting\n" msgstr "атрыманы сігнал %i (%s) - перазапуск\n" #: ../src/startup.c:262 #, c-format msgid "got signal %i - restarting\n" msgstr "атрыманы сігнал %i - перазапуск\n" #: ../src/startup.c:272 #, c-format msgid "got signal %i (%s) - rereading defaults\n" msgstr "атрыманы сігнал %i(%s) - перачытваю стандартную канфігурацыю\n" #: ../src/startup.c:274 #, c-format msgid "got signal %i - rereading defaults\n" msgstr "атрыманы сігнал %i - перачытваю стандартную канфігурацыю\n" #: ../src/startup.c:284 #, c-format msgid "got signal %i (%s) - exiting...\n" msgstr "атрыманы сігнал %i (%s) - выхад...\n" #: ../src/startup.c:286 #, c-format msgid "got signal %i - exiting...\n" msgstr "атрыманы сігнал %i - выхад...\n" #: ../src/startup.c:329 #, c-format msgid "got signal %i (%s)\n" msgstr "атрыманы сігнал %i (%s)\n" #: ../src/startup.c:331 #, c-format msgid "got signal %i\n" msgstr "атрыманы сігнал %i\n" #: ../src/startup.c:342 msgid "" "crashed while trying to do some post-crash cleanup. Aborting immediatelly." msgstr "" "крытычная памылка падчас апрацоўкі крытычнай памылкі. Тэрміновы выхад." #. we try to restart Window Maker #: ../src/startup.c:406 msgid "trying to restart Window Maker..." msgstr "спроба перазапусціць Window Maker..." #: ../src/startup.c:411 msgid "trying to start alternate window manager..." msgstr "спроба запусціць іншы ваконны менеджар..." #: ../src/startup.c:417 msgid "failed to start alternate window manager. Aborting." msgstr "не магчыма запусціць іншы ваконны менеджар. Выхад." #: ../src/startup.c:419 msgid "" "a fatal error has occured, probably due to a bug. Please fill the included " "BUGFORM and report it." msgstr "" " Гэты крытычны збой магчыма вызваны памылкамі ў WindowMaker." "Дашліце нам запоўненае паведамленне аб памылке (BUGFORM)" #: ../src/startup.c:894 #, 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:922 msgid "XKB is not supported. KbdModeLock is automatically disabled." msgstr "XKB не падтрымліваецца. KbdModeLock аўтаматычна забаронены." #: ../src/startup.c:941 msgid "it seems that there is already a window manager running" msgstr "здаецца нейкі іншы ваконны менеджар ужо працуе" #: ../src/startup.c:947 #, c-format msgid "could not manage screen %i" msgstr "немагчыма кіраваць экранам %i" #: ../src/startup.c:1015 msgid "could not manage any screen" msgstr "немагчыма кіраваць ніводным экранам" #: ../src/switchmenu.c:137 msgid "Windows" msgstr "Вокны" #: ../src/texture.c:329 ../src/texture.c:371 #, c-format msgid "image file \"%s\" used as texture could not be found." msgstr "немагчыма знайсці файл выявы для тэкстуры \"%s\"" #: ../src/texture.c:335 ../src/texture.c:377 #, c-format msgid "could not load texture pixmap \"%s\":%s" msgstr "немагчыма загрузіць выяву тэкстуры \"%s:%s\"" #: ../src/texture.c:437 #, c-format msgid "library \"%s\" cound not be opened." msgstr "немагчыма адкрыць бібліятэку \"%s\"" #: ../src/texture.c:446 #, c-format msgid "function \"%s\" not found in library \"%s\"" msgstr "немагчыма знайсці функцыю \"%s\" y бібліятэцы \"%s\"" #: ../src/texture.c:453 msgid "function textures not supported on this system, sorry." msgstr "гэта сістэма не падтрымлівае працэдурныя тэкстуры." #: ../src/texture.c:598 msgid "could not allocatь image buffer" msgstr "немагчыма вылучыць памяць пад буфер выявы" #: ../src/wdefaults.c:437 #, c-format msgid "could not find icon file \"%s\"" msgstr "немагчыма адкрыць файл іконкі \"%s\"" #: ../src/window.c:2942 ../src/window.c:3081 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:126 msgid "" "This will kill the application.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" "Усе праграмы будуць прымусова завершаны.\n" "Незахаваныя змяненні будуць страчаны.\n" "Пацвердзце калі ласка." #: ../src/winmenu.c:272 ../src/winmenu.c:281 msgid "Set Shortcut" msgstr "Задаць камбінацыю клавіш" #: ../src/winmenu.c:359 ../src/winmenu.c:404 msgid "could not create submenu for window menu" msgstr "немагчыма стварыць падменю для ваконнага меню" #: ../src/winmenu.c:408 msgid "Keep on top" msgstr "Трымаць над усімі" #: ../src/winmenu.c:413 msgid "Keep at bottom" msgstr "Трымаць пад усімі" #: ../src/winmenu.c:457 ../src/winmenu.c:600 msgid "Shade" msgstr "Зкруціць" #: ../src/winmenu.c:473 msgid "Hide Others" msgstr "Схаваць іншыя" #: ../src/winmenu.c:481 msgid "Resize/Move" msgstr "Змяніць памер/перанесці" #: ../src/winmenu.c:489 msgid "Select" msgstr "Абраць" #: ../src/winmenu.c:502 msgid "Attributes..." msgstr "Атрыбуты..." #: ../src/winmenu.c:504 msgid "Options" msgstr "Параметры" #: ../src/winmenu.c:595 msgid "Unshade" msgstr "Разкруціць" #: ../src/winspector.c:387 #, c-format msgid "Could not find icon \"%s\" specified for this window" msgstr "Немагчыма знайсці азначаную для гэтага вакна іконку \"%s\"" #: ../src/winspector.c:404 #, c-format msgid "Could not open specified icon \"%s\":%s" msgstr "Немагчыма адкрыць азначаную іконку \"%s\":%s" #: ../src/winspector.c:1121 #, c-format msgid "Inspecting %s.%s" msgstr "Агляд %s.%s" #: ../src/winspector.c:1147 msgid "Click in the window you wish to inspect." msgstr "З дапамогай мышкі абярыце вакно для агляду." #: ../src/winspector.c:1186 msgid "" "The configuration will apply to all\n" "windows that have their WM_CLASS\n" "property set to the above selected\n" "name, when saved." msgstr "" "Пасля захавання гэтая канфігурацыя\n" "будзе ўжывацца для ўсіх вакон,\n" "якія маюць вышэй азначаную\n" "ўласцівасць WM_CLASS." #: ../src/winspector.c:1215 msgid "Save" msgstr "Захаваць" #: ../src/winspector.c:1223 msgid "Apply" msgstr "Ужыць" #: ../src/winspector.c:1229 msgid "Reload" msgstr "Адкаціць" #: ../src/winspector.c:1238 ../src/winspector.c:1248 msgid "Window Specification" msgstr "Спецыфікацыя вакна" #: ../src/winspector.c:1239 msgid "Window Attributes" msgstr "Атрыбуты вакна" #: ../src/winspector.c:1240 msgid "Advanced Options" msgstr "Прасунутыя параметры" #: ../src/winspector.c:1241 msgid "Icon and Initial Workspace" msgstr "Іконка і пачатковае працамесца" #: ../src/winspector.c:1242 msgid "Application Specific" msgstr "Спецыфічныя настройкі" #: ../src/winspector.c:1256 msgid "Defaults for all windows" msgstr "Стандартныя настройкі для ўсіх вакон" #: ../src/winspector.c:1310 msgid "Select window" msgstr "Абраць вакно" #: ../src/winspector.c:1324 msgid "Attributes" msgstr "Атрыбуты" #: ../src/winspector.c:1335 msgid "Disable titlebar" msgstr "Забароніць загаловак" #: ../src/winspector.c:1337 msgid "" "Remove the titlebar of this window.\n" "To access the window commands menu of a window\n" "without it's titlebar, press Control+Esc (or the\n" "equivalent shortcut, if you changed the default\n" "settings)." msgstr "" "Не паказваць загаловак для гэтага вакна.\n" "Меню вакна без загалоўка можа быць вызвана\n" "па Control-Esc ці эквівалентнай камбінацыяй,\n" "калі стандартныя настройкі былі зменены." #: ../src/winspector.c:1344 msgid "Disable resizebar" msgstr "Забароніць рамку памеру" #: ../src/winspector.c:1346 msgid "Remove the resizebar of this window." msgstr "Не паказваць рамку змены памеру для вакна" #: ../src/winspector.c:1349 msgid "Disable close button" msgstr "Забароніць кнопку закрыцця" #: ../src/winspector.c:1351 msgid "Remove the `close window' button of this window." msgstr "Не паказваць кнопку закрыцця вакна" #: ../src/winspector.c:1354 msgid "Disable miniaturize button" msgstr "Забароніць кнопку мінімізацыі" #: ../src/winspector.c:1356 msgid "Remove the `miniaturize window' button of the window." msgstr "Не паказваць кнопку мінімізацыі для вакна" #: ../src/winspector.c:1359 msgid "Disable border" msgstr "Забароніць рамку" #: ../src/winspector.c:1361 msgid "Remove the 1 pixel black border around the window." msgstr "Не паказваць вузкую чорную рамку для вакна." #: ../src/winspector.c:1364 msgid "Keep on top (floating)" msgstr "Трымаць над усімі" #: ../src/winspector.c:1366 msgid "" "Keep the window over other windows, not allowing\n" "them to cover it." msgstr "" "Трымаць вакно над усімі вокнамі, не дазваляючы\n" "ім яго перакрываць." #: ../src/winspector.c:1370 msgid "Keep at bottom (sunken)" msgstr "Трымаць пад усімі" #: ../src/winspector.c:1372 msgid "Keep the window under all other windows." msgstr "Трымаць вакно пад усімі іншымі вокнамі." #: ../src/winspector.c:1377 msgid "Make window present in all workspaces." msgstr "Вакно прысутнічае ва ўсіх працамесцах." #: ../src/winspector.c:1380 msgid "Start miniaturized" msgstr "Запускаць мінімізаваным" #: ../src/winspector.c:1382 msgid "" "Make the window be automatically miniaturized when it's\n" "first shown." msgstr "" "Мінімізаваць вакно пры першым з'яўленні на экране." #: ../src/winspector.c:1386 msgid "Start maximized" msgstr "Запускаць максімізаваным" #: ../src/winspector.c:1388 msgid "" "Make the window be automatically maximized when it's\n" "first shown." msgstr "" "Максімізаваць вакно пры першым з'яўленні на экране." #: ../src/winspector.c:1392 msgid "Full screen maximization" msgstr "Максімізаваць на ўвесь экран" #: ../src/winspector.c:1394 msgid "" "Make the window use the whole screen space when it's\n" "maximized. The titlebar and resizebar will be moved\n" "to outside the screen." msgstr "" "Максімізаванае вакно будзе займаць увесь экран.\n" "Загаловак і рамка змянення памеру будуць за межамі экрану." #: ../src/winspector.c:1411 msgid "Advanced" msgstr "Прасунутыя параметры" #: ../src/winspector.c:1428 msgid "Do not bind keyboard shortcuts" msgstr "Не перахопліваць свае клавішы" #: ../src/winspector.c:1430 msgid "" "Do not bind keyboard shortcuts from Window Maker\n" "when this window is focused. This will allow the\n" "window to receive all key combinations regardless\n" "of your shortcut configuration." msgstr "" "Не перахопліваць клавіятурныя камбінацыі Window Maker\n" "калі гэтае вакно валодае фокусам. Дазваляе вакну атрымліваць\n" "усе клавіятурныя камбінацыі, нават тыя, што выкарыстоўваюцца\n" "ў Window Maker" #: ../src/winspector.c:1436 msgid "Do not bind mouse clicks" msgstr "Не перахопліваць падзеі мышы" #: ../src/winspector.c:1438 msgid "" "Do not bind mouse actions, such as `Alt'+drag\n" "in the window (when Alt is the modifier you have\n" "configured)." msgstr "" "Не перахопліваць паздеі ад мышы, такія як\n" "перацягванне вакна з дапамогай Alt, у гэтым вакне." #: ../src/winspector.c:1443 msgid "Do not show in the window list" msgstr "Не паказваць у спісе вакон" #: ../src/winspector.c:1445 msgid "Do not list the window in the window list menu." msgstr "Не паказваць вакно ў меню спіса вакон." #: ../src/winspector.c:1448 msgid "Do not let it take focus" msgstr "Не атрымліваць фокус" #: ../src/winspector.c:1450 msgid "" "Do not let the window take keyboard focus when you\n" "click on it." msgstr "" "Не дазваляць вакну атрымліваць фокус." #: ../src/winspector.c:1454 msgid "Keep inside screen" msgstr "Трымаць у межах экрану" #: ../src/winspector.c:1456 msgid "" "Do not allow the window to move itself completely\n" "outside the screen. For bug compatibility.\n" msgstr "" "Не дазваляць пераносіць вакно за межы экрану.\n" "Толькі дзеля сумясцімасці.\n" #: ../src/winspector.c:1460 msgid "Ignore 'Hide Others'" msgstr "Ігнараваць 'Схаваць іншыя'" #: ../src/winspector.c:1462 msgid "" "Do not hide the window when issuing the\n" "`HideOthers' command." msgstr "" "Не хаваць вакно калі вызвана\n" "каманда 'Схаваць іншыя'" #: ../src/winspector.c:1466 msgid "Ignore 'Save Session'" msgstr "Ігнараваць 'Захаваць сесію'" #: ../src/winspector.c:1468 msgid "" "Do not save the associated application in the\n" "session's state, so that it won't be restarted\n" "together with other applications when Window Maker\n" "starts." msgstr "" "Не захоўваць інфармацыю аб праграме ў стане\n" "сесіі, так што яна не будзе запускацца разам\n" "з іншымі праграмамі пры запуске Window Maker" #: ../src/winspector.c:1474 msgid "Emulate application icon" msgstr "Эмуляваць іконку праграмы" #: ../src/winspector.c:1476 msgid "" "Make this window act as an application that provides\n" "enough information to Window Maker for a dockable\n" "application icon to be created." msgstr "" "Прымусіць вакно дзейнічаць як праграму, якая\n" "забяспечвае Window Maker неабходнай інфармацыяй\n" "для стварэння іконкі праграмы." #: ../src/winspector.c:1482 msgid "Disable language button" msgstr "Забароніць кнопук мовы" #: ../src/winspector.c:1484 msgid "Remove the `toggle language' button of the window." msgstr "Не паказваць кнопку выбара мовы для вакна" #: ../src/winspector.c:1501 msgid "Miniwindow Image" msgstr "Выява мінівакна" #: ../src/winspector.c:1528 msgid "Icon filename:" msgstr "Імя файла іконкі:" #: ../src/winspector.c:1541 msgid "Ignore client supplied icon" msgstr "Ігнараваць кліентскую іконку" #: ../src/winspector.c:1548 msgid "Initial Workspace" msgstr "Пачатковае працамесца" #: ../src/winspector.c:1550 msgid "The workspace to place the window when it's first shown." msgstr "Працамесца ў якім будзе адкрывацца вакно па запуску" #: ../src/winspector.c:1556 msgid "Nowhere in particular" msgstr "Дзе заўгодна" #: ../src/winspector.c:1574 msgid "Application Attributes" msgstr "Атрыбуты праграмы" #: ../src/winspector.c:1585 msgid "Start hidden" msgstr "Запускаць схаваным" #: ../src/winspector.c:1587 msgid "Automatically hide application when it's started." msgstr "Аўтаматычна хаваць праграму пры запуску" #: ../src/winspector.c:1590 msgid "No application icon" msgstr "Забароніць іконку праграмы" #: ../src/winspector.c:1592 msgid "" "Disable the application icon for the application.\n" "Note that you won't be able to dock it anymore,\n" "and any icons that are already docked will stop\n" "working correctly." msgstr "" "Забароніць іконку праграмы. Пры гэтым яго\n" "нельга будзе задакаваць, а ўжо задакаваныя іконкі\n" "гэтай праграмы будуць працаваць некарэктна." #: ../src/winspector.c:1598 msgid "Shared application icon" msgstr "Падзяляемая іконка праграмы" #: ../src/winspector.c:1600 msgid "" "Use a single shared application icon for all of\n" "the instances of this application.\n" msgstr "" "Выкарыстоўваць адзіную іконку праграмы для\n" "ўсіх экзэмпляраў гэтай праграмы.\n" #: ../src/wmspec.c:277 msgid "out of memory while updating wm hints" msgstr "не хапіла памяці падчас абноўлення падказак" #: ../src/workspace.c:107 ../src/workspace.c:108 ../src/workspace.c:893 #, c-format msgid "Workspace %i" msgstr "Працамесца %i" #: ../src/workspace.c:943 msgid "Workspaces" msgstr "Працамесцы" #: ../src/workspace.c:945 msgid "could not create Workspace menu" msgstr "немагчыма стварыць меню працамесца" #: ../src/workspace.c:952 msgid "New" msgstr "Стварыць" #: ../src/workspace.c:953 msgid "Destroy Last" msgstr "Знішчыць апоешняе" WindowMaker-0.95.9/po/ru.po0000644000175000017500000020035113431646201012373 00000000000000# # Initial translation # August S. Sigov # # Brought up-to-date for 0.17.5 # and maintained up to 0.53.0 by # Alexey Vyskubov # Michael Sobolev # # Modified for 0.70.0 - 0.80.1 by # Andrew W. Nosenko msgid "" msgstr "" "Project-Id-Version: WindowMaker 0.80.1\n" "POT-Creation-Date: 2002-09-12 09:28+0300\n" "PO-Revision-Date: 2002-10-04 08:56+0300\n" "Last-Translator: awn@bcs.zp.ua\n" "Language-Team: Russian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../src/appicon.c:426 ../src/dialog.c:304 ../src/dock.c:3326 #: ../src/dockedapp.c:230 ../src/main.c:273 ../src/rootmenu.c:1854 #: ../src/winspector.c:389 ../src/winspector.c:406 msgid "Error" msgstr "Ошибка" #: ../src/appicon.c:427 msgid "Could not open specified icon file" msgstr "Невозможно открыть указанный файл с иконкой" #: ../src/appicon.c:428 ../src/dialog.c:201 ../src/dialog.c:304 #: ../src/dialog.c:751 ../src/dialog.c:1850 ../src/dock.c:526 #: ../src/dock.c:534 ../src/dock.c:558 ../src/dock.c:3327 #: ../src/dockedapp.c:231 ../src/dockedapp.c:426 ../src/main.c:273 #: ../src/rootmenu.c:1858 ../src/winspector.c:390 ../src/winspector.c:407 msgid "OK" msgstr "OK" #: ../src/appicon.c:456 ../src/dock.c:264 msgid "" " will be forcibly closed.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" " будет форсированно завершено.\n" "Все несохраненные изменения будут потеряны.\n" "Пожалуйста, подтвердите." # #: ../src/appicon.c:464 ../src/dock.c:283 ../src/winmenu.c:125 msgid "Kill Application" msgstr "Аварийное завершение" #: ../src/appicon.c:465 ../src/dock.c:284 ../src/winmenu.c:127 msgid "Yes" msgstr "Да" #: ../src/appicon.c:465 ../src/dock.c:284 ../src/winmenu.c:127 msgid "No" msgstr "Нет" #: ../src/appicon.c:495 ../src/dock.c:1178 ../src/dock.c:3492 msgid "Unhide Here" msgstr "Раскрыть здесь" #: ../src/appicon.c:496 ../src/appicon.c:521 ../src/dock.c:1180 #: ../src/dock.c:1182 ../src/dock.c:3504 ../src/winmenu.c:465 msgid "Hide" msgstr "Скрыть" #: ../src/appicon.c:497 msgid "Set Icon..." msgstr "Установить иконку..." #: ../src/appicon.c:498 ../src/dock.c:1186 ../src/rootmenu.c:248 #: ../src/rootmenu.c:264 ../src/winmenu.c:520 msgid "Kill" msgstr "Убить" #: ../src/appicon.c:519 ../src/dock.c:3502 msgid "Unhide" msgstr "Раскрыть" #: ../src/application.c:398 #, c-format msgid "recreating missing icon '%s'" msgstr "" #: ../src/defaults.c:922 ../src/defaults.c:1011 #, c-format msgid "Domain %s (%s) of global defaults database is corrupted!" msgstr "Домен %s (%s) в глобальном файле установок поврежден!" #: ../src/defaults.c:927 #, c-format msgid "could not load domain %s from global defaults database" msgstr "не удалось загрузить домен %s из глобального файла установок" #: ../src/defaults.c:949 ../src/startup.c:884 ../src/startup.c:902 #: ../src/startup.c:908 #, c-format msgid "could not read domain \"%s\" from defaults database" msgstr "не удалось прочитать значение по умолчанию домена \"%s\"" #: ../src/defaults.c:995 ../src/defaults.c:1099 ../src/defaults.c:1140 #: ../src/defaults.c:1196 #, c-format msgid "Domain %s (%s) of defaults database is corrupted!" msgstr "Домен %s (%s) в файле установок поврежден!" #: ../src/defaults.c:1000 ../src/defaults.c:1119 ../src/defaults.c:1176 #: ../src/defaults.c:1205 #, c-format msgid "could not load domain %s from user defaults database" msgstr "не удалось загрузить домен \"%s\" из пользовательского файла установок" #: ../src/defaults.c:1030 #, c-format msgid "could not load domain %s from global defaults database (%s)" msgstr "не удалось загрузить домен %s из глобального файла установок (%s)" #: ../src/defaults.c:1166 ../src/screen.c:460 #, c-format msgid "could not load logo image for panels: %s" msgstr "не удалось загрузить картинку-лого для панелей: %s" #. --------------------------- Local ----------------------- #: ../src/defaults.c:1414 ../src/defaults.c:1556 ../src/defaults.c:1668 #: ../src/defaults.c:2147 ../src/defaults.c:2164 ../src/defaults.c:2209 #: ../src/defaults.c:2256 ../src/defaults.c:2729 ../src/wdefaults.c:571 #: ../src/wdefaults.c:607 #, c-format msgid "Wrong option format for key \"%s\". Should be %s." msgstr "Неверный формат параметра для ключа \"%s\". Должен быть %s." #: ../src/defaults.c:1416 ../src/defaults.c:1497 ../src/defaults.c:1529 #: ../src/defaults.c:1561 ../src/defaults.c:1574 ../src/defaults.c:1589 #: ../src/defaults.c:1603 ../src/defaults.c:1673 ../src/defaults.c:1685 #: ../src/defaults.c:2152 ../src/defaults.c:2169 ../src/defaults.c:2182 #: ../src/defaults.c:2214 ../src/defaults.c:2230 ../src/defaults.c:2261 #: ../src/defaults.c:2348 ../src/defaults.c:2734 ../src/defaults.c:2745 #, c-format msgid "using default \"%s\" instead" msgstr "используем значение по умолчанию (%s)" #: ../src/defaults.c:1447 #, c-format msgid "wrong option value for key \"%s\". Should be one of %s" msgstr "неверное значение для ключа \"%s\". Должно быть одно из %s." #: ../src/defaults.c:1492 #, c-format msgid "can't convert \"%s\" to boolean for key \"%s\"" msgstr "не удалось преобразовать \"%s\" в логическое значение для ключа \"%s\"" #: ../src/defaults.c:1526 #, c-format msgid "can't convert \"%s\" to integer for key \"%s\"" msgstr "Невозможно преобразовать \"%s\" в целое значение для ключа \"%s\"" #: ../src/defaults.c:1569 #, c-format msgid "Incorrect number of elements in array for key \"%s\"." msgstr "Неверное количество элементов в массиве для ключа \"%s\"." #: ../src/defaults.c:1584 #, c-format msgid "Wrong value for key \"%s\". Should be Coordinate." msgstr "Неверное значение параметра для ключа \"%s\". Должно быть Coordinate." #: ../src/defaults.c:1599 #, c-format msgid "can't convert array to integers for \"%s\"." msgstr "не удалось преобразовать массив в набор целых значения для \"%s\"." #: ../src/defaults.c:1797 ../src/defaults.c:1829 ../src/defaults.c:1845 #: ../src/defaults.c:1874 ../src/defaults.c:1897 ../src/defaults.c:1950 #: ../src/defaults.c:1990 ../src/defaults.c:2028 ../src/defaults.c:2044 #, c-format msgid "\"%s\" is not a valid color name" msgstr "\"%s\" не является известным названием цвета" #: ../src/defaults.c:1810 ../src/defaults.c:1862 msgid "bad number of arguments in gradient specification" msgstr "неверное количество аргументов в определении градиента" #: ../src/defaults.c:1923 msgid "too few arguments in multicolor gradient specification" msgstr "слишком мало аргументов в определении многоцветного градиента" #: ../src/defaults.c:2017 msgid "bad number of arguments in textured gradient specification" msgstr "неверное количество аргументов в определении градиента с текстурой" #: ../src/defaults.c:2060 #, c-format msgid "bad opacity value for tgradient texture \"%s\". Should be [0..255]" msgstr "" "неверное значение прозрачности для t-градиента с текстурой \"%s\"; должно " "быть [0..255]" #: ../src/defaults.c:2120 #, c-format msgid "could not initialize library %s" msgstr "не удалось проинициализировать библиотеку %s" #: ../src/defaults.c:2123 #, c-format msgid "could not find function %s::%s" msgstr "не удалось найти функцию %s::%s" #: ../src/defaults.c:2130 #, c-format msgid "invalid texture type %s" msgstr "неверный тип текстуры (%s)" #: ../src/defaults.c:2177 #, c-format msgid "Error in texture specification for key \"%s\"" msgstr "Ошибка в определении текстуры для ключа \"%s\"" #: ../src/defaults.c:2226 msgid "Wrong type for workspace background. Should be a texture type." msgstr "" "Неверный тип для фона Рабочего Пространства; ожидалось значение типа " "\"текстура\"." #: ../src/defaults.c:2274 #, c-format msgid "Wrong type for background of workspace %i. Should be a texture." msgstr "" "Неверный тип для фона Рабочего Пространства #%i; ожидалось значение типа " "\"текстура\"." #: ../src/defaults.c:2316 msgid "could not load any usable font!!!" msgstr "не удалось загрузить подходящий шрифт!!!" #: ../src/defaults.c:2343 #, c-format msgid "could not get color for key \"%s\"" msgstr "не удалось определить цвет для ключа \"%s\"" #: ../src/defaults.c:2401 ../src/rootmenu.c:526 #, c-format msgid "%s:invalid key modifier \"%s\"" msgstr "%s:неверный модификатор клавиши \"%s\"" # #: ../src/defaults.c:2413 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\"" msgstr "%s:недопустимое указание сочетания клавиш \"%s\"" # #: ../src/defaults.c:2420 #, c-format msgid "%s:invalid key in shortcut \"%s\"" msgstr "%s:неверная клавиша в сочетании \"%s\"" #: ../src/defaults.c:2445 #, c-format msgid "%s: modifier key %s is not valid" msgstr "%s: модификатор %s неизвестен" #: ../src/defaults.c:2477 #, c-format msgid "could not load image in option %s: %s" msgstr "не удалось загрузить изображение для параметра %s: %s" # #: ../src/defaults.c:2594 #, c-format msgid "failed to open bitmap file \"%s\"" msgstr "не удалось открыть bitmap-файл \"%s\"" #: ../src/defaults.c:2597 #, c-format msgid "\"%s\" is not a valid bitmap file" msgstr "\"%s\" не является правильным bitmap-файлом" #: ../src/defaults.c:2600 #, c-format msgid "out of memory reading bitmap file \"%s\"" msgstr "исчерпана память во время чтения bitmap-файла \"%s\"" #: ../src/defaults.c:2639 ../src/defaults.c:2672 msgid "bad number of arguments in cursor specification" msgstr "неверное количество аргументов в определении курсора" #: ../src/defaults.c:2655 #, c-format msgid "unknown builtin cursor name \"%s\"" msgstr "неизвестное встроенное имя курсора \"%s\"" #: ../src/defaults.c:2682 ../src/defaults.c:2694 #, c-format msgid "could not find cursor bitmap file \"%s\"" msgstr "не удалось найти bitmap-файл с изображением курсора \"%s\"" #: ../src/defaults.c:2741 #, c-format msgid "Error in cursor specification for key \"%s\"" msgstr "Ошибка в определении курсора для ключа \"%s\"" #: ../src/defaults.c:2826 msgid "could not render texture for icon background" msgstr "не удалось подготовить текстуру для фона иконки" # #: ../src/dialog.c:157 msgid "Save workspace state" msgstr "" "Сохранить состояние\n" "рабочего пространства" #: ../src/dialog.c:201 ../src/dialog.c:758 ../src/dock.c:558 #: ../src/dockedapp.c:431 ../src/rootmenu.c:198 ../src/rootmenu.c:248 #: ../src/rootmenu.c:264 msgid "Cancel" msgstr "Отказ" # #: ../src/dialog.c:299 msgid "Could not open directory \"%s\":\n%s" msgstr "Невозможно открыть каталог \"%s\":\n%s" #: ../src/dialog.c:354 msgid "Could not load image file " msgstr "Невозможно загрузить файл изображения " #: ../src/dialog.c:685 msgid "Directories" msgstr "Каталоги" #: ../src/dialog.c:694 msgid "Icons" msgstr "Иконки" #: ../src/dialog.c:727 msgid "Preview" msgstr "Предпросмотр" # #: ../src/dialog.c:740 msgid "File Name:" msgstr "Имя файла:" #: ../src/dialog.c:764 msgid "Choose File" msgstr "Выберите файл" #: ../src/dialog.c:783 ../src/dialog.c:785 msgid "Icon Chooser" msgstr "Выбор иконки" # intentionally left untranslated #: ../src/dialog.c:1265 ../src/dialog.c:1375 #, c-format msgid "Version %s" msgstr "" # intentionally left untranslated #: ../src/dialog.c:1372 msgid "Window Manager for X" msgstr "" # intentionally left untranslated #: ../src/dialog.c:1397 #, c-format msgid "Using visual 0x%x: %s %ibpp " msgstr "" # intentionally left untranslated #: ../src/dialog.c:1405 msgid "(32 thousand colors)\n" msgstr "" # intentionally left untranslated #: ../src/dialog.c:1408 msgid "(64 thousand colors)\n" msgstr "" # intentionally left untranslated #: ../src/dialog.c:1412 msgid "(16 million colors)\n" msgstr "" # intentionally left untranslated #: ../src/dialog.c:1415 #, c-format msgid "(%d colors)\n" msgstr "" # intentionally left untranslated #: ../src/dialog.c:1425 #, c-format msgid "Total allocated memory: %i kB. Total memory in use: %i kB.\n" msgstr "" # intentionally left untranslated #: ../src/dialog.c:1283 msgid "Image formats: " msgstr "" # intentionally left untranslated #: ../src/dialog.c:1439 msgid "" "\n" "Additional support for: " msgstr "" # intentionally left untranslated #: ../src/dialog.c:1462 msgid " and " msgstr "" # intentionally left untranslated #: ../src/dialog.c:1472 msgid "" "\n" "Sound disabled" msgstr "" # intentionally left untranslated #: ../src/dialog.c:1474 msgid "" "\n" "Sound enabled" msgstr "" #: ../src/dialog.c:1503 msgid "Info" msgstr "" #: ../src/dialog.c:1527 msgid "Merry Christmas!" msgstr "" #: ../src/dialog.c:1417 msgid "" " Window Maker 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.\n" "\n" " Window Maker 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.\n" "\n" " You should have received a copy of the GNU General Public License along " "with this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin Street, Fifth Floor, Boston, MA02110-1301 USA." msgstr "" #: ../src/dialog.c:1621 msgid "Legal" msgstr "" #: ../src/dialog.c:1773 ../src/startup.c:394 msgid "cannot open connection for crashing dialog panel. Aborting." msgstr "" "не удалось открыть соединение к панели аварийного диалога. Завершение работы." #: ../src/dialog.c:1799 msgid "Fatal error" msgstr "Критическая ошибка" #: ../src/dialog.c:1810 #, c-format msgid "" "Window Maker received signal %i\n" "(%s)." msgstr "" "Window Maker: получен сигнал %i\n" "(%s)." #: ../src/dialog.c:1813 #, c-format msgid "Window Maker received signal %i." msgstr "Window Maker: получен сигнал %i." #. Comment for the PO file: the %s is an email address #: ../src/dialog.c:1632 #, c-format msgid "" " This fatal error occured probably due to a bug. Please fill the included " "BUGFORM and report it to %s." msgstr "" " Эта критическая ошибка, возможно, является результатом ошибки в программе. " "Пожалуйста, заполните форму в файле BUGFORM и отправьте по адресу %s." #: ../src/dialog.c:1831 msgid "What do you want to do now?" msgstr "Что делать теперь?" #: ../src/dialog.c:1837 msgid "Select action" msgstr "Укажите действие" #: ../src/dialog.c:1838 msgid "Abort and leave a core file" msgstr "Завершить работу, оставив файл core" #: ../src/dialog.c:1839 msgid "Restart Window Maker" msgstr "Перезапустить Window Maker" #: ../src/dialog.c:1840 msgid "Start alternate window manager" msgstr "Запуск альтернативного диспетчера окон" #: ../src/dialog.c:2018 msgid "" "Window Maker is part of the GNUstep project.\n" "The GNUstep project aims to create a free\n" "implementation of the OpenStep(tm) specification\n" "which is a object-oriented framework for\n" "creating advanced graphical, multi-platform\n" "applications. Additionally, a development and\n" "user desktop enviroment will be created on top\n" "of the framework. For more information about\n" "GNUstep, please visit: www.gnustep.org" msgstr "" #: ../src/dialog.c:2041 msgid "About GNUstep" msgstr "" #: ../src/dock.c:213 #, c-format msgid "Type the name for workspace %i:" msgstr "Введите имя для %i-го рабочего пространства:" # #: ../src/dock.c:214 ../src/dock.c:1142 ../src/dock.c:1145 ../src/dock.c:3410 msgid "Rename Workspace" msgstr "Переименовать пространство" #: ../src/dock.c:520 ../src/dock.c:528 msgid "Warning" msgstr "Предупреждение" #: ../src/dock.c:521 msgid "" "Some icons cannot be made omnipresent. Please make sure that no other icon " "is docked in the same positions on the other workspaces and the Clip is not " "full in some workspace." msgstr "" "Некоторые иконки не могут быть сделаны \"присутствующими везде\". " "Убедитесь, что нет иконок, на том же месте но на других пространствах, и что " "ни на одном из пространств Скрепка не заполнена до краев." #: ../src/dock.c:529 msgid "" "Icon cannot be made omnipresent. Please make sure that no other icon is " "docked in the same position on the other workspaces and the Clip is not full " "in some workspace." msgstr "" "Иконка не может быть сделана \"присутствующей везде\". Убедитесь, что нет " "других иконок, на том же месте но на других пространствах, и что ни на одном " "из пространств Скрепка не заполнена до краев." #: ../src/dock.c:556 msgid "Workspace Clip" msgstr "Скрепка рабочего пространства" #: ../src/dock.c:557 msgid "All selected icons will be removed!" msgstr "Все выделенные иконки будут удалены!" #: ../src/dock.c:608 ../src/dock.c:1157 ../src/dock.c:1159 ../src/dock.c:3446 msgid "Keep Icon" msgstr "Удерживать иконку" # #: ../src/dock.c:609 ../src/dock.c:2138 ../src/dock.c:2279 msgid "Type the command used to launch the application" msgstr "Введите команду, используемую для запуска приложения" # #: ../src/dock.c:965 #, c-format msgid "could not launch application %s\n" msgstr "не удалось запустить приложение %s\n" #: ../src/dock.c:1020 msgid "could not create workspace submenu for Clip menu" msgstr "не удалось создать подменю рабочих пространств для меню Скрепки" #: ../src/dock.c:1079 msgid "could not create options submenu for Clip menu" msgstr "не удалось создать подменю параметров для меню Скрепки" #: ../src/dock.c:1083 ../src/dock.c:1131 msgid "Keep on Top" msgstr "Всегда наверху" #: ../src/dock.c:1089 msgid "Collapsed" msgstr "Свернуто" #: ../src/dock.c:1095 msgid "Autocollapse" msgstr "Автоматически сворачивать" #: ../src/dock.c:1101 msgid "Autoraise" msgstr "Автоматически поднимать" #: ../src/dock.c:1107 msgid "Autoattract Icons" msgstr "Автоматически притягивать иконки" #: ../src/dock.c:1137 msgid "Clip Options" msgstr "Параметры скрепки" #: ../src/dock.c:1147 msgid "Selected" msgstr "Выделено" #: ../src/dock.c:1152 ../src/dock.c:1155 ../src/dock.c:3437 msgid "Select All Icons" msgstr "Выделить все иконки" #: ../src/dock.c:1161 ../src/dock.c:1163 ../src/dock.c:3454 msgid "Move Icon To" msgstr "Переместить иконку..." #: ../src/dock.c:1168 ../src/dock.c:1171 ../src/dock.c:3465 msgid "Remove Icon" msgstr "Удалить иконку" #: ../src/dock.c:1173 msgid "Attract Icons" msgstr "Притягивать иконки" #: ../src/dock.c:1176 msgid "Launch" msgstr "Запустить" #: ../src/dock.c:1184 msgid "Settings..." msgstr "Установки..." #: ../src/dock.c:1549 ../src/dock.c:1656 #, c-format msgid "bad value in docked icon state info %s" msgstr "" "недопустимое значение в информации о состоянии пришвартованной иконки: %s" #: ../src/dock.c:1664 #, c-format msgid "bad value in docked icon position %i,%i" msgstr "недопустимое значение в позиции пришвартованной иконки %i,%i" #: ../src/dock.c:1684 #, c-format msgid "bad value in dock state info:%s" msgstr "недопустимое значение в информации о состоянии Дока: %s" #: ../src/dock.c:1920 msgid "there are too many icons stored in dock. Ignoring what doesn't fit" msgstr "слишком много иконок пришвартовано. Часть иконок не будет выведена." #. icon->forced_dock = 1; #: ../src/dock.c:2137 ../src/dock.c:2278 msgid "Dock Icon" msgstr "Иконка Дока" #: ../src/dock.c:3324 #, c-format msgid "Could not execute command \"%s\"" msgstr "Невозможно выполнить команду \"%s\"" #: ../src/dock.c:3416 msgid "Toggle Omnipresent" msgstr "Переключить \"Присутствует везде\"" #: ../src/dock.c:3421 ../src/kwm.c:637 ../src/winmenu.c:418 #: ../src/winspector.c:1375 msgid "Omnipresent" msgstr "Присутствует везде" #: ../src/dock.c:3435 msgid "Unselect All Icons" msgstr "Сброс выделения для всех иконок" #: ../src/dock.c:3444 msgid "Keep Icons" msgstr "Удерживать иконки" #: ../src/dock.c:3452 msgid "Move Icons To" msgstr "Переместить иконки..." #: ../src/dock.c:3463 msgid "Remove Icons" msgstr "Удалить иконки" #: ../src/dock.c:3494 ../src/kwm.c:643 msgid "Bring Here" msgstr "Перебросить сюда" #: ../src/dockedapp.c:149 #, c-format msgid "could not find icon %s, used in a docked application" msgstr "" "не удалось найти иконку \"%s\", используемую в пришвартованном приложении" # #: ../src/dockedapp.c:229 #, c-format msgid "Could not open specified icon file: %s" msgstr "Не удалось открыть указанный файл иконки: %s" #: ../src/dockedapp.c:231 msgid "Ignore" msgstr "Пропустить" #: ../src/dockedapp.c:333 msgid "Start when Window Maker is started" msgstr "Запустить при старте WindowMaker'а" #: ../src/dockedapp.c:340 msgid "Lock (prevent accidental removal)" msgstr "Заблокировать (от случайного удаления)" # #: ../src/dockedapp.c:344 msgid "Application path and arguments" msgstr "Путь к приложению и аргументы" #: ../src/dockedapp.c:357 msgid "Command for middle-click launch" msgstr "Команда для щелчка средней кнопкой мыши" #: ../src/dockedapp.c:371 #, c-format msgid "%s will be replaced with current selection" msgstr "%s будет заменено текущем выделением" #: ../src/dockedapp.c:376 msgid "Command for files dropped with DND" msgstr "Команда для перетащенных файлов" #: ../src/dockedapp.c:390 #, c-format msgid "%d will be replaced with the file name" msgstr "%d будет заменено на имя файла" # awn: orig: Поддержка для перетаскивания данных не была включена при компиляции< #: ../src/dockedapp.c:394 msgid "DND support was not compiled in" msgstr "" "Поддержка \"перетащил-и-бросил\" (drag-and-drop) не была включена при " "компиляции" #: ../src/dockedapp.c:399 msgid "Icon Image" msgstr "Изображение иконки" #: ../src/dockedapp.c:413 ../src/winspector.c:1513 msgid "Browse..." msgstr "Выбрать..." # #: ../src/dockedapp.c:466 msgid "Docked Application Settings" msgstr "Параметры пришвартованного приложения" #: ../src/framewin.c:649 ../src/framewin.c:744 ../src/menu.c:456 #: ../src/texture.c:594 #, c-format msgid "could not render texture: %s" msgstr "не удалось подготовить текстуру: %s" #: ../src/framewin.c:672 ../src/framewin.c:683 ../src/framewin.c:699 #: ../src/framewin.c:710 ../src/framewin.c:717 ../src/framewin.c:724 #: ../src/icon.c:350 ../src/menu.c:485 #, c-format msgid "error rendering image:%s" msgstr "ошибка при подготовке изображения:%s" #: ../src/framewin.c:777 #, c-format msgid "error rendering image: %s" msgstr "ошибка при подготовке изображения: %s" #: ../src/gnome.c:216 ../src/gnome.c:343 ../src/gnome.c:401 msgid "out of memory while updating GNOME hints" msgstr "исчерпана память при обновлении \"намеков\" GNOME (GNOME hints)" #: ../src/icon.c:229 ../src/wdefaults.c:443 #, c-format msgid "error loading image file \"%s\": %s" msgstr "ошибка загрузки файла картинки \"%s\": %s" # #: ../src/icon.c:493 ../src/icon.c:502 #, c-format msgid "could not create directory %s" msgstr "не удалось создать каталог %s" #: ../src/icon.c:769 #, c-format msgid "could not find default icon \"%s\"" msgstr "не удалось найти иконку по умолчанию \"%s\"" #: ../src/icon.c:775 #, c-format msgid "could not load default icon \"%s\":%s" msgstr "не удалось загрузить иконку по умолчанию \"%s\": %s" #. #. * 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/kwm.c:633 ../src/winmenu.c:441 ../src/winmenu.c:583 msgid "Maximize" msgstr "Распахнуть" #: ../src/kwm.c:634 ../src/winmenu.c:578 msgid "Unmaximize" msgstr "Восстановить" #: ../src/kwm.c:635 ../src/winmenu.c:449 ../src/winmenu.c:569 msgid "Miniaturize" msgstr "Свернуть" #: ../src/kwm.c:636 ../src/winmenu.c:564 msgid "Deminiaturize" msgstr "Развернуть" #: ../src/kwm.c:638 msgid "Not Omnipresent" msgstr "Присутствует НЕ везде" #: ../src/kwm.c:639 msgid "Move" msgstr "Переместить" #: ../src/kwm.c:640 msgid "Resize" msgstr "Изменить размер" #. #. entry = wMenuAddCallback(menu, _("Select Shortcut"), NULL, NULL); #. wMenuEntrySetCascade(menu, entry, makeMakeShortcutMenu(scr)); #. #: ../src/kwm.c:641 ../src/rootmenu.c:248 ../src/winmenu.c:513 msgid "Close" msgstr "Закрыть" #: ../src/kwm.c:642 ../src/winmenu.c:497 msgid "Move To" msgstr "Переместить на рабочее пространство" #: ../src/kwm.c:1096 msgid "%a(Run Command,Type the command to run:)" msgstr "%a(Исполнить,Введите команду для исполнения:)" #: ../src/main.c:222 msgid "failed to restart Window Maker." msgstr "не удалось перезапустить Window Maker." #: ../src/main.c:225 #, c-format msgid "could not exec %s" msgstr "не удалось выполнить %s" #: ../src/main.c:271 msgid "Could not execute command: " msgstr "Не удалось исполнить команду: " #: ../src/main.c:428 #, c-format msgid "%s aborted.\n" msgstr "%s прервано.\n" #: ../src/main.c:439 #, c-format msgid "Usage: %s [options]\n" msgstr "Запуск: %s [параметры]\n" #: ../src/main.c:440 msgid "The Window Maker window manager for the X window system" msgstr "Диспетчер окон Window Maker для системы X Window" #: ../src/main.c:442 msgid " -display host:dpy\tdisplay to use" msgstr " -display хост:дисплей\tиспользовать данный дисплей" #: ../src/main.c:444 msgid " --no-cpp \t\tdisable preprocessing of configuration files" msgstr " --no-cpp \t\tзапретить предобработку файлов настройки" #: ../src/main.c:446 msgid " --no-dock\t\tdo not open the application Dock" msgstr " --no-dock\t\tне открывать Док приложений" #: ../src/main.c:447 msgid " --no-clip\t\tdo not open the workspace Clip" msgstr " --no-clip\t\tне открывать Скрепку для приложений" # #: ../src/main.c:448 msgid " --no-autolaunch\tdo not autolaunch applications" msgstr " --no-autolaunch\tзапретить автоматический запуск приложений" #: ../src/main.c:449 msgid " --dont-restore\t\tdo not restore saved session" msgstr " --dont-restore\t\tне восстанавливать сохраненный сеанс" #: ../src/main.c:451 msgid " --locale locale\tlocale to use" msgstr "" #: ../src/main.c:453 msgid "" " --create-stdcmap\tcreate the standard colormap hint in PseudoColor visuals" msgstr "" " --create-stdcmap\tсоздать стандартную цветовую палитру в классе\n" "\t\t\tотображения `PseudoColor'" #: ../src/main.c:454 msgid " --visual-id visualid\tvisual id of visual to use" msgstr "" " --visual-id visualid\tиспользовать указанный цветовой класс отображения" #: ../src/main.c:455 msgid " --static\t\tdo not update or save configurations" msgstr " --static\t\tне обновлять и не сохранять конфигурацию" #: ../src/main.c:456 msgid " --no-polling\t\tdo not periodically check for configuration updates" msgstr "" "--no-polling\t\tзапретить периодическую проверку конфигурации\n" " на изменения" #: ../src/main.c:458 msgid " --synchronous\t\tturn on synchronous display mode" msgstr " --synchronous\t\tвключить синхронный режим вывода" #: ../src/main.c:460 msgid " --version\t\tprint version and exit" msgstr " --version\t\tвывести номер версии и выйти" #: ../src/main.c:461 msgid " --help\t\t\tshow this message" msgstr " --help\t\t\tвывести этот текст" #: ../src/main.c:474 #, 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" "Убедитесь, что WindowMaker установлен верно, и запустите wmaker.inst" # #: ../src/main.c:479 #, c-format msgid "could not find user GNUstep directory (%s)." msgstr "не удалось найти пользовательский GNUstep каталог (%s)." #: ../src/main.c:482 msgid "" "There was an error while creating GNUstep directory, please make sure you " "have installed Window Maker correctly and run wmaker.inst" msgstr "" "Во время создания пользовательского каталога GNUstep произошла ошибка,\n" "пожалуйста, убедитесь, что Window Maker был установлен правильно\n" "и запустите wmaker.inst" #: ../src/main.c:485 #, c-format msgid "%s directory created with default configuration." msgstr "каталог %s создан с конфигурацией по умолчанию." #: ../src/main.c:505 ../src/main.c:510 #, c-format msgid "%s:could not execute initialization script" msgstr "%s:не удалось выполнить сценарий инициализации" #: ../src/main.c:530 ../src/main.c:535 #, c-format msgid "%s:could not execute exit script" msgstr "%s:не удалось выполнить сценарий завершения работы" #: ../src/main.c:663 ../src/main.c:671 ../src/main.c:679 ../src/main.c:699 #, c-format msgid "too few arguments for %s" msgstr "слишком мало аргументов для %s" #: ../src/main.c:683 #, c-format msgid "bad value for visualid: \"%s\"" msgstr "ошибочное значение для visualid: \"%s\"" # #: ../src/main.c:707 #, c-format msgid "%s: invalid argument '%s'\n" msgstr "%s: неверный аргумент \"%s\"\n" #: ../src/main.c:708 #, c-format msgid "Try '%s --help' for more information\n" msgstr "Попробуйте '%s --help' для получения дополнительной информации\n" #: ../src/main.c:739 msgid "X server does not support locale" msgstr "X сервер не поддерживает локализацию" #: ../src/main.c:743 msgid "cannot set locale modifiers" msgstr "не удалось установить параметры локализации" #: ../src/main.c:759 #, c-format msgid "could not open display \"%s\"" msgstr "не удалось открыть дисплей \"%s\"" # #: ../src/menu.c:1264 msgid "could not grab keyboard" msgstr "не удалось захватить клавиатуру" #: ../src/menu.c:2578 #, c-format msgid "bad value in menus state info:%s" msgstr "недопустимое значение в информации о состоянии меню: %s" #: ../src/misc.c:71 #, c-format msgid "could not define value for %s for cpp" msgstr "не удалось определить значения для %s для cpp" #: ../src/misc.c:101 #, c-format msgid "could not get password entry for UID %i" msgstr "не удалось получить информацию о пользователе для UID %i" #: ../src/misc.c:126 #, c-format msgid "your machine is misconfigured. HOSTNAME is set to %s" msgstr "Ваша система настроена неверно. Переменная HOSTNAME установлена в %s" #: ../src/misc.c:132 #, c-format msgid "your machine is misconfigured. HOST is set to %s" msgstr "Ваша система настроена неверно. Переменная HOST установлена в %s" #: ../src/misc.c:630 msgid "Program Arguments" msgstr "Аргументы Программы" #: ../src/misc.c:631 msgid "Enter command arguments:" msgstr "Введите аргументы команды:" #: ../src/misc.c:724 msgid "unable to get dropped data from DND drop" msgstr "не удалось получить перетащенные данные" #: ../src/misc.c:732 msgid "error getting dropped data from DND drop" msgstr "ошибка при получении данных от DND drop" #: ../src/misc.c:738 msgid "out of memory while getting data from DND drop" msgstr "исчерпана память при получении данных от DND drop" #: ../src/misc.c:783 ../src/misc.c:923 #, c-format msgid "out of memory during expansion of \"%s\"" msgstr "исчерпана память во время расширения \"%s\"" #: ../src/misc.c:837 msgid "out of memory during expansion of \"%w\"" msgstr "исчерпана память во время расширения \"%w\"" #: ../src/misc.c:855 msgid "out of memory during expansion of \"%W\"" msgstr "исчерпана память во время расширения \"%W\"" #: ../src/misc.c:871 msgid "out of memory during expansion of \"%a\"" msgstr "исчерпана память во время расширения \"%a\"" #: ../src/misc.c:902 #, c-format msgid "out of memory during expansion of \"%d\"" msgstr "исчерпана память во время расширения \"%d\"" #: ../src/misc.c:916 msgid "selection not available" msgstr "нет выделения" #: ../src/misc.c:972 ../src/misc.c:978 #, c-format msgid "bad window name value in %s state info" msgstr "неверное значение имени окна в информации о состоянии для: %s" #: ../src/misc.c:1235 msgid "could not send message to background image helper" msgstr "не удалось послать сообщение приложению фонового изображения" #: ../src/pixmap.c:235 #, c-format msgid "could not load mask bitmap file \"%s\". Won't use mask" msgstr "не удалось загрузить файл маски \"%s\". Маска не будет использована." #: ../src/resources.c:44 #, c-format msgid "could not parse color \"%s\"" msgstr "не удалось определить цвет \"%s\"" #: ../src/resources.c:48 #, c-format msgid "could not allocate color \"%s\"" msgstr "не удалось зарезервировать цвет \"%s\"" #: ../src/rootmenu.c:196 ../src/rootmenu.c:198 msgid "Exit" msgstr "Выход" #: ../src/rootmenu.c:197 msgid "Exit window manager?" msgstr "Выйти из диспетчера окон?" #: ../src/rootmenu.c:245 msgid "Close X session" msgstr "Завершить сеанс работы" #: ../src/rootmenu.c:246 msgid "" "Close Window System session?\n" "Kill might close applications with unsaved data." msgstr "" "Закрыть сеанс Оконной Системы?\n" "Это может аварийно завершить приложения с несохраненной информацией." #: ../src/rootmenu.c:261 msgid "Kill X session" msgstr "Аварийное завершение сеанса работы" #: ../src/rootmenu.c:262 msgid "" "Kill Window System session?\n" "(all applications will be closed)" msgstr "" "Закрыть сеанс Оконной Системы?\n" "(все приложения будут завершены)" #: ../src/rootmenu.c:539 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\" for entry %s" msgstr "%s:неверное указание комбинации клавиш \"%s\" для записи %s" #: ../src/rootmenu.c:547 #, c-format msgid "%s:invalid key in shortcut \"%s\" for entry %s" msgstr "%s:неверная клавиша в комбинации \"%s\" для записи %s" #: ../src/rootmenu.c:600 #, c-format msgid "%s: unmatched '\"' in menu file" msgstr "%s: непарная '\"' в файле меню" #: ../src/rootmenu.c:650 #, c-format msgid "%s: missing command" msgstr "%s: отсутствующая команда" #: ../src/rootmenu.c:682 #, c-format msgid "invalid OPEN_MENU specification: %s" msgstr "неверная спецификация OPEN_MENU: %s" #: ../src/rootmenu.c:733 #, c-format msgid "%s:could not stat menu" msgstr "%s:не удалось получить меню" #: ../src/rootmenu.c:741 #, c-format msgid "%s:could not stat menu:%s" msgstr "%s:не удалось получить информацию о меню:%s" #: ../src/rootmenu.c:759 #, c-format msgid "too many parameters in OPEN_MENU: %s" msgstr "слишком много параметров для OPEN_MENU: %s" #: ../src/rootmenu.c:803 msgid "" "There are more than one WORKSPACE_MENU commands in the applications menu. " "Only one is allowed." msgstr "" "В меню приложений присутствует больше одной команды WORKSPACE_MENU. " "Допустима только одна." #: ../src/rootmenu.c:837 msgid "" "There are more than one WINDOWS_MENU commands in the applications menu. Only " "one is allowed." msgstr "" "В меню приложений присутствует больше одной команды WINDOWS_MENU. Допустима " "только одна." #: ../src/rootmenu.c:842 msgid "Window List" msgstr "Список окон" #: ../src/rootmenu.c:871 ../src/rootmenu.c:889 ../src/rootmenu.c:899 #, c-format msgid "%s:missing parameter for menu command \"%s\"" msgstr "%s:недостающий параметр для команды меню \"%s\"" #: ../src/rootmenu.c:967 #, c-format msgid "%s:unknown command \"%s\" in menu config." msgstr "%s:неизвестная команда \"%s\" в настройке меню" #: ../src/rootmenu.c:975 #, c-format msgid "%s:can't add shortcut for entry \"%s\"" msgstr "%s:не удалось добавить комбинацию клавиш для команды \"%s\"" #: ../src/rootmenu.c:1112 #, c-format msgid "%s:maximal line size exceeded in menu config: %s" msgstr "%s:превышен максимальный размер строки в настройке меню: %s" #: ../src/rootmenu.c:1134 ../src/rootmenu.c:1227 ../src/rootmenu.c:1330 #, c-format msgid "%s:missing command in menu config: %s" msgstr "%s:отсутствует команда в настройке меню: %s" #: ../src/rootmenu.c:1164 #, c-format msgid "%s:syntax error in menu file:END declaration missing" msgstr "%s:синтаксическая ошибка в файле меню: отсутствует END" #: ../src/rootmenu.c:1193 ../src/rootmenu.c:1294 msgid "could not make arguments for menu file preprocessor" msgstr "не удалось подставить аргументы для препроцессора файла меню" #: ../src/rootmenu.c:1200 ../src/rootmenu.c:1302 #, c-format msgid "%s:could not open/preprocess menu file" msgstr "%s:не удалось открыть/предобработать файл меню" #: ../src/rootmenu.c:1212 ../src/rootmenu.c:1315 #, c-format msgid "could not open menu file \"%s\": %s" msgstr "не удалось открыть файл меню \"%s\": %s" #: ../src/rootmenu.c:1239 #, c-format msgid "%s:invalid menu file. MENU command is missing" msgstr "%s:файл меню неверен. Отсутствует команда MENU" #: ../src/rootmenu.c:1248 msgid "error reading preprocessed menu data" msgstr "ошибка чтения обработанных данных меню" #: ../src/rootmenu.c:1342 #, c-format msgid "%s:no title given for the root menu" msgstr "%s: не задан заголовок корневого меню" #: ../src/rootmenu.c:1433 ../src/rootmenu.c:1506 ../src/rootmenu.c:1547 #, c-format msgid "out of memory while constructing directory menu %s" msgstr "исчерпана память при создании каталога меню %s" #: ../src/rootmenu.c:1443 #, c-format msgid "%s:could not stat file \"%s\" in menu directory" msgstr "%s:нет информации о файле \"%s\" в каталоге меню" #: ../src/rootmenu.c:1601 msgid "Commands" msgstr "Команды" #: ../src/rootmenu.c:1604 msgid "Restart" msgstr "Перезапуск" #: ../src/rootmenu.c:1605 msgid "Exit..." msgstr "Выход..." #: ../src/rootmenu.c:1650 #, c-format msgid "could not find menu file \"%s\" referenced in WMRootMenu" msgstr "не удалось найти файл меню \"%s\", указанный в WMRootMenu" #: ../src/rootmenu.c:1657 #, c-format msgid "could not access menu \"%s\" referenced in WMRootMenu" msgstr "не удалось прочитать меню \"%s\", указанное в WMRootMenu" #: ../src/rootmenu.c:1668 #, c-format msgid "" "using default menu file \"%s\" as the menu referenced in WMRootMenu could " "not be found " msgstr "меню, указанное в файле WMRootMenu, не найдено, используется меню по умолчанию (%s) " #: ../src/rootmenu.c:1691 ../src/rootmenu.c:1767 #, c-format msgid "%s:format error in root menu configuration \"%s\"" msgstr "%s:ошибка формата в настройке корневого меню \"%s\"" #: ../src/rootmenu.c:1855 msgid "" "The applications menu could not be loaded. Look at the console output for a " "detailed description of the errors." msgstr "" "Не удалось загрузить меню приложений. Сообщения на консоли содержат " "подробное описание проблемы" #: ../src/screen.c:747 #, c-format msgid "could not initialize graphics library context: %s" msgstr "не удалось проинициализировать графическую библиотеку: %s" #: ../src/screen.c:778 msgid "could not do initialization of WINGs widget set" msgstr "не удалось инициализировать библиотеку WINGs" #: ../src/screen.c:1144 #, c-format msgid "could not save session state in %s" msgstr "не удалось сохранить состояния сеанса в %s" #: ../src/session.c:183 ../src/wdefaults.c:589 ../src/winspector.c:454 #, c-format msgid "can't convert \"%s\" to boolean" msgstr "не удалось преобразовать \"%s\" в булевскую величину" #: ../src/session.c:1023 msgid "out of memory while saving session state" msgstr "исчерпана память при сохранении состояния сеанса" #: ../src/session.c:1106 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:1244 msgid "connection to the session manager was lost" msgstr "потеряно соединение с диспетчером сессий" #: ../src/stacking.c:79 msgid "could not get window list!!" msgstr "не удалось получить список окон!!!" #: ../src/startup.c:202 #, c-format msgid "internal X error: %s\n" msgstr "внутренняя ошибка X сервера: %s\n" #: ../src/startup.c:260 #, c-format msgid "got signal %i (%s) - restarting\n" msgstr "получен сигнал %i (%s) -- перезапуск\n" #: ../src/startup.c:262 #, c-format msgid "got signal %i - restarting\n" msgstr "получен сигнал %i - перезапуск\n" #: ../src/startup.c:272 #, c-format msgid "got signal %i (%s) - rereading defaults\n" msgstr "получен сигнал %i (%s) -- повторное чтение значений по умолчанию\n" #: ../src/startup.c:274 #, c-format msgid "got signal %i - rereading defaults\n" msgstr "получен сигнал %i -- повторное чтение значений по умолчанию\n" #: ../src/startup.c:284 #, c-format msgid "got signal %i (%s) - exiting...\n" msgstr "получен сигнал %i (%s) -- завершение работы...\n" #: ../src/startup.c:286 #, c-format msgid "got signal %i - exiting...\n" msgstr "получен сигнал %i -- завершение работы...\n" #: ../src/startup.c:329 #, c-format msgid "got signal %i (%s)\n" msgstr "получен сигнал %i (%s)\n" #: ../src/startup.c:331 #, c-format msgid "got signal %i\n" msgstr "получен сигнал %i\n" #: ../src/startup.c:342 msgid "" "crashed while trying to do some post-crash cleanup. Aborting immediatelly." msgstr "" "критическая ошибка во время восстановления после серьезной ошибки. " "НЕМЕДЛЕННОЕ завершение работы." #. we try to restart Window Maker #: ../src/startup.c:406 msgid "trying to restart Window Maker..." msgstr "попытка перезапустить Window Maker..." #: ../src/startup.c:411 msgid "trying to start alternate window manager..." msgstr "попытка запуска альтернативного диспетчера окон..." #: ../src/startup.c:417 msgid "failed to start alternate window manager. Aborting." msgstr "не удалось запустить альтернативный диспетчер окон. Отказ." #: ../src/startup.c:419 msgid "" "a fatal error has occured, probably due to a bug. Please fill the included " "BUGFORM and report it." msgstr "" "возникла критическая ошибка. Возможно, это результат ошибки в программе. " "Пожалуйста, заполните форму в файле BUGFORM и отправьте его автору." #: ../src/startup.c:894 #, 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:922 msgid "XKB is not supported. KbdModeLock is automatically disabled." msgstr "" #: ../src/startup.c:941 msgid "it seems that there is already a window manager running" msgstr "похоже, что активен другой диспетчер окон" #: ../src/startup.c:947 #, c-format msgid "could not manage screen %i" msgstr "не удается управлять экраном %i" #: ../src/startup.c:1015 msgid "could not manage any screen" msgstr "не удается управлять каким-либо экраном" #: ../src/switchmenu.c:137 msgid "Windows" msgstr "Список окон" #: ../src/texture.c:329 ../src/texture.c:371 #, c-format msgid "image file \"%s\" used as texture could not be found." msgstr "файл текстуры \"%s\" не найден." #: ../src/texture.c:335 ../src/texture.c:377 #, c-format msgid "could not load texture pixmap \"%s\":%s" msgstr "не удалось загрузить растровый рисунок с текстурой \"%s\": %s" #: ../src/texture.c:437 #, c-format msgid "library \"%s\" cound not be opened." msgstr "не удалось открыть библиотеку \"%s\"." #: ../src/texture.c:446 #, c-format msgid "function \"%s\" not found in library \"%s\"" msgstr "функция \"%s\" отсутствует в библиотеке \"%s\"" #: ../src/texture.c:453 msgid "function textures not supported on this system, sorry." msgstr "функциональные текстуры не поддерживаются этой системой." #: ../src/texture.c:598 msgid "could not allocate image buffer" msgstr "не удалось разместить буфер изображения" #: ../src/wdefaults.c:437 #, c-format msgid "could not find icon file \"%s\"" msgstr "не удалось найти файл иконки \"%s\"" #: ../src/window.c:2942 ../src/window.c:3081 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:126 msgid "" "This will kill the application.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" "Это форсированно завершит приложение.\n" "Все несохраненные изменения будут потеряны.\n" "Пожалуйста, подтвердите." #: ../src/winmenu.c:272 ../src/winmenu.c:281 msgid "Set Shortcut" msgstr "Установить комбинацию клавиш" #: ../src/winmenu.c:359 ../src/winmenu.c:404 msgid "could not create submenu for window menu" msgstr "не удалось создать подменю для меню окна" #: ../src/winmenu.c:408 msgid "Keep on top" msgstr "Всегда наверху" #: ../src/winmenu.c:413 msgid "Keep at bottom" msgstr "Всегда внизу" #: ../src/winmenu.c:457 ../src/winmenu.c:600 msgid "Shade" msgstr "Втянуть" #: ../src/winmenu.c:473 msgid "Hide Others" msgstr "Скрыть остальные" #: ../src/winmenu.c:481 msgid "Resize/Move" msgstr "Изменить размер/переместить" #: ../src/winmenu.c:489 msgid "Select" msgstr "Выделить" #: ../src/winmenu.c:502 msgid "Attributes..." msgstr "Свойства..." #: ../src/winmenu.c:504 msgid "Options" msgstr "Параметры" #: ../src/winmenu.c:595 msgid "Unshade" msgstr "Восстановить" #: ../src/winspector.c:387 #, c-format msgid "Could not find icon \"%s\" specified for this window" msgstr "Невозможно найти файл иконки \"%s\", указанный для этого окна" #: ../src/winspector.c:404 #, c-format msgid "Could not open specified icon \"%s\":%s" msgstr "Невозможно открыть указанную иконку \"%s\": %s" #: ../src/winspector.c:1121 #, c-format msgid "Inspecting %s.%s" msgstr "" #: ../src/winspector.c:1147 msgid "Click in the window you wish to inspect." msgstr "" #: ../src/winspector.c:1186 msgid "" "The configuration will apply to all\n" "windows that have their WM_CLASS\n" "property set to the above selected\n" "name, when saved." msgstr "" "Данная конфигурация будет применена\n" "ко всем окнам, у которых атрибут\n" "WM_CLASS установлен в выбранное Вами\n" "значение, а затем сохранена." #: ../src/winspector.c:1215 msgid "Save" msgstr "Сохранить" #: ../src/winspector.c:1223 msgid "Apply" msgstr "Применить" #: ../src/winspector.c:1229 msgid "Reload" msgstr "Перечитать" #: ../src/winspector.c:1238 ../src/winspector.c:1248 msgid "Window Specification" msgstr "Спецификация окна" #: ../src/winspector.c:1239 msgid "Window Attributes" msgstr "Атрибуты окна" #: ../src/winspector.c:1240 msgid "Advanced Options" msgstr "Дополнительные параметры" #: ../src/winspector.c:1241 msgid "Icon and Initial Workspace" msgstr "Исходное рабочее пространство" #: ../src/winspector.c:1242 msgid "Application Specific" msgstr "Свойства приложения" #: ../src/winspector.c:1256 msgid "Defaults for all windows" msgstr "Все окна" #: ../src/winspector.c:1310 msgid "Select window" msgstr "Выбрать окно" #: ../src/winspector.c:1324 msgid "Attributes" msgstr "Свойства" #: ../src/winspector.c:1335 msgid "Disable titlebar" msgstr "Отключить заголовок" #: ../src/winspector.c:1337 msgid "" "Remove the titlebar of this window.\n" "To access the window commands menu of a window\n" "without it's titlebar, press Control+Esc (or the\n" "equivalent shortcut, if you changed the default\n" "settings)." msgstr "" "Убрать заголовок у этого окна.\n" "Для доступа к меню команд окна у окна без заголовка,\n" "используйте Control+Esc (или эквивалентную комбинацию\n" "клавиш, если вы изменили настройки по умолчанию)." # awn: "Отключить линейку изменения размера" было бы правильнее, но не # помещается #: ../src/winspector.c:1344 msgid "Disable resizebar" msgstr "Отключить рамку изменения размера" #: ../src/winspector.c:1346 msgid "Remove the resizebar of this window." msgstr "Убрать рамку изменения размера у этого окна." #: ../src/winspector.c:1349 msgid "Disable close button" msgstr "Убрать кнопку закрытия" #: ../src/winspector.c:1351 msgid "Remove the `close window' button of this window." msgstr "Убрать кнопку `закрыть окно' у этого окна." #: ../src/winspector.c:1354 msgid "Disable miniaturize button" msgstr "Убрать кнопку `свернуть в иконку'" #: ../src/winspector.c:1356 msgid "Remove the `miniaturize window' button of the window." msgstr "Убрать кнопку `свернуть в иконку' у этого окна." #: ../src/winspector.c:1359 msgid "Disable border" msgstr "Убрать рамку" #: ../src/winspector.c:1361 msgid "Remove the 1 pixel black border around the window." msgstr "Убрать 1-точечную черную рамку вокруг окна." #: ../src/winspector.c:1364 msgid "Keep on top (floating)" msgstr "Удерживать окно сверху" #: ../src/winspector.c:1366 msgid "" "Keep the window over other windows, not allowing\n" "them to cover it." msgstr "" "Удерживать окно над другими окнами,\n" "не позволяя им перекрывать его." #: ../src/winspector.c:1370 msgid "Keep at bottom (sunken)" msgstr "Удерживать окно снизу" #: ../src/winspector.c:1372 msgid "Keep the window under all other windows." msgstr "Удерживать окно под всеми другими окнами" #: ../src/winspector.c:1377 msgid "Make window present in all workspaces." msgstr "Сделать окно присутствующим на всех рабочих пространствах" #: ../src/winspector.c:1380 msgid "Start miniaturized" msgstr "Запуск в свернутом состоянии" #: ../src/winspector.c:1382 msgid "" "Make the window be automatically miniaturized when it's\n" "first shown." msgstr "" "Автоматически сворачивать окно в иконку при первом\n" "его появлении." #: ../src/winspector.c:1386 msgid "Start maximized" msgstr "Запуск в распахнутом состоянии" #: ../src/winspector.c:1388 msgid "" "Make the window be automatically maximized when it's\n" "first shown." msgstr "Автоматически распахивать окно при первом его появлении." #: ../src/winspector.c:1392 msgid "Full screen maximization" msgstr "Распахнуть на весь экран" #: ../src/winspector.c:1394 msgid "" "Make the window use the whole screen space when it's\n" "maximized. The titlebar and resizebar will be moved\n" "to outside the screen." msgstr "" "Когда окно распахивается -- использовать все доступное\n" "экранное пространство. Заголовок окна и рамка\n" "изменения размера выносятся за пределы экрана." #: ../src/winspector.c:1411 msgid "Advanced" msgstr "Дополнительно" #: ../src/winspector.c:1428 msgid "Do not bind keyboard shortcuts" msgstr "Не проверять сочетания клавиш" #: ../src/winspector.c:1430 msgid "" "Do not bind keyboard shortcuts from Window Maker\n" "when this window is focused. This will allow the\n" "window to receive all key combinations regardless\n" "of your shortcut configuration." msgstr "" "Не перехватывать и не проверять сочетания клавиш,\n" "адресованные этому окну. Это позволяет\n" "приложению получать все сочетания клавиш,\n" "даже если они являются \"горячими клавишами\"\n" "Window Maker'а." #: ../src/winspector.c:1436 msgid "Do not bind mouse clicks" msgstr "Не проверять щелчки мыши" #: ../src/winspector.c:1438 msgid "" "Do not bind mouse actions, such as `Alt'+drag\n" "in the window (when Alt is the modifier you have\n" "configured)." msgstr "" #: ../src/winspector.c:1443 msgid "Do not show in the window list" msgstr "Не показывать в списке окон" #: ../src/winspector.c:1445 msgid "Do not list the window in the window list menu." msgstr "Не показывать окно в списке окон." #: ../src/winspector.c:1448 msgid "Do not let it take focus" msgstr "Не давать фокус ввода" #: ../src/winspector.c:1450 msgid "" "Do not let the window take keyboard focus when you\n" "click on it." msgstr "" "Не давать окну фокус клавиатурного ввода, даже если вы\n" "щелкните на нем." #: ../src/winspector.c:1454 msgid "Keep inside screen" msgstr "Удерживать внутри экрана" #: ../src/winspector.c:1456 msgid "" "Do not allow the window to move itself completely\n" "outside the screen. For bug compatibility.\n" msgstr "" "Не позволять окну уходить целиком за пределы экрана\n" "Для совместимости с ошибками.\n" #: ../src/winspector.c:1460 msgid "Ignore 'Hide Others'" msgstr "Игнорировать \"Скрыть остальные\"" #: ../src/winspector.c:1462 msgid "" "Do not hide the window when issuing the\n" "`HideOthers' command." msgstr "" "Не скрывать окно при исполнении\n" "команды \"Скрыть остальные\"." #: ../src/winspector.c:1466 msgid "Ignore 'Save Session'" msgstr "Игнорировать \"Сохранить сеанс\"" #: ../src/winspector.c:1468 msgid "" "Do not save the associated application in the\n" "session's state, so that it won't be restarted\n" "together with other applications when Window Maker\n" "starts." msgstr "" # #: ../src/winspector.c:1474 msgid "Emulate application icon" msgstr "Эмулировать иконку приложения" #: ../src/winspector.c:1476 msgid "" "Make this window act as an application that provides\n" "enough information to Window Maker for a dockable\n" "application icon to be created." msgstr "" "Заставляет Window Maker обращаться с приложением так,\n" "как если бы оно предоставляло достаточно информации\n" "для создания иконки пришвартованного приложения." #: ../src/winspector.c:1482 msgid "Disable language button" msgstr "" #: ../src/winspector.c:1484 msgid "Remove the `toggle language' button of the window." msgstr "" #: ../src/winspector.c:1501 msgid "Miniwindow Image" msgstr "Миниатюрное изображение" #: ../src/winspector.c:1528 msgid "Icon filename:" msgstr "Имя файла иконки:" #: ../src/winspector.c:1541 msgid "Ignore client supplied icon" msgstr "Игнорировать внутреннюю иконку приложения" #: ../src/winspector.c:1548 msgid "Initial Workspace" msgstr "Начальное рабочее пространство" #: ../src/winspector.c:1550 msgid "The workspace to place the window when it's first shown." msgstr "" "Рабочее пространство, на которое помещать окно,\n" "когда оно открывается в первый раз." #: ../src/winspector.c:1556 msgid "Nowhere in particular" msgstr "Где угодно" #: ../src/winspector.c:1574 msgid "Application Attributes" msgstr "Свойства приложения" #: ../src/winspector.c:1585 msgid "Start hidden" msgstr "Запускать скрытым" #: ../src/winspector.c:1587 msgid "Automatically hide application when it's started." msgstr "" "Автоматически скрывать приложение\n" "сразу после его запуска." #: ../src/winspector.c:1590 msgid "No application icon" msgstr "Не показывать иконку" #: ../src/winspector.c:1592 msgid "" "Disable the application icon for the application.\n" "Note that you won't be able to dock it anymore,\n" "and any icons that are already docked will stop\n" "working correctly." msgstr "" #: ../src/winspector.c:1598 msgid "Shared application icon" msgstr "Совместно используемая иконка" #: ../src/winspector.c:1600 msgid "" "Use a single shared application icon for all of\n" "the instances of this application.\n" msgstr "" "Использовать общую иконку для всех экземпляров\n" "этого приложения.\n" #: ../src/workspace.c:107 ../src/workspace.c:108 ../src/workspace.c:893 #, c-format msgid "Workspace %i" msgstr "Рабочее пространство %i" #: ../src/workspace.c:943 msgid "Workspaces" msgstr "Рабочие пространства" #: ../src/workspace.c:945 msgid "could not create Workspace menu" msgstr "Невозможно создать меню Рабочих Пространств" #: ../src/workspace.c:952 msgid "New" msgstr "Создать" #: ../src/workspace.c:953 msgid "Destroy Last" msgstr "Удалить последнее" WindowMaker-0.95.9/po/ro.po0000644000175000017500000003152613431646201012373 00000000000000# Romanian message file for WindowMaker # msgid "" msgstr "" "Project-Id-Version: WindowMaker 0.65.1\n" "PO-Revision-Date: 1998-09-08 22:00:00-0300\n" "Last-Translator: AndreiVuta(gigi_man@manag.pub.ro)\n" "Language-Team: Romanian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" #: ../main.c:147 msgid "Restart failed!!!" msgstr "Reinitializare esuata" #: ../main.c:162 msgid "%s aborted.\n" msgstr "%s intrerupta.\n" #: ../main.c:170 msgid "usage: %s [-options]\n" msgstr "folosire: %s [-optiunii]\n" #: ../main.c:171 msgid "options:" msgstr "optiuni:" #: ../main.c:173 msgid " -nocpp \t\tdisable preprocessing of configuration files" msgstr " -nocpp \t\tterminarea preprocesarii fisierelor de configurare" #: ../main.c:176 msgid " -nodock\t\tdo not open the application Dock" msgstr " -nodock\t\tnu folositi aplicatia Dock" #: ../main.c:178 msgid " -locale locale\t\tlocale to use" msgstr "" #: ../main.c:179 msgid " -display host:dpy\tdisplay to use" msgstr " -display host:dpy\tconsola de folosire" #: ../main.c:180 msgid " -version\t\tprint version and exit" msgstr " -version\t\ttipareste nr. versiunii si iesi" #: ../main.c:234 msgid "cannot set locale %s" msgstr "" #: ../main.c:235 msgid "falling back to C locale" msgstr "" #: ../main.c:263 msgid "X server does not support locale" msgstr "X-serverul nu suporta local" #: ../main.c:266 msgid "cannot set locale modifiers" msgstr "" #: ../main.c:276 msgid "could not open display %s" msgstr "display-ul \"%s\" nu se poate deschide" #: ../event.c:230 msgid "stack overflow: too many dead processes" msgstr "stack inundat: prea multe procese moarte" #: ../startup.c:137 msgid "internal X error: %s\n" msgstr "eroare interna X: %s\n" #: ../startup.c:152 msgid "got signal %i (%s)\n" msgstr "" #: ../startup.c:154 msgid "got signal %i\n" msgstr "" #: ../texture.c:317 ../texture.c:327 msgid "unsupported visual/depth for gradients" msgstr "visual/depth nesuportata de gradienti" #: ../menu.c:231 msgid "wrealloc() failed while trying to add menu item" msgstr "" #: ../pixmap.c:211 msgid "could not load mask bitmap file \"%s\". Won't use mask" msgstr "nu se poate incarca bitmap-ul \"%s\".Nu folositi mask." #: ../image.c:183 ../image.c:889 ../pixmap.c:261 msgid "could not load XPM file \"%s\"" msgstr "nu se poate incarca fisierul XPM \"%s\" ." #: ../pixmap.c:264 msgid "cannot load \"%s\": XPM support not compiled in" msgstr "\"%s\" Suportul XPM nu este compilat" #: ../pixmap.c:271 msgid "could not load XBM file \"%s\"" msgstr "fisierul XBM \"%s\" nu se poate incarca " #: ../image.c:196 ../pixmap.c:275 msgid "can't identify image file \"%s\"" msgstr "fisierul grafic \"%s\" nu poate fi identificat" #: ../image.c:200 ../pixmap.c:279 msgid "unknown image format in \"%s\"" msgstr "format grafic necunoscut in \"%s\"" #: ../image.c:65 ../image.c:494 msgid "can't load pixmap file \"%s\". Size too weird" msgstr "fisierul pixmap \"%s\" nu se poate incarca. Dimensiuni ciudate" #: ../image.c:83 ../image.c:746 ../image.c:768 msgid "virtual memory exhausted during pixmap load. Not fatal..." msgstr "memoria virtuala facuta zob la incarcarea PXM.Nu e fatal..." #: ../image.c:100 ../image.c:510 msgid "virtual memory exhausted. Continuing..." msgstr "memoria virtuala terminata.Continuare..." #: ../image.c:186 msgid "cannot load \"%s\": XPM format not supported" msgstr "\"%s\" nu se poate incarca. Formatul XPM nu e suportat" #. XPM #: ../image.c:191 msgid "can't convert XBM file \"%s\" to internal format" msgstr "fisierul XBM \"%s\" nu poate fi convertit in format intern" #: ../image.c:556 ../image.c:562 ../image.c:581 msgid "virtual memory exhausted during XPM load." msgstr "memoria virtuala a murit la incarcarea XPM-urilor" #: ../image.c:712 ../image.c:855 msgid "could not convert image \"%s\" to internal format" msgstr "imaginea \"%s\" nu poate fi convertita la formatul intern " #: ../image.c:901 msgid "can't load \"%s\": unknown image format" msgstr "\"%s\" nu poate fi incarcat: formatul imaginii necunoscut" #: ../screen.c:83 msgid "it seems that there already is a window manager running" msgstr "se pare ca un alt WM e in executie" #: ../screen.c:234 ../screen.c:344 msgid "could not parse color %s" msgstr "nu e posibila decodificarea culorii %s" #: ../screen.c:289 msgid "The following character sets are missing:" msgstr "" #: ../screen.c:293 msgid "The string \"%s\" will be used in place" msgstr "" #: ../screen.c:295 msgid "of any characters from those sets." msgstr "" #: ../screen.c:298 msgid "could not create font set %s. Using fixed" msgstr "" #: ../screen.c:305 msgid "could not load any usable font set" msgstr "" #: ../screen.c:315 msgid "could not load font %s. Using fixed" msgstr "fontul nu poate fi incarcat %s.Se foloseste fixed" #: ../screen.c:318 msgid "could not load any usable font" msgstr "nu poate fi incarcat nici un font" #: ../screen.c:439 msgid "Gradient texture not supported for your display (PseudoColor %ibpp)" msgstr "Textura gradientului nu e suportata de monitor (PseudoColor %ibpp)" #: ../screen.c:442 msgid "You must enable dithering to be able to use gradients with this display" msgstr "Trebuie activat dithering-ul pt folosirea gradientilor cu acest monitor" #: ../screen.c:456 msgid "Gradient texture available only for PseudoColor and TrueColor displays" msgstr "Textura gradientilor e disponibila numai pentru PseudoColor si TrueColor" #: ../screen.c:478 msgid "could not allocate texture" msgstr "textura nu poate fi alocata" #: ../screen.c:1058 msgid "colormap size value(s) too large" msgstr "valorile pt. dimensiunile mapei de culori sunt prea mari" #: ../dialog.c:208 ../rootmenu.c:108 msgid "Exit" msgstr "Iesire" #: ../rootmenu.c:109 msgid "Exit window manager?" msgstr "Iesire WindowManager?" #: ../rootmenu.c:128 msgid "Close X session" msgstr "Inchidere sesiune X" #: ../rootmenu.c:129 msgid "" "Close Window System session?\n" "(all applications will be closed)" msgstr "" "Inchidere sesiune Window System?\n" "(toate aplicatiile vor fi inchise)" #: ../rootmenu.c:217 ../rootmenu.c:314 ../rootmenu.c:496 msgid "Switch to %i" msgstr "Mutare catre a %i" #: ../rootmenu.c:283 msgid "out of memory to store menu commands. Nuking it." msgstr "Memorie prea putina pt.inreg. comenzilor meniului. " #: ../rootmenu.c:303 msgid "Workspace" msgstr "" #: ../rootmenu.c:305 msgid "could not create Workspace menu" msgstr " Meniul Workspace nu poate fi creat" #: ../rootmenu.c:308 msgid "New" msgstr "Nou" #: ../rootmenu.c:309 msgid "Destroy Last" msgstr "Distrugerea ultimului" #: ../rootmenu.c:350 msgid "missing command in menu config: %s" msgstr "lipseste comanda din configurarea meniului: %s" #: ../rootmenu.c:390 msgid "menu can only have one WORKSPACE_MENU" msgstr "meniul nu poate avea decit un WORKSPACE_MENU " #: ../rootmenu.c:406 msgid "unknown command \"%s\" in menu config." msgstr "comanda necunoscuta \"%s\" in configuratia meniului." #: ../rootmenu.c:410 msgid "syntax error in menu config. END declaration missing" msgstr "eroare de sintaxa in configurarea meniului.Lipseste END" #: ../rootmenu.c:435 msgid "syntax error in menu config. %s" msgstr "eroare de sintaxa in configuratia meniului: %s" #: ../rootmenu.c:443 msgid "no title given for the root menu" msgstr "lipseste titlul meniului din root" #: ../rootmenu.c:455 msgid "Commands" msgstr "Comenzi" #: ../rootmenu.c:456 msgid "Exit..." msgstr "Iesire..." #: ../rootmenu.c:573 msgid "could not stat menu configuration file \"%s\"" msgstr "fisierul de configurare nu poate fi accesat \"%s\"" #: ../rootmenu.c:578 msgid "no read permision to menu configuration file" msgstr "meniul de configurare nu poate fi citit" #: ../rootmenu.c:595 msgid "could not make arguments for menu file preprocessor" msgstr "nu se pot construi argumente pt. meniul fisierului preprocessor" #: ../rootmenu.c:603 msgid "could not open menu configuration preprocessor" msgstr "meniul de configurare preprocessor nu poate fi deschis" #: ../rootmenu.c:613 msgid "couldn't open menu configuration file \"%s\"" msgstr "meniul fisierului de configurare \"%s\" nu poate fi deschis" #: ../dock.c:689 ../rootmenu.c:646 msgid "Error" msgstr "Eroare" #: ../rootmenu.c:647 msgid "" "Could not read menu configuration\n" "(see console log for details)" msgstr "" "Configuratia meniului nu poate fi citita\n" "(vezi console log pt. detalii)" #: ../dialog.c:196 msgid "OK " msgstr "" #: ../dialog.c:210 msgid "Cancel" msgstr "Anulare" #: ../resource.c:297 ../resource.c:359 ../resource.c:368 ../resource.c:497 ../resource.c:521 ../resource.c:530 ../resource.c:555 msgid "%s: syntax error in line \"%s\"" msgstr "%s: eroare de sintaxa in linia \"%s\"" #: ../resource.c:309 msgid "%s: invalid window attribute specification in \"%s\"" msgstr "%s: specificarea atributelor ferestrei invalida in \"%s\"" #: ../resource.c:336 msgid "%s: unknown attribute in line \"%s\"" msgstr "%s: atribut invalid in linia \"%s\"" #: ../resource.c:416 ../resource.c:425 ../resource.c:437 msgid "%s:invalid kbd shortcut specification \"%s\"" msgstr "%s:specificarea shortcut-ului tastaturii invalid \"%s\"" #: ../resource.c:477 msgid "%s: expected section identifier but got %s" msgstr "%s: %s este asteptat identificatorul de sectiune" #: ../resource.c:510 msgid "%s: unknown option in line \"%s\"" msgstr "%s: optiune necunoscuta in linia \"%s\"" #: ../resource.c:559 msgid "%s: invalid colormap size in line \"%s\"" msgstr "%s: dimensiuni invalide ale hartii de culori in linia \"%s\"" #: ../resource.c:579 msgid "%s: invalid geometry display type \"%s\". Shouldbe center, corner, floating or line" msgstr "%s: tip de geometrie a monitorului invalid \"%s\". Valori permise: center, corner, floating sau line" #: ../resource.c:601 msgid "%s: invalid focus mode \"%s.\" Should be manual, auto or semiauto" msgstr "%s: mod de focalizare invalid \"%s.\" Valori permise: manual, auto sau semiauto" #: ../resource.c:619 msgid "%s: invalid window placement mode \"%s\". Should be auto, cascade or manual" msgstr "%s: modo al plasarii ferestrei invalid \"%s\". Valori permise: auto, cascade sau manual" #: ../resource.c:639 msgid "%s: invalid texture type \"%s\" Should be solid, dgradient, vgradient or hgradient" msgstr "%s: tip de textura invalid \"%s\" Valori permise: solid, dgradient, vgradient sau hgradient" #: ../resource.c:666 msgid "%s: invalid gradient spec. \"%s\"" msgstr "%s: specificarea gradientului invalida \"%s\"" #: ../resource.c:685 msgid "%s: invalid coordinate \"%s\"" msgstr "%s: coordonata invalida \"%s\"" #: ../resource.c:701 msgid "%s: invalid justification type \"%s\". Should be left, center or right" msgstr "%s: tipul de justificare invalid \"%s\". Valori permise: left, center sau right" #: ../resource.c:731 msgid "could not make arguments for preference file preprocessor" msgstr "nu se pot crea argumente pt. fisierul de configurare preprocesor" #: ../resource.c:737 msgid "could not open preference file preprocessor" msgstr "nu se poate deschide fisierul de configurare preprocesor" #: ../resource.c:744 msgid "could not open configuration file: \"%s\"" msgstr "nu se poate deschide fisierul de configurare: \"%s\"" #: ../resource.c:791 msgid "could not find default icon \"%s\"" msgstr "imposibil de gasit icon-ul predefinit \"%s\" " #: ../resource.c:797 msgid "could not find a preference file (%s) in \"%s\"" msgstr "fisierul de configurare (%s) nu se gaseste in \"%s\"" #: ../resource.c:805 msgid "could not find icon background \"%s\"" msgstr "nu se poate gasi icon-ul de bakground \"%s\" " #: ../raster.c:183 msgid "invalid dither colormap size specification.disabling" msgstr "specificarea marimii hartii de culori e invalida. Dezactivare" #: ../raster.c:193 msgid "Could not build PseudoColor color table\n" msgstr "Nu e posibila crearea PseudoColor\n" #: ../misc.c:50 msgid "could not define value for %s for cpp" msgstr "" #: ../misc.c:80 msgid "could not get password entry for UID %i" msgstr "" #: ../appmenu.c:114 msgid "appmenu:could not create menu" msgstr "" #: ../appmenu.c:145 msgid "appmenu:could not create menu entry" msgstr "" #: ../stacking.c:89 ../stacking.c:148 msgid "could not get window list!!" msgstr "" #: ../switchmenu.c:109 msgid "Windows" msgstr "Ferestre" #: ../dock.c:171 msgid "could not open file \"%s\" to save Dock state" msgstr "e' fisierul \"%s\" nu se poate deschide pt. salvarea starii Dock-ului" #: ../dock.c:687 msgid "Could not execute program \"%s\"" msgstr "Nu se poate executa programul \"%s\" " #: ../winmenu.c:119 msgid "(Un)Maximize" msgstr "(De)Maximizeaza" #: ../winmenu.c:126 msgid "Miniaturize" msgstr "Miniaturizeaza" #: ../winmenu.c:133 msgid "(Un)Shade" msgstr "(Des)Acopera??" #: ../winmenu.c:140 msgid "Hide" msgstr "Ascunde" #: ../winmenu.c:146 msgid "Hide Others" msgstr "Ascunde Celelalte" #: ../winmenu.c:149 msgid "Close" msgstr "Inchide" #: ../winmenu.c:156 msgid "Kill" msgstr "Omoara" #: ../generic/error.c:46 msgid " fatal error: " msgstr " eroare fatala: " #: ../generic/error.c:72 msgid " warning: " msgstr " avertisment: " WindowMaker-0.95.9/po/cs.po0000644000175000017500000015131713431646201012361 00000000000000# Message catalog for Window Maker # Copyright (C) 1998 Free Software Foundation, Inc. # Text below is in ISO8859-2 # David Sauer , 1998. # Lukas Tinkl , 1999. # Jiří Hnídek # Pá dub 23 09:21:16 CEST 1999 David Šauer # St čec 14 09:30:00 CEST 1999 Lukáš Tinkl # St říj 13 20:29:53 CEST 2001 Jiří Hnídek # msgid "" msgstr "" "Project-Id-Version: WindowMaker 0.70.0\n" "POT-Creation-Date: 2001-10-11 13:49+0200\n" "PO-Revision-Date: 2001-10-14 20:29+53:00\n" "Last-Translator: Jiří Hnídek \n" "Language-Team: czech \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: unknown\n" #: ../src/appicon.c:541 ../src/dialog.c:224 ../src/dock.c:3276 #: ../src/dockedapp.c:230 ../src/main.c:273 ../src/rootmenu.c:1816 #: ../src/winspector.c:389 ../src/winspector.c:406 msgid "Error" msgstr "Chyba" #: ../src/appicon.c:542 msgid "Could not open specified icon file" msgstr "Nelze otevřít specifikovaný soubor s ikonou" #: ../src/appicon.c:543 ../src/dialog.c:121 ../src/dialog.c:224 #: ../src/dialog.c:671 ../src/dialog.c:1733 ../src/dock.c:493 #: ../src/dock.c:501 ../src/dock.c:525 ../src/dock.c:3277 #: ../src/dockedapp.c:231 ../src/dockedapp.c:426 ../src/main.c:273 #: ../src/rootmenu.c:1820 ../src/winspector.c:390 ../src/winspector.c:407 msgid "OK" msgstr "OK" #: ../src/appicon.c:570 ../src/dock.c:256 msgid "" " will be forcibly closed.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" " bude násilně ukončen.\n" "Jakékoli změny budou ztraceny.\n" "Potvrďte prosím." #: ../src/appicon.c:576 ../src/dock.c:261 ../src/winmenu.c:124 msgid "Kill Application" msgstr "Ukončit aplikaci" #: ../src/appicon.c:577 ../src/dock.c:262 ../src/winmenu.c:126 msgid "Yes" msgstr "Ano" #: ../src/appicon.c:577 ../src/dock.c:262 ../src/winmenu.c:126 msgid "No" msgstr "Ne" #: ../src/appicon.c:595 ../src/dock.c:1144 ../src/dock.c:3442 msgid "Unhide Here" msgstr "Odkrýt zde" #: ../src/appicon.c:596 ../src/appicon.c:622 ../src/dock.c:1146 #: ../src/dock.c:1148 ../src/dock.c:3454 ../src/winmenu.c:461 msgid "Hide" msgstr "Skrýt" #: ../src/appicon.c:597 ../src/appicon.c:628 msgid "Collapse" msgstr "Svinout" #: ../src/appicon.c:598 msgid "Set Icon..." msgstr "Nastavit ikonu..." #: ../src/appicon.c:599 ../src/dock.c:1152 ../src/rootmenu.c:224 #: ../src/rootmenu.c:238 ../src/winmenu.c:508 msgid "Kill" msgstr "Ukončit" #: ../src/appicon.c:620 ../src/dock.c:3452 msgid "Unhide" msgstr "Odkrýt" #: ../src/appicon.c:626 msgid "Uncollapse" msgstr "Rozvinout" #: ../src/application.c:394 #, c-format msgid "recreating missing icon '%s'" msgstr "znovu vytvořit chybějící ikonu '%s'" #: ../src/defaults.c:926 ../src/startup.c:889 ../src/startup.c:907 #: ../src/startup.c:913 #, 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:972 ../src/defaults.c:1089 ../src/defaults.c:1127 #: ../src/defaults.c:1173 #, c-format msgid "Domain %s (%s) of defaults database is corrupted!" msgstr "V databázi standardů je poškozena doména %s (%s)!" #: ../src/defaults.c:977 ../src/defaults.c:1109 ../src/defaults.c:1156 #: ../src/defaults.c:1182 #, 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:988 ../src/defaults.c:1074 #, 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:1007 #, c-format msgid "could not load domain %s from global defaults database (%s)" msgstr "nelze načíst doménu %s z globální databáze standardů (%s)" #: ../src/defaults.c:1079 #, 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:1146 ../src/screen.c:458 #, c-format msgid "could not load logo image for panels: %s" msgstr "pro panely nelze načíst logo: %s" #: ../src/defaults.c:1424 #, 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:1469 #, c-format msgid "can't convert \"%s\" to boolean for key \"%s\"" msgstr "\"%s\" nelze zkonvertovat pro klíč \"%s\" na boolean " #: ../src/defaults.c:1474 ../src/defaults.c:1506 ../src/defaults.c:1538 #: ../src/defaults.c:1551 ../src/defaults.c:1566 ../src/defaults.c:1580 #: ../src/defaults.c:1650 ../src/defaults.c:1662 ../src/defaults.c:2129 #: ../src/defaults.c:2146 ../src/defaults.c:2159 ../src/defaults.c:2191 #: ../src/defaults.c:2207 ../src/defaults.c:2238 ../src/defaults.c:2325 #: ../src/defaults.c:2713 ../src/defaults.c:2724 #, c-format msgid "using default \"%s\" instead" msgstr "namísto toho použiji implicitní %s" #: ../src/defaults.c:1503 #, c-format msgid "can't convert \"%s\" to integer for key \"%s\"" msgstr "\"%s\" nelze zkonvertovat pro klíč \"%s\" na integer" #: ../src/defaults.c:1533 ../src/defaults.c:1645 ../src/defaults.c:2124 #: ../src/defaults.c:2141 ../src/defaults.c:2186 ../src/defaults.c:2233 #: ../src/defaults.c:2708 ../src/wdefaults.c:565 ../src/wdefaults.c:601 #, 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:1546 #, 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:1561 #, c-format msgid "Wrong value for key \"%s\". Should be Coordinate." msgstr "Chybná hodnota pro klíč \"%s\". Má být Coordinate." #: ../src/defaults.c:1576 #, c-format msgid "can't convert array to integers for \"%s\"." msgstr "pole nelze konvertovat na čísla typu integer(pro %s)." #: ../src/defaults.c:1774 ../src/defaults.c:1806 ../src/defaults.c:1822 #: ../src/defaults.c:1851 ../src/defaults.c:1874 ../src/defaults.c:1927 #: ../src/defaults.c:1967 ../src/defaults.c:2005 ../src/defaults.c:2021 #, c-format msgid "\"%s\" is not a valid color name" msgstr "\"%s\" není správné jméno barvy" #: ../src/defaults.c:1787 ../src/defaults.c:1839 msgid "bad number of arguments in gradient specification" msgstr "chybný počet argumentů ve specifikaci gradientu" #: ../src/defaults.c:1900 msgid "too few arguments in multicolor gradient specification" msgstr "nedostatek argumentů při specifikaci vícebarevného gradientu" #: ../src/defaults.c:1994 msgid "bad number of arguments in textured gradient specification" msgstr "chybný počet argumentů ve specifikaci texturovaného gradientu" #: ../src/defaults.c:2037 #, 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]" #: ../src/defaults.c:2097 #, c-format msgid "could not initialize library %s" msgstr "nelze inicializovat knihovnu %s" #: ../src/defaults.c:2100 #, c-format msgid "could not find function %s::%s" msgstr "nelze najít funkci %s::%s" #: ../src/defaults.c:2107 #, c-format msgid "invalid texture type %s" msgstr "chybný typ textury %s" #: ../src/defaults.c:2154 #, c-format msgid "Error in texture specification for key \"%s\"" msgstr "Chyba ve specifikaci textury pro klíč \"%s\"" #: ../src/defaults.c:2203 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:2251 #, 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:2293 msgid "could not load any usable font!!!" msgstr "nelze načíst žádný použitelný font!!!" #: ../src/defaults.c:2320 #, c-format msgid "could not get color for key \"%s\"" msgstr "nelze získat barvu pro klíč \"%s\"" #: ../src/defaults.c:2378 ../src/rootmenu.c:492 #, c-format msgid "%s:invalid key modifier \"%s\"" msgstr "%s:chybný modifikátor klávesy \"%s\"" #: ../src/defaults.c:2390 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\"" msgstr "%s:chybná specifikace klávesové zkratky \"%s\"" #: ../src/defaults.c:2397 #, c-format msgid "%s:invalid key in shortcut \"%s\"" msgstr "%s:chybná klávesa v klávesové zkratce \"%s\"" #: ../src/defaults.c:2422 #, c-format msgid "%s: modifier key %s is not valid" msgstr "%s: klávesa modifikátoru %s není v pořádku" #: ../src/defaults.c:2454 #, c-format msgid "could not load image in option %s: %s" msgstr "nelze načíst obrázek ve volbě %s: %s" #: ../src/defaults.c:2573 #, c-format msgid "failed to open bitmap file \"%s\"" msgstr "nelze otevřít soubor s obr8zkem \"%s\"" #: ../src/defaults.c:2576 #, c-format msgid "\"%s\" is not a valid bitmap file" msgstr "\"%s\" není platný soubor barvy" #: ../src/defaults.c:2579 #, c-format msgid "out of memory reading bitmap file \"%s\"" msgstr "nedostatek paměti při otvírání obrázku \"%s\"" #: ../src/defaults.c:2618 ../src/defaults.c:2651 msgid "bad number of arguments in cursor specification" msgstr "chybný počet argumentů ve specifikaci kursoru" #: ../src/defaults.c:2634 #, c-format msgid "unknown builtin cursor name \"%s\"" msgstr "neznámý interní název kursoru \"%s\"" #: ../src/defaults.c:2661 ../src/defaults.c:2673 #, c-format msgid "could not find cursor bitmap file \"%s\"" msgstr "nelze nalézt soubor s kurzorem \"%s\"" #: ../src/defaults.c:2720 #, c-format msgid "Error in cursor specification for key \"%s\"" msgstr "Chyba ve specifikaci kurzoru pro klíč \"%s\"" #: ../src/defaults.c:2807 msgid "could not render texture for icon background" msgstr "pro pozadí ikony nelze vykreslit texturu" #: ../src/dialog.c:121 ../src/dialog.c:678 ../src/dock.c:525 #: ../src/dockedapp.c:431 ../src/rootmenu.c:186 ../src/rootmenu.c:224 #: ../src/rootmenu.c:238 msgid "Cancel" msgstr "Zrušit" #: ../src/dialog.c:219 msgid "Could not open directory \"%s\":\n%s" msgstr "Nelze otevřít adresář \"%s\":\n%s" #: ../src/dialog.c:274 msgid "Could not load image file " msgstr "Nelze načíst obrázek" #: ../src/dialog.c:605 msgid "Directories" msgstr "Adresáře" #: ../src/dialog.c:614 msgid "Icons" msgstr "Ikony" #: ../src/dialog.c:647 msgid "Preview" msgstr "" #: ../src/dialog.c:660 msgid "File Name:" msgstr "Soubor:" #: ../src/dialog.c:684 msgid "Choose File" msgstr "Vyberte soubor" #: ../src/dialog.c:702 ../src/dialog.c:704 msgid "Icon Chooser" msgstr "Výběr ikony" #: ../src/dialog.c:1160 ../src/dialog.c:1270 #, c-format msgid "Version %s" msgstr "Verze %s" #: ../src/dialog.c:1267 msgid "Window Manager for X" msgstr "Okenní manažer pro X" #: ../src/dialog.c:1290 #, c-format msgid "Using visual 0x%x: %s %ibpp " msgstr "Grafika používá 0x%x: %s %ibpp " #: ../src/dialog.c:1298 msgid "(32 thousand colors)\n" msgstr "(32 tisíc barev)\n" #: ../src/dialog.c:1301 msgid "(64 thousand colors)\n" msgstr "(64 tisíc barev)\n" #: ../src/dialog.c:1305 msgid "(16 million colors)\n" msgstr "(16 milionů barev)\n" #: ../src/dialog.c:1308 #, c-format msgid "(%d colors)\n" msgstr "(%d barev)\n" #: ../src/dialog.c:1318 #, c-format msgid "Total allocated memory: %i kB. Total memory in use: %i kB.\n" msgstr "Přidělená paměť: %i kB. Používaná paměť: %i kB.\n" #: ../src/dialog.c:1283 msgid "Image formats: " msgstr "Formáty obrázků: " #: ../src/dialog.c:1332 msgid "" "\nAdditional support for: " msgstr "" "\nDodatečná podpora pro: " #: ../src/dialog.c:1355 msgid " and " msgstr " a " #: ../src/dialog.c:1365 msgid "" "\n" "Sound disabled" msgstr "" "\n" "Zvuk zakázán" #: ../src/dialog.c:1367 msgid "" "\n" "Sound enabled" msgstr "" "\n" "Zvuk povolen" #: ../src/dialog.c:1391 msgid "Info" msgstr "Informace" #: ../src/dialog.c:1414 msgid "Merry X'mas!" msgstr "Veselé vánose!" #: ../src/dialog.c:1417 msgid "" " Window Maker 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.\n" "\n" " Window Maker 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.\n" "\n" " You should have received a copy of the GNU General Public License along " "with this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin Street, Fifth Floor, Boston, MA02110-1301 USA." msgstr "" "Window Maker je volně šiřitelný software; můžete ho předat dál nebo " "upravit podle podmínek GNU licence (Genral Public Licence), která " "byla uveřejněna organizací Free Software Foundation; jedna ze " "dvou verzí licence, nebo (jestli chcete) nějaká novější verze.\n" "\n" "Window Maker je šířen s nadějí, že bude použitelný, ale BEZ " " JAKÉKOLIV ZÁRUKY; bez později přidaných záruk OBCHODNÍKA " "nebo DOBŘE MÍNĚNÉHO ÚMYSLU. Více informací naleznete v " "GNU licenci (Genral Public Licence)\n" "\n" "Měli by jste obdržet kopii GNU licence s tímto programem; pokud " "tomu tak není napište organizaci Free Software Foundation, " "Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA." #: ../src/dialog.c:1505 msgid "Legal" msgstr "Licenční podmínky" #: ../src/dialog.c:1656 ../src/startup.c:395 msgid "cannot open connection for crashing dialog panel. Aborting." msgstr "pro nefunkční dialogový panel nelze otevřít spojení. Konec." #: ../src/dialog.c:1682 msgid "Fatal error" msgstr "Závažná chyba" #: ../src/dialog.c:1693 #, c-format msgid "" "Window Maker received signal %i\n" "(%s)." msgstr "" "Window Maker obdržel signál %i\n" "(%s)." #: ../src/dialog.c:1696 #, c-format msgid "Window Maker received signal %i." msgstr "Window Maker přijal signál %i." #. Comment for the PO file: the %s is an email address #: ../src/dialog.c:1632 #, c-format msgid "" " This fatal error occured probably due to a bug. Please fill the included " "BUGFORM and report it to %s." msgstr "" " Tato závažná chyba se vyskytla pravděpodobně v důsledku chyby v kódu Window " "Makeru. Prosím, vyplňte soubor BUGFORM a zašlete ho na %s " "(pouze anglicky)" #: ../src/dialog.c:1714 msgid "What do you want to do now?" msgstr "Co byste chtěl(a) udělat teď ?" #: ../src/dialog.c:1720 msgid "Select action" msgstr "Označit ikonu" #: ../src/dialog.c:1721 msgid "Abort and leave a core file" msgstr "Ukonči a zapsat soubor s obsahem paměti (core)" #: ../src/dialog.c:1722 msgid "Restart Window Maker" msgstr "Restart Window Makeru" #: ../src/dialog.c:1723 msgid "Start alternate window manager" msgstr "Odstartovat alternativní okenní manažer" #: ../src/dialog.c:1901 msgid "" "Window Maker is part of the GNUstep project.\n" "The GNUstep project aims to create a free\n" "implementation of the OpenStep(tm) specification\n" "which is a object-oriented framework for\n" "creating advanced graphical, multi-platform\n" "applications. Additionally, a development and\n" "user desktop environment will be created on top\n" "of the framework. For more information about\n" "GNUstep, please visit: www.gnustep.org" msgstr "" "Window maker je součástí GNUstep projektu.\n" "GNUstep usiluje o vytvoření volně šiřitelné\n" "implementace prostředí OpenStepu(tm), které\n" "má objektově orientovaný systém pro vytváření\n" "pokročilých grafických, multiplatformních\n" "aplikací. A navíc vývoj uživatelsky přívětivého\n" "prostředí je nejdůležitější součást projektu.\n" "Více informací o GNUstepu naleznete na\n" "webové stránce: www.gnustep.org" #: ../src/dialog.c:1921 msgid "About GNUstep" msgstr "O GNUstepu" #: ../src/dock.c:213 #, c-format msgid "Type the name for workspace %i:" msgstr "Zadejte jméno pro plochu %i:" #: ../src/dock.c:214 ../src/dock.c:1108 ../src/dock.c:1111 ../src/dock.c:3360 msgid "Rename Workspace" msgstr "Přejmenovat plochu" #: ../src/dock.c:487 ../src/dock.c:495 msgid "Warning" msgstr "Varování" #: ../src/dock.c:488 msgid "" "Some icons cannot be made omnipresent. Please make sure that no other icon " "is docked in the same positions on the other workspaces and the Clip is not " "full in some workspace." msgstr "" "Některé ikony nemohou být všudypřítomné. Ujistěte se prosím, že žádná další " "ikona není ukotvena na stejné pozici v ostatních pracovních plochách a že " "Sponka není na některé ploše zaplněna." #: ../src/dock.c:496 msgid "" "Icon cannot be made omnipresent. Please make sure that no other icon is " "docked in the same position on the other workspaces and the Clip is not full " "in some workspace." msgstr "" "Některé ikony nemohou být všudypřítomné. Ujistěte se prosím, že žádná další " "ikona není ukotvena na stejné pozici v ostatních pracovních plochách a že " "Sponka není na některé ploše zaplněna." #: ../src/dock.c:523 msgid "Workspace Clip" msgstr "Sponka" #: ../src/dock.c:524 msgid "All selected icons will be removed!" msgstr "Všechny vybrané ikony budou odstraněny!" #: ../src/dock.c:575 ../src/dock.c:1123 ../src/dock.c:1125 ../src/dock.c:3396 msgid "Keep Icon" msgstr "Držet ikonu" #: ../src/dock.c:576 ../src/dock.c:2104 ../src/dock.c:2245 msgid "Type the command used to launch the application" msgstr "Zadejte příkaz, který spustí aplikaci" #: ../src/dock.c:932 #, c-format msgid "could not launch application %s\n" msgstr "aplikaci %s nelze odstartovat\n" #: ../src/dock.c:987 msgid "could not create workspace submenu for Clip menu" msgstr "nelze vytvořit submenu pracovní plochy pro menu Sponky" #: ../src/dock.c:1045 msgid "could not create options submenu for Clip menu" msgstr "nelze vytvořit submenu voleb pro menu Sponky" #: ../src/dock.c:1049 ../src/dock.c:1097 msgid "Keep on Top" msgstr "Vždy navrchu" #: ../src/dock.c:1055 msgid "Collapsed" msgstr "Svinuto" #: ../src/dock.c:1061 msgid "Autocollapse" msgstr "Automaticky svinout" #: ../src/dock.c:1067 msgid "Autoraise" msgstr "Automaticky Nahoru/Dolů" #: ../src/dock.c:1073 msgid "Autoattract Icons" msgstr "Automaticky chytat ikony" #: ../src/dock.c:1103 msgid "Clip Options" msgstr "Volby Sponky" #: ../src/dock.c:1113 msgid "Selected" msgstr "Vybraná" #: ../src/dock.c:1118 ../src/dock.c:1121 ../src/dock.c:3387 msgid "Select All Icons" msgstr "(Od)Označit všechny ikony" #: ../src/dock.c:1127 ../src/dock.c:1129 ../src/dock.c:3404 msgid "Move Icon To" msgstr "Přesunout ikonu na" #: ../src/dock.c:1134 ../src/dock.c:1137 ../src/dock.c:3415 msgid "Remove Icon" msgstr "Odstranit ikonu" #: ../src/dock.c:1139 msgid "Attract Icons" msgstr "Chytat ikony" #: ../src/dock.c:1142 msgid "Launch" msgstr "Odstartovat" #: ../src/dock.c:1150 msgid "Settings..." msgstr "Nastavení..." #: ../src/dock.c:1515 ../src/dock.c:1622 #, c-format msgid "bad value in docked icon state info %s" msgstr "chybná hodnota stavu ukotvené ikony %s" #: ../src/dock.c:1630 #, c-format msgid "bad value in docked icon position %i,%i" msgstr "chybná hodnota pozice ukotvené ikony %i,%i" #: ../src/dock.c:1886 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" #: ../src/dock.c:2103 ../src/dock.c:2244 msgid "Dock Icon" msgstr "Ukotvit ikonu" #: ../src/dock.c:3267 ../src/dock.c:3270 ../src/dock.c:3273 #, c-format msgid "Could not execute command \"%s\"" msgstr "Nelze provést příkaz \"%s\"" #: ../src/dock.c:3366 msgid "Toggle Omnipresent" msgstr "Všechny plochy" #: ../src/dock.c:3371 ../src/kwm.c:637 ../src/winmenu.c:413 #: ../src/winspector.c:1392 msgid "Omnipresent" msgstr "Všechny plochy" #: ../src/dock.c:3385 msgid "Unselect All Icons" msgstr "(Od)Označit všechny ikony" #: ../src/dock.c:3394 msgid "Keep Icons" msgstr "Držet ikonu" #: ../src/dock.c:3402 msgid "Move Icons To" msgstr "Přesunout ikonu(y) na" #: ../src/dock.c:3413 msgid "Remove Icons" msgstr "Odstranit ikonu(y)" #: ../src/dock.c:3444 ../src/kwm.c:643 msgid "Bring Here" msgstr "Držet zde" #: ../src/dockedapp.c:149 #, c-format 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:229 #, c-format msgid "Could not open specified icon file: %s" msgstr "Nelze otevřít specifikovaný soubor s ikonou: %s" #: ../src/dockedapp.c:231 msgid "Ignore" msgstr "Ignorovat" #: ../src/dockedapp.c:333 msgid "Start when Window Maker is started" msgstr "Odstartovat při startu Window Makeru" #: ../src/dockedapp.c:340 msgid "Lock (prevent accidental removal)" msgstr "Zamknout (před náhodným odstraněním)" #: ../src/dockedapp.c:344 msgid "Application path and arguments" msgstr "Cesty a argumenty pro aplikaci" #: ../src/dockedapp.c:357 msgid "Command for middle-click launch" msgstr "Příkaz pro prostřední tlačítko" #: ../src/dockedapp.c:371 #, c-format msgid "%s will be replaced with current selection" msgstr "%s bude nahrazeno aktuálním výběrem" #: ../src/dockedapp.c:376 msgid "Command for files dropped with DND" msgstr "Příkaz pro položený soubor (DND)" #: ../src/dockedapp.c:390 #, c-format msgid "%d will be replaced with the file name" msgstr "%d bude nahrazeno jménem souboru" #: ../src/dockedapp.c:394 msgid "DND support was not compiled in" msgstr "DND podpora nebylo zakompilována" #: ../src/dockedapp.c:399 msgid "Icon Image" msgstr "Ikona" #: ../src/dockedapp.c:413 ../src/winspector.c:1530 msgid "Browse..." msgstr "Hledat..." #: ../src/dockedapp.c:466 msgid "Docked Application Settings" msgstr "Nastavení pro aplikaci v doku" #: ../src/framewin.c:649 ../src/framewin.c:744 ../src/menu.c:456 #: ../src/texture.c:594 #, c-format msgid "could not render texture: %s" msgstr "nelze vykreslit texturu: %s" #: ../src/framewin.c:672 ../src/framewin.c:683 ../src/framewin.c:699 #: ../src/framewin.c:710 ../src/framewin.c:717 ../src/framewin.c:724 #: ../src/icon.c:350 ../src/menu.c:485 #, c-format msgid "error rendering image:%s" msgstr "nelze vykreslit obrázek:%s" #: ../src/framewin.c:777 #, c-format msgid "error rendering image: %s" msgstr "chyba při vykreslení obrázku: %s" #: ../src/gnome.c:214 ../src/gnome.c:341 ../src/gnome.c:399 msgid "out of memory while updating GNOME hints" msgstr "nedostatek paměti při obnovování pokynů pro GNOME" #: ../src/icon.c:229 ../src/wdefaults.c:438 #, c-format msgid "error loading image file \"%s\": %s" msgstr "ze souboru \"%s\" nelze načíst obrázek: %s" #: ../src/icon.c:491 ../src/icon.c:500 #, c-format msgid "could not create directory %s" msgstr "Nelze vytvořit adresář %s" #: ../src/icon.c:767 #, c-format msgid "could not find default icon \"%s\"" msgstr "nelze najít standardní ikonu \"%s\"" #: ../src/icon.c:773 #, c-format msgid "could not load default icon \"%s\":%s" msgstr "nelze načíst standardní ikonu \"%s\":%s" #: ../src/kwm.c:633 ../src/winmenu.c:436 ../src/winmenu.c:571 msgid "Maximize" msgstr "Maximalizace" #: ../src/kwm.c:634 ../src/winmenu.c:566 msgid "Unmaximize" msgstr "Demaximalizace" #: ../src/kwm.c:635 ../src/winmenu.c:444 ../src/winmenu.c:557 msgid "Miniaturize" msgstr "Miniaturizace" #: ../src/kwm.c:636 ../src/winmenu.c:552 msgid "Deminiaturize" msgstr "Deminiaturizace" #: ../src/kwm.c:638 msgid "Not Omnipresent" msgstr "Není všudypřítomný" #: ../src/kwm.c:639 msgid "Move" msgstr "Přesun" #: ../src/kwm.c:640 msgid "Resize" msgstr "Zvětšit/Zmenšit" #: ../src/kwm.c:641 ../src/rootmenu.c:224 ../src/winmenu.c:501 msgid "Close" msgstr "Uzavřít" #: ../src/kwm.c:642 ../src/winmenu.c:485 msgid "Move To" msgstr "Přesunout na" #: ../src/kwm.c:1096 msgid "%a(Run Command,Type the command to run:)" msgstr "%a(Spusť Přikaz,Napiš příkaz ke spuštění:)" #: ../src/main.c:222 msgid "failed to restart Window Maker." msgstr "restart Window Makeru selhal." #: ../src/main.c:225 #, c-format msgid "could not exec %s" msgstr "nelze spustit: %s" #: ../src/main.c:271 msgid "Could not execute command: " msgstr "Nelze provést příkaz:" #: ../src/main.c:428 #, c-format msgid "%s aborted.\n" msgstr "%s přerušen.\n" #: ../src/main.c:439 #, c-format msgid "Usage: %s [options]\n" msgstr "Použití: %s [volby]\n" #: ../src/main.c:440 msgid "The Window Maker window manager for the X window system" msgstr "Správce oken Window Maker pro X window" #: ../src/main.c:442 msgid " -display host:dpy\tdisplay to use" msgstr " -display host:dpy\tkterý display použít" #: ../src/main.c:444 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:446 msgid " --no-dock\t\tdo not open the application Dock" msgstr " --nodock\t\tnezobrazuj Dok pro ikony" #: ../src/main.c:447 msgid " --no-clip\t\tdo not open the workspace Clip" msgstr " --noclip\t\tneotvírat aplikaci Sponku" #: ../src/main.c:448 msgid " --no-autolaunch\tdo not autolaunch applications" msgstr " --no-autolaunch\tneodstartovat automaticky spouštěné aplikace" #: ../src/main.c:449 msgid " --dont-restore\t\tdo not restore saved session" msgstr " --dont-restore\t\tneobnovovat uložené sezení" #: ../src/main.c:451 msgid " --locale locale\tlocale to use" msgstr " --locale locale\tmístnínastavení" #: ../src/main.c:453 msgid "" " --create-stdcmap\tcreate the standard colormap hint in PseudoColor visuals" msgstr " --create-stdcmap\tvytvořit standardní barevnou paletu v pseudobarvách" #: ../src/main.c:454 msgid " --visual-id visualid\tvisual id of visual to use" msgstr "" " --visual-id visualid\tčíslo obrazového módu(visual id), který bude použit" #: ../src/main.c:455 msgid " --static\t\tdo not update or save configurations" msgstr " --static\t\tneobnovovat a neukládat konfigurace" #: ../src/main.c:456 msgid " --no-polling\t\tdo not periodically check for configuration updates" msgstr " --no-polling\t\tnekontrolovat periodicky konfigurační obnovení" #: ../src/main.c:458 msgid " --synchronous\t\tturn on synchronous display mode" msgstr " --synchronous\t\tsynchronizace vykreslování" #: ../src/main.c:460 msgid " --version\t\tprint version and exit" msgstr " --version\t\tzobraz verzi a konec" #: ../src/main.c:461 msgid " --help\t\t\tshow this message" msgstr " --help\t\t\tukaž tuto zprávu" #: ../src/main.c:474 #, c-format msgid "" "could not find user GNUstep directory (%s).\n" "Make sure you have installed Window Maker correctly and run wmaker.inst" msgstr "" "nelze najít uživatelův adresář GNUstep (%s).\n" "Ujistěte se, že máte Window Maker správně nainstalován, případně spusťte " "wmaker.inst" #: ../src/main.c:479 #, c-format msgid "could not find user GNUstep directory (%s)." msgstr "nelze nalézt uživatelský GNUstep adresář (%s)." #: ../src/main.c:482 msgid "" "There was an error while creating GNUstep directory, please make sure you " "have installed Window Maker correctly and run wmaker.inst" msgstr "" "Došlo k chybě při vytváření adresáře GNUstep, prosím ujistěte se, že" "máte Window Maker správně nainstalován, případně spusťte wmaker.inst" #: ../src/main.c:485 #, c-format msgid "%s directory created with default configuration." msgstr "%s adresář vytvořen se standardní konfigurací." #: ../src/main.c:505 ../src/main.c:510 #, c-format msgid "%s:could not execute initialization script" msgstr "%s:nelze provést inicializační skript" #: ../src/main.c:530 ../src/main.c:535 #, c-format msgid "%s:could not execute exit script" msgstr "%s:nelze provést ukončovací skript" #: ../src/main.c:651 ../src/main.c:659 ../src/main.c:667 ../src/main.c:687 #, c-format msgid "too few arguments for %s" msgstr "nedostatek argumetů pro %s" #: ../src/main.c:671 #, c-format msgid "bad value for visualid: \"%s\"" msgstr "chybná hodnota pro typ visual: \"%s\"" #: ../src/main.c:695 #, c-format msgid "%s: invalid argument '%s'\n" msgstr "%s: chybný argument '%s'\n" #: ../src/main.c:696 #, c-format msgid "Try '%s --help' for more information\n" msgstr "Zkuste '%s --help', získáte více informací.\n" #: ../src/main.c:727 msgid "X server does not support locale" msgstr "X server nepodporuje nastavení místních zvyklostí" #: ../src/main.c:731 msgid "cannot set locale modifiers" msgstr "nelze nastavit modifikátory místních zvyklostí" #: ../src/main.c:747 #, c-format msgid "could not open display \"%s\"" msgstr "nelze otevřít displej \"%s\"" #: ../src/menu.c:1255 msgid "could not grab keyboard" msgstr "nelze snímat klávesnici" #: ../src/misc.c:71 #, c-format msgid "could not define value for %s for cpp" msgstr "pro %s pro cpp nelze určit hodnotu" #: ../src/misc.c:101 #, c-format msgid "could not get password entry for UID %i" msgstr "pro uživatele s UID %i nelze získat heslo" #: ../src/misc.c:126 #, c-format msgid "your machine is misconfigured. HOSTNAME is set to %s" msgstr "" "váš počítač není správně konfigurován. Proměnná HOSTNAME je nastavena na %s" #: ../src/misc.c:132 #, c-format msgid "your machine is misconfigured. HOST is set to %s" msgstr "váš počítač není správně nakonfigurován. Proměnná HOST nastavena na %s" #: ../src/misc.c:628 msgid "Program Arguments" msgstr "Argumenty programu" #: ../src/misc.c:629 msgid "Enter command arguments:" msgstr "Zadejte argumenty pro příkaz:" #: ../src/misc.c:722 msgid "unable to get dropped data from DND drop" msgstr "nelze získat data z DND operace drop" #: ../src/misc.c:730 msgid "error getting dropped data from DND drop" msgstr "chyba při získávání dat z operace DND drop" #: ../src/misc.c:736 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:781 ../src/misc.c:921 #, c-format msgid "out of memory during expansion of \"%s\"" msgstr "nedostatek paměti při expanzi \"%s\"" #: ../src/misc.c:835 msgid "out of memory during expansion of \"%w\"" msgstr "nedostatek paměti při expanzi \"%w\"" #: ../src/misc.c:853 msgid "out of memory during expansion of \"%W\"" msgstr "nedostatek paměti při expanzi \"%s\"" #: ../src/misc.c:869 msgid "out of memory during expansion of \"%a\"" msgstr "nedostatek paměti při expanzi \"%a\"" #: ../src/misc.c:900 #, c-format msgid "out of memory during expansion of \"%d\"" msgstr "nedostatek paměti při expanzi \"%d\"" #: ../src/misc.c:914 msgid "selection not available" msgstr "výběr není dostupný" #: ../src/misc.c:970 ../src/misc.c:976 #, c-format msgid "bad window name value in %s state info" msgstr "chybné jméno okna ve stavové informaci %s" #: ../src/misc.c:1233 msgid "could not send message to background image helper" msgstr "nelze poslat zprávu umísťovači pozadí" #: ../src/pixmap.c:235 #, c-format msgid "could not load mask bitmap file \"%s\". Won't use mask" msgstr "" "nelze načíst masku bitové mapy ze souboru \"%s\". Masky nebudou použity." #: ../src/resources.c:44 #, c-format msgid "could not parse color \"%s\"" msgstr "nelze zpracovat barvu \"%s\"" #: ../src/resources.c:48 #, c-format msgid "could not allocate color \"%s\"" msgstr "nelze alokovat položku pro barvu \"%s\"" #: ../src/rootmenu.c:184 ../src/rootmenu.c:186 msgid "Exit" msgstr "Konec" #: ../src/rootmenu.c:185 msgid "Exit window manager?" msgstr "Ukončit manažera oken?" #: ../src/rootmenu.c:221 msgid "Close X session" msgstr "Ukončit sezení X" #: ../src/rootmenu.c:222 msgid "" "Close Window System session?\n" "Kill might close applications with unsaved data." msgstr "" "Ukončit sezení?\n" "Ukončením aplikací může dojít ke ztrátě dat." #: ../src/rootmenu.c:235 msgid "Kill X session" msgstr "Ukončit sezení X" #: ../src/rootmenu.c:236 msgid "" "Kill Window System session?\n" "(all applications will be closed)" msgstr "" "Ukončit sezení?\n" "(všechny aplikace budou uzavřeny)" #: ../src/rootmenu.c:505 #, 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:513 #, 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:566 #, c-format msgid "%s: unmatched '\"' in menu file" msgstr "%s: neodpovídající '\"' v souboru s menu" #: ../src/rootmenu.c:616 #, c-format msgid "%s: missing command" msgstr "%s: očekávám příkaz" #: ../src/rootmenu.c:648 #, c-format msgid "invalid OPEN_MENU specification: %s" msgstr "chybná specifikace OPEN_MENU: %s" #: ../src/rootmenu.c:696 #, c-format msgid "%s:could not stat menu" msgstr "%s:nelze provést operaci 'stat' na menu" #: ../src/rootmenu.c:704 #, c-format msgid "%s:could not stat menu:%s" msgstr "%s:nelze provést operaci 'stat' na menu:%s" #: ../src/rootmenu.c:722 #, c-format msgid "too many parameters in OPEN_MENU: %s" msgstr "příliš mnoho parametrů pro příkaz OPEN_MENU: %s" #: ../src/rootmenu.c:766 msgid "" "There are more than one WORKSPACE_MENU commands in the applications menu. " "Only one is allowed." msgstr "" "V aplikačním menu je více než jeden příkaz WORKSPACE_MENU. Je povolen jen " "jeden." #: ../src/rootmenu.c:800 msgid "" "There are more than one WINDOWS_MENU commands in the applications menu. Only " "one is allowed." msgstr "" "V aplikačním menu je více než jeden příkaz WORKSPACE_MENU. Je povolen jen " "jeden." #: ../src/rootmenu.c:805 msgid "Window List" msgstr "Seznam oken" #: ../src/rootmenu.c:834 ../src/rootmenu.c:852 ../src/rootmenu.c:862 #, 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:930 #, c-format msgid "%s:unknown command \"%s\" in menu config." msgstr "%s:neznámý příkaz \"%s\" v konfiguraci menu." #: ../src/rootmenu.c:938 #, 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:1075 #, 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:1097 ../src/rootmenu.c:1190 ../src/rootmenu.c:1292 #, 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:1127 #, 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:1156 ../src/rootmenu.c:1256 msgid "could not make arguments for menu file preprocessor" msgstr "nelze vytvořit argumety pro preprocesor souboru s menu" #: ../src/rootmenu.c:1163 ../src/rootmenu.c:1264 #, c-format msgid "%s:could not open/preprocess menu file" msgstr "%s: nelze otevřít nebo předzpracovat soubor s menu" #: ../src/rootmenu.c:1175 ../src/rootmenu.c:1277 #, c-format msgid "could not open menu file \"%s\": %s" msgstr "nelze otevřít soubor s menu \"%s\": %s" #: ../src/rootmenu.c:1202 #, 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:1211 msgid "error reading preprocessed menu data" msgstr "chyba při čtení předzpracovaného souboru s menu" #: ../src/rootmenu.c:1304 #, c-format msgid "%s:no title given for the root menu" msgstr "%s: pro hlavní menu nebyl určen titulek" #: ../src/rootmenu.c:1395 ../src/rootmenu.c:1468 ../src/rootmenu.c:1509 #, 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:1405 #, 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:1563 msgid "Commands" msgstr "Příkazy" #: ../src/rootmenu.c:1566 msgid "Restart" msgstr "Restart" #: ../src/rootmenu.c:1567 msgid "Exit..." msgstr "Konec..." #: ../src/rootmenu.c:1612 #, 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:1619 #, 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:1630 #, 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:1653 ../src/rootmenu.c:1729 #, c-format msgid "%s:format error in root menu configuration \"%s\"" msgstr "%s:chybný formát v konfiguraci hlavního menu \"%s\"" #: ../src/rootmenu.c:1817 msgid "" "The applications menu could not be loaded. Look at the console output for a " "detailed description of the errors." msgstr "" "Menu aplikací nemůže být načteno. Podívejte se na konzoli, bude tam detailní " "popis chyby." #: ../src/screen.c:740 #, c-format msgid "could not initialize graphics library context: %s" msgstr "nelze inicializovat kontext grafické knihovny: %s" #: ../src/screen.c:771 msgid "could not do initialization of WINGs widget set" msgstr "nelze provést inicalizovat přípravky WINGs" #: ../src/screen.c:1139 #, c-format msgid "could not save session state in %s" msgstr "stav sezení nelze do %s uložit" #: ../src/session.c:183 ../src/wdefaults.c:583 ../src/winspector.c:454 #, c-format msgid "can't convert \"%s\" to boolean" msgstr "\"%s\" nelze zkonvertovat na boolean" #: ../src/session.c:1021 msgid "out of memory while saving session state" msgstr "nedostatek paměti při ukládání stavu sezení" #: ../src/session.c:1104 msgid "end of memory while saving session state" msgstr "nedostatek paměti při ukládání stavu sezení" #: ../src/session.c:1242 msgid "connection to the session manager was lost" msgstr "připojení ke správci sezení bylo ztraceno" #: ../src/stacking.c:79 msgid "could not get window list!!" msgstr "nelze získat seznam oken!!!" #: ../src/startup.c:202 #, c-format msgid "internal X error: %s\n" msgstr "interní chyba systému X: %s\n" #: ../src/startup.c:260 #, c-format msgid "got signal %i (%s) - restarting\n" msgstr "přijat signál %i (%s) - restartuji\n" #: ../src/startup.c:262 #, c-format msgid "got signal %i - restarting\n" msgstr "přijat signál %i - restartuji\n" #: ../src/startup.c:272 #, c-format msgid "got signal %i (%s) - rereading defaults\n" msgstr "přijat signál %i (%s) - obnovuji nastavení\n" #: ../src/startup.c:274 #, c-format msgid "got signal %i - rereading defaults\n" msgstr "přijat signál %i - obnovuji nastavení\n" #: ../src/startup.c:284 #, c-format msgid "got signal %i (%s) - exiting...\n" msgstr "přijat signál %i (%s) - konec...\n" #: ../src/startup.c:286 #, c-format msgid "got signal %i - exiting...\n" msgstr "přijat signál %i - konec...\n" #: ../src/startup.c:329 #, c-format msgid "got signal %i (%s)\n" msgstr "přijat signál %i (%s)\n" #: ../src/startup.c:331 #, c-format msgid "got signal %i\n" msgstr "získán signál %i\n" #: ../src/startup.c:342 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:407 msgid "trying to restart Window Maker..." msgstr "pokouším se restartovat Window Maker..." #: ../src/startup.c:412 msgid "trying to start alternate window manager..." msgstr "zkouším odstartovat alternativní okenní manažer" #: ../src/startup.c:417 msgid "failed to start alternate window manager. Aborting." msgstr "alternativního správce oken nelze odstartovat. Konec." #: ../src/startup.c:419 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." #: ../src/startup.c:899 #, 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:927 msgid "XKB is not supported. KbdModeLock is automatically disabled." msgstr "XKB není podporován. KbdModeLock byl automaticky vypnut." #: ../src/startup.c:946 msgid "it seems that there is already a window manager running" msgstr "mám ten pocit, že zde již jeden manažer oken běží" #: ../src/startup.c:952 #, c-format msgid "could not manage screen %i" msgstr "nelze spravovat obrazovku %i" #: ../src/startup.c:1020 msgid "could not manage any screen" msgstr "nelze spravovat žádnou obrazovku" #: ../src/switchmenu.c:137 msgid "Windows" msgstr "Okna" #: ../src/texture.c:329 ../src/texture.c:371 #, c-format msgid "image file \"%s\" used as texture could not be found." msgstr "soubor s obrázkem \"%s\" použitým v textuře nebyl nalezen." #: ../src/texture.c:335 ../src/texture.c:377 #, c-format msgid "could not load texture pixmap \"%s\":%s" msgstr "nelze načíst obrázek s texturou: \"%s\":%s" #: ../src/texture.c:437 #, c-format msgid "library \"%s\" cound not be opened." msgstr "nelze otevřít knihovnu \"%s\"." #: ../src/texture.c:446 #, c-format msgid "function \"%s\" not found in library \"%s\"" msgstr "funkce \"%s\" nebyla v knihovně \"%s\" nalezena" #: ../src/texture.c:453 msgid "function textures not supported on this system, sorry." msgstr "textury vytvářené funkcemi nejsou na tomto systému podporovány. Sorry." #: ../src/texture.c:598 msgid "could not allocate image buffer" msgstr "nelze alokovat paměť pro obrázek" #: ../src/wdefaults.c:432 #, c-format msgid "could not find icon file \"%s\"" msgstr "nelze získat soubor s ikonou \"%s\"" #: ../src/window.c:2796 ../src/window.c:2931 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 "" "Klávesa NumLock, ScrollLock nebo podobná je zřejmě zapnuta..\n" "Vypněte ji, nebo některé akce myši a klávesové zkratky nebudou fungovat." #: ../src/winmenu.c:125 msgid "" "This will kill the application.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" "Aplikace bude takto ukončena.\n" "Jakékoli změny budou ztraceny.\n" "Potvrďte prosím." #: ../src/winmenu.c:267 ../src/winmenu.c:276 msgid "Set Shortcut" msgstr "Nastavit zkratku" #: ../src/winmenu.c:354 ../src/winmenu.c:399 msgid "could not create submenu for window menu" msgstr "nelze vytvořit submenu pro menu oken" #: ../src/winmenu.c:403 msgid "Keep on top" msgstr "Vždy navrchu" #: ../src/winmenu.c:408 msgid "Keep at bottom" msgstr "Držet dole" #: ../src/winmenu.c:453 ../src/winmenu.c:588 msgid "Shade" msgstr "Titulek" #: ../src/winmenu.c:469 msgid "Resize/Move" msgstr "Zvětšit/Přesunout" #: ../src/winmenu.c:477 msgid "Select" msgstr "Vybrat" #: ../src/winmenu.c:490 msgid "Attributes..." msgstr "Atributy..." #: ../src/winmenu.c:492 msgid "Options" msgstr "Volby" #: ../src/winmenu.c:583 msgid "Unshade" msgstr "Celé okno" #: ../src/winspector.c:387 #, 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:404 #, c-format msgid "Could not open specified icon \"%s\":%s" msgstr "Nelze otevřít specifikovanou ikonu \"%s\":%s" #: ../src/winspector.c:1138 #, c-format msgid "Inspecting %s.%s" msgstr "Nastavení pro %s.%s" #: ../src/winspector.c:1164 msgid "Click in the window you wish to inspect." msgstr "Klikněte na okno, které chcete prověřit." #: ../src/winspector.c:1203 msgid "" "The configuration will apply to all\n" "windows that have their WM_CLASS\n" "property set to the above selected\n" "name, when saved." msgstr "" "Konfigurace bude aplikována na všechny\n" "klienty, kteří mají nastavenu vlastnost\n" "WM_CLASS na výše vybranou\n" "(při uložení této konfigurace)" #: ../src/winspector.c:1232 msgid "Save" msgstr "Uložit" #: ../src/winspector.c:1240 msgid "Apply" msgstr "Nastavit" #: ../src/winspector.c:1246 msgid "Reload" msgstr "Obnovit" #: ../src/winspector.c:1255 ../src/winspector.c:1265 msgid "Window Specification" msgstr "Specifikace okna" #: ../src/winspector.c:1256 msgid "Window Attributes" msgstr "Atributy okna" #: ../src/winspector.c:1257 msgid "Advanced Options" msgstr "Další volby" #: ../src/winspector.c:1258 msgid "Icon and Initial Workspace" msgstr "Ikona a počáteční plocha" #: ../src/winspector.c:1259 msgid "Application Specific" msgstr "Atributy aplikace" #: ../src/winspector.c:1273 msgid "Defaults for all windows" msgstr "Standard pro všechna okna" #: ../src/winspector.c:1327 msgid "Select window" msgstr "Vyberte okno" #: ../src/winspector.c:1341 msgid "Attributes" msgstr "Atributy" #: ../src/winspector.c:1352 msgid "Disable titlebar" msgstr "Zakázat titulek" #: ../src/winspector.c:1354 msgid "" "Remove the titlebar of this window.\n" "To access the window commands menu of a window\n" "without it's titlebar, press Control+Esc (or the\n" "equivalent shortcut, if you changed the default\n" "settings)." msgstr "" "Odstranit titulkový pruh tohoto okna.\n" "Abyste přesto mohli používat příkazové menu okna\n" "bez titulkového pruhu, stiskněte Control+Esc (nebo\n" "ekvivalentní zkratku, jestliže jste změnili výchozí\n" "nastavení)." #: ../src/winspector.c:1361 msgid "Disable resizebar" msgstr "Zakázat zvětšovací růžek" #: ../src/winspector.c:1363 msgid "Remove the resizebar of this window." msgstr "Odstranit zvětšovací růžek tohoto okna." #: ../src/winspector.c:1366 msgid "Disable close button" msgstr "Zakázat prvek pro uzavření" #: ../src/winspector.c:1368 msgid "Remove the `close window' button of this window." msgstr "Odstranit zavírací tlačítko tohoto okna." #: ../src/winspector.c:1371 msgid "Disable miniaturize button" msgstr "Zakázat prvek pro minimalizaci" #: ../src/winspector.c:1373 msgid "Remove the `miniaturize window' button of the window." msgstr "Odstranit minimalizační tlačítko tohoto okna." #: ../src/winspector.c:1376 msgid "Disable border" msgstr "Zakázat okraje" #: ../src/winspector.c:1378 msgid "Remove the 1 pixel black border around the window." msgstr "Odstranit jednopixelový černý okraj okolo okna." #: ../src/winspector.c:1381 msgid "Keep on top (floating)" msgstr "Vždy navrch / plovoucí" #: ../src/winspector.c:1383 msgid "" "Keep the window over other windows, not allowing\n" "them to cover it." msgstr "Držet okno nad ostatními a zabránit jim v překryvu." #: ../src/winspector.c:1387 msgid "Keep at bottom (sunken)" msgstr "Držet vespod" #: ../src/winspector.c:1389 msgid "Keep the window under all other windows." msgstr "Držet okno pod všemi ostatními." #: ../src/winspector.c:1394 msgid "Make window present in all workspaces." msgstr "Zobrazit okno na všech plochách." #: ../src/winspector.c:1397 msgid "Start miniaturized" msgstr "Odstartovat jako ikonu" #: ../src/winspector.c:1399 msgid "" "Make the window be automatically miniaturized when it's\n" "first shown." msgstr "Automaticky minimalizovat okno, když se ukáže poprvé." #: ../src/winspector.c:1403 msgid "Start maximized" msgstr "Odstartovat jako velké okno" #: ../src/winspector.c:1405 msgid "" "Make the window be automatically maximized when it's\n" "first shown." msgstr "Automaticky maximalizovat okno, když se ukáže poprvé." #: ../src/winspector.c:1409 msgid "Full screen maximization" msgstr "Maximalizace na plnou obrazovku" #: ../src/winspector.c:1411 msgid "" "Make the window use the whole screen space when it's\n" "maximized. The titlebar and resizebar will be moved\n" "to outside the screen." msgstr "" "Nechat okno používat celou obrazovku v maximalizovaném\n" "stavu. Titulkový pruh a zvětšovací růžek budou přesunuty\n" "mimo obrazovku." #: ../src/winspector.c:1428 msgid "Advanced" msgstr "Další volby" #: ../src/winspector.c:1445 msgid "Do not bind keyboard shortcuts" msgstr "Klávesnice jen pro aplikaci" #: ../src/winspector.c:1447 msgid "" "Do not bind keyboard shortcuts from Window Maker\n" "when this window is focused. This will allow the\n" "window to receive all key combinations regardless\n" "of your shortcut configuration." msgstr "" "Nepoužívat klávesové zkratky Window Makeru,\n" "je-li toto okno zaměřeno. Umožní vám to, aby toto \n" "okno přijalo všechny klávesové kombinace bez ohledu \n" "na vaše nastavení klávesových zkratek." #: ../src/winspector.c:1453 msgid "Do not bind mouse clicks" msgstr "Myš jen pro aplikaci" #: ../src/winspector.c:1455 msgid "" "Do not bind mouse actions, such as `Alt'+drag\n" "in the window (when Alt is the modifier you have\n" "configured)." msgstr "" "Pro okno nepoužívat akce myši jako např. \n" "'Alt'+táhni (s myší:), je-li Alt modifikátorem, \n" "který jste si nastavili." #: ../src/winspector.c:1460 msgid "Do not show in the window list" msgstr "Vynechat ze seznamu oken" #: ../src/winspector.c:1462 msgid "Do not list the window in the window list menu." msgstr "Nevypisovat okno do seznamu oken." #: ../src/winspector.c:1465 msgid "Do not let it take focus" msgstr "Nepovolit zaměření" #: ../src/winspector.c:1467 msgid "" "Do not let the window take keyboard focus when you\n" "click on it." msgstr "Nepovolit oknu získat zaměření, když na něho kliknete." #: ../src/winspector.c:1471 msgid "Keep inside screen" msgstr "Držet uvnitř obrazovky" #: ../src/winspector.c:1473 msgid "" "Do not allow the window to move itself completely\n" "outside the screen. For bug compatibility.\n" msgstr "" "Nepovolit oknu kompletní přesun mimo obrazovku.\n" "(kvůli chybové kompatibilitě)\n" #: ../src/winspector.c:1477 msgid "Ignore 'Hide Others'" msgstr "Ignorovat \"Skrýt ostatní\"" #: ../src/winspector.c:1479 msgid "" "Do not hide the window when issuing the\n" "`HideOthers' command." msgstr "Neskrývat okno při příkazu 'Skrýt ostatní'." #: ../src/winspector.c:1483 msgid "Ignore 'Save Session'" msgstr "Neukládat stav sezení" #: ../src/winspector.c:1485 msgid "" "Do not save the associated application in the\n" "session's state, so that it won't be restarted\n" "together with other applications when Window Maker\n" "starts." msgstr "" "Neukládat přidruženou aplikaci do stavu sezení,\n" "aby nebyla restartována s ostatními aplikacemi při\n" "startu Window Makeru." #: ../src/winspector.c:1491 msgid "Emulate application icon" msgstr "Emulovat aplikační ikonu" #: ../src/winspector.c:1493 msgid "" "Make this window act as an application that provides\n" "enough information to Window Maker for a dockable\n" "application icon to be created." msgstr "" "Donutit toto okno, aby se chovalo jako aplikace, která\n" "poskytuje dostatek informací pro Window Maker, aby mohla\n" "být vytvořena ukotvitelná aplikační ikona." #: ../src/winspector.c:1499 msgid "Disable language button" msgstr "Zakázat tlačítko jazyka" #: ../src/winspector.c:1501 msgid "Remove the `toggle language' button of the window." msgstr "Odstranit tlačítko přepnutí jazyka z tohoto okna." #: ../src/winspector.c:1518 msgid "Miniwindow Image" msgstr "Ikona miniokna" #: ../src/winspector.c:1545 msgid "Icon filename:" msgstr "Soubor ikony:" #: ../src/winspector.c:1558 msgid "Ignore client supplied icon" msgstr "Ignorovat klientovy ikony" #: ../src/winspector.c:1565 msgid "Initial Workspace" msgstr "Počáteční plocha" #: ../src/winspector.c:1567 msgid "The workspace to place the window when it's first shown." msgstr "Plocha, kam umístit okno při prvním ukázání." #: ../src/winspector.c:1573 msgid "Nowhere in particular" msgstr "Neurčena" #: ../src/winspector.c:1591 msgid "Application Attributes" msgstr "Atributy aplikace" #: ../src/winspector.c:1602 msgid "Start hidden" msgstr "Startovat skrytě" #: ../src/winspector.c:1604 msgid "Automatically hide application when it's started." msgstr "Automaticky skrýt aplikaci při startu." #: ../src/winspector.c:1607 msgid "No application icon" msgstr "Bez aplikační ikony" #: ../src/winspector.c:1609 msgid "" "Disable the application icon for the application.\n" "Note that you won't be able to dock it anymore,\n" "and any icons that are already docked will stop\n" "working correctly." msgstr "" "Zakázat aplikační ikonu pro tuto aplikaci.\n" "Uvědomte si ale, že ji nebudete moci více ukotvit\n" "do doku a všechny již ukotvené ikony přestanou\n" "správně pracovat." #: ../src/winspector.c:1615 msgid "Collapse application icons" msgstr "Zakázat více aplikačních ikon" #: ../src/winspector.c:1617 msgid "" "Collapse application icons from other instances\n" "of this application into one.\n" msgstr "" "Zruš aplikační ikony ostatních instancí aplikace\n" "a používej pouze aplikační ikonu tohoto okna.\n" #: ../src/workspace.c:107 ../src/workspace.c:108 ../src/workspace.c:876 #, c-format msgid "Workspace %i" msgstr "Plocha %i" #: ../src/workspace.c:926 msgid "Workspaces" msgstr "Pracovní plochy" #: ../src/workspace.c:928 msgid "could not create Workspace menu" msgstr "nelze vytvořit menu pracovních ploch" #: ../src/workspace.c:935 msgid "New" msgstr "Nová" #: ../src/workspace.c:936 msgid "Destroy Last" msgstr "Zrušit poslední" WindowMaker-0.95.9/po/hu.po0000644000175000017500000017367313431646201012401 00000000000000# Hungarian translation of Window Maker # Copyright (C) 1998-2000 Free Software Foundation, Inc. # Horvath Szabolcs # thanks to magyar@lists.linux.hu. # msgid "" msgstr "" "Project-Id-Version: Window Maker 0.95.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-02-14 01:34+0100\n" "PO-Revision-Date: 2014-02-18 00:23+0100\n" "Last-Translator: BALATON Zoltán \n" "Language-Team: Hungarian\n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../../wmaker-crm/src/appicon.c:542 ../../wmaker-crm/src/dialog.c:581 #: ../../wmaker-crm/src/dock.c:3367 ../../wmaker-crm/src/dockedapp.c:171 #: ../../wmaker-crm/src/main.c:276 ../../wmaker-crm/src/rootmenu.c:1672 #: ../../wmaker-crm/src/winspector.c:342 ../../wmaker-crm/src/winspector.c:358 msgid "Error" msgstr "Hiba" #: ../../wmaker-crm/src/appicon.c:543 msgid "Could not open specified icon file" msgstr "Nem találom a megadott ikon fájlt" #: ../../wmaker-crm/src/appicon.c:543 ../../wmaker-crm/src/dialog.c:423 #: ../../wmaker-crm/src/dialog.c:484 ../../wmaker-crm/src/dialog.c:581 #: ../../wmaker-crm/src/dialog.c:989 ../../wmaker-crm/src/dialog.c:1625 #: ../../wmaker-crm/src/dock.c:452 ../../wmaker-crm/src/dock.c:459 #: ../../wmaker-crm/src/dock.c:506 ../../wmaker-crm/src/dock.c:3367 #: ../../wmaker-crm/src/dock.c:4469 ../../wmaker-crm/src/dockedapp.c:172 #: ../../wmaker-crm/src/dockedapp.c:344 ../../wmaker-crm/src/main.c:276 #: ../../wmaker-crm/src/rootmenu.c:1675 ../../wmaker-crm/src/winspector.c:342 #: ../../wmaker-crm/src/winspector.c:358 ../../wmaker-crm/src/winspector.c:756 msgid "OK" msgstr "OK" #: ../../wmaker-crm/src/appicon.c:572 ../../wmaker-crm/src/dock.c:229 msgid "" " will be forcibly closed.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" " ki lesz lőve.\n" "Az alkalmazás nem mentett adatai elvesznek.\n" "Biztos ezt akarod?" #: ../../wmaker-crm/src/appicon.c:579 ../../wmaker-crm/src/dock.c:247 #: ../../wmaker-crm/src/winmenu.c:208 msgid "Kill Application" msgstr "Alkalmazás kilövése" #: ../../wmaker-crm/src/appicon.c:580 ../../wmaker-crm/src/dock.c:248 #: ../../wmaker-crm/src/winmenu.c:211 msgid "Yes" msgstr "Igen" #: ../../wmaker-crm/src/appicon.c:580 ../../wmaker-crm/src/dock.c:248 #: ../../wmaker-crm/src/winmenu.c:211 msgid "No" msgstr "Nem" #: ../../wmaker-crm/src/appicon.c:605 ../../wmaker-crm/src/dock.c:1279 #: ../../wmaker-crm/src/dock.c:3548 msgid "Unhide Here" msgstr "Előhoz ide" #: ../../wmaker-crm/src/appicon.c:606 ../../wmaker-crm/src/appicon.c:630 #: ../../wmaker-crm/src/dock.c:1281 ../../wmaker-crm/src/dock.c:1283 #: ../../wmaker-crm/src/dock.c:3560 ../../wmaker-crm/src/winmenu.c:543 msgid "Hide" msgstr "Elrejt" #: ../../wmaker-crm/src/appicon.c:607 ../../wmaker-crm/src/dock.c:1277 #: ../../wmaker-crm/src/winmenu.c:559 msgid "Launch" msgstr "Elindít" #: ../../wmaker-crm/src/appicon.c:608 msgid "Set Icon..." msgstr "Ikon..." #: ../../wmaker-crm/src/appicon.c:609 ../../wmaker-crm/src/dock.c:1287 #: ../../wmaker-crm/src/dock.c:1289 ../../wmaker-crm/src/dock.c:3578 #: ../../wmaker-crm/src/rootmenu.c:232 ../../wmaker-crm/src/winmenu.c:563 msgid "Kill" msgstr "Kilő" #: ../../wmaker-crm/src/appicon.c:628 ../../wmaker-crm/src/dock.c:3558 msgid "Unhide" msgstr "Előhoz" #: ../../wmaker-crm/src/defaults.c:806 #, c-format msgid "Domain %s (%s) of global defaults database is corrupted!" msgstr "A globális beállítás adatbázis %s (%s) domainja sérült!" #: ../../wmaker-crm/src/defaults.c:810 #, c-format msgid "could not load domain %s from global defaults database" msgstr "Nem tudtam betölteni a globális beállítás adatbázis %s domainját." #: ../../wmaker-crm/src/defaults.c:855 ../../wmaker-crm/src/defaults.c:869 #, c-format msgid "invalid global menu file %s" msgstr "Érvénytelen globális menü fájl: %s" #: ../../wmaker-crm/src/defaults.c:906 ../../wmaker-crm/src/defaults.c:985 #: ../../wmaker-crm/src/defaults.c:1024 ../../wmaker-crm/src/defaults.c:1065 #, c-format msgid "Domain %s (%s) of defaults database is corrupted!" msgstr "A beállítás adatbázis %s (%s) domainja sérült!" #: ../../wmaker-crm/src/defaults.c:910 ../../wmaker-crm/src/defaults.c:1007 #: ../../wmaker-crm/src/defaults.c:1051 ../../wmaker-crm/src/defaults.c:1075 #, c-format msgid "could not load domain %s from user defaults database" msgstr "Nem tudtam betölteni a felhasználói beállítás adatbázisból a %s domaint." #. --------------------------- Local ----------------------- #: ../../wmaker-crm/src/defaults.c:1243 ../../wmaker-crm/src/defaults.c:1372 #: ../../wmaker-crm/src/defaults.c:1467 ../../wmaker-crm/src/defaults.c:1875 #: ../../wmaker-crm/src/defaults.c:1891 ../../wmaker-crm/src/defaults.c:1936 #: ../../wmaker-crm/src/defaults.c:1985 ../../wmaker-crm/src/defaults.c:2399 #: ../../wmaker-crm/src/wdefaults.c:634 ../../wmaker-crm/src/wdefaults.c:663 #, c-format msgid "Wrong option format for key \"%s\". Should be %s." msgstr "Hibás formátum a következő kulcsnál: \"%s\". Valami ilyesminek kellene lennie: %s." #: ../../wmaker-crm/src/defaults.c:1245 ../../wmaker-crm/src/defaults.c:1321 #: ../../wmaker-crm/src/defaults.c:1349 ../../wmaker-crm/src/defaults.c:1376 #: ../../wmaker-crm/src/defaults.c:1388 ../../wmaker-crm/src/defaults.c:1402 #: ../../wmaker-crm/src/defaults.c:1416 ../../wmaker-crm/src/defaults.c:1471 #: ../../wmaker-crm/src/defaults.c:1483 ../../wmaker-crm/src/defaults.c:1879 #: ../../wmaker-crm/src/defaults.c:1896 ../../wmaker-crm/src/defaults.c:1908 #: ../../wmaker-crm/src/defaults.c:1941 ../../wmaker-crm/src/defaults.c:1957 #: ../../wmaker-crm/src/defaults.c:1990 ../../wmaker-crm/src/defaults.c:2069 #: ../../wmaker-crm/src/defaults.c:2404 ../../wmaker-crm/src/defaults.c:2415 #, c-format msgid "using default \"%s\" instead" msgstr "a \"%s\" alapbeállítást használom helyette" #: ../../wmaker-crm/src/defaults.c:1272 #, c-format msgid "wrong option value for key \"%s\"; got \"%s\", should be one of %s." msgstr "rossz érték a következő kulcshoz: \"%s\": \"%s\" Válassz ezek közül egyet: %s." #: ../../wmaker-crm/src/defaults.c:1317 #, c-format msgid "can't convert \"%s\" to boolean for key \"%s\"" msgstr "a következő adatot nem tudom logikai értékké alakítani: \"%s\". Ehhez a kulcshoz: \"%s\"" #: ../../wmaker-crm/src/defaults.c:1347 #, c-format msgid "can't convert \"%s\" to integer for key \"%s\"" msgstr "a következő adatot nem tudom egész típusúvá alakítani: \"%s\". Ehhez a kulcshoz: \"%s\"" #: ../../wmaker-crm/src/defaults.c:1384 #, c-format msgid "Incorrect number of elements in array for key \"%s\"." msgstr "A \"%s\" kulcshoz tartozó tömbben helytelen számú elem található." #: ../../wmaker-crm/src/defaults.c:1398 #, c-format msgid "Wrong value for key \"%s\". Should be Coordinate." msgstr "Rossz értéket adtál meg ehhez a kulcshoz: \"%s\". Koordinátának kellene lennie." #: ../../wmaker-crm/src/defaults.c:1412 #, c-format msgid "can't convert array to integers for \"%s\"." msgstr "nem tudom a tömböt egész számokká konvertálni ehhez a kulcshoz: \"%s\"." #: ../../wmaker-crm/src/defaults.c:1589 ../../wmaker-crm/src/defaults.c:1619 #: ../../wmaker-crm/src/defaults.c:1635 ../../wmaker-crm/src/defaults.c:1664 #: ../../wmaker-crm/src/defaults.c:1686 ../../wmaker-crm/src/defaults.c:1737 #: ../../wmaker-crm/src/defaults.c:1776 ../../wmaker-crm/src/defaults.c:1813 #: ../../wmaker-crm/src/defaults.c:1829 #, c-format msgid "\"%s\" is not a valid color name" msgstr "Ilyen szín nincs: \"%s\"!" #: ../../wmaker-crm/src/defaults.c:1601 ../../wmaker-crm/src/defaults.c:1652 msgid "bad number of arguments in gradient specification" msgstr "nem megfelelő számú paraméter a színátmenet-leírásban " #: ../../wmaker-crm/src/defaults.c:1710 msgid "too few arguments in multicolor gradient specification" msgstr "túl kevés paraméter a többszínű színátmenet-leírásban." #: ../../wmaker-crm/src/defaults.c:1802 msgid "bad number of arguments in textured gradient specification" msgstr "nem megfelelő számú paraméter a mintázott színátmenet-leírásban." #: ../../wmaker-crm/src/defaults.c:1845 #, c-format msgid "bad opacity value for tgradient texture \"%s\". Should be [0..255]" msgstr "Rossz érték a tgradient minta áttetszőségénél: \"%s\". 0..255 közötti értéknek kell lennie." #: ../../wmaker-crm/src/defaults.c:1862 #, c-format msgid "invalid texture type %s" msgstr "Érvénytelen minta típus: %s" #: ../../wmaker-crm/src/defaults.c:1904 #, c-format msgid "Error in texture specification for key \"%s\"" msgstr "A \"%s\" kulcsnál hiba van a minta leírásában." #: ../../wmaker-crm/src/defaults.c:1953 msgid "Wrong type for workspace background. Should be a texture type." msgstr "Rossz típust adtál meg a munkafelület hátterének. Minta típusnak kellene lennie." #: ../../wmaker-crm/src/defaults.c:2003 #, c-format msgid "Wrong type for background of workspace %i. Should be a texture." msgstr "Rossz típust adtál meg a %i. számú munkafelület hátterének. Mintának kellene lennie." #: ../../wmaker-crm/src/defaults.c:2042 msgid "could not load any usable font!!!" msgstr "Egyetlen használható betütípust sem tudok betölteni!!" #: ../../wmaker-crm/src/defaults.c:2065 #, c-format msgid "could not get color for key \"%s\"" msgstr "Nem találtam színt ehhez a kulcshoz: \"%s\"" #: ../../wmaker-crm/src/defaults.c:2121 ../../wmaker-crm/src/rootmenu.c:469 #, c-format msgid "%s: invalid key modifier \"%s\"" msgstr "%s: érvénytelen billentyű-módosító \"%s\"" #: ../../wmaker-crm/src/defaults.c:2133 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\"" msgstr "%s: érvénytelen gyorsbillentyű-leírás \"%s\"" #: ../../wmaker-crm/src/defaults.c:2139 #, c-format msgid "%s:invalid key in shortcut \"%s\"" msgstr "%s: érvénytelen billentyű a \"%s\" gyorsbillentyűben" #: ../../wmaker-crm/src/defaults.c:2164 #, c-format msgid "%s: modifier key %s is not valid" msgstr "%s: a %s módosító billentyű érvénytelen" #: ../../wmaker-crm/src/defaults.c:2271 #, c-format msgid "failed to open bitmap file \"%s\"" msgstr "Nem tudtam megnyitni a következő kép fájlt: %s" #: ../../wmaker-crm/src/defaults.c:2274 #, c-format msgid "\"%s\" is not a valid bitmap file" msgstr "Nem megfelelő kép fájl: \"%s\"!" #: ../../wmaker-crm/src/defaults.c:2277 #, c-format msgid "out of memory reading bitmap file \"%s\"" msgstr "elfogyott a memória a \"%s\" kép fájl beolvasásakor" #: ../../wmaker-crm/src/defaults.c:2315 ../../wmaker-crm/src/defaults.c:2348 msgid "bad number of arguments in cursor specification" msgstr "nem megfelelő számú paraméter a mutató leírásban" #: ../../wmaker-crm/src/defaults.c:2331 #, c-format msgid "unknown builtin cursor name \"%s\"" msgstr "ismeretlen beépített mutató név: %s" #: ../../wmaker-crm/src/defaults.c:2358 ../../wmaker-crm/src/defaults.c:2370 #, c-format msgid "could not find cursor bitmap file \"%s\"" msgstr "nem találom a kövekező mutató kép fájlt: \"%s\"" #: ../../wmaker-crm/src/defaults.c:2411 #, c-format msgid "Error in cursor specification for key \"%s\"" msgstr "Hibás mutató leírás a következő kulcsnál: \"%s\"" #: ../../wmaker-crm/src/defaults.c:2536 msgid "could not render texture for icon background" msgstr "nem tudom a mintát ikon háttérként használni" #: ../../wmaker-crm/src/defaults.c:3275 ../../wmaker-crm/src/defaults.c:3344 #, c-format msgid "Invalid arguments for option \"%s\"" msgstr "Nem megfelelő paraméterek a \"%s\" opcióhoz" #: ../../wmaker-crm/src/defaults.c:3281 ../../wmaker-crm/src/defaults.c:3350 #, c-format msgid "Could not find image \"%s\" for option \"%s\"" msgstr "Nem találtam a \"%s\" képet a \"%s\" opcióhoz" #: ../../wmaker-crm/src/defaults.c:3286 ../../wmaker-crm/src/defaults.c:3358 #, c-format msgid "Could not load image \"%s\" for option \"%s\"" msgstr "Nem tudtam betölteni a \"%s\" képet a \"%s\" opcióhoz" #: ../../wmaker-crm/src/defaults.c:3296 msgid "Invalid split sizes for switch panel back image." msgstr "Érvénytelen osztás méret a VáltóPanel háttér képéhez." #: ../../wmaker-crm/src/defaults.c:3365 #, c-format msgid "Invalid number of arguments for option \"%s\"" msgstr "Nem megfelelő számú paraméter ehhez az opcióhoz: \"%s\"" #: ../../wmaker-crm/src/defaults.c:3381 #, c-format msgid "Value for option \"%s\" must be an array of 7 strings" msgstr "\"%s\" opció értékenek egy 7 karakterláncból álló tömbnek kell lennie" #: ../../wmaker-crm/src/defaults.c:3395 #, c-format msgid "Invalid argument for option \"%s\" item %d" msgstr "Érvénytelen paraméter a \"%s\" opció %d. eleménél" #: ../../wmaker-crm/src/dialog.c:129 msgid "Save workspace state" msgstr "Munkafelület állapot mentés" #: ../../wmaker-crm/src/dialog.c:423 ../../wmaker-crm/src/dialog.c:484 #: ../../wmaker-crm/src/dialog.c:996 ../../wmaker-crm/src/dock.c:506 #: ../../wmaker-crm/src/dock.c:4469 ../../wmaker-crm/src/dockedapp.c:349 #: ../../wmaker-crm/src/rootmenu.c:189 ../../wmaker-crm/src/rootmenu.c:232 msgid "Cancel" msgstr "Mégsem" #: ../../wmaker-crm/src/dialog.c:576 msgid "Could not open directory \"%s\":\n%s" msgstr "Nem sikerült megnyitni ezt a könyvtárat \"%s\":\n%s" #: ../../wmaker-crm/src/dialog.c:626 msgid "Could not load image file " msgstr "Nem sikerült betölteni ezt a kép fájlt: " #: ../../wmaker-crm/src/dialog.c:923 msgid "Directories" msgstr "Könyvtárak" #: ../../wmaker-crm/src/dialog.c:932 msgid "Icons" msgstr "Ikonok" #: ../../wmaker-crm/src/dialog.c:965 msgid "Preview" msgstr "Előnézet" #: ../../wmaker-crm/src/dialog.c:978 msgid "File Name:" msgstr "Fájlnév:" #: ../../wmaker-crm/src/dialog.c:1002 msgid "Choose File" msgstr "Válassz fájlt" #: ../../wmaker-crm/src/dialog.c:1021 ../../wmaker-crm/src/dialog.c:1023 msgid "Icon Chooser" msgstr "Ikon választó" #: ../../wmaker-crm/src/dialog.c:1212 msgid "Window Manager for X" msgstr "X Ablakkezelő" #: ../../wmaker-crm/src/dialog.c:1214 #, c-format msgid "Version %s" msgstr "%s verzió" #: ../../wmaker-crm/src/dialog.c:1235 #, c-format msgid "Using visual 0x%x: %s %ibpp " msgstr "Használt visual 0x%x: %s %ibpp " #: ../../wmaker-crm/src/dialog.c:1242 msgid "(32 thousand colors)\n" msgstr "(32 ezer szín)\n" #: ../../wmaker-crm/src/dialog.c:1245 msgid "(64 thousand colors)\n" msgstr "(64 ezer szín)\n" #: ../../wmaker-crm/src/dialog.c:1249 msgid "(16 million colors)\n" msgstr "(16 millió szín)\n" #: ../../wmaker-crm/src/dialog.c:1252 #, c-format msgid "(%d colors)\n" msgstr "(%d szín)\n" #: ../../wmaker-crm/src/dialog.c:1262 #, c-format msgid "Total memory allocated: %i kB (in use: %i kB, %d free chunks).\n" msgstr "Lefoglalt memória: %i kB (használatban: %i kB, %d szabad darab)\n" #: ../../wmaker-crm/src/dialog.c:1264 #, c-format msgid "Total memory allocated: %i kB (in use: %i kB).\n" msgstr "Lefoglalt memória: %i kB (használatban: %i kB)\n" #: ../../wmaker-crm/src/dialog.c:1283 msgid "Image formats: " msgstr "Kép formátum: " #: ../../wmaker-crm/src/dialog.c:1292 msgid "" "\n" "Additional support for: " msgstr "\nTámogatott még: " #: ../../wmaker-crm/src/dialog.c:1298 msgid "(Supported)" msgstr "(Működik)" #: ../../wmaker-crm/src/dialog.c:1300 msgid "(Unsupported)" msgstr "(Nem működik)" #: ../../wmaker-crm/src/dialog.c:1308 msgid "\n" msgstr "\n" #: ../../wmaker-crm/src/dialog.c:1310 msgid "Solaris " msgstr "Solaris " #: ../../wmaker-crm/src/dialog.c:1312 msgid "Xinerama: " msgstr "Xinerama: " #: ../../wmaker-crm/src/dialog.c:1320 #, c-format msgid "%d head(s) found." msgstr "%d képernyőt találtam." #: ../../wmaker-crm/src/dialog.c:1342 msgid "Info" msgstr "Információk" #: ../../wmaker-crm/src/dialog.c:1417 msgid "" " Window Maker 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.\n" "\n" " Window Maker 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.\n" "\n" " You should have received a copy of the GNU General Public License along " "with this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin Street, Fifth Floor, Boston, MA02110-1301 USA." msgstr "" " A Window Maker szabad szoftver; terjesztheti és/vagy módosíthatja a Free " "Software Foundation által kiadott GNU General Public License második (vagy " "bármely későbbi) változatában foglaltak alapján.\n" "\n" " A Window Makert abban a reményben adjuk közre, hogy hasznos lesz, de nem " "vállalunk SEMMIFÉLE GARANCIÁT, még olyan értelemben sem, hogy a program " "alkalmas-e KÖZREADÁSRA vagy EGY BIZONYOS FELADAT ELVÉGZÉSÉRE. További " "részletekért tanulmányozza a GNU GPL licencet.\n" "\n" " E programmal együtt meg kellett kapnia a GNU General Public License egy " "példányát is. Ha nem kapta meg, írjon a Free Software Foundation, Inc. " "címére: 51 Franklin Street, Fifth Floor, Boston, MA02110-1301 USA." #: ../../wmaker-crm/src/dialog.c:1437 msgid "Legal" msgstr "Jogi információk" #: ../../wmaker-crm/src/dialog.c:1555 ../../wmaker-crm/src/monitor.c:56 msgid "cannot open connection for crashing dialog panel. Aborting." msgstr "Nem sikerült kapcsolatot nyitni az összeomláskori dialógus panelhez. Kilépek." #: ../../wmaker-crm/src/dialog.c:1581 msgid "Fatal error" msgstr "Végzetes hiba" #: ../../wmaker-crm/src/dialog.c:1591 #, c-format msgid "Window Maker received signal %i." msgstr "A Window Maker %i jelzést kapott." #: ../../wmaker-crm/src/dialog.c:1599 msgid "" " This fatal error occured probably due to a bug. Please fill the included " "BUGFORM and report it to %s." msgstr " Ezt a végzetes hibát valószínűleg egy programozási hiba okozta. Légy szíves töltsd ki a mellékelt BUGFORM kérdőívet és küldd el a %s e-mail címre!" #: ../../wmaker-crm/src/dialog.c:1606 msgid "What do you want to do now?" msgstr "Mit szeretnél tenni?" #: ../../wmaker-crm/src/dialog.c:1612 msgid "Select action" msgstr "Válassz ezek közül" #: ../../wmaker-crm/src/dialog.c:1613 msgid "Abort and leave a core file" msgstr "Megszakít és core fájlt készít" #: ../../wmaker-crm/src/dialog.c:1614 msgid "Restart Window Maker" msgstr "Újraindítja a Window Makert" #: ../../wmaker-crm/src/dialog.c:1615 msgid "Start alternate window manager" msgstr "Másik ablakkezelőt indít" #: ../../wmaker-crm/src/dock.c:181 ../../wmaker-crm/src/menu.c:1768 #, c-format msgid "Type the name for workspace %i:" msgstr "Írj be egy nevet a %i. munkafelülethez:" #: ../../wmaker-crm/src/dock.c:182 ../../wmaker-crm/src/dock.c:1243 #: ../../wmaker-crm/src/dock.c:1245 ../../wmaker-crm/src/dock.c:3460 #: ../../wmaker-crm/src/menu.c:1772 msgid "Rename Workspace" msgstr "Munkafelület átnevezése" #: ../../wmaker-crm/src/dock.c:447 ../../wmaker-crm/src/dock.c:454 #: ../../wmaker-crm/src/winspector.c:756 msgid "Warning" msgstr "Figyelmeztetés" #: ../../wmaker-crm/src/dock.c:448 msgid "" "Some icons cannot be made omnipresent. Please make sure that no other icon " "is docked in the same positions on the other workspaces and the Clip is not " "full in some workspace." msgstr "Néhány ikont nem lehet mindig láthatóvá tenni. Győzödj meg róla, hogy nincs-e másik munkafelületen másik ikon ugyanazon pozíciókban dokkolva vagy nincs-e megtelve a Kapocs valahol." #: ../../wmaker-crm/src/dock.c:455 msgid "" "Icon cannot be made omnipresent. Please make sure that no other icon is " "docked in the same position on the other workspaces and the Clip is not full " "in some workspace." msgstr "Ezt az ikont nem lehet mindig láthatóvá tenni. Győzödj meg róla, hogy nincs-e másik munkafelületen másik ikon ugyanebben a pozícióban dokkolva vagy nincs-e megtelve a Kapocs valahol." #: ../../wmaker-crm/src/dock.c:504 msgid "Workspace Clip" msgstr "Munkafelület kapocs" #: ../../wmaker-crm/src/dock.c:504 ../../wmaker-crm/src/dock.c:4467 msgid "Drawer" msgstr "Fiók" #: ../../wmaker-crm/src/dock.c:505 msgid "All selected icons will be removed!" msgstr "A kijelölt ikonok eltávolításra kerülnek!" #. can be: Unselect all icons #: ../../wmaker-crm/src/dock.c:547 ../../wmaker-crm/src/dock.c:1257 #: ../../wmaker-crm/src/dock.c:1259 ../../wmaker-crm/src/dock.c:3498 msgid "Keep Icon" msgstr "Ikon megtartása" #: ../../wmaker-crm/src/dock.c:548 ../../wmaker-crm/src/dock.c:2151 #: ../../wmaker-crm/src/dock.c:2293 msgid "Type the command used to launch the application" msgstr "Írd be a parancsot, amivel az alkalmazás indul" #: ../../wmaker-crm/src/dock.c:938 #, c-format msgid "could not launch application %s" msgstr "Nem tudtam elindítani ezt az alkalmazást: %s" #: ../../wmaker-crm/src/dock.c:987 msgid "could not create workspace submenu for Clip menu" msgstr "nem sikerült munkafelület almenüt létrehozni a Kapocs menühöz" #: ../../wmaker-crm/src/dock.c:1044 msgid "could not create options submenu for Clip menu" msgstr "nem sikerült opciók almenüt létrehozni a Kapocs menühöz" #: ../../wmaker-crm/src/dock.c:1048 ../../wmaker-crm/src/dock.c:1195 msgid "Keep on Top" msgstr "Mindig felül" #: ../../wmaker-crm/src/dock.c:1053 msgid "Collapsed" msgstr "Ikonok rejtve" #: ../../wmaker-crm/src/dock.c:1058 msgid "Autocollapse" msgstr "Automatikus ikon elrejtés" #: ../../wmaker-crm/src/dock.c:1063 msgid "Autoraise" msgstr "Automatikus előre ugrás" #: ../../wmaker-crm/src/dock.c:1068 msgid "Autoattract Icons" msgstr "Automatikus ikon vonzás" #: ../../wmaker-crm/src/dock.c:1183 msgid "could not create options submenu for dock position menu" msgstr "nem sikerült opciók almenüt létrehozni a Dokk pozícióhoz" #: ../../wmaker-crm/src/dock.c:1187 msgid "Normal" msgstr "Normál" #: ../../wmaker-crm/src/dock.c:1191 msgid "Auto raise & lower" msgstr "Automatikus előre/hátra rakás" #: ../../wmaker-crm/src/dock.c:1219 msgid "Dock position" msgstr "Dokkolt ikon" #: ../../wmaker-crm/src/dock.c:1225 msgid "Add a drawer" msgstr "Új fiók" #: ../../wmaker-crm/src/dock.c:1229 msgid "Clip Options" msgstr "Kapocs beállítások" #. if (type == WM_DRAWER) #: ../../wmaker-crm/src/dock.c:1231 msgid "Drawer options" msgstr "Fiók beállítások" #: ../../wmaker-crm/src/dock.c:1248 msgid "Selected" msgstr "Kijelölve" #: ../../wmaker-crm/src/dock.c:1253 ../../wmaker-crm/src/dock.c:1255 #: ../../wmaker-crm/src/dock.c:3488 msgid "Select All Icons" msgstr "Összes ikon kijelölése" #: ../../wmaker-crm/src/dock.c:1262 ../../wmaker-crm/src/dock.c:1264 #: ../../wmaker-crm/src/dock.c:3508 msgid "Move Icon To" msgstr "Ikon átrakása" #: ../../wmaker-crm/src/dock.c:1270 ../../wmaker-crm/src/dock.c:1272 #: ../../wmaker-crm/src/dock.c:3522 msgid "Remove Icon" msgstr "Ikon törlése" #. can be: Remove Icons #: ../../wmaker-crm/src/dock.c:1274 msgid "Attract Icons" msgstr "Vonzza az ikonokat" #. can be: Unhide #: ../../wmaker-crm/src/dock.c:1285 msgid "Settings..." msgstr "Beállítások..." #: ../../wmaker-crm/src/dock.c:1631 ../../wmaker-crm/src/dock.c:1722 #, c-format msgid "bad value in docked icon state info %s" msgstr "rossz érték a dokkolt ikon állapot-információjánál: %s" #: ../../wmaker-crm/src/dock.c:1745 #, c-format msgid "bad value in dock state info:%s" msgstr "rossz érték a dokk állapot-információjánál: %s" #: ../../wmaker-crm/src/dock.c:1944 msgid "there are too many icons stored in dock. Ignoring what doesn't fit" msgstr "túl sok ikon van a dokkolva. Figyelmen kívűl hagyom, ami nem fér el" #. icon->forced_dock = 1; #: ../../wmaker-crm/src/dock.c:2150 ../../wmaker-crm/src/dock.c:2292 msgid "Dock Icon" msgstr "Ikon dokkolása" #: ../../wmaker-crm/src/dock.c:3365 #, c-format msgid "Could not execute command \"%s\"" msgstr "Nem tudom végrehajtani ezt a parancsot: \"%s\"" #: ../../wmaker-crm/src/dock.c:3466 msgid "Toggle Omnipresent" msgstr "Mindenhol látható mód ki/be" #: ../../wmaker-crm/src/dock.c:3471 ../../wmaker-crm/src/winmenu.c:499 #: ../../wmaker-crm/src/winspector.c:1356 msgid "Omnipresent" msgstr "Mindenhol látható" #: ../../wmaker-crm/src/dock.c:3486 msgid "Unselect All Icons" msgstr "Ikon kijelölések megszüntetése" #: ../../wmaker-crm/src/dock.c:3496 msgid "Keep Icons" msgstr "Ikonok megtartása" #: ../../wmaker-crm/src/dock.c:3506 msgid "Move Icons To" msgstr "Ikonok átrakása" #: ../../wmaker-crm/src/dock.c:3520 msgid "Remove Icons" msgstr "Ikonok törlése" #: ../../wmaker-crm/src/dock.c:3550 msgid "Bring Here" msgstr "Áthoz ide" #: ../../wmaker-crm/src/dock.c:3574 msgid "Remove drawer" msgstr "Fiók törlése" #: ../../wmaker-crm/src/dock.c:4468 msgid "All icons in this drawer will be detached!" msgstr "Az összes ikon ami eddig a fiókban volt szabadon álló lesz!" #: ../../wmaker-crm/src/dock.c:4853 msgid "there are too many icons stored in drawer. Ignoring what doesn't fit" msgstr "túl sok ikon van a fiókban. Figyelmen kívűl hagyom, ami nem fér el" #: ../../wmaker-crm/src/dockedapp.c:94 #, c-format msgid "could not find icon %s, used in a docked application" msgstr "nem találom a következő ikont: \"%s\" (egy dokkolt alkalmazás használná)" #: ../../wmaker-crm/src/dockedapp.c:170 #, c-format msgid "Could not open specified icon file: %s" msgstr "A következő ikon-fájlt nem tudom megnyitni: %s" #: ../../wmaker-crm/src/dockedapp.c:172 msgid "Ignore" msgstr "Na és?" #: ../../wmaker-crm/src/dockedapp.c:266 msgid "Start when Window Maker is started" msgstr "Window Makerrel együtt indul" #: ../../wmaker-crm/src/dockedapp.c:271 msgid "Lock (prevent accidental removal)" msgstr "Rögzített (véletlen törlés ellen)" #: ../../wmaker-crm/src/dockedapp.c:275 msgid "Application path and arguments" msgstr "Alkalmazás elérési útvonala és paraméterei" #: ../../wmaker-crm/src/dockedapp.c:286 msgid "Command for middle-click launch" msgstr "Parancs középső gombos índításhoz" #: ../../wmaker-crm/src/dockedapp.c:298 #, c-format msgid "%s will be replaced with current selection" msgstr "%s helyére az aktuális kijelölés kerül majd" #: ../../wmaker-crm/src/dockedapp.c:302 msgid "Command for files dropped with DND" msgstr "Parancs DND módszerrel rádobott fájlokhoz" #: ../../wmaker-crm/src/dockedapp.c:314 #, c-format msgid "%d will be replaced with the file name" msgstr "%d helyére a rádobott fájl neve kerül" #: ../../wmaker-crm/src/dockedapp.c:317 msgid "DND support was not compiled in" msgstr "DND-támogatás fordításkor letiltva" #: ../../wmaker-crm/src/dockedapp.c:322 msgid "Icon Image" msgstr "Ikon" #: ../../wmaker-crm/src/dockedapp.c:333 ../../wmaker-crm/src/winspector.c:1505 msgid "Browse..." msgstr "Választ..." #: ../../wmaker-crm/src/dockedapp.c:391 msgid "Docked Application Settings" msgstr "Dokkolt alkalmazás beállításai" #: ../../wmaker-crm/src/event.c:321 msgid "" "the defaults database has been deleted! Restart Window Maker to create the " "database with the default settings" msgstr "A beállítás adatbázist törölték! Idítsd újra a Window Makert az adatbázis létrehozásához alap beállításokkal!" #: ../../wmaker-crm/src/event.c:330 msgid "" "the unit containing the defaults database has been unmounted. Setting --" "static mode. Any changes will not be saved." msgstr "a beállítás adatbázist tartalmazó egységet lecsatolták. \"--static\" módra váltok. A változtatások nem kerülnek mentésre." #: ../../wmaker-crm/src/event.c:341 msgid "Inotify: Reading config files in defaults database." msgstr "Inotify: újraolvasom a konfigurációs fájlokat a beállítás adatbázisból." #. an error has occured #: ../../wmaker-crm/src/event.c:391 msgid "" "select failed. The inotify instance will be closed. Changes to the defaults " "database will require a restart to take effect." msgstr "A select hívás hibát adott. Inotify letiltva. A beállítás adatbázisbeli változások csak újraindítás után fognak érvényesülni." #: ../../wmaker-crm/src/event.c:944 msgid "Got Reconfigure command" msgstr "Reconfigure parancs" #: ../../wmaker-crm/src/event.c:947 #, c-format msgid "Got unknown command %s" msgstr "Ismeretlen parancs %s" #: ../../wmaker-crm/src/framewin.c:649 ../../wmaker-crm/src/framewin.c:739 #: ../../wmaker-crm/src/menu.c:408 ../../wmaker-crm/src/texture.c:454 #, c-format msgid "could not render texture: %s" msgstr "a következő minta nem képezhető le: %s" #: ../../wmaker-crm/src/framewin.c:672 ../../wmaker-crm/src/framewin.c:682 #: ../../wmaker-crm/src/framewin.c:698 ../../wmaker-crm/src/framewin.c:709 #: ../../wmaker-crm/src/framewin.c:716 ../../wmaker-crm/src/framewin.c:722 #: ../../wmaker-crm/src/icon.c:308 ../../wmaker-crm/src/menu.c:435 #, c-format msgid "error rendering image:%s" msgstr "hiba a %s kép leképezésekor" #: ../../wmaker-crm/src/framewin.c:767 #, c-format msgid "error rendering image: %s" msgstr "hiba a %s kép leképezésekor" #: ../../wmaker-crm/src/main.c:228 msgid "failed to restart Window Maker." msgstr "hiba a Window Maker újraindítása közben" #: ../../wmaker-crm/src/main.c:231 #, c-format msgid "could not exec %s" msgstr "nem tudom végrehajtani: %s" #: ../../wmaker-crm/src/main.c:274 msgid "Could not execute command: " msgstr "Nem tudom végrehajtani a következő parancsot: " #: ../../wmaker-crm/src/main.c:409 #, c-format msgid "%s aborted.\n" msgstr "%s megszakítva \n" #: ../../wmaker-crm/src/main.c:418 #, c-format msgid "Usage: %s [options]\n" msgstr "Használat: %s [opciók]\n" #: ../../wmaker-crm/src/main.c:419 msgid "The Window Maker window manager for the X window system" msgstr "Window Maker ablakkezelő az X window systemhez" #: ../../wmaker-crm/src/main.c:421 msgid " -display host:dpy\tdisplay to use" msgstr "-display host:dpy\thasználandó display" #: ../../wmaker-crm/src/main.c:422 msgid " --no-dock\t\tdo not open the application Dock" msgstr "--no-dock\t\tne nyissa meg az alkalmazás dokkot" #: ../../wmaker-crm/src/main.c:423 msgid " --no-clip\t\tdo not open the workspace Clip" msgstr "--no-clip\t\tne nyissa meg a munkafelület Kapcsot" #: ../../wmaker-crm/src/main.c:424 msgid " --no-autolaunch\tdo not autolaunch applications" msgstr " --no-autolaunch\tautomatikusan indítandó alkalmazásokat ne indítsa" #: ../../wmaker-crm/src/main.c:425 msgid " --dont-restore\t\tdo not restore saved session" msgstr " --dont-restore\tne állítsa vissza az elmentett munkafelület állapotot" #: ../../wmaker-crm/src/main.c:427 msgid " --locale locale\tlocale to use" msgstr " --locale locale\thasználandó helyi beállítások" #: ../../wmaker-crm/src/main.c:429 msgid " --visual-id visualid\tvisual id of visual to use" msgstr "--visual-id visualid\thasználandó visual azonosító" #: ../../wmaker-crm/src/main.c:430 msgid " --static\t\tdo not update or save configurations" msgstr "--static\t\tnem menti és nem is frissíti a beállításokat" #: ../../wmaker-crm/src/main.c:432 msgid " --no-polling\t\tdo not periodically check for configuration updates" msgstr "--no-polling\t\tne ellenőrizze időnként a beállítások változását" #: ../../wmaker-crm/src/main.c:434 msgid " --version\t\tprint version and exit" msgstr "--version\t\tkiírja a verziószámot és kilép" #: ../../wmaker-crm/src/main.c:435 msgid " --help\t\t\tshow this message" msgstr "--help\t\t\tkiírja ezt a szöveget" #: ../../wmaker-crm/src/main.c:445 #, c-format msgid "could not find user GNUstep directory (%s)." msgstr "nem találom a felhasználó GNUstep könyvtárát (%s)." #: ../../wmaker-crm/src/main.c:448 msgid "" "There was an error while creating GNUstep directory, please make sure you " "have installed Window Maker correctly and run wmaker.inst" msgstr "Hiba a GNUstep könyvtár létrehozásakor. Győzödj meg róla, hogy a Window Maker rendesen telepítve van és futtasd le a wmaker.inst scriptet!" #: ../../wmaker-crm/src/main.c:451 #, c-format msgid "%s directory created with default configuration." msgstr "%s könyvtár létrehozva alapbeállításokkal." #: ../../wmaker-crm/src/main.c:470 msgid "" "could not initialise an inotify instance. Changes to the defaults database " "will require a restart to take effect. Check your kernel!" msgstr "Nem sikerült inotify példányt létrehozni. A beállítások változásai csak újraindítás után fognak érvényesülni. Ellenőrizd a kerneledet!" #: ../../wmaker-crm/src/main.c:481 #, c-format msgid "" "could not add an inotify watch on path %s. Changes to the defaults database " "will require a restart to take effect." msgstr "Nem sikerült inotify figyelőt adni ehhez az útvonalhoz: %s. A beállítások változásai csak újraindítás után fognak érvényesülni." #: ../../wmaker-crm/src/main.c:504 #, c-format msgid "%s:could not execute initialization script" msgstr "%s: nem tudtam futtatni a kezdeti beállításokat tartalmazó scriptet" #: ../../wmaker-crm/src/main.c:522 #, c-format msgid "%s:could not execute exit script" msgstr "%s: nem tudtam futtatni a kilépési scriptet" #: ../../wmaker-crm/src/main.c:568 ../../wmaker-crm/src/main.c:645 #: ../../wmaker-crm/src/main.c:652 ../../wmaker-crm/src/main.c:659 #, c-format msgid "too few arguments for %s" msgstr "Túl kevés paraméter a következőhöz: %s" #: ../../wmaker-crm/src/main.c:617 #, c-format msgid "option \"%s\" is deprecated, please remove it from your script" msgstr "%s opció használata már nem javasolt, légy szíves töröld a scriptedből!" #: ../../wmaker-crm/src/main.c:663 #, c-format msgid "bad value for visualid: \"%s\"" msgstr "hibás érték a visualid-nél: \"%s\"" #: ../../wmaker-crm/src/main.c:676 #, c-format msgid "%s: invalid argument '%s'\n" msgstr "%s: érvénytelen paraméter '%s'\n" #: ../../wmaker-crm/src/main.c:677 #, c-format msgid "Try '%s --help' for more information\n" msgstr "Próbáld a '%s --help parancsot a további információkhoz\n" #: ../../wmaker-crm/src/main.c:720 msgid "X server does not support locale" msgstr "Az X-server nem támogatja a fordítások használatát" #: ../../wmaker-crm/src/main.c:724 msgid "cannot set locale modifiers" msgstr "a lokális módosításokat nem tudom beállítani" #: ../../wmaker-crm/src/main.c:740 #, c-format msgid "could not open display \"%s\"" msgstr "nem tudom megnyitni a \"%s\" megjelenítőt" #: ../../wmaker-crm/src/menu.c:2351 #, c-format msgid "bad value in menus state info: %s" msgstr "rossz érték a menü állapot-információjánál: %s" #: ../../wmaker-crm/src/misc.c:475 ../../wmaker-crm/src/misc.c:480 msgid "Program Arguments" msgstr "Program paraméterek" #: ../../wmaker-crm/src/misc.c:476 ../../wmaker-crm/src/misc.c:481 msgid "Enter command arguments:" msgstr "Kérem a parancs paramétereit:" #: ../../wmaker-crm/src/misc.c:525 #, c-format msgid "out of memory during expansion of \"%s\"" msgstr "elfogyott a memória a következő vizsgálatánál: \"%s\"" #: ../../wmaker-crm/src/misc.c:578 #, c-format msgid "out of memory during expansion of \"%%w\"" msgstr "elfogyott a memória a következő vizsgálatánál: \"%%w\"" #: ../../wmaker-crm/src/misc.c:595 #, c-format msgid "out of memory during expansion of \"%%W\"" msgstr "elfogyott a memória a következő vizsgálatánál: \"%%W\"" #: ../../wmaker-crm/src/misc.c:612 #, c-format msgid "out of memory during expansion of \"%%a\"" msgstr "elfogyott a memória a következő vizsgálatánál: \"%%a\"" #: ../../wmaker-crm/src/misc.c:641 #, c-format msgid "out of memory during expansion of \"%%d\"" msgstr "elfogyott a memória a következő vizsgálatánál: \"%%d\"" #: ../../wmaker-crm/src/misc.c:655 msgid "selection not available" msgstr "kijelölés nem elérhető" #: ../../wmaker-crm/src/misc.c:662 #, c-format msgid "out of memory during expansion of \"%%s\"" msgstr "elfogyott a memória a következő vizsgálatánál: \"%%s\"" #: ../../wmaker-crm/src/misc.c:697 ../../wmaker-crm/src/misc.c:703 #, c-format msgid "bad window name value in %s state info" msgstr "hibás az \"ablak neve\" érték az %s információjában" #: ../../wmaker-crm/src/misc.c:950 msgid "could not send message to background image helper" msgstr "nem tudok üzenetet küldeni a háttérkép segítőnek" #: ../../wmaker-crm/src/monitor.c:63 msgid "trying to start alternate window manager..." msgstr "megpróbálok egy másik ablakkezelőt elindítani" #: ../../wmaker-crm/src/monitor.c:69 msgid "failed to start alternate window manager. Aborting." msgstr "hiba a másik ablakkezelő indításakor. Kilépek." #: ../../wmaker-crm/src/monitor.c:98 ../../wmaker-crm/src/monitor.c:101 msgid "Error respawning Window Maker" msgstr "A Window Maker újraindítása nem sikerült" #: ../../wmaker-crm/src/monitor.c:107 msgid "Error during monitoring of Window Maker process." msgstr "Hiba lépett fel a Window Maker monitorozása közben." #: ../../wmaker-crm/src/monitor.c:131 #, c-format msgid "Window Maker exited due to a crash (signal %i) and will be restarted." msgstr "A Window Maker egy hiba miatt kilépett (%i jelzés). Megpróbálom újraindítani." #: ../../wmaker-crm/src/resources.c:41 #, c-format msgid "could not parse color \"%s\"" msgstr "A \"%s\" színt nem tudom értelmezni" #: ../../wmaker-crm/src/resources.c:45 #, c-format msgid "could not allocate color \"%s\"" msgstr "A \"%s\" színt nem tudom lefoglalni" #: ../../wmaker-crm/src/rootmenu.c:188 ../../wmaker-crm/src/rootmenu.c:189 msgid "Exit" msgstr "Kilépés" #: ../../wmaker-crm/src/rootmenu.c:189 msgid "Exit window manager?" msgstr "Biztos ki akarsz lépni az ablakkezelőből?" #: ../../wmaker-crm/src/rootmenu.c:230 msgid "Kill X session" msgstr "X kilövése" #: ../../wmaker-crm/src/rootmenu.c:231 msgid "" "Kill Window System session?\n" "(all applications will be closed)" msgstr "" "Tényleg lelövöd a X Window-t?\n" "(minden alkalmazás be lesz zárva)" #: ../../wmaker-crm/src/rootmenu.c:482 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\" for entry %s" msgstr "%s: érvénytelen gyorsbillentyű-leírás \"%s\" a következő bejegyzéshez: %s" #: ../../wmaker-crm/src/rootmenu.c:490 #, c-format msgid "%s:invalid key in shortcut \"%s\" for entry %s" msgstr "%s: érvénytelen billentyű a \"%s\" gyorsbillentyűben a következő bejegyzéshez: %s" #: ../../wmaker-crm/src/rootmenu.c:524 #, c-format msgid "%s: unmatched '\"' in menu file" msgstr "%s: lezáratlan '\"' a menü fájlban" #: ../../wmaker-crm/src/rootmenu.c:573 #, c-format msgid "%s: missing command" msgstr "%s: hiányzó parancs" #: ../../wmaker-crm/src/rootmenu.c:628 #, c-format msgid "invalid OPEN_MENU specification: %s" msgstr "hibás OPEN_MENU leírás: %s" #: ../../wmaker-crm/src/rootmenu.c:685 #, c-format msgid "%s:could not stat menu" msgstr "%s: nem tudom elérni a menüt" #: ../../wmaker-crm/src/rootmenu.c:693 #, c-format msgid "%s:could not stat menu:%s" msgstr "%s: nem tudom elérni a menüt:%s" #: ../../wmaker-crm/src/rootmenu.c:709 #, c-format msgid "too many parameters in OPEN_MENU: %s" msgstr "túl sok paraméter az OPEN_MENU-ben: %s" #: ../../wmaker-crm/src/rootmenu.c:747 #, c-format msgid "invalid OPEN_PLMENU specification: %s" msgstr "hibás OPEN_PLMENU leírás: %s" #: ../../wmaker-crm/src/rootmenu.c:798 msgid "" "There are more than one WORKSPACE_MENU commands in the applications menu. " "Only one is allowed." msgstr "Egynél több WORKSPACE_MENU-parancs van az alkalmazások menüben. Csak egy lehet." #: ../../wmaker-crm/src/rootmenu.c:829 msgid "" "There are more than one WINDOWS_MENU commands in the applications menu. Only " "one is allowed." msgstr "Egynél több WOINDOWS_MENU-parancs van az alkalmazások menüben. Csak egy lehet." #: ../../wmaker-crm/src/rootmenu.c:834 msgid "Window List" msgstr "Ablakok listája" #: ../../wmaker-crm/src/rootmenu.c:861 ../../wmaker-crm/src/rootmenu.c:878 #: ../../wmaker-crm/src/rootmenu.c:895 ../../wmaker-crm/src/rootmenu.c:903 #, c-format msgid "%s:missing parameter for menu command \"%s\"" msgstr "%s: hiányzó paraméter a menü parancshoz \"%s\"" #: ../../wmaker-crm/src/rootmenu.c:967 #, c-format msgid "%s:unknown command \"%s\" in menu config." msgstr "%s: ismeretlen parancs \"%s\" a menü beállításaiban." #: ../../wmaker-crm/src/rootmenu.c:974 #, c-format msgid "%s:can't add shortcut for entry \"%s\"" msgstr "%s: nem tudom a gyorsbillentyűt a \"%s\" bejegyzéshez hozzáadni" #: ../../wmaker-crm/src/rootmenu.c:1006 ../../wmaker-crm/src/rootmenu.c:1058 #: ../../wmaker-crm/src/rootmenu.c:1147 msgid "missing command in menu config" msgstr "hiányzó parancs a menü beállításaiban" #: ../../wmaker-crm/src/rootmenu.c:1034 msgid "syntax error in menu file: END declaration missing" msgstr "szintaktikai hiba a menü fájlban: hiányzó END kulcsszó" #: ../../wmaker-crm/src/rootmenu.c:1049 ../../wmaker-crm/src/rootmenu.c:1138 #, c-format msgid "could not open menu file \"%s\": %s" msgstr "nem tudom megnyitni a menü fájlt \"%s\": %s" #: ../../wmaker-crm/src/rootmenu.c:1072 msgid "invalid menu file, MENU command is missing" msgstr "érvénytelen menü fájl. MENU parancs hiányzik" #: ../../wmaker-crm/src/rootmenu.c:1161 msgid "no title given for the root menu" msgstr "nincs megnevezve a gyökér (root) menü" #: ../../wmaker-crm/src/rootmenu.c:1274 ../../wmaker-crm/src/rootmenu.c:1346 #: ../../wmaker-crm/src/rootmenu.c:1385 #, c-format msgid "out of memory while constructing directory menu %s" msgstr "elfogyott a memória a %s könyvtár menü létrehozásakor" #: ../../wmaker-crm/src/rootmenu.c:1283 #, c-format msgid "%s:could not stat file \"%s\" in menu directory" msgstr "%s: a menü könyvtárában a következő fájlt nem sikerül elérnem: \"%s\"" #: ../../wmaker-crm/src/rootmenu.c:1435 msgid "Commands" msgstr "Parancsok" #: ../../wmaker-crm/src/rootmenu.c:1438 msgid "Restart" msgstr "Újraindítás" #: ../../wmaker-crm/src/rootmenu.c:1439 msgid "Exit..." msgstr "Kilépés..." #: ../../wmaker-crm/src/rootmenu.c:1478 #, c-format msgid "could not find menu file \"%s\" referenced in WMRootMenu" msgstr "nem találom a menü fájlt \"%s\". A WMRootMenu hivatkozik rá." #: ../../wmaker-crm/src/rootmenu.c:1484 #, c-format msgid "could not access menu \"%s\" referenced in WMRootMenu" msgstr "a menü elérhetetlen: \"%s\". A WMRootMenu hivatkozik rá." #: ../../wmaker-crm/src/rootmenu.c:1496 #, c-format msgid "" "using default menu file \"%s\" as the menu referenced in WMRootMenu could " "not be found " msgstr "a \"%s\" alap menü fájlt használom, mert a WMRootMenu-ben hivatkozott fájl nem található." #: ../../wmaker-crm/src/rootmenu.c:1519 ../../wmaker-crm/src/rootmenu.c:1596 #, c-format msgid "%s:format error in root menu configuration \"%s\"" msgstr "%s: formai hiba a root menü konfigurációjában \"%s\"" #: ../../wmaker-crm/src/rootmenu.c:1673 msgid "" "The applications menu could not be loaded. Look at the console output for a " "detailed description of the errors." msgstr "Nem sikerült betölteni az Alkalmazások menüt. A hibák részletes leírását lásd a konzol kimeneten." #: ../../wmaker-crm/src/screen.c:404 #, c-format msgid "could not load logo image for panels: %s" msgstr "nem tudom betölteni a logo-t a panelhez: %s" #: ../../wmaker-crm/src/screen.c:595 msgid "could not initialize WINGs widget set" msgstr "nem sikerült inicializálni a WINGs widget set-et" #: ../../wmaker-crm/src/screen.c:902 #, c-format msgid "could not save session state in %s" msgstr "Nem sikerült elmentenem a munkamenet állapotát ide: %s" #: ../../wmaker-crm/src/session.c:147 ../../wmaker-crm/src/wdefaults.c:650 #: ../../wmaker-crm/src/winspector.c:394 #, c-format msgid "can't convert \"%s\" to boolean" msgstr "a \"%s\"-t nem tudom logikai értékké alakítani" #: ../../wmaker-crm/src/stacking.c:70 msgid "could not get window list!!" msgstr "nem tudom lekérdezni az ablakok listáját!!" #: ../../wmaker-crm/src/startup.c:118 #, c-format msgid "internal X error: %s" msgstr "belső X-hiba: %s" #: ../../wmaker-crm/src/startup.c:564 ../../wmaker-crm/src/startup.c:580 #: ../../wmaker-crm/src/startup.c:586 #, c-format msgid "could not read domain \"%s\" from defaults database" msgstr "A beállítás adatbázisból a \"%s\" domain nem olvasható." #: ../../wmaker-crm/src/startup.c:572 #, c-format msgid "icon size is configured to %i, but it's too small. Using 16 instead" msgstr "Az ikon méret beállítás jelenleg %i, de ez túl kicsi. 16-ot használok helyette." #: ../../wmaker-crm/src/startup.c:602 msgid "XKB is not supported. KbdModeLock is automatically disabled." msgstr "Nincs XKB támogatás. A KbdModeLock automatikusan letiltva." #: ../../wmaker-crm/src/startup.c:632 msgid "it seems that there is already a window manager running" msgstr "nekem úgy tűnik, hogy már fut egy másik ablakkezelő" #: ../../wmaker-crm/src/startup.c:638 #, c-format msgid "could not manage screen %i" msgstr "a %i képernyőt nem tudom a kezelni" #: ../../wmaker-crm/src/startup.c:702 msgid "could not manage any screen" msgstr "egy képernyőt sem tudok kezelni" #: ../../wmaker-crm/src/switchmenu.c:135 msgid "Windows" msgstr "Ablakok" #: ../../wmaker-crm/src/texture.c:331 #, c-format msgid "image file \"%s\" used as texture could not be found." msgstr "Nem találom a \"%s\" képet (mintaként használatos)." #: ../../wmaker-crm/src/texture.c:336 #, c-format msgid "could not load texture pixmap \"%s\":%s" msgstr "nem tudom betölteni ezt a mintát \"%s\":%s" #: ../../wmaker-crm/src/texture.c:458 msgid "could not allocate image buffer" msgstr "Nem sikerült átmeneti kép tárolót lefoglalni" #: ../../wmaker-crm/src/wdefaults.c:400 #, c-format msgid "icon \"%s\" doesn't exist, check your config files" msgstr "\"%s\" ikon nem létezik. Ellenőrizd a beállításaidat!" #: ../../wmaker-crm/src/wdefaults.c:427 #, c-format msgid "error loading image file \"%s\": %s" msgstr "hiba a \"%s\" kép betöltése közben: %s" #: ../../wmaker-crm/src/wdefaults.c:463 #, c-format msgid "could not find default icon \"%s\"" msgstr "az alapértelmezett ikont \"%s\" nem találom" #: ../../wmaker-crm/src/window.c:2683 ../../wmaker-crm/src/window.c:2845 msgid "" "The NumLock, ScrollLock or similar key seems to be turned on. Turn it off or " "some mouse actions and keyboard shortcuts will not work." msgstr "Úgy tűnik, hogy a NumLock, ScrollLock vagy valamelyik hasonló billentyű be van kapcsolva. Kapcsold ki, vagy néhány egérművelet vagy billentyű-kombináció nem fog működni." #: ../../wmaker-crm/src/winmenu.c:81 msgid "Maximize vertically" msgstr "Teljes méret függőlegesen" #: ../../wmaker-crm/src/winmenu.c:82 msgid "Maximize horizontally" msgstr "Teljes méret vízszintesen" #: ../../wmaker-crm/src/winmenu.c:83 msgid "Maximize left half" msgstr "Teljes méret bal félre" #: ../../wmaker-crm/src/winmenu.c:84 msgid "Maximize right half" msgstr "Teljes méret jobb félre" #: ../../wmaker-crm/src/winmenu.c:85 msgid "Maximize top half" msgstr "Teljes méret felső félre" #: ../../wmaker-crm/src/winmenu.c:86 msgid "Maximize bottom half" msgstr "Teljes méret alsó félre" #: ../../wmaker-crm/src/winmenu.c:87 msgid "Maximize left top corner" msgstr "Teljes méret bal felső sarokba" #: ../../wmaker-crm/src/winmenu.c:88 msgid "Maximize right top corner" msgstr "Teljes méret jobb felső sarokba" #: ../../wmaker-crm/src/winmenu.c:89 msgid "Maximize left bottom corner" msgstr "Teljes méret bal alsó sarokba" #: ../../wmaker-crm/src/winmenu.c:90 msgid "Maximize right bottom corner" msgstr "Teljes méret jobb alsó sarokba" #: ../../wmaker-crm/src/winmenu.c:91 msgid "Maximus: tiled maximization" msgstr "Csempézett teljes méret" #: ../../wmaker-crm/src/winmenu.c:210 msgid "" "This will kill the application.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" "Ez bezárja az alkalmazást.\n" "Minden nem mentett adat elveszik.\n" "Biztos vagy benne?" #: ../../wmaker-crm/src/winmenu.c:360 ../../wmaker-crm/src/winmenu.c:369 msgid "Set Shortcut" msgstr "Gyorsbillentyű" #: ../../wmaker-crm/src/winmenu.c:457 ../../wmaker-crm/src/winmenu.c:487 #: ../../wmaker-crm/src/winmenu.c:513 msgid "could not create submenu for window menu" msgstr "nem tudtam almenüt létrehozni az ablak menühöz" #: ../../wmaker-crm/src/winmenu.c:491 msgid "Keep on top" msgstr "Mindig felül" #: ../../wmaker-crm/src/winmenu.c:495 msgid "Keep at bottom" msgstr "Mindig alul" #. #. * Warning: If you make some change that affects the order of the #. * entries, you must update the command enum in the top of #. * this file. #. #: ../../wmaker-crm/src/winmenu.c:534 ../../wmaker-crm/src/winmenu.c:623 msgid "Maximize" msgstr "Teljes méret" #: ../../wmaker-crm/src/winmenu.c:536 msgid "Other maximization" msgstr "Teljes méret opciók" #: ../../wmaker-crm/src/winmenu.c:539 ../../wmaker-crm/src/winmenu.c:606 msgid "Miniaturize" msgstr "Ikonállapot" #: ../../wmaker-crm/src/winmenu.c:541 ../../wmaker-crm/src/winmenu.c:642 msgid "Shade" msgstr "Felhúz" #: ../../wmaker-crm/src/winmenu.c:545 msgid "Resize/Move" msgstr "Átméretez/Mozgat" #: ../../wmaker-crm/src/winmenu.c:547 ../../wmaker-crm/src/winmenu.c:659 msgid "Select" msgstr "Kijelöl" #: ../../wmaker-crm/src/winmenu.c:549 msgid "Move To" msgstr "Átrak" #: ../../wmaker-crm/src/winmenu.c:554 msgid "Attributes..." msgstr "Tulajdonságok..." #: ../../wmaker-crm/src/winmenu.c:556 msgid "Options" msgstr "Beállítások" #: ../../wmaker-crm/src/winmenu.c:561 msgid "Close" msgstr "Bezár" #: ../../wmaker-crm/src/winmenu.c:600 msgid "Deminiaturize" msgstr "Eredeti méret" #: ../../wmaker-crm/src/winmenu.c:616 msgid "Unmaximize" msgstr "Eredeti méret" #: ../../wmaker-crm/src/winmenu.c:636 msgid "Unshade" msgstr "Leereszt" #: ../../wmaker-crm/src/winmenu.c:653 msgid "Deselect" msgstr "Kijelölést megszüntet" #: ../../wmaker-crm/src/winspector.c:341 #, c-format msgid "Could not find icon \"%s\" specified for this window" msgstr "Nem találom az ehhez az ablakhoz megadott \"%s\" ikont" #: ../../wmaker-crm/src/winspector.c:356 #, c-format msgid "Could not open specified icon \"%s\":%s" msgstr "Nem tudom megnyitni a megadott ikont \"%s\" : %s" #: ../../wmaker-crm/src/winspector.c:755 #, c-format msgid "" "Ignore client supplied icon is set, but icon filename textbox is empty. " "Using client supplied icon" msgstr "Le van tiltva a program által adott ikon használata, de nincs megadva ikon fájl név. A program által adott ikont használom. " #: ../../wmaker-crm/src/winspector.c:1005 #, c-format msgid "Inspecting %s.%s" msgstr "%s.%s tulajdonságai" #: ../../wmaker-crm/src/winspector.c:1030 msgid "Click in the window you wish to inspect." msgstr "" "Kattints abba az ablakba amelynek\n" "tulajdonságait szerkeszteni akarod!" #: ../../wmaker-crm/src/winspector.c:1054 msgid "" "The configuration will apply to all\n" "windows that have their WM_CLASS\n" "property set to the above selected\n" "name, when saved." msgstr "" "Az elmentett beállítások minden olyan\n" "ablakra érvényesek lesznek, amelyek\n" "WM_CLASS tulajdonsága megegyezik\n" "a fent kiválasztottal." #: ../../wmaker-crm/src/winspector.c:1074 msgid "Save" msgstr "Ment" #: ../../wmaker-crm/src/winspector.c:1082 msgid "Apply" msgstr "Alkalmaz" #: ../../wmaker-crm/src/winspector.c:1088 msgid "Reload" msgstr "Frissít" #: ../../wmaker-crm/src/winspector.c:1097 #: ../../wmaker-crm/src/winspector.c:1107 msgid "Window Specification" msgstr "Ablak meghatározás" #: ../../wmaker-crm/src/winspector.c:1098 msgid "Window Attributes" msgstr "Ablak tulajdonságok" #: ../../wmaker-crm/src/winspector.c:1099 msgid "Advanced Options" msgstr "Haladó beállítások" #: ../../wmaker-crm/src/winspector.c:1100 msgid "Icon and Initial Workspace" msgstr "Ikon és kezdő munkafelület" #: ../../wmaker-crm/src/winspector.c:1101 msgid "Application Specific" msgstr "Alkalmazás beállításai" #: ../../wmaker-crm/src/winspector.c:1114 msgid "Defaults for all windows" msgstr "Alapértelmezés minden ablakra" #: ../../wmaker-crm/src/winspector.c:1165 msgid "Select window" msgstr "Ablak választás" #: ../../wmaker-crm/src/winspector.c:1311 msgid "Attributes" msgstr "Tulajdonságok" #: ../../wmaker-crm/src/winspector.c:1318 msgid "Disable titlebar" msgstr "Címsor letiltása" #: ../../wmaker-crm/src/winspector.c:1320 msgid "" "Remove the titlebar of this window.\n" "To access the window commands menu of a window\n" "without it's titlebar, press Control+Esc (or the\n" "equivalent shortcut, if you changed the default\n" "settings)." msgstr "" "Eltünteti az ablak címsorát.\n" "Az ablak-parancsok menüjéhez a címsor nélküli\n" "ablakoknál a Control+Esc lenyomásával juthatsz\n" "(vagy egy ezzel egyenértékű gombkombinációval, ha\n" "átállítottad az alapértelmezést)." #: ../../wmaker-crm/src/winspector.c:1326 msgid "Disable resizebar" msgstr "Átméretező sáv letiltása" #: ../../wmaker-crm/src/winspector.c:1328 msgid "Remove the resizebar of this window." msgstr "Eltünteti az átméretező sávot" #: ../../wmaker-crm/src/winspector.c:1331 msgid "Disable close button" msgstr "Bezárás gomb letiltása" #: ../../wmaker-crm/src/winspector.c:1333 msgid "Remove the `close window' button of this window." msgstr "Eltünteti a `bezárás' gombot az ablakról" #: ../../wmaker-crm/src/winspector.c:1336 msgid "Disable miniaturize button" msgstr "Ikonállapot gomb letiltása" #: ../../wmaker-crm/src/winspector.c:1338 msgid "Remove the `miniaturize window' button of the window." msgstr "Eltünteti az `Ikonállapot' gombot az ablakról" #: ../../wmaker-crm/src/winspector.c:1341 msgid "Disable border" msgstr "Keret letiltása" #: ../../wmaker-crm/src/winspector.c:1343 msgid "Remove the 1 pixel black border around the window." msgstr "Eltünteti az 1 pixel széles fekete keretet az ablak körül." #: ../../wmaker-crm/src/winspector.c:1346 msgid "Keep on top (floating)" msgstr "Mindig felül (lebegtetés)" #: ../../wmaker-crm/src/winspector.c:1348 msgid "" "Keep the window over other windows, not allowing\n" "them to cover it." msgstr "" "Az ablakot mindig felülre teszi, nem engedi, hogy\n" "más ablak eltakarja." #: ../../wmaker-crm/src/winspector.c:1351 msgid "Keep at bottom (sunken)" msgstr "Mindig alul (lesüllyesztés)" #: ../../wmaker-crm/src/winspector.c:1353 msgid "Keep the window under all other windows." msgstr "Az ablak mindig a legalsó lesz." #: ../../wmaker-crm/src/winspector.c:1358 msgid "Make window present in all workspaces." msgstr "Az ablak minden munkafelületen megjelenik." #: ../../wmaker-crm/src/winspector.c:1361 msgid "Start miniaturized" msgstr "Ikonállapotban indít" #: ../../wmaker-crm/src/winspector.c:1363 msgid "" "Make the window be automatically miniaturized when it's\n" "first shown." msgstr "" "Az ablak automatikusan ikonállapotba kerül, amikor\n" "először megjelenik." #: ../../wmaker-crm/src/winspector.c:1366 msgid "Start maximized" msgstr "Teljes méretben indít" #: ../../wmaker-crm/src/winspector.c:1368 msgid "" "Make the window be automatically maximized when it's\n" "first shown." msgstr "" "Az ablak automatikusan teljes méretű lesz, amikor\n" "először megjelenik." #: ../../wmaker-crm/src/winspector.c:1371 msgid "Full screen maximization" msgstr "Teljes képernyős üzemmód" #: ../../wmaker-crm/src/winspector.c:1373 msgid "" "Make the window use the whole screen space when it's\n" "maximized. The titlebar and resizebar will be moved\n" "to outside the screen." msgstr "" "Az ablak az egész képernyőt el fogja foglalni, amikor\n" "teljes méretűre állítod. A címsor és az átméretező sáv\n" "is a képernyőn kívűlre kerül." #: ../../wmaker-crm/src/winspector.c:1395 msgid "Advanced" msgstr "Haladó" #: ../../wmaker-crm/src/winspector.c:1402 msgid "Do not bind keyboard shortcuts" msgstr "Ne értelmezze a gyorsbillentyűket" #: ../../wmaker-crm/src/winspector.c:1404 msgid "" "Do not bind keyboard shortcuts from Window Maker\n" "when this window is focused. This will allow the\n" "window to receive all key combinations regardless\n" "of your shortcut configuration." msgstr "" "A Window Maker nem fogja értelmezni a gyorsbillentyűket,\n" "amikor ez az ablak aktív. Ez lehetővé teszi, hogy az\n" "ablak minden gombkombinációt megkapjon, azt is, ami\n" "már esetleg szerepel a gyorsbillentyűid között." #: ../../wmaker-crm/src/winspector.c:1410 msgid "Do not bind mouse clicks" msgstr "Ne értelmezze az egérkattintásokat" #: ../../wmaker-crm/src/winspector.c:1412 msgid "" "Do not bind mouse actions, such as `Alt'+drag\n" "in the window (when Alt is the modifier you have\n" "configured)." msgstr "" "Nem próbálja meg értelmezni az egér tevékenységét,\n" "pl. az Alt+húzást ebben az ablakban (feltéve hogy az\n" "Alt a beállított módosító billentyű)." #: ../../wmaker-crm/src/winspector.c:1416 msgid "Do not show in the window list" msgstr "Nem jelenik meg az ablak listában" #: ../../wmaker-crm/src/winspector.c:1418 msgid "Do not list the window in the window list menu." msgstr "Az ablak nem jelenik meg az \"Ablakok listája\" menüben" #: ../../wmaker-crm/src/winspector.c:1421 msgid "Do not show in the switch panel" msgstr "Nem jelenik meg a váltó panelen" #: ../../wmaker-crm/src/winspector.c:1423 msgid "Do not include in switch panel while cycling windows." msgstr "Ne jelenítse meg a váltó panelen aktív ablak váltáskor." #: ../../wmaker-crm/src/winspector.c:1426 msgid "Do not let it take focus" msgstr "Ne kapjon fókuszt" #: ../../wmaker-crm/src/winspector.c:1428 msgid "" "Do not let the window take keyboard focus when you\n" "click on it." msgstr "" "Amikor rákattintasz az ablakra, akkor a billentyűzet\n" "nem fókuszálódik rá." #: ../../wmaker-crm/src/winspector.c:1431 msgid "Keep inside screen" msgstr "Képernyőn belül tart" #: ../../wmaker-crm/src/winspector.c:1433 msgid "" "Do not allow the window to move itself completely\n" "outside the screen. For bug compatibility.\n" msgstr "" "Nem engedi hogy az ablak teljesen a képernyőn kívűlre\n" "rakja magát. Hibás alkalmazásokhoz.\n" #: ../../wmaker-crm/src/winspector.c:1437 msgid "Ignore 'Hide Others'" msgstr "Kihagyás \"Többi elrejtése\"-kor" #: ../../wmaker-crm/src/winspector.c:1439 msgid "" "Do not hide the window when issuing the\n" "`HideOthers' command." msgstr "" "Figyelmen kívül hagyja a \"Többi elrejtése\"\n" "parancsot és ezt az ablakot nem rejti el." #: ../../wmaker-crm/src/winspector.c:1442 msgid "Ignore 'Save Session'" msgstr "Kihagyás \"Session mentése\"-kor" #: ../../wmaker-crm/src/winspector.c:1444 msgid "" "Do not save the associated application in the\n" "session's state, so that it won't be restarted\n" "together with other applications when Window Maker\n" "starts." msgstr "" "Nem menti el a hozzá tartozó alkalmazást a session\n" "állapottal, így az nem fog újraindulni a többi\n" "alkalmazással, amikor a Window Maker elindul." #: ../../wmaker-crm/src/winspector.c:1449 msgid "Emulate application icon" msgstr "Alkalmazás-ikon emuláció" #: ../../wmaker-crm/src/winspector.c:1451 msgid "" "Make this window act as an application that provides\n" "enough information to Window Maker for a dockable\n" "application icon to be created." msgstr "" "Lehetővé teszi, hogy az ablak úgy viselkedjen mint azok az\n" "alkalmazások melyek elegendő információt szolgáltatnak a\n" "Window Makernek, hogy dokkolható alkalmazás ikont hozzon létre." #: ../../wmaker-crm/src/winspector.c:1456 msgid "Focus across workspaces" msgstr "Munkafelületek közötti fókuszálás" #: ../../wmaker-crm/src/winspector.c:1458 msgid "" "Allow Window Maker to switch workspace to satisfy\n" "a focus request (annoying)." msgstr "" "Megengedi, hogy a Window Maker munkafelületet váltson az\n" "ablak fókuszálásakor (ez idegesítő tud lenni)." #: ../../wmaker-crm/src/winspector.c:1462 msgid "Do not let it be minimized" msgstr "Nem engedi ikonállapotba" #: ../../wmaker-crm/src/winspector.c:1464 msgid "" "Do not let the window of this application be\n" "minimized.\n" msgstr "" "Nem engedi ikonállapotba helyezni ennek az\n" "alkalmazásnak az ablakait.\n" #: ../../wmaker-crm/src/winspector.c:1469 msgid "Disable language button" msgstr "Nyelv-gomb letiltása" #: ../../wmaker-crm/src/winspector.c:1471 msgid "Remove the `toggle language' button of the window." msgstr "Eltünteti a `nyelv ki/be' gombot az ablakról" #: ../../wmaker-crm/src/winspector.c:1493 msgid "Miniwindow Image" msgstr "Miniablak-kép" #: ../../wmaker-crm/src/winspector.c:1510 msgid "Icon filename:" msgstr "Ikonfájl neve:" #: ../../wmaker-crm/src/winspector.c:1521 msgid "Ignore client supplied icon" msgstr "Ne használja a program ikonját" #: ../../wmaker-crm/src/winspector.c:1527 msgid "Initial Workspace" msgstr "Kezdeti munkafelület" #: ../../wmaker-crm/src/winspector.c:1529 msgid "The workspace to place the window when it's first shown." msgstr "Amikor megjelenik, melyik munkafelületre helyezze az ablakot" #: ../../wmaker-crm/src/winspector.c:1535 msgid "Nowhere in particular" msgstr "Aktuális munkafelület" #: ../../wmaker-crm/src/winspector.c:1558 msgid "Application Attributes" msgstr "Alkalmazás tulajdonságok" #: ../../wmaker-crm/src/winspector.c:1565 msgid "Start hidden" msgstr "Indításkor elrejt" #: ../../wmaker-crm/src/winspector.c:1567 msgid "Automatically hide application when it's started." msgstr "Amikor elindul, automatikusan elrejti" #: ../../wmaker-crm/src/winspector.c:1570 msgid "No application icon" msgstr "Nincs alkalmazás-ikon" #: ../../wmaker-crm/src/winspector.c:1572 msgid "" "Disable the application icon for the application.\n" "Note that you won't be able to dock it anymore,\n" "and any icons that are already docked will stop\n" "working correctly." msgstr "" "Letiltja az alkalmazáshoz tartozó ikon megjelenését.\n" "Ezután nem tudod dokkolni az alkalmazást és a már\n" "dokkolt ikonok sem fognak megfelelően működni." #: ../../wmaker-crm/src/winspector.c:1578 msgid "Shared application icon" msgstr "Közös alkalmazás-ikon" #: ../../wmaker-crm/src/winspector.c:1580 msgid "" "Use a single shared application icon for all of\n" "the instances of this application.\n" msgstr "" "Egyetlen közös alkalmazás-ikont használ ezen\n" "alkalmazás összes futó példányához.\n" #: ../../wmaker-crm/src/workspace.c:101 ../../wmaker-crm/src/workspace.c:691 #, c-format msgid "Workspace %i" msgstr "Munkafelület %i" #: ../../wmaker-crm/src/workspace.c:737 msgid "Workspaces" msgstr "Munkafelületek" #: ../../wmaker-crm/src/workspace.c:739 msgid "could not create Workspace menu" msgstr "nem tudom létrehozni a Munkafelület menüt" #: ../../wmaker-crm/src/workspace.c:746 msgid "New" msgstr "Új" #: ../../wmaker-crm/src/workspace.c:747 msgid "Destroy Last" msgstr "Törli az utolsót" #: ../../wmaker-crm/src/workspace.c:749 msgid "Last Used" msgstr "Utoljára használt" WindowMaker-0.95.9/po/gl.po0000644000175000017500000014217713431646201012362 00000000000000# Galician translation of WindowMaker. # Copyright (C) 1997 Xose Vazquez Perez # Copyright (C) 2000 Jesús Bravo Álvarez # Xose Vazquez Perez , 1997 # Jesús Bravo Álvarez , 2000 # # Proxecto Trasno - Adaptación do software libre á lingua galega: Se desexas # colaborar connosco, podes atopar máis información en http://trasno.gpul.org # msgid "" msgstr "" "Project-Id-Version: WindowMaker 0.62.1\n" "POT-Creation-Date: 2000-05-10 12:55+0200\n" "PO-Revision-Date: 2000-10-15 17:57+0200\n" "Last-Translator: Jesús Bravo Álvarez \n" "Language-Team: Galician \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../src/appicon.c:550 ../src/dialog.c:230 ../src/dock.c:3291 #: ../src/dockedapp.c:211 ../src/main.c:254 ../src/rootmenu.c:1765 #: ../src/winspector.c:383 ../src/winspector.c:399 msgid "Error" msgstr "Erro" #: ../src/appicon.c:551 msgid "Could not open specified icon file" msgstr "Non foi posible abri-lo ficheiro de icona especificado" #: ../src/appicon.c:552 ../src/dialog.c:122 ../src/dialog.c:230 #: ../src/dialog.c:574 ../src/dialog.c:1591 ../src/dock.c:515 #: ../src/dock.c:523 ../src/dock.c:547 ../src/dock.c:3292 #: ../src/dockedapp.c:212 ../src/dockedapp.c:370 ../src/main.c:254 #: ../src/rootmenu.c:1769 ../src/winspector.c:384 ../src/winspector.c:400 msgid "OK" msgstr "Aceptar" #: ../src/appicon.c:579 ../src/dock.c:277 msgid "" " will be forcibly closed.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" " pecharase forzosamente.\n" "Perderanse tódolos cambios non gardados.\n" "Confírmeo." #: ../src/appicon.c:585 ../src/dock.c:282 ../src/winmenu.c:125 msgid "Kill Application" msgstr "Matar Aplicación" #: ../src/appicon.c:586 ../src/dock.c:283 ../src/winmenu.c:127 msgid "Yes" msgstr "Si" #: ../src/appicon.c:586 ../src/dock.c:283 ../src/winmenu.c:127 msgid "No" msgstr "Non" #: ../src/appicon.c:604 ../src/dock.c:1159 ../src/dock.c:3463 msgid "Unhide Here" msgstr "Amosar Aquí" #: ../src/appicon.c:605 ../src/appicon.c:630 ../src/dock.c:1161 #: ../src/dock.c:1163 ../src/dock.c:3475 ../src/winmenu.c:469 msgid "Hide" msgstr "Agochar" #: ../src/appicon.c:606 msgid "Set Icon..." msgstr "Establecer Icona..." #: ../src/appicon.c:607 ../src/dock.c:1167 ../src/rootmenu.c:226 #: ../src/rootmenu.c:240 ../src/winmenu.c:516 msgid "Kill" msgstr "Matar" #: ../src/appicon.c:628 ../src/dock.c:3473 msgid "Unhide" msgstr "Amosar" #: ../src/defaults.c:910 ../src/startup.c:820 ../src/startup.c:838 #: ../src/startup.c:844 #, c-format msgid "could not read domain \"%s\" from defaults database" msgstr "" "non foi posible le-lo dominio \"%s\" da base de datos de predeterminados" #: ../src/defaults.c:956 ../src/defaults.c:1081 ../src/defaults.c:1120 #: ../src/defaults.c:1150 #, c-format msgid "Domain %s (%s) of defaults database is corrupted!" msgstr "¡O dominio %s (%s) da base de datos de predeterminados está corrupto!" #: ../src/defaults.c:961 ../src/defaults.c:1102 ../src/defaults.c:1133 #: ../src/defaults.c:1159 #, c-format msgid "could not load domain %s from user defaults database" msgstr "" "non foi posible carga-lo dominio %s da base de datos de predeterminados do " "usuario" #: ../src/defaults.c:972 ../src/defaults.c:1066 #, c-format msgid "Domain %s (%s) of global defaults database is corrupted!" msgstr "" "¡O dominio %s (%s) da base de datos global de predeterminados está corrupto!" #: ../src/defaults.c:991 #, c-format msgid "could not load domain %s from global defaults database (%s)" msgstr "" "non foi posible carga-lo dominio %s da base de datos de predeterminados " "global (%s)" #: ../src/defaults.c:1071 #, c-format msgid "could not load domain %s from global defaults database" msgstr "" "non foi posible carga-lo dominio %s da base de datos de predeterminados " "global" #: ../src/defaults.c:1401 #, c-format msgid "wrong option value for key \"%s\". Should be one of %s" msgstr "valor de opción erróneo para a clave \"%s\". Debería ser un de %s" #: ../src/defaults.c:1446 #, c-format msgid "can't convert \"%s\" to boolean for key \"%s\"" msgstr "non se pode converter \"%s\" a booleano para a clave \"%s\"" #: ../src/defaults.c:1451 ../src/defaults.c:1483 ../src/defaults.c:1515 #: ../src/defaults.c:1528 ../src/defaults.c:1543 ../src/defaults.c:1557 #: ../src/defaults.c:1627 ../src/defaults.c:1639 ../src/defaults.c:2045 #: ../src/defaults.c:2062 ../src/defaults.c:2075 ../src/defaults.c:2165 #: ../src/defaults.c:2181 ../src/defaults.c:2212 ../src/defaults.c:2299 #: ../src/defaults.c:2707 ../src/defaults.c:2720 #, c-format msgid "using default \"%s\" instead" msgstr "usando \"%s\" por defecto no seu lugar" #: ../src/defaults.c:1480 #, c-format msgid "can't convert \"%s\" to integer for key \"%s\"" msgstr "non se pode converter \"%s\" a enteiro para a clave \"%s\"" #: ../src/defaults.c:1510 ../src/defaults.c:1622 ../src/defaults.c:2040 #: ../src/defaults.c:2057 ../src/defaults.c:2160 ../src/defaults.c:2207 #: ../src/defaults.c:2701 ../src/wdefaults.c:565 ../src/wdefaults.c:601 #, c-format msgid "Wrong option format for key \"%s\". Should be %s." msgstr "Formato de opción erróneo para a clave \"%s\". Debería ser %s." #: ../src/defaults.c:1523 #, c-format msgid "Incorrect number of elements in array for key \"%s\"." msgstr "Número de elementos incorrecto no array para a clave \"%s\"." #: ../src/defaults.c:1538 #, c-format msgid "Wrong value for key \"%s\". Should be Coordinate." msgstr "Valor erróneo para a clave \"%s\". Deberían ser Coordenadas." #: ../src/defaults.c:1553 #, c-format msgid "can't convert array to integers for \"%s\"." msgstr "non se pode converte-lo array a enteiros para \"%s\"." #: ../src/defaults.c:1749 ../src/defaults.c:1781 ../src/defaults.c:1797 #: ../src/defaults.c:1843 ../src/defaults.c:1883 ../src/defaults.c:1921 #: ../src/defaults.c:1937 #, c-format msgid "\"%s\" is not a valid color name" msgstr "\"%s\" non un nome de cor válido" #: ../src/defaults.c:1762 msgid "bad number of arguments in gradient specification" msgstr "número de argumentos erróneo na especificación de gradiente" #: ../src/defaults.c:1816 msgid "too few arguments in multicolor gradient specification" msgstr "poucos argumentos na especificación de gradiente multi-cor" #: ../src/defaults.c:1910 msgid "bad number of arguments in textured gradient specification" msgstr "" "número de argumentos erróneo na especificación de gradiente con textura" #: ../src/defaults.c:1953 #, c-format msgid "bad opacity value for tgradient texture \"%s\". Should be [0..255]" msgstr "" "valor de opacidade erróneo para a textura tgradient \"%s\". Debería ser " "[0..255]" #: ../src/defaults.c:2013 #, c-format msgid "could not initialize library %s" msgstr "non foi posible inicializa-la librería %s" #: ../src/defaults.c:2016 #, c-format msgid "could not find function %s::%s" msgstr "non foi posible atopa-la función %s::%s" #: ../src/defaults.c:2023 #, c-format msgid "invalid texture type %s" msgstr "tipo de textura %s non válido" #: ../src/defaults.c:2070 #, c-format msgid "Error in texture specification for key \"%s\"" msgstr "Erro na especificación de textura para a clave \"%s\"" #: ../src/defaults.c:2177 msgid "Wrong type for workspace background. Should be a texture type." msgstr "Tipo de fondo da área de traballo erróneo. Debería ser unha textura." #: ../src/defaults.c:2225 #, c-format msgid "Wrong type for background of workspace %i. Should be a texture." msgstr "" "Tipo do fondo da área de traballo %i erróneo. Debería ser unha textura." #: ../src/defaults.c:2267 msgid "could not load any usable font!!!" msgstr "¡¡¡non foi posible cargar ningunha fonte usable!!!" #: ../src/defaults.c:2294 #, c-format msgid "could not get color for key \"%s\"" msgstr "non foi posible obte-la cor para a clave \"%s\"" #: ../src/defaults.c:2352 ../src/rootmenu.c:492 #, c-format msgid "%s:invalid key modifier \"%s\"" msgstr "%s:modificador de tecla inválido \"%s\"" #: ../src/defaults.c:2364 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\"" msgstr "%s:especificación non válida de atallo de teclado \"%s\"" #: ../src/defaults.c:2371 #, c-format msgid "%s:invalid key in shortcut \"%s\"" msgstr "%s:tecla non válida no atallo de teclado \"%s\"" #: ../src/defaults.c:2396 #, c-format msgid "%s: modifier key %s is not valid" msgstr "%s: tecla de modificador %s non válida" #: ../src/defaults.c:2428 #, c-format msgid "could not load image in option %s: %s" msgstr "non foi posible carga-la imaxe na opción %s: %s" #: ../src/defaults.c:2547 #, c-format msgid "failed to open bitmap file \"%s\"" msgstr "falla ó abri-lo ficheiro de mapa de bits \"%s\"" #: ../src/defaults.c:2550 #, c-format msgid "\"%s\" is not a valid bitmap file" msgstr "\"%s\" non é un ficheiro de bitmap válido" #: ../src/defaults.c:2553 #, c-format msgid "out of memory reading bitmap file \"%s\"" msgstr "memoria esgotada ó ler o ficheiro de bitmap \"%s\"" #: ../src/defaults.c:2597 ../src/defaults.c:2639 msgid "bad number of arguments in cursor specification" msgstr "número de argumentos erróneo na especificación do cursor" #: ../src/defaults.c:2617 #, c-format msgid "unknown builtin cursor name \"%s\"" msgstr "o nome de cursor incorporado \"%s\" é descoñecido" #: ../src/defaults.c:2651 ../src/defaults.c:2665 #, c-format msgid "could not find cursor bitmap file \"%s\"" msgstr "non foi posible atopa-lo ficheiro de bitmap \"%s\" do cursor" #: ../src/defaults.c:2715 #, c-format msgid "Error in cursor specification for key \"%s\"" msgstr "Erro na especificación de cursor para a clave \"%s\"" #: ../src/defaults.c:2805 msgid "could not render texture for icon background" msgstr "non foi posible renderiza-la textura para o fondo da icona" #: ../src/dialog.c:122 ../src/dialog.c:581 ../src/dock.c:547 #: ../src/dockedapp.c:376 ../src/rootmenu.c:188 ../src/rootmenu.c:226 #: ../src/rootmenu.c:240 msgid "Cancel" msgstr "Cancelar" #: ../src/dialog.c:225 msgid "Could not open directory \"%s\":\n%s" msgstr "Non foi posible abri-lo directorio \"%s\":\n%s" #: ../src/dialog.c:280 msgid "Could not load image file " msgstr "Non foi posible carga-lo ficheiro de imaxe " #: ../src/dialog.c:509 msgid "Directories" msgstr "Directorios" #: ../src/dialog.c:518 msgid "Icons" msgstr "Iconas" #: ../src/dialog.c:551 msgid "Preview" msgstr "Previsualización" #: ../src/dialog.c:564 msgid "File Name:" msgstr "Nome de Ficheiro:" #: ../src/dialog.c:587 msgid "Choose File" msgstr "Escoller Ficheiro" #: ../src/dialog.c:604 ../src/dialog.c:606 msgid "Icon Chooser" msgstr "Escolledor de Iconas" #: ../src/dialog.c:1515 ../src/startup.c:328 msgid "cannot open connection for crashing dialog panel. Aborting." msgstr "non se pode abri-la conexión para o diálogo de erro grave. Abortando." #: ../src/dialog.c:1541 msgid "Fatal error" msgstr "Erro grave" #: ../src/dialog.c:1552 #, c-format msgid "" "Window Maker received signal %i\n" "(%s)." msgstr "" "O Window Maker recibiu un sinal %i\n" "(%s)." #: ../src/dialog.c:1555 #, c-format msgid "Window Maker received signal %i." msgstr "O Window Maker recibiu un sinal %i." #: ../src/dialog.c:1564 msgid "" " This fatal error occured probably due to a bug. Please fill the included " "BUGFORM and report it to %s." msgstr "" " Este erro grave ocorreu probablemente por mor dun erro do programa. Por " "favor, encha a BUGFORM incluída (en inglés) e envíea a %s." #: ../src/dialog.c:1572 msgid "What do you want to do now?" msgstr "¿Que quere facer agora?" #: ../src/dialog.c:1578 msgid "Select action" msgstr "Seleccionar a acción" #: ../src/dialog.c:1579 msgid "Abort and leave a core file" msgstr "Abortar e deixar un ficheiro core" #: ../src/dialog.c:1580 msgid "Restart Window Maker" msgstr "Reiniciar Window Maker" #: ../src/dialog.c:1581 msgid "Start alternate window manager" msgstr "Executar outro xestor de fiestras" #: ../src/dock.c:213 #, c-format msgid "Type the name for workspace %i:" msgstr "Escriba o nome para a área de traballo %i:" #: ../src/dock.c:214 ../src/dock.c:1123 ../src/dock.c:1126 ../src/dock.c:3381 msgid "Rename Workspace" msgstr "Renomear Área de Traballo" #: ../src/dock.c:509 ../src/dock.c:517 msgid "Warning" msgstr "Aviso" #: ../src/dock.c:510 msgid "" "Some icons cannot be made omnipresent. Please make sure that no other icon " "is docked in the same positions on the other workspaces and the Clip is not " "full in some workspace." msgstr "" "Algunhas iconas non se poden facer omnipresentes. Asegúrese de que ningunha " "outra icona está na mesma posición nas outras áreas de traballo e que o Clip " "non está cheo nalgunha delas." #: ../src/dock.c:518 msgid "" "Icon cannot be made omnipresent. Please make sure that no other icon is " "docked in the same position on the other workspaces and the Clip is not full " "in some workspace." msgstr "" "A icona non se pode facer omnipresente. Asegúrese de que ningunha outra " "icona está na mesma posición nas outras áreas de traballo e que o Clip non " "está cheo nalgunha delas." #: ../src/dock.c:545 msgid "Workspace Clip" msgstr "Clip" #: ../src/dock.c:546 msgid "All selected icons will be removed!" msgstr "¡Tódalas iconas seleccionadas serán eliminadas!" #: ../src/dock.c:597 ../src/dock.c:1138 ../src/dock.c:1140 ../src/dock.c:3417 msgid "Keep Icon" msgstr "Manter Icona" #: ../src/dock.c:598 ../src/dock.c:2120 ../src/dock.c:2254 msgid "Type the command used to launch the application" msgstr "Escriba o comando usado para executa-la aplicación" #: ../src/dock.c:949 #, c-format msgid "could not launch application %s\n" msgstr "non foi posible lanza-la aplicación %s\n" #: ../src/dock.c:1004 msgid "could not create workspace submenu for Clip menu" msgstr "" "non foi posible crear o submenú de área de traballo para o menú do Clip" #: ../src/dock.c:1027 ../src/dock.c:1070 ../src/dock.c:1115 ../src/dock.c:3361 msgid "Keep on Top" msgstr "Manter por Riba" #: ../src/dock.c:1029 ../src/dock.c:3363 msgid "Allow Lowering" msgstr "Permitir Baixar de Capa" #: ../src/dock.c:1066 msgid "could not create options submenu for Clip menu" msgstr "non foi posible crear o submenú de opcións para o menú do Clip" #: ../src/dock.c:1073 msgid "Collapsed" msgstr "Encollido" #: ../src/dock.c:1079 msgid "AutoCollapse" msgstr "Encoller Automaticamente" #: ../src/dock.c:1085 msgid "AutoRaiseLower" msgstr "Levantar/Baixar Automaticamente" #: ../src/dock.c:1091 msgid "AutoAttract Icons" msgstr "Atraer Iconas Automaticamente" #: ../src/dock.c:1118 msgid "Clip Options" msgstr "Opcións do Clip" #: ../src/dock.c:1128 msgid "Selected" msgstr "Seleccionada" #: ../src/dock.c:1133 ../src/dock.c:1136 ../src/dock.c:3408 msgid "Select All Icons" msgstr "Seleccionar Tódalas Iconas" #: ../src/dock.c:1142 ../src/dock.c:1144 ../src/dock.c:3425 msgid "Move Icon To" msgstr "Mover Icona Para" #: ../src/dock.c:1149 ../src/dock.c:1152 ../src/dock.c:3436 msgid "Remove Icon" msgstr "Borrar Icona" #: ../src/dock.c:1154 msgid "Attract Icons" msgstr "Atraer Iconas" #: ../src/dock.c:1157 msgid "Launch" msgstr "Lanzar" #: ../src/dock.c:1165 msgid "Settings..." msgstr "Preferencias..." #: ../src/dock.c:1524 ../src/dock.c:1627 #, c-format msgid "bad value in docked icon state info %s" msgstr "valor erróneo %s na información do estado da icona do dock" #: ../src/dock.c:1635 #, c-format msgid "bad value in docked icon position %i,%i" msgstr "valor erróneo na icona da posición %i,%i no dock" #: ../src/dock.c:1887 msgid "there are too many icons stored in dock. Ignoring what doesn't fit" msgstr "hai demasiadas iconas no dock. Ignorando o que non caiba" #. icon->forced_dock = 1; #: ../src/dock.c:2119 ../src/dock.c:2253 msgid "Dock Icon" msgstr "Poñer Icona no Dock" #: ../src/dock.c:3284 ../src/dock.c:3288 #, c-format msgid "Could not execute command \"%s\"" msgstr "Non foi posible executa-lo comando \"%s\"" #: ../src/dock.c:3387 msgid "Toggle Omnipresent" msgstr "Trocar Omnipresente" #: ../src/dock.c:3392 ../src/winmenu.c:421 ../src/winspector.c:1380 msgid "Omnipresent" msgstr "Omnipresente" #: ../src/dock.c:3406 msgid "Unselect All Icons" msgstr "Deseleccionar Tódalas Iconas" #: ../src/dock.c:3415 msgid "Keep Icons" msgstr "Manter Iconas" #: ../src/dock.c:3423 msgid "Move Icons To" msgstr "Mover Iconas Para" #: ../src/dock.c:3434 msgid "Remove Icons" msgstr "Borrar Iconas" #: ../src/dock.c:3465 msgid "Bring Here" msgstr "Traer para Aquí" #: ../src/dockedapp.c:131 #, c-format msgid "could not find icon %s, used in a docked application" msgstr "non foi posible atopa-la icona %s, usada nunha aplicación do dock" #: ../src/dockedapp.c:210 #, c-format msgid "Could not open specified icon file: %s" msgstr "Non foi posible abri-lo ficheiro de icona especificado: %s" #: ../src/dockedapp.c:212 msgid "Ignore" msgstr "Ignorar" #: ../src/dockedapp.c:305 msgid "Start when WindowMaker is started" msgstr "Iniciar cando se execute o WindowMaker" #: ../src/dockedapp.c:312 msgid "Lock (prevent accidental removal)" msgstr "Bloquear (evita eliminacións accidentais)" #: ../src/dockedapp.c:318 msgid "Application path and arguments" msgstr "Camiño e argumentos da aplicación" #: ../src/dockedapp.c:329 msgid "Command for files dropped with DND" msgstr "Comando para os ficheiros soltados con DND" #: ../src/dockedapp.c:341 #, c-format msgid "%d will be replaced with the file name" msgstr "%d será substituído polo nome do ficheiro" #: ../src/dockedapp.c:345 msgid "DND support was not compiled in" msgstr "Non se compilou con soporte para Arrastrar e Soltar" #: ../src/dockedapp.c:351 msgid "Icon Image" msgstr "Imaxe da Icona" #: ../src/dockedapp.c:363 ../src/winspector.c:1518 msgid "Browse..." msgstr "Explorar..." #: ../src/dockedapp.c:408 msgid "Docked Application Settings" msgstr "Opcións das Aplicacións do Dock" #: ../src/framewin.c:655 ../src/framewin.c:750 ../src/menu.c:458 #: ../src/texture.c:549 #, c-format msgid "could not render texture: %s" msgstr "non foi posible renderiza-la textura: %s" #: ../src/framewin.c:678 ../src/framewin.c:689 ../src/framewin.c:705 #: ../src/framewin.c:716 ../src/framewin.c:723 ../src/framewin.c:730 #: ../src/icon.c:350 ../src/menu.c:487 #, c-format msgid "error rendering image:%s" msgstr "erro renderizando a imaxe:%s" #: ../src/framewin.c:783 #, c-format msgid "error rendering image: %s" msgstr "erro renderizando a imaxe: %s" #: ../src/icon.c:229 ../src/wdefaults.c:435 #, c-format msgid "error loading image file \"%s\": %s" msgstr "erro cargando o ficheiro de imaxe \"%s\": %s" #: ../src/icon.c:488 ../src/icon.c:497 #, c-format msgid "could not create directory %s" msgstr "non foi posible crea-lo directorio %s" #: ../src/icon.c:764 #, c-format msgid "could not find default icon \"%s\"" msgstr "non foi posible atopa-la icona por defecto \"%s\"" #: ../src/icon.c:770 #, c-format msgid "could not load default icon \"%s\":%s" msgstr "non foi posible atopa-la icona por defecto \"%s\":%s" #: ../src/main.c:204 msgid "failed to restart Window Maker." msgstr "fallo ó reiniciar Window Maker." #: ../src/main.c:207 #, c-format msgid "could not exec %s" msgstr "non foi posible executar %s" #: ../src/main.c:252 msgid "Could not execute command: " msgstr "Non foi posible executa-lo comando: " #: ../src/main.c:409 #, c-format msgid "%s aborted.\n" msgstr "%s abortado.\n" #: ../src/main.c:420 #, c-format msgid "Usage: %s [options]\n" msgstr "Uso: %s [opcións]\n" #: ../src/main.c:421 msgid "The Window Maker window manager for the X window system" msgstr "O xestor de fiestras Window Maker para o sistema X window" #: ../src/main.c:423 msgid " -display host:dpy\tdisplay to use" msgstr " -display host:dpy\tpantalla a usar" #: ../src/main.c:425 msgid " --no-cpp \t\tdisable preprocessing of configuration files" msgstr "" " --no-cpp \t\tdesactiva-lo preprocesamento dos ficheiros de configuración" #: ../src/main.c:427 msgid " --no-dock\t\tdo not open the application Dock" msgstr " --no-dock\t\tnon usa-la aplicación Dock" #: ../src/main.c:428 msgid " --no-clip\t\tdo not open the workspace Clip" msgstr " --no-clip\t\tnon abri-lo Clip do escritorio" #: ../src/main.c:429 msgid " --no-autolaunch\tdo not autolaunch applications" msgstr " --no-autolaunch\tnon lanzar aplicacións automaticamente" #: ../src/main.c:430 msgid " --dont-restore\tdo not restore saved session" msgstr " --dont-restore\tnon restaura-la sesión gardada" #: ../src/main.c:432 msgid " --locale locale\t\tlocale to use" msgstr " --locale locale\t\tlocale a utilizar" #: ../src/main.c:434 msgid " --visual-id visualid\tvisual id of visual to use" msgstr " --visual-id visualid\tid do visual a usar" #: ../src/main.c:435 msgid " --static\t\tdo not update or save configurations" msgstr " --static\t\tnon actualizar ou gardar configuracións" #: ../src/main.c:437 msgid " --synchronous\t\tturn on synchronous display mode" msgstr " --synchronous\t\tactivar modo de visualización sincronizado" #: ../src/main.c:439 msgid " --version\t\tprint version and exit" msgstr " --version\t\tescribi-la versión e saír" #: ../src/main.c:440 msgid " --help\t\t\tshow this message" msgstr " --help\t\t\tamosar esta mensaxe" #: ../src/main.c:452 #, c-format msgid "" "could not find user GNUstep directory (%s).\n" "Make sure you have installed Window Maker correctly and run wmaker.inst" msgstr "" "non foi posible atopa-lo directorio de usuario de GNUstep (%s).\n" "Asegúrese de que instalou Window Maker correctamente e execute wmaker.inst" #: ../src/main.c:473 ../src/main.c:478 #, c-format msgid "%s:could not execute initialization script" msgstr "%s:non foi posible executa-lo script de inicialización" #: ../src/main.c:498 ../src/main.c:503 #, c-format msgid "%s:could not execute exit script" msgstr "%s:non foi posible executa-lo script de saída" #: ../src/main.c:619 ../src/main.c:626 ../src/main.c:634 ../src/main.c:650 #, c-format msgid "too few arguments for %s" msgstr "poucos argumentos para %s" #: ../src/main.c:638 #, c-format msgid "bad value for visualid: \"%s\"" msgstr "valor erróneo para o visualid: \"%s\"" #: ../src/main.c:658 #, c-format msgid "%s: invalid argument '%s'\n" msgstr "%s: argumento '%s' non válido\n" #: ../src/main.c:659 #, c-format msgid "Try '%s --help' for more information\n" msgstr "Probe '%s --help' para máis información\n" #: ../src/main.c:690 msgid "X server does not support locale" msgstr "o servidor de X non soporta locale" #: ../src/main.c:694 msgid "cannot set locale modifiers" msgstr "non é posible variar os modificadores locale" #: ../src/main.c:710 #, c-format msgid "could not open display \"%s\"" msgstr "non se pode abri-la pantalla \"%s\"" #: ../src/misc.c:71 #, c-format msgid "could not define value for %s for cpp" msgstr "non foi posible defini-lo valor de %s para o cpp" #: ../src/misc.c:101 #, c-format msgid "could not get password entry for UID %i" msgstr "non foi posible obte-la entrada do passwd do UID %i" #: ../src/misc.c:126 #, c-format msgid "your machine is misconfigured. HOSTNAME is set to %s" msgstr "o seu equipo está desconfigurado. HOSTNAME está posto a %s" #: ../src/misc.c:132 #, c-format msgid "your machine is misconfigured. HOST is set to %s" msgstr "o seu equipo está desconfigurado. HOST está posto a %s" #: ../src/misc.c:753 msgid "selection timed-out" msgstr "selección fóra de tempo" #: ../src/misc.c:769 msgid "Program Arguments" msgstr "Argumentos do Programa" #: ../src/misc.c:770 msgid "Enter command arguments:" msgstr "Introduza os argumentos do programa:" #: ../src/misc.c:863 msgid "unable to get dropped data from DND drop" msgstr "non é posible obte-los datos soltados dun DND" #: ../src/misc.c:871 msgid "error getting dropped data from DND drop" msgstr "erro obtendo os datos soltados dun DND" #: ../src/misc.c:877 msgid "out of memory while getting data from DND drop" msgstr "memoria esgotada ó obte-los datos soltados dun DND" #: ../src/misc.c:922 ../src/misc.c:1062 #, c-format msgid "out of memory during expansion of \"%s\"" msgstr "memoria esgotada durante a expansión de \"%s\"" #: ../src/misc.c:976 msgid "out of memory during expansion of \"%w\"" msgstr "memoria esgotada durante a expansión de \"%w\"" #: ../src/misc.c:994 msgid "out of memory during expansion of \"%W\"" msgstr "memoria esgotada durante a expansión de \"%W\"" #: ../src/misc.c:1010 msgid "out of memory during expansion of \"%a\"" msgstr "memoria esgotada durante a expansión de \"%a\"" #: ../src/misc.c:1041 #, c-format msgid "out of memory during expansion of \"%d\"" msgstr "memoria esgotada durante a expansión de \"%d\"" #: ../src/misc.c:1055 msgid "selection not available" msgstr "selección non dispoñible" # %s é "dock" ou "session" (sen traducir) #: ../src/misc.c:1127 ../src/misc.c:1133 #, c-format msgid "bad window name value in %s state info" msgstr "valor do nome de fiestra erróneo na información de estado de \"%s\"" #: ../src/misc.c:1401 msgid "could not send message to background image helper" msgstr "non foi posible envia-la mensaxe ó xestor de imaxes de fondo" #: ../src/pixmap.c:235 #, c-format msgid "could not load mask bitmap file \"%s\". Won't use mask" msgstr "" "non foi posible carga-lo ficheiro de máscara \"%s\". Non se usará mascara" #: ../src/proplist.c:180 msgid "unterminated string" msgstr "cadea sen rematar" #: ../src/proplist.c:247 msgid "unterminated array" msgstr "array sen rematar" #: ../src/proplist.c:256 msgid "missing , in array or unterminated array" msgstr "falta unha , no array, ou array sen rematar" #: ../src/proplist.c:267 msgid "could not get array element" msgstr "non foi posible obte-lo elemento do array" #: ../src/proplist.c:297 msgid "unterminated dictionary" msgstr "diccionario sen rematar" #: ../src/proplist.c:315 msgid "missing dictionary key" msgstr "falta unha clave de diccionario" #: ../src/proplist.c:317 msgid "missing dictionary entry key or unterminated dictionary" msgstr "" "falta a clave nunha entrada de diccionario, ou diccionario non rematado" #: ../src/proplist.c:323 msgid "error arsing dictionary key" msgstr "erro analizando a clave de diccionario" #: ../src/proplist.c:332 msgid "missing = in dictionary entry" msgstr "falta un = na entrada de diccionario" #: ../src/proplist.c:351 msgid "missing ; in dictionary entry" msgstr "falta un ; na entrada de diccionario" #: ../src/proplist.c:432 msgid "" "was expecting a string, dictionary, data or array. If it's a string, try " "enclosing it with \"." msgstr "" "agardábase unha cadea, diccionario, datos ou array. Se é unha cadea, probe " "a poñela entre \"." #: ../src/proplist.c:434 msgid "Comments are not allowed inside WindowMaker owned domain files." msgstr "" "Non se permiten os comentarios nos ficheiros de dominio do WindowMaker." #: ../src/proplist.c:453 #, c-format msgid "could not open domain file %s" msgstr "non foi posible abri-lo ficheiro de dominio %s" #: ../src/proplist.c:466 msgid "extra data after end of file" msgstr "datos de máis trala fin do ficheiro" #: ../src/resources.c:44 #, c-format msgid "could not parse color \"%s\"" msgstr "non foi posible analiza-la cor \"%s\"" #: ../src/resources.c:48 #, c-format msgid "could not allocate color \"%s\"" msgstr "non foi posible asigna-la cor \"%s\"" #: ../src/rootmenu.c:186 ../src/rootmenu.c:188 msgid "Exit" msgstr "Saír" #: ../src/rootmenu.c:187 msgid "Exit window manager?" msgstr "¿Saír do xestor de fiestras?" #: ../src/rootmenu.c:223 msgid "Close X session" msgstr "Pecha-la sesión X" #: ../src/rootmenu.c:224 msgid "" "Close Window System session?\n" "Kill might close applications with unsaved data." msgstr "" "¿Pecha-la sesión do Sistema de Fiestras?\n" "Isto podería pecha-las aplicacións con datos sen gardar." #. #. entry = wMenuAddCallback(menu, _("Select Shortcut"), NULL, NULL); #. wMenuEntrySetCascade(menu, entry, makeMakeShortcutMenu(scr)); #. #: ../src/rootmenu.c:226 ../src/winmenu.c:509 msgid "Close" msgstr "Pechar" #: ../src/rootmenu.c:237 msgid "Kill X session" msgstr "Pecha-la sesión X" #: ../src/rootmenu.c:238 msgid "" "Kill Window System session?\n" "(all applications will be closed)" msgstr "" "¿Mata-la sesión do Sistema de Fiestras?\n" "(tódalas aplicacións serán pechadas)" #: ../src/rootmenu.c:505 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\" for entry %s" msgstr "%s:especificación \"%s\" de atallo de teclado non válida na entrada %s" #: ../src/rootmenu.c:513 #, c-format msgid "%s:invalid key in shortcut \"%s\" for entry %s" msgstr "%s:tecla inválida no atallo \"%s\" na entrada %s" #: ../src/rootmenu.c:566 #, c-format msgid "%s: unmatched '\"' in menu file" msgstr "%s: '\"' desparelladas no ficheiro de menú" #: ../src/rootmenu.c:616 #, c-format msgid "%s: missing command" msgstr "%s: falta o comando" #: ../src/rootmenu.c:648 #, c-format msgid "invalid OPEN_MENU specification: %s" msgstr "especificación OPEN_MENU inválida: %s" #: ../src/rootmenu.c:696 #, c-format msgid "%s:could not stat menu" msgstr "%s:non foi posible facer stat do menú" #: ../src/rootmenu.c:704 #, c-format msgid "%s:could not stat menu:%s" msgstr "%s:non foi posible facer stat do menú:%s" #: ../src/rootmenu.c:722 #, c-format msgid "too many parameters in OPEN_MENU: %s" msgstr "demasiados parámetros en OPEN_MENU: %s" #: ../src/rootmenu.c:758 msgid "" "There are more than one WORKSPACE_MENU commands in the applications menu. " "Only one is allowed." msgstr "" "Hai máis dun comando WORKSPACE_MENU no menú de aplicacións. Só se permite un." #: ../src/rootmenu.c:787 ../src/rootmenu.c:805 ../src/rootmenu.c:815 #, c-format msgid "%s:missing parameter for menu command \"%s\"" msgstr "%s:falta algún parámetro no comando de menú \"%s\"" #: ../src/rootmenu.c:879 #, c-format msgid "%s:unknown command \"%s\" in menu config." msgstr "%s:comando \"%s\" descoñecido na configuración do menú." #: ../src/rootmenu.c:887 #, c-format msgid "%s:can't add shortcut for entry \"%s\"" msgstr "%s:non se pode engadi-lo atallo para a entrada \"%s\"" #: ../src/rootmenu.c:1024 #, c-format msgid "%s:maximal line size exceeded in menu config: %s" msgstr "%s:excedeuse o tamaño máximo de liña na configuración do menú: %s" #: ../src/rootmenu.c:1046 ../src/rootmenu.c:1138 ../src/rootmenu.c:1239 #, c-format msgid "%s:missing command in menu config: %s" msgstr "%s:falta o comando na configuración do menú: %s" #: ../src/rootmenu.c:1076 #, c-format msgid "%s:syntax error in menu file:END declaration missing" msgstr "%s:erro de sintaxe no ficheiro de menú: Declaración END omitida" #: ../src/rootmenu.c:1105 ../src/rootmenu.c:1204 msgid "could not make arguments for menu file preprocessor" msgstr "" "non foi posible crea-los argumentos para o preprocesador de ficheiros de menú" #: ../src/rootmenu.c:1111 ../src/rootmenu.c:1211 #, c-format msgid "%s:could not open/preprocess menu file" msgstr "%s:non foi posible abrir/preprocesar ficheiro de menú" #: ../src/rootmenu.c:1123 ../src/rootmenu.c:1224 #, c-format msgid "could not open menu file \"%s\": %s" msgstr "non foi posible abri-lo ficheiro de menú \"%s\": %s" #: ../src/rootmenu.c:1150 #, c-format msgid "%s:invalid menu file. MENU command is missing" msgstr "%s:ficheiro de menú inválido. Falla o comando MENU" #: ../src/rootmenu.c:1159 msgid "error reading preprocessed menu data" msgstr "erro lendo os datos de menú preprocesados" #: ../src/rootmenu.c:1251 #, c-format msgid "%s:no title given for the root menu" msgstr "%s:non se indicou ningún título para a fiestra raíz" #: ../src/rootmenu.c:1341 ../src/rootmenu.c:1416 ../src/rootmenu.c:1459 #, c-format msgid "out of memory while constructing directory menu %s" msgstr "memoria esgotada ó construí-lo menú do directorio %s" #: ../src/rootmenu.c:1351 #, c-format msgid "%s:could not stat file \"%s\" in menu directory" msgstr "%s:non foi posible facer stat do ficheiro \"%s\" no directorio de menú" #: ../src/rootmenu.c:1513 msgid "Commands" msgstr "Comandos" #: ../src/rootmenu.c:1516 msgid "Restart" msgstr "Reiniciar" #: ../src/rootmenu.c:1517 msgid "Exit..." msgstr "Saír..." #: ../src/rootmenu.c:1562 #, c-format msgid "could not find menu file \"%s\" referenced in WMRootMenu" msgstr "non se atopou o ficheiro de menú \"%s\" referido en WMRootMenu" #: ../src/rootmenu.c:1569 #, c-format msgid "could not access menu \"%s\" referenced in WMRootMenu" msgstr "non foi posible acceder ó menú \"%s\" referido en WMRootMenu" #: ../src/rootmenu.c:1580 #, c-format msgid "" "using default menu file \"%s\" as the menu referenced in WMRootMenu could " "not be found " msgstr "" "usando o ficheiro de menú por defecto \"%s\" xa que o referido en WMRootMenu " "non se atopou " #: ../src/rootmenu.c:1603 ../src/rootmenu.c:1679 #, c-format msgid "%s:format error in root menu configuration \"%s\"" msgstr "%s:erro de formato na configuración do menú raíz \"%s\"" #: ../src/rootmenu.c:1766 msgid "" "The applications menu could not be loaded. Look at the console output for a " "detailed description of the errors." msgstr "" "Non foi posible carga-lo menú de aplicacións. Mire a saída da consola para " "unha descrición detallada dos erros." #: ../src/screen.c:460 #, c-format msgid "could not load logo image for panels: %s" msgstr "non foi posible carga-la imaxe do logo para os paneis: %s" #: ../src/screen.c:464 #, c-format msgid "error making logo image for panel:%s" msgstr "erro creando a imaxe do logo para o panel:%s" #: ../src/screen.c:745 #, c-format msgid "could not initialize graphics library context: %s" msgstr "non foi posible inicializa-lo contexto da biblioteca gráfica: %s" #: ../src/screen.c:776 msgid "could not do initialization of WINGs widget set" msgstr "non foi posible inicializa-lo conxunto de widgets WINGs" #: ../src/screen.c:1128 #, c-format msgid "could not save session state in %s" msgstr "non foi posible garda-lo estado da sesión en %s" #: ../src/session.c:183 ../src/wdefaults.c:583 ../src/winspector.c:447 #, c-format msgid "can't convert \"%s\" to boolean" msgstr "non se pode converter \"%s\" a booleano" #: ../src/session.c:1023 msgid "out of memory while saving session state" msgstr "memoria esgotada ó garda-lo estado da sesión" #: ../src/session.c:1114 msgid "end of memory while saving session state" msgstr "memoria esgotada ó garda-lo estado da sesión" #. 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:1248 msgid "connection to the session manager was lost" msgstr "perdeuse a conexión ó xestor de sesión" #: ../src/stacking.c:73 msgid "could not get window list!!" msgstr "¡¡non foi posible obte-la lista de fiestras!!" #: ../src/startup.c:197 #, c-format msgid "internal X error: %s\n" msgstr "erro interno das X: %s\n" #: ../src/startup.c:262 #, c-format msgid "got signal %i (%s) - restarting\n" msgstr "recibiuse o sinal %i (%s) - reiniciando\n" #: ../src/startup.c:264 #, c-format msgid "got signal %i - restarting\n" msgstr "recibiuse o sinal %i - reiniciando\n" #: ../src/startup.c:278 #, c-format msgid "got signal %i (%s) - exiting...\n" msgstr "recibiuse o sinal %i (%s) - saíndo...\n" #: ../src/startup.c:280 #, c-format msgid "got signal %i - exiting...\n" msgstr "recibiuse o sinal %i - saíndo...\n" #: ../src/startup.c:293 #, c-format msgid "got signal %i (%s)\n" msgstr "recibiuse o sinal %i (%s)\n" #: ../src/startup.c:295 #, c-format msgid "got signal %i\n" msgstr "recibiuse o sinal %i\n" #: ../src/startup.c:306 msgid "" "crashed while trying to do some post-crash cleanup. Aborting immediatelly." msgstr "" "erro grave ó tentar facer limpeza despois dun crash. Abortando " "inmediatamente." #. we try to restart Window Maker #: ../src/startup.c:340 msgid "trying to restart Window Maker..." msgstr "tentando reiniciar o Window Maker..." #: ../src/startup.c:345 msgid "trying to start alternate window manager..." msgstr "tentando iniciar outro xestor de fiestras..." #: ../src/startup.c:350 msgid "failed to start alternate window manager. Aborting." msgstr "fallou o inicio dun xestor de fiestras alternativo. Abortando." #: ../src/startup.c:352 msgid "" "a fatal error has occured, probably due to a bug. Please fill the included " "BUGFORM and report it." msgstr "" "ocorreu un erro moi grave, probablemente por mor dun erro de programación. " "Por favor, encha a BUGFORM incluída (en inglés) e infórmeo." #: ../src/startup.c:830 #, c-format msgid "icon size is configured to %i, but it's too small. Using 16, instead\n" msgstr "" "o tamaño da icona está configuraco a %i, pero é pequeno de máis. Usando 16 " "no seu lugar\n" #: ../src/startup.c:858 msgid "XKB is not supported. KbdModeLock is automatically disabled." msgstr "non se soporta XKB. KbdModeLock está desactivado automaticamente." #: ../src/startup.c:877 msgid "it seems that there is already a window manager running" msgstr "semella que xa hai un xestor de fiestras a se executar" #: ../src/startup.c:883 #, c-format msgid "could not manage screen %i" msgstr "non foi posible xestiona-la pantalla %i" #: ../src/startup.c:944 msgid "could not manage any screen" msgstr "non foi posible xestionar ningunha pantalla" #: ../src/switchmenu.c:114 msgid "Windows" msgstr "Fiestras" #: ../src/texture.c:290 ../src/texture.c:334 #, c-format msgid "image file \"%s\" used as texture could not be found." msgstr "non se atopou o ficheiro de imaxe \"%s\" usado como textura." #: ../src/texture.c:296 ../src/texture.c:340 #, c-format msgid "could not load texture pixmap \"%s\":%s" msgstr "non foi posible carga-lo pixmap de textura \"%s\":%s" #: ../src/texture.c:400 #, c-format msgid "library \"%s\" cound not be opened." msgstr "non foi posible abri-la biblioteca \"%s\"." #: ../src/texture.c:409 #, c-format msgid "function \"%s\" not found in library \"%s\"" msgstr "non se atopou a función \"%s\" na biblioteca \"%s\"" #: ../src/texture.c:416 msgid "function textures not supported on this system, sorry." msgstr "as texturas non están soportadas neste sistema." #: ../src/wdefaults.c:429 #, c-format msgid "could not find icon file \"%s\"" msgstr "non foi posible atopa-lo ficheiro de icona \"%s\"" #: ../src/window.c:2715 ../src/window.c:2849 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 "" "semella que a tecla BloqNum, BloqDespr ou outra similar está activada.\n" "Desactívea ou algunhas accións do rato e atallos de teclado non funcionarán." #: ../src/winmenu.c:126 msgid "" "This will kill the application.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" "Isto matará a aplicación.\n" "Perderanse tódolos cambios non gardados.\n" "Confírmeo." #: ../src/winmenu.c:275 ../src/winmenu.c:283 msgid "Set Shortcut" msgstr "Definir Atallo" #: ../src/winmenu.c:361 ../src/winmenu.c:407 msgid "could not create submenu for window menu" msgstr "non foi posible crear un submenú para o menú de fiestra" #: ../src/winmenu.c:411 msgid "Keep on top" msgstr "Manter por riba" #: ../src/winmenu.c:416 msgid "Keep at bottom" msgstr "Manter embaixo" #. #. * 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:444 ../src/winmenu.c:579 msgid "Maximize" msgstr "Maximizar" #: ../src/winmenu.c:452 ../src/winmenu.c:565 msgid "Miniaturize" msgstr "Miniaturizar" #: ../src/winmenu.c:461 ../src/winmenu.c:596 msgid "Shade" msgstr "Enrolar" #: ../src/winmenu.c:477 msgid "Resize/Move" msgstr "Redimensionar/Mover" #: ../src/winmenu.c:485 msgid "Select" msgstr "Seleccionar" #: ../src/winmenu.c:493 msgid "Move To" msgstr "Mover Para" #: ../src/winmenu.c:498 msgid "Attributes..." msgstr "Atributos..." #: ../src/winmenu.c:500 msgid "Options" msgstr "Opcións" #: ../src/winmenu.c:560 msgid "Deminiaturize" msgstr "Desminiaturizar" #: ../src/winmenu.c:574 msgid "Unmaximize" msgstr "Desmaximizar" #: ../src/winmenu.c:591 msgid "Unshade" msgstr "Desenrolar" #: ../src/winspector.c:381 #, c-format msgid "Could not find icon \"%s\" specified for this window" msgstr "Non se atopou a icona \"%s\" especificada para esta fiestra" #: ../src/winspector.c:397 #, c-format msgid "Could not open specified icon \"%s\":%s" msgstr "Non se atopou a icona \"%s\" especificada:%s" #: ../src/winspector.c:1221 msgid "Save" msgstr "Gardar" #: ../src/winspector.c:1229 msgid "Apply" msgstr "Aplicar" #: ../src/winspector.c:1235 msgid "Reload" msgstr "Recargar" #: ../src/winspector.c:1244 ../src/winspector.c:1254 msgid "Window Specification" msgstr "Especificación de Fiestra" #: ../src/winspector.c:1245 msgid "Window Attributes" msgstr "Atributos da Fiestra" #: ../src/winspector.c:1246 msgid "Advanced Options" msgstr "Opcións Avanzadas" #: ../src/winspector.c:1247 msgid "Icon and Initial Workspace" msgstr "Icona e Área de Traballo Inicial" #: ../src/winspector.c:1248 msgid "Application Specific" msgstr "Específico de Aplicación" #: ../src/winspector.c:1262 msgid "Defaults for all windows" msgstr "Predeterminados para tódalas fiestras" #: ../src/winspector.c:1316 msgid "Select Window" msgstr "Seleccionar Fiestra" #: ../src/winspector.c:1329 msgid "Attributes" msgstr "Atributos" #: ../src/winspector.c:1340 msgid "Disable Titlebar" msgstr "Desactivar Barra de Título" #: ../src/winspector.c:1342 msgid "" "Remove the titlebar of this window.\n" "To access the window commands menu of a window\n" "without it's titlebar, press Control+Esc (or the\n" "equivalent shortcut, if you changed the default\n" "settings)." msgstr "" "Eliminar a barra de título desta fiestra.\n" "Para acceder ó menú de comandos dunha fiestra sen\n" "a barra de título, prema Control+Esc (ou o atallo\n" "equivalente, se mudou as opcións por omisión)." #: ../src/winspector.c:1349 msgid "Disable Resizebar" msgstr "Desactivar Barra de Redimensionamento" #: ../src/winspector.c:1351 msgid "Remove the resizebar of this window." msgstr "Eliminar a barra de redimensionamento desta fiestra." #: ../src/winspector.c:1354 msgid "Disable Close Button" msgstr "Desactivar o Botón de Pechar" #: ../src/winspector.c:1356 msgid "Remove the `close window' button of this window." msgstr "Quitar o botón de `pechar fiestra' desta fiestra." #: ../src/winspector.c:1359 msgid "Disable Miniaturize Button" msgstr "Desactivar o Botón de Miniaturizar" #: ../src/winspector.c:1361 msgid "Remove the `miniaturize window' button of the window." msgstr "Quitar o botón de `miniaturizar fiestra' da fiestra." #: ../src/winspector.c:1364 msgid "Disable Border" msgstr "Desactivar Bordo" #: ../src/winspector.c:1366 msgid "Remove the 1 pixel black border around the window." msgstr "Quitar o bordo negro de 1 punto arredor da fiestra." #: ../src/winspector.c:1369 msgid "Keep on Top / Floating" msgstr "Manter por Riba / Flotando" #: ../src/winspector.c:1371 msgid "" "Keep the window over other windows, not allowing\n" "them to cover it." msgstr "" "Manter a fiestra por riba das outras, non deixando\n" "que a cubran." #: ../src/winspector.c:1375 msgid "Keep at Bottom / Sunken" msgstr "Manter Embaixo / Afundida" #: ../src/winspector.c:1377 msgid "Keep the window under all other windows." msgstr "Manter a fiestra baixo as outras." #: ../src/winspector.c:1382 msgid "Make window occupy all workspaces." msgstr "Facer que a fiestra ocupe tódalas áreas de traballo." #: ../src/winspector.c:1385 msgid "Start Miniaturized" msgstr "Iniciar Miniaturizada" #: ../src/winspector.c:1387 msgid "" "Make the window be automatically miniaturized when it's\n" "first shown." msgstr "" "Facer que a fiestra sexa miniaturizada automaticamente\n" "ó amosala por primeira vez." #: ../src/winspector.c:1391 msgid "Start Maximized" msgstr "Iniciar Maximizada" #: ../src/winspector.c:1393 msgid "" "Make the window be automatically maximized when it's\n" "first shown." msgstr "" "Facer que a fiestra sexa maximizada automaticamente\n" "ó amosala por primeira vez." #: ../src/winspector.c:1397 msgid "Skip Window List" msgstr "Ignorar Lista de Fiestras" #: ../src/winspector.c:1399 msgid "Do not list the window in the window list menu." msgstr "Non lista-la fiestra no menú de lista de fiestras." #: ../src/winspector.c:1414 msgid "Advanced" msgstr "Avanzado" #: ../src/winspector.c:1431 msgid "Ignore HideOthers" msgstr "Ignorar HideOthers" #: ../src/winspector.c:1433 msgid "" "Do not hide the window when issuing the\n" "`HideOthers' command." msgstr "" "Non agocha-la fiestra cando se emita o\n" "comando `HideOthers'." #: ../src/winspector.c:1437 msgid "Don't Bind Keyboard Shortcuts" msgstr "Desactivar Atallos de Teclado" #: ../src/winspector.c:1439 msgid "" "Do not bind keyboard shortcuts from Window Maker\n" "when this window is focused. This will allow the\n" "window to receive all key combinations regardless\n" "of your shortcut configuration." msgstr "" "Desactivar os atallos de teclado do Window Maker\n" "cando esta fiestra estea enfocada. Isto permitirá\n" "que a fiestra reciba tódalas combinacións de teclas\n" "independentemente da configuración dos atallos." #: ../src/winspector.c:1445 msgid "Don't Bind Mouse Clicks" msgstr "Desactivar Clics do Rato" #: ../src/winspector.c:1447 msgid "" "Do not bind mouse actions, such as `Alt'+drag\n" "in the window (when Alt is the modifier you have\n" "configured)." msgstr "" "Desactivar as accións do rato, como `Alt'+arrastrar\n" "na fiestra (cando Alt é o modificador que configurou)." #: ../src/winspector.c:1452 msgid "Keep Inside Screen" msgstr "Manter dentro da Pantalla" #: ../src/winspector.c:1454 msgid "" "Do not allow the window to move itself completely\n" "outside the screen. For bug compatibility.\n" msgstr "" "Non permitir que a fiestra se mova completamente\n" "fóra da pantalla. Para compatibilidade con erros.\n" #: ../src/winspector.c:1458 msgid "Don't Let It Take Focus" msgstr "Non deixar que colla o Foco" #: ../src/winspector.c:1460 msgid "" "Do not let the window take keyboard focus when you\n" "click on it." msgstr "" "Non deixar que a fiestra colla o foco do teclado ó\n" "premer nela." #: ../src/winspector.c:1464 msgid "Don't Save Session" msgstr "Non Gardar Sesión" #: ../src/winspector.c:1466 msgid "" "Do not save the associated application in the\n" "session's state, so that it won't be restarted\n" "together with other applications when Window Maker\n" "starts." msgstr "" "Non garda-la aplicación asociada no estado da\n" "sesión, de xeito que non se execute canda as\n" "outras aplicacións ó iniciar o Window Maker." #: ../src/winspector.c:1472 msgid "Emulate Application Icon" msgstr "Emular Icona da Aplicación" #: ../src/winspector.c:1474 msgid "" "Make this window act as an application that provides\n" "enough information to Window Maker for a dockable\n" "application icon to be created." msgstr "" "Facer que esta fiestra actúe como unha aplicación que\n" "fornece a información suficiente para que o Window Maker\n" "poida crear unha icona de aplicación no dock." #: ../src/winspector.c:1479 msgid "Full Screen Maximization" msgstr "Maximización en Pantalla Completa" #: ../src/winspector.c:1481 msgid "" "Make the window use the whole screen space when it's\n" "maximized. The titlebar and resizebar will be moved\n" "to outside the screen." msgstr "" "Facer que a fiestra use todo o espacio da pantalla ó\n" "maximizala. A barra do título e a de redimensionamento\n" "irán para fóra da pantalla." #: ../src/winspector.c:1487 msgid "Disable Language Button" msgstr "Desactivar Botón de Lingua" #: ../src/winspector.c:1489 msgid "Remove the `toggle language' button of the window." msgstr "Quitar da fiestra o botón de `trocar lingua'." #: ../src/winspector.c:1506 msgid "Miniwindow Image" msgstr "Imaxe para a Fiestra Minimizada" #: ../src/winspector.c:1525 msgid "Update" msgstr "Actualizar" #: ../src/winspector.c:1540 msgid "Icon File Name:" msgstr "Nome do Ficheiro da Icona:" #: ../src/winspector.c:1552 msgid "Ignore client supplied icon" msgstr "Ignora-la icona fornecida polo cliente" #: ../src/winspector.c:1559 msgid "Initial Workspace" msgstr "Area de Traballo Inicial" #: ../src/winspector.c:1561 msgid "The workspace to place the window when it's first shown." msgstr "" "A área de traballo na que coloca-la fiestra ó amosala por primeira vez." #: ../src/winspector.c:1567 msgid "Nowhere in particular" msgstr "Ningures en particular" #: ../src/winspector.c:1585 msgid "Application Wide" msgstr "Para a Aplicación" #: ../src/winspector.c:1596 msgid "Start Hidden" msgstr "Iniciar Agochada" #: ../src/winspector.c:1598 msgid "Automatically hide application when it's started." msgstr "Agochar automaticamente a aplicación cando se inicie." #: ../src/winspector.c:1601 msgid "No Application Icon" msgstr "Sen Icona de Aplicación" #: ../src/winspector.c:1603 msgid "" "Disable the application icon for the application.\n" "Note that you won't be able to dock it anymore,\n" "and any icons that are already docked will stop\n" "working correctly." msgstr "" "Desactiva-la icona de aplicación. Teña en conta\n" "que xa non poderá poñela no dock, e que as iconas\n" "que xa estean no dock deixarán de funcionar\n" "correctamente." #: ../src/workspace.c:110 ../src/workspace.c:111 ../src/workspace.c:806 #, c-format msgid "Workspace %i" msgstr "Área de Traballo %i" #: ../src/workspace.c:863 msgid "Workspaces" msgstr "Areas de Traballo" #: ../src/workspace.c:865 msgid "could not create Workspace menu" msgstr "non foi posible crear o menu da Área de Traballo" #: ../src/workspace.c:872 msgid "New" msgstr "Nova" #: ../src/workspace.c:873 msgid "Destroy Last" msgstr "Destruír Derradeira" #: ../src/xutil.c:228 msgid "invalid data in selection" msgstr "datos non válidos na selección" WindowMaker-0.95.9/po/ko.po0000644000175000017500000016412313431646201012364 00000000000000# Window Maker po file for korean. # Copyright (C) 1998 Free Software Foundation, Inc. # Byeong-Chan Kim , 1999. # Update: CHOI Junho , 1998/12. # Update: Lee, Seong-Gu , 2013/08 # msgid "" msgstr "" "Project-Id-Version: 0.61.1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-07-12 13:02+0900\n" "PO-Revision-Date: 2013-08-12 23:57+0900\n" "Last-Translator: \n" "Language-Team: Korean\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 1.5.4\n" #: ../src/appicon.c:541 ../src/dialog.c:579 ../src/dock.c:3347 #: ../src/dockedapp.c:170 ../src/main.c:344 ../src/rootmenu.c:1645 #: ../src/winspector.c:341 ../src/winspector.c:357 msgid "Error" msgstr "오류" #: ../src/appicon.c:542 msgid "Could not open specified icon file" msgstr "지정한 아이콘을 열지 못함." #: ../src/appicon.c:542 ../src/dialog.c:421 ../src/dialog.c:482 #: ../src/dialog.c:579 ../src/dialog.c:984 ../src/dialog.c:1622 #: ../src/dock.c:452 ../src/dock.c:459 ../src/dock.c:503 ../src/dock.c:598 #: ../src/dock.c:612 ../src/dock.c:3347 ../src/dock.c:4422 #: ../src/dockedapp.c:171 ../src/dockedapp.c:343 ../src/main.c:344 #: ../src/rootmenu.c:1648 ../src/winspector.c:341 ../src/winspector.c:357 #: ../src/winspector.c:753 msgid "OK" msgstr "확인" #: ../src/appicon.c:572 ../src/dock.c:232 msgid "" " will be forcibly closed.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" "을 강제 종료합니다.\n" "저장하지 않은 변경 사항은 잃게 됩니다.\n" "계속 합니까?" #: ../src/appicon.c:579 ../src/dock.c:250 ../src/winmenu.c:123 msgid "Kill Application" msgstr "응용프로그램을 강제 종료" #: ../src/appicon.c:580 ../src/dock.c:251 ../src/winmenu.c:126 msgid "Yes" msgstr "예" #: ../src/appicon.c:580 ../src/dock.c:251 ../src/winmenu.c:126 msgid "No" msgstr "아니오" #: ../src/appicon.c:605 ../src/dock.c:1262 ../src/dock.c:3528 msgid "Unhide Here" msgstr "숨긴 것 이곳에 보임" #: ../src/appicon.c:606 ../src/appicon.c:630 ../src/dock.c:1264 #: ../src/dock.c:1266 ../src/dock.c:3540 ../src/winmenu.c:433 msgid "Hide" msgstr "숨김" #. #. entry = wMenuAddCallback(menu, _("Select Shortcut"), NULL, NULL); #. wMenuEntrySetCascade(menu, entry, makeMakeShortcutMenu(scr)); #. #: ../src/appicon.c:607 ../src/dock.c:1260 ../src/winmenu.c:457 msgid "Launch" msgstr "실행" #: ../src/appicon.c:608 msgid "Set Icon..." msgstr "아이콘 지정..." #: ../src/appicon.c:609 ../src/dock.c:1270 ../src/dock.c:1272 #: ../src/dock.c:3558 ../src/rootmenu.c:236 ../src/winmenu.c:463 msgid "Kill" msgstr "강제 종료" #: ../src/appicon.c:628 ../src/dock.c:3538 msgid "Unhide" msgstr "숨김 해제" #: ../src/defaults.c:814 #, c-format msgid "Domain %s (%s) of global defaults database is corrupted!" msgstr "전역 기본 데이터베이스의 도메인 %s (%s)는 깨졌습니다!" #: ../src/defaults.c:818 #, c-format msgid "could not load domain %s from global defaults database" msgstr "전역 기본 데이터베이스에서 도메인 %s를 읽을 수 없습니다" #: ../src/defaults.c:863 ../src/defaults.c:877 #, c-format msgid "invalid global menu file %s" msgstr "잘못된 전역 메뉴 파일 %s" #: ../src/defaults.c:914 ../src/defaults.c:990 ../src/defaults.c:1029 #: ../src/defaults.c:1070 #, c-format msgid "Domain %s (%s) of defaults database is corrupted!" msgstr "기본 데이터베이스의 도메인 %s (%s)이 깨졌습니다!" #: ../src/defaults.c:918 ../src/defaults.c:1012 ../src/defaults.c:1056 #: ../src/defaults.c:1080 #, c-format msgid "could not load domain %s from user defaults database" msgstr "사용자 기본 데이터베이스에서 도메인 %s를 읽을 수 없습니다" #. --------------------------- Local ----------------------- #: ../src/defaults.c:1248 ../src/defaults.c:1371 ../src/defaults.c:1457 #: ../src/defaults.c:1862 ../src/defaults.c:1878 ../src/defaults.c:1919 #: ../src/defaults.c:1964 ../src/defaults.c:2371 ../src/wdefaults.c:638 #: ../src/wdefaults.c:667 #, c-format msgid "Wrong option format for key \"%s\". Should be %s." msgstr "\"%s\" 키의 옵션 형식이 잘못됨. %s이어야 합니다." #: ../src/defaults.c:1250 ../src/defaults.c:1323 ../src/defaults.c:1348 #: ../src/defaults.c:1375 ../src/defaults.c:1387 ../src/defaults.c:1401 #: ../src/defaults.c:1415 ../src/defaults.c:1461 ../src/defaults.c:1473 #: ../src/defaults.c:1866 ../src/defaults.c:1883 ../src/defaults.c:1895 #: ../src/defaults.c:1924 ../src/defaults.c:1940 ../src/defaults.c:1969 #: ../src/defaults.c:2048 ../src/defaults.c:2376 ../src/defaults.c:2387 #, c-format msgid "using default \"%s\" instead" msgstr "기본값인 \"%s\"를 대신 사용함" #: ../src/defaults.c:1277 #, c-format msgid "wrong option value for key \"%s\"; got \"%s\", should be one of %s." msgstr "" "키 \"%s\"의 옵션 값이 잘못됨; \"%s\"를 받았지만, \"%s\" 중 하나이어야 합니다." #: ../src/defaults.c:1319 #, c-format msgid "can't convert \"%s\" to boolean for key \"%s\"" msgstr "\"%s\"를 키 \"%s\"에 대해 부울 값으로 변환할 수 없습니다" #: ../src/defaults.c:1346 #, c-format msgid "can't convert \"%s\" to integer for key \"%s\"" msgstr "\"%s\"를 키 \"%s\"에 대해 정수값으로 변환할 수 없습니다" #: ../src/defaults.c:1383 #, c-format msgid "Incorrect number of elements in array for key \"%s\"." msgstr "키 \"%s\"에 대한 배열의 원소 수가 잘못되었습니다." #: ../src/defaults.c:1397 #, c-format msgid "Wrong value for key \"%s\". Should be Coordinate." msgstr "\"%s\" 키 값이 잘못됨. 좌표가 되어야 합니다." #: ../src/defaults.c:1411 #, c-format msgid "can't convert array to integers for \"%s\"." msgstr "\"%s\"에 대해 배열을 정수값으로 변환할 수 없음." #: ../src/defaults.c:1576 ../src/defaults.c:1606 ../src/defaults.c:1622 #: ../src/defaults.c:1651 ../src/defaults.c:1673 ../src/defaults.c:1724 #: ../src/defaults.c:1763 ../src/defaults.c:1800 ../src/defaults.c:1816 #, c-format msgid "\"%s\" is not a valid color name" msgstr "\"%s\"는 올바른 색깔 이름이 아님" #: ../src/defaults.c:1588 ../src/defaults.c:1639 msgid "bad number of arguments in gradient specification" msgstr "그래디언트 지정에 인수의 갯수가 잘못되었습니다" #: ../src/defaults.c:1697 msgid "too few arguments in multicolor gradient specification" msgstr "다중색 그래디언트 지정에 인수의 갯수가 너무 적습니다" #: ../src/defaults.c:1789 msgid "bad number of arguments in textured gradient specification" msgstr "텍스쳐 그래디언트 지정에 인수의 갯수가 잘못되었습니다" #: ../src/defaults.c:1832 #, c-format msgid "bad opacity value for tgradient texture \"%s\". Should be [0..255]" msgstr "" "tgradient 텍스처 \"%s\"에 잘못된 불투명도 값이 있습니다. [0..255]여야 합니다." #: ../src/defaults.c:1849 #, c-format msgid "invalid texture type %s" msgstr "잘못된 텍스처 유형 %s" #: ../src/defaults.c:1891 #, 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:1982 #, c-format msgid "Wrong type for background of workspace %i. Should be a texture." msgstr "작업공간 배경 종류가 잘못되었습니다 %i. 텍스처여야 합니다." #: ../src/defaults.c:2021 msgid "could not load any usable font!!!" msgstr "사용 가능한 글꼴을 읽을 수 없습니다!!!" #: ../src/defaults.c:2044 #, c-format msgid "could not get color for key \"%s\"" msgstr "키 \"%s\"의 색을 얻을 수 없음" #: ../src/defaults.c:2096 ../src/rootmenu.c:445 #, c-format msgid "%s: invalid key modifier \"%s\"" msgstr "%s: 잘못된 키 수정자 \"%s\"" #: ../src/defaults.c:2108 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\"" msgstr "%s:잘못된 키보드 단축키 지정 \"%s\"" #: ../src/defaults.c:2114 #, c-format msgid "%s:invalid key in shortcut \"%s\"" msgstr "%s:빨리가기 \"%s\"에 잘못된 키" #: ../src/defaults.c:2136 #, c-format msgid "%s: modifier key %s is not valid" msgstr "%s: 잘못된 수정자 키 %s" #: ../src/defaults.c:2243 #, c-format msgid "failed to open bitmap file \"%s\"" msgstr "비트맵 파일 \"%s\"를 열 수 없습니다" #: ../src/defaults.c:2246 #, c-format msgid "\"%s\" is not a valid bitmap file" msgstr "\"%s\"는 올바른 비트맵 파일이 아님" #: ../src/defaults.c:2249 #, c-format msgid "out of memory reading bitmap file \"%s\"" msgstr "비트맵 파일 \"%s\" 읽는 중 메모리 부족" #: ../src/defaults.c:2287 ../src/defaults.c:2320 msgid "bad number of arguments in cursor specification" msgstr "커서 지정에 인수의 개수가 잘못되었습니다" #: ../src/defaults.c:2303 #, c-format msgid "unknown builtin cursor name \"%s\"" msgstr "알 수 없는 내장 커서 이름 \"%s\"" #: ../src/defaults.c:2330 ../src/defaults.c:2342 #, c-format msgid "could not find cursor bitmap file \"%s\"" msgstr "커서 비트맵 파일 \"%s\"을 찾지 못했습니다" #: ../src/defaults.c:2383 #, c-format msgid "Error in cursor specification for key \"%s\"" msgstr "키 \"%s\"에 대한 커서 지정 오류가 있습니다" #: ../src/defaults.c:2474 msgid "could not render texture for icon background" msgstr "아이콘 배경의 텍스처를 그릴 수 없습니다" #: ../src/defaults.c:3082 ../src/defaults.c:3151 #, c-format msgid "Invalid arguments for option \"%s\"" msgstr "옵션 \"%s\" 에 잘못된 인자" #: ../src/defaults.c:3088 ../src/defaults.c:3157 #, c-format msgid "Could not find image \"%s\" for option \"%s\"" msgstr "다음 옵션으로 이미지 \"%s\" 를 찾지 못했습니다: \"%s\"" #: ../src/defaults.c:3093 ../src/defaults.c:3165 #, c-format msgid "Could not load image \"%s\" for option \"%s\"" msgstr "다음 옵션으로 이미지 \"%s\" 를 읽지 못했습니다: \"%s\"" #: ../src/defaults.c:3103 msgid "Invalid split sizes for switch panel back image." msgstr "스위치패널 배경 이미지에 맞지 않는 크기" #: ../src/defaults.c:3172 #, c-format msgid "Invalid number of arguments for option \"%s\"" msgstr "옵션 \"%s\"에 대한 인자의 개수가 잘못되었습니다" #: ../src/defaults.c:3188 #, c-format msgid "Value for option \"%s\" must be an array of 7 strings" msgstr "옵션 값 \"%s\" 은 7글자이어야 합니다" #: ../src/defaults.c:3202 #, c-format msgid "Invalid argument for option \"%s\" item %d" msgstr "옵션 \"%s\" 항목 %d 에 잘못된 인수입니다" #: ../src/dialog.c:127 msgid "Save workspace state" msgstr "작업공간 상태 저장" #: ../src/dialog.c:421 ../src/dialog.c:482 ../src/dialog.c:991 #: ../src/dock.c:503 ../src/dock.c:598 ../src/dock.c:612 ../src/dock.c:4422 #: ../src/dockedapp.c:348 ../src/rootmenu.c:193 ../src/rootmenu.c:236 msgid "Cancel" msgstr "취소" #: ../src/dialog.c:574 msgid "Could not open directory \"%s\":\n%s" msgstr "디렉터리를 열 수 없음 \"%s\":\n%s" #: ../src/dialog.c:624 msgid "Could not load image file " msgstr "이미지 파일을 읽을 수 없음 " #: ../src/dialog.c:918 msgid "Directories" msgstr "디렉터리" #: ../src/dialog.c:927 msgid "Icons" msgstr "아이콘" #: ../src/dialog.c:960 msgid "Preview" msgstr "미리보기" #: ../src/dialog.c:973 msgid "File Name:" msgstr "파일 이름:" #: ../src/dialog.c:997 msgid "Choose File" msgstr "파일 선택" #: ../src/dialog.c:1016 ../src/dialog.c:1018 msgid "Icon Chooser" msgstr "아이콘 선택기" #: ../src/dialog.c:1199 msgid "Window Manager for X" msgstr " X용 창 관리자" #: ../src/dialog.c:1201 #, c-format msgid "Version %s" msgstr "버전 %s" #: ../src/dialog.c:1222 #, c-format msgid "Using visual 0x%x: %s %ibpp " msgstr "해상도 0x%x: %s %ibpp 를 사용합니다" #: ../src/dialog.c:1229 msgid "(32 thousand colors)\n" msgstr "(32000 색)\n" #: ../src/dialog.c:1232 msgid "(64 thousand colors)\n" msgstr "(64000 색)\n" #: ../src/dialog.c:1236 msgid "(16 million colors)\n" msgstr "(160000 색)\n" #: ../src/dialog.c:1239 #, c-format msgid "(%d colors)\n" msgstr "(%d 색)\n" #: ../src/dialog.c:1249 #, c-format msgid "Total memory allocated: %i kB (in use: %i kB, %d free chunks).\n" msgstr "사용된 전체 메모리: %i kB (사용중: %i kB, %d 사용가능).\n" #: ../src/dialog.c:1251 #, c-format msgid "Total memory allocated: %i kB (in use: %i kB).\n" msgstr "사용된 전체 메모리: %i kB (사용중: %i kB).\n" #: ../src/dialog.c:1283 msgid "Image formats: " msgstr "이미지 형식:" #: ../src/dialog.c:1279 msgid "" "\n" "Additional support for: " msgstr "" "\n" "추가 지원:" #: ../src/dialog.c:1285 msgid "(Supported)" msgstr "(지원됨)" #: ../src/dialog.c:1287 msgid "(Unsupported)" msgstr "(지원되지 않음)" #: ../src/dialog.c:1295 msgid "\n" msgstr "" #: ../src/dialog.c:1297 msgid "Solaris " msgstr "솔라리스" #: ../src/dialog.c:1299 msgid "Xinerama: " msgstr "" #: ../src/dialog.c:1320 #, c-format msgid "%d head(s) found." msgstr "" #: ../src/dialog.c:1331 msgid "Info" msgstr "정보" #: ../src/dialog.c:1417 msgid "" " Window Maker 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.\n" "\n" " Window Maker 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.\n" "\n" " You should have received a copy of the GNU General Public License along " "with this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin Street, Fifth Floor, Boston, MA02110-1301 USA." msgstr "" #: ../src/dialog.c:1431 msgid "Legal" msgstr "법률 사항" #: ../src/dialog.c:1552 msgid "cannot open connection for crashing dialog panel. Aborting." msgstr "비정상 종료 대화 패널과 연결을 하지 못했습니다. 종료합니다." #: ../src/dialog.c:1578 msgid "Fatal error" msgstr "치명적 오류" #: ../src/dialog.c:1588 #, c-format msgid "Window Maker received signal %i." msgstr "윈도우 메이커가 %i 신호를 받음." #: ../src/dialog.c:1596 msgid "" " This fatal error occured probably due to a bug. Please fill the included " "BUGFORM and report it to %s." msgstr "" "버그로 인해 치명적인 오류가 발생했습니다. BUGFORM을 작성하여 " "%s로 보내주시길 부탁드립니다." #: ../src/dialog.c:1603 msgid "What do you want to do now?" msgstr "지금 무엇을 하려 합니까?" #: ../src/dialog.c:1609 msgid "Select action" msgstr "동작을 선택" #: ../src/dialog.c:1610 msgid "Abort and leave a core file" msgstr "core 파일을 남기고 종료함" #: ../src/dialog.c:1611 msgid "Restart Window Maker" msgstr "윈도우 메이커 재시작" #: ../src/dialog.c:1612 msgid "Start alternate window manager" msgstr "대체용 창 관리자를 시작..." #: ../src/dock.c:183 ../src/menu.c:1772 #, c-format msgid "Type the name for workspace %i:" msgstr "작업공간 %i의 이름을 입력하세요:" #: ../src/dock.c:184 ../src/dock.c:1226 ../src/dock.c:1228 ../src/dock.c:3440 #: ../src/menu.c:1776 msgid "Rename Workspace" msgstr "작업공간 이름 바꿈" #: ../src/dock.c:447 ../src/dock.c:454 ../src/winspector.c:753 msgid "Warning" msgstr "경고" #: ../src/dock.c:448 msgid "" "Some icons cannot be made omnipresent. Please make sure that no other icon " "is docked in the same positions on the other workspaces and the Clip is not " "full in some workspace." msgstr "" "몇몇 아이콘을 항상 보이게 할 수 없습니다. 다른 작업 공간의 같은 위치에 아이콘" "이 도크되지 않았는지 그리고 다른 작업공간의 클립이 가득차지 않았는지 확인 하" "시기 바랍니다." #: ../src/dock.c:455 msgid "" "Icon cannot be made omnipresent. Please make sure that no other icon is " "docked in the same position on the other workspaces and the Clip is not full " "in some workspace." msgstr "" "아이콘을 항상 보이게 할 수 없습니다. 다른 작업 공간의 같은 위치에 아이콘이 도" "크되지 않았는지 그리고 다른 작업공간의 클립이 가득차지 않았는지 확인 하시기 " "바랍니다." #: ../src/dock.c:501 ../src/dock.c:596 msgid "Workspace Clip" msgstr "작업공간 클립" #: ../src/dock.c:501 ../src/dock.c:610 ../src/dock.c:4420 msgid "Drawer" msgstr "서랍" #: ../src/dock.c:502 msgid "All selected icons will be removed!" msgstr "선택한 모든 아이콘이 없어질 것입니다!!" #. can be: Unselect all icons #: ../src/dock.c:541 ../src/dock.c:1240 ../src/dock.c:1242 ../src/dock.c:3478 msgid "Keep Icon" msgstr "아이콘 유지" #: ../src/dock.c:542 ../src/dock.c:2131 ../src/dock.c:2273 msgid "Type the command used to launch the application" msgstr "응용프로그램을 실행하는데 필요한 명령을 입력합니다" #: ../src/dock.c:597 msgid "The drawer that auto-attracted icons so far won't do so anymore!" msgstr "아이콘을 자동으로 담는 서랍이 더이상 담을 수 없습니다!" #: ../src/dock.c:611 msgid "Any clips that auto-attracted icons so far won't do so anymore!" msgstr "자동으로 아이콘을 담는 클립이 더 이상 담을 수 없습니다!" #: ../src/dock.c:933 #, c-format msgid "could not launch application %s" msgstr "응용프로그램 %s을 실행할 수 없습니다" #: ../src/dock.c:983 msgid "could not create workspace submenu for Clip menu" msgstr "클립 메뉴를 위한 작업공간 하부메뉴를 만들 수 없습니다" #: ../src/dock.c:1040 msgid "could not create options submenu for Clip menu" msgstr "클립 메뉴를 위한 옵션 하부메뉴를 만들 수 없습니다" #: ../src/dock.c:1044 ../src/dock.c:1179 msgid "Keep on Top" msgstr "항상 위로" #: ../src/dock.c:1049 msgid "Collapsed" msgstr "아이콘 숨김" #: ../src/dock.c:1054 msgid "Autocollapse" msgstr "자동 축소" #: ../src/dock.c:1059 msgid "Autoraise" msgstr "자동 올림" #: ../src/dock.c:1064 msgid "Autoattract Icons" msgstr "아이콘 자동 모음" #: ../src/dock.c:1167 msgid "could not create options submenu for dock position menu" msgstr "독 위치 메뉴를 위한 옵션 하부메뉴를 만들 수 없습니다" #: ../src/dock.c:1171 msgid "Normal" msgstr "보통" #: ../src/dock.c:1175 msgid "Auto raise & lower" msgstr "자동 올림/내림" #: ../src/dock.c:1203 msgid "Dock position" msgstr "독 위치" #: ../src/dock.c:1209 msgid "Add a drawer" msgstr "서랍 추가하기" #: ../src/dock.c:1213 msgid "Clip Options" msgstr "클립 옵션" #. if (type == WM_DRAWER) #: ../src/dock.c:1215 msgid "Drawer options" msgstr "서랍 옵션" #: ../src/dock.c:1231 msgid "Selected" msgstr "선택됨" #: ../src/dock.c:1236 ../src/dock.c:1238 ../src/dock.c:3468 msgid "Select All Icons" msgstr "모든 아이콘 선택" #: ../src/dock.c:1245 ../src/dock.c:1247 ../src/dock.c:3488 msgid "Move Icon To" msgstr "아이콘 옮김" #: ../src/dock.c:1253 ../src/dock.c:1255 ../src/dock.c:3502 msgid "Remove Icon" msgstr "아이콘 없앰" #. can be: Remove Icons #: ../src/dock.c:1257 msgid "Attract Icons" msgstr "아이콘 모음" #. can be: Unhide #: ../src/dock.c:1268 msgid "Settings..." msgstr "설정..." #: ../src/dock.c:1611 ../src/dock.c:1702 #, c-format msgid "bad value in docked icon state info %s" msgstr "Dock 아이콘의 상태정보에 잘못된 값 %s" #: ../src/dock.c:1725 #, c-format msgid "bad value in dock state info:%s" msgstr "독 상태정보에 잘못된 값:%s" #: ../src/dock.c:1924 msgid "there are too many icons stored in dock. Ignoring what doesn't fit" msgstr "Dock에 들어간 아이콘이 너무 많음. 맞지 않는 것은 무시합니다" #. icon->forced_dock = 1; #: ../src/dock.c:2130 ../src/dock.c:2272 msgid "Dock Icon" msgstr "독 아이콘" #: ../src/dock.c:3345 #, c-format msgid "Could not execute command \"%s\"" msgstr "\"%s\" 명령을 실행할 수 없음." #: ../src/dock.c:3446 msgid "Toggle Omnipresent" msgstr "항상 보임 선택/취소" #: ../src/dock.c:3451 ../src/winmenu.c:406 ../src/winspector.c:1352 msgid "Omnipresent" msgstr "항상 보임" #: ../src/dock.c:3466 msgid "Unselect All Icons" msgstr "모든 아이콘 선택 해제" #: ../src/dock.c:3476 msgid "Keep Icons" msgstr "아이콘 유지" #: ../src/dock.c:3486 msgid "Move Icons To" msgstr "아이콘 옮김" #: ../src/dock.c:3500 msgid "Remove Icons" msgstr "아이콘 없앰" #: ../src/dock.c:3530 msgid "Bring Here" msgstr "여기로 가져오기" #: ../src/dock.c:3554 msgid "Remove drawer" msgstr "서랍 제거하기" #: ../src/dock.c:4421 msgid "All icons in this drawer will be detached!" msgstr "이 서랍에 있는 모든 아이콘이 제거될 것입니다." #: ../src/dock.c:4806 msgid "there are too many icons stored in drawer. Ignoring what doesn't fit" msgstr "서랍에 저장된 아이콘이 너무 많습니다. 맞지 않는 것은 무시합니다" #: ../src/dockedapp.c:96 #, c-format msgid "could not find icon %s, used in a docked application" msgstr "도킹된 응용프로그램에 사용할 아이콘 %s을 찾을 수 없음" #: ../src/dockedapp.c:169 #, c-format msgid "Could not open specified icon file: %s" msgstr "지정된 아이콘 파일을 열 수 없음: %s" #: ../src/dockedapp.c:171 msgid "Ignore" msgstr "무시" #: ../src/dockedapp.c:265 msgid "Start when Window Maker is started" msgstr "윈도우 메이커를 실행할 때 시작함" #: ../src/dockedapp.c:270 msgid "Lock (prevent accidental removal)" msgstr "잠금 (실수로 없애는 것을 막기 위함)" #: ../src/dockedapp.c:274 msgid "Application path and arguments" msgstr "응용프로그램 경로와 인수" #: ../src/dockedapp.c:285 msgid "Command for middle-click launch" msgstr "가운데 버튼을 눌러 실행할 명령" #: ../src/dockedapp.c:297 #, c-format msgid "%s will be replaced with current selection" msgstr "%s는 현재 선택으로 대체합니다" #: ../src/dockedapp.c:301 msgid "Command for files dropped with DND" msgstr "드래그&드롭으로 이동된 파일에 대한 명령" #: ../src/dockedapp.c:313 #, c-format msgid "%d will be replaced with the file name" msgstr "%d는 파일 이름으로 대체합니다" #: ../src/dockedapp.c:316 msgid "DND support was not compiled in" msgstr "DND 지원은 다음에서 컴파일 되지 않았습니다: " #: ../src/dockedapp.c:321 msgid "Icon Image" msgstr "아이콘 이미지" #: ../src/dockedapp.c:332 ../src/winspector.c:1502 msgid "Browse..." msgstr "찾기..." #: ../src/dockedapp.c:390 msgid "Docked Application Settings" msgstr "독된 응용프로그램 설정" #: ../src/framewin.c:650 ../src/framewin.c:740 ../src/menu.c:415 #: ../src/texture.c:451 #, c-format msgid "could not render texture: %s" msgstr "텍스처를 렌더링 할 수 없음: %s" #: ../src/framewin.c:673 ../src/framewin.c:683 ../src/framewin.c:699 #: ../src/framewin.c:710 ../src/framewin.c:717 ../src/framewin.c:723 #: ../src/icon.c:308 ../src/menu.c:442 #, c-format msgid "error rendering image:%s" msgstr "이미지 렌더링 오류:%s" #: ../src/framewin.c:768 #, c-format msgid "error rendering image: %s" msgstr "이미지 렌더링 오류: %s" #: ../src/main.c:301 msgid "failed to restart Window Maker." msgstr "윈도우 메이커 재시작 실패." #: ../src/main.c:304 #, c-format msgid "could not exec %s" msgstr "%s를 실행할 수 없음" #: ../src/main.c:342 msgid "Could not execute command: " msgstr "다음 명령을 실행할 수 없음:" #: ../src/main.c:477 #, c-format msgid "%s aborted.\n" msgstr "%s는 중단되었습니다.\n" #: ../src/main.c:486 #, c-format msgid "Usage: %s [options]\n" msgstr "사용법: %s [옵션]\n" #: ../src/main.c:487 msgid "The Window Maker window manager for the X window system" msgstr "X 윈도 시스템용 윈도우 메이커 창 관리자" #: ../src/main.c:489 msgid " -display host:dpy\tdisplay to use" msgstr " -display 호스트:디스플레이\t사용할 디스플레이" #: ../src/main.c:490 msgid " --no-dock\t\tdo not open the application Dock" msgstr " --no-dock\t\t응용프로그램 독을 열지 않음" #: ../src/main.c:491 msgid " --no-clip\t\tdo not open the workspace Clip" msgstr " --no-clip\t\t작업공간 클립을 열지 않음" #: ../src/main.c:492 msgid " --no-autolaunch\tdo not autolaunch applications" msgstr " --no-autolaunch\t응용프로그램을 자동 실행하지 않음" #: ../src/main.c:493 msgid " --dont-restore\t\tdo not restore saved session" msgstr " --dont-restore\t\t저장된 세션을 복구하지 않습니다" #: ../src/main.c:495 msgid " --locale locale\tlocale to use" msgstr " --locale 로케일\t사용할 로케일" #: ../src/main.c:497 msgid " --visual-id visualid\tvisual id of visual to use" msgstr " --visual-id 비주얼ID\t사용할 비주얼의 비주얼 ID" #: ../src/main.c:498 msgid " --static\t\tdo not update or save configurations" msgstr " --static\t\t설정을 갱신하거나 저장하지 않는다" #: ../src/main.c:500 msgid " --no-polling\t\tdo not periodically check for configuration updates" msgstr " --no-polling\t\t설정 갱신을 주기적으로 점검하지 않는다" #: ../src/main.c:502 msgid " --version\t\tprint version and exit" msgstr " --version\t\t버전을 표시하고 종료" #: ../src/main.c:503 msgid " --help\t\t\tshow this message" msgstr " --help\t\t\t이 화면을 보여줌" #: ../src/main.c:513 #, c-format msgid "could not find user GNUstep directory (%s)." msgstr "사용자 GNUstep 디렉터리 (%s)를 찾을 수 없습니다." #: ../src/main.c:516 msgid "" "There was an error while creating GNUstep directory, please make sure you " "have installed Window Maker correctly and run wmaker.inst" msgstr "" "GNUstep 디렉터리를 만드는데 오류가 있습니다, 윈도우 메이커가 제대로 설치되었" "는지 확인하고 wmaker.inst를 실행합니다" #: ../src/main.c:519 #, c-format msgid "%s directory created with default configuration." msgstr "%s 디렉터리는 기본 설정으로 만들어졌습니다." #: ../src/main.c:537 msgid "" "could not initialise an inotify instance. Changes to the defaults database " "will require a restart to take effect. Check your kernel!" msgstr "" "inotify를 초기화하지 못했습니다. 기본 데이터베이스로 바꾸면 다시 시작해야 합" "니다. 커널을 점검하기 바합니다!" #: ../src/main.c:548 #, c-format msgid "" "could not add an inotify watch on path %s. Changes to the defaults database " "will require a restart to take effect." msgstr "" "경로 %s에 inotify 감시를 추가하지 못했습니다. 기본 데이터베이스로 바꾸면 다" "시 시작할 필요가 있습니다." #: ../src/main.c:570 #, c-format msgid "%s:could not execute initialization script" msgstr "%s:초기화 스크립트를 실행할 수 없습니다." #: ../src/main.c:588 #, c-format msgid "%s:could not execute exit script" msgstr "%s:종료 스크립트를 실행할 수 없습니다." #: ../src/main.c:626 ../src/main.c:703 ../src/main.c:710 ../src/main.c:717 #, c-format msgid "too few arguments for %s" msgstr "%s를 위한 인자가 부족합니다" #: ../src/main.c:675 #, c-format msgid "option \"%s\" is deprecated, please remove it from your script" msgstr " \"%s\" 옵션은 폐기되었습니다. 스크립트에서 제거하기 바랍니다." #: ../src/main.c:721 #, c-format msgid "bad value for visualid: \"%s\"" msgstr "비주얼 ID에 잘못된 값: \"%s\"" #: ../src/main.c:734 #, c-format msgid "%s: invalid argument '%s'\n" msgstr "%s: 잘못된 인자 '%s'\n" #: ../src/main.c:735 #, c-format msgid "Try '%s --help' for more information\n" msgstr "더 많은 정보를 원하시면 '%s --help' 하시기 바랍니다.\n" #: ../src/main.c:778 msgid "X server does not support locale" msgstr "X 서버가 로케일을 지원하지 않습니다" #: ../src/main.c:782 msgid "cannot set locale modifiers" msgstr "로케일 수정자(modifier)를 설정할 수 없음" #: ../src/main.c:798 #, c-format msgid "could not open display \"%s\"" msgstr "\"%s\" 디스플레이를 열지 못함." #: ../src/menu.c:2345 #, c-format msgid "bad value in menus state info: %s" msgstr "메뉴 상태 정보에 잘못된 값: %s" #: ../src/misc.c:476 ../src/misc.c:481 msgid "Program Arguments" msgstr "프로그램 인수" #: ../src/misc.c:477 ../src/misc.c:482 msgid "Enter command arguments:" msgstr "명령어 인수를 입력하세요:" #: ../src/misc.c:526 #, c-format msgid "out of memory during expansion of \"%s\"" msgstr "\"%s\" 확장 중 메모리 부족" #: ../src/misc.c:579 #, c-format msgid "out of memory during expansion of \"%%w\"" msgstr "\"%%w\" 확장 중 메모리 부족" #: ../src/misc.c:596 #, c-format msgid "out of memory during expansion of \"%%W\"" msgstr "\"%%W\" 확장 중 메모리 부족" #: ../src/misc.c:613 #, c-format msgid "out of memory during expansion of \"%%a\"" msgstr "\"%%a\" 확장 중 메모리 부족" #: ../src/misc.c:642 #, c-format msgid "out of memory during expansion of \"%%d\"" msgstr "\"%%d\" 확장 중 메모리 부족" #: ../src/misc.c:656 msgid "selection not available" msgstr "선택 불가능" #: ../src/misc.c:663 #, c-format msgid "out of memory during expansion of \"%%s\"" msgstr "\"%%s\" 확장 중 메모리 부족" #: ../src/misc.c:698 ../src/misc.c:704 #, c-format msgid "bad window name value in %s state info" msgstr "상태 정보 %s의 창 이름이 잘못됨" #: ../src/misc.c:951 msgid "could not send message to background image helper" msgstr "배경 이미지 \"%s\" 를 찾을 수 없습니다" #: ../src/resources.c:41 #, c-format msgid "could not parse color \"%s\"" msgstr "\"%s\" 색상을 해석할 수 없습니다" #: ../src/resources.c:45 #, c-format msgid "could not allocate color \"%s\"" msgstr "\"%s\" 색상을 할당할 수 없음" #: ../src/rootmenu.c:192 ../src/rootmenu.c:193 msgid "Exit" msgstr "종료" #: ../src/rootmenu.c:193 msgid "Exit window manager?" msgstr "창 관리자를 종료하시겠습니까?" #: ../src/rootmenu.c:234 msgid "Kill X session" msgstr "X 세션 종료" #: ../src/rootmenu.c:235 msgid "" "Kill Window System session?\n" "(all applications will be closed)" msgstr "" "윈도우 시스템 세션을 종료합니까?\n" "(모든 응용프로그램이 종료됩니다)" #: ../src/rootmenu.c:458 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\" for entry %s" msgstr "%s:잘못된 키보드 단축키 지정 \"%s\" (%s 항목)" #: ../src/rootmenu.c:466 #, c-format msgid "%s:invalid key in shortcut \"%s\" for entry %s" msgstr "%s:단축키 \"%s\"에 잘못된 키 (%s 항목)" #: ../src/rootmenu.c:500 #, c-format msgid "%s: unmatched '\"' in menu file" msgstr "%s: 메뉴 파일의 '\"' 짝이 맞지 않음" #: ../src/rootmenu.c:549 #, c-format msgid "%s: missing command" msgstr "%s: 명령어가 없음" #: ../src/rootmenu.c:604 #, c-format msgid "invalid OPEN_MENU specification: %s" msgstr "OPEN_MENU 지정이 잘못됨: %s" #: ../src/rootmenu.c:661 #, c-format msgid "%s:could not stat menu" msgstr "%s:메뉴 파일에 접근할 수 없음" #: ../src/rootmenu.c:669 #, c-format msgid "%s:could not stat menu:%s" msgstr "%s:메뉴 파일에 접근할 수 없음:%s" #: ../src/rootmenu.c:685 #, c-format msgid "too many parameters in OPEN_MENU: %s" msgstr "OPEN_MENU에 인수가 너무 많음: %s" #: ../src/rootmenu.c:723 #, c-format msgid "invalid OPEN_PLMENU specification: %s" msgstr "OPEN_PLMENU 지정이 잘못됨: %s" #: ../src/rootmenu.c:774 msgid "" "There are more than one WORKSPACE_MENU commands in the applications menu. " "Only one is allowed." msgstr "" "응용프로그램 메뉴에 WORKSPACE_MENU 명령이 둘 이상 있습니다. 하나만 있어야 합" "니다. " #: ../src/rootmenu.c:805 msgid "" "There are more than one WINDOWS_MENU commands in the applications menu. Only " "one is allowed." msgstr "" "응용프로그램 메뉴에 WINDOWS_MENU 명령이 둘 이상 있습니다. 하나만 있어야 합니" "다. " #: ../src/rootmenu.c:810 msgid "Window List" msgstr "창 목록" #: ../src/rootmenu.c:837 ../src/rootmenu.c:854 ../src/rootmenu.c:871 #: ../src/rootmenu.c:879 #, c-format msgid "%s:missing parameter for menu command \"%s\"" msgstr "%s:메뉴 명령어 \"%s\" 의 인수가 빠졌음" #: ../src/rootmenu.c:943 #, c-format msgid "%s:unknown command \"%s\" in menu config." msgstr "%s:메뉴 설정의 \"%s\" 명령을 알 수 없음." #: ../src/rootmenu.c:950 #, c-format msgid "%s:can't add shortcut for entry \"%s\"" msgstr "%s:\"%s\" 항목에 빨리가기를 추가할 수 없음" #: ../src/rootmenu.c:982 ../src/rootmenu.c:1034 ../src/rootmenu.c:1123 msgid "missing command in menu config" msgstr "메뉴 설정에서 명령을 찾을 수 없음" #: ../src/rootmenu.c:1010 msgid "syntax error in menu file: END declaration missing" msgstr "메뉴 파일에서 문법 오류: END 선언 없음" #: ../src/rootmenu.c:1025 ../src/rootmenu.c:1114 #, c-format msgid "could not open menu file \"%s\": %s" msgstr "메뉴 파일을 열 수 없음 \"%s\": %s" #: ../src/rootmenu.c:1048 msgid "invalid menu file, MENU command is missing" msgstr "잘못된 메뉴 파일. MENU 명령이 빠졌습니다" #: ../src/rootmenu.c:1137 msgid "no title given for the root menu" msgstr "최상위 메뉴에 제목이 없습니다" #: ../src/rootmenu.c:1250 ../src/rootmenu.c:1322 ../src/rootmenu.c:1361 #, c-format msgid "out of memory while constructing directory menu %s" msgstr "디렉터리 메뉴 %s 생성 중 메모리 부족" #: ../src/rootmenu.c:1259 #, c-format msgid "%s:could not stat file \"%s\" in menu directory" msgstr "%s: 메뉴 디렉터리의 파일 \"%s\"에 접근할 수 없음" #: ../src/rootmenu.c:1411 msgid "Commands" msgstr "명령어" #: ../src/rootmenu.c:1414 msgid "Restart" msgstr "재시작" #: ../src/rootmenu.c:1415 msgid "Exit..." msgstr "종료..." #: ../src/rootmenu.c:1454 #, c-format msgid "could not find menu file \"%s\" referenced in WMRootMenu" msgstr "WMRootMenu에서 참조하는 메뉴 파일 \"%s\"를 찾을 수 없습니다" #: ../src/rootmenu.c:1460 #, c-format msgid "could not access menu \"%s\" referenced in WMRootMenu" msgstr "WMRootMenu에서 참조하는 메뉴 \"%s\"에 접근할 수 없습니다" #: ../src/rootmenu.c:1472 #, c-format msgid "" "using default menu file \"%s\" as the menu referenced in WMRootMenu could " "not be found " msgstr "" "WMRootMenu에서 참조하는 메뉴 파일을 찾을 수 없으므로 \"%s\"를 기본 메뉴 파일" "로 사용합니다" #: ../src/rootmenu.c:1495 ../src/rootmenu.c:1569 #, c-format msgid "%s:format error in root menu configuration \"%s\"" msgstr "%s:최상위 메뉴 설정 \"%s\"의 형식 오류" #: ../src/rootmenu.c:1646 msgid "" "The applications menu could not be loaded. Look at the console output for a " "detailed description of the errors." msgstr "" "응용프로그램 메뉴를 읽을 수 없음. 콘솔로 출력되는 자세한 오류 메세지를 참고하" "십시오." #: ../src/screen.c:423 #, c-format msgid "could not load logo image for panels: %s" msgstr "패널에 쓰일 로고 이미지를 읽지 못함: %s" #: ../src/screen.c:606 #, c-format msgid "could not initialize graphics library context: %s" msgstr "그래픽 라이브러리 환경을 초기화 할수 없음: %s" #: ../src/screen.c:632 msgid "could not initialize WINGs widget set" msgstr "WINGs 위젯 모음을 초기화 할 수 없습니다" #: ../src/screen.c:944 #, c-format msgid "could not save session state in %s" msgstr "%s의 세션 상태를 저장하지 못함" #: ../src/session.c:152 ../src/wdefaults.c:654 ../src/winspector.c:393 #, c-format msgid "can't convert \"%s\" to boolean" msgstr "\"%s\"를 부울 값으로 바꿀 수 없음" #: ../src/stacking.c:74 msgid "could not get window list!!" msgstr "창 목록를 얻을 수 없습니다!!" #: ../src/startup.c:175 #, c-format msgid "internal X error: %s" msgstr "X 내부 에러: %s" #: ../src/startup.c:644 ../src/startup.c:660 ../src/startup.c:666 #, c-format msgid "could not read domain \"%s\" from defaults database" msgstr "기본 데이터베이스에서 도메인 \"%s\"를 읽을 수 없습니다" #: ../src/startup.c:652 #, c-format msgid "icon size is configured to %i, but it's too small. Using 16 instead" msgstr "아이콘 크기가 %i로 지정되었지만 너무 작아 16으로 대신합니다" #: ../src/startup.c:682 msgid "XKB is not supported. KbdModeLock is automatically disabled." msgstr "XKB를 지원하지 않습니다. KbdModeLock이 자동으로 사용 중지되었습니다." #: ../src/startup.c:701 msgid "it seems that there is already a window manager running" msgstr "이미 다른 창 관리자가 동작하고 있는 것 같습니다" #: ../src/startup.c:707 #, c-format msgid "could not manage screen %i" msgstr "화면 %i를 제어할 수 없음" #: ../src/startup.c:771 msgid "could not manage any screen" msgstr "모든 화면을 제어할 수 없음" #: ../src/switchmenu.c:135 msgid "Windows" msgstr "창" #: ../src/texture.c:328 #, c-format msgid "image file \"%s\" used as texture could not be found." msgstr "텍스처로 사용하는 이미지 파일 \"%s\"을 찾을 수 없습니다." #: ../src/texture.c:333 #, c-format msgid "could not load texture pixmap \"%s\":%s" msgstr "텍스처 픽스맵 \"%s\"을 열 수가 없음: %s" #: ../src/texture.c:455 msgid "could not allocate image buffer" msgstr "이미지 버퍼를 할당할 수 없음" #: ../src/wdefaults.c:404 #, c-format msgid "icon \"%s\" doesn't exist, check your config files" msgstr " \"%s\" 아이콘이 없습니다. 설정 파일을 점검하기 바랍니다" #: ../src/wdefaults.c:431 #, c-format msgid "error loading image file \"%s\": %s" msgstr "이미지 파일 \"%s\"를 읽는 중 오류: %s" #: ../src/wdefaults.c:467 #, c-format msgid "could not find default icon \"%s\"" msgstr "기본 아이콘 \"%s\"를 찾지 못함" #: ../src/window.c:2692 ../src/window.c:2848 msgid "" "The NumLock, ScrollLock or similar key seems to be turned on. Turn it off or " "some mouse actions and keyboard shortcuts will not work." msgstr "" "NumLock, ScrollLock 이나 다른 비슷한 종류의 키가 켜져 있는 것 같습니다.끄지 " "않으면 일부 마우스 동작이나 키보드 단축키가 동작하지 않습니다." #: ../src/winmenu.c:125 msgid "" "This will kill the application.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" "응용프로그램을 강제 종료합니다.\n" "저장하지 않은 변경 사항은 잃게\n" "됩니다. 계속 하시겠습니까?" #: ../src/winmenu.c:271 ../src/winmenu.c:280 msgid "Set Shortcut" msgstr "단축키 선택" #: ../src/winmenu.c:354 ../src/winmenu.c:394 msgid "could not create submenu for window menu" msgstr "창 메뉴를 위한 하부메뉴를 만들 수 없습니다" #: ../src/winmenu.c:398 msgid "Keep on top" msgstr "항상 위로" #: ../src/winmenu.c:402 msgid "Keep at bottom" 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:424 ../src/winmenu.c:522 msgid "Maximize" msgstr "최대화" #: ../src/winmenu.c:427 ../src/winmenu.c:506 msgid "Miniaturize" msgstr "최소화" #: ../src/winmenu.c:430 ../src/winmenu.c:540 msgid "Shade" msgstr "가림" #: ../src/winmenu.c:436 msgid "Resize/Move" msgstr "크기 조절/이동" #: ../src/winmenu.c:439 ../src/winmenu.c:557 msgid "Select" msgstr "선택" #: ../src/winmenu.c:442 msgid "Move To" msgstr "이동" #: ../src/winmenu.c:447 msgid "Attributes..." msgstr "속성 설정..." #: ../src/winmenu.c:449 msgid "Options" msgstr "옵션" #: ../src/winmenu.c:460 msgid "Close" msgstr "닫기" #: ../src/winmenu.c:500 msgid "Deminiaturize" msgstr "보통크기" #: ../src/winmenu.c:516 msgid "Unmaximize" msgstr "보통크기" #: ../src/winmenu.c:534 msgid "Unshade" msgstr "보임" #: ../src/winmenu.c:551 msgid "Deselect" msgstr "선택제거" #: ../src/winspector.c:340 #, c-format msgid "Could not find icon \"%s\" specified for this window" msgstr "이 창에 지정된 아이콘 \"%s\"을 찾을 수 없음" #: ../src/winspector.c:355 #, c-format msgid "Could not open specified icon \"%s\":%s" msgstr "지정된 아이콘 \"%s\"을 열 수 없음:%s" #: ../src/winspector.c:752 #, c-format msgid "" "Ignore client supplied icon is set, but icon filename textbox is empty. " "Using client supplied icon" msgstr "" "클라이언트 제공 아이콘을 무시하도록 설정되었지만, 아이콘 파일 이름 글자창이 " "비었습니다. 클라이언트 제공 아이콘을 사용합니다" #: ../src/winspector.c:1003 #, c-format msgid "Inspecting %s.%s" msgstr " %s.%s 검사중" #: ../src/winspector.c:1026 msgid "Click in the window you wish to inspect." msgstr "선택할 창을 클릭하십시오." #: ../src/winspector.c:1050 msgid "" "The configuration will apply to all\n" "windows that have their WM_CLASS\n" "property set to the above selected\n" "name, when saved." msgstr "" "설정을 저장하면 WM_CLASS 속성값이\n" "위에서 선택한 이름으로 되어 있는\n" "모든 창에 그 설정이 적용됩니다." #: ../src/winspector.c:1070 msgid "Save" msgstr "저장" #: ../src/winspector.c:1078 msgid "Apply" msgstr "적용" #: ../src/winspector.c:1084 msgid "Reload" msgstr "다시읽기" #: ../src/winspector.c:1093 ../src/winspector.c:1103 msgid "Window Specification" msgstr "창 선택" #: ../src/winspector.c:1094 msgid "Window Attributes" msgstr "창 속성" #: ../src/winspector.c:1095 msgid "Advanced Options" msgstr "고급 옵션" #: ../src/winspector.c:1096 msgid "Icon and Initial Workspace" msgstr "아이콘과 초기 작업공간" #: ../src/winspector.c:1097 msgid "Application Specific" msgstr "응용프로그램에 따라 다른 설정" #: ../src/winspector.c:1110 msgid "Defaults for all windows" msgstr "모든 창의 기본값으로" #: ../src/winspector.c:1161 msgid "Select window" msgstr "창 선택" #: ../src/winspector.c:1307 msgid "Attributes" msgstr "속성" #: ../src/winspector.c:1314 msgid "Disable titlebar" msgstr "타이틀바 사용안함" #: ../src/winspector.c:1316 msgid "" "Remove the titlebar of this window.\n" "To access the window commands menu of a window\n" "without it's titlebar, press Control+Esc (or the\n" "equivalent shortcut, if you changed the default\n" "settings)." msgstr "" "이 창에서 타이틀바를 사용하지 않습니다.\n" "이 때 창 명령 메뉴를 불러오려면 Control+Esc\n" "(또는 설정된 단축키를)를 이용할 수 있습니다." #: ../src/winspector.c:1322 msgid "Disable resizebar" msgstr "크기조정 바 없앰" #: ../src/winspector.c:1324 msgid "Remove the resizebar of this window." msgstr "이 창에서 크기조정 바를 사용하지 않습니다." #: ../src/winspector.c:1327 msgid "Disable close button" msgstr "닫기 버튼 없앰" #: ../src/winspector.c:1329 msgid "Remove the `close window' button of this window." msgstr "이 창에서 `창 닫기' 버튼을 사용하지 않습니다." #: ../src/winspector.c:1332 msgid "Disable miniaturize button" msgstr "최소화 버튼 없앰" #: ../src/winspector.c:1334 msgid "Remove the `miniaturize window' button of the window." msgstr "이 창에서 `창 최소화' 버튼을 사용하지 않습니다." #: ../src/winspector.c:1337 msgid "Disable border" msgstr "테두리 없앰" #: ../src/winspector.c:1339 msgid "Remove the 1 pixel black border around the window." msgstr "창 주위의 1 픽셀짜리 검은 테두리를 사용하지 않습니다." #: ../src/winspector.c:1342 msgid "Keep on top (floating)" msgstr "항상 위로 (떠다님)" #: ../src/winspector.c:1344 msgid "" "Keep the window over other windows, not allowing\n" "them to cover it." msgstr "이 창이 항상 다른 창의 위로 오도록 합니다." #: ../src/winspector.c:1347 msgid "Keep at bottom (sunken)" msgstr "항상 아래로 (가라앉음)" #: ../src/winspector.c:1349 msgid "Keep the window under all other windows." msgstr "이 창이 다른 모든 창의 아래로 가도록 합니다." #: ../src/winspector.c:1354 msgid "Make window present in all workspaces." msgstr "모든 작업공간에서 창이 보이도록 합니다." #: ../src/winspector.c:1357 msgid "Start miniaturized" msgstr "최소화하여 실행" #: ../src/winspector.c:1359 msgid "" "Make the window be automatically miniaturized when it's\n" "first shown." msgstr "자동으로 최소화되어 실행되도록 합니다." #: ../src/winspector.c:1362 msgid "Start maximized" msgstr "최대화하여 실행" #: ../src/winspector.c:1364 msgid "" "Make the window be automatically maximized when it's\n" "first shown." msgstr "자동으로 최대화되어 실행되도록 합니다." #: ../src/winspector.c:1367 msgid "Full screen maximization" msgstr "전체 화면 최대화" #: ../src/winspector.c:1369 msgid "" "Make the window use the whole screen space when it's\n" "maximized. The titlebar and resizebar will be moved\n" "to outside the screen." msgstr "" "창을 화면에 들어갈 수 있는 최대의 크기로 만듭니다.\n" "타이틀바와 크기조정바는 화면의 밖에 위치하게 됩니다." #: ../src/winspector.c:1391 msgid "Advanced" msgstr "고급 항목" #: ../src/winspector.c:1398 msgid "Do not bind keyboard shortcuts" msgstr "키보드 단축키 연결 안함" #: ../src/winspector.c:1400 msgid "" "Do not bind keyboard shortcuts from Window Maker\n" "when this window is focused. This will allow the\n" "window to receive all key combinations regardless\n" "of your shortcut configuration." msgstr "" "이 창이 활성화되어 있을 때 윈도우 메이커 키보드\n" "단축키에 반응하지 않게 합니다. 이럼으로써 단축키\n" "설정과 무관하게 그 창이 모든 키 조합을 받아들일\n" "있게 됩니다." #: ../src/winspector.c:1406 msgid "Do not bind mouse clicks" msgstr "마우스 클릭 연결 안함" #: ../src/winspector.c:1408 msgid "" "Do not bind mouse actions, such as `Alt'+drag\n" "in the window (when Alt is the modifier you have\n" "configured)." msgstr "" "창에 대고 `Alt'+끌기(마우스 수정자를 `Alt'로 설정했을\n" "때)같은 마우스 동작에 반응하지 않도록 합니다." #: ../src/winspector.c:1412 msgid "Do not show in the window list" msgstr "창 목록 에 나오지 않게 함" #: ../src/winspector.c:1414 msgid "Do not list the window in the window list menu." msgstr "이 창이 창 목록 메뉴에 나오지 않게 합니다." #: ../src/winspector.c:1417 msgid "Do not show in the switch panel" msgstr "전환 패널에 나오지 않게 함" #: ../src/winspector.c:1419 msgid "Do not include in switch panel while cycling windows." msgstr "창을 넘길 때 스위치패널을 포함하지 않는다." #: ../src/winspector.c:1422 msgid "Do not let it take focus" msgstr "활성화 안되게 함" #: ../src/winspector.c:1424 msgid "" "Do not let the window take keyboard focus when you\n" "click on it." msgstr "창을 클릭해도 키보드 활성화가 되지 않도락 합니다." #: ../src/winspector.c:1427 msgid "Keep inside screen" msgstr "항상 화면 안에 위치" #: ../src/winspector.c:1429 msgid "" "Do not allow the window to move itself completely\n" "outside the screen. For bug compatibility.\n" msgstr "" "창이 화면 밖으로 나가지 못하도록 합니다.\n" "버그가 있는 프로그램들에서 사용할 수 있겠지요.\n" #: ../src/winspector.c:1433 msgid "Ignore 'Hide Others'" msgstr "'다른 것들 숨김'을 무시함" #: ../src/winspector.c:1435 msgid "" "Do not hide the window when issuing the\n" "`HideOthers' command." msgstr "" "이 창이 `다른 것들 숨김' 명령이 내려져도\n" "숨겨지지 않도록 합니다." #: ../src/winspector.c:1438 msgid "Ignore 'Save Session'" msgstr "'세션 저장'을 무시함" #: ../src/winspector.c:1440 msgid "" "Do not save the associated application in the\n" "session's state, so that it won't be restarted\n" "together with other applications when Window Maker\n" "starts." msgstr "" "윈도우 메이커가 시작할 때 다른 응용프로그램과 함께\n" "재시작되게 하지 않기 위해서 응용프로그램의 세션\n" "상태를 저장하지 않습니다." #: ../src/winspector.c:1445 msgid "Emulate application icon" msgstr "응용프로그램 아이콘 흉내내기" #: ../src/winspector.c:1447 msgid "" "Make this window act as an application that provides\n" "enough information to Window Maker for a dockable\n" "application icon to be created." msgstr "" "이 창이, 독에 놓을 수 있는 응용프로그램 아이콘이\n" "생성되도록 윈도우 메이커에 충분한 정보를 제공하는\n" "응용프로그램으로 동작하게 한다." #: ../src/winspector.c:1452 msgid "Focus across workspaces" msgstr "작업공간을 가로질러 활성화" #: ../src/winspector.c:1454 msgid "" "Allow Window Maker to switch workspace to satisfy\n" "a focus request (annoying)." msgstr "윈도우 메이커가 포커스 요구에 맞추어 작업공간 바꾸기(성가심)" #: ../src/winspector.c:1458 msgid "Do not let it be minimized" msgstr "최소화 막기" #: ../src/winspector.c:1460 msgid "" "Do not let the window of this application be\n" "minimized.\n" msgstr "이 응용프로그램의 창이 최소화되지 않게 합니다.\n" #: ../src/winspector.c:1465 msgid "Disable language button" msgstr "언어 버튼 사용않기" #: ../src/winspector.c:1467 msgid "Remove the `toggle language' button of the window." msgstr "이 창에서 `언어 선택' 버튼을 사용하지 않습니다." #: ../src/winspector.c:1490 msgid "Miniwindow Image" msgstr "아이콘 이미지" #: ../src/winspector.c:1507 msgid "Icon filename:" msgstr "아이콘 파일 이름:" #: ../src/winspector.c:1518 msgid "Ignore client supplied icon" msgstr "클라이언트 제공 아이콘 무시함" #: ../src/winspector.c:1524 msgid "Initial Workspace" msgstr "초기 작업공간" #: ../src/winspector.c:1526 msgid "The workspace to place the window when it's first shown." msgstr "이 창을 처음으로 표시할 작업공간을 지정합니다." #: ../src/winspector.c:1532 msgid "Nowhere in particular" msgstr "특별한 설정 없음" #: ../src/winspector.c:1555 msgid "Application Attributes" msgstr "응용프로그램 속성" #: ../src/winspector.c:1562 msgid "Start hidden" msgstr "숨긴 채 실행" #: ../src/winspector.c:1564 msgid "Automatically hide application when it's started." msgstr "자동으로 숨겨진 채 응용프로그램이 실행되게 합니다." #: ../src/winspector.c:1567 msgid "No application icon" msgstr "응용프로그램 아이콘 없음" #: ../src/winspector.c:1569 msgid "" "Disable the application icon for the application.\n" "Note that you won't be able to dock it anymore,\n" "and any icons that are already docked will stop\n" "working correctly." msgstr "" "응용프로그램 아이콘을 사용하지 않게 합니다.\n" "이를 사용하게 되면 이미 독에 들어가 있는\n" "응용프로그램 아이콘이 제대로 작동하지 않을\n" "수 있습니다." #: ../src/winspector.c:1575 msgid "Shared application icon" msgstr "응용프로그램 아이콘 공유" #: ../src/winspector.c:1577 msgid "" "Use a single shared application icon for all of\n" "the instances of this application.\n" msgstr "" "이 응용프로그램의 모든 인스턴스에\n" "같은 아이콘을 사용합니다.\n" #: ../src/workspace.c:101 ../src/workspace.c:102 ../src/workspace.c:682 #, c-format msgid "Workspace %i" msgstr "작업공간 %i" #: ../src/workspace.c:728 msgid "Workspaces" msgstr "작업공간" #: ../src/workspace.c:730 msgid "could not create Workspace menu" msgstr "작업공간 메뉴를 만들수 없음" #: ../src/workspace.c:737 msgid "New" msgstr "새 작업공간 만듬" #: ../src/workspace.c:738 msgid "Destroy Last" msgstr "마지막 작업공간 없앰" #: ../src/workspace.c:740 msgid "Last Used" msgstr "마지막으로 사용됨" #~ msgid "could not load domain %s from global defaults database (%s)" #~ msgstr "전역 기본 데이터베이스에서 도메인 %s를 읽을 수 없습니다 (%s)" #~ msgid "could not initialize library %s" #~ msgstr "%s 라이브러리를 초기화 할수 없음" #~ msgid "could not find function %s::%s" #~ msgstr "%s 함수를 찾지 못함::%s" #~ msgid "" #~ "Window Maker received signal %i\n" #~ "(%s)." #~ msgstr "" #~ "윈도우 메이커가 %i 신호를 받음\n" #~ "(%s)." #~ msgid "Allow Lowering" #~ msgstr "아래로 가는 것 허용함" #~ msgid "bad value in docked icon position %i,%i" #~ msgstr "Dock 아이콘의 위치값 %i,%i 는 잘못된 값" #~ msgid "could not load default icon \"%s\":%s" #~ msgstr "기본 아이콘 \"%s\"를 읽지 못함:%s" #~ msgid " --no-cpp \t\tdisable preprocessing of configuration files" #~ msgstr " --no-cpp \t\t설정파일의 전처리를 하지 않음" #~ msgid " --synchronous\t\tturn on synchronous display mode" #~ msgstr "--synchronous\t\t디스플레이 동기화 사용" #~ msgid "could not define value for %s for cpp" #~ msgstr "cpp의 %s를 위한 값이 정의되지 않음" #~ msgid "could not get password entry for UID %i" #~ msgstr "UID %i의 암호 항목를 얻을 수 없습니다" #~ msgid "your machine is misconfigured. HOSTNAME is set to %s" #~ msgstr "시스템 설정이 잘못되었습니다. HOSTNAME을 %s로 설정합니다" #~ msgid "your machine is misconfigured. HOST is set to %s" #~ msgstr "시스템 설정이 잘못되었습니다. HOST를 %s로 설정합니다" #~ msgid "selection timed-out" #~ msgstr "선택시간 초과" #~ msgid "unable to get dropped data from DND drop" #~ msgstr "DND 드롭에서 떨어뜨린 데이터를 얻을 수 없습니다" #~ msgid "error getting dropped data from DND drop" #~ msgstr "DND 드롭에서 떨어뜨린 데이터를 얻는데 오류가 발생하였습니다" #~ msgid "out of memory while getting data from DND drop" #~ msgstr "DND 드롭에서 떨어뜨린 데이터를 얻는데 메모리가 부족합니다" #~ msgid "could not load mask bitmap file \"%s\". Won't use mask" #~ msgstr "비트맵 파일 \"%s\"를 읽을 수 없습니다. 마스크를 사용하지 않습니다" #~ msgid "unterminated string" #~ msgstr "끝나지 않은 문자열" #~ msgid "unterminated array" #~ msgstr "끝나지 않은 배열" #~ msgid "missing , in array or unterminated array" #~ msgstr "배열에서 쉼표가 빠졌거나 끝나지 않은 배열" #~ msgid "could not get array element" #~ msgstr "배열 원소를 얻을 수 없습니다" #~ msgid "unterminated dictionary" #~ msgstr "종료하지 않은 사전" #~ msgid "missing dictionary key" #~ msgstr "사전 키 없음" #~ msgid "missing dictionary entry key or unterminated dictionary" #~ msgstr "사전 엔트리 키가 없거나 종료하지 않은 사전" #~ msgid "error parsing dictionary key" #~ msgstr "사전 키를 해석하는데 오류입니다" #~ msgid "missing = in dictionary entry" #~ msgstr "사전 엔트리에 = 가 빠져 있습니다" #~ msgid "missing ; in dictionary entry" #~ msgstr "사전 엔트리에 ;가 빠져 있습니다" #~ msgid "" #~ "was expecting a string, dictionary, data or array. If it's a string, try " #~ "enclosing it with \"." #~ msgstr "" #~ "는 문자열, 사전, 데이터 또는 배열이 필요합니다. 문자열이라면 \"로 묶으십시" #~ "오." #~ msgid "Comments are not allowed inside WindowMaker owned domain files." #~ msgstr "주석문은 윈도우 메이커 도메인 파일 내에서는 허용되지 않습니다." #~ msgid "extra data after end of file" #~ msgstr "파일 끝 뒤에 데이터가 또 있습니다" #~ msgid "Close X session" #~ msgstr "X 세션 닫기" #~ msgid "" #~ "Close Window System session?\n" #~ "Kill might close applications with unsaved data." #~ msgstr "" #~ "윈도우 시스템 세션을 종료하겠습니까?\n" #~ "애플리케이션이 종료되고 저장하지 않은 자료는 잃습니다." #~ msgid "%s:maximal line size exceeded in menu config: %s" #~ msgstr "%s:메뉴 설정의 최대 줄수를 초과함: %s" #~ msgid "could not make arguments for menu file preprocessor" #~ msgstr "메뉴 파일 전처리기를 위한 인수를 만들 수 없음" #~ msgid "%s:could not open/preprocess menu file" #~ msgstr "%s:메뉴 파일을 열거나 전처리할 수 없음" #~ msgid "error reading preprocessed menu data" #~ msgstr "전처리된 메뉴 데이터를 읽는데 오류" #~ msgid "error making logo image for panel:%s" #~ msgstr "패널에 쓰일 로고 이미지를 만들지 못함:%s" #~ msgid "out of memory while saving session state" #~ msgstr "세션 상태를 저장하는 중 메모리 부족" #~ msgid "end of memory while saving session state" #~ msgstr "세션 상태를 저장하는 중 메모리 부족" #~ msgid "connection to the session manager was lost" #~ msgstr "세션 관리자의 연결이 끊어졌습니다" #~ msgid "got signal %i (%s) - restarting\n" #~ msgstr "%i (%s) 신호 감지 - 재시동함\n" #~ msgid "got signal %i - restarting\n" #~ msgstr "%i 신호 감지 - 재시동함\n" #~ msgid "got signal %i (%s) - exiting...\n" #~ msgstr "%i (%s) 신호 감지 - 종료함...\n" #~ msgid "got signal %i - exiting...\n" #~ msgstr "%i 신호 감지 - 종료함...\n" #~ msgid "got signal %i (%s)\n" #~ msgstr "%i (%s) 신호 감지\n" #~ msgid "got signal %i\n" #~ msgstr "%i 신호 감지\n" #~ msgid "" #~ "crashed while trying to do some post-crash cleanup. Aborting immediatelly." #~ msgstr "" #~ "비정상 종료후 처리를 하려는 동안에 비정상 종료되었습니다. 즉시 종료합니다." #~ msgid "trying to restart Window Maker..." #~ msgstr "윈도우 메이커 재시작..." #~ msgid "trying to start alternate window manager..." #~ msgstr "대체용 창 관리자 실행함..." #~ msgid "failed to start alternate window manager. Aborting." #~ msgstr "대체용 창 관리자를 실행 실패. 종료." #~ msgid "" #~ "a fatal error has occured, probably due to a bug. Please fill the " #~ "included BUGFORM and report it." #~ msgstr "" #~ "치명적인 오류 발생, 아마도 버그인 것 같습니다. BUGFORM을 작성해 보내주시" #~ "길 부탁드립니다." #~ msgid "library \"%s\" cound not be opened." #~ msgstr "\"%s\" 라이브러리를 열 수 없음." #~ msgid "function \"%s\" not found in library \"%s\"" #~ msgstr "\"%s\" 함수가 \"%s\" 라이브러리에 없음" #~ msgid "function textures not supported on this system, sorry." #~ msgstr "이 시스템은 텍스쳐 함수를 지원하지 않습니다." #~ msgid "Update" #~ msgstr "갱신" #~ msgid "invalid data in selection" #~ msgstr "잘못된 데이터가 선택됨" WindowMaker-0.95.9/po/bs.po0000644000175000017500000010753213431646201012360 00000000000000# translation of bs.po to Bosanski # Copyright (C) 2004 Free Software Foundation, Inc. # Ahmet Mulalić , 2004. # msgid "" msgstr "" "Project-Id-Version: bs\n" "PO-Revision-Date: 2004-08-30 00:23+0200\n" "Last-Translator: Ahmet Mulalić \n" "Language-Team: Bosanski \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.3.1\n" #: ../src/appicon.c:509 ../src/dialog.c:215 ../src/dialog.c:271 ../src/dock.c:2953 ../src/dockedapp.c:206 ../src/winspector.c:279 ../src/winspector.c:295 msgid "Error" msgstr "Greška" #: ../src/appicon.c:510 msgid "Could not open specified icon file" msgstr "Ne mogu ovoriti navedenu ikonu" #: ../src/appicon.c:511 ../src/dialog.c:114 ../src/dialog.c:215 ../src/dialog.c:271 ../src/dialog.c:451 ../src/dock.c:420 ../src/dock.c:2954 ../src/dockedapp.c:206 ../src/dockedapp.c:350 ../src/winspector.c:280 ../src/winspector.c:296 msgid "OK" msgstr "U redu" #: ../src/appicon.c:532 ../src/dock.c:268 ../src/winmenu.c:85 msgid "Kill Application" msgstr "Ubij Aplikaciju" #: ../src/appicon.c:533 ../src/dock.c:269 ../src/winmenu.c:86 msgid "" "This will kill the application.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" "Ovo će ubiti aplikaciju.\n" "Promjene koje nisu sačuvane biti će izgubljene.\n" "Molimo potvrdite." #: ../src/appicon.c:534 ../src/dock.c:270 ../src/winmenu.c:87 msgid "Yes" msgstr "Da" #: ../src/appicon.c:534 ../src/dock.c:270 ../src/winmenu.c:87 msgid "No" msgstr "Ne" #: ../src/appicon.c:548 ../src/dock.c:1030 msgid "Unhide Here" msgstr "Pokaži ovdje" #: ../src/appicon.c:549 ../src/dock.c:1032 msgid "(Un)Hide" msgstr "Otkrij/Sakrij" #: ../src/appicon.c:550 msgid "Set Icon..." msgstr "Postavi ikonu..." #: ../src/appicon.c:551 ../src/dock.c:1036 ../src/winmenu.c:342 msgid "Kill" msgstr "Ubij" #: ../src/defaults.c:690 ../src/startup.c:686 ../src/startup.c:704 ../src/startup.c:710 msgid "could not read domain \"%s\" from defaults database" msgstr "ne mogu pročitati domenu \"%s\" iz standardne baze podataka" #: ../src/defaults.c:736 ../src/defaults.c:860 ../src/defaults.c:899 ../src/defaults.c:929 msgid "Domain %s (%s) of defaults database is corrupted!" msgstr "Domena %s (%s) standardne baze podataka je pokvarena!" #: ../src/defaults.c:741 ../src/defaults.c:881 ../src/defaults.c:912 ../src/defaults.c:938 msgid "could not load domain %s from user defaults database" msgstr "ne mogu pročitati domenu %s iz korisnikove standardne baze podataka" #: ../src/defaults.c:752 ../src/defaults.c:845 msgid "Domain %s (%s) of global defaults database is corrupted!" msgstr "Domena %s (%s) globalne standardne baze podataka je pokvarena!" #: ../src/defaults.c:771 ../src/defaults.c:850 msgid "could not load domain %s from global defaults database" msgstr "ne mogu učitati domenu %s iz globalne standardne baze podataka" #: ../src/defaults.c:1240 msgid "wrong option value for key \"%s\". Should be one of %s" msgstr "netačna vrijednost opcije za kjluč \"%s\". Trebala bi biti jedna od %s" #: ../src/defaults.c:1287 msgid "can't convert \"%s\" to boolean for key \"%s\"" msgstr "ne mogu konvertovati \"%s\" u logički izraz za \"%s\"" #: ../src/defaults.c:1292 ../src/defaults.c:1326 ../src/defaults.c:1358 ../src/defaults.c:1371 ../src/defaults.c:1386 ../src/defaults.c:1401 ../src/defaults.c:1472 ../src/defaults.c:1484 ../src/defaults.c:1739 ../src/defaults.c:1753 ../src/defaults.c:1791 ../src/defaults.c:1803 ../src/defaults.c:1815 ../src/defaults.c:1838 ../src/defaults.c:1865 ../src/defaults.c:1878 ../src/defaults.c:1891 ../src/defaults.c:1921 ../src/defaults.c:1962 ../src/defaults.c:1974 ../src/defaults.c:1986 ../src/defaults.c:2012 ../src/defaults.c:2032 ../src/defaults.c:2045 ../src/defaults.c:2060 ../src/defaults.c:2099 ../src/defaults.c:2164 msgid "using default \"%s\" instead" msgstr "umjesto toga koristim standardno \"%s\"" #: ../src/defaults.c:1323 msgid "can't convert \"%s\" to integer for key \"%s\"" msgstr "ne mogu konvertovati \"%s\" u cijeli broj za ključ \"%s\"" #: ../src/defaults.c:1353 ../src/defaults.c:1467 ../src/defaults.c:1734 ../src/defaults.c:1786 ../src/defaults.c:1957 ../src/wdefaults.c:544 ../src/wdefaults.c:580 msgid "Wrong option format for key \"%s\". Should be %s." msgstr "Netačna format opcija za ključ \"%s\". Trebao bi biti %s" #: ../src/defaults.c:1366 msgid "Incorrect number of elements in array for key \"%s\"." msgstr "Netačan broj elemenata u nizu za ključ \"%s\"" #: ../src/defaults.c:1381 msgid "Wrong value for key \"%s\". Should be Coordinate." msgstr "Netačna vrijednost za ključ \"%s\". Trebale bi biti koordinate." #: ../src/defaults.c:1396 msgid "can't convert array to integers for \"%s\"." msgstr "ne mogu konvertovati niz u cijele brojeve za \"%s\"." #: ../src/defaults.c:1580 ../src/defaults.c:1611 ../src/defaults.c:1623 ../src/defaults.c:1665 ../src/defaults.c:1705 msgid "\"%s\" is not a valid color name" msgstr "\"%s\"je krivo ime za boju" #: ../src/defaults.c:1592 msgid "bad number of arguments in gradient specification" msgstr "loš broj argumenata u specifikaciji gradacije" #: ../src/defaults.c:1638 msgid "too few arguments in multicolor gradient specification" msgstr "premalo argumenata u specifikaciji višebojne gradacije" #: ../src/defaults.c:1748 msgid "Error in texture specification for key \"%s\"" msgstr "Greška u specifikaciji teksture za ključ \"%s\"" #: ../src/defaults.c:1799 ../src/defaults.c:1834 ../src/defaults.c:1970 ../src/defaults.c:2008 msgid "Too few elements in array for key \"WorkspaceBack\"." msgstr "Premalo elemenata u nizu za ključ \"WorkspaceBack\"." #: ../src/defaults.c:1811 ../src/defaults.c:1982 msgid "Wrong type for workspace background. Should be Texture." msgstr "Krivi tip za pozadinu radnog prostora. Trebala bi biti tekstura." #: ../src/defaults.c:1861 ../src/defaults.c:2028 msgid "Cannot get color entry for key \"WorkspaceBack\"." msgstr "Ne mogu uzeti boju za ključ \"WorkspaceBack\"." #: ../src/defaults.c:1873 ../src/defaults.c:2040 msgid "key \"WorkspaceBack\" has invalid color \"%s\"" msgstr "ključ \"WorkspaceBack\" ima pogrešnu boju \"%s\"" #: ../src/defaults.c:1887 ../src/defaults.c:2056 msgid "Cannot get file entry for key \"WorkspaceBack\"." msgstr "Ne mogu uzeti unos datoteke za ključ \"WorkspaceBack\"." #: ../src/defaults.c:1900 ../src/defaults.c:2081 msgid "could not find background image \"%s\"" msgstr "ne mogu naći sliku za pozadinu \"%s\"" #: ../src/defaults.c:1917 ../src/defaults.c:2095 msgid "Error in texture specification for key \"WorkspaceBack\"" msgstr "Greška u specifikaciji teksture za ključ \"WorkspaceBack\"" #: ../src/defaults.c:2076 msgid "could not run \"%s\"" msgstr "ne mogu pokrenuti \"%s\"" #: ../src/defaults.c:2129 msgid "could not load any usable font" msgstr "ne mogu učitati nijedan iskoristivi font" #: ../src/defaults.c:2159 msgid "could not get color for key \"%s\"" msgstr "ne mogu uzeti boju za ključ \"%s\"" #: ../src/defaults.c:2218 ../src/rootmenu.c:440 msgid "%s:invalid key modifier \"%s\"" msgstr "%s:netačan ključ modifiera \"%s\"" #: ../src/defaults.c:2230 msgid "%s:invalid kbd shortcut specification \"%s\"" msgstr "%s: netačna specifikacija kbd prečice \"%s\"" #: ../src/defaults.c:2237 msgid "%s:invalid key in shortcut \"%s\"" msgstr "%s netačan ključ u prečici \"%s\"" #: ../src/defaults.c:2263 msgid "%s: modifier key %s is not valid" msgstr "%s: modifier ključ %s nije tačan" #: ../src/defaults.c:2339 msgid "could not render texture for icon background" msgstr "ne mogu predstaviti teksturu za pozadinu ikone" #: ../src/defaults.c:2695 msgid "background texture rendering was unsuccessfull" msgstr "neuspješno predstavljanje teksure za pozadinu" #: ../src/defaults.c:2722 msgid "could not load image %s for option %s:%s\n" msgstr "ne mogu učitati sliku %s za opciju %s:%s\n" #: ../src/defaults.c:2738 msgid "could not spawn texture rendering subprocess for option" msgstr "" #: ../src/defaults.c:2792 ../src/defaults.c:2880 msgid "could not render texture for workspace background" msgstr "ne mogu predstaviti teksturu za pozadinu radnog prostora" #: ../src/dialog.c:114 ../src/dialog.c:458 ../src/dock.c:420 ../src/dockedapp.c:356 ../src/rootmenu.c:207 ../src/rootmenu.c:236 msgid "Cancel" msgstr "Poništi" #: ../src/dialog.c:210 msgid "Could not open directory \"%s\":\n%s" msgstr "Ne mogu otvoriti direktorij \"%s\":\n%s" #: ../src/dialog.c:266 msgid "Could not load image file " msgstr "Ne mogu učitati image datoteku " #: ../src/dialog.c:395 msgid "Directories" msgstr "Direktoriji" #: ../src/dialog.c:404 msgid "Icons" msgstr "Ikone" #: ../src/dialog.c:441 msgid "File Name:" msgstr "Ime datoteke:" #: ../src/dialog.c:464 msgid "Choose File" msgstr "Odaberi datoteku" #: ../src/dialog.c:474 msgid "Icon Chooser" msgstr "Birač ikona" #: ../src/dock.c:209 msgid "Type the name for workspace %i:" msgstr "Upiši ime za radni prostor %i:" #: ../src/dock.c:210 ../src/dock.c:1009 msgid "Rename Workspace" msgstr "Preimenuj radni prostor" #: ../src/dock.c:418 msgid "Workspace Clip" msgstr "Clip radnog prostora" #: ../src/dock.c:419 msgid "All selected icons will be removed!" msgstr "Sve odabrane ikone će biti uklonjene!" #: ../src/dock.c:469 msgid "Keep Icon" msgstr "Zadrži ikonu" #: ../src/dock.c:470 ../src/dock.c:1924 ../src/dock.c:2046 msgid "Type the command used to launch the application" msgstr "Upiši naredbu za pokretanje aplikacije" #: ../src/dock.c:833 msgid "could not launch application %s\n" msgstr "ne mogu pokrenuti aplikaciju %s\n" #: ../src/dock.c:888 msgid "could not create workspace submenu for Clip menu" msgstr "ne mogu napraviti podizbornik radnog prostora za Clip izbornik" #: ../src/dock.c:946 msgid "could not create options submenu for Clip menu" msgstr "ne mogu napraviti podizbornik opcija za Clip izbornik" #: ../src/dock.c:950 ../src/dock.c:998 ../src/winspector.c:1097 msgid "Keep on top" msgstr "Zadrži na vrhu" #: ../src/dock.c:956 msgid "Collapsed" msgstr "Srušen" #: ../src/dock.c:962 msgid "AutoCollapse" msgstr "Automatsko rušenje" #: ../src/dock.c:968 msgid "AutoAttract Icons" msgstr "Automatsko privlačenje ikona" #: ../src/dock.c:974 msgid "Keep Attracted Icons" msgstr "Zadrži privučene ikone" #: ../src/dock.c:1004 msgid "Clip Options" msgstr "Clip Opcije" #: ../src/dock.c:1011 msgid "(Un)Select Icon" msgstr "(De)Selektiraj ikonu" #: ../src/dock.c:1013 msgid "(Un)Select All Icons" msgstr "(De)Selektiraj sve ikone" #: ../src/dock.c:1016 msgid "Keep Icon(s)" msgstr "Zadrži ikonu(e)" #: ../src/dock.c:1018 msgid "Move Icon(s) To" msgstr "Pomjeri ikonu(e) na" #: ../src/dock.c:1023 msgid "Remove Icon(s)" msgstr "Ukloni ikonu(e)" #: ../src/dock.c:1025 msgid "Attract Icons" msgstr "Privuci ikone" #: ../src/dock.c:1028 msgid "Launch" msgstr "Pokreni" #: ../src/dock.c:1034 msgid "Settings..." msgstr "Postavke..." #: ../src/dock.c:1416 ../src/dock.c:1430 ../src/dock.c:1444 ../src/dock.c:1454 msgid "bad value in docked icon state info %s" msgstr "loša vrijednost u usidrenom info stanju ikone %s" #: ../src/dock.c:1462 msgid "bad value in docked icon position %i,%i" msgstr "kriva vrijednost u usidrenoj poziciji ikone %i,%i" #: ../src/dock.c:1691 msgid "there are too many icons stored in dock. Ignoring what doesn't fit" msgstr "previše je ikona stavljeno na dock. Zanemarujem ono što ne stane" #. icon->forced_dock = 1; #: ../src/dock.c:1923 ../src/dock.c:2045 msgid "Dock Icon" msgstr "Dock ikona" #: ../src/dock.c:2946 ../src/dock.c:2950 msgid "Could not execute command \"%s\"" msgstr "Ne mogu izvršiti naredbu \"%s\"" #: ../src/dockedapp.c:128 msgid "could not find icon %s, used in a docked application" msgstr "ne mogu pronaći ikonu %s, za usidrenu aplikaciju" #: ../src/dockedapp.c:205 msgid "Could not open specified icon file:%s" msgstr "Ne mogu otvoriti navedenu ikonu:%s" #: ../src/dockedapp.c:291 msgid "Start when WindowMaker is started" msgstr "Pokreni kada se pokrene WindowMaker" #: ../src/dockedapp.c:298 msgid "Application path and arguments" msgstr "Putevi i argumenti aplikacije" #: ../src/dockedapp.c:309 msgid "Command for files dropped with DND" msgstr "Naredba za datoteke spuštene sa DND-om" #: ../src/dockedapp.c:321 msgid "%d will be replaced with the file name" msgstr "%d će biti zamjenjeno imenom datoteke" #: ../src/dockedapp.c:325 msgid "DND support was not compiled in" msgstr "Podrška za DND nije ukompajlirana" #: ../src/dockedapp.c:331 msgid "Icon Image" msgstr "Ikona" #: ../src/dockedapp.c:343 ../src/winspector.c:1191 msgid "Browse..." msgstr "Pregledaj..." #: ../src/dockedapp.c:388 msgid "Docked Application Settings" msgstr "Postavke usidrene aplikacije" #: ../src/event.c:372 msgid "stack overflow: too many dead processes" msgstr "stack overflow: previše mrtvih procesa" #: ../src/framewin.c:526 msgid "could not render gradient: %s" msgstr "ne mogu predstaviti gradaciju: %s" #: ../src/framewin.c:542 ../src/framewin.c:557 ../src/framewin.c:568 ../src/framewin.c:575 ../src/framewin.c:582 ../src/icon.c:296 ../src/texture.c:492 msgid "error rendering image:%s" msgstr "greška pri predstavljanju slike: %s" #: ../src/icon.c:182 ../src/wdefaults.c:402 msgid "error loading image file \"%s\": %s" msgstr "greška pri učitavanju image datoteke \"%s\": %s" #: ../src/icon.c:428 ../src/icon.c:437 msgid "could not create directory %s" msgstr "ne mogu napraviti direktorij %s" #: ../src/icon.c:702 msgid "could not find default icon \"%s\"" msgstr "ne mogu naći standardnu ikonu \"%s\"" #: ../src/icon.c:708 msgid "could not load default icon \"%s\":%s" msgstr "ne mogu učitati standardnu ikonu \"%s\":%s" #: ../src/main.c:186 msgid "could not exec window manager" msgstr "ne mogu pokrenuti window menadžer" #: ../src/main.c:187 msgid "Restart failed!!!" msgstr "Ponovno startanje nije uspjelo!!!" #: ../src/main.c:234 msgid "%s aborted.\n" msgstr "%s prekinuto.\n" #: ../src/main.c:245 msgid "usage: %s [-options]\n" msgstr "upotreba: %s [-opcije]\n" #: ../src/main.c:246 msgid "options:" msgstr "opcije:" #: ../src/main.c:248 msgid " -nocpp \t\tdisable preprocessing of configuration files" msgstr " -nocpp \t\tonemogući preprocesiranje konfiguracijskih datoteka" #: ../src/main.c:250 msgid " -nodock\t\tdo not open the application Dock" msgstr " -nodock\t\tne otvaraj Dock aplikaciju" #: ../src/main.c:251 msgid " -noclip\t\tdo not open the workspace Clip" msgstr " -noclip\t\tne otvaraj Clip radnih prostora" #: ../src/main.c:255 msgid " -visualid visualid\tvisual id of visual to use" msgstr " -visualid visualid\tvisual id of visual to use" #: ../src/main.c:256 msgid " -display host:dpy\tdisplay to use" msgstr " -display host:dpy\tprikaži za korištenje" #: ../src/main.c:257 msgid " -version\t\tprint version and exit" msgstr " -version\t\tštampaj verziju i izađi" #: ../src/main.c:269 msgid "" "could not find user GNUstep directory (%s).\n" "Make sure you have installed Window Maker correctly and run wmaker.inst" msgstr "" "Ne mogu naći korisnički GNUstep direktorij (%s).\n" "Provjerite da li ste pravilno instalirali Window Maker i pokrenuli wmaker.inst" #: ../src/main.c:291 msgid "%s:could not execute initialization script" msgstr "%s:ne mogu izvršiti inicijalizacijsku skriptu" #: ../src/main.c:310 msgid "%s:could not execute exit script" msgstr "%s:ne mogu izvršiti izlaznu skriptu" #: ../src/main.c:367 ../src/main.c:374 ../src/main.c:381 msgid "too few arguments for %s" msgstr "premalo argumenata za %s" #: ../src/main.c:385 msgid "bad value for visualid: \"%s\"" msgstr "loša vrijednost za visualid: \"%s\"" #: ../src/main.c:426 msgid "X server does not support locale" msgstr "X server ne podržava locale" #: ../src/main.c:429 msgid "cannot set locale modifiers" msgstr "ne mogu postaviti loacale modifiers" #: ../src/main.c:446 msgid "could not open display \"%s\"" msgstr "ne mogu otvoriti prikaz \"%s\"" #: ../src/menu.c:285 msgid "wrealloc() failed while trying to add menu item" msgstr "wrealloc() pao pokušavajući dodati postavku u izbornik" #: ../src/misc.c:71 msgid "could not define value for %s for cpp" msgstr "ne mogu definirati vrijednost za %s za cpp" #: ../src/misc.c:101 msgid "could not get password entry for UID %i" msgstr "ne mogu uzeti unos šifre za UID %i" #: ../src/misc.c:125 msgid "your machine is misconfigured. HOSTNAME is set to %s" msgstr "vaša mašina je krivo konfigurirana. HOSTNAME je postavljen na %s" #: ../src/misc.c:131 msgid "your machine is misconfigured. HOST is set to %s" msgstr "vaša mašina je krivo konfigurisana. HOST je postavljen na %s" #: ../src/misc.c:773 msgid "selection timed-out" msgstr "vrijeme za odabir isteklo" #: ../src/misc.c:788 msgid "Program Arguments" msgstr "Argumenti programa" #: ../src/misc.c:807 msgid "Enter command arguments:" msgstr "Upiši argumente naredbe:" #: ../src/misc.c:833 msgid "unable to get dropped data from DND drop" msgstr "ne mogu uzeti spuštene podatke od DND spuštanja" #: ../src/misc.c:841 msgid "error getting dropped data from DND drop" msgstr "greška pri uzimanju spuštenih podataka od DND spuštanja" #: ../src/misc.c:847 msgid "out of memory while getting data from DND drop" msgstr "iskorištena sva memorija pri uzimanju podataka od DND spuštanja" #: ../src/misc.c:891 ../src/misc.c:1011 msgid "out of memory during expansion of \"%s\"" msgstr "iskorištena sva memorija za vrijeme širenja \"%s\"" #: ../src/misc.c:945 msgid "out of memory during expansion of \"%w\"" msgstr "iskorištena sva memorija za vrijeme širenja \"%w\"" #: ../src/misc.c:964 msgid "out of memory during expansion of \"%a\"" msgstr "iskorištena sva memorija za vrijeme širenja \"%a\"" #: ../src/misc.c:990 msgid "out of memory during expansion of \"%d\"" msgstr "iskorištena sva memorija za vrijeme širenja \"%d\"" #: ../src/misc.c:1004 msgid "selection not available" msgstr "odabir nije dostupan" #: ../src/misc.c:1076 ../src/misc.c:1082 msgid "bad window name value in %s state info" msgstr "loša vrijednost imena za prozor u %s u info stanju" #: ../src/pixmap.c:235 msgid "could not load mask bitmap file \"%s\". Won't use mask" msgstr "ne mogu učitati bitmap datoteku \"%s\" za masku. Neću koristiti masku." #: ../src/proplist.c:180 msgid "unterminated string" msgstr "nedovršen string" #: ../src/proplist.c:247 msgid "unterminated array" msgstr "nedovršen niz" #: ../src/proplist.c:256 msgid "missing , in array or unterminated array" msgstr "nedostaje , u nizu ili nedovršen niz" #: ../src/proplist.c:267 msgid "could not get array element" msgstr "ne mogu uzeti element niza" #: ../src/proplist.c:297 msgid "unterminated dictionary" msgstr "nedovršen riječnik" #: ../src/proplist.c:315 msgid "missing dictionary key" msgstr "nedostaje ključ riječnika" #: ../src/proplist.c:317 msgid "missing dictionary entry key or unterminated dictionary" msgstr "nedostaje ključ riječnika ili nezavršen niz" #: ../src/proplist.c:323 msgid "error parsing dictionary key" msgstr "greška pri analiziranju ključa riječnika" #: ../src/proplist.c:332 msgid "missing = in dictionary entry" msgstr "nedostaje = u riječničkom unosu" #: ../src/proplist.c:351 msgid "missing ; in dictionary entry" msgstr "nedostaje ; u riječničkom unosu" #: ../src/proplist.c:432 msgid "was expecting a string, dictionary, data or array." msgstr "je očekivao string, riječnik, podatak ili niz." #: ../src/proplist.c:434 msgid "Comments are not allowed inside WindowMaker owned domain files." msgstr "Komentari nisu dozvoljeni unutar datoteka koje posjeduje WindowMaker." #: ../src/proplist.c:453 msgid "could not open domain file %s" msgstr "ne mogu otvoriti domain datoteku %s" #: ../src/proplist.c:466 msgid "extra data after end of file" msgstr "višak podataka nakon kraja datoteke" #: ../src/resources.c:71 msgid "The following character sets are missing in %s:" msgstr "Sljedeći znak setovi nedostaju u %s:" #: ../src/resources.c:76 msgid "The string \"%s\" will be used in place" msgstr "String \"%s\"će biti korišten na mjestu" #: ../src/resources.c:78 msgid "of any characters from those sets." msgstr "od bilo kojih znakova iz tih setova" #: ../src/resources.c:81 msgid "could not create font set %s. Trying fixed" msgstr "ne mogu napraviti font set %s. Probat ću fixed" #: ../src/resources.c:98 msgid "could not load font %s. Trying fixed" msgstr "ne mogu učitati font %s. Probat ću fixed" #: ../src/resources.c:136 msgid "could not parse color \"%s\"" msgstr "ne mogu analizirati boju \"%s\"" #: ../src/resources.c:140 msgid "could not allocate color \"%s\"" msgstr "ne mogu alocirati boju \"%s\"" #: ../src/rootmenu.c:205 ../src/rootmenu.c:207 ../src/rootmenu.c:236 msgid "Exit" msgstr "Izlaz" #: ../src/rootmenu.c:206 msgid "Exit window manager?" msgstr "Izlaz iz window managera?" #: ../src/rootmenu.c:234 msgid "Close X session" msgstr "Zatvori X sesiju" #: ../src/rootmenu.c:235 msgid "" "Close Window System session?\n" "(all applications will be closed)" msgstr "" "Zatvoriti Window Sistem sesiju?\n" "(sve aplikacije će biti zatvorene)" #: ../src/rootmenu.c:454 msgid "%s:invalid kbd shortcut specification \"%s\" for entry %s" msgstr "%s:netačna specifikacija za kbd prečicu \"%s\" za unos %s" #: ../src/rootmenu.c:462 msgid "%s:invalid key in shortcut \"%s\" for entry %s" msgstr "%s:netačan ključ u prečici \"%s\" za unos %s" #: ../src/rootmenu.c:515 msgid "%s: unmatched '\"' in menu file" msgstr "%s: unmatched '\" u datoteci izbornika" #: ../src/rootmenu.c:565 msgid "%s: missing command" msgstr "%s: nedostaje naredba" #: ../src/rootmenu.c:598 msgid "invalid OPEN_MENU specification: %s" msgstr "netačna OPEN_MENU specifikacija: %s" #: ../src/rootmenu.c:663 msgid "%s:could not stat menu" msgstr "%s:ne mogu statirati izbornik" #: ../src/rootmenu.c:671 msgid "%s:could not stat menu :%s" msgstr "%s:ne mogu statirati izbornik: %s" #: ../src/rootmenu.c:689 msgid "too many parameters in OPEN_MENU: %s" msgstr "previše parametara u OPEN_MENU: %s" #: ../src/rootmenu.c:725 msgid "There are more than one WORKSPACE_MENU commands in the applications menu. Only one is allowed." msgstr "Ima više nego jedna WORKSPACE_MENU naredba u izborniku aplikacija. Smije biti samo jedna." #: ../src/rootmenu.c:754 ../src/rootmenu.c:772 msgid "%s:missing parameter for menu command \"%s\"" msgstr "%s:nedostaje parametar za naredbu izbornika \"%s\"" #: ../src/rootmenu.c:835 msgid "%s:unknown command \"%s\" in menu config." msgstr "%s:nepoznata naredba \"%s\" u konfiguraciji izbornika" #: ../src/rootmenu.c:843 msgid "%s:can't add shortcut for entry \"%s\"" msgstr "%s:ne mogu dodati kraticu za unos \"%s\"" #: ../src/rootmenu.c:980 msgid "%s:maximal line size exceeded in menu config: %s" msgstr "%s prekoračena maksimalna veličina linije u konfiguraciji izbornika: %s" #: ../src/rootmenu.c:1002 ../src/rootmenu.c:1094 ../src/rootmenu.c:1195 msgid "%s:missing command in menu config: %s" msgstr "%s:nedostaje naredba u konfiguraciji izbornika: %s" #: ../src/rootmenu.c:1032 msgid "%s:syntax error in menu file:END declaration missing" msgstr "%s:greška u sintaksi u datoteci izbornika: nedostaje deklaracija END" #: ../src/rootmenu.c:1061 ../src/rootmenu.c:1160 msgid "could not make arguments for menu file preprocessor" msgstr "ne mogu napraviti argumente za preprocesor datoteke izbornika" #: ../src/rootmenu.c:1067 ../src/rootmenu.c:1167 msgid "%s:could not open/preprocess menu file" msgstr "%s:ne mogu otvoriti/preprocesirati datoteku izbornika" #: ../src/rootmenu.c:1079 ../src/rootmenu.c:1180 msgid "could not open menu file \"%s\": %s" msgstr "ne mogu otvoriti datoteku izbornika \"%s\": %s" #: ../src/rootmenu.c:1106 msgid "%s:invalid menu file. MENU command is missing" msgstr "%s:netačna datoteka izbornika. Nedostaje MENU naredba" #: ../src/rootmenu.c:1115 msgid "error reading preprocessed menu data" msgstr "greška pri čitanju preprocesiranih podataka za izbornik" #: ../src/rootmenu.c:1207 msgid "%s:no title given for the root menu" msgstr "%s:nije naveden naslov za root izbornik" #: ../src/rootmenu.c:1261 ../src/rootmenu.c:1324 ../src/rootmenu.c:1368 msgid "out of memory while constructing directory menu %s" msgstr "iskorištena sva memorija prilikom konstrukcije direktorija izbornika %s" #: ../src/rootmenu.c:1271 msgid "%s:could not stat file \"%s\" in menu directory" msgstr "%s:ne mogu statirati datoteku \"%s\" u izbornik direktoriju" #: ../src/rootmenu.c:1417 msgid "Commands" msgstr "Naredbe" #: ../src/rootmenu.c:1419 msgid "Exit..." msgstr "Izlaz..." #: ../src/rootmenu.c:1486 msgid "could not find menu file \"%s\" referenced in WMRootMenu" msgstr "ne mogu naći datoteku izbornika \"%s\" navedenoj u WMRootMenu datoteci" #: ../src/rootmenu.c:1493 msgid "could not access menu \"%s\" referenced in WMRootMenu" msgstr "ne mogu pristupiti datoteci izbornika \"%s\" navedenoj u WMRootMenu" #: ../src/rootmenu.c:1521 ../src/rootmenu.c:1576 msgid "%s:format error in root menu configuration \"%s\"" msgstr "%s:greška u formatu u konfiguraciji root izbornika \"%s\"" #: ../src/screen.c:412 msgid "could not load logo image for panels" msgstr "ne mogu učitati logo image za panele" #: ../src/screen.c:415 msgid "error making logo image for panel:%s" msgstr "greška pri kreiranju logo imagea za panel:%s" #: ../src/screen.c:594 msgid "could not initialize graphics library context: %s" msgstr "ne mogu inicijalizirati sadržaj grafičke biblioteke: %s" #: ../src/session.c:113 ../src/wdefaults.c:562 ../src/winspector.c:343 msgid "can't convert \"%s\" to boolean" msgstr "ne mogu konvertovati \"%s\" u logički izraz" #: ../src/stacking.c:88 msgid "could not get window list!!" msgstr "ne mogu uzeti listu prozora!!" #: ../src/startup.c:188 msgid "internal X error: %s\n" msgstr "interna X greška: %s\n" #: ../src/startup.c:251 msgid "got signal %i (%s) - restarting\n" msgstr "dobio sam signal %i (%s) - ponovo pokrećem\n" #: ../src/startup.c:253 msgid "got signal %i - restarting\n" msgstr "primio signal %i - ponovo pokrećem\n" #: ../src/startup.c:267 msgid "%s: Received signal SIGTERM. Exiting..." msgstr "%s: Primio signal SIGTERM. Izlazim..." #: ../src/startup.c:279 msgid "got signal %i (%s)\n" msgstr "primio signal %i (%s)\n" #: ../src/startup.c:281 msgid "got signal %i\n" msgstr "primio signal %i\n" #: ../src/startup.c:286 msgid "crashed while trying to do some post-crash cleanup. Aborting immediatelly." msgstr "srušio se dok sam pokušavao čistiti. Prekidam odmah." #. restart another window manager so that the X session doesn't #. * go to space #: ../src/startup.c:297 msgid "trying to start alternative window manager..." msgstr "pokušavam pokrenuti drugi window menadžer" #: ../src/startup.c:696 msgid "icon size is configured to %i, but it's too small. Using 16, instead\n" msgstr "veličina ikone je konfigurirana da %i, ali je premala. Umjetsto toga koristim 16\n" #: ../src/startup.c:740 msgid "it seems that there already is a window manager running" msgstr "čini se da je već pokrenut window menadžer" #: ../src/startup.c:746 msgid "could not manage screen %i" msgstr "ne mogu upravljati ekranom %i" #: ../src/startup.c:802 msgid "could not manage any screen" msgstr "ne mogu upravljati nijednim ekranom" #: ../src/switchmenu.c:112 msgid "Windows" msgstr "Prozori" #: ../src/texture.c:267 msgid "image file \"%s\" used as texture could not be found." msgstr "ne mogu naći image datoteku \"%s\" koja se koristi kao tekstura." #: ../src/texture.c:273 msgid "could not load texture pixmap \"%s\":%s" msgstr "ne mogu učitati teksturni pixmap \"%s\":%s" #: ../src/texture.c:377 ../src/texture.c:488 msgid "could not render texture: %s" msgstr "ne mogu predstaviti teksturu: %s" #: ../src/wdefaults.c:396 msgid "could not find icon file \"%s\"" msgstr "ne mogu pronaći ikonu \"%s\"" #: ../src/window.c:2261 ../src/window.c:2404 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 "" "čini se da su NumLock, ScrollLock ili slični ključevi uključeni.\n" "Isključite ih ili neke akcije s mišom i tastaturom neće raditi." #: ../src/winmenu.c:192 ../src/winmenu.c:199 msgid "Shortcut" msgstr "Prečica" #: ../src/winmenu.c:242 ../src/winmenu.c:258 msgid "could not create submenu for window menu" msgstr "ne mogu napraviti podizbornik za izornik prozora" #. #. * 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:284 msgid "(Un)Maximize" msgstr "(De)Maksimiziraj" #: ../src/winmenu.c:292 msgid "Miniaturize" msgstr "Minimiziraj" #: ../src/winmenu.c:301 msgid "(Un)Shade" msgstr "(Un)Shade" #: ../src/winmenu.c:309 msgid "Hide" msgstr "Sakrij" #: ../src/winmenu.c:317 msgid "Select" msgstr "Odaberi" #: ../src/winmenu.c:325 msgid "Move To" msgstr "Pomjeri na" #: ../src/winmenu.c:330 msgid "Attributes..." msgstr "Atributi..." #: ../src/winmenu.c:332 msgid "Select Shortcut" msgstr "Odaberi prečicu" #: ../src/winmenu.c:335 msgid "Close" msgstr "Zatvori" #: ../src/winspector.c:277 msgid "Could not find icon \"%s\" specified for this window" msgstr "Ne mogu pronaći ikonu \"%s\" određenu za ovaj prozor" #: ../src/winspector.c:293 msgid "Could not open specified icon \"%s\":%s" msgstr "Ne mogu otvoriti navedenu ikonu \"%s\":%s" #: ../src/winspector.c:989 msgid "Save" msgstr "Sačuvaj" #: ../src/winspector.c:995 msgid "Apply" msgstr "Primjeni" #: ../src/winspector.c:1001 msgid "Revert" msgstr "Vrati" #: ../src/winspector.c:1010 ../src/winspector.c:1020 msgid "Window Specification" msgstr "Specifikacija prozora" #: ../src/winspector.c:1011 msgid "Window Attributes" msgstr "Atributi prozora" #: ../src/winspector.c:1012 msgid "Advanced Options" msgstr "Napredne opcije" #: ../src/winspector.c:1013 msgid "Icon and Initial Workspace" msgstr "Ikona i početni radni prostor" #: ../src/winspector.c:1014 msgid "Application Specific" msgstr "Specifično za aplikaciju" #: ../src/winspector.c:1028 msgid "Defaults for all windows" msgstr "Standardno za sve prozore" #: ../src/winspector.c:1064 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 "" "Kada bude sačuvano, konfiguracija će\n" "biti primjenjena na sve prozore koji\n" "imaju svoju WM_CLASS postavku\n" "postavljenu na gore navedeno ime." #: ../src/winspector.c:1071 msgid "Attributes" msgstr "Atributi" #: ../src/winspector.c:1081 msgid "Disable titlebar" msgstr "Onemogući traku za naslov" #: ../src/winspector.c:1085 msgid "Disable resizebar" msgstr "Onemogući traku za promjenu veličine" #: ../src/winspector.c:1089 msgid "Disable close button" msgstr "Bez tipke za zatvaranje" #: ../src/winspector.c:1093 msgid "Disable miniaturize button" msgstr "Bez tipke za minimiziranje" #: ../src/winspector.c:1101 msgid "Omnipresent" msgstr "Svugdjeprisutan" #: ../src/winspector.c:1105 msgid "Start Miniaturized" msgstr "Pokreni minimizirano" #: ../src/winspector.c:1109 msgid "Skip window list" msgstr "Preskoči listu prozora" #: ../src/winspector.c:1123 msgid "Advanced" msgstr "Napredno" #: ../src/winspector.c:1133 msgid "Ignore HideOthers" msgstr "Ignoriši SakrijOstale" #: ../src/winspector.c:1137 msgid "Don't bind keyboard shortcuts" msgstr "Ne primjenjuj kbd prečice" #: ../src/winspector.c:1141 msgid "Don't bind mouse clicks" msgstr "Ne primjenjuj klikove miša" #: ../src/winspector.c:1145 msgid "Keep inside screen" msgstr "Zadrži unutar ekrana" #: ../src/winspector.c:1149 msgid "Don't let it take focus" msgstr "Ne daj da uzme fokus" #: ../src/winspector.c:1153 msgid "Don't Save Session" msgstr "Nemoj sačuvati sesiju" #: ../src/winspector.c:1157 msgid "Emulate Application Icon" msgstr "Emulirati aplikacijsku ikonu" #: ../src/winspector.c:1172 msgid "Enable the \"Don't bind...\" options to allow the application to receive all mouse or keyboard events." msgstr "Omogući \"Ne primjenjuj...\" opcije da bi dopustio aplikaciji da primi sve miš ili tastaturne događaje." #: ../src/winspector.c:1179 msgid "Miniwindow Image" msgstr "Miniwindow Image" #: ../src/winspector.c:1198 msgid "Update" msgstr "Update" #: ../src/winspector.c:1213 msgid "Icon file name:" msgstr "Ime ikone:" #: ../src/winspector.c:1225 msgid "Ignore client supplied icon" msgstr "Ignoriši ponuđenu ikonu" #: ../src/winspector.c:1232 msgid "Initial Workspace" msgstr "Početni randi prostor" #: ../src/winspector.c:1237 msgid "Nowhere in particular" msgstr "Nigdje posebno" #: ../src/winspector.c:1271 msgid "Application Wide" msgstr "Preko cijele aplikacije" #: ../src/winspector.c:1281 msgid "Start Hidden" msgstr "Pokreni skriveno" #: ../src/winspector.c:1285 msgid "No application icon" msgstr "Nema ikone za aplikaciju" #: ../src/workspace.c:89 ../src/workspace.c:90 ../src/workspace.c:423 msgid "Workspace %i" msgstr "Radni prostor %i" #: ../src/workspace.c:471 msgid "Workspaces" msgstr "Radni prostori" #: ../src/workspace.c:473 msgid "could not create Workspace menu" msgstr "ne mogu kreirati izbornik Radnog prostora" #: ../src/workspace.c:480 msgid "New" msgstr "Novi" #: ../src/workspace.c:481 msgid "Destroy Last" msgstr "Uništi zadnju" #: ../src/xutil.c:228 msgid "invalid data in selection" msgstr "krivi podaci u odabiru" # msgid "could not create workspace submenu for window menu" # msgstr "ne mogu kreirati radni prostor podizbornik za prozor izbornik" # # msgid "Floating Dock" # msgstr "Plutajući dock" # # msgid "Program \"%s\" not found or cannot be executed." # msgstr "Program \"%s\" ne može biti nađen ili izvršen." # # msgid "Invalid justification type \"%s\". Should be Left, Center or Right" # msgstr "Pogrešan tip poravnanja \"%s\". Trebao bi biti Left, Center ili Right" # # msgid "Invalid colormap focus mode \"%s\". Should be Manual or Auto." # msgstr "Pogrešni colormap fokus mod \"%s\". Trebao bi biti Manual ili Auto." # # msgid "Invalid geometry display type \"%s\". Should be Center, Corner, Floating or Line." # msgstr "Pogrešni tip geometry prikaza \"%s\". Trebao bi biti Center, Corner, Floating ili Line." # # msgid "Invalid window placement mode \"%s\". Should be Auto, Cascade, Random or Manual." # msgstr "Pogrešni window placement mod \"%s\". Trebao bi biti Auto, Cascade, Random ili Manual." # # msgid "Invalid focus mode \"%s\". Should be Manual, Auto or Sloppy." # msgstr "Pogrešni fokus mod \"%s\". Trebao bi biti Manual, Auto ili Sloppy." # # msgid "Invalid mouse button \"%s\". Should be Left, Middle, Right or Button1 through Button5" # msgstr "Pogrešno dugme miša \"%s\". Trebalo bi biti Left, Middle, Right ili Button1 do Button5." # # msgid "Invalid iconification style \"%s\". Should be Zoom, Twist, Flip or None" # msgstr "Krivi stil ikonifikacije \"%s\". Trebao bi biti Zoom, Twist, Flip ili None" # # msgid "Invalid speed \"%s\". Should be UltraFast, Fast, Medium, Slow or UltraSlow." # msgstr "Pogrešna brzina \"%s\". Trebala bi biti UltraFast, Fast, Medium, Slow ili UltraSlow." # # msgid "Floating Clip" # msgstr "Plutajući Clip" # # msgid "Invalid icon Position \"%s\". Should be one of blv, blh, brv, brh, tlv, tlh, trv, trh" # msgstr "Kriva pozicija ikone \"%s\". Trebala bi biti: blv, blh, brv, brh, tlv, tlh, trv ili trh" # # msgid "" # "could not find user GNUstep directory.\n" # "Make sure you have installed WindowMaker correctly and run wmaker.inst" # msgstr "" # "ne mogu naći korisnikov GNUstep direktorij.\n" # "Provjerite da li ste ispravno instalirali WinowMaker i pokrenite wmaker.inst" # # msgid "Hide Others" # msgstr "Sakrij ostale" # # msgid "Exiting...\n" # msgstr "Izlazim...\n" # # msgid "%s:could not find menu file \"%s\"" # msgstr "%s:ne mogu naći datoteku izbornika \"%s\"" # # msgid "%s:could not access menu \"%s\"" # msgstr "%s:ne mogu pristupiti izborniku \"%s\"" # # msgid "invalid kbd shortcut specification \"%s\"" # msgstr "pogrešna specifikacija kbd kratice \"%s\"" # # msgid "invalid key modifier \"%s\"" # msgstr "pogrešni modifier \"%s\"" # # msgid "Could not find icon file specified for this window" # msgstr "Ne mogu naći ikonu specificiranu za ovaj prozor" # # msgid "could not load clip tile image" # msgstr "ne mogu učitati image za pozadinu clipa" # # msgid "invalid key in shortcut \"%s\"" # msgstr "krivi ključ u kratici \"%s\"" # # msgid "not enough memory to open window inspector panel" # msgstr "premalo memorije za otvaranje window inspector panela" # WindowMaker-0.95.9/po/pt.po0000644000175000017500000014506513431646201012402 00000000000000# Portuguese message file for WindowMaker # Last Update: version 0.60.0 # # Update History: # Alfredo Kojima # Eliphas Levy Theodoro # msgid "" msgstr "" "Project-Id-Version: 0.60.0\n" "POT-Creation-Date: 2000-06-06 10:03-0300\n" "PO-Revision-Date: 2000-06-06 14:11-03:00\n" "Last-Translator: Marcia Norie Nakaza \n" "Language-Team: Brazilian Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "From: Cyro Mendes de Moraes Neto \n" "Xgettext-Options: --default-domain=WindowMaker --add-comments --keyword=_\n" "Files: ../main.c ../event.c ../window.c ../startup.c ../shutdown.c ../wcore.c ../properties.c ../texture.c ../actions.c ../menu.c ../client.c ../pixmap.c ../image.c ../gradient.c ../button.c ../screen.c ../icon.c ../rootmenu.c ../dialog.c ../resource.c ../moveres.c ../application.c ../colormap.c ../raster.c ../placement.c ../misc.c ../appmenu.c ../keybind.c ../stacking.c ../appicon.c ../switchmenu.c ../dock.c ../winmenu.c" #: ../src/appicon.c:550 ../src/dialog.c:230 ../src/dock.c:3291 #: ../src/dockedapp.c:211 ../src/main.c:254 ../src/rootmenu.c:1765 #: ../src/winspector.c:383 ../src/winspector.c:399 msgid "Error" msgstr "Erro" #: ../src/appicon.c:551 msgid "Could not open specified icon file" msgstr "Não foi possível abrir o arquivo do ícone especificado" #: ../src/appicon.c:552 ../src/dialog.c:122 ../src/dialog.c:230 #: ../src/dialog.c:574 ../src/dialog.c:1591 ../src/dock.c:515 #: ../src/dock.c:523 ../src/dock.c:547 ../src/dock.c:3292 #: ../src/dockedapp.c:212 ../src/dockedapp.c:370 ../src/main.c:254 #: ../src/rootmenu.c:1769 ../src/winspector.c:384 ../src/winspector.c:400 msgid "OK" msgstr "Ok" #: ../src/appicon.c:579 ../src/dock.c:277 msgid "" " will be forcibly closed.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" "A aplicação obrigatoriamente será fechada (kill).\n" "Qualquer mudança não salva será perdida.\n" "Confirme por favor." #: ../src/appicon.c:585 ../src/dock.c:282 ../src/winmenu.c:125 msgid "Kill Application" msgstr "Terminar Aplicação" #: ../src/appicon.c:586 ../src/dock.c:283 ../src/winmenu.c:127 msgid "Yes" msgstr "Sim" #: ../src/appicon.c:586 ../src/dock.c:283 ../src/winmenu.c:127 msgid "No" msgstr "Não" #: ../src/appicon.c:604 ../src/dock.c:1159 ../src/dock.c:3463 msgid "Unhide Here" msgstr "Mostrar Aqui" #: ../src/appicon.c:605 ../src/appicon.c:630 ../src/dock.c:1161 #: ../src/dock.c:1163 ../src/dock.c:3475 ../src/winmenu.c:469 msgid "Hide" msgstr "Esconder" #: ../src/appicon.c:606 msgid "Set Icon..." msgstr "Colocar ícone..." #: ../src/appicon.c:607 ../src/dock.c:1167 ../src/rootmenu.c:226 #: ../src/rootmenu.c:240 ../src/winmenu.c:516 msgid "Kill" msgstr "Terminar" #: ../src/appicon.c:628 ../src/dock.c:3473 msgid "Unhide" msgstr "Mostrar" #: ../src/defaults.c:910 ../src/startup.c:820 ../src/startup.c:838 #: ../src/startup.c:844 #, c-format msgid "could not read domain \"%s\" from defaults database" msgstr "não foi possível ler o domínio \"%s\" do banco de dados padrão" #: ../src/defaults.c:956 ../src/defaults.c:1081 ../src/defaults.c:1120 #: ../src/defaults.c:1150 #, c-format msgid "Domain %s (%s) of defaults database is corrupted!" msgstr "Domínio %s (%s) do banco de dados padrão está corrompido!" #: ../src/defaults.c:961 ../src/defaults.c:1102 ../src/defaults.c:1133 #: ../src/defaults.c:1159 #, c-format msgid "could not load domain %s from user defaults database" msgstr "não foi possível carregar domínio %s do banco de dados usuário padrão" #: ../src/defaults.c:972 ../src/defaults.c:1066 #, c-format msgid "Domain %s (%s) of global defaults database is corrupted!" msgstr "Domínio %s (%s) do banco de datos padrão global está corrompido!" #: ../src/defaults.c:991 #, c-format msgid "could not load domain %s from global defaults database (%s)" msgstr "" "não foi possível carregar domínio %s do banco de dados padrão global (%s)" #: ../src/defaults.c:1071 #, c-format msgid "could not load domain %s from global defaults database" msgstr "não foi possível carregar domínio %s do banco de dados padrão global" #: ../src/defaults.c:1401 #, c-format msgid "wrong option value for key \"%s\". Should be one of %s" msgstr "formato de opção inválido para tecla \"%s\". Deveria ser um de %s" #: ../src/defaults.c:1446 #, c-format msgid "can't convert \"%s\" to boolean for key \"%s\"" msgstr "valor não booleano \"%s\" em \"%s\"" #: ../src/defaults.c:1451 ../src/defaults.c:1483 ../src/defaults.c:1515 #: ../src/defaults.c:1528 ../src/defaults.c:1543 ../src/defaults.c:1557 #: ../src/defaults.c:1627 ../src/defaults.c:1639 ../src/defaults.c:2045 #: ../src/defaults.c:2062 ../src/defaults.c:2075 ../src/defaults.c:2165 #: ../src/defaults.c:2181 ../src/defaults.c:2212 ../src/defaults.c:2299 #: ../src/defaults.c:2707 ../src/defaults.c:2720 #, c-format msgid "using default \"%s\" instead" msgstr "usando \"%s\" como padrão" #: ../src/defaults.c:1480 #, c-format msgid "can't convert \"%s\" to integer for key \"%s\"" msgstr "valor não numérico \"%s\" em \"%s\"" #: ../src/defaults.c:1510 ../src/defaults.c:1622 ../src/defaults.c:2040 #: ../src/defaults.c:2057 ../src/defaults.c:2160 ../src/defaults.c:2207 #: ../src/defaults.c:2701 ../src/wdefaults.c:565 ../src/wdefaults.c:601 #, c-format msgid "Wrong option format for key \"%s\". Should be %s." msgstr "Opção de formato inválida para \"%s\". Deveria ser %s." #: ../src/defaults.c:1523 #, c-format msgid "Incorrect number of elements in array for key \"%s\"." msgstr "Número de elementos incorreto na lista de opção para tecla de \"%s\"." #: ../src/defaults.c:1538 #, c-format msgid "Wrong value for key \"%s\". Should be Coordinate." msgstr "Valor incorreto para \"%s\". Deveria ser Coordenada." #: ../src/defaults.c:1553 #, c-format msgid "can't convert array to integers for \"%s\"." msgstr "não pode converter lista para inteiros de \"%s\"" #: ../src/defaults.c:1749 ../src/defaults.c:1781 ../src/defaults.c:1797 #: ../src/defaults.c:1843 ../src/defaults.c:1883 ../src/defaults.c:1921 #: ../src/defaults.c:1937 #, c-format msgid "\"%s\" is not a valid color name" msgstr "\"%s\" não é um nome de cor válido" #: ../src/defaults.c:1762 msgid "bad number of arguments in gradient specification" msgstr "número de argumentos inválido na especificação de gradiente" #: ../src/defaults.c:1816 msgid "too few arguments in multicolor gradient specification" msgstr "Pouquíssimos argumentos na especificação de gradiente multicor" #: ../src/defaults.c:1910 msgid "bad number of arguments in textured gradient specification" msgstr "número de argumentos inválido na especificação da textura do gradiente" #: ../src/defaults.c:1953 #, c-format msgid "bad opacity value for tgradient texture \"%s\". Should be [0..255]" msgstr "valor de opacidade errado para a textura gradient \"%s\". Deve ser [0..255]" #: ../src/defaults.c:2013 #, c-format msgid "could not initialize library %s" msgstr "não foi possível inicializar biblioteca %s" #: ../src/defaults.c:2016 #, c-format msgid "could not find function %s::%s" msgstr "função %s::%s não pôde ser encontrada" #: ../src/defaults.c:2023 #, c-format msgid "invalid texture type %s" msgstr "textura inválida: %s" #: ../src/defaults.c:2070 #, c-format msgid "Error in texture specification for key \"%s\"" msgstr "Erro na especificação de textura para a tecla \"%s\"" #: ../src/defaults.c:2177 msgid "Wrong type for workspace background. Should be a texture type." msgstr "Valor inválido para fundo de área de trabalho. Deve ser tipo textura." #: ../src/defaults.c:2225 #, c-format msgid "Wrong type for background of workspace %i. Should be a texture." msgstr "" "Valor inválido para o fundo da área de trabalho %i. Deve ser tipo textura." #: ../src/defaults.c:2267 msgid "could not load any usable font!!!" msgstr "não foi possível carregar nenhuma fonte útil!!!" #: ../src/defaults.c:2294 #, c-format msgid "could not get color for key \"%s\"" msgstr "não foi possível obter cor para tecla \"%s\"" #: ../src/defaults.c:2352 ../src/rootmenu.c:492 #, c-format msgid "%s:invalid key modifier \"%s\"" msgstr "%s:modificador de tecla inválido \"%s\"" #: ../src/defaults.c:2364 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\"" msgstr "%s: Kbd inválido para especificação de atalho \"%s\"" #: ../src/defaults.c:2371 #, c-format msgid "%s:invalid key in shortcut \"%s\"" msgstr "%s:tecla inválida no atalho \"%s\"" #: ../src/defaults.c:2396 #, c-format msgid "%s: modifier key %s is not valid" msgstr "%s: tecla modificadora %s não é válida" #: ../src/defaults.c:2428 #, c-format msgid "could not load image in option %s: %s" msgstr "não foi possível carregar imagem na opção %s: %s" #: ../src/defaults.c:2547 #, c-format msgid "failed to open bitmap file \"%s\"" msgstr "falha ao abrir arquivo de bitmap \"%s\"" #: ../src/defaults.c:2550 #, c-format msgid "\"%s\" is not a valid bitmap file" msgstr "\"%s\" não é um arquivo de bitmap válido" #: ../src/defaults.c:2553 #, c-format msgid "out of memory reading bitmap file \"%s\"" msgstr "falta de memória ao ler arquivo de bitmap \"%s\"" #: ../src/defaults.c:2597 ../src/defaults.c:2639 msgid "bad number of arguments in cursor specification" msgstr "número inválido de argumentos na especificação do cursor" #: ../src/defaults.c:2617 #, c-format msgid "unknown builtin cursor name \"%s\"" msgstr "nome de cursor interno desconhecido \"%s\"" #: ../src/defaults.c:2651 ../src/defaults.c:2665 #, c-format msgid "could not find cursor bitmap file \"%s\"" msgstr "arquivo de bitmap de cursor \"%s\" não encontrado" #: ../src/defaults.c:2715 #, c-format msgid "Error in cursor specification for key \"%s\"" msgstr "Erro na especificação do cursor para a tecla \"%s\"" #: ../src/defaults.c:2805 msgid "could not render texture for icon background" msgstr "não foi possível apresentar textura para fundo de ícone" #: ../src/dialog.c:122 ../src/dialog.c:581 ../src/dock.c:547 #: ../src/dockedapp.c:376 ../src/rootmenu.c:188 ../src/rootmenu.c:226 #: ../src/rootmenu.c:240 msgid "Cancel" msgstr "Cancelar" #: ../src/dialog.c:225 msgid "Could not open directory \"%s\":\n%s" msgstr "Não foi possível abrir diretório \"%s\":\n%s" #: ../src/dialog.c:280 msgid "Could not load image file " msgstr "Não foi possível carregar arquivo de imagem " #: ../src/dialog.c:509 msgid "Directories" msgstr "Diretórios" #: ../src/dialog.c:518 msgid "Icons" msgstr "Ícones" #: ../src/dialog.c:551 msgid "Preview" msgstr "Pré-Visualizar" #: ../src/dialog.c:564 msgid "File Name:" msgstr "Nome de arquivo:" #: ../src/dialog.c:587 msgid "Choose File" msgstr "Escolher Arquivo" #: ../src/dialog.c:604 ../src/dialog.c:606 msgid "Icon Chooser" msgstr "Seletor de Ícones" #: ../src/dialog.c:1515 ../src/startup.c:328 msgid "cannot open connection for crashing dialog panel. Aborting." msgstr "" "não foi possível abrir conexão para caixa de diálogo de erros fatais. " "Abortando." #: ../src/dialog.c:1541 msgid "Fatal error" msgstr "Erro fatal" #: ../src/dialog.c:1552 #, c-format msgid "" "Window Maker received signal %i\n" "(%s)." msgstr "" "O Window Maker recebeu o sinal %i\n" "(%s)." #: ../src/dialog.c:1555 #, c-format msgid "Window Maker received signal %i." msgstr "O Window Maker recebeu o sinal %i." #: ../src/dialog.c:1564 msgid "" " This fatal error occured probably due to a bug. Please fill the included " "BUGFORM and report it to %s." msgstr "" " Este erro fatal ocorreu provavelmente devido a uma falha.\n" " Por favor preencha o arquivo BUGFORM incluído e reporte-o a %s." #: ../src/dialog.c:1572 msgid "What do you want to do now?" msgstr "O que quer fazer agora?" #: ../src/dialog.c:1578 msgid "Select action" msgstr "Selecionar ação" #: ../src/dialog.c:1579 msgid "Abort and leave a core file" msgstr "Abortar e deixar um arquivo core" #: ../src/dialog.c:1580 msgid "Restart Window Maker" msgstr "Reiniciar o WindowMaker" #: ../src/dialog.c:1581 msgid "Start alternate window manager" msgstr "Iniciar gerenciador de janelas alternativo" #: ../src/dock.c:213 #, c-format msgid "Type the name for workspace %i:" msgstr "Digitar o nome para a área de trabalho %i:" #: ../src/dock.c:214 ../src/dock.c:1123 ../src/dock.c:1126 ../src/dock.c:3381 msgid "Rename Workspace" msgstr "Renomear Área de Trabalho" #: ../src/dock.c:509 ../src/dock.c:517 msgid "Warning" msgstr "Aviso" #: ../src/dock.c:510 msgid "" "Some icons cannot be made omnipresent. Please make sure that no other icon " "is docked in the same positions on the other workspaces and the Clip is not " "full in some workspace." msgstr "" "Alguns ícones não podem estar onipresentes. Por favor tenha certeza de que " "não há outros ícones na mesma posição ou o Clip não está cheio em outra área " "de trabalho." #: ../src/dock.c:518 msgid "" "Icon cannot be made omnipresent. Please make sure that no other icon is " "docked in the same position on the other workspaces and the Clip is not full " "in some workspace." msgstr "" "O ícone não pôde estar onipresente. Por favor tenha certeza de que não há " "outros ícones na mesma posição ou o Clip não está cheio em outra área de " "trabalho." #: ../src/dock.c:545 msgid "Workspace Clip" msgstr "Área de trabalho Clip" #: ../src/dock.c:546 msgid "All selected icons will be removed!" msgstr "Todos os ícones selecionados serão removidos!" #: ../src/dock.c:597 ../src/dock.c:1138 ../src/dock.c:1140 ../src/dock.c:3417 msgid "Keep Icon" msgstr "Manter Ícone" #: ../src/dock.c:598 ../src/dock.c:2120 ../src/dock.c:2254 msgid "Type the command used to launch the application" msgstr "Digitar o comando usado para executar a aplicação" #: ../src/dock.c:949 #, c-format msgid "could not launch application %s\n" msgstr "não foi possível executar aplicação %s\n" #: ../src/dock.c:1004 msgid "could not create workspace submenu for Clip menu" msgstr "não foi possível criar submenu para o menu do Clip" #: ../src/dock.c:1027 ../src/dock.c:1070 ../src/dock.c:1115 ../src/dock.c:3361 msgid "Keep on Top" msgstr "Manter sobre outros" #: ../src/dock.c:1029 ../src/dock.c:3363 msgid "Allow Lowering" msgstr "Permitir sobreposição" #: ../src/dock.c:1066 msgid "could not create options submenu for Clip menu" msgstr "não foi possível criar opções de submenu para o menu do Clip" #: ../src/dock.c:1073 msgid "Collapsed" msgstr "Minimizado" #: ../src/dock.c:1079 msgid "AutoCollapse" msgstr "Minimizar autom." #: ../src/dock.c:1085 msgid "AutoRaiseLower" msgstr "Sobrepor/subpor autom." #: ../src/dock.c:1091 msgid "AutoAttract Icons" msgstr "Auto Atrair Ícones" #: ../src/dock.c:1118 msgid "Clip Options" msgstr "Opções do Clip" #: ../src/dock.c:1128 msgid "Selected" msgstr "Selecionado" #: ../src/dock.c:1133 ../src/dock.c:1136 ../src/dock.c:3408 msgid "Select All Icons" msgstr "Selecionar todos os Ícones" #: ../src/dock.c:1142 ../src/dock.c:1144 ../src/dock.c:3425 msgid "Move Icon To" msgstr "Mover Ícone para" #: ../src/dock.c:1149 ../src/dock.c:1152 ../src/dock.c:3436 msgid "Remove Icon" msgstr "Remover Ícone" #: ../src/dock.c:1154 msgid "Attract Icons" msgstr "Atrair Ícones" #: ../src/dock.c:1157 msgid "Launch" msgstr "Executar" #: ../src/dock.c:1165 msgid "Settings..." msgstr "Configurações..." #: ../src/dock.c:1524 ../src/dock.c:1627 #, c-format msgid "bad value in docked icon state info %s" msgstr "valor inválido na posição dock declare informação %s" #: ../src/dock.c:1635 #, c-format msgid "bad value in docked icon position %i,%i" msgstr "valor inválido de localização de ícone na posição dock %i,%i" #: ../src/dock.c:1887 msgid "there are too many icons stored in dock. Ignoring what doesn't fit" msgstr "excesso de ícones na posição dock. Ignorando o que não cabe" #. icon->forced_dock = 1; #: ../src/dock.c:2119 ../src/dock.c:2253 msgid "Dock Icon" msgstr "Posicionar Ícone" #: ../src/dock.c:3284 ../src/dock.c:3288 #, c-format msgid "Could not execute command \"%s\"" msgstr "Comando \"%s\" não pôde ser executado" #: ../src/dock.c:3387 msgid "Toggle Omnipresent" msgstr "Acionar Onipresença" #: ../src/dock.c:3392 ../src/winmenu.c:421 ../src/winspector.c:1380 msgid "Omnipresent" msgstr "Onipresente" #: ../src/dock.c:3406 msgid "Unselect All Icons" msgstr "Desfazer seleção de todos os Ícones" #: ../src/dock.c:3415 msgid "Keep Icons" msgstr "Manter Ícones" #: ../src/dock.c:3423 msgid "Move Icons To" msgstr "Mover Ícones para" #: ../src/dock.c:3434 msgid "Remove Icons" msgstr "Remover Ícones" #: ../src/dock.c:3465 msgid "Bring Here" msgstr "Trazer aqui" #: ../src/dockedapp.c:131 #, c-format msgid "could not find icon %s, used in a docked application" msgstr "Ícone %s não encontrado, usado em uma aplicação de posição dock" #: ../src/dockedapp.c:210 #, c-format msgid "Could not open specified icon file: %s" msgstr "Não foi possível abrir arquivo do ícone especificado %s" #: ../src/dockedapp.c:212 msgid "Ignore" msgstr "Ignorar" #: ../src/dockedapp.c:305 msgid "Start when WindowMaker is started" msgstr "Iniciar junto com o WindowMaker" #: ../src/dockedapp.c:312 msgid "Lock (prevent accidental removal)" msgstr "Travado (para prevenir remoção acidental)" #: ../src/dockedapp.c:318 msgid "Application path and arguments" msgstr "Caminho da aplicação e argumentos" #: ../src/dockedapp.c:329 msgid "Command for files dropped with DND" msgstr "Comando para arquivos abandonados por DND" #: ../src/dockedapp.c:341 #, c-format msgid "%d will be replaced with the file name" msgstr "%d será substituído pelo nome de arquivo" #: ../src/dockedapp.c:345 msgid "DND support was not compiled in" msgstr "suporte para DND não foi compilado" #: ../src/dockedapp.c:351 msgid "Icon Image" msgstr "Imagem do ícone" #: ../src/dockedapp.c:363 ../src/winspector.c:1518 msgid "Browse..." msgstr "Navegar..." #: ../src/dockedapp.c:408 msgid "Docked Application Settings" msgstr "Configurações de Aplicação na posição Dock" #: ../src/framewin.c:655 ../src/framewin.c:750 ../src/menu.c:458 #: ../src/texture.c:549 #, c-format msgid "could not render texture: %s" msgstr "não foi possível apresentar textura: %s" #: ../src/framewin.c:678 ../src/framewin.c:689 ../src/framewin.c:705 #: ../src/framewin.c:716 ../src/framewin.c:723 ../src/framewin.c:730 #: ../src/icon.c:350 ../src/menu.c:487 #, c-format msgid "error rendering image:%s" msgstr "erro na apresentação de imagem:%s" #: ../src/framewin.c:783 #, c-format msgid "error rendering image: %s" msgstr "erro na apresentação de imagem:%s" #: ../src/icon.c:229 ../src/wdefaults.c:435 #, c-format msgid "error loading image file \"%s\": %s" msgstr "erro ao carregar arquivo de imagens \"%s\": %s" #: ../src/icon.c:488 ../src/icon.c:497 #, c-format msgid "could not create directory %s" msgstr "não foi possível criar diretório %s" #: ../src/icon.c:764 #, c-format msgid "could not find default icon \"%s\"" msgstr "ícone padrão \"%s\" não pôde ser encontrado" #: ../src/icon.c:770 #, c-format msgid "could not load default icon \"%s\":%s" msgstr "ícone padrão \"%s\" não pôde ser carregado:%s" #: ../src/main.c:204 msgid "failed to restart Window Maker." msgstr "fallou ao reiniciar o Window Maker." #: ../src/main.c:207 #, c-format msgid "could not exec %s" msgstr "não foi possível executar %s" #: ../src/main.c:252 msgid "Could not execute command: " msgstr "Não foi possível executar o comando:" #: ../src/main.c:409 #, c-format msgid "%s aborted.\n" msgstr "%s abortado.\n" #: ../src/main.c:420 #, c-format msgid "Usage: %s [options]\n" msgstr "Uso: %s [-opções]\n" #: ../src/main.c:421 msgid "The Window Maker window manager for the X window system" msgstr "O gerenciador de janelas Window Maker para o sistema X" #: ../src/main.c:423 msgid " -display host:dpy\tdisplay to use" msgstr " -display host:dpy\tdisplay a ser usado" #: ../src/main.c:425 msgid " --no-cpp \t\tdisable preprocessing of configuration files" msgstr " --no-cpp \t\tdesativa preprocessamento de arquivos de configuração" #: ../src/main.c:427 msgid " --no-dock\t\tdo not open the application Dock" msgstr " --no-dock\t\tdesabilitar o Dock" #: ../src/main.c:428 msgid " --no-clip\t\tdo not open the workspace Clip" msgstr " --no-clip\t\tnão abre área de trabalho Clip" #: ../src/main.c:429 msgid " --no-autolaunch\tdo not autolaunch applications" msgstr " --no-autolaunch\tnão lança aplicativos automaticamente" #: ../src/main.c:430 msgid " --dont-restore\tdo not restore saved session" msgstr " --dont-restore \tnão restaura sessão salva" #: ../src/main.c:432 msgid " --locale locale\t\tlocale to use" msgstr " --locale língua\t\tlinguagem a ser usada" #: ../src/main.c:434 msgid " --visual-id visualid\tvisual id of visual to use" msgstr " --visual-id visualid\tvisual id do visual a usar" #: ../src/main.c:435 msgid " --static\t\tdo not update or save configurations" msgstr " --static\t\tnão atualiza ou salva configurações" #: ../src/main.c:437 msgid " --synchronous\t\tturn on synchronous display mode" msgstr " --síncrono\t\tligar o vídeo em modo síncrono" #: ../src/main.c:439 msgid " --version\t\tprint version and exit" msgstr " --version\t\tmostra versão e sai" #: ../src/main.c:440 msgid " --help\t\t\tshow this message" msgstr " --help\t\t\tmostra esta mensagem" #: ../src/main.c:452 #, c-format msgid "" "could not find user GNUstep directory (%s).\n" "Make sure you have installed Window Maker correctly and run wmaker.inst" msgstr "" "não foi possível encontrar directório do usuário GNUstep: (%s).\n" "Certifique-se de que o WindowMaker está instalado corretamente e execute " "wmaker.inst" #: ../src/main.c:473 ../src/main.c:478 #, c-format msgid "%s:could not execute initialization script" msgstr "%s:não foi possível executar o script de inicialização" #: ../src/main.c:498 ../src/main.c:503 #, c-format msgid "%s:could not execute exit script" msgstr "%s:não foi possível executar o script de saída" #: ../src/main.c:619 ../src/main.c:626 ../src/main.c:634 ../src/main.c:650 #, c-format msgid "too few arguments for %s" msgstr "argumentos insuficientes para %s" #: ../src/main.c:638 #, c-format msgid "bad value for visualid: \"%s\"" msgstr "valor inválido de visualID: \"%s\"" #: ../src/main.c:658 #, c-format msgid "%s: invalid argument '%s'\n" msgstr "%s: argumento inválido '%s'\n" #: ../src/main.c:659 #, c-format msgid "Try '%s --help' for more information\n" msgstr "Tente '%s --help' para mais informações\n" #: ../src/main.c:690 msgid "X server does not support locale" msgstr "servidor X não suporta local" #: ../src/main.c:694 msgid "cannot set locale modifiers" msgstr "Não foi possível definir modificadores locais" #: ../src/main.c:710 #, c-format msgid "could not open display \"%s\"" msgstr "não foi possível abrir display \"%s\"" #: ../src/misc.c:71 #, c-format msgid "could not define value for %s for cpp" msgstr "não foi possível definir valor de %s para cpp" #: ../src/misc.c:101 #, c-format msgid "could not get password entry for UID %i" msgstr "não foi possível obter senha de entrada para UID %i" #: ../src/misc.c:126 #, c-format msgid "your machine is misconfigured. HOSTNAME is set to %s" msgstr "sua máquina está mal configurada. Valor de HOSTNAME = %s" #: ../src/misc.c:132 #, c-format msgid "your machine is misconfigured. HOST is set to %s" msgstr "sua máquina está mal configurada. Valor de HOST = %s" #: ../src/misc.c:753 msgid "selection timed-out" msgstr "tempo esgotado tentando ler seleção" #: ../src/misc.c:769 msgid "Program Arguments" msgstr "Parâmetros do programa" #: ../src/misc.c:770 msgid "Enter command arguments:" msgstr "Digite os parâmetros do comando:" #: ../src/misc.c:863 msgid "unable to get dropped data from DND drop" msgstr "impossível receber dados abandonados por DND" #: ../src/misc.c:871 msgid "error getting dropped data from DND drop" msgstr "erro recebendo dados abandonados por DND" #: ../src/misc.c:877 msgid "out of memory while getting data from DND drop" msgstr "falta de memória ao recuper dados de drag&drop DND" #: ../src/misc.c:922 ../src/misc.c:1062 #, c-format msgid "out of memory during expansion of \"%s\"" msgstr "falta de memória durante expansão de \"%s\"" #: ../src/misc.c:976 msgid "out of memory during expansion of \"%w\"" msgstr "falta de memória durante expansão de \"%w\"" #: ../src/misc.c:994 msgid "out of memory during expansion of \"%W\"" msgstr "falta de memória durante expansão de \"%W\"" #: ../src/misc.c:1010 msgid "out of memory during expansion of \"%a\"" msgstr "falta de memória durante expansão de \"%a\"" #: ../src/misc.c:1041 #, c-format msgid "out of memory during expansion of \"%d\"" msgstr "falta de memória durante expansão de \"%d\"" #: ../src/misc.c:1055 msgid "selection not available" msgstr "seleção não disponível" #: ../src/misc.c:1127 ../src/misc.c:1133 #, c-format msgid "bad window name value in %s state info" msgstr "nome de janela inválido em %s declare informação" #: ../src/misc.c:1401 msgid "could not send message to background image helper" msgstr "não foi possível enviar mensagem para o auxiliar de imagem de fundo" #: ../src/pixmap.c:235 #, c-format msgid "could not load mask bitmap file \"%s\". Won't use mask" msgstr "" "não foi possível abrir arquivo máscara de bitmap \"%s\". Não usará máscara" #: ../src/proplist.c:180 msgid "unterminated string" msgstr "cadeia de caracteres não finalizada" #: ../src/proplist.c:247 msgid "unterminated array" msgstr "Matriz não terminada" #: ../src/proplist.c:256 msgid "missing , in array or unterminated array" msgstr "faltando na matriz ou matriz não terminada" #: ../src/proplist.c:267 msgid "could not get array element" msgstr "não foi possível receber um elemento da matriz" #: ../src/proplist.c:297 msgid "unterminated dictionary" msgstr "dicionário não finalizado" #: ../src/proplist.c:315 msgid "missing dictionary key" msgstr "faltando chave do dicionário" #: ../src/proplist.c:317 msgid "missing dictionary entry key or unterminated dictionary" msgstr "faltando chave de entrada do dicionário ou dicionário não finalizado" #: ../src/proplist.c:323 msgid "error parsing dictionary key" msgstr "erro ao interpretar a chave do dicionário" #: ../src/proplist.c:332 msgid "missing = in dictionary entry" msgstr "faltando = na entrada no dicionário" #: ../src/proplist.c:351 msgid "missing ; in dictionary entry" msgstr "faltando ; na entrada no dicionário" #: ../src/proplist.c:432 msgid "" "was expecting a string, dictionary, data or array. If it's a string, try " "enclosing it with \"." msgstr "foi esperado uma cadeia de caracteres, dicionário, dados ou matriz. Se isto é uma cadeia de caracteres, tente fechá-la com \"." #: ../src/proplist.c:434 msgid "Comments are not allowed inside WindowMaker owned domain files." msgstr "" "Comentários não são permitidos dentro dos arquivos de domínio do WindowMaker." #: ../src/proplist.c:453 #, c-format msgid "could not open domain file %s" msgstr "não foi possível abrir arquivo de domínio %s" #: ../src/proplist.c:466 msgid "extra data after end of file" msgstr "dados inúteis após final de arquivo" #: ../src/resources.c:44 #, c-format msgid "could not parse color \"%s\"" msgstr "não foi possível identificar cor \"%s\"" #: ../src/resources.c:48 #, c-format msgid "could not allocate color \"%s\"" msgstr "não foi possível determinar cor \"%s\"" #: ../src/rootmenu.c:186 ../src/rootmenu.c:188 msgid "Exit" msgstr "Sair" #: ../src/rootmenu.c:187 msgid "Exit window manager?" msgstr "Sair do gerenciador de janelas?" #: ../src/rootmenu.c:223 msgid "Close X session" msgstr "Fechar sessão do X" #: ../src/rootmenu.c:224 msgid "" "Close Window System session?\n" "Kill might close applications with unsaved data." msgstr "" "Fechar sessão do sistema de janelas?\n" "Terminar poderá fechar todos os aplicativos com dados não salvos" #. #. entry = wMenuAddCallback(menu, _("Select Shortcut"), NULL, NULL); #. wMenuEntrySetCascade(menu, entry, makeMakeShortcutMenu(scr)); #. #: ../src/rootmenu.c:226 ../src/winmenu.c:509 msgid "Close" msgstr "Fechar" #: ../src/rootmenu.c:237 msgid "Kill X session" msgstr "Fechar sessão do X" #: ../src/rootmenu.c:238 msgid "" "Kill Window System session?\n" "(all applications will be closed)" msgstr "" "Fechar sessão do sistema de janelas?\n" "(todos os aplicativos serão fechados)" #: ../src/rootmenu.c:505 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\" for entry %s" msgstr "%s:especificação de atalho no teclado inválida \"%s\" para entrada %s" #: ../src/rootmenu.c:513 #, c-format msgid "%s:invalid key in shortcut \"%s\" for entry %s" msgstr "%s:tecla inválida no atalho \"%s\" para entrada %s" #: ../src/rootmenu.c:566 #, c-format msgid "%s: unmatched '\"' in menu file" msgstr "%s:não concorda com '\"' no arquivo de menu" #: ../src/rootmenu.c:616 #, c-format msgid "%s: missing command" msgstr "%s: comando perdido" #: ../src/rootmenu.c:648 #, c-format msgid "invalid OPEN_MENU specification: %s" msgstr "especificação de OPEN_MENU inválido: %s" #: ../src/rootmenu.c:696 #, c-format msgid "%s:could not stat menu" msgstr "%s:não foi possível menu rápido" #: ../src/rootmenu.c:704 #, c-format msgid "%s:could not stat menu:%s" msgstr "%s:não foi possível menu rápido: %s" #: ../src/rootmenu.c:722 #, c-format msgid "too many parameters in OPEN_MENU: %s" msgstr "excesso de parâmetros em OPEN_MENU: %s" #: ../src/rootmenu.c:758 msgid "" "There are more than one WORKSPACE_MENU commands in the applications menu. " "Only one is allowed." msgstr "" "Há mais de um comando WORKSPACE_MENU no menu de aplicativo. Somente um é " "permitido." #: ../src/rootmenu.c:787 ../src/rootmenu.c:805 ../src/rootmenu.c:815 #, c-format msgid "%s:missing parameter for menu command \"%s\"" msgstr "%s:parâmetro inexistente para o comando de menu \"%s\"" #: ../src/rootmenu.c:879 #, c-format msgid "%s:unknown command \"%s\" in menu config." msgstr "%s:comando desconhecido \"%s\" na configuração do menu." #: ../src/rootmenu.c:887 #, c-format msgid "%s:can't add shortcut for entry \"%s\"" msgstr "%s:\"%s\" não pode adicionar atalho para entrada" #: ../src/rootmenu.c:1024 #, c-format msgid "%s:maximal line size exceeded in menu config: %s" msgstr "%s:tamanho máximo da linha excedeu no menu de configuração: %s" #: ../src/rootmenu.c:1046 ../src/rootmenu.c:1138 ../src/rootmenu.c:1239 #, c-format msgid "%s:missing command in menu config: %s" msgstr "%s:falta o comando no menu \"%s\"" #: ../src/rootmenu.c:1076 #, c-format msgid "%s:syntax error in menu file:END declaration missing" msgstr "%s:erro de sintaxe no menu:falta um END" #: ../src/rootmenu.c:1105 ../src/rootmenu.c:1204 msgid "could not make arguments for menu file preprocessor" msgstr "não foi possível criar parâmetros para o preprocessador para menu" #: ../src/rootmenu.c:1111 ../src/rootmenu.c:1211 #, c-format msgid "%s:could not open/preprocess menu file" msgstr "%s:não foi possível abrir/preprocessar arquivo de menu" #: ../src/rootmenu.c:1123 ../src/rootmenu.c:1224 #, c-format msgid "could not open menu file \"%s\": %s" msgstr "não foi possível abrir arquivo de menu \"%s\": %s" #: ../src/rootmenu.c:1150 #, c-format msgid "%s:invalid menu file. MENU command is missing" msgstr "%s:arquivo de menu inválido. Comando MENU não existe" #: ../src/rootmenu.c:1159 msgid "error reading preprocessed menu data" msgstr "erro lendo dados de menu pré-processados" #: ../src/rootmenu.c:1251 #, c-format msgid "%s:no title given for the root menu" msgstr "%s:falta o título do menu de aplicações" #: ../src/rootmenu.c:1341 ../src/rootmenu.c:1416 ../src/rootmenu.c:1459 #, c-format msgid "out of memory while constructing directory menu %s" msgstr "faltou memória durante construção do menu de diretório %s" #: ../src/rootmenu.c:1351 #, c-format msgid "%s:could not stat file \"%s\" in menu directory" msgstr "%s:não foi possivel acessar arquivo \"%s\" no menu de diretório" #: ../src/rootmenu.c:1513 msgid "Commands" msgstr "Comandos" #: ../src/rootmenu.c:1516 msgid "Restart" msgstr "Reiniciar" #: ../src/rootmenu.c:1517 msgid "Exit..." msgstr "Sair..." #: ../src/rootmenu.c:1562 #, c-format msgid "could not find menu file \"%s\" referenced in WMRootMenu" msgstr "" "não foi possivel encontrar arquivo de menu \"%s\" está referenciado em " "WMRootMenu" #: ../src/rootmenu.c:1569 #, c-format msgid "could not access menu \"%s\" referenced in WMRootMenu" msgstr "" "não foi possível acessar arquivo de menu \"%s\" referenciado no WMRootMenu" #: ../src/rootmenu.c:1580 #, c-format msgid "" "using default menu file \"%s\" as the menu referenced in WMRootMenu could " "not be found " msgstr "" "usando menu padrão \"%s\" pois o menu referenciado no arquivo WMRootMenu não " "foi encontrado " #: ../src/rootmenu.c:1603 ../src/rootmenu.c:1679 #, c-format msgid "%s:format error in root menu configuration \"%s\"" msgstr "%s:erro no formato do arquivo de configuração de menu \"%s\"" #: ../src/rootmenu.c:1766 msgid "" "The applications menu could not be loaded. Look at the console output for a " "detailed description of the errors." msgstr "" "O menu de aplicativos não pôde ser carregado. Olhe no painel de saída para " "uma descrição detalhada dos erros." #: ../src/screen.c:460 #, c-format msgid "could not load logo image for panels: %s" msgstr "não foi possível carregar imagem de logotipo para painéis: %s" #: ../src/screen.c:464 #, c-format msgid "error making logo image for panel:%s" msgstr "erro na geração de logotipo para janelas:%s" #: ../src/screen.c:745 #, c-format msgid "could not initialize graphics library context: %s" msgstr "não foi possivel inicializar contexto da biblioteca gráfica: %s" #: ../src/screen.c:776 msgid "could not do initialization of WINGs widget set" msgstr "não foi possível inicialização WINGs sem configuração" #: ../src/screen.c:1128 #, c-format msgid "could not save session state in %s" msgstr "não foi possível salvar sessão, informe em %s" #: ../src/session.c:183 ../src/wdefaults.c:583 ../src/winspector.c:447 #, c-format msgid "can't convert \"%s\" to boolean" msgstr "não pode converter \"%s\" para um valor booleano" #: ../src/session.c:1023 msgid "out of memory while saving session state" msgstr "faltou memória ao salvar a sessão" #: ../src/session.c:1114 msgid "end of memory while saving session state" msgstr "faltou memória ao salvar a sessã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:1248 msgid "connection to the session manager was lost" msgstr "conexão para a sessão de gerenciador foi perdida" #: ../src/stacking.c:73 msgid "could not get window list!!" msgstr "não foi possível obter a lista de janelas!!" #: ../src/startup.c:197 #, c-format msgid "internal X error: %s\n" msgstr "erro interno de X: %s\n" #: ../src/startup.c:262 #, c-format msgid "got signal %i (%s) - restarting\n" msgstr "sinal %i (%s) recebido - reiniciando\n" #: ../src/startup.c:264 #, c-format msgid "got signal %i - restarting\n" msgstr "sinal %i recebido - reiniciando\n" #: ../src/startup.c:278 #, c-format msgid "got signal %i (%s) - exiting...\n" msgstr "sinal %i (%s) recebido - saindo...\n" #: ../src/startup.c:280 #, c-format msgid "got signal %i - exiting...\n" msgstr "sinal %i recebido - saindo...\n" #: ../src/startup.c:293 #, c-format msgid "got signal %i (%s)\n" msgstr "sinal %i recebido (%s)\n" #: ../src/startup.c:295 #, c-format msgid "got signal %i\n" msgstr "sinal %i recebido\n" #: ../src/startup.c:306 msgid "" "crashed while trying to do some post-crash cleanup. Aborting immediatelly." msgstr "" "erro fatal enquanto tentava limpeza pós-crash. Abortando imediatamente." #. we try to restart Window Maker #: ../src/startup.c:340 msgid "trying to restart Window Maker..." msgstr "tentando reiniciar o Window Maker..." #: ../src/startup.c:345 msgid "trying to start alternate window manager..." msgstr "tentando iniciar gerenciador de janelas alternativo..." #: ../src/startup.c:350 msgid "failed to start alternate window manager. Aborting." msgstr "tentativa de iniciar gerenciador alternativo falhou. Abortando." #: ../src/startup.c:352 msgid "" "a fatal error has occured, probably due to a bug. Please fill the included " "BUGFORM and report it." msgstr "" "um erro fatal ocorreu, provavelmente devido a uma falha. Por favor preencha " "o arquivo BUGFORM incluído e envie." #: ../src/startup.c:830 #, c-format msgid "icon size is configured to %i, but it's too small. Using 16, instead\n" msgstr "" "tamanho de ícone está configurado para %i, mas é muito pequeno. Usando 16\n" #: ../src/startup.c:858 msgid "XKB is not supported. KbdModeLock is automatically disabled." msgstr "" "O XKB não é suportado. Teclado modo travar desabilitado automaticamente." #: ../src/startup.c:877 msgid "it seems that there is already a window manager running" msgstr "aparentemente já há um gerenciador de janelas sendo executado" #: ../src/startup.c:883 #, c-format msgid "could not manage screen %i" msgstr "não é possível gerenciar janela %i" #: ../src/startup.c:944 msgid "could not manage any screen" msgstr "não é possível gerenciar qualquer janela" #: ../src/switchmenu.c:114 msgid "Windows" msgstr "Janelas" #: ../src/texture.c:290 ../src/texture.c:334 #, c-format msgid "image file \"%s\" used as texture could not be found." msgstr "arquivo de imagem \"%s\" usado como textura não foi encontrado." #: ../src/texture.c:296 ../src/texture.c:340 #, c-format msgid "could not load texture pixmap \"%s\":%s" msgstr "arquivo de imagem \"%s\" não pôde ser aberto:%s" #: ../src/texture.c:400 #, c-format msgid "library \"%s\" cound not be opened." msgstr "não foi possível abrir biblioteca \"%s\"" #: ../src/texture.c:409 #, c-format msgid "function \"%s\" not found in library \"%s\"" msgstr "função \"%s\" não encontrada na biblioteca \"%s\"" #: ../src/texture.c:416 msgid "function textures not supported on this system, sorry." msgstr "função de texturas não suportadas neste sistema, desculpe." #: ../src/wdefaults.c:429 #, c-format msgid "could not find icon file \"%s\"" msgstr "ícone de arquivo \"%s\" não encontrado" #: ../src/window.c:2715 ../src/window.c:2849 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 "" "a tecla NumLock, ScrollLock ou similar parece estar ligada.\n" "Desligue-a ou algumas ações do mouse e teclas de atalho não funcionarão." #: ../src/winmenu.c:126 msgid "" "This will kill the application.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" "A aplicação será finalizada (kill).\n" "Quaisquer modificações não salvas serão perdidas.\n" "Confirme por favor." #: ../src/winmenu.c:275 ../src/winmenu.c:283 msgid "Set Shortcut" msgstr "Criar atalho" #: ../src/winmenu.c:361 ../src/winmenu.c:407 msgid "could not create submenu for window menu" msgstr "não foi possível criar submenu para o menu de janela" #: ../src/winmenu.c:411 msgid "Keep on top" msgstr "Manter sobre outros" #: ../src/winmenu.c:416 msgid "Keep at bottom" msgstr "Manter embaixo" #. #. * 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:444 ../src/winmenu.c:579 msgid "Maximize" msgstr "Maximizar" #: ../src/winmenu.c:452 ../src/winmenu.c:565 msgid "Miniaturize" msgstr "Minimizar" #: ../src/winmenu.c:461 ../src/winmenu.c:596 msgid "Shade" msgstr "Sombrear" #: ../src/winmenu.c:477 msgid "Resize/Move" msgstr "Redimensionar/Mover" #: ../src/winmenu.c:485 msgid "Select" msgstr "Selecionar" #: ../src/winmenu.c:493 msgid "Move To" msgstr "Mover Para" #: ../src/winmenu.c:498 msgid "Attributes..." msgstr "Atributos..." #: ../src/winmenu.c:500 msgid "Options" msgstr "Opções" #: ../src/winmenu.c:560 msgid "Deminiaturize" msgstr "Restaurar" #: ../src/winmenu.c:574 msgid "Unmaximize" msgstr "Desmaximizar" #: ../src/winmenu.c:591 msgid "Unshade" msgstr "tirar sombra" #: ../src/winspector.c:381 #, c-format msgid "Could not find icon \"%s\" specified for this window" msgstr "Ícone especificado não pôde ser encontrado: \"%s\"" #: ../src/winspector.c:397 #, c-format msgid "Could not open specified icon \"%s\":%s" msgstr "O ícone especificado \"%s\" não pôde ser aberto:%s" #: ../src/winspector.c:1221 msgid "Save" msgstr "Salvar" #: ../src/winspector.c:1229 msgid "Apply" msgstr "Aplicar" #: ../src/winspector.c:1235 msgid "Reload" msgstr "Recarregar" #: ../src/winspector.c:1244 ../src/winspector.c:1254 msgid "Window Specification" msgstr "Especificação de Janelas" #: ../src/winspector.c:1245 msgid "Window Attributes" msgstr "Atributos de Janela" #: ../src/winspector.c:1246 msgid "Advanced Options" msgstr "Opções Avançadas" #: ../src/winspector.c:1247 msgid "Icon and Initial Workspace" msgstr "Ícone e Área de Trabalho Inicial" #: ../src/winspector.c:1248 msgid "Application Specific" msgstr "Aplicação Específica" #: ../src/winspector.c:1262 msgid "Defaults for all windows" msgstr "Padrão para todas as janelas" #: ../src/winspector.c:1316 msgid "Select Window" msgstr "Selecionar Janela" #: ../src/winspector.c:1329 msgid "Attributes" msgstr "Atributos" #: ../src/winspector.c:1340 msgid "Disable Titlebar" msgstr "Remover barra de título" #: ../src/winspector.c:1342 msgid "" "Remove the titlebar of this window.\n" "To access the window commands menu of a window\n" "without it's titlebar, press Control+Esc (or the\n" "equivalent shortcut, if you changed the default\n" "settings)." msgstr "" "Remove a barra de título da janela.\n" "Para acessar os comandos de janela em uma janela\n" "sem sua barra de título, pressione Control+Esc (ou\n" "o equivalente, se você modificou a configuração\n" "das teclas)." #: ../src/winspector.c:1349 msgid "Disable Resizebar" msgstr "Remover barra de tamanho" #: ../src/winspector.c:1351 msgid "Remove the resizebar of this window." msgstr "Remover a barra de tamanho desta janela." #: ../src/winspector.c:1354 msgid "Disable Close Button" msgstr "Remover botão de fechar" #: ../src/winspector.c:1356 msgid "Remove the `close window' button of this window." msgstr "Remove o botão de fechar da janela." #: ../src/winspector.c:1359 msgid "Disable Miniaturize Button" msgstr "Desativa Minimizar" #: ../src/winspector.c:1361 msgid "Remove the `miniaturize window' button of the window." msgstr "Remove o botão de minimizar da janela." #: ../src/winspector.c:1364 msgid "Disable Border" msgstr "Desabilitar borda" #: ../src/winspector.c:1366 msgid "Remove the 1 pixel black border around the window." msgstr "Remover a borda preta de 1 pixel ao redor da janela." #: ../src/winspector.c:1369 msgid "Keep on Top / Floating" msgstr "Manter sobre outros / Flutando" #: ../src/winspector.c:1371 msgid "" "Keep the window over other windows, not allowing\n" "them to cover it." msgstr "Mantém a janela sobre todas as outras, não permitindo que a cubram." #: ../src/winspector.c:1375 msgid "Keep at Bottom / Sunken" msgstr "Manter abaixo de outros / Oculta" #: ../src/winspector.c:1377 msgid "Keep the window under all other windows." msgstr "Mantém a janela abaixo de todas as outras." #: ../src/winspector.c:1382 msgid "Make window occupy all workspaces." msgstr "Faz a janela ocupar todas as áreas de trabalho." #: ../src/winspector.c:1385 msgid "Start Miniaturized" msgstr "Iniciar Minimizado" #: ../src/winspector.c:1387 msgid "" "Make the window be automatically miniaturized when it's\n" "first shown." msgstr "" "Iniciar esta janela minimizada em sua primeira\n" "aparição." #: ../src/winspector.c:1391 msgid "Start Maximized" msgstr "Iniciar Maximizado" #: ../src/winspector.c:1393 msgid "" "Make the window be automatically maximized when it's\n" "first shown." msgstr "" "Iniciar esta janela maximizada em sua primeira\n" "aparição." #: ../src/winspector.c:1397 msgid "Skip Window List" msgstr "Saltar lista de janelas" #: ../src/winspector.c:1399 msgid "Do not list the window in the window list menu." msgstr "Não mostrar esta janela no menu de lista de janelas." #: ../src/winspector.c:1414 msgid "Advanced" msgstr "Avançado" #: ../src/winspector.c:1431 msgid "Ignore HideOthers" msgstr "Ignorar Esconder Outros" #: ../src/winspector.c:1433 msgid "" "Do not hide the window when issuing the\n" "`HideOthers' command." msgstr "" "Não esconder esta janela quando utilizado\n" "o comando `Esconder Outras'." #: ../src/winspector.c:1437 msgid "Don't Bind Keyboard Shortcuts" msgstr "Não adicionar atalhos de teclado" #: ../src/winspector.c:1439 msgid "" "Do not bind keyboard shortcuts from Window Maker\n" "when this window is focused. This will allow the\n" "window to receive all key combinations regardless\n" "of your shortcut configuration." msgstr "" "Não adicionar atalhos de teclado do Window Maker quando\n" "esta janela estiver ativa. Isto permitirá que a janela receba \n" "todas as combinações de teclas não importando as combinações\n" "de configuração de atalho." #: ../src/winspector.c:1445 msgid "Don't Bind Mouse Clicks" msgstr "Não adicionar cliques de mouse" #: ../src/winspector.c:1447 msgid "" "Do not bind mouse actions, such as `Alt'+drag\n" "in the window (when Alt is the modifier you have\n" "configured)." msgstr "" "Não adicionar ações de mouse, tal como `Alt'+arrasto\n" "na janela (quando Alt é o modificador que você configurou)." #: ../src/winspector.c:1452 msgid "Keep Inside Screen" msgstr "Manter dentro da tela" #: ../src/winspector.c:1454 msgid "" "Do not allow the window to move itself completely\n" "outside the screen. For bug compatibility.\n" msgstr "" "Não permitir que a janela se mova totalmente para fora\n" "da tela. Para compatibilidade de falha.\n" #: ../src/winspector.c:1458 msgid "Don't Let It Take Focus" msgstr "Não deixar focalizar" #: ../src/winspector.c:1460 msgid "" "Do not let the window take keyboard focus when you\n" "click on it." msgstr "Não deixar a janela ser dominada pelo teclado quando este é utilizado." #: ../src/winspector.c:1464 msgid "Don't Save Session" msgstr "Não salvar a sessão" #: ../src/winspector.c:1466 msgid "" "Do not save the associated application in the\n" "session's state, so that it won't be restarted\n" "together with other applications when Window Maker\n" "starts." msgstr "" "Não salvar a aplicação associada na sessão do estado,\n" "para que não seja reiniciada junto como outras \n" "aplicações quando o Window Maker iniciar." #: ../src/winspector.c:1472 msgid "Emulate Application Icon" msgstr "Emular ícone de aplicação" #: ../src/winspector.c:1474 msgid "" "Make this window act as an application that provides\n" "enough information to Window Maker for a dockable\n" "application icon to be created." msgstr "" "Fazer esta janela atuar como uma aplicação que provê\n" "informações suficientes para o Window Maker criar\n" "um ícone de aplicação." #: ../src/winspector.c:1479 msgid "Full Screen Maximization" msgstr "Maximização em Tela Cheia" #: ../src/winspector.c:1481 msgid "" "Make the window use the whole screen space when it's\n" "maximized. The titlebar and resizebar will be moved\n" "to outside the screen." msgstr "" "Fazer com que a janela utilize toda a tela quando for\n" "maximizada. A barra de título e de tamanho serão\n" "movidas para fora da tela." #: ../src/winspector.c:1487 msgid "Disable Language Button" msgstr "Desabilitar botão de linguagem" #: ../src/winspector.c:1489 msgid "Remove the `toggle language' button of the window." msgstr "Remover o botão de linguagem da janela." #: ../src/winspector.c:1506 msgid "Miniwindow Image" msgstr "Imagem do Miniwindow" #: ../src/winspector.c:1525 msgid "Update" msgstr "Atualizar" #: ../src/winspector.c:1540 msgid "Icon File Name:" msgstr "Nome do arquivo de ícone:" #: ../src/winspector.c:1552 msgid "Ignore client supplied icon" msgstr "Ignorar ícone fornecido pela aplicação" #: ../src/winspector.c:1559 msgid "Initial Workspace" msgstr "Área de Trabalho Inicial" #: ../src/winspector.c:1561 msgid "The workspace to place the window when it's first shown." msgstr "Onde mostrar a janela quando da primeira aparição." #: ../src/winspector.c:1567 msgid "Nowhere in particular" msgstr "Nenhum lugar em particular" #: ../src/winspector.c:1585 msgid "Application Wide" msgstr "Geral da Aplicação" #: ../src/winspector.c:1596 msgid "Start Hidden" msgstr "Iniciar oculto" #: ../src/winspector.c:1598 msgid "Automatically hide application when it's started." msgstr "Esconde automaticamente a aplicação quando iniciada." #: ../src/winspector.c:1601 msgid "No Application Icon" msgstr "Sem ícone de aplicação" #: ../src/winspector.c:1603 msgid "" "Disable the application icon for the application.\n" "Note that you won't be able to dock it anymore,\n" "and any icons that are already docked will stop\n" "working correctly." msgstr "" "Desliga o ícone de aplicação para esta janela.\n" "Note que você não estará apto a colocar um ícone\n" "no dock, e qualquer ícone que já estiver lá\n" "irá parar de funcionar corretamente." #: ../src/workspace.c:110 ../src/workspace.c:111 ../src/workspace.c:806 #, c-format msgid "Workspace %i" msgstr "Área de Trabalho %i" #: ../src/workspace.c:863 msgid "Workspaces" msgstr "Áreas de Trabalho" #: ../src/workspace.c:865 msgid "could not create Workspace menu" msgstr "não foi possível criar menu de Área de Trabalho" #: ../src/workspace.c:872 msgid "New" msgstr "Novo" #: ../src/workspace.c:873 msgid "Destroy Last" msgstr "Destruir Último" #: ../src/xutil.c:228 msgid "invalid data in selection" msgstr "dados inválidos na seleção" #~ msgid "out of memory while updating GNOME hints" #~ msgstr "faltou memória enquanto estava atualizando as dicas do GNOME" #~ msgid "Not Omnipresent" #~ msgstr "Não onipresente" #~ msgid "Move" #~ msgstr "Mover" #~ msgid "Resize" #~ msgstr "Redimensionar" #~ msgid "%a(Run Command,Type the command to run:)" #~ msgstr "%a(Executar comando. Digite o comando para executar:)" #~ msgid "wrealloc() failed while trying to add menu item" #~ msgstr "falta de memória durante adição de item em menu" #~ msgid "Keep Attracted Icons" #~ msgstr "Manter Ícones Atraídos" #~ msgid "" #~ "Sorry, icon cannot be made omnipresent. Please make sure that no other icon " #~ "is docked in the same position on the other workspaces, and the Clip is not " #~ "full in some workspace, then try again." #~ msgstr "" #~ "Desculpe, o ícone não pode estar onipresente. Tenha certeza de que não há " #~ "outro ícone\n" #~ " na mesma posição ou o clip não está completo\n" #~ " em outra área de trabalho, e tente novamente." #~ 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 "" #~ "A configuração será usada para todas as janelas\n" #~ "que tenham o valor da propriedade WM_CLASS igual ao nome especificado " #~ "acima,\n" #~ "quando salvo." WindowMaker-0.95.9/po/ja.po0000644000175000017500000015366213431646201012353 00000000000000# Japanese translation of Window Maker message catalog # Copyright (c) 1997, 1998 Alfredo K. Kojima # Yasuyuki Furukawa , 1998 # modified by Jun Nishii # modified by MANOME Tomonori # modified by Takeo Hashimoto # collaborated with members in wmaker-jp-ML and Project Vine # # Last Update: for version 0.95.2 # msgid "" msgstr "" "Project-Id-Version: WindowMaker 0.95.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-02-20 12:42+0900\n" "PO-Revision-Date: 2012-03-01 09:52+ZONE\n" "Last-Translator: Takeo Hashimoto \n" "Language-Team: Japanese \n" "Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../src/appicon.c:345 ../src/dialog.c:563 ../src/dock.c:3041 #: ../src/dockedapp.c:207 ../src/main.c:348 ../src/rootmenu.c:1701 #: ../src/winspector.c:351 ../src/winspector.c:367 msgid "Error" msgstr "エラー" #: ../src/appicon.c:346 msgid "Could not open specified icon file" msgstr "指定のアイコンファイルが開けません" #: ../src/appicon.c:346 ../src/dialog.c:405 ../src/dialog.c:466 #: ../src/dialog.c:563 ../src/dialog.c:969 ../src/dialog.c:1602 #: ../src/dock.c:443 ../src/dock.c:450 ../src/dock.c:472 ../src/dock.c:3041 #: ../src/dockedapp.c:208 ../src/dockedapp.c:378 ../src/main.c:348 #: ../src/rootmenu.c:1704 ../src/winspector.c:351 ../src/winspector.c:367 msgid "OK" msgstr "了解" #: ../src/appicon.c:376 ../src/dock.c:221 msgid "" " will be forcibly closed.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" " を強制終了させます\n" "保存されていない変更は全て失われます\n" "終了させますか? " #: ../src/appicon.c:383 ../src/dock.c:239 ../src/winmenu.c:119 msgid "Kill Application" msgstr "アプリケーション強制終了" #: ../src/appicon.c:384 ../src/dock.c:240 ../src/winmenu.c:122 msgid "Yes" msgstr "はい" #: ../src/appicon.c:384 ../src/dock.c:240 ../src/winmenu.c:122 msgid "No" msgstr "いいえ" #: ../src/appicon.c:412 ../src/dock.c:1036 ../src/dock.c:3198 msgid "Unhide Here" msgstr "このワークスペースで元に戻す" #: ../src/appicon.c:413 ../src/appicon.c:436 ../src/dock.c:1038 #: ../src/dock.c:1040 ../src/dock.c:3210 ../src/winmenu.c:433 msgid "Hide" msgstr "隠す" #: ../src/appicon.c:414 msgid "Set Icon..." msgstr "アイコン設定..." #: ../src/appicon.c:415 ../src/dock.c:1044 ../src/rootmenu.c:224 #: ../src/winmenu.c:460 msgid "Kill" msgstr "強制終了" #: ../src/appicon.c:434 ../src/dock.c:3208 msgid "Unhide" msgstr "元に戻す" #: ../src/application.c:362 #, c-format msgid "recreating missing icon '%s'" msgstr "アイコン '%s' の再作成" #: ../src/defaults.c:711 ../src/defaults.c:835 #, c-format msgid "Domain %s (%s) of global defaults database is corrupted!" msgstr "グローバル標準データベースのドメイン%s (%s)がおかしいです!" #: ../src/defaults.c:715 #, c-format msgid "could not load domain %s from global defaults database" msgstr "グローバル標準データベースからドメイン %s をロードできません" #: ../src/defaults.c:760 ../src/defaults.c:774 #, c-format msgid "invalid global menu file %s" msgstr "グローバルメニューファイル %s が間違っています" #: ../src/defaults.c:821 ../src/defaults.c:910 ../src/defaults.c:946 #: ../src/defaults.c:996 #, c-format msgid "Domain %s (%s) of defaults database is corrupted!" msgstr "標準データベースのドメイン %s (%s)がおかしいです!" #: ../src/defaults.c:825 ../src/defaults.c:930 ../src/defaults.c:982 #: ../src/defaults.c:1009 #, c-format msgid "could not load domain %s from user defaults database" msgstr "ユーザ標準データベースからドメイン %s をロードできません" #: ../src/defaults.c:854 #, c-format msgid "could not load domain %s from global defaults database (%s)" msgstr "グローバル標準データベース(%s)からドメイン %s をロードできません" #: ../src/defaults.c:972 ../src/screen.c:408 #, c-format msgid "could not load logo image for panels: %s" msgstr "パネル用のロゴ画像 %s が読み込めません" #. --------------------------- Local ----------------------- #: ../src/defaults.c:1178 ../src/defaults.c:1301 ../src/defaults.c:1387 #: ../src/defaults.c:1792 ../src/defaults.c:1808 ../src/defaults.c:1849 #: ../src/defaults.c:1894 ../src/defaults.c:2301 ../src/wdefaults.c:541 #: ../src/wdefaults.c:570 #, c-format msgid "Wrong option format for key \"%s\". Should be %s." msgstr "\"%s\"に対するオプション形式が違います. %s型にして下さい" #: ../src/defaults.c:1180 ../src/defaults.c:1253 ../src/defaults.c:1278 #: ../src/defaults.c:1305 ../src/defaults.c:1317 ../src/defaults.c:1331 #: ../src/defaults.c:1345 ../src/defaults.c:1391 ../src/defaults.c:1403 #: ../src/defaults.c:1796 ../src/defaults.c:1813 ../src/defaults.c:1825 #: ../src/defaults.c:1854 ../src/defaults.c:1870 ../src/defaults.c:1899 #: ../src/defaults.c:1978 ../src/defaults.c:2306 ../src/defaults.c:2317 #, c-format msgid "using default \"%s\" instead" msgstr "代わりに標準の設定\"%s\"を使います" #: ../src/defaults.c:1207 #, c-format msgid "wrong option value for key \"%s\"; got \"%s\", should be one of %s." msgstr "キー\"%s\"に対するオプションが違います(\"%s\"). %s のどれかにして下さい" #: ../src/defaults.c:1249 #, c-format msgid "can't convert \"%s\" to boolean for key \"%s\"" msgstr "\"%s\"(\"%s\"の引数)をboolean型へ変換できません" #: ../src/defaults.c:1276 #, c-format msgid "can't convert \"%s\" to integer for key \"%s\"" msgstr "\"%s\"(\"%s\"の引数)を整数(integer型)へ変換できません" #: ../src/defaults.c:1313 #, c-format msgid "Incorrect number of elements in array for key \"%s\"." msgstr "\"%s\"に対する要素数が正しくありません" #: ../src/defaults.c:1327 #, c-format msgid "Wrong value for key \"%s\". Should be Coordinate." msgstr "\"%s\"に対する指定が不正です. Coordinate型にしてください" #: ../src/defaults.c:1341 #, c-format msgid "can't convert array to integers for \"%s\"." msgstr "\"%s\"に対して整数列へ変換できません" #: ../src/defaults.c:1506 ../src/defaults.c:1536 ../src/defaults.c:1552 #: ../src/defaults.c:1581 ../src/defaults.c:1603 ../src/defaults.c:1654 #: ../src/defaults.c:1693 ../src/defaults.c:1730 ../src/defaults.c:1746 #, c-format msgid "\"%s\" is not a valid color name" msgstr "カラー名の指定\"%s\"が間違っています" #: ../src/defaults.c:1518 ../src/defaults.c:1569 msgid "bad number of arguments in gradient specification" msgstr "グラデーション指定の引数の数が間違っています" #: ../src/defaults.c:1627 msgid "too few arguments in multicolor gradient specification" msgstr "マルチカラーのグラデーション指定の引数が足りません" #: ../src/defaults.c:1719 msgid "bad number of arguments in textured gradient specification" msgstr "テクスチャのグラデーション指定の引数の数が間違っています" #: ../src/defaults.c:1762 #, c-format msgid "bad opacity value for tgradient texture \"%s\". Should be [0..255]" msgstr "不透明度に %s は指定できません. 0 から 255 で指定してください" #: ../src/defaults.c:1779 #, c-format msgid "invalid texture type %s" msgstr "テクスチャのタイプ %s が不正です" #: ../src/defaults.c:1821 #, c-format msgid "Error in texture specification for key \"%s\"" msgstr "`%s'に対するテクスチャの指定エラーです" #: ../src/defaults.c:1866 msgid "Wrong type for workspace background. Should be a texture type." msgstr "ワークスペース背景の形式が違います. Texture型にしてください" #: ../src/defaults.c:1912 #, c-format msgid "Wrong type for background of workspace %i. Should be a texture." msgstr "ワークスペース %i の背景の形式が違います. Texture型にしてください" #: ../src/defaults.c:1951 msgid "could not load any usable font!!!" msgstr "使用できるフォントが見当たりません!!!" #: ../src/defaults.c:1974 #, c-format msgid "could not get color for key \"%s\"" msgstr "\"%s\"に対する色が得られません" #: ../src/defaults.c:2026 ../src/rootmenu.c:438 #, c-format msgid "%s: invalid key modifier \"%s\"" msgstr "%s:キーの指定\"%s\"が間違っています" #: ../src/defaults.c:2038 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\"" msgstr "%s:ショートカット\"%s\"のキー指定が間違っています" #: ../src/defaults.c:2044 #, c-format msgid "%s:invalid key in shortcut \"%s\"" msgstr "%s:ショートカット\"%s\"のキー指定が間違っています" #: ../src/defaults.c:2066 #, c-format msgid "%s: modifier key %s is not valid" msgstr "%s:キー%sの設定が適切でありません" #: ../src/defaults.c:2173 #, c-format msgid "failed to open bitmap file \"%s\"" msgstr "ビットマップファイル \"%s\" を開けません" #: ../src/defaults.c:2176 #, c-format msgid "\"%s\" is not a valid bitmap file" msgstr "\"%s\" は正しいビットマップファイルではありません" #: ../src/defaults.c:2179 #, c-format msgid "out of memory reading bitmap file \"%s\"" msgstr "ビットマップファイル \"%s\" を読んでいるときにメモリが不足しました" #: ../src/defaults.c:2217 ../src/defaults.c:2250 msgid "bad number of arguments in cursor specification" msgstr "カーソル指定の引数の数が間違っています" #: ../src/defaults.c:2233 #, c-format msgid "unknown builtin cursor name \"%s\"" msgstr "\"%s\" という名前のカーソルは組み込まれてません" #: ../src/defaults.c:2260 ../src/defaults.c:2272 #, c-format msgid "could not find cursor bitmap file \"%s\"" msgstr "カーソルビットマップ \"%s\" を見つけられません" #: ../src/defaults.c:2313 #, c-format msgid "Error in cursor specification for key \"%s\"" msgstr "\"%s\" に対するカーソルの指定エラーです" #: ../src/defaults.c:2378 msgid "could not render texture for icon background" msgstr "アイコン背景のテクスチャのレンダリングができませんでした" #: ../src/defaults.c:2892 ../src/defaults.c:2961 #, c-format msgid "Invalid arguments for option \"%s\"" msgstr "無効な引数です '%s'" #: ../src/defaults.c:2898 ../src/defaults.c:2967 #, c-format msgid "Could not find image \"%s\" for option \"%s\"" msgstr "%s 指定で画像を読み込めません: %s" #: ../src/defaults.c:2903 ../src/defaults.c:2975 #, c-format msgid "Could not load image \"%s\" for option \"%s\"" msgstr "%s 指定で画像を読み込めません: %s" #: ../src/defaults.c:2913 msgid "Invalid split sizes for switch panel back image." msgstr "" #: ../src/defaults.c:2982 #, c-format msgid "Invalid number of arguments for option \"%s\"" msgstr "オプション(\"%s\")の指定の引数の数が間違っています" #: ../src/defaults.c:2997 #, c-format msgid "Value for option \"%s\" must be an array of 7 strings" msgstr "" #: ../src/defaults.c:3011 #, c-format msgid "Invalid argument for option \"%s\" item %d" msgstr "" #: ../src/dialog.c:126 msgid "Save workspace state" msgstr "ワークスペースの状態保存" #: ../src/dialog.c:405 ../src/dialog.c:466 ../src/dialog.c:976 #: ../src/dock.c:472 ../src/dockedapp.c:383 ../src/rootmenu.c:180 #: ../src/rootmenu.c:224 msgid "Cancel" msgstr "キャンセル" #: ../src/dialog.c:558 msgid "Could not open directory \"%s\":\n%s" msgstr "ディレクトリを開けません \"%s\":\n%s" #: ../src/dialog.c:608 msgid "Could not load image file " msgstr "画像ファイルを読み込めません" #: ../src/dialog.c:903 msgid "Directories" msgstr "ディレクトリ" #: ../src/dialog.c:912 msgid "Icons" msgstr "アイコン" #: ../src/dialog.c:945 msgid "Preview" msgstr "プレビュー" #: ../src/dialog.c:958 msgid "File Name:" msgstr "ファイル名:" #: ../src/dialog.c:982 msgid "Choose File" msgstr "ファイル選択" #: ../src/dialog.c:1001 ../src/dialog.c:1003 msgid "Icon Chooser" msgstr "アイコン選択" #: ../src/dialog.c:1184 msgid "Window Manager for X" msgstr "Window Manager for X" #: ../src/dialog.c:1186 #, c-format msgid "Version %s" msgstr "バージョン %s" #: ../src/dialog.c:1207 #, c-format msgid "Using visual 0x%x: %s %ibpp " msgstr "Using visual 0x%x: %s %ibpp " #: ../src/dialog.c:1214 msgid "(32 thousand colors)\n" msgstr "(3 万 2 千色)\n" #: ../src/dialog.c:1217 msgid "(64 thousand colors)\n" msgstr "(6 万 4 千色)\n" #: ../src/dialog.c:1221 msgid "(16 million colors)\n" msgstr "(1,600 万色)\n" #: ../src/dialog.c:1224 #, c-format msgid "(%d colors)\n" msgstr "(%d 色)\n" #: ../src/dialog.c:1233 #, c-format msgid "Total memory allocated: %i kB (in use: %i kB).\n" msgstr "割当メモリ: %i kB. 使用中メモリ: %i kB.\n" #: ../src/dialog.c:1283 msgid "Image formats: " msgstr "画像形式: " #: ../src/dialog.c:1247 msgid "" "\n" "Additional support for: WMSPEC" msgstr "" "\n" "拡張対応: " #: ../src/dialog.c:1253 msgid "\n" msgstr "" #: ../src/dialog.c:1255 msgid "Solaris " msgstr "Solaris " #: ../src/dialog.c:1257 msgid "Xinerama: " msgstr "Xinerama: " #: ../src/dialog.c:1289 msgid "Info" msgstr "情報 " #: ../src/dialog.c:1417 msgid "" " Window Maker 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.\n" "\n" " Window Maker 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.\n" "\n" " You should have received a copy of the GNU General Public License along " "with this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin Street, Fifth Floor, Boston, MA02110-1301 USA." msgstr "" #: ../src/dialog.c:1389 msgid "Legal" msgstr "" #: ../src/dialog.c:1532 msgid "cannot open connection for crashing dialog panel. Aborting." msgstr "ダイアログが壊れて接続できません. 中止します" #: ../src/dialog.c:1558 msgid "Fatal error" msgstr "致命的なエラー" #: ../src/dialog.c:1568 #, c-format msgid "Window Maker received signal %i." msgstr "Window Maker は シグナル %i を受けました." #: ../src/dialog.c:1576 msgid "" " This fatal error occured probably due to a bug. Please fill the included " "BUGFORM and report it to %s." msgstr "" "この致命的なエラーはバグによるものかもしれません. 同梱のバグフォームを使って " "%s 宛てにレポートして下さい" #: ../src/dialog.c:1583 msgid "What do you want to do now?" msgstr "さて, どうしますか?" #: ../src/dialog.c:1589 msgid "Select action" msgstr "選んでください" #: ../src/dialog.c:1590 msgid "Abort and leave a core file" msgstr "中止して core ファイルを残す" #: ../src/dialog.c:1591 msgid "Restart Window Maker" msgstr "Window Maker を再起動する" #: ../src/dialog.c:1592 msgid "Start alternate window manager" msgstr "かわりのウィンドウマネージャを起動する" #: ../src/dialog.c:1757 msgid "" "Window Maker is part of the GNUstep project.\n" "The GNUstep project aims to create a free\n" "implementation of the OpenStep(tm) specification\n" "which is a object-oriented framework for\n" "creating advanced graphical, multi-platform\n" "applications. Additionally, a development and\n" "user desktop environment will be created on top\n" "of the framework. For more information about\n" "GNUstep, please visit: www.gnustep.org" msgstr "" #: ../src/dialog.c:1780 msgid "About GNUstep" msgstr "" #: ../src/dock.c:170 ../src/menu.c:1768 #, c-format msgid "Type the name for workspace %i:" msgstr "ワークスペース%iの名前を入力して下さい: " #: ../src/dock.c:171 ../src/dock.c:1003 ../src/dock.c:1005 ../src/dock.c:3117 #: ../src/menu.c:1772 msgid "Rename Workspace" msgstr "ワークスペース名の変更" #: ../src/dock.c:438 ../src/dock.c:445 msgid "Warning" msgstr "警告" #: ../src/dock.c:439 msgid "" "Some icons cannot be made omnipresent. Please make sure that no other icon " "is docked in the same positions on the other workspaces and the Clip is not " "full in some workspace." msgstr "" "いくつかのアイコンが「どこでも表示」にできません. 他のアイコンが違うワークス" "ペースで同じ場所にドックされていないことと, どこかのワークスペースでクリップ" "がいっぱいになっていないことを確認してください" #: ../src/dock.c:446 msgid "" "Icon cannot be made omnipresent. Please make sure that no other icon is " "docked in the same position on the other workspaces and the Clip is not full " "in some workspace." msgstr "" "アイコンを「どこでも表示」にできません. 他のアイコンが違うワークスペースで同" "じ場所にドックされていないことと, どこかのワークスペースでクリップがいっぱい" "になっていないことを確認してください" #: ../src/dock.c:470 msgid "Workspace Clip" msgstr "ワークスペース クリップ" #: ../src/dock.c:471 msgid "All selected icons will be removed!" msgstr "選択されたアイコン全てが削除されます!" #: ../src/dock.c:521 ../src/dock.c:1016 ../src/dock.c:1018 ../src/dock.c:3153 msgid "Keep Icon" msgstr "アイコンを保持する" #: ../src/dock.c:522 ../src/dock.c:1910 ../src/dock.c:2041 msgid "Type the command used to launch the application" msgstr "" "このアプリケーションを起動するための\n" "コマンドを入力してください" #: ../src/dock.c:842 #, c-format msgid "could not launch application %s" msgstr "アプリケーション%sを起動できません" #: ../src/dock.c:893 msgid "could not create workspace submenu for Clip menu" msgstr "クリップメニューのワークスペースサブメニューが作成できません" #: ../src/dock.c:948 msgid "could not create options submenu for Clip menu" msgstr "クリップメニューのオプションサブメニューが作成できません" #: ../src/dock.c:952 ../src/dock.c:993 msgid "Keep on Top" msgstr "常に手前に表示" #: ../src/dock.c:957 msgid "Collapsed" msgstr "折り畳む" #: ../src/dock.c:962 msgid "Autocollapse" msgstr "自動的に折り畳む" #: ../src/dock.c:967 msgid "Autoraise" msgstr "自動的に前面に表示" #: ../src/dock.c:972 msgid "Autoattract Icons" msgstr "アイコンを自動的に引き寄せる" #: ../src/dock.c:998 msgid "Clip Options" msgstr "クリップオプション" #: ../src/dock.c:1007 msgid "Selected" msgstr "選択" #: ../src/dock.c:1012 ../src/dock.c:1014 ../src/dock.c:3144 msgid "Select All Icons" msgstr "全てのアイコンの選択" #: ../src/dock.c:1020 ../src/dock.c:1022 ../src/dock.c:3161 msgid "Move Icon To" msgstr "アイコンを移動" #: ../src/dock.c:1027 ../src/dock.c:1029 ../src/dock.c:3172 msgid "Remove Icon" msgstr "アイコンを削除" #: ../src/dock.c:1031 msgid "Attract Icons" msgstr "アイコンを引き寄せる" #: ../src/dock.c:1034 msgid "Launch" msgstr "起動" #: ../src/dock.c:1042 msgid "Settings..." msgstr "設定..." #: ../src/dock.c:1366 ../src/dock.c:1466 #, c-format msgid "bad value in docked icon state info %s" msgstr "登録されたアイコンの情報%sに不正な内容があります" #: ../src/dock.c:1473 #, c-format msgid "bad value in docked icon position %i,%i" msgstr "登録されたアイコンの位置(%i, %i)は不正な値です" #: ../src/dock.c:1492 #, c-format msgid "bad value in dock state info:%s" msgstr "" #: ../src/dock.c:1709 msgid "there are too many icons stored in dock. Ignoring what doesn't fit" msgstr "登録されたアイコンが多すぎます. 内容の一部は無効になります" #. icon->forced_dock = 1; #: ../src/dock.c:1909 ../src/dock.c:2040 msgid "Dock Icon" msgstr "ドック登録アイコン" #: ../src/dock.c:3039 #, c-format msgid "Could not execute command \"%s\"" msgstr "コマンド\"%s\"を実行できません" #: ../src/dock.c:3123 msgid "Toggle Omnipresent" msgstr "どこでも表示" #: ../src/dock.c:3128 ../src/winmenu.c:406 ../src/winspector.c:1302 msgid "Omnipresent" msgstr "どこでも表示" #: ../src/dock.c:3142 msgid "Unselect All Icons" msgstr "全てのアイコンの選択解除" #: ../src/dock.c:3151 msgid "Keep Icons" msgstr "アイコンを保持する" #: ../src/dock.c:3159 msgid "Move Icons To" msgstr "アイコンを移動" #: ../src/dock.c:3170 msgid "Remove Icons" msgstr "アイコンを削除" #: ../src/dock.c:3200 msgid "Bring Here" msgstr "持ってくる" #: ../src/dockedapp.c:133 #, c-format msgid "could not find icon %s, used in a docked application" msgstr "登録されたドックアプリで使われているアイコン %s が見つかりません" #: ../src/dockedapp.c:206 #, c-format msgid "Could not open specified icon file: %s" msgstr "指定のアイコンファイルが開けません: %s" #: ../src/dockedapp.c:208 msgid "Ignore" msgstr "無視" #: ../src/dockedapp.c:300 msgid "Start when Window Maker is started" msgstr "Window Maker 起動時に一緒に起動" #: ../src/dockedapp.c:305 msgid "Lock (prevent accidental removal)" msgstr "ロックする (不慮の登録解除を予防)" #: ../src/dockedapp.c:309 msgid "Application path and arguments" msgstr "アプリケーションのパスと引数" #: ../src/dockedapp.c:320 msgid "Command for middle-click launch" msgstr "中ボタンクリックで起動されるコマンド" #: ../src/dockedapp.c:332 #, c-format msgid "%s will be replaced with current selection" msgstr "%s は セレクションに置き換えられます" #: ../src/dockedapp.c:336 msgid "Command for files dropped with DND" msgstr "DnD で落とされたファイル用のコマンド" #: ../src/dockedapp.c:348 #, c-format msgid "%d will be replaced with the file name" msgstr "%d は ファイル名に置き換えられます" #: ../src/dockedapp.c:351 msgid "DND support was not compiled in" msgstr "DnD対応でコンパイルされていません" #: ../src/dockedapp.c:356 msgid "Icon Image" msgstr "アイコン画像" #: ../src/dockedapp.c:367 ../src/winspector.c:1450 msgid "Browse..." msgstr "参照..." #: ../src/dockedapp.c:425 msgid "Docked Application Settings" msgstr "ドックの登録アプリケーション設定" #: ../src/framewin.c:619 ../src/framewin.c:711 ../src/menu.c:412 #: ../src/texture.c:453 #, c-format msgid "could not render texture: %s" msgstr "テクスチャをレンダリングできません: %s" #: ../src/framewin.c:642 ../src/framewin.c:652 ../src/framewin.c:668 #: ../src/framewin.c:679 ../src/framewin.c:686 ../src/framewin.c:693 #: ../src/icon.c:330 ../src/menu.c:439 #, c-format msgid "error rendering image:%s" msgstr "画像のレンダリングエラー: %s" #: ../src/framewin.c:739 #, c-format msgid "error rendering image: %s" msgstr "画像のレンダリングエラー: %s" #: ../src/icon.c:215 ../src/wdefaults.c:421 #, c-format msgid "error loading image file \"%s\": %s" msgstr "画像ファイル\"%s\"のロードエラー: %s" #: ../src/icon.c:438 ../src/icon.c:447 #, c-format msgid "could not create directory %s" msgstr "ディレクトリ%sを作成できません" #: ../src/icon.c:696 #, c-format msgid "could not find default icon \"%s\"" msgstr "標準アイコン\"%s\"が見つかりません" #: ../src/icon.c:702 #, c-format msgid "could not load default icon \"%s\":%s" msgstr "標準アイコン\"%s\"をロードできません:%s" #: ../src/main.c:305 msgid "failed to restart Window Maker." msgstr "Window Maker の再起動に失敗しました." #: ../src/main.c:308 #, c-format msgid "could not exec %s" msgstr "%s を実行できません" #: ../src/main.c:346 msgid "Could not execute command: " msgstr "コマンドを実行できません: " #: ../src/main.c:418 #, c-format msgid "%s aborted.\n" msgstr "%s は中断しました.\n" #: ../src/main.c:427 #, c-format msgid "Usage: %s [options]\n" msgstr "使用法: %s [オプション]\n" #: ../src/main.c:428 msgid "The Window Maker window manager for the X window system" msgstr "Window Maker -- X ウィンドウシステムのためのウィンドウマネージャ" #: ../src/main.c:430 msgid " -display host:dpy\tdisplay to use" msgstr " -display ホスト:ID番号\tディスプレイの指定" #: ../src/main.c:432 msgid " --no-cpp \t\tdisable preprocessing of configuration files" msgstr " --no-cpp \t\t設定ファイルをプリプロセッサにかけない" #: ../src/main.c:434 msgid " --no-dock\t\tdo not open the application Dock" msgstr " --no-dock\t\tアプリケーション・ドックを開かない" #: ../src/main.c:435 msgid " --no-clip\t\tdo not open the workspace Clip" msgstr " --no-clip\t\tアプリケーション・クリップ(Clip)を開かない" #: ../src/main.c:436 msgid " --no-autolaunch\tdo not autolaunch applications" msgstr " --no-autolaunch\tアプリケーションの自動起動を行わない" #: ../src/main.c:437 msgid " --dont-restore\t\tdo not restore saved session" msgstr " --dont-restore\t\t保存したセッションを復元しない" #: ../src/main.c:439 msgid " --locale locale\tlocale to use" msgstr " --locale locale\t使用するlocaleの指定" #: ../src/main.c:441 msgid "" " --create-stdcmap\tcreate the standard colormap hint in PseudoColor visuals" msgstr " --create-stdcmap\t擬似色解像度に標準カラーマップヒントを作成する" #: ../src/main.c:442 msgid " --visual-id visualid\tvisual id of visual to use" msgstr " --visual-id ビジュアルID\tビジュアルIDの指定" #: ../src/main.c:443 msgid " --static\t\tdo not update or save configurations" msgstr " static\t\tスタティックモードで起動(設定を保存/更新しない)" #: ../src/main.c:445 msgid " --no-polling\t\tdo not periodically check for configuration updates" msgstr " --no-polling\t\t周期的に設定ファイルの更新をチェックしない" #: ../src/main.c:447 msgid " --version\t\tprint version and exit" msgstr " --version\t\tバージョンを表示してすぐ終了する" #: ../src/main.c:448 msgid " --help\t\t\tshow this message" msgstr " --help\t\tこのメッセージを表示" #: ../src/main.c:458 #, c-format msgid "could not find user GNUstep directory (%s)." msgstr "ユーザのGNUstepディレクトリ(%s)が見つかりません" #: ../src/main.c:461 msgid "" "There was an error while creating GNUstep directory, please make sure you " "have installed Window Maker correctly and run wmaker.inst" msgstr "" "ユーザのGNUstepディレクトリの作成に失敗しました,\n" "Window Makerが正しくインストールされていることを確認して, wmaker.instを実行し" "てください" #: ../src/main.c:464 #, c-format msgid "%s directory created with default configuration." msgstr "デフォルト設定で %s ディレクトリが作成されました" #: ../src/main.c:482 msgid "" "could not initialise an inotify instance. Changes to the defaults database " "will require a restart to take effect. Check your kernel!" msgstr "" #: ../src/main.c:493 #, c-format msgid "" "could not add an inotify watch on path %s. Changes to the defaults database " "will require a restart to take effect." msgstr "" #: ../src/main.c:515 #, c-format msgid "%s:could not execute initialization script" msgstr "%s:初期化スクリプトを実行できません" #: ../src/main.c:533 #, c-format msgid "%s:could not execute exit script" msgstr "%s:終了スクリプトを実行できません" #: ../src/main.c:571 ../src/main.c:648 ../src/main.c:655 ../src/main.c:662 #, c-format msgid "too few arguments for %s" msgstr "%sに対する引数が足りません" #: ../src/main.c:666 #, c-format msgid "bad value for visualid: \"%s\"" msgstr "ビジュアルIDの値が不正です: \"%s\"" #: ../src/main.c:679 #, c-format msgid "%s: invalid argument '%s'\n" msgstr "%s: 無効な引数です '%s'\n" #: ../src/main.c:680 #, c-format msgid "Try '%s --help' for more information\n" msgstr "追加情報のために '%s --help' を試してみてください\n" #: ../src/main.c:723 msgid "X server does not support locale" msgstr "Xサーバがロケール機能をサポートしていません" #: ../src/main.c:727 msgid "cannot set locale modifiers" msgstr "ロケールを設定できません" #: ../src/main.c:743 #, c-format msgid "could not open display \"%s\"" msgstr "ディスプレイ`%s'を開けません" #: ../src/menu.c:2341 #, c-format msgid "bad value in menus state info: %s" msgstr "メニューの情報 %s に不正な内容があります" #: ../src/misc.c:57 #, c-format msgid "could not define value for %s for cpp" msgstr "cppの %sの値を定義できません" #: ../src/misc.c:82 #, c-format msgid "could not get password entry for UID %i" msgstr "ユーザID %i のパスワードエントリを得られません" #: ../src/misc.c:104 #, c-format msgid "your machine is misconfigured. HOSTNAME is set to %s" msgstr "あなたのマシンの設定がおかしいです. HOSTNAME が %s に設定されています" #: ../src/misc.c:109 #, c-format msgid "your machine is misconfigured. HOST is set to %s" msgstr "あなたのマシンの設定がおかしいです. HOST が %s に設定されています" #: ../src/misc.c:558 ../src/misc.c:563 msgid "Program Arguments" msgstr "プログラム引数" #: ../src/misc.c:559 ../src/misc.c:564 msgid "Enter command arguments:" msgstr "コマンドライン引数を入力してください:" #: ../src/misc.c:608 #, c-format msgid "out of memory during expansion of \"%s\"" msgstr "\"%s\"の展開中にメモリが不足しました" #: ../src/misc.c:661 #, c-format msgid "out of memory during expansion of \"%%w\"" msgstr "\"%%w\"の展開中にメモリが不足しました" #: ../src/misc.c:678 #, c-format msgid "out of memory during expansion of \"%%W\"" msgstr "\"%%W\"の展開中にメモリが不足しました" #: ../src/misc.c:695 #, c-format msgid "out of memory during expansion of \"%%a\"" msgstr "\"%%a\"の展開中にメモリが不足しました" #: ../src/misc.c:724 #, c-format msgid "out of memory during expansion of \"%%d\"" msgstr "\"%%d\"の展開中にメモリが不足しました" #: ../src/misc.c:738 msgid "selection not available" msgstr "セレクションが利用不能" #: ../src/misc.c:745 #, c-format msgid "out of memory during expansion of \"%%s\"" msgstr "\"%%s\"の展開中にメモリが不足しました" #: ../src/misc.c:780 ../src/misc.c:786 #, c-format msgid "bad window name value in %s state info" msgstr "%s ステート情報中に不正なウィンドウ名があります" #: ../src/misc.c:1014 msgid "could not send message to background image helper" msgstr "背景イメージヘルパーにメッセージを送信できません" #: ../src/resources.c:41 #, c-format msgid "could not parse color \"%s\"" msgstr "カラー\"%s\"の指定に誤りがあります" #: ../src/resources.c:45 #, c-format msgid "could not allocate color \"%s\"" msgstr "カラー\"%s\"を予約できません" #: ../src/rootmenu.c:179 ../src/rootmenu.c:180 msgid "Exit" msgstr "終了" #: ../src/rootmenu.c:180 msgid "Exit window manager?" msgstr "ウィンドウマネージャを終了しますか?" #: ../src/rootmenu.c:222 msgid "Kill X session" msgstr "Xセッションの終了" #: ../src/rootmenu.c:223 msgid "" "Kill Window System session?\n" "(all applications will be closed)" msgstr "" "ウィンドウシステムのセッションを終了しますか?\n" "(全てのアプリケーションが閉じられます)" #: ../src/rootmenu.c:451 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\" for entry %s" msgstr "%s:キーボードショートカットの設定\"%s\"が間違っています(%s)" #: ../src/rootmenu.c:459 #, c-format msgid "%s:invalid key in shortcut \"%s\" for entry %s" msgstr "%s:キーボードショートカット\"%s\"が間違っています(%s)" #: ../src/rootmenu.c:493 #, c-format msgid "%s: unmatched '\"' in menu file" msgstr "%s: メニューファイル中, '\"'が対応していません" #: ../src/rootmenu.c:542 #, c-format msgid "%s: missing command" msgstr "%s: コマンドの指定がありません" #: ../src/rootmenu.c:592 #, c-format msgid "invalid OPEN_MENU specification: %s" msgstr "OPEN_MENU の指定が不適切です: %s" #: ../src/rootmenu.c:647 #, c-format msgid "%s:could not stat menu" msgstr "%s:メニューをstatできません" #: ../src/rootmenu.c:655 #, c-format msgid "%s:could not stat menu:%s" msgstr "%s:メニューをstatできません: %s" #: ../src/rootmenu.c:671 #, c-format msgid "too many parameters in OPEN_MENU: %s" msgstr "OPEN_MENU のパラメータが多すぎます: %s" #: ../src/rootmenu.c:713 msgid "" "There are more than one WORKSPACE_MENU commands in the applications menu. " "Only one is allowed." msgstr "" "アプリケーションメニュー中, WORKSPACE_MENU コマンドが複数存在します. " "定義できるのは一回だけです." #: ../src/rootmenu.c:744 msgid "" "There are more than one WINDOWS_MENU commands in the applications menu. Only " "one is allowed." msgstr "" "アプリケーションメニュー中, WINDOWS_MENU コマンドが複数存在します. " "定義できるのは一回だけです." #: ../src/rootmenu.c:749 msgid "Window List" msgstr "ウィンドウ一覧" #: ../src/rootmenu.c:776 ../src/rootmenu.c:793 ../src/rootmenu.c:801 #, c-format msgid "%s:missing parameter for menu command \"%s\"" msgstr "%s:メニューコマンド\"%s\"に対するパラメータがありません" #: ../src/rootmenu.c:865 #, c-format msgid "%s:unknown command \"%s\" in menu config." msgstr "%s:メニュー設定中, 不正なコマンド\"%s\"があります." #: ../src/rootmenu.c:872 #, c-format msgid "%s:can't add shortcut for entry \"%s\"" msgstr "%s:エントリ\"%s\"のショートカットを登録できません" #: ../src/rootmenu.c:1014 #, c-format msgid "%s:maximal line size exceeded in menu config: %s" msgstr "%s:メニュー設定の最大行数を越えました: %s" #: ../src/rootmenu.c:1035 ../src/rootmenu.c:1120 ../src/rootmenu.c:1214 #, c-format msgid "%s:missing command in menu config: %s" msgstr "%s:メニュー設定にコマンドの指定がありません: %s" #: ../src/rootmenu.c:1062 #, c-format msgid "%s:syntax error in menu file:END declaration missing" msgstr "%s:メニューファイルに文法エラーがあります: END の記述がありません" #: ../src/rootmenu.c:1088 ../src/rootmenu.c:1182 msgid "could not make arguments for menu file preprocessor" msgstr "メニューファイル・プリプロセッサへの引数が作成できません" #: ../src/rootmenu.c:1094 ../src/rootmenu.c:1189 #, c-format msgid "%s:could not open/preprocess menu file" msgstr "%s:メニューファイルのオープン/プリプロセスができません" #: ../src/rootmenu.c:1105 ../src/rootmenu.c:1199 #, c-format msgid "could not open menu file \"%s\": %s" msgstr "メニューファイルを開けません \"%s\": %s" #: ../src/rootmenu.c:1131 #, c-format msgid "%s:invalid menu file. MENU command is missing" msgstr "%s: メニューファイルが不適当です. MENU コマンドがありません" #: ../src/rootmenu.c:1139 msgid "error reading preprocessed menu data" msgstr "プリプロセスされたメニューデータの読み込みにエラーが起きました" #: ../src/rootmenu.c:1225 #, c-format msgid "%s:no title given for the root menu" msgstr "%s:ルートメニューのタイトルがありません" #: ../src/rootmenu.c:1306 ../src/rootmenu.c:1378 ../src/rootmenu.c:1417 #, c-format msgid "out of memory while constructing directory menu %s" msgstr "ディレクトリメニュー%sの作成のためのメモリが不足しています" #: ../src/rootmenu.c:1315 #, c-format msgid "%s:could not stat file \"%s\" in menu directory" msgstr "%s:メニューディレクトリのファイル\"%s\"をstatできません" #: ../src/rootmenu.c:1467 msgid "Commands" msgstr "コマンド" #: ../src/rootmenu.c:1470 msgid "Restart" msgstr "再起動" #: ../src/rootmenu.c:1471 msgid "Exit..." msgstr "終了..." #: ../src/rootmenu.c:1510 #, c-format msgid "could not find menu file \"%s\" referenced in WMRootMenu" msgstr "WMRootMenuで参照しているメニュー\"%s\"を見つけられません" #: ../src/rootmenu.c:1516 #, c-format msgid "could not access menu \"%s\" referenced in WMRootMenu" msgstr "WMRootMenuで参照しているメニュー\"%s\"へアクセスできません" #: ../src/rootmenu.c:1528 #, c-format msgid "" "using default menu file \"%s\" as the menu referenced in WMRootMenu could " "not be found " msgstr "" "WMRootMenuで参照しているメニュー見つからないので, デフォルトのメニューファイ" "ル \"%s\" を用います" #: ../src/rootmenu.c:1551 ../src/rootmenu.c:1625 #, c-format msgid "%s:format error in root menu configuration \"%s\"" msgstr "%s:ルートメニュー設定\"%s\"にフォーマットエラーがあります" #: ../src/rootmenu.c:1702 msgid "" "The applications menu could not be loaded. Look at the console output for a " "detailed description of the errors." msgstr "" "アプリケーションメニューがロードできません. エラーの詳細はコンソールへの出力" "を参照してください" #: ../src/screen.c:685 #, c-format msgid "could not initialize graphics library context: %s" msgstr "グラフィックライブラリコンテキストを初期化できません: %s" #: ../src/screen.c:711 msgid "could not initialize WINGs widget set" msgstr "WINGs ウィジェットセットの初期化ができません" #: ../src/screen.c:1006 #, c-format msgid "could not save session state in %s" msgstr "%s のセッション状態を保存できませんでした" #: ../src/session.c:151 ../src/wdefaults.c:557 ../src/winspector.c:410 #, c-format msgid "can't convert \"%s\" to boolean" msgstr "\"%s\"を boolean型に変換できません" #: ../src/stacking.c:75 msgid "could not get window list!!" msgstr "ウィンドウ一覧が得られません!!" #: ../src/startup.c:177 #, c-format msgid "internal X error: %s" msgstr "X 内部エラー: %s" #: ../src/startup.c:672 ../src/startup.c:689 ../src/startup.c:695 #, c-format msgid "could not read domain \"%s\" from defaults database" msgstr "標準データベースからドメイン\"%s\"を読み込むことができません" #: ../src/startup.c:681 #, c-format msgid "icon size is configured to %i, but it's too small. Using 16 instead" msgstr "" "設定されているアイコンサイズ%iは小さすぎます. かわりにサイズ16を用います" #: ../src/startup.c:712 msgid "XKB is not supported. KbdModeLock is automatically disabled." msgstr "XKB はサポートされていません. KbdModeLock は自動的に無効になります" #: ../src/startup.c:731 msgid "it seems that there is already a window manager running" msgstr "既に他のウィンドウマネージャが立ち上がっているようです" #: ../src/startup.c:737 #, c-format msgid "could not manage screen %i" msgstr "スクリーン %iを掌握できません" #: ../src/startup.c:794 msgid "could not manage any screen" msgstr "掌握できるスクリーンがありません" #: ../src/switchmenu.c:129 msgid "Windows" msgstr "ウィンドウ一覧" #: ../src/texture.c:272 ../src/texture.c:310 #, c-format msgid "image file \"%s\" used as texture could not be found." msgstr "テクスチャ用画像ファイル\"%s\"が見つかりません" #: ../src/texture.c:277 ../src/texture.c:315 #, c-format msgid "could not load texture pixmap \"%s\":%s" msgstr "テクスチャ画像\"%s\"をロードできません:%s" #: ../src/texture.c:457 msgid "could not allocate image buffer" msgstr "画像バッファを予約できません" #: ../src/wdefaults.c:415 #, c-format msgid "could not find icon file \"%s\"" msgstr "アイコンファイル \"%s\"が見つかりません" #: ../src/window.c:2756 ../src/window.c:2914 msgid "" "The NumLock, ScrollLock or similar key seems to be turned on. Turn it off or " "some mouse actions and keyboard shortcuts will not work." msgstr "" "NumLock, ScrollLock 等のキーがONになってませんかね.\n" "マウス機能やキーボードショートカットを正常に利用するにはOFFに切替えて下さい" #: ../src/winmenu.c:121 msgid "" "This will kill the application.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" "このアプリケーションを強制終了させます.\n" "保存されていない変更は全て失われます.\n" "終了させますか?" #: ../src/winmenu.c:271 ../src/winmenu.c:280 msgid "Set Shortcut" msgstr "ショートカット設定" #: ../src/winmenu.c:354 ../src/winmenu.c:394 msgid "could not create submenu for window menu" msgstr "ウィンドウメニューにサブメニューを作れません" #: ../src/winmenu.c:398 msgid "Keep on top" msgstr "常に手前に表示" #: ../src/winmenu.c:402 msgid "Keep at bottom" 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:424 ../src/winmenu.c:519 msgid "Maximize" msgstr "最大化" #: ../src/winmenu.c:427 ../src/winmenu.c:503 msgid "Miniaturize" msgstr "最小化" #: ../src/winmenu.c:430 ../src/winmenu.c:537 msgid "Shade" msgstr "シェード" #: ../src/winmenu.c:436 msgid "Resize/Move" msgstr "サイズ変更/移動" #: ../src/winmenu.c:439 msgid "Select" msgstr "選択" #: ../src/winmenu.c:442 msgid "Move To" msgstr "移動" #: ../src/winmenu.c:447 msgid "Attributes..." msgstr "属性..." #: ../src/winmenu.c:449 msgid "Options" msgstr "オプション" #. #. entry = wMenuAddCallback(menu, _("Select Shortcut"), NULL, NULL); #. wMenuEntrySetCascade(menu, entry, makeMakeShortcutMenu(scr)); #. #: ../src/winmenu.c:457 msgid "Close" msgstr "閉じる" #: ../src/winmenu.c:497 msgid "Deminiaturize" msgstr "最小化解除" #: ../src/winmenu.c:513 msgid "Unmaximize" msgstr "最大化解除" #: ../src/winmenu.c:531 msgid "Unshade" msgstr "シェード解除" #: ../src/winspector.c:350 #, c-format msgid "Could not find icon \"%s\" specified for this window" msgstr "このウィンドウへ指定されたアイコン\"%s\"が見つかりません" #: ../src/winspector.c:365 #, c-format msgid "Could not open specified icon \"%s\":%s" msgstr "指定されたアイコン\"%s\"が開けません:%s" #: ../src/winspector.c:1067 #, c-format msgid "Inspecting %s.%s" msgstr "属性 ( %s.%s )" #: ../src/winspector.c:1090 msgid "Click in the window you wish to inspect." msgstr "調査対象のウィンドウをクリックしてください." #: ../src/winspector.c:1122 msgid "" "The configuration will apply to all\n" "windows that have their WM_CLASS\n" "property set to the above selected\n" "name, when saved." msgstr "" "この設定が保存されると, 上で\n" "指定されたWM_CLASSプロパティを\n" "持つ全てのウィンドウに適用されます." #: ../src/winspector.c:1147 msgid "Save" msgstr "保存" #: ../src/winspector.c:1155 msgid "Apply" msgstr "適用" #: ../src/winspector.c:1161 msgid "Reload" msgstr "再読み込み" #: ../src/winspector.c:1170 ../src/winspector.c:1180 msgid "Window Specification" msgstr "ウィンドウの指定" #: ../src/winspector.c:1171 msgid "Window Attributes" msgstr "ウィンドウの属性" #: ../src/winspector.c:1172 msgid "Advanced Options" msgstr "こだわりの設定" #: ../src/winspector.c:1173 msgid "Icon and Initial Workspace" msgstr "アイコンとワークスペース" #: ../src/winspector.c:1174 msgid "Application Specific" msgstr "アプリケーション固有の設定" #: ../src/winspector.c:1187 msgid "Defaults for all windows" msgstr "全ウィンドウの標準" #: ../src/winspector.c:1240 msgid "Select window" msgstr "ウィンドウの選択" #: ../src/winspector.c:1253 msgid "Attributes" msgstr "属性" #: ../src/winspector.c:1264 msgid "Disable titlebar" msgstr "タイトルバーを表示しない" #: ../src/winspector.c:1266 msgid "" "Remove the titlebar of this window.\n" "To access the window commands menu of a window\n" "without it's titlebar, press Control+Esc (or the\n" "equivalent shortcut, if you changed the default\n" "settings)." msgstr "" "このウィンドウのタイトルバーを表示しなくします.\n" "タイトルバーのないウィンドウのメニューを表示するには, \n" "コントロールキー と エスケープキーを同時に押します\n" "(または, それに相当する, あなたが設定したショートカットキー)." #: ../src/winspector.c:1272 msgid "Disable resizebar" msgstr "リサイズバーを表示しない" #: ../src/winspector.c:1274 msgid "Remove the resizebar of this window." msgstr "このウィンドウのリサイズバーを表示しなくします" #: ../src/winspector.c:1277 msgid "Disable close button" msgstr "クローズボタンを表示しない" #: ../src/winspector.c:1279 msgid "Remove the `close window' button of this window." msgstr "このウィンドウのクローズボタンを表示しなくします" #: ../src/winspector.c:1282 msgid "Disable miniaturize button" msgstr "最小化ボタンを表示しない" #: ../src/winspector.c:1284 msgid "Remove the `miniaturize window' button of the window." msgstr "ウィンドウの最小化ボタンを表示しなくします" #: ../src/winspector.c:1287 msgid "Disable border" msgstr "境界線を表示しない" #: ../src/winspector.c:1289 msgid "Remove the 1 pixel black border around the window." msgstr "ウィンドウ周囲の 1ピクセルの境界を表示しなくします" #: ../src/winspector.c:1292 msgid "Keep on top (floating)" msgstr "常に手前に表示" #: ../src/winspector.c:1294 msgid "" "Keep the window over other windows, not allowing\n" "them to cover it." msgstr "常に手前に(浮いて)表示されます." #: ../src/winspector.c:1297 msgid "Keep at bottom (sunken)" msgstr "常に後ろに表示" #: ../src/winspector.c:1299 msgid "Keep the window under all other windows." msgstr "常に後ろに(沈んで)表示されます." #: ../src/winspector.c:1304 msgid "Make window present in all workspaces." msgstr "全てのワークスペースで表示します" #: ../src/winspector.c:1307 msgid "Start miniaturized" msgstr "最小化状態で起動する" #: ../src/winspector.c:1309 msgid "" "Make the window be automatically miniaturized when it's\n" "first shown." msgstr "最初に起動された時に自動的に最小化するようにします." #: ../src/winspector.c:1312 msgid "Start maximized" msgstr "最大化状態で起動する" #: ../src/winspector.c:1314 msgid "" "Make the window be automatically maximized when it's\n" "first shown." msgstr "最初に起動された時に自動的に最大化するようにします." #: ../src/winspector.c:1317 msgid "Full screen maximization" msgstr "全画面最大化" #: ../src/winspector.c:1319 msgid "" "Make the window use the whole screen space when it's\n" "maximized. The titlebar and resizebar will be moved\n" "to outside the screen." msgstr "" "最大化した時に全画面を使用するようにします. \n" "タイトルバーとリサイズバーは画面の外にはみ出します." #: ../src/winspector.c:1335 msgid "Advanced" msgstr "上級設定" #: ../src/winspector.c:1352 msgid "Do not bind keyboard shortcuts" msgstr "キーボードと連動しない" #: ../src/winspector.c:1354 msgid "" "Do not bind keyboard shortcuts from Window Maker\n" "when this window is focused. This will allow the\n" "window to receive all key combinations regardless\n" "of your shortcut configuration." msgstr "" "ウィンドウがフォーカスされている時に Window Maker の\n" "ショートカットキーが影響しないようにします. \n" "あなたの設定したショートカットも影響しないので, \n" "全てのキー操作をウィンドウに伝えることができます." #: ../src/winspector.c:1360 msgid "Do not bind mouse clicks" msgstr "マウスクリックと連動しない" #: ../src/winspector.c:1362 msgid "" "Do not bind mouse actions, such as `Alt'+drag\n" "in the window (when Alt is the modifier you have\n" "configured)." msgstr "" "ウィンドウ内でのマウスの動作(Alt+ドラッグなど)\n" "が影響しないようにします." #: ../src/winspector.c:1366 msgid "Do not show in the window list" msgstr "ウィンドウ一覧に表示しない" #: ../src/winspector.c:1368 msgid "Do not list the window in the window list menu." msgstr "ウィンドウ一覧にこのウィンドウを候補表示しません." #: ../src/winspector.c:1371 msgid "Do not show in the switch panel" msgstr "ウィンドウ切替に表示しない" #: ../src/winspector.c:1373 msgid "Do not include in switch panel while cycling windows." msgstr "ウィンドウ切替にこのウィンドウを表示しません." #: ../src/winspector.c:1376 msgid "Do not let it take focus" msgstr "フォーカスしない" #: ../src/winspector.c:1378 msgid "" "Do not let the window take keyboard focus when you\n" "click on it." msgstr "" "ウィンドウをクリックした時にもキーボードフォーカスを\n" "渡さないようにします." #: ../src/winspector.c:1381 msgid "Keep inside screen" msgstr "スクリーンの内側に保持する" #: ../src/winspector.c:1383 msgid "" "Do not allow the window to move itself completely\n" "outside the screen. For bug compatibility.\n" msgstr "" "ウィンドウが自身を完全に画面の外に移動させてしまわないようにします. \n" "(バグ互換性のため)\n" #: ../src/winspector.c:1387 msgid "Ignore 'Hide Others'" msgstr "'他を隠す'を無視する" #: ../src/winspector.c:1389 msgid "" "Do not hide the window when issuing the\n" "`HideOthers' command." msgstr "'他を隠す'コマンドが実行されても隠さないようにします." #: ../src/winspector.c:1392 msgid "Ignore 'Save Session'" msgstr "'セッションの保存'を無視する." #: ../src/winspector.c:1394 msgid "" "Do not save the associated application in the\n" "session's state, so that it won't be restarted\n" "together with other applications when Window Maker\n" "starts." msgstr "" "セッションの状態とこのアプリケーションの関連を保存\n" "しないようにします. 次に Window Maker が起動した時に\n" "このアプリケーションが自動的に起動しないようになります." #: ../src/winspector.c:1399 msgid "Emulate application icon" msgstr "アプリアイコンのエミュレート" #: ../src/winspector.c:1401 msgid "" "Make this window act as an application that provides\n" "enough information to Window Maker for a dockable\n" "application icon to be created." msgstr "" "このウィンドウがドック可能なアプリアイコンを\n" "自前で備えているかのように振る舞わせます." #: ../src/winspector.c:1406 msgid "Focus across workspaces" msgstr "ワークスペースを跨いででもフォーカスする" #: ../src/winspector.c:1408 msgid "" "Allow Window Maker to switch workspace to satisfy\n" "a focus request (annoying)." msgstr "" "フォーカス要求に対して Window Maker がワークスペースを\n" "切替えるようにします (微妙です)." #: ../src/winspector.c:1412 msgid "Do not let it be minimized" msgstr "最小化しない" #: ../src/winspector.c:1414 msgid "" "Do not let the window of this application be\n" "minimized.\n" msgstr "" "このアプリケーションのウィンドウは最小化しないようにします.\n" #: ../src/winspector.c:1419 msgid "Disable language button" msgstr "言語の切替えの無効化" #: ../src/winspector.c:1421 msgid "Remove the `toggle language' button of the window." msgstr "'言語を切り替える'ボタンを表示しなくします" #: ../src/winspector.c:1438 msgid "Miniwindow Image" msgstr "ミニウィンドウ画像" #: ../src/winspector.c:1465 msgid "Icon filename:" msgstr "アイコンファイル名:" #: ../src/winspector.c:1476 msgid "Ignore client supplied icon" msgstr "アプリ自前のアイコンを無視" #: ../src/winspector.c:1482 msgid "Initial Workspace" msgstr "起動時のワークスペース" #: ../src/winspector.c:1484 msgid "The workspace to place the window when it's first shown." msgstr "このウィンドウが起動時に出現するワークスペース." #: ../src/winspector.c:1490 msgid "Nowhere in particular" msgstr "特に指定しない" #: ../src/winspector.c:1507 msgid "Application Attributes" msgstr "アプリケーション属性" #: ../src/winspector.c:1518 msgid "Start hidden" msgstr "起動時に隠す" #: ../src/winspector.c:1520 msgid "Automatically hide application when it's started." msgstr "アプリケーションの起動時に自動的に隠れるようにする." #: ../src/winspector.c:1523 msgid "No application icon" msgstr "アプリアイコンを表示しない" #: ../src/winspector.c:1525 msgid "" "Disable the application icon for the application.\n" "Note that you won't be able to dock it anymore,\n" "and any icons that are already docked will stop\n" "working correctly." msgstr "" "このアプリケーションのアプリアイコンを無効にします.\n" "注意: すると, ドックやクリップができなくなります. \n" "また, すでに登録されているドックも正しく動かなくなります." #: ../src/winspector.c:1531 msgid "Shared application icon" msgstr "アプリアイコンを共有" #: ../src/winspector.c:1533 msgid "" "Use a single shared application icon for all of\n" "the instances of this application.\n" msgstr "" "同じアプリが複数起動しているとき,\n" "アプリアイコンを1つにまとめます.\n" #: ../src/workspace.c:93 ../src/workspace.c:94 ../src/workspace.c:660 #, c-format msgid "Workspace %i" msgstr "ワークスペース %i" #: ../src/workspace.c:704 msgid "Workspaces" msgstr "ワークスペースの設定" #: ../src/workspace.c:706 msgid "could not create Workspace menu" msgstr "ワークスペースメニューを作成できません" #: ../src/workspace.c:713 msgid "New" msgstr "新しいワークスペースを作成" #: ../src/workspace.c:714 msgid "Destroy Last" msgstr "最後のワークスペースを削除" WindowMaker-0.95.9/po/et.po0000644000175000017500000014346713431646201012373 00000000000000# Window Makeri eesti keele tõlge. # Estonian translation of Window Maker. # # Copyright (C) 2000, 2001, 2005, 2013 Free Software Foundation, Inc. # Ivar Smolin , 2000, 2001, 2005, 2013 # msgid "" msgstr "" "Project-Id-Version: Window Maker 0.95.4\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-06-15 15:58+0300\n" "PO-Revision-Date: 2013-06-18 18:09+0300\n" "Last-Translator: Ivar Smolin \n" "Language-Team: Estonian \n" "Language: et\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../src/appicon.c:373 ../src/dialog.c:563 ../src/dock.c:3023 #: ../src/dockedapp.c:207 ../src/main.c:348 ../src/rootmenu.c:1646 #: ../src/winspector.c:351 ../src/winspector.c:367 msgid "Error" msgstr "Viga" #: ../src/appicon.c:374 msgid "Could not open specified icon file" msgstr "Kirjeldatud ikoonifaili pole võimalik avada" #: ../src/appicon.c:374 ../src/dialog.c:405 ../src/dialog.c:466 #: ../src/dialog.c:563 ../src/dialog.c:968 ../src/dialog.c:1599 #: ../src/dock.c:442 ../src/dock.c:449 ../src/dock.c:471 ../src/dock.c:3023 #: ../src/dockedapp.c:208 ../src/dockedapp.c:377 ../src/main.c:348 #: ../src/rootmenu.c:1649 ../src/winspector.c:351 ../src/winspector.c:367 msgid "OK" msgstr "Olgu" #: ../src/appicon.c:404 ../src/dock.c:220 msgid "" " will be forcibly closed.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" " suletakse jõuga.\n" "Kõik salvestamata andmed lähevad kaotsi.\n" "Kas soovid seda teha?" #: ../src/appicon.c:411 ../src/dock.c:238 ../src/winmenu.c:120 msgid "Kill Application" msgstr "Programmi kõrvaldamine" #: ../src/appicon.c:412 ../src/dock.c:239 ../src/winmenu.c:123 msgid "Yes" msgstr "Jah" #: ../src/appicon.c:412 ../src/dock.c:239 ../src/winmenu.c:123 msgid "No" msgstr "Ei" #. #. entry = wMenuAddCallback(menu, _("Select Shortcut"), NULL, NULL); #. wMenuEntrySetCascade(menu, entry, makeMakeShortcutMenu(scr)); #. #: ../src/appicon.c:437 ../src/dock.c:1033 ../src/winmenu.c:462 msgid "Launch" msgstr "Käivita programm" #: ../src/appicon.c:438 ../src/dock.c:1035 ../src/dock.c:3180 msgid "Unhide Here" msgstr "Too siia töölauale" #: ../src/appicon.c:439 ../src/appicon.c:462 ../src/dock.c:1037 #: ../src/dock.c:1039 ../src/dock.c:3192 ../src/winmenu.c:438 msgid "Hide" msgstr "Peida" #: ../src/appicon.c:440 msgid "Set Icon..." msgstr "Ikooni määramine..." #: ../src/appicon.c:441 ../src/dock.c:1043 ../src/rootmenu.c:223 #: ../src/winmenu.c:468 msgid "Kill" msgstr "Kõrvalda" #: ../src/appicon.c:460 ../src/dock.c:3190 msgid "Unhide" msgstr "Too nähtavale" #: ../src/application.c:364 #, c-format msgid "recreating missing icon '%s'" msgstr "puuduva ikooni '%s' uuestiloomine" #: ../src/defaults.c:725 ../src/defaults.c:840 #, c-format msgid "Domain %s (%s) of global defaults database is corrupted!" msgstr "Üldiste vaikeväärtuste andmebaasi domeen %s (%s) on rikutud!" #: ../src/defaults.c:729 #, c-format msgid "could not load domain %s from global defaults database" msgstr "" "domeeni %s pole võimalik globaalsete vaikeväärtuste andmebaasist laadida" #: ../src/defaults.c:774 ../src/defaults.c:788 #, c-format msgid "invalid global menu file %s" msgstr "vigane globaalmenüü fail %s" #: ../src/defaults.c:826 ../src/defaults.c:917 ../src/defaults.c:956 #: ../src/defaults.c:1006 #, c-format msgid "Domain %s (%s) of defaults database is corrupted!" msgstr "Vaikeväärtuste andmebaasi domeen %s (%s) on rikutud!" #: ../src/defaults.c:830 ../src/defaults.c:939 ../src/defaults.c:992 #: ../src/defaults.c:1016 #, c-format msgid "could not load domain %s from user defaults database" msgstr "domeeni %s pole võimalik kasutaja vaikeväärtuste andmebaasist lugeda" #: ../src/defaults.c:859 #, c-format msgid "could not load domain %s from global defaults database (%s)" msgstr "" "domeeni %s pole võimalik üldisest vaikeväärtuste andmebaasist (%s) laadida" #: ../src/defaults.c:982 ../src/screen.c:408 #, c-format msgid "could not load logo image for panels: %s" msgstr "paneelidele pole logopilti võimalik laadida: %s" #. --------------------------- Local ----------------------- #: ../src/defaults.c:1178 ../src/defaults.c:1301 ../src/defaults.c:1387 #: ../src/defaults.c:1792 ../src/defaults.c:1808 ../src/defaults.c:1849 #: ../src/defaults.c:1894 ../src/defaults.c:2301 ../src/wdefaults.c:532 #: ../src/wdefaults.c:561 #, c-format msgid "Wrong option format for key \"%s\". Should be %s." msgstr "Vigane vorming võtmele \"%s\". Peaks olema %s." #: ../src/defaults.c:1180 ../src/defaults.c:1253 ../src/defaults.c:1278 #: ../src/defaults.c:1305 ../src/defaults.c:1317 ../src/defaults.c:1331 #: ../src/defaults.c:1345 ../src/defaults.c:1391 ../src/defaults.c:1403 #: ../src/defaults.c:1796 ../src/defaults.c:1813 ../src/defaults.c:1825 #: ../src/defaults.c:1854 ../src/defaults.c:1870 ../src/defaults.c:1899 #: ../src/defaults.c:1978 ../src/defaults.c:2306 ../src/defaults.c:2317 #, c-format msgid "using default \"%s\" instead" msgstr "selle asemel kasutatakse vaikimisi \"%s\"" #: ../src/defaults.c:1207 #, c-format msgid "wrong option value for key \"%s\"; got \"%s\", should be one of %s." msgstr "" "vigane valikuväärtus võtmele \"%s\". Väärtuseks on \"%s\", kuid see peab " "olema üks väärtustest %s." #: ../src/defaults.c:1249 #, c-format msgid "can't convert \"%s\" to boolean for key \"%s\"" msgstr "" "väärtust \"%s\" pole võimalik võtme \"%s\" loogikaväärtuseks teisendada" #: ../src/defaults.c:1276 #, c-format msgid "can't convert \"%s\" to integer for key \"%s\"" msgstr "" "väärtust \"%s\" pole võimalik võtme \"%s\" täisarvuliseks väärtuseks " "teisendada" #: ../src/defaults.c:1313 #, c-format msgid "Incorrect number of elements in array for key \"%s\"." msgstr "Vigane massiivi elementide arv võtmele \"%s\"." #: ../src/defaults.c:1327 #, c-format msgid "Wrong value for key \"%s\". Should be Coordinate." msgstr "Vale väärtus võtmele \"%s\". Peaks olema koordinaat." #: ../src/defaults.c:1341 #, c-format msgid "can't convert array to integers for \"%s\"." msgstr "väärtust pole võimalik \"%s\" täisarvude massiiviks teisendada." #: ../src/defaults.c:1506 ../src/defaults.c:1536 ../src/defaults.c:1552 #: ../src/defaults.c:1581 ../src/defaults.c:1603 ../src/defaults.c:1654 #: ../src/defaults.c:1693 ../src/defaults.c:1730 ../src/defaults.c:1746 #, c-format msgid "\"%s\" is not a valid color name" msgstr "\"%s\" pole korrektne värvi nimetus" #: ../src/defaults.c:1518 ../src/defaults.c:1569 msgid "bad number of arguments in gradient specification" msgstr "vigane argumentide arv hajusülemineku kirjelduses" #: ../src/defaults.c:1627 msgid "too few arguments in multicolor gradient specification" msgstr "liiga vähe argumente mitmevärvilise hajusülemineku kirjelduses" #: ../src/defaults.c:1719 msgid "bad number of arguments in textured gradient specification" msgstr "vigane argumentide arv tekstuuriga hajusülemineku kirjelduses" #: ../src/defaults.c:1762 #, c-format msgid "bad opacity value for tgradient texture \"%s\". Should be [0..255]" msgstr "" "vigane tumeduse väärtus tgradient tekstuurile \"%s\". Peaks olema [0..255]" #: ../src/defaults.c:1779 #, c-format msgid "invalid texture type %s" msgstr "vigane tekstuuri tüüp %s" #: ../src/defaults.c:1821 #, c-format msgid "Error in texture specification for key \"%s\"" msgstr "Viga võtme \"%s\" tekstuuri kirjelduses" #: ../src/defaults.c:1866 msgid "Wrong type for workspace background. Should be a texture type." msgstr "Vigane töölaua tausta tüüp. Peaks olema tekstuur-tüüpi." #: ../src/defaults.c:1912 #, c-format msgid "Wrong type for background of workspace %i. Should be a texture." msgstr "Vigane töölaua %i tausta tüüp. Peaks olema tekstuur-tüüpi." #: ../src/defaults.c:1951 msgid "could not load any usable font!!!" msgstr "ei õnnestu laadida ühtki kasutuskõlblikku kirjatüüpi!!!" #: ../src/defaults.c:1974 #, c-format msgid "could not get color for key \"%s\"" msgstr "võtmele \"%s\" pole võimali värvi hankida" #: ../src/defaults.c:2026 ../src/rootmenu.c:432 #, c-format msgid "%s: invalid key modifier \"%s\"" msgstr "%s: vigane võtmemuutja \"%s\"" #: ../src/defaults.c:2038 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\"" msgstr "%s: vigane kiirklahvi kirjeldus \"%s\"" #: ../src/defaults.c:2044 #, c-format msgid "%s:invalid key in shortcut \"%s\"" msgstr "%s: vigane võti kiirklahvile \"%s\"" #: ../src/defaults.c:2066 #, c-format msgid "%s: modifier key %s is not valid" msgstr "%s: muuteklahv %s on vigane" #: ../src/defaults.c:2173 #, c-format msgid "failed to open bitmap file \"%s\"" msgstr "pildifaili \"%s\" pole võimalik avada" #: ../src/defaults.c:2176 #, c-format msgid "\"%s\" is not a valid bitmap file" msgstr "\"%s\" ei ole korrektne pildifail" #: ../src/defaults.c:2179 #, c-format msgid "out of memory reading bitmap file \"%s\"" msgstr "pildifaili \"%s\" lugemisel lõppes mälu" #: ../src/defaults.c:2217 ../src/defaults.c:2250 msgid "bad number of arguments in cursor specification" msgstr "vigane argumentide arv kursori kirjelduses" #: ../src/defaults.c:2233 #, c-format msgid "unknown builtin cursor name \"%s\"" msgstr "tundmatu sisseehitatud kursori nimi: \"%s\"" #: ../src/defaults.c:2260 ../src/defaults.c:2272 #, c-format msgid "could not find cursor bitmap file \"%s\"" msgstr "kursori pildifaili \"%s\" pole võimalik leida" #: ../src/defaults.c:2313 #, c-format msgid "Error in cursor specification for key \"%s\"" msgstr "Viga võtme \"%s\" kursori kirjelduses" #: ../src/defaults.c:2378 msgid "could not render texture for icon background" msgstr "tekstuuri pole võimalik ikooni taustapildiks renderdada" #: ../src/defaults.c:2892 ../src/defaults.c:2961 #, c-format msgid "Invalid arguments for option \"%s\"" msgstr "Vigased argumendid võtmele \"%s\"" #: ../src/defaults.c:2898 ../src/defaults.c:2967 #, c-format msgid "Could not find image \"%s\" for option \"%s\"" msgstr "Pilti \"%s\" pole võtmele \"%s\" võimalik leida" #: ../src/defaults.c:2903 ../src/defaults.c:2975 #, c-format msgid "Could not load image \"%s\" for option \"%s\"" msgstr "Pilti \"%s\" pole võtmele \"%s\" võimalik laadida" #: ../src/defaults.c:2913 msgid "Invalid split sizes for switch panel back image." msgstr "" #: ../src/defaults.c:2982 #, c-format msgid "Invalid number of arguments for option \"%s\"" msgstr "Vigane argumentide arv võtmele \"%s\"" #: ../src/defaults.c:2997 #, c-format msgid "Value for option \"%s\" must be an array of 7 strings" msgstr "Võtme \"%s\" väärtus peab olema seitsmest stringist koosnev massiiv" #: ../src/defaults.c:3011 #, c-format msgid "Invalid argument for option \"%s\" item %d" msgstr "Vigane argument võtme \"%s\" %d. kirjele" #: ../src/dialog.c:126 msgid "Save workspace state" msgstr "Töölaua olek salvestatakse" #: ../src/dialog.c:405 ../src/dialog.c:466 ../src/dialog.c:975 #: ../src/dock.c:471 ../src/dockedapp.c:382 ../src/rootmenu.c:180 #: ../src/rootmenu.c:223 msgid "Cancel" msgstr "Loobu" #: ../src/dialog.c:558 msgid "Could not open directory \"%s\":\n%s" msgstr "Pole võimalik avada kataloogi \"%s\":\n%s" #: ../src/dialog.c:608 msgid "Could not load image file " msgstr "Pole võimalik avada pildifaili " #: ../src/dialog.c:902 msgid "Directories" msgstr "Kataloogid" #: ../src/dialog.c:911 msgid "Icons" msgstr "Ikoonid" #: ../src/dialog.c:944 msgid "Preview" msgstr "Eelvaade" #: ../src/dialog.c:957 msgid "File Name:" msgstr "Faili nimi:" #: ../src/dialog.c:981 msgid "Choose File" msgstr "Vali fail" #: ../src/dialog.c:1000 ../src/dialog.c:1002 msgid "Icon Chooser" msgstr "Ikoonivalik" #: ../src/dialog.c:1182 msgid "Window Manager for X" msgstr "X-i aknahaldur" #: ../src/dialog.c:1184 #, c-format msgid "Version %s" msgstr "Versioon %s" #: ../src/dialog.c:1205 #, c-format msgid "Using visual 0x%x: %s %ibpp " msgstr "Kasutatakse visuaali 0x%x: %s %ibpp " #: ../src/dialog.c:1212 msgid "(32 thousand colors)\n" msgstr "(32 tuhat värvi)\n" #: ../src/dialog.c:1215 msgid "(64 thousand colors)\n" msgstr "(64 tuhat värvi)\n" #: ../src/dialog.c:1219 msgid "(16 million colors)\n" msgstr "(16 miljonit värvi)\n" #: ../src/dialog.c:1222 #, c-format msgid "(%d colors)\n" msgstr "(%d värvi)\n" #: ../src/dialog.c:1231 #, c-format msgid "Total memory allocated: %i kB (in use: %i kB).\n" msgstr "Kogu eraldatud mälu: %i kB (kasutusel: %i kB).\n" #: ../src/dialog.c:1283 msgid "Image formats: " msgstr "Pildivormingud: " #: ../src/dialog.c:1245 msgid "" "\n" "Additional support for: WMSPEC" msgstr "" "\n" "Lisaks on toetatud: WMSPEC" #: ../src/dialog.c:1251 msgid "\n" msgstr "\n" #: ../src/dialog.c:1253 msgid "Solaris " msgstr "Solaris " #: ../src/dialog.c:1255 msgid "Xinerama: " msgstr "Xinerama: " #: ../src/dialog.c:1287 msgid "Info" msgstr "Andmed" #: ../src/dialog.c:1417 msgid "" " Window Maker 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.\n" "\n" " Window Maker 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.\n" "\n" " You should have received a copy of the GNU General Public License along " "with this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin Street, Fifth Floor, Boston, MA02110-1301 USA." msgstr "" " Window Maker on vaba tarkvara. Te võite seda edasi " "levitada ja/või muuta vastavalt GNU Üldise Avaliku Litsentsi " "tingimustele, nagu need on Vaba Tarkvara Fondi poolt " "avaldatud; kas Litsentsi versioon number 2 või (vastavalt " "Teie valikule) ükskõik milline hilisem versioon.\n" "\n" "Seda programmi levitatakse lootuses, et see on kasulik, kuid " "ILMA IGASUGUSE GARANTIITA; isegi KESKMISE/TAVALISE KVALITEEDI " "GARANTIITA või SOBIVUSELE TEATUD KINDLAKS EESMÄRGIKS. " "Üksikasjade suhtes vaata GNU Üldist Avalikku Litsentsi.\n" "\n" "Te peaks olema saanud GNU Üldise Avaliku Litsentsi koopia " "koos selle programmiga, kui ei, siis kontakteeruge Free " "Software Foundation'iga järgneval aadressil: 51 Franklin " "Street, Fifth Floor, Boston, MA 02110-1301 USA." #: ../src/dialog.c:1387 msgid "Legal" msgstr "Litsentsiandmed" #: ../src/dialog.c:1529 msgid "cannot open connection for crashing dialog panel. Aborting." msgstr "krahhidialoogi paneeliga pole võimalik ühendust luua. Annan alla." #: ../src/dialog.c:1555 msgid "Fatal error" msgstr "Fataalviga" #: ../src/dialog.c:1565 #, c-format msgid "Window Maker received signal %i." msgstr "Window Maker võttis vastu signaali %i." #: ../src/dialog.c:1573 msgid "" " This fatal error occured probably due to a bug. Please fill the included " "BUGFORM and report it to %s." msgstr "" " See fataalviga on arvatavasti põhjustatud programmi enese veast. Palun " "täida kaasasolev vigadest teatamise vorm (BUGFORM) ja saada see aadressil " "%s." #: ../src/dialog.c:1580 msgid "What do you want to do now?" msgstr "Mida sa nüüd soovid teha?" #: ../src/dialog.c:1586 msgid "Select action" msgstr "Tegevuse valimine" #: ../src/dialog.c:1587 msgid "Abort and leave a core file" msgstr "Töö lõpetamine ja mälutõmmise salvestan" #: ../src/dialog.c:1588 msgid "Restart Window Maker" msgstr "Window Makeri taaskäivitamine" #: ../src/dialog.c:1589 msgid "Start alternate window manager" msgstr "Alternatiivse aknahalduri käivitamine" #: ../src/dock.c:170 ../src/menu.c:1768 #, c-format msgid "Type the name for workspace %i:" msgstr "Sisesta töölaua %i nimi:" #: ../src/dock.c:171 ../src/dock.c:1002 ../src/dock.c:1004 ../src/dock.c:3099 #: ../src/menu.c:1772 msgid "Rename Workspace" msgstr "Töölaua ümbernimetamine" #: ../src/dock.c:437 ../src/dock.c:444 msgid "Warning" msgstr "Hoiatus" #: ../src/dock.c:438 msgid "" "Some icons cannot be made omnipresent. Please make sure that no other icon " "is docked in the same positions on the other workspaces and the Clip is not " "full in some workspace." msgstr "" "Mõningaid ikoone pole võimalik kõikidel töölaudadel nähtavaks teha. Veendu, " "et teistel töölaudadel ei ole ükski ikoon dokitud samale positsioonile ja " "Klamber ei ole mõnel töölaual täis." #: ../src/dock.c:445 msgid "" "Icon cannot be made omnipresent. Please make sure that no other icon is " "docked in the same position on the other workspaces and the Clip is not full " "in some workspace." msgstr "" "Ikooni ei ole võimalik kõikidel töölaudadel nähtavaks teha. Veendu, et " "teistel töölaudadel ei ole ükski ikoon dokitud samale positsioonile ja " "Klamber ei ole mõnel töölaual täis." #: ../src/dock.c:469 msgid "Workspace Clip" msgstr "Töölaua Klamber" #: ../src/dock.c:470 msgid "All selected icons will be removed!" msgstr "Kõik valitud ikoonid eemaldatakse!" #: ../src/dock.c:520 ../src/dock.c:1015 ../src/dock.c:1017 ../src/dock.c:3135 msgid "Keep Icon" msgstr "Hoia ikooni" #: ../src/dock.c:521 ../src/dock.c:1900 ../src/dock.c:2031 msgid "Type the command used to launch the application" msgstr "Tipi korraldus, mida kasutada rakenduse käivitamiseks" #: ../src/dock.c:841 #, c-format msgid "could not launch application %s" msgstr "rakendust %s pole võimalik käivitada" #: ../src/dock.c:892 msgid "could not create workspace submenu for Clip menu" msgstr "ei õnnestu luua klambrimenüüle töölaua alammenüüd" #: ../src/dock.c:947 msgid "could not create options submenu for Clip menu" msgstr "ei õnnestu luua klambrimenüüle valikute alammenüüd" #: ../src/dock.c:951 ../src/dock.c:992 msgid "Keep on Top" msgstr "Hoia esiplaanil" #: ../src/dock.c:956 msgid "Collapsed" msgstr "Ahendatud" #: ../src/dock.c:961 msgid "Autocollapse" msgstr "Automaatselt ahenev" #: ../src/dock.c:966 msgid "Autoraise" msgstr "Automaatselt esile tõusev" #: ../src/dock.c:971 msgid "Autoattract Icons" msgstr "Ikoonide automaatne külgehaakimine" #: ../src/dock.c:997 msgid "Clip Options" msgstr "Klambri valikud" #: ../src/dock.c:1006 msgid "Selected" msgstr "Valitud" #: ../src/dock.c:1011 ../src/dock.c:1013 ../src/dock.c:3126 msgid "Select All Icons" msgstr "Vali kõik ikoonid" #: ../src/dock.c:1019 ../src/dock.c:1021 ../src/dock.c:3143 msgid "Move Icon To" msgstr "Teisalda ikoon->" #: ../src/dock.c:1026 ../src/dock.c:1028 ../src/dock.c:3154 msgid "Remove Icon" msgstr "Eemalda ikoon" #: ../src/dock.c:1030 msgid "Attract Icons" msgstr "Haagi ikoonid külge" #: ../src/dock.c:1041 msgid "Settings..." msgstr "Sätted..." #: ../src/dock.c:1357 ../src/dock.c:1457 #, c-format msgid "bad value in docked icon state info %s" msgstr "vigane väärtus dokitud ikooni olekuinfos %s " #: ../src/dock.c:1464 #, c-format msgid "bad value in docked icon position %i,%i" msgstr "vigane väärtus dokitud ikooni asukohal %i,%i" #: ../src/dock.c:1483 #, c-format msgid "bad value in dock state info:%s" msgstr "vigane väärtus doki olekuinfos:%s" #: ../src/dock.c:1700 msgid "there are too many icons stored in dock. Ignoring what doesn't fit" msgstr "" "dokki on salvestatud liiga palju ikoone. Eiran neid, mida ei suuda hallata" #. icon->forced_dock = 1; #: ../src/dock.c:1899 ../src/dock.c:2030 msgid "Dock Icon" msgstr "Dokin ikooni" #: ../src/dock.c:3021 #, c-format msgid "Could not execute command \"%s\"" msgstr "Ei õnnestu täita korraldust \"%s\"" #: ../src/dock.c:3105 msgid "Toggle Omnipresent" msgstr "Näita/ära näita kõigil töölaudadel" #: ../src/dock.c:3110 ../src/winmenu.c:411 ../src/winspector.c:1300 msgid "Omnipresent" msgstr "Nähtav kõigil töölaudadel" #: ../src/dock.c:3124 msgid "Unselect All Icons" msgstr "Tühista ikoonivalik" #: ../src/dock.c:3133 msgid "Keep Icons" msgstr "Hoia ikoone" #: ../src/dock.c:3141 msgid "Move Icons To" msgstr "Teisalda ikoonid->" #: ../src/dock.c:3152 msgid "Remove Icons" msgstr "Eemalda ikoonid" #: ../src/dock.c:3182 msgid "Bring Here" msgstr "Too siia" #: ../src/dockedapp.c:133 #, c-format msgid "could not find icon %s, used in a docked application" msgstr "ei leia dokitud rakenduses kasutatavat ikooni %s" #: ../src/dockedapp.c:206 #, c-format msgid "Could not open specified icon file: %s" msgstr "Ei õnnestu avada määratud ikoonifaili: %s" #: ../src/dockedapp.c:208 msgid "Ignore" msgstr "Eira" #: ../src/dockedapp.c:299 msgid "Start when Window Maker is started" msgstr "Käivitada koos Window Makeriga" #: ../src/dockedapp.c:304 msgid "Lock (prevent accidental removal)" msgstr "Lukustatud (ei saa kogemata kustutada)" #: ../src/dockedapp.c:308 msgid "Application path and arguments" msgstr "Rakenduse rada ja argumendid" #: ../src/dockedapp.c:319 msgid "Command for middle-click launch" msgstr "Keskmise nupu korraldus" #: ../src/dockedapp.c:331 #, c-format msgid "%s will be replaced with current selection" msgstr "%s asendatakse käesoleva valikuga" #: ../src/dockedapp.c:335 msgid "Command for files dropped with DND" msgstr "Korraldus DND abil saadetud failidele" #: ../src/dockedapp.c:347 #, c-format msgid "%d will be replaced with the file name" msgstr "%d asendatakse failinimega" #: ../src/dockedapp.c:350 msgid "DND support was not compiled in" msgstr "DND tugi pole sisse kompileeritud" #: ../src/dockedapp.c:355 msgid "Icon Image" msgstr "Ikooni pilt" #: ../src/dockedapp.c:366 ../src/winspector.c:1448 msgid "Browse..." msgstr "Sirvi..." #: ../src/dockedapp.c:424 msgid "Docked Application Settings" msgstr "Dokitud rakenduse sätted" #: ../src/framewin.c:633 ../src/framewin.c:725 ../src/menu.c:412 #: ../src/texture.c:450 #, c-format msgid "could not render texture: %s" msgstr "tekstuuri pole võimalik renderdada: %s" #: ../src/framewin.c:656 ../src/framewin.c:666 ../src/framewin.c:682 #: ../src/framewin.c:693 ../src/framewin.c:700 ../src/framewin.c:707 #: ../src/icon.c:321 ../src/menu.c:439 #, c-format msgid "error rendering image:%s" msgstr "viga pildi renderdamisel:%s" #: ../src/framewin.c:753 #, c-format msgid "error rendering image: %s" msgstr "viga pildi renderdamisel: %s" #: ../src/icon.c:167 ../src/wdefaults.c:424 #, c-format msgid "error loading image file \"%s\": %s" msgstr "viga pildifaili \"%s\" laadimisel: %s" #: ../src/icon.c:429 ../src/icon.c:438 #, c-format msgid "could not create directory %s" msgstr "kataloogi %s pole võimalik luua" #: ../src/icon.c:609 #, c-format msgid "could not load default icon \"%s\":%s" msgstr "vaikimisi kasutatavat ikooni \"%s\" pole võimalik laadida:%s" #: ../src/icon.c:613 #, c-format msgid "could not find default icon \"%s\"" msgstr "vaikimisi kasutatavat ikooni \"%s\" pole võimalik leida" #: ../src/main.c:305 msgid "failed to restart Window Maker." msgstr "Tõrge Window Makeri taaskäivitamisel." #: ../src/main.c:308 #, c-format msgid "could not exec %s" msgstr "%s pole võimalik käivitada" #: ../src/main.c:346 msgid "Could not execute command: " msgstr "Korraldust pole võimalik käivitada : " #: ../src/main.c:481 #, c-format msgid "%s aborted.\n" msgstr "%s katkestatud.\n" #: ../src/main.c:490 #, c-format msgid "Usage: %s [options]\n" msgstr "Kasutamine: %s [võtmed]\n" #: ../src/main.c:491 msgid "The Window Maker window manager for the X window system" msgstr "Window Maker on X window systemi aknahaldur" #: ../src/main.c:493 msgid " -display host:dpy\tdisplay to use" msgstr " -display host:dpy\tkasutatava kuva määramine" #: ../src/main.c:495 msgid " --no-cpp \t\tdisable preprocessing of configuration files" msgstr " --no-cpp \t\tseadistusfailide eeltöötluse keelamine" #: ../src/main.c:497 msgid " --no-dock\t\tdo not open the application Dock" msgstr " --no-dock\t\trakenduste doki avamise keelamine" #: ../src/main.c:498 msgid " --no-clip\t\tdo not open the workspace Clip" msgstr " --no-clip\t\ttöölaua klambri avamise keelamine" #: ../src/main.c:499 msgid " --no-autolaunch\tdo not autolaunch applications" msgstr " --no-autolaunch\trakenduste automaatse käivitamise keelamine" #: ../src/main.c:500 msgid " --dont-restore\t\tdo not restore saved session" msgstr " --dont-restore\tsalvestatud seansi taastamise keelamine" #: ../src/main.c:502 msgid " --locale locale\tlocale to use" msgstr " --locale locale\t\tkasutatava lokaadi määramine" #: ../src/main.c:504 msgid "" " --create-stdcmap\tcreate the standard colormap hint in PseudoColor visuals" msgstr "" " --create-stdcmap\tstandardse värvikaardi vihje loomine PseudoColor " "visuaalile" #: ../src/main.c:505 msgid " --visual-id visualid\tvisual id of visual to use" msgstr " --visual-id visualid\tkasutatava visuaali id" #: ../src/main.c:506 msgid " --static\t\tdo not update or save configurations" msgstr " --static\t\tseadistusi ei salvestata ega uuendata" #: ../src/main.c:508 msgid " --no-polling\t\tdo not periodically check for configuration updates" msgstr " --no-polling\t\tümberseadistustuste korrapärase kontrolli keelamine" #: ../src/main.c:510 msgid " --version\t\tprint version and exit" msgstr " --version\t\tversiooninumbri väljastamine ja programmi töö lõpetamine" #: ../src/main.c:511 msgid " --help\t\t\tshow this message" msgstr " --help\t\t\tselle teate näitamine" #: ../src/main.c:521 #, c-format msgid "could not find user GNUstep directory (%s)." msgstr "kasutaja GNUstep kataloogi (%s) pole võimalik leida." #: ../src/main.c:524 msgid "" "There was an error while creating GNUstep directory, please make sure you " "have installed Window Maker correctly and run wmaker.inst" msgstr "" "Viga GNUstep kataloogi loomise käigus. Palun veendu, et Window Maker on " "korrektselt paigaldatud ja käivita wmaker.inst" #: ../src/main.c:527 #, c-format msgid "%s directory created with default configuration." msgstr "%s kataloog loodi vaikimisi seadistusega" #: ../src/main.c:545 msgid "" "could not initialise an inotify instance. Changes to the defaults database " "will require a restart to take effect. Check your kernel!" msgstr "" "inotify instantsi pole võimalik lähtestada. Vaikeväärtuste andmebaasi " "muutuste rakendamiseks on vaja programm taaskäivitada. Kontrolli oma " "kernelit!" #: ../src/main.c:556 #, c-format msgid "" "could not add an inotify watch on path %s. Changes to the defaults database " "will require a restart to take effect." msgstr "" "rajale %s pole võimalik inotify jälgijat määrata. Vaikeväärtuste andmebaasi " "muutuste rakendamiseks on vaja programm taaskäivitada." #: ../src/main.c:578 #, c-format msgid "%s:could not execute initialization script" msgstr "%s:lähtestamisskripti pole võimalik käivitada" #: ../src/main.c:596 #, c-format msgid "%s:could not execute exit script" msgstr "%s:lõpetamisskripti pole võimalik käivitada" #: ../src/main.c:634 ../src/main.c:711 ../src/main.c:718 ../src/main.c:725 #, c-format msgid "too few arguments for %s" msgstr "liiga vähe argumente %s jaoks" #: ../src/main.c:729 #, c-format msgid "bad value for visualid: \"%s\"" msgstr "vigane visualid väärtus: \"%s\"" #: ../src/main.c:742 #, c-format msgid "%s: invalid argument '%s'\n" msgstr "%s: vigane argument '%s'\n" #: ../src/main.c:743 #, c-format msgid "Try '%s --help' for more information\n" msgstr "Täiendava teabe saamiseks proovi kasutada '%s --help'\n" #: ../src/main.c:786 msgid "X server does not support locale" msgstr "X server ei toeta lokaliseerimist" #: ../src/main.c:790 msgid "cannot set locale modifiers" msgstr "lokaadimuujaid pole võimalik määrata" #: ../src/main.c:806 #, c-format msgid "could not open display \"%s\"" msgstr "kuva \"%s\" pole võimalik avada" #: ../src/menu.c:2341 #, c-format msgid "bad value in menus state info: %s" msgstr "vigane väärtus menüüde olekuandmetes:%s" #: ../src/misc.c:57 #, c-format msgid "could not define value for %s for cpp" msgstr "%s väärtust pole võimalik cpp jaoks kirjedada" #: ../src/misc.c:82 #, c-format msgid "could not get password entry for UID %i" msgstr "UID %i paroolikirjet pole võimalik leida" #: ../src/misc.c:104 #, c-format msgid "your machine is misconfigured. HOSTNAME is set to %s" msgstr "Teie masin on seadistamata. HOSTNAME väärtus on %s" #: ../src/misc.c:109 #, c-format msgid "your machine is misconfigured. HOST is set to %s" msgstr "Teie masin on seadistamata. HOST väärtus on %s" #: ../src/misc.c:557 ../src/misc.c:562 msgid "Program Arguments" msgstr "Programmi argumendid" #: ../src/misc.c:558 ../src/misc.c:563 msgid "Enter command arguments:" msgstr "Sisesta käsu argumendid:" #: ../src/misc.c:607 #, c-format msgid "out of memory during expansion of \"%s\"" msgstr "mälu lõppes \"%s\" laiendamise käigus" #: ../src/misc.c:660 #, c-format msgid "out of memory during expansion of \"%%w\"" msgstr "mälu lõppes \"%%w\" laiendamise käigus" #: ../src/misc.c:677 #, c-format msgid "out of memory during expansion of \"%%W\"" msgstr "mälu lõppes \"%%W\" laiendamise käigus" #: ../src/misc.c:694 #, c-format msgid "out of memory during expansion of \"%%a\"" msgstr "mälu lõppes \"%%a\" laiendamise käigus" #: ../src/misc.c:723 #, c-format msgid "out of memory during expansion of \"%%d\"" msgstr "mälu lõppes \"%%d\" laiendamise käigus" #: ../src/misc.c:737 msgid "selection not available" msgstr "valik ei ole kättesaadav" #: ../src/misc.c:744 #, c-format msgid "out of memory during expansion of \"%%s\"" msgstr "mälu lõppes \"%%s\" laiendamise käigus" #: ../src/misc.c:779 ../src/misc.c:785 #, c-format msgid "bad window name value in %s state info" msgstr "vigane akna nimi %s olekuandmetes" #: ../src/misc.c:1013 msgid "could not send message to background image helper" msgstr "taustapildi abiprogrammile pole võimalik teadet saata" #: ../src/resources.c:41 #, c-format msgid "could not parse color \"%s\"" msgstr "värvi \"%s\" pole võimalik analüüsida" #: ../src/resources.c:45 #, c-format msgid "could not allocate color \"%s\"" msgstr "värvi \"%s\" pole võimalik eraldada" #: ../src/rootmenu.c:179 ../src/rootmenu.c:180 msgid "Exit" msgstr "Lõpeta" #: ../src/rootmenu.c:180 msgid "Exit window manager?" msgstr "Kas lõpetada aknahalduri töö?" #: ../src/rootmenu.c:221 msgid "Kill X session" msgstr "X-seansi kõrvaldamine" #: ../src/rootmenu.c:222 msgid "" "Kill Window System session?\n" "(all applications will be closed)" msgstr "" "Kas kõrvaldada X-seanss?\n" "(kõik rakendused suletakse)" #: ../src/rootmenu.c:445 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\" for entry %s" msgstr "%s:vigane kiirklahvi kirjeldus \"%s\" kirjele %s" #: ../src/rootmenu.c:453 #, c-format msgid "%s:invalid key in shortcut \"%s\" for entry %s" msgstr "%s: vigane klahv kiirkorralduses \"%s\" kirjele %s" #: ../src/rootmenu.c:487 #, c-format msgid "%s: unmatched '\"' in menu file" msgstr "%s: ebamäärane '\"' menüüfailis" #: ../src/rootmenu.c:536 #, c-format msgid "%s: missing command" msgstr "%s: puuduv korraldus" #: ../src/rootmenu.c:586 #, c-format msgid "invalid OPEN_MENU specification: %s" msgstr "vigane OPEN_MENU kirjeldus: %s" #: ../src/rootmenu.c:643 #, c-format msgid "%s:could not stat menu" msgstr "%s:menüü rekvisiite pole võimalik tuvastada" #: ../src/rootmenu.c:651 #, c-format msgid "%s:could not stat menu:%s" msgstr "%s:menüü rekvisiite pole võimalik tuvastada:%s" #: ../src/rootmenu.c:667 #, c-format msgid "too many parameters in OPEN_MENU: %s" msgstr "liiga palju OPEN_MENU parameetreid: %s" #: ../src/rootmenu.c:709 msgid "" "There are more than one WORKSPACE_MENU commands in the applications menu. " "Only one is allowed." msgstr "" "Rakenduste menüüs on mitu WORKSPACE_MENU korraldust. Lubatud on ainult üks." #: ../src/rootmenu.c:740 msgid "" "There are more than one WINDOWS_MENU commands in the applications menu. Only " "one is allowed." msgstr "" "Rakenduste menüüs on mitu WINDOWS_MENU korraldust. Lubatud on ainult üks." #: ../src/rootmenu.c:745 msgid "Window List" msgstr "Akende nimekiri" #: ../src/rootmenu.c:772 ../src/rootmenu.c:789 ../src/rootmenu.c:797 #, c-format msgid "%s:missing parameter for menu command \"%s\"" msgstr "%s:menüükorraldusel \"%s\" puuduvad parameetrid" #: ../src/rootmenu.c:861 #, c-format msgid "%s:unknown command \"%s\" in menu config." msgstr "%s:menüü seadistuses on tundmatu käsk \"%s\"." #: ../src/rootmenu.c:868 #, c-format msgid "%s:can't add shortcut for entry \"%s\"" msgstr "%s:kiirkorraldust pole võimalik kirjele \"%s\" lisada" #: ../src/rootmenu.c:978 #, c-format msgid "%s:maximal line size exceeded in menu config: %s" msgstr "%s:menüü seadistustes on suurim rea pikkus ületatud: %s" #: ../src/rootmenu.c:998 ../src/rootmenu.c:1073 ../src/rootmenu.c:1158 #, c-format msgid "%s:missing command in menu config: %s" msgstr "%s:menüü seadistuses puudub korraldus: %s" #: ../src/rootmenu.c:1025 #, c-format msgid "%s:syntax error in menu file:END declaration missing" msgstr "%s:menüüfaili süntaksi viga: puudub lõputunnus END" #: ../src/rootmenu.c:1047 ../src/rootmenu.c:1132 msgid "could not make arguments for menu file preprocessor" msgstr "menüüfaili eeltöötlejale pole võimalik argumente luua" #: ../src/rootmenu.c:1053 ../src/rootmenu.c:1139 #, c-format msgid "%s:could not open/preprocess menu file" msgstr "%s:menüüfaili pole võimalik avada või eeltöödelda" #: ../src/rootmenu.c:1064 ../src/rootmenu.c:1149 #, c-format msgid "could not open menu file \"%s\": %s" msgstr "menüüfaili \"%s\" pole võimalik avada: %s" #: ../src/rootmenu.c:1084 #, c-format msgid "%s:invalid menu file. MENU command is missing" msgstr "%s:vigane menüüfail. Puudub MENU käsk" #: ../src/rootmenu.c:1093 msgid "error reading preprocessed menu data" msgstr "viga eeltöödeldud menüüandmete lugemisel" #: ../src/rootmenu.c:1169 #, c-format msgid "%s:no title given for the root menu" msgstr "%s:juurmenüü pealkiri on puudu" #: ../src/rootmenu.c:1251 ../src/rootmenu.c:1323 ../src/rootmenu.c:1362 #, c-format msgid "out of memory while constructing directory menu %s" msgstr "menüü %s loomise käigus lõppes mälu" #: ../src/rootmenu.c:1260 #, c-format msgid "%s:could not stat file \"%s\" in menu directory" msgstr "%s:faili \"%s\" rekvisiite pole menüükataloogist võimalik lugeda" #: ../src/rootmenu.c:1412 msgid "Commands" msgstr "Korraldused" #: ../src/rootmenu.c:1415 msgid "Restart" msgstr "Taaskäivitamine" #: ../src/rootmenu.c:1416 msgid "Exit..." msgstr "Lõpetamine..." #: ../src/rootmenu.c:1455 #, c-format msgid "could not find menu file \"%s\" referenced in WMRootMenu" msgstr "WMRootMenu poolt viidatud menüüfaili \"%s\" pole võimalik leida" #: ../src/rootmenu.c:1461 #, c-format msgid "could not access menu \"%s\" referenced in WMRootMenu" msgstr "WMRootMenu poolt viidatud menüüle \"%s\" pole võimalik ligi pääseda" #: ../src/rootmenu.c:1473 #, c-format msgid "" "using default menu file \"%s\" as the menu referenced in WMRootMenu could " "not be found " msgstr "" "WMRootMenu poolt viidatud vaikimisi kasutatavat menüüfaili \"%s\" pole " "võimalik leida" #: ../src/rootmenu.c:1496 ../src/rootmenu.c:1570 #, c-format msgid "%s:format error in root menu configuration \"%s\"" msgstr "%s:vormingu viga juurmenüü seadistuses \"%s\"" #: ../src/rootmenu.c:1647 msgid "" "The applications menu could not be loaded. Look at the console output for a " "detailed description of the errors." msgstr "" "Rakenduste menüüd pole võimalik lugeda. Põhjalikuma vigade kirjelduse " "lugemiseks vaata konsooliväljundit." #: ../src/screen.c:617 #, c-format msgid "could not initialize graphics library context: %s" msgstr "graafikateegi konteksti pole võimalik lähtestada: %s" #: ../src/screen.c:643 msgid "could not initialize WINGs widget set" msgstr "WINGs vidinakomplekti pole võimalik lähtestada" #: ../src/screen.c:938 #, c-format msgid "could not save session state in %s" msgstr "seansi olekut %s pole võimalik salvestada" #: ../src/session.c:151 ../src/wdefaults.c:548 ../src/winspector.c:410 #, c-format msgid "can't convert \"%s\" to boolean" msgstr "väärtust \"%s\" pole võimalik tõeväärtuseks teisendada" #: ../src/stacking.c:75 msgid "could not get window list!!" msgstr "akende nimekirja pole võimalik saada!!" #: ../src/startup.c:177 #, c-format msgid "internal X error: %s" msgstr "sisemine X-i viga: %s" #: ../src/startup.c:671 ../src/startup.c:687 ../src/startup.c:693 #, c-format msgid "could not read domain \"%s\" from defaults database" msgstr "domeeni \"%s\" pole võimalik vaikeväärtuste andmebaasist lugeda" #: ../src/startup.c:679 #, c-format msgid "icon size is configured to %i, but it's too small. Using 16 instead" msgstr "" "ikooni suuruseks on määratud %i, kuid see on liiga väike. Kasutatakse " "suurust 16" #: ../src/startup.c:709 msgid "XKB is not supported. KbdModeLock is automatically disabled." msgstr "Puudub XKB tugi. KbdModeLock on automaatselt keelatud." #: ../src/startup.c:728 msgid "it seems that there is already a window manager running" msgstr "paistab, et mingi aknahaldur juba töötab" #: ../src/startup.c:734 #, c-format msgid "could not manage screen %i" msgstr "ekraani %i pole võimalik hallata" #: ../src/startup.c:790 msgid "could not manage any screen" msgstr "ühtegi ekraani pole võimalik hallata" #: ../src/switchmenu.c:129 msgid "Windows" msgstr "Aknad" #: ../src/texture.c:327 #, c-format msgid "image file \"%s\" used as texture could not be found." msgstr "tekstuuriks kasutatavat pildifaili \"%s\" pole võimalik leida." #: ../src/texture.c:332 #, c-format msgid "could not load texture pixmap \"%s\":%s" msgstr "tekstuuri pildifaili \"%s\" pole võimalik laadida:%s" #: ../src/texture.c:454 msgid "could not allocate image buffer" msgstr "pildipuhvrit pole võimalik eraldada" #: ../src/wdefaults.c:418 #, c-format msgid "could not find icon file \"%s\"" msgstr "ikoonifaili \"%s\" pole võimalik leida" #: ../src/window.c:2692 ../src/window.c:2848 msgid "" "The NumLock, ScrollLock or similar key seems to be turned on. Turn it off or " "some mouse actions and keyboard shortcuts will not work." msgstr "" "Klahvid NumLock, ScrollLock (või sarnased) näivad olevat sisse lülitatud.\n" "Lülita need välja või muidu ei pruugi mõned hiiretoimingud ja klaviatuuri\n" "kiirkorraldused töötada." #: ../src/winmenu.c:122 msgid "" "This will kill the application.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" "Programm suletakse jõuga.\n" "Kõik salvestamata andmed lähevad kaotsi.\n" "Kas soovid seda teha?" #: ../src/winmenu.c:276 ../src/winmenu.c:285 msgid "Set Shortcut" msgstr "Määra kiirkorraldus" #: ../src/winmenu.c:359 ../src/winmenu.c:399 msgid "could not create submenu for window menu" msgstr "ei õnnestu luua aknamenüü alammenüüd" #: ../src/winmenu.c:403 msgid "Keep on top" msgstr "Hoia esiplaanil" #: ../src/winmenu.c:407 msgid "Keep at bottom" msgstr "Hoia tagaplaanil" #. #. * 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:429 ../src/winmenu.c:527 msgid "Maximize" msgstr "Maksimeeri" #: ../src/winmenu.c:432 ../src/winmenu.c:511 msgid "Miniaturize" msgstr "Minimeeri" #: ../src/winmenu.c:435 ../src/winmenu.c:545 msgid "Shade" msgstr "Keri kokku" #: ../src/winmenu.c:441 msgid "Resize/Move" msgstr "Muuda suurust/liiguta" #: ../src/winmenu.c:444 msgid "Select" msgstr "Vali" #: ../src/winmenu.c:447 msgid "Move To" msgstr "Teisalda" #: ../src/winmenu.c:452 msgid "Attributes..." msgstr "Rekvisiidid..." #: ../src/winmenu.c:454 msgid "Options" msgstr "Valikud" #: ../src/winmenu.c:465 msgid "Close" msgstr "Sulge" #: ../src/winmenu.c:505 msgid "Deminiaturize" msgstr "Ava aken" #: ../src/winmenu.c:521 msgid "Unmaximize" msgstr "Taasta suurus" #: ../src/winmenu.c:539 msgid "Unshade" msgstr "Keri lahti" #: ../src/winspector.c:350 #, c-format msgid "Could not find icon \"%s\" specified for this window" msgstr "Selle akna jaoks määratud ikooni \"%s\" pole võimalik leida" #: ../src/winspector.c:365 #, c-format msgid "Could not open specified icon \"%s\":%s" msgstr "Kirjeldatud ikooni \"%s\" pole võimalik avada:%s" #: ../src/winspector.c:1065 #, c-format msgid "Inspecting %s.%s" msgstr "%s.%s vaatlemine" #: ../src/winspector.c:1088 msgid "Click in the window you wish to inspect." msgstr "Kliki aknale, mida soovid vaadelda." #: ../src/winspector.c:1120 msgid "" "The configuration will apply to all\n" "windows that have their WM_CLASS\n" "property set to the above selected\n" "name, when saved." msgstr "" "Seadistuste salvestamisel laieneb see\n" "kõigile akendele, mille WM_CLASS\n" "omadus on üks ülalloetletud nimedest." #: ../src/winspector.c:1145 msgid "Save" msgstr "Salvesta" #: ../src/winspector.c:1153 msgid "Apply" msgstr "Rakenda" #: ../src/winspector.c:1159 msgid "Reload" msgstr "Taasta" #: ../src/winspector.c:1168 ../src/winspector.c:1178 msgid "Window Specification" msgstr "Akna kirjeldus" #: ../src/winspector.c:1169 msgid "Window Attributes" msgstr "Akna rekvisiidid" #: ../src/winspector.c:1170 msgid "Advanced Options" msgstr "Laiendatud valikud" #: ../src/winspector.c:1171 msgid "Icon and Initial Workspace" msgstr "Ikoon ja töölaud" #: ../src/winspector.c:1172 msgid "Application Specific" msgstr "Rakendusele omane" #: ../src/winspector.c:1185 msgid "Defaults for all windows" msgstr "Vaikimisi kõigile akendele" #: ../src/winspector.c:1238 msgid "Select window" msgstr "Vali aken" #: ../src/winspector.c:1251 msgid "Attributes" msgstr "Rekvisiidid" #: ../src/winspector.c:1262 msgid "Disable titlebar" msgstr "Tiitliriba on peidus" #: ../src/winspector.c:1264 msgid "" "Remove the titlebar of this window.\n" "To access the window commands menu of a window\n" "without it's titlebar, press Control+Esc (or the\n" "equivalent shortcut, if you changed the default\n" "settings)." msgstr "" "Aknalt tiitliriba eemaldamine. Ilma\n" "tiitliribata akna parameetreid saab\n" "muuta,vajutadades Control+Esc (või kui\n" "juhtklahve on muudetud, siis sellele\n" "vastavat klahvikombinatsiooni)." #: ../src/winspector.c:1270 msgid "Disable resizebar" msgstr "Suuruse muutmise riba on peidus" #: ../src/winspector.c:1272 msgid "Remove the resizebar of this window." msgstr "Akna suuruse muutmise riba eemaldamine sellelt aknalt." #: ../src/winspector.c:1275 msgid "Disable close button" msgstr "Sulgemisnupp on peidus" #: ../src/winspector.c:1277 msgid "Remove the `close window' button of this window." msgstr "Akna sulgemisnupu eemaldamine selle akna tiitliribalt." #: ../src/winspector.c:1280 msgid "Disable miniaturize button" msgstr "Minimeerimisnupp on peidus" #: ../src/winspector.c:1282 msgid "Remove the `miniaturize window' button of the window." msgstr "Akna minimeerimisnupu eemaldamine selle akna tiitliribalt." #: ../src/winspector.c:1285 msgid "Disable border" msgstr "Raam on peidus" #: ../src/winspector.c:1287 msgid "Remove the 1 pixel black border around the window." msgstr "Akna ümbert ühepikslise musta raami eemaldamine." #: ../src/winspector.c:1290 msgid "Keep on top (floating)" msgstr "Aken hoitakse esiplaanil (ujuv)" #: ../src/winspector.c:1292 msgid "" "Keep the window over other windows, not allowing\n" "them to cover it." msgstr "Akna hoidmine teiste akende peal." #: ../src/winspector.c:1295 msgid "Keep at bottom (sunken)" msgstr "Aken hoitakse tagaplaanil (uputatud)" #: ../src/winspector.c:1297 msgid "Keep the window under all other windows." msgstr "Akna hoidmine kõigi teiste akende all." #: ../src/winspector.c:1302 msgid "Make window present in all workspaces." msgstr "Aken on nähtav kõigil töölaudadel." #: ../src/winspector.c:1305 msgid "Start miniaturized" msgstr "Käivitatakse minimeerituna" #: ../src/winspector.c:1307 msgid "" "Make the window be automatically miniaturized when it's\n" "first shown." msgstr "" "Akna automaatne minimeerimine selle\n" "esmasel näitamisel." #: ../src/winspector.c:1310 msgid "Start maximized" msgstr "Käivitatakse maksimeerituna" #: ../src/winspector.c:1312 msgid "" "Make the window be automatically maximized when it's\n" "first shown." msgstr "" "Akna automaatne maksimeerimine selle\n" "esmasel näitamisel." #: ../src/winspector.c:1315 msgid "Full screen maximization" msgstr "Maksimeeritakse üle kogu ekraani" #: ../src/winspector.c:1317 msgid "" "Make the window use the whole screen space when it's\n" "maximized. The titlebar and resizebar will be moved\n" "to outside the screen." msgstr "" "Akna suurendamise lubamine kogu ekraani ulatuses.\n" "Akna tiitliriba ja suuruse muutmise riba jäävad\n" "siis väljaspoole ekraani piirkonda." #: ../src/winspector.c:1333 msgid "Advanced" msgstr "Laiendatud võimalused" #: ../src/winspector.c:1350 msgid "Do not bind keyboard shortcuts" msgstr "Kiirklahvidele ei reageerita" #: ../src/winspector.c:1352 msgid "" "Do not bind keyboard shortcuts from Window Maker\n" "when this window is focused. This will allow the\n" "window to receive all key combinations regardless\n" "of your shortcut configuration." msgstr "" "Fookuses oleval aknal keelatakse reageerimine\n" "Window Makeri kiirklahvidele. See võimaldab\n" "aknal vastu võtta kõiki klaviatuurilt tulevaid\n" "koode." #: ../src/winspector.c:1358 msgid "Do not bind mouse clicks" msgstr "Hiirevajutustele ei reageerita" #: ../src/winspector.c:1360 msgid "" "Do not bind mouse actions, such as `Alt'+drag\n" "in the window (when Alt is the modifier you have\n" "configured)." msgstr "" "Aknal keelatakse reageerimast hiiretoimingutele.\n" "Näiteks `Alt'+lohistamine (kui alt on määratud\n" "muuteklahviks)." #: ../src/winspector.c:1364 msgid "Do not show in the window list" msgstr "Akende nimekirjas ei näidata" #: ../src/winspector.c:1366 msgid "Do not list the window in the window list menu." msgstr "Akna nime ei näidata akende nimekirjas." #: ../src/winspector.c:1369 msgid "Do not show in the switch panel" msgstr "Aknavahetuse paneelil ei näidata" #: ../src/winspector.c:1371 msgid "Do not include in switch panel while cycling windows." msgstr "Akende vahetamisel ei näidata aknavahetuse paneelil." #: ../src/winspector.c:1374 msgid "Do not let it take focus" msgstr "Akna fokuseerimine keelatud" #: ../src/winspector.c:1376 msgid "" "Do not let the window take keyboard focus when you\n" "click on it." msgstr "" "Akna fokuseerimine on keelatud. Aknale ei\n" "mõju klaviatuurilt saabuvad vajutused." #: ../src/winspector.c:1379 msgid "Keep inside screen" msgstr "Hoitakse ekraani alal" #: ../src/winspector.c:1381 msgid "" "Do not allow the window to move itself completely\n" "outside the screen. For bug compatibility.\n" msgstr "" "Aknent ei saa väljaspoole ekraani pinda liigutada.\n" #: ../src/winspector.c:1385 msgid "Ignore 'Hide Others'" msgstr "Eiratakse käsku 'Peida teised aknad'" #: ../src/winspector.c:1387 msgid "" "Do not hide the window when issuing the\n" "`HideOthers' command." msgstr "" "Käsu \"Peida teised aknad\" korral\n" "akent ei peideta." #: ../src/winspector.c:1390 msgid "Ignore 'Save Session'" msgstr "Seansi salvestamist eiratakse" #: ../src/winspector.c:1392 msgid "" "Do not save the associated application in the\n" "session's state, so that it won't be restarted\n" "together with other applications when Window Maker\n" "starts." msgstr "" "Akna andmeid ei salvestata seansi andmetesse\n" "ja seetõttu ei käivitata rakendust koos seansi\n" "koosseisu kuuluvate akendega." #: ../src/winspector.c:1397 msgid "Emulate application icon" msgstr "Rakenduse ikooni emuleeritakse" #: ../src/winspector.c:1399 msgid "" "Make this window act as an application that provides\n" "enough information to Window Maker for a dockable\n" "application icon to be created." msgstr "" "Aknale luuakse dokitava rakenduse ikoon, mille alusel\n" "Window Maker on suuteline rakenduse oma ikooni looma." #: ../src/winspector.c:1404 msgid "Focus across workspaces" msgstr "Fokuseeritav kõigilt töölaudadelt" #: ../src/winspector.c:1406 msgid "" "Allow Window Maker to switch workspace to satisfy\n" "a focus request (annoying)." msgstr "" "Lubab Window Makeril akna fokuseerimispäringu korral\n" "lülituda akna töölauale (võib osutuda tüütuks)." #: ../src/winspector.c:1410 msgid "Do not let it be minimized" msgstr "Akna minimeerimine keelatud" #: ../src/winspector.c:1412 msgid "" "Do not let the window of this application be\n" "minimized.\n" msgstr "" "Selle rakenduse akena minimeerimise keelamine.\n" #: ../src/winspector.c:1417 msgid "Disable language button" msgstr "Keelenupp on peidus" #: ../src/winspector.c:1419 msgid "Remove the `toggle language' button of the window." msgstr "" "Keele sisse- ja väljalülitamise\n" "nupu eemaldamine akna tiitliribalt." #: ../src/winspector.c:1436 msgid "Miniwindow Image" msgstr "Pisiakna pilt" #: ../src/winspector.c:1463 msgid "Icon filename:" msgstr "Ikoonifaili nimi:" #: ../src/winspector.c:1474 msgid "Ignore client supplied icon" msgstr "Kliendi enda ikooni eiratakse" #: ../src/winspector.c:1480 msgid "Initial Workspace" msgstr "Töölaud, millel käivitatakse" #: ../src/winspector.c:1482 msgid "The workspace to place the window when it's first shown." msgstr "Töölaua nimi, mille peal akent esimest korda näidatakse." #: ../src/winspector.c:1488 msgid "Nowhere in particular" msgstr "Ei oma tähtsust" #: ../src/winspector.c:1505 msgid "Application Attributes" msgstr "Rakenduse rekvisiidid" #: ../src/winspector.c:1516 msgid "Start hidden" msgstr "Käivitatakse peidetuna" #: ../src/winspector.c:1518 msgid "Automatically hide application when it's started." msgstr "Akna peitmine rakenduse käivitamise hetkel." #: ../src/winspector.c:1521 msgid "No application icon" msgstr "Rakenduse ikoon on peidus" #: ../src/winspector.c:1523 msgid "" "Disable the application icon for the application.\n" "Note that you won't be able to dock it anymore,\n" "and any icons that are already docked will stop\n" "working correctly." msgstr "" "Rakenduse ikooni keelamine. Sel juhul pole\n" "rakendust võimalik dokkida ja kõik selle\n" "rakenduse juba dokitud ikoonid ei toimi enam\n" "korrektselt." #: ../src/winspector.c:1529 msgid "Shared application icon" msgstr "Rakenduse ikoon on jagatud" #: ../src/winspector.c:1531 msgid "" "Use a single shared application icon for all of\n" "the instances of this application.\n" msgstr "" "Ühe jagatud ikooni kasutamine kõigi\n" "rakenduse instantside jaoks.\n" #: ../src/workspace.c:93 ../src/workspace.c:94 ../src/workspace.c:660 #, c-format msgid "Workspace %i" msgstr "Töölaud %i" #: ../src/workspace.c:705 msgid "Workspaces" msgstr "Töölauad" #: ../src/workspace.c:707 msgid "could not create Workspace menu" msgstr "töölaua menüüd pole võimalik luua" #: ../src/workspace.c:714 msgid "New" msgstr "Uus" #: ../src/workspace.c:715 msgid "Destroy Last" msgstr "Eemalda viimane" WindowMaker-0.95.9/po/el.po0000644000175000017500000014000313431646201012342 00000000000000# Hellenic Translations. # Copyright (C) 1999 Free Software Foundation, Inc. # Nikolaos Papagrigoriou , 1998. # # msgid "" msgstr "" "Project-Id-Version: 0.3\n" "POT-Creation-Date: 1998-08-20 01:33+0300\n" "PO-Revision-Date: 1999-09-04 01:39+0300\n" "Last-Translator: Nikolaos Papagrigoriou \n" "Language-Team: Greek\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "**************************\n" "Words from the maintainer in Greek:\n" "Η μετάφραση είναι ακόμη σε αρχικό στάδιο. Τα μυνήματα που εμφανίζονται στην\n" "κονσόλα προς το παρόν είναι στην αγγλική γλώσσα. Επίσης λόγω του\n" "περιορισμένου χώρου στην εμφάνιση των μυνημάτων, στο γραφικό περιβάλλον, δεν\n" "είναι δυνατή η σωστή μετάφραση. Πολλές φορές χρησιμοποιούνται συντομογραφίες.\n" "Θα υπάρξει στο μέλλον ελληνική σελίδα για τον Window Maker, όπου θα γίνεται\n" "επεξήγηση των ελληνικών όρων (Dock=Μπάρα, Clip=Συνδετήρας). Η παρούσα \n" "μετάφραση έγινε με βάση τον Window Maker 0.60.\n" "**************************\n" "Contact the maintainer for suggestions and corrections\n" #: ../src/appicon.c:570 ../src/dialog.c:223 ../src/dock.c:3301 #: ../src/dockedapp.c:210 ../src/dockedapp.c:251 ../src/rootmenu.c:1754 #: ../src/winspector.c:290 ../src/winspector.c:306 msgid "Error" msgstr "Σφάλμα" #: ../src/appicon.c:571 msgid "Could not open specified icon file" msgstr "Δεν μπορεί να ανοιχθεί το συγκεκριμένο εικονίδιο" #: ../src/appicon.c:572 ../src/dialog.c:122 ../src/dialog.c:223 #: ../src/dialog.c:460 ../src/dialog.c:1477 ../src/dock.c:514 #: ../src/dock.c:522 ../src/dock.c:545 ../src/dock.c:3302 #: ../src/dockedapp.c:211 ../src/dockedapp.c:257 ../src/dockedapp.c:371 #: ../src/rootmenu.c:1758 ../src/winspector.c:291 ../src/winspector.c:307 msgid "OK" msgstr "OK" #: ../src/appicon.c:599 ../src/dock.c:278 msgid "" " will be forcibly closed.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" " θα τερματισθεί βίαια.\n" "Οι μη σωσμένες αλλαγές θα χαθούν.\n" "Παρακαλώ επιβεβαιώστε." #: ../src/appicon.c:605 ../src/dock.c:283 ../src/winmenu.c:125 msgid "Kill Application" msgstr "Θανάτωση Εφαρμογής" #: ../src/appicon.c:606 ../src/dock.c:284 ../src/winmenu.c:127 msgid "Yes" msgstr "Ναι" #: ../src/appicon.c:606 ../src/dock.c:284 ../src/winmenu.c:127 msgid "No" msgstr "Όχι" #: ../src/appicon.c:624 ../src/dock.c:1196 msgid "Unhide Here" msgstr "Εμφάνισε Εδώ" #: ../src/appicon.c:625 ../src/appicon.c:650 ../src/dock.c:1198 #: ../src/dock.c:1200 ../src/dock.c:3468 ../src/dock.c:3470 #: ../src/winmenu.c:465 msgid "Hide" msgstr "Απόκρυψη" #: ../src/appicon.c:626 msgid "Set Icon..." msgstr "Εικονίδιο..." #: ../src/appicon.c:627 ../src/dock.c:1204 ../src/rootmenu.c:228 #: ../src/rootmenu.c:242 ../src/winmenu.c:512 msgid "Kill" msgstr "Θανάτωση" #: ../src/appicon.c:648 ../src/dock.c:3466 msgid "Unhide" msgstr "Εμφάνιση" #: ../src/defaults.c:836 ../src/startup.c:767 ../src/startup.c:785 #: ../src/startup.c:791 #, c-format msgid "could not read domain \"%s\" from defaults database" msgstr "" #: ../src/defaults.c:882 ../src/defaults.c:1007 ../src/defaults.c:1046 #: ../src/defaults.c:1076 #, c-format msgid "Domain %s (%s) of defaults database is corrupted!" msgstr "" #: ../src/defaults.c:887 ../src/defaults.c:1028 ../src/defaults.c:1059 #: ../src/defaults.c:1085 #, c-format msgid "could not load domain %s from user defaults database" msgstr "" #: ../src/defaults.c:898 ../src/defaults.c:992 #, c-format msgid "Domain %s (%s) of global defaults database is corrupted!" msgstr "" #: ../src/defaults.c:917 ../src/defaults.c:997 #, c-format msgid "could not load domain %s from global defaults database" msgstr "" #: ../src/defaults.c:1305 #, c-format msgid "wrong option value for key \"%s\". Should be one of %s" msgstr "" #: ../src/defaults.c:1352 #, c-format msgid "can't convert \"%s\" to boolean for key \"%s\"" msgstr "" #: ../src/defaults.c:1357 ../src/defaults.c:1391 ../src/defaults.c:1423 #: ../src/defaults.c:1436 ../src/defaults.c:1451 ../src/defaults.c:1465 #: ../src/defaults.c:1537 ../src/defaults.c:1549 ../src/defaults.c:1955 #: ../src/defaults.c:1972 ../src/defaults.c:1985 ../src/defaults.c:2018 #: ../src/defaults.c:2034 ../src/defaults.c:2065 ../src/defaults.c:2155 #, c-format msgid "using default \"%s\" instead" msgstr "" #: ../src/defaults.c:1388 #, c-format msgid "can't convert \"%s\" to integer for key \"%s\"" msgstr "" #: ../src/defaults.c:1418 ../src/defaults.c:1532 ../src/defaults.c:1950 #: ../src/defaults.c:1967 ../src/defaults.c:2013 ../src/defaults.c:2060 #: ../src/wdefaults.c:557 ../src/wdefaults.c:593 #, c-format msgid "Wrong option format for key \"%s\". Should be %s." msgstr "" #: ../src/defaults.c:1431 #, c-format msgid "Incorrect number of elements in array for key \"%s\"." msgstr "" #: ../src/defaults.c:1446 #, c-format msgid "Wrong value for key \"%s\". Should be Coordinate." msgstr "" #: ../src/defaults.c:1461 #, c-format msgid "can't convert array to integers for \"%s\"." msgstr "" #: ../src/defaults.c:1659 ../src/defaults.c:1691 ../src/defaults.c:1707 #: ../src/defaults.c:1753 ../src/defaults.c:1793 ../src/defaults.c:1831 #: ../src/defaults.c:1847 #, c-format msgid "\"%s\" is not a valid color name" msgstr "το \"%s\" δεν είναι έγκυρο όνομα χρώματος" #: ../src/defaults.c:1672 msgid "bad number of arguments in gradient specification" msgstr "λανθασμένος αριθμός παραμέτρων στον καθορισμό διαβάθμισης χρώματος" #: ../src/defaults.c:1726 msgid "too few arguments in multicolor gradient specification" msgstr "μικρός αριθμός παραμέτρων στον καθορισμό διαβάθμισης χρώματος" #: ../src/defaults.c:1820 msgid "bad number of arguments in textured gradient specification" msgstr "" #: ../src/defaults.c:1863 #, c-format msgid "bad opacity value for tgradient texture \"%s\". Should be [0..255]" msgstr "" #: ../src/defaults.c:1923 #, c-format msgid "could not initialize library %s" msgstr "" #: ../src/defaults.c:1926 #, c-format msgid "could not find function %s::%s" msgstr "" #: ../src/defaults.c:1933 #, c-format msgid "invalid texture type %s" msgstr "" #: ../src/defaults.c:1980 #, c-format msgid "Error in texture specification for key \"%s\"" msgstr "" #: ../src/defaults.c:2030 msgid "Wrong type for workspace background. Should be a texture type." msgstr "" #: ../src/defaults.c:2078 #, c-format msgid "Wrong type for background of workspace %i. Should be a texture." msgstr "" #: ../src/defaults.c:2122 msgid "could not load any usable font!!!" msgstr "" #: ../src/defaults.c:2150 #, c-format msgid "could not get color for key \"%s\"" msgstr "" #: ../src/defaults.c:2210 ../src/rootmenu.c:494 #, c-format msgid "%s:invalid key modifier \"%s\"" msgstr "" #: ../src/defaults.c:2222 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\"" msgstr "" #: ../src/defaults.c:2229 #, c-format msgid "%s:invalid key in shortcut \"%s\"" msgstr "" #: ../src/defaults.c:2255 #, c-format msgid "%s: modifier key %s is not valid" msgstr "" #: ../src/defaults.c:2289 #, c-format msgid "could not load image in option %s: %s" msgstr "" #: ../src/defaults.c:2371 msgid "could not render texture for icon background" msgstr "" #: ../src/dialog.c:122 ../src/dialog.c:467 ../src/dock.c:545 #: ../src/dockedapp.c:377 ../src/rootmenu.c:190 ../src/rootmenu.c:228 #: ../src/rootmenu.c:242 msgid "Cancel" msgstr "Άκυρο" #: ../src/dialog.c:218 msgid "Could not open directory \"%s\":\n%s" msgstr "Αδύνατο να ανοιχθεί ο κατάλογος \"%s\":\n%s" #: ../src/dialog.c:271 msgid "Could not load image file " msgstr "Αδύνατη η φόρτωση της εικόνας " #: ../src/dialog.c:403 msgid "Directories" msgstr "Κατάλογοι" #: ../src/dialog.c:412 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/dialog.c:1401 ../src/startup.c:325 msgid "cannot open connection for crashing dialog panel. Aborting." msgstr "" #: ../src/dialog.c:1427 msgid "Fatal error" msgstr "Ολέθριο σφάλμα" #: ../src/dialog.c:1438 #, c-format msgid "" "Window Maker received signal %i\n" "(%s)." msgstr "" #: ../src/dialog.c:1441 #, c-format msgid "Window Maker received signal %i." msgstr "" #: ../src/dialog.c:1458 msgid "What do you want to do now?" msgstr "Τί επιθυμείτε να μάθετε;" #: ../src/dialog.c:1464 msgid "Select action" msgstr "Επέλεξε ενέργεια" #: ../src/dialog.c:1465 msgid "Abort and leave a core file" msgstr "" #: ../src/dialog.c:1466 msgid "Restart Window Maker" msgstr "Επανεκκίνηση του Window Maker" #: ../src/dialog.c:1467 msgid "Start alternate window manager" msgstr "Εκκίνηση εναλλακτικού διαχειριστή παραθύρων" #: ../src/dock.c:212 #, c-format msgid "Type the name for workspace %i:" msgstr "Γράψε το όνομα της επιφάνειας %i:" #: ../src/dock.c:213 ../src/dock.c:1160 ../src/dock.c:1163 ../src/dock.c:3384 msgid "Rename Workspace" msgstr "Όνομα Επιφάνειας" #: ../src/dock.c:508 ../src/dock.c:516 msgid "Warning" msgstr "Προειδοποίηση" #: ../src/dock.c:509 msgid "" "Some icons cannot be made omnipresent. Please make sure that no other icon " "is docked in the same positions on the other workspaces and the Clip is not " "full in some workspace." msgstr "" "Τα συγκεκριμένα εικονίδια δεν μπορούν να παρουσιάζονται σε κάθε επιφάνεια. " "Βεβαιωθείται ότι η θέση που έχουν τα εικονίδια δεν καταλαμβάνεται από κάποια " "εικονίδια σε άλλη επιφάνεια και ότι ο Συνδετήρας δεν είναι πλήρης σε κάποια " "επιφάνεια." #: ../src/dock.c:517 msgid "" "Icon cannot be made omnipresent. Please make sure that no other icon is " "docked in the same position on the other workspaces and the Clip is not full " "in some workspace." msgstr "" "Το συγκεκριμένο εικονίδιο δεν μπορεί να είναι παρών σε κάθε επιφάνεια. " "Βεβαιωθείται ότι η θέση που έχει το εικονίδιο δεν καταλαμβάνεται από κάποιο " "εικονίδιο σε άλλη επιφάνεια και ότι ο Συνδετήρας δεν είναι πλήρης σε κάποια " "επιφάνεια." #: ../src/dock.c:543 msgid "Workspace Clip" msgstr "Συνδετήρας Επιφανειών" #: ../src/dock.c:544 msgid "All selected icons will be removed!" msgstr "Όλα τα επιλεγμένα εικονίδια θα εξαλειφθούν!" #: ../src/dock.c:591 ../src/dock.c:1175 ../src/dock.c:1177 ../src/dock.c:3420 msgid "Keep Icon" msgstr "Συγκράτηση Εικονιδίου" #: ../src/dock.c:592 ../src/dock.c:2130 ../src/dock.c:2264 msgid "Type the command used to launch the application" msgstr "Γράψε την εντολή εκτέλεσης της εφαρμογής" #: ../src/dock.c:973 #, c-format msgid "could not launch application %s\n" msgstr "αδύνατη η εκτέλεση της εφαρμογής %s\n" #: ../src/dock.c:1028 msgid "could not create workspace submenu for Clip menu" msgstr "αδύνατη η δημιουργία του υπομενού επιφανειών στο μενού του Συνδετήρα" #: ../src/dock.c:1091 msgid "could not create options submenu for Clip menu" msgstr "αδύνατη η δημιουργία του υπομενού επιλογών στο μενού του Συνδετήρα" #: ../src/dock.c:1095 msgid "Keep on Top" msgstr "Πάντα στο Προσκήνιο" #: ../src/dock.c:1101 msgid "Collapsed" msgstr "Αναδίπλωση" #: ../src/dock.c:1107 msgid "AutoCollapse" msgstr "Αυτόματη Αναδίπλωση" #: ../src/dock.c:1113 msgid "AutoRaiseLower" msgstr "Αυτόματη Ανάδυση/Βύθιση" #: ../src/dock.c:1119 msgid "AutoAttract Icons" msgstr "Αυτόματη Έλξη Εικονιδίων" #: ../src/dock.c:1125 msgid "Keep Attracted Icons" msgstr "Συγκράτηση Ελκούμενων Εικονιδίων" #: ../src/dock.c:1149 ../src/winmenu.c:407 msgid "Keep on top" msgstr "Πάντα στο Προσκήνιο" #: ../src/dock.c:1155 msgid "Clip Options" msgstr "Επιλογές Συνδετήρα" #: ../src/dock.c:1165 msgid "Selected" msgstr "Επιλεγμένο" #: ../src/dock.c:1170 ../src/dock.c:1173 ../src/dock.c:3411 msgid "Select All Icons" msgstr "Επιλογή Παντώς Εικονιδίου" #: ../src/dock.c:1179 ../src/dock.c:1181 ../src/dock.c:3428 msgid "Move Icon To" msgstr "Μεταφορά Εικονιδίου Στην" #: ../src/dock.c:1186 ../src/dock.c:1189 ../src/dock.c:3439 msgid "Remove Icon" msgstr "Εξάλειψη Εικονιδίου" #: ../src/dock.c:1191 msgid "Attract Icons" msgstr "Έλξη Εικονιδίων" #: ../src/dock.c:1194 msgid "Launch" msgstr "Εκτέλεση" #: ../src/dock.c:1202 msgid "Settings..." msgstr "Ρυθμίσεις..." #: ../src/dock.c:1595 ../src/dock.c:1609 ../src/dock.c:1623 ../src/dock.c:1633 #: ../src/dock.c:1658 #, c-format msgid "bad value in docked icon state info %s" msgstr "" #: ../src/dock.c:1641 #, c-format msgid "bad value in docked icon position %i,%i" msgstr "" #: ../src/dock.c:1897 msgid "there are too many icons stored in dock. Ignoring what doesn't fit" msgstr "υπερβολικός αριθμός εικονιδίων στην Μπάρα. Αγνοούνται όσα δεν χωρούν." #. icon->forced_dock = 1; #: ../src/dock.c:2129 ../src/dock.c:2263 msgid "Dock Icon" msgstr "Απόθεση στην Μπάρα" #: ../src/dock.c:3294 ../src/dock.c:3298 #, c-format msgid "Could not execute command \"%s\"" msgstr "Αδύνατη η εκτέλεση της εντολής \"%s\"" #: ../src/dock.c:3390 msgid "Toggle Omnipresent" msgstr "Παρών<=>Απών στις Επιφάνειες" #: ../src/dock.c:3395 ../src/winmenu.c:417 ../src/winspector.c:1202 msgid "Omnipresent" msgstr "Παρών σε κάθε επιφάνεια" #: ../src/dock.c:3409 msgid "Unselect All Icons" msgstr "Αποεπιλογή των εικονιδίων" #: ../src/dock.c:3418 msgid "Keep Icons" msgstr "Συγκράτηση Εικονιδίων" #: ../src/dock.c:3426 msgid "Move Icons To" msgstr "Μεταφορά Εικονιδίων Στην" #: ../src/dock.c:3437 msgid "Remove Icons" msgstr "Εξάλειψη Εικονιδίων" #: ../src/dockedapp.c:130 #, c-format msgid "could not find icon %s, used in a docked application" msgstr "αδύνατη η εύρεση του εικονιδίου %s, που χρησιμοποιεί μία εφαρμογή στον Συνδετήρα ή τη Μπάρα." #: ../src/dockedapp.c:209 #, c-format msgid "Could not open specified icon file: %s" msgstr "Αδύνατη η ανάγνωση το αρχείο του εικονιδίου:%s" #: ../src/dockedapp.c:211 msgid "Ignore" msgstr "Αγνόηση" #: ../src/dockedapp.c:252 msgid "" "Sorry, icon cannot be made omnipresent. Please make sure that no other icon " "is docked in the same position on the other workspaces, and the Clip is not " "full in some workspace, then try again." msgstr "" "Συγνώμη, αλλά το συγκεκριμένο εικονίδιο δεν μπορεί να είναι παρών σε κάθε " "επιφάνεια. Βεβαιωθείται ότι η θέση που έχει το εικονίδιο δεν καταλαμβάνεται " "από κάποιο εικονίδιο σε άλλη επιφάνεια και ότι ο Συνδετήρας δεν είναι πλήρης " "σε κάποια επιφάνεια." #: ../src/dockedapp.c:313 msgid "Start when WindowMaker is started" msgstr "Εκτέλεση με την έναρξη του Window Maker" #: ../src/dockedapp.c:319 msgid "Application path and arguments" msgstr "Εφαρμογή προς εκτέλεση και παράμετροι" #: ../src/dockedapp.c:330 msgid "Command for files dropped with DND" msgstr "Εντολή για συρρόμενα αρχεία (DND)" #: ../src/dockedapp.c:342 #, c-format msgid "%d will be replaced with the file name" msgstr "το %d αντικαθίσταται με όνομα αρχείου" #: ../src/dockedapp.c:346 msgid "DND support was not compiled in" msgstr "Δεν έγινε μεταγλώτιση με υποστήριξη για DND" #: ../src/dockedapp.c:352 msgid "Icon Image" msgstr "Εικονίδιο" #: ../src/dockedapp.c:364 ../src/winspector.c:1338 msgid "Browse..." msgstr "Ψάξε..." #: ../src/dockedapp.c:409 msgid "Docked Application Settings" msgstr "Ρυθμίσεις Εφαρμογής" #: ../src/framewin.c:642 ../src/framewin.c:737 ../src/menu.c:467 #: ../src/texture.c:549 #, c-format msgid "could not render texture: %s" msgstr "" #: ../src/framewin.c:665 ../src/framewin.c:676 ../src/framewin.c:692 #: ../src/framewin.c:703 ../src/framewin.c:710 ../src/framewin.c:717 #: ../src/icon.c:350 ../src/menu.c:496 #, c-format msgid "error rendering image:%s" msgstr "" #: ../src/framewin.c:770 #, c-format msgid "error rendering image: %s" msgstr "" #: ../src/icon.c:229 ../src/wdefaults.c:427 #, c-format msgid "error loading image file \"%s\": %s" msgstr "σφάλμα στην φόρτωση της εικόνας στο αρχείο \"%s\": %s" #: ../src/icon.c:477 ../src/icon.c:486 #, c-format msgid "could not create directory %s" msgstr "αδύνατη η δημιουργία του καταλόγου %s" #: ../src/icon.c:753 #, c-format msgid "could not find default icon \"%s\"" msgstr "αδύνατη η εύρεση του προκαθορισμένου εικονιδίου \"%s\"" #: ../src/icon.c:759 #, c-format msgid "could not load default icon \"%s\":%s" msgstr "αδύνατη η φόρτωση του προκαθορισμένου εικονιδίου \"%s\":%s" #: ../src/main.c:193 msgid "failed to restart Window Maker." msgstr "απέτυχε η επανεκκίνηση του Window Maker." #: ../src/main.c:196 #, c-format msgid "could not exec %s" msgstr "αδύνατη η εκτέλεση του %s" #: ../src/main.c:245 #, c-format msgid "%s aborted.\n" msgstr "%s ακυρώθηκε.\n" #: ../src/main.c:256 #, c-format msgid "Usage: %s [options]\n" msgstr "Χρήση: %s [-παράμετροι]\n" #: ../src/main.c:257 msgid "The Window Maker window manager for the X window system" msgstr "Window Maker, ο διαχειριστής παραθύρων του Συστήματος Παραθύρων X" #: ../src/main.c:259 msgid " -display host:dpy\tdisplay to use" msgstr "" #: ../src/main.c:261 msgid " --no-cpp \t\tdisable preprocessing of configuration files" msgstr "" #: ../src/main.c:263 msgid " --no-dock\t\tdo not open the application Dock" msgstr "" #: ../src/main.c:264 msgid " --no-clip\t\tdo not open the workspace Clip" msgstr "" #. #. puts(_(" --locale locale locale to use")); #. #: ../src/main.c:268 msgid " --visual-id visualid\tvisual id of visual to use" msgstr "" #: ../src/main.c:269 msgid " --static\t\tdo not update or save configurations" msgstr "" #: ../src/main.c:271 msgid " --synchronous\t\tturn on synchronous display mode" msgstr "" #: ../src/main.c:273 msgid " --version\t\tprint version and exit" msgstr "" #: ../src/main.c:274 msgid " --help\t\t\tshow this message" msgstr "" #: ../src/main.c:286 #, 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:307 ../src/main.c:312 #, c-format msgid "%s:could not execute initialization script" msgstr "" #: ../src/main.c:332 ../src/main.c:337 #, c-format msgid "%s:could not execute exit script" msgstr "%s:αδύνατη η εκτέλεση του script εξόδου" #: ../src/main.c:410 ../src/main.c:417 ../src/main.c:425 ../src/main.c:441 #, c-format msgid "too few arguments for %s" msgstr "μικρός αριθμός παραμέτρων για το %s" #: ../src/main.c:429 #, c-format msgid "bad value for visualid: \"%s\"" msgstr "" #: ../src/main.c:449 #, c-format msgid "%s: invalid argument '%s'\n" msgstr "" #: ../src/main.c:450 #, c-format msgid "Try '%s --help' for more information\n" msgstr "Για περισσότερες πληροφορίες δοκιμάστε '%s --help'\n" #: ../src/main.c:493 msgid "X server does not support locale" msgstr "" #: ../src/main.c:496 msgid "cannot set locale modifiers" msgstr "" #: ../src/main.c:513 #, c-format msgid "could not open display \"%s\"" msgstr "" #: ../src/menu.c:303 msgid "wrealloc() failed while trying to add menu item" msgstr "" #: ../src/misc.c:71 #, c-format msgid "could not define value for %s for cpp" msgstr "" #: ../src/misc.c:101 #, c-format msgid "could not get password entry for UID %i" msgstr "" #: ../src/misc.c:125 #, c-format msgid "your machine is misconfigured. HOSTNAME is set to %s" msgstr "" #: ../src/misc.c:131 #, c-format msgid "your machine is misconfigured. HOST is set to %s" msgstr "" #: ../src/misc.c:749 msgid "selection timed-out" msgstr "" #: ../src/misc.c:765 msgid "Program Arguments" msgstr "Παράμετροι Προγράμματος" #: ../src/misc.c:766 msgid "Enter command arguments:" msgstr "Γράψε τις παραμέτρους της εντολής:" #: ../src/misc.c:859 msgid "unable to get dropped data from DND drop" msgstr "" #: ../src/misc.c:867 msgid "error getting dropped data from DND drop" msgstr "" #: ../src/misc.c:873 msgid "out of memory while getting data from DND drop" msgstr "" #: ../src/misc.c:918 ../src/misc.c:1058 #, c-format msgid "out of memory during expansion of \"%s\"" msgstr "" #: ../src/misc.c:972 msgid "out of memory during expansion of \"%w\"" msgstr "" #: ../src/misc.c:990 msgid "out of memory during expansion of \"%W\"" msgstr "" #: ../src/misc.c:1006 msgid "out of memory during expansion of \"%a\"" msgstr "" #: ../src/misc.c:1037 #, c-format msgid "out of memory during expansion of \"%d\"" msgstr "" #: ../src/misc.c:1051 msgid "selection not available" msgstr "επιλογή μη διαθέσιμη" #: ../src/misc.c:1123 ../src/misc.c:1129 #, c-format msgid "bad window name value in %s state info" msgstr "" #: ../src/misc.c:1384 msgid "could not send message to background image helper" msgstr "" #: ../src/pixmap.c:235 #, c-format msgid "could not load mask bitmap file \"%s\". Won't use mask" msgstr "" #: ../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. If it's a string, try " "enclosing it with \"." msgstr "" #: ../src/proplist.c:434 msgid "Comments are not allowed inside WindowMaker owned domain files." msgstr "" #: ../src/proplist.c:453 #, c-format msgid "could not open domain file %s" msgstr "" #: ../src/proplist.c:466 msgid "extra data after end of file" msgstr "" #: ../src/resources.c:44 #, c-format msgid "could not parse color \"%s\"" msgstr "" #: ../src/resources.c:48 #, c-format msgid "could not allocate color \"%s\"" msgstr "" #: ../src/rootmenu.c:188 ../src/rootmenu.c:190 msgid "Exit" msgstr "Έξοδος" #: ../src/rootmenu.c:189 msgid "Exit window manager?" msgstr "Έξοδος από τον Window Maker;" #: ../src/rootmenu.c:225 msgid "Close X session" msgstr "Τερμάτισμός του X session" #: ../src/rootmenu.c:226 msgid "" "Close Window System session?\n" "Kill might close applications with unsaved data." msgstr "" "Τερματισμός του session του παραθυρικού περιβάλλοντος;\n" "(όλες οι εφαρμογές θα τρερματιστούν)" #. #. entry = wMenuAddCallback(menu, _("Select Shortcut"), NULL, NULL); #. wMenuEntrySetCascade(menu, entry, makeMakeShortcutMenu(scr)); #. #: ../src/rootmenu.c:228 ../src/winmenu.c:505 msgid "Close" msgstr "Κλείσιμο" #: ../src/rootmenu.c:239 msgid "Kill X session" msgstr "Θανάτωση του X session" #: ../src/rootmenu.c:240 msgid "" "Kill Window System session?\n" "(all applications will be closed)" msgstr "" "Θανάτωση του session του παραθυρικού περιβάλλοντος;\n" "(όλες οι εφαρμογές θα τρερματιστούν)" #: ../src/rootmenu.c:507 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\" for entry %s" msgstr "" #: ../src/rootmenu.c:515 #, c-format msgid "%s:invalid key in shortcut \"%s\" for entry %s" msgstr "" #: ../src/rootmenu.c:568 #, c-format msgid "%s: unmatched '\"' in menu file" msgstr "" #: ../src/rootmenu.c:618 #, c-format msgid "%s: missing command" msgstr "%s: απουσία εντολής" #: ../src/rootmenu.c:651 #, c-format msgid "invalid OPEN_MENU specification: %s" msgstr "" #: ../src/rootmenu.c:699 #, c-format msgid "%s:could not stat menu" msgstr "" #: ../src/rootmenu.c:707 #, c-format msgid "%s:could not stat menu:%s" msgstr "" #: ../src/rootmenu.c:725 #, c-format msgid "too many parameters in OPEN_MENU: %s" msgstr "" #: ../src/rootmenu.c:761 msgid "" "There are more than one WORKSPACE_MENU commands in the applications menu. " "Only one is allowed." msgstr "" #: ../src/rootmenu.c:790 ../src/rootmenu.c:808 ../src/rootmenu.c:818 #, c-format msgid "%s:missing parameter for menu command \"%s\"" msgstr "" #: ../src/rootmenu.c:882 #, c-format msgid "%s:unknown command \"%s\" in menu config." msgstr "" #: ../src/rootmenu.c:890 #, c-format msgid "%s:can't add shortcut for entry \"%s\"" msgstr "" #: ../src/rootmenu.c:1027 #, c-format msgid "%s:maximal line size exceeded in menu config: %s" msgstr "" #: ../src/rootmenu.c:1049 ../src/rootmenu.c:1141 ../src/rootmenu.c:1242 #, c-format msgid "%s:missing command in menu config: %s" msgstr "" #: ../src/rootmenu.c:1079 #, c-format msgid "%s:syntax error in menu file:END declaration missing" msgstr "" #: ../src/rootmenu.c:1108 ../src/rootmenu.c:1207 msgid "could not make arguments for menu file preprocessor" msgstr "" #: ../src/rootmenu.c:1114 ../src/rootmenu.c:1214 #, c-format msgid "%s:could not open/preprocess menu file" msgstr "" #: ../src/rootmenu.c:1126 ../src/rootmenu.c:1227 #, c-format msgid "%s:could not open menu file" msgstr "" #: ../src/rootmenu.c:1153 #, c-format msgid "%s:invalid menu file. MENU command is missing" msgstr "" #: ../src/rootmenu.c:1162 msgid "error reading preprocessed menu data" msgstr "" #: ../src/rootmenu.c:1254 #, c-format msgid "%s:no title given for the root menu" msgstr "%s:δεν δόθηκε τίτλος στο μητρικό μενού" #: ../src/rootmenu.c:1337 ../src/rootmenu.c:1404 ../src/rootmenu.c:1448 #, c-format msgid "out of memory while constructing directory menu %s" msgstr "" #: ../src/rootmenu.c:1347 #, c-format msgid "%s:could not stat file \"%s\" in menu directory" msgstr "" #: ../src/rootmenu.c:1502 msgid "Commands" msgstr "Εντολές" #: ../src/rootmenu.c:1505 msgid "Restart" msgstr "Επανεκκίνηση" #: ../src/rootmenu.c:1506 msgid "Exit..." msgstr "Έξοδος..." #: ../src/rootmenu.c:1551 #, c-format msgid "could not find menu file \"%s\" referenced in WMRootMenu" msgstr "" #: ../src/rootmenu.c:1558 #, c-format msgid "could not access menu \"%s\" referenced in WMRootMenu" msgstr "" #: ../src/rootmenu.c:1569 #, c-format msgid "" "using default menu file \"%s\" as the menu referenced in WMRootMenu could " "not be found " msgstr "" #: ../src/rootmenu.c:1592 ../src/rootmenu.c:1668 #, c-format msgid "%s:format error in root menu configuration \"%s\"" msgstr "" #: ../src/rootmenu.c:1755 msgid "" "The applications menu could not be loaded. Look at the console output for a " "detailed description of the errors." msgstr "" "Το μενού των εφαρμογών είνα αδύνατο να φορτωθεί. Κοιτάξτε στην έξοδο της " "κονσόλας για λεπτομερέστερη περιγραφή του προβλήματος." #: ../src/screen.c:459 #, c-format msgid "could not load logo image for panels: %s" msgstr "" #: ../src/screen.c:463 #, c-format msgid "error making logo image for panel:%s" msgstr "" #: ../src/screen.c:751 #, c-format msgid "could not initialize graphics library context: %s" msgstr "" #: ../src/screen.c:782 msgid "could not do initialization of WINGs widget set" msgstr "" #: ../src/screen.c:1114 #, c-format msgid "could not save session state in %s" msgstr "" #: ../src/session.c:182 ../src/wdefaults.c:575 ../src/winspector.c:354 #, c-format msgid "can't convert \"%s\" to boolean" msgstr "" #: ../src/session.c:981 msgid "out of memory while saving session state" msgstr "" #: ../src/session.c:1072 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:1206 msgid "connection to the session manager was lost" msgstr "" #: ../src/stacking.c:73 msgid "could not get window list!!" msgstr "" #: ../src/startup.c:194 #, c-format msgid "internal X error: %s\n" msgstr "" #: ../src/startup.c:259 #, c-format msgid "got signal %i (%s) - restarting\n" msgstr "" #: ../src/startup.c:261 #, c-format msgid "got signal %i - restarting\n" msgstr "" #: ../src/startup.c:275 #, c-format msgid "got signal %i (%s) - exiting...\n" msgstr "" #: ../src/startup.c:277 #, c-format msgid "got signal %i - exiting...\n" msgstr "" #: ../src/startup.c:290 #, c-format msgid "got signal %i (%s)\n" msgstr "" #: ../src/startup.c:292 #, c-format msgid "got signal %i\n" msgstr "" #: ../src/startup.c:303 msgid "" "crashed while trying to do some post-crash cleanup. Aborting immediatelly." msgstr "" #. we try to restart Window Maker #: ../src/startup.c:337 msgid "trying to restart Window Maker..." msgstr "επιχειρείται επανεκκίνηση του Window Maker..." #: ../src/startup.c:342 msgid "trying to start alternate window manager..." msgstr "επιχειρείται εκκίνηση εναλλακτικού διαχειριστή παραθύρων..." #: ../src/startup.c:347 msgid "failed to start alternate window manager. Aborting." msgstr "αποτυχία εκκίνησης εναλλακτικού διαχειριστή παραθύρων. Ματαίωση." #: ../src/startup.c:349 msgid "" "a fatal error has occured, probably due to a bug. Please fill the included " "BUGFORM and report it." msgstr "" #: ../src/startup.c:777 #, 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:805 msgid "XKB is not supported. KbdModeLock is automatically disabled." msgstr "" #: ../src/startup.c:824 msgid "it seems that there is already a window manager running" msgstr "φαίνεται πως κάποιος διαχειριστής παραθύρων ήδη εκτελέιται" #: ../src/startup.c:830 #, c-format msgid "could not manage screen %i" msgstr "" #: ../src/startup.c:890 msgid "could not manage any screen" msgstr "" #: ../src/switchmenu.c:114 msgid "Windows" msgstr "Παράθυρα" #: ../src/texture.c:290 ../src/texture.c:334 #, c-format msgid "image file \"%s\" used as texture could not be found." msgstr "" #: ../src/texture.c:296 ../src/texture.c:340 #, c-format msgid "could not load texture pixmap \"%s\":%s" msgstr "" #: ../src/texture.c:400 #, c-format msgid "library \"%s\" cound not be opened." msgstr "" #: ../src/texture.c:409 #, c-format msgid "function \"%s\" not found in library \"%s\"" msgstr "" #: ../src/texture.c:416 msgid "function textures not supported on this system, sorry." msgstr "" #: ../src/wdefaults.c:421 #, c-format msgid "could not find icon file \"%s\"" msgstr "αδύνατη η εύρεση του αρχείου εικονιδίου \"%s\"" #: ../src/window.c:2607 ../src/window.c:2741 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 "" #: ../src/winmenu.c:126 msgid "" "This will kill the application.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" "Η εφαρμογή θα θανατωθεί.\n" "Οι μη σωσμένες αλλαγές θα χαθούν.\n" "Παρακαλώ επιβεβαιώστε." #: ../src/winmenu.c:269 ../src/winmenu.c:277 msgid "Set Shortcut" msgstr "Συντόμευση" #: ../src/winmenu.c:357 ../src/winmenu.c:403 msgid "could not create submenu for window menu" msgstr "αδύνατη η δημιουργία υπομενού για το μενού των παραθύρων" #: ../src/winmenu.c:412 msgid "Keep at bottom" 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:440 ../src/winmenu.c:575 msgid "Maximize" msgstr "Μεγιστοποίηση" #: ../src/winmenu.c:448 ../src/winmenu.c:561 msgid "Miniaturize" msgstr "Ελαχιστοποίηση" #: ../src/winmenu.c:457 ../src/winmenu.c:592 msgid "Shade" msgstr "Τύλιξη" #: ../src/winmenu.c:473 msgid "Resize/Move" msgstr "Ανάπλαση/Μεταφορά" #: ../src/winmenu.c:481 msgid "Select" msgstr "Επιλογή" #: ../src/winmenu.c:489 msgid "Move To" msgstr "Μεταφορά Στην" #: ../src/winmenu.c:494 msgid "Attributes..." msgstr "Ιδιότητες..." #: ../src/winmenu.c:496 msgid "Options" msgstr "Επιλογές" #: ../src/winmenu.c:556 msgid "Deminiaturize" msgstr "Αποελαχιστοποίηση" #: ../src/winmenu.c:570 msgid "Unmaximize" msgstr "Απομεγιστοποίηση" #: ../src/winmenu.c:587 msgid "Unshade" msgstr "Ξετύλιξη" #: ../src/winspector.c:288 #, c-format msgid "Could not find icon \"%s\" specified for this window" msgstr "Αδύνατη η εύρεση του εικονιδίου \"%s\" που καθορίστηκε για το παράθυρο" #: ../src/winspector.c:304 #, c-format msgid "Could not open specified icon \"%s\":%s" msgstr "Αδύνατο να ανοιχθεί το συγκεκριμένο εικονίδιο \"%s\":%s" #: ../src/winspector.c:1052 msgid "Save" msgstr "Σώσιμο" #: ../src/winspector.c:1060 msgid "Apply" msgstr "Εφαρμογή" #: ../src/winspector.c:1066 msgid "Reload" msgstr "Σβήσιμο" #: ../src/winspector.c:1075 ../src/winspector.c:1085 msgid "Window Specification" msgstr "Χαρακτηρισμός Παραθύρου" #: ../src/winspector.c:1076 msgid "Window Attributes" msgstr "Ιδιότητες Παραθύρου" #: ../src/winspector.c:1077 msgid "Advanced Options" msgstr "Προχωρημένες Επιλογές" #: ../src/winspector.c:1078 msgid "Icon and Initial Workspace" msgstr "Εικονίδιο και Αρχική Επιφάνεια" #: ../src/winspector.c:1079 msgid "Application Specific" msgstr "Ειδικά προς την Εφαρμογή" #: ../src/winspector.c:1093 msgid "Defaults for all windows" msgstr "Εξ' ορισμού για όλα τα παράθυρα" #: ../src/winspector.c:1149 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 "" "Οι ρυθμίσεις θα εφαρμοσθούν σε όλα\n" "τα παράθυρα που η ιδιότητα τους WM_CLASS αντιστοιχεί στην τιμή που\n" "επιλέχθηκε παραπάνω, κατά το σώσιμο." #: ../src/winspector.c:1156 msgid "Attributes" msgstr "Ιδιότητες" #: ../src/winspector.c:1167 msgid "Disable Titlebar" msgstr "Αφαίρεση μπάρας τίτλου" #: ../src/winspector.c:1169 msgid "" "Remove the titlebar of this window.\n" "To access the window commands menu of a window\n" "without it's titlebar, press Control+Esc (or the\n" "equivalent shortcut, if you changed the default\n" "settings)." msgstr "" "Αφαίρεση της μπάρας τίτλου του παραθύρου.\n" "Για την προσπέλαση του μενού εντολών του \n" "παραθύρου δίχως την μπάρα, πιέστε Control+Esc\n" "(ή την αντίστοιχη συντόμευση αν αλλάξατε τις\n" "προκαθορισμένες ρυθμίαεις)." #: ../src/winspector.c:1176 msgid "Disable Resizebar" msgstr "Αφαίρεση μπάρας αλλαγής μεγέθους" #: ../src/winspector.c:1178 msgid "Remove the resizebar of this window." msgstr "Αφαίρεση της μπάρας αλλαγής μεγέθους του παραθύρου." #: ../src/winspector.c:1181 msgid "Disable Close Button" msgstr "Αφαίρεση κουμπιού κλεισίματος" #: ../src/winspector.c:1183 msgid "Remove the `close window' button of this window." msgstr "Αφαίρεση του κουμπιού κλεισίματος του παραθύρου." #: ../src/winspector.c:1186 msgid "Disable Miniaturize Button" msgstr "Αφαίρεση κουμπιού ελαχιστοποίησης" #: ../src/winspector.c:1188 msgid "Remove the `miniaturize window' button of the window." msgstr "Αφαίρεση του κουμπιού ελαχιστοποίησης του παραθύρου." #: ../src/winspector.c:1191 msgid "Keep on Top / Floating" msgstr "Πάντα στο Προσκήνιο" #: ../src/winspector.c:1193 msgid "" "Keep the window over other windows, not allowing\n" "them to cover it." msgstr "" "Διατήρηση του παραθύρου πάνω από όλα τα άλλα, χωρίς\n" "να μπορούν άλλα παράθυρα να το καλύψουςν." #: ../src/winspector.c:1197 msgid "Keep at Bottom / Sunken" msgstr "Πάντα στο Παρασκήνιο" #: ../src/winspector.c:1199 msgid "Keep the window under all other windows." msgstr "Διατήρηση του παραθύρου κάτω από όλα τα άλλα." #: ../src/winspector.c:1204 msgid "Make window occupy all workspaces." msgstr "Παρουσία του παραθύρου σε κάθε Επιφάνεια." #: ../src/winspector.c:1207 msgid "Start Miniaturized" msgstr "Εκκίνηση ως Ελαχιστοποιημένο" #: ../src/winspector.c:1209 msgid "" "Make the window be automatically miniaturized when it's\n" "first shown." msgstr "" "Αυτόματη ελαχιστοποίηση του παραθύρου όταν\n" "εμφανίζεται για πρώτη φορά." #: ../src/winspector.c:1213 msgid "Start Maximized" msgstr "Εκκίνηση ως Μεγιστοποιημένο" #: ../src/winspector.c:1215 msgid "" "Make the window be automatically maximized when it's\n" "first shown." msgstr "" "Αυτόματη μεγιστοποίηση του παραθύρου όταν\n" "εμφανίζεται για πρώτη φορά." #: ../src/winspector.c:1219 msgid "Skip Window List" msgstr "Παράλειψη από τη Λίστα Παραθύρων" #: ../src/winspector.c:1221 msgid "Do not list the window in the window list menu." msgstr "Να μην φαίνεται το παράθυρο στη Λίστα των Παραθύρων" #: ../src/winspector.c:1236 msgid "Advanced" msgstr "Προχωρημένες Ιδιότητες" #: ../src/winspector.c:1251 msgid "Ignore HideOthers" msgstr "Αγνόηση στην Απόκρυψη των Άλλων" #: ../src/winspector.c:1253 msgid "" "Do not hide the window when issuing the\n" "`HideOthers' command." msgstr "" "Να μην κρύβεται το παράθυρο όταν εκτελείται\n" "η εντολή 'Απόκρυψη των Άλλων'" #: ../src/winspector.c:1257 msgid "Don't Bind Keyboard Shortcuts" msgstr "Μη δέσμευση των συντομεύσεων" #: ../src/winspector.c:1259 msgid "" "Do not bind keyboard shortcuts from Window Maker\n" "when this window is focused. This will allow the\n" "window to receive all key combinations regardless\n" "of your shortcut configuration." msgstr "" "Όταν το παράθυρο είναι ενεργό κανένας συνδυασμός\n" "πλήκτρων που έχει καθοριστεί από τον Window Maker\n" "δεν δουλεύει. Δηλαδή, ισχύουν οι συνδυασμοί πλήκτρων\n" "που έχουν καθοριστεί από την εκτελούμενη εφαρμογή στο\n" "συγκεκριμένο παράθυρο." #: ../src/winspector.c:1265 msgid "Don't Bind Mouse Clicks" msgstr "Μη δέσμευση των κλικ ποντικιού" #: ../src/winspector.c:1267 msgid "" "Do not bind mouse actions, such as `Alt'+drag\n" "in the window (when Alt is the modifier you have\n" "configured)." msgstr "" "Να μην δεσμέυονται οι κινήσεις του ποντικιού,\n" "όπως η 'Alt'+drag, στο παράθυρο." #: ../src/winspector.c:1272 msgid "Keep Inside Screen" msgstr "Περιορισμός εντός της οθόνης" #: ../src/winspector.c:1274 msgid "" "Do not allow the window to move itself completely\n" "outside the screen. For bug compatibility.\n" msgstr "" "Να μην επιτρέπεται στο παράθυρο να μετακινεί τον\n" "εαυτό του πλήρως έξω από την οθόνη.\n" #: ../src/winspector.c:1278 msgid "Don't Let It Take Focus" msgstr "Να μην είναι ποτέ 'ενεργό'" #: ../src/winspector.c:1280 msgid "" "Do not let the window take keyboard focus when you\n" "click on it." msgstr "" "Να μην μπορεί το παράθυρο να γίνει ενεργό\n" "όταν κάνει κανείς κλικ επάνω σε αυτό." #: ../src/winspector.c:1284 msgid "Don't Save Session" msgstr "Να μην σώζεται το Session" #: ../src/winspector.c:1286 msgid "" "Do not save the associated application in the\n" "session's state, so that it won't be restarted\n" "together with other applications when Window Maker\n" "starts." msgstr "" "Να μην αποθηκεύεται η συγκεκριμένη εφαρμογή στην\n" "εκάστοτε κατάσταση του περιβάλλοντος εργασίας\n" "(Session State), έτσι ώστε να μην εκτελείται μαζί με\n" "άλλα προγράμματα κατά την εκκίνηση του Window Maker." #: ../src/winspector.c:1292 msgid "Emulate Application Icon" msgstr "Εξομοίωση Εικονιδίου Εφαρμογής" #: ../src/winspector.c:1294 msgid "" "Make this window act as an application that provides\n" "enough information to Window Maker for a dockable\n" "application icon to be created." msgstr "" "Κάνει το παράθυρο να δρα ως μία εφαρμογή που παρέχει\n" "αρκετές πληροφορίες στον Window Maker για την δημιουργία\n" "του εικονιδίου της εφαρμογής, το οποίο μπορεί να τοποθετηθεί\n" "στην Μπάρα ή στον Συνδετήρα." #: ../src/winspector.c:1299 msgid "Full Screen Maximization" msgstr "Πλήρης Μεγιστοποίηση" #: ../src/winspector.c:1301 msgid "" "Make the window use the whole screen space when it's\n" "maximized. The titlebar and resizebar will be moved\n" "to outside the screen." msgstr "" "Κάνει το παράθυρο να χρησιμοποιήσει όλο το χώρο της\n" "οθόνης όταν μεγιστοποιείται. Η μπάρα του τίτλου και\n" "η μπάρα αλλαγής μεγέθους τοποθετούνται εκτός της οθόνης." #: ../src/winspector.c:1307 msgid "Disable Language Button" msgstr "Αφαίρεση Κουμπιού Γλώσσας" #: ../src/winspector.c:1309 msgid "Remove the `toggle language' button of the window." msgstr "Αφαίρεση του κουμπιού 'εναλλαγής γλώσσας' του παραθύρου." #: ../src/winspector.c:1326 msgid "Miniwindow Image" msgstr "Εικόνα Ελαχ/ποιημένου Παραθύρου" #: ../src/winspector.c:1345 msgid "Update" msgstr "Ανανέωση" #: ../src/winspector.c:1360 msgid "Icon File Name:" msgstr "Αρχείο εικονιδίου:" #: ../src/winspector.c:1372 msgid "Ignore client supplied icon" msgstr "Αγνόηση εξ' ορισμού εικονιδίου" #: ../src/winspector.c:1379 msgid "Initial Workspace" msgstr "Αρχική Επιφάνεια" #: ../src/winspector.c:1381 msgid "The workspace to place the window when it's first shown." msgstr "Η επιφάνεια στη οποία θα τοποθετηθεί το παράθυρο\n" "όταν εμφανίζεται για πρώτη φορά." #: ../src/winspector.c:1387 msgid "Nowhere in particular" msgstr "Πουθενά συγκεκριμένα" #: ../src/winspector.c:1405 msgid "Application Wide" msgstr "Άλλες Ιδιότητες" #: ../src/winspector.c:1416 msgid "Start Hidden" msgstr "Εκκίνηση ως Κρυμμένο" #: ../src/winspector.c:1418 msgid "Automatically hide application when it's started." msgstr "Αυτόματη απόκρυψη της εφαρμογής όταν\n" "εκτελείται για πρώτη φορά." #: ../src/winspector.c:1421 msgid "No Application Icon" msgstr "Χωρίς το εικονίδιο της εφαρμογής" #: ../src/winspector.c:1423 msgid "" "Disable the application icon for the application.\n" "Note that you won't be able to dock it anymore,\n" "and any icons that are already docked will stop\n" "working correctly." msgstr "" "Απενεργοποίηση του εικονιδίου της εφαρμογής. Έτσι,\n" "δεν μπορείται να τοποθετήσετε το εικονίδιο της\n" "εφαρμογής στην Μπάρα ή τον Συνδετήρα και\n" "πιθανότατα είδη τοποθετημένα εικονίδια της εφαρμογής\n" "στην Μπάρα ή τον Συνδετήρα να μην δουλεύουν σωστά." #: ../src/workspace.c:107 ../src/workspace.c:108 ../src/workspace.c:703 #, c-format msgid "Workspace %i" msgstr "Επιφάνεια %i" #: ../src/workspace.c:760 msgid "Workspaces" msgstr "Επιφάνειες" #: ../src/workspace.c:762 msgid "could not create Workspace menu" msgstr "αδύνατη η δημιουργία του μενού Επιφανειών" #: ../src/workspace.c:769 msgid "New" msgstr "Δημιουργία Επιφάνειας" #: ../src/workspace.c:770 msgid "Destroy Last" msgstr "Καταστροφή Τελευταίας" #: ../src/xutil.c:228 msgid "invalid data in selection" msgstr "" WindowMaker-0.95.9/po/Makefile.am0000644000175000017500000000705113431646201013443 00000000000000DOMAIN = WindowMaker CATALOGS = @WMAKERMOFILES@ CLEANFILES = $(CATALOGS) $(DOMAIN).pot # Please keep this sorted in alphabetic order! EXTRA_DIST = be.po bg.po bs.po ca.po cs.po da.po de.po el.po es.po et.po \ fi.po fr.po fy.po gl.po hr.po hu.po hy.po it.po ja.po ko.po ms.po nl.po \ no.po pl.po pt.po ro.po ru.po sk.po sv.po tr.po uk.po zh_CN.po zh_TW.po POTFILES = \ $(top_srcdir)/src/actions.c \ $(top_srcdir)/src/appicon.c \ $(top_srcdir)/src/application.c \ $(top_srcdir)/src/appmenu.c \ $(top_srcdir)/src/balloon.c \ $(top_srcdir)/src/client.c \ $(top_srcdir)/src/colormap.c \ $(top_srcdir)/src/cycling.c \ $(top_srcdir)/src/defaults.c \ $(top_srcdir)/src/dialog.c \ $(top_srcdir)/src/dock.c \ $(top_srcdir)/src/dockedapp.c \ $(top_srcdir)/src/event.c \ $(top_srcdir)/src/framewin.c \ $(top_srcdir)/src/geomview.c \ $(top_srcdir)/src/icon.c \ $(top_srcdir)/src/main.c \ $(top_srcdir)/src/menu.c \ $(top_srcdir)/src/misc.c \ $(top_srcdir)/src/monitor.c \ $(top_srcdir)/src/motif.c \ $(top_srcdir)/src/moveres.c \ $(top_srcdir)/src/osdep_bsd.c \ $(top_srcdir)/src/osdep_darwin.c \ $(top_srcdir)/src/osdep_linux.c \ $(top_srcdir)/src/osdep_stub.c \ $(top_srcdir)/src/pixmap.c \ $(top_srcdir)/src/placement.c \ $(top_srcdir)/src/properties.c \ $(top_srcdir)/src/resources.c \ $(top_srcdir)/src/rootmenu.c \ $(top_srcdir)/src/screen.c \ $(top_srcdir)/src/session.c \ $(top_srcdir)/src/shutdown.c \ $(top_srcdir)/src/stacking.c \ $(top_srcdir)/src/startup.c \ $(top_srcdir)/src/superfluous.c \ $(top_srcdir)/src/switchpanel.c \ $(top_srcdir)/src/switchmenu.c \ $(top_srcdir)/src/texture.c \ $(top_srcdir)/src/usermenu.c \ $(top_srcdir)/src/wcore.c \ $(top_srcdir)/src/wdefaults.c \ $(top_srcdir)/src/window.c \ $(top_srcdir)/src/winmenu.c \ $(top_srcdir)/src/winspector.c \ $(top_srcdir)/src/wmspec.c \ $(top_srcdir)/src/workspace.c \ $(top_srcdir)/src/wsmap.c \ $(top_srcdir)/src/xdnd.c \ $(top_srcdir)/src/xinerama.c \ $(top_srcdir)/src/xmodifier.c \ $(top_srcdir)/src/xutil.c SUFFIXES = .po .mo .po.mo: $(AM_V_GEN)$(MSGFMT) -c -o $@ $< all-local: $(CATALOGS) .PHONY: update-lang if HAVE_XGETTEXT update-lang: $(DOMAIN).pot $(AM_V_GEN)$(top_srcdir)/script/generate-po-from-template.sh \ -n "$(PACKAGE_NAME)" -v "$(PACKAGE_VERSION)" -b "$(PACKAGE_BUGREPORT)" \ -t "$(DOMAIN).pot" "$(srcdir)/$(PO).po" $(DOMAIN).pot: $(POTFILES) $(AM_V_GEN)$(XGETTEXT) --default-domain=$(DOMAIN) \ --add-comments --keyword=_ --keyword=N_ $(POTFILES) @if cmp -s $(DOMAIN).po $(DOMAIN).pot; then \ rm -f $(DOMAIN).po; \ else \ mv -f $(DOMAIN).po $(DOMAIN).pot; \ fi endif install-data-local: $(CATALOGS) $(mkinstalldirs) $(DESTDIR)$(localedir) for n in $(CATALOGS) __DuMmY ; do \ if test "$$n" -a "$$n" != "__DuMmY" ; then \ l=`basename $$n .mo`; \ $(mkinstalldirs) $(DESTDIR)$(localedir)/$$l/LC_MESSAGES; \ $(INSTALL_DATA) -m 644 $$n $(DESTDIR)$(localedir)/$$l/LC_MESSAGES/$(DOMAIN).mo; \ fi; \ done uninstall-local: for n in $(CATALOGS) ; do \ l=`basename $$n .mo`; \ rm -f $(DESTDIR)$(localedir)/$$l/LC_MESSAGES/$(DOMAIN).mo; \ done # Create a 'silent rule' for our make check the same way automake does AM_V_CHKTRANS = $(am__v_CHKTRANS_$(V)) am__v_CHKTRANS_ = $(am__v_CHKTRANS_$(AM_DEFAULT_VERBOSITY)) am__v_CHKTRANS_0 = @echo " CHK translations" ; am__v_CHKTRANS_1 = # 'make check' will make sure the tranlation sources are in line with the compiled source check-local: $(AM_V_CHKTRANS)$(top_srcdir)/script/check-translation-sources.sh \ "$(srcdir)" -s "$(top_srcdir)/src/Makefile.am" -v wmaker_SOURCES WindowMaker-0.95.9/po/de.po0000644000175000017500000014532013431646201012341 00000000000000# # German Message Catalog for Window Maker # # Initial translation # Gudio Scholz # Bernd Eggert # # Adapted to versions 0.80 ff. # Torsten Marek # msgid "" msgstr "" "Project-Id-Version: Window Maker 0.91\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-01-16 17:12+0100\n" "PO-Revision-Date: 2004-11-08 22:58+0100\n" "Last-Translator: shlomme@gmx.net\n" "Language-Team: German\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../src/appicon.c:352 ../src/dialog.c:568 ../src/dock.c:3098 #: ../src/dockedapp.c:209 ../src/main.c:344 ../src/rootmenu.c:1705 #: ../src/winspector.c:354 ../src/winspector.c:370 msgid "Error" msgstr "Fehler" #: ../src/appicon.c:353 msgid "Could not open specified icon file" msgstr "Symboldatei konnte nicht geöffnet werden" #: ../src/appicon.c:353 ../src/dialog.c:410 ../src/dialog.c:471 #: ../src/dialog.c:568 ../src/dialog.c:975 ../src/dialog.c:1628 #: ../src/dock.c:478 ../src/dock.c:485 ../src/dock.c:507 ../src/dock.c:3098 #: ../src/dockedapp.c:210 ../src/dockedapp.c:380 ../src/main.c:344 #: ../src/rootmenu.c:1708 ../src/winspector.c:354 ../src/winspector.c:370 msgid "OK" msgstr "OK" #: ../src/appicon.c:383 ../src/dock.c:229 msgid "" " will be forcibly closed.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" " wird gewaltsam geschlossen.\n" "Alle ungespeicherten Änderungen gehen dabei verloren.\n" "Bitte bestätigen." #: ../src/appicon.c:390 ../src/dock.c:247 ../src/winmenu.c:119 msgid "Kill Application" msgstr "Anwendung töten" #: ../src/appicon.c:391 ../src/dock.c:248 ../src/winmenu.c:122 msgid "Yes" msgstr "Ja" #: ../src/appicon.c:391 ../src/dock.c:248 ../src/winmenu.c:122 msgid "No" msgstr "Nein" #: ../src/appicon.c:419 ../src/dock.c:1070 ../src/dock.c:3255 msgid "Unhide Here" msgstr "Hier wiederherstellen" #: ../src/appicon.c:420 ../src/appicon.c:443 ../src/dock.c:1072 #: ../src/dock.c:1074 ../src/dock.c:3267 ../src/winmenu.c:431 msgid "Hide" msgstr "Verstecken" #: ../src/appicon.c:421 msgid "Set Icon..." msgstr "Symbol wählen..." #: ../src/appicon.c:422 ../src/dock.c:1078 ../src/rootmenu.c:233 #: ../src/winmenu.c:477 msgid "Kill" msgstr "Beenden" #: ../src/appicon.c:441 ../src/dock.c:3265 msgid "Unhide" msgstr "Wiederherstellen" #: ../src/application.c:379 #, c-format msgid "recreating missing icon '%s'" msgstr "fehlendes Symbol '%s' wird wiederhergestellt" #: ../src/defaults.c:736 ../src/defaults.c:933 #, c-format msgid "Domain %s (%s) of global defaults database is corrupted!" msgstr "Domäne %s (%s) in globaler Standarddatenbank ist fehlerhaft!" #: ../src/defaults.c:740 #, c-format msgid "could not load domain %s from global defaults database" msgstr "Domäne %s aus globaler Standarddatenbank konnte nicht geladen werden" #: ../src/defaults.c:830 ../src/defaults.c:844 #, c-format msgid "invalid global menu file %s" msgstr "Ungültige Datei %s für globales Menü" #: ../src/defaults.c:869 ../src/startup.c:671 ../src/startup.c:688 #: ../src/startup.c:694 #, c-format msgid "could not read domain \"%s\" from defaults database" msgstr "Dömane \"%s\" aus der Standarddatenbank konnte nicht gelesen werden" #: ../src/defaults.c:910 ../src/defaults.c:1014 ../src/defaults.c:1053 #: ../src/defaults.c:1106 #, c-format msgid "Domain %s (%s) of defaults database is corrupted!" msgstr "Domäne %s (%s) aus der Standarddatenbank ist fehlerhaft!" #: ../src/defaults.c:923 ../src/defaults.c:1034 ../src/defaults.c:1089 #: ../src/defaults.c:1116 #, c-format msgid "could not load domain %s from user defaults database" msgstr "Domäne %s aus Benutzer-Standarddatenbank konnte nicht geladen werden" #: ../src/defaults.c:952 #, c-format msgid "could not load domain %s from global defaults database (%s)" msgstr "" "Dömane %s konnte nicht aus globaler Standarddatenbank (%s) gelesen werden" #: ../src/defaults.c:1079 ../src/screen.c:372 #, c-format msgid "could not load logo image for panels: %s" msgstr "Panel-Logo konnte nicht geladen werden: %s" #. --------------------------- Local ----------------------- #: ../src/defaults.c:1304 ../src/defaults.c:1423 ../src/defaults.c:1532 #: ../src/defaults.c:1989 ../src/defaults.c:2005 ../src/defaults.c:2046 #: ../src/defaults.c:2091 ../src/defaults.c:2498 ../src/wdefaults.c:543 #: ../src/wdefaults.c:572 #, c-format msgid "Wrong option format for key \"%s\". Should be %s." msgstr "Falsches Optionsformat für Schlüssel \"%s\". %s erwartet." #: ../src/defaults.c:1306 ../src/defaults.c:1375 ../src/defaults.c:1400 #: ../src/defaults.c:1427 ../src/defaults.c:1439 ../src/defaults.c:1453 #: ../src/defaults.c:1467 ../src/defaults.c:1536 ../src/defaults.c:1548 #: ../src/defaults.c:1993 ../src/defaults.c:2010 ../src/defaults.c:2022 #: ../src/defaults.c:2051 ../src/defaults.c:2067 ../src/defaults.c:2096 #: ../src/defaults.c:2175 ../src/defaults.c:2503 ../src/defaults.c:2514 #, c-format msgid "using default \"%s\" instead" msgstr "benutze Standardeinstellung \"%s\" anstatt" #: ../src/defaults.c:1332 #, c-format msgid "wrong option value for key \"%s\". Should be one of %s" msgstr "falscher Eigenschaftenwert für Schlüssel \"%s\". Wert aus %s erwartet" #: ../src/defaults.c:1371 #, c-format msgid "can't convert \"%s\" to boolean for key \"%s\"" msgstr "\"%s\" konnte nicht in Boolean für Schlüssel \"%s\" konvertiert werden" #: ../src/defaults.c:1398 #, c-format msgid "can't convert \"%s\" to integer for key \"%s\"" msgstr "\"%s\" konnte nicht in Integer für Schlüssel \"%s\" konvertiert werden" #: ../src/defaults.c:1435 #, c-format msgid "Incorrect number of elements in array for key \"%s\"." msgstr "Falsche Anzahl von Argumenten für Schlüssel \"%s\"" #: ../src/defaults.c:1449 #, c-format msgid "Wrong value for key \"%s\". Should be Coordinate." msgstr "Falscher Wert für Schlüssel \"%s\". Koordinaten erwartet." #: ../src/defaults.c:1463 #, c-format msgid "can't convert array to integers for \"%s\"." msgstr "Feld konnte nicht in Integer für \"%s\" konvertiert werden." #: ../src/defaults.c:1651 ../src/defaults.c:1681 ../src/defaults.c:1697 #: ../src/defaults.c:1726 ../src/defaults.c:1748 ../src/defaults.c:1799 #: ../src/defaults.c:1838 ../src/defaults.c:1875 ../src/defaults.c:1891 #, c-format msgid "\"%s\" is not a valid color name" msgstr "\"%s\" ist kein gültiger Farbname" #: ../src/defaults.c:1663 ../src/defaults.c:1714 msgid "bad number of arguments in gradient specification" msgstr "falsche Anzahl von Argumenten in Farbverlaufsbeschreibung" #: ../src/defaults.c:1772 msgid "too few arguments in multicolor gradient specification" msgstr "zuwenig Argumente in Mehrfarbverlaufsbeschreibung" #: ../src/defaults.c:1864 msgid "bad number of arguments in textured gradient specification" msgstr "falsche Anzahl von Argumenten in Texturverlaufsbeschreibung" #: ../src/defaults.c:1907 #, c-format msgid "bad opacity value for tgradient texture \"%s\". Should be [0..255]" msgstr "falscher Transparenzwert für Textur \"%s\". [0..255] erwartet." #: ../src/defaults.c:1966 #, c-format msgid "could not initialize library %s" msgstr "Bibliothek %s konnte nicht initialisiert werden" #: ../src/defaults.c:1969 #, c-format msgid "could not find function %s::%s" msgstr "Funktion %s::%s konnte nicht gefunden werden" #: ../src/defaults.c:1976 #, c-format msgid "invalid texture type %s" msgstr "ungültiger Texturtyp %s" #: ../src/defaults.c:2018 #, c-format msgid "Error in texture specification for key \"%s\"" msgstr "fehlerhafte Texturbeschreibung für Schlüssel \"%s\"" #: ../src/defaults.c:2063 msgid "Wrong type for workspace background. Should be a texture type." msgstr "Falscher Typ für Arbeitsflächen-Hintergrund. Textur erwartet." #: ../src/defaults.c:2109 #, c-format msgid "Wrong type for background of workspace %i. Should be a texture." msgstr "Falscher Typ für Arbeitsflächen-Hintergrund %i. Textur erwartet." #: ../src/defaults.c:2148 msgid "could not load any usable font!!!" msgstr "keine brauchbaren Schriften konnten geladen werden!!!" #: ../src/defaults.c:2171 #, c-format msgid "could not get color for key \"%s\"" msgstr "Farbe für Schlüssel \"%s\" konnte nicht ermittelt werden" #: ../src/defaults.c:2223 ../src/rootmenu.c:447 #, fuzzy, c-format msgid "%s: invalid key modifier \"%s\"" msgstr "%s: ungültiger Schlüsselmodifikator \"%s\"" #: ../src/defaults.c:2235 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\"" msgstr "%s: ungültiges Tastaturkürzel \"%s\"" #: ../src/defaults.c:2241 #, c-format msgid "%s:invalid key in shortcut \"%s\"" msgstr "%s: ungültige Taste in Kürzel \"%s\"" #: ../src/defaults.c:2263 #, c-format msgid "%s: modifier key %s is not valid" msgstr "%s: ungültige Tastenmodifikator %s" #: ../src/defaults.c:2370 #, c-format msgid "failed to open bitmap file \"%s\"" msgstr "Bitmap-Datei \"%s\" konnte nicht geladen werden" #: ../src/defaults.c:2373 #, c-format msgid "\"%s\" is not a valid bitmap file" msgstr "\"%s\" ist keine gültige Bitmap-Datei" #: ../src/defaults.c:2376 #, c-format msgid "out of memory reading bitmap file \"%s\"" msgstr "zuwenig Speicher beim Lesen der Bitmap \"%s\"" #: ../src/defaults.c:2414 ../src/defaults.c:2447 msgid "bad number of arguments in cursor specification" msgstr "falsche Anzahl von Argumente in Mauszeigerbeschreibung" #: ../src/defaults.c:2430 #, c-format msgid "unknown builtin cursor name \"%s\"" msgstr "unbekannter interner Mauszeiger \"%s\"" #: ../src/defaults.c:2457 ../src/defaults.c:2469 #, c-format msgid "could not find cursor bitmap file \"%s\"" msgstr "Bitmap-Datei \"%s\" konnte nicht geladen werden" #: ../src/defaults.c:2510 #, c-format msgid "Error in cursor specification for key \"%s\"" msgstr "Fehler in Mauszeigerbeschreibung für Schlüssel \"%s\"" #: ../src/defaults.c:2585 msgid "could not render texture for icon background" msgstr "Textur für Symbolhintergrund konnte nicht angezeigt werden" #: ../src/defaults.c:3121 ../src/defaults.c:3190 #, c-format msgid "Invalid arguments for option \"%s\"" msgstr "Falsche Argument für Option \"%s\"" #: ../src/defaults.c:3127 ../src/defaults.c:3196 #, c-format msgid "Could not find image \"%s\" for option \"%s\"" msgstr "Bild \"%s\" aus Eigenschaft \"%s\" konnte nicht gefunden werden" #: ../src/defaults.c:3132 ../src/defaults.c:3204 #, c-format msgid "Could not load image \"%s\" for option \"%s\"" msgstr "Bild \"%s\"aus Eigenschaft \"%s\" konnte nicht geladen werden" #: ../src/defaults.c:3142 msgid "Invalid split sizes for switch panel back image." msgstr "Ungültige Unterteilungsangaben für switch panel-Hintergrundbild." #: ../src/defaults.c:3211 #, c-format msgid "Invalid number of arguments for option \"%s\"" msgstr "Falsche Anzahl von Argumente für Option \"%s\"" #: ../src/dialog.c:128 msgid "Save workspace state" msgstr "Sitzung speichern" #: ../src/dialog.c:410 ../src/dialog.c:471 ../src/dialog.c:982 #: ../src/dock.c:507 ../src/dockedapp.c:385 ../src/rootmenu.c:186 #: ../src/rootmenu.c:233 msgid "Cancel" msgstr "Abbrechen" #: ../src/dialog.c:563 msgid "Could not open directory \"%s\":\n%s" msgstr "Verzeichnis konnte nicht geöffnet werden \"%s\":\n%s" #: ../src/dialog.c:613 msgid "Could not load image file " msgstr "Bilddatei konnte nicht geöffnet werden" #: ../src/dialog.c:909 msgid "Directories" msgstr "Verzeichnisse" #: ../src/dialog.c:918 msgid "Icons" msgstr "Symbole" #: ../src/dialog.c:951 msgid "Preview" msgstr "Vorschau" #: ../src/dialog.c:964 msgid "File Name:" msgstr "Dateiname:" #: ../src/dialog.c:988 msgid "Choose File" msgstr "Datei auswählen" #: ../src/dialog.c:1007 ../src/dialog.c:1009 msgid "Icon Chooser" msgstr "Symbol-Wähler" #: ../src/dialog.c:1192 msgid "Window Manager for X" msgstr "Windowmanager für X" #: ../src/dialog.c:1194 #, c-format msgid "Version %s" msgstr "Version %s" #: ../src/dialog.c:1215 #, c-format msgid "Using visual 0x%x: %s %ibpp " msgstr "Benutze Visual 0x%x %s %ibpp " #: ../src/dialog.c:1222 msgid "(32 thousand colors)\n" msgstr "(32.000 Farben)\n" #: ../src/dialog.c:1225 msgid "(64 thousand colors)\n" msgstr "(64.000 Farben)\n" #: ../src/dialog.c:1229 msgid "(16 million colors)\n" msgstr "(16 Millionen Farben)\n" #: ../src/dialog.c:1232 #, c-format msgid "(%d colors)\n" msgstr "(%d Farben)\n" #: ../src/dialog.c:1241 #, c-format msgid "Total allocated memory: %i kB. Total memory in use: %i kB.\n" msgstr "" "Gesamter belegter Speicher: %i kB. Gesamter benutzter Speicher: %i kB.\n" #: ../src/dialog.c:1283 msgid "Image formats: " msgstr "Grafikformate: " #: ../src/dialog.c:1255 msgid "" "\n" "Additional support for: " msgstr "" "\n" "Zusätzliche Unterstützung für: " #: ../src/dialog.c:1270 msgid " and " msgstr " und " #: ../src/dialog.c:1280 msgid "\n" msgstr "" #: ../src/dialog.c:1282 msgid "Solaris " msgstr "" #: ../src/dialog.c:1284 msgid "Xinerama: " msgstr "" #: ../src/dialog.c:1316 msgid "Info" msgstr "Info" #: ../src/dialog.c:1417 msgid "" " Window Maker 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.\n" "\n" " Window Maker 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.\n" "\n" " You should have received a copy of the GNU General Public License along " "with this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin Street, Fifth Floor, Boston, MA02110-1301 USA." msgstr "" #: ../src/dialog.c:1415 msgid "Legal" msgstr "Rechtliches" #: ../src/dialog.c:1558 msgid "cannot open connection for crashing dialog panel. Aborting." msgstr "Verbindung zum Absturz-Dialog konnte nicht erstellt werden. Abbruch." #: ../src/dialog.c:1584 msgid "Fatal error" msgstr "Fataler Fehler" #: ../src/dialog.c:1594 #, c-format msgid "Window Maker received signal %i." msgstr "Window Maker erhielt Signal %i" #: ../src/dialog.c:1602 msgid "" " This fatal error occured probably due to a bug. Please fill the included " "BUGFORM and report it to %s." msgstr "" " Dieser fatale Fehler trat möglicherweise wegen eines Bugs auf. Bitte füllen " "Sie die mitgelieferte BUGFORM aus und schicken Sie sie an %s." #: ../src/dialog.c:1609 msgid "What do you want to do now?" msgstr "Was möchten Sie jetzt tun?" #: ../src/dialog.c:1615 msgid "Select action" msgstr "Aktion auswählen" #: ../src/dialog.c:1616 msgid "Abort and leave a core file" msgstr "Abbrechen und Core-Datei hinterlassen" #: ../src/dialog.c:1617 msgid "Restart Window Maker" msgstr "Window Maker neustarten" #: ../src/dialog.c:1618 msgid "Start alternate window manager" msgstr "Anderen Windowmanager starten" #: ../src/dialog.c:1783 msgid "" "Window Maker is part of the GNUstep project.\n" "The GNUstep project aims to create a free\n" "implementation of the OpenStep(tm) specification\n" "which is a object-oriented framework for\n" "creating advanced graphical, multi-platform\n" "applications. Additionally, a development and\n" "user desktop environment will be created on top\n" "of the framework. For more information about\n" "GNUstep, please visit: www.gnustep.org" msgstr "" "Window Maker ist Teil des GNUstep-Projektes.\n" "Das GNUstep-Projekt hat sich zum Ziel gesetzt,\n" "eine freie Implementierung von OpenStep(tm), einem\n" "objektorientierten Framework für grafische Multiplattform-\n" "anwendungen, zu erstellen. Dazu werden eine Ent-\n" "wicklungs- und Arbeitsumgebung mit dem Framework\n" "erstellt. Für weitere Informationen zu GNUstep besuchen\n" "sie bitte www.gnustep.org" #: ../src/dialog.c:1806 msgid "About GNUstep" msgstr "Über GNUStep" #: ../src/dock.c:178 #, c-format msgid "Type the name for workspace %i:" msgstr "Geben Sie den Namen der Arbeitsfläche %i ein:" #: ../src/dock.c:179 ../src/dock.c:1037 ../src/dock.c:1039 ../src/dock.c:3174 msgid "Rename Workspace" msgstr "Arbeitsfläche umbenennen" #: ../src/dock.c:473 ../src/dock.c:480 msgid "Warning" msgstr "Warnung" #: ../src/dock.c:474 msgid "" "Some icons cannot be made omnipresent. Please make sure that no other icon " "is docked in the same positions on the other workspaces and the Clip is not " "full in some workspace." msgstr "" "Einige Symbole konnten nicht haftend gemacht werden. Bitte stellen Sie " "sicher, dass kein anderes Symbol auf anderen Arbeitflächen an der gleichen " "Position andockt und der Clip in keiner Arbeitsfläche voll ist." #: ../src/dock.c:481 msgid "" "Icon cannot be made omnipresent. Please make sure that no other icon is " "docked in the same position on the other workspaces and the Clip is not full " "in some workspace." msgstr "" "Symbol konnte nicht haftend gemacht werden. Bitte stellen Sie sicher, dass " "kein anderes Symbol auf anderen Arbeitflächen an der gleichen Position klebt " "und der Clip in keiner Arbeitsfläche voll ist." #: ../src/dock.c:505 msgid "Workspace Clip" msgstr "Arbeitsflächen-Clip" #: ../src/dock.c:506 msgid "All selected icons will be removed!" msgstr "Alle ausgewählten Symbole werden entfernt!" #: ../src/dock.c:556 ../src/dock.c:1050 ../src/dock.c:1052 ../src/dock.c:3210 msgid "Keep Icon" msgstr "Symbol behalten" #: ../src/dock.c:557 ../src/dock.c:1966 ../src/dock.c:2096 msgid "Type the command used to launch the application" msgstr "Geben Sie den Befehl zum Starten der Anwendung ein" #: ../src/dock.c:876 #, c-format msgid "could not launch application %s\n" msgstr "Anwendung %s konnte nicht gestartet werden\n" #: ../src/dock.c:927 msgid "could not create workspace submenu for Clip menu" msgstr "Arbeitsflächen-Untermenü für Clip konnte nicht erstellt werden" #: ../src/dock.c:982 msgid "could not create options submenu for Clip menu" msgstr "Eigenschaften-Menü für Clip konnte nicht erstellt werden" #: ../src/dock.c:986 ../src/dock.c:1027 msgid "Keep on Top" msgstr "Immer oben" #: ../src/dock.c:991 msgid "Collapsed" msgstr "Zusammengefaltet" #: ../src/dock.c:996 msgid "Autocollapse" msgstr "Automatisch zusammenfalten" #: ../src/dock.c:1001 msgid "Autoraise" msgstr "Automatisch oben" #: ../src/dock.c:1006 msgid "Autoattract Icons" msgstr "Symbole automatisch anziehen" #: ../src/dock.c:1032 msgid "Clip Options" msgstr "Clip-Optionen" #: ../src/dock.c:1041 msgid "Selected" msgstr "Ausgewählt" #: ../src/dock.c:1046 ../src/dock.c:1048 ../src/dock.c:3201 msgid "Select All Icons" msgstr "Alle Symbole auswählen" #: ../src/dock.c:1054 ../src/dock.c:1056 ../src/dock.c:3218 msgid "Move Icon To" msgstr "Verschiebe Symbol nach..." #: ../src/dock.c:1061 ../src/dock.c:1063 ../src/dock.c:3229 msgid "Remove Icon" msgstr "Entferne Symbol" #: ../src/dock.c:1065 msgid "Attract Icons" msgstr "Symbole anziehen" #: ../src/dock.c:1068 msgid "Launch" msgstr "Ausführen" #: ../src/dock.c:1076 msgid "Settings..." msgstr "Einstellungen..." #: ../src/dock.c:1405 ../src/dock.c:1505 #, c-format msgid "bad value in docked icon state info %s" msgstr "falscher Wert für Statusinfo %s des angedockten Symbols" #: ../src/dock.c:1512 #, c-format msgid "bad value in docked icon position %i,%i" msgstr "falscher Wert für Position eines angedockten Symbols: %i,%i" #: ../src/dock.c:1531 #, c-format msgid "bad value in dock state info:%s" msgstr "falscher Wert in Dock-Statusinfo: %s" #: ../src/dock.c:1765 msgid "there are too many icons stored in dock. Ignoring what doesn't fit" msgstr "zu viele Symbole im Dock, überzählige werden ignoriert" #. icon->forced_dock = 1; #: ../src/dock.c:1965 ../src/dock.c:2095 msgid "Dock Icon" msgstr "Dock-Symbol" #: ../src/dock.c:3096 #, c-format msgid "Could not execute command \"%s\"" msgstr "Befehl \"%s\" konnte nicht ausgeführt werden" #: ../src/dock.c:3180 msgid "Toggle Omnipresent" msgstr "Haftend ein/aus" #: ../src/dock.c:3185 ../src/winmenu.c:387 ../src/winspector.c:1291 msgid "Omnipresent" msgstr "Haftend" #: ../src/dock.c:3199 msgid "Unselect All Icons" msgstr "Alle Symbole abwählen" #: ../src/dock.c:3208 msgid "Keep Icons" msgstr "Symbole behalten" #: ../src/dock.c:3216 msgid "Move Icons To" msgstr "Verschiebe Symbole nach" #: ../src/dock.c:3227 msgid "Remove Icons" msgstr "Symbole entfernen" #: ../src/dock.c:3257 msgid "Bring Here" msgstr "Hierher holen" #: ../src/dockedapp.c:135 #, c-format msgid "could not find icon %s, used in a docked application" msgstr "Symbol %s für gedockte Anwendung konnte nicht gefunden" #: ../src/dockedapp.c:208 #, c-format msgid "Could not open specified icon file: %s" msgstr "Symboldatei %s konnte nicht geöffnet werden" #: ../src/dockedapp.c:210 msgid "Ignore" msgstr "Ignorieren" #: ../src/dockedapp.c:302 msgid "Start when Window Maker is started" msgstr "Autostart" #: ../src/dockedapp.c:307 msgid "Lock (prevent accidental removal)" msgstr "Festhalten (kein versehentliches Entfernen)" #: ../src/dockedapp.c:311 msgid "Application path and arguments" msgstr "Anwendungspfad und -argumente" #: ../src/dockedapp.c:322 msgid "Command for middle-click launch" msgstr "Befehl für Klick mit mittlerer Maustaste" #: ../src/dockedapp.c:334 #, c-format msgid "%s will be replaced with current selection" msgstr "%s wird durch die aktuelle Auswahl ersetzt" #: ../src/dockedapp.c:338 msgid "Command for files dropped with DND" msgstr "Befehl für per DND-Operationen" #: ../src/dockedapp.c:350 #, c-format msgid "%d will be replaced with the file name" msgstr "%d wird durch den Dateinamen ersetzt" #: ../src/dockedapp.c:353 msgid "DND support was not compiled in" msgstr "keine einkompilierte DND-Unterstützung" #: ../src/dockedapp.c:358 msgid "Icon Image" msgstr "Symbol" #: ../src/dockedapp.c:369 ../src/winspector.c:1429 msgid "Browse..." msgstr "Suchen..." #: ../src/dockedapp.c:427 msgid "Docked Application Settings" msgstr "Einstellungen für gedockte Anwendungen" #: ../src/framewin.c:598 ../src/framewin.c:690 ../src/menu.c:413 #: ../src/texture.c:551 #, c-format msgid "could not render texture: %s" msgstr "Textur %s konnte nicht angezeigt werden" #: ../src/framewin.c:621 ../src/framewin.c:631 ../src/framewin.c:647 #: ../src/framewin.c:658 ../src/framewin.c:665 ../src/framewin.c:672 #: ../src/icon.c:327 ../src/menu.c:440 #, c-format msgid "error rendering image:%s" msgstr "Fehler beim Anzeigen des Bildes: %s" #: ../src/framewin.c:718 #, c-format msgid "error rendering image: %s" msgstr "Fehler beim Anzeigen des Bildes: %s" #: ../src/icon.c:219 ../src/wdefaults.c:423 #, c-format msgid "error loading image file \"%s\": %s" msgstr "Fehler beim Laden der Bilddatei \"%s\": %s" #: ../src/icon.c:458 ../src/icon.c:467 #, c-format msgid "could not create directory %s" msgstr "Vezeichnis %s konnte nicht erstellt werden" #: ../src/icon.c:699 #, c-format msgid "could not find default icon \"%s\"" msgstr "Standardsymbol \"%s\" konnte nicht gefunden werden" #: ../src/icon.c:705 #, c-format msgid "could not load default icon \"%s\":%s" msgstr "Standardsymbol \"%s\" (%s) konnte nicht geöffnet werden" #: ../src/main.c:301 msgid "failed to restart Window Maker." msgstr "Window Maker-Neustart schlug fehl" #: ../src/main.c:304 #, c-format msgid "could not exec %s" msgstr "%s konnte nicht ausgeführt werden" #: ../src/main.c:342 msgid "Could not execute command: " msgstr "Befehl konnte nicht ausgeführt werden: " #: ../src/main.c:414 #, c-format msgid "%s aborted.\n" msgstr "%s wurde abgebrochen.\n" #: ../src/main.c:423 #, c-format msgid "Usage: %s [options]\n" msgstr "Benutzung: %s [Optionen]\n" #: ../src/main.c:424 msgid "The Window Maker window manager for the X window system" msgstr "Der Window Maker-Windowmanager für das X-Window System" #: ../src/main.c:426 msgid " -display host:dpy\tdisplay to use" msgstr " -display host:dpy\tverwendetes Display" #: ../src/main.c:428 msgid " --no-cpp \t\tdisable preprocessing of configuration files" msgstr " --no-cpp \t\tkein Präprozessieren der Konfigurationsdateien" #: ../src/main.c:430 msgid " --no-dock\t\tdo not open the application Dock" msgstr " --no-dock\t\tAnwendungsdock nicht öffnen" #: ../src/main.c:431 msgid " --no-clip\t\tdo not open the workspace Clip" msgstr " --no-clip\t\tArbeitsflächen-Clip nicht öffnen" #: ../src/main.c:432 msgid " --no-autolaunch\tdo not autolaunch applications" msgstr " --no-autolaunch\tkein Autostart von Anwendungen" #: ../src/main.c:433 msgid " --dont-restore\t\tdo not restore saved session" msgstr " --dont-restore\t\tgespeicherte Sitzung nicht wiederherstellen" #: ../src/main.c:435 msgid " --locale locale\tlocale to use" msgstr " --locale locale\tzu benutzende Lokalisierung" #: ../src/main.c:437 msgid "" " --create-stdcmap\tcreate the standard colormap hint in PseudoColor visuals" msgstr "" " --create-stdcmap\terstelle Hinweise für Standardfarben-Tabelle mit " "Pseudofarben" #: ../src/main.c:438 msgid " --visual-id visualid\tvisual id of visual to use" msgstr " --visual-id visualid\tID des zu benutzenden Visuals" #: ../src/main.c:439 msgid " --static\t\tdo not update or save configurations" msgstr " --static\t\tKonfiguration nicht ändern oder speichern" #: ../src/main.c:441 msgid " --synchronous\t\tturn on synchronous display mode" msgstr " --synchronous\t\tsnychronen Display-Modus einschalten" #: ../src/main.c:443 msgid " --version\t\tprint version and exit" msgstr " --version\t\tVersion anzeigen und beenden" #: ../src/main.c:444 msgid " --help\t\t\tshow this message" msgstr " --help\t\t\tdiese Nachricht anzeigen" #: ../src/main.c:455 #, 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-Verzeichnis (%s) konnte nicht gefunden werden.\n" "Stellen Sie sicher, dass sie Window Maker korrekt installiert und wmaker." "inst aufgerufen haben" #: ../src/main.c:459 #, c-format msgid "could not find user GNUstep directory (%s)." msgstr "GNUstep-Verzeichnis (%s) konnte nicht gefunden werden." #: ../src/main.c:462 msgid "" "There was an error while creating GNUstep directory, please make sure you " "have installed Window Maker correctly and run wmaker.inst" msgstr "" "Während der Erstellung der GNUstep-Verzeichnisses ist ein Fehler " "aufgetreten, Stellen Sie sicher, dass sie Window Maker korrekt installiert " "und wmaker.inst aufgerufen haben" #: ../src/main.c:465 #, c-format msgid "%s directory created with default configuration." msgstr "Verzeichnis %s wurde mit Standardkonfiguration erstellt" #: ../src/main.c:483 msgid "" "could not initialise an inotify instance. Changes to the defaults database " "will require a restart to take effect. Check your kernel!" msgstr "" #: ../src/main.c:494 #, c-format msgid "" "could not add an inotify watch on path\n" ".%s\n" "Changes to the defaults database will require a restart to take effect." msgstr "" #: ../src/main.c:516 ../src/main.c:521 #, c-format msgid "%s:could not execute initialization script" msgstr "%s:Initialisierungsskript konnte nicht ausgeführt werden" #: ../src/main.c:541 ../src/main.c:546 #, c-format msgid "%s:could not execute exit script" msgstr "%s: Beendigungsskript konnte nicht ausgeführt werden" #: ../src/main.c:621 ../src/main.c:709 ../src/main.c:716 ../src/main.c:723 #, c-format msgid "too few arguments for %s" msgstr "zuwenig Argumente für %s" #: ../src/main.c:727 #, c-format msgid "bad value for visualid: \"%s\"" msgstr "falscher Wert für Visual-ID: \"%s\"" #: ../src/main.c:736 #, c-format msgid "%s: invalid argument '%s'\n" msgstr "%s: falsches Argument '%s'\n" #: ../src/main.c:737 #, c-format msgid "Try '%s --help' for more information\n" msgstr "Versuchen Sie '%s --help' für mehr Informationen\n" #: ../src/main.c:770 msgid "X server does not support locale" msgstr "X-Server unterstützt gewählte Lokalisierung nicht" #: ../src/main.c:774 msgid "cannot set locale modifiers" msgstr "Lokalisierungs-Modifikator konnte nicht gesetzt werden" #: ../src/main.c:790 #, c-format msgid "could not open display \"%s\"" msgstr "Display \"%s\" konnte nicht geöffnet werden" #: ../src/menu.c:1177 msgid "could not grab keyboard" msgstr "Tastatur konnte nicht abfangen werden" #: ../src/menu.c:2389 #, fuzzy, c-format msgid "bad value in menus state info: %s" msgstr "falsche Werte in Menü-Statusinfo: %s" #: ../src/misc.c:62 #, c-format msgid "could not define value for %s for cpp" msgstr "Wert des Symbols %s für cpp konnte nicht definiert werden" #: ../src/misc.c:87 #, c-format msgid "could not get password entry for UID %i" msgstr "Passworteintrag für UID %i konnte nicht ermittelt werden" #: ../src/misc.c:111 #, c-format msgid "your machine is misconfigured. HOSTNAME is set to %s" msgstr "Ihr System ist falsch konfiguriert. HOSTNAME wird auf %s gesetzt." #: ../src/misc.c:116 #, c-format msgid "your machine is misconfigured. HOST is set to %s" msgstr "Ihr System ist falsch konfiguriert. HOST wird auf %s gesetzt." #: ../src/misc.c:598 ../src/misc.c:603 msgid "Program Arguments" msgstr "Programmargumente" #: ../src/misc.c:599 ../src/misc.c:604 msgid "Enter command arguments:" msgstr "Programmargumente eintragen" #: ../src/misc.c:648 ../src/misc.c:785 #, c-format msgid "out of memory during expansion of \"%s\"" msgstr "zuwenig Speicher bei der Expansion von \"%s\"" #: ../src/misc.c:701 msgid "out of memory during expansion of \"%w\"" msgstr "zuwenig Speicher bei der Expansion von \"%w\"" #: ../src/misc.c:718 msgid "out of memory during expansion of \"%W\"" msgstr "zuwenig Speicher bei der Expansion von \"%W\"" #: ../src/misc.c:735 #, c-format msgid "out of memory during expansion of \"%a\"" msgstr "zuwenig Speicher bei der Expansion von \"%a\"" #: ../src/misc.c:764 #, c-format msgid "out of memory during expansion of \"%d\"" msgstr "zuwenig Speicher bei der Expansion von \"%d\"" #: ../src/misc.c:778 msgid "selection not available" msgstr "keine Auswahl verfügbar" #: ../src/misc.c:820 ../src/misc.c:826 #, c-format msgid "bad window name value in %s state info" msgstr "falscher Fenstername in Statusinfo von %s" #: ../src/misc.c:1054 msgid "could not send message to background image helper" msgstr "Nachricht an Hintergrundbild-Anwendung konnte nicht gesendet werden" #: ../src/resources.c:42 #, c-format msgid "could not parse color \"%s\"" msgstr "Farbe \"%s\" konnte nicht geparst werden" #: ../src/resources.c:46 #, c-format msgid "could not allocate color \"%s\"" msgstr "Farbe \"%s\" konnte nicht erzeugt werden" #: ../src/rootmenu.c:185 ../src/rootmenu.c:186 msgid "Exit" msgstr "Beenden" #: ../src/rootmenu.c:186 msgid "Exit window manager?" msgstr "Windowmanager beenden?" #: ../src/rootmenu.c:231 msgid "Kill X session" msgstr "Töte X-Sitzung" #: ../src/rootmenu.c:232 msgid "" "Kill Window System session?\n" "(all applications will be closed)" msgstr "" "Windowsystem-Sitzung töten?\n" "(alle Anwendungen werden geschlossen)" #: ../src/rootmenu.c:460 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\" for entry %s" msgstr "%s: ungültiges Tastaturkürzel \"%s\" für Eintrag %s" #: ../src/rootmenu.c:468 #, c-format msgid "%s:invalid key in shortcut \"%s\" for entry %s" msgstr "%s: ungültige Taste in Kürzel \"%s\" für Eintrag %s" #: ../src/rootmenu.c:521 #, c-format msgid "%s: unmatched '\"' in menu file" msgstr "%s: fehlendes \" in Menüdatei" #: ../src/rootmenu.c:570 #, c-format msgid "%s: missing command" msgstr "%s: fehlender Befehl" #: ../src/rootmenu.c:600 #, c-format msgid "invalid OPEN_MENU specification: %s" msgstr "ungültige OPEN_MENU-Beschreibung: %s" #: ../src/rootmenu.c:649 #, c-format msgid "%s:could not stat menu" msgstr "%s: Menü konnte nicht erzeugt werden" #: ../src/rootmenu.c:657 #, c-format msgid "%s:could not stat menu:%s" msgstr "%s: Menü konnte nicht erzeugt werden: %s" #: ../src/rootmenu.c:673 #, c-format msgid "too many parameters in OPEN_MENU: %s" msgstr "zuviele Parameter in OPEN_MENU: %s" #: ../src/rootmenu.c:714 msgid "" "There are more than one WORKSPACE_MENU commands in the applications menu. " "Only one is allowed." msgstr "" "Im Anwendungsmenü ist mehr als ein WORKSPACE_MENU-Eintrag, aber nur einer " "ist erlaubt." #: ../src/rootmenu.c:745 msgid "" "There are more than one WINDOWS_MENU commands in the applications menu. Only " "one is allowed." msgstr "" "Im Anwendungsmenü ist mehr als ein WINDOWS_MENU-Eintrag, aber nur einer ist " "erlaubt." #: ../src/rootmenu.c:750 msgid "Window List" msgstr "Fenster-Liste" #: ../src/rootmenu.c:777 ../src/rootmenu.c:794 ../src/rootmenu.c:802 #, c-format msgid "%s:missing parameter for menu command \"%s\"" msgstr "%s: fehlender Parameter für Menübefehl \"%s\"" #: ../src/rootmenu.c:866 #, c-format msgid "%s:unknown command \"%s\" in menu config." msgstr "%s: unbekannter Befehl \"%s\" in Menükonfiguration" #: ../src/rootmenu.c:873 #, c-format msgid "%s:can't add shortcut for entry \"%s\"" msgstr "%s: Tastaturkürzel für Eintrag \"%s\" kann nicht hinzugefügt werden" #: ../src/rootmenu.c:1015 #, c-format msgid "%s:maximal line size exceeded in menu config: %s" msgstr "%s: überlange Zeilen in Menükonfiguration: %s" #: ../src/rootmenu.c:1036 ../src/rootmenu.c:1121 ../src/rootmenu.c:1218 #, c-format msgid "%s:missing command in menu config: %s" msgstr "%s: fehlender Befehl in Menükonfiguration: %s" #: ../src/rootmenu.c:1063 #, c-format msgid "%s:syntax error in menu file:END declaration missing" msgstr "%s: Syntaxfehler in Menüdatei: END-Schlüsselwort fehlt." #: ../src/rootmenu.c:1089 ../src/rootmenu.c:1184 msgid "could not make arguments for menu file preprocessor" msgstr "Argumente für Menüdatei-Präprozessort konnten nicht gesetzt werden" #: ../src/rootmenu.c:1095 ../src/rootmenu.c:1191 #, c-format msgid "%s:could not open/preprocess menu file" msgstr "%s: Menüdatei konnte nicht geöffnet/bearbeitet werden" #: ../src/rootmenu.c:1106 ../src/rootmenu.c:1203 #, c-format msgid "could not open menu file \"%s\": %s" msgstr "Menüdatei \"%s\" konnte nicht geöffnet werden: %s" #: ../src/rootmenu.c:1132 #, c-format msgid "%s:invalid menu file. MENU command is missing" msgstr "%s: ungültige Menüdatei: MENU-Befehl fehlt" #: ../src/rootmenu.c:1140 msgid "error reading preprocessed menu data" msgstr "Fehler beim Lesen der aufbereiteten Menüdaten" #: ../src/rootmenu.c:1229 #, c-format msgid "%s:no title given for the root menu" msgstr "%s: kein Titel für das Stammenü" #: ../src/rootmenu.c:1310 ../src/rootmenu.c:1382 ../src/rootmenu.c:1421 #, c-format msgid "out of memory while constructing directory menu %s" msgstr "zuwenig Speicher beim Erstellen des Verzeichnismenüs %s" #: ../src/rootmenu.c:1319 #, c-format msgid "%s:could not stat file \"%s\" in menu directory" msgstr "%s: Datei \"%s\" in Menü-Verzeichnis konnte nicht erstellt werden" #: ../src/rootmenu.c:1471 msgid "Commands" msgstr "Befehle" #: ../src/rootmenu.c:1474 msgid "Restart" msgstr "Neustart" #: ../src/rootmenu.c:1475 msgid "Exit..." msgstr "Beenden..." #: ../src/rootmenu.c:1514 #, c-format msgid "could not find menu file \"%s\" referenced in WMRootMenu" msgstr "Menüdatei \"%s\" aus WMRootMenu konnte nicht gefunden werden" #: ../src/rootmenu.c:1520 #, c-format msgid "could not access menu \"%s\" referenced in WMRootMenu" msgstr "auf Menüdatei \"%s\" aus WMRootMenu konnte nicht zugegriffen werden" #: ../src/rootmenu.c:1532 #, c-format msgid "" "using default menu file \"%s\" as the menu referenced in WMRootMenu could " "not be found " msgstr "Standard-Menüdatei \"%s\" aus WMRootMenu konnte nicht gefunden werden " #: ../src/rootmenu.c:1555 ../src/rootmenu.c:1629 #, c-format msgid "%s:format error in root menu configuration \"%s\"" msgstr "%s: Formatierungsfehler in Stammenü-Konfiguration \"%s\"" #: ../src/rootmenu.c:1706 msgid "" "The applications menu could not be loaded. Look at the console output for a " "detailed description of the errors." msgstr "" "Das Anwendungsmenü konnte nicht geladen werden. Für detaillierte " "Fehlerbeschreibungen bitte die Konsolenausgabe ansehen." #: ../src/screen.c:644 #, c-format msgid "could not initialize graphics library context: %s" msgstr "Kontext der Grafikbibliothek konnte nicht initialisiert werden: %s" #: ../src/screen.c:670 msgid "could not initialize WINGs widget set" msgstr "WINGs-Widgets konnten nicht initialisiert werden" #: ../src/screen.c:971 #, c-format msgid "could not save session state in %s" msgstr "Sitzung konnte nicht in %s gespeichert werden" #: ../src/session.c:152 ../src/wdefaults.c:559 ../src/winspector.c:413 #, c-format msgid "can't convert \"%s\" to boolean" msgstr "\"%s\" konnte nicht in Boolean konvertiert werden" #: ../src/stacking.c:76 msgid "could not get window list!!" msgstr "Konnte Fensterliste nicht erstellen!" #: ../src/startup.c:183 #, c-format msgid "internal X error: %s\n" msgstr "interner X-Fehler %s\n" #: ../src/startup.c:680 #, c-format msgid "icon size is configured to %i, but it's too small. Using 16, instead\n" msgstr "" "Symbolgröße ist eingestellt auf %i, dieser Wert ist zu klein. Neue Größe ist " "16\n" #: ../src/startup.c:707 msgid "XKB is not supported. KbdModeLock is automatically disabled." msgstr "XKB wird nicht unterstützt. KbdModeLock wird ausgeschaltet" #: ../src/startup.c:726 msgid "it seems that there is already a window manager running" msgstr "Es sieht aus, als ob schon ein anderer Windowmanager liefe." #: ../src/startup.c:732 #, c-format msgid "could not manage screen %i" msgstr "Konnte Bildschirm %i nicht ansprechen" #: ../src/startup.c:789 msgid "could not manage any screen" msgstr "kein Bildschirm konnte angesprochen werden" #: ../src/switchmenu.c:132 msgid "Windows" msgstr "Fenster" #: ../src/texture.c:303 ../src/texture.c:341 #, c-format msgid "image file \"%s\" used as texture could not be found." msgstr "als Textur benutztes Bild \"%s\" konnte nicht gefunden werden" #: ../src/texture.c:308 ../src/texture.c:346 #, c-format msgid "could not load texture pixmap \"%s\":%s" msgstr "Textur-Pixmap \"%s\" konnte nicht gefunden werden: %s" #: ../src/texture.c:403 #, c-format msgid "library \"%s\" cound not be opened." msgstr "Bibliothek \"%s\" konnte nicht geöffnet werden." #: ../src/texture.c:412 #, c-format msgid "function \"%s\" not found in library \"%s\"" msgstr "Funktion \"%s\" ist nicht in Bibliothek \"%s\" enthalten" #: ../src/texture.c:419 msgid "function textures not supported on this system, sorry." msgstr "Funktionstexturen werden von diesem System nicht unterstützt" #: ../src/texture.c:555 msgid "could not allocate image buffer" msgstr "Bildpuffer konnte nicht erstellt werden" #: ../src/wdefaults.c:417 #, c-format msgid "could not find icon file \"%s\"" msgstr "Symboldatei \"%s\" konnte nicht gefunden werden" #: ../src/window.c:2774 ../src/window.c:2927 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 "" "Es scheint, dass NumLock, ScrollLock oder ähnliche Tasten aktiviert sind.\n" "Schalten Sie diese aus, da sonst einige Mausaktionen oder Tastaturkürzel " "nicht funktionieren." #: ../src/winmenu.c:121 msgid "" "This will kill the application.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" "Applikation wird getötet,\n" "dabei gehen alle ungespeicherten Daten verloren.\n" "Bitte bestätigen." #: ../src/winmenu.c:252 ../src/winmenu.c:261 msgid "Set Shortcut" msgstr "Setze Kürzel" #: ../src/winmenu.c:335 ../src/winmenu.c:375 msgid "could not create submenu for window menu" msgstr "Untermenü für Fenstermenü konnte nicht erstellt werden" #: ../src/winmenu.c:379 msgid "Keep on top" msgstr "Immer oben" #: ../src/winmenu.c:383 msgid "Keep at bottom" msgstr "Immer unten" #. #. * 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:407 ../src/winmenu.c:536 msgid "Maximize" msgstr "Maximieren" #: ../src/winmenu.c:415 ../src/winmenu.c:520 msgid "Miniaturize" msgstr "Minimieren" #: ../src/winmenu.c:423 ../src/winmenu.c:554 msgid "Shade" msgstr "Aufrollen" #: ../src/winmenu.c:439 msgid "Resize/Move" msgstr "Größe/ Position ändern" #: ../src/winmenu.c:447 msgid "Select" msgstr "Auswählen" #: ../src/winmenu.c:455 msgid "Move To" msgstr "Bewegen nach..." #: ../src/winmenu.c:460 msgid "Attributes..." msgstr "Eigenschaften" #: ../src/winmenu.c:462 msgid "Options" msgstr "Optionen" #. #. entry = wMenuAddCallback(menu, _("Select Shortcut"), NULL, NULL); #. wMenuEntrySetCascade(menu, entry, makeMakeShortcutMenu(scr)); #. #: ../src/winmenu.c:470 msgid "Close" msgstr "Schließen" #: ../src/winmenu.c:514 msgid "Deminiaturize" msgstr "Wiederherstellen" #: ../src/winmenu.c:530 msgid "Unmaximize" msgstr "Ursprüngliche Größe" #: ../src/winmenu.c:548 msgid "Unshade" msgstr "Abrollen" #: ../src/winspector.c:353 #, c-format msgid "Could not find icon \"%s\" specified for this window" msgstr "Symbol \"%s\" für dieses Fenster konnte nicht gefunden werden" #: ../src/winspector.c:368 #, c-format msgid "Could not open specified icon \"%s\":%s" msgstr "Symbol \"%s\" konnte nicht geöffnet werden: %s" #: ../src/winspector.c:1056 #, c-format msgid "Inspecting %s.%s" msgstr "Untersuchen von %s.%s" #: ../src/winspector.c:1079 msgid "Click in the window you wish to inspect." msgstr "Klicken Sie auf das Fenster, das untersucht werden soll." #: ../src/winspector.c:1111 msgid "" "The configuration will apply to all\n" "windows that have their WM_CLASS\n" "property set to the above selected\n" "name, when saved." msgstr "" "Beim Speichern wirkt sich diese\n" "Konfiguration auf alle Fenster aus,\n" "deren WM_CLASS-Eigenschaft den\n" "obigen Wert hat." #: ../src/winspector.c:1136 msgid "Save" msgstr "Speichern" #: ../src/winspector.c:1144 msgid "Apply" msgstr "Anwenden" #: ../src/winspector.c:1150 msgid "Reload" msgstr "Neu laden" #: ../src/winspector.c:1159 ../src/winspector.c:1169 msgid "Window Specification" msgstr "Fensterbeschreibung" #: ../src/winspector.c:1160 msgid "Window Attributes" msgstr "Fenstereigenschaften" #: ../src/winspector.c:1161 msgid "Advanced Options" msgstr "Erweiterte Optionen" #: ../src/winspector.c:1162 msgid "Icon and Initial Workspace" msgstr "Symbol und Start-Arbeitsfläche" #: ../src/winspector.c:1163 msgid "Application Specific" msgstr "Anwendungsspezifisches" #: ../src/winspector.c:1176 msgid "Defaults for all windows" msgstr "Standards für alle Fenster" #: ../src/winspector.c:1229 msgid "Select window" msgstr "Fenster auswählen" #: ../src/winspector.c:1242 msgid "Attributes" msgstr "Eigenschaften" #: ../src/winspector.c:1253 msgid "Disable titlebar" msgstr "Keine Titelleiste" #: ../src/winspector.c:1255 msgid "" "Remove the titlebar of this window.\n" "To access the window commands menu of a window\n" "without it's titlebar, press Control+Esc (or the\n" "equivalent shortcut, if you changed the default\n" "settings)." msgstr "" "Entfernen der Titelleiste für dieses Fenster.\n" "Für das Fenstermenü drücken Sie bitte Strg+Esc\n" "bzw. die von Ihnen eingestellte Tastenkombination." #: ../src/winspector.c:1261 msgid "Disable resizebar" msgstr "Keine Leiste für Größenänderung" #: ../src/winspector.c:1263 msgid "Remove the resizebar of this window." msgstr "Entfernen der Leiste zum Ändern der Größe bei diesem Fenster." #: ../src/winspector.c:1266 msgid "Disable close button" msgstr "Keine Schließen-Schaltfläche" #: ../src/winspector.c:1268 msgid "Remove the `close window' button of this window." msgstr "Entfernen der 'Fenster schließen'-Schaltfläche für dieses Fensters" #: ../src/winspector.c:1271 msgid "Disable miniaturize button" msgstr "Keine Minimieren-Schaltfläche" #: ../src/winspector.c:1273 msgid "Remove the `miniaturize window' button of the window." msgstr "Entfernen der 'Fenster minimieren'-Schaltfläche für dieses Fenster" #: ../src/winspector.c:1276 msgid "Disable border" msgstr "Kein Rand" #: ../src/winspector.c:1278 msgid "Remove the 1 pixel black border around the window." msgstr "Entfernen des einen Pixel breiten schwarzen Randes um das Fenster." #: ../src/winspector.c:1281 msgid "Keep on top (floating)" msgstr "Immer oben" #: ../src/winspector.c:1283 msgid "" "Keep the window over other windows, not allowing\n" "them to cover it." msgstr "" "Dieses Fenster immer oben halten, sodass es nicht\n" "von anderen Fenstern verdeckt wird" #: ../src/winspector.c:1286 msgid "Keep at bottom (sunken)" msgstr "Immer unten" #: ../src/winspector.c:1288 msgid "Keep the window under all other windows." msgstr "Dieses Fenster unter allen anderen Fenster platzieren" #: ../src/winspector.c:1293 msgid "Make window present in all workspaces." msgstr "Dieses Fenster auf allen Arbeitsflächen sichtbar machen" #: ../src/winspector.c:1296 msgid "Start miniaturized" msgstr "Minimiert starten" #: ../src/winspector.c:1298 msgid "" "Make the window be automatically miniaturized when it's\n" "first shown." msgstr "Dieses Fenster beim Start automatisch minimieren" #: ../src/winspector.c:1301 msgid "Start maximized" msgstr "Maximiert starten" #: ../src/winspector.c:1303 msgid "" "Make the window be automatically maximized when it's\n" "first shown." msgstr "Dieses Fenster beim Start automatisch maximieren" #: ../src/winspector.c:1306 msgid "Full screen maximization" msgstr "Vollbild-Maximierung" #: ../src/winspector.c:1308 msgid "" "Make the window use the whole screen space when it's\n" "maximized. The titlebar and resizebar will be moved\n" "to outside the screen." msgstr "" "Dieses Fenster beim Maximieren über den ganzen Bildschirm\n" "ausdehnen, Titel- und Größenleiste befinden sich dann außerhalb\n" "des Bildschirms." #: ../src/winspector.c:1324 msgid "Advanced" msgstr "Erweitert" #: ../src/winspector.c:1341 msgid "Do not bind keyboard shortcuts" msgstr "Keine Tastatur-Kürzel abfangen" #: ../src/winspector.c:1343 msgid "" "Do not bind keyboard shortcuts from Window Maker\n" "when this window is focused. This will allow the\n" "window to receive all key combinations regardless\n" "of your shortcut configuration." msgstr "" "Keine globalen Window Maker-Tastaturkürzel abfangen,\n" "wenn dieses Fenster maximiert ist. Dadurch erhält dieses\n" "Fenster alle Tastendrücke." #: ../src/winspector.c:1349 msgid "Do not bind mouse clicks" msgstr "Kein Mausklicks abfangen" #: ../src/winspector.c:1351 #, fuzzy msgid "" "Do not bind mouse actions, such as `Alt'+drag\n" "in the window (when Alt is the modifier you have\n" "configured)." msgstr "" "Für dieses Fenster keine Mausaktionen abfangen,\n" "zum Beispiel Alt+Ziehen." #: ../src/winspector.c:1355 msgid "Do not show in the window list" msgstr "Nicht in der Fensterliste zeigen" #: ../src/winspector.c:1357 msgid "Do not list the window in the window list menu." msgstr "Dieses Fenster nicht in der Fensterliste aufführen." #: ../src/winspector.c:1360 msgid "Do not let it take focus" msgstr "Keinen Fokus erlauben" #: ../src/winspector.c:1362 msgid "" "Do not let the window take keyboard focus when you\n" "click on it." msgstr "Diesem Fenster beim Klick nicht den Tastaturfokus geben." #: ../src/winspector.c:1365 msgid "Keep inside screen" msgstr "Immer innerhalb des Bildschirmes" #: ../src/winspector.c:1367 msgid "" "Do not allow the window to move itself completely\n" "outside the screen. For bug compatibility.\n" msgstr "" "Diesem Fenster nicht erlauben, ganz aus dem Bildschirm\n" "bewegt zu werden.\n" #: ../src/winspector.c:1371 msgid "Ignore 'Hide Others'" msgstr "Ignoriere 'Andere verstecken'" #: ../src/winspector.c:1373 msgid "" "Do not hide the window when issuing the\n" "`HideOthers' command." msgstr "Beim 'Andere verstecken'-Befehl dieses Fenster auslassen." #: ../src/winspector.c:1376 msgid "Ignore 'Save Session'" msgstr "'Sitzung speichern' ignorieren" #: ../src/winspector.c:1378 msgid "" "Do not save the associated application in the\n" "session's state, so that it won't be restarted\n" "together with other applications when Window Maker\n" "starts." msgstr "" "Die Anwendung dieses Fensters nicht nicht\n" "im Sitzungszustand speichern, sodass sie beim\n" "Start von Window Maker nicht gestartet wird." #: ../src/winspector.c:1383 msgid "Emulate application icon" msgstr "Anwendungssymbol ignorieren" #: ../src/winspector.c:1385 msgid "" "Make this window act as an application that provides\n" "enough information to Window Maker for a dockable\n" "application icon to be created." msgstr "" "Dieses Fenster so verhalten lassen, als wenn\n" "es genügend Informationen für eine dockbare\n" "Anwendung an Window Maker liefern würde." #: ../src/winspector.c:1390 msgid "Don't focus across workspaces" msgstr "Kein Arbeitsflächenwechsel bei Fokus" #: ../src/winspector.c:1392 msgid "" "Do not allow Window Maker to switch workspace to satisfy\n" "a focus request (useful e.g. in the case of a multiple-tab\n" "firefox opening in a different workspace)." msgstr "Window Maker nicht erlauben, die Arbeitsfläche zu wechseln,\n" "um einen Fokus Anforderung zu erfüllen (nützlich z.B. beim Öffnen\n" "einer Firefox Anwendung mit mehreren Tabs in einer anderer Arbeitfläche)." #: ../src/winspector.c:1398 msgid "Disable language button" msgstr "Keine Sprachen-Schaltfläche" #: ../src/winspector.c:1400 msgid "Remove the `toggle language' button of the window." msgstr "Entfern der 'Wechsle Sprache'-Schaltfläche bei diesem Fenster" #: ../src/winspector.c:1417 msgid "Miniwindow Image" msgstr "Minifenster-Bild" #: ../src/winspector.c:1444 msgid "Icon filename:" msgstr "Symboldateiname" #: ../src/winspector.c:1455 msgid "Ignore client supplied icon" msgstr "Ignoriere zur Verfügung gestelltes Symbol" #: ../src/winspector.c:1461 msgid "Initial Workspace" msgstr "Start-Arbeitsfläche" #: ../src/winspector.c:1463 msgid "The workspace to place the window when it's first shown." msgstr "Die Arbeitsfläche, auf dem das Fenster beim Start erscheinen soll" #: ../src/winspector.c:1469 msgid "Nowhere in particular" msgstr "Keine Angabe" #: ../src/winspector.c:1486 msgid "Application Attributes" msgstr "Anwendungseigenschaften" #: ../src/winspector.c:1497 msgid "Start hidden" msgstr "Versteckt starten" #: ../src/winspector.c:1499 msgid "Automatically hide application when it's started." msgstr "Anwendung beim Start automatisch verstecken" #: ../src/winspector.c:1502 msgid "No application icon" msgstr "Kein Anwendungssymbol" #: ../src/winspector.c:1504 msgid "" "Disable the application icon for the application.\n" "Note that you won't be able to dock it anymore,\n" "and any icons that are already docked will stop\n" "working correctly." msgstr "" "Ausstellen des Anwendungssymbols für diese Anwendung.\n" "Beachten Sie, dass sich diese Anwendung dann nicht mehr\n" "docken lässt und bereits gedockte Symbole nicht mehr korrekt\n" "arbeiten." #: ../src/winspector.c:1510 msgid "Shared application icon" msgstr "Geteiltes Anwendungssymbol" #: ../src/winspector.c:1512 msgid "" "Use a single shared application icon for all of\n" "the instances of this application.\n" msgstr "" "Für alle Instanzen dieser Anwendung ein\n" "einziges Anwendungssymbol verwenden.\n" #: ../src/workspace.c:97 ../src/workspace.c:98 ../src/workspace.c:682 #, c-format msgid "Workspace %i" msgstr "Arbeitsfläche: %i" #: ../src/workspace.c:726 msgid "Workspaces" msgstr "Arbeitsflächen" #: ../src/workspace.c:728 msgid "could not create Workspace menu" msgstr "Arbeitsflächenmenü konnte nicht erstellt werden" #: ../src/workspace.c:735 msgid "New" msgstr "Neu" #: ../src/workspace.c:736 msgid "Destroy Last" msgstr "Letzten zerstören" WindowMaker-0.95.9/po/pl.po0000644000175000017500000011105113431646201012356 00000000000000# 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 , 1998. # msgid "" msgstr "" "Project-Id-Version: WindowMaker 0.80.2\n" "POT-Creation-Date: 1999-01-24 14:05+0100\n" "PO-Revision-Date: 2003-04-15 20:21+0200\n" "Last-Translator: Piotr Dembiński \n" "Language-Team: Polish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\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 "Błąd" #: ../src/appicon.c:510 msgid "Could not open specified icon file" msgstr "Nie można otworzyć pliku z ikoną" #: ../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/appicon.c:532 ../src/dock.c:272 ../src/winmenu.c:123 msgid "Kill Application" msgstr "Zabij Aplikację" #: ../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/appicon.c:534 ../src/dock.c:274 ../src/winmenu.c:125 msgid "Yes" msgstr "Tak" #: ../src/appicon.c:534 ../src/dock.c:274 ../src/winmenu.c:125 msgid "No" msgstr "Nie" #: ../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 \"%s\":\n%s" msgstr "Nie można otworzyć katalogu \"%s\":\n%s" #: ../src/dialog.c:267 msgid "Could not load image file " msgstr "Nie można załadować pliku z obrazkiem " #: ../src/dialog.c:404 msgid "Directories" msgstr "Katalogi" #: ../src/dialog.c:413 msgid "Icons" msgstr "Ikony" #: ../src/dialog.c:450 msgid "File Name:" msgstr "Nazwa Pliku:" #: ../src/dialog.c:473 msgid "Choose File" msgstr "Wybierz Plik" #: ../src/dialog.c:483 msgid "Icon Chooser" msgstr "Katalog Ikon" #: ../src/dock.c:213 #, c-format msgid "Type the name for workspace %i:" msgstr "Wpisz nazwę dla pulpitu %i:" #: ../src/dock.c:214 ../src/dock.c:1044 msgid "Rename Workspace" msgstr "Zmień Nazwę Pulpitu" #: ../src/dock.c:422 msgid "Workspace Clip" msgstr "Spinacz Pulpitu" #: ../src/dock.c:423 msgid "All selected icons will be removed!" msgstr "Wszystkie zaznaczone ikony zostaną usunięte!" #: ../src/dock.c:470 msgid "Keep Icon" msgstr "Trzymaj Ikonę" #: ../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:857 #, c-format msgid "could not launch application %s\n" msgstr "nie można odpalić aplikacji %s\n" #: ../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:975 msgid "could not create options submenu for Clip menu" msgstr "nie można stworzyć podmenu opcji dla menu Spinacza" #: ../src/dock.c:979 ../src/dock.c:1033 ../src/winmenu.c:383 msgid "Keep on top" msgstr "Trzymaj na wierzchu" #: ../src/dock.c:985 msgid "Collapsed" msgstr "Zwinięty" #: ../src/dock.c:991 msgid "AutoCollapse" msgstr "AutoZwinięty" #: ../src/dock.c:997 msgid "AutoRaiseLower" msgstr "AutoPodnieśOpuść" #: ../src/dock.c:1003 msgid "AutoAttract Icons" msgstr "Automatyczne Wyłapywanie Ikon" #: ../src/dock.c:1009 msgid "Keep Attracted Icons" msgstr "Trzymaj Wyłapane Ikony" #: ../src/dock.c:1039 msgid "Clip Options" msgstr "Opcje Spinacza" #: ../src/dock.c:1046 msgid "(Un)Select Icon" msgstr "(Od)Zaznacz Ikonę" #: ../src/dock.c:1048 msgid "(Un)Select All Icons" msgstr "(Od)Zaznacz Wszystkie Ikony" #: ../src/dock.c:1051 msgid "Keep Icon(s)" msgstr "Trzymaj Ikonę(y)" #: ../src/dock.c:1053 msgid "Move Icon(s) To" msgstr "Przenieś Ikonę(y) Do" #: ../src/dock.c:1058 msgid "Remove Icon(s)" msgstr "Usuń Ikonę(y)" #: ../src/dock.c:1060 msgid "Attract Icons" msgstr "Wyłap Ikony" #: ../src/dock.c:1063 msgid "Launch" msgstr "Odpal" #: ../src/dock.c:1067 msgid "(Un)Hide" msgstr "(Nie)Ukryj" #: ../src/dock.c:1069 msgid "Settings..." msgstr "Ustawienia..." #: ../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: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: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:1976 ../src/dock.c:2105 msgid "Dock Icon" msgstr "Ikona Doku" #: ../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:291 msgid "Start when WindowMaker is started" msgstr "Wystartować podczas startu WindowMakera" #: ../src/dockedapp.c:298 msgid "Application path and arguments" msgstr "Ścieżka do aplikacji i argumenty" #: ../src/dockedapp.c:309 msgid "Command for files dropped with DND" msgstr "Polecenie dla plików upuszczonych z DND" #: ../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:325 msgid "DND support was not compiled in" msgstr "nie wkompilowano wspomagania DND" #: ../src/dockedapp.c:331 msgid "Icon Image" msgstr "Obrazek Ikony" #: ../src/dockedapp.c:343 ../src/winspector.c:1235 msgid "Browse..." msgstr "Przeglądaj..." #: ../src/dockedapp.c:388 msgid "Docked Application Settings" msgstr "Ustawienia Zadokowanej Aplikacji" #: ../src/event.c:350 msgid "stack overflow: too many dead processes" msgstr "przepełnienie stosu: zbyt wiele martwych procesów" #: ../src/framewin.c:485 #, c-format msgid "could not render gradient: %s" msgstr "nie można pokazać gradientu: %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 "błąd podczas pokazywania obrazka:%s" #: ../src/icon.c:182 ../src/wdefaults.c:411 #, c-format msgid "error loading image file \"%s\": %s" msgstr "błąd podczas ładowania pliku z obrazkiem \"%s\": %s" #: ../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: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: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:242 #, c-format msgid "%s aborted.\n" msgstr "%s zaniechany.\n" #: ../src/main.c:253 #, c-format msgid "usage: %s [-options]\n" msgstr "składnia: %s [-options]\n" #: ../src/main.c:254 msgid "options:" msgstr "opcje:" #: ../src/main.c:256 msgid " -nocpp \t\tdisable preprocessing of configuration files" msgstr " -nocpp \t\twyłącz przetwarzanie plików konfiguracyjnych" #: ../src/main.c:258 msgid " -nodock\t\tdo not open the application Dock" msgstr " -nodock\t\tbez Doku z aplikacjami" #: ../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:263 msgid " -visualid visualid\tvisual id of visual to use" msgstr " -visualid visualid\tidentyfikator używanej palety" #: ../src/main.c:264 msgid " -display host:dpy\tdisplay to use" msgstr " -display host:dpy\tużywany panel graficzny" #: ../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: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:297 #, c-format msgid "%s:could not execute initialization script" msgstr "%s:nie można wykonać skryptu inicjalizacji" #: ../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:386 #, c-format msgid "bad value for visualid: \"%s\"" msgstr "zła wartość id palety: \"%s\"" #: ../src/main.c:444 msgid "X server does not support locale" msgstr "Serwer X nie wspiera locale" #: ../src/main.c:447 msgid "cannot set locale modifiers" msgstr "nie można ustawić modyfikatorów locale" #: ../src/main.c:464 #, c-format msgid "could not open display \"%s\"" msgstr "nie można otworzyć panelu graficznego \"%s\"" #: ../src/menu.c:285 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: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: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: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: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:773 msgid "selection timed-out" msgstr "zaznaczenie straciło ważność" #: ../src/misc.c:788 msgid "Program Arguments" msgstr "Argumenty Programu" #: ../src/misc.c:789 msgid "Enter command arguments:" msgstr "Wprowadź argumenty programu:" #: ../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:892 msgid "error getting dropped data from DND drop" msgstr "błąd podczas brania upuszczonych danych protokołu DND" #: ../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:942 ../src/misc.c:1062 #, c-format msgid "out of memory during expansion of \"%s\"" msgstr "wyczerpano pamięć podczas rozwijania \"%s\"" #: ../src/misc.c:996 msgid "out of memory during expansion of \"%w\"" msgstr "wyczerpano pamięć podczas rozwijania \"%w\"" #: ../src/misc.c:1015 msgid "out of memory during expansion of \"%a\"" msgstr "wyczerpano pamięć podczas rozwijania \"%a\"" #: ../src/misc.c:1041 #, c-format msgid "out of memory during expansion of \"%d\"" msgstr "wyczerpano pamięć podczas rozwijania \"%d\"" #: ../src/misc.c:1055 msgid "selection not available" msgstr "zaznaczenie niedostępne" #: ../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" #: ../src/proplist.c:180 msgid "unterminated string" msgstr "nie zakończony łańcuch" #: ../src/proplist.c:247 msgid "unterminated array" msgstr "nie zakończona tablica" #: ../src/proplist.c:256 msgid "missing , in array or unterminated array" msgstr "brakujący, w tablicy lub nie zakończonej tablicy" #: ../src/proplist.c:267 msgid "could not get array element" msgstr "nie można wziąć elementu tablicy" #: ../src/proplist.c:297 msgid "unterminated dictionary" msgstr "nie zakończony słownik" #: ../src/proplist.c:315 msgid "missing dictionary key" msgstr "brakujący klucz słownika" #: ../src/proplist.c:317 msgid "missing dictionary entry key or unterminated dictionary" msgstr "brakujący wpis słownika lub nie zakończony słownik" #: ../src/proplist.c:323 msgid "error parsing dictionary key" msgstr "błąd podczas przetwarzania klucza słownika" #: ../src/proplist.c:332 msgid "missing = in dictionary entry" msgstr "brakujący znak = we wpisie słownika" #: ../src/proplist.c:351 msgid "missing ; in dictionary entry" msgstr "brakujący znak ; we wpisie słownika" #: ../src/proplist.c:432 msgid "was expecting a string, dictionary, data or array." msgstr "oczekiwano łańcucha, słownika, danych lub tablicy." #: ../src/proplist.c:434 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" #: ../src/proplist.c:466 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" #: ../src/resources.c:78 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:185 ../src/rootmenu.c:187 msgid "Exit" msgstr "Zakończ" #: ../src/rootmenu.c:186 msgid "Exit window manager?" msgstr "Czy opuścić menedżera okien?" #: ../src/rootmenu.c:222 msgid "Close X session" msgstr "Zamknij sesję X" #: ../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." #. #. 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/rootmenu.c:236 msgid "Kill X session" msgstr "Zamknij sesję X Window" #: ../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/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/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/rootmenu.c:524 #, c-format msgid "%s: unmatched '\"' in menu file" msgstr "%s: nie zakończone '\"' w pliku menu" #: ../src/rootmenu.c:574 #, c-format msgid "%s: missing command" msgstr "%s: brakujące polecenie" #: ../src/rootmenu.c:607 #, c-format msgid "invalid OPEN_MENU specification: %s" msgstr "niewłaściwe określenie OPEN_MENU: %s" #: ../src/rootmenu.c:680 #, c-format msgid "%s:could not stat menu" msgstr "%s:niezrozumiałe menu" #: ../src/rootmenu.c:688 #, c-format msgid "%s:could not stat menu:%s" msgstr "%s:niezrozumiałe menu:%s" #: ../src/rootmenu.c:706 #, c-format msgid "too many parameters in OPEN_MENU: %s" msgstr "zbyt wiele parametrów w 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 "Jest więcej niż jedno polecenie WORKSPACE_MENU w menu aplikacji. Tylko jedno jest dozwolone." #: ../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/rootmenu.c:852 #, c-format msgid "%s:unknown command \"%s\" in menu config." msgstr "%s:nieznane polecenie \"%s\" w ustawieniach menu." #: ../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/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/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/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/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/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 "could not open menu file \"%s\": %s" msgstr "nie można otworzyć pliku menu \"%s\": %s" #: ../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" #. #. * 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: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:1167 msgid "Advanced" msgstr "Zaawansowane" #: ../src/winspector.c:1177 msgid "Ignore HideOthers" msgstr "Zignoruj UkryjInne" #: ../src/winspector.c:1181 msgid "Don't bind keyboard shortcuts" msgstr "Nie stosuj skrótów klawiaturowych" #: ../src/winspector.c:1185 msgid "Don't bind mouse clicks" msgstr "Nie stosuj kliknięć myszą" #: ../src/winspector.c:1189 msgid "Keep inside screen" msgstr "Trzymaj wewnątrz ekranu" #: ../src/winspector.c:1193 msgid "Don't let it take focus" msgstr "Nie pozwól być aktywnym oknem" #: ../src/winspector.c:1197 msgid "Don't Save Session" msgstr "Nie Zachowuj Sesji" #: ../src/winspector.c:1201 msgid "Emulate Application Icon" msgstr "Emuluj Ikonę Aplikacji" #: ../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:1223 msgid "Miniwindow Image" msgstr "Obrazek Miniokna" #: ../src/winspector.c:1242 msgid "Update" msgstr "Odnów" #: ../src/winspector.c:1257 msgid "Icon file name:" msgstr "Nazwa pliku z ikoną:" #: ../src/winspector.c:1269 msgid "Ignore client supplied icon" msgstr "Ignoruj ikonę dostarczoną przez klienta" #: ../src/winspector.c:1276 msgid "Initial Workspace" msgstr "Początkowy Pulpit" #: ../src/winspector.c:1281 msgid "Nowhere in particular" msgstr "Nigdzie w szczególności" #: ../src/winspector.c:1315 msgid "Application Wide" msgstr "W Całej Aplikacji" #: ../src/winspector.c:1325 msgid "Start Hidden" msgstr "Wystartuj Ukryty" #: ../src/winspector.c:1329 msgid "No application icon" msgstr "Brak ikony aplikacji" #: ../src/workspace.c:102 ../src/workspace.c:103 ../src/workspace.c:472 #, c-format msgid "Workspace %i" msgstr "Pulpit %i" #: ../src/workspace.c:529 msgid "Workspaces" msgstr "Pulpity" #: ../src/workspace.c:531 msgid "could not create Workspace menu" msgstr "nie można stworzyć menu Pulpitu" #: ../src/workspace.c:538 msgid "New" msgstr "Nowy" #: ../src/workspace.c:539 msgid "Destroy Last" msgstr "Zniszcz Ostatni" #: ../src/xutil.c:228 msgid "invalid data in selection" msgstr "niewłaściwe dane w zaznaczeniu" WindowMaker-0.95.9/po/uk.po0000644000175000017500000020502113431646201012363 00000000000000msgid "" msgstr "" "Project-Id-Version: WindowMaker 0.80.1\n" "POT-Creation-Date: 2002-02-15 15:50+0200\n" "PO-Revision-Date: 2005-09-06 08:56+0300\n" "Last-Translator: Victor Forsyuk \n" "Language-Team: KSI Linux Ukrainian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../src/appicon.c:426 ../src/dialog.c:282 ../src/dock.c:3325 #: ../src/dockedapp.c:230 ../src/main.c:273 ../src/rootmenu.c:1853 #: ../src/winspector.c:389 ../src/winspector.c:406 msgid "Error" msgstr "Помилка" #: ../src/appicon.c:427 msgid "Could not open specified icon file" msgstr "Неможливо відкрити вказаний файл іконки" #: ../src/appicon.c:428 ../src/dialog.c:179 ../src/dialog.c:282 #: ../src/dialog.c:729 ../src/dialog.c:1818 ../src/dock.c:526 #: ../src/dock.c:534 ../src/dock.c:558 ../src/dock.c:3326 #: ../src/dockedapp.c:231 ../src/dockedapp.c:426 ../src/main.c:273 #: ../src/rootmenu.c:1857 ../src/winspector.c:390 ../src/winspector.c:407 msgid "OK" msgstr "OK" #: ../src/appicon.c:456 ../src/dock.c:264 msgid "" " will be forcibly closed.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" " примусово завершиться.\n" "Всі незбережені зміни будуть втрачені.\n" "Будь ласка, підтвердіть." # #: ../src/appicon.c:464 ../src/dock.c:283 ../src/winmenu.c:125 msgid "Kill Application" msgstr "Примусове завершення" #: ../src/appicon.c:465 ../src/dock.c:284 ../src/winmenu.c:127 msgid "Yes" msgstr "Так" #: ../src/appicon.c:465 ../src/dock.c:284 ../src/winmenu.c:127 msgid "No" msgstr "Ні" #: ../src/appicon.c:495 ../src/dock.c:1177 ../src/dock.c:3491 msgid "Unhide Here" msgstr "Розкрити тут" #: ../src/appicon.c:496 ../src/appicon.c:521 ../src/dock.c:1179 #: ../src/dock.c:1181 ../src/dock.c:3503 ../src/winmenu.c:465 msgid "Hide" msgstr "Приховати" #: ../src/appicon.c:497 msgid "Set Icon..." msgstr "Встановити іконку..." #: ../src/appicon.c:498 ../src/dock.c:1185 ../src/rootmenu.c:248 #: ../src/rootmenu.c:264 ../src/winmenu.c:520 msgid "Kill" msgstr "Убити" #: ../src/appicon.c:519 ../src/dock.c:3501 msgid "Unhide" msgstr "Розкрити" #: ../src/application.c:398 #, c-format msgid "recreating missing icon '%s'" msgstr "" #: ../src/defaults.c:922 ../src/defaults.c:1011 #, c-format msgid "Domain %s (%s) of global defaults database is corrupted!" msgstr "Домен %s (%s) в глобальній базі умовчань пошкоджений!" #: ../src/defaults.c:927 #, c-format msgid "could not load domain %s from global defaults database" msgstr "не вдалось завантажити домен %s з глобальної бази умовчань" #: ../src/defaults.c:949 ../src/startup.c:884 ../src/startup.c:902 #: ../src/startup.c:908 #, c-format msgid "could not read domain \"%s\" from defaults database" msgstr "не вдалось прочитати домен \"%s\" з бази даних умовчань" #: ../src/defaults.c:995 ../src/defaults.c:1099 ../src/defaults.c:1140 #: ../src/defaults.c:1196 #, c-format msgid "Domain %s (%s) of defaults database is corrupted!" msgstr "Домен %s (%s) в базі даних умовчань пошкоджений!" #: ../src/defaults.c:1000 ../src/defaults.c:1119 ../src/defaults.c:1176 #: ../src/defaults.c:1205 ../src/menureader.c:397 #, c-format msgid "could not load domain %s from user defaults database" msgstr "не вдалось завантажити домен \"%s\" з бази умовчань користувача" #: ../src/defaults.c:1030 #, c-format msgid "could not load domain %s from global defaults database (%s)" msgstr "не вдалось завантажити домен %s з глобальної бази умовчань (%s)" #: ../src/defaults.c:1166 ../src/screen.c:458 #, c-format msgid "could not load logo image for panels: %s" msgstr "не вдалось завантажити заставку для панелей: %s" #: ../src/defaults.c:1447 #, c-format msgid "wrong option value for key \"%s\". Should be one of %s" msgstr "неправильне значення для ключа \"%s\". Має бути одне з %s." #: ../src/defaults.c:1492 #, c-format msgid "can't convert \"%s\" to boolean for key \"%s\"" msgstr "не вдалось перетворити \"%s\" в булівське значення для ключа \"%s\"" #: ../src/defaults.c:1497 ../src/defaults.c:1529 ../src/defaults.c:1561 #: ../src/defaults.c:1574 ../src/defaults.c:1589 ../src/defaults.c:1603 #: ../src/defaults.c:1673 ../src/defaults.c:1685 ../src/defaults.c:2152 #: ../src/defaults.c:2169 ../src/defaults.c:2182 ../src/defaults.c:2214 #: ../src/defaults.c:2230 ../src/defaults.c:2261 ../src/defaults.c:2348 #: ../src/defaults.c:2734 ../src/defaults.c:2745 #, c-format msgid "using default \"%s\" instead" msgstr "використовуємо значення за умовчанням (%s)" #: ../src/defaults.c:1526 #, c-format msgid "can't convert \"%s\" to integer for key \"%s\"" msgstr "неможливо перетворити \"%s\" в ціле значення для ключа \"%s\"" #: ../src/defaults.c:1556 ../src/defaults.c:1668 ../src/defaults.c:2147 #: ../src/defaults.c:2164 ../src/defaults.c:2209 ../src/defaults.c:2256 #: ../src/defaults.c:2729 ../src/wdefaults.c:571 ../src/wdefaults.c:607 #, c-format msgid "Wrong option format for key \"%s\". Should be %s." msgstr "Неправильний формат параметра для ключа \"%s\". Має бути %s." #: ../src/defaults.c:1569 #, c-format msgid "Incorrect number of elements in array for key \"%s\"." msgstr "Некоректна кількість елементів в масиві для ключа \"%s\"." #: ../src/defaults.c:1584 #, c-format msgid "Wrong value for key \"%s\". Should be Coordinate." msgstr "Неправильне значення параметра для ключа \"%s\". Має бути Coordinate." #: ../src/defaults.c:1599 #, c-format msgid "can't convert array to integers for \"%s\"." msgstr "не вдалось перетворити масив в цілі значення для \"%s\"." #: ../src/defaults.c:1797 ../src/defaults.c:1829 ../src/defaults.c:1845 #: ../src/defaults.c:1874 ../src/defaults.c:1897 ../src/defaults.c:1950 #: ../src/defaults.c:1990 ../src/defaults.c:2028 ../src/defaults.c:2044 #, c-format msgid "\"%s\" is not a valid color name" msgstr "\"%s\" не є відомою назвою кольору" #: ../src/defaults.c:1810 ../src/defaults.c:1862 msgid "bad number of arguments in gradient specification" msgstr "неправильна кількість аргументів у визначенні градієнта" #: ../src/defaults.c:1923 msgid "too few arguments in multicolor gradient specification" msgstr "надто мало аргументів у визначенні багатоколірного градієнта" #: ../src/defaults.c:2017 msgid "bad number of arguments in textured gradient specification" msgstr "неправильна кількість аргументів у визначенні градієнта з текстурою" #: ../src/defaults.c:2060 #, c-format msgid "bad opacity value for tgradient texture \"%s\". Should be [0..255]" msgstr "" "неправильне значення прозорості для t-градієнта з текстурою \"%s\"; має бути " "[0..255]" #: ../src/defaults.c:2120 #, c-format msgid "could not initialize library %s" msgstr "не вдалось ініціалізувати бібліотеку %s" #: ../src/defaults.c:2123 #, c-format msgid "could not find function %s::%s" msgstr "не вдалось знайти функцію %s::%s" #: ../src/defaults.c:2130 #, c-format msgid "invalid texture type %s" msgstr "неправильний тип текстури (%s)" #: ../src/defaults.c:2177 #, c-format msgid "Error in texture specification for key \"%s\"" msgstr "Помилка у визначенні текстури для ключа \"%s\"" #: ../src/defaults.c:2226 msgid "Wrong type for workspace background. Should be a texture type." msgstr "" "Неправильний тип для фону Робочого столу; має бути значення типу \"текстура" "\"." #: ../src/defaults.c:2274 #, c-format msgid "Wrong type for background of workspace %i. Should be a texture." msgstr "" "Неправильний тип для фону Рабочого столу %i; має бути значення типу " "\"текстура\"." #: ../src/defaults.c:2316 msgid "could not load any usable font!!!" msgstr "не вдалось завантажити шрифт!!!" #: ../src/defaults.c:2343 #, c-format msgid "could not get color for key \"%s\"" msgstr "не вдалось визначити колір для ключа \"%s\"" #: ../src/defaults.c:2401 ../src/rootmenu.c:526 #, c-format msgid "%s:invalid key modifier \"%s\"" msgstr "%s:неправильний модифікатор клавіші \"%s\"" # #: ../src/defaults.c:2413 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\"" msgstr "%s:неправильне визначення комбінації клавіш \"%s\"" # #: ../src/defaults.c:2420 #, c-format msgid "%s:invalid key in shortcut \"%s\"" msgstr "%s:неправильна клавіша в комбінації \"%s\"" #: ../src/defaults.c:2445 #, c-format msgid "%s: modifier key %s is not valid" msgstr "%s: модифікатор %s неправильний" #: ../src/defaults.c:2477 #, c-format msgid "could not load image in option %s: %s" msgstr "не вдалось завантажити зображення для параметра %s: %s" # #: ../src/defaults.c:2594 #, c-format msgid "failed to open bitmap file \"%s\"" msgstr "не вдалось відкрити растровий файл \"%s\"" #: ../src/defaults.c:2597 #, c-format msgid "\"%s\" is not a valid bitmap file" msgstr "\"%s\" не є насправді растровим файлом" #: ../src/defaults.c:2600 #, c-format msgid "out of memory reading bitmap file \"%s\"" msgstr "вичерпана пам'ять під час читання растрового файлу \"%s\"" #: ../src/defaults.c:2639 ../src/defaults.c:2672 msgid "bad number of arguments in cursor specification" msgstr "неправильна кількість аргументів у визначенні курсора" #: ../src/defaults.c:2655 #, c-format msgid "unknown builtin cursor name \"%s\"" msgstr "" #: ../src/defaults.c:2682 ../src/defaults.c:2694 #, c-format msgid "could not find cursor bitmap file \"%s\"" msgstr "не вдалось знайти растровий файл курсора \"%s\"" #: ../src/defaults.c:2741 #, c-format msgid "Error in cursor specification for key \"%s\"" msgstr "Помилка у визначенні курсора для ключа \"%s\"" #: ../src/defaults.c:2826 msgid "could not render texture for icon background" msgstr "не вдалось підготувати текстуру для фону іконки" # #: ../src/dialog.c:135 msgid "Save workspace state" msgstr "Зберегти стан Робочого столу" #: ../src/dialog.c:179 ../src/dialog.c:736 ../src/dock.c:558 #: ../src/dockedapp.c:431 ../src/rootmenu.c:198 ../src/rootmenu.c:248 #: ../src/rootmenu.c:264 msgid "Cancel" msgstr "Відміна" # #: ../src/dialog.c:277 msgid "Could not open directory " msgstr "Неможливо відкрити каталог " #: ../src/dialog.c:332 msgid "Could not load image file " msgstr "Неможливо завантажити файл зображення " #: ../src/dialog.c:663 msgid "Directories" msgstr "Каталоги" #: ../src/dialog.c:672 msgid "Icons" msgstr "Іконки" #: ../src/dialog.c:705 msgid "Preview" msgstr "" # #: ../src/dialog.c:718 msgid "File Name:" msgstr "Ім'я файлу:" #: ../src/dialog.c:742 msgid "Choose File" msgstr "Виберіть файл" #: ../src/dialog.c:760 ../src/dialog.c:762 msgid "Icon Chooser" msgstr "Вибір іконки" #: ../src/dialog.c:1241 ../src/dialog.c:1351 #, c-format msgid "Version %s" msgstr "Версія %s" #: ../src/dialog.c:1348 msgid "Window Manager for X" msgstr "Менеджер вікон для X" #: ../src/dialog.c:1373 #, c-format msgid "Using visual 0x%x: %s %ibpp " msgstr "" #: ../src/dialog.c:1381 msgid "(32 thousand colors)\n" msgstr "(32 тисячі кольорів)\n" #: ../src/dialog.c:1384 msgid "(64 thousand colors)\n" msgstr "(64 тисячі кольорів)\n" #: ../src/dialog.c:1388 msgid "(16 million colors)\n" msgstr "(16 мільйонів кольорів)\n" #: ../src/dialog.c:1391 #, c-format msgid "(%d colors)\n" msgstr "(%d кольорів)\n" #: ../src/dialog.c:1401 #, c-format msgid "Total allocated memory: %i kB. Total memory in use: %i kB.\n" msgstr "Всього виділено пам'яті: %i kB. Всього використано пам'яті: %i kB.\n" #: ../src/dialog.c:1408 msgid "Supported image formats: " msgstr "Підтримуються формати зображень: " #: ../src/dialog.c:1415 msgid "" "\n" "Additional support for: " msgstr "" "\n" "Додаткова підтримка для: " #: ../src/dialog.c:1438 msgid " and " msgstr " та " #: ../src/dialog.c:1448 msgid "" "\n" "Sound disabled" msgstr "" "\n" "Підтримку звуку вимкнено" #: ../src/dialog.c:1450 msgid "" "\n" "Sound enabled" msgstr "" "\n" "Підтримку звуку увімкнено" #: ../src/dialog.c:1476 msgid "Info" msgstr "Інформація" #: ../src/dialog.c:1499 msgid "Merry Christmas!" msgstr "Щасливого Різдва!" #: ../src/dialog.c:1569 msgid "" " Window Maker is free software; you can redistribute it and/or\n" "modify it under the terms of the GNU General Public License as\n" "published by the Free Software Foundation; either version 2 of the\n" "License, or (at your option) any later version.\n" "\n" " Window Maker is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty\n" "of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" "See the GNU General Public License for more details.\n" "\n" " You should have received a copy of the GNU General Public\n" "License along with this program; if not, write to the Free Software\n" "Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA\n" "02110-1301, USA." msgstr "" " Window Maker є вільним програмним забезпеченням; Ви можете\n" "розповсюджувати та/або модифікувати його у відповідності з умовами\n" "ліцензії GNU General Public License (GPL) опублікованої організацією\n" "Free Software Foundation; версії 2 цієї Ліцензії, чи (на Ваш вибір)\n" "будь-якої наступної версії.\n" "\n" " Window Maker розповсюджується з надією на те, що він буде\n" "корисним, але БЕЗ БУДЬ-ЯКОЇ ГАРАНТІЇ; навіть без неявної гарантії\n" "КОМЕРЦІЙНОЇ ЦІННОСТІ чи ПРИДАТНОСТІ ДЛЯ ПЕВНОГО ВИКОРИСТАННЯ.\n" "Дивіться GNU General Public License за подальшими подробицями.\n" "\n" " Ви мали отримати копію GNU General Public License разом з цією\n" "програмою; якщо ні - напишіть до Free Software Foundation, Inc.,\n" "51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA." #: ../src/dialog.c:1590 msgid "Legal" msgstr "Правова інформація" #: ../src/dialog.c:1741 ../src/startup.c:394 msgid "cannot open connection for crashing dialog panel. Aborting." msgstr "" "не вдалось відкрити з'єднання для панелі аварійного діалогу. Завершення " "роботи." #: ../src/dialog.c:1767 msgid "Fatal error" msgstr "Критична помилка" #: ../src/dialog.c:1778 #, c-format msgid "" "Window Maker received signal %i\n" "(%s)." msgstr "" "Window Maker: отримано сигнал %i\n" "(%s)." #: ../src/dialog.c:1781 #, c-format msgid "Window Maker received signal %i." msgstr "Window Maker: отримано сигнал %i." #: ../src/dialog.c:1790 msgid "" " This fatal error occured probably due to a bug. Please fill the included " "BUGFORM and report it to %s." msgstr "" " Ця критична помилка, можливо, є результатом помилки в програмі. Будь ласка, " "заповніть форму BUGFORM і відправте її за адресою %s." #: ../src/dialog.c:1799 msgid "What do you want to do now?" msgstr "Що робити?" #: ../src/dialog.c:1805 msgid "Select action" msgstr "Виберіть дію" #: ../src/dialog.c:1806 msgid "Abort and leave a core file" msgstr "Завершити роботу, залишивши файл core" #: ../src/dialog.c:1807 msgid "Restart Window Maker" msgstr "Перезапустити Window Maker" #: ../src/dialog.c:1808 msgid "Start alternate window manager" msgstr "Запустити альтернативний менеджер вікон" #: ../src/dialog.c:1986 msgid "" "Window Maker is part of the GNUstep project.\n" "The GNUstep project aims to create a free\n" "implementation of the OpenStep(tm) specification\n" "which is a object-oriented framework for\n" "creating advanced graphical, multi-platform\n" "applications. Additionally, a development and\n" "user desktop enviroment will be created on top\n" "of the framework. For more information about\n" "GNUstep, please visit: www.gnustep.org" msgstr "" "Window Maker - це частина проекту GNUstep.\n" "Проект GNUstep має на меті створити вільну\n" "реалізацію специфікації OpenStep(tm), яка є\n" "об'єктно-орієнтованою основою для створення\n" "вдосконалених графічних незалежних від платформи\n" "прикладних програм. На цій основі буде створено\n" "середовище розробки та середовище робочого столу\n" "користувача. За додатковими подробицями щодо\n" "GNUstep, будь ласка, відвідайте: www.gnustep.org" #: ../src/dialog.c:2006 msgid "About GNUstep" msgstr "Про GNUstep" #: ../src/dock.c:213 #, c-format msgid "Type the name for workspace %i:" msgstr "Введіть ім'я для %i-го робочого столу:" # #: ../src/dock.c:214 ../src/dock.c:1141 ../src/dock.c:1144 ../src/dock.c:3409 msgid "Rename Workspace" msgstr "Перейменувати стіл" #: ../src/dock.c:520 ../src/dock.c:528 msgid "Warning" msgstr "Попередження" #: ../src/dock.c:521 msgid "" "Some icons cannot be made omnipresent. Please make sure that no other icon " "is docked in the same positions on the other workspaces and the Clip is not " "full in some workspace." msgstr "" "Деякі іконки неможливо зробити присутніми на всіх робочих столах. " "Впевніться, що на цій же позиції на інших робочих столах не прикріплена інша " "іконка і що в Скріпці є місце для нових іконок на всіх робочих столах." #: ../src/dock.c:529 msgid "" "Icon cannot be made omnipresent. Please make sure that no other icon is " "docked in the same position on the other workspaces and the Clip is not full " "in some workspace." msgstr "" "Іконку неможливо зробити присутньою на всіх робочих столах. Впевніться, що " "на цій же позиції на інших робочих столах не прикріплена інша іконка і що в " "Скріпці є місце для нових іконок на всіх робочих столах." #: ../src/dock.c:556 msgid "Workspace Clip" msgstr "Скріпка Робочого столу" #: ../src/dock.c:557 msgid "All selected icons will be removed!" msgstr "Всі вибрані іконки будуть видалені!" #: ../src/dock.c:608 ../src/dock.c:1156 ../src/dock.c:1158 ../src/dock.c:3445 msgid "Keep Icon" msgstr "Утримувати іконку" # #: ../src/dock.c:609 ../src/dock.c:2137 ../src/dock.c:2278 msgid "Type the command used to launch the application" msgstr "Введіть команду, що використовується для запуску програми" # #: ../src/dock.c:965 #, c-format msgid "could not launch application %s\n" msgstr "не вдалось запустити програму %s\n" #: ../src/dock.c:1020 msgid "could not create workspace submenu for Clip menu" msgstr "не вдалось створити підменю робочих місць для меню Скріпки" #: ../src/dock.c:1078 msgid "could not create options submenu for Clip menu" msgstr "не вдалось створити підменю параметрів для меню Скріпки" #: ../src/dock.c:1082 ../src/dock.c:1130 msgid "Keep on Top" msgstr "Завжди на плаву" #: ../src/dock.c:1088 msgid "Collapsed" msgstr "Звернуто" #: ../src/dock.c:1094 msgid "Autocollapse" msgstr "Автозвертати" #: ../src/dock.c:1100 msgid "Autoraise" msgstr "Автопіднімати" #: ../src/dock.c:1106 msgid "Autoattract Icons" msgstr "Автопритягати іконки" #: ../src/dock.c:1136 msgid "Clip Options" msgstr "Параметри Скріпки" #: ../src/dock.c:1146 msgid "Selected" msgstr "Вибране" #: ../src/dock.c:1151 ../src/dock.c:1154 ../src/dock.c:3436 msgid "Select All Icons" msgstr "Вибір всіх іконок" #: ../src/dock.c:1160 ../src/dock.c:1162 ../src/dock.c:3453 msgid "Move Icon To" msgstr "Перемістити іконку на..." #: ../src/dock.c:1167 ../src/dock.c:1170 ../src/dock.c:3464 msgid "Remove Icon" msgstr "Видалити іконку" #: ../src/dock.c:1172 msgid "Attract Icons" msgstr "Притягати іконки" #: ../src/dock.c:1175 msgid "Launch" msgstr "Запуск" #: ../src/dock.c:1183 msgid "Settings..." msgstr "Установки..." #: ../src/dock.c:1548 ../src/dock.c:1655 #, c-format msgid "bad value in docked icon state info %s" msgstr "помилкове значення в стані прикріпленої іконки -- %s" #: ../src/dock.c:1663 #, c-format msgid "bad value in docked icon position %i,%i" msgstr "помилкове значення в позиції прикріпленої іконки %i,%i" #: ../src/dock.c:1919 msgid "there are too many icons stored in dock. Ignoring what doesn't fit" msgstr "прикріплено надто багато іконок. Зайві будуть проігноровані" #. icon->forced_dock = 1; #: ../src/dock.c:2136 ../src/dock.c:2277 msgid "Dock Icon" msgstr "Іконка Доку" #: ../src/dock.c:3323 #, c-format msgid "Could not execute command \"%s\"" msgstr "Неможливо виконати команду \"%s\"" #: ../src/dock.c:3415 msgid "Toggle Omnipresent" msgstr "Присутність на всіх столах" #: ../src/dock.c:3420 ../src/kwm.c:637 ../src/winmenu.c:418 #: ../src/winspector.c:1377 msgid "Omnipresent" msgstr "На всіх столах" #: ../src/dock.c:3434 msgid "Unselect All Icons" msgstr "Зняття вибору всіх іконок" #: ../src/dock.c:3443 msgid "Keep Icons" msgstr "Утримувати іконки" #: ../src/dock.c:3451 msgid "Move Icons To" msgstr "Перемістити іконки на..." #: ../src/dock.c:3462 msgid "Remove Icons" msgstr "Видалити іконки" #: ../src/dock.c:3493 ../src/kwm.c:643 msgid "Bring Here" msgstr "Принести сюди" #: ../src/dockedapp.c:149 #, c-format msgid "could not find icon %s, used in a docked application" msgstr "не вдалось знайти іконку %s, використану в пришвартованій програмі" # #: ../src/dockedapp.c:229 #, c-format msgid "Could not open specified icon file: %s" msgstr "Не вдалось відкрити вказаний файл іконки: %s" #: ../src/dockedapp.c:231 msgid "Ignore" msgstr "Ігнорувати" #: ../src/dockedapp.c:333 msgid "Start when Window Maker is started" msgstr "Запустити при запуску WindowMaker'а" #: ../src/dockedapp.c:340 msgid "Lock (prevent accidental removal)" msgstr "Зафіксувати (перешкодити випадковому видаленню)" # #: ../src/dockedapp.c:344 msgid "Application path and arguments" msgstr "Шлях до програми і аргументи" #: ../src/dockedapp.c:357 msgid "Command for middle-click launch" msgstr "Команда для запуску по середній кнопці миші" #: ../src/dockedapp.c:371 #, c-format msgid "%s will be replaced with current selection" msgstr "%s буде замінено на поточне виділення" #: ../src/dockedapp.c:376 msgid "Command for files dropped with DND" msgstr "Команда для \"перетягнутих\" файлів" #: ../src/dockedapp.c:390 #, c-format msgid "%d will be replaced with the file name" msgstr "%d буде замінено на ім'я файла" #: ../src/dockedapp.c:394 msgid "DND support was not compiled in" msgstr "Підтримка перетягування даних не була включена при компіляції" #: ../src/dockedapp.c:399 msgid "Icon Image" msgstr "Зображення іконки" #: ../src/dockedapp.c:413 ../src/winspector.c:1515 msgid "Browse..." msgstr "Вибрати..." # #: ../src/dockedapp.c:466 msgid "Docked Application Settings" msgstr "Параметри пришвартованої програми" #: ../src/framewin.c:649 ../src/framewin.c:744 ../src/menu.c:456 #: ../src/texture.c:594 #, c-format msgid "could not render texture: %s" msgstr "не вдалось підготувати текстуру: %s" #: ../src/framewin.c:672 ../src/framewin.c:683 ../src/framewin.c:699 #: ../src/framewin.c:710 ../src/framewin.c:717 ../src/framewin.c:724 #: ../src/icon.c:350 ../src/menu.c:485 #, c-format msgid "error rendering image:%s" msgstr "помилка при підготовці зображення:%s" #: ../src/framewin.c:777 #, c-format msgid "error rendering image: %s" msgstr "помилка при підготовці зображення: %s" #: ../src/gnome.c:216 ../src/gnome.c:343 ../src/gnome.c:401 msgid "out of memory while updating GNOME hints" msgstr "вичерпана пам'ять при оновленні GNOME hints" #: ../src/icon.c:229 ../src/wdefaults.c:443 #, c-format msgid "error loading image file \"%s\"" msgstr "помилка завантаження файлу зображення \"%s\"" # #: ../src/icon.c:491 ../src/icon.c:500 #, c-format msgid "could not create directory %s" msgstr "не вдалось створити каталог %s" #: ../src/icon.c:767 #, c-format msgid "could not find default icon \"%s\"" msgstr "не вдалось знайти іконку за умовчанням \"%s\"" #: ../src/icon.c:773 #, c-format msgid "could not load default icon \"%s\":%s" msgstr "не вдалось завантажити іконку за умовчанням \"%s\":%s" #. #. * 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/kwm.c:633 ../src/winmenu.c:441 ../src/winmenu.c:583 msgid "Maximize" msgstr "Максимізувати" #: ../src/kwm.c:634 ../src/winmenu.c:578 msgid "Unmaximize" msgstr "Демаксимізувати" #: ../src/kwm.c:635 ../src/winmenu.c:449 ../src/winmenu.c:569 msgid "Miniaturize" msgstr "Мінімізувати" #: ../src/kwm.c:636 ../src/winmenu.c:564 msgid "Deminiaturize" msgstr "Демінімізувати" #: ../src/kwm.c:638 msgid "Not Omnipresent" msgstr "Не на всіх столах" #: ../src/kwm.c:639 msgid "Move" msgstr "Перемістити" #: ../src/kwm.c:640 msgid "Resize" msgstr "Змінити розмір" #. #. entry = wMenuAddCallback(menu, _("Select Shortcut"), NULL, NULL); #. wMenuEntrySetCascade(menu, entry, makeMakeShortcutMenu(scr)); #. #: ../src/kwm.c:641 ../src/rootmenu.c:248 ../src/winmenu.c:513 msgid "Close" msgstr "Закрити" #: ../src/kwm.c:642 ../src/winmenu.c:497 msgid "Move To" msgstr "Перемістити на..." #: ../src/kwm.c:1096 msgid "%a(Run Command,Type the command to run:)" msgstr "%a(Запустити команду,Введіть команду:)" #: ../src/main.c:222 msgid "failed to restart Window Maker." msgstr "не вдалось перезапустити Window Maker." #: ../src/main.c:225 #, c-format msgid "could not exec %s" msgstr "не вдалось виконати %s" #: ../src/main.c:271 msgid "Could not execute command: " msgstr "Неможливо виконати команду: " #: ../src/main.c:428 #, c-format msgid "%s aborted.\n" msgstr "%s перервано.\n" #: ../src/main.c:439 #, c-format msgid "Usage: %s [options]\n" msgstr "Запуск: %s [параметри]\n" #: ../src/main.c:440 msgid "The Window Maker window manager for the X window system" msgstr "Менеджер вікон Window Maker для віконної системи X Window" #: ../src/main.c:442 msgid " -display host:dpy\tdisplay to use" msgstr " -display хост:дисплей\tвикористовувати вказаний дисплей" #: ../src/main.c:444 msgid " --no-cpp \t\tdisable preprocessing of configuration files" msgstr " --no-cpp \t\tзаборонити попередню обробку файлів конфігурації" #: ../src/main.c:446 msgid " --no-dock\t\tdo not open the application Dock" msgstr " --no-dock\t\tне відкривати Док програм" #: ../src/main.c:447 msgid " --no-clip\t\tdo not open the workspace Clip" msgstr " --no-clip\t\tне відкривати Скріпку" # #: ../src/main.c:448 msgid " --no-autolaunch\tdo not autolaunch applications" msgstr " --no-autolaunch\tне виконувати автозапуск програм" #: ../src/main.c:449 msgid " --dont-restore\t\tdo not restore saved session" msgstr " --dont-restore\t\tне відтворювати збережені сеанси" #: ../src/main.c:451 msgid " --locale locale\tlocale to use" msgstr " --locale locale\tвикористовувати локаль locale" #: ../src/main.c:453 msgid "" " --create-stdcmap\tcreate the standard colormap hint in PseudoColor visuals" msgstr "" " --create-stdcmap\tcreate the standard colormap hint in PseudoColor visuals" #: ../src/main.c:454 msgid " --visual-id visualid\tvisual id of visual to use" msgstr "" " --visual-id visualid\tвикористовувати вказаний кольоровий клас відображення" #: ../src/main.c:455 msgid " --static\t\tdo not update or save configurations" msgstr " --static\t\tне проводити оновлення чи збереження конфігурацій" #: ../src/main.c:456 msgid " --no-polling\t\tdo not periodically check for configuration updates" msgstr " --no-polling\t\tне робити періодичних перевірок змін конфігурації" #: ../src/main.c:458 msgid " --synchronous\t\tturn on synchronous display mode" msgstr " --synchronous\t\tвключити синхронний режим показу" #: ../src/main.c:460 msgid " --version\t\tprint version and exit" msgstr " --version\t\tвивести номер версії та вийти" #: ../src/main.c:461 msgid " --help\t\t\tshow this message" msgstr " --help\t\t\tвивести цей текст" #: ../src/main.c:474 #, 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" "Впевніться, що WindowMaker встановлено правильно і запустіть wmaker.inst" # #: ../src/main.c:479 #, c-format msgid "could not find user GNUstep directory (%s)." msgstr "не вдалось знайти каталог GNUstep користувача (%s)." #: ../src/main.c:482 msgid "" "There was an error while creating GNUstep directory, please make sure you " "have installed Window Maker correctly and run wmaker.inst" msgstr "" "Невдача при створенні каталогу GNUstep, впевніться, що WindowMaker " "встановлено правильно і запустіть wmaker.inst" #: ../src/main.c:485 #, c-format msgid "%s directory created with default configuration." msgstr "Каталог %s створено з конфігурацією за умовчанням." #: ../src/main.c:505 ../src/main.c:510 #, c-format msgid "%s:could not execute initialization script" msgstr "%s:не вдалось виконати сценарій ініціалізації" #: ../src/main.c:530 ../src/main.c:535 #, c-format msgid "%s:could not execute exit script" msgstr "%s:не вдалось виконати сценарій завершення роботи" #: ../src/main.c:663 ../src/main.c:671 ../src/main.c:679 ../src/main.c:699 #, c-format msgid "too few arguments for %s" msgstr "надто мало аргументів для %s" #: ../src/main.c:683 #, c-format msgid "bad value for visualid: \"%s\"" msgstr "помилкове значення для visualid: \"%s\"" # #: ../src/main.c:707 #, c-format msgid "%s: invalid argument '%s'\n" msgstr "%s: неправильний аргумент '%s'\n" #: ../src/main.c:708 #, c-format msgid "Try '%s --help' for more information\n" msgstr "Спробуйте '%s --help' для отримання додаткової інформації\n" #: ../src/main.c:736 msgid "X server does not support locale" msgstr "X сервер не підтримує локалізацію" #: ../src/main.c:740 msgid "cannot set locale modifiers" msgstr "не вдалось встановити параметри локалізації" #: ../src/main.c:756 #, c-format msgid "could not open display \"%s\"" msgstr "не вдалось відкрити дисплей \"%s\"" # #: ../src/menu.c:1255 msgid "could not grab keyboard" msgstr "не вдалось захопити клавіатуру" #: ../src/menureader.c:264 ../src/rootmenu.c:733 #, c-format msgid "%s:could not stat menu" msgstr "%s:не вдалось отримати меню" #: ../src/menureader.c:341 ../src/menureader.c:380 #, c-format msgid "could not stat() menu file '%s'" msgstr "не вдалось отримати файл меню '%s'" #: ../src/menureader.c:416 #, c-format msgid "could not find menu file '%s' referenced in WMRootMenu" msgstr "не вдалось знайти файл меню '%s' вказаний в WMRootMenu" #: ../src/menureader.c:423 #, c-format msgid "could not find any usable menu files. Please check '%s'" msgstr "не вдалось знайти файлів меню. Будь ласка, перевірте '%s'" #: ../src/menureader.c:438 ../src/rootmenu.c:1667 #, c-format msgid "" "using default menu file \"%s\" as the menu referenced in WMRootMenu could " "not be found " msgstr "" "використовується меню за умовчанням \"%s\", тому що меню, вказане в файлі " "WMRootMenu, не вдалось знайти " #: ../src/menureader.c:457 #, c-format msgid "" "invalid content in menu file '%s'.\n" "It should either be a property list menu or the path to the file, enclosed " "in \"." msgstr "" "некоректна інформація в файлі меню '%s'.\n" "Це має бути або меню в форматі property list, або шлях до файлу, взятий в \"." #: ../src/misc.c:71 #, c-format msgid "could not define value for %s for cpp" msgstr "не вдалось визначити значення для %s для cpp" #: ../src/misc.c:101 #, c-format msgid "could not get password entry for UID %i" msgstr "не вдалось отримати інформацію про користувача для UID %i" #: ../src/misc.c:126 #, c-format msgid "your machine is misconfigured. HOSTNAME is set to %s" msgstr "Ваша система погано зконфігурована. Змінна HOSTNAME встановлена в %s" #: ../src/misc.c:132 #, c-format msgid "your machine is misconfigured. HOST is set to %s" msgstr "Ваша система погано зконфігурована. Змінна HOST встановлена в %s" #: ../src/misc.c:630 msgid "Program Arguments" msgstr "Аргументи програми" #: ../src/misc.c:631 msgid "Enter command arguments:" msgstr "Введіть аргументи команди:" #: ../src/misc.c:724 msgid "unable to get dropped data from DND drop" msgstr "не вдалось отримати від DND drop перетягнуті дані" #: ../src/misc.c:732 msgid "error getting dropped data from DND drop" msgstr "помилка при отриманні даних від DND drop" #: ../src/misc.c:738 msgid "out of memory while getting data from DND drop" msgstr "вичерпана пам'ять при отриманні даних від DND drop" #: ../src/misc.c:783 ../src/misc.c:923 #, c-format msgid "out of memory during expansion of \"%s\"" msgstr "вичерпана пам'ять під час розширення \"%s\"" #: ../src/misc.c:837 msgid "out of memory during expansion of \"%w\"" msgstr "вичерпана пам'ять під час розширення \"%w\"" #: ../src/misc.c:855 msgid "out of memory during expansion of \"%W\"" msgstr "вичерпана пам'ять під час розширення \"%W\"" #: ../src/misc.c:871 msgid "out of memory during expansion of \"%a\"" msgstr "вичерпана пам'ять під час розширення \"%a\"" #: ../src/misc.c:902 #, c-format msgid "out of memory during expansion of \"%d\"" msgstr "вичерпана пам'ять під час розширення \"%d\"" #: ../src/misc.c:916 msgid "selection not available" msgstr "недоступно виділення" #: ../src/misc.c:972 ../src/misc.c:978 #, c-format msgid "bad window name value in %s state info" msgstr "помилкове значення імені вікна в інформації про стан для %s" #: ../src/misc.c:1235 msgid "could not send message to background image helper" msgstr "не вдалось послати повідомлення програмі фонового зображення" #: ../src/pixmap.c:235 #, c-format msgid "could not load mask bitmap file \"%s\". Won't use mask" msgstr "" "не вдалось завантажити растровий файл маски \"%s\". Маска не буде " "використана." #: ../src/resources.c:44 #, c-format msgid "could not parse color \"%s\"" msgstr "не вдалось розібрати колір \"%s\"" #: ../src/resources.c:48 #, c-format msgid "could not allocate color \"%s\"" msgstr "не вдалось зарезервувати колір \"%s\"" #: ../src/rootmenu.c:196 ../src/rootmenu.c:198 msgid "Exit" msgstr "Вихід" #: ../src/rootmenu.c:197 msgid "Exit window manager?" msgstr "Вийти з менеджера вікон?" #: ../src/rootmenu.c:245 msgid "Close X session" msgstr "Завершити сеанс роботи" #: ../src/rootmenu.c:246 msgid "" "Close Window System session?\n" "Kill might close applications with unsaved data." msgstr "" "Закрити сеанс Віконної Системи?\n" "Це може завершити програми з незбереженими даними." #: ../src/rootmenu.c:261 msgid "Kill X session" msgstr "Аварійне завершення сеансу роботи" #: ../src/rootmenu.c:262 msgid "" "Kill Window System session?\n" "(all applications will be closed)" msgstr "" "Закрити сеанс Віконної Системи?\n" "(всі програми будуть завершені)" #: ../src/rootmenu.c:539 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\" for entry %s" msgstr "%s:помилкове задання комбінації клавіш \"%s\" для пункту %s" #: ../src/rootmenu.c:547 #, c-format msgid "%s:invalid key in shortcut \"%s\" for entry %s" msgstr "%s:помилкова клавіша в комбінації \"%s\" для пункту %s" #: ../src/rootmenu.c:600 #, c-format msgid "%s: unmatched '\"' in menu file" msgstr "%s: непарна '\"' в файлі меню" #: ../src/rootmenu.c:650 #, c-format msgid "%s: missing command" msgstr "%s: відсутня команда" #: ../src/rootmenu.c:682 #, c-format msgid "invalid OPEN_MENU specification: %s" msgstr "помилкова специфікація OPEN_MENU: %s" #: ../src/rootmenu.c:741 #, c-format msgid "%s:could not stat menu:%s" msgstr "%s:не вдалось отримати меню:%s" #: ../src/rootmenu.c:759 #, c-format msgid "too many parameters in OPEN_MENU: %s" msgstr "надто багато параметрів в OPEN_MENU: %s" #: ../src/rootmenu.c:803 msgid "" "There are more than one WORKSPACE_MENU commands in the applications menu. " "Only one is allowed." msgstr "" "В головному меню вказано більше однієї команди WORKSPACE_MENU. Дозволена " "лише одна" #: ../src/rootmenu.c:837 msgid "" "There are more than one WINDOWS_MENU commands in the applications menu. Only " "one is allowed." msgstr "" "В головному меню вказано більше однієї команди WINDOWS_MENU. Дозволена лише " "одна" #: ../src/rootmenu.c:842 msgid "Window List" msgstr "Список вікон" #: ../src/rootmenu.c:871 ../src/rootmenu.c:889 ../src/rootmenu.c:899 #, c-format msgid "%s:missing parameter for menu command \"%s\"" msgstr "%s:відсутній параметр для команди меню \"%s\"" #: ../src/rootmenu.c:967 #, c-format msgid "%s:unknown command \"%s\" in menu config." msgstr "%s:невідома команда \"%s\" в конфігурації меню" #: ../src/rootmenu.c:975 #, c-format msgid "%s:can't add shortcut for entry \"%s\"" msgstr "%s:не вдалось додати комбінацію клавіш для команди \"%s\"" #: ../src/rootmenu.c:1112 #, c-format msgid "%s:maximal line size exceeded in menu config: %s" msgstr "%s:перевищено максимальный розмір рядка в конфігурації меню: %s" #: ../src/rootmenu.c:1134 ../src/rootmenu.c:1227 ../src/rootmenu.c:1329 #, c-format msgid "%s:missing command in menu config: %s" msgstr "%s:відсутня команда в конфігурації меню: %s" #: ../src/rootmenu.c:1164 #, c-format msgid "%s:syntax error in menu file:END declaration missing" msgstr "%s:синтаксична помилка в файлі меню: відсутня END" #: ../src/rootmenu.c:1193 ../src/rootmenu.c:1293 msgid "could not make arguments for menu file preprocessor" msgstr "не вдалось підставити аргументи для препроцесора файлу меню" #: ../src/rootmenu.c:1200 ../src/rootmenu.c:1301 #, c-format msgid "%s:could not open/preprocess menu file" msgstr "%s:не вдалось відкрити/обробити файл меню" #: ../src/rootmenu.c:1212 ../src/rootmenu.c:1314 #, c-format msgid "%s:could not open menu file" msgstr "%s:не вдалось відкрити файл меню" #: ../src/rootmenu.c:1239 #, c-format msgid "%s:invalid menu file. MENU command is missing" msgstr "%s:файл меню помилковий. Відсутня команда MENU" #: ../src/rootmenu.c:1248 msgid "error reading preprocessed menu data" msgstr "помилка читання оброблених даних меню" #: ../src/rootmenu.c:1341 #, c-format msgid "%s:no title given for the root menu" msgstr "%s: не заданий заголовок кореневого меню" #: ../src/rootmenu.c:1432 ../src/rootmenu.c:1505 ../src/rootmenu.c:1546 #, c-format msgid "out of memory while constructing directory menu %s" msgstr "вичерпана пам'ять при побудові меню каталога %s" #: ../src/rootmenu.c:1442 #, c-format msgid "%s:could not stat file \"%s\" in menu directory" msgstr "%s:не отримується файл \"%s\" в каталозі меню" #: ../src/rootmenu.c:1600 msgid "Commands" msgstr "Команди" #: ../src/rootmenu.c:1603 msgid "Restart" msgstr "Перезапуск" #: ../src/rootmenu.c:1604 msgid "Exit..." msgstr "Вихід..." #: ../src/rootmenu.c:1649 #, c-format msgid "could not find menu file \"%s\" referenced in WMRootMenu" msgstr "не вдалось знайти файл меню \"%s\", вказаний в WMRootMenu" #: ../src/rootmenu.c:1656 #, c-format msgid "could not access menu \"%s\" referenced in WMRootMenu" msgstr "не вдалось прочитати меню \"%s\", вказане в WMRootMenu" #: ../src/rootmenu.c:1690 ../src/rootmenu.c:1766 #, c-format msgid "%s:format error in root menu configuration \"%s\"" msgstr "%s:помилка формату в конфігурації кореневого меню \"%s\"" #: ../src/rootmenu.c:1854 msgid "" "The applications menu could not be loaded. Look at the console output for a " "detailed description of the errors." msgstr "" "Не вдалось завантажити меню програм. Повідомлення на консолі системи містять " "детальний опис проблеми." #: ../src/screen.c:740 #, c-format msgid "could not initialize graphics library context: %s" msgstr "не вдалось ініціалізувати графічну бібліотеку: %s" #: ../src/screen.c:771 msgid "could not do initialization of WINGs widget set" msgstr "не вдалось ініціалізувати набір віджетів WINGs" #: ../src/screen.c:1137 #, c-format msgid "could not save session state in %s" msgstr "не вдалось зберегти стан сеансу в %s" #: ../src/session.c:183 ../src/wdefaults.c:589 ../src/winspector.c:454 #, c-format msgid "can't convert \"%s\" to boolean" msgstr "не вдалось перетворити \"%s\" в булівське значення" #: ../src/session.c:1023 msgid "out of memory while saving session state" msgstr "вичерпана пам'ять при збереженні стану сеансу" #: ../src/session.c:1106 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:1244 msgid "connection to the session manager was lost" msgstr "втрачено з'єднання з менеджером сеансів" #: ../src/stacking.c:79 msgid "could not get window list!!" msgstr "не вдалось отримати список вікон!!" #: ../src/startup.c:202 #, c-format msgid "internal X error: %s\n" msgstr "внутрішня помилка X сервера: %s\n" #: ../src/startup.c:260 #, c-format msgid "got signal %i (%s) - restarting\n" msgstr "отримано сигнал %i (%s) -- перезапуск\n" #: ../src/startup.c:262 #, c-format msgid "got signal %i - restarting\n" msgstr "отримано сигнал %i - перезапуск\n" #: ../src/startup.c:272 #, c-format msgid "got signal %i (%s) - rereading defaults\n" msgstr "отримано сигнал %i (%s) -- перечитування умовчань\n" #: ../src/startup.c:274 #, c-format msgid "got signal %i - rereading defaults\n" msgstr "отримано сигнал %i - перечитування умовчань\n" #: ../src/startup.c:284 #, c-format msgid "got signal %i (%s) - exiting...\n" msgstr "отримано сигнал %i (%s) -- завершення роботи...\n" #: ../src/startup.c:286 #, c-format msgid "got signal %i - exiting...\n" msgstr "отримано сигнал %i -- завершення роботи...\n" #: ../src/startup.c:329 #, c-format msgid "got signal %i (%s)\n" msgstr "отримано сигнал %i (%s)\n" #: ../src/startup.c:331 #, c-format msgid "got signal %i\n" msgstr "отримано сигнал %i\n" #: ../src/startup.c:342 msgid "" "crashed while trying to do some post-crash cleanup. Aborting immediatelly." msgstr "" "критична помилка під час відновлення після збою. НЕГАЙНЕ завершення роботи." #. we try to restart Window Maker #: ../src/startup.c:406 msgid "trying to restart Window Maker..." msgstr "спроба перезапустити Window Maker..." #: ../src/startup.c:411 msgid "trying to start alternate window manager..." msgstr "спроба запуску альтернативного менеджера вікон..." #: ../src/startup.c:417 msgid "failed to start alternate window manager. Aborting." msgstr "не вдалось запустити альтернативний менеджер вікон. Завершення." #: ../src/startup.c:419 msgid "" "a fatal error has occured, probably due to a bug. Please fill the included " "BUGFORM and report it." msgstr "" "виникла критична помилка. Можливо, це результат помилки в програмі. Будь " "ласка, заповніть форму BUGFORM і відправте автору." #: ../src/startup.c:894 #, 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:922 msgid "XKB is not supported. KbdModeLock is automatically disabled." msgstr "XKB не підтримується. KbdModeLock автоматично заборонено." #: ../src/startup.c:941 msgid "it seems that there is already a window manager running" msgstr "схоже, що вже працює інший менеджер вікон" #: ../src/startup.c:947 #, c-format msgid "could not manage screen %i" msgstr "не вдається керувати екраном %i" #: ../src/startup.c:1015 msgid "could not manage any screen" msgstr "не вдається керувати жодним екраном" #: ../src/switchmenu.c:137 msgid "Windows" msgstr "Вікна" #: ../src/texture.c:329 ../src/texture.c:371 #, c-format msgid "image file \"%s\" used as texture could not be found." msgstr "файл зображення текстури \"%s\" не знайдено." #: ../src/texture.c:335 ../src/texture.c:377 #, c-format msgid "could not load texture pixmap \"%s\":%s" msgstr "не вдалось завантажити растрове зображення з текстурою \"%s\":%s" #: ../src/texture.c:437 #, c-format msgid "library \"%s\" cound not be opened." msgstr "не вдалось відкрити бібліотеку \"%s\"." #: ../src/texture.c:446 #, c-format msgid "function \"%s\" not found in library \"%s\"" msgstr "функція \"%s\" не знайдена в бібліотеці \"%s\"" #: ../src/texture.c:453 msgid "function textures not supported on this system, sorry." msgstr "функціональні текстури не підтримуються цією системою." #: ../src/texture.c:598 msgid "could not allocate image buffer" msgstr "не вдалось виділити буфер для зображення " #: ../src/wdefaults.c:437 #, c-format msgid "could not find icon file \"%s\"" msgstr "не вдалось знайти файл іконки \"%s\"" #: ../src/window.c:2934 ../src/window.c:3073 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:126 msgid "" "This will kill the application.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" "Це примусово завершить програму.\n" "Всі незбережені зміни будуть втрачені.\n" "Будь ласка, підтвердіть." #: ../src/winmenu.c:272 ../src/winmenu.c:281 msgid "Set Shortcut" msgstr "Встановити комбінацію клавіш" #: ../src/winmenu.c:359 ../src/winmenu.c:404 msgid "could not create submenu for window menu" msgstr "не вдалось створити підменю для меню вікна" #: ../src/winmenu.c:408 msgid "Keep on top" msgstr "Тримати над вікнами" #: ../src/winmenu.c:413 msgid "Keep at bottom" msgstr "Тримати під вікнами" #: ../src/winmenu.c:457 ../src/winmenu.c:600 msgid "Shade" msgstr "Звернути в смужку" #: ../src/winmenu.c:473 msgid "Hide Others" msgstr "Приховати інші" #: ../src/winmenu.c:481 msgid "Resize/Move" msgstr "Змінити розмір/перемістити" #: ../src/winmenu.c:489 msgid "Select" msgstr "Вибрати" #: ../src/winmenu.c:502 msgid "Attributes..." msgstr "Атрибути..." #: ../src/winmenu.c:504 msgid "Options" msgstr "Опції" #: ../src/winmenu.c:595 msgid "Unshade" msgstr "Витягти із смужки" #: ../src/winspector.c:387 #, c-format msgid "Could not find icon \"%s\" specified for this window" msgstr "Неможливо знайти іконку \"%s\", вказану для цього вікна" #: ../src/winspector.c:404 #, c-format msgid "Could not open specified icon \"%s\":%s" msgstr "Неможливо відкрити вказаний файл іконки \"%s\":%s" #: ../src/winspector.c:1123 #, c-format msgid "Inspecting %s.%s" msgstr "Інспектується %s.%s" #: ../src/winspector.c:1149 msgid "Click in the window you wish to inspect." msgstr "Натисніть на вікні, яке хочете проінспектувати." #: ../src/winspector.c:1188 msgid "" "The configuration will apply to all\n" "windows that have their WM_CLASS\n" "property set to the above selected\n" "name, when saved." msgstr "" "При збереженні конфігурація буде застосована\n" "до всіх вікон, у яких WM_CLASS встановлено у\n" "вибране значення." #: ../src/winspector.c:1217 msgid "Save" msgstr "Зберегти" #: ../src/winspector.c:1225 msgid "Apply" msgstr "Застосувати" #: ../src/winspector.c:1231 msgid "Reload" msgstr "Перечитати" #: ../src/winspector.c:1240 ../src/winspector.c:1250 msgid "Window Specification" msgstr "Специфікація вікна" #: ../src/winspector.c:1241 msgid "Window Attributes" msgstr "Атрибути вікна" #: ../src/winspector.c:1242 msgid "Advanced Options" msgstr "Додаткові опції" #: ../src/winspector.c:1243 msgid "Icon and Initial Workspace" msgstr "Іконка і початковий стіл" #: ../src/winspector.c:1244 msgid "Application Specific" msgstr "Властивості програми" #: ../src/winspector.c:1258 msgid "Defaults for all windows" msgstr "Умовчання для всіх вікон" #: ../src/winspector.c:1312 msgid "Select window" msgstr "Виберіть вікно" #: ../src/winspector.c:1326 msgid "Attributes" msgstr "Атрибути" #: ../src/winspector.c:1337 msgid "Disable titlebar" msgstr "Прибрати шапку вікна" #: ../src/winspector.c:1339 msgid "" "Remove the titlebar of this window.\n" "To access the window commands menu of a window\n" "without it's titlebar, press Control+Esc (or the\n" "equivalent shortcut, if you changed the default\n" "settings)." msgstr "" "Прибрати смужку заголовка цього вікна.\n" "Для доступу до меню команд вікна при відсутності\n" "його шапки, натисніть Control+Esc (чи еквівалентну\n" "комбінацію, якщо Ви змінили установки за\n" "умовчанням)." #: ../src/winspector.c:1346 msgid "Disable resizebar" msgstr "Прибрати смужку зміни розміру" #: ../src/winspector.c:1348 msgid "Remove the resizebar of this window." msgstr "Прибрати смужку зміни розміру цього вікна." #: ../src/winspector.c:1351 msgid "Disable close button" msgstr "Прибрати кнопку закриття" #: ../src/winspector.c:1353 msgid "Remove the `close window' button of this window." msgstr "Прибрати кнопку закриття для цього вікна." #: ../src/winspector.c:1356 msgid "Disable miniaturize button" msgstr "Прибрати кнопку мінімізації" #: ../src/winspector.c:1358 msgid "Remove the `miniaturize window' button of the window." msgstr "Прибрати кнопку мінімізації для цього вікна." #: ../src/winspector.c:1361 msgid "Disable border" msgstr "Прибрати бордюр вікна" #: ../src/winspector.c:1363 msgid "Remove the 1 pixel black border around the window." msgstr "Прибрати 1-піксельний чорний бордюр навколо вікна." #: ../src/winspector.c:1366 msgid "Keep on top (floating)" msgstr "Завжди зверху (плаваюче)" #: ../src/winspector.c:1368 msgid "" "Keep the window over other windows, not allowing\n" "them to cover it." msgstr "" "Утримувати вікно поверх інших вікон, не дозволяючи\n" "їм покривати це вікно." #: ../src/winspector.c:1372 msgid "Keep at bottom (sunken)" msgstr "Завжди знизу (втоплене)" #: ../src/winspector.c:1374 msgid "Keep the window under all other windows." msgstr "Утримувати вікно покритим іншими перекриваючими вікнами." #: ../src/winspector.c:1379 msgid "Make window present in all workspaces." msgstr "Зробити вікно присутнім на всіх робочих столах." #: ../src/winspector.c:1382 msgid "Start miniaturized" msgstr "Запуск мінімізованим" #: ../src/winspector.c:1384 msgid "" "Make the window be automatically miniaturized when it's\n" "first shown." msgstr "" "Зробити вікно автоматично мінімізуючимся при\n" "початковому розміщенні." #: ../src/winspector.c:1388 msgid "Start maximized" msgstr "Запуск максимізованим" #: ../src/winspector.c:1390 msgid "" "Make the window be automatically maximized when it's\n" "first shown." msgstr "" "Зробити вікно автоматично максимізуючимся при\n" "початковому розміщенні." #: ../src/winspector.c:1394 msgid "Full screen maximization" msgstr "Максимізувати на весь экран" #: ../src/winspector.c:1396 msgid "" "Make the window use the whole screen space when it's\n" "maximized. The titlebar and resizebar will be moved\n" "to outside the screen." msgstr "" "Зробити це вікно займаючим увесь простір екрану при\n" "максимізації. Смужки заголовку і зміни розміру будуть\n" "зміщені за межі екрану." #: ../src/winspector.c:1413 msgid "Advanced" msgstr "Додатково" #: ../src/winspector.c:1430 msgid "Do not bind keyboard shortcuts" msgstr "Не прив'язувати комбінації клавіш" #: ../src/winspector.c:1432 msgid "" "Do not bind keyboard shortcuts from Window Maker\n" "when this window is focused. This will allow the\n" "window to receive all key combinations regardless\n" "of your shortcut configuration." msgstr "" "Не прив'язувати комбінації клавіш Window Maker'а\n" "при отриманні цим вікном фокусу вводу. Це дозволить\n" "вікну отримувати всі комбінації клавіш, незалежно\n" "від конфігурації їх прив'язки." #: ../src/winspector.c:1438 msgid "Do not bind mouse clicks" msgstr "Не прив'язувати натискання миші" #: ../src/winspector.c:1440 msgid "" "Do not bind mouse actions, such as `Alt'+drag\n" "in the window (when alt is the modifier you haveconfigured)." msgstr "" "Не прив'язувати дії миші, такі як `Alt'+буксирування\n" "у вікні (при встановленому модифікаторі `Alt')." #: ../src/winspector.c:1445 msgid "Do not show in the window list" msgstr "Не показувати вікно в списку вікон." #: ../src/winspector.c:1447 msgid "Do not list the window in the window list menu." msgstr "Не показувати це вікно в меню списку вікон." #: ../src/winspector.c:1450 msgid "Do not let it take focus" msgstr "Не передавати фокус вводу" #: ../src/winspector.c:1452 msgid "" "Do not let the window take keyboard focus when you\n" "click on it." msgstr "" "Не давати вікну отримувати фокус вводу з клавіатури\n" "при натисканні на ньому мишою." #: ../src/winspector.c:1456 msgid "Keep inside screen" msgstr "Завжди усередині екрану" #: ../src/winspector.c:1458 msgid "" "Do not allow the window to move itself completely\n" "outside the screen. For bug compatibility.\n" msgstr "" "Не дозволяти вікну повністю переміститися\n" "за межі екрану.\n" #: ../src/winspector.c:1462 msgid "Ignore 'Hide Others'" msgstr "Ігнорувати 'Приховати інші'" #: ../src/winspector.c:1464 msgid "" "Do not hide the window when issuing the\n" "`HideOthers' command." msgstr "" "Не приховувати це вікно при виконанні\n" "команди `Приховати інші'." #: ../src/winspector.c:1468 msgid "Ignore 'Save Session'" msgstr "Ігнорувати 'Зберегти сеанс'" #: ../src/winspector.c:1470 msgid "" "Do not save the associated application in the\n" "session's state, so that it won't be restarted\n" "together with other applications when Window Maker\n" "starts." msgstr "" "Не зберігати асоційовану програму в\n" "стані сеансу, так що вона не буде\n" "перезапущена разом з іншими програмами\n" "при запуску Window Maker'а." # #: ../src/winspector.c:1476 msgid "Emulate application icon" msgstr "Емулювати іконку програми" #: ../src/winspector.c:1478 msgid "" "Make this window act as an application that provides\n" "enough information to Window Maker for a dockable\n" "application icon to be created." msgstr "" "Зробити це вікно ведучим себе як програма, що\n" "надає достатньо інформації Window Maker'у для\n" "створення іконки програми, яка заноситься в Док." #: ../src/winspector.c:1484 msgid "Disable language button" msgstr "Прибрати кнопку мови" #: ../src/winspector.c:1486 msgid "Remove the `toggle language' button of the window." msgstr "Прибрати кнопку перемикання мови клавіатури для вікна." #: ../src/winspector.c:1503 msgid "Miniwindow Image" msgstr "Мініатюрне Зображення" #: ../src/winspector.c:1530 msgid "Icon filename:" msgstr "Ім'я файлу іконки:" #: ../src/winspector.c:1543 msgid "Ignore client supplied icon" msgstr "Ігнорувати іконку клієнта" #: ../src/winspector.c:1550 msgid "Initial Workspace" msgstr "Початковий Робочий стіл" #: ../src/winspector.c:1552 msgid "The workspace to place the window when it'sfirst shown." msgstr "Робочий стіл, куди помістити вікно при початковій його появі." #: ../src/winspector.c:1558 msgid "Nowhere in particular" msgstr "Не задається" #: ../src/winspector.c:1576 msgid "Application Attributes" msgstr "Відноситься до програми" #: ../src/winspector.c:1587 msgid "Start hidden" msgstr "Запускати прихованою" #: ../src/winspector.c:1589 msgid "Automatically hide application when it's started." msgstr "Автоматично приховувати програму при її запуску." #: ../src/winspector.c:1592 msgid "No application icon" msgstr "Не показувати іконку" #: ../src/winspector.c:1594 msgid "" "Disable the application icon for the application.\n" "Note that you won't be able to dock it anymore,\n" "and any icons that are already docked will stop\n" "working correctly." msgstr "" "Заборонити іконку програми для цієї програми.\n" "Увага: ви не зможете після цього помістити її в Док,\n" "і всі її іконки, що вже в ньому знаходяться, припинять\n" "коректно працювати." # #: ../src/winspector.c:1600 msgid "Shared application icon" msgstr "Спільна іконка програми" #: ../src/winspector.c:1602 msgid "" "Use a single shared application icon for all of\n" "the instances of this application.\n" msgstr "" "Використовувати єдину спільну іконку програми для\n" "всіх екземплярів цієї програми.\n" #: ../src/wmspec.c:277 msgid "out of memory while updating wm hints" msgstr "вичерпана пам'ять при оновленні wm hints" #: ../src/workspace.c:107 ../src/workspace.c:108 ../src/workspace.c:893 #, c-format msgid "Workspace %i" msgstr "Робочий стіл %i" #: ../src/workspace.c:943 msgid "Workspaces" msgstr "Робочі столи" #: ../src/workspace.c:945 msgid "could not create Workspace menu" msgstr "не вдається створити меню Робочих столів" #: ../src/workspace.c:952 msgid "New" msgstr "Створити" #: ../src/workspace.c:953 msgid "Destroy Last" msgstr "Знищити останній" WindowMaker-0.95.9/po/zh_TW.po0000644000175000017500000015266013431646201013011 00000000000000# Window Maker PO file for Traditional Chinese. # Copyright (C) 1999-2001 Free Software Foundation, Inc. # Li Wei Jih , 1999, 2005. # Minor modifications by Anthony Fok , 2001. msgid "" msgstr "" "Project-Id-Version: Window Maker-0.91.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2005-01-06 09:28+0800\n" "PO-Revision-Date: 2005-01-11 17:45+0800\n" "Last-Translator: Li Wei Jih \n" "Language-Team: chinese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" #: ../src/appicon.c:415 ../src/dialog.c:295 ../src/dock.c:3335 #: ../src/dockedapp.c:231 ../src/main.c:271 ../src/rootmenu.c:1854 #: ../src/winspector.c:394 ../src/winspector.c:411 msgid "Error" msgstr "錯誤" #: ../src/appicon.c:416 msgid "Could not open specified icon file" msgstr "無法開啟指定的圖示檔" #: ../src/appicon.c:417 ../src/dialog.c:192 ../src/dialog.c:295 #: ../src/dialog.c:725 ../src/dialog.c:1796 ../src/dock.c:515 #: ../src/dock.c:523 ../src/dock.c:547 ../src/dock.c:3336 #: ../src/dockedapp.c:232 ../src/dockedapp.c:427 ../src/main.c:271 #: ../src/rootmenu.c:1858 ../src/winspector.c:395 ../src/winspector.c:412 msgid "OK" msgstr "確定" #: ../src/appicon.c:445 ../src/dock.c:244 msgid "" " will be forcibly closed.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" " 會被強迫結束。\n" "任何未儲存的改變將會遺失。\n" "請確認。" #: ../src/appicon.c:453 ../src/dock.c:263 ../src/winmenu.c:124 msgid "Kill Application" msgstr "結束應用程式" #: ../src/appicon.c:454 ../src/dock.c:264 ../src/winmenu.c:126 msgid "Yes" msgstr "是" #: ../src/appicon.c:454 ../src/dock.c:264 ../src/winmenu.c:126 msgid "No" msgstr "否" #: ../src/appicon.c:484 ../src/dock.c:1168 ../src/dock.c:3501 msgid "Unhide Here" msgstr "在此顯現" #: ../src/appicon.c:485 ../src/appicon.c:510 ../src/dock.c:1170 #: ../src/dock.c:1172 ../src/dock.c:3513 ../src/winmenu.c:461 msgid "Hide" msgstr "隱藏" #: ../src/appicon.c:486 msgid "Set Icon..." msgstr "設定圖示..." #: ../src/appicon.c:487 ../src/dock.c:1176 ../src/rootmenu.c:248 #: ../src/rootmenu.c:264 ../src/winmenu.c:508 msgid "Kill" msgstr "結束" #: ../src/appicon.c:508 ../src/dock.c:3511 msgid "Unhide" msgstr "顯現" #: ../src/application.c:405 #, c-format msgid "recreating missing icon '%s'" msgstr "重建遺失的圖示 '%s'" #: ../src/defaults.c:933 ../src/defaults.c:1095 #, c-format msgid "Domain %s (%s) of global defaults database is corrupted!" msgstr "整體預設資料庫的定義域 %s (%s) 已損壞!" #: ../src/defaults.c:938 #, c-format msgid "could not load domain %s from global defaults database" msgstr "無法從整體預設資料庫載入定義域 %s" #: ../src/defaults.c:990 ../src/defaults.c:1005 #, c-format msgid "invalid global menu file %s" msgstr "全域選單檔案 %s 無效" #: ../src/defaults.c:1033 ../src/startup.c:762 ../src/startup.c:780 #: ../src/startup.c:787 #, c-format msgid "could not read domain \"%s\" from defaults database" msgstr "無法從預設資料庫讀取定義域 \"%s\"" #: ../src/defaults.c:1079 ../src/defaults.c:1184 ../src/defaults.c:1225 #: ../src/defaults.c:1281 #, c-format msgid "Domain %s (%s) of defaults database is corrupted!" msgstr "預設資料庫的定義域 %s (%s) 已損壞!" #: ../src/defaults.c:1084 ../src/defaults.c:1204 ../src/defaults.c:1261 #: ../src/defaults.c:1291 #, c-format msgid "could not load domain %s from user defaults database" msgstr "無法從使用者預設資料庫載入定義域 %s" #: ../src/defaults.c:1114 #, c-format msgid "could not load domain %s from global defaults database (%s)" msgstr "無法從整體預設資料庫 (%2$s) 載入定義域 %1$s" #: ../src/defaults.c:1251 ../src/screen.c:419 #, c-format msgid "could not load logo image for panels: %s" msgstr "無法載入面板的標識影像: %s" #. --------------------------- Local ----------------------- #: ../src/defaults.c:1500 ../src/defaults.c:1639 ../src/defaults.c:1765 #: ../src/defaults.c:2243 ../src/defaults.c:2260 ../src/defaults.c:2305 #: ../src/defaults.c:2352 ../src/defaults.c:2825 ../src/wdefaults.c:571 #: ../src/wdefaults.c:604 #, c-format msgid "Wrong option format for key \"%s\". Should be %s." msgstr "key \"%s\" 的選項格式錯誤。應為 %s。" #: ../src/defaults.c:1502 ../src/defaults.c:1583 ../src/defaults.c:1613 #: ../src/defaults.c:1644 ../src/defaults.c:1657 ../src/defaults.c:1672 #: ../src/defaults.c:1686 ../src/defaults.c:1770 ../src/defaults.c:1782 #: ../src/defaults.c:2248 ../src/defaults.c:2265 ../src/defaults.c:2278 #: ../src/defaults.c:2310 ../src/defaults.c:2326 ../src/defaults.c:2357 #: ../src/defaults.c:2444 ../src/defaults.c:2830 ../src/defaults.c:2841 #, c-format msgid "using default \"%s\" instead" msgstr "改用預設 \"%s\"" #: ../src/defaults.c:1533 #, c-format msgid "wrong option value for key \"%s\". Should be one of %s" msgstr "key \"%s\" 的選項值錯誤。應為 %s " #: ../src/defaults.c:1578 #, c-format msgid "can't convert \"%s\" to boolean for key \"%s\"" msgstr "無法轉換 key \"%2$s\" 的 \"%1$s\" 成為 boolean" #: ../src/defaults.c:1610 #, c-format msgid "can't convert \"%s\" to integer for key \"%s\"" msgstr "無法轉換 key \"%2$s\" 的 \"%1$s\" 成為整數" #: ../src/defaults.c:1652 #, c-format msgid "Incorrect number of elements in array for key \"%s\"." msgstr "key \"%s\" 的陣列元素數目錯誤。" #: ../src/defaults.c:1667 #, c-format msgid "Wrong value for key \"%s\". Should be Coordinate." msgstr "key \"%s\" 的值錯誤。應為座標。" #: ../src/defaults.c:1682 #, c-format msgid "can't convert array to integers for \"%s\"." msgstr "無法為 \"%s\" 轉換陣列成為整數。" #: ../src/defaults.c:1715 #, c-format msgid "Wrong value for key \"%s\". Should be an array." msgstr "key \"%s\" 的值錯誤。應為陣列。" #: ../src/defaults.c:1893 ../src/defaults.c:1925 ../src/defaults.c:1941 #: ../src/defaults.c:1970 ../src/defaults.c:1993 ../src/defaults.c:2046 #: ../src/defaults.c:2086 ../src/defaults.c:2124 ../src/defaults.c:2140 #, c-format msgid "\"%s\" is not a valid color name" msgstr "\"%s\" 不是有效的顏色名" #: ../src/defaults.c:1906 ../src/defaults.c:1958 msgid "bad number of arguments in gradient specification" msgstr "漸層規格中引數數目錯誤" #: ../src/defaults.c:2019 msgid "too few arguments in multicolor gradient specification" msgstr "多色漸層規格中引數太少" #: ../src/defaults.c:2113 msgid "bad number of arguments in textured gradient specification" msgstr "材質漸層規格中引數數目錯誤" #: ../src/defaults.c:2156 #, c-format msgid "bad opacity value for tgradient texture \"%s\". Should be [0..255]" msgstr "漸層 (tgradient) 材質 \"%s\" 不透明值錯誤。應該是 [0..255]" #: ../src/defaults.c:2216 #, c-format msgid "could not initialize library %s" msgstr "無法啟始函式庫: %s" #: ../src/defaults.c:2219 #, c-format msgid "could not find function %s::%s" msgstr "找不到函式 %s::%s" #: ../src/defaults.c:2226 #, c-format msgid "invalid texture type %s" msgstr "材質型態 %s 無效" #: ../src/defaults.c:2273 #, c-format msgid "Error in texture specification for key \"%s\"" msgstr "key \"%s\" 的材質規格錯誤" #: ../src/defaults.c:2322 msgid "Wrong type for workspace background. Should be a texture type." msgstr "工作區背景型態錯誤。應為材質型態。" #: ../src/defaults.c:2370 #, c-format msgid "Wrong type for background of workspace %i. Should be a texture." msgstr "工作區 %i 背景型態錯誤。應為材質。" #: ../src/defaults.c:2412 msgid "could not load any usable font!!!" msgstr "無法載入任何可用字型!!!" #: ../src/defaults.c:2439 #, c-format msgid "could not get color for key \"%s\"" msgstr "無法取得 key \"%s\" 的色彩" #: ../src/defaults.c:2497 ../src/rootmenu.c:531 #, c-format msgid "%s:invalid key modifier \"%s\"" msgstr "%s: 鍵修正 \"%s\" 無效" #: ../src/defaults.c:2509 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\"" msgstr "%s: 鍵盤捷徑規格 \"%s\" 無效" #: ../src/defaults.c:2516 #, c-format msgid "%s:invalid key in shortcut \"%s\"" msgstr "%s: 捷徑 \"%s\" 的鍵無效" #: ../src/defaults.c:2541 #, c-format msgid "%s: modifier key %s is not valid" msgstr "%s: 修正鍵 %s 不正確" #: ../src/defaults.c:2573 #, c-format msgid "could not load image in option %s: %s" msgstr "無法載入影像於選項 %s: %s" #: ../src/defaults.c:2690 #, c-format msgid "failed to open bitmap file \"%s\"" msgstr "無法開啟映像檔 \"%s\"" #: ../src/defaults.c:2693 #, c-format msgid "\"%s\" is not a valid bitmap file" msgstr "\"%s\" 不是有效的映像檔名" #: ../src/defaults.c:2696 #, c-format msgid "out of memory reading bitmap file \"%s\"" msgstr "讀入 \"%s\" 映像檔時記憶體不足" #: ../src/defaults.c:2735 ../src/defaults.c:2768 msgid "bad number of arguments in cursor specification" msgstr "游標規格中引數數目錯誤" #: ../src/defaults.c:2751 #, c-format msgid "unknown builtin cursor name \"%s\"" msgstr "不明的內建游標名稱 \"%s\"" #: ../src/defaults.c:2778 ../src/defaults.c:2790 #, c-format msgid "could not find cursor bitmap file \"%s\"" msgstr "無法找到游標映像檔 \"%s\"" #: ../src/defaults.c:2837 #, c-format msgid "Error in cursor specification for key \"%s\"" msgstr "key \"%s\" 的游標規格錯誤" #: ../src/defaults.c:2922 msgid "could not render texture for icon background" msgstr "無法表現圖示背景的材質" # y, c-format #: ../src/defaults.c:3542 ../src/defaults.c:3617 #, c-format msgid "Invalid arguments for option \"%s\"" msgstr "選項 \"%s\"引數無效" #: ../src/defaults.c:3549 ../src/defaults.c:3624 #, c-format msgid "Could not find image \"%s\" for option \"%s\"" msgstr "無法找到選項 \"%2$s\"的影像 \"%1$s\"" #: ../src/defaults.c:3555 ../src/defaults.c:3632 #, c-format msgid "Could not load image \"%s\" for option \"%s\"" msgstr "無法載入選項 \"%2$s\"的影像 \"%1$s\"" #: ../src/defaults.c:3567 msgid "Invalid split sizes for switch panel back image." msgstr "「切換面版」底圖的分割大小無效。" #: ../src/defaults.c:3640 #, c-format msgid "Invalid number of arguments for option \"%s\"" msgstr "選項 \"%s\"的引數數目錯誤" #: ../src/dialog.c:147 msgid "Save workspace state" msgstr "儲存工作區狀態" #: ../src/dialog.c:192 ../src/dialog.c:732 ../src/dock.c:547 #: ../src/dockedapp.c:432 ../src/rootmenu.c:198 ../src/rootmenu.c:248 #: ../src/rootmenu.c:264 msgid "Cancel" msgstr "取消" #: ../src/dialog.c:290 msgid "Could not open directory \"%s\":\n%s" msgstr "無法開啟目錄 \"%s\":\n%s" #: ../src/dialog.c:345 msgid "Could not load image file " msgstr "無法載入影像檔" #: ../src/dialog.c:659 msgid "Directories" msgstr "目錄" #: ../src/dialog.c:668 msgid "Icons" msgstr "圖示" #: ../src/dialog.c:701 msgid "Preview" msgstr "預覽" #: ../src/dialog.c:714 msgid "File Name:" msgstr "檔名:" #: ../src/dialog.c:738 msgid "Choose File" msgstr "選取檔案" #: ../src/dialog.c:757 ../src/dialog.c:759 msgid "Icon Chooser" msgstr "圖示選取器" #: ../src/dialog.c:1196 ../src/dialog.c:1304 #, c-format msgid "Version %s" msgstr "版本 %s" #: ../src/dialog.c:1302 msgid "Window Manager for X" msgstr "X 底下的視窗管理員" #: ../src/dialog.c:1325 #, c-format msgid "Using visual 0x%x: %s %ibpp " msgstr "使用 visual 0x%x: %s %ibpp " #: ../src/dialog.c:1333 msgid "(32 thousand colors)\n" msgstr "(三萬二千色)\n" #: ../src/dialog.c:1336 msgid "(64 thousand colors)\n" msgstr "(六萬四千色)\n" #: ../src/dialog.c:1340 msgid "(16 million colors)\n" msgstr "(一千六百萬色)\n" #: ../src/dialog.c:1343 #, c-format msgid "(%d colors)\n" msgstr "(%d 色)\n" #: ../src/dialog.c:1353 #, c-format msgid "Total allocated memory: %i kB. Total memory in use: %i kB.\n" msgstr "已配置記憶體總計: %i kB。使用中憶體總計: %i kB。\n" #: ../src/dialog.c:1283 msgid "Image formats: " msgstr "影像格式: " #: ../src/dialog.c:1367 msgid "" "\n" "Additional support for: " msgstr "" "\n" "額外支援: " #: ../src/dialog.c:1384 msgid " and " msgstr " 和 " #: ../src/dialog.c:1394 msgid "" "\n" "Sound disabled" msgstr "" "\n" "音效未啟動" #: ../src/dialog.c:1396 msgid "" "\n" "Sound enabled" msgstr "" "\n" "音效已啟動" #: ../src/dialog.c:1401 msgid ", VirtualDesktop enabled" msgstr ",虛擬桌面已啟動" #: ../src/dialog.c:1403 msgid ", VirtualDesktop disabled" msgstr ",虛擬桌面未啟動" #: ../src/dialog.c:1407 msgid "\n" msgstr "\n" #: ../src/dialog.c:1409 msgid "Solaris " msgstr "Solaris " #: ../src/dialog.c:1411 msgid "Xinerama: " msgstr "Xinerama: " #: ../src/dialog.c:1445 msgid "Info" msgstr "資訊" #: ../src/dialog.c:1469 msgid "Merry Christmas!" msgstr "聖誕快樂!" #: ../src/dialog.c:1417 msgid "" " Window Maker 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.\n" "\n" " Window Maker 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.\n" "\n" " You should have received a copy of the GNU General Public License along " "with this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin Street, Fifth Floor, Boston, MA02110-1301 USA." msgstr "" #: ../src/dialog.c:1563 msgid "Legal" msgstr "法律" #: ../src/dialog.c:1719 msgid "cannot open connection for crashing dialog panel. Aborting." msgstr "無法開啟崩潰對話面板的連線。放棄中。" #: ../src/dialog.c:1745 msgid "Fatal error" msgstr "嚴重錯誤" #: ../src/dialog.c:1756 #, c-format msgid "" "Window Maker received signal %i\n" "(%s)." msgstr "" "Window Maker 收到訊號 %i\n" "(%s)." #: ../src/dialog.c:1759 #, c-format msgid "Window Maker received signal %i." msgstr "Window Maker 收到訊號 %i。" #: ../src/dialog.c:1768 msgid "" " This fatal error occured probably due to a bug. Please fill the included " "BUGFORM and report it to %s." msgstr "" "這個嚴重錯誤可能是因為程式錯誤所致。請填寫附帶的 BUGFORM 並向 " "%s 提出報告。" #: ../src/dialog.c:1777 msgid "What do you want to do now?" msgstr "你現在要做什麼?" #: ../src/dialog.c:1783 msgid "Select action" msgstr "選取動作" #: ../src/dialog.c:1784 msgid "Abort and leave a core file" msgstr "放棄並留下 core 檔" #: ../src/dialog.c:1785 msgid "Restart Window Maker" msgstr "重新啟動 Window Maker" #: ../src/dialog.c:1786 msgid "Start alternate window manager" msgstr "啟動另一套視窗管理員" #: ../src/dialog.c:1964 msgid "" "Window Maker is part of the GNUstep project.\n" "The GNUstep project aims to create a free\n" "implementation of the OpenStep(tm) specification\n" "which is a object-oriented framework for\n" "creating advanced graphical, multi-platform\n" "applications. Additionally, a development and\n" "user desktop environment will be created on top\n" "of the framework. For more information about\n" "GNUstep, please visit: www.gnustep.org" msgstr "" #: ../src/dialog.c:1987 msgid "About GNUstep" msgstr "有關 GNUstep" #: ../src/dock.c:193 #, c-format msgid "Type the name for workspace %i:" msgstr "輸入工作區 %i 名稱:" #: ../src/dock.c:194 ../src/dock.c:1132 ../src/dock.c:1135 ../src/dock.c:3419 msgid "Rename Workspace" msgstr "工作區更名" #: ../src/dock.c:509 ../src/dock.c:517 msgid "Warning" msgstr "警告" #: ../src/dock.c:510 msgid "" "Some icons cannot be made omnipresent. Please make sure that no other icon " "is docked in the same positions on the other workspaces and the Clip is not " "full in some workspace." msgstr "" "有些圖示無法變成無所不在。請確認無其他圖示停靠在其他工作區的相同位置" "且某些工作區的迴紋針未滿。" #: ../src/dock.c:518 msgid "" "Icon cannot be made omnipresent. Please make sure that no other icon is " "docked in the same position on the other workspaces and the Clip is not full " "in some workspace." msgstr "" "圖示無法變成無所不在。請確認無其他圖示停靠在其他工作區的相同位置" "且某些工作區的迴紋針未滿。" #: ../src/dock.c:545 msgid "Workspace Clip" msgstr "工作區迴紋針" #: ../src/dock.c:546 msgid "All selected icons will be removed!" msgstr "所有選取的圖示會被刪除!" #: ../src/dock.c:598 ../src/dock.c:1147 ../src/dock.c:1149 ../src/dock.c:3455 msgid "Keep Icon" msgstr "保持圖示" #: ../src/dock.c:599 ../src/dock.c:2139 ../src/dock.c:2276 msgid "Type the command used to launch the application" msgstr "輸入用來啟動應用程式的命令" #: ../src/dock.c:954 #, c-format msgid "could not launch application %s\n" msgstr "無法啟動應用程式 %s\n" #: ../src/dock.c:1010 msgid "could not create workspace submenu for Clip menu" msgstr "無法為迴紋針選單建立工作區副選單" #: ../src/dock.c:1069 msgid "could not create options submenu for Clip menu" msgstr "無法為迴紋針選單建立選項副選單" #: ../src/dock.c:1073 ../src/dock.c:1121 msgid "Keep on Top" msgstr "保持在最上層" #: ../src/dock.c:1079 msgid "Collapsed" msgstr "折疊" #: ../src/dock.c:1085 msgid "Autocollapse" msgstr "自動折疊" #: ../src/dock.c:1091 msgid "Autoraise" msgstr "自動升降" #: ../src/dock.c:1097 msgid "Autoattract Icons" msgstr "自動吸引圖示" #: ../src/dock.c:1127 msgid "Clip Options" msgstr "迴紋針選項" #: ../src/dock.c:1137 msgid "Selected" msgstr "已選取" #: ../src/dock.c:1142 ../src/dock.c:1145 ../src/dock.c:3446 msgid "Select All Icons" msgstr "選取所有圖示" #: ../src/dock.c:1151 ../src/dock.c:1153 ../src/dock.c:3463 msgid "Move Icon To" msgstr "移動圖示至" #: ../src/dock.c:1158 ../src/dock.c:1161 ../src/dock.c:3474 msgid "Remove Icon" msgstr "刪除圖示" #: ../src/dock.c:1163 msgid "Attract Icons" msgstr "吸引圖示" #: ../src/dock.c:1166 msgid "Launch" msgstr "啟動" #: ../src/dock.c:1174 msgid "Settings..." msgstr "設定..." #: ../src/dock.c:1538 ../src/dock.c:1645 #, c-format msgid "bad value in docked icon state info %s" msgstr "停靠的圖示狀態資訊 %s 值不正確" #: ../src/dock.c:1653 #, c-format msgid "bad value in docked icon position %i,%i" msgstr "停靠的圖示位置 %i,%i 值不正確" #: ../src/dock.c:1673 #, c-format msgid "bad value in dock state info:%s" msgstr "停靠區的狀態資訊 %s 值不正確" #: ../src/dock.c:1923 msgid "there are too many icons stored in dock. Ignoring what doesn't fit" msgstr "太多圖示存放在停靠區。忽略不適當的" #. icon->forced_dock = 1; #: ../src/dock.c:2138 ../src/dock.c:2275 msgid "Dock Icon" msgstr "停靠圖示" #: ../src/dock.c:3333 #, c-format msgid "Could not execute command \"%s\"" msgstr "無法執行命令 \"%s\"" #: ../src/dock.c:3425 msgid "Toggle Omnipresent" msgstr "切換無所不在" #: ../src/dock.c:3430 ../src/winmenu.c:414 ../src/winspector.c:1383 msgid "Omnipresent" msgstr "無所不在" #: ../src/dock.c:3444 msgid "Unselect All Icons" msgstr "取消選取所有圖示" #: ../src/dock.c:3453 msgid "Keep Icons" msgstr "保持圖示" #: ../src/dock.c:3461 msgid "Move Icons To" msgstr "移動圖示至" #: ../src/dock.c:3472 msgid "Remove Icons" msgstr "刪除圖示" #: ../src/dock.c:3503 msgid "Bring Here" msgstr "帶至這理" #: ../src/dockedapp.c:150 #, c-format msgid "could not find icon %s, used in a docked application" msgstr "無法找到圖示 %s,用於停靠的應用程式" #: ../src/dockedapp.c:230 #, c-format msgid "Could not open specified icon file: %s" msgstr "無法開啟指定的圖示檔: %s" #: ../src/dockedapp.c:232 msgid "Ignore" msgstr "忽略" #: ../src/dockedapp.c:334 msgid "Start when Window Maker is started" msgstr "當 Window Maker 啟動時啟動" #: ../src/dockedapp.c:341 msgid "Lock (prevent accidental removal)" msgstr "鎖定 (防止意外刪除)" #: ../src/dockedapp.c:345 msgid "Application path and arguments" msgstr "應用程式路徑與引數" #: ../src/dockedapp.c:358 msgid "Command for middle-click launch" msgstr "滑鼠中鍵開啟的程式" #: ../src/dockedapp.c:372 #, c-format msgid "%s will be replaced with current selection" msgstr "%s 會被目前選定物取代" #: ../src/dockedapp.c:377 msgid "Command for files dropped with DND" msgstr "DND 放置檔案的命令" #: ../src/dockedapp.c:391 #, c-format msgid "%d will be replaced with the file name" msgstr "%d 會被檔名取代" #: ../src/dockedapp.c:395 msgid "DND support was not compiled in" msgstr "未編譯入 DND 支援" #: ../src/dockedapp.c:400 msgid "Icon Image" msgstr "圖示影像" #: ../src/dockedapp.c:414 ../src/winspector.c:1521 msgid "Browse..." msgstr "瀏覽..." #: ../src/dockedapp.c:475 msgid "Docked Application Settings" msgstr "停靠的應用程式設定" #: ../src/framewin.c:647 ../src/framewin.c:742 ../src/menu.c:463 #: ../src/texture.c:594 #, c-format msgid "could not render texture: %s" msgstr "無法表現材質: %s" #: ../src/framewin.c:670 ../src/framewin.c:681 ../src/framewin.c:697 #: ../src/framewin.c:708 ../src/framewin.c:715 ../src/framewin.c:722 #: ../src/icon.c:360 ../src/menu.c:492 #, c-format msgid "error rendering image:%s" msgstr "表現影像錯誤: %s" #: ../src/framewin.c:775 #, c-format msgid "error rendering image: %s" msgstr "表現影像錯誤: %s" #: ../src/icon.c:239 ../src/wdefaults.c:443 #, c-format msgid "error loading image file \"%s\": %s" msgstr "載入影像檔錯誤 \"%s\": %s" #: ../src/icon.c:503 ../src/icon.c:512 #, c-format msgid "could not create directory %s" msgstr "無法建立目錄 %s" #: ../src/icon.c:782 #, c-format msgid "could not find default icon \"%s\"" msgstr "無法載入預設圖示 \"%s\"" #: ../src/icon.c:788 #, c-format msgid "could not load default icon \"%s\":%s" msgstr "無法載入預設圖示 \"%s\":%s" #: ../src/main.c:220 msgid "failed to restart Window Maker." msgstr "重新啟動 Window Maker 失敗。" #: ../src/main.c:223 #, c-format msgid "could not exec %s" msgstr "無法執行 %s" #: ../src/main.c:269 msgid "Could not execute command: " msgstr "無法執行命令: " #: ../src/main.c:426 #, c-format msgid "%s aborted.\n" msgstr "%s 放棄。\n" #: ../src/main.c:437 #, c-format msgid "Usage: %s [options]\n" msgstr "使用法: %s [選項]\n" #: ../src/main.c:438 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:440 msgid " -display host:dpy\tdisplay to use" msgstr " -display host:dpy\t要使用的 display" #: ../src/main.c:442 msgid " --no-cpp \t\tdisable preprocessing of configuration files" msgstr " --no-cpp \t\t不預先處理設定檔" #: ../src/main.c:444 msgid " --no-dock\t\tdo not open the application Dock" msgstr " --no-dock\t\t不要開啟程式停靠區" #: ../src/main.c:445 msgid " --no-clip\t\tdo not open the workspace Clip" msgstr " --no-clip\t\t不要開啟工作區迴紋針" #: ../src/main.c:446 msgid " --no-autolaunch\tdo not autolaunch applications" msgstr " --no-autolaunch\t不要自動啟動應用程式" #: ../src/main.c:447 msgid " --dont-restore\t\tdo not restore saved session" msgstr " --dont-restore\t\t不要回存已儲存時段" #: ../src/main.c:449 msgid " --locale locale\tlocale to use" msgstr " --locale locale\t使用的 locale" #: ../src/main.c:451 msgid "" " --create-stdcmap\tcreate the standard colormap hint in PseudoColor visuals" msgstr "" " --create-stdcmap\t在虛擬色彩畫面中建立標準色彩對映提示" #: ../src/main.c:452 msgid " --visual-id visualid\tvisual id of visual to use" msgstr " --visual-id visualid\t所欲使用的 visual 之 visualid" #: ../src/main.c:453 msgid " --static\t\tdo not update or save configurations" msgstr " --static\t\t不要更新或儲存設定檔" #: ../src/main.c:454 msgid " --no-polling\t\tdo not periodically check for configuration updates" msgstr " --no-polling\t\t不要定時檢查設定檔更新" #: ../src/main.c:456 msgid " --synchronous\t\tturn on synchronous display mode" msgstr " --synchronous\t\t開啟同步顯示模式" #: ../src/main.c:458 msgid " --version\t\tprint version and exit" msgstr " --version\t\t印出版本編號並離開" #: ../src/main.c:459 msgid " --help\t\t\tshow this message" msgstr " --help\t\t\t顯示本說明訊息" #: ../src/main.c:473 #, 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" "確定你已經安裝 WindowMaker 正確且執行 wmaker.inst" #: ../src/main.c:478 #, c-format msgid "could not find user GNUstep directory (%s)." msgstr "無法找到使用者 GNUstep 目錄 (%s)。" #: ../src/main.c:481 msgid "" "There was an error while creating GNUstep directory, please make sure you " "have installed Window Maker correctly and run wmaker.inst" msgstr "" "建立 GNUstep 目錄時發生錯誤,請確定你已正確地安裝" "Window Maker 且執行 wmaker.inst" #: ../src/main.c:484 #, c-format msgid "%s directory created with default configuration." msgstr "%s 目錄已以預設設定建立。" #: ../src/main.c:506 ../src/main.c:511 #, c-format msgid "%s:could not execute initialization script" msgstr "%s: 啟始手稿無法執行" #: ../src/main.c:533 ../src/main.c:538 #, c-format msgid "%s:could not execute exit script" msgstr "%s: 離開手稿無法執行" #: ../src/main.c:622 ../src/main.c:722 ../src/main.c:730 ../src/main.c:738 #: ../src/main.c:758 #, c-format msgid "too few arguments for %s" msgstr "%s 的引數太少" #: ../src/main.c:742 #, c-format msgid "bad value for visualid: \"%s\"" msgstr "visualid 的值不正確: \"%s\"" # y, c-format #: ../src/main.c:766 #, c-format msgid "%s: invalid argument '%s'\n" msgstr "%s: 引數 '%s' 無效\n" #: ../src/main.c:767 #, c-format msgid "Try '%s --help' for more information\n" msgstr "試用 '%s --help' 來獲得更多資訊\n" #: ../src/main.c:802 msgid "X server does not support locale" msgstr "X 伺服器不支援 locale" #: ../src/main.c:806 msgid "cannot set locale modifiers" msgstr "無法設定 locale modifiers" #: ../src/main.c:822 #, c-format msgid "could not open display \"%s\"" msgstr "無法開啟 display \"%s\"" #: ../src/menu.c:1273 msgid "could not grab keyboard" msgstr "無法抓取鍵盤" #: ../src/menu.c:2612 #, c-format msgid "bad value in menus state info:%s" msgstr "選單的狀態資訊 %s 值不正確" #: ../src/misc.c:65 #, c-format msgid "could not define value for %s for cpp" msgstr "無法定義 cpp 的 %s 的值" #: ../src/misc.c:95 #, c-format msgid "could not get password entry for UID %i" msgstr "無法取得 UID %i 的密碼記錄" #: ../src/misc.c:120 #, c-format msgid "your machine is misconfigured. HOSTNAME is set to %s" msgstr "你的機器設定錯誤。HOSTNAME 設為 %s" #: ../src/misc.c:126 #, c-format msgid "your machine is misconfigured. HOST is set to %s" msgstr "你的機器設定錯誤。HOST 設為 %s" #: ../src/misc.c:621 msgid "Program Arguments" msgstr "程式引數" #: ../src/misc.c:622 msgid "Enter command arguments:" msgstr "輸入命令引數:" #: ../src/misc.c:736 ../src/misc.c:874 #, c-format msgid "out of memory during expansion of \"%s\"" msgstr "展開 \"%s\" 時記憶體不足" #: ../src/misc.c:790 msgid "out of memory during expansion of \"%w\"" msgstr "展開 \"%w\" 時記憶體不足" # #: ../src/misc.c:808 msgid "out of memory during expansion of \"%W\"" msgstr "展開 \"%W\" 時記憶體不足" #: ../src/misc.c:824 #, c-format msgid "out of memory during expansion of \"%a\"" msgstr "展開 \"%a\" 時記憶體不足" #: ../src/misc.c:853 #, c-format msgid "out of memory during expansion of \"%d\"" msgstr "展開 \"%d\" 時記憶體不足" #: ../src/misc.c:867 msgid "selection not available" msgstr "選取不能使用" #: ../src/misc.c:911 ../src/misc.c:917 #, c-format msgid "bad window name value in %s state info" msgstr "%s 狀態資訊中有無效的視窗名稱值" #: ../src/misc.c:1156 msgid "could not send message to background image helper" msgstr "無法傳送訊息至背景影像助手" #: ../src/pixmap.c:235 #, c-format msgid "could not load mask bitmap file \"%s\". Won't use mask" msgstr "無法載入遮罩位元映像檔 \"%s\"。不使用遮罩" #: ../src/resources.c:44 #, c-format msgid "could not parse color \"%s\"" msgstr "無法解析色彩 \"%s\"" #: ../src/resources.c:48 #, c-format msgid "could not allocate color \"%s\"" msgstr "無法配置色彩 \"%s\"" #: ../src/rootmenu.c:196 ../src/rootmenu.c:198 msgid "Exit" msgstr "離開" #: ../src/rootmenu.c:197 msgid "Exit window manager?" msgstr "離開視窗管理員?" #: ../src/rootmenu.c:245 msgid "Close X session" msgstr "關閉 X 視窗系統" #: ../src/rootmenu.c:246 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:248 ../src/winmenu.c:501 msgid "Close" msgstr "關閉" #: ../src/rootmenu.c:261 msgid "Kill X session" msgstr "結束 X 視窗系統" #: ../src/rootmenu.c:262 msgid "" "Kill Window System session?\n" "(all applications will be closed)" msgstr "" "結束視窗系統?\n" "(所有應用程式會被關閉)" #: ../src/rootmenu.c:544 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\" for entry %s" msgstr "%s: 鍵盤捷徑規格 \"%s\" 無效 (%s)" #: ../src/rootmenu.c:552 #, c-format msgid "%s:invalid key in shortcut \"%s\" for entry %s" msgstr "%s: 捷徑 \"%s\" 的鍵無效 (%s)" #: ../src/rootmenu.c:605 #, c-format msgid "%s: unmatched '\"' in menu file" msgstr "%s: 選單檔中 '\"' 不成對" #: ../src/rootmenu.c:655 #, c-format msgid "%s: missing command" msgstr "%s: 缺少命令" #: ../src/rootmenu.c:687 #, c-format msgid "invalid OPEN_MENU specification: %s" msgstr "無效的 OPEN_MENU 規格: %s" #: ../src/rootmenu.c:738 #, c-format msgid "%s:could not stat menu" msgstr "%s: 無法 stat 選單" #: ../src/rootmenu.c:746 #, c-format msgid "%s:could not stat menu:%s" msgstr "%s: 無法 stat 選單: %s" #: ../src/rootmenu.c:764 #, c-format msgid "too many parameters in OPEN_MENU: %s" msgstr "OPEN_MENU 中有太多參數: %s" #: ../src/rootmenu.c:808 msgid "" "There are more than one WORKSPACE_MENU commands in the applications menu. " "Only one is allowed." msgstr "應用程式選單中有超過一個 WORKSPACE_MENU 命令。只允許有一個。" #: ../src/rootmenu.c:842 msgid "" "There are more than one WINDOWS_MENU commands in the applications menu. Only " "one is allowed." msgstr "應用程式選單中有超過一個 WINDOWS_MENU 命令。只允許有一個。" #: ../src/rootmenu.c:847 msgid "Window List" msgstr "視窗清單" #: ../src/rootmenu.c:876 ../src/rootmenu.c:894 ../src/rootmenu.c:904 #, c-format msgid "%s:missing parameter for menu command \"%s\"" msgstr "%s: 選單命令 \"%s\" 缺少參數" #: ../src/rootmenu.c:972 #, c-format msgid "%s:unknown command \"%s\" in menu config." msgstr "%s: 選單設定中有不明的命令 \"%s\"。" #: ../src/rootmenu.c:980 #, c-format msgid "%s:can't add shortcut for entry \"%s\"" msgstr "%s: 無法為 \"%s\" 增加捷徑" #: ../src/rootmenu.c:1117 #, c-format msgid "%s:maximal line size exceeded in menu config: %s" msgstr "%s: 選單檔中超過最大行數: %s" #: ../src/rootmenu.c:1139 ../src/rootmenu.c:1232 ../src/rootmenu.c:1336 #, c-format msgid "%s:missing command in menu config: %s" msgstr "%s: 選單設定中缺少命令: %s" #: ../src/rootmenu.c:1169 #, c-format msgid "%s:syntax error in menu file:END declaration missing" msgstr "%s: 選單檔中語法錯誤: 缺少 END 宣告" #: ../src/rootmenu.c:1198 ../src/rootmenu.c:1300 msgid "could not make arguments for menu file preprocessor" msgstr "無法為選單檔預先處理器產生引數" #: ../src/rootmenu.c:1205 ../src/rootmenu.c:1308 #, c-format msgid "%s:could not open/preprocess menu file" msgstr "%s: 無法開啟/預先處理選單檔" #: ../src/rootmenu.c:1217 ../src/rootmenu.c:1321 #, c-format msgid "could not open menu file \"%s\": %s" msgstr "無法開啟選單檔 \"%s\": %s" #: ../src/rootmenu.c:1244 #, c-format msgid "%s:invalid menu file. MENU command is missing" msgstr "%s: 無效的選單檔。缺少 MENU 命令" #: ../src/rootmenu.c:1253 msgid "error reading preprocessed menu data" msgstr "預先處理選單資料讀取錯誤" #: ../src/rootmenu.c:1348 #, c-format msgid "%s:no title given for the root menu" msgstr "%s: 沒有給主選單標題" #: ../src/rootmenu.c:1439 ../src/rootmenu.c:1512 ../src/rootmenu.c:1553 #, c-format msgid "out of memory while constructing directory menu %s" msgstr "建立目錄選單 %s 時記憶體不足" #: ../src/rootmenu.c:1449 #, c-format msgid "%s:could not stat file \"%s\" in menu directory" msgstr "%s: 無法 stat 選單目錄中檔案 \"%s\"" #: ../src/rootmenu.c:1607 msgid "Commands" msgstr "命令" #: ../src/rootmenu.c:1610 msgid "Restart" msgstr "重新啟動" #: ../src/rootmenu.c:1611 msgid "Exit..." msgstr "離開..." #: ../src/rootmenu.c:1656 #, c-format msgid "could not find menu file \"%s\" referenced in WMRootMenu" msgstr "無法找到 WMRootMenu 參照的選單檔 \"%s\"" #: ../src/rootmenu.c:1663 #, c-format msgid "could not access menu \"%s\" referenced in WMRootMenu" msgstr "無法存取 WMRootMenu 參照的選單檔 \"%s\"" #: ../src/rootmenu.c:1674 #, c-format msgid "" "using default menu file \"%s\" as the menu referenced in WMRootMenu could " "not be found " msgstr "無法找到 WMRootMenu 參照的選單,使用預設選單檔 \"%s\"" #: ../src/rootmenu.c:1697 ../src/rootmenu.c:1773 #, c-format msgid "%s:format error in root menu configuration \"%s\"" msgstr "%s: 主選單設定中格式錯誤 \"%s\"" #: ../src/rootmenu.c:1855 msgid "" "The applications menu could not be loaded. Look at the console output for a " "detailed description of the errors." msgstr "" "無法載入應用程式選單。錯誤的詳細描述請查看主控台輸除。" #: ../src/screen.c:709 #, c-format msgid "could not initialize graphics library context: %s" msgstr "無法啟始圖形函式庫關連: %s" #: ../src/screen.c:737 msgid "could not initialize WINGs widget set" msgstr "無法啟始 WINGs widget set" #: ../src/screen.c:1144 #, c-format msgid "could not save session state in %s" msgstr "無法在 %s 儲存時段狀態" #: ../src/session.c:183 ../src/wdefaults.c:589 ../src/winspector.c:459 #, c-format msgid "can't convert \"%s\" to boolean" msgstr "無法轉換 \"%s\" 至 boolean" #: ../src/session.c:1018 msgid "out of memory while saving session state" msgstr "儲存時段狀態時記憶體不足" #: ../src/session.c:1101 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:1239 msgid "connection to the session manager was lost" msgstr "遺失至時段管理員的連結" #: ../src/stacking.c:81 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:772 #, 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:801 msgid "XKB is not supported. KbdModeLock is automatically disabled." msgstr "未支援 XKB。 KbdModeLock 自動失效。" #: ../src/startup.c:820 msgid "it seems that there is already a window manager running" msgstr "似乎已經有視窗管理員在執行中" #: ../src/startup.c:826 #, c-format msgid "could not manage screen %i" msgstr "無法管理螢幕 %i" #: ../src/startup.c:885 msgid "could not manage any screen" msgstr "無法管理任何螢幕" #: ../src/switchmenu.c:145 msgid "Windows" msgstr "視窗" #: ../src/texture.c:329 ../src/texture.c:371 #, c-format msgid "image file \"%s\" used as texture could not be found." msgstr "找不到作為材質的影像檔 \"%s\"" #: ../src/texture.c:335 ../src/texture.c:377 #, c-format msgid "could not load texture pixmap \"%s\":%s" msgstr "無法載入材質圖像 \"%s\":%s" #: ../src/texture.c:437 #, c-format msgid "library \"%s\" cound not be opened." msgstr "無法開啟函式庫 \"%s\"。" #: ../src/texture.c:446 #, c-format msgid "function \"%s\" not found in library \"%s\"" msgstr "在函式庫 \"%2$s\" 找不到函式 \"%1$s\"" #: ../src/texture.c:453 msgid "function textures not supported on this system, sorry." msgstr "此系統不支援材質功能,抱歉。" #: ../src/texture.c:598 msgid "could not allocate image buffer" msgstr "無法配置影像緩衝區" #: ../src/wdefaults.c:437 #, c-format msgid "could not find icon file \"%s\"" msgstr "無法找到圖示檔 \"%s\"" #: ../src/window.c:3052 ../src/window.c:3193 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:125 msgid "" "This will kill the application.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" "這樣會結束應用程式。\n" "任何未儲存的改變將會遺失。\n" "請確認。" #: ../src/winmenu.c:268 ../src/winmenu.c:277 msgid "Set Shortcut" msgstr "設定捷徑" #: ../src/winmenu.c:355 ../src/winmenu.c:400 msgid "could not create submenu for window menu" msgstr "無法為視窗選單建立副選單" #: ../src/winmenu.c:404 msgid "Keep on top" msgstr "保持在最上層" #: ../src/winmenu.c:409 msgid "Keep at bottom" 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:437 ../src/winmenu.c:571 msgid "Maximize" msgstr "最大化" #: ../src/winmenu.c:445 ../src/winmenu.c:557 msgid "Miniaturize" msgstr "最小化" #: ../src/winmenu.c:453 ../src/winmenu.c:588 msgid "Shade" msgstr "遮蔽" #: ../src/winmenu.c:469 msgid "Resize/Move" msgstr "大小變更/移動" #: ../src/winmenu.c:477 msgid "Select" msgstr "選取" #: ../src/winmenu.c:485 msgid "Move To" msgstr "移至" #: ../src/winmenu.c:490 msgid "Attributes..." msgstr "屬性..." #: ../src/winmenu.c:492 msgid "Options" msgstr "選項" #: ../src/winmenu.c:552 msgid "Deminiaturize" msgstr "取消最小化" #: ../src/winmenu.c:566 msgid "Unmaximize" msgstr "取消最大化" #: ../src/winmenu.c:583 msgid "Unshade" msgstr "取消遮蔽" #: ../src/winspector.c:392 #, c-format msgid "Could not find icon \"%s\" specified for this window" msgstr "無法找到指定給這個視窗的圖示 \"%s\"" #: ../src/winspector.c:409 #, c-format msgid "Could not open specified icon \"%s\":%s" msgstr "無法開啟指定的圖示 \"%s\":%s" #: ../src/winspector.c:1129 #, c-format msgid "Inspecting %s.%s" msgstr "檢視 %s.%s" #: ../src/winspector.c:1155 msgid "Click in the window you wish to inspect." msgstr "在你想檢視的視窗按一下。" #: ../src/winspector.c:1194 msgid "" "The configuration will apply to all\n" "windows that have their WM_CLASS\n" "property set to the above selected\n" "name, when saved." msgstr "" "儲存時,設定值會套用至所有\n" "WM_CLASS 特性設為以上選取名稱的視窗。" #: ../src/winspector.c:1223 msgid "Save" msgstr "儲存" #: ../src/winspector.c:1231 msgid "Apply" msgstr "套用" #: ../src/winspector.c:1237 msgid "Reload" msgstr "還原" #: ../src/winspector.c:1246 ../src/winspector.c:1256 msgid "Window Specification" msgstr "視窗規格" #: ../src/winspector.c:1247 msgid "Window Attributes" msgstr "視窗屬性" #: ../src/winspector.c:1248 msgid "Advanced Options" msgstr "進階選項" #: ../src/winspector.c:1249 msgid "Icon and Initial Workspace" msgstr "圖示與啟始工作區" #: ../src/winspector.c:1250 msgid "Application Specific" msgstr "應用程示特定" #: ../src/winspector.c:1264 msgid "Defaults for all windows" msgstr "所有視窗預設值" #: ../src/winspector.c:1318 msgid "Select window" msgstr "選取視窗" #: ../src/winspector.c:1332 msgid "Attributes" msgstr "屬性" #: ../src/winspector.c:1343 msgid "Disable titlebar" msgstr "使「標題列」失效" #: ../src/winspector.c:1345 msgid "" "Remove the titlebar of this window.\n" "To access the window commands menu of a window\n" "without it's titlebar, press Control+Esc (or the\n" "equivalent shortcut, if you changed the default\n" "settings)." msgstr "" "刪除此視窗的「標題列」。\n" "要使用無「標題列」視窗的視窗命令選單,\n" "按 Control+Esc (或同樣效果的捷徑,\n" "如果你變更了預設設定)。" #: ../src/winspector.c:1352 msgid "Disable resizebar" msgstr "使「大小變更列」失效" #: ../src/winspector.c:1354 msgid "Remove the resizebar of this window." msgstr "移除此視窗之「大小變更列」。" #: ../src/winspector.c:1357 msgid "Disable close button" msgstr "使「關閉按鈕」失效" #: ../src/winspector.c:1359 msgid "Remove the `close window' button of this window." msgstr "移除此視窗之「關閉按鈕」。" #: ../src/winspector.c:1362 msgid "Disable miniaturize button" msgstr "使「最小化按鈕」失效" #: ../src/winspector.c:1364 msgid "Remove the `miniaturize window' button of the window." msgstr "移除此視窗之「最小化按鈕」。" #: ../src/winspector.c:1367 msgid "Disable border" msgstr "使「邊框」失效" #: ../src/winspector.c:1369 msgid "Remove the 1 pixel black border around the window." msgstr "移除此視窗周圍一個像素黑框。" #: ../src/winspector.c:1372 msgid "Keep on top (floating)" msgstr "保持在最上層 (漂浮)" #: ../src/winspector.c:1374 msgid "" "Keep the window over other windows, not allowing\n" "them to cover it." msgstr "保持視窗在所有其他視窗之上,不許它們覆蓋它。" #: ../src/winspector.c:1378 msgid "Keep at bottom (sunken)" msgstr "保持在最下層 (下沉)" #: ../src/winspector.c:1380 msgid "Keep the window under all other windows." msgstr "保持視窗在所有其他視窗之下。" #: ../src/winspector.c:1385 msgid "Make window present in all workspaces." msgstr "使視窗出現在所有工作區。" #: ../src/winspector.c:1388 msgid "Start miniaturized" msgstr "啟動時最小化" #: ../src/winspector.c:1390 msgid "" "Make the window be automatically miniaturized when it's\n" "first shown." msgstr "" "使視窗第一次顯示時自動最小化。" #: ../src/winspector.c:1394 msgid "Start maximized" msgstr "啟動時最大化" #: ../src/winspector.c:1396 msgid "" "Make the window be automatically maximized when it's\n" "first shown." msgstr "" "使視窗第一次顯示時自動最大化。" #: ../src/winspector.c:1400 msgid "Full screen maximization" msgstr "全螢幕最大化" #: ../src/winspector.c:1402 msgid "" "Make the window use the whole screen space when it's\n" "maximized. The titlebar and resizebar will be moved\n" "to outside the screen." msgstr "" "使視窗最大化時使用整個螢幕空間。\n" "「標題列」和「大小變更列」會被移至螢幕外。" #: ../src/winspector.c:1419 msgid "Advanced" msgstr "進階" #: ../src/winspector.c:1436 msgid "Do not bind keyboard shortcuts" msgstr "不要結合鍵盤捷徑" #: ../src/winspector.c:1438 msgid "" "Do not bind keyboard shortcuts from Window Maker\n" "when this window is focused. This will allow the\n" "window to receive all key combinations regardless\n" "of your shortcut configuration." msgstr "" "不要結合鍵盤捷徑" "當視窗取得焦點時不要從 Window Maker 結合鍵盤捷徑。\n" "這會允許視窗接收所有按鍵組合,不管你的捷徑設定。" #: ../src/winspector.c:1444 msgid "Do not bind mouse clicks" msgstr "不要結合滑鼠按鍵" #: ../src/winspector.c:1446 msgid "" "Do not bind mouse actions, such as `Alt'+drag\n" "in the window (when Alt is the modifier you have\n" "configured)." msgstr "" "不要結合滑鼠動作,例如在視窗中按 `Alt'+拖曳滑鼠\n" "(如果 Alt 是你已設定的修正鍵)。" #: ../src/winspector.c:1451 msgid "Do not show in the window list" msgstr "不要顯示在視窗清單" #: ../src/winspector.c:1453 msgid "Do not list the window in the window list menu." msgstr "不要在視窗清單列出此視窗。" #: ../src/winspector.c:1456 msgid "Do not let it take focus" msgstr "不要讓它取得焦點" #: ../src/winspector.c:1458 msgid "" "Do not let the window take keyboard focus when you\n" "click on it." msgstr "" "當你在視窗上按滑鼠時不要讓它取得焦點。" #: ../src/winspector.c:1462 msgid "Keep inside screen" msgstr "保持在螢幕內" #: ../src/winspector.c:1464 msgid "" "Do not allow the window to move itself completely\n" "outside the screen. For bug compatibility.\n" msgstr "" "不允許視窗將它自己完全移出螢幕外。\n" "為了錯誤相容性。\n" #: ../src/winspector.c:1468 msgid "Ignore 'Hide Others'" msgstr "忽略「隱藏其他」" #: ../src/winspector.c:1470 msgid "" "Do not hide the window when issuing the\n" "`HideOthers' command." msgstr "" "當發出「隱藏其他」時不隱藏視窗。" #: ../src/winspector.c:1474 msgid "Ignore 'Save Session'" msgstr "忽略「儲存時段」" #: ../src/winspector.c:1476 msgid "" "Do not save the associated application in the\n" "session's state, so that it won't be restarted\n" "together with other applications when Window Maker\n" "starts." msgstr "" "不要在時段狀態中存相關應用程式,\n" "如此它不會在 Window Maker 啟動時被一起重新啟動。" #: ../src/winspector.c:1482 msgid "Emulate application icon" msgstr "模擬應用程式圖示" #: ../src/winspector.c:1484 msgid "" "Make this window act as an application that provides\n" "enough information to Window Maker for a dockable\n" "application icon to be created." msgstr "" "使此視窗當作可提供 Window Maker\n" "足夠資訊建立可停靠應用程式圖示的應用程式。" #: ../src/winspector.c:1490 msgid "Disable language button" msgstr "使「語言按鈕」失效" #: ../src/winspector.c:1492 msgid "Remove the `toggle language' button of the window." msgstr "刪除視窗的「切換語言」按鈕。" #: ../src/winspector.c:1509 msgid "Miniwindow Image" msgstr "迷你視窗影像" #: ../src/winspector.c:1536 msgid "Icon filename:" msgstr "圖示檔名:" #: ../src/winspector.c:1549 msgid "Ignore client supplied icon" msgstr "忽略程式提供的圖示" #: ../src/winspector.c:1556 msgid "Initial Workspace" msgstr "啟始工作區" #: ../src/winspector.c:1558 msgid "The workspace to place the window when it's first shown." msgstr "當第一次顯示時放置視窗的工作區。" #: ../src/winspector.c:1564 msgid "Nowhere in particular" msgstr "無特別指定" #: ../src/winspector.c:1582 msgid "Application Attributes" msgstr "應用程式屬性" #: ../src/winspector.c:1593 msgid "Start hidden" msgstr "啟動時隱藏" #: ../src/winspector.c:1595 msgid "Automatically hide application when it's started." msgstr "當啟動時自動隱藏應用程式。" #: ../src/winspector.c:1598 msgid "No application icon" msgstr "無應用程式圖示" #: ../src/winspector.c:1600 msgid "" "Disable the application icon for the application.\n" "Note that you won't be able to dock it anymore,\n" "and any icons that are already docked will stop\n" "working correctly." msgstr "" "使應用程式的應用程式圖示失效。\n" "注意,你將無法再停靠它,\n" "且任何已停靠圖示將停止正常工作。" #: ../src/winspector.c:1606 msgid "Shared application icon" msgstr "共用的應用程式圖示" #: ../src/winspector.c:1608 msgid "" "Use a single shared application icon for all of\n" "the instances of this application.\n" msgstr "" "使用單一共用應用程式圖示於\n" "所有此應用程式的執行個體。\n" #: ../src/workspace.c:103 ../src/workspace.c:104 ../src/workspace.c:1306 #, c-format msgid "Workspace %i" msgstr "工作區 %i" #: ../src/workspace.c:1356 msgid "Workspaces" msgstr "工作區" #: ../src/workspace.c:1358 msgid "could not create Workspace menu" msgstr "無法建立工作區選單" #: ../src/workspace.c:1365 msgid "New" msgstr "新增工作區" #: ../src/workspace.c:1366 msgid "Destroy Last" msgstr "刪除最後的工作區" #~ msgid "unable to get dropped data from DND drop" #~ msgstr "無法從 DND 放置取得放置資料" #~ msgid "error getting dropped data from DND drop" #~ msgstr "從 DND 放置取得放置資料錯誤" #~ msgid "out of memory while getting data from DND drop" #~ msgstr "從 DND 放置取得資料時記憶體不足" #~ msgid "unterminated string" #~ msgstr "字串未終止" #~ msgid "unterminated array" #~ msgstr "陣列未終止" #~ msgid "missing , in array or unterminated array" #~ msgstr "在陣列缺少 , 或陣列未終止" #~ msgid "could not get array element" #~ msgstr "無法取得陣列元素" #~ msgid "unterminated dictionary" #~ msgstr "字點未終止" #~ msgid "missing dictionary key" #~ msgstr "缺少字典鍵" #~ msgid "missing dictionary entry key or unterminated dictionary" #~ msgstr "缺少字典記錄鍵或字典未中止" #~ msgid "error parsing dictionary key" #~ msgstr "字典鍵解析錯誤" #~ msgid "missing = in dictionary entry" #~ msgstr "字典記錄中缺少 = " #~ msgid "missing ; in dictionary entry" #~ msgstr "字典記錄中缺少 ; " #~ msgid "" #~ "was expecting a string, dictionary, data or array. If it's a string, try " #~ "enclosing it with \"." #~ msgstr "要求字串,字典,資料或陣列。如果是字串,請用 \" 號括起來。" #~ msgid "Comments are not allowed inside WindowMaker owned domain files." #~ msgstr "在 WindowMaker 的定義域檔中不允許註解。" #~ msgid "could not open domain file %s" #~ msgstr "無法開啟定義域檔 %s" #~ msgid "extra data after end of file" #~ msgstr "檔案結束後有額外資料" #~ msgid "error making logo image for panel:%s" #~ msgstr "面板的標識影像產生錯誤: %s" #~ msgid "got signal %i (%s) - restarting\n" #~ msgstr "收到訊號 %i (%s) - 重新啟動\n" #~ msgid "got signal %i - restarting\n" #~ msgstr "收到訊號 %i - 重新啟動\n" #~ msgid "got signal %i (%s) - rereading defaults\n" #~ msgstr "收到訊號 %i (%s) - 重讀預設值\n" #~ msgid "got signal %i - rereading defaults\n" #~ msgstr "收到訊號 %i - 重讀預設值\n" #~ msgid "got signal %i (%s) - exiting...\n" #~ msgstr "收到訊號 %i (%s) - 離開中...\n" #~ msgid "got signal %i - exiting...\n" #~ msgstr "收到訊號 %i - 離開中...\n" #~ msgid "got signal %i (%s)\n" #~ msgstr "收到訊號 %i (%s)\n" #~ msgid "got signal %i\n" #~ msgstr "收到訊號 %i\n" #~ msgid "" #~ "crashed while trying to do some post-crash cleanup. Aborting immediatelly." #~ msgstr "嘗試崩潰後清除處理時崩潰。直接放棄。" #~ msgid "trying to restart Window Maker..." #~ msgstr "嘗試重新啟動 Window Maker..." #~ msgid "trying to start alternate window manager..." #~ msgstr "嘗試啟動另一套視窗管理員..." #~ msgid "failed to start alternate window manager. Aborting." #~ msgstr "另一套視窗管理員啟動失敗。放棄中。" #~ msgid "" #~ "a fatal error has occured, probably due to a bug. Please fill the " #~ "included BUGFORM and report it." #~ msgstr "發生嚴重錯誤,可能因為程式錯誤。請填寫 BUGFORM 並提出報告。" #~ msgid "Keep Attracted Icons" #~ msgstr "保持吸引的圖示" #~ msgid "Keep Icon(s)" #~ msgstr "保持圖示" #~ msgid "stack overflow: too many dead processes" #~ msgstr "堆疊溢位: 太多終止的行程" #~ msgid "could not render gradient: %s" #~ msgstr "無法表現漸層: %s" #~ msgid "could not exec window manager" #~ msgstr "無法執行視窗管理員" #~ msgid "Restart failed!!!" #~ msgstr "重新啟動失敗!!!" #~ msgid "wrealloc() failed while trying to add menu item" #~ msgstr "嘗試增加選單項目時 wrealloc() 失敗" #~ msgid "selection timed-out" #~ msgstr "選取逾時" #~ msgid "The following character sets are missing in %s:" #~ msgstr "%s 中下列字元集缺少:" #~ msgid "The string \"%s\" will be used in place" #~ msgstr "字串 \"%s\" 會被用來取代" #~ msgid "of any characters from those sets." #~ msgstr "那些集合的任何字元。" #~ msgid "could not create font set %s. Trying fixed" #~ msgstr "無法建立字型集 %s。試用 fixed" #~ msgid "could not load font %s. Trying fixed" #~ msgstr "無法載入字型 %s。試用 fixed" #~ msgid "" #~ "Enable the \"Don't bind...\" options to allow the application to receive " #~ "all mouse or keyboard events." #~ msgstr "" #~ "啟動 \"不要結合...\" 選項\n" #~ "允許應用程式接受所有滑鼠或鍵盤事件。" #~ msgid "Update" #~ msgstr "更新" #~ msgid "invalid data in selection" #~ msgstr "選取的資料無效" #~ msgid "Keep Clip On Top" #~ msgstr "保持迴紋針在最上層" # ?? #~ msgid "Keep Dock On Top" #~ msgstr "保持停靠區在最上層" #~ msgid "(Un)Hide" #~ msgstr "隱藏(還原)" #~ msgid "" #~ "Close Window System session?\n" #~ "(all applications will be closed)" #~ msgstr "" #~ "關閉視窗系統?\n" #~ "(所有應用程式會被關閉)" #~ msgid "%s: Received signal SIGTERM. Exiting..." #~ msgstr "%s: 收到 SIGTERM 訊號。離開..." #~ msgid "(Un)Maximize" #~ msgstr "最大化(還原)" #~ msgid "(Un)Shade" #~ msgstr "遮蔽(還原)" # ?? #~ msgid "Hide Others" #~ msgstr "隱藏其他視窗" #~ msgid "Revert" #~ msgstr "還原" WindowMaker-0.95.9/po/es.po0000644000175000017500000014745013431646201012366 00000000000000# Spanish message file for WindowMaker # Last Update: git version 2012-02-23 # # Historial de actualizaciones: # Alfredo Kojima # Eliphas Levy Theodoro # Quique (March 2002) # Rodolfo García Peñas (Feb 2012) # msgid "" msgstr "" "Project-Id-Version: Versión git-20120223\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-02-23 23:04+0100\n" "PO-Revision-Date: 2012-02-23 23:04WET\n" "Last-Translator: Rodolfo García Peñas (kix) \n" "Language-Team: Spanish \n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 0.9.5\n" #: ../src/appicon.c:345 ../src/dialog.c:563 ../src/dock.c:3041 #: ../src/dockedapp.c:207 ../src/main.c:348 ../src/rootmenu.c:1701 #: ../src/winspector.c:351 ../src/winspector.c:367 msgid "Error" msgstr "Error" #: ../src/appicon.c:346 msgid "Could not open specified icon file" msgstr "No se pudo abrir el fichero de icono indicado" #: ../src/appicon.c:346 ../src/dialog.c:405 ../src/dialog.c:466 #: ../src/dialog.c:563 ../src/dialog.c:969 ../src/dialog.c:1602 #: ../src/dock.c:443 ../src/dock.c:450 ../src/dock.c:472 ../src/dock.c:3041 #: ../src/dockedapp.c:208 ../src/dockedapp.c:378 ../src/main.c:348 #: ../src/rootmenu.c:1704 ../src/winspector.c:351 ../src/winspector.c:367 msgid "OK" msgstr "OK" #: ../src/appicon.c:376 ../src/dock.c:221 msgid "" " will be forcibly closed.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" " será cerrada a la fuerza (kill).\n" "Los cambios no guardados se perderán.\n" "Confirme, por favor." #: ../src/appicon.c:383 ../src/dock.c:239 ../src/winmenu.c:119 msgid "Kill Application" msgstr "Terminar aplicación" #: ../src/appicon.c:384 ../src/dock.c:240 ../src/winmenu.c:122 msgid "Yes" msgstr "Sí" #: ../src/appicon.c:384 ../src/dock.c:240 ../src/winmenu.c:122 msgid "No" msgstr "No" #: ../src/appicon.c:412 ../src/dock.c:1036 ../src/dock.c:3198 msgid "Unhide Here" msgstr "Mostrar aquí" #: ../src/appicon.c:413 ../src/appicon.c:436 ../src/dock.c:1038 #: ../src/dock.c:1040 ../src/dock.c:3210 ../src/winmenu.c:433 msgid "Hide" msgstr "Ocultar" #: ../src/appicon.c:414 msgid "Set Icon..." msgstr "Poner icono..." #: ../src/appicon.c:415 ../src/dock.c:1044 ../src/rootmenu.c:224 #: ../src/winmenu.c:460 msgid "Kill" msgstr "Terminar" #: ../src/appicon.c:434 ../src/dock.c:3208 msgid "Unhide" msgstr "Mostrar" #: ../src/application.c:362 #, c-format msgid "recreating missing icon '%s'" msgstr "recreando el icono ausente '%s'" #: ../src/defaults.c:713 ../src/defaults.c:837 #, c-format msgid "Domain %s (%s) of global defaults database is corrupted!" msgstr "" "¡El dominio %s (%s) de la base de datos de preferencias globales está " "corrupto!" #: ../src/defaults.c:717 #, c-format msgid "could not load domain %s from global defaults database" msgstr "no se pudo cargar el dominio %s de la base de datos de preferencias" #: ../src/defaults.c:762 ../src/defaults.c:776 #, c-format msgid "invalid global menu file %s" msgstr "fichero global de menú no válido %s" #: ../src/defaults.c:823 ../src/defaults.c:912 ../src/defaults.c:948 #: ../src/defaults.c:998 #, c-format msgid "Domain %s (%s) of defaults database is corrupted!" msgstr "" "¡El dominio %s (%s) de la base de datos de las preferencias está corrupto!" #: ../src/defaults.c:827 ../src/defaults.c:932 ../src/defaults.c:984 #: ../src/defaults.c:1011 #, c-format msgid "could not load domain %s from user defaults database" msgstr "" "no se pudo cargar el dominio %s de la base de datos de las preferencias del " "usuario" #: ../src/defaults.c:856 #, c-format msgid "could not load domain %s from global defaults database (%s)" msgstr "" "no se pudo cargar el dominio %s de la base de datos de preferencias globales " "(%s)" #: ../src/defaults.c:974 ../src/screen.c:408 #, c-format msgid "could not load logo image for panels: %s" msgstr "no se pudo cargar imagen de logotipo para los paneles: %s" #. --------------------------- Local ----------------------- #: ../src/defaults.c:1180 ../src/defaults.c:1303 ../src/defaults.c:1389 #: ../src/defaults.c:1794 ../src/defaults.c:1810 ../src/defaults.c:1851 #: ../src/defaults.c:1896 ../src/defaults.c:2303 ../src/wdefaults.c:541 #: ../src/wdefaults.c:570 #, c-format msgid "Wrong option format for key \"%s\". Should be %s." msgstr "Formato de opción erroneo para la tecla \"%s\". Debería ser %s." #: ../src/defaults.c:1182 ../src/defaults.c:1255 ../src/defaults.c:1280 #: ../src/defaults.c:1307 ../src/defaults.c:1319 ../src/defaults.c:1333 #: ../src/defaults.c:1347 ../src/defaults.c:1393 ../src/defaults.c:1405 #: ../src/defaults.c:1798 ../src/defaults.c:1815 ../src/defaults.c:1827 #: ../src/defaults.c:1856 ../src/defaults.c:1872 ../src/defaults.c:1901 #: ../src/defaults.c:1980 ../src/defaults.c:2308 ../src/defaults.c:2319 #, c-format msgid "using default \"%s\" instead" msgstr "utilizando el valor predeterminado \"%s\" en su lugar" #: ../src/defaults.c:1209 #, c-format msgid "wrong option value for key \"%s\"; got \"%s\", should be one of %s." msgstr "valor de opción erroneo para la tecla \"%s\"; leído \"%s\". Debería ser uno de %s" #: ../src/defaults.c:1251 #, c-format msgid "can't convert \"%s\" to boolean for key \"%s\"" msgstr "no se puede convertir \"%s\" a booleano para la tecla \"%s\"" #: ../src/defaults.c:1278 #, c-format msgid "can't convert \"%s\" to integer for key \"%s\"" msgstr "no se puede convertir \"%s\" a un valor entero para la tecla \"%s\"" #: ../src/defaults.c:1315 #, c-format msgid "Incorrect number of elements in array for key \"%s\"." msgstr "Número de elementos incorrecto en el array para la tecla \"%s\"." #: ../src/defaults.c:1329 #, c-format msgid "Wrong value for key \"%s\". Should be Coordinate." msgstr "Valor incorrecto para la tecla \"%s\". Debería ser Coordinado." #: ../src/defaults.c:1343 #, c-format msgid "can't convert array to integers for \"%s\"." msgstr "no se puede convertir el array a enteros para \"%s\"" #: ../src/defaults.c:1508 ../src/defaults.c:1538 ../src/defaults.c:1554 #: ../src/defaults.c:1583 ../src/defaults.c:1605 ../src/defaults.c:1656 #: ../src/defaults.c:1695 ../src/defaults.c:1732 ../src/defaults.c:1748 #, c-format msgid "\"%s\" is not a valid color name" msgstr "\"%s\" no es un nombre de color válido" #: ../src/defaults.c:1520 ../src/defaults.c:1571 msgid "bad number of arguments in gradient specification" msgstr "número de argumentos no válido en la especificación de gradiente" #: ../src/defaults.c:1629 msgid "too few arguments in multicolor gradient specification" msgstr "insuficientes argumentos en la especificación de gradiente multicolor" #: ../src/defaults.c:1721 msgid "bad number of arguments in textured gradient specification" msgstr "" "número de argumentos no válido en la especificación de gradiente con textura" #: ../src/defaults.c:1764 #, c-format msgid "bad opacity value for tgradient texture \"%s\". Should be [0..255]" msgstr "" "valor de opacidad equivocado para la textura tgradient \"%s\". Debería ser " "[0..255]" #: ../src/defaults.c:1781 #, c-format msgid "invalid texture type %s" msgstr "tipo de textura no válido %s" #: ../src/defaults.c:1823 #, c-format msgid "Error in texture specification for key \"%s\"" msgstr "Error en la especificación de textura para la tecla \"%s\"" #: ../src/defaults.c:1868 msgid "Wrong type for workspace background. Should be a texture type." msgstr "" "Tipo no válido para el fondo del área de trabajo. Debería ser de tipo " "textura." #: ../src/defaults.c:1914 #, c-format msgid "Wrong type for background of workspace %i. Should be a texture." msgstr "" "Tipo no válido para el fondo del área de trabajo %i. Debería ser una textura." #: ../src/defaults.c:1953 msgid "could not load any usable font!!!" msgstr "¡¡¡no se pudo cargar ninguna fuente usable!!!" #: ../src/defaults.c:1976 #, c-format msgid "could not get color for key \"%s\"" msgstr "no se pudo obtener color para la tecla \"%s\"" #: ../src/defaults.c:2028 ../src/rootmenu.c:438 #, c-format msgid "%s: invalid key modifier \"%s\"" msgstr "%s: modificador de tecla no válido \"%s\"" #: ../src/defaults.c:2040 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\"" msgstr "%s:especificación de atajo de teclado no válida \"%s\"" #: ../src/defaults.c:2046 #, c-format msgid "%s:invalid key in shortcut \"%s\"" msgstr "%s:tecla no válida en el atajo \"%s\"" #: ../src/defaults.c:2068 #, c-format msgid "%s: modifier key %s is not valid" msgstr "%s: la tecla modificadora %s no es válida" #: ../src/defaults.c:2175 #, c-format msgid "failed to open bitmap file \"%s\"" msgstr "no fue posible abrir el fichero bitmap \"%s\"" #: ../src/defaults.c:2178 #, c-format msgid "\"%s\" is not a valid bitmap file" msgstr "\"%s\" no es un fichero bitmap válido" #: ../src/defaults.c:2181 #, c-format msgid "out of memory reading bitmap file \"%s\"" msgstr "memoria insuficiente para leer el fichero bitmap\"%s\"" #: ../src/defaults.c:2219 ../src/defaults.c:2252 msgid "bad number of arguments in cursor specification" msgstr "número no válido de argumentos en la especificación del cursor" #: ../src/defaults.c:2235 #, c-format msgid "unknown builtin cursor name \"%s\"" msgstr "nombre del cursor interno desconocido \"%s\"" #: ../src/defaults.c:2262 ../src/defaults.c:2274 #, c-format msgid "could not find cursor bitmap file \"%s\"" msgstr "fichero bitmap de cursor \"%s\" no encontrado" #: ../src/defaults.c:2315 #, c-format msgid "Error in cursor specification for key \"%s\"" msgstr "Error en la especificación del cursor para la tecla \"%s\"" #: ../src/defaults.c:2380 msgid "could not render texture for icon background" msgstr "no se pudo representar la textura para el fondo del icono" #: ../src/defaults.c:2894 ../src/defaults.c:2963 #, c-format msgid "Invalid arguments for option \"%s\"" msgstr "Argumentos no válidos para la opción \"%s\"" #: ../src/defaults.c:2900 ../src/defaults.c:2969 #, c-format msgid "Could not find image \"%s\" for option \"%s\"" msgstr "No pudo encontrar la imagen \"%s\" para la opción \"%s\"" #: ../src/defaults.c:2905 ../src/defaults.c:2977 #, c-format msgid "Could not load image \"%s\" for option \"%s\"" msgstr "No pudo cargar imagen \"%s\" para la opción \"%s\"" #: ../src/defaults.c:2915 msgid "Invalid split sizes for switch panel back image." msgstr "Tamaños de división no válidos para el fondo del switch panel" #: ../src/defaults.c:2984 #, c-format msgid "Invalid number of arguments for option \"%s\"" msgstr "Número no válido de argumentos para la opción \"%s\"" #: ../src/defaults.c:2999 #, c-format msgid "Value for option \"%s\" must be an array of 7 strings" msgstr "El valor para la opción \"%s\" debe ser un array de 7 cadenas de caracteres" #: ../src/defaults.c:3013 #, c-format msgid "Invalid argument for option \"%s\" item %d" msgstr "Argumento no válido para la opción \"%s\" del elemento %d" #: ../src/dialog.c:126 msgid "Save workspace state" msgstr "Guardar estado del Área de trabajo" #: ../src/dialog.c:405 ../src/dialog.c:466 ../src/dialog.c:976 #: ../src/dock.c:472 ../src/dockedapp.c:383 ../src/rootmenu.c:180 #: ../src/rootmenu.c:224 msgid "Cancel" msgstr "Cancelar" #: ../src/dialog.c:558 msgid "Could not open directory \"%s\":\n%s" msgstr "No se pudo abrir el directorio \"%s\":\n%s" #: ../src/dialog.c:608 msgid "Could not load image file " msgstr "No fue pudo cargar fichero de imagen " #: ../src/dialog.c:903 msgid "Directories" msgstr "Directorios" #: ../src/dialog.c:912 msgid "Icons" msgstr "Iconos" #: ../src/dialog.c:945 msgid "Preview" msgstr "Previsualizar" #: ../src/dialog.c:958 msgid "File Name:" msgstr "Nombre del fichero:" #: ../src/dialog.c:982 msgid "Choose File" msgstr "Elegir fichero" #: ../src/dialog.c:1001 ../src/dialog.c:1003 msgid "Icon Chooser" msgstr "Selector de iconos" #: ../src/dialog.c:1184 msgid "Window Manager for X" msgstr "Gestor de ventanas para X" #: ../src/dialog.c:1186 #, c-format msgid "Version %s" msgstr "Versión %s" #: ../src/dialog.c:1207 #, c-format msgid "Using visual 0x%x: %s %ibpp " msgstr "Usando visual 0x%x: %s %ibpp " #: ../src/dialog.c:1214 msgid "(32 thousand colors)\n" msgstr "(32.000 colores)\n" #: ../src/dialog.c:1217 msgid "(64 thousand colors)\n" msgstr "(64.000 colores)\n" #: ../src/dialog.c:1221 msgid "(16 million colors)\n" msgstr "(16 millones de colores)\n" #: ../src/dialog.c:1224 #, c-format msgid "(%d colors)\n" msgstr "(%d colores)\n" #: ../src/dialog.c:1233 #, c-format msgid "Total memory allocated: %i kB (in use: %i kB).\n" msgstr "Memoria total disponible: %i kB (en uso: %i kB).\n" #: ../src/dialog.c:1283 msgid "Image formats: " msgstr "Formatos de imagen: " #: ../src/dialog.c:1247 #, c-format msgid "" "\n" "Additional support for: WMSPEC" msgstr "" "\n" "Soporte adicional para: WMSPEC" #: ../src/dialog.c:1253 msgid "\n" msgstr "\n" #: ../src/dialog.c:1255 msgid "Solaris " msgstr "Solaris " #: ../src/dialog.c:1257 msgid "Xinerama: " msgstr "Xinerama: " #: ../src/dialog.c:1289 msgid "Info" msgstr "Info" #: ../src/dialog.c:1417 msgid "" " Window Maker 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.\n" "\n" " Window Maker 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.\n" "\n" " You should have received a copy of the GNU General Public License along " "with this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin Street, Fifth Floor, Boston, MA02110-1301 USA." msgstr "" " Window Maker es software libre; puede redistribuirlo y/o " "modificarlo bajo los términos de la Licencia Pública General de GNU " "(GNU GPL) publicada por la Fundación para el Software Libre; bien la " "versión 2 de la licencia, o (a su elección) cualquier versión posterior.\n" "\n" " Window Maker se distribuye con la esperanza de que sea útil, pero " "SIN NINGUNA GARANTÍA; ni siquiera la garantía implícita de " "MERCANTIBILIDAD o ADECUACIÓN PARA UN PROPÓSITO " "PARTICULAR. Lea la Licencia Pública General de GNU para más " "detalles.\n" "\n" " Debería haber recibido una copia de la Licencia Pública General de " "GNU junto con este programa. Si no es así, escriba a Free Software " "Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA " "02110-1301, Estados Unidos de América." #: ../src/dialog.c:1389 msgid "Legal" msgstr "Legal" #: ../src/dialog.c:1532 msgid "cannot open connection for crashing dialog panel. Aborting." msgstr "" "no fue posible abrir conexión para caja de diálogo de errores fatales. " "Abortando." #: ../src/dialog.c:1558 msgid "Fatal error" msgstr "Error fatal" #: ../src/dialog.c:1568 #, c-format msgid "Window Maker received signal %i." msgstr "Window Maker recibió la señal %i." #: ../src/dialog.c:1576 msgid "" " This fatal error occured probably due to a bug. Please fill the included " "BUGFORM and report it to %s." msgstr "" " Este error fatal ocurrió probablemente debido a un fallo.\n" " Por favor rellene el fichero BUGFORM adjunto y envíelo a\n" " %s." #: ../src/dialog.c:1583 msgid "What do you want to do now?" msgstr "¿Qué quiere hacer ahora?" #: ../src/dialog.c:1589 msgid "Select action" msgstr "Seleccionar acción" #: ../src/dialog.c:1590 msgid "Abort and leave a core file" msgstr "Abortar y generar un fichero core" #: ../src/dialog.c:1591 msgid "Restart Window Maker" msgstr "Reiniciar Window Maker" #: ../src/dialog.c:1592 msgid "Start alternate window manager" msgstr "Iniciar otro gestor de ventanas" #: ../src/dock.c:170 ../src/menu.c:1768 #, c-format msgid "Type the name for workspace %i:" msgstr "Teclee el nombre para el área de trabajo %i:" #: ../src/dock.c:171 ../src/dock.c:1003 ../src/dock.c:1005 ../src/dock.c:3117 #: ../src/menu.c:1772 msgid "Rename Workspace" msgstr "Renombrar Área de trabajo" #: ../src/dock.c:438 ../src/dock.c:445 msgid "Warning" msgstr "Atención" #: ../src/dock.c:439 msgid "" "Some icons cannot be made omnipresent. Please make sure that no other icon " "is docked in the same positions on the other workspaces and the Clip is not " "full in some workspace." msgstr "" "Algunos iconos no se pueden hacer omnipresentes. Por favor, asegúrese que " "no haya otros iconos en las mismas posiciones en las otras áreas de trabajo, " "y de que el Clip no esté lleno en otra área de trabajo." #: ../src/dock.c:446 msgid "" "Icon cannot be made omnipresent. Please make sure that no other icon is " "docked in the same position on the other workspaces and the Clip is not full " "in some workspace." msgstr "" "El icono no pudo hacer omnipresente. Por favor, asegúrese de que no haya " "otros iconos en la misma posición en las otras áreas de trabajo, y de que el " "Clip no esté lleno en otra área de trabajo." #: ../src/dock.c:470 msgid "Workspace Clip" msgstr "Clip del Área de trabajo" #: ../src/dock.c:471 msgid "All selected icons will be removed!" msgstr "¡Todos los iconos seleccionados serán borrados!" #: ../src/dock.c:521 ../src/dock.c:1016 ../src/dock.c:1018 ../src/dock.c:3153 msgid "Keep Icon" msgstr "Mantener el icono" #: ../src/dock.c:522 ../src/dock.c:1910 ../src/dock.c:2041 msgid "Type the command used to launch the application" msgstr "Teclee el comando a usar para ejecutar la aplicación" #: ../src/dock.c:842 #, c-format msgid "could not launch application %s" msgstr "no se pudo ejecutar la aplicación %s" #: ../src/dock.c:893 msgid "could not create workspace submenu for Clip menu" msgstr "no se pudo crear un submenú de área de trabajo para el menú del Clip" #: ../src/dock.c:948 msgid "could not create options submenu for Clip menu" msgstr "no se pudo crear un submenú de opciones para el menú del Clip" #: ../src/dock.c:952 ../src/dock.c:993 msgid "Keep on Top" msgstr "Mantener en primer plano" #: ../src/dock.c:957 msgid "Collapsed" msgstr "Agrupar" #: ../src/dock.c:962 msgid "Autocollapse" msgstr "Autoagrupar" #: ../src/dock.c:967 msgid "Autoraise" msgstr "Autoelevar" #: ../src/dock.c:972 msgid "Autoattract Icons" msgstr "Autoatraer iconos" #: ../src/dock.c:998 msgid "Clip Options" msgstr "Opciones del Clip" #: ../src/dock.c:1007 msgid "Selected" msgstr "Seleccionado" #: ../src/dock.c:1012 ../src/dock.c:1014 ../src/dock.c:3144 msgid "Select All Icons" msgstr "Seleccionar todos los iconos" #: ../src/dock.c:1020 ../src/dock.c:1022 ../src/dock.c:3161 msgid "Move Icon To" msgstr "Mover el icono a" #: ../src/dock.c:1027 ../src/dock.c:1029 ../src/dock.c:3172 msgid "Remove Icon" msgstr "Eliminar el icono" #: ../src/dock.c:1031 msgid "Attract Icons" msgstr "Atraer los iconos" #: ../src/dock.c:1034 msgid "Launch" msgstr "Ejecutar" #: ../src/dock.c:1042 msgid "Settings..." msgstr "Configuraciones..." #: ../src/dock.c:1366 ../src/dock.c:1466 #, c-format msgid "bad value in docked icon state info %s" msgstr "valor no válido en la información del estado de un icono en el dock %s" #: ../src/dock.c:1473 #, c-format msgid "bad value in docked icon position %i,%i" msgstr "valor no válido en la posición de un icono en el dock %i,%i" #: ../src/dock.c:1492 #, c-format msgid "bad value in dock state info:%s" msgstr "valor no válido en la información de estado del dock:%s" #: ../src/dock.c:1709 msgid "there are too many icons stored in dock. Ignoring what doesn't fit" msgstr "hay demasiados iconos almacenados en el dock. Ignorando lo que no cabe" #. icon->forced_dock = 1; #: ../src/dock.c:1909 ../src/dock.c:2040 msgid "Dock Icon" msgstr "Poner icono en el dock" #: ../src/dock.c:3039 #, c-format msgid "Could not execute command \"%s\"" msgstr "No se pudo ejecutar el comando \"%s\"" #: ../src/dock.c:3123 msgid "Toggle Omnipresent" msgstr "Activar Omnipresencia" #: ../src/dock.c:3128 ../src/winmenu.c:406 ../src/winspector.c:1302 msgid "Omnipresent" msgstr "Omnipresente" #: ../src/dock.c:3142 msgid "Unselect All Icons" msgstr "Deseleccionar todos los iconos" #: ../src/dock.c:3151 msgid "Keep Icons" msgstr "Mantener los iconos" #: ../src/dock.c:3159 msgid "Move Icons To" msgstr "Mover los iconos a" #: ../src/dock.c:3170 msgid "Remove Icons" msgstr "Eliminar los iconos" #: ../src/dock.c:3200 msgid "Bring Here" msgstr "Traer aquí" #: ../src/dockedapp.c:133 #, c-format msgid "could not find icon %s, used in a docked application" msgstr "" "no se pudo encontrar el icono %s, utilizado en una aplicación en el dock" #: ../src/dockedapp.c:206 #, c-format msgid "Could not open specified icon file: %s" msgstr "No se pudo abrir el fichero de icono indicado: %s" #: ../src/dockedapp.c:208 msgid "Ignore" msgstr "Ignorar" #: ../src/dockedapp.c:300 msgid "Start when Window Maker is started" msgstr "Iniciar cuando Window Maker se inicie" #: ../src/dockedapp.c:305 msgid "Lock (prevent accidental removal)" msgstr "Bloqueado (para prevenir borrado accidental)" #: ../src/dockedapp.c:309 msgid "Application path and arguments" msgstr "Ruta de la aplicación y argumentos" #: ../src/dockedapp.c:320 msgid "Command for middle-click launch" msgstr "Comando al presionar el botón central" #: ../src/dockedapp.c:332 #, c-format msgid "%s will be replaced with current selection" msgstr "%s será reemplazado con la selección actual" #: ../src/dockedapp.c:336 msgid "Command for files dropped with DND" msgstr "Orden para archivos soltados con DND" #: ../src/dockedapp.c:348 #, c-format msgid "%d will be replaced with the file name" msgstr "%d será sustituido por el nombre del fichero" #: ../src/dockedapp.c:351 msgid "DND support was not compiled in" msgstr "No se compiló con soporte para DND" #: ../src/dockedapp.c:356 msgid "Icon Image" msgstr "Imagen de icono" #: ../src/dockedapp.c:367 ../src/winspector.c:1450 msgid "Browse..." msgstr "Explorar..." #: ../src/dockedapp.c:425 msgid "Docked Application Settings" msgstr "Configuración de Aplicación en el Dock" #: ../src/framewin.c:619 ../src/framewin.c:711 ../src/menu.c:412 #: ../src/texture.c:453 #, c-format msgid "could not render texture: %s" msgstr "no se pudo representar la textura: %s" #: ../src/framewin.c:642 ../src/framewin.c:652 ../src/framewin.c:668 #: ../src/framewin.c:679 ../src/framewin.c:686 ../src/framewin.c:693 #: ../src/icon.c:330 ../src/menu.c:439 #, c-format msgid "error rendering image:%s" msgstr "error en la representación de la imagen:%s" #: ../src/framewin.c:739 #, c-format msgid "error rendering image: %s" msgstr "error en la representación de la imagen: %s" #: ../src/icon.c:215 ../src/wdefaults.c:421 #, c-format msgid "error loading image file \"%s\": %s" msgstr "error cargando el fichero de imagen \"%s\": %s" #: ../src/icon.c:438 ../src/icon.c:447 #, c-format msgid "could not create directory %s" msgstr "no se pudo crear el directorio %s" #: ../src/icon.c:696 #, c-format msgid "could not find default icon \"%s\"" msgstr "no se pudo encontrar el icono predeterminado \"%s\"" #: ../src/icon.c:702 #, c-format msgid "could not load default icon \"%s\":%s" msgstr "no se pudo cargar el icono predeterminado \"%s\":%s" #: ../src/main.c:305 msgid "failed to restart Window Maker." msgstr "falló al reiniciar Window Maker." #: ../src/main.c:308 #, c-format msgid "could not exec %s" msgstr "no se pudo ejecutar %s" #: ../src/main.c:346 msgid "Could not execute command: " msgstr "No se pudo ejecutar la orden: " #: ../src/main.c:418 #, c-format msgid "%s aborted.\n" msgstr "%s abortado.\n" #: ../src/main.c:427 #, c-format msgid "Usage: %s [options]\n" msgstr "Uso: %s [opciones]\n" #: ../src/main.c:428 msgid "The Window Maker window manager for the X window system" msgstr "El gestor de ventanas Window Maker para el sistema de ventanas X" #: ../src/main.c:430 msgid " -display host:dpy\tdisplay to use" msgstr " -display host:dpy\tdisplay a utilizar" #: ../src/main.c:432 msgid " --no-cpp \t\tdisable preprocessing of configuration files" msgstr " --no-cpp \t\tdesactiva preprocesamiento de ficheros de configuración" #: ../src/main.c:434 msgid " --no-dock\t\tdo not open the application Dock" msgstr " --no-dock\t\tdeshabilitar el Dock" #: ../src/main.c:435 msgid " --no-clip\t\tdo not open the workspace Clip" msgstr " --no-clip\t\tno abre el área de trabajo Clip" #: ../src/main.c:436 msgid " --no-autolaunch\tdo not autolaunch applications" msgstr " --no-autolaunch\t no iniciar aplicaciones automáticamente" #: ../src/main.c:437 msgid " --dont-restore\t\tdo not restore saved session" msgstr " --dont-restore\t\tno restaurar la sesión guardada" #: ../src/main.c:439 msgid " --locale locale\tlocale to use" msgstr " --locale locale\tlocale a usar" #: ../src/main.c:441 msgid "" " --create-stdcmap\tcreate the standard colormap hint in PseudoColor visuals" msgstr "" " --create-stdcmap\t crear el consejo de mapa de colores estándar en los " "visuales PseudoColor" #: ../src/main.c:442 msgid " --visual-id visualid\tvisual id of visual to use" msgstr " --visual-id visualid\tvisual id del visual a utilizar" #: ../src/main.c:443 msgid " --static\t\tdo not update or save configurations" msgstr " --static\t\tno guardar o actualizar configuraciones" #: ../src/main.c:445 msgid " --no-polling\t\tdo not periodically check for configuration updates" msgstr "" " --no-polling\t\t no comprobar periódicamente si hay actualizaciones en la " "configuración" #: ../src/main.c:447 msgid " --version\t\tprint version and exit" msgstr " --versión\t\tmostrar versión y salir" #: ../src/main.c:448 msgid " --help\t\t\tshow this message" msgstr " --help\t\t\tmostrar este mensaje" #: ../src/main.c:458 #, c-format msgid "could not find user GNUstep directory (%s)." msgstr "no se pudo encontrar el directorio GNUstep de usuario (%s)" #: ../src/main.c:461 msgid "" "There was an error while creating GNUstep directory, please make sure you " "have installed Window Maker correctly and run wmaker.inst" msgstr "" "Se ha producido un error mientras se creaba el directorio GNUstep, por favor " "asegúrese de que ha instalado correctamente Window Maker y ejecutado wmaker." "inst" #: ../src/main.c:464 #, c-format msgid "%s directory created with default configuration." msgstr "creado directorio %s con la configuración predeterminada." #: ../src/main.c:482 msgid "" "could not initialise an inotify instance. Changes to the defaults database " "will require a restart to take effect. Check your kernel!" msgstr "" "no se pudo iniciar una instancia inotify. Cambios en la base de datos de " "preferencias requerirán reiniciar para que surjan efecto. ¡Compruebe su núcleo!" #: ../src/main.c:493 #, c-format msgid "" "could not add an inotify watch on path %s. Changes to the defaults database " "will require a restart to take effect." msgstr "" "no se pudo añadir un guardian inotify en la ruta %s. Cambios en la base de datos " "de preferencias requerirán reiniciar para que surjan efecto." #: ../src/main.c:515 #, c-format msgid "%s:could not execute initialization script" msgstr "%s:no se pudo ejecutar el guión de inicialización" #: ../src/main.c:533 #, c-format msgid "%s:could not execute exit script" msgstr "%s:no se pudo ejecutar el guión de salida" #: ../src/main.c:571 ../src/main.c:648 ../src/main.c:655 ../src/main.c:662 #, c-format msgid "too few arguments for %s" msgstr "argumentos insuficientes para %s" #: ../src/main.c:666 #, c-format msgid "bad value for visualid: \"%s\"" msgstr "valor no válido de visualid: \"%s\"" #: ../src/main.c:679 #, c-format msgid "%s: invalid argument '%s'\n" msgstr "%s: argumento no válido '%s'\n" #: ../src/main.c:680 #, c-format msgid "Try '%s --help' for more information\n" msgstr "Pruebe '%s --help' para más información\n" #: ../src/main.c:723 msgid "X server does not support locale" msgstr "El servidor X no soporta esta locale" #: ../src/main.c:727 msgid "cannot set locale modifiers" msgstr "no se pueden definir los modificadores de la locale" #: ../src/main.c:743 #, c-format msgid "could not open display \"%s\"" msgstr "no se pudo abrir el display \"%s\"" #: ../src/menu.c:2341 #, c-format msgid "bad value in menus state info: %s" msgstr "valor no válido en la información de estado de los menús: %s" #: ../src/misc.c:57 #, c-format msgid "could not define value for %s for cpp" msgstr "no se pudo definir el valor de %s para cpp" #: ../src/misc.c:82 #, c-format msgid "could not get password entry for UID %i" msgstr "no se pudo obtener una entrada de contraseña para el UID %i" #: ../src/misc.c:104 #, c-format msgid "your machine is misconfigured. HOSTNAME is set to %s" msgstr "su máquina está mal configurada. HOSTNAME configurado a %s" #: ../src/misc.c:109 #, c-format msgid "your machine is misconfigured. HOST is set to %s" msgstr "su máquina está mal configurada. HOST configurado a %s" #: ../src/misc.c:558 ../src/misc.c:563 msgid "Program Arguments" msgstr "Parámetros del Programa" #: ../src/misc.c:559 ../src/misc.c:564 msgid "Enter command arguments:" msgstr "Teclee los parámetros del comando:" #: ../src/misc.c:608 #, c-format msgid "out of memory during expansion of \"%s\"" msgstr "memoria insuficiente durante expansión de \"%s\"" #: ../src/misc.c:661 #, c-format msgid "out of memory during expansion of \"%%w\"" msgstr "memoria insuficiente durante expansión de \"%%w\"" #: ../src/misc.c:678 #, c-format msgid "out of memory during expansion of \"%%W\"" msgstr "memoria insuficiente durante expansión de \"%%W\"" #: ../src/misc.c:695 #, c-format msgid "out of memory during expansion of \"%%a\"" msgstr "memoria insuficiente durante expansión de \"%%a\"" #: ../src/misc.c:724 #, c-format msgid "out of memory during expansion of \"%%d\"" msgstr "memoria insuficiente durante expansión de \"%%d\"" #: ../src/misc.c:738 msgid "selection not available" msgstr "selección no disponible" #: ../src/misc.c:745 #, c-format msgid "out of memory during expansion of \"%%s\"" msgstr "memoria insuficiente durante expansión de \"%%s\"" #: ../src/misc.c:780 ../src/misc.c:786 #, c-format msgid "bad window name value in %s state info" msgstr "nombre de ventana no válido en la información de estado %s" #: ../src/misc.c:1014 msgid "could not send message to background image helper" msgstr "no fue posible enviar mensaje para el auxiliar de imagen de fondo" #: ../src/resources.c:41 #, c-format msgid "could not parse color \"%s\"" msgstr "no fue posible procesar el color \"%s\"" #: ../src/resources.c:45 #, c-format msgid "could not allocate color \"%s\"" msgstr "no fue posible asignar color \"%s\"" #: ../src/rootmenu.c:179 ../src/rootmenu.c:180 msgid "Exit" msgstr "Salir" #: ../src/rootmenu.c:180 msgid "Exit window manager?" msgstr "¿Salir del gestor de ventanas?" #: ../src/rootmenu.c:222 msgid "Kill X session" msgstr "Cerrar sesión X" #: ../src/rootmenu.c:223 msgid "" "Kill Window System session?\n" "(all applications will be closed)" msgstr "" "¿Cerrar sesión del sistema de ventanas?\n" "(se cerrarán todas las aplicaciones)" #: ../src/rootmenu.c:451 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\" for entry %s" msgstr "" "%s:especificación de atajo en el teclado no válida \"%s\" para entrada %s" #: ../src/rootmenu.c:459 #, c-format msgid "%s:invalid key in shortcut \"%s\" for entry %s" msgstr "%s:tecla no válida en el atajo \"%s\" para entrada %s" #: ../src/rootmenu.c:493 #, c-format msgid "%s: unmatched '\"' in menu file" msgstr "%s: '\"' desemparejado en el fichero de menú" #: ../src/rootmenu.c:542 #, c-format msgid "%s: missing command" msgstr "%s: comando perdido" #: ../src/rootmenu.c:592 #, c-format msgid "invalid OPEN_MENU specification: %s" msgstr "especificación de OPEN_MENU no válida: %s" #: ../src/rootmenu.c:647 #, c-format msgid "%s:could not stat menu" msgstr "%s:no fue posible acceder al menu" #: ../src/rootmenu.c:655 #, c-format msgid "%s:could not stat menu:%s" msgstr "%s:no fue posible acceder al menú: %s" #: ../src/rootmenu.c:671 #, c-format msgid "too many parameters in OPEN_MENU: %s" msgstr "demasiados parámetros en OPEN_MENU: %s" #: ../src/rootmenu.c:713 msgid "" "There are more than one WORKSPACE_MENU commands in the applications menu. " "Only one is allowed." msgstr "" "Hay más de un comando WORKSPACE_MENU en el menú de aplicaciones.\n" "Sólo se permite uno." #: ../src/rootmenu.c:744 msgid "" "There are more than one WINDOWS_MENU commands in the applications menu. Only " "one is allowed." msgstr "" "Hay más de un comando WINDOWS_MENU en el menú de aplicaciones. Sólo se " "permite uno." #: ../src/rootmenu.c:749 msgid "Window List" msgstr "Lista de ventanas" #: ../src/rootmenu.c:776 ../src/rootmenu.c:793 ../src/rootmenu.c:801 #, c-format msgid "%s:missing parameter for menu command \"%s\"" msgstr "%s:parámetro inexistente en la orden de menú \"%s\"" #: ../src/rootmenu.c:865 #, c-format msgid "%s:unknown command \"%s\" in menu config." msgstr "%s:comando desconocido \"%s\" en la configuración del menú." #: ../src/rootmenu.c:872 #, c-format msgid "%s:can't add shortcut for entry \"%s\"" msgstr "%s:no puede añadir atajo para entrada \"%s\"" #: ../src/rootmenu.c:1014 #, c-format msgid "%s:maximal line size exceeded in menu config: %s" msgstr "%s:excedido el tamaño máximo de línea en el menú de configuración: %s" #: ../src/rootmenu.c:1035 ../src/rootmenu.c:1120 ../src/rootmenu.c:1214 #, c-format msgid "%s:missing command in menu config: %s" msgstr "%s:falta comando en el menú de configuración: %s" #: ../src/rootmenu.c:1062 #, c-format msgid "%s:syntax error in menu file:END declaration missing" msgstr "%s:error de sintaxis en el fichero del menú:falta un END" #: ../src/rootmenu.c:1088 ../src/rootmenu.c:1182 msgid "could not make arguments for menu file preprocessor" msgstr "" "no fue posible crear parámetros para el preprocesador del fichero del menú" #: ../src/rootmenu.c:1094 ../src/rootmenu.c:1189 #, c-format msgid "%s:could not open/preprocess menu file" msgstr "%s:no se pudo abrir/preprocesar el fichero de menú" #: ../src/rootmenu.c:1105 ../src/rootmenu.c:1199 #, c-format msgid "could not open menu file \"%s\": %s" msgstr "no se pudo abrir el fichero del menú \"%s\": %s" #: ../src/rootmenu.c:1131 #, c-format msgid "%s:invalid menu file. MENU command is missing" msgstr "%s:fichero de menú no válido. Falta el comando MENU" #: ../src/rootmenu.c:1139 msgid "error reading preprocessed menu data" msgstr "error leyendo datos de menú preprocesados" #: ../src/rootmenu.c:1225 #, c-format msgid "%s:no title given for the root menu" msgstr "%s:falta el título del menú raíz" #: ../src/rootmenu.c:1306 ../src/rootmenu.c:1378 ../src/rootmenu.c:1417 #, c-format msgid "out of memory while constructing directory menu %s" msgstr "memoria insuficiente durante la construcción del menú de directorio %s" #: ../src/rootmenu.c:1315 #, c-format msgid "%s:could not stat file \"%s\" in menu directory" msgstr "%s:no se pudo acceder al fichero \"%s\" en el menú de directorio" #: ../src/rootmenu.c:1467 msgid "Commands" msgstr "Comandos" #: ../src/rootmenu.c:1470 msgid "Restart" msgstr "Reiniciar" #: ../src/rootmenu.c:1471 msgid "Exit..." msgstr "Salir..." #: ../src/rootmenu.c:1510 #, c-format msgid "could not find menu file \"%s\" referenced in WMRootMenu" msgstr "" "no se pudo encontrar el fichero de menú \"%s\" indicado en WMRootMenu" #: ../src/rootmenu.c:1516 #, c-format msgid "could not access menu \"%s\" referenced in WMRootMenu" msgstr "" "no se pudo acceder al menú \"%s\" indicado en WMRootMenu" #: ../src/rootmenu.c:1528 #, c-format msgid "" "using default menu file \"%s\" as the menu referenced in WMRootMenu could " "not be found " msgstr "" "utilizando el menú por defecto \"%s\" ya que no se encontró el menú " "indicado en WMRootMenu" #: ../src/rootmenu.c:1551 ../src/rootmenu.c:1625 #, c-format msgid "%s:format error in root menu configuration \"%s\"" msgstr "%s:error de formato en la configuración de menú raíz \"%s\"" #: ../src/rootmenu.c:1702 msgid "" "The applications menu could not be loaded. Look at the console output for a " "detailed description of the errors." msgstr "" "No se pudo cargar el menú de aplicaciones. Mire la salida\n" "en la consola para una descripción detallada de los errores." #: ../src/screen.c:685 #, c-format msgid "could not initialize graphics library context: %s" msgstr "no se pudo inicializar contexto de la biblioteca gráfica: %s" #: ../src/screen.c:711 #, c-format msgid "could not initialize WINGs widget set" msgstr "no se pudo inicializar el conjunto de elementos WINGs" #: ../src/screen.c:1006 #, c-format msgid "could not save session state in %s" msgstr "no se pudo guardar el estado de la sesión en %s" #: ../src/session.c:151 ../src/wdefaults.c:557 ../src/winspector.c:410 #, c-format msgid "can't convert \"%s\" to boolean" msgstr "no puede convertir \"%s\" a un valor booleano" #: ../src/stacking.c:75 msgid "could not get window list!!" msgstr "¡¡no se pudo obtener la lista de ventanas!!" #: ../src/startup.c:177 #, c-format msgid "internal X error: %s" msgstr "error interno de X: %s" #: ../src/startup.c:672 ../src/startup.c:689 ../src/startup.c:695 #, c-format msgid "could not read domain \"%s\" from defaults database" msgstr "" "no se pudo leer el dominio \"%s\" de la base de datos de las preferencias " "por defecto" #: ../src/startup.c:681 #, c-format msgid "icon size is configured to %i, but it's too small. Using 16 instead" msgstr "" "el tamaño del ícono está configurado a %i, pero es demasiado pequeño. " "Utilizando 16 en su lugar" #: ../src/startup.c:712 msgid "XKB is not supported. KbdModeLock is automatically disabled." msgstr "XKB no está soportado. KbdModeLock deshabilitado automáticamente." #: ../src/startup.c:731 msgid "it seems that there is already a window manager running" msgstr "parece que ya se está ejecutando un gestor de ventanas" #: ../src/startup.c:737 #, c-format msgid "could not manage screen %i" msgstr "no se pudo gestionar la ventana %i" #: ../src/startup.c:794 msgid "could not manage any screen" msgstr "no se pudo gestionar ninguna ventana" #: ../src/switchmenu.c:129 msgid "Windows" msgstr "Ventanas" #: ../src/texture.c:272 ../src/texture.c:310 #, c-format msgid "image file \"%s\" used as texture could not be found." msgstr "" "no se pudo encontrar el fichero de imagen \"%s\" utilizado como textura." #: ../src/texture.c:277 ../src/texture.c:315 #, c-format msgid "could not load texture pixmap \"%s\":%s" msgstr "no se pudo cargar el mapa de bits de textura \"%s\":%s" #: ../src/texture.c:457 msgid "could not allocate image buffer" msgstr "no se pudo asignar un buffer de imagen" #: ../src/wdefaults.c:415 #, c-format msgid "could not find icon file \"%s\"" msgstr "no se encontró el fichero de icono \"%s\"" #: ../src/window.c:2756 ../src/window.c:2914 #, c-format msgid "" "The NumLock, ScrollLock or similar key seems to be turned on. Turn it off or " "some mouse actions and keyboard shortcuts will not work." msgstr "" "La tecla NumLock, ScrollLock o similar parece estar activada." "Desactívela o algunas acciones del ratón y atajo de teclado no funcionarán." #: ../src/winmenu.c:121 msgid "" "This will kill the application.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" "La aplicación será finalizada (kill).\n" "Se perderá cualquier modificación no guardada.\n" "Confirme por favor." #: ../src/winmenu.c:271 ../src/winmenu.c:280 msgid "Set Shortcut" msgstr "Definir atajo" #: ../src/winmenu.c:354 ../src/winmenu.c:394 msgid "could not create submenu for window menu" msgstr "no se pudo crear submenú para el menú de ventanas" #: ../src/winmenu.c:398 msgid "Keep on top" msgstr "Mantener en primer plano" #: ../src/winmenu.c:402 msgid "Keep at bottom" msgstr "Mantener al fondo" #. #. * 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:424 ../src/winmenu.c:519 msgid "Maximize" msgstr "Maximizar" #: ../src/winmenu.c:427 ../src/winmenu.c:503 msgid "Miniaturize" msgstr "Minimizar" #: ../src/winmenu.c:430 ../src/winmenu.c:537 msgid "Shade" msgstr "Sombrear" #: ../src/winmenu.c:436 msgid "Resize/Move" msgstr "Redimensionar/Mover" #: ../src/winmenu.c:439 msgid "Select" msgstr "Seleccionar" #: ../src/winmenu.c:442 msgid "Move To" msgstr "Mover a" #: ../src/winmenu.c:447 msgid "Attributes..." msgstr "Atributos..." #: ../src/winmenu.c:449 msgid "Options" msgstr "Opciones" #. #. entry = wMenuAddCallback(menu, _("Select Shortcut"), NULL, NULL); #. wMenuEntrySetCascade(menu, entry, makeMakeShortcutMenu(scr)); #. #: ../src/winmenu.c:457 msgid "Close" msgstr "Cerrar" #: ../src/winmenu.c:497 msgid "Deminiaturize" msgstr "Restaurar" #: ../src/winmenu.c:513 msgid "Unmaximize" msgstr "Desmaximizar" #: ../src/winmenu.c:531 msgid "Unshade" msgstr "Quitar sombra" #: ../src/winspector.c:350 #, c-format msgid "Could not find icon \"%s\" specified for this window" msgstr "No se encontró el icono \"%s\" indicado para esta ventana" #: ../src/winspector.c:365 #, c-format msgid "Could not open specified icon \"%s\":%s" msgstr "No se puedo abrir el icono indicado \"%s\":%s" #: ../src/winspector.c:1067 #, c-format msgid "Inspecting %s.%s" msgstr "Inspeccionando %s.%s" #: ../src/winspector.c:1090 msgid "Click in the window you wish to inspect." msgstr "Haga click en la ventana que desea inspeccionar." #: ../src/winspector.c:1122 msgid "" "The configuration will apply to all\n" "windows that have their WM_CLASS\n" "property set to the above selected\n" "name, when saved." msgstr "" "La configuración se aplicará a todas\n" "las ventanas que tengan su propiedad\n" "WM_CLASS con el nombre seleccionado\n" "arriba, cuando se guarde." #: ../src/winspector.c:1147 msgid "Save" msgstr "Guardar" #: ../src/winspector.c:1155 msgid "Apply" msgstr "Aplicar" #: ../src/winspector.c:1161 msgid "Reload" msgstr "Recargar" #: ../src/winspector.c:1170 ../src/winspector.c:1180 msgid "Window Specification" msgstr "Especificación de Ventana" #: ../src/winspector.c:1171 msgid "Window Attributes" msgstr "Atributos de Ventana" #: ../src/winspector.c:1172 msgid "Advanced Options" msgstr "Opciones Avanzadas" #: ../src/winspector.c:1173 msgid "Icon and Initial Workspace" msgstr "Icono y Área de Trabajo Inicial" #: ../src/winspector.c:1174 msgid "Application Specific" msgstr "Aplicación Específica" #: ../src/winspector.c:1187 msgid "Defaults for all windows" msgstr "Preferencias predeterminadas para todas las ventanas" #: ../src/winspector.c:1240 msgid "Select window" msgstr "Seleccionar ventana" #: ../src/winspector.c:1253 msgid "Attributes" msgstr "Atributos" #: ../src/winspector.c:1264 msgid "Disable titlebar" msgstr "Deshabilitar barra de título" #: ../src/winspector.c:1266 msgid "" "Remove the titlebar of this window.\n" "To access the window commands menu of a window\n" "without it's titlebar, press Control+Esc (or the\n" "equivalent shortcut, if you changed the default\n" "settings)." msgstr "" "Retira la barra de título de la ventana.\n" "Para acceder al menú de órdenes de ventana en una ventana\n" "que no tiene barra de título, presione Control+Esc (o\n" "el atajo equivalente, si usted modificó la configuración\n" "de las teclas)." #: ../src/winspector.c:1272 msgid "Disable resizebar" msgstr "Deshabilitar barra de tamaño" #: ../src/winspector.c:1274 msgid "Remove the resizebar of this window." msgstr "Retirar la barra de tamaño de esta ventana." #: ../src/winspector.c:1277 msgid "Disable close button" msgstr "Deshabilitar botón de cerrar" #: ../src/winspector.c:1279 msgid "Remove the `close window' button of this window." msgstr "Retira el botón de `cerrar ventana' de la ventana." #: ../src/winspector.c:1282 msgid "Disable miniaturize button" msgstr "Deshabilitar botón minimizar" #: ../src/winspector.c:1284 msgid "Remove the `miniaturize window' button of the window." msgstr "Retira el botón `minimizar ventana' de la ventana." #: ../src/winspector.c:1287 msgid "Disable border" msgstr "Deshabilitar borde" #: ../src/winspector.c:1289 msgid "Remove the 1 pixel black border around the window." msgstr "Retirar el borde negro de 1 pixel alrededor de la ventana." #: ../src/winspector.c:1292 msgid "Keep on top (floating)" msgstr "Mantener en primer plano (flotante)" #: ../src/winspector.c:1294 msgid "" "Keep the window over other windows, not allowing\n" "them to cover it." msgstr "" "Mantiene la ventana sobre todas las otras,\n" "no permitiendo que la cubran." #: ../src/winspector.c:1297 msgid "Keep at bottom (sunken)" msgstr "Mantener al fondo (hundido)" #: ../src/winspector.c:1299 msgid "Keep the window under all other windows." msgstr "Mantiene la ventana por debajo de todas las demás." #: ../src/winspector.c:1304 msgid "Make window present in all workspaces." msgstr "Hacer presente la ventana en todas las áreas de trabajo." #: ../src/winspector.c:1307 msgid "Start miniaturized" msgstr "Iniciar minimizado" #: ../src/winspector.c:1309 msgid "" "Make the window be automatically miniaturized when it's\n" "first shown." msgstr "" "Hacer que la ventana sea automáticamente minimizada\n" "la primera vez que se muestre." #: ../src/winspector.c:1312 msgid "Start maximized" msgstr "Iniciar maximizado" #: ../src/winspector.c:1314 msgid "" "Make the window be automatically maximized when it's\n" "first shown." msgstr "" "Hacer que la ventana sea automáticamente maximizada\n" "la primera vez que se muestre." #: ../src/winspector.c:1317 msgid "Full screen maximization" msgstr "Maximizar a pantalla completa" #: ../src/winspector.c:1319 msgid "" "Make the window use the whole screen space when it's\n" "maximized. The titlebar and resizebar will be moved\n" "to outside the screen." msgstr "" "Hacer que la ventana utilice toda la pantalla cuando sea\n" "maximizada. La barra de título y de tamaño serán \n" "desplazadas fuera de la pantalla." #: ../src/winspector.c:1335 msgid "Advanced" msgstr "Avanzado" #: ../src/winspector.c:1352 msgid "Do not bind keyboard shortcuts" msgstr "No usar atajos de teclado" #: ../src/winspector.c:1354 msgid "" "Do not bind keyboard shortcuts from Window Maker\n" "when this window is focused. This will allow the\n" "window to receive all key combinations regardless\n" "of your shortcut configuration." msgstr "" "No usar los atajos de teclado de Window Maker cuando\n" "esta ventana esté activa. Esto permitirá que la\n" "ventana reciba todas las combinaciones de teclas\n" "sin importar su configuración de atajos." #: ../src/winspector.c:1360 msgid "Do not bind mouse clicks" msgstr "No asociar clicks del ratón" #: ../src/winspector.c:1362 #, c-format msgid "" "Do not bind mouse actions, such as `Alt'+drag\n" "in the window (when Alt is the modifier you have\n" "configured)." msgstr "" "No asociar acciones de ratón, tal como `Alt'+arrastre\n" "en la ventana (cuando Alt es el modificador que usted\n" "configuró)." #: ../src/winspector.c:1366 msgid "Do not show in the window list" msgstr "No mostrar en la lista de ventanas" #: ../src/winspector.c:1368 msgid "Do not list the window in the window list menu." msgstr "No mostrar esta ventana en el menú de lista de ventanas." #: ../src/winspector.c:1371 #, c-format msgid "Do not show in the switch panel" msgstr "No mostrar en panel de cambio de ventanas" #: ../src/winspector.c:1373 msgid "Do not include in switch panel while cycling windows." msgstr "No incluir en el panel de cambio de ventanas cuando las ventanas se alternen." #: ../src/winspector.c:1376 msgid "Do not let it take focus" msgstr "No dejar que sea la ventana activa" #: ../src/winspector.c:1378 msgid "" "Do not let the window take keyboard focus when you\n" "click on it." msgstr "" "No permitir que la ventana tome el foco del teclado\n" "cuando haga click sobre ella." #: ../src/winspector.c:1381 msgid "Keep inside screen" msgstr "Mantener dentro de la pantalla" #: ../src/winspector.c:1383 msgid "" "Do not allow the window to move itself completely\n" "outside the screen. For bug compatibility.\n" msgstr "" "No permitir que la ventana se mueva totalmente afuera\n" "de la pantalla. Para compatibilidad de fallos.\n" #: ../src/winspector.c:1387 msgid "Ignore 'Hide Others'" msgstr "Ignorar 'Ocultar Otras'" #: ../src/winspector.c:1389 msgid "" "Do not hide the window when issuing the\n" "`HideOthers' command." msgstr "" "No esconder esta ventana cuando se utilice\n" "la orden `Ocultar Otras'." #: ../src/winspector.c:1392 msgid "Ignore 'Save Session'" msgstr "Ignorar 'Guardar sesión'" #: ../src/winspector.c:1394 msgid "" "Do not save the associated application in the\n" "session's state, so that it won't be restarted\n" "together with other applications when Window Maker\n" "starts." msgstr "" "No guardar la aplicación asociada en el estado de la sesión\n" "para que no sea reiniciada junto con otras aplicaciones\n" "cuando se inicie Window Maker." #: ../src/winspector.c:1399 msgid "Emulate application icon" msgstr "Emular icono de aplicación" #: ../src/winspector.c:1401 msgid "" "Make this window act as an application that provides\n" "enough information to Window Maker for a dockable\n" "application icon to be created." msgstr "" "Hacer que esta ventana actúe como una aplicación que\n" "proporcione suficiente información a Window Maker\n" "para crear un icono de aplicación dockable." #: ../src/winspector.c:1406 msgid "Focus across workspaces" msgstr "Foco a través de áreas de trabajo" #: ../src/winspector.c:1408 msgid "" "Allow Window Maker to switch workspace to satisfy\n" "a focus request (annoying)." msgstr "" "Permitir a Window Maker cambiar el área de trabajo\n" "para satisfacer la solicitud de foco (molesto)." #: ../src/winspector.c:1412 #, c-format msgid "Do not let it be minimized" msgstr "No dejar que sea minimizada" #: ../src/winspector.c:1414 #, c-format msgid "" "Do not let the window of this application be\n" "minimized.\n" msgstr "No permitir a la ventana de esta\n" "aplicación ser minimizada.\n" #: ../src/winspector.c:1419 msgid "Disable language button" msgstr "Deshabilitar botón de idioma" #: ../src/winspector.c:1421 msgid "Remove the `toggle language' button of the window." msgstr "Retirar el botón `cambiar idioma' de la ventana." #: ../src/winspector.c:1438 msgid "Miniwindow Image" msgstr "Imagen de la Miniventana" #: ../src/winspector.c:1465 msgid "Icon filename:" msgstr "Nombre del fichero de icono:" #: ../src/winspector.c:1476 msgid "Ignore client supplied icon" msgstr "Ignorar el icono proporcionado por el cliente" #: ../src/winspector.c:1482 msgid "Initial Workspace" msgstr "Área de trabajo inicial" #: ../src/winspector.c:1484 msgid "The workspace to place the window when it's first shown." msgstr "" "El área de trabajo dónde colocar la ventana la primera vez que se muestre." #: ../src/winspector.c:1490 msgid "Nowhere in particular" msgstr "Ningún sitio en particular" #: ../src/winspector.c:1507 msgid "Application Attributes" msgstr "Atributos de Aplicación" #: ../src/winspector.c:1518 msgid "Start hidden" msgstr "Iniciar oculto" #: ../src/winspector.c:1520 msgid "Automatically hide application when it's started." msgstr "Ocultar automáticamente la aplicación cuando sea iniciada." #: ../src/winspector.c:1523 msgid "No application icon" msgstr "Sin icono de aplicación" #: ../src/winspector.c:1525 msgid "" "Disable the application icon for the application.\n" "Note that you won't be able to dock it anymore,\n" "and any icons that are already docked will stop\n" "working correctly." msgstr "" "Deshabilitar el icono de aplicación de la aplicación.\n" "Observe que ya no podrá ponerlo en el dock,\n" "y que los iconos que ya estén en el dock\n" "dejarán de funcionar correctamente." #: ../src/winspector.c:1531 msgid "Shared application icon" msgstr "Icono de aplicación compartido" #: ../src/winspector.c:1533 msgid "" "Use a single shared application icon for all of\n" "the instances of this application.\n" msgstr "" "Usar un único icono de aplicación compartido para todas\n" "las instancias de esta aplicación.\n" #: ../src/workspace.c:93 ../src/workspace.c:94 ../src/workspace.c:660 #, c-format msgid "Workspace %i" msgstr "Área de trabajo %i" #: ../src/workspace.c:704 msgid "Workspaces" msgstr "Áreas de trabajo" #: ../src/workspace.c:706 msgid "could not create Workspace menu" msgstr "no se pudo crear menú de Área de trabajo" #: ../src/workspace.c:713 msgid "New" msgstr "Nuevo" #: ../src/workspace.c:714 msgid "Destroy Last" msgstr "Destruir el último" WindowMaker-0.95.9/po/bg.po0000644000175000017500000026571113431646201012350 00000000000000# Message catalog for Window Maker. # Copyright (C) 2000,2001,2003 Free Software Foundation, Inc. # Boris Jordanov , 2000 # Bojidar Ivanov , 2000 # Slavei G. Karadjov , 2000 # Lyubomir Sotirov , 2000 # Anton Zinoviev , 2000, 2001, 2003 msgid "" msgstr "" "Project-Id-Version: WindowMaker 0.64.0\n" "POT-Creation-Date: 2003-02-09 13:00+0200\n" "PO-Revision-Date: 2003-02-09 14:21+0200\n" "Last-Translator: Anton Zinoviev \n" "Language-Team: Bulgarian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" # ../src/appicon.c:550 ../src/dialog.c:230 ../src/dock.c:3291 # ../src/dockedapp.c:211 ../src/main.c:254 ../src/rootmenu.c:1765 # ../src/winspector.c:383 ../src/winspector.c:399 #: ../src/appicon.c:426 ../src/dialog.c:304 ../src/dock.c:3326 #: ../src/dockedapp.c:230 ../src/main.c:273 ../src/rootmenu.c:1854 #: ../src/winspector.c:389 ../src/winspector.c:406 msgid "Error" msgstr "Грешка" # ../src/appicon.c:551 #: ../src/appicon.c:427 msgid "Could not open specified icon file" msgstr "Файлът с иконката не може да бъде зареден" # ../src/appicon.c:552 ../src/dialog.c:122 ../src/dialog.c:230 # ../src/dialog.c:574 ../src/dialog.c:1591 ../src/dock.c:515 # ../src/dock.c:523 ../src/dock.c:547 ../src/dock.c:3292 # ../src/dockedapp.c:212 ../src/dockedapp.c:370 ../src/main.c:254 # ../src/rootmenu.c:1769 ../src/winspector.c:384 ../src/winspector.c:400 #: ../src/appicon.c:428 ../src/dialog.c:201 ../src/dialog.c:304 #: ../src/dialog.c:751 ../src/dialog.c:1850 ../src/dock.c:526 #: ../src/dock.c:534 ../src/dock.c:558 ../src/dock.c:3327 #: ../src/dockedapp.c:231 ../src/dockedapp.c:426 ../src/main.c:273 #: ../src/rootmenu.c:1858 ../src/winspector.c:390 ../src/winspector.c:407 msgid "OK" msgstr "Приемам" # За да бъде без род замених "ще бъде затворена" на "ще се затвори". # "Запазена" е по-точен превод на "save" - не всичко запазено е записано # във файл. (А.З.) # ../src/appicon.c:579 ../src/dock.c:277 #: ../src/appicon.c:456 ../src/dock.c:264 msgid "" " will be forcibly closed.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" " ще се затвори принудително.\n" "Всяка информация, която не е запазена ще бъде загубена.\n" "Наистина ли желаете това?" # # ../src/appicon.c:585 ../src/dock.c:282 ../src/winmenu.c:125 #: ../src/appicon.c:464 ../src/dock.c:283 ../src/winmenu.c:125 msgid "Kill Application" msgstr "Убиване на приложение" # ../src/appicon.c:586 ../src/dock.c:283 ../src/winmenu.c:127 #: ../src/appicon.c:465 ../src/dock.c:284 ../src/winmenu.c:127 msgid "Yes" msgstr "Да" # ../src/appicon.c:586 ../src/dock.c:283 ../src/winmenu.c:127 #: ../src/appicon.c:465 ../src/dock.c:284 ../src/winmenu.c:127 msgid "No" msgstr "Не" # ../src/appicon.c:604 ../src/dock.c:1159 ../src/dock.c:3463 #: ../src/appicon.c:495 ../src/dock.c:1178 ../src/dock.c:3492 msgid "Unhide Here" msgstr "Покажи" # ../src/appicon.c:605 ../src/appicon.c:630 ../src/dock.c:1161 # ../src/dock.c:1163 ../src/dock.c:3475 ../src/winmenu.c:469 #: ../src/appicon.c:496 ../src/appicon.c:521 ../src/dock.c:1180 #: ../src/dock.c:1182 ../src/dock.c:3504 ../src/winmenu.c:465 msgid "Hide" msgstr "Скрий" # Може би "постави" вместо "прибави"? (А.З.) # ../src/appicon.c:606 #: ../src/appicon.c:497 msgid "Set Icon..." msgstr "Постави иконка..." # ../src/appicon.c:607 ../src/dock.c:1167 ../src/rootmenu.c:226 # ../src/rootmenu.c:240 ../src/winmenu.c:516 #: ../src/appicon.c:498 ../src/dock.c:1186 ../src/rootmenu.c:248 #: ../src/rootmenu.c:264 ../src/winmenu.c:520 msgid "Kill" msgstr "Убий" # ../src/appicon.c:628 ../src/dock.c:3473 #: ../src/appicon.c:519 ../src/dock.c:3502 msgid "Unhide" msgstr "Покажи" #: ../src/application.c:398 #, c-format msgid "recreating missing icon '%s'" msgstr "повторно създаване на липсваща иконка \"%s\"" # ../src/defaults.c:972 ../src/defaults.c:1066 #: ../src/defaults.c:922 ../src/defaults.c:1011 #, c-format msgid "Domain %s (%s) of global defaults database is corrupted!" msgstr "Областта %s (%s) от глобалната база данни с настройки е повредена!" # ../src/defaults.c:1071 #: ../src/defaults.c:927 #, c-format msgid "could not load domain %s from global defaults database" msgstr "областта %s от глобалната база данни не може да бъде заредена" # [ start translation # Translated by: Boris Jordanov # # Според мен defaults database значи не подразбиращата се база данни, а # базата данни с подразбирания, т.е. с настройки. Съответно и # по-нататък изрази като "базата от данни с подразбиращи се # потребителски настройки" съм заменял на "потребителската база данни с # настройки". (А.З.) # # И аз така го разбирам, но някак не ми дойде правилно звучащ израз :) # (Б.Й.) # # Относно "Dock" аз лично предпочитам "Док" (Б.Й.) # # Изрази от вида "да бъде прочетена" тук и по-нататък съм заменил на "да # се прочете" единствено за краткост -- при някои шрифтове по-дългият # изказ прави проблеми. (А.З.) # # Ако съображенията за краткост са наистина наложителни - ОК, но "да се # прочете" звучи не съвсем едносмислено: "да се прочете" сама? или "да # бъде прочетена" - от някого, процес, програма? Дали в момента не пиша # безсмислици ?!?! (Б.Й.) # # Поувлякох се. Това тук са конзолни съобщения и съображенията за # краткост не важат. (А.З.) # ../src/defaults.c:910 ../src/startup.c:820 ../src/startup.c:838 # ../src/startup.c:844 #: ../src/defaults.c:949 ../src/startup.c:884 ../src/startup.c:902 #: ../src/startup.c:908 #, c-format msgid "could not read domain \"%s\" from defaults database" msgstr "областта \"%s\" не може да бъде прочетена от базата данни с настройки" # ../src/defaults.c:956 ../src/defaults.c:1081 ../src/defaults.c:1120 # ../src/defaults.c:1150 #: ../src/defaults.c:995 ../src/defaults.c:1099 ../src/defaults.c:1140 #: ../src/defaults.c:1196 #, c-format msgid "Domain %s (%s) of defaults database is corrupted!" msgstr "Областта %s (%s) от базата данни с настройки е повредена!" # ../src/defaults.c:961 ../src/defaults.c:1102 ../src/defaults.c:1133 # ../src/defaults.c:1159 #: ../src/defaults.c:1000 ../src/defaults.c:1119 ../src/defaults.c:1176 #: ../src/defaults.c:1205 #, c-format msgid "could not load domain %s from user defaults database" msgstr "" "областта %s от потребителската база данни с настройки не може да бъде " "заредена." # ../src/defaults.c:991 #: ../src/defaults.c:1030 #, c-format msgid "could not load domain %s from global defaults database (%s)" msgstr "областта %s от глобалната база данни %s не може да бъде заредена" # ../src/screen.c:460 #: ../src/defaults.c:1166 ../src/screen.c:460 #, c-format msgid "could not load logo image for panels: %s" msgstr "картинката %s със знак за панели не може да зареди" # ../src/defaults.c:1510 ../src/defaults.c:1622 ../src/defaults.c:2040 # ../src/defaults.c:2057 ../src/defaults.c:2160 ../src/defaults.c:2207 # ../src/defaults.c:2701 ../src/wdefaults.c:565 ../src/wdefaults.c:601 #. --------------------------- Local ----------------------- #: ../src/defaults.c:1414 ../src/defaults.c:1556 ../src/defaults.c:1668 #: ../src/defaults.c:2147 ../src/defaults.c:2164 ../src/defaults.c:2209 #: ../src/defaults.c:2256 ../src/defaults.c:2729 ../src/wdefaults.c:571 #: ../src/wdefaults.c:607 #, c-format msgid "Wrong option format for key \"%s\". Should be %s." msgstr "Неправилен формат на параметъра на ключа \"%s\". Трябва да бъде %s." # ../src/defaults.c:1451 ../src/defaults.c:1483 ../src/defaults.c:1515 # ../src/defaults.c:1528 ../src/defaults.c:1543 ../src/defaults.c:1557 # ../src/defaults.c:1627 ../src/defaults.c:1639 ../src/defaults.c:2045 # ../src/defaults.c:2062 ../src/defaults.c:2075 ../src/defaults.c:2165 # ../src/defaults.c:2181 ../src/defaults.c:2212 ../src/defaults.c:2299 # ../src/defaults.c:2707 ../src/defaults.c:2720 #: ../src/defaults.c:1416 ../src/defaults.c:1497 ../src/defaults.c:1529 #: ../src/defaults.c:1561 ../src/defaults.c:1574 ../src/defaults.c:1589 #: ../src/defaults.c:1603 ../src/defaults.c:1673 ../src/defaults.c:1685 #: ../src/defaults.c:2152 ../src/defaults.c:2169 ../src/defaults.c:2182 #: ../src/defaults.c:2214 ../src/defaults.c:2230 ../src/defaults.c:2261 #: ../src/defaults.c:2348 ../src/defaults.c:2734 ../src/defaults.c:2745 #, c-format msgid "using default \"%s\" instead" msgstr "вместо това по подразбиране се използва \"%s\"" # ../src/defaults.c:1401 #: ../src/defaults.c:1447 #, c-format msgid "wrong option value for key \"%s\". Should be one of %s" msgstr "" "неправилна стойност за ключа \"%s\". Трябва да бъде една от следните: %s" # ../src/defaults.c:1446 #: ../src/defaults.c:1492 #, c-format msgid "can't convert \"%s\" to boolean for key \"%s\"" msgstr "не може да се преобразува \"%s\" в булева стойност за ключa \"%s\"" # ../src/defaults.c:1480 #: ../src/defaults.c:1526 #, c-format msgid "can't convert \"%s\" to integer for key \"%s\"" msgstr "не може да се преобразува \"%s\" в цяло число за ключа \"%s\"" # ../src/defaults.c:1523 #: ../src/defaults.c:1569 #, c-format msgid "Incorrect number of elements in array for key \"%s\"." msgstr "Неправилен брой елементи в масива за ключa \"%s\"." # ../src/defaults.c:1538 #: ../src/defaults.c:1584 #, c-format msgid "Wrong value for key \"%s\". Should be Coordinate." msgstr "Неправилна стойност за ключа \"%s\". Трябва да бъде Coordinate." # ../src/defaults.c:1553 #: ../src/defaults.c:1599 #, c-format msgid "can't convert array to integers for \"%s\"." msgstr "масивът не може да се преобразува в целочислени стойности за \"%s\"." # ../src/defaults.c:1749 ../src/defaults.c:1781 ../src/defaults.c:1797 # ../src/defaults.c:1843 ../src/defaults.c:1883 ../src/defaults.c:1921 # ../src/defaults.c:1937 #: ../src/defaults.c:1797 ../src/defaults.c:1829 ../src/defaults.c:1845 #: ../src/defaults.c:1874 ../src/defaults.c:1897 ../src/defaults.c:1950 #: ../src/defaults.c:1990 ../src/defaults.c:2028 ../src/defaults.c:2044 #, c-format msgid "\"%s\" is not a valid color name" msgstr "\"%s\" не е валидно име на цвят" # ../src/defaults.c:1762 #: ../src/defaults.c:1810 ../src/defaults.c:1862 msgid "bad number of arguments in gradient specification" msgstr "неправилен брой аргументи при определяне на градиент" # ../src/defaults.c:1816 #: ../src/defaults.c:1923 msgid "too few arguments in multicolor gradient specification" msgstr "недостатъчно аргументи при определяне на многоцветен градиент" # ../src/defaults.c:1910 #: ../src/defaults.c:2017 msgid "bad number of arguments in textured gradient specification" msgstr "неправилен брой аргументи при определяне на градиент с текстура" # ../src/defaults.c:1953 #: ../src/defaults.c:2060 #, c-format msgid "bad opacity value for tgradient texture \"%s\". Should be [0..255]" msgstr "" "неправилна стойност на прозрачност \"%s\" за текстурата на градиент. Трябва " "да бъде от 0 до 255" # ../src/defaults.c:2013 #: ../src/defaults.c:2120 #, c-format msgid "could not initialize library %s" msgstr "библиотеката %s не може да бъде инициализирана" # ../src/defaults.c:2016 #: ../src/defaults.c:2123 #, c-format msgid "could not find function %s::%s" msgstr "функцията %s::%s не може да бъде открита" # ../src/defaults.c:2023 #: ../src/defaults.c:2130 #, c-format msgid "invalid texture type %s" msgstr "неправилен тип текстура (%s)" # ../src/defaults.c:2070 #: ../src/defaults.c:2177 #, c-format msgid "Error in texture specification for key \"%s\"" msgstr "Грешка при определяне на текстура за ключа \"%s\"" # ../src/defaults.c:2177 #: ../src/defaults.c:2226 msgid "Wrong type for workspace background. Should be a texture type." msgstr "Неправилен тип фон за работно място. Трябва да бъде вид текстура." # ../src/defaults.c:2225 #: ../src/defaults.c:2274 #, c-format msgid "Wrong type for background of workspace %i. Should be a texture." msgstr "Неправилен тип фон за работно място %i. Трябва да бъде текстура." # Translated by: Boris Jordanov # [ end translation # ../src/defaults.c:2267 #: ../src/defaults.c:2316 msgid "could not load any usable font!!!" msgstr "не може да се зареди никой използваем шрифт!!!" # ../src/defaults.c:2294 #: ../src/defaults.c:2343 #, c-format msgid "could not get color for key \"%s\"" msgstr "не може да се определи цвят за ключа \"%s\"" # ../src/defaults.c:2352 ../src/rootmenu.c:492 #: ../src/defaults.c:2401 ../src/rootmenu.c:526 #, c-format msgid "%s:invalid key modifier \"%s\"" msgstr "%s: неправилен клавишен модификатор \"%s\"" # # ../src/defaults.c:2364 #: ../src/defaults.c:2413 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\"" msgstr "%s: определена е недопустима клавишна комбинация \"%s\"" # # ../src/defaults.c:2371 #: ../src/defaults.c:2420 #, c-format msgid "%s:invalid key in shortcut \"%s\"" msgstr "%s: недопустим клавиш в комбинацията \"%s\"" # ../src/defaults.c:2396 #: ../src/defaults.c:2445 #, c-format msgid "%s: modifier key %s is not valid" msgstr "%s: модификаторът %s не е известен" # ../src/defaults.c:2428 #: ../src/defaults.c:2477 #, c-format msgid "could not load image in option %s: %s" msgstr "не може да бъде заредено изображението от параметъра %s: %s" # ../src/defaults.c:2547 #: ../src/defaults.c:2594 #, c-format msgid "failed to open bitmap file \"%s\"" msgstr "неуспешно зареждането на файла с картинка \"%s\"" # ../src/defaults.c:2550 #: ../src/defaults.c:2597 #, c-format msgid "\"%s\" is not a valid bitmap file" msgstr "\"%s\" не е валидно име на файл с картинка" # ../src/defaults.c:2553 #: ../src/defaults.c:2600 #, c-format msgid "out of memory reading bitmap file \"%s\"" msgstr "изчерпване на паметта при четене на картинката \"%s\"" # ../src/defaults.c:2597 ../src/defaults.c:2639 #: ../src/defaults.c:2639 ../src/defaults.c:2672 msgid "bad number of arguments in cursor specification" msgstr "неправилен брой аргументи при определяне на курсор" # ../src/defaults.c:2617 #: ../src/defaults.c:2655 #, c-format msgid "unknown builtin cursor name \"%s\"" msgstr "непознато име на вграден курсор \"%s\"" # ../src/defaults.c:2651 ../src/defaults.c:2665 #: ../src/defaults.c:2682 ../src/defaults.c:2694 #, c-format msgid "could not find cursor bitmap file \"%s\"" msgstr "не може да се открие картинката за курсор \"%s\"" # ../src/defaults.c:2715 #: ../src/defaults.c:2741 #, c-format msgid "Error in cursor specification for key \"%s\"" msgstr "Грешка при определяне на курсор в ключа \"%s\"" # ../src/defaults.c:2805 #: ../src/defaults.c:2826 msgid "could not render texture for icon background" msgstr "текстурата за фон не може да бъде изобразена" #: ../src/dialog.c:157 msgid "Save workspace state" msgstr "Да се запази състоянието" # ../src/dialog.c:122 ../src/dialog.c:581 ../src/dock.c:547 # ../src/dockedapp.c:376 ../src/rootmenu.c:188 ../src/rootmenu.c:226 # ../src/rootmenu.c:240 #: ../src/dialog.c:201 ../src/dialog.c:758 ../src/dock.c:558 #: ../src/dockedapp.c:431 ../src/rootmenu.c:198 ../src/rootmenu.c:248 #: ../src/rootmenu.c:264 msgid "Cancel" msgstr "Отменям" # # ../src/dialog.c:225 #: ../src/dialog.c:299 msgid "Could not open directory \"%s\":\n%s" msgstr "Не може да бъде отворена директорията \"%s\":\n%s" # ../src/dialog.c:280 #: ../src/dialog.c:354 msgid "Could not load image file " msgstr "Не може да бъде зареден файл с картинка " # ../src/dialog.c:509 #: ../src/dialog.c:685 msgid "Directories" msgstr "Директории" # ../src/dialog.c:518 #: ../src/dialog.c:694 msgid "Icons" msgstr "Иконки" # ../src/dialog.c:551 #: ../src/dialog.c:727 msgid "Preview" msgstr "Преглед" # # ../src/dialog.c:564 #: ../src/dialog.c:740 msgid "File Name:" msgstr "Файл:" # ../src/dialog.c:587 #: ../src/dialog.c:764 msgid "Choose File" msgstr "Избор на файл" # ../src/dialog.c:604 ../src/dialog.c:606 #: ../src/dialog.c:783 ../src/dialog.c:785 msgid "Icon Chooser" msgstr "Избор на иконка" #: ../src/dialog.c:1265 ../src/dialog.c:1375 #, c-format msgid "Version %s" msgstr "Версия %s" #: ../src/dialog.c:1372 msgid "Window Manager for X" msgstr "Администратор на прозорци" #: ../src/dialog.c:1397 #, c-format msgid "Using visual 0x%x: %s %ibpp " msgstr "Използва се видеорежим 0x%x: %s %i байта/пиксел " #: ../src/dialog.c:1405 msgid "(32 thousand colors)\n" msgstr "(32 хиляди цвята)\n" #: ../src/dialog.c:1408 msgid "(64 thousand colors)\n" msgstr "(64 хиляди цвята)\n" #: ../src/dialog.c:1412 msgid "(16 million colors)\n" msgstr "(16 милиона цвята)\n" #: ../src/dialog.c:1415 #, c-format msgid "(%d colors)\n" msgstr "(%d цвята)\n" #: ../src/dialog.c:1425 #, c-format msgid "Total allocated memory: %i kB. Total memory in use: %i kB.\n" msgstr "Заделена памет: %i KB. Употребявана памет: %i KB.\n" #: ../src/dialog.c:1283 msgid "Image formats: " msgstr "Графични формати: " #: ../src/dialog.c:1439 msgid "" "\n" "Additional support for: " msgstr "" "\n" "Допълнителна поддръжка за: " #: ../src/dialog.c:1462 msgid " and " msgstr " и " #: ../src/dialog.c:1472 msgid "" "\n" "Sound disabled" msgstr "\nОзвучаването е изключено" #: ../src/dialog.c:1474 msgid "" "\n" "Sound enabled" msgstr "\nОзвучаването е включено" # ../src/dockedapp.c:212 #: ../src/dialog.c:1503 msgid "Info" msgstr "Информация" #: ../src/dialog.c:1527 msgid "Merry Christmas!" msgstr "Весела Коледа!" #: ../src/dialog.c:1417 msgid "" " Window Maker 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.\n" "\n" " Window Maker 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.\n" "\n" " You should have received a copy of the GNU General Public License along " "with this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin Street, Fifth Floor, Boston, MA02110-1301 USA." msgstr "" " Уиндоу Мейкър е свободен софтуер; може да го разпространявате и/или " "изменяте съгласно условията на Основната общодостъпна лицензия ГНУ, " "както тя е публикувана от Free Software Foundation, или версия 2 на " "лицензията, или (ако желаете) коя да е следваща версия.\n" "\n" " Уиндоу Мейкър се разпространява с надеждата, че ще бъде полезен, но " "БЕЗ НИКАКВИ ГАРАНЦИИ, без дори подразбиращата се гаранция за " "ПОЛЕЗНОСТ или ПРИГОДНОСТ ЗА НЯКАКВА ЦЕЛ. Вижте Основната " "общодостъпна лицензия ГНУ за повече подробности.\n" "\n" " Би трябвало а сте получили копие на Основната общодостъпна " "лицензия ГНУ (GNU General Public License) заедно с тази програма; в " "противен случай пишете до Free Software Foundation, Inc., 51 Franklin St, " "Fifth Floor, Boston, MA 02110-1301, USA." #: ../src/dialog.c:1621 msgid "Legal" msgstr "Право" # ../src/dialog.c:1515 ../src/startup.c:328 #: ../src/dialog.c:1773 ../src/startup.c:394 msgid "cannot open connection for crashing dialog panel. Aborting." msgstr "" "не може да се осъществи връзка с панела за авариен диалог. Прекратяване на " "работата." # ../src/dialog.c:1541 #: ../src/dialog.c:1799 msgid "Fatal error" msgstr "Критична грешка" # ../src/dialog.c:1552 #: ../src/dialog.c:1810 #, c-format msgid "" "Window Maker received signal %i\n" "(%s)." msgstr "" "Уиндоу Мейкър получи сигнал %i\n" "(%s)." # ../src/dialog.c:1555 #: ../src/dialog.c:1813 #, c-format msgid "Window Maker received signal %i." msgstr "Уиндоу Мейкър получи сигнал %i." #. Comment for the PO file: the %s is an email address #: ../src/dialog.c:1632 #, c-format msgid "" " This fatal error occured probably due to a bug. Please fill the included " "BUGFORM and report it to %s." msgstr "Възникналата критична грешка вероятно се дължи на програмен дефект. Моля попълнете формуляра от файла BUGFORM и го изпратете на адрес %s." # ../src/dialog.c:1572 #: ../src/dialog.c:1831 msgid "What do you want to do now?" msgstr "Какво да се прави сега?" # ../src/dialog.c:1578 #: ../src/dialog.c:1837 msgid "Select action" msgstr "Избор на действие" # ../src/dialog.c:1579 #: ../src/dialog.c:1838 msgid "Abort and leave a core file" msgstr "Прекъсни и остави core-файл" # ../src/dialog.c:1580 #: ../src/dialog.c:1839 msgid "Restart Window Maker" msgstr "Рестартирай Уиндоу Мейкър" # ../src/dialog.c:1581 #: ../src/dialog.c:1840 msgid "Start alternate window manager" msgstr "Стартирай друг администратор на прозорците" #: ../src/dialog.c:2018 msgid "" "Window Maker is part of the GNUstep project.\n" "The GNUstep project aims to create a free\n" "implementation of the OpenStep(tm) specification\n" "which is a object-oriented framework for\n" "creating advanced graphical, multi-platform\n" "applications. Additionally, a development and\n" "user desktop environment will be created on top\n" "of the framework. For more information about\n" "GNUstep, please visit: www.gnustep.org" msgstr "" "Уиндоу Мейкър е част от проекта ГНУстеп.\n" "Проектът ГНУстеп има за цел да създаде свободна\n" "реализация на стандарта OpenStep™, представляващ\n" "обектноориентирана среда за създаване на разно-\n" "образни графични и мултиплатформени приложения.\n" "На тази основа ще бъде създадена и интегрирана\n" "потребителска среда. За повече информация\n" "относно ГНУстеп, моля посетете www.gnustep.org" #: ../src/dialog.c:2041 msgid "About GNUstep" msgstr "Относно ГНУстеп" # Смених "задайте" на "изберете" от стилистични съображения (А.З.) # ../src/dock.c:213 #: ../src/dock.c:213 #, c-format msgid "Type the name for workspace %i:" msgstr "Изберете име за работно място %i:" # Тук Workspace не е преведено, защото става много дълго и не се побира.(А.З.) # ../src/dock.c:214 ../src/dock.c:1123 ../src/dock.c:1126 ../src/dock.c:3381 #: ../src/dock.c:214 ../src/dock.c:1142 ../src/dock.c:1145 ../src/dock.c:3410 msgid "Rename Workspace" msgstr "Преименуване" # ../src/dock.c:509 ../src/dock.c:517 #: ../src/dock.c:520 ../src/dock.c:528 msgid "Warning" msgstr "Внимание!" # ../src/dock.c:510 #: ../src/dock.c:521 msgid "" "Some icons cannot be made omnipresent. Please make sure that no other icon " "is docked in the same positions on the other workspaces and the Clip is not " "full in some workspace." msgstr "" "Някои иконки не може да се направят вездесъщни. Моля, убедете се, че никоя " "друга иконка не е скачена на същото място в другите работни места и че " "Кламерът не е пълен в някое работно място." # "вездесъщни" - "всеприсъстващи", "всеприсъствени"? Прекалено дълги думички. (Б.Й.) # ../src/dock.c:518 #: ../src/dock.c:529 msgid "" "Icon cannot be made omnipresent. Please make sure that no other icon is " "docked in the same position on the other workspaces and the Clip is not full " "in some workspace." msgstr "Иконката не може да се направи вездесъщна. Моля убедете се, че никоя друга иконка не е скачена на същото място в някое друго работно място и че Кламерът не е препълнен в някое работно място." # ../src/dock.c:545 #: ../src/dock.c:556 msgid "Workspace Clip" msgstr "Кламер" # ../src/dock.c:546 #: ../src/dock.c:557 msgid "All selected icons will be removed!" msgstr "Всички маркирани иконки ще бъдат отстранени!" # ../src/dock.c:597 ../src/dock.c:1138 ../src/dock.c:1140 ../src/dock.c:3417 #: ../src/dock.c:608 ../src/dock.c:1157 ../src/dock.c:1159 ../src/dock.c:3446 msgid "Keep Icon" msgstr "Запази иконката" # # ../src/dock.c:598 ../src/dock.c:2120 ../src/dock.c:2254 #: ../src/dock.c:609 ../src/dock.c:2138 ../src/dock.c:2279 msgid "Type the command used to launch the application" msgstr "Въведете командата за стартиране на приложението" # # ../src/dock.c:949 #: ../src/dock.c:965 #, c-format msgid "could not launch application %s\n" msgstr "не може да се стартира приложението %s\n" # ../src/dock.c:1004 #: ../src/dock.c:1020 msgid "could not create workspace submenu for Clip menu" msgstr "не може да се направи подменю с работните места в менюто на Кламер" # ../src/dock.c:1066 #: ../src/dock.c:1079 msgid "could not create options submenu for Clip menu" msgstr "не може да се направи подменю за настройки в менюто на Кламер" # ../src/dock.c:1027 ../src/dock.c:1070 ../src/dock.c:1115 ../src/dock.c:3361 #: ../src/dock.c:1083 ../src/dock.c:1131 msgid "Keep on Top" msgstr "Винаги отгоре" # ../src/dock.c:1073 #: ../src/dock.c:1089 msgid "Collapsed" msgstr "Свит" # ../src/dock.c:1079 #: ../src/dock.c:1095 msgid "Autocollapse" msgstr "Да се свива автоматично" # ../src/dock.c:1085 #: ../src/dock.c:1101 msgid "Autoraise" msgstr "Да изплува автоматично" # ../src/dock.c:1091 #: ../src/dock.c:1107 msgid "Autoattract Icons" msgstr "Да привлича иконките" # ../src/dock.c:1118 #: ../src/dock.c:1137 msgid "Clip Options" msgstr "Предпочитания за Кламер" # ../src/dock.c:1128 #: ../src/dock.c:1147 msgid "Selected" msgstr "Маркирай я" # ../src/dock.c:1133 ../src/dock.c:1136 ../src/dock.c:3408 #: ../src/dock.c:1152 ../src/dock.c:1155 ../src/dock.c:3437 msgid "Select All Icons" msgstr "Маркирай всички иконки" # ../src/dock.c:1142 ../src/dock.c:1144 ../src/dock.c:3425 #: ../src/dock.c:1161 ../src/dock.c:1163 ../src/dock.c:3454 msgid "Move Icon To" msgstr "Премести иконката в" # ../src/dock.c:1149 ../src/dock.c:1152 ../src/dock.c:3436 #: ../src/dock.c:1168 ../src/dock.c:1171 ../src/dock.c:3465 msgid "Remove Icon" msgstr "Махни иконката" # ../src/dock.c:1154 #: ../src/dock.c:1173 msgid "Attract Icons" msgstr "Привлечи иконките" # ../src/dock.c:1157 #: ../src/dock.c:1176 msgid "Launch" msgstr "Стартирай" # ../src/dock.c:1165 #: ../src/dock.c:1184 msgid "Settings..." msgstr "Настройки..." # ../src/dock.c:1524 ../src/dock.c:1627 #: ../src/dock.c:1549 ../src/dock.c:1656 #, c-format msgid "bad value in docked icon state info %s" msgstr "неправилна стойност за състояние на скачена иконка %s" # ../src/dock.c:1635 #: ../src/dock.c:1664 #, c-format msgid "bad value in docked icon position %i,%i" msgstr "неправилно местоположение %i,%i на скачена иконка" # ../src/dock.c:1524 ../src/dock.c:1627 #: ../src/dock.c:1684 #, c-format msgid "bad value in dock state info:%s" msgstr "неправилна стойност за състояние на Дока: %s" # ../src/dock.c:1887 #: ../src/dock.c:1920 msgid "there are too many icons stored in dock. Ignoring what doesn't fit" msgstr "има твърде много иконки в Дока и някои не се побират в работното място" # ../src/dock.c:2119 ../src/dock.c:2253 #. icon->forced_dock = 1; #: ../src/dock.c:2137 ../src/dock.c:2278 msgid "Dock Icon" msgstr "Скачване на иконка" # ../src/dock.c:3284 ../src/dock.c:3288 #: ../src/dock.c:3324 #, c-format msgid "Could not execute command \"%s\"" msgstr "Не може да се изпълни командата \"%s\"" # ../src/dock.c:3387 #: ../src/dock.c:3416 msgid "Toggle Omnipresent" msgstr "Смени вездесъщността" # Изненада: "omnipresent" се използва както за иконка, така и за прозорец. # Затова не може нито "вездесъщен", нито "вездесъщна" и съм използвал # безличното "вездесъщност". (А.З.) # ../src/dock.c:3392 ../src/winmenu.c:421 ../src/winspector.c:1380 #: ../src/dock.c:3421 ../src/kwm.c:637 ../src/winmenu.c:418 #: ../src/winspector.c:1375 msgid "Omnipresent" msgstr "Вездесъщност" # ../src/dock.c:3406 #: ../src/dock.c:3435 msgid "Unselect All Icons" msgstr "Размаркирай иконките" # ../src/dock.c:3415 #: ../src/dock.c:3444 msgid "Keep Icons" msgstr "Запази иконките" # ../src/dock.c:3423 #: ../src/dock.c:3452 msgid "Move Icons To" msgstr "Премести иконките в" # ../src/dock.c:3434 #: ../src/dock.c:3463 msgid "Remove Icons" msgstr "Отстрани иконките" # ../src/dock.c:3465 #: ../src/dock.c:3494 ../src/kwm.c:643 msgid "Bring Here" msgstr "Донеси тук" # ../src/dockedapp.c:131 #: ../src/dockedapp.c:149 #, c-format msgid "could not find icon %s, used in a docked application" msgstr "иконката %s, използвана от приложението, не може да бъде открита" # # ../src/dockedapp.c:210 #: ../src/dockedapp.c:229 #, c-format msgid "Could not open specified icon file: %s" msgstr "Иконката \"%s\" не може да бъде заредена" # ../src/dockedapp.c:212 #: ../src/dockedapp.c:231 msgid "Ignore" msgstr "Пропусни" # ../src/dockedapp.c:305 #: ../src/dockedapp.c:333 msgid "Start when Window Maker is started" msgstr "Да се стартира автоматично в началото" # ../src/dockedapp.c:312 #: ../src/dockedapp.c:340 msgid "Lock (prevent accidental removal)" msgstr "Да се предпазва от неволно махане" # # ../src/dockedapp.c:318 #: ../src/dockedapp.c:344 msgid "Application path and arguments" msgstr "Път към приложението и аргументи" #: ../src/dockedapp.c:357 msgid "Command for middle-click launch" msgstr "Команда за пускане със среден бутон" # ../src/dockedapp.c:341 #: ../src/dockedapp.c:371 #, c-format msgid "%s will be replaced with current selection" msgstr "%s ще бъде заменено с текущия избор" # ../src/dockedapp.c:329 #: ../src/dockedapp.c:376 msgid "Command for files dropped with DND" msgstr "Команда за пуснати файлове" # ../src/dockedapp.c:341 #: ../src/dockedapp.c:390 #, c-format msgid "%d will be replaced with the file name" msgstr "%d ще се заменя с името на файла" # ../src/dockedapp.c:345 #: ../src/dockedapp.c:394 msgid "DND support was not compiled in" msgstr "поддръжката за DND не е компилирана" # ../src/dockedapp.c:351 #: ../src/dockedapp.c:399 msgid "Icon Image" msgstr "Иконка" # ../src/dockedapp.c:363 ../src/winspector.c:1518 #: ../src/dockedapp.c:413 ../src/winspector.c:1513 msgid "Browse..." msgstr "Избери..." # # ../src/dockedapp.c:408 #: ../src/dockedapp.c:466 msgid "Docked Application Settings" msgstr "Настройки за скачено приложение" # ../src/framewin.c:655 ../src/framewin.c:750 ../src/menu.c:458 # ../src/texture.c:549 #: ../src/framewin.c:649 ../src/framewin.c:744 ../src/menu.c:456 #: ../src/texture.c:594 #, c-format msgid "could not render texture: %s" msgstr "текстурата %s не може да бъде изобразена" # ../src/framewin.c:678 ../src/framewin.c:689 ../src/framewin.c:705 # ../src/framewin.c:716 ../src/framewin.c:723 ../src/framewin.c:730 # ../src/icon.c:350 ../src/menu.c:487 #: ../src/framewin.c:672 ../src/framewin.c:683 ../src/framewin.c:699 #: ../src/framewin.c:710 ../src/framewin.c:717 ../src/framewin.c:724 #: ../src/icon.c:350 ../src/menu.c:485 #, c-format msgid "error rendering image:%s" msgstr "грешка при изобразяване на %s" # ../src/framewin.c:783 #: ../src/framewin.c:777 #, c-format msgid "error rendering image: %s" msgstr "грешка при изобразяване на %s" # ../src/session.c:1023 #: ../src/gnome.c:216 ../src/gnome.c:343 ../src/gnome.c:401 msgid "out of memory while updating GNOME hints" msgstr "изчерпана памет при актуализиране на GNOME hints" # ../src/icon.c:229 ../src/wdefaults.c:435 #: ../src/icon.c:229 ../src/wdefaults.c:443 #, c-format msgid "error loading image file \"%s\": %s" msgstr "грешка при зареждане на файла с картинка \"%s\": %s" # # ../src/icon.c:488 ../src/icon.c:497 #: ../src/icon.c:493 ../src/icon.c:502 #, c-format msgid "could not create directory %s" msgstr "не може да се създаде директория %s" # ../src/icon.c:764 #: ../src/icon.c:769 #, c-format msgid "could not find default icon \"%s\"" msgstr "не може да се зареди подразбиращата се иконка \"%s\"" # ../src/icon.c:770 #: ../src/icon.c:775 #, c-format msgid "could not load default icon \"%s\":%s" msgstr "не може да се зареди подразбиращата се иконка (\"%s\"): %s" # ../src/winmenu.c:444 ../src/winmenu.c:579 #. #. * 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/kwm.c:633 ../src/winmenu.c:441 ../src/winmenu.c:583 msgid "Maximize" msgstr "Максимизирай" # ../src/winmenu.c:574 #: ../src/kwm.c:634 ../src/winmenu.c:578 msgid "Unmaximize" msgstr "Намали" # ../src/winmenu.c:452 ../src/winmenu.c:565 #: ../src/kwm.c:635 ../src/winmenu.c:449 ../src/winmenu.c:569 msgid "Miniaturize" msgstr "Минимизирай" # ../src/winmenu.c:560 #: ../src/kwm.c:636 ../src/winmenu.c:564 msgid "Deminiaturize" msgstr "Уголеми" # Изненада: "omnipresent" се използва както за иконка, така и за прозорец. # Затова не може нито "вездесъщен", нито "вездесъщна" и съм използвал # безличното "вездесъщност". (А.З.) # ../src/dock.c:3392 ../src/winmenu.c:421 ../src/winspector.c:1380 #: ../src/kwm.c:638 msgid "Not Omnipresent" msgstr "Не вездесъщен" # ../src/winmenu.c:493 #: ../src/kwm.c:639 msgid "Move" msgstr "Преместване" # ../src/winmenu.c:477 #: ../src/kwm.c:640 msgid "Resize" msgstr "Преоразмеряване" # ../src/rootmenu.c:226 ../src/winmenu.c:509 #. #. entry = wMenuAddCallback(menu, _("Select Shortcut"), NULL, NULL); #. wMenuEntrySetCascade(menu, entry, makeMakeShortcutMenu(scr)); #. #: ../src/kwm.c:641 ../src/rootmenu.c:248 ../src/winmenu.c:513 msgid "Close" msgstr "Затвори" # ../src/winmenu.c:493 #: ../src/kwm.c:642 ../src/winmenu.c:497 msgid "Move To" msgstr "Премести на..." #: ../src/kwm.c:1096 msgid "%a(Run Command,Type the command to run:)" msgstr "%a(Изпълни команда,Въведете командата, която да се изпълни:)" # ../src/main.c:204 #: ../src/main.c:222 msgid "failed to restart Window Maker." msgstr "рестартирането на Уиндоу Мейкър бе неуспешно." # ../src/main.c:207 #: ../src/main.c:225 #, c-format msgid "could not exec %s" msgstr "не може да се изпълни %s" # ../src/main.c:252 #: ../src/main.c:271 msgid "Could not execute command: " msgstr "Не може да се изпълни командата " # ../src/main.c:409 #: ../src/main.c:428 #, c-format msgid "%s aborted.\n" msgstr "%s е прекъснато аварийно.\n" # ../src/main.c:420 #: ../src/main.c:439 #, c-format msgid "Usage: %s [options]\n" msgstr "Употреба: %s [опции]\n" # ../src/main.c:421 #: ../src/main.c:440 msgid "The Window Maker window manager for the X window system" msgstr "Уиндоу Мейкър -- администратор на прозорците за X Window" # ../src/main.c:423 #: ../src/main.c:442 msgid " -display host:dpy\tdisplay to use" msgstr " -display хост:дисплей\tдисплей да се използва" # "предпроцесорна"? - "предварителна" мисля е по-добре (Б.Й.) # ../src/main.c:425 #: ../src/main.c:444 msgid " --no-cpp \t\tdisable preprocessing of configuration files" msgstr " --no-cpp \t\tбез предварителна обработка на конфигурационните файлове" # ../src/main.c:427 #: ../src/main.c:446 msgid " --no-dock\t\tdo not open the application Dock" msgstr " --no-dock\t\tбез Дока за приложения" # ../src/main.c:428 #: ../src/main.c:447 msgid " --no-clip\t\tdo not open the workspace Clip" msgstr " --no-clip\t\tбез Кламера за работните места" # # ../src/main.c:429 #: ../src/main.c:448 msgid " --no-autolaunch\tdo not autolaunch applications" msgstr " --no-autolaunch\tда не се изпълняват приложенията" #: ../src/main.c:449 msgid " --dont-restore\t\tdo not restore saved session" msgstr " --dont-restore\tда не се възстановява запазената сесия" # "локала" - "локализация" (Б.Й.) #: ../src/main.c:451 msgid " --locale locale\tlocale to use" msgstr " --locale локал \t\tда се използва локалът<" #: ../src/main.c:453 msgid "" " --create-stdcmap\tcreate the standard colormap hint in PseudoColor visuals" msgstr " --create-stdcmap\tда се създаде стандартен colormap hint при PseudoColor" # ../src/main.c:434 #: ../src/main.c:454 msgid " --visual-id visualid\tvisual id of visual to use" msgstr "" " --visual-id visualid\tизползвай посочения цветови клас на изображението" # ../src/main.c:435 #: ../src/main.c:455 msgid " --static\t\tdo not update or save configurations" msgstr " --static\t\tне обновявай и не запазвай конфигурациите" #: ../src/main.c:456 msgid " --no-polling\t\tdo not periodically check for configuration updates" msgstr "" " --no-polling\tда не се проверява перманентно за промени в конфигурацията." # ../src/main.c:437 #: ../src/main.c:458 msgid " --synchronous\t\tturn on synchronous display mode" msgstr " --synchronous\t\tвключи синхронен режим за извеждане" # ../src/main.c:439 #: ../src/main.c:460 msgid " --version\t\tprint version and exit" msgstr " --version\t\tотпечатва версията и изход" # ../src/main.c:440 #: ../src/main.c:461 msgid " --help\t\t\tshow this message" msgstr " --help\t\t\tпоказва това съобщение" # ../src/main.c:452 #: ../src/main.c:474 #, 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" "Уверете се, че Уиндоу Мейкър е инсталиран правилно и стартирайте wmaker.inst" # # ../src/icon.c:488 ../src/icon.c:497 #: ../src/main.c:479 #, c-format msgid "could not find user GNUstep directory (%s)." msgstr "не може да се създаде потребителската директория GNUstep (%s)" # ../src/main.c:452 #: ../src/main.c:482 msgid "" "There was an error while creating GNUstep directory, please make sure you " "have installed Window Maker correctly and run wmaker.inst" msgstr "" "Получи се грешка при създаване на потребителската директория GNUstep (%s).\n" "Уверете се, че Уиндоу Мейкър е инсталиран правилно и стартирайте wmaker.inst" #: ../src/main.c:485 #, c-format msgid "%s directory created with default configuration." msgstr "създадена директория %s със стандартните настройки." # [ start translation # Translated by: Boris Jordanov # ../src/main.c:473 ../src/main.c:478 #: ../src/main.c:505 ../src/main.c:510 #, c-format msgid "%s:could not execute initialization script" msgstr "%s: не може да бъде изпълнена инициализиращата процедура" # ../src/main.c:498 ../src/main.c:503 #: ../src/main.c:528 ../src/main.c:533 #, c-format msgid "%s:could not execute exit script" msgstr "%s: не може да бъде изпълнена процедурата за изход" # Translated by: Boris Jordanov # [ end translation # ../src/main.c:619 ../src/main.c:626 ../src/main.c:634 ../src/main.c:650 #: ../src/main.c:661 ../src/main.c:669 ../src/main.c:677 ../src/main.c:697 #, c-format msgid "too few arguments for %s" msgstr "твърде малко аргументи за %s" # ../src/main.c:638 #: ../src/main.c:681 #, c-format msgid "bad value for visualid: \"%s\"" msgstr "неправилна стойност на visualid: \"%s\"" # # ../src/main.c:658 #: ../src/main.c:705 #, c-format msgid "%s: invalid argument '%s'\n" msgstr "%s: неправилен аргумент \"%s\"\n" # ../src/main.c:659 #: ../src/main.c:706 #, c-format msgid "Try '%s --help' for more information\n" msgstr "Пробвайте \"%s --help\" за повече информация\n" # Не съм убеден, но може би тук 'locale' значи не локализация, а конкретният използван локал (напр bg_BG). (А.З.) # ../src/main.c:690 #: ../src/main.c:737 msgid "X server does not support locale" msgstr "Локалът не се поддържа от X сървъра" # Пак не ми е ясно за какво точно става въпрос и за да не възникнат # недоразумения замених 'параметри на локализацията' с по-буквалното # 'модификатори на локала'. (А.З.) # ../src/main.c:694 #: ../src/main.c:741 msgid "cannot set locale modifiers" msgstr "не може да се зададат модификатори на локала" # ../src/main.c:710 #: ../src/main.c:757 #, c-format msgid "could not open display \"%s\"" msgstr "не е достъпен дисплея \"%s\"" # #: ../src/menu.c:1264 msgid "could not grab keyboard" msgstr "не може да се монополизира клавиатурата" # ../src/dock.c:1524 ../src/dock.c:1627 #: ../src/menu.c:2578 #, c-format msgid "bad value in menus state info:%s" msgstr "неправилна стойност за състояние меню %s" # Translated by: Boris Jordanov # [ end translation #: ../src/misc.c:71 #, c-format msgid "could not define value for %s for cpp" msgstr "не може да се дефинира стойност за %s за cpp" # Има ли смисъл UID да се замени с "номер", в смисъл "... за потребителя # с номер(UID) "? (Б.Й.) # ../src/misc.c:101 #: ../src/misc.c:101 #, c-format msgid "could not get password entry for UID %i" msgstr "от /etc/passwd не може да се получи информация за потребителя с номер (UID) %i" # ../src/misc.c:126 #: ../src/misc.c:158 #, c-format msgid "your machine is misconfigured. HOSTNAME is set to %s" msgstr "системата Ви е конфигурирана неправилно. Като HOSTNAME е посочено %s" # ../src/misc.c:132 #: ../src/misc.c:164 #, c-format msgid "your machine is misconfigured. HOST is set to %s" msgstr "системата Ви е конфигурирана неправилно. Като HOST е посочено %s" # ../src/misc.c:769 #: ../src/misc.c:656 msgid "Program Arguments" msgstr "Аргументи на програмата" # ../src/misc.c:770 #: ../src/misc.c:657 msgid "Enter command arguments:" msgstr "Въведете аргументи за програмата:" # [ start translation # Translated by: Boris Jordanov # # "пуснати" или "спуснати"? да преведем ли DND? Или да бъде # "... пуснати със(след, чрез) завлачване (изтегляне)" или нещо от сорта # (Б.Й.) # ../src/misc.c:863 #: ../src/misc.c:750 msgid "unable to get dropped data from DND drop" msgstr "невъзможност да се получат данните пуснати чрез DND" # ../src/misc.c:871 #: ../src/misc.c:758 msgid "error getting dropped data from DND drop" msgstr "грешка при получаване на данните спуснати чрез DND" # ../src/misc.c:877 #: ../src/misc.c:764 msgid "out of memory while getting data from DND drop" msgstr "изчерпване на паметта при опит за получаване на данни от DND операция" # ../src/misc.c:922 ../src/misc.c:1062 #: ../src/misc.c:809 ../src/misc.c:949 #, c-format msgid "out of memory during expansion of \"%s\"" msgstr "изчерпване на паметта при разширяване на \"%s\"" # ../src/misc.c:976 #: ../src/misc.c:863 msgid "out of memory during expansion of \"%w\"" msgstr "изчерпване на паметта при разширяване на \"%w\"" # ../src/misc.c:994 #: ../src/misc.c:881 msgid "out of memory during expansion of \"%W\"" msgstr "изчерпване на паметта при разширяване на \"%W\"" # ../src/misc.c:1010 #: ../src/misc.c:897 msgid "out of memory during expansion of \"%a\"" msgstr "изчерпване на паметта при разширяване на \"%a\"" # ../src/misc.c:1041 #: ../src/misc.c:928 #, c-format msgid "out of memory during expansion of \"%d\"" msgstr "изчерпване на паметта при разширяване на \"%d\"" # Translated by: Boris Jordanov # [ end translation # ../src/misc.c:1055 #: ../src/misc.c:942 msgid "selection not available" msgstr "нищо не е избрано (маркирано)" # ../src/misc.c:1127 ../src/misc.c:1133 #: ../src/misc.c:998 ../src/misc.c:1004 #, c-format msgid "bad window name value in %s state info" msgstr "неправилно име на прозорец в информациата за състоянието на Дока -- %s" # "...помощника за изобразяване на фона" ? (Б.Й.) (вместо "помощника за # изображение на фон") # ../src/misc.c:1401 #: ../src/misc.c:1261 msgid "could not send message to background image helper" msgstr "не може да се изпрати съобщение на помощника за изобразяване на фона" # ../src/pixmap.c:235 #: ../src/pixmap.c:235 #, c-format msgid "could not load mask bitmap file \"%s\". Won't use mask" msgstr "" "не може да се зареди растерна маска от файла \"%s\". Маска няма да се " "използва" # ../src/resources.c:44 #: ../src/resources.c:44 #, c-format msgid "could not parse color \"%s\"" msgstr "не може да се направи разбор на цвят: \"%s\"" # ../src/resources.c:48 #: ../src/resources.c:48 #, c-format msgid "could not allocate color \"%s\"" msgstr "не може да се задели цвят \"%s\"" # ../src/rootmenu.c:186 ../src/rootmenu.c:188 #: ../src/rootmenu.c:196 ../src/rootmenu.c:198 msgid "Exit" msgstr "Изход" # ../src/rootmenu.c:187 #: ../src/rootmenu.c:197 msgid "Exit window manager?" msgstr "Да се излезе ли от администратора на прозорци?" # ../src/rootmenu.c:223 #: ../src/rootmenu.c:245 msgid "Close X session" msgstr "Край на работата" # Вместо "да се затвори ли" много по-добре би било "да се прекрати ли", но за # съжаление това води до колизия поради двойната употреба на "Close" от # следващата статия - "close the session" и "close a window". (А.З.) # А "Да се приключи ли сесията с графичната среда?"? # Изобщо "приключи" вместо "убие" там, където е възможно? (Б.Й.) # Не върви "приключи прозореца". (А.З.) # ../src/rootmenu.c:224 #: ../src/rootmenu.c:246 msgid "" "Close Window System session?\n" "Kill might close applications with unsaved data." msgstr "" "Да се затвори ли сесията с графичната среда?\n" "Незапазените данни от приложенията може да се загубят." # И тук не може "прекратяване", този път заради бутона "Kill", който също # се използва на много места и затова трябва да се преведе като "Убий". (А.З.) # ../src/rootmenu.c:237 #: ../src/rootmenu.c:261 msgid "Kill X session" msgstr "Убиване на сесията" # ../src/rootmenu.c:238 #: ../src/rootmenu.c:262 msgid "" "Kill Window System session?\n" "(all applications will be closed)" msgstr "" "Да се убие ли сесията с графичната среда?\n" "(Всички приложения ще бъдат затворени.)" # ../src/rootmenu.c:505 #: ../src/rootmenu.c:539 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\" for entry %s" msgstr "%s: определена е невярна клавишна комбинация \"%s\" за запис %s" # ../src/rootmenu.c:513 #: ../src/rootmenu.c:547 #, c-format msgid "%s:invalid key in shortcut \"%s\" for entry %s" msgstr "%s: сгрешен клавиш в клавишната комбинация \"%s\" за запис \"%s\"" # ../src/rootmenu.c:566 #: ../src/rootmenu.c:600 #, c-format msgid "%s: unmatched '\"' in menu file" msgstr "%s: кавичка без нейна съответна във файла за меню" # ../src/rootmenu.c:616 #: ../src/rootmenu.c:650 #, c-format msgid "%s: missing command" msgstr "%s: липсваща команда" # ../src/rootmenu.c:648 #: ../src/rootmenu.c:682 #, c-format msgid "invalid OPEN_MENU specification: %s" msgstr "невярно определяне на OPEN_MENU: %s" # ../src/rootmenu.c:696 #: ../src/rootmenu.c:733 #, c-format msgid "%s:could not stat menu" msgstr "%s: не може да се получи меню" # ../src/rootmenu.c:704 #: ../src/rootmenu.c:741 #, c-format msgid "%s:could not stat menu:%s" msgstr "%s: не може да се получи меню: %s" # ../src/rootmenu.c:722 #: ../src/rootmenu.c:759 #, c-format msgid "too many parameters in OPEN_MENU: %s" msgstr "твърде много параметри в OPEN_MENU: %s" # ../src/rootmenu.c:758 #: ../src/rootmenu.c:803 msgid "" "There are more than one WORKSPACE_MENU commands in the applications menu. " "Only one is allowed." msgstr "" "В менюто има повече от една команда WORKSPACE_MENU. Допустима е само една." # ../src/rootmenu.c:758 #: ../src/rootmenu.c:837 msgid "" "There are more than one WINDOWS_MENU commands in the applications menu. Only " "one is allowed." msgstr "В менюто на приложенията има повече от една команда WORKSPACE_MENU. Допустима е само една." #: ../src/rootmenu.c:842 msgid "Window List" msgstr "Списък на прозорците" # ../src/rootmenu.c:787 ../src/rootmenu.c:805 ../src/rootmenu.c:815 #: ../src/rootmenu.c:871 ../src/rootmenu.c:889 ../src/rootmenu.c:899 #, c-format msgid "%s:missing parameter for menu command \"%s\"" msgstr "%s: липсващ параметър за командата за меню \"%s\"" # ../src/rootmenu.c:879 #: ../src/rootmenu.c:967 #, c-format msgid "%s:unknown command \"%s\" in menu config." msgstr "%s: непозната команда \"%s\" в конфигурацията на менюто." # ../src/rootmenu.c:887 #: ../src/rootmenu.c:975 #, c-format msgid "%s:can't add shortcut for entry \"%s\"" msgstr "%s: не може да се добави клавишна комбинация за командата \"%s\"" # ../src/rootmenu.c:1024 #: ../src/rootmenu.c:1112 #, c-format msgid "%s:maximal line size exceeded in menu config: %s" msgstr "%s: конфигурацията на меню %s надхвърли максималната дължина на ред" # ../src/rootmenu.c:1046 ../src/rootmenu.c:1138 ../src/rootmenu.c:1239 #: ../src/rootmenu.c:1134 ../src/rootmenu.c:1227 ../src/rootmenu.c:1330 #, c-format msgid "%s:missing command in menu config: %s" msgstr "%s: липсваща команда в конфигурацията на меню: %s" # ../src/rootmenu.c:1076 #: ../src/rootmenu.c:1164 #, c-format msgid "%s:syntax error in menu file:END declaration missing" msgstr "%s: синтактична грешка при определяне на меню: липсва декларация END" # ../src/rootmenu.c:1105 ../src/rootmenu.c:1204 #: ../src/rootmenu.c:1193 ../src/rootmenu.c:1294 msgid "could not make arguments for menu file preprocessor" msgstr "не може да се положат аргументи за предпроцесора на файла меню" # ../src/rootmenu.c:1111 ../src/rootmenu.c:1211 #: ../src/rootmenu.c:1200 ../src/rootmenu.c:1302 #, c-format msgid "%s:could not open/preprocess menu file" msgstr "%s: не може да се отвори/обработи от предпроцесора файлът меню" # ../src/rootmenu.c:1123 ../src/rootmenu.c:1224 #: ../src/rootmenu.c:1212 ../src/rootmenu.c:1315 #, c-format msgid "could not open menu file \"%s\": %s" msgstr "не може да се отвори файлът меню \"%s\": %s" # ../src/rootmenu.c:1150 #: ../src/rootmenu.c:1239 #, c-format msgid "%s:invalid menu file. MENU command is missing" msgstr "%s: сгрешен файл меню: липсва командата MENU" # ../src/rootmenu.c:1159 #: ../src/rootmenu.c:1248 msgid "error reading preprocessed menu data" msgstr "грешка при четене на обработените данни за меню" # ../src/rootmenu.c:1251 #: ../src/rootmenu.c:1342 #, c-format msgid "%s:no title given for the root menu" msgstr "%s: не е дадено заглавие за главното меню" # [ start translation # Translated by: Boris Jordanov # ??????? # ../src/rootmenu.c:1341 ../src/rootmenu.c:1416 ../src/rootmenu.c:1459 #: ../src/rootmenu.c:1433 ../src/rootmenu.c:1506 ../src/rootmenu.c:1547 #, c-format msgid "out of memory while constructing directory menu %s" msgstr "изчерпване на паметта при създаване на директорното меню %s" # ../src/rootmenu.c:1351 #: ../src/rootmenu.c:1443 #, c-format msgid "%s:could not stat file \"%s\" in menu directory" msgstr "" "%s:не може да получи параметрите на файла \"%s\" в директорията на менюто" # Translated by: Boris Jordanov - 10x Antoby # [ end translation # ../src/rootmenu.c:1513 #: ../src/rootmenu.c:1601 msgid "Commands" msgstr "Команди" # ../src/rootmenu.c:1516 #: ../src/rootmenu.c:1604 msgid "Restart" msgstr "Рестартиране" # ../src/rootmenu.c:1517 #: ../src/rootmenu.c:1605 msgid "Exit..." msgstr "Изход..." # [ Start Lyubo] # ../src/rootmenu.c:1562 #: ../src/rootmenu.c:1650 #, c-format msgid "could not find menu file \"%s\" referenced in WMRootMenu" msgstr "меню файлът \"%s\", посочен в WMRootMenu, не може да бъде открит" # ../src/rootmenu.c:1569 #: ../src/rootmenu.c:1657 #, c-format msgid "could not access menu \"%s\" referenced in WMRootMenu" msgstr "" "достъпът до меню \"%s\", посочено в WMRootMenu, не може да бъде осъществен" # ## variant [mislia po-dobur, no ne bukvalen] # "използвам меню файл по подразбиране \"%s\", тъй като указаният в WMRootMenu, не може " # "да бъде открит " # ../src/rootmenu.c:1580 #: ../src/rootmenu.c:1668 #, c-format msgid "" "using default menu file \"%s\" as the menu referenced in WMRootMenu could " "not be found " msgstr "" "по подразбиране се използва меню файл \"%s\", тъй като менюто, посочено в " "WMRootMenu, не може да бъде открито " #: ../src/rootmenu.c:1691 ../src/rootmenu.c:1767 #, c-format msgid "%s:format error in root menu configuration \"%s\"" msgstr "%s:синтактична грешка в конфигурацията на главното меню \"%s\"" # tuk triabva po smisul # ^Това е от Любо # Замених "менюто с приложения" на "менюто на приложенията", защото на другите # места е преведено така. (А.З.) #: ../src/rootmenu.c:1855 msgid "" "The applications menu could not be loaded. Look at the console output for a " "detailed description of the errors." msgstr "" "Менюто на приложенията не може да бъде заредено. Подробна информация за " "грешките ще бъде изведена на конзолата" # :::>>>>> - 'context'? # ^Това е от Любо # Щом не е ясно какво е "context", може и без него. (А.З.) # ../src/screen.c:745 #: ../src/screen.c:747 #, c-format msgid "could not initialize graphics library context: %s" msgstr "Неуспешна инициализация на контекста на графичната библиотека: %s" # Беше така поради неустановен превод на "widget set": # [набора | групата] от [приспособления | помощни програми | инструменти] # WINGs не може да бъде инициализиран # Значи ще минем и без "widget set". (А.З.): # ../src/screen.c:776 #: ../src/screen.c:778 msgid "could not do initialization of WINGs widget set" msgstr "неуспешна инициализация на библиотеката WINGs" # ../src/screen.c:1128 #: ../src/screen.c:1144 #, c-format msgid "could not save session state in %s" msgstr "състоянието на сесията не може да се запише в %s" # ../src/session.c:183 ../src/wdefaults.c:583 ../src/winspector.c:447 #: ../src/session.c:183 ../src/wdefaults.c:589 ../src/winspector.c:454 #, c-format msgid "can't convert \"%s\" to boolean" msgstr "не може да се преобразува \"%s\" в булева стойност" # ../src/session.c:1023 #: ../src/session.c:1023 msgid "out of memory while saving session state" msgstr "не достигна памет при записване състоянието на сесията" # :::>>>> - ne razbiram smisula na 'end of memory' # ../src/session.c:1114 #: ../src/session.c:1106 msgid "end of memory while saving session state" msgstr "изчерпване на паметта при записване състоянието на сеанса" # (Б.Й.) # ../src/session.c:1248 #. 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:1244 msgid "connection to the session manager was lost" msgstr "връзката с администратора на сесията се загуби" # ../src/stacking.c:73 #: ../src/stacking.c:79 msgid "could not get window list!!" msgstr "списъкът с прозорците не може да бъде извлечен!!" # ../src/startup.c:197 #: ../src/startup.c:202 #, c-format msgid "internal X error: %s\n" msgstr "грешка в X сървъра: %s\n" # ../src/startup.c:262 #: ../src/startup.c:260 #, c-format msgid "got signal %i (%s) - restarting\n" msgstr "получен сигнал %i (%s) - рестартиране\n" # ../src/startup.c:264 #: ../src/startup.c:262 #, c-format msgid "got signal %i - restarting\n" msgstr "получен сигнал %i - рестартиране\n" # ../src/startup.c:262 #: ../src/startup.c:272 #, c-format msgid "got signal %i (%s) - rereading defaults\n" msgstr "получен сигнал %i (%s) - стойностите по подразбиране се препрочитат\n" #: ../src/startup.c:274 #, c-format msgid "got signal %i - rereading defaults\n" msgstr "получен сигнал %i - стойностите по подразбиране се препрочитат.\n" # ../src/startup.c:278 #: ../src/startup.c:284 #, c-format msgid "got signal %i (%s) - exiting...\n" msgstr "получен сигнал %i (%s) - изход...\n" # ../src/startup.c:280 #: ../src/startup.c:286 #, c-format msgid "got signal %i - exiting...\n" msgstr "получен сигнал %i - изход...\n" # ../src/startup.c:293 #: ../src/startup.c:329 #, c-format msgid "got signal %i (%s)\n" msgstr "получен сигнал %i (%s)\n" # ../src/startup.c:295 #: ../src/startup.c:331 #, c-format msgid "got signal %i\n" msgstr "получен сигнал %i\n" # ../src/startup.c:306 #: ../src/startup.c:342 msgid "" "crashed while trying to do some post-crash cleanup. Aborting immediatelly." msgstr "срив при опит за след-аварийно почистване. Незабавно прекратяване." # ../src/startup.c:340 #. we try to restart Window Maker #: ../src/startup.c:406 msgid "trying to restart Window Maker..." msgstr "опит за рестартиране Уиндоу Мейкър..." # ../src/startup.c:345 #: ../src/startup.c:411 msgid "trying to start alternate window manager..." msgstr "опит за стартиране на друг администратор на прозорците..." # ../src/startup.c:350 #: ../src/startup.c:417 msgid "failed to start alternate window manager. Aborting." msgstr "" "неуспешен опит за стартиране на друг администратор на прозорците. Край на " "работата." # ../src/startup.c:352 #: ../src/startup.c:419 msgid "" "a fatal error has occured, probably due to a bug. Please fill the included " "BUGFORM and report it." msgstr "възникна критична грешка, вероятно дължаща се на програмен дефект. Моля попълнете формуляра от файла BUGFORM и ни уведомете " # ../src/startup.c:830 #: ../src/startup.c:894 #, 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:858 #: ../src/startup.c:922 msgid "XKB is not supported. KbdModeLock is automatically disabled." msgstr "" "Тъй като X-сървърът не поддържа XKB, то KbdModeLock е забранен автоматично." # ../src/startup.c:877 #: ../src/startup.c:941 msgid "it seems that there is already a window manager running" msgstr "изглежда вече има стартиран администратор на прозорците" # [End Lyubo] # ../src/startup.c:883 #: ../src/startup.c:947 #, c-format msgid "could not manage screen %i" msgstr "не може да се управлява екран %i" # ../src/startup.c:944 #: ../src/startup.c:1015 msgid "could not manage any screen" msgstr "не може да се управлява който и да е екран" # ../src/switchmenu.c:114 #: ../src/switchmenu.c:137 msgid "Windows" msgstr "Прозорци" # ../src/texture.c:290 ../src/texture.c:334 #: ../src/texture.c:329 ../src/texture.c:371 #, c-format msgid "image file \"%s\" used as texture could not be found." msgstr "картинката \"%s\" използвана като текстура не може да бъде открита." # ../src/texture.c:296 ../src/texture.c:340 #: ../src/texture.c:335 ../src/texture.c:377 #, c-format msgid "could not load texture pixmap \"%s\":%s" msgstr "не може да се зареди картинката с текстура \"%s\": %s" # ../src/texture.c:400 #: ../src/texture.c:437 #, c-format msgid "library \"%s\" cound not be opened." msgstr "библиотеката \"%s\" не може да бъде отворена." # ../src/texture.c:409 #: ../src/texture.c:446 #, c-format msgid "function \"%s\" not found in library \"%s\"" msgstr "функцията \"%s\" не присъства в библиотеката \"%s\"" # ../src/texture.c:416 #: ../src/texture.c:453 msgid "function textures not supported on this system, sorry." msgstr "за съжаление текстурните функции не се поддържат от тази система." # ../src/dialog.c:280 #: ../src/texture.c:598 msgid "could not allocate image buffer" msgstr "Не може да се запази буфер за файл с картинка " # ../src/wdefaults.c:429 #: ../src/wdefaults.c:437 #, c-format msgid "could not find icon file \"%s\"" msgstr "не може да се открие иконката \"%s\"" # ../src/window.c:2715 ../src/window.c:2849 #: ../src/window.c:2942 ../src/window.c:3081 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:126 #: ../src/winmenu.c:126 msgid "" "This will kill the application.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" "Това ще убие приложението.\n" "Всяка информация, която не е запазена, ще се загуби.\n" "Наистина ли желаете това?" # ../src/winmenu.c:275 ../src/winmenu.c:283 #: ../src/winmenu.c:272 ../src/winmenu.c:281 msgid "Set Shortcut" msgstr "Постави бърз клавиш" # ../src/winmenu.c:361 ../src/winmenu.c:407 #: ../src/winmenu.c:359 ../src/winmenu.c:404 msgid "could not create submenu for window menu" msgstr "не може да се създаде подменю за менюто на прозорците" # ../src/winmenu.c:411 #: ../src/winmenu.c:408 msgid "Keep on top" msgstr "Винаги най-отгоре" # ../src/winmenu.c:416 #: ../src/winmenu.c:413 msgid "Keep at bottom" msgstr "Винаги най-отдолу" # Hide означава всички прозорци да се скрият. Shade значи да се остави видима # само заглавната лента на прозореца. И понеже на другите места "hide" е # превеждано като "скрий", то тук промених "Скрий" на "Засенчи". (А.З.) # ../src/winmenu.c:461 ../src/winmenu.c:596 #: ../src/winmenu.c:457 ../src/winmenu.c:600 msgid "Shade" msgstr "Свий" # За по-кратко "другите" вместо "останалите". (А.З.) # ../src/winspector.c:1431 #: ../src/winmenu.c:473 msgid "Hide Others" msgstr "Скрий другите" # ../src/winmenu.c:477 #: ../src/winmenu.c:481 msgid "Resize/Move" msgstr "Oразмери/Премести" # ../src/winmenu.c:485 #: ../src/winmenu.c:489 msgid "Select" msgstr "Избери" # ../src/winmenu.c:498 #: ../src/winmenu.c:502 msgid "Attributes..." msgstr "Свойства..." # ../src/winmenu.c:500 #: ../src/winmenu.c:504 msgid "Options" msgstr "Предпочитания" # Може би обратното на "засенчи" е "огрей"? (А.З.) # ../src/winmenu.c:591 #: ../src/winmenu.c:595 msgid "Unshade" msgstr "Развий" # ../src/winspector.c:381 #: ../src/winspector.c:387 #, c-format msgid "Could not find icon \"%s\" specified for this window" msgstr "Иконката \"%s\", определена за прозорец, не може да бъде открита" # Доколкото мога да разбера от winspector.c, само първото %s съдържа името # на иконката. (А.З.) # ../src/winspector.c:397 #: ../src/winspector.c:404 #, c-format msgid "Could not open specified icon \"%s\":%s" msgstr "Иконката \"%s\" не може да бъде заредена: %s" #: ../src/winspector.c:1121 #, c-format msgid "Inspecting %s.%s" msgstr "Инспектира се %s.%s" #: ../src/winspector.c:1147 msgid "Click in the window you wish to inspect." msgstr "Щракнете върху прозореца, който желаете да инспектирате." #: ../src/winspector.c:1186 msgid "" "The configuration will apply to all\n" "windows that have their WM_CLASS\n" "property set to the above selected\n" "name, when saved." msgstr "" "Когато бъде запазена, тази настройка\n" "ще се отнася до всички прозорци,\n" "чието свойство WM_CLASS има\n" "посочената по-горе стойност." # ../src/winspector.c:1221 #: ../src/winspector.c:1215 msgid "Save" msgstr "Запиши" # ../src/winspector.c:1229 #: ../src/winspector.c:1223 msgid "Apply" msgstr "Приложи" # ../src/winspector.c:1235 #: ../src/winspector.c:1229 msgid "Reload" msgstr "Презареди" # Тук се определят не характеристики на прозореца, а се определя точно към # кои прозорци да се прилага тази настройка. Затова измених "Характеристики # на прозореца" на "За кои прозорци?" -- като че ли е по-ясно от буквалния # превод "Oпределяне на прозорец". (А.З.) # ../src/winspector.c:1244 ../src/winspector.c:1254 #: ../src/winspector.c:1238 ../src/winspector.c:1248 msgid "Window Specification" msgstr "За кои прозорци" # ../src/winspector.c:1245 #: ../src/winspector.c:1239 msgid "Window Attributes" msgstr "Свойства на прозореца" # ../src/winspector.c:1246 #: ../src/winspector.c:1240 msgid "Advanced Options" msgstr "Варианти за напреднали потребители" # ../src/winspector.c:1247 #: ../src/winspector.c:1241 msgid "Icon and Initial Workspace" msgstr "Иконка и начално работно място" # Като че ли за потребителите ще бъде по-ясно ако вместо буквалното "Специфично # за приложението" използваме "Атрибути на приложението"? (А.З.) # ../src/winspector.c:1248 #: ../src/winspector.c:1242 msgid "Application Specific" msgstr "Свойства на приложението" # "Подразбиращо се за всички прозорци" е много дълго и не се побира. # Затова го съкратих. (А.З.) # ../src/winspector.c:1262 #: ../src/winspector.c:1256 msgid "Defaults for all windows" msgstr "За всички прозорци" # ../src/winspector.c:1316 #: ../src/winspector.c:1310 msgid "Select window" msgstr "Избор на прозорец" # ../src/winspector.c:1329 #: ../src/winspector.c:1324 msgid "Attributes" msgstr "Свойства" # Tук си позволявам отклонение: вместо "Забрани" -- "Без", защото по-нататък # "Забрани бутона за минимизиране" е много дълго и не се побира. (А.З.) # ../src/winspector.c:1340 #: ../src/winspector.c:1335 msgid "Disable titlebar" msgstr "Без заглавна ивица" # ../src/winspector.c:1342 #: ../src/winspector.c:1337 msgid "" "Remove the titlebar of this window.\n" "To access the window commands menu of a window\n" "without it's titlebar, press Control+Esc (or the\n" "equivalent shortcut, if you changed the default\n" "settings)." msgstr "" "Да се махне заглавната ивица на този прозорец.\n" "За да се достигне менюто с прозоречни команди за\n" "прозорец без заглавна ивица, натиснете Control+Esc\n" "(или еквивалентна клавишна комбинация, ако сте\n" "променили стандартната настройка)." # ../src/winspector.c:1349 #: ../src/winspector.c:1344 msgid "Disable resizebar" msgstr "Без ивицата за оразмеряване" # ../src/winspector.c:1351 #: ../src/winspector.c:1346 msgid "Remove the resizebar of this window." msgstr "" "Маха ивицата за оразмеряване\n" "на този прозорец." # ../src/winspector.c:1354 #: ../src/winspector.c:1349 msgid "Disable close button" msgstr "Без бутона за затваряне" # ../src/winspector.c:1356 #: ../src/winspector.c:1351 msgid "Remove the `close window' button of this window." msgstr "" "Маха бутона за затваряне\n" "от този прозорец." # ../src/winspector.c:1359 #: ../src/winspector.c:1354 msgid "Disable miniaturize button" msgstr "Без бутона за минимизиране" # ../src/winspector.c:1361 #: ../src/winspector.c:1356 msgid "Remove the `miniaturize window' button of the window." msgstr "" "Маха бутона за минимизиране\n" "от този прозорец." # Tук си позволявам отклонение: вместо "Забрани" -- "Без", защото по-нататък # "Забрани бутона за минимизиране" е много дълго и не се побира. (А.З.) # ../src/winspector.c:1364 #: ../src/winspector.c:1359 msgid "Disable border" msgstr "Без рамка" # ../src/winspector.c:1366 #: ../src/winspector.c:1361 msgid "Remove the 1 pixel black border around the window." msgstr "" "Маха черната рамка със ширина\n" "1 пиксел около този прозорец." # ../src/winspector.c:1369 #: ../src/winspector.c:1364 msgid "Keep on top (floating)" msgstr "Винаги отгоре (плаващ)" # ../src/winspector.c:1371 #: ../src/winspector.c:1366 msgid "" "Keep the window over other windows, not allowing\n" "them to cover it." msgstr "" "Държи прозореца над останалите прозорци,\n" "като не позволява те да го закрият." # ../src/winspector.c:1375 #: ../src/winspector.c:1370 msgid "Keep at bottom (sunken)" msgstr "Винаги отдолу (потопен)" # ../src/winspector.c:1377 #: ../src/winspector.c:1372 msgid "Keep the window under all other windows." msgstr "" "Държи прозореца под всички\n" "останали прозорци." # ../src/winspector.c:1382 #: ../src/winspector.c:1377 msgid "Make window present in all workspaces." msgstr "" "Прави прозореца да присъства\n" "на всички работни места." # ../src/winspector.c:1385 #: ../src/winspector.c:1380 msgid "Start miniaturized" msgstr "Да се стартира минимизиран" # ../src/winspector.c:1387 #: ../src/winspector.c:1382 msgid "" "Make the window be automatically miniaturized when it's\n" "first shown." msgstr "" "Минимизира прозореца при всяко\n" "негово първо появяване." # ../src/winspector.c:1391 #: ../src/winspector.c:1386 msgid "Start maximized" msgstr "Да се стартира максимизиран" # ../src/winspector.c:1393 #: ../src/winspector.c:1388 msgid "" "Make the window be automatically maximized when it's\n" "first shown." msgstr "" "Максимизира прозореца при всяко\n" "негово първо появяване." # ../src/winspector.c:1479 #: ../src/winspector.c:1392 msgid "Full screen maximization" msgstr "Максимизиране на цял екран" # ../src/winspector.c:1481 #: ../src/winspector.c:1394 msgid "" "Make the window use the whole screen space when it's\n" "maximized. The titlebar and resizebar will be moved\n" "to outside the screen." msgstr "" "Прави прозореца да използва цялото място на екрана при\n" "максимизация. Заглавната ивица и ивицата за оразмеряване\n" "ще бъдат изкарани извън екрана." # ../src/winspector.c:1414 #: ../src/winspector.c:1411 msgid "Advanced" msgstr "За напреднали" # ../src/winspector.c:1437 #: ../src/winspector.c:1428 msgid "Do not bind keyboard shortcuts" msgstr "Да не се прихващат бързи клавиши" # ../src/winspector.c:1439 #: ../src/winspector.c:1430 msgid "" "Do not bind keyboard shortcuts from Window Maker\n" "when this window is focused. This will allow the\n" "window to receive all key combinations regardless\n" "of your shortcut configuration." msgstr "" "Уиндоу Мейкър няма да прихваща специалните клавишни\n" "комбинации, когато този прозорец е на фокус. Това дава\n" "възможност на прозореца да получава всички клавишни\n" "комбинации, независимо как сте ги конфигурирали." # Няма място да се преведе и "clicks". (А.З.) # ../src/winspector.c:1445 #: ../src/winspector.c:1436 msgid "Do not bind mouse clicks" msgstr "Да не се прихваща мишката" # ../src/winspector.c:1447 #: ../src/winspector.c:1438 msgid "" "Do not bind mouse actions, such as `Alt'+drag\n" "in the window (when Alt is the modifier you have\n" "configured)." msgstr "" "Да не се прихващат действия с мишката\n" "(напр. Alt+влачене) в прозореца." # ../src/winspector.c:1399 #: ../src/winspector.c:1443 msgid "Do not show in the window list" msgstr "Извън списъка на прозорците" # ../src/winspector.c:1399 #: ../src/winspector.c:1445 msgid "Do not list the window in the window list menu." msgstr "" "Прозорецът няма да бъде включен\n" "в менюто на списъка с прозорците." # "Не му позволявай да вземе фокус" е много дълго. (А.З.) # ../src/winspector.c:1458 #: ../src/winspector.c:1448 msgid "Do not let it take focus" msgstr "Да не получава фокус" # ../src/winspector.c:1460 #: ../src/winspector.c:1450 msgid "" "Do not let the window take keyboard focus when you\n" "click on it." msgstr "" "Не позволява на прозореца да получи клавиатурния\n" "фокус, когато щтракнете върху него." # ../src/winspector.c:1452 #: ../src/winspector.c:1454 msgid "Keep inside screen" msgstr "Винаги в рамките на екрана" # ../src/winspector.c:1454 #: ../src/winspector.c:1456 msgid "" "Do not allow the window to move itself completely\n" "outside the screen. For bug compatibility.\n" msgstr "" "Не позволява на прозореца да бъде\n" "преместен изцяло извън екрана.\n" # За по-кратко "другите" вместо "останалите". (А.З.) # ../src/winspector.c:1431 #: ../src/winspector.c:1460 msgid "Ignore 'Hide Others'" msgstr "Да се игнорира \"Скрий другите\"" # ../src/winspector.c:1433 #: ../src/winspector.c:1462 msgid "" "Do not hide the window when issuing the\n" "`HideOthers' command." msgstr "" "Не скрива прозореца при получаване на\n" "командата \"Скрий другите\"." # ../src/winspector.c:1464 #: ../src/winspector.c:1466 msgid "Ignore 'Save Session'" msgstr "Да не се записва в сесията" # ../src/winspector.c:1466 #: ../src/winspector.c:1468 msgid "" "Do not save the associated application in the\n" "session's state, so that it won't be restarted\n" "together with other applications when Window Maker\n" "starts." msgstr "" "Не запазва съответното приложение в състоянието\n" "на сесията, така че то няма да бъде рестартирано\n" "от администратора на сесията заедно с другите\n" "приложения при стартиране на Уиндоу Мейкър." # [ Start translation # Translated from English by (-:Stinger®:-) # Преведено от Английски от (-:Stinger®:-) # corrected 31.03.2000 21:16 local time by Slaff # updated .......... # # Съкратих "на приложение", защото няма място (А.З.) # ../src/winspector.c:1472 #: ../src/winspector.c:1474 msgid "Emulate application icon" msgstr "Да се емулира иконка на приложението" # ../src/winspector.c:1474 #: ../src/winspector.c:1476 msgid "" "Make this window act as an application that provides\n" "enough information to Window Maker for a dockable\n" "application icon to be created." msgstr "" "Прави този прозорец да се държи като приложение, което\n" "дава достатъчно информация на Уиндоу Мейкър, че да може\n" "да се направи иконка на приложението, която може да\n" "се скачва на дока." # ../src/winspector.c:1487 #: ../src/winspector.c:1482 msgid "Disable language button" msgstr "Без бутон КИР/ЛАТ" # ../src/winspector.c:1489 #: ../src/winspector.c:1484 msgid "Remove the `toggle language' button of the window." msgstr "Маха бутона КИР/ЛАТ от прозореца." # ../src/winspector.c:1506 #: ../src/winspector.c:1501 msgid "Miniwindow Image" msgstr "Изглед на минипрозорчето" # ../src/winspector.c:1540 #: ../src/winspector.c:1528 msgid "Icon filename:" msgstr "Файл за иконката:" # ../src/winspector.c:1552 #: ../src/winspector.c:1541 msgid "Ignore client supplied icon" msgstr "Да се игнорира клиентската иконка" # ../src/winspector.c:1559 #: ../src/winspector.c:1548 msgid "Initial Workspace" msgstr "Начално работно място" # ../src/winspector.c:1561 #: ../src/winspector.c:1550 msgid "The workspace to place the window when it's first shown." msgstr "" "Работното място, където да се помести\n" "прозореца при първото му появяване." # никъде по-специално # ../src/winspector.c:1567 #: ../src/winspector.c:1556 msgid "Nowhere in particular" msgstr "Никъде по-специално" # ../src/winspector.c:1585 #: ../src/winspector.c:1574 msgid "Application Attributes" msgstr "Свойства на приложението" # ../src/winspector.c:1596 #: ../src/winspector.c:1585 msgid "Start hidden" msgstr "Да се стартира скрито" # ../src/winspector.c:1598 #: ../src/winspector.c:1587 msgid "Automatically hide application when it's started." msgstr "Автоматично скрива приложението при стартиране." # ../src/winspector.c:1601 #: ../src/winspector.c:1590 msgid "No application icon" msgstr "Без иконка на приложението" # ../src/winspector.c:1603 #: ../src/winspector.c:1592 msgid "" "Disable the application icon for the application.\n" "Note that you won't be able to dock it anymore,\n" "and any icons that are already docked will stop\n" "working correctly." msgstr "" "Забранява иконката на това приложение.\n" "Забележете, че повече няма да може да го скачвате\n" "на дока, а всички иконки на това приложение,\n" "които вече са скачени, ще престанат да работят\n" "правилно." # ../src/winspector.c:1601 #: ../src/winspector.c:1598 msgid "Shared application icon" msgstr "Споделена иконка на приложението" #: ../src/winspector.c:1600 msgid "" "Use a single shared application icon for all of\n" "the instances of this application.\n" msgstr "" "Събира всички иконки на различни \n" "екземляри на това приложение в една.\n" # ../src/workspace.c:110 ../src/workspace.c:111 ../src/workspace.c:806 #: ../src/workspace.c:107 ../src/workspace.c:108 ../src/workspace.c:894 #, c-format msgid "Workspace %i" msgstr "Работно място %i" # ../src/workspace.c:863 #: ../src/workspace.c:944 msgid "Workspaces" msgstr "Работни места" # ../src/workspace.c:865 #: ../src/workspace.c:946 msgid "could not create Workspace menu" msgstr "не може да се направи меню на работните места" # ../src/workspace.c:872 #: ../src/workspace.c:953 msgid "New" msgstr "Ново" # ../src/workspace.c:873 #: ../src/workspace.c:954 msgid "Destroy Last" msgstr "Унищожи последното" #~ msgid "Sound" #~ msgstr "Звук" # ../src/dock.c:1029 ../src/dock.c:3363 #~ msgid "Allow Lowering" #~ msgstr "Позволява понижаване" # ../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 "липсващ ключ на речник" # continue from here # ../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. If it's a string, try " #~ "enclosing it with \"." #~ msgstr "" #~ "очакваше се низ, речник, данни или масив. Ако това е низ пробвайте да го " #~ "оградите с двойни кавички (\")." # ../src/proplist.c:466 #~ msgid "extra data after end of file" #~ msgstr "излишни данни след края на файла" # ../src/screen.c:464 #~ msgid "error making logo image for panel:%s" #~ msgstr "грешка при подготовка на логото за панела: %s" # ../src/winspector.c:1525 #~ msgid "Update" #~ msgstr "Обнови" # ../src/xutil.c:228 #~ msgid "invalid data in selection" #~ msgstr "неправилни данни в избора" #~ msgid "Keep Attracted Icons" #~ msgstr "Задържай привлечените иконки" # [ start translation # Translated by: Boris Jordanov #~ msgid "wrealloc() failed while trying to add menu item" #~ msgstr "неуспех при опит за добавяне на подточка в меню" WindowMaker-0.95.9/po/hr.po0000644000175000017500000010705113431646201012361 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: 0.80.2\n" "PO-Revision-Date: 1998-08-18 16:28:19+0200\n" "Last-Translator: Toni Bilić \n" "Language-Team: Croatian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../src/appicon.c:509 ../src/dialog.c:215 ../src/dialog.c:271 ../src/dock.c:2953 ../src/dockedapp.c:206 ../src/winspector.c:279 ../src/winspector.c:295 msgid "Error" msgstr "Greška" #: ../src/appicon.c:510 msgid "Could not open specified icon file" msgstr "Ne mogu ovoriti navedenu ikonu" #: ../src/appicon.c:511 ../src/dialog.c:114 ../src/dialog.c:215 ../src/dialog.c:271 ../src/dialog.c:451 ../src/dock.c:420 ../src/dock.c:2954 ../src/dockedapp.c:206 ../src/dockedapp.c:350 ../src/winspector.c:280 ../src/winspector.c:296 msgid "OK" msgstr "U redu" #: ../src/appicon.c:532 ../src/dock.c:268 ../src/winmenu.c:85 msgid "Kill Application" msgstr "Ubij Aplikaciju" #: ../src/appicon.c:533 ../src/dock.c:269 ../src/winmenu.c:86 msgid "" "This will kill the application.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" "Ovo će ubiti aplikaciju.\n" "Promjene koje nisu snimljene bit će izgubljene.\n" "Molim potvrdite." #: ../src/appicon.c:534 ../src/dock.c:270 ../src/winmenu.c:87 msgid "Yes" msgstr "Da" #: ../src/appicon.c:534 ../src/dock.c:270 ../src/winmenu.c:87 msgid "No" msgstr "Ne" #: ../src/appicon.c:548 ../src/dock.c:1030 msgid "Unhide Here" msgstr "Pokaži ovdje" #: ../src/appicon.c:549 ../src/dock.c:1032 msgid "(Un)Hide" msgstr "Otkrij/Sakrij" #: ../src/appicon.c:550 msgid "Set Icon..." msgstr "Postavi ikonu..." #: ../src/appicon.c:551 ../src/dock.c:1036 ../src/winmenu.c:342 msgid "Kill" msgstr "Ubij" #: ../src/defaults.c:690 ../src/startup.c:686 ../src/startup.c:704 ../src/startup.c:710 msgid "could not read domain \"%s\" from defaults database" msgstr "ne mogu pročitati domenu \"%s\" iz baze postavki" #: ../src/defaults.c:736 ../src/defaults.c:860 ../src/defaults.c:899 ../src/defaults.c:929 msgid "Domain %s (%s) of defaults database is corrupted!" msgstr "Domena %s (%s) baze postavki je nečitljiva" #: ../src/defaults.c:741 ../src/defaults.c:881 ../src/defaults.c:912 ../src/defaults.c:938 msgid "could not load domain %s from user defaults database" msgstr "ne mogu pročitati domenu %s iz korisnikove baze postavki" #: ../src/defaults.c:752 ../src/defaults.c:845 msgid "Domain %s (%s) of global defaults database is corrupted!" msgstr "Domena %s (%s) globalne baze postavki je nečitljiva" #: ../src/defaults.c:771 ../src/defaults.c:850 msgid "could not load domain %s from global defaults database" msgstr "ne mogu učitati domenu %s iz globalne baze postavki" #: ../src/defaults.c:1240 msgid "wrong option value for key \"%s\". Should be one of %s" msgstr "kriva vrijednost opcije za kjluč \"%s\". Trebala bi biti jedna od %s" #: ../src/defaults.c:1287 msgid "can't convert \"%s\" to boolean for key \"%s\"" msgstr "ne mogu konvertirati \"%s\" u logički izraz za \"%s\"" #: ../src/defaults.c:1292 ../src/defaults.c:1326 ../src/defaults.c:1358 ../src/defaults.c:1371 ../src/defaults.c:1386 ../src/defaults.c:1401 ../src/defaults.c:1472 ../src/defaults.c:1484 ../src/defaults.c:1739 ../src/defaults.c:1753 ../src/defaults.c:1791 ../src/defaults.c:1803 ../src/defaults.c:1815 ../src/defaults.c:1838 ../src/defaults.c:1865 ../src/defaults.c:1878 ../src/defaults.c:1891 ../src/defaults.c:1921 ../src/defaults.c:1962 ../src/defaults.c:1974 ../src/defaults.c:1986 ../src/defaults.c:2012 ../src/defaults.c:2032 ../src/defaults.c:2045 ../src/defaults.c:2060 ../src/defaults.c:2099 ../src/defaults.c:2164 msgid "using default \"%s\" instead" msgstr "umjesto toga koristim default \"%s\"" #: ../src/defaults.c:1323 msgid "can't convert \"%s\" to integer for key \"%s\"" msgstr "ne mogu konvertirati \"%s\" u integer za \"%s\"" #: ../src/defaults.c:1353 ../src/defaults.c:1467 ../src/defaults.c:1734 ../src/defaults.c:1786 ../src/defaults.c:1957 ../src/wdefaults.c:544 ../src/wdefaults.c:580 msgid "Wrong option format for key \"%s\". Should be %s." msgstr "Krivi format opcije za \"%s\". Trebao bi biti %s" #: ../src/defaults.c:1366 msgid "Incorrect number of elements in array for key \"%s\"." msgstr "Krivi broj elemenata u nizu za \"%s\"" #: ../src/defaults.c:1381 msgid "Wrong value for key \"%s\". Should be Coordinate." msgstr "Kriva vrijednost za \"%s\". Trebale bi biti koordinate." #: ../src/defaults.c:1396 msgid "can't convert array to integers for \"%s\"." msgstr "ne mogu konvertirati niz u integere za \"%s\"." #: ../src/defaults.c:1580 ../src/defaults.c:1611 ../src/defaults.c:1623 ../src/defaults.c:1665 ../src/defaults.c:1705 msgid "\"%s\" is not a valid color name" msgstr "\"%s\"je krivo ime za boju" #: ../src/defaults.c:1592 msgid "bad number of arguments in gradient specification" msgstr "krivi broj argumenata u specifikaciji gradacije" #: ../src/defaults.c:1638 msgid "too few arguments in multicolor gradient specification" msgstr "premalo argumenata u specifikaciji višebojne gradacije" #: ../src/defaults.c:1748 msgid "Error in texture specification for key \"%s\"" msgstr "Greška u specifikaciji teksture za \"%s\"" #: ../src/defaults.c:1799 ../src/defaults.c:1834 ../src/defaults.c:1970 ../src/defaults.c:2008 msgid "Too few elements in array for key \"WorkspaceBack\"." msgstr "Premalo elemenata u nizu za \"WorkspaceBack\"." #: ../src/defaults.c:1811 ../src/defaults.c:1982 msgid "Wrong type for workspace background. Should be Texture." msgstr "Krivi tip za pozadinu radnog prostora. Trebala bi biti tekstura." #: ../src/defaults.c:1861 ../src/defaults.c:2028 msgid "Cannot get color entry for key \"WorkspaceBack\"." msgstr "Ne mogu uzeti boju za \"WorkspaceBack\"." #: ../src/defaults.c:1873 ../src/defaults.c:2040 msgid "key \"WorkspaceBack\" has invalid color \"%s\"" msgstr "\"WorkspaceBack\" ima pogrešnu boju \"%s\"" #: ../src/defaults.c:1887 ../src/defaults.c:2056 msgid "Cannot get file entry for key \"WorkspaceBack\"." msgstr "Ne mogu uzeti datotečni zapis za \"WorkspaceBack\"." #: ../src/defaults.c:1900 ../src/defaults.c:2081 msgid "could not find background image \"%s\"" msgstr "ne mogu naći sliku za pozadinu \"%s\"" #: ../src/defaults.c:1917 ../src/defaults.c:2095 msgid "Error in texture specification for key \"WorkspaceBack\"" msgstr "Greška u specifikaciji teksture za \"WorkspaceBack\"" #: ../src/defaults.c:2076 msgid "could not run \"%s\"" msgstr "ne mogu pokrenuti \"%s\"" #: ../src/defaults.c:2129 msgid "could not load any usable font" msgstr "ne mogu učitati nijedan iskoristivi font" #: ../src/defaults.c:2159 msgid "could not get color for key \"%s\"" msgstr "ne mogu uzeti boju za \"%s\"" #: ../src/defaults.c:2218 ../src/rootmenu.c:440 msgid "%s:invalid key modifier \"%s\"" msgstr "%s:krivi modifier \"%s\"" #: ../src/defaults.c:2230 msgid "%s:invalid kbd shortcut specification \"%s\"" msgstr "%s: kriva specifikacija kbd kratice \"%s\"" #: ../src/defaults.c:2237 msgid "%s:invalid key in shortcut \"%s\"" msgstr "%s krivi ključ u kratici \"%s\"" #: ../src/defaults.c:2263 msgid "%s: modifier key %s is not valid" msgstr "%s: krivi modifier ključ %s " #: ../src/defaults.c:2339 msgid "could not render texture for icon background" msgstr "ne mogu renderirati teksturu za pozadinu ikone" #: ../src/defaults.c:2695 msgid "background texture rendering was unsuccessfull" msgstr "neuspješno rednriranje teksure za pozadinu" #: ../src/defaults.c:2722 msgid "could not load image %s for option %s:%s\n" msgstr "ne mogu učitati image %s za opciju %s:%s\n" #: ../src/defaults.c:2738 msgid "could not spawn texture rendering subprocess for option" msgstr "" #: ../src/defaults.c:2792 ../src/defaults.c:2880 msgid "could not render texture for workspace background" msgstr "ne mogu renderirati teksturu za pozadinu radnog prostora" #: ../src/dialog.c:114 ../src/dialog.c:458 ../src/dock.c:420 ../src/dockedapp.c:356 ../src/rootmenu.c:207 ../src/rootmenu.c:236 msgid "Cancel" msgstr "Otkaži" #: ../src/dialog.c:210 msgid "Could not open directory \"%s\":\n%s" msgstr "Ne mogu otvoriti direktorij \"%s\":\n%s" #: ../src/dialog.c:266 msgid "Could not load image file " msgstr "Ne mogu učitati image datoteku " #: ../src/dialog.c:395 msgid "Directories" msgstr "Direktoriji" #: ../src/dialog.c:404 msgid "Icons" msgstr "Ikone" #: ../src/dialog.c:441 msgid "File Name:" msgstr "Datoteka:" #: ../src/dialog.c:464 msgid "Choose File" msgstr "Izaberi datoteku" #: ../src/dialog.c:474 msgid "Icon Chooser" msgstr "Birač ikona" #: ../src/dock.c:209 msgid "Type the name for workspace %i:" msgstr "Upiši ime za radni prostor %i:" #: ../src/dock.c:210 ../src/dock.c:1009 msgid "Rename Workspace" msgstr "Promjeni ime radnom prostoru" #: ../src/dock.c:418 msgid "Workspace Clip" msgstr "Clip radnog prostora" #: ../src/dock.c:419 msgid "All selected icons will be removed!" msgstr "Sve odabrane ikone će biti uklonjene!" #: ../src/dock.c:469 msgid "Keep Icon" msgstr "Zadrži ikonu" #: ../src/dock.c:470 ../src/dock.c:1924 ../src/dock.c:2046 msgid "Type the command used to launch the application" msgstr "Upiši naredbu za pokretanje aplikacije" #: ../src/dock.c:833 msgid "could not launch application %s\n" msgstr "ne mogu pokrenuti %s\n" #: ../src/dock.c:888 msgid "could not create workspace submenu for Clip menu" msgstr "ne mogu napraviti podizbornik radnog prostora za Clip meni" #: ../src/dock.c:946 msgid "could not create options submenu for Clip menu" msgstr "ne mogu napraviti podizbornik opcija za izbornik Clip-a" #: ../src/dock.c:950 ../src/dock.c:998 ../src/winspector.c:1097 msgid "Keep on top" msgstr "Drži na vrhu" #: ../src/dock.c:956 msgid "Collapsed" msgstr "Srušen" #: ../src/dock.c:962 msgid "AutoCollapse" msgstr "AutoRušanje" #: ../src/dock.c:968 msgid "AutoAttract Icons" msgstr "AutoPrivlačenje ikona" #: ../src/dock.c:974 msgid "Keep Attracted Icons" msgstr "Zadrži privučene ikone" #: ../src/dock.c:1004 msgid "Clip Options" msgstr "Opcije clipa" #: ../src/dock.c:1011 msgid "(Un)Select Icon" msgstr "(De)Selektiraj ikonu" #: ../src/dock.c:1013 msgid "(Un)Select All Icons" msgstr "(De)Selektiraj sve ikone" #: ../src/dock.c:1016 msgid "Keep Icon(s)" msgstr "Zadrži ikonu(e)" #: ../src/dock.c:1018 msgid "Move Icon(s) To" msgstr "Stavi ikonu(e) na" #: ../src/dock.c:1023 msgid "Remove Icon(s)" msgstr "Makni ikonu(e)" #: ../src/dock.c:1025 msgid "Attract Icons" msgstr "Privuci ikone" #: ../src/dock.c:1028 msgid "Launch" msgstr "Pokreni" #: ../src/dock.c:1034 msgid "Settings..." msgstr "Postavke..." #: ../src/dock.c:1416 ../src/dock.c:1430 ../src/dock.c:1444 ../src/dock.c:1454 msgid "bad value in docked icon state info %s" msgstr "kriva vrijednost u dockiranom info stanju ikone %s" #: ../src/dock.c:1462 msgid "bad value in docked icon position %i,%i" msgstr "kriva vrijednost u dockiranoj poziciji ikone %i,%i" #: ../src/dock.c:1691 msgid "there are too many icons stored in dock. Ignoring what doesn't fit" msgstr "previše je ikona stavljeno na dock. Zanemarujem ono što ne stane" #. icon->forced_dock = 1; #: ../src/dock.c:1923 ../src/dock.c:2045 msgid "Dock Icon" msgstr "Stavi ikonu na dock" #: ../src/dock.c:2946 ../src/dock.c:2950 msgid "Could not execute command \"%s\"" msgstr "Ne mogu izvršiti naredbu \"%s\"" #: ../src/dockedapp.c:128 msgid "could not find icon %s, used in a docked application" msgstr "ne mogu naći ikonu %s, za dockiranu aplikaciju" #: ../src/dockedapp.c:205 msgid "Could not open specified icon file:%s" msgstr "Ne mogu otvoriti navedenu ikonu:%s" #: ../src/dockedapp.c:291 msgid "Start when WindowMaker is started" msgstr "Pokreni kada se pokrene WindowMaker" #: ../src/dockedapp.c:298 msgid "Application path and arguments" msgstr "Staze i argumenti aplikacije" #: ../src/dockedapp.c:309 msgid "Command for files dropped with DND" msgstr "Naredba za datoteke spuštene DND-om" #: ../src/dockedapp.c:321 msgid "%d will be replaced with the file name" msgstr "%d će biti zamjenjeno imenom datoteke" #: ../src/dockedapp.c:325 msgid "DND support was not compiled in" msgstr "Podrška za DND nije ukompajlirana" #: ../src/dockedapp.c:331 msgid "Icon Image" msgstr "Ikona" #: ../src/dockedapp.c:343 ../src/winspector.c:1191 msgid "Browse..." msgstr "Potraži..." #: ../src/dockedapp.c:388 msgid "Docked Application Settings" msgstr "Postavke dockirane aplikacije" #: ../src/event.c:372 msgid "stack overflow: too many dead processes" msgstr "stack overflow: previše mrtvih procesa" #: ../src/framewin.c:526 msgid "could not render gradient: %s" msgstr "ne mogu rednderiradi gradaciju: %s" #: ../src/framewin.c:542 ../src/framewin.c:557 ../src/framewin.c:568 ../src/framewin.c:575 ../src/framewin.c:582 ../src/icon.c:296 ../src/texture.c:492 msgid "error rendering image:%s" msgstr "greška pri rednderiranju slike: %s" #: ../src/icon.c:182 ../src/wdefaults.c:402 msgid "error loading image file \"%s\": %s" msgstr "greška pri učitavanju image datoteke \"%s\": %s" #: ../src/icon.c:428 ../src/icon.c:437 msgid "could not create directory %s" msgstr "ne mogu kreirati direktorij %s" #: ../src/icon.c:702 msgid "could not find default icon \"%s\"" msgstr "ne mogu naći glavnu ikonu \"%s\"" #: ../src/icon.c:708 msgid "could not load default icon \"%s\":%s" msgstr "ne mogu učitati glavnu ikonu \"%s\":%s" #: ../src/main.c:186 msgid "could not exec window manager" msgstr "ne mogu pokrenuti window manager" #: ../src/main.c:187 msgid "Restart failed!!!" msgstr "Ponovno startanje nije uspjelo!!!" #: ../src/main.c:234 msgid "%s aborted.\n" msgstr "%s se srušio.\n" #: ../src/main.c:245 msgid "usage: %s [-options]\n" msgstr "upotreba: %s [-opcije]\n" #: ../src/main.c:246 msgid "options:" msgstr "opcije:" #: ../src/main.c:248 msgid " -nocpp \t\tdisable preprocessing of configuration files" msgstr " -nocpp \t\tonemogući preprocesiranje konfiguracijskih datoteka" #: ../src/main.c:250 msgid " -nodock\t\tdo not open the application Dock" msgstr " -nodock\t\tne otvaraj Dock aplikaciju" #: ../src/main.c:251 msgid " -noclip\t\tdo not open the workspace Clip" msgstr " -noclip\t\tne otvaraj Clip radnih prostora" #: ../src/main.c:255 msgid " -visualid visualid\tvisual id of visual to use" msgstr " -visualid visualid\tvisual id of visual to use" #: ../src/main.c:256 msgid " -display host:dpy\tdisplay to use" msgstr " -display host:dpy\tdisplay za korištenje" #: ../src/main.c:257 msgid " -version\t\tprint version and exit" msgstr " -version\t\tispiši verziju i izađi" #: ../src/main.c:269 msgid "" "could not find user GNUstep directory (%s).\n" "Make sure you have installed Window Maker correctly and run wmaker.inst" msgstr "" "Ne mogu naći korisnički GNUstep direktorij (%s).\n" "Provjerite da li ste pravilno instalirali Window Maker i pokrenuli wmaker.inst" #: ../src/main.c:291 msgid "%s:could not execute initialization script" msgstr "%s:ne mogu izvrširi inicijalizacijsku skriptu" #: ../src/main.c:310 msgid "%s:could not execute exit script" msgstr "%s:ne mogu izvršiti izlaznu skriptu" #: ../src/main.c:367 ../src/main.c:374 ../src/main.c:381 msgid "too few arguments for %s" msgstr "premalo argumenata za %s" #: ../src/main.c:385 msgid "bad value for visualid: \"%s\"" msgstr "kriva vrijednost za visualid: \"%s\"" #: ../src/main.c:426 msgid "X server does not support locale" msgstr "X server ne podržava locale" #: ../src/main.c:429 msgid "cannot set locale modifiers" msgstr "ne mogu postaviti loacale modifiers" #: ../src/main.c:446 msgid "could not open display \"%s\"" msgstr "ne mogu otvoriti display \"%s\"" #: ../src/menu.c:285 msgid "wrealloc() failed while trying to add menu item" msgstr "wrealloc() pao pokušavajući dodati postavku u izbornik" #: ../src/misc.c:71 msgid "could not define value for %s for cpp" msgstr "ne mogu definirati vrijednost za %s za cpp" #: ../src/misc.c:101 msgid "could not get password entry for UID %i" msgstr "ne mogu uzeti password zapis za UID %i" #: ../src/misc.c:125 msgid "your machine is misconfigured. HOSTNAME is set to %s" msgstr "vaša mašina je krivo konfigurirana. HOSTNAME je postavljen na %s" #: ../src/misc.c:131 msgid "your machine is misconfigured. HOST is set to %s" msgstr "vaša mašina je krivo konfigurirana. HOST je postavljen na %s" #: ../src/misc.c:773 msgid "selection timed-out" msgstr "vrijeme za odabir isteklo" #: ../src/misc.c:788 msgid "Program Arguments" msgstr "Argumenti programa" #: ../src/misc.c:807 msgid "Enter command arguments:" msgstr "Upiši argumente naredbe:" #: ../src/misc.c:833 msgid "unable to get dropped data from DND drop" msgstr "ne mogu uzeti spuštene podatke od DND spuštanja" #: ../src/misc.c:841 msgid "error getting dropped data from DND drop" msgstr "greška pri uzimanju spuštenih podataka od DND spuštanja" #: ../src/misc.c:847 msgid "out of memory while getting data from DND drop" msgstr "iskorištena sva memorija pri uzimanju podataka od DND spuštanja" #: ../src/misc.c:891 ../src/misc.c:1011 msgid "out of memory during expansion of \"%s\"" msgstr "iskorištena sva memorija za vrijeme širenja \"%s\"" #: ../src/misc.c:945 msgid "out of memory during expansion of \"%w\"" msgstr "iskorištena sva memorija za vrijeme širenja \"%w\"" #: ../src/misc.c:964 msgid "out of memory during expansion of \"%a\"" msgstr "iskorištena sva memorija za vrijeme širenja \"%a\"" #: ../src/misc.c:990 msgid "out of memory during expansion of \"%d\"" msgstr "iskorištena sva memorija za vrijeme širenja \"%d\"" #: ../src/misc.c:1004 msgid "selection not available" msgstr "odabir nije dostupan" #: ../src/misc.c:1076 ../src/misc.c:1082 msgid "bad window name value in %s state info" msgstr "kriva vrijednost imena za prozor u %s u info stanju" #: ../src/pixmap.c:235 msgid "could not load mask bitmap file \"%s\". Won't use mask" msgstr "ne mogu učitati bitmap datoteku \"%s\" za mask. Neću koristiti mask." #: ../src/proplist.c:180 msgid "unterminated string" msgstr "nezavršen string" #: ../src/proplist.c:247 msgid "unterminated array" msgstr "nezavršen niz" #: ../src/proplist.c:256 msgid "missing , in array or unterminated array" msgstr "nedostaje , u nizu ili nezavršen niz" #: ../src/proplist.c:267 msgid "could not get array element" msgstr "ne mogu uzeti element niza" #: ../src/proplist.c:297 msgid "unterminated dictionary" msgstr "ne završen riječnik" #: ../src/proplist.c:315 msgid "missing dictionary key" msgstr "nedostaje ključ riječnika" #: ../src/proplist.c:317 msgid "missing dictionary entry key or unterminated dictionary" msgstr "nedostaje ključ riječnika ili nezavršen niz" #: ../src/proplist.c:323 msgid "error parsing dictionary key" msgstr "greška pri parsiranju ključa riječnika" #: ../src/proplist.c:332 msgid "missing = in dictionary entry" msgstr "nedostaje = u riječničkom zapisu" #: ../src/proplist.c:351 msgid "missing ; in dictionary entry" msgstr "nedostaje ; u riječničkom zapisu" #: ../src/proplist.c:432 msgid "was expecting a string, dictionary, data or array." msgstr "je očekivao string, riječnik, podatak ili niz." #: ../src/proplist.c:434 msgid "Comments are not allowed inside WindowMaker owned domain files." msgstr "Komentari nisu dozvoljeni unutar WindowMaker owned datoteka." #: ../src/proplist.c:453 msgid "could not open domain file %s" msgstr "ne mogu otvoriti domain datoteku %s" #: ../src/proplist.c:466 msgid "extra data after end of file" msgstr "višak podataka nakon kraja datoteke" #: ../src/resources.c:71 msgid "The following character sets are missing in %s:" msgstr "Sljedeći character setovi nedostaju u %s:" #: ../src/resources.c:76 msgid "The string \"%s\" will be used in place" msgstr "String \"%s\"će biti korišten na mjestu" #: ../src/resources.c:78 msgid "of any characters from those sets." msgstr "od bilo kojih znakova iz tih setova" #: ../src/resources.c:81 msgid "could not create font set %s. Trying fixed" msgstr "ne mogu napraviti font set %s. Probat ću fixed" #: ../src/resources.c:98 msgid "could not load font %s. Trying fixed" msgstr "ne mogu učitati font %s. Probat ću fixed" #: ../src/resources.c:136 msgid "could not parse color \"%s\"" msgstr "ne mogu parsirati boju \"%s\"" #: ../src/resources.c:140 msgid "could not allocate color \"%s\"" msgstr "ne mogu alocirati boju \"%s\"" #: ../src/rootmenu.c:205 ../src/rootmenu.c:207 ../src/rootmenu.c:236 msgid "Exit" msgstr "Izlaz" #: ../src/rootmenu.c:206 msgid "Exit window manager?" msgstr "Izlaz iz window managera?" #: ../src/rootmenu.c:234 msgid "Close X session" msgstr "Zatvori X session" #: ../src/rootmenu.c:235 msgid "" "Close Window System session?\n" "(all applications will be closed)" msgstr "" "Zatvoriti Window System session?\n" "(sve aplikacije će biti zatvorene)" #: ../src/rootmenu.c:454 msgid "%s:invalid kbd shortcut specification \"%s\" for entry %s" msgstr "%s:kriva specifikacija za kbd kraticu \"%s\" za zapis %s" #: ../src/rootmenu.c:462 msgid "%s:invalid key in shortcut \"%s\" for entry %s" msgstr "%s:krivi ključ u kratici \"%s\" za zapis %s" #: ../src/rootmenu.c:515 msgid "%s: unmatched '\"' in menu file" msgstr "%s: unmatched '\" u datoteci izbornika" #: ../src/rootmenu.c:565 msgid "%s: missing command" msgstr "%s: nedostaje naredba" #: ../src/rootmenu.c:598 msgid "invalid OPEN_MENU specification: %s" msgstr "kriva OPEN_MENU specifikacija: %s" #: ../src/rootmenu.c:663 msgid "%s:could not stat menu" msgstr "%s:ne mogu statirati izbornik" #: ../src/rootmenu.c:671 msgid "%s:could not stat menu :%s" msgstr "%s:ne mogu statirati izbornik: %s" #: ../src/rootmenu.c:689 msgid "too many parameters in OPEN_MENU: %s" msgstr "previše parametara u OPEN_MENU: %s" #: ../src/rootmenu.c:725 msgid "There are more than one WORKSPACE_MENU commands in the applications menu. Only one is allowed." msgstr "Ima više nego jedna WORKSPACE_MENU naredba u izborniku aplikacija. Smije biti samo jedna." #: ../src/rootmenu.c:754 ../src/rootmenu.c:772 msgid "%s:missing parameter for menu command \"%s\"" msgstr "%s:nedostaje parametar za naredbu izbornika \"%s\"" #: ../src/rootmenu.c:835 msgid "%s:unknown command \"%s\" in menu config." msgstr "%s:nepoznata naredba \"%s\" u konfiguraciji izbornika" #: ../src/rootmenu.c:843 msgid "%s:can't add shortcut for entry \"%s\"" msgstr "%s:ne mogu dodati kraticu za zapis \"%s\"" #: ../src/rootmenu.c:980 msgid "%s:maximal line size exceeded in menu config: %s" msgstr "%s prekoračena maksimalna veličina linije u konfiguraciji izbornika: %s" #: ../src/rootmenu.c:1002 ../src/rootmenu.c:1094 ../src/rootmenu.c:1195 msgid "%s:missing command in menu config: %s" msgstr "%s:nedostaje naredba u konfiguraciji izbornika: %s" #: ../src/rootmenu.c:1032 msgid "%s:syntax error in menu file:END declaration missing" msgstr "%s:greška u sintaksi u datoteci izbornika: nedostaje deklaracija END" #: ../src/rootmenu.c:1061 ../src/rootmenu.c:1160 msgid "could not make arguments for menu file preprocessor" msgstr "ne mogu napraviti argumente za preprocesor datoteke izbornika" #: ../src/rootmenu.c:1067 ../src/rootmenu.c:1167 msgid "%s:could not open/preprocess menu file" msgstr "%s:ne mogu otvoriti/preprocesirati datoteku izbornika" #: ../src/rootmenu.c:1079 ../src/rootmenu.c:1180 msgid "could not open menu file \"%s\": %s" msgstr "ne mogu otvoriti datoteku izbornika \"%s\": %s" #: ../src/rootmenu.c:1106 msgid "%s:invalid menu file. MENU command is missing" msgstr "%s:kriva datoteka izbornika. Nedostaje MENU naredba" #: ../src/rootmenu.c:1115 msgid "error reading preprocessed menu data" msgstr "greška pri čitanju preprocesiranih podataka za izbornik" #: ../src/rootmenu.c:1207 msgid "%s:no title given for the root menu" msgstr "%s:nije naveden naslov za root izbornik" #: ../src/rootmenu.c:1261 ../src/rootmenu.c:1324 ../src/rootmenu.c:1368 msgid "out of memory while constructing directory menu %s" msgstr "iskorištena sva memorija prilikom konstruiranja direktorij izbornika %s" #: ../src/rootmenu.c:1271 msgid "%s:could not stat file \"%s\" in menu directory" msgstr "%s:ne mogu statirati datoteku \"%s\" u izbornik direktoriju" #: ../src/rootmenu.c:1417 msgid "Commands" msgstr "Naredbe" #: ../src/rootmenu.c:1419 msgid "Exit..." msgstr "Izlaz" #: ../src/rootmenu.c:1486 msgid "could not find menu file \"%s\" referenced in WMRootMenu" msgstr "ne mogu naći datoteku izbornika \"%s\" naveden u WMRootMenu datoteci" #: ../src/rootmenu.c:1493 msgid "could not access menu \"%s\" referenced in WMRootMenu" msgstr "ne mogu pristupiti datoteci izbornika \"%s\" navedenoj u WMRootMenu" #: ../src/rootmenu.c:1521 ../src/rootmenu.c:1576 msgid "%s:format error in root menu configuration \"%s\"" msgstr "%s:greška u formatu u konfiguraciji root izbornika \"%s\"" #: ../src/screen.c:412 msgid "could not load logo image for panels" msgstr "ne mogu učitati logo image za panele" #: ../src/screen.c:415 msgid "error making logo image for panel:%s" msgstr "greška pri kreiranju logo imagea za panel:%s" #: ../src/screen.c:594 msgid "could not initialize graphics library context: %s" msgstr "ne mogu inicijalizirati sadržaj grafičke biblioteke: %s" #: ../src/session.c:113 ../src/wdefaults.c:562 ../src/winspector.c:343 msgid "can't convert \"%s\" to boolean" msgstr "ne mogu konvertirati \"%s\" u logički izraz" #: ../src/stacking.c:88 msgid "could not get window list!!" msgstr "ne mogu uzeti listu prozora!!" #: ../src/startup.c:188 msgid "internal X error: %s\n" msgstr "interna X greška: %s\n" #: ../src/startup.c:251 msgid "got signal %i (%s) - restarting\n" msgstr "dobio sam signal %i (%s) - ponovno startam\n" #: ../src/startup.c:253 msgid "got signal %i - restarting\n" msgstr "primio signal %i - ponovno startam\n" #: ../src/startup.c:267 msgid "%s: Received signal SIGTERM. Exiting..." msgstr "%s: Primio signal SIGTERM. Izlazim..." #: ../src/startup.c:279 msgid "got signal %i (%s)\n" msgstr "primio signal %i (%s)\n" #: ../src/startup.c:281 msgid "got signal %i\n" msgstr "primio signal %i\n" #: ../src/startup.c:286 msgid "crashed while trying to do some post-crash cleanup. Aborting immediatelly." msgstr "srušio se dok sam pokušavao čistiti. Prekidam odmah." #. restart another window manager so that the X session doesn't #. * go to space #: ../src/startup.c:297 msgid "trying to start alternative window manager..." msgstr "pokušavam startati drugi window manager" #: ../src/startup.c:696 msgid "icon size is configured to %i, but it's too small. Using 16, instead\n" msgstr "veličina ikone je konfigurirana ba %i, ali je premala. Umjetsto toga koristim 16\n" #: ../src/startup.c:740 msgid "it seems that there already is a window manager running" msgstr "čini se da je već pokrenut window manager" #: ../src/startup.c:746 msgid "could not manage screen %i" msgstr "ne mogu upravljati ekranom %i" #: ../src/startup.c:802 msgid "could not manage any screen" msgstr "ne mogu upravljati nijednim ekranom" #: ../src/switchmenu.c:112 msgid "Windows" msgstr "Lista prozora" #: ../src/texture.c:267 msgid "image file \"%s\" used as texture could not be found." msgstr "ne mogu naći image datoteku \"%s\" koja se koristi kao tekstura." #: ../src/texture.c:273 msgid "could not load texture pixmap \"%s\":%s" msgstr "ne mogu učitati teksturni pixmap \"%s\":%s" #: ../src/texture.c:377 ../src/texture.c:488 msgid "could not render texture: %s" msgstr "ne mogu renderirati teksturu: %s" #: ../src/wdefaults.c:396 msgid "could not find icon file \"%s\"" msgstr "ne mogu naći ikonu \"%s\"" #: ../src/window.c:2261 ../src/window.c:2404 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 "" "čini se da su NumLock, ScrollLock ili slični ključevi uključeni.\n" "Isključite ih ili neke akcije s mišom i tastaturom neće raditi." #: ../src/winmenu.c:192 ../src/winmenu.c:199 msgid "Shortcut" msgstr "Kratica" #: ../src/winmenu.c:242 ../src/winmenu.c:258 msgid "could not create submenu for window menu" msgstr "ne mogu kreirati podizbornik za izornik prozora" #. #. * 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:284 msgid "(Un)Maximize" msgstr "(De)Maksimiziraj" #: ../src/winmenu.c:292 msgid "Miniaturize" msgstr "Minimiziraj" #: ../src/winmenu.c:301 msgid "(Un)Shade" msgstr "(Un)Shade" #: ../src/winmenu.c:309 msgid "Hide" msgstr "Sakrij" #: ../src/winmenu.c:317 msgid "Select" msgstr "Odaberi" #: ../src/winmenu.c:325 msgid "Move To" msgstr "Stavi na" #: ../src/winmenu.c:330 msgid "Attributes..." msgstr "Atributi..." #: ../src/winmenu.c:332 msgid "Select Shortcut" msgstr "Odaberi kratici" #: ../src/winmenu.c:335 msgid "Close" msgstr "Zatvori" #: ../src/winspector.c:277 msgid "Could not find icon \"%s\" specified for this window" msgstr "Ne mogu naći ikonu \"%s\" dodjeljenu ovom prozoru" #: ../src/winspector.c:293 msgid "Could not open specified icon \"%s\":%s" msgstr "Ne mogu otvoriti navedenu ikonu \"%s\":%s" #: ../src/winspector.c:989 msgid "Save" msgstr "Snimi" #: ../src/winspector.c:995 msgid "Apply" msgstr "Primjeni" #: ../src/winspector.c:1001 msgid "Revert" msgstr "Vrati" #: ../src/winspector.c:1010 ../src/winspector.c:1020 msgid "Window Specification" msgstr "Specifikacija prozora" #: ../src/winspector.c:1011 msgid "Window Attributes" msgstr "Atributi prozora" #: ../src/winspector.c:1012 msgid "Advanced Options" msgstr "Napredne opcije" #: ../src/winspector.c:1013 msgid "Icon and Initial Workspace" msgstr "Ikona i početna radni prostor" #: ../src/winspector.c:1014 msgid "Application Specific" msgstr "Specifično za aplikaciju" #: ../src/winspector.c:1028 msgid "Defaults for all windows" msgstr "Defaults za sve prozore" #: ../src/winspector.c:1064 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 "" "Kada bude snimljeno, konfiguracija će\n" "biti primjenjena na sve prozore koji\n" "imaju svoju WM_CLASS postavku\n" "postavljenu na gore navedeno ime." #: ../src/winspector.c:1071 msgid "Attributes" msgstr "Atributi" #: ../src/winspector.c:1081 msgid "Disable titlebar" msgstr "Onemogući titlebar" #: ../src/winspector.c:1085 msgid "Disable resizebar" msgstr "Onemogući resizebar" #: ../src/winspector.c:1089 msgid "Disable close button" msgstr "Bez dugmeta za zatvaranje" #: ../src/winspector.c:1093 msgid "Disable miniaturize button" msgstr "Bez dugmeta za minimiziranje" #: ../src/winspector.c:1101 msgid "Omnipresent" msgstr "SvugdjePrisutan" #: ../src/winspector.c:1105 msgid "Start Miniaturized" msgstr "Pokreni minimizirano" #: ../src/winspector.c:1109 msgid "Skip window list" msgstr "Preskoči listu prozora" #: ../src/winspector.c:1123 msgid "Advanced" msgstr "Napredno" #: ../src/winspector.c:1133 msgid "Ignore HideOthers" msgstr "Ignoriraj SakrijOstale" #: ../src/winspector.c:1137 msgid "Don't bind keyboard shortcuts" msgstr "Ne primjenjuj kbd kratice" #: ../src/winspector.c:1141 msgid "Don't bind mouse clicks" msgstr "Ne primjenjuj klikove miša" #: ../src/winspector.c:1145 msgid "Keep inside screen" msgstr "Drži unutar ekrana" #: ../src/winspector.c:1149 msgid "Don't let it take focus" msgstr "Ne daj da uzme fokus" #: ../src/winspector.c:1153 msgid "Don't Save Session" msgstr "Ne snimaj sessiju" #: ../src/winspector.c:1157 msgid "Emulate Application Icon" msgstr "Emulirati aplikacijsku ikonu" #: ../src/winspector.c:1172 msgid "Enable the \"Don't bind...\" options to allow the application to receive all mouse or keyboard events." msgstr "Omogući \"Ne primjenjuj...\" opcije da bi dopustio aplikaciji da primi sve miš ili tastaturne događaje." #: ../src/winspector.c:1179 msgid "Miniwindow Image" msgstr "Miniwindow Image" #: ../src/winspector.c:1198 msgid "Update" msgstr "Update" #: ../src/winspector.c:1213 msgid "Icon file name:" msgstr "Ime ikone:" #: ../src/winspector.c:1225 msgid "Ignore client supplied icon" msgstr "Zanemari ponuđenu ikonu" #: ../src/winspector.c:1232 msgid "Initial Workspace" msgstr "Početni randi prostor" #: ../src/winspector.c:1237 msgid "Nowhere in particular" msgstr "Nigdje posebno" #: ../src/winspector.c:1271 msgid "Application Wide" msgstr "Preko cijele aplikacije" #: ../src/winspector.c:1281 msgid "Start Hidden" msgstr "Pokreni skriveno" #: ../src/winspector.c:1285 msgid "No application icon" msgstr "Nema ikone za aplikaciju" #: ../src/workspace.c:89 ../src/workspace.c:90 ../src/workspace.c:423 msgid "Workspace %i" msgstr "Radni prostor %i" #: ../src/workspace.c:471 msgid "Workspaces" msgstr "Radni prostori" #: ../src/workspace.c:473 msgid "could not create Workspace menu" msgstr "ne mogu kreirati izbornik Radnog prostora" #: ../src/workspace.c:480 msgid "New" msgstr "Novi" #: ../src/workspace.c:481 msgid "Destroy Last" msgstr "Uništi zadnju" #: ../src/xutil.c:228 msgid "invalid data in selection" msgstr "krivi podaci u odabiru" # msgid "could not create workspace submenu for window menu" # msgstr "ne mogu kreirati radni prostor podizbornik za prozor izbornik" # # msgid "Floating Dock" # msgstr "Plutajući dock" # # msgid "Program \"%s\" not found or cannot be executed." # msgstr "Program \"%s\" ne može biti nađen ili izvršen." # # msgid "Invalid justification type \"%s\". Should be Left, Center or Right" # msgstr "Pogrešan tip poravnanja \"%s\". Trebao bi biti Left, Center ili Right" # # msgid "Invalid colormap focus mode \"%s\". Should be Manual or Auto." # msgstr "Pogrešni colormap fokus mod \"%s\". Trebao bi biti Manual ili Auto." # # msgid "Invalid geometry display type \"%s\". Should be Center, Corner, Floating or Line." # msgstr "Pogrešni tip geometry prikaza \"%s\". Trebao bi biti Center, Corner, Floating ili Line." # # msgid "Invalid window placement mode \"%s\". Should be Auto, Cascade, Random or Manual." # msgstr "Pogrešni window placement mod \"%s\". Trebao bi biti Auto, Cascade, Random ili Manual." # # msgid "Invalid focus mode \"%s\". Should be Manual, Auto or Sloppy." # msgstr "Pogrešni fokus mod \"%s\". Trebao bi biti Manual, Auto ili Sloppy." # # msgid "Invalid mouse button \"%s\". Should be Left, Middle, Right or Button1 through Button5" # msgstr "Pogrešno dugme miša \"%s\". Trebalo bi biti Left, Middle, Right ili Button1 do Button5." # # msgid "Invalid iconification style \"%s\". Should be Zoom, Twist, Flip or None" # msgstr "Krivi stil ikonifikacije \"%s\". Trebao bi biti Zoom, Twist, Flip ili None" # # msgid "Invalid speed \"%s\". Should be UltraFast, Fast, Medium, Slow or UltraSlow." # msgstr "Pogrešna brzina \"%s\". Trebala bi biti UltraFast, Fast, Medium, Slow ili UltraSlow." # # msgid "Floating Clip" # msgstr "Plutajući Clip" # # msgid "Invalid icon Position \"%s\". Should be one of blv, blh, brv, brh, tlv, tlh, trv, trh" # msgstr "Kriva pozicija ikone \"%s\". Trebala bi biti: blv, blh, brv, brh, tlv, tlh, trv ili trh" # # msgid "" # "could not find user GNUstep directory.\n" # "Make sure you have installed WindowMaker correctly and run wmaker.inst" # msgstr "" # "ne mogu naći korisnikov GNUstep direktorij.\n" # "Provjerite da li ste ispravno instalirali WinowMaker i pokrenite wmaker.inst" # # msgid "Hide Others" # msgstr "Sakrij ostale" # # msgid "Exiting...\n" # msgstr "Izlazim...\n" # # msgid "%s:could not find menu file \"%s\"" # msgstr "%s:ne mogu naći datoteku izbornika \"%s\"" # # msgid "%s:could not access menu \"%s\"" # msgstr "%s:ne mogu pristupiti izborniku \"%s\"" # # msgid "invalid kbd shortcut specification \"%s\"" # msgstr "pogrešna specifikacija kbd kratice \"%s\"" # # msgid "invalid key modifier \"%s\"" # msgstr "pogrešni modifier \"%s\"" # # msgid "Could not find icon file specified for this window" # msgstr "Ne mogu naći ikonu specificiranu za ovaj prozor" # # msgid "could not load clip tile image" # msgstr "ne mogu učitati image za pozadinu clipa" # # msgid "invalid key in shortcut \"%s\"" # msgstr "krivi ključ u kratici \"%s\"" # # msgid "not enough memory to open window inspector panel" # msgstr "premalo memorije za otvaranje window inspector panela" # WindowMaker-0.95.9/po/tr.po0000644000175000017500000006704013431646201012400 00000000000000msgid "" msgstr "" "Project-Id-Version: WindowMaker 0.65.1\n" "PO-Revision-Date: 1998-03-12 18:29:09+EET\n" "Last-Translator: KGF \n" "Language-Team: Turkish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" #: ../src/appicon.c:542 ../src/dialog.c:273 ../src/dialog.c:329 ../src/dock.c:262 ../src/dock.c:3106 ../src/rootmenu.c:162 ../src/winspector.c:269 ../src/winspector.c:277 msgid "Error" msgstr "Hata" #: ../src/appicon.c:543 ../src/dock.c:263 ../src/winspector.c:278 msgid "Could not open specified icon file" msgstr "Beliritilen simge dosyası açılamadı" #: ../src/appicon.c:563 ../src/dock.c:508 ../src/winmenu.c:83 msgid "Kill Application" msgstr "Uygulamayı sonlandır" #: ../src/appicon.c:564 ../src/dock.c:509 ../src/winmenu.c:84 msgid "" "This will kill the application.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" "Bu işlem uygulamayı sonlandıracaktır.\n" "Yaptığınız değişiklikleri kaybedebilirsiniz.\n" "Lütfen onaylayın." #: ../src/appicon.c:580 ../src/dock.c:1140 msgid "Unhide Here" msgstr "Burada göster" #: ../src/appicon.c:581 ../src/dock.c:1138 msgid "(Un)Hide" msgstr "Sakla/Göster" #: ../src/appicon.c:582 msgid "Set Icon..." msgstr "Simge belirle" #: ../src/appicon.c:583 ../src/dock.c:1142 ../src/winmenu.c:245 msgid "Kill" msgstr "Yok et" #: ../src/defaults.c:552 ../src/screen.c:465 ../src/screen.c:544 ../src/screen.c:550 msgid "could not read domain \"%s\" from defaults database" msgstr "Öntanımlar veritabınından domain \"%s\" okunamadı" #: ../src/defaults.c:1027 msgid "can't convert \"%s\" to boolean for key \"%s\"" msgstr "\"%s\", \"%s\" anahtarı için ikili bir değere dönüştürülemedi" #: ../src/defaults.c:1032 ../src/defaults.c:1065 ../src/defaults.c:1097 ../src/defaults.c:1110 ../src/defaults.c:1125 ../src/defaults.c:1140 ../src/defaults.c:1211 ../src/defaults.c:1223 ../src/defaults.c:1277 ../src/defaults.c:1321 ../src/defaults.c:1363 ../src/defaults.c:1409 ../src/defaults.c:1628 ../src/defaults.c:1642 ../src/defaults.c:1675 ../src/defaults.c:1687 ../src/defaults.c:1699 ../src/defaults.c:1723 ../src/defaults.c:1741 ../src/defaults.c:1754 ../src/defaults.c:1767 ../src/defaults.c:1802 ../src/defaults.c:1840 ../src/defaults.c:1904 msgid "using default \"%s\" instead" msgstr "öntanımlı \"%s\" kullanılıyor" #: ../src/defaults.c:1062 msgid "can't convert \"%s\" to integer for key \"%s\"" msgstr "\"%s\", \"%s\" anahtarı için tamsayıya dönüştürülemedi" #: ../src/defaults.c:1092 ../src/defaults.c:1206 ../src/defaults.c:1623 ../src/defaults.c:1670 ../src/wdefaults.c:537 ../src/wdefaults.c:573 msgid "Wrong option format for key \"%s\". Should be %s." msgstr "\"%s\" anahtarı için yanlış seçenek biçimi. %s olmalıydı." #: ../src/defaults.c:1105 msgid "Incorrect number of elements in array for key \"%s\"." msgstr "\"%s\" anahtarı dizisinin eleman sayısı yanlış." #: ../src/defaults.c:1120 msgid "Wrong value for key \"%s\". Should be Coordinate." msgstr "\"%s\" anahtarı için yanlış değer. Coordinate olmalıydı." #: ../src/defaults.c:1135 msgid "can't convert array to integers for \"%s\"." msgstr " \"%s\" için dizi tamsayılara dönüştürülemiyor." #: ../src/defaults.c:1272 msgid "Invalid focus mode \"%s\". Should be Manual, Auto or Sloppy." msgstr "Geçersiz focus kipi \"%s\". Manual, Auto veya Sloppy olmalıydı." #: ../src/defaults.c:1315 msgid "Invalid window placement mode \"%s\". Should be Auto, Cascade, Random or Manual." msgstr "Geçersiz pencere yerleştirme kipi \"%s\". Auto, Cascade, Random veya Manual olmalıydı." #: ../src/defaults.c:1357 msgid "Invalid geometry display type \"%s\". Should be Center, Corner, Floating or Line." msgstr "Geçersiz geometri görüntüleme kipi \"%s\". Center, Corner, Floating veya Line olmalıydı." #: ../src/defaults.c:1404 msgid "Invalid speed \"%s\". Should be UltraFast, Fast, Medium, Slow or UltraSlow." msgstr "Geçersiz hız \"%s\". UltraFast, Fast, Medium, Slow veya UltraSlow. olmalıydı" #: ../src/defaults.c:1470 ../src/defaults.c:1501 ../src/defaults.c:1513 ../src/defaults.c:1554 ../src/defaults.c:1590 msgid "\"%s\" is not a valid color name" msgstr "\"%s\" geçerli bir renk ismi değil" #: ../src/defaults.c:1482 msgid "bad number of arguments in gradient specification" msgstr "renk geçişi tanımında seçenek sayısı yanlış" #: ../src/defaults.c:1528 msgid "too few arguments in multicolor gradient specification" msgstr "çok renkli geçiş tanımında az parametre var." #: ../src/defaults.c:1637 msgid "Error in texture specification for key \"%s\"" msgstr "\"%s\" anahtarı için hatalı desen tanımı" #: ../src/defaults.c:1683 ../src/defaults.c:1719 msgid "Too few elements in array for key \"WorkspaceBack\"." msgstr "\"WorkspaceBack\" anahtarı dizini için çok az birim tanımlanmış" #: ../src/defaults.c:1695 msgid "Wrong type for workspace background. Should be Texture." msgstr "Çalışma alanı arkaplanı için yanlış kip. Texture olmalıydı." #: ../src/defaults.c:1737 msgid "Cannot get color entry for key \"WorkspaceBack\"." msgstr "\"WorkspaceBack\" için renk değeri bulunamıyor." #: ../src/defaults.c:1749 msgid "key \"WorkspaceBack\" has invalid color \"%s\"" msgstr "\"WorkspaceBack\" anahtarı geçersiz \"%s\" rengini kullanıyor" #: ../src/defaults.c:1763 msgid "Cannot get file entry for key \"WorkspaceBack\"." msgstr "\"WorkspaceBack\" anahtarı için dosya değeri okunamıyor" #: ../src/defaults.c:1779 msgid "could not run \"%s\"" msgstr "\"%s\" çalıştırılamadı" #: ../src/defaults.c:1785 msgid "could not find background image \"%s\"" msgstr "Arkaplan görüntüsü \"%s\" bulunamadı" #: ../src/defaults.c:1798 msgid "Error in texture specification for key \"WorkspaceBack\"" msgstr "\"WorkspaceBack\" anahtarı için geçersiz desen tanımı" #: ../src/defaults.c:1835 msgid "Invalid justification type \"%s\". Should be Left, Center or Right" msgstr "Geçersiz hizalama tipi \"%s\". Left, Center veya Right olmalıydı" #: ../src/defaults.c:1869 msgid "could not load any usable font" msgstr "Kullanılabilecek bir yazı tipi bulunamadı." #: ../src/defaults.c:1899 msgid "could not get color for key \"%s\"" msgstr "\"%s\" anahtarı için renk bulunamadı" #: ../src/defaults.c:1958 msgid "invalid key modifier \"%s\"" msgstr "Geçersiz anahtar ek bilgisi \"%s\"" #: ../src/defaults.c:1970 msgid "invalid kbd shortcut specification \"%s\"" msgstr "Geçersiz kısayol tanımlaması \"%s\"" #: ../src/defaults.c:1976 msgid "invalid key in shortcut \"%s\"" msgstr "kısayol içinde geçersiz tuş \"%s\"" #: ../src/defaults.c:2070 msgid "could not render texture for icon background" msgstr "simge arkaplanı için desen çizilemedi" #: ../src/defaults.c:2416 msgid "could not render texture for workspace background" msgstr "Çalışma alanı arkaplanı için desen hesaplanamadı" #: ../src/dialog.c:81 ../src/dialog.c:93 ../src/dialog.c:176 ../src/dialog.c:504 ../src/dock.c:377 msgid "OK" msgstr "Peki" #: ../src/dialog.c:81 ../src/dialog.c:86 ../src/dialog.c:176 ../src/dialog.c:511 ../src/dock.c:383 msgid "Cancel" msgstr "Vazgeç" #: ../src/dialog.c:86 ../src/rootmenu.c:203 msgid "Exit" msgstr "Çıkış" #: ../src/dialog.c:98 msgid "Yes" msgstr "Evet" #: ../src/dialog.c:98 msgid "No" msgstr "Hayır" #: ../src/dialog.c:268 msgid "Could not open directory \"%s\":\n%s" msgstr "Dizin açılamadı \"%s\":\n%s" #: ../src/dialog.c:324 msgid "Could not load image file " msgstr "Görüntü dosyası yüklenemedi" #: ../src/dialog.c:450 msgid "Directories" msgstr "Dizinler" #: ../src/dialog.c:459 msgid "Icons" msgstr "Simgeler" #: ../src/dialog.c:494 msgid "File Name:" msgstr "Dosya İsmi:" #: ../src/dialog.c:517 msgid "Choose File" msgstr "Dosya Seçimi" #: ../src/dialog.c:527 msgid "Icon Chooser" msgstr "Simge Seçimi" #: ../src/dock.c:318 msgid "Command Arguments" msgstr "Komut parametreleri" #: ../src/dock.c:329 msgid "Command for files dropped by DND" msgstr "DND tarafından bırakılan dosyalar için komut" #: ../src/dock.c:341 msgid "%d will be replaced with the file name" msgstr "%d dosya ismi ile değiştirilecektir" #: ../src/dock.c:345 msgid "DND support was not compiled in" msgstr "DND desteği eklenmemiş." #: ../src/dock.c:351 msgid "Icon" msgstr "Simge" #: ../src/dock.c:363 ../src/winspector.c:1154 msgid "Browse..." msgstr "Tara..." #: ../src/dock.c:371 msgid "Launch this application automatically" msgstr "Bu uygulamayı otomatik başlat" #: ../src/dock.c:397 msgid "Docked Application Settings" msgstr "Demirlenmiş Uygulama Seçenekleri" #: ../src/dock.c:553 msgid "Workspace Clip" msgstr "Çalışma Alanı Atacı" #: ../src/dock.c:554 msgid "All selected icons will be removed!" msgstr "Tüm seçilen simgeler silinecek!" #: ../src/dock.c:601 msgid "Keep Icon" msgstr "Simgeyi tut" #: ../src/dock.c:602 ../src/dock.c:2076 ../src/dock.c:2192 msgid "Type the command used to launch the application" msgstr "Uygulamayı çalıştıracak komutu girin" #: ../src/dock.c:998 msgid "could not create workspace submenu for Clip menu" msgstr "Ataç menüsü altında çalışma alanı alt menüsü yaratılamadıo" #: ../src/dock.c:1056 msgid "could not create options submenu for Clip menu" msgstr "Ataç menüsü için seçenekler alt menüsü yaratılamadı" #: ../src/dock.c:1058 msgid "Floating Clip" msgstr "Görünür Ataç" #: ../src/dock.c:1064 msgid "Collapsed" msgstr "Toplanmış" #: ../src/dock.c:1070 msgid "AutoCollapse" msgstr "Kendiliğinden Topla" #: ../src/dock.c:1076 msgid "AutoAttract Icons" msgstr "Simgeleri Çek" #: ../src/dock.c:1082 msgid "Keep Attracted Icons" msgstr "Çekilen simgeleri tut" #: ../src/dock.c:1106 msgid "Floating Dock" msgstr "Simge Limanı" #: ../src/dock.c:1112 msgid "Clip Options" msgstr "Ataç Seçenekleri" #: ../src/dock.c:1117 msgid "(Un)Select Icon" msgstr "Simge Seç(me)" #: ../src/dock.c:1119 msgid "(Un)Select All Icons" msgstr "Tüm Simgeleri Seç(me)" #: ../src/dock.c:1122 msgid "Keep Icon(s)" msgstr "Simgeleri Tut" #: ../src/dock.c:1124 msgid "Move Icon(s) To" msgstr "Simgeleri Taşı" #: ../src/dock.c:1129 msgid "Remove Icon(s)" msgstr "Simgeleri Kaldır" #: ../src/dock.c:1131 msgid "Attract Icons" msgstr "Sİmgeleri çek" #: ../src/dock.c:1134 msgid "Launch" msgstr "Çalıştır" #: ../src/dock.c:1136 msgid "Settings..." msgstr "Seçenekler.." #: ../src/dock.c:1586 ../src/dock.c:1600 ../src/dock.c:1609 msgid "bad value in docked icon state info %s" msgstr "demirlenmiş simge durumunda yanlış değer %s" #: ../src/dock.c:1617 msgid "bad value in docked icon position %i,%i" msgstr "demirlenmiş simge konumunda yanlış değer %i,%i" #: ../src/dock.c:1846 msgid "there are too many icons stored in dock. Ignoring what doesn't fit" msgstr "Limana demirlenmiş çok fazla simge var. Sığmayanlarla ilgilenmiyorum" #: ../src/dock.c:2075 ../src/dock.c:2191 msgid "Dock Icon" msgstr "Liman Simgesi" #: ../src/dock.c:3099 ../src/dock.c:3103 msgid "Could not execute command \"%s\"" msgstr "\"%s\" komutu çalıştırılamadı" #: ../src/event.c:429 msgid "stack overflow: too many dead processes" msgstr "yığın taşması: Çok fazla ölü süreç." #: ../src/framewin.c:515 msgid "could not render gradient: %s" msgstr "%s renk geçisi hesaplanamadı" #: ../src/framewin.c:531 ../src/framewin.c:546 ../src/framewin.c:557 ../src/framewin.c:564 ../src/framewin.c:571 ../src/icon.c:282 ../src/texture.c:503 msgid "error rendering image:%s" msgstr "%s görüntüsünün hesaplanmasında hata" #: ../src/icon.c:562 msgid "could not find default icon \"%s\"" msgstr "öntanımlı simge \"%s\" bulunamadı" #: ../src/icon.c:569 msgid "could not load default icon \"%s\"" msgstr "öntanımlı simge \"%s\"yüklenemedi" #: ../src/main.c:163 msgid "Restart failed!!!" msgstr "Yeniden başlatma işlemi başarısız!" #: ../src/main.c:178 msgid "%s aborted.\n" msgstr "%s işleminden vazgeçildi.\n" #: ../src/main.c:189 msgid "usage: %s [-options]\n" msgstr "Kullanım: %s [-Seçenekler]\n" #: ../src/main.c:190 msgid "options:" msgstr "Seçenekler:" #: ../src/main.c:192 msgid " -nocpp \t\tdisable preprocessing of configuration files" msgstr " -nocpp \t\tYapılandırma dosyalarının önişlemesini durdur " #: ../src/main.c:194 msgid " -nodock\t\tdo not open the application Dock" msgstr " -nodock\t\tSimge Limanını çalıştırma" #: ../src/main.c:195 msgid " -noclip\t\tdo not open the workspace Clip" msgstr " -noclip\t\tçalışma alanı atacını çalıştırma" #. #. puts(_(" -locale locale locale to use")); #. #: ../src/main.c:199 msgid " -visualid visualid\tvisual id of visual to use" msgstr " -visualid visualid\tkullanılacak visual ID" #: ../src/main.c:200 msgid " -display host:dpy\tdisplay to use" msgstr " -display host:dpy\tkullanılacak ekran" #: ../src/main.c:201 msgid " -version\t\tprint version and exit" msgstr " -version\t\tsadece sürüm sayısını yaz ve çık" #: ../src/main.c:216 msgid "could not determine home directory" msgstr "kullanıcı dizini belirlenemedi" #: ../src/main.c:226 msgid "" "could not find user GNUstep directory.\n" "Make sure you have installed WindowMaker correctly and run wmaker.inst" msgstr "" "kullanıcı GNUstep dizini bulunamadı.\n" "WindowMaker'in doğru kurulduğundan emin olun ve wmaker.inst komutunu çalıştırın" #: ../src/main.c:246 msgid "%s:could not execute initialization script" msgstr "%s:yapılandırma betiği çalıştırılamadı" #: ../src/main.c:303 ../src/main.c:310 ../src/main.c:317 msgid "too few arguments for %s" msgstr "%s için çok az seçenek" #: ../src/main.c:321 msgid "bad value for visualid: \"%s\"" msgstr "visual ID için kötü değer:\"%s\"" #: ../src/main.c:366 msgid "X server does not support locale" msgstr "X sunucusu dil desteği vermiyor." #: ../src/main.c:369 msgid "cannot set locale modifiers" msgstr "Dil ayarlamaları yapılamadı." #: ../src/main.c:383 msgid "could not open display \"%s\"" msgstr "\"%s\"ekranı açılamadı" #: ../src/menu.c:281 msgid "wrealloc() failed while trying to add menu item" msgstr "Menü oluştururken wrealloc() hatası." #: ../src/misc.c:69 msgid "could not define value for %s for cpp" msgstr "Önişlemci için %s değeri tanımlanamadı" #: ../src/misc.c:99 msgid "could not get password entry for UID %i" msgstr "%i Kullanıcı kimliği için parola bilgisi alınamadı" #: ../src/misc.c:123 msgid "your machine is misconfigured. HOSTNAME is set to %s" msgstr "makinanızın yapılandırmasında hata var. HOSTNAME değeri %s" #: ../src/misc.c:129 msgid "your machine is misconfigured. HOST is set to %s" msgstr "makinanızın yapılandırmasında hata var. HOST değeri %s" #: ../src/misc.c:700 msgid "selection timed-out" msgstr "seçim zamanı bitti" #: ../src/misc.c:714 msgid "Program Arguments" msgstr "Yazılım Parametreleri" #: ../src/misc.c:733 msgid "Enter command arguments:" msgstr "Komut parametlerini girin:" #: ../src/misc.c:754 msgid "unable to get dropped data from DND drop" msgstr "DND drop işleminden veri okunanamadı" #: ../src/misc.c:762 msgid "error getting dropped data from DND drop" msgstr "DND drop işleminde hata oluştu" #: ../src/misc.c:768 msgid "out of memory while getting data from DND drop" msgstr "DND drop işlemi sırasında bellek bitti" #: ../src/misc.c:812 ../src/misc.c:931 msgid "out of memory during expansion of \"%s\"" msgstr "\"%s\" açılırken bellek bitti" #: ../src/misc.c:866 msgid "out of memory during expansion of \"%w\"" msgstr "\"%w\" açılırken bellek bitti" #: ../src/misc.c:885 msgid "out of memory during expansion of \"%a\"" msgstr "\"%a\" açılırken bellek bitti" #: ../src/misc.c:907 msgid "out of memory during expansion of \"%d\"" msgstr "\"%d\" açılırken bellek bitti" #: ../src/misc.c:919 msgid "selection not available" msgstr "seçilmiş bir şey yok" #: ../src/misc.c:997 ../src/misc.c:1003 msgid "bad window name value in %s state info" msgstr "%s durum bilgisinde kötü pencere ismi" #: ../src/pixmap.c:235 msgid "could not load mask bitmap file \"%s\". Won't use mask" msgstr "\"%s\" bitmap dosyası yüklenemedi. Onsuz çalışıyorum." #: ../src/resources.c:71 msgid "The following character sets are missing:" msgstr "Belirtilen yazı türleri bulunamadı:" #: ../src/resources.c:75 msgid "The string \"%s\" will be used in place" msgstr "Bulunmayan sembol için \"%s\" kullanılacak." #: ../src/resources.c:77 msgid "of any characters from those sets." msgstr "(tüm bulunamayan karakterler için)." #: ../src/resources.c:80 msgid "could not create font set %s. Trying fixed" msgstr "%s yazıtipi yaratılamıyor. Fixed deniyorum" #: ../src/resources.c:97 msgid "could not load font %s. Trying fixed" msgstr "%S yazıtipi yüklenemedi. Fİxed deniyorum" #: ../src/resources.c:135 msgid "could not parse color \"%s\"" msgstr "\"%s\" rengi yorumlanamadı" #: ../src/resources.c:139 msgid "could not allocate color \"%s\"" msgstr "\"%s\" rengi ayrılamadı" #: ../src/rootmenu.c:160 msgid "Program \"%s\" not found or cannot be executed." msgstr "\"%s\" programı bulunamadı ya da çalıştırılamadı" #: ../src/rootmenu.c:204 msgid "Exit window manager?" msgstr "Pencere Denetçisinden çıkmak mı istiyorsunuz ?" #: ../src/rootmenu.c:224 msgid "Close X session" msgstr "Oturumu kapat" #: ../src/rootmenu.c:225 msgid "" "Close Window System session?\n" "(all applications will be closed)" msgstr "" "Oturumu kapatayım mı?\n" "(Tüm uygulamalar durdurulacaktır)" #: ../src/rootmenu.c:227 msgid "Exiting...\n" msgstr "Çıkıyorum..\n" #: ../src/rootmenu.c:407 msgid "%s:invalid key modifier \"%s\"" msgstr "" #: ../src/rootmenu.c:421 msgid "%s:invalid kbd shortcut specification \"%s\"" msgstr "" #: ../src/rootmenu.c:429 msgid "%s:invalid key in shortcut \"%s\"" msgstr "" #: ../src/rootmenu.c:482 msgid "%s: unmatched '\"' in menu file" msgstr "%s: menü dosyasında '\"' eşlemem hatası" #: ../src/rootmenu.c:531 msgid "%s: missing command" msgstr "%s: eksik komut" #: ../src/rootmenu.c:564 msgid "invalid OPEN_MENU specification: %s" msgstr "geçersiz OPEN_MENU tanımı: %s" #: ../src/rootmenu.c:629 msgid "%s:could not stat menu" msgstr "%s:menüye erişilemedi" #: ../src/rootmenu.c:637 msgid "%s:could not stat menu :%s" msgstr "%s:menüye erişilemedi :%s" #: ../src/rootmenu.c:655 msgid "too many parameters in OPEN_MENU: %s" msgstr "OPEN?MENU için fazla parametre: %s" #: ../src/rootmenu.c:714 ../src/rootmenu.c:737 msgid "%s:missing parameter for menu command \"%s\"" msgstr "%s:menü komutu \"%s\" için eksik parametre" #: ../src/rootmenu.c:794 msgid "%s:unknown command \"%s\" in menu config." msgstr "%s: menü yapılandırmasında anlaşılamayan komut \"%s\"" #: ../src/rootmenu.c:802 msgid "%s:can't add shortcut for entry \"%s\"" msgstr "%s: \"%s\" girişi için kısayol eklenemiyor" #: ../src/rootmenu.c:934 msgid "%s:maximal line size exceeded in menu config: %s" msgstr "%s:menü yapılandırmasında satır boyu sınırı açıldı: %s" #: ../src/rootmenu.c:956 ../src/rootmenu.c:1048 ../src/rootmenu.c:1146 msgid "%s:missing command in menu config: %s" msgstr "%s: menü yapılandırmasında eksik komut: %s" #: ../src/rootmenu.c:986 msgid "%s:syntax error in menu file:END declaration missing" msgstr "%s: menü dosyasında hata: END tanımı bulunamıyor" #: ../src/rootmenu.c:1015 ../src/rootmenu.c:1111 msgid "could not make arguments for menu file preprocessor" msgstr "menü dosyası önişlemcisi için argüman hazırlanamadı" #: ../src/rootmenu.c:1021 ../src/rootmenu.c:1118 msgid "%s:could not open/preprocess menu file" msgstr "%s:menü dosyası açılamadı/işlenemedi" #: ../src/rootmenu.c:1033 ../src/rootmenu.c:1131 msgid "could not open menu file \"%s\": %s" msgstr "menü dosyası \"%s\" açılamadı: %s" #: ../src/rootmenu.c:1060 msgid "%s:invalid menu file" msgstr "%s:geçersiz menü dosyası" #: ../src/rootmenu.c:1158 msgid "%s:no title given for the root menu" msgstr "%s:ana menü için başlık verilmemiş" #: ../src/rootmenu.c:1212 ../src/rootmenu.c:1275 ../src/rootmenu.c:1319 msgid "out of memory while constructing directory menu %s" msgstr "dizin menüsü yaratılırken bellek bitti" #: ../src/rootmenu.c:1222 msgid "%s:could not stat file \"%s\" in menu directory" msgstr "%s: menü dizinindeki \"%s\" dosyasına erişilemedi" #: ../src/rootmenu.c:1368 msgid "Commands" msgstr "Komutlar" #: ../src/rootmenu.c:1370 msgid "Exit..." msgstr "Çıkış..." #: ../src/rootmenu.c:1404 msgid "%s:could not find menu file \"%s\"" msgstr "%s:menü dosyası \"%s\" bulunamadı" #: ../src/rootmenu.c:1410 msgid "%s:could not stat menu \"%s\"" msgstr "%s: \"%s\" menüsüne erişilemedi" #: ../src/rootmenu.c:1434 ../src/rootmenu.c:1481 msgid "%s:format error in root menu configuration \"%s\"" msgstr "%s:ana menü yapılandırmasında biçim hatası \"%s\"" #: ../src/screen.c:110 msgid "it seems that there already is a window manager running" msgstr "galiba başka bir pencere denetçisi çalışıyor" #: ../src/screen.c:346 msgid "could not load logo image for panels" msgstr "paneller için logo görüntüsü yüklenemedi" #: ../src/screen.c:349 msgid "error making logo image for panel:%s" msgstr "panel için logo görüntüsü yaratılırken hata oluştu:%s" #: ../src/screen.c:510 msgid "could not initialize graphics library context: %s" msgstr "grafik kitaplığı ile ilgili sorun: %s" #: ../src/session.c:113 ../src/wdefaults.c:555 ../src/winspector.c:323 msgid "can't convert \"%s\" to boolean" msgstr "\"%s\" ikili düzene çevrilemedi" #: ../src/stacking.c:88 msgid "could not get window list!!" msgstr "pencere dökümü alınamadı" #: ../src/startup.c:149 msgid "internal X error: %s\n" msgstr "dahili X hatası: %s\n" #: ../src/startup.c:189 msgid "got signal %i (%s) - restarting\n" msgstr "%i (%s) işareti alındı, yeniden başlatılıyor\n" #: ../src/startup.c:191 msgid "got signal %i - restarting\n" msgstr "%i işareti alındı, yeniden başlatılıyor\n" #: ../src/startup.c:198 msgid "%s: Received signal SIGTERM. Exiting..." msgstr "%s: SIGTERM işareti alındı. Çıkılıyor.." #: ../src/startup.c:207 msgid "got signal %i (%s)\n" msgstr "%i (%s) işareti alındı.\n" #: ../src/startup.c:209 msgid "got signal %i\n" msgstr "%i işareti alındı.\n" #. restart another window manager so that the X session doesn't #. * go to space #: ../src/startup.c:218 msgid "trying to start alternative window manager..." msgstr "alternatif pencere denetçisi çalıştırılıyor" #: ../src/switchmenu.c:124 msgid "Windows" msgstr "Pencereler" #: ../src/texture.c:260 msgid "image file \"%s\" used as texture could not be found." msgstr "Desen olarak kullanılan \"%s\" dosyası bulunamıyor" #: ../src/texture.c:266 msgid "could not load texture pixmap \"%s\":%s" msgstr "desen pixmap dosyası \"%s\" yüklenemiyor:%s" #: ../src/texture.c:362 ../src/texture.c:499 msgid "could not render texture: %s" msgstr "desen hesaplanamadı:%s" #: ../src/wdefaults.c:387 msgid "could not find icon file \"%s\"" msgstr "simge dosyası \"%s\" bulunamadı" #: ../src/winmenu.c:179 msgid "could not create workspace submenu for window menu" msgstr "pencere menüsü için çalışma alanı altmenüsü yaratılamadı" #: ../src/winmenu.c:201 msgid "(Un)Maximize" msgstr "Ekranı kapla" #: ../src/winmenu.c:202 msgid "Miniaturize" msgstr "Küçült" #: ../src/winmenu.c:211 msgid "(Un)Shade" msgstr "Katla/Aç" #: ../src/winmenu.c:219 msgid "Hide" msgstr "Sakla" #: ../src/winmenu.c:227 msgid "Hide Others" msgstr "Diğerlerini Sakla" #: ../src/winmenu.c:229 msgid "Select" msgstr "Seç" #: ../src/winmenu.c:231 msgid "Move To" msgstr "Aktar" #: ../src/winmenu.c:236 msgid "Attributes..." msgstr "Özellikler..." #: ../src/winmenu.c:238 msgid "Close" msgstr "Kapat" #: ../src/winspector.c:270 msgid "Could not find specified icon file" msgstr "Belirtilen simge dosyası bulunamadı" #: ../src/winspector.c:928 msgid "not enough memory to open window inspector panel" msgstr "pencere inceleme paneli için yeterli bellek yok" #: ../src/winspector.c:955 msgid "Save" msgstr "Sakla" #: ../src/winspector.c:961 msgid "Apply" msgstr "Uygula" #: ../src/winspector.c:967 msgid "Revert" msgstr "Geri al" #: ../src/winspector.c:976 ../src/winspector.c:984 msgid "Window Specification" msgstr "Pencere Tanımları" #: ../src/winspector.c:977 msgid "Window Attributes" msgstr "Pencere Özellikleri" #: ../src/winspector.c:978 msgid "Advanced Options" msgstr "İleri Seçenekler" #: ../src/winspector.c:979 msgid "Icon and Initial Workspace" msgstr "Simge ve Kullanıcı alanı" #: ../src/winspector.c:980 msgid "Application Specific" msgstr "Uygulamaya Özgü" #: ../src/winspector.c:1019 msgid "Defaults for all windows" msgstr "Tüm pencereler için öntanım" #: ../src/winspector.c:1027 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 "" "Bu yapılandırma kaydedildiğinde \n" "WM_CLASS özelliğini yukarıda seçili bulunan ismine ayarlamış tüm\n" "penceleri etkileyecektir.." #: ../src/winspector.c:1034 msgid "Attributes" msgstr "Özellikler" #: ../src/winspector.c:1044 msgid "Disable titlebar" msgstr "Başlık satırını kaldır" #: ../src/winspector.c:1048 msgid "Disable resizebar" msgstr "Boyutlandırma satırını kaldır" #: ../src/winspector.c:1052 msgid "Disable close button" msgstr "Kapatma tuşunu kaldır" #: ../src/winspector.c:1056 msgid "Disable miniaturize button" msgstr "Simgeleştir tulunu kaldır" #: ../src/winspector.c:1060 msgid "Keep on top" msgstr "En üstte tut" #: ../src/winspector.c:1064 msgid "Omnipresent" msgstr "Her zaman bulunsun" #: ../src/winspector.c:1068 msgid "Start Miniaturized" msgstr "Simge halinde çalışşın" #: ../src/winspector.c:1072 msgid "Skip window list" msgstr "Pencere listesine ekleme" #: ../src/winspector.c:1086 msgid "Advanced" msgstr "İleri" #: ../src/winspector.c:1096 msgid "Ignore HideOthers" msgstr "HideOthers tan etkilenme" #: ../src/winspector.c:1100 msgid "Don't bind keyboard shortcuts" msgstr "Kısayolları bağlama" #: ../src/winspector.c:1104 msgid "Don't bind mouse clicks" msgstr "Fare tıklamalarını bağlama" #: ../src/winspector.c:1108 msgid "Keep inside screen" msgstr "Ekran içinde tut" #: ../src/winspector.c:1112 msgid "No application icon" msgstr "Uygulama simgesi ekleme" #: ../src/winspector.c:1116 msgid "Don't let it take focus" msgstr "Focus almasına izin verme" #: ../src/winspector.c:1120 msgid "Don't Save Session" msgstr "Oturumu kaydetme" #: ../src/winspector.c:1135 msgid "Enable the \"Don't bind...\" options to allow the application to receive all mouse or keyboard events." msgstr "\"..bağlama\" seçeneklerini seçerek, uygulamanızın tüm fare ve klavye olaylarını yakalamasını sağlayın. " #: ../src/winspector.c:1142 msgid "Miniwindow Image" msgstr "Minipencere görüntüsü" #: ../src/winspector.c:1160 msgid "Update" msgstr "Güncelle" #: ../src/winspector.c:1165 msgid "Icon file name:" msgstr "Simge dosya ismi:" #: ../src/winspector.c:1175 msgid "Ignore client supplied icon" msgstr "Uygulamanın simgesini gözardı et" #: ../src/winspector.c:1181 msgid "Initial Workspace" msgstr "Başlama çalışma alanı" #: ../src/winspector.c:1188 msgid "Nowhere in particular" msgstr "Herhangi bir yerde" #: ../src/winspector.c:1219 msgid "Application Wide" msgstr "Uygulama Çapında" #: ../src/winspector.c:1229 msgid "Start Hidden" msgstr "Saklı Başlat" #: ../src/workspace.c:89 ../src/workspace.c:90 ../src/workspace.c:418 msgid "Workspace %i" msgstr "Çalışma alanı %i" #: ../src/workspace.c:442 msgid "Workspaces" msgstr "Çalışma Alanları" #: ../src/workspace.c:444 msgid "could not create Workspace menu" msgstr "Çalışma Alanı menüsü yaratılamadı" #: ../src/workspace.c:451 msgid "New" msgstr "Yeni" #: ../src/workspace.c:452 msgid "Destroy Last" msgstr "Sonucuyu sil" #: ../src/xutil.c:220 msgid "invalid data in selection" msgstr "Seçimde geçersiz veri" WindowMaker-0.95.9/po/no.po0000644000175000017500000005111213431646201012360 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: WindowMaker 0.80.2\n" "POT-Creation-Date: 1998-05-23 12:54+0200\n" "PO-Revision-Date: 1998-05-23 H12:54+0200\n" "Last-Translator: Marcus Ramberg \n" "Language-Team: Norwegian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" #: ../src/generic/error.c:46 msgid " fatal error: " msgstr " uopprettelig feil: " #: ../src/generic/error.c:72 msgid " warning: " msgstr " advarsel: " #: ../src/defaults.c:512 ../src/screen.c:494 ../src/screen.c:574 #: ../src/screen.c:580 #, c-format msgid "could not read domain \"%s\" from defaults database" msgstr "kunne ikke lese domenet \"%s\" fra oppsetts-databasen" #: ../src/defaults.c:876 ../src/wdefaults.c:401 ../src/winspector.c:496 #, c-format msgid "can't convert \"%s\" to boolean" msgstr "kan ikke konvertere \"%s\" til boolean" #: ../src/defaults.c:949 ../src/defaults.c:1281 ../src/defaults.c:1314 #: ../src/wdefaults.c:383 ../src/wdefaults.c:416 #, c-format msgid "Wrong option format for key \"%s\". Should be %s." msgstr "Feil konfigurasjonsformat for nøkkel \"%s\". Skulle ha vært %s." #: ../src/defaults.c:999 #, c-format msgid "Invalid focus mode \"%s\". Should be Manual, Auto or SemiAuto." msgstr "\"%s\". er en ugyldig fokus modus. Må være Manual, Auto eller SemiAuto." #: ../src/defaults.c:1034 #, c-format msgid "Invalid window placement mode \"%s\". Should be Auto, Cascade, Random or Manual." msgstr "\"%s\". er en ugyldig modus for vindusplassering. Gyldige valg er Auto, Cascade, Random eller Manual." #: ../src/defaults.c:1068 #, c-format msgid "" "Invalid geometry display type \"%s\". Should be Center, Corner, Floating or " "Line." msgstr "" "\"%s\". er et ugyldig geometri valg. Gyldige valg er Center, Corner," "Floating eller Line" #: ../src/defaults.c:1130 ../src/defaults.c:1161 ../src/defaults.c:1173 #: ../src/defaults.c:1214 ../src/defaults.c:1250 ../src/defaults.c:1353 #: ../src/resources.c:135 #, c-format msgid "could not parse color \"%s\"" msgstr "\"%s\" Er en ugyldig farge" #: ../src/defaults.c:1142 msgid "bad number of arguments in gradient specification" msgstr "Feil antall argumenter i definisjon av fargeovergangen" #: ../src/defaults.c:1188 msgid "too few arguments in multicolor gradient specification" msgstr "For få argumenter i definisjon flerfarges fargeovergangen" #: ../src/defaults.c:1289 ../src/defaults.c:1378 #, c-format msgid "Error in texture specification for key \"%s\"" msgstr "Feil i tekstur definisjonen for nøkkel \"%s\"" #: ../src/defaults.c:1408 #, c-format msgid "Invalid justification type \"%s\". Should be Left, Center or Right" msgstr "\"%s\" Er en ugyldig justering. Må være Left, Center eller Høyre" #: ../src/defaults.c:1436 msgid "could not load any usable font" msgstr "Kunne ikke finne noen fonter" #: ../src/defaults.c:1515 #, c-format msgid "invalid key modifier \"%s\"" msgstr "\"%s\" er et ugyldig nøkkel argument" #: ../src/defaults.c:1527 #, c-format msgid "invalid kbd shortcut specification \"%s\"" msgstr "\"%s\" er en ugyldig tastatur-kombinasjon" #: ../src/defaults.c:1533 #, c-format msgid "invalid key in shortcut \"%s\"" msgstr "ugyldig tast i tastatur-kombinasjonen \"%s\"" #: ../src/defaults.c:1619 msgid "could not render texture for icon background" msgstr "Kunne ikke bruke tekstur for ikon bakgrunnen" #: ../src/defaults.c:1949 msgid "could not render texture for workspace background" msgstr "kunne ikke bruke tekstur for bakgrunn i arbeidsområde" #: ../src/dialog.c:74 ../src/dialog.c:86 ../src/dialog.c:134 msgid "OK" msgstr "OK" #: ../src/dialog.c:74 ../src/dialog.c:79 ../src/dialog.c:134 msgid "Cancel" msgstr "Avbryt" #: ../src/dialog.c:79 ../src/rootmenu.c:152 msgid "Exit" msgstr "Avslutt" #: ../src/dock.c:316 ../src/dock.c:351 ../src/dock.c:1341 msgid "Dock Icon" msgstr "dock ikon" #: ../src/dock.c:317 msgid "Enter command for the docked application:" msgstr "Skriv inn kommando for applikasjonen" #: ../src/dock.c:352 msgid "Enter command for dropped objects:" msgstr "Skriv kommando for DND objekter" #: ../src/dock.c:484 msgid "Floating Fiend" msgstr "Flytende Binders" #: ../src/dock.c:487 msgid "Floating Dock" msgstr "Flytende Dock" #: ../src/dock.c:494 msgid "Collapsed" msgstr "Kollapset" #: ../src/dock.c:501 msgid "Launch" msgstr "Start" #: ../src/dock.c:503 msgid "Autolaunch" msgstr "Autostart" #: ../src/dock.c:509 msgid "Set arguments..." msgstr "Sett argumenter..." #: ../src/dock.c:512 msgid "Set drop arguments..." msgstr "DND argumenter..." #: ../src/dock.c:516 ../src/winmenu.c:243 msgid "Kill" msgstr "Avslutt" #: ../src/dock.c:841 ../src/dock.c:847 msgid "bad window name value in dock state info" msgstr "ugyldig verdi for vindusnavn i dock status info" #: ../src/dock.c:935 ../src/dock.c:947 #, c-format msgid "bad value in docked icon state info %s" msgstr "ugyldig verdi i status info for docket ikon %s" #: ../src/dock.c:1074 msgid "there are too many icons stored in dock. Ignoring what doesn't fit" msgstr "For mange ikoner lagret i docken. Ignorerer de som ikke passer" #: ../src/dock.c:1342 msgid "Command:" msgstr "Kommando:" #: ../src/dock.c:1855 ../src/dock.c:1859 #, c-format msgid "Could not execute command \"%s\"" msgstr "Kunne ikke utføre \"%s\"" #: ../src/dock.c:1862 ../src/rootmenu.c:122 ../src/winspector.c:384 #: ../src/winspector.c:392 msgid "Error" msgstr "Feil" #: ../src/event.c:467 msgid "stack overflow: too many dead processes" msgstr "stacken er full: for mange døde prossesser" #: ../src/framewin.c:601 ../src/framewin.c:722 #, c-format msgid "could not render gradient: %s" msgstr "kunne ikke bruke fargeovergangen: %s" #: ../src/framewin.c:619 ../src/framewin.c:638 ../src/framewin.c:652 #: ../src/framewin.c:662 ../src/framewin.c:732 ../src/icon.c:248 #: ../src/texture.c:551 #, c-format msgid "error rendering image:%s" msgstr "feil i opptegning av %s" #: ../src/icon.c:437 #, c-format msgid "could not find default icon \"%s\"" msgstr "kunne ikke finne standard ikonet \"%s\"" #: ../src/icon.c:444 #, c-format msgid "could not load default icon \"%s\"" msgstr "Kunne ikke laste standard ikonet \"%s\"" #: ../src/main.c:163 msgid "Restart failed!!!" msgstr "Kunne ikke starte på nytt!!!" #: ../src/main.c:178 #, c-format msgid "%s aborted.\n" msgstr "%s avbrutt.\n" #: ../src/main.c:186 #, c-format msgid "usage: %s [-options]\n" msgstr "bruk: %s [-argumenter]\n" #: ../src/main.c:187 msgid "options:" msgstr "argumenter:" #: ../src/main.c:189 msgid " -nocpp \t\tdisable preprocessing of configuration files" msgstr "-nocpp \t\tskru av prosessering av konfigurasjonsfiler" #: ../src/main.c:192 msgid " -nodock\t\tdo not open the application Dock" msgstr "-nodock\t\tIkke åpne docken" #: ../src/main.c:193 msgid " -nofiend\t\tdo not open the application Fiend" msgstr "-nofiend\t\tIkke åpne binders" #. #. puts(_(" -locale locale locale to use")); #. puts(_(" -visualid visualid visual id of visual to use")); #. #: ../src/main.c:199 msgid " -display host:dpy\tdisplay to use" msgstr "- display maskin:dpy\t display du ønker å bruke" #: ../src/main.c:200 msgid " -version\t\tprint version and exit" msgstr "-version\t\\t skriv versjonsnummer og avslutt" #: ../src/main.c:215 msgid "could not determine home directory" msgstr "kunne ikke finne hjemmekatalogen" #: ../src/main.c:225 msgid "" "could not find user GNUstep directory.\n" "Make sure you have installed WindowMaker correctly and run wmaker.inst" msgstr "" "kunne ikke finne brukerens GNUstep katalog.\n" "Kontroller at du har installert WindowMaker rett og kjør wmaker.inst" #: ../src/main.c:245 #, c-format msgid "%s:could not execute initialization script" msgstr "%s:Kunne ikke utføre oppstarts-skript" #: ../src/main.c:303 ../src/main.c:310 ../src/main.c:317 #, c-format msgid "too few arguments for %s" msgstr "for få argumenter for %s" #: ../src/main.c:321 #, c-format msgid "bad value for visualid: \"%s\"" msgstr "ugyldig verdi for visualid: \"%s\"" #: ../src/main.c:366 msgid "X server does not support locale" msgstr "X serveren støtter ikke språkdefinisjon" #: ../src/main.c:369 msgid "cannot set locale modifiers" msgstr "kan ikke sette lokale verdier" #: ../src/main.c:383 #, c-format msgid "could not open display \"%s\"" msgstr "Kunne ikke åpne display \"%s\"" #: ../src/menu.c:274 msgid "wrealloc() failed while trying to add menu item" msgstr "wrealloc() feilet under oppbyging av menyen" #: ../src/misc.c:65 #, c-format msgid "could not define value for %s for cpp" msgstr "Kunne ikke definere verdi for %s i cpp" #: ../src/misc.c:95 #, c-format msgid "could not get password entry for UID %i" msgstr "Kunne ikke finne passord linje for uID %i" #: ../src/misc.c:119 #, c-format msgid "your machine is misconfigured. HOSTNAME is set to %s" msgstr "Din maskin er feilkonfigurert. HOSTNAME er satt til %s" #: ../src/misc.c:125 #, c-format msgid "your machine is misconfigured. HOST is set to %s" msgstr "Din maskin er feilkonfigurert. HOST er satt til %s" #: ../src/misc.c:533 #, c-format msgid "could not find icon file \"%s\"" msgstr "Kunne ikke finne ikon fil \"%s\"" #: ../src/misc.c:622 msgid "selection timed-out" msgstr "utvalg fikk time-out" #: ../src/misc.c:636 msgid "Program Arguments" msgstr "Argumenter til Program" #: ../src/misc.c:655 msgid "Enter command arguments:" msgstr "Skriv inn argumenter:" #: ../src/misc.c:676 msgid "unable to get dropped data from DND drop" msgstr "Kan ikke motta data fra DND slipp" #: ../src/misc.c:685 msgid "error getting dropped data from DND drop" msgstr "Feil i mottak av data fra DND slipp" #: ../src/misc.c:691 msgid "out of memory while getting data from DND drop" msgstr "Gikk tom for minne mens data ble hentet fra DND slipp" #: ../src/misc.c:735 ../src/misc.c:854 #, c-format msgid "out of memory during expansion of \"%s\"" msgstr "Gikk tom for minne mens vi ekspanderte \"%s\"" #: ../src/misc.c:789 msgid "out of memory during expansion of \"%w\"" msgstr "Gikk tom for minne mens vi ekspanderte \"%w\"" #: ../src/misc.c:808 msgid "out of memory during expansion of \"%a\"" msgstr "Gikk tom for minne mens vi ekspanderte \"%a\"" #: ../src/misc.c:830 #, c-format msgid "out of memory during expansion of \"%d\"" msgstr "Gikk tom for minne mens vi ekspanderte \"%d\"" #: ../src/misc.c:842 msgid "selection not available" msgstr "Utvalg ikke tilgjengelig" #: ../src/pixmap.c:230 #, c-format msgid "could not load mask bitmap file \"%s\". Won't use mask" msgstr "Kunne ikke laste bitmap fil \"%s\". Bruker ikke mask" #: ../src/resources.c:71 msgid "The following character sets are missing:" msgstr "De følgende tegn settende mangler:" #: ../src/resources.c:75 #, c-format msgid "The string \"%s\" will be used in place" msgstr "Setningen \"%s\" vil bli brukt isteden" #: ../src/resources.c:77 msgid "of any characters from those sets." msgstr "av noen tegn fra disse tegnsettene." #: ../src/resources.c:80 #, c-format msgid "could not create font set %s. Trying fixed" msgstr "Kunne ikke lage fontsett %s. Prøver fixed" #: ../src/resources.c:97 #, c-format msgid "could not load font %s. Trying fixed" msgstr "Kunne ikke laste font %s. Prøver fixed" #: ../src/resources.c:139 #, c-format msgid "coult not allocate color \"%s\"" msgstr "Kunne ikke allokere fargen \"%s\"" #: ../src/rootmenu.c:120 #, c-format msgid "Program \"%s\" not found or cannot be executed." msgstr "Programmet \"%s\" kan ikke finnes/utføres." #: ../src/rootmenu.c:153 msgid "Exit window manager?" msgstr "Avslutt window manager?" #: ../src/rootmenu.c:173 msgid "Close X session" msgstr "Avslutt X" #: ../src/rootmenu.c:174 msgid "" "Close Window System session?\n" "(all applications will be closed)" msgstr "" "Avslutt Vindu Systemet?\n" "(alle programmer vil bli avsluttet)" #: ../src/rootmenu.c:176 msgid "Exiting...\n" msgstr "Avslutter...\n" #: ../src/rootmenu.c:315 #, c-format msgid "invalid OPEN_MENU specification: %s" msgstr "ugyldig OPEN_MENU spesifikasjon: %s" #: ../src/rootmenu.c:356 #, c-format msgid "%s:could not stat menu" msgstr "%s:kunne ikke sjekke meny" #: ../src/rootmenu.c:378 #, c-format msgid "extra parameters to OPEN_MENU: %s" msgstr "ekstra parametere til OPEN_MENU: %s" #: ../src/rootmenu.c:434 ../src/rootmenu.c:451 #, c-format msgid "%s:missing parameter for menu command \"%s\"" msgstr "%s: Meny komandoen \"%s\" mangler et parameter" #: ../src/rootmenu.c:492 #, c-format msgid "%s:unknown command \"%s\" in menu config." msgstr "%s:Ugyldig kommando \"%s\" i meny konfig" #: ../src/rootmenu.c:591 #, c-format msgid "%s:maximal line size exceeded in menu config: %s" msgstr "%s: Går ut over maksimal linestørrelse i meny konfig: %s" #: ../src/rootmenu.c:611 #, c-format msgid "%s:missing command in menu config: %s" msgstr "%s: manglende kommando i meny konfig: %s" #: ../src/rootmenu.c:640 #, c-format msgid "%s:syntax error in menu file:END declaration missing" msgstr "%s: syntaks feil i meny filen:END deklarasjonen mangler" #: ../src/rootmenu.c:668 ../src/rootmenu.c:747 msgid "could not make arguments for menu file preprocessor" msgstr "kunne ikke lage argumenter for meny fil behandleren" #: ../src/rootmenu.c:674 ../src/rootmenu.c:754 #, c-format msgid "%s:could open/preprocess menu file" msgstr "%s:kunne ikke åpne/behandle meny filen" #: ../src/rootmenu.c:685 ../src/rootmenu.c:767 #, c-format msgid "could not open menu file \"%s\": %s" msgstr "kunne ikke åpne meny filen \"%s\": %s" #: ../src/rootmenu.c:698 #, c-format msgid "%s:syntax error in menu config: %s" msgstr "%s:syntaks feil i meny konfigen: %s" #: ../src/rootmenu.c:708 ../src/rootmenu.c:790 #, c-format msgid "%s:no title given for the root menu" msgstr "%s: Ingen tittel oppgitt for hovedmenyen" #: ../src/rootmenu.c:780 #, c-format msgid "%s:syntax error in menu config. %s" msgstr "%s: ugyldig syntaks i meny konfigen. %s" #: ../src/rootmenu.c:815 #, c-format msgid "%s:could not read menu directory" msgstr "%s:kunne ikke lese meny katalog" #: ../src/rootmenu.c:829 ../src/rootmenu.c:851 #, c-format msgid "out of memory while constructing directory menu %s" msgstr "Gikk tom for minne mens katalog menyen %s ble konstruert" #: ../src/rootmenu.c:839 #, c-format msgid "%s:could not stat file \"%s\" in menu directory" msgstr "%s: kunne ikke undersøke filen \"%s\" i meny katalogen" #: ../src/rootmenu.c:871 #, c-format msgid "out of memory while constructing menu entry %s" msgstr "Tom for minne under opprettelse av meny gjenstand %s" #: ../src/rootmenu.c:913 msgid "Commands" msgstr "Kommandoer" #: ../src/rootmenu.c:915 msgid "Exit..." msgstr "Avslutt..." #: ../src/rootmenu.c:949 #, c-format msgid "%s:could not find menu file \"%s\"" msgstr "%s:kunne ikke finne meny filen \"%s\"" #: ../src/rootmenu.c:955 #, c-format msgid "%s:could not stat menu \"%s\"" msgstr "%s:kunne ikke undersøke meny \"%s\"" #: ../src/rootmenu.c:979 ../src/rootmenu.c:1026 #, c-format msgid "%s:format error in root menu configuration \"%s\"" msgstr "%s:Formaterings feil i konfigurasjonen av hovedmenyen \"%s\"" #: ../src/screen.c:89 msgid "it seems that there already is a window manager running" msgstr "det ser ut til at en window manager allerede kjører" #: ../src/screen.c:372 msgid "could not load logo image for panels" msgstr "kunne ikke laste logo for panelene" #: ../src/screen.c:375 #, c-format msgid "error making logo image for panel:%s" msgstr "kunne ikke konstruere logo for panel:%s" #: ../src/screen.c:546 #, c-format msgid "could not initialize graphics library context: %s" msgstr "kunne ikk initalisere grafikk biblioteket: %s" #: ../src/stacking.c:89 ../src/stacking.c:148 msgid "could not get window list!!" msgstr "kunne ikke hente vindusliste!!" #: ../src/startup.c:140 #, c-format msgid "internal X error: %s\n" msgstr "intern X feil: %s\n" #: ../src/startup.c:157 #, c-format msgid "got signal %i (%s) - restarting\n" msgstr "mottok %i (%s) signal - starter på nytt\n" #: ../src/startup.c:159 #, c-format msgid "got signal %i - restarting\n" msgstr "mottok %i signal - starter på nytt\n" #: ../src/startup.c:167 #, c-format msgid "got signal %i (%s)\n" msgstr "mottok %i (%s) signal\n" #: ../src/startup.c:169 #, c-format msgid "got signal %i\n" msgstr "mottok %i signal\n" #: ../src/switchmenu.c:131 msgid "Windows" msgstr "Vinduer" #: ../src/texture.c:252 #, c-format msgid "image file \"%s\" used as texture could not be found." msgstr "bildet \"%s\" brukt som tekstur, kunne ikke finnes." #: ../src/texture.c:257 #, c-format msgid "could not load texture pixmap \"%s\":%s" msgstr "Kunne ikke laste tekstur pixmap \"%s\":%s" #: ../src/texture.c:351 ../src/texture.c:547 #, c-format msgid "could not render texture: %s" msgstr "kunne ikke bruke teksturen: %s" #: ../src/winmenu.c:169 msgid "could not create workspace submenu for window menu" msgstr "Kunne ikke lage Arbeidsområde undermeny for vindusmenyen" #: ../src/winmenu.c:186 msgid "(Un)Maximize" msgstr "(U)Maksimer" #: ../src/winmenu.c:188 msgid "Miniaturize" msgstr "Minimer" #: ../src/winmenu.c:198 msgid "(Un)Shade" msgstr "(U)Shade" #: ../src/winmenu.c:207 msgid "Hide" msgstr "Skjul" #: ../src/winmenu.c:215 msgid "Hide Others" msgstr "Skjul Andre" #: ../src/winmenu.c:218 msgid "Select" msgstr "Velg" #: ../src/winmenu.c:227 msgid "Move To" msgstr "Flytt til" #: ../src/winmenu.c:232 msgid "Attributes..." msgstr "Attributter..." #: ../src/winmenu.c:235 msgid "Close" msgstr "Lukk" #: ../src/winspector.c:385 msgid "Could not find specified icon file" msgstr "Kunne ikke finne denne ikon filen" #: ../src/winspector.c:393 msgid "Could not open specified icon file" msgstr "Kunne ikke åpne denne ikon filen" #: ../src/winspector.c:974 msgid "not enough memory to open window inspector panel" msgstr "Ikke nok ledig minne til å åpne window inspector panelet" #: ../src/winspector.c:1002 msgid "Save" msgstr "Lagre" #: ../src/winspector.c:1008 msgid "Apply" msgstr "Utfør" #: ../src/winspector.c:1015 msgid "Revert" msgstr "Angre" #. *** window spec *** #: ../src/winspector.c:1046 msgid "Window Specification" msgstr "Vindu Spesifikasjon" #: ../src/winspector.c:1077 msgid "Defaults for all windows" msgstr "Standard for alle vinduer" #: ../src/winspector.c:1082 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 "" "Denne konfigurasjonen vill gjelde for\n" "alle vinduer som har WM_CLASS attributten satt til det navnet som er valgt" "over, når du lager." #. *** attributes *** #: ../src/winspector.c:1090 msgid "Attributes" msgstr "Attributter" #: ../src/winspector.c:1097 msgid "Disable titlebar" msgstr "Skru av tittelbar" #: ../src/winspector.c:1101 msgid "Disable resizebar" msgstr "Skru av resizebar" #: ../src/winspector.c:1105 msgid "Not closable" msgstr "Ikke lukkbar" #: ../src/winspector.c:1109 msgid "Not miniaturizable" msgstr "Ikke minimerbar" #: ../src/winspector.c:1113 msgid "Keep on top" msgstr "Alltid på topp" #: ../src/winspector.c:1117 msgid "Omnipresent" msgstr "Alle Arbeidsområder" #: ../src/winspector.c:1121 msgid "Don't let it take focus" msgstr "Ikke la den ta fokus" #: ../src/winspector.c:1125 msgid "Skip window list" msgstr "Hopp over i vindusliste" #. *** more attributes *** #: ../src/winspector.c:1137 msgid "Advanced" msgstr "Avansert" #: ../src/winspector.c:1144 msgid "Ignore HideOthers" msgstr "Ignorer Skjul Andre" #: ../src/winspector.c:1148 msgid "Don't bind keyboard shortcuts" msgstr "Ikke tillat taste-kombinasjoner" #: ../src/winspector.c:1152 msgid "Don't bind mouse clicks" msgstr "Ikke tillat musklikk" #: ../src/winspector.c:1156 msgid "Keep inside screen" msgstr "Hold innenfor skjermen" #: ../src/winspector.c:1160 msgid "No application icon" msgstr "Ikke gi applikasjons-ikon" #. miniwindow/workspace #: ../src/winspector.c:1172 msgid "Miniwindow Image" msgstr "Bilde for minivindu" #: ../src/winspector.c:1178 msgid "Browse" msgstr "Søk" #. WMBindEvent(panel->defaultIconBtn, WEV_CLICK, defaultIcon, panel); #: ../src/winspector.c:1185 msgid "Update" msgstr "Oppdater" #: ../src/winspector.c:1192 msgid "Icon file name:" msgstr "Ikon filnavn:" #: ../src/winspector.c:1200 msgid "Ignore client supplied icon" msgstr "Ignorer innebygget ikon" #: ../src/winspector.c:1205 msgid "Initial Workspace" msgstr "Opprinnelig Arbeidsområde" #: ../src/winspector.c:1227 msgid "Current workspace" msgstr "Nåværende Arbeidsområde" #: ../src/workspace.c:91 ../src/workspace.c:92 ../src/workspace.c:359 #, c-format msgid "Workspace %i" msgstr "Arbeidsområde %i" #: ../src/workspace.c:385 msgid "Workspaces" msgstr "Arbeidsområder" #: ../src/workspace.c:387 msgid "could not create Workspace menu" msgstr "Kunne ikke opprette meny for Arbeidsområde" #: ../src/workspace.c:394 msgid "New" msgstr "Ny" #: ../src/workspace.c:395 msgid "Destroy Last" msgstr "Fjern Siste" WindowMaker-0.95.9/po/nl.po0000644000175000017500000016377313431646201012376 00000000000000# New translation into Dutch for Window Maker # Copyright (C) 2014-2016 Window Maker Developers Team # This file is distributed under the same license as the windowmaker package. # Original by Alwin , 2014. # msgid "" msgstr "" "Project-Id-Version: wmaker-0.95.7+\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-01-21 16:19+0100\n" "PO-Revision-Date: 2016-01-21 00:00+0000\n" "Last-Translator: Alwin \n" "Language-Team: Dutch\n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../src/actions.c:1067 #, c-format msgid "window \"%s\" has a severely broken WM_TRANSIENT_FOR hint" msgstr "venster \"%s\" heeft 'n ernstig beschadigde WM_TRANSIENT_FOR-hint" #: ../src/actions.c:1177 #, c-format msgid "creation of mini-preview failed for window \"%s\"" msgstr "miniatuur aanmaken mislukt voor venster \"%s\"" #: ../src/appicon.c:539 ../src/dialog.c:583 ../src/dock.c:3370 #: ../src/dockedapp.c:171 ../src/main.c:292 ../src/rootmenu.c:1670 #: ../src/winspector.c:472 ../src/winspector.c:488 ../src/workspace.c:150 msgid "Error" msgstr "Fout" #: ../src/appicon.c:540 msgid "Could not open specified icon file" msgstr "Kon opgegeven icoonbestand niet openen" #: ../src/appicon.c:541 ../src/dialog.c:428 ../src/dialog.c:489 #: ../src/dialog.c:583 ../src/dialog.c:994 ../src/dialog.c:1660 #: ../src/dock.c:452 ../src/dock.c:459 ../src/dock.c:506 ../src/dock.c:3370 #: ../src/dock.c:4501 ../src/dockedapp.c:172 ../src/dockedapp.c:345 #: ../src/main.c:292 ../src/rootmenu.c:1673 ../src/winspector.c:472 #: ../src/winspector.c:488 ../src/winspector.c:821 ../src/workspace.c:150 msgid "OK" msgstr "OK" #: ../src/appicon.c:571 ../src/dock.c:229 msgid "" " will be forcibly closed.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" " zal gedwongen worden afgesloten.\n" "Niet-opgeslagen wijzigingen zullen verloren gaan.\n" "Bevestig a.u.b." #: ../src/appicon.c:578 ../src/dock.c:247 ../src/winmenu.c:253 msgid "Kill Application" msgstr "Programma doden" #: ../src/appicon.c:579 ../src/dock.c:248 ../src/winmenu.c:256 msgid "Yes" msgstr "Ja" #: ../src/appicon.c:579 ../src/dock.c:248 ../src/winmenu.c:256 msgid "No" msgstr "Nee" #: ../src/appicon.c:604 ../src/dock.c:1278 ../src/dock.c:3551 msgid "Unhide Here" msgstr "Hier terugplaatsen" #: ../src/appicon.c:605 ../src/appicon.c:629 ../src/dock.c:1280 #: ../src/dock.c:1282 ../src/dock.c:3563 ../src/winmenu.c:88 msgid "Hide" msgstr "Verbergen" #: ../src/appicon.c:606 ../src/dock.c:1276 ../src/winmenu.c:94 msgid "Launch" msgstr "Opstarten" #: ../src/appicon.c:607 msgid "Set Icon..." msgstr "Icoon instellen..." #: ../src/appicon.c:608 ../src/dock.c:1286 ../src/dock.c:1288 #: ../src/dock.c:3581 ../src/rootmenu.c:233 ../src/winmenu.c:96 msgid "Kill" msgstr "Doden" #: ../src/appicon.c:627 ../src/dock.c:3561 msgid "Unhide" msgstr "Terugplaatsen" #: ../src/appmenu.c:94 ../src/appmenu.c:110 ../src/appmenu.c:126 #: ../src/appmenu.c:136 ../src/appmenu.c:173 ../src/appmenu.c:195 #, c-format msgid "appmenu: bad menu entry \"%s\" in window %lx" msgstr "programmamenu: verkeerde menu-ingang \"%s\" in venster %lx" #: ../src/appmenu.c:98 #, c-format msgid "appmenu: menu command size exceeded in window %lx" msgstr "programmamenu: menucommandolengte overschreden in venster %lx" #: ../src/appmenu.c:144 ../src/appmenu.c:154 ../src/appmenu.c:187 #, c-format msgid "appmenu: out of memory creating menu for window %lx" msgstr "programmamenu: geheugentekort bij menu aanmaken voor venster %lx" #: ../src/appmenu.c:219 #, c-format msgid "appmenu: unknown version of WMMenu in window %lx: %s" msgstr "programmamenu: onbekende WMMenu-versie in venster %lx: %s" #: ../src/defaults.c:881 #, c-format msgid "Domain %s (%s) of global defaults database is corrupted!" msgstr "Domein %s (%s) uit algemene instellingendatabase is beschadigd!" #: ../src/defaults.c:885 #, c-format msgid "could not load domain %s from global defaults database" msgstr "kon domein %s niet laden uit algemene instellingendatabase" #: ../src/defaults.c:930 ../src/defaults.c:944 #, c-format msgid "invalid global menu file %s" msgstr "ongeldig algemeen menubestand %s" #: ../src/defaults.c:979 ../src/defaults.c:1058 ../src/defaults.c:1097 #: ../src/defaults.c:1138 #, c-format msgid "Domain %s (%s) of defaults database is corrupted!" msgstr "Domein %s (%s) uit instellingendatabase is beschadigd!" #: ../src/defaults.c:983 ../src/defaults.c:1080 ../src/defaults.c:1124 #: ../src/defaults.c:1148 #, c-format msgid "could not load domain %s from user defaults database" msgstr "kon domein %s niet laden uit gebruikers-instellingendatabase" #: ../src/defaults.c:1233 msgid "" "your configuration is using old syntax for Mini-Preview settings; consider " "running WPrefs.app to update" msgstr "" "uw configuratie gebruikt de oude syntax voor miniatuurinstellingen; voer " "WPrefs.app uit om bij te werken" #. --------------------------- Local ----------------------- #: ../src/defaults.c:1342 ../src/defaults.c:1471 ../src/defaults.c:1566 #: ../src/defaults.c:1974 ../src/defaults.c:1990 ../src/defaults.c:2035 #: ../src/defaults.c:2084 ../src/defaults.c:2502 ../src/wdefaults.c:639 #: ../src/wdefaults.c:668 #, c-format msgid "Wrong option format for key \"%s\". Should be %s." msgstr "Verkeerde optievorm voor 'key' \"%s\". Moet %s zijn." #: ../src/defaults.c:1344 ../src/defaults.c:1420 ../src/defaults.c:1448 #: ../src/defaults.c:1475 ../src/defaults.c:1487 ../src/defaults.c:1501 #: ../src/defaults.c:1515 ../src/defaults.c:1570 ../src/defaults.c:1582 #: ../src/defaults.c:1978 ../src/defaults.c:1995 ../src/defaults.c:2007 #: ../src/defaults.c:2040 ../src/defaults.c:2056 ../src/defaults.c:2089 #: ../src/defaults.c:2172 ../src/defaults.c:2507 ../src/defaults.c:2518 #, c-format msgid "using default \"%s\" instead" msgstr "gebruikt standaard \"%s\" in plaats daarvan" #: ../src/defaults.c:1371 #, c-format msgid "wrong option value for key \"%s\"; got \"%s\", should be one of %s." msgstr "" "verkeerde optiewaarde voor 'key' \"%s\"; kreeg \"%s\", moet een van %s zijn." #: ../src/defaults.c:1416 #, c-format msgid "can't convert \"%s\" to boolean for key \"%s\"" msgstr "kan \"%s\" niet omzetten naar 'boolean' voor 'key' \"%s\"" #: ../src/defaults.c:1446 #, c-format msgid "can't convert \"%s\" to integer for key \"%s\"" msgstr "kan \"%s\" niet omzetten naar 'integer' voor 'key' \"%s\"" #: ../src/defaults.c:1483 #, c-format msgid "Incorrect number of elements in array for key \"%s\"." msgstr "Onjuist aantal elementen in 'array' voor 'key' \"%s\"." #: ../src/defaults.c:1497 #, c-format msgid "Wrong value for key \"%s\". Should be Coordinate." msgstr "Verkeerde waarde voor 'key' \"%s\". Moet coördinaat zijn." #: ../src/defaults.c:1511 #, c-format msgid "can't convert array to integers for \"%s\"." msgstr "kan 'array' niet omzetten naar 'integers' voor \"%s\"." #: ../src/defaults.c:1688 ../src/defaults.c:1718 ../src/defaults.c:1734 #: ../src/defaults.c:1763 ../src/defaults.c:1785 ../src/defaults.c:1836 #: ../src/defaults.c:1875 ../src/defaults.c:1912 ../src/defaults.c:1928 #, c-format msgid "\"%s\" is not a valid color name" msgstr "\"%s\" is geen geldige kleurnaam" #: ../src/defaults.c:1700 ../src/defaults.c:1751 msgid "bad number of arguments in gradient specification" msgstr "verkeerd aantal argumenten in kleurverloopopgave" #: ../src/defaults.c:1809 msgid "too few arguments in multicolor gradient specification" msgstr "te weinig argumenten in meerkleurenverloopopgave" #: ../src/defaults.c:1901 msgid "bad number of arguments in textured gradient specification" msgstr "verkeerd aantal argumenten in opgave getextureerd kleurverloop" #: ../src/defaults.c:1944 #, c-format msgid "bad opacity value for tgradient texture \"%s\". Should be [0..255]" msgstr "" "verkeerde doorzichtigheidswaarde getext. kleurverloop \"%s\". Moet [0..255] " "zijn" #: ../src/defaults.c:1961 #, c-format msgid "invalid texture type %s" msgstr "ongeldig textuurtype %s" #: ../src/defaults.c:2003 #, c-format msgid "Error in texture specification for key \"%s\"" msgstr "Fout in textuuropgave voor 'key' \"%s\"" #: ../src/defaults.c:2052 msgid "Wrong type for workspace background. Should be a texture type." msgstr "Verkeerd type voor werkruimteachtergrond. Moet 'n textuurtype zijn." #: ../src/defaults.c:2102 #, c-format msgid "Wrong type for background of workspace %i. Should be a texture." msgstr "" "Verkeerd type voor achtergrond van werkruimte %i. Moet 'n textuur zijn." #: ../src/defaults.c:2143 msgid "could not load any usable font!!!" msgstr "kon geen bruikbaar lettertype laden!!!" #: ../src/defaults.c:2168 #, c-format msgid "could not get color for key \"%s\"" msgstr "kon kleur niet krijgen voor 'key' \"%s\"" #: ../src/defaults.c:2224 ../src/rootmenu.c:470 #, c-format msgid "%s: invalid key modifier \"%s\"" msgstr "%s: ongeldige toetsmodificator \"%s\"" #: ../src/defaults.c:2236 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\"" msgstr "%s:ongeldige sneltoetsopgave \"%s\"" #: ../src/defaults.c:2242 #, c-format msgid "%s:invalid key in shortcut \"%s\"" msgstr "%s:ongeldige toets in snelkoppeling \"%s\"" #: ../src/defaults.c:2267 #, c-format msgid "%s: modifier key %s is not valid" msgstr "%s: modificatortoets %s is niet geldig" #: ../src/defaults.c:2374 #, c-format msgid "failed to open bitmap file \"%s\"" msgstr "openen bitmapbestand \"%s\" mislukt" #: ../src/defaults.c:2377 #, c-format msgid "\"%s\" is not a valid bitmap file" msgstr "\"%s\" is geen geldig bitmapbestand" #: ../src/defaults.c:2380 #, c-format msgid "out of memory reading bitmap file \"%s\"" msgstr "geheugentekort bij inlezen bitmapbestand \"%s\"" #: ../src/defaults.c:2418 ../src/defaults.c:2451 msgid "bad number of arguments in cursor specification" msgstr "verkeerd aantal argumenten in cursoropgave" #: ../src/defaults.c:2434 #, c-format msgid "unknown builtin cursor name \"%s\"" msgstr "onbekende ingebouwde cursornaam \"%s\"" #: ../src/defaults.c:2461 ../src/defaults.c:2473 #, c-format msgid "could not find cursor bitmap file \"%s\"" msgstr "kon cursorbitmapbestand \"%s\" niet vinden" #: ../src/defaults.c:2514 #, c-format msgid "Error in cursor specification for key \"%s\"" msgstr "Fout in cursoropgave voor 'key' \"%s\"" #: ../src/defaults.c:2639 msgid "could not render texture for icon background" msgstr "kon textuur voor icoonachtergrond niet weergeven" #: ../src/defaults.c:3115 #, c-format msgid "Invalid arguments for background \"%s\"" msgstr "Ongeldige argumenten voor achtergrond \"%s\"" #: ../src/defaults.c:3352 ../src/defaults.c:3421 #, c-format msgid "Invalid arguments for option \"%s\"" msgstr "Ongeldige argumenten voor optie \"%s\"" #: ../src/defaults.c:3358 ../src/defaults.c:3427 #, c-format msgid "Could not find image \"%s\" for option \"%s\"" msgstr "Kon afbeelding \"%s\" voor optie \"%s\" niet vinden" #: ../src/defaults.c:3363 ../src/defaults.c:3435 #, c-format msgid "Could not load image \"%s\" for option \"%s\"" msgstr "Kon afbeelding \"%s\" voor optie \"%s\" niet laden" #: ../src/defaults.c:3373 msgid "Invalid split sizes for switch panel back image." msgstr "Ongeldige deelafmetingen voor achterafbeelding schakelpaneel." #: ../src/defaults.c:3442 #, c-format msgid "Invalid number of arguments for option \"%s\"" msgstr "Ongeldig aantal argumenten voor optie \"%s\"" #: ../src/defaults.c:3458 #, c-format msgid "Value for option \"%s\" must be an array of 7 strings" msgstr "Waarde voor optie \"%s\" moet 'n 'array' van 7 'strings' zijn" #: ../src/defaults.c:3472 #, c-format msgid "Invalid argument for option \"%s\" item %d" msgstr "Ongeldig argument voor optie \"%s\" item %d" #: ../src/dialog.c:131 msgid "Save workspace state" msgstr "Werkruimtestaat opslaan" #: ../src/dialog.c:428 ../src/dialog.c:489 ../src/dialog.c:1001 #: ../src/dock.c:506 ../src/dock.c:4501 ../src/dockedapp.c:350 #: ../src/rootmenu.c:190 ../src/rootmenu.c:233 msgid "Cancel" msgstr "Annuleren" #: ../src/dialog.c:581 #, c-format msgid "" "Could not open directory \"%s\":\n" "%s" msgstr "" "Kon map \"%s\" niet openen:\n" "%s" #: ../src/dialog.c:597 #, c-format msgid "full path for file \"%s\" in \"%s\" is longer than %d bytes, skipped" msgstr "" "volledig pad voor bestand \"%s\" in \"%s\" is langer dan %d byte, " "overgeslagen" #: ../src/dialog.c:631 msgid "Could not load image file " msgstr "Laden mislukt van afbeeldingsbestand " #: ../src/dialog.c:928 msgid "Directories" msgstr "Mappen" #: ../src/dialog.c:937 msgid "Icons" msgstr "Iconen" #: ../src/dialog.c:970 msgid "Preview" msgstr "Voorbeeld" #: ../src/dialog.c:983 msgid "File Name:" msgstr "Bestandsnaam:" #: ../src/dialog.c:1007 msgid "Choose File" msgstr "Kies bestand" #: ../src/dialog.c:1024 msgid "Icon Chooser" msgstr "Icoonkiezer" #: ../src/dialog.c:1235 msgid "Window Manager for X" msgstr "Vensterbeheerder voor X" #: ../src/dialog.c:1237 #, c-format msgid "Version %s" msgstr "Versie %s" #: ../src/dialog.c:1258 #, c-format msgid "Using visual 0x%x: %s %ibpp " msgstr "Gebruikt visual 0x%x: %s %i bpp " #: ../src/dialog.c:1265 msgid "(32 thousand colors)\n" msgstr "(32 duizend kleuren)\n" #: ../src/dialog.c:1268 msgid "(64 thousand colors)\n" msgstr "(64 duizend kleuren)\n" #: ../src/dialog.c:1272 msgid "(16 million colors)\n" msgstr "(16 miljoen kleuren)\n" #: ../src/dialog.c:1275 #, c-format msgid "(%d colors)\n" msgstr "(%d kleuren)\n" #: ../src/dialog.c:1285 #, c-format msgid "Total memory allocated: %i kB (in use: %i kB, %d free chunks).\n" msgstr "Toegew. geheugen: %i kB (gebr.: %i kB, %d blok vrij).\n" #: ../src/dialog.c:1287 #, c-format msgid "Total memory allocated: %i kB (in use: %i kB).\n" msgstr "Tot. toegewezen geheugen: %i kB (gebruikt: %i kB).\n" #: ../src/dialog.c:1305 msgid "Image formats: " msgstr "Afb.vormen: " #: ../src/dialog.c:1315 msgid "" "\n" "Additional support for: " msgstr "" "\n" "Aanv. ondersteuning: " #: ../src/dialog.c:1331 ../src/dialog.c:1344 msgid "\n" msgstr "\n" #: ../src/dialog.c:1333 msgid "Solaris " msgstr "Solaris " #: ../src/dialog.c:1335 msgid "Xinerama: " msgstr "Xinerama: " #: ../src/dialog.c:1338 #, c-format msgid "%d head(s) found." msgstr "%d kop(pen) gevonden." #: ../src/dialog.c:1347 msgid "supported" msgstr "ondersteund" #: ../src/dialog.c:1349 msgid "unsupported" msgstr "niet ondersteund" #: ../src/dialog.c:1375 msgid "Info" msgstr "Info" #: ../src/dialog.c:1450 msgid "" " Window Maker 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.\n" "\n" " Window Maker 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.\n" "\n" " You should have received a copy of the GNU General Public License along " "with this program; if not, write to the Free Software Foundation, Inc., 51 " "Franklin Street, Fifth Floor, Boston, MA02110-1301 USA." msgstr "" "Window Maker is vrije software; u mag het herdistribueren en/of wijzigen " "onder de voorwaarden van de GNU Algemene Publieke Licentie zoals " "gepubliceerd door de Free Software Foundation; onder version 2 van de " "Licentie, of (naar uw keuze) elke latere versie.\n" "\n" "Window Maker is gedistribueerd in de hoop dat het nuttig zal zijn, maar " "ZONDER ENIGE GARANTIE; zelfs zonder de impliciete garanties die GEBRUIKELIJK " "ZIJN IN DE HANDEL of voor BRUIKBAARHEID VOOR EEN SPECIFIEK DOEL. Zie de GNU " "Algemene Publieke Licentie voor meer details.\n" "\n" "U hoort een kopie van de GNU Algemene Publieke Licentie te hebben ontvangen " "samen met dit programma; als dat niet het geval is, schrijf naar de Free " "Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, " "MA02110-1301 USA." #: ../src/dialog.c:1470 msgid "Legal" msgstr "Juridische info" #: ../src/dialog.c:1586 ../src/monitor.c:56 msgid "cannot open connection for crashing dialog panel. Aborting." msgstr "kan verbinding voor crashdialoogpaneel niet openen. Afbreken." #: ../src/dialog.c:1614 msgid "Fatal error" msgstr "Onherstelbare fout" #: ../src/dialog.c:1624 #, c-format msgid "Window Maker received signal %i." msgstr "Window Maker ontving signaal %i." #. Comment for the PO file: the %s is an email address #: ../src/dialog.c:1632 #, c-format msgid "" " This fatal error occurred probably due to a bug. Please fill the included " "BUGFORM and report it to %s." msgstr "" " Deze onherstelbare fout trad mogelijk op door 'n bug. Vul a.u.b. bijgaand " "BUGFORM in, en rapporteer 't aan %s." #: ../src/dialog.c:1641 msgid "What do you want to do now?" msgstr "Wat wilt u nu doen?" #: ../src/dialog.c:1647 msgid "Select action" msgstr "Actie selecteren" #: ../src/dialog.c:1648 msgid "Abort and leave a core file" msgstr "Afbreken en geheugendump achterlaten" #: ../src/dialog.c:1649 msgid "Restart Window Maker" msgstr "Window Maker herstarten" #: ../src/dialog.c:1650 msgid "Start alternate window manager" msgstr "Andere vensterbeheerder starten" #: ../src/dock.c:181 ../src/menu.c:1774 #, c-format msgid "Type the name for workspace %i:" msgstr "Typ de naam voor werkruimte %i:" #: ../src/dock.c:182 ../src/dock.c:1242 ../src/dock.c:1244 ../src/dock.c:3463 #: ../src/menu.c:1778 msgid "Rename Workspace" msgstr "Werkruimte hernoemen" #: ../src/dock.c:447 ../src/dock.c:454 ../src/winspector.c:821 msgid "Warning" msgstr "Waarschuwing" #: ../src/dock.c:448 msgid "" "Some icons cannot be made omnipresent. Please make sure that no other icon " "is docked in the same positions on the other workspaces and the Clip is not " "full in some workspace." msgstr "" "Sommige iconen kunnen niet alomtegenwoordig worden gemaakt. Zorg a.u.b. " "ervoor, dat geen ander icoon is gedokt op dezelfde plaatsen in de andere " "werkruimten, en de Clip niet vol is in enige werkruimte." #: ../src/dock.c:455 msgid "" "Icon cannot be made omnipresent. Please make sure that no other icon is " "docked in the same position on the other workspaces and the Clip is not full " "in some workspace." msgstr "" "Icoon kan niet alomtegenwoordig worden gemaakt. Zorg a.u.b. ervoor, dat geen " "ander icoon is gedokt op dezelfde plaats in de andere werkruimten, en de " "Clip niet vol is in enige werkruimte." #: ../src/dock.c:504 msgid "Workspace Clip" msgstr "Werkruimteclip" #: ../src/dock.c:504 ../src/dock.c:4499 msgid "Drawer" msgstr "Lade" #: ../src/dock.c:505 msgid "All selected icons will be removed!" msgstr "Alle geselecteerde iconen zullen worden verwijderd!" #. can be: Unselect all icons #: ../src/dock.c:547 ../src/dock.c:1256 ../src/dock.c:1258 ../src/dock.c:3501 msgid "Keep Icon" msgstr "Icoon behouden" #: ../src/dock.c:548 ../src/dock.c:2151 ../src/dock.c:2293 msgid "Type the command used to launch the application" msgstr "Typ 't gebruikte programmaopstartcommando" #: ../src/dock.c:940 #, c-format msgid "could not launch application %s" msgstr "kon programma %s niet opstarten" #: ../src/dock.c:986 msgid "could not create workspace submenu for Clip menu" msgstr "kon werkruimtesubmenu niet aanmaken voor clipmenu" #: ../src/dock.c:1043 msgid "could not create options submenu for Clip menu" msgstr "kon optiesubmenu niet aanmaken voor clipmenu" #: ../src/dock.c:1047 ../src/dock.c:1194 msgid "Keep on Top" msgstr "Bovenop houden" #: ../src/dock.c:1052 msgid "Collapsed" msgstr "Ingeschoven" #: ../src/dock.c:1057 msgid "Autocollapse" msgstr "Vanzelf schuiven" #: ../src/dock.c:1062 msgid "Autoraise" msgstr "Vanzelf verhogen" #: ../src/dock.c:1067 msgid "Autoattract Icons" msgstr "Vanzelf iconen aantrekken" #: ../src/dock.c:1182 msgid "could not create options submenu for dock position menu" msgstr "kon optiesubmenu niet aanmaken voor dokpositiemenu" #: ../src/dock.c:1186 msgid "Normal" msgstr "Normaal" #: ../src/dock.c:1190 msgid "Auto raise & lower" msgstr "Vanzelf verhogen & verlagen" #: ../src/dock.c:1218 msgid "Dock position" msgstr "Dokpositie" #: ../src/dock.c:1224 msgid "Add a drawer" msgstr "Lade toevoegen" #: ../src/dock.c:1228 msgid "Clip Options" msgstr "Clipopties" #. if (type == WM_DRAWER) #: ../src/dock.c:1230 msgid "Drawer options" msgstr "Ladeopties" #: ../src/dock.c:1247 msgid "Selected" msgstr "Geselecteerd" #: ../src/dock.c:1252 ../src/dock.c:1254 ../src/dock.c:3491 msgid "Select All Icons" msgstr "Alle iconen selecteren" #: ../src/dock.c:1261 ../src/dock.c:1263 ../src/dock.c:3511 msgid "Move Icon To" msgstr "Icoon verplaatsen naar" #: ../src/dock.c:1269 ../src/dock.c:1271 ../src/dock.c:3525 msgid "Remove Icon" msgstr "Icoon verwijderen" #. can be: Remove Icons #: ../src/dock.c:1273 msgid "Attract Icons" msgstr "Iconen aantrekken" #. can be: Unhide #: ../src/dock.c:1284 msgid "Settings..." msgstr "Instellingen..." #: ../src/dock.c:1632 ../src/dock.c:1720 #, c-format msgid "bad value in docked icon state info %s" msgstr "verkeerde waarde in staatinfo gedokt icoon %s" #: ../src/dock.c:1743 #, c-format msgid "bad value in dock state info:%s" msgstr "verkeerde waarde in staatinfo Dok:%s" #: ../src/dock.c:1942 msgid "there are too many icons stored in dock. Ignoring what doesn't fit" msgstr "er zijn te veel iconen opgeslagen in Dok. Negeert wat niet past" #. icon->forced_dock = 1; #: ../src/dock.c:2150 ../src/dock.c:2292 msgid "Dock Icon" msgstr "Dokicoon" #: ../src/dock.c:3368 #, c-format msgid "Could not execute command \"%s\"" msgstr "Kon commando \"%s\" niet uitvoeren" #: ../src/dock.c:3469 msgid "Toggle Omnipresent" msgstr "Alomtegenwoordig in-/uitschakelen" #: ../src/dock.c:3474 ../src/winmenu.c:115 ../src/winspector.c:96 msgid "Omnipresent" msgstr "Alomtegenwoordig" #: ../src/dock.c:3489 msgid "Unselect All Icons" msgstr "Alle iconen deselecteren" #: ../src/dock.c:3499 msgid "Keep Icons" msgstr "Iconen behouden" #: ../src/dock.c:3509 msgid "Move Icons To" msgstr "Iconen verplaatsen naar" #: ../src/dock.c:3523 msgid "Remove Icons" msgstr "Iconen verwijderen" #: ../src/dock.c:3553 msgid "Bring Here" msgstr "Hier brengen" #: ../src/dock.c:3577 msgid "Remove drawer" msgstr "Lade verwijderen" #: ../src/dock.c:4500 msgid "All icons in this drawer will be detached!" msgstr "Alle iconen in deze lade zullen worden losgemaakt!" #: ../src/dock.c:4885 msgid "there are too many icons stored in drawer. Ignoring what doesn't fit" msgstr "er zijn te veel iconen opgeslagen in lade. Negeert wat niet past" #: ../src/dockedapp.c:94 #, c-format msgid "could not find icon %s, used in a docked application" msgstr "kon icoon %s, gebruikt in 'n gedokt programma, niet vinden" #: ../src/dockedapp.c:170 #, c-format msgid "Could not open specified icon file: %s" msgstr "Kon opgegeven icoonbestand niet openen: %s" #: ../src/dockedapp.c:172 msgid "Ignore" msgstr "Negeren" #: ../src/dockedapp.c:264 msgid "Start when Window Maker is started" msgstr "Starten als Window Maker wordt gestart" #: ../src/dockedapp.c:269 msgid "Lock (prevent accidental removal)" msgstr "Vergrendelen (voorkomt p.o. verwijderen)" #: ../src/dockedapp.c:273 msgid "Application path and arguments" msgstr "Programmapad en argumenten" #: ../src/dockedapp.c:284 msgid "Command for middle-click launch" msgstr "Commando voor opstarten met middenklik" #: ../src/dockedapp.c:296 #, c-format msgid "%s will be replaced with current selection" msgstr "%s wordt vervangen door actuele selectie" #: ../src/dockedapp.c:300 msgid "Command for dragged and dropped files" msgstr "Commando voor versleepte bestanden" #: ../src/dockedapp.c:312 #, c-format msgid "%d will be replaced with the file name" msgstr "%d wordt vervangen door de bestandsnaam" #: ../src/dockedapp.c:315 msgid "XDnD support was not compiled in" msgstr "XDnD-ondersteuning is niet ingecompileerd" #: ../src/dockedapp.c:323 msgid "Icon Image" msgstr "Icoonafbeelding" #: ../src/dockedapp.c:334 ../src/winspector.c:1383 msgid "Browse..." msgstr "Bladeren..." #: ../src/dockedapp.c:392 msgid "Docked Application Settings" msgstr "Instellingen gedokt programma" #: ../src/event.c:328 #, c-format msgid "read problem when trying to get INotify event: %s" msgstr "inleesprobleem bij proberen 'INotify event' te krijgen: %s" #: ../src/event.c:341 msgid "" "the defaults database has been deleted! Restart Window Maker to create the " "database with the default settings" msgstr "" "de instellingendatabase is verwijderd! Herstart Window Maker om de database " "aan te maken met de standaardinstellingen" #: ../src/event.c:350 msgid "" "the unit containing the defaults database has been unmounted. Setting --" "static mode. Any changes will not be saved." msgstr "" "de eenheid met de instellingendatabase is afgekoppeld. Stelt '--static'-" "modus in. Wijzigingen zullen niet worden opgeslagen." #: ../src/event.c:361 msgid "Inotify: Reading config files in defaults database." msgstr "Inotify: Inlezen configuratiebestanden uit instellingendatabase." #. an error has occurred #: ../src/event.c:412 msgid "" "select failed. The inotify instance will be closed. Changes to the defaults " "database will require a restart to take effect." msgstr "" "selecteren mislukt. 't 'Inotify'-exemplaar zal worden afgesloten. " "Wijzigingen in de instellingendatabase zullen 'n herstart vereisen om te " "werken." #: ../src/event.c:1013 msgid "Got Reconfigure command" msgstr "Kreeg commando 'herconfigureren'" #: ../src/event.c:1016 #, c-format msgid "Got unknown command %s" msgstr "Kreeg onbekend commando %s" #: ../src/event.c:1828 #, c-format msgid "exec %A(Run,Type command to run:)" msgstr "exec %A(Uitvoeren,Typ uit te voeren commando:)" #: ../src/event.c:2006 msgid "another window manager is replacing us!" msgstr "'n andere vensterbeheerder vervangt ons!" #: ../src/framewin.c:660 ../src/framewin.c:750 ../src/menu.c:405 #: ../src/texture.c:454 #, c-format msgid "could not render texture: %s" msgstr "kon textuur niet weergeven: %s" #: ../src/framewin.c:683 ../src/framewin.c:693 ../src/framewin.c:709 #: ../src/framewin.c:720 ../src/framewin.c:727 ../src/framewin.c:733 #: ../src/icon.c:311 ../src/menu.c:432 #, c-format msgid "error rendering image:%s" msgstr "fout bij weergeven afbeelding:%s" #: ../src/framewin.c:778 #, c-format msgid "error rendering image: %s" msgstr "fout bij weergeven afbeelding: %s" #: ../src/main.c:231 msgid "failed to restart Window Maker." msgstr "Window Maker herstarten mislukt." #: ../src/main.c:234 #, c-format msgid "could not exec %s" msgstr "kon commando %s niet uitvoeren" #: ../src/main.c:256 #, c-format msgid "the display name has an unexpected syntax: \"%s\"" msgstr "de schermnaam heeft 'n onverwachte syntax: \"%s\"" #: ../src/main.c:290 msgid "Could not execute command: " msgstr "Kon commando niet uitvoeren: " #: ../src/main.c:425 #, c-format msgid "%s aborted.\n" msgstr "%s afgebroken.\n" #: ../src/main.c:434 #, c-format msgid "Usage: %s [options]\n" msgstr "Gebruik: %s [opties]\n" #: ../src/main.c:435 msgid "The Window Maker window manager for the X window system" msgstr "De Window Maker-vensterbeheerder voor X Window System" #: ../src/main.c:437 msgid " -display host:dpy\tdisplay to use" msgstr " -display host:dpy\tte gebruiken scherm" #: ../src/main.c:439 msgid " --replace\t\treplace running window manager" msgstr " --replace\t\tlopende vensterbeheerder vervangen" #: ../src/main.c:441 msgid " --no-dock\t\tdo not open the application Dock" msgstr " --no-dock\t\thet programmadok niet openen" #: ../src/main.c:442 msgid " --no-clip\t\tdo not open the workspace Clip" msgstr " --no-clip\t\tde werkruimteclip niet openen" #: ../src/main.c:443 msgid " --no-autolaunch\tdo not autolaunch applications" msgstr " --no-autolaunch\tprogramma's niet vanzelf opstarten" #: ../src/main.c:444 msgid " --no-drawer\t\tdisable drawers in the dock" msgstr " --no-drawer\t\tde laden in het dok uitschakelen" #: ../src/main.c:445 msgid " --dont-restore\t\tdo not restore saved session" msgstr " --dont-restore\t\topgeslagen sessie niet hervatten" #: ../src/main.c:447 msgid " --locale locale\tlocale to use" msgstr " --locale locale\tte gebruiken lokalisatie" #: ../src/main.c:449 msgid " --visual-id visualid\tvisual id of visual to use" msgstr " --visual-id visualid\tte gebruiken 'visual id' voor kleurdiepte" #: ../src/main.c:450 msgid " --static\t\tdo not update or save configurations" msgstr " --static\t\tinstellingen niet bijwerken of opslaan" #: ../src/main.c:452 msgid " --no-polling\t\tdo not periodically check for configuration updates" msgstr "" " --no-polling\t\tniet periodiek controleren op bijgewerkte instellingen" #: ../src/main.c:454 msgid " --global_defaults_path\tprint the path for default config and exit" msgstr "" " --global_defaults_path\tpad voor standaardinstellingen afdrukken, en " "afsluiten" #: ../src/main.c:455 msgid " --version\t\tprint version and exit" msgstr " --version\t\tversie afdrukken, en afsluiten" #: ../src/main.c:456 msgid " --help\t\t\tshow this message" msgstr " --help\t\t\tdeze boodschap tonen" #: ../src/main.c:466 #, c-format msgid "could not find user GNUstep directory (%s)." msgstr "kon gebruikers-GNUstep-map (%s) niet vinden." #: ../src/main.c:469 msgid "" "There was an error while creating GNUstep directory, please make sure you " "have installed Window Maker correctly and run wmaker.inst" msgstr "" "Er trad 'n fout op bij aanmaken van de GNUstep-map. Zorg a.u.b. ervoor dat u " "Window Maker correct heeft geïnstalleerd, en voer 'wmaker.inst' uit" #: ../src/main.c:472 #, c-format msgid "%s directory created with default configuration." msgstr "map %s aangemaakt met standaardinstellingen." #: ../src/main.c:491 msgid "" "could not initialise an inotify instance. Changes to the defaults database " "will require a restart to take effect. Check your kernel!" msgstr "" "kon geen 'inotify'-exemplaar initialiseren. Wijzigingen in de " "instellingendatabase zullen 'n herstart vereisen om te werken. Controleer uw " "kernel!" #: ../src/main.c:502 #, c-format msgid "" "could not add an inotify watch on path %s. Changes to the defaults database " "will require a restart to take effect." msgstr "" "kon geen 'inotify watch' toevoegen op pad %s. Wijzigingen in de " "instellingendatabase zullen 'n herstart vereisen om te werken." #: ../src/main.c:525 #, c-format msgid "%s:could not execute initialization script" msgstr "%s:kon initialiseringsscript niet uitvoeren" #: ../src/main.c:543 #, c-format msgid "%s:could not execute exit script" msgstr "%s:kon afsluitingsscript niet uitvoeren" #: ../src/main.c:589 ../src/main.c:670 ../src/main.c:677 ../src/main.c:684 #, c-format msgid "too few arguments for %s" msgstr "te weinig argumenten voor %s" #: ../src/main.c:638 #, c-format msgid "option \"%s\" is deprecated, please remove it from your script" msgstr "optie \"%s\" wordt afgeraden, verwijder 't a.u.b. uit uw script" #: ../src/main.c:688 #, c-format msgid "bad value for visualid: \"%s\"" msgstr "verkeerde waarde voor 'visualid': \"%s\"" #: ../src/main.c:697 msgid "" "your version of Window Maker was compiled with INotify support, so \"--no-" "polling\" has no effect" msgstr "" "uw versie van Window Maker is gecompileerd met INotify-ondersteuning, dus " "\"--no-polling\" heeft geen effect" #: ../src/main.c:703 #, c-format msgid "%s: invalid argument '%s'\n" msgstr "%s: ongeldig argument '%s'\n" #: ../src/main.c:704 #, c-format msgid "Try '%s --help' for more information\n" msgstr "Probeer '%s --help' voor meer informatie\n" #: ../src/main.c:747 msgid "X server does not support locale" msgstr "X-server ondersteunt lokalisatie niet" #: ../src/main.c:751 msgid "cannot set locale modifiers" msgstr "kan lokalisatiemodificators niet instellen" #: ../src/main.c:767 #, c-format msgid "could not open display \"%s\"" msgstr "kon scherm \"%s\" niet openen" #: ../src/menu.c:2366 #, c-format msgid "bad value in menus state info: %s" msgstr "verkeerde waarde in staatinfo menu's: %s" #: ../src/misc.c:476 ../src/misc.c:481 msgid "Program Arguments" msgstr "Programma-argumenten" #: ../src/misc.c:477 ../src/misc.c:482 msgid "Enter command arguments:" msgstr "Voer commandoargumenten in:" #: ../src/misc.c:523 #, c-format msgid "out of memory during expansion of \"%s\"" msgstr "geheugentekort bij uitwerken van \"%s\"" #: ../src/misc.c:576 ../src/misc.c:593 ../src/misc.c:610 ../src/misc.c:633 #: ../src/misc.c:654 #, c-format msgid "out of memory during expansion of '%s' for command \"%s\"" msgstr "geheugentekort bij uitwerken van '%s' voor commando \"%s\"" #: ../src/misc.c:647 msgid "selection not available" msgstr "selectie niet beschikbaar" #: ../src/misc.c:689 ../src/misc.c:695 #, c-format msgid "bad window name value in %s state info" msgstr "verkeerde vensternaamwaarde in staatinfo %s" #: ../src/misc.c:922 ../src/misc.c:929 ../src/misc.c:945 #, c-format msgid "%s failed, can't set workspace specific background image (%s)" msgstr "" "%s mislukt, kan werkruimtespecifieke achtergrondafbeelding (%s) niet " "instellen" #: ../src/misc.c:957 #, c-format msgid "could not execute \"%s\": %s" msgstr "kon \"%s\" niet uitvoeren: %s" #: ../src/misc.c:965 #, c-format msgid "" "could not set close-on-exec flag for bg_helper's communication file handle " "(%s)" msgstr "" #: ../src/misc.c:1005 msgid "could not send message to background image helper" msgstr "kon bericht naar achtergrondafbeeldingshelper niet verzenden" #: ../src/monitor.c:63 msgid "trying to start alternate window manager..." msgstr "probeert andere vensterbeheerder te starten..." #: ../src/monitor.c:69 msgid "failed to start alternate window manager. Aborting." msgstr "starten andere vensterbeheerder mislukt. Afbreken." #: ../src/monitor.c:98 ../src/monitor.c:101 msgid "Error respawning Window Maker" msgstr "Fout bij opnieuw starten Window Maker" #: ../src/monitor.c:108 msgid "Error during monitoring of Window Maker process." msgstr "Fout bij toezicht op Window Maker-proces." #: ../src/monitor.c:133 #, c-format msgid "Window Maker exited due to a crash (signal %i) and will be restarted." msgstr "" "Window Maker sloot af door 'n crash (signaal %i) en zal worden herstart." #. #. * 1st %s is a function name #. * 2nd %s is an email address #. * 3rd %s is the name of the operating system #. #: ../src/osdep_stub.c:23 #, c-format msgid "" "%s is not implemented on this platform; tell %s you are running %s release " "%s version %s" msgstr "" "%s is niet geïmplementeerd op dit platform; meld %s dat u %s, uitgave %s, " "versie %s gebruikt" #: ../src/resources.c:41 #, c-format msgid "could not parse color \"%s\"" msgstr "kon kleur \"%s\" niet verwerken" #: ../src/resources.c:45 #, c-format msgid "could not allocate color \"%s\"" msgstr "kon kleur \"%s\" niet toewijzen" #: ../src/rootmenu.c:189 ../src/rootmenu.c:190 msgid "Exit" msgstr "Afsluiten" #: ../src/rootmenu.c:190 msgid "Exit window manager?" msgstr "Vensterbeheerder afsluiten?" #: ../src/rootmenu.c:231 msgid "Kill X session" msgstr "X-sessie doden" #: ../src/rootmenu.c:232 msgid "" "Kill Window System session?\n" "(all applications will be closed)" msgstr "" "Dood Window System-sessie?\n" "(Alle programma's zullen worden afgesloten.)" #: ../src/rootmenu.c:483 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\" for entry %s" msgstr "%s:ongeldige sneltoetsopgave \"%s\" voor ingang %s" #: ../src/rootmenu.c:491 #, c-format msgid "%s:invalid key in shortcut \"%s\" for entry %s" msgstr "%s:ongeldige toets in snelkoppeling \"%s\" voor ingang %s" #: ../src/rootmenu.c:525 #, c-format msgid "%s: unmatched '\"' in menu file" msgstr "%s: ongekoppelde '\"' in menubestand" #: ../src/rootmenu.c:574 #, c-format msgid "%s: missing command" msgstr "%s: ontbrekend commando" #: ../src/rootmenu.c:630 #, c-format msgid "invalid OPEN_MENU specification: %s" msgstr "ongeldige OPEN_MENU-opgave: %s" #: ../src/rootmenu.c:692 #, c-format msgid "%s:could not stat menu" msgstr "%s:kon status menu niet vaststellen" #: ../src/rootmenu.c:700 #, c-format msgid "%s:could not stat menu:%s" msgstr "%s:kon status menu niet vaststellen:%s" #: ../src/rootmenu.c:716 #, c-format msgid "too many parameters in OPEN_MENU: %s" msgstr "te veel parameters in OPEN_MENU: %s" #: ../src/rootmenu.c:754 #, c-format msgid "invalid OPEN_PLMENU specification: %s" msgstr "ongeldige OPEN_PLMENU-opgave: %s" #: ../src/rootmenu.c:810 msgid "" "There are more than one WORKSPACE_MENU commands in the applications menu. " "Only one is allowed." msgstr "" "Er staan meer dan één WORKSPACE_MENU-commando's in 't programmamenu. Slechts " "één is toegestaan." #: ../src/rootmenu.c:841 msgid "" "There are more than one WINDOWS_MENU commands in the applications menu. Only " "one is allowed." msgstr "" "Er staan meer dan één WINDOWS_MENU-commando's in 't programmamenu. Slechts " "één is toegestaan." #: ../src/rootmenu.c:846 msgid "Window List" msgstr "Vensterlijst" #: ../src/rootmenu.c:873 ../src/rootmenu.c:890 ../src/rootmenu.c:907 #: ../src/rootmenu.c:915 #, c-format msgid "%s:missing parameter for menu command \"%s\"" msgstr "%s:ontbrekende parameter voor menucommando \"%s\"" #: ../src/rootmenu.c:979 #, c-format msgid "%s:unknown command \"%s\" in menu config." msgstr "%s:onbekend commando \"%s\" in menuconfiguratie." #: ../src/rootmenu.c:986 #, c-format msgid "%s:can't add shortcut for entry \"%s\"" msgstr "%s:kan sneltoets voor ingang \"%s\" niet toevoegen" #: ../src/rootmenu.c:1018 ../src/rootmenu.c:1064 msgid "missing command in menu config" msgstr "ontbrekend commando in menuconfiguratie" #: ../src/rootmenu.c:1046 msgid "syntax error in menu file: END declaration missing" msgstr "syntaxfout in menubestand: END-declaratie ontbreekt" #: ../src/rootmenu.c:1078 msgid "invalid menu, no menu title given" msgstr "ongeldig menu, geen menutitel opgegeven" #: ../src/rootmenu.c:1097 ../src/rootmenu.c:1139 ../src/rootmenu.c:1169 #: ../src/rootmenu.c:1183 #, c-format msgid "could not open menu file \"%s\": %s" msgstr "kon menubestand \"%s\" niet openen: %s" #: ../src/rootmenu.c:1140 msgid "pipe command for PropertyList is too long" msgstr "PropertyList-commando met 'pipe' is te lang" #: ../src/rootmenu.c:1170 msgid "pipe command is too long" msgstr "commando met 'pipe' is te lang" #: ../src/rootmenu.c:1291 ../src/rootmenu.c:1363 ../src/rootmenu.c:1401 #, c-format msgid "out of memory while constructing directory menu %s" msgstr "geheugentekort bij samenstellen mapmenu %s" #: ../src/rootmenu.c:1300 #, c-format msgid "%s:could not stat file \"%s\" in menu directory" msgstr "%s:kon status bestand \"%s\" in menumap niet vaststellen" #: ../src/rootmenu.c:1450 msgid "Commands" msgstr "Commando's" #: ../src/rootmenu.c:1453 msgid "Restart" msgstr "Herstarten" #: ../src/rootmenu.c:1454 msgid "Exit..." msgstr "Afsluiten..." #: ../src/rootmenu.c:1493 #, c-format msgid "could not find menu file \"%s\" referenced in WMRootMenu" msgstr "kon menubestand \"%s\", verwezen in WMRootMenu, niet vinden" #: ../src/rootmenu.c:1499 #, c-format msgid "could not access menu \"%s\" referenced in WMRootMenu" msgstr "geen toegang tot menu \"%s\", verwezen in WMRootMenu" #: ../src/rootmenu.c:1511 #, c-format msgid "" "using default menu file \"%s\" as the menu referenced in WMRootMenu could " "not be found " msgstr "" "standaardmenubestand \"%s\" wordt gebruikt, want 't menu verwezen in " "WMRootMenu kon niet worden gevonden " #: ../src/rootmenu.c:1534 ../src/rootmenu.c:1594 #, c-format msgid "%s:format error in root menu configuration \"%s\"" msgstr "%s:opmaakfout in hoofdmenuconfiguratie \"%s\"" #: ../src/rootmenu.c:1671 msgid "" "The applications menu could not be loaded. Look at the console output for a " "detailed description of the errors." msgstr "" "'t Programmamenu kon niet worden geladen. Bekijk de terminaloutput voor 'n " "gedetailleerde beschrijving van de fouten." #: ../src/screen.c:136 msgid "another window manager is running" msgstr "er loopt 'n andere vensterbeheerder" #: ../src/screen.c:137 msgid "use the --replace flag to replace it" msgstr "gebruik de '--replace'-optie om 'm te vervangen" #: ../src/screen.c:165 #, c-format msgid "waiting %lus for other window manager to exit" msgstr "wacht %lus op afsluiten andere vensterbeheerder" #: ../src/screen.c:176 msgid "other window manager hasn't exited!" msgstr "andere vensterbeheerder is niet afgesloten!" #: ../src/screen.c:180 msgid "replacing the other window manager" msgstr "vervangt de andere vensterbeheerder" #: ../src/screen.c:512 #, c-format msgid "could not load logo image for panels: %s" msgstr "kon logoafbeelding voor panelen niet laden: %s" #: ../src/screen.c:696 #, c-format msgid "can't create Context on screen %d, %s" msgstr "kan Context niet aanmaken op scherm %d, %s" #: ../src/screen.c:710 msgid "could not initialize WINGs widget set" msgstr "kon WINGs-besturingselementen niet initialiseren" #: ../src/screen.c:1002 #, c-format msgid "could not save session state in %s" msgstr "kon sessiestaat niet opslaan in %s" #: ../src/session.c:147 ../src/wdefaults.c:655 ../src/winspector.c:525 #, c-format msgid "can't convert \"%s\" to boolean" msgstr "kan \"%s\" niet omzetten naar 'boolean'" #: ../src/stacking.c:70 msgid "could not get window list!!" msgstr "kon vensterlijst niet krijgen!!" #: ../src/startup.c:118 #, c-format msgid "internal X error: %s" msgstr "interne X-fout: %s" #: ../src/startup.c:568 ../src/startup.c:584 ../src/startup.c:590 #, c-format msgid "could not read domain \"%s\" from defaults database" msgstr "kon domein \"%s\" niet inlezen uit instellingendatabase" #: ../src/startup.c:576 #, c-format msgid "icon size is configured to %i, but it's too small. Using 16 instead" msgstr "ingestelde icoongrootte %i is te klein. Gebruikt 16 in plaats daarvan" #: ../src/startup.c:606 msgid "XKB is not supported. KbdModeLock is automatically disabled." msgstr "XKB wordt niet ondersteund. KbdModeLock is automatisch uitgeschakeld." #: ../src/startup.c:636 msgid "it seems that there is already a window manager running" msgstr "'t lijkt dat er al 'n vensterbeheerder loopt" #: ../src/startup.c:642 #, c-format msgid "could not manage screen %i" msgstr "kon scherm %i niet beheren" #: ../src/startup.c:706 msgid "could not manage any screen" msgstr "kon geen enkel scherm beheren" #: ../src/superfluous.c:312 #, c-format msgid "Impossible direction: %d" msgstr "Onmogelijke richting: %d" #: ../src/switchmenu.c:121 msgid "Windows" msgstr "Vensters" #: ../src/texture.c:331 #, c-format msgid "image file \"%s\" used as texture could not be found." msgstr "afbeeldingsbestand \"%s\", gebruikt als textuur, niet gevonden." #: ../src/texture.c:336 #, c-format msgid "could not load texture pixmap \"%s\":%s" msgstr "kon textuurpixmap \"%s\" niet laden:%s" #: ../src/texture.c:458 msgid "could not allocate image buffer" msgstr "kon afbeeldingsbuffer niet toewijzen" #: ../src/wdefaults.c:399 #, c-format msgid "icon \"%s\" doesn't exist, check your config files" msgstr "icoon \"%s\" bestaat niet, controleer uw configuratiebestanden" #: ../src/wdefaults.c:430 #, c-format msgid "error loading image file \"%s\": %s" msgstr "fout bij laden afbeeldingsbestand \"%s\": %s" #: ../src/wdefaults.c:466 #, c-format msgid "could not find default icon \"%s\"" msgstr "kon standaardicoon \"%s\" niet vinden" #: ../src/window.c:2786 ../src/window.c:2948 msgid "" "The NumLock, ScrollLock or similar key seems to be turned on. Turn it off or " "some mouse actions and keyboard shortcuts will not work." msgstr "" "De NumLock, ScrollLock of dergelijke toets lijkt te zijn ingeschakeld. " "Schakel 't uit, of sommige muisacties en sneltoetsen zullen niet werken." #: ../src/winmenu.c:84 ../src/winmenu.c:663 msgid "Maximize" msgstr "Maximaliseren" #: ../src/winmenu.c:85 msgid "Other maximization" msgstr "Andere maximalisering" #: ../src/winmenu.c:86 ../src/winmenu.c:646 msgid "Miniaturize" msgstr "Miniaturiseren" #: ../src/winmenu.c:87 ../src/winmenu.c:682 msgid "Shade" msgstr "Oprollen" #: ../src/winmenu.c:89 msgid "Resize/Move" msgstr "Vergroten/verplaatsen" #: ../src/winmenu.c:90 ../src/winmenu.c:699 msgid "Select" msgstr "Selecteren" #: ../src/winmenu.c:91 msgid "Move To" msgstr "Verplaatsen naar" #: ../src/winmenu.c:92 msgid "Attributes..." msgstr "Eigenschappen..." #: ../src/winmenu.c:93 msgid "Options" msgstr "Opties" #: ../src/winmenu.c:95 msgid "Close" msgstr "Sluiten" #: ../src/winmenu.c:113 msgid "Keep on top" msgstr "Bovenop houden" #: ../src/winmenu.c:114 msgid "Keep at bottom" msgstr "Onderop houden" #: ../src/winmenu.c:126 msgid "Maximize vertically" msgstr "Verticaal maximaliseren" #: ../src/winmenu.c:127 msgid "Maximize horizontally" msgstr "Horizontaal maximaliseren" #: ../src/winmenu.c:128 msgid "Maximize left half" msgstr "Linkerhelft maximaliseren" #: ../src/winmenu.c:129 msgid "Maximize right half" msgstr "Rechterhelft maximaliseren" #: ../src/winmenu.c:130 msgid "Maximize top half" msgstr "Bovenhelft maximaliseren" #: ../src/winmenu.c:131 msgid "Maximize bottom half" msgstr "Onderhelft maximaliseren" #: ../src/winmenu.c:132 msgid "Maximize left top corner" msgstr "Linkerbovenhoek maximaliseren" #: ../src/winmenu.c:133 msgid "Maximize right top corner" msgstr "Rechterbovenhoek maximaliseren" #: ../src/winmenu.c:134 msgid "Maximize left bottom corner" msgstr "Linkeronderhoek maximaliseren" #: ../src/winmenu.c:135 msgid "Maximize right bottom corner" msgstr "Rechteronderhoek maximaliseren" #: ../src/winmenu.c:136 msgid "Maximus: tiled maximization" msgstr "Maximus: tegelmaximalisering" #: ../src/winmenu.c:255 msgid "" "This will kill the application.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" "Dit zal 't programma doden.\n" "Niet-opgeslagen wijzigingen zullen verloren gaan.\n" "Bevestig a.u.b." #: ../src/winmenu.c:408 ../src/winmenu.c:416 msgid "Set Shortcut" msgstr "Ingestelde sneltoets" #: ../src/winmenu.c:523 ../src/winmenu.c:548 ../src/winmenu.c:573 msgid "could not create submenu for window menu" msgstr "kon submenu niet aanmaken voor venstermenu" #: ../src/winmenu.c:640 msgid "Deminiaturize" msgstr "Deminiaturiseren" #: ../src/winmenu.c:656 msgid "Unmaximize" msgstr "Demaximaliseren" #: ../src/winmenu.c:676 msgid "Unshade" msgstr "Afrollen" #: ../src/winmenu.c:693 msgid "Deselect" msgstr "Deselecteren" #: ../src/winspector.c:70 msgid "Disable titlebar" msgstr "Titelbalk uitschakelen" #: ../src/winspector.c:71 msgid "" "Remove the titlebar of this window.\n" "To access the window commands menu of a window\n" "without it's titlebar, press Control+Esc (or the\n" "equivalent shortcut, if you changed the default\n" "settings)." msgstr "" "Verwijder de titelbalk van dit venster. Om 't\n" "venstercommandomenu te bereiken van 'n\n" "venster zonder z'n titelbalk, druk Control+Esc\n" "(of de overeenkomstige sneltoets, als u de\n" "standaardinstellingen heeft gewijzigd)." #: ../src/winspector.c:77 msgid "Disable resizebar" msgstr "Vergrootbalk uitschakelen" #: ../src/winspector.c:78 msgid "Remove the resizebar of this window." msgstr "Verwijder de vergrootbalk van dit venster." #: ../src/winspector.c:80 msgid "Disable close button" msgstr "Knop 'sluiten' uitschakelen" #: ../src/winspector.c:81 msgid "Remove the `close window' button of this window." msgstr "Verwijder de knop 'venster sluiten' van dit venster." #: ../src/winspector.c:83 msgid "Disable miniaturize button" msgstr "Knop 'miniaturiseren' uitschakelen" #: ../src/winspector.c:84 msgid "Remove the `miniaturize window' button of the window." msgstr "Verwijder de knop 'venster miniaturiseren' van 't venster." #: ../src/winspector.c:86 msgid "Disable border" msgstr "Rand uitschakelen" #: ../src/winspector.c:87 msgid "Remove the 1 pixel black border around the window." msgstr "Verwijder de zwarte rand van 1 pixel om 't venster." #: ../src/winspector.c:89 msgid "Keep on top (floating)" msgstr "Bovenop houden (drijvend)" #: ../src/winspector.c:90 msgid "" "Keep the window over other windows, not allowing\n" "them to cover it." msgstr "" "Houd 't venster boven andere vensters, niet toestaand\n" "dat ze 't bedekken." #: ../src/winspector.c:93 msgid "Keep at bottom (sunken)" msgstr "Onderop houden (verzonken)" #: ../src/winspector.c:94 msgid "Keep the window under all other windows." msgstr "Houd 't venster beneden alle andere vensters." #: ../src/winspector.c:97 msgid "Make window present in all workspaces." msgstr "Maak venster aanwezig in alle werkruimten." #: ../src/winspector.c:99 msgid "Start miniaturized" msgstr "Geminiaturiseerd starten" #: ../src/winspector.c:100 msgid "" "Make the window be automatically miniaturized when it's\n" "first shown." msgstr "" "Maak 't venster vanzelf geminiaturiseerd, wanneer 't\n" "voor 't eerst wordt getoond." #: ../src/winspector.c:103 msgid "Start maximized" msgstr "Gemaximaliseerd starten" #: ../src/winspector.c:104 msgid "" "Make the window be automatically maximized when it's\n" "first shown." msgstr "" "Maak 't venster vanzelf gemaximaliseerd, wanneer 't\n" "voor 't eerst wordt getoond." #: ../src/winspector.c:107 msgid "Full screen maximization" msgstr "Schermvullende maximalisering" #: ../src/winspector.c:108 msgid "" "Make the window use the whole screen space when it's\n" "maximized. The titlebar and resizebar will be moved\n" "to outside the screen." msgstr "" "Laat 't venster de gehele schermruimte gebruiken, wanneer\n" "'t wordt gemaximaliseerd. De titel- en vergrootbalk zullen\n" "buiten 't scherm worden geplaatst." #: ../src/winspector.c:113 msgid "Do not bind keyboard shortcuts" msgstr "Sneltoetsen niet verbinden" #: ../src/winspector.c:114 msgid "" "Do not bind keyboard shortcuts from Window Maker\n" "when this window is focused. This will allow the\n" "window to receive all key combinations regardless\n" "of your shortcut configuration." msgstr "" "Verbind sneltoetsen uit Window Maker niet, wanneer\n" "dit venster focus heeft. Dat staat 't venster toe alle\n" "toetscombinaties te ontvangen, ongeacht uw\n" "sneltoetsenconfiguratie." #: ../src/winspector.c:119 msgid "Do not bind mouse clicks" msgstr "Muisklikken niet verbinden" #: ../src/winspector.c:120 msgid "" "Do not bind mouse actions, such as `Alt'+drag\n" "in the window (when Alt is the modifier you have\n" "configured)." msgstr "" "Verbind muisacties niet, zoals 'Alt'+verslepen\n" "in 't venster (als Alt de modificator is die u\n" "heeft ingesteld)." #: ../src/winspector.c:124 msgid "Do not show in the window list" msgstr "Niet in de vensterlijst tonen" #: ../src/winspector.c:125 msgid "Do not list the window in the window list menu." msgstr "Vermeld 't venster niet in 't vensterlijstmenu." #: ../src/winspector.c:127 msgid "Do not show in the switch panel" msgstr "Niet in 't schakelpaneel tonen" #: ../src/winspector.c:128 msgid "Do not include in switch panel while cycling windows." msgstr "" "Neem niet op in 't schakelpaneel bij wisselen van\n" "venster." #: ../src/winspector.c:130 msgid "Do not let it take focus" msgstr "Geen focus laten nemen" #: ../src/winspector.c:131 msgid "" "Do not let the window take keyboard focus when you\n" "click on it." msgstr "" "Laat 't venster geen toetsenbordfocus nemen,\n" "wanneer u erop klikt." #: ../src/winspector.c:134 msgid "Keep inside screen" msgstr "Binnen 't scherm houden" #: ../src/winspector.c:135 msgid "" "Do not allow the window to move itself completely\n" "outside the screen. For bug compatibility.\n" msgstr "" "Sta 't venster niet toe, zich volledig buiten 't\n" "scherm te verplaatsen. Voor bugcompatibiliteit.\n" #: ../src/winspector.c:138 msgid "Ignore 'Hide Others'" msgstr "'Andere verbergen' negeren" #: ../src/winspector.c:139 msgid "" "Do not hide the window when issuing the\n" "`HideOthers' command." msgstr "" "Verberg 't venster niet, wanneer 't commando\n" "'Andere verbergen' wordt gegeven." #: ../src/winspector.c:142 msgid "Ignore 'Save Session'" msgstr "'Sessie opslaan' negeren" #: ../src/winspector.c:143 msgid "" "Do not save the associated application in the\n" "session's state, so that it won't be restarted\n" "together with other applications when Window Maker\n" "starts." msgstr "" "Sla 't verbonden programma niet op in de\n" "sessiestaat, zodat 't niet zal worden herstart\n" "tegelijk met andere programma's, wanneer\n" "Window Maker start." #: ../src/winspector.c:148 msgid "Emulate application icon" msgstr "Programma-icoon emuleren" #: ../src/winspector.c:149 msgid "" "Make this window act as an application that provides\n" "enough information to Window Maker for a dockable\n" "application icon to be created." msgstr "" "Laat dit venster zich gedragen, als 'n programma dat\n" "voldoende informatie verstrekt aan Window Maker,\n" "om 'n dokbaar programma-icoon aan te maken." #: ../src/winspector.c:153 msgid "Focus across workspaces" msgstr "Focus dwars door werkruimten" #: ../src/winspector.c:154 msgid "" "Allow Window Maker to switch workspace to satisfy\n" "a focus request (annoying)." msgstr "" "Sta Window Maker toe van werkruimte te wisselen,\n" "om aan 'n focusverzoek te voldoen (hinderlijk)." #: ../src/winspector.c:157 msgid "Do not let it be minimized" msgstr "Niet laten miniaturiseren" #: ../src/winspector.c:158 msgid "" "Do not let the window of this application be\n" "minimized.\n" msgstr "" "Laat 't venster van dit programma niet\n" "miniaturiseren.\n" #: ../src/winspector.c:162 msgid "Disable language button" msgstr "Taalknop uitschakelen" #: ../src/winspector.c:163 msgid "Remove the `toggle language' button of the window." msgstr "Verwijder de knop 'taal wisselen' van 't venster." #: ../src/winspector.c:167 msgid "Start hidden" msgstr "Verborgen starten" #: ../src/winspector.c:168 msgid "Automatically hide application when it's started." msgstr "" "Verberg 't programma vanzelf, wanneer 't wordt\n" "gestart." #: ../src/winspector.c:170 msgid "No application icon" msgstr "Geen programma-icoon" #: ../src/winspector.c:171 msgid "" "Disable the application icon for the application.\n" "Note that you won't be able to dock it anymore,\n" "and any icons that are already docked will stop\n" "working correctly." msgstr "" "Schakel 't programma-icoon voor 't programma\n" "uit. Merk op, dat u niet meer in staat zult zijn 't\n" "te dokken, en iconen die al zijn gedokt, zullen\n" "niet meer correct werken." #: ../src/winspector.c:176 msgid "Shared application icon" msgstr "Gedeeld programma-icoon" #: ../src/winspector.c:177 msgid "" "Use a single shared application icon for all of\n" "the instances of this application.\n" msgstr "" "Gebruik 'n enkel gedeeld programma-icoon voor\n" "alle exemplaren van dit programma.\n" #: ../src/winspector.c:471 #, c-format msgid "Could not find icon \"%s\" specified for this window" msgstr "Kon icoon \"%s\", opgegeven voor dit venster, niet vinden" #: ../src/winspector.c:486 #, c-format msgid "Could not open specified icon \"%s\":%s" msgstr "Kon opgegeven icoon \"%s\" niet openen:%s" #: ../src/winspector.c:820 #, c-format msgid "" "Ignore client supplied icon is set, but icon filename textbox is empty. " "Using client supplied icon" msgstr "" "Negeer cliënt geleverd icoon ingesteld, maar Bestandsnaam icoon is leeg. " "Gebruikt icoon cliënt" #: ../src/winspector.c:1007 #, c-format msgid "Inspecting %s.%s" msgstr "Inspecteer %s.%s" #: ../src/winspector.c:1032 msgid "Click in the window you wish to inspect." msgstr "Klik in 't venster dat u wilt inspecteren." #: ../src/winspector.c:1056 msgid "" "The configuration will apply to all\n" "windows that have their WM_CLASS\n" "property set to the above selected\n" "name, when saved." msgstr "" "De configuratie wordt toegepast, op alle\n" "vensters die hun WM_CLASS-eigenschap\n" "hebben ingesteld op de bovenstaand\n" "geselecteerde naam, na opslaan." #: ../src/winspector.c:1076 msgid "Save" msgstr "Opslaan" #: ../src/winspector.c:1084 msgid "Apply" msgstr "Toepassen" #: ../src/winspector.c:1090 msgid "Reload" msgstr "Herladen" #: ../src/winspector.c:1099 ../src/winspector.c:1109 msgid "Window Specification" msgstr "Vensterspecificatie" #: ../src/winspector.c:1100 msgid "Window Attributes" msgstr "Venstereigenschappen" #: ../src/winspector.c:1101 msgid "Advanced Options" msgstr "Geavanceerde opties" #: ../src/winspector.c:1102 msgid "Icon and Initial Workspace" msgstr "Icoon en initiële werkruimte" #: ../src/winspector.c:1103 msgid "Application Specific" msgstr "Programmaspecifiek" #: ../src/winspector.c:1116 msgid "Defaults for all windows" msgstr "Standaard voor alle vensters" #: ../src/winspector.c:1167 msgid "Select window" msgstr "Venster selecteren" #: ../src/winspector.c:1311 msgid "Attributes" msgstr "Eigenschappen" #: ../src/winspector.c:1339 msgid "Advanced" msgstr "Geavanceerd" #: ../src/winspector.c:1371 msgid "Miniwindow Image" msgstr "Afbeelding minivenster" #: ../src/winspector.c:1388 msgid "Icon filename:" msgstr "Bestandsnaam icoon:" #: ../src/winspector.c:1399 msgid "Ignore client supplied icon" msgstr "Negeer door cliënt geleverd icoon" #: ../src/winspector.c:1405 msgid "Initial Workspace" msgstr "Initiële werkruimte" #: ../src/winspector.c:1407 msgid "The workspace to place the window when it's first shown." msgstr "" "De werkruimte om 't venster in te plaatsen,\n" "wanneer 't voor 't eerst wordt getoond." #: ../src/winspector.c:1413 msgid "Nowhere in particular" msgstr "Nergens in 't bijzonder" #: ../src/winspector.c:1434 msgid "Application Attributes" msgstr "Programma-eigenschappen" #: ../src/workspace.c:101 ../src/workspace.c:721 #, c-format msgid "Workspace %i" msgstr "Werkruimte %i" #: ../src/workspace.c:148 #, c-format msgid "Workspace \"%s\" in use; cannot delete" msgstr "Werkruimte \"%s\" in gebruik; kan niet verwijderen" #: ../src/workspace.c:767 msgid "Workspaces" msgstr "Werkruimten" #: ../src/workspace.c:769 msgid "could not create Workspace menu" msgstr "kon werkruimtemenu niet aanmaken" #: ../src/workspace.c:776 msgid "New" msgstr "Nieuw" #: ../src/workspace.c:777 msgid "Destroy Last" msgstr "Laatste vernietigen" #: ../src/workspace.c:779 msgid "Last Used" msgstr "Laatst gebruikt" #: ../src/xdnd.c:255 #, c-format msgid "wXDNDGetTypeList failed = %ld" msgstr "" #: ../src/xmodifier.c:134 #, c-format msgid "key %s (0x%x) generates %s, which is generated by %s" msgstr "toets %s (0x%x) genereert %s die door %s wordt gegenereerd" #: ../src/xmodifier.c:140 #, c-format msgid "key %s (0x%x) generates %s, which is nonsensical" msgstr "toets %s (0x%x) genereert %s, wat onzinnig is" #: ../src/xmodifier.c:153 #, c-format msgid "key %s (0x%x) generates both %s and %s, which is nonsensical" msgstr "toets %s (0x%x) genereert zowel %s als %s, wat onzinnig is" #: ../src/xmodifier.c:301 #, c-format msgid "Can't convert keymask 0x%04X to a shortcut label" msgstr "Kan 'keymask' 0x%04X niet omzetten naar sneltoetsbenaming" # Keep next entry for wmaker-0.95.7 msgid "" " This fatal error occured probably due to a bug. Please fill the included " "BUGFORM and report it to %s." msgstr "" " Deze onherstelbare fout trad mogelijk op door 'n bug. Vul a.u.b. " "bijgaand BUGFORM in, en rapporteer 't aan %s." WindowMaker-0.95.9/Makefile.in0000644000175000017500000007613213642360053013046 00000000000000# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ $(top_srcdir)/m4/ax_pthread.m4 \ $(top_srcdir)/m4/ld-version-script.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/windowmaker.m4 \ $(top_srcdir)/m4/wm_attributes.m4 \ $(top_srcdir)/m4/wm_cflags_check.m4 \ $(top_srcdir)/m4/wm_i18n.m4 \ $(top_srcdir)/m4/wm_imgfmt_check.m4 \ $(top_srcdir)/m4/wm_libexif.m4 $(top_srcdir)/m4/wm_libmath.m4 \ $(top_srcdir)/m4/wm_prog_cc_c11.m4 \ $(top_srcdir)/m4/wm_xext_check.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ $(am__configure_deps) $(am__DIST_COMMON) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ cscope distdir distdir-am dist dist-all distcheck am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ $(LISP)config.h.in # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags CSCOPE = cscope am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in AUTHORS \ COPYING ChangeLog INSTALL NEWS README TODO compile \ config.guess config.sub install-sh ltmain.sh missing DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__post_remove_distdir = $(am__remove_distdir) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best DIST_TARGETS = dist-gzip distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ GFXLIBS = @GFXLIBS@ GREP = @GREP@ HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLIBS = @INTLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBBSD = @LIBBSD@ LIBEXIF = @LIBEXIF@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXINERAMA = @LIBXINERAMA@ LIBXMU = @LIBXMU@ LIBXRANDR = @LIBXRANDR@ LINGUAS = @LINGUAS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAGICKFLAGS = @MAGICKFLAGS@ MAGICKLIBS = @MAGICKLIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MANLANGDIRS = @MANLANGDIRS@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOLIBS = @PANGOLIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILMOFILES = @UTILMOFILES@ VERSION = @VERSION@ WINGSMOFILES = @WINGSMOFILES@ WINGS_VERSION = @WINGS_VERSION@ WMAKERMOFILES = @WMAKERMOFILES@ WPREFSMOFILES = @WPREFSMOFILES@ WRASTER_VERSION = @WRASTER_VERSION@ WUTIL_VERSION = @WUTIL_VERSION@ XCFLAGS = @XCFLAGS@ XFTCONFIG = @XFTCONFIG@ XFTFLAGS = @XFTFLAGS@ XFTLIBS = @XFTLIBS@ XGETTEXT = @XGETTEXT@ XLFLAGS = @XLFLAGS@ XLIBS = @XLIBS@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBRARY_PATH = @X_LIBRARY_PATH@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ defsdatadir = @defsdatadir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ inc_search_path = @inc_search_path@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lcov_output_directory = @lcov_output_directory@ lib_search_path = @lib_search_path@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pixmapdir = @pixmapdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ wprefs_bindir = @wprefs_bindir@ wprefs_datadir = @wprefs_datadir@ AUTOMAKE_OPTIONS = BUILT_SOURCES = config-paths.h DISTCLEANFILES = config-paths.h ACLOCAL_AMFLAGS = -I m4 # Improve coverage in 'make distcheck' by checking that translations work AM_DISTCHECK_CONFIGURE_FLAGS = --enable-silent-rules LINGUAS='*' SUBDIRS = wrlib WINGs src util po WindowMaker wmlib WPrefs.app doc DIST_SUBDIRS = $(SUBDIRS) test EXTRA_DIST = TODO BUGS BUGFORM FAQ INSTALL \ INSTALL-WMAKER README.i18n README.definable-cursor \ The-perfect-Window-Maker-patch.txt \ README COPYING.WTFPL autogen.sh \ email-clients.txt checkpatch.pl update-changelog.pl \ script/check-cmdline-options-doc.sh \ script/check-translation-sources.sh \ script/check-wmaker-loaddef-callbacks.sh \ script/generate-mapfile-from-header.sh \ script/generate-po-from-template.sh \ script/generate-txt-from-texi.sh \ script/nested-func-to-macro.sh \ script/replace-ac-keywords.sh @HAVE_XGETTEXT_TRUE@SUBDIRS_PO = WINGs/po po util/po WPrefs.app/po # Create a 'silent-rule' for our make check the same way automake does AM_V_CHKOPTS = $(am__v_CHKOPTS_$(V)) am__v_CHKOPTS_ = $(am__v_CHKOPTS_$(AM_DEFAULT_VERBOSITY)) am__v_CHKOPTS_0 = @echo " CHK $@" ; am__v_CHKOPTS_1 = all: $(BUILT_SOURCES) config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: am--refresh: Makefile @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.h.in: $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool config.lt # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscope: cscope.files test ! -s cscope.files \ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) clean-cscope: -rm -f cscope.files cscope.files: clean-cscope cscopelist cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__post_remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__post_remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) dist-tarZ: distdir @echo WARNING: "Support for distribution archives compressed with" \ "legacy program 'compress' is deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__post_remove_distdir) dist dist-all: $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' $(am__post_remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir) chmod u+w $(distdir) mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build/sub \ && ../../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__post_remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am $(MAKE) $(AM_MAKEFLAGS) check-local check: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) check-recursive all-am: Makefile config.h installdirs: installdirs-recursive installdirs-am: install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-hdr \ distclean-libtool distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) all check check-am install install-am \ install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--refresh check check-am check-local clean clean-cscope \ clean-generic clean-libtool cscope cscopelist-am ctags \ ctags-am dist dist-all dist-bzip2 dist-gzip dist-lzip \ dist-shar dist-tarZ dist-xz dist-zip distcheck distclean \ distclean-generic distclean-hdr distclean-libtool \ distclean-tags distcleancheck distdir distuninstallcheck dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile config.h: config-paths.h config-paths.h: Makefile @echo "Generating $@" @echo '/* this is a generated file - do not edit */' > $@ @echo '' >> $@ @echo '/* define where the translations are stored */' >> $@ @echo '#define LOCALEDIR "$(localedir)"' >> $@ @echo '' >> $@ @echo '/* define an extra path for pixmaps */' >> $@ @echo '#define PIXMAPDIR "$(pixmapdir)"' >> $@ @echo '' >> $@ @echo '/* where shared data is stored */' >> $@ @echo '#define PKGDATADIR "$(datadir)/WindowMaker"' >> $@ @echo '' >> $@ @echo '/* where the global defaults are stored */' >> $@ @echo '#define DEFSDATADIR "$(defsdatadir)"' >> $@ .PHONY: coverage-reset coverage @USE_LCOV_TRUE@coverage-reset: @USE_LCOV_TRUE@ find . -type f -name '*.gcda' -exec rm -f '{}' ';' @USE_LCOV_TRUE@ lcov --directory . --zerocounters @USE_LCOV_TRUE@coverage: @USE_LCOV_TRUE@ rm -rf coverage @lcov_output_directory@ @USE_LCOV_TRUE@ -mkdir -p coverage @lcov_output_directory@ @USE_LCOV_TRUE@ lcov --compat-libtool --capture --directory . --output-file coverage/coverage.info @USE_LCOV_TRUE@ genhtml --output-directory @lcov_output_directory@ coverage/coverage.info # make update-lang PO= # ========================== # Update the PO files against the POT file in all the translation sub-directories # # We do not use an automatic recursive target from Automake (AM_EXTRA_RECURSIVE_TARGETS) # because we want to check only once that the variable PO was defined; the added bonus # being that we do not process all directories but only the related ones, which is # faster and a lot less verbose update-lang: @HAVE_XGETTEXT_TRUE@ @if echo "$(PO)" | grep -v '^[a-z][a-z]\(_[A-Z][A-Z]\)\?$$' > /dev/null ; then \ @HAVE_XGETTEXT_TRUE@ echo "Error: invalid value \"$(PO)\" for update-lang, use PO=" >&2 ; exit 1 ; \ @HAVE_XGETTEXT_TRUE@ fi ; \ @HAVE_XGETTEXT_TRUE@ for subdir in $(SUBDIRS_PO); do \ @HAVE_XGETTEXT_TRUE@ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) update-lang || exit $$?); \ @HAVE_XGETTEXT_TRUE@ done @HAVE_XGETTEXT_FALSE@ @echo "Error: the program 'xgettext' was not found by configure, it is mandatory for this operation" >&2 ; exit 1 .PHONY: update-lang check-local: configure-documentation configure-documentation: $(AM_V_CHKOPTS)$(top_srcdir)/script/check-cmdline-options-doc.sh \ --program "$(top_srcdir)/configure" --text-doc "$(top_srcdir)/INSTALL-WMAKER" \ --ignore-prg 'with-PACKAGE,without-PACKAGE # only template names from Autoconf' \ --ignore-prg 'program-prefix,program-suffix,program-transform-name # in INSTALL' \ --ignore-prg 'version,quiet,srcdir,build,host,cache-file,no-create # in INSTALL' \ --ignore-prg 'enable-silent-rules,disable-silent-rules # should be in INSTALL' \ --ignore-prg 'enable-dependency-tracking,disable-dependency-tracking # in INSTALL' \ --ignore-prg 'enable-shared,enable-static # should be in INSTALL' \ --ignore-prg 'disable-option-checking,enable-fast-install # should be in INSTALL' \ --ignore-prg 'disable-libtool-lock,with-pic,with-gnu-ld,with-sysroot # for libtool' \ --ignore-prg 'runstatedir #new in autoconf 2.70, backported in Debian' \ --ignore-prg 'with-aix-soname #new in libtool 2.4.4' \ --ignore-prg 'with-x # no use, it would not work without X' .PHONY: configure-documentation # 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. .NOEXPORT: WindowMaker-0.95.9/BUGFORM0000644000175000017500000000326613642357773012042 00000000000000 WindowMaker Bug Report Form --------------------------- If you find a bug please fill this form and send it to wmaker-dev@googlegroups.com Please, USE THIS FORM!!! 0. Before reporting this bug I already: [ ] read the NEWS, README and INSTALL files [ ] read the list of already known bugs in the BUGS file [ ] downloaded and tried the latest version of WindowMaker 1. What happened: [ ] could not compile [ ] crashed [ ] configuration option does not work [ ] weird behavior [ ] cosmetic [ ] some problem with WPrefs [ ] others: ................................... 2. Detailed description of what happened: 3. How to reproduce the bug, if known: 4. Configure time options you specified: [ ] --enable-kanji [ ] --disable-shape [ ] --enable-single-icon [ ] --enable-modelock [ ] Others: ....................... 5. Changes to the src/wconfig.h file: 6. The error occurred during: [ ] configuration [ ] compilation [ ] start-up [ ] use 7. Changes made to the configuration files, if the error occurred during use: 8. Error messages output: 9. Fix, if known: 10. Other Notes: Your e-mail address: ................................................. Operating System (run "uname -a"): .................. Version: ....... Distribution (if applicable): ..................... Version:.......... X Server Vendor: ...................... Color Depth: ................. WindowMaker Version (run "wmaker -version"): ......................... 11. backtrace if the bug made Window Maker crash. PLEASE SEND THE BACKTRACE. Your bug report might be of not much use without one. strace/truss outputs are usually not useful for crashes, so you can skip it. The README file has instructions to make one. WindowMaker-0.95.9/INSTALL0000644000175000017500000003661413642360053012033 00000000000000Installation Instructions ************************* Copyright (C) 1994-1996, 1999-2002, 2004-2016 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without warranty of any kind. Basic Installation ================== Briefly, the shell command './configure && make && make install' should configure, build, and install this package. The following more-detailed instructions are generic; see the 'README' file for instructions specific to this package. Some packages provide this 'INSTALL' file but do not implement all of the features documented below. The lack of an optional feature in a given package is not necessarily a bug. More recommendations for GNU packages can be found in *note Makefile Conventions: (standards)Makefile Conventions. The 'configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a 'Makefile' in each directory of the package. It may also create one or more '.h' files containing system-dependent definitions. Finally, it creates a shell script 'config.status' that you can run in the future to recreate the current configuration, and a file 'config.log' containing compiler output (useful mainly for debugging 'configure'). It can also use an optional file (typically called 'config.cache' and enabled with '--cache-file=config.cache' or simply '-C') that saves the results of its tests to speed up reconfiguring. Caching is disabled by default to prevent problems with accidental use of stale cache files. If you need to do unusual things to compile the package, please try to figure out how 'configure' could check whether to do them, and mail diffs or instructions to the address given in the 'README' so they can be considered for the next release. If you are using the cache, and at some point 'config.cache' contains results you don't want to keep, you may remove or edit it. The file 'configure.ac' (or 'configure.in') is used to create 'configure' by a program called 'autoconf'. You need 'configure.ac' if you want to change it or regenerate 'configure' using a newer version of 'autoconf'. The simplest way to compile this package is: 1. 'cd' to the directory containing the package's source code and type './configure' to configure the package for your system. Running 'configure' might take a while. While running, it prints some messages telling which features it is checking for. 2. Type 'make' to compile the package. 3. Optionally, type 'make check' to run any self-tests that come with the package, generally using the just-built uninstalled binaries. 4. Type 'make install' to install the programs and any data files and documentation. When installing into a prefix owned by root, it is recommended that the package be configured and built as a regular user, and only the 'make install' phase executed with root privileges. 5. Optionally, type 'make installcheck' to repeat any self-tests, but this time using the binaries in their final installed location. This target does not install anything. Running this target as a regular user, particularly if the prior 'make install' required root privileges, verifies that the installation completed correctly. 6. You can remove the program binaries and object files from the source code directory by typing 'make clean'. To also remove the files that 'configure' created (so you can compile the package for a different kind of computer), type 'make distclean'. There is also a 'make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. 7. Often, you can also type 'make uninstall' to remove the installed files again. In practice, not all packages have tested that uninstallation works correctly, even though it is required by the GNU Coding Standards. 8. Some packages, particularly those that use Automake, provide 'make distcheck', which can by used by developers to test that all other targets like 'make install' and 'make uninstall' work correctly. This target is generally not run by end users. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the 'configure' script does not know about. Run './configure --help' for details on some of the pertinent environment variables. You can give 'configure' initial values for configuration parameters by setting variables in the command line or in the environment. Here is an example: ./configure CC=c99 CFLAGS=-g LIBS=-lposix *Note Defining Variables::, for more details. Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you can use GNU 'make'. 'cd' to the directory where you want the object files and executables to go and run the 'configure' script. 'configure' automatically checks for the source code in the directory that 'configure' is in and in '..'. This is known as a "VPATH" build. With a non-GNU 'make', it is safer to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use 'make distclean' before reconfiguring for another architecture. On MacOS X 10.5 and later systems, you can create libraries and executables that work on multiple system types--known as "fat" or "universal" binaries--by specifying multiple '-arch' options to the compiler but only a single '-arch' option to the preprocessor. Like this: ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CPP="gcc -E" CXXCPP="g++ -E" This is not guaranteed to produce working output in all cases, you may have to build one architecture at a time and combine the results using the 'lipo' tool if you have problems. Installation Names ================== By default, 'make install' installs the package's commands under '/usr/local/bin', include files under '/usr/local/include', etc. You can specify an installation prefix other than '/usr/local' by giving 'configure' the option '--prefix=PREFIX', where PREFIX must be an absolute file name. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you pass the option '--exec-prefix=PREFIX' to 'configure', the package uses PREFIX as the prefix for installing programs and libraries. Documentation and other data files still use the regular prefix. In addition, if you use an unusual directory layout you can give options like '--bindir=DIR' to specify different values for particular kinds of files. Run 'configure --help' for a list of the directories you can set and what kinds of files go in them. In general, the default for these options is expressed in terms of '${prefix}', so that specifying just '--prefix' will affect all of the other directory specifications that were not explicitly provided. The most portable way to affect installation locations is to pass the correct locations to 'configure'; however, many packages provide one or both of the following shortcuts of passing variable assignments to the 'make install' command line to change installation locations without having to reconfigure or recompile. The first method involves providing an override variable for each affected directory. For example, 'make install prefix=/alternate/directory' will choose an alternate location for all directory configuration variables that were expressed in terms of '${prefix}'. Any directories that were specified during 'configure', but not in terms of '${prefix}', must each be overridden at install time for the entire installation to be relocated. The approach of makefile variable overrides for each directory variable is required by the GNU Coding Standards, and ideally causes no recompilation. However, some platforms have known limitations with the semantics of shared libraries that end up requiring recompilation when using this method, particularly noticeable in packages that use GNU Libtool. The second method involves providing the 'DESTDIR' variable. For example, 'make install DESTDIR=/alternate/directory' will prepend '/alternate/directory' before all installation names. The approach of 'DESTDIR' overrides is not required by the GNU Coding Standards, and does not work on platforms that have drive letters. On the other hand, it does better at avoiding recompilation issues, and works well even when some directory options were not specified in terms of '${prefix}' at 'configure' time. Optional Features ================= If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving 'configure' the option '--program-prefix=PREFIX' or '--program-suffix=SUFFIX'. Some packages pay attention to '--enable-FEATURE' options to 'configure', where FEATURE indicates an optional part of the package. They may also pay attention to '--with-PACKAGE' options, where PACKAGE is something like 'gnu-as' or 'x' (for the X Window System). The 'README' should mention any '--enable-' and '--with-' options that the package recognizes. For packages that use the X Window System, 'configure' can usually find the X include and library files automatically, but if it doesn't, you can use the 'configure' options '--x-includes=DIR' and '--x-libraries=DIR' to specify their locations. Some packages offer the ability to configure how verbose the execution of 'make' will be. For these packages, running './configure --enable-silent-rules' sets the default to minimal output, which can be overridden with 'make V=1'; while running './configure --disable-silent-rules' sets the default to verbose, which can be overridden with 'make V=0'. Particular systems ================== On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC is not installed, it is recommended to use the following options in order to use an ANSI C compiler: ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" and if that doesn't work, install pre-built binaries of GCC for HP-UX. HP-UX 'make' updates targets which have the same time stamps as their prerequisites, which makes it generally unusable when shipped generated files such as 'configure' are involved. Use GNU 'make' instead. On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot parse its '' header file. The option '-nodtk' can be used as a workaround. If GNU CC is not installed, it is therefore recommended to try ./configure CC="cc" and if that doesn't work, try ./configure CC="cc -nodtk" On Solaris, don't put '/usr/ucb' early in your 'PATH'. This directory contains several dysfunctional programs; working variants of these programs are available in '/usr/bin'. So, if you need '/usr/ucb' in your 'PATH', put it _after_ '/usr/bin'. On Haiku, software installed for all users goes in '/boot/common', not '/usr/local'. It is recommended to use the following options: ./configure --prefix=/boot/common Specifying the System Type ========================== There may be some features 'configure' cannot figure out automatically, but needs to determine by the type of machine the package will run on. Usually, assuming the package is built to be run on the _same_ architectures, 'configure' can figure that out, but if it prints a message saying it cannot guess the machine type, give it the '--build=TYPE' option. TYPE can either be a short name for the system type, such as 'sun4', or a canonical name which has the form: CPU-COMPANY-SYSTEM where SYSTEM can have one of these forms: OS KERNEL-OS See the file 'config.sub' for the possible values of each field. If 'config.sub' isn't included in this package, then this package doesn't need to know the machine type. If you are _building_ compiler tools for cross-compiling, you should use the option '--target=TYPE' to select the type of system they will produce code for. If you want to _use_ a cross compiler, that generates code for a platform different from the build platform, you should specify the "host" platform (i.e., that on which the generated programs will eventually be run) with '--host=TYPE'. Sharing Defaults ================ If you want to set default values for 'configure' scripts to share, you can create a site shell script called 'config.site' that gives default values for variables like 'CC', 'cache_file', and 'prefix'. 'configure' looks for 'PREFIX/share/config.site' if it exists, then 'PREFIX/etc/config.site' if it exists. Or, you can set the 'CONFIG_SITE' environment variable to the location of the site script. A warning: not all 'configure' scripts look for a site script. Defining Variables ================== Variables not defined in a site shell script can be set in the environment passed to 'configure'. However, some packages may run configure again during the build, and the customized values of these variables may be lost. In order to avoid this problem, you should set them in the 'configure' command line, using 'VAR=value'. For example: ./configure CC=/usr/local2/bin/gcc causes the specified 'gcc' to be used as the C compiler (unless it is overridden in the site shell script). Unfortunately, this technique does not work for 'CONFIG_SHELL' due to an Autoconf limitation. Until the limitation is lifted, you can use this workaround: CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash 'configure' Invocation ====================== 'configure' recognizes the following options to control how it operates. '--help' '-h' Print a summary of all of the options to 'configure', and exit. '--help=short' '--help=recursive' Print a summary of the options unique to this package's 'configure', and exit. The 'short' variant lists options used only in the top level, while the 'recursive' variant lists options also present in any nested packages. '--version' '-V' Print the version of Autoconf used to generate the 'configure' script, and exit. '--cache-file=FILE' Enable the cache: use and save the results of the tests in FILE, traditionally 'config.cache'. FILE defaults to '/dev/null' to disable caching. '--config-cache' '-C' Alias for '--cache-file=config.cache'. '--quiet' '--silent' '-q' Do not print messages saying which checks are being made. To suppress all normal output, redirect it to '/dev/null' (any error messages will still be shown). '--srcdir=DIR' Look for the package's source code in directory DIR. Usually 'configure' can determine that directory automatically. '--prefix=DIR' Use DIR as the installation prefix. *note Installation Names:: for more details, including other options available for fine-tuning the installation locations. '--no-create' '-n' Run the configure checks, but stop before creating any output files. 'configure' also accepts some other, not widely useful, options. Run 'configure --help' for more details. WindowMaker-0.95.9/m4/0000755000175000017500000000000013642365211011371 500000000000000WindowMaker-0.95.9/m4/ltoptions.m40000644000175000017500000003426213642360045013615 00000000000000# Helper functions for option handling. -*- Autoconf -*- # # Copyright (C) 2004-2005, 2007-2009, 2011-2015 Free Software # Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 8 ltoptions.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) # _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) # ------------------------------------------ m4_define([_LT_MANGLE_OPTION], [[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) # _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) # --------------------------------------- # Set option OPTION-NAME for macro MACRO-NAME, and if there is a # matching handler defined, dispatch to it. Other OPTION-NAMEs are # saved as a flag. m4_define([_LT_SET_OPTION], [m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), _LT_MANGLE_DEFUN([$1], [$2]), [m4_warning([Unknown $1 option '$2'])])[]dnl ]) # _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) # ------------------------------------------------------------ # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. m4_define([_LT_IF_OPTION], [m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) # _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) # ------------------------------------------------------- # Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME # are set. m4_define([_LT_UNLESS_OPTIONS], [m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), [m4_define([$0_found])])])[]dnl m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 ])[]dnl ]) # _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) # ---------------------------------------- # OPTION-LIST is a space-separated list of Libtool options associated # with MACRO-NAME. If any OPTION has a matching handler declared with # LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about # the unknown option and exit. m4_defun([_LT_SET_OPTIONS], [# Set options m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [_LT_SET_OPTION([$1], _LT_Option)]) m4_if([$1],[LT_INIT],[ dnl dnl Simply set some default values (i.e off) if boolean options were not dnl specified: _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no ]) _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no ]) dnl dnl If no reference was made to various pairs of opposing options, then dnl we run the default mode handler for the pair. For example, if neither dnl 'shared' nor 'disable-shared' was passed, we enable building of shared dnl archives by default: _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], [_LT_ENABLE_FAST_INSTALL]) _LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4], [_LT_WITH_AIX_SONAME([aix])]) ]) ])# _LT_SET_OPTIONS ## --------------------------------- ## ## Macros to handle LT_INIT options. ## ## --------------------------------- ## # _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) # ----------------------------------------- m4_define([_LT_MANGLE_DEFUN], [[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) # LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) # ----------------------------------------------- m4_define([LT_OPTION_DEFINE], [m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl ])# LT_OPTION_DEFINE # dlopen # ------ LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes ]) AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'dlopen' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) # win32-dll # --------- # Declare package support for building win32 dll's. LT_OPTION_DEFINE([LT_INIT], [win32-dll], [enable_win32_dll=yes case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; esac test -z "$AS" && AS=as _LT_DECL([], [AS], [1], [Assembler program])dnl test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl ])# win32-dll AU_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_REQUIRE([AC_CANONICAL_HOST])dnl _LT_SET_OPTION([LT_INIT], [win32-dll]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'win32-dll' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) # _LT_ENABLE_SHARED([DEFAULT]) # ---------------------------- # implement the --enable-shared flag, and supports the 'shared' and # 'disable-shared' LT_INIT options. # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_SHARED], [m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([shared], [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS=$lt_save_ifs ;; esac], [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) _LT_DECL([build_libtool_libs], [enable_shared], [0], [Whether or not to build shared libraries]) ])# _LT_ENABLE_SHARED LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) # Old names: AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) ]) AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared]) ]) AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_SHARED], []) dnl AC_DEFUN([AM_DISABLE_SHARED], []) # _LT_ENABLE_STATIC([DEFAULT]) # ---------------------------- # implement the --enable-static flag, and support the 'static' and # 'disable-static' LT_INIT options. # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_STATIC], [m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([static], [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS=$lt_save_ifs ;; esac], [enable_static=]_LT_ENABLE_STATIC_DEFAULT) _LT_DECL([build_old_libs], [enable_static], [0], [Whether or not to build static libraries]) ])# _LT_ENABLE_STATIC LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) # Old names: AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) ]) AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static]) ]) AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_STATIC], []) dnl AC_DEFUN([AM_DISABLE_STATIC], []) # _LT_ENABLE_FAST_INSTALL([DEFAULT]) # ---------------------------------- # implement the --enable-fast-install flag, and support the 'fast-install' # and 'disable-fast-install' LT_INIT options. # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_FAST_INSTALL], [m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([fast-install], [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS=$lt_save_ifs ;; esac], [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) _LT_DECL([fast_install], [enable_fast_install], [0], [Whether or not to optimize for fast installation])dnl ])# _LT_ENABLE_FAST_INSTALL LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) # Old names: AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'fast-install' option into LT_INIT's first parameter.]) ]) AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'disable-fast-install' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) # _LT_WITH_AIX_SONAME([DEFAULT]) # ---------------------------------- # implement the --with-aix-soname flag, and support the `aix-soname=aix' # and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. DEFAULT # is either `aix', `both' or `svr4'. If omitted, it defaults to `aix'. m4_define([_LT_WITH_AIX_SONAME], [m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl shared_archive_member_spec= case $host,$enable_shared in power*-*-aix[[5-9]]*,yes) AC_MSG_CHECKING([which variant of shared library versioning to provide]) AC_ARG_WITH([aix-soname], [AS_HELP_STRING([--with-aix-soname=aix|svr4|both], [shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])], [case $withval in aix|svr4|both) ;; *) AC_MSG_ERROR([Unknown argument to --with-aix-soname]) ;; esac lt_cv_with_aix_soname=$with_aix_soname], [AC_CACHE_VAL([lt_cv_with_aix_soname], [lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT) with_aix_soname=$lt_cv_with_aix_soname]) AC_MSG_RESULT([$with_aix_soname]) if test aix != "$with_aix_soname"; then # For the AIX way of multilib, we name the shared archive member # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, # the AIX toolchain works better with OBJECT_MODE set (default 32). if test 64 = "${OBJECT_MODE-32}"; then shared_archive_member_spec=shr_64 else shared_archive_member_spec=shr fi fi ;; *) with_aix_soname=aix ;; esac _LT_DECL([], [shared_archive_member_spec], [0], [Shared archive member basename, for filename based shared library versioning on AIX])dnl ])# _LT_WITH_AIX_SONAME LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])]) LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])]) LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])]) # _LT_WITH_PIC([MODE]) # -------------------- # implement the --with-pic flag, and support the 'pic-only' and 'no-pic' # LT_INIT options. # MODE is either 'yes' or 'no'. If omitted, it defaults to 'both'. m4_define([_LT_WITH_PIC], [AC_ARG_WITH([pic], [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $withval; do IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS=$lt_save_ifs ;; esac], [pic_mode=m4_default([$1], [default])]) _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl ])# _LT_WITH_PIC LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) # Old name: AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'pic-only' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) ## ----------------- ## ## LTDL_INIT Options ## ## ----------------- ## m4_define([_LTDL_MODE], []) LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], [m4_define([_LTDL_MODE], [nonrecursive])]) LT_OPTION_DEFINE([LTDL_INIT], [recursive], [m4_define([_LTDL_MODE], [recursive])]) LT_OPTION_DEFINE([LTDL_INIT], [subproject], [m4_define([_LTDL_MODE], [subproject])]) m4_define([_LTDL_TYPE], []) LT_OPTION_DEFINE([LTDL_INIT], [installable], [m4_define([_LTDL_TYPE], [installable])]) LT_OPTION_DEFINE([LTDL_INIT], [convenience], [m4_define([_LTDL_TYPE], [convenience])]) WindowMaker-0.95.9/m4/wm_attributes.m40000644000175000017500000000635513431646201014452 00000000000000# wm_attributes.m4 - Macros to check compiler attributes and define macros # # Copyright (c) 2013 Christophe Curis # # 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., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # WM_C_NORETURN # ------------- # # Checks if the compiler supports ISO C11 noreturn attribute, if not # try to define the keyword to a known syntax that does the job, or # if nothing works sets it to empty to, at least, be able to # compile the sources AC_DEFUN_ONCE([WM_C_NORETURN], [AC_REQUIRE([_WM_SHELLFN_FUNCATTR]) AC_CACHE_CHECK([for noreturn], [wm_cv_c_noreturn], [wm_cv_c_noreturn=no AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [#include #include /* Attribute in the prototype of the function */ noreturn int test_function(void); /* Attribute on the function itself */ noreturn int test_function(void) { _exit(1); } ], [ test_function();])], [wm_cv_c_noreturn=stdnoreturn], [for wm_attr in dnl "__attribute__((noreturn))" dnl for modern GCC-like compilers "__attribute__((__noreturn__))" dnl for older GCC-like compilers "__declspec(noreturn)" dnl for some other compilers ; do AS_IF([wm_fn_c_try_compile_funcattr "$wm_attr"], [wm_cv_c_noreturn="$wm_attr" ; break]) done]) dnl ]) AS_CASE([$wm_cv_c_noreturn], [stdnoreturn], [AC_DEFINE([HAVE_STDNORETURN], 1, [Defined if header "stdnoreturn.h" exists, it defines ISO C11 attribute 'noreturn' and it works])], [no], [AC_DEFINE([noreturn], [], [Defines the attribute to tell the compiler that a function never returns, if the ISO C11 attribute does not work])], [AC_DEFINE_UNQUOTED([noreturn], [${wm_cv_c_noreturn}], [Defines the attribute to tell the compiler that a function never returns, if the ISO C11 attribute does not work])]) ]) # _WM_SHELLFN_FUNCATTRIBUTE # ------------------------- # (internal shell function only!) # # Create a shell function to check if we can compile with special # function attributes AC_DEFUN([_WM_SHELLFN_FUNCATTR], [@%:@ wm_fn_c_try_compile_funcattr ATTRIBUTE @%:@ --------------------------------------- @%:@ Try compiling a function with the attribute ATTRIBUTE wm_fn_c_try_compile_funcattr () { AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [ /* Attribute in the prototype of the function */ int test_function(int arg) $[]1; /* Attribute on the function itself */ $[]1 int test_function(int arg) { return arg - 1; }], [int val; val = test_function(1); return val;])], [wm_retval=0], [wm_retval=1]) AS_SET_STATUS([$wm_retval]) } ]) WindowMaker-0.95.9/m4/ax_cflags_gcc_option.m40000644000175000017500000002073313431646201015710 00000000000000# =========================================================================== # http://www.gnu.org/software/autoconf-archive/ax_cflags_gcc_option.html # =========================================================================== # # SYNOPSIS # # AX_CFLAGS_GCC_OPTION (optionflag [,[shellvar][,[A][,[NA]]]) # # DESCRIPTION # # AX_CFLAGS_GCC_OPTION(-fvomit-frame) would show a message as like # "checking CFLAGS for gcc -fvomit-frame ... yes" and adds the optionflag # to CFLAGS if it is understood. You can override the shellvar-default of # CFLAGS of course. The order of arguments stems from the explicit macros # like AX_CFLAGS_WARN_ALL. # # The cousin AX_CXXFLAGS_GCC_OPTION would check for an option to add to # CXXFLAGS - and it uses the autoconf setup for C++ instead of C (since it # is possible to use different compilers for C and C++). # # The macro is a lot simpler than any special AX_CFLAGS_* macro (or # ax_cxx_rtti.m4 macro) but allows to check for arbitrary options. # However, if you use this macro in a few places, it would be great if you # would make up a new function-macro and submit it to the ac-archive. # # - $1 option-to-check-for : required ("-option" as non-value) # - $2 shell-variable-to-add-to : CFLAGS (or CXXFLAGS in the other case) # - $3 action-if-found : add value to shellvariable # - $4 action-if-not-found : nothing # # Note: in earlier versions, $1-$2 were swapped. We try to detect the # situation and accept a $2=~/-/ as being the old option-to-check-for. # # There are other variants that emerged from the original macro variant # which did just test an option to be possibly added. However, some # compilers accept an option silently, or possibly for just another option # that was not intended. Therefore, we have to do a generic test for a # compiler family. For gcc we check "-pedantic" being accepted which is # also understood by compilers who just want to be compatible with gcc # even when not being made from gcc sources. # # See also: AX_CFLAGS_SUN_OPTION, AX_CFLAGS_HPUX_OPTION, # AX_CFLAGS_AIX_OPTION, and AX_CFLAGS_IRIX_OPTION. # # LICENSE # # Copyright (c) 2008 Guido U. Draheim # # 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, see . # # As a special exception, the respective Autoconf Macro's copyright owner # gives unlimited permission to copy, distribute and modify the configure # scripts that are the output of Autoconf when processing the Macro. You # need not follow the terms of the GNU General Public License when using # or distributing such scripts, even though portions of the text of the # Macro appear in them. The GNU General Public License (GPL) does govern # all other use of the material that constitutes the Autoconf Macro. # # This special exception to the GPL applies to versions of the Autoconf # Macro released by the Autoconf Archive. When you make and distribute a # modified version of the Autoconf Macro, you may extend this special # exception to the GPL to apply to your modified version as well. #serial 8 AC_DEFUN([AX_CFLAGS_GCC_OPTION_OLD], [dnl AS_VAR_PUSHDEF([FLAGS],[CFLAGS])dnl AS_VAR_PUSHDEF([VAR],[ax_cv_cflags_gcc_option_$2])dnl AC_CACHE_CHECK([m4_ifval($1,$1,FLAGS) for gcc m4_ifval($2,$2,-option)], VAR,[VAR="no, unknown" AC_LANG_SAVE AC_LANG_C ac_save_[]FLAGS="$[]FLAGS" for ac_arg dnl in "-pedantic -Werror % m4_ifval($2,$2,-option)" dnl GCC "-pedantic % m4_ifval($2,$2,-option) %% no, obsolete" dnl new GCC # do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` AC_TRY_COMPILE([],[return 0;], [VAR=`echo $ac_arg | sed -e 's,.*% *,,'` ; break]) done FLAGS="$ac_save_[]FLAGS" AC_LANG_RESTORE ]) case ".$VAR" in .ok|.ok,*) m4_ifvaln($3,$3) ;; .|.no|.no,*) m4_ifvaln($4,$4) ;; *) m4_ifvaln($3,$3,[ if echo " $[]m4_ifval($1,$1,FLAGS) " | grep " $VAR " 2>&1 >/dev/null then AC_RUN_LOG([: m4_ifval($1,$1,FLAGS) does contain $VAR]) else AC_RUN_LOG([: m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $VAR"]) m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $VAR" fi ]) ;; esac AS_VAR_POPDEF([VAR])dnl AS_VAR_POPDEF([FLAGS])dnl ]) dnl the only difference - the LANG selection... and the default FLAGS AC_DEFUN([AX_CXXFLAGS_GCC_OPTION_OLD], [dnl AS_VAR_PUSHDEF([FLAGS],[CXXFLAGS])dnl AS_VAR_PUSHDEF([VAR],[ax_cv_cxxflags_gcc_option_$2])dnl AC_CACHE_CHECK([m4_ifval($1,$1,FLAGS) for gcc m4_ifval($2,$2,-option)], VAR,[VAR="no, unknown" AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_[]FLAGS="$[]FLAGS" for ac_arg dnl in "-pedantic -Werror % m4_ifval($2,$2,-option)" dnl GCC "-pedantic % m4_ifval($2,$2,-option) %% no, obsolete" dnl new GCC # do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` AC_TRY_COMPILE([],[return 0;], [VAR=`echo $ac_arg | sed -e 's,.*% *,,'` ; break]) done FLAGS="$ac_save_[]FLAGS" AC_LANG_RESTORE ]) case ".$VAR" in .ok|.ok,*) m4_ifvaln($3,$3) ;; .|.no|.no,*) m4_ifvaln($4,$4) ;; *) m4_ifvaln($3,$3,[ if echo " $[]m4_ifval($1,$1,FLAGS) " | grep " $VAR " 2>&1 >/dev/null then AC_RUN_LOG([: m4_ifval($1,$1,FLAGS) does contain $VAR]) else AC_RUN_LOG([: m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $VAR"]) m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $VAR" fi ]) ;; esac AS_VAR_POPDEF([VAR])dnl AS_VAR_POPDEF([FLAGS])dnl ]) dnl ------------------------------------------------------------------------- AC_DEFUN([AX_CFLAGS_GCC_OPTION_NEW], [dnl AS_VAR_PUSHDEF([FLAGS],[CFLAGS])dnl AS_VAR_PUSHDEF([VAR],[ax_cv_cflags_gcc_option_$1])dnl AC_CACHE_CHECK([m4_ifval($2,$2,FLAGS) for gcc m4_ifval($1,$1,-option)], VAR,[VAR="no, unknown" AC_LANG_SAVE AC_LANG_C ac_save_[]FLAGS="$[]FLAGS" for ac_arg dnl in "-pedantic -Werror % m4_ifval($1,$1,-option)" dnl GCC "-pedantic % m4_ifval($1,$1,-option) %% no, obsolete" dnl new GCC # do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` AC_TRY_COMPILE([],[return 0;], [VAR=`echo $ac_arg | sed -e 's,.*% *,,'` ; break]) done FLAGS="$ac_save_[]FLAGS" AC_LANG_RESTORE ]) case ".$VAR" in .ok|.ok,*) m4_ifvaln($3,$3) ;; .|.no|.no,*) m4_ifvaln($4,$4) ;; *) m4_ifvaln($3,$3,[ if echo " $[]m4_ifval($2,$2,FLAGS) " | grep " $VAR " 2>&1 >/dev/null then AC_RUN_LOG([: m4_ifval($2,$2,FLAGS) does contain $VAR]) else AC_RUN_LOG([: m4_ifval($2,$2,FLAGS)="$m4_ifval($2,$2,FLAGS) $VAR"]) m4_ifval($2,$2,FLAGS)="$m4_ifval($2,$2,FLAGS) $VAR" fi ]) ;; esac AS_VAR_POPDEF([VAR])dnl AS_VAR_POPDEF([FLAGS])dnl ]) dnl the only difference - the LANG selection... and the default FLAGS AC_DEFUN([AX_CXXFLAGS_GCC_OPTION_NEW], [dnl AS_VAR_PUSHDEF([FLAGS],[CXXFLAGS])dnl AS_VAR_PUSHDEF([VAR],[ax_cv_cxxflags_gcc_option_$1])dnl AC_CACHE_CHECK([m4_ifval($2,$2,FLAGS) for gcc m4_ifval($1,$1,-option)], VAR,[VAR="no, unknown" AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_[]FLAGS="$[]FLAGS" for ac_arg dnl in "-pedantic -Werror % m4_ifval($1,$1,-option)" dnl GCC "-pedantic % m4_ifval($1,$1,-option) %% no, obsolete" dnl new GCC # do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` AC_TRY_COMPILE([],[return 0;], [VAR=`echo $ac_arg | sed -e 's,.*% *,,'` ; break]) done FLAGS="$ac_save_[]FLAGS" AC_LANG_RESTORE ]) case ".$VAR" in .ok|.ok,*) m4_ifvaln($3,$3) ;; .|.no|.no,*) m4_ifvaln($4,$4) ;; *) m4_ifvaln($3,$3,[ if echo " $[]m4_ifval($2,$2,FLAGS) " | grep " $VAR " 2>&1 >/dev/null then AC_RUN_LOG([: m4_ifval($2,$2,FLAGS) does contain $VAR]) else AC_RUN_LOG([: m4_ifval($2,$2,FLAGS)="$m4_ifval($2,$2,FLAGS) $VAR"]) m4_ifval($2,$2,FLAGS)="$m4_ifval($2,$2,FLAGS) $VAR" fi ]) ;; esac AS_VAR_POPDEF([VAR])dnl AS_VAR_POPDEF([FLAGS])dnl ]) AC_DEFUN([AX_CFLAGS_GCC_OPTION],[ifelse(m4_bregexp([$2],[-]),-1, [AX_CFLAGS_GCC_OPTION_NEW($@)],[AX_CFLAGS_GCC_OPTION_OLD($@)])]) AC_DEFUN([AX_CXXFLAGS_GCC_OPTION],[ifelse(m4_bregexp([$2],[-]),-1, [AX_CXXFLAGS_GCC_OPTION_NEW($@)],[AX_CXXFLAGS_GCC_OPTION_OLD($@)])]) WindowMaker-0.95.9/m4/wm_xext_check.m40000644000175000017500000001766213642357774014436 00000000000000# wm_xext_check.m4 - Macros to check for X extensions support libraries # # Copyright (c) 2013 Christophe CURIS # # 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., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # WM_XEXT_CHECK_XSHAPE # -------------------- # # Check for the X Shaped Window extension # The check depends on variable 'enable_xshape' being either: # yes - detect, fail if not found # no - do not detect, disable support # auto - detect, disable if not found # # When found, append appropriate stuff in XLIBS, and append info to # the variable 'supported_xext' # When not found, append info to variable 'unsupported' AC_DEFUN_ONCE([WM_XEXT_CHECK_XSHAPE], [WM_LIB_CHECK([XShape], [-lXext], [XShapeSelectInput], [$XLIBS], [wm_save_CFLAGS="$CFLAGS" AS_IF([wm_fn_lib_try_compile "X11/extensions/shape.h" "Window win;" "XShapeSelectInput(NULL, win, 0)" ""], [], [AC_MSG_ERROR([found $CACHEVAR but cannot compile using XShape header])]) CFLAGS="$wm_save_CFLAGS"], [supported_xext], [XLIBS], [enable_shape], [-])dnl ]) dnl AC_DEFUN # WM_XEXT_CHECK_XSHM # ------------------ # # Check for the MIT-SHM extension for Shared Memory support # The check depends on variable 'enable_shm' being either: # yes - detect, fail if not found # no - do not detect, disable support # auto - detect, disable if not found # # When found, append appropriate stuff in XLIBS, and append info to # the variable 'supported_xext' # When not found, append info to variable 'unsupported' AC_DEFUN_ONCE([WM_XEXT_CHECK_XSHM], [WM_LIB_CHECK([XShm], [-lXext], [XShmAttach], [$XLIBS], [wm_save_CFLAGS="$CFLAGS" AC_COMPILE_IFELSE([AC_LANG_PROGRAM([dnl @%:@include @%:@include ], [dnl XShmSegmentInfo si; XShmAttach(NULL, &si);])], [], [AC_MSG_ERROR([found $CACHEVAR but cannot compile using XShm header])]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([dnl @%:@include @%:@include ], [dnl shmget(IPC_PRIVATE, 1024, IPC_CREAT);])], [], [AC_MSG_ERROR([found $CACHEVAR but cannot compile using ipc/shm headers])]) CFLAGS="$wm_save_CFLAGS"], [supported_xext], [XLIBS], [enable_shm], [-])dnl ]) dnl AC_DEFUN # WM_XEXT_CHECK_XMU # ----------------- # # Check for the libXmu (X Misceleanous Utilities) # When found, append it to LIBXMU # When not found, generate an error because we have no work-around for it AC_DEFUN_ONCE([WM_EXT_CHECK_XMU], [AC_CACHE_CHECK([for Xmu library], [wm_cv_xext_xmu], [wm_cv_xext_xmu=no dnl dnl We check that the library is available wm_save_LIBS="$LIBS" AS_IF([wm_fn_lib_try_link "XmuLookupStandardColormap" "-lXmu"], [wm_cv_xext_xmu="-lXmu"]) LIBS="$wm_save_LIBS" AS_IF([test "x$wm_cv_xext_xmu" != "xno"], [dnl dnl A library was found, check if header is available and compile wm_save_CFLAGS="$CFLAGS" AC_COMPILE_IFELSE([AC_LANG_PROGRAM([dnl @%:@include @%:@include @%:@include Display *dpy; Atom prop; ], [dnl XmuLookupStandardColormap(dpy, 0, 0, 0, prop, False, True);]) ], [], [AC_MSG_ERROR([found $wm_cv_xext_xmu but cannot compile with the header])]) CFLAGS="$wm_save_CFLAGS"]) ]) dnl The cached check already reported problems when not found AS_IF([test "wm_cv_xext_xmu" = "xno"], [LIBXMU="" unsupported="$unsupported Xmu"], [AC_DEFINE([HAVE_LIBXMU], [1], [defined when the libXmu library was found]) LIBXMU="$wm_cv_xext_xmu" supported_xext="$supported_xext Xmu"]) AC_SUBST(LIBXMU)dnl ]) # WM_XEXT_CHECK_XINERAMA # ---------------------- # # Check for the Xinerama extension for multiscreen-as-one support # The check depends on variable 'enable_xinerama' being either: # yes - detect, fail if not found # no - do not detect, disable support # auto - detect, disable if not found # # When found, append appropriate stuff in LIBXINERAMA, and append info to # the variable 'supported_xext' # When not found, append info to variable 'unsupported' AC_DEFUN_ONCE([WM_XEXT_CHECK_XINERAMA], [LIBXINERAMA="" AS_IF([test "x$enable_xinerama" = "xno"], [unsupported="$unsupported Xinerama"], [AC_CACHE_CHECK([for Xinerama support library], [wm_cv_xext_xinerama], [wm_cv_xext_xinerama=no dnl dnl We check that the library is available wm_save_LIBS="$LIBS" for wm_arg in dnl dnl Lib flag % Function name % info "-lXinerama % XineramaQueryScreens" dnl "-lXext % XineramaGetInfo % solaris" ; do AS_IF([wm_fn_lib_try_link "`echo "$wm_arg" | dnl sed -e 's,^[[^%]]*% *,,' | sed -e 's, *%.*$,,' `" dnl "$XLFLAGS $XLIBS `echo "$wm_arg" | sed -e 's, *%.*$,,' `"], [wm_cv_xext_xinerama="`echo "$wm_arg" | sed -e 's, *%[[^%]]*, ,' `" break]) done LIBS="$wm_save_LIBS" AS_IF([test "x$wm_cv_xext_xinerama" = "xno"], [AS_IF([test "x$enable_xinerama" = "xyesno"], [AC_MSG_ERROR([explicit Xinerama support requested but no library found])])], [dnl dnl A library was found, check if header is available and compiles wm_save_CFLAGS="$CFLAGS" AS_CASE([`echo "$wm_cv_xext_xinerama" | sed -e 's,^[[^%]]*,,' `], [*solaris*], [wm_header="X11/extensions/xinerama.h" ; wm_fct="XineramaGetInfo(NULL, 0, NULL, NULL, &intval)"], [wm_header="X11/extensions/Xinerama.h" ; wm_fct="XineramaQueryScreens(NULL, &intval)"]) AS_IF([wm_fn_lib_try_compile "$wm_header" "int intval;" "$wm_fct" ""], [], [AC_MSG_ERROR([found $wm_cv_xext_xinerama but cannot compile with the header])]) AS_UNSET([wm_header]) AS_UNSET([wm_fct]) CFLAGS="$wm_save_CFLAGS" dnl ]) dnl ]) AS_IF([test "x$wm_cv_xext_xinerama" = "xno"], [unsupported="$unsupported Xinerama" enable_xinerama="no"], [LIBXINERAMA="`echo "$wm_cv_xext_xinerama" | sed -e 's, *%.*$,,' `" AC_DEFINE([USE_XINERAMA], [1], [defined when usable Xinerama library with header was found]) AS_CASE([`echo "$wm_cv_xext_xinerama" | sed -e 's,^[[^%]]*,,' `], [*solaris*], [AC_DEFINE([SOLARIS_XINERAMA], [1], [defined when the Solaris Xinerama extension was detected])]) supported_xext="$supported_xext Xinerama"]) ]) AC_SUBST(LIBXINERAMA)dnl ]) # WM_XEXT_CHECK_XRANDR # -------------------- # # Check for the X RandR (Resize-and-Rotate) extension # The check depends on variable 'enable_randr' being either: # yes - detect, fail if not found # no - do not detect, disable support # auto - detect, disable if not found # # When found, append appropriate stuff in LIBXRANDR, and append info to # the variable 'supported_xext' # When not found, append info to variable 'unsupported' AC_DEFUN_ONCE([WM_XEXT_CHECK_XRANDR], [WM_LIB_CHECK([RandR], [-lXrandr], [XRRQueryExtension], [$XLIBS], [wm_save_CFLAGS="$CFLAGS" AS_IF([wm_fn_lib_try_compile "X11/extensions/Xrandr.h" "Display *dpy;" "XRRQueryExtension(dpy, NULL, NULL)" ""], [], [AC_MSG_ERROR([found $CACHEVAR but cannot compile using XRandR header])]) CFLAGS="$wm_save_CFLAGS"], [supported_xext], [LIBXRANDR], [], [-])dnl AC_SUBST([LIBXRANDR])dnl ]) dnl AC_DEFUN WindowMaker-0.95.9/m4/wm_libexif.m40000644000175000017500000000242513431646201013700 00000000000000# wm_libexif.m4 - Macros to check proper libexif # # Copyright (c) 2014 Window Maker Team # # 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., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # WM_CHECK_LIBEXIF # ---------------- # # Checks the needed library link flags # Sets variable LIBEXIF with the appropriates flags AC_DEFUN_ONCE([WM_CHECK_LIBEXIF], [AC_CHECK_HEADER([libexif/exif-data.h], [AC_CHECK_FUNC(exif_data_new_from_file, [LIBEXIF=], [AC_CHECK_LIB(exif, [exif_data_new_from_file], [LIBEXIF=-lexif], [AC_MSG_WARN(Could not find EXIF library, you may experience problems) LIBEXIF=] )] )], [AC_MSG_WARN([header for EXIF library not found])]) AC_SUBST(LIBEXIF) dnl ]) WindowMaker-0.95.9/m4/windowmaker.m40000644000175000017500000002336713431646201014112 00000000000000# windowmaker.m4 - General macros for Window Maker autoconf # # Copyright (c) 2004 Dan Pascu # # 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., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. dnl Tell m4 to not allow stuff starting with "WM_" in the generated file dnl because this is likely a problem of a macro that was not expanded as dnl expected (with an exception for an already used variable name) m4_pattern_forbid([^_?WM_]) m4_pattern_allow([^WM_OSDEP(_[A-Z]*)?$]) # WM_CHECK_XFT_VERSION(MIN_VERSION, [ACTION-IF-FOUND [,ACTION-IF-NOT-FOUND]]) # # $XFTFLAGS should be defined before calling this macro, # else it will not be able to find Xft.h # AC_DEFUN([WM_CHECK_XFT_VERSION], [ CPPFLAGS_old="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $XFTFLAGS $inc_search_path" xft_major_version=`echo $1 | sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` xft_minor_version=`echo $1 | sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` xft_micro_version=`echo $1 | sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` AC_MSG_CHECKING([whether libXft is at least version $1]) AC_CACHE_VAL(ac_cv_lib_xft_version_ok, [AC_TRY_LINK( [/* Test version of libXft we have */ #include #include #if !defined(XFT_VERSION) || XFT_VERSION < $xft_major_version*10000 + $xft_minor_version*100 + $xft_micro_version #error libXft on this system is too old. Consider upgrading to at least $1 #endif ], [], eval "ac_cv_lib_xft_version_ok=yes", eval "ac_cv_lib_xft_version_ok=no")]) if eval "test \"`echo '$ac_cv_lib_xft_version_ok'`\" = yes"; then AC_MSG_RESULT(yes) ifelse([$2], , :, [$2]) else AC_MSG_RESULT(no) ifelse([$3], , , [$3]) fi CPPFLAGS="$CPPFLAGS_old" ]) # _WM_LIB_CHECK_FUNCTS # -------------------- # (internal shell functions) # # Create 2 shell functions: # wm_fn_imgfmt_try_link: try to link against library # wm_fn_imgfmt_try_compile: try to compile against header # AC_DEFUN_ONCE([_WM_LIB_CHECK_FUNCTS], [@%:@ wm_fn_lib_try_link FUNCTION LFLAGS @%:@ ---------------------------------- @%:@ Try linking against library in $LFLAGS using function named $FUNCTION @%:@ Assumes that LIBS have been saved in 'wm_save_LIBS' by caller wm_fn_lib_try_link () { LIBS="$wm_save_LIBS $[]2" AC_TRY_LINK_FUNC([$[]1], [wm_retval=0], [wm_retval=1]) AS_SET_STATUS([$wm_retval]) } @%:@ wm_fn_lib_try_compile HEADER GVARDEF FUNC_CALL CFLAGS @%:@ ----------------------------------------------------- @%:@ Try to compile using header $HEADER and trying to call a function @%:@ using the $FUNC_CALL expression and using extra $CFLAGS in the @%:@ compiler's command line; GVARDEF can be used to include one line @%:@ in the global context of the source. @%:@ Assumes that CFLAGS have been saved in 'wm_save_CFLAGS' by caller wm_fn_lib_try_compile () { CFLAGS="$wm_save_CFLAGS $[]4" AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([@%:@include <$[]1> $[]2], [ $[]3;])], [wm_retval=0], [wm_retval=1]) AS_SET_STATUS([$wm_retval]) } ]) # WM_APPEND_ONCE # -------------- # # Append flags to a variable, but only if not already present # # Usage: WM_APPEND_ONCE([libflags], [variable]) # $1 libflags: the list of flag to append # $2 variable: the variable, if unset use LIBS AC_DEFUN([WM_APPEND_ONCE], [AS_VAR_PUSHDEF([VAR], [m4_ifnblank([$2], [$2], [LIBS])])dnl for wm_arg in $1 ; do AS_IF([echo " $VAR " | grep " $wm_arg " 2>&1 >/dev/null], [@%:@ Flag already present in VAR], [VAR="$VAR $wm_arg"]) done AS_VAR_POPDEF([VAR])dnl ]) # WM_LIB_CHECK # ------------ # # Check if a library exists (can be linked to) and check if its header can # compile (using code in parameter to the macro), then update the appropriate # stuff accordingly # # Usage: WM_LIB_CHECK([name], [lflaglist], [lfunc], [extralibs], [headercheck], [supvar], [libvar], [enable_var], [cond_name]) # $1 name: name of the feature used in messages and in supvar # $2 lflaglist: the list of linker '-l' options to try, stopping on first success # $3 lfunc: the name of the function to look for when linking # $4 extralibs: optional, additional libraries included in the link check # $5 headercheck: the code that checks for the header # $6 supvar: if the library was found, append $name to this variable, # otherwise append $name to 'unsupported' # $7 libvar: if the library was found, append the working $lflag to this variable # $8 enable_var: variable to check for user's feature request, if empty we use "lowercase(enable_$1)" # $9 cond_name: name of the AC_DEFINE and the AM_CONDITIONAL # if empty, use "uppercase(USE_$1)", if equals "-" same but do not create AM_CONDITIONAL AC_DEFUN([WM_LIB_CHECK], [AC_REQUIRE([_WM_LIB_CHECK_FUNCTS]) m4_pushdef([ENABLEVAR], [m4_ifnblank([$8], [$8], enable_[]m4_tolower($1))])dnl m4_pushdef([CACHEVAR], [wm_cv_libchk_[]m4_tolower($1)])dnl m4_pushdef([USEVAR], [m4_bmatch([$9], [^-?$], [USE_[]m4_toupper($1)], [$9])])dnl AS_IF([test "x$ENABLEVAR" = "xno"], [unsupported="$unsupported $1"], [AC_CACHE_CHECK([for $1 support library], CACHEVAR, [CACHEVAR=no wm_save_LIBS="$LIBS" dnl dnl We check that the library is available m4_bmatch([$2], [ ], dnl Any space in 'lflaglist' means we have a list of flags [for wm_arg in $2 ; do AS_IF([wm_fn_lib_try_link "$3" "$4 $wm_arg"], [CACHEVAR="$wm_arg" ; break]) done], [AS_IF([wm_fn_lib_try_link "$3" "$4 $2"], [CACHEVAR="$2"]) ]) LIBS="$wm_save_LIBS" AS_IF([test "x$ENABLEVAR$CACHEVAR" = "xyesno"], [AC_MSG_ERROR([explicit $1 support requested but no library found])]) dnl dnl A library was found, check if header is available and compile AS_IF([test "x$CACHEVAR" != "xno"], [$5]) ]) AS_IF([test "x$CACHEVAR" = "xno"], [unsupported="$unsupported $1" ENABLEVAR="no"], [$6="$$6 $1" WM_APPEND_ONCE([$CACHEVAR], [$7]) AC_DEFINE(USEVAR, [1], [defined when valid $1 library with header was found])]) ]) m4_bmatch([$9], [^-$], [], [AM_CONDITIONAL(USEVAR, [test "x$ENABLEVAR" != "xno"])])dnl m4_popdef([ENABLEVAR])dnl m4_popdef([CACHEVAR])dnl m4_popdef([USEVAR])dnl ]) # WM_FUNC_SECURE_GETENV # --------------------- # # Check if the function 'secure_getenv' is available # If found, defines HAVE_SECURE_GETENV AC_DEFUN_ONCE([WM_FUNC_SECURE_GETENV], [AC_REQUIRE([_WM_LIB_CHECK_FUNCTS]) AC_CACHE_CHECK([for secure_getenv], [wm_cv_func_secure_getenv], [wm_cv_func_secure_getenv=no wm_save_CFLAGS="$CFLAGS" for wm_arg in "% yes" "-D_GNU_SOURCE"; do AS_IF([wm_fn_lib_try_compile "stdlib.h" "const char *h;" "h = secure_getenv(\"HOME\")" dnl "`echo "$wm_arg" | sed -e 's, *%.*$,,' ` -Werror=implicit-function-declaration"], [wm_cv_func_secure_getenv="`echo "$wm_arg" | sed -e 's,^.*% *,,' `" break]) done CFLAGS="$wm_save_CFLAGS"]) AS_IF([test "x$wm_cv_func_secure_getenv" != "xno"], [AS_IF([test "x$wm_cv_func_secure_getenv" != "xyes"], [WM_APPEND_ONCE([$wm_cv_func_secure_getenv], [CPPFLAGS])]) AC_DEFINE([HAVE_SECURE_GETENV], [1], [defined when GNU's secure_getenv function is available])]) ]) # WM_FUNC_OPEN_NOFOLLOW # --------------------- # # Check if the flag 'O_NOFOLLOW' is supported, for the function 'open' AC_DEFUN_ONCE([WM_FUNC_OPEN_NOFOLLOW], [AC_CACHE_CHECK([for O_NOFOLLOW], [wm_cv_func_open_nofollow], [wm_cv_func_open_nofollow=no wm_save_CPPFLAGS="$CPPFLAGS" for wm_arg in dnl "yes" dnl natively supported, nothing to do "-D_POSIX_C_SOURCE=200809L" dnl the flag was officially added in POSIX.1-2008 "-D_XOPEN_SOURCE=700" dnl for recent glibc "-D_GNU_SOURCE" dnl for older glibc ; do AS_IF([test "x$wm_arg" != "xyes"], [CPPFLAGS="$wm_save_CPPFLAGS $wm_arg"]) AC_LINK_IFELSE([AC_LANG_PROGRAM([dnl @%:@include @%:@include @%:@include ], [dnl int fd; fd = open("/dev/null", O_RDONLY | O_NOFOLLOW); return fd;])], [found=1], [found=0]) AS_IF([test $found = 1], [wm_cv_func_open_nofollow="$wm_arg" break]) done CPPFLAGS="$wm_save_CPPFLAGS"]) AS_CASE([$wm_cv_func_open_nofollow], [yes], [], [no], [AC_DEFINE([O_NOFOLLOW], [0], [defined by configure if the attribute is not defined on your platform]) AC_MSG_WARN([flag O_NOFOLLOW is not defined on your platform])], [CPPFLAGS="$CPPFLAGS $wm_cv_func_open_nofollow"]) ]) # WM_TYPE_SIGNAL # -------------- # # Check the return type for the function 'signal' # Autoconf now claims we can assume the type is 'void' as it is in the C89 standard, # but as Window Maker is supposed to be lightweight enough for old machines, we # prefer to keep the check for portability AC_DEFUN_ONCE([WM_TYPE_SIGNAL], [AC_CACHE_CHECK([return type of signal handlers], [wm_cv_type_signal], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([#include #include ], [return *(signal (0, 0)) (0) == 1;])], [wm_cv_type_signal=int], [wm_cv_type_signal=void])dnl ]) AC_DEFINE_UNQUOTED([RETSIGTYPE], [$wm_cv_type_signal], [Define as the return type of signal handlers (`int' or `void')])dnl ]) WindowMaker-0.95.9/m4/wm_prog_cc_c11.m40000644000175000017500000000603413431646201014336 00000000000000# wm_prog_cc_c11.m4 - Macros to see if compiler may support STD C11 # # Copyright (c) 2013 Christophe CURIS # # 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., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # WM_PROG_CC_C11 # -------------- # # Check if the compiler supports C11 standard natively, or if any # option may help enabling the support # This is (in concept) similar to AC_PROG_CC_C11, which is unfortunately # not yet available in autotools; as a side effect we only check for # compiler's acknowledgement and a few features instead of full support AC_DEFUN_ONCE([WM_PROG_CC_C11], [AC_CACHE_CHECK([for C11 standard support], [wm_cv_prog_cc_c11], [wm_cv_prog_cc_c11=no wm_save_CFLAGS="$CFLAGS" for wm_arg in dnl "% native" dnl "-std=c11" do CFLAGS="$wm_save_CFLAGS `echo $wm_arg | sed -e 's,%.*,,' `" AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([], [dnl #if __STDC_VERSION__ < 201112L fail_because_stdc_version_is_older_than_C11; #endif ])], [wm_cv_prog_cc_c11="`echo $wm_arg | sed -e 's,.*% *,,' `" ; break]) done CFLAGS="$wm_save_CFLAGS"]) AS_CASE([$wm_cv_prog_cc_c11], [no|native], [], [CFLAGS="$CFLAGS $wm_cv_prog_cc_c11"]) ]) # WM_PROG_CC_NESTEDFUNC # --------------------- # # Check if the compiler support declaring Nested Functions (that means # declaring a function inside another function). # # If the compiler does not support them, then the Automake conditional # USE_NESTED_FUNC will be set to false, in which case the Makefile will # use the script 'scripts/nested-func-to-macro.sh' to generate a modified # source with the nested function transformed into a Preprocessor Macro. AC_DEFUN_ONCE([WM_PROG_CC_NESTEDFUNC], [AC_CACHE_CHECK([if compiler supports nested functions], [wm_cv_prog_cc_nestedfunc], [AC_COMPILE_IFELSE( [AC_LANG_SOURCE([[ int main(int narg, char **argv) { int local_variable; int nested_function(int argument) { /* Checking we have access to upper level's scope, otherwise it is of no use */ return local_variable + argument; } /* To avoid a warning for unused parameter, that may falsely fail */ (void) argv; /* Initialise using the parameter to main so the compiler won't be tempted to optimise too much */ local_variable = narg + 1; return nested_function(2); }]]) ], [wm_cv_prog_cc_nestedfunc=yes], [wm_cv_prog_cc_nestedfunc=no]) ]) AM_CONDITIONAL([USE_NESTED_FUNC], [test "x$wm_cv_prog_cc_nestedfunc" != "xno"])dnl ]) WindowMaker-0.95.9/m4/ltversion.m40000644000175000017500000000127313642360046013604 00000000000000# ltversion.m4 -- version numbers -*- Autoconf -*- # # Copyright (C) 2004, 2011-2015 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # @configure_input@ # serial 4179 ltversion.m4 # This file is part of GNU Libtool m4_define([LT_PACKAGE_VERSION], [2.4.6]) m4_define([LT_PACKAGE_REVISION], [2.4.6]) AC_DEFUN([LTVERSION_VERSION], [macro_version='2.4.6' macro_revision='2.4.6' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) WindowMaker-0.95.9/m4/lt~obsolete.m40000644000175000017500000001377413642360046014142 00000000000000# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # # Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software # Foundation, Inc. # Written by Scott James Remnant, 2004. # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 5 lt~obsolete.m4 # These exist entirely to fool aclocal when bootstrapping libtool. # # In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN), # which have later been changed to m4_define as they aren't part of the # exported API, or moved to Autoconf or Automake where they belong. # # The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN # in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us # using a macro with the same name in our local m4/libtool.m4 it'll # pull the old libtool.m4 in (it doesn't see our shiny new m4_define # and doesn't know about Autoconf macros at all.) # # So we provide this file, which has a silly filename so it's always # included after everything else. This provides aclocal with the # AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything # because those macros already exist, or will be overwritten later. # We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. # # Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. # Yes, that means every name once taken will need to remain here until # we give up compatibility with versions before 1.7, at which point # we need to keep only those names which we still refer to. # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) WindowMaker-0.95.9/m4/wm_i18n.m40000644000175000017500000001734713431646201013046 00000000000000# wm_i18n.m4 - Macros to check and enable translations in WindowMaker # # Copyright (c) 2014-2015 Christophe CURIS # Copyright (c) 2015 The Window Maker Tean # # 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; see the file COPYING. # WM_I18N_LANGUAGES # ----------------- # # Detect which languages the user wants to be installed and check if # the gettext environment is available. # # The list of languages are provided through the environment variable # LINGUAS as a space-separated list of ISO 3166 country codes. # This list is checked against the list of currently available languages # the sources and a warning is issued if a language is not found. # # Support for internationalisation is disabled if the variable is empty # (or undefined) # # The variable 'supported_locales' is created to contain the list of # languages that will have been detected properly and will be installed AC_DEFUN_ONCE([WM_I18N_LANGUAGES], [AC_ARG_VAR([LINGUAS], [list of language translations to support (I18N), use 'list' to get the list of supported languages, default: none])dnl AC_DEFUN([WM_ALL_LANGUAGES], [m4_esyscmd([( ls WINGs/po/ ; ls po/ ; ls WPrefs.app/po/ ; ls util/po/ ) | sed -n -e '/po$/{s,\.po,,;p}' | sort -u | tr '\n' ' '])])dnl dnl We 'divert' the macro to have it executed as soon as the option list have dnl been processed, so the list of locales will be printed after the configure dnl options have been parsed, but before any test have been run m4_divert_text([INIT_PREPARE], [AS_IF([test "x$LINGUAS" = "xlist"], [AS_ECHO(["Supported languages: WM_ALL_LANGUAGES"]) AS_EXIT([0])]) ])dnl AS_IF([test "x$LINGUAS" != "x"], [wm_save_LIBS="$LIBS" AC_SEARCH_LIBS([gettext], [intl], [], [AC_MSG_ERROR([support for internationalization requested, but library for gettext not found])]) AS_IF([test "x$ac_cv_search_gettext" = "xnone required"], [INTLIBS=""], [INTLIBS="$ac_cv_search_gettext"]) AC_CHECK_FUNCS([gettext dgettext], [], [AC_MSG_ERROR([support for internationalization requested, but gettext was not found])]) LIBS="$wm_save_LIBS" dnl dnl The program 'msgfmt' is needed to convert the 'po' files into 'mo' files AC_CHECK_PROG([MSGFMT], [msgfmt], [msgfmt]) AS_IF([test "x$MSGFMT" = "x"], [AC_MSG_ERROR([the program 'msgfmt' is mandatory to install translation - do you miss the package 'gettext'?])]) dnl dnl Environment is sane, let's continue AC_DEFINE([I18N], [1], [Internationalization (I18N) support (set by configure)]) supported_locales="" # This is the list of locales that our archive currently supports wings_locales=" m4_esyscmd([ls WINGs/po/ | sed -n '/po$/{s,.po,,;p}' | tr '\n' ' '])" wmaker_locales=" m4_esyscmd([ls po/ | sed -n '/po$/{s,.po,,;p}' | tr '\n' ' '])" wprefs_locales=" m4_esyscmd([ls WPrefs.app/po/ | sed -n '/po$/{s,.po,,;p}' | tr '\n' ' '])" util_locales=" m4_esyscmd([ls util/po/ | sed -n '/po$/{s,.po,,;p}' | tr '\n' ' '])" man_locales=" m4_esyscmd([ls doc/ | grep '^[a-z][a-z]\(_[A-Z][A-Z]\)*$' | tr '\n' ' '])" # If the LINGUAS is specified as a simple '*', then we enable all the languages # we know. This is not standard, but it is useful is some cases AS_IF([test "x$LINGUAS" = "x*"], [LINGUAS="WM_ALL_LANGUAGES"]) # Check every language asked by user against these lists to know what to install for lang in $LINGUAS; do found=0 wm_missing="" m4_foreach([REGION], [WINGs, wmaker, WPrefs, util, man], [AS_IF([echo "$[]m4_tolower(REGION)[]_locales" | grep " $lang " > /dev/null], [m4_toupper(REGION)MOFILES="$[]m4_toupper(REGION)MOFILES $lang.mo" found=1], [wm_missing="$wm_missing, REGION"]) ]) # Locale has to be supported by at least one part to be reported in the end # If it is not supported everywhere we just display a message to the user so # that he knows about it wm_missing="`echo "$wm_missing" | sed -e 's/^, //' `" AS_IF([test $found = 1], [supported_locales="$supported_locales $lang" AS_IF([test "x$wm_missing" != "x"], [AC_MSG_WARN([locale $lang is not supported in $wm_missing])]) ], [AC_MSG_WARN([locale $lang is not supported at all, ignoring])]) done # # Post-processing the names for the man pages because we are not expecting # a "po" file but a directory name in this case MANLANGDIRS="`echo $MANMOFILES | sed -e 's,\.mo,,g' `" ], [INTLIBS="" WINGSMOFILES="" WMAKERMOFILES="" WPREFSMOFILES="" UTILMOFILES="" MANLANGDIRS="" supported_locales=" disabled"]) dnl dnl The variables that are used in the Makefiles: AC_SUBST([INTLIBS])dnl AC_SUBST([WINGSMOFILES])dnl AC_SUBST([WMAKERMOFILES])dnl AC_SUBST([WPREFSMOFILES])dnl AC_SUBST([UTILMOFILES])dnl AC_SUBST([MANLANGDIRS])dnl ]) # WM_I18N_XGETTEXT # ---------------- # # xgettext is used to generate the Templates for translation, it is not # mandatory for users, only for translation teams. We look for it even # if I18N was not asked because it can be used by dev team. AC_DEFUN_ONCE([WM_I18N_XGETTEXT], [AC_CHECK_PROGS([XGETTEXT], [xgettext], []) AS_IF([test "x$XGETTEXT" != "x"], AS_IF([$XGETTEXT --help 2>&1 | grep "illegal" > /dev/null], [AC_MSG_WARN([[$XGETTEXT is not GNU version, ignoring]]) XGETTEXT=""])) AM_CONDITIONAL([HAVE_XGETTEXT], [test "x$XGETTEXT" != "x"])dnl ]) # WM_I18N_MENUTEXTDOMAIN # ---------------------- # # This option allows user to define a special Domain for translating # Window Maker's menus. This can be useful because distributions may # wish to customize the menus, and thus can make them translatable # with their own po/mo files without having to touch WMaker's stuff. AC_DEFUN_ONCE([WM_I18N_MENUTEXTDOMAIN], [AC_ARG_WITH([menu-textdomain], [AS_HELP_STRING([--with-menu-textdomain=DOMAIN], [specify gettext domain used for menu translations])], [AS_CASE([$withval], [yes], [AC_MSG_ERROR([you are supposed to give a domain name for '--with-menu-textdomain'])], [no], [menutextdomain=""], [menutextdomain="$withval"])], [menutextdomain=""]) AS_IF([test "x$menutextdomain" != "x"], [AC_DEFINE_UNQUOTED([MENU_TEXTDOMAIN], ["$menutextdomain"], [gettext domain to be used for menu translations]) ]) ]) dnl WM_I18N_XLOCALE dnl --------------- dnl dnl X11 needs to redefine the function 'setlocale' to properly initialize itself, dnl we check if user wants to disable this behaviour or if it is not supported AC_DEFUN_ONCE([WM_I18N_XLOCALE], [AC_ARG_ENABLE([xlocale], [AS_HELP_STRING([--disable-xlocale], [disable initialization of locale for X])], [AS_CASE([$enableval], [yes|no], [], [AC_MSG_ERROR([bad value '$enableval' for --disable-xlocale])])], [enable_xlocale=auto]) AS_IF([test "x$enable_xlocale" != "xno"], [AC_CHECK_LIB([X11], [_Xsetlocale], [AC_DEFINE([X_LOCALE], [1], [defined if the locale is initialized by X window])], [AS_IF([test "x$enable_xlocale" = "xyes"], [AC_MSG_ERROR([support for X_LOCALE was explicitely requested, but X11 lacks the appropriate function])])], [$XLFLAGS $XLIBS]) ]) ]) WindowMaker-0.95.9/m4/wm_imgfmt_check.m40000644000175000017500000003477213642357774014732 00000000000000# wm_imgfmt_check.m4 - Macros to check for image file format support libraries # # Copyright (c) 2013 Christophe CURIS # # 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., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # WM_IMGFMT_CHECK_GIF # ------------------- # # Check for GIF file support through 'libgif', 'libungif' or 'giflib v5' # The check depends on variable 'enable_gif' being either: # yes - detect, fail if not found # no - do not detect, disable support # auto - detect, disable if not found # # When found, append appropriate stuff in GFXLIBS, and append info to # the variable 'supported_gfx' # When not found, append info to variable 'unsupported' AC_DEFUN_ONCE([WM_IMGFMT_CHECK_GIF], [AC_REQUIRE([_WM_LIB_CHECK_FUNCTS]) AS_IF([test "x$enable_gif" = "xno"], [unsupported="$unsupported GIF"], [AC_CACHE_CHECK([for GIF support library], [wm_cv_imgfmt_gif], [wm_cv_imgfmt_gif=no wm_save_LIBS="$LIBS" dnl dnl We check first if one of the known libraries is available for wm_arg in "-lgif" "-lungif" ; do AS_IF([wm_fn_lib_try_link "DGifOpenFileName" "$XLFLAGS $XLIBS $wm_arg"], [wm_cv_imgfmt_gif="$wm_arg" ; break]) done LIBS="$wm_save_LIBS" AS_IF([test "x$enable_gif$wm_cv_imgfmt_gif" = "xyesno"], [AC_MSG_ERROR([explicit GIF support requested but no library found])]) AS_IF([test "x$wm_cv_imgfmt_gif" != "xno"], [dnl dnl A library was found, now check for the appropriate header wm_save_CFLAGS="$CFLAGS" AS_IF([wm_fn_lib_try_compile "gif_lib.h" "" "return 0" ""], [], [AC_MSG_ERROR([found $wm_cv_imgfmt_gif but could not find appropriate header - are you missing libgif-dev package?])]) AS_IF([wm_fn_lib_try_compile "gif_lib.h" 'const char *filename = "dummy";' "DGifOpenFileName(filename)" ""], [wm_cv_imgfmt_gif="$wm_cv_imgfmt_gif version:4"], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [@%:@include const char *filename = "dummy";], [ int error_code; DGifOpenFileName(filename, &error_code);] )], [wm_cv_imgfmt_gif="$wm_cv_imgfmt_gif version:5"], [AC_MSG_ERROR([found $wm_cv_imgfmt_gif and header, but cannot compile - unsupported version?])])dnl ] ) CFLAGS="$wm_save_CFLAGS"]) ]) AS_IF([test "x$wm_cv_imgfmt_gif" = "xno"], [unsupported="$unsupported GIF" enable_gif="no"], [supported_gfx="$supported_gfx GIF" WM_APPEND_ONCE([`echo "$wm_cv_imgfmt_gif" | sed -e 's, *version:.*,,' `], [GFXLIBS]) AC_DEFINE_UNQUOTED([USE_GIF], [`echo "$wm_cv_imgfmt_gif" | sed -e 's,.*version:,,' `], [defined when valid GIF library with header was found])]) ]) AM_CONDITIONAL([USE_GIF], [test "x$enable_gif" != "xno"])dnl ]) dnl AC_DEFUN # WM_IMGFMT_CHECK_JPEG # -------------------- # # Check for JPEG file support through 'libjpeg' # The check depends on variable 'enable_jpeg' being either: # yes - detect, fail if not found # no - do not detect, disable support # auto - detect, disable if not found # # When found, append appropriate stuff in GFXLIBS, and append info to # the variable 'supported_gfx' # When not found, append info to variable 'unsupported' AC_DEFUN_ONCE([WM_IMGFMT_CHECK_JPEG], [WM_LIB_CHECK([JPEG], [-ljpeg], [jpeg_destroy_compress], [$XLFLAGS $XLIBS], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [@%:@include @%:@include @%:@include ], [ struct jpeg_decompress_struct cinfo; jpeg_destroy_decompress(&cinfo);])], [], [AS_ECHO([failed]) AS_ECHO(["$as_me: error: found $CACHEVAR but cannot compile header"]) AS_ECHO(["$as_me: error: - does header 'jpeglib.h' exists? (is package 'jpeg-dev' missing?)"]) AS_ECHO(["$as_me: error: - version of header is not supported? (report to dev team)"]) AC_MSG_ERROR([JPEG library is not usable, cannot continue])]) ], [supported_gfx], [GFXLIBS])dnl ]) dnl AC_DEFUN # WM_IMGFMT_CHECK_PNG # ------------------- # # Check for PNG file support through 'libpng' # The check depends on variable 'enable_png' being either: # yes - detect, fail if not found # no - do not detect, disable support # auto - detect, disable if not found # # When found, append appropriate stuff in GFXLIBS, and append info to # the variable 'supported_gfx' # When not found, append info to variable 'unsupported' AC_DEFUN_ONCE([WM_IMGFMT_CHECK_PNG], [WM_LIB_CHECK([PNG], ["-lpng" "-lpng -lz" "-lpng -lz -lm"], [png_get_valid], [$XLFLAGS $XLIBS], [wm_save_CFLAGS="$CFLAGS" AS_IF([wm_fn_lib_try_compile "png.h" "" "return 0" ""], [], [AC_MSG_ERROR([found $CACHEVAR but could not find appropriate header - are you missing libpng-dev package?])]) AS_IF([wm_fn_lib_try_compile "png.h" "" "png_get_valid(NULL, NULL, PNG_INFO_tRNS)" ""], [], [AC_MSG_ERROR([found $CACHEVAR and header, but cannot compile - unsupported version?])]) CFLAGS="$wm_save_CFLAGS"], [supported_gfx], [GFXLIBS])dnl ]) dnl AC_DEFUN # WM_IMGFMT_CHECK_TIFF # -------------------- # # Check for TIFF file support through 'libtiff' # The check depends on variable 'enable_tiff' being either: # yes - detect, fail if not found # no - do not detect, disable support # auto - detect, disable if not found # # When found, append appropriate stuff in GFXLIBS, and append info to # the variable 'supported_gfx' # When not found, append info to variable 'unsupported' AC_DEFUN_ONCE([WM_IMGFMT_CHECK_TIFF], [WM_LIB_CHECK([TIFF], ["-ltiff" \ dnl TIFF can have a dependancy over zlib "-ltiff -lz" "-ltiff -lz -lm" \ dnl It may also have a dependancy to jpeg_lib "-ltiff -ljpeg" "-ltiff -ljpeg -lz" "-ltiff -ljpeg -lz -lm" \ dnl There is also a possible dependancy on JBIGKit "-ltiff -ljpeg -ljbig -lz" \ dnl Probably for historical reasons? "-ltiff34" "-ltiff34 -ljpeg" "-ltiff34 -ljpeg -lm"], [TIFFGetVersion], [$XLFLAGS $XLIBS], [wm_save_CFLAGS="$CFLAGS" AS_IF([wm_fn_lib_try_compile "tiffio.h" "" "return 0" ""], [], [AC_MSG_ERROR([found $CACHEVAR but could not find appropriate header - are you missing libtiff-dev package?])]) AS_IF([wm_fn_lib_try_compile "tiffio.h" 'const char *filename = "dummy";' 'TIFFOpen(filename, "r")' ""], [], [AC_MSG_ERROR([found $CACHEVAR and header, but cannot compile - unsupported version?])]) CFLAGS="$wm_save_CFLAGS"], [supported_gfx], [GFXLIBS])dnl ]) dnl AC_DEFUN # WM_IMGFMT_CHECK_WEBP # -------------------- # # Check for WEBP file support through 'libwebp' # The check depends on variable 'enable_webp' being either: # yes - detect, fail if not found # no - do not detect, disable support # auto - detect, disable if not found # # When found, append appropriate stuff in GFXLIBS, and append info to # the variable 'supported_gfx' # When not found, append info to variable 'unsupported' AC_DEFUN_ONCE([WM_IMGFMT_CHECK_WEBP], [AS_IF([test "x$enable_webp" = "xno"], [unsupported="$unsupported WebP"], [AC_CACHE_CHECK([for WebP support library], [wm_cv_imgfmt_webp], [wm_cv_imgfmt_webp=no dnl dnl The library is using a special trick on the functions to provide dnl compatibility between versions, so we cannot try linking against dnl a symbol without first using the header to handle it wm_save_LIBS="$LIBS" LIBS="$LIBS -lwebp" AC_TRY_LINK( [@%:@include ], [WebPGetFeatures(NULL, 1024, NULL);], [wm_cv_imgfmt_webp="-lwebp"]) LIBS="$wm_save_LIBS" AS_IF([test "x$enable_webp$wm_cv_imgfmt_webp" = "xyesno"], [AC_MSG_ERROR([explicit WebP support requested but no library found])])dnl ]) AS_IF([test "x$wm_cv_imgfmt_webp" = "xno"], [unsupported="$unsupported WebP" enable_webp="no"], [supported_gfx="$supported_gfx WebP" WM_APPEND_ONCE([$wm_cv_imgfmt_webp], [GFXLIBS])dnl AC_DEFINE([USE_WEBP], [1], [defined when valid Webp library with header was found])])dnl ]) AM_CONDITIONAL([USE_WEBP], [test "x$enable_webp" != "xno"])dnl ]) # WM_IMGFMT_CHECK_XPM # ------------------- # # Check for XPM file support through 'libXpm' # The check depends on variable 'enable_xpm' being either: # yes - detect, fail if not found # no - do not detect, use internal support # auto - detect, use internal if not found # # When found, append appropriate stuff in GFXLIBS, and append info to # the variable 'supported_gfx' AC_DEFUN_ONCE([WM_IMGFMT_CHECK_XPM], [AC_REQUIRE([_WM_LIB_CHECK_FUNCTS]) AS_IF([test "x$enable_xpm" = "xno"], [supported_gfx="$supported_gfx builtin-XPM"], [AC_CACHE_CHECK([for XPM support library], [wm_cv_imgfmt_xpm], [wm_cv_imgfmt_xpm=no dnl dnl We check first if one of the known libraries is available wm_save_LIBS="$LIBS" AS_IF([wm_fn_lib_try_link "XpmCreatePixmapFromData" "$XLFLAGS $XLIBS -lXpm"], [wm_cv_imgfmt_xpm="-lXpm" ; break]) LIBS="$wm_save_LIBS" AS_IF([test "x$enable_xpm$wm_cv_imgfmt_xpm" = "xyesno"], [AC_MSG_ERROR([explicit libXpm support requested but no library found])]) AS_IF([test "x$wm_cv_imgfmt_xpm" != "xno"], [dnl dnl A library was found, now check for the appropriate header wm_save_CFLAGS="$CFLAGS" AS_IF([wm_fn_lib_try_compile "X11/xpm.h" "" "return 0" "$XCFLAGS"], [], [AC_MSG_ERROR([found $wm_cv_imgfmt_xpm but could not find appropriate header - are you missing libXpm-dev package?])]) AS_IF([wm_fn_lib_try_compile "X11/xpm.h" 'char *filename = "dummy";' 'XpmReadFileToXpmImage(filename, NULL, NULL)' "$XCFLAGS"], [], [AC_MSG_ERROR([found $wm_cv_imgfmt_xpm and header, but cannot compile - unsupported version?])]) CFLAGS="$wm_save_CFLAGS"]) ]) AS_IF([test "x$wm_cv_imgfmt_xpm" = "xno"], [supported_gfx="$supported_gfx builtin-XPM" enable_xpm="no"], [supported_gfx="$supported_gfx XPM" WM_APPEND_ONCE([$wm_cv_imgfmt_xpm], [GFXLIBS]) AC_DEFINE([USE_XPM], [1], [defined when valid XPM library with header was found])]) ]) AM_CONDITIONAL([USE_XPM], [test "x$enable_xpm" != "xno"])dnl ]) dnl AC_DEFUN # WM_IMGFMT_CHECK_MAGICK # ---------------------- # # Check for MagickWand library to support more image file formats # The check depends on variable 'enable_magick' being either: # yes - detect, fail if not found # no - do not detect, disable support # auto - detect, disable if not found # # When found, store the appropriate compilation flags in MAGICKFLAGS # and MAGICKLIBS, and append info to the variable 'supported_gfx' # When not found, append info to variable 'unsupported' AC_DEFUN_ONCE([WM_IMGFMT_CHECK_MAGICK], [AC_REQUIRE([_WM_LIB_CHECK_FUNCTS]) AS_IF([test "x$enable_magick" = "xno"], [unsupported="$unsupported Magick"], [AC_CACHE_CHECK([for Magick support library], [wm_cv_libchk_magick], [wm_cv_libchk_magick=no dnl First try to get the configuration from either pkg-config (the official way) dnl or with the fallback MagickWand-config AS_IF([test "x$PKG_CONFIG" = "x"], [AC_PATH_PROGS_FEATURE_CHECK([magickwand], [MagickWand-config], [wm_cv_libchk_magick_cflags=`$ac_path_magickwand --cflags` wm_cv_libchk_magick_libs=`$ac_path_magickwand --ldflags` wm_cv_libchk_magick=magickwand])], [AS_IF([$PKG_CONFIG --exists MagickWand], [wm_cv_libchk_magick_cflags=`$PKG_CONFIG --cflags MagickWand` wm_cv_libchk_magick_libs=`$PKG_CONFIG --libs MagickWand` wm_cv_libchk_magick=pkgconfig])]) AS_IF([test "x$wm_cv_libchk_magick" = "xno"], [AS_IF([test "x$enable_magick" != "xauto"], [AC_MSG_RESULT([not found]) AC_MSG_ERROR([explicit Magick support requested but configuration not found with pkg-config and MagickWand-config - are you missing libmagickwand-dev package?])])], [dnl The configuration was found, check that it actually works wm_save_LIBS="$LIBS" dnl dnl We check that the library is available AS_IF([wm_fn_lib_try_link "NewMagickWand" "$wm_cv_libchk_magick_libs"], [wm_cv_libchk_magick=maybe]) LIBS="$wm_save_LIBS" AS_IF([test "x$wm_cv_libchk_magick" != "xmaybe"], [AC_MSG_ERROR([MagickWand was found but the library does not link])]) dnl dnl The library was found, check if header is available and compiles wm_save_CFLAGS="$CFLAGS" AS_IF([wm_fn_lib_try_compile "MagickWand/MagickWand.h" "MagickWand *wand;" "wand = NewMagickWand()" "$wm_cv_libchk_magick_cflags"], [wm_cv_libchk_magick="$wm_cv_libchk_magick_cflags % $wm_cv_libchk_magick_libs"], [AC_MSG_ERROR([found MagickWand library but could not compile its header])]) CFLAGS="$wm_save_CFLAGS"])dnl ]) AS_IF([test "x$wm_cv_libchk_magick" = "xno"], [unsupported="$unsupported Magick" enable_magick="no"], [supported_gfx="$supported_gfx Magick" MAGICKFLAGS=`echo "$wm_cv_libchk_magick" | sed -e 's, *%.*$,,' ` MAGICKLIBS=`echo "$wm_cv_libchk_magick" | sed -e 's,^.*% *,,' ` AC_DEFINE([USE_MAGICK], [1], [defined when MagickWand library with header was found])]) ]) AM_CONDITIONAL([USE_MAGICK], [test "x$enable_magick" != "xno"])dnl AC_SUBST(MAGICKFLAGS)dnl AC_SUBST(MAGICKLIBS)dnl ]) dnl AC_DEFUN WindowMaker-0.95.9/m4/wm_cflags_check.m40000644000175000017500000001541113431646201014651 00000000000000# wm_cflags_check.m4 - Macros to check options for the compiler into CFLAGS # # Copyright (c) 2013 Christophe CURIS # # 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., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # WM_CFLAGS_CHECK_FIRST # --------------------- # # For each option provided, check which one is supported and stops when # found, adding it to CFLAGS. It extends AX_CFLAGS_GCC_OPTION which does # not checks for fallbacks; as a bonus it uses a shared function to # produce smaller configure script. # # Usage: WM_CFLAGS_CHECK_FIRST([message], [option alt_option...]) # $1 message: required, message displayed in 'Checking for...' # $2 option_list: list of options, tested in given order # # The first option that works is added to CFLAGS AC_DEFUN([WM_CFLAGS_CHECK_FIRST], [AC_REQUIRE([_WM_SHELLFN_CHKCFLAGS]) m4_define([_wm_optlist], m4_split([$2]))dnl AS_VAR_PUSHDEF([VAR], [wm_cv_c_check_compopt[]m4_car(_wm_optlist)])dnl m4_define([_wm_trimmed_optlist], m4_join([ ], _wm_optlist))dnl AC_CACHE_CHECK([CFLAGS for m4_ifnblank($1,$1,m4_car(_wm_optlist))], VAR, [VAR="no, unknown" for wm_option in _wm_trimmed_optlist ; do AS_IF([wm_fn_c_try_compile_cflag "$wm_option"], [VAR="$wm_option" ; break]) done]) AS_CASE([$VAR], [no,*], [], [AS_IF([echo " $CFLAGS " | grep " $VAR " 2>&1 > /dev/null], [AC_MSG_WARN([option $VAR already present in \$CFLAGS, not appended])], [CFLAGS="$CFLAGS $VAR"]) ]) AS_VAR_POPDEF([VAR])dnl m4_undefine([_wm_optlist])dnl m4_undefine([_wm_trimmed_optlist])dnl ]) # _WM_SHELLFN_CHKCFLAGS # --------------------- # (internal shell function) # # Create a shell function that tries compiling a simple program with the # specified compiler option. Assumes the current compilation language is # already set to C AC_DEFUN_ONCE([_WM_SHELLFN_CHKCFLAGS], [@%:@ wm_fn_c_try_compile_cflag CC_OPTION @%:@ ----------------------------------- @%:@ Try compiling a function using CC_OPTION in the compiler's options wm_fn_c_try_compile_cflag () { wm_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -Werror $[]1" AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([], [])], [wm_retval=0], [wm_retval=1]) CFLAGS="$wm_save_CFLAGS" AS_SET_STATUS([$wm_retval]) } ]) # WM_CFLAGS_GCC_OPTION_UNUSEDMACROS # --------------------------------- # # Check if the compiler support '-Wunused-macros'. This would be done # traditionally using AX_CFLAGS_GCC_OPTION(...), but in the present case it # always fail because the test program defines many macro (all the stuff # detected so far) so the warning always trigger, the compilation then fail, # and the option is then marked as never supported. # # This macro works around this by using a basic program without any #define AC_DEFUN([WM_CFLAGS_GCC_OPTION_UNUSEDMACROS], [AC_CACHE_CHECK([CFLAGS for gcc -Wunused-macros], [wm_cv_c_checks_compopt_Wunused_macros], [AC_LANG_COMPILER_REQUIRE()dnl AC_LANG_PUSH([C]) wm_save_CFLAGS="$CFLAGS" CFLAGS="$wm_save_CFLAGS -pedantic -Werror -Wunused-macros" dnl Similar to AC_LANG_CONFTEST(C), except we do not include the 'confdefs.h' dnl directly in the source to avoid an "unused macro" error, but we include dnl it in the same way we will include the "config.h", so we get in the same dnl condition as WindowMaker's source cat <<_ACEOF >conftest.$ac_ext @%:@include "confdefs.h" int main(int argc, char **argv) { /* to avoid failing on -Wunused-parameter */ (void) argc; (void) argv; return 0; } _ACEOF AS_IF([ac_fn_[]_AC_LANG_ABBREV[]_try_compile "$LINENO"], [wm_cv_c_checks_compopt_Wunused_macros="-Wunused-macros"], [wm_cv_c_checks_compopt_Wunused_macros="no"]) rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$wm_save_CFLAGS" AC_LANG_POP([C]) ]) # We cannot add this flag now to CFLAGS because it could break all further # detections done by configure, the flag will be added at the end by the # macro WM_CFLAGS_GCC_OPTION_POSTPONED ]) # WM_CFLAGS_GCC_OPTION_STRICTPROTO # -------------------------------- # # Check if the compiler support '-Wstrict-prototypes'. This would be done # traditionally using AX_CFLAGS_GCC_OPTION(...), but in the present case it # always fail because the test program generated by autoconf always use a # non-compliant prototype (this is needed for portability to avoid possible # function declaration mismatch on 'main'). # # This macro works around this by providing a strict prototype for 'main' # in this case because we are in a very known case. AC_DEFUN([WM_CFLAGS_GCC_OPTION_STRICTPROTO], [AC_CACHE_CHECK([CFLAGS for gcc -Wstrict-prototypes], [wm_cv_c_checks_compopt_Wstrict_prototypes], [AC_LANG_COMPILER_REQUIRE()dnl AC_LANG_PUSH([C]) wm_save_CFLAGS="$CFLAGS" CFLAGS="$wm_save_CFLAGS -pedantic -Werror -Wstrict-prototypes" AC_COMPILE_IFELSE( [AC_LANG_SOURCE([dnl int main(int argc, char **argv) { /* to avoid failing on -Wunused-parameter */ (void) argc; (void) argv; return 0; }])], [wm_cv_c_checks_compopt_Wstrict_prototypes="-Wstrict-prototypes"], [wm_cv_c_checks_compopt_Wstrict_prototypes="no"]) CFLAGS="$wm_save_CFLAGS" AC_LANG_POP([C]) ]) # We cannot add this flag now to CFLAGS because it could break all further # detections done by configure, the flag will be added at the end by the # macro WM_CFLAGS_GCC_OPTION_POSTPONED ]) # WM_CFLAGS_GCC_OPTION_POSTPONED # ------------------------------ # # Some options cannot be added to the compilation command as soon as they have # been detected because they can break the detection done in autoconf, because # the template are cannot always be perfect. # This macro takes care of making them effective, so it should be called just # before AC_OUTPUT. AC_DEFUN_ONCE([WM_CFLAGS_GCC_OPTION_POSTPONED], [# WM_CFLAGS_GCC_OPTION_POSTPONED: add compiler flags at the end of the autoconf flow AS_IF([test "x$debug" = "xyes"], [m4_foreach([arg_name], [[Wstrict_prototypes], [Wunused_macros]], [AS_CASE([$wm_cv_c_checks_compopt_[]arg_name], [no*], [], [AS_IF([echo " $CFLAGS " | grep " $wm_cv_c_checks_compopt_[]arg_name " 2>&1 > /dev/null], [AC_MSG_WARN([option $wm_cv_c_checks_compopt_[]arg_name already present in \$CFLAGS, not appended])], [CFLAGS="$CFLAGS $wm_cv_c_checks_compopt_[]arg_name"])dnl ]) ])dnl ])dnl ]) WindowMaker-0.95.9/m4/libtool.m40000644000175000017500000112676613642360045013242 00000000000000# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # # Copyright (C) 1996-2001, 2003-2015 Free Software Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. m4_define([_LT_COPYING], [dnl # Copyright (C) 2014 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool 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 of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program or library that is built # using GNU Libtool, you may include this file under the same # distribution terms that you use for the rest of that program. # # GNU Libtool 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, see . ]) # serial 58 LT_INIT # LT_PREREQ(VERSION) # ------------------ # Complain and exit if this libtool version is less that VERSION. m4_defun([LT_PREREQ], [m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, [m4_default([$3], [m4_fatal([Libtool version $1 or higher is required], 63)])], [$2])]) # _LT_CHECK_BUILDDIR # ------------------ # Complain if the absolute build directory name contains unusual characters m4_defun([_LT_CHECK_BUILDDIR], [case `pwd` in *\ * | *\ *) AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; esac ]) # LT_INIT([OPTIONS]) # ------------------ AC_DEFUN([LT_INIT], [AC_PREREQ([2.62])dnl We use AC_PATH_PROGS_FEATURE_CHECK AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl AC_BEFORE([$0], [LT_LANG])dnl AC_BEFORE([$0], [LT_OUTPUT])dnl AC_BEFORE([$0], [LTDL_INIT])dnl m4_require([_LT_CHECK_BUILDDIR])dnl dnl Autoconf doesn't catch unexpanded LT_ macros by default: m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 dnl unless we require an AC_DEFUNed macro: AC_REQUIRE([LTOPTIONS_VERSION])dnl AC_REQUIRE([LTSUGAR_VERSION])dnl AC_REQUIRE([LTVERSION_VERSION])dnl AC_REQUIRE([LTOBSOLETE_VERSION])dnl m4_require([_LT_PROG_LTMAIN])dnl _LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) dnl Parse OPTIONS _LT_SET_OPTIONS([$0], [$1]) # This can be used to rebuild libtool when needed LIBTOOL_DEPS=$ltmain # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl _LT_SETUP # Only expand once: m4_define([LT_INIT]) ])# LT_INIT # Old names: AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PROG_LIBTOOL], []) dnl AC_DEFUN([AM_PROG_LIBTOOL], []) # _LT_PREPARE_CC_BASENAME # ----------------------- m4_defun([_LT_PREPARE_CC_BASENAME], [ # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in @S|@*""; do case $cc_temp in compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } ])# _LT_PREPARE_CC_BASENAME # _LT_CC_BASENAME(CC) # ------------------- # It would be clearer to call AC_REQUIREs from _LT_PREPARE_CC_BASENAME, # but that macro is also expanded into generated libtool script, which # arranges for $SED and $ECHO to be set by different means. m4_defun([_LT_CC_BASENAME], [m4_require([_LT_PREPARE_CC_BASENAME])dnl AC_REQUIRE([_LT_DECL_SED])dnl AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl func_cc_basename $1 cc_basename=$func_cc_basename_result ]) # _LT_FILEUTILS_DEFAULTS # ---------------------- # It is okay to use these file commands and assume they have been set # sensibly after 'm4_require([_LT_FILEUTILS_DEFAULTS])'. m4_defun([_LT_FILEUTILS_DEFAULTS], [: ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} ])# _LT_FILEUTILS_DEFAULTS # _LT_SETUP # --------- m4_defun([_LT_SETUP], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl _LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl dnl _LT_DECL([], [host_alias], [0], [The host system])dnl _LT_DECL([], [host], [0])dnl _LT_DECL([], [host_os], [0])dnl dnl _LT_DECL([], [build_alias], [0], [The build system])dnl _LT_DECL([], [build], [0])dnl _LT_DECL([], [build_os], [0])dnl dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl dnl AC_REQUIRE([AC_PROG_LN_S])dnl test -z "$LN_S" && LN_S="ln -s" _LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl dnl AC_REQUIRE([LT_CMD_MAX_LEN])dnl _LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl _LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl m4_require([_LT_CMD_RELOAD])dnl m4_require([_LT_CHECK_MAGIC_METHOD])dnl m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl m4_require([_LT_CMD_OLD_ARCHIVE])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_WITH_SYSROOT])dnl m4_require([_LT_CMD_TRUNCATE])dnl _LT_CONFIG_LIBTOOL_INIT([ # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi ]) if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi _LT_CHECK_OBJDIR m4_require([_LT_TAG_COMPILER])dnl case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a '.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld=$lt_cv_prog_gnu_ld old_CC=$CC old_CFLAGS=$CFLAGS # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o _LT_CC_BASENAME([$compiler]) # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then _LT_PATH_MAGIC fi ;; esac # Use C for the default configuration in the libtool script LT_SUPPORTED_TAG([CC]) _LT_LANG_C_CONFIG _LT_LANG_DEFAULT_CONFIG _LT_CONFIG_COMMANDS ])# _LT_SETUP # _LT_PREPARE_SED_QUOTE_VARS # -------------------------- # Define a few sed substitution that help us do robust quoting. m4_defun([_LT_PREPARE_SED_QUOTE_VARS], [# Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([["`\\]]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ]) # _LT_PROG_LTMAIN # --------------- # Note that this code is called both from 'configure', and 'config.status' # now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, # 'config.status' has no value for ac_aux_dir unless we are using Automake, # so we pass a copy along to make sure it has a sensible value anyway. m4_defun([_LT_PROG_LTMAIN], [m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl _LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) ltmain=$ac_aux_dir/ltmain.sh ])# _LT_PROG_LTMAIN ## ------------------------------------- ## ## Accumulate code for creating libtool. ## ## ------------------------------------- ## # So that we can recreate a full libtool script including additional # tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS # in macros and then make a single call at the end using the 'libtool' # label. # _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) # ---------------------------------------- # Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL_INIT], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_INIT], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_INIT]) # _LT_CONFIG_LIBTOOL([COMMANDS]) # ------------------------------ # Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) # _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) # ----------------------------------------------------- m4_defun([_LT_CONFIG_SAVE_COMMANDS], [_LT_CONFIG_LIBTOOL([$1]) _LT_CONFIG_LIBTOOL_INIT([$2]) ]) # _LT_FORMAT_COMMENT([COMMENT]) # ----------------------------- # Add leading comment marks to the start of each line, and a trailing # full-stop to the whole comment if one is not present already. m4_define([_LT_FORMAT_COMMENT], [m4_ifval([$1], [ m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) )]) ## ------------------------ ## ## FIXME: Eliminate VARNAME ## ## ------------------------ ## # _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) # ------------------------------------------------------------------- # CONFIGNAME is the name given to the value in the libtool script. # VARNAME is the (base) name used in the configure script. # VALUE may be 0, 1 or 2 for a computed quote escaped value based on # VARNAME. Any other value will be used directly. m4_define([_LT_DECL], [lt_if_append_uniq([lt_decl_varnames], [$2], [, ], [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], [m4_ifval([$1], [$1], [$2])]) lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) m4_ifval([$4], [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) lt_dict_add_subkey([lt_decl_dict], [$2], [tagged?], [m4_ifval([$5], [yes], [no])])]) ]) # _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) # -------------------------------------------------------- m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) # lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_tag_varnames], [_lt_decl_filter([tagged?], [yes], $@)]) # _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) # --------------------------------------------------------- m4_define([_lt_decl_filter], [m4_case([$#], [0], [m4_fatal([$0: too few arguments: $#])], [1], [m4_fatal([$0: too few arguments: $#: $1])], [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], [lt_dict_filter([lt_decl_dict], $@)])[]dnl ]) # lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) # -------------------------------------------------- m4_define([lt_decl_quote_varnames], [_lt_decl_filter([value], [1], $@)]) # lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_dquote_varnames], [_lt_decl_filter([value], [2], $@)]) # lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_varnames_tagged], [m4_assert([$# <= 2])dnl _$0(m4_quote(m4_default([$1], [[, ]])), m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) m4_define([_lt_decl_varnames_tagged], [m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) # lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_all_varnames], [_$0(m4_quote(m4_default([$1], [[, ]])), m4_if([$2], [], m4_quote(lt_decl_varnames), m4_quote(m4_shift($@))))[]dnl ]) m4_define([_lt_decl_all_varnames], [lt_join($@, lt_decl_varnames_tagged([$1], lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl ]) # _LT_CONFIG_STATUS_DECLARE([VARNAME]) # ------------------------------------ # Quote a variable value, and forward it to 'config.status' so that its # declaration there will have the same value as in 'configure'. VARNAME # must have a single quote delimited value for this to work. m4_define([_LT_CONFIG_STATUS_DECLARE], [$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) # _LT_CONFIG_STATUS_DECLARATIONS # ------------------------------ # We delimit libtool config variables with single quotes, so when # we write them to config.status, we have to be sure to quote all # embedded single quotes properly. In configure, this macro expands # each variable declared with _LT_DECL (and _LT_TAGDECL) into: # # ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], [m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAGS # ---------------- # Output comment and list of tags supported by the script m4_defun([_LT_LIBTOOL_TAGS], [_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl available_tags='_LT_TAGS'dnl ]) # _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) # ----------------------------------- # Extract the dictionary values for VARNAME (optionally with TAG) and # expand to a commented shell variable setting: # # # Some comment about what VAR is for. # visible_name=$lt_internal_name m4_define([_LT_LIBTOOL_DECLARE], [_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [description])))[]dnl m4_pushdef([_libtool_name], m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), [0], [_libtool_name=[$]$1], [1], [_libtool_name=$lt_[]$1], [2], [_libtool_name=$lt_[]$1], [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl ]) # _LT_LIBTOOL_CONFIG_VARS # ----------------------- # Produce commented declarations of non-tagged libtool config variables # suitable for insertion in the LIBTOOL CONFIG section of the 'libtool' # script. Tagged libtool config variables (even for the LIBTOOL CONFIG # section) are produced by _LT_LIBTOOL_TAG_VARS. m4_defun([_LT_LIBTOOL_CONFIG_VARS], [m4_foreach([_lt_var], m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAG_VARS(TAG) # ------------------------- m4_define([_LT_LIBTOOL_TAG_VARS], [m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) # _LT_TAGVAR(VARNAME, [TAGNAME]) # ------------------------------ m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) # _LT_CONFIG_COMMANDS # ------------------- # Send accumulated output to $CONFIG_STATUS. Thanks to the lists of # variables for single and double quote escaping we saved from calls # to _LT_DECL, we can put quote escaped variables declarations # into 'config.status', and then the shell code to quote escape them in # for loops in 'config.status'. Finally, any additional code accumulated # from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. m4_defun([_LT_CONFIG_COMMANDS], [AC_PROVIDE_IFELSE([LT_OUTPUT], dnl If the libtool generation code has been placed in $CONFIG_LT, dnl instead of duplicating it all over again into config.status, dnl then we will have config.status run $CONFIG_LT later, so it dnl needs to know what name is stored there: [AC_CONFIG_COMMANDS([libtool], [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], dnl If the libtool generation code is destined for config.status, dnl expand the accumulated commands and init code now: [AC_CONFIG_COMMANDS([libtool], [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) ])#_LT_CONFIG_COMMANDS # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], [ # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' _LT_CONFIG_STATUS_DECLARATIONS LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$[]1 _LTECHO_EOF' } # Quote evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_quote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_dquote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done _LT_OUTPUT_LIBTOOL_INIT ]) # _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) # ------------------------------------ # Generate a child script FILE with all initialization necessary to # reuse the environment learned by the parent script, and make the # file executable. If COMMENT is supplied, it is inserted after the # '#!' sequence but before initialization text begins. After this # macro, additional text can be appended to FILE to form the body of # the child script. The macro ends with non-zero status if the # file could not be fully written (such as if the disk is full). m4_ifdef([AS_INIT_GENERATED], [m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], [m4_defun([_LT_GENERATED_FILE_INIT], [m4_require([AS_PREPARE])]dnl [m4_pushdef([AS_MESSAGE_LOG_FD])]dnl [lt_write_fail=0 cat >$1 <<_ASEOF || lt_write_fail=1 #! $SHELL # Generated by $as_me. $2 SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$1 <<\_ASEOF || lt_write_fail=1 AS_SHELL_SANITIZE _AS_PREPARE exec AS_MESSAGE_FD>&1 _ASEOF test 0 = "$lt_write_fail" && chmod +x $1[]dnl m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT # LT_OUTPUT # --------- # This macro allows early generation of the libtool script (before # AC_OUTPUT is called), incase it is used in configure for compilation # tests. AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt} AC_MSG_NOTICE([creating $CONFIG_LT]) _LT_GENERATED_FILE_INIT(["$CONFIG_LT"], [# Run this file to recreate a libtool stub with the current configuration.]) cat >>"$CONFIG_LT" <<\_LTEOF lt_cl_silent=false exec AS_MESSAGE_LOG_FD>>config.log { echo AS_BOX([Running $as_me.]) } >&AS_MESSAGE_LOG_FD lt_cl_help="\ '$as_me' creates a local libtool stub from the current configuration, for use in further configure time tests before the real libtool is generated. Usage: $[0] [[OPTIONS]] -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files Report bugs to ." lt_cl_version="\ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) configured by $[0], generated by m4_PACKAGE_STRING. Copyright (C) 2011 Free Software Foundation, Inc. This config.lt script is free software; the Free Software Foundation gives unlimited permision to copy, distribute and modify it." while test 0 != $[#] do case $[1] in --version | --v* | -V ) echo "$lt_cl_version"; exit 0 ;; --help | --h* | -h ) echo "$lt_cl_help"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --quiet | --q* | --silent | --s* | -q ) lt_cl_silent=: ;; -*) AC_MSG_ERROR([unrecognized option: $[1] Try '$[0] --help' for more information.]) ;; *) AC_MSG_ERROR([unrecognized argument: $[1] Try '$[0] --help' for more information.]) ;; esac shift done if $lt_cl_silent; then exec AS_MESSAGE_FD>/dev/null fi _LTEOF cat >>"$CONFIG_LT" <<_LTEOF _LT_OUTPUT_LIBTOOL_COMMANDS_INIT _LTEOF cat >>"$CONFIG_LT" <<\_LTEOF AC_MSG_NOTICE([creating $ofile]) _LT_OUTPUT_LIBTOOL_COMMANDS AS_EXIT(0) _LTEOF chmod +x "$CONFIG_LT" # configure is writing to config.log, but config.lt does its own redirection, # appending to config.log, which fails on DOS, as config.log is still kept # open by configure. Here we exec the FD to /dev/null, effectively closing # config.log, so it can be properly (re)opened and appended to by config.lt. lt_cl_success=: test yes = "$silent" && lt_config_lt_args="$lt_config_lt_args --quiet" exec AS_MESSAGE_LOG_FD>/dev/null $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false exec AS_MESSAGE_LOG_FD>>config.log $lt_cl_success || AS_EXIT(1) ])# LT_OUTPUT # _LT_CONFIG(TAG) # --------------- # If TAG is the built-in tag, create an initial libtool script with a # default configuration from the untagged config vars. Otherwise add code # to config.status for appending the configuration named by TAG from the # matching tagged config vars. m4_defun([_LT_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_CONFIG_SAVE_COMMANDS([ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl m4_if(_LT_TAG, [C], [ # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi cfgfile=${ofile}T trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # Generated automatically by $as_me ($PACKAGE) $VERSION # NOTE: Changes made to this file will be lost: look at ltmain.sh. # Provide generalized library-building support services. # Written by Gordon Matzigkeit, 1996 _LT_COPYING _LT_LIBTOOL_TAGS # Configured defaults for sys_lib_dlsearch_path munging. : \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} # ### BEGIN LIBTOOL CONFIG _LT_LIBTOOL_CONFIG_VARS _LT_LIBTOOL_TAG_VARS # ### END LIBTOOL CONFIG _LT_EOF cat <<'_LT_EOF' >> "$cfgfile" # ### BEGIN FUNCTIONS SHARED WITH CONFIGURE _LT_PREPARE_MUNGE_PATH_LIST _LT_PREPARE_CC_BASENAME # ### END FUNCTIONS SHARED WITH CONFIGURE _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac _LT_PROG_LTMAIN # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ], [cat <<_LT_EOF >> "$ofile" dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded dnl in a comment (ie after a #). # ### BEGIN LIBTOOL TAG CONFIG: $1 _LT_LIBTOOL_TAG_VARS(_LT_TAG) # ### END LIBTOOL TAG CONFIG: $1 _LT_EOF ])dnl /m4_if ], [m4_if([$1], [], [ PACKAGE='$PACKAGE' VERSION='$VERSION' RM='$RM' ofile='$ofile'], []) ])dnl /_LT_CONFIG_SAVE_COMMANDS ])# _LT_CONFIG # LT_SUPPORTED_TAG(TAG) # --------------------- # Trace this macro to discover what tags are supported by the libtool # --tag option, using: # autoconf --trace 'LT_SUPPORTED_TAG:$1' AC_DEFUN([LT_SUPPORTED_TAG], []) # C support is built-in for now m4_define([_LT_LANG_C_enabled], []) m4_define([_LT_TAGS], []) # LT_LANG(LANG) # ------------- # Enable libtool support for the given language if not already enabled. AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl m4_case([$1], [C], [_LT_LANG(C)], [C++], [_LT_LANG(CXX)], [Go], [_LT_LANG(GO)], [Java], [_LT_LANG(GCJ)], [Fortran 77], [_LT_LANG(F77)], [Fortran], [_LT_LANG(FC)], [Windows Resource], [_LT_LANG(RC)], [m4_ifdef([_LT_LANG_]$1[_CONFIG], [_LT_LANG($1)], [m4_fatal([$0: unsupported language: "$1"])])])dnl ])# LT_LANG # _LT_LANG(LANGNAME) # ------------------ m4_defun([_LT_LANG], [m4_ifdef([_LT_LANG_]$1[_enabled], [], [LT_SUPPORTED_TAG([$1])dnl m4_append([_LT_TAGS], [$1 ])dnl m4_define([_LT_LANG_]$1[_enabled], [])dnl _LT_LANG_$1_CONFIG($1)])dnl ])# _LT_LANG m4_ifndef([AC_PROG_GO], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_GO. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_GO], [AC_LANG_PUSH(Go)dnl AC_ARG_VAR([GOC], [Go compiler command])dnl AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl _AC_ARG_VAR_LDFLAGS()dnl AC_CHECK_TOOL(GOC, gccgo) if test -z "$GOC"; then if test -n "$ac_tool_prefix"; then AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) fi fi if test -z "$GOC"; then AC_CHECK_PROG(GOC, gccgo, gccgo, false) fi ])#m4_defun ])#m4_ifndef # _LT_LANG_DEFAULT_CONFIG # ----------------------- m4_defun([_LT_LANG_DEFAULT_CONFIG], [AC_PROVIDE_IFELSE([AC_PROG_CXX], [LT_LANG(CXX)], [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) AC_PROVIDE_IFELSE([AC_PROG_F77], [LT_LANG(F77)], [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) AC_PROVIDE_IFELSE([AC_PROG_FC], [LT_LANG(FC)], [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal dnl pulling things in needlessly. AC_PROVIDE_IFELSE([AC_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([LT_PROG_GCJ], [LT_LANG(GCJ)], [m4_ifdef([AC_PROG_GCJ], [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([A][M_PROG_GCJ], [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([LT_PROG_GCJ], [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) AC_PROVIDE_IFELSE([AC_PROG_GO], [LT_LANG(GO)], [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) AC_PROVIDE_IFELSE([LT_PROG_RC], [LT_LANG(RC)], [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) ])# _LT_LANG_DEFAULT_CONFIG # Obsolete macros: AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_CXX], []) dnl AC_DEFUN([AC_LIBTOOL_F77], []) dnl AC_DEFUN([AC_LIBTOOL_FC], []) dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) dnl AC_DEFUN([AC_LIBTOOL_RC], []) # _LT_TAG_COMPILER # ---------------- m4_defun([_LT_TAG_COMPILER], [AC_REQUIRE([AC_PROG_CC])dnl _LT_DECL([LTCC], [CC], [1], [A C compiler])dnl _LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl _LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl _LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC ])# _LT_TAG_COMPILER # _LT_COMPILER_BOILERPLATE # ------------------------ # Check for compiler boilerplate output or warnings with # the simple compiler test code. m4_defun([_LT_COMPILER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ])# _LT_COMPILER_BOILERPLATE # _LT_LINKER_BOILERPLATE # ---------------------- # Check for linker boilerplate output or warnings with # the simple link test code. m4_defun([_LT_LINKER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ])# _LT_LINKER_BOILERPLATE # _LT_REQUIRED_DARWIN_CHECKS # ------------------------- m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ case $host_os in rhapsody* | darwin*) AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) AC_CHECK_TOOL([LIPO], [lipo], [:]) AC_CHECK_TOOL([OTOOL], [otool], [:]) AC_CHECK_TOOL([OTOOL64], [otool64], [:]) _LT_DECL([], [DSYMUTIL], [1], [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) _LT_DECL([], [NMEDIT], [1], [Tool to change global to local symbols on Mac OS X]) _LT_DECL([], [LIPO], [1], [Tool to manipulate fat objects and archives on Mac OS X]) _LT_DECL([], [OTOOL], [1], [ldd/readelf like tool for Mach-O binaries on Mac OS X]) _LT_DECL([], [OTOOL64], [1], [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], [lt_cv_apple_cc_single_mod=no if test -z "$LT_MULTI_MODULE"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test 0 = "$_lt_result"; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -rf libconftest.dylib* rm -f conftest.* fi]) AC_CACHE_CHECK([for -exported_symbols_list linker flag], [lt_cv_ld_exported_symbols_list], [lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [lt_cv_ld_exported_symbols_list=yes], [lt_cv_ld_exported_symbols_list=no]) LDFLAGS=$save_LDFLAGS ]) AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], [lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then lt_cv_ld_force_load=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM ]) case $host_os in rhapsody* | darwin1.[[012]]) _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; 10.[[012]][[,.]]*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test yes = "$lt_cv_apple_cc_single_mod"; then _lt_dar_single_mod='$single_module' fi if test yes = "$lt_cv_ld_exported_symbols_list"; then _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' fi if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac ]) # _LT_DARWIN_LINKER_FEATURES([TAG]) # --------------------------------- # Checks for linker and compiler features on darwin m4_defun([_LT_DARWIN_LINKER_FEATURES], [ m4_require([_LT_REQUIRED_DARWIN_CHECKS]) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported if test yes = "$lt_cv_ld_force_load"; then _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) else _LT_TAGVAR(whole_archive_flag_spec, $1)='' fi _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" m4_if([$1], [CXX], [ if test yes != "$lt_cv_apple_cc_single_mod"; then _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" fi ],[]) else _LT_TAGVAR(ld_shlibs, $1)=no fi ]) # _LT_SYS_MODULE_PATH_AIX([TAGNAME]) # ---------------------------------- # Links a minimal program and checks the executable # for the system default hardcoded library path. In most cases, # this is /usr/lib:/lib, but when the MPI compilers are used # the location of the communication and MPI libs are included too. # If we don't find anything, use the default library path according # to the aix ld manual. # Store the results from the different compilers for each TAGNAME. # Allow to override them for all tags through lt_cv_aix_libpath. m4_defun([_LT_SYS_MODULE_PATH_AIX], [m4_require([_LT_DECL_SED])dnl if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ lt_aix_libpath_sed='[ /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }]' _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi],[]) if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=/usr/lib:/lib fi ]) aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) fi ])# _LT_SYS_MODULE_PATH_AIX # _LT_SHELL_INIT(ARG) # ------------------- m4_define([_LT_SHELL_INIT], [m4_divert_text([M4SH-INIT], [$1 ])])# _LT_SHELL_INIT # _LT_PROG_ECHO_BACKSLASH # ----------------------- # Find how we can fake an echo command that does not interpret backslash. # In particular, with Autoconf 2.60 or later we add some code to the start # of the generated configure script that will find a shell with a builtin # printf (that we can use as an echo command). m4_defun([_LT_PROG_ECHO_BACKSLASH], [ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO AC_MSG_CHECKING([how to print strings]) # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $[]1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } case $ECHO in printf*) AC_MSG_RESULT([printf]) ;; print*) AC_MSG_RESULT([print -r]) ;; *) AC_MSG_RESULT([cat]) ;; esac m4_ifdef([_AS_DETECT_SUGGESTED], [_AS_DETECT_SUGGESTED([ test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test "X`printf %s $ECHO`" = "X$ECHO" \ || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) ])# _LT_PROG_ECHO_BACKSLASH # _LT_WITH_SYSROOT # ---------------- AC_DEFUN([_LT_WITH_SYSROOT], [AC_MSG_CHECKING([for sysroot]) AC_ARG_WITH([sysroot], [AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@], [Search for dependent libraries within DIR (or the compiler's sysroot if not specified).])], [], [with_sysroot=no]) dnl lt_sysroot will always be passed unquoted. We quote it here dnl in case the user passed a directory name. lt_sysroot= case $with_sysroot in #( yes) if test yes = "$GCC"; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) AC_MSG_RESULT([$with_sysroot]) AC_MSG_ERROR([The sysroot must be an absolute path.]) ;; esac AC_MSG_RESULT([${lt_sysroot:-no}]) _LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl [dependent libraries, and where our libraries should be installed.])]) # _LT_ENABLE_LOCK # --------------- m4_defun([_LT_ENABLE_LOCK], [AC_ARG_ENABLE([libtool-lock], [AS_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test no = "$enable_libtool_lock" || enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out what ABI is being produced by ac_compile, and set mode # options accordingly. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE=32 ;; *ELF-64*) HPUX_IA64_MODE=64 ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test yes = "$lt_cv_prog_gnu_ld"; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; mips64*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then emul=elf case `/usr/bin/file conftest.$ac_objext` in *32-bit*) emul="${emul}32" ;; *64-bit*) emul="${emul}64" ;; esac case `/usr/bin/file conftest.$ac_objext` in *MSB*) emul="${emul}btsmip" ;; *LSB*) emul="${emul}ltsmip" ;; esac case `/usr/bin/file conftest.$ac_objext` in *N32*) emul="${emul}n32" ;; esac LD="${LD-ld} -m $emul" fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. Note that the listed cases only cover the # situations where additional linker options are needed (such as when # doing 32-bit compilation for a host where ld defaults to 64-bit, or # vice versa); the common cases where no linker options are needed do # not appear in the list. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) case `/usr/bin/file conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; *) LD="${LD-ld} -m elf_i386" ;; esac ;; powerpc64le-*linux*) LD="${LD-ld} -m elf32lppclinux" ;; powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) if test yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS=$SAVE_CFLAGS fi ;; *-*solaris*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*|x86_64-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD=${LD-ld}_sol2 fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks=$enable_libtool_lock ])# _LT_ENABLE_LOCK # _LT_PROG_AR # ----------- m4_defun([_LT_PROG_AR], [AC_CHECK_TOOLS(AR, [ar], false) : ${AR=ar} : ${AR_FLAGS=cru} _LT_DECL([], [AR], [1], [The archiver]) _LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], [lt_cv_ar_at_file=no AC_COMPILE_IFELSE([AC_LANG_PROGRAM], [echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([lt_ar_try]) if test 0 -eq "$ac_status"; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a AC_TRY_EVAL([lt_ar_try]) if test 0 -ne "$ac_status"; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a ]) ]) if test no = "$lt_cv_ar_at_file"; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi _LT_DECL([], [archiver_list_spec], [1], [How to feed a file listing to the archiver]) ])# _LT_PROG_AR # _LT_CMD_OLD_ARCHIVE # ------------------- m4_defun([_LT_CMD_OLD_ARCHIVE], [_LT_PROG_AR AC_CHECK_TOOL(STRIP, strip, :) test -z "$STRIP" && STRIP=: _LT_DECL([], [STRIP], [1], [A symbol stripping program]) AC_CHECK_TOOL(RANLIB, ranlib, :) test -z "$RANLIB" && RANLIB=: _LT_DECL([], [RANLIB], [1], [Commands used to install an old-style archive]) # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in bitrig* | openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac _LT_DECL([], [old_postinstall_cmds], [2]) _LT_DECL([], [old_postuninstall_cmds], [2]) _LT_TAGDECL([], [old_archive_cmds], [2], [Commands used to build an old-style archive]) _LT_DECL([], [lock_old_archive_extraction], [0], [Whether to use a lock for old archive extraction]) ])# _LT_CMD_OLD_ARCHIVE # _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------------------- # Check whether the given compiler option works AC_DEFUN([_LT_COMPILER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$3" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi fi $RM conftest* ]) if test yes = "[$]$2"; then m4_if([$5], , :, [$5]) else m4_if([$6], , :, [$6]) fi ])# _LT_COMPILER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) # _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------- # Check whether the given linker option works AC_DEFUN([_LT_LINKER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $3" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi else $2=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS ]) if test yes = "[$]$2"; then m4_if([$4], , :, [$4]) else m4_if([$5], , :, [$5]) fi ])# _LT_LINKER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) # LT_CMD_MAX_LEN #--------------- AC_DEFUN([LT_CMD_MAX_LEN], [AC_REQUIRE([AC_CANONICAL_HOST])dnl # find the maximum length of command line arguments AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 teststring=ABCD case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test X`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test 17 != "$i" # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac ]) if test -n "$lt_cv_sys_max_cmd_len"; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) fi max_cmd_len=$lt_cv_sys_max_cmd_len _LT_DECL([], [max_cmd_len], [0], [What is the maximum length of a command?]) ])# LT_CMD_MAX_LEN # Old name: AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) # _LT_HEADER_DLFCN # ---------------- m4_defun([_LT_HEADER_DLFCN], [AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl ])# _LT_HEADER_DLFCN # _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) # ---------------------------------------------------------------- m4_defun([_LT_TRY_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test yes = "$cross_compiling"; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF [#line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; }] _LT_EOF if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_dlunknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ])# _LT_TRY_DLOPEN_SELF # LT_SYS_DLOPEN_SELF # ------------------ AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test yes != "$enable_dlopen"; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen=load_add_on lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen=LoadLibrary lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen=dlopen lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],[ lt_cv_dlopen=dyld lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; tpf*) # Don't try to run any link tests for TPF. We know it's impossible # because TPF is a cross-compiler, and we know how we open DSOs. lt_cv_dlopen=dlopen lt_cv_dlopen_libs= lt_cv_dlopen_self=no ;; *) AC_CHECK_FUNC([shl_load], [lt_cv_dlopen=shl_load], [AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen=dlopen], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld]) ]) ]) ]) ]) ]) ;; esac if test no = "$lt_cv_dlopen"; then enable_dlopen=no else enable_dlopen=yes fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS=$CPPFLAGS test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS=$LDFLAGS wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS=$LIBS LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test yes = "$lt_cv_dlopen_self"; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) fi CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi _LT_DECL([dlopen_support], [enable_dlopen], [0], [Whether dlopen is supported]) _LT_DECL([dlopen_self], [enable_dlopen_self], [0], [Whether dlopen of programs is supported]) _LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], [Whether dlopen of statically linked programs is supported]) ])# LT_SYS_DLOPEN_SELF # Old name: AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) # _LT_COMPILER_C_O([TAGNAME]) # --------------------------- # Check to see if options -c and -o are simultaneously supported by compiler. # This macro does not hard code the compiler like AC_PROG_CC_C_O. m4_defun([_LT_COMPILER_C_O], [m4_require([_LT_DECL_SED])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes fi fi chmod u+w . 2>&AS_MESSAGE_LOG_FD $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* ]) _LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], [Does compiler simultaneously support -c and -o options?]) ])# _LT_COMPILER_C_O # _LT_COMPILER_FILE_LOCKS([TAGNAME]) # ---------------------------------- # Check to see if we can do hard links to lock some files if needed m4_defun([_LT_COMPILER_FILE_LOCKS], [m4_require([_LT_ENABLE_LOCK])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_COMPILER_C_O([$1]) hard_links=nottested if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) if test no = "$hard_links"; then AC_MSG_WARN(['$CC' does not support '-c -o', so 'make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi _LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) ])# _LT_COMPILER_FILE_LOCKS # _LT_CHECK_OBJDIR # ---------------- m4_defun([_LT_CHECK_OBJDIR], [AC_CACHE_CHECK([for objdir], [lt_cv_objdir], [rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null]) objdir=$lt_cv_objdir _LT_DECL([], [objdir], [0], [The name of the directory that contains temporary libtool files])dnl m4_pattern_allow([LT_OBJDIR])dnl AC_DEFINE_UNQUOTED([LT_OBJDIR], "$lt_cv_objdir/", [Define to the sub-directory where libtool stores uninstalled libraries.]) ])# _LT_CHECK_OBJDIR # _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) # -------------------------------------- # Check hardcoding attributes. m4_defun([_LT_LINKER_HARDCODE_LIBPATH], [AC_MSG_CHECKING([how to hardcode library paths into programs]) _LT_TAGVAR(hardcode_action, $1)= if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || test -n "$_LT_TAGVAR(runpath_var, $1)" || test yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then # We can hardcode non-existent directories. if test no != "$_LT_TAGVAR(hardcode_direct, $1)" && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" && test no != "$_LT_TAGVAR(hardcode_minus_L, $1)"; then # Linking always hardcodes the temporary library directory. _LT_TAGVAR(hardcode_action, $1)=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. _LT_TAGVAR(hardcode_action, $1)=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. _LT_TAGVAR(hardcode_action, $1)=unsupported fi AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) if test relink = "$_LT_TAGVAR(hardcode_action, $1)" || test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi _LT_TAGDECL([], [hardcode_action], [0], [How to hardcode a shared library path into an executable]) ])# _LT_LINKER_HARDCODE_LIBPATH # _LT_CMD_STRIPLIB # ---------------- m4_defun([_LT_CMD_STRIPLIB], [m4_require([_LT_DECL_EGREP]) striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP"; then striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi ;; *) AC_MSG_RESULT([no]) ;; esac fi _LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) _LT_DECL([], [striplib], [1]) ])# _LT_CMD_STRIPLIB # _LT_PREPARE_MUNGE_PATH_LIST # --------------------------- # Make sure func_munge_path_list() is defined correctly. m4_defun([_LT_PREPARE_MUNGE_PATH_LIST], [[# func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x@S|@2 in x) ;; *:) eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\" ;; x:*) eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\" ;; *::*) eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\" ;; *) eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\" ;; esac } ]])# _LT_PREPARE_PATH_LIST # _LT_SYS_DYNAMIC_LINKER([TAG]) # ----------------------------- # PORTME Fill in your ld.so characteristics m4_defun([_LT_SYS_DYNAMIC_LINKER], [AC_REQUIRE([AC_CANONICAL_HOST])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_OBJDUMP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_PREPARE_MUNGE_PATH_LIST])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], [], [ if test yes = "$GCC"; then case $host_os in darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; *) lt_awk_arg='/^libraries:/' ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;; *) lt_sed_strip_eq='s|=/|/|g' ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary... lt_tmp_lt_search_path_spec= lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` # ...but if some path component already ends with the multilib dir we assume # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). case "$lt_multi_os_dir; $lt_search_path_spec " in "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) lt_multi_os_dir= ;; esac for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" elif test -n "$lt_multi_os_dir"; then test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS = " "; FS = "/|\n";} { lt_foo = ""; lt_count = 0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo = "/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[[lt_foo]]++; } if (lt_freq[[lt_foo]] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's|/\([[A-Za-z]]:\)|\1|g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi]) library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown AC_ARG_VAR([LT_SYS_LIBRARY_PATH], [User-defined run-time library search path.]) case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='$libname$release$shared_ext$major' ;; aix[[4-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line '#! .'. This would cause the generated library to # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # Using Import Files as archive members, it is possible to support # filename-based versioning of shared library archives on AIX. While # this would work for both with and without runtime linking, it will # prevent static linking of such archives. So we do filename-based # shared library versioning with .so extension only, which is used # when both runtime linking and shared linking is enabled. # Unfortunately, runtime linking may impact performance, so we do # not want this to be the default eventually. Also, we use the # versioned .so libs for executables only if there is the -brtl # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. # To allow for filename-based versioning support, we need to create # libNAME.so.V as an archive file, containing: # *) an Import File, referring to the versioned filename of the # archive as well as the shared archive member, telling the # bitwidth (32 or 64) of that shared object, and providing the # list of exported symbols of that shared object, eventually # decorated with the 'weak' keyword # *) the shared object with the F_LOADONLY flag set, to really avoid # it being seen by the linker. # At run time we better use the real file rather than another symlink, # but for link time we create the symlink libNAME.so -> libNAME.so.V case $with_aix_soname,$aix_use_runtimelinking in # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. aix,yes) # traditional libtool dynamic_linker='AIX unversionable lib.so' # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; aix,no) # traditional AIX only dynamic_linker='AIX lib.a[(]lib.so.V[)]' # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' ;; svr4,*) # full svr4 only dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)]" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,yes) # both, prefer svr4 dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)], lib.a[(]lib.so.V[)]" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # unpreferred sharedlib libNAME.a needs extra handling postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,no) # both, prefer aix dynamic_linker="AIX lib.a[(]lib.so.V[)], lib.so.V[(]$shared_archive_member_spec.o[)]" library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' ;; esac shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[[45]]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[[23]].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[[01]]* | freebsdelf3.[[01]]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[[3-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; linux*android*) version_type=none # Android doesn't support versioned libraries. need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes dynamic_linker='Android linker' # Don't embed -rpath directories since the linker doesn't support them. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], [lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], [lt_cv_shlibpath_overrides_runpath=yes])]) LDFLAGS=$save_LDFLAGS libdir=$save_libdir ]) shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Ideally, we could use ldconfig to report *all* directores which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, # even though it is searched at run-time. Try to do the best guess by # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd* | bitrig*) version_type=sunos sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then need_version=no else need_version=yes fi library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no # OS/2 can only load a DLL with a base name of 8 characters or less. soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; v=$($ECHO $release$versuffix | tr -d .-); n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); $ECHO $n$v`$shared_ext' library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' shlibpath_var=BEGINLIBPATH sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec; then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' soname_spec='$libname$shared_ext.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac AC_MSG_RESULT([$dynamic_linker]) test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi # remember unaugmented sys_lib_dlsearch_path content for libtool script decls... configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec # ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" # to be used as default LT_SYS_LIBRARY_PATH value in generated libtool configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH _LT_DECL([], [variables_saved_for_relink], [1], [Variables whose values should be saved in libtool wrapper scripts and restored at link time]) _LT_DECL([], [need_lib_prefix], [0], [Do we need the "lib" prefix for modules?]) _LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) _LT_DECL([], [version_type], [0], [Library versioning type]) _LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) _LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) _LT_DECL([], [shlibpath_overrides_runpath], [0], [Is shlibpath searched before the hard-coded library search path?]) _LT_DECL([], [libname_spec], [1], [Format of library name prefix]) _LT_DECL([], [library_names_spec], [1], [[List of archive names. First name is the real one, the rest are links. The last name is the one that the linker finds with -lNAME]]) _LT_DECL([], [soname_spec], [1], [[The coded name of the library, if different from the real name]]) _LT_DECL([], [install_override_mode], [1], [Permission mode override for installation of shared libraries]) _LT_DECL([], [postinstall_cmds], [2], [Command to use after installation of a shared archive]) _LT_DECL([], [postuninstall_cmds], [2], [Command to use after uninstallation of a shared archive]) _LT_DECL([], [finish_cmds], [2], [Commands used to finish a libtool library installation in a directory]) _LT_DECL([], [finish_eval], [1], [[As "finish_cmds", except a single script fragment to be evaled but not shown]]) _LT_DECL([], [hardcode_into_libs], [0], [Whether we should hardcode library paths into libraries]) _LT_DECL([], [sys_lib_search_path_spec], [2], [Compile-time system search path for libraries]) _LT_DECL([sys_lib_dlsearch_path_spec], [configure_time_dlsearch_path], [2], [Detected run-time system search path for libraries]) _LT_DECL([], [configure_time_lt_sys_library_path], [2], [Explicit LT_SYS_LIBRARY_PATH set during ./configure time]) ])# _LT_SYS_DYNAMIC_LINKER # _LT_PATH_TOOL_PREFIX(TOOL) # -------------------------- # find a file program that can recognize shared library AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in [[\\/*] | ?:[\\/]*]) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="m4_if([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$1"; then lt_cv_path_MAGIC_CMD=$ac_dir/"$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac]) MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi _LT_DECL([], [MAGIC_CMD], [0], [Used to examine libraries when file_magic_cmd begins with "file"])dnl ])# _LT_PATH_TOOL_PREFIX # Old name: AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) # _LT_PATH_MAGIC # -------------- # find a file program that can recognize a shared library m4_defun([_LT_PATH_MAGIC], [_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) else MAGIC_CMD=: fi fi ])# _LT_PATH_MAGIC # LT_PATH_LD # ---------- # find the pathname to the GNU or non-GNU linker AC_DEFUN([LT_PATH_LD], [AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PROG_ECHO_BACKSLASH])dnl AC_ARG_WITH([gnu-ld], [AS_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test no = "$withval" || with_gnu_ld=yes], [with_gnu_ld=no])dnl ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test yes = "$with_gnu_ld"; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &1 conftest.i cat conftest.i conftest.i >conftest2.i : ${lt_DD:=$DD} AC_PATH_PROGS_FEATURE_CHECK([lt_DD], [dd], [if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: fi]) rm -f conftest.i conftest2.i conftest.out]) ])# _LT_PATH_DD # _LT_CMD_TRUNCATE # ---------------- # find command to truncate a binary pipe m4_defun([_LT_CMD_TRUNCATE], [m4_require([_LT_PATH_DD]) AC_CACHE_CHECK([how to truncate binary pipes], [lt_cv_truncate_bin], [printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i lt_cv_truncate_bin= if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" fi rm -f conftest.i conftest2.i conftest.out test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"]) _LT_DECL([lt_truncate_bin], [lt_cv_truncate_bin], [1], [Command to truncate a binary pipe]) ])# _LT_CMD_TRUNCATE # _LT_CHECK_MAGIC_METHOD # ---------------------- # how to check for library dependencies # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_MAGIC_METHOD], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) AC_CACHE_CHECK([how to recognize dependent libraries], lt_cv_deplibs_check_method, [lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # 'unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # that responds to the $file_magic_cmd with a given extended regex. # If you have 'file' or equivalent on your system and you're not sure # whether 'pass_all' will *always* work, you probably want this one. case $host_os in aix[[4-9]]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[[45]]*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[[3-9]]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd* | bitrig*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; os2*) lt_cv_deplibs_check_method=pass_all ;; esac ]) file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown _LT_DECL([], [deplibs_check_method], [1], [Method to check whether dependent libraries are shared objects]) _LT_DECL([], [file_magic_cmd], [1], [Command to use when deplibs_check_method = "file_magic"]) _LT_DECL([], [file_magic_glob], [1], [How to find potential files when deplibs_check_method = "file_magic"]) _LT_DECL([], [want_nocaseglob], [1], [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) ])# _LT_CHECK_MAGIC_METHOD # LT_PATH_NM # ---------- # find the pathname to a BSD- or MS-compatible name lister AC_DEFUN([LT_PATH_NM], [AC_REQUIRE([AC_PROG_CC])dnl AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM=$NM else lt_nm_to_check=${ac_tool_prefix}nm if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. tmp_nm=$ac_dir/$lt_tmp_nm if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then # Check to see if the nm accepts a BSD-compat flag. # Adding the 'sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty case $build_os in mingw*) lt_bad_file=conftest.nm/nofile ;; *) lt_bad_file=/dev/null ;; esac case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in *$lt_bad_file* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break 2 ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break 2 ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS=$lt_save_ifs done : ${lt_cv_path_NM=no} fi]) if test no != "$lt_cv_path_NM"; then NM=$lt_cv_path_NM else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols -headers" ;; *) DUMPBIN=: ;; esac fi AC_SUBST([DUMPBIN]) if test : != "$DUMPBIN"; then NM=$DUMPBIN fi fi test -z "$NM" && NM=nm AC_SUBST([NM]) _LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], [lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) cat conftest.out >&AS_MESSAGE_LOG_FD if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest*]) ])# LT_PATH_NM # Old names: AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_PROG_NM], []) dnl AC_DEFUN([AC_PROG_NM], []) # _LT_CHECK_SHAREDLIB_FROM_LINKLIB # -------------------------------- # how to determine the name of the shared library # associated with a specific link library. # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) m4_require([_LT_DECL_DLLTOOL]) AC_CACHE_CHECK([how to associate runtime and link libraries], lt_cv_sharedlib_from_linklib_cmd, [lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh; # decide which one to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd=$ECHO ;; esac ]) sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO _LT_DECL([], [sharedlib_from_linklib_cmd], [1], [Command to associate shared and link libraries]) ])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB # _LT_PATH_MANIFEST_TOOL # ---------------------- # locate the manifest tool m4_defun([_LT_PATH_MANIFEST_TOOL], [AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], [lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&AS_MESSAGE_LOG_FD if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest*]) if test yes != "$lt_cv_path_mainfest_tool"; then MANIFEST_TOOL=: fi _LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl ])# _LT_PATH_MANIFEST_TOOL # _LT_DLL_DEF_P([FILE]) # --------------------- # True iff FILE is a Windows DLL '.def' file. # Keep in sync with func_dll_def_p in the libtool script AC_DEFUN([_LT_DLL_DEF_P], [dnl test DEF = "`$SED -n dnl -e '\''s/^[[ ]]*//'\'' dnl Strip leading whitespace -e '\''/^\(;.*\)*$/d'\'' dnl Delete empty lines and comments -e '\''s/^\(EXPORTS\|LIBRARY\)\([[ ]].*\)*$/DEF/p'\'' dnl -e q dnl Only consider the first "real" line $1`" dnl ])# _LT_DLL_DEF_P # LT_LIB_M # -------- # check for math library AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM=-lmw) AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, cos, LIBM=-lm) ;; esac AC_SUBST([LIBM]) ])# LT_LIB_M # Old name: AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_CHECK_LIBM], []) # _LT_COMPILER_NO_RTTI([TAGNAME]) # ------------------------------- m4_defun([_LT_COMPILER_NO_RTTI], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= if test yes = "$GCC"; then case $cc_basename in nvcc*) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; *) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; esac _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], lt_cv_prog_compiler_rtti_exceptions, [-fno-rtti -fno-exceptions], [], [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) fi _LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], [Compiler flag to turn off builtin functions]) ])# _LT_COMPILER_NO_RTTI # _LT_CMD_GLOBAL_SYMBOLS # ---------------------- m4_defun([_LT_CMD_GLOBAL_SYMBOLS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([LT_PATH_NM])dnl AC_REQUIRE([LT_PATH_LD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_TAG_COMPILER])dnl # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output from $compiler object]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [ # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[[BCDEGRST]]' # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[[BCDT]]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[[ABCDGISTW]]' ;; hpux*) if test ia64 = "$host_cpu"; then symcode='[[ABCDEGRST]]' fi ;; irix* | nonstopux*) symcode='[[BCDEGRST]]' ;; osf*) symcode='[[BCDEGQRST]]' ;; solaris*) symcode='[[BDRT]]' ;; sco3.2v5*) symcode='[[DT]]' ;; sysv4.2uw2*) symcode='[[DT]]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[[ABDT]]' ;; sysv4) symcode='[[DFNSTU]]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[[ABCDGIRSTW]]' ;; esac if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Gets list of data symbols to import. lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" # Adjust the below global symbol transforms to fixup imported variables. lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" lt_c_name_lib_hook="\ -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" else # Disable hooks by default. lt_cv_sys_global_symbol_to_import= lt_cdecl_hook= lt_c_name_hook= lt_c_name_lib_hook= fi # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n"\ $lt_cdecl_hook\ " -e 's/^T .* \(.*\)$/extern int \1();/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ $lt_c_name_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" # Transform an extracted symbol line into symbol name with lib prefix and # symbol address. lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ $lt_c_name_lib_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function, # D for any global variable and I for any imported variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK ['"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ " /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ " /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ " {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ " s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx]" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm $ECHO "$as_me:$LINENO: $NM conftest.$ac_objext | $lt_cv_sys_global_symbol_pipe > $nlist" >&AS_MESSAGE_LOG_FD if eval "$NM" conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist 2>&AS_MESSAGE_LOG_FD && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT@&t@_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT@&t@_DLSYM_CONST #else # define LT@&t@_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT@&t@_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[[]] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS=conftstm.$ac_objext CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test yes = "$pipe_works"; then break else lt_cv_sys_global_symbol_pipe= fi done ]) if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then nm_file_list_spec='@' fi _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], [Take the output of nm and produce a listing of raw symbols and C names]) _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], [Transform the output of nm in a proper C declaration]) _LT_DECL([global_symbol_to_import], [lt_cv_sys_global_symbol_to_import], [1], [Transform the output of nm into a list of symbols to manually relocate]) _LT_DECL([global_symbol_to_c_name_address], [lt_cv_sys_global_symbol_to_c_name_address], [1], [Transform the output of nm in a C name address pair]) _LT_DECL([global_symbol_to_c_name_address_lib_prefix], [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], [Transform the output of nm in a C name address pair when lib prefix is needed]) _LT_DECL([nm_interface], [lt_cv_nm_interface], [1], [The name lister interface]) _LT_DECL([], [nm_file_list_spec], [1], [Specify filename containing input files for $NM]) ]) # _LT_CMD_GLOBAL_SYMBOLS # _LT_COMPILER_PIC([TAGNAME]) # --------------------------- m4_defun([_LT_COMPILER_PIC], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_wl, $1)= _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)= m4_if([$1], [CXX], [ # C++ specific cases for pic, static, wl, etc. if test yes = "$GXX"; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else case $host_os in aix[[4-9]]*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; dgux*) case $cc_basename in ec++*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; ghcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' if test ia64 != "$host_cpu"; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # KAI C++ Compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64, which still supported -KPIC. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL 8.0, 9.0 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ;; *) ;; esac ;; netbsd* | netbsdelf*-gnu) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; cxx*) # Digital/Compaq C++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; lcc*) # Lucid _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ], [ if test yes = "$GCC"; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' case $cc_basename in nagfor*) # NAG Fortran compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; hpux9* | hpux10* | hpux11*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC (with -KPIC) is the default. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64, which still supported -KPIC. ecc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # flang / f18. f95 an alias for gfortran or flang on Debian flang* | f18* | f95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # Lahey Fortran 8.1. lf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' ;; nagfor*) # NAG Fortran compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; tcc*) # Fabrice Bellard et al's Tiny C Compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; ccc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All Alpha code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='' ;; *Sun\ F* | *Sun*Fortran*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; *Intel*\ [[CF]]*Compiler*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; *Portland\ Group*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; esac ;; newsos6) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All OSF/1 code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; rdos*) _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; solaris*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; *) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; esac ;; sunos4*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; unicos*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; uts4*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ]) case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" ;; esac AC_CACHE_CHECK([for $compiler option to produce PIC], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) _LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) # # Check to make sure the PIC flag actually works. # if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in "" | " "*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; esac], [_LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) fi _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], [Additional compiler flags for building library objects]) _LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], [How to pass a linker flag through the compiler]) # # Check to make sure the static flag actually works. # wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), $lt_tmp_static_flag, [], [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) _LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], [Compiler flag to prevent dynamic linking]) ])# _LT_COMPILER_PIC # _LT_LINKER_SHLIBS([TAGNAME]) # ---------------------------- # See if the linker supports building shared libraries. m4_defun([_LT_LINKER_SHLIBS], [AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) m4_if([$1], [CXX], [ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] case $host_os in aix[[4-9]]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi ;; pw32*) _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds ;; cygwin* | mingw* | cegcc*) case $cc_basename in cl*) _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] ;; esac ;; linux* | k*bsd*-gnu | gnu*) _LT_TAGVAR(link_all_deplibs, $1)=no ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac ], [ runpath_var= _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_cmds, $1)= _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(old_archive_from_new_cmds, $1)= _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= _LT_TAGVAR(thread_safe_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list _LT_TAGVAR(include_expsyms, $1)= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ' (' and ')$', so one must not match beginning or # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', # as well as any symbol that contains 'd'. _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. dnl Note also adjust exclude_expsyms for C++ above. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd* | bitrig*) with_gnu_ld=no ;; linux* | k*bsd*-gnu | gnu*) _LT_TAGVAR(link_all_deplibs, $1)=no ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test yes = "$lt_use_gnu_ld_interface"; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='$wl' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi supports_anon_versioning=no case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[[3-9]]*) # On AIX/PPC, the GNU linker is very broken if test ia64 != "$host_cpu"; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported shrext_cmds=.dll _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test linux-dietlibc = "$host_os"; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test no = "$tmp_diet" then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 _LT_TAGVAR(whole_archive_flag_spec, $1)= tmp_sharedflag='--shared' ;; nagfor*) # NAGFOR 5.3 tmp_sharedflag='-Wl,-shared' ;; xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in tcc*) _LT_TAGVAR(export_dynamic_flag_spec, $1)='-rdynamic' ;; xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; sunos4*) _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac if test no = "$_LT_TAGVAR(ld_shlibs, $1)"; then runpath_var= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_TAGVAR(hardcode_minus_L, $1)=yes if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_TAGVAR(hardcode_direct, $1)=unsupported fi ;; aix[[4-9]]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then aix_use_runtimelinking=yes break fi done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='$wl-f,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # traditional, no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no ;; esac if test yes = "$GCC"; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi ;; esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; then shared_flag="$shared_flag "'$wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_TAGVAR(always_export_symbols, $1)=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; bsdi[[45]]*) _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' # FIXME: Should let the user specify the lib program. _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; hpux9*) if test yes = "$GCC"; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' ;; hpux10*) if test yes,no = "$GCC,$with_gnu_ld"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test no = "$with_gnu_ld"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes fi ;; hpux11*) if test yes,no = "$GCC,$with_gnu_ld"; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) m4_if($1, [], [ # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) _LT_LINKER_OPTION([if $CC understands -b], _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) ;; esac fi if test no = "$with_gnu_ld"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test yes = "$GCC"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], [lt_cv_irix_exported_symbol], [save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" AC_LINK_IFELSE( [AC_LANG_SOURCE( [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], [C++], [[int foo (void) { return 0; }]], [Fortran 77], [[ subroutine foo end]], [Fortran], [[ subroutine foo end]])])], [lt_cv_irix_exported_symbol=yes], [lt_cv_irix_exported_symbol=no]) LDFLAGS=$save_LDFLAGS]) if test yes = "$lt_cv_irix_exported_symbol"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi _LT_TAGVAR(link_all_deplibs, $1)=no else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes _LT_TAGVAR(link_all_deplibs, $1)=yes ;; linux*) case $cc_basename in tcc*) # Fabrice Bellard et al's Tiny C Compiler _LT_TAGVAR(ld_shlibs, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; newsos6) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *nto* | *qnx*) ;; openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' fi else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported shrext_cmds=.dll _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; osf3*) if test yes = "$GCC"; then _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test yes = "$GCC"; then _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; solaris*) _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' if test yes = "$GCC"; then wlarc='$wl' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' _LT_TAGVAR(archive_cmds, $1)='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='$wl' _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. GCC discards it without '$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test yes = "$GCC"; then _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' else _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' fi ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes ;; sunos4*) if test sequent = "$host_vendor"; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4) case $host_vendor in sni) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' _LT_TAGVAR(hardcode_direct, $1)=no ;; motorola) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4.3*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes _LT_TAGVAR(ld_shlibs, $1)=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(ld_shlibs, $1)=no ;; esac if test sni = "$host_vendor"; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Blargedynsym' ;; esac fi fi ]) AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no _LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld _LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl _LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl _LT_DECL([], [extract_expsyms_cmds], [2], [The commands to extract the exported symbol list from a shared archive]) # # Do we need to explicitly link libc? # case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in x|xyes) # Assume -lc should be added _LT_TAGVAR(archive_cmds_need_lc, $1)=yes if test yes,yes = "$GCC,$enable_shared"; then case $_LT_TAGVAR(archive_cmds, $1) in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. AC_CACHE_CHECK([whether -lc should be explicitly linked in], [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), [$RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if AC_TRY_EVAL(ac_compile) 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) _LT_TAGVAR(allow_undefined_flag, $1)= if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) then lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no else lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes fi _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* ]) _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) ;; esac fi ;; esac _LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], [Whether or not to add -lc for building shared libraries]) _LT_TAGDECL([allow_libtool_libs_with_static_runtimes], [enable_shared_with_static_runtimes], [0], [Whether or not to disallow shared libs when runtime libs are static]) _LT_TAGDECL([], [export_dynamic_flag_spec], [1], [Compiler flag to allow reflexive dlopens]) _LT_TAGDECL([], [whole_archive_flag_spec], [1], [Compiler flag to generate shared objects directly from archives]) _LT_TAGDECL([], [compiler_needs_object], [1], [Whether the compiler copes with passing no objects directly]) _LT_TAGDECL([], [old_archive_from_new_cmds], [2], [Create an old-style archive from a shared archive]) _LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], [Create a temporary old-style archive to link instead of a shared archive]) _LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) _LT_TAGDECL([], [archive_expsym_cmds], [2]) _LT_TAGDECL([], [module_cmds], [2], [Commands used to build a loadable module if different from building a shared archive.]) _LT_TAGDECL([], [module_expsym_cmds], [2]) _LT_TAGDECL([], [with_gnu_ld], [1], [Whether we are building with GNU ld or not]) _LT_TAGDECL([], [allow_undefined_flag], [1], [Flag that allows shared libraries with undefined symbols to be built]) _LT_TAGDECL([], [no_undefined_flag], [1], [Flag that enforces no undefined symbols]) _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], [Flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]) _LT_TAGDECL([], [hardcode_libdir_separator], [1], [Whether we need a single "-rpath" flag with a separated argument]) _LT_TAGDECL([], [hardcode_direct], [0], [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_direct_absolute], [0], [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes DIR into the resulting binary and the resulting library dependency is "absolute", i.e impossible to change by setting $shlibpath_var if the library is relocated]) _LT_TAGDECL([], [hardcode_minus_L], [0], [Set to "yes" if using the -LDIR flag during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_shlibpath_var], [0], [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_automatic], [0], [Set to "yes" if building a shared library automatically hardcodes DIR into the library and all subsequent libraries and executables linked against it]) _LT_TAGDECL([], [inherit_rpath], [0], [Set to yes if linker adds runtime paths of dependent libraries to runtime path list]) _LT_TAGDECL([], [link_all_deplibs], [0], [Whether libtool must link a program against all its dependency libraries]) _LT_TAGDECL([], [always_export_symbols], [0], [Set to "yes" if exported symbols are required]) _LT_TAGDECL([], [export_symbols_cmds], [2], [The commands to list exported symbols]) _LT_TAGDECL([], [exclude_expsyms], [1], [Symbols that should not be listed in the preloaded symbols]) _LT_TAGDECL([], [include_expsyms], [1], [Symbols that must always be exported]) _LT_TAGDECL([], [prelink_cmds], [2], [Commands necessary for linking programs (against libraries) with templates]) _LT_TAGDECL([], [postlink_cmds], [2], [Commands necessary for finishing linking programs]) _LT_TAGDECL([], [file_list_spec], [1], [Specify filename containing input files]) dnl FIXME: Not yet implemented dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], dnl [Compiler flag to generate thread safe objects]) ])# _LT_LINKER_SHLIBS # _LT_LANG_C_CONFIG([TAG]) # ------------------------ # Ensure that the configuration variables for a C compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to 'libtool'. m4_defun([_LT_LANG_C_CONFIG], [m4_require([_LT_DECL_EGREP])dnl lt_save_CC=$CC AC_LANG_PUSH(C) # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' _LT_TAG_COMPILER # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) LT_SYS_DLOPEN_SELF _LT_CMD_STRIPLIB # Report what library types will actually be built AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_CONFIG($1) fi AC_LANG_POP CC=$lt_save_CC ])# _LT_LANG_C_CONFIG # _LT_LANG_CXX_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a C++ compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to 'libtool'. m4_defun([_LT_LANG_CXX_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl if test -n "$CXX" && ( test no != "$CXX" && ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || (test g++ != "$CXX"))); then AC_PROG_CXXCPP else _lt_caught_CXX_error=yes fi AC_LANG_PUSH(C++) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_caught_CXX_error"; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test yes = "$GXX"; then _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' else _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= fi if test yes = "$GXX"; then # Set up default GNU C++ configuration LT_PATH_LD # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test yes = "$with_gnu_ld"; then _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='$wl' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) _LT_TAGVAR(ld_shlibs, $1)=yes case $host_os in aix3*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aix[[4-9]]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='$wl-f,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no ;; esac if test yes = "$GXX"; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; then shared_flag=$shared_flag' $wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. _LT_TAGVAR(always_export_symbols, $1)=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. # The "-G" linker flag allows undefined symbols. _LT_TAGVAR(no_undefined_flag, $1)='-bernotok' # Determine the default libpath from the value encoded in an empty # executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl*) # Native MSVC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ func_to_tool_file "$lt_outputfile"~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported shrext_cmds=.dll _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF _LT_TAGVAR(ld_shlibs, $1)=no ;; freebsd-elf*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_TAGVAR(ld_shlibs, $1)=yes ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; hpux9*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP " \-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; hpux10*|hpux11*) if test no = "$with_gnu_ld"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) ;; *) _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP " \-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' fi fi _LT_TAGVAR(link_all_deplibs, $1)=yes ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl--rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' ;; cxx*) # Compaq C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; m88k*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) _LT_TAGVAR(ld_shlibs, $1)=yes ;; openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; cxx*) case $host in osf3*) _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' ;; *) _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ $RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ;; esac _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes,no = "$GXX,$with_gnu_ld"; then _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' case $host in osf3*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test yes,no = "$GXX,$with_gnu_ld"; then _LT_TAGVAR(no_undefined_flag, $1)=' $wl-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' else # g++ 2.7 appears to require '-G' NOT '-shared' on this # platform. _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir' case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ '"$_LT_TAGVAR(old_archive_cmds, $1)" _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ '"$_LT_TAGVAR(reload_cmds, $1)" ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no _LT_TAGVAR(GCC, $1)=$GXX _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test yes != "$_lt_caught_CXX_error" AC_LANG_POP ])# _LT_LANG_CXX_CONFIG # _LT_FUNC_STRIPNAME_CNF # ---------------------- # func_stripname_cnf prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # # This function is identical to the (non-XSI) version of func_stripname, # except this one can be used by m4 code that may be executed by configure, # rather than the libtool script. m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl AC_REQUIRE([_LT_DECL_SED]) AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) func_stripname_cnf () { case @S|@2 in .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;; *) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@S|@2\$%%"`;; esac } # func_stripname_cnf ])# _LT_FUNC_STRIPNAME_CNF # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) # --------------------------------- # Figure out "hidden" library dependencies from verbose # compiler output when linking a shared library. # Parse the compiler output and extract the necessary # objects, libraries and library flags. m4_defun([_LT_SYS_HIDDEN_LIBDEPS], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl # Dependencies to place before and after the object being linked: _LT_TAGVAR(predep_objects, $1)= _LT_TAGVAR(postdep_objects, $1)= _LT_TAGVAR(predeps, $1)= _LT_TAGVAR(postdeps, $1)= _LT_TAGVAR(compiler_lib_search_path, $1)= dnl we can't use the lt_simple_compile_test_code here, dnl because it contains code intended for an executable, dnl not a library. It's possible we should let each dnl tag define a new lt_????_link_test_code variable, dnl but it's only used here... m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF int a; void foo (void) { a = 0; } _LT_EOF ], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF ], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer*4 a a=0 return end _LT_EOF ], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer a a=0 return end _LT_EOF ], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF public class foo { private int a; public void bar (void) { a = 0; } }; _LT_EOF ], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF package foo func foo() { } _LT_EOF ]) _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac dnl Parse the compiler output and extract the necessary dnl objects, libraries and library flags. if AC_TRY_EVAL(ac_compile); then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case $prev$p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test x-L = "$p" || test x-R = "$p"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test no = "$pre_test_object_deps_done"; then case $prev in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then _LT_TAGVAR(compiler_lib_search_path, $1)=$prev$p else _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} $prev$p" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$_LT_TAGVAR(postdeps, $1)"; then _LT_TAGVAR(postdeps, $1)=$prev$p else _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} $prev$p" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test no = "$pre_test_object_deps_done"; then if test -z "$_LT_TAGVAR(predep_objects, $1)"; then _LT_TAGVAR(predep_objects, $1)=$p else _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" fi else if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then _LT_TAGVAR(postdep_objects, $1)=$p else _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling $1 test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken m4_if([$1], [CXX], [case $host_os in interix[[3-9]]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. _LT_TAGVAR(predep_objects,$1)= _LT_TAGVAR(postdep_objects,$1)= _LT_TAGVAR(postdeps,$1)= ;; esac ]) case " $_LT_TAGVAR(postdeps, $1) " in *" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; esac _LT_TAGVAR(compiler_lib_search_dirs, $1)= if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | $SED -e 's! -L! !g' -e 's!^ !!'` fi _LT_TAGDECL([], [compiler_lib_search_dirs], [1], [The directories searched by this compiler when creating a shared library]) _LT_TAGDECL([], [predep_objects], [1], [Dependencies to place before and after the objects being linked to create a shared library]) _LT_TAGDECL([], [postdep_objects], [1]) _LT_TAGDECL([], [predeps], [1]) _LT_TAGDECL([], [postdeps], [1]) _LT_TAGDECL([], [compiler_lib_search_path], [1], [The library search path used internally by the compiler when linking a shared library]) ])# _LT_SYS_HIDDEN_LIBDEPS # _LT_LANG_F77_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a Fortran 77 compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_F77_CONFIG], [AC_LANG_PUSH(Fortran 77) if test -z "$F77" || test no = "$F77"; then _lt_disable_F77=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the F77 compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_disable_F77"; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${F77-"f77"} CFLAGS=$FFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) GCC=$G77 if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)=$G77 _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test yes != "$_lt_disable_F77" AC_LANG_POP ])# _LT_LANG_F77_CONFIG # _LT_LANG_FC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for a Fortran compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_FC_CONFIG], [AC_LANG_PUSH(Fortran) if test -z "$FC" || test no = "$FC"; then _lt_disable_FC=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for fc test sources. ac_ext=${ac_fc_srcext-f} # Object file extension for compiled fc test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the FC compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_disable_FC"; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${FC-"f95"} CFLAGS=$FCFLAGS compiler=$CC GCC=$ac_cv_fc_compiler_gnu _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)=$ac_cv_fc_compiler_gnu _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test yes != "$_lt_disable_FC" AC_LANG_POP ])# _LT_LANG_FC_CONFIG # _LT_LANG_GCJ_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Java Compiler compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_GCJ_CONFIG], [AC_REQUIRE([LT_PROG_GCJ])dnl AC_LANG_SAVE # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GCJ-"gcj"} CFLAGS=$GCJFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)=$LD _LT_CC_BASENAME([$compiler]) # GCJ did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GCJ_CONFIG # _LT_LANG_GO_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Go compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_GO_CONFIG], [AC_REQUIRE([LT_PROG_GO])dnl AC_LANG_SAVE # Source file extension for Go test sources. ac_ext=go # Object file extension for compiled Go test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="package main; func main() { }" # Code to be used in simple link tests lt_simple_link_test_code='package main; func main() { }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GOC-"gccgo"} CFLAGS=$GOFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)=$LD _LT_CC_BASENAME([$compiler]) # Go did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GO_CONFIG # _LT_LANG_RC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for the Windows resource compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_RC_CONFIG], [AC_REQUIRE([LT_PROG_RC])dnl AC_LANG_SAVE # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests lt_simple_link_test_code=$lt_simple_compile_test_code # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC= CC=${RC-"windres"} CFLAGS= compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes if test -n "$compiler"; then : _LT_CONFIG($1) fi GCC=$lt_save_GCC AC_LANG_RESTORE CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_RC_CONFIG # LT_PROG_GCJ # ----------- AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj,) test set = "${GCJFLAGS+set}" || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS)])])[]dnl ]) # Old name: AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_GCJ], []) # LT_PROG_GO # ---------- AC_DEFUN([LT_PROG_GO], [AC_CHECK_TOOL(GOC, gccgo,) ]) # LT_PROG_RC # ---------- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,) ]) # Old name: AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_RC], []) # _LT_DECL_EGREP # -------------- # If we don't have a new enough Autoconf to choose the best grep # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_EGREP], [AC_REQUIRE([AC_PROG_EGREP])dnl AC_REQUIRE([AC_PROG_FGREP])dnl test -z "$GREP" && GREP=grep _LT_DECL([], [GREP], [1], [A grep program that handles long lines]) _LT_DECL([], [EGREP], [1], [An ERE matcher]) _LT_DECL([], [FGREP], [1], [A literal string matcher]) dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too AC_SUBST([GREP]) ]) # _LT_DECL_OBJDUMP # -------------- # If we don't have a new enough Autoconf to choose the best objdump # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_OBJDUMP], [AC_CHECK_TOOL(OBJDUMP, objdump, false) test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) AC_SUBST([OBJDUMP]) ]) # _LT_DECL_DLLTOOL # ---------------- # Ensure DLLTOOL variable is set. m4_defun([_LT_DECL_DLLTOOL], [AC_CHECK_TOOL(DLLTOOL, dlltool, false) test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program]) AC_SUBST([DLLTOOL]) ]) # _LT_DECL_SED # ------------ # Check for a fully-functional sed program, that truncates # as few characters as possible. Prefer GNU sed if found. m4_defun([_LT_DECL_SED], [AC_PROG_SED test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" _LT_DECL([], [SED], [1], [A sed program that does not truncate output]) _LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], [Sed that helps us avoid accidentally triggering echo(1) options like -n]) ])# _LT_DECL_SED m4_ifndef([AC_PROG_SED], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_SED. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_SED], [AC_MSG_CHECKING([for a sed that does not truncate output]) AC_CACHE_VAL(lt_cv_path_SED, [# Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done IFS=$as_save_IFS lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f "$lt_ac_sed" && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test 10 -lt "$lt_ac_count" && break lt_ac_count=`expr $lt_ac_count + 1` if test "$lt_ac_count" -gt "$lt_ac_max"; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done ]) SED=$lt_cv_path_SED AC_SUBST([SED]) AC_MSG_RESULT([$SED]) ])#AC_PROG_SED ])#m4_ifndef # Old name: AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_SED], []) # _LT_CHECK_SHELL_FEATURES # ------------------------ # Find out whether the shell is Bourne or XSI compatible, # or has some other useful features. m4_defun([_LT_CHECK_SHELL_FEATURES], [if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi _LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac _LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl ])# _LT_CHECK_SHELL_FEATURES # _LT_PATH_CONVERSION_FUNCTIONS # ----------------------------- # Determine what file name conversion functions should be used by # func_to_host_file (and, implicitly, by func_to_host_path). These are needed # for certain cross-compile configurations and native mingw. m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_MSG_CHECKING([how to convert $build file names to $host format]) AC_CACHE_VAL(lt_cv_to_host_file_cmd, [case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac ]) to_host_file_cmd=$lt_cv_to_host_file_cmd AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) _LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], [0], [convert $build file names to $host format])dnl AC_MSG_CHECKING([how to convert $build file names to toolchain format]) AC_CACHE_VAL(lt_cv_to_tool_file_cmd, [#assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac ]) to_tool_file_cmd=$lt_cv_to_tool_file_cmd AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) _LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], [0], [convert $build files to toolchain format])dnl ])# _LT_PATH_CONVERSION_FUNCTIONS WindowMaker-0.95.9/m4/ax_pthread.m40000644000175000017500000003267613431646201013705 00000000000000# =========================================================================== # http://www.gnu.org/software/autoconf-archive/ax_pthread.html # =========================================================================== # # SYNOPSIS # # AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) # # DESCRIPTION # # This macro figures out how to build C programs using POSIX threads. It # sets the PTHREAD_LIBS output variable to the threads library and linker # flags, and the PTHREAD_CFLAGS output variable to any special C compiler # flags that are needed. (The user can also force certain compiler # flags/libs to be tested by setting these environment variables.) # # Also sets PTHREAD_CC to any special C compiler that is needed for # multi-threaded programs (defaults to the value of CC otherwise). (This # is necessary on AIX to use the special cc_r compiler alias.) # # NOTE: You are assumed to not only compile your program with these flags, # but also link it with them as well. e.g. you should link with # $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS # # If you are only building threads programs, you may wish to use these # variables in your default LIBS, CFLAGS, and CC: # # LIBS="$PTHREAD_LIBS $LIBS" # CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # CC="$PTHREAD_CC" # # In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant # has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to that name # (e.g. PTHREAD_CREATE_UNDETACHED on AIX). # # Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the # PTHREAD_PRIO_INHERIT symbol is defined when compiling with # PTHREAD_CFLAGS. # # ACTION-IF-FOUND is a list of shell commands to run if a threads library # is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it # is not found. If ACTION-IF-FOUND is not specified, the default action # will define HAVE_PTHREAD. # # Please let the authors know if this macro fails on any platform, or if # you have any other suggestions or comments. This macro was based on work # by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help # from M. Frigo), as well as ac_pthread and hb_pthread macros posted by # Alejandro Forero Cuervo to the autoconf macro repository. We are also # grateful for the helpful feedback of numerous users. # # Updated for Autoconf 2.68 by Daniel Richard G. # # LICENSE # # Copyright (c) 2008 Steven G. Johnson # Copyright (c) 2011 Daniel Richard G. # # 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 3 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, see . # # As a special exception, the respective Autoconf Macro's copyright owner # gives unlimited permission to copy, distribute and modify the configure # scripts that are the output of Autoconf when processing the Macro. You # need not follow the terms of the GNU General Public License when using # or distributing such scripts, even though portions of the text of the # Macro appear in them. The GNU General Public License (GPL) does govern # all other use of the material that constitutes the Autoconf Macro. # # This special exception to the GPL applies to versions of the Autoconf # Macro released by the Autoconf Archive. When you make and distribute a # modified version of the Autoconf Macro, you may extend this special # exception to the GPL to apply to your modified version as well. #serial 21 AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD]) AC_DEFUN([AX_PTHREAD], [ AC_REQUIRE([AC_CANONICAL_HOST]) AC_LANG_PUSH([C]) ax_pthread_ok=no # We used to check for pthread.h first, but this fails if pthread.h # requires special compiler flags (e.g. on True64 or Sequent). # It gets checked for in the link test anyway. # First of all, check if the user has set any of the PTHREAD_LIBS, # etcetera environment variables, and if threads linking works using # them: if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS]) AC_TRY_LINK_FUNC([pthread_join], [ax_pthread_ok=yes]) AC_MSG_RESULT([$ax_pthread_ok]) if test x"$ax_pthread_ok" = xno; then PTHREAD_LIBS="" PTHREAD_CFLAGS="" fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" fi # We must check for the threads library under a number of different # names; the ordering is very important because some systems # (e.g. DEC) have both -lpthread and -lpthreads, where one of the # libraries is broken (non-POSIX). # Create a list of thread flags to try. Items starting with a "-" are # C compiler flags, and other items are library names, except for "none" # which indicates that we try without any flags at all, and "pthread-config" # which is a program returning the flags for the Pth emulation library. ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" # The ordering *is* (sometimes) important. Some notes on the # individual items follow: # pthreads: AIX (must check this before -lpthread) # none: in case threads are in libc; should be tried before -Kthread and # other compiler flags to prevent continual compiler warnings # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) # -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) # -pthreads: Solaris/gcc # -mthreads: Mingw32/gcc, Lynx/gcc # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it # doesn't hurt to check since this sometimes defines pthreads too; # also defines -D_REENTRANT) # ... -mt is also the pthreads flag for HP/aCC # pthread: Linux, etcetera # --thread-safe: KAI C++ # pthread-config: use pthread-config program (for GNU Pth library) case ${host_os} in solaris*) # On Solaris (at least, for some versions), libc contains stubbed # (non-functional) versions of the pthreads routines, so link-based # tests will erroneously succeed. (We need to link with -pthreads/-mt/ # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather # a function called by this macro, so we could check for that, but # who knows whether they'll stub that too in a future libc.) So, # we'll just look for -pthreads and -lpthread first: ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags" ;; darwin*) ax_pthread_flags="-pthread $ax_pthread_flags" ;; esac # Clang doesn't consider unrecognized options an error unless we specify # -Werror. We throw in some extra Clang-specific options to ensure that # this doesn't happen for GCC, which also accepts -Werror. AC_MSG_CHECKING([if compiler needs -Werror to reject unknown flags]) save_CFLAGS="$CFLAGS" ax_pthread_extra_flags="-Werror" CFLAGS="$CFLAGS $ax_pthread_extra_flags -Wunknown-warning-option -Wsizeof-array-argument" AC_COMPILE_IFELSE([AC_LANG_PROGRAM([int foo(void);],[foo()])], [AC_MSG_RESULT([yes])], [ax_pthread_extra_flags= AC_MSG_RESULT([no])]) CFLAGS="$save_CFLAGS" if test x"$ax_pthread_ok" = xno; then for flag in $ax_pthread_flags; do case $flag in none) AC_MSG_CHECKING([whether pthreads work without any flags]) ;; -*) AC_MSG_CHECKING([whether pthreads work with $flag]) PTHREAD_CFLAGS="$flag" ;; pthread-config) AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no]) if test x"$ax_pthread_config" = xno; then continue; fi PTHREAD_CFLAGS="`pthread-config --cflags`" PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" ;; *) AC_MSG_CHECKING([for the pthreads library -l$flag]) PTHREAD_LIBS="-l$flag" ;; esac save_LIBS="$LIBS" save_CFLAGS="$CFLAGS" LIBS="$PTHREAD_LIBS $LIBS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS $ax_pthread_extra_flags" # Check for various functions. We must include pthread.h, # since some functions may be macros. (On the Sequent, we # need a special flag -Kthread to make this header compile.) # We check for pthread_join because it is in -lpthread on IRIX # while pthread_create is in libc. We check for pthread_attr_init # due to DEC craziness with -lpthreads. We check for # pthread_cleanup_push because it is one of the few pthread # functions on Solaris that doesn't have a non-functional libc stub. # We try pthread_create on general principles. AC_LINK_IFELSE([AC_LANG_PROGRAM([#include static void routine(void *a) { a = 0; } static void *start_routine(void *a) { return a; }], [pthread_t th; pthread_attr_t attr; pthread_create(&th, 0, start_routine, 0); pthread_join(th, 0); pthread_attr_init(&attr); pthread_cleanup_push(routine, 0); pthread_cleanup_pop(0) /* ; */])], [ax_pthread_ok=yes], []) LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" AC_MSG_RESULT([$ax_pthread_ok]) if test "x$ax_pthread_ok" = xyes; then break; fi PTHREAD_LIBS="" PTHREAD_CFLAGS="" done fi # Various other checks: if test "x$ax_pthread_ok" = xyes; then save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. AC_MSG_CHECKING([for joinable pthread attribute]) attr_name=unknown for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do AC_LINK_IFELSE([AC_LANG_PROGRAM([#include ], [int attr = $attr; return attr /* ; */])], [attr_name=$attr; break], []) done AC_MSG_RESULT([$attr_name]) if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE], [$attr_name], [Define to necessary symbol if this constant uses a non-standard name on your system.]) fi AC_MSG_CHECKING([if more special flags are required for pthreads]) flag=no case ${host_os} in aix* | freebsd* | darwin*) flag="-D_THREAD_SAFE";; osf* | hpux*) flag="-D_REENTRANT";; solaris*) if test "$GCC" = "yes"; then flag="-D_REENTRANT" else # TODO: What about Clang on Solaris? flag="-mt -D_REENTRANT" fi ;; esac AC_MSG_RESULT([$flag]) if test "x$flag" != xno; then PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" fi AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT], [ax_cv_PTHREAD_PRIO_INHERIT], [ AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], [[int i = PTHREAD_PRIO_INHERIT;]])], [ax_cv_PTHREAD_PRIO_INHERIT=yes], [ax_cv_PTHREAD_PRIO_INHERIT=no]) ]) AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes"], [AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.])]) LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" # More AIX lossage: compile with *_r variant if test "x$GCC" != xyes; then case $host_os in aix*) AS_CASE(["x/$CC"], [x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6], [#handle absolute path differently from PATH based program lookup AS_CASE(["x$CC"], [x/*], [AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"])], [AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC])])]) ;; esac fi fi test -n "$PTHREAD_CC" || PTHREAD_CC="$CC" AC_SUBST([PTHREAD_LIBS]) AC_SUBST([PTHREAD_CFLAGS]) AC_SUBST([PTHREAD_CC]) # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test x"$ax_pthread_ok" = xyes; then ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1]) : else ax_pthread_ok=no $2 fi AC_LANG_POP ])dnl AX_PTHREAD WindowMaker-0.95.9/m4/wm_libmath.m40000644000175000017500000000610413431646201013674 00000000000000# wm_libmath.m4 - Macros to check proper libMath usage for WINGs # # Copyright (c) 2013 Christophe Curis # # 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., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # WM_CHECK_LIBM # ------------- # # Checks the needed library link flags needed to have math lib # Sets variable LIBM with the appropriates flags AC_DEFUN_ONCE([WM_CHECK_LIBM], [AC_CHECK_HEADER([math.h], [], [AC_MSG_ERROR([header for math library not found])]) AC_CHECK_FUNC(atan, [LIBM=], [AC_CHECK_LIB(m, [atan], [LIBM=-lm], [AC_MSG_WARN(Could not find Math library, you may experience problems) LIBM=] )] ) dnl AC_CACHE_CHECK([if M_PI is defined in math.h], [wm_cv_libm_pi], [wm_cv_libm_pi="no" wm_save_CFLAGS="$CFLAGS" for wm_arg in dnl "% yes" dnl natively available (Unix98 compliant?) "-D_XOPEN_SOURCE=500" ; dnl Explicit request do AS_IF([wm_fn_lib_try_compile "math.h" "double val;" "val = M_PI" dnl "`echo "$wm_arg" | sed -e 's, *%.*$,,' `"], [wm_cv_libm_pi="`echo "$wm_arg" | sed -e 's,^.*% *,,' `" ; break]) done CFLAGS="$wm_save_CFLAGS"]) AS_IF([test "x$wm_cv_libm_pi" = "xno"], [AC_DEFINE([WM_PI], [(3.14159265358979323846)], [Defines how to access the value of Pi])], [AC_DEFINE([WM_PI], [(M_PI)], [Defines how to access the value of Pi]) AS_IF([test "x$wm_cv_libm_pi" != "xyes"], [CFLAGS="$CFLAGS $wm_cv_libm_pi"]) ]) AC_CACHE_CHECK([if sinf+cosf are defined in math.h], [wm_cv_libm_sinf], [wm_cv_libm_sinf="no" wm_save_CFLAGS="$CFLAGS" wm_save_LIBS="$LIBS" LIBS="$LIBS $LIBM" for wm_arg in dnl "% yes" dnl natively available (C99 compliant) "-D_XOPEN_SOURCE=600" ; dnl Explicit request do CFLAGS="$wm_save_CFLAGS `echo "$wm_arg" | sed -e 's, *%.*$,,' `" AC_LINK_IFELSE([AC_LANG_PROGRAM([dnl @%:@include ], [dnl float a, b; a = WM_PI; b = sqrtf(a); a = atan2f(a, b); b = cosf(a); a = sinf(b); a = powf(a, b); return (int)a;])], [wm_cv_libm_sinf="`echo "$wm_arg" | sed -e 's,^.*% *,,' `" ; break]) done LIBS="$wm_save_LIBS" CFLAGS="$wm_save_CFLAGS"]) AS_IF([test "x$wm_cv_libm_sinf" != "xno"], [AC_DEFINE([HAVE_FLOAT_MATHFUNC], [1], [Defined if the 'float'-typed math function are available (sinf, cosf)]) AS_IF([test "x$wm_cv_libm_sinf" != "xyes"], [CFLAGS="$CFLAGS $wm_cd_libm_sinf"]) ]) AC_SUBST(LIBM) dnl ]) WindowMaker-0.95.9/m4/ltsugar.m40000644000175000017500000001044013642360045013233 00000000000000# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # # Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software # Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 6 ltsugar.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) # lt_join(SEP, ARG1, [ARG2...]) # ----------------------------- # Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their # associated separator. # Needed until we can rely on m4_join from Autoconf 2.62, since all earlier # versions in m4sugar had bugs. m4_define([lt_join], [m4_if([$#], [1], [], [$#], [2], [[$2]], [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) m4_define([_lt_join], [m4_if([$#$2], [2], [], [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) # lt_car(LIST) # lt_cdr(LIST) # ------------ # Manipulate m4 lists. # These macros are necessary as long as will still need to support # Autoconf-2.59, which quotes differently. m4_define([lt_car], [[$1]]) m4_define([lt_cdr], [m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], [$#], 1, [], [m4_dquote(m4_shift($@))])]) m4_define([lt_unquote], $1) # lt_append(MACRO-NAME, STRING, [SEPARATOR]) # ------------------------------------------ # Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'. # Note that neither SEPARATOR nor STRING are expanded; they are appended # to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). # No SEPARATOR is output if MACRO-NAME was previously undefined (different # than defined and empty). # # This macro is needed until we can rely on Autoconf 2.62, since earlier # versions of m4sugar mistakenly expanded SEPARATOR but not STRING. m4_define([lt_append], [m4_define([$1], m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) # lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) # ---------------------------------------------------------- # Produce a SEP delimited list of all paired combinations of elements of # PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list # has the form PREFIXmINFIXSUFFIXn. # Needed until we can rely on m4_combine added in Autoconf 2.62. m4_define([lt_combine], [m4_if(m4_eval([$# > 3]), [1], [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl [[m4_foreach([_Lt_prefix], [$2], [m4_foreach([_Lt_suffix], ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) # lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) # ----------------------------------------------------------------------- # Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited # by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. m4_define([lt_if_append_uniq], [m4_ifdef([$1], [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], [lt_append([$1], [$2], [$3])$4], [$5])], [lt_append([$1], [$2], [$3])$4])]) # lt_dict_add(DICT, KEY, VALUE) # ----------------------------- m4_define([lt_dict_add], [m4_define([$1($2)], [$3])]) # lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) # -------------------------------------------- m4_define([lt_dict_add_subkey], [m4_define([$1($2:$3)], [$4])]) # lt_dict_fetch(DICT, KEY, [SUBKEY]) # ---------------------------------- m4_define([lt_dict_fetch], [m4_ifval([$3], m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) # lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) # ----------------------------------------------------------------- m4_define([lt_if_dict_fetch], [m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], [$5], [$6])]) # lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) # -------------------------------------------------------------- m4_define([lt_dict_filter], [m4_if([$5], [], [], [lt_join(m4_quote(m4_default([$4], [[, ]])), lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl ]) WindowMaker-0.95.9/m4/ld-version-script.m40000644000175000017500000000317413431646201015141 00000000000000# ld-version-script.m4 serial 4 dnl Copyright (C) 2008-2015 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Simon Josefsson # FIXME: The test below returns a false positive for mingw # cross-compiles, 'local:' statements does not reduce number of # exported symbols in a DLL. Use --disable-ld-version-script to work # around the problem. # gl_LD_VERSION_SCRIPT # -------------------- # Check if LD supports linker scripts, and define automake conditional # HAVE_LD_VERSION_SCRIPT if so. AC_DEFUN([gl_LD_VERSION_SCRIPT], [ AC_ARG_ENABLE([ld-version-script], [AS_HELP_STRING([--enable-ld-version-script], [enable linker version script (default is enabled when possible)])], [have_ld_version_script=$enableval], [AC_CACHE_CHECK([if LD -Wl,--version-script works], [gl_cv_sys_ld_version_script], [gl_cv_sys_ld_version_script=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,--version-script=conftest.map" echo foo >conftest.map AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])], [], [cat > conftest.map <. # # Copyright (c) 2001-2015 The Window Maker Team # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1 test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org and $0: wmaker-dev@googlegroups.com about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" SHELL=${CONFIG_SHELL-/bin/sh} test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='WindowMaker' PACKAGE_TARNAME='WindowMaker' PACKAGE_VERSION='0.95.9' PACKAGE_STRING='WindowMaker 0.95.9' PACKAGE_BUGREPORT='wmaker-dev@googlegroups.com' PACKAGE_URL='http://www.windowmaker.org/' ac_unique_file="src/WindowMaker.h" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS inc_search_path lib_search_path HAVE_LD_VERSION_SCRIPT_FALSE HAVE_LD_VERSION_SCRIPT_TRUE defsdatadir wprefs_bindir wprefs_datadir pixmapdir ICON_EXT_TIFF_FALSE ICON_EXT_TIFF_TRUE ICON_EXT_XPM_FALSE ICON_EXT_XPM_TRUE ICONEXT GFXLIBS HEADER_SEARCH_PATH LIBRARY_SEARCH_PATH MAGICKLIBS MAGICKFLAGS USE_MAGICK_FALSE USE_MAGICK_TRUE USE_WEBP_FALSE USE_WEBP_TRUE USE_TIFF_FALSE USE_TIFF_TRUE USE_GIF_FALSE USE_GIF_TRUE USE_JPEG_FALSE USE_JPEG_TRUE USE_PNG_FALSE USE_PNG_TRUE LIBEXIF XLIBS XLFLAGS XCFLAGS USE_XPM_FALSE USE_XPM_TRUE PANGOLIBS XFTLIBS XFTFLAGS XFTCONFIG FCLIBS LIBM LIBXRANDR LIBXINERAMA LIBXMU USE_DOCK_XDND_FALSE USE_DOCK_XDND_TRUE X_LIBRARY_PATH X_EXTRA_LIBS X_LIBS X_PRE_LIBS X_CFLAGS XMKMF HAVE_XGETTEXT_FALSE HAVE_XGETTEXT_TRUE XGETTEXT MANLANGDIRS UTILMOFILES WPREFSMOFILES WMAKERMOFILES WINGSMOFILES INTLIBS MSGFMT LINGUAS PKG_CONFIG_LIBDIR PKG_CONFIG_PATH PKG_CONFIG LIBBSD LIBOBJS USE_LCOV_FALSE USE_LCOV_TRUE lcov_output_directory USE_MWM_HINTS_FALSE USE_MWM_HINTS_TRUE WM_OSDEP_GENERIC_FALSE WM_OSDEP_GENERIC_TRUE WM_OSDEP_DARWIN_FALSE WM_OSDEP_DARWIN_TRUE WM_OSDEP_BSD_FALSE WM_OSDEP_BSD_TRUE WM_OSDEP_LINUX_FALSE WM_OSDEP_LINUX_TRUE PTHREAD_CFLAGS PTHREAD_LIBS PTHREAD_CC ax_pthread_config USE_NESTED_FUNC_FALSE USE_NESTED_FUNC_TRUE LT_SYS_LIBRARY_PATH OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL MANIFEST_TOOL RANLIB ac_ct_AR AR DLLTOOL OBJDUMP NM ac_ct_DUMPBIN DUMPBIN LD FGREP SED host_os host_vendor host_cpu host build_os build_vendor build_cpu build LIBTOOL EGREP GREP CPP LN_S am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC WUTIL_VERSION WINGS_VERSION WRASTER_VERSION AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir runstatedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL am__quote' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_dependency_tracking enable_shared enable_static with_pic enable_fast_install with_aix_soname with_gnu_ld with_sysroot enable_libtool_lock enable_debug with_libs_from with_incs_from enable_animations enable_mwm_hints enable_boehm_gc enable_lcov with_libbsd with_menu_textdomain with_x enable_xlocale enable_modelock enable_xdnd enable_wmreplace enable_shape enable_shm enable_xinerama enable_randr enable_pango enable_xpm enable_png enable_jpeg enable_gif enable_tiff enable_webp enable_magick with_pixmapdir with_gnustepdir with_defsdatadir enable_usermenu enable_ld_version_script ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP LT_SYS_LIBRARY_PATH PKG_CONFIG PKG_CONFIG_PATH PKG_CONFIG_LIBDIR LINGUAS XMKMF' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures WindowMaker 0.95.9 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/WindowMaker] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names X features: --x-includes=DIR X include files are in DIR --x-libraries=DIR X library files are in DIR System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of WindowMaker 0.95.9:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) --enable-debug enable debugging options, [default=no] --disable-animations disable permanently animations [default=enabled] --disable-mwm-hints disable support for Motif WM hints [default=enabled] --enable-boehm-gc use Boehm GC instead of the default libc malloc() [default=no] --enable-lcov=output-directory enable coverage data generation using LCOV (GCC only) [default=no] --disable-xlocale disable initialization of locale for X --enable-modelock XKB keyboard language status support --disable-xdnd disable support for Drag-and-Drop on the dock [default=enabled] --enable-wmreplace support for ICCCM window manager replacement --disable-shape disable shaped window extension support --disable-shm disable usage of MIT-SHM extension --enable-xinerama enable Xinerama extension support --enable-randr enable RandR extension support (NOT recommended, buggy) --enable-pango enable Pango text layout support --disable-xpm disable use of XPM pixmaps through libXpm --disable-png disable PNG support through libpng --disable-jpeg disable JPEG support through libjpeg --disable-gif disable GIF support through libgif or libungif --disable-tiff disable use of TIFF images through libtiff --disable-webp disable WEBP support through libwebp --disable-magick disable MAGICK support through libMagickWand --enable-usermenu user defined menus for applications --enable-ld-version-script enable linker version script (default is enabled when possible) Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use both] --with-aix-soname=aix|svr4|both shared library versioning (aka "SONAME") variant to provide on AIX, [default=aix]. --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-sysroot[=DIR] Search for dependent libraries within DIR (or the compiler's sysroot if not specified). --with-libs-from pass compiler flags to look for libraries --with-incs-from pass compiler flags to look for header files --without-libbsd do not use libbsd for strlcat and strlcpy [default=check] --with-menu-textdomain=DOMAIN specify gettext domain used for menu translations --with-x use the X Window System --with-pixmapdir=PATH specify where pixmaps are located [DATADIR/pixmaps] --with-gnustepdir=PATH specify the directory for GNUstep applications --with-defsdatadir=PATH specify where global defaults are located [SYSCONFDIR/WindowMaker] Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor LT_SYS_LIBRARY_PATH User-defined run-time library search path. PKG_CONFIG path to pkg-config utility PKG_CONFIG_PATH directories to add to pkg-config's search path PKG_CONFIG_LIBDIR path overriding pkg-config's built-in search path LINGUAS list of language translations to support (I18N), use 'list' to get the list of supported languages, default: none XMKMF Path to xmkmf, Makefile generator for X Window System Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . WindowMaker home page: . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF WindowMaker configure 0.95.9 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. Copyright (c) 2001-2015 The Window Maker Team _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ( $as_echo "## ------------------------------------------ ## ## Report this to wmaker-dev@googlegroups.com ## ## ------------------------------------------ ##" ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache # variable VAR accordingly. ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else eval "$3=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_type cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by WindowMaker $as_me 0.95.9, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi if test "x$LINGUAS" = "xlist"; then : $as_echo "Supported languages: be bg bs ca cs da de el es et fi fr fy gl hr hu hy it ja ko ms nl no pl pt ro ru sk sv tr uk zh_CN zh_TW " as_fn_exit 0 fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_headers="$ac_config_headers config.h" am__api_version='1.16' ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi if test "$2" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi rm -f conftest.file test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='WindowMaker' VERSION='0.95.9' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # mkdir_p='$(MKDIR_P)' # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 fi fi WRASTER_CURRENT=6 WRASTER_REVISION=0 WRASTER_AGE=0 WRASTER_VERSION=$WRASTER_CURRENT:$WRASTER_REVISION:$WRASTER_AGE WINGS_CURRENT=4 WINGS_REVISION=0 WINGS_AGE=1 WINGS_VERSION=$WINGS_CURRENT:$WINGS_REVISION:$WINGS_AGE WUTIL_CURRENT=5 WUTIL_REVISION=0 WUTIL_AGE=0 WUTIL_VERSION=$WUTIL_CURRENT:$WUTIL_REVISION:$WUTIL_AGE ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 $as_echo_n "checking whether $CC understands -c and -o together... " >&6; } if ${am_cv_prog_cc_c_o+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 $as_echo "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 $as_echo_n "checking whether ${MAKE-make} supports the include directive... " >&6; } cat > confinc.mk << 'END' am__doit: @echo this is the am__doit target >confinc.out .PHONY: am__doit END am__include="#" am__quote= # BSD make does it like this. echo '.include "confinc.mk" # ignored' > confmf.BSD # Other make implementations (GNU, Solaris 10, AIX) do it like this. echo 'include confinc.mk # ignored' > confmf.GNU _am_result=no for s in GNU BSD; do { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5 (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } case $?:`cat confinc.out 2>/dev/null` in #( '0:this is the am__doit target') : case $s in #( BSD) : am__include='.include' am__quote='"' ;; #( *) : am__include='include' am__quote='' ;; esac ;; #( *) : ;; esac if test "$am__include" != "#"; then _am_result="yes ($s style)" break fi done rm -f confinc.* confmf.* { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 $as_echo "${_am_result}" >&6; } # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C11 standard support" >&5 $as_echo_n "checking for C11 standard support... " >&6; } if ${wm_cv_prog_cc_c11+:} false; then : $as_echo_n "(cached) " >&6 else wm_cv_prog_cc_c11=no wm_save_CFLAGS="$CFLAGS" for wm_arg in "% native" "-std=c11" do CFLAGS="$wm_save_CFLAGS `echo $wm_arg | sed -e 's,%.*,,' `" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #if __STDC_VERSION__ < 201112L fail_because_stdc_version_is_older_than_C11; #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : wm_cv_prog_cc_c11="`echo $wm_arg | sed -e 's,.*% *,,' `" ; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done CFLAGS="$wm_save_CFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $wm_cv_prog_cc_c11" >&5 $as_echo "$wm_cv_prog_cc_c11" >&6; } case $wm_cv_prog_cc_c11 in #( no|native) : ;; #( *) : CFLAGS="$CFLAGS $wm_cv_prog_cc_c11" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" if test $ac_cv_c_compiler_gnu = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC needs -traditional" >&5 $as_echo_n "checking whether $CC needs -traditional... " >&6; } if ${ac_cv_prog_gcc_traditional+:} false; then : $as_echo_n "(cached) " >&6 else ac_pattern="Autoconf.*'x'" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include Autoconf TIOCGETP _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "$ac_pattern" >/dev/null 2>&1; then : ac_cv_prog_gcc_traditional=yes else ac_cv_prog_gcc_traditional=no fi rm -f conftest* if test $ac_cv_prog_gcc_traditional = no; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include Autoconf TCGETA _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "$ac_pattern" >/dev/null 2>&1; then : ac_cv_prog_gcc_traditional=yes fi rm -f conftest* fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_gcc_traditional" >&5 $as_echo "$ac_cv_prog_gcc_traditional" >&6; } if test $ac_cv_prog_gcc_traditional = yes; then CC="$CC -traditional" fi fi case `pwd` in *\ * | *\ *) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 $as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac macro_version='2.4.6' macro_revision='2.4.6' ltmain=$ac_aux_dir/ltmain.sh # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac # Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\(["`$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 $as_echo_n "checking how to print strings... " >&6; } # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "" } case $ECHO in printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 $as_echo "printf" >&6; } ;; print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 $as_echo "print -r" >&6; } ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 $as_echo "cat" >&6; } ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 $as_echo_n "checking for a sed that does not truncate output... " >&6; } if ${ac_cv_path_SED+:} false; then : $as_echo_n "(cached) " >&6 else ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 $as_echo "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 $as_echo_n "checking for fgrep... " >&6; } if ${ac_cv_path_FGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else if test -z "$FGREP"; then ac_path_FGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in fgrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_FGREP" || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP case `"$ac_path_FGREP" --version 2>&1` in *GNU*) ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_FGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_FGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_FGREP"; then as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_FGREP=$FGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 $as_echo "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" test -z "$GREP" && GREP=grep # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test yes = "$with_gnu_ld"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${lt_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${lt_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 $as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } if ${lt_cv_path_NM+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM=$NM else lt_nm_to_check=${ac_tool_prefix}nm if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. tmp_nm=$ac_dir/$lt_tmp_nm if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then # Check to see if the nm accepts a BSD-compat flag. # Adding the 'sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty case $build_os in mingw*) lt_bad_file=conftest.nm/nofile ;; *) lt_bad_file=/dev/null ;; esac case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in *$lt_bad_file* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break 2 ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break 2 ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS=$lt_save_ifs done : ${lt_cv_path_NM=no} fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 $as_echo "$lt_cv_path_NM" >&6; } if test no != "$lt_cv_path_NM"; then NM=$lt_cv_path_NM else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else if test -n "$ac_tool_prefix"; then for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DUMPBIN"; then ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 $as_echo "$DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$DUMPBIN" && break done fi if test -z "$DUMPBIN"; then ac_ct_DUMPBIN=$DUMPBIN for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DUMPBIN"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 $as_echo "$ac_ct_DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_DUMPBIN" && break done if test "x$ac_ct_DUMPBIN" = x; then DUMPBIN=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN fi fi case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols -headers" ;; *) DUMPBIN=: ;; esac fi if test : != "$DUMPBIN"; then NM=$DUMPBIN fi fi test -z "$NM" && NM=nm { $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 $as_echo_n "checking the name lister ($NM) interface... " >&6; } if ${lt_cv_nm_interface+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 $as_echo "$lt_cv_nm_interface" >&6; } # find the maximum length of command line arguments { $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 $as_echo_n "checking the maximum length of command line arguments... " >&6; } if ${lt_cv_sys_max_cmd_len+:} false; then : $as_echo_n "(cached) " >&6 else i=0 teststring=ABCD case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test X`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test 17 != "$i" # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac fi if test -n "$lt_cv_sys_max_cmd_len"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 $as_echo "$lt_cv_sys_max_cmd_len" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 $as_echo "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len : ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 $as_echo_n "checking how to convert $build file names to $host format... " >&6; } if ${lt_cv_to_host_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac fi to_host_file_cmd=$lt_cv_to_host_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 $as_echo "$lt_cv_to_host_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 $as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } if ${lt_cv_to_tool_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else #assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac fi to_tool_file_cmd=$lt_cv_to_tool_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 $as_echo "$lt_cv_to_tool_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 $as_echo_n "checking for $LD option to reload object files... " >&6; } if ${lt_cv_ld_reload_flag+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_reload_flag='-r' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 $as_echo "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in cygwin* | mingw* | pw32* | cegcc*) if test yes != "$GCC"; then reload_cmds=false fi ;; darwin*) if test yes = "$GCC"; then reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 $as_echo "$OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 $as_echo "$ac_ct_OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi test -z "$OBJDUMP" && OBJDUMP=objdump { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 $as_echo_n "checking how to recognize dependent libraries... " >&6; } if ${lt_cv_deplibs_check_method+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # 'unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # that responds to the $file_magic_cmd with a given extended regex. # If you have 'file' or equivalent on your system and you're not sure # whether 'pass_all' will *always* work, you probably want this one. case $host_os in aix[4-9]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[3-9]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd* | bitrig*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; os2*) lt_cv_deplibs_check_method=pass_all ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 $as_echo "$lt_cv_deplibs_check_method" >&6; } file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 $as_echo "$DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 $as_echo "$ac_ct_DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi test -z "$DLLTOOL" && DLLTOOL=dlltool { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 $as_echo_n "checking how to associate runtime and link libraries... " >&6; } if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh; # decide which one to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd=$ECHO ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 $as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO if test -n "$ac_tool_prefix"; then for ac_prog in ar do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AR" && break done fi if test -z "$AR"; then ac_ct_AR=$AR for ac_prog in ar do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_AR" && break done if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi fi : ${AR=ar} : ${AR_FLAGS=cru} { $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 $as_echo_n "checking for archiver @FILE support... " >&6; } if ${lt_cv_ar_at_file+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ar_at_file=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -eq "$ac_status"; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -ne "$ac_status"; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 $as_echo "$lt_cv_ar_at_file" >&6; } if test no = "$lt_cv_ar_at_file"; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi test -z "$STRIP" && STRIP=: if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi test -z "$RANLIB" && RANLIB=: # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in bitrig* | openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Check for command to grab the raw symbol name followed by C symbol from nm. { $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 $as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } if ${lt_cv_sys_global_symbol_pipe+:} false; then : $as_echo_n "(cached) " >&6 else # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) if test ia64 = "$host_cpu"; then symcode='[ABCDEGRST]' fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris*) symcode='[BDRT]' ;; sco3.2v5*) symcode='[DT]' ;; sysv4.2uw2*) symcode='[DT]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[ABDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Gets list of data symbols to import. lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" # Adjust the below global symbol transforms to fixup imported variables. lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" lt_c_name_lib_hook="\ -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" else # Disable hooks by default. lt_cv_sys_global_symbol_to_import= lt_cdecl_hook= lt_c_name_hook= lt_c_name_lib_hook= fi # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n"\ $lt_cdecl_hook\ " -e 's/^T .* \(.*\)$/extern int \1();/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ $lt_c_name_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" # Transform an extracted symbol line into symbol name with lib prefix and # symbol address. lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ $lt_c_name_lib_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function, # D for any global variable and I for any imported variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK '"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ " /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ " /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ " {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ " s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm $ECHO "$as_me:$LINENO: $NM conftest.$ac_objext | $lt_cv_sys_global_symbol_pipe > $nlist" >&5 if eval "$NM" conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist 2>&5 && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS=conftstm.$ac_objext CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest$ac_exeext; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test yes = "$pipe_works"; then break else lt_cv_sys_global_symbol_pipe= fi done fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 $as_echo "failed" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then nm_file_list_spec='@' fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 $as_echo_n "checking for sysroot... " >&6; } # Check whether --with-sysroot was given. if test "${with_sysroot+set}" = set; then : withval=$with_sysroot; else with_sysroot=no fi lt_sysroot= case $with_sysroot in #( yes) if test yes = "$GCC"; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 $as_echo "$with_sysroot" >&6; } as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 $as_echo "${lt_sysroot:-no}" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 $as_echo_n "checking for a working dd... " >&6; } if ${ac_cv_path_lt_DD+:} false; then : $as_echo_n "(cached) " >&6 else printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i : ${lt_DD:=$DD} if test -z "$lt_DD"; then ac_path_lt_DD_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in dd; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_lt_DD" || continue if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: fi $ac_path_lt_DD_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_lt_DD"; then : fi else ac_cv_path_lt_DD=$lt_DD fi rm -f conftest.i conftest2.i conftest.out fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 $as_echo "$ac_cv_path_lt_DD" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 $as_echo_n "checking how to truncate binary pipes... " >&6; } if ${lt_cv_truncate_bin+:} false; then : $as_echo_n "(cached) " >&6 else printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i lt_cv_truncate_bin= if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" fi rm -f conftest.i conftest2.i conftest.out test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 $as_echo "$lt_cv_truncate_bin" >&6; } # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in $*""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then : enableval=$enable_libtool_lock; fi test no = "$enable_libtool_lock" || enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out what ABI is being produced by ac_compile, and set mode # options accordingly. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE=32 ;; *ELF-64*) HPUX_IA64_MODE=64 ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then if test yes = "$lt_cv_prog_gnu_ld"; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; mips64*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then emul=elf case `/usr/bin/file conftest.$ac_objext` in *32-bit*) emul="${emul}32" ;; *64-bit*) emul="${emul}64" ;; esac case `/usr/bin/file conftest.$ac_objext` in *MSB*) emul="${emul}btsmip" ;; *LSB*) emul="${emul}ltsmip" ;; esac case `/usr/bin/file conftest.$ac_objext` in *N32*) emul="${emul}n32" ;; esac LD="${LD-ld} -m $emul" fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. Note that the listed cases only cover the # situations where additional linker options are needed (such as when # doing 32-bit compilation for a host where ld defaults to 64-bit, or # vice versa); the common cases where no linker options are needed do # not appear in the list. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) case `/usr/bin/file conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; *) LD="${LD-ld} -m elf_i386" ;; esac ;; powerpc64le-*linux*) LD="${LD-ld} -m elf32lppclinux" ;; powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -belf" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 $as_echo_n "checking whether the C compiler needs -belf... " >&6; } if ${lt_cv_cc_needs_belf+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_cc_needs_belf=yes else lt_cv_cc_needs_belf=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 $as_echo "$lt_cv_cc_needs_belf" >&6; } if test yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS=$SAVE_CFLAGS fi ;; *-*solaris*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*|x86_64-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD=${LD-ld}_sol2 fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks=$enable_libtool_lock if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. set dummy ${ac_tool_prefix}mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$MANIFEST_TOOL"; then ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL if test -n "$MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 $as_echo "$MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_MANIFEST_TOOL"; then ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL # Extract the first word of "mt", so it can be a program name with args. set dummy mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_MANIFEST_TOOL"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL if test -n "$ac_ct_MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 $as_echo "$ac_ct_MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_MANIFEST_TOOL" = x; then MANIFEST_TOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL fi else MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" fi test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 $as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } if ${lt_cv_path_mainfest_tool+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&5 if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 $as_echo "$lt_cv_path_mainfest_tool" >&6; } if test yes != "$lt_cv_path_mainfest_tool"; then MANIFEST_TOOL=: fi case $host_os in rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 $as_echo "$DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 $as_echo "$ac_ct_DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then DSYMUTIL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL fi else DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_NMEDIT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 $as_echo "$NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_NMEDIT="nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 $as_echo "$ac_ct_NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then NMEDIT=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT fi else NMEDIT="$ac_cv_prog_NMEDIT" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. set dummy ${ac_tool_prefix}lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_LIPO+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$LIPO"; then ac_cv_prog_LIPO="$LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 $as_echo "$LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_LIPO"; then ac_ct_LIPO=$LIPO # Extract the first word of "lipo", so it can be a program name with args. set dummy lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_LIPO+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_LIPO"; then ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_LIPO="lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 $as_echo "$ac_ct_LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_LIPO" = x; then LIPO=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac LIPO=$ac_ct_LIPO fi else LIPO="$ac_cv_prog_LIPO" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. set dummy ${ac_tool_prefix}otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL"; then ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 $as_echo "$OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL"; then ac_ct_OTOOL=$OTOOL # Extract the first word of "otool", so it can be a program name with args. set dummy otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL"; then ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL="otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 $as_echo "$ac_ct_OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL" = x; then OTOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL=$ac_ct_OTOOL fi else OTOOL="$ac_cv_prog_OTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. set dummy ${ac_tool_prefix}otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL64+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL64"; then ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 $as_echo "$OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL64"; then ac_ct_OTOOL64=$OTOOL64 # Extract the first word of "otool64", so it can be a program name with args. set dummy otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL64"; then ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL64="otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 $as_echo "$ac_ct_OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL64" = x; then OTOOL64=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL64=$ac_ct_OTOOL64 fi else OTOOL64="$ac_cv_prog_OTOOL64" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 $as_echo_n "checking for -single_module linker flag... " >&6; } if ${lt_cv_apple_cc_single_mod+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_apple_cc_single_mod=no if test -z "$LT_MULTI_MODULE"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&5 $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&5 # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test 0 = "$_lt_result"; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 fi rm -rf libconftest.dylib* rm -f conftest.* fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 $as_echo "$lt_cv_apple_cc_single_mod" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } if ${lt_cv_ld_exported_symbols_list+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_ld_exported_symbols_list=yes else lt_cv_ld_exported_symbols_list=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 $as_echo_n "checking for -force_load linker flag... " >&6; } if ${lt_cv_ld_force_load+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 echo "$AR cru libconftest.a conftest.o" >&5 $AR cru libconftest.a conftest.o 2>&5 echo "$RANLIB libconftest.a" >&5 $RANLIB libconftest.a 2>&5 cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&5 elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then lt_cv_ld_force_load=yes else cat conftest.err >&5 fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 $as_echo "$lt_cv_ld_force_load" >&6; } case $host_os in rhapsody* | darwin1.[012]) _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[91]*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; 10.[012][,.]*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test yes = "$lt_cv_apple_cc_single_mod"; then _lt_dar_single_mod='$single_module' fi if test yes = "$lt_cv_ld_exported_symbols_list"; then _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' fi if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac # func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x$2 in x) ;; *:) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" ;; x:*) eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" ;; *::*) eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" ;; *) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" ;; esac } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else 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 confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else 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 confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #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)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in dlfcn.h do : ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default " if test "x$ac_cv_header_dlfcn_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_DLFCN_H 1 _ACEOF fi done # Set options enable_dlopen=no enable_win32_dll=no # Check whether --enable-shared was given. if test "${enable_shared+set}" = set; then : enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS=$lt_save_ifs ;; esac else enable_shared=yes fi # Check whether --enable-static was given. if test "${enable_static+set}" = set; then : enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS=$lt_save_ifs ;; esac else enable_static=yes fi # Check whether --with-pic was given. if test "${with_pic+set}" = set; then : withval=$with_pic; lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $withval; do IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS=$lt_save_ifs ;; esac else pic_mode=default fi # Check whether --enable-fast-install was given. if test "${enable_fast_install+set}" = set; then : enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS=$lt_save_ifs ;; esac else enable_fast_install=yes fi shared_archive_member_spec= case $host,$enable_shared in power*-*-aix[5-9]*,yes) { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 $as_echo_n "checking which variant of shared library versioning to provide... " >&6; } # Check whether --with-aix-soname was given. if test "${with_aix_soname+set}" = set; then : withval=$with_aix_soname; case $withval in aix|svr4|both) ;; *) as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 ;; esac lt_cv_with_aix_soname=$with_aix_soname else if ${lt_cv_with_aix_soname+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_with_aix_soname=aix fi with_aix_soname=$lt_cv_with_aix_soname fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 $as_echo "$with_aix_soname" >&6; } if test aix != "$with_aix_soname"; then # For the AIX way of multilib, we name the shared archive member # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, # the AIX toolchain works better with OBJECT_MODE set (default 32). if test 64 = "${OBJECT_MODE-32}"; then shared_archive_member_spec=shr_64 else shared_archive_member_spec=shr fi fi ;; *) with_aix_soname=aix ;; esac # This can be used to rebuild libtool when needed LIBTOOL_DEPS=$ltmain # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' test -z "$LN_S" && LN_S="ln -s" if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 $as_echo_n "checking for objdir... " >&6; } if ${lt_cv_objdir+:} false; then : $as_echo_n "(cached) " >&6 else rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 $as_echo "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir cat >>confdefs.h <<_ACEOF #define LT_OBJDIR "$lt_cv_objdir/" _ACEOF case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a '.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld=$lt_cv_prog_gnu_ld old_CC=$CC old_CFLAGS=$CFLAGS # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o func_cc_basename $compiler cc_basename=$func_cc_basename_result # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 $as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/${ac_tool_prefix}file"; then lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac fi MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 $as_echo_n "checking for file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/file"; then lt_cv_path_MAGIC_CMD=$ac_dir/"file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac fi MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi else MAGIC_CMD=: fi fi fi ;; esac # Use C for the default configuration in the libtool script lt_save_CC=$CC ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= if test yes = "$GCC"; then case $cc_basename in nvcc*) lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; *) lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= if test yes = "$GCC"; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi lt_prog_compiler_pic='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; *) lt_prog_compiler_pic='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 lt_prog_compiler_wl='-Xlinker ' if test -n "$lt_prog_compiler_pic"; then lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' case $cc_basename in nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; esac ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='$wl-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64, which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; # flang / f18. f95 an alias for gfortran or flang on Debian flang* | f18* | f95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='--shared' lt_prog_compiler_static='--static' ;; nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; tcc*) # Fabrice Bellard et al's Tiny C Compiler lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; *Sun\ F* | *Sun*Fortran*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Intel*\ [CF]*Compiler*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; *Portland\ Group*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if ${lt_cv_prog_compiler_pic+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic=$lt_prog_compiler_pic fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 $as_echo "$lt_cv_prog_compiler_pic" >&6; } lt_prog_compiler_pic=$lt_cv_prog_compiler_pic # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if ${lt_cv_prog_compiler_pic_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 $as_echo "$lt_cv_prog_compiler_pic_works" >&6; } if test yes = "$lt_cv_prog_compiler_pic_works"; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if ${lt_cv_prog_compiler_static_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 $as_echo "$lt_cv_prog_compiler_static_works" >&6; } if test yes = "$lt_cv_prog_compiler_static_works"; then : else lt_prog_compiler_static= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } hard_links=nottested if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test no = "$hard_links"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= always_export_symbols=no archive_cmds= archive_expsym_cmds= compiler_needs_object=no enable_shared_with_static_runtimes=no export_dynamic_flag_spec= export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' hardcode_automatic=no hardcode_direct=no hardcode_direct_absolute=no hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_minus_L=no hardcode_shlibpath_var=unsupported inherit_rpath=no link_all_deplibs=unknown module_cmds= module_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= thread_safe_flag_spec= whole_archive_flag_spec= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ' (' and ')$', so one must not match beginning or # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', # as well as any symbol that contains 'd'. exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd* | bitrig*) with_gnu_ld=no ;; linux* | k*bsd*-gnu | gnu*) link_all_deplibs=no ;; esac ld_shlibs=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; *\ \(GNU\ Binutils\)\ [3-9]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test yes = "$lt_use_gnu_ld_interface"; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='$wl' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' export_dynamic_flag_spec='$wl--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test ia64 != "$host_cpu"; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' export_dynamic_flag_spec='$wl--export-all-symbols' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs=no fi ;; haiku*) archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' link_all_deplibs=yes ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported shrext_cmds=.dll archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=yes ;; interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='$wl-rpath,$libdir' export_dynamic_flag_spec='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test linux-dietlibc = "$host_os"; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test no = "$tmp_diet" then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; nagfor*) # NAGFOR 5.3 tmp_sharedflag='-Wl,-shared' ;; xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in tcc*) export_dynamic_flag_spec='-rdynamic' ;; xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else ld_shlibs=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test no = "$ld_shlibs"; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then aix_use_runtimelinking=yes break fi done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_direct_absolute=yes hardcode_libdir_separator=':' link_all_deplibs=yes file_list_spec='$wl-f,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # traditional, no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. hardcode_direct=no hardcode_direct_absolute=no ;; esac if test yes = "$GCC"; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; then shared_flag="$shared_flag "'$wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi export_dynamic_flag_spec='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; then hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' $wl-bernotok' allow_undefined_flag=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' fi archive_cmds_need_lc=yes archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported always_export_symbols=yes file_list_spec='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, )='true' enable_shared_with_static_runtimes=yes exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib old_postinstall_cmds='chmod 644 $oldlib' postlink_cmds='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' enable_shared_with_static_runtimes=yes ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported if test yes = "$lt_cv_ld_force_load"; then whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec='' fi link_all_deplibs=yes allow_undefined_flag=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" else ld_shlibs=no fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test yes = "$GCC"; then archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='$wl-E' ;; hpux10*) if test yes,no = "$GCC,$with_gnu_ld"; then archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test yes,no = "$GCC,$with_gnu_ld"; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 $as_echo_n "checking if $CC understands -b... " >&6; } if ${lt_cv_prog_compiler__b+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler__b=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -b" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler__b=yes fi else lt_cv_prog_compiler__b=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 $as_echo "$lt_cv_prog_compiler__b" >&6; } if test yes = "$lt_cv_prog_compiler__b"; then archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi ;; esac fi if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no hardcode_shlibpath_var=no ;; *) hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test yes = "$GCC"; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 $as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } if ${lt_cv_irix_exported_symbol+:} false; then : $as_echo_n "(cached) " >&6 else save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo (void) { return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_irix_exported_symbol=yes else lt_cv_irix_exported_symbol=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 $as_echo "$lt_cv_irix_exported_symbol" >&6; } if test yes = "$lt_cv_irix_exported_symbol"; then archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi link_all_deplibs=no else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: inherit_rpath=yes link_all_deplibs=yes ;; linux*) case $cc_basename in tcc*) # Fabrice Bellard et al's Tiny C Compiler ld_shlibs=yes archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; *nto* | *qnx*) ;; openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no hardcode_direct_absolute=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='$wl-rpath,$libdir' export_dynamic_flag_spec='$wl-E' else archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='$wl-rpath,$libdir' fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported shrext_cmds=.dll archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=yes ;; osf3*) if test yes = "$GCC"; then allow_undefined_flag=' $wl-expect_unresolved $wl\*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test yes = "$GCC"; then allow_undefined_flag=' $wl-expect_unresolved $wl\*' archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi archive_cmds_need_lc='no' hardcode_libdir_separator=: ;; solaris*) no_undefined_flag=' -z defs' if test yes = "$GCC"; then wlarc='$wl' archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='$wl' archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. GCC discards it without '$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test yes = "$GCC"; then whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs=yes ;; sunos4*) if test sequent = "$host_vendor"; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag='$wl-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag='$wl-z,text' allow_undefined_flag='$wl-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='$wl-R,$libdir' hardcode_libdir_separator=':' link_all_deplibs=yes export_dynamic_flag_spec='$wl-Bexport' runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac if test sni = "$host_vendor"; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec='$wl-Blargedynsym' ;; esac fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 $as_echo "$ld_shlibs" >&6; } test no = "$ld_shlibs" && can_build_shared=no with_gnu_ld=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test yes,yes = "$GCC,$enable_shared"; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } if ${lt_cv_archive_cmds_need_lc+:} false; then : $as_echo_n "(cached) " >&6 else $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl pic_flag=$lt_prog_compiler_pic compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc=no else lt_cv_archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 $as_echo "$lt_cv_archive_cmds_need_lc" >&6; } archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } if test yes = "$GCC"; then case $host_os in darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; *) lt_awk_arg='/^libraries:/' ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; *) lt_sed_strip_eq='s|=/|/|g' ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary... lt_tmp_lt_search_path_spec= lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` # ...but if some path component already ends with the multilib dir we assume # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). case "$lt_multi_os_dir; $lt_search_path_spec " in "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) lt_multi_os_dir= ;; esac for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" elif test -n "$lt_multi_os_dir"; then test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS = " "; FS = "/|\n";} { lt_foo = ""; lt_count = 0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo = "/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's|/\([A-Za-z]:\)|\1|g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='$libname$release$shared_ext$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line '#! .'. This would cause the generated library to # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # Using Import Files as archive members, it is possible to support # filename-based versioning of shared library archives on AIX. While # this would work for both with and without runtime linking, it will # prevent static linking of such archives. So we do filename-based # shared library versioning with .so extension only, which is used # when both runtime linking and shared linking is enabled. # Unfortunately, runtime linking may impact performance, so we do # not want this to be the default eventually. Also, we use the # versioned .so libs for executables only if there is the -brtl # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. # To allow for filename-based versioning support, we need to create # libNAME.so.V as an archive file, containing: # *) an Import File, referring to the versioned filename of the # archive as well as the shared archive member, telling the # bitwidth (32 or 64) of that shared object, and providing the # list of exported symbols of that shared object, eventually # decorated with the 'weak' keyword # *) the shared object with the F_LOADONLY flag set, to really avoid # it being seen by the linker. # At run time we better use the real file rather than another symlink, # but for link time we create the symlink libNAME.so -> libNAME.so.V case $with_aix_soname,$aix_use_runtimelinking in # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. aix,yes) # traditional libtool dynamic_linker='AIX unversionable lib.so' # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; aix,no) # traditional AIX only dynamic_linker='AIX lib.a(lib.so.V)' # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' ;; svr4,*) # full svr4 only dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,yes) # both, prefer svr4 dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # unpreferred sharedlib libNAME.a needs extra handling postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,no) # both, prefer aix dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' ;; esac shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; linux*android*) version_type=none # Android doesn't support versioned libraries. need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes dynamic_linker='Android linker' # Don't embed -rpath directories since the linker doesn't support them. hardcode_libdir_flag_spec='-L$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Ideally, we could use ldconfig to report *all* directores which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, # even though it is searched at run-time. Try to do the best guess by # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd* | bitrig*) version_type=sunos sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then need_version=no else need_version=yes fi library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no # OS/2 can only load a DLL with a base name of 8 characters or less. soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; v=$($ECHO $release$versuffix | tr -d .-); n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); $ECHO $n$v`$shared_ext' library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' shlibpath_var=BEGINLIBPATH sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec; then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' soname_spec='$libname$shared_ext.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi # remember unaugmented sys_lib_dlsearch_path content for libtool script decls... configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec # ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" # to be used as default LT_SYS_LIBRARY_PATH value in generated libtool configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || test yes = "$hardcode_automatic"; then # We can hardcode non-existent directories. if test no != "$hardcode_direct" && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && test no != "$hardcode_minus_L"; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 $as_echo "$hardcode_action" >&6; } if test relink = "$hardcode_action" || test yes = "$inherit_rpath"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi if test yes != "$enable_dlopen"; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen=load_add_on lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen=LoadLibrary lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen=dlopen lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl else lt_cv_dlopen=dyld lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; tpf*) # Don't try to run any link tests for TPF. We know it's impossible # because TPF is a cross-compiler, and we know how we open DSOs. lt_cv_dlopen=dlopen lt_cv_dlopen_libs= lt_cv_dlopen_self=no ;; *) ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" if test "x$ac_cv_func_shl_load" = xyes; then : lt_cv_dlopen=shl_load else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 $as_echo_n "checking for shl_load in -ldld... " >&6; } if ${ac_cv_lib_dld_shl_load+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load (); int main () { return shl_load (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_shl_load=yes else ac_cv_lib_dld_shl_load=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 $as_echo "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = xyes; then : lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld else ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = xyes; then : lt_cv_dlopen=dlopen else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 $as_echo_n "checking for dlopen in -lsvld... " >&6; } if ${ac_cv_lib_svld_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_svld_dlopen=yes else ac_cv_lib_svld_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 $as_echo "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = xyes; then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 $as_echo_n "checking for dld_link in -ldld... " >&6; } if ${ac_cv_lib_dld_dld_link+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dld_link (); int main () { return dld_link (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_dld_link=yes else ac_cv_lib_dld_dld_link=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 $as_echo "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = xyes; then : lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld fi fi fi fi fi fi ;; esac if test no = "$lt_cv_dlopen"; then enable_dlopen=no else enable_dlopen=yes fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS=$CPPFLAGS test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS=$LDFLAGS wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS=$LIBS LIBS="$lt_cv_dlopen_libs $LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 $as_echo_n "checking whether a program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self+:} false; then : $as_echo_n "(cached) " >&6 else if test yes = "$cross_compiling"; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 $as_echo "$lt_cv_dlopen_self" >&6; } if test yes = "$lt_cv_dlopen_self"; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self_static+:} false; then : $as_echo_n "(cached) " >&6 else if test yes = "$cross_compiling"; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 $as_echo "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi striplib= old_striplib= { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 $as_echo_n "checking whether stripping libraries is possible... " >&6; } if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP"; then striplib="$STRIP -x" old_striplib="$STRIP -S" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } ;; esac fi # Report what library types will actually be built { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 $as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 $as_echo "$enable_static" >&6; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC=$lt_save_CC ac_config_commands="$ac_config_commands libtool" # Only expand once: # Check whether --enable-debug was given. if test "${enable_debug+set}" = set; then : enableval=$enable_debug; case "$enableval" in #( yes) : debug=yes ;; #( no) : debug=no ;; #( *) : as_fn_error $? "bad value $enableval for --enable-debug" "$LINENO" 5 ;; esac else debug=no fi if test "x$debug" = "xyes"; then : if echo " $CFLAGS " | grep " -g " 2>&1 > /dev/null; then : # Debug symbol already activated else { $as_echo "$as_me:${as_lineno-$LINENO}: checking CFLAGS for gcc -g" >&5 $as_echo_n "checking CFLAGS for gcc -g... " >&6; } if ${ax_cv_cflags_gcc_option__g+:} false; then : $as_echo_n "(cached) " >&6 else ax_cv_cflags_gcc_option__g="no, unknown" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_save_CFLAGS="$CFLAGS" for ac_arg in "-pedantic -Werror % -g" "-pedantic % -g %% no, obsolete" # do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ax_cv_cflags_gcc_option__g=`echo $ac_arg | sed -e 's,.*% *,,'` ; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done CFLAGS="$ac_save_CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cflags_gcc_option__g" >&5 $as_echo "$ax_cv_cflags_gcc_option__g" >&6; } case ".$ax_cv_cflags_gcc_option__g" in .ok|.ok,*) ;; .|.no|.no,*) ;; *) if echo " $CFLAGS " | grep " $ax_cv_cflags_gcc_option__g " 2>&1 >/dev/null then { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS does contain \$ax_cv_cflags_gcc_option__g"; } >&5 (: CFLAGS does contain $ax_cv_cflags_gcc_option__g) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } else { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS \$ax_cv_cflags_gcc_option__g\""; } >&5 (: CFLAGS="$CFLAGS $ax_cv_cflags_gcc_option__g") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } CFLAGS="$CFLAGS $ax_cv_cflags_gcc_option__g" fi ;; esac fi CFLAGS="`echo "$CFLAGS" | sed -e 's/-fomit-frame-pointer *//' `" CPPFLAGS="$CPPFLAGS -DDEBUG" else CPPFLAGS="$CPPFLAGS -DNDEBUG" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking CFLAGS for gcc -Wall" >&5 $as_echo_n "checking CFLAGS for gcc -Wall... " >&6; } if ${ax_cv_cflags_gcc_option__Wall+:} false; then : $as_echo_n "(cached) " >&6 else ax_cv_cflags_gcc_option__Wall="no, unknown" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_save_CFLAGS="$CFLAGS" for ac_arg in "-pedantic -Werror % -Wall" "-pedantic % -Wall %% no, obsolete" # do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ax_cv_cflags_gcc_option__Wall=`echo $ac_arg | sed -e 's,.*% *,,'` ; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done CFLAGS="$ac_save_CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cflags_gcc_option__Wall" >&5 $as_echo "$ax_cv_cflags_gcc_option__Wall" >&6; } case ".$ax_cv_cflags_gcc_option__Wall" in .ok|.ok,*) ;; .|.no|.no,*) ;; *) if echo " $CFLAGS " | grep " $ax_cv_cflags_gcc_option__Wall " 2>&1 >/dev/null then { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS does contain \$ax_cv_cflags_gcc_option__Wall"; } >&5 (: CFLAGS does contain $ax_cv_cflags_gcc_option__Wall) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } else { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS \$ax_cv_cflags_gcc_option__Wall\""; } >&5 (: CFLAGS="$CFLAGS $ax_cv_cflags_gcc_option__Wall") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } CFLAGS="$CFLAGS $ax_cv_cflags_gcc_option__Wall" fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking CFLAGS for gcc -Wextra -Wno-sign-compare" >&5 $as_echo_n "checking CFLAGS for gcc -Wextra -Wno-sign-compare... " >&6; } if ${ax_cv_cflags_gcc_option__Wextra__Wno_sign_compare+:} false; then : $as_echo_n "(cached) " >&6 else ax_cv_cflags_gcc_option__Wextra__Wno_sign_compare="no, unknown" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_save_CFLAGS="$CFLAGS" for ac_arg in "-pedantic -Werror % -Wextra -Wno-sign-compare" "-pedantic % -Wextra -Wno-sign-compare %% no, obsolete" # do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ax_cv_cflags_gcc_option__Wextra__Wno_sign_compare=`echo $ac_arg | sed -e 's,.*% *,,'` ; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done CFLAGS="$ac_save_CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cflags_gcc_option__Wextra__Wno_sign_compare" >&5 $as_echo "$ax_cv_cflags_gcc_option__Wextra__Wno_sign_compare" >&6; } case ".$ax_cv_cflags_gcc_option__Wextra__Wno_sign_compare" in .ok|.ok,*) ;; .|.no|.no,*) ;; *) if echo " $CFLAGS " | grep " $ax_cv_cflags_gcc_option__Wextra__Wno_sign_compare " 2>&1 >/dev/null then { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS does contain \$ax_cv_cflags_gcc_option__Wextra__Wno_sign_compare"; } >&5 (: CFLAGS does contain $ax_cv_cflags_gcc_option__Wextra__Wno_sign_compare) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } else { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS \$ax_cv_cflags_gcc_option__Wextra__Wno_sign_compare\""; } >&5 (: CFLAGS="$CFLAGS $ax_cv_cflags_gcc_option__Wextra__Wno_sign_compare") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } CFLAGS="$CFLAGS $ax_cv_cflags_gcc_option__Wextra__Wno_sign_compare" fi ;; esac # wm_fn_c_try_compile_cflag CC_OPTION # ----------------------------------- # Try compiling a function using CC_OPTION in the compiler's options wm_fn_c_try_compile_cflag () { wm_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -Werror $1" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : wm_retval=0 else wm_retval=1 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$wm_save_CFLAGS" as_fn_set_status $wm_retval } { $as_echo "$as_me:${as_lineno-$LINENO}: checking CFLAGS for -Wtrampolines" >&5 $as_echo_n "checking CFLAGS for -Wtrampolines... " >&6; } if ${wm_cv_c_check_compopt_Werror_trampolines+:} false; then : $as_echo_n "(cached) " >&6 else wm_cv_c_check_compopt_Werror_trampolines="no, unknown" for wm_option in -Werror=trampolines -Wtrampolines ; do if wm_fn_c_try_compile_cflag "$wm_option"; then : wm_cv_c_check_compopt_Werror_trampolines="$wm_option" ; break fi done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $wm_cv_c_check_compopt_Werror_trampolines" >&5 $as_echo "$wm_cv_c_check_compopt_Werror_trampolines" >&6; } case $wm_cv_c_check_compopt_Werror_trampolines in #( no,*) : ;; #( *) : if echo " $CFLAGS " | grep " $wm_cv_c_check_compopt_Werror_trampolines " 2>&1 > /dev/null; then : { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: option $wm_cv_c_check_compopt_Werror_trampolines already present in \$CFLAGS, not appended" >&5 $as_echo "$as_me: WARNING: option $wm_cv_c_check_compopt_Werror_trampolines already present in \$CFLAGS, not appended" >&2;} else CFLAGS="$CFLAGS $wm_cv_c_check_compopt_Werror_trampolines" fi ;; esac if test "x$debug" = "xyes"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking CFLAGS for gcc -Wbitwise-op-parentheses" >&5 $as_echo_n "checking CFLAGS for gcc -Wbitwise-op-parentheses... " >&6; } if ${ax_cv_cflags_gcc_option__Wbitwise_op_parentheses+:} false; then : $as_echo_n "(cached) " >&6 else ax_cv_cflags_gcc_option__Wbitwise_op_parentheses="no, unknown" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_save_CFLAGS="$CFLAGS" for ac_arg in "-pedantic -Werror % -Wbitwise-op-parentheses" "-pedantic % -Wbitwise-op-parentheses %% no, obsolete" # do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ax_cv_cflags_gcc_option__Wbitwise_op_parentheses=`echo $ac_arg | sed -e 's,.*% *,,'` ; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done CFLAGS="$ac_save_CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cflags_gcc_option__Wbitwise_op_parentheses" >&5 $as_echo "$ax_cv_cflags_gcc_option__Wbitwise_op_parentheses" >&6; } case ".$ax_cv_cflags_gcc_option__Wbitwise_op_parentheses" in .ok|.ok,*) ;; .|.no|.no,*) ;; *) if echo " $CFLAGS " | grep " $ax_cv_cflags_gcc_option__Wbitwise_op_parentheses " 2>&1 >/dev/null then { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS does contain \$ax_cv_cflags_gcc_option__Wbitwise_op_parentheses"; } >&5 (: CFLAGS does contain $ax_cv_cflags_gcc_option__Wbitwise_op_parentheses) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } else { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS \$ax_cv_cflags_gcc_option__Wbitwise_op_parentheses\""; } >&5 (: CFLAGS="$CFLAGS $ax_cv_cflags_gcc_option__Wbitwise_op_parentheses") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } CFLAGS="$CFLAGS $ax_cv_cflags_gcc_option__Wbitwise_op_parentheses" fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking CFLAGS for gcc -Wdisabled-optimization" >&5 $as_echo_n "checking CFLAGS for gcc -Wdisabled-optimization... " >&6; } if ${ax_cv_cflags_gcc_option__Wdisabled_optimization+:} false; then : $as_echo_n "(cached) " >&6 else ax_cv_cflags_gcc_option__Wdisabled_optimization="no, unknown" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_save_CFLAGS="$CFLAGS" for ac_arg in "-pedantic -Werror % -Wdisabled-optimization" "-pedantic % -Wdisabled-optimization %% no, obsolete" # do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ax_cv_cflags_gcc_option__Wdisabled_optimization=`echo $ac_arg | sed -e 's,.*% *,,'` ; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done CFLAGS="$ac_save_CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cflags_gcc_option__Wdisabled_optimization" >&5 $as_echo "$ax_cv_cflags_gcc_option__Wdisabled_optimization" >&6; } case ".$ax_cv_cflags_gcc_option__Wdisabled_optimization" in .ok|.ok,*) ;; .|.no|.no,*) ;; *) if echo " $CFLAGS " | grep " $ax_cv_cflags_gcc_option__Wdisabled_optimization " 2>&1 >/dev/null then { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS does contain \$ax_cv_cflags_gcc_option__Wdisabled_optimization"; } >&5 (: CFLAGS does contain $ax_cv_cflags_gcc_option__Wdisabled_optimization) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } else { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS \$ax_cv_cflags_gcc_option__Wdisabled_optimization\""; } >&5 (: CFLAGS="$CFLAGS $ax_cv_cflags_gcc_option__Wdisabled_optimization") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } CFLAGS="$CFLAGS $ax_cv_cflags_gcc_option__Wdisabled_optimization" fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking CFLAGS for gcc -Wdouble-promotion" >&5 $as_echo_n "checking CFLAGS for gcc -Wdouble-promotion... " >&6; } if ${ax_cv_cflags_gcc_option__Wdouble_promotion+:} false; then : $as_echo_n "(cached) " >&6 else ax_cv_cflags_gcc_option__Wdouble_promotion="no, unknown" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_save_CFLAGS="$CFLAGS" for ac_arg in "-pedantic -Werror % -Wdouble-promotion" "-pedantic % -Wdouble-promotion %% no, obsolete" # do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ax_cv_cflags_gcc_option__Wdouble_promotion=`echo $ac_arg | sed -e 's,.*% *,,'` ; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done CFLAGS="$ac_save_CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cflags_gcc_option__Wdouble_promotion" >&5 $as_echo "$ax_cv_cflags_gcc_option__Wdouble_promotion" >&6; } case ".$ax_cv_cflags_gcc_option__Wdouble_promotion" in .ok|.ok,*) ;; .|.no|.no,*) ;; *) if echo " $CFLAGS " | grep " $ax_cv_cflags_gcc_option__Wdouble_promotion " 2>&1 >/dev/null then { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS does contain \$ax_cv_cflags_gcc_option__Wdouble_promotion"; } >&5 (: CFLAGS does contain $ax_cv_cflags_gcc_option__Wdouble_promotion) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } else { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS \$ax_cv_cflags_gcc_option__Wdouble_promotion\""; } >&5 (: CFLAGS="$CFLAGS $ax_cv_cflags_gcc_option__Wdouble_promotion") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } CFLAGS="$CFLAGS $ax_cv_cflags_gcc_option__Wdouble_promotion" fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking CFLAGS for gcc -Wfloat-equal" >&5 $as_echo_n "checking CFLAGS for gcc -Wfloat-equal... " >&6; } if ${ax_cv_cflags_gcc_option__Wfloat_equal+:} false; then : $as_echo_n "(cached) " >&6 else ax_cv_cflags_gcc_option__Wfloat_equal="no, unknown" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_save_CFLAGS="$CFLAGS" for ac_arg in "-pedantic -Werror % -Wfloat-equal" "-pedantic % -Wfloat-equal %% no, obsolete" # do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ax_cv_cflags_gcc_option__Wfloat_equal=`echo $ac_arg | sed -e 's,.*% *,,'` ; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done CFLAGS="$ac_save_CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cflags_gcc_option__Wfloat_equal" >&5 $as_echo "$ax_cv_cflags_gcc_option__Wfloat_equal" >&6; } case ".$ax_cv_cflags_gcc_option__Wfloat_equal" in .ok|.ok,*) ;; .|.no|.no,*) ;; *) if echo " $CFLAGS " | grep " $ax_cv_cflags_gcc_option__Wfloat_equal " 2>&1 >/dev/null then { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS does contain \$ax_cv_cflags_gcc_option__Wfloat_equal"; } >&5 (: CFLAGS does contain $ax_cv_cflags_gcc_option__Wfloat_equal) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } else { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS \$ax_cv_cflags_gcc_option__Wfloat_equal\""; } >&5 (: CFLAGS="$CFLAGS $ax_cv_cflags_gcc_option__Wfloat_equal") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } CFLAGS="$CFLAGS $ax_cv_cflags_gcc_option__Wfloat_equal" fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking CFLAGS for gcc -Wfour-char-constants" >&5 $as_echo_n "checking CFLAGS for gcc -Wfour-char-constants... " >&6; } if ${ax_cv_cflags_gcc_option__Wfour_char_constants+:} false; then : $as_echo_n "(cached) " >&6 else ax_cv_cflags_gcc_option__Wfour_char_constants="no, unknown" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_save_CFLAGS="$CFLAGS" for ac_arg in "-pedantic -Werror % -Wfour-char-constants" "-pedantic % -Wfour-char-constants %% no, obsolete" # do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ax_cv_cflags_gcc_option__Wfour_char_constants=`echo $ac_arg | sed -e 's,.*% *,,'` ; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done CFLAGS="$ac_save_CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cflags_gcc_option__Wfour_char_constants" >&5 $as_echo "$ax_cv_cflags_gcc_option__Wfour_char_constants" >&6; } case ".$ax_cv_cflags_gcc_option__Wfour_char_constants" in .ok|.ok,*) ;; .|.no|.no,*) ;; *) if echo " $CFLAGS " | grep " $ax_cv_cflags_gcc_option__Wfour_char_constants " 2>&1 >/dev/null then { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS does contain \$ax_cv_cflags_gcc_option__Wfour_char_constants"; } >&5 (: CFLAGS does contain $ax_cv_cflags_gcc_option__Wfour_char_constants) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } else { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS \$ax_cv_cflags_gcc_option__Wfour_char_constants\""; } >&5 (: CFLAGS="$CFLAGS $ax_cv_cflags_gcc_option__Wfour_char_constants") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } CFLAGS="$CFLAGS $ax_cv_cflags_gcc_option__Wfour_char_constants" fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking CFLAGS for gcc -Wliteral-range" >&5 $as_echo_n "checking CFLAGS for gcc -Wliteral-range... " >&6; } if ${ax_cv_cflags_gcc_option__Wliteral_range+:} false; then : $as_echo_n "(cached) " >&6 else ax_cv_cflags_gcc_option__Wliteral_range="no, unknown" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_save_CFLAGS="$CFLAGS" for ac_arg in "-pedantic -Werror % -Wliteral-range" "-pedantic % -Wliteral-range %% no, obsolete" # do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ax_cv_cflags_gcc_option__Wliteral_range=`echo $ac_arg | sed -e 's,.*% *,,'` ; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done CFLAGS="$ac_save_CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cflags_gcc_option__Wliteral_range" >&5 $as_echo "$ax_cv_cflags_gcc_option__Wliteral_range" >&6; } case ".$ax_cv_cflags_gcc_option__Wliteral_range" in .ok|.ok,*) ;; .|.no|.no,*) ;; *) if echo " $CFLAGS " | grep " $ax_cv_cflags_gcc_option__Wliteral_range " 2>&1 >/dev/null then { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS does contain \$ax_cv_cflags_gcc_option__Wliteral_range"; } >&5 (: CFLAGS does contain $ax_cv_cflags_gcc_option__Wliteral_range) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } else { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS \$ax_cv_cflags_gcc_option__Wliteral_range\""; } >&5 (: CFLAGS="$CFLAGS $ax_cv_cflags_gcc_option__Wliteral_range") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } CFLAGS="$CFLAGS $ax_cv_cflags_gcc_option__Wliteral_range" fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking CFLAGS for gcc -Wlogical-op" >&5 $as_echo_n "checking CFLAGS for gcc -Wlogical-op... " >&6; } if ${ax_cv_cflags_gcc_option__Wlogical_op+:} false; then : $as_echo_n "(cached) " >&6 else ax_cv_cflags_gcc_option__Wlogical_op="no, unknown" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_save_CFLAGS="$CFLAGS" for ac_arg in "-pedantic -Werror % -Wlogical-op" "-pedantic % -Wlogical-op %% no, obsolete" # do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ax_cv_cflags_gcc_option__Wlogical_op=`echo $ac_arg | sed -e 's,.*% *,,'` ; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done CFLAGS="$ac_save_CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cflags_gcc_option__Wlogical_op" >&5 $as_echo "$ax_cv_cflags_gcc_option__Wlogical_op" >&6; } case ".$ax_cv_cflags_gcc_option__Wlogical_op" in .ok|.ok,*) ;; .|.no|.no,*) ;; *) if echo " $CFLAGS " | grep " $ax_cv_cflags_gcc_option__Wlogical_op " 2>&1 >/dev/null then { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS does contain \$ax_cv_cflags_gcc_option__Wlogical_op"; } >&5 (: CFLAGS does contain $ax_cv_cflags_gcc_option__Wlogical_op) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } else { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS \$ax_cv_cflags_gcc_option__Wlogical_op\""; } >&5 (: CFLAGS="$CFLAGS $ax_cv_cflags_gcc_option__Wlogical_op") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } CFLAGS="$CFLAGS $ax_cv_cflags_gcc_option__Wlogical_op" fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking CFLAGS for gcc -Wlogical-op-parentheses" >&5 $as_echo_n "checking CFLAGS for gcc -Wlogical-op-parentheses... " >&6; } if ${ax_cv_cflags_gcc_option__Wlogical_op_parentheses+:} false; then : $as_echo_n "(cached) " >&6 else ax_cv_cflags_gcc_option__Wlogical_op_parentheses="no, unknown" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_save_CFLAGS="$CFLAGS" for ac_arg in "-pedantic -Werror % -Wlogical-op-parentheses" "-pedantic % -Wlogical-op-parentheses %% no, obsolete" # do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ax_cv_cflags_gcc_option__Wlogical_op_parentheses=`echo $ac_arg | sed -e 's,.*% *,,'` ; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done CFLAGS="$ac_save_CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cflags_gcc_option__Wlogical_op_parentheses" >&5 $as_echo "$ax_cv_cflags_gcc_option__Wlogical_op_parentheses" >&6; } case ".$ax_cv_cflags_gcc_option__Wlogical_op_parentheses" in .ok|.ok,*) ;; .|.no|.no,*) ;; *) if echo " $CFLAGS " | grep " $ax_cv_cflags_gcc_option__Wlogical_op_parentheses " 2>&1 >/dev/null then { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS does contain \$ax_cv_cflags_gcc_option__Wlogical_op_parentheses"; } >&5 (: CFLAGS does contain $ax_cv_cflags_gcc_option__Wlogical_op_parentheses) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } else { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS \$ax_cv_cflags_gcc_option__Wlogical_op_parentheses\""; } >&5 (: CFLAGS="$CFLAGS $ax_cv_cflags_gcc_option__Wlogical_op_parentheses") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } CFLAGS="$CFLAGS $ax_cv_cflags_gcc_option__Wlogical_op_parentheses" fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking CFLAGS for gcc -Wnested-externs" >&5 $as_echo_n "checking CFLAGS for gcc -Wnested-externs... " >&6; } if ${ax_cv_cflags_gcc_option__Wnested_externs+:} false; then : $as_echo_n "(cached) " >&6 else ax_cv_cflags_gcc_option__Wnested_externs="no, unknown" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_save_CFLAGS="$CFLAGS" for ac_arg in "-pedantic -Werror % -Wnested-externs" "-pedantic % -Wnested-externs %% no, obsolete" # do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ax_cv_cflags_gcc_option__Wnested_externs=`echo $ac_arg | sed -e 's,.*% *,,'` ; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done CFLAGS="$ac_save_CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cflags_gcc_option__Wnested_externs" >&5 $as_echo "$ax_cv_cflags_gcc_option__Wnested_externs" >&6; } case ".$ax_cv_cflags_gcc_option__Wnested_externs" in .ok|.ok,*) ;; .|.no|.no,*) ;; *) if echo " $CFLAGS " | grep " $ax_cv_cflags_gcc_option__Wnested_externs " 2>&1 >/dev/null then { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS does contain \$ax_cv_cflags_gcc_option__Wnested_externs"; } >&5 (: CFLAGS does contain $ax_cv_cflags_gcc_option__Wnested_externs) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } else { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS \$ax_cv_cflags_gcc_option__Wnested_externs\""; } >&5 (: CFLAGS="$CFLAGS $ax_cv_cflags_gcc_option__Wnested_externs") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } CFLAGS="$CFLAGS $ax_cv_cflags_gcc_option__Wnested_externs" fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking CFLAGS for gcc -Woverlength-strings" >&5 $as_echo_n "checking CFLAGS for gcc -Woverlength-strings... " >&6; } if ${ax_cv_cflags_gcc_option__Woverlength_strings+:} false; then : $as_echo_n "(cached) " >&6 else ax_cv_cflags_gcc_option__Woverlength_strings="no, unknown" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_save_CFLAGS="$CFLAGS" for ac_arg in "-pedantic -Werror % -Woverlength-strings" "-pedantic % -Woverlength-strings %% no, obsolete" # do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ax_cv_cflags_gcc_option__Woverlength_strings=`echo $ac_arg | sed -e 's,.*% *,,'` ; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done CFLAGS="$ac_save_CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cflags_gcc_option__Woverlength_strings" >&5 $as_echo "$ax_cv_cflags_gcc_option__Woverlength_strings" >&6; } case ".$ax_cv_cflags_gcc_option__Woverlength_strings" in .ok|.ok,*) ;; .|.no|.no,*) ;; *) if echo " $CFLAGS " | grep " $ax_cv_cflags_gcc_option__Woverlength_strings " 2>&1 >/dev/null then { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS does contain \$ax_cv_cflags_gcc_option__Woverlength_strings"; } >&5 (: CFLAGS does contain $ax_cv_cflags_gcc_option__Woverlength_strings) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } else { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS \$ax_cv_cflags_gcc_option__Woverlength_strings\""; } >&5 (: CFLAGS="$CFLAGS $ax_cv_cflags_gcc_option__Woverlength_strings") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } CFLAGS="$CFLAGS $ax_cv_cflags_gcc_option__Woverlength_strings" fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking CFLAGS for gcc -Wpointer-arith" >&5 $as_echo_n "checking CFLAGS for gcc -Wpointer-arith... " >&6; } if ${ax_cv_cflags_gcc_option__Wpointer_arith+:} false; then : $as_echo_n "(cached) " >&6 else ax_cv_cflags_gcc_option__Wpointer_arith="no, unknown" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_save_CFLAGS="$CFLAGS" for ac_arg in "-pedantic -Werror % -Wpointer-arith" "-pedantic % -Wpointer-arith %% no, obsolete" # do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ax_cv_cflags_gcc_option__Wpointer_arith=`echo $ac_arg | sed -e 's,.*% *,,'` ; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done CFLAGS="$ac_save_CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cflags_gcc_option__Wpointer_arith" >&5 $as_echo "$ax_cv_cflags_gcc_option__Wpointer_arith" >&6; } case ".$ax_cv_cflags_gcc_option__Wpointer_arith" in .ok|.ok,*) ;; .|.no|.no,*) ;; *) if echo " $CFLAGS " | grep " $ax_cv_cflags_gcc_option__Wpointer_arith " 2>&1 >/dev/null then { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS does contain \$ax_cv_cflags_gcc_option__Wpointer_arith"; } >&5 (: CFLAGS does contain $ax_cv_cflags_gcc_option__Wpointer_arith) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } else { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS \$ax_cv_cflags_gcc_option__Wpointer_arith\""; } >&5 (: CFLAGS="$CFLAGS $ax_cv_cflags_gcc_option__Wpointer_arith") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } CFLAGS="$CFLAGS $ax_cv_cflags_gcc_option__Wpointer_arith" fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking CFLAGS for gcc -Wredundant-decls" >&5 $as_echo_n "checking CFLAGS for gcc -Wredundant-decls... " >&6; } if ${ax_cv_cflags_gcc_option__Wredundant_decls+:} false; then : $as_echo_n "(cached) " >&6 else ax_cv_cflags_gcc_option__Wredundant_decls="no, unknown" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_save_CFLAGS="$CFLAGS" for ac_arg in "-pedantic -Werror % -Wredundant-decls" "-pedantic % -Wredundant-decls %% no, obsolete" # do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ax_cv_cflags_gcc_option__Wredundant_decls=`echo $ac_arg | sed -e 's,.*% *,,'` ; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done CFLAGS="$ac_save_CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cflags_gcc_option__Wredundant_decls" >&5 $as_echo "$ax_cv_cflags_gcc_option__Wredundant_decls" >&6; } case ".$ax_cv_cflags_gcc_option__Wredundant_decls" in .ok|.ok,*) ;; .|.no|.no,*) ;; *) if echo " $CFLAGS " | grep " $ax_cv_cflags_gcc_option__Wredundant_decls " 2>&1 >/dev/null then { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS does contain \$ax_cv_cflags_gcc_option__Wredundant_decls"; } >&5 (: CFLAGS does contain $ax_cv_cflags_gcc_option__Wredundant_decls) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } else { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS \$ax_cv_cflags_gcc_option__Wredundant_decls\""; } >&5 (: CFLAGS="$CFLAGS $ax_cv_cflags_gcc_option__Wredundant_decls") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } CFLAGS="$CFLAGS $ax_cv_cflags_gcc_option__Wredundant_decls" fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking CFLAGS for gcc -Wsizeof-array-argument" >&5 $as_echo_n "checking CFLAGS for gcc -Wsizeof-array-argument... " >&6; } if ${ax_cv_cflags_gcc_option__Wsizeof_array_argument+:} false; then : $as_echo_n "(cached) " >&6 else ax_cv_cflags_gcc_option__Wsizeof_array_argument="no, unknown" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_save_CFLAGS="$CFLAGS" for ac_arg in "-pedantic -Werror % -Wsizeof-array-argument" "-pedantic % -Wsizeof-array-argument %% no, obsolete" # do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ax_cv_cflags_gcc_option__Wsizeof_array_argument=`echo $ac_arg | sed -e 's,.*% *,,'` ; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done CFLAGS="$ac_save_CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cflags_gcc_option__Wsizeof_array_argument" >&5 $as_echo "$ax_cv_cflags_gcc_option__Wsizeof_array_argument" >&6; } case ".$ax_cv_cflags_gcc_option__Wsizeof_array_argument" in .ok|.ok,*) ;; .|.no|.no,*) ;; *) if echo " $CFLAGS " | grep " $ax_cv_cflags_gcc_option__Wsizeof_array_argument " 2>&1 >/dev/null then { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS does contain \$ax_cv_cflags_gcc_option__Wsizeof_array_argument"; } >&5 (: CFLAGS does contain $ax_cv_cflags_gcc_option__Wsizeof_array_argument) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } else { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS \$ax_cv_cflags_gcc_option__Wsizeof_array_argument\""; } >&5 (: CFLAGS="$CFLAGS $ax_cv_cflags_gcc_option__Wsizeof_array_argument") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } CFLAGS="$CFLAGS $ax_cv_cflags_gcc_option__Wsizeof_array_argument" fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking CFLAGS for gcc -Wstrict-prototypes" >&5 $as_echo_n "checking CFLAGS for gcc -Wstrict-prototypes... " >&6; } if ${wm_cv_c_checks_compopt_Wstrict_prototypes+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu wm_save_CFLAGS="$CFLAGS" CFLAGS="$wm_save_CFLAGS -pedantic -Werror -Wstrict-prototypes" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(int argc, char **argv) { /* to avoid failing on -Wunused-parameter */ (void) argc; (void) argv; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : wm_cv_c_checks_compopt_Wstrict_prototypes="-Wstrict-prototypes" else wm_cv_c_checks_compopt_Wstrict_prototypes="no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$wm_save_CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $wm_cv_c_checks_compopt_Wstrict_prototypes" >&5 $as_echo "$wm_cv_c_checks_compopt_Wstrict_prototypes" >&6; } # We cannot add this flag now to CFLAGS because it could break all further # detections done by configure, the flag will be added at the end by the # macro WM_CFLAGS_GCC_OPTION_POSTPONED { $as_echo "$as_me:${as_lineno-$LINENO}: checking CFLAGS for format attribute suggest" >&5 $as_echo_n "checking CFLAGS for format attribute suggest... " >&6; } if ${wm_cv_c_check_compopt_Wsuggest_attribute_format+:} false; then : $as_echo_n "(cached) " >&6 else wm_cv_c_check_compopt_Wsuggest_attribute_format="no, unknown" for wm_option in -Wsuggest-attribute=format -Wmissing-format-attribute ; do if wm_fn_c_try_compile_cflag "$wm_option"; then : wm_cv_c_check_compopt_Wsuggest_attribute_format="$wm_option" ; break fi done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $wm_cv_c_check_compopt_Wsuggest_attribute_format" >&5 $as_echo "$wm_cv_c_check_compopt_Wsuggest_attribute_format" >&6; } case $wm_cv_c_check_compopt_Wsuggest_attribute_format in #( no,*) : ;; #( *) : if echo " $CFLAGS " | grep " $wm_cv_c_check_compopt_Wsuggest_attribute_format " 2>&1 > /dev/null; then : { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: option $wm_cv_c_check_compopt_Wsuggest_attribute_format already present in \$CFLAGS, not appended" >&5 $as_echo "$as_me: WARNING: option $wm_cv_c_check_compopt_Wsuggest_attribute_format already present in \$CFLAGS, not appended" >&2;} else CFLAGS="$CFLAGS $wm_cv_c_check_compopt_Wsuggest_attribute_format" fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking CFLAGS for no-return attribute suggest" >&5 $as_echo_n "checking CFLAGS for no-return attribute suggest... " >&6; } if ${wm_cv_c_check_compopt_Wsuggest_attribute_noreturn+:} false; then : $as_echo_n "(cached) " >&6 else wm_cv_c_check_compopt_Wsuggest_attribute_noreturn="no, unknown" for wm_option in -Wsuggest-attribute=noreturn -Wmissing-noreturn ; do if wm_fn_c_try_compile_cflag "$wm_option"; then : wm_cv_c_check_compopt_Wsuggest_attribute_noreturn="$wm_option" ; break fi done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $wm_cv_c_check_compopt_Wsuggest_attribute_noreturn" >&5 $as_echo "$wm_cv_c_check_compopt_Wsuggest_attribute_noreturn" >&6; } case $wm_cv_c_check_compopt_Wsuggest_attribute_noreturn in #( no,*) : ;; #( *) : if echo " $CFLAGS " | grep " $wm_cv_c_check_compopt_Wsuggest_attribute_noreturn " 2>&1 > /dev/null; then : { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: option $wm_cv_c_check_compopt_Wsuggest_attribute_noreturn already present in \$CFLAGS, not appended" >&5 $as_echo "$as_me: WARNING: option $wm_cv_c_check_compopt_Wsuggest_attribute_noreturn already present in \$CFLAGS, not appended" >&2;} else CFLAGS="$CFLAGS $wm_cv_c_check_compopt_Wsuggest_attribute_noreturn" fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking CFLAGS for gcc -Wundef" >&5 $as_echo_n "checking CFLAGS for gcc -Wundef... " >&6; } if ${ax_cv_cflags_gcc_option__Wundef+:} false; then : $as_echo_n "(cached) " >&6 else ax_cv_cflags_gcc_option__Wundef="no, unknown" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_save_CFLAGS="$CFLAGS" for ac_arg in "-pedantic -Werror % -Wundef" "-pedantic % -Wundef %% no, obsolete" # do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ax_cv_cflags_gcc_option__Wundef=`echo $ac_arg | sed -e 's,.*% *,,'` ; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done CFLAGS="$ac_save_CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cflags_gcc_option__Wundef" >&5 $as_echo "$ax_cv_cflags_gcc_option__Wundef" >&6; } case ".$ax_cv_cflags_gcc_option__Wundef" in .ok|.ok,*) ;; .|.no|.no,*) ;; *) if echo " $CFLAGS " | grep " $ax_cv_cflags_gcc_option__Wundef " 2>&1 >/dev/null then { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS does contain \$ax_cv_cflags_gcc_option__Wundef"; } >&5 (: CFLAGS does contain $ax_cv_cflags_gcc_option__Wundef) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } else { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS \$ax_cv_cflags_gcc_option__Wundef\""; } >&5 (: CFLAGS="$CFLAGS $ax_cv_cflags_gcc_option__Wundef") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } CFLAGS="$CFLAGS $ax_cv_cflags_gcc_option__Wundef" fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking CFLAGS for gcc -Wunused-macros" >&5 $as_echo_n "checking CFLAGS for gcc -Wunused-macros... " >&6; } if ${wm_cv_c_checks_compopt_Wunused_macros+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu wm_save_CFLAGS="$CFLAGS" CFLAGS="$wm_save_CFLAGS -pedantic -Werror -Wunused-macros" cat <<_ACEOF >conftest.$ac_ext #include "confdefs.h" int main(int argc, char **argv) { /* to avoid failing on -Wunused-parameter */ (void) argc; (void) argv; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : wm_cv_c_checks_compopt_Wunused_macros="-Wunused-macros" else wm_cv_c_checks_compopt_Wunused_macros="no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$wm_save_CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $wm_cv_c_checks_compopt_Wunused_macros" >&5 $as_echo "$wm_cv_c_checks_compopt_Wunused_macros" >&6; } # We cannot add this flag now to CFLAGS because it could break all further # detections done by configure, the flag will be added at the end by the # macro WM_CFLAGS_GCC_OPTION_POSTPONED { $as_echo "$as_me:${as_lineno-$LINENO}: checking CFLAGS for gcc -Wused-but-marked-unused" >&5 $as_echo_n "checking CFLAGS for gcc -Wused-but-marked-unused... " >&6; } if ${ax_cv_cflags_gcc_option__Wused_but_marked_unused+:} false; then : $as_echo_n "(cached) " >&6 else ax_cv_cflags_gcc_option__Wused_but_marked_unused="no, unknown" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_save_CFLAGS="$CFLAGS" for ac_arg in "-pedantic -Werror % -Wused-but-marked-unused" "-pedantic % -Wused-but-marked-unused %% no, obsolete" # do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ax_cv_cflags_gcc_option__Wused_but_marked_unused=`echo $ac_arg | sed -e 's,.*% *,,'` ; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done CFLAGS="$ac_save_CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cflags_gcc_option__Wused_but_marked_unused" >&5 $as_echo "$ax_cv_cflags_gcc_option__Wused_but_marked_unused" >&6; } case ".$ax_cv_cflags_gcc_option__Wused_but_marked_unused" in .ok|.ok,*) ;; .|.no|.no,*) ;; *) if echo " $CFLAGS " | grep " $ax_cv_cflags_gcc_option__Wused_but_marked_unused " 2>&1 >/dev/null then { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS does contain \$ax_cv_cflags_gcc_option__Wused_but_marked_unused"; } >&5 (: CFLAGS does contain $ax_cv_cflags_gcc_option__Wused_but_marked_unused) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } else { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS \$ax_cv_cflags_gcc_option__Wused_but_marked_unused\""; } >&5 (: CFLAGS="$CFLAGS $ax_cv_cflags_gcc_option__Wused_but_marked_unused") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } CFLAGS="$CFLAGS $ax_cv_cflags_gcc_option__Wused_but_marked_unused" fi ;; esac else { $as_echo "$as_me:${as_lineno-$LINENO}: checking CFLAGS for gcc -Wno-deprecated" >&5 $as_echo_n "checking CFLAGS for gcc -Wno-deprecated... " >&6; } if ${ax_cv_cflags_gcc_option__Wno_deprecated+:} false; then : $as_echo_n "(cached) " >&6 else ax_cv_cflags_gcc_option__Wno_deprecated="no, unknown" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_save_CFLAGS="$CFLAGS" for ac_arg in "-pedantic -Werror % -Wno-deprecated" "-pedantic % -Wno-deprecated %% no, obsolete" # do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ax_cv_cflags_gcc_option__Wno_deprecated=`echo $ac_arg | sed -e 's,.*% *,,'` ; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done CFLAGS="$ac_save_CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cflags_gcc_option__Wno_deprecated" >&5 $as_echo "$ax_cv_cflags_gcc_option__Wno_deprecated" >&6; } case ".$ax_cv_cflags_gcc_option__Wno_deprecated" in .ok|.ok,*) ;; .|.no|.no,*) ;; *) if echo " $CFLAGS " | grep " $ax_cv_cflags_gcc_option__Wno_deprecated " 2>&1 >/dev/null then { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS does contain \$ax_cv_cflags_gcc_option__Wno_deprecated"; } >&5 (: CFLAGS does contain $ax_cv_cflags_gcc_option__Wno_deprecated) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } else { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS \$ax_cv_cflags_gcc_option__Wno_deprecated\""; } >&5 (: CFLAGS="$CFLAGS $ax_cv_cflags_gcc_option__Wno_deprecated") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } CFLAGS="$CFLAGS $ax_cv_cflags_gcc_option__Wno_deprecated" fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking CFLAGS for gcc -Wno-deprecated-declarations" >&5 $as_echo_n "checking CFLAGS for gcc -Wno-deprecated-declarations... " >&6; } if ${ax_cv_cflags_gcc_option__Wno_deprecated_declarations+:} false; then : $as_echo_n "(cached) " >&6 else ax_cv_cflags_gcc_option__Wno_deprecated_declarations="no, unknown" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_save_CFLAGS="$CFLAGS" for ac_arg in "-pedantic -Werror % -Wno-deprecated-declarations" "-pedantic % -Wno-deprecated-declarations %% no, obsolete" # do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ax_cv_cflags_gcc_option__Wno_deprecated_declarations=`echo $ac_arg | sed -e 's,.*% *,,'` ; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done CFLAGS="$ac_save_CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cflags_gcc_option__Wno_deprecated_declarations" >&5 $as_echo "$ax_cv_cflags_gcc_option__Wno_deprecated_declarations" >&6; } case ".$ax_cv_cflags_gcc_option__Wno_deprecated_declarations" in .ok|.ok,*) ;; .|.no|.no,*) ;; *) if echo " $CFLAGS " | grep " $ax_cv_cflags_gcc_option__Wno_deprecated_declarations " 2>&1 >/dev/null then { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS does contain \$ax_cv_cflags_gcc_option__Wno_deprecated_declarations"; } >&5 (: CFLAGS does contain $ax_cv_cflags_gcc_option__Wno_deprecated_declarations) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } else { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS \$ax_cv_cflags_gcc_option__Wno_deprecated_declarations\""; } >&5 (: CFLAGS="$CFLAGS $ax_cv_cflags_gcc_option__Wno_deprecated_declarations") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } CFLAGS="$CFLAGS $ax_cv_cflags_gcc_option__Wno_deprecated_declarations" fi ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if compiler supports nested functions" >&5 $as_echo_n "checking if compiler supports nested functions... " >&6; } if ${wm_cv_prog_cc_nestedfunc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(int narg, char **argv) { int local_variable; int nested_function(int argument) { /* Checking we have access to upper level's scope, otherwise it is of no use */ return local_variable + argument; } /* To avoid a warning for unused parameter, that may falsely fail */ (void) argv; /* Initialise using the parameter to main so the compiler won't be tempted to optimise too much */ local_variable = narg + 1; return nested_function(2); } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : wm_cv_prog_cc_nestedfunc=yes else wm_cv_prog_cc_nestedfunc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $wm_cv_prog_cc_nestedfunc" >&5 $as_echo "$wm_cv_prog_cc_nestedfunc" >&6; } if test "x$wm_cv_prog_cc_nestedfunc" != "xno"; then USE_NESTED_FUNC_TRUE= USE_NESTED_FUNC_FALSE='#' else USE_NESTED_FUNC_TRUE='#' USE_NESTED_FUNC_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ax_pthread_ok=no # We used to check for pthread.h first, but this fails if pthread.h # requires special compiler flags (e.g. on True64 or Sequent). # It gets checked for in the link test anyway. # First of all, check if the user has set any of the PTHREAD_LIBS, # etcetera environment variables, and if threads linking works using # them: if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS" >&5 $as_echo_n "checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char pthread_join (); int main () { return pthread_join (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ax_pthread_ok=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5 $as_echo "$ax_pthread_ok" >&6; } if test x"$ax_pthread_ok" = xno; then PTHREAD_LIBS="" PTHREAD_CFLAGS="" fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" fi # We must check for the threads library under a number of different # names; the ordering is very important because some systems # (e.g. DEC) have both -lpthread and -lpthreads, where one of the # libraries is broken (non-POSIX). # Create a list of thread flags to try. Items starting with a "-" are # C compiler flags, and other items are library names, except for "none" # which indicates that we try without any flags at all, and "pthread-config" # which is a program returning the flags for the Pth emulation library. ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" # The ordering *is* (sometimes) important. Some notes on the # individual items follow: # pthreads: AIX (must check this before -lpthread) # none: in case threads are in libc; should be tried before -Kthread and # other compiler flags to prevent continual compiler warnings # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) # -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) # -pthreads: Solaris/gcc # -mthreads: Mingw32/gcc, Lynx/gcc # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it # doesn't hurt to check since this sometimes defines pthreads too; # also defines -D_REENTRANT) # ... -mt is also the pthreads flag for HP/aCC # pthread: Linux, etcetera # --thread-safe: KAI C++ # pthread-config: use pthread-config program (for GNU Pth library) case ${host_os} in solaris*) # On Solaris (at least, for some versions), libc contains stubbed # (non-functional) versions of the pthreads routines, so link-based # tests will erroneously succeed. (We need to link with -pthreads/-mt/ # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather # a function called by this macro, so we could check for that, but # who knows whether they'll stub that too in a future libc.) So, # we'll just look for -pthreads and -lpthread first: ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags" ;; darwin*) ax_pthread_flags="-pthread $ax_pthread_flags" ;; esac # Clang doesn't consider unrecognized options an error unless we specify # -Werror. We throw in some extra Clang-specific options to ensure that # this doesn't happen for GCC, which also accepts -Werror. { $as_echo "$as_me:${as_lineno-$LINENO}: checking if compiler needs -Werror to reject unknown flags" >&5 $as_echo_n "checking if compiler needs -Werror to reject unknown flags... " >&6; } save_CFLAGS="$CFLAGS" ax_pthread_extra_flags="-Werror" CFLAGS="$CFLAGS $ax_pthread_extra_flags -Wunknown-warning-option -Wsizeof-array-argument" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo(void); int main () { foo() ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else ax_pthread_extra_flags= { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$save_CFLAGS" if test x"$ax_pthread_ok" = xno; then for flag in $ax_pthread_flags; do case $flag in none) { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work without any flags" >&5 $as_echo_n "checking whether pthreads work without any flags... " >&6; } ;; -*) { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $flag" >&5 $as_echo_n "checking whether pthreads work with $flag... " >&6; } PTHREAD_CFLAGS="$flag" ;; pthread-config) # Extract the first word of "pthread-config", so it can be a program name with args. set dummy pthread-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ax_pthread_config+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ax_pthread_config"; then ac_cv_prog_ax_pthread_config="$ax_pthread_config" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ax_pthread_config="yes" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_ax_pthread_config" && ac_cv_prog_ax_pthread_config="no" fi fi ax_pthread_config=$ac_cv_prog_ax_pthread_config if test -n "$ax_pthread_config"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_config" >&5 $as_echo "$ax_pthread_config" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test x"$ax_pthread_config" = xno; then continue; fi PTHREAD_CFLAGS="`pthread-config --cflags`" PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$flag" >&5 $as_echo_n "checking for the pthreads library -l$flag... " >&6; } PTHREAD_LIBS="-l$flag" ;; esac save_LIBS="$LIBS" save_CFLAGS="$CFLAGS" LIBS="$PTHREAD_LIBS $LIBS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS $ax_pthread_extra_flags" # Check for various functions. We must include pthread.h, # since some functions may be macros. (On the Sequent, we # need a special flag -Kthread to make this header compile.) # We check for pthread_join because it is in -lpthread on IRIX # while pthread_create is in libc. We check for pthread_attr_init # due to DEC craziness with -lpthreads. We check for # pthread_cleanup_push because it is one of the few pthread # functions on Solaris that doesn't have a non-functional libc stub. # We try pthread_create on general principles. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include static void routine(void *a) { a = 0; } static void *start_routine(void *a) { return a; } int main () { pthread_t th; pthread_attr_t attr; pthread_create(&th, 0, start_routine, 0); pthread_join(th, 0); pthread_attr_init(&attr); pthread_cleanup_push(routine, 0); pthread_cleanup_pop(0) /* ; */ ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ax_pthread_ok=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5 $as_echo "$ax_pthread_ok" >&6; } if test "x$ax_pthread_ok" = xyes; then break; fi PTHREAD_LIBS="" PTHREAD_CFLAGS="" done fi # Various other checks: if test "x$ax_pthread_ok" = xyes; then save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for joinable pthread attribute" >&5 $as_echo_n "checking for joinable pthread attribute... " >&6; } attr_name=unknown for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { int attr = $attr; return attr /* ; */ ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : attr_name=$attr; break fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext done { $as_echo "$as_me:${as_lineno-$LINENO}: result: $attr_name" >&5 $as_echo "$attr_name" >&6; } if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then cat >>confdefs.h <<_ACEOF #define PTHREAD_CREATE_JOINABLE $attr_name _ACEOF fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if more special flags are required for pthreads" >&5 $as_echo_n "checking if more special flags are required for pthreads... " >&6; } flag=no case ${host_os} in aix* | freebsd* | darwin*) flag="-D_THREAD_SAFE";; osf* | hpux*) flag="-D_REENTRANT";; solaris*) if test "$GCC" = "yes"; then flag="-D_REENTRANT" else # TODO: What about Clang on Solaris? flag="-mt -D_REENTRANT" fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $flag" >&5 $as_echo "$flag" >&6; } if test "x$flag" != xno; then PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PTHREAD_PRIO_INHERIT" >&5 $as_echo_n "checking for PTHREAD_PRIO_INHERIT... " >&6; } if ${ax_cv_PTHREAD_PRIO_INHERIT+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { int i = PTHREAD_PRIO_INHERIT; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ax_cv_PTHREAD_PRIO_INHERIT=yes else ax_cv_PTHREAD_PRIO_INHERIT=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_PRIO_INHERIT" >&5 $as_echo "$ax_cv_PTHREAD_PRIO_INHERIT" >&6; } if test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes"; then : $as_echo "#define HAVE_PTHREAD_PRIO_INHERIT 1" >>confdefs.h fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" # More AIX lossage: compile with *_r variant if test "x$GCC" != xyes; then case $host_os in aix*) case "x/$CC" in #( x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6) : #handle absolute path differently from PATH based program lookup case "x$CC" in #( x/*) : if as_fn_executable_p ${CC}_r; then : PTHREAD_CC="${CC}_r" fi ;; #( *) : for ac_prog in ${CC}_r do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_PTHREAD_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$PTHREAD_CC"; then ac_cv_prog_PTHREAD_CC="$PTHREAD_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_PTHREAD_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi PTHREAD_CC=$ac_cv_prog_PTHREAD_CC if test -n "$PTHREAD_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CC" >&5 $as_echo "$PTHREAD_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$PTHREAD_CC" && break done test -n "$PTHREAD_CC" || PTHREAD_CC="$CC" ;; esac ;; #( *) : ;; esac ;; esac fi fi test -n "$PTHREAD_CC" || PTHREAD_CC="$CC" # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test x"$ax_pthread_ok" = xyes; then $as_echo "#define HAVE_PTHREAD 1" >>confdefs.h : else ax_pthread_ok=no fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu unsupported="" supported_core="" supported_xext="" supported_gfx="" case "$host" in #( *-*-linux*|*-*-cygwin*|*-gnu*) : WM_OSDEP="linux" ; CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=600" ;; #( *-*-freebsd*|*-k*bsd-gnu*) : WM_OSDEP="bsd" ; CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=600 -DFREEBSD" ;; #( *-*-netbsd*) : WM_OSDEP="bsd" ; CPPFLAGS="$CPPFLAGS -DNETBSD" ;; #( *-*-openbsd*) : WM_OSDEP="bsd" ; CPPFLAGS="$CPPFLAGS -DOPENBSD" ;; #( *-*-dragonfly*) : WM_OSDEP="bsd" ; CPPFLAGS="$CPPFLAGS -DDRAGONFLYBSD" ;; #( *-apple-darwin*) : WM_OSDEP="darwin" ;; #( *-*-solaris*) : WM_OSDEP="stub" ;; #( *) : WM_OSDEP="stub" ;; esac if test "x$WM_OSDEP" = "xlinux"; then WM_OSDEP_LINUX_TRUE= WM_OSDEP_LINUX_FALSE='#' else WM_OSDEP_LINUX_TRUE='#' WM_OSDEP_LINUX_FALSE= fi if test "x$WM_OSDEP" = "xbsd"; then WM_OSDEP_BSD_TRUE= WM_OSDEP_BSD_FALSE='#' else WM_OSDEP_BSD_TRUE='#' WM_OSDEP_BSD_FALSE= fi if test "x$WM_OSDEP" = "xdarwin"; then WM_OSDEP_DARWIN_TRUE= WM_OSDEP_DARWIN_FALSE='#' else WM_OSDEP_DARWIN_TRUE='#' WM_OSDEP_DARWIN_FALSE= fi if test "x$WM_OSDEP" = "xstub"; then WM_OSDEP_GENERIC_TRUE= WM_OSDEP_GENERIC_FALSE='#' else WM_OSDEP_GENERIC_TRUE='#' WM_OSDEP_GENERIC_FALSE= fi test "x$prefix" = xNONE && prefix=$ac_default_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='-I${includedir}' # Check whether --with-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 was given. if test "${with_incs_from+set}" = set; then : withval=$with_incs_from; inc_search_path="$withval $inc_search_path" fi # Check whether --enable-animations was given. if test "${enable_animations+set}" = set; then : enableval=$enable_animations; case "$enableval" in #( yes|no) : ;; #( *) : as_fn_error $? "bad value $enableval for --enable-animations" "$LINENO" 5 ;; esac else enable_animations="yes" fi if test "x$enable_animations" = "xno"; then : unsupported="$unsupported Animations" else $as_echo "#define USE_ANIMATIONS 1" >>confdefs.h supported_core="$supported_core Animations" fi # Check whether --enable-mwm-hints was given. if test "${enable_mwm_hints+set}" = set; then : enableval=$enable_mwm_hints; case "$enableval" in #( yes|no) : ;; #( *) : as_fn_error $? "bad value $enableval for --enable-mwm-hints" "$LINENO" 5 ;; esac else enable_mwm_hints="yes" fi if test "x$enable_mwm_hints" = "xno"; then : unsupported="$unsupported MWMHints" else $as_echo "#define USE_MWM_HINTS 1" >>confdefs.h supported_core="$supported_core MWMHints" fi if test "x$enable_mwm_hints" != "xno"; then USE_MWM_HINTS_TRUE= USE_MWM_HINTS_FALSE='#' else USE_MWM_HINTS_TRUE='#' USE_MWM_HINTS_FALSE= fi # Check whether --enable-boehm-gc was given. if test "${enable_boehm_gc+set}" = set; then : enableval=$enable_boehm_gc; case "$enableval" in #( yes) : with_boehm_gc=yes ;; #( no) : with_boehm_gc=no ;; #( *) : as_fn_error $? "bad value $enableval for --enable-boehm-gc" "$LINENO" 5 ;; esac else with_boehm_gc=no fi if test "x$with_boehm_gc" = "xyes"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing GC_malloc" >&5 $as_echo_n "checking for library containing GC_malloc... " >&6; } if ${ac_cv_search_GC_malloc+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char GC_malloc (); int main () { return GC_malloc (); ; return 0; } _ACEOF for ac_lib in '' gc; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_GC_malloc=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_GC_malloc+:} false; then : break fi done if ${ac_cv_search_GC_malloc+:} false; then : else ac_cv_search_GC_malloc=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_GC_malloc" >&5 $as_echo "$ac_cv_search_GC_malloc" >&6; } ac_res=$ac_cv_search_GC_malloc if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" $as_echo "#define USE_BOEHM_GC 1" >>confdefs.h else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "--enable-boehm-gc specified but test for libgc failed See \`config.log' for more details" "$LINENO" 5; } fi fi # Check whether --enable-lcov was given. if test "${enable_lcov+set}" = set; then : enableval=$enable_lcov; else enable_lcov=no fi if test "x$enable_lcov" != "xno"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking CFLAGS for gcc -fprofile-arcs -ftest-coverage" >&5 $as_echo_n "checking CFLAGS for gcc -fprofile-arcs -ftest-coverage... " >&6; } if ${ax_cv_cflags_gcc_option__fprofile_arcs__ftest_coverage+:} false; then : $as_echo_n "(cached) " >&6 else ax_cv_cflags_gcc_option__fprofile_arcs__ftest_coverage="no, unknown" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_save_CFLAGS="$CFLAGS" for ac_arg in "-pedantic -Werror % -fprofile-arcs -ftest-coverage" "-pedantic % -fprofile-arcs -ftest-coverage %% no, obsolete" # do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ax_cv_cflags_gcc_option__fprofile_arcs__ftest_coverage=`echo $ac_arg | sed -e 's,.*% *,,'` ; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done CFLAGS="$ac_save_CFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cflags_gcc_option__fprofile_arcs__ftest_coverage" >&5 $as_echo "$ax_cv_cflags_gcc_option__fprofile_arcs__ftest_coverage" >&6; } case ".$ax_cv_cflags_gcc_option__fprofile_arcs__ftest_coverage" in .ok|.ok,*) ;; .|.no|.no,*) ;; *) if echo " $CFLAGS " | grep " $ax_cv_cflags_gcc_option__fprofile_arcs__ftest_coverage " 2>&1 >/dev/null then { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS does contain \$ax_cv_cflags_gcc_option__fprofile_arcs__ftest_coverage"; } >&5 (: CFLAGS does contain $ax_cv_cflags_gcc_option__fprofile_arcs__ftest_coverage) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } else { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS \$ax_cv_cflags_gcc_option__fprofile_arcs__ftest_coverage\""; } >&5 (: CFLAGS="$CFLAGS $ax_cv_cflags_gcc_option__fprofile_arcs__ftest_coverage") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } CFLAGS="$CFLAGS $ax_cv_cflags_gcc_option__fprofile_arcs__ftest_coverage" fi ;; esac if test "x$enable_lcov" = "xyes"; then : lcov_output_directory="coverage-report" else lcov_output_directory="${enable_lcov}/coverage-report" fi fi if test "x$enable_lcov" != "xno"; then USE_LCOV_TRUE= USE_LCOV_FALSE='#' else USE_LCOV_TRUE='#' USE_LCOV_FALSE= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working memcmp" >&5 $as_echo_n "checking for working memcmp... " >&6; } if ${ac_cv_func_memcmp_working+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_memcmp_working=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { /* Some versions of memcmp are not 8-bit clean. */ char c0 = '\100', c1 = '\200', c2 = '\201'; if (memcmp(&c0, &c2, 1) >= 0 || memcmp(&c1, &c2, 1) >= 0) return 1; /* The Next x86 OpenStep bug shows up only when comparing 16 bytes or more and with at least one buffer not starting on a 4-byte boundary. William Lewis provided this test program. */ { char foo[21]; char bar[21]; int i; for (i = 0; i < 4; i++) { char *a = foo + i; char *b = bar + i; strcpy (a, "--------01111111"); strcpy (b, "--------10000000"); if (memcmp (a, b, 16) >= 0) return 1; } return 0; } ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_memcmp_working=yes else ac_cv_func_memcmp_working=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_memcmp_working" >&5 $as_echo "$ac_cv_func_memcmp_working" >&6; } test $ac_cv_func_memcmp_working = no && case " $LIBOBJS " in *" memcmp.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS memcmp.$ac_objext" ;; esac for ac_func in vprintf do : ac_fn_c_check_func "$LINENO" "vprintf" "ac_cv_func_vprintf" if test "x$ac_cv_func_vprintf" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_VPRINTF 1 _ACEOF ac_fn_c_check_func "$LINENO" "_doprnt" "ac_cv_func__doprnt" if test "x$ac_cv_func__doprnt" = xyes; then : $as_echo "#define HAVE_DOPRNT 1" >>confdefs.h fi fi done # wm_fn_lib_try_link FUNCTION LFLAGS # ---------------------------------- # Try linking against library in $LFLAGS using function named $FUNCTION # Assumes that LIBS have been saved in 'wm_save_LIBS' by caller wm_fn_lib_try_link () { LIBS="$wm_save_LIBS $2" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $1 (); int main () { return $1 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : wm_retval=0 else wm_retval=1 fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext as_fn_set_status $wm_retval } # wm_fn_lib_try_compile HEADER GVARDEF FUNC_CALL CFLAGS # ----------------------------------------------------- # Try to compile using header $HEADER and trying to call a function # using the $FUNC_CALL expression and using extra $CFLAGS in the # compiler's command line; GVARDEF can be used to include one line # in the global context of the source. # Assumes that CFLAGS have been saved in 'wm_save_CFLAGS' by caller wm_fn_lib_try_compile () { CFLAGS="$wm_save_CFLAGS $4" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$1> $2 int main () { $3; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : wm_retval=0 else wm_retval=1 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext as_fn_set_status $wm_retval } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for secure_getenv" >&5 $as_echo_n "checking for secure_getenv... " >&6; } if ${wm_cv_func_secure_getenv+:} false; then : $as_echo_n "(cached) " >&6 else wm_cv_func_secure_getenv=no wm_save_CFLAGS="$CFLAGS" for wm_arg in "% yes" "-D_GNU_SOURCE"; do if wm_fn_lib_try_compile "stdlib.h" "const char *h;" "h = secure_getenv(\"HOME\")" "`echo "$wm_arg" | sed -e 's, *%.*$,,' ` -Werror=implicit-function-declaration"; then : wm_cv_func_secure_getenv="`echo "$wm_arg" | sed -e 's,^.*% *,,' `" break fi done CFLAGS="$wm_save_CFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $wm_cv_func_secure_getenv" >&5 $as_echo "$wm_cv_func_secure_getenv" >&6; } if test "x$wm_cv_func_secure_getenv" != "xno"; then : if test "x$wm_cv_func_secure_getenv" != "xyes"; then : for wm_arg in $wm_cv_func_secure_getenv ; do if echo " $CPPFLAGS " | grep " $wm_arg " 2>&1 >/dev/null; then : # Flag already present in CPPFLAGS else CPPFLAGS="$CPPFLAGS $wm_arg" fi done fi $as_echo "#define HAVE_SECURE_GETENV 1" >>confdefs.h fi for ac_func in gethostname select poll strcasecmp strncasecmp \ setsid mallinfo mkstemp sysconf do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5 $as_echo_n "checking for library containing strerror... " >&6; } if ${ac_cv_search_strerror+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char strerror (); int main () { return strerror (); ; return 0; } _ACEOF for ac_lib in '' cposix; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_strerror=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_strerror+:} false; then : break fi done if ${ac_cv_search_strerror+:} false; then : else ac_cv_search_strerror=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strerror" >&5 $as_echo "$ac_cv_search_strerror" >&6; } ac_res=$ac_cv_search_strerror if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing nanosleep" >&5 $as_echo_n "checking for library containing nanosleep... " >&6; } if ${ac_cv_search_nanosleep+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char nanosleep (); int main () { return nanosleep (); ; return 0; } _ACEOF for ac_lib in '' rt; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_nanosleep=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_nanosleep+:} false; then : break fi done if ${ac_cv_search_nanosleep+:} false; then : else ac_cv_search_nanosleep=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_nanosleep" >&5 $as_echo "$ac_cv_search_nanosleep" >&6; } ac_res=$ac_cv_search_nanosleep if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" else as_fn_error $? "function 'nanosleep' not found, please report to wmaker-dev@googlegroups.com" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for O_NOFOLLOW" >&5 $as_echo_n "checking for O_NOFOLLOW... " >&6; } if ${wm_cv_func_open_nofollow+:} false; then : $as_echo_n "(cached) " >&6 else wm_cv_func_open_nofollow=no wm_save_CPPFLAGS="$CPPFLAGS" for wm_arg in "yes" "-D_POSIX_C_SOURCE=200809L" "-D_XOPEN_SOURCE=700" "-D_GNU_SOURCE" ; do if test "x$wm_arg" != "xyes"; then : CPPFLAGS="$wm_save_CPPFLAGS $wm_arg" fi cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main () { int fd; fd = open("/dev/null", O_RDONLY | O_NOFOLLOW); return fd; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : found=1 else found=0 fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test $found = 1; then : wm_cv_func_open_nofollow="$wm_arg" break fi done CPPFLAGS="$wm_save_CPPFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $wm_cv_func_open_nofollow" >&5 $as_echo "$wm_cv_func_open_nofollow" >&6; } case $wm_cv_func_open_nofollow in #( yes) : ;; #( no) : $as_echo "#define O_NOFOLLOW 0" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: flag O_NOFOLLOW is not defined on your platform" >&5 $as_echo "$as_me: WARNING: flag O_NOFOLLOW is not defined on your platform" >&2;} ;; #( *) : CPPFLAGS="$CPPFLAGS $wm_cv_func_open_nofollow" ;; esac # Check whether --with-libbsd was given. if test "${with_libbsd+set}" = set; then : withval=$with_libbsd; if test "x$with_libbsd" != "xno"; then : with_libbsd=bsd with_libbsd= fi else with_libbsd=bsd fi tmp_libs=$LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing strlcat" >&5 $as_echo_n "checking for library containing strlcat... " >&6; } if ${ac_cv_search_strlcat+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char strlcat (); int main () { return strlcat (); ; return 0; } _ACEOF for ac_lib in '' $with_libbsd; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_strlcat=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_strlcat+:} false; then : break fi done if ${ac_cv_search_strlcat+:} false; then : else ac_cv_search_strlcat=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strlcat" >&5 $as_echo "$ac_cv_search_strlcat" >&6; } ac_res=$ac_cv_search_strlcat if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" $as_echo "#define HAVE_STRLCAT 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing strlcpy" >&5 $as_echo_n "checking for library containing strlcpy... " >&6; } if ${ac_cv_search_strlcpy+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char strlcpy (); int main () { return strlcpy (); ; return 0; } _ACEOF for ac_lib in '' $with_libbsd; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_strlcpy=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_strlcpy+:} false; then : break fi done if ${ac_cv_search_strlcpy+:} false; then : else ac_cv_search_strlcpy=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strlcpy" >&5 $as_echo "$ac_cv_search_strlcpy" >&6; } ac_res=$ac_cv_search_strlcpy if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" $as_echo "#define HAVE_STRLCAT 1" >>confdefs.h fi LIBS=$tmp_libs LIBBSD= if test "x$ac_cv_search_strlcat" = "x-lbsd" -o "x$ac_cv_search_strlcpy" = "x-lbsd"; then : LIBBSD=-lbsd for ac_header in bsd/string.h do : ac_fn_c_check_header_mongrel "$LINENO" "bsd/string.h" "ac_cv_header_bsd_string_h" "$ac_includes_default" if test "x$ac_cv_header_bsd_string_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_BSD_STRING_H 1 _ACEOF fi done fi if test "x$WM_OSDEP" = "xbsd"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing kvm_openfiles" >&5 $as_echo_n "checking for library containing kvm_openfiles... " >&6; } if ${ac_cv_search_kvm_openfiles+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char kvm_openfiles (); int main () { return kvm_openfiles (); ; return 0; } _ACEOF for ac_lib in '' kvm; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_kvm_openfiles=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_kvm_openfiles+:} false; then : break fi done if ${ac_cv_search_kvm_openfiles+:} false; then : else ac_cv_search_kvm_openfiles=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_kvm_openfiles" >&5 $as_echo "$ac_cv_search_kvm_openfiles" >&6; } ac_res=$ac_cv_search_kvm_openfiles if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi fi for ac_header in sys/inotify.h do : ac_fn_c_check_header_mongrel "$LINENO" "sys/inotify.h" "ac_cv_header_sys_inotify_h" "$ac_includes_default" if test "x$ac_cv_header_sys_inotify_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_SYS_INOTIFY_H 1 _ACEOF $as_echo "#define HAVE_INOTIFY 1" >>confdefs.h fi done for ac_header in syslog.h do : ac_fn_c_check_header_mongrel "$LINENO" "syslog.h" "ac_cv_header_syslog_h" "$ac_includes_default" if test "x$ac_cv_header_syslog_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_SYSLOG_H 1 _ACEOF $as_echo "#define HAVE_SYSLOG 1" >>confdefs.h fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sys/wait.h that is POSIX.1 compatible" >&5 $as_echo_n "checking for sys/wait.h that is POSIX.1 compatible... " >&6; } if ${ac_cv_header_sys_wait_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #ifndef WEXITSTATUS # define WEXITSTATUS(stat_val) ((unsigned int) (stat_val) >> 8) #endif #ifndef WIFEXITED # define WIFEXITED(stat_val) (((stat_val) & 255) == 0) #endif int main () { int s; wait (&s); s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_sys_wait_h=yes else ac_cv_header_sys_wait_h=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_sys_wait_h" >&5 $as_echo "$ac_cv_header_sys_wait_h" >&6; } if test $ac_cv_header_sys_wait_h = yes; then $as_echo "#define HAVE_SYS_WAIT_H 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5 $as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } if ${ac_cv_header_time+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main () { if ((struct tm *) 0) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_time=yes else ac_cv_header_time=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5 $as_echo "$ac_cv_header_time" >&6; } if test $ac_cv_header_time = yes; then $as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h fi for ac_header in fcntl.h limits.h sys/ioctl.h libintl.h poll.h malloc.h ctype.h \ string.h strings.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 $as_echo_n "checking for an ANSI C-conforming const... " >&6; } if ${ac_cv_c_const+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __cplusplus /* Ultrix mips cc rejects this sort of thing. */ typedef int charset[2]; const charset cs = { 0, 0 }; /* SunOS 4.1.1 cc rejects this. */ char const *const *pcpcc; char **ppc; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* AIX XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; pcpcc = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++pcpcc; ppc = (char**) pcpcc; pcpcc = (char const *const *) ppc; { /* SCO 3.2v4 cc rejects this sort of thing. */ char tx; char *t = &tx; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; if (s) return 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; } bx; struct s *b = &bx; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; if (!foo) return 0; } return !cs[0] && !zero.x; #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_const=yes else ac_cv_c_const=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 $as_echo "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then $as_echo "#define const /**/" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 $as_echo_n "checking for inline... " >&6; } if ${ac_cv_c_inline+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __cplusplus typedef int foo_t; static $ac_kw foo_t static_foo () {return 0; } $ac_kw foo_t foo () {return 0; } #endif _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_inline=$ac_kw fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext test "$ac_cv_c_inline" != no && break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 $as_echo "$ac_cv_c_inline" >&6; } case $ac_cv_c_inline in inline | yes) ;; *) case $ac_cv_c_inline in no) ac_val=;; *) ac_val=$ac_cv_c_inline;; esac cat >>confdefs.h <<_ACEOF #ifndef __cplusplus #define inline $ac_val #endif _ACEOF ;; esac # wm_fn_c_try_compile_funcattr ATTRIBUTE # --------------------------------------- # Try compiling a function with the attribute ATTRIBUTE wm_fn_c_try_compile_funcattr () { cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Attribute in the prototype of the function */ int test_function(int arg) $1; /* Attribute on the function itself */ $1 int test_function(int arg) { return arg - 1; } int main () { int val; val = test_function(1); return val; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : wm_retval=0 else wm_retval=1 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext as_fn_set_status $wm_retval } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for noreturn" >&5 $as_echo_n "checking for noreturn... " >&6; } if ${wm_cv_c_noreturn+:} false; then : $as_echo_n "(cached) " >&6 else wm_cv_c_noreturn=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include /* Attribute in the prototype of the function */ noreturn int test_function(void); /* Attribute on the function itself */ noreturn int test_function(void) { _exit(1); } int main () { test_function(); ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : wm_cv_c_noreturn=stdnoreturn else for wm_attr in "__attribute__((noreturn))" "__attribute__((__noreturn__))" "__declspec(noreturn)" ; do if wm_fn_c_try_compile_funcattr "$wm_attr"; then : wm_cv_c_noreturn="$wm_attr" ; break fi done fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $wm_cv_c_noreturn" >&5 $as_echo "$wm_cv_c_noreturn" >&6; } case $wm_cv_c_noreturn in #( stdnoreturn) : $as_echo "#define HAVE_STDNORETURN 1" >>confdefs.h ;; #( no) : $as_echo "#define noreturn /**/" >>confdefs.h ;; #( *) : cat >>confdefs.h <<_ACEOF #define noreturn ${wm_cv_c_noreturn} _ACEOF ;; esac ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" if test "x$ac_cv_type_size_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define size_t unsigned int _ACEOF fi ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default" if test "x$ac_cv_type_pid_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define pid_t int _ACEOF fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5 $as_echo_n "checking return type of signal handlers... " >&6; } if ${wm_cv_type_signal+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { return *(signal (0, 0)) (0) == 1; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : wm_cv_type_signal=int else wm_cv_type_signal=void fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $wm_cv_type_signal" >&5 $as_echo "$wm_cv_type_signal" >&6; } cat >>confdefs.h <<_ACEOF #define RETSIGTYPE $wm_cv_type_signal _ACEOF if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 $as_echo "$PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 $as_echo "$ac_pt_PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 $as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } PKG_CONFIG="" fi fi if test -z "$PKG_CONFIG"; then : as_fn_error $? "pkg-config is required." "$LINENO" 5 fi if test "x$LINGUAS" != "x"; then : wm_save_LIBS="$LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gettext" >&5 $as_echo_n "checking for library containing gettext... " >&6; } if ${ac_cv_search_gettext+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char gettext (); int main () { return gettext (); ; return 0; } _ACEOF for ac_lib in '' intl; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_gettext=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_gettext+:} false; then : break fi done if ${ac_cv_search_gettext+:} false; then : else ac_cv_search_gettext=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gettext" >&5 $as_echo "$ac_cv_search_gettext" >&6; } ac_res=$ac_cv_search_gettext if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" else as_fn_error $? "support for internationalization requested, but library for gettext not found" "$LINENO" 5 fi if test "x$ac_cv_search_gettext" = "xnone required"; then : INTLIBS="" else INTLIBS="$ac_cv_search_gettext" fi for ac_func in gettext dgettext do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF else as_fn_error $? "support for internationalization requested, but gettext was not found" "$LINENO" 5 fi done LIBS="$wm_save_LIBS" # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_MSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$MSGFMT"; then ac_cv_prog_MSGFMT="$MSGFMT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_MSGFMT="msgfmt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi MSGFMT=$ac_cv_prog_MSGFMT if test -n "$MSGFMT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 $as_echo "$MSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$MSGFMT" = "x"; then : as_fn_error $? "the program 'msgfmt' is mandatory to install translation - do you miss the package 'gettext'?" "$LINENO" 5 fi $as_echo "#define I18N 1" >>confdefs.h supported_locales="" # This is the list of locales that our archive currently supports wings_locales=" bg ca cs de fr fy hu nl sk " wmaker_locales=" be bg bs ca cs da de el es et fi fr fy gl hr hu hy it ja ko ms nl no pl pt ro ru sk sv tr uk zh_CN zh_TW " wprefs_locales=" bg ca cs de es et fi fr fy hr hu it ja ko nl pt ru sk uk zh_CN zh_TW " util_locales=" de es fr fy nl pt " man_locales=" cs ru sk " # If the LINGUAS is specified as a simple '*', then we enable all the languages # we know. This is not standard, but it is useful is some cases if test "x$LINGUAS" = "x*"; then : LINGUAS="be bg bs ca cs da de el es et fi fr fy gl hr hu hy it ja ko ms nl no pl pt ro ru sk sv tr uk zh_CN zh_TW " fi # Check every language asked by user against these lists to know what to install for lang in $LINGUAS; do found=0 wm_missing="" if echo "$wings_locales" | grep " $lang " > /dev/null; then : WINGSMOFILES="$WINGSMOFILES $lang.mo" found=1 else wm_missing="$wm_missing, WINGs" fi if echo "$wmaker_locales" | grep " $lang " > /dev/null; then : WMAKERMOFILES="$WMAKERMOFILES $lang.mo" found=1 else wm_missing="$wm_missing, wmaker" fi if echo "$wprefs_locales" | grep " $lang " > /dev/null; then : WPREFSMOFILES="$WPREFSMOFILES $lang.mo" found=1 else wm_missing="$wm_missing, WPrefs" fi if echo "$util_locales" | grep " $lang " > /dev/null; then : UTILMOFILES="$UTILMOFILES $lang.mo" found=1 else wm_missing="$wm_missing, util" fi if echo "$man_locales" | grep " $lang " > /dev/null; then : MANMOFILES="$MANMOFILES $lang.mo" found=1 else wm_missing="$wm_missing, man" fi # Locale has to be supported by at least one part to be reported in the end # If it is not supported everywhere we just display a message to the user so # that he knows about it wm_missing="`echo "$wm_missing" | sed -e 's/^, //' `" if test $found = 1; then : supported_locales="$supported_locales $lang" if test "x$wm_missing" != "x"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: locale $lang is not supported in $wm_missing" >&5 $as_echo "$as_me: WARNING: locale $lang is not supported in $wm_missing" >&2;} fi else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: locale $lang is not supported at all, ignoring" >&5 $as_echo "$as_me: WARNING: locale $lang is not supported at all, ignoring" >&2;} fi done # # Post-processing the names for the man pages because we are not expecting # a "po" file but a directory name in this case MANLANGDIRS="`echo $MANMOFILES | sed -e 's,\.mo,,g' `" else INTLIBS="" WINGSMOFILES="" WMAKERMOFILES="" WPREFSMOFILES="" UTILMOFILES="" MANLANGDIRS="" supported_locales=" disabled" fi for ac_prog in xgettext do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_XGETTEXT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$XGETTEXT"; then ac_cv_prog_XGETTEXT="$XGETTEXT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_XGETTEXT="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi XGETTEXT=$ac_cv_prog_XGETTEXT if test -n "$XGETTEXT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 $as_echo "$XGETTEXT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$XGETTEXT" && break done if test "x$XGETTEXT" != "x"; then : if $XGETTEXT --help 2>&1 | grep "illegal" > /dev/null; then : { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $XGETTEXT is not GNU version, ignoring" >&5 $as_echo "$as_me: WARNING: $XGETTEXT is not GNU version, ignoring" >&2;} XGETTEXT="" fi fi if test "x$XGETTEXT" != "x"; then HAVE_XGETTEXT_TRUE= HAVE_XGETTEXT_FALSE='#' else HAVE_XGETTEXT_TRUE='#' HAVE_XGETTEXT_FALSE= fi # Check whether --with-menu-textdomain was given. if test "${with_menu_textdomain+set}" = set; then : withval=$with_menu_textdomain; case $withval in #( yes) : as_fn_error $? "you are supposed to give a domain name for '--with-menu-textdomain'" "$LINENO" 5 ;; #( no) : menutextdomain="" ;; #( *) : menutextdomain="$withval" ;; esac else menutextdomain="" fi if test "x$menutextdomain" != "x"; then : cat >>confdefs.h <<_ACEOF #define MENU_TEXTDOMAIN "$menutextdomain" _ACEOF fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for X" >&5 $as_echo_n "checking for X... " >&6; } # Check whether --with-x was given. if test "${with_x+set}" = set; then : withval=$with_x; fi # $have_x is `yes', `no', `disabled', or empty when we do not yet know. if test "x$with_x" = xno; then # The user explicitly disabled X. have_x=disabled else case $x_includes,$x_libraries in #( *\'*) as_fn_error $? "cannot use X directory names containing '" "$LINENO" 5;; #( *,NONE | NONE,*) if ${ac_cv_have_x+:} false; then : $as_echo_n "(cached) " >&6 else # One or both of the vars are not set, and there is no cached value. ac_x_includes=no ac_x_libraries=no rm -f -r conftest.dir if mkdir conftest.dir; then cd conftest.dir cat >Imakefile <<'_ACEOF' incroot: @echo incroot='${INCROOT}' usrlibdir: @echo usrlibdir='${USRLIBDIR}' libdir: @echo libdir='${LIBDIR}' _ACEOF if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. for ac_var in incroot usrlibdir libdir; do eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`" done # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. for ac_extension in a so sl dylib la dll; do if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" && test -f "$ac_im_libdir/libX11.$ac_extension"; then ac_im_usrlibdir=$ac_im_libdir; break fi done # Screen out bogus values from the imake configuration. They are # bogus both because they are the default anyway, and because # using them would break gcc on systems where it needs fixed includes. case $ac_im_incroot in /usr/include) ac_x_includes= ;; *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;; esac case $ac_im_usrlibdir in /usr/lib | /usr/lib64 | /lib | /lib64) ;; *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;; esac fi cd .. rm -f -r conftest.dir fi # Standard set of common directories for X headers. # Check X11 before X11Rn because it is often a symlink to the current release. ac_x_header_dirs=' /usr/X11/include /usr/X11R7/include /usr/X11R6/include /usr/X11R5/include /usr/X11R4/include /usr/include/X11 /usr/include/X11R7 /usr/include/X11R6 /usr/include/X11R5 /usr/include/X11R4 /usr/local/X11/include /usr/local/X11R7/include /usr/local/X11R6/include /usr/local/X11R5/include /usr/local/X11R4/include /usr/local/include/X11 /usr/local/include/X11R7 /usr/local/include/X11R6 /usr/local/include/X11R5 /usr/local/include/X11R4 /usr/X386/include /usr/x386/include /usr/XFree86/include/X11 /usr/include /usr/local/include /usr/unsupported/include /usr/athena/include /usr/local/x11r5/include /usr/lpp/Xamples/include /usr/openwin/include /usr/openwin/share/include' if test "$ac_x_includes" = no; then # Guess where to find include files, by looking for Xlib.h. # First, try using that file with no special directory specified. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # We can compile using X headers with no special include directory. ac_x_includes= else for ac_dir in $ac_x_header_dirs; do if test -r "$ac_dir/X11/Xlib.h"; then ac_x_includes=$ac_dir break fi done fi rm -f conftest.err conftest.i conftest.$ac_ext fi # $ac_x_includes = no if test "$ac_x_libraries" = no; then # Check for the libraries. # See if we find them without any special options. # Don't add to $LIBS permanently. ac_save_LIBS=$LIBS LIBS="-lX11 $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { XrmInitialize () ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : LIBS=$ac_save_LIBS # We can link X programs with no special library path. ac_x_libraries= else LIBS=$ac_save_LIBS for ac_dir in `$as_echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` do # Don't even attempt the hair of trying to link an X program! for ac_extension in a so sl dylib la dll; do if test -r "$ac_dir/libX11.$ac_extension"; then ac_x_libraries=$ac_dir break 2 fi done done fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi # $ac_x_libraries = no case $ac_x_includes,$ac_x_libraries in #( no,* | *,no | *\'*) # Didn't find X, or a directory has "'" in its name. ac_cv_have_x="have_x=no";; #( *) # Record where we found X for the cache. ac_cv_have_x="have_x=yes\ ac_x_includes='$ac_x_includes'\ ac_x_libraries='$ac_x_libraries'" esac fi ;; #( *) have_x=yes;; esac eval "$ac_cv_have_x" fi # $with_x != no if test "$have_x" != yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_x" >&5 $as_echo "$have_x" >&6; } no_x=yes else # If each of the values was on the command line, it overrides each guess. test "x$x_includes" = xNONE && x_includes=$ac_x_includes test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries # Update the cache value to reflect the command line values. ac_cv_have_x="have_x=yes\ ac_x_includes='$x_includes'\ ac_x_libraries='$x_libraries'" { $as_echo "$as_me:${as_lineno-$LINENO}: result: libraries $x_libraries, headers $x_includes" >&5 $as_echo "libraries $x_libraries, headers $x_includes" >&6; } fi if test "$no_x" = yes; then # Not all programs may use this symbol, but it does not hurt to define it. $as_echo "#define X_DISPLAY_MISSING 1" >>confdefs.h X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS= else if test -n "$x_includes"; then X_CFLAGS="$X_CFLAGS -I$x_includes" fi # It would also be nice to do this for all -L options, not just this one. if test -n "$x_libraries"; then X_LIBS="$X_LIBS -L$x_libraries" # For Solaris; some versions of Sun CC require a space after -R and # others require no space. Words are not sufficient . . . . { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -R must be followed by a space" >&5 $as_echo_n "checking whether -R must be followed by a space... " >&6; } ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries" ac_xsave_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } X_LIBS="$X_LIBS -R$x_libraries" else LIBS="$ac_xsave_LIBS -R $x_libraries" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } X_LIBS="$X_LIBS -R $x_libraries" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: neither works" >&5 $as_echo "neither works" >&6; } fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_c_werror_flag=$ac_xsave_c_werror_flag LIBS=$ac_xsave_LIBS fi # Check for system-dependent libraries X programs must link with. # Do this before checking for the system-independent R6 libraries # (-lICE), since we may need -lsocket or whatever for X linking. if test "$ISC" = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet" else # Martyn Johnson says this is needed for Ultrix, if the X # libraries were built with DECnet support. And Karl Berry says # the Alpha needs dnet_stub (dnet does not exist). ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char XOpenDisplay (); int main () { return XOpenDisplay (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet" >&5 $as_echo_n "checking for dnet_ntoa in -ldnet... " >&6; } if ${ac_cv_lib_dnet_dnet_ntoa+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldnet $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dnet_ntoa (); int main () { return dnet_ntoa (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dnet_dnet_ntoa=yes else ac_cv_lib_dnet_dnet_ntoa=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_dnet_ntoa" >&5 $as_echo "$ac_cv_lib_dnet_dnet_ntoa" >&6; } if test "x$ac_cv_lib_dnet_dnet_ntoa" = xyes; then : X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet" fi if test $ac_cv_lib_dnet_dnet_ntoa = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet_stub" >&5 $as_echo_n "checking for dnet_ntoa in -ldnet_stub... " >&6; } if ${ac_cv_lib_dnet_stub_dnet_ntoa+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldnet_stub $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dnet_ntoa (); int main () { return dnet_ntoa (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dnet_stub_dnet_ntoa=yes else ac_cv_lib_dnet_stub_dnet_ntoa=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5 $as_echo "$ac_cv_lib_dnet_stub_dnet_ntoa" >&6; } if test "x$ac_cv_lib_dnet_stub_dnet_ntoa" = xyes; then : X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub" fi fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$ac_xsave_LIBS" # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT, # to get the SysV transport functions. # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4) # needs -lnsl. # The nsl library prevents programs from opening the X display # on Irix 5.2, according to T.E. Dickey. # The functions gethostbyname, getservbyname, and inet_addr are # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking. ac_fn_c_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname" if test "x$ac_cv_func_gethostbyname" = xyes; then : fi if test $ac_cv_func_gethostbyname = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5 $as_echo_n "checking for gethostbyname in -lnsl... " >&6; } if ${ac_cv_lib_nsl_gethostbyname+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lnsl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char gethostbyname (); int main () { return gethostbyname (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_nsl_gethostbyname=yes else ac_cv_lib_nsl_gethostbyname=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5 $as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; } if test "x$ac_cv_lib_nsl_gethostbyname" = xyes; then : X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl" fi if test $ac_cv_lib_nsl_gethostbyname = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lbsd" >&5 $as_echo_n "checking for gethostbyname in -lbsd... " >&6; } if ${ac_cv_lib_bsd_gethostbyname+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lbsd $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char gethostbyname (); int main () { return gethostbyname (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_bsd_gethostbyname=yes else ac_cv_lib_bsd_gethostbyname=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_gethostbyname" >&5 $as_echo "$ac_cv_lib_bsd_gethostbyname" >&6; } if test "x$ac_cv_lib_bsd_gethostbyname" = xyes; then : X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd" fi fi fi # lieder@skyler.mavd.honeywell.com says without -lsocket, # socket/setsockopt and other routines are undefined under SCO ODT # 2.0. But -lsocket is broken on IRIX 5.2 (and is not necessary # on later versions), says Simon Leinen: it contains gethostby* # variants that don't use the name server (or something). -lsocket # must be given before -lnsl if both are needed. We assume that # if connect needs -lnsl, so does gethostbyname. ac_fn_c_check_func "$LINENO" "connect" "ac_cv_func_connect" if test "x$ac_cv_func_connect" = xyes; then : fi if test $ac_cv_func_connect = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for connect in -lsocket" >&5 $as_echo_n "checking for connect in -lsocket... " >&6; } if ${ac_cv_lib_socket_connect+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsocket $X_EXTRA_LIBS $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char connect (); int main () { return connect (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_socket_connect=yes else ac_cv_lib_socket_connect=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_connect" >&5 $as_echo "$ac_cv_lib_socket_connect" >&6; } if test "x$ac_cv_lib_socket_connect" = xyes; then : X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS" fi fi # Guillermo Gomez says -lposix is necessary on A/UX. ac_fn_c_check_func "$LINENO" "remove" "ac_cv_func_remove" if test "x$ac_cv_func_remove" = xyes; then : fi if test $ac_cv_func_remove = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for remove in -lposix" >&5 $as_echo_n "checking for remove in -lposix... " >&6; } if ${ac_cv_lib_posix_remove+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lposix $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char remove (); int main () { return remove (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_posix_remove=yes else ac_cv_lib_posix_remove=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_posix_remove" >&5 $as_echo "$ac_cv_lib_posix_remove" >&6; } if test "x$ac_cv_lib_posix_remove" = xyes; then : X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix" fi fi # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. ac_fn_c_check_func "$LINENO" "shmat" "ac_cv_func_shmat" if test "x$ac_cv_func_shmat" = xyes; then : fi if test $ac_cv_func_shmat = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shmat in -lipc" >&5 $as_echo_n "checking for shmat in -lipc... " >&6; } if ${ac_cv_lib_ipc_shmat+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lipc $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shmat (); int main () { return shmat (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_ipc_shmat=yes else ac_cv_lib_ipc_shmat=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ipc_shmat" >&5 $as_echo "$ac_cv_lib_ipc_shmat" >&6; } if test "x$ac_cv_lib_ipc_shmat" = xyes; then : X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc" fi fi fi # Check for libraries that X11R6 Xt/Xaw programs need. ac_save_LDFLAGS=$LDFLAGS test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries" # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to # check for ICE first), but we must link in the order -lSM -lICE or # we get undefined symbols. So assume we have SM if we have ICE. # These have to be linked with before -lX11, unlike the other # libraries we check for below, so use a different variable. # John Interrante, Karl Berry { $as_echo "$as_me:${as_lineno-$LINENO}: checking for IceConnectionNumber in -lICE" >&5 $as_echo_n "checking for IceConnectionNumber in -lICE... " >&6; } if ${ac_cv_lib_ICE_IceConnectionNumber+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lICE $X_EXTRA_LIBS $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char IceConnectionNumber (); int main () { return IceConnectionNumber (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_ICE_IceConnectionNumber=yes else ac_cv_lib_ICE_IceConnectionNumber=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5 $as_echo "$ac_cv_lib_ICE_IceConnectionNumber" >&6; } if test "x$ac_cv_lib_ICE_IceConnectionNumber" = xyes; then : X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE" fi LDFLAGS=$ac_save_LDFLAGS fi if test "x$no_x" = "xyes"; then : as_fn_error $? "The path for the X11 files not found! Make sure you have X and it's headers and libraries (the -devel packages in Linux) installed." "$LINENO" 5 fi X_LIBRARY_PATH=$x_libraries XCFLAGS="$X_CFLAGS" XLFLAGS="$X_LIBS" XLIBS="-lX11 $X_EXTRA_LIBS" lib_search_path="$lib_search_path $XLFLAGS" inc_search_path="$inc_search_path $XCFLAGS" # Check whether --enable-xlocale was given. if test "${enable_xlocale+set}" = set; then : enableval=$enable_xlocale; case $enableval in #( yes|no) : ;; #( *) : as_fn_error $? "bad value '$enableval' for --disable-xlocale" "$LINENO" 5 ;; esac else enable_xlocale=auto fi if test "x$enable_xlocale" != "xno"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _Xsetlocale in -lX11" >&5 $as_echo_n "checking for _Xsetlocale in -lX11... " >&6; } if ${ac_cv_lib_X11__Xsetlocale+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lX11 $XLFLAGS $XLIBS $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char _Xsetlocale (); int main () { return _Xsetlocale (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_X11__Xsetlocale=yes else ac_cv_lib_X11__Xsetlocale=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_X11__Xsetlocale" >&5 $as_echo "$ac_cv_lib_X11__Xsetlocale" >&6; } if test "x$ac_cv_lib_X11__Xsetlocale" = xyes; then : $as_echo "#define X_LOCALE 1" >>confdefs.h else if test "x$enable_xlocale" = "xyes"; then : as_fn_error $? "support for X_LOCALE was explicitely requested, but X11 lacks the appropriate function" "$LINENO" 5 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XInternAtoms in -lX11" >&5 $as_echo_n "checking for XInternAtoms in -lX11... " >&6; } if ${ac_cv_lib_X11_XInternAtoms+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lX11 $XLFLAGS $XLIBS $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char XInternAtoms (); int main () { return XInternAtoms (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_X11_XInternAtoms=yes else ac_cv_lib_X11_XInternAtoms=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_X11_XInternAtoms" >&5 $as_echo "$ac_cv_lib_X11_XInternAtoms" >&6; } if test "x$ac_cv_lib_X11_XInternAtoms" = xyes; then : $as_echo "#define HAVE_XINTERNATOMS 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XConvertCase in -lX11" >&5 $as_echo_n "checking for XConvertCase in -lX11... " >&6; } if ${ac_cv_lib_X11_XConvertCase+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lX11 $XLFLAGS $XLIBS $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char XConvertCase (); int main () { return XConvertCase (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_X11_XConvertCase=yes else ac_cv_lib_X11_XConvertCase=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_X11_XConvertCase" >&5 $as_echo "$ac_cv_lib_X11_XConvertCase" >&6; } if test "x$ac_cv_lib_X11_XConvertCase" = xyes; then : $as_echo "#define HAVE_XCONVERTCASE 1" >>confdefs.h fi # Check whether --enable-modelock was given. if test "${enable_modelock+set}" = set; then : enableval=$enable_modelock; case $enableval in #( yes|no) : ;; #( *) : as_fn_error $? "bad value '$enableval' for --enable-modelock" "$LINENO" 5 ;; esac else enable_modelock=no fi if test "x$enable_modelock" = "xyes"; then : $as_echo "#define XKB_MODELOCK 1" >>confdefs.h fi # Check whether --enable-xdnd was given. if test "${enable_xdnd+set}" = set; then : enableval=$enable_xdnd; case "$enableval" in #( yes|no) : ;; #( *) : as_fn_error $? "bad value $enableval for --disable-xdnd" "$LINENO" 5 ;; esac else enable_xdnd=yes fi if test "x$enable_xdnd" = "xyes"; then : supported_core="$supported_core XDnD" $as_echo "#define USE_DOCK_XDND 1" >>confdefs.h else unsupported="$unsupported XDnd" fi if test "x$enable_xdnd" != "xno"; then USE_DOCK_XDND_TRUE= USE_DOCK_XDND_FALSE='#' else USE_DOCK_XDND_TRUE='#' USE_DOCK_XDND_FALSE= fi # Check whether --enable-wmreplace was given. if test "${enable_wmreplace+set}" = set; then : enableval=$enable_wmreplace; case $enableval in #( yes|no) : ;; #( *) : as_fn_error $? "bad value '$enableval' for --enable-wmreplace" "$LINENO" 5 ;; esac else enable_wmreplace=no fi if test "x$enable_wmreplace" = "xyes"; then : $as_echo "#define USE_ICCCM_WMREPLACE 1" >>confdefs.h supported_xext="$supported_xext WMReplace" fi # Check whether --enable-shape was given. if test "${enable_shape+set}" = set; then : enableval=$enable_shape; case "$enableval" in #( yes|no) : ;; #( *) : as_fn_error $? "bad value $enableval for --enable-shape" "$LINENO" 5 ;; esac else enable_shape=auto fi if test "x$enable_shape" = "xno"; then : unsupported="$unsupported XShape" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XShape support library" >&5 $as_echo_n "checking for XShape support library... " >&6; } if ${wm_cv_libchk_xshape+:} false; then : $as_echo_n "(cached) " >&6 else wm_cv_libchk_xshape=no wm_save_LIBS="$LIBS" if wm_fn_lib_try_link "XShapeSelectInput" "$XLIBS -lXext"; then : wm_cv_libchk_xshape="-lXext" fi LIBS="$wm_save_LIBS" if test "x$enable_shape$wm_cv_libchk_xshape" = "xyesno"; then : as_fn_error $? "explicit XShape support requested but no library found" "$LINENO" 5 fi if test "x$wm_cv_libchk_xshape" != "xno"; then : wm_save_CFLAGS="$CFLAGS" if wm_fn_lib_try_compile "X11/extensions/shape.h" "Window win;" "XShapeSelectInput(NULL, win, 0)" ""; then : else as_fn_error $? "found $wm_cv_libchk_xshape but cannot compile using XShape header" "$LINENO" 5 fi CFLAGS="$wm_save_CFLAGS" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $wm_cv_libchk_xshape" >&5 $as_echo "$wm_cv_libchk_xshape" >&6; } if test "x$wm_cv_libchk_xshape" = "xno"; then : unsupported="$unsupported XShape" enable_shape="no" else supported_xext="$supported_xext XShape" for wm_arg in $wm_cv_libchk_xshape ; do if echo " $XLIBS " | grep " $wm_arg " 2>&1 >/dev/null; then : # Flag already present in XLIBS else XLIBS="$XLIBS $wm_arg" fi done $as_echo "#define USE_XSHAPE 1" >>confdefs.h fi fi # Check whether --enable-shm was given. if test "${enable_shm+set}" = set; then : enableval=$enable_shm; case "$enableval" in #( yes|no) : ;; #( *) : as_fn_error $? "bad value $enableval for --enable-shm" "$LINENO" 5 ;; esac else enable_shm=auto fi if test "x$enable_shm" = "xno"; then : unsupported="$unsupported XShm" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XShm support library" >&5 $as_echo_n "checking for XShm support library... " >&6; } if ${wm_cv_libchk_xshm+:} false; then : $as_echo_n "(cached) " >&6 else wm_cv_libchk_xshm=no wm_save_LIBS="$LIBS" if wm_fn_lib_try_link "XShmAttach" "$XLIBS -lXext"; then : wm_cv_libchk_xshm="-lXext" fi LIBS="$wm_save_LIBS" if test "x$enable_shm$wm_cv_libchk_xshm" = "xyesno"; then : as_fn_error $? "explicit XShm support requested but no library found" "$LINENO" 5 fi if test "x$wm_cv_libchk_xshm" != "xno"; then : wm_save_CFLAGS="$CFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { XShmSegmentInfo si; XShmAttach(NULL, &si); ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else as_fn_error $? "found $wm_cv_libchk_xshm but cannot compile using XShm header" "$LINENO" 5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { shmget(IPC_PRIVATE, 1024, IPC_CREAT); ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else as_fn_error $? "found $wm_cv_libchk_xshm but cannot compile using ipc/shm headers" "$LINENO" 5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$wm_save_CFLAGS" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $wm_cv_libchk_xshm" >&5 $as_echo "$wm_cv_libchk_xshm" >&6; } if test "x$wm_cv_libchk_xshm" = "xno"; then : unsupported="$unsupported XShm" enable_shm="no" else supported_xext="$supported_xext XShm" for wm_arg in $wm_cv_libchk_xshm ; do if echo " $XLIBS " | grep " $wm_arg " 2>&1 >/dev/null; then : # Flag already present in XLIBS else XLIBS="$XLIBS $wm_arg" fi done $as_echo "#define USE_XSHM 1" >>confdefs.h fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Xmu library" >&5 $as_echo_n "checking for Xmu library... " >&6; } if ${wm_cv_xext_xmu+:} false; then : $as_echo_n "(cached) " >&6 else wm_cv_xext_xmu=no wm_save_LIBS="$LIBS" if wm_fn_lib_try_link "XmuLookupStandardColormap" "-lXmu"; then : wm_cv_xext_xmu="-lXmu" fi LIBS="$wm_save_LIBS" if test "x$wm_cv_xext_xmu" != "xno"; then : wm_save_CFLAGS="$CFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include Display *dpy; Atom prop; int main () { XmuLookupStandardColormap(dpy, 0, 0, 0, prop, False, True); ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else as_fn_error $? "found $wm_cv_xext_xmu but cannot compile with the header" "$LINENO" 5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$wm_save_CFLAGS" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $wm_cv_xext_xmu" >&5 $as_echo "$wm_cv_xext_xmu" >&6; } if test "wm_cv_xext_xmu" = "xno"; then : LIBXMU="" unsupported="$unsupported Xmu" else $as_echo "#define HAVE_LIBXMU 1" >>confdefs.h LIBXMU="$wm_cv_xext_xmu" supported_xext="$supported_xext Xmu" fi # Check whether --enable-xinerama was given. if test "${enable_xinerama+set}" = set; then : enableval=$enable_xinerama; case "$enableval" in #( yes|no) : ;; #( *) : as_fn_error $? "bad value $enableval for --enable-xinerama" "$LINENO" 5 ;; esac else enable_xinerama=auto fi LIBXINERAMA="" if test "x$enable_xinerama" = "xno"; then : unsupported="$unsupported Xinerama" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Xinerama support library" >&5 $as_echo_n "checking for Xinerama support library... " >&6; } if ${wm_cv_xext_xinerama+:} false; then : $as_echo_n "(cached) " >&6 else wm_cv_xext_xinerama=no wm_save_LIBS="$LIBS" for wm_arg in "-lXinerama % XineramaQueryScreens" "-lXext % XineramaGetInfo % solaris" ; do if wm_fn_lib_try_link "`echo "$wm_arg" | sed -e 's,^[^%]*% *,,' | sed -e 's, *%.*$,,' `" "$XLFLAGS $XLIBS `echo "$wm_arg" | sed -e 's, *%.*$,,' `"; then : wm_cv_xext_xinerama="`echo "$wm_arg" | sed -e 's, *%[^%]*, ,' `" break fi done LIBS="$wm_save_LIBS" if test "x$wm_cv_xext_xinerama" = "xno"; then : if test "x$enable_xinerama" = "xyesno"; then : as_fn_error $? "explicit Xinerama support requested but no library found" "$LINENO" 5 fi else wm_save_CFLAGS="$CFLAGS" case `echo "$wm_cv_xext_xinerama" | sed -e 's,^[^%]*,,' ` in #( *solaris*) : wm_header="X11/extensions/xinerama.h" ; wm_fct="XineramaGetInfo(NULL, 0, NULL, NULL, &intval)" ;; #( *) : wm_header="X11/extensions/Xinerama.h" ; wm_fct="XineramaQueryScreens(NULL, &intval)" ;; esac if wm_fn_lib_try_compile "$wm_header" "int intval;" "$wm_fct" ""; then : else as_fn_error $? "found $wm_cv_xext_xinerama but cannot compile with the header" "$LINENO" 5 fi { wm_header=; unset wm_header;} { wm_fct=; unset wm_fct;} CFLAGS="$wm_save_CFLAGS" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $wm_cv_xext_xinerama" >&5 $as_echo "$wm_cv_xext_xinerama" >&6; } if test "x$wm_cv_xext_xinerama" = "xno"; then : unsupported="$unsupported Xinerama" enable_xinerama="no" else LIBXINERAMA="`echo "$wm_cv_xext_xinerama" | sed -e 's, *%.*$,,' `" $as_echo "#define USE_XINERAMA 1" >>confdefs.h case `echo "$wm_cv_xext_xinerama" | sed -e 's,^[^%]*,,' ` in #( *solaris*) : $as_echo "#define SOLARIS_XINERAMA 1" >>confdefs.h ;; #( *) : ;; esac supported_xext="$supported_xext Xinerama" fi fi # Check whether --enable-randr was given. if test "${enable_randr+set}" = set; then : enableval=$enable_randr; case "$enableval" in #( yes|no) : ;; #( *) : as_fn_error $? "bad value $enableval for --enable-randr" "$LINENO" 5 ;; esac else enable_randr=no fi if test "x$enable_randr" = "xno"; then : unsupported="$unsupported RandR" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for RandR support library" >&5 $as_echo_n "checking for RandR support library... " >&6; } if ${wm_cv_libchk_randr+:} false; then : $as_echo_n "(cached) " >&6 else wm_cv_libchk_randr=no wm_save_LIBS="$LIBS" if wm_fn_lib_try_link "XRRQueryExtension" "$XLIBS -lXrandr"; then : wm_cv_libchk_randr="-lXrandr" fi LIBS="$wm_save_LIBS" if test "x$enable_randr$wm_cv_libchk_randr" = "xyesno"; then : as_fn_error $? "explicit RandR support requested but no library found" "$LINENO" 5 fi if test "x$wm_cv_libchk_randr" != "xno"; then : wm_save_CFLAGS="$CFLAGS" if wm_fn_lib_try_compile "X11/extensions/Xrandr.h" "Display *dpy;" "XRRQueryExtension(dpy, NULL, NULL)" ""; then : else as_fn_error $? "found $wm_cv_libchk_randr but cannot compile using XRandR header" "$LINENO" 5 fi CFLAGS="$wm_save_CFLAGS" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $wm_cv_libchk_randr" >&5 $as_echo "$wm_cv_libchk_randr" >&6; } if test "x$wm_cv_libchk_randr" = "xno"; then : unsupported="$unsupported RandR" enable_randr="no" else supported_xext="$supported_xext RandR" for wm_arg in $wm_cv_libchk_randr ; do if echo " $LIBXRANDR " | grep " $wm_arg " 2>&1 >/dev/null; then : # Flag already present in LIBXRANDR else LIBXRANDR="$LIBXRANDR $wm_arg" fi done $as_echo "#define USE_RANDR 1" >>confdefs.h fi fi ac_fn_c_check_header_mongrel "$LINENO" "math.h" "ac_cv_header_math_h" "$ac_includes_default" if test "x$ac_cv_header_math_h" = xyes; then : else as_fn_error $? "header for math library not found" "$LINENO" 5 fi ac_fn_c_check_func "$LINENO" "atan" "ac_cv_func_atan" if test "x$ac_cv_func_atan" = xyes; then : LIBM= else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for atan in -lm" >&5 $as_echo_n "checking for atan in -lm... " >&6; } if ${ac_cv_lib_m_atan+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lm $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char atan (); int main () { return atan (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_m_atan=yes else ac_cv_lib_m_atan=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_atan" >&5 $as_echo "$ac_cv_lib_m_atan" >&6; } if test "x$ac_cv_lib_m_atan" = xyes; then : LIBM=-lm else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Could not find Math library" >&5 $as_echo "$as_me: WARNING: Could not find Math library" >&2;} LIBM= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if M_PI is defined in math.h" >&5 $as_echo_n "checking if M_PI is defined in math.h... " >&6; } if ${wm_cv_libm_pi+:} false; then : $as_echo_n "(cached) " >&6 else wm_cv_libm_pi="no" wm_save_CFLAGS="$CFLAGS" for wm_arg in "% yes" "-D_XOPEN_SOURCE=500" ; do if wm_fn_lib_try_compile "math.h" "double val;" "val = M_PI" "`echo "$wm_arg" | sed -e 's, *%.*$,,' `"; then : wm_cv_libm_pi="`echo "$wm_arg" | sed -e 's,^.*% *,,' `" ; break fi done CFLAGS="$wm_save_CFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $wm_cv_libm_pi" >&5 $as_echo "$wm_cv_libm_pi" >&6; } if test "x$wm_cv_libm_pi" = "xno"; then : $as_echo "#define WM_PI (3.14159265358979323846)" >>confdefs.h else $as_echo "#define WM_PI (M_PI)" >>confdefs.h if test "x$wm_cv_libm_pi" != "xyes"; then : CFLAGS="$CFLAGS $wm_cv_libm_pi" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if sinf+cosf are defined in math.h" >&5 $as_echo_n "checking if sinf+cosf are defined in math.h... " >&6; } if ${wm_cv_libm_sinf+:} false; then : $as_echo_n "(cached) " >&6 else wm_cv_libm_sinf="no" wm_save_CFLAGS="$CFLAGS" wm_save_LIBS="$LIBS" LIBS="$LIBS $LIBM" for wm_arg in "% yes" "-D_XOPEN_SOURCE=600" ; do CFLAGS="$wm_save_CFLAGS `echo "$wm_arg" | sed -e 's, *%.*$,,' `" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { float a, b; a = WM_PI; b = sqrtf(a); a = atan2f(a, b); b = cosf(a); a = sinf(b); a = powf(a, b); return (int)a; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : wm_cv_libm_sinf="`echo "$wm_arg" | sed -e 's,^.*% *,,' `" ; break fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext done LIBS="$wm_save_LIBS" CFLAGS="$wm_save_CFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $wm_cv_libm_sinf" >&5 $as_echo "$wm_cv_libm_sinf" >&6; } if test "x$wm_cv_libm_sinf" != "xno"; then : $as_echo "#define HAVE_FLOAT_MATHFUNC 1" >>confdefs.h if test "x$wm_cv_libm_sinf" != "xyes"; then : CFLAGS="$CFLAGS $wm_cd_libm_sinf" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fontconfig library" >&5 $as_echo_n "checking for fontconfig library... " >&6; } FCLIBS=`$PKG_CONFIG fontconfig --libs` if test "x$FCLIBS" = "x" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 $as_echo "not found" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: found" >&5 $as_echo "found" >&6; } fi xft=yes XFTLIBS="" if test "x$PKG_CONFIG" != x -a "`$PKG_CONFIG xft; echo $?`" = 0; then XFTCONFIG="$PKG_CONFIG xft" pkgconfig_xft=yes else # Extract the first word of "xft-config", so it can be a program name with args. set dummy xft-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_XFTCONFIG+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$XFTCONFIG"; then ac_cv_prog_XFTCONFIG="$XFTCONFIG" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_XFTCONFIG="xft-config" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi XFTCONFIG=$ac_cv_prog_XFTCONFIG if test -n "$XFTCONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XFTCONFIG" >&5 $as_echo "$XFTCONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the Xft2 library" >&5 $as_echo_n "checking for the Xft2 library... " >&6; } if test "x$XFTCONFIG" != x; then XFTLIBS=`$XFTCONFIG --libs` XFTFLAGS=`$XFTCONFIG --cflags` { $as_echo "$as_me:${as_lineno-$LINENO}: result: found" >&5 $as_echo "found" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 $as_echo "not found" >&6; } echo echo "ERROR!!! libXft2 is not installed or could not be found." echo " Xft2 is a requirement for building Window Maker." echo " Please install it (along with fontconfig) before continuing." echo exit 1 fi minXFT="2.1.0" goodxft="no" CPPFLAGS_old="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $XFTFLAGS $inc_search_path" xft_major_version=`echo $minXFT | sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` xft_minor_version=`echo $minXFT | sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` xft_micro_version=`echo $minXFT | sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether libXft is at least version $minXFT" >&5 $as_echo_n "checking whether libXft is at least version $minXFT... " >&6; } if ${ac_cv_lib_xft_version_ok+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Test version of libXft we have */ #include #include #if !defined(XFT_VERSION) || XFT_VERSION < $xft_major_version*10000 + $xft_minor_version*100 + $xft_micro_version #error libXft on this system is too old. Consider upgrading to at least $minXFT #endif int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "ac_cv_lib_xft_version_ok=yes" else eval "ac_cv_lib_xft_version_ok=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi if eval "test \"`echo '$ac_cv_lib_xft_version_ok'`\" = yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } goodxft=yes else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } goodxft=no fi CPPFLAGS="$CPPFLAGS_old" if test "$goodxft" = no; then echo echo "ERROR!!! libXft on this system is an old version." echo " Please consider upgrading to at least version ${minXFT}." echo exit 1 fi pango=no # Check whether --enable-pango was given. if test "${enable_pango+set}" = set; then : enableval=$enable_pango; pango=$enableval else pango=no fi PANGOFLAGS= PANGOLIBS= if test "$pango" = yes; then PANGOLIBS=`$PKG_CONFIG pangoxft --libs` PANGOFLAGS=`$PKG_CONFIG pangoxft --cflags` if test "x$PANGOLIBS" = "x" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 $as_echo "not found" >&6; } else $as_echo "#define USE_PANGO 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: result: found" >&5 $as_echo "found" >&6; } fi fi inc_search_path="$inc_search_path $PANGOFLAGS" # Check whether --enable-xpm was given. if test "${enable_xpm+set}" = set; then : enableval=$enable_xpm; case "$enableval" in #( yes|no) : ;; #( *) : as_fn_error $? "bad value $enableval for --enable-xpm" "$LINENO" 5 ;; esac else enable_xpm=auto fi if test "x$enable_xpm" = "xno"; then : supported_gfx="$supported_gfx builtin-XPM" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XPM support library" >&5 $as_echo_n "checking for XPM support library... " >&6; } if ${wm_cv_imgfmt_xpm+:} false; then : $as_echo_n "(cached) " >&6 else wm_cv_imgfmt_xpm=no wm_save_LIBS="$LIBS" if wm_fn_lib_try_link "XpmCreatePixmapFromData" "$XLFLAGS $XLIBS -lXpm"; then : wm_cv_imgfmt_xpm="-lXpm" ; break fi LIBS="$wm_save_LIBS" if test "x$enable_xpm$wm_cv_imgfmt_xpm" = "xyesno"; then : as_fn_error $? "explicit libXpm support requested but no library found" "$LINENO" 5 fi if test "x$wm_cv_imgfmt_xpm" != "xno"; then : wm_save_CFLAGS="$CFLAGS" if wm_fn_lib_try_compile "X11/xpm.h" "" "return 0" "$XCFLAGS"; then : else as_fn_error $? "found $wm_cv_imgfmt_xpm but could not find appropriate header - are you missing libXpm-dev package?" "$LINENO" 5 fi if wm_fn_lib_try_compile "X11/xpm.h" 'char *filename = "dummy";' 'XpmReadFileToXpmImage(filename, NULL, NULL)' "$XCFLAGS"; then : else as_fn_error $? "found $wm_cv_imgfmt_xpm and header, but cannot compile - unsupported version?" "$LINENO" 5 fi CFLAGS="$wm_save_CFLAGS" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $wm_cv_imgfmt_xpm" >&5 $as_echo "$wm_cv_imgfmt_xpm" >&6; } if test "x$wm_cv_imgfmt_xpm" = "xno"; then : supported_gfx="$supported_gfx builtin-XPM" enable_xpm="no" else supported_gfx="$supported_gfx XPM" for wm_arg in $wm_cv_imgfmt_xpm ; do if echo " $GFXLIBS " | grep " $wm_arg " 2>&1 >/dev/null; then : # Flag already present in GFXLIBS else GFXLIBS="$GFXLIBS $wm_arg" fi done $as_echo "#define USE_XPM 1" >>confdefs.h fi fi if test "x$enable_xpm" != "xno"; then USE_XPM_TRUE= USE_XPM_FALSE='#' else USE_XPM_TRUE='#' USE_XPM_FALSE= fi # for wmlib # for test ac_fn_c_check_header_mongrel "$LINENO" "libexif/exif-data.h" "ac_cv_header_libexif_exif_data_h" "$ac_includes_default" if test "x$ac_cv_header_libexif_exif_data_h" = xyes; then : ac_fn_c_check_func "$LINENO" "exif_data_new_from_file" "ac_cv_func_exif_data_new_from_file" if test "x$ac_cv_func_exif_data_new_from_file" = xyes; then : LIBEXIF= else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for exif_data_new_from_file in -lexif" >&5 $as_echo_n "checking for exif_data_new_from_file in -lexif... " >&6; } if ${ac_cv_lib_exif_exif_data_new_from_file+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lexif $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char exif_data_new_from_file (); int main () { return exif_data_new_from_file (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_exif_exif_data_new_from_file=yes else ac_cv_lib_exif_exif_data_new_from_file=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_exif_exif_data_new_from_file" >&5 $as_echo "$ac_cv_lib_exif_exif_data_new_from_file" >&6; } if test "x$ac_cv_lib_exif_exif_data_new_from_file" = xyes; then : LIBEXIF=-lexif else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Could not find EXIF library" >&5 $as_echo "$as_me: WARNING: Could not find EXIF library" >&2;} LIBEXIF= fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: header for EXIF library not found" >&5 $as_echo "$as_me: WARNING: header for EXIF library not found" >&2;} fi if test "x$LIBEXIF" != "x"; then : $as_echo "#define HAVE_EXIF 1" >>confdefs.h fi # Check whether --enable-png was given. if test "${enable_png+set}" = set; then : enableval=$enable_png; case "$enableval" in #( yes|no) : ;; #( *) : as_fn_error $? "bad value $enableval for --enable-png" "$LINENO" 5 ;; esac else enable_png=auto fi if test "x$enable_png" = "xno"; then : unsupported="$unsupported PNG" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PNG support library" >&5 $as_echo_n "checking for PNG support library... " >&6; } if ${wm_cv_libchk_png+:} false; then : $as_echo_n "(cached) " >&6 else wm_cv_libchk_png=no wm_save_LIBS="$LIBS" for wm_arg in "-lpng" "-lpng -lz" "-lpng -lz -lm" ; do if wm_fn_lib_try_link "png_get_valid" "$XLFLAGS $XLIBS $wm_arg"; then : wm_cv_libchk_png="$wm_arg" ; break fi done LIBS="$wm_save_LIBS" if test "x$enable_png$wm_cv_libchk_png" = "xyesno"; then : as_fn_error $? "explicit PNG support requested but no library found" "$LINENO" 5 fi if test "x$wm_cv_libchk_png" != "xno"; then : wm_save_CFLAGS="$CFLAGS" if wm_fn_lib_try_compile "png.h" "" "return 0" ""; then : else as_fn_error $? "found $wm_cv_libchk_png but could not find appropriate header - are you missing libpng-dev package?" "$LINENO" 5 fi if wm_fn_lib_try_compile "png.h" "" "png_get_valid(NULL, NULL, PNG_INFO_tRNS)" ""; then : else as_fn_error $? "found $wm_cv_libchk_png and header, but cannot compile - unsupported version?" "$LINENO" 5 fi CFLAGS="$wm_save_CFLAGS" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $wm_cv_libchk_png" >&5 $as_echo "$wm_cv_libchk_png" >&6; } if test "x$wm_cv_libchk_png" = "xno"; then : unsupported="$unsupported PNG" enable_png="no" else supported_gfx="$supported_gfx PNG" for wm_arg in $wm_cv_libchk_png ; do if echo " $GFXLIBS " | grep " $wm_arg " 2>&1 >/dev/null; then : # Flag already present in GFXLIBS else GFXLIBS="$GFXLIBS $wm_arg" fi done $as_echo "#define USE_PNG 1" >>confdefs.h fi fi if test "x$enable_png" != "xno"; then USE_PNG_TRUE= USE_PNG_FALSE='#' else USE_PNG_TRUE='#' USE_PNG_FALSE= fi # Check whether --enable-jpeg was given. if test "${enable_jpeg+set}" = set; then : enableval=$enable_jpeg; case "$enableval" in #( yes|no) : ;; #( *) : as_fn_error $? "bad value $enableval for --enable-jpeg" "$LINENO" 5 ;; esac else enable_jpeg=auto fi if test "x$enable_jpeg" = "xno"; then : unsupported="$unsupported JPEG" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for JPEG support library" >&5 $as_echo_n "checking for JPEG support library... " >&6; } if ${wm_cv_libchk_jpeg+:} false; then : $as_echo_n "(cached) " >&6 else wm_cv_libchk_jpeg=no wm_save_LIBS="$LIBS" if wm_fn_lib_try_link "jpeg_destroy_compress" "$XLFLAGS $XLIBS -ljpeg"; then : wm_cv_libchk_jpeg="-ljpeg" fi LIBS="$wm_save_LIBS" if test "x$enable_jpeg$wm_cv_libchk_jpeg" = "xyesno"; then : as_fn_error $? "explicit JPEG support requested but no library found" "$LINENO" 5 fi if test "x$wm_cv_libchk_jpeg" != "xno"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main () { struct jpeg_decompress_struct cinfo; jpeg_destroy_decompress(&cinfo); ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else $as_echo failed $as_echo "$as_me: error: found $wm_cv_libchk_jpeg but cannot compile header" $as_echo "$as_me: error: - does header 'jpeglib.h' exists? (is package 'jpeg-dev' missing?)" $as_echo "$as_me: error: - version of header is not supported? (report to dev team)" as_fn_error $? "JPEG library is not usable, cannot continue" "$LINENO" 5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $wm_cv_libchk_jpeg" >&5 $as_echo "$wm_cv_libchk_jpeg" >&6; } if test "x$wm_cv_libchk_jpeg" = "xno"; then : unsupported="$unsupported JPEG" enable_jpeg="no" else supported_gfx="$supported_gfx JPEG" for wm_arg in $wm_cv_libchk_jpeg ; do if echo " $GFXLIBS " | grep " $wm_arg " 2>&1 >/dev/null; then : # Flag already present in GFXLIBS else GFXLIBS="$GFXLIBS $wm_arg" fi done $as_echo "#define USE_JPEG 1" >>confdefs.h fi fi if test "x$enable_jpeg" != "xno"; then USE_JPEG_TRUE= USE_JPEG_FALSE='#' else USE_JPEG_TRUE='#' USE_JPEG_FALSE= fi # Check whether --enable-gif was given. if test "${enable_gif+set}" = set; then : enableval=$enable_gif; case "$enableval" in #( yes|no) : ;; #( *) : as_fn_error $? "bad value $enableval for --enable-gif" "$LINENO" 5 ;; esac else enable_gif=auto fi if test "x$enable_gif" = "xno"; then : unsupported="$unsupported GIF" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GIF support library" >&5 $as_echo_n "checking for GIF support library... " >&6; } if ${wm_cv_imgfmt_gif+:} false; then : $as_echo_n "(cached) " >&6 else wm_cv_imgfmt_gif=no wm_save_LIBS="$LIBS" for wm_arg in "-lgif" "-lungif" ; do if wm_fn_lib_try_link "DGifOpenFileName" "$XLFLAGS $XLIBS $wm_arg"; then : wm_cv_imgfmt_gif="$wm_arg" ; break fi done LIBS="$wm_save_LIBS" if test "x$enable_gif$wm_cv_imgfmt_gif" = "xyesno"; then : as_fn_error $? "explicit GIF support requested but no library found" "$LINENO" 5 fi if test "x$wm_cv_imgfmt_gif" != "xno"; then : wm_save_CFLAGS="$CFLAGS" if wm_fn_lib_try_compile "gif_lib.h" "" "return 0" ""; then : else as_fn_error $? "found $wm_cv_imgfmt_gif but could not find appropriate header - are you missing libgif-dev package?" "$LINENO" 5 fi if wm_fn_lib_try_compile "gif_lib.h" 'const char *filename = "dummy";' "DGifOpenFileName(filename)" ""; then : wm_cv_imgfmt_gif="$wm_cv_imgfmt_gif version:4" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include const char *filename = "dummy"; int main () { int error_code; DGifOpenFileName(filename, &error_code); ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : wm_cv_imgfmt_gif="$wm_cv_imgfmt_gif version:5" else as_fn_error $? "found $wm_cv_imgfmt_gif and header, but cannot compile - unsupported version?" "$LINENO" 5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi CFLAGS="$wm_save_CFLAGS" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $wm_cv_imgfmt_gif" >&5 $as_echo "$wm_cv_imgfmt_gif" >&6; } if test "x$wm_cv_imgfmt_gif" = "xno"; then : unsupported="$unsupported GIF" enable_gif="no" else supported_gfx="$supported_gfx GIF" for wm_arg in `echo "$wm_cv_imgfmt_gif" | sed -e 's, *version:.*,,' ` ; do if echo " $GFXLIBS " | grep " $wm_arg " 2>&1 >/dev/null; then : # Flag already present in GFXLIBS else GFXLIBS="$GFXLIBS $wm_arg" fi done cat >>confdefs.h <<_ACEOF #define USE_GIF `echo "$wm_cv_imgfmt_gif" | sed -e 's,.*version:,,' ` _ACEOF fi fi if test "x$enable_gif" != "xno"; then USE_GIF_TRUE= USE_GIF_FALSE='#' else USE_GIF_TRUE='#' USE_GIF_FALSE= fi # Check whether --enable-tiff was given. if test "${enable_tiff+set}" = set; then : enableval=$enable_tiff; case "$enableval" in #( yes|no) : ;; #( *) : as_fn_error $? "bad value $enableval for --enable-tiff" "$LINENO" 5 ;; esac else enable_tiff=auto fi if test "x$enable_tiff" = "xno"; then : unsupported="$unsupported TIFF" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TIFF support library" >&5 $as_echo_n "checking for TIFF support library... " >&6; } if ${wm_cv_libchk_tiff+:} false; then : $as_echo_n "(cached) " >&6 else wm_cv_libchk_tiff=no wm_save_LIBS="$LIBS" for wm_arg in "-ltiff" \ "-ltiff -lz" "-ltiff -lz -lm" \ "-ltiff -ljpeg" "-ltiff -ljpeg -lz" "-ltiff -ljpeg -lz -lm" \ "-ltiff -ljpeg -ljbig -lz" \ "-ltiff34" "-ltiff34 -ljpeg" "-ltiff34 -ljpeg -lm" ; do if wm_fn_lib_try_link "TIFFGetVersion" "$XLFLAGS $XLIBS $wm_arg"; then : wm_cv_libchk_tiff="$wm_arg" ; break fi done LIBS="$wm_save_LIBS" if test "x$enable_tiff$wm_cv_libchk_tiff" = "xyesno"; then : as_fn_error $? "explicit TIFF support requested but no library found" "$LINENO" 5 fi if test "x$wm_cv_libchk_tiff" != "xno"; then : wm_save_CFLAGS="$CFLAGS" if wm_fn_lib_try_compile "tiffio.h" "" "return 0" ""; then : else as_fn_error $? "found $wm_cv_libchk_tiff but could not find appropriate header - are you missing libtiff-dev package?" "$LINENO" 5 fi if wm_fn_lib_try_compile "tiffio.h" 'const char *filename = "dummy";' 'TIFFOpen(filename, "r")' ""; then : else as_fn_error $? "found $wm_cv_libchk_tiff and header, but cannot compile - unsupported version?" "$LINENO" 5 fi CFLAGS="$wm_save_CFLAGS" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $wm_cv_libchk_tiff" >&5 $as_echo "$wm_cv_libchk_tiff" >&6; } if test "x$wm_cv_libchk_tiff" = "xno"; then : unsupported="$unsupported TIFF" enable_tiff="no" else supported_gfx="$supported_gfx TIFF" for wm_arg in $wm_cv_libchk_tiff ; do if echo " $GFXLIBS " | grep " $wm_arg " 2>&1 >/dev/null; then : # Flag already present in GFXLIBS else GFXLIBS="$GFXLIBS $wm_arg" fi done $as_echo "#define USE_TIFF 1" >>confdefs.h fi fi if test "x$enable_tiff" != "xno"; then USE_TIFF_TRUE= USE_TIFF_FALSE='#' else USE_TIFF_TRUE='#' USE_TIFF_FALSE= fi # Check whether --enable-webp was given. if test "${enable_webp+set}" = set; then : enableval=$enable_webp; case "$enableval" in #( yes|no) : ;; #( *) : as_fn_error $? "bad value $enableval for --enable-webp" "$LINENO" 5 ;; esac else enable_webp=auto fi if test "x$enable_webp" = "xno"; then : unsupported="$unsupported WebP" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for WebP support library" >&5 $as_echo_n "checking for WebP support library... " >&6; } if ${wm_cv_imgfmt_webp+:} false; then : $as_echo_n "(cached) " >&6 else wm_cv_imgfmt_webp=no wm_save_LIBS="$LIBS" LIBS="$LIBS -lwebp" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { WebPGetFeatures(NULL, 1024, NULL); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : wm_cv_imgfmt_webp="-lwebp" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$wm_save_LIBS" if test "x$enable_webp$wm_cv_imgfmt_webp" = "xyesno"; then : as_fn_error $? "explicit WebP support requested but no library found" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $wm_cv_imgfmt_webp" >&5 $as_echo "$wm_cv_imgfmt_webp" >&6; } if test "x$wm_cv_imgfmt_webp" = "xno"; then : unsupported="$unsupported WebP" enable_webp="no" else supported_gfx="$supported_gfx WebP" for wm_arg in $wm_cv_imgfmt_webp ; do if echo " $GFXLIBS " | grep " $wm_arg " 2>&1 >/dev/null; then : # Flag already present in GFXLIBS else GFXLIBS="$GFXLIBS $wm_arg" fi done $as_echo "#define USE_WEBP 1" >>confdefs.h fi fi if test "x$enable_webp" != "xno"; then USE_WEBP_TRUE= USE_WEBP_FALSE='#' else USE_WEBP_TRUE='#' USE_WEBP_FALSE= fi # Check whether --enable-magick was given. if test "${enable_magick+set}" = set; then : enableval=$enable_magick; case "$enableval" in #( yes|no) : ;; #( *) : as_fn_error $? "bad value $enableval for --enable-magick" "$LINENO" 5 ;; esac else enable_magick=auto fi if test "x$enable_magick" = "xno"; then : unsupported="$unsupported Magick" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Magick support library" >&5 $as_echo_n "checking for Magick support library... " >&6; } if ${wm_cv_libchk_magick+:} false; then : $as_echo_n "(cached) " >&6 else wm_cv_libchk_magick=no if test "x$PKG_CONFIG" = "x"; then : if test -z "$magickwand"; then ac_path_magickwand_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in MagickWand-config; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_magickwand="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_magickwand" || continue wm_cv_libchk_magick_cflags=`$ac_path_magickwand --cflags` wm_cv_libchk_magick_libs=`$ac_path_magickwand --ldflags` wm_cv_libchk_magick=magickwand $ac_path_magickwand_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_magickwand"; then : fi else ac_cv_path_magickwand=$magickwand fi else if $PKG_CONFIG --exists MagickWand; then : wm_cv_libchk_magick_cflags=`$PKG_CONFIG --cflags MagickWand` wm_cv_libchk_magick_libs=`$PKG_CONFIG --libs MagickWand` wm_cv_libchk_magick=pkgconfig fi fi if test "x$wm_cv_libchk_magick" = "xno"; then : if test "x$enable_magick" != "xauto"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 $as_echo "not found" >&6; } as_fn_error $? "explicit Magick support requested but configuration not found with pkg-config and MagickWand-config - are you missing libmagickwand-dev package?" "$LINENO" 5 fi else wm_save_LIBS="$LIBS" if wm_fn_lib_try_link "NewMagickWand" "$wm_cv_libchk_magick_libs"; then : wm_cv_libchk_magick=maybe fi LIBS="$wm_save_LIBS" if test "x$wm_cv_libchk_magick" != "xmaybe"; then : as_fn_error $? "MagickWand was found but the library does not link" "$LINENO" 5 fi wm_save_CFLAGS="$CFLAGS" if wm_fn_lib_try_compile "MagickWand/MagickWand.h" "MagickWand *wand;" "wand = NewMagickWand()" "$wm_cv_libchk_magick_cflags"; then : wm_cv_libchk_magick="$wm_cv_libchk_magick_cflags % $wm_cv_libchk_magick_libs" else as_fn_error $? "found MagickWand library but could not compile its header" "$LINENO" 5 fi CFLAGS="$wm_save_CFLAGS" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $wm_cv_libchk_magick" >&5 $as_echo "$wm_cv_libchk_magick" >&6; } if test "x$wm_cv_libchk_magick" = "xno"; then : unsupported="$unsupported Magick" enable_magick="no" else supported_gfx="$supported_gfx Magick" MAGICKFLAGS=`echo "$wm_cv_libchk_magick" | sed -e 's, *%.*$,,' ` MAGICKLIBS=`echo "$wm_cv_libchk_magick" | sed -e 's,^.*% *,,' ` $as_echo "#define USE_MAGICK 1" >>confdefs.h fi fi if test "x$enable_magick" != "xno"; then USE_MAGICK_TRUE= USE_MAGICK_FALSE='#' else USE_MAGICK_TRUE='#' USE_MAGICK_FALSE= fi # The PPM format is always enabled because we have built-in support for the format # We are not using any external library like libppm supported_gfx="$supported_gfx builtin-PPM" # Choice of the default format for icons if test "x$enable_tiff" != "xno"; then : ICONEXT="tiff" else ICONEXT="xpm" fi LIBRARY_SEARCH_PATH="$lib_search_path" HEADER_SEARCH_PATH="$inc_search_path" if test "x$ICONEXT" = "xxpm"; then ICON_EXT_XPM_TRUE= ICON_EXT_XPM_FALSE='#' else ICON_EXT_XPM_TRUE='#' ICON_EXT_XPM_FALSE= fi if test "x$ICONEXT" = "xtiff"; then ICON_EXT_TIFF_TRUE= ICON_EXT_TIFF_FALSE='#' else ICON_EXT_TIFF_TRUE='#' ICON_EXT_TIFF_FALSE= fi for ac_header in stdlib.h do : ac_fn_c_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default" if test "x$ac_cv_header_stdlib_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STDLIB_H 1 _ACEOF fi done # Check whether --with-pixmapdir was given. if test "${with_pixmapdir+set}" = set; then : withval=$with_pixmapdir; case $withval in #( yes|no) : as_fn_error $? "bad value '$withval' for --with-pixmapdir, expected a path" "$LINENO" 5 ;; #( /*) : ;; #( \$*) : ;; #( *) : as_fn_error $? "bad path '$withval' for pixmapdir, expecting an absolute path" "$LINENO" 5 ;; esac else with_pixmapdir="" fi if test "x$with_pixmapdir" != "x"; then : pixmapdir="$with_pixmapdir" else pixmapdir='${datadir}/pixmaps' fi # Check whether --with-gnustepdir was given. if test "${with_gnustepdir+set}" = set; then : withval=$with_gnustepdir; case $withval in #( yes|no) : as_fn_error $? "bad value '$withval' for --with-gnustepdir, expected a path" "$LINENO" 5 ;; #( /*) : ;; #( \$*) : ;; #( *) : as_fn_error $? "bad path '$withval' for gnustepdir, expecting an absolute path" "$LINENO" 5 ;; esac else with_gnustepdir="$GNUSTEP_LOCAL_ROOT" fi if test "x$with_gnustepdir" = "x"; then : wprefs_base_dir=${prefix} wprefs_datadir="${datadir}/WPrefs" wprefs_bindir="${bindir}" else wprefs_base_dir="$with_gnustepdir/Applications" wprefs_datadir="$wprefs_base_dir/WPrefs.app" wprefs_bindir="$wprefs_base_dir/WPrefs.app" fi # Check whether --with-defsdatadir was given. if test "${with_defsdatadir+set}" = set; then : withval=$with_defsdatadir; case $withval in #( yes|no) : as_fn_error $? "bad value '$withval' for --with-defsdatadir, expected a path" "$LINENO" 5 ;; #( /*) : ;; #( \$*) : ;; #( *) : as_fn_error $? "bad path '$withval' for defsdatadir, expecting an absolute path" "$LINENO" 5 ;; esac else with_defsdatadir="" fi if test "x$with_defsdatadir" != "x"; then : defsdatadir="$with_defsdatadir" else defsdatadir='${sysconfdir}/WindowMaker' fi # Check whether --enable-usermenu was given. if test "${enable_usermenu+set}" = set; then : enableval=$enable_usermenu; case $enableval in #( yes|no) : ;; #( *) : as_fn_error $? "bad value '$enableval' for --enable-usermenu" "$LINENO" 5 ;; esac else enable_usermenu=no fi if test "x$enable_usermenu" = "xyes"; then : $as_echo "#define USER_MENU 1" >>confdefs.h fi # Check whether --enable-ld-version-script was given. if test "${enable_ld_version_script+set}" = set; then : enableval=$enable_ld_version_script; have_ld_version_script=$enableval else { $as_echo "$as_me:${as_lineno-$LINENO}: checking if LD -Wl,--version-script works" >&5 $as_echo_n "checking if LD -Wl,--version-script works... " >&6; } if ${gl_cv_sys_ld_version_script+:} false; then : $as_echo_n "(cached) " >&6 else gl_cv_sys_ld_version_script=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -Wl,--version-script=conftest.map" echo foo >conftest.map cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : else cat > conftest.map <conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gl_cv_sys_ld_version_script=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext rm -f conftest.map LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_sys_ld_version_script" >&5 $as_echo "$gl_cv_sys_ld_version_script" >&6; } have_ld_version_script=$gl_cv_sys_ld_version_script fi if test "$have_ld_version_script" = yes; then HAVE_LD_VERSION_SCRIPT_TRUE= HAVE_LD_VERSION_SCRIPT_FALSE='#' else HAVE_LD_VERSION_SCRIPT_TRUE='#' HAVE_LD_VERSION_SCRIPT_FALSE= fi # WM_CFLAGS_GCC_OPTION_POSTPONED: add compiler flags at the end of the autoconf flow if test "x$debug" = "xyes"; then : case $wm_cv_c_checks_compopt_Wstrict_prototypes in #( no*) : ;; #( *) : if echo " $CFLAGS " | grep " $wm_cv_c_checks_compopt_Wstrict_prototypes " 2>&1 > /dev/null; then : { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: option $wm_cv_c_checks_compopt_Wstrict_prototypes already present in \$CFLAGS, not appended" >&5 $as_echo "$as_me: WARNING: option $wm_cv_c_checks_compopt_Wstrict_prototypes already present in \$CFLAGS, not appended" >&2;} else CFLAGS="$CFLAGS $wm_cv_c_checks_compopt_Wstrict_prototypes" fi ;; esac case $wm_cv_c_checks_compopt_Wunused_macros in #( no*) : ;; #( *) : if echo " $CFLAGS " | grep " $wm_cv_c_checks_compopt_Wunused_macros " 2>&1 > /dev/null; then : { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: option $wm_cv_c_checks_compopt_Wunused_macros already present in \$CFLAGS, not appended" >&5 $as_echo "$as_me: WARNING: option $wm_cv_c_checks_compopt_Wunused_macros already present in \$CFLAGS, not appended" >&2;} else CFLAGS="$CFLAGS $wm_cv_c_checks_compopt_Wunused_macros" fi ;; esac fi ac_config_files="$ac_config_files Makefile wrlib/Makefile wrlib/tests/Makefile WINGs/Makefile WINGs/WINGs/Makefile WINGs/po/Makefile WINGs/Documentation/Makefile WINGs/Resources/Makefile WINGs/Extras/Makefile WINGs/Examples/Makefile WINGs/Tests/Makefile src/Makefile src/wconfig.h po/Makefile doc/Makefile doc/build/Makefile doc/sk/Makefile doc/cs/Makefile doc/ru/Makefile WindowMaker/Makefile WindowMaker/Backgrounds/Makefile WindowMaker/Defaults/Makefile WindowMaker/IconSets/Makefile WindowMaker/Icons/Makefile WindowMaker/Pixmaps/Makefile WindowMaker/Styles/Makefile WindowMaker/Themes/Makefile WPrefs.app/Makefile WPrefs.app/po/Makefile WPrefs.app/tiff/Makefile WPrefs.app/xpm/Makefile util/Makefile util/po/Makefile wmlib/Makefile test/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs { $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 $as_echo_n "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 $as_echo "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${USE_NESTED_FUNC_TRUE}" && test -z "${USE_NESTED_FUNC_FALSE}"; then as_fn_error $? "conditional \"USE_NESTED_FUNC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${WM_OSDEP_LINUX_TRUE}" && test -z "${WM_OSDEP_LINUX_FALSE}"; then as_fn_error $? "conditional \"WM_OSDEP_LINUX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${WM_OSDEP_BSD_TRUE}" && test -z "${WM_OSDEP_BSD_FALSE}"; then as_fn_error $? "conditional \"WM_OSDEP_BSD\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${WM_OSDEP_DARWIN_TRUE}" && test -z "${WM_OSDEP_DARWIN_FALSE}"; then as_fn_error $? "conditional \"WM_OSDEP_DARWIN\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${WM_OSDEP_GENERIC_TRUE}" && test -z "${WM_OSDEP_GENERIC_FALSE}"; then as_fn_error $? "conditional \"WM_OSDEP_GENERIC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${USE_MWM_HINTS_TRUE}" && test -z "${USE_MWM_HINTS_FALSE}"; then as_fn_error $? "conditional \"USE_MWM_HINTS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${USE_LCOV_TRUE}" && test -z "${USE_LCOV_FALSE}"; then as_fn_error $? "conditional \"USE_LCOV\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_XGETTEXT_TRUE}" && test -z "${HAVE_XGETTEXT_FALSE}"; then as_fn_error $? "conditional \"HAVE_XGETTEXT\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${USE_DOCK_XDND_TRUE}" && test -z "${USE_DOCK_XDND_FALSE}"; then as_fn_error $? "conditional \"USE_DOCK_XDND\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${USE_XPM_TRUE}" && test -z "${USE_XPM_FALSE}"; then as_fn_error $? "conditional \"USE_XPM\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${USE_PNG_TRUE}" && test -z "${USE_PNG_FALSE}"; then as_fn_error $? "conditional \"USE_PNG\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${USE_JPEG_TRUE}" && test -z "${USE_JPEG_FALSE}"; then as_fn_error $? "conditional \"USE_JPEG\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${USE_GIF_TRUE}" && test -z "${USE_GIF_FALSE}"; then as_fn_error $? "conditional \"USE_GIF\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${USE_TIFF_TRUE}" && test -z "${USE_TIFF_FALSE}"; then as_fn_error $? "conditional \"USE_TIFF\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${USE_WEBP_TRUE}" && test -z "${USE_WEBP_FALSE}"; then as_fn_error $? "conditional \"USE_WEBP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${USE_MAGICK_TRUE}" && test -z "${USE_MAGICK_FALSE}"; then as_fn_error $? "conditional \"USE_MAGICK\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ICON_EXT_XPM_TRUE}" && test -z "${ICON_EXT_XPM_FALSE}"; then as_fn_error $? "conditional \"ICON_EXT_XPM\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ICON_EXT_TIFF_TRUE}" && test -z "${ICON_EXT_TIFF_FALSE}"; then as_fn_error $? "conditional \"ICON_EXT_TIFF\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_LD_VERSION_SCRIPT_TRUE}" && test -z "${HAVE_LD_VERSION_SCRIPT_FALSE}"; then as_fn_error $? "conditional \"HAVE_LD_VERSION_SCRIPT\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by WindowMaker $as_me 0.95.9, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to . WindowMaker home page: ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ WindowMaker config.status 0.95.9 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } # Quote evaled strings. for var in SHELL \ ECHO \ PATH_SEPARATOR \ SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ OBJDUMP \ deplibs_check_method \ file_magic_cmd \ file_magic_glob \ want_nocaseglob \ DLLTOOL \ sharedlib_from_linklib_cmd \ AR \ AR_FLAGS \ archiver_list_spec \ STRIP \ RANLIB \ CC \ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_import \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ lt_cv_nm_interface \ nm_file_list_spec \ lt_cv_truncate_bin \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_pic \ lt_prog_compiler_wl \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ MANIFEST_TOOL \ DSYMUTIL \ NMEDIT \ LIPO \ OTOOL \ OTOOL64 \ shrext_cmds \ export_dynamic_flag_spec \ whole_archive_flag_spec \ compiler_needs_object \ with_gnu_ld \ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ hardcode_libdir_separator \ exclude_expsyms \ include_expsyms \ file_list_spec \ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ install_override_mode \ finish_eval \ old_striplib \ striplib; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in reload_cmds \ old_postinstall_cmds \ old_postuninstall_cmds \ old_archive_cmds \ extract_expsyms_cmds \ old_archive_from_new_cmds \ old_archive_from_expsyms_cmds \ archive_cmds \ archive_expsym_cmds \ module_cmds \ module_expsym_cmds \ export_symbols_cmds \ prelink_cmds \ postlink_cmds \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ configure_time_dlsearch_path \ configure_time_lt_sys_library_path; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done ac_aux_dir='$ac_aux_dir' # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi PACKAGE='$PACKAGE' VERSION='$VERSION' RM='$RM' ofile='$ofile' _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "wrlib/Makefile") CONFIG_FILES="$CONFIG_FILES wrlib/Makefile" ;; "wrlib/tests/Makefile") CONFIG_FILES="$CONFIG_FILES wrlib/tests/Makefile" ;; "WINGs/Makefile") CONFIG_FILES="$CONFIG_FILES WINGs/Makefile" ;; "WINGs/WINGs/Makefile") CONFIG_FILES="$CONFIG_FILES WINGs/WINGs/Makefile" ;; "WINGs/po/Makefile") CONFIG_FILES="$CONFIG_FILES WINGs/po/Makefile" ;; "WINGs/Documentation/Makefile") CONFIG_FILES="$CONFIG_FILES WINGs/Documentation/Makefile" ;; "WINGs/Resources/Makefile") CONFIG_FILES="$CONFIG_FILES WINGs/Resources/Makefile" ;; "WINGs/Extras/Makefile") CONFIG_FILES="$CONFIG_FILES WINGs/Extras/Makefile" ;; "WINGs/Examples/Makefile") CONFIG_FILES="$CONFIG_FILES WINGs/Examples/Makefile" ;; "WINGs/Tests/Makefile") CONFIG_FILES="$CONFIG_FILES WINGs/Tests/Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "src/wconfig.h") CONFIG_FILES="$CONFIG_FILES src/wconfig.h" ;; "po/Makefile") CONFIG_FILES="$CONFIG_FILES po/Makefile" ;; "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; "doc/build/Makefile") CONFIG_FILES="$CONFIG_FILES doc/build/Makefile" ;; "doc/sk/Makefile") CONFIG_FILES="$CONFIG_FILES doc/sk/Makefile" ;; "doc/cs/Makefile") CONFIG_FILES="$CONFIG_FILES doc/cs/Makefile" ;; "doc/ru/Makefile") CONFIG_FILES="$CONFIG_FILES doc/ru/Makefile" ;; "WindowMaker/Makefile") CONFIG_FILES="$CONFIG_FILES WindowMaker/Makefile" ;; "WindowMaker/Backgrounds/Makefile") CONFIG_FILES="$CONFIG_FILES WindowMaker/Backgrounds/Makefile" ;; "WindowMaker/Defaults/Makefile") CONFIG_FILES="$CONFIG_FILES WindowMaker/Defaults/Makefile" ;; "WindowMaker/IconSets/Makefile") CONFIG_FILES="$CONFIG_FILES WindowMaker/IconSets/Makefile" ;; "WindowMaker/Icons/Makefile") CONFIG_FILES="$CONFIG_FILES WindowMaker/Icons/Makefile" ;; "WindowMaker/Pixmaps/Makefile") CONFIG_FILES="$CONFIG_FILES WindowMaker/Pixmaps/Makefile" ;; "WindowMaker/Styles/Makefile") CONFIG_FILES="$CONFIG_FILES WindowMaker/Styles/Makefile" ;; "WindowMaker/Themes/Makefile") CONFIG_FILES="$CONFIG_FILES WindowMaker/Themes/Makefile" ;; "WPrefs.app/Makefile") CONFIG_FILES="$CONFIG_FILES WPrefs.app/Makefile" ;; "WPrefs.app/po/Makefile") CONFIG_FILES="$CONFIG_FILES WPrefs.app/po/Makefile" ;; "WPrefs.app/tiff/Makefile") CONFIG_FILES="$CONFIG_FILES WPrefs.app/tiff/Makefile" ;; "WPrefs.app/xpm/Makefile") CONFIG_FILES="$CONFIG_FILES WPrefs.app/xpm/Makefile" ;; "util/Makefile") CONFIG_FILES="$CONFIG_FILES util/Makefile" ;; "util/po/Makefile") CONFIG_FILES="$CONFIG_FILES util/po/Makefile" ;; "wmlib/Makefile") CONFIG_FILES="$CONFIG_FILES wmlib/Makefile" ;; "test/Makefile") CONFIG_FILES="$CONFIG_FILES test/Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. # TODO: see whether this extra hack can be removed once we start # requiring Autoconf 2.70 or later. case $CONFIG_FILES in #( *\'*) : eval set x "$CONFIG_FILES" ;; #( *) : set x $CONFIG_FILES ;; #( *) : ;; esac shift # Used to flag and report bootstrapping failures. am_rc=0 for am_mf do # Strip MF so we end up with the name of the file. am_mf=`$as_echo "$am_mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile which includes # dependency-tracking related rules and includes. # Grep'ing the whole file directly is not great: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ || continue am_dirpart=`$as_dirname -- "$am_mf" || $as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$am_mf" : 'X\(//\)[^/]' \| \ X"$am_mf" : 'X\(//\)$' \| \ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$am_mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` am_filepart=`$as_basename -- "$am_mf" || $as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ X"$am_mf" : 'X\(//\)$' \| \ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$am_mf" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` { echo "$as_me:$LINENO: cd "$am_dirpart" \ && sed -e '/# am--include-marker/d' "$am_filepart" \ | $MAKE -f - am--depfiles" >&5 (cd "$am_dirpart" \ && sed -e '/# am--include-marker/d' "$am_filepart" \ | $MAKE -f - am--depfiles) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } || am_rc=$? done if test $am_rc -ne 0; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "Something went wrong bootstrapping makefile fragments for automatic dependency tracking. Try re-running configure with the '--disable-dependency-tracking' option to at least be able to build the package (albeit without support for automatic dependency tracking). See \`config.log' for more details" "$LINENO" 5; } fi { am_dirpart=; unset am_dirpart;} { am_filepart=; unset am_filepart;} { am_mf=; unset am_mf;} { am_rc=; unset am_rc;} rm -f conftest-deps.mk } ;; "libtool":C) # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi cfgfile=${ofile}T trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # Generated automatically by $as_me ($PACKAGE) $VERSION # NOTE: Changes made to this file will be lost: look at ltmain.sh. # Provide generalized library-building support services. # Written by Gordon Matzigkeit, 1996 # Copyright (C) 2014 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool 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 of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program or library that is built # using GNU Libtool, you may include this file under the same # distribution terms that you use for the rest of that program. # # GNU Libtool 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, see . # The names of the tagged configurations supported by this script. available_tags='' # Configured defaults for sys_lib_dlsearch_path munging. : \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} # ### BEGIN LIBTOOL CONFIG # Which release of libtool.m4 was used? macro_version=$macro_version macro_revision=$macro_revision # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # What type of objects to build. pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # Shared archive member basename,for filename based shared library versioning on AIX. shared_archive_member_spec=$shared_archive_member_spec # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # An echo program that protects backslashes. ECHO=$lt_ECHO # The PATH separator for the build system. PATH_SEPARATOR=$lt_PATH_SEPARATOR # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="\$SED -e 1s/^X//" # A grep program that handles long lines. GREP=$lt_GREP # An ERE matcher. EGREP=$lt_EGREP # A literal string matcher. FGREP=$lt_FGREP # A BSD- or MS-compatible name lister. NM=$lt_NM # Whether we need soft or hard links. LN_S=$lt_LN_S # What is the maximum length of a command? max_cmd_len=$max_cmd_len # Object file suffix (normally "o"). objext=$ac_objext # Executable file suffix (normally ""). exeext=$exeext # whether the shell understands "unset". lt_unset=$lt_unset # turn spaces into newlines. SP2NL=$lt_lt_SP2NL # turn newlines into spaces. NL2SP=$lt_lt_NL2SP # convert \$build file names to \$host format. to_host_file_cmd=$lt_cv_to_host_file_cmd # convert \$build files to toolchain format. to_tool_file_cmd=$lt_cv_to_tool_file_cmd # An object symbol dumper. OBJDUMP=$lt_OBJDUMP # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method = "file_magic". file_magic_cmd=$lt_file_magic_cmd # How to find potential files when deplibs_check_method = "file_magic". file_magic_glob=$lt_file_magic_glob # Find potential files using nocaseglob when deplibs_check_method = "file_magic". want_nocaseglob=$lt_want_nocaseglob # DLL creation program. DLLTOOL=$lt_DLLTOOL # Command to associate shared and link libraries. sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd # The archiver. AR=$lt_AR # Flags to create an archive. AR_FLAGS=$lt_AR_FLAGS # How to feed a file listing to the archiver. archiver_list_spec=$lt_archiver_list_spec # A symbol stripping program. STRIP=$lt_STRIP # Commands used to install an old-style archive. RANLIB=$lt_RANLIB old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Whether to use a lock for old archive extraction. lock_old_archive_extraction=$lock_old_archive_extraction # A C compiler. LTCC=$lt_CC # LTCC compiler flags. LTCFLAGS=$lt_CFLAGS # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration. global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm into a list of symbols to manually relocate. global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import # Transform the output of nm in a C name address pair. global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix # The name lister interface. nm_interface=$lt_lt_cv_nm_interface # Specify filename containing input files for \$NM. nm_file_list_spec=$lt_nm_file_list_spec # The root where to search for dependent libraries,and where our libraries should be installed. lt_sysroot=$lt_sysroot # Command to truncate a binary pipe. lt_truncate_bin=$lt_lt_cv_truncate_bin # The name of the directory that contains temporary libtool files. objdir=$objdir # Used to examine libraries when file_magic_cmd begins with "file". MAGIC_CMD=$MAGIC_CMD # Must we lock files when doing compilation? need_locks=$lt_need_locks # Manifest tool. MANIFEST_TOOL=$lt_MANIFEST_TOOL # Tool to manipulate archived DWARF debug symbol files on Mac OS X. DSYMUTIL=$lt_DSYMUTIL # Tool to change global to local symbols on Mac OS X. NMEDIT=$lt_NMEDIT # Tool to manipulate fat objects and archives on Mac OS X. LIPO=$lt_LIPO # ldd/readelf like tool for Mach-O binaries on Mac OS X. OTOOL=$lt_OTOOL # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. OTOOL64=$lt_OTOOL64 # Old archive suffix (normally "a"). libext=$libext # Shared library suffix (normally ".so"). shrext_cmds=$lt_shrext_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Variables whose values should be saved in libtool wrapper scripts and # restored at link time. variables_saved_for_relink=$lt_variables_saved_for_relink # Do we need the "lib" prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Library versioning type. version_type=$version_type # Shared library runtime path variable. runpath_var=$runpath_var # Shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Permission mode override for installation of shared libraries. install_override_mode=$lt_install_override_mode # Command to use after installation of a shared archive. postinstall_cmds=$lt_postinstall_cmds # Command to use after uninstallation of a shared archive. postuninstall_cmds=$lt_postuninstall_cmds # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # As "finish_cmds", except a single script fragment to be evaled but # not shown. finish_eval=$lt_finish_eval # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Detected run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path # Explicit LT_SYS_LIBRARY_PATH set during ./configure time. configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # The linker used to build libraries. LD=$lt_LD # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds # A language specific compiler. CC=$lt_compiler # Is the compiler the GNU compiler? with_gcc=$GCC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \$shlibpath_var if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds # Specify filename containing input files. file_list_spec=$lt_file_list_spec # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # ### END LIBTOOL CONFIG _LT_EOF cat <<'_LT_EOF' >> "$cfgfile" # ### BEGIN FUNCTIONS SHARED WITH CONFIGURE # func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x$2 in x) ;; *:) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" ;; x:*) eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" ;; *::*) eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" ;; *) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" ;; esac } # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in $*""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } # ### END FUNCTIONS SHARED WITH CONFIGURE _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac ltmain=$ac_aux_dir/ltmain.sh # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi echo echo "Window Maker was configured as follows:" echo echo "Installation path prefix : $prefix" echo "Installation path for binaries : $_bindir" echo "Installation path for libraries : $_libdir" echo "Installation path for WPrefs.app : $wprefs_base_dir" | sed -e 's|\${prefix}|'"$prefix|" echo "Supported core features: :$supported_core" echo "Supported X extensions: :$supported_xext" echo "Supported graphic format libraries :$supported_gfx" echo "Unsupported features :$unsupported" echo "Antialiased text support in WINGs : $xft" echo "Pango text layout support in WINGs : $pango" echo "Translated languages to support :$supported_locales" if test "x$debug" = "xyes"; then : $as_echo "Debug enabled: CFLAGS = $CFLAGS" fi echo if test "x$wm_cv_prog_cc_nestedfunc" != "xyes"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Your compiler does not support Nested Function, work-around enabled" >&5 $as_echo "$as_me: WARNING: Your compiler does not support Nested Function, work-around enabled" >&2;} fi if test "x$supported_locales" = "x"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: No language from \$LINGUAS are supported" >&5 $as_echo "$as_me: WARNING: No language from \$LINGUAS are supported" >&2;} fi if test "x$enable_jpeg" = xno; then : $as_echo "WARNING WARNING WARNING WARNING WARNING WARNING WARNING" $as_echo $as_echo "JPEG support will not be included because the JPEG library is" $as_echo "not installed correctly or was not found. Background images" $as_echo "from themes will not display as they usually are JPEG files." $as_echo $as_echo "To fix, download and install the jpeg library and/or make sure you" $as_echo "installed all jpeg related packages, SPECIALLY the development packages" $as_echo "like jpeg-dev (if you use some prepackaged version of libjpeg)." $as_echo $as_echo "WARNING WARNING WARNING WARNING WARNING WARNING WARNING" fi WindowMaker-0.95.9/config.sub0000755000175000017500000010645013642360053012761 00000000000000#! /bin/sh # Configuration validation subroutine script. # Copyright 1992-2018 Free Software Foundation, Inc. timestamp='2018-02-22' # 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 # the Free Software Foundation; either version 3 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, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches to . # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS Canonicalize a configuration name. Options: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright 1992-2018 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo "$1" exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ kopensolaris*-gnu* | cloudabi*-eabi* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; android-linux) os=-linux-android basic_machine=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown ;; *) basic_machine=`echo "$1" | sed 's/-[^-]*$//'` if [ "$basic_machine" != "$1" ] then os=`echo "$1" | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray | -microblaze*) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` ;; -lynx*178) os=-lynxos178 ;; -lynx*5) os=-lynxos5 ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo "$1" | sed -e 's/86-.*/86-sequent/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arceb \ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ | avr | avr32 \ | ba \ | be32 | be64 \ | bfin \ | c4x | c8051 | clipper \ | d10v | d30v | dlx | dsp16xx \ | e2k | epiphany \ | fido | fr30 | frv | ft32 \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i860 | i960 | ia16 | ia64 \ | ip2k | iq2000 \ | k1om \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa32r6 | mipsisa32r6el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64r6 | mipsisa64r6el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipsr5900 | mipsr5900el \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ | nios | nios2 | nios2eb | nios2el \ | ns16k | ns32k \ | open8 | or1k | or1knd | or32 \ | pdp10 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pru \ | pyramid \ | riscv32 | riscv64 \ | rl78 | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu \ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | visium \ | wasm32 \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; c54x) basic_machine=tic54x-unknown ;; c55x) basic_machine=tic55x-unknown ;; c6x) basic_machine=tic6x-unknown ;; leon|leon[3-9]) basic_machine=sparc-$basic_machine ;; m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65) ;; ms1) basic_machine=mt-unknown ;; strongarm | thumb | xscale) basic_machine=arm-unknown ;; xgate) basic_machine=$basic_machine-unknown os=-none ;; xscaleeb) basic_machine=armeb-unknown ;; xscaleel) basic_machine=armel-unknown ;; # 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*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | ba-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | c8051-* | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | e2k-* | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hexagon-* \ | i*86-* | i860-* | i960-* | ia16-* | ia64-* \ | ip2k-* | iq2000-* \ | k1om-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ | microblaze-* | microblazeel-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa32r6-* | mipsisa32r6el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64r6-* | mipsisa64r6el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipsr5900-* | mipsr5900el-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* | nios2eb-* | nios2el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ | or1k*-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pru-* \ | pyramid-* \ | riscv32-* | riscv64-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ | visium-* \ | wasm32-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-pc os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; asmjs) basic_machine=asmjs-unknown ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo "$basic_machine" | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c54x-*) basic_machine=tic54x-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; c55x-*) basic_machine=tic55x-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; c6x-*) basic_machine=tic6x-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16 | cr16-*) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2*) basic_machine=m68k-bull os=-sysv3 ;; e500v[12]) basic_machine=powerpc-unknown os=$os"spe" ;; e500v[12]-*) basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'` os=$os"spe" ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; i*86v32) basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; leon-*|leon[3-9]-*) basic_machine=sparc-`echo "$basic_machine" | sed 's/-.*//'` ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo "$basic_machine" | sed 's/^[^-]*-//'` os=-linux ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze*) basic_machine=microblaze-xilinx ;; mingw64) basic_machine=x86_64-pc os=-mingw64 ;; mingw32) basic_machine=i686-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; moxiebox) basic_machine=moxie-unknown os=-moxiebox ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo "$basic_machine" | sed -e 's/ms1-/mt-/'` ;; msys) basic_machine=i686-pc os=-msys ;; mvs) basic_machine=i370-ibm os=-mvs ;; nacl) basic_machine=le32-unknown os=-nacl ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; neo-tandem) basic_machine=neo-tandem ;; nse-tandem) basic_machine=nse-tandem ;; nsr-tandem) basic_machine=nsr-tandem ;; nsv-tandem) basic_machine=nsv-tandem ;; nsx-tandem) basic_machine=nsx-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo "$basic_machine" | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc | ppcbe) basic_machine=powerpc-unknown ;; ppc-* | ppcbe-*) basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos | rdos64) basic_machine=x86_64-pc os=-rdos ;; rdos32) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh5el) basic_machine=sh5le-unknown ;; simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; strongarm-* | thumb-*) basic_machine=arm-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tile*) basic_machine=$basic_machine-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; x64) basic_machine=x86_64-pc ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; xscale-* | xscalee[bl]-*) basic_machine=`echo "$basic_machine" | sed 's/^xscale/arm/'` ;; ymp) basic_machine=ymp-cray os=-unicos ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo "$basic_machine" | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo "$basic_machine" | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases that might get confused # with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # es1800 is here to avoid being matched by es* (a different OS) -es1800*) os=-ose ;; # Now accept the basic system types. # The portable systems comes first. # Each alternative MUST end in a * to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* | -plan9* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* | -cloudabi* | -sortix* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -knetbsd* | -mirbsd* | -netbsd* \ | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* | -glidix* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ | -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox* | -bme* \ | -midnightbsd*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -xray | -os68k* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo "$os" | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo "$os" | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo "$os" | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4*) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -pikeos*) # Until real need of OS specific support for # particular features comes up, bare metal # configurations are quite functional. case $basic_machine in arm*) os=-eabi ;; *) os=-elf ;; esac ;; -nacl*) ;; -ios) ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; c8051-*) os=-elf ;; hexagon-*) os=-elf ;; tic54x-*) os=-coff ;; tic55x-*) os=-coff ;; tic6x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; pru-*) os=-elf ;; *-be) os=-beos ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo "$basic_machine" | sed "s/unknown/$vendor/"` ;; esac echo "$basic_machine$os" exit # Local variables: # eval: (add-hook 'write-file-functions 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: WindowMaker-0.95.9/README0000644000175000017500000002572313642357773011700 00000000000000 GNU Window Maker X11 Window Manager by Alfredo K. Kojima Dan Pascu Web/FTP Master Phillip Smith Congratulations! You have purchased an extremely fine device that would give you thousands of years of trouble-free service, except that you undoubtedly will destroy it via some typical bonehead consumer maneuver. Which is why we ask you to PLEASE FOR GOD'S SAKE READ THIS OWNER'S MANUAL CAREFULLY BEFORE YOU UNPACK THE DEVICE. YOU ALREADY UNPACKED IT, DIDN'T YOU? YOU UNPACKED IT AND PLUGGED IT IN AND TURNED IT ON AND FIDDLED WITH THE KNOBS, AND NOW YOUR CHILD, THE SAME CHILD WHO ONCE SHOVED A POLISH SAUSAGE INTO YOUR VIDEOCASSETTE RECORDER AND SET IT ON "FAST FORWARD", THIS CHILD ALSO IS FIDDLING WITH THE KNOBS, RIGHT? AND YOU'RE JUST NOW STARTING TO READ THE INSTRUCTIONS, RIGHT??? WE MIGHT AS WELL JUST BREAK THESE DEVICES RIGHT AT THE FACTORY BEFORE WE SHIP THEM OUT, YOU KNOW THAT? -- Dave Barry, "Read This First!" Description =========== Window Maker is the GNU window manager for the X Window System. It was designed to emulate the look and feel of part of the NEXTSTEP(tm) GUI. It's 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 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) and NETWM are also supported (NETWM is used by KDE and GNOME, so they are automatically supported as a result). So you can replace any of the window managers for these environments with Window Maker while keeping most, if not all, of the native window manager functionality. Window Maker was previously called WindowMaker. Window Maker has no connection with Windowmaker, the software for making windows and doors. Documentation ============= Read before asking. * README files all over the source tree have info related to the stuff in the directories. * INSTALL has installation instructions and some troubleshooting tips. You're meant to read it if you are compiling the sources. * FAQ: Frequently Asked Questions. READ IT!!! FAQ.I18N is for internationalization related questions. * NEWS: list user visible changes from the previous version. Read it if you are upgrading. * BUGFORM: use it to send bug reports. Please do use it. * ChangeLog: what changed from the previous version? * BUGS: list of known bugs *** User Guide The Window Maker User's Guide can be downloaded from the official ftp or web sites. The User Guide explains how to use Window Maker, the configuration files and options. *** man pages Type "man wmaker" in the shell prompt to get general help about Window Maker Directories & Files in the Source Tree ====================================== * Install is a script for configuring and compiling Window Maker in a easy way (not that the normal way is difficult, but...). * AUTHORS: the credits * TODO: plans for the future * util/ has various utility programs. * WPrefs.app/ is the configuration program. * src/wconfig.h has compile time options you can change to select some options/features and other stuff. * WINGs/ NEXTSTEP lookalike widget library * wrlib/ image processing library * po/ has message catalogs which are the translated versions of the messages displayed by Window Maker. HELP ME!!! ========== There is a mailing list for discussing Window Maker at wmaker-user@googlegroups.com. To subscribe to it, visit https://groups.google.com/forum/#!forum/wmaker-user 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. For bug reports use the BUGFORM. If you have a problem with a precompiled version of Window Maker (rpm, deb etc), first ask the person who made the package. IMPORTANT NOTE: when asking for help (in the mailing list or to the developers, directly) *always* send information about the system you are using. You can use the system information section at the end of BUGFORM as a guideline. Another thing: please don't send HTML mail. There is also a #windowmaker IRC channel at freenode. To join there, connect your irc client to irc.freenode.net. irc.windowmaker.org will direct you to the correct IRC network. GNUstep ======= GNUstep is a complete object-oriented development system, based on the OpenStep specification released by NeXT(tm) (now Apple(tm)) and Sun(tm). It will provide everything one needs to produce cross-platform, object-oriented, graphical (and non-graphical) applications; providing among other things, base system libraries, a high-level GUI application framework that uses a Display PostScript(tm)-like imaging model (DGS), objects for accessing relational databases, distributed objects and a graphical development environment, with tools like interface modeler, a project management system (project center) and other tools. The GNUstep development system will be used to create a user environment, with everything needed for a complete graphical user interface, such as a file viewer, text editors and other applications. Note that the user environment (or "desktop environment") is only a small part of the whole GNUstep project and therefore it does not "compete" with other projects like KDE or GNOME, simply because they are completely different things. For more information on the GNUstep project, visit: http://www.gnustep.org Running multiple instances of Window Maker ========================================== It is not a good idea to run more than one instance of Window Maker from the same user (so that wmaker will use the same configuration files) at the same time. You might get unexpected behavior when Window Maker updates it's configuration files. If you really desire to do this, try running Window Maker with the command line option --static so that it will not update or change any of the configuration files. Performance Tuning ================== If you want to diminish Window Maker's memory usage and improve performance, while keeping a nice appearance and good functionality, follow the items bellow: - use solid textures for everything, mainly title bars and menus. If you want a nice looking desktop, use the Traditional style. - turn NewStyle and Superfluous off - do not bind many shortcuts in the menu and keep only the essential items in the menu - turn on DisableClip - edit wconfig.h and disable the NUMLOCK_HACK and the features you don't use anyway (keep in mind that some of the #defines might not work, as they are not fully supported). Make sure to always keep NumLock and ScrollLock turned off. - turn on DisableAnimations. You can also specify --disable-animation at compile time to the configure script. - strip down the default IconPath and PixmapPath entries to contain only the paths that you really have in your system. - do not use large images in the root background - remove support for image formats you don't use - to reduce memory usage, disable the icon cache, by setting the RIMAGE_CACHE environment variable to 0. If you want to increase performance at the cost of memory usage, set it's value to a value like the number of different icons you use. Also, disable anti-aliased text support in ~/GNUstep/Defaults/WMGLOBAL. Keyboard Mouse Control ====================== Many people ask about adding keyboard control of mouse, like in fvwm, but Window Maker will not have such feature. The XKB extension supports mouse simulation from the keyboard, in a much more powerful fashion than any simulation done by a window manager. To enable it, hit the Control+Shift+NumLock or Shift+NumLock key combination. You should hear the speaker beeping. To disable it, do the same thing. To control the mouse the numeric keypad is used as follows: - 4 (left arrow), 7 (Home), 8 (up arrow), 9 (PgUp), 6 (right arrow), 3 (PgDn), 2 (down arrow) and 1 (End) move the mouse to the corresponding direction; - holding one of the above keys and then holding the 5 key will move the pointer faster; - / will select the first mouse button (left button); - * will select the second mouse button (middle button); - - will select the third mouse button (right button); - 5 will do a click with the currently selected mouse button; - + will do a double-click with the currently selected button; - 0 (Ins) will click and hold the currently selected button; - . (Del) will release the currently selected button that was previously clicked with the 0 (Ins) key. The above key values work in a XFree86 3.2 (X11R6.1) X server but your mileage may vary. How to make a gdb backtrace =========================== Backtraces can help us fix bugs that make Window Maker crash. If you find a bug that crashes Window Maker, please send a backtrace with your bug report. To make a useful backtrace, you need a core file with debugging information produced by Window Maker when it crashes. It should have been installed without stripping too. To compile wmaker with debugging information: ./configure --enable-debug make If you get the dialog window telling you that wmaker crashed and asks you what to do, tell it to "Abort and leave a core file". script cd src gdb .libs/wmaker path_to_the_core_file Then, in the gdb prompt type "bt". Quit from gdb by typing "quit" and then, in the shell prompt, type "exit". The file named typescript will contain the backtrace. 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 GNU General Public License. Read the COPYING file for the complete license. The icons listed in COPYING.WTFPL and are distributed in this program and were made by Banlu Kemiyatorn (]d), are licensed through the "do What The Fuck you want to Public License". Read the COPYING.WTFPL 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. The authors reserve the right to make changes in the software without prior notice. Authors ======= Alfredo K. Kojima Dan Pascu ]d Please don't ask us questions before reading the documentation (esp. the FAQ, this file and INSTALL files) and about "cool" things you see in people's desktop screenshots. The AUTHORS file contains a list of the people who have contributed to the project. The name of people who have helped with localization (translation) can be found in po/README and Window Maker/README If you have any comments, fixes and bug reports (filled BUGFORMs) send them to wmaker-dev@googlegroups.com WindowMaker-0.95.9/WindowMaker/0000755000175000017500000000000013642365213013302 500000000000000WindowMaker-0.95.9/WindowMaker/menu.fy.in0000644000175000017500000001603113642357774015151 00000000000000/* * Haadmenu-útwurking foar WindowMaker * * Opmaak is: * * [SHORTCUT ] * * is elke tekenrige te brûken as titel. Moat tusken " stean at it * spaasjes hat. * * SHORTCUT jout in fluchtoets op foar dy yngong. hat * deselde opmaak as de fluchtoetsopsjes yn it * $HOME/GNUstep/Defaults/WindowMaker bestân, sa as RootMenuKey of MiniaturizeKey. * * Jo kinne gjin fluchtoets opjaan foar in MENU- of OPEN_MENU-ûnderdiel. * * ien fan 'e jildige kommando's: * MENU - begjint (sub)menubepaling * END - beëiniget (sub)menubepaling * OPEN_MENU - iepenet in menu út in bestân, 'pipe' of map(pen)ynhâld, * en giet eventueel elk foarôf mei in kommando. * WORKSPACE_MENU - foeget in submenu foar wurkromtehannelingen ta. Mar ien * workspace_menu is tastien. * EXEC - fiert in ekstern programma út * SHEXEC - fiert in 'shell'-kommando út (sa as gimp > /dev/null) * EXIT - slút de finsterbehearder ôf * RESTART [] - werstart WindowMaker, of start in oare * finsterbehearder * REFRESH - fernijt it buroblêd * ARRANGE_ICONS - werskikt de ikoanen yn 'e wurkromte * SHUTDOWN - deadet alle kliïnten (en slút de X Window-sesje ôf) * SHOW_ALL - pleatst alle finsters yn 'e wurkromte werom * HIDE_OTHERS - ferberget alle finsters yn 'e wurkromte, útsein dy't * fokus hat (of de lêste dy't fokus hie) * SAVE_SESSION - bewaret de hjoeddeiske steat fan it buroblêd, ynsletten * alle rinnende programma's, al har 'hints' (ôfmjittingen, * posysje op it skerm, wurkromte dêr't se yn libje, Dok * of Klip fan wêrút se opstart waarden, en wannear * miniaturisearre, oprôle of ferburgen). Bewaret teffens de aktuele * wurkromte fan 'e brûker. Alles sil wersteld wurde by elke * start fan windowmaker, oant in oare SAVE_SESSION of * CLEAR_SESSION brûkt wurdt. At SaveSessionOnExit = Yes; yn * it WindowMaker-domeinbestân, dan wurdt bewarjen automatysk * dien by elke windowmaker-ôfsluting, en wurdt in * SAVE_SESSION of CLEAR_SESSION oerskreaun (sjoch hjirnei). * CLEAR_SESSION - wisket in earder bewarre sesje. Dit sil gjin * effekt hawwe at SaveSessionOnExit is True. * INFO - toant it Ynfopaniel * * OPEN_MENU-opmaak: * 1. Menu-ôfhanneling út bestân. * // iepenet bestân.menu, dat in jildich menubestân befetsje moat, en foeget * // it yn op 'e hjoeddeiske plak * OPEN_MENU bestân.menu * 2. Menu-ôfhanneling út pipe. * // iepenet kommando en brûkt syn 'stdout' om in menu oan te meitsjen. * // Kommando-output moat in jildige menubeskriuwing wêze. * // De romte tusken '|' en it kommando sels is opsjoneel. * // Brûk '||' yn plak fan '|' at jo it menu altiten bywurkje wolle * // by iepenjen. Dat soe traach wurkje kinne. * OPEN_MENU | kommando * OPEN_MENU || kommando * 3. Mapôfhanneling. * // Iepenet ien of mear mappen en makket in menu oan, mei dêryn alle * // submappen en útfierbere bestannen alfabetysk * // sortearre. * OPEN_MENU /in/map [/in/oare/map ...] * 4. Mapôfhanneling mei kommando. * // Iepenet ien of mear mappen en makket in menu oan, mei dêryn alle * // submappen en lêsbere bestannen alfabetysk sortearre, * // elk fan har foarôfgien mei kommando. * OPEN_MENU [opsjes] /in/map [/in/oare/map ...] WITH kommando -opsjes * Opsjes: * -noext lit alles fan 'e lêste punt yn 'e * bestânsnamme ôf wei * * // Brûk #usergnusteppath# as tydlike oantsjutting foar it paad nei de * // brûkers-GNUstep-map. Window Maker sil dy ferfange mei de wearde * // fan WMAKER_USER_ROOT, at dizze omjouwingsfariabele ynsteld is, of * // oars "~/GNUstep" * * is it út te fieren programma. * * ** Kommandorigelopsjes yn EXEC: * %s - wurdt ferfongen troch de aktuele seleksje * %a(titel[,oanwizing]) - iepenet in ynfierfjild mei de opjûne titel en de * opsjonele oanwizing, en wurdt ferfongen troch wat jo yntype * %w - wurdt ferfongen troch XID foar it aktuele fokust finster * %W - wurdt ferfongen troch it nûmer fan 'e aktuele wurkromte * * Jo kinne spesjale karakters (sa as % en ") útskeakelje mei it \-teken: * fb.: xterm -T "\"Hallo Wrâld\"" * * Jo kinne ek ûntsnappingstekens brûke, sa as \n * * Elke MENU-deklaraasje moat ien keppele END-deklaraasje op it ein hawwe. * * Foarbyld: * * "Test" MENU * "XTerm" EXEC xterm * // makket in submenu mei de ynhâld fan /usr/openwin/bin oan * "XView-progr" OPEN_MENU "/usr/openwin/bin" * // wat X11-programma's yn ferskate mappen * "X11-progr" OPEN_MENU /usr/X11/bin $HOME/bin/X11 * // wat eftergrûnôfbyldingen ynstelle * "Eftergrûn" OPEN_MENU -noext $HOME/ôfbyldingen /usr/share/images WITH wmsetbg -u -t * // foeget it style.menu yn mei dit ûnderdiel * "Styl" OPEN_MENU style.menu * "Test" END */ #include "wmmacros" "Programma's" MENU "Ynfo" MENU "Ynfopaniel" INFO_PANEL "Juridyske ynfo" LEGAL_PANEL "Systeemconsole" EXEC xconsole "Systeembelêsting" SHEXEC xosview || xload "Proseslist" EXEC xterm -e top "Hantliedingblêder" EXEC xman "Ynfo" END "Utfiere..." SHEXEC %a(Utfiere,Typ út te fieren kommando:) "XTerm" EXEC xterm -sb "Mozilla Firefox" EXEC firefox "Wurkromten" WORKSPACE_MENU "Programma's" MENU "Gimp" SHEXEC gimp >/dev/null "Ghostview" EXEC ghostview %a(GhostView,Fier te besjen bestân yn) "Xpdf" EXEC xpdf %a(Xpdf,Fier te besjen PDF yn) "Abiword" EXEC abiword "Dia" EXEC dia "OpenOffice.org" MENU "OpenOffice.org" EXEC ooffice "Writer" EXEC oowriter "Rekkenblêd" EXEC oocalc "Draw" EXEC oodraw "Impress" EXEC ooimpress "OpenOffice.org" END "Tekstbewurkers" MENU "XEmacs" EXEC xemacs "Emacs" EXEC emacs "XJed" EXEC xjed "VI" EXEC xterm -e vi "GVIM" EXEC gvim "NEdit" EXEC nedit "Xedit" EXEC xedit "Tekstbewurkers" END "Multymedia" MENU "XMMS" MENU "XMMS" EXEC xmms "XMMS ôfspylje/skoftsje" EXEC xmms -t "XMMS stopje" EXEC xmms -s "XMMS" END "Xine fideospiler" EXEC xine "MPlayer" EXEC mplayer "Multymedia" END "Programma's" END "Helpmiddels" MENU "Rekkenmasine" EXEC xcalc "Finstereigenskippen" SHEXEC xprop | xmessage -center -title 'xprop' -file - "Lettertypekiezer" EXEC xfontsel "Fergrutsje" EXEC wmagnify "Kleurekaart" EXEC xcmap "X-programma deadzje" EXEC xkill "Helpmiddels" END "Seleksje" MENU "Kopiearje" SHEXEC echo '%s' | wxcopy "E-maile nei" EXEC xterm -name mail -T "Pine" -e pine %s "Navigearje" EXEC netscape %s "Sykje yn hantlieding" SHEXEC MANUAL_SEARCH(%s) "Seleksje" END "Kommando's" MENU "Oare ferbergje" HIDE_OTHERS "Alles toane" SHOW_ALL "Ikoanen skikke" ARRANGE_ICONS "Fernije" REFRESH "Beskoattelje" EXEC xlock -allowroot -usefirst "Kommando's" END "Uterlik" OPEN_MENU "appearance.menu.fy" "Sesje" MENU "Sesje bewarje" SAVE_SESSION "Sesje wiskje" CLEAR_SESSION "Window Maker werstarte" RESTART "BlackBox starte" RESTART blackbox "IceWM starte" RESTART icewm "Ofslute" EXIT "Sesje" END "Programma's" END WindowMaker-0.95.9/WindowMaker/menu.ro.in0000644000175000017500000002054513431646201015136 00000000000000/* * 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 * $HOME/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 * SHEXEC <command> - executes a shell command (like gimp > /dev/null) * 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 * %W - substitute with the number of the current workspace * * 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 $HOME/bin/X11 * // set some background images * "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 */ #include "wmmacros" "Aplicaţii" MENU "Informaţii" MENU "Panou cu Informaţii" INFO_PANEL "Panou cu Licenţa" LEGAL_PANEL "Consola Sistem" EXEC xconsole "Încărcarea Sistemului" SHEXEC xosview || xload "Lista Proceselor" EXEC xterm -e top "Navigator de Pagini Man" EXEC xman "Informaţii" END "Execută..." SHEXEC %a(Execută,Introduceţi o comandă:) "XTerm" EXEC xterm -sb "Rxvt" EXEC rxvt -bg black -fg white -fn -misc-fixed-medium-*-*--*-*-*-*-*-*-iso8859-2 -fb -misc-fixed-medium-*-*--*-*-*-*-*-*-iso8859-2 "Spaţii de Lucru" WORKSPACE_MENU "Aplicaţii" MENU "Grafică" MENU "Gimp" SHEXEC gimp >/dev/null "XV" EXEC xv "XPaint" EXEC xpaint "XFig" EXEC xfig "Grafică" END "Manager de Fişiere" EXEC xfm "Fisiere OffiX" 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 "Aplicaţii" END "Editoare" MENU "XFte" EXEC xfte "XEmacs" SHEXEC xemacs || emacs "XJed" EXEC xjed "NEdit" EXEC nedit "Xedit" EXEC xedit "VI" EXEC xterm -e vi "Editoare" END "Altele" MENU "Xmcd" SHEXEC xmcd 2> /dev/null "Xplaycd" EXEC xplaycd "Xmixer" EXEC xmixer "Altele" END "Utilitare" MENU "Calculator" EXEC xcalc "Proprietăţile Ferestrei..." SHEXEC xprop | xmessage -center -title 'xprop' -file - "Navigator de Fonturi" EXEC xfontsel "Emulator de Terminal" EXEC xminicom "Lupă" EXEC xmag "Culori" EXEC xcmap "Omoară Fereastra..." EXEC xkill "Clipboard" EXEC xclipboard "Utilitare" END "Selecţie" MENU "Copiază" SHEXEC echo '%s' | wxcopy "Poştă către" EXEC xterm -name mail -T "Pine" -e pine %s "Navighează" EXEC netscape %s "Caută în Manual" SHEXEC MANUAL_SEARCH(%s) "Selecţie" END "Spaţiu de Lucru" MENU "Ascunde Celelalte" HIDE_OTHERS "Arată Tot" SHOW_ALL "Aranjează Iconiţele" ARRANGE_ICONS "Reîmprospătează" REFRESH "Blochează" EXEC xlock -allowroot -usefirst "Salvează Sesiunea" SAVE_SESSION "Şterge Setările de Sesiune" CLEAR_SESSION "Spaţiu de Lucru" END "Configurare" MENU "Teme" OPEN_MENU -noext THEMES_DIR $HOME/GNUstep/Library/WindowMaker/Themes WITH setstyle "Stiluri" OPEN_MENU -noext STYLES_DIR $HOME/GNUstep/Library/WindowMaker/Styles WITH setstyle "Seturi de Icoane" OPEN_MENU -noext ICON_SETS_DIR $HOME/GNUstep/Library/WindowMaker/IconSets WITH seticons "Fundal" MENU "Solid" MENU "Negru" WS_BACK '(solid, black)' "Albastru" WS_BACK '(solid, "#505075")' "Indigo" WS_BACK '(solid, "#243e6c")' "Bleumarin" WS_BACK '(solid, "#224477")' "Violet" WS_BACK '(solid, "#554466")' "Gălbui" WS_BACK '(solid, "wheat4")' "Gri Închis" WS_BACK '(solid, "#333340")' "Vişiniu" WS_BACK '(solid, "#400020")' "Solid" END "Gradientat" MENU "Apus" WS_BACK '(mvgradient, deepskyblue4, black, deepskyblue4, tomato4)' "Cer" WS_BACK '(vgradient, blue4, white)' "Gradient Albastru" WS_BACK '(vgradient, "#7080a5", "#101020")' "Gradient Indigo" WS_BACK '(vgradient, "#746ebc", "#242e4c")' "Gradient Violet" WS_BACK '(vgradient, "#654c66", "#151426")' "Gradient Gălbui" WS_BACK '(vgradient, "#a09060", "#302010")' "Gradient Gri" WS_BACK '(vgradient, "#636380", "#131318")' "Gradient Vişiniu" WS_BACK '(vgradient, "#600040", "#180010")' "Gradientat" END "Imagini" OPEN_MENU -noext BACKGROUNDS_DIR $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t "Fundal" END "Salvează Tema" SHEXEC getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/"%a(Theme name,Enter file name:)" "Salvează Setul de Iconiţe" SHEXEC geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/"%a(IconSet name,Enter file name:)" "Utilitar de Configurare" EXEC #wprefs# "Configurare" END "Ieşire" MENU "Repornire" RESTART "Porneşte BlackBox" RESTART blackbox "Porneşte kwm" RESTART kwm "Porneşte IceWM" RESTART icewm "Ieşi" EXIT "Ieşire" END "Aplicaţii" END �����������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Makefile.in����������������������������������������������������������0000644�0001750�0001750�00000060732�13642360054�015275� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = WindowMaker ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ $(top_srcdir)/m4/ax_pthread.m4 \ $(top_srcdir)/m4/ld-version-script.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/windowmaker.m4 \ $(top_srcdir)/m4/wm_attributes.m4 \ $(top_srcdir)/m4/wm_cflags_check.m4 \ $(top_srcdir)/m4/wm_i18n.m4 \ $(top_srcdir)/m4/wm_imgfmt_check.m4 \ $(top_srcdir)/m4/wm_libexif.m4 $(top_srcdir)/m4/wm_libmath.m4 \ $(top_srcdir)/m4/wm_prog_cc_c11.m4 \ $(top_srcdir)/m4/wm_xext_check.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(dist_prefsdata_DATA) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(prefsdatadir)" \ "$(DESTDIR)$(prefsdatadir)" DATA = $(dist_prefsdata_DATA) $(nodist_prefsdata_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir distdir-am am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in README DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ GFXLIBS = @GFXLIBS@ GREP = @GREP@ HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLIBS = @INTLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBBSD = @LIBBSD@ LIBEXIF = @LIBEXIF@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXINERAMA = @LIBXINERAMA@ LIBXMU = @LIBXMU@ LIBXRANDR = @LIBXRANDR@ LINGUAS = @LINGUAS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAGICKFLAGS = @MAGICKFLAGS@ MAGICKLIBS = @MAGICKLIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MANLANGDIRS = @MANLANGDIRS@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOLIBS = @PANGOLIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILMOFILES = @UTILMOFILES@ VERSION = @VERSION@ WINGSMOFILES = @WINGSMOFILES@ WINGS_VERSION = @WINGS_VERSION@ WMAKERMOFILES = @WMAKERMOFILES@ WPREFSMOFILES = @WPREFSMOFILES@ WRASTER_VERSION = @WRASTER_VERSION@ WUTIL_VERSION = @WUTIL_VERSION@ XCFLAGS = @XCFLAGS@ XFTCONFIG = @XFTCONFIG@ XFTFLAGS = @XFTFLAGS@ XFTLIBS = @XFTLIBS@ XGETTEXT = @XGETTEXT@ XLFLAGS = @XLFLAGS@ XLIBS = @XLIBS@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBRARY_PATH = @X_LIBRARY_PATH@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ defsdatadir = @defsdatadir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ inc_search_path = @inc_search_path@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lcov_output_directory = @lcov_output_directory@ lib_search_path = @lib_search_path@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pixmapdir = @pixmapdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ wprefs_bindir = @wprefs_bindir@ wprefs_datadir = @wprefs_datadir@ SUBDIRS = Backgrounds . Defaults IconSets Icons Pixmaps Styles Themes prefsdatadir = $(pkgdatadir) wpexecbindir = @wprefs_bindir@ # menus which need generated to have correct path to WPrefs or data directory GENERATED_MENUS = \ appearance.menu\ appearance.menu.fy\ appearance.menu.nl\ menu\ menu.bg\ menu.fi\ menu.fy\ menu.hu\ menu.ko\ menu.nl\ menu.ro\ menu.sk\ menu.zh_TW\ plmenu\ plmenu.bg\ plmenu.es\ plmenu.fi\ plmenu.fy\ plmenu.ja\ plmenu.ko\ plmenu.nl\ plmenu.pl\ plmenu.ro\ plmenu.sk\ plmenu.zh_CN\ plmenu.zh_TW\ wmmacros # menus which do not mention WPrefs or data directory NONGENERATED_MENUS = \ menu.ca\ menu.cz\ menu.da\ menu.de\ menu.el\ menu.es\ menu.fr\ menu.gl\ menu.he\ menu.hr\ menu.it\ menu.ja\ menu.no\ menu.pl\ menu.pt\ menu.ru\ menu.se\ menu.sl\ menu.tr\ menu.zh_CN\ plmenu.da\ plmenu.de\ plmenu.fr\ plmenu.hr\ plmenu.it dist_prefsdata_DATA = \ autostart.sh\ background.menu\ background.menu.fy\ background.menu.nl\ exitscript.sh\ README\ README.themes\ $(NONGENERATED_MENUS) nodist_prefsdata_DATA = $(GENERATED_MENUS) EXTRA_DIST = $(addsuffix .in, $(GENERATED_MENUS)) CLEANFILES = $(GENERATED_MENUS) all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu WindowMaker/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu WindowMaker/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_prefsdataDATA: $(dist_prefsdata_DATA) @$(NORMAL_INSTALL) @list='$(dist_prefsdata_DATA)'; test -n "$(prefsdatadir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(prefsdatadir)'"; \ $(MKDIR_P) "$(DESTDIR)$(prefsdatadir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(prefsdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(prefsdatadir)" || exit $$?; \ done uninstall-dist_prefsdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_prefsdata_DATA)'; test -n "$(prefsdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(prefsdatadir)'; $(am__uninstall_files_from_dir) install-nodist_prefsdataDATA: $(nodist_prefsdata_DATA) @$(NORMAL_INSTALL) @list='$(nodist_prefsdata_DATA)'; test -n "$(prefsdatadir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(prefsdatadir)'"; \ $(MKDIR_P) "$(DESTDIR)$(prefsdatadir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(prefsdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(prefsdatadir)" || exit $$?; \ done uninstall-nodist_prefsdataDATA: @$(NORMAL_UNINSTALL) @list='$(nodist_prefsdata_DATA)'; test -n "$(prefsdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(prefsdatadir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(DATA) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(prefsdatadir)" "$(DESTDIR)$(prefsdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dist_prefsdataDATA \ install-nodist_prefsdataDATA install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-dist_prefsdataDATA \ uninstall-nodist_prefsdataDATA .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am \ install-dist_prefsdataDATA install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man \ install-nodist_prefsdataDATA install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am uninstall-dist_prefsdataDATA \ uninstall-nodist_prefsdataDATA .PRECIOUS: Makefile $(GENERATED_MENUS): $(AM_V_GEN)sed -e "s:#wprefs#:$(wpexecbindir)/WPrefs:" \ -e "s:#wmdatadir#:$(pkgdatadir):" $(srcdir)/$@.in > $@ # 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. .NOEXPORT: ��������������������������������������WindowMaker-0.95.9/WindowMaker/menu.se��������������������������������������������������������������0000644�0001750�0001750�00000016772�13431646201�014527� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Huvudmeny för WindowMaker. * * Syntaxen är: * * <Titel> [SHORTCUT <Genväg>] <Kommando> <Parametrar> * * <Titel> är en sträng som du vill använda som titel i menyn. Strängen * måste omslutas med " om den innehåller mellanslag. * * SHORTCUT anger en genväg för det menyalternativet. <Genväg> har likadan * syntax som genvägarna i filen $HOME/GNUStep/Defaults/WindowMaker. * * Man kan inte ange en genväg för kommandona MENU och OPEN_MENU. * * <Kommando> kan vara ett av följande: * MENU - börjar (under)meny definition. * END - avslutar (under)meny definition. * OPEN_MENU - öppnar en meny från en fil, pipe eller innehållet av * en katalog och eventuellt föregå varje med ett kommando. * WORKSPACE_MENU - lägger till en undermeny med kommandon som påverkar * arbetsbordet. Endast en workspace_menu är tillåten. * EXEC <program> - kör ett externt program. * SHEXEC <command> - executes a shell command (like gimp > /dev/null) * EXIT - avslutar WindowMaker. * RESTART [<fönsterhanterare>] - startar WindowMaker eller annan * fönsterhanterare. * REFRESH - ritar om skärmbilden. * ARRANGE_ICONS - radar upp ikonerna på skrivbordet. * SHUTDOWN - dödar alla program och avslutar X-servern. * SHOW_ALL - visar alla (gömda) fönster på arbetsbordet. * HIDE_OTHERS - gömmer alla fönster på arbetsborder utom det som har * fokus. * SAVE_SESSION - sparar utseendet på skrivbordet. Det inkluderar alla * aktiva program (storlek, position, arbetsbord, vilken * dock/clip som det startades ifrån, om det är minimerat, * skugget eller gömt. Sparar också det aktiva arbets- * bordet som användaren är på. Allting blir återställt * vid uppstart tills nästa SAVE_SESSION eller * CLEAR_SESSION kallas. Om SaveSessionOnExit = Yes i * WindowMakers domänfil så sparas inställningarna * automatiskt vid avslut. Detta överskrider alla * SAVE_SESSION och CLEAR_SESSION (se nedan). * CLEAR_SESSION - raderar tidigare sparade inställningar från * SAVE_SESSION. Har ingen effekt om SaveSessionOnExit * är True. * INFO - visar ruta med info. * * OPEN_MENU syntax: * 1. Filmenyhantering. * // öppnar fil.meny, som måste innehålla en giltig menyfil, och läser * // in innehållet på nuvarande positionen. * OPEN_MENU fil.meny * 2. Pipe-menyhantering. * // Öppnar kommando och använder dess stdout för att konstruera * // menyn. Kommandots utdata måste vara giltig menysyntax. Mellan- * // slaget mellan '|' och själva kommandot är frivilligt. * OPEN_MENU | kommando * 3. Kataloghantering. * // Öppnar en eller flera kataloger och konstruerar en meny med * // alla underkataloger och körbara filer i dom sorterade * // alfabetiskt. * OPEN_MENU /en/katalog [/en/annan/katalog ...] * 4. Kataloghantering med program. * // Öppnar en eller flera kataloger och konstruerar en meny med * // alla underkataloger och körbara filer sorterade alfabetiskt. * // Placerar kommando för var och en. * OPEN_MENU /en/katalog [/en/annan/katalog ...] WITH kommando -argument * * * <Parametrar> är programmet som skall startas. * * ** Alternativ för kommandoraden i EXEC: * %s - byt ut mot den aktiva markeringen. * %a(meddelande) - öppnar ett svarsfönster med meddelandet och sätter in * din inskrivna text. * %w - byt ut mot XID för fönstret som har fokus. * * Du kan använda '\' för att använda specialtecken (som % och ") som vanliga * bokstäver, till exempel: * xterm -T "\"Hallå världen\"" * * Du kan också använda C-liknande specialsekvenser, t ex \n. * * Varje MENU-uttryck måste ha ett matchande END-uttryck på slutet. * * Exempel: * * "Test" MENU * "XTerm" EXEC xterm * // 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 $HOME/bin/X11 * // sätt en bakgrundsbild * "Background" OPEN_MENU $HOME/images /usr/share/images WITH wmsetbg -u -t * // infogar style.menu här * "Style" OPEN_MENU style.menu * "Test" END */ #include "wmmacros" "Program" MENU "Info" MENU "Informationsruta..." INFO_PANEL "Licens..." LEGAL_PANEL "Systemkonsoll" EXEC xconsole "Systembelastning" SHEXEC xosview || xload "Processlista" EXEC xterm -e top "Manualläsare" EXEC xman "Info" END "XTerm" EXEC xterm -sb "Rxvt (fixed)" EXEC rxvt -bg black -fg white -fn fixed "Rxvt (9x15)" EXEC rxvt -bg black -fg white -fn 9x15 "Arbetsbord" WORKSPACE_MENU "Program" MENU "Grafik" MENU "Gimp" SHEXEC gimp >/dev/null "XV" EXEC xv "XPaint" EXEC xpaint "XFig" EXEC xfig "Grafik" END "X Filhanterare" EXEC xfm "OffiX Files" EXEC files "LyX" EXEC lyx "Netscape" EXEC netscape "Ghostview" EXEC ghostview %a(Enter file to view) "Acrobat" EXEC /usr/local/Acrobat3/bin/acroread %a(Skriv in PDF-fil som ska visas) "TkDesk" EXEC tkdesk "Program" END "Textredigerare" MENU "XFte" EXEC xfte "XEmacs" SHEXEC xemacs || emacs "XJed" EXEC xjed "NEdit" EXEC nedit "Xedit" EXEC xedit "VI" EXEC xterm -e vi "Textredigerare" END "Diverse" MENU "Xmcd" SHEXEC xmcd 2> /dev/null "Xplaycd" EXEC xplaycd "Xmixer" EXEC xmixer "Diverse" END "Verktyg" MENU "Miniräknare" EXEC xcalc "Window Properties" SHEXEC xprop | xmessage -center -title 'xprop' -file - "Fontväljare" EXEC xfontsel "Terminalemulator" EXEC xminicom "Förstora" EXEC xmag "Färgkarta" EXEC xcmap "XKill" EXEC xkill "ASClock" EXEC asclock -shape "Klipphanterare" EXEC xclipboard "Verktyg" END "Markering" MENU "Kopiera" SHEXEC echo '%s' | wxcopy "Skicka e-mail" EXEC xterm -name mail -T "Pine" -e pine %s "Gå till webbsida" EXEC netscape %s "Sök i manualer" SHEXEC MANUAL_SEARCH(%s) "Markering" END "Arbetsbord" MENU "Göm andra" HIDE_OTHERS "Visa alla" SHOW_ALL "Rada upp ikoner" ARRANGE_ICONS "Uppdatera skärmen" REFRESH "Lås" EXEC xlock -allowroot -usefirst "Spara arbetsbord" SAVE_SESSION "Rensa sparat arbetsbord" CLEAR_SESSION "Arbetsbord" END "Utseende" MENU "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)' "Blå" WS_BACK '(solid, "#505075")' "Indigo" WS_BACK '(solid, "#243e6c")' "Mörkblå" WS_BACK '(solid, "#224477")' "Lila" WS_BACK '(solid, "#554466")' "Vete" WS_BACK '(solid, "wheat4")' "Mörkgrå" WS_BACK '(solid, "#333340")' "Vin" WS_BACK '(solid, "#400020")' "Enfärgat" END "Toningar" MENU "Flagga" WS_BACK '(mdgradient, green, red, white, green)' "Himmel" WS_BACK '(vgradient, blue4, white)' "Toningar" END "Bilder" OPEN_MENU -noext BACKGROUNDS_DIR $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t "Bakgrund" END "Spara tema" SHEXEC getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/"%a(Theme name)" "Spara ikonuppsättning" SHEXEC geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/"%a(IconSet name)" "Utseende" END "Avsluta" MENU "Starta om" RESTART "Starta AfterStep" RESTART afterstep "Avsluta..." EXIT "Avsluta session..." SHUTDOWN "Avsluta" END "Program" END ������WindowMaker-0.95.9/WindowMaker/plmenu.it������������������������������������������������������������0000644�0001750�0001750�00000011066�13431646201�015057� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������("Applicazioni", ("Informazioni", ("Info Panel...", INFO_PANEL), ("Legal...", LEGAL_PANEL), ("Console di sistema", EXEC, "xconsole"), ("Carico del Sistema", EXEC, "xosview || xload"), ("Lista dei Processi", EXEC, "xterm -e top"), ("Ricerca Manuali", EXEC, "xman") ), ("Esegui...", EXEC, "%a(Esegui,Scrivi il comando da eseguire:)"), ("XTerm", EXEC, "xterm -sb"), ("Rxvt", EXEC, "rxvt -bg black -fg white -fn fixed"), ("Workspace", WORKSPACE_MENU), ("Programmi", ("Grafica", ("Gimp", EXEC, "gimp >/dev/null"), ("XV", EXEC, "xv"), ("XPaint", EXEC, "xpaint"), ("XFig", EXEC, "xfig") ), ("X File Manager", EXEC, "xfm"), ("OffiX Files", EXEC, "files"), ("LyX", EXEC, "lyx"), ("Netscape", EXEC, "netscape"), ("Ghostview", EXEC, "ghostview %a(Ghostview, Scrivi il file da visualizzare)"), ("Acrobat", EXEC, "/usr/local/Acrobat3/bin/acroread %a(Acroread, Scrivi il file da visualizzare)"), ("TkDesk", EXEC, "tkdesk") ), ("Editor", ("XFte", EXEC, "xfte"), ("XEmacs", EXEC, "xemacs || emacs"), ("XJed", EXEC, "xjed"), ("NEdit", EXEC, "nedit"), ("Xedit", EXEC, "xedit"), ("VI", EXEC, "xterm -e vi") ), ("Varie", ("Xmcd", EXEC, "xmcd 2> /dev/null"), ("Xplaycd", EXEC, "xplaycd"), ("Xmixer", EXEC, "xmixer") ), ("Utilità", ("Calcolatrice", EXEC, "xcalc"), ("Proprietà finestra", EXEC, "xprop | xmessage -center -title 'xprop' -file -"), ("Selezione Font", EXEC, "xfontsel"), ("Emulatore di terminale", EXEC, "xminicom"), ("Lente", EXEC, "xmag"), ("Mappa Colori", EXEC, "xcmap"), ("Assasino X", EXEC, "xkill"), ("ASClock", EXEC, "asclock -shape"), ("Clipboard", EXEC, "xclipboard") ), ("Selezione", ("Copia", EXEC, "echo '%s' | wxcopy"), ("Spedisci a...", EXEC, "xterm -name mail -T Pine -e pine %s"), ("Naviga", EXEC, "netscape %s"), ("Cerca nei Manuali", EXEC, "MANUAL_SEARCH(%s)") ), ("Workspace", ("Nascondi gli altri", HIDE_OTHERS), ("Mostra Tutti", SHOW_ALL), ("Riordina Icone", ARRANGE_ICONS), ("Refresh", REFRESH), ("Lock", EXEC, "xlock -allowroot -usefirst"), ("Salva Sessione", SAVE_SESSION), ("Cancella Sessione salvata", CLEAR_SESSION) ), ("Visualizzazione", ("Temi", OPEN_MENU, "-noext /usr/share/WindowMaker/Themes ~/GNUstep/Library/WindowMaker/Themes WITH setstyle"), ("Stili", OPEN_MENU, "-noext /usr/share/WindowMaker/Styles ~/GNUstep/Library/WindowMaker/Styles WITH setstyle"), ("Set di Icone", OPEN_MENU, "-noext /usr/share/WindowMaker/IconSets ~/GNUstep/Library/WindowMaker/IconSets WITH seticons"), ("Sfondo", ("Tinta unita", ("Nero", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, black)'"), ("Blu-Grigio", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#505075\")'"), ("Indaco", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#243e6c\")'"), ("Blue", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#224477\")'"), ("Viola", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#554466\")'"), ("Beige", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, wheat4)'"), ("Grigio", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#333340\")'"), ("Vinaccia", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#400020\")'") ), ("Sfumato", ("Tramonto", EXEC, "wdwrite WindowMaker WorkspaceBack '(mvgradient, deepskyblue4, black, deepskyblue4, tomato4)'"), ("Cielo", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, blue4, white)'"), ("Sfumature Blu", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#7080a5\", \"#101020\")'"), ("Sfumature Indaco", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#746ebc\", \"#242e4c\")'"), ("Sfumature Viola", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#654c66\", \"#151426\")'"), ("Sfumature Beige", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#a09060\", \"#302010\")'"), ("Sfumature Grigie", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#636380\", \"#131318\")'"), ("Sfumature Vinaccia", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#600040\", \"#180010\")'") ), ("Immagini", OPEN_MENU, "-noext /usr/share/WindowMaker/Backgrounds ~/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t") ), ("Salva il tema", EXEC, "getstyle -t ~/GNUstep/Library/WindowMaker/Themes/\"%a(Nome Tema)\""), ("Salva il set icone", EXEC, "geticonset ~/GNUstep/Library/WindowMaker/IconSets/\"%a(Nome IconSet)\"") ), ("Esci", ("Riavvia", RESTART), ("Avvia BlackBox", RESTART, blackbox), ("Avvia kwm", RESTART, kwm), ("Avvia IceWM", RESTART, icewm), ("Esci...", EXIT), ("Uccidi sessione...", SHUTDOWN) ) ) ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/README���������������������������������������������������������������0000644�0001750�0001750�00000007462�13431646201�014106� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ The file named menu is the menu in the plain text file format. The files named menu.?? (?? are 2 characters, such as pt) are translations of the same menu. Plain text menus are preprocessed using cpp (the C Pre-Processor), so you can use cpp macros in it. The plmenu file is the same menu, but in the property list format. This menu can be edited with WPrefs.app, but since WPrefs.app does not support XIM, it will not allow you to make menus in languages such as Japanese. To use the menu in the property list format (plmenu), just replace the ~/GNUstep/Defaults/WMRootMenu with it. To use the plain text menu, place the path for the menu in ~/GNUstep/Defaults/WMRootMenu, enclosed in double quotes ("). Ex: "~/GNUstep/Library/WindowMaker/menu" Instructions for editing the plain text menus can be found in the menu file itself, kindly translated to your tongue for your convenience, by the translation contributors. There is a script to convert plain text menus to property list menus in the utils directory, named wm-oldmenu2new. If you are unsure to wich format to use, stick with the plain text menus as they are more flexible. If for some psychological reason you are scared by text based configuration, use the property list menu. Localized menu file translators: -------------------------------- File Language Maintainer ------------------------------------------------------------------------------ menu.ja Japanese MANOME Tomonori <manome@itlb.te.noda.sut.ac.jp> ABE Shige <sabe@ibm.net> menu.pt Portuguese Alfredo K. Kojima <kojima@inf.ufrgs.br> menu.de German Carsten Schaar <nhadcasc@fs-maphy.uni-hannover.de> menu.cz Czech David auer <xsauer@hwlab.felk.cvut.cz> menu.ko Korean Chae-Yong Chong <cychong@metro.telecom.samsung.co.kr> Byeong-Chan Kim <redhands@linux.sarang.net> menu.gl Galician Xose Vazquez <xose@arrakis.es> menu.fr French ObiTuarY <obituary@freshmeat.net> menu.it Italian Roberto Checozzo <croberto@aerre.it> menu.ru Russian August S.Sigov <freedomain@actor.ru> menu.es Spanish Rodrigo Hornos Prados <tnetrhp@ctv.es> Jos Luis Rivas Lpez <jrivas@ares.ipf.uvigo.es> menu.he Hebrew Please send me your name/email if you wrote this We unfortunately lost that info :( menu.tr Turkish F. Kagan Gurkaynak <kgf@wpi.edu> menu.fi Finnish Ville Hautamaki <villeh@photon.joensuu.fi> menu.se Swdish Andreas Persenius <andreas@alfaskop.net> menu.hr Croatian Toni Bilic <tbilic@efos.hr> menu.el Greek Nikolaos Papagrigoriou <papanikos@usa.net> menu.dk Danish John M. Lockard <jlockard@math.lsa.umich.edu> Jacob Sparre Andersen <sparre@cats.nbi.dk> menu.sl Slovene Alen Salamun <snowman@hal9000.medinet.si> menu.hu Hungarian Csanaki Csaba <prew@mail.matav.hu> menu.ca Catal Carles Amig<F3> dj_fr3nd@hotmail.com menu.zh_TW.Big5 Chinese Li Wei Jih <lwj83@cs.ccu.edu.tw> menu.zh_CN Chinese Wang Jian <wangjian2@asiainfo.com> menu.pl Polish Maciej Friedel <tytus@tytus.itma.pwr.wroc.pl> menu.bg Bulgarian Slavei Karadjov <slaff@exco.net> menu.sk Slovak judas@hell <tomka@oalevice.sk> menu.nl Dutch Alwin <translations@ziggo.nl> menu.fy Frisian Alwin <translations@ziggo.nl> plmenu.da Danish Birger Langkjer <birger.langkjer@image.dk> plmenu.zh_CN Chinese Wang Jian <wangjian2@asiainfo.com> plmenu.hr Croatian Toni Bilic <tbilic@efos.hr> plmenu.it Italian Michele Campeotto <micampe@tv.record.unipd.it> plmenu.de German Matthias Warkus <mawarkus@t-online.de> plmenu.pl Polish Maciej Friedel <tytus@tytus.itma.pwr.wroc.pl> plmenu.ko Korean Byeong-Chan Kim <redhands@linux.sarang.net> plemnu.es Spanish David A. Schekaiban <nb@zaz.net> plmenu.bg Bulgarian Slavei Karadjov <slaff@exco.net> plmenu.sk Slovak judas@hell <tomka@oalevice.sk> plmenu.ja Japanese Seiichi SATO <sato@cvs-net.co.jp> plmenu.nl Dutch Alwin <translations@ziggo.nl> plmenu.fy Frisian Alwin <translations@ziggo.nl> ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/menu.pl��������������������������������������������������������������0000644�0001750�0001750�00000026117�13431646201�014525� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Definiowanie Menu Głównego dla WindowMakera * Fonty w standardzie ISO8895-2 * * Składnia jest następująca: * * <Tytuł> [SHORTCUT <Skrut>] <Komenda> <Paramery> * * <Tytuł> Tytuł może być dowolnym ciągiem znaków. Jeśli będą w nim występować * spacje umieśc go w cudzysłowie np. "Tytuł ze spacją" * * SHORTCUT Definiowanie skrótu. * <Skrót> Nazwa rodzaju skrótu umieszczonego w pliku * $HOME/GNUstep/Defaults/WindowMaker, tak jak RootMenuKey * lub MiniaturizeKey. * * Skróty mogą występować w sekcji MENU lub OPEN_MENU . * * <Komenda> jedna z dostępnych komend: * MENU - rozpoczęcie definicji (pod)menu * END - zakończenie definicji (pod)menu * OPEN_MENU - generowanie podmenu na podstawie podanego katalogu, * umieszczając w nim pliki wykonywalne i podkatalogi. * WORKSPACE_MENU - Dodanie podmenu zawierającego aktywne pulpity. Tylko * jedno workspace_menu jest potrzebne. * EXEC <program> - wykonanie jakiegokolwiek programu * EXIT - wyjście z menadżera okien * RESTART [<window manager>] - restart WindowMakera albo start innego * manadżera okien * REFRESH - odświerzenie ekranu * ARRANGE_ICONS - uporządkowanie ikon na pulpicie * SHUTDOWN - zabicie wszystkich procesów (i wyjście z X window) * SHOW_ALL - pokazanie wszystkich ukrytych programów * HIDE_OTHERS - schowanie aktywnych okien pulpitu, oprócz aktywnego * SAVE_SESSION - zapamietanie aktualnego stanu desktpou, z wszystkimi * uruchomionymi programami, i z wszystkimi ich stanami * geometrycznymi, pozycji na ekranie, umieszczone na * odpowiednim pulpicie, ukryte lub uaktywnione. * Wszystkie te ustawiemia bedą aktywne, dopóki nie * zostaną użyte komendy SAVE_SESSION i CLEAR_SESSION. * Jeżeli SaveSessionOnExit = Yes; w pliku konfiguracyjnym * WindowMakera, wtedy zapamiętywanie wszystkich ustawień * jest dokonywanie po każdym wyjściu, niezależnie od * komend SAVE_SESSION czy CLEAR_SESSION . * CLEAR_SESSION - Czyszczenie poprzednio zapamiętanych sesji. Nie ponosi to * żadnych zmian w pliku SaveSessionOnExit . * INFO - Wyświetlenie informacji o WindowMakerze * * <Parametry> zalezne od uruchamianego programu. * * ** Opcje w lini komend EXEC: * %s - znak jest zastepowany przez text znajdujacy sie w ,,schowku'' * %a(tytuł[,komunikat]) - otwiera dodatkowe okno o tytule tytuł, komunikacie * komunikat i czeka na podanie parametrów, które * zostaną wstawione zamiast %a. Niestety nie udalo mi * się uzyskać polskich fontów w tej pocji :( * %w - znak jest zastepowany przez XID aktywnego okna * %W - znak jest zastepowany przez numer aktywnego pulpitu * * Aby używać specjalnych znaków ( takich jak % czy " ) należy poprzedzic je znakiem \ * np. :xterm -T "\"Witaj Świecie\"" * * Można używac znaków specjalnych, takich jak \n * * Sekcja MENU musi być zakończona sekcja END, pod tą sama nazwą. * * Przykład: * * "Test" MENU * "XTerm" EXEC xterm * // stworzenie podmenu z plikami w podkatalogu /usr/openwin/bin * "XView apps" OPEN_MENU "/usr/openwin/bin" * // umieszcza w jednym podmenu pliki z róznych podkatalogów * "X11 apps" OPEN_MENU /usr/X11/bin $HOME/bin/X11 * // ustawienie tła * "Background" OPEN_MENU -noext $HOME/images /usr/share/images WITH wmsetbg -u * // wstawienie menu z pliku style.menu * // wstawienie menu z pliku style.menu * "Style" OPEN_MENU style.menu * "Test" END * * Jeżeli zamiast polskich fontów są jakieś krzaczki należy wyedetować pliki * $HOME/GNUstep/Defaults/WMGLOBAL i $HOME/GNUstep/Defaults/WindowMaker, * lub wejść w menu Konfiguracja. * Aby uzyskać polskie znaki należy uzupełnić definicje fontów. * np. zamienić * * SystemFont = "-*-helvetica-medium-r-normal-*-%d-100-*-*-*-*-*-*"; * * na * * SystemFont = "-*-helvetica-medium-r-normal-*-%d-100-*-*-*-*-iso8859-2"; * * i wszędzie tam gdzie występuje podobna definicja. */ #include "wmmacros" #define ULUB_EDYTOR vi /* Jeśli nie lubisz edytora vi zmień na swój ulubiony edytor */ #define ULUB_TERM xterm /* A tutaj ustaw swój ulubiony terminal */ "WindowMaker" MENU "Informacja" MENU "Informacja o WMaker..." INFO_PANEL "Legalność..." LEGAL_PANEL "Konsola Systemu" EXEC xconsole "Obciążenie Systemu" EXEC xosview || xload "Lista Procesów" EXEC ULUB_TERM -T "Lista Procesów" -e top "Przeglądarka Manuali" EXEC xman "Informacja" END "Konfiguracja" MENU "Edycja menu" EXEC ULUB_TERM -T "Edycja menu" -e ULUB_EDYTOR $HOME/GNUstep/Library/WindowMaker/menu "Ustawienie fontów" EXEC ULUB_TERM -T "Ustawienie fontów" -e ULUB_EDYTOR $HOME/GNUstep/Defaults/WMGLOBAL "Konfiguracja" EXEC ULUB_TERM -T "Konfiguracja" -e ULUB_EDYTOR $HOME/GNUstep/Defaults/WindowMaker "Konfiguracja" END "Uruchom..." EXEC %a(Uruchom,Wpisz komende do uruchomienia:) "Terminal" EXEC ULUB_TERM -T "Mój ulubiony terminal" -sb "Edytor" EXEC ULUB_TERM -T "Moj ulubiony edytor" -e ULUB_EDYTOR %a(Edytor,Podaj plik do edycji:) "Pulpity" WORKSPACE_MENU "Aplikacje" MENU "Grafika" MENU "Gimp" EXEC gimp >/dev/null "XV" EXEC xv "XFig" EXEC xfig "XPaint" EXEC xpaint "Gnuplot" EXEC ULUB_TERM -T "GNU plot" -e gnuplot "Edytor ikon" EXEC bitmap "Grafika" END "Tekst" MENU "LyX" EXEC lyx "Ghostview" EXEC gv %a(GhostView,Wprowadz nazwe pliku *.ps *.pdf *.no:) "XDvi" EXEC xdvi %a(XDvi,Wprowadz nazwe pliku *.dvi:) "Acrobat" EXEC /usr/local/Acrobat3/bin/acroread %a(Acrobat,Wprowadz nazwe pliku *.pdf:) "Xpdf" EXEC xpdf %a(Xpdf,Wprowadz nazwe pliku *.pdf:) "Arkusz kalkulacyjny" EXEC xspread "Tekst" END "X File Manager" EXEC xfm "OffiX Files" EXEC files "TkDesk" EXEC tkdesk "Midnight Commander" EXEC ULUB_TERM -T "Midnight Commander" -e mc "X Gnu debbuger" EXEC xxgdb "Xwpe" EXEC xwpe "Aplikacje" END "Internet" MENU "Przeglądarki" MENU "Netscape" EXEC netscape "Arena" EXEC arena "Lynx" EXEC ULUB_TERM -e lynx %a(Lynx,Podaj URL:) "Przeglądarki" END "Programy pocztowe" MENU "Pine" EXEC ULUB_TERM -T "Program pocztowy Pine" -e pine "Elm" EXEC ULUB_TERM -T "Program pocztowy Elm" -e elm "Xmh" EXEC xmh "Programy pocztowe" END "Emulator terminala" MENU "Minicom" EXEC xminicom "Seyon" EXEC seyon "Emulator terminala" END "Telnet" EXEC ULUB_TERM -e telnet %a(Telnet,Podaj nazwe hosta:) "Ssh" EXEC ULUB_TERM -e ssh %a(Ssh,Podaj nazwe hosta:) "Ftp" EXEC ULUB_TERM -e ftp %a(Ftp,Podaj nazwe hosta:) "Irc" EXEC ULUB_TERM -e irc %a(Irc,Podaj swoj pseudonim:) "Ping" EXEC ULUB_TERM -e ping %a(Ping,Podaj nazwe hosta:) "Talk" EXEC ULUB_TERM -e talk %a(Talk,Podaj nazwe uzytkownika, z ktorym chcesz nawiazac polaczenie:) "Internet" END "Editory" MENU "XFte" EXEC xfte "XEmacs" EXEC xemacs || emacs "XJed" EXEC xjed "NEdit" EXEC nedit "Xedit" EXEC xedit "Editres" EXEC editres "VI" EXEC ULUB_TERM -e vi "Editory" END "Dźwięk" MENU "CDPlay" EXEC workbone "Xmcd" EXEC xmcd 2> /dev/null "Xplaycd" EXEC xplaycd "Xmixer" EXEC xmixer "Dźwięk" END "Gry" MENU "Maze" EXEC maze "Karty " EXEC spider "Londownik" EXEC xlander "Szachy " EXEC xboard "Xeyes" EXEC xeyes -geometry 51x23 "Xmahjongg" EXEC xmahjongg "Xlogo" EXEC xlogo "Xroach" EXEC xroach "Xtetris" EXEC xtetris -color "Xvier" EXEC xvier "Xgas" EXEC xgas "Xkobo" EXEC xkobo "xboing" EXEC xboing -sound "XBill" EXEC xbill "Gry" END "Użytki" MENU "Kalkulator" EXEC xcalc "Zegarek" EXEC xclock "Opcje Okna" EXEC xprop | xmessage -center -title 'xprop' -file - "Przeglądarka Fontów" EXEC xfontsel "Szkło Powiększające" EXEC xmag "Mapa Kolorów" EXEC xcmap "XKill" EXEC xkill "Clipboard" EXEC xclipboard "Użytki" END "Selekcyjne" MENU "Kopia" EXEC echo '%s' | wxcopy "Poczta do ..." EXEC ULUB_TERM -name mail -T "Pine" -e pine %s "Serfuj do ..." EXEC netscape %s "Pobierz Manual ..." EXEC MANUAL_SEARCH(%s) "Połącz się z ..." EXEC telnet %s "Pobierz plik z FTP ..." EXEC ftp %s "Selekcyjne" END "Ekran" MENU "Ukryj Pozostałe" HIDE_OTHERS "Pokaż wszystko" SHOW_ALL "Uporządkowanie icon" ARRANGE_ICONS "Odswież" REFRESH "Zablokuj" EXEC xlock -allowroot -usefirst "Zachowaj Sesje" SAVE_SESSION "Wyczyść zachowaną sesje" CLEAR_SESSION "Ekran" END "Wygląd" MENU "Tematy" OPEN_MENU -noext THEMES_DIR $HOME/GNUstep/Library/WindowMaker/Themes WITH setstyle "Style" OPEN_MENU -noext STYLES_DIR $HOME/GNUstep/Library/WindowMaker/Styles WITH setstyle "Ustawienia ikon" OPEN_MENU -noext ICON_SETS_DIR $HOME/GNUstep/Library/WindowMaker/IconSets WITH seticons "Tło" MENU "Jednolite" MENU "Czarny" WS_BACK '(solid, black)' "Niebieski" WS_BACK '(solid, "#505075")' "Indigo" WS_BACK '(solid, "#243e6c")' "Głęboko Niebieski" WS_BACK '(solid, "#224477")' "Fioletowy" WS_BACK '(solid, "#554466")' "Pszeniczny" WS_BACK '(solid, "wheat4")' "Ciemno Szary" WS_BACK '(solid, "#333340")' "Winny" WS_BACK '(solid, "#400020")' "Jednolite" END "Cieniowane" MENU "Zachód Słońca" WS_BACK '(mvgradient, deepskyblue4, black, deepskyblue4, tomato4)' "Niebo" WS_BACK '(vgradient, blue4, white)' "Cieniowany Niebieski" WS_BACK '(vgradient, "#7080a5", "#101020")' "Cieniowane Indigo" WS_BACK '(vgradient, "#746ebc", "#242e4c")' "Cieniowany Fioletowy" WS_BACK '(vgradient, "#654c66", "#151426")' "Cieniowany Pszeniczny" WS_BACK '(vgradient, "#a09060", "#302010")' "Cieniowany Szary" WS_BACK '(vgradient, "#636380", "#131318")' "Cieniowany Winnny" WS_BACK '(vgradient, "#600040", "#180010")' "Cieniowane" END "Obrazki" OPEN_MENU -noext BACKGROUNDS_DIR $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t "Tło" END "Zaoamiętanie Tematu" EXEC getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/"%a(Nazwa tematu,Wpisz nazwe pliku:)" "Zapamiętanie Ustawień Ikon" EXEC geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/"%a(Ustawienia ikon,wpisz nazwe pliku:)" "Wygląd" END "Wyjście" MENU "Przeładowanie" RESTART "Start BlackBox" RESTART blackbox "Start kwm" RESTART kwm "Start IceWM" RESTART icewm "Wyjście..." EXIT "Zabicie sesji..." SHUTDOWN "Wyjście" END "WindowMaker" END �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/plmenu.in������������������������������������������������������������0000644�0001750�0001750�00000004230�13642357774�015066� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������("Applications", ("Info", ("Info Panel", INFO_PANEL), ("Legal", LEGAL_PANEL), ("System Console", EXEC, "xconsole"), ("System Load", SHEXEC, "xosview || xload"), ("Process List", EXEC, "xterm -e top"), ("Manual Browser", EXEC, "xman") ), ("Run...", SHEXEC, "%a(Run,Type command to run:)"), ("XTerm", EXEC, "xterm -sb"), ("Mozilla Firefox", EXEC, "firefox"), ("Workspaces", WORKSPACE_MENU), ("Applications", ("Gimp", SHEXEC, "gimp >/dev/null"), ("Ghostview", EXEC, "ghostview %a(Enter file to view)"), ("Xpdf", EXEC, "xpdf %a(Enter PDF to view)"), ("Abiword", EXEC, "abiword"), ("Dia", EXEC, "dia"), ("OpenOffice.org", ("OpenOffice.org", EXEC, "ooffice"), ("Writer", EXEC, "oowriter"), ("Spreadsheet", EXEC, "oocalc"), ("Draw", EXEC, "oodraw"), ("Impress", EXEC, "ooimpress") ), ("Editors", ("XEmacs", EXEC, "xemacs"), ("Emacs", EXEC, "emacs"), ("XJed", EXEC, "xjed"), ("VI", EXEC, "xterm -e vi"), ("GVIM", EXEC, "gvim"), ("NEdit", EXEC, "nedit"), ("Xedit", EXEC, "xedit") ), ("Multimedia", ("XMMS", ("XMMS", EXEC, "xmms"), ("XMMS play/pause", EXEC, "xmms -t"), ("XMMS stop", EXEC, "xmms -s") ), ("Xine video player", EXEC, "xine"), ("MPlayer", EXEC, "mplayer") ) ), ("Utils", ("Calculator", EXEC, "xcalc"), ("Window Properties", SHEXEC, "xprop | xmessage -center -title 'xprop' -file -"), ("Font Chooser", EXEC, "xfontsel"), ("Magnify", EXEC, "wmagnify"), ("Colormap", EXEC, "xcmap"), ("Kill X Application", EXEC, "xkill") ), ("Selection", ("Copy", SHEXEC, "echo '%s' | wxcopy"), ("Mail To", EXEC, "xterm -name mail -T Pine -e pine %s"), ("Navigate", EXEC, "mozilla %s"), ("Search in Manual", EXEC, "MANUAL_SEARCH(%s)") ), ("Commands", ("Hide Others", HIDE_OTHERS), ("Show All", SHOW_ALL), ("Arrange Icons", ARRANGE_ICONS), ("Refresh", REFRESH), ("Lock", EXEC, "xlock -allowroot -usefirst") ), ("Appearance", OPEN_MENU, "appearance.menu"), ("Session", ("Save Session", SAVE_SESSION), ("Clear Session", CLEAR_SESSION), ("Restart Window Maker", RESTART), ("Start BlackBox", RESTART, blackbox), ("Start IceWM", RESTART, icewm), ("Exit", EXIT) ) ) ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/plmenu.sk.in���������������������������������������������������������0000644�0001750�0001750�00000011157�13431646201�015466� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������("Aplikácie", ("Info", ("Panel Info", INFO_PANEL), ("Panel Legal", LEGAL_PANEL), ("Systémová konzola", EXEC, "xconsole"), ("Zaťaženie systému", SHEXEC, "xosview || xload"), ("Zoznam procesov", EXEC, "xterm -e top"), ("Prehliadač manuálov", EXEC, "xman") ), ("Spustiť...", SHEXEC, "%a(Spustiť,Zadajte príkaz:)"), ("XTerm", EXEC, "xterm -sb"), ("Rxvt", EXEC, "rxvt -bg black -fg white -fn fixed"), ("Pracovné plochy", WORKSPACE_MENU), ("Aplikácie", ("Grafika", ("Gimp", SHEXEC, "gimp >/dev/null"), ("XV", EXEC, "xv"), ("XPaint", EXEC, "xpaint"), ("XFig", EXEC, "xfig") ), ("Správca súborov Xfm", EXEC, "xfm"), ("Správca súborov OffiX", EXEC, "files"), ("LyX", EXEC, "lyx"), ("Netscape", EXEC, "netscape"), ("Ghostview", EXEC, "ghostview %a(Enter file to view)"), ("Acrobat", EXEC, "/usr/local/Acrobat3/bin/acroread %a(Enter PDF to view)"), ("TkDesk", EXEC, "tkdesk") ), ("Editory", ("XFte", EXEC, "xfte"), ("XEmacs", SHEXEC, "xemacs || emacs"), ("XJed", EXEC, "xjed"), ("NEdit", EXEC, "nedit"), ("Xedit", EXEC, "xedit"), ("VIM", EXEC, "xterm -e vim") ), ("Rôzne", ("Xmcd", SHEXEC, "xmcd 2> /dev/null"), ("CD prehrávač", EXEC, "xplaycd"), ("Mixer", EXEC, "xmixer") ), ("Nástroje", ("Kalkulačka", EXEC, "xcalc"), ("Vlastnosti okien", SHEXEC, "xprop | xmessage -center -title 'xprop' -file -"), ("Výber fontu", EXEC, "xfontsel"), ("Emulátor terminálu", EXEC, "xminicom"), ("Lupa", EXEC, "xmag"), ("Paleta", EXEC, "xcmap"), ("Zabiť okno", EXEC, "xkill"), ("Hodiny", EXEC, "asclock -shape"), ("Nástenka", EXEC, "xclipboard") ), ("Výber", ("Kopírovať", SHEXEC, "echo '%s' | wxcopy"), ("Poslať poštu", EXEC, "xterm -name mail -T Pine -e pine %s"), ("Prehliadať web", EXEC, "netscape %s"), ("Hľadať v manuáli", EXEC, "MANUAL_SEARCH(%s)") ), ("Pracovná plocha", ("Skryť ostatné", HIDE_OTHERS), ("Zobraziť všetky", SHOW_ALL), ("Vyrovnať ikony", ARRANGE_ICONS), ("Obnoviť obrazovku", REFRESH), ("Uzamknúť", EXEC, "xlock -allowroot -usefirst"), ("Uložiť sedenie", SAVE_SESSION), ("Zmazať sedenie", CLEAR_SESSION) ), ("Vzhľad", ("Témy", OPEN_MENU, "-noext #wmdatadir#/Themes $HOME/GNUstep/Library/WindowMaker/Themes WITH setstyle"), ("Štýly", OPEN_MENU, "-noext #wmdatadir#/Styles $HOME/GNUstep/Library/WindowMaker/Styles WITH setstyle"), ("Sada ikon", OPEN_MENU, "-noext #wmdatadir#/IconSets $HOME/GNUstep/Library/WindowMaker/IconSets WITH seticons"), ("Pozadie", ("Jedna farba", ("Čierna", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, black)'"), ("Modrá", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#505075\")'"), ("Indigo", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#243e6c\")'"), ("Námornícka modrá", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#224477\")'"), ("Fialová", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#554466\")'"), ("Pšeničná", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, wheat4)'"), ("Tmavosivá", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#333340\")'"), ("Vínová", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#400020\")'") ), ("Prechod farieb", ("Západ slnka", EXEC, "wdwrite WindowMaker WorkspaceBack '(mvgradient, deepskyblue4, black, deepskyblue4, tomato4)'"), ("Obloha", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, blue4, white)'"), ("Odtiene modrej", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#7080a5\", \"#101020\")'"), ("Odtiene indiga", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#746ebc\", \"#242e4c\")'"), ("Odtiene fialovej", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#654c66\", \"#151426\")'"), ("Odtiene pšeničnej", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#a09060\", \"#302010\")'"), ("Odtiene sivej", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#636380\", \"#131318\")'"), ("Odtiene vínovej", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#600040\", \"#180010\")'") ), ("Obrázky", OPEN_MENU, "-noext #wmdatadir#/Backgrounds $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t") ), ("Uložiť tému", SHEXEC, "getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/\"%a(Theme name)\""), ("Uložiť sadu ikon", SHEXEC, "geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/\"%a(IconSet name)\""), ("Konfiguračný nástroj", EXEC, "#wprefs#") ), ("Koniec", ("Reštartovať", RESTART), ("Spustiť BlackBox", RESTART, blackbox), ("Spustiť kwm", RESTART, kwm), ("Spustiť IceWM", RESTART, icewm), ("Koniec", EXIT) ) ) �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/menu.it��������������������������������������������������������������0000644�0001750�0001750�00000007720�13431646201�014525� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // Root Menu definizioni per WindowMaker // // Sintassi: // // <Titolo> <Comando> <Parametri> // // <Titolo> e' la stringa usata per il titolo. Deve essere racchiusa dagli apici // se contiene degli spazi // // <Comando> uno dei seguenti comandi: // MENU - inizio della definizione di un sottomenu // END - fine della definizione di un sottomenu // EXEC <programma> - esegue un programma // SHEXEC <command> - executes a shell command (like gimp > /dev/null) // EXIT - esce dal gestore di finestre (Window Manager) // RESTART [<window manager>] - reinizializza WindowMaker o lancia un altro // window manager // REFRESH - ridisegna l'area di lavoro // ARRANGE_ICONS - riordina le icone sull'area di lavoro // SHUTDOWN - uccide tutti i clienti (e chiude la sessione X window) // WORKSPACE_MENU - aggiunge un submenu per operazioni sull'area di lavoro // SHOW_ALL - mostra tutte le finestre dell'area di lavoro // HIDE_OTHERS -nasconde tutte le finestre dell'area di lavoro eccetto // la finestra attiva (or the last one that received focus) // // <Parametri> e' il programma da eseguire. // // ** Opzioni per la linea di comando in EXEC: // %s - sostituisce con la selezione corrente. Se non e' disponibile nessuna // selezione, il comando e' annullato // %w - sostituisce con l'identificativo della finestra correntemente // selezionata. Se nessuna finestra e' selezionata, viene restituito vuoto // // Si possono generare caratteri speciali (come % e ") con il carattere \ : // esempio: xterm -T "\"ciao mondo\"" (ndt banale, no? ) // // Ciascun comando MENU deve avere un comando END alla fine. // Vedere esempio: #include <wmmacros> "Applicazioni" MENU "Informazioni" MENU "Info Panel..." INFO_PANEL "Legal" LEGAL_PANEL "Carico del Sistema" SHEXEC xosview || xload "Lista dei Processi" EXEC xterm -e top "Ricerca Manuali" EXEC xman "Informazioni" END "XTerm" SHEXEC xterm -sb || color-xterm -sb || xterm -sb "XJed" EXEC xjed "Area di lavoro" WORKSPACE_MENU "Applicazioni" MENU "Grafica" MENU "Gimp" EXEC gimp "XV" EXEC xv "XPaint" EXEC xpaint "XFig" EXEC xfig "Grafica" END "X File Manager" EXEC xfm "OffiX Files" EXEC files "LyX" EXEC lyx "Netscape" EXEC netscape "Ghostview" EXEC ghostview %a(Ghostview) "XDvi" EXEC xdvi %a(XDvi) "Acrobat" EXEC /usr/local/Acrobat3/bin/acroread %a(Acrobat) "TkDesk" EXEC tkdesk "Applicazioni" END "Editori" MENU "XEmacs" SHEXEC xemacs || emacs "XJed" EXEC xjed "NEdit" EXEC nedit "Xedit" EXEC xedit "VI" EXEC xterm -e vi "Editori" END "Varie" MENU "Xmcd" SHEXEC xmcd 2> /dev/null "Xplaycd" EXEC xplaycd "Xmixer" EXEC xmixer "Varie" END "Utilita'" MENU "Calcolatore" EXEC xcalc "Selezione Font" EXEC xfontsel "Lente" EXEC xmag "Mappa Colori" EXEC xcmap "Assassinio X" EXEC xkill "ASClock" EXEC asclock -shape "Clipboard" EXEC xclipboard "Utilita'" END "Selezione" MENU "Invio posta a.." EXEC xterm -name mail -T "Pine" -e pine %s "Navigare" SHEXEC netscape -noraise -remote \ 'openURL(%s,new-window)' || netscape %s "Ricerca nei Manuali" SHEXEC MANUAL_SEARCH(%s) "Selezione" END "Area di lavoro" MENU "Nascondi Altri" HIDE_OTHERS "Mostra Tutti" SHOW_ALL "Riordina Icone" ARRANGE_ICONS "Refresh" REFRESH "Lock" EXEC xlock -allowroot -usefirst "Sfondo" MENU "Nessuno" EXEC CLEARROOT "Nero" WS_BACK '(solid, black)' "Blu" WS_BACK '(solid, "#505075")' "Rosso" WS_BACK '(solid, "#554466")' "Beige" WS_BACK '(solid, wheat4)' "Grigio scuro" WS_BACK '(solid, "#333340")' "Vinaccia" WS_BACK '(solid, "#400020")' "Sfondo" END #if (DEPTH>8) // Setup some gradient schemes for newbies and lazy people // E' necessario rieiniziare dopo avere selezionato il gradiente. #include <gradients.menu> #endif "Salva area di lavoro" EXEC SAVE_WORKSPACE "Area di lavoro" END "Uscire" MENU "Restart" RESTART "Avviare AfterStep" RESTART afterstep "Uscire..." EXIT "Uscire dalla sessione..." SHUTDOWN "Uscire" END "Applicazioni" END ������������������������������������������������WindowMaker-0.95.9/WindowMaker/menu.es��������������������������������������������������������������0000644�0001750�0001750�00000010376�13431646201�014521� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // Definición del Menu de Aplicaciones para WindowMaker (en ESPAÑOL) // // La sintaxis es: // // <Título> <Comando> <Parámetros> , donde : // // // <Título> cadena de texto usada como el título.Tiene que estar entre "" // // <Comando> un comando de los siguientes : // MENU - comienza la definición del (sub)menu. // END - termina la definición del (sub)menu. // EXEC <programa> - ejecuta un programa externo // EXIT - sale del entorno gráfico // RESTART [<entorno gráfico>] - reinicializa WindowMaker o arranca otro entorno // REFRESH - refresca el escritorio // ARRANGE_ICONS - ordena los iconos del escritorio // SHUTDOWN - cierra todas las aplicaciones (y cierra la sesión de las X) // WORKSPACE_MENU - Añade un submenú para las operaciones del area de trabajo // SHOW_ALL - muestra todas las ventanas en el área de trabajo // HIDE_OTHERS - oculta toda las ventanas del area de trabajo, // excepto la que tiene el foco (o la ultima que haya recibido el foco) // // <Parametros> es el programa a ejecutar. // // ** Opciones para a linea de comando EXEC : // %s - se sustituye por la corriente seleción. Si la selección no es posible , // el comando es cancelado // %w - se sustituye con la corrente ID de la ventana selecionada . Si no hay // ventanas selecionadas , no se devuolve nada. // // Se puede anular carácteres especiales (como % e ") con el caracter \ : // ejemplo: xterm -T "\"Terminal X\"" // // A cada estamento de MENU se debe de corresponder un estamento END al final // Observa los ejemplos: #include <wmmacros> "Menu Principal" MENU "Informacion ..." MENU "Copyright..." SHEXEC xmessage -center -font variable -title \ 'WindowMaker 'WM_VERSION -file ~/GNUstep/Library/WindowMaker/Copyright "Carga del sistema" SHEXEC xosview || xload "Lista de tarifas (top)" EXEC rxvt -ls -fg white -bg black -fn vga -e top "Manual" EXEC xman "Informacion ..." END "Emuladores ..." MENU "Terminal X" EXEC xterm "Emulador de Terminal" EXEC rxvt -ls -fg white -bg black -fn vga "Emuladores ..." END "Aplicaciones ..." MENU "Graficos ..." MENU "Gimp" EXEC gimp "XV" EXEC xv "XPaint" EXEC xpaint "XFig" EXEC xfig "Graficos ..." END "Editores ..." MENU "XEmacs" SHEXEC xemacs || emacs "XJed" EXEC xjed "NEdit" EXEC nedit "Xedit" EXEC xedit "VI" EXEC xterm -e vi "Editores ..." END "Multimedia ..." MENU "Xmcd" SHEXEC xmcd 2> /dev/null "Xplaycd" EXEC xplaycd "Xmixer" EXEC xmixer "Multimedia ..." END "Utilidades ..." MENU "Calculadora" EXEC xcalc "Selector de fuente" EXEC xfontsel "Lupa" EXEC xmag "Mapa de colores" EXEC xcmap "XKill" EXEC xkill "ASClock" EXEC asclock -shape "Portapapeles" EXEC xclipboard "Utilidades ..." END "X File Manager" EXEC xfm "OffiX Files" EXEC files "LyX" EXEC lyx "Ghostview" EXEC ghostview "Acrobat" EXEC /usr/local/Acrobat3/bin/acroread "TkDesk" EXEC tkdesk "Aplicaciones ..." END "Internet ..." MENU "Correo" EXEC xterm -name mail -T "Pine" -e pine %s "Navegar" EXEC netscape %s "Buscar en el manual" EXEC xterm -name manualBrowser -e man %s "Internet ..." END "Configurar Area de Trabajo ..." MENU "Fondo ..." MENU "Ninguno" EXEC CLEARROOT "Negro" WS_BACK '(solid, black)' "Azul" WS_BACK '(solid, "#505075")' "Violeta" WS_BACK '(solid, "#554466")' "Amarillo" WS_BACK '(solid, wheat4)' "Gris oscuro" WS_BACK '(solid, "#333340")' "Granate" WS_BACK '(solid, "#400020")' "Fondo ..." END #if (DEPTH>8) // Debes de reinicializar para que los cambios se efectúen #include <gradients.menu> #endif "Cerrar otras" HIDE_OTHERS "Mostrar todas" SHOW_ALL "Alinear iconos" ARRANGE_ICONS "Refrescar" REFRESH "Salvapantallas" EXEC xlock -allowroot -usefirst "Grabar Area de trabajo" EXEC SAVE_WORKSPACE "Configurar Area de Trabajo ..." END "Areas de Trabajo ..." WORKSPACE_MENU #if (UID==0) // Só o ve root ou usuarios con UID=0 "Sistema" MENU // Panel de control "Panel de control de RH" EXEC control-panel "Sistema" END #endif "Salir ..." MENU "Reinicializar" RESTART "Iniciar AfterStep" RESTART afterstep "Salir" EXIT "Salir de la sesion" SHUTDOWN "Salir ..." END "Menu Principal" END ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/menu.bg.in�����������������������������������������������������������0000644�0001750�0001750�00000026701�13431646201�015106� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Дефиниция на главното меню за WindowMaker * * Синтаксисът е: * * <Заглавие> [SHORTCUT <комбинация>] <команда> <параметри> * * <Заглавие> е какъв да е низ, който ще се използва като название на * съответния елемент от менюто. Ако включва интервали, трябва да се * огради с ". * * SHORTCUT определя клавишна комбинация ("бърз клавиш") за този * елемент на менюто. <комбинация> има същия синтаксис, както клавишните * комбинации във файла $HOME/GNUstep/Defaults/WindowMaker, * напр. RootMenuKey или MiniaturizeKey. * * Не може да се посочва клавишна комбинация за MENU и OPEN_MENU. * * <Command> може да бъде: * MENU - започва дефиниция на (под)меню * END - завършва дефиницията на (под)меню * OPEN_MENU - чете менюто от файл, програмен канал или * файловете от директория, евентуално предшествани * от команда. * WORKSPACE_MENU - добавя подменю за работните места. Може да се * използва само едно такова подменю. * EXEC <program> - изпълнява външна програма * SHEXEC <command> - изпълнява команда на командната обвивка * (напр. gimp > /dev/null) * EXIT - излиза от администратора на прозорците * RESTART [<администратор>] - рестартира WindowMaker или * страртира друг администратор на * прозорците * REFRESH - опреснява (прерисува) работната площ * ARRANGE_ICONS - преподрежда иконките на работното място. * SHUTDOWN - убива всички клиенти (и приключва X-сесията) * SHOW_ALL - показва всички скрити прозорци на работното място * HIDE_OTHERS - скрива всички прозорци на работното място, освен * имащия фокус (или последния получавал фокус) * SAVE_SESSION - запазва текущото състояние на работната площ, в * това число всички стартирани приложения, * местата на прозорците им, на дока, * кламера. Това състояние ще бъде възстановено * при всяко стартиране на WindowMaker, докато * наново не се използва SAVE_SESSION или * CLEAR_SESSION. Ако SaveSessionOnExit = Yes в * конфигурационната база-данни на Window Maker, * то при всяко излизане от WindowMaker * състоянието на сесията автоматично ще бъде * запазено. * CLEAR_SESSION - изтрива данните за по-рано запазена * сесия. Това няма никакъв ефект, ако * SaveSessionOnExit = Yes. * INFO - показва панела "Инфо". * * Синтаксис на OPEN_MENU: * 1. Меню от файл: * // отваря файл-меню, който трябва да съдържа меню и го вмъква * // на текущото място. * OPEN_MENU файл-меню * 2. Меню от програмен канал: * // пуска командата и очаква тя да генерира меню на стандартния * // си изход. * OPEN_MENU | команда * 3. Меню от директория: * // Отваря едната или повече директории и прави сортирано * // азбучно меню за всички изпълними файлове и поддиректории в * // тях. * OPEN_MENU директория1 [директория2 ...] * 4. Меню от директория с команда * // Отваря едната или повече директории и прави сортирано * // азбучно меню за всички поддиректории и четими файлове, като * // всеки от файловете ще бъде обработван с командата. * OPEN_MENU [опции] директория1 [директория2 ...] WITH команда -опции * Опции: * -noext Пропуска всичко, което е след * последната точка в името на файла. * * <параметри> е програмата, която трябва да се изпълни. * * ** Опции за командния ред с EXEC: * %s - замества се с избраното в момента * %a(title[,prompt]) - отваря диалогова клетка с заглавие "title" и * незадължителна подкана prompt, след което се * замества с въведеното. * %w - замества се с XID (номера) на прозореца с фокус. * %W - замества се с номера на текущото работно място. * * Преди специалните символи (като % и ") може да поставяте \ за да * загубят специалното си значение: * пример: xterm -T "\"Hello World\"" * * Допустими са и стандартните комбинации като \n * * Всяка команда MENU трябва да има съответна команда END. * * Пример: * * "Проба" MENU * "XTerm" EXEC xterm * // прави подменю със съдържимото от /usr/openwin/bin * "XView приложения" OPEN_MENU "/usr/openwin/bin" * // някои X11-приложения от различни директории * "X11 приложения" OPEN_MENU /usr/X11/bin $HOME/bin/X11 * // за картинки на фона * "Фон" OPEN_MENU -noext $HOME/images /usr/share/images WITH wmsetbg -u -t * // Вмъква style.menu тук. * "Style" OPEN_MENU style.menu * "Проба" END */ #include "wmmacros" "Applications" MENU "Инфо" MENU "Информационен панел..." INFO_PANEL "Лицензионен панел..." LEGAL_PANEL "Системна конзола" EXEC xconsole "Натоварване на системата" SHEXEC xosview || xload "Списък процеси" EXEC xterm -e top "Ръководства" EXEC xman "Инфо" END "Стартирай..." SHEXEC %a(Run,Въведете команда, която да се стартира:) "XTerm" EXEC xterm -sb "Rxvt" EXEC rxvt -bg black -fg white -fn fixed "Работни места" WORKSPACE_MENU "Приложения" MENU "Графични" MENU "Gimp" SHEXEC gimp >/dev/null "XV" EXEC xv "XPaint" EXEC xpaint "XFig" EXEC xfig "Графични" 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 "Редактори" MENU "XFte" EXEC xfte "XEmacs" SHEXEC xemacs || emacs "XJed" EXEC xjed "NEdit" EXEC nedit "Xedit" EXEC xedit "VI" EXEC xterm -e vi "Редактори" END "Разни" MENU "Xmcd" SHEXEC xmcd 2> /dev/null "Xplaycd" EXEC xplaycd "Xmixer" EXEC xmixer "Разни" END "Инструменти" MENU "Калкукатор" EXEC xcalc "Свойства на прозореца" SHEXEC xprop | xmessage -center -title 'xprop' -file - "Избор на шрифт" EXEC xfontsel "Емулатор на терминал" EXEC xminicom "Лупа" EXEC xmag "Цветова палитра" EXEC xcmap "XKill" EXEC xkill "Clipboard" EXEC xclipboard "Инструменти" END "Избор" MENU "Copy" SHEXEC echo '%s' | wxcopy "Mail To" EXEC xterm -name mail -T "Pine" -e pine %s "Navigate" EXEC netscape %s "Search in Manual" SHEXEC MANUAL_SEARCH(%s) "Избор" END "Работно място" MENU "Скрий другите" HIDE_OTHERS "Покажи всички" SHOW_ALL "Подреди иконките" ARRANGE_ICONS "Опресни" REFRESH "Заключи" EXEC xlock -allowroot -usefirst "Запази сесията" SAVE_SESSION "Изчисти запазената сесия" CLEAR_SESSION "Работни места" END "Изглед" MENU "Теми" 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)' "Син" WS_BACK '(solid, "#505075")' "Тъмно виолетово" WS_BACK '(solid, "#243e6c")' "Силно синьо" WS_BACK '(solid, "#180090")' "Мораво" WS_BACK '(solid, "#554466")' "Пшеничен" WS_BACK '(solid, "wheat4")' "Тъмно сив" WS_BACK '(solid, "#333340")' "Винен" WS_BACK '(solid, "#400020")' "Плътен" END "Градиент" MENU "Слънце" WS_BACK '(mvgradient, deepskyblue4, black, deepskyblue4, tomato4)' "Небе" WS_BACK '(vgradient, blue4, white)' "Сини сенки" WS_BACK '(vgradient, "#7080a5", "#101020")' "Виолетови сенки" WS_BACK '(vgradient, "#746ebc", "#242e4c")' "Морави сенки" WS_BACK '(vgradient, "#654c66", "#151426")' "Пшенични сенки" WS_BACK '(vgradient, "#a09060", "#302010")' "Сиви сенки" WS_BACK '(vgradient, "#636380", "#131318")' "Винени сенки" WS_BACK '(vgradient, "#600040", "#180010")' "Градиент" END "Images" OPEN_MENU -noext BACKGROUNDS_DIR $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t "Фон" END "Запази темата" SHEXEC getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/"%a(Theme name,Enter file name:)" "Запази колекцията иконки" SHEXEC geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/"%a(IconSet name,Enter file name:)" "Пособие за настройки" EXEC #wprefs# "Изглед" END "Изход" MENU "Рестартиране" RESTART "Стартирай BlackBox" RESTART blackbox "Стартирай kwm" RESTART kwm "Стартирай IceWM" RESTART icewm "Изход..." EXIT "Изход" END "Приложения" END ���������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Backgrounds/���������������������������������������������������������0000755�0001750�0001750�00000000000�13642365213�015544� 5����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Backgrounds/Makefile.in����������������������������������������������0000644�0001750�0001750�00000037544�13642360054�017544� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = WindowMaker/Backgrounds ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ $(top_srcdir)/m4/ax_pthread.m4 \ $(top_srcdir)/m4/ld-version-script.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/windowmaker.m4 \ $(top_srcdir)/m4/wm_attributes.m4 \ $(top_srcdir)/m4/wm_cflags_check.m4 \ $(top_srcdir)/m4/wm_i18n.m4 \ $(top_srcdir)/m4/wm_imgfmt_check.m4 \ $(top_srcdir)/m4/wm_libexif.m4 $(top_srcdir)/m4/wm_libmath.m4 \ $(top_srcdir)/m4/wm_prog_cc_c11.m4 \ $(top_srcdir)/m4/wm_xext_check.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(defsdatadir)" DATA = $(defsdata_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ GFXLIBS = @GFXLIBS@ GREP = @GREP@ HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLIBS = @INTLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBBSD = @LIBBSD@ LIBEXIF = @LIBEXIF@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXINERAMA = @LIBXINERAMA@ LIBXMU = @LIBXMU@ LIBXRANDR = @LIBXRANDR@ LINGUAS = @LINGUAS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAGICKFLAGS = @MAGICKFLAGS@ MAGICKLIBS = @MAGICKLIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MANLANGDIRS = @MANLANGDIRS@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOLIBS = @PANGOLIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILMOFILES = @UTILMOFILES@ VERSION = @VERSION@ WINGSMOFILES = @WINGSMOFILES@ WINGS_VERSION = @WINGS_VERSION@ WMAKERMOFILES = @WMAKERMOFILES@ WPREFSMOFILES = @WPREFSMOFILES@ WRASTER_VERSION = @WRASTER_VERSION@ WUTIL_VERSION = @WUTIL_VERSION@ XCFLAGS = @XCFLAGS@ XFTCONFIG = @XFTCONFIG@ XFTFLAGS = @XFTFLAGS@ XFTLIBS = @XFTLIBS@ XGETTEXT = @XGETTEXT@ XLFLAGS = @XLFLAGS@ XLIBS = @XLIBS@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBRARY_PATH = @X_LIBRARY_PATH@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ defsdatadir = $(pkgdatadir)/Backgrounds docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ inc_search_path = @inc_search_path@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lcov_output_directory = @lcov_output_directory@ lib_search_path = @lib_search_path@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pixmapdir = @pixmapdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ wprefs_bindir = @wprefs_bindir@ wprefs_datadir = @wprefs_datadir@ defsdata_DATA = BlueImage.jpeg EXTRA_DIST = $(defsdata_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu WindowMaker/Backgrounds/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu WindowMaker/Backgrounds/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-defsdataDATA: $(defsdata_DATA) @$(NORMAL_INSTALL) @list='$(defsdata_DATA)'; test -n "$(defsdatadir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(defsdatadir)'"; \ $(MKDIR_P) "$(DESTDIR)$(defsdatadir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(defsdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(defsdatadir)" || exit $$?; \ done uninstall-defsdataDATA: @$(NORMAL_UNINSTALL) @list='$(defsdata_DATA)'; test -n "$(defsdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(defsdatadir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(defsdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-defsdataDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-defsdataDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am \ install-defsdataDATA install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-defsdataDATA .PRECIOUS: Makefile # 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. .NOEXPORT: ������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Backgrounds/BlueImage.jpeg�������������������������������������������0000644�0001750�0001750�00000020545�13431646201�020166� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������JFIF�������J CREATOR: XV Version 3.10a Rev: 12/29/94 Quality = 75, Smoothing = 0 �C�    $.' ",#(7),01444'9=82<.342�C  2!!22222222222222222222222222222222222222222222222222��)"������������ ����}�!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz�������� ���w�!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz� ��?�-$M(`(Jq �H cs�»].G=-#/ˀO#X=@8UdN�90Nmҝz2A!#9う?خF<vRNQt�!I=8%A=A8V$q֜�#P8^A`~Wӽ-88wt#4V1x|9:1c{ңAtJ�nzk� ǯJ�C_Zp\� =�J@l~v `<iq1Fzp;P&''֓ :8sJ!F �.h X{sQFrI=M$@w�^(R:v>{J:`:L瞿6?Z2$#gǶȨKdg4$qZ�ybn$Jnoրg�?4$d!YYq3܎I $"vG'�u@ >l=N9NP!pr9�Qo *^�<PF@/GՉǧ?܏�ѧag�inM.ry}M9c,r}} ϷZSjUBqpz,",GZs8+P9{x恏.Oҕr9W=xCBsށ a┡^YH8ϵ(82eۂG ;ߥ1-yIg: x@XБMjVœq crqE pl }qR n{ J�a=:M߈8'Q?ZMtZ�D sR1k!Ak` 9>2qJA Ӟ?&!Қ9>zӃq1{S#Oz�w8?4G8|t=;R$mgێQpRI4;zrirS6gP)`sܚnFAo#~Kn's@<~'\Nr=9:^OOzc*Twy`6=@BB"꽸<=1LQIAPTs`ؤ$m[֜#)}99(iH~W'R'gHb#FFyjV@ǹn`JwMX2[=O׭'Nyǯj�3{9X8H{P!$}}I秧AK��J\{ cTRI�pA0J$gJn;hAOW%Fހ&J)BbqϨ4(J8)Iy'ߓ@FHq2F)$'<Q22;\#nGSSp\R#P1wlקz]V+ӮiXy~�A韭4gf'}N% 9D@gy=)�?A'T.G Ub3ӟ=H)$g'�ƀ(}ORI9<�S�}.B8JZ7=8Ҁ\1}zӆ{z hI .z`~4W%J2�:ҔDŀsh^Mǭ!}ˆPޝ{zgLn$P縧׌0oaLG^rM4"x=~t-2rN�3�Aa8!lq( I^x灎1ҁ I823pO lR;Aɠc{юzx�S1Ͻv=͏ d0*|✻Ur3ҁF=X,�?ʗpʝK�;eH8�+?ZY\n 9+@T){�SB{怪8(b }h'!R#OgzH#�; x{= HIr(zOCBi`={>R ׷Nhs7J0GW�^S8gL�#= #nߗ NiX@r)N@ƕԟ+ �Ii3@= _;fqv'�q??Fة 99#?B�"rsS8|)>�6Tg )?.;x;}2H&Rnb9~{�:d(ͤswSdO'Fr8Ҁ ?*p FppqU͂Wv<׮h܎( YA2I d4\/=H@t^?֢ 11)GALX:@sK^)L vsFP=Ҍ|ڗv \10�hvzK}3B:s@sNO?gT`:NszP ~V<n2gғRiXcx89z1֣ѿ! %H Z]hƆw{qRr;R$LaڀaGR:zh:PL|Uxql ��=y=FÌ@+m4L@1�\�MXp:H]›@4dM:~4nsKFy�lWǧy}ۋ`u�мdҌ>i}:N3Ƕh�iIcRd)R�F9L>�`pH~_}z�Ly9A$Ø`|7қ8(V �N @jv$miJÚ4?<9b�M�OҔs“ A)IOQt*O+wC8=1C* #hSJB8�3^zQNPT!}E��  gN@I`2{\.KcҘT~�K9q\zSG1ր77LPq}2vNs�)"u*:7L ȡWN*Gjzq t qI@Z`\:GF'q P 1Hn2s,2G4scۊ�pZL!3SE+q6 ր?更u 3I@qQ@# <6I=O?cwӟBrq r~8-{eOQon=KH98�b$Pt86W Ȩpqh9=X{wv'4;Tf?Ҁ H�ӀmB$)r:g?ʀ�)qM?:2s99AyE�(89�;N<ڛP2?�89c @>z�PcrIN!TҸ6qZ$9m�7x-Gv.3@ќ6qvP8 ӭ@s" :@ÎL`ȫ'\ <k�}�:n~\;Ih9G4qOi# jip9C]8M9'<+�Rz�sr}iBqReǨc:g)VC"c<1 UQn499s9@F}Oրwgg :g<S TiA玤t�9B$Yh G4п0ϵ8/u# xC�E鲒N;g#1@ pOi$=9�Sr[\3hvFs3�֦OUz q`@9QqPUJpPG'?J�`8ןq(ۓÜ)#;ӕAϡ=y�@# x9qבڀIorۇsҁy1sS`2=yGnq1c9s)H#8鎔%ySO1<{\u})U'Ўw}iKmR}1ǁ9H)�x`/R9 @ <SK��^`n;ߚ_8�{�ZfI'ZP =yҜr7s 'ǭi &aQ)Up y ӚH<g�.;H81KAdBx9܌{ڗoP7J1qNRF@9 sJpF#sa&OqK9q0[vWv?JCzzv\ds€$fe@sTxFI֕F}itJ�C�Z\aA=wW$`a9luM?`p\?L.2F? 7zdg8D zI*}=)8Jn$.34�S7i29?M'RdH H~F:R4 w#$pI&@?z<q}K>g<~qL4Px�><pOzk+.3u\8vxt�6~ҀXUɥq^E"�] A&aR1K>\H 2W `zEG)oӎ�h4AO4}9c,r>�<u rqzc*gfcF[t"�t})\r}8m=&@c)ʁi9ʃzHc#a(Te])RSSd˷'i<?Ɠ9 #=ZnM+ nIP2r}(�^J@2qޜ��S)v<ny9_jR0FG8tU<Q@Np<s�ץth r:P!zsi!~n3Ȧ�?hNI2GH\ޓqwO7h'�JXwN@y9@Üzi Ďw)w rO>zNs.OS63�zH9S�R$MHO%��x93Nr@Stc\ѐ?J*HR;wA+u"P})w)y'2:i M001I*`*8NcHLS�xO$'M�0}.=x8JP8ϯP{8�:M<8@ >9 PW%y?J,qϹO� A9 PpGt!>$uR)B&b S  Upr20?:�ie,G`0>Qh֣enBzLR҅ wÀ ϨFOy#4gOr{Mnn<S dAh+q09$~Oc=K@F�qЍvNN ?J�F E7}3O^x=�֕@�<PC$œA�gJTsϡ�b8Jܯ֘tuw  @ K?<lpi&\ w'JG?AI<޴�(p99I(cu#$1@#=zRLI?�8b ci70ʭۚvO$ g,N:!?SXM:ךBO}z�cu9Q?қ)7=i`�'>�q�֧vc4rI�G0>ؤ<� irU8sc)Bsch,z08R;C`w<Hr#c}v1@m3NzS$c7`$ߎ�g$x@cnG!$KS 8K0ǿQ@aL)vxsJvW<�1 B3�@T.Sߎ {ӧPI}h'<BN#Od�8M$ |});jz ^8!$zdr(4&샒=N{Ӂ^F['p2y>4p{`ށ FaN qK7_7)JxHcQOA�= y6qבzSG')?3*h^yN GI $ f1g=IJ�zg9s(zQX4�`c8?zF'us䞙~8'�|'Ҥ9#41!␌K[#�ZpL7?J�c!R3A֤cwH |c�*Θ鎔eN{2 d94�g:g8+J�>ԫۗ={RapxGK< CFNipqGbm�N皌` 8sJ sO̠eG49sڜd,)_S4N|:}iwaz9�rGM�&R@g�q�ף(rYy8|8��OjL$ݙ H)N8�FF:i?)4ER|7^?NqΣ �]%@Uv9:r ;H �z=}(;O<4(98ퟭ�)@:MS۞#Sրb2}X`)<gr)M< "CO7kq9^H$@YNR)v8qNXdzvI8*z;ž>fhLd7qM0sM<OJ�wX1 NNtS3bI9t�7ҙ3<v [#ځ 8=8#ӿyy�=Jx(@=)܀ҢGSt(ܐ镠B qO�pxRt>�7#HN9㎹`qB63\0sѴӊrR@'}(v>Tv')p�ݻ>ʣ*TqspI;y:z zҏ@zd}M2@sL h q7�I# >/! PW:qLݛ` 8 jA'4Rօ 2N4<+} �#QK�4�p8'pr>ɿֈ֧—P;旑Α~ՈKv!i9)+ 8$rzIRl � <k(PRo;E+Զ�Mێ0O;_Oi� }O^ާ8 byQTS4-Ɔ#, My}iG�x#LNNѝ{S(p$ x_�]8tb*_+rN?"cn8)uofc(L;!b~z zZabe:7@c=}?z�xR)�A^H#9w$44nCE.[o%r?�����������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Backgrounds/Makefile.am����������������������������������������������0000644�0001750�0001750�00000000151�13431646201�017510� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ defsdatadir = $(pkgdatadir)/Backgrounds defsdata_DATA = BlueImage.jpeg EXTRA_DIST = $(defsdata_DATA) �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/menu.da��������������������������������������������������������������0000644�0001750�0001750�00000023030�13431646201�014465� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Hovedmenu for WindowMaker. * * Syntaks: * * <Titel> [SHORTCUT <Genvej>] <Kommando> <Parametre> * * <Titel> er en tekst som anvendes som titel i menuen. Teksten * skal omgives med " hvis den indeholder mellemrum. * * SHORTCUT angiver en genvej for menuobjektet. <Genvej> har samme * syntaks som genvejene i filen $HOME/GNUStep/Defaults/WindowMaker. * * Man kan ikke angive en genvej for kommandoerne MENU og OPEN_MENU. * * <Kommando> kan være et af følgende: * MENU - starter (under)menu definition. * END - afslutter (under)menu definition. * OPEN_MENU - åbner en menu fra en fil, pipe eller indholdet af * et katalog, eventuelt med en kommando forrest. * WORKSPACE_MENU - tilføjer en undermenu med arbejdsbords- * kommandoer. Kun WORKSPACE_MENU er tilladt. * EXEC <program> - kører et eksternt program. * SHEXEC <command> - executes a shell command (like gimp > /dev/null) * EXIT - afslutter WindowMaker (men ikke X). * RESTART [<window manager>] - genstarter WindowMaker eller starter en * anden window manager. * REFRESH - genopfrisker skærmen. * ARRANGE_ICONS - arrangerer ikonerne på arbejdsbordet. * SHUTDOWN - afslutter alle programmer og afslutter X-værten. * SHOW_ALL - viser alle vinduer på skrivebordet. * HIDE_OTHERS - skjuler alle vinduer på skrivebordet på nær det * markerede (eller det sidst markerede). * SAVE_SESSION - gemmer arbejdsbordets indstillinger. Dvs. alle * aktive programmer (størrelse, position, arbejdsbord, * hvilken dock/clip, de startede fra, om de er minimeret, * skygget eller gemt. Husker også hvilket arbejdsbord * brugeren var på. Alt bliver genskabt ved hver opstart * indtil næste gang man vælger SAVE_SESSION eller * CLEAR_SESSION. Hvis SaveSessionOnExit = Yes i * WindowMakers domænefil så gemmes indstillingerne * automatisk ved hvert exit og enhver SAVE_SESSION og * CLEAR_SESSION (se nedenfor) overskrives. * CLEAR_SESSION - sletter alle tidligere gemte indstillinger. * Har ingen effekt hvis SaveSessionOnExit er slået til. * INFO - viser Info Panel. * * OPEN_MENU syntaks: * 1. Filmenuhåndtering. * // åbner fil.menu, som skal indeholde en gyldig menufil, og indlæser * // indholdet på den nuværende position. * OPEN_MENU fil.menu * 2. Pipe-menuhåndtering. * // åbner kommando og anvender dens stdout til at konstruere menu. * // Kommandoens output skal være en gyldig menubeskrivelse. Det er * // lige meget om der er mellemrum mellem '|' og selve kommandoen. * OPEN_MENU | kommando * 3. Kataloghåndtering. * // åbner en eller flere kataloger og konstruerer en menu med * // alle underkataloger og eksekverbare filer i dem sorteret * // alfabetisk. * OPEN_MENU /et/katalog [/et/andet/katalog ...] * 4. Kataloghåndtering med kommando. * // Åbner et eller flere kataloger og konstruerer en menu med * // alle underkataloger og læsbare filer sorteret alfabetisk, * // hver med en kommando forrest. * OPEN_MENU /et/katalog [/et/andet/katalog ...] WITH kommando -argument * * * <Parametre> er programmet som skal udføres. * * ** Alternativer for kommandolinie i EXEC: * %s - erstat med den aktive markering. * %a(meddelelse) - åbner en input box med meddelelsen og indsætter * din skrevne tekst. * %w - erstat med XID for det markerede vindue. * * Du kan bruge '\' i stedet for specialtegn (som % og ") f ex: * xterm -T "\"Hello World\"" * * Du kan også bruge tegnkoder som f.eks \n. * * Hvert MENU-udsagn skal have et matchende END-udsagn som afslutning. * * Eksempel: * * "Test" MENU * "XTerm" EXEC xterm * // 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 $HOME/bin/X11 * // sæt et baggrundsbillede * "Baggrund" OPEN_MENU $HOME/images /usr/share/images WITH wmsetbg -u -t * // indføjer style.menu her * "Stil" OPEN_MENU style.menu * "Test" END */ #include "wmmacros" "Applikationer" MENU "Info" MENU "Info Panel..." INFO_PANEL "Copyright..." LEGAL_PANEL "Systemkonsol" EXEC xconsole "Systembelastning" SHEXEC xosview || xload "Procesliste" EXEC xterm -fg wheat -bg black -fn 6x10 -geometry 80x50 -e top "Manualer" EXEC xman "Info" END "Kør..." SHEXEC "%a(Kør,Indtast kommando der skal udføres:)" "XTerm" EXEC xterm -sb "Rxvt" EXEC rxvt -bg black -fg white "Arbejdsborde" WORKSPACE_MENU "Applikationer" MENU "Grafik" MENU "Gimp" SHEXEC gimp >/dev/null "XV" EXEC xv "XPaint" EXEC xpaint "XFig" EXEC xfig "Grafik" END "X Filhåndtering" EXEC xfm "OffiX Files" EXEC files "LyX" EXEC lyx "Netscape" EXEC netscape "Ghostview" EXEC ghostview %a(GhostView,Indtast filnavn) "Acrobat" EXEC /usr/local/Acrobat3/bin/acroread %a(Acrobat,Indtast PDF-filnavn) "TkDesk" EXEC tkdesk "Applikationer" END "Tekstbehandling" MENU "XFte" EXEC xfte "Emacs" SHEXEC xemacs || emacs "XJed" EXEC xjed "NEdit" EXEC nedit "Xedit" EXEC xedit "VI" EXEC xterm -e vi "Tekstbehandling" END "Diverse" MENU "Xmcd" SHEXEC xmcd 2> /dev/null "Xplaycd" EXEC xplaycd "Xmixer" EXEC xmixer "Diverse" END "Tilbehør" MENU "Lommeregner" EXEC xcalc "Vindues Egenskaber" SHEXEC xprop | xmessage -center -title 'xprop' -file - "Vælg skrifttype" EXEC xfontsel "Terminalemulator" EXEC xminicom "Forstørrelsesglas" EXEC xmag "Farver" EXEC xcmap "XKill" EXEC xkill "ASClock" EXEC asclock -shape "Udklipsbord" EXEC xclipboard "Tilbehør" END "Markeret" MENU "Kopier" SHEXEC echo '%s' | wxcopy "Send e-post til" EXEC xterm -name mail -T "Pine" -e pine %s "Indtast URL" EXEC netscape %s "Søg i manual" SHEXEC MANUAL_SEARCH(%s) "Markeret" END "Arbejdsbord" MENU "Skjul andre" HIDE_OTHERS "Vis alle" SHOW_ALL "Arranger ikoner" ARRANGE_ICONS "Genindlæs" REFRESH "Lås" EXEC xlock -allowroot -usefirst "Gem miljø" SAVE_SESSION "Slet gemt miljø" CLEAR_SESSION "Arbejdsbord" END "Udseende" MENU "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)' "Blå" WS_BACK '(solid, "#505075")' "Indigo" WS_BACK '(solid, "#243e6c")' "Mørkeblå" WS_BACK '(solid, "#224477")' "Lilla" WS_BACK '(solid, "#554466")' "Hvede" WS_BACK '(solid, "wheat4")' "Mørkegrå" WS_BACK '(solid, "#333340")' "Bordeaux" WS_BACK '(solid, "#400020")' "Ensfarvet" END "Nuancer" MENU "Solopgang" WS_BACK '(mvgradient, deepskyblue4, black, deepskyblue4, tomato4)' "Himmel" WS_BACK '(vgradient, blue4, white)' "Blå Skygger" WS_BACK '(vgradient, "#7080a5", "#101020")' "Indigo Skygger" WS_BACK '(vgradient, "#746ebc", "#242e4c")' "Lilla Skygger" WS_BACK '(vgradient, "#654c66", "#151426")' "Hvede Skygger" WS_BACK '(vgradient, "#a09060", "#302010")' "Grå Skygger" WS_BACK '(vgradient, "#636380", "#131318")' "Bordeaux Skygger" WS_BACK '(vgradient, "#600040", "#180010")' "Flag" WS_BACK '(mdgradient, green, red, white, green)' "Nuancer" END "Billeder" OPEN_MENU -noext BACKGROUNDS_DIR $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t "Baggrund" END "Gem Tema" SHEXEC getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/"%a(Tema navn,Indtast navn:)" "Gem Ikonsæt" SHEXEC geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/"%a(Ikonsæt navn,Indtast navn:)" "Udseende" END "Afslut" MENU "Genstart" RESTART "Start Blackbox" RESTART blackbox "Start kwm" RESTART kwm "Start IceWM" RESTART icewm "Afslut..." EXIT "Afslut" END "Applikationer" END ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/plmenu.es.in���������������������������������������������������������0000644�0001750�0001750�00000011233�13431646201�015453� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������("Aplicaciones", ("Informacion", ("Panel de Informacion", INFO_PANEL), ("Legal", LEGAL_PANEL), ("Consola", EXEC, "xconsole"), ("Carga del Sistema", SHEXEC, "xosview || xload"), ("Lista de Procesos", EXEC, "xterm -e top"), ("Paginas del Manual", EXEC, "xman") ), ("Ejecutar...", SHEXEC, "%a(Run,Type command to run:)"), ("XTerm", EXEC, "xterm -sb"), ("Rxvt", EXEC, "rxvt -bg black -fg white -fn fixed"), ("Espacio de Trabajo", WORKSPACE_MENU), ("Aplicaciones", ("Graficas", ("Gimp", SHEXEC, "gimp >/dev/null"), ("XV", EXEC, "xv"), ("XPaint", EXEC, "xpaint"), ("XFig", EXEC, "xfig") ), ("Explorador de Archivos", EXEC, "xfm"), ("OffiX", EXEC, "files"), ("LyX", EXEC, "lyx"), ("Netscape", EXEC, "netscape"), ("Ghostview", EXEC, "ghostview %a(Escribe el archivo que desees ver:)"), ("Acrobat", EXEC, "/usr/local/Acrobat3/bin/acroread %a(Escribe el archivo PDF que desees ver:)"), ("TkDesk", EXEC, "tkdesk") ), ("Editores", ("XFte", EXEC, "xfte"), ("XEmacs", SHEXEC, "xemacs || emacs"), ("XJed", EXEC, "xjed"), ("NEdit", EXEC, "nedit"), ("Xedit", EXEC, "xedit"), ("VI", EXEC, "xterm -e vi") ), ("Varios", ("Xmcd", SHEXEC, "xmcd 2> /dev/null"), ("Xplaycd", EXEC, "xplaycd"), ("Xmixer", EXEC, "xmixer") ), ("Utilidadess", ("Calculadora", EXEC, "xcalc"), ("Propiedades de las ventanas", SHEXEC, "xprop | xmessage -center -title 'xprop' -file -"), ("Seleccionar fuente", EXEC, "xfontsel"), ("Emulador de terminal", EXEC, "xminicom"), ("Usar la lupa", EXEC, "xmag"), ("Mapa de colores", EXEC, "xcmap"), ("XKill", EXEC, "xkill"), ("ASClock", EXEC, "asclock -shape"), ("Portapapeles", EXEC, "xclipboard") ), ("Seleccion", ("Copiar", SHEXEC, "echo '%s' | wxcopy"), ("Enviar por correo", EXEC, "xterm -name mail -T Pine -e pine %s"), ("Navegar", EXEC, "netscape %s"), ("Buscar en el manual", EXEC, "MANUAL_SEARCH(%s)") ), ("Escritorio", ("Esconder otros", HIDE_OTHERS), ("Mostrar todos", SHOW_ALL), ("Arreglar iconos", ARRANGE_ICONS), ("Refrescar", REFRESH), ("Protector de pantalla", EXEC, "xlock -allowroot -usefirst"), ("Guardar sesion", SAVE_SESSION), ("Borrar sesion", CLEAR_SESSION) ), ("Apariencia", ("Temas", OPEN_MENU, "-noext /usr/local/share/WindowMaker/Themes $HOME/GNUstep/Library/WindowMaker/Themes WITH setstyle"), ("Estilos", OPEN_MENU, "-noext /usr/local/share/WindowMaker/Styles $HOME/GNUstep/Library/WindowMaker/Styles WITH setstyle"), ("Grupos de iconos", OPEN_MENU, "-noext /usr/local/share/WindowMaker/IconSets $HOME/GNUstep/Library/WindowMaker/IconSets WITH seticons"), ("Papel Tapiz", ("Solido", ("Negro", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, black)'"), ("Azul", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#505075\")'"), ("Indigo", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#243e6c\")'"), ("Aquamarina", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#224477\")'"), ("Purpura", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#554466\")'"), ("Trigo", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, wheat4)'"), ("Gris Obscuro", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#333340\")'"), ("Vino", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#400020\")'") ), ("Gradientes", ("Puesta de sol", EXEC, "wdwrite WindowMaker WorkspaceBack '(mvgradient, deepskyblue4, black, deepskyblue4, tomato4)'"), ("Cielo", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, blue4, white)'"), ("Sombras azules", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#7080a5\", \"#101020\")'"), ("Sombras indigo", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#746ebc\", \"#242e4c\")'"), ("Sombras purpuras", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#654c66\", \"#151426\")'"), ("Sombras trigo", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#a09060\", \"#302010\")'"), ("Sombras grises", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#636380\", \"#131318\")'"), ("Sombras vino", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#600040\", \"#180010\")'") ), ("Imagenes", OPEN_MENU, "-noext /usr/local/share/WindowMaker/Backgrounds $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t") ), ("Guardar tema", SHEXEC, "getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/\"%a(Theme name)\""), ("Guardar iconos", SHEXEC, "geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/\"%a(IconSet name)\""), ("Preferencias", EXEC, "#wprefs#") ), ("Salir", ("Reiniciar", RESTART), ("Empezar BlackBox", RESTART, blackbox), ("Empezar kwm", RESTART, kwm), ("Empezar IceWM", RESTART, icewm), ("Salir", EXIT) ) ) ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/menu.ca��������������������������������������������������������������0000644�0001750�0001750�00000023703�13431646201�014473� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Traducció per Carles Amigó dj_fr3nd@hotmail.com * * Definició per al Menú Principal de Window Maker * * La sintàxis és: * * <Títol> [TECLA <Tecla>] <Comanda> <Paràmetres> * * <Títol> És la cadena de caracters per a fer servur com a titol. Ha * d'estar entre "" si conté espais. * * TECLA especifica una combinació de tecles per aquest objecte. <Tecla> té * la mateixa sintaxis que les combinacions de tecles especificades al * 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 * OPEN_MENU * * <Comanda> pot ser un d'aquests comandes: * MENU - Comença la definició d'un submenú * END - Acaba la definició d'un submenú * OPEN_MENU - Obre el contingut d'un menú desde un fitxer, una * canonada (pipe), o desde el contingut de un(s) * directori(s) i eventualment pot precedir-li algun * comanda * WORKSPACE_MENU - Afageix el menú de operacions del escriptori. Tan * sols es permet un WORKSPACE_MENU * EXEC <programa> - Executa un programa extern * EXIT - Surt del gestor de finestres * RESTART [<Gestor de finestres>] - Rearranca windowmaker o bé un * altre gestor de finestres * REFRESH - Refresca l'escriptori * ARRANGE_ICONS - Alinea les icones del escriptori * SHUTDOWN - Mata tots els clients (i tanca la sessió de les X Windows) * SHOW_ALL - Ensenya totes les finestres de l'escriptori * HIDE_OTHERS - Oculta totes les finestres de l'escriptori excepte la * actual (o la darrera que ha estat activa) * SAVE_SESSION - Guarda l'estat actual de l'escriptori, que inclou * totes les aplicacions en execució, la seva geometria, la * posició en pantalla, l'escriptori en que estaven, el dock * o el clip desde on van ser executades, i si estaven * minimitzades, ocultes o plegades. També guarda l'escriptori * que és usat en aquest moment. Tot això serà restaurat el * pròxim cop que s'arrenqui Window Maker fins que es faci un * altre SAVE_SESSION o CLEAR_SESSION. Si SaveSessionOnExit = * Yes; el fitxer de domini de Window Maker, llavors la sessió * es guardarà cada cop que es surt de Window Maker, * sobreescribint qualsevol SAVE_SESSION o CLEAR_SESSION * (veure avall) * CLEAR_SESSION - Borra qualsevol sessió guardada anteriorment. No té * cap efecte si SaveSessionOnExit és verdader * * OPEN_MENU sintàxis: * 1. Fent servir fitxers de menú * // Obre un fitxer.menu que ha de ser un fitxer de menú vàlid i * // l'inserta a la posició actual * OPEN_MENU fitxer.menu * 2. Fent servir canonades (pipes) en el menú * // executa un programa i fa servir la seva sortida per fer el menú * // La sortida del programa ha de seguir el format de menú * // L'espai entre '|' i la comanda, és opcional. * OPEN_MENU | comanda * 3. Obrint directoris * // Obre un o més directoris i construeix el menu amb tots els * // directoris i els fitxers executables, ordenats alfabeticament * OPEN_MENU /qualsevol/directori [/qualsevol/altre/directori ...] * 4. Obrint directoris amb un programa * // Obre un o més directoris i construeix el menu amb tots els * // directoris i els fitxers, ordenats alfabeticament, i * // executant-los amb un programa * OPEN_MENU /qualsevol/directori [/qualsevol/altre/directori ...] WITH * comanda -opcions * * * <Paràmetres> és el programa a executar * * ** Opcions per a la linea de comanda en EXEC: * %s - substitueix amb la sel·lecció actual * %a(mensaje) - Obre una finestra de dialeg i ho substitueix amb el que * s'hi introdueixi * %w - Ho substitueix per el XID de la finestra actual * * Es poden posar caràcters especials (com % i ") amb el caràcter \ : * ex: xterm -T "\"Hola Món\"" * * També pots fer servir comandes de escapament, com \n * * Cada sentència de MENU ha de tenir una sentència de END que l'acavi * * Exemple: * * "Test" MENU * "XTerm" EXEC xterm * // 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 $HOME/bin/X11 * // algunes imatges de fondo de l'escriptori * "Background" OPEN_MENU $HOME/images /usr/share/images WITH wmsetbg -u -t * // inserta el fitxer style.menu * "Style" OPEN_MENU style.menu * "Test" END */ #include "wmmacros" "Aplicacions" MENU "Informació" MENU "Info Panel..." INFO_PANEL "Legal..." LEGAL_PANEL "Consola del Sistema" EXEC xconsole "Càrrega del Sistema" SHEXEC xosview || xload "Llista de Processos" EXEC xterm -e top "Manual d'instruccions" EXEC xman "Informació" END "XTerm" EXEC xterm -sb "Rxvt" EXEC rxvt -bg black -fg white -fn fixed "Escriptoris" WORKSPACE_MENU "Aplicacions" MENU "Gràfics" MENU "Gimp" SHEXEC gimp >/dev/null "XV" EXEC xv "XPaint" EXEC xpaint "XFig" EXEC xfig "Gràfics" END "X File Manager" EXEC xfm "OffiX Files" EXEC files "LyX" EXEC lyx "Netscape" EXEC netscape "Ghostview" EXEC ghostview %a(Enter file to view) "Acrobat" EXEC /usr/local/Acrobat3/bin/acroread %a(Enter PDF to view) "TkDesk" EXEC tkdesk "Aplicacions" END "Editors" MENU "XFte" EXEC xfte "XEmacs" SHEXEC xemacs || emacs "XJed" EXEC xjed "NEdit" EXEC nedit "Xedit" EXEC xedit "VI" EXEC xterm -e vi "Editors" END "Miscel·lani" MENU "Xmcd" SHEXEC xmcd 2> /dev/null "Xplaycd" EXEC xplaycd "Xmixer" EXEC xmixer "Miscel·lani" END "Utilitats" MENU "Calculadora" EXEC xcalc "Propietats de la finestra" SHEXEC xprop | xmessage -center -title 'xprop' -file - "Sel·lecciona una Font" EXEC xfontsel "Emulador de Terminal" EXEC xminicom "Lupa" EXEC xmag "Mapa de Color" EXEC xcmap "XKill" EXEC xkill "Portapapers" EXEC xclipboard "Utilitats" END "Sel·lecció" MENU "Copiar" SHEXEC echo '%s' | wxcopy "Enviar a" EXEC xterm -name mail -T "Pine" -e pine %s "Enviar al Navegador" EXEC netscape %s "Buscar al Manual" SHEXEC MANUAL_SEARCH(%s) "Sel·lecció" END "Escriptori" MENU "Amagar Altres" HIDE_OTHERS "Ensenyar Totes" SHOW_ALL "Alinear Icones" ARRANGE_ICONS "Refrescar" REFRESH "Bloquejar" EXEC xlock -allowroot -usefirst "Guardar Sessió" SAVE_SESSION "Borrar Sessió Guardada" CLEAR_SESSION "Escriptori" END "Aparença" MENU "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)' "Lila Clar" WS_BACK '(solid, "#505075")' "Blau Clar" WS_BACK '(solid, "#243e6c")' "Blau Lluminós" WS_BACK '(solid, "#224477")' "Purpura" WS_BACK '(solid, "#554466")' "Caki" WS_BACK '(solid, "wheat4")' "Gris Fosc" WS_BACK '(solid, "#333340")' "Lila" WS_BACK '(solid, "#400020")' "Sòlid" END "Degradat" MENU "Posta de Sòl" WS_BACK '(mvgradient, deepskyblue4,black, deepskyblue4, tomato4)' "Cel" WS_BACK '(vgradient, blue4, white)' "Degradat Blau" WS_BACK '(vgradient,"#7080a5", "#101020")' "Degradat Blau Cel" WS_BACK '(vgradient,"#746ebc","#242e4c")' "Degradat Purpura" WS_BACK '(vgradient,"#654c66","#151426")' "Degradat d'or" WS_BACK '(vgradient,"#a09060", "#302010")' "Degradat Gris" WS_BACK '(vgradient,"#636380", "#131318")' "Degradat Lila" WS_BACK '(vgradient,"#600040", "#180010")' "Degradat" END "Imatges" OPEN_MENU BACKGROUNDS_DIR $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t "Fons de pantalla" END "Guardar Tema" SHEXEC getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/"%a(Theme name)" "Guardar Joc d'Icones" SHEXEC geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/"%a(IconSet name)" "Aparença" END "Sortir" MENU "Rearrancar" RESTART "Arrancar AfterStep" RESTART afterstep "Sortir..." EXIT "Matar la Sessió..." SHUTDOWN "Sortir" END "Aplicacions" END �������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/plmenu.da������������������������������������������������������������0000644�0001750�0001750�00000023743�13431646201�015034� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������( "Applikationer", ( "Info", ("Info Panel...", INFO_PANEL), ("Ophavsret...", LEGAL_PANEL), ( "Systemkonsol", EXEC, "xconsole" ), ("Systembelastning", SHEXEC, "xosview || xload"), ( "Procesliste", EXEC, "xterm -fg wheat -bg black -fn 6x10 -geometry 80x50 -e top" ), ( "Manualer", EXEC, "xman" ) ), ("Kør...", SHEXEC, "%a(Kør,Indtast kommando der skal udføres:)"), ( "XTerm", EXEC, "xterm -sb" ), ( "Rxvt", EXEC, "rxvt -bg black -fg white" ), ("Arbejdsborde", WORKSPACE_MENU), ( "Applikationer", ( "Grafik", ("Gimp", SHEXEC, "gimp >/dev/null"), ( "XV", EXEC, "xv" ), ( "XPaint", EXEC, "xpaint" ), ( "XFig", EXEC, "xfig" ) ), ( "X-filhåndtering", EXEC, "xfm" ), ( "OffiX Files", EXEC, "files" ), ( "LyX", EXEC, "lyx" ), ( "Netscape", EXEC, "netscape" ), ( "Ghostview", EXEC, "ghostview %a(GhostView,Indtast filnavn)" ), ( "Acrobat", EXEC, "/usr/local/Acrobat3/bin/acroread %a(Acrobat,Indtast PDF-filnavn)" ), ( "TkDesk", EXEC, "tkdesk" ) ), ( "Tekstbehandling", ( "XFte", EXEC, "xfte" ), ("Emacs", SHEXEC, "xemacs || emacs"), ( "XJed", EXEC, "xjed" ), ( "NEdit", EXEC, "nedit" ), ( "Xedit", EXEC, "xedit" ), ( "VI", EXEC, "xterm -e vi" ) ), ( "Diverse", ("Xmcd", SHEXEC, "xmcd 2> /dev/null"), ( "Xplaycd", EXEC, "xplaycd" ), ( "Xmixer", EXEC, "xmixer" ) ), ( "Tilbehør", ( "Lommeregner", EXEC, "xcalc" ), ("Vinduesegenskaber", SHEXEC, "xprop | xmessage -center -title 'xprop' -file -"), ( "Vælg skrifttype", EXEC, "xfontsel" ), ( "Terminalemulator", EXEC, "xminicom" ), ( "Forstørrelsesglas", EXEC, "xmag" ), ( "Farver", EXEC, "xcmap" ), ( "XKill", EXEC, "xkill" ), ( "ASClock", EXEC, "asclock -shape" ), ( "Udklipsbord", EXEC, "xclipboard" ) ), ( "Markering", ("Kopiér", SHEXEC, "echo '%s' | wxcopy"), ( "Send e-post til", EXEC, "xterm -name mail -T Pine -e pine %s" ), ( "Indtast URL", EXEC, "netscape %s" ), ("Søg i manual", EXEC, "MANUAL_SEARCH(%s)") ), ( "Arbejdsbord", ("Skjul andre", HIDE_OTHERS), ("Vis alle", SHOW_ALL), ("Arrangér ikoner", ARRANGE_ICONS), ("Genindlæs", REFRESH), ( "Lås", EXEC, "xlock -allowroot -usefirst" ), ("Gem session", SAVE_SESSION), ("Slet gemt session", CLEAR_SESSION) ), ( "Udseende", ( "Temaer", OPEN_MENU, "-noext /usr/local/share/WindowMaker/Themes $HOME/GNUstep/Library/WindowMaker/Themes WITH setstyle" ), ( "Stil", OPEN_MENU, "-noext /usr/local/share/WindowMaker/Styles $HOME/GNUstep/Library/WindowMaker/Styles WITH setstyle" ), ( "Ikonsæt", OPEN_MENU, "-noext /usr/local/share/WindowMaker/IconSets $HOME/GNUstep/Library/WindowMaker/IconSets WITH seticons" ), ( "Baggrund", ( "Ensfarvet", ( "Sort", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, black)'" ), ( "Blå", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#505075\")'" ), ( "Indigo", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#243e6c\")'" ), ( "Mørkeblå", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#224477\")'" ), ( "Lilla", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#554466\")'" ), ( "Hvede", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"wheat4\")'" ), ( "Mørkegrå", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#333340\")'" ), ( "Bordeaux", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#400020\")'" ) ), ( "Nuancer", ( "Solopgang", EXEC, "wdwrite WindowMaker WorkspaceBack '(mvgradient, deepskyblue4, black, deepskyblue4, tomato4)'" ), ( "Himmel", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, blue4, white)'" ), ( "Blå Skygger", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#7080a5\", \"#101020\")'" ), ( "Indigo Skygger", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#746ebc\", \"#242e4c\")'" ), ( "Lilla Skygger", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#654c66\", \"#151426\")'" ), ( "Hvede Skygger", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#a09060\", \"#302010\")'" ), ( "Grå Skygger", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#636380\", \"#131318\")'" ), ( "Bordeaux Skygger", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#600040\", \"#180010\")'" ), ( "Flag", EXEC, "wdwrite WindowMaker WorkspaceBack '(mdgradient, green, red, white, green)'" ) ), ( "Billeder", OPEN_MENU, "-noext /usr/local/share/WindowMaker/Backgrounds $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t" ) ), ("Gem Tema", SHEXEC, "getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/\"%a(Tema navn,Indtast navn:)"), ("Gem Ikonsæt", SHEXEC, "geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/\"%a(Ikonsæt navn,Indtast navn:)") ), ( "Afslut", ("Genstart", RESTART), ("Start Blackbox", RESTART, blackbox), ("Start kwm", RESTART, kwm), ("Start IceWM", RESTART, icewm), ("Afslut...", EXIT) ) ) �����������������������������WindowMaker-0.95.9/WindowMaker/background.menu������������������������������������������������������0000644�0001750�0001750�00000003112�13642357774�016241� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "wmmacros" "Background" MENU "Solid" MENU "Black" WS_BACK '(solid, black)' "Blue" WS_BACK '(solid, "#505075")' "Indigo" WS_BACK '(solid, "#243e6c")' "Bluemarine" WS_BACK '(solid, "#224477")' "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")' "Solid" END "Gradient" MENU "Sunset" WS_BACK '(mvgradient, deepskyblue4, black, deepskyblue4, tomato4)' "Sky" WS_BACK '(vgradient, blue4, white)' "Blue Shades" WS_BACK '(vgradient, "#7080a5", "#101020")' "Indigo Shades" WS_BACK '(vgradient, "#746ebc", "#242e4c")' "Purple Shades" WS_BACK '(vgradient, "#654c66", "#151426")' "Wheat Shades" WS_BACK '(vgradient, "#a09060", "#302010")' "Grey Shades" WS_BACK '(vgradient, "#636380", "#131318")' "Wine Shades" WS_BACK '(vgradient, "#600040", "#180010")' "Gradient" END "Images" MENU "Tiled" OPEN_MENU BACKGROUNDS_DIR USER_BACKGROUNDS_DIR WITH wmsetbg -u -t "Scaled" OPEN_MENU BACKGROUNDS_DIR USER_BACKGROUNDS_DIR WITH wmsetbg -u -s "Centered" OPEN_MENU BACKGROUNDS_DIR USER_BACKGROUNDS_DIR WITH wmsetbg -u -e "Maximized" OPEN_MENU BACKGROUNDS_DIR USER_BACKGROUNDS_DIR WITH wmsetbg -u -a "Filled" OPEN_MENU BACKGROUNDS_DIR USER_BACKGROUNDS_DIR WITH wmsetbg -u -f "Images" END "Background" END ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/menu.fr��������������������������������������������������������������0000644�0001750�0001750�00000022232�13431646201�014513� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Définition du menu de fond pour WindowMaker * * La syntaxe est: * * <Titre> [SHORTCUT <Raccourci>] <Commande> <Paramètres> * * <Titre> est une chaine de charactères qui représente un titre. Il doit * être entre guillemets si il y a des espaces. * * SHORTCUT spécifie un raccourci pour une entrée dans le menu. <Raccourci> * a la même syntaxe que les options pour les raccourcis clavier dans le * 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 * ou OPEN_MENU. * * <Commande> une des commandes valides: * * MENU Commence une définition de (sous)menu * * END Fin d'une définition de (sous)menu * * OPEN_MENU Ouvre un menu depuis un fichier, un "pipe" * ou le contenu d'un ou plusieurs répertoires * et eventuellement peut etre précédé d'une * commande. * * WORKSPACE_MENU Ajoute un sous menu pour les opérations * sur les bureaux. Il ne peut y * avoir qu'un seul WORKSPACE_MENU. * * EXEC Execute un programme externe * * EXIT Quitte le gestionnaire de fenêtres * * RESTART [<window manager>] Redémarre WindowMaker ou démarre un * autre gestionnaire de fenêtres * * REFRESH Retrace l'écran * * ARRANGE_ICONS Arrange les icônes sur le bureau * * SHUTDOWN Tue tout les clients ( et termine la * session X Window) * * SHOW_ALL Montre toutes les fenêtres sur le bureau * * HIDE_OTHERS Cache toutes les fenêtres sur le * bureau qui sont en arrière plan * * SAVE_SESSION Sauve la l'état courant du bureau, cela * inclus toute les applications en marche, * tout leur indices (geometrie, position * sur l'écran, le bureau sur * lequel elle sont, si elles ont ete lancées * par le "dock" ou le "clip", si elles * etaient minimisées, ombrées ou cachées). * De plus, le bureau actuel * sera aussi sauvé. Tout sera remis dans * cet état a chaque démarrage de * WindowMaker jusqu'au prochain usage de * SAVE_SESSION ou CLEAR_SESSION. Si * "SaveSessionOnExit" est égal à "Yes" * dans le fichier de domaine de * WindowMaker, alors la sauvegarde est * automatiquement faite a chaque fin de * session, abandonnant toute SAVE_SESSION * ou CLEAR_SESSION antérieure (Voir plus * bas). * * CLEAR_SESSION Efface la sauvegarde de toute session * antérieure. Ceci n'aura aucun effet si * "SaveSessionOnExit" est égal à "Yes". * * INFO_PANEL Affiche le panneau d'informations sur * WindowMaker. * * LEGAL_PANEL Affiche le panneau d'informations sur * le statut legal de WindowMaker. * * Syntaxe d'OPEN_MENU: * * 1. Utilisation d'un fichier de menu. * / Ouvre "fichier.menu" (celui-ci doit contenir un fichier de menu * / valide) et l'insère à la position courante. * * OPEN_MENU fichier.menu * * 2. Utilisation de "pipes". * / Ouvre une commande et utilise sa sortie standard pour construire * / un menu (la sortie standard de la commande doit être une * / description de menu valide). L'espace entre '|' est optionel. * * OPEN_MENU | commande * * 3. Utilisation de répertoires. * / Ouvre un ou plusieurs répertoires et construit un menu avec tout * / les sous répertoires et les fichiers éxécutables a l'intérieur et * / les classe dans l'ordre alphabétique. * * OPEN_MENU /un/répertoire [/un/autre/repértoire ...] * * 4. Utilisation de répertoires avec une commande. * / Ouvre un ou plusieurs répertoires et construit un menu avec tout * / les sous répertoires et les fichiers lisibles a l'intérieur et * / les classe dans l'ordre alphabétique, précédant chacun d'eux * / d'une commande. * * OPEN_MENU /un/répertoire [/un/autre/répertoire ...] WITH commande -option * * Options: * -noext retirer tout ce qui se trouve après le dernier point * dans le nom de fichier. * * <Parametre> est le programme a éxécuter. * * ** Options pour la ligne de commande après EXEC: * * %s substituer avec la sélection courante * %a(titre[,message]) ouvre une boite de dialogue avec un message et fait la * substitution avec ce que vous avez tapé * %w substituer par la "XID" de la fenêtre en avant plan * courante * * Vous pouvez outrepasser des charactères spéciaux (comme % et ") avec le * charactère \ * * ex: xterm -T "\"Hello World\"" * * Vous pouvez aussi utiliser des séquences "escape", comme \n * * Chaque déclaration de MENU doit avoir sa déclaration END à la fin. * * Exemple: * * "Test" MENU * "XTerm" EXEC xterm * / 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 $HOME/bin/X11 * / Définir quelques images de fond * "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 */ #include "wmmacros" "Applications" MENU "Informations" MENU "Panneau d'informations" INFO_PANEL "Panneau d'informations légales" LEGAL_PANEL "Console système" EXEC xconsole "Charge système" SHEXEC xosview || xload "Liste des processus" EXEC xterm -e top "Butineur d'aide" EXEC xman "Informations" END "Démarrer..." SHEXEC %a(Démarrer,Tapez une commande à démarrer:) "Terminal X" EXEC xterm -sb "Rxvt" EXEC rxvt -bg black -fg white -fn fixed "Bureaux" WORKSPACE_MENU "Applications" MENU "Graphismes" MENU "Gimp" SHEXEC gimp >/dev/null "XV" EXEC xv "XPaint" EXEC xpaint "XFig" EXEC xfig "Graphismes" END "Xfm" EXEC xfm "OffiX Files" EXEC files "LyX" EXEC lyx "Netscape" EXEC netscape "Ghostview" EXEC ghostview %a(Entrez un fichier) "Acrobat" EXEC /usr/local/Acrobat3/bin/acroread %a(Acrobat,Entrez un fichier PDF) "TkDesk" EXEC tkdesk "Applications" END "Editeurs" MENU "XFte" EXEC xfte "XEmacs" SHEXEC xemacs || emacs "XJed" EXEC xjed "NEdit" EXEC nedit "Xedit" EXEC xedit "VI" EXEC xterm -e vi "Editeurs" END "Divers" MENU "Xmcd" SHEXEC xmcd 2> /dev/null "Xplaycd" EXEC xplaycd "Xmixer" EXEC xmixer "Divers" END "Utilitaires" MENU "Calculatrice" EXEC xcalc "Propriétés de la fenêtre" SHEXEC xprop | xmessage -center -title 'xprop' -file - "Sélecteur de polices" EXEC xfontsel "Emulateur de terminal" EXEC xminicom "Loupe" EXEC xmag "Carte des couleurs" EXEC xcmap "XKill" EXEC xkill "Sélections" EXEC xclipboard "Utilitaires" END "Sélection" MENU "Copier" SHEXEC echo '%s' | wxcopy "Envoyer à" EXEC xterm -name mail -T "Pine" -e pine %s "Naviguer" EXEC netscape %s "Rechercher dans le manuel" SHEXEC MANUAL_SEARCH(%s) "Sélection" END "Bureau" MENU "Cacher les autres fenêtres" HIDE_OTHERS "Montrer toutes les fenêtres" SHOW_ALL "Arranger les icônes" ARRANGE_ICONS "Retracer l'écran" REFRESH "Vérrouiller" EXEC xlock -allowroot -usefirst "Sauver la session" SAVE_SESSION "Effacer la session" CLEAR_SESSION "Bureaux" END "Apparence" MENU "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)' "Bleu" WS_BACK '(solid, "#505075")' "Indigo" WS_BACK '(solid, "#243e6c")' "Bleu foncé" WS_BACK '(solid, "#224477")' "Violet" WS_BACK '(solid, "#554466")' "Blanc crème" WS_BACK '(solid, "wheat4")' "Gris foncé" WS_BACK '(solid, "#333340")' "Bordeaux" WS_BACK '(solid, "#400020")' "Unifié" END "Degradé" MENU "Coucher de Soleil" WS_BACK '(mvgradient, deepskyblue4, black, deepskyblue4, tomato4)' "Ciel" WS_BACK '(vgradient, blue4, white)' "Dégradés de Bleu" WS_BACK '(vgradient, "#7080a5", "#101020")' "Dégradés d'Indigo" WS_BACK '(vgradient, "#746ebc", "#242e4c")' "Dégradés de Violet" WS_BACK '(vgradient, "#654c66", "#151426")' "Dégradés de Beige" WS_BACK '(vgradient, "#a09060", "#302010")' "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 $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t "Fond d'écran" END "Sauver le thème" SHEXEC getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/"%a(Nom du thème,Entrez un nom de fichier:)" "Sauver le jeu d'icônes" SHEXEC geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/"%a(Nom du jeu d'icônes,Entrez un nom de fichier:)" "Apparence" END "Quitter" MENU "Redémarrer" RESTART "Démarrer AfterStep" RESTART afterstep "Quitter..." EXIT "Tuer la session..." SHUTDOWN "Quitter" END "Applications" END ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/menu.el��������������������������������������������������������������0000644�0001750�0001750�00000033012�13431646201�014502� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Το Μητρικό μενού του Window Maker * * Η σύνταξη είναι: * * <Title> [SHORTCUT <Shortcut>] <Command> <Parameters> * * <Title> είναι η ονομασία του προγράμματος ή εντολής. Αν είναι περισσότερες * από μία λέξεις πρέπει να εμπεριέχονται μεταξύ εισαγωγικών π.χ: * "Το Πρόγραμμα" * * SHORTCUT είναι ο συνδυασμός πλήκτρων για το συγκεκριμένο πρόγραμμα π.χ: * "Meta+1". Άλλα παραδείγματα θα δείτε στο αχρείο: * $HOME/GNUstep/Defaults/WindowMaker * * Δεν μπορεί να δηλωθεί ένα shortcut για MENU και για OPEN_MENU εντολή. * * <Command> μία από τις εντολές: * MENU - το σημείο που ξεκινά ένα υπομενού * END - το σημείο που τελειώνει ένα υπομενού * OPEN_MENU - ανοίγει ένα μενού από ένα αρχείο, pipe ή τα περιεχόμενα ενός * καταλόγου(ων) και αντιστοιχεί μια εντολή στο καθένα. * WORKSPACE_MENU - προσθέτει το υπομενού για τη διαχείρηση των Επιφανειών. * Μόνο ένα workspace_menu επιτρέπεται. * EXEC <program> - εκτέλεση προγράμματος * SHEXEC <command> - εκτέλεση εντολής κέλυφους (όπως gimp > /dev/null) * EXIT - έξοδος από τον Διαχειριστή Παραθύρων * RESTART [<window manager>] - επανεκκινεί τον Window Maker ή ξεκινάει * ένας άλλος window manager * REFRESH - ανανεώνει την προβολή της Επιφάνειας στην οθόνη * ARRANGE_ICONS - τακτοποίηση των εικονιδίων στην Επιφάνεια * SHUTDOWN - τερματίζει βίαια όλους τους clients * (και τερματίζει το X window session) * SHOW_ALL - εμφανίζει όλα τα "κρυμμένα" παράθυρα στην Επιφάνεια * HIDE_OTHERS - "κρύβει" όλα τα παράθυρα στην Επιφάνεια, εκτός από * αυτό που είναι "ενεργό" (ή το τελευταίο που ήταν "ενεργό") * SAVE_SESSION - αποθηκεύει την εκάστοτε "κατάσταση" της Επιφάνειας, το * οποίο σημαίνει, όλα τα προγράμματα που εκτελούνται εκείνη τη * στιγμή με όλες τους τις ιδιότητες (γεωμετρία, θέση στην * οθόνη, επιφάνεια εργασίας στην οποία έχουν εκτελεστεί, Dock ή * Clip από όπου εκτελέστηκαν, αν είναι ελαχιστοποιημένα, * αναδιπλωμένα ή κρυμμένα). Επίσης αποθηκεύει σε πια Επιφάνεια * εργασίας ήταν ο χρήστης την τελευταία φορά. Όλες οι * θα ανακληθούν την επόμενη φορά που ο χρήστης * εκκινήσει τον Window Maker μέχρι η εντολή SAVE_SESSION ή * CLEAR_SESSION χρησιμοποιηθούν. Αν στο αρχείο Window Maker του * καταλόγου "$HOME/GNUstep/Defaults/" υπάρχει η εντολή: * "SaveSessionOnExit = Yes;", τότε όλα τα παραπάνω γίνονται * αυτόματα με κάθε έξοδο του χρήστη από τον Window Maker, * ακυρώνοντας ουσιαστικά κάθε προηγούμενη χρήση τως εντολών * SAVE_SESSION ή CLEAR_SESSION (βλέπε παρακάτω). * CLEAR_SESSION - σβήνει όλες τις πληροφορίες που έχουν αποθηκευθεί * σύμφωνα με τα παραπάνω. Δεν θα έχει όμως κανένα αποτέλεσμα * αν η εντολή SaveSessionOnExit=Yes. * INFO - Πληροφορίες σχετικά με τον Window Maker * * OPEN_MENU σύνταξη: * 1. Χειρισμός ενός αρχείου-μενού. * // ανοίγει το "αρχείο.μενού" το οποίο περιέχει ένα έγκυρο αρχείο-μενού * // καιτο εισάγει στην εκάστοτε θέση * OPEN_MENU αρχείο.μενού * 2. Χειρισμός ενός Pipe μενού. * // τρέχει μια εντολή και χρησιμοποιεί την stdout αυτής για την κατασκευή * // του μενού. Το αποτέλεσμα της εντολής πρέπει να έχει έγκυρη σύνταξη * // για χρήση ως μενού. Το κενό διάστημα μεταξύ "|" και "εντολής" είναι * // προεραιτικό. * OPEN_MENU | εντολή * 3. Χειρισμός ενός καταλόγου. * // Ανοίγει έναν ή περισσότερους καταλόγους και κατασκευάζει ένα μενού με * // όλους τους υποκαταλόγους και τα εκτελέσιμα αρχεία σε αυτούς * // κατανεμημένα αλφαβητικά. * OPEN_MENU /κάποιος/κατάλογος [/κάποιος/άλλος/κατάλογος ...] * 4. Χειρισμός ενός καταλόγου με κάποια εντολή. * // Ανοίγει έναν ή περισσότερους καταλόγους και κατασκευάζει ένα μενού με * // όλους τους υποκαταλόγους και τα αναγνώσιμα αρχεία σε αυτούς * // κατανεμημένα αλφαβητικά, τα οποία μπορούν να εκτελεστούν με μία * // εντολή. * OPEN_MENU /κάποιος/κατάλογος [/κάποιος/άλλος/κατάλογος ...] WITH εντολή -παράμετροι * Παράμετροι: * -noext αφαιρεί ότι βρίσκεται μετά την τελευταία τελεία του * ονόματος του αρχείου. * * <Parameters> είναι το πρόγραμμα προς εκτέλεση. * * ** Παράμετροι για την εντολή EXEC: * %s - Αντικατάσταση με την εκάστοτε επιλογή. * %a(τίτλος[,προτροπή]) - Ανοίγει ένα παράθυρο εισαγωγής δεδομένων με τον * προκαθορισμένο τίτλο και την προεραιτική προτροπή * και αντικαθιστά με αυτό που πληκτρολογήθηκε. * %w - Αντικατάσταση με την XID του εκάστοτε ενεργού παραθύρου * %W - Αντικατάσταση με τον αριθμό της εκάστοτε Επιφάνειας * * Μπορούν να εισαχθούν ειδικοί χαρακτήρες (όπως % ή ") με τον χαρακτήρα \: * π.χ.: xterm -T "\"Καλημέρα Σου\"" * * Μπορούν επίσης να εισαχθούν χαρακτήρες διαφυγής (character escapes), όπως \n * * Κάθε εντολή MENU πρέπει να έχει μια αντίστοιχη END στο τέλος του μενού. * * Παράδειγμα: * * "Δοκιμαστικό" 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 $HOME/bin/X11 * // set some background images * "Παρασκήνιο" OPEN_MENU $HOME/images /usr/share/images WITH wmsetbg -u -t * // inserts the style.menu in this entry * "Στυλ" OPEN_MENU style.menu * "Δοκιμαστικό" END */ #include "wmmacros" "Μενού" MENU "Πληροφορίες" MENU "Σχετικά..." INFO_PANEL "Νομικά..." LEGAL_PANEL "Κονσόλα Συστήματος" EXEC xconsole "Εργασία Συστήματος" SHEXEC xosview || xload "Λίστα Εργασιών" EXEC xterm -e top "Βοήθεια" EXEC xman "Πληροφορίες" END "Εκτέλεση..." SHEXEC %a(Εκτέλεση,Γράψε την εντολή προς εκτέλεση:) "XTerm" EXEC xterm -sb "Rxvt" EXEC rxvt -bg black -fg white -fn grfixed "Επιφάνειες" WORKSPACE_MENU "Προγράμματα" MENU "Γραφικά" MENU "Gimp" SHEXEC gimp >/dev/null "XV" EXEC xv "XPaint" EXEC xpaint "XFig" EXEC xfig "Γραφικά" END "X File Manager" EXEC xfm "OffiX Files" EXEC files "LyX" EXEC lyx "Netscape" EXEC netscape "Ghostview" EXEC ghostview %a(Αρχείο προς ανάγνωση) "Acrobat" EXEC /usr/local/Acrobat3/bin/acroread %a(Acrobar,Γράψε το PDF προς προβολή) "TkDesk" EXEC tkdesk "Προγράμματα" END "Κειμενογράφοι" MENU "XFte" EXEC xfte "XEmacs" SHEXEC xemacs || emacs "XJed" EXEC xjed "NEdit" EXEC nedit "Xedit" EXEC xedit "VI" EXEC xterm -e vi "Κειμενογράφοι" END "Διάφορα" MENU "Xmcd" SHEXEC xmcd 2> /dev/null "Xplaycd" EXEC xplaycd "Xmixer" EXEC xmixer "Διάφορα" END "Εργαλεία" MENU "Αριθμομηχανή" EXEC xcalc "Ιδιότητες Παραθύρου" SHEXEC xprop | xmessage -center -title 'Ιδιότητες Παραθύρου' -file - "Επιλογή Γραμματοσειράς" EXEC xfontsel "Εξομοιωτής Τερματικού" EXEC xminicom "Μεγέθυνση" EXEC xmag "Χάρτης Χρωμάτων" EXEC xcmap "Θανάτωση Παραθύρου" EXEC xkill "Ρολόι" EXEC asclock -shape "Πρόχειρο" EXEC xclipboard "Εργαλεία" END "Επιλογή" MENU "Αντιγραφή" SHEXEC echo '%s' | wxcopy "Ταχυδρόμηση Προς" EXEC xterm -name mail -T "Pine" -e pine %s "Εξερεύνηση στο διαδίκτυο" EXEC netscape %s "Αναζήτηση Βοήθειας" EXEC MANUAL_SEARCH(%s) "Επιλογή" END "Επιφάνεια" MENU "Απόκρυψη των Άλλων" HIDE_OTHERS "Εμφάνιση Όλων" SHOW_ALL "Τακτοποίηση Εικονιδίων" ARRANGE_ICONS "Ανανέωση Προβολής" REFRESH "Κλείδωμα" EXEC xlock -allowroot -usefirst "Σώσιμο Session" SAVE_SESSION "Διαγραφή σωσμένου Session" CLEAR_SESSION "Επιφάνεια" END "Εμφάνιση" MENU "Θέματα" 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)' "Μπλε" WS_BACK '(solid, "#505075")' "Λουλακί" WS_BACK '(solid, "#243e6c")' "Σκούρο Μπλε" WS_BACK '(solid, "#224477")' "Βυσσινί" WS_BACK '(solid, "#554466")' "Σταρένιο" WS_BACK '(solid, "wheat4")' "Σκούρο Γκρι" WS_BACK '(solid, "#333340")' "Κοκκινωπό" WS_BACK '(solid, "#400020")' "Μονόχρωμο" END "Διαβαθμισμένο" MENU "Ηλιοβασίλεμα" WS_BACK '(mvgradient, deepskyblue4, black, deepskyblue4, tomato4)' "Ουρανός" WS_BACK '(vgradient, blue4, white)' "Μπλε Αποχρώσεις" WS_BACK '(vgradient, "#7080a5", "#101020")' "Λουλακί Αποχρώσεις" WS_BACK '(vgradient, "#746ebc", "#242e4c")' "Βυσσινί Αποχρώσεις" WS_BACK '(vgradient, "#654c66", "#151426")' "Σταρένιες Αποχρώσεις" WS_BACK '(vgradient, "#a09060", "#302010")' "Γκρίζες Αποχρώσεις" WS_BACK '(vgradient, "#636380", "#131318")' "Κοκκινωπές Αποχρώσεις" WS_BACK '(vgradient, "#600040", "#180010")' "Διαβαθμισμένο" END "Εικόνες" OPEN_MENU -noext BACKGROUNDS_DIR $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t "Παρασκήνιο" END "Αποθήκευση Θέματος" SHEXEC getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/"%a(Όνομα Θέματος,Γράψε το όνομα του αρχείου:)" "Αποθήκευση Ομάδας Εικονιδίων" SHEXEC geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/"%a(Όνομα Ομάδας,Γράψε το όνομα του αρχείου:)" "Εμφάνιση" END "Έξοδος" MENU "Επανεκκίνηση" RESTART "Εκκίνηση του BlackBox" RESTART blackbox "Εκκίνηση του kwm" RESTART kwm "Εκκίνηση του IceWM" RESTART icewm "Έξοδος..." EXIT "Έξοδος" END "Μενού" END ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Defaults/������������������������������������������������������������0000755�0001750�0001750�00000000000�13642365213�015051� 5����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Defaults/WMWindowAttributes.in���������������������������������������0000644�0001750�0001750�00000000400�13431646201�021070� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{ Logo.WMDock = {Icon = GNUstepGlow.#extension#;}; Logo.WMPanel = {Icon = GNUstep.#extension#;}; Logo.WMClip = {Icon = clip.#extension#;}; WMDrawer = {Icon = Drawer.#extension#;}; "*" = {Icon = defaultAppIcon.#extension#;SharedAppIcon = Yes;}; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Defaults/Makefile.in�������������������������������������������������0000644�0001750�0001750�00000041203�13642360054�017034� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = WindowMaker/Defaults ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ $(top_srcdir)/m4/ax_pthread.m4 \ $(top_srcdir)/m4/ld-version-script.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/windowmaker.m4 \ $(top_srcdir)/m4/wm_attributes.m4 \ $(top_srcdir)/m4/wm_cflags_check.m4 \ $(top_srcdir)/m4/wm_i18n.m4 \ $(top_srcdir)/m4/wm_imgfmt_check.m4 \ $(top_srcdir)/m4/wm_libexif.m4 $(top_srcdir)/m4/wm_libmath.m4 \ $(top_srcdir)/m4/wm_prog_cc_c11.m4 \ $(top_srcdir)/m4/wm_xext_check.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(defsdatadir)" DATA = $(defsdata_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ GFXLIBS = @GFXLIBS@ GREP = @GREP@ HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLIBS = @INTLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBBSD = @LIBBSD@ LIBEXIF = @LIBEXIF@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXINERAMA = @LIBXINERAMA@ LIBXMU = @LIBXMU@ LIBXRANDR = @LIBXRANDR@ LINGUAS = @LINGUAS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAGICKFLAGS = @MAGICKFLAGS@ MAGICKLIBS = @MAGICKLIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MANLANGDIRS = @MANLANGDIRS@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOLIBS = @PANGOLIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILMOFILES = @UTILMOFILES@ VERSION = @VERSION@ WINGSMOFILES = @WINGSMOFILES@ WINGS_VERSION = @WINGS_VERSION@ WMAKERMOFILES = @WMAKERMOFILES@ WPREFSMOFILES = @WPREFSMOFILES@ WRASTER_VERSION = @WRASTER_VERSION@ WUTIL_VERSION = @WUTIL_VERSION@ XCFLAGS = @XCFLAGS@ XFTCONFIG = @XFTCONFIG@ XFTFLAGS = @XFTFLAGS@ XFTLIBS = @XFTLIBS@ XGETTEXT = @XGETTEXT@ XLFLAGS = @XLFLAGS@ XLIBS = @XLIBS@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBRARY_PATH = @X_LIBRARY_PATH@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ defsdatadir = @defsdatadir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ inc_search_path = @inc_search_path@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lcov_output_directory = @lcov_output_directory@ lib_search_path = @lib_search_path@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pixmapdir = @pixmapdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ wprefs_bindir = @wprefs_bindir@ wprefs_datadir = @wprefs_datadir@ defsdata_DATA = WMRootMenu WMWindowAttributes WindowMaker WMState WMGLOBAL wpexecbindir = @wprefs_bindir@ EXTRA_DIST = WMGLOBAL WMWindowAttributes.in WindowMaker.in WMState.in CLEANFILES = WMWindowAttributes WindowMaker WMState WMRootMenu all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu WindowMaker/Defaults/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu WindowMaker/Defaults/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-defsdataDATA: $(defsdata_DATA) @$(NORMAL_INSTALL) @list='$(defsdata_DATA)'; test -n "$(defsdatadir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(defsdatadir)'"; \ $(MKDIR_P) "$(DESTDIR)$(defsdatadir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(defsdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(defsdatadir)" || exit $$?; \ done uninstall-defsdataDATA: @$(NORMAL_UNINSTALL) @list='$(defsdata_DATA)'; test -n "$(defsdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(defsdatadir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(defsdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-defsdataDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-defsdataDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am \ install-defsdataDATA install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-defsdataDATA .PRECIOUS: Makefile WMWindowAttributes: $(srcdir)/WMWindowAttributes.in $(AM_V_GEN)sed -e "s:#extension#:@ICONEXT@:" \ $(srcdir)/WMWindowAttributes.in > WMWindowAttributes ; \ chmod 644 WMWindowAttributes WindowMaker: $(srcdir)/WindowMaker.in $(AM_V_GEN)sed -e "s:#pkgdatadir#:$(pkgdatadir):" \ -e "s:#pixmapdir#:$(pixmapdir):" $(srcdir)/WindowMaker.in \ > WindowMaker ; \ chmod 644 WindowMaker WMState: $(srcdir)/WMState.in $(AM_V_GEN)sed -e "s:#wprefs#:$(wpexecbindir)/WPrefs:" $(srcdir)/WMState.in > WMState ; \ chmod 644 WMState WMRootMenu: ./../plmenu $(AM_V_GEN)cp -f ./../plmenu WMRootMenu # 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. .NOEXPORT: ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Defaults/WindowMaker.in����������������������������������������������0000644�0001750�0001750�00000015711�13642357774�017572� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{ ColormapSize = 4; DisableDithering = NO; IconSize = 64; ModifierKey = Mod1; FocusMode = manual; NewStyle = new; DisableDock = NO; DisableClip = NO; DisableDrawers = NO; ClipMergedInDock = NO; DisableMiniwindows = NO; EnableWorkspacePager = NO; IconPosition = blh; IconificationStyle = Zoom; DisableWSMouseActions = NO; MouseLeftButtonAction = SelectWindows; MouseMiddleButtonAction = OpenWindowListMenu; MouseRightButtonAction = OpenApplicationsMenu; MouseBackwardButtonAction = None; MouseForwardButtonAction = None; MouseWheelAction = None; MouseWheelTiltAction = None; PixmapPath = ( "~/GNUstep/Library/WindowMaker/Pixmaps", "~/GNUstep/Library/WindowMaker/Backgrounds", "~/GNUstep/Library/WindowMaker/CachedPixmaps", "~/pixmaps", "#pkgdatadir#/Pixmaps", "#pkgdatadir#/Backgrounds", "#pixmapdir#" ); IconPath = ( "~/GNUstep/Library/Icons", "~/GNUstep/Library/WindowMaker/Pixmaps", "~/GNUstep/Library/WindowMaker/CachedPixmaps", "~/pixmaps", "#pkgdatadir#/Icons", "#pkgdatadir#/Pixmaps", "#pixmapdir#" ); ColormapMode = auto; AutoFocus = YES; RaiseDelay = 0; CirculateRaise = NO; Superfluous = YES; AdvanceToNewWorkspace = NO; CycleWorkspaces = NO; WorkspaceNameDisplayPosition = center; WorkspaceBorder = None; WorkspaceBorderSize = 0; StickyIcons = NO; SaveSessionOnExit = NO; WrapMenus = NO; ScrollableMenus = YES; MenuScrollSpeed = fast; IconSlideSpeed = fast; ShadeSpeed = fast; BounceAppIconsWhenUrgent = YES; RaiseAppIconsWhenBouncing = NO; DoNotMakeAppIconsBounce = NO; DoubleClickTime = 250; ClipAutoraiseDelay = 600; ClipAutolowerDelay = 1000; ClipAutoexpandDelay = 600; ClipAutocollapseDelay = 1000; WrapAppiconsInDock = YES; AlignSubmenus = NO; ViKeyMenus = NO; OpenTransientOnOwnerWorkspace = NO; WindowPlacement = auto; IgnoreFocusClick = NO; UseSaveUnders = NO; OpaqueMove = YES; OpaqueResize = NO; OpaqueMoveResizeKeyboard = NO; DisableAnimations = NO; DontLinkWorkspaces = YES; WindowSnapping = NO; SnapEdgeDetect = 1; SnapCornerDetect = 10; SnapToTopMaximizesFullscreen = NO; DragMaximizedWindow = Move; MoveHalfMaximizedWindowsBetweenScreens = NO; AlternativeHalfMaximized = NO; PointerWithHalfMaxWindows = NO; HighlightActiveApp = YES; AutoArrangeIcons = NO; NoWindowOverDock = NO; NoWindowOverIcons = NO; WindowPlaceOrigin = (64, 0); ResizeDisplay = center; MoveDisplay = floating; DontConfirmKill = NO; WindowTitleBalloons = YES; MiniwindowTitleBalloons = NO; MiniwindowPreviewBalloons = NO; AppIconBalloons = NO; HelpBalloons = NO; EdgeResistance = 30; ResizeIncrement = 0; Attraction = NO; DisableBlinking = NO; SingleClickLaunch = NO; StrictWindozeCycle = YES; SwitchPanelOnlyOpen = NO; MiniPreviewSize = 128; IgnoreGtkHints = NO; MenuStyle = normal; WidgetColor = (solid, gray); WorkspaceSpecificBack = (); WorkspaceBack = (solid, "rgb:50/50/75"); SmoothWorkspaceBack = NO; IconBack = (dgradient, "rgb:a6/a6/b6", "rgb:51/55/61"); TitleJustify = center; WindowTitleFont = "Sans:bold:pixelsize=12"; WindowTitleExtendSpace = 0; WindowTitleMinHeight = 0; WindowTitleMaxHeight = 0x7fffffff; MenuTitleExtendSpace = 0; MenuTitleMinHeight = 0; MenuTitleMaxHeight = 0x7fffffff; MenuTextExtendSpace = 0; MenuTitleFont = "Sans:bold:pixelsize=12"; MenuTextFont = "Sans:pixelsize=12"; IconTitleFont = "Sans:pixelsize=9"; ClipTitleFont = "Sans:bold:pixelsize=10"; ShowClipTitle = YES; LargeDisplayFont = "Sans:pixelsize=24"; HighlightColor = white; HighlightTextColor = black; ClipTitleColor = black; CClipTitleColor = "rgb:61/61/61"; FTitleColor = white; PTitleColor = white; UTitleColor = black; FTitleBack = (solid, black); PTitleBack = (solid, gray40); UTitleBack = (solid, "rgb:aa/aa/aa"); ResizebarBack = (solid, "rgb:aa/aa/aa"); MenuTitleColor = white; MenuTextColor = black; MenuDisabledColor = gray50; MenuTitleBack = (solid, black); MenuTextBack = (solid, "rgb:aa/aa/aa"); IconTitleColor = white; IconTitleBack = black; SwitchPanelImages = (swtile.png, swback.png, 30, 40); ModifierKeyLabels = ("Shift+", "Control+", "Mod1+", "Mod2+", "Mod3+", "Mod4+", "Mod5+"); FrameBorderWidth = 1; FrameBorderColor = black; FrameFocusedBorderColor = black; FrameSelectedBorderColor = white; WorkspaceMapBack = (solid, black); RootMenuKey = F12; WindowListKey = F11; WindowMenuKey = "Control+Escape"; DockRaiseLowerKey = None; ClipRaiseLowerKey = None; MiniaturizeKey = "Mod1+M"; MinimizeAllKey = None; HideKey = "Mod1+H"; HideOthersKey = None; MoveResizeKey = None; CloseKey = None; MaximizeKey = None; VMaximizeKey = None; HMaximizeKey = None; LHMaximizeKey = None; RHMaximizeKey = None; THMaximizeKey = None; BHMaximizeKey = None; LTCMaximizeKey = None; RTCMaximizeKey = None; LBCMaximizeKey = None; RBCMaximizeKey = None; MaximusKey = None; KeepOnTopKey = None; KeepAtBottomKey = None; OmnipresentKey = None; RaiseKey = "Mod1+Up"; LowerKey = "Mod1+Down"; RaiseLowerKey = None; ShadeKey = None; SelectKey = None; WorkspaceMapKey = None; FocusNextKey = "Mod1+Tab"; FocusPrevKey = "Mod1+Shift+Tab"; GroupNextKey = None; GroupPrevKey = None; NextWorkspaceKey = "Mod1+Control+Right"; PrevWorkspaceKey = "Mod1+Control+Left"; LastWorkspaceKey = None; NextWorkspaceLayerKey = None; PrevWorkspaceLayerKey = None; Workspace1Key = "Mod1+1"; Workspace2Key = "Mod1+2"; Workspace3Key = "Mod1+3"; Workspace4Key = "Mod1+4"; Workspace5Key = "Mod1+5"; Workspace6Key = "Mod1+6"; Workspace7Key = "Mod1+7"; Workspace8Key = "Mod1+8"; Workspace9Key = "Mod1+9"; Workspace10Key = "Mod1+0"; MoveToWorkspace1Key = None; MoveToWorkspace2Key = None; MoveToWorkspace3Key = None; MoveToWorkspace4Key = None; MoveToWorkspace5Key = None; MoveToWorkspace6Key = None; MoveToWorkspace7Key = None; MoveToWorkspace8Key = None; MoveToWorkspace9Key = None; MoveToWorkspace10Key = None; MoveToNextWorkspaceKey = None; MoveToPrevWorkspaceKey = None; MoveToLastWorkspaceKey = None; MoveToNextWorkspaceLayerKey = None; MoveToPrevWorkspaceLayerKey = None; WindowShortcut1Key = None; WindowShortcut2Key = None; WindowShortcut3Key = None; WindowShortcut4Key = None; WindowShortcut5Key = None; WindowShortcut6Key = None; WindowShortcut7Key = None; WindowShortcut8Key = None; WindowShortcut9Key = None; WindowShortcut10Key = None; WindowRelaunchKey = None; ScreenSwitchKey = None; RunKey = None; NormalCursor = (builtin, left_ptr); ArrowCursor = (builtin, top_left_arrow); MoveCursor = (builtin, fleur); ResizeCursor = (builtin, sizing); TopLeftResizeCursor = (builtin, top_left_corner); TopRightResizeCursor = (builtin, top_right_corner); BottomLeftResizeCursor = (builtin, bottom_left_corner); BottomRightResizeCursor = (builtin, bottom_right_corner); VerticalResizeCursor = (builtin, sb_v_double_arrow); HorizontalResizeCursor = (builtin, sb_h_double_arrow); WaitCursor = (builtin, watch); QuestionCursor = (builtin, question_arrow); TextCursor = (builtin, xterm); SelectCursor = (builtin, cross); DialogHistoryLines = 500; CycleActiveHeadOnly = NO; CycleIgnoreMinimized = NO; } �������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Defaults/WMGLOBAL����������������������������������������������������0000644�0001750�0001750�00000000333�13431646201�016112� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{ SystemFont = "Sans"; BoldSystemFont = "Sans:bold"; DefaultFontSize = 11; AntialiasedText = Yes; FloppyPath = "/media/floppy"; DoubleClickTime = 250; MouseWheelUp = Button4; MouseWheelDown = Button5; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Defaults/WMState.in��������������������������������������������������0000644�0001750�0001750�00000001416�13431646201�016642� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{ Dock = { Applications = ( { Command = "#wprefs#"; Name = Logo.WMDock; AutoLaunch = No; Forced = No; Position = "0,0"; Lock = Yes; }, { Command = xterm; Name = xterm.XTerm; AutoLaunch = No; Forced = No; Position = "0,1"; } ); Position = "-64,0"; Lowered = No; }; Clip = { Command = "-"; Name = Logo.WMClip; AutoLaunch = No; StartHidden = No; StartMiniaturized = No; Forced = No; Position = "0,0"; DropCommand = "wmsetbg -u -t %d"; }; Workspaces = ( { Name = "Main"; Clip = { Applications = (); Lowered = Yes; Collapsed = No; AutoAttractIcons = No; KeepAttracted = No; }; } ); } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Defaults/Makefile.am�������������������������������������������������0000644�0001750�0001750�00000001504�13642357774�017042� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������defsdata_DATA = WMRootMenu WMWindowAttributes WindowMaker WMState WMGLOBAL wpexecbindir = @wprefs_bindir@ EXTRA_DIST = WMGLOBAL WMWindowAttributes.in WindowMaker.in WMState.in CLEANFILES = WMWindowAttributes WindowMaker WMState WMRootMenu WMWindowAttributes: $(srcdir)/WMWindowAttributes.in $(AM_V_GEN)sed -e "s:#extension#:@ICONEXT@:" \ $(srcdir)/WMWindowAttributes.in > WMWindowAttributes ; \ chmod 644 WMWindowAttributes WindowMaker: $(srcdir)/WindowMaker.in $(AM_V_GEN)sed -e "s:#pkgdatadir#:$(pkgdatadir):" \ -e "s:#pixmapdir#:$(pixmapdir):" $(srcdir)/WindowMaker.in \ > WindowMaker ; \ chmod 644 WindowMaker WMState: $(srcdir)/WMState.in $(AM_V_GEN)sed -e "s:#wprefs#:$(wpexecbindir)/WPrefs:" $(srcdir)/WMState.in > WMState ; \ chmod 644 WMState WMRootMenu: ./../plmenu $(AM_V_GEN)cp -f ./../plmenu WMRootMenu ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/appearance.menu.nl.in������������������������������������������������0000644�0001750�0001750�00000000750�13642357774�017243� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "wmmacros" Uiterlijk MENU "Achtergrond" OPEN_MENU background.menu.nl "Stijlen" OPEN_MENU -noext STYLES_DIR USER_STYLES_DIR WITH setstyle "Thema's" OPEN_MENU -noext THEMES_DIR USER_THEMES_DIR WITH setstyle "Iconensets" OPEN_MENU -noext ICON_SETS_DIR USER_ICON_SETS_DIR WITH seticons "Iconenset opslaan" EXEC geticonset USER_ICON_SETS_DIR/"%a(Iconensetnaam)" "Thema opslaan" EXEC getstyle -p "%a(Themanaam)" "Voorkeurenhulpmiddel" EXEC #wprefs# Uiterlijk END ������������������������WindowMaker-0.95.9/WindowMaker/menu.fi.in�����������������������������������������������������������0000644�0001750�0001750�00000020523�13431646201�015110� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Root Menu definition for WindowMaker * * Syntax is: * * <Title> [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 * $HOME/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 * SHEXEC <command> - executes a shell command (like gimp > /dev/null) * 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 * %W - substitute with the number of the current workspace * * 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 $HOME/bin/X11 * // set some background images * "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 */ #include "wmmacros" "Sovellukset" MENU "Tietoja" MENU "Tietoja..." INFO_PANEL "Laillista" LEGAL_PANEL "Järjestelmäkonsoli" EXEC xconsole "Järjestelmän rasitus" SHEXEC xosview || xload "Prosessiluettelo" EXEC xterm -e top "Ohjeselain" EXEC xman "Tietoja" END "Käynnistä..." SHEXEC %a(Käynnistä,Kirjoita suoritettava komento:) "XTerm" EXEC xterm -sb "Rxvt" EXEC rxvt -bg black -fg white -fn fixed "Työtilat" WORKSPACE_MENU "Sovellukset" MENU "Grafiikka" MENU "Gimp" SHEXEC gimp >/dev/null "XV" EXEC xv "XPaint" EXEC xpaint "XFig" EXEC xfig "Grafiikka" END "X Tiedostonhallinta" EXEC xfm "OffiX Tiedostot" EXEC files "LyX" EXEC lyx "Netscape" EXEC netscape "Ghostview" EXEC ghostview %a(GhostView,Kirjoita näytettävän tiedoston nimi:) "Acrobat" EXEC /usr/local/Acrobat3/bin/acroread %a(Acrobat,Kirjoita näytettävän PDF-tiedoston nimi) "TkDesk" EXEC tkdesk "Sovellukset" END "Editorit" MENU "XFte" EXEC xfte "XEmacs" SHEXEC xemacs || emacs "XJed" EXEC xjed "NEdit" EXEC nedit "Xedit" EXEC xedit "VI" EXEC xterm -e vi "Editorit" END "Sekalaiset" MENU "Xmcd" SHEXEC xmcd 2> /dev/null "Xplaycd" EXEC xplaycd "Xmixer" EXEC xmixer "Sekalaiset" END "Apuohjelmat" MENU "Laskin" EXEC xcalc "Ikkunan ominaisuudet" SHEXEC xprop | xmessage -center -title 'xprop' -file - "Kirjasinlajivalitsin" EXEC xfontsel "Pääte" EXEC xminicom "Suurennuslasi" EXEC xmag "Värikartta" EXEC xcmap "XKill" EXEC xkill "Leikepöytä" EXEC xclipboard "Apuohjelmat" END "Valinta" MENU "Kopioi" SHEXEC echo '%s' | wxcopy "Lähetä sähköpostina" EXEC xterm -name mail -T "Pine" -e pine %s "Selaa selaimella" EXEC netscape %s "Etsi ohjeista" SHEXEC MANUAL_SEARCH(%s) "Valinta" END "Työtila" MENU "Piilota muut" HIDE_OTHERS "Näytä kaikki ikkunat" SHOW_ALL "Järjestä kuvakkeet" ARRANGE_ICONS "Virkistä ruutu" REFRESH "Lukitse näyttö" EXEC xlock -allowroot -usefirst "Tallenna istunto" SAVE_SESSION "Tyhjennä istunto" CLEAR_SESSION "Työtila" END "Ulkonäkö" MENU "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 "Kuvakkeet" OPEN_MENU -noext ICON_SETS_DIR $HOME/GNUstep/Library/WindowMaker/IconSets WITH seticons "Taustat" MENU "Yksivärinen" MENU "Musta" WS_BACK '(solid, black)' "Sininen" WS_BACK '(solid, "#505075")' "Indigo" WS_BACK '(solid, "#243e6c")' "Tummansininen" WS_BACK '(solid, "#224477")' "Violetti" WS_BACK '(solid, "#554466")' "Kellertävä" WS_BACK '(solid, "wheat4")' "Tummanharmaa" WS_BACK '(solid, "#333340")' "Viininpunainen" WS_BACK '(solid, "#400020")' "Yksivärinen" END "Liukuväri" MENU "Auringonlasku" WS_BACK '(mvgradient, deepskyblue4, black, deepskyblue4, tomato4)' "Taivas" WS_BACK '(vgradient, blue4, white)' "Sinisen sävyjä" WS_BACK '(vgradient, "#7080a5", "#101020")' "Indigon sävyjä" WS_BACK '(vgradient, "#746ebc", "#242e4c")' "Violetin sävyjä" WS_BACK '(vgradient, "#654c66", "#151426")' "Kellertävän sävyjä" WS_BACK '(vgradient, "#a09060", "#302010")' "Harmaan sävyjä" WS_BACK '(vgradient, "#636380", "#131318")' "Viininpunaisen sävyjä" WS_BACK '(vgradient, "#600040", "#180010")' "Liukuväri" END "Kuvat" OPEN_MENU -noext BACKGROUNDS_DIR $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t "Taustat" END "Tallenna teema" SHEXEC getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/"%a(Teeman nimi,Kirjoita teematiedoston nimi:)" "Tallenna kuvakkeet" SHEXEC geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/"%a(Kuvakesetin nimi,Kirjoita tiedostonnimi:)" "Asetukset" EXEC #wprefs# "Ulkonäkö" END "Lopeta" MENU "Käynnistä WM uudelleen" RESTART "Käynnistä BlackBox" RESTART blackbox "Käynnistä kwm" RESTART kwm "Käynnistä IceWM" RESTART icewm "Lopeta" EXIT "Lopeta" END "Sovellukset" END �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/plmenu.zh_CN.in������������������������������������������������������0000644�0001750�0001750�00000010625�13642357774�016073� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������("应用程序", ("信息", ("信息面板...", INFO_PANEL), ("版权...", LEGAL_PANEL), ("系统控制台", EXEC, "xconsole"), ("系统负载", SHEXEC, "xosview || xload"), ("进程列表", EXEC, "xterm -e top"), ("手册浏览器", EXEC, "xman") ), ("运行...", SHEXEC, "%a(运行,要执行的命令:)"), ("XTerm", EXEC, "xterm -sb"), ("Rxvt", EXEC, "rxvt -bg black -fg white -fn fixed"), ("工作空间", WORKSPACE_MENU), ("应用程序", ("图形", ("Gimp", SHEXEC, "gimp >/dev/null"), ("XV", EXEC, "xv"), ("XPaint", EXEC, "xpaint"), ("XFig", EXEC, "xfig") ), ("X 文件管理器", EXEC, "xfm"), ("OffiX Files", EXEC, "files"), ("LyX", EXEC, "lyx"), ("Netscape", EXEC, "netscape"), ("Ghostview", EXEC, "ghostview %a(输入要查看的文件名)"), ("Acrobat", EXEC, "/usr/local/Acrobat3/bin/acroread %a(要查看的PDF文件名)"), ("TkDesk", EXEC, "tkdesk") ), ("编辑器", ("XFte", EXEC, "xfte"), ("XEmacs", SHEXEC, "xemacs || emacs"), ("XJed", EXEC, "xjed"), ("NEdit", EXEC, "nedit"), ("Xedit", EXEC, "xedit"), ("VI", EXEC, "xterm -e vi") ), ("其它", ("Xmcd", SHEXEC, "xmcd 2> /dev/null"), ("Xplaycd", EXEC, "xplaycd"), ("Xmixer", EXEC, "xmixer") ), ("工具", ("计算器", EXEC, "xcalc"), ("窗口属性", SHEXEC, "xprop | xmessage -center -title 'xprop' -file - "), ("字体选择", EXEC, "xfontsel"), ("终端模拟器", EXEC, "xminicom"), ("放大", EXEC, "xmag"), ("颜色表", EXEC, "xcmap"), ("XKill", EXEC, "xkill"), ("ASClock", EXEC, "asclock -shape"), ("Clipboard", EXEC, "xclipboard") ), ("选择", ("复制", SHEXEC, "echo '%s' | wxcopy"), ("发送邮件", EXEC, "xterm -name mail -T Pine -e pine %s"), ("浏览", EXEC, "netscape %s"), ("查找手册", SHEXEC, "MANUAL_SEARCH(%s)") ), ("工作空间", ("隐藏其他", HIDE_OTHERS), ("显示所有", SHOW_ALL), ("排列图标", ARRANGE_ICONS), ("刷新", REFRESH), ("锁住屏幕", EXEC, "xlock -allowroot -usefirst"), ("保存会话", SAVE_SESSION), ("清除保存的会话", CLEAR_SESSION) ), ("外观", ("主题", OPEN_MENU, "-noext #wmdatadir#/Themes $HOME/GNUstep/Library/WindowMaker/Themes WITH setstyle"), ("风格", OPEN_MENU, "-noext #wmdatadir#/Styles $HOME/GNUstep/Library/WindowMaker/Styles WITH setstyle"), ("图标集", OPEN_MENU, "-noext #wmdatadir#/IconSets $HOME/GNUstep/Library/WindowMaker/IconSets WITH seticons"), ("背景", ("单色", ("黑", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, black)'"), ("蓝", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#505075\")'"), ("青", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#243e6c\")'"), ("深蓝", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#224477\")'"), ("紫", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#554466\")'"), ("淡黄", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, wheat4)'"), ("深灰", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#333340\")'"), ("酒红", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#400020\")'") ), ("过渡色", ("日落", EXEC, "wdwrite WindowMaker WorkspaceBack '(mvgradient, deepskyblue4, black, deepskyblue4, tomato4)'"), ("天空", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, blue4, white)'"), ("蓝色阴影", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#7080a5\", \"#101020\")'"), ("青色阴影", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#746ebc\", \"#242e4c\")'"), ("紫色阴影", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#654c66\", \"#151426\")'"), ("淡黄阴影", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#a09060\", \"#302010\")'"), ("灰色阴影", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#636380\", \"#131318\")'"), ("酒红阴影", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#600040\", \"#180010\")'") ), ("图像", OPEN_MENU, "-noext #wmdatadir#/Backgrounds $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t") ), ("保存主题", SHEXEC, "getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/\"%a(主题名)\""), ("保存图标集", SHEXEC, "geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/\"%a(图标集名)\"") ), ("退出", ("重新启动", RESTART), ("启动 BlackBox", RESTART, blackbox), ("启动 kwm", RESTART, kwm), ("启动 IceWM", RESTART, icewm), ("退出...", EXIT) ) ) �����������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/appearance.menu.fy.in������������������������������������������������0000644�0001750�0001750�00000000740�13642357774�017247� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "wmmacros" Uterlik MENU "Eftergrûn" OPEN_MENU background.menu.fy "Stilen" OPEN_MENU -noext STYLES_DIR USER_STYLES_DIR WITH setstyle "Tema's" OPEN_MENU -noext THEMES_DIR USER_THEMES_DIR WITH setstyle "Ikoanesets" OPEN_MENU -noext ICON_SETS_DIR USER_ICON_SETS_DIR WITH seticons "Ikoaneset bewarje" EXEC geticonset USER_ICON_SETS_DIR/"%a(Ikoanesetnamme)" "Tema bewarje" EXEC getstyle -p "%a(Temanamme)" "Foarkarrehelpmiddel" EXEC #wprefs# Uterlik END ��������������������������������WindowMaker-0.95.9/WindowMaker/README.themes��������������������������������������������������������0000644�0001750�0001750�00000005245�13431646201�015367� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Themes For Window Maker ======================= Note: the information contained in this file is only valid for themes in the .themed (for theme directory) format, supported in Window Maker 0.20.4 or newer. How To Install a Theme Pack =========================== To install a theme, unpack your theme into your WindowMaker directory (the same as old-style themes), usually ~/GNUstep/Library/WindowMaker cd ~/GNUstep/Library/WindowMaker gzip -dc "xyztheme.tar.gz" | tar xvf - You can also do this in your system-wide WindowMaker directory (usually /usr/local/share/WindowMaker) to have the themes be available to all your users. This will probably need to be done with root access. How To Load a Theme =================== Use the setstyle command to load a theme. Example: setstyle xyztheme.themed Note that if you move the directory of the theme (for example, from ~/GNUstep/Library/WindowMaker/Themes to /usr/local/share/WindowMaker/Themes) you will have to reload that theme so that path information is updated. How To Make a Theme Pack ======================== To create a theme pack from your current configuration, use the getstyle utility with the -p flag. Example: getstyle -p ~/GNUstep/Library/WindowMaker/Themes/MyTheme This will create a theme pack (a new directory in either the current directory or a directory you specify) named MyTheme.themed, containing everything it requires, including all pixmap files. In this example, the new theme pack would be made in your themes directory and be immediately available in your Themes menu. Additionally, you can put a text file named MyTheme.lsm in the MyTheme.themed directory. This file can contain info like copyrights, credits or whatever. To distribute your theme, just make a .tar.gz of the .themed directory. This is preferably done from the same directory that you unpack the themes from to maintain consistancy with the old theme format. Example: cd ~/GNUstep/Library/WindowMaker tar cvf MyTheme.tar Themes/MyTheme.themed gzip MyTheme.tar How To Delete a Theme Pack ========================== Just remove the .themed directory. Example: cd ~/GNUstep/Library/WindowMaker/Themes rm -fr themename.themed How To Save Disk Space ====================== If you have more than 1 theme that use the same huge background image, you can delete all the duplicated files and then create hard links in place of them. For example, if you have: theme1.themed/back.jpg theme2.themed/backimage.jpg theme3.themed/back.jpg and all three files contain the same image, you can do: rm theme2.themed/backimage.jpg rm theme3.themed/back.jpg ln theme1.themed/back.jpg theme2.themed/backimage.jpg ln theme1.themed/back.jpg theme3.themed/back.jpg �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/menu.nl.in�����������������������������������������������������������0000644�0001750�0001750�00000016207�13642357774�015151� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Hoofdmenu-uitwerking voor WindowMaker * * Opmaak is: * * <Titel> [SHORTCUT <Sneltoets>] <Commando> <Parameters> * * <Titel> is elke tekenreeks te gebruiken als titel. Moet tussen " staan als het * spaties heeft. * * SHORTCUT geeft een sneltoets op voor die ingang. <Sneltoets> heeft * dezelfde opmaak als de sneltoetsopties in het * $HOME/GNUstep/Defaults/WindowMaker bestand, zoals RootMenuKey of MiniaturizeKey. * * U kunt geen sneltoets opgeven voor een MENU- of OPEN_MENU-onderdeel. * * <Commando> een van de geldige commando's: * MENU - begint (sub)menubepaling * END - beëindigt (sub)menubepaling * OPEN_MENU - opent een menu uit een bestand, 'pipe' of map(pen)inhoud, * en gaat eventueel elk vooraf met een commando. * WORKSPACE_MENU - voegt een submenu voor werkruimtehandelingen toe. Slechts één * workspace_menu is toegestaan. * EXEC <programma> - voert een extern programma uit * SHEXEC <commando> - voert een 'shell'-commando uit (zoals gimp > /dev/null) * EXIT - sluit de vensterbeheerder af * RESTART [<vensterbeheerder>] - herstart WindowMaker, of start een andere * vensterbeheerder * REFRESH - vernieuwt het bureaublad * ARRANGE_ICONS - herschikt de iconen in de werkruimte * SHUTDOWN - doodt alle cliënten (en sluit de X Window-sessie af) * SHOW_ALL - plaatst alle vensters in de werkruimte terug * HIDE_OTHERS - verbergt alle vensters in de werkruimte, behalve die * focus heeft (of de laatste die focus had) * SAVE_SESSION - slaat de huidige staat van het bureaublad op, inbegrepen * alle lopende programma's, al hun 'hints' (afmetingen, * positie op het scherm, werkruimte waarin ze leven, Dok * of Clip van waaruit ze werden opgestart, en indien * geminiaturiseerd, opgerold of verborgen). Slaat tevens de actuele * werkruimte van de gebruiker op. Alles zal worden hersteld bij elke * start van windowmaker, tot een andere SAVE_SESSION of * CLEAR_SESSION wordt gebruikt. Als SaveSessionOnExit = Yes; in * het WindowMaker-domeinbestand, dan wordt opslaan automatisch * gedaan bij elke windowmaker-afsluiting, en wordt een * SAVE_SESSION of CLEAR_SESSION overschreven (zie hierna). * CLEAR_SESSION - wist een eerder opgeslagen sessie. Dit zal geen * effect hebben als SaveSessionOnExit is True. * INFO - toont het Infopaneel * * OPEN_MENU-opmaak: * 1. Menuafhandeling uit bestand. * // opent bestand.menu, dat een geldig menubestand moet bevatten, en voegt * // het in op de huidige plaats * OPEN_MENU bestand.menu * 2. Menuafhandeling uit pipe. * // opent commando en gebruikt zijn 'stdout' om een menu aan te maken. * // Commando-output moet een geldige menubeschrijving zijn. * // De ruimte tussen '|' en het commando zelf is optioneel. * // Gebruik '||' in plaats van '|' als u het menu altijd wilt bijwerken * // bij openen. Dat zou traag kunnen werken. * OPEN_MENU | commando * OPEN_MENU || commando * 3. Mapafhandeling. * // Opent een of meer mappen en maakt een menu aan, met daarin alle * // submappen en uitvoerbare bestanden alfabetisch * // gesorteerd. * OPEN_MENU /een/map [/een/andere/map ...] * 4. Mapafhandeling met commando. * // Opent een of meer mappen en maakt een menu aan, met daarin alle * // submappen en leesbare bestanden alfabetisch gesorteerd, * // elk van hen voorafgegaan met commando. * OPEN_MENU [opties] /een/map [/een/andere/map ...] WITH commando -opties * Opties: * -noext laat alles vanaf de laatste punt in de * bestandsnaam weg * * // Gebruik #usergnusteppath# als tijdelijke aanduiding voor het pad naar de * // gebruikers-GNUstep-map. Window Maker zal die vervangen met de waarde * // van WMAKER_USER_ROOT, als deze omgevingsvariabele is ingesteld, of * // anders "~/GNUstep" * * <Parameters> is het uit te voeren programma. * * ** Commandoregelopties in EXEC: * %s - wordt vervangen door de actuele selectie * %a(titel[,aanwijzing]) - opent een invoerveld met de opgegeven titel en de * optionele aanwijzing, en wordt vervangen door wat u intypt * %w - wordt vervangen door XID voor het actuele gefocust venster * %W - wordt vervangen door het nummer van de actuele werkruimte * * U kunt speciale karakters (zoals % en ") uitschakelen met het \-teken: * vb.: xterm -T "\"Hallo Wereld\"" * * U kunt ook ontsnappingstekens gebruiken, zoals \n * * Elke MENU-declaratie moet één gekoppelde END-declaratie op het eind hebben. * * Voorbeeld: * * "Test" MENU * "XTerm" EXEC xterm * // maakt een submenu met de inhoud van /usr/openwin/bin aan * "XView-progr" OPEN_MENU "/usr/openwin/bin" * // enige X11-programma's in verschillende mappen * "X11-progr" OPEN_MENU /usr/X11/bin $HOME/bin/X11 * // enige achtergrondafbeeldingen instellen * "Achtergrond" OPEN_MENU -noext $HOME/afbeeldingen /usr/share/images WITH wmsetbg -u -t * // voegt het style.menu in met dit onderdeel * "Stijl" OPEN_MENU style.menu * "Test" END */ #include "wmmacros" "Programma's" MENU "Info" MENU "Infopaneel" INFO_PANEL "Juridische info" LEGAL_PANEL "Systeemconsole" EXEC xconsole "Systeembelasting" SHEXEC xosview || xload "Proceslijst" EXEC xterm -e top "Handleidingbrowser" EXEC xman "Info" END "Uitvoeren..." SHEXEC %a(Uitvoeren,Typ uit te voeren commando:) "XTerm" EXEC xterm -sb "Mozilla Firefox" EXEC firefox "Werkruimten" WORKSPACE_MENU "Programma's" MENU "Gimp" SHEXEC gimp >/dev/null "Ghostview" EXEC ghostview %a(GhostView,Voer te bekijken bestand in) "Xpdf" EXEC xpdf %a(Xpdf,Voer te bekijken PDF in) "Abiword" EXEC abiword "Dia" EXEC dia "OpenOffice.org" MENU "OpenOffice.org" EXEC ooffice "Writer" EXEC oowriter "Rekenblad" EXEC oocalc "Draw" EXEC oodraw "Impress" EXEC ooimpress "OpenOffice.org" END "Tekstbewerkers" MENU "XEmacs" EXEC xemacs "Emacs" EXEC emacs "XJed" EXEC xjed "VI" EXEC xterm -e vi "GVIM" EXEC gvim "NEdit" EXEC nedit "Xedit" EXEC xedit "Tekstbewerkers" END "Multimedia" MENU "XMMS" MENU "XMMS" EXEC xmms "XMMS afspelen/pauzeren" EXEC xmms -t "XMMS stoppen" EXEC xmms -s "XMMS" END "Xine videospeler" EXEC xine "MPlayer" EXEC mplayer "Multimedia" END "Programma's" END "Hulpmiddelen" MENU "Rekenmachine" EXEC xcalc "Venstereigenschappen" SHEXEC xprop | xmessage -center -title 'xprop' -file - "Lettertypekiezer" EXEC xfontsel "Vergroten" EXEC wmagnify "Kleurenkaart" EXEC xcmap "X-programma doden" EXEC xkill "Hulpmiddelen" END "Selectie" MENU "Kopiëren" SHEXEC echo '%s' | wxcopy "E-mailen naar" EXEC xterm -name mail -T "Pine" -e pine %s "Navigeren" EXEC netscape %s "Zoeken in handleiding" SHEXEC MANUAL_SEARCH(%s) "Selectie" END "Commando's" MENU "Andere verbergen" HIDE_OTHERS "Alles tonen" SHOW_ALL "Iconen schikken" ARRANGE_ICONS "Vernieuwen" REFRESH "Vergrendelen" EXEC xlock -allowroot -usefirst "Commando's" END "Uiterlijk" OPEN_MENU "appearance.menu.nl" "Sessie" MENU "Sessie opslaan" SAVE_SESSION "Sessie wissen" CLEAR_SESSION "Window Maker herstarten" RESTART "BlackBox starten" RESTART blackbox "IceWM starten" RESTART icewm "Afsluiten" EXIT "Sessie" END "Programma's" END �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/menu.de��������������������������������������������������������������0000644�0001750�0001750�00000010070�13431646201�014471� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // Hauptmenükonfiguration für WindowMaker // // Syntax: // // <Title> <Command> <Parameters> // // <Title> ist ein Text, der als Titel benutzt werden soll. Falls er // Leerzeichen enthält, muss er von " umgeben sein. // // <Command> eine der folgenden gültigen Anweisungen: // MENU - beginnt (Unter)menüdefinition // END - beendet (Unter)menüdefinition // EXEC <program> - führt ein externes Programm aus // SHEXEC <command> - executes a shell command (like gimp > /dev/null) // EXIT - beendet den Fenstermanager // RESTART [<window manager>] - startet WindowMaker neu oder // startet einen anderen Fenstermanager. // REFRESH - Zeichnet den Bildschirminhalt neu. // ARRANGE_ICONS - Ordnet die Icons auf der Arbeitsfläche neu an. // SHUTDOWN - Beendet die X Sitzung und alle Anwendungen // WORKSPACE_MENU - fügt Untermenü für Arbeitsflächenverwaltung ein // SHOW_ALL - Bringt alle Fenster zurück auf Arbeitsfläche // HIDE_OTHERS - Versteckt (mit Ausnahme des aktiven) alle Fenster auf // der Arbeitsfläche // // <Parameters> ist das auszuführende Programm // // Besonderheiten für die EXEC Kommandozeile // %s - An dieser Stelle den aktuell markierten Text einsetzen. Ist kein Text // markiert, wird das Kommando abgebrochen // %w - An dieser Stelle die ID des aktuellen Fensters einsetzen. Ist kein // Fenster aktiv, so wird nicht eingesetzt. // // Die Bedeutung der ausgezeichneten Zeichen (% bzw. ") kann mit dem \ Zeichen // außer Kraft gesetzt werden. z.B.: xterm -T "\"Hello World\"" // // Jede MENU Anweisung muss eine passende END Anweisung besitzen. // Siehe dieses Beispiel: #include <wmmacros> "Anwendungen" MENU "Info" MENU "Info Panel..." INFO_PANEL "Legal" LEGAL_PANEL "Systemauslastung" SHEXEC xosview || xload "Prozeßtabelle" EXEC xterm -e top "Anleitungen" EXEC xman "Info" END "XTerm" SHEXEC xterm -sb || color-xterm -sb || xterm -sb "XJed" EXEC xjed "Arbeitsfläche" WORKSPACE_MENU "Anwendungen" MENU "Grafik" MENU "Gimp" EXEC gimp "XV" EXEC xv "XPaint" EXEC xpaint "XFig" EXEC xfig "Grafik" END "X Dateimanager" EXEC xfm "OffiX Files" EXEC files "LyX" EXEC lyx "Netscape" EXEC netscape "Ghostview" EXEC ghostview %a(Ghostview) "XDvi" EXEC xdvi %a(XDvi) "Acrobat" EXEC /usr/local/Acrobat3/bin/acroread %a(Acrobat) "TkDesk" EXEC tkdesk "Anwendungen" END "Editoren" MENU "XEmacs" SHEXEC xemacs || emacs "XJed" EXEC xjed "NEdit" EXEC nedit "Xedit" EXEC xedit "VI" EXEC xterm -e vi "Editoren" END "Sonstiges" MENU "Xmcd" SHEXEC xmcd 2> /dev/null "Xplaycd" EXEC xplaycd "Xmixer" EXEC xmixer "Sonstiges" END "Hilfsmittel" MENU "Taschenrechner" EXEC xcalc "Schriftauswahl" EXEC xfontsel "Lupe" EXEC xmag "Farbtabelle" EXEC xcmap "XKill" EXEC xkill "ASClock" EXEC asclock -shape "Hilfsmittel" END "Markierung" MENU "email an" EXEC xterm -name mail -T "Pine" -e pine %s "Navigate" SHEXEC netscape -noraise -remote \ 'openURL(%s,new-window)' || netscape %s "in Anleitung suchen" SHEXEC MANUAL_SEARCH(%s) "Markierung" END "Arbeitsplatz" MENU "Andere verstecken" HIDE_OTHERS "Alle anzeigen" SHOW_ALL "Icons anordnen" ARRANGE_ICONS "Neuzeichnen" REFRESH "Sperren" EXEC xlock -allowroot -usefirst "Hintergrund" MENU "None" EXEC CLEARROOT "Schwarz" WS_BACK '(solid, black)' "Blau" WS_BACK '(solid, "#505075")' "Purpur" WS_BACK '(solid, "#554466")' "Weizen" WS_BACK '(solid, wheat4)' "Dunkelgrau" WS_BACK '(solid, "#333340")' "Wein" WS_BACK '(solid, "#400020")' "Hintergrund" END #if (DEPTH>=8) // Einbinden einiger Farbverläufe für Anfänger und Faulpelze. // Nach dem Ändern muß 'RESTART' ausgeführt werden #include <gradients.menu> #endif "Arbeitsplatz sichern" EXEC SAVE_WORKSPACE "Arbeitsplatz" END "Beenden" MENU "Neustart" RESTART "AfterStep starten" RESTART afterstep "Beenden..." EXIT "Sitzung beenden..." SHUTDOWN "Beenden" END "Anwendungen" END ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/���������������������������������������������������������������0000755�0001750�0001750�00000000000�13642365213�014355� 5����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/GNUstep3D.xpm��������������������������������������������������0000644�0001750�0001750�00000007535�13431646201�016544� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * GNUstep_xpm[] = { "45 45 80 1", " c None", ". c #861786178617", "X c #9E799A699E79", "o c #71C675D679E7", "O c #69A66DB671C6", "+ c #69A669A669A6", "@ c #6185659569A6", "# c #59655D756185", "$ c #596559656185", "% c #514455555965", "& c #514451445144", "* c #49244D345144", "= c #514455555144", "- c #8E388E388E38", "; c #861786178E38", ": c #861782078E38", "> c #861782078617", ", c #71C675D671C6", "< c #71C671C671C6", "1 c #618565956185", "2 c #596559655965", "3 c #492449244924", "4 c #410341034103", "5 c #38E338E338E3", "6 c #30C230C230C2", "7 c #28A228A228A2", "8 c #18611C711861", "9 c #104014511040", "0 c #A699A699A699", "q c #965892489658", "w c #965896589658", "e c #79E779E779E7", "r c #69A66DB669A6", "t c #30C234D330C2", "y c #28A22CB228A2", "u c #208120812081", "i c #186118611861", "p c #08200C300820", "a c #000004100000", "s c #000000000000", "d c #965896589E79", "f c #AEBAAAAAAEBA", "g c #9E799E799E79", "h c #618561856185", "j c #208124922081", "k c #082008200820", "l c #B6DAB2CAB6DA", "z c #79E77DF779E7", "x c #49244D344924", "c c #104010401040", "v c #AEBAAEBAAEBA", "b c #8E388A288E38", "n c #59655D755965", "m c #410345144103", "M c #38E33CF338E3", "N c #30C234D338E3", "B c #18611C712081", "V c #A699A289A699", "C c #D75CD75CD75C", "Z c #CF3CCF3CCF3C", "A c #C71BC71BC71B", "S c #E79DE79DE79D", "D c #FFFFFFFFFFFF", "F c #BEFBBEFBBEFB", "G c #104014511861", "H c #8E388E389658", "J c #D75CD34CD75C", "K c #F7DEF7DEF7DE", "L c #EFBEEFBEEFBE", "P c #DF7DDB6CDF7D", "I c #B6DAB6DAB6DA", "U c #F7DEF3CEF7DE", "Y c #E79DE38DE79D", "T c #DF7DDF7DDF7D", "R c #8E388A289658", "E c #CF3CCB2BCF3C", "W c #FFFFFBEEFFFF", "Q c #C71BC30BC71B", "! c #BEFBBAEABEFB", "~ c #EFBEEBADEFBE", " ", " .XoO+@#$%&*= ", " X-;:>,<12&345678953 ", " X0qw-.er12&345tyui9pas ", " Xdfg->erh2&3456yj89pkssss ", " 0lfg-z<+h=x3456yj8ickasssss7 ", " dlvXbz<1n=x345ty7ui9passssssss ", " dvfgbe<1n2&3mMt67j89ckssssssssss5NNNNNB", " fv0X-e<+h2=xm45tyjui9passski887i=sssssss", " Vf0X-z<+hn=&3mMt67j89cksss9,CCZA0q7ssssss", " VvvVq>,r1h2=xm45tyjui9passsySDDDDDF.Gsssss", " vfVq.e<+hn=&3mMt67j89ckasssyCDDDDDSV<Gssss", " H0gq.z<r1h2=xm45tyjui9passssyJDDDKLPIq+ssss", " 0Vwb>,<+hn=&3mMt67j89ckassssyZDDUYTZFVeGsss", " R0gq.z<r1h2=xm45tyjui9passsssyEDDLTJEFV.nsss", " Xgwb>,<+hn=&3mMt67j89ckasssssyADWSCZAIVb2sss", " gXq.z<r1h2=xm45tyjui9passssssyQDKYJEQ!fqrGss", ":Vgq.e<+hn=&3mMt67j89ckassssssyFDLTZAFIfqe2ss", "wXqbz<r1h2=xm45tyjui9passsssssy!K~PEQ!l0w.nss", ".q-.e<+hn=&3mMtyjui9ckasssssssyIUSJQ!Iv0X.1Ms", "<q->,r1h2=xm45yj8i9ckassssssssylLYZFIlfVqzr5s", "+q-z<+hn=&3mM6ji9cpkasssssssssyvSPE!lf0g-e+ts", "+qber1h2=xmMtj9kpkkassssssssssyFUPAIv0Vwb<1ts", "+q.,rhn=&345y8pai9j9jcjp97pciurPWPQlfVgq.rhts", "+->,+h2=xmMt7ip9,lVfg0XXw!X-lQPK~ZIfVgw->rnts", "+bz<1n=&3mM6jicyCDDDDDDDDDDKDDD~Z!v0gXqbe+nts", "1>erh2=xm456jipyCDDDDDDDDDDWKLYJ!v0VXw-z+n4us", "h,<+n=&3mMtyu9pyJDDDDDDWKLSYTJE!vfVXw-.eh=yss", "=1+h2=xm4567u9pyJDDDWULSYPCZEQ!lfVgwqb><h26ss", " +1h2&3mMtyj8ckyJDDDU~YTCZEQFIlf0gXq-.,+24uss", " +1n=xm45tyjickyJDDDLYTCJEAF!lv0VXq-.z<1=ykss", " &==&3mMt67uipayJDDW~TPJZAQ!Iv0VXw-b>,1nM8sss", " x&x3456yj89payZDDKYPCZAQ!IvfVgwqb.e<n&7ssss", " 3mmm56yjuickayEDDLTCZEQFIlf0gXqb.z,1=58ssss", " 555tyu8i9pksyADD~PJEAF!lf0gXq-.z,1=tcassss", " mM6u9ccpkasyADKSCZAF!lv0VXw-b>,rh&7asssss", " my9pkaasssyCDWYJAQ!IvfVgw-b>,1hn58ssssss", "+r1n&Mj68i8888uzKDWTEQFIlfVgwqb>,1&xtpsssssss", "h1n&3t7NCT~PZEPKDDSJAFIlf0gw-bz<h&6ucssssssss", "22&3M6789IWDDDDDDYZQ!Iv0Vgwb>,+h=ykssssssssss", "=&34tyj8cktblYYJAFlf0VXw-b><112xtpsssssssssss", "=x4tyju89pastebq0gq-b>ze,<<h=&5ucssssssssssss", "&mt7u8i9ckasssy&<eze,<r+1hnMjjcssssssssssssss", "mtui9ccpkasssssssyjjtt66yjjcsssssssssssssssss", "kasssssssssssssssssssssssssssssssssssssssssss"}; �������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/timer.tiff�����������������������������������������������������0000644�0001750�0001750�00000017242�13431646201�016270� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*���0%!$XP!G2(b'vqG8B(S&K4m c%)kL9b &ر`)0a[)x G0O" ܼ5 I _*k;Fq**T'681\ k!&42,8*#:Twljsa܆,Bf̚7{Tp/iߥmcb$#E?7>#ކ0/'reGO-UR#56`xFmqvs58UU=LTGQf@/^hNQ%`1'i?gqYM$U, GuP8"UB@?C+3 $B(u0ѴQ7TF ɬ9_rG8|EP.@_GL'tQ5vtR.=*SL``̅cu XWV^U9tcK!tST4h4điGY)kdkydFICqn?ZI[A<VQD7‹DHo}À4QFBJ7AtaZbH rx!Y۪Xw%w6KM mnG9$|ҟͱYD.h=dUFr˟@n:G 7^whVT5Ey)&p�lp|i60Ŭ>GXW kvid晫EfCaI{@0>ԑV`yTDz E iEg?9]C`ιGOho!2@4@LZF kTf!J&vx#Q1ةt=Ss%NT M(A FGmh@^^І Ă`C&d =h J Yr 򖿖B ^&CJ yBr$#RG* |MRtt �_Yܕy%7EY$#8:&T $s WҖ_ e^X)`; P 3=( 2š 4 yЅ (PR:ӝN%LށT5D 6=`s5hDX&V`?C%TEMwZ/aIQj0#{Ʋ:) @[^#6` 0,B "O&L?0@jl�ZAOi$A`F$@W%JP׾7Q9 :r71ؕ+4sn0E&tVz ?J?h@;/d:A{hBaHQD8-�wNj ý,aS͇!LKU ^>4 cD2ϽnZ?a\�`R`/+ψ*f⋕.%Pw\2Bh Kb-??VmeA:F2a?6͆SaӼC#T@By+SX!`V mZ3h@\lɇG8@Ԡax)K>'pĴR7s V- g`X7pa0j,lJҼA1+PRbHa'<Gx©p|áiQ*K?L/xlp GX�]ra4<r � j@ Dn -ğovB! iKOk7Kia Mt-TK(RLPPv];5[ M`ZdXp+ xD02Յ7L5 gw`kNv q`E(!0!ԉԪğ5&5R-w9JC{ mXG~)F}A`MhK4ThzF۲l N50<潇Ma^BF07r jE1#~$3x! {"md~H@aL[7#ڐ P:2 tp!I? ЃiC:6t >}oІa[@Le.@]w3a$bRPȆ?ȁH?ȆH `ȁT7}$0HȄ ӄuHHtr|<lL$�$�fDl**:Fun!)|�9[�#]L/=\HvυDc7\K[M�sGPyr>ðsM�0V|߁??q HJ >p/h,ȁD?(RȆ?(2ȁ�/\pV.ȇȄȁ\HxL(8+0'qcP@B@? *r&ouBNZ0` XGL0M)?vh?7 g)^'_|jB gM�FJz"PP0sprPP)[�oF]O!HȄh b|OD0c0(ȃ"(\\( Xa 3qh!n~1r? Nz7vF 1HR:X XȂb(e"GpЛdNXIࢷp|t307cs | Z"HMu4S'?TZ�wЧ4Ȅp,HH+}S.(D�cuPaDD�FFTy .Q UVcR &^`ǀ!hVz0P5K#;##0XՂԜxwsvPS3;+T 0KmWd=1Q f=G;Kpcg0(HӁ,Hu+*6fh:TETZ@n6.j`c~`4?}dȉJ?ܠag IpUx0+'0s*04CW gp5?wu?R0t/PuG=ߏcFђg0e07=vR�-p2$˅Pn..C@PõH`j##pҗ�3\0k+kZ5R60HDSx�=}+ISp8 Mǘb'WԜK<[#>5tpI;eUPIT @VqUvR;h^O@CA""E@~`a`gTl4X"G"BJbpbhJx+~ Ԍj65ƲFuip1?P)y}.4FV'`T�j1SPhAc+}>el6AW]q*pWYׄ?>?1 HB&~"T�1Pc eʳT]T4[̱~+pN⊗(pՂpZM&vo&/! !yiDECu ^}ZJ#*�%RHHD_((D"Jd7,h1j]/e~l%X* JZ3h=MSNÂl&tGdpKQpKFw Dz`RD$/g)Lp#3p-6̔;~s]H3P3Z(ȇRȂHIQ5hz|jP2HJ7te pcI+3-Wz0sB̼퍑h7\`Pruw} M%" SVdZ40R3CW#85icLrr. 5, d@G9mIm%Pd= |f hbkVpᲔXmޙmҦ^2%vr RPQʩm& 0 **etgAW҃Lȃ|(,HT_Q.P%@4gW*x�ɘ? 0U^өH kC `ުpnvlMЯbH-L@pCEa긦BYः0p� gWˊm`0_tH$>e_O< PJV]/,Xur vk\Q[SA@7<.JPr:{\QPҿ.:@/!-vP$_RØ;M/kށ(I()N)ұU03MI& ;CfyV0`7L�6IKQХ0T}YOE0\Piu1e.ܨ-aѿݢ~ et�~4/Iy{�}1K MG!0`(|5MH;6.[,Ȋv#3!v)r2Bm�Ԩ+hNF6>"JR.#Կ'4=:.yw & T$dc>qI?h [ /(2LPr_9!<UPv5P^go�! o�n`6}[]pu!PPMh$i6֪t/0,&??dTpU4r x:zH>\JAyA&q( ȷ}*yyXFP"ȓ k@"c6 Gn`Geu3Y,Y7 V>W0Q6 ԧ^Et{@-1c3mhx ?8(td^g>Ks A]hnh 5腖Ȟ#+<tiyS!k!'@7a !EKy`*%l3u"'0-yQ?ip=L%W0yW #{0}?C?Jf`p>c >zrV槆VXȌ\E;7#7Z9?I~Mc02 9tk0cH9oS{ 3ՄupM<�#Gm0Y:�Hm iU8�2Hp3i~5@'c"j&E?`hnh?h/�C6i'YD 6;f %rH#-280#R0Ņ?R0A?zcD?cN?t*0J(i1,hJ0dqW[@ O0x/n\q>q #A292ѡ~(kѢƟVW[WZ˰@J%?("?5*X1O*9g΢A5 #YP" Y`@6TA,^F'J'ᅆ?IQMEvpAApGG?C46L<2x3 Zh2ɍ#R1C"K,Zi&>کϺ覑VmA:Q"6'D)7G-T$h4 :jdb,?Cv(C.|BACt C4iQ1EN=lV[.!8F` VŅH\d6 [0GЈ{An?i?+6[z䏦:vA:K.g^dvlq?JICEpΎǍHATQxKƂ+Da+|W?E~P)-�Z[N!W[@!RC33 CHZVfc_լ-n&*Zj5,'@ S"-h*1zd'Zm Glڵ~C"khpH4B ?rL Bq< ~ID&`V ҂BKF?Te>%DYav9\8X!YK-Fq>b"'\qĊBo#�2ҋ+u:ءw$1iD&*{̔?FCbB*sN- RgAC A|D'&'"pyPAȃԳ T?X|<�Ѡ}":"рRM(ӡmU%(Avl5tD>tN]OwE700;BOAF1<@ qk iHZ8ALP4܏ o &[ 1"ȁ0P`#&))A]e NJAK !  RRj4(^JӪU-ZӢ]]l]bO>-t__q= ߐi1ߨYP^t9Ь@29aǎb!E*$aFPG}SRą>HaiH/"4ƄQ%T9A b$O WƿrҨ̿-ÆЪC>'CVҤː)K<+PHM?Ί?Fp/Z- ,?da@;( !Oi51Hy(pG7|<P5�4 -hJ z Z(LSRsTli^Zdi$ h17SE^}C7t +: -?L CE~ߐ-C3C*Ѐ?\#Hp0|c5xǬ,/{2j)?$$;)9D!#4(lhJ?ji|r0/L?XQr%rt44Ux ?a?� Eja hpC�d4[0Gu30Ìo79sbxZ"oE (#*\I1+]G|G<`]G .*\Bm@Ql[S81[BūFfՒO|}kFPf4'=b+rF }p@!</d 7GqD B9G@x5^|w?x__÷VҪ>O~x~?Z������0�������0�������^���������������� ������� ����f������|��������������������������*����������������R���������������/home/fatal/timer.tif�created with The GIMP������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/real.tiff������������������������������������������������������0000644�0001750�0001750�00000007442�13431646201�016074� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*�:��p $h!B &l 3?pAlg";?t5w˵&s񏐫#9(yG?Z񏑯c�8-?^uqsWD'.?IIOVS㟲XT.?M iK}ƨs:mj ؜-\H1J-_rr]׿Ӎ6oٺ.Ӯw (?a{׬AC5f\OoмYΞ8$D2)F:Zv;WPaVB)eSA%UdkQO4ь:F;mu7`C 7hDM5L!�kNkN{U\It4'"pyp#K] hv}G?븽g_. q' I6G,9kzSKNpV82p$lT]̕(Ξh٣bӫ5>?S @یD aƘ(YK>HSC4?BE U5L̅H5n҉j=^X=:/#:_.?.⟑#kSJEԚŖ a:c5r&" ]:N\ӹ\<=6/|z1'AYLu眎Ru;3{{4z f,I]n6uLV5zph e^>(ǩ:G<).%o &8 y".kmƆ1%Qp`\6eqQv6#?~ėOF9ha#A�/.%(C B w6UU"yq"wt=FH¯-f\-2m;v5"}a(c>e&'0cy]h@:!� s04a ]x@ЅG z WLAa8 3$VHo`{dNAj`+X|.�ulb!qSC~B6h <0#D VH+쐎OѱGoomĈw̼X9JvrDHG%tYr <#߇I^ZҚ& d80(VL#^ ӑg!N P PBI,4&-abNr'̹bnr�`!dlS ?UYA0Sù�vpAЀO\RkN?Y]] 0+^Sʼn#2KҗD.,8`ʈĵ3७02+X2ź`*TRǶRlYJW86+xU0(Pe-8LfPW7w-}YվDUf*\:׮%N] V m6jZNPKs2կ +QTTY3[Rc$uf(4ƀi)LZǡUn(f*T+CT-usjߚضm\.0TSڍǩc|+zhbuWo_ ۥj"yhDC$l;Wd=hקUӚW.I?c,4ьQt+� 3-x/ޱJa=)vw;P ]?<_9hnĪK�Q$%In.R3ԒFNxĤ&cEnC "8cnݰC`d5xh;GCt 6Xbb@Zr (P\dP:Ygt PB1 :(#gIKYsF�`/J1אD8~!XF !އo �澖;�8 4A 047(:ot`��Ca.%:1cԢඍn+{[{5- >H``7DaSրFq{OCPb T>CQxG q8` D=2$n @ NAȂ B1(€07zS?cx1 L30Y\BۿPCΐtAl IXF s25$ q/ 0J< B\9j GHBސ6`k.gY ߠ0(% @$&HL"gA(]HD GtBN,o)8 n!0M(2hȁ H*EXkȁza@_ w|YE_5 #3f f+[HHOi8HwptxA#pLx2 �R��nH�sG1,8D(w,XunUS<sZ)a soJ zF}``Xpl Xkp\ȃeE�P�50``Ȅ3Rx0 @<hX{I B GY *6df0` 1n8HȉHL/ȗP2$@b� REP]P* @Ȁ3h sX ˰ (臍pp bRLJ`X&n،mHt8m.g`B`A00@�H398_HjO� 넀(&f@w1|tO `fH|ш؇8N?(98Kyn�GPSȅ|(6X8(_H*O4hNN LA rWaJ|i_4:ĉX$HGOtȈM_�(lXK4yeBx(_HJyX,K,j2hXM5 ll lˎXOˆ8̉J\b(_B SR8ȳȬIٔϢǰ|*hp4 ?_O .$-8I.$ʹB(2(ˋ<ܢ۰bHH(Jb7/v,6Kd_4++;+.قRHRʹR)B/*+2*R/</,.O+Jb)r+)Ov -k0)PKLtt+BLBRX./C) ,-*)*Ϸr5$8_ 좁+؂JJJ(JJ+2 ,J*ڪJ,:ب#L>|c (zz,8̙BIٚjfղ NΗr.::kX#hN.VlVnVmVolnm �������0�������0����������������������� ������� ���������� ���������������������������8�������1����������������/gimpswap/dwiconxcf/real.tif��created with The GIMP�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/ps.xpm���������������������������������������������������������0000644�0001750�0001750�00000020551�13431646201�015443� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "48 48 168 2", " c #410341034103", ". c #FFFFFFFFFFFF", "X c #861786179658", "o c #861782079658", "O c #861782079E79", "+ c #79E77DF79658", "@ c #79E779E79658", "# c #79E779E78E38", "$ c #71C675D68617", "% c #69A66DB679E7", "& c #69A669A671C6", "* c #6185659571C6", "= c #6185659569A6", "- c #6185618569A6", "; c #59655D7569A6", ": c #6185618571C6", "> c #6185659579E7", ", c #69A669A679E7", "< c #59655D7571C6", "1 c #6185618579E7", "2 c #861786179E79", "3 c #618561856185", "4 c #59655D756185", "5 c #596559656185", "6 c #5965596569A6", "7 c #514455556185", "8 c #5965596571C6", "9 c #79E77DF79E79", "0 c #71C671C68617", "q c #596559655965", "w c #514455555965", "e c #514451445965", "r c #514451446185", "t c #5144555569A6", "y c #79E779E79E79", "u c #69A66DB671C6", "i c #69A669A68617", "p c #86178617A699", "a c #86178207A699", "s c #49244D345965", "d c #492445145144", "f c #410345144924", "g c #410341034924", "h c #38E33CF34103", "j c #38E338E34103", "k c #38E33CF34924", "l c #410341035144", "z c #618565958617", "x c #69A66DB68617", "c c #8E388A289E79", "v c #8E388A28A699", "b c #79E77DF78E38", "n c #79E779E78617", "m c #71C671C679E7", "M c #71C671C68E38", "N c #69A66DB68E38", "B c #49244D345144", "V c #71C675D679E7", "C c #492449245144", "Z c #79E779E7A699", "A c #5144514469A6", "S c #8E388A28AEBA", "D c #86178617AEBA", "F c #514455555144", "G c #514451445144", "H c #38E334D338E3", "J c #96589248AEBA", "K c #8E388E38AEBA", "L c #96589248B6DA", "P c #69A669A669A6", "I c #8E388E38B6DA", "U c #49244D346185", "Y c #618565956185", "T c #86178617B6DA", "R c #86178207AEBA", "E c #71C671C671C6", "W c #79E77DF7AEBA", "Q c #71C675D69658", "! c #79E779E779E7", "~ c #8E388A28B6DA", "^ c #96589658BEFB", "/ c #71C675D68E38", "( c #79E77DF78617", ") c #79E779E7AEBA", "_ c #861782078E38", "` c #5144514471C6", "' c #96589658AEBA", "] c #96589248A699", "[ c #9E799E79B6DA", "{ c #9E799E79A699", "} c #8E388A289658", "| c #AEBAAAAAC71B", " . c #A699A289B6DA", ".. c #CF3CCB2BCF3C", "X. c #C71BC71BD75C", "o. c #C71BC71BCF3C", "O. c #CF3CD34CD75C", "+. c #965892489E79", "@. c #D75CD34CDF7D", "#. c #A699A289AEBA", "$. c #8E388E38A699", "%. c #86178207B6DA", "&. c #BEFBBAEAD75C", "*. c #B6DAB2CABEFB", "=. c #C71BCB2BCF3C", "-. c #AEBAAAAAAEBA", ";. c #9E799A69AEBA", ":. c #9E799E79AEBA", ">. c #8E388E38BEFB", ",. c #8E388A28BEFB", "<. c #BEFBBEFBBEFB", "1. c #AEBAAAAAB6DA", "2. c #AEBAAAAABEFB", "3. c #DF7DDB6CE79D", "4. c #C71BC30BC71B", "5. c #A699A699BEFB", "6. c #B6DABAEABEFB", "7. c #79E77DF7B6DA", "8. c #86178617BEFB", "9. c #CF3CCF3CD75C", "0. c #96589248C71B", "q. c #5965596579E7", "w. c #59655D7579E7", "e. c #CF3CCB2BDF7D", "r. c #BEFBBEFBC71B", "t. c #9E799A69BEFB", "y. c #DF7DDB6CEFBE", "u. c #96589658B6DA", "i. c #A699A699C71B", "p. c #AEBAAAAACF3C", "a. c #9E799A69C71B", "s. c #596559658617", "d. c #30C234D34103", "f. c #B6DAB2CAB6DA", "g. c #B6DAB2CACF3C", "h. c #96589658C71B", "j. c #86178207BEFB", "k. c #5144555579E7", "l. c #B6DAB2CAD75C", "z. c #8E388E38C71B", "x. c #C71BC30BCF3C", "c. c #B6DAB2CAC71B", "v. c #B6DAB6DAD75C", "b. c #8E388A28C71B", "n. c #86178617C71B", "m. c #C71BC30BDF7D", "M. c #DF7DE38DEFBE", "N. c #514455558617", "B. c #D75CD34CE79D", "V. c #B6DABAEADF7D", "C. c #96589248CF3C", "Z. c #BEFBBAEAC71B", "A. c #A699A699CF3C", "S. c #9E799A69CF3C", "D. c #96589658CF3C", "F. c #BEFBBEFBDF7D", "G. c #9E799E79D75C", "H. c #96589658D75C", "J. c #79E77DF7BEFB", "K. c #AEBAAEBACF3C", "L. c #8E388E38CF3C", "P. c #A699A289CF3C", "I. c #AEBAAAAAD75C", "U. c #A699A289D75C", "Y. c #C71BC71BDF7D", "T. c #96589A69D75C", "R. c #AEBAAEBAD75C", "E. c #BEFBBAEADF7D", " . ", " X X X o O O O + @ @ @ # # $ % & * = - - - - - - - - - - ; : : * > , > : : : : : < : < < < 1 . ", " X 2 2 O O O O + @ @ # # $ % & = - 3 4 4 4 4 4 5 5 5 5 4 6 4 7 4 4 7 6 6 6 6 ; < 8 6 6 6 6 6 . ", " 2 2 2 O O O 9 + @ @ # $ 0 % * - 4 4 4 q q 5 q q w w w 7 4 7 7 e e r 7 7 t 6 6 8 8 6 6 6 6 t . ", " 2 2 2 O O O O 9 @ @ @ $ % & * = 4 4 q q q q w w w w w w 7 7 4 4 6 ; < < < < 1 1 1 < < < < < . ", " 2 2 2 O 2 2 O 9 y @ y $ u * * - 4 5 q q q w q w q w 7 w w 7 6 < < 1 : 1 1 1 1 i i > 1 1 1 > . ", " 2 2 2 2 p 2 a 9 7 r r s d f f g g h h h h h h h h h h h j h k k g g l g l z z z z z i z , x . ", "h c c v v p p p 9 7 v 2 X b n $ m m m m u m m m m % m m % % % % % 0 x $ M l x z > > i N i i M . ", " v p p p p a a 9 7 p 4 5 e b B V B m B B B m C B % B % B B % B C C $ C x l z z > > i x i x M . ", " v v p p a O Z y 7 p 2 o o b n m m m m % m m m % % % % % , % , i $ x x , g 1 > 1 > i i x x $ . ", " v v p p a a a 9 A p 4 4 + e B B B B m B B C B % B d , d , f d d x C , , g : 1 > i i x x x M . ", " v v p p a a Z Z t v 2 o o b $ m $ $ m u % % % % & & & & & * - = * > , , k < 1 , i x x $ M # . ", " v v v p p a a a t v 6 X 7 b B B B $ B f C B d f f f f f f g h g g g * , j 6 : , i x x M M # . ", "h v S S S D p D Z t p 2 o + # $ m m 0 B % & q * = w - 3 w - 3 e 4 h h 4 - j 4 6 ; : , , % x # . ", " S S S S S D D Z t v 6 7 # e s B m % B , & q - 3 F 4 5 G 4 4 h h q j q 4 H 7 5 4 6 * & % % 0 . ", " J S S S S D D Z t p 2 + # 0 m m % & f 4 5 w w w w w w g 5 g 7 w G j 4 3 H w w q 4 - = & u % . ", " K S S D D D D Z t p 6 7 B B m C C & f & = g 4 w * f 6 s x 6 * 4 h 3 = H G F w q 3 3 = & u . ", " L K S S S D D Z A 2 o + # $ 0 m % & f = g w 3 h w f % : @ # 6 , - & % j F q = = 3 3 P & u . ", " L K I I I D D Z U o 7 + 7 e s B % & f w g w F w g 4 ; * i > * 6 5 g 0 # g F = 0 0 = Y P P u . ", " L I I I I T R y U o b + + + # $ % & f = g w 3 6 w , $ > a 9 * $ & f 0 b g q * $ $ u & u u E . ", " L I I I I W Z Q s + r 7 7 r @ e C , d , g w 6 = w , , * O O , # & f u m g 3 = u m $ b V m E . ", " L I I I I W Z Q s + + + + + @ @ $ % C B * w - - 7 * , : 9 O , @ u f u E g = P & m b X n ! V . ", " L L I I ~ W Z Q U O O t 4 o 7 r e # s r s C C C d d C C s s e e s G $ $ B % % u V b o n ! n . ", " ^ L L I ~ W Z y U p D p a O 9 + @ @ 9 a 9 @ / M x x x x m 0 0 n + + b b B $ m E V b b n ( ( . ", " ^ L ~ T R ) Z Z A p 6 6 t 7 O 7 9 r 7 t t 9 7 + r r e # e e # r 7 7 7 o s # n n n _ X _ _ X . ", " ^ I T ) Z Z ) Z ` D a O 9 9 O O 9 9 O a a a a p ' O + ] [ ] + o o o o X e X { { c X X } c c . ", " L I T W ) ) ) ) ` D 6 t 6 O t a t 9 t 6 x | ...X., o...o.O.{ 6 6 v 4 c +.@.@.O.O.#.$.] ] ] . ", "h L I ~ %.) ) ) ) ` T T D D R D D a O D I &.@.O...*.=.@.=.o.o.o.+.' ' J o.=.c B -.o.o.+ ;.;.:.. ", " L >.,.T %.) ) ) ` T 8 8 T 8 8 8 8 t D 8 8 $ <.o.1.- s k { <.<.{ # * 2.3.4.s + 5.=.6.e [ [ .. ", "h L L >.>.,.%.7.7.` ,.8.8.T T 8.T T D T T ~ &.O.o.0 t y J ] 9.o.o.: [ ..@.4._ [ .5.- 6 5. .5.. ", " 0.0.0.0.>.8.%.7.` ,.q.q.8 q.8.q.T 8 8 w.w.e.4.o.g A 1 J : ..o.<.H , 2.O.6.=.r.t.5.v [ 5.5.2.. ", " 0.0.>.,.8.8.%.7.` 8.,.,.8.8.8.8.,.,.,.,.I y...o.U I ^ ^ u.3.o.o.7 t.i.o.4.o.=.o.p.| | p.p.p.. ", " 0.a.>.8.%.%.%.7.` 8.q.,.q.s.q.q.s.>.s.z 0...o.{ d.^ > > + O.<.2.d.x i.5.f.=.=.=.r.| p.p.g.g.. ", " 0.h.>.8.8.8.j.7.k.,.,.,.,.8.T ~ ,.0.>.>.p.3.o.{ < ^ ^ t.&.3.=.X > i.i.i.> -.=.=.=.{ | p.p.l.. ", " 0.0.z.>.,.8.j.%.k.>.s.z s.q.S 8 w.z z I :.X.<.$ C > ^ , x.@.r.f t { e.c.% i.*.=.=.-.9 p.c.v.. ", "h 0.h.z.>.b.n.n.j.k.,.z.,.,.,.~ I >.0.0.L m.O.o.# a ^ ^ &.M...n < | M.@.*.: i.&.O.=.} # g.g.v.. ", " 0.h.0.z.z.b.b.n.N.,.,.,.,.s.0.0.0.0.0.0.B.e.o., a a.X.M.B.# 7 S g.3.=.} C p.B.3.<.* $.v.V.V.. ", " h.h.C.z.z.z.b.n.N.,.,.,.w.>.h.z 0.0.h.h.y.4.o.o.3.e.M.Z.% t S A.| &.=.=.#.y.M...* > p.v.V.V.. ", " S.D.h.C.C.b.n.n.k.z.z.>.s.>.z C.h.z h.@ y.o.+., # = , j z 1 A.p.p.p.c b +.2.X < > p.v.V.F.F.. ", " G.D.D.H.C.n.n.J.k.z.h.z.z >.0.z h.h.0.K.y.<.:.N w.8 S L M A.p.p.K.p.p.5.: @ 2 u.v.V.V.V.F.F.. ", " G.G.H.C.L.b.n.J.k.>.0.s.I I 0.0.0.a.a.m.B.=.# N P.P.A.A.p.p.I.p.K.K.K.l.# l.v.v.v.V.F.F.F.F.. ", " U.G.H.L.L.b.n.j.k.>.0.L I L ^ 0.a.h.a.Y.@.o.# S A.A.A.p.I.I.I.K.K.K.l.l./ l.v.v.V.F.F.F.F.m.. ", " U.G.H.H.C.L.n.n.k.q.s.q.8 8 s.z z z z e.4.r.+. .9 N N N M M M M Q M Q Q # v.v.V.V.F.F.F.m.m.. ", " G.T.T.T.H.z.b.n.8.n.,.,.>.>.z.0.h.D.h.Y.:.:.#.2.O L A.A.I.I.R.R.R.l.l.v.v.v.V.V.E.F.F.m.m.m.. ", " G.H.H.H.C.L.z.,.n.,.>.>.>.>.0.0.h.h.S.S.N N N N M ^ I.I.I.R.R.l.v.l.v.v.V.V.V.E.E.m.m.m.Y.Y.. ", " G.C.C.L.L.L.z.b.,.,.,.>.I I 0.h.h.a.S.S.S.P.P.U.I.I.I.I.R.R.R.l.l.v.v.v.V.F.F.m.F.m.m.Y.Y.Y.. ", " G.C.C.z.L.C.C.z.z.>.>.I I L ^ h.a.a.a.S.U.P.A.A.I.I.I.R.R.l.v.l.v.v.V.V.F.F.F.F.m.m.m.Y.Y.Y.. ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . "}; �������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/Makefile.in����������������������������������������������������0000644�0001750�0001750�00000041416�13642360054�016346� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = WindowMaker/Icons ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ $(top_srcdir)/m4/ax_pthread.m4 \ $(top_srcdir)/m4/ld-version-script.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/windowmaker.m4 \ $(top_srcdir)/m4/wm_attributes.m4 \ $(top_srcdir)/m4/wm_cflags_check.m4 \ $(top_srcdir)/m4/wm_i18n.m4 \ $(top_srcdir)/m4/wm_imgfmt_check.m4 \ $(top_srcdir)/m4/wm_libexif.m4 $(top_srcdir)/m4/wm_libmath.m4 \ $(top_srcdir)/m4/wm_prog_cc_c11.m4 \ $(top_srcdir)/m4/wm_xext_check.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(defsdatadir)" DATA = $(defsdata_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in README DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ GFXLIBS = @GFXLIBS@ GREP = @GREP@ HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLIBS = @INTLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBBSD = @LIBBSD@ LIBEXIF = @LIBEXIF@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXINERAMA = @LIBXINERAMA@ LIBXMU = @LIBXMU@ LIBXRANDR = @LIBXRANDR@ LINGUAS = @LINGUAS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAGICKFLAGS = @MAGICKFLAGS@ MAGICKLIBS = @MAGICKLIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MANLANGDIRS = @MANLANGDIRS@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOLIBS = @PANGOLIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILMOFILES = @UTILMOFILES@ VERSION = @VERSION@ WINGSMOFILES = @WINGSMOFILES@ WINGS_VERSION = @WINGS_VERSION@ WMAKERMOFILES = @WMAKERMOFILES@ WPREFSMOFILES = @WPREFSMOFILES@ WRASTER_VERSION = @WRASTER_VERSION@ WUTIL_VERSION = @WUTIL_VERSION@ XCFLAGS = @XCFLAGS@ XFTCONFIG = @XFTCONFIG@ XFTFLAGS = @XFTFLAGS@ XFTLIBS = @XFTLIBS@ XGETTEXT = @XGETTEXT@ XLFLAGS = @XLFLAGS@ XLIBS = @XLIBS@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBRARY_PATH = @X_LIBRARY_PATH@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ defsdatadir = $(pkgdatadir)/Icons docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ inc_search_path = @inc_search_path@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lcov_output_directory = @lcov_output_directory@ lib_search_path = @lib_search_path@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pixmapdir = @pixmapdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ wprefs_bindir = @wprefs_bindir@ wprefs_datadir = @wprefs_datadir@ defsdata_DATA = \ BitchX.tiff\ BitchX.xpm\ clip.tiff\ clip.xpm\ defaultAppIcon.tiff\ defaultAppIcon.xpm\ defaultterm.tiff\ defaultterm.xpm\ draw.tiff\ draw.xpm\ Drawer.xpm\ Drawer.tiff\ Ear.png\ Ftp.png\ GNUstep3D.tiff\ GNUstep3D.xpm\ GNUstepGlow.tiff\ GNUstepGlow.xpm\ GNUstep.tiff\ GNUstep.xpm\ GNUterm.tiff\ GNUterm.xpm\ GreenWilber.png\ ICQ.png\ Jabber.png\ linuxterm.tiff\ linuxterm.xpm\ Magnify.tiff\ Magnify.xpm\ mixer.tiff\ mixer.xpm\ Mouth.png\ Mozilla.png\ notepad.tiff\ notepad.xpm\ pdf.tiff\ pdf.xpm\ Pencil.png\ Pen.png\ ps.tiff\ ps.xpm\ README\ Real.png\ real.tiff\ real.xpm\ sgiterm.tiff\ sgiterm.xpm\ Shell.png\ Speaker.png\ staroffice2.tiff\ staroffice2.xpm\ TerminalGNUstep.tiff\ TerminalGNUstep.xpm\ TerminalLinux.tiff\ TerminalLinux.xpm\ Terminal.tiff\ Terminal.xpm\ timer.tiff\ timer.xpm\ wilber.tiff\ wilber.xpm\ Wine.png\ write.tiff\ write.xpm\ XChat.png\ xdvi.tiff\ xdvi.xpm\ xv.tiff\ xv.xpm EXTRA_DIST = $(defsdata_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu WindowMaker/Icons/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu WindowMaker/Icons/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-defsdataDATA: $(defsdata_DATA) @$(NORMAL_INSTALL) @list='$(defsdata_DATA)'; test -n "$(defsdatadir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(defsdatadir)'"; \ $(MKDIR_P) "$(DESTDIR)$(defsdatadir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(defsdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(defsdatadir)" || exit $$?; \ done uninstall-defsdataDATA: @$(NORMAL_UNINSTALL) @list='$(defsdata_DATA)'; test -n "$(defsdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(defsdatadir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(defsdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-defsdataDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-defsdataDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am \ install-defsdataDATA install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-defsdataDATA .PRECIOUS: Makefile # 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. .NOEXPORT: ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/BitchX.xpm�����������������������������������������������������0000644�0001750�0001750�00000024111�13431646201�016176� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "48 48 248 2", " c #208124922081", ". c #F7DEF3CEE79D", "X c #79E79248DF7D", "o c #86179658DF7D", "O c #61855D758617", "+ c #5965555569A6", "@ c #514451445965", "# c #79E761855144", "$ c #BEFB861769A6", "% c #B6DA924871C6", "& c #A699861771C6", "* c #AEBA9A699E79", "= c #96589248C71B", "- c #71C68A28D75C", "; c #71C68E38DF7D", ": c #71C69248DF7D", "> c #79E78E38D75C", ", c #79E78617B6DA", "< c #51444D345965", "1 c #596549244103", "2 c #71C659655965", "3 c #61854D344924", "4 c #8E3869A65144", "5 c #C71B9E798617", "6 c #A6999A69A699", "7 c #71C68A28CF3C", "8 c #71C68617D75C", "9 c #71C68617CF3C", "0 c #69A68207CF3C", "q c #69A67DF7CF3C", "w c #69A68207D75C", "e c #71C67DF7B6DA", "r c #492438E34924", "t c #492438E338E3", "y c #861765955965", "u c #69A655555965", "i c #86176DB669A6", "p c #965875D669A6", "a c #AEBA9A69AEBA", "s c #618579E7C71B", "d c #618575D6B6DA", "f c #4924514469A6", "g c #59653CF338E3", "h c #86175D755144", "j c #38E328A228A2", "k c #5965451438E3", "l c #CF3C9A6971C6", "z c #596561859E79", "x c #38E338E34924", "c c #38E334D338E3", "v c #69A6451438E3", "b c #69A655554924", "n c #E79DBAEA9658", "m c #D75CAAAA79E7", "M c #71C67DF7CF3C", "N c #49244D3469A6", "B c #28A22CB230C2", "V c #D75CAAAA8617", "C c #CF3CAEBA8E38", "Z c #B6DAA2899658", "A c #8E388A28AEBA", "S c #69A68207C71B", "D c #38E32CB238E3", "F c #71C64D344103", "G c #B6DA75D66185", "H c #71C6492438E3", "J c #8E3855554924", "K c #CF3C9A6969A6", "L c #EFBECB2B9658", "P c #4924514479E7", "I c #9E7965954924", "U c #AEBA65954924", "Y c #965859654924", "T c #CF3C8A286185", "R c #E79D9A696185", "E c #EFBEAAAA71C6", "W c #E79D79E74924", "Q c #C71B79E75144", "! c #E79DB6DA8617", "~ c #D75CB6DA9E79", "^ c #96588A288E38", "/ c #79E779E79E79", "( c #618569A6A699", ") c #69A671C69E79", "_ c #618569A69658", "` c #596569A6AEBA", "' c #618571C6AEBA", "] c #61856DB6B6DA", "[ c #492445145965", "{ c #AEBA71C64924", "} c #B6DA65954924", "| c #F7DEBAEA79E7", " . c #D75C79E75144", ".. c #D75CA28969A6", "X. c #69A669A68E38", "o. c #596561858617", "O. c #514459658E38", "+. c #E79D8A285965", "@. c #E79DAAAA71C6", "#. c #EFBEC30B8617", "$. c #E79DB6DA79E7", "%. c #D75CB6DAA699", "&. c #79E779E7A699", "*. c #F7DEEBADD75C", "=. c #79E775D68E38", "-. c #41032CB230C2", ";. c #79E755554924", ":. c #C71B6DB65144", ">. c #D75C86175965", ",. c #F7DE96585965", "<. c #F7DEAAAA69A6", "1. c #C71BA69971C6", "2. c #F7DEC71B8E38", "3. c #F7DEB2CA69A6", "4. c #BEFBAEBAAEBA", "5. c #69A675D6AEBA", "6. c #69A669A679E7", "7. c #861779E78E38", "8. c #51444D346185", "9. c #5144555579E7", "0. c #59653CF34103", "q. c #B6DA69A65144", "w. c #D75C75D64924", "e. c #E79D9A695965", "r. c #C71B75D64924", "t. c #F7DEC30B79E7", "y. c #492451446185", "u. c #49244D3471C6", "i. c #F7DE96586185", "p. c #C71B86175144", "a. c #CF3C8A284924", "s. c #D75C92485965", "d. c #E79DAAAA69A6", "f. c #71C669A671C6", "g. c #30C238E35144", "h. c #514459659658", "j. c #51445D75A699", "k. c #51446185A699", "l. c #BEFB82075144", "z. c #D75C9A6969A6", "x. c #AEBA92488E38", "c. c #492455558E38", "v. c #492459659658", "b. c #861749244103", "n. c #B6DA79E75965", "m. c #61855D7569A6", "M. c #492451448617", "N. c #A69969A628A2", "B. c #8E3875D671C6", "V. c #61855D7571C6", "C. c #59656DB6B6DA", "Z. c #596569A6B6DA", "A. c #492445144924", "S. c #B6DA59654103", "D. c #AEBA75D65144", "F. c #4103451469A6", "G. c #596571C6BEFB", "H. c #49246185AEBA", "J. c #A69959654103", "K. c #E79DA2895965", "L. c #596571C6C71B", "P. c #59656DB6BEFB", "I. c #49245965A699", "U. c #A699555538E3", "Y. c #965871C628A2", "T. c #C71B65954924", "R. c #C71BB2CAA699", "E. c #D75C69A64924", "W. c #E79D71C64924", "Q. c #E79D79E75144", "!. c #61853CF338E3", "~. c #9658555538E3", "^. c #71C6492428A2", "/. c #B6DAAEBABEFB", "(. c #8E38514430C2", "). c #D75CCF3CC71B", "_. c #F7DEF7DEEFBE", "`. c #F7DE86175965", "'. c #BEFB59654103", "]. c #B6DA555538E3", "[. c #EFBED75CAEBA", "{. c #D75CC71BB6DA", "}. c #F7DEEBADC71B", "|. c #EFBE82075144", " X c #EFBEDB6CCF3C", ".X c #F7DEE79DAEBA", "XX c #E79DAEBA4103", "oX c #E79D8E3838E3", "OX c #E79D82074924", "+X c #F7DEE38D0820", "@X c #D75CAEBA30C2", "#X c #E79DBEFB1861", "$X c #96588A2871C6", "%X c #B6DA861728A2", "&X c #E79DD34C1861", "*X c #B6DA79E728A2", "=X c #C71BAAAA1040", "-X c #C71BA2894924", ";X c #D75CB2CA1861", ":X c #AEBA9A690820", ">X c #DF7DCB2B0820", ",X c #71C669A628A2", "<X c #A69975D62081", "1X c #E79DD34C0820", "2X c #DF7DC71B28A2", "3X c #B6DA92481861", "4X c #618534D328A2", "5X c #E79DAEBA2081", "6X c #CF3C6DB638E3", "7X c #D75C924830C2", "8X c #8E3871C61861", "9X c #9E794D3438E3", "0X c #A6998E381040", "qX c #492434D31861", "wX c #38E3410369A6", "eX c #B6DAA2890820", "rX c #51442CB22081", "tX c #C71BB2CA1861", "yX c #BEFBA28979E7", "uX c #79E73CF328A2", "iX c #C71BBAEA28A2", "pX c #DF7DCF3C0820", "aX c #BEFBB2CA28A2", "sX c #69A655551040", "dX c #514430C21861", "fX c #8E3886175144", "gX c #DF7DC30B1040", "hX c #E79DD75C4103", "jX c #C71BB6DA0820", "kX c #79E761851040", "lX c #410330C230C2", "zX c #410324921861", "xX c #86173CF330C2", "cX c #49242CB22081", "vX c #28A218611861", "bX c #71C65D751040", "nX c #38E31C711861", "mX c #9E798A2828A2", "MX c #861771C669A6", "NX c #596534D328A2", "BX c #B6DAAAAA1861", "VX c #38E320812081", "CX c #71C63CF330C2", "ZX c #EFBEEBADCF3C", "AX c #410345145144", "SX c #EFBEB2CA8E38", "DX c #F7DEE38DB6DA", "FX c #79E76DB61861", " . ", " X X X X o o o o o o o X X X X X X X X X O + @ # $ % & * = - ; - ; ; ; ; ; ; ; X ; X X X : ; . ", " > - ; X X > X X X ; - - ; ; ; X X X ; , < < 1 @ 2 3 1 4 5 6 7 - ; - ; ; ; ; X : X X ; X : ; . ", " > 7 > 8 7 7 7 8 8 9 0 q q q w 8 q w e @ r t 1 y # u i 4 p $ a = 8 - w ; ; ; ; ; ; : : : : w . ", " 7 > 9 7 9 9 0 9 q q w q q q q q s d f 1 1 g 2 3 h j k & 5 % l 6 , ; - 8 w 8 8 w 8 8 8 8 8 ; . ", " > > 9 7 7 9 0 0 0 w q q q q q q s z x c 1 v 2 b y 1 1 1 l n $ m * 7 8 q 0 w w q q w q M M q . ", " > > > - 7 7 7 8 9 w w w q q q q s N B c k b b y y g 3 # % n m V C Z A S q 0 0 0 q q M M M M . ", " > X > > > 7 - 7 9 9 9 0 q q q 9 d r D g 4 F F 4 G h H J 1 K n m m L * , e q q q 0 q q M M s . ", " > > > > 7 7 9 9 S 0 q q q q q q P t D 3 I U Y T R E W Q k m m m ! m ~ ^ / e q S q 0 9 M M M . ", " ( ) _ _ _ ( ) z z z z ` ' ' ' ] [ t x 3 J U { } E | R .J L ! ! m ! ..l 6 / d d q X o 9 M q . ", " ) X.X.X._ ) _ o.X.O.o.o.z z z ) x r t 3 J I Q } R | | +.% L @.@.#.$.! $.%.6 &.' d > o 7 , 7 *.", " &.=./ ) ) ) ) ) ) _ z _ z o.z _ c r -.1 ;.U :.>.>.,.<.Q m ! 1.@.2.3.L L L 4.6 X.( 5.&.e 5.) . ", " 6./ 7.X.+ 8.+ 9.9.f f f f f f + x t c 0.F q.w.,.,.,.e.r.! K K ..2.3.t.#.L Z ^ X.+ + + + + @ . ", " 8.6.6.+ 8.f 9.f y.[ N u.f f N @ t g t 0.b { { .i.,.+.U p.K a.s.| 3.d.d...~ 7.f.[ [ [ [ 8.g.. ", " 9.9.f f O.h.h.O.9.u.P h.j.k.z + g b k 1 k 3 F ;.} ,.U H l.z.a.s.<.<.....! V x.6.6.8.u.9.9.c.. ", " O.h.O.N f f O.h.P u.u.v.j.v.c.9.3 1 v h Y b.q.Q { ,.U G p.>.a.3.t.d.s.n.@.% ^ 7.m.8.N u.c.c.. ", " z z z P P O.h.u.u.u.u.M.M.u.M.f u 3 v J Q +.i.+.} ,. ...>.R s.t.L t.>.N.l x.B.7.V.9.M.M.u.M.. ", " k.' C.C.Z.` ' v.c.v.v.c.M.c.M.c.A.1 1 F U +.i.Q S.+.R R >.e.d.2.L 2.e.{ D.~ 7.6.X.O.h.P u.F.. ", " C.C.G.G.C.Z.G.Z.Z.Z.H.Z.H.Z.Z.` N A.1 0.J .i.J.q.i.>.,.>.e.e.t.1.2.K.n.N.V * X.X.z C.j.H.Z.. ", " s L.L.G.C.Z.P.P.P.Z.Z.H.I.I.j.H.H.A.r 3 F q. .Q U. .+.w.r.s.a.$.Y.$.K.p.U K %./ o.X.h.h.h.I.. ", " s P.P.G.P.C.Z.H.Z.j.j.H.I.h.c.F.v.N B t b { } q. .+.+.T.Q s.n.p.D.s.s.d.U I ~ 6 o._ O.P O.h.. ", " ` ` ` C.C.k.h.k.` v.c.I.I.H.v.P v.h.g.c 0.I J.Y q.:.S.} :.s.{ 4 1.I l.s.a.U.n R.) _ z v.v.I.. ", " h.h.z ` z v.h.I.k.k.v.c.u.F.F.F.c.h.g.c t ;.Y Y :. .E.} Y d.I J $.I D.p.p.r.K Z ^ _ d ` C.C.. ", " O.P P 9.P P M.O.h.P u.P F.N P c.u.P c c D 0.b.} .W.w.J.g z.b H s.n.I U } p.p.5 7.A ( v.P v.. ", " h.z O.O.O.P v.I.h.v.c.v.v.M.c.v.v.N 1 1 -.D g J.Q.Q.:.!.g T 3 v p.p.Y Y U Q e.K 7.` &.O.h.u.. ", " s q s G.Z.v.h.k.Z.j.j.j.I.P v.h.9.b ;.~.b.g -.g b.:.b.b.!.T 3 ^.n.U Y Y q.Q <.@.x.` 5.X.M.M.. ", " C.G.G.G.G.C.C.C.G.P.Z.C.` j.V.y I J I J.} T.} } Q.E.b.T.b.l g H T ~.Y ~.U Q K.d.% ) ` _ z z . ", " q s s s L.G.L.d 5.&././.^ y p.>.I U U T.:.E.W.W.W.T.J.E.} l v b.p.~.U Y (.r.e.<.m ^ G.G.G.I.. ", " w 8 q s L.d z =.).C *._.l r.r.T.U Y Y T.`.`.Q.T.W.'.J.E.W.>.H J.s.p.T.].Q U >.e.K.n _ ` Z.Z.. ", " q s Z.` ` @ ;.U [.{._.}.3.w.w.W Q.+.Q.`.|.`.E.Q.W Q.S.W.+.w.J.} @.! >.T.w.>.w.>.K.V 6 j.H.Z.. ", " s s s d f J U.N.! X. .XXXr.T.W `.`.|.|.W w.W.W Q.W E.oXOXr.T.+X+X+X+X+X+X@X>.#X+X+X+X+Xc.h.. ", " q s $X$XY.%X%Xr.l }.*.&X+X*X} .Q.W.w.W.Q.W W |.W W +X+X=X].E.-X;X+X+X+X:X(.n.%X;X+X>X,Xg.M.. ", " q s $X+X>X<X1X+X-XZ [.2X3X4XU.'.5X6XT.E.W W Q.W W.6X7X+X8X9Xr.~ % +X+X+X0X^.~.7X+X>XqXc wXv.. ", " L.G.$X+XeXrXtX+XtX$X~ yX<XuXU.;X+X~.U.T.W.OX7XoX'.E.#X+X4X~.7X{.~ iX+X+X>X4X%X+XpXqXk f.v.H.. ", " d ` aX+XsXdX1X+XsXfX&X+XgX(.7X+X+X=X3X'.5X1XpX+X*XS.+X+X0X+X+XhX4.yX+X+X+X0X1XpXqXqXy ^ k.j.. ", " ` H.aX+XjX1XjXkXlX$X1.+X0XrXN.+XeXzXuX7X+X<X(.pXxX~.+XpXqX8X+XaX$X4.2X+X+X+XpXdXcX^.& A k.I.. ", " G.` &X+XvXkX+X+X,XB.2X+XbXdX<X+X0XrX9X1X+X4XuXuX^.<X+XeXnXmX+XmXf.R.{.+X+X+X8XzX4XI x.a G.Z.*.", " d ` +X>XvXrX+X+X,XMX&X+XzXcX3X+XbX4X].+X+XdXxX~.!.3X+XbXcX2X+Xb $X).hX+X+X+X>XzX^.D.Z , d H.. ", " f fX+X:XzX3X+XjXt f.+X+XkX^.=X+X0X0XU.#X+XpX=XjXNXtX+XsXF +X+XmX$XhX+XBX+X+X+X8Xg p C &.s Z.. ", " P aXBX:XeX=X8XvXm.MX@XtXmX^.9X=X0X<X9XN.3XeXbXj !.;X=XNX* yX2XmX2X+XtXcX0X+X+X>XzXm.a A P.I.. ", " O.c.g. rX4XcXk f.p & ^ $X& J.9XxXxX].].9XNXVXNX9XJ.I ^ {.).$XmX+XBXcXNX(.+X+X+X8X< =.a P.H.. ", " z z f lXCX(.lXm.MXy % %.{. XV E.'.'.'.T.'.(.g J Q ~ ).{.ZX*.XX+XgXlXdX9X'.=X+X+X>Xc X.A Z.I.. ", " [ AXAXg (.(.D u f.;.{ ! ZX. *.[.Q.W.W.W.Q.b.F U X_._.. *.L +X+X+X+X4X].+X+X+X+X+X+XfXX.k.` . ", " v.h.9.!.b.H D u p h n.E L }.[.*.SXW.W.Q.W.b.F $ DX*.DXDXL E -XmX,XFXNX].7X<XkXsXsX,XA.M.] H.. ", " ( C.o.3 Y CXD t & J { +.E DXDX}.L E.W W W Y F C }.*.. .XSXE R $ h b F ].6X9X4XcXc g.A.x f M.. ", " h.k.O.!.J.(.j D b 4 D.>.s.SX}.[.[.z.`.W Q.q.2 *._.}.}.2.<.3.$.~ D.G b.].W.'.U.H A.[ @ [ O.c.. ", " h.z u.v ].J.t D -.J D.{ >.z.n [.[.SX+.Q.W.{ C DX*.}.$.3.<.<.SXSXn.x.F '.W.E.S.F N N u.u.h.h.. ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . *.. . . . . . . . . X. . . . . . "}; �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/wilber.tiff����������������������������������������������������0000644�0001750�0001750�00000014700�13431646201�016430� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*���3`?P`A *DD %|hQ#ƌ+F $$QtZH)gi9rZ*ߒUG-/Yڢ`١U4gZjf-:߰FXhڿiuo)sMoҬ=& dLiڮQ㌚8ٿo칳 oKus˝?_BE(lj֨vcuhڲEƦ۶xK޽zx̜1 ,^:۠qWʸq[N; nw((tg4tvUWu 1#23STӽ>*,`1?zlͶ LUґFsΥP\r7\3&"#I(g!g XC�#^{sP25܃O2$) ;%w/45O*GȬ̥N)\,]50(BRMKho J12mX*r $ XD<jͿIj󼳺"t. K3me& Pxo^iTN[K\Χt;SـN"0HljFYnYhn1?~FʢAq%Y ֫t|CQ1=kܢ>3j)fdzf}~fys `bi6;4UaGPa([ܾNW{U&lbŋhbjibhljvg~m[m/6v*&vi顟9ӘJ/]=z-\ǁ F:}z݁-Klzd q ld#uGQ G3: Խv--xXKT9I_~ mB JTGrQ4D7&܌z2c6&)gG<х#~?! q# !?"DŨ;0n;!~=?\d;[!y0;C DH _DHE3"X9bg{$Ǽ%} = =d"GnPBC: ?Jt?҅@ЁhȀ@ TshCp %1F :tV&"Q"0?l` UF9`MPE2*4]$e $+qJ870ԣɁF4`0F!n|�|z@ h ?X_n0� `� F@ �?`U  (Ģ4d2(Cd!J +CT07iCBQ 䠎"0tD]щCM,+ a^%U;1QuI-`ȃ (py*`^%AJUy%*rHU>R �@�Dw?`Yu@2 /Bd$&�&,`5@GЃ&$]Ԡ}!#xG9j0h]۸^ic$䔼t[)<an#!�r ؁_I0.0\JV@$9`z .ۀD ̠?` azZ? UF !H�Bj r0B!"6#t~׎G"k\Α mA%6F0t-7(;:Ne , �K?Ъ W@.;: P, Or)6h͡i:!0ap"�H]g=!od1h+;]Cm*_2 /P6FQ0#rAq a@ WA ?hA1[P9^y2~OkT >C *g ]G:P4 ȭ @ @uB|PرCеb`0P^F&m̹ # 2"Z^ 9Vo]'ط0Op^\`u><2V(8HPgusP 4?:Ё40)~lIfB}n*vmXtxc~qǠqx3Gs<!�N 12Lb2ø0~H45]/9Pi qa`Tρ@�Yn@�9 b R (*Qp/ȇRA)`]bg `RH2]?r(eȃB"zlx3D.Xa3 8E.X 1k84uXgc(HS*0]= P^% ) ,\`(!j'�HR 9�N0sp am1ve 1)s-AI/ =XP5�/R !0#S4H80ȏ+EP5Mb+ 3xiPb-E70VjCY=WPـ xi~`j�5JOĆ@D@ڨF6pz#م (jQg iÀ~rE&eg^2PO1ɇLȄ(ISZK  1yx' 4h*2;K+M{(H't M Dч KS3З53ufwz!.``v`v:t`# p&sʦkKPJ)>r(O9Wa@`.d* rMP!H؀5_k+˼"PO�|v0/ryOP0 5</PT$�n`x�viV`x@De8::M,g(jaϺllIlgRhώF L ,p)bD#`,�6`<60�PQ^`i�/p3?مP])S'؆-&=l;zp@ BXmO .sXD~OLa`v* `14]?("z+䩴leRs/ʢ)F�*5 }IW ުrfP%Y]*1p�Kn]pC5<�Oȃ,'47H4D/K*0CtvQJHWcvH47e+C#@�$z` ,0 4Zhdl",/^&-r#jhQ) So,.(e>H� Јv0a0R_wyMgpEGp4ug7p4<p{kh0}}VP�/@@�(~-z(hw28m VqTOs0l9" OlkȆnFh^`gF&�ĬM0,30~Д&W_s0mY'nΖnp+ kZWws050l93cT.8#ĔEn`k]`ViFDŽzwz0.Դhކolii h)P>y=�5 KyGp3�p?P : 6X53v .0�Msp.Q5P6sP eV1Ph .S.pN`!`fl w<A6FiW6nh}^Iv# h�h㎑g0Xp-OTR@  . vH^}WNq��E3(Y!KL6oEp0 up}s�/0#+ppw'y0oӗMÚ (rfh gh^*:Hl@H:nj@~Fhgʬ?hn6>|> ^ȃ0pcoG4=0i6|\* |1E%P�h1L4`Fo vlr[aJـ[Wp30 . L~(&H3 3E4Ȁ\b8j|J3eV'a$(ZN:hecv=o?(*A�6�%�QN`5eZ"B) �5@O, "ff PEiS0/!MxY0sDSJHitH2 ( 1ÔRN#y-j>!ۭ�Ȁbn]!:Lhp|(f4 02�02P�E3 6Tv�pp�9 @: BK%/O4 Y?}u T5/oW� 'R *!3Y3]A}%PC0+G4|6ekyC2�#H (?-fg<L"Z~\JH 'P᫾/1 r .~`LVOJ4@IPu �|@3"-dT@ `B^g.1s�.=7i>s> 0>-БgC|V^03cP5ygpFDV& &W_zheȁ-pRPpp0�(IY�`=�s`�Tb** 1os@ b s HP0�'pPGpS)øź?mP/0~IO`*Ĭ/)m<`g:c%Lkv e(ᖠ%:p}�,u S1gi`  1KaP4BȃAz1A,(h4HցTBȂ||(3l(d($gѿ@ 2PuЮ \,}e,!l>n.3(2ȅBT #v[ѿ]k[,�C,%@% 9;9 >Lc(ZpZZn~~zh.h6>z( PB aJz(H4-(Nv$=J'dc?hhJ\(ȆhR{/%_YQͿBzToԿmfkmٿv}_G8I덯-bI5ͺפӊuWɌMWXI+WoҿM>߈FM7lam7dE' fX7}0M kxnuϡ]Ok5}t::k.KiIX$O&u*dNE=YuȖ#W:h[e'ck8^VzMnym.;w7jCyg/14bZ (@ NkVBm_ [m=T3[zAQH\r Q{mup3 ƫx}H_9# c?60X뭒,D + _(gQK@3`߰I;AM0ʿ!!oxd"߀0>#Rk8qtmc(SL _Ay YȿNt_z}W]o9mװ_:hݨͺ6JSt_N+]u˿=?Ȳ# &tE#Vx %<e3fκ8 .Zd+VZfw4ݼe;vnխƾ}z4P0uچp?*pȉO>=I}* ٖdsy֬Y͛jB+tPt]Op:8]4Z8BwKtwrC=س-ko{:|CEl'65 ހuX] Z`u6P\ M$6-\3=0GB/Ӊ;+}Za_bQ?mծ+ u,ƩD q.CN21H r . -K(K*K.J-+_@�������0�������0�������z���������������� ������� ������������������������������������*����������������R���������������/home/fatal/wilber.tif��created with The GIMP��������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/README���������������������������������������������������������0000644�0001750�0001750�00000000722�13431646201�015151� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������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.info BitchX.tiff defaultAppIcon.tiff GNUterm.tiff defaultterm.tiff draw.tiff linuxterm.tiff mixer.tiff notepad.tiff pdf.tiff ps.tiff real.tiff sgiterm.tiff sound.tiff staroffice2.tiff timer.tiff wilber.tiff write.tiff xdvi.tiff xv.tiff ����������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/TerminalLinux.xpm����������������������������������������������0000644�0001750�0001750�00000047720�13431646201�017623� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * Terminal_xpm[] = { "60 58 824 2", " c None", ". c #A6A6A6", "+ c #A7A7A7", "@ c #939393", "# c #A2A2A2", "$ c #AAAAAA", "% c #ACACAC", "& c #B6B6B6", "* c #BABABA", "= c #BEBEBE", "- c #C6C6C6", "; c #CECECE", "> c #D4D4D4", ", c #D8D8D8", "' c #DFDFDF", ") c #E3E3E3", "! c #E7E8E8", "~ c #EDEDED", "{ c #D6D6D6", "] c #9A9A9A", "^ c #9B9B9B", "/ c #A4A4A4", "( c #B2B2B2", "_ c #B9B9B9", ": c #C2C2C2", "< c #D3D3D3", "[ c #D9D9D9", "} c #E3E4E4", "| c #E9E9E9", "1 c #F2F2F2", "2 c #F4F4F4", "3 c #F9F9F9", "4 c #F8F8F8", "5 c #F5F5F5", "6 c #FBFBFB", "7 c #FDFDFD", "8 c #F0F0F0", "9 c #BDBDBD", "0 c #DCDCDC", "a c #EFEFEF", "b c #F3F3F3", "c c #F6F6F6", "d c #FAFAFA", "e c #F4F5F5", "f c #F1F1F1", "g c #ECECEC", "h c #EAEBEB", "i c #EBEBEB", "j c #ECEDED", "k c #E4E4E4", "l c #EAEAEA", "m c #FFFFFF", "n c #FEFEFE", "o c #FCFDFD", "p c #F0F1F1", "q c #E7E7E7", "r c #E5E5E5", "s c #CDCDCD", "t c #BBBBBB", "u c #EDEDEF", "v c #EEF0F0", "w c #E1E6E7", "x c #DEE3E4", "y c #DEE4E5", "z c #D3DCDE", "A c #D2D8D9", "B c #D7D8D8", "C c #BEC2C3", "D c #B9BEBF", "E c #ADB2B3", "F c #9FA4A5", "G c #929697", "H c #868B8C", "I c #7F8485", "J c #717677", "K c #676C6D", "L c #5F6465", "M c #515657", "N c #444D50", "O c #454C4E", "P c #606060", "Q c #E1E1E2", "R c #EEEEEE", "S c #CCCCCC", "T c #FCFCFC", "U c #9A9D9D", "V c #849496", "W c #89989B", "X c #708B90", "Y c #548089", "Z c #58747A", "` c #436E76", " . c #0D5C6C", ".. c #005E71", "+. c #006175", "@. c #005364", "#. c #004856", "$. c #004B5B", "%. c #014E5D", "&. c #014F5F", "*. c #045262", "=. c #085463", "-. c #126272", ";. c #18616F", ">. c #1B5E6B", ",. c #166473", "'. c #186270", "). c #1A5D69", "!. c #1D5763", "~. c #4C5456", "{. c #CFCFCF", "]. c #E9E9EA", "^. c #2D484E", "/. c #155E6D", "(. c #165461", "_. c #074B59", ":. c #015060", "<. c #0E6070", "[. c #005464", "}. c #005262", "|. c #006479", "1. c #006176", "2. c #045868", "3. c #065E71", "4. c #046679", "5. c #00677C", "6. c #00667B", "7. c #006277", "8. c #005D70", "9. c #006C81", "0. c #00697E", "a. c #135765", "b. c #166676", "c. c #176474", "d. c #0E6D80", "e. c #176372", "f. c #4C595B", "g. c #CCCDCD", "h. c #EAEAEB", "i. c #E8E8E8", "j. c #274C54", "k. c #1C515C", "l. c #004655", "m. c #014C5C", "n. c #015B6D", "o. c #006579", "p. c #036478", "q. c #2F7482", "r. c #4F808A", "s. c #58858E", "t. c #719399", "u. c #6D9097", "v. c #548B96", "w. c #588C96", "x. c #5A8C96", "y. c #346C78", "z. c #105C6C", "A. c #015B6E", "B. c #005F73", "C. c #005466", "D. c #115E6F", "E. c #136678", "F. c #455D62", "G. c #D9D9DA", "H. c #DDDDDD", "I. c #D0D0D0", "J. c #264F57", "K. c #015161", "L. c #015465", "M. c #014A59", "N. c #005B6D", "O. c #016175", "P. c #418795", "Q. c #7F898A", "R. c #444645", "S. c #2A2C2D", "T. c #1C1C1D", "U. c #1A1A1B", "V. c #232324", "W. c #3E3E3D", "X. c #646766", "Y. c #5B7D82", "Z. c #568F9A", "`. c #1F6777", " + c #076173", ".+ c #006275", "++ c #085B6C", "@+ c #136677", "#+ c #4B585A", "$+ c #DCDCDD", "%+ c #ECECED", "&+ c #F6F8F8", "*+ c #F7F7F7", "=+ c #D5D5D5", "-+ c #23525B", ";+ c #005A6C", ">+ c #016377", ",+ c #004958", "'+ c #005667", ")+ c #106A7C", "!+ c #4F8C97", "~+ c #03090A", "{+ c #171713", "]+ c #030304", "^+ c #0D0D0E", "/+ c #1F393E", "(+ c #1A505B", "_+ c #518792", ":+ c #1D6270", "<+ c #085E6F", "[+ c #00677B", "}+ c #005061", "|+ c #0B5E6F", "1+ c #4F5758", "2+ c #DFDFE0", "3+ c #E8E8E9", "4+ c #F1F2F2", "5+ c #FAFBFB", "6+ c #E4E5E5", "7+ c #DBDBDB", "8+ c #294B52", "9+ c #044E5D", "0+ c #007086", "a+ c #004E5D", "b+ c #186676", "c+ c #6F979A", "d+ c #070906", "e+ c #040404", "f+ c #060807", "g+ c #3D4F36", "h+ c #235E69", "i+ c #377885", "j+ c #0A5F71", "k+ c #08687B", "l+ c #025B6D", "m+ c #4B5456", "n+ c #E4E4E5", "o+ c #E5E7E7", "p+ c #E2E2E3", "q+ c #DADADA", "r+ c #2E454A", "s+ c #04667A", "t+ c #00697F", "u+ c #0B5F70", "v+ c #558D96", "w+ c #020506", "x+ c #252208", "y+ c #193131", "z+ c #3B7F86", "A+ c #116778", "B+ c #086579", "C+ c #046E82", "D+ c #0D6071", "E+ c #566063", "F+ c #FBFCFC", "G+ c #2F4448", "H+ c #015160", "I+ c #378898", "J+ c #031316", "K+ c #060604", "L+ c #0F0E05", "M+ c #4E6267", "N+ c #286D79", "O+ c #025F72", "P+ c #026F84", "Q+ c #06697B", "R+ c #515E61", "S+ c #E5E5E7", "T+ c #E9EAEA", "U+ c #F3F4F4", "V+ c #0E5463", "W+ c #014E5E", "X+ c #24525B", "Y+ c #557D7D", "Z+ c #2D3031", "`+ c #050506", " @ c #040405", ".@ c #252526", "+@ c #4B8692", "@@ c #006377", "#@ c #006A80", "$@ c #0B6A7C", "%@ c #4C6166", "&@ c #E8E9E9", "*@ c #DEDEDE", "=@ c #F3F3F4", "-@ c #F5F6F6", ";@ c #005769", ">@ c #024B5A", ",@ c #5B858D", "'@ c #343B24", ")@ c #5A919D", "!@ c #07677A", "~@ c #006276", "{@ c #0D6374", "]@ c #42585D", "^@ c #E3E4E5", "/@ c #E0E1E1", "(@ c #E2E3E3", "_@ c #1A5661", ":@ c #66898F", "<@ c #030405", "[@ c #1D1D1E", "}@ c #343434", "|@ c #2F2F30", "1@ c #0B0B0C", "2@ c #484748", "3@ c #AEAEAD", "4@ c #B5B5B5", "5@ c #808081", "6@ c #383838", "7@ c #09090A", "8@ c #6B898E", "9@ c #197182", "0@ c #035B6C", "a@ c #47595D", "b@ c #E3E3E4", "c@ c #DBDCDC", "d@ c #FAFAFB", "e@ c #F8F9F9", "f@ c #005768", "g@ c #296673", "h@ c #435458", "i@ c #131313", "j@ c #676666", "k@ c #DDDDDC", "l@ c #828282", "m@ c #1B1A1B", "n@ c #9B9A9B", "o@ c #F1F1F0", "p@ c #E6E6E6", "q@ c #C1C1C1", "r@ c #4D4D4B", "s@ c #080809", "t@ c #5B686B", "u@ c #417F8B", "v@ c #005C6F", "w@ c #016A80", "x@ c #4E5C5E", "y@ c #DADADB", "z@ c #E1E2E2", "A@ c #E0E0E1", "B@ c #33707B", "C@ c #1B1E1F", "D@ c #807E7D", "E@ c #E9E9E8", "F@ c #A8A8A6", "G@ c #989898", "H@ c #AFAFAF", "I@ c #616061", "J@ c #9F9E9D", "K@ c #B8B8B7", "L@ c #5D5D5C", "M@ c #353534", "N@ c #20201F", "O@ c #8E8E8D", "P@ c #BAB9B9", "Q@ c #111112", "R@ c #35383A", "S@ c #568A95", "T@ c #046376", "U@ c #007087", "V@ c #5E5F5F", "W@ c #E7E7E8", "X@ c #DADBDB", "Y@ c #E1E1E1", "Z@ c #4A8E9C", "`@ c #1E282A", " # c #CCCCCB", ".# c #C2C0BE", "+# c #4F4E4E", "@# c #696867", "## c #373737", "$# c #535353", "%# c #ACACAA", "&# c #797978", "*# c #383837", "=# c #626261", "-# c #706F6E", ";# c #2D2D2D", "># c #9C9C9C", ",# c #070607", "'# c #0A0A0B", ")# c #687F84", "!# c #197588", "~# c #006F85", "{# c #EBEBEC", "]# c #E5EDEF", "^# c #568A94", "/# c #3D3F3F", "(# c #514E4C", "_# c #343332", ":# c #D4D3D2", "<# c #525252", "[# c #5C5B5B", "}# c #999998", "|# c #DEDEDD", "1# c #989897", "2# c #282827", "3# c #A9A9A9", "4# c #71706F", "5# c #252524", "6# c #9E9E9D", "7# c #060506", "8# c #303436", "9# c #508C99", "0# c #0A6F83", "a# c #5F6160", "b# c #D5D8D8", "c# c #C9DFE3", "d# c #00657A", "e# c #4A6E74", "f# c #565755", "g# c #EAEAE8", "h# c #4E4E4D", "i# c #090909", "j# c #262726", "k# c #7D7D7D", "l# c #DADAD9", "m# c #C4C4C3", "n# c #343435", "o# c #313131", "p# c #2C2C2B", "q# c #B3B3B3", "r# c #1F1F20", "s# c #565858", "t# c #598892", "u# c #636564", "v# c #F2F3F3", "w# c #D5D5D7", "x# c #EEEFEF", "y# c #DEEBEE", "z# c #0D3F49", "A# c #647070", "B# c #2D2E2C", "C# c #DFDFDE", "D# c #BEBDBB", "E# c #3B3B38", "F# c #706956", "G# c #8D897E", "H# c #51504E", "I# c #BBAD8A", "J# c #D7CAA9", "K# c #7C7C7B", "L# c #474747", "M# c #8D8D8D", "N# c #4B4C4D", "O# c #767677", "P# c #D9DADA", "Q# c #D1D2D3", "R# c #EDEFEF", "S# c #EFF0F0", "T# c #5D7073", "U# c #4A5254", "V# c #151515", "W# c #8D8D8C", "X# c #C2C1BD", "Y# c #BDAB78", "Z# c #CDAA3E", "`# c #D8BA4B", " $ c #E8DD63", ".$ c #BFB64A", "+$ c #D4B229", "@$ c #D6AB3B", "#$ c #D9BA69", "$$ c #C8BFA7", "%$ c #C6C6C5", "&$ c #757475", "*$ c #2A2A2B", "=$ c #646463", "-$ c #CFD1D2", ";$ c #E3E5E5", ">$ c #838383", ",$ c #232321", "'$ c #292A28", ")$ c #353433", "!$ c #BCA95B", "~$ c #D8B63A", "{$ c #D9C151", "]$ c #ECD80F", "^$ c #E4C30C", "/$ c #DBAC13", "($ c #E8C911", "_$ c #DEB517", ":$ c #D9A812", "<$ c #DBB524", "[$ c #948F6B", "}$ c #282829", "|$ c #181819", "1$ c #060607", "2$ c #5A5A5A", "3$ c #DBDDDD", "4$ c #CFD1D1", "5$ c #E4E7E7", "6$ c #E5E6E6", "7$ c #EDEEEE", "8$ c #F9FAFA", "9$ c #A5A5A5", "0$ c #282511", "a$ c #A4930D", "b$ c #E4CB08", "c$ c #E8CF07", "d$ c #E9CD0E", "e$ c #E9CC1A", "f$ c #E8CB21", "g$ c #EBD423", "h$ c #E9CD22", "i$ c #E6C81F", "j$ c #E0B61A", "k$ c #DEB219", "l$ c #CBB216", "m$ c #0B0B0B", "n$ c #202021", "o$ c #383839", "p$ c #050605", "q$ c #050505", "r$ c #555556", "s$ c #C9CBCC", "t$ c #E4E8E8", "u$ c #E0E0E0", "v$ c #E0E3E3", "w$ c #DFE0E0", "x$ c #E6E7E7", "y$ c #E6E8E8", "z$ c #443D0C", "A$ c #D9BB0C", "B$ c #E2C30A", "C$ c #DBB50C", "D$ c #D8A614", "E$ c #D8A412", "F$ c #D49812", "G$ c #D49614", "H$ c #CF8B11", "I$ c #CE860E", "J$ c #CC880D", "K$ c #D2AC13", "L$ c #4B461A", "M$ c #242425", "N$ c #424243", "O$ c #414142", "P$ c #151516", "Q$ c #040505", "R$ c #515152", "S$ c #EBECEC", "T$ c #C8CACA", "U$ c #DCDFDF", "V$ c #DCDDDD", "W$ c #E8EAEA", "X$ c #BCBCBC", "Y$ c #1F1F18", "Z$ c #B09719", "`$ c #D7B30D", " % c #C38F13", ".% c #D08F0F", "+% c #D08F0C", "@% c #CF8C0C", "#% c #CF8D0D", "$% c #CF8E0D", "%% c #D0910D", "&% c #D59E11", "*% c #85816F", "=% c #222222", "-% c #4E4E4E", ";% c #59595A", ">% c #272728", ",% c #C9CCCC", "'% c #DDDFE0", ")% c #DADCDC", "!% c #F1F3F3", "~% c #E4EEEE", "{% c #2D2D2A", "]% c #3C381F", "^% c #302B1D", "/% c #D6D0CA", "(% c #E7E3DD", "_% c #E2D0A5", ":% c #D6A634", "<% c #D4A029", "[% c #D6A640", "}% c #DCBD81", "|% c #E4D8C2", "1% c #E3E3E2", "2% c #454545", "3% c #6B6B6C", "4% c #222223", "5% c #636364", "6% c #C3C7C7", "7% c #DADBDC", "8% c #414140", "9% c #937820", "0% c #E6E3D6", "a% c #E8E8E7", "b% c #E8E8E6", "c% c #E6E3D8", "d% c #CFCFCE", "e% c #787878", "f% c #2E2E2E", "g% c #0F0F10", "h% c #8A8A8A", "i% c #C0C1C2", "j% c #DADADC", "k% c #D8DADA", "l% c #D7DADA", "m% c #2E2E2D", "n% c #4A4A4A", "o% c #403613", "p% c #E8E5DC", "q% c #E8E7E4", "r% c #E9E8E7", "s% c #B7B7B5", "t% c #3D3D3C", "u% c #121213", "v% c #121211", "w% c #929394", "x% c #C0C2C2", "y% c #D4D7D7", "z% c #DCDEDE", "A% c #F3F3F2", "B% c #3E3D3D", "C% c #262625", "D% c #515150", "E% c #232322", "F% c #343433", "G% c #B0B0B0", "H% c #BAB9B1", "I% c #C3C3BF", "J% c #C9C9C9", "K% c #C9C9C8", "L% c #CBCBCB", "M% c #3F3F3E", "N% c #1E1E1E", "O% c #151514", "P% c #0F0F0F", "Q% c #E0E2E2", "R% c #BFC1C1", "S% c #D2D3D3", "T% c #D3D4D4", "U% c #D8DBDB", "V% c #DEDFDF", "W% c #E0DFE0", "X% c #5E5E5D", "Y% c #161615", "Z% c #363635", "`% c #393938", " & c #CACACA", ".& c #181817", "+& c #191918", "@& c #818180", "#& c #DDDFDF", "$& c #C7CACA", "%& c #D0D3D3", "&& c #D1D2D2", "*& c #D4D8D8", "=& c #D3D5D5", "-& c #E2E2E2", ";& c #D4D6D6", ">& c #C2C4C4", ",& c #4D4D4C", "'& c #7D7D7C", ")& c #D5D3D2", "!& c #D3D0D0", "~& c #D4D3D3", "{& c #E2E1E1", "]& c #1F1F1E", "^& c #1C1C1B", "/& c #8F8F8F", "(& c #E4EAE3", "_& c #E2EAE0", ":& c #DBDCDD", "<& c #CACDCD", "[& c #CBCDCD", "}& c #CFD2D2", "|& c #D6D7D7", "1& c #C9CDCD", "2& c #E2E4E4", "3& c #171716", "4& c #373736", "5& c #1E1E1D", "6& c #CACBCA", "7& c #D4D5D5", "8& c #2D2D2C", "9& c #555555", "0& c #999999", "a& c #AEAEAE", "b& c #D7DAD7", "c& c #28F908", "d& c #21FF00", "e& c #3AF81D", "f& c #DFE0E1", "g& c #CBCCCC", "h& c #C4C8C9", "i& c #C2C4C5", "j& c #C2C3C3", "k& c #BEBEC0", "l& c #B3B9B9", "m& c #B3B5B4", "n& c #292928", "o& c #BABCBC", "p& c #D7D9D9", "q& c #939493", "r& c #565656", "s& c #9FA09F", "t& c #D1D1D2", "u& c #A0F294", "v& c #35FC17", "w& c #95F088", "x& c #CACCCC", "y& c #C5C9C9", "z& c #B9BDBD", "A& c #B5B7BB", "B& c #B2B6B6", "C& c #B4B6B6", "D& c #D0D1D1", "E& c #979898", "F& c #444443", "G& c #272827", "H& c #505050", "I& c #AEAEAC", "J& c #C3C3C2", "K& c #D5D6D6", "L& c #1A1A1A", "M& c #515151", "N& c #A3A4A4", "O& c #BFC0C0", "P& c #B3B4B5", "Q& c #B0B2B2", "R& c #A7A9AB", "S& c #49494C", "T& c #5A595B", "U& c #717072", "V& c #78777A", "W& c #666566", "X& c #888788", "Y& c #949494", "Z& c #B3B3B5", "`& c #B6B5B6", " * c #B1B2B2", ".* c #B3B5B5", "+* c #B3B2B3", "@* c #B9B9BA", "#* c #BABBBC", "$* c #9A9A9C", "%* c #AAAEAE", "&* c #B1B3B4", "** c #575657", "=* c #6B6A6C", "-* c #737174", ";* c #706F71", ">* c #707073", ",* c #717073", "'* c #6F6E70", ")* c #7C7B7D", "!* c #818082", "~* c #89898A", "{* c #A0A0A0", "]* c #B1B1B2", "^* c #B2B2B3", "/* c #B8B9BA", "(* c #C1C1C2", "_* c #C3C3C4", ":* c #B6B9BA", "<* c #1B1B1B", "[* c #52504F", "}* c #616161", "|* c #727173", "1* c #767578", "2* c #7A7A7D", "3* c #7B7B80", "4* c #868589", "5* c #99999C", "6* c #A7A7A9", "7* c #A6A7A8", "8* c #B0B0B2", "9* c #B6B6B8", "0* c #BBBBBE", "a* c #B9B9BB", "b* c #BABABB", "c* c #CDCDCF", "d* c #D5D5D6", "e* c #CCCCCD", "f* c #D7D7DA", "g* c #515153", "h* c #606066", "i* c #656569", "j* c #77777A", "k* c #8E8E90", "l* c #A0A0A2", "m* c #B3B3B6", "n* c #B7B7B9", "o* c #B9BABB", "p* c #BEBEBF", "q* c #C8C8C9", "r* c #CFCFD0", "s* c #C5C5C6", "t* c #C4C4C5", "u* c #C4C4C4", "v* c #C3C3C3", "w* c #232323", "x* c #565757", "y* c #6F7272", "z* c #7A7D7D", "A* c #8C8F92", "B* c #A1A1A4", "C* c #AAAAAC", "D* c #AEB0B1", "E* c #B6B6B9", "F* c #C6C8CA", "G* c #CACACB", "H* c #C5C5C5", "I* c #C0C0C0", "J* c #D2D2D2", "K* c #424242", "L* c #5D5D5D", "M* c #7C7C7C", "N* c #8A8D8D", "O* c #99999B", "P* c #9C9C9F", "Q* c #B8B8BA", "R* c #C6C8C8", "S* c #C7C7C7", "T* c #8F9191", "U* c #ADADAD", "V* c #CDCFCF", "W* c #D1D1D1", " ", " ", " ", " ", " ", " ", " . + @ ", " # $ % & * = - ; > , ' ) ! ~ ~ { = ", " ] ^ / ( _ : - ; < [ ' ) } | 1 1 2 3 4 4 4 5 2 5 5 4 3 6 7 8 , 9 ", " 0 | a b 4 c 4 d 4 5 5 2 e c 5 5 5 2 2 b f 8 8 g h i j 8 b 5 3 ~ ) k ; ", " l m n o 7 6 3 3 4 2 b b 1 f 8 8 8 a a p a 1 a | q r s t g u c b l 1 f [ ", " r 7 b 5 5 2 b v w x y z A B C D E F G H I J K L M N O P Q i d 7 a c 3 R S ", " | 7 T U V W X Y Z ` ...+.@.#.$.%.&.*.=.-.;.>.,.'.).!.~.{.i d n 8 c 3 3 R {. ", " ].7 T ^./.(._.:.<.[.}.|.1.2.3.4.5.6.7.8.9.0.a.b.c.d.e.f.g.h.d 7 ~ 5 m 3 4 g { ", " i.7 ) j.k.l.m.n...o.p.q.r.s.t.u.v.w.x.y.z.A.B.C.D.E.d.F.G.a d 7 R c m m 3 4 ~ H. ", " | 7 I.J.K.L.M.N.7.O.P.Q.R.S.T.U.V.W.X.Y.Z.`. +...+++@+#+$+%+&+7 i 5 3 m m m *+a k ", " h.m =+-+;+>+,+'+)+!+~+{+]+]+]+]+]+]+^+/+(+_+:+<+[+}+|+1+2+3+4+5+6+b 3 3 m m m 3 b 8 7+ ", " | 7 | 8+9+0+a+b+c+d+]+]+e+]+]+]+]+]+]+f+g+h+i+j+k+8.l+m+n+o+h 4 p+f 4 3 3 m m m m *+8 i q+ ", " a T g r+s+t+u+v+w+]+]+x+]+]+]+]+]+]+]+]+e+y+z+A+B+C+D+E+! n+h 4 ) 5 F+7 3 3 m m m m 3 *+R r ", " b T ~ G+|.H+I+J+]+]+K+L+]+]+]+]+]+]+]+]+]+]+M+N+O+P+Q+R+S+n+T+c 2+U+6 7 7 3 m m m m m m 4 8 ", " f 3 b V+W+X+Y+Z+`+]+]+]+ @ @ @ @]+]+]+]+e+]+.@+@@@#@$@%@n+} &@c *@=@5+T 7 3 3 m m m m m m 5 ", " f -@3 ;@>@,@'@]+]+]+]+]+ @ @ @ @ @ @ @]+]+]+`+)@!@~@{@]@^@/@&@c *@2 d 6 T 4 3 3 m m m m m 5 ", " 1 (@T L._@:@<@[@}@|@`+ @ @1@2@3@4@5@6@7@ @]+]+8@9@..0@a@b@c@k e $+1 4 d@6 *+e@3 3 m m m m c ", " ~ &@T f@g@h@i@j@{ k@l@m@7@n@a o@) p@q@r@s@]+]+t@u@v@w@x@S+y@z@U+A@4+-@d d c 4 3 3 m m m m c ", " ~ l T ;@B@C@D@E@F@G@H@I@J@k K@L@M@N@O@P@Q@ @]+R@S@T@U@V@W@X@Y@U+z@f 2 4 3 5 c 4 3 3 m m m *+ ", " a | e C.Z@`@ #.#+#@###$#%#k@&#*#=#-#;#>#|@,#]+'#)#!#~#P i.X@/@1 $+{#U+-@4 2 5 *+4 3 3 m m c ", " i q ]#@@^#/#k@(#_#:#<#[#}#|#1#2#3#4#5#6#$#7#]+ @8#9#0#a#i.) (@1 b#! 1 b 2 8 b 5 *+e@3 m m *+ ", " i q c#d#e#f#g#h#i#j#6@[#k#l#m#n#o#p#2#q#r# @]+`+`+s#t#u#3+A@r v#w#o+8 1 v#x#p 2 c 4 3 3 m *+ ", " ].| y#z#A#B#C#D#s@E#F#G#H#I#J#K#L#L#M#&#s@]+]+`+`+'#N#O#q P#o+f Q#} R#S#f j x#b 5 *+4 3 3 c ", " q | e@T#U#V#W#X#Y#Z#`# $.$+$@$#$$$%$&$*$]+]+`+`+`+`+1@=$o+[ 6+8 -$;$i l j h ~ a U+-@*+3 3 c ", " p@l c >$,$'$)$!$~${$]$^$/$($_$:$<$[$}$7@|$1$`+`+`+`+`+2$i.3$i.R#4$6+T+r 5$6$h 7$f 2 c 4 3 c ", " i.l 8$9$]+0$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$^+`+`+`+p$q$r$! /@&@h s$(@t$u$v$w$x$g a b 5 *+4 5 ", " y$T+1 _ ]+z$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$`+`+`+Q$Q$R$o+} S$T+T$2+} U$V$/@k W$~ 8 2 c 4 c ", " q {#a X$]+Y$Z$`$ %.%+%@%#%$%%%&%*%=%-%;%>%1$`+`+`+q$q$-%S+o+R#T+,%'%) )%)%U$w$x$S$x#!%5 *+5 ", " ~%g a = ]+{%]%^%/%(%_%:%<%[%}%|%1%2%3%4%1$`+`+`+q$ @ @5%r r T+r 6%7%w$P#X@V$} 6$l 7$p e *+2 ", " r ~ a {.]+8%2#9%0%a%b%c%b%E@E@E@d%e%f%g%]+q$q$q$ @ @ @h%6+k ! (@i%b#j%k%l%3$} 6+W$~ 8 2 c 5 ", " a 1 q+`+m%n%o%p%q%E@E@a%r%E@E@s%t%f%u%i#v%q$ @ @ @ @w%q ) &@/@x%y%b#k%X@)%z%r l g x#8 b f ", " S#A%g B%C%D%E%F%G%H%I%J%K%L%* p#M%N%v%O%O%P%`+`+`+q$. ) Q%6+3$R%S%T%b#X@U%X@} l l g 8 | V% ", " 8 W%7 X%Y%Z%`%Y%_ &r l g R R .&t%+&O%O%@&/ I.Y@) q w$#&/@T+/@$&%&&&*&U$=&l%Q%q ! r -&;&>& ", " 8 H.7 &#O%C%,&+&'&& > )&!&~&{&]&M@O%O%^&^ /&) (&_&| p+:&Q ! /@<&4$[&}&=&g.&&|&|&1& ", " f 6+7 2&3&Y%4&5&<#6&P#B 7&=+7&5#8&Y%O%9&0&a&b&c&d&e&-&f&X@/@3$g&g.$&h&i&j&k&l& ", " g k q u$m&n&N@+&$#o&7+-&p&P#w$q&Y%O%O%r&s&t&{#u&v&w&W@} V$c@X@x&y&z&A&B&C& ", " 0 0 7+=+D&E&F&G&H&I&J&> J%T%k%K&L&O%O%M&N&L%g i q ! &@o+} } T%O&P&Q&R& ", " S&T&U&V&&$W&O%O%P X&Y&. Z&`& *.*+*@*#*$*%*&* ", " **=*-*;*>*,*'*)*!*~*{*]*G%^*/*: (*O&_*:* ", " <*[*}*|*1*2*3*4*5*6*7*8*9*0*a*b*c*q+d*e*0 f* ", " g*h*i*j*k*l*m*n*o*p*q*r*s*t*u*L%{.{ I.u*v*[ H. ", " w*x*y*z*A*B*C*D*E*: F*G*S S &L%- L% &S H*= I*- I.k J* ", " K*L*M*N*O*P*Q*>&R*L%; {.> { < &L%I. &; S S*S =+k f g ", " T*{*U*I*T$V*< { q+0 7+H.Y@k p@i.| | | i.r ", " * H*L%W*=+[ 7+*@-&) ) r | ", " ", " ", " ", " ", " ", " ", " "}; ������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/write.tiff�����������������������������������������������������0000644�0001750�0001750�00000010040�13431646201�016267� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*�8�� $h!B &lzXs4-1'.M %DWSI7g2`6C9rm$ 2^D1%L*mf+7[5\2-nTs8.v Ʊ3U! `pݑ=%ָq0)RI!}&Y d33W| ,b&K)W󘪳׎{e]g\sJ:Uj i&/V-]Зog~ ҮDI;zǎ˜5TC 5E\d.mnNXmvxak 臅z)f$H&iuN isU:u w3D=to4,WK˙O<  1؈eENy 聙0X<|Za$7РȣSrC&7=SS<kog,n,7?,K8QY(MJ`֖a )a8dҢXC<F3 i$2W<k &r23Ss3;6gԯ-QZs с'ĝz&Bh#NV+z6C:S;ﲳ覫n{辧zTM+F𠉵V1XčZ[mUĉo2qc43Աa'@p'ɧrrvZDfqugElkFXa)+'P:§UXj:<)ĭ ώ3d\X ے­h)ޑ)ݕ|ؗ (ꎡ8N8Ɠ*Pg O?C[E,W[/*צZ)HwPzC&&\cϣʷjBaǟ`)V3y#hek5Z<(hp(w3[&Z={)Gxi`5VFkס/Tx߇pCOPj8#_&tc۞iR<W]}Ɯ<zSX VUCCExL ' D"nM&r.O0|^T(шvu~G':Nآ750b ;qBA\h8vELY&G8)u8CЇ!La [cc#IzX�0Hv2͔c+1L%bV B/zVp:<aPEfAm":C=:=#&Y:]!E$40D`485r;Le)҄/ P?5:%a `fchb(kC4 =t"&a  F] FxV 4wqid"f5(/&G˜+5iqTcI02` 㥨8,\8BP3P  A @ dA^rV)Q�R'IB2A!Kԛ$6/ӟ3ȆKȂ1<}rWȂ <TXA( [#qp$-uGgy9Q/XD|8bEp[d0 (%&P="pt �Н"&ck[S䈒8bZ{<_򐿓P?)I&]F#"Q? z`# ȇ z rD p�a8I_DƾߢKth(F%p4$;)&|r4 M  VCHтh "& EPB @0( wD(4A3>|2Iq@{kH'?dN:؂1S6> lC"1|8a U@{P P�  98Ob2IsY3:n\t&L�[V%- Cf08^P F@ �5ȇ3@ ��|Ѓ$es|/^?)Lb|_pF6(8PINz>G1!@ ^pZ�Mp@+@ rPL!v"AX;ί}81DT5-N~ 3!;~II+:|Te{6n'\Oazx!pg?xF{O H bc`NؾǺ$O }erP!f2%a Zxߎg#?xD>q |G pg9/ßo퉿ғ1wx-<Xr=Spg j@"TW� ?}g/Gs rkǂQh ^s,[LtS7wX3؀%f,w`��qc5FH@�M�@82U'Iuyus0�еe 3 찄l(  ;( ho(SX(׆7(_VcSD@8rA@ @(Te `ȌȊȏ(([v0'q PRv,&@tw��2)FYeL -p_wtBu,'eǍe' 0C %8~�ȇ0u�rG2q,7)5'k °؉ q˄ 밊8ʸ889rq)Hp!2qU,GeY]`N0M6'wSL 2#Če=l8ND JL`IAlMLQGX) 2@(xGrD yT%J;NL'pK0N7'vONTKl IϐD젋8 T 2IL@ȴIH2QOVo5`#h24@pN$O(I( ' q@>�@ʁP@΁xL2NNS0?fp|kC4hoH#'f'<h}(̻|B_7wKn 4r @ Ue 2h&Q)8BBBBt )�-"dF*""."u笍W�(bL=% a ]Rؐla!,=/rPR.R-5P-R222-IHʲtH-.;Lr@'a%)^RK ruBBt/T@䊇JJH<JxNJ[,جͪ/Wa4�) +?ۀꆝꯁE $֚gfCiRد%;%Get[02)ajCmy  @7i 4(`#2j1 Ilʺoڬ_8k8T&jջ{0Olffn@nlGDsa&21@u)mDƩꗎ&3}f+QoVQ6l'ѩ慇jnO )0I\no&&n&57w8~fjfifoCmlkNNNx·.l[)x) l'"ov&n l5f6Xxxh~xlNNN|B^%2i. $ˮzZպ0nfhN詞.^ n������0�������0����������������������� ������� ���������� ���������������������������8�������0����������������/gimpswap/dwiconxcf/write.tif�created with The GIMP�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/mixer.xpm������������������������������������������������������0000644�0001750�0001750�00000023247�13431646201�016152� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "48 48 229 2", " c #38E338E338E3", ". c #FFFFFFFFFFFF", "X c #41034D345144", "o c #861786178E38", "O c #965896589658", "+ c #B6DA8E388E38", "@ c #D75C92489658", "# c #DF7DA699A699", "$ c #E79DCB2BCF3C", "% c #C71BCB2BD75C", "& c #BEFBBEFBD75C", "* c #B6DAB6DABEFB", "= c #BEFBC30BCF3C", "- c #C71BC71BC71B", "; c #AEBAB2CABEFB", ": c #BEFBC71BD75C", "> c #CF3CD75CDF7D", ", c #96589A69A699", "< c #514455555144", "1 c #186118611861", "2 c #08200C300820", "3 c #208124922081", "4 c #2081249228A2", "5 c #9E79A699B6DA", "6 c #AEBAB2CAC71B", "7 c #79E7820779E7", "8 c #1861249228A2", "9 c #861786178617", "0 c #9E799A699E79", "q c #A699AAAAAEBA", "w c #8E388E389658", "e c #8E389A69A699", "r c #96589658A699", "t c #AEBAAEBAB6DA", "y c #B6DAD34CCF3C", "u c #8E38C30BC71B", "i c #79E792489658", "p c #28A22CB228A2", "a c #5965659569A6", "s c #69A675D679E7", "d c #8E3886178617", "f c #AEBA8E388617", "g c #DF7D5D755144", "h c #E79D55554924", "j c #BEFB55555144", "k c #861779E78E38", "l c #96589A69B6DA", "z c #A699AAAAB6DA", "x c #B6DABAEAC71B", "c c #AEBABAEAD75C", "v c #69A671C669A6", "b c #28A230C228A2", "n c #28A234D330C2", "m c #618565956185", "M c #618561855965", "N c #208120811861", "B c #9E79A289AEBA", "V c #9E79A289A699", "C c #8E38DF7DDF7D", "Z c #5965B6DAB6DA", "A c #492459656185", "S c #41034D344924", "D c #E79D861779E7", "F c #EFBE51444103", "G c #D75C38E328A2", "H c #86171C711861", "J c #410330C230C2", "K c #38E34D344924", "L c #96589A699E79", "P c #9E799E79AEBA", "I c #B6DAA699AEBA", "U c #D75CBAEABEFB", "Y c #8E3892489E79", "T c #596569A65965", "R c #104010401040", "E c #30C234D330C2", "W c #38E33CF34103", "Q c #79E786178E38", "! c #8617A2899E79", "~ c #30C251444924", "^ c #618559655144", "/ c #082008200820", "( c #28A22CB230C2", ") c #8617820779E7", "_ c #CF3CA6998E38", "` c #B6DA4D344103", "' c #71C61C711861", "] c #38E318611861", "[ c #514455555965", "{ c #61856DB68617", "} c #596569A671C6", "| c #8E3892489658", " . c #9E7992488E38", ".. c #D75C65955965", "X. c #E79D69A65965", "o. c #E79D75D669A6", "O. c #A699AAAAC71B", "+. c #79E782078617", "@. c #28A228A228A2", "#. c #18611C711861", "$. c #28A218611861", "%. c #208120812081", "&. c #596561855965", "*. c #18611C712081", "=. c #86177DF771C6", "-. c #20810C301040", ";. c #104014511040", ":. c #30C234D338E3", ">. c #51445D755965", ",. c #71C66DB671C6", "<. c #C71B8A288617", "1. c #DF7D451438E3", "2. c #8E382CB228A2", "3. c #410341034924", "4. c #51445D756185", "5. c #69A66DB671C6", "6. c #A699A289A699", "7. c #D75CC71BD75C", "8. c #A699B2CAB6DA", "9. c #71C671C669A6", "0. c #71C679E779E7", "q. c #8E388E388E38", "w. c #79E78A289658", "e. c #86178A289658", "r. c #9E79A2899E79", "t. c #492459655144", "y. c #596565956185", "u. c #71C67DF78E38", "i. c #86178E38A699", "p. c #8E389A69B6DA", "a. c #79E775D669A6", "s. c #104018611861", "d. c #CF3C51444103", "f. c #A69928A22081", "g. c #618569A669A6", "h. c #A6999A699658", "j. c #D75C6DB66185", "k. c #DF7D92488617", "l. c #71C6820779E7", "z. c #9E79A699BEFB", "x. c #86178A288E38", "c. c #08200C301040", "v. c #86178A288617", "b. c #8E38820779E7", "n. c #514438E330C2", "m. c #28A210401040", "M. c #69A675D671C6", "N. c #71C675D671C6", "B. c #BEFB92488617", "V. c #B6DA45144103", "C. c #69A65D7569A6", "Z. c #9E799E79A699", "A. c #9658A699A699", "S. c #4103410338E3", "D. c #410345144103", "F. c #96589A69AEBA", "G. c #618569A66185", "H. c #4103492438E3", "J. c #410355554924", "K. c #492455555965", "L. c #69A669A66185", "P. c #49244D344924", "I. c #965892488E38", "U. c #71C66DB66185", "Y. c #514424921861", "T. c #79E77DF779E7", "R. c #96588E388617", "E. c #A69996588E38", "W. c #E79D4D344103", "Q. c #8E389248AEBA", "!. c #596559655144", "~. c #59655D755965", "^. c #410338E338E3", "/. c #30C23CF34103", "(. c #38E345144924", "). c #492449244103", "_. c #410349244924", "`. c #8E389248A699", "'. c #861792489E79", "]. c #965820811861", "[. c #A6999E79A699", "{. c #492451444924", "}. c #69A66DB669A6", "|. c #69A675D68617", " X c #71C675D68617", ".X c #514455554924", "XX c #6185659569A6", "oX c #79E77DF78617", "OX c #79E78A28A699", "+X c #79E786179E79", "@X c #79E786179658", "#X c #71C682079658", "$X c #8E388A288617", "%X c #51444D344103", "&X c #71C67DF79658", "*X c #69A67DF79658", "=X c #79E78E389E79", "-X c #86178E389E79", ";X c #71C679E78617", ":X c #8E388E38A699", ">X c #38E33CF338E3", ",X c #38E338E330C2", "<X c #5144451438E3", "1X c #96589658AEBA", "2X c #69A671C671C6", "3X c #410355555965", "4X c #514461855965", "5X c #79E779E771C6", "6X c #38E345144103", "7X c #514459655144", "8X c #514461856185", "9X c #38E3451438E3", "0X c #492455555144", "qX c #38E3410338E3", "wX c #30C23CF330C2", "eX c #28A238E338E3", "rX c #41034D344103", "tX c #38E334D330C2", "yX c #71C679E771C6", "uX c #618571C669A6", "iX c #8E3892488E38", "pX c #30C22CB228A2", "aX c #30C238E338E3", "sX c #492461855965", "dX c #492459655965", "fX c #410355555144", "gX c #49245D755965", "hX c #410351445144", "jX c #492461856185", " . ", " X o O O + @ # $ % & * = - ; ; & : > : , < 1 2 3 4 4 3 4 X 5 6 7 8 3 9 0 q , w e r t y u i p . ", " a s d f g h h j k l 5 ; * z x c % % % z v b 4 p 3 3 4 n m ; 6 M 1 N w x * B V 6 6 : C Z A p . ", " 4 8 S f D F G H J K X m L 0 P I U $ > % ; 0 q t r e P z = x Y T N R 4 E p 4 4 W Q 6 ! ~ p ^ . ", " / / ( ) _ ` ' ] [ { A } | .f ..X.o.@ O.6 : % - t x c : % ; +.m @.#.$.#.#.%.%.E s 5 &.1 4 , . ", " *.( A | =.J -.;.:.A X X >.,.<.X.h 1.2.3.4.5.w 6.6.O.x % 7.% 8.O 9.0.q.0.0.w.e.B 8.r.t.;.#.y.. ", " u.i.p.e.a.@.2 2 2 ;.s.;.;.E f D d.f.] X A K g.O 0 h.j.k.@ U & c x % - 6.8.; x = z l.t.1 2 #.. ", ":.5 z.z.x.a.E ;.R ;.;.c.;.1 :.v.b.n.m.$.5.o { M.N.d B.o.h h V.C.u.w Z.V V z z x x = A.l.S.:.D.. ", " F.l z 6 I G.H.< < J.K.A { i.O L.#./ 2 #.4 %.%.3 P.+ D h G ' W W y.o I.O + @ # $ & z B * * . ", " r Q +.0 - * t = z , 5 O.O.l q.U.3 2 / / / / / / :.=. .` Y.] 4.u.5.M.T.R.E...W.h j.O Q.5 8.q . ", " +.!.~.9.=.=.9 L L A.z z O.6 z R.^.3 p 4 *.3 4 /.5.Y a.4 / 2 8 /.:.:. < R.o.W.1.f.J /.(.y.+.. ", " 5.D.).).).b p _.e.P P F.`.P x - q O q O Q '.Q.l l 9 N.p 2 / / 2 2 2 2 *.U.+ d.].] _.a _.y.T.. ", " u.e.[.q.y.{.D.y., V A.O a.N.d h.q q x B B 8.6 6 O.O b.E 1 #.#.1 ;.1 1 n }.=.n.$.R /.a [ [ t.. ", " |. Xo e.Q w w | , , , N.D..X^ M S.P.5.Y B z 5 P * x x =.m 0.9.[ a XX{ e.oXa.@.2 2 c.1 1 1 ;.. ", " OX+X@X#Xu.u.+.oXo x.w Q oXq.N..X@.@._.L Z.6.r =.$Xh.U * * - t 0 z z O.z 9 a.E 2 2 / / / / / . ", " } |.OXOXOX@X@XQ oX0.|.0.x.q q Y $X+.o F.Z.P oX%X< L.a.M N.Y O B q B 5 8.t h.< @.E E 4 4 ( n . ", " :.(.&XOX*X*XOX=X=X-Xw.@Xo +.T.9 o x.e.Y , F.;X< .X).^.@.p W 9 Z.V V I.$XV - t h.* 6.v.| Y `.. ", " 4.g.#X#X|.w.OX-X=Xi.OXe.:X`.i.-XQ o +.oX+.Q w.r * 6.0.G.y.}.r Z.Z.O M ^ U.b.R.v.V L L 6.B V . ", " @XOX*X|.|.+X@Xw.=X=X|./.[ -X'.-X@X'.`.i.e.x.Q o w Y | L O L F.0 , T.>XE ,XH.<X@.E G.O L Y Y . ", " `.Q.@Xw.'.+X#X@X+X@Xs >XD.@Xw.#Xw.-X'.'.Q.1XF.1X`.e.o o x.o +.w | x.;Xv.,.).E p E 2Xr L | 9 . ", " '.@Xu.i.`.Y e e Q.s P.|.u.w.@Xu.w.=X=X-XQ.+X5. X`.1X`.e.-X-Xo Q T.oXo 0 q O $Xw q.Y '.L x.{.. ", " w.u.u.i.-XQ +.o q.P.3X, A.=Xu.e.-Xw.w.=Xi.s :.W #X`.e.e.`.Q.`.e '.e.-X9 T.k o o o e.| | Q 4X. ", " @X|.-X@Xv.5Xv 9.v _. XF.Q.u.-X6.0 | 9 Q +.5.y.5.-X+Xu.+X-XOX-X'.-Xe.| Q.:X-Xo Q Q |.s M.+.Q . ", " @X#XY e. .R.d b.m p s F.=X;X| Y O d T.=.T.~.oX'.i.u.u.=X=X=X=X=X+X[ ).;XQ.:Xw.w.:X-Xw.Q Q oX. ", " y. XZ.T.N.T.$XI.L.4 P.-Xu.e.Y O 0 E. .R.a. g.z F.-XP Y o Q w.'.i {.>Xs :XQ Q -X-X-X-X=X-XY . ", " 1 p ~.9.}.N.N.P.4 ;.8 6X{.2XT.7 7 b.I.h.=.@.D.Y e.L z V q.+.T.+.m v w.e.o ;X@Xw.o w.w.@Xs m . ", " c.1 D.7X~.m m p 2 1 *.s.;.p < 9.9.N.5X!.E #.#.H.{.2Xx.0 d 5Xa.5X!.N.B L +.o e.Q Q Q o w.8X:.. ", " R :.t.9X{.< 7XE 2 c.c.c.c.( 4.!.!.&.G.E ;.#.R R R @.M .h.h.E.d ^.S L Y q.q V L e.x.e.s y.g.. ", " 1 S } 0X qX9Xn R 2 2 R / 8 [ %X{.{.!. 1 @.s.R R E v a.5X) R.b.<XE N.T.| A.L | L L O D.~.| . ", " 6X2Xe.0.b @.wX@.1 R R R 1 eXg.< 9XqXH.wXs.%.s.R 4 {.M &.m }..XE n.1 #.3 S }.v.| L L XX XL . ", " 0.0.#X2Xb 7X) N.< 9XD.rX[ M.'.Q D.@.,Xb 1 R ;.R %.S {..X< 4XqX$.tX1 / 2 #..X9.9.7 v.P.>.Y | . ", " N.0.0.S E N.v.v.0.9 v.9 +.+.o oX9X&.I.T.&.rXS S >.&.{.H.H.).qX;.N 1 / 2 p }.9.L.L.G.P.2X| o . ", " N.yX7Xb t.5X7 N.N.v.7 T.T.Q q.7X 0.O O $Xw I.x.q.9 g.>X@.tXtXR 2 2 / 1 ~.h. .b.) U. G.L x.. ", " }.g.wX6XM.N.}.&.N.0.T.) 7 l.uXn K.+.q.9 T.iXx.9 v.iXO ~.b {.rX@.1 #.1 pXM a.) d .d tX7Xt x.. ", " M.3Xp 8X2X}.m G.N.N.N.N.N.yXrXaX0.+.N.G.N.9 v.$Xv.x.0.>X.X0 0 9 M }.G.M !.7X!.M !.D.b b }.7X. ", " m p 6X2X0.g.4Xm }.v N.N.oXm n &.l.T.2XuX7 7 7 7 +.v.4. N.0 O v.x.O | 5XH.9XrX{.E #.pX;.#.1 . ", " D.p g.M.}.sX8XG.v N.N.N.5.E M.+.0.g.M.N.N.T.7 v.T.E < +.9 ) yXI.I.iXG.wXwX9X9Xb R ;.2 2 / . ", " n aX8Xa m 4XM.5.v }.}.N.[ n y.0.M.a a 5XN.5XT.T.N.{.E M.$X) v 7 ) 9 $XL.S.b b b b 2 / 2 2 2 . ", " p 6XdX3XX t.8X8Xg.v M.g.n 6XM.s 2X8X}.N.yXyXN.T.L.n [ 9 7 yXG.7 7 v.$X$X5XH.N n @.1 2 2 2 #.. ", " @.K dXfXfXt.gXdXt.t.8XrXp 8X+.;Xa g.}.v N.0.l.T.6Xn }.T.0.g.yXT.5XN.5X9 ) {.rXv.N.< ,XtXE rX. ", " K dX3XfXfX3XdXdXgXgXhXaXaX>.8X8XsX2XN.0.0.5X0.m p 0X9 ) }.y.9.N.N.5X) $XM E L.q.O q.) I.9 N.. ", " fXhXhXfXhXfX3X3XdXa (.%.p gXjXdXsX8X8X8Xg.M.0.>X N.0.N.m v N.N.T.N.5X9.wXS.) b.) v 9 $Xv.}.. ", " fXhXK fXfXJ.fXhX3XA 0Xn 6X4.gXt.sXjXjXjXjX8X3Xp S 2X0.2X}.T.N.N.N.N.T.&.E L.5XN.L.v 9 9 $XN.. ", " (.K K 3XfXt.J.fX3X3Xt.t.gXgXt.t.gXsX4.jXjXgXeXb t.8X8XsXy.}.2XyXT.7 N.E 6XN.0.yXy.}.N.5XT.7 . ", " p /.( aX(.fXJ.3X3X3Xt.t.sXfXfXgXgXgXgXgX8X>.E @.J.8XgXt.8X8X8X8Xa v < n g.9 0.G.G.9.N.T.=.v.. ", " eX( %.1 1 %.S gXK fXfXdXsXfXt.gX4XgX4XgXgXsX0XJ.4X8Xt.sXjX4X8XjX8X>.9X6Xy.uXM.a 5XT.5X5XN.T.. ", " (.K (.eX( p S.E %.*.8 eXK K fXdXgXgXgXgXsXjXjXjXjXgXt.sXgX4XgXjX8X_.pX9X&.&.4X4XL.uX9.N.) 7 . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . "}; ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/mixer.tiff�����������������������������������������������������0000644�0001750�0001750�00000016306�13431646201�016274� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������MM�*��p $h!B &lYGdIŋ.IC2cƜMhԢO&MQ]Zm cآE7/U"4@ h0"B Ed!CrVO>C1bȕ#WJue)!A8%JVb -΀k.| CP)9B%UbRK)թV.M:t+UAv5dܺI (o,[.ѣGJ" Rcbz0B%- #@PX顗~袟,)%ʩhcVX"Ѣ&h4S`R(F9*H$k"%XRA@�1By 0v"\ɣ&JgnzfE`ئz"`zH!BH0p)N]!L0F8`ՇZ蠂 j J8A�/vXQBR�]#0 (`ʇPgD>\ 0@GU?$Q},q!$!D!esk"zi`NZ6bYciƩ%caYVzq#@0*(! L0!�|,pBU &a'<ɧ1B4A(R8 b(`@ü t~�X`AaKst@ MđA E #`n0Esԑ` 1 DG EbJ))ZifyXfqd=iDH Ob"7<_%8"|hF:IdEDЀ 0�q—X8i'qbX�8@4@$A TPazʉ%]`Eȇ�,AQ@ E) ƒdRH&lҩ$,"�~@ q9lR@X@3:16tc"11 @#ڍ~4hG?&PZ!,4`1<pM 9( Q>"1��d H "#T,`7"0 P@ �ذ >X ~| 7x �KXBІ A@.D#qHEQ` (@1Є T=ЃQta�H6O@|`;8 QIB-GjQ*0u(A P!q@ 2P1L`@" EH1,a88 @&.AĐ dI(!8*0 N  6C�ta# HDz kHC2vQAJҢ}XD!jЅ| -F;yMxFÿC�| c�CF7zP:4W(F-,(@%Qj#JTsSО-0#MU=$ 30%�7 ~G<j$# 06! !tD# D!ZPE&tuAp?#�pEBd@ґ-(B)QJ D5D\�Iw@ Py1$ASP,X$" ^p+A .L"X>`; (@EBW6A"CW`D H@F0_L 3b($2 iHA0`#C D8bL$[siP HCuːD|DGQNYY #A0\a`P5<هs` 3a�H8!ļ@$d c@ҡqSřG bD" QЅL!  @"І LlHG T vN (E PҲ`@Pb B0IM ij7T� h@Y/ z?�FH@ AP uAʦ\ x E ?"Gh#IKC rddp+DF9:P) Q ␂$"(@ Q:BjQftC'(F<a{AІ1̠SXvD(7x�1+@QFz ȦPO#/H3�mA�BB H@ ~B,b P@}COEιPiHEB _D! (A>r1BthD0|(MnЃahG(W؂TsU� U1[@zpoDș("Q O# >x@pL7�_9T2rRvȀppEOpt6A(Lȁ QNP4P5P�;�c+Cw�w3>H KSevjjfPGoPPf1`�&`&=2"* `gj`�V$>pP({Ё (?ll7PPjl@b`5>MDȇȅbH<(49P�EP8qF`` J6^_`Ȇ|(lȅC0ɂ|KhCfȁ,Ȅn(h{HHl }0��`HW7u7X8(�_;ȔD(XH8G,o(PK_sXǀh6b�w0K0}0�[u|( p(Lȅ9nMP7SHOуIHb}((rar O('LW{wH/T,Ѓ,hsp^eP ΁,(x�oOUŁbS9hH@(CдH4Hc6ȇ42=TȄ".M^`�qILR``v}0HtHlȃ(H\^vv(HJH?PHp�tOl,pH[p n2j`Hxw8(HXO(`H JH܄ hHLLĄxTGtHPp�i `Uj;gH:IlI9@0HBtpȮ842%8^4KNWL$po LXȆ@<D�7l8RHJ"HHM<. l_xv#)`HDO΂$HH I>9P9HH;pHpe\ [0l)2IP�9YUH!.rLKS4[Ox,X/bf`C Ap@OD(@ dD(ӅHҊ<`vT r9@PPだ�TDHH H�UУDA $HHwgG,`0Np�w@f(g8TɆ(<ĸw;[p�0ɋ:pGiℼƂ ΃ H*J܇,d((wxH,r"r.Ԅ(ee}H4//0s0-r-l'ӈnHxdHdwNO]hm΁$(_(�gJL K,b k<<P�5P/WOR(p:ʁ\V* 6B0lG7gp:xr<yXȬO}Z<Ȇ(,,HL`�W7`3k(&9H,p ,hl(pHy/YPL-8 nMHc,XȃejP!pf,pG4b^T3 9(to7H0\H W ~A@, s~ȇ|r3hC+pL H�N0Jv/H pO0wwl�q�%F0300)Z<Dwd@ *%P%W*AW]PVT(m  /p\Ȉ1K/p-�Ep7p (j'@X΁ZnPu*6 :�yP)�A5P�up*V)?@H9$ %�cqtC30`^$<)D420�#І\H8(,HBDŽbȀp�NIG<LˀjhH4=HrHH+}9``jQ @e 6`v~ hd!x2rHP�YyPt�6;T @�L�(E{f`h(Opp}`dޅH7P1m'p>o.zIII2ȅxlD5*bj1A)H P[s v& T?@�Fe��#[{.`7Ff�fvwF^z }070kr�V`` bXAm  +i,S<'`N;�HJDaB{p? ':ߴoP|pEl>;1Pm(rp-x7`  2ޕ?�lY@9< "U'5/5AbD2@Q3[�PYp-S) P]Be6n �Opr/`V`7p( fh6_d_(L�>^}Zt8%!JaPЌA=&q1ƱY` 35pw�#*�Wj8<5fk T΁8pк�U5SMP@@p2Sp d�rW 6sDP:`- H`$-Qz' &`S`:8C;4?M3/Ȃ0�G3V803LJ{V6�`6AF OlХ-WoyISp�Fu� [w<)qt СpQ=R@M ,@k0-w7_pؖH&PFEhFh:qP%0S7Iws'}|wppG�1Q`y$3WpW spkp| >^P(Ȝ N&~[930w*P&=PC0qQZ`�:&{5&0<B>p&pS+P�C`0sixpp['Hg@=�_7[aW�_̏~ (Tm`΍7i2K&QH!E&]8BA&My0c&4@ & Q+7AQ3aÖ#n,ٱ.Ldʆ=N9qؓ'l8`s-\(  Xdσ)\r| ‹7/ذJE ύgEI,NDqLY2=6<ƅ8.Q�TH`} 45 #zQbĘS3ʈ+YɁ}sͱGTPEGSLqq -0G spwbO wdP@z`g\ PB?Zlw! ¥;,@aF((aH Nhrh ADQBYD 1L q$uOE MFqU 1B#pgp7͈O, :OPBM&Pr/|Û0"&Z gDB! ȡT@X\tԂjD FTQB�eG BQAMԐCM0D)҃ M 1Õ�BǛ�t k{Aq |" z?/\# {t C0,"@B%)EqD' \pe4P.a aB i[F5@MQCATPD%4:AI4уy`aGtP EL1 ]q{ M,<s*hA5TEsC5~ ƋH"c`z,MFH%h%PuP@>фJxQAQEe\~BuP1n ZDY 0Zq3tF1ṵp0L<~ .xp!,hh(z2j*8/X p?�oC6^A<g�a@ PD E/A Ђ,`� (B4`#%2ІN i@r~yCf0@ PCr7lv%g8Y=htt9!FMhA,dhCBPȅJڃ2e )hB]'PtmhA!zЅ퇴A4;(A *1L}- Nv wx?f0Ybn@&З l  $e@jЂ\AnB|xBH 4! ji6DE�RІ2 R Z�&ЂT  Ѐa { FP L J�5cAp72a3_< KM Pl@>L`.H@kHAj�d! ^(YjP( BD:RRɥ B!Pib 0o3APAɖM j/q "{QZ`W 8 0Cb'xAzЃ vp�D * �6 vHAXI@ ʐϠ�- ~CoZF}@ť8$P&p|euBư`SvƇk@sc>qk?^�������0�������0���������������������� ������� ��������������������������������������8����������������������/usr/people/marco/mixer.tif�created with The GIMP���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/Terminal.xpm���������������������������������������������������0000644�0001750�0001750�00000040640�13431646201�016575� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * Terminal_xpm[] = { "60 58 597 2", " c None", ". c #EBEBEB", "+ c #EEEEEE", "@ c #F0F0F0", "# c #F2F2F2", "$ c #F1F1F1", "% c #EFEFEF", "& c #EDEDED", "* c #ECECEC", "= c #E9E9E9", "- c #E7E7E7", "; c #C3C3C3", "> c #DADADA", ", c #DEDEDE", "' c #DDDDDD", ") c #D8D8D8", "! c #DCDCDC", "~ c #DDDEDE", "{ c #DEDFDF", "] c #E2E2E2", "^ c #E3E3E3", "/ c #E5E5E5", "( c #E4E4E4", "_ c #E8E8E8", ": c #E6E6E6", "< c #CBCBCB", "[ c #D1D1D2", "} c #D2D1D2", "| c #D5D5D5", "1 c #D8D7D8", "2 c #D7D7D7", "3 c #D6D6D6", "4 c #DFDFDF", "5 c #C8C8C9", "6 c #D3D3D3", "7 c #CFCFD1", "8 c #CCCDD1", "9 c #D7D7D8", "0 c #D5D5D6", "a c #D2D2D5", "b c #D0D1D5", "c c #CCCFD5", "d c #CBCDD6", "e c #CACCD5", "f c #CCCFD7", "g c #CBCED8", "h c #CBCCD8", "i c #C9CBD8", "j c #C6C8D7", "k c #C5C6D8", "l c #C5C7D8", "m c #C6C8D9", "n c #C4C7D9", "o c #C6C9D9", "p c #C3C7DA", "q c #C1C4DA", "r c #C2C6DB", "s c #C2C5DD", "t c #D5D8E2", "u c #E3E3E4", "v c #EAEBEB", "w c #EAEAEA", "x c #C9C9C9", "y c #D4D4D4", "z c #D0D0D3", "A c #74799C", "B c #676F94", "C c #626991", "D c #5C628F", "E c #5A638F", "F c #555D8F", "G c #575F92", "H c #545E91", "I c #515A95", "J c #505A96", "K c #525D99", "L c #525D9A", "M c #525C99", "N c #525E9D", "O c #4D599C", "P c #4F5C9E", "Q c #4C5AA0", "R c #4A55A2", "S c #4A56A0", "T c #505CA4", "U c #505BA4", "V c #5361A6", "W c #5964A9", "X c #5A66A9", "Y c #6D77B1", "Z c #C6C9DD", "` c #E0E1E3", " . c #ECEDED", ".. c #C5C5C6", "+. c #CBCACE", "@. c #4E588E", "#. c #06156E", "$. c #02146E", "%. c #021170", "&. c #041372", "*. c #041373", "=. c #051576", "-. c #0A1A7E", ";. c #0A1A80", ">. c #0C1C81", ",. c #0C2188", "'. c #0E1F89", "). c #11228C", "!. c #122790", "~. c #132592", "{. c #162893", "]. c #182C97", "^. c #1A2E97", "/. c #1B2C98", "(. c #1C2E99", "_. c #1E309B", ":. c #20329D", "<. c #21339E", "[. c #2334A0", "}. c #3B4AA7", "|. c #CBCEE0", "1. c #F5F5F5", "2. c #F3F3F3", "3. c #C7C7C7", "4. c #D2D2D2", "5. c #C7C7CE", "6. c #4B558F", "7. c #061573", "8. c #011072", "9. c #021172", "0. c #051978", "a. c #071779", "b. c #091A7F", "c. c #0B1B82", "d. c #0D1E87", "e. c #0F208A", "f. c #11238E", "g. c #122390", "h. c #142991", "i. c #152792", "j. c #182A97", "k. c #1A2B97", "l. c #1B2D98", "m. c #1C2E9B", "n. c #1E309D", "o. c #22339F", "p. c #2233A0", "q. c #2436A1", "r. c #3D4FA8", "s. c #CCCEDF", "t. c #F9F9F9", "u. c #F6F6F6", "v. c #F4F4F4", "w. c #C6C7CC", "x. c #4A548F", "y. c #081776", "z. c #051772", "A. c #051678", "B. c #07187B", "C. c #0C1D87", "D. c #10228D", "E. c #12268D", "F. c #132491", "G. c #142691", "H. c #162895", "I. c #172996", "J. c #1A2B98", "K. c #1B2D9A", "L. c #1D2F9A", "M. c #1F32A0", "N. c #2537A2", "O. c #2739A4", "P. c #3E4DAB", "Q. c #CACDDF", "R. c #F8F8F8", "S. c #F4F4F5", "T. c #CACCCE", "U. c #455190", "V. c #0C1B79", "W. c #081B7C", "X. c #0C1C83", "Y. c #0D1E88", "Z. c #12238F", "`. c #132590", " + c #142693", ".+ c #1A2C9A", "++ c #1D2F9C", "@+ c #2638A3", "#+ c #2839A3", "$+ c #283AA5", "%+ c #4252AC", "&+ c #C8CCDD", "*+ c #F7F7F7", "=+ c #C6C6C6", "-+ c #CECDD0", ";+ c #596298", ">+ c #101F7E", ",+ c #081879", "'+ c #0A1C7E", ")+ c #0C1D84", "!+ c #0E1F88", "~+ c #112390", "{+ c #152794", "]+ c #192B99", "^+ c #2335A0", "/+ c #2335A2", "(+ c #293AA6", "_+ c #2B3CA8", ":+ c #C4C8DD", "<+ c #EEEFEF", "[+ c #EFF0F0", "}+ c #CACACA", "|+ c #CFCFD0", "1+ c #606A9B", "2+ c #112180", "3+ c #0A1A7C", "4+ c #0A1B80", "5+ c #10218B", "6+ c #192B98", "7+ c #1F319E", "8+ c #20359F", "9+ c #2C3EA8", "0+ c #4657AC", "a+ c #F3F4F4", "b+ c #F8F9F9", "c+ c #FDFDFD", "d+ c #CECECE", "e+ c #D1D0D1", "f+ c #646B9E", "g+ c #132383", "h+ c #0C1E80", "i+ c #0D1D83", "j+ c #0E1F86", "k+ c #1C2F9D", "l+ c #20329F", "m+ c #2237A0", "n+ c #2D3EA8", "o+ c #2F40A8", "p+ c #4654AE", "q+ c #C2C5DB", "r+ c #F2F3F3", "s+ c #D1D2D3", "t+ c #7076A3", "u+ c #152485", "v+ c #0F2087", "w+ c #172B96", "x+ c #2B3BA6", "y+ c #3142AA", "z+ c #4755AF", "A+ c #BEC2DB", "B+ c #F3F3F4", "C+ c #F7F8F8", "D+ c #EFEFF0", "E+ c #F1F1F2", "F+ c #CDCDCD", "G+ c #D0D1D3", "H+ c #777EA8", "I+ c #192887", "J+ c #11238C", "K+ c #13248D", "L+ c #182B97", "M+ c #22369F", "N+ c #2E3FA8", "O+ c #3042AB", "P+ c #3343AC", "Q+ c #4957AF", "R+ c #BBC0DA", "S+ c #F5F6F6", "T+ c #CCCCCD", "U+ c #D1D1D3", "V+ c #7B82AC", "W+ c #1C2B89", "X+ c #122389", "Y+ c #152790", "Z+ c #2A3AA5", "`+ c #3041A9", " @ c #3445AE", ".@ c #BABFDB", "+@ c #F4F5F5", "@@ c #D2D2D3", "#@ c #7E85AD", "$@ c #1D2D8A", "%@ c #13248B", "&@ c #15268F", "*@ c #2E3FA9", "=@ c #3242AB", "-@ c #3344AD", ";@ c #3547AF", ">@ c #4B5AAF", ",@ c #BABEDB", "'@ c #858DB2", ")@ c #202F8B", "!@ c #15268D", "~@ c #172B92", "{@ c #192B96", "]@ c #3446AE", "^@ c #3749B0", "/@ c #4C5AB0", "(@ c #B7BCDA", "_@ c #898FB4", ":@ c #21308C", "<@ c #17288F", "[@ c #192D94", "}@ c #3142AC", "|@ c #3648AF", "1@ c #3A4AB1", "2@ c #5161B1", "3@ c #B2B8D9", "4@ c #C4C4C4", "5@ c #CFCFCF", "6@ c #9298B7", "7@ c #22318D", "8@ c #182A91", "9@ c #1B2F96", "0@ c #2133A0", "a@ c #3345AD", "b@ c #3546AF", "c@ c #394AB0", "d@ c #3B4CB3", "e@ c #4F5DB1", "f@ c #AEB5D9", "g@ c #C2C2C2", "h@ c #979DBA", "i@ c #25348E", "j@ c #1B2C93", "k@ c #1B3198", "l@ c #3A4BB2", "m@ c #3C4DB4", "n@ c #5261B3", "o@ c #ABB0D8", "p@ c #E9EAEA", "q@ c #C3C3C4", "r@ c #C8C8C8", "s@ c #D0D0D2", "t@ c #A1A7C0", "u@ c #26358E", "v@ c #1D2E95", "w@ c #1E2F99", "x@ c #20319B", "y@ c #22339D", "z@ c #3849AF", "A@ c #3849B1", "B@ c #3D4EB5", "C@ c #3E4FB6", "D@ c #5260B2", "E@ c #AAAFD7", "F@ c #C1C1C2", "G@ c #CECFD1", "H@ c #B1B5C9", "I@ c #29378F", "J@ c #1F3097", "K@ c #203199", "L@ c #4051B6", "M@ c #4152B7", "N@ c #5361B2", "O@ c #A7AED6", "P@ c #E0E0E0", "Q@ c #CECFD0", "R@ c #B5B9CD", "S@ c #2B3990", "T@ c #203197", "U@ c #23369C", "V@ c #23349F", "W@ c #4252B7", "X@ c #4253B8", "Y@ c #5461B5", "Z@ c #A5ACD6", "`@ c #B4B7C9", " # c #2C3A90", ".# c #213198", "+# c #23359F", "@# c #2536A0", "## c #3F50B5", "$# c #3F50B7", "%# c #4455BA", "&# c #A3AAD6", "*# c #B4B7CA", "=# c #22339A", "-# c #2637A0", ";# c #2839A1", "># c #4758BB", ",# c #5663B5", "'# c #A0A6D5", ")# c #E1E1E1", "!# c #F1F2F2", "~# c #EDEEEE", "{# c #CBCBCC", "]# c #B4B9CB", "^# c #2C3B91", "/# c #24359C", "(# c #293AA4", "_# c #4354B9", ":# c #495ABD", "<# c #5B6AB8", "[# c #99A1D2", "}# c #F0F1F1", "|# c #B4B8CA", "1# c #2E3C94", "2# c #25369D", "3# c #293AA2", "4# c #2B3CA5", "5# c #4656BA", "6# c #4657BC", "7# c #4B5BBE", "8# c #5A67B8", "9# c #98A0D0", "0# c #FAFAFA", "a# c #B8BBCD", "b# c #374499", "c# c #28399E", "d# c #2B3CA3", "e# c #4556BB", "f# c #4858BC", "g# c #4A5ABE", "h# c #4D5DBF", "i# c #5C69B9", "j# c #939ACD", "k# c #CCCCCC", "l# c #BFC4D1", "m# c #44519C", "n# c #2B3B9B", "o# c #2D3EA5", "p# c #4556B9", "q# c #4A5BBF", "r# c #4B5CBF", "s# c #5060C0", "t# c #5E6BB9", "u# c #969FCE", "v# c #FBFBFB", "w# c #CECFCF", "x# c #C2C3D1", "y# c #5662A3", "z# c #324099", "A# c #2F40A7", "B# c #3344AC", "C# c #4E5EC0", "D# c #6171BB", "E# c #8F98CA", "F# c #E1E1E2", "G# c #BBBCBC", "H# c #D0D0D0", "I# c #C3C6D2", "J# c #636EA7", "K# c #394698", "L# c #3042A9", "M# c #3E4FB4", "N# c #6873BC", "O# c #8890C5", "P# c #EBECEC", "Q# c #E7E8E8", "R# c #B8B9B9", "S# c #B7B8B8", "T# c #C8CAD5", "U# c #6771AC", "V# c #4D5CA8", "W# c #4654AA", "X# c #4150AC", "Y# c #4252AF", "Z# c #4252B0", "`# c #4151B1", " $ c #4252B2", ".$ c #4252B3", "+$ c #4353B4", "@$ c #4454B5", "#$ c #4353B6", "$$ c #4454B7", "%$ c #4656B8", "&$ c #4757B9", "*$ c #4858BA", "=$ c #4A5ABC", "-$ c #4A5ABD", ";$ c #4D5DBE", ">$ c #6370BB", ",$ c #8691C3", "'$ c #D6D5D8", ")$ c #B2B3B3", "!$ c #B8B8B8", "~$ c #D9D9D9", "{$ c #D5D6D7", "]$ c #D0D0D5", "^$ c #D6D7DB", "/$ c #D2D3DD", "($ c #C5C8DC", "_$ c #BDC1DA", ":$ c #B4B9D9", "<$ c #AFB5D8", "[$ c #ACB2D7", "}$ c #A8B0D7", "|$ c #A0A7D5", "1$ c #8D95CC", "2$ c #8891C9", "3$ c #828BC6", "4$ c #7D86C3", "5$ c #7A84C2", "6$ c #7882C0", "7$ c #757FBF", "8$ c #727DBD", "9$ c #727CBD", "0$ c #7A84C4", "a$ c #858DCA", "b$ c #99A1D4", "c$ c #A1A6D2", "d$ c #D0D0D7", "e$ c #C3C4C4", "f$ c #B0B1B1", "g$ c #B2B2B2", "h$ c #D9DAD9", "i$ c #D9D9DA", "j$ c #E0E1E1", "k$ c #DBDCDC", "l$ c #BABABB", "m$ c #DDDDDE", "n$ c #DEDEDD", "o$ c #DBDBDB", "p$ c #D6D7D6", "q$ c #BCDF78", "r$ c #D3D6CF", "s$ c #BFC0BF", "t$ c #B7B7B8", "u$ c #BBBBBB", "v$ c #C8C9C9", "w$ c #BABABA", "x$ c #C0C0C0", "y$ c #C5C5C5", "z$ c #C6C6C7", "A$ c #D6D6D7", "B$ c #C6D89B", "C$ c #BDBDBD", "D$ c #BDBDBE", "E$ c #DCDCDD", "F$ c #5F5E5E", "G$ c #707070", "H$ c #797979", "I$ c #888889", "J$ c #A3A3A4", "K$ c #A4A4A5", "L$ c #B2B2B3", "M$ c #BABABC", "N$ c #BFBFC0", "O$ c #C2C2C3", "P$ c #C7C7C8", "Q$ c #D0D0D1", "R$ c #BEBEBE", "S$ c #D1D1D1", "T$ c #DCDDDD", "U$ c #606061", "V$ c #707275", "W$ c #6E6F71", "X$ c #777778", "Y$ c #808081", "Z$ c #929293", "`$ c #9A9B9D", " % c #9C9C9D", ".% c #A7A8A8", "+% c #A9A9AA", "@% c #ACACAD", "#% c #AAAAAB", "$% c #A6A6A7", "%% c #ABABAB", "&% c #ADADAD", "*% c #AFAFAF", "=% c #454545", "-% c #676868", ";% c #7C7D7D", ">% c #8A8D8D", ",% c #87888A", "'% c #858688", ")% c #8A8A8B", "!% c #909091", "~% c #949495", "{% c #989899", "]% c #9EA0A1", "^% c #A4A5A5", "/% c #AAABAB", "(% c #B0B0B0", "_% c #AFAFB0", ":% c #B1B1B1", "<% c #AEAEAE", "[% c #B3B3B3", "}% c #B7B7B7", "|% c #B6B6B6", "1% c #5D5D5D", "2% c #898989", "3% c #909493", "4% c #9A9A9B", "5% c #A1A2A4", "6% c #AEAEAF", "7% c #ACADAD", "8% c #ABACAC", "9% c #B9B9BA", "0% c #BFBFBF", "a% c #BEBEBF", "b% c #989898", "c% c #A5A5A5", "d% c #C4C5C5", "e% c #C7C8C8", "f% c #CACBCB", " ", " ", " ", " ", " ", " ", " ", " . + @ @ # $ # $ % % % & & * = - . ", " ; > , ' > ) > ! ' ~ { { { ] ^ / ( / / ( ( ( ^ ( ( ( ( ] / = _ = : ", " < ) [ } | 1 2 3 2 2 ) ! ! , 4 ] ^ ( : / / / / / : - = - = - _ * = ( = ", " 5 6 7 8 1 9 0 a b c d e d f g h i j k k l m n o p q r s t u _ + * v w ", " x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ` ( @ * .+ + ", " ..[ +.@.#.$.%.&.*.=.-.;.>.,.'.).!.~.{.].^./.(._.:.<.[.}.|./ / @ . + 1.2. ", " 3.4.5.6.7.8.9.*.0.a.b.c.d.e.f.g.h.i.j.k.l.m.n.:.o.p.q.r.s./ - % * $ t.u.v. ", " 3.4.w.x.y.z.*.A.B.;.c.C.D.E.F.G.H.I.J.K.L.n.M.p.q.N.O.P.Q./ / % % @ 1.R.S. ", " 3.4.T.U.V.7.A.W.-.X.Y.D.Z.`. +H.j..+K.++:.o.p.q.@+#+$+%+&+( / % % @ 1.1.*+1. ", " =+y -+;+>+,+B.'+)+!+e.~+~.{+H.j.]+m.n.M.o.^+/+@+#+(+_+%+:+( ( % <+[+u.*+1.u.= ", " }+y |+1+2+3+4+)+!+5+Z.F.{+H.6+.+++7+8+o.^+N.@+#+(+_+9+0+:+^ ( % <+a+b+c+*+v.% + $ ", " d+| e+f+g+h+i+j+D.~+h.H.j.]+K.k+7+l+m+^+N.@+$+(+_+n+o+p+q+^ ( % <+r+t.c+t.v.$ + @ 1. ", " d+3 s+t+u+X.v+).g.G.w+j.J.K.n.7+l+p.q.N.O.$+x+9+n+o+y+z+A+^ / @ @ B+C+*+*+1.2.D++ E+t. ", " F+3 G+H+I+v+J+K+G.H.L+.+m.n.:.M+p.q.@+#+$+x+9+N+o+O+P+Q+R+( ( $ @ v.u.S+u.*+# $ @ v.R. ", " T+4.U+V+W+X+K+Y+H.j..+++n.M.o.^+/+@+#+Z+x+9+N+`+O+P+ @Q+.@( / # @ a++@u.u.1.$ @ # 1.R. ", " }+4.@@#@$@%@&@{.I..+++7+M.o.^+N.@+#+(+_+9+*@`+=@-@ @;@>@,@/ : 2.@ a+a+u.*+1.# @ # u.*+ ", " 3.4.4.'@)@!@~@{@/.m.7+l+[.^+N.@+$+(+_+n+o+`+=@-@]@;@^@/@(@/ : # % +@a+u.*+2.$ @ # u.R. ", " =+4.[ _@:@<@[@/.K.7+l+p.q.N.O.$+x+_+n+o+y+}@-@]@|@^@1@2@3@/ : @ + a+a++@*+2.D+$ # 1.u. ", " 4@5@[ 6@7@8@9@l._.0@p.q.@+#+$+x+9+N+o+O+P+a@b@|@c@1@d@e@f@( / + . a+1.+@u.$ v.@ 2.1.u. ", " g@< 4.h@i@j@k@_.:.^+/+@+#+Z+x+9+N+`+O+P+ @;@|@c@l@d@m@n@o@^ ( * p@+@u.S+a+[+$ $ # 1.u. ", " q@r@s@t@u@v@w@x@y@N.@+#+(+_+9+*@`+=@P+ @;@z@A@l@d@B@C@D@E@] ( & = +@+@u.1.@ @ $ $ 1.u. ", " F@=+G@H@I@J@K@y@^+@+$+(+_+n+o+`+=@-@]@;@^@1@l@m@B@L@M@N@O@P@( w = a+a++@1.$ @ @ $ 1.u. ", " x Q@R@S@T@U@V@N.$+x+_+n+o+y+}@-@]@|@^@1@l@m@B@L@W@X@Y@Z@P@^ w _ v.a++@+@$ % @ $ v.u. ", " x G@`@ #.#+#@##+x+9+n+o+O+P+-@b@|@c@1@d@m@##$#W@X@%#Y@&#P@^ . - v.r+1.v.$ .+ @ v.u. ", " x 4.*# #=#-#;#(+9+N+`+O+P+a@;@|@c@l@d@m@C@M@W@X@%#>#,#'#P@)#w : !#$ 2.# <+* ~#$ 2.v. ", " {#y ]#^#/#;#(#_+*@`+=@P+ @;@z@A@l@d@B@C@M@W@_#%#>#:#<#[#4 )#w / @ $ $ # <+<+u.$ [+}# ", " r@| |#1#2#3#4#n+`+=@-@ @;@^@1@l@d@B@L@M@X@_#5#6#:#7#8#9#4 P@. ] @ & ~#+ % *+0#t.}# ", " }+| a#b#c#d#9+`+}@-@]@|@^@1@l@m@B@L@W@X@_#e#f#:#g#h#i#j#! P@- ] % + + 2.*+0#t.R. ", " k#| l#m#n#o#`+=@-@]@|@c@1@d@m@##$#W@X@p#e#f#:#q#r#s#t#u#! P@] )#~#* + u.0#v#' ", " w#2 x#y#z#A#y+B#b@|@c@l@d@m@##M@W@X@%#>#f#g#q#h#C#C#D#E#! P@^ F#+ p@@ t.v#P@G# ", " H#) I#J#K#L#B#;@z@A@l@d@M#C@M@W@_#%#>#:#g#q#h#C#C#C#N#O#! 4 ( ] .P#$ R.Q#R#S# ", " |+1 T#U#V#W#X#Y#Y#Z#Z#`# $.$+$@$#$$$%$&$*$=$-$-$-$;$>$,$'$' P@^ .* # . G#)$!$ ", " H#~${$]$^$^$/$($_$:$<$[$}$Z@|$1$2$3$4$5$6$7$8$9$0$a$b$c$d$! , ^ . .% e$f$g$ ", " 4.h$~$2 ! , )#] ] ] ] ] ] )#] ] )#)#P@P@)#)#P@P@P@4 , i$4.4.9 j$P#* k$l$ ", " < @@> m$)#( n$, ! 4 )#P@4 4 , , ' ! ! o$> > ~$~$p$q$r$s$t$u$3.4 P@P@v$ ", " w$x$q@y$z$k#T+[ ~$A$~$, ! ' ! > o$> > ~$p$B$3 C$< x D$E$' o$ ", " F$G$H$I$J$K$L$t$M$N$O$P$d+F+Q$0 4.R$5@S$R$) T$ ", " U$V$W$X$Y$Z$`$ %.%+%+%@%#%$%K$J$J$%%&%*%t$}+o$ ", " =%-%;%>%,%'%)%!%~%{%]%^%/%(%_%:%<%(%[%}%|%}%C$y$5@^ S$ ", " 1%G$2%3%4%5%L$6%7%8%$%8%L$9%C$0%a%y$; x x y$< y ^ @ . ", " b%c%*%C$d%e%f%P$S$2 3 ~$, ] ( - _ _ _ : ( ", " w$; }+5@y ) ~$! P@] ] ^ - ", " ", " ", " ", " ", " ", " ", " ", " ", " "}; ������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/clip.xpm�������������������������������������������������������0000644�0001750�0001750�00000026244�13431646201�015755� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * clip_xpm[] = { "48 48 411 2", " c None", ". c #736C70", "+ c #6F6B6B", "@ c #6A6563", "# c #65605B", "$ c #625C55", "% c #5A554E", "& c #B0B1BA", "* c #A9AEBF", "= c #A29FB8", "- c #AEA2BE", "; c #BEABC8", "> c #C8AFCB", ", c #D0B5CE", "' c #D9BDD5", ") c #DCC1D9", "! c #E0C6DC", "~ c #E4CCE0", "{ c #E5D0E0", "] c #DECFD9", "^ c #C5B9C0", "/ c #7F7471", "( c #9F9BAB", "_ c #9E9FBE", ": c #B2A4C6", "< c #C3ABCA", "[ c #CCB1C9", "} c #B59FAC", "| c #9A8B91", "1 c #E5D5D9", "2 c #E2CCE0", "3 c #625857", "4 c #9291AB", "5 c #AEA5C9", "6 c #B59EB0", "7 c #7C7575", "8 c #494644", "9 c #A898A8", "0 c #776D74", "a c #666669", "b c #9A9ABA", "c c #B9A8C4", "d c #928589", "e c #444240", "f c #918A99", "g c #686163", "h c #727684", "i c #ABA5C7", "j c #BBA6B7", "k c #706B6B", "l c #919195", "m c #A19EA7", "n c #A4A3AB", "o c #9D9CA0", "p c #807179", "q c #45413E", "r c #383834", "s c #554C4B", "t c #898799", "u c #595350", "v c #8F90AC", "w c #C4B2D3", "x c #A39197", "y c #58585D", "z c #67677A", "A c #B9B4D3", "B c #CBC5E0", "C c #D2C9E1", "D c #D8CAE0", "E c #DACEE0", "F c #DBD3E0", "G c #D6CDD8", "H c #A99EA5", "I c #57534E", "J c #73696A", "K c #807D8F", "L c #4B4541", "M c #66666F", "N c #B2ABCF", "O c #CAB3CC", "P c #7A7172", "Q c #4A4B56", "R c #9A90AD", "S c #CCB5CB", "T c #9A8D95", "U c #797174", "V c #605D5E", "W c #504E4E", "X c #4D4B4B", "Y c #565555", "Z c #7C7979", "` c #EBDBE0", " . c #DAC6D2", ".. c #524C48", "+. c #87828F", "@. c #74717A", "#. c #85869D", "$. c #D4C0E5", "%. c #B6A1AD", "&. c #515252", "*. c #595A6B", "=. c #CAB6D6", "-. c #998A91", ";. c #CAAEBC", ">. c #8A7B86", ",. c #5E5757", "'. c #86889F", "). c #5C5655", "!. c #5B5B5F", "~. c #A9A4C3", "{. c #E0C9E6", "]. c #8E8383", "^. c #414448", "/. c #7F7993", "(. c #D4BBD5", "_. c #8F848B", ":. c #8C818F", "<. c #7E7B86", "[. c #7C7987", "}. c #6F6F7C", "|. c #CDC1E3", "1. c #D7C0D0", "2. c #625F5C", "3. c #494C57", "4. c #B6A6C6", "5. c #B5A1AE", "6. c #8B7F86", "7. c #837A85", "8. c #575452", "9. c #8788A0", "0. c #615C58", "a. c #9391A7", "b. c #E4D2EF", "c. c #AD9DA2", "d. c #474749", "e. c #6B697B", "f. c #D5BFDA", "g. c #918794", "h. c #70696D", "i. c #808091", "j. c #7A7984", "k. c #605E63", "l. c #B9B1CC", "m. c #E8D3E8", "n. c #827978", "o. c #42434A", "p. c #9A91AA", "q. c #D2BCCE", "r. c #615A58", "s. c #918B9D", "t. c #585551", "u. c #636063", "v. c #88899E", "w. c #514C49", "x. c #7E7B89", "y. c #DED1EF", "z. c #D3C0C9", "A. c #565453", "B. c #565562", "C. c #D1C1DA", "D. c #837B86", "E. c #898391", "F. c #4D4A48", "G. c #8A8DA6", "H. c #6E676B", "I. c #A4A0B6", "J. c #EEDEF4", "K. c #A49697", "L. c #444448", "M. c #837E91", "N. c #E1CDDF", "O. c #5E5A58", "P. c #968FA4", "Q. c #67625F", "R. c #87899E", "S. c #817D89", "T. c #6C696F", "U. c #D0C7E2", "V. c #E8D6E3", "W. c #6F6867", "X. c #4C4B55", "Y. c #C4B7CD", "Z. c #BFB0B8", "`. c #848291", " + c #847E8A", ".+ c #85859A", "++ c #8B8A9D", "@+ c #8C8895", "#+ c #EADEF7", "$+ c #C7B7BD", "%+ c #4C494A", "&+ c #706C7A", "*+ c #E7D5EA", "=+ c #71717B", "-+ c #9693AB", ";+ c #6A5E5E", ">+ c #665D64", ",+ c #9492AD", "'+ c #928FA3", ")+ c #B3ADC3", "!+ c #FAEDFF", "~+ c #908585", "{+ c #464348", "]+ c #A79FB5", "^+ c #DDCAD7", "/+ c #838499", "(+ c #9F98B0", "_+ c #706468", ":+ c #56525E", "<+ c #8888A4", "[+ c #908793", "}+ c #756E75", "|+ c #DBD4EB", "1+ c #E4D6E0", "2+ c #625A5A", "3+ c #5E5B65", "4+ c #DDD1E5", "5+ c #6C6C72", "6+ c #9D9AB8", "7+ c #A092A3", "8+ c #595356", "9+ c #636475", "0+ c #A39CB7", "a+ c #7D7378", "b+ c #98909E", "c+ c #F2E9FF", "d+ c #BAADB0", "e+ c #4B4648", "f+ c #888394", "g+ c #EBDDEE", "h+ c #868599", "i+ c #B7ADD0", "j+ c #90818D", "k+ c #4E4D53", "l+ c #8684A0", "m+ c #AC9DB4", "n+ c #5A5655", "o+ c #655E5E", "p+ c #C0B8CC", "q+ c #FAEFFD", "r+ c #837876", "s+ c #504B51", "t+ c #C9C0D5", "u+ c #656368", "v+ c #A29FBC", "w+ c #CDB6D4", "x+ c #6C6369", "y+ c #565966", "z+ c #B0A4C7", "A+ c #948790", "B+ c #82797E", "C+ c #E5DDF1", "D+ c #D9CED4", "E+ c #5B5352", "F+ c #716C78", "G+ c #EBE2F3", "H+ c #797986", "I+ c #C6BADB", "J+ c #B19DAC", "K+ c #4F4D52", "L+ c #7D7A91", "M+ c #C4B0CC", "N+ c #615D5F", "O+ c #A89EA9", "P+ c #F6EDFE", "Q+ c #ACA0A0", "R+ c #4E484A", "S+ c #A39EAC", "T+ c #E9DEE9", "U+ c #5C5A5A", "V+ c #9896AC", "W+ c #D6C5E1", "X+ c #857A81", "Y+ c #51515C", "Z+ c #B2A5C5", "`+ c #AC99A8", " @ c #72686A", ".@ c #D2C9D9", "+@ c #EFE6EF", "@@ c #776C6A", "#@ c #615A5F", "$@ c #DDD5E5", "%@ c #B5ABAD", "&@ c #726F79", "*@ c #C1B8D5", "=@ c #C6B4C3", "-@ c #595559", ";@ c #716E80", ">@ c #CDBBD4", ",@ c #6D6868", "'@ c #F4EAFB", ")@ c #DFD3D7", "!@ c #5D5250", "~@ c #90858E", "{@ c #F3E8F4", "]@ c #736C6C", "^@ c #9491A4", "/@ c #E3D3ED", "(@ c #9A8C92", "_@ c #4D4C55", ":@ c #A49AB3", "<@ c #B7A5B2", "[@ c #BEB1B0", "}@ c #A79596", "|@ c #E0CFDE", "1@ c #C4B9C0", "2@ c #6B696E", "3@ c #C0B9D1", "4@ c #DACAD9", "5@ c #6A6367", "6@ c #666473", "7@ c #CEBED5", "8@ c #7B7476", "9@ c #85777A", "0@ c #DAC9D6", "a@ c #88817F", "b@ c #8A8895", "c@ c #DDD2EB", "d@ c #B4A6AC", "e@ c #504D53", "f@ c #928DA0", "g@ c #C9BAC7", "h@ c #AE97A2", "i@ c #746962", "j@ c #686263", "k@ c #B5AFC6", "l@ c #ECDEEF", "m@ c #7E7477", "n@ c #595862", "o@ c #C7BACF", "p@ c #948A8D", "q@ c #8A757C", "r@ c #AB939C", "s@ c #887874", "t@ c #857E89", "u@ c #DCD5EC", "v@ c #C7B8C0", "w@ c #5B565B", "x@ c #837E8E", "y@ c #D1C3D2", "z@ c #BA9AA8", "A@ c #9D898D", "B@ c #5D5952", "C@ c #665F5F", "D@ c #ABA6B7", "E@ c #EBE1F4", "F@ c #968B8D", "G@ c #535058", "H@ c #B2ABBE", "I@ c #ACA3A8", "J@ c #D5B2C3", "K@ c #8B7C7C", "L@ c #4A4845", "M@ c #877D85", "N@ c #D4CEE4", "O@ c #DDD0D9", "P@ c #706C79", "Q@ c #D0C5D3", "R@ c #696363", "S@ c #DFC0D5", "T@ c #7F736D", "U@ c #42403E", "V@ c #69615F", "W@ c #A7A0AF", "X@ c #F2E9FB", "Y@ c #A99C9D", "Z@ c #555056", "`@ c #A5A0B0", " # c #BCB1B9", ".# c #8B797B", "+# c #C9B1BE", "@# c #6E645C", "## c #7C7275", "$# c #D2CADC", "%# c #E7DCE4", "&# c #756B6E", "*# c #625E67", "=# c #CCC5D2", "-# c #777474", ";# c #BBA4AA", "># c #B3A1A7", ",# c #615A53", "'# c #534E4C", ")# c #A0959E", "!# c #EDE3F3", "~# c #C3BAC1", "{# c #58565F", "]# c #8F8B9A", "^# c #C7BFC7", "/# c #D6BEC4", "(# c #918380", "_# c #C7BECE", ":# c #FFF6FF", "<# c #928C98", "[# c #5A5A69", "}# c #C6C0CD", "|# c #8A8285", "1# c #D6BFC3", "2# c #AD9DA0", "3# c #EADDE4", "4# c #74727F", "5# c #7B7A8A", "6# c #C6BEC6", "7# c #4E4C4A", "8# c #B8A6A8", "9# c #9C9399", "0# c #CBC6D3", "a# c #9D9595", "b# c #343232", "c# c #D2C5CC", "d# c #665C5B", " ", " ", " ", " ", " ", " ", " ", " . + @ # $ % ", " & * = - ; > , ' ) ! ~ { ] ^ / ", " ( _ : < [ } | 1 2 3 ", " 4 5 6 7 8 9 0 ", " a b c d e f g ", " h i j k l m n o p q r s t u ", " v w x y z A B C D E F G H I J K L ", " M N O P Q R S T U V W X Y Z ` ... +.@. ", " #.$.%.&.*.=.-. ;.>. ,.'.). ", " !.~.{.].^./.(. _.:. <.[. ", " }.|.1.2.3.4.5. 6.7. 8.9.0. ", " a.b.c.d.e.f. g.h. i.j. ", " k.l.m.n.o.p.q. r.s.t. u.v.w. ", " x.y.z.A.B.C. D.E. F.G.H. ", " I.J.K.L.M.N. O.P.Q. R.S. ", " T.U.V.W.X.Y.Z. `. + .+++ ", " @+#+$+%+&+*+ =+-+;+>+,+'+ ", " )+!+~+{+]+^+ /+(+_+:+<+[+ ", " }+|+1+2+3+4+^+ 5+6+7+8+9+0+a+ ", " b+c+d+e+f+g+ h+i+j+k+l+m+n+ ", " o+p+q+r+s+t+g+ u+v+w+x+y+z+A+ ", " B+C+D+E+F+G+ H+I+J+K+L+M+N+ ", " O+P+Q+R+S+T+ U+V+W+X+Y+Z+`+ ", " @.@+@@@#@$@%@ &@*@=@-@;@>@,@ ", "'@)@!@~@{@]@ ^@/@(@_@:@<@ ", "[@}@|@1@ 2@3@4@5@6@7@8@ ", "9@0@a@ b@c@d@e@f@g@ ", " h@i@ j@k@l@m@n@o@p@ ", " q@r@s@ t@u@v@w@x@y@ ", " z@A@B@ C@D@E@F@G@H@I@ ", " J@K@L@ M@N@O@g P@Q@R@ ", " S@T@U@ V@W@X@Y@Z@`@ # ", " .#+#@# ##$#%#&#*#=#-# ", " ;#>#,# '#)#!#~#{#]#^# ", " /#(#T@_#:#<#[#}#|# ", " 1#2#3#4#5#6#7# ", " 8#9#0#a#b# ", " c#d# ", " ", " ", " "}; ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/xv.xpm���������������������������������������������������������0000644�0001750�0001750�00000020523�13431646201�015455� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "48 48 167 2", " c #410341034103", ". c #FFFFFFFFFFFF", "X c #965886178617", "o c #9E7986178617", "O c #965882078617", "+ c #9E7982078617", "@ c #96587DF779E7", "# c #965879E779E7", "$ c #8E3879E779E7", "% c #8E3875D671C6", "& c #861775D671C6", "* c #79E76DB669A6", "= c #71C669A669A6", "- c #71C665956185", "; c #69A665956185", ": c #69A661856185", "> c #69A65D755965", ", c #71C661856185", "< c #79E765956185", "1 c #79E769A669A6", "2 c #71C65D755965", "3 c #79E761856185", "4 c #79E771C671C6", "5 c #618561856185", "6 c #61855D755965", "7 c #618559655965", "8 c #69A659655965", "9 c #71C659655965", "0 c #861771C671C6", "q c #596559655965", "w c #596551445144", "e c #618555555144", "r c #69A655555965", "t c #9E7979E779E7", "y c #9E798A288E38", "u c #A69982078617", "i c #861769A669A6", "p c #A69986178617", "a c #9E797DF779E7", "s c #861765956185", "d c #86176DB669A6", "f c #A6998A288E38", "g c #8E386DB669A6", "h c #8E3871C671C6", "j c #A6997DF779E7", "k c #965875D671C6", "l c #618551445144", "z c #AEBA8A288E38", "x c #AEBA86178617", "c c #51444D344924", "v c #514449244924", "b c #AEBA8E388E38", "n c #A69979E779E7", "m c #492449244924", "M c #514451445144", "N c #596555555144", "B c #9E7975D671C6", "V c #514455555144", "C c #71C66DB669A6", "Z c #8E3869A669A6", "A c #B6DA92489658", "S c #B6DA8E388E38", "D c #B6DA8A288E38", "F c #AEBA82078617", "G c #69A669A669A6", "H c #965871C671C6", "J c #71C671C671C6", "K c #AEBA79E779E7", "L c #8E387DF779E7", "P c #AEBA7DF779E7", "I c #861779E779E7", "U c #79E779E779E7", "Y c #86177DF779E7", "T c #BEFB96589658", "R c #BEFB8E388E38", "E c #B6DA86178617", "W c #A69975D671C6", "Q c #8E3882078617", "! c #96588A288E38", "~ c #9E798E388E38", "^ c #AEBA9A699E79", "/ c #B6DA9A699658", "( c #BEFB9E799E79", ") c #B6DA9E799E79", "_ c #AEBA96589658", "` c #B6DAA699A699", "' c #B6DAAAAAAEBA", "] c #A6999A699E79", "[ c #A6998E388E38", "{ c #A69992489658", "} c #B6DA82078617", "| c #D75CBAEABEFB", " . c #E79DDF7DDF7D", ".. c #E79DDB6CDF7D", "X. c #DF7DDB6CDF7D", "o. c #C71B9E799E79", "O. c #EFBEDB6CDF7D", "+. c #E79DE38DDF7D", "@. c #CF3CBAEABEFB", "#. c #BEFB8A288E38", "$. c #BEFB86178617", "%. c #B6DA7DF779E7", "&. c #B6DA79E779E7", "*. c #86175D755965", "=. c #C71BB2CAB6DA", "-. c #DF7DD75CD75C", ";. c #69A64D344924", ":. c #D75CC71BC71B", ">. c #69A655555144", ",. c #DF7DDB6CD75C", "<. c #C71BBAEABEFB", "1. c #AEBAA289A699", "2. c #B6DAA289A699", "3. c #965869A669A6", "4. c #DF7DCB2BC71B", "5. c #71C655555144", "6. c #B6DA96589658", "7. c #BEFBA699A699", "8. c #EFBEE79DE79D", "9. c #C71B92489658", "0. c #C71B8E388E38", "q. c #DF7DCB2BCF3C", "w. c #DF7DC30BBEFB", "e. c #EFBEE38DDF7D", "r. c #C71BA289A699", "t. c #BEFBAAAAAEBA", "y. c #BEFB82078617", "u. c #CF3CA699A699", "i. c #AEBA75D671C6", "p. c #DF7DC30BC71B", "a. c #EFBEEBADE79D", "s. c #C71BAAAAAEBA", "d. c #CF3CAAAAAEBA", "f. c #C71B96589658", "g. c #79E755555965", "h. c #C71B9A699E79", "j. c #DF7DC71BC71B", "k. c #CF3CAEBAAEBA", "l. c #CF3CB2CAB6DA", "z. c #BEFBB2CAB6DA", "x. c #C71B86178617", "c. c #861761856185", "v. c #D75CCB2BCF3C", "b. c #D75CB2CAB6DA", "n. c #D75CB6DAB6DA", "m. c #C71B8A288E38", "M. c #BEFB7DF779E7", "N. c #CF3C9A699E79", "B. c #E79DD34CD75C", "V. c #CF3C9E799E79", "C. c #DF7DBAEAB6DA", "Z. c #CF3C92489658", "A. c #E79DD75CD75C", "S. c #8E3865956185", "D. c #D75CAEBAAEBA", "F. c #DF7DBAEABEFB", "G. c #CF3C96589658", "H. c #CF3CA289A699", "J. c #DF7DBEFBBEFB", "K. c #D75C9E799E79", "L. c #D75C96589658", "P. c #79E759655965", "I. c #D75C9A699E79", "U. c #CF3C8E388E38", "Y. c #D75CA289A699", "T. c #D75CAAAAAEBA", "R. c #D75C9A699658", " . ", " X X o O + + + @ # # # $ % & * = - ; : ; : : : : : : : : > , , - < 1 < , , , , , 2 , 2 2 2 3 . ", " X o o + + + + @ # # $ % & 4 = ; : 5 6 6 6 6 6 6 7 7 7 7 > 7 7 7 7 7 7 8 8 8 8 2 9 8 8 8 8 8 . ", " o o o + + + @ @ # # $ & 0 * - : 6 6 6 q q 7 q q w q w e 7 e w w w w e e r 8 > 9 9 8 8 8 8 r . ", " o o o o + + + @ t # # & * = - ; 6 6 q q q q q w q w q q w 7 7 7 > > 2 2 2 2 3 3 3 2 2 2 2 2 . ", " y o o + o o u @ t # t & 1 = - : 6 q q q q q w q q q w w w e 8 > 2 , , 3 3 , 3 i i < 3 3 3 < . ", " o p p p p p u a @ # # & 1 = - ; : 6 6 7 7 6 6 6 7 6 > 6 8 > 8 > , , 3 3 < s s s s s i s < d . ", " f o f p p u p a t # $ 0 * = - : : : > 6 > , , > > > 2 2 > > > 2 , , 3 3 s i s 3 < i g i i h . ", " y f p p p u u a t # % & d 1 - : : : : > : : : > > > > > > 2 > 2 , , , 2 3 s s 3 < i d i d h . ", " f p p p u u j a t # % % 0 * - : : : > > > , > > > 8 > 8 > > > 2 , 3 2 9 2 3 3 3 < i i d d h . ", " f f p p u u j a t # % % 0 d - : : : > > : > > > 8 8 8 8 8 8 8 8 2 2 9 9 2 3 3 < i i d d 0 h . ", " f f p p u u j j j t k % 0 d - : - - : 7 > > > 8 8 8 7 8 8 e w l e r 8 8 8 2 3 1 i d d h h % . ", " f z p p p u u u j t k % h * - : , - > 7 7 > 8 7 e e e e e w w w l l r 8 8 8 , 1 i d d 0 h % . ", " z z z z x x u j j t # h d 1 - : , , > 8 7 e e w w w c w w c c v v v w w w e > > , 1 * d 0 & . ", " z b b z z x x j n t k 0 1 < - , > > > > 7 w w c c v m v v v v v m m m c w e 7 7 : - 1 * * 0 . ", " b z z z x x x j n t k 0 1 , , > > 7 8 7 e w c c c w w e r e l w m m c M M N N q 6 : ; = = 4 . ", " b b z x x x x j n B k d , : 2 > 8 7 e e w M c c c l r 2 3 2 9 r c c M w V M V N q 6 5 ; = C . ", " b b z z z x x n t k % d 1 - , : 8 7 e e w c c c w e 2 < Z s 3 8 w w 7 > 7 V q : ; 5 5 ; = C . ", " A S S D D D F n # % d d d d < , > 7 e w w c c c w 8 3 g B g i , 7 e - d : V ; 0 0 ; 5 G G C . ", " A S S S D x F t k h d d h d < 3 > 8 e w w c c w w 8 3 g B H g < 7 7 < 0 : q = 0 & C C C C J . ", " A S S S D u K k h 0 d d h d d 1 , 8 8 8 l w w w l 8 2 i k k k i 7 q > - : 5 ; * 4 & L 4 J J . ", " A S S S D P n k h g d g h g d i 3 2 2 2 r w w l l r 9 i H k k 0 > 6 6 : ; - ; = 4 L X I U J . ", " A A S S D P n k k k k k k h h g i < i d s , 2 9 9 9 2 < 1 i d d 1 = = = * * 4 C 4 L O I U Y . ", " T A A R D P n t # B B B k k h g g i H B H g i 3 3 , , , , , - 1 0 % 0 0 0 & 4 J 4 L L I Y Y . ", " T A D E F K n n t W t k k % H H h g H B k H h g g i i i d d d 0 % % % & $ $ I I $ Q O Q Q ! . ", " T R E P n n n n K n B k h h k k H g H B B B B t t k h % k % h % % $ $ $ $ L L O O X ! ! ~ ~ . ", " A R E P K K K K K n B b ^ / / / ^ ^ B B u ( ( ) ) ) ) ) ) ) ) ^ _ O @ O + ` ` ` ' ' ] [ { { . ", " A R D } P K K K K K K | .........X.Z n o.O. . . . . . . . .+.+.@.+ f y [ +.+.+.+.+.` { ^ ^ . ", " R A #.$.} P K P %.K &.K *.=.-.-.$ ;.;.K P n :.-.3 >.>.O ,.-.<.> 2 d { b { ^ 1.,.1.- - y ) 2.. ", "m A R R R #.} %.%.%.%.&.&.&.o.-.-.=.3.K P F 4.+.o 5.F D _ .,.,.i A A 6.6./ 7.8.+.0 O 7.2.2.7.. ", " A 9.9.9.0.$.$.%.%.%.%.&.&.&.q.-.-.k P %.w.e.p 5.W D D z +.,.,.2 6./ / ( ( :.8.] 1 ) r.7.7.t.. ", "m 9.9.0.#.$.y.} %.&.&.%.%.&.%.u.-.-.<.i.p.8.f 5.t D #.R S ..,.,.y T ( ( o.r.a.-.1 b r.s.s.s.d.. ", " 9.f.0.$.$.y.y.%.K &.%.&.&.&.%...-.-.6.e.=.g.n D D R R A 4.X.X.y x h.o.r.j.8.^ h d.d.d.k.l.l.. ", " 9.f.0.#.$.$.y.%.%.&.y.y.&.&.%.l.-.-.-.| g.Z #.#.R R A A w. .,.z.z o.o.r.a.-.1 b d.d.k.k.k.l.. ", " 9.9.0.0.#.$.y.&.%.y.x.y.y.%.P z ..-.-.c.Z #.0.R R A A T l.O. .z.# o.r.v.8.~ & s.s.k.k.d.k.b.. ", " 9.f.0.0.#.x.x.y.y.y.x.y.y.&.} r.e.X.-.{ $.0.0.9.A A / 9.d.+.,.v.# r.l.a.v.* ^ s.d.k.l.b.l.n.. ", " 9.f.9.0.0.m.m.x.x.y.M.M.&.$.N.8.B.-.-.:.n 9.9.9.f.9.( h.V.8.X. .d r...8.X # d.k.k.l.l.n.n.C.. ", " f.f.Z.0.0.0.m.x.x.M.x.y.y.0.O.A.S.@.X.X.f 9.9.f.f.f.h.h.V.O.X.X.O l.a.v.d ( k.D.l.l.b.n.C.F.. ", " N.G.f.Z.Z.m.x.x.&.x.x.x.0.A.e.t *.u...X.@.F f.f.N.N.N.V.H.B. .X.b -.8.X @ l.D.b.b.n.n.C.J.J.. ", " K.G.G.L.Z.m.x.&.&.x.m.0.A.e.p P.} 0.-.X.X.p f.N.N.V.V.V.H.j.+. .=.8.=.d r.b.b.n.n.n.C.F.J.J.. ", " K.I.G.Z.U.x.x.y.y.$.x.j.e.o P.K 0.0.n.X.X.=.R N.V.V.V.H.u.F.+. . .+.# b D.l.b.n.n.F.F.J.J.J.. ", " Y.K.L.U.U.m.x.y.y.y.j.e.=.9 n 0.0.9.9.+.X.X.u V.V.V.H.u.u.n.8. . .' h d.l.l.n.n.C.J.J.J.p.w.. ", " Y.I.L.L.Z.U.m.x.y.$.8...-...T.9.9.q.8.8.X.X.X.8.Y.H.u.u.u.T.8. . .# b b.n.n.n.C.C.J.J.J.p.p.. ", " K.R.R.R.L.U.m.$.$.$.T.+ + o Z P f.T.6.f f [ b [ i u.u.u.T.T.p.] y h D.n.n.n.C.C.J.J.J.p.p.w.. ", " K.L.L.L.Z.U.0.#.$.#.0.K j P P R f.f.R D D S S S A u.u.T.T.D.D.( ( u.n.n.F.C.C.J.J.p.p.p.j.j.. ", " K.Z.Z.U.U.U.U.m.#.#.#.R S A 9.f.f.h.N.V.V.H.H.u.u.u.T.D.D.D.D.b.b.n.n.n.F.J.J.J.J.p.p.j.j.j.. ", " K.Z.Z.U.U.Z.Z.0.0.0.R R S A T f.h.h.h.V.H.H.u.u.T.T.T.D.D.b.b.b.n.n.F.F.F.J.J.p.p.w.p.j.j.j.. ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . "}; �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/staroffice2.xpm������������������������������������������������0000644�0001750�0001750�00000022170�13431646201�017227� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "48 48 204 2", " c None", ". c #000000000000", "X c #000004100000", "o c #28A218611040", "O c #28A21C711040", "+ c #18610C300820", "@ c #082004100000", "# c #208114511040", "$ c #492430C22081", "% c #965875D64924", "& c #514434D32081", "* c #B6DA86175144", "= c #71C6555530C2", "- c #104008200820", "; c #30C224921861", ": c #38E324921861", "> c #514438E328A2", ", c #49242CB21861", "< c #9E7975D64924", "1 c #D75CA6996185", "2 c #30C220811861", "3 c #6185492430C2", "4 c #71C6596538E3", "5 c #596538E32081", "6 c #AEBA86175144", "7 c #AEBA7DF74924", "8 c #59653CF328A2", "9 c #41032CB21861", "0 c #5965410328A2", "q c #410324921861", "w c #79E75D7538E3", "e c #30C218611040", "r c #28A214511040", "t c #082008200000", "y c #38E328A21861", "u c #8617618538E3", "i c #A69982075144", "p c #69A6555530C2", "a c #CF3CA28969A6", "s c #9E7979E74924", "d c #492428A21861", "f c #BEFB92485965", "g c #DF7DAEBA71C6", "h c #38E320811040", "j c #DF7DB2CA71C6", "k c #69A64D3428A2", "l c #D75CAAAA69A6", "z c #EFBEC30B79E7", "x c #186114510820", "c c #30C21C711040", "v c #861765954103", "b c #410328A21861", "n c #6185451428A2", "m c #EFBEC71B8617", "M c #A69979E74924", "N c #BEFB96586185", "B c #CF3C9E796185", "V c #8E386DB64924", "C c #9E7971C64924", "Z c #965871C64103", "A c #B6DA8A285144", "S c #EFBEBEFB79E7", "D c #8E38659538E3", "F c #30C220811040", "G c #71C6555538E3", "H c #79E75D754103", "J c #EFBEC30B8617", "K c #EFBEBAEA71C6", "L c #DF7DAAAA69A6", "P c #965869A64103", "I c #5965451430C2", "U c #492434D32081", "Y c #D75CA69969A6", "T c #A69986175965", "R c #E79DAAAA6185", "E c #D75CA2896185", "W c #49242CB22081", "Q c #8E3865954103", "! c #EFBEB6DA69A6", "~ c #59653CF32081", "^ c #20810C300820", "/ c #96586DB64103", "( c #EFBEB6DA71C6", ") c #69A6492428A2", "_ c #492438E338E3", "` c #CF3C9A695965", "' c #69A6492430C2", "] c #492438E330C2", "[ c #69A65D7571C6", "{ c #E79DB6DA71C6", "} c #410330C21861", "| c #71C64D342081", " . c #9658618530C2", ".. c #61854D3430C2", "X. c #9E7979E75144", "o. c #51443CF328A2", "O. c #492434D330C2", "+. c #E79DBAEA71C6", "@. c #86175D7538E3", "#. c #A69969A630C2", "$. c #C71B9A696185", "%. c #71C6618571C6", "&. c #69A64D3430C2", "*. c #DF7DA6996185", "=. c #96586DB64924", "-. c #51443CF338E3", ";. c #C71B9A695965", ":. c #E79DB2CA69A6", ">. c #DF7DAAAA6185", ",. c #8E38618530C2", "<. c #49243CF328A2", "1. c #51443CF34103", "2. c #69A655555144", "3. c #5965451428A2", "4. c #596549244924", "5. c #49243CF34103", "6. c #79E7555530C2", "7. c #79E7596530C2", "8. c #E79DC30B8617", "9. c #D75CAAAA71C6", "0. c #492438E32081", "q. c #514445144103", "w. c #D75C9A695965", "e. c #71C64D3430C2", "r. c #CF3CAAAA71C6", "t. c #EFBECB2B8617", "y. c #B6DA96586185", "u. c #69A65D756185", "i. c #EFBEBEFB71C6", "p. c #69A6555538E3", "a. c #DF7DB6DA79E7", "s. c #D75CB2CA79E7", "d. c #9E7982075144", "f. c #DF7DBAEA8617", "g. c #861769A64924", "h. c #69A659654103", "j. c #D75CB2CA71C6", "k. c #492434D328A2", "l. c #AEBA82075144", "z. c #861759654103", "x. c #E79DC30B8E38", "c. c #71C65D754103", "v. c #AEBA92486185", "b. c #8E3875D65144", "n. c #79E761854103", "m. c #79E76DB671C6", "M. c #492438E328A2", "N. c #C71B9E796185", "B. c #8E3871C64924", "V. c #EFBECB2B8E38", "C. c #B6DA8E386185", "Z. c #38E328A22081", "A. c #71C665956185", "S. c #B6DA8A285965", "D. c #AEBA86175965", "F. c #EFBECF3C9658", "G. c #A6998A285965", "H. c #C71BA69971C6", "J. c #5965492430C2", "K. c #8617555538E3", "L. c #CF3CAEBA79E7", "P. c #965879E75965", "I. c #9E7986176185", "U. c #C71B618538E3", "Y. c #C71B9E799658", "T. c #9658820771C6", "R. c #9E796DB64103", "E. c #A6998A286185", "W. c #69A6514438E3", "Q. c #5144410330C2", "!. c #410330C22081", "~. c #A699492428A2", "^. c #BEFB965869A6", "/. c #E79DBAEA79E7", "(. c #5144410328A2", "). c #69A655554103", "_. c #96587DF771C6", "`. c #618555556185", "'. c #410338E338E3", "]. c #AEBA924869A6", "[. c #8E383CF32081", "{. c #C71B6DB65965", "}. c #A6999A699E79", "|. c #AEBA8E385965", " X c #514445144924", ".X c #28A220811861", "XX c #86176DB65144", "oX c #BEFB9E7971C6", "OX c #6185492438E3", "+X c #61854D3438E3", "@X c #A69961854103", "#X c #C71B555528A2", "$X c #79E779E78617", "%X c #69A6618569A6", "&X c #8E386DB65144", "*X c #492441034103", "=X c #28A21C711861", "-X c #186110400820", ";X c #618551445965", ":X c #38E32CB228A2", ">X c #79E769A64924", ",X c #69A6514430C2", "<X c #38E330C22081", "1X c #28A224921040", " . X o O + @ . . . . . . . ", " . . # $ % & * = - . . . . . . . ", " . . ; : > , < 1 * 2 . . . . . . . . ", " . . ; 3 4 5 6 7 7 8 - . . . . . . ", " . . 9 = 0 q w e r $ = t . . . . . . ", " . . y u $ 5 $ i p i a e - . . . . . . ", " . . @ : s q d & f g p O e : . . . . . . ", " . . @ h w h 5 , j = # e k 0 - . . . . . . ", " . . O e s : & : * 0 , l z p 9 . . . . . . ", " . . x c v b n n m a M l 9 r 2 + . . . . . . ", " . . O : v , , , N B 6 : o 2 n $ . . . . . . ", " . . y $ V $ 8 k m 1 C , Z l z A - . . . . . . ", " . . y > 8 $ & 8 N A * k j z S D F X . . . . . ", " . . ; G H 5 8 & J K L A P a 3 e & . . . . . . . ", " . . @ d I , U , Y B * < 5 b b & & o . . . . . . ", " . . . 8 T n 8 d J K R E E 0 8 0 8 y . . . . . . ", " . . . # W , d Q J S K ! 1 q & 8 ~ n . . . . . . . . ", " . . . . ^ h : / ( ! ! E 8 5 n ) n k @ . . . . . . . . ", " . . . . t c _ U g S ( ` , n 3 3 ' ' 2 + $ 2 . . . . . . ", " . . . # / ] [ < K K K { f P n 8 } ; | .& ... . . . . . . ", " . . X.h o.O.W { ( ! ! ( +.{ M b 9 @.#.y | b . . . . . . . . . . ", ". . 2 $.> _ %.&.z K ! *.R R ` k b = =.} : | - o + @ . . . . . . . . . . . ", ". O , f b O.-.;.:.>.( ( ! R ,.$ & Q b c @.8 } &.p w &.<.y x X . . . . . . . . . ", ". ..U c 1.2.< K D +.K ( >.D & , w 8 e = v ; U &.3.0 0 > y : X.0 O @ . . . . . . . . ", "t & l ; 4.5.6 :.6.+.1 * 7.0 & 3.> : k 3 $ 9 > 3.3.3.> o.O 4 8.9.2 y 0.O . . . . . . . . ", ". G i : q.U $.! >.w.` e.8 0 e.U e 3 & } $ v n 0 o.o.8 U y r.t.y.o o v o.; + . . . . . . . ", ". &.& h u._ u i.! :./ e.' = p.O & 3 $ 5 Z a.y.0 & 9 o.&.o.s.m d.o : f.g.o I h.- . . . . . . ", "@ 8 j.& k._ 7.* +.L l.e.e.=.: 9 z.& 0 / +.g x.v 9 G x.a.4 X.c.p o v.a.$ O b.y.; y . . . . . . ", ". n.u 0 2.m.-.M.N.! M ' 6.9 y v n 5 6.j i.{ 8.f.$.9.t.8.B.V.V r...C.3 o o.v.Z.y y.v X . . . . . ", ". 0 e e W o.m.A.;.i.S.$ 8 c &.e.) ) D.t.z L m F.t.m t.t.D.V.D.V.G.V.X.d.X.x.v h D.H.... . . . . ", "t &.$.< e : J.2.A.d.v O ; & &.= 6.K.N.t.m S z t.F.m t.t.r.x.f.H.a.L.x.P.v.g...c.I.G V # . . . . ", "e 9 & p 8 # 6.U.Y.T.} o , w z.C R.9.g t.m z z t.V.a.m V.a E.T c.n.o.W.Q.-.M.o.!.!.y c 2 . . . . ", "x - ; 4 u : g ~.~.W.2 0 ^.a./.g /.+.g a.A z m z G.o.B.(.O O <.!.o.Q.).).] M.; $ $ g.o.h.X . . . ", ". . . @ n.9 p p } y 8 _.).a.S S z z 7 k a.z C.0 `.'.<.y 3.$ 3.U M.o.k.).o.E.4 ].(.k.r # X . . . ", ". . . . . . . . - } [.{.}.h...|.z z S /.z n. X5._ .XXXy $ b y ..$ oXOXE.+X$ O o o x + X . . . . ", ". . . . . . . . . } @X#Xz.u.$XO ^.&.a.p 0 O.%XO.X.y - x J.E.J.&Xy y y ; O - t . . . . . . . . . ", ". . . . . . . . . t 9.s 9 q.4.*X.X'.; *X%XZ.=Xx O @ . . x -X-X# + t X . . . . . . . . . . . . . ", ". . . . . . . . . . } : # ; Q.%XZ.;X'.:X:XOXD.n.>X. . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . - ..4 <.2 O y y O 2 o.F y p 3 . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . x 3 3 j.o ,X9.p 4 i v.B.n.x . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . - o.y.o (.U p 3 (.x - @ X . . . . . . . . . . . . . . . . . . . . . . ", " . . . . $ <.<Xx x @ . . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . o 1X. . . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . . . . ", " . . . . . . . . . . . . . . . ", " . . . . . . . . . . "}; ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/GNUstep.xpm����������������������������������������������������0000644�0001750�0001750�00000017707�13431646201�016357� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * GNUstep_xpm[] = { "48 48 205 2", " c None", ". c #3F3F3F", "+ c #3E3E3E", "@ c #3C3C3C", "# c #393939", "$ c #353535", "% c #333333", "& c #313131", "* c #414141", "= c #3D3D3D", "- c #323232", "; c #292929", "> c #212121", ", c #1A1A1A", "' c #161616", ") c #131313", "! c #101010", "~ c #1D1D1D", "{ c #121212", "] c #0A0A0A", "^ c #050505", "/ c #030303", "( c #020202", "_ c #010101", ": c #404040", "< c #373737", "[ c #282828", "} c #0C0C0C", "| c #040404", "1 c #000000", "2 c #2E2E2E", "3 c #0D0D0D", "4 c #272727", "5 c #151515", "6 c #060606", "7 c #141414", "8 c #262626", "9 c #242424", "0 c #0F0F0F", "a c #090909", "b c #080808", "c c #070707", "d c #171717", "e c #3B3B3B", "f c #444444", "g c #222222", "h c #B9B9B9", "i c #AAAAAA", "j c #A9A9A9", "k c #A8A8A8", "l c #A6A6A6", "m c #A5A5A5", "n c #9B9B9B", "o c #8E8E8E", "p c #9A9A9A", "q c #232323", "r c #0B0B0B", "s c #FFFFFF", "t c #EEEEEE", "u c #EDEDED", "v c #ECECEC", "w c #EAEAEA", "x c #E7E7E7", "y c #E4E4E4", "z c #D7D7D7", "A c #C0C0C0", "B c #ACACAC", "C c #828282", "D c #FDFDFD", "E c #E8E8E8", "F c #E5E5E5", "G c #E2E2E2", "H c #E1E1E1", "I c #E0E0E0", "J c #DCDCDC", "K c #CECECE", "L c #B7B7B7", "M c #A4A4A4", "N c #5D5D5D", "O c #FCFCFC", "P c #E6E6E6", "Q c #DDDDDD", "R c #D8D8D8", "S c #C5C5C5", "T c #AFAFAF", "U c #202020", "V c #363636", "W c #FAFAFA", "X c #E3E3E3", "Y c #DEDEDE", "Z c #DBDBDB", "` c #DADADA", " . c #D9D9D9", ".. c #D1D1D1", "+. c #BBBBBB", "@. c #747474", "#. c #F8F8F8", "$. c #DFDFDF", "%. c #D6D6D6", "&. c #D5D5D5", "*. c #C7C7C7", "=. c #B0B0B0", "-. c #979797", ";. c #F6F6F6", ">. c #D4D4D4", ",. c #D2D2D2", "'. c #A7A7A7", "). c #606060", "!. c #F4F4F4", "~. c #D3D3D3", "{. c #C3C3C3", "]. c #ABABAB", "^. c #929292", "/. c #1B1B1B", "(. c #3A3A3A", "_. c #1E1E1E", ":. c #F2F2F2", "<. c #CDCDCD", "[. c #C8C8C8", "}. c #F0F0F0", "|. c #CCCCCC", "1. c #C9C9C9", "2. c #A3A3A3", "3. c #696969", "4. c #CFCFCF", "5. c #CBCBCB", "6. c #BDBDBD", "7. c #CACACA", "8. c #C6C6C6", "9. c #BFBFBF", "0. c #A0A0A0", "a. c #1C1C1C", "b. c #C4C4C4", "c. c #424242", "d. c #C2C2C2", "e. c #AEAEAE", "f. c #C1C1C1", "g. c #BEBEBE", "h. c #969696", "i. c #717171", "j. c #303030", "k. c #1F1F1F", "l. c #BCBCBC", "m. c #737373", "n. c #B8B8B8", "o. c #B6B6B6", "p. c #B4B4B4", "q. c #B3B3B3", "r. c #B1B1B1", "s. c #ADADAD", "t. c #EBEBEB", "u. c #6F6F6F", "v. c #D0D0D0", "w. c #919191", "x. c #595959", "y. c #909090", "z. c #949494", "A. c #868686", "B. c #BABABA", "C. c #5F5F5F", "D. c #B2B2B2", "E. c #808080", "F. c #191919", "G. c #8C8C8C", "H. c #535353", "I. c #7D7D7D", "J. c #2B2B2B", "K. c #989898", "L. c #878787", "M. c #2D2D2D", "N. c #9D9D9D", "O. c #8B8B8B", "P. c #7B7B7B", "Q. c #0E0E0E", "R. c #B5B5B5", "S. c #A1A1A1", "T. c #515151", "U. c #383838", "V. c #858585", "W. c #6A6A6A", "X. c #585858", "Y. c #2F2F2F", "Z. c #939393", "`. c #8A8A8A", " + c #6C6C6C", ".+ c #888888", "++ c #898989", "@+ c #9E9E9E", "#+ c #6D6D6D", "$+ c #181818", "%+ c #8F8F8F", "&+ c #7F7F7F", "*+ c #6E6E6E", "=+ c #7A7A7A", "-+ c #555555", ";+ c #7C7C7C", ">+ c #8D8D8D", ",+ c #636363", "'+ c #252525", ")+ c #6B6B6B", "!+ c #454545", "~+ c #787878", "{+ c #9C9C9C", "]+ c #9F9F9F", "^+ c #2A2A2A", " . . . . . . ", " . + @ # $ % & & % $ # @ + . ", " * = # - ; > , ' ) ! ! ) ' , > ; - # = * ", " * = $ ; ~ { ] ^ / ( _ _ _ _ ( / ^ ] { ~ ; $ = * ", " . : < [ , } | _ 1 1 1 1 1 1 1 1 1 1 1 1 _ | } , [ < : . ", " : = 2 ~ 3 ( 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ( 3 ~ 2 = : ", " : # 4 5 6 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ^ 7 8 # . ", " : < 9 0 ( 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 a b b c ] d ; e f ", " : < g } _ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 c h i j k l l m n o p c 1 1 1 1 1 ", " : # q r 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 b s t u v w x y z A B C 1 _ 1 1 1 ", " . = 4 0 _ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 a D E x F G H I J K L M N 1 1 1 1 ", " : 2 5 ( 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 b O P F G H I Q J R S T n U 1 1 1 ", " * V ~ 6 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 b W y X H I Y Z ` ...+.l @._ 1 1 ", " = [ 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 b #.G H $.Y J ` R %.&.*.=.-.& 1 1 ", " * $ , ( 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 b ;.I $.Y J .R %.>.,.K h '.).c 1 ", " = ; 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 a !.$.Y J .R %.>.~...K {.].^./.1 ", " (._.| 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 b :.Q J ` R %.&.,...K <.[.=.k V _ ", " . - { _ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 a }.Z ` R %.&.~...K <.|.1.h 2.3.6 ", " + ; ] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 b t .R %.&.~...4.<.5.1.*.6.M ^.b ", " @ > ^ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 b v z %.&.~...4.<.5.7.*.8.9.k 0.a.", " # , / 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 b w %.&.~...4.<.5.7.[.S b.9.].p c.", ". $ ' ( 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 b E >.~...4.<.|.7.[.S b.d.9.e.-.N ", ". % ) _ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 6 P ,...4.<.|.1.[.8.b.d.f.g.T h.i.", ". j.! 1 1 1 1 1 1 1 1 1 1 1 1 1 > g g g g > > > U U U U k.k._.8 G ..4.<.5.1.[.8.b.d.f.9.l.T -.m.", ". j.! 1 1 1 1 1 1 1 1 1 1 1 1 1 +.d.9.g.l.+.h n.o.p.q.r.=.e.s.s.>.4.K 5.7.[.8.b.d.f.9.6.+.s.h.i.", ". % ) _ 1 1 1 1 1 1 1 1 1 1 1 1 P }.v t.E x F X H $.Q Z .R &.>.4.K |.7.[.8.b.d.f.9.l.+.n.j ^.u.", ". $ 5 ( 1 1 1 1 1 1 1 1 1 1 1 1 G t.E P y G H Y J ` .z &.~...v.K |.7.[.8.b.{.f.9.6.+.h o.l w.x.", " # , / 1 1 1 1 1 1 1 1 1 1 1 1 H w P y G H $.Q Z .z &.~.,.v.K |.7.[.*.b.{.f.9.6.+.h n.q.0.y.: ", " @ > ^ 1 1 1 1 1 1 1 1 1 1 1 1 I x y G H $.Q Z .R &.~.,.v.K |.7.[.*.S {.f.9.6.+.h L o.=.p ^.a.", " + ; ] 1 1 1 1 1 1 1 1 1 1 1 1 Y P G H $.Q Z .R &.>.,.v.K |.7.[.*.S {.f.9.6.+.h L o.p.i z.A.c ", " . & { _ 1 1 1 1 1 1 1 1 1 1 1 J y H $.Q Z .R &.>.,.v.K |.7.[.8.S {.f.9.6.+.B.L o.p.r.2.y.C.6 ", " # ~ / 1 1 1 1 1 1 1 1 1 1 1 ` G $.Q Z .R %.>.,.v.K <.7.[.8.S {.f.9.6.+.B.n.o.p.D.e.p w.% _ ", " + [ } 1 1 1 1 1 1 1 1 1 1 1 .H Q Z .R %.>.,.v.K <.7.1.8.S {.f.9.6.l.B.n.o.p.D.=.l w.E.F.1 ", " * $ F._ 1 1 1 1 1 1 1 1 1 1 %.$.J .R %.>.,.v.K <.7.1.8.S {.f.9.g.l.B.n.o.p.D.=.s.n G.H.6 1 ", " = 4 } 1 1 1 1 1 1 1 1 1 1 >.Q ` R %.>.,.v.K |.5.1.*.S b.f.9.g.l.B.n.o.p.D.=.T M w.I.J.1 1 ", " * V a.^ 1 1 1 1 1 1 1 1 1 ~.Z R %.>.,.v.K <.5.1.*.S {.d.A g.l.B.n.o.p.D.r.=.j K.L.C.( 1 1 ", " . M.) ( 1 1 1 1 1 1 1 1 ,. .%.>.,.v.4.<.5.1.*.S b.d.A 6.l.B.n.o.p.D.r.T B N.O.P.U 1 1 1 ", " : @ 8 Q._ 1 1 1 1 1 1 1 v.z &.~.v.4.<.5.1.*.S b.d.A 6.l.B.n.o.R.D.r.T s.S.y.E.T.1 1 1 1 ", " * U.U c 1 1 1 1 1 1 1 K %.~.v.4.<.5.1.*.S b.d.A g.l.B.n.o.R.D.r.T s.M ^.V.W.1 1 1 1 1 ", " c.X.* < U.U.< < < Y.K >...4.<.5.1.*.S b.d.A g.l.B.h o.R.D.r.T s.M Z.`. +a 1 1 1 1 1 ", "1 1 1 1 1 1 a..+e.q.9.1.1.*.S f.,...4.<.5.1.*.8.{.d.A g.l.B.h L R.D.r.T B S.^.++W.d 1 1 1 1 1 1 ", "1 1 1 1 1 1 1 > z.r.6.7.%.R %.>...4.<.5.1.*.8.b.d.f.g.l.B.h L R.q.r.T i @+w.A.#+$+1 1 1 1 1 1 1 ", "1 1 1 1 1 1 1 1 Q.%+'.D.9.5.,...4.K 5.1.*.8.b.d.f.9.l.+.h L R.q.r.e.m K.G.&+ +] 1 1 1 1 1 1 1 1 ", "1 1 1 1 1 1 1 1 1 1 *+N.].q.6.*.5.5.1.[.8.b.d.A 9.l.+.h L R.q.=.'.N.w..+=+-+1 1 1 1 1 1 1 1 1 1 ", "1 1 1 1 1 1 1 1 1 1 1 Y.;+@+i e.R.l.A d.d.f.A g.6.B.L R.D.s.m n z.>+E.,+'+1 1 1 1 1 1 1 1 1 1 1 ", "1 1 1 1 1 1 1 1 1 1 1 1 ^ e )+@+'.l '.B T D.r.D.=.s.j M N.h.w.y.A.X.j.| 1 1 1 1 1 1 1 1 1 1 1 1 ", "1 1 1 1 1 1 1 1 1 1 1 1 1 1 ] k.!+~+{+]+p p K.K.-.Z.^.%+w.O.3.e , a 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ", "1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 / c Q.Y.x.@.O.`.++L.u.H.^+3 c ( 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 "}; ���������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/notepad.xpm����������������������������������������������������0000644�0001750�0001750�00000022433�13431646201�016454� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "48 48 211 2", " c #410341034103", ". c #EFBEF3CEEFBE", "X c #DF7DDB6CDF7D", "o c #F7DE71C671C6", "O c #492449244924", "+ c #B6DAB6DAB6DA", "@ c #DF7DDF7DDF7D", "# c #DF7DE38DDF7D", "$ c #E79DE79DE79D", "% c #FFFF59655965", "& c #F7DE59655965", "* c #EFBE55555144", "= c #E79D55555144", "- c #E79D51445144", "; c #DF7D51445144", ": c #D75C4D344924", "> c #CF3C49244924", ", c #BEFBBAEABEFB", "< c #EFBE79E779E7", "1 c #F7DEB2CAB6DA", "2 c #EFBE8A288E38", "3 c #E79D8A288E38", "4 c #EFBEC30BC71B", "5 c #DF7D71C671C6", "6 c #F7DE55555965", "7 c #F7DED75CD75C", "8 c #EFBEC30BBEFB", "9 c #C71B49244924", "0 c #E79DEBADE79D", "q c #E79D65956185", "w c #EFBE9E799E79", "e c #FFFFFFFFFFFF", "r c #DF7D86178617", "t c #C71B45144924", "y c #EFBEAEBAAEBA", "u c #E79D9A699E79", "i c #D75C71C671C6", "p c #BEFB45144103", "a c #EFBEB2CAB6DA", "s c #F7DEEBADE79D", "d c #BEFB41034103", "f c #186118611861", "g c #49244D344924", "h c #B6DA41034103", "j c #9E799A699E79", "k c #BEFBBEFBBEFB", "l c #BEFBC30BBEFB", "z c #C71BC71BC71B", "x c #CF3C59655965", "c c #CF3C5D755965", "v c #DF7DAAAAAEBA", "b c #AEBA3CF338E3", "n c #71C671C671C6", "m c #410345144103", "M c #CF3CCB2BCF3C", "N c #CF3CCF3CCF3C", "B c #EFBEEFBEEFBE", "V c #514455555144", "C c #AEBAAEBAAEBA", "Z c #AEBAAAAAAEBA", "A c #965892489658", "S c #861782078617", "D c #8E388A288E38", "F c #8E388E388E38", "G c #A699A289A699", "H c #D75CD75CD75C", "J c #B6DAB2CAB6DA", "K c #71C675D671C6", "L c #69A669A669A6", "P c #861786178617", "I c #A699A699A699", "U c #69A66DB669A6", "Y c #D75CD34CD75C", "T c #79E779E779E7", "R c #79E77DF779E7", "E c #9E799E799E79", "W c #59655D755965", "Q c #965896589658", "! c #618561856185", "~ c #596559655965", "^ c #F7DEF7DEF7DE", "/ c #D75CCF3CC71B", "( c #C71B9E799E79", ") c #C71B7DF779E7", "_ c #C71B7DF771C6", "` c #CF3C8A2871C6", "' c #BEFB69A638E3", "] c #B6DA618530C2", "[ c #C71B71C64103", "{ c #C71B79E74924", "} c #BEFB659530C2", "| c #CF3C75D64103", " . c #CF3C79E74103", ".. c #C71B69A638E3", "X. c #BEFB6DB638E3", "o. c #CF3C6DB638E3", "O. c #D75CBEFBBEFB", "+. c #B6DA8E389658", "@. c #A6996DB66185", "#. c #D75C96588617", "$. c #F7DEAAAA9E79", "%. c #F7DEB6DA9E79", "&. c #FFFFB2CA9E79", "*. c #FFFF9A6971C6", "=. c #FFFF86174924", "-. c #FFFF8A284103", ";. c #FFFF86174103", ":. c #FFFF8A284924", ">. c #9E7996589658", ",. c #9E7975D669A6", "<. c #BEFB8E3879E7", "1. c #BEFB71C669A6", "2. c #EFBEAAAA9658", "3. c #EFBEA6999658", "4. c #FFFFB6DA9E79", "5. c #CF3C71C638E3", "6. c #DF7D861738E3", "7. c #E79D7DF738E3", "8. c #D75C79E738E3", "9. c #DF7D7DF738E3", "0. c #D75C75D638E3", "q. c #E79D79E738E3", "w. c #DF7D820738E3", "e. c #8E38820779E7", "r. c #A69969A669A6", "t. c #CF3C8A288617", "y. c #F7DEA2898E38", "u. c #EFBE9E799658", "i. c #9658514428A2", "p. c #965851442081", "a. c #28A228A22081", "s. c #082008200820", "d. c #AEBA659569A6", "f. c #D75C79E779E7", "g. c #EFBE92488E38", "h. c #EFBE8A288617", "j. c #EFBE96588E38", "k. c #D75C79E771C6", "l. c #000000000000", "z. c #082004100820", "x. c #514434D330C2", "c. c #71C649244924", "v. c #9E795D755144", "b. c #9E7965955965", "n. c #A69969A66185", "m. c #A6995D754103", "M. c #30C22CB230C2", "N. c #30C21C711861", "B. c #410324922081", "V. c #410328A230C2", "C. c #59653CF338E3", "Z. c #61853CF338E3", "A. c #69A6492438E3", "S. c #71C6492438E3", "D. c #79E74D344924", "F. c #96585D755965", "G. c #8617514438E3", "H. c #8E384D342081", "J. c #861749242081", "K. c #861745142081", "L. c #79E745142081", "P. c #28A21C711861", "I. c #514434D34103", "U. c #596534D330C2", "Y. c #41032CB228A2", "T. c #30C228A228A2", "R. c #38E320812081", "E. c #38E3208128A2", "W. c #410328A228A2", "Q. c #38E31C711861", "!. c #514430C228A2", "~. c #38E320811861", "^. c #410320811861", "/. c #38E314511040", "(. c #38E314511861", "). c #410338E338E3", "_. c #A6995D755965", "`. c #69A649244103", "'. c #69A63CF34103", "]. c #596538E338E3", "[. c #49242CB228A2", "{. c #492428A230C2", "}. c #38E328A22081", "|. c #79E755554924", " X c #6185410338E3", ".X c #861751444924", "XX c #69A649244924", "oX c #410330C22081", "OX c #38E324921861", "+X c #30C21C711040", "@X c #30C220811040", "#X c #38E328A228A2", "$X c #38E334D330C2", "%X c #861749244924", "&X c #61853CF34103", "*X c #618541034103", "=X c #28A210401040", "-X c #30C218611040", ";X c #30C214511040", ":X c #28A21C711040", ">X c #38E324922081", ",X c #AEBA61856185", "<X c #492428A22081", "1X c #51442CB22081", "2X c #492428A21861", "3X c #20811C712081", "4X c #30C234D330C2", "5X c #69A675D68617", "6X c #28A22CB228A2", "7X c #30C230C230C2", "8X c #F7DEFBEEF7DE", " . ", " X X X X X o O + @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # $ $ $ $ $ $ % & & * * = - ; ; : : > . ", " X X X X X o O , @ X @ @ @ @ @ @ # # # @ # # # # # # $ $ $ $ $ $ $ $ % & * < 1 2 ; ; 3 4 5 > . ", " X X X X X o O + @ @ @ @ @ @ # @ # @ # # # # # # $ # $ # $ $ $ $ $ $ & 6 * * 1 7 ; : : 8 > 9 . ", " X X X X @ o O , @ @ @ @ @ @ @ # # # # # # # # # # $ $ $ $ $ $ $ $ 0 6 * * q w e q : > r > t . ", " X X @ X @ o O , @ @ @ @ # @ # # @ # # # # # $ # $ $ $ $ $ $ $ $ 0 $ * * = 2 w y u : r i t p . ", " X X X @ @ o O , @ @ @ @ @ # # @ # # # # # $ # $ $ $ $ $ $ $ $ 0 $ 0 * = - a < 5 s > 7 t p p . ", " o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o = - ; y : > 7 r 8 p p d . ", " O O O O O o f O O g O g O O O g g g g g g g g g g g g g g g g g g - ; ; 3 : > u s 8 p d h . ", " , , , , , o j , k , , k k k k k k k k k k l l l l l l l l l l z l ; ; 3 3 > > x e p d h h . ", " @ X @ @ @ o O , # # # # # # # # # # # $ $ $ $ $ $ $ $ $ 0 0 0 0 0 0 ; : y u c 9 p v p h h b . ", " @ @ @ @ @ o g , # @ # # # # # # $ # $ $ $ $ $ $ $ $ 0 $ 0 0 0 0 0 0 : : > > 9 t p p h h b b . ", " @ @ @ @ @ o O , # # # # # # # $ # $ $ $ $ $ $ $ $ 0 $ 0 0 0 0 0 0 0 $ k n O m m m m m m m m . ", " @ @ @ # @ o g , # # # # # $ # # $ # $ $ $ M $ X 0 $ 0 0 0 N 0 0 0 B 0 X , V C Z C C C C C C . ", " @ @ @ @ @ o O k # # # # A # # $ S D # $ $ F G F F Z 0 0 H V J 0 B 0 B $ K L X $ $ $ $ $ $ 0 . ", " @ @ # @ # o O k # # # # n H $ N P C P I X U A C I K Y S K l T M D T P R l z A B B B B . . . . ", " @ # @ # # o O k # # # $ + n A K Y $ T S $ E Z 0 0 l W l 0 B X W k B B B B B A B B . . . B . . ", "m @ @ # # # o O k # $ # # $ # J z $ $ Y # 0 $ 0 0 0 0 # B 0 0 0 $ B B B B B B B . B . B . . . . ", " @ # # # # o g k # # # $ H # $ H Z $ $ $ $ 0 0 0 l 0 0 , $ B B B 0 B B B B B B B . . . . . . . ", " # @ # # # o g k $ # $ $ Q X M Q n $ 0 0 n J 0 0 ! Z 0 G D J L N F I E K Y . B . . B . . . . . ", " # # # # # o g k # $ $ $ Q R T + j R T X D D S R W L A I ~ P 0 B 0 S F @ R B . . B . . . . . . ", " # # # # # o g k $ # $ $ @ H $ $ $ 0 l P P 0 0 0 0 0 k E Z B B B B B B B C H B . . . . . . . . ", " # # # # # o g k $ $ $ $ $ $ $ 0 0 0 0 F l 0 0 B 0 B B B B B B B B B B . . . . . . . . . . ^ . ", " # # # $ # o g k $ $ $ $ $ 0 $ 0 0 0 0 0 0 B 0 B 0 B Y 0 B B B B B . B # E $ . . . . . ^ . ^ . ", " # # # # # o g l $ $ $ $ E Y 0 0 Y I Y 0 0 0 $ H # S ! B B B B + C B . X n K . . . . ^ . ^ ^ . ", " # # $ # $ o g l $ $ $ $ , I # U K j S z B 0 z ! K l , K F F @ B T l J 0 Q J G . . ^ . ^ ^ ^ . ", " # $ $ $ $ o g l $ $ $ 0 # T K k 0 B D @ 0 B B # B B B 0 # # B B $ K G P I . . . ^ . ^ ^ ^ ^ . ", "m # # $ # $ o g l $ 0 $ 0 0 0 0 0 0 0 0 0 B 0 B 0 B 0 B 0 0 0 B B B B B B . B . . . . . . . . . ", " $ $ $ $ $ o g l $ $ 0 0 0 0 0 0 l 0 B 0 B $ / ( ) _ ` ' ] [ { ] } | ' } .| } ..| X.X.| o.... ", " $ # $ $ $ o g l $ 0 0 0 $ H 0 P K C $ O.+.@.#.#.$.%.&.*.=.-.-.=.-.;.:.;.-.-.;.=.-.-.:.-.;.=.. ", " $ $ $ $ $ o g l 0 0 0 0 H Q A >.$ ,.<.1.2.3.4.4.4.4.2.=.5.6.7.8.9.7.9.0.q.6.0.0.6.0.0.w.0.5.. ", " $ $ $ $ $ o g l 0 0 0 $ z m e.r.t.` &.&.y.2.u.y.2.2.` i.i.i.i.i.i.i.i.i.i.i.i.i.p.i.i.p.i.i.. ", " $ $ $ $ $ o g l 0 k n a.f s.d._ f.r r g.2 *.3 h.j.2 h.k.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.. ", " $ $ $ 0 $ o V l m l.s.l.z.z.x.c.v.b.n.k.k.f.k.` f.k.k.k.m.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.. ", " $ $ $ $ 0 o g z Y F W M.z.z.N.B.V.C.Z.A.A.c.A.S.D.c.S.F.G.H.H.J.J.p.J.K.H.J.K.J.H.L.K.H.K.L.. ", " $ 0 $ 0 0 o g k # M I R V P.I.Z.U.V.B.Y.T.R.E.W.Q.V.Y.!.~.^.^.Q.Q.^.~./.^.^.(.~.^./.~.^.Q.~.. ", " $ $ 0 0 0 o g z # Y + A T V ).C._.`.'.].[.{.Y.E.R.}.~.~.~.~.~.~.~.~.Q.~.~.Q.~.~.~.~.~.Q.R.. ", "m $ 0 0 0 0 o g z 0 @ Y z + I Q T O O ).|. X.XXXU.U.[.oXY.OX+X+X~.+X+X~.+X@X~.+X~.+XQ.~.+X+X~.. ", " 0 0 0 0 0 o g z 0 0 $ # X X N K O S K W O #X$XF.%X&X*XB.N.P.=XN.-X=XN.(.=XP.;XP.:X=XP.:X-X>X. ", " 0 0 0 0 0 o V z 0 B B B Z K K P l K ~ A A T ! g $X,XD.x.<X~.Q.1X^.N.2X<XN.OX1X~.:Xz.3Xa.4X5X. ", " 0 0 0 0 0 o g z B B B B B B B B 0 0 # X N k C Q S ! O 4XM.6XM.M.M.M.M.M.M.7XM.M.7X7X7X7X7X7X. ", " 0 0 0 0 B o V z 0 B B B B B B . B . B B 0 # @ Y l Z F K U L U U U n n n n n n K K K K K T T . ", " 0 0 0 B 0 o g z B B B B B B . B . . . . . . B B $ X M k + + + , , , , , k , k k k k l l l l . ", "m 0 0 B 0 B o V z B B B B . B B . . . . . . . . . . . 0 $ # $ $ $ $ $ $ 0 0 0 0 0 B 0 0 B B B . ", " 0 B 0 B B o g z B B B B B B . . . . . . . . ^ . ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 8X^ 8X8X8X8X8X8X8X8X. ", " B 0 B 0 B o V z B B B . B . B . . . . . ^ . ^ ^ ^ ^ ^ ^ ^ ^ 8X^ 8X8X8X8X8X8X8X8Xe 8Xe e e e . ", " 0 B B B B o g M B B . B . . . . . . . . . ^ ^ ^ ^ ^ ^ ^ ^ 8X^ 8X8X8X8X8X8Xe 8Xe 8Xe e e e e . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . ^ . . . . . . . . . . . . . . . . . . . "}; �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/draw.xpm�������������������������������������������������������0000644�0001750�0001750�00000023043�13431646201�015755� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "48 48 223 2", " c #410341034103", ". c #FFFFFFFFFFFF", "X c #B6DAB6DAB6DA", "o c #1040C71B0000", "O c #965896589658", "+ c #BEFBBAEABEFB", "@ c #BEFBBEFBBEFB", "# c #C71BC30BC71B", "$ c #C71BC71BC71B", "% c #C71BCB2BC71B", "& c #CF3CCF3CCF3C", "* c #D75CD34CD75C", "= c #D75CD75CD75C", "- c #492445144924", "; c #69A669A669A6", ": c #E79DDB6C4103", "> c #DF7DD34C4103", ", c #D75CCB2B4103", "< c #CF3CC71B4103", "1 c #CF3CC30B4103", "2 c #C71BBEFB4103", "3 c #C71BBAEA4103", "4 c #BEFBB6DA4103", "5 c #BEFBB2CA4103", "6 c #B6DAAEBA4103", "7 c #B6DAAAAA4103", "8 c #AEBAA6994103", "9 c #AEBAA2894103", "0 c #A6999E794924", "q c #A6999A694103", "w c #9E7996584103", "e c #DF7DDB6CDF7D", "r c #4103492438E3", "t c #D75CCF3C4103", "y c #9E7996584924", "u c #28A2249228A2", "i c #41034D344924", "p c #49243CF338E3", "a c #30C23CF35965", "s c #8E388A288E38", "d c #9E799A699E79", "f c #AEBAA69938E3", "g c #A6999A6938E3", "h c #96588E384103", "j c #8617820728A2", "k c #8E3886174103", "l c #86177DF74103", "z c #AEBAAAAAAEBA", "x c #618561856185", "c c #DF7DD75C4103", "v c #492449244924", "b c #DF7DDF7DDF7D", "n c #71C671C671C6", "m c #410345144924", "M c #DF7DE38DDF7D", "N c #186118611861", "B c #492445141861", "V c #51444D341861", "C c #6185618528A2", "Z c #A699A289A699", "A c #41034D3469A6", "S c #38E351449658", "D c #18613CF39E79", "F c #410371C6AEBA", "G c #410361858E38", "H c #4103555569A6", "J c #410341032081", "K c #410345145144", "L c #410355558E38", "P c #410369A6CF3C", "I c #410375D6E79D", "U c #18614514B6DA", "Y c #410371C6B6DA", "T c #41036DB6AEBA", "R c #410369A6A699", "E c #4103410328A2", "W c #79E771C630C2", "Q c #410349245965", "! c #49246595B6DA", "~ c #410371C6E79D", "^ c #41036595A699", "/ c #410361859E79", "( c #38E3555571C6", ") c #38E3410330C2", "_ c #E79DE79DE79D", "` c #410371C6DF7D", "' c #18614103AEBA", "] c #18613CF3A699", "[ c #186130C271C6", "{ c #1861208130C2", "} c #41036595BEFB", "| c #41036DB6D75C", " . c #410369A6C71B", ".. c #41035D75A699", "X. c #49246185B6DA", "o. c #20814D34B6DA", "O. c #492455558E38", "+. c #492449245144", "@. c #4103514479E7", "#. c #20814924AEBA", "$. c #20814924A699", "%. c #208145149E79", "&. c #208141039658", "*. c #208128A24924", "=. c #69A66DB669A6", "-. c #492455559658", ";. c #41036185AEBA", ":. c #49244D344924", ">. c #E79DEBADE79D", ",. c #49245D75A699", "<. c #71C675D679E7", "1. c #514455555144", "2. c #49245D75AEBA", "3. c #59655D755965", "4. c #492459659E79", "5. c #9E7965955965", "6. c #9E797DF779E7", "7. c #AEBA86178E38", "8. c #C71B7DF779E7", "9. c #CF3C8A2871C6", "0. c #BEFB69A638E3", "q. c #B6DA618530C2", "w. c #C71B75D64103", "e. c #CF3C75D64103", "r. c #C71B6DB638E3", "t. c #BEFB6DB638E3", "y. c #CF3C71C638E3", "u. c #8E3869A669A6", "i. c #A69965956185", "p. c #D75C96588617", "a. c #F7DEAAAA9E79", "s. c #FFFFB6DA9E79", "d. c #FFFFB2CA9E79", "f. c #FFFF9A6971C6", "g. c #FFFF86174924", "h. c #FFFF8A284103", "j. c #FFFF8A284924", "k. c #FFFF86174103", "l. c #41036DB6CF3C", "z. c #861751444924", "x. c #AEBA92489658", "c. c #965871C66185", "v. c #BEFB71C669A6", "b. c #EFBEA6999658", "n. c #EFBEAAAA9658", "m. c #DF7D7DF74924", "M. c #DF7D79E738E3", "N. c #DF7D861738E3", "B. c #E79D79E738E3", "V. c #D75C75D638E3", "C. c #DF7D820738E3", "Z. c #410359659E79", "A. c #96585D755965", "S. c #596545144103", "D. c #8E3879E771C6", "F. c #CF3C8A288617", "G. c #F7DEA2898E38", "H. c #EFBE9E799658", "J. c #9658514428A2", "K. c #965851442081", "L. c #41034D345965", "P. c #79E755555144", "I. c #71C661856185", "U. c #082008200820", "Y. c #D75C79E779E7", "T. c #DF7D82078617", "R. c #EFBE92488E38", "E. c #EFBE8A288E38", "W. c #EFBE8A288617", "Q. c #D75C79E771C6", "!. c #082004100820", "~. c #000000000000", "^. c #596534D330C2", "/. c #71C649244924", "(. c #A6995D754103", "). c #410359659658", "_. c #28A23CF371C6", "`. c #38E334D330C2", "'. c #38E318611861", "]. c #410328A228A2", "[. c #596538E338E3", "{. c #61853CF338E3", "}. c #69A6492438E3", "|. c #71C6492438E3", " X c #8617514438E3", ".X c #8E384D342081", "XX c #861749242081", "oX c #861745142081", "OX c #79E745142081", "+X c #41035D75AEBA", "@X c #28A230C25965", "#X c #492428A230C2", "$X c #514434D34103", "%X c #38E3249228A2", "&X c #38E320812081", "*X c #51442CB22081", "=X c #410320811040", "-X c #38E31C711861", ";X c #492424921861", ":X c #30C218611040", ">X c #38E320811861", ",X c #38E34D348617", "<X c #38E3451479E7", "1X c #A6995D755965", "2X c #69A63CF34103", "3X c #410355559658", "4X c #28A230C25144", "5X c #69A645144103", "6X c #79E755554924", "7X c #410330C22081", "8X c #30C21C711040", "9X c #30C220811040", "0X c #28A22CB238E3", "qX c #28A21C711040", "wX c #28A210401040", "eX c #71C675D671C6", "rX c #410351448E38", "tX c #514434D330C2", "yX c #69A675D68617", "uX c #79E77DF779E7", "iX c #EFBEEFBEEFBE", "pX c #EFBEF3CEEFBE", "aX c #F7DEF7DEF7DE", " . ", " X X X X o O + + + + @ @ @ @ @ # # # # # $ $ $ $ $ % % % % & % & & & & & * * * * * * = = = . ", " X X X X o O + + @ @ @ @ @ # # # # # # $ $ $ $ % % % % % & % & & & & & * * * * * = = = = = . ", " X X X + o O @ + @ @ @ - - - - - - - - - = ; ; ; = . ", " X X + + o O @ @ @ @ @ : : : : > > , , < 1 1 2 3 3 4 5 6 6 7 8 9 9 0 q q w w - = = ; e e . ", " X + + + o O @ @ @ @ @ r : : : > > t , , < 1 2 3 3 4 5 5 6 7 7 9 9 0 0 q y w u - = e ; e e . ", " o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o . ", " o i p i p i p i p i p i p r a . ", " O O O O o s O O O d d 7 f f f 9 9 g 0 g w w w g h h j h k k k k l l l r z z z x z z . ", " + + @ @ o O # # # # # c > > , , < 1 1 1 3 3 5 5 6 6 7 8 8 9 0 - q - w - = - v e e ; e b . ", " + @ @ @ o O # # # # # > > t , , < 1 2 2 3 4 5 5 6 7 7 8 9 9 - q - w - = - e - e e n b b . ", " + @ @ @ o d # # # # $ > > t , < 1 1 2 3 3 4 5 6 6 7 8 m 9 - q - w - = - e - - e b ; b b . ", " @ @ @ @ o O $ # $ $ $ > t , < < 1 2 3 3 4 5 5 6 7 8 8 9 0 q - y - = v e - e v e b n b b . ", " @ @ # @ o d # # $ $ $ > , , < 1 1 2 3 3 5 5 6 6 7 8 9 - q - y - = - e - e - v b b n b b . ", " @ @ @ # o d $ $ $ $ $ t , < < 1 2 2 3 4 5 5 6 7 - 9 - 0 - y v = - e - e v e v b b n b M . ", " # @ # # o d $ $ z s x N B B V C j f 3 4 5 5 6 7 7 9 9 9 - q - = - e - e - e v v b b n M M . ", " @ # # # o d Z ; m A S D F F G H r J C g 5 5 7 7 8 - 9 - q - = - e - e v e v b v b M n M M . ", " # # # # o ; K L P I I U Y F T T R G i E W 6 6 8 - 9 - q - = - e - e v e v b v v b M n M M . ", " # # # # o Q ! I I ~ ~ U F T T R ^ ^ / ( ) C - 8 8 - q v = - e - e v e v b v b v M M n M _ . ", " # # # $ o S I I ~ ~ ` U ' ' ' ] ] ] D D [ { u - - - - - - v - v - v v v v v v v M n n n M . ", " # # $ s o ) } I ~ ` ` ` ` | | | P P P . . ...A O * = = e e e e e e b b b b b M M M M _ _ _ . ", " # $ z K o i X.~ ` ` ` | o.| | P P P .} } } ! O.+.@ e = e e e e e b b b b b M M n M _ M _ _ . ", " $ $ n @.o ^ ~ ` ` | | o.#.#.#.$.$.%.%.%.%.&.&.*.a ; =.; ; ; n ; n ; n n n n n n _ M _ _ _ . ", " $ X m .o a X.` | | | | #.P P . .} } } ! ! X.X.-.- % e b e b b b b M b M M M M n M _ _ _ _ . ", " $ s A ` o r ..` | | | P P P . .} } } ! ! ! X.;.;.:.d e e e b b b b b M M M M _ _ _ _ _ _ >.. ", "r $ =.L ~ o ;.| | | P . . . .} } } ! ! X.;.X.;.,.@.<.e e b b b b b M M M M _ M _ _ _ >._ >.. ", "a $ 1.;.` o ..| | P P . . .} } } ! X.X.X.;.2.2.,.O.3.b b b b b M M M M M _ M _ _ _ _ >.>.>.. ", "r % v P ` o i ..P P . . .} } } ! ! X.X.;.X.2.2.,.,.4.:.b b b b b M M M M _ M _ _ _ >._ >.>.>.. ", "p % | | o ..P P . .} } } ! ! X.X.;.2.2.5.6.7.8.9.9.0.q.w.w.q.q.e.0.q.w.w.q.r.e.t.t.e.y.t.. ", "i % v .| o ..P . . .} } ! ! X.X.2.u.7.7.i.p.p.a.s.d.f.g.h.h.j.h.k.j.h.h.h.k.g.h.h.j.h.k.g.. ", " % 1...l.o .. .} } } } ! X.X.z.x.c.9.v.a.b.s.s.s.s.n.m.M.N.B.M.M.B.M.V.B.C.V.V.N.V.V.C.V.y.. ", "p % n L P o Z.} } } } ! A.S.D.i.F.9.d.d.G.n.H.G.a.a.9.J.J.J.J.J.J.J.J.J.J.J.J.J.K.J.J.K.J.J.. ", "i % O L. .o Z.} P.u.I.u N U.i.8.Y.T.T.R.E.W.W.R.R.E.W.Q.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.. ", " & @ m ;.o Z.} S.!.U.~.!.U.^./.A.5.i.Q.Q.Q.Q.9.Y.Q.Q.Q.(.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.. ", " & & <.A o ).! X.S _.`.!.!.'.].].[.{.}.|./.}.|././.|.A. X.X.XXXXXK.XXoX.XXXoXXX.XOXoX.XoXOX. ", " & & X v o ).! +XS _.@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. ", " & & * O o ).X.2...S ,X<X@X*.S.[.1X}.2X[.].#X].%X&X%X>X>X>X>X>X-X>X>X-X>X-X-X>X-X>X>X>X>X&X. ", " & * * & o @.+X2.2.....3X,X<X4X*.5Xp 6X}.z./.^.^.#X7X7X&X8X8X>X8X:X>X'.9X>X8X>X9X'.>X:X8X>X. ", " * * * * o K -.2.,.,.,.,.3X3X<X_.4X0X{ S.%X`.A./.2X5X].'.qXwX'.:XwX>X'.wXqX:XwXqXwXqXqXwX%X. ", " * * * * o i eX+.A 4.,.4.4.4.-.-.rX<X_.0Xu p 3.:.#Xi./.tX;X>X>X*X&X>X;X;X-X>X*X>XqXU.N u `.yX. ", " * * * * o z X n v L.@.O.-.-.O.A :.- x O Z uXx 1.- - v v v - v v v v v v v v v v v v v v v . ", " * = * = o z = e @ O =.1.:.v 1.n O # b e * @ Z s n n ; n ; n n n n n n eXn eXeXeXeXeXeX<.eX. ", " * * = = o z = e e e e b b b b b M M M M M b * # + + + + @ + @ @ @ @ @ @ # # # # # $ # $ $ . ", " * = = = o z e e e e b b b b M M M M M M _ _ _ M M M M M M _ _ _ _ _ >.>.>.>.>.iXiXiXiXiXiX. ", " = = = = o z e e e b b b b M M M M M _ _ _ _ _ _ >.>.>.>.iX>.iXiXiXiXiXiXpXpXpXpXpXaXaXaXaX. ", " = = e = o z e e b b b b b M M M M _ M _ _ _ >._ >.>.>.>.>.iXiXiXiXpXiXpXpXpXpXpXaXaXaXaXaX. ", " = = = e o z b b b b b M M M M M _ M _ _ _ _ >.>.>.>.>.iX>.iXiXiXiXiXpXpXpXpXpXaXaXaXaXaXaX. ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . "}; ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/Terminal.tiff��������������������������������������������������0000644�0001750�0001750�00000011360�13431646201�016716� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*���� P8$ BaPd6DbQ8V-FcQv=HdR9$M'JeR(LfS9m7NgS� |�(@P=o 0H@MTF@4_AJ,m@P%K�0=XmAO``V~b_*erA0~@KlYZ6%FVQz\_7X q�p78\_G˨An �zx^/")3Fg_Zi1S|Yۀh�|`d�& ..;S;kz'f GD<u (Ă ؐ1HlON`�@<�`Q%Μ"@H�}�H2ɭ($@�� `(�r� a�'|9[rD??%Mj+`Ħ!Rd|�-Gʙ(/\*i4& p.zMTrk/� 48 @�,A`� �42�1IR*�Ϩ9oe9NT-@ҫG�p^~ˍK_?U^ �R�Ce/( 2}Q7K_��- scN,K8gH>s*:6 G�t B�]%#U�Q�vRzuFmzvHzt:#=(ֵQ̔tG� z�֔-+S߀K|(ܴfHqa>e BzYF`|as�M�n`EP7콳f_%/tF� (+�o]1 |'/ gJ er! }/ a�9t?*zB?L(Cf_*i)a/SB:�8yo5_ZI8cQ@aV=Y@pC@PB@� � qz9h€ݘ3TmF%"j?Pƶ_@� d �qC mYF�@C:qw:'PGqRqr.`%q q @$UEH�eܿO'͚$Uzp(D*$m�Jn4S@~0Tw<p.0Tеh D/EBiѤcxj `C5eI�xc-EH w-EQr^je בzwdVP| �<�8زٝ~&\$C;MD#xl84D0 L4DihOA�(@�{~˧(01t ]+-i4�cPBg: ^:nB(�4q ~l7' KQvkAS� qZ5@�C|�(zا-Z?"z;iERsKn`(Ði`�DbA-h%O ��Rm\먘�#d� R7l*9.hIžqQH*f%P@�D8 ( :Zl-BaQ-el�sޓ8�B[ ym�>*.nb$({qV_>A.ޤr]To tbwx Gj BU Fg Hdᑈ-Q Y&̄%.真%RϼT[[a;0bʏyki a��\ @YP`�C 1Vtɻ#zL^,PxL tZ]؈ߚl)TAG� rB(��z{E&B&FJGQt6E`�`v\$ְ4KPO0%x櫻e9$@(gD𱮁/'|gT?Q_< uMAe.5n,&(D t�e�#Ժ,zh ޗYˈe2:g@0 !<�p yyaN+*�seYCˮv|& � �#Dk�!DpΦuI~8 vyHzbSXN li?5"zk.NzAPfqe t#V;=DfQ_n  M�$bv/&'AQO6 [}wðnB  9RZ̏Q5ej̟dmI-IVφP@K@ `B��vbAb$f\) FBo`_RpP@-�` �^a�L�` @lhƒ禴hwt8   z*8/�CgJØY/Ψ. W JV9c �ArA/�잤?nlp0l� 4.(=``@��N%¬>(, TX7|'lÎ@YHp9ff�R*)O`G"i0l' �p�Q-Ђ�$n@�|>g: �. `d@QrmA C�a��Qm )b�Dv=`| 0��:�:Dffyf8㦦v@ta)a#� P8$ o4+Aq0�,��r� @@� �JY! ԪE4哸Pc+̤2�<� !@$�+@�=t�>0Ck5fa\XEkMwv/W*?Ř1 @{�FwS^R-"3ԩKK0 f� * *�#Aּ=B`-h@OGTZ觼 ~xj'�`BQ0=PPJ'@y�%3B3t&5)Ӥ%p (jr`�:&�-|GӘ g®�1ā)*xrGl'$ �;#;hpUJ3�'YܨA��"V!I{ J*S[_BXӡ�*�� `.'  :��Iave4|)B$ԕ*%HFX%xxp >SuFL ЌPӬLӴꃵ'�a� #~ X=!FY|wq6߁T `" 8I~'=҂<(Qz-2,~:0lwe�Ű }8,:94�0(#`Mұ7 I�$�}\~.(Ιgկfn4ImNn�QHQB� N-\G΂Q' =G|�H@45/}x:AI-@;o]`,U!8N:4g�ŭZ:$Ncc-zH.!�AD�縮�Q�v%x�CiG<"<(`� 0 1 pD�h"`0�h)L0Y o!sz ��1@�!M& � Q<ǘ pg)w` Y/ g[i�+�"BB!�N<E`(<@y�Xi�R` !@Onp7 L�0d&C_,zA$7y KΕ1iGf1�ɠ*�@"@ 4x1#D&dр�Y3!E<v�|lZH 4m$@�scHN5E!W+'l Ā4( s bS!Q9R҇ I!%k$N ߀g,Gm|{mKAԃyMU|EAЈ�L  �Y-zZIHA!44q- adI05iO5Íq WR�_PUT l�@d 0>K U#?LH2 +E5K)ziȳB <KvṼ7[ff$9 + `H cILEt}M28n >oV^ q%% (f ]Q- 6v X/`XO a\-Xoa=!Xb\M���������������<�������:����������������������� ������������������������������������"����������������������������(�������=�������R���������������Terminal2.tiff��Created with The GIMP���� �� �������H������H�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/GreenWilber.png������������������������������������������������0000644�0001750�0001750�00000016430�13431646201�017207� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq���gAMA�� a���bKGD������ pHYs�� �� m���tIME c<D��IDATx}]?y~wc;Nu$ܸIH*ڢP*jiETGJ"4-B @'߽w׻wy23q]uޅR]=g9~́M~}sn}Ɵ8&�J8,zO pU-w;Û|띺Q[t_ *�J > #֡΢bXKS^ շNe�Jh�Yt|VV_|k6> `�->W?+>W,·!+n R `|`kke#T'?ā Kf3 5Wxf$ݭ*oH ~G.יHQ w^Ս5/Eni>*}yѩxJ2?WӨu TAmݜDRC-f~rU�{�!�_{g�pj٫ijAiJˤ>Jt۵$-}%7FMLJNAĆQ̰#wMS>w'c+ /?zI@o �3B@[glI#ՖRI4O2wodl{ SQB+-TDqO5-ӻ_-]#Kss'*z ޗ&z{]0n֑nY !M^si,cHcb=eQc T1TT xc A$h !Äc9`F]\rb{v_#"U1"pnf7h_~瑝n(^KQL#bӌfC&L _ѥL[=8�-@+QX985bU "Ң6J{_cw;545ca""ڭd5KU٨O#Ue=* .w|uSDqi[iC@k:7HԨ1L4AhT^b0|�{dx+u'Z-_5T�0}oksZid5.ΝT__&qfF-2-%oZMKU)jGS)Fm UԪ&T X$iɽ1}_^ �<"@q/TUE5긕.lZ˗W{Wu_QX9Lk/^i=dŔ4Ԥ%)xe>f+ͤEBU"g1�1FbPb *(ƤFUc?!~(CH^Kd6ܜG#ӄU�gѥy[Jbٸ_qV;B.R5ED|0MKIĠC#"*1}o|$/{\ƅxeԺ�e꘭.ۇv_j͉ǫƉ~zrE<`M0T՚KYS iF6*ZKvI@s%zEcć@e,zU cdY|1qϢ,{SAo6ѻa_ZnLyi3XEgQ%ơ+ۺppNLIJ, iI/cbTRnUUEt`3vRQ4DT"vǬ)Ku%&F!Kq&UY <}#Q} ݋~l< "xI<ܯ.Vj *jJ`>@E) '>x2H1)GU 1"q**b *I;{$JEeԄknw壟Pe)r\P% eY-'ʇpc�j]a>{_Ib$4"*QY UFT#U("1D|e$T)3%B+ J{c6?cu5Y]^H,,ϙf ]b߮*bT�ל?𳛴qkǗ>Ҝo,A:S?eURWwB(hx(}40k("2Ō1юmXmCz I˴șLD"Z 1nyZC|7$Yhǚ?<~ G! E<H Ā@+"+ _B—Q}"ZfjL S{i^]=rB'uC0ӼdB45WxϝKq��Z;FKZhMKb5WLJSM+ xU,l@ս1yLBgʀe qNH{8#kK`^oC=MpRYVlon0Gྟy\1,l-)m3mV|Wう\Y\8YYV 1eJYϺ{F aPiLĈ`qaN,u,FQ0in7t4.^g?^Une^<gk?�쯐ixϻ<xe&! 0O HU$ 5MYX2;$(s/EQbH'fPU^jiZ;;QU4HfZɕK7<pFg�[N"$j?k{wCw,--7?.?_е+Ҕ'O<^vv_~o=׿82O4Ơ@61FBT(5d(MV2mncWQU~ Xz >,a{#ƘGDι[kW$x'?~]kkW_d:Csp/<,X3߁u5x)>Oλ(+/A_q"X FOL,YB4'(zVNu bG\XG霵v^Ecm 'E/�,�:O~ZZ~kGOvZww:}Fmo|~sG:y/qez>_' y뱹AQ䈀ѬSKd|P /Q4ui4Sz4V/=x!VK/YkXk+cL~sVB�h 4M=lL"IRcUPy_o/<wy'ff#w G?gϞe}}{vÅW^!ƒÌӄ4uB %jH1|�HǗ.o ׮n cCUMU~sɧ !f=a0n9{̣>*""/"?5ʲnCrG_xy({3z[vWs6~_b~~N`0`qaZG} HbWL@<ZJ$+A,G|:O cs.uΚb+F eꍺQfQiOĵ…lnn`zNM,KQ?C?"=+++<g}P_%~iΟ?"'OdeevNWhȦepN8llɦZ4 clbfTbTU#bR~g_ `n�EDG(e0HYt:9r(x<#Gq*Njq|@;1dBGGرcL& l_f[D Ո"Ԓc`>f@46f 1NDD1sm"r8e@XL&@-˒f%NGݮFCBTiކPvL=ag ˼]g8s UUqa !pK_�D4)2BХ<INQ*9smkW`Tuc6֪.'"o1>OD!0L(˒,Q1F$CU)? TS5}OUuk^=Sw1?סȧ]y^os|_,3dW4Ɛ ͨ1D5!g ǏpyQiUBQ km�r*eYnTUBt]Hd (imy,˫eY~cێ1vce{bbaii U<ϹpUU& eU1#!&ag\e>+/Dg~ A0q6(!b0J(Jh5k0Sb$avkesNTnWU1$\ �'MSnjF#zs,,,U)*L`3"ĈF(Y,i}V6H39Lg6ZӼ̋8sss]306?{WKs^YYUBz-oj TF,//%MSK.QN51Qg ݆0K#!ҷ*c `GQVZ@]MdyG(+R$I]L˧>{ &?V$\K&Iy] 877wHDvbt:;;;IQTUEvőՃ4A"b` $h] dYq&[=dS 'bVm:&ZenUf`0FKeZy$ +`ƪa 1NO+g}da&<MxpP)t�tZ8vpV:4UU8۳%Q@W5hFx<&n@8@UN^ǓIF1W$<DwOk1*9M|{ XOvJ&|jL^tetKKsjb,ҔzͩqYvRVv]D]Acԭoꡥ) -+';}I "D7v╍b:%W)Ѫ$5$ fH}m`7h/aOdPm츎:#@t8l|wZۺFZfIZH:*x?sSc Gz VC.ϳmrruA<v@[u|ZTwruOV;~edSJƸf|ـ@-d \]}iMpwONrϔ,"]/7SggW;oݱO$5[owZh$`APĠ#Ց$VCi^0M$|Z$+�lXOc ]YB\ EƋ^KW7ecԬd, _Ÿ+H2O JB\O1K0H+cN~]p?^Ol7&fթ'VC]b"։"e)i^}59Yif+;yQ2dƹzuۈq$}Aj$*4jZ[#uz\S)dn4yXXGO>X�ũ(Л9g(pߋ~@C&Mh1KK58kqIBՈ*RͭӬ|e՘~d#;1ה健ͤSc? Nw5gϭǞz{vԜ(sBg �x[d/?_{sY?ȵj{!ěXwuם_k5T%uIt֊E>d$˪BUV|iVևG%yёKJ[o1颩BU/\Ջ;>?yW_|[vr*|{ q^Z8'[i_-t6xg򅉩槦x[ĺJb>1EYeYyCL @DW48U̽mXH1쟴{_F1?:X.=/<' uWw7_J/;_9|:|uuӜڏ&VeBeJ(alS4Sc-N⤿C#k ɛ#f':_z]_(ZU+ϵ'Ok$++iW8~jvjEI:l}7ҁˣ>Dq:|@}rvwM9`/ f@SJ-DRn1IwԶj}!ymBY+.\2CI X3N4}4�ifHRV!uߨG}mQwv[S-:qׯdǒo~6bi /K e>"wrQʖSLD^Ozf{yeO/U$ H$vNN}^=ۏ֩;F굄^56cYT՚V}so'7`_X}'l< ]j @,2J[$H Je"?gkۦ�" XV&<٣szjƪ^(aҲ4=slxnn ׃= p`Fϼs?g߽]vJpw= IDjq!4f]"nfi3˞gGZv0E(WSs꠹npK]`ݨT>~|vo{b ZEI|4U[-@iLB =eεbTZ$X kh +--Z47h)n:(m7y{B0@G~G,y! @qBfK}y]non\XP9yy0!VBt fJ .SPA w�n$z]SAb>-8L`SE'-=Rc[9 k*0N_ky'`BQYZ2T̢͸ſ�ً~s Rq {40K(R_Za%-`ˊWٵ5rXfZWp؀t(-vuZJ�&ka>#xgi <͚� n^u6aLzNȚ ?ӻf z8͇=�YWo۷YK����IENDB`����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/Wine.png�������������������������������������������������������0000644�0001750�0001750�00000023600�13431646201�015701� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq���gAMA�� a���bKGD������C��� pHYs�� �� d_���tIME�� �IDATxmIeWr&hfg7 #Ed)ՙ,�B�V Cj%F P U h*)LN` >7cfxE]^Q9٩1�@۶Z׵m+!����̺X,d: uͧ:WWW꜓�ե~����"[[[io޼i677mUU,K �^D{ "1bi8::Jvoou]Xk )U9(ƈpΉpJQ�@۶c �cs.<k(R%?39gA�{j8HUq6-ONNΪjs٢(UEDf1 2z^뺮ODUL) Ykc4�@Dd=:km;HQbffUl9 G|`{{{]vhgg㱫p"Rӧg}4lk5DdTRJBDmuucc<"q#cLR"D$D11ED�U9,3RY""ZRUu-eY~xpۇh6FU �<F�IDʜZkiuAQD$9lيG+"clJ �@#"DZQU֒6TaZc^G!-RXD{k;h<c̄ڶmClֆ8K)-T5F#s[nm<~?`08BDOD:%HUC!DbYj|Jɫ˅FEdDDb!\UT5GDֲVQH�Dc ;w߿o0F+7MLb", &AЏ1fu]\.�EQ�@=#X"cLBD$"Qhuc40[SJ CZEDȹ̌"B㜳"lDDŝZEѣ޹smllƘ3X.WboM^m裏̣G۷ cd>su,K`fʍ/~`fi"BhY�0EQ]0WK_o]]B08"Bjrdsd޻ mmm]Zk1t:_\\L===K x}/z^i-өDDu]۪[Ϟ=RUQcfFc ρ9g1$"$"d�1}#5n��,1ƵTU9:PD0;;;v[[[ƘirzzzϞ?, =::??w?( tu],jkk c3s{_޺u<::|>amhdk-""ch]{_��9gB>d4DD4w��taJ �wxx[׮];uΝm{9LW^-OOOlI|5˿K.9 cL�9Ea`y�\ui߿O?~HDcjQff""1d23S!|k�UEUz]ug>::ugggi@DuG?sDu{Uu䜻o^UU~[˟k׮ "*"J삈۸Zk: =\yTUBB`7h.ƨ)-wpp0!Q}uuiU~G}D{Q]|.d})s�Bķʲ|pzzm1v8>>)3o9mv8$23u؆uϠ+((MsQ@18޾wۏ?�ryzyy|vyyYO&\.C4cdff???C޻ܶz6TՈDto{?u}\.mۣݟݿ_}gݻ!":{ 9��M St%έN߼ w U|^.7n<!<|yrrr9LɤY,1u]*xOOOOZKZkKϦ]<Tk;Gx,˭ғb1 !On߾qWն�@Ǵ>C>/cІ n麎]rc<�vX,1O~rd2Y&3RDD1Yk9GHh+rc^]}k>CD{L˶mf)|'ɓ~=ytKv]'o]}~]r#�t:{?xYdt:]uuB�ʫۿ ?~{DDL)'"RcRRJƘƘι۽^ow:^u= !)@DW<_>Oe49!Y2B "+@D 8am�8::zx֭?{uur$s5Ƥ(R0uwwM`Y=#m[S]c=c|idB$뺮;cLxh4Ç;˗_~_ʲV33�P[v]ZTURJXk%*|޽ukc|i#"zK )DD23`0͛7�IU3;DZ)"ey�XkoWUug]qn8! !`ugϞ}[nɓ'c_1F�`]$L۶�yѽ[o6|4 9^TUD#MHYu23t]EQ6N$"4mQ^D"z8[ko@uyym;O)ZZkZeYDD۶b!1x?~Ν;?~7ƜzYD8N1` � Š��1FDD_zukw=־1)]zƘNUZ`Ţ({�`˥u\zƘ~Q;z>8==&01^ ʪ<6mQ4r{?>xgϞ=yJoT Z";�SՁTDD~wwvv>~Ѥ,˧"r,"/Z �RV[0@U{o~ߍF,Z[ꐈMM_,U۶]]fU(HD""&UcB9 ׮]6Ƽf�D$�@Pds[S޵|͵`wޝeRU1Z;.Ȉ( ""dG謵4h4rEQڞ1f软C"2l/jXt<WZDڜ1k1dDDup8zncc...ڗ/_޸q[n~�z uYQl(Bw}Wᅵ %�􀈀ڶUmm[oUU~A5 hPE("۶/rQchFRJ1m۪x<Yk1 ^Fv6c""N/^|{}}ccZ ��mZtnϞ=(T97!�MN4dܥ1Eass; \3h]1�eYg) ybZ.�^�peYѨdjիׯqͽ?!�W@,KЕƇj˽x,K"Tչ1wHXU51FqrD1]י+˲(˲7hӫjdzWWW,0QӪ"3|>mJ\X5.KᗗhdCh4m[f{ّi>}駟G?vxxւuέ%cONN=z+cDU[�pCVMuBilJWUU:h4Fc\ADizuuefمvQE�|>!Uc �آ(LZk]CQXE,b0TpknڶM!p||ŋ~1e=SlnS`A眙L&}�EQLu+U�5"RJ)VϚ _Uՠs#q!uuUt]]G�ʲ DM)Rj3 {?!ʲ,19WTUUVUUlood)"k.ݾ}gϞ{"bXk-dksڶ9Z=cLcD饔v"0sKD9 wYD1`>Ksuul0L777{s �@`i�EDq!"&(UŦim~""GDU;;;1xqq"ǧwygv]wֶز,{9-j:[YFVU븊K�AD1b'L&v>ŵk׺ι1~bf&54gU1b<oXs㪪Bcmŋ/.~ѽ{}'D_NY:"^wOOo߸q,Z[Q"]r3xe׶(`0^{UU%\rέIUiY`1yִ@,˲(�2meX1 ".xڵj<~{4ͥm"*1V_vww/R׻^U!K)IJ)Bum۸\.WWW^.x<p^Os꽇mjMƘh 뾏7cLUU*SɊ!jQ1pUYK0�1Fm&maܾ}{\.ŋOlUm2Oww?H)i!iaX,Z,c777e4YD,SJuõD�(S�g�Т(hE(ȈY@k= y= ھ1)˲3{_ j4|2Ͷ)%oUu=k`?<y~c|\m{2NgBDq.e) YS1qQ2ch= 2:mVQ۶ 1ƴιUU˭z6š6Ν;xΝ][׵2dĈH"by{{{8:�xX,N5^O>nll �swM`$"5ƬGBDfefzd5�`UıBHVJf|W^ duQ�Zk*FQYUb>'D(c{mI�`^UMJ ݻ~?lߗcxE<,KylV_)Dz17�&jjX"I1@uk�۔ibU툨FDo]G ycL덝sHDpXyi"^J03@sNMnnn`,Ib'4Z)% !`Z^˽JkITA0{qJy<JġMjCl[)A1^]TMe 2\/˲I)5V999 7n�KD-�ZH?/<@1޽{>|{oo_͝iN͇<WSU.K̒f&`I[kV%=x =SSSbԦM4>$*b 4(B1r1(hY,̤"""k-@Sx=e�-˦m[]QV<�"R<5W^L&׮]m<g%Ba+dج"bRJ�*&d1@�RBCv`�)9ܶ%F"QRIuIH%ZDf^.ܜ4x4mZ=f橵xEr>f Dĥ4@YH7o|MFp81֋BbB<M"Uf"Dt1F/TAMu#K`>r\N6홶-!RBev R@�&Z)Eyu ''`1* ˢs;{ޟ*Dx<EQsII$b_~y:LFx\.'|pL)@ DBE|꺱[L&7zhQ1ƫ :1BdZcC% E0Py:J;,S`y"DNbUjތij!�� ֭['~p<{ U$1~>l54`o2X, PuP�rJ 1 BPQVE@Y*T�dTQ,` P$iXZY AQ�jcdH{�,"AVA}4ׯwݻ7tz:f/)9Cm]?9>O&D Y^-c9`vjDbD �D"U$URPDU�D"@�+QQP�وH{5D)d"�i}x]1#9`SJd|;ht9hXl]`?L(!2�CDc wiuЕ@U�c#VSl�CqNZ`UTcx/ݻt~Fub`k-[kSVI�z,aN}M<y;ڭ-~_ ǃܸ��N�Y2%"cV(EQ`E~PEPSV]u( � " kW _�B8F#9ʈSr 6&a,u-yδZTDDft]1F4OꫝhtnZׇWW+D4*bI!EDB•nŌVt۝U@ȡM`c^*U0"1e1b l]5R10�0sN/)%1J.m[~g~q1DW�Gd2])%PpS**S f0ւ]"X( du��D�)vNcےY3hS c0!wG"J9οy͏6-w.^]^OT*Wh=݀1f]"|HDPa!su)*ƹ{��UDqe@�BJmwJ"R" BBr~_RJ!ٖE՝?`Xyg�EXmT�qk 8cބSpJ!�&18@aa]mk`@:Um P�(9ڵϼYSJoiDBkcHyw{W_mD,̪S�"3" Ƭ;.d$ ؼA`K\!ymR.F3Э9HׁJ` h1hV�(t"Ua5�m˜ҫ_Ww[[m{E_UATsxC ZfE I@$f0֭1Pf\dVLVG*$�Z4O_a.yDҐRbiOK66J=<ej b4M1#Uފ"��*�3P2D͆Bc�[UZ DD �߫9:8Д�UEETWVʝm[ !H1e3u]zVFA��IDAT\^aǯ�ޖzk,sʈr+u%*h 9%p*Z{y3P��@+<IB~,(#ڸ[`SJucĢ(B:sDpkr?_}ࠝN/r9FUTsqQx�D`W8%@c@EHWa9 #1D`U@�DDkxf3)R9CusVfAzF;�V~_㟸MY'mi0FU3Qu? E2R? �d-@xDPZb&8"+`"m=|hj<>bIιI�cBHyb^51yZo={u{{VYļ |PYE7(Or xTuuU4}gH{W8yec�EX QUڽSVl*^Ĭj4ƘbQz:Cyhupzzbq8u:??~""#UˡKAs߇˙Z� QdYւYGw=fFi&qAʲ4EQآ(_]u#6u9 �LFD�51*ʹ$UeM�D41뚮W!꛿ƨ)1hۏIa,̕5\s`Y8�|~|~t:L:f"YYv$nk.Z.n|R~Dssȷ�5|]M|zv6D y"}Q :\AFF=z9gs/¢xX=~,/;=}_,"%`�WFV��1u b Tw"H+6 wd+1Qݽ߸+",fnR!8眪ڔXk) %CdIO9;_:>jtz<{fگ~18=mR㔈Ueߊ�znVoĕUx@D4DJLWA_Tggg't\lPW:}Ñ5Gx(;c Ea(L6�ؘ|w8[nm> /^O\[kkcD \PJ+Z$*HAUp]��(^WvgƻKxgEwS]!ac ̫;�� ^979""ݽ{?<}wpoϞoo"], Lq>Gk�UUBX-_Ĩ"iEAVd%") 0 rGZ?W,EQ].^kNs1Fn}2v&Eo<]׀7O!|ɻ7nhQT t <N�6 XUfMM#kUfWHtDRbK*Mb7wx1wMsӝ;w>\sPUeMpYf6QUUB)x 1mF9IU2}͓"~W'''b{<AO^94DHƀyskyTk4r" I!lׯ;M qY8??)x?ݸK" �ޞ߹s5.����IENDB`��������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/TerminalGNUstep.xpm��������������������������������������������0000644�0001750�0001750�00000051301�13431646201�020037� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * Terminal3_xpm[] = { "60 58 871 2", " c None", ". c #E9E9E9", "+ c #ECECEC", "@ c #F0F0F0", "# c #EFEFEF", "$ c #EDEDED", "% c #EEEEEE", "& c #EBEBEB", "* c #E8E8E8", "= c #E6E6E6", "- c #EAEAEA", "; c #C1C1C1", "> c #D8D8D8", ", c #DDDDDD", "' c #DCDCDC", ") c #D9D9D9", "! c #D7D7D7", "~ c #DADADA", "{ c #DDDEDE", "] c #DEDFDF", "^ c #E2E2E2", "/ c #E3E3E3", "( c #E5E5E5", "_ c #E4E4E4", ": c #E1E1E1", "< c #E7E7E7", "[ c #CBCBCB", "} c #D1D1D2", "| c #D2D1D2", "1 c #D5D5D5", "2 c #D8D7D8", "3 c #D6D6D6", "4 c #DEDEDE", "5 c #DFDFDF", "6 c #C8C8C9", "7 c #D3D3D3", "8 c #CFCFD1", "9 c #CCCDD1", "0 c #D7D7D8", "a c #D5D5D6", "b c #D2D2D5", "c c #D0D1D5", "d c #CCCFD5", "e c #CBCDD6", "f c #CACCD5", "g c #CCCFD7", "h c #CBCED8", "i c #CBCCD8", "j c #C9CBD8", "k c #C6C8D7", "l c #C5C6D8", "m c #C5C7D8", "n c #C6C8D9", "o c #C4C7D9", "p c #C6C9D9", "q c #C3C7DA", "r c #C1C4DA", "s c #C2C6DB", "t c #C2C5DD", "u c #D5D8E2", "v c #E3E3E4", "w c #E9EAEA", "x c #C8C8C8", "y c #D4D4D4", "z c #D0D0D3", "A c #74799C", "B c #676F94", "C c #626991", "D c #5C628F", "E c #5A638F", "F c #555D8F", "G c #575F92", "H c #545E91", "I c #515A95", "J c #505A96", "K c #525D99", "L c #525D9A", "M c #525C99", "N c #525E9D", "O c #4D599C", "P c #4F5C9E", "Q c #4C5AA0", "R c #4A55A2", "S c #4A56A0", "T c #505CA4", "U c #505BA4", "V c #5361A6", "W c #5964A9", "X c #5A66A9", "Y c #6D77B1", "Z c #C6C9DD", "` c #E0E1E3", " . c #EBECEC", ".. c #C4C4C5", "+. c #CBCACE", "@. c #4E588E", "#. c #06156E", "$. c #02146E", "%. c #021170", "&. c #041372", "*. c #041373", "=. c #051576", "-. c #0A1A7E", ";. c #0A1A80", ">. c #0C1C81", ",. c #0C2188", "'. c #0E1F89", "). c #11228C", "!. c #122790", "~. c #132592", "{. c #162893", "]. c #182C97", "^. c #1A2E97", "/. c #1B2C98", "(. c #1C2E99", "_. c #1E309B", ":. c #20329D", "<. c #21339E", "[. c #2334A0", "}. c #3B4AA7", "|. c #CBCEE0", "1. c #F4F4F4", "2. c #F2F2F2", "3. c #C6C6C6", "4. c #D2D2D2", "5. c #C7C7CE", "6. c #4B558F", "7. c #061573", "8. c #011072", "9. c #021172", "0. c #051978", "a. c #071779", "b. c #091A7F", "c. c #0B1B82", "d. c #0D1E87", "e. c #0F208A", "f. c #11238E", "g. c #122390", "h. c #142991", "i. c #152792", "j. c #182A97", "k. c #1A2B97", "l. c #1B2D98", "m. c #1C2E9B", "n. c #1E309D", "o. c #22339F", "p. c #2233A0", "q. c #2436A1", "r. c #3D4FA8", "s. c #CCCEDF", "t. c #F8F8F8", "u. c #F5F5F5", "v. c #C6C7CC", "w. c #4A548F", "x. c #081776", "y. c #051772", "z. c #051678", "A. c #07187B", "B. c #0C1D87", "C. c #10228D", "D. c #12268D", "E. c #132491", "F. c #142691", "G. c #162895", "H. c #172996", "I. c #1A2B98", "J. c #1B2D9A", "K. c #1D2F9A", "L. c #1F32A0", "M. c #2537A2", "N. c #2739A4", "O. c #3E4DAB", "P. c #CACDDF", "Q. c #F7F7F7", "R. c #F3F3F4", "S. c #CACCCE", "T. c #455190", "U. c #0C1B79", "V. c #081B7C", "W. c #0C1C83", "X. c #0D1E88", "Y. c #12238F", "Z. c #132590", "`. c #142693", " + c #1A2C9A", ".+ c #1D2F9C", "++ c #2638A3", "@+ c #2839A3", "#+ c #283AA5", "$+ c #4252AC", "%+ c #C8CCDD", "&+ c #F6F6F6", "*+ c #C5C5C5", "=+ c #CECDD0", "-+ c #596298", ";+ c #101F7E", ">+ c #081879", ",+ c #0A1C7E", "'+ c #0C1D84", ")+ c #0E1F88", "!+ c #122490", "~+ c #162994", "{+ c #1B2E97", "]+ c #1F329A", "^+ c #22349C", "/+ c #20329C", "(+ c #1F329C", "_+ c #1F319D", ":+ c #2335A0", "<+ c #2335A2", "[+ c #293AA6", "}+ c #2B3CA8", "|+ c #C4C8DD", "1+ c #EDEEEE", "2+ c #EEEFEF", "3+ c #C9C9C9", "4+ c #CFCFD0", "5+ c #606A9B", "6+ c #112180", "7+ c #0A1A7C", "8+ c #0A1B80", "9+ c #10218B", "0+ c #142590", "a+ c #1B2D95", "b+ c #293D9E", "c+ c #374BA6", "d+ c #4256AD", "e+ c #4257AE", "f+ c #3F51AC", "g+ c #3547A8", "h+ c #2A40A4", "i+ c #2436A0", "j+ c #2C3EA8", "k+ c #4657AC", "l+ c #F3F4F4", "m+ c #F8F9F9", "n+ c #FDFDFD", "o+ c #F3F3F3", "p+ c #CDCDCD", "q+ c #D1D0D1", "r+ c #646B9E", "s+ c #132383", "t+ c #0C1E80", "u+ c #0D1D83", "v+ c #0E1F86", "w+ c #122591", "x+ c #203597", "y+ c #354AA6", "z+ c #566AB6", "A+ c #7387C5", "B+ c #7C96CC", "C+ c #7E99CE", "D+ c #788BC8", "E+ c #6175BE", "F+ c #495FB3", "G+ c #3648A8", "H+ c #2D3FA6", "I+ c #293BA4", "J+ c #2D3EA8", "K+ c #2F40A8", "L+ c #4654AE", "M+ c #C2C5DB", "N+ c #F2F3F3", "O+ c #F9F9F9", "P+ c #D1D2D3", "Q+ c #7076A3", "R+ c #152485", "S+ c #0F2087", "T+ c #132490", "U+ c #1F3197", "V+ c #3C52A9", "W+ c #607BBE", "X+ c #83A3D7", "Y+ c #7892E9", "Z+ c #657FEB", "`+ c #5F7AE8", " @ c #6D90EC", ".@ c #8DAADE", "+@ c #8196CD", "@@ c #6373BE", "#@ c #4E5EB5", "$@ c #3F4FAE", "%@ c #3444AA", "&@ c #2D3FA8", "*@ c #3142AA", "=@ c #4755AF", "-@ c #BEC2DB", ";@ c #F7F8F8", ">@ c #EEEEEF", ",@ c #F0F0F1", "'@ c #CCCCCC", ")@ c #D0D1D3", "!@ c #777EA8", "~@ c #192887", "{@ c #11238C", "]@ c #13248D", "^@ c #192C94", "/@ c #3447A4", "(@ c #647ABE", "_@ c #7397DC", ":@ c #4B63CF", "<@ c #3548B5", "[@ c #3345B0", "}@ c #3347B0", "|@ c #3243B1", "1@ c #465AC6", "2@ c #7795EC", "3@ c #9AAED9", "4@ c #8592CD", "5@ c #6A76C1", "6@ c #4A5AB4", "7@ c #3546AB", "8@ c #3042AB", "9@ c #3343AC", "0@ c #4957AF", "a@ c #BBC0DA", "b@ c #F5F6F6", "c@ c #F1F1F1", "d@ c #CACACC", "e@ c #D1D1D3", "f@ c #7B82AC", "g@ c #1C2B89", "h@ c #122389", "i@ c #162991", "j@ c #25389D", "k@ c #5065B3", "l@ c #7C99D6", "m@ c #4D65D2", "n@ c #3B4DBA", "o@ c #495CCA", "p@ c #5364D0", "q@ c #5365D0", "r@ c #4759C6", "s@ c #5E6FDB", "t@ c #7D90FA", "u@ c #B1CBF3", "v@ c #97B7E9", "w@ c #8AAAD9", "x@ c #6A77C1", "y@ c #4252B0", "z@ c #3244AC", "A@ c #3445AE", "B@ c #BABFDB", "C@ c #F4F5F5", "D@ c #D2D2D3", "E@ c #7E85AD", "F@ c #1D2D8A", "G@ c #13248B", "H@ c #15268F", "I@ c #1A2C95", "J@ c #3448A5", "K@ c #6F88C6", "L@ c #6C8AEB", "M@ c #4053C0", "N@ c #5669D7", "O@ c #6374E0", "P@ c #6779E4", "Q@ c #5264CF", "R@ c #AABBFE", "S@ c #FDFDFE", "T@ c #7285EF", "U@ c #7C9CED", "V@ c #8692CD", "W@ c #4F5DB7", "X@ c #3849AF", "Y@ c #3547AF", "Z@ c #4B5AAF", "`@ c #BABEDB", " # c #858DB2", ".# c #202F8B", "+# c #15268D", "@# c #172B92", "## c #20339A", "$# c #4657AD", "%# c #86A3D3", "&# c #536BD9", "*# c #5163D0", "=# c #6879E5", "-# c #6D7FEA", ";# c #6F81EC", "># c #5B6DD8", ",# c #ADBEFE", "'# c #CDDEFE", ")# c #8FA8F2", "!# c #95A0D4", "~# c #5765BB", "{# c #3B4DB1", "]# c #3749B0", "^# c #4C5AB0", "/# c #B7BCDA", "(# c #898FB4", "_# c #21308C", ":# c #17288F", "<# c #192D94", "[# c #24359C", "}# c #4C5FB2", "|# c #8FB0DA", "1# c #4D63CF", "2# c #5E6FDC", "3# c #6E80EB", "4# c #7284EF", "5# c #7385F0", "6# c #6373DE", "7# c #F8FDFE", "8# c #A1BCF4", "9# c #9CA7D8", "0# c #5C6BBE", "a# c #3E50B2", "b# c #3A4AB1", "c# c #5161B1", "d# c #B2B8D9", "e# c #C2C2C2", "f# c #CFCFCF", "g# c #9298B7", "h# c #22318D", "i# c #182A91", "j# c #1B2F96", "k# c #24369C", "l# c #4F61B2", "m# c #89B2DB", "n# c #5165D2", "o# c #6678E3", "p# c #7183EE", "q# c #7384EE", "r# c #7F91FC", "s# c #8494FE", "t# c #798BF5", "u# c #B5C6FE", "v# c #B8D2F5", "w# c #A1ACDB", "x# c #606FC0", "y# c #4253B4", "z# c #3B4CB3", "A# c #4F5DB1", "B# c #AEB5D9", "C# c #C0C0C0", "D# c #979DBA", "E# c #25348E", "F# c #1B2C93", "G# c #1B3198", "H# c #24379E", "I# c #495AB0", "J# c #86A8D6", "K# c #617BE8", "L# c #6A7CE7", "M# c #7081EB", "N# c #6C7CE7", "O# c #A8B8FE", "P# c #BDCFFE", "Q# c #E8F9FE", "R# c #F9FDFE", "S# c #B3CCF7", "T# c #A2B1DD", "U# c #6673C2", "V# c #4555B6", "W# c #3C4DB4", "X# c #5261B3", "Y# c #ABB0D8", "Z# c #E8E9E9", "`# c #C1C1C3", " $ c #C7C7C7", ".$ c #D0D0D2", "+$ c #A1A7C0", "@$ c #26358E", "#$ c #1D2E95", "$$ c #1E2F99", "%$ c #24359D", "&$ c #4152AB", "*$ c #879AD0", "=$ c #87A0F2", "-$ c #6A7BE5", ";$ c #7283EF", ">$ c #6475E1", ",$ c #A8BAFE", "'$ c #BFD0FE", ")$ c #D0E1FE", "!$ c #E1F1FE", "~$ c #EEFDFE", "{$ c #F2FDFE", "]$ c #DFF1FE", "^$ c #A0B6F8", "/$ c #A5B5DF", "($ c #6A77C5", "_$ c #4757B7", ":$ c #3D4EB5", "<$ c #3E4FB6", "[$ c #5260B2", "}$ c #AAAFD7", "|$ c #BFBFC1", "1$ c #CECFD1", "2$ c #B1B5C9", "3$ c #29378F", "4$ c #1F3097", "5$ c #203199", "6$ c #25379E", "7$ c #3D4FAC", "8$ c #8592CC", "9$ c #A6C5EE", "0$ c #7488F3", "a$ c #7687F3", "b$ c #6475DF", "c$ c #A7B8FE", "d$ c #BACBFE", "e$ c #C4D4FE", "f$ c #CEDFFE", "g$ c #D7E9FE", "h$ c #DCEEFE", "i$ c #B8CAFE", "j$ c #7F90F7", "k$ c #B1B9E1", "l$ c #6E7BC7", "m$ c #4959B9", "n$ c #4152B6", "o$ c #4152B7", "p$ c #5361B2", "q$ c #A7AED6", "r$ c #E0E0E0", "s$ c #CECFD0", "t$ c #B5B9CD", "u$ c #2B3990", "v$ c #203197", "w$ c #23369C", "x$ c #2637A0", "y$ c #3F52AE", "z$ c #8396CF", "A$ c #8DABF1", "B$ c #697DE9", "C$ c #8899FE", "D$ c #B0C1FE", "E$ c #B9CAFE", "F$ c #BDCEFE", "G$ c #C1D3FE", "H$ c #C7D9FE", "I$ c #7E8EF5", "J$ c #6179E1", "K$ c #B2BDE3", "L$ c #727EC9", "M$ c #4E5DBB", "N$ c #4353B7", "O$ c #4253B8", "P$ c #5461B5", "Q$ c #A5ACD6", "R$ c #B4B7C9", "S$ c #2C3A90", "T$ c #213198", "U$ c #23359F", "V$ c #2839A1", "W$ c #4454AF", "X$ c #8895CF", "Y$ c #6E8DF2", "Z$ c #495AC4", "`$ c #7081E9", " % c #ABBDFE", ".% c #BCCCFE", "+% c #BBCCFE", "@% c #BED0FE", "#% c #BCCDFE", "$% c #8C9CFE", "%% c #4859C0", "&% c #5C72D9", "*% c #B7C0E4", "=% c #7582CB", "-% c #5160BC", ";% c #4354B8", ">% c #4455BA", ",% c #A3AAD6", "'% c #B4B7CA", ")% c #22339A", "!% c #293BA2", "~% c #3E4EAF", "{% c #7786C8", "]% c #7E98EC", "^% c #687DE5", "/% c #566BD4", "(% c #6E80E9", "_% c #91A4FD", ":% c #A3B6FD", "<% c #A7BAFD", "[% c #9CADFD", "}% c #7587EE", "|% c #4E5FC6", "1% c #495CC3", "2% c #647AE0", "3% c #B8BEE4", "4% c #7782CB", "5% c #5161BD", "6% c #4556BA", "7% c #4758BB", "8% c #5663B5", "9% c #A0A6D5", "0% c #F1F2F2", "a% c #ECEDED", "b% c #CBCBCC", "c% c #B4B9CB", "d% c #2C3B91", "e% c #293AA4", "f% c #3545AC", "g% c #5C69BC", "h% c #889DD2", "i% c #96B9E2", "j% c #9AB9E8", "k% c #97B5EB", "l% c #97B5EE", "m% c #9EB7EF", "n% c #99B2F1", "o% c #95AEF2", "p% c #8DA9F3", "q% c #91ADEF", "r% c #A0BEE9", "s% c #A6AEDD", "t% c #707DCA", "u% c #5161BE", "v% c #4859BB", "w% c #495ABD", "x% c #5B6AB8", "y% c #99A1D2", "z% c #EFF0F0", "A% c #B4B8CA", "B% c #2E3C94", "C% c #25369D", "D% c #293AA2", "E% c #2B3CA5", "F% c #2F40A9", "G% c #3E4FAF", "H% c #5966BB", "I% c #6B78C4", "J% c #7883C9", "K% c #7E8ACC", "L% c #8590CE", "M% c #8B95D1", "N% c #909AD3", "O% c #969FD6", "P% c #9CA5D9", "Q% c #A2AADB", "R% c #A3ABDC", "S% c #9BA4D9", "T% c #838ED0", "U% c #626FC4", "V% c #4D5EBE", "W% c #4B5BBE", "X% c #5A67B8", "Y% c #98A0D0", "Z% c #FAFAFA", "`% c #CACACA", " & c #B8BBCD", ".& c #374499", "+& c #28399E", "@& c #2B3CA3", "#& c #3041A9", "$& c #3344AC", "%& c #3B4CB0", "&& c #4859B6", "*& c #4C5CB8", "=& c #5361BB", "-& c #5665BD", ";& c #5B69C0", ">& c #5F6DC2", ",& c #6573C4", "'& c #6A76C6", ")& c #6C79C7", "!& c #6A77C7", "~& c #5F6EC4", "{& c #5362C0", "]& c #4B5CBE", "^& c #4A5ABE", "/& c #4D5DBF", "(& c #5C69B9", "_& c #939ACD", ":& c #BFC4D1", "<& c #44519C", "[& c #2B3B9B", "}& c #2D3EA5", "|& c #3242AB", "1& c #3344AD", "2& c #3446AE", "3& c #3749AF", "4& c #3C4CB2", "5& c #3F50B4", "6& c #4151B6", "7& c #4555B7", "8& c #4656B9", "9& c #4A59BA", "0& c #4A5BBB", "a& c #4F5FBC", "b& c #4F5FBE", "c& c #4E5DBE", "d& c #4A5BBF", "e& c #4B5CBF", "f& c #5060C0", "g& c #5E6BB9", "h& c #969FCE", "i& c #FBFBFB", "j& c #CECFCF", "k& c #C2C3D1", "l& c #5662A3", "m& c #324099", "n& c #2F40A7", "o& c #3546AF", "p& c #3648AF", "q& c #394AB0", "r& c #3A4BB2", "s& c #3F50B5", "t& c #4252B7", "u& c #4858BC", "v& c #4E5EC0", "w& c #6171BB", "x& c #8F98CA", "y& c #E0E0E1", "z& c #BABBBB", "A& c #C3C6D2", "B& c #636EA7", "C& c #394698", "D& c #3042A9", "E& c #3849B1", "F& c #3E4FB4", "G& c #4354B9", "H& c #6873BC", "I& c #8890C5", "J& c #E6E7E7", "K& c #B7B8B8", "L& c #B5B7B7", "M& c #CECECF", "N& c #C8CAD5", "O& c #6771AC", "P& c #4D5CA8", "Q& c #4654AA", "R& c #4150AC", "S& c #4252AF", "T& c #4151B1", "U& c #4252B2", "V& c #4252B3", "W& c #4353B4", "X& c #4454B5", "Y& c #4353B6", "Z& c #4454B7", "`& c #4656B8", " * c #4757B9", ".* c #4858BA", "+* c #4A5ABC", "@* c #4A5ABD", "#* c #4D5DBE", "$* c #6370BB", "%* c #8691C3", "&* c #D6D5D8", "** c #B1B2B2", "=* c #B7B7B7", "-* c #D5D6D7", ";* c #D0D0D5", ">* c #D6D7DB", ",* c #D2D3DD", "'* c #C5C8DC", ")* c #BDC1DA", "!* c #B4B9D9", "~* c #AFB5D8", "{* c #ACB2D7", "]* c #A8B0D7", "^* c #A0A7D5", "/* c #8D95CC", "(* c #8891C9", "_* c #828BC6", ":* c #7D86C3", "<* c #7A84C2", "[* c #7882C0", "}* c #757FBF", "|* c #727DBD", "1* c #727CBD", "2* c #7A84C4", "3* c #858DCA", "4* c #99A1D4", "5* c #A1A6D2", "6* c #D0D0D7", "7* c #C2C3C3", "8* c #AFB0B0", "9* c #B1B1B1", "0* c #D9DAD9", "a* c #D9D9DA", "b* c #DFE0E0", "c* c #DADBDB", "d* c #B9B9BA", "e* c #DDDDDE", "f* c #DEDEDD", "g* c #DBDBDB", "h* c #D6D7D6", "i* c #BCDF78", "j* c #D3D6CF", "k* c #BFC0BF", "l* c #B7B7B8", "m* c #BBBBBB", "n* c #C7C8C8", "o* c #B9B9B9", "p* c #BEBEBE", "q* c #C2C2C3", "r* c #C4C4C4", "s* c #C5C5C6", "t* c #D0D0D1", "u* c #D6D6D7", "v* c #C6D89B", "w* c #BDBDBD", "x* c #BDBDBE", "y* c #DBDBDC", "z* c #5E5D5D", "A* c #6E6E6E", "B* c #787878", "C* c #878788", "D* c #A2A2A3", "E* c #A3A3A4", "F* c #B1B1B2", "G* c #B5B5B7", "H* c #BEBEBF", "I* c #C1C1C2", "J* c #C5C5C7", "K* c #D1D1D1", "L* c #DADCDC", "M* c #5F5F60", "N* c #6F7174", "O* c #6D6E70", "P* c #767677", "Q* c #7F7F80", "R* c #919192", "S* c #999A9C", "T* c #9B9B9C", "U* c #A7A8A8", "V* c #A9A9AA", "W* c #A8A8A9", "X* c #ABABAC", "Y* c #AAAAAA", "Z* c #A5A5A6", "`* c #A1A1A3", " = c #ACACAC", ".= c #ADADAD", "+= c #B6B6B7", "@= c #434343", "#= c #666767", "$= c #7B7C7C", "%= c #898C8C", "&= c #868789", "*= c #848587", "== c #89898A", "-= c #8F8F90", ";= c #939394", ">= c #979798", ",= c #9D9FA0", "'= c #A3A4A4", ")= c #A9AAAA", "!= c #AFAFAF", "~= c #AEAEAF", "{= c #B0B0B0", "]= c #B2B2B2", "^= c #B6B6B6", "/= c #B5B5B5", "(= c #BCBCBC", "_= c #CECECE", ":= c #5D5D5D", "<= c #6F6F6F", "[= c #888888", "}= c #8F9392", "|= c #99999A", "1= c #A0A1A3", "2= c #ADADAE", "3= c #ABACAC", "4= c #AAABAB", "5= c #B8B8B9", "6= c #969696", "7= c #A3A3A3", "8= c #AEAEAE", "9= c #C3C4C4", "0= c #C6C7C7", "a= c #C9CACA", "b= c #C6C6C7", "c= c #D0D0D0", "d= c #B8B8B8", " ", " ", " ", " ", " ", " ", " ", " . + @ @ @ # @ # $ % $ + + & * = - ", " ; > , ' ) ! ~ ' , { ] ] ] ^ / ( _ ( ( _ _ _ / _ _ _ _ : _ * < * ( ", " [ > } | 1 2 ! 3 ! ! > ' ' 4 5 ^ / _ = ( ( ( ( ( = < . < . < < & * / * ", " 6 7 8 9 2 0 a b c d e f e g h i j k l l m n o p q r s t u v * $ & w . ", " x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ` _ # & .$ $ ", " ..} +.@.#.$.%.&.*.=.-.;.>.,.'.).!.~.{.].^./.(._.:.<.[.}.|.( ( # - $ 1.2. ", " 3.4.5.6.7.8.9.*.0.a.b.c.d.e.f.g.h.i.j.k.l.m.n.:.o.p.q.r.s.( < % & @ t.u.2. ", " 3.4.v.w.x.y.*.z.A.;.c.B.C.D.E.F.G.H.I.J.K.n.L.p.q.M.N.O.P.( ( % % # 1.Q.R. ", " 3.4.S.T.U.7.z.V.-.W.X.C.Y.Z.`.G.j. +J..+:.o.p.q.++@+#+$+%+_ ( % % # 1.1.&+1. ", " *+y =+-+;+>+A.,+'+)+e.!+~+{+]+^+/+(+_+L.o.:+<+++@+[+}+$+|+_ _ % 1+2+u.&+1.u.* ", " 3+y 4+5+6+7+8+'+)+9+0+a+b+c+d+e+f+g+h+i+:+M.++@+[+}+j+k+|+/ _ % 1+l+m+n+&+o+% $ # ", " p+1 q+r+s+t+u+v+C.w+x+y+z+A+B+C+D+E+F+G+H+I+#+[+}+J+K+L+M+/ _ % 1+N+O+n+O+o+@ $ # 1. ", " p+3 P+Q+R+W.S+).T+U+V+W+X+Y+Z+`+ @.@+@@@#@$@%@&@J+K+*@=@-@/ ( # # R.;@Q.Q.1.2.>@$ ,@t. ", " '@3 )@!@~@S+{@]@^@/@(@_@:@<@[@}@|@1@2@3@4@5@6@7@K+8@9@0@a@_ _ @ # 1.&+b@&+Q.c@c@# o+Q. ", " d@4.e@f@g@h@]@i@j@k@l@m@n@o@p@q@r@s@t@u@v@w@x@y@z@9@A@0@B@_ ( c@# l+C@&+&+1.@ # c@1.Q. ", " 3+4.D@E@F@G@H@I@J@K@L@M@N@O@P@P@Q@R@S@S@T@U@V@W@X@A@Y@Z@`@( = 2.# l+l+&+Q.1.c@# c@u.&+ ", " *+4.4. #.#+#@###$#%#&#*#=#-#;#-#>#,#S@S@'#)#!#~#{#Y@]#^#/#( = c@% C@l+&+Q.2.@ # c@u.Q. ", " *+4.} (#_#:#<#[#}#|#1#2#3#4#5#4#6#,#S@S@7#8#9#0#a#]#b#c#d#( = # $ l+l+C@Q.2.>@@ c@1.u. ", " e#f#} g#h#i#j#k#l#m#n#o#p#q#r#s#t#u#S@S@S@v#w#x#y#b#z#A#B#_ ( $ - l+u.C@&+@ 1.# 2.1.u. ", " C#[ 4.D#E#F#G#H#I#J#K#L#M#N#O#P#'#Q#S@S@R#S#T#U#V#z#W#X#Y#/ _ & Z#C@&+b@l+2+@ @ c@1.u. ", " `# $.$+$@$#$$$%$&$*$=$-$;$>$,$'$)$!$~${$]$^$/$($_$:$<$[$}$^ _ + * C@C@&+u.# # @ @ 1.u. ", " |$*+1$2$3$4$5$6$7$8$9$0$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$_ . * l+l+C@u.@ # # @ 1.u. ", " x s$t$u$v$w$x$y$z$A$B$C$C$D$E$F$G$H$H$I$J$K$L$M$N$O$P$Q$r$/ . < 1.l+C@C@@ % # @ o+u. ", " x 1$R$S$T$U$V$W$X$Y$Z$`$ %.%+%F$@%#%$%%%&%*%=%-%;%>%P$,%r$/ - = 1.N+u.1.@ .$ # o+u. ", " x 4.'%S$)%x$!%~%{%]%^%/%(%_%:%<%[%}%|%1%2%3%4%5%6%7%8%9%r$: - ( 0%c@o+2.1+& a%@ 2.o+ ", " b%y c%d%[#V$e%f%g%h%i%j%k%l%m%n%o%p%p%q%r%s%t%u%v%w%x%y%5 : - _ @ c@c@2.2+1+&+@ 2+z% ", " x 1 A%B%C%D%E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%w%W%X%Y%5 r$& : @ $ 1+% % Q.Z%O+z% ", " `%1 &.&+&@&j+#&$&%&y#&&*&=&-&;&>&,&'&)&!&~&{&]&^&/&(&_&' r$< : # % % o+Q.Z%t.Q. ", " '@1 :&<&[&}&#&|&1&2&3&%&4&5&6&7&8&9&0&a&b&c&]&d&e&f&g&h&' r$^ r$1++ $ &+Z%i&' ", " j&! k&l&m&n&*@$&o&p&q&r&z#W#s&o$t&O$>%7%u&^&d&/&v&v&w&x&' r$^ y&% w # O+i&5 z& ", " f#> A&B&C&D&$&Y@X@E&r&z#F&<$o$t&G&>%7%w%^&d&/&v&v&v&H&I&' 5 / : a% .@ Q.J&K&L& ", " M&2 N&O&P&Q&R&S&S&y@y@T&U&V&W&X&Y&Z&`& *.*+*@*@*@*#*$*%*&*, 5 ^ a%+ c@- z&**=* ", " f#) -*;*>*>*,*'*)*!*~*{*]*Q$^*/*(*_*:*<*[*}*|*1*2*3*4*5*6*' 4 ^ a%a%% 7*8*9* ", " 4.0*) ! ' 4 : ^ ^ ^ ^ ^ ^ : ^ ^ : : r$r$: : r$r$r$5 4 a*4.4.0 b* .+ c*d* ", " `%D@~ e*r$_ f*4 g*4 : r$5 5 4 4 , ' ' g*~ ~ ) ) h*i*j*k*l*m* $4 5 5 n* ", " o*p*q*r*s*[ b%t*) u*) 4 ' , ' ~ g*~ ~ ) h*v*3 w*[ 3+x*y*' ) ", " z*A*B*C*D*E*F*G*d*H*I*J*p+p+t*a 4.p*f#K*p*! L* ", " M*N*O*P*Q*R*S*T*U*V*W*X*Y*Z*E*`*`*Y* =.=+=3+) ", " @=#=$=%=&=*===-=;=>=,='=)=!=~={=.=!=]=^=/=^=(=r*_=: f# ", " :=<=[=}=|=1=F*2=3=4=Z*4=F*5=(=p*x*r*e#x x r*`%7 ^ # . ", " 6=7=8=(=9=0=a=b=c=3 1 > , : / = < < < ( ^ ", " d=e#x _=7 ! > g*5 : r$^ = ", " ", " ", " ", " ", " ", " ", " ", " ", " "}; �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/Speaker.png����������������������������������������������������0000644�0001750�0001750�00000021671�13431646201�016377� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq���gAMA�� a���bKGD������ pHYs�� �� ~���tIME ,Z.�� �IDATxUYdGr-^ Pl)y [f-=aw,H X|-:v#Q".rL9G8mq!jG$Q!$G@sdU13f`PX!G%PP" ڱZVcH9S׎]yITq ړeLBRh !E!xa\JNc_ =1PDŽIqNnQ$QUcB X9P3Fi;eڄ9kK5ecB4vb dUl$Yâ607 YjvI41&,Vս^{}{kϘ3kdV;l )A+#%,F3X ]H IJ"w/oAE  Ueʊf%pK "Q`^ UWϛ.yzzm=zxyo>%M1}/ú1}%J- wZl~uPe9 ̐T~7S("l^{htY3k,W$ `ؤíeЄ5US\̩%N5btL˓U۷_6} JI7gAӓnfBLuGIcG$NN=Z*㨌!*BC# Bm 1B3[wgʢv>^wʦ P{qYVܿ!'ON4IklWي(,NOT ><;an,Ų4o$Vd"FqT>|!'KL8Fr* *7B6IY9!3C X RW̗K %$!kjZ+NN/h9>C<}#_q<T~͚/ 0ITQm9Q8)9͈J$+T!(a f"BFQ-_ UXOղ5Y<crp:aXp%=C6H6|#onijnZƥ1 9#ZYEHN{82B]1 AղPE"'P_P3+{5˓zAb|CBU{u{\^>GԳ[ɱ'g&O8?;j%N]K-F7o<A1 "" ÀHy^�r*yy(k O{ 1g1ԍdz d5 )Q9 1ֳؼŜ!i{ ЏIng>P܇(oWщ! tbր10YcWLL +V>)TtK!I/e{ "0&3W  //::MvKzXAUI?4g??NNOϟc%㫆nɸ3"8:2Kz�%H 1I0*VHb2_\*|Ib%]$+mz}~z}NJnO_~bUH2Z?v*; !r0"5UhX߰Zp>_qq!+:pfd$mv4R'E̘:SI g R T ~iOjFhaA=#)e11 =WÇ>tśWx3㖾8nSy4\1@JqA3`s٬A$`";˓'BᴁLY<Jg[KlT&1#s H2!a~"O \cPvǎ0FƘ jzqlxӏ 0&HU0 l1l[0"Rʫ4uEXH1R&kpؓRק.qlAL3 n*`hy3Z^ vOZhOѻ}0q Bx_1-8[r윪u=m QI>"bCG~#1bxW<Yp~v NOO+p{{WoyG^zvp<C~Z#wZh2d�']<ժ&״ug\o3oCh}?r}u5ǹ14lsccz4g|y!| >1FD l2F7o?OϞr|SR%Kf/Qh, 𞃙6哚? rC<P7-⌺nȬnhȱKcvC3uI)}lF}G#)EV||<|*q/!�pU͢\=y1;WW8k}1*,TlIPWl-,yL?D8=Gմ,{tMP=uuX M3#\}Q !2J٬윯~;Дx9^k C3y/89YrqqO'.j)bOi@lB*5zv;,ŋruUE$O'4MM|f0O|os{s[n7Ik9 !Dox U%opS&g[7^i,l�e&3pZ^746OW~yucb\;4h C�=9Yg}Ƨ)_&_{NVV}M̹U;^zϿ<#bo 0*(4Fb*NOR`Nϒrc#ĐI1k6q<X,֨FRTe k- t݁vPW .?nj~{2֜?b1?A~nG.X,W<{=ݖYpqYcVl(�ɔHr3Vwu}~;prr2-c* ))1TUYhOJ0Մ0oI)朮OAᛯ_/tSU 31\}vwcGN=vɽxxO[XqrVh4Fx3�GIUUʱ^-Q�˥gٰBBBXBrN CA, .^bǧ?q`<]U }߳n9LE[6Wz .'g?;\BEVR*kK!geTYebFc&]7j嶡iR-жsi-/_ ,'̗+bl77]G7rCLB~C7srnp&&ZP*@̐Pt, єϒ@X1enn6l=`_h8T{3(9' uS,1 nOnUݢIb%@bQL,!F1yJ!ba>_p>#۷8'SQQ'¨0ASHUAљg`;,رiۖaX+v{F1h3-<~/]f=ݎ~fsjf"fwvw8F'<yf8kA͡Ֆn #o^ϿK=.M!^\ %%UbC*/!DG jJ넔a q۳;ّRZGx�wI2y*_RbcJ? -+Ist"qr/59CGO9;?dd I>SrJT )(lP<9]Ègx{e.1ec4FQUB9Ui_wh=M3W5-%~lٲX̨950D泊|'=ZoØׯ^0ob ӯCӐ^S):Y˄|! W7D`1⽇iY8Hes4 Uv%ŀqnn!_}ȧ<ٚbƬ5:a`JʅƮ5'%?@�fšT>Ђ҉ӮDdDZLوܐa�2]ףj.c25K.qqG5Ե#rϟG<8_\h*3Y=)h.FuKwvwՑsgk;z2x/8*Fa13>o=sxY,fTZGH)wcZ㑘3M}09_'Oxry5y4 CTRVA9:vCc�)ƣKf'n#\¿?݆`J{ )!cİB i@5NҶr9ZCif*È"4ua GN5ryq7`Σ ƾ' =!ǎ 힜"pqOc,i? -~jh SA1"-YYfG1(Tݥ1G0bHd#a<|ǜx T r$Gq@b3"C?qՊ 9d-ʹ sIT�p*h(xSh;xqbk 8D1Eb,@DpvC-!D ~OgKj H@w8pa"9&TV'-!HS`v 2d { qR"Fdg? u={rNJQ2B0 Go7g<9r[Ո<lo,4K"C1=FFfu]Rde�9@9_{|)L|BbXn~N WBô.ҬzXkƑF޿<僇gWMEe+j0UCBwI8?5\eVJՊ|5N7 0L'BISrpDѱc)*XlH1`<@TU9ig ~t]U3nll6=YJh !3sH)3;Yp^37ԛ5a\"!R"Ô(09`P5GHC`u>!SJ\?t8kP-ׁ}A2:bL:{',W2`'pϟ-RzRlȼX/K /RU {|sMc,^dxp-͵S8S$4Xc{Z(~#|Us.,8`M/X/Oh][r wSB 1wբPRS`4U]FPt@ӢbyQd]iSd" 1;CS~FN4&YI�!g5SjR9l[c~痛o6XN U9=mSrRBť8w@pщ)w7ï|ȔLke#t] ;NO{L`I`躎!T"焳r|%S756'1p|!g֧0}v184eU`KX)i=_A}3y:}nw`Pzc!dں8&77c79bZKL A֡d"'<zp)1d!a=Q_}[~(5C*bpC$LRB ʻc~̐c�e~UBjDŽ~ 10?M KkD]2 gETq]U\>ں C779Gshk!ҍcZ0"$żBfܥgT݂&b,1DLRix8븹VUALl5agZsAֈFU@cf?l  O<F#b WT.C9 ANR 8+h*pJ[n0z=Z KH 3b#0- <8gvc-)F11mKeH1)!0<|":jSѴmX$#3b8(UB&�̅d C&ļYsDK85"1g*[l3TUŲBHq;BLt7X^U]ǧYR)tR$XC8iM9݂pwDuj-6y_HSP%O;,YOUi - 0G*!d9AR!R*a86~/q˦+hQD@H-C5BYHqN{d,r$\&ɜ3 C%XfzXLb#kF5c&.Sٔ�1BֈwP b Y%}x wٚ?B 3W cC?l8?" c݌]:l%Y0!X2&p^ѻQt25A|328qQT+93¬\>~'}'OOܾ}ɲu,f"I|e!FT1'ޤ߽eJ\.}4EE*!kêNJ<M=HR\h"N;4gRR,Nj0j|U3yM‘nd]*ϬhyBpu14 囜iqb"\ & IS-iDʉmL<DŪl(9V%#󦢪=W f@=?}% GfO?ga0o@z#aN.ws.Rj9-J Fy )~`Zr8WYx Hc ;*vD9YO�޳8Y2 'am;)l,ٽa8`MW=>Er6D;+Phh8TBycNxr-kpdJ L=8b5s#@[{Lt٬B2mIDSݑ"U0/pSc.QKad!e0 ׯ_R)c|wY: #iVs@HxWQ%KKӜCRfMk,q }Gws[)f"P}u 1d74MUTK25;EP@:p1R\X M0901<1?kbqЍ[6$M0mp!$㼣],2cDYJIy8)̊vճrvw/St_6+O�; #qr<v }gE)sdPnW9ꔙ$4C]@qd8�͎B [ȳom;yb2d Gi0^y we1(Q jiX[N{6k֖ʯn..4Kb,Cϛ2KW,4u=i=.b$apԵ÷5ueYD<_5euzsYgg[Q-]c|Q t%)ƨY8jJQUQHQ)*LZc}:mU1Z͉t콦ک=i9Q5FoYY&|^o*]N-c5ѻ/iZhauR XՀVՈj%Y;PYUh1c*:3)gfZ9???Qz"c+ ZN-:Uj F4Uz棏Ku /1j/w7JP&xg\8Hi c=E��*IDATS#O1I&0F泖Cw_-/0qPm;#!<q~ !3dv#~_~O?1Sc^-]Ir\Bd:+ͥݙ[ ZHe61$ J^DYwBJsbW۟s8r^e2v ֲ2lxof}ι/Wno7]#h`ok崆zA %;s  De ))�Ϣ1m6s«7* d77GR8#}Ǯ d)|//_~[ː}Uգbrrcx)&iTN9*3H f% ށ(9RDsNT-pJ]UlTL)J\8j nަׯ_w{S4W考*'`w*RX;MD'8ʐJj&*<»rk+\Tg4M .-HLB][R=BՆ/o81NooyUuvޕvg,n3oPMބLU:Ciz;\(#F47H_.]:Bʽ 4"x5 c~`\.[:nqcbVUgl=}^?,OOGk矟N*����IENDB`�����������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/draw.tiff������������������������������������������������������0000644�0001750�0001750�00000012124�13431646201�016077� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*�h�� $h!B &lXK41bj RL+)қF_:2l09 2' /lh1%L2]f+V2W|5 5,֪m 4Znj[{%TWӦϘ!s̝7O~6^xe˔7SʴjkX]^4lbNK=y*=iӇo0:|':}i.^@W޺}{!l>dEkHsc z/>W;߉ 9`~vYF-`Xe GyFdA!FF!:f6 a:G6j*Dhj)Aj <(!1 D<R#$ܶR=a#9zo~HNA`.؅S5gvXD a@Fd!!Aa:#ahAn:Dh@:JcQ*)@(& 1 HG*Ī=J 6kIAūꩳ믷ji&i:aR[i5SfH#5: λ8:K:ᧆR*(@2B|2$4&A2IBt"XH"!B8"&0"a"D0&_Egf6 vSVmOcd 5 ``d)אCe!&G�Gh@hhFD1*O-trīA?6:>S?-iH?gH.2ldA֘Fe&s#/Eqzf.,DFA&*2D) rI9Pď|;-vNMOKSXlybX@Xa AC  p6`c"+:\C =d{BžsO%/;ԫ6-@ N_ 5]8 dAإVF!jZ_"DDЋ]W"Dф ;V> Rq[%AĂGz9 .C]@ Ҧ7}Bsc8a8DZyaXq1!aBƀ?ot"C; 5 8<Zeq[ߞ@!2T/J^2$mG'~J /fCH~0VWc2~D'DD^V(ZP(*;}%3ph �J q=)HN'ԐX!In;HBhР9`F D8@:Mqk hD=!b 3l$+j֒e +1r@_2RCniPV:Vd!YXB:H*x18 )!u@ @SLi�Q[gU=w8-جy+k)k[bA 9.%CB�bP AZ .8 \pT pLD [B֨ ,P ,RxthD-ȭaTf A ٶ씸pq>)A"$ ApECpA8Bp!P# 75Ml2,3&(^<3L`�Jnbbʑך%خkA$kWpK! �d7piq !8p*DPThD%4hE<@2 `An9p DS܉'w�j[;k Oa8$SP!|0E[qA8h8!8`B&a5s"D`9 %&1! =CE()^jr-G1hǀ3)M '+BjP2@ 1Z?L8a&؝,a B6s+:wXk>Fc�0E`nAS␀(Y-eKR` [WB <\ %x3Y#3sl * FA u $A T(P " b"@걐 b@lOz2o9upKXvar w 윻"k!aHAa -V急(֘ K_m08п)l]1!#Bh8% Pڶeouw80B C 6\1+W,0k/z0y-DaC544sbk AYx'gŃΉKިBǠ O sޘ /{q3U0DkQq z8`qx{{/A+aQsRhP uqp]}a_3m= s30371rK{o] Ѕ25�`.q~@+t P'ew=(ay+W+-߃QϷ`c7 ڠ= fЁbM�t7۵ �   ːDQ;ذOR!У WaI C?v  ð;ЇZ*S0<hH!?pY[`ap!oV0V`pq 0Vo'XaX�w;`vXW{A�vRpGY!asЅbϴa"7�ȇ(t([S0JSp�{05ȆX$O|v(hL p_iF?�pN LZOj1pHnJFLzL&L>#)PO%}( TXЁ \? J�/chBhoPehsH0n?G' rHhI<hK<hM<xjHCi�o _ ,Xwcn؇ %pNCnX'Ep.؃@5pNG"UBe eІ\0SQS]uAop ePXp_hLfȁ7(xx H;ȇtxGtx2HgHEP� HE -� - /` +` DP�.tP�.PB,B-|P(~t~ЉTЂ윆~%P(Kpd +*>@h*0GX?�8@GHxh;�fBDH8H+5�sH%`,`."�r+r-.+%LFFQa0H�M9�p �,�`��PF`7m\U�K0 WجXwXopYWXop57XO .Br/*"P(E,ڨjRTwpg:tRq+Z'F`*�(�P` R =.0 n)g^pI)pI.H=Ё v Bq P/b `�b&o"! "9 hkA CEL+q'5 Hs}h�PL^p�R`- �jaPf}`6f`� :2 !` ^ |�~rBqJPz� �l|@al;BLn@x"#"�n@,F�"@.@x~t �'LGu0oMP'(QwqЂRH0`!p ` � M�~>B]qA�`Y *`�aB>Jv �5H`* �t|l@L@ȎR jMP_aZ]mM(�!Pti�'FP o=\�)Ne�.E;Pf` `�vA`�|Z  `\@@`l@Ax4`@ �` `|@0@`\VtRG]XjMu { {�qЁR>|uaPxIPB <`U\6 ZH=P@oS02  ,@Z@�q� tj@D`<@f@t@Z@T<@j�4@�Z@`VDzXl4 5pY P1[ H*�-7IЀ,�5H<H1�V�N  G`PE`0�#Y`e1LPZ <L I<`b�L*d�0�< r V`7#̅%G}RcFj' fбepIPuH HIP 8�c0Ҁ--j0-51Q1 0o ڦmޖm&RXcFK"9捀 N%PWBH9-^l]].;{=gtS0pޓ=E؋׽RXXB,>djwowQ3P8"4@t%$A2lv!c!#;8g12h;,@c4E3Rcvgmɇ g3;3P#  q:>69ㆻ=>?RÀ5'5f}# :;9;cc<98333? x>+x9׳s$?Q[#5>#8SS`c<c=Ӂ?3:3;3?+x>۳;s$,[sg8 #?S 8:݋>=cx8SxK:Ks˼!xG�������0�������0����������������������� ������� �!���������>���������������������������8�������_����������������/usr/home/fatal/pascal/draw.tiff��Created with The GIMP���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/Ftp.png��������������������������������������������������������0000644�0001750�0001750�00000015372�13431646201�015537� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq���gAMA�� a���bKGD������ pHYs�� �� ~���tIME +"Mi|I��wIDATx[%GyOϜًٙٙ1!7\@$‘,"!<$PxD(EADRH$";BE8 92zٹ_ϵ*}Nޞٱ}O}GIqcUS*4FR盾q Vkƭ|su>U�ˮMa];R;W~z~KyV{\WWnׁo'W0Mׯ�q7p75U@xukcQBPu knW&𺶫+@z( כZo¾+0Uf55׵} 7TWv+zx >:I�M)I-ø k-^; ~u@�F.ДӫM;on; 6As@To8*қڸ qԫ~=}^uJ) -%ݙΦJ̑T�''\_z>m]OL{dn+DH*q"HD H@ >Unx5rȃx$sVǯO,"S _vu/MhݔZλY<.shJDC""kE#xȢbDZT"AGtp ;x{>r}=qsuesFbnl JiT}0UZ0YK'V" Mn{u ^D[x (A[T =bxԕk˛._t3ݏ"#݄;s 铥 ~'w&|si{I3"R^ă<XŊ:ys7{�{+};K4{(k4[X& D@̱0(6Zz?9럴/x%)D h1Dxm?̜}gĿz<̥yG9PH"D@'L+DճoO.Nz%<}w8< T0A]`xE_ك/|s?疮]ߘ T5J+wxBT-z!^mM>cವYz̽HW ^@ ~f6kgzz}3"RhGpڣ+s7 zzT|Sa%|Jz(}Df';}e)k6Ox(F-4yh"cГfC c4 .P5aur<yc{8"RifNӍI3{}Ɲg-�o}Cnn|ቷ1іQJcA'V s+hPF$DɄ TKW ?wo>ާf w/ {9€�ަ鞜3KjS ~=[X 1;61$D-cVp^P:"p^pNc}x ×g~;| } go<8'͙Y'(`_Y܁2-L+=Ct #BbOdžϺOw#.ߚAjУ[$͜ۻh|$uw ŲS�o( qV /N1g8dl sD ֫`Jc&OJb }W}#|oۼ=FR5{d}UhC3aqnȩSZ5kl.(sR,73L?~yaVMCn5Y2x!͓OB�U;{A5 pk4etrVqjBvn6Sqw9 g{៿<~ c' 9( [~gX]M̙3',weʾ x٪AL<_`n498Ji\Q9Y+}?O1CRfmՁdmsԐd*L{F+!c`Ԭ E?K/ɍd#x{:63kz]ҽ'oܬwn?mؑ DÉx38  (\@Լ4 rX[ݹB6\1A{3*B(^ślzuknt[+Gkanzg,Z;7�a;c$;y2􇰘\᎓[:84R |HB(c?r=ug&y7qp<#޺IxCx-�k-S"0<ƿe"^Gpr\*GnX/E7VLMW;|g"a1+\@Tcزp`{n0 բ?W7O3`"췈 J 'MeK�3mzu0}Vn$,wpcmX_L\8밾j4SIU~"h0VwWy)v5[e$;3fS O@k spc6wAK? I϶sr[l5(1xJy[@ߏ0xa&pz!G 6"�_Ddl pt:A`J 'ᭅV xL;PV\n(zkػ>wL{f/,uhTG >h&pe`rB)ai81ZἙpO�_\lj|R{BK<_B5җOf\tVl?ĹwwGB dy(~s87xXO}뙥xォ/,La4r7 [j|_+#bk)eYc .^ LOMg\}'O/g!nM!J|XF{`:ܓ[7/?[e-u%jL "xDܡ;LMAd&kֽO~U0O=ݥ|~mm3-8iOؚ .3p[Vea)HHKFmyHwVд.Dj>?̅Za#"jVn~oSxObciKyiiAM)M5hh@oQV ŋI;x x fpaa~!NG}eO Uk'FWnl?=JzlƾZ`lv>ďOY˗rx*f-[ [u�~<w 1C?{^z[wrggrs'xcK [|| ӝvtfkWg)s'SL/61TPy$t^٬ n�Tگދ5sOZz?˻l #S Jn|?ҊTEl͘޻SDzQKqU^P4YJ>,<3F4WRPy:FoFbl; =ֶy^S%XX7�g~綧!z*afʱ@4hEL<|!(P*y8.Kנ4"UC0kqaQqQ.- )k\_O͋+38R8I3O }~s܃S+Ӭ 8!rti&/]XCWwI=-&H %+ d-6d@! !Ȇ$H8i"k춺RuUwM_}U|=ŭ.8{{y睕og 7?s4Ф'B'ui<mF|�u)p^5}˼*iaDY=6@+A=d*j8٩/O~4z/ۆn2ZEG ' QPS\8K'xp?�z�NH>Ȓ$i,"&; |ۓsue<yl(J?VHDDN`s%>&W8Grbo+3;uEǴZ-wz j_ʉg$w>hZ:~uӸ2zY15^f4^:g=\fN4:h~ްbgX[Jhe&FO_qk~*:c0YșMDhѫ`O(8ygSo[ )B?=fGx# Ҹ:cӔuhj)+(?6 sVkdkAh 7Jg<׹Z+<|*@;$`Ԡg:Qw~מ�ApV,'XF$s4hMT{ȗls_=(﷽MR\Us�l$h4Nk(K/|w |X:nwV0)5*!|RhAP1eOs|v`X_5WĪf^)z:RK7^;`#!SsmҥV;#~p Ի ݇BNjp<ֆ/<9ln=cH)n^ho֋ܛ^9˚rsSmT]pNl6vE"IbI;h-YYe^x3%kь帡r kџlUkV)YNXlH z)\cgc[X4243':{6`wQsi0Gqyoky\LETeZTZq^~̲'xq;GZ:ʔ!;5ZJ1/sCm-s 4b7M{*BDBSۚBo%=R j |qCsG#hge y|^r]Z~܌$)Œ"%ֹņ|}EFx(!p>Ŏn\XO5<X3+d@y bAau "BIŏ9r$]4YGHKE-ʼn/ IIP1 h ޷[<-㴹MՄ\!F"08?Jw趏xl&],Rą3 a @ YcQUmw[=Th1<=�$Z-{TgqW߱?[A+o^=>vf-+~M*cXI(\JIJ +#I).m<wx^^rƛ w&E䩢W_@!# NB'5o؞R1FcIzq;eCf!$>j~'A?$-CQz7 ,zi{Y`jA@qoPEd${Êv;?v85h)˚(ɫYnQmT"dѣ([D1$Q=~=xS84>05Y|\T#xI 3^!D<Ri6%P`%x)0- {%8|eff\n͗1ERMqW(=ɕlOg�tkū\߹y>OR d 4Qlh1/,'5 EjAQ L\KgZyxlq-bS#e\ipj&|QFRJŒHeEP!&P$!a^XFWo<ћ /<m8>M;}|s.CܹEW F늵"w A29NP!BNikAe=KRLlPk ;0q u2\D.pP=Ρfk[,/$3#%~ƹ^H,(" rcc?{q!f0]{sw]{O̘NDdi�-U`C`(#REQ96ݕ鸠p" QC@Rt!>TtR9]̒OW=0wv|e3x^= YbZ8P5hbEQRڀx)Ǘuͤx7cu7}E+u[!pM1Y9G%+3˜^_E9iަLH!_>C!*UA]-mlt}Ln=6Lϴ"ce9,E QZkV3H7fEYEq3ɢ[ciJrkv+ӵW9һƹ耳JI|PLXU8&#rV J-d]_tIE_chRTQx.碜&8v>lίƕg iHًb`zk/a±; h6BPޝ2&Zۿkƅ@.V)<^MJ[$qbd1$R SU!Ra\U!"JS{ViN" xV&quE5Yn%Xml-g3spJm,@[����IENDB`����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/staroffice2.tiff�����������������������������������������������0000644�0001750�0001750�00000022420�13431646201�017351� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*�$����������������� THgtx(`q@:������������0������������������������������������������������������������������������������������������������������������������������������������������������������� h b  nranj���������(���������@��������������������������������������������������������������������������������������������������������������������������������������@���ldأJ$t[L������4���X������`���@������������������������������������������������������������������������������������������������������������������������������������[R4ΚjDU!j5~~rp ��� ���,������p������@������������������������������������������������������������������������������������������������������������������������������� ���tXj|Bd>\pTprLxNj̿p������,���8���0��� ���������������������������������������������������������������������������������������������������������������������������������X|h, %cEX ������������P����������������������������������������������������������������������������������������������������������������������������`\|ٞBT= 8d(/���������T���(������@����������������������������������������������������������������������������������������������������������������������`` @<؈zR4; LHPL6tz" ���6���B���D���p��� ���������������������������������������������������������������������������������������������������������������������$86LpY,\HMjBb4+}V LB������:������������@���������������������������������������������������������������������������������������������������������������@���pl8HBX&T#E%޲+U4hDhs�����������������������������������������������������������������������������������������������������������������������������@���P$Hq|hƂ4Rt4XCi35a\hpH8���������l���������@��������������������������������������������������������������������������������������������������������������lTص2r:Rtc!nbXikVmjP ���^���R����������������������������������������������������������������������������������������������������������������������0-*|2̄|I!V4{-C^ ���������������@����������������������������������������������������������������������������������������������������������0 ^ 8cn;jfsŦpJx@=���n���b������p��� ���������������������������������������������������������������������������������������������������������0bzRt2 RxEsanb\Tb4*l*x0���1���������(���������������������������������������������������������������������������������������������������������@���P���:4WezZܔ#.fzڼz$:\DO���E���6������8���P������������������������������������������������������������������������������������������������������@������0 >=.e&h*z$ܤF�����~���2�������������������������������������������������������������������������������������������������������������`���@��Bp-x<Ĩv͎N76zZ*DBT4t ������F@�*���T��������� ��������������������������������������������������������������������������������������������� ������d`,X2l${57msYt&RtDp`SLDDH������D������P��� ����������������������������������������������������������������������������������������� �hp V?J6YR=]nm.z fb< $t xf̿���Z���<���d�������������������������������������������������������������������������������������������@��hY^l(J td'͎7m6-m.^BT:L|h2D?|Th���>���:���|���$������P���`��� ���@���������������������������������������������������������������������]Yܤ|v2C^w=.76egug&Y:Tn,֢ d2ďPp'p]` ���R���d���X���������������`��� ���@�������������������������������������������������� H:tITX<lI:G&m7VǵQ,ҌXBT d6,,\Vr?ds(1 ������X������p������`������@��������������������������������������u2LLx*| .=nQ&NNUF\l4~Z<$p.ʬBl$RVL"4:$<TB'd` @������8������p���������@���������������������������0 ZJ5gͶު][fM~z lB4*644b4\$tt´j<(.Z\#5Lb$w$8%@����$���������P������@���������������������� \"Rd#m+3YβtڼDrptJ⌸,ƂTzj|Jd3wi&dhp&"*|,$hpu���������X��������� ������������������hV[ ,v:<!F\7-Ͷւ4n*6 tXlL;ifBx|f<M>7ca]ARz|WI������������0���`���@��������P@<$M lDR2l,:-UV5rr LIv"Ըʬ$6.ǃa&"4jmN|Jn:|JX]b,$؈q*M6XԸ������ ������������@����@�ԾFB<VJ\lly4X\!FBb4l^{.'Wa!#YFU77c!qד1r,-btT< <4D]' @���������������@���hZ4t0Lt\vNNƆy7nMZRrb!w>7!w3q7Cw3wSUwsqaZS1aZw3Yފy}aA,x:N2,���z������D������`0`4|dB\Z9>Jl(LnJl#c=~3I7wQ%Vc1mn~ u^' ArlN:y!ʜRD(0s������\���x���pt lvj*#F9 pޚ!Βy5vەwc7wwAwӱ 7AS}Qš:.BƢ  t4J<DLHL���A���j��� ���h 5no&<dE"dfDHZ}g]^ݮ׃~wc:<q*TtHr$BtJ<T|V r\ T$L" $V*  �������B������h������j` @1߂t8*֊LXԨj>֪=7w}w~2t;W-Ɇ""R\XZBt"tR$J<Rlr*š|UɶBldpdH0?���~������������$������z@�!���� @��# ;$#YYvF5QZ7^׃7>W7~^b|B2ܼ4a dR,X<8LbLD9R&\ld4T?Я@�3������>���r������P���h���������J���V������ ���8υ#j"FXHr ,t"l6Lt>JXpϺbLEQ:,TdXLdXopP``'���[������������U���q���V���B���D��� ���P������x���4���������:���V0u5NR´jb"Ҳ8hbl̤xrd$ĨpX@���{���shH[H{'p(0P ������������=��� ���e������q������������t���������������0������8���d��� ������"lDd(PD\$\\Ԕ4Fr,>FV_���{������u���y������y������5���������������I������������������2���<������X��������������������`���P���������fL_Z\d, x<8<4؈\$tH<8L?������S������������������N���������������������J������|���l���t������8�������������������������������@��� ������p���(F tK $0,˵vj|Eqzrκ|8w���s���u���������b���<���<������������B������l������������8���h���H���p���P���`�������������������������������������@���������P`Jd)pjҬV*zbt*pА@{�����u������������������������������x���������������0������������ ���@���������������������������������������������� ��������� <بл8P @;������S������]���������!���&���B���d���(���������P���������P������������ ������@��������������������������������������������������������������@������(��lhHK������M���������������I������>���������|������(������ ���@���@���@���@���@���@������������������������������������������������������������������������������������ ���������l������n���������������������������������������������������������������������������������������������������������������������������������������������������������������`������D������������������B������ ������D���8��������������������������������������������������������������������������������������������������������������������������������������@������H���������L���t���d���x������������0������`��� ���@������������������������������������������������������������������������������������������������������������������������������������������(���h���(��������������� ������@�������������������������������������������������������������������������������������������������������������������������������������������������������������`��� ���������������������������������������������������������������������������������������������������������������������������0�������0�������$���������������� ������� � ���$������$�������%��������������������*�������%���������R���������������/home/fatal/src/staroffice2.tif�created with The GIMP����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/linuxterm.tiff�������������������������������������������������0000644�0001750�0001750�00000014772�13431646201�017204� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*���� $h!B &l `4(.Rp`A 8b)R 2(@f #+HA %kD0ZKOƌ詑.E~ś+[eyؗ@s5jQF{ʤyXw{/?ʔ �QP`PA4xC(<xpS.BP"E gǎ WΝ;ƍsnݺ֍ n\;ʕ#.\̙]g߾5vZg˖6gŢ1gʴ>Mo:tA") )xI&@Q4!�7Oc @1T#a/>_b>>y^y!i^'n;kcltN#t=VcMfc5Ya Xd`&hRh$)'RH-⟌GUl|4` GLAG?~c?+Ob%≏OxKH*x{SJ%4J.<CN2C8ye}fOf!ifZ(J*lr/|142bbGuD T�j@V0PFm/>K78g3v~j<nZ[Os3g|=g!:#!?'?ę?lŀ?%Yd j� �2RbB��" HFIèR@,ngMW=f9^ҶdR?p3e$ R8 ^CF�``��{aHaap��0hP� E� r8rd': D*9:p1L Pӄkz8?,`a+`�:n�C@0U `(�4 ` ?lAī�wgo|?~�8A;tcĠ;D&;MhF!))$@ÿ݀(eL&-\0./<pDHF:UE}ا>}Xo�$`�u`x1A4d%$a<ђ@;2 0: �!Вh׋l0 `�3@"HD*2t;^bd7Uc8�YJ\x9A,'LډD+ �6Fǃ$@+ ?K]!Gp�NGTE?1HL3ZL&}J<k+y9pV 0!꤁, IHMӚPP?q0)+P G 2iFaYtEEAbQũ%3W�.YS6JQ$iA22)0QA < +XA)9�:+U<4#3ERռ-NKK _V9q16e ̙ikk[v,uvׇ]G J5 (!PVwg9AGG-zoŖW5,ZjF?n[j?%[:Q<WFgYa c5 0ܶhxf")qXi㑄J9G9j�dt.Bۧ=}~?�n{ _fukB9a 6_!9ߙHHtdq6.f6b�Ce�謀YP" L@EH<m̭͈/c\ O;P�g@i\?zЇy( jPӃ>invЅzJx:A<`�Bb?!wCF=#x&�Dz�o[����/h!% ַ9 -:yDI)%,ER2+o1[pA p ', <`�x� 0 'gC\?0M>zs<8%3( b\Ƒ[2w *!0| &l Pn d <WI+I@'6n[Y> DOQ(<wa'i0K+>4opoArjpm'M3�s3�zGi>� rwrg qWw0L  8�?u?7_wn;OHXDDyj/Qhp�EP#Ђpwz XPwSM|Y~AmJHw/$X_eBhY`Z�D�=>  n7n >[d` �' �GZ  hpO0xPspOo D0%Au=UBvpslф11V%X2T=8؇9ˆ8]#!g ȱ b�(ਔGz xu)|wfTP&�/w6K3ܘ9; t 8"^�pI!*�0#�PPKm)CId.7?vȵ` ~[�N@hxihuЕą0v$ ' x&M TY�G0N5b(?EhV؄AN^hN~ *Yk&D^HLLNGYJM4 FhL3x%9K0bH8L?$ āmuC p<^`'(�W-&WxJ`�8`zUN�p{Y'H�AnAI4h'9A`-8'`U{�̭'+[гZ"O(N>,pd!{w8JiIUar8Idy=PIBkx�TrTx;vq.J}A*L)!xdep0 Hp�F` H"a)Q8V60G`hMP<HI:Dπ+$|8%hr+tTHĈt@[`!*A@h)/UrrB+w,ϐ4hh")?X؄0KsdHaXH4+z` JJ)_:Vi0pj8 uX5V.h8#bo"-;C_hdws0`Z .@(/gWVrTBZHC 7x+?q0p0 džTH6MDmxgi|a# b MCZZI3aцp/_�!ea_ �+1&&+(kZjZeXf7"fpg 3jdHslH.H)ֺKo//p\NkCb"#fon'})߈ *`1FL@wm.oߚKJZ!OX_` sjDHmGH̤c'G0ok P?@xB /8!~$. .xj6B) 놆c8|P -s.�: / W,r./7ŨXUX9MztnLL0GJ._/?hhFgN`>ofvb"!Y/hh?���8~?pWpask+kK+ss V0?030?0c0?0G%B_#sa.v]\� _kD4J!13xd6 : :!VbQ4Wx1?��؅m\-R-;}?M# $?҇S;B8l]O؄8 Xɇ"]0)cXg0Pd"2( 4@?(B(`q昮n9n~pY^-x'xxM@9Ǿ˹[sf83c8_؞<؄5e8K\C.h;_XD <�D -a)-BN %+8'3eb!릙 %6ih1eUE`~;$x9"9R|]~ҧ빇 Y92_؅ة/!^]XskhH8=b$_A';e%E^m�pؘ1?Z۔96n-+:I8Ba#}؃UXp3P&�;pMG^ �%  xJ6X! nc+%؍u'wDHDaf hV(?h�Jȅ?(RH?ȇ<?3a�#p` LQpG{?b�:(hE`@=/@EcH?r6ZO`z 4Hq\#�= BBI܄er5 ؅%Sk&8M3Hi"(X\&0c4HK:HtwPM\]x �,(Dh+RIX2P3M^OxbbvjgŽ6kY\a@?e�h?H@�;?n?*8` ;L8`}L4r rp[7uqc/1 $;h2i86%gfY?xœ0*Cy`Xf.x^6GC>B=r@h�xHJ6'@n<$@ȏ�$)#kuPiB`�|^u`�Ixq*/#$x{Ux7Z1r?(2(Q`Z隮.~X2`kh#4#X1W8!x0v`>}h@OLIkaupuxB$;tS1`?f0ѿ/ {3W3A|oJ>d ǃ;}׏0|>Y ~,bL#-#?ߩ! DQ0aF V@a-[zI Xa1BڰaA R|M@`ӦO @I4(QOZiE2DA+c;3M'/|K׿>ΐɷO =*؁�X>̀/QʟXqCBe_V*҉5jaĄR LASP"/?S"Ds/H `3fN6$hTGoeX5 a"-X]tZ%sԱ?W\ȟ#Gq`$mꯅGaTf׻߳)\$ϥS8ϦMLOVb# .(G3F 8T�"t@�aeL9Ba.ו{Mo ٥PW?�?(�/ԢH#UЁ?:R'uf^ztd$�hEdZh<14�T@ @$@ xs (�*8TM&+0 .T0E~E)qG*%� H'+# >98Y UG*P=D x !6a[E a$ exc"]Y$>BC!B�+t4@pF�~4QE Q I .ENWP71C@f@} ιDz> !:D@Q;ohaX�]#rt �^ P 6ABXD Vv݁|M�  ;n58`:uO9�������0�������0����������������������� ������� � �����������������������������������*����������������R���������������/home/fatal/tiffs/linuxterm.tif�created with The GIMP����������������WindowMaker-0.95.9/WindowMaker/Icons/xv.tiff��������������������������������������������������������0000644�0001750�0001750�00000013552�13431646201�015605� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*��� $h!B &lXPңK"D`2$H@ʛxǓ(܅p›-[Xq`ƌ&l3f]-#FK+φ!ê 2`PNmvsƹ<R|3ǂ\q֑!jjskȵ6׆U>1ʈ.3NB&!@t>|5 O9rqǁg,2eʪ<LcBL2Cm ibt1ML( L3;~&,>v?rSϟ>?, adE$TV|YIdNɟt3e"A&b0p#�'Oa̬3 1Cw(LD }Eut"B5ЋÈ0q<jCtcBecCCTQ$,"q8Qw ,"V | ;UI&44iIdM^lq"xlԦF~M0H#GQC?r"y{<DG[qdtqW_-]C\l�]mEÔO0r| Wtr'W!_ŗtƋ,pwI+c; ;|/+(ZC/XPA'&#={pPwݔǣK�?mUR o-\ 'χ# D'_ ґLiILVBƳ\mӦR3mLܞ~'0wՎƽ s<^�SY3"X[O+B (|P '_F07PBpr,1N5lU&ZCG I&mŮ90<T#&G)NUH#DA$*_uM&B(}):ɖs LnSIMBK[{_ k[={B#JU_ }W Wo# V$W$ G`k'l=٭D dK'"ȍ NJpfBMj{t`�ؓa٠ [o:J�C8+ʃ>|(k_Ï"b)h *PdUG AQԀy@.(r R;' Tik6֡ЇB A,p8U#p(ʠ>a_ _"!"BЪ@ "�(&"("ԉL" �94C hh831 7^K<=(A ba%"v{tD%ƏCjIEYRQj�!9٩ 5pA{�i 05`(aR،eꐃ4 (Bb�%kIL>y"mhAB*hTVEPN%) 8Y["|fEGc l2!zh;*4�<j\$A22 UHAҐzj y &"2L)xE#D KNnUѨB,bQ]!IEPI E@(D;6l=Eh@G(j eB ,$ ҵ$! ŎB4 H@Vm" DcΛV4 2LNAxY>.@-UhĢeFUQm UA:QHI,diK`2W>xЇ -3BPf1^cyE1c1;NZ1 h <*DرNF]JUqkBoч>i:3P@Vdɂ@ ЋDסc)B+bvB0;,Etzxj ( T.vdjb~۝j8lEUG-b2֪*j'g"[Ap8\(op^PT y3la.@|Ԉt+d˜aq1A5U(3ÌR('HBƅƠlh(3 Ȓ)yY^)RR ֘7vn<(+"S.e"aAשCP;kj갥8Rf5+`=MFtDG I AdA%/%"XP,[ #Z[QB!K;b\r Q"(^`sAp)aG)pB-Zqa@hF"45;h2QJZ$ʖgi`R"DPh /?В4g ehBѡ+É.Rɍd "�K[(7+iA ='z AE˭Ή DvDopDd)F0VĦ@/3uسAE-A�wWJ}mr= ^0{u'&hG*HE|EV&7vHdh(h bVJ}EVHC$?pFpX(I@>.+dqpm�[*r%�mp&D)Y VRV@VTi�BACE>!h HTA&#P@&NHThwH rN(FV"PHEFCBHvprhH h &~H~D[a#}O{gt\DA-Ho"hG=gAIA@n _AZDZEpH 7HeFāZL RdB|0pL4DxpO'ȢAH d,C|P %{kUIz;}7!PGVIPx$dāxć8ć$| O(CV(C&(GV@V( P HXHAnHSJHf8WȦA"G`W AM L�p?!P"PDVFZ C�HB|HEtHc�HgUT6֘DmtZDji dJd*ddXBX ȀzHt HWG@l$ȆNȅ\ hȁ̅̆<ȃ,̀,d4ć&(h6hR(V(rh*B" HT.6IF$:JWJgd:tBVX^3؅]8m؆<K؆<<8rLK؇}8؁<<8)@؃=8-8))>Br(T(X8S8.\8C8#8V( ZȄLܜx(TfhCthBrÌoh GZG&EV6h]XU)C&0Ҏ/ (B&X1X5N;b{"D$Xun&1JP.pr*(Hj("؅M؄(b\e,(^^d>.eV$f&̀F̀&b&ddLò) hD(5/~=i*Fp&rFhbUw8؁ ؀ݚ@-H pFH4hJ,?s8/<$hH6(B2( mwwg.|v$V|̀V̀fddՒjh_؄"B�"VIVe*e"i*=hAh 'h,*\X+]382,l   0.QfB|@h*/hFZhNhnj6hGZ>8(q"؁A"rek|P8pveeNS؂-ثiد@bU.*d n 2�?2eѺQ JQZVd Dt@ր`lovkS<2YX"qhfp#&`-w؅I< HJLN8؅qڇ̅h.ijzzyh !^h5nān$i#VLn.N->^y/uNO"x-&0.hwrƀ=&h2^ b>xK\Xr z:hƁ I>ā$lErD|G_ cU8닡/+Da PnX1>pI4Hsh5H%P|ȇM }ȵ(%h2 1ehQ1ۆQ!!eC!o$~L�|fLu( whGtpmhAJ.)-XTdѺ5Yɮ#^Ւ  A w%UfTB5$>M\$G8^X9偕b%t dyt.*d>�{-?舩sHEHDZp(XiXX+Ij q1YoqeṜ5LuBnLa゛ 2<t؀%w [ڀX9Ȅ̀XUTLjh'+X)űXh~hva -*'Am wcUAt"A$`āA]0Xe8,d04l3Lz$ڀڀ􇉢L̀)3X8Γm((8)~sDPHNXcXpXiX5Xرa}>b X\ X'V]nQqeqS-ɄpqhFAX8.̈́ bDɌɕoܭ|+8S(8o)Ik^hMhV؂vhqݲ< XrX(Tm1.L]YFf�؃a¡://!s8Y؄.L<*?X6.{*3낋" ^^u<w>}>腝 X+X YォE\:ć+b5py(E+( ̓ꁃ+Î[̀))ٺl=gh]%8.8o w&XXsn#'~Ƽ[/*X X ("VqACtxX[؆aQH)xl^xjRz 8{p(솥宄?}CH 88sYhv-肮'C}bmW؆! ؘrXI X{uӘHyD~|.\ҡFāZp샦ڀBe"e+4bRP}׆rX2XAoW(Ae'X:*DžX',[>{vK XbX4X'XZ?gTXDZ( (G*_[pwH.FQ6'N[ $XT̒rUJ5jSWlrWԦViCG*t鲩GmzoϠA{ 5bĮQ/i-y7ȔX&UgD(Cu @n1bV)^aIIja2LȒe*iy*P`^" J ֒ VTVm uԫQM͚h–vv2˼R}r跓n~3f߸K\93>Q1li-_ҤP8}4P0%BY>bdϰA,6̳mKْm:dnٓ=ؓ]yؖfNI& ˆ"$""ʨ&*������0�������0�������.���������������� ������� ����4������T���������������������������8�������x����������������/usr/home/fatal/pascal/xv.tiff��Created with The GIMP�������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/pdf.tiff�������������������������������������������������������0000644�0001750�0001750�00000016240�13431646201�015716� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*��� $h!B &lX4B "]`,H 2ƏT޼%Oq<EٲʊfL1ă1c֌eĘ}EvaX! 7l@}2\c|ǂ & RC1ύ>2z(#^"K2%N<�H瓎7O<'~Xrfɔ-SF1`΀zt=x)]:LfDCZѢɘ&mi8ˌ 4h0Aͧ4i0‚&-ִhɎ6]tisMsK0I` P`$! $�2H /ƒX<p# 7 [U 3;0B3O E߅s}4QGuA5tQC1DMLHPA]TPF4QFCTQUԱH+|Y\ l<@P",#;( %lI!B $@|ȴ4I d"Ml 0c0E8F< H0G 5jO#] mtEwqtƚ�w 0W=\n=C?| !r !<B" |//2•0\kqS1-76Њ ͪ.=jA=TSKTP5l;tYs0#P?$K,_LW/ 1cLŴC%0Y0@l{ ȑLœd<q! \|0 t1sIĤaAg1s 1w]l7 ;t1ՙO0S0=S0'H' KB | 0B(B'ɲT<Q%F)TBE$EQF!z!@�~GIBDABGDd~F?d!�!(>`t"F8a >LapXB`+ Vw!=CP@#/rl!3C>L!(D:d$"H@& #iC RX!Ȉ!h!QHA!)D$RWD @" Q =-8h?-L `k6 G7a <p"(&r,"P<d@12$G9QG"5&B [D@2"x!%nE;pD!3?/+BF,H % +v|(0ECB>6rE4y.iG# H̒F=A*bf6D"rH$b HB³p#|d]8;A00 3X �B`ޓ/p"CD$K(q+JŅEP~E|L8-iC6*ӅRd HD<d# ABH$!QHMR0$ B|x= FȈ@��!VaGx B vЂXZIV>]kQg!(E8BQJl"(F P %'�%FUqH$fqGv۔# ej3QV#6∇XAD@`!"D<yk9Fp,!X=Ba' Έ3 7" B4*b D!CQN<{GA|,JArR#Hi<bX!#c1F4R?DQ S Lh ? C@KȲs= xyhA*Ї auG03aOX-a .ǃhĢ*fF4WHT#ar?*RҢ@&<(" B*$䕸kjdDB]C �u( �B| /mcxHWx d (BPԸ VЇ) + g"f%'jrkF_\wL#sD3#GUvwgmG#AGt!; 7@""%@ޯj ), ް!PkϚjfH(, ȉ CPD:43 όpؒE( erPB(Myj30D"kHsᏘ|]4ġb|(C׿>Z C;Ѓ!`xX1pvcx#1&x`}�Bu![$H iHB~⌈l EEP�UP�YPY/H@@dhȁhhT`H0x5D7$Uk� zD{J *:$h$1FphpZO'wHAm15HHd(dg�g3P-`RXs9P9�r_ǃHL�ooH:HD(DpPw?UXp p��KdOpF8h1hXFPPOu5H r5iPt(7 (5m7]ȆXYc��UP6?` GDHȄHHRH4h dB0{J505`T;0nspspPpfSpp`(pLF HfHXhèXhXFq(ueHwp(pqGHrHT(1($HH?0PHP�-PX]p ς|HJHd(d܀3{>p`;0pGp0WHWWpwcLR:DhMH,֘&�_P_WHHw'piЎttHrXD(@ȊH,,ee09P9M??XLd(H Hx(rM P�CC0MK�{''x`H )u57p3:dhmhURh h;h0tB4pW׌WP�PLLȀjȀ4L̆$(MdOq#pqs]HP2$0v؇PHl K])t́(�C�+;�;�[ph/;"KS:TTHvQQ|_R_(vbpTpwwP[P,h,ȀzȀt 5Ԃ$(IV(HJH  HІb߄V�MM?\]0'0Z^^ȇȇ*�=HGgpt?pxHxH H�oq? CHN.uhZ�o2(ub(+/c+K%ȄzjHt�H*HMMH.OH3V T D(DtCiCpF=pdqq؀]؀ ؁ y�j4?pw(qqi%XFqdăx$80~誆ҬqC 2/(C6(Jpb(^rHmaHH+gHuHR5T ȇ n:H,XHKKXiXi؂=F`F0{HT<H%؀%( (�11 �"-rȴ  n4`h2/ߚEf <$<B6qb( h(rt=h̄jHM5H@`NK|�kȀȀLh.PhګH]ȀȀVV؆C؆66`` 0WdiXiXXs8HennB|Hd(d:x 86 hdm?,oCf/PP,,ȄvȀ b4h4n4h4Ȁ.ȄL:hLȂȂlha/J( Lh\e=8=(Z(YPY(f(�;;(( ؇ y`"nY~n(&hP&:ȁo,z�(A(zzh9hVVȇ~z.aanȆhȁ6SAAXAUAAXmX}8}HlHІbh⪀؂#؂""q4rhȃȃ\h\ȃ&ȃh^^%S>. hu)h&Lh HhhoX>\@؀Yu8h|ȞBȁ)]TM 8 ^\L9X9؃S؛v;p;0W0FFYm8m؁]n؅3]>؅ff(N(""(v(BhB(.( $H~QHDJX. hgmhuyhP][?-(nbb؁ ؁5850w0GAXA؃K؃FF`~`Y�Y%[ 8}cЁ�H�~'؅s[JV�V`~`H(>(RR(N(*自AHdk8`Bgh7h(hoP_PBB؁+؁Y؆Y�3�UU0(0,,؅h1$;h``{Ђ""h h}}8K8�v�v"rr݃v�?(a(RR(Q(  1 ͫ]45P@@݁ 4/(hS5hh޻}�`Ѕ�ЅllȅQȅ]^s�[DI؆I؃ ؃2h2``""((^X^8+8YXY�A K ȀZȀ=>66*2:>nJiZZyaH6^MnznzN  U8{؅IXI`~`LLȆ!Ȇ==]‚u8.~C ~(^(8 h  >n˥+66(Q(rrɫzY::FX mM4H>zsi^--}u(F(~~&ȁAȁX)X)`A`5A}}XO?H:z>&RX÷+84ȃ4ЃJJQZZ؇K؇rhr`A`2:jy<B6ց1%Q߄!A]q}nn@@ЄPЄU83�?>-5ȁ>ȁ\\XcX\s1�!B~ׁ@聒28k8÷o**v׃ [ЅJ}w*Iy|;Рɼ&5k$,Ÿ $1"&QFE4*R!! _ ucǕ6pA &훴ڞZ=jI4'[rlɁkfmRN:8ЍC +DL! VmDAq X`z6Zͩ`.EMZhfM[:_ )RLIhBXb[LqQB dP�8H!SS6L鳤ϢSSY6hUNb㊵[*9&Fqȵ#Ǯ뵤WQV6rKzHZ czY&ciaDMa:١ dLR&I!H`"#PF%>?ŸgqYaaFt03h x1& cL3"1Ü(̱&k1C;}!bhRAstE zy6gMB.Rh&zUAYLd6:٦v)Є#ErHc4Ҙ%TH%Y#'"×| f`Z٦5X!ꡅZ\)2tleX"DFHҘ$t&I'I2 `</"Y)dBh  '"azئ#8"xB@ X5ؠV6i-nv馏}e޲'ed!Ib$!0#aB�ğnV`\jE H"Z HfdR v"lf&re.ɧy(aJYYNucAXyNg5B .|H&eU6i霗^ءo| YɩT%h&qc0蕒N `ָdU\ŋdI^yI`tUIeTҘ L&$iev3'(%(gr{X59c#1&ЄVF2Tc6dbH2ҐE$#G4&"!'zP!=AЀ<y@7*v!Hbs^Юu1m!CQ`K[(QeTp? -@1<`fl(VD+ t [ qя]c1d|c 2 db H2R)ĒE?B^" C4 @,a y( FmbB;^Fv$a3]�(Ѝ}SXD*`5HARrD(A36ьVl[ :. 43`;01l|ayHւT,#XHq H6AD"�b^͡OFUa# D0uGa},f(x&a uh:Јu42G).Sxˮ0]`5>r$bH)%$j8DaQ,: ݅GЉx$aIA*R1Td`x@r0a:)yJ5T`  2)Gnl;HN\$8} vc#!0}W \u0S"ӈC $F 1hY5A␈V_k-6}dc ٍjLz}P ˨*KZ2 4DBcLsy>&o1 c m1L2cCІ>ak?\������0�������0�������b���������������� ������� �!���h���������������������������������8�����������������������/usr/home/fatal/pascal//pdf.tiff��Created with The GIMP�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/Magnify.xpm����������������������������������������������������0000644�0001750�0001750�00000047523�13431646201�016423� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * Magnify_xpm[] = { "60 53 855 2", " c None", ". c #C3A11E", "+ c #C9A71F", "@ c #D7B120", "# c #D7B21F", "$ c #D4AC1F", "% c #D0AB1F", "& c #BC951B", "* c #C6A01E", "= c #CFAA22", "- c #D6AF25", "; c #D4AD25", "> c #D3AC24", ", c #D1AB28", "' c #D4AE2B", ") c #D5B02E", "! c #D5B032", "~ c #D6B133", "{ c #D7B12E", "] c #D7B428", "^ c #D6B727", "/ c #D2B425", "( c #C09A1E", "_ c #CCA621", ": c #D0A921", "< c #CEA823", "[ c #BCAA33", "} c #85AC7F", "| c #7EB098", "1 c #87B69E", "2 c #8FB7A2", "3 c #94BBA4", "4 c #98BDA6", "5 c #9EBDA4", "6 c #9AB798", "7 c #95AA80", "8 c #9AA55E", "9 c #C3A83A", "0 c #CFA628", "a c #D4AD23", "b c #DCBB27", "c c #C9A520", "d c #D0A41F", "e c #CE9F21", "f c #8CAA50", "g c #7DAA8E", "h c #77AD96", "i c #5DB5B4", "j c #6BBBC0", "k c #8BCACE", "l c #9FD3D7", "m c #A4D5D8", "n c #AAD7D8", "o c #ACD7D6", "p c #ABD2CD", "q c #A4C9BF", "r c #9AB9A6", "s c #89A170", "t c #B2A03B", "u c #C99C22", "v c #D5AE24", "w c #DEBE28", "x c #C79C1D", "y c #D4B023", "z c #CBA624", "A c #9CAA47", "B c #78AA93", "C c #5DADA7", "D c #4FADB0", "E c #5FB7BA", "F c #80C5C9", "G c #99CED2", "H c #ABD8DA", "I c #B4DBDC", "J c #B7DCDE", "K c #B7DEDF", "L c #BDE0E0", "M c #C0E1E1", "N c #C1E0E0", "O c #BBDEDF", "P c #ADD7D7", "Q c #9AC8C2", "R c #8FB4A3", "S c #829C6C", "T c #9CA048", "U c #CE9F1F", "V c #DBBB26", "W c #C49B1D", "X c #D3AC22", "Y c #BF9E28", "Z c #78A16D", "` c #65A89C", " . c #4CAAAD", ".. c #4AAAB2", "+. c #5BB2B7", "@. c #68B7BD", "#. c #86C5C9", "$. c #9AD1D2", "%. c #A3D3D6", "&. c #ADD8DA", "*. c #B2DADC", "=. c #B6DCDC", "-. c #B7DCDC", ";. c #B7DBDB", ">. c #B6D8D7", ",. c #ADD5D1", "'. c #9FD0CE", "). c #8CC4C5", "!. c #81BAB5", "~. c #7BAC9F", "{. c #7B9B66", "]. c #C8921D", "^. c #D9B526", "/. c #C0991C", "(. c #BD9C28", "_. c #779A66", ":. c #5AA39F", "<. c #49A2AA", "[. c #4CA4AF", "}. c #52ABB2", "|. c #5DB2B7", "1. c #70BBBD", "2. c #82C3C5", "3. c #90CACD", "4. c #9ACED1", "5. c #9FD1D5", "6. c #A7D5D8", "7. c #ACD7D8", "8. c #AFD8DA", "9. c #ADD7D8", "0. c #ADD7D6", "a. c #ABD3D2", "b. c #A3CEC9", "c. c #98C7C4", "d. c #8AC2C3", "e. c #80BBBF", "f. c #77B6BA", "g. c #69AAA8", "h. c #799874", "i. c #C8911B", "j. c #DBBB25", "k. c #D4B123", "l. c #CD9A1E", "m. c #939B44", "n. c #609990", "o. c #4596A2", "p. c #4A9EAA", "q. c #4FA3AD", "r. c #58ABB1", "s. c #62AFB4", "t. c #6EB7B9", "u. c #7DBFC2", "v. c #87C7C9", "w. c #91C9CE", "x. c #98CED1", "y. c #9FD0D3", "z. c #A3D2D6", "A. c #A6D3D7", "B. c #A7D5D6", "C. c #A6D3D5", "D. c #A3D2D1", "E. c #9ECAC9", "F. c #91C3C0", "G. c #89BEBB", "H. c #80B9BB", "I. c #7BB7BA", "J. c #6EACB6", "K. c #60A1A1", "L. c #76996B", "M. c #C79B24", "N. c #DEBF29", "O. c #C79E1D", "P. c #AC9D37", "Q. c #719580", "R. c #4F969A", "S. c #4896A4", "T. c #53A1AA", "U. c #57A4AC", "V. c #5DAAAF", "W. c #64B0B2", "X. c #6BB5B7", "Y. c #75BABF", "Z. c #80C0C5", "`. c #89C3CA", " + c #90C8CD", ".+ c #94C9CE", "++ c #99CCD2", "@+ c #9CD0D3", "#+ c #9ECED3", "$+ c #9DCED2", "%+ c #9CCDCE", "&+ c #96CACA", "*+ c #8FC4C2", "=+ c #87BDBB", "-+ c #7EB7B7", ";+ c #79B5B6", ">+ c #73AFB6", ",+ c #62A2AD", "'+ c #669C96", ")+ c #A39D40", "!+ c #D6B223", "~+ c #D6B624", "{+ c #D8B425", "]+ c #C99B1E", "^+ c #78945C", "/+ c #529195", "(+ c #45919F", "_+ c #4C96A4", ":+ c #559FA8", "<+ c #57A3AA", "[+ c #5DA6AC", "}+ c #62ACB1", "|+ c #6AB1B7", "1+ c #72B7BD", "2+ c #78BBC3", "3+ c #7EBDC5", "4+ c #83C3C9", "5+ c #8BC5CC", "6+ c #8EC5CD", "7+ c #93C8CE", "8+ c #91C8CD", "9+ c #91C9CA", "0+ c #90C7C9", "a+ c #86BDBD", "b+ c #7CB5B7", "c+ c #77B1B2", "d+ c #70ADB1", "e+ c #70ACAF", "f+ c #5899A1", "g+ c #799C79", "h+ c #D2A721", "i+ c #D4B628", "j+ c #AE7511", "k+ c #BD9726", "l+ c #74957F", "m+ c #458C9C", "n+ c #4591A4", "o+ c #4C95A3", "p+ c #4F9AA4", "q+ c #529CA7", "r+ c #58A2AB", "s+ c #5DAAB1", "t+ c #62ACB5", "u+ c #6AB4BB", "v+ c #6EB6BF", "w+ c #75B7C2", "x+ c #79BDC5", "y+ c #7EBDC7", "z+ c #83C0C8", "A+ c #85C0C8", "B+ c #86C3C9", "C+ c #87C0C8", "D+ c #87C2C5", "E+ c #86C0C3", "F+ c #83BDBE", "G+ c #77B2B6", "H+ c #72ADB2", "I+ c #69A6AC", "J+ c #66A6AD", "K+ c #5699A4", "L+ c #6A9A91", "M+ c #C49C23", "N+ c #DEBE27", "O+ c #9A680F", "P+ c #D8B825", "Q+ c #ABA53A", "R+ c #629489", "S+ c #448A9A", "T+ c #4791A4", "U+ c #4A95A3", "V+ c #4E96A3", "W+ c #4F99A4", "X+ c #55A3AA", "Y+ c #58AAB0", "Z+ c #5DAAB4", "`+ c #62ADB7", " @ c #66B2BB", ".@ c #6AB2BD", "+@ c #6FB7BF", "@@ c #72B7C0", "#@ c #75B9C3", "$@ c #79BBC4", "%@ c #7BBBC4", "&@ c #7CBDC3", "*@ c #7DBBC2", "=@ c #7EBDC0", "-@ c #7EBBBF", ";@ c #7EBBBB", ">@ c #75B2B5", ",@ c #73B1B2", "'@ c #64A2AA", ")@ c #65A4AA", "!@ c #5696A4", "~@ c #5F9698", "{@ c #BC9B29", "]@ c #E3C228", "^@ c #896010", "/@ c #D5B626", "(@ c #ADA93A", "_@ c #629187", ":@ c #45899A", "<@ c #4591A3", "[@ c #4990A2", "}@ c #4C94A1", "|@ c #4F96A3", "1@ c #55A2AA", "2@ c #57A4AD", "3@ c #58A6B1", "4@ c #5BA8B4", "5@ c #5DAAB6", "6@ c #62ADB9", "7@ c #66B0BB", "8@ c #69AFBB", "9@ c #6BB1BE", "0@ c #70B5BF", "a@ c #70B6BE", "b@ c #74B7BD", "c@ c #75B9BD", "d@ c #78B7BB", "e@ c #79B9BA", "f@ c #75B2B2", "g@ c #629DAA", "h@ c #66A1A8", "i@ c #5591A4", "j@ c #669894", "k@ c #BC9F2D", "l@ c #E3BD24", "m@ c #9D6A10", "n@ c #D3B024", "o@ c #B9A732", "p@ c #749782", "q@ c #498793", "r@ c #458E9F", "s@ c #4C91A1", "t@ c #4F95A2", "u@ c #529FA7", "v@ c #55A3AD", "w@ c #56A4B1", "x@ c #58A4B2", "y@ c #5AA7B5", "z@ c #5CABB7", "A@ c #5FADB7", "B@ c #64ACB9", "C@ c #66ADB9", "D@ c #68B0B9", "E@ c #6BB2B9", "F@ c #6FB4B7", "G@ c #72B5B7", "H@ c #73B2B6", "I@ c #75B5B2", "J@ c #74B0B1", "K@ c #66A4AA", "L@ c #6AA3A7", "M@ c #58919A", "N@ c #78966A", "O@ c #CCA325", "P@ c #E2C127", "Q@ c #DCB620", "R@ c #945B0C", "S@ c #C1911C", "T@ c #D3B528", "U@ c #84A25D", "V@ c #558C91", "W@ c #438AA2", "X@ c #4891A3", "Y@ c #4A90A1", "Z@ c #4A939F", "`@ c #4F98A3", " # c #529CA6", ".# c #53A1AC", "+# c #55A1AF", "@# c #55A3B1", "## c #56A4B2", "$# c #57A8B4", "%# c #58A6B4", "&# c #5CA8B2", "*# c #5DA8B4", "=# c #61ABB4", "-# c #66ABB2", ";# c #6AAFB4", "># c #6BB0B2", ",# c #6DB1B2", "'# c #70B1AD", ")# c #6FADAD", "!# c #6EAAAB", "~# c #669FA2", "{# c #6B9991", "]# c #A89D3B", "^# c #DBB624", "/# c #DEBD23", "(# c #90560A", "_# c #B57A14", ":# c #C4AE33", "<# c #7EA18B", "[# c #498C9F", "}# c #458EA4", "|# c #49919F", "1# c #4A919F", "2# c #4F99A1", "3# c #539DA6", "4# c #519EAC", "5# c #4F9FAD", "6# c #4FA1AF", "7# c #4FA2B1", "8# c #52A2B1", "9# c #55A2B0", "0# c #57A3AD", "a# c #5CA4AF", "b# c #5DA8AF", "c# c #62AAAF", "d# c #62AAAD", "e# c #66ACAD", "f# c #6AADAC", "g# c #6AABAA", "h# c #6AA4A4", "i# c #6D9A95", "j# c #849651", "k# c #CFA422", "l# c #E3C126", "m# c #DEB821", "n# c #B27011", "o# c #C48A19", "p# c #B9B540", "q# c #739F93", "r# c #4A8C9F", "s# c #488CA3", "t# c #4C919D", "u# c #4E949E", "v# c #519AA3", "w# c #4F98A4", "x# c #4E9CA7", "y# c #4C9AAB", "z# c #4D9EAC", "A# c #4C9CAD", "B# c #4E9FAD", "C# c #529FAB", "D# c #559FAB", "E# c #56A2AB", "F# c #58A3AA", "G# c #5DA6AA", "H# c #61AAAA", "I# c #64A7A4", "J# c #62A3A1", "K# c #6A9A95", "L# c #809658", "M# c #CAA123", "N# c #DFBE26", "O# c #E5BE24", "P# c #E2BC23", "Q# c #A5630D", "R# c #B97411", "S# c #C7901A", "T# c #AEB547", "U# c #80AA93", "V# c #5D9A9D", "W# c #4D909E", "X# c #4E8F9D", "Y# c #56989F", "Z# c #5A9FA4", "`# c #5CA4A7", " $ c #4A96AA", ".$ c #4A9AAB", "+$ c #4A9DAC", "@$ c #4C9AAA", "#$ c #4E9AAA", "$$ c #4F9AA7", "%$ c #559EA4", "&$ c #5BA2A2", "*$ c #6A9D93", "=$ c #759C8B", "-$ c #889A52", ";$ c #DDBC26", ">$ c #E5B922", ",$ c #E1BB22", "'$ c #AA660F", ")$ c #BC7613", "!$ c #D2AF23", "~$ c #C5BD3A", "{$ c #8BB16C", "]$ c #86AD95", "^$ c #6FA699", "/$ c #5C9FA1", "($ c #5B9FA4", "_$ c #62AAA7", ":$ c #58A1A4", "<$ c #4A98A6", "[$ c #499AA8", "}$ c #4999AA", "|$ c #4A9AAA", "1$ c #4A96A7", "2$ c #4A96A4", "3$ c #4A95A2", "4$ c #569A9F", "5$ c #609D9A", "6$ c #759D87", "7$ c #809B59", "8$ c #AEA53D", "9$ c #D2B027", "0$ c #DEBE2B", "a$ c #E4B821", "b$ c #E3B822", "c$ c #B0680D", "d$ c #BE7813", "e$ c #CC9D1F", "f$ c #D0AF29", "g$ c #CEBE35", "h$ c #A3BA4E", "i$ c #8CB191", "j$ c #8AB198", "k$ c #75AA9A", "l$ c #5D9FA2", "m$ c #4991A4", "n$ c #4494AB", "o$ c #4195AD", "p$ c #4193AD", "q$ c #4193AB", "r$ c #4D919C", "s$ c #659F9A", "t$ c #7EA088", "u$ c #7C9F62", "v$ c #B4A637", "w$ c #D0B32D", "x$ c #D5B72A", "y$ c #DBBC2A", "z$ c #E2C851", "A$ c #EAD16D", "B$ c #E3BF32", "C$ c #D9B022", "D$ c #9B5E0D", "E$ c #B26B0F", "F$ c #BB7112", "G$ c #BD7714", "H$ c #C68B19", "I$ c #CD9E1E", "J$ c #D3B126", "K$ c #CABE37", "L$ c #B5BD45", "M$ c #89AF72", "N$ c #89AD91", "O$ c #79A896", "P$ c #83AA91", "Q$ c #86AA8E", "R$ c #86A78C", "S$ c #82A684", "T$ c #83A674", "U$ c #9EAF4C", "V$ c #BFB73C", "W$ c #D0BB31", "X$ c #D5BC30", "Y$ c #DFBF2A", "Z$ c #D7BC28", "`$ c #DABF51", " % c #EAD995", ".% c #DFBC42", "+% c #CC9E23", "@% c #B88520", "#% c #9A5716", "$% c #9F5F0C", "%% c #B4680F", "&% c #BA7011", "*% c #C9921C", "=% c #D4B227", "-% c #D6C02F", ";% c #D2C135", ">% c #CBC63E", ",% c #D1C136", "'% c #D4BF33", ")% c #D5C032", "!% c #D8BE2D", "~% c #D7BD30", "{% c #DABF29", "]% c #E0BF25", "^% c #DCBC27", "/% c #D9B522", "(% c #CFAD22", "_% c #CCAA23", ":% c #CFAF2E", "<% c #D0AA45", "[% c #C5852A", "}% c #B96B1E", "|% c #AC5F1B", "1% c #994814", "2% c #9B4B16", "3% c #924313", "4% c #B0660F", "5% c #B66D0F", "6% c #BE7311", "7% c #C27B15", "8% c #CB8F1A", "9% c #D1A11E", "0% c #D29D1F", "a% c #D5A420", "b% c #D7AA20", "c% c #DAAC21", "d% c #DBB222", "e% c #DDB322", "f% c #DDB824", "g% c #DEB31F", "h% c #E0B41D", "i% c #D9AF1E", "j% c #C89E1D", "k% c #BC951D", "l% c #C6A623", "m% c #C4A023", "n% c #AC7B1B", "o% c #A45419", "p% c #AC5019", "q% c #AE5119", "r% c #AD551A", "s% c #A9531A", "t% c #954414", "u% c #82370E", "v% c #A9660D", "w% c #BF7412", "x% c #C37B14", "y% c #C88315", "z% c #CB8916", "A% c #CF9016", "B% c #D39716", "C% c #D69A19", "D% c #D8A019", "E% c #D9A51A", "F% c #DAA71B", "G% c #DCA81B", "H% c #DBA71C", "I% c #DBAC1C", "J% c #CFA21A", "K% c #B98A18", "L% c #9F7016", "M% c #BF9C20", "N% c #B9921C", "O% c #894F10", "P% c #833C12", "Q% c #964215", "R% c #A54D18", "S% c #BE5F1F", "T% c #B3581C", "U% c #994416", "V% c #853910", "W% c #722E0C", "X% c #AD6611", "Y% c #C27A13", "Z% c #C78214", "`% c #CA8815", " & c #D19218", ".& c #D39818", "+& c #D59E18", "@& c #D79F18", "#& c #D7A01A", "$& c #D19F18", "%& c #C79519", "&& c #936C14", "*& c #63430A", "=& c #967313", "-& c #AD861C", ";& c #7C470F", ">& c #692D0C", ",& c #76330F", "'& c #974616", ")& c #B0531B", "!& c #9B3C12", "~& c #9D4012", "{& c #903B11", "]& c #82350F", "^& c #792F0C", "/& c #B46A10", "(& c #B66E10", "_& c #BB7412", ":& c #C27D10", "<& c #C78112", "[& c #CA8713", "}& c #CD8E14", "|& c #CC8E16", "1& c #CE8F16", "2& c #D29616", "3& c #452E05", "4& c #865D0D", "5& c #774D0E", "6& c #643209", "7& c #562507", "8& c #4F2006", "9& c #813A10", "0& c #954514", "a& c #913F12", "b& c #AA4B17", "c& c #A14111", "d& c #9B3F12", "e& c #9E4A17", "f& c #A45517", "g& c #9D4C18", "h& c #4B1C04", "i& c #401803", "j& c #461C05", "k& c #70330B", "l& c #70300D", "m& c #813B10", "n& c #883B11", "o& c #933810", "p& c #BA5C1D", "q& c #BF6122", "r& c #B55A1E", "s& c #984B17", "t& c #79310E", "u& c #7A300D", "v& c #542303", "w& c #602807", "x& c #5A2709", "y& c #652A0A", "z& c #7D3910", "A& c #A04F19", "B& c #AF561A", "C& c #B75B1E", "D& c #B4511B", "E& c #9E4113", "F& c #893810", "G& c #80330D", "H& c #964617", "I& c #552305", "J& c #582507", "K& c #6A2F0B", "L& c #7A3A0F", "M& c #894212", "N& c #863D11", "O& c #A54014", "P& c #A04113", "Q& c #A24C19", "R& c #A5561C", "S& c #9B4A19", "T& c #602B08", "U& c #612908", "V& c #5B2708", "W& c #672D0A", "X& c #672C0C", "Y& c #6A2A0B", "Z& c #A64515", "`& c #BF5C20", " * c #BD6422", ".* c #AE571D", "+* c #A45119", "@* c #A2511B", "#* c #502206", "$* c #4C2005", "%* c #451B04", "&* c #542107", "** c #793710", "=* c #742F0C", "-* c #CA6B25", ";* c #C16624", ">* c #9E4E19", ",* c #A4551A", "'* c #381403", ")* c #371502", "!* c #5A2509", "~* c #7C3B0F", "{* c #864011", "]* c #954814", "^* c #AA551D", "/* c #B96120", "(* c #C66525", "_* c #BA5D1F", ":* c #9F4616", "<* c #934114", "[* c #A5551B", "}* c #A05217", "|* c #391602", "1* c #5F2908", "2* c #6B310A", "3* c #5C2808", "4* c #692F0C", "5* c #954916", "6* c #9D4D18", "7* c #B65F1F", "8* c #BC5E1F", "9* c #A84615", "0* c #A64917", "a* c #A85219", "b* c #A2501A", "c* c #572306", "d* c #421905", "e* c #4D1F04", "f* c #5E2807", "g* c #7D3C10", "h* c #7D3710", "i* c #9F4E18", "j* c #B0581D", "k* c #A44917", "l* c #AC4B17", "m* c #984213", "n* c #AC561D", "o* c #9C4C17", "p* c #431904", "q* c #552406", "r* c #602A09", "s* c #72330D", "t* c #9A4D19", "u* c #9C4917", "v* c #A64E19", "w* c #A14214", "x* c #A44715", "y* c #B65B1F", "z* c #AA541B", "A* c #8B3E13", "B* c #823A10", "C* c #492205", "D* c #522205", "E* c #542207", "F* c #843C11", "G* c #924715", "H* c #984717", "I* c #873710", "J* c #B65A1D", "K* c #BF621E", "L* c #AB4F18", "M* c #903F13", "N* c #7A370F", "O* c #6E310D", "P* c #3F1903", "Q* c #351401", "R* c #441A05", "S* c #562307", "T* c #73320E", "U* c #8A4313", "V* c #984513", "W* c #833910", "X* c #662C0A", "Y* c #381603", "Z* c #7C380F", "`* c #884111", " = c #974814", ".= c #9C4B15", "+= c #904213", "@= c #71330E", "#= c #5D290A", "$= c #562708", "%= c #582506", "&= c #5A2806", "*= c #6E300B", "== c #79360E", "-= c #74350F", ";= c #672F0A", ">= c #471F06", ",= c #4E2105", "'= c #522107", ")= c #502107", "!= c #5F2B08", "~= c #451C04", "{= c #481E05", "]= c #411904", "^= c #391702", "/= c #3C1A01", "(= c #481E02", "_= c #431900", ":= c #381401", "<= c #250D00", "[= c #2C1201", " ", " ", " ", " ", " ", " ", " ", " ", " . + @ # # $ % ", " & * = - ; > , ' ) ! ~ { ] ^ / ", " ( _ : < [ } | 1 2 3 4 5 6 7 8 9 0 a b ", " c d e f g h i j k l m m n o p q r s t u v w ", " x y z A B C D E F G H I J K L M N O P Q R S T U V ", " W X Y Z ` ...+.@.#.$.%.n &.*.=.-.;.>.,.'.).!.~.{.].^. ", " /.: (._.:.<.[.}.|.1.2.3.4.5.6.7.8.9.0.a.b.c.d.e.f.g.h.i.j. ", " k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.A.B.C.D.E.F.G.H.I.J.K.L.M.N. ", " O.X P.Q.R.S.T.U.V.W.X.Y.Z.`. +.+++@+#+$+%+&+*+=+-+;+>+,+'+)+!+~+ ", " {+]+^+/+(+_+:+<+[+}+|+1+2+3+4+5+6+w.7+8+9+0+).a+b+c+d+e+f+g+h+i+ ", " j+{+k+l+m+n+o+p+q+r+s+t+u+v+w+x+y+z+A+B+C+D+D+E+F+G+H+I+J+K+L+M+N+ ", " O+P+Q+R+S+T+U+V+W+X+Y+Z+`+ @.@+@@@#@$@%@&@*@=@-@;@>@,@'@)@!@~@{@]@ ", " ^@/@(@_@:@<@[@}@|@1@2@3@4@5@6@7@8@9@v+0@a@b@c@d@e@>@f@g@h@i@j@k@]@l@ ", " m@n@o@p@q@r@[@s@t@u@v@v@w@x@y@z@A@6@B@C@D@E@F@G@H@I@J@K@L@M@N@O@P@Q@ ", " R@S@T@U@V@W@X@Y@Z@`@ #T..#+#@###$#%#&#*#=#-#;#>#,#'#)#!#~#{#]#^#/# ", " (#_#a :#<#[#}#[@|#1#2#3#T.4#5#6#7#8#9#0#a#b#c#d#e#f#g#h#i#j#k#l#m# ", " n#o#X p#q#r#s#|#t#u#v#w#x#y#z#A#B#5#C#D#E#F#G#H#I#J#K#L#M#N#O#P# ", " Q#R#S#X T#U#V#W#X#Y#Z#`#W+ $.$.$+$@$#$$$q+3#%$&$*$=$-$O@;$O#>$,$ ", " '$)$S#!$~${$]$^$/$($_$:$<$[$}$|$1$<$2$3$4$5$6$7$8$9$0$P@a$b$ ", " c$d$o#e$f$g$h$i$j$k$l$m$n$o$p$q$n+r$s$t$u$v$w$x$y$z$A$B$C$ ", " D$E$F$G$H$I$J$K$g$L$M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$> `$ %.%+%@%#% ", " $%%%&%F$d$o#*%U =%-%;%>%,%'%'%)%!%~%{%]%^%/%(%_%:%<%[%}%|%1%2%3% ", " 4%5%&%F$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%E$&%&%w%x%y%z%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W% ", " X%%%&%6%Y%Z%`%A% &.&+&@&D%#&$&%&&&*&=&-&;&>&,&'&)&!&~&{&]&^& ", " /&(&_&:&<&[&}&|&1&2& 3&4&5&6&7&8&9&0&a&b&c&d&e&f&g& ", " h&i&j&k&l&m&n&o&p&q&r&s&t&u& ", " v&w&x&y&z&A&B&C&D&E&F&G&H& ", " I&J&K&L&M&N&Q%d&O&P&Q&R&S& ", " T&U&V&W&X&Y&]&{&Z&`& *.*+*@* ", " #*$*%*&***=*s%q&-*;*s%>*,* ", " '*)*!*~*{*]*^*/*(*_*:*<*[*}* ", " |*1*2*3*4*5*6*7*8*9*0*a*+*b* ", " c*d*e*f*g*h*i*j*k*C&l*m*n*o* ", " p*q*W&r*s*t*u*v*w*x*y*z*A*B* ", " C*D*j&E*F*G*H*I*J*K*L*M*N*O* ", " P*Q*R*S*T*U*H*s%p%V*W*4*X* ", " Y*r*k&Z*`* =.=+=@=#=$= ", " %=&=3*W&*===~*-=;= ", " >=,=7&7&'=)=!= ", " ~={=]=^=/= ", " (=_=:=Y* ", " <=<=[= ", " ", " "}; �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/ICQ.png��������������������������������������������������������0000644�0001750�0001750�00000014611�13431646201�015415� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq���bKGD������ pHYs�� �� d_���tIME #(Ĺi��IDATxyUŵU>@3( AƇH^4ɍ2<51D&}D%80 fhNg޻v?iFq>>{W߯VZ!e(JQH dO*��'É9x`-< Х$H"ےٞT3u="$bYW%JѨ=Jb(ƶ1J(W1Rcܱ+Em JR>Ĩf^5F2u%:0tu{yCݶ4zw^,ߔO ڎ<R�=c8(9Ԣw:sgPV10 l =|VNJB716+>F.$! DzH)8߲-ďg¸(Q!RJ#,j.>Ooke!,fY.1t!K$LCrRb5WUQTVX8VB=x#=<0o јK!%J "3IYa80ĕ+29TП!@�c\X<M }|uч$z4eeOK0^f}\x<]i&YӠ̭ =߇6[4~RaqCʍC))QFYR#B~|k_D��v2M.$&6nJ3aL/L%wgAW=}_P P?sF{$Ei: e@[ jgڼ^gX¶ΩwkH9R0|b^g_{'[s48,Ϗ-(K~5�QpH � f̫C"<ov.O=: #* FՐ<;10j(k:ރa>e'd\8^= cQ5У(j/sbӥ0iE + _3s9C^\g1ƐdXt ?@ QJ:m|!DV<b}{ ( "o.H!z r㱱jUNJ;ِ ֲ0j~oqmr6TDlo"bĦ(ǵ~�f_TäSl64I)e b@y 947t3>[ 0` 7/b☉g!4$rxing7ZGC�,~\*+"-ɮ,ӪS_jlMȠohۇXQl,e!@ ֏Zx\/-"Ϫw;gaŸ'F)_wD a�X �<,uk-6<fEQURt&C>GqZb8(ŒRaB;Q0`xQ##}Jz|b ԣ #`}~ k,�)EckyfDѨ@=^^D`A׋ȿT TJʐqwlx;tk@ r,_-xaADʆQ@`0hu.ؖDO|oC<cJ1Bcs,6D z:|?νNLϓJn3~{ݿ} %8~[m;h `/~ca@Td�ڂ8;V1</iO` Q0_k?~,qדoAOsH(rɀxg7"F;l BB�,>R>9g ss9E9QE9#H>&r;&(ƞx~ )q>"Kqyy@<0O`_]iͭəZm޾#pB@@ DHo(‹`+q @d@I0E%1a0ҶF^%|s%RH[&I<5U+!$mS?W]_2WoW3sģB!0hlϴfTmv{ ~q`<<'�W>x B;zWZf|)JF$~1l!6BՓHy-::mן*^["o.>nLm׵:S�O 6nɒLө:f `}<a(1K"bf]^Ξn1p,u_窹\X $<s>]_X*eJal5'ńb, EY0ovI+ۭy6vx.{Wft ڑz' DDa|iD\ȈKYwFA�u;2\svLc4ZΨ8?)[(ו'GWƦ96o2RsۂJ@TQNj*-rY˵ڈA˂:@h`A%upӯi~ R-fΙŔ;3fQaW1&0gvǑK*yaa\܁cAME&o^SNՄRphHIQWc'3-f,j(r߫  @4Җx `c k9Nv{p CGQsSUQj*m~_ZV JKU58=^S .;YqH"L()TD1{8#\w\C))a�1K GS,!7$.|BI92;::6XHϐpSb:[2$:5+ק!5w<.6֥2L!9yZ)8VDZ;sdG<uT;*!b%ʒDp X: Uўt)HjOCKϫor\ ShGc CQ\1cVOE X37c )+)IƎ0nR1qD L%1D̎3LeBb p9C�d<"RPc %AT?oq2FUS##9JAqȷjs/ B08I#\qq(J@#0 L#ٔIŰ j݁Afߞ?NyD<CIkM6ATǥ Fh ťs摐r.*aE}vJWT '\|Q%N ØlDh_d$fs|aЕ%w$)%`@#KV4IAA:VtZqVAƖ<.%R{.6o}(Mإ>~{S!qV)3fy@&Ѐ1H_%&H2qD ے@vN+1C( ́d-tB|y7}۶y;O`9駟δiP[{SL+/=m۷U\qN~M>`Ld`0Syہ-ǚX^;EQ%%|ߘ F@KũQaf1l6QcFq93)~껶, p뭷2uT"v٪\y\>kmネC]U^EWO+Q`~VMۀmݚ掟e,M{r<ےɁS$Ȍ3bϧRmvG �?}�/t I>8\ve|g̘1H6l _^c=O>Ζ;rn1]Ml v‘*,{xVwe0AƖ,! e82Gvh 0;x?[Dd�Ʌ2~xnfƎ>C6Ek\~̛+r&K:U9t*MIe+$)f{5SN9;.k+ _m)\f&CiH<)P ;1kD":,.}y/_SO=Ŏ;hooghiޛe1$wFwsRn?"AKGX:El w~{|p]3sL/^lZ!~�r�>H~!ˑ4MPzN:iuq 7wYfOmk߿FWv4=d`3?g„ ,^Xlf#~t%LoC6 Y2+(tX,Ƅ pBك�K,%ꆾaذa˧DzMKYӼקǧ3 /Ohj\ńfA@+P�!]~L$N%,fXEQQ> E%\Tӊ+n7C ! Sx1cƒklK 6ڬl6d$$MHCPAaMq<D謵&Ln@:o!t:h4ʤIbit:Pɓ'WwGGG_! u8 AZ@J@` UNٺu Iɜ9spL&wotr߿4P;wNKq9s&s I @YY_>u' f85 @/#K$0`ƕH$x7)))y裏+ގ>1m۶i&zzzgw}ֲvZʸ꫙2e>ձyf�&ïJ e4 E{Fkͺuxי7o^x<ε^˕W^I!,ロe˖zj&OL4fl椓N{}et:Y~=�߆ot �DvV+Ƙqm6yjjj83m)%Hd۷cᮻbС\zv.#d0پ};-H;B= {v}!>Az-[=Ò%KGEk.7ȫJ"8 RSSìY ?k{. $ { |(AQ5 n?ҥ-ψ#())+Vzj/_ڵkܱck֬!ϓfI$xGWW\Ew^�2 K.%`Y硔곚zR}x<ĉimmeݺuh= W)�-<|@yґH fODGva;eTWW@&?[PZb$aO0Fylٲr9pR[[ѣ2d֬Yɓ(--Eky衇@*Rp#=$HLl4:)B_weM/%%KyN6m?(qlEqyJ t`زe [l9P3F "\{<cÆ lذa_}Ur7t+V'dժUR)fpL{AP<08[ 1 %y_PUnqUU|b29aJ:R*Va.<[b y6ǡGy-IS^qK^3 {Te˖~-) ( C�s,D@^騷b٥<xh =A((,Tk<bmBŘRGڄKVA0TCMe'|8 $<t*(n֎~|%%eHٳ@.8~~>)*K VUG3e "dxy Ӛd:Ɂ/:W-DOQ(|xp'[39QExwe{_<'_:P}p_A2dp>UWXCquv3)w< 2C uGWHVo!t ii3n|L&ޟfGcyyXV;X}!;+a1V!#?}n/oa1WzA_K8%!4?YSpwM&`yY,#a!ė90ܐw�#-%3 s%l =|F1t/}QAK\um<j5ǣV6\uJqzDZGgQ+Z-F*;8)a w;BByhDLKп%)zב.S gM77=3[by!|D8!P U<u>(5{O$|RE~&PRP KG跆zW>! GWxqr^?2tpUYqC_[]vS����IENDB`�����������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/real.xpm�������������������������������������������������������0000644�0001750�0001750�00000020113�13431646201�015736� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "48 48 155 2", " c #38E338E338E3", ". c #EFBEEFBEEFBE", "X c #00006595FFFF", "o c #082069A6FFFF", "O c #10406DB6FFFF", "+ c #186171C6FFFF", "@ c #B6DAC71BEFBE", "# c #208175D6FFFF", "$ c #28A275D6FFFF", "% c #28A279E7FFFF", "& c #30C27DF7FFFF", "* c #38E38207FFFF", "= c #41038207FFFF", "- c #BEFBCB2BEFBE", "; c #41038617FFFF", ": c #49248A28FFFF", "> c #51448E38FFFF", ", c #59659248FFFF", "< c #AEBAC71BEFBE", "1 c #B6DACB2BEFBE", "2 c #49248617FFFF", "3 c #BEFBCF3CEFBE", "4 c #59658E38FFFF", "5 c #C71BCF3CEFBE", "6 c #61859248FFFF", "7 c #208171C6FFFF", "8 c #61859658FFFF", "9 c #C71BD34CEFBE", "0 c #69A69658FFFF", "q c #B6DACB2BE79D", "w c #51448A28FFFF", "e c #38E37DF7FFFF", "r c #38E37DF7F7DE", "t c #B6DAC71BE79D", "y c #41037DF7F7DE", "u c #514451445144", "i c #410379E7E79D", "p c #9658A289BEFB", "a c #A699AEBAC71B", "s c #492475D6D75C", "d c #AEBABAEAD75C", "f c #51448A28F7DE", "g c #BEFBC71BE79D", "h c #59658E38F7DE", "j c #69A69A69FFFF", "k c #30C27DF7F7DE", "l c #B6DAC30BE79D", "z c #49244D344924", "x c #30C22CB230C2", "c c #28A228A228A2", "v c #208124922081", "b c #082004100820", "n c #49246DB6BEFB", "m c #492475D6CF3C", "M c #59658617E79D", "N c #61859248F7DE", "B c #71C69A69FFFF", "V c #000000000000", "C c #49246DB6B6DA", "Z c #514479E7CF3C", "A c #61858A28E79D", "S c #69A69248F7DE", "D c #69A69658F7DE", "F c #96589A69AEBA", "G c #59657DF7CF3C", "H c #20812CB24924", "J c #6185659571C6", "K c #08200C301040", "L c #38E341034924", "P c #104014511040", "I c #30C234D330C2", "U c #38E33CF34103", "Y c #618565956185", "T c #CF3CCB2BCF3C", "R c #71C671C671C6", "E c #9E799A699E79", "W c #FFFFFFFFFFFF", "Q c #F7DEFBEEF7DE", "! c #082008200820", "~ c #28A22CB24924", "^ c #104010401040", "/ c #28A230C24924", "( c #41038207F7DE", ") c #38E369A6C71B", "_ c #41037DF7EFBE", "` c #30C255559E79", "' c #082008201040", "] c #49248617F7DE", "[ c #AEBAB6DAD75C", "{ c #96589E79B6DA", "} c #71C67DF78E38", "| c #104014512081", " . c #514459656185", ".. c #41036DB6C71B", "X. c #104010401861", "o. c #38E3451469A6", "O. c #618575D6AEBA", "+. c #492471C6C71B", "@. c #38E359659E79", "#. c #492455555965", "$. c #30C238E35144", "%. c #596565959E79", "&. c #71C68617C71B", "*. c #8E389E79E79D", "=. c #51448617E79D", "-. c #9E79A699BEFB", ";. c #492469A6B6DA", ":. c #410359659E79", ">. c #28A23CF369A6", ",. c #2081249238E3", "<. c #618571C6AEBA", "1. c #86179A69DF7D", "2. c #9658A699F7DE", "3. c #9E79AEBAFFFF", "4. c #514471C6BEFB", "5. c #514471C6B6DA", "6. c #38E341036185", "7. c #596569A69E79", "8. c #A699A699B6DA", "9. c #9658AAAAFFFF", "0. c #CF3CD75CEFBE", "q. c #BEFBCB2BE79D", "w. c #71C69658F7DE", "e. c #71C69A69F7DE", "r. c #86179A69E79D", "t. c #CF3CD34CEFBE", "y. c #71C69E79FFFF", "u. c #79E79E79FFFF", "i. c #514465959E79", "p. c #69A68207C71B", "a. c #8E38A699F7DE", "s. c #D75CD75CEFBE", "d. c #186118611861", "f. c #514455555965", "g. c #A699B2CAFFFF", "h. c #79E7A289FFFF", "j. c #38E3492471C6", "k. c #30C230C238E3", "l. c #208128A24103", "z. c #86179658E79D", "x. c #C71BCF3CE79D", "c. c #69A68617CF3C", "v. c #410355558617", "b. c #9E79A699B6DA", "n. c #B6DABEFBD75C", "m. c #8E38A699FFFF", "M. c #8617A289FFFF", "N. c #79E79658EFBE", "B. c #8617A289F7DE", "V. c #8E38AAAAFFFF", "C. c #AEBAB6DAFFFF", "Z. c #8617A699FFFF", "A. c #B6DAB6DAFFFF", "S. c #D75CDB6CEFBE", "D. c #B6DABAEAFFFF", " . ", " X X o o o o O O O O + + @ @ @ # # # $ % % % % & & & & * * * = - - - ; ; : : : : > > > > , , . ", " X o o < o < O O O + @ + + # # # @ $ % % % % 1 & 1 * * * * - = ; ; ; 2 3 : : : > > 3 4 3 , , . ", " o < o o O O O < + + + + @ # @ # $ % % % 1 & & & & * 1 * = = ; - ; 3 : : : : > 3 > > , , , 3 . ", " o o o < < < O + + + + # # # # $ % % % % & & 1 1 1 * * = = ; ; ; 2 : : : : > > > > 5 3 3 6 6 . ", " o o < O O O @ + + + 7 # # # $ % % % % & & 1 & * * 1 = = ; ; ; 2 : : : : > > > > 3 , , , 5 8 . ", " o < O O < + + @ 7 7 # # # 1 % % 1 % & & 1 * * 1 * = - ; ; 2 2 : 3 : : 5 > > > 5 , , 3 6 8 9 . ", " O O < O + + @ + 7 # # # $ % 1 % % 1 & & & 1 * * = - ; ; 2 2 : : : 3 > > 5 > , , 3 6 6 8 9 8 . ", " O O O @ @ @ + 7 # # # $ 1 % 1 % & 1 & & * * 1 1 - ; ; ; 2 : : 3 : 3 > > 5 , , , , 9 5 9 0 0 . ", " O < + + + + 7 @ # # 1 1 1 % 1 & & 1 & * 1 * = = ; ; 1 2 2 q q - w 3 > > 5 , , 3 6 8 8 8 0 9 . ", " O + + @ + @ # # # $ 1 1 1 % 1 & & - * e r r t y t u i u u p u a s d f f g h h h 8 9 0 9 j j . ", " + + + 7 7 # # # $ % % % 1 & 1 & k l u u z x c v v b v b v b v v c c x u u u n m M N N 0 j B . ", " + + + 7 # # # $ % % % % & & u u c c b V V V V V V V V V V V V V V V V V V v c x u C Z A S D . ", " + + 7 @ # # 1 % % % % % u c b V V V V V V V V V V V V V V V V V V V V V V V V V V c u u F G . ", " + 7 # # @ $ % 1 % % u c V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V v H J . ", " 7 # @ # 1 % % 1 % x v V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V K L . ", " @ @ @ $ 1 % % u c b V V V V V V V V V V V V V V V V V V V V V V V V V V V V V P I u I V b U . ", " @ @ 1 % 1 % u c V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V Y T T R V b U . ", " # $ 1 % 1 % x V V V V I I V V I I I V V I I Y I I V V V V V I I Y Y I V V V E W W Y V b U . ", " $ % % % 1 u v V V V Y T T E E T T Y V E T T T W T E I V V E T W T Q T T E V I T W T u V b U . ", " % % % 1 & x V V V V E W W W W W T I E W T E I E W W Y I V E T E Y E W W T I I T W T I V ! H . ", " % % % & & c V V V V T W W T E Y I Y W W T I I E T W T V V Y Y E Y E W W T I I W W E V V b H . ", " % % & & & x V V V I T W T Y V V V E W W T W W T T W E I E W T T T E W W T V Y W W E V V b ~ . ", " % & & 1 & z V V V Y T W T V V V I E W W E I I E E Y I E W W E I V Y W W E V E W W Y V V b H . ", " & 1 & & & u c V V Y W W E V V V V Y W W T E E T W Y V E W W T E E T W W Y I T W T I V V b U . ", " & & & 1 1 t z b V Y E E Y V V V V V Y E T W T T Y I V I E T T T E E E E I I Y T Y I V V b H . ", " & & 1 * * * d u V V I b V V V V V V V I I I I V V V V V P I I v V V ^ v V V V I V V V V ! / . ", " & 1 * * 1 = ( u u b V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V b U . ", " & * 1 = = ; - ( ) u c V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V ! / . ", " * * = - - - ; ; _ ) ` u c V V V V V V V V V V V V V V V V V V V V V V V V V V V V V b v ' / . ", " * 1 = ; ; ; ; 3 2 ] [ { } u x c V b V V V V V V V V V V V V V V V V V V V V V V V x u b | .. ", " = = ; - ; 3 : : : : 3 g d ..} u u u x c v b V V b V V V V V V V V V V V V V b v u b X.I o.O.. ", " = ; ; ; ; : : : : w > > 3 f d +.@.#.H H u u u u z x z x c b V V V V V V V v u u b | $.%.&.*.. ", " ; ; ; ; : : : : w > > > 4 , 3 h =.-.n C ;.:.>.H H H H H H c V V V V V v x u b | ,.o.<.1.2.3.. ", " ; ; 2 3 : : 3 w > > > 4 , 3 , 6 3 N N N N A -.4.4.F 5.5.u v V V V v c u b X.,.6.7.8.*.9.0.3.. ", " ; 2 : : 3 : w 3 > > 4 , , , 6 8 8 8 0 0 j 0 D q.w.w.q.e.c V V V c u b X.,.6.%.&.r.2.t.3.3.0.. ", " 2 2 - : 3 w > 3 > 4 , , , 6 8 8 0 0 0 j j 9 B 9 y.u.9 u V V c u ! X.,.6.i.p.r.a.t.3.0.3.3.s.. ", " - - 3 : 3 > > 3 4 , , , 9 8 9 8 0 0 j 9 9 9 y.9 u.u.u v V z | d.,.f.i.p.r.a.t.0.0.3.0.3.g.s.. ", " - 5 - > 3 > > 3 , , 3 6 8 8 0 0 9 j j 9 9 9 y.9 u.h.x c j.k.l.6.i.p.z.x.9.9.0.0.0.3.s.g.g.s.. ", " : : 3 > 3 > 4 3 , , 6 8 9 9 9 0 j B B B y.9 u.9 h.h.x.c.v.j.i.b.n.x.m.9.9.9.3.3.0.3.s.g.g.s.. ", " : w > > 3 4 , 3 , 6 8 9 8 0 0 9 j B B y.y.u.h.9 h.M.9 N.c.c.n.B.m.9.0.9.9.3.3.3.3.g.s.g.g.s.. ", " w > > 3 4 , 3 , 6 8 9 8 0 9 j j 9 B y.y.u.u.9 h.M.9 M.M.B.x.m.V.t.9.9.0.3.3.3.3.g.0.g.C.s.C.. ", " > > > 4 , , , 6 6 8 0 9 0 j B 9 B y.y.u.u.h.h.M.M.Z.Z.m.m.m.t.9.9.9.0.3.3.3.3.g.g.g.g.C.C.C.. ", " > > 4 , , , 6 8 8 8 0 0 9 9 9 B y.y.u.u.h.h.M.M.M.Z.m.m.V.V.9.t.0.0.3.3.3.3.g.g.g.g.C.C.C.C.. ", " > 4 , 3 , 9 6 8 0 0 9 j B B B y.9 u.u.h.h.M.9 Z.t.m.m.V.V.t.9.9.9.3.3.s.3.g.g.g.g.s.C.s.A.A.. ", " 4 3 , , 6 8 8 9 0 0 j B 9 B 9 y.u.u.h.h.t.M.Z.Z.m.m.t.V.9.9.9.0.3.0.3.3.g.g.g.s.C.C.C.C.A.S.. ", " , , , 3 9 9 0 0 0 j j B B y.y.u.u.h.h.M.M.M.t.t.t.V.V.9.9.9.9.3.3.3.3.g.g.g.g.C.C.S.s.S.A.D.. ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . "}; �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/Pen.png��������������������������������������������������������0000644�0001750�0001750�00000020041�13431646201�015515� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq���gAMA�� a���bKGD������ pHYs�� �� d4$���tIME Zv��IDATx{Ymqݪ=No8ٌ؈� |l Y!9 A` @|_ Š@%Q$ÙUؽh*A2 l]իVK0e$zHhI+&2aB@E0�j�[�G ,UP�>~<}[5Ge9%XC@o1U@[ N�بj�4P 6 {wN Ҿ$1$25L1 %*)�BT�(OAzw]Q\AFÁ ,s�?"��کRnp#j: ŵ#N%*�efQb:PP/*>z:&U DKл۞}]v"zͪ>W; h:GDt1*Hڟˍ.1޾�~mV)ćECtKpP�sK \�!z>^B�=�\}JuN ]N :ϊ}_z!#9v S+(UWn�^t_ڗ5d_CxזjwZ.Y τlJFC!"� �!-S@L)wOe"2. 3e�>LK1,AC�Cʣ-7n ΚS8iaNcx2aAL0"*J���pOi k2 fID+_{Kc|`vS 0g t`zzv@|-  C 3ӯگX;P]?b2{h2eB/M:,�+  @GHg[8yg-bf03NWW@wg]B"B@vKh) r G0a CKK}-s|_/}K 33ћcq(ħ��S~h Fb$?5'��:%b<φ[~җ~W5h?u>`D CtX2 Ӂ*2ʲg#uW'3@yAU"{;^C -V�oj.V/~7Ǣk<3䜃_KD�K:?[+oz|||+P d *4K4@4;6_ i;4Q̘L&eѤ% /:>xMSUw]kmν-} G裿,f{uW/%;XJz0p[O}JsZ0Z+ "*EUsLH4:C֮kX"ro2�[9ѐx/=+vraXF5&о^_\]N ydi4LDZEֶmdf$'9UU G�3Ͻ7:O{?|t{s@x:<>!5XoW=tZkgNS0Y8'%9!23'f䔳uWx%"sxpv}>/N>҆�1\1鰦9L Gb" wQp¢Gt:ff*,Ӳ,̙H2/#p8 0)ţ*-h~(Qk5sTSv$g`H5%}`vw�(3/Y {lx"R�tn93�1݋d,Ⱦ oˆ oÓ˗^,n^]ۛ7i쳴K"CǠ9!l zڅ("J7uT10h!`=$$vBU#�|!"cƂe\�H?k=X4];O<A?^{yz;G.|2(n�@[[i霳JZ_Uvwwff{޳۶A&sk_e2f UR0l3=*INPzUUd,>)(L'eߏo_:&%#h;8®ׯ W\쁓,,EYueY1ܻw/cD1F{.Y§%U'G :lѥtȊȊ1F4ɲER ^Ud$Y̧;<kuyp.?$O=/<N{N~Ԅ@-`� `󋿸숊+Wxyfwvvh>,ˬs�Bl6CUU^] >`)GAD<1fu]yVcf4 !(*뚺;Qf}Ul>,Ϩk=9>FQ((rn}ֵ#u?j�Q\>~X,*k-_zUh\zfY"DEQhUUnݒ@D·PUCD&EqWU<s�YeYQ3gD1.yEfPuh2En^4/Kf&[�}#bȕ#\jż>vXtZS%Yku2Z uooO @hۖCcR]Hx6!NU)-g̜3sϘkY;^CqppDD_n'h</ 1T45�uEQkNO}6^-K|gnˏ?JgL滻f6yUkc2UU=�h% C�1jIѦty`OcUUm4|>Ό1QBpyXPl6! l6�^xZ{uX؝EYPhk:].!0`RV!, DݬADꌉq>>ٓO~w{`gM  odDnU<ZeYZl[mֆ1f| 3s@DDC*"jsefgqD]|}ob�zxx0ȝsEddB翉 CUY@Bfֶ6-ۭO>(ʲ蜣Z@ .\UYV=׮EU1,K2phdg%"nb#N&�ڵBzܹe)LteafL'pΡ1E`Gu]v�7˭f!E*AUVcZ&1�㽽=M�HJOOONaXPwUEQPUm;1. 4 f3k-r c,yse+RȔp6=UYjج׺\m[=9=UO|c3"8FcIb^xZM.;;;ZKY1Ƥb "̬D<v+Z 2c fUm+YιR*�g]Lq΋899fYf!Fu-u]Se'97 !8֪Rzkz� اs&"{eYb6q۶cDe΢�|kkMϭ1F 3y ݻөEo6dYF*1F4MVd:!+ !b"Fj:tZaR]8==U�裏CׯR*: !ꭵ!ʹPIW{rrb9rPU!HsC7̶]V~Z~5u]ǮMFf옦il۶6s*Xk}VՐeTun8>>d9u]mZ$@{#3;acc �B$L虹""#"=�ry#vQ]ItWD$s繬VXuLDJm4W7󜊢 "rEQhul-DĄ "(.wzA^hZ%5m6Zz?S}XT)\%s1F1CHUs.pIeQU2ƌOYEDѪB'Y:.'SUyN,˔e:RJ6cvcl<)*HP]EaNOOqrrPVX.]סi8LVO=_re&X1cP񈙍v""&@̓TD@C GBu&sٽ0{⦖VB'.[EZ]!_.:L�8@DgeYtjp]ج�5n[4uvyQ{9gScU ̥ ca*8EF^22E0)ov+Pv[EX,N&hgtJ1BE &ڂszr /V"P5&TUONNt^cZ+.]>ײ,3$jef#"1tp)F� k L$L#EVUѽ_9ꍊ,z\'z\6DMclۨ !9XDZe!B(UU"9iܓe}8<U՗?O|#˲,y$9Wc8 yJ߅t3mۚWowwl?dά.>/ 뽧ma �nb`fPkrmR�rfeQtlG۶pAUq|rGhTɫ䧾i-c3{f6LuMӴ̜%a1&OQhG4(T ǧ[^Uď_wlv]ʲLD3WYE$u1F+"FU&{;Ic ;$).sciuifs,KQUجn6<=~SU~Zjc1clU5#"B(c")tH!Ns~0̾JL?ߙĐ繈!R#L:޽ky,cflbfm �n>e}k-zxxoݺ>w뷘!lEċ!q12\D1fFDE ADYwon݅=~[ӉdKQDy81DHU٪*E)IU!z^[k<9_/bc u]dY{+?3?sЫZ1f�(IY1NKEaU�hT) �mͭ7D^ mK6 Lm5szmUUgZkceNUUUeY!IXy1&s{]&D~=?x9aBDm =0:WY>q}~v[<py0αKM)Nu'T,EQt""۶͋0�0L0e1Fj:2sa)YM1bO-O&~cOu|߈Y}ƍW@{P$eD4gDt-O3U0~/ױ <t͘yUvS<J~hAQ ~A!X�Y1'"H@FI-\UC4'x~w~W^՟ٟ =??Y9�eDzs)3UTu[(媚|G>qSEA�f^v>: g 2q{rĝ!U^}YjYj4qQ0̼Yр趈:&?_~__<5,�XcLSFD &P!>Ǩzg<<l歾nvĒ.FULKIUN($䀘"B̼` z·;{},sx3繖e;u�&1Fu1jVex!,޸t҆B!VPwlXX"[lE{m7ԵTy ߿zsqYg5Hvw0-@.f5ա̦<&].W?ӛU!2盲O-3̽i,Kk]!>11}sYyzjNN"*{T"{sN{SҬ^׫GJ�a6g4M̙1iۼo?yv>ժcբ_9=}9|{>R �oD 8g܉,PD$wЦsrׯ_77n<pR84 Q=<i#0U6xG5D/PQFv{ccպom}th-""""m\Fŝ0Vcs4adb1y1OH,˦mƲ,ͅqFbQXkYDj�k�*vow;GZޛglbOD�$|m%?P*}ZS�:?xeG'^دG?pͳ.J}~|Z̫}*)FH9&g8"1|>/R ע'6fg?ՎYӵ/0}n';3c><:maQ@\;r0){TD(Hכd&J'HD˸DD$^g닣rɲ%"̒8#"cHXnyֆyf"yךTNWi\ﻜ7.q1wj #%Iaߟڣ97D$!wtx;~i|_zk9жm3fcQB(dM~MwDvbC5ikk XUy.7u')I]u}骏/Zny]d0X 5*J_iԵYpl93e3;"Rq3_*0)i1ƈt l;֓ɤ䤞N+kVU;"KD^E,3{"11ƪ*{McVm-nn,3*wZnHA*ie}+(W+! TQDtGRC%=v}bUUvx%6rOɆ I8\P&c6"!t!nZŲ,sc{KDҳf6v{Ƚq竗&]:dP $2|D$Jb,"] "VPq܌�WU1R!5:M۩a:kZިJDBxxiZf|}Q(n˷(J)O\`fIф 9qև6h0[ͱse؈1*3#5i|0z�z0j<QBcl ɶ["뵯Z, Yܹ /-yE c-L c$fjTZH3=*<&�iw腗Wxѝ)1*fFcTI:|};$k "yuc(gY�QRC/in<8oETᡥcq὇v~vAL3͓pvx{Ũ"9 DD1M5�M4ra\&t׾繷!z[�B%2sGDa7}W&?pC =84pޏ&Qb5 ",(Ͻv{>3Nиel0:wk{*)("#1ꈨp}{[U0Ovg.Ľ6~}+&!LU] f$cQ"~TOU}cJaCu]TU[jDd:W^[=:=X?!wxyDxtwcg^U�E^=����IENDB`�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/BitchX.tiff����������������������������������������������������0000644�0001750�0001750�00000017414�13431646201�016332� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*�*�� $h!B &ld->_˴/@m D9 110C^R$#ҳIƀP:TѤDc:Z&J<ɔ ؋I5Nmses.\ix%8.~nyJr8{]%"7QV]u>gy|JCM.qaHmS<_l�5SJ252dh!υ&U$E@[Z R(U_Q&f[lri;} 4/9Xt`D cBXē"\`W"C#ye1q ylg:c[YĎ�p"Y>zEC~M$$ ;ePGPl1! +#:Ņvr(&Ba7"Yg6u󍝬ʯ7 9…pfbg™& b:BƏH%‡ofćIb3\AYPB qt@98 ]1r� :n rL':)Əhzq"XǕpjpX agp6p'e< ͨ\ Ƈ \ȧ^őP'~� d8Jұk|.11$ .XV8A1LgT e$ M4EDFJf)p̙/&)p#HŠ�f[h?ppğn<g obYƽ'ә߬^"Zw!,f ~j F{)0F <^ FԑTܸTVƗ5)"@iÖ@F0ŏ l`faY~ue fpƟn&|sbYƒӈb~-g/fbHfXa\CdnP+>@H5#:;$�CRa3#( 6]# G:Z=/&BI\ ?zF QGEHL[pFƵz`򊶺1HLG exC�. F5!<B!Α <v F CB|2c%eGhF xp:ÌIX#>y `|X0 RaK$Vȁ%lQf@&ȄQ SdA Ȇ>P�]ءzpD-:f68n0F,qT�4a )<xC;<q\X` @!GL!WhG(N�lFB<XayD!ҐgxA`./bH\I8n` [$ lKX#*HI2` $B>L5A !0F`,X v@ ,!(A0 .XCȆ ~ O| n8@4ч(HT7G0o\8E=|9Q =آpG`nƸ0?D`$<@  `{dٰr�Ȇ1$àЁ9R3VE# &@B1* (AU0, "؀?$!%[hAQ .x$bpzXH;fK "}E q0U'r+`B {"[7L,ٰ9B%C0a E JPd� @<l! 9MyԠ[;80<D[a3279⡌qxAhAfk!GlD #G #E,Q$"K@P"V h@P<t(]h2P dC . B ƅD!HCz2$ KhAZء>pC <x ;(A 2a 9x \#( 0(b00¡%C >' 8@̱B`(@ @Rg -B QhP4 ?Cΐ<mCZH6]AJU\T_@PʠCB 2̡np!AB\: @qnA[H!%!x@L S�B9Na%@32 gc="d`{a8BʽJ @ڈ*t -B0 yC!Pb A!$@:ȅ t (#*P=! C008y$B b +(b ^E͔#h{WІMXЇ11x+>[ XxPf8zvH�wȃpwc101UPHPUTP0T@yЀP )P�7yp WayI�i iPg0'nj0�!x)p%8PЂ}=�cgHpe؅\eM8LЇ (�Cxa_Xx~MH�5Sekda:#PepeP \@7TB[-&�kuZYІtH)Є$ I PeIP ows7AW1#ct0p-80PCHL0e-820@x ȂWPY�OPMh|;_0SEЄP?9p�1?m[h]p�;uMVPs�U6P3hE0PChu0PchT!A!uƄXYp�%xH0 0;PHK8HP;-%8tPcea1(�+x'88|0aX H,;K0Hs50FC(a-fp'Ud^kuNP3h%0M(M(eЇrP#(1v#_!11XOPӁj7U=s X/Vr=HcXX#hw�QPp 0qTyh2�WH-0�#nEЁxP}H 0 CpQ{,M^uV7PshNih)2N(*h9ЅJ-PH pPxk`Z`q3GP�iK^^5XOЃs `ЄQ�WP H=/~(w%Hm8<0*0)y8.4\00{H%Ђ`5yЂHK&zbMM0"T"PS(ЂRꇲ**25H9YЀ �.yf` �a ^(]DPa[Є!p�ehm>0A2 ؂$Ї4T0EB<9�P(�}z(#*(g0 (�0*P�-HQI(qNІq90wn0;TP�}u0sfiP8 ipK�q�~[}Ne``1`v4P)9i5peX Ll,0ImshB AhwP'P)�EwY;SHhHsd0{h5:Kh vІHpuEp=seQ�P@P HQŤI!G� P<�_7`V3nf>0ahC%kP=p)�m n؀{!pYE^ =.i?`Ȁ`*H(-:H =MЃ$P-?m9P0 H9І|kuHIP(i.! HP֑m�:`vVP.`*0�Iy?Ђ~0>`e>(� A�a`aUH vj0 oD=D,�R_(UЄHӍEo}pA0Opa5 u( 0ƪfʵ!)9PNKІTPupA@P 5PAf`Q6PV4N Pp1^!0IkV�P:0AH 79I[+8RpBRw(=0�P_vDA .�'-v+h=E^+ 6 h-0|*�}H@($^(=^0)}3EQ9w8~ @iHgP^` =y�:.=Rj8Ё L!HoGQU�#0ʄT< 07fcp pv�7?Jhzaq`H]PPEec+0)K!*5 80[+pI GX+0 XLK:q \�!CuPu8І{#؀*p 9p6hjb5p آ4 ]pAـVKW`؄%IdxkXxXQ�AI-[6x(P %shQ0�>(pXho= H=�P*v0AGP&0QX MY |0+DE(Ih1h[u3VP+1(Za�+X*؇WxS{G'))88 8PS%x`PGM>!8*xwSp�S�iЀUpI%z08*pkh`؀P1AY؁PPcU8Fl"P_P3h10Z7Cp?bX80�؃zk؃Ixg78Z8Gq�8 YxUxpЀ{9x [Yk멀iXksN؅f0�}{gpXB`%E8>~P=:SIDH@(0(�*hP ~JW5(C{Ex}@{Fh�_ t}p8wPpEigjK�YO{DPK%?`}�9(lh91"E܏}F@H0ZhPN:F@~F؇yGRP�a`- ȁ\0}F^"�<ezF"a8Y-VL@k`\n}"`0aXkp8oqȔy8.-L)d0aDL2X�3t@v}PĴo1<q`?+ dȉ87}q#LZIucT E8A)&bxG2.kġN)%<fq̅cKAgE�LYbIܮV1)ZڱפVi&aҶq!/YL@ :1옱HW"UZsȍ![tXP`LtSD ϩEP1Q-U$%vŴ|74Û܀2:E5ˆsYp8CHȘʈ#Fab<<rYux|1CxČ<0Æ*1$ZaQZY YX0A'?|`!sKB`�4ᅒ B, %]8 "]hPj`Da: "pb'!cX@Arpt2Bp&DJPnj"С 2A2PA7pz•m&avm` p0]E p@fYFLtءhpz q\H(�pAt$ _{i)))p@nhYZH \2ƜƲ Ė 1z0AF = {H  BHYh tCP#a@a$mX0VH^Hi!`>)}!O6Xb -C"G*FnrI$@Z1ǝF1khQ4ZI%WZ@@&#1�K e#~�JdAd�9Cv!A4P@#<pUT8`l|grēRp5,hzhLjve I4s 1"1vpa- @@_Ȃ9PP T pH-Y:`D3V):@/AspsPD(@&0!b= C6b@1tA#0! :њ/1 pp&Ql!ᨁ E܇F(d0* * 8(@ apAp 3T ^HA|A!\H 5B *Ah*xq0C 'Ay!2E xCiA01cG4ܐ@ "h2  <H# -P%bdhhЄ)!%8Ct+HH5,CvaMt D+u�=1C$ 9Ah/D-PX006x  bb@h�:#2`B?t!9G6x HFC&04!A 0N0 B k0�*@�`/h@5$nЉx{lS| }@p4 3@� ! OxjKH#1aP h[EH0%cu<�%w!D(@A1pEA1PܕE #8C t3!h(@xF`W Opbx4 b eC@?8>ZC,CQ�G`z@)4�h0.d! 9A簏.bh Ѕ5CAT0t`(BЂ8a 9!zAt 1{L . A:t [_a:Ax lx9%p6`JD0! WC�-B4Hv`dA2p|!l<l % PG4`bBAPu!�7A6ЁPRa XAԱXh'1kl gE-3<!7pHp*ps@Wxk `4whA�уT J @8=1r#D iB 6]@ zP"uGa܉6 Bs3` Af DP h,eA@[l7A<v3xA p*w1! wG^p~b 'j`oT9Ў`Qtщ@qavB'4 �H@2 ! H@78(C9?~_�������0�������0����������������������� ������� �������������������������������������8�������!����������������/home/fatal/BitchX.tif��created with The GIMP�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/ps.tiff��������������������������������������������������������0000644�0001750�0001750�00000013434�13431646201�015571� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*�2�� $h!B &lXPiѤ "]ขe$S@I[j)xISwp–-oV2cƁ v)ɚ#%ٗcǐ!l0`[Nm0PsIn̙e_1UVұ*ZpŵA_=TңɈ-3^$d  if%wp%KL-ǪszХift0M-Z 3I{XgFL0tSXaf{8a)MgY ,Lh>ēXd˜&=TIbqÍ0p"@^#4fv-GGutC5"@0t(PAhEcFU cu,]sgIˈZ ollIE2rL#Sd/%L^--X%PAw6C/bt# uNlݷG;q,J-ܕķD plY\?9o\\ɓ||%KF \q% kq'+q0sD#H /s3QA7ڈP K;�gݔ]90ģx%-ŒPmQ _UKIķ\ '[z|(|)P E1FE GQDEaB @ >^ o\xpJxj:x1AQe+ XDaג mV-B%z  z[ĦP< $o�V &4d$4Pq v _;,G;?{-o?|=[|b-&`B&l$j'\aJ |?" D,&zU""|#B(X2 !w`W40 =@9vdP _B I$QxÐF}NF CI^|CϑBbBAm?Yu2[ImFGDE =@LCafmLF {x0; v𖱕J |^8 f1B�×@|tk A#(ybb{(bM,  &#�ԼeC%}@YƾBO@ĠA E\kR�ƆuIaZ@``b E$"Qb5%F1PdD`ziLFjۋ\"W~ ;<(�4;DIQ +-Ax ^&$;@7?) 8!B-A RԠL(%JR Dhak5Fax 0$ՂP@03 @-D ҖtF$ B RF -Fx Jd E*u[~(DшFEQa5TF9PO�6-rI ,, `;><XW@+x։ a.&h&3 sj� mXҀ0s#Lg+U*XTU mL y*b(5�uÈ6 W@ձ\..%aIU 貃]&1!e.pWl.ÀB) `J8g-]ֵѨ:j=amGTa(V?Hvuyv0NC-Ac1tܢhj&𱙪0Yo%Zhrb3JNj\!mXۦ0T5LC`J0(NXRAep6<d&`c@LO18lOy[rpe!@UQ `; Z@Mx`t�6\#A j:j-jIC 1U#@x p [f% 1As.ei!g%RdA]Me ޔ1 A g Mf-aM8NE84 BcѠ4dA!# %hza_i!%97spW;rJI8� iWqƀ`0 `2X[ SU) qhjFĨ! r&#i#%IyM Q+Be ޘ `!6PApD-I<Y Bguӓef?th Ǜ+ ;X9UE":4^uhN *ҠH:td1@0-_uFAקIwYBjdlUa-bV?d wbYBps0|SvV2;t R-]ܧ}bj54dAZuh&#E?TDxA^w%wE9'<0@KY+cpODjwIV'7FqD{�ox!Dv7&PSUHdhhh3hc5ht`d4^}| sLt�#=rPc`3YP;PPP s~S%qP WL2 (a?@^p!Lbd?d�ʅTHNOvHa*db,cĖ&ri*$\VTLdd$DR.,[&Pr@�^Wp�7tx$E4vDc,w�OAADJ\HPuhAlhdEO(% (4]53 b0d"604H $b!bDJ&Z04H 5o EErXH4PCLx-dp p$xĆd F8؅8ŴRd2d2drD AR($L$"@b1d:$,t{2ȅ\�?H$dCbHB<q%A4H,ȂrȁP-L{z4Vt:ȶgH.SNDDF@FDFb0pB4Y#�5Gb(!6O"b&< b(IX1wQX:FEXuȃ<E�-~ȊhȅuX]XU^X%Xu(5((( .(|`.6$FXd�&DD:Ćj3 Z\$|ă +&XeX}y؄)%hV \‡lH؃(!ByUtoJllICLȄt<M&nUP6$&L{:�WzVYp+%<pRĆ%6Gv)((|Ftb^(/(BvJp:>؅]8.ZeHТHR(iXN^qJ=hh-hsH^+b^+>U.$VfL&�7zzvvDBjPh̟hh>UX*|&$&@F(YlC-pLGh)LXy-_ĆtԃV(2pJlk("hB(z ~OHO!jvjb5F-n~E4h~p~Nj„mAyb�0G9C-p(dXA~ﲇBfqihv-7Uu(lȆJJN*!SUkHhajH覇pv0jGVK,qՂ -؂li^Ch4HlNb`0|ȇzlٚ„l9j -V+{ZVdhm0DNă6BbĴ6EpFV?)@hX6(f`jQ4H9+{hhv77Fh.*LO~.n9zhn!z6@lFbhc�օ([-5VVժֆ8诒؄M8t l�nHt ȀXj8iAM:zᬆa(Baa9PWXQ++Ć>$bO+Al`l �_z:l�?Ԃ +jAX(/R<Ց^hGaX؅.A,^m؁&h DW9dph*Q{1+Q+!UxADA$^@A+ Uv+~{OAOIlYjIh(^NG\X8B$b8#5XES(r.(Xu Ղ4rfhyh6X=YPuEl"bP-f鳗酤مDnɂ>92A2(mYh2XG%b3U)؁8 >b#؆m8)/c+鄕Ed؃)O qSuG4^Y؃ hFXiVWu(2(Q-ڊ+8/LX dVEJ-^h=b5C4d蛙YS^n0 ]pȍȐLH 1� bVFJ .,V[HNGKn^$بt.(MXhTXa$Anb/hHe+eF9=aNVH4�G .hzbRn<^J~T7J+ႶBmnݚ=tX.^XhX5[Cld!Z6U$O h>9(z鑃c ?V.;~XFXPXpG.rXZxX]vS<�聽SmWt5U-[[Ab%b1<Hs?OHt„셝 -bDbVKn#WXrX&PrX(4Xiؖ?S؃mʽ历E+yՂIV[~"_?쁀l|FBUA9EImXt:H̬\,V`((,XvX8xdv5ؘ\غ'腽&ݢOUt^Xyⅵ؃eG4GA0W-^rՂhh.hA8t-P'zV岇 ~BEɅSͫח*Zؙ0X=XHװbg5!ș Re䷂TtIjhVhXX؈(VXpXY$ޖmyႂh2+Z+|6= ȁ5OH9S0o%H CE !FnbS$RnD òd#ǔ<y(0Hy%J,(SfQrK*TXRڊZԩ^5klSVڴҮݖ.]vWÞ>}vkРC1bߘ1ƍ D6$J4'AqL3{Sጅ6`8tC)I3lٲ%MRB2(˦²JUja4-^FlaKNۺuի>{ 5̶avoȤI?xϞx������0�������0����������������������� ������� � ������������������������������������8�������*����������������/usr/home/fatal/pascal//ps.tiff�Created with The GIMP�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/clip.tiff������������������������������������������������������0000644�0001750�0001750�00000011170�13431646201�016071� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*�x��� $h!B &l"F%j1bƊ'n &J$i)RJ&mD�g �̖#SXp` E�TXI%A� 2U*V,P'AV PB�!nĈ vH `Dm& 8OSI[&M,J# e�ÄEfH)VrQH}M7޴ Zת;mw`̎'fwj=45#6`„AuCĎ57ӤĘêMWi$̱X=q! a&jRH!1hHq:p| xL1ĘeQBP%rR&JGI$)bLAL^LD$BQ9%4RTM Ղ`*Ƞ0Ă($+` n".餂1Bj@ :ē Tì8,J.UR4ļD- $D5Pb% XhPG SFq馌v@Qʠ &sLGpmP J!%[0/p(0O㴊Zh$ N+1$yb&DGut#\x~f)6r-beXcXɣvPAǒ*K )tQE%( |!PDqJhy'B5"Z顜nnp{CiNr:2LTPB:cGc`0MA0@ SyTPP_@t0� q!=V(\=G-5q kzdz@%8#;Ur#8 Tp`:z'x<4REHE�X`!0"R)=3Ρ'2 &98#$x"A f[!pU=*UCg=�/g q X!Uh͔Єx"N� >?R=^b: C ]2!QH6p wOqH* ̣CFo+&/\!Ə {)lFP@|hU064 'X=Q\$Wa oc?! TB ER(V\`^UĀ*"H? ]lUb w\n3 P,`G<Q)˸*<AR@"x:VBi f1S*FQT$"C&Y,HߡE"XЋ\"` {c25@YEPTĸ{]qet>,:`@`f J8Ex(g4%RXņt(%i6\0dH@ bX! iiH@`!$mp#p�"<1"'Pi� Y4@!%0bDz+K aNICX@ M{]1H qH0?d Uc? ,$"fmh]P<�B[a ku�H$X> @K \L#Q%<�79Hl@�p?q=hGo_ /8^9Vq@ i#<~"=胒Ri^"HqR$ v &�GmD*T!!P.HAx B@J1$h4ʟ-"p@Q|ZA .Aa륄Ay�< IAB`a?C0 I|# =a?(BxF":# 4g!it}DPцmX-C0m]_.�t6"m& QJj+-pt�T$k2HChB.$-P:aW"GІ 4-`�b=큂8 ޳!@ `qp'\]Cg'X9> ^@E␑X"رm!&�$:�KyJK .X\CACHPdT C`y^Κ% 0 Tt>_o7CP?&1> p; *Jdf>ԚCVâ (3 Q|`mX?l` KAfGJ '�{m�KA/q\2pQ`44C0FWS؅G9mP%�yk8gm{1&%(t`8H,TV .s0'6Ws��F@03p .؆h\ _B �f,@ TH04TXM2xR2DQ5C|9D�ȂDȆkx[ 9/(P-X-/:UuyuwR R\ X`9GYÎd@HD(XQFP@EPEhR�Oil=4{!R 5Vtu2 F<F!3w+C}-U0s �E@C,uGWxw'l �DVA>FPM�;h)x^ 4'OV:J sG-Ex+؇eX@P+Pc/^0S΂`wJ24D#Q�94pe Whȃ78e+,$Yw(,hH<X+ɀ18ޥ0)3@'@>0ȇs(THa(Lȇ\LI1 [@g1@6L3Ut PnNX؂)+ۅ0pI1,026Ѥ`0ked!uTAqEhP)؂In 2DDs,#%(te7[1{#d@@q4|7BK؅%( PL$0|m"p17pi (@1,p%-(�I=AdBD0~ZHB]P914xw@\2V/*RC'`!؆Jhzؓ!wn qbit=gpy԰uԔ}'�q<d@tj?D3lPqdȁpS0 NtECx<EOD�X5p;p}؁U1I5<KzSJ"ɕT( A"`M-.f�,V�DbGlT �JȆ�Uy~"f{AC0cpFy�W+@.`6HJ(Vk8tHhOeP� gI_p/0Us4rlmj/?PXa!F?B~rJD (vxhـj (> 6lLgG؂- „S�OAh6P:<h$#Ces+L$6gr '1g00z !'� �`g(|?O6%UZ(ۂDx*JBC4drmwz5wLl EVLrJCP19ȆIh:0-PsAR֑U=%18W;�=}QixaDq@V� AO A�36 �D2]x f(rqT0\քLx[8J.�x,�(U 0@EC/kd,@rr g( ~@IXs&%@QJcH�g�cQ7+$ w01oPEP3w 4lD4CJWVEU,t2rʾ[@@� � x8cdQ~_j*ʮ\8ϛ(j )P3rU쒲CK^.YDf (=%H+T9D@+B L`�k 0h 6jܤIM(DP^r$oژeY 璘KV."0kH3<é2t $@C)R:jqF1Y?,2s#I =$B_lskڼoZC`0F /!EAF[\d1JvRDY-8@l&4h<mlP}0mBHOЀ_ �=p_Y 57U88(<RHH2)  6$@'�RC!d>L p _ kN:������0�������0�������2���������������� ������� ����:������R������h��������������������*�������p���������R���������������/home/dan/newclip1.tiff�Created with The GIMP������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/write.xpm������������������������������������������������������0000644�0001750�0001750�00000022507�13431646201�016156� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "48 48 213 2", " c #410341034103", ". c #EFBEF3CEEFBE", "X c #B6DAB2CAB6DA", "o c #B6DAB6DAB6DA", "O c #59659248FFFF", "+ c #9E799A699E79", "@ c #BEFBBAEABEFB", "# c #BEFBBEFBBEFB", "$ c #C71BC30BC71B", "% c #C71BC71BC71B", "& c #CF3CCB2BCF3C", "* c #CF3CCF3CCF3C", "= c #38E39A69D75C", "- c #38E39658CF3C", "; c #38E39248CF3C", ": c #38E39248C71B", "> c #38E38E38C71B", ", c #30C28E38C71B", "< c #30C28A28BEFB", "1 c #30C28617B6DA", "2 c #9E799E799E79", "3 c #6185AEBADF7D", "4 c #BEFBDB6CEFBE", "5 c #A699CF3CE79D", "6 c #49249E79CF3C", "7 c #49249A69CF3C", "8 c #49249658C71B", "9 c #8E38BEFBDF7D", "0 c #BEFBD75CE79D", "q c #61859E79C71B", "w c #A699C71BDF7D", "e c #30C28207B6DA", "r c #D75CD34CD75C", "t c #CF3CE38DEFBE", "y c #6185A289CF3C", "u c #A699CB2BDF7D", "i c #8E38BAEAD75C", "p c #30C27DF7AEBA", "a c #79E7B2CAD75C", "s c #FFFFFFFFFFFF", "d c #71C6AEBACF3C", "f c #51448A28F7DE", "g c #49248E38B6DA", "h c #186114511861", "j c #30C234D330C2", "k c #410345144103", "l c #30C279E7A699", "z c #861786178617", "x c #A699A289A699", "c c #A699A699A699", "v c #AEBAAAAAAEBA", "b c #AEBAAEBAAEBA", "n c #59659A69BEFB", "m c #28A275D6A699", "M c #28A271C69E79", "N c #D75CDB6CD75C", "B c #69A669A669A6", "V c #20811C712081", "C c #28A228A228A2", "Z c #186118611861", "A c #104010401040", "S c #BEFB86175144", "D c #B6DA86175144", "F c #B6DA82075144", "G c #B6DA7DF74924", "H c #BEFB8A285965", "J c #C71B92486185", "K c #C71B96586185", "L c #BEFB8E385965", "P c #DF7DE38DDF7D", "I c #8617596530C2", "U c #618541032081", "Y c #69A649242081", "T c #9658659538E3", "R c #C71B965869A6", "E c #71C649242081", "W c #514434D31040", "Q c #410328A21040", "! c #492430C21040", "~ c #71C64D3428A2", "^ c #CF3CA28971C6", "/ c #E79DE79DE79D", "( c #CF3C9A6969A6", ") c #D75CA28971C6", "_ c #9E7971C64924", "` c #CF3C9E7971C6", "' c #E79DBEFB9E79", "] c #965869A64103", "[ c #D75CA69979E7", "{ c #E79DC30BA699", "} c #E79DC71BAEBA", "| c #A69971C64103", " . c #596538E31861", ".. c #D75CAAAA79E7", "X. c #DF7DB2CA8E38", "o. c #A6997DF75144", "O. c #86175D7538E3", "+. c #8617555528A2", "@. c #79E7514428A2", "#. c #AEBA7DF75144", "$. c #69A645142081", "%. c #965869A638E3", "&. c #B6DA86175965", "*. c #8617596528A2", "=. c #E79DEBADE79D", "-. c #618541031861", ";. c #8617618538E3", ":. c #79E7555528A2", ">. c #000000000000", ",. c #61853CF31861", "<. c #A69979E75144", "1. c #AEBA9E7971C6", "2. c #30C22CB21861", "3. c #10400C300000", "4. c #000004100000", "5. c #CF3CCB2BC71B", "6. c #9E7982075144", "7. c #8E3875D630C2", "8. c #6185596538E3", "9. c #208120811040", "0. c #30C23CF328A2", "q. c #28A228A230C2", "w. c #30C21C711861", "e. c #FFFFF7DEE79D", "r. c #F7DEF7DEEFBE", "t. c #EFBEE79DD75C", "y. c #A699AAAAAEBA", "u. c #E79DE38DAEBA", "i. c #71C669A65144", "p. c #EFBEEFBEDF7D", "a. c #EFBEDB6CBEFB", "s. c #EFBEF7DECF3C", "d. c #EFBEEFBEE79D", "f. c #FFFFEFBEDF7D", "g. c #F7DEFFFFEFBE", "h. c #F7DEEFBEF7DE", "j. c #F7DEF7DEDF7D", "k. c #FFFFFBEEBEFB", "l. c #FFFFF7DEBEFB", "z. c #E79DE38D9658", "x. c #E79DDF7D8617", "c. c #CF3CC71B69A6", "v. c #E79DDF7D69A6", "b. c #30C230C230C2", "n. c #DF7DD34C5965", "m. c #EFBEE38D79E7", "M. c #F7DEEFBE9658", "N. c #FFFFF3CE9658", "B. c #F7DEEBADA699", "V. c #FFFFFBEE9658", "C. c #DF7DE79DD75C", "Z. c #F7DEF7DEF7DE", "A. c #FFFFEFBED75C", "S. c #EFBEEFBECF3C", "D. c #4103410338E3", "F. c #59658E38FFFF", "G. c #C71BB2CA30C2", "H. c #CF3CBEFB4924", "J. c #E79DD75CD75C", "K. c #FFFFFFFFD75C", "L. c #596549241040", "P. c #861782078617", "I. c #C71BBEFB9E79", "U. c #EFBED34CA699", "Y. c #FFFFFBEE9E79", "T. c #E79DD34C8E38", "R. c #FFFFF7DE9E79", "E. c #E79DC30B6185", "W. c #104014511040", "Q. c #186118611040", "!. c #20810C300820", "~. c #9658555530C2", "^. c #A699820738E3", "/. c #596530C21040", "(. c #D75CC30B38E3", "). c #9E7986171040", "_. c #082004100000", "`. c #492479E7D75C", "'. c #DF7DCF3C4924", "]. c #E79DCF3C4103", "[. c #618565956185", "{. c #DF7DCF3C30C2", "}. c #DF7DD34C4103", "|. c #BEFB9A6930C2", " X c #EFBED34C4924", ".X c #104008201040", "XX c #51448617EFBE", "oX c #38E33CF338E3", "OX c #8E388A288E38", "+X c #71C675D671C6", "@X c #618561856185", "#X c #DF7DD34C69A6", "$X c #51448E38F7DE", "%X c #965896589658", "&X c #C71BA69969A6", "*X c #965892489658", "=X c #79E779E779E7", "-X c #965886176185", ";X c #A6999E798E38", ":X c #C71BBEFBA699", ">X c #79E77DF779E7", ",X c #082004100820", "<X c #082008200820", "1X c #514455555144", "2X c #596559655965", "3X c #492449244924", "4X c #59655D755965", "5X c #69A66DB669A6", "6X c #8E388E388E38", "7X c #000000001040", "8X c #DF7DDF7DDF7D", "9X c #28A22CB228A2", "0X c #F7DEFBEEF7DE", " . ", " X o o o o O + @ @ @ # # # # # $ $ $ $ $ % % % % % & & & & & * * * = = - - - ; : > , < < 1 . ", " o o o o o O 2 @ @ # # # # # $ $ $ $ $ % % % % % & & & & & * * * & 3 4 5 6 7 5 5 8 , 9 0 q . ", " o o o o @ O 2 @ # # # # # $ $ $ $ $ % % % % % & & & & & * * * * % - 4 4 ; : 4 4 < < w 8 e . ", " o o o @ @ O 2 # # # # # $ $ $ $ $ % % % % % & & & & & * * * * r & - 4 4 > , t 4 < 1 0 e e . ", " o o @ @ @ O 2 # # # # $ $ $ $ $ % % % % % & & & & & * * * r * r & ; 4 4 > y u t 1 i q e p . ", " o @ @ @ @ O 2 # # # $ $ $ $ $ % % % % % & & & & & * * * * r r r & : a s < 0 d s 1 i e p p . ", " O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O f > a s y d d s i g p p p . ", " O h j k k k k k k k k k k k k k , 8 t 0 1 e s 0 p p p l . ", " 2 2 2 2 2 O j z x x x x x c c c c c v v v v v v b b b b b X X X X v < < 0 q e e s n p p l m . ", " @ @ # # # O x $ $ $ $ % % % % % & & & & & * * * * * r r r r r r * < 1 d e e p w p p m m m . ", " @ # # # # O x $ $ $ % % % % % & & & & & * * * * * r r r r r r r * 1 1 e e p p p p l m m M . ", " # # # # # O x $ $ % % % % % & & & & & * * * * r r r r r r r N N r b B k . ", " # # # # $ O x $ % % V % V V & V V V V * V * V V V V r V C r C r V Z Z h h h h x A x h x c . ", " # # # $ $ O x % % % % % & & & & & * * * r * r r r r r r r r r N N r r r r r r r N r N N N . ", " # # $ $ $ O c % % % V V V & V V V * V V * V V V V r r S D F D D G H J K H L K H J K P P P . ", " # $ $ $ $ O c % % % & & & & & * * * * r r r r r r r N D H L H L H I U Y T L J H L K P P P . ", " $ $ $ $ $ O c % % & & V V V V V V r V V V r V r V C r J R K K R U E W Q ! ~ K J K ^ P P / . ", " $ $ $ $ % O c % & & & & & * * * * * r r r r r r r r N J ( ( ) _ ` ' ` ~ Q W ] ^ ( ` P / / . ", " $ $ $ % % O c & & & V V * V * V V V V V r V V V C V N ^ ^ ) [ I { } ' | .Q .H K ` / / / . ", " $ $ % % % O v & & & & * * * * r r r r r r r r N r r N H ..X.o.O.X.' ` H ~ ! Q +.| G / / / . ", " $ % % % % O v & & & V * V V V r V V r V r V V C r C N @.#.` O.$.%.&.| I @.W Q U +.*./ / =.. ", " % % % % % O k v & & * * * * r r r r r * * * * r r N N N U U $.-.;.X.` X...:. .W E *.+./ =.=.. ", " % % % % & O k v & * * * V V r V V V >.>.>.>.>.V C V N N ,. .! ! $.^ <.^ F U . .1.2.3.4.4.4.. ", " % % % & & O k v * * * * r r * r * >.5.1.6.7.6.>.>.>.>.>.>.>.>.>.>.o.| | %. . . .1.8.9.0.q.w.. ", " % % & & & O k b * * * V V * >.>.>.e.e.e.r.t.& $ y.y.y.7.7.7.7.8.7.>.>.>.>.>.>.6.u.i.8.8.i.8.. ", " % & & & & O k b * * * & & >.p.a.s.d.f.p.g.f.e.h./ p.j.k.l.u.z.x.x.c.v.c.c.c.1.b.k.8.8.i.i.i.. ", " & & & & & O k v & >.>.>.>.n.m.x.M.N.B.V.M.C.p.j.Z.p.. t.t.t.p.C.a.j.C.A.S.j.e.b.B.8.2.0.D.D.. ", " & & & & * F. v >.5.1.y.1.G.G.H.1.c.c.c.c.$ 5.5.t.J.C.t.d.p.t.s.a.t.A.C.A.t.K.b.z.2.0.L.0.2.. ", " & & & * & >.>.>.8.8.8.8.i.i.P.P.6.P.6.P.6.P.>.1.1.1.I.I.U.I.a.U.B.Y.T.R.M.R.l.b.E.4.W.Q.!.9.. ", " & & * * >.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.>.4.>.>.8.0.L.0.L.b.~.L.7.^.7.b.b.7.b./.4.4.4.4.4.. ", " & * * & % >.$ P.P.i.i.8.i.7.7.6.1.6.1.6.6.1.>.6.I.1.1.I.$ I.$ c.c.H.(.H.c.n.n.b.).3.4.Q._.3.. ", " * * * * $ `.>.>.p.I.y.1.I.1.1.1.1.c.1.c.c.I.I.I.I.y.I.I.I.$ I.c.I.(.H.c.n.'.v.b.].4.Q.w.!.9.. ", " * * * * % `.b.[.>.>.>.5.$ G.c.{.(.n.n.}.'.c.H.I.I.I.I.H.c.H.H.H.|.n.'.(.n.'. Xb.G..XQ.Q.9.3.. ", " * * r * * XXoXz OX+X@X>.>.x.c.(.}.n.n.}.'.#XH.I.I.I.I.c.c.n.c.H.H.G.G.G.|.G.G.b.(.A Q.!.9.Q.. ", " r * r r r $X 2 X c %XA A >.>.C.I.I.c.T.c.H.&X6.6.P.6.D.D.D.0.D.0.D.8.8.D.D.D.b.E.3.Q.w.!.Q.. ", " * r r r r F.k b & % # X c *X=X>.>.T.6.L.L.L.L.-X;X;X;X:X>.>.>.>.>.>.>.>.>.>.>.G.c.2.Q.9.9.Q.. ", " r r r r r O k X r r r V % Z h h >X>.>.>.>.>.>.>.>.>.>.>.C ,X,X,Xk <X<X1X<X2X<X<X8.A _._._..X. ", " r r r r r O 3XX N N N r r r & # v %X>XB 4X1X1X1X1X1X1X1X1X2X4X5X>X6X%X%X%X%X%XOX$ >.4.4.4.7X. ", " r r r r r O 3Xo N N N 8XV V r V V Z Z x h A *XA A A *X*Xh A 2 h h Z Z & Z Z & h h A 2XoX9XC . ", " r r r N N O 3Xo N N N 8X8X8X8X8XN r r & $ $ $ $ $ $ % % % & & r N 8XP P / / / 8X* b OX5X@X4X. ", " r r r N r O 3Xo N 8XN V V V V V V P V V V N V 8XV V Z V V 8XV V V =.V V V =.V =.V Z h v x 2 . ", " r N N r N O 3Xo N N 8X8X8X8X8XP P P P P P / / / / / =.=.=.=.=.=.=.. =.. . . . . =.=.8Xr r r . ", " r N r N N O 3Xo N 8X8XV V V P V V V V V / / V V V V =.V =.C =.V V V C V . . V V V V . . =.. . ", " r N N N N O 3Xo 8X8X8X8X8XP P P P P / / / / =.=.=.=.=.=.=.=.=.. =.. =.. . . . . 0X. . 0X0X0X. ", " N r N N N O 3X@ 8X8X8X8XP P P P P / / / =./ =.=.=.=.=.=.=.. =.. . . . . . . . 0X. 0X0X0X0X0X. ", " r 8XN N N O 3X@ 8X8X8XP P P P P / / / / =.=.=.=.=.=.=.. . =.. . . . . . . 0X0X0X0X0X0X0X0Xs . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . "}; �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/Drawer.xpm�����������������������������������������������������0000644�0001750�0001750�00000017452�13431646201�016253� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char *Drawer[] = { /* columns rows colors chars-per-pixel */ "48 48 192 2 ", " c #060300", ". c #100800", "X c #110900", "o c #110A00", "O c #120A00", "+ c #130B00", "@ c #140C00", "# c #150D00", "$ c #1E1600", "% c #1E1700", "& c #1F1800", "* c #211900", "= c #231A00", "- c #221802", "; c #251B01", ": c #2B1D04", "> c #2E2107", ", c #372303", "< c #322204", "1 c #3A2700", "2 c #3C2901", "3 c #3E2B02", "4 c #412D03", "5 c #462C00", "6 c #412C06", "7 c #442F04", "8 c #492E00", "9 c #432F0A", "0 c #473105", "q c #473106", "w c #493203", "e c #4C3001", "r c #4F3202", "t c #493205", "y c #4A3306", "u c #4C3404", "i c #4F3605", "p c #4D3507", "a c #4A340B", "s c #523403", "d c #543504", "f c #553604", "g c #563A03", "h c #523806", "j c #553A07", "k c #583805", "l c #5B3A06", "z c #593C04", "x c #5E3C07", "c c #5F3E06", "v c #5F3F07", "b c #503708", "n c #533909", "m c #563B09", "M c #563B0A", "N c #573C08", "B c #593C08", "V c #623E08", "C c #5A400D", "Z c #5A4112", "A c #604106", "S c #614107", "D c #634107", "F c #644407", "G c #634208", "H c #664109", "J c #634409", "K c #654408", "L c #674408", "P c #674509", "I c #664608", "U c #674609", "Y c #674709", "T c #63460E", "R c #684708", "E c #694709", "W c #6B4709", "Q c #68460A", "! c #6E470B", "~ c #694808", "^ c #6B4908", "/ c #6B480A", "( c #6C4A09", ") c #6D4A0A", "_ c #6D4B0A", "` c #6F4A0A", "' c #6F4B0B", "] c #6F4C09", "[ c #6E4C0A", "{ c #6F4C0C", "} c #704D0A", "| c #714D0B", " . c #734D0B", ".. c #714E0A", "X. c #734F0A", "o. c #724F0B", "O. c #724A0C", "+. c #764D0D", "@. c #74500B", "#. c #75510B", "$. c #77520B", "%. c #75500C", "&. c #77500C", "*. c #78530C", "=. c #7B530D", "-. c #79540D", ";. c #7B550C", ":. c #7B550D", ">. c #7C560D", ",. c #7F560E", "<. c #624713", "1. c #634713", "2. c #6B4C10", "3. c #6E4E10", "4. c #6C4E15", "5. c #654B19", "6. c #694E1A", "7. c #6B4F1A", "8. c #704F10", "9. c #6E5016", "0. c #725111", "q. c #705116", "w. c #745417", "e. c #765617", "r. c #785512", "t. c #7F5A13", "y. c #72541C", "u. c #75561D", "i. c #785718", "p. c #7B5918", "a. c #7C5A19", "s. c #795A1E", "d. c #725826", "f. c #7C6029", "g. c #80580D", "h. c #81590E", "j. c #82590E", "k. c #84590F", "l. c #855B0E", "z. c #865C0F", "x. c #875C0F", "c. c #8A5E0F", "v. c #8B5F0F", "b. c #8C5F0F", "n. c #8C6010", "m. c #8E6110", "M. c #8F6210", "N. c #8B6216", "B. c #8E6918", "V. c #906210", "C. c #916310", "Z. c #906311", "A. c #936511", "S. c #946510", "D. c #966711", "F. c #996911", "G. c #9A6B11", "H. c #986912", "J. c #9A6A12", "K. c #9E6D12", "L. c #A06F12", "P. c #A37013", "I. c #A47113", "U. c #A67313", "Y. c #AA7514", "T. c #AC7714", "R. c #AD7714", "E. c #B57C15", "W. c #836124", "Q. c #8D6927", "!. c #806634", "~. c #8A703D", "^. c #A57B2C", "/. c #BC8116", "(. c #B28535", "). c #CA9636", "_. c #CA9637", "`. c #D09D3E", "'. c #D5A03F", "]. c #DEAD3F", "[. c #DDB743", "{. c #DEBE46", "}. c #EDB246", "|. c #EEB347", " X c #FBBD4B", ".X c #FFC24D", "XX c #FFCE51", "oX c #FFD354", "OX c #FFD856", "+X c #FFDE58", "@X c #FFE059", "#X c None", /* pixels */ "#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#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#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#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#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#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#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#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#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#X#X=.=.&.&. . .' W W L L D L L W W W W W W W W W W W ' W W L W #X#X#X#X", "#X#X#X#X#X#X#X#X#X#X#X#X,.=.=.&.&.&. .' W W L L L D V W W ' W W W W W ! W x L ' W L L M #X#X#X#X", "#X#X#X#X#X#X#X#X#X#X,.,.,.=.&.&.&.&. .' W W W W W L L W ' ' W W W W W ~ L D L ' ' W b M #X#X#X#X", "#X#X#X#X#X#X#X#Xk.,.,.,.,.=.&.&.&.&. .&.W ' ~ ' W W L ' ` ` ` W W ` ` ` ` W L ' ] M b M #X#X#X#X", "#X#X#X#X#X#Xk.k.k.g.,.,.,.,.&.&.&.&. .&.$. .&. .' W .' ` ` .&.` ' ` . . . . .b b M b #X#X#X#X", "#X#X#X#X#X#X/.E.R.R.T.T.T.T.Y.P.I.I.I.U.I.I.U.U.I.I.P.L.K.K.K.G.P.L.L.P.G.S.L M M b b p #X#X#X#X", "#X#X#X#X#X#XI.Y.P.P.P.P.I.K.K.J.K.L.K.K.K.L.K.K.K.H.G.G.F.G.S.S.H.H.H.D.n.;., h M b p p #X#X#X#X", "#X#X#X#X#X#XD.H.A.M.M.M.M.v.v.v.c.c.c.c.v.c.c.c.l.l.l.l.l.,.g.g.l.l.l.>.=.B ; b b b p p #X#X#X#X", "#X#X#X#X#X#XD.H.M.z.z.h.h.h.h.h.h.h.h.h.h.h.h.h.>.>.>.*.;.;.$.,.>.>.*.@.] N ; M b y y y #X#X#X#X", "#X#X#X#X#X#XD.H.v.z.h.h.h.h.h.h.h.h.h.h.h.h.h.>.>.>.*.*.;.$.$.;.&.@.@.@.{ j ; b p y y y #X#X#X#X", "#X#X#X#X#X#XD.H.v.h.h.h.h.h.h.h.h.h.h.h.h.h.>.>.>.>.*.&.$.$.;.;.@.@.@.@.] h - p p y y y #X#X#X#X", "#X#X#X#X#X#XD.H.z.h.h.h.h.h.h.h.h.h.h.h.,.>.>.>.>.*.*.*.>.;.*.o.o.$.o.o.' p - y y y y y #X#X#X#X", "#X#X#X#X#X#XD.Z.z.h.h.h.h.h.h.h.g g A L R R ~ R F F R q.q.o.$.o.o.$.$.o.D i - p y y y y #X#X#X#X", "#X#X#X#X#X#XC.D.v.>.h.h.h.h.h.h.z z A ~ ( ..] ' ..o.*.a.i.o.o.$.$.o.o.' D i & p y y y y #X#X#X#X", "#X#X#X#X#X#XZ.Z.v.h.h.h.h.h.h.h.F L ] $.*.=.*.$.;.;.o.a.i.$.o.o.o. .~ Y F y & y y y y 7 #X#X#X#X", "#X#X#X#X#X#XZ.D.z.h.h.h.h.h.h.h.R R ] o.B.{.OX].N.o.*.i.a.$.o.o.] ] J ~ J i & y y y 7 7 #X#X#X#X", "#X#X#X#X#X#XZ.D.z.h.h.h.h.h.h.h.F R ] ;.[.@X+XXX).J Y 0.i.$.o. . .Y ] ~ L i & y y y 7 7 #X#X#X#X", "#X#X#X#X#X#XZ.A.z.h.h.h.h.h.h.>.F R ~ o..XXXoX X`.w N 2.i.o.o.] ~ _ ~ ] L i & w 7 y 7 7 #X#X#X#X", "#X#X#X#X#X#XZ.Z.v.h.h.h.h.h.>.>.F F ] o.).|.|.'.Q.< w T s.o.o.] ~ ~ ] ~ ~ y & 7 7 3 3 7 #X#X#X#X", "#X#X#X#X#X#XZ.D.v.>.h.h.h.>.>.>.F F ' $.t.^.(.W.> : 9 <.u.] ] Y ( ( ( ( A w & 7 7 3 2 7 #X#X#X#X", "#X#X#X#X#X#XC.A.z.h.h.>.>.>.>.>.A R ] o.@.J w < : < q 5.u.Y ] ~ ( R R R D y & 7 3 3 3 3 #X#X#X#X", "#X#X#X#X#X#XC.A.z.h.>.>.>.>.>.*.A ~ 8.r.r.3.C a 9 a Z 7.f.' ~ ] R F R F F y ; 7 7 3 3 7 #X#X#X#X", "#X#X#X#X#X#XC.A.z.>.>.>.>.>.=.*.4.r.y.p.p.e.9.6.5.6.d.f.~.~ ' Y F R F R J d - 7 3 2 1 3 #X#X#X#X", "#X#X#X#X#X#XZ.D.h.>.>.>.>.*.*.>.*.*.*.@.@.o.o.] ] Y ~ ] ~ ] ~ ~ R R R ( W h & 7 3 3 2 7 #X#X#X#X", "#X#X#X#X#X#Xb.n.h.>.>.=.*.*.*.*.*.*.@.@.@.@.o.o.~ ~ .~ ] ~ ~ Y R R ( ( L p & 7 3 3 3 3 #X#X#X#X", "#X#X#X#X#X#Xb.n.h.>.*.*.*.*.*.*.*.@.@.@.@.@.] Y ( ( ] ] ~ ~ Y ~ Y ( ( ( L p - w 7 3 3 7 #X#X#X#X", "#X#X#X#X#X#Xn.n.h.>.*.*.>.*.*.*.*.@.@.@.@.] ] ( ( ( ] ~ ] Y ~ L o.] ( ( L h - 7 7 3 7 7 #X#X#X#X", "#X#X#X#X#X#Xb.v.=. . .&.&. .] .' ' ~ W J J H F L J L L J V D Y L J L J L b ; w 7 3 3 7 #X#X#X#X", "#X#X#X#X#X#Xh. .M p b p a p y y y y w 7 7 4 7 7 7 7 w 4 3 7 w 7 7 7 7 w y 7 % w 7 3 7 3 #X#X#X#X", "#X#X#X#X#X#Xp - # # @ O @ O # @ O O O O O O . O . . . . O O O O . O O O O O q 3 7 3 7 #X#X#X#X", "#X#X#X#X#X#X+.+.+.O.' ! ' ! ! ' ! ! ! H V l l x x x j j l f f s f r d r 8 d f w 7 3 7 3 #X#X#X#X", "#X#X#X#X#X#X+.+.+.O.O.! ! ! ! ! O.! H V V x x x x f f f f f s f j r r r 8 r r 7 3 7 3 7 #X#X#X#X", "#X#X#X#X#X#X+.+.O.O.O.O.O.O.O.! ! H H H H V V x x x l s f f r l k l r r 5 8 r 7 7 3 7 #X#X#X#X#X", "#X#X#X#X#X#X+.! ! ! ! ! #X#X#X#X#XH H H H H V V l l l f d #X#X#X#X#Xf 8 8 8 r 7 3 7 #X#X#X#X#X#X", "#X#X#X#X#X#X! ! ! ! #X#X#X#X#X#X#X#X#XH H H #X#Xx x x #X#X#X#X#X#X#X#X#X8 8 r w 7 #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#X#X#X#X#X#X#X#X#X#X#X#X#Xr r q #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#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", "#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#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#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#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#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#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#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#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#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#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#X#X#X#X#X#X#X#X" }; ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/wilber.xpm�����������������������������������������������������0000644�0001750�0001750�00000022405�13431646201�016305� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "48 48 210 2", " c #618561856185", ". c #EFBEEFBEEFBE", "X c #618565956185", "o c #D75CD75CE79D", "O c #CF3CD34CDF7D", "+ c #CF3CCF3CDF7D", "@ c #C71BCB2BDF7D", "# c #C71BC71BDF7D", "$ c #BEFBC71BDF7D", "% c #BEFBC30BDF7D", "& c #BEFBC30BD75C", "* c #AEBAAAAAB6DA", "= c #B6DABEFBCF3C", "- c #C71BCB2BD75C", "; c #C71BCB2BC71B", ": c #B6DABAEAC71B", "> c #A699A699B6DA", ", c #8E38820779E7", "< c #AEBAB2CAC71B", "1 c #AEBAB6DACF3C", "2 c #BEFBBEFBCF3C", "3 c #BEFBB6DAAEBA", "4 c #B6DAB6DAB6DA", "5 c #71C671C671C6", "6 c #618559655965", "7 c #965892488E38", "8 c #71C66DB65965", "9 c #9E79A289AEBA", "0 c #96589A69AEBA", "q c #A699A699BEFB", "w c #B6DABAEACF3C", "e c #A699A2899658", "r c #9E799E79AEBA", "t c #AEBAAEBAB6DA", "y c #BEFBC30BCF3C", "u c #86177DF771C6", "i c #51444D344103", "p c #86178A288E38", "a c #8E388A289658", "s c #A699A699AEBA", "d c #BEFBC71BD75C", "f c #71C66DB66185", "g c #69A665955965", "h c #861786179658", "j c #79E77DF78E38", "k c #96589658A699", "l c #A6999E798E38", "z c #9E79924879E7", "x c #A6999E799658", "c c #596555554103", "v c #492438E328A2", "b c #38E334D328A2", "n c #38E328A21861", "m c #41033CF328A2", "M c #30C230C228A2", "N c #30C220811861", "B c #30C22CB22081", "V c #4924451438E3", "C c #596555555144", "Z c #71C66DB669A6", "A c #96588E389658", "S c #A699A289A699", "D c #69A661855144", "F c #6185659569A6", "G c #6185618569A6", "H c #86178A289E79", "J c #BEFBC30BC71B", "K c #96588A2879E7", "L c #861779E76185", "P c #69A659654924", "I c #410328A21040", "U c #38E324920820", "Y c #30C220810820", "T c #28A218610820", "R c #208114510820", "E c #186110400000", "W c #18610C300000", "Q c #20811C711040", "! c #492449244103", "~ c #9E799A699658", "^ c #79E775D66185", "/ c #69A665955144", "( c #618561855144", ") c #61855D754924", "_ c #410345144103", "` c #49244D345965", "' c #79E782079658", "] c #AEBAAEBAC71B", "[ c #B6DABEFBD75C", "{ c #B6DAAEBAA699", "} c #96587DF76185", "| c #38E320810820", " . c #28A21C710820", ".. c #104008200000", "X. c #49244D344924", "o. c #79E779E78617", "O. c #71C669A65965", "+. c #596559654924", "@. c #28A22CB230C2", "#. c #410345144924", "$. c #41032CB21040", "%. c #30C234D328A2", "&. c #69A669A66185", "*. c #38E338E330C2", "=. c #186118611861", "-. c #79E782078E38", ";. c #9E7996588E38", ":. c #186110400820", ">. c #514451444103", ",. c #492449245144", "<. c #8E3871C65144", "1. c #5144410328A2", "2. c #410330C21861", "3. c #28A224921861", "4. c #28A228A22081", "5. c #38E338E328A2", "6. c #4103410330C2", "7. c #51444D3438E3", "8. c #28A2249228A2", "9. c #514455556185", "0. c #8E388E389E79", "q. c #C71BBEFBB6DA", "w. c #79E779E771C6", "e. c #596559655144", "r. c #4103410338E3", "t. c #41033CF330C2", "y. c #28A22CB228A2", "u. c #104010401040", "i. c #30C230C238E3", "p. c #6185659571C6", "a. c #F7DEF3CEF7DE", "s. c #EFBEF3CEEFBE", "d. c #DF7DDF7DD75C", "f. c #C71BC71BBEFB", "g. c #BEFBBEFBBEFB", "h. c #61855D755144", "j. c #4924492438E3", "k. c #08200C300820", "l. c #18611C712081", "z. c #71C679E78E38", "x. c #9E79A699BEFB", "c. c #965896589E79", "v. c #C71BC30BC71B", "b. c #EFBEEBADE79D", "n. c #D75CD75CD75C", "m. c #E79DE79DE79D", "M. c #CF3CCF3CC71B", "N. c #DF7DE38DDF7D", "B. c #28A22CB22081", "V. c #38E33CF34103", "C. c #8E389248A699", "Z. c #861786178E38", "A. c #514455555144", "S. c #38E33CF338E3", "D. c #618561855965", "F. c #E79DDF7DDF7D", "G. c #9E799E799E79", "H. c #DF7DDB6CD75C", "J. c #AEBAAAAAA699", "K. c #38E338E34103", "L. c #A699AAAAC71B", "P. c #596559655965", "I. c #28A228A228A2", "U. c #965896589658", "Y. c #A699AAAABEFB", "T. c #30C234D330C2", "R. c #596555554924", "E. c #082004100820", "W. c #59655D7569A6", "Q. c #30C234D338E3", "!. c #86177DF769A6", "~. c #69A66DB669A6", "^. c #96588E388617", "/. c #79E779E76185", "(. c #186118611040", "). c #96589658AEBA", "_. c #AEBAB2CACF3C", "`. c #79E771C65965", "'. c #514455554924", "]. c #8E388E388E38", "[. c #6185514438E3", "{. c #71C65D754924", "}. c #79E765954924", "|. c #A699AEBAC71B", " X c #AEBAB6DAD75C", ".X c #B6DABAEAD75C", "XX c #79E77DF779E7", "oX c #5144492438E3", "OX c #71C661854924", "+X c #9E797DF75965", "@X c #B6DA965871C6", "#X c #AEBA9A6979E7", "$X c #96589A69A699", "%X c #9E79A289B6DA", "&X c #208120812081", "*X c #49244D345144", "=X c #410341034924", "-X c #514455555965", ";X c #69A669A671C6", ":X c #69A671C679E7", ">X c #8E3892489E79", ",X c #208120811861", "<X c #59655D756185", "1X c #71C675D68617", "2X c #69A66DB679E7", "3X c #69A669A679E7", "4X c #79E77DF79658", "5X c #9E799E79B6DA", "6X c #79E786179658", "7X c #86178E38A699", " . ", "X o o o o o o o O o O O O O O O O O + O + + + + + + + + + + + + + + @ @ @ # @ # # # # # # # # . ", " o o o o o o o o o O o O O O O O O O O + O + + + + + + + + + + @ @ @ # + @ # @ # # # # # # $ . ", "X o o o o o O o o O o O o o O O O + O + O + + + + + + + + + @ + @ + # + # # @ # # # # # # $ $ . ", " o o o o o o o O o O o O O O o + o + + + + + + + + + + + + + @ @ # + # @ @ # # # # # # $ $ $ . ", " o o o o O o o O o O o + o O O + + + + O + + + + + + + + @ @ + # + # @ # # @ # # # # # $ $ $ . ", " o o o O o O o O o O O O O O O O + O + + + + + + + + + @ @ @ # + # # @ # # # # # # # $ $ $ $ . ", " o o o o O o O o O o + o O o + O + + + + + + + + + @ + @ + # + # # + # # # # # # # $ $ $ $ % . ", " O o O o O o O o + O O + O + + + + + + + + + + + + + @ @ # + # @ # # # # # $ & $ $ $ $ $ % $ . ", " o o o O o O o O O O + o + O + O + + + + + + + @ + @ @ @ @ @ # @ # @ # # # * = & & % $ % % % . ", " o O o O o O o + - ; + @ + + + + + + + + + + : > @ # @ # # @ # # # # # # = , < < 1 2 & % % % . ", " o O o O o O O O - 3 4 : = @ + + + + + + + + 5 6 = = & @ # @ # @ # # # & 7 8 9 0 q w & % % & . ", " O o O o + O O O + 3 e e r : : t - @ @ @ y = u i p a s 1 d $ # # # # % e f g h j k < & % & & . ", " o O o + o + O + - : l z x e x , c v b n m M N B V C 6 Z A s w & & & S f g D F G H < & & & & . ", " O o + o + o + O + J e K L P v I U Y Y Y T T T R E E E W Q ! 0 > w ~ ^ / ( ) _ ` ' ] [ & & & . ", " o + o + O + + + + - { } v I I I | Y Y .T T T R E E W ......X.o.7 O.( ) +.+.@.#.j ] [ & & & . ", " O O + O O + O + + @ 4 L $.I I U Y Y Y T T T R E E E W ......%.&.O./ ( ) c *.=.#.-.] 2 & & & . ", "X + O O O + O + + + @ : ;.v I I | Y Y .T T R E :.E W :.:.Q M i ) ( ) ) c >.%.=.,.h ] [ & & & . ", " O + O + + + + + + + J { <.1.2.I n n N N N 3.3.3.4.3.4.B 5.6.7.c +.c c >.i M 8.9.0.< [ & & & . ", "X + O + O + O + + + + - ; q.z 8 ) +.O.w.Z e.r.5.b b b 5.t.t.V 7.>.>.>.>.>.y.u.i.p.0 1 [ & & & . ", " + O + + = d @ @ + y . a.s.d.;., 3 ; ; f.g.7 h.i 7.V V V V V V V j.j.j.8.k.l.#.z.x.w & & & & . ", "X O + @ c.Z o.a > 9 v.a.b.n.m.M.f.. N.N.N.N.n.e ( ) >.>.j.V 6.6.t.6.6.B.k.=.V.p.C.< [ & & & [ . ", " + @ Z.A.A.S.8.D.7 F.a.G.A.X.H.. a.. H.J.S n.f.g ( +.>.j.6.t.5.b 5.u.k.=.K.G 0.L.w [ & & [ [ . ", "X + = P.~ J.X y.I.h.q.a.S.=.k.J.. . . S p 8.U.f.g ( c 7.V t.5.b b M k.=.K.F H Y.w [ & & [ [ [ . ", " + c.X.J.J.X T.y.r.u f.u I.R., n.b.b.A._ E.X e / ) >.7.V 5.b b b u.u.@.W.H L.w [ & & [ [ [ [ . ", "X + X Q.w.5 X.T.*._ h.u , ^ !., e H.H.~.=.8.^.w.) c 7.V t.m b b B.k.l.,.j q w [ & [ [ [ [ [ [ . ", " + X I.X.X.S.S.! A.e.8 8 /././.L ~ f.f.7 ^.w.( +.>.7.V 6.5.5.b (.u.i.p.)._.[ & [ [ [ [ [ [ [ . ", "X + * I.y.*.S.X.C X D.h.O.8 `.^ `.`.^ f f g ( ) 7.t.V 6.5.5.5.B.u.l.,.-.q w [ [ [ [ [ [ [ [ [ . ", " + : ! T.S.X.P.X Z D.c ) / O.8 O.O.g ( / ) +.c b t.t.t.b 5.b B u.@.p.C.< [ [ [ [ [ [ [ [ [ [ . ", " + & c.X.X.C X 5 w.'.j.7.c ( ( ( ) ) ) c >.7.b m i j.m b b M k.=.#.j q w [ [ [ [ [ [ [ [ [ [ . ", " + d 4 ].X X 5 w.&.V V j.7.>.) +.c >.c 7.t.m v [.{.{.}.}.<.<./ D.F H q 1 w ] 0 c.|._. X.X.X.X. ", " + @ w 9 p XXZ D.! r.6.6.V V 7.! V t.M 3.4.m oX{.OX}.<.+X@X@X#X^.5 p $X9 a A.S.X.~.a x.|._..X. ", " + # & Y.-.XX, C b B.B.B.B.Q Q (.(.=.8.B r.>.D./ V m m v OX} K 7 S S s * X *._ X.P.~.p 0 Y.< . ", " + @ @ = %X' F F A.X.B.k.E.E.k.(.&Xy.t.! e.h.) t.B.&Xk.u.=.8.*._ *X=X-X;X:X_ X.A.X 5 XX].$X).. ", " @ @ # $ = Y.>X:X-XP.A.8.S.*.%.B.%.*.r.! ! %.,Xl.(.u.=.8.K.V.V.V.V.#.-Xp.;Xp.<X<XX 5 X #.9.z.. ", " @ + # @ $ & < %XH 1XG ,.V.Q.i.S.T.y.I.I.I.I.8.u.=.8.V.-X2X1X1X:X3X2X1X' H 4Xp.*XK.@.i.Q.` 2X. ", " # @ # @ # # d = < q k h 1X2XF 9.,.V.Q.T.T.T.i.V.V.9.:XH 0 x.x.%X0 0 5Xq L.x.C.4X3XW.9.W.3X6X. ", " + # @ # # # $ $ & = w Y.q %X0 0.' 1X2X3X3X3X2X2Xj H 5XL._.w w X1 _. Xw X X|.q 0 C.7X7X).x.. ", " # @ # # @ # # # $ $ % & & .Xw _.] q x.%X5X5X5Xx.q < _.[ [ & [ [ [ [ [ [ [ .X.X X_.|.|.|.|. X. ", " @ # @ # # # # # # $ $ $ % % & & [ 2 w w w w w w w [ [ [ [ [ [ [ [ [ [ [ .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.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 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 Xw X X X. ", " $ # $ $ $ % $ % % % & & & & & & & & & [ [ [ [ [ [ [ [ [ [ .X.X.X.X.X.X.X.X.X.X X X.X X X X X. ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . "}; �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/Drawer.tiff����������������������������������������������������0000644�0001750�0001750�00000003464�13431646201�016375� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*�&��xIl\E@k6bbŞ`A1HoK  n(�('$8�rP8C ؞x{5ӿ‰)3w_]U�@o3q kݰ+G-k |ox}�lxngC.Jj@do~|_REV^D~/O6C~jϯڙ߹4VcM5?%g͹#7$BNqN^γko#;y_͂+/ꖗaǶMU-vaZv:x+ۉhM7�r:-Ta*=`Gɫ~ϊoYҹ=Klo q6l&{ <ipw/3֌.#yihF^f?į=jWf'~їN^^qewӽ#ڮ7 hڡ۱1Aj͂4g0n?m3+e*4ʮ 씌?x1մ6U:H4`%v~MoیR RV=ڶb.gwc??!G?ouݲ�Y''L}-C2C8|,g(sO7?rE,/<t: }_鷷XX0(բr>grLd3O1c b`} "uH a,pĶ;ϿF{G8|sgQs{ [Ɠ~@z,jyÐ"_ϣ;dw8l(SEa<|,)K3cq8Z٩X6a<r4~YeO{0&;[t((:??$~ZC/2vm 7Ko8_2mva4$o-;;l0=7Y ]USʎRҢ nq5v`-D"1fWwoH+&, ~N22fGRk{\~rܣxtP4Y0[!!msap:h}ӤwBZyȞ:|s?1pN_]7,iw'ӁW/{r ^~_?[l/UjCOnvau]x^фͼUմ׎%c%/>`p_w7Yy,8va{!%A6`HkY_|&{Nጚ,-?;=m;ew M=}j>ŒWo| 0$v%';"F ](G> #IU5Xe%$op2+g-5(N|3ZY ;kLO aNgJݫ :>?dwL_JvE^}LcuZ/,?{S@2 pܥL������0�������0������� ���������������� ������� � ���(���������������������������0����������������������������(�������)�������=�������R�����������H������H����������Drawer.tiff�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/Mozilla.png����������������������������������������������������0000644�0001750�0001750�00000022176�13431646201�016415� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq���gAMA�� a���bKGD������ pHYs�� �� d_���tIME .%z�� �IDATxygu9޷==f8H�C*ڢT,EcK1 )QJc[Q8TYUTJ$*2ɤD"H� gzzo=~==b^խm9�Lw 5I��j4C>>v滽79 ʰ~br x@z?1^GwpF` 8C#$BDwn뛜P}<zPPN}{gAV8 N@@op}7ݿƁJYVor_7d�rb=N͜0 b@-&S @3�QPUvNwe! oꅬN-ԃoԻO!񁒗[{H}F?(7 2IBA$h+ӱm~'WZy:4gh/Cn8 _9{eǛMԗ � Lui m55gH\c5j'¯U؏|OAop¾c#TTJV %I(ke׽x3G>DBA) 'Ag|w~;\=os=ADAT P2sCk#Qq$Bh'Bh (TĴ1dv7~Xۋḱ|;e#NR'QZ(F�q影3 3R=k;}էyvL]s+Դ.௼烻cJXJջPwۧ 㬣2e*w#9:WDJTahw{=sW+| paRg'z[7r9AAZV{(9~%h +Q$Cb,`c[:웿rX6֑֕#E6::/"~jn o9ȥ7k͙)͊VšX0(Fz{_7YzEĈ#1bǎ7R DQzGz;;21cӟ_?{ռT6'B^+"*w;`3QQϾ!arD o?_ò^EA516u6۵~>tm=?|'i xbxe�c^TQ*Y+FرY{ǽ?ޞ}hx) )CS+/@};k+K0wnXn) O_z_K?|..p'1 E@^u/}T1+W}3f#31n"$@(K/ q4և.}QR9ǾDq)B qOj؏KFEKUA(Wo(,"D  URoQǽƇ7/7%||"u`ʨFF$_2RB@ޭ`ؿO/<C?ϼf q̴x Z b/xw? vџGhРsȊ$0& 1I &b7f敯WOW>x;G-T31;"m~+dYؼ2Ufs!,䃕W>wƍE6ZL&+7iMVTy{5EFUMr< T ;O6P QQ Xlh9bGި?Gӛ]3p2IU"I,W�cKԀy6[*,j~1A(G~(n +G{fimV oBm^KoJT%rTM `XW'#{ Xm^ a�bAE*JUAlH^!r/`b"!?>QJd/$KU*5*V,b�V@U\/F8@&WVWh0l#U7'2cA2}Uy 9<ه8 g[uNin` ltʱ[od1tzx{4�x18j Z9`^Ƣý 57;tן{NY+w/&Kz3|8A?zO~s2 ZZYpaVWQEUի;ͩ/ R^AqQ"R^?S߾tE>78)sӋo^L'+)<Oe^{68SS$z)d yĘ7udbIBL$U{_8 X#NT\5Q1cũoZő% >iXvya֐tt!Sj4=v謼IOR_VC)I'a fK8{?c,?rwA=ATB^KU ZB`<bUU'UGk&?Yq,5XcHk-&IP/<8C`'R`)E /=Gf2R2SՎ:(-b @uycJet/L a?~tSE$+3^/~`\ lD1!T(" C0~E͛igVyhYh$w4ŋ,o>Ro\8[ NIM0kb@ԫU3Q_Ҫ/hPZotz!""e{s{GQҭ+Laz[t eVJr%9B rt޵e XZo~KR]^Ic@Z TSh}' (XԸC<ϱ255b S&SSS9g~mD d oZlmYdx ƗAM2�U"zl?:~䶯MwΜ eUzN8`GO=vC�ѩ)jDQ$:{[>+;-}k"j,4 |Hk*x_@a+10 ui4,$"s>`oq%=mPtW{; L;쥙 ׌l47 j\vV_vvvt0Hc$:kg8M*TGQb% S#-`fv8T3�);3=+>GM#DP2^S;CK{Y}kqXʭ,ߪQvO]\-?-..ʩS̙3t]^Jdyy9?,|YcMV• 4Lă 2T!p;N % 85)Ј`E$ILp RTq~_=^;iP 9@0*b^$幙K c ^`[VR,|On»<W]b.Tp7p./*z˱EhYTWCշ.vnOz(,ˮWse󾬺FL`S{us8$ɢ1,f8DA 1{.k ^CHkLUZB@А2lgڥhU QXqI"P2v٦Yfl,Vx El^ ^Vg}}%zVfɰۡ"ƸBT,:UH8ߨ^+ |唚a35B\E@ I {N n*+++$Ip8dww=EQ9EQ#�zXT7LvEqieaa<9x A9+?B�R(,:x 1 :EQ} +OaXtPý,J �XA&jv: .8|0Nb8VPwU%"D>(=;;F1ך+|'ԧHYΝ;"O>$4 ?@st:Eؼ [$T*3ºӇٹ% w9<OtrsXpBV2 u&ý^F"7x"˜<yoQ˲ {Oip8^ c!,c{{y<gww$I&WcOup\\V,03'tW_^W/ �3fVYucM*Yr;P�tݍ&nWZש묭qE:ٳgpbXN.q󖷼ufff{,^4MF \ͫX0jGkש?eCO}n*+i֨dE2H�3N/ [,!333$IgC^GDX]]W_8p�8qb+W'I_~Pp%z=vJX>Gg^Dmggz9>'`Q3qլRGC~Ye/;@s}Ok?qUPIBSSNqe4evv,355E|_&I}Q*ܼy7n0 avEY^^&"sj5N:(hZe(ɫצ루k8Si??>^zkU?U0JDYXBU8?>v'^H6o82==͹sX__^@DiJedY�_җoߞϫꬪ1&jZ̙33+<2??O\pNCqM3L/ҹQz08l33ň}fR 뫬q cG+ܴ21 B;h`hqK'loo355űc(˒ׯ(J}@D:NFFU `O �LMMqiiEAgjj4Mi4eIdYFcFy.^ l?o͒cok.c#02-bӦ([0ȡUa[ 2\=4b,�ڵk2;;?ɓ'b>" ˲ Q "1??OҥK8eff(Hth4 *ш(cϰ#eY-6*binfL3Q[+PUTHeTwvAݬٹaL( &YEOfyyW^yu8( j.Zk!"8v9{,Z!NĉXk;p�ށsN&SD>Y:2$sg TSBql,= `Z38jPZ;(˒M666|';;;\p=?0}//L!23Xk䡇�R1PeYaH@2#P* LӮ �f4]xo}aJbPÁ1΋Lo8pGӴZ-7nOS%x;J}_gcc,)^kkkk|k_,t333�8qM:EQƵz?=ed!g[bɪÌ1w T)ɴ �3skN$%cq7n c�,KnU0ZȲl‹8Y\\رc}49Al6)˒nK{eߺ^؇i~%Y.^bkO}Fu?{GGZE>IƱ !Y% `mm58fvvv/.9./B&cjqI "0 (=j,..✣lRh-Q <Tbo\ox"V0\L9p6|W7qR$δ2]ařΖI/2 {*kkkULbÉ'�z^iJ<y8i6�DQĩSEI�pi,+C,-Y,(y89k\!AR}/n͎OgPQ1E?ng5={,\z,j<z=VVVp99Bܾ}{ȬXk m~aD`<A>IA߸ IVT, B r>&l)Ũ"�Qp`)PB/o^n^*˟ͻ |O9 ׸_Qa/_t:EQ̊H+ZEQ6I"�.\nKݮm^kl_ ͩHxFp%b}A049%lGh |L t=lU=l{?=Ç)lzߟ_K2 ÃZz;h+mEQsឪ3h4XXXCCYOC |s`y`'[f=[YGU?@߂铂#'h-Fl"Mcf9v96BXydrt$r_aQ`KLMM*VCJy IrXDyjlmmqYQ{oj?*N }x93eQPHj57Gr:td%Y:ت)yx}ʃojL }y$ Zv<{0d4a& qzѭ-m5c]#wZu]W4W>3:�VMDw˫Q J-PPM4<hQja2` <Zs%흺6ttfsMPʇP@4ղ,5I~}mz=h4BUiZ,--aa{{SSS{~C x~h"U۵inw۠0m!3"R\! !t 9eWс# vj@]JO{?Ep88.`ˏAfggmo>C:c8p�[[[{$^%Pcz=nܸVkFQ9 Pt:[~K5iSnm=pO;HN=#02f032$⑖"LA/=dF-V׊ %oO"dcN-n]_^<ήhuU{q4MiS755O?"Rq\:J\A!"FDh4?hKO1za 9.\E4X`淤#Ru5Op@qS 2l=HB`C 83O/<îQ kmqeYXz) ðtι\D2cLh4þ^Kĵ:ğ}7@f}7_lv" ߴr<e=}-nYc0HSKWCނ(t­];TLhШ l ??bww7)Vwvt2YqgǏϲ,ˋȇai-VUE{GEQ (7hD:Rh&0R¿ay?vtw;W.1 p:y`D&aPW3RJQz[3 f0BjbE��IDAT%AOO3A@3Y=blbի0 tuggl~~/rXŨ(֭[~h4KKKh4ڵkiV m٬(3VڜQkrlKrgm;R:Li#(Hne&55a yߗόVh5)0i3>>XџtO }vwwT"Z\^Y+++h4EQtDKKKsΥzw]`jj* pq&q^=A)eZ4TtOug,%FLKC *&R28 `M5Lȥ(JG9,fx~JK,t:lnnb!I;W^e}}]4"gY6LӴe`0Z;sʕ+x1aA]Ucq8`0H4HC--7-P8gVT%HKL#w{F$պRuV}:HP45@lF&&< rԦ1yN9wڳE gΜэ ~?z`36`92rJ;IsZkkm�Xyf~~z.э4_ג0^JAK才6yA׽F6YԬ&VkOBq)^Fa7y~7̍Vq4İX6Ka~o!"fffX__[p榪*{>jCkm/ݢ(vկ~ue$Iaط&eÝ$ CyйqJ\8󾟠O{o ZlZ;,( nͻBt^Ԫ7}P>5k14_KW4eDm~~OQt?~\777})(p0 0zb2����IENDB`��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/Magnify.tiff���������������������������������������������������0000644�0001750�0001750�00000010664�13431646201�016543� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*�~��� P8$ BaPd6DbQ8V-FcQv=HdR9$M'JeRd]/LfS9m7NgS} AhN D aFA@zN~|\.W}~6 oZ $0S"L@ o�?@(��,=�>@7~=ly*LǪ~۸X J(z )`c�;A�([BИ �� 9�u WQ=`g~IBWEJ)@h4� Rxf{�@�2`� Š#>�;ȱП*ynG(ˆ.~� <}\wEوz �A40"{� }rZ�@� ``� G���=1<3ϟ~zg�xx�{@�tIG|F&1D`RAԛS@!7'aJFX` <�P�\j14��523,M L@CDzU[BzDZeCJj86NvXwZb8@,/ w.h N(H E$EX J SyT{.}H~�`q}5{LfNe @Bd*u iryP0N X}G`a!_u --ͷ$�w6<O;L<jLT{R9vǼzp ug0B|(<biDY@8l �T:`mUE C(<,ٞ<7\ͮg3>LO j##D݁4&d� @d`^ Ka0:{#P*Ĩ sq"58ܢGOE0<�$SWH2Lu=@ \`/ �8~@hG.x"=`e?hec&?*#'V( q,53ȋW�h?y"cKrE5&̹<`�`\ =q샠J�}"GG@x�5}Q9R"0"@.p>4kc@ >�(I5+#2ʳ/* ]n)LMuf`P8@�A `X� |8FĀ kq \ �Q�@e�f@IO2z�X9jgAI +gqGE�?P sUc Ӱ� ��N.#4Bm%`sXM >Gsu'FH.}@?QuX@9fWU'̯s!/cs\� "U;.y=x n�,8Ga6;s"'�H( 1�?lt29X gU iS!I5*?2H�H}@ @6`dtPs@aM I. @ @pnΜ�u�c(k?@ �F6XPed٣20\#^fƎV@ 0@PA=o01=["@tv%i@@iE�D@� x� ! P(ԺT09t:$?ױqC64 3 ԜҎz��x3ѾiRG7cl} EX @p�0(�i@Q袇G9:f~sc. @%:K @@�T p\@yt9 !>I r2 �$Rih`i<r1 Xˢ+& e]f1ƭ EU6K@:22!X]%=#P`X �g:aShR go\:KG<*TcZJp&p|=B3��0%�m8`!Xl3Ddn�À7C7`<�_& P =bJǠ2 �ڮtvh Ǡ5 h|" P9(F;t@ka!AAwe^b$� f� `��C3XO � i%Rh�/��* $4CH*F<J+ G db̖d� X a*`P� x!L~C3`@CC:<�Rj�cDljvd9�@"RUEfp( AxA"*@ x  GS.^2.�Zd1(�(hSCSK"..�XFzaC.22DZP!UAdF| gu"&"�@d`` )u+GjhԼIj#@4$&F|8�!*@s�B;lqa9B&!�!!!O�$$Yb \`F:`0.0fO.\ڬp!!"�O$2@0�aB t |1C@4F(c(v"FNU,<Fj�!Zp � P8$ BaPd6 �@�0�?b " � `$DT@ �D� [�p,Y~�O{n҅||_w>WVkUv ³#4B䀗#/-@X�@,~Oo h.l@5w=CpH1  0D� 0~ _��e  SS\7^h}FZw߫‘pX u�eD[�71Kd.'�G|9Yly'ԛ Ð8��H8�C8X t-IJ�� �p�nX�{@v"_f?k ށ/@6#(֎`8a ,HljH�I�5 �~op){4=/谣1C@b 0�P�@P�$�2 &@40v2�@JXeyf~COBL� ��`́@�D D4'^IG� unldɤvEemcʬ@*҉!�)`L|�%�@4��Nv D(�sqa|q5j@DcXV�CA/�V�ڥ)a�xF B$v)$BK't%9r#Xz�`He`:�""B&�Zvz0',~f' w u 9c[9@�) Q�p7^l<h'쩀}�1"P �8-26 ?t@C`g$FE p*3~fO@| yVǜO�W�X`�Eˏ:xRe.iE� �OP&� �85�GX`.( #$1 by耞2""<p|@׌zPt@ C4Er䜡DJ@@���������������<�������5�������h���������������� � ���p������~��������������������������"����������������������������(�������=�������R���������������Magnify.tiff��Created with The GIMP���� �� �������H������H�������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/GNUstep3D.tiff�������������������������������������������������0000644�0001750�0001750�00000007514�13431646201�016665� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*�D��� $h!B &l"F%jXa1ˎ7^ٲ 0a>}&if5)Q hd/!BD,ϱnT3t3[?Qu=ZT"% WJ%#K(ݿL/t3ټ9(/jڼ%aWDz?o{(;� >\B1Ry_5<n&L=? Z=u}k? P` THJ*8 C),  #U63/R/ 2]t36A(@Sxr ȔC 5G==0r$Ao֬.;ȑr6Pv0*8$E d/6/JO41?mG"QT_x&u6w>)``˲Z8cpa៲S$DK,I%=H!TG75XZ!mlF ?60먫NprbGuF oJ's6\ 0+wGwtӯʑJDzkY' q'У@l�H<@USmֶgv;ّwsȩi/SI8ݖCT7dflP|�ϯ N>z qBf0643,3]DŖXj^~EjYe5ꮷ~~ķf?(!ǀWH]<#)'r" sԋ q}6q`Pܐa]n׹MFǽx0q1c;G[dD27Au2Ōc#fp=oy{*Q,iiT j򅕭v:O 8Ip08Nb艆tQ,./)\t3$rStB=9K ]Z>sX]z5 /&36щrf'уD<B:g�֙%I(Y1QL#{~lTcJj;'~�ɐ�kG_? [` +41Z83Ct͂l*:M` ^ =5M %mCU {ݘd&,{ZD$*XF1 U4QY9UJz2MEe#")ʮ#3S1`,>V/fx-^sˡ& 7q_?c}05hoghx7dQҊݸ"J.aS4Ti)M2Law\?ۊ\l71>cGWGH'glqIK:T?H2bSTƱin,[Y'Bh N ;+?q[dІ< *Bɨ3TPNH]8V7LBLס77kR)BP�#|MW2,G4\}j‹ƱG48w⒀G:FgQ8*\dd!@XOa: ?u;ˀgLj`̢f; `@ͣ |whZ0Q :\*71M$Ŕ4)JnR_4:g_dμ7<`fotcX#!D0  ?1FRRs\YuIudrМL6̥w #AbFc/}+Yt@޳OWg M Z_n h ,!5 9HatnQK2Wxf)p[wzVt9 .9 s.ԋ*`4Ur5 l0TW+)4e(5Lz?HMwHEilzx0W>⑏,^vsgb]6Xw.ZX77vٰO`G# Hjp#m烇<cG?>@tCyNp+*|IGfrsA<e'jރ?V^,Q{?8I؁%1n81mwqH%dBU}0b|3 C!Q' dBB"ZW &{+w(/0x1PP8weT(QQ!5J7"ȵIS4u#*bc_'V0 +C#>^`h�# 0^(ׅvG4p8DivY['"iՋ0[wB"Ci :S3@yׇp8P8؍b9YP Pp9 QUfiMhYU<2xG& z)�@9"5<S4i{y &J2s_:ϸw0(`냱h?_a d@LKSE\ijDKb1 @P"R<'i㠏7`QcAWh 1 IX iOdu8 8@P�RM -Ju,@u4%&dbkA0<]K%o{$KJ& 0JGy�� 0XMh} %efxhWT^uw_t 0�JB�cF(K5gJƖ^eXbäLV^MzWYX0? >OEP 4ψ- /S H9 ;y v6a�,mwӐxw7~W)qhN�_N 5}7t7"PvfFdcZ|'ysLV|0LI$;6➸>dw?h:Gq~GKAJp!qr 0[ �(DNT~`|3 be<ʸ?/и@؋4Q EINPscLHw/(v&,b (HD)%,N<a8ҌLhVׄw,)m,Hވ8G$7!H(wtgB@.zO' k<Aw$W|<U.A8.)B4*4BJvR@-1vb6Xk%@өpF>+@/ m8*VϬ*ou/9T`T"%)0 "!2qjjgH,@+LM|֋"g I.Ŋ1\mS4?K9%SNBr-R'!>0|>+xbITvUV|jpk=koso6UWlf!{F13:/�fjn1`s)pihulmko6lG@�������-�������-����������������������� ������� �/���������6���������������������������-�������;���������R���������������/home/andre/GNUstep/Library/icons/GNUstep2.tif��created with The GIMP�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/GNUstep.tiff���������������������������������������������������0000644�0001750�0001750�00000005105�13431646201�016470� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*���� P8$ BaP�`xhB=D`o#Lq=Mw's@߲GNgS} 41 .+ K aO�j@T4 �p _��P.]6{[Gw]!KF'EJ{'�\^4�'N�6:�4@ '?�^bٯYk݊mfIEFC�9@|�86]r�|Z�=U*d7>Gn[6N7H0遧 �PL: *?̼@�C2Ïh y >nă|#. E;@Lj�wƀx9sG2� ` �2(gIprŸQY+ p.�}L̞KR<:@�'7s!j΂oLdSS-m�t(�qE&(K0SeALe3!} uU]3m0ð CXg)ȡnoïSf` iuq�aYۈ$Į1k];J)XJt �k^��y4zh'FHWk[y^ҹNMW{\ʝȜYu�8�Qa=!a^`mյ{sCdbٍw�phA܅)vyF&Yno4x]Z;Narh�F*mmӧ-XfrJ)\�g&ȁ$�V En;0jzvY\ Oӱ7�<.bFxrv+ѭ6ٷ<w;�Q�h߄7hr�7*+o7{ٟ:k çAw�_i_,BFp\G~iF|sie�Ɓ@�MCX;C�Q*iobc� 'Y@8HVJL J Vr�#߆Bx} 3u$ي ci} X.8ZZ\1is�M A A'ő"O[7E!N11El,X'BqiL3>BPÓC1>U#tnUC$I$"T/%IIk̪x^ S/I ҈9Qw19rLJ{3@GăwP7&Q`!c[x�'dvryv<-UΘ 2R_tg,nqWDXͩgfz*XC0p@R)hETjJI=ݜAEOa( hg _;-sZgMjl̦NS�A@a.6Z7Bʝ?)v+�ăy%+ffBmR3!ZpQ تchM33�N<((iAS4 Oe]+lۣK!wO�ղF A�՘+1qU1Ol,U!3u*!ufd10y5[.N"u5ZD+ku\1 {�SND p�6@ŢFWBW+Ej ]t0cZTP4EƧ`˗lf"1F! _E11Pn4Dɢ8b{u &f,  OFiP(_3npf �~y!tl5 �+̭(fUŘG(61Zɂ]C1-d R ? YĨGR*@ ?z.dkdƑ:1[j�\,&U iDEvqM;$%Y 5of(#mhZ`�*Iv�9P�w� S}ق޵;g%iB<BI �� x�amEѠJ]=,r'?C#͢C\YogH.-?O^TU0HmZg ntz��}t@h:\WjO: W K�@gUQi?`oТ`&(<!e܅Md>~IW i� n6�lÊ@T�83fk,ʴ+`�V��R;@ ;J 3��_mfa*B!@@����������������0�������0������� ���������������� �Q��� ���������������������������@������������� ������ ���������(�������=�������R�����������mm����/home/koma/Project/wmaker/repo/current/wmaker-crm/WindowMaker/Icons/GNUstep.tiff������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/GNUterm.xpm����������������������������������������������������0000644�0001750�0001750�00000022114�13431646201�016337� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "48 48 202 2", " c None", ". c #000000000000", "X c #082004100820", "o c #18611C711040", "O c #10400C301040", "+ c #104010401040", "@ c #28A228A228A2", "# c #38E33CF338E3", "$ c #492449244103", "% c #618561855965", "& c #79E779E771C6", "* c #79E77DF779E7", "= c #8617820779E7", "- c #BEFBBAEAAEBA", "; c #B6DAB6DAAEBA", ": c #B6DAB6DAA699", "> c #AEBAAAAAA699", ", c #B6DABAEAAEBA", "< c #B6DABAEAA699", "1 c #AEBAAAAA9E79", "2 c #A699A6999658", "3 c #9E79A2898E38", "4 c #8E38924879E7", "5 c #514455554103", "6 c #000004100000", "7 c #20811C712081", "8 c #59655D755965", "9 c #618565956185", "0 c #A699A699A699", "q c #EFBEEFBEE79D", "w c #EFBEEBADE79D", "e c #E79DEBADDF7D", "r c #E79DE79DDF7D", "t c #E79DE38DDF7D", "y c #DF7DDF7DD75C", "u c #D75CD75CCF3C", "i c #D75CD34CC71B", "p c #CF3CCF3CC71B", "a c #CF3CCB2BBEFB", "s c #C71BCB2BB6DA", "d c #BEFBC30BB6DA", "f c #A699A6998E38", "g c #965896588617", "h c #208124921861", "j c #30C234D328A2", "k c #8E388A288E38", "l c #C71BC71BC71B", "z c #E79DE79DE79D", "x c #FFFFFBEEFFFF", "c c #FFFFFBEEF7DE", "v c #F7DEF7DEF7DE", "b c #F7DEF7DEEFBE", "n c #EFBEF3CEEFBE", "m c #DF7DDB6CCF3C", "M c #D75CD75CC71B", "N c #96589A6979E7", "B c #96589A698617", "V c #186118611040", "C c #F7DEF3CEEFBE", "Z c #9E799E798E38", "A c #79E7820769A6", "S c #79E77DF76185", "D c #514459654924", "F c #C71BC30BBEFB", "G c #8E388A288617", "H c #8617861771C6", "J c #69A669A66185", "K c #596559654924", "L c #38E338E330C2", "P c #28A22CB22081", "I c #0000041028A2", "U c #000004102081", "Y c #AEBAB2CA9E79", "T c #596555554924", "R c #28A228A21861", "E c #69A66DB65965", "W c #28A2249238E3", "Q c #104004104103", "! c #1040041038E3", "~ c #0820041030C2", "^ c #0820082028A2", "/ c #0820041028A2", "( c #9E799A699658", ") c #186104105144", "_ c #186104104924", "` c #1040082038E3", "' c #186108204924", "] c #18610C304924", "[ c #20811C714924", "{ c #410334D36185", "} c #30C22CB25965", "| c #10400C3038E3", " . c #208108205144", ".. c #28A220815965", "X. c #492438E371C6", "o. c #4924451471C6", "O. c #5144492471C6", "+. c #69A661858617", "@. c #28A2249228A2", "#. c #30C234D330C2", "$. c #410341034924", "%. c #492449245965", "&. c #38E334D35144", "*. c #208120814103", "=. c #1861104038E3", "-. c #61855D754924", ";. c #30C230C22081", ":. c #208110405144", ">. c #492449246185", ",. c #38E33CF34103", "<. c #082008200820", "1. c #410341035144", "2. c #41033CF35144", "3. c #30C22CB24924", "4. c #9E799E799E79", "5. c #618561855144", "6. c #30C234D32081", "7. c #38E32CB269A6", "8. c #30C22CB230C2", "9. c #514455555965", "0. c #6185618569A6", "q. c #38E338E34924", "w. c #18611C7138E3", "e. c #38E338E328A2", "r. c #30C224926185", "t. c #30C230C238E3", "y. c #71C671C671C6", "u. c #38E334D338E3", "i. c #618565954924", "p. c #38E33CF328A2", "a. c #4103410328A2", "s. c #208120811861", "d. c #28A21C716185", "f. c #B6DAB6DAB6DA", "g. c #D75CD75CD75C", "h. c #186118611861", "j. c #28A22CB228A2", "k. c #4103410330C2", "l. c #4103451430C2", "z. c #38E3249269A6", "x. c #49244D344924", "c. c #4924492438E3", "v. c #49244D3438E3", "b. c #30C22CB238E3", "n. c #B6DAB2CAB6DA", "m. c #EFBEEBADEFBE", "M. c #861786178617", "N. c #38E338E35144", "B. c #BEFBBEFBAEBA", "V. c #59655D755144", "C. c #AEBAAEBAAEBA", "Z. c #BEFBBEFBBEFB", "A. c #41033CF35965", "S. c #69A66DB65144", "D. c #596561854924", "F. c #20810C305965", "G. c #5144451479E7", "H. c #49244D345144", "J. c #492445145965", "K. c #514455555144", "L. c #A699A2899E79", "P. c #69A671C65965", "I. c #618569A65144", "U. c #69A66DB669A6", "Y. c #CF3CCB2BC71B", "T. c #71C675D65965", "R. c #104014510820", "E. c #965892489658", "W. c #10400C3030C2", "Q. c #71C679E76185", "!. c #1040145130C2", "~. c #8617820769A6", "^. c #B6DAB2CAAEBA", "/. c #71C67DF769A6", "(. c #8E388A2869A6", "). c #8E388E3879E7", "_. c #51444D3469A6", "`. c #41033CF34924", "'. c #208124922081", "]. c #86178A2871C6", "[. c #9658924871C6", "{. c #9658965879E7", "}. c #D75CD34CCF3C", "|. c #8E388A2871C6", " X c #79E775D68617", ".X c #86177DF78E38", "XX c #5965596569A6", "oX c #30C228A25965", "OX c #30C228A25144", "+X c #28A228A24924", "@X c #71C671C669A6", "#X c #79E77DF769A6", "$X c #DF7DE38DD75C", "%X c #AEBAB2CAA699", "&X c #71C675D66185", "*X c #965896588E38", "=X c #618565955965", "-X c #5144514438E3", ";X c #4924451438E3", ":X c #86177DF76185", ">X c #DF7DDF7DDF7D", ",X c #30C22CB228A2", " . . . . . X o . ", " X O + @ # $ % & * = = - ; ; : > , < 1 2 3 4 5 o 6 ", " . . . 7 # 8 9 0 > > q q q q q w e e r t y y y u i p a s d , : 2 f g 5 o h j ", " . k l z x c c c c c v v b b b n q q q w e r r t y m M M i d : : f N g f B 5 o o V ", " @ x x x x c c c c v c v b b C n q q q w w e r t y m M a d : 1 Z 4 A S B f D o h o ", " @ x c c c v c c c c v v C q t i F > 2 G H J K $ L P h o I I U U U U G e Y T o R o ", " @ x v q y p - 1 g & E 5 W Q Q Q ! ! ! ! ~ ~ ~ ~ ^ / / / I I I U U U ( w Y T h R h ", " @ c e J ) ) ) ) _ _ _ _ Q Q Q Q Q ! ! ` ! ~ ~ / ~ / / I I I U U U U ( q : K h P h ", " @ c q % ) ) ) ) _ _ _ Q ' ' ] ] ] [ { { } [ | ~ ^ / / I I / U U U U ( q : T R P h ", " @ c q % ) ) ) _ _ _ ...{ X.o.o.O.+.@.#.$.%.&.*.=.` ~ ^ / I U U U U ( q : -.R ;.R ", " @ c q 8 ) ) ) ) _ :.{ >.,.7 <.X . . . . <.@.1.%.2.&.3.*.^ I U U U U 4.q : 5.P 6.P ", " @ c q % ) ) ) ) :.7.>.8.O . . . . . . . <.7 #.9.0.9.$.q.w./ U U U U 4.q : 5.P e.e.. ", " @ v q % ) ) ) .r.>.t.<.. . . . . . . 6 @ y.4.0 * ,.+ u.3.^ U U U U 4.q < i.;.p.a.s. ", " P c q % ) ) ) d.>.u.O . . . . . . . . X # f.x c g.* h.j.&.^ U U U U 4.q : i.;.k.l.h . ", " @ c q % ) ) ) z.2.h.. . . . . . . . . X # f.x x c l x.8.&.^ U U U U 4.q < 5.6.c.v.o . ", " P c q 8 ) ) .X.b.. . . . . . . . . . 6 #.n.x x x m.M.@ N.^ U U U U 4.q B.5.e.5 5 h . ", " @ v q V.) ) .X.h.6 . . . . . . . . . 6 #.C.x x x v Z.u.A.^ U U U U 4.q B.S.k.K D.h X ", " @ v q V.) ) F.G.<.. . . . . . . . . . 6 @ C.x x x x z H.J.^ U U U U 4.n d S.l.i.i.R O ", " P c q V.) ) F.G.. . . . . . . . . . 6 <.u.C.x x x x m.K.J.^ I U U U L.n d P.v.I.S.P O ", " @.v q V.) ) ) +.. . . . . O U.0 n.f.Z.Z.Y.m.x x x x v x.>.^ I U U U > n d T.5 T.T.P R. ", " @ v q 8 ) ) F.X.6 . . . . + E.m.v x c x x x x x x x v # >.W.I U U U > b s Q.5 T.S ;.6 ", " @.v q V.) ) F.G.O . . . . + E.n x x x x x x x x x x z 7 >.!.I U U U > b s S D S ~.6.. ", " @ v q V.) ) .X.@.. . . . + E.n x x c x c x x x x x 4.h.>.!.I U U U ^.b a /.K ~.(.6.. ", " @ b q V.) ) .7.q.<.. . . + E.m.x x c x c x x x x m.9.<.%.!.I U U U ^.b p A D.(.).p.. ", " @ b q V.) ) ) z._.8.X . . + k m.x x c x c x x x m.4.@ 6 %.w.I U U U n.b i ~.D.(.4 6.. ", " @ v w 8 ) ) F.7.`.8.'.$ K.9 f.v x x c x c x x v C.$ <.. %.w.I U U U n.C i ].i.[.4 ;.. ", " @ v w 8 ) ) .X.h.+ 7 % 0 l z v x x c x c x m.C.H.+ . . %.*.I U U U n.v i ].i.{.N 6.. ", " @ b w V.) ) .G.. . <.8.U.C.z c x c x c v Y.M.,.+ X . . 1.*.I U U U Y.b M ].I.{.g 6.. ", " @ b w V.) ) .X.. . . X h.,.U.M.0 f.C.E.y.H.@ <.. . . . q.*.I U U U }.b M |.i.{.B e.. ", " @.b e 8 ) ) ) z.3.2.1.1.1.%.>.0. X.X X0.XX%.1.$.$.$.$.q.3.!.I U U U g.b M ].i.N B k.. ", " @ b e V.) ) ) F.d.z.z.r.r.oXoXoXoXoXoXoXOXOXOX+X+X+X+X*.!.^ U U U U g.v m H I.N B o . ", " @ b n Z.> 0 0 L.( E.k k G M.M.= * * & y.y.@XU.@XU.J U.U.9 9 9 9 % % e v m ~.i.4 ].X ", " @ v v v b b b b b b v b b b b n C n n n n n C q n q q q q w e e r r t y m ~.D.4 A ", " @ b b b b b b b v v b v b b b C C C n n C n C q q q q q q w w e r t y m m #XD.4 #X ", " @ b b b b C b b b b b b b b b n C n C n n n n q n q q q w w e e r r y y u S D.].Q. ", " O > ^.^.C.> Z.F l p i M m y $Xr e w q q q q q q q q q q w e e e r t y y M E 5 P.K ", " @ a s d , : %X1 : M y i a p F d B.: < < 1 2 Z K v.&XE #Xg *XQ.5 5 $ + ", " h.1 L.> ; d a s y y u i p M M }.y M y r t r t 5.c.f #XS B *XP.j . ", " . % 5 $ v.$ l.k.K k.a.p.e.e.e.e.e.e.e.e.e.e.e.h h S.S.S.j <. ", "X X 5.P ;.;.P h h o R.R.R.R.R.R.V h =XO . ", "O . X T E K l.p.P R s.o R.R.R.R.o P -XS.E ", "O <.K.F }.< ~.f 1 1 1 Z (.S.5 p.;.;.6.a.K #XE v.P # P ;XL X ", "+ E.q n q q e t y t r e t i Y #XK p.;.h o V R.R.R.R.p.:X|.(.T ", "O y.E.g.>X>Xq b n q n q q q q w e t m a : 2 ).Q.e.l.S.K P 6 ", "<. . <.X '.#.L #.#.# ,Xj.j.P P '.h 7 o 6 h . ", "X ", " ", " "}; ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/linuxterm.xpm��������������������������������������������������0000644�0001750�0001750�00000022524�13431646201�017052� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "48 48 214 2", " c None", ". c #000000000000", "X c #10400C300820", "o c #082008200820", "O c #186118611861", "+ c #208124922081", "@ c #28A22CB228A2", "# c #4103410338E3", "$ c #514451445144", "% c #59655D755144", "& c #59655D755965", "* c #69A669A66185", "= c #9E799A698E38", "- c #9E799A699658", "; c #9E79A2899658", ": c #AEBAAEBAA699", "> c #A699AAAA9E79", ", c #9E79A2898E38", "< c #9658965879E7", "1 c #514455554103", "2 c #186118611040", "3 c #186114511861", "4 c #38E33CF338E3", "5 c #410345144103", "6 c #79E779E771C6", "7 c #8E388A288617", "8 c #DF7DDF7DD75C", "9 c #E79DE79DE79D", "0 c #EFBEEBADE79D", "q c #EFBEEFBEE79D", "w c #E79DEBADE79D", "e c #E79DE79DD75C", "r c #E79DE38DDF7D", "t c #D75CD75CD75C", "y c #D75CD75CCF3C", "u c #D75CD34CC71B", "i c #CF3CCF3CC71B", "p c #C71BC71BBEFB", "a c #BEFBC30BB6DA", "s c #B6DAB6DAAEBA", "d c #B6DAB6DAA699", "f c #A699A6998E38", "g c #965896588617", "h c #18611C711040", "j c #208124921861", "k c #20811C711861", "l c #9E799E799E79", "z c #CF3CCB2BC71B", "x c #FFFFFBEEF7DE", "c c #F7DEFBEEF7DE", "v c #F7DEF7DEF7DE", "b c #F7DEF7DEEFBE", "n c #EFBEF3CEEFBE", "m c #EFBEEFBEEFBE", "M c #DF7DDB6CCF3C", "N c #FFFFFFFFFFFF", "B c #8E38924879E7", "V c #79E7820769A6", "C c #596559654924", "Z c #8617861771C6", "A c #69A669A65965", "S c #514451444103", "D c #38E33CF328A2", "F c #28A22CB22081", "G c #0000041028A2", "H c #000004102081", "J c #8E388E3871C6", "K c #AEBAB2CA9E79", "L c #B6DAB6DAB6DA", "P c #28A228A230C2", "I c #104004104103", "U c #1040041038E3", "Y c #0820041038E3", "T c #0820041030C2", "R c #0820041028A2", "E c #28A22CB21861", "W c #186104105144", "Q c #104004104924", "! c #618561855965", "~ c #61855D754924", "^ c #30C234D32081", "/ c #618565954924", "( c #618565955144", ") c #38E338E328A2", "_ c #4103410328A2", "` c #4103451430C2", "' c #4924492438E3", "] c #49244D3438E3", "[ c #208108205144", "{ c #18610C304924", "} c #69A669A65144", "| c #30C21C7169A6", " . c #410338E369A6", ".. c #5144451471C6", "X. c #28A224925144", "o. c #BEFBBEFBAEBA", "O. c #20810C305965", "+. c #38E328A269A6", "@. c #71C66DB669A6", "#. c #71C665955965", "$. c #41032CB271C6", "%. c #28A218616185", "&. c #71C669A69658", "*. c #30C22CB230C2", "=. c #082004100820", "-. c #79E77DF78E38", ";. c #38E32CB26185", ":. c #F7DEF3CEEFBE", ">. c #69A671C65965", ",. c #410330C271C6", "<. c #51444D344924", "1. c #69A661858617", "2. c #208118615144", "3. c #AEBAAAAAA699", "4. c #71C675D65965", "5. c #49243CF371C6", "6. c #492449244924", "7. c #1040082038E3", "8. c #79E779E76185", "9. c #79E77DF76185", "0. c #38E338E34103", "q. c #CF3CCF3CCF3C", "w. c #410341034103", "e. c #20811C712081", "r. c #4924451469A6", "t. c #186110404924", "y. c #8617820769A6", "u. c #596549248617", "i. c #BEFBBAEABEFB", "p. c #596561854924", "a. c #A6997DF72081", "s. c #CF3CB2CA1861", "d. c #DF7DBAEA30C2", "f. c #69A659652081", "g. c #38E338E338E3", "h. c #8E38861769A6", "j. c #79E775D69658", "k. c #A69969A60820", "l. c #F7DEC71B1040", "z. c #F7DEDB6C1861", "x. c #F7DEDF7D1861", "c. c #E79DC30B1861", "v. c #30C228A20820", "b. c #5144492479E7", "n. c #861779E7A699", "m. c #9E7971C62081", "M. c #DF7DAEBA1861", "N. c #5965555571C6", "B. c #86178A2871C6", "V. c #8E388617AEBA", "C. c #BEFB8E382081", "Z. c #EFBEBAEA1040", "A. c #BEFB8E3828A2", "S. c #D75CB2CA69A6", "D. c #DF7DD34CB6DA", "F. c #965892489658", "G. c #30C234D330C2", "H. c #618569A65144", "J. c #BEFBAEBA9658", "K. c #104008204103", "L. c #69A6618579E7", "P. c #28A220815144", "I. c #DF7DDF7DDF7D", "U. c #861786178E38", "Y. c #104010401040", "T. c #104014510820", "R. c #000004100000", "E. c #69A671C66185", "W. c #8E3892489658", "Q. c #5144514438E3", "!. c #30C234D328A2", "~. c #96587DF74103", "^. c #CF3CA6991040", "/. c #F7DEF3CEDF7D", "(. c #C71BBAEA79E7", "). c #E79DB6DA28A2", "_. c #F7DED34C1040", "`. c #CF3CA6991861", "'. c #6185555538E3", "]. c #EFBECB2B4924", "[. c #9658820730C2", "{. c #F7DEC30B1040", "}. c #F7DECB2B1040", "|. c #AEBA86171040", " X c #E79DC30B30C2", ".X c #E79DAAAA1040", "XX c #492430C20820", "oX c #186114510820", "OX c #79E755551040", "+X c #96588A2869A6", "@X c #E79DBAEA1861", "#X c #F7DECF3C1040", "$X c #CF3CA69930C2", "%X c #EFBEB6DA1040", "&X c #D75C9A690820", "*X c #CF3C9A691040", "=X c #8E387DF75965", "-X c #E79DCB2B5965", ";X c #86177DF76185", ":X c #C71BB6DA9658", ">X c #B6DA79E70820", ",X c #DF7DA2890820", "<X c #18610C300820", "1X c #D75CA6992081", "2X c #71C6555528A2", "3X c #9E7982074924", "4X c #D75C92481040", "5X c #5965451428A2", "6X c #41033CF328A2", "7X c #965859651040", "8X c #86176DB64103", "9X c #8E3869A630C2", "0X c #79E74D340820", "qX c #8E3855550820", " . . . . . . X . ", " . o o O + @ # $ % & * = - - - ; : > > , = < 1 2 . ", " . . . 3 + 4 5 6 7 7 8 9 0 0 0 q w e r r 8 8 t y u i p p a s d > f g 1 h j k ", " . * l z x x x x x x c c v b b n m q 0 w w 9 r r 8 M y y u a d d f g < f < 1 h h 2 ", " O N N N x x x x x x c c b b n n m q 0 q w 9 r r 8 M y p a d > = B V V g f C h j 2 ", " O N N x c x x x x x c c n q r u a d f 7 Z A % S D F j h G G G H H H J w K C h j h ", " O N v 0 8 i L K g 6 A 1 P I I I I U U Y Y Y T T T T R R G G G H H H - w d C j E h ", " O x 9 * W W W W Q Q Q Q I I I I U U Y Y Y Y T T T T R R G G H H H H - q d C j E h ", " O x 0 ! W W W Q Q Q I Q I I I I U U Y Y Y Y T T T T R R R G G H H H - 0 K C j E j ", " O x q ! W W W W Q Q Q Q I I I I U U Y Y Y Y T T T T R R G G H H H H - 0 d ~ E ^ j ", " O x 0 ! W W W Q Q Q I Q I I I I U U Y Y Y Y T T T T R R R G H H H H l 0 s / E ^ j ", " O x q ! W W W W Q Q Q Q I I I I U U Y Y Y Y T T T T R R G G G H H H l q d ( F ) ^ . ", " O c m ! W W W Q W Q I Q I I I I U U Y Y Y Y T T T T R R R G H H H H l 0 d / F D _ 3 ", " O c q ! W W W W Q Q Q Q I I I I U U Y Y Y Y T T T T R R G G H H H H l m d / ^ ` ` j . ", " O x q ! W W W W Q Q I Q I I I I U U Y Y Y Y Y T T T R R R G G H H H l m s ( ^ ' ] h . ", " O x q & W W W W [ [ [ { { I I I U U Y Y Y Y T T T T R R G G H H H H l n s } D S S j . ", " O c q % W W [ | ....... .X.{ I U U Y Y Y Y Y T T T R R R G H H H H l n o.} _ C / j . ", " O c q % W O.+.@.k o o o @ #.$.{ U U Y Y Y Y T T T T R R G G G H H H l m a A ` / / j o ", " O c 0 & W %.&.*.=.=.o =.+ *.-.;.{ U Y Y Y Y Y T T T R R R G H H H H > :.a >.] } } E o ", " O c q % [ ,.<.=.=.=.o =.o o o 1.2.U Y Y Y Y T T T T R R G G G H H H 3.:.a 4.S >.4.^ o ", " O v q & [ 5.6.3 @ =.X + + o o $ +.I 7.Y Y Y Y T T T R R R G G H H H : :.p 8.S 4.9.^ . ", " O c q % O.5.0.z q.5 w.r z e.=.0.r.t.Y Y Y Y T T T T R R G G G H H H : n p 9.C V y.^ . ", " O c q % O.u.5 @.5 & * $ i.<.=.3 r.t.U Y Y Y Y T T T R R R G G H H H L :.p 9.p.V y.) . ", " O b q & %.&.0.<.a.s.d.f.s g.=.@ r.t.Y Y Y Y T T T T T R G G G H H H L b i V p.h.B D . ", " O b q % %.j.4 k.l.z.x.z.c.v.=.*.b.2.Y Y Y Y Y T T T T R R G G H H H L n u y.p.h.B ^ . ", " O c w & | n.4 m.c.x.c.s.M.v.o e.N.X.U Y Y Y T T T T T R G G G H H H L b u B./ < B ^ . ", " O v w ! +.V.$ = C.Z.A.S.D.F.=.O G. .{ Y Y Y Y T T T T R R G G H H H L b u B.H.< < ^ . ", " O b w & $.V.P t q.J.p r N q *.=.=.1.X.K.Y Y T T T T T R G G G H H H z b y B.H.< g ^ . ", " O b w * u.0.6 x n t b x x x F.=.=.w.L.P.7.Y Y T T T T R R G G H H H y v y B./ < g ) . ", " 3 b w 6 j.e.I.x N N N N x x 0 O =.o *.r.t.Y Y T T T T R G G G H H H t b y B.H.< = D . ", " O b w U.Y.5 r x x :.x x 0 r r $ o =.X -.X.7.Y T T T T R R G G H H H t b M Z H.< g T.. ", " O b b 6.o L c x x x x x x c q L X =.=.5 F.6 * @.* * * * * * * * ! & 9 c M y./ B V . ", " O c 9 e.@ x x N N x N N x N N :.& o R.=.8 :.n n n q 0 0 q w w r e r r 8 M y.p.B E. ", " k :.3.3 3.x x x x N N x N x N x 6 =.=.R.-.:.n m m 0 m q 0 w w 9 9 r 8 8 y 9.p.B >. ", " . + w 6.+ I.x x x v x x x x x x x L =.=.R.G.w n m m q q 0 q w w w r r 8 8 y 8.p.B.A ", " =.+ W.Y.5 x x N x :.x x x N N x x t =.=.=.o 3.n m 0 m 0 q w w w e r r 8 8 y >.S >.Q. ", " o G.@ X 5 x x x x v N x x x x x x 0 o =.=.=.F.a s d s K > = ( ] E.* y.g = 8.Q.1 !.X ", " . 3 & ~.^.#.q x x N b x x x x x x /.(.X =.=.+ z 8 y 8 r r r r % ] f 9.9.g g C k . ", " o O 5 f )._.`.'.n x x :.x x x x x x ].c.o =.=.[.8.] D D ) !.) !.j j } } C j R. ", ". k * J.).{.}.}.|.@ I.x x x c x x x :. X.XXXoXOXc.+X# h T.T.T.T.2 2 j C o . ", "o G.@X{.{.#X#X#X#Xv.k 3.x x x x x x 0 $X%X.X&XZ.#X X( !.3 T.T.2 F ] A } ", "o 5 {.#X#X_.#X}._.*XoX6 x x x x x x 9 C.Z.{.{.}._._. X=X` ^ ^ _ C 9.A ] j G.j !.+ . ", "o 5 Z.#X#X_._.#X_.#X-Xc x N x x x p *.k.{.}.}.#X_._._.d.C ^ j h 2 2 2 T.T.D ;XB.y.w. ", "=.5 %X}.}.}._.#X#X}.M.:X9 0 9 r @.3 o >X{.#X}.#Xl.l.].e r M p s f J E.) ` ( # h . ", "=.G.*X.X.XZ.{.}.#X}.,XXX=.=.=.R.R.R.<X>XZ.}.}.Z.1Xh.<.@ k O O 3 3 3 X R.3 . ", ". O # ~ 2X3X+X4X.X4Xk.5X6X6X6X6X6X6X5X7X&X,X4X8.] + o R. ", " =.X k @ @ S 8X9X0X2X#.# g.g.G.G.4 6.8XqXqX9X*.X =.. ", " . . =.=.3 e.G.4 !.O X o o o o o 3 + g.4 + X . "}; ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/sgiterm.xpm����������������������������������������������������0000644�0001750�0001750�00000021560�13431646201�016474� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "48 48 192 2", " c None", ". c #000000000000", "X c #10400C300820", "o c #082008200820", "O c #186118611861", "+ c #208124922081", "@ c #28A22CB228A2", "# c #410341034103", "$ c #514455554924", "% c #596559655965", "& c #618561855965", "* c #965892488E38", "= c #9E7996588E38", "- c #9E799A699658", "; c #9E79A2899658", ": c #AEBAAAAAA699", "> c #AEBAAAAA9E79", ", c #A699A6999658", "< c #9E799A698617", "1 c #9658965879E7", "2 c #514455554103", "3 c #186114511040", "4 c #104014511040", "5 c #208120812081", "6 c #38E33CF338E3", "7 c #410345144103", "8 c #71C675D671C6", "9 c #8E388A288617", "0 c #DF7DDB6CDF7D", "q c #E79DEBADDF7D", "w c #EFBEEFBEE79D", "e c #EFBEEBADE79D", "r c #E79DE79DDF7D", "t c #E79DE38DDF7D", "y c #DF7DDF7DD75C", "u c #DF7DDB6CD75C", "i c #D75CD75CCF3C", "p c #D75CD34CC71B", "a c #CF3CCB2BBEFB", "s c #C71BCB2BBEFB", "d c #BEFBC30BB6DA", "f c #B6DABAEAAEBA", "g c #B6DAB6DAA699", "h c #A699AAAA9658", "j c #A699A6998E38", "k c #965896588617", "l c #18611C711040", "z c #208120811861", "x c #20811C711861", "c c #618561856185", "v c #9E799E799E79", "b c #CF3CCB2BCF3C", "n c #FFFFFBEEF7DE", "m c #F7DEFBEEF7DE", "M c #F7DEF7DEF7DE", "N c #F7DEF7DEEFBE", "B c #EFBEF3CEEFBE", "V c #DF7DDB6CCF3C", "C c #D75CD75CC71B", "Z c #CF3CD34CC71B", "A c #B6DABAEAA699", "S c #AEBAB2CA9E79", "D c #96589A6979E7", "F c #96589A698617", "G c #20811C711040", "H c #FFFFFFFFFFFF", "J c #9E799E798E38", "K c #8E38924879E7", "L c #79E7820769A6", "P c #79E77DF76185", "I c #186118611040", "U c #C71BC71BB6DA", "Y c #8E388E388617", "T c #8617861771C6", "R c #69A669A66185", "E c #596559654924", "W c #49244D344103", "Q c #38E33CF330C2", "! c #28A22CB22081", "~ c #0000000028A2", "^ c #000000002081", "/ c #208124921861", "( c #CF3CCF3CC71B", ") c #BEFBBEFBAEBA", "_ c #79E779E771C6", "` c #618565955965", "' c #28A2249238E3", "] c #104004104103", "[ c #104000004103", "{ c #1040000038E3", "} c #0820041038E3", "| c #0820000030C2", " . c #186100005144", ".. c #104000004924", "X. c #1040082038E3", "o. c #492449245965", "O. c #0820041028A2", "+. c #2081208128A2", "@. c #30C234D330C2", "#. c #38E334D35144", "$. c #AEBAAAAAAEBA", "%. c #965896589658", "&. c #618565956185", "*. c #514455555144", "=. c #104010402081", "-. c #61855D754924", ";. c #30C234D32081", ":. c #59655D755965", ">. c #C71BC71BC71B", ",. c #A699A699A699", "<. c #965892489658", "1. c #492449244924", "2. c #71C671C671C6", "3. c #861786178617", "4. c #69A66DB669A6", "5. c #082004102081", "6. c #618565955144", "7. c #1861145130C2", "8. c #9E799A699E79", "9. c #79E779E779E7", "0. c #B6DAB2CAB6DA", "q. c #C71BC30BC71B", "w. c #30C230C238E3", "e. c #38E334D328A2", "r. c #49244D344924", "t. c #A699A289A699", "y. c #861782078617", "u. c #410341034924", "i. c #618565954924", "p. c #38E33CF328A2", "a. c #4103410328A2", "s. c #69A66DB671C6", "d. c #8E388A288E38", "f. c #D75CD34CD75C", "g. c #4103451430C2", "h. c #79E77DF779E7", "j. c #BEFBBEFBBEFB", "k. c #0820082028A2", "l. c #8E388E388E38", "z. c #4924492430C2", "x. c #49244D3438E3", "c. c #1861186128A2", "v. c #618569A65144", "b. c #38E338E328A2", "n. c #514451444103", "m. c #59655D755144", "M. c #B6DAB6DAB6DA", "N. c #69A669A65144", "B. c #69A669A669A6", "V. c #A699A2899E79", "C. c #F7DEF3CEEFBE", "Z. c #69A671C65965", "A. c #082004100820", "S. c #86177DF78617", "D. c #71C675D65965", "F. c #BEFBBAEABEFB", "G. c #596559656185", "H. c #AEBAAEBAAEBA", "J. c #71C679E76185", "K. c #51445D754924", "L. c #8617820769A6", "P. c #B6DAB2CAAEBA", "I. c #71C67DF769A6", "U. c #86178A2869A6", "Y. c #30C22CB238E3", "T. c #8617820779E7", "R. c #596561854924", "E. c #8E388A2869A6", "W. c #8E388E3879E7", "Q. c #9658924871C6", "!. c #49244D345144", "~. c #86178A2871C6", "^. c #20811C7138E3", "/. c #CF3CCB2BC71B", "(. c #30C22CB24103", "). c #38E33CF34924", "_. c #D75CD34CCF3C", "`. c #104010400820", "'. c #71C671C669A6", "]. c #71C675D66185", "[. c #79E77DF769A6", "{. c #69A671C66185", "}. c #AEBAB2CAA699", "|. c #69A66DB65965", " X c #5144514438E3", ".X c #492449244103", "XX c #38E338E330C2", "oX c #DF7DE38DD75C", "OX c #30C230C22081", "+X c #86177DF76185", "@X c #8E388A2871C6", "#X c #4103410338E3", " ", " ", " . . . . . . X . ", " . o o O + @ # $ % & & * = - - ; : > , ; < 1 2 3 . ", " . . . 4 5 6 7 8 9 9 0 q w w w e q r r t y y u i p p a s d f g h j k 2 l z x ", " . c v b n n n n n n m m M N N B w w w e e r r t y V C C Z d A S j D 1 j F 2 l G 3 ", " O H H H n n n n n n m m N N N B w w w e e r r t y V C a d g > J K L P F j 2 G z I ", " O H H n m n n n n n m M N w t Z U : , Y T R E W Q ! z O ~ ~ ^ ^ ^ ^ 9 q S E z / l ", " O H M w y ( ) > k _ ` $ ' ] ] [ { { { { } } | | | | ~ ~ ~ ~ ^ ^ ^ ^ - e S E / ! G ", " O n r R . . . .........] [ ] [ [ { { { } } | | | | | ~ ~ ~ ^ ^ ^ ^ - w g E / ! G ", " O n w & . . . . .........[ [ X.o.c O.+.@.+.O.| | | ~ ~ ~ ~ ~ ^ ^ ^ - w g E / ! z ", " O n w & . . . .........[ X.#.$.b %.@.c &.*.7 =.O.| | | ~ ~ ^ ^ ^ ^ - w g -.! ;./ ", " O n w :. . . . .......] o.%.>.,.v <.1.2.%.3.4.6 # 5.~ ~ ~ ~ ~ ^ ^ ^ v w g 6.! ;./ ", " O n w & . . . .....7.# c 3.3.c $.8.@.9.0.2.4.c 8 q.w.~ ~ ~ ^ ^ ^ ^ v w g 6.! e.;.. ", " O m w & . . . .....7.2.r.1.% @.<.t.@.y.%.*.r.$.0.0.u.~ ~ ~ ~ ^ ^ ^ v w g i.! p.a.3 ", " O n w & . . . .....] X.2.s.# # 8 d.@.% %.v f.0.t.' ~ | ~ ~ ^ ^ ^ ^ v w A i.;.g.g.z . ", " O n w & . . . ...7 7 6 4 r.h.c r.*.# 8 q.j.v &.=.k.y.l.k.~ ^ ^ ^ ^ v w A 6.;.z.x.G . ", " O n w :. . . . ...8 % 1.7 + c.c c *.y.f.0.3.7 5 *.t.>.,.' ~ ^ ^ ^ ^ v B f v.b.n.n.z . ", " O m w m. . . . ...t.M.3.# r.W x 2.l.%.,.<.1.Q 3.j.0.$.$.c.~ ^ ^ ^ ^ v w d N.g.E i.z . ", " O m w :. . . . ...8.0.3.9.:.:.:.c l.c 2.8 l.>.0 ,.h.,.0.k.~ ^ ^ ^ ^ v w d N.g.i.i.! o ", " O m w % . . . ...h.j.r.*.,.3.1.B.3.O 1.8.f.>.%.:.@.t.0.k.~ ~ ^ ^ ^ V.C.d Z.x.v.N.! A. ", " 4 m w % . . . ...S.M.d.$.>.t.3.l.%.2.9.8.$.v l.c % t.t.k.~ ^ ^ ^ ^ : C.d D.n.Z.D.! o ", " O m w m. . . . ...8 M.F.0.h.@.7 j.q.t.d.>.<.c.W G.1.t.8.k.~ ^ ^ ^ ^ H.C.U J.2 D.P ;.. ", " O m w % . . . ...*.0.8.7 + 7 $.b $.c %.b ,.*.x + *.t.l.5.~ ^ ^ ^ ^ H.C.a J.K.L L.;.. ", " O m w m. . . . ...X.r.@ 5 l.0 j.F.v + 4.q.d.&.% 6 x r.+.~ ~ ^ ^ ^ ^ P.N s I.K.L.U.b.. ", " O N w m. . . . .....] Y.%.F.<.9.0.F.@ 8 >.<.*.c c T.~ ~ ~ ~ ^ ^ ^ ^ P.N ( L R.E.W.p.. ", " O N w m. . . . .....X.G.:.% G.6 $.$.@ 9.q.c 6 8.j.F.+.~ ~ ~ ^ ^ ^ ^ P.N Z L.i.E.K ;.. ", " 4 m e :. . . . .......] 4.*.6 4.M.$.@.2.j.l.t.q.,.&.~ ~ ~ ~ ^ ^ ^ ^ P.N Z T i.Q.K ;.. ", " O m q :. . . . .........{ !.B.c 0.F.+ h.b b >.8 c.| ~ ~ ~ ~ ~ ^ ^ ^ P.N p ~.v.1 1 ;.. ", " 4 N e m. . . . .........[ } ^.h.$.F.+.G.>.M.9.k.| | | | ~ ~ ^ ^ ^ ^ /.N C ~.v.1 k ;.. ", " O m e m. . . . .........] [ ] 7.y.s.| (.8.).O.| | | ~ ~ ~ ~ ~ ^ ^ ^ _.N C ~.i.1 F b.. ", " O N q :. . . . .........[ [ [ [ { { { { } } | | | | | ~ ~ ~ ^ ^ ^ ^ f.N C ~.v.1 F p.. ", " O N q m. . . . .........[ [ [ [ [ { { { } } | | | | ~ ~ ~ ~ ~ ^ ^ ^ f.m V ~.i.1 F `.. ", " 4 N B j.$.,.t.V.%.* l.l.9 9 y.T.T.h.8 2.2.'.4.4.B.B.B.B.&.c &.c c & r m V L.i.K L . ", " O m m M N N N M M N N N N N N C.C.N N N B B B w B w w w w e e q r r t y V L.R.K ]. ", " 4 N N N N N N N N M N M N N N B N C.C.B C.B N w w w w w w e e q r t y V i [.R.W.{. ", " O M N N N N N N N N N N N N N C.C.B C.B C.B B w B w w w e e q q r r y u i J.R.~.` ", " A.9 l.l.l.d.,.U ( ( Z C V u t r q e w w w w w w w w w w e q q q r t y u i Z.n.Z.n. ", " 4 a U d f g }.> g C y Z s a U d ) g A A > , J m.x.].|.[.k < J. X2 @.X ", " X > V.: P.d s s u y i Z ( C C i u i u r t r t 6.x.j I.P k k E x . ", " . .XQ XXe.XX@.e.E g.a.p.b.b.b.b.b.b.b.b.e.e.e.z / N.|.E / A. ", ". . 2 ! ;.;.! / z G 3 `.`.`.`.3 I / E A.. ", "o . A.6 N.E z.e.! / z l `.`.`.3 l ! x.` N. ", "o A.@.v ( A L.j > > > j U.N.n.b.;.;.;.a.E [.|.x./ XX/ e.+ . ", "o 4.q B w w q y y oXr q t Z S L E p.OX/ G I 3 3 `.`.p.+X@XL.#X ", "A. *.4.j.b b r N C.w C.w w w w q q t V s g , W.].b.g.v.#XO . ", "A. . . A.4 5 / c.z + x x O O O O 4 3 X A.4 . ", ". "}; ������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/timer.xpm������������������������������������������������������0000644�0001750�0001750�00000022227�13431646201�016143� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "48 48 205 2", " c #30C230C230C2", ". c #104014511040", "X c #EFBEEFBEEFBE", "o c #30C234D330C2", "O c #38E334D330C2", "+ c #38E33CF338E3", "@ c #38E3410338E3", "# c #410341034103", "$ c #410345144103", "% c #38E338E338E3", "& c #30C230C228A2", "* c #8E3875D65965", "= c #410338E330C2", "- c #41033CF330C2", "; c #59654D344103", ": c #69A655554103", "> c #30C22CB228A2", ", c #492449244103", "< c #618559654924", "1 c #596555554103", "2 c #28A22CB228A2", "3 c #492451444924", "4 c #49244D344924", "5 c #5144492438E3", "6 c #28A228A228A2", "7 c #186145141861", "8 c #4924451438E3", "9 c #410338E328A2", "0 c #59654D3438E3", "q c #596555554924", "w c #20811C711861", "e c #28A234D328A2", "r c #38E334D328A2", "t c #861775D65965", "y c #492455555144", "u c #186118611040", "i c #186149241861", "p c #492449244924", "a c #514455555144", "s c #59655D755144", "d c #69A661855144", "f c #28A224922081", "g c #71C665955144", "h c #514459655144", "j c #5144451430C2", "k c #71C65D754103", "l c #186138E31861", "z c #79E769A65144", "x c #51443CF330C2", "c c #8E3871C65144", "v c #618565955965", "b c #69A66DB66185", "n c #618569A66185", "m c #618565956185", "M c #596561855965", "N c #596559654924", "B c #71C669A65965", "V c #208120812081", "C c #186128A21861", "Z c #596559655144", "A c #30C22CB22081", "S c #5965451430C2", "D c #79E761854924", "F c #9E798E3871C6", "G c #79E779E769A6", "H c #71C679E769A6", "J c #69A671C669A6", "K c #69A671C66185", "L c #514451444924", "P c #186124921861", "I c #59655D755965", "U c #71C675D669A6", "Y c #9658820769A6", "T c #79E7820771C6", "R c #69A665955965", "E c #208120811861", "W c #186120811040", "Q c #71C671C66185", "! c #69A65D754924", "~ c #61855D755965", "^ c #69A66DB669A6", "/ c #79E779E771C6", "( c #618555554924", ") c #79E76DB65965", "_ c #69A659654103", "` c #6185514438E3", "' c #6185492438E3", "] c #861779E769A6", "[ c #69A665956185", "{ c #79E77DF779E7", "} c #8E388E388617", "| c #8E386DB64924", " . c #861765954924", ".. c #61855D755144", "X. c #49243CF330C2", "o. c #61854D3438E3", "O. c #86176DB65144", "+. c #861779E76185", "@. c #71C66DB66185", "#. c #8617820779E7", "$. c #AEBA924869A6", "%. c #8E388A288617", "&. c #104010401040", "*. c #BEFB965869A6", "=. c #A69982075965", "-. c #71C65D754924", ";. c #8617861779E7", ":. c #8E3892488E38", ">. c #79E782078617", ",. c #61856DB669A6", "<. c #596565956185", "1. c #596561856185", "2. c #514459655965", "3. c #861769A64924", "4. c #965896588E38", "5. c #9E799A699658", "6. c #A699965871C6", "7. c #9E7982076185", "8. c #96588E388617", "9. c #104018611040", "0. c #D75CB2CA8617", "q. c #965879E75965", "w. c #A6999E798617", "e. c #B6DABEFBBEFB", "r. c #A699AEBAA699", "t. c #A699A6999E79", "y. c #A699A6999658", "u. c #8E387DF769A6", "i. c #C71BCB2BBEFB", "p. c #AEBAB6DAB6DA", "a. c #69A675D671C6", "s. c #492451445144", "d. c #410349244924", "f. c #410345144924", "g. c #69A671C671C6", "h. c #514455555965", "j. c #8E3896588617", "k. c #D75CD75CD75C", "l. c #9E79A289A699", "z. c #71C675D671C6", "x. c #71C679E779E7", "c. c #C71BC30BB6DA", "v. c #618569A669A6", "b. c #59655D756185", "n. c #A6998E3869A6", "m. c #B6DABAEAB6DA", "M. c #B6DABAEAAEBA", "N. c #4103514438E3", "B. c #28A230C230C2", "V. c #BEFBC71BBEFB", "C. c #BEFBC30BB6DA", "Z. c #492461854924", "A. c #AEBAB2CAAEBA", "S. c #514469A65144", "D. c #69A679E771C6", "F. c #492459654924", "G. c #AEBAB6DAA699", "H. c #38E330C228A2", "J. c #A699AAAA9E79", "K. c #596579E75965", "L. c #9E79A2898E38", "P. c #30C2555528A2", "I. c #28A220812081", "U. c #30C228A21861", "Y. c #86177DF779E7", "T. c #596555555144", "R. c #28A228A22081", "E. c #EFBEDF7DBEFB", "W. c #F7DEE79DCF3C", "Q. c #DF7DCB2B9658", "!. c #B6DABEFBB6DA", "~. c #9E79A2899E79", "^. c #EFBEE38DC71B", "/. c #B6DAB6DAAEBA", "(. c #B6DAC30BB6DA", "). c #51443CF328A2", "_. c #49243CF328A2", "`. c #5965451428A2", "'. c #B6DAB2CAAEBA", "]. c #492428A22081", "[. c #51442CB228A2", "{. c #AEBAB2CAA699", "}. c #8E3851444103", "|. c #30C224921861", " X c #38E32CB21861", ".X c #410330C21861", "XX c #492434D32081", "oX c #514438E32081", "OX c #492438E32081", "+X c #8617596528A2", "@X c #410330C22081", "#X c #59653CF32081", "$X c #6185451428A2", "%X c #79E7555528A2", "&X c #71C64D3428A2", "*X c #596541032081", "=X c #69A6492428A2", "-X c #8E38820769A6", ";X c #71C661854924", ":X c #79E7596528A2", ">X c #79E74D3428A2", ",X c #71C6514428A2", "<X c #AEBAAEBAA699", "1X c #9E79A2899658", "2X c #8617659530C2", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X ", ". o O O o O + @ # $ $ $ $ $ $ # # $ $ # # @ % & * @ @ + % % % O O O = & - ; : O = % > O % X ", ". o O o % O % % + # $ , , , , , $ , $ # # # = < # @ @ o % % @ # @ @ @ $ O < + > = $ O O X ", ". O O % o + @ # $ # + # # , , , , # % # $ , - 1 , , $ , $ $ $ $ # % # # $ 1 % $ # + + % X ", ". 2 o O % % o + @ + @ # # $ # $ , 3 3 4 , 4 4 5 5 4 4 4 , , # $ + % # # # 1 < $ $ $ # $ # X ", ". 2 6 7 o % % % O # $ $ , , 4 4 , $ $ , O 8 9 8 < 0 ; , , 4 4 4 4 4 4 4 4 $ q 4 , , , $ $ X ", ". 2 w e o O % % % # $ $ , 4 4 3 3 3 6 r , 4 # $ , 0 t 3 3 y 3 3 3 3 3 3 4 < 4 3 4 4 4 4 X ", ". 6 u i O O % + + % $ $ $ p 4 4 3 # 5 a a $ ; 1 a a 0 s a a a 3 $ $ 4 + 1 d y 3 y 3 3 3 X ", ". f . i e o % % + + % # $ , 3 3 3 a g h = f j k 8 a 8 < $ # # a 3 3 a h 4 d h h a a a a X ", ". f . l e 2 o o O % + # # , 4 3 a h h z s = 8 x k c v 5 b n n m m v M M M N B M M h 3 a 4 X ", ". f V C 6 2 2 o % % # $ 4 3 a a Z M v v Z % A S D F G H H H J H K b v h L N < 4 4 4 a Z M X ", ". P V C f 6 2 2 % @ $ , 4 a h I M v b K U J $ k Y H U H b Z Z H Z h T v N v R G a Z a 4 4 X ", ". f E W f 6 6 2 o % # $ 4 a h I v n K K Q B R j k c ! 1 ~ ^ / / J T U b M $ 9 ( ) H J H H v X ", ". V f C V f 6 2 O + $ 4 L h s v v < _ : : : ` ' : : : : ` 0 ! ] [ [ U { } } = D k R a b ^ v X ", ". l P W 7 7 6 2 % @ $ 4 a Z Z ! | .: < ..v I I h I 3 , - - X.o.O.+.@.R v #.s ( F $.+.%.%.%.X ", ". &.. W 7 f 6 2 % # 4 3 a ( *.=.-.;.:.>.,.<.1.I Z ^ 1.1.2.p % & S 3.* 4.5.5.5.g Y 4.6.7.8.5.X ", ". w w 9.l 7 2 2 o % # 4 4 D 0.q.w.e.:.Z m ,.,.,.2 , @ ,.,.,.<.I 4 9 -.| F r.t.] c t.5.y.$.u.X ", ". O V W P 6 2 o = # $ D 0.7.i.p.a.,.s.d. ,.,.o f.h J J y p g.g.h. > k 3.F r.j. .y.t.y.< D X ", ". } C 6 2 > o % - j *.q.k.l.z.J g.s.4 @ <.I 2.2.n h.<.a 4 x.x.,.I & -.3.F :.-.O.y.r.+.` X ", ". t.T e 6 2 o % + r c -.c.:.1.s.h.a ,.n 1.m ,.J g.T J <.y v.x.,.v.b.4 6 - D c R g ! n.4.] k X ", ". m.M.N. 2 o % r x ` u.5.a.v.w d.B.<.v.,.m v.,.a.a.a.a.a.2.n y h.p <.f.f ` .* ..< * $.O.c X ", ". V.C.Z.;. O + A j o.z.a.J v.p a h.,.,.,.<.M <.n ,.,.z.x.x.2.v.p ,.J <.2 9 : | ) a N _ q.z X ", ". A.V.S.m.:.o % = A 9 < m a.g.g.J g.,.g.g.J J J a.D.x.x.x.x.x.a.h a.a.a.,.% > ` k * , , O $ s X ", ". a U F.G.V.:.% & A H.( I ,.s.b.f.g.J g.g.a.a.a.,.,.x.D.a.a.a.a.y J d.y ,.d.6 o.: | 8.U } J.J.X ", ". Z a e K.m.V.} f A H.N Z I h.1.@ x.a.a.a.a.z.x.d. p # f.h.v.1.y ,.<.% 2.# > o.` .L.t.j.G b X ", ". Z Z V P.h 4.5.I.U.A < m v.,.<.a.x.x.x.x.x.D.a.a.y o 2.b.y @ f B.2.1.s.v.y r ` : .u.s ~ [ #.X ", ". Z Z . i h a 4 I.f I.! v.m ,.g.,.a.a.a.a.a.a.,.I I p 6 b.,.,.b.a ,.,.,.,.y 8 : k D F Y.5.t.4.X ", ". Z L 9.i F.a q E f I.( m ,.<.p , p a.a.a.,.M <.y y 2.@ 2 1.,.a ,.% ,.,.a.4 ` : D .w.5./ ~ [ X ", ". Z T.% N.h a a f I.A 9 @.,.I @ d.% J g.J h.2.,.1.I v.y d.% d.v.h.2 2.,.>.T.k : 3.| F 8 , [ / X ", ". L Z h T.a a L > E A f ! ,.I b.1.m ,.h.m 1.n ,.p m ,.n s.y 6 # J y <.n g.O.k D =.n.] @.} 5.5.X ", ". Z T.Z Z a a a # u R.& A ) g.g.v.,.I @ I 1.,.,.f.v.,.1.f.d.@ p 1.g.a.{ u.c _ n.*.6.3 4 Z b #.X ", ". Z Z Z T.a a a 4 6 E & H.r Q a.g.,.J a.y 2.,.M ,.,.y p 1.% <.v.a.a.] q.k q.E.$.+.o 2 % o % X ", ". r.^ T.T.a a a L 4 . f & H.r ) a.,.I I ,.a.<.,.y <.1.a ,.,.h.,.a.m g O._ c W.Q.6.q $ $ , 3 X ", ". m.!.~.b a a a a 4 4 u f & 9 > ( Q [ ,.J ,.,.<.y <.m ,.,.J n v ..: k ` D E.^.6.! $ $ , , 4 4 X ", ". m.m.m.!.5.v a a 4 + a w I.& 9 & r 0 R J ,.,.,...n ,.J J U g o.o.0 S k 0.Q.$.z # # # % # # 2 X ", ". /.M.m.m.(.m.5.v % V O M 6 f A & H.H.r X.0 1 ( < < ! : 0 S S S j 0 k =.n.7.z % % + % 6 6 6 > X ", ". /.M.M.m.!.(.(.(.5.% V 2 n a 2 R.A A H.H.H.9 9 X.).).).)._.S S o.k k -.* < % % % % + 2 6 % v X ", ". /./.M.m.m.!.(.V.V.V.T 2 f , H Z % R.A A H.H.9 9 _._.).j `.' ' ' o.k ! 8 o o O % % + # b g X ", ". /./././.'././.m.V.V.V.(.J 2 2 3 U #.b 1 - H.H.9 9 _.).).j j j S 0 - 2 > 6 ].[.' x ].x : ( X ", ". '././.{.@.#.[ 4.A.V.V.V.i.m.J 2 , v / ;.4.;.G R 5 9 9 r - r > f f 6 2 2 E x }.[.9 & H.U.|.X ", ". {.'././.} 8.U #.#.(.V.V.V.i.i.m.U O f o $ h K H T U $ f f I.V V V f f 6 R.f f X X|.|..X X.XX ", ". {.{./././.t.A.m.J.m.V.V.V.i.i.i.i.A.{ $ f f # $ # f V V V V f A U.|.|. X XXXoX XU. X XOXOX+XX ", ". {.{.'.'./././.m.m.m.(.V.V.V.i.i.i.i.i.A.%.I I 3 O V I.f U. X X@XXXoXoXXXoX#X#X$XoX%X&X#XXXoXX ", ". r.{.{.'./././.M.m.m.(.(.V.V.V.i.i.i.i.i.'.] z ` oXXX@X X X@XXXXXoX*X=X%XXX$X%X XOXoX%X+X%X+XX ", ". r.{.{.{.'./././.M.m.m.(.C.V.V.M.L.-X;X` *X#X*X*X*X*XOXOX*X$X=X*XOX=X&X%X:X&X+X>X&X%XoX=X$X$XX ", ". r.r.{.{.{.'./.5.t.'.'.4.-X;X=XoX#XoXoX#X*XoX*XOX*X,X%X%XOX%X%X@XoXOX=X%X+X:X&X$X#X=X$X>X%X+XX ", ". J.r.r.t.<X1XB ! `.`.oXoXoX*X#XoXoXoX#XXX=X>X=XoX@X:X+X:X:X:X2X:X:X>XOX$X#X#X&X>X>X&X,X=X=X=XX ", "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 X X X X X X X X X X X X X X X X X X X X "}; �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/Jabber.png�����������������������������������������������������0000644�0001750�0001750�00000021014�13431646201�016161� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq���gAMA�� a���bKGD������ pHYs�� �� ���tIME  . c�� �IDATxuْeYr>!"rʬ@"!B2Wʌw]O~ALMh�)M@B"#ƽ,("cqܷrkKWd)MChD+ۄ,{JKQj ٔMH{9>10qW>͝t1p P(`@ @#�F@��@$"�hJ1)SqmsBDa0R.g0$ %\1Ҋ{) ` n$ `2`!0 (XnU JI0ATA e&R�PPUF|02-r #4CIs<DW)9OV$+i`6 >܌*��#I^$p`Lr0I�EB~ NX + !�}1DDCaCy)7\GD`ŋI'�F�]y܉BՍ/:=RMMDTwBCwtEvP$HQaڨ5(EaOGBQf,SNHy&JV�N4 tRf⠑4Yz#6/�\N쏣Hd�LRH!B==z! *82@@` Q"dƄegLAˀGd�LYHO "� $�S?5Ϲr 6YHTB !9WwpAPHPwCcFE`x `:T"魱hLÆ1`Nx�{FhEFC`Djr@DwY \�q2f(=2DYdi';HXjxCIJ3.� $)ݙ & k\zŀPWX�$:$fnXBH3LeR2%M!τ t^ i�8VÅ ȋP+HP(@((Kh#~@@`H'E)�lEȵx?'%Ha{8i`b Eгad8l��6&FJSAY=U*IK fyB c$cDQ$WH# TQ C Y M?"l L)tC6&f[ \2`#ęRє gҦ)@E2f(*([ ` +xP!P�I@ ( ̀9Ճ%Ͳ)A3ŠK4yAakty�| ]o {oH\R[d['#d1>) �Vf@ PL3Y6,c-d^ (E0R/7d0}|� 'eZ.Xxlڟ_˯k'+o,ïݣ^,1g.Y�DaKB)4!t{eV֚ARaf$%g T$`q8Iz FAP=QRM蘭rYw/g~O` lo Onm 6v2Dcl#e%=V@Pu|fF9㛷$ĵ]6hH/f趃6<Fxq`b3Ip:2px80ClknC̀< 9=$w D (=}GkP`n t kJP/fp3p~Sz &!S&İb܎ݏ8pAf1^<.&'8sGˆ,Ŋ{ )& q;>Bp-2Y `")`n; f] C)gm1Չ r9Ma *\K_az#C(L *0'-D721BN]#"`w ,@juY% $|ovW4R4mʄFcBo@:R'{/;_ j9 6;9 A_ ])3 `qeDo0׌^!z2}Ej'L0k͵A/='`ܒqol�Gqz0`[9t2FZ>ezoű&TcrF,IdFf4A>!H/"u""|Ӎ 4<vSwA+L�*i`Bkt֨CV x2!ChTAP$H;Gl[فɵvJ@[V.S >3 0=yL[Ag�S`^[0@|cTI ^uO 5�}W'(ƌ^2 L)Nb0txFtP�}fLYANBB0`@PLhk 7?XY{$&J>!Ș ֤x@6âe"҇qC& VgP@ bY3vBx7?dٚ"�JJ +Rr$\A, 5>LZpG" +ȥA"dOQLj"Af@kt((%LYY)> !a5 P:i (Ȓ S4PLCBHRvd2N]BXF1H+�\r 0FBN ʒ$w Jfµ$ "j6i=NT�*& x1HRiD&N\DvP[5Z)@JKȑHt6s: 5 /N0 5K;!* xt+}N�$-S֪TAGHCDE2A2iA L5uZZ(ӆ憔3@,F *D$`PA$a#D%0G>hԻD&Ԛ+yJI=8#�[vV2ጒ0  D0 -U.s mwF32hjv 0}zsT!Zr脉^(8}֫;E?4�"XuSfad N ; X8X:>tf$*jfi9E%dSZ`&$TCVX̨EK(`K!2\z B^b%-6l “'6υ< ow6HUl6'9*9`١ b֊A y(0j!Mb2`Gt4(+U0g;fMfco49^Fީ7&OGM&`az UXzB FRT!pu5 !V+Zj9xlV)ltk566@5gb9ڲZ&f%gh+;/-\D9cibAos>�m!u8D/ XjvJ<teV%jQ3fJDf�6QMB#J�1s,l޴aKZg0CL FcP (�/�,;{/veZ|C P^ `1``^6!bF-\-518G@e[USu"` UB( 3D\wqcax$,nELDӊC2q0<#އ8 ]ڊX:`c`0t %JLlQ9[YYO F"͙JM-PX -@Ê�VNQCldPN*1 [`U?eLPC}X!e[�ǯ@ Ջ'D8;هb: Ve;ҎeQY3|l +), J*r0 F߶i;D)nn0zζ~!?Ɵn% dI=@U=`$c( ,R?WCʺ(s$vX DYkU%BE 1vNЙY6 H F[4d|J@p1p-0+ sW [bߠ7tE Wt%Vk9BIRXDwP=]0.F$ k.r``&IQetD#{  ٵ hjl@e,0 3p$No,R쀫K`ʈnc`س"LIєlm\rwX`V ;>` eSa-A%#Y2 cfLIqMWO6)0FSf6 nFD,kߌ r{@O$Hq`z/JXnoX`VƯT"ݢ!$m%LҍBZlH"\PX׏Q)/d!t 4+H`r~% ئ>`;@B5T2L.5f!n_+Nv3.˩,YZ+IwJ$݈azGKXuGwwC %mӰ {7!]-6X1;]5  ʈ}ԗ<~F(!dZ3<g=3__K[tK;ߒˁ6e.б6JY(ҁG"@w $+?CIѬy>d}n9 T`P)KّrC;L5p<� w4eA6aVgPu>a猻h0l|0r3.#Ez;]Sdb Y(`d'S�K`[n4ZЖqaӂANY7eɲ|ء + 0\�g%Z&EryV=| /oWMP=�ˉd=:uK%ItmX'$JBKgO7   !RhYRܖxsiiț]i|tAܪ7w`VB=r#dyؚ8boUOgԻy6y1qۭ{NLl Ò�8WT !VHHnE)r({k/ՔLi1J8۷BMvS=q,F><F|D6\�=.jT6D;wq>mwׯts|k,eS]f(-vkG0,qR\s(Z ,HdbZW\FHHB4�CA ҂CfCVMg aSui%?.}MlفΚer<8Frhsi7y%q,%O^L,-g(Z 9,R oj ua.<R Ȓ2! $"fffMaTka#N=6!ӆـLv:;HG#mʣ"6rw_i>^2P# sJсGzyiLY@YʅqPRAS4<@R2SRA!)(fZXPURs!;{ů6;n}!3S")BxUK !z~Zt_Ƿt{]2bF9h.g6 : E~rJ06blt[`iJ5R]dC"a@,U T@ZGX[۔x lPN۬䐔 -JXۻS}i~8TFa2΃ki1kyb[HQK+J$U:@F.0vmV/4!PF Ѥ0y5S).>pr?}ƞXB<=v1Vt) 2ȷwYVO_~Uo>~yso/fFT532b%,[Pfфx%$  GX~U [YJL&#S]uQ *误cOr>!a|03e)_}uxWgm;ֻ߻߾yͯn6ͩL>h1Bkb6V5fseJaO"s\#]'h 0jT-,�Z0ʲ4X-f@1 Rx/?x?}s3Sӿ?y>^2-_ן=WuF⦡lqxmoo;jQln-lȌUE4{ jב3lmd]$QA$�&ʂlaAe#T c=}~_}ߎCu;ɷsYs0 ?Zy|ߝg<G/;z{xp՛?o?[o l!.)PfB*PCM_}L0܃܁aI#A# OARhL2ѝ0sE(6={h +7wo�v3s<o{Ώ`sW/+o?`oosEehN>J`A@2(9 (Ag=b0ӌfJEQ70&g a0hY2 ؛Z%쬮�}5~>?> w^ gh D1+t_=wyvZ+CHYa $/)qb �KH`,N\+ *d,ѼxC´exhwVd.@)H4�8V\u@qݔߋaɓ vu3G%p&jUI&*;:fQP@HI} =4KqJ1v)XBl>h Xmƒ0ɔ9ϱy򯖏~9.3U~6/?/%󌟚 ,ୄ?Oix? 7?śRb6yNÙC%� dхZ#�e"!Ha&G3,!x^`#h.IA;TOuq9_y&~tdzT/^mpw1/t{=GnG˛o߾h-#F撍JhPM�m%$E]vG)%uHzQ{6L KY$ ?dyE\!ϧI?G?gzg/^ph~fۿgnqx,w5~U_z[Y,P@p%R b h4֛f) q-w # ~MBi;Whƻ_L8\tyӼ;?v;όx l;swuOr?_z5a4OSww'{zԩ6#K7ᾀ$a a&01ʲ J 7DZ#!գ1!fk�Ta]'@#s^ɷ/^_vWo</1M~G ~?g&?Sw{٧aÏ?Ow<>J-/cYԂBhB+vH#M'72ZȄ;4V+Kڃ}z QwⶃRЬI#(e?.pyq/^~4KgϞ-8/^�@uqq?t}}Z^^\n../s/~bF+29۶f=rp`aZT@<z3r3 džԛ='/7L#=y۽HM.my^N��}IDAT>}'Ox'O0NIx|чy:s^!\񋫫[aRVŮ7/uY߭2,~J.*||g6o"w�Fi )%^|kqx<K[knֺ\GfַoO<]WЏc )y4EׯӔɷǗX4*KY욲�<Zs �0 n\vɣ:)y[1^i +!Zeyw> eX>ٳ=H~'@u^j-K13l4Yw2Íu$ۯkGM>+]t����IENDB`��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/Mouth.png������������������������������������������������������0000644�0001750�0001750�00000015445�13431646201�016103� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq���gAMA�� a���bKGD������ pHYs�� �� ���tIMEG{��IDATxkv#َ?<N2)xa]HF�̬6RJIRb� }׬̲ܲ*PUQEp2$ qPdAƤԘ�qW6T}ߙ B l3 0MaPR'J&�d ̬Ȋ̌Ϩx&BJ 3[[ J QBU�,* Z9P<v2aJRZ AuGd$H|&B2*�*$)ZbZSfUIUTɴY_d !A}w)~2%r Z* Ef* ='ƃP�q's ̨v  qp e\B%F" $HT%%VrdCA*I�^M RP_C7r@QQiY֫ jvN|PNAaG3nd(P[pLyf&W R &*TI"L.MQ/TRRp| oIN%_@ޫfg"m(>`N xh AU Qy)SkG Ee2,h*(AFY͠,-LE|Y#�AfF32UoR B-ᛪ\)Fժ)U@ׂu("*ZEfsґ ER%ml*CT U쳺8N+s*)JK9G˄ȗ!gHPuEV;*߄.7R%tFVadG23<أ8\'m tw(E*IQT RIHBD*$0Ĥ*L?U D]P.@BqAJU">g*SČ**)0g?w#L$iY`t75TՕ%թQ&RlS(L(!e"GQʺ�ÆxUJSS5!R*[/�UT$eQU111Ė*d"떮%(-XL:" ," U)@27UW{oq6?ÏYۡnUiX!VIu 8+SunK%d q jwѬ U]- USI1;D J 3`21Rr -uIJ8RNL+֎uJV6p(s<"IAeG#o9S,ɾĪ"B0D]WQ B#-Ub"Zj�PE.x!' ZtT "dt&ő|0c g0O=,`AdBBwsoZj"b{QfGҨS!".)ZNYP{ \}y)NQPQyp?y<TDC[UqC;LUG {3IKCb $ 0R,3֌nUv}(3Vp'dIWWuc phA&{׃OQNӸ>'U f QEUjl` "#@pr&biw)+ (I R%RTĕzFE0̙#?z<xwm pu(ʋYT@)XE?TwT #6^uaVEpLal"U]ߤіwx:$pG7 Ym *()1uyƸ^0SB3]8[hPhDDG & #!sV"STLR"D0\:}2A*F翫g|~ޑ ܕLL# *О2լER*+ˠ'{L٘ 28W%Y|bL Ă]24Ls<c߹]K_0x*LE]*8pᩪ/Js'b+As'V1 `"8QU@Ê>4'e%ps||=|6"ȃ1Eh,�A]F#n`YL;_uS#y8Φ;lC2D`U]B;WWd@Vk]4"#*f$<x<wNE~q cP<|ި7LHEfwm%3`*Id2ߜ.o_8IqQaB5~:={>X28d?# f\3zA£ˍ̀޹9pݰ]<v?>w"͕;?Ozps CkDJ 9%#fSFj] DCɪ YMZfg2gR ?|}}b|ܿ/'?<c/߿Vɡ8u|<;;xn 1 @c,8a jm .!B$bfv19SY|;G ݮ sۿ?wo.Dx}>?||>�\+G emS^}쉺[ݜ{*(YHO`5[QdwЯffʄօQ륡tgrw*w{F?䈨4r+rݸ6{}lkh,!i=�C(T$zR7T)mV+׫TYAD1a}xe1D 3ٸL2XNg ҏYm s1P7 _Dmc 6Sfh 'x*I*iR(Q]xaN\JllD=覧]L^�6p Rf)bEhAR 놚2qs1S6wTqQ]7_PRL8%}sdX98yc?>^]z}U "E]ɞ/"2Nb| KX5%֚Ȧh5gO\ZWhVcɱH܈ f1K bZ Dɚ?ӁDVMOi>Pl҅ v2|0rST掩v2!RTuӂuc눘1ȥJ5䐈*1sBnE=|fRVWjP#͚IT13L sCEyt}54#(e{ZJ%!,`DzXvimFKӇ(ڤ":TR{ )rS) =f~f4Zm[Hѐ F1ռE?O],g)K`mP]66s-eA!ٹ YasͲ9GbRO!HR6Ы#ە1\0 lb#'uLL,RdreCccץEyMvd-:|Wf#2Ulg=f;5;" êb!($q0p|](y@ z֘-cv{2F\7Bnnco/IoԔ 0fD=+ɜd+''~\4WyL_/sTfⶍ: w8s69ф&5A8V>Քۆ^6ysdN *qp7$ +Cg@YlrKZ9W@#x2|C?*8$u2m9<'33&u߻�6' ̂|&Cpͱ뭋7}A]u+J$ki;|?hņ k|}GG;YTޞApT-Rgj la5t>k.Oï?fHW" #"l\o( tEƋxl'2`D'XqF}x<}b5g+A}q<&&-D͗|!ǁGݟ rFt.?87G 8O=pzmz_Z7 K!rRR̜ MmZ`>c'}yBKWx\䜄bpzJDt*83FSc\Po|IYi0o ˭[ؼEu95Q{fU!UlE C8Gwe8H3*Ew+sZՍh˽'X"l-G`Ñmnn~oko\.VV[S5|`#HK2a'mC Q;rL?]n[m<c'܏h5r(3c2RŶF&u]u# 9׷+c~]'7Rc-wi~u3eF&TS۵i%Uj85݈ΜǓN=OҵdnÈC0.6V7z_uC}zv0ƅ2ss޾_nekU20 7۶OP5ԅx3b%R,)֛K."Q)zRbゎoCOy<  "cMc c]ɶ]] 'Y'7uc&G32Fk ҒtRg5xJ"TLNDMIbH82y%23Uwxߑ0x%\.-D@N.KmCU "r>w 6nnmö6܆p5WTF KZ@dGe?Mt5`Pz}G|}N6Ud y掋`ݐɷooƜ}?8;9Uۅoo\. .-p Υ-9W�9jZlK,'ךKFR3<1[KP=Z zK5Lx?>?32e|{;vA6CQ[O<ڮ>WAf֟gZ*B,dF5JYi֫o(#"wly-Rydr پЋl 69-ֵk?'e_r of6⣰ J{-ٔAy`m{v[`&Ԫ.O10T!ma*|۸}۸^o[;ku [i-je/Ɵ?9Pցʤ᩺šѝ4u@1X&k( r.̽O6j ^.ۚV<ACh)td0kr@;[MA.<KyɋYbuj,&N57M |0Y$N譯^6ml kȼ]Yl z kIKD azMnD!DWvS9@S9CY"zJlIwoQHKG ="0aivU|z!F,'03ͩ&a Q1= ]Nu3"p~?̺E/V83D }P &jHN&FKdv>ZONYIya!Do*;ŀ֦Pm-m F_pƊY}Z^/+#!DkǭZ2QQ]8;bK 1le<n t*|sh,P@G zj43<\܅FQgSܠiXAnEsf*ݸޮ,խrFk/J)5-sI @L^s+mݢ"jYllr!+OT N$n >mdP顗Ռ.ЭFU.E:3DTKDz{6?okN KZ@'ؐDkwVVź "-[ *RFq>zY+ʬ(=9U;a-O/}^BS"* PW-1aIْ0}[cGbl@ѻ\'VG4^W~߾VqXZ [XX<T[PnȬW6P9^;';*{-,k,7i#͹:.eH/B&Lz׼Yv"X`?|&//ꄰ@ҁ:i7bvi"+�ri5Kұyb!|d6�}?p>NP]a÷-%q?+LQ}ӄ$ 8x}heDl-V5L$透egn`Ѕuk:`xs3~?0VXe Ĺ0�T/[焵"?xWƹs}`3>zdW_pEK'*}4Kwu"~݃CZzIn ~CQ%8_)@sNfzu9W>/ͦgyoY12/[:sS'٢J?V kaZw߯o5 X_?3~XϝZ2{=](ܓ=]%EnblDk_W_/猂=]!-O9xn2M`ݮ|l7>US0фj%hΟ%'k~̎y����IENDB`���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/Real.png�������������������������������������������������������0000644�0001750�0001750�00000007406�13431646201�015670� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq���gAMA�� a���bKGD������ pHYs�� �� d_���tIME 4_��IDATx]luS>lҌ,eAZTZX@BPTc ҦCO}~ E\[NL;iMi޹;+҉%Khp0;;3{g5(�#M:%5j`wjN>Zȸ&s$*ޭu5jUJP]G'�~dJ=T =h|e�6%Т <QUޖHG[q/7EUeː!$Ƚ/$>V#Y*KB0/H@ HaGy<lLqmMuP37�=4:aqh!hAX~o] P,@5{ (Q8yZM ׷0\iAdڿZ#P\y@SqLVKuN%`&ec1 ,ޢaI py%E`H9/D2_$rmGyd=iV/xр؃(؅8J@|zneL,r�*$Kla\C`ќi8+( &bgBvT"lv4 7/]õ1:ّc�V{Q4~4v:}tDZ|<*"(dTP�F zL_v?K!\}k~(b0@́=Qh!pnT%z6~`caگ9e]}�-lN9AdZ{M3C1zO�_T0 1v+gjרۤG{K4M'֌: 41 Gref[/gfuȻ>{Aևݷ P>1 o4VFRV~ o) '-2 B3_6{AH߻&ݣY P Ď][Yy?/qJ. 'A%T6E_YY_b7 Mɏ !q Gtb~C~η f60L4ָjBJ.^qŋuyy9jf'taaǟz+W><4I+duc>ޭ+zJb'3WZ.Kyγ^5N;wZLHOe5<oԛ̗̤Χ�:ϧLg<;;'|rٲ\pa>U~rmrĖF"Ϟ=y]H^gnn>ѝ]|_}{Zi==\VtR滳`C\-A%`oe<??e H[Fjʅ &'GRNSoZɚBa� T}1 "\N9�Bbb$i[!d=fgΜ{�/dߵ,Ul^OO_oaa檥,--xO'nb8QrMzVAy]U;ߟٳ{ߞgCyu+sA :x6pNq~h Y\\VzҥK{qAvY:?\}\J!:az #!E9|ß.Y31Yx\ 2Pf^x.:Y#J~kc: JOѡgAW\aiiS釧7/233rZFVZbp˗/@gB^L#]%<B߇F/8wuZ}ǖZ$s<o806c_~%dmzAdr蔧4/k96n8zپ6/A2i�u7*cbG)k8NkиVe 0H,@l(U"y6!As"Rmjt%y57V%<'Gm"iҬj3tjkt&8 D-TtOn^Ռ1@s\rw)U5+L opU|FBC!N^ywmW4Ǫ1"OyZ|; K1M>R8Rlmh-;;QH ..-_B;:f&ΰsw]'yؠP ( 4JT<q`"O':8oN|!Gg8#?+lq !XM-08,GaᜋK\u<<b?e�Uz~#@ Btaf Fɡ4'tf,`6>:mwt-h̴ڻLP!WZNwh@`Aaǟ:֑$*4\ N Z2D%$bAo,ƆM30}蹡f,vV6x{G _}ۘmz\'�Nz?[(hCؘ8 6r8Xđ؄-QSN<bP0olYW 0yQ>rUL? ;jqd9zLYGCsh3肿6aSs-:Ɖ?"nm@)"^cP2 B8RhZb'<%+dI"׍_8?iӻ;blk,~[;&}څu h]'( M8Q-@y){^Aluu3.xD,uk!mA�$tr6{vݥ S<EC<=Ͳx/71aIۺM tK#A'W5C">$=%6bSv9!иzU*C_ПorGT |ցM |f˦I�Z P"B *dC\+^I a;Wz*~(Nk8hODZVWeW]@@LDpkre"tzJu{M GۀG't}6np_#z7h6Io6/lu H�> Bj%A3:mZ[߳^ڭ.W*Ԍ"̨=L1#p@zJAQ_ya}[*iPG A@*]%s >UHrv�J\ǫ vDž UJ"QU1PkԪTqi!'`$d'B\�NW'@~DZ5I\�92pB}P%@H6+W~#FarU<Û߳2 $!Bg tYdCerc ~ȒGUޗ-@^'eYC>^0A/MG 7Ԡ#IT%JCLFhݓ %Zr B.p"먶O%!s6E#>(^"@4nв|rkW<>y{_JG-˽A,i2W�fY����IENDB`����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/defaultterm.tiff�����������������������������������������������0000644�0001750�0001750�00000012344�13431646201�017462� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*���� $h!B &l `4(.Rp`A 8b)R 2(@f #+HA %kD0ZKOƌ詑.E~ś+[eyؗ@s5jQF{ʤyXw{/?ʔ �QP`PA4xC(<xpS.BP"E gǎ WΝ;ƍsnݺ֍ n\;ʕ#.\̙]g߾5vZg˖6gŢ1gʴ>Mo:tA") )xI&@Q4!�7Oc @1T#a/>_b>>y^y!i^'n;kcltN#t=VcMfc5Ya Xd`&hRh$)'RH-⟌GUl|4` GLAG?~c?+Ob%≏OxKH*x{SJ%4J.<CN2C8ye}fOf!ifZ(J*lr/|142bbGuD T�j@V0PFm/>K78g3v~j<nZ[Os3g|=g!:#!?'?ę?lŀ?%Yd j� �2RbB��" HFIèR@,ngMW=f9^ҶdR?p3e$ R8 ^CF�``��{aHaap��0hP� E� r8rd': D*9:p1L Pӄkz8?,`a+j:J� � #) @^�" U�A���`�+@+  @ @(�20N\G@'u4d"i&4<H@4 8.ZƄ^l%a28o#F<,"(G5|0>c.P�`O�9$�P"�%iJbqky4%Ё62-vV�IcDX$E!JJԀhE'1qb:YRVW=h|%8G wL\! IvЊb�zj(0  DTw)¤i+R:(n3R(1L,bRDZt(Svʖ$,'It.ʏ [?Zю2M!$ &6Mk:BA=S#Bi)BڋZXP 2V:eu+U뙵җ1[e.kr60 eÑL" m<`EV7R*t(WxhYjP,ZzXԮm(Iە&Y/C6]f9ds Q?Z^q*)ߎgf@! GxO{Kme >׼*vFigf۝  ;>wjp B{\ )08/sᙉ kaTzЇFZ]>,HXj3;Foǟu`D:1NCnm~ 1L4C~ |g"!3Y Лhzߚ/snXk;q%O)W׻ChՠDvaCAG\=C a s(\J 3A{" ٩#B곭Qk1ͥck8YҺRoP X&&(#w3zP?K PqUr ୸r n9ytkÜjϵν_%x:zd!6rMr ')D#ak㟹~! #Gd %0 \3~{_s{[?mx +a/4XQx37?!²밂6ȓ$Wé4/MvPenYG;}~ <D:񇔷G5bh?}@G g{�BR x(pSC:|^8ƻ̵kyvLyFPriZ  hpO0P5pOЃS <j \u;P7Gm0f6pOv2@5! vHshIzjڀZ gpoFUa06KV`p+ |# ";�Z[g *g&wr�s_ Auhxi`\5P0vP x&MJ{зpgopנu.װt~ ``' Fh 7x%9@ 0bH88$Hā -Љti:;g7t7`w`@ Ψ nh'9A`8{XHM;�; +s{p&wX t(p/ & `sp �N8xdep0YH�x$`F߉qDCaic5 w栴oK ( pQ8r8W!$eX10Ks'HaXH4T`d ħc�Ћ0jfI`t {vxx$ OO �'KԣH4(`ӌdEK=KtI0K`vK8HLX%px#)r0(p0&HLtH PP )K8JUpGȉKxo"ȆO cN#OXnuXI$0&HTe4ivZÌH aNKͪ0wLHYLlUX%#1ؤ|7HlU@�0G\ȥ�X>?*(?t"((((xXd(N2p/P��_G?_?/p?pgp?pGp?p�?{?{askK+ sL0?0s0?0c0?080Z0y 42܅9@>0L xH KLIv-c鴩xGD ' $Kb?xg9?ZZryR'+?-! ]Т:?҇S8l]Y؁8C؄8X؀u"{#J{pUCJj�4PHꆷꂿFꅷ, 1!$g%xiZnzRۚx-K/:ƾ:˺k|8Kas8=Vخ؁*MXYP]0b[ɅƨvRh6 Zxhtx&&*暄jn&oڮ-x=R=jNv$}:l:i oI2o؅XX'wF/0J0 6Br�:Rng!!h!((YX*MX'ÉsҮ}-sҠlV}8\az!}؃>g ЀPUpMP�<A |QW| ~h8!L h^ "XQ#r6Q?W6^?hV(?h8J -^(4|ȃ83+T>Gp84H̀LQp]?;`VbAh? ȃ(Ȇ f5hIމD؆mX܄uu}XE!z!oIr5"G؁ũ*܄%Si8�}P?i"(+I�00c4HiHtwPM\]�qRN`<v`B6j�6`PjY{W4m~�:j-9΅[.ZE�J6`[`6`]LL4r .[g�uqc/'�=]$P ePqXodWEvj?yL[5@b_?@d?@$\]@ZZ@T?d2uPi:�^E0/@`ZC\,` v� ?Y@%2?%L�D@\[A]M͕9~VrLPAGmBh�p4`["l"i'h @+R?H9eQ|?rlP?P%?E&`x`& qٛˍ�/@).\&8b lh6`j(2 E @ h!B  V]pݓG7=zp߭[#9 Yر-\:ҥ#lٸ?ϟ?4Ï?tC?p! ?o P!@7^4g_hN b>R lh#FH$vت֫WSL87iҘsgyգO}Z\s޹?w\sƙ?׮ M.6m7G?ZSX?1bx…\P'J?(&F:Pi e( ?g�A8 b@A |=!}ppBl@O P 4PT $8cFU0`MT@N,I6SH1SI5H3������0�������0����������������������� ������� �"�����������������������������������*����������������R���������������/home/fatal/tiffs/defaultterm.tif�created with The GIMP����D��<������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/XChat.png������������������������������������������������������0000644�0001750�0001750�00000020706�13431646201�016012� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq���gAMA�� a���bKGD����t��� pHYs�� �� d_���tIME  7Z3d�� �IDATxy}?<{} s`۱Mq6٪nU&^v$oS-'!916 $Э3#=G?sH U]5>wۿwtvGH+ " mH5,ڝk}+,c Ab έ!~WB(J  "P}¸_ `!3J nX! /!+(BX%@& c (%¢ $(€IkhXs&wSpq_oű1XYF5o �P (2Ɓ"(0B"< Y: VYnvݨӘ-b$/3P4i1ֺq1!ƷIP� =x+:Pk)( qe %^@h%R0X BNEޓaS! CGb1NaNDwH}5Gy# XAŔB+ʒ[?HfM/\%:~ڀrs%Ԓ/ $Hgk(0 thT%-"1X_@A v#jU-d}DdhLMS<> Kc>#(Aǁ:ms(Qpxk{,vQďcWGm-=]Hςu&vVN$^z4ٽRt:.ive}P[q乗p'{5dλ�1] މO 2s`pptRDk7кuY@u-j IR!{K%Wo} 7s6iS)- nfƸ8m�`A @KG&AG<& &ĕ7b"UiΞ&nP㈉[ Zې9$a+e+f4:'HFɄ/k<0 (oSr[<|W�Xuܬ DJ|fAPrXu"27bvI5ccL=b| �~ هxyLbF ]Wu ZA.ez1A(MȏPhwB/LW+�H*`DJ RyE&qBMy0k/D홣w? c91�0$2h7]搈INρ"PAOGx6g~K4VA>Y*rl%ϧ,YkFŢ˄L` tɟ>^Jқ!0!:E?I,ذJb<0Z7 2Y, !,|;YҨPj֙5uf{*-Vf;[|*u H͸ x;en88Ja1t[TwTʇFiT|C1,N2=V'� |_=]L<^"5s˄˷PRE7T$cLrPQC!Z&sJ ]MAO復,�X ҅X1)z#uQ^l&w+UZwa]D~u7\m)a t6>#4?t5/CO;E1#;)zQJ9K'u=;O}3|O'Ξe ?p/djDH g x u! S%>0B9>hִìx6o"x?bۇhQ@ a8]9C|\2?GS ̗.opo;WYrM=S>|W+=\Eϻ1J]Rﰬ˹8^bZ5q:ϓ0ROy fHt~StXz>, %B;K}afc\&K $ڐBa|==]lG?t9^(=}} fb%, ,6S]w:k>z/|!Z֚WKUS(NP 2'@"֮V5J@VJYbAZEH'<< Vґk%?�4nϣO᠁D##hҦj`|wmx/35_\?]pa8ӨFD% H o'lQj#ҕ%SaR>p]O$TV02ϣp,�m@�tf~d) 0ۖU8j B <E4bJLc]O"Tl\2V)u\>iFm.vb#|5#4<@f&N<~F2ϳ}Ϲd٠)<^/1\1jDxoQ8U+I$h]n%qGNQչvV\.>k bMәSOQPj :[[P;iiJdٳ0bfbG{FAؒ1!N>0d,}D0B 觞eRu@ReM(q#b"*]@( V R.*4p M:ZO-sB[ �F؃L}dٗ_8%&Q$ڽZM1!1&L6T1x,@L*1> e$1 C`x1)9r)܉92w$-5+9pe�H"1h_#`6 Sg N8ϿAgFw1ZiGG%9TH0@*X1A$qڸ\t#D mČLP>V , rĂ0ƳC(C0SS晏I2W"$ җBcJ R:Տ a{?es�'g,HH (z G6$mڝBiĆ"\tK9ZmYiAhN2GG#h!!4M|RO0�ko2p[j�c ˺…;lkPD=,dM�H 4 :1MCHKӑ$@" CyJ;w$LA dPkC!) xLGy 5:Z d-VH B59M8/ TGQ� ,Vb}H%X@MO04RC`<˼JN!1AdA[E n4(C1a"!ش<TG0ʀM4[$ͮ]8/uƑ241b^j) єA#PDtSŠxx(T&eʶEevK({R"0^ 4-,{޼ Έ0 c&$ ƓHaBÛ{PNkJ: 'AF,/iSȪ<�NNDL9H)I@I̩GlBry7Ӛoc͈)14FjtBRAc@IV~,D@'!fM"" h#X{9o2QB:"K Z'Zd@KBhR dɑuh_O{?6GT\y 9!z m$,gTO͡*Z$2Phb4>FU[^܉ܸX � V%Xlrpeu|xt׃lbf|y3K yb,m AAuM`^@E"$RkoEch $qM,,:Ȑ3Ƥ!-i!Ri \B[[SPط[1IlIA]ѹYjq]ڈ !D\O t h@{4j%y¬& G-r1cJ"{ڠ^A ($K-㳾#؇׻vY(j:&#l� N0@j0ڂŻ}[ڮfPwҘXZ>2-(شa 2 Y" 7*1-4cQH\&V=, 2CH(ͿK x@хZ; k1-t]v%Bz �޵}ZevI,!Zܢ|7ڃpQ'neϱ<ӧT&4bV[)"Vttk)ШT bAlD6�/бv-aؤR\@yЉf2d׬㲏S"<; 2Ɔ\0Scnt/ǔ� b,Zғ]`= KoZ#Oq/_y.3y~cg$ňzB1<M~K;=IZ&. ^լd+#{0^znNrmd Lzsx6CS@ؤwOXBsZ Ȉ(rrMsЭ"۴*|VIs ZO[=(`#l֭Xe+,2q`{p5=}G8- 3 ijc؞Aﺚnz8JEL�g^ڋ)|r�o[h۴,Qڕ?϶ .s@)5luZ6vќڭk ۯEy1ժz3lT)oi#RɂiPXRMFF_McK72%˺sÅl;v yO 3)̦4Wk"m+qJbIt|1J{ߡPaM1d(TLɐz7[^Up S-[L ~!.pJK5Lr]2bC Dϡ_K4Z =F12;]RjsO)b8L'g;2B6З δ(vBguem [K/HzvVaRP&&BX5XE{w^Gʜ?v(Ow br8a[ ,J"qy3W r3y4effL>n2.-q=Dy`(hePX0gRiչ4BJ`q{ Yxo|j+ g$mk-|>n}mhFQuϿΖ^rM;hHZi,"B<!(ɷ Ð8nD*nmC)nc'@Iw葭Ji]ȶ.x:buXkiwggx5w(8j}agn?izgA b<0<{:!95@A~njB.dD 0c E+c;E$QL% VHCh&oĕ ׵}ut{ykgM#0Az|>wBHc-¸m(2U'!H ZrN;c\5 n �{4MQ ZbA 0 hhF$F '^&Gw.ENQ&&X_5KΩݦ,WIncszT7MN!z v 4WnWO.-k?AZo '9NOЧ&" fn Armmn4lr9'čȴ NJUHױKϘy ,k5Z;]  0&*~sw/D&S^%X(W7+Ik>W]Ho{8{I9nݿwށC Q2qJrt7*@*.$NcU0'xBC ]m1[vM._HKxR`tc>q6�^U$s'yܵ;|OYc'XӬqǵ{o/d@rEhvbFb5:<VGVk9=¹}/NǦ,q酫oXINbL_}}�]xr)l߼On}/yƧߝ0+}b<%>zH13@6W&2dV`;P6!׭%1—rsr ֑"KEbY#Sc.o~B̫P' RcܱTŝW\@g!I"?(bYx h.d3]У9^__>?K'/w%t~Ι/Fٰu0֕#a9`c9u-/N5K9vV%5k$_%*xx o{kx�#Xxmdݹ o`c19Kki.!+uin_JD<<wPhQgN=d~^#Ϗw9P?@b1zg~;wBj >KK�V _btjYC.!цn"^x *^#^C6<s/޾3gStr'n>gệ%+3>@J�" {G}(Jξfp:8$GN[=r{m׳q)qY󌙼I܌|azL͗Bp-ׯqB]Y1>tKqgڃy+g ㇛“V}k_Z ?P5;ÏN*"m1B1W4i0#h,?~<ß4�Otn0_,!w/ �+-a<�L_~HkŶ>OY<L>$<>"[Juk1B>RvݐNk|15[dwڵ�nasㅛiD??l-mĘ"m8f?Zbˎ?x,=؀/FWnʸXg>Vrmh N~BȊm-}y~! @-;6[4s l�^+yj pӣ*?t9Y<xFΛb ]Efwe䍷.bM1v:Ÿ W7.dΑQnhm|\[ɸ(JmI{RUFL&�_|3ڂ/^×_48xJq98>/Yӳۢ $ILXCН3S0^ufpy?ܺ«#<J̽W7OL2�MJ)R:�ɟTc6U"8s"mLG4Ke l| ӬpNB(X)V; ?uhbmk- KJM B+}ƶI3oE_"ZpF𾑧6 ؍|Y<Lz7<;^98:q #fkfsM6bκy8>S?<֣ݢ !KY|lja-QH,w[-x_l}bRbvy�?z5u]ə+#W$Ih YH0 &'RiNȎ l@~ xzKW]�!DvUՏ_?;>.̓Hwo\?8jym|R#u\' O=A a~U'3͂y=E<rtB8@}!�D SE s}Ҧx t?u+qWxb]s,lZhK{/Nh\@=<CKf9PC9rA2Zb:�+xy7#e.az Eb~xf3]8c&F !|kiu8'UPGIޞ+6[l]6�߾ t184<f"X* gf:Y8[xJsoӃڲ`C~hIF�+ڰPU%n3GF6 qi5iI,M}cG��7IDAT+1_о|l_+D#@ܳWE7n^ˉ |pqO�¡n`v}1Vgt|Bh(X|op1}R=6ug'ʑ"m,'< |ZWq{QɴVmI XJ>%$ >.!~xx笾E|X̹V{q|v epk-~UE±2/l+ucW,N<����IENDB`����������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/Ear.png��������������������������������������������������������0000644�0001750�0001750�00000021567�13431646201�015520� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq���bKGD������ pHYs�� �� ���tIME{�� �IDATxIeɕ;wdR]Z$@ i} }!+ 6zӍ]%RC$$1{ G F�gfOW>ŏ|˥,lTd|7I\]su&x֋x/.9(mp?xS`f!^v#@3Ͽq ͆1F ̟̩R8Y.3h?OmƼ9p.N׃ovr@d']X-b~zq*9/rNaxM$Ml[D4%0FfxPv#Sʬ\ 9Tq wJpiH)r"xX.6R,f8xv޻mNy'8O&S<%b.QqK;G<JIH.,;%�BDp*,9:u M3N;)sBr1_х\߾r.R,WYQܵM,fC.rS)ߙkNo G f=".*&I)Ɣ2DbJJAEyŌR aѷMzz/GpqvBTd.b\2))r5_vopy{5pRo-r8|XJ9ǩ[oXl)ufv&"KzU/H&1%\l&6t1{(oJ4|vgOy)?{“SN֜O*u+N0x"F.qM݌_~_82=bJh"{SB|^esð(V"r K'9 SA (Ο,zNއW^sqvjjp NjC_r2̠8E>9}5goaQ"`F"UZqf:euS}i9MqeuAֹ4A2N1SN&xڶd~ ''VkB|a9GJs!㜣[]t,V G΁=G?pcΜjY]|~(vwJ)\n69 w_8ږڶR:ڵm˅r0V}^j:}bOyՊn`:auzB8u" rIYF^ꌄxBQMm,8;-V,W+<:Olo.8]un7˯-Z 3O.޷MN5NdM4y!8uaaG7(*"}ON8[/=}ŇϞr^>9eyrJ\.`rxO!2L) 9D񊄈 &4!8 \2{\r)ffzo8QQ?IwL ;07DDNV}wb&}p^~+>~O:9?9Ix0&RLb@E !bǑb*GPٺ¢ᤡuZ=e_3}#)gSR�'9qNuI흄Qr`&mH˔,VN Y=90|zOS~Fl6{ipI1TqBΙ4QR?CM8Z֋ӲѩL,-Xo_0DpNr)J*1s)'*/;UirˮeKPOG|"{B^<OHpI=nds84F)9:LTLqhIDEDU37]L8sDJE bXTz0 $:- ¾ۖRvw?oTQUk+RDpVeh"qh ~|ʋ ?(%Gq"TX="!Xɤ)QRRLL<Oے m<ZD4 y_{/w¢mQJ)38UhV'[*>B LqJ1GQd<9;'Ox^)}Ȥ9r'̃|! :z#-q$-~` %7Wp xLO;0N cbwWO)"1$8'Bzo$<>;"3!A^hL H<DҔ13&Wױh(]CD6 84 E1*~Ooĩ*ٲ&;Y/z)O9YK4F(bU؏٣s>3?+V0rwPWھ9OΕܔ1Ad4! +Q&T2[G#MͭBϞO_}iB`XеAlOu^kQ'ȤEϢk1u\8Yz>~'g'"X6rNBh"qӄ'<C~lfs`ac[+p?I8Y/[q~鏹)ffkRΜ-z_r;z:EwJ)GT<Tfsa,Vvps JN"6E8 B.`*Lu ZR(\QcVbcbx9Yt<:9 St5<~̇Ϲx{}ï~Xō\M03VmfQU}gOy l$dRTpb>'7 mۢSJaJLc$'@ CQJF0rՂ *8J! E?Sn7;~[b*rXo)onȥvG'B6@+F8].wPuXY yJd)V]l TP+ЕLaF:*I'"$(E!J*8r7-x_ Sd?LURɲ-3] )}߱^.xrv}ע:(JaL(HPJ׀t',[:Q9b7=$9ndbqLVzܨ+:a6Blx_*27T~kI)׆\mNj'8?]5 fKi=T"Jq"Z.f" t]f܃,I)SĘ̐E⋧m<aEHÖ ))vxQl/q(VA+U=_5 8]8Y.Y/{| TnBB,1H64sK)iLT(0UeBT.e#;r\l (YC|5{Jd+lGTbB<!x)2N9O *|ꄓՒ KEUh|i C5"92X-Xu "LSxd2PGgT!OwV'7e ^c'!@ WTD`)127ZNm13ONK)EOx̌uߓKAU9]X-{uM휪3ZT昈8Uu,cb7H"=)%vJ7dО9w{e)q0F҂wTQ)ج#:߾yK6 ESaJ\ǯ68bȃՊg4AAR6y=4M'b,U\88TË́-h2SaȣΓI<N(&Vn =@.8Wtn]߼8ĔiBl ЄJ![֝4m',QKe*K uV3LՆ>L#X0'#CzO d8Y4!4Sl 6t  Hh]@u-UI\s7ꏯڙbeѵx8RRh64s"w-!J)\(<A8<Y x0Mllja`Ȇ: DBuw<iPێq'5SGin547 E(X9#1f4뚖)&V}jqj\=ሊpwޯmh'iڀGꕜ3*6#_-eJKb CLd#0p8隁q"%̄TWYMTqd)gv%/q\2N#qBeDU7Zt'' MnNOXB(b1DA]I!gJq82Lbo_s1L cqBJ,#O#ޯhTQa:L,^ AפiS+0>s|=m0b'gGrS(GCW+ڶAQ]�uuN:/XPXHFZ/ Cݷ,f7=zzOC\nfCu=MPLR*F|{~;b?з E%Ư|7L)&0[qmddF"xOuì!he|(#BFZg N#~~~{~eGq`۰ x|r pwt}O-"wD ;HX-=4 wiTئ~ݲQQ66l9 >*/sv+:LA=yL5Z}j,:d/tCyss{<%fLz)9]]3nM9flj˻Ww;9O0 #%k^⃣{O6 J~.{ }3-f0_BFJ£ƑcP:hT1CB|o.{ƒ9!ڒ\$L^4 *H% wLb )qw1Ȕ?RÇZHuXcljR;gW:v̪^W%*$1:Wv V2^B8fw$S44#8GőiJSf˻-qb|9NhBg/BX[, e^fx\Oޫ�JbbH2S$eUIߢRTj8^~ȳ5f 8XL>Z֩ԮjXLF9 )4<M#_} H3c)VxOLi= bx@D\mV`# f,--I9c❰^-R2Ł3ZeuvBxܼsmqdJGr, Qx7?ݞS䜱a? �TI%#ږCN4vB+8P8Pk3EltVop5DΠ*d[ }W8=D{X`Ȕ͎Nao//\ ]еݜ<1ibw8-B>L̩p ńbMS7A@=CT֐% ((PdVx͞r*/|}G` KMfāT2I21e6=5wq~'T%myv~j૷be甘 RY<D4ۄIOŤZ!,y7D˯oz?czMtCkis_o;v{S"rKDX9QfnWUf/2ω76y�E3X<YS6M+@fD=L.k~W6G~ÏY?V rye8Q;^;ljeb"Ox|vqb;e{8pф@ !1UߪRF"܏ZZwRe=RxpA!⹺7yW](v`=&`u^]_›-9=9x8u|1 =tMC4|Ck|2P4)SƊ}35ۋ*K?!45CyE$8n\2^~O@Q9+}芡yGd?|ȻmC۴laG.?} JNR| 1&V%~JȜk[r}ʫ>,P7gPAq0rĻg ǻ[aCq.=]aMBy}?+r�7]qVW^Af+aʥ'.4(U˧؜sHjm NW_Z^ S6hbMK B(j`LwtmEh- R*l{\LÀѮi'I+[U|oC@8'ެlRPRB)8_}8jU~ICy|shhP?NX+c7l_| 1F?>'BL tm`65[ S c9ȱpi8~_r{]^y�zVno ok+VGܬ':V'K^d s M.�FhZpM T>+vcqL Zg¢)<8S."Bʙͦz MWR3ǜIA:/S,%s�j^dd'V} !' ^YъX2RcoquwWOJ1Y6J2NB6R(1lӿ\gDIjD =g/oi)Bh)S-:RU㽣mMiPTv<2y#}ysǛ+ Sݿ2Sܜ*ޑf0tFHq"WYd yȑf0B$I 4Np&:тDN i9cyB,d|Q}o:t ds$iqbJGnn7\m6dbB<NIُB'8NtƉRJu0V`&Ιpꊭh jnՁ-%+ɥIdwx!%4hwq n˻kH7!9%ӄlvtGT(f^Ŧ-mcwMc/\X0%wP}Px(qh:T捠*s+uRڲ@0SDXPQPfI)4i!ygƊ>VhսVUR qjS#C4<x0 iV9gSDrkvo+nCCR,kk 1$]amLH9vl[n{  Z yd.xIk*fs{R}.\D_\2,%j3@j[O *ރ� cVΌ jf8%= -zذ9l(7;v;]߰+&&'w,n>N:V6љmGl k{sy͛.NW &H=dNֶΉ|U/38_rJxghXmy,tH-9sL[ʰpnfO6j\ mrLNk| [ყg^_qɹ8mb4ęAeTPE ʷS$[!tRA0vxB[Q0;Qc.3h=ofkNɥX2ZL^Տ_./xyueXXRwRTɡ( $<3ՀG,g@ u- 7#mYvR3v8CD�|eܒ6;vnbXm;]6 ޼S;;Yewx;O^<I/&9BSW I*DQ%dQReN"Y<1T\crbcBi-ys$qĀ٧̻naQq9�trVXEZJ9Y'\��IDATc,:et(Q`/*J4qL *r"Ta$<4aY/ZV>GgMy!Wn۱96 xZqͤMfR+,[B=w7wv'n^,a{<fҘNDzU ʤ"UEDT@X#K8J) 쇁al-nbzʅTT c8ip@!j\25to(v/{_7TF>|9]vw?9 9(Y3P3DE,X,*n,bILp҇b)DI 5&&;3?* m]f/milʹߤoRIwEoNDI"rbA(9; (3p6C5p]*PJb\ʈ50 fZJYNji;a:k(KES)u3 &%SqwO[|)Έpo+*˹f{NϹ0eT M2Ϭ &ɔ!zաKIXɈ>HJWdzQ1*aif k $Dƛ7aw\lO4Ńw4JE!0\ʹ>bHطW1C/Z=@N]@yR,u1:8E7􈹀U7f@r´\߄no!x?Y(����IENDB`�����������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/TerminalLinux.tiff���������������������������������������������0000644�0001750�0001750�00000014332�13431646201�017740� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*���� P8$ BaPd6DbQ8V-FcQv=HdR9$M'JeRd]/LfS9( fbqT0GiBP4: _7>VAz*PXM7\`@5\�7B0Xb@j< 'G�@ 6��#[Lf['ayp`(,+ wDM_0 B{pDAW4 qhb`@ƌ �p;@ ~|~妀= xOeM)#aEd]M쀀C &�=)@p;\JĈ,[EH*~�؛`#�>͞r i#|mhvJ #!Ĭ"RvF1Fqűj5G DZ}N3�wOtG>ǹER z&KW*"3ZT& �LotoQ{+,9Բj�zXcz�|5SkG{ �`$�$ �9 �4E{שSE} {)ӈpG6 hLbO%�u[A^vqxǡ�ghe֩梨wG;bl&ӈ ]�p~Ƈ >tu:�c�ԫ�,܎wƈ<vwR%Nl׳X9@C% !)�@,G�'�@-5; @.=@!m�@0vSQ-�h &wFC'<H�@�dwDjOyFuVց1gs� 8�b B�Y @>` ���HBd�4?Ph^�@�n<UAbor��n< �`,@� HBD/)K$;ˈCLOQ02b@C ѡ �iP��l?xɛ1L?ż�&���%1E� t,a<< l � H)� @ uX( �DB0�_?˛>fTXQY9l:pb^ A/,ʌ!4fk��D0�!�6 �p !?@l� @�.@(1(s_p; 7�0m8?8ut@s.Hx Aˎ,B�#tze|=y*~Gq<)⮖ #R3F<Y 91Jv%��i`E �� A �69MI?<TS 8/`<ΐ5!Z : 4,� #ϑAbHTvڝ 3QalB!z> d,hѳC rVT@B4� �3~Ub=J� eX @Q8ZE � Z�N t-? $y2؈~F c$uE(j={lB^CXՎ<A:ǮH$ǹG¿(W `�h�b|kO�Nb$!,/8 Vx.0>KJyy4sp:^A/a.<*YD/f"ua1'@ �6Tjǒ|bl!W, UtrW/Q@�A㪩09-<n P;A2Rgw(@Ob1Iƀ�Lh�uYFȶ�gDsG Qh֑`v„FP@�3O#0v*cd#B/*f_q< x�E) @4 �:÷ : 313�8e3! �.Diqeu@@�W92<"6'TZV  ^ܐ t&Pý 6H uСƀx K}m @|CBS `�7 pW(إ28�BDH�B' �],H(X 9x/>@9?/z4�/0�v�"!LP:uЛqvfrzm �:p�0ZX�Gue@�"6<B0G�ib ��X`X�� �Y$F dl��B L6+Dt!ei`B`$dO>*h>#6J�>onJhCŚp| -Z K<WD-!jN^lz}�P*4hoƖ`�j-z �t@�l8O��U�az~,a&a(ᮩk'C: ib*'@!� icH08G6dS;4+ @! eP@Ǯ~\�j`�<�,!@���] "|��u�\�ጜ"���R!l�fAfD2>i@ LAрI!@E`!^pq 9Md>n; Z� pG#AFn͆ @#b�� Dx�z\`H`p, ta� dF, ` f�``EZepbB!OTũBj"d~Gr,&ϐ9#A2F OB= ~DHj�!}' @ ϸj\|�P� @8dJ 6z, +qR;��p1X" ‚btm8Bp]PCo1M"*8! g"p$0;bl0B OtCba ���hH  �FT'R%�`�|F4^am!E-;� EaXe `h .&EGd<~d6GB>JCk<@}IIO0K0>K +'`z4K9 48,� q&'Gp:C6Et�@\arO2K"~0\Q2!�� Y*fp(&<`<DfDw"S ʀX$<V1i= ( Ul S� u ��JKFt1$`<�`C@v'Att�Y.&� βs @ �A&EZ,0!:�� 0q;[h<:;^BTqUFfW=b@=I" 4 hc� S8 th* <CBlh"la'AUj�D�H`E!=hba� HMv(�� �(*Fa^*@BD23V-6fC/n\ A<F=oa � 1#� Ίa"p8o6KgDDö;cBB`kPCYtc U�,b @v �. LS$nԊ` GIZ3Tc`T5F;Fg/Fa  Bibr� � P8$ ` s7�8�H`�T&�oP�)�D&�>ݬ+Y�> 0\=   �F0�L'�-@%T�B or _�H$ q�@�>@� ���;^�xP?W&ŖC~h^7kM @�xp� l� x�s@k[_!�*U*ۼ�pn/O&U֐d(�[-8Ųo7PZ/ BP��"*0H gϱ  DDA@)7lp�tF��V�R�8dA_ /B� ¸h)gC*(�{�21yFG鸪* kSB�0�|N�.ư,TB KĀ 4i+gptS8HOEFQp3iF@�(1ytFQ�iVh"�@JN9w��9 ^̃/Ki{:P��{q1ꪜp$ :hT�AzP:}д4Y {q{ hlE-nXN<!Y hx:G0�\��Q 狲¶  �K7`h ٧F�fh+|Q�L.8I/ 8L${A#�~+vgYظG XI'xuN5M�4aq͘o=fU�.�Հ'\�!t�ݮQ'P�w|�z�+j۠�jLyiP�o5H <FQv.fG:Q/pAb9sy1AG�Xѐ%�10L1L 0�)ҸaA8F݇ E.V,_i !@'%�d&� xH~u > ^D d|P:*w}$ĘwtW}<c<f1|.ئPj <zQc �AN�?# I.sZ�tj a�CtJƺ;�4�dy0ղ'~`�A8AA@�$�1`� L�-@8�T0� Cݖ)*JC+FYyF?A2Prg M41d0`E9""B�( *QZ@ 8ʰ#@u`GHP- ��!L) "[(1��(u0j{E;�Cr8\f z8$i kcb%bY%HJ]B C @ ;HV,X  �Ah4p&�?E@0G')�H@4X"h8��Qx q5EЏ4/ 1@ ,H%.xWn+ BV � Fڑ)6EHKfYi l (XԌz](@y"D8 C` e}<SS_pZ�N�{Ex  �_WS9^Ԛ�?p�B4Xk !Y0BrYnH`D` �Ix�V` �ߊ ~B1&>F,\yy%%]֋2ƶ,?xpxAP2c.i],Ư(�؅�@@0.*�/�V-_�GP2FMW$f켌Qk�i.ZgBFT"TbGTpl.n },H0 0[�)P`1b(B~b]0�C5{޺wkS5@,2}Z<y h*qc10;\+rT{@QsCdYV0�÷^i)& .@2 :-$ذ�PHB>0&2(n i_pG]p@iS^(DBKvr :?+�--Ǚ^oy=^z_MG^zN@@����������������<�������:����������������������� ������������������������������������"����������������������������(�������=�������R���������������Terminal.tiff�Created with The GIMP�������������H������H���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/GNUterm.tiff���������������������������������������������������0000644�0001750�0001750�00000013736�13431646201�016475� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*���� $h!B &l�(�@-D`€)0Ј)RJ >P$2\#0aB*3'FmE@>wGFwCj5)Vb?:tE2MSB? D/?ʔ Ip`1`Ý4 t͜9SC sZrjԨpƕ_n]sޕ5.uɍkg\rυ 9ϱc[۷Ϯ]+lٲφUX4ϼ9LϸI ⿥*4)T )xI&@Q4 ?`c8,H %"_ho/yO>y>xwyWxH$yx6kl&wK N8a?8bUX65<`&cEFc6J|)8I!I"h ("2UTlA<A 0+ (c/O?XcOxxN4$y{M>ŔKF<-NC82c}7fsf!ifZ(J*lr/|142bbGuD ԲJ"㧞Z䃿y/nej>gc >xNyk8??h|u#xB#@[ C -CYF" �,@=$@�  !@!�? `p'J mԑ 2+lZծc fc?襡/j-? s@ NA�gx8Xh(a `X``` `h`P Ano�tCH;D*ه';p&P]" \a �P? �! #d�;H�8`cx"U{p�g� �» @`wۿ(0rh#H?pcQ4�  1&bLp� c+<@"E"�u&�Xҙ@Td(c�KN0A &@]8P]�7~?P%nd_G9Y Jn-F$ :N=@ tKȀ F̴ `�8LHy8G0��.Ђ�3, y a c5�`C, !X dh@!� ?� �#P#rd! фV+*90:VI,Ձ>UȔ-,<�R�*h`\2H˰ (@* ��05�- �<�h b?|6 �7 8OઆdG+Q IuR.>MbR#LmgK`B @:\5, t` 4lFU1ѠA0WQ?`UY{ ǭV/FEm�3 d% �@LPaf[𺫨P V5 =AYT {49#Ky3?[?@Ib݆qv{:tG k0rӡ!8mA= c؁փ+a`0W:婭Ÿ�:}b́uc7|U `u`k�̥*sF5)!/h�Td@ИR  d?D!f�9+_TӬ)Z惋_?t LPG� Mt?rG-](8L9B |j,$;G7m' �j0XJ Me{fMzpS?¯EPvюMU y/k}?Lavp+wu(<)w0|ӌl3b�]( . /St~ JQ'^էj5�Mm+>b�e!�u Aҁ49L=S%�/UR hnRTb-׸ASC[~LUo_x"9AF+E0c#0W r!BF _0$N4M hЀP1Ss+uE(z`K. ~P�B>hs" @(`xg |ii0K+vGdEJ-ev  $ JJq\8\+(�wՀ&?hZ8A �#Q qY7d]`R'Pa0pEPMgp�@S w Sp*P ZMq`/dBH->"a>bc8x�#^8~BI2ZJZE1vwGP5pOoG`F]B`!-0.T [mP9 <߅P�!%p d$dtv'fI8MdJ88B ~(dx poUa  c-V`a_gLtM,ۘ O2I7bqMJ:ml䌓dπ䱖d7 *dIq�w�N)hxi{uЕa`Ņ0v4 axvL- l�f:60MOHȩH L \d1\`hl@4`go�aߔ� h x%i9@0L(lđhδ G{'J9#?o@„pK\JJlyJ1"yU�08L.<Τ3"IrA` ?E8QBq%`ՅG&~+IMB>3>Z\!LP*3=v0R$+\p2LoIjbLNb#)xdIrp�0Jg�F` iH gAcW)N{Ot.�\LHݓY(1:I,._6S@d+ p!<�e/b& eX6Hc0>HDH :Hc+xݴ$J$K lS�Z? A'np'HhP~^$@ /Rzv4˚bӐ8kx0rq0PR0 XτTHl4lt=ˮRnpw�R>!j$^VXR pP|i@$HJhpQo# \f Lƫb X%oR%&pg3dHLHtaH,u-8vU.H�f`bL>aW A IEP9}aHp�pOZ0W5P0- *aVC!�~6`LlT}Zj(r&eAkIq0WHT4-Dḩ0 )NR(),E\G0 gX`r  Y`r& l`r$ AEr: ra !>r�* W2ʴ4G oހUX%#Aؤ>@>Hl,(A %n*rR("b(1" A)nnViP7S?B?_?/p?pgp?p�{{[;[? kE0?Sc?0 J=T0&)y-ÊτpWE:ǘ#1[Yl7وYh2ZK9#xxE9 0'3fl.Z-`J3" 8A|J"])؁8C؄5 X醠]0bP]tEj-�׺kY^RxgY-x#Ѹ!Ae9̬LyX9"Yyyѝ5k\�+As83c18텇E؞.؄5e0S\C΄h%륝Ȭ9,x%xe_9%]9_9˹ބyy#ySGNҠ-NU|]]E؅XX'/]0pw0Y<9jh:xQ:*xnẋYXhJrE5X:Y~]OlZil6ZwZ&RjR8:\(2Y8؇=X؁jwgeP5K'N<^]C8 >)qf =U\'WXQi~Q. Hh6hV(?k<FV4|ȃ8K6 MGpGֳl3(HfLp so?PU_~=@# 0=vȃ(n�Swֆ 轌˂m؆]X?XE݅!!rI5"+؁k&\%:S283}P?<"(+� H,ȆI�'ЃkB*@ ;D =Є619i�~8 ^�va`W̔za`F:js?L·Gzć.zp`}`DZ\@?"�++ 0kPW`&FsP_CC;z>2G�)�xOJ—T j?yL{R \@b@XF{]T@) {E-x<kFGP}/}@ �5 � ?Gx'2?'+:@|@~Kdy7?@,:@~i�~:u{_ooDhGp/3Pj"x^v�Bhu?ӆR8ȇpe+3?{ `OF`b`F, ˎ ?\F.o@+pDž@)r"  h!B ZܻwϓG7=zp߭[]p߁ٳϱc[\tϥKG9`ٲqjǟ?+4i?Z)tpB&8Pi?(C?nh Կќ  - CF Ņ g $Itlݺ_vc۶ ?<իG<1u ]ܟ;w.q̟kN%r6?63iR?ZSX?1bx?.\(%[vҥE1*T�lh?~g!< A֠ f2a`L8ᄃ,p&Zh {HɄ TB2�LL0�̀�!"%V0MT0@�4I6SH1SI5H3IZ@������0�������0����������������������� ������� ������������������������������������*����������������R���������������/home/fatal/tiffs/GNUterm.tif�created with The GIMP����A��9��������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/TerminalGNUstep.tiff�������������������������������������������0000644�0001750�0001750�00000012576�13431646201�020176� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*�F��� P8$ BaPd6DbQ8V-FcQv=HdR9$M'JeRd]/LfS9m7@ |O7 � A4 k�utA7ZBTi�oԁVM ^_K`AW.˰43 @ _ft1)UY5A[8ԁݠFU�)ԝ'w OkÂpW"?oH4߽;Odu#3OT$L4�|7�)>ߺ"ߨ.C~-x�"v8 f4k P!DDBd S~(�P(�  GZx_F$71!@� `(�r>�'{42}9E$OIS?h©e!Rd|�*Gʏ&Q$F<2)n#+GX2gږKQts\�2$h� J&��)�4 �N�ҥH N4􉃖FS9�"dq�9qW,�&@ 25|1&J#s}r љ B6// F570\ݟK8�.t;v8)edhy(zG v`mLK=b3}~�zL'{W5?�2 fJʳ; y1æ7,j"de(Bz!F`|aK*KR�ed`uau7fF� ؈*NĀ*~ ,i]" (NW 'd)�Q�Z/_{K`\u+Px—yW+ ` @�߻<NfHp=GbAZXYŠ HW�bTd�n/G0�}F}mubYɈs(5ĊSa06ɐAh�3 H�99i #{HJQ(#E N4<y62�t: `%�%/zXb 裏a^ǫ|}"4W:RN~ȁ2q�| S#+ f /|YM /f@,C I4, WMQ!콉163@�}Xڈ_G/@����@ >u< C�=@�4!5s QC ;U-`y^rN1pQꙣ| z?3H!6Bf T@b@0CN<pM7@� Q\8l(E�j3@R@�#�d�QZhӕ/0���v�8�uQ<G]g'}V)�K�;Ղm(p k*PKJsQ7P-g$Н1-i>A}VAN+F�Bo<) #6k=3@�<�`�uXb=r� z A& dv1=���pK:aE2L?A�R Q.Ԥ#R C &eթv�@Hbeim8DEP �PmaLe2. h��0�4Fa{]/BzP@. |�@w^G0젃y 3GEux"HаAP%}g<ELkAc#{pO66Qvt�BTY�'FML* 4';�wP�5M\��%!� �SD:GCu:�1B:o tU T4Xh88WJV01#EDA 1vآpaw ƀ�&� ˴3FBZFû��nPh0U� !G 蠆P@ a��\ @Y.)RT@ 7eX&P,LsI;H^PH L t{Tˆ(q΄��GTߜ;pJ `�p H}0$1CR`R@�+f K9IKn_\�?l B PNH m#ф�WQ �d 2U�.=�� Z(I cT Ee#ؖ(|,ul I\UXjOC�y(~ρ` <�a> p �l.@c ܌@JbAb,ițbxӀ*@ Gvbd A!޹�e!KMIa)` ,�f&. F,5ȾLɢne``@ `!�ʒ(�$V)`@�af4EA��.B��":,e aڼ��!< "! MB7/`R-Z!@O8eNt"|�PɌ&V AB ���`r�  �Bpi#��lKI(�� �+@� A@R{ �aHfJ@@ H��rDT:ΘCό#| nj)":N=1 ,% dq JFixv 6ҀQ> D B F X0B j(ƽ�� KA(bAꔅ:��$Ī ҀvT@Xnc$ eLAu#-_0SrZG1$�f_푨-,`xGx$! �� Rr!Ar� -(m. I BKCi/o--l`J S @>a&.s52.�> pR& HZ$-eVA`�!A`=@r!-*ˈc Q��PY(al8Tr9Gàud8)V9�[II=@@| ɖR*%z()71zHX@*X#-ĆTcdlB"<  A¼d@ ||=*<. rJ:Ԏ�3 f@dUs&V�!T=�ơ�!@s*ĠX6Bi(ļ%l(eaZ.?&!j B¼ׯ<| 0��7F^ fOc*Bz8CMAv€f7B6 � P8$ E$5Z �ng�f�/P(�@Q � � hIK5�&S&�?'�z=$c�7�>-;c+o?PP-(RV7l# bqPQf4x090SBY`;�"H<O'�:Y kZPO�V Oo�[�8@a:�X.)`#& �I;|AOϥ{~p`DQf�Yد��); 2Ӧx5/#O5ߠP*4LOQ,<`�:&g}N,oT&ɲ~ BH?R̴pUL3�grP�k�{5 %** 7 ZD1#QMGœ�@H�* } $L|H�vifUU )eYl%di O�sj|&+S "O(8֫kJD &a� #*_�3{$efYw݃Za_�S!,}zhy|gȬVϟ~e>vǸ"}j~4ϯP)V@XzEvaxTeӧd gyumټni)Fmad�(To@Fahإ6ĵN'.h'r(?hU�d@DDQufj$<NEdK/J~ &P!Nѥ��2on%x˟av져Ҟs� Fu 6ֲ�$}ShF=#ȸw ۢ@@p}\@x L8Ay@�x4V��V<UGZ*q=ˇO�b� ?ٜ巒J��j&<e$;PADVE{#Lz%Ƚ$Jk`j T* #[�& @ G �)2�E�&ɚ#4b;$�tIS @�` �g*# (�D�h #Lo�h)0B?|dhA-$, x00h}@CDӬf<SXi$5@O.,h1M"(H("z]M@8jLޒmIAԃ)K>B6@&@dD~*�,LΑ>ZCZbiO  #QOG05iN5Õi ¶V �cI@* k@5 e��ļʎGR ˹죇aH=DZlqA <6Ee^+LakuGniz\*�@ X  (`!wA>=W):#SXg <6Ƽ�K| wUTYJ&iKZhT@͹vyi$ .av_X`\ F X/`XO a\-KD����������������<�������:�������0���������������� ����8������H������^��������������������"�������f������n������v���������(�������=�������R���������������Terminal3.tiff��Created with The GIMP���� �� �������H������H�������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/notepad.tiff���������������������������������������������������0000644�0001750�0001750�00000007702�13431646201�016602� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*��� $h!B &lzF41bڊ;G$jOl'idvS&mZ2:Ȝ%9ʝqN rZhQg%Т&M4hxFU(SvJC 'o,Y+I[ E*1cl+^:z&O*ut3e͚#g< *XllJѪ@sOxyդɝhю4"T ۊo&a1t[R=ukpG[|3|TLꮩPQ5*2 2qmmmvٻ/G wH8qY\s^\ #C<gQv %IE 17[$):c_ 3q UnB]nrz.&%-ًp1E4_כb_I4D"$PB-NPDh\g>9 yf5Ƣ�QzF8\˯+JʪZ./ OuX֒؎d(2!IۛiV70[%۵l@i=d4밣;λӚ4`sKiL2(Cs0=RKlGqus,w\''ɧAr:װ{8"pb $E Ai(6 r8@7\sÅ7bM:8!,A;ΐ#ŖtkuDV=rI`͵k3d"BZ$g$*Lyh_<8l[kc߰M|ݑlAǟx )G<tys9(&0<]o}f>btqFT%jمo~ڟٜh_Gp$MDp@̆prqBa`8A 5@oipp3^pUHi JYcTYNajX(̈~JKD �HËRGKB`d93^$ 2 F.1}Lb"8:|hs}$5X7E$@Okr'>18?mR#$%#1I,Z &GhNut1"xcqɝI ~R.In,1<P�VJ m,9'X2) wνk$ڈ Nޤd }F2LЎ(rCmH7q0?@:pH3.ܯ4FByaFh�l \ȉܰ\\6CEC6;o<V�ûQL5Qh?|ETyX �>JtCErTrJXVJzz%b Q}l#wI9ns,J)hz5V )̻BlcLS[#uybX徾s0r!&j*Fy]OG),59M`ȍܶS>ylN{ꏗ&I-:GIgZx\?  m[U@GF{㥃CEW_P7=4\0ֿ`40pL'!~"mR980M6@PXx9h?^+| w43Kƭ G$,mLu8ԘR4pC-R p'V ;>5Q4O5gMijsۮfxRdM^9^&@p+\\ ~?0xG# a8BZa Vtl; p`!)8A�0C` v,=0 L5 VAW8C 'XE/с8$05$!A>ЎG0H?b ?Cf?!KH 1!l_~!D{D@n3^7֋ ؀X RD$ 9E wXCa'T#w(GѲ}mG j$~&<6 l\xu8' pc .&\Cp'.!\X381 Gp%}ifK0 _TVAB7!/@*t�xD2c1pFA(Pk@AdH~Az# y�׿ ~?i(c< }w=�0)G8@(p<"G4qW~\# F"pT8`X0dPFjzzP$P� z @ lP�ZG&8_sLZ��p�`��E`&pCBmPl0](K0 W XuXopYWXo p57X18�=@ 4 0ΰ�J r c:XXU vP�F\2 A�rNC.�I>pil'.ipI.H=Ё v Bq Py `�ba v p"! "9 E p 2^7(S!+(Pf}`6f`� :2 !` ^ |�~rBqJPz� �l|@alBH\n@x"@~  d TN �L|@n� J18E|`:zqEbAMN(=qA�`Y *`�aBLavNi �,`@ @ H?`I:  �t|D@ x@KDvSbZEFZhŐoHSZen�el0P9I5`�`i:q"Rf\ VD`�<Ϩ ,@F �D`@v&ļ<&x`,@ @'/AQ@ +({Wa[)X`ĉ H=P@i0>�#�B`l�ZT@U�z@x$@Ft`T@j@KAT@* @JD@�6 Cy~3tCc/@SgN&Q-qEB�^`&0/9P�`�N NiLPZ ~ ,�<1�J6 \H\*d�0�'R "`6`;p8NAҗSu>u-0De,~Pz0`0f`1 �Z%ZZڬ-`ڭ]`1e>jy1c6mk1T6@~&zQ?l�V Wq-!"2.?#֗v騳6;Sbx 1D׸iF-hhEbhNl:Ff$blaB&bR`ridF?hRU^ xs/]i*-CI҄惱jWwmGd4!6Q6a3\xknkxovlvvm7jlOi>֒ƒkг63hnvhvnvoN4LD:.n]j0ꈶ׎nmNNNլA������0�������0����������������������� ������� � ������������������������������������8�����������������������/gimpswap/dwiconxcf/notepad.tif�created with The GIMP���������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/defaultAppIcon.tiff��������������������������������������������0000644�0001750�0001750�00000022443�13431646201�020045� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������MM�*��$������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������|v|Щ������������������������������������������������������������������������������������������������������������������������������������������������������������������������_eW.;  ��=D���������������������������������������������������������������������������������������������������������������������������������������������������������NHV  �(630'm1  �.;Щ����������������������������������������������������������������������������������������������������������������������������������������ZXM.; � �=D�:#3, %b)RWQ.;��� ZXMЩ����������������������������������������������������������������������������������������������������������������������������  ����/8'm1(_eW^`RWQ ��'m1*FH �=D���������������������������������������������������������������������������������������������������������yyZXM � ��630_eW^`qlA_eWrvcV^rv_eW��=D�3,  pw`Щ������������������������������������������������������������������������������������ZXM  � �(jlwrv|:#�'m1|*FH�� �NHVЩ������������������������������������������������������������������������ZXM.; ���(RWQ/8/8630:#_eWyy.;pw`������������������������������������������������������������  ��� �*FHs_eWs� �B5=rvRWQ  �_eW������������������������������������������������������������:#ЩЩЩſ|_eW_eW_eWNHVRWQ|um� �=D������������������������������������������������� �*FH �%b)/8RWQ/8'm1630*FHyys� yyЩ���������������������������������������� �B5==D��=D�⯤RWQ'm1WP_eW9<?630�G9������������������������������������������*FHuztRWQ��(^`ſ|/8tgo630�� �����������������������������������B5=uzt�� �:#Щ⯤uzt|ſ_eWrv/8cV^rv/8 � �yy������������������������������*FHyy^`��/8��|WP^`jlw/-*FH/8'm1(�� �.;������������������������������B5=uzt|��qlA*FH��(|WPuztЩſ^`ZXMO\#yyuzt.; ���������.;������������������������������*FHuzts �_eW9<? ����WPjlw/8_eW ����� �*FH������ ������������������������������B5=_eWum��_eW9<? �����9<?Щuzt630��������$ RSu D��$ RP��.;���������������������������� �*FHRWQrv �/89<?��������'m1uzt:#�� �� ��� �*FHCp D�� +7���.;���������������������������� �B5=9<?| �NHV9<?������9<? �=D�9<?����� �GH\ t ���3MSu9<?���Su'8O����.;�����������������������������*FHB5=^`�'m1RWQ������630�� |:#������*I � \h5V ���#=79<? ��Cp'8O��#U � �����������������������������B5=630 NHVRWQ������630�� ��9<?��������'8OSu�� �jwSu ��� +Su D���Su+0*��PP��.;�����������������������������*FH + *FHcV^������630�� ���� � �9<?7���SuSu � �*ICpP ��Cp'8O �9<?Cp ���.;���������������������������� �B5= B5=pw`�� ���=D��� � �#=�� DSu���5VP ���#=Su5V���SuP��#=Su +����.;�����������������������������'m1�s +*FHwy��:#��NHV��wy ������57� � tP ����7L[ ��79<? �*ISu*I���� � �����������������������������NHV�yy 630uzt��=D���RWQ��pw` ���'8OSu���^`kSu ����SuZO � �Su9<?���Su D����*FH �.;�����������������������������'m1 �rv3, :#wy �*FH��^`RWQ��tgo� � t� �^`k7����CpSu ��7 t � +Cp'8O���#U + �.;���������������������������� �NHV��uzt:#3, | �B5=��yy'm1��pw`��� ���+0*Su����Pjlw ��7^`k���Su_AO�� �P9<?����.;�����������������������������'m1 �WP + | �'m1��rv9<?��tgo(�� � DSu*I����PSu ��7L[ ��SuL[ � �Cp9<? � � � �����������������������������RWQ �um ��uztcV^��tgo9<?��_eW���wySu#=����7L[ ��Su#U�� �SuL[ ��Su#U�� �Su�.;�����������������������������*FH �rv3,  � RWQ^`��/8cV^��cV^  �7#=�� �7\h � +7Cp � �CpSu � +CpSu � �CpP��.;���������������������������� �� �um:# �3, 'm1��RWQrv��_eW3, ��#=�� � t~Y� +Sujw  � tjw +�Suwy � � t^`k����.;�������������������������������� � �_eW +��:#9<?��9<?��_eW:#�����PL[ ��SuSu + �PL[P �7Cp +��#USu �*I ������������������������������������dd] � ���3, =D���3, |��_eW3, �� �P#U ��Su\h#= �PL[:# �P5V3M��#U5VCp�Su�.;������������������������������������y}^����*FH9<?�� ��_eW*FH��7L[ ��CpL[#U �CpL[:# � tL[3M �5VL[Cp�Cp t��.;yy������������������������������������=D���WP630=D������RWQ630��~Y ��PL[#U � tL[#U � tjw*FH��:#jwSu� t~Y�� �.;ZXMyy������������������������������������uw � �9<?�� ���RWQ*FH�� ��PL[P �#UL[#U �#UL[5V �*ISu7#=#UL[ +� � ZXMZXMyy���������������������������������������� � �����RWQB5=����P5V*FH��:#5VSu��3M\h*FH��*I\hSu#=3M*I������ ZXMZXMZXMZXMyy�������������������������������������������� �(��(��RWQ9<?��Su#U �5VL[P +PSu:#�� +L[3M*I �� � .;.;.;ZXMZXMyy������������������������������������������������ ������O\#NHV��L[:#��:#L[P �:#L[*FH�� #=#=� �  .;.;.;.;ZXMyy������������������������������������������������������������������|��NHV'm1��P �3MSu t�3M\h#= � �� �� .;.;.;.;ZXMZXMyyyy����������������������������������������������������������������������������630���9<?NHV����:#5VP�� #=������ � .;.;.;.;ZXMZXMyyyy��������������������������������������������������������������������������������������������B5= �630*FH��3M\h*I� �  �  �.;.;.;.;ZXMZXMyyyy������������������������������������������������������������������������������������������������������������_eW � ���*I  ��� �.;ZXMZXMZXMZXMyyyy�������������������������������������������������������������������������������������������������������������������������������� ���  �.;ZXMZXMZXMZXMyyyy������������������������������������������������������������������������������������������������������������������������������������������������pw`ZXMZXMZXMZXMyyyy���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������0�������0��������$�������������� ������� ���� ��$������$�������������������*��������$�������1����?��$R���������������.dir.tiff����������@(#)ImageMagick 5.4.7 07/01/02 Q:16 http://www.imagemagick.org������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/defaultAppIcon.xpm���������������������������������������������0000644�0001750�0001750�00000014636�13431646201�017726� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * defaultAppIcon_xpm[] = { "48 48 106 2", " c None", ". c #7CB976", "+ c #848A7C", "@ c #D0A982", "# c #5F6557", "$ c #2E3B02", "% c #1B201A", "& c #070D00", "* c #141300", "= c #3D4400", "- c #9A9985", "; c #958989", "> c #4E4856", ", c #281D15", "' c #363330", ") c #276D31", "! c #5A584D", "~ c #1A3A23", "{ c #332C0A", "] c #256229", "^ c #525751", "/ c #000200", "( c #2F7F38", "_ c #5EB060", ": c #959B8D", "< c #2A4648", "[ c #857979", "} c #716C41", "| c #728A76", "1 c #63565E", "2 c #B7B8CC", "3 c #83B789", "4 c #707760", "5 c #6A6C77", "6 c #9EBF9F", "7 c #9DE2AE", "8 c #A1AEA6", "9 c #D4E1D9", "0 c #D8F0DC", "a c #C8CFF1", "b c #C8CDC7", "c c #DCDDC0", "d c #D1D4D7", "e c #A3A99B", "f c #151C05", "g c #EBF0EA", "h c #73878C", "i c #EEF1F4", "j c #E2E5E8", "k c #EAF9E8", "l c #42353D", "m c #142020", "n c #C5BFCD", "o c #E9F2D2", "p c #A79B9B", "q c #80756D", "r c #C2E2CB", "s c #9395A0", "t c #EADFD7", "u c #FBFFFA", "v c #EDBDA1", "w c #E2AFA4", "x c #578450", "y c #393C3F", "z c #473911", "A c #757A74", "B c #EAFFF5", "C c #74676F", "D c #B4AEBC", "E c #91ABB7", "F c #2F942D", "G c #82A89F", "H c #EFFFDE", "I c #4F5C23", "J c #240D52", "K c #5375E7", "L c #0C4497", "M c #50809C", "N c #4370D6", "O c #1E202B", "P c #3785E8", "Q c #47485C", "R c #0A74BE", "S c #13334D", "T c #27384F", "U c #2A1649", "V c #5C68A1", "W c #3556A0", "X c #1B233D", "Y c #235599", "Z c #6A77A7", "` c #2B302A", " . c #155091", ".. c #8A8C97", "+. c #777984", "@. c #003598", "#. c #4C5BAB", "$. c #5E606B", "%. c #5A4F7F", "&. c #5F414F", "*. c #A9A8C5", "=. c #7E5992", "-. c #64645D", ";. c #797D5E", ">. c #759777", ",. c #0196D1", " ", " . + @ ", " # $ % & * = - ", " ; > % & , ' ) % & $ - @ ", " ! $ & & = ~ { ] ^ $ * / % ! @ ", " % & / * ( ) , # _ ^ & * ) : < & = - ", " [ ! & & * ' # _ } # : | 1 | 2 3 # * * = { % 4 @ ", " - ! % & & , 5 6 2 7 8 | + 3 9 0 : ~ * ) + 7 2 < / & > @ ", " ! $ & / , ^ 3 a b b 7 b b 2 c d 7 ; ( - e : ( ' ~ # 3 [ f $ 4 ", " % & / & < 3 g 0 2 h # 3 i j b b 2 2 9 k d h * & l b i d 8 | ^ m & # ", " / / ~ 2 c @ @ @ : n g 9 8 : : 2 o j 6 + # # : j g p # > ^ + 7 q * & = - ", " & < & ] 7 r j k g d 9 0 b 0 i 0 : ( s 7 9 j 9 3 ^ ( : 7 8 ) ' < [ h * % [ @ ", " & l = * = b o t g k k u k t v - 6 t o b 7 p : 8 7 w : ^ ) ; b : x # y ' * z ", " / < A ^ / , 9 u u u g 0 j 0 g B d _ : 6 n k g 2 s 3 p 0 g 2 + ( C r u b ' / & ; ", " / l A ; / & ~ 8 9 j o k g j 7 - @ w v b 8 A + n b t 2 # | D 7 9 v p ( 1 | ( & & [ ", " / < [ _ / ( * * E k g 0 b 7 a o b 3 + x 8 0 g j b _ 5 2 g d s F < ( 2 G ) , / & $ ", " / l A + / } < / , : r 9 k j 6 + x A @ k H u k n e b k d _ ! I [ e A $ & / / / / $ ", " / < A h & # y & * / x 7 5 ( 2 r j u u g j 0 u k u u g 7 2 E # & / / & < * / * / % ", " / l # q / # y & : / / y 7 g H u u i r @ b i u u H 9 6 A ' / / / / J K L / J M / $ ", " & < ^ | & ( y / 8 / / / ) 0 u u u k i u u u i 7 A ~ / & * & / & < N L / O P * / $ ", " & l y + & > y / e / / y & = r u u u u i 0 : y * / / & Q R & / S K y / * K T / / $ ", " * < l _ * ) ^ / 8 / / 3 ' / % 7 u 9 + ~ / / / U & m V W & / X P y & * N T / Y & % ", " * l ' : % > ^ / e / / - ' / & * y / / / / T K / & Z K & / O K L / * K ` / .M / $ ", " * < O : % < 1 / p / / 3 ' / ..& / * & & y P * / K K & & U N .& * N T & y N & / $ ", " & l % ; f l 4 / 3 & / p = / : & & X / L K * / W M & / X K W / * K ./ X K O / / $ ", " * ) * h O < +./ 8 ~ / 3 > / +.& / / @.P * & R M & / * P #.& * P y & U K U / / & % ", " * > * [ % ' A / 8 = / - ^ / 4 & / T K * / $.K & / * K %.& & K y / * K L / / < & $ ", " * ) & | { ~ +.& p < / _ ^ / C * & R * & $.P * / * N K & * P R & O N T / * Y O & $ ", " & > / A ~ { + & 3 l / [ ) / 4 * / & / ` K * / * M 5 & * P $./ * K &./ & M y / / $ ", " * ) & x O % + & ; ) / | y / C , / & L K U / / M K & * P #.& * K #.& & N y & & & % ", " * ^ & q % * : * A 1 / C y / # * / +.K X / / P #.& * K Y / & K #.& * K Y / & K * $ ", " * < & | { & *.% ^ _ / ( 1 / 1 % & P X / & P V & O P N & & N K & O N K & & N ./ $ ", " % / & q ~ & 6 { ) - / ^ | / # { / X / & R =.* O K Z m & R Z O * K +.& & R $./ / $ ", " & & # O / 8 ~ y : / y ../ # ~ / / * M #.& * K K O & M #. .& P N O / Y K m * U % ", " -.& & / 3 { = : / { + / # { / & M Y & * K V X & M #.~ & M W S / Y W N * K * $ - ", " ;./ / p < y 3 / m : / # < / P #.& * N #.Y & N #.~ & R #.S & W #.N * N R / $ [ - ", " = / x ' = p / * : / ^ ' / =.& * M #.Y & R #.Y & R Z < / ~ Z K * R =./ & $ ! [ - ", " >.& & y 3 / & ; / ^ < / & * M #. .& Y #.Y & Y #.W & U K P X Y #.O * & % ! ! [ - ", " & % ; / * : / ^ l / / M W < / ~ W K / S V < / U V K X S U / / / % ! ! ! ! [ ", " & , / , p / ^ y / ,.K Y & W #.M O .K ~ / O #.S U & * & % $ $ $ ! ! [ - - ", " & / * 3 / I > / #.~ / ~ #.M & ~ #.< / m X X * & % % $ $ $ $ ! [ - - ", " / + / > ) / .& S K R * S V X & & * & * % $ $ $ $ ! ! [ [ ", " ' * / y > / / ~ W M / m X / / / & % $ $ $ $ ! ! [ [ ", " l & ' < / S V U * & m & m & $ $ $ $ ! ! [ [ ", " # & & / U m & / & $ ! ! ! ! [ [ - - ", " & / m & $ ! ! ! ! [ [ - - ", " 4 ! ! ! ! [ [ - - ", " "}; ��������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/pdf.xpm��������������������������������������������������������0000644�0001750�0001750�00000020701�13431646201�015567� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "48 48 172 2", " c #410341034103", ". c #FFFFFFFFFFFF", "X c #861796588617", "o c #86179A698617", "O c #79E7965879E7", "+ c #79E7924879E7", "@ c #79E78E3879E7", "# c #71C68A2871C6", "$ c #71C6861771C6", "% c #69A679E769A6", "& c #69A675D669A6", "* c #618571C66185", "= c #61856DB66185", "- c #59656DB65965", "; c #618575D66185", ": c #61857DF76185", "> c #69A67DF769A6", ", c #618579E76185", "< c #71C67DF771C6", "1 c #618565956185", "2 c #596565955965", "3 c #596561855965", "4 c #596569A65965", "5 c #596571C65965", "6 c #71C6820771C6", "7 c #618569A66185", "8 c #59655D755965", "9 c #51445D755144", "0 c #514461855144", "q c #514469A65144", "w c #86179E798617", "e c #79E79A6979E7", "r c #79E79E7979E7", "t c #69A6820769A6", "y c #8E389E798E38", "u c #8617A2898617", "i c #618582076185", "p c #492459654924", "a c #492455554924", "s c #410351444103", "d c #49244D344924", "f c #410349244103", "g c #410345144103", "h c #41034D344103", "j c #69A68A2869A6", "k c #8E38A2898E38", "l c #9E79AEBA9E79", "z c #9E79A6999E79", "x c #96589A699658", "c c #8E389A698E38", "v c #8E3896588E38", "b c #79E7A28979E7", "n c #96589E799658", "m c #861792488617", "M c #8E3892488E38", "N c #8617A6998617", "B c #9658A2899658", "V c #38E3451438E3", "C c #9E79AAAA9E79", "Z c #86178E388617", "A c #86178A288617", "S c #8E38AAAA8E38", "D c #79E7A69979E7", "F c #79E7820779E7", "G c #79E78A2879E7", "H c #8617AAAA8617", "J c #514465955144", "K c #9658A6999658", "L c #79E77DF779E7", "P c #30C23CF330C2", "I c #514459655144", "U c #514455555144", "Y c #861786178617", "T c #79E779E779E7", "R c #492451444924", "E c #71C675D671C6", "W c #71C6924871C6", "Q c #9658B2CA9658", "! c #8E38B2CA8E38", "~ c #8617B2CA8617", "^ c #9658AEBA9658", "/ c #69A66DB669A6", "( c #9658AAAA9658", ") c #79E7AAAA79E7", "_ c #9658BAEA9658", "` c #8E38BAEA8E38", "' c #8E38B6DA8E38", "] c #9E79BAEA9E79", "[ c #71C69A6971C6", "{ c #9E79B2CA9E79", "} c #BEFBCF3CBEFB", "| c #CF3CCF3CCF3C", " . c #D75CDF7DD75C", ".. c #C71BCB2BC71B", "X. c #D75CD75CD75C", "o. c #30C234D330C2", "O. c #A699AAAAA699", "+. c #79E7AEBA79E7", "@. c #69A6861769A6", "#. c #9E79B6DA9E79", "$. c #B6DAC30BB6DA", "%. c #DF7DE38DDF7D", "&. c #B6DABEFBB6DA", "*. c #CF3CD75CCF3C", "=. c #D75CDB6CD75C", "-. c #51447DF75144", ";. c #DF7DEBADDF7D", ":. c #A699B2CAA699", ">. c #8E38BEFB8E38", ",. c #79E7B2CA79E7", "<. c #A699BAEAA699", "1. c #AEBACF3CAEBA", "2. c #B6DACF3CB6DA", "3. c #A699C30BA699", "4. c #AEBABAEAAEBA", "5. c #BEFBD34CBEFB", "6. c #AEBAC30BAEBA", "7. c #C71BD34CC71B", "8. c #CF3CDB6CCF3C", "9. c #DF7DE79DDF7D", "0. c #9658BEFB9658", "q. c #8E38C30B8E38", "w. c #9E79BEFB9E79", "e. c #9E79C30B9E79", "r. c #A699BEFBA699", "t. c #9658C30B9658", "y. c #8617BEFB8617", "u. c #79E7B6DA79E7", "i. c #28A23CF328A2", "p. c #D75CE38DD75C", "a. c #38E3410338E3", "s. c #8617BAEA8617", "d. c #A699CB2BA699", "f. c #61858A286185", "g. c #AEBAC71BAEBA", "h. c #B6DAD34CB6DA", "j. c #20812CB22081", "k. c #596582075965", "l. c #AEBACB2BAEBA", "z. c #9658C71B9658", "x. c #79E7BAEA79E7", "c. c #B6DADB6CB6DA", "v. c #D75CEBADD75C", "b. c #8E38C71B8E38", "n. c #C71BDF7DC71B", "m. c #AEBAD34CAEBA", "M. c #8617C30B8617", "N. c #DF7DEFBEDF7D", "B. c #B6DAD75CB6DA", "V. c #A699CF3CA699", "C. c #9658CB2B9658", "Z. c #8E38A6998E38", "A. c #9658CF3C9658", "S. c #30C2410330C2", "D. c #BEFBDF7DBEFB", "F. c #9E79D34C9E79", "G. c #9658D34C9658", "H. c #69A69A6969A6", "J. c #9E79CB2B9E79", "K. c #9E79CF3C9E79", "L. c #A699D75CA699", "P. c #8E38CB2B8E38", "I. c #410359654103", "U. c #A699D34CA699", "Y. c #CF3CE38DCF3C", "T. c #C71BE38DC71B", "R. c #C71BDB6CC71B", "E. c #9E79D75C9E79", "W. c #9658D75C9658", "Q. c #492469A64924", "!. c #BEFBDB6CBEFB", "~. c #AEBAD75CAEBA", " . ", " X X o X o o o O O O + @ # $ % & * = = = = = = = = = = = - * * ; : > , ; ; ; ; ; ; ; ; ; ; , . ", " X o o o o o o O O + @ # $ < & = = 1 2 2 2 2 2 3 3 3 3 2 2 2 3 2 2 2 2 4 4 - - 5 5 - - - - - . ", " o o o o o o O O O + @ $ 6 % * 7 2 3 3 8 8 3 8 9 8 9 9 0 2 0 9 9 9 9 0 0 q 4 - 5 5 - - - 4 q . ", " o o w o w w w O e O + $ % & * = 2 3 8 8 8 8 8 8 9 8 9 3 9 2 2 4 4 - 5 5 5 5 , : : ; ; ; 5 ; . ", " o w w w w w w r O O e $ % * * = 2 8 8 8 8 8 9 9 3 9 0 9 9 0 4 - 5 ; ; , , , : t t : , , , : . ", " y w w w u w u r O O O $ % & * = = 2 2 3 2 2 2 2 2 2 4 2 2 4 - - ; ; , , : : i i i i t i > t . ", " y w u u u u u w e O 0 p a s d d f f f g f h h h f h h h h h f h s s s , i t i : i t j t t # . ", " y u k u u u u r r O 0 l z z x x x c v v v c c v v v v v X v X v c c s ; : i i , : t t t t # . ", " k u u u u u b r e O 0 l z z n x c v v v v v v v v m v M m v X X c y h 5 ; : , : : t t t t # . ", " k k N u u u b r r O 0 l l B x c x c v v v c v X m M m m X m m m v X h 5 ; , , : t t t t # # . ", "V k k N N u u b b b e 0 l C z x x c n v M M v v M m m m m Z Z A A Z Z h - - 5 ; > t t t # # # . ", " k S k N N N u N D e 0 l C z x v c n v M M M m m Z Z Z Z Z A F F G G h q 4 - ; > t t $ $ # # . ", "g k S S S H H N D b e J l K B x c c c v M 9 Z A A A F F F F F F L F L P I 9 2 4 = * % > > 6 $ . ", " S S S S S H H D D e J C B n c c v v M 0 Z U Y Y F L L F F L L L T T g R I 0 3 2 2 ; & > > $ . ", " S S S S H H H b D e J C n c c v M M M 9 A U = F F F Y A Z G G F T T g U I U 9 8 3 = = & & E . ", " S S S H H H H D D W J K y v c v m & Z 9 A a F F F & Z X c o m G F T d 9 U U U U 8 1 1 = & & . ", " Q S ! S S ~ H D e W 0 K n y c v M Z A I U a L F F Z m y B y c m F F a - 3 U 3 = 7 1 7 = = & . ", " Q ! ! ! ! ~ H D W # p K K B n 6 M Z A Y a a L F F m c + ^ B y X A F 0 t = U = 6 6 7 7 / / E . ", " Q ! ! ! ! ~ H r W # p K K K k c M m A Y a a F F F m c B Q ( k v A Y 0 t = 8 & $ $ & / / & E . ", " Q ! ! ! ! ) D W # $ p K K K B B c m m m I a a F G Z X k ( ( ( y A F I * = 1 = & < $ G L E E . ", " _ ! ! ! ! D D W # j p K ( K @ B c X v X 0 F a p G Z m y X K ( k A Y U = 7 = = & T + X F L T . ", " _ _ ! ` ' ) D W # W J ^ ^ ( K B B y k ; - c X 0 0 m m v c y y c c v 3 & % > E & < G m F L F . ", " ] _ _ ` ' ) D r W [ q { ^ ^ ( ( B B ( t ( k k c X 4 2 4 2 * Y } l B 2 6 6 $ < v x G G F F F . ", " ] ! ! ~ H ) D D r b q { ( ^ X ( ( B : t ^ ( ( , ; * * * | . .| 1 G = $ # B | ..X.| X m Z m . ", " ] ` ~ ) D D D D ) b q ^ ( ( ^ ^ ^ B : : ^ t t t ^ ( B B % Z | .o.X = @ z X.O.d ....P v c y . ", " _ ` ~ ) ) ) ) ) +.D q { ^ ^ Q { ( ( t t @.@.#.{ { ^ ( ^ ^ $.%.&.P C ; + *.=.V 0 c a V k B B . ", "V ` ` ' ~ ) ) ) +.+.) -.] ] #.] u Q t t ] ] ] ] #.#.{ { k { *.;.O.a :.> :. .*.o.o B y k ^ ^ l . ", " _ ` >.~ ~ ,.+.+.,.+.-.<.1.2.2.3.( 4.5.] ] ] ] { { 6.7.*...8.9.n 2 <.$ ..%.O.V ^ { { { { { :.. ", "V 0.q.` q.' ~ ,.,.,.,.j ;.;.;.} } 8.8.9.$.] ] w.e.*.%.*.c 8.9.;.& ; $.| %.9.9.9.;.$.<.<.:.:.r.. ", " 0.t.t.t.q.y.~ u.,.u.-.N ;.8.B 0 i.O.;.p.; w.S 7.;.$.P p z 9.;.3 m 4.$ 9.9.& P P a.O r.r.r.4.. ", " t.t.q.>.y.s.s.u.,.,.-.d.;.8.2 q f.e.;.;.% Q g.;.;.a.4 r.2.9.;.a.k r.$ ;.;.2 O 3.3.3.g.g.g.1.. ", " t.e.q.s.s.s.s.u.+.,.-.h.;.8.j.k.e.e.;.;.% O *.;.:.a.3.<.5.;.8.V 6.6.^ ;.;.a.S l.l.l.l.1.1.2.. ", " z.z.q.>.y.s.s.u.,.x.k.c.;.*.a.] e.l.;.;.2 O v.;.% 4 <.3.8.;.:.s 6.g.^ ;.;.a.3.3.l.l.1.1.1.h.. ", " t.z.b.q.q.y.y.x.u.y.k.n.;.:.h #.e.h.;.*.a.S ;.;.% + r.r.p.;.n - g.g.4.;.:.a.6.g.g.1.m.1.2.h.. ", " z.z.b.q.q.M.M.y.x.M.k.v.;.G q w.e.p.;.A s d.;.;.Z m r.6.;.N.E % g.g.$.;.:.- g.g.1.1.h.2.2.B.. ", " z.z.z.b.b.b.b.M.M.y.k.;.;.% # V.n.;.4.a.# d.p.;.8.C } p.N.;.Z o 6.g...N.Z 5 l.1.1.2.h.B.B.c.. ", " C.C.C.b.b.b.b.M.M.y.W ;.;.*.5.p.N.:.a.- V.3.h.N.N.;.p.Z.N.N.N.;.5.g.=.N.2 + 1.m.h.h.h.c.c.c.. ", " A.C.A.A.C.b.M.M.x.M.b 7.7.s - , S.j.h f.i f.@.t 2 2 j.i.O 2 2 V j.% 8.=.V Q m.B.B.B.c.c.D.D.. ", " F.A.A.G.A.b.M.x.u.M.c.v.$.i.D H.H.q.b.z.C.C.A.J.H r r K.V.! b u e.D.N.Z p B.B.c.c.c.c.c.D.D.. ", " L.A.G.A.P.M.M.y.x.y.c.v.l I.>.q.q.q.z.z.C.C.J.A.K.K.K.L.V.U.Y.n.m.Y.7.V O h.B.c.c.c.D.D.D.D.. ", " L.F.G.P.P.b.M.y.s.M.v.v.l @ 0.b.q.z.z.z.C.J.K.K.K.V.V.V.m.m.N.N.v.p., , h.h.B.c.c.D.D.D.D.n.. ", " L.F.G.G.A.P.b.M.y.y.D.{ l 4.N ~ z.C.C.C.J.J.K.K.L.V.U.U.m.m.c.6 p p , B.B.B.B.c.c.D.D.D.T.R.. ", " E.W.W.W.G.P.b.y.y.y.q.Q.Q.Q.q ) C.C.C.J.J.K.K.V.V.U.U.U.m.m.m.Q S 3.B.c.c.c.c.c.!.D.D.n.n.R.. ", " E.G.G.G.G.P.b.q.y.q.b.q.` q.z.z.z.C.J.J.K.K.V.V.U.U.m.m.m.m.~.B.B.B.c.c.c.c.c.!.R.D.T.n.n.n.. ", " E.A.G.P.P.b.b.b.q.q.q.` ! ` t.z.z.e.J.K.K.V.V.U.U.U.m.m.m.~.~.B.B.c.c.c.c.D.D.n.D.n.n.n.T.n.. ", " E.A.A.b.P.A.A.b.q.q.q.` ! _ 0.z.e.e.e.K.V.V.U.U.m.m.m.m.~.B.B.B.c.c.c.!.!.D.D.D.n.R.n.n.T.Y.. ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . "}; ���������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/GNUstepGlow.xpm������������������������������������������������0000644�0001750�0001750�00000030673�13431646201�017205� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * GNUstepGlow_xpm[] = { "64 64 264 2", " c None", ". c #232327", "+ c #090B0B", "@ c #000000", "# c #020302", "$ c #161315", "% c #2D322F", "& c #050505", "* c #020202", "= c #030303", "- c #010101", "; c #000100", "> c #0D0F0D", ", c #030404", "' c #040404", ") c #060606", "! c #080808", "~ c #0A0A0A", "{ c #0B0B0B", "] c #0C0C0C", "^ c #0D0D0D", "/ c #080908", "( c #060607", "_ c #030304", ": c #0A0F10", "< c #081513", "[ c #0F0F0F", "} c #121212", "| c #141414", "1 c #161616", "2 c #181818", "3 c #191919", "4 c #171717", "5 c #151515", "6 c #121313", "7 c #0E0E10", "8 c #09090A", "9 c #060506", "0 c #020102", "a c #111111", "b c #1A1A1A", "c c #1D1D1D", "d c #202020", "e c #232323", "f c #252525", "g c #262626", "h c #202121", "i c #131B19", "j c #101010", "k c #1C1C1C", "l c #282828", "m c #2B2B2B", "n c #2E2E2E", "o c #303030", "p c #313131", "q c #2F2F2F", "r c #272727", "s c #131313", "t c #161514", "u c #080809", "v c #323232", "w c #353535", "x c #373737", "y c #383838", "z c #393939", "A c #333333", "B c #757575", "C c #A0A0A0", "D c #A5A5A5", "E c #A8A8A8", "F c #AAAAAA", "G c #B1B2B2", "H c #596363", "I c #1E3F3C", "J c #0F1010", "K c #242424", "L c #3A3A3A", "M c #3C3C3C", "N c #3E3E3E", "O c #3F3F3F", "P c #3D3D3D", "Q c #A2A2A2", "R c #D8D8D8", "S c #DCDCDC", "T c #DFDFDF", "U c #E1E1E1", "V c #ADADAD", "W c #1B2E30", "X c #2D2D2D", "Y c #343434", "Z c #404040", "` c #424242", " . c #434343", ".. c #DEDEDE", "+. c #E3E3E3", "@. c #E5E5E5", "#. c #E7E7E7", "$. c #E8E8E8", "%. c #E6E6E6", "&. c #E2E2E2", "*. c #727272", "=. c #080909", "-. c #1B1B1B", ";. c #363636", ">. c #3B3B3B", ",. c #414141", "'. c #444444", "). c #454545", "!. c #464646", "~. c #E4E4E4", "{. c #EBEBEB", "]. c #EDEDED", "^. c #EEEEEE", "/. c #ECECEC", "(. c #E9E9E9", "_. c #D3D3D3", ":. c #222222", "<. c #181A18", "[. c #474747", "}. c #484848", "|. c #494949", "1. c #B1B1B1", "2. c #F0F0F0", "3. c #F2F2F2", "4. c #F3F3F3", "5. c #E8E8E7", "6. c #888888", "7. c #1F1F1F", "8. c #4A4A4A", "9. c #4B4B4B", "0. c #B4B4B4", "a. c #F4F4F4", "b. c #F6F6F6", "c. c #F7F7F7", "d. c #F1F1F1", "e. c #D5D5D5", "f. c #2E3534", "g. c #4C4C4C", "h. c #B6B6B6", "i. c #F9F9F9", "j. c #FAFAFA", "k. c #EFEFEF", "l. c #686868", "m. c #0F1313", "n. c #4D4D4D", "o. c #B7B7B7", "p. c #F8F8F8", "q. c #FBFBFB", "r. c #FCFCFC", "s. c #EAEAEA", "t. c #AEAEAE", "u. c #4E4E4E", "v. c #D6D6D6", "w. c #0E0E0E", "x. c #353B39", "y. c #212121", "z. c #4F4F4F", "A. c #B3B3B3", "B. c #F5F5F5", "C. c #515151", "D. c #B0B0B0", "E. c #6D6D6D", "F. c #171A1A", "G. c #ACACAC", "H. c #7C7C7C", "I. c #141919", "J. c #292929", "K. c #535353", "L. c #565656", "M. c #585858", "N. c #AFAFAF", "O. c #DDDDDD", "P. c #D9D9D9", "Q. c #D4D4D4", "R. c #797979", "S. c #1F2321", "T. c #2A2A2A", "U. c #8D8D8D", "V. c #8F8F8F", "W. c #939393", "X. c #989898", "Y. c #9D9D9D", "Z. c #A3A3A3", "`. c #BFBFBF", " + c #C6C6C6", ".+ c #CDCDCD", "++ c #D2D2D2", "@+ c #D7D7D7", "#+ c #DBDBDB", "$+ c #E0E0E0", "%+ c #676767", "&+ c #393438", "*+ c #1E1E1E", "=+ c #787878", "-+ c #8C8C8C", ";+ c #8E8E8E", ">+ c #919191", ",+ c #969696", "'+ c #9A9A9A", ")+ c #A6A6A6", "!+ c #B9B9B9", "~+ c #C0C0C0", "{+ c #CCCCCC", "]+ c #D0D0D0", "^+ c #D1D1D1", "/+ c #090909", "(+ c #8B8B8B", "_+ c #A7A7A7", ":+ c #BEBEBE", "<+ c #C4C4C4", "[+ c #C8C8C8", "}+ c #CECECE", "|+ c #CFCFCF", "1+ c #C9C9C9", "2+ c #BCBCBC", "3+ c #141415", "4+ c #959595", "5+ c #999999", "6+ c #9E9E9E", "7+ c #B2B2B2", "8+ c #C3C3C3", "9+ c #C5C5C5", "0+ c #C7C7C7", "a+ c #171819", "b+ c #8A8A8A", "c+ c #929292", "d+ c #BBBBBB", "e+ c #BDBDBD", "f+ c #B8B8B8", "g+ c #B5B5B5", "h+ c #313133", "i+ c #A1A1A1", "j+ c #A9A9A9", "k+ c #9C9C9C", "l+ c #ABABAB", "m+ c #9B9B9B", "n+ c #1B2020", "o+ c #979797", "p+ c #A4A4A4", "q+ c #5D6C6B", "r+ c #9F9F9F", "s+ c #32312F", "t+ c #8E98A1", "u+ c #292829", "v+ c #909090", "w+ c #949494", "x+ c #7D7D7D", "y+ c #719292", "z+ c #3D4041", "A+ c #7F7F7F", "B+ c #838383", "C+ c #070707", "D+ c #5E5E5E", "E+ c #5D5D5D", "F+ c #808080", "G+ c #868686", "H+ c #898989", "I+ c #7A7A7A", "J+ c #5F5F5F", "K+ c #858585", "L+ c #777777", "M+ c #555555", "N+ c #595959", "O+ c #5B5B5B", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " . + @ @ @ @ @ @ # $ ", " % & * * = = = = * - ; @ @ @ @ > ", " , ' ) ! ~ { ] ^ ] ] ~ / ( _ - @ @ @ : ", " < & ! { [ } | 1 2 2 3 2 4 5 6 7 8 9 0 @ @ @ ", " ' ! ^ a 1 b c d e f g g g f e h c 2 } ] & @ @ @ i ", " ! ~ j 1 k d f l m n o p p p q q m r e c s { & @ @ @ t ", " u ] s b d g m q v w x y z z y x w A n r k B C D E F F F G H I ", " J ] | c K m o w y L M N N O O N P L x p e j Q R S T U U U T V [ @ @ @ ", " W ~ s c g X Y y M O Z ` . . . .` Z N L p b & E ..+.@.#.$.#.%.&.*.@ @ @ ", " =.a -.g q ;.>.O ,. .'.).!.!.!.!.). .Z N A | - V ~.$.{.].^.]./.(._.:.@ @ ", " <.^ 2 e n x P ,.'.).!.[.}.|.|.}.}.[.). .Z y | @ 1.$.].2.3.4.3.2.].5.6.' @ ", " ~ s 7.m Y M ` ).[.}.|.|.8.9.9.8.|.}.[.).` M | @ 0./.2.a.b.c.b.a.d./.e.-.@ ", " f.^ b g v >.,.).}.|.8.9.9.g.g.g.9.8.|.}.!.'.Z | @ h.^.4.c.i.j.i.c.4.k.$.l.@ ", " m.} d X y Z ).}.8.9.g.g.g.n.n.n.g.9.8.|.[.).` | @ o.k.a.p.q.r.q.p.a.2.s.t.@ ", " { 4 f v P .}.8.9.g.n.n.u.n.u.n.n.g.9.8.}.!.'.5 @ o.k.a.p.q.r.q.p.a.2.s.v.| ", " w.k m x ,.!.|.9.g.n.n.u.u.u.u.u.n.n.9.8.|.[.).5 @ h.^.3.b.i.j.i.c.4.^.(.T L ", " x.a y.q >.'.}.9.g.n.u.u.u.u.z.z.u.u.n.g.9.|.}.!.1 @ A.{.2.4.B.b.b.4.2./.%.T C. ", " f | K A O !.8.n.n.u.z.u.u.u.u.z.u.u.n.g.9.8.}.!.1 @ D.#./.k.d.3.d.k./.$.+.S E. ", " F.1 r ;.,.}.g.n.u.u.u.u.g.8.g.u.u.u.n.g.9.8.}.[.1 @ G.+.#.s./.]./.s.#.+.T R H. ", " I.4 J.z .|.g.u.u.u.n.[.>.>.P ,.!.8.g.z.C.K.L.M.O w N.O.&.~.%.#.%.@.&...P.Q.R. ", " S.4 T.L ).9.n.u.z.u.}.w c R.U.V.W.X.Y.Z.F 1.o.`. +.+++@+#+O.T $+T ..#+@+_..+%+ ", " &+4 m M !.9.n.u.z.n.Z *+] =+-+;+>+,+'+C )+G.A.!+~+ +{+]+Q.v.R P.R @+Q.^+{+ +g. ", " 1 m P [.g.u.u.z.n.P | /+=+(+U.V.W.X.Y.Q _+V A.!+:+<+[+{+}+]+]+]+|+{+1+<+2+p ", " 3+T.P }.g.u.z.z.n.N } ! =+(+(+U.>+4+5+6+Z.E V 7+o.2+`.8+9+0+[+0+9+8+~+2+t.| ", " a+r M }.g.n.u.z.u.,.a ! =+(+b+-+;+c+,+'+6+Z._+G.D.0.o.d+e+:+:+:+e+d+f+g+-+@ ", " h+:.L }.g.u.u.u.u.` w.! =+(+b+b+U.V.c+,+'+6+i+D j+V D.7+0.g+h.g+0.7+D.V C.@ ", " k ;.}.n.u.z.z.u.'.^ ! =+(+b+b+(+U.V.c+,+5+k+C Z.)+E l+G.V t.t.G.l+j+m+-.@ ", " n+q ).n.u.z.z.u.!.] ! =+(+b+b+b+(+U.V.c+4+o+'+Y.C Q p+D )+)+)+D p+Q l.* @ ", " q+e Z 9.n.u.u.u.}.{ ! =+(+b+b+b+b+(+-+;+>+W.4+o+5+m+Y.6+r+r+r+6+Y.W.d @ @ ", " s+w 8.n.u.u.u.8.~ ! =+(+b+b+b+b+b+b+-+U.V.>+W.4+,+o+X.5+5+5+X.o+M.@ @ @ ", " t+u+,.[.|.9.g.8./+! =+(+b+b+b+b+b+b+b+(+-+U.V.v+>+c+W.w+w+w+W.x+w.@ @ @ ", " y+z+[.8.9.n.u.z.z >.A+(+b+b+b+b+b+b+b+b+b+(+-+U.;+;+V.V.V.V.B+y.@ @ = @ ", " @ @ @ C+D+b+b+b+(+(+(+(+(+(+b+b+b+b+b+b+b+b+b+b+b+b+(+(+-+-+-+6.p @ @ - ' @ ", " @ @ @ @ ! E+b+(+(+(+(+(+(+(+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+b+F+w @ @ @ & ' @ ", " @ - - @ @ /+C.G+b+(+(+(+(+(+b+b+b+b+b+b+b+b+b+b+b+b+b+b+H+R.f @ @ @ & & = @ ", " @ o w r @ @ = n I+(+(+(+(+(+b+b+b+b+b+b+b+b+b+b+b+b+b+6.J+5 @ @ @ & & ' = @ ", " @ L Z ,.r @ @ @ ! 9.R.H+(+(+b+b+b+b+b+b+b+b+b+b+H+K+%+r - @ @ @ ) ) & = * @ ", " @ y P N O f @ @ @ @ [ P %+B+H+b+b+b+b+b+b+H+6.L+M+K & @ @ @ - ) C+& ' * - @ ", " @ w z L >.M g C+@ @ @ @ ' w.r '.M.N+O+L.C.x -.C+- @ @ @ @ = /+C+) ' = * - @ ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "}; ���������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/xdvi.tiff������������������������������������������������������0000644�0001750�0001750�00000014412�13431646201�016116� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*��� $h!B &lX$%,Yd4qK"\TaRH'%<br lfʏ/C<qJ ghɝ{4qȍzYj<S-@'O*|xSϟ`AEpaQnNIݺv*0 \89Ѣ(D8()K!YDR&_2^G"^|C7d ]NicG5+,YRg͚6PaŊ2 2$E P2eܔ)Ẁ>=,̉ .dy ˛Y| ON�H5$I6(L2$%PH%(BSbę8#H, &гmlAN1 51FSLQ0CđEQD]t5 p@;ZB Qq.0Bsd|wE[$DRa$H2I#-' <I',/H' %LCmlF#ZbF5 T0C%q4XaLH%[ }M7ThPIQ$CPBNs䚕 lϑ['=g"" 2" "' lO23ll| oCG%A1~QAMQ@0DٓpLaLsp0#Đ00"p$#}Uz$�dB@CJ4FhQ %DbPo%/b_ bYL!,2p%X5H^ 7p uD)dDQqDg,b1/b1_L0B p&p dǐ P#DTDԉ' QV'b"X&k"$hy|MJR7|C/VVy4E[lQН[Cˢ13}0 ''008RT.԰ -d# L6m@+Ak]F71n�\�Zp%X +D &"I*P3p! 6!½PX 1BSE+ F}!&Kv 0";) b$MD_70Ԋkxd@TP�7�D\0c( Pz$@XYx6Qp!f")a!2#Z>#B�=ZA_x3>�{ČKJ FZA .Ctz~_my(Ąa.<P畾`qC>^IaM{Xy0s2LcA04 Ea0`(m!^EW=ÀP$v!@" \$ EbDeh)<n=aM3F&+(b sXCaU`;=4 KaO؁ж+ mAtD�SdvU@,b""F:VJ!#b!dE>#hp>I Q_Y U@F2P4)l+'{!!FXـZ==uд M @ӁRl-A[QЧU  S*BajyXhG Qd�bV ݀R7 /H�t  hP7 v5Ԡaʅr`n?pQ4``S觎vIj�-CC)~P7jk+UԌ Y0&1̴B E(B Qdq@uEjPT @*QD(F‘l΂jv8sf (Ԅ�a€t9"r@K)ЧzC#j0ܠhIv.O wS�:FqE2&$I6Q=~T!oA*r#(AdgZM&p1;B�~~†@(paB|0O 3B݂` -BG%}6Ш04!R9VPcLJTNhG6P"fuoŤp\aC9F&$B~D$ a'>\hq:ln?)hap"?a,,ȘR~@{;JyPġňT) ‹,p1?{VP\O0fÉ�;lNK G4ā#Q.?IaDV!!ԩ 0f'd+G;o`7(�iTX[#a3)�Ѕj�'€'Ч|G k`Kyp_P.O?ш5ePf0eT@al+7QȱrWRBS4: p'€$pV'<J+P~pP@Y0bSGQ7q3%;(2pWp#Q05P 3H@00@0d[b3oP�7F p,+1tl=+,{D7@}&d$pp%Ld{-ybX0E*s0@MCCC0P}kc]�'%Dp`>\�9cv336s |+tkODgd|@Rp˅l4o4;2( c]Pn�_ AJ€dpAppFpP{)�/06PF� #['RpkmR PE=0q$@q6P�U�{.{4'ZZ˅D~7 H7&l# q <H 7HHLP[fKEx;&a2&|.sYDP)%\"/"PBP90M E=/KOЖ~�G'WZzl,C{TH7ZJW9LBHlH'D;dd:;;P$7pSpCb PX0cv0c0"P}VNn0]p Vp lptT=F0'/�g 55Z4KXȲH"|U2T4'IBHHG;[d~0GaP5` >puCp"(G%:;B�[6u011sh(%Rudgg" D p�7%r q.hHsL+Xy% @%�u?EKe LwH[Q3H*ZdXYH0fP`DP~\jo/ (h<o(o((LGȇ-LpWC%Р@ps6&7A.\:ȴ"P,u"IGO@$GLCJR0_0PH ++z8*v+*rr7) feТsp0Q|0^Z44zNSȴ\HPU4U<~t,#p%/p"/p$:\DdOYއPP,0|^:^(&hhhHnzHNSH)HEpA5&pohphvN&.肄4-up遀ttڂLp}pspspEL�k +W؅]38m؄MX8-MAHXHfh4dUȁ@g$OT5^Hc8x{8y~HHWH~TZoȩoȮoȲQ0)u\NWqbyp#pڃtpDJE4BfSVhhVq(؀ X5Xe`E7D+F+c~pTpb-pBpA4p> e0XZ;8mMj�(7i!4AHQ,Zfh6Ƅ6c>ȁn`ML7e.tpTvhoeX%8=>hPa�dbÈbxq rxS(S(S(})h*fФ(0kȂQ,IȧnA$=oȶ:Ȃ@o:C #ڗHg"G Ա{/6UH}؃i8s8h (s ȪȄ^ > aAȇaB(1Q((> gȀY"Y(y2Z&Z6&7j)3}pm�Hor(@:$pvP!8}-؄a8SX#8c 4im؆qXEh4(I(g؃=O Xhn i҅;eXꅇi6o|(h,ńb 8ne8lM lp}هmrD ]؁uirHuXف%E{T<kxGSXE7&k(Xnx'^bXX[ɁU;Z3[oRȇ6hE_aXpuah7X{uX%\!Tվ؁hQ lR(7؜kXO"04Ơ(qҕm$<m H1 a<+{X%^5Zh_/\}tnp򂸹eC�>43q`~XoMya*�칃6+8J�Y˅aܝVm)PL(q9I�*x'a]+YxY]]] XfZi"(hr(l| ݦ}N鍁؄ XdX#�{4ńV#dIܣ =9a(8(\]ڮ5�lლ!xg=bDXM؆-h.(n膢&<<C8.H-nX&qу$A4\}ؙ7R�+,:ȟ}X\8&h*ə ⹀3f0K]؇}X$P)IH k^e8?t Ppۅ`؆؁m褕zzBSG H$タ:8Cؾl _P_Y>�8-؂FpDk(\jO3 "Bv(]P(I xafށ4B{p婃]LcS0Y�@bk\ny^Z( (OLrlXz^_hD |U�}^5C%EP�!^ VFsi�Kf+fف%%U8%CXpD]XF ?wBbT}V~؃]裕A( (F08nR^7V˶+s5 .wk"<K5}}ZZȅYC'cPhHEUUWxքErkx؅OV^Z9dh4 (q%텇 GNN nذ6˖-4G%9[dŊV-Z0o\Zڲcz*.]:iS9s *qƎe˜9% Vc͚խ={,X0]ڄ;wWFvo QaİҐ̛9:aW@}zI.@0N3ˇhL:פQH<`Ĉ$;vTLP"F4/1bxs@ jԈ̮} bNYbV*C mXx$QD>%DU-o„ʍQn̘JJP #~gb(  pjD#,( _)ǗifiX"j ՙ,5(rX\xbigUvfhK-hcAhHT&=OMU<kjf)͘!(~2$> 0'2Ib$:g$ IbqR& 2#eYcBYugXb*7hH9heMmeNvئK*z<J:9`zJG&Ι˙,șt 5g%<$^z͎H(;b&$(ef)(Yb VXZleS.6bD٢fW!5Ӻ9`#CFc&'#P2A$6!2p"ذ&@Rcd;뢛ȓB=Jc!&*AJXw-:j^58L- $gc1ϷfaǝvevU@�������0�������0����������������������� ������� �"������������������������������������8�����������������������/usr/home/fatal/pascal//xdvi.tiff�Created with The GIMP�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/GNUstepGlow.tiff�����������������������������������������������0000644�0001750�0001750�00000026576�13431646201�017340� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*�j,��� $h!B &l@�G)j�"nj>n &J$iX�S P:@ Hlsd͞'gLiJVh%BJ6CV  `DP A5޸>Pu֬RBR*ToKIr0`�<!tf/X YB� v*h@NNge֩`@~P C * (0a†~ >8pÂ6,po +PC A�8� H[KNp F L@v t0@ 4p<!RH � (jZh:a"n!Z&N4Ƞ"!p!{p\ �Ёv='3($CU52puoPA{!�|JHzaVX` n ~C�a81Aq* nA@8Ezث& Jh"|Aw'Mp&;4͢9q20ҚA dP�-P�"HJV8Q$F YQBT@UAu4G m1D1 ] D mG 5UĐAyF X». !r0=x_0$H+#:m>TCM-m1<p!.?A)ATPCw1SKlpAWw\OC7GO\CpGs,pBmBe4`D `h`ĠOz�P@L(tT0e_ TVN;l1mcH"h`.A 7D51@SL GqW 0BĄBkR p2$X"dd#IHC"HшD\ E( 7@0$ad B*7 C HAv�@.bi cK\ qH s d &0' 9P1a 18p@B6,GQ#(F3"Pj Ũ@+Qz E(F#PBY(D9t IH@:^E�` +@Z0@b s]b `@:�M p@[iɎAf%x61V&uGx!NC*P4 LakZB8 HG P1(E1ZrTa�EE.a~pv X�05a{8`B06l$c^A9FjT B#! 5X( %BFP< ^A *@P�TL'%XPD e ld>\d@&0 d*Ġh б=\!~ґ\eF!*Q!4S/7ֶml+�_q `/qG;A!1jMD!rQ +$# p@0 *0=d C 28! 1H <� N0`!(@6o<PYdJ�#S!#R, L E vAԺk-` 3X=@�bH$#YF "V#nX5@GYGN|/Fv` Sj+SOB8En0{ pF&2Q7")D�- lP JP& * /AK+Jfh6ЀxN!|`,(KY36ls%u$ X>jBކ:`{8 4yD4ܸ<?/|c3)10e-`ŭ1/M�_FL!N@ �Nvˋt#y(B5R 'HBpla'=J& VpO"ѡЈȰL1@܀(̠+ 4CЂ-`;G EGBLTC.p2 d|e2O@_m? ~o_nů_�2~_m$NVP L+1:mC>P"B b/#`QrAfЇ% eh:@*zQ˜v,$.Y)�, W:Y[~V ^74Mm <.2 E _!_@__"Bkrײ [2p?dLxHDXb6TxhN|3@ +Ip_Yc9-6 vcZ5 iP'B/uR�*T$2 j"f2֥oPe m jp$4<�]>fq@S7 [g? #f?:S}`_`FP( _ $�%\w) h; XSU@Oȃ(mh^VhQȆh^B&5&(`8HkO=qU `>P:`�\#2lvrbqT4%4 | '�~|PCzpHdLx054 HL?p{/b?&s4`?`OD_DUMdD�vMX$HGפ_|(_(OdOHv_z/P}ЇgMxZvf!`v 3hH9p*]S]W^B B  40N&DBX\OBa *�! bd0pw2�ROh$�@o[t+<?+ LGKD?2cRil̆ll,M�[_X1휄_Ϲ\y8霅\_Ww_SθcH Ȁ" h[GӔ.�b�*y#�KBvEFX$|j.�~P)d[PopȂȀ<|(NG?LI- `b &l~b?!./b>AdNV-%R_8) ҆_8/*8-#2_p*ָI8[Ro3KP[viPU@Q zE$B( Q q$p`61EЋ[vt0h(< 01? I6A.l?a?1險-,$fu];@u_8-}:_: ;z_X mR":hOHTK P-0`q"&E 0@ՊDE_Ro42=b`N>`9P50;@Hp\Ȁr~R C7Q _ODv?o%V?lVo mUhVVqZ,bMDMm#8_ov_xjvkvv#8_E7S)ƅkȄZ�*lP&04 `!OxUlhM &954:F�&1*1 0� p?xHo*Sp7.ͼϪh9mVnނ?=>>)m lk6- 5%h7;nv_x�_x_x{X8zSᎄȃ6^Up(` I/Ai'>C�D\T4 rD �C{l\X:bE`Gqa0ȀdH֕f`'?jԐj^mV>>c`\>h֭Ylok˺n/x _0`@xko{I6%y[fh~(20fY0َOb`O4\2ah Hc&< *`n yj[p[PHT(<Ȅ$B@oJ + -b)]K�Y1 >6-4Ehx_x__^[_\E$Ɇ~\B(S�v $@�uU/E=2$<:$Ped7p-gHXH/(rh�wرy W n9ӹ4kZ y뱝qqsShIX[Zȅ^ ڀZEKՍg@ʄ[VHu1(thP30[6M 6 9ĥeU_ZNǮ@/A l9&2&`Ύ30p@0&v�uPK8 ǞOѪɚ1۵-_Yuu\6l׉ }߻z̲H[HVh*l(WhP#07!E- 4XNJ"0w-@Q 9z9c /p0l(Bhf�vxc Lp hܵ5[;^;y;9uDZu)70%h:3x9}:Y2\=@P<�[hNhH( `h30[race[DeE\,  z+4b}s00?H`(x́wl+Zbn>ۍ5?U<>?ݹ?y332svǁ]s)v(U8ʉ1m�yP$`P09֨,<Rŗ#uTZD@& C><QdZYZ�Pwh\(dR$B/7Hr]SSɱ=�uyq[N R)v:WxmC .hA(E0+�PR`-bR%Ę6#F .o;\\4. F iP [Wj83rzA�LZJK5z6:^횙y<5=/P_e_l$p:_2):s-W?R/2C-%؅_-߅_u+7A7�]xP+�YyP* K_@e?"�@� @C 4P@X0c'N4E)@( (YpG4?-\1K-N?g5bk_ǟ~7+_E-lWC;:ů~k_k0F?f( `ͯ={3 ynhbP"e*'&KlV!F*4P� 4x �� <` B6B1`ƴ,)t2bEdKUU*xGo~FViP*@?#$ ?%5<~Ɍ_#:*~i_:buӃe>.~Y_Ve#1%XHؙQ~I_G[BiA")$ $40[$C%`pDT(1w@ HDD�|ZE)dD CPw"T (VB A7?୑?k/UdSIRFx!l4ĐnR _IPcM-~i7b_z;e`8㎋zfnRdκ?~a_Hکc@rȢs $10NŃ ֜ R!,?*i Q�FQ$Cm#$rȠf0U69OY$jK.7 6bIk*Tb ~Iٓ_25גiuЩ?u֕e$~;ˮOeēg(Xڋm~E)n uHBH  3L$A*HA>asxɧ,P`_�~& LpeZGxQA ]/'t)FH'e�_ok[W@lA0b`lik!CTPhREbp+|"~mQ5~:G 3~6T' GÆ0/Z"_RnV4Kn hh Q: 60Xǀp.x `5<  �`�X, (@*, MpE0"$D%E00 o9�3)8R?"pMЂTDvƯf\!U"?r%/*2PԄ*4GchCQYHBff:8~HHꐆn! A DC&Fu{Af9$ [LI8`Db_ +P4o d�=8 ^B0,D%)(G *Qb0.S:֢\)nÀQ"_�)(_ IiFڐtEvUD,ҐLF9~QU=QZp1j]PTE~U;9��~! Y9G P " >AeB8Jp5#, O ` Y(A!A>ʑF`�E6 "PP*`T!H+ZT.i N" V|iŽ`EjwA ~{^~WgCm!QJ TE4 aiTHCrP9X<@|965ֱ$˕xD VpAR-`;x F:2ԢGF0eY EH(x�<Q.V0]v*`U8Zz4{۷vȢ ҃_asBޞθT( "Mh� #4j6 l) q(,`RI^5ib84jd`g @V=lD䣠-HG鐆i`UA+�zPfb|3�5uMh]t۵H9v< WFHE-zf^?@zЌ$~pC -e &ɿ kG&0@Z$=u"Ԡ+ z@+Tm)"l DqAB uۜVŶsvmzf5Gى|;w{7p{a z h�2r# 4LNV(@Z2 7"�hTKqK�` )AFp%P*4! "F\zZ#qX>3&^A\nӛF)p~6.]g{7uDEi ʤA/AxxAqhN r0@(K0C`B,KE4\L&v Iqw^M@O Jz �M=p{HhHrh>9q '�? )Sa]eA  Ev0Mv=?P-?wc#` {W_ 8Zh3!l+Ps01@,�B @wtF �(+QGt|z`A1U�p_H,(J,:9 Q hah  f !?=_wgaxh.dR?HPc0kbPP(Bfs\1+<+�e: EmF�aV0�#Wps4Ȇh&haiK�WH=P?h$tPHHЁ_TOdIO'ȅH,Ȁb_p}0KD`�6B �b/CV�Ppf%! �JFIFwpDjhɨIGEhLO?ʸ $LMLK0p̅_ddEȘ d)IkNHTȄ/P)0NC �~ h\N QxH}gF2| ZѴgptȀP(bh9.Aː ˷hfk_I:]L(J)l0o߰3w<-dE�iKHR(f$Ȅlte0N1z`�z` T@Q^(/rl^lRZ�A�au[wPU_Ȁ*:8 a(=cM6>2d|Nt/2?.ɟL/]Kĵtw _�(, BFā3H"(jpdVPu^~a.:ulf RPgR@LlZQ4AU�+;pl )8 a?�N{nSD / / +)|U.g{z_Ю/]w `WuqWJvHd׿SMH Ȃp+O�U`~ d`ֈ8@Gq.^i&W�'o#QuD) 0=0yp+@H#p�;jbPS8�C38;�[8C{HPp q}0K%10�=y0�mk_P]ЇKkoϔ�ݎhvK0�]PoKPv0-N͎KC0 0CFЅ 0cІ cЂ P888ЂcPUP}EP-;p!`pۖ]06�I,Kv/@onu<�#NFPd:\ |�V^ xP7ֺ<$lLȇ<RhR~N6h^>(z~&Ȃ�`hNh(6 �h`6hi.(Nvhath�h`(6:nh~( �~H>fhbWrh j,HWHI03`�NA :t%+⊨  <q H@2:`V>Lk%g!0tp0KdH$(`hHb|(Rȁ"(2"ȃ2"Ȇ2X(8mrȆ\m\Ȇ(8bHb(TȇT(Oȃ(<((((ȇ(g(_Hu,`Ȃ|(;(,(UȄD(ci 9˅Eb(XȆ|(pȄ<("kLȇpHdނdRk$o�S0+6AV @4 s"Wijfr$ON#@F,E.`` l";>=0Pm(O'[#oHgW�C2p (PhMh{hp_Rhw`'QFM0@(p@/(�(tpMp\ș pi�IT00O`7K'�]�3NePnqrvN�\$@�hg[.^#e\)|J`FG`*�^u-P}ɝ}S0 S0�k0'=ۣcT0+;k0;30;Mv�;#0;2c9!cSSc0:9!Pk0;q26Km�}509[P�c00klPIY` |`" >b%@bվof(5:7aH= @Q@@-�z f`v`N~�I_/&iob7&P�6�E`IqEO$MEY�EiePC[Œ^`D;YcEtcP Q7$ P} `BP@)C[6J9[,I`Q`n>KN-XkD@Aj-�~5Q iThq@)"E<,RZ`�f(`|txDG�6�NySN<\`Nv`N{`@L7J~+l{s`&TF`NJ~(7w}wF vE�jC`^`VF\ uI< @',as@&O^ʈ|_cy+Gfd+�f\< \b BR@G4 # RTn/ g6 3ti2+ 2H#CiHĈ!E6 # n H 7xLH!BQ2&:<ʆ6\Ä24h0A�xp@ p �P�ߨq͚h5@@  A 8PʁXH@ *QPGA *ThL4!Ξ :$h!,>eU+@-}-РO8z?ؕ'Λeg?<r PG"@' kun_ V-آM:xsj݀ �(\wP݁ J` 2h`PIO`6U1찀 0U G" %ҰÍ8l<У = >8 B=xBFP3RtR�;RN%U}ț$?US 31tL`:lt/%뜳#<)LϨL ,Sכ5HYN-2J+%- *R+*++rʮR@jκꪭZmiFɦ������@�������@�������$-���������������� ������� �,���,-������X-������n-�������������������� �������v-���������R���������������/home/id/GNUstep/Library/Icons/gnustep.tiff�Created with The GIMP����-��%��=������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/Makefile.am����������������������������������������������������0000644�0001750�0001750�00000002040�13431646201�016320� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ defsdatadir = $(pkgdatadir)/Icons defsdata_DATA = \ BitchX.tiff\ BitchX.xpm\ clip.tiff\ clip.xpm\ defaultAppIcon.tiff\ defaultAppIcon.xpm\ defaultterm.tiff\ defaultterm.xpm\ draw.tiff\ draw.xpm\ Drawer.xpm\ Drawer.tiff\ Ear.png\ Ftp.png\ GNUstep3D.tiff\ GNUstep3D.xpm\ GNUstepGlow.tiff\ GNUstepGlow.xpm\ GNUstep.tiff\ GNUstep.xpm\ GNUterm.tiff\ GNUterm.xpm\ GreenWilber.png\ ICQ.png\ Jabber.png\ linuxterm.tiff\ linuxterm.xpm\ Magnify.tiff\ Magnify.xpm\ mixer.tiff\ mixer.xpm\ Mouth.png\ Mozilla.png\ notepad.tiff\ notepad.xpm\ pdf.tiff\ pdf.xpm\ Pencil.png\ Pen.png\ ps.tiff\ ps.xpm\ README\ Real.png\ real.tiff\ real.xpm\ sgiterm.tiff\ sgiterm.xpm\ Shell.png\ Speaker.png\ staroffice2.tiff\ staroffice2.xpm\ TerminalGNUstep.tiff\ TerminalGNUstep.xpm\ TerminalLinux.tiff\ TerminalLinux.xpm\ Terminal.tiff\ Terminal.xpm\ timer.tiff\ timer.xpm\ wilber.tiff\ wilber.xpm\ Wine.png\ write.tiff\ write.xpm\ XChat.png\ xdvi.tiff\ xdvi.xpm\ xv.tiff\ xv.xpm EXTRA_DIST = $(defsdata_DATA) ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/defaultterm.xpm������������������������������������������������0000644�0001750�0001750�00000020436�13431646201�017337� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "48 48 165 2", " c None", ". c #000000000000", "X c #10400C300820", "o c #082008200820", "O c #186118611861", "+ c #28A224922081", "@ c #28A228A228A2", "# c #4103410338E3", "$ c #514451445144", "% c #596559655144", "& c #618561855965", "* c #965892488E38", "= c #9E7996588E38", "- c #9E799E799658", "; c #9E79A2899658", ": c #AEBAAAAAA699", "> c #AEBAAAAA9E79", ", c #A699A6999658", "< c #9E799A698617", "1 c #9658965879E7", "2 c #514455554103", "3 c #186114511040", "4 c #104010401040", "5 c #208120812081", "6 c #41033CF338E3", "7 c #492449244103", "8 c #79E779E771C6", "9 c #8E388A288617", "0 c #DF7DDB6CD75C", "q c #E79DEBADDF7D", "w c #EFBEEFBEE79D", "e c #EFBEEBADE79D", "r c #E79DE79DDF7D", "t c #E79DE38DDF7D", "y c #DF7DDF7DD75C", "u c #D75CD75CCF3C", "i c #D75CD34CC71B", "p c #CF3CCF3CC71B", "a c #C71BCB2BBEFB", "s c #BEFBC30BB6DA", "d c #B6DABAEAAEBA", "f c #B6DAB6DAA699", "g c #A699AAAA9658", "h c #A699A6998E38", "j c #965896588617", "k c #186118611040", "l c #208120811861", "z c #618565956185", "x c #9E799E799E79", "c c #CF3CCB2BCF3C", "v c #FFFFFBEEF7DE", "b c #F7DEF7DEF7DE", "n c #F7DEF7DEEFBE", "m c #EFBEF3CEEFBE", "M c #DF7DDB6CCF3C", "N c #D75CD75CC71B", "B c #B6DABAEAA699", "V c #AEBAB2CA9E79", "C c #96589A698617", "Z c #96589A6979E7", "A c #20811C711040", "S c #FFFFFFFFFFFF", "D c #D75CDB6CCF3C", "F c #CF3CCF3CBEFB", "G c #9E799E798E38", "H c #8E38924879E7", "J c #79E7820769A6", "K c #79E77DF76185", "L c #596559654924", "P c #8E388E388617", "I c #8617820771C6", "U c #69A669A66185", "Y c #49244D344103", "T c #38E33CF330C2", "R c #28A22CB22081", "E c #0000000028A2", "W c #000000002081", "Q c #861786178617", "! c #596555554924", "~ c #28A224921861", "^ c #BEFBBEFBAEBA", "/ c #618565955965", "( c #514455554924", ") c #28A2249238E3", "_ c #104004104103", "` c #104000004103", "' c #1040000038E3", "] c #0820000038E3", "[ c #0820000030C2", "{ c #0820000028A2", "} c #9E799A699658", "| c #28A228A21861", " . c #186100005144", ".. c #104000004924", "X. c #28A22CB21861", "o. c #30C22CB22081", "O. c #61855D754924", "+. c #30C230C22081", "@. c #208124921861", "#. c #59655D755965", "$. c #618565955144", "%. c #30C234D32081", "&. c #38E334D328A2", "*. c #618561854924", "=. c #38E33CF328A2", "-. c #4103410328A2", ";. c #4103410330C2", ":. c #4103451430C2", ">. c #4924492430C2", ",. c #49244D3438E3", "<. c #618569A65144", "1. c #38E338E328A2", "2. c #5144514438E3", "3. c #59655D755144", "4. c #69A669A65144", "5. c #618565954924", "6. c #596559655965", "7. c #A699A2899E79", "8. c #F7DEF3CEEFBE", "9. c #69A671C65965", "0. c #69A66DB65144", "q. c #082004100820", "w. c #71C675D66185", "e. c #71C675D65965", "r. c #AEBAAEBAAEBA", "t. c #C71BC71BB6DA", "y. c #71C679E76185", "u. c #71C679E75965", "i. c #51445D754924", "p. c #8617820769A6", "a. c #B6DAB2CAAEBA", "s. c #71C67DF769A6", "d. c #8617861769A6", "f. c #596561854924", "g. c #8E388A2869A6", "h. c #8E388E3879E7", "j. c #8617861771C6", "k. c #9658924871C6", "l. c #86178A2871C6", "z. c #CF3CCB2BC71B", "x. c #D75CD34CCF3C", "c. c #8E388A2871C6", "v. c #D75CD75CD75C", "b. c #BEFBBEFBBEFB", "n. c #A699A699A699", "m. c #8E388E388E38", "M. c #8617820779E7", "N. c #71C671C671C6", "B. c #71C671C669A6", "V. c #69A66DB669A6", "C. c #8E38965879E7", "Z. c #69A671C66185", "A. c #79E77DF769A6", "S. c #69A66DB65965", "D. c #AEBAB2CAA699", "F. c #B6DAB2CAA699", "G. c #514451444103", "H. c #30C234D330C2", "J. c #CF3CD34CC71B", "K. c #20811C711861", "L. c #38E338E330C2", "P. c #000004100000", "I. c #104014510820", "U. c #9E79A2898E38", "Y. c #104010400820", " . . . . . . X . ", " . o o O + @ # $ % & & * = - - ; : > , ; < 1 2 3 . ", " . . . 4 5 6 7 8 9 9 0 q w w w e q q r t y y 0 u i p a a s d f g h j 2 k l l ", " . z x c v v v v v v b b b n n m w w w e q r r t y M N N i s B V h C 1 h Z 2 k A 3 ", " O S S S v v v v v v b v n n n m w w w e e r r t y D N F s f > G H J K C h L A l k ", " O S v v v b v v v v b b n w t i s : , P I U L Y T R l O E E W W W W Q q V ! A ~ k ", " O S b w y p ^ > j 8 / ( ) _ _ ` ' ' ] ] ] ] [ [ [ [ { E E E W W W W } w V ! l | A ", " O v r U . . . ........._ _ ` ` ' ' ] ] ] ] [ [ [ [ { { E E W W W W } w f ! ~ X.A ", " O v w & . . . ........._ _ _ ` ' ' ] ] ] ] [ [ [ [ { { E E W W W W } w f L ~ o.l ", " O v w & . . . ..........._ ` ` ' ' ] ] ] ] [ [ [ [ { { E E W W W W - w f O.| +.@. ", " O v w #. . . . ........._ _ _ ` ' ' ] ] ] ] [ [ [ [ { { E E W W W W x w f $.X.%.~ ", " O v w & . . . ..........._ ` ` ' ' ] ] ] ] [ [ [ [ { { E E W W W W x w f $.o.&.%.. ", " O b w & . . . ........._ _ ` ` ' ' ] ] ] ] [ [ [ [ { { E E W W W W x w f *.o.=.-.3 ", " O v w & . . . ..........._ ` ` ' ' ] ] ] ] [ [ [ [ { { E E W W W W x w B *.+.;.:.l . ", " O v w #. . . . ........._ _ ` ` ' ' ] ] ] ] [ [ [ [ { { E E W W W W x w B $.%.>.,.A . ", " O v w #. . . . ........._ ..` ` ' ' ] ] ] ] [ [ [ [ { { E E W W W W x m ^ <.1.2.2 l . ", " O b w 3. . . . ...........` ` ` ' ' ] ] ] ] [ [ [ [ { { E E W W W W x w ^ 4.;.L *.@.. ", " O b w #. . . . ..........._ ` ` ' ' ] ] ] ] [ [ [ [ { { E E W W W W x m s 4.:.*.5.~ o ", " O v w 6. . . . ........._ _ ` ` ' ' ] ] ] ] [ [ [ [ { { E E W W W W 7.8.s 9.,.<.0.X.q. ", " O b w % . . . ..........._ ` ` ' ' ] ] ] ] [ [ [ [ { { E E W W W W : 8.s w.2.9.e.o.o ", " O b w #. . . . ........._ _ ` ` ' ' ] ] ] ] [ [ [ [ { { E E W W W W r.8.t.y.2 u.K +.. ", " O b w % . . . ........._ ..` ` ' ' ] ] ] ] [ [ [ [ { { E E W W W W r.8.a y.i.J p.%.. ", " O b w 3. . . . ...........` ` ` ' ' ] ] ] ] [ [ [ [ { { E E W W W W a.n F s.i.p.d.1.. ", " O b w 3. . . . ..........._ ` ` ' ' ] ] ] ] [ [ [ [ { { E E W W W W a.n p J f.g.h.=.. ", " O n w % . . . ........._ _ ` ` ' ' ] ] ] ] [ [ [ [ { { E E W W W W a.n i d.5.g.H %.. ", " O b e #. . . . ..........._ ` ` ' ' ] ] ] ] [ [ [ [ { { E E W W W W a.n i j.5.k.H +.. ", " O b e #. . . . ........._ _ ` ` ' ' ] ] ] ] [ [ [ [ { { E E W W W W a.n i l.5.1 1 %.. ", " O n e 3. . . . ........._ ..` ` ' ' ] ] ] ] [ [ [ [ { { E E W W W W z.n N l.<.1 j %.. ", " O n e 3. . . . ...........` ` ` ' ' ] ] ] ] [ [ [ [ { { E E W W W W x.n N c.5.1 C 1.. ", " O n q #. . . . ..........._ ` ` ' ' ] ] ] ] [ [ [ [ { { E E W W W W v.b N j.5.1 C =.. ", " O n q 3. . . . ........._ _ ` ` ' ' ] ] ] ] [ [ [ [ { { E E W W W W v.b D l.5.1 < 4 . ", " O n m b.: n.n.7.} * m.m.9 Q Q Q M.J 8 N.N.B.V.V.V.V.V.U U z z z z & r b D d.5.C.J . ", " O b b b n n n n n n n n n n n m n n n m 8.8.8.w w w w w w e e q r r t y u p.f.C.Z. ", " O n b n n n n n b b n b n n n m m m 8.m 8.m 8.w m w w w w e e q r t y M u A.f.H S. ", " O n n n n n n n n n n n n n n 8.n n m 8.m 8.m w w w w w e e q q r r y 0 N K f.l./ ", " q.9 m.m.m.9 n.t.z.p i N D 0 t r q e w w w w w w w w w w e q q q r t y 0 N S.2 9.2. ", " O a t.s ^ f D.> F.N y i a a t.s ^ f f d > , G L ,.w.S.A.j < y.2.G.H.X ", " X > 7.: f s a a 0 0 u J.p N N N 0 N 0 r t r t 5.,., K K j j L K.. ", " . 7 L.L.L.L.&.&.L ;.-.=.1.1.1.1.1.1.1.1.&.&.&.l ~ 4.0.! l P. ", ". P.( o.+.+.X.~ l A 3 I.I.I.I.3 k ~ L q.. ", "o . . 6 4.L :.L.R | l k 4 I.I.4 k o.,./ 4. ", "o q.H.x z.B p.h > > > U.l.0.2.1.+.+.%.-.L A.S.,.~ L.l &.+ . ", "o V.q m w w q y y t q q t i > p.L -.o.~ A k 3 3 3 Y.=.p.c.p.-. ", "q. $ V.b.c z.r n 8.w 8.w w w w e q t D a f , h.w.1.:.<.# O . ", "q. . . q.O l l K.l 5 K.K.O O O O 3 4 X P.3 . ", ". ", " ", " "}; ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/Pencil.png�����������������������������������������������������0000644�0001750�0001750�00000021257�13431646201�016217� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq���gAMA�� a���bKGD������ pHYs�� �� ���tIME (@�� �IDATx{ieWu޷ 7ZZ c3I;E\1eDQ!T\$H-pm"`ʱ1`2FP[cwMw8ʏ{u#Uιw'\z׻�Ѿdž �hfvz@[Kjf8JF[nV֨ABlͮ=c3;@`(94K@:ᱡ"@&}q?·nV?s8@�ض�l�lȶ|`ͺJP2-OŽCB8|AP589p Hqzlf�HDI>˹GMߝK,D̾1n?8c"k(ځU|G0eMxQ5<04(@\?BJD=he13w໣�bfQ j^?/󊯸8] X$Ʈbl?wVR2J,D1})-af;OL@{K?D =[R'@ Z]#l c;͏5h~a.D8M&ĦE芳?gdN{ qO~�f "+h~>7/pXce #-& )0/т?K6B3 >[UJ |b77`J43ukl98[Ea#.P~R p3oD +*(iJ))p�ŤTmvg719g-]8*#b M 5Ok&l&!8zi{gքi?wqHGtرc|QIYĉ0 fELChRYyGN$4 R#`|;^3ޑ8x O|p2aޛ Wa#%6Y$f;NVtM7?F�aUe� DDH#y�(>XH@�hD{`f0_q\$pv~? !�zf힓3v)df,Ҵ҇__93S�t-$U՛o��n f1)"Bc,<Y$ U5,]ק9733fgg,rf">.y)Xաx嶦z+僀"~7Q~|1\YO3EHn{gwzzK4tsx\."üfDp8 c瘉ADy<wYyg޼eK."^)&y}KsnEϢN-. ^Pk_|tPbLg|?}\U;x!q "D/ Bn8C|S]FB{"r\Y8ܹ;zsdCRlQ+fb~fwsT8Wdsͬiu6ΓO.|_</}:Y6@Dx*&D)%@LlّYb3FJ#DD{)JmH:zރ'6+=h` FhhL �pibH\>PѲ-6spB\ND�*1swLCҹvat/"g8�@;3gG g&1$LzdžǷ|wy/6g5kj̞)fi 䛬ʐ::#JʪFsvf|}찐$@'&|tt`}�s%UD\y rD8fEpyy"1\5z�2bxjau 7GJS~e8'3Iu&lYR ǍefoʲK&܃ˋ|dgι{1;fnZ'9ŦM3`Cr�:Cs{E|7ZJ\~XЬ8S[,rk,`YUgmAvrmِ{9 /,H0l<gu]w݅~ RR3c3Uef晙33H5q�*˂BdIGq8~uk4=�..k\^YHDP$Mh�AxeZHJP"O_W^3c9;UZ"0ck`00}r'O>TfUY{6df, 뚽wԂg3x6�"�?8pꑥ!%\LKc$84d2<11�f/-~*2}IDݠPLfFDcӦMBk mYM!)xc*�{+zު. ueư8ˣS4OD1j,wMM*] \wYXvJ˫ �8p�eY`f fUEQGgfV,DZl8H�$"#"zeޕW=DG\"ap@gK0Z[ (rx3ao2ȁo]ϼ,׳9G Hu]Qe H)a2Uy1BU 3sQc"v'hjTU�sfF9ff 4'MN^m5E_~M?GQExoH 3KJ!xx rHnޛ_{{+e^02,i-4??OIRh7o*T D9։ "s)%4M<,XD5` 9c$E+d�tʽWW hāF6 6%A3?HxrhX+4.9[}_)ffvf{DDMS*˂T*9A1b<{OkkkCDP%�"2�cfSU;""yK箍AD},,<ϝs<f3Lc?Nfy Y`WЪ+ u:{`ɻ#-+wqN)\{+W^{޹}sD$rv.cw^8\)RDL&BpXBh$iܔeYΜ9-[6]aSҕ tak'>%gMRN^J[jv' 9c4j-RXp&FnatLcafcf)IU-d*D)% rpo9y﬽oM%�#G93u՛;Oc{ꢞJ1 GDB 3ks9gpݶ{(t HSI,KxT:TH~VV7~W}r 3&I5윈,d? !&ཱིuM6v7VdSYZh0`iy?yS8FO 4(i n lX\aDw?,L9 pܕ_2!39aaqʌFD-4nd3z=Ԧɘ\ �ɲI-!7`3c"JD3O*'6Û奔{5Hz2B#̏m#,DxZ < Od80VnF= K/s`)yCS`BADI8&&$RRsN9MӰzRUzf&{d5 Lq8VoFf  \9\jP�rH`)G_0P7]_{kPH84( &QYEf! LM(hVcS"PզZ5PUfi Z.hk8 ,biD(zElD3m?&`h )a+1 8Ù10'!p9u?Ƙ�DLS)6H!iSת$%%YRԼGc<s "N,2] w@S|P,�*fJkp-wa|b 6VK-`%Z#8=qXL;Xx4fCžޅG_=eYaf#3#!8UUfggjAL65!@%4h,<s t!QՍ)pBz!2(10 3Piu1<NgěO,a(VMt?=7|m>msT"2.!4TUL5妱QC2TY$tᮞc< sa\YLB=f q q㵀<jmpz "N/-"U41|tؼ~+s&Ԓi JmC:�U f4 TQSRQc?zlRww# -Bq`33󰔳:H ,Yx &F]pKX Bqr0^`_| -fe��Tu=Md"LU9Ea`02U-jGuQL@₦�H@RJӖ\*&  P�.<19AaɰCpx0cWc/}p{{S -re&MljMZɭ0K ;{r1!2Yt))1A*`a\i^3K7, !:1%4= fEY˶]Zhs1oI@`f16SՎg1jj*Tm\d+@�Yj?Ua κab}o_8bFD@,: @Jg<;g~O=zeY1L mV3m\MXUUgoK{jfRr!$Kjq#ص ̏Hkc;oǝH@8'TU53B(�0=msgmp]>�3AURDDgff-)%14[jf,Be?{%5AQ.33fd(bBHO!E `s,9P9K_NX `#l6|SJKEɄiZR[#>[|g#3[J<dZ; 1FXZG_ll4LV)h0Q@hTFjJ(zs/<MT<Gd"8F !DEa!z]䫪<%{^.˒Z.& D2/CT͉Hffm.nH},KX>´UP b_s#e7fΙT54Kus(k `FIT-B1%h}'cDEQxJߪ;;J j@)O)Q!?I�FD9Ƞ �c{k^<3[e&̅,K3<˽w^X"F-&j@7MCf>WMuk:h{W$`Q#sΝzoRJ�5RB(B0@0$}W{x1Rr)M'"w5 HII:c�EQp4guG3>|.p "Ԫ�\g.%5fq"Mܤ98x>cmm`& f]]3yeO˴ jw�,شe؂0c�n X@{sNUKQ&u)x3kxFcE|ك!}jמgy�9'fBaU ;QmM<ni:i9HzFai>. EQpUU\UE!" 5j<<#]Ј%E:Dhdq4*>.z<V=hKF򴦔Re&>i\P7%3 b@ro9O!L[s<mqף Cz:^;KiiJ?7MC�rnPFUpqLF $ΗwsC,轧iˁ̚mA t$9RJ�M&U!R696�DQcl[gIFv8D�,K {&$dIBW" c0=l}iY,8e+/HUզV"sm�{瘩#{ZBL <`C G#K8k; s^mDT<_gͬV'5& A맭.UsH7A:�ڦF(ު**a2D#"Dnu-`uu :mHgΜʲ,s`tT9sŃ<_Ty3ڧ&ՉVsjI`ҋ\zWg>˘:9gDF螳sgmj 7ICjRu놽&DYҀ~޹7셦ix<>+0D|j}w({~y:Ѝl$>-<ȍz*"䜣<G �hC*˲E72 )MUS]7i<k k! q6m�4<ooܽ=˪Ѷ;}Yy,#Hy^,<yu"׾':]w̐RsB !wwN&ڳ's zz2Ï<z⼸<:�pu)CS c6i^ve7o]׆áWUjJĹYY'kvf2u]G|q1~6X?Ce`@o:2\񶷽[~4;;p~Ǐ?K_Y[n'�} �_n{{1ӑ#G4M_�$x<./}/ _[n=|s7iJ}c,D"e9y߷o_ j0wg?Y;R >Oկμ<O}j|qU |Moz/|ڱcǷ7c+Kn_Uwou^H/wVt˛B~/2]꫟wcvFә5=_rCg7_ZZ__RUԧ>"/q0Ģ(G?RJWn(f/_7| ?^Ξd2ɲ, /6x<y;�4cvŇ>?v]ϊ`fNU3L~o۫}B+nGU`U׿[GSJoO/ oCwnK~~{ݸdqq1;ydo֭{3Ƿ o(&?ַu~ _!3 {1h4Ro>z~F>ѷP8<ڒfzOq{|_͕;[H^nչiK/Yu'? G>mN;o~={b^13{_G|;qZ~ĉ q~w^y|:UH)n^GZ#jҐQJg )^p;<aoWn|W]ueef+_uUnԛߟ>jE׀iEKl oÏ͛;cWO<Y5ffVo>43;tз6}8tU6JUUڮ4\>ĥ}oRR~>MSSn̔eYv=7??w~έ0`uu5⋛__^vf:2zދ(�� IDATdZQՔR1Z4! 8ɳ,O~[^<Fw1` ?}U =o<gǘ$ܚ2UucY9�R׵ EQHQ]ۅ\^WL)%M3C4Z{HĹ$!QUClJgUժ.Ce Ȳ̦xn̾ :ҮRJj*83,LUx<VtF!ucfO26PUY=%sYd&dC&rH"$fFO 9I g9 sN,k5)`NmZ)J?~ HH~:!yÇ@H)O4FcF} w1@!,ݺx s7(UFD-DY-;R]שnꙈx&BN*~.V�*"ڞ'rZ-KmN;F*Й$ulyl'Α=ggDuUhu"^4pisACR񓪉>|x[|ˏ#rYמ~l]å^b<PA����IENDB`�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/xdvi.xpm�������������������������������������������������������0000644�0001750�0001750�00000021311�13431646201�015766� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "48 48 184 2", " c #410341034103", ". c #FFFFFFFFFFFF", "X c #965896588E38", "o c #965896588617", "O c #9658965879E7", "+ c #9658924871C6", "@ c #8E388E3869A6", "# c #861782076185", "$ c #79E77DF76185", "% c #79E779E75965", "& c #71C675D65965", "* c #71C671C65965", "= c #79E775D65144", "- c #79E77DF75965", "; c #861786175144", ": c #8E388A285965", "> c #8E388A285144", ", c #8E388E385144", "< c #8E388E3871C6", "1 c #8617861769A6", "2 c #79E779E76185", "3 c #69A66DB65965", "4 c #69A669A65144", "5 c #69A66DB65144", "6 c #618561854924", "7 c #596559654103", "8 c #514455554103", "9 c #5965596538E3", "0 c #5144555538E3", "q c #5144514430C2", "w c #69A669A64103", "e c #71C675D64924", "r c #79E779E74924", "t c #861782074924", "y c #86177DF74924", "u c #9658965871C6", "i c #8E388A2869A6", "p c #69A665955965", "a c #618561855144", "s c #618565955144", "d c #49244D344103", "f c #59655D754924", "g c #71C675D66185", "h c #69A665955144", "j c #618561854103", "k c #9E799A698617", "l c #59655D755144", "z c #514455554924", "x c #71C671C66185", "c c #86177DF76185", "v c #9E799A698E38", "b c #9E799A6979E7", "n c #596555555144", "m c #79E775D669A6", "M c #861786176185", "N c #8E3886176185", "B c #8E388A286185", "V c #861786175965", "C c #965896585965", "Z c #9E799E799658", "A c #9E799A6971C6", "S c #71C66DB65965", "D c #86177DF769A6", "F c #71C66DB64924", "G c #79E775D65965", "H c #965892486185", "J c #9E799A696185", "K c #9E799E798617", "L c #8E38861769A6", "P c #8E3886175965", "I c #9658924869A6", "U c #8E388E386185", "Y c #861782075965", "T c #965896586185", "R c #9E799E798E38", "E c #9E799E7979E7", "W c #9658965869A6", "Q c #69A665954924", "! c #86177DF75965", "~ c #A699A2898617", "^ c #9E799A6969A6", "/ c #71C66DB65144", "( c #A699A6999658", ") c #618565955965", "_ c #4924492438E3", "` c #96588E386185", "' c #AEBAAAAAA699", "] c #AEBAAAAA9E79", "[ c #A699A6998E38", "{ c #9658924879E7", "} c #8E388A2871C6", "| c #8E388A2879E7", " . c #69A66DB66185", ".. c #69A669A65965", "X. c #AEBAAAAA9658", "o. c #8E388E3879E7", "O. c #71C66DB66185", "+. c #A699A6999E79", "@. c #61855D755144", "#. c #618565956185", "$. c #514451444924", "%. c #79E775D66185", "&. c #8617861771C6", "*. c #A699A28971C6", "=. c #9E799E7971C6", "-. c #71C675D669A6", ";. c #AEBAAAAA79E7", ":. c #71C675D65144", ">. c #79E779E769A6", ",. c #79E77DF771C6", "<. c #AEBAAEBA9E79", "1. c #A699A2898E38", "2. c #B6DAB2CA9E79", "3. c #A699A28979E7", "4. c #6185618538E3", "5. c #AEBAAAAA8E38", "6. c #AEBAAEBA9658", "7. c #AEBAAAAA8617", "8. c #B6DAB2CA8617", "9. c #A699A28969A6", "0. c #BEFBBAEAB6DA", "q. c #BEFBBAEAA699", "w. c #B6DAB2CA9658", "e. c #B6DAB6DA8E38", "r. c #BEFBBEFB9658", "t. c #B6DAB6DA79E7", "y. c #DF7DDF7DCF3C", "u. c #E79DE38DDF7D", "i. c #DF7DDB6CD75C", "p. c #DF7DDF7DDF7D", "a. c #E79DE38DD75C", "s. c #EFBEEFBEE79D", "d. c #D75CD34CAEBA", "f. c #D75CD75CD75C", "g. c #96588E3871C6", "h. c #BEFBBEFB9E79", "j. c #B6DAB2CAA699", "k. c #C71BC30B9E79", "l. c #79E779E75144", "z. c #D75CD34CBEFB", "x. c #C71BC30BA699", "c. c #CF3CCF3CB6DA", "v. c #CF3CCB2B9E79", "b. c #B6DAB6DA9E79", "n. c #5144514438E3", "m. c #E79DE79DDF7D", "M. c #BEFBBAEA9E79", "N. c #BEFBC30B9E79", "B. c #C71BC71BA699", "V. c #CF3CCF3CA699", "C. c #BEFBBAEAAEBA", "Z. c #CF3CCF3CBEFB", "A. c #D75CD75CBEFB", "S. c #E79DE79DD75C", "D. c #CF3CCB2BAEBA", "F. c #CF3CD34CB6DA", "G. c #C71BC71BAEBA", "H. c #C71BC71BB6DA", "J. c #DF7DDF7DC71B", "K. c #C71BC30BB6DA", "L. c #CF3CCF3CC71B", "P. c #D75CD34CCF3C", "I. c #8617861779E7", "U. c #EFBEEBADE79D", "Y. c #D75CD34CC71B", "T. c #EFBEF3CEEFBE", "R. c #D75CD75CAEBA", "E. c #B6DAB2CAAEBA", "W. c #C71BC30BAEBA", "Q. c #DF7DDF7DD75C", "!. c #8E388E388617", "~. c #D75CD75CB6DA", "^. c #D75CDB6CB6DA", "/. c #EFBEEBADDF7D", "(. c #DF7DDB6CB6DA", "). c #BEFBBEFBA699", "_. c #DF7DDF7DBEFB", "`. c #C71BC71BBEFB", "'. c #AEBAAEBA8E38", "]. c #C71BC30B8E38", "[. c #BEFBBEFB8617", "{. c #C71BC71B9658", "}. c #BEFBBEFB8E38", "|. c #DF7DE38DC71B", " . ", " X X X o o o o o O O O + + @ # $ % & * * & & & & = = = = = - - ; : : ; ; ; ; ; ; ; > > > > , . ", " X X X X o o o O O + + < @ 1 2 & * 3 4 4 4 5 5 4 4 6 7 8 9 0 q 9 7 w e e r r r t y r r r r r . ", " X X X X o o o O O u + @ i # % * 3 4 p a s 4 s 8 d 8 f 5 & g * h 7 0 0 j e r r r t r r r r e . ", " X X X X X X k O O O u @ # $ % & 3 s s a s l 8 z 4 x g g g g 2 2 - c = w j r ; , , > t t t ; . ", "d X X X X X v v k b b b @ # % % & 3 a a a n 8 a x m g g g g g c # M N B V e w t C C , , , , , . ", " X Z X v v v v k b O A @ # - % & * 5 5 6 7 S D D $ $ $ $ $ $ # # M B B B B ; F > C C C , : C . ", " X X Z v v v v k b A u @ # # = G = = 5 7 & i 1 1 1 1 i # # M # M M N B : H H ; w > C C C C J . ", " Z Z v v v v K k b A u @ B # % G = G j 4 1 i L 1 # # # # # # M M B B P V B H : r e C C C C J . ", " v v v v v K k b b A u I U N - = = 4 6 # i i L 1 1 1 # # # M # M B B V Y : : : V F ; C T C T . ", " Z v v v R K k b E A u W U B - G = Q & 1 1 i L 1 # # # # # # ! # M P V Y V P B B y e C C T T . ", " Z Z v v R K K K K A W W H B - = = Q 1 1 1 1 1 # # # # $ # % & & - - ! Y Y Y V B U e : T T T . ", " Z Z Z v R R K K ~ b ^ W W B - = e / i # 1 1 # # $ $ $ $ % & S * & = - - - - V B U e ; T T ^ . ", " Z ( ( ) ) ) s s 6 6 j 7 9 0 q _ _ 8 ) s # $ 2 g g x S * * * 3 5 4 3 5 5 * & % 2 Y & e B ` H . ", " ( ( ( ) ' ' ] ] ( [ ~ k O { < } 4 | o s D m g x ...) ....3 5 p a a a a 4 * * x & % Q V B H . ", " Z ( ( ) ' ] ] X.[ [ ~ b { < } } s { o.a $ g x .O.* g - Y - = * ) a ) ..p ... . .x 7 % c # . ", " +.( ( ) ] ] ] ( [ ~ ~ O < } } 1 @.o.o.a 2 x x S * 2 # B U B B - 3 ) .... .l #.#.#. .$.x %.2 . ", " +.( ( ) ] ] +.[ [ K k O + < } L a &.| l g x x x x # B H ^ H B M * ..g $ .#. .m g .$.O.g m . ", " ] ( X...' +.X.[ K b O O u + @ i s m | l g x x * g N H ^ *.=.H B & & M W g #.m @ i p z .-.-.. ", " ] ] X. .] X.( ~ K b + u u + @ i 4 3 | l g x x g & B H =.;.A ^ U f g # I $ #.$ @ @ h a -.-.-.. ", " ] X.X...] ( [ K b O + + u + I @ & 6 | s $ g g & % M B ^ *.*.A :.o.n g # m -.m # 1 :.# 1 >.,.. ", "_ ] X.X. .+.[ ~ b O u u + + + + @ $ 6 2 4 B g % $ - M B W A *.= ~ o.n g 2 m m >.-.g = ^ < &.&.. ", " ] ] X. .( [ K b b b b u u u I @ @ 5 / / ^ W U B B B B @ W :.K K k k s 1 1 i 1 -.5 % A < &.&.. ", "d ] <.] .( 1.K b b b b b u u + I @ Y 5 j *.=.^ W W @ i B 4 k k K K ~ 3 @ < < L .s # u < | | . ", " ] ] ( 3 [ R K E E b b A u + I I @ U = q ^ *.*.*.^ ^ W * ~ K K K 1.1.K 3 + + # 3 & b *.O O b . ", " 2.] [ 4 K K K E E b u + I I I + @ @ B q ; ^ ;.;.;.*.% [ [ [ 1.1.1.1.R S + i = & u *.3.3.~ ~ . ", " <.] [ 4 K E E E E b A u + + u W W U W 4.; , ^ ;.;.# 5.5.6.[ [ [ [ [ [ R 6 V - u ;.7.7.7.8.8.. ", "_ ] 2.6.4 K E E E b b b A u u u u W U W w 9.; H 5.0.q.w.w.w.w.w.w.w.6.~ + 7 M *.8.8.e.e.e.e.r.. ", " ] 2.6.3 R k b E b b b A A A u u W W W F t.y.u.i.p.* } [ 6.w.w.[ K { < } O = r.a.s.d.r.r.r.r.. ", " 2.2.2.x v K k b b b b A A A A A I W W e t.t.v i.f._ 1 i i i < < < g.+ [ h.# d.s.p.j.3.h.h.k.. ", " 2.2.2.x Z R k b b b A A A A ^ A W I W e t.l.z.u.0.8 K + i @ < O ~ 5.x.x.x.x.# c.+.3 1 k.k.v.. ", "_ j.b.2...R K k b A A b A A u u u u u W n.- r.y.m.j.& h.h.M.M.N.x.N.B.B.B.B.B.i v.+ + h.V.V.V.. ", " j.q.2.3 k [ C.Z.=.b A A w.q.u u u u [ v a.A.S.p.+.$ N.D.y.F.B.B.B.y.y.B.G.F.A.H.J.V.V.d.d.d.. ", " b.q.2.* j.m.m.p.K.< b Z.m.u.O I W Z.i.L.( P.m.p.I.K U.s.s.Y.~ B.z.T.m.[ z.T.s.p.H.~ d.d.d.R.. ", " b.b.b.* v # ,.f.f.4 K.i.E.f.8 = W.Q.E._ * q.Q.i.m K [ ] Q.Q.g B.B.m.Q.!.6.[ Q.Q.-.i d.d.d.~.. ", " b.b.b.x k k o f.f.X i.g 0 2 _ k i.m.d l N.z.m.i.6 5.N.z.m.Q.a B.G.T.L.@.[ G.T.Q.) 5.d.R.R.~.. ", " q.q.b.x k k o K.i.f.o 0 i W # E.m.' d { N.A.m.L.a B.B.z.m.Q.a B.c.T.!...D.A.T.Q.) # ~.~.^.^.. ", " q.q.b.g o k o 2.Q.f.) = I + s p.Q.,...{ N.S.m.j.3 B.B.D.s.Q. .G./.i.a ( c.y.s.L.) + ~.^.(.(.. ", " ).q.q.2 k o O K.p.f.!.c I 6 1.m.Q.,.&.{ B./.m.] &.B.B.G.T.Q.o.Z.s.&.} D.c.u.m.E.g F.O (._._.. ", "d W.q.x.2 ] O ] i.] f.E.* 6 6 6 Q.f.-.0 0 B p.f.g 6 @ i @ u.f.I.p.< 0 1 < + i.i.!.a O O _._._.. ", " W.W.x.2 m.C.m.< 3 Q.f.x U @ @ Y.f.`.o K S.T.Q.v 7.v.v.V.s.Q.Q.q.s M.d.d.d.T.p.Z [ (._._._._.. ", " K.W.x.g p.f.# Q K.f.K.j.] = K f.f.f.P.7.p.i.i.m.^.V.V./.p.v s '.R.R.~.~.T.Q.P.P./._._._._.. ", " D.W.B.x.c.m 7 ^ t.].O &.# - B ].w.| | 6 5 B.< o.* s 5.V._.[ s ~ R.R.~.~.~.J.o !.&.{ O _._._.. ", " D.B.B.W.B.E 7.[.].[.].=.*.;.].{.{.8.3.;.v.v.w.7.7.k.V.V.V.5.w.R.~.~.~.(.^.^.x.2.2.F._.J._.J.. ", " D.x.x.B.x.M.h.[.[.].].].}.].].{.{.{.{.{.v.v.V.V.V.V.d.d.d.R.R.~.~.~.(.^.(.(.(.(.(._.J.J.|.|.. ", " D.).h.h.r.h.h.}.].].].[.[.[.{.{.{.{.{.v.v.V.v.V.V.V.d.d.R.R.~.~.~.^.^.(.(._._._.J._._.|.|.|.. ", " G.x.N.h.h.h.h.h.].].].[.[.[.].{.{.{.{.v.v.V.V.V.d.d.d.R.~.~.~.~.(.^.(.(._._._._.J._.J.|.|.|.. ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . "}; �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/sgiterm.tiff���������������������������������������������������0000644�0001750�0001750�00000013602�13431646201�016616� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*�|��� $h!B &l"F%j1bƊ'n 0)�)8  k4 ȍd>0 A TP&@�J Eti+äR)] %Y'_} :WVUjWLg9{)[wL?PIe <RNjDr")R>;vlrܑ7nvօ_n\sڙ?Ws¾?gsؖ?k׊?[,aմ?+3oΠ?S3nR:袊hJ!(!I%,AB@ |SIèI%?:ƙm~~+xo>oO^^w7R5 y?x?svy.988Mc?vd?XVEh6( Fr' 'r(((TQEPA=q@9^o/>'I, >-Y>I)7O' 2$3G9ɎsSɝ==cMf/?f??i?*$!bH ƖŔ"up…"PLj[A0Pfk/>K7⽩3A~j!Q4;Ȅssd}b!:#?'?ę?lŀ?UYdj��2RbB�3�" ldFI# R@ ,fk9MW2=<c9^ֳ\R?p3e$ R8CF�``��waH� �0p��0hP� E� r8 NrӜlg:D*9p5 � PT[v8?,`a'j:Jj�� ) @�" ]�A��䳘 �`�'@;   @ @$�2A0O'@N� !H?84JA~?p# .C@pD#HG6QrThF;я!�3 o#� $@�_n Dx`&4X'�( IrFR<d%+9:ђ"@ȀЁx],�`�+BX$"D. JԢ-G'z@wHTy` *WBP"!Rр�$,/yΫcx;)I?&(? nP"�DKp{\*azJgTQ*Mʐ)AʫHE %?r$�j12#-o5a:7`桚HTu$9Iqr-hGY`T,` AR`b8nq(QzKRf8*~Gh_צx7 * V(0<u? 3$}` ;SʀE؃@J#0J=(~CJ"CN P lj2?'bTEZ6>=bFL&4lquQ'q8r:Qt ,Ѐ xel?7t=PM/oC0�R%H^5:ca8 ֊;lau ?{\) 08(+[9D$d5�zЇx{ ѫ)e^;dg�UoIUp>01t0iU :ЀH$/401 #N.! Br~3p m ^Z ,a|=kD/*C+Saz5&u[[kF3rVA jewZ;Hx^-r G<Aj s(w<}5A@qN@0Gt ]B} @#Ս—޵mRQ[L?bWfDȫy>??T3y(ЁϡJM(%,ORŔԀ8Fr�c{p˹CEKȄTh�7us{o�@pMF&5X04xC x&t" t[7k~dzA52gs_'҅AhkP_0c#0 rap�0 'P \*ra ^T)q'q3q7@Aa4B 5M l]pk A w2\Sxg FZp�0K+@dg cPs/e *hRw{ OkZvLH6\ȅ $ų/Ќ)r)Yrwro_p0QhRp}B%{pUpw^zwktD,PwiӀ(J'�6N(C lȨsS1UM4-K0L8)~Hd߈e漨_xP1 pO0rmPtpOг7I&u�츣Nc'i!d0sH|pyW V^_vUW6!< O4Γ2]LC0�$ $Rj:: ?poUaJ@b0V`xgKJaQB4!@Xq5Y2J O ;,MȄaM%ɚ` &l%c�lD" �EpXhxҀi~`2=0wp`AϘLARg2/NI4SS6Uf4 7J)4O1P(�> N x%-9KX@00jH(^A}D<- v(vQKD�'@J) ط;CtuIfl74*%P*-"RMsrohh MҠpP@0nH]V])ZD{#x|/K%VZ@mcJi>v�(32pH[ʈ$h(DM�+8C/t*-2+ xtCgE0�SpnH PrFe%8H(LXc�YS 0/*v]ڇ#'F2T@XU{y^թ02 R&Xe70s'dHa4H4E`"O�O+F 0+(QZPF>P�"'om[ XP؏Mz�xhSXJgÅ 7x& q}ch OTHԌxge.ĪF(V1sj@h;F声V(PAK*$5\X%o!x# hA(#0nH7=HVckaRK#| Plƪ66Cc>nK{gqwq7�H�/kvUz5g ŎfeXutj50nHTe|,Z!& hin#1V[qom6kΞ*/#߁UX%Z'ؤ^6]Ȇ`sdn.äR?*(?"3u((*-^HDLPBk; Ĩ/3`p?G3qp{{[;[K+ 0?�S3X0?0@{iW G.? s=1h0_kDD!%9VnIWx<"j!R\RiIiRB?xNϩgҝf0N?###ƩL?Sb8]ǍC8M8{؀uq=*;#Qg0P/DN@FI xtə,x!haR 5ҬZJxI#逇pȥkr8Ks8=ր؞Y l؞�؄5et Ch^;П֘I!yZy))!2xKꅞi\v҃'x.2.]CYC֙˙Z%&%հ]؁u dlr-ހ01Fd�J[!lHR(BX) yj`؀ Xz9徜a[2n^2_^XV8.bᦧ%Y}؃m8gЀPUm;p*P�0LGp{)?|A! 耞tf )RN �)J<S E?b~|t{肿`6)Vh2CܡRH?ȇ<?;bW+pdb"PVLYp@?;`Vbѽ@=TNL(TJ<Tc=hӁ؆mX<uu+XE-!P I5"o؁s97<%zSr�8#}P?iq"(^��M,HtwPMDL% ?)�qRN`<v`B6j�6`jYW(e{?^?  [Yۼm�?`;�6`,4za ![uq '�D|+E�RP%eE�<S! |ue_\SD$Xd@($Yx"@zB@T?G2al�PE`�| �@@ h!B &lh"Ë$VA?DÉ?hC ?x ?Ȑ?HA+ h#G?,gɒp5j�QD  &,ʗ/۸iӆ<iסԿ@A+U*֟5RU+͟j2OhX%<pFT1!bC'>,eK?)R!A!6l"F[6,!CoD@yذa%߅ =ytߣݺuCoϞUʥC#8oYf M4~:R\d8@M(_aD ^htS ' ">R]K29QD$Öjz饛bs&ds8^yx?=>Gx???n??8#0dy2?Zi?)&?b?\pD?L1CkjY@E AINH@5@nFXaP9=eEb!B\pFl0Г4�T@ @$�= z�7T�xv5�������0�������0�������6���������������� ������� ����>������\������r��������������������*�������z���������R���������������/home/fatal/tiffs/sgiterm.tif�created with The GIMP��������w��������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Icons/Shell.png������������������������������������������������������0000644�0001750�0001750�00000007774�13431646201�016064� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq���gAMA�� a���bKGD������ pHYs�� �� d_���tIME ,&}��yIDATx[ˏEE>*j]]e50{�iZH0> '8mXVjd v_ʪ|WёR~#J|wܜ+YΝ;1Lp]Hyömض ˲P%,W(�`0 dY!�,KE4Q<B:jC=˲Y4aL �`6!MSi({h(/eYJbh=}G"@Q [#!ؘn%��Wo8W@OD08{QiHe��0:#! iJ1 b}& Av0hnS[8;5 C^Da,k#T Ws\i8#1�uR'V,k�@r纁rv�p D9+dhɩ߫}Frsw.P@�n8ARTA":}CsEyZ�;Wj"u*x\J;ZX'6VUqkާ;prVټE@Ŝ8"Jg㩐2ʊĂ N0O1TGooE4M$IRٙTTg9ZUο?I�V:BPU:$ 揾㮮ªҫpo}^E19\uyCAN/ʎ@z:kDeYO � qLDes&HE&<N ,#bnܣEi[ɹsyӉ 9s`{TѡqV+Nqӈ�'i`^.9D SlωVM[5jȿ~hL3ކ!N%N�ʫJ1T"եyt�ga;Ճo:UfH\feg6Tx@z~Jţ3^G poQTbO}x>[,@Pb7nڵkrҜ;x쪲 Tj+ccx뭷d=N{v|5i,5IQ.ia>Z6'y$ꫯO?ڵkxa۶֝%x4i�]BEwO~"+p&'UEGa0իsMҲ,)Ntqwsc{zGW *>lllǭ[\fzb%r&Q~#ThL "4 |7Enܸ {.n߾8Q\Iy~LԆwŎ8eٜaܹ?iʺ`Nwyׯ_g}[nsUgE*~ U"-jj�qv-_|KҥK}6V=:K8&6:BU0ut1PEVi#0<L&t:c4}AФ>|h**0ԖW~W.{K4MZ-zc{{imZ�YSB)fթ}19=*]a-鲵5�d2d2Ay0H@`;u@G8fpF VY"Ht:\|F�Ya6IsW(l6atd"hs"^(iwչ!U3PEvvv00dh4j$AY!IF# Xfi"I-9nu8@TbgllJΟ?0 ,1Nqppx= 2DQ4Ml6% ql6CEQ!2q$I͉jKSM,P qPvww'HGEml!2S$Itx,E*c HE(bN-yv+y0q[PYnooc8""F#i*tE$s8%wL&YGB\O,TUDeI'.Ԍ1+,h4)4qc8b:qmiY@ǘfȲ q>( 鸺vvvFue]<zHsv,-=s{N2eTۘfߗC=1QI(*09BeY�<>V!1 Yq/ê*a8tǏc<cwwW0 84L$pW(b_@��jm^K>~ �s/q8 @QX__GQxx0 믿b4! CoysV(* x'*H B&L sϴV5u&KCGE?tvdɪe0$^U&*o şa' 0?iN /@g LfʲX� �e<ϳ߭˲?~v p=<|fS ./~ Ǐl�*ՂNi4(~I \__w0kYl>p=|BÇ8w._,9'+W:Gs_UT@tsĹ}�`?t:,1'yGEQyBj5)b}}}_u~е[!D)/�L�eYJ… K/?ZeYn^wo۶AfCG@@C.P l4n_~g666zn7z /p8y8m߶�>��!'ր`(t qj;+++_|qimm?^pB-u#Pr��Z�qp��84a^;ּk׮_{+ϟ>Vl5mZ1� ���|0K < �>_+W\xo7 L}ߗ^ �0o  �*j)/^x�=ϻe=0p}sx nl6Q%(z_ J(p(!�@ #b��~{n^<xT j@Q8p]W�Gq*1**OpҥM5sj9D%J( X^^Fh6p]Z <CU*DA�'I"_f%zԃN+P B`8~<ϓIeQ!i\4] n޼y}ss'[et@=8A<iE- GNѐ t]cX%'Ap{7i/uSC)unlm2͹@w75wqW_}uU'R@>tv:R$IDAy8i+A( {l-|$UD8q �<q�3 :PPEb_u]U.g{>Y1;T-)Ku*U izP@GnuSY:}|T[ĠK\ZZa!,˄yNjqÑ:RE<>?zV;:j,:^1 0 NcZ%8pI*#TwWu@q�b�c�ቦS<<quneYEQGQyڶ != !<!0 #B8g!j>Ǒ#t�kȎ)#@[j)4}v=jV5!D0i�}0FaL}!D$Bb(C� $O_Z #����IENDB`����WindowMaker-0.95.9/WindowMaker/plmenu.ko.in���������������������������������������������������������0000644�0001750�0001750�00000013100�13431646201�015450� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������("윈도우메이커", ("정 보", ("정보 패널", INFO_PANEL), ("저작권 정보", LEGAL_PANEL), ("시스템 로드", SHEXEC, "xosview || xload"), ("매뉴얼 찾기", EXEC, "xman"), ("프로세스목록", EXEC, "xterm -e top") ), ("한 텀", SHORTCUT, "SHIFT+META+H", EXEC, "hanterm"), ("명 령 창", SHORTCUT, "SHIFT+META+C", EXEC, "%a(실행할 명령:)"), ("입 력 기", SHORTCUT, "SHIFT+META+I", SHEXEC, "ami || hanIM"), ("프로그램", ("터 미 널", ("한 텀", EXEC, "hanterm"), ("하얀한텀", SHORTCUT, "SHIFT+META+M", EXEC, "hanterm -fg black -bg gray75"), ("관 리 자", SHORTCUT, "SHIFT+META+R", EXEC, "hanterm -T 관리자 -n 관리자 -name root -e su -"), ("엑 스 텀", EXEC, "nxterm || xterm") ), ("네트워크", ("모 질 라", SHORTCUT, "SHIFT+META+N", EXEC, "netscape"), ("유 즈 넷", EXEC, "hanterm -T 유즈넷 -n 유즈넷 -e slrn -C"), ("이 메 일", EXEC, "hanterm -T 이메일 -n 이메일 -e mutt"), ("나우누리", EXEC, "hanterm -T 나우누리 -n 나우누리 -e ztelnet nownuri.net"), ("하 이 텔", EXEC, "hanterm -T 하이텔 -n 하이텔 -e ztelnet home.hitel.net"), ("천 리 안", EXEC, "hanterm -T 천리안 -n 천리안 -e ztelnet chonllian.net"), ("가 우", SHEXEC, "gau || gaui") ), ("문서편집", ("VIM", EXEC, "hanterm -T VIM -n VIM -e vim"), ("피 코", EXEC, "hanterm -T 피코 -n 피코 -e pico"), ("이맥스", EXEC, "emacs") ), ("그 래 픽", ("XV", EXEC, "xv"), ("GIMP", EXEC, "gimp"), ("GQview", EXEC, "gqview"), ("XPaint", EXEC, "xpaint"), ("XFig", EXEC, "xfig") ), ("도구모음", ("계 산 기", EXEC, "xcalc"), ("창 속 성", SHEXEC, "xprop | xmessage -center -title 'xprop' -file -"), ("글꼴보기", EXEC, "xfontsel"), ("돋 보 기", EXEC, "xmag"), ("컬 러 맵", EXEC, "xcmap"), ("강제종료", EXEC, "xkill"), ("클립보드", EXEC, "xclipboard") ), ("멀티미디어", ("믹 서", SHEXEC, "xmixer || hanterm -T AuMIX -n AuMix -e aumix"), ("MPEG보기", EXEC, "mtv"), ("MP3 연주기", SHEXEC, "xmms || x11amp"), ("CD연주기", EXEC, "xplaycd") ) ), ("창 관 리", ("다른창숨김", HIDE_OTHERS), ("모두보이기", SHOW_ALL), ("아이콘정렬", ARRANGE_ICONS), ("화면정리", REFRESH), ("세션저장", SAVE_SESSION), ("세션삭제", CLEAR_SESSION) ), ("작업공간", WORKSPACE_MENU), ("작업환경", ("설 정", SHEXEC, "#wprefs# || wmakerconf"), ("테 마", OPEN_MENU, "-noext /usr/share/WindowMaker/Themes ~/GNUstep/Library/WindowMaker/Themes WITH setstyle"), ("테마저장", EXEC, "getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/\"%a(테마 이름,파일 이름을 입력하세요:)\""), ("스 타 일", OPEN_MENU, "-noext /usr/share/WindowMaker/Styles ~/GNUstep/Library/WindowMaker/Styles WITH setstyle"), ("아이콘셋", OPEN_MENU, "-noext /usr/share/WindowMaker/IconSets ~/GNUstep/Library/WindowMaker/IconSets WITH seticons"), ("아이콘셋저장", EXEC, "geticonset ~/GNUstep/Library/WindowMaker/IconSets/\"%a(아이콘셋 이름,파일 이름을 입력하세요:)\""), ("배경화면", ("단 색", ("Black", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, black)'"), ("Blue", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#505075\")'"), ("Indigo", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#243e6c\")'"), ("Bleumarine", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#224477\")'"), ("Purple", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#554466\")'"), ("Wheat", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, wheat4)'"), ("Dark Gray", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#333340\")'"), ("Wine", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#400020\")'"), ("색지정", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"%a(배경색:)\")'") ), ("그 림", ("전체화면", OPEN_MENU, "-noext /usr/share/WindowMaker/Backgrounds ~/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -s"), ("타일형식", OPEN_MENU, "-noext /usr/share/WindowMaker/Backgrounds ~/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t"), ("가 운 데", OPEN_MENU, "-noext /usr/share/WindowMaker/Backgrounds ~/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -e") ), ("그래디언트", ("Sunset", EXEC, "wdwrite WindowMaker WorkspaceBack '(mvgradient, deepskyblue4, black, deepskyblue4, tomato4)'"), ("Sky", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, blue4, white)'"), ("Blue Shades", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#7080a5\", \"#101020\")'"), ("Indigo Shades", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#746ebc\", \"#242e4c\")'"), ("Purple Shades", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#654c66\", \"#151426\")'"), ("Wheat Shades", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#a09060\", \"#302010\")'"), ("Grey Shades", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#636380\", \"#131318\")'"), ("Wine Shades", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#600040\", \"#180010\")'") ) ) ), ("화면잠금", SHORTCUT, "SHIFT+META+L", EXEC, "xlock -allowroot -usefirst"), ("종 료", ("재 시 작", RESTART), ("재 시 작", ("BlackBox", RESTART, "blackbox"), ("KDE", RESTART, "kwm"), ("IceWM", RESTART, "icewm"), ("AfterStep", RESTART, "afterstep"), ("Enlightenment", RESTART, "enlightenment"), ("FVWM2", RESTART, "fvwm2") ), ("종 료", EXIT), ("새션종료", SHUTDOWN) ) ) ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/menu.hr��������������������������������������������������������������0000644�0001750�0001750�00000016237�13431646201�014525� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Text below is Croatian ISO-8859-2 * Postavke glavnog izbornika za WindowMaker * * Sintaksa: * * <Naslov> <Naredba> <Parametri> * * <Title> is any string to be used as title. Must be enclosed with " if it * has spaces * * <Command> one of the valid commands: * MENU - starts (sub)menu definition * OPEN_MENU - opens a menu from a file, pipe or directory(ies) contents * and eventually precede each with a command. * END - end (sub)menu definition * WORKSPACE_MENU - adds a submenu for workspace operations * EXEC <program> - executes an external program * SHEXEC <command> - executes a shell command (like gimp > /dev/null) * 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. * * 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 /some/dir [/some/other/dir ...] WITH command -options * * * <Parameters> is the program to execute. * * ** Options for command line in EXEC: * %s - substitute with current selection * %a(message) - opens a input box with the message 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 $HOME/bin/X11 * // set some background images * "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 */ #include "wmmacros" "Programi" MENU "Informacije" MENU "Info Panel..." INFO_PANEL "Legal..." LEGAL_PANEL "Sistemska konzola" EXEC xconsole "Opterećenje sistema" SHEXEC xosview || xload "Lista procesa" EXEC xterm -e top "Pretraživač manuala" EXEC xman "Informacije" END "XTerm u boji" EXEC nxterm -sb "Rxvt" EXEC rxvt -bg black -fg white -fn fixed "Xisp" EXEX xisp "Radni prostori" WORKSPACE_MENU "Programi" MENU "Grafika" MENU "Gimp" SHEXEC gimp >/dev/null "XV" EXEC xv "XPaint" EXEC xpaint "XFig" EXEC xfig "Grafika" END "X File Manager" EXEC xfm "OffiX Files" EXEC files "LyX" EXEC lyx "Netscape" EXEC netscape "Ghostview" EXEC ghostview %a(Enter file to view) "Acrobat" EXEC /usr/local/Acrobat3/bin/acroread %a(Enter PDF to view) "TkDesk" EXEC tkdesk "Programi" END "Editori" MENU "XFte" EXEC xfte "XEmacs" SHEXEC xemacs || emacs "XJed" EXEC xjed "NEdit" EXEC nedit "Xedit" EXEC xedit "VI" EXEC xterm -e vi "Editori" END "Razno" MENU "Xmcd" SHEXEC xmcd 2> /dev/null "Xplaycd" EXEC xplaycd "Xmixer" EXEC xmixer "Razno" END "Pomoćni programi" MENU "Kalkulator" EXEC xcalc "Informacije o prozoru" SHEXEC xprop | xmessage -center -title 'xprop' -file - "Birač fontova" EXEC xfontsel "Emulator Terminala" EXEC xminicom "Povećalo" EXEC xmag "Colormap" EXEC xcmap "XKill" EXEC xkill "ASClock" EXEC asclock -shape "Clipboard" EXEC xclipboard "Pomoćni programi" END "Odabir" MENU "Kopiraj" SHEXEC echo '%s' | wxcopy "Pošalji e-poštu" EXEC xterm -name mail -T "Pine" -e pine %s "Otvori web-stranicu" EXEC netscape %s "Potraži u manualu" SHEXEC MANUAL_SEARCH(%s) "Odabir" END "Radni prostor" MENU "Sakrij ostale" HIDE_OTHERS "Pokaži sve" SHOW_ALL "Pospremi ikone" ARRANGE_ICONS "Osvježi" REFRESH "Zaključaj" EXEC xlock -allowroot -usefirst "Snimi session" SAVE_SESSION "Obriši snimljeni session" CLEAR_SESSION "Radni prostor" END "Izgled" MENU "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)' "Plava" WS_BACK '(solid, "#505075")' "Indigo" WS_BACK '(solid, "#243e6c")' "Tamno plava" WS_BACK '(solid, "#224477")' "Ljubičasta" WS_BACK '(solid, "#554466")' "Krem" WS_BACK '(solid, "wheat4")' "Tamno siva" WS_BACK '(solid, "#333340")' "Vinska" WS_BACK '(solid, "#400020")' "Boja" END "Preljev" MENU "Zastava" WS_BACK '(mdgradient, green, red, white, green)' "Nebo" WS_BACK '(vgradient, blue4, white)' "Preljev" END "Slike" OPEN_MENU -noext BACKGROUNDS_DIR $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t "Pozadina" END "Snimi temu" SHEXEC getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/"%a(Theme name)" "Snimi set ikona" SHEXEC geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/"%a(IconSet name)" "Izgled" END "Izlaz" MENU "Ponovo startaj" RESTART "Startaj AfterStep" RESTART afterstep "Izlaz" EXIT "Izlaz iz sessiona..." SHUTDOWN "Izlaz" END "Programi" END �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/menu.hu.in�����������������������������������������������������������0000644�0001750�0001750�00000021454�13431646201�015132� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * WindowMaker fomenu konfiguracioja * Verzio: 0.61 * * Horvath Szabolcs <horvathsz@penguinpowered.com> - 2000. junius * A 0.20.3-s verziohoz keszult forditast * Prew (Csanaki Csaba <prew@mail.matav.hu>) keszitette. Koszonet erte! * * Szintakszis: * * <Title> [SHORTCUT <Shortcut>] <Parancs> <Parameterek> * * <Title> egy szoveg, amelyet cimkent kell hasznalni. Ha tartalmaz space-t, * akkor idezojelbe ("... ...") kell tenni. * * SHORTCUT meghataroz egy shortcut-ot adott programokra. <Shortcut>-nak * ugyanolyan megadasi szintakszisa van a * $HOME/GNUstep/Defaults/WindowMaker file-ban, mint a RootMenuKey * vagy a MiniaturizeKey. * * Nem lehet letrehozni shortcut-ot MENU vagy OPEN_MENU bejegyzesben. * * <Parancs> az itt kovetkezo utasitasok valamelyike: * MENU - kezdi a/az (al)menudefiniciot * END - befejezi a/az (al)menudefiniciot * OPEN_MENU - menu megnyitas * WORKSPACE_MENU - a munkafelulet kezelesehez almenuket illeszt be * EXEC <program> - egy kulso programot indit el * SHEXEC <parancs> - vegrehajt egy shell parancsot (pl.: gimp > /dev/null) * EXIT - kilepes az ablakmanagerbol * RESTART [<ablakkezelo>] - ujrainditja a WindowMaker-t vagy elindit * egy ablakmanagert * REFRESH - a kepernyo tartalmat frissiti * ARRANGE_ICONS - a munkafelulet ikonjait ujrarendezi * SHUTDOWN - minden alkalmazast bezar * SHOW_ALL - minden alkalmazast visszahoz a munkafeluletre * HIDE_OTHERS - a munkafeluleten (a pillanatnyilag aktiv kivetelevel) * minden ablakot elrejt * SAVE_SESSION - elmenti a munkafelulet aktualis allapotat, amely * magaba foglal minden futo alkalmazast, minden jellemzo- * jukkel (geometria; kepernyo pozicio; munkafelulet, * melyen talalhatok; dock vagy clip amibol kiindultak, es * ha minimalizalod, akkor arnyekos vagy rejtett). Tehat * elmenti az aktualis beallitasokat, amik eppen haszna- * latban van. Minden WindowMaker inditasakor ezzel a be- * allitassal fog indulni, mindaddig mig egy ujabb * SAVE_SESSION vagy CLEAR_SESSION nem hasznalsz. * Ha SaveSessionOnExit = Yes; a WindowMaker domain * file-ban, akkor a mentes automatikusan megtortenik, ha * kilepsz a WindowMaker-bol, felulirodik az eddig mentett * SAVE_SESSION bejegyzes. * CLEAR_SESSION - torli az elozo session parametereket. Ennek nem lesz * semmilyen hatasa, ha a SaveSessionOnExit = True. * INFO - Info Panel megjelenitese * * OPEN_MENU szintakszisa: * 1. File menu kezeles. * // megnyitja file.menu-t, melynek tartalmaznia kell egy ervenyes menu * // file-t, es beszurja * OPEN_MENU file.menu * 2. Pipe menu kezeles. * // megnyitja a parancsot es hasznalja a stdout to construct menu-t. * // A parancs kimenetenek egy ervenyes menu leirasnak kell lennie. * // Space lehet a '|' es a parancs kozott. * OPEN_MENU | command * 3. Konyvtar kezeles. * // Megnyit egy vagy tobb konyvtarat es letrehoz egy konyvtarat, * // alkonyvtarat, vegrehajthato file-okat es azokat ABC sorrendbe * // rendezi. * OPEN_MENU /some/dir [/some/other/dir ...] * 4. Konyvtar kezeles parancsal. * // Megnyit egy vagy tobb konyvtarat es letrehoz egy konyvtarat, * // alkonyvtarat, vegrehajtja az adott parancsot a megfelelo * // opcioval. * OPEN_MENU /some/dir [/some/other/dir ...] WITH command -options * * <Parameterek> a vegrehajthato program * * ** EXEC parancs leirasa * %s - a megadott helyre beszurja a kijelolt szoveget. Ha nincs szoveg * kijelolve, a parancs torlodik. * %a(message) - megnyit egy beviteli mezot a megadott szoveggel * %w - a megadott helyre beilleszti az aktualis ablak ID-jet. Ha nincs semmi * kijelolve, akkor nem illeszt be semmit. * * A % illetve " jeleket hatastalanitani lehet a \ jellel. * Peldaul: xterm -T "\"Hello Vilag!\"" * * Te hasznalhatod escape karakter-nek a '\n'-t is! * * Minden MENU utasitashoz kell egy END utasitasnak tartoznia. * * Peldaul: * * "Teszt" MENU * // XTerminal * "XTerm" EXEC xterm * // XView * "XView apps" OPEN_MENU "/usr/openwin/bin" * // egyeb X11 alkalmazasok * "X11 apps" OPEN_MENU /usr/X11/bin $HOME/bin/X11 * // egyeb hatter kep * "Background" OPEN_MENU $HOME/images /usr/share/images WITH wmsetbg -u -t * // megnyitja a style.menu-t az adott bejegyzesben * "Style" OPEN_MENU style.menu * "Teszt" END */ #include "wmmacros" "Alkalmazások" MENU "Infó" MENU "Információs panel..." INFO_PANEL "Jogi..." LEGAL_PANEL "Rendszer konzol" EXEC xconsole "Rendszer kihasználtság" SHEXEC xosview || xload "Processz lista" EXEC xterm -e top "Kézikönyv böngésző" EXEC xman "Infó" END "Futtatás..." SHEXEC %a(Futtatás,Írd be a futtatni kívánt programot:) "X Terminál" EXEC xterm -sb "Rxvt" EXEC rxvt -bg black -fg white -fn fixed "Gnome terminál" EXEC gnome-terminal --background black --foreground white --font -misc-fixed-medium-r-normal--20-200-75-75-c-100-iso8859-1 "Munkafelületek" WORKSPACE_MENU "Alkalmazások" MENU "Grafika" MENU "Gimp" SHEXEC gimp >/dev/null "XV" EXEC xv "XPaint" EXEC xpaint "XFig" EXEC xfig "Grafika" END "X File Manager" EXEC xfm "OffiX Files" EXEC files "LyX" EXEC lyx "Netscape" EXEC netscape "Ghostview" EXEC ghostview %a(GhostView,Kérem a fájl nevét) "Acrobat" EXEC /usr/local/Acrobat3/bin/acroread %a(Acrobat,Kérem a PDF fájl nevét) "TkDesk" EXEC tkdesk "Alkalmazások" END "Szerkesztők" MENU "XFte" EXEC xfte "XEmacs" SHEXEC xemacs || emacs "XJed" EXEC xjed "NEdit" EXEC nedit "Xedit" EXEC xedit "VI" EXEC xterm -e vi "Szerkesztők" END "Egyéb" MENU "Xmcd" SHEXEC xmcd 2> /dev/null "Xplaycd" EXEC xplaycd "Xmixer" EXEC xmixer "Egyéb" END "Kellékek" MENU "Számológép" EXEC xcalc "Ablak jellemzők" SHEXEC xprop | xmessage -center -title 'xprop' -file - "Font kiválasztás" EXEC xfontsel "Terminál emuláció" EXEC xminicom "Képernyőterület másolása" EXEC xmag "Színtérkép" EXEC xcmap "Program kilövése" EXEC xkill "Vágólap" EXEC xclipboard "Kellékek" END "Kijelölés" MENU "Másolás" SHEXEC echo '%s' | wxcopy "Levél írása" EXEC xterm -name mail -T "Pine" -e pine %s "Netscape" EXEC netscape %s "Keresés a Manuálokban" SHEXEC MANUAL_SEARCH(%s) "Kijelölés" END "Munkafelület" MENU "Elrejtés" HIDE_OTHERS "Mindent mutat" SHOW_ALL "Ikonok elrendezése" ARRANGE_ICONS "Frissítés" REFRESH "Zárolás" EXEC xlock -allowroot -usefirst "Session mentése" SAVE_SESSION "Elmentett Session törlése" CLEAR_SESSION "Munkafelület" END "Megjelenés" MENU "Témák" OPEN_MENU -noext THEMES_DIR $HOME/GNUstep/Library/WindowMaker/Themes WITH setstyle "Stílusok" OPEN_MENU -noext STYLES_DIR $HOME/GNUstep/Library/WindowMaker/Styles WITH setstyle "Ikonok" OPEN_MENU -noext ICON_SETS_DIR $HOME/GNUstep/Library/WindowMaker/IconSets WITH seticons "Háttér" MENU "Szolíd" MENU "Fekete" WS_BACK '(solid, black)' "Kék" WS_BACK '(solid, "#505075")' "Indigó" WS_BACK '(solid, "#243e6c")' "Sötétkék" WS_BACK '(solid, "#180090")' "Lila" WS_BACK '(solid, "#554466")' "Búza" WS_BACK '(solid, "wheat4")' "Sötétszürke" WS_BACK '(solid, "#333340")' "Vörös" WS_BACK '(solid, "#400020")' "Szolíd" END "Gradiens" MENU "Naplemente" WS_BACK '(mvgradient, deepskyblue4, black, deepskyblue4, tomato4)' "Égkék" WS_BACK '(vgradient, blue4, white)' "Indigós" WS_BACK '(vgradient, "#746ebc", "#242e4c")' "Búza színű" WS_BACK '(vgradient, "#a09060", "#302010")' "Lilás" WS_BACK '(vgradient, "#636380", "#131318")' "Vöröses" WS_BACK '(vgradient, "#600040", "#180010")' "Gradiens" END "Képek" OPEN_MENU -noext BACKGROUNDS_DIR $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t "Háttér" END "Téma mentése" SHEXEC getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/"%a(Téma neve,Add meg a téma fájl nevét:)" "Ikonbeállítások mentése" SHEXEC geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/"%a(Ikonbeállítások mentése,Add meg a fájl nevét:)" "Konfiguráló program" EXEC #wprefs# "Megjelenés" END "Kilépés" MENU "Újraindítás" RESTART "BlackBox indítása" RESTART blackbox "kwm indítása" RESTART kwm "IceWM indítása" RESTART icewm "Kilépés..." EXIT "Kilépés" END "Alkalmazások" END ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/autostart.sh���������������������������������������������������������0000755�0001750�0001750�00000001232�13431646201�015600� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh # # Place applications to be executed when WindowMaker is started here. # This should only be used for non-X applications or applications that # do not support session management. Other applications should be restarted # by the WindowMaker session restoring mechanism. For that, you should # either set SaveSessionOnExit=YES or select "Save Session" in the Workspace # submenu of the root menu when all applications you want started are # running. # # WindowMaker will wait until this script finishes, so if you run any # commands that take long to execute (like a xterm), put a ``&'' in the # end of the command line. # # This file must be executable. # ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/appearance.menu.in���������������������������������������������������0000644�0001750�0001750�00000000732�13642357774�016633� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "wmmacros" Appearance MENU "Background" OPEN_MENU background.menu "Styles" OPEN_MENU -noext STYLES_DIR USER_STYLES_DIR WITH setstyle "Themes" OPEN_MENU -noext THEMES_DIR USER_THEMES_DIR WITH setstyle "Icon Sets" OPEN_MENU -noext ICON_SETS_DIR USER_ICON_SETS_DIR WITH seticons "Save IconSet" EXEC geticonset USER_ICON_SETS_DIR/"%a(IconSet name)" "Save Theme" EXEC getstyle -p "%a(Theme name)" "Preferences Utility" EXEC #wprefs# Appearance END ��������������������������������������WindowMaker-0.95.9/WindowMaker/menu.sk.in�����������������������������������������������������������0000644�0001750�0001750�00000022173�13431646201�015132� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Slovak root menu for WindowMaker * (C) 2001 Jan "judas" Tomka * * Original translation by Jan "judas" Tomka on Jan 22 2001 * Currently maintained by Jan "judas" Tomka <tomka@oalevice.sk> * * Version history: * WM-ver author email date * 0.63.1 Jan "judas" Tomka <tomka@oalevice.sk> Jan 28 2001 * 0.64.0 Jan "judas" Tomka <tomka@oalevice.sk> Feb 25 2001 * */ /* * Syntax je: * * <Názov> [SHORTCUT <Klávesová skratka>] <Príkaz> <Parametre> * * <Názov> je ľubovoľný reťazec, ktorý sa použije ako názov položky. Ak obsahuje * medzery, musí byť uzavretý v úvodzovkách. * * SHORTCUT udáva klávesovú skratku pre danú položku. <Klávesová skratka> má * rovnakú syntax ako v súbore $HOME/GNUstep/Defaults/WindowMaker, napr. * RootMenuKey alebo MiniaturizeKey. * * Nemôžete zadať klávesovú skratku pre položky typu MENU a OPEN_MENU. * * <Príkaz> je jeden z nasledujúcich: * MENU - začína definíciu (sub)menu * END - ukončuje definíciu (sub)menu * OPEN_MENU - vloží menu zo súboru, rúry alebo adresára(ov), * eventuálne pred každú položku vloží príkaz * WORKSPACE_MENU - vloží submenu operácií pracovnej plochy. Je povolené * len jedno takéto menu * EXEC <príkaz> - vykoná externý príkaz * SHEXEC <príkaz> - vykoná príkaz shelu (napr. gimp > /dev/null) * EXIT - ukončí manažér okien * RESTART [<manažér okien>] - reštartuje WindowMaker alebo spustí iný * manažér okien * REFRESH - obnoví obrazovku * ARRANGE_ICONS - vyrovná ikony na pracovnej ploche * SHUTDOWN - zabije všetkých klientov (a ukončí sedenie X systému) * SHOW_ALL - zobrazí všetky okná na pracovnej ploche * HIDE_OTHERS - skryje všetky okná na pracovnej ploche okrem * aktívneho (alebo posledného aktívneho) * SAVE_SESSION - uloží aktuálny stav pracovnej plochy, čo zahŕňa všetky * spustené aplikácie, ich nastavenia (geometria, * umiestnenie na obrazovke, pracovná plocha, na ktorej sa * nachádzajú, Dok alebo Sponka, odkiaľ boli spustené, či * sú minimalizované, zrolované alebo skryté. Tiež sa uloží * plocha, na ktorej sa užívateľ nachádza. Pri každom štarte * WindowMakeru sa tieto nastavenia obnovia až kým sa nepou- * žije znova SAVE_SESSION alebo CLEAR_SESSION. Ak je * SaveSessionOnExit = Yes; v súbore domén WindowMakeru, * potom sa toto všetko ukladá pri každom ukončení * WindowMakeru, čím sa prepíšu predchádzajúce SAVE_SESSION * a CLEAR_SESSION (viď nižšie). * CLEAR_SESSION - zmaže uložené sedenie. Toto nemá účinok, keď je * nastavené SaveSessionOnExit. * INFO - zobrazí panel Info * * Syntax príkazu OPEN_MENU: * 1. Vkladanie menu zo súboru. * // otvorí súbor.menu, ktorý musí obsahovať definíciu menu a toto * // vloží na aktuálnu pozíciu * OPEN_MENU súbor.menu * 2. Vkladanie menu z rúry * // spustí program a jeho štandardný výstup použije ako definíciu menu. * // Výstup menu musí byť korektná definícia menu. * // Medzera medzi '|' a samotným príkazom nie je povinná. * // Použite '||' namiesto '|' ak chcete, aby sa menu obnovovalo * // pri každom otvorení. Môže to byť pomalé. * OPEN_MENU | príkaz * OPEN_MENU || príkaz * 3. Vkladanie menu z adresára * // Otvorí jeden alebo viac adresárov vytvorí menu z podadresárov a * // spustiteľných súborov zoradených v abecednom poradí. * OPEN_MENU /nejaký/adresár [/ďalší/adresár ...] * 4. Vkladanie adresára s príkazom * // Otvorí jeden alebo viac adresárov a vytvorí menu zo všetkých * // podadresárov a súborov s právom čítania, zoradených v abecednom * // poradí, pričom pred každý vloží príkaz. * OPEN_MENU [voľby] /nejaký/adr [/ďalší/adr ...] WITH príkaz -voľby * Voľby: * -noext odstrániť zvyšok mena súboru za poslednou * bodkou (príponu) * * <Parametre> sú odovzdané aplikácii, ktorá sa má vykonať. * * ** Voľby príkazového riadku príkazu EXEC: * %s - nahradiť aktuálnym výberom * %a(titul[,výzva]) - otvorí dialóg s daným titulom, prípadne i výzvou a * nahradí sa v príkaze textom, ktorý zadáte * %w - nahradí sa identifikačným číslom (XID) aktuálneho okna * %W - nahradí sa číslom aktuálnej pracovnej plochy * * Vložiť špeciálne znaky (ako % a ") môžete pomocou znaku \ : * xterm -T "\"Ahoj svet\"" * * Tiež je povolené používať špeciálne kombinácie znakov, ako napr. \n * * Každý príkaz MENU musí mať na konci zodpovedajúci príkaz END. * * Príklad: * * "Test" MENU * "XTerm" EXEC xterm * // vytvorí submenu s obsahom adresára /usr/openwin/bin * "XView apps" OPEN_MENU "/usr/openwin/bin" * // aplikácie X11 v rôznych adresároch * "X11 apps" OPEN_MENU /usr/X11/bin $HOME/bin/X11 * // nastaví obrázky pozadia * "Pozadie" OPEN_MENU -noext $HOME/images /usr/share/images WITH wmsetbg -u -t * // vloží menu definované v súbore style.menu * "Štýl" OPEN_MENU style.menu * "Test" END */ #include "wmmacros" "Aplikácie" MENU "Informácie" MENU "Panel Info" INFO_PANEL "Panel Legal" LEGAL_PANEL "Systémová konzola" EXEC xconsole "Zaťaženie systému" SHEXEC xosview || xload "Zoznam procesov" EXEC xterm -e top "Prehliadač manuálov" EXEC xman "Informácie" END "Spustiť..." SHEXEC %a(Spustiť,Zadajte príkaz:) "XTerm" EXEC xterm -sb "Rxvt" EXEC rxvt -bg black -fg white -fn fixed "Pracovné plochy" WORKSPACE_MENU "Aplikácie" MENU "Grafika" MENU "Gimp" SHEXEC gimp >/dev/null "XV" EXEC xv "XPaint" EXEC xpaint "XFig" EXEC xfig "Grafika" END "Správca súborov Xfm" EXEC xfm "Správca súborov OffiX" EXEC files "LyX" EXEC lyx "Netscape" EXEC netscape "Ghostview" EXEC ghostview %a(GhostView,Zadajte meno súboru) "Acrobat" EXEC /usr/local/Acrobat3/bin/acroread %a(Acrobar,Zadajte meno PDF súboru) "TkDesk" EXEC tkdesk "Aplikácie" END "Editory" MENU "XFte" EXEC xfte "XEmacs" SHEXEC xemacs || emacs "XJed" EXEC xjed "NEdit" EXEC nedit "Xedit" EXEC xedit "VIM" EXEC xterm -e vim "Editory" END "Rôzne" MENU "Xmcd" SHEXEC xmcd 2> /dev/null "CD prehrávač" EXEC xplaycd "Mixer" EXEC xmixer "Rôzne" END "Nástroje" MENU "Kalkulačka" EXEC xcalc "Vlastnosti okien" SHEXEC xprop | xmessage -center -title 'xprop' -file - "Výber fontu" EXEC xfontsel "Emulátor terminálu" EXEC xminicom "Lupa" EXEC xmag "Paleta" EXEC xcmap "Zabiť okno" EXEC xkill "Nástenka" EXEC xclipboard "Nástroje" END "Výber" MENU "Kopírovať" SHEXEC echo '%s' | wxcopy "Poslať poštu" EXEC xterm -name mail -T "Pine" -e pine %s "Prehliadať web" EXEC netscape %s "Hľadať v manuáli" SHEXEC MANUAL_SEARCH(%s) "Výber" END "Pracovná plocha" MENU "Skryť ostatné" HIDE_OTHERS "Zobraziť všetky" SHOW_ALL "Vyrovnať ikony" ARRANGE_ICONS "Obnoviť obrazovku" REFRESH "Uzamknúť" EXEC xlock -allowroot -usefirst "Uložiť sedenie" SAVE_SESSION "Zmazať sedenie" CLEAR_SESSION "Pracovná plocha" END "Vzhľad" MENU "Témy" OPEN_MENU -noext THEMES_DIR $HOME/GNUstep/Library/WindowMaker/Themes WITH setstyle "Štýly" OPEN_MENU -noext STYLES_DIR $HOME/GNUstep/Library/WindowMaker/Styles WITH setstyle "Sady ikon" OPEN_MENU -noext ICON_SETS_DIR $HOME/GNUstep/Library/WindowMaker/IconSets WITH seticons "Pozadie" MENU "Jedna farba" MENU "Čierna" WS_BACK '(solid, black)' "Modrá" WS_BACK '(solid, "#505075")' "Indigo" WS_BACK '(solid, "#243e6c")' "Námornícka modrá" WS_BACK '(solid, "#224477")' "Fialová" WS_BACK '(solid, "#554466")' "Pšeničná" WS_BACK '(solid, "wheat4")' "Tmavosivá" WS_BACK '(solid, "#333340")' "Vínová" WS_BACK '(solid, "#400020")' "Jedna farba" END "Prechod farieb" MENU "Západ slnka" WS_BACK '(mvgradient, deepskyblue4, black, deepskyblue4, tomato4)' "Obloha" WS_BACK '(vgradient, blue4, white)' "Odtiene modrej" WS_BACK '(vgradient, "#7080a5", "#101020")' "Odtiene indiga" WS_BACK '(vgradient, "#746ebc", "#242e4c")' "Odtiene fialovej" WS_BACK '(vgradient, "#654c66", "#151426")' "Odtiene pšeničnej" WS_BACK '(vgradient, "#a09060", "#302010")' "Odtiene sivej" WS_BACK '(vgradient, "#636380", "#131318")' "Odtiene vínovej" WS_BACK '(vgradient, "#600040", "#180010")' "Prechod farieb" END "Obrázky" OPEN_MENU -noext BACKGROUNDS_DIR $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t "Pozadie" END "Uložiť tému" SHEXEC getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/"%a(Meno témy,Zadajte názov súboru:)" "Uložiť sadu ikon" SHEXEC geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/"%a(Meno sady ikon,Zadajte názov súboru:)" "Konfiguračný nástroj" EXEC #wprefs# "Vzhľad" END "Koniec" MENU "Reštartovať" RESTART "Spustiť BlackBox" RESTART blackbox "Spustiť kwm" RESTART kwm "Spustiť IceWM" RESTART icewm "Koniec" EXIT "Koniec" END "Aplikácie" END �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/plmenu.nl.in���������������������������������������������������������0000644�0001750�0001750�00000004444�13642357774�015505� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������("Programma's", ("Info", ("Infopaneel", INFO_PANEL), ("Juridische info", LEGAL_PANEL), ("Systeemconsole", EXEC, "xconsole"), ("Systeembelasting", SHEXEC, "xosview || xload"), ("Proceslijst", EXEC, "xterm -e top"), ("Handleidingbrowser", EXEC, "xman") ), ("Uitvoeren...", SHEXEC, "%a(Uitvoeren,Typ uit te voeren commando:)"), ("XTerm", EXEC, "xterm -sb"), ("Mozilla Firefox", EXEC, "firefox"), ("Werkruimten", WORKSPACE_MENU), ("Programma's", ("Gimp", SHEXEC, "gimp >/dev/null"), ("Ghostview", EXEC, "ghostview %a(Voer te bekijken bestand in)"), ("Xpdf", EXEC, "xpdf %a(Voer te bekijken PDF in)"), ("Abiword", EXEC, "abiword"), ("Dia", EXEC, "dia"), ("OpenOffice.org", ("OpenOffice.org", EXEC, "ooffice"), ("Writer", EXEC, "oowriter"), ("Rekenblad", EXEC, "oocalc"), ("Draw", EXEC, "oodraw"), ("Impress", EXEC, "ooimpress") ), ("Tekstbewerkers", ("XEmacs", EXEC, "xemacs"), ("Emacs", EXEC, "emacs"), ("XJed", EXEC, "xjed"), ("VI", EXEC, "xterm -e vi"), ("GVIM", EXEC, "gvim"), ("NEdit", EXEC, "nedit"), ("Xedit", EXEC, "xedit") ), ("Multimedia", ("XMMS", ("XMMS", EXEC, "xmms"), ("XMMS afspelen/pauzeren", EXEC, "xmms -t"), ("XMMS stoppen", EXEC, "xmms -s") ), ("Xine videospeler", EXEC, "xine"), ("MPlayer", EXEC, "mplayer") ) ), ("Hulpmiddelen", ("Rekenmachine", EXEC, "xcalc"), ("Venstereigenschappen", SHEXEC, "xprop | xmessage -center -title 'xprop' -file -"), ("Lettertypekiezer", EXEC, "xfontsel"), ("Vergroten", EXEC, "wmagnify"), ("Kleurenkaart", EXEC, "xcmap"), ("X-programma doden", EXEC, "xkill") ), ("Selectie", ("Kopiëren", SHEXEC, "echo '%s' | wxcopy"), ("E-mailen naar", EXEC, "xterm -name mail -T Pine -e pine %s"), ("Navigeren", EXEC, "mozilla %s"), ("Zoeken in handleiding", EXEC, "MANUAL_SEARCH(%s)") ), ("Commando's", ("Andere verbergen", HIDE_OTHERS), ("Alles tonen", SHOW_ALL), ("Iconen schikken", ARRANGE_ICONS), ("Vernieuwen", REFRESH), ("Vergrendelen", EXEC, "xlock -allowroot -usefirst") ), ("Uiterlijk", OPEN_MENU, "appearance.menu.nl"), ("Sessie", ("Sessie opslaan", SAVE_SESSION), ("Sessie wissen", CLEAR_SESSION), ("Window Maker herstarten", RESTART), ("BlackBox starten", RESTART, blackbox), ("IceWM starten", RESTART, icewm), ("Afsluiten", EXIT) ) ) ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/background.menu.fy���������������������������������������������������0000644�0001750�0001750�00000003160�13642357774�016661� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "wmmacros" "Eftergrûn" MENU "Effen" MENU "Swart" WS_BACK '(solid, black)' "Blau" WS_BACK '(solid, "#505075")' "Indigo" WS_BACK '(solid, "#243e6c")' "Marineblau" WS_BACK '(solid, "#224477")' "Djipblau" WS_BACK '(solid, "#180090")' "Poarper" WS_BACK '(solid, "#554466")' "Weet" WS_BACK '(solid, "wheat4")' "Donkergriis" WS_BACK '(solid, "#333340")' "Wynread" WS_BACK '(solid, "#400020")' "Effen" END "Kleurferrin" MENU "Sinneûndergong" WS_BACK '(mvgradient, deepskyblue4, black, deepskyblue4, tomato4)' "Loft" WS_BACK '(vgradient, blue4, white)' "Blautinten" WS_BACK '(vgradient, "#7080a5", "#101020")' "Indigotinten" WS_BACK '(vgradient, "#746ebc", "#242e4c")' "Poarpertinten" WS_BACK '(vgradient, "#654c66", "#151426")' "Weettinten" WS_BACK '(vgradient, "#a09060", "#302010")' "Griistinten" WS_BACK '(vgradient, "#636380", "#131318")' "Wynreadtinten" WS_BACK '(vgradient, "#600040", "#180010")' "Kleurferrin" END "Ofbyldingen" MENU "Tegele" OPEN_MENU BACKGROUNDS_DIR USER_BACKGROUNDS_DIR WITH wmsetbg -u -t "Skaald" OPEN_MENU BACKGROUNDS_DIR USER_BACKGROUNDS_DIR WITH wmsetbg -u -s "Sintrearre" OPEN_MENU BACKGROUNDS_DIR USER_BACKGROUNDS_DIR WITH wmsetbg -u -e "Maksimalisearre" OPEN_MENU BACKGROUNDS_DIR USER_BACKGROUNDS_DIR WITH wmsetbg -u -a "Opfolle" OPEN_MENU BACKGROUNDS_DIR USER_BACKGROUNDS_DIR WITH wmsetbg -u -f "Ofbyldingen" END "Eftergrûn" END ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/menu.ja��������������������������������������������������������������0000644�0001750�0001750�00000021717�13431646201�014505� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * WindowMakerのルートメニュー設定ファイル * * 構文: * * <Title> <Command> <Parameters> * * <Title> とはメニューのタイトルに使用される文字列です。スペースを含む * 場合には " で囲んでください。 * * * <Command> は以下のものが使えます: * MENU - メニュー(サブメニュー)の定義の開始を示します。 * OPEN_MENU - ファイル,パイプ,ディレクトリの内容(それぞれのファイルの * 前処理に指定したコマンドを使用することも可能)から * メニューを作る。 * END - メニュー(サブメニュー)の定義の終了を示します。 * WORKSPACE_MENU - ワークスペースの操作のためのサブメニューを追加します。 * EXEC <program> - 外部プログラムの呼びだし * SHEXEC <command> - executes a shell command (like gimp > /dev/null) * EXIT - ウィンドウマネージャの終了 * RESTART [<window manager>] - WindowMakerの再起動か、または、別の * ウィンドウマネージャを起動します。 * REFRESH - デスクトップの再描画 * ARRANGE_ICONS - ワークスペースのアイコンの再配置 * SHUTDOWN - 全てのクライアントをkillしXのセッションを終了します。 * SHOW_ALL - ハイドされていた全てのウィンドウを表示します。 * HIDE_OTHERS - ワークスペース上の現在あるいは一番最近フォーカス * されたウィンドウを除く全てのウィンドウをハイドします。 * * SAVE_SESSION - デスクトップの現在の状態をセーブします。現在の状態と * とは、全ての実行中のアプリケーション、それらのヒント * (ジオメトリ,位置,どのワークスペースに存在するか, * dockとclipのどこから起動されたのか,そして、最小化 * されているのか、シェードされているのか、ハイドされて * いるのという情報です。) また、ユーザーが現在どの * ワークスペースにいるのかという情報もセーブします。 * セーブされた全ての情報は毎回の起動時に復活しますが、 * 新たにSAVE_SESSIONを行なうと書きかわります。また、 * CLEAR_SESSIONが行なわれると消去されます。 * SaveSessionOnExit = Yes; とWindowMaker ドメインファイル * で定義されている場合には、セーブはWindowMakerが終了 * する度に自動的に行なわれ、前回のSAVE_SESSION(または * CLEAR_SESSION)は上書きされます。 * CLEAR_SESSION - 前回セーブされた情報を全て消去します。ただし、 * SaveSessionOnExitがYesの時には効果を持ちません。 * * OPEN_MENU の構文: * 1. ファイルの場合 * // file.menuは構文の誤りもなく実際存在するファイルの名前です。 * // 呼びだされた場所に挿入されます。 * OPEN_MENU file.menu * 2. パイプの場合 * // commandを実行しその標準出力を用いてファイルを作ります。 * // commandの出力は正しいメニュー定義でなければなりません。 * // 記号 '|'とcommandの間のスペースは省略可能です。 * OPEN_MENU | command * 3. ディレクトリの場合 * // 1つあるいは複数のディレクトリを開き、全てのサブディレクトリと * // そこにあるファイルからメニューを作ります。またアルファベット順に * // ソートされます。 * OPEN_MENU /some/dir [/some/other/dir ...] * 4. ディレクトリとコマンドの組みあわせの場合 * // 1つあるいは複数のディレクトリを開き、全てのサブディレクトリと * // そこにある可読できるファイルからメニューを作ります。 * // またアルファベット順にソートされ、commandで前処理されます。 * OPEN_MENU /some/dir [/some/other/dir ...] WITH command -options * * * <Parameters> とは実行するプログラムです。 * * ** - EXECのコマンドラインに与えられた引数です。 * %s - 現在のセレクションの内容と置換されます。 * %a(message) - 入力ダイアログ(メッセージとしてmessageを用いる)を開き、 * タイプされた内容と置換されます。 * %w - 現在フォーカスされているウィンドウのXIDと置換されます。 * * 特殊文字( % や " 等)をエスケープするには \ を用います: * 例: kterm -T "\"Hello World\"" * * またエスケープキャラクタを用いることができます。(例 \n で改行) * * どの MENU 宣言も必ず、ペアになる END 宣言を末尾につけなければなりません。 * * 例: * * "テスト" MENU * "KTerm" EXEC kterm * // /usr/openwin/bin中のファイルでサブメニューを作る * "XView apps" OPEN_MENU "/usr/openwin/bin" * // 異なるディレクトリのX11アプリケーションを表示 * "X11 apps" OPEN_MENU /usr/X11/bin $HOME/bin/X11 * // 背景の画像をセットする。 * "背景" OPEN_MENU $HOME/images /usr/share/images WITH wmsetbg -u -t * // style.menuの内容をここに挿入する。 * "スタイル" OPEN_MENU style.menu * "テスト" END */ #include "wmmacros" "アプリケーション" MENU "情報" MENU "Info パネル..." INFO_PANEL "Legal パネル..." LEGAL_PANEL "システム負荷" SHEXEC xosview || xload "プロセス一覧" EXEC xterm -e top "マニュアルブラウザ" EXEC xman "情報" END "KTerm" EXEC kterm -sb "Rxvt" EXEC rxvt -bg black -fg white "ワークスペース" WORKSPACE_MENU "アプリケーション" MENU "グラフィックス" MENU "Gimp" SHEXEC gimp >/dev/null "XV" EXEC xv "XPaint" EXEC xpaint "XFig" EXEC xfig "グラフィックス" END "X File Manager" EXEC xfm "OffiX Files" EXEC files "LyX" EXEC lyx "Netscape" EXEC netscape "Ghostview" EXEC ghostview %a(Enter file to view) "Acrobat" EXEC /usr/local/Acrobat3/bin/acroread %a(Enter PDF to view) "TkDesk" EXEC tkdesk "アプリケーション" END "エディタ" MENU "Mule" EXEC mule "XFte" EXEC xfte "XEmacs" SHEXEC xemacs || emacs "XJed" EXEC xjed "NEdit" EXEC nedit "Xedit" EXEC xedit "VI" EXEC kterm -e vi "エディタ" END "いろいろ" MENU "Xmcd" SHEXEC xmcd 2> /dev/null "Xplaycd" EXEC xplaycd "Xmixer" EXEC xmixer "いろいろ" END "ユーティリティ" MENU "電卓" EXEC xcalc "プロパティ表示" SHEXEC xprop | xmessage -center -title 'xprop' -file - "フォントセレクタ" EXEC xfontsel "端末エミュレータ" EXEC xminicom "眼鏡" EXEC xmag "カラーマップ" EXEC xcmap "XKill" EXEC xkill "ASClock" EXEC asclock -shape "Clipboard" EXEC xclipboard "ユーティリティー" END "セレクション" MENU "コピー" SHEXEC echo '%s' | wxcopy "Mail To" EXEC xterm -name mail -T "Pine" -e pine %s "Netscape" EXEC netscape %s "マニュアル検索" SHEXEC MANUAL_SEARCH(%s) "セレクション" END "ワークスペース" MENU "他をハイド" HIDE_OTHERS "全て表示" SHOW_ALL "アイコンの再配置" ARRANGE_ICONS "画面の再描画" REFRESH "ロック" EXEC xlock -allowroot -usefirst "セッションをセーブ" SAVE_SESSION "セッションをクリア" CLEAR_SESSION "ワークスペース" END "外観" MENU "テーマ" 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 "Black" WS_BACK '(solid, black)' "Blue" WS_BACK '(solid, "#505075")' "Indigo" WS_BACK '(solid, "#243e6c")' "Bleumarine" WS_BACK '(solid, "#224477")' "Purple" WS_BACK '(solid, "#554466")' "Wheat" WS_BACK '(solid, "wheat4")' "Dark Gray" WS_BACK '(solid, "#333340")' "Wine" WS_BACK '(solid, "#400020")' "ソリッド" END "グラデーション" MENU "Flag" WS_BACK '(mdgradient, green, red, white, green)' "Sky" WS_BACK '(vgradient, blue4, white)' "グラデーション" END "イメージ" OPEN_MENU -noext BACKGROUNDS_DIR $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t "背景" END "現在の設定をテーマとしてセーブ" SHEXEC getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/"%a(Theme name)" "現在のアイコン集をセーブ" SHEXEC geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/"%a(IconSet name)" "外観" END "終了" MENU "再起動" RESTART "AfterStepを起動" RESTART afterstep "終了..." EXIT "セッションを終了..." SHUTDOWN "終了" END "アプリケーション" END �������������������������������������������������WindowMaker-0.95.9/WindowMaker/plmenu.de������������������������������������������������������������0000644�0001750�0001750�00000011220�13431646201�015023� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������("Anwendungen", ("Info", ("Infokasten...", INFO_PANEL), ("Rechtliches...", LEGAL_PANEL), ("Systemkonsole", EXEC, "xconsole"), ("Systemlast", SHEXEC, "xosview || xload"), ("Prozessliste", EXEC, "xterm -e top"), ("Man-Page-Betrachter", EXEC, "xman") ), ("Ausführen...", SHEXEC, "%a(Ausführen,Auszuführender Befehl:)"), ("XTerm", EXEC, "xterm -sb"), ("Rxvt", EXEC, "rxvt -bg black -fg white -fn fixed"), ("Arbeitsflächen", WORKSPACE_MENU), ("Anwendungen", ("Grafik", ("Gimp", SHEXEC, "gimp >/dev/null"), ("XV", EXEC, "xv"), ("XPaint", EXEC, "xpaint"), ("XFig", EXEC, "xfig") ), ("X File Manager", EXEC, "xfm"), ("OffiX Files", EXEC, "files"), ("LyX", EXEC, "lyx"), ("Netscape", EXEC, "netscape"), ("Ghostview", EXEC, "ghostview %a(Zu betrachtende Datei:)"), ("Acrobat", EXEC, "/usr/local/Acrobat3/bin/acroread %a(PDF-Datei angeben)"), ("TkDesk", EXEC, "tkdesk") ), ("Editoren", ("XFte", EXEC, "xfte"), ("XEmacs", SHEXEC, "xemacs || emacs"), ("XJed", EXEC, "xjed"), ("NEdit", EXEC, "nedit"), ("Xedit", EXEC, "xedit"), ("VI", EXEC, "xterm -e vi") ), ("Verschiedenes", ("Xmcd", SHEXEC, "xmcd 2> /dev/null"), ("Xplaycd", EXEC, "xplaycd"), ("Xmixer", EXEC, "xmixer") ), ("Werkzeuge", ("Taschenrechner", EXEC, "xcalc"), ("Fenstereigenschaften", SHEXEC, "xprop | xmessage -center -title 'xprop' -file -"), ("Schriftartwähler", EXEC, "xfontsel"), ("Terminalemulator", EXEC, "xminicom"), ("Vergrößern", EXEC, "xmag"), ("Colormap", EXEC, "xcmap"), ("XKill", EXEC, "xkill"), ("ASClock", EXEC, "asclock -shape"), ("Zwischenablage", EXEC, "xclipboard") ), ("Auswahl", ("Kopieren", SHEXEC, "echo '%s' | wxcopy"), ("Mail an", EXEC, "xterm -name mail -T Pine -e pine %s"), ("Mit Browser darstellen", EXEC, "netscape %s"), ("In Man-Pages suchen", EXEC, "MANUAL_SEARCH(%s)") ), ("Arbeitsfläche", ("Andere verbergen", HIDE_OTHERS), ("Alle zeigen", SHOW_ALL), ("Icons anordnen", ARRANGE_ICONS), ("Auffrischen", REFRESH), ("Sperren", EXEC, "xlock -allowroot -usefirst"), ("Sitzung speichern", SAVE_SESSION), ("Gespeicherte Sitzung löschen", CLEAR_SESSION) ), ("Erscheinungsbild", ("Themen", OPEN_MENU, "-noext /usr/local/share/WindowMaker/Themes $(HOME)/GNUstep/Library/WindowMaker/Themes WITH setstyle"), ("Stile", OPEN_MENU, "-noext /usr/local/share/WindowMaker/Styles $(HOME)/GNUstep/Library/WindowMaker/Styles WITH setstyle"), ("Iconsätze", OPEN_MENU, "-noext /usr/local/share/WindowMaker/IconSets $(HOME)/GNUstep/Library/WindowMaker/IconSets WITH seticons"), ("Hintergrund", ("Einfarbig", ("Schwarz", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, black)'"), ("Blau", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#505075\")'"), ("Indigo", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#243e6c\")'"), ("Tiefblau", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#224477\")'"), ("Purpur", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#554466\")'"), ("Weizen", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, wheat4)'"), ("Dunkelgrau", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#333340\")'"), ("Wein", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#400020\")'") ), ("Verlauf", ("Sonnenuntergang", EXEC, "wdwrite WindowMaker WorkspaceBack '(mvgradient, deepskyblue4, black, deepskyblue4, tomato4)'"), ("Himmel", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, blue4, white)'"), ("Blau schattiert", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#7080a5\", \"#101020\")'"), ("Indigofarben schattiert", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#746ebc\", \"#242e4c\")'"), ("Purpurfarben schattiert", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#654c66\", \"#151426\")'"), ("Weizenfarben schattiert", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#a09060\", \"#302010\")'"), ("Grau schattiert", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#636380\", \"#131318\")'"), ("Weinfarben schattiert", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#600040\", \"#180010\")'") ), ("Bilder", OPEN_MENU, "-noext /usr/local/share/WindowMaker/Backgrounds $(HOME)/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t") ), ("Thema speichern", SHEXEC, "getstyle -t $(HOME)/GNUstep/Library/WindowMaker/Themes/\"%a(Themenname)\""), ("Iconsatz speichern", SHEXEC, "geticonset $(HOME)/GNUstep/Library/WindowMaker/IconSets/\"%a(Iconsatz-Name)\"") ), ("Beenden", ("Neustart", RESTART), ("BlackBox starten", RESTART, blackbox), ("kwm starten", RESTART, kwm), ("IceWM starten", RESTART, icewm), ("Beenden...", EXIT) ) ) ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/wmmacros.in����������������������������������������������������������0000644�0001750�0001750�00000003445�13642357774�015425� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Some generic macros for WindowMaker configuration files * */ #ifndef WMMACROS_ #define WMMACROS_ #define HAVE_XLESS /* * WS_BACK - sets the root background texture to VAL */ #define WS_BACK EXEC wdwrite WindowMaker WorkspaceBack /* * CLEARROOT - set the root background to nothing */ #define CLEARROOT xsetroot /* * * MANUAL_SEARCH(ITEM) - search manual page for ITEM * * You might need to change this according to what's the exit status of your * man(1). This is for the one that comes with Linux (RedHat) */ #ifdef HAVE_XLESS #define MANUAL_SEARCH(ITEM) \ if ( man ITEM > /dev/null ); then \ man ITEM | xless;\ else \ xmessage -center -title "Manual Browser" \ Sorry, but there is no manual page \ entry for ITEM...;\ fi #else #define MANUAL_SEARCH(ITEM) \ if ( man ITEM > /dev/null ); then \ xterm -e man ITEM; \ else \ xmessage -center -title "Manual Browser" \ Sorry, but there is no manual page \ entry for ITEM...;\ fi #endif /* * Paths to system configuration directories */ #define THEMES_DIR #wmdatadir#/Themes #define STYLES_DIR #wmdatadir#/Styles #define ICON_SETS_DIR #wmdatadir#/IconSets #define BACKGROUNDS_DIR #wmdatadir#/Backgrounds #define USER_THEMES_DIR #usergnusteppath#/Library/WindowMaker/Themes #define USER_STYLES_DIR #usergnusteppath#/Library/WindowMaker/Styles #define USER_ICON_SETS_DIR #usergnusteppath#/Library/WindowMaker/IconSets #define USER_BACKGROUNDS_DIR #usergnusteppath#/Library/WindowMaker/Backgrounds #define StaticGray 0 #define GrayScale 1 #define StaticColor 2 #define PseudoColor 3 #define TrueColor 4 #define DirectColor 5 #endif ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/menu.ru��������������������������������������������������������������0000644�0001750�0001750�00000014116�13431646201�014534� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Определение корневого меню для WindowMaker * * Синтаксис: * * <Имя> <Команда> <Параметры> * * <Имя> - любая строка для заголовка меню. Должна быть заключена в парные ", * если содержит пробелы * * <Команда> одна из следующего набора команд: * MENU - начинает определение (под)меню * OPEN_MENU - считывает меню из файла или содержания каталога * END - заканчивает определение (под)меню * WORKSPACE_MENU - добавляет подменю для операций с Рабочим местом * EXEC <program> - выполняет внешнюю программу * SHEXEC <command> - executes a shell command (like gimp > /dev/null) * EXIT - завершает работу менеджера окон * RESTART [<window manager>] - перезапускает WindowMaker или запускает * другой менеджер окон * REFRESH - обновляет видимое пространство * ARRANGE_ICONS - упорядочивает значки Рабочего места * SHUTDOWN - убивает все приложения ( и завершает сессию X) * SHOW_ALL - показывает все окна Рабочего места * HIDE_OTHERS - делает невидимыми все окна Рабочего места, кроме имеющего * фокус ( или последнего имевшего) * * <Параметры> собственно программа для выполнения. * * ** Опции для командной строки в EXEC: * %s - подтановка текущего выделения * %a(message) - открывает окно ввода с сообщением и выполняет подстановку * набранного * %w - заменить на XID окна, имеющего фокус в данный момент * * Вы можете избежать специальной интерпретации знаков ( таких как % и ") с * помощью знака \ : Напр.: xterm -T "\"Hello World\"" * * Вы можете также использовать escape-последовательности, как \n * * Каждое предложение MENU должно иметь одно соответствующее предложение END * в конце определения. * Пример: * * "Тест" MENU * "XTerm" EXEC xterm * // создает подменю с содержанием /usr/openwin/bin * "XView apps" OPEN_MENU "/usr/openwin/bin" * // вставляет style.menu в под этим именем * "Стиль" OPEN_MENU style.menu * "Тест" END */ #include "wmmacros" "Приложения" MENU "Информация" MENU "Info Panel..." INFO_PANEL "Legal" LEGAL_PANEL "Нагрузка Системы" SHEXEC xosview || xload "Список Процессов" EXEC xterm -e top "Просмотр Руководств" EXEC xman "Информация" END "XTerm" EXEC xterm -sb "Rxvt" EXEC rxvt -bg black -fg white -fn fixed "XJed" EXEC xjed "Рабочие места" WORKSPACE_MENU "Приложения" MENU "Графические" MENU "Gimp" SHEXEC gimp >/dev/null "XV" EXEC xv "XPaint" EXEC xpaint "XFig" EXEC xfig "Графические" END "Менеджер файлов X" EXEC xfm "OffiX Files" EXEC files "LyX" EXEC lyx "Netscape" EXEC netscape "Ghostview" EXEC ghostview %a(Enter file to view) "Acrobat" EXEC /usr/local/Acrobat3/bin/acroread %a(Enter PDF to view) "TkDesk" EXEC tkdesk "Приложения" END "Редакторы" MENU "XEmacs" SHEXEC xemacs || emacs "XJed" EXEC xjed "NEdit" EXEC nedit "Xedit" EXEC xedit "VI" EXEC xterm -e vi "Редакторы" END "Разное" MENU "Xmcd" SHEXEC xmcd 2> /dev/null "Xplaycd" EXEC xplaycd "Xmixer" EXEC xmixer "Разное" END "Утилиты" MENU "Калькулятор" EXEC xcalc "Выбрать шрифт" EXEC xfontsel "Увеличитель" EXEC xmag "Карта цветов" EXEC xcmap "XKill" EXEC xkill "Часы" EXEC asclock -shape "Буфер обмена" EXEC xclipboard "Утилиты" END "Выделение" MENU "Копировать" SHEXEC echo '%s' | wxcopy "Отправить" EXEC xterm -name mail -T "Pine" -e pine %s "Искать в Интернет" EXEC netscape %s "Искать в Руководствах" SHEXEC MANUAL_SEARCH(%s) "Выделение" END "Рабочее место" MENU "Убрать остальные" HIDE_OTHERS "Показать все" SHOW_ALL "Упорядочить значки" ARRANGE_ICONS "Обновить" REFRESH "Запереть" EXEC xlock -allowroot -usefirst "Сохранить Рабочее место" EXEC SAVE_WORKSPACE "Рабочее место" END "Внешний вид" MENU /* "Темы" OPEN_MENU themes.menu */ "Фон" MENU "Однотонный" MENU "Черный" WS_BACK '(solid, black)' "Синий" WS_BACK '(solid, "#505075")' "Сиреневый" WS_BACK '(solid, "#554466")' "Пшеничный" WS_BACK '(solid, "wheat4")' "Темно-серый" WS_BACK '(solid, "#333340")' "Винный" WS_BACK '(solid, "#400020")' "Однотонный" END "Градиент" MENU "Небо" WS_BACK '(mvgradient, blue4, red3, orange3)' "Огонь" WS_BACK '(vgradient, red4, yellow3)' "Градиент" END "Фон" END "Стили" OPEN_MENU styles.menu "Внешний вид" END "Выход" MENU "Перезапустить" RESTART "Запустить Afterstep" RESTART afterstep "Завершить работу..." EXIT "Завершить сессию..." SHUTDOWN "Выход" END "Приложения" END ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/menu.cz��������������������������������������������������������������0000644�0001750�0001750�00000010330�13431646201�014514� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Text bellow is in czech, encoding ISO8829-2. // // Definice hlavního menu pro WindowMaker // // Syntaxe: // // <Titulek> <Příkaz> <Parametry> // // <Titulek> je jakýkoli řetěz znaků. Pokud obsahuje mezery musí být // uzavřen do uvozovek (") // // <Příkaz> může být jeden z následujících: // MENU - definice nové (sub)menu // END - konec definice nového menu // EXEC <program> - provede se program // EXIT - ukončí se WindowMaker // RESTART [<window manager>] - restart WM nebo jiného správce oken // REFRESH - obnoví okna na pracovní ploše // ARRANGE_ICONS - srovná ikony // SHUTDOWN - ukončí všechny klienty i X server // WORKSPACE_MENU - přidá menu pro práci s pracovními plochami // SHOW_ALL - obnoví všechna skrytá okna // HIDE_OTHERS - skryje všechna okna (mimo zaměřeného, nebo toho, které // bylo naposledy zaměřeno) // // <Parameters> je program, který bude proveden. // // Každý příkaz MENU musí mít odpovídající END. // následující text je česky, kódován ISO8859-2. #include <wmmacros> "Hlavní menu" MENU "Správce oken" MENU "Editace menu" SHEXEC xterm -T 'Editace menu' -e joe $HOME/GNUstep/Library/WindowMaker/menu "Správce oken" END "Info" MENU "Info Panel..." INFO_PANEL "Legal" LEGAL_PANEL // "Xosview" EXEC xosview "Top" EXEC xterm -e top "Manuál" EXEC xman "Info" EXEC xterm -T 'info' -e info "Xwininfo" EXEC windebug|xless "Xwinevent" EXEC xwinev "Info" END "XTerm" EXEC xterm -sb // "XJed" EXEC xjed "Midnight commander" EXEC xterm -name 'mc' -e mc -cm "Pracovní plochy" WORKSPACE_MENU "Aplikace" MENU "Grafické" MENU "Gimp" EXEC gimp "XV" EXEC xv "XPaint" EXEC xpaint "XFig" EXEC xfig "Gnuplot" EXEC xterm -T "GNU plot" -e gnuplot "Grafické" END "Vědecké" MENU "Astro" EXEC xephem "MuPAD" EXEC xmupad -bg grey -geometry 590x385 "Vědecké" END "Vývojové" MENU "X Gnu debbuger" EXEC xxgdb "Emacs" EXEC emacs "Resource editor" EXEC editres "Vývojové" END "Hry" MENU "Bludišťě" EXEC maze // "Karty " EXEC spider "Šachy " EXEC xboard "Xeyes" EXEC xeyes -geometry 51x23 "Xlogo" EXEC xlogo "Brouci" EXEC xroach "Xtetris" EXEC xtetris -color "Xvier" EXEC xvier "Xgas" EXEC xgas "Xkobo" EXEC xkobo "xboing" EXEC xboing -sound "XBill" EXEC xbill "Civilization" EXEC civ "Hry" END // "X File Manager" EXEC xfm "Správce souborů" EXEC files // "LyX" EXEC lyx "Netscape" EXEC netscape "Ghostview" EXEC ghostview "Acrobat" EXEC /usr/local/Acrobat3/bin/acroread "OpenDOS" EXEC runxdos // "TkDesk" EXEC tkdesk "Aplikace" END "Editory" MENU "Emacs" EXEC emacs // "XJed" EXEC xjed // "NEdit" EXEC nedit "Xedit" EXEC xedit // "VI" EXEC xterm -e vi "Joe" EXEC xterm -T 'Joe' -e joe "Editory" END "Různé" MENU // "Xmcd" SHEXEC xmcd 2> /dev/null "Xplaycd" EXEC xplaycd "Xmixer" EXEC xmixer "Různé" END "Pomůcky" MENU "Koš" EXEC trash "Hodiny" EXEC xclock "Kalkulátor" EXEC xcalc "Výběr fontu" EXEC xfontsel "Lupa" EXEC xmag "Mapa barev" EXEC xcolormap "XKill" EXEC xkill "AfterstepClock" EXEC asclock -position +671+-1 "Pomůcky" END "Pracovní plocha" MENU "Barva" MENU "-" EXEC CLEARROOT "Černá" WS_BACK '(solid, black)' "Modrá" WS_BACK '(solid, "#505075")' "Purpurová" WS_BACK '(solid, "#554466")' "Šedozelená" WS_BACK '(solid, "#554466")' "Tmavě šedá" WS_BACK '(solid, "#333340")' "Vínová" WS_BACK '(solid, "#400020")' "Barva" END #if (DEPTH>=8) // Setup some gradient schemes for newbies and lazy people // You must RESTART after selecting the gradient. #include <gradients.menu> #endif "Skryj ostatní" HIDE_OTHERS "Ukaž všechny" SHOW_ALL "Srovnej ikony" ARRANGE_ICONS "Obnov" REFRESH "Zámek" EXEC xlock -allowroot -usefirst "Ulož vzhled" EXEC SAVE_WORKSPACE "Pracovní plocha" END "Konec" MENU // 'Restartovat' není opravdu příliš české slovo, najde někdo lepší ? "Restartovat" RESTART // "Start AfterStep" RESTART afterstep "Ukončit..." EXIT // "Ukončit sezení..." SHUTDOWN "Konec" END "Hlavní menu" END ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/plmenu.pl.in���������������������������������������������������������0000644�0001750�0001750�00000017001�13642357774�015500� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������("WindowMaker", ("Informacja", ("Informacja o WMaker...", INFO_PANEL), ("Legalność...", LEGAL_PANEL), ("Konsola Systemu", EXEC, "xconsole"), ("Obciążenie Systemu", EXEC, "xosview || xload"), ("Lista Procesów", EXEC, "xterm -T 'Lista Procesów' -e top"), ("Przeglądarka Manuali", EXEC, "xman") ), ("Konfiguracja", ("Edycja menu", EXEC, "xterm -T 'Edycja menu' -e vi $HOME/GNUstep/Library/WindowMaker/menu"), ("Ustawienie fontów", EXEC, "xterm -T 'Ustawienie fontów' -e vi $HOME/GNUstep/Defaults/WMGLOBAL"), ("Konfiguracja", EXEC, "xterm -T 'Konfiguracja' -e vi $HOME/GNUstep/Defaults/WindowMaker") ), ("Uruchom...", EXEC, "%a(Uruchom,Wpisz komende do uruchomienia:)"), ("Terminal", EXEC, "xterm -T 'Mój ulubiony terminal' -sb"), ("Edytor", EXEC, "xterm -T 'Moj ulubiony edytor' -e vi %a(Edytor,Podaj plik do edycji:)"), ("Pulpity", WORKSPACE_MENU), ("Aplikacje", ("Grafika", ("Gimp", EXEC, "gimp > /dev/null"), ("XV", EXEC, "xv"), ("XFig", EXEC, "xfig"), ("XPaint", EXEC, "xpaint"), ("Gnuplot", EXEC, "xterm -T 'GNU plot' -e gnuplot"), ("Edytor ikon", EXEC, "bitmap") ), ("Tekst", ("LyX", EXEC, "lyx"), ("Ghostview", EXEC, "gv %a(Gv,Wprowadz nazwe pliku *.ps *.pdf *.no:)"), ("XDvi", EXEC, "xdvi %a(Xdvi,Wprowadz nazwe pliku *.dvi:)"), ("Acrobat", EXEC, "/usr/local/Acrobat3/bin/acroread %a(Acrobat,Wprowadz nazwe pliku *.pdf:)"), ("Xpdf", EXEC, "xpdf %a(Xpdf,Wprowadz nazwe pliku *.pdf:)"), ("Arkusz kalkulacyjny", EXEC, "xspread") ), ("X File Manager", EXEC, "xfm"), ("OffiX Files", EXEC, "files"), ("TkDesk", EXEC, "tkdesk"), ("Midnight Commander", EXEC, "xterm -T 'Midnight Commander' -e mc"), ("X Gnu debbuger", EXEC, "xxgdb"), ("Xwpe", EXEC, "xwpe") ), ("Internet", ("Przeglądarki", ("Netscape", EXEC, "netscape"), ("Arena", EXEC, "arena"), ("Lynx", EXEC, "xterm -e lynx %a(Lynx,Podaj URL:)") ), ("Programy pocztowe", ("Pine", EXEC, "xterm -T 'Program pocztowy Pine' -e pine"), ("Elm", EXEC, "xterm -T 'Program pocztowy Elm' -e elm"), ("Xmh", EXEC, "xmh") ), ("Emulator terminala", ("Minicom", EXEC, "xminicom"), ("Seyon", EXEC, "seyon") ), ("Telnet", EXEC, "xterm -e telnet %a(Telnet,Podaj nazwe hosta:)"), ("Ssh", EXEC, "xterm -e ssh %a(SSH,Podaj nazwe hosta:)"), ("Ftp", EXEC, "xterm -e ftp %a(FTP,Podaj nazwe hosta:)"), ("Irc", EXEC, "xterm -e irc %a(IRC,Podaj swoj pseudonim:)"), ("Ping", EXEC, "xterm -e ping %a(Ping,Podaj nazwe hosta:)"), ("Talk", EXEC, "xterm -e talk %a(Talk,Podaj nazwe uzytkownika, z ktorym chcesz nawiazac polaczenie:)") ), ("Editory", ("XFte", EXEC, "xfte"), ("XEmacs", EXEC, "xemacs || emacs"), ("XJed", EXEC, "xjed "), ("NEdit", EXEC, "nedit"), ("Xedit", EXEC, "xedit"), ("Editres", EXEC, "editres"), ("VI", EXEC, "xterm -e vi") ), ("Dźwięk", ("Xmcd", EXEC, "xmcd 2> /dev/null"), ("Xplaycd", EXEC, "xplaycd"), ("Xmixer", EXEC, "xmixer") ), ("Gry", ("Maze", EXEC, "maze"), ("Karty", EXEC, "spider"), ("Londownik", EXEC, "xlander"), ("Szachy", EXEC, "xboard"), ("Xeyes", EXEC, "xeyes -geometry 51x23"), ("Xmahjongg", EXEC, "xmahjongg"), ("Xlogo", EXEC, "xlogo"), ("Xroach", EXEC, "xroach"), ("Xtetris", EXEC, "xtetris -color"), ("Xvier", EXEC, "xvier"), ("Xgas", EXEC, "xgas"), ("Xkobo", EXEC, "xkobo"), ("xboing", EXEC, "xboing -sound"), ("XBill", EXEC, "xbill") ), ("Użytki", ("Kalkulator", EXEC, "xcalc"), ("Zegarek", EXEC, "xclock"), ("Opcje Okna", EXEC, "xprop | xmessage -center -title 'xprop' -file -"), ("Przeglądarka Fontów", EXEC, "xfontsel"), ("Szkło Powiększające", EXEC, "xmag"), ("Mapa Kolorów", EXEC, "xcmap"), ("XKill", EXEC, "xkill"), ("Clipboard", EXEC, "xclipboard") ), ("Selekcyjne", ("Kopia", EXEC, "echo '%s' | wxcopy"), ("Poczta do ...", EXEC, "xterm -name mail -T 'Pine' -e pine %s"), ("Serfuj do ...", EXEC, "netscape %s"), ("Pobierz Manual ...", EXEC, "MANUAL_SEARCH(%s)"), ("Połącz się z ...", EXEC, "telnet %s"), ("Pobierz plik z FTP ...", EXEC, "ftp %s") ), ("Ekran", ("Ukryj Pozostałe", HIDE_OTHERS), ("Pokaż wszystko", SHOW_ALL), ("Uporządkowanie icon", ARRANGE_ICONS), ("Odswież", REFRESH), ("Zablokuj", EXEC, "xlock -allowroot -usefirst"), ("Zachowaj Sesje", SAVE_SESSION), ("Wyczyść zachowaną sesje", CLEAR_SESSION) ), ("Wygląd", ("Tematy", OPEN_MENU, "-noext #wmdatadir#/Themes $HOME/GNUstep/Library/WindowMaker/Themes WITH setstyle"), ("Style", OPEN_MENU, "-noext #wmdatadir#/Styles $HOME/GNUstep/Library/WindowMaker/Styles WITH setstyle"), ("Ustawienia ikon", OPEN_MENU, "-noext #wmdatadir#/IconSets $HOME/GNUstep/Library/WindowMaker/IconSets WITH seticons"), ("Tło", ("Jednolite", ("Czarny", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, black)'"), ("Niebieski", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, '#505075')'"), ("Indigo", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, '#243e6c')'"), ("Głęboko Niebieski", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, '#224477')'"), ("Fioletowy", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, '#554466')'"), ("Pszeniczny", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, 'wheat4')'"), ("Ciemno Szary", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, '#333340')'"), ("Winny", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, '#400020')'") ), ("Cieniowane", ("Zachód Słońca", EXEC, "wdwrite WindowMaker WorkspaceBack '(mvgradient, deepskyblue4, black, deepskyblue4, tomato4)'"), ("Niebo", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, blue4, white)'"), ("Cieniowany Niebieski", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, '#7080a5', '#101020')'"), ("Cieniowane Indigo", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, '#746ebc', '#242e4c')'"), ("Cieniowany Fioletowy", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, '#654c66', '#151426')'"), ("Cieniowany Pszeniczny", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, '#a09060', '#302010')'"), ("Cieniowany Szary", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, '#636380', '#131318')'"), ("Cieniowany Winnny", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, '#600040', '#180010')'") ), ("Obrazki", OPEN_MENU, "-noext #wmdatadir#/Backgrounds $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t)") ), ("Zaoamiętanie Tematu", EXEC, "getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/'%a(Nazwa tematu,Wpisz nazwe pliku:)'"), ("Zapamiętanie Ustawień Ikon", EXEC, "geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/'%a(Ustawienia ikon,Wpisz nazwe pliku:)'") ), ("Wyjście", ("Przeładowanie", RESTART), ("Start BlackBox", RESTART, blackbox), ("Start kwm", RESTART, kwm), ("Start IceWM", RESTART, icewm), ("Wyjście...", EXIT), ("Zabicie sesji...", SHUTDOWN) ) ) �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/exitscript.sh��������������������������������������������������������0000755�0001750�0001750�00000000435�13431646201�015754� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh # # Place commands to be executed when WindowMaker is exited here. # # WindowMaker will wait until this script finishes, so if you run any # commands that take long to execute (like a xterm), put a ``&'' in the # end of the command line. # # This file must be executable. # �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Pixmaps/�������������������������������������������������������������0000755�0001750�0001750�00000000000�13642365213�014723� 5����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Pixmaps/Makefile.in��������������������������������������������������0000644�0001750�0001750�00000037612�13642360054�016717� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = WindowMaker/Pixmaps ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ $(top_srcdir)/m4/ax_pthread.m4 \ $(top_srcdir)/m4/ld-version-script.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/windowmaker.m4 \ $(top_srcdir)/m4/wm_attributes.m4 \ $(top_srcdir)/m4/wm_cflags_check.m4 \ $(top_srcdir)/m4/wm_i18n.m4 \ $(top_srcdir)/m4/wm_imgfmt_check.m4 \ $(top_srcdir)/m4/wm_libexif.m4 $(top_srcdir)/m4/wm_libmath.m4 \ $(top_srcdir)/m4/wm_prog_cc_c11.m4 \ $(top_srcdir)/m4/wm_xext_check.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(defsdatadir)" DATA = $(defsdata_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ GFXLIBS = @GFXLIBS@ GREP = @GREP@ HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLIBS = @INTLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBBSD = @LIBBSD@ LIBEXIF = @LIBEXIF@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXINERAMA = @LIBXINERAMA@ LIBXMU = @LIBXMU@ LIBXRANDR = @LIBXRANDR@ LINGUAS = @LINGUAS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAGICKFLAGS = @MAGICKFLAGS@ MAGICKLIBS = @MAGICKLIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MANLANGDIRS = @MANLANGDIRS@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOLIBS = @PANGOLIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILMOFILES = @UTILMOFILES@ VERSION = @VERSION@ WINGSMOFILES = @WINGSMOFILES@ WINGS_VERSION = @WINGS_VERSION@ WMAKERMOFILES = @WMAKERMOFILES@ WPREFSMOFILES = @WPREFSMOFILES@ WRASTER_VERSION = @WRASTER_VERSION@ WUTIL_VERSION = @WUTIL_VERSION@ XCFLAGS = @XCFLAGS@ XFTCONFIG = @XFTCONFIG@ XFTFLAGS = @XFTFLAGS@ XFTLIBS = @XFTLIBS@ XGETTEXT = @XGETTEXT@ XLFLAGS = @XLFLAGS@ XLIBS = @XLIBS@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBRARY_PATH = @X_LIBRARY_PATH@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ defsdatadir = $(pkgdatadir)/Pixmaps docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ inc_search_path = @inc_search_path@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lcov_output_directory = @lcov_output_directory@ lib_search_path = @lib_search_path@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pixmapdir = @pixmapdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ wprefs_bindir = @wprefs_bindir@ wprefs_datadir = @wprefs_datadir@ defsdata_DATA = tile.tiff \ tile.xpm \ swtile.png \ swback.png \ swback2.png EXTRA_DIST = $(defsdata_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu WindowMaker/Pixmaps/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu WindowMaker/Pixmaps/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-defsdataDATA: $(defsdata_DATA) @$(NORMAL_INSTALL) @list='$(defsdata_DATA)'; test -n "$(defsdatadir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(defsdatadir)'"; \ $(MKDIR_P) "$(DESTDIR)$(defsdatadir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(defsdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(defsdatadir)" || exit $$?; \ done uninstall-defsdataDATA: @$(NORMAL_UNINSTALL) @list='$(defsdata_DATA)'; test -n "$(defsdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(defsdatadir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(defsdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-defsdataDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-defsdataDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am \ install-defsdataDATA install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-defsdataDATA .PRECIOUS: Makefile # 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. .NOEXPORT: ����������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Pixmaps/tile.xpm�����������������������������������������������������0000644�0001750�0001750�00000026571�13431646201�016334� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char *magick[] = { /* columns rows colors chars-per-pixel */ "64 64 193 2", " c #eaeaea", ". c #ededee", "X c #e7e7e7", "o c #e2e2e2", "O c gray87", "+ c gray85", "@ c gray76", "# c #010101", "$ c #4d505a", "% c #e0e0e6", "& c #dddde5", "* c #dddde2", "= c #dbdbe2", "- c #d7d8df", "; c #d6d6dd", ": c #d2d4db", "> c #d2d2da", ", c #d0cfd8", "< c #ceced6", "1 c #cbcbd4", "2 c #cacad3", "3 c #c7c7d0", "4 c #c5c5cf", "5 c #c3c3cc", "6 c #c2c2cb", "7 c #bfbfc8", "8 c #bdbdc7", "9 c #bcbbc6", "0 c #bbbac5", "q c #bab9c3", "w c #b6b5c1", "e c #b4b2bf", "r c #b2b2be", "t c #b0afbb", "y c #adadba", "u c #acabb7", "i c #abaab6", "p c #a8a6b2", "a c #a5a5b1", "s c #a19fab", "d c #9a9aa8", "f c #898998", "g c #494954", "h c #d8d8df", "j c #d3d5dc", "k c #cfcfd8", "l c #b8b6c2", "z c #a4a4af", "x c #908e9d", "c c #898996", "v c #c8c8d0", "b c #b5b4bf", "n c #acabb8", "m c #9e9eaa", "M c #9999a5", "N c #91919e", "B c #8e8d98", "V c #878896", "C c #48474e", "Z c #9595a1", "A c #868694", "S c #43444b", "D c #cfd0d8", "F c #a8a7b4", "G c #a1a1af", "H c #9897a3", "J c #9292a0", "K c #838492", "L c #424146", "P c #d4d5da", "I c #9897a4", "U c #8e8d9d", "Y c #3d3c42", "T c #828291", "R c #7e7d8d", "E c #a09fac", "W c #393941", "Q c #d0d0d7", "! c #c8c6d1", "~ c #9696a4", "^ c #848492", "/ c #bbbcc6", "( c #a3a3b0", ") c #7a7b8c", "_ c #9f9fac", "` c #878694", "' c #8f909d", "] c #82838e", "[ c #7a7a89", "{ c #c6c8d1", "} c #9ea0ab", "| c #898a94", " . c #7f808d", ".. c #777888", "X. c #39353d", "o. c #8d8e97", "O. c #777886", "+. c #9798a3", "@. c #93949f", "#. c #8a8a98", "$. c #7d7d8b", "%. c #747481", "&. c #b1b1bc", "*. c #35353b", "=. c #b6b8c2", "-. c #a7a7b4", ";. c #7c7b8b", ":. c #72717e", ">. c #323135", ",. c #b4b4c1", "<. c #9494a1", "1. c #b3b3c0", "2. c #797987", "3. c #70717b", "4. c #302e33", "5. c #2b2a2e", "6. c #adadbb", "7. c #ababb8", "8. c #747484", "9. c #afb0bb", "0. c #6d6d7a", "q. c #abacb9", "w. c #a7a8b4", "e. c #a6a6b3", "r. c #727281", "t. c #28272b", "y. c #878798", "u. c #696977", "i. c #25252a", "p. c #787786", "a. c #6e6e7d", "s. c #676675", "d. c #222328", "f. c #abacb7", "g. c #706f7d", "h. c #6c6b7a", "j. c #626271", "k. c #848392", "l. c #222125", "z. c #807e8e", "x. c #676878", "c. c #676874", "v. c #61616d", "b. c #6f707b", "n. c #5d5d6a", "m. c #1d1d21", "M. c #1c1c1f", "N. c #19191c", "B. c #5a5a65", "V. c #17181a", "C. c #94939f", "Z. c #686775", "A. c #7c7b8c", "S. c #64636f", "D. c #151518", "F. c #605f6e", "G. c #52525e", "H. c #6a6973", "J. c #555563", "K. c #888798", "L. c #888796", "P. c #727182", "I. c #585767", "U. c #4c4c5c", "Y. c #141216", "T. c #9b9baa", "R. c #82818f", "E. c #6a6a79", "W. c #666679", "Q. c #5c5b6b", "!. c #585768", "~. c #515161", "^. c #9b9caa", "/. c #9493a2", "(. c #8d8b9a", "). c #686778", "_. c #121215", "`. c #858493", "'. c #464758", "]. c #434353", "[. c #0d1013", "{. c #262730", "}. c #0e0d11", "|. c #7f8391", " X c #5f606e", ".X c #575a68", "XX c #030406", "oX c #4c494f", "OX c #423d43", "+X c #2f2d31", "@X c #201f23", "#X c #18171a", "$X c #100e11", /* pixels */ " . . . . . . . X X X X X X o o o o o o O O O O O O O O + O + + + + + + + + + + + + + + + + + + + + + + + + + + @ # ", ". . . . . . X X X X o X o o o o o o O o O o O O O O + O + + + + + + + + + + + + + + + + + + + + + + + + + + + $ # ", ". . . % & & & * * = = = - ; ; ; ; ; : : > > > , , < < < 1 2 2 2 2 2 2 3 3 4 5 6 6 6 7 8 9 9 0 q q w e r r t y u i p a s d f g # ", ". . % & & * * * = = = ; h ; ; ; j : > > > > , k k < 1 1 2 2 2 2 2 3 4 4 5 6 6 6 7 8 8 9 0 q q l w e r r y y u u a z s d x c g # ", ". & % * * = = = - ; ; ; ; j : > > > > k k < < < 1 2 2 2 2 v 4 4 4 4 5 6 6 7 7 8 9 9 0 q q w b r r t y n u i a z m M N B V C # ", " . * * = = = - ; - ; ; ; j : > > > > k < < < 1 2 2 2 2 2 3 v 4 4 5 6 6 6 7 8 9 9 0 q q q w e r r t y u i i p p s d Z x B A S # ", " * = = h - ; ; ; ; j : > > > D k < < < 1 1 2 2 2 2 4 4 4 4 5 6 6 6 7 8 8 9 9 q q q w b r r t y n u u i F a G m H J x f K L # ", ". = = - ; ; ; ; j P > > > > k < k < < 1 2 2 2 2 v 4 4 4 5 6 6 6 7 7 8 9 9 0 q q l w e r r y y n u i i F p a s d I N U f K Y # ", " = - ; ; ; ; P : > > > < < < < < 1 1 1 2 2 4 3 4 4 5 6 6 6 6 7 8 9 9 9 q q q w b e r t t y n u i i F a a z m M Z N B f T Y # ", " h ; ; ; ; P > > > D < k < < 1 1 2 2 2 3 2 4 4 4 6 6 6 6 6 7 8 9 9 q q q w b b r r t t y n u i i F p a a G m M J U B c R Y # ", " X ; ; ; P > > > > < < < < 1 1 1 1 2 2 4 4 4 4 6 6 6 6 6 8 7 8 9 9 q q l l b r e r t y y n u u i F a a a z E d I J x f A R W # ", " X h P P > > > Q < < < 1 1 1 2 2 2 ! 3 4 4 5 6 6 6 6 7 7 8 8 0 0 q q w w e e r r t t y n u i u F a a a z G s d ~ J U c ^ R W # ", "X X ; ; : > > < < < 1 1 1 1 2 2 ! 3 3 4 4 6 6 6 6 8 7 8 8 0 / 0 q q w b e r e r t y y y u u i F a a a z ( G m M Z N B c ^ ) W # ", "X X ; P > > < < 1 1 1 2 2 2 2 3 3 3 4 5 6 6 6 6 7 8 8 / 0 0 0 q q w b e r r r t t y n u i i F p a a z ( G _ m I Z U f ` T ) W # ", "X X j > > > < < 1 2 2 2 2 3 3 3 4 4 5 6 6 6 6 8 8 8 / / 0 q l q w e e e r r y t y n u i i F a a a z ( G _ m d I J ' c ` ] [ W # ", "X X P > > < < 1 2 2 2 2 { 3 3 4 4 5 6 6 6 6 7 8 8 / 0 0 q q l w e e r r r t t y n u i i F a a a z ( G _ } m d Z N B | ^ ...X.# ", "X o > > D < 1 2 2 2 3 3 3 4 4 5 5 6 6 6 6 8 8 8 / / 0 q q w w e r r r t t y y n u i i F a a a z ( G _ } m d M Z N o.c T .O.X.# ", "X o > > < < 1 2 2 2 3 3 4 4 5 5 6 6 6 6 7 8 8 / 0 0 q q w w e r r r t t y y n u i i F p a a z ( G _ } m d d +.@.' #.` T $.O.X.# ", "o o > < < 1 2 2 2 4 3 4 4 5 5 6 6 6 6 8 8 8 0 / 0 0 q w w e e r r t y y n n u i i F a a a z ( G _ } m d d M +.N ' c ^ ] $.%.X.# ", "X o > < < 2 2 2 2 3 4 4 5 5 6 6 6 6 7 8 8 / 0 0 q q w w e e &.r t t y n n u i i F a a a z ( G _ } m d d M M Z @.B c T ] $.%.*.# ", "o o < < 1 2 2 v 4 4 4 5 5 6 6 6 7 7 8 8 0 / 0 =.q w w e r r t t y y n n n i i -.a a a z ( G _ } m d d M M +.Z ' B V T .;.:.*.# ", "o o < < 2 2 2 2 v 4 5 6 6 6 6 7 7 8 / 0 / 0 =.=.w w e r &.r t t y n n u i i F p a a z ( G _ } m d d M M +.Z @.' f A T R [ %.>.# ", "o O < 2 2 2 v 4 4 5 6 6 6 6 7 8 8 / 0 / q =.=.w ,.r r r t t t y n n n u i F a a a z ( G _ } m d d M M +.+.Z <.B f ^ T $.[ :.>.# ", "o O < 2 2 2 v 4 5 6 6 6 6 7 8 8 / 0 / 0 =.=.w 1.r r &.r t t y n n n i i -.a a a z ( G _ } m d d M M +.+.Z Z ' B c ^ ] $.2.3.4.# ", "O O 2 2 2 4 4 4 6 6 6 6 8 8 8 / / / q q =.w 1.1.r r t y t y n n n i i -.a a a z ( G _ } m d d M M +.+.Z ~ <.U B V T ] [ 2.3.5.# ", "o O 2 2 2 4 4 6 6 6 6 7 8 8 / 0 / q q =.w ,.r r &.r t 6.y 7.7.i i -.-.a a a z ( G _ } m d d M M +.+.~ Z Z <.U B A T R [ 8.3.5.# ", "O O 2 2 4 4 6 6 6 6 8 8 8 / / / q q =.w 1.r 9.r r y y y 7.7.7.i -.a a a a z ( G _ } m d d M M +.+.Z Z Z Z N U f A T R 2.%.0.5.# ", "o O 2 v 4 6 6 6 7 7 8 8 / / 0 q q =.w 1.r 9.r r y 6.q.7.7.7.i w.e.a a a z ( G _ } m d d M M +.+.Z ~ Z Z J N B f A ] R 8.r.0.t.# ", "O O 2 4 4 6 6 7 7 8 8 / 0 0 q q =.w 1.r 9.r 6.y y q.7.7.7.i a a a e.z z G G _ } m d d M M +.+.Z ~ Z Z J N U B y.T R [ 8.r.0.t.# ", "O O 4 4 6 6 7 7 8 8 0 0 0 q q w w 1.r 9.r r 9.6.q.7.7.7.i a e.a e.z z G G _ } m d d M M +.+.~ Z Z Z @.N ' U B A T $.2.8.:.u.i.# ", "O O 4 4 6 6 7 8 9 0 0 0 q q w w 1.r 9.r 6.y y q.q.7.7.i a e.a e.z z G G } } m d d M M +.+.Z Z Z Z J N U U B f ^ ] ;.2.%.:.u.i.# ", "O + 4 6 6 7 8 9 0 0 q q q w w 1.r 9.r r 9.6.q.q.i i i a e.a a z z G ( } } m d d M M +.+.Z ~ Z Z <.N U ' B f c T R [ p.%.a.s.i.# ", "+ O 6 6 7 8 0 0 0 0 q q w ,.1.r r r y y y q.q.i i w.a e.a a z z G G } } m d d M M +.+.Z ~ Z Z J N U U B f f A T R [ p.r.a.s.i.# ", "O + 6 6 7 / 0 0 q q =.w b r r r 9.y y y q.7.q.i w.a e.a a z ( ( } } } _ d d M M +.+.~ Z Z Z @.N U ' B f f c A T $.[ 8.:.0.s.d.# ", "+ + 6 7 8 0 0 q q b w b r r r 9.y y y q.f.i i w.a e.a a z ( G } _ } _ d d M M +.+.Z Z Z Z J N U U B f f c c A ] $.2.%.g.h.j.d.# ", "+ + 6 8 / 0 q q q w b r r r 9.&.y y q.i f.i w.e.a a a z ( ( } _ } _ d d M M +.+.Z ~ Z Z <.N U U B f f c c c k.] ;.p.r.a.h.j.l.# ", "+ + 7 8 0 q q =.b b b r &.y y y y f.i f.i w.a a a a z ( G } _ } m d d M M +.+.~ Z Z Z J N U ' B f f c c c A T z.[ 8.r.0.x.j.l.# ", "+ + 8 0 0 w q w b b 9.r y &.y y f.f.i i w.a a a a z ( ( } _ } _ d d M M +.+.~ Z Z Z @.N ' U B f f f c c A ^ T $.[ %.:.0.c.v.l.# ", "+ + 0 0 0 w w b b 9.r y &.y y f.i f.i a a a a a z G G } _ } m d d M M +.+.~ Z Z Z J N U U B f f c c c A ^ ^ ] ;.2.%.b.u.c.v.l.# ", "+ + 0 0 w w ,.r r r &.y y y f.i f.i a F a a a z G G _ _ _ _ d d M M +.+.~ Z Z Z @.N U ' B f f f c c A ^ ^ k.z.;.8.%.0.u.c.n.l.# ", "+ + 0 =.=.1.1.r 9.y y y y f.i f.i a a a a a G G E _ s _ m d d M M +.+.~ Z Z Z J N U U B f f c c c A ^ ^ k.] $.2.%.:.0.h.c.n.m.# ", "+ + 0 =.w r r r y &.y y f.f.i i a a a a z G G E m s m m d d M M +.+.~ Z Z Z @.N U U B f f f c c A ^ ^ T ] ] $.2.%.b.0.s.j.n.M.# ", "+ + =.=.1.1.r y &.y y i i i w.a a a a ( G E s s m m m d d M M +.+.~ Z Z Z J N U U B f f c c c A ^ ^ k.] ] R [ O.%.a.0.s.j.n.N.# ", "+ + =.1.r r y y y n i i i -.a a a a ( G E s m m m m d d M M ~ ~ ~ Z Z Z @.N U ' B f f f c c A ^ ^ k.] ] z.$.2.8.r.a.u.c.v.n.N.# ", "+ + w 1.r y y y n i i i -.a -.( a ( G E s m m m d d M M M ~ +.Z Z Z J J N U U B f f c c c A ^ ^ k.] ] z.R $.2.%.:.0.u.j.v.B.V.# ", "+ + 1.r r &.n n 7.i F -.a a a a ( G E m m m d d M M M M Z +.Z Z <.C.N N U U B f f f c c A ^ ^ T ] ] R R R [ 2.%.:.0.Z.j.v.B.V.# ", "+ + 1.r y y n i i F -.a -.( a ( G E m m m M d d M M H Z H Z C.C.N N N U ' B f f c c c A ^ ^ k.] ] z.R $.A.[ 8.%.b.h.c.S.n.B.V.# ", "+ + r 9.y 7.i i -.a -.( a ( ( } _ } m m d d M M H I Z Z Z C.C.C.N N ' U B f f f c c A ^ ^ k.] ] z.R $.A.;.[ 2.r.0.u.c.v.n.B.D.# ", "+ + r y y i i -.a -.( a ( ( } E } m m M M M +.H Z Z Z J C.C.N N x x U B f f c c c A ^ ^ k.] ] z.R $.A.;.[ 2.%.:.0.u.j.v.F.G.V.# ", "+ + 9.y i i -.a -.( a ( ( } _ } m m d d d +.+.Z H Z C.C.C.N N x U B B f f f c c A ^ ^ T ] ] R R $.A.[ [ [ 8.%.g.0.H.j.v.n.G.D.# ", "+ + y 7.i -.a -.( a ( ( G } } m m M M M H H H H Z C.C.C.N N U U B B f f c c c A ^ ^ k.] ] z.R $.A.;.[ [ 8.8.:.0.u.H.S.v.B.J.D.# ", "+ + y i -.a -.( a ( ( } _ _ m m d d M +.H H Z Z C.C.N N N U ' B B f f f c c A ^ ^ k.] ] z.R $.A.;.[ [ ..8.r.g.h.u.j.v.n.B.G.D.# ", "+ + i i -.a ( a ( ( G } _ _ d M M H I Z Z Z J N N N x ' U B B f K.c L.A A ^ k.k.] ] R $.$.$.;.[ [ 2.8.8.P.P.h.h.s.j.F.n.I.G.D.# ", "+ + i a a a a ( } _ _ _ d d I I I J J J J N U N U B B B f c A L.^ k.k.k.T ] z.z.$.$.[ ;.2.2.2.2.8.8.8.P.P.h.h.s.j.F.n.B.J.U.Y.# ", "+ + w.a a ( } _ _ T.d M ~ ~ J J J J N U U B B f f c V A ^ k.k.T R.R.z.z.$.$.;.2.2.2.2.O.8.%.8.%.r.:.:.a.a.E.W.s.j.F.Q.!.~.$ D.# ", "+ + a a } _ ^.d d ~ ~ /.J J U N U (.f f f c c A ^ ^ T T ] z.R R z.A.;.;.2.2.2.2.%.%.%.%.%.%.:.a.a.a.h.h.).W.W.j.F.Q.!.~.~.U._.# ", "+ + a } _ d +.~ J J J U U (.(.f K.y.f A A ^ T T T ] R $.A.;.;.[ 2.2.p.p.%.%.%.r.r.:.:.b.b.0.a.h.h.).).Z.s.j.j.F.!.!.J.J.U.g Y.# ", "+ + _ m M ~ J J U U (.f K.K.A y.A `.T T ] ] .R $.;.[ ;.2.p.p.p.p.%.%.r.:.:.:.b.0.0.0.0.u.h.s.s.Z.j.W.j.j.j.F.Q.!.J.~.U.U.'._.# ", "+ + ^.M ~ N U f f f L.A `.K K T T ] R R $.;.[ [ 2.p.p.8.8.%.r.r.:.:.g.g.0.0.0.u.0.u.u.s.c.c.j.j.j.F.F.F.Q.Q.Q.!.J.~.~.U.'.]._.# ", "+ + M <.' f y.K.A `.T T T T R R $.;.[ [ 2.[ p.8.%.r.r.r.:.:.g.g.g.g.0.u.u.u.x.s.c.c.j.j.j.v.F.F.F.n.n.n.Q.Q.!.J.~.U.U.g ].S [.# ", "+ + <.U y.A `.T T R R R R ) [ [ 2.2.8.8.8.%.r.:.:.g.g.g.g.h.g.u.u.Z.Z.H.c.j.j.j.j.v.v.n.n.Q.n.Q.I.I.I.J.J.J.~.~.~.U.'.].].{.}.# ", "+ + U |.|.R R ) ) [ [ ..[ 8.8.%.%.b.r.b.b.a.a.0.h.h.h.h.W.s.c.c.j.j.j.v. X Xn. X.X.X.XQ..XJ.J.J.J.~.~.~.~.~.U.U.'.].].Y {.D.XX# ", "+ + oXC C C L L OXOXY Y Y W W X.X.X.*.*.>.>.>.+X4.+X+X5.5.t.t.i.i.i.l.l.@X@Xm.m.m.M.N.N.N.N.#X#X#X#X#XY.Y.Y._._._.$X}.}.}.XX# # ", "@ XXXXXXXX# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # " }; ���������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Pixmaps/swback.png���������������������������������������������������0000644�0001750�0001750�00000021536�13642357774�016647� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��,��,��z��� pHYs��#)��#)J ��#IDATx xչH&UDrEDKMV`(DEB5QcC*Tj!<V+AZ%*h,_-@DH $Br;&3svd9a;gΞ9өQ'eѨd^k+TꊩU )wbTVwl]ٶ0쟋.UVN~Ji&UYlm[lϢV)-^tV֖뮥_]l8q<uR|orFiO؉hG[Z/d6Z1)m-b]bWmilҶy̾$l#~[ŮЋmJ ӭZFyQTnLKK[Vl1/EGRǶLRn?YnndmK+eLX6m-B?p}RESS˟-R*)i+eT'G1E>Nvoyz}ЮSI56G.0YljBci̺w9էZ%3w(=̻:yD}H=Z#UKThףRy*e?Vʆ<[*0OL2X)[l<ǟn)[l٣R2Or7s^u؟]6T)*v\ͺsP}b^6Ϣc<+g>}j!⺺~SR+r]jU{M6ʧ`nnnkY&2Ĭ:*//+))Z]J,#B6J++VlE8}w?3W\ԅ=))8(=ٲmMFnvD=c]OR]n, Ñt_𯛽ʑD?8\ٯ+[>Bک.))鑌eʡh#51z5UmiܸCrV#Fbvuӧ]myXv;Աvnv~c!m Znc,;C%}"K�r�D�D f?Bۍ@,hg @d P�"K�r�t @T�m/:}U]b+Ync}m,n{*gY1t$vI&ղkGETW?|{P!>c$:85levUl]W[Ht즗JJJ곳{/%BcivϘRo7T<ݖ>\VV6%5!'MÒ v74:5phcu䍤2pgy_»t^RthRi:ux}S:*x'jQmgr^Xr#ףc.*x9r$k׮no+ۣ 5줹z'NP& ƴLXmjf6|Ȇ^]r/󜆩P7V_u?9ɺΤ*S:8]c߱Gn=hcTTmkԩՍ՚[gEӧOXTWWdBY0F�"K�F@d `6H5F�D�,,h:hYQno �%�9K�"K�~7F�4J @F�D�g @d @v�|  @A�"K�F @d P�(, @�XrhvSƺy3u3~N?RZɼ|kشgDRvcm2}4Oݙ0j V>zv.գqEEE ޤkw4"޶%9ga497>We y"qAA~ ,Po,:%{>e˪g2cSmW3gpQ ~ڵk_[p)K6QY,kH?'N2kHJJ\}lx7y杓vCH?-m%K\]fzl7pz7ݦ|�EE~yZZjltJJԾ9YI;OeA}m$邋 /!$,af4} 2\{Jf2m0 L3Q't9By9+7 ,thO}˪j:e^كxvGL3UVtzSVְ\m JQ20ZudJU}CE~8@uw*k׮}:Y`*"bz�দ%%%K:TFeTzفXFgޚ}Iqqq%Fӏ>w>|<?Ǫx}*<G?3z{sAu/]Wp>k7j j`5p< d�t:ctI{{gzyc-nooūc2nx$WXz<F<;Bi`2HaX8# B'p/|Wg,̫!@0n@BRic!cA@ t )A R@@wHR@))A R" x8 @@@)A R chcR`WR`WR cn�)@ @ d,X f)+)x)@ tX )p^!HaX3~s{m 8,V./'fy%{|a8]5,+,,/Sk%ip?lE೬v/ Oa +z.τ<'.8q^e6apћy;t'0˼"7>Wc<;;{Q0v4Z =lٲ쨐+ f�uf߿[iG*Ԡ"z72OmťR _Φ,d`c_vW狋+**̞N*sȑ׻v:R䃷*EuKoB48vM? hg|ZZ+Au+.\pʹilgݠp.m(U\\\Ò%K.3{^GhT薧"GhQ'>`/vu@ zt?5=(222&%%nXYYYQ?s[]?,f 75Y~ \>KTy]WWσQO9uj=;a>wAR/E /G%CX.饏<#T2pH ۀcx9Ov덃 |J-߳f`;3`Cy#|Yf�nڞ,wg+D=j`ųbSe[`e+tr*{ᾤ@A֗y)|r1SϿS^xg<=Tcs Է} +.o+P` )`#>Wdpp x' c|@Zϧ`NRziPp ,6EAA=ټ1>t"..4+eXAuݣU.:w~d/_>:rmL~APņm_5Uf.TgN>} z{*2Z:r< .,>:wOac}çl#!UgΫ5lQo*++h+C$8nVY{6OfffF5k0[ a6=`obŃڤvGX. O&bKZ3f7*go I'$$VWWwNў e,�bvM'z1 x {{\D�' W=wTLҡzo5>ZX8\́c)kt4ut<gbŊ <P{tkH bc%-GҁX�⁕)X a`ќYn�#VSC)X c(<c! ,$ZYk %t7@!@ HaX?ф)G7PR0`d,R @  CnhB`A R`)H]!H)L~0֊M,G O:BR0"H)̻pAwD 0?a=` V[b X .+R c, `(V VBR <d,R @ 9HM,|t X  @`s`R*HK~2 ]!H)0`tD @`a  q5 @ ? '"\pt7@4!@ Ha>l?@@ H FBn@`A+)X tܭ F)X s[Z0pTFo`UWW_Ft}XP@&25c v1upq:Q'Kca8 XOq) /gYEEn0%%B \^';k^ApYw2\^RRҠ_m,na8׬jjj9"YK~c+zD ' 6\^\\\om`0Gŷ.τX5p: >gԾSv• v]:楐+ γ<充uF˳VXY^=V~Z-Q>Z>9}hyZZj5JeGk~V N@Wc<!!ZoX̠_wt\T2JJJnWz)k ?@U)]k69P^^~9m"cL"X.8c(Wيg\CRc[&sn|6lǁC߲|(L8qsˬ =fORo޾ˁ(;UviR5 [eee=_n%ꙟE6(ed0xOػO0h/S%KEƼ?SV}WoY쥷>W D`w؟ySԫ'bTDd T5}j,FeD>lFص̙3\ƈY:Æ _h/{cIM:uTRR]p`Q.[|\{N㇙犾 ->}V֥L(HRp<v~yVQZ7nH'R㭴avQ㇟Byo?:{Yy~~pׄ|&4aP+ރ*} D `_Ͽ*11:{^I3f0\ ѓ;Y@Ma\|^I|hz#eR:rT,VRR2rς$''p׿rօ};9trq<3?Cɳe3:=V</#'!>�FZX7xYLN'3$^&2�dsy\ͲzIbef[JX3i ♧ѐYyX}+O$$IRL�$o!g]ѩIH^YT컃~t8W\EGF^neQjyHXxWUsm0 �kw9Ʈ88DZgr񲁅ؚjlnarK�@�}ʶ5(\N mHboY<Kp$, 1QQis�ؽϝ:Z_s{񖍼XDBIXs\̋)I-ًV 1}j}-LJԩӸ0WQl¢U(9M)Ͷ}3)8�ĶuV)r}Bv~sΝ;ׯᬛh<B5?{ZS�SvR2dƜ'Zu^7nᨏHnU!Qt e[)5M ē}%%%k7I_ VV_I7ml>,@':@GF,Z\c{[~]vvvO=~ĉ#h~J\|~<-+@0u�XqRJ^R?kRRRΠيg̘1&//ot0cKX93jUN�bCvlY]澣 ϟOZhn@sk%&8y�L7{kv?ֽiקE--f^F`3JX.&[�] M-_$ga5e_4N6mV<B� +u 5՚ٳ]I@,ϬPq=�o,#>##zz ]q'ڄάM{~`_A�N ~ji]PQQL S%-mʷZG_fx�D@CqQ8kCq{~QMX}Qk?:[X͖*�rDr~)lE .\ܪ�/9(iɵvݟ?[`s鱶e/> �b̟7 )< V́c>�@Trrrg~hxS�b~y [HQYY9nr!U��***F 'm�W[[-,�p: �C(avp�A� :pH��!Z1�-,�p $,�p JQʩ �tPQڊ>,�c ac%VւCB�Ss�� � �ClzSs�@L8Gn��!<#@5�@,B�@��hac actu @@G� � !aca � (Hhac ac ac1}X� � !ac`X�ȅa ��1�1�)�@�&(A�!!�8�8ذ~8Ss�@D8�@�@�bX� :�@�q�@5�@,B�@�NX-��Q�8�8F~�`]t/B�QCB�p $,�p ���8�8l 0 a(L/�1 �C��bى�8�8�8FW9!*�!9��1gkT J�@�@�ba k��!6[C+~� $)3d$-�A3o k#/V^a �`[^huԄ7C {yr%� vby]},:jZK7E�(_Xy^@ǣeeT�M3!{wzڄ5YHXG*�g@D6+-K@%&&Vk.^2) {vd#&aB�;(?/VKHHkP[Y}x7�Cjǫ[+****++nZZkFRy9h <Ivä-U�:.dU]]UrrCB|c卆g;V~yO ;t8`'?�t@/uuu' []?++kݚtzo)-͕{�: Z^ӿZwj.IZyƔa)a_y֊|Nnnd~s wr$-7a ?H�!]k]#F+N:*..A}lgezq!lCciP�l׿2QuZVꡠJdy,a~x+/MŏWe<*]h؂_(Y/>Z[^{fӯmgSnX�DITt+F։Y"N7[>x[R5jfۼ}wU�p컮RD_G}UgN u\YWц)_:JO'ᇌ_X�$EMTO>^8HgNyvW:ut[Dfcju}StF*CA~%%% &*P/sd5ߌZ ISG=VVy�-CeF=&>*VPd5ߌyW2d=III~ uu7U1ozDxkPyyP_ysJjθqM[<7JII9Cg^*6 � fJTU"_拲MȢ|٩]333P�AZi_ EReN [ZZZJf@~(: QM6ݩ5ʅT{,\pݻӱ1uJMM=rj�x~ѣVL8ܟA);;;~zg"WXQDG*fΔĨ$&&F d 1+JDe$$#=6l2j,|VM^Ieee&hՄW3f\*kEC.zl%<%P*[&,=}#{5?a#꒢Y?+RSSS)erPΞk<%4Jdu8-SKwDc;pOKs ����IENDB`������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Pixmaps/swback2.png��������������������������������������������������0000644�0001750�0001750�00000020715�13642357774�016727� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��,��,��z��� pHYs��#)��#)J ��!IDATxx[e0uNۂv>2IaS轗Lw-u VD,NR&Enw.Ȧ>wN.lmaKzIywINNNޝ{޼=s~?39RQ:^Z B+TF$Շ1f~JVï>JߑYƪ2TNX`O?Je\s'ﺍUWWS{,c)yt{O?eQlz6 3{??MԬP1s}XbSb&Hjc歘i?{)F8|*EYbSSI}1QcyT?]1%0Bj'VX]M-NY ܎S\\SX+/-dɯ:կЭSQ_Y6; wMW*E]Ptڣ1?u^o۝R+?RZ~*qSS/c^н#C`F0}] 8fjبwXOu|Vff˚K%Nl݁j60w~xR^)@_Tc`Lh/3W\Y̕2ό2呎)9+eO)+e^f|3q3ϔɈLLY)3/dIu]Qê%iz}T+NكY*{ׯb )"WPPnOqFQԊ8]ԝJOq}}ʰ^b;rlekhhLJ.@ {yqʨ xi78kE^|e'^^BZw(2_uPz2ǁ'pkW?pw6lw֌BR wc?p' ʕegQVН[;aM_/}}MYNv'SWS>:}vn|}FږW̬2ndkM`6!;\Džf%`2Y `g �, 2�Ad neHm(�9K�"K�v�|  �MYf,fC)8.Yl.xe*df?u-1z@(H'O%UI(0CH*b3O?,)xjֵ3w9%:::&*++?)R"_16wnn%54!'MÒ3 f1Tfp*Κ;I;6΢Yc¦ݿcZ&Ѹ{?.Vˀv8/63Sf] MYBwlS1h˚ƷOK<u-++kEꝕϋ}z#)&U&~Z=7<;܆줺?=9NP(jc],ub  g0? ̺Ίut"řU_T|ϰײJ5,8{nzgmذ!Rv-539>Oa544<eX^`P"K�"K�"K� `g P��D�D�D�| �$x,,,6%�CA�"K�doC8W�>pl(�%�M,h:@A�>t�D�4 �Ch:@d @A�"K�aPC6s־ϗj׽~UϙMYDs![nv'RfttQzDIwj];&?}}}3.#;f*Qj㽏NW(3BMv6a4&SJv/=G-[\J;>8EWIhxLyjddMYjݻjz[e;X硄W8=VQri򚚚W'''c233;<lզsnU2zK;j۶mU/=;jo^ey*JEMˋwF">G C*4) H+;-NRȚ.t2L7eFlcf4΢H;/ީt沍E,Tu¬*dx6&X4=JEzc$sE{3?2լF ӝZE`z]vߋ[6 S |UF ~gu\ r-޽{wPTb )WPfWk;::~Ձ ,͠J31vf,<.P]]~P+B+,Y55>>2V1}53Su/>]Q%>XWBP^pѵchcjCWna|7i<]>sooٔ1YJpv74< `Eu_V(dp�Ĉs*@ B ‌R @ |X @ d,m, @`*)@ t7X X 2H)UR cn�)@mX m@ H;HR@)@ d,R@)x)@ d, @`n�)@ 4A d, @)X @ aV_v%.`{ZO ,/^n ;\-%Öy<eJ`"Y╉XC ]*̠jm,c XSkjj^ ]VZZ.쒯RI Osկh-ljkx'҆^ysmmm[B ./zoqqpElWSD `b}mݬ* ?\^D__ߤ"FzދSNʪ}vMY(\mkB*yj|i+/..rBI ݺuG |c۶m{^BT-[xj\ţƣ6St;`.ѾJД;~4+//n|Vf$6mZG ꆛɌD?WNNȖ-[. 6dj^166QO9uj&rsPg祅;X|:yoao`/-Ay* ॄDIdm2켌O_b |^&` %;%+ϑ7ӱjƳ!2|~%ȁ \rE̞C |r b}?ecguQ0~X߆ e~nZ-Y0d~F΂Cgt5kXR`iVtkpS9.tc hegjԛ,)ilYs/j)l,BP=ZuP(AdTnf?=~\o5Xm[׌X]]\2336- l=٩G6|bNGێV`2fw#Ҁu_7/ {܆WlH ,xIc4Bk0sa8 =B-44,VQcy+4Z+ Τ+jwl^WWɩk&Pf^F9O唵xp]6::;~NXR *hXJڸqz':6`ݽ $XS笷asrr{NQ (֯_tr9ae }AR* |esGYKEy ,5u֢r$^`q'4SR& i %IBEEEsھ}{^q#Ccҭfwx1! (6X+,"\  ҁC`<X N`1tk{#c,R @ \@)X  AAK<Zh1*)X  @)HR @ H)04ah2 @`#4  BR @ t tB !@ H)04@)X  ΰL :  A H)"nx/5@ RR @ H^�0- @`�RDX, A H)0wH!H)X ~@B,R &, A H)0-HR @ H)'Ђm!X  dn�MhC !@ H 2H)X  ,n� <zVfy'tu鰯7 ) ">d2%c}$M<%N`!|cccaymܼK\Uk ̠¾ rүWz򎎎7BzN+V9.ځ599vD,΋3t%pVru˽^kԁE_z2]glX5j_effC ۙFpz-(Vܕ}TsZ^YYZdvWK}npp-;Vi!y` eb&Xmf/X\uu+ZsrrFZ54O+ `ަ0gYsn˖-*z)ki@D sڻC`9]bOH~L'(ז}\}+?#pOVHEQC'^R-"yUﹲVټ=IQ;tTf`S`&M7K) ]n$&XE٫/~8+Z] frQ"e*m۶j-9"{<B[D>eGo2Y-_oGɆ:Koy֥,FT#`HǮiӦe7ZOZt|gzx<۰aʼ#,ҶO[NN0�s Y2U"1Jvhw(oXgFsu&45޺n[3bs^qqqf<ۆģ"?۽L5qbO}T({*} D> `^7o477w$3%l^y7n|>Qۄq\uX$tRlſ+/舏Ƭǻ)Б$eƁ+eħ+!t";oʒ61~ L3g۽0ә: LHS  ^s:%a9yߪg*e,ĚXefZJX^  NղVL`ɮL$LX,lI|O�MT!>!a85U9Cvª˒O(�q/>^Vd$,/{XXf/Off=[X䂼-=9ØZ]nPD"^gkjԛlۯ;�8u^ j9s3TiglID²8U!VH�2_ӎ̖579 $ecZ[,/$/ъ0<R!ڳ+$//w}9sT%&,jQ9D_Di�DZ[֖//z=OVk͚/ƯedۂW`XIhMX uPq.yi_DOVnxZ$,VU Q5>D`q/ u5_GducGGǚ_t &Hg،nTQCDe+;9]_fujMM͕4 %X?Zr`ʰgĥ�fv7=ي7nܸzU,cEJXNca�iDi͛7˓qBsF]M/a9@f⊻v]�fg;fG[oh(%-jiє4'WLҺS(egɪiָ7FWYh,{Vvosm^[V(WFzMh¢w2gd�j z ?uݩ*WkZ[~2+ &,3+OHV�s--/--RXO+]DU �i?Roh]w.,KZ6Z׽ߏ�'rd/tyhgxD%a3{x UC�Ef=QץK&,:<ܺunVh%}�(_]E$W/;vB$o5cu ߑa@k<kq}кgk-^tԟ%Ozc��Q4I稕~oM/HX�f tk �D׷ �,attt>�Xk�!� ZX�`HX�`HX�` }X�"hae ae ae ae%,5�?@B�@�@�Hw� �2�2�20(�H��2�2�2gk`�$-,�$,� $,� $,� t�0��X�Xf�@ �, �, �, �,Cp?fk��1~ 4��CJ��0[�HNw�HCHX�`HX�`�ȅ|@:B�@�@��`hae ae ae ae`� 5�@B�@�l � }X��2�2�2ħHQ�) !ae ae ae`d� �2�2�2b�l ��2�2�2p/� ��2�2�20[�XZX�`HX�`HX�` 5�@%,Ȫ�RJvU��.^whhh( eu.w}>Õ�E¨$v^F6 � Zk0aMNN" xE *�驱zC2:a1 xY�@ _eh]j]uuu^nn:a KmeXɷ܆*�CFy #䌄kPZY^d!�@FM id]Z㰊x7$-�P&w =$TrȆ(iQ%na' ,Bf돍|wӭHa&;>Jn|?l�0 rv)Y544ft}taast?ҩ9,y0eXJX�`v,|xFEr)K8K6 &-S)j�X%*>idچ Vfff<6z3uSz76~;T,l`Б%�;YEQuZVʡBdXlF^@M'Z.Y?�"DEFɪxgrQEk=[fu�^)}'p+F{<1VKV$G 0ya횲@V׊[63!`Ըp߰:e%:꫺ۗx+u"łw.CFID"&*2#n{Y1 vʳw}wǜ9sֈn@}H'K �vM9*:::ވ5QHz MГnDZB^~L-0J^{y y0*J./JrZM,}T *5)Wj5Ycǎ/o} ѷ@TM5E:˄J===qWpDR/UUU7v>}s]XXAI3�HX|D:JR6U} xVegf͓� {'_7:K4B%BԹFgyE999gS2Kf�Ca^<Z~Ʃ5Jɕ?uǎ[HTu߫hno�ѣVL8AɩmW?Q)Tpg۷oo5*zΔĨMKJ?�BӧO%$z,#!iҥKۨ"L[%yuww̛+ -y5�ͯzF*kFC.zl$<%P(S&P fe8KW奲~�ZO0OK$,-4Jeee(I ?>}vcN46 m ����IENDB`���������������������������������������������������WindowMaker-0.95.9/WindowMaker/Pixmaps/Makefile.am��������������������������������������������������0000644�0001750�0001750�00000000232�13431646201�016667� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ defsdatadir = $(pkgdatadir)/Pixmaps defsdata_DATA = tile.tiff \ tile.xpm \ swtile.png \ swback.png \ swback2.png EXTRA_DIST = $(defsdata_DATA) ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Pixmaps/tile.tiff����������������������������������������������������0000644�0001750�0001750�00000007650�13431646201�016455� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������MM�*��t"p8"-"aPD6DbD*-FcQ B J"KQR7/Eq!7H4|@OGڜv:U:W5Lc)\(fitA!' }>)4e6QU5jf1kB} Y疻jE\;BTkEo]-JD9smƍs<t1|6Vku-|T)dU ('vFvٜv]0KErD"8m]sl|lukE ܙ ש6èܫ/ϋb$(:ԟ-)=6PC8݌[-␤' ?̃@:9#Bܾ1 OLDki.cnDPT~ R'R(�9Rb'Itl9M>Nj} Q<B0-2.9MoxĐX8а);L/a>OE,4PC")˂E0(3<Ґ.JE9˂( C)UlkKMRӃ[ h( H׉-S`XR^FխD. "F�366[De e, $_OS*m9{֖]-V$-uuJ3@Mz?q h,Gia.S;4C7Y-|_XYs]| d-sAxmyeBWAצJlA(�"7bc7lϓhQy}M:NmlJz>;FPjNpP"h7oc`Ծ,ӵp\|)ZR3 Qp{n+z вFw&0w-xDT%z7Vog5zx~]dOO_%zd/6M*;?EK7[@w�u&\V.(=7< ۀƊ^\%nvd+Ob` P~;:A�Y@ڠ`� n",mށPR|0QQ(C4[ X!QESCs@lSt8"C "rxP;9x8`ONh# r "7K nDX3e2A3hB!?'τ&I!*I.Jq*EvګQ*&?(=+$ 2T;9 &[:odHx_ TL1%sn0XzrRKԳ:wm*1ٴ':��8,EՑ=(?vt,�` m4ZvP!(׏Ty\A:ZRce Û4֛`xA0&jV!Q0US Ժ>+@C~*UjM0X5D1jeihOZw[ȴrU GUlyMGhCA X 4wƅcYAaWp+f p$YZ@c e[ -lSt %"ȍ+D6EYIlh=6Vpn &B][K4}VRk{m,@4[{?td&1Q]WkBTj0'G=hsp0`-9\wnTE Tb\'1@m1vStl1&@ADH>%'ɵ-A M*|XdR AG=R}-բJټevQ e%A51- ,dv)xAx�uBX6 R A6:8(R#N (%znPBZ e�yP�ƶa4s@JC@' ֭I2;�n A3hePW6r`ZۚŸJV al`n 6Ffݳ"@ ^XK^Ѹ$hwY;v�|  F׌ X99 =x-~\ ?9Yq0>@�2|@g0@W0( @�@h /�H]^�i`�:q]Ϻw^y$��������@�������@����������������������� ������� ���� �� ^����$�� h����������������������������������k������ ������ �������(�������1���� �� @������ ����tile.tiff� Imported from XPM image: tile.xpm�H������H������ImageMagick�����!!!!!!!!))))!!))111111999999BBBBBBJJJJBBBBJJJJJJRRRRRRRRZZZZZZZZZZZZcccccccccccccckkkkkkkkkkkkssssssssssss{{{{{{{{{{{{R@ �!��@&@&S@ S@ S,@ S@@ � ���(�� mIoptrdef or mPX Mmiga:et li.epx�m��p@&p@& ������$��1��@��Q��d��y�������������!��D��i��ِ��׹������@��q��Τ������I��DŽ�������A��������Y������   $$$$(($$,,,,00444488<<<<AAEEEEIIAAEEIIMMQQQQQQUUYYUUUUYYYY]]aa]]aaaaeeeeiiiieeeeiiiimmqqmmqqqquuyyyyuuyyyy}}}}����@&@&������ V@�@&�����8#8798�6 ����� C@�@&0�����4#4847�e@����� Z@�@&P�����9#95a5�1`����� A@�@&p�����8#8696�4����� S@�@&�����4#4344�b����� D@�@&�����c#dfd0�8����� F@�@&���������!!!!!!))))))))111111119999BBBBBBBBJJJJJJRRZZRRZZZZZZcccckkcckkcckkkkkkkkkkssss{{ss{{ss{{ss{{{{{{{{{{��!����   $$$$(($$,,,,00444488<<<<AAEEEEIIAAEEIIMMQQQQQQUUYYUUUUYYYY]]aa]]aaaaeeeeiiiieeeeiiiimmqqmmqqqquuyyyyuuyyyy}}}}����������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Pixmaps/swtile.png���������������������������������������������������0000644�0001750�0001750�00000020627�13642357774�016704� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��,��,��z��� pHYs��#)��#)J ��!IIDATxOlR8�9FJ(T4,a)P[J@OId}IAX!ԪHT.J d*ChQsh$pr@rONeVgg{ǻ~I+w}fg'Orqn޼P(d {<}`޽O\{{{r󙹦o[b B]||%jnnn:rO?ŧs @ܼ?|[| Uzzz g'O;vW׷O߿WJз޵U.E|Q0_E|Q0_E|Q0_mڴ酻w~[¸Oǧ:tFA;T/T[v zڑ#G<O+P.\XoTK.]u֗U([SP_ ~= s޷o*XP f tBI>izppzttt-=;;l^FGϞ=ЉVݝӭl^G=lGm z(Z0 bƍg?uvv>PMT[ U(BEҢPiQ(TZ*- JBEҢPi5T6lذN?PTBsP֥Ƽ*uY0ő=]_6Jl \B(v Y=qtu<x.dMILU?!Q&5.ZCZg[$vRӍ<܇MNٯSc!Fl=ʲ9i9(hTgΜ)~UGʢ٣4Du.k@&|{Yo(s|,T*@ey<PY,T*@ey<PY,T*@eyЙ2Ǯ ^ɱ۶m{yΘIK3k֬Yk,h+L'Z#̝NI,#.`_Z*-:7Tu!s7n`B[MдÇgjh%Y{C;Tc ך!-z}MNNhn%mjn䍏玥ڮwwwyMv|KooEAdi>>>4[5+˝{™e"n[YfWy2}0%l dbwD+,Mƪy(ڹskvz}Lf7TѓʖQEi.]YZimk׮}M\xSV٭o? *JPs+Wwliiɍ+L{~9{jNV).t:J\m{}Wr6 -+eck`A 䩉:ah+[Yv0S޴>l:h_CwE<SP㎪(wf  T*@ey<PY,T*@ey<PY,T*@ey<PY,T*@ey<PY,T*@ey<PY,T*@ey<PY,ʚl <xPY,otyҹܦM^u~M|lW4۷Je>zRn't]ռ _JQz*%xyg+Kp]6�Bd:e7Wz4P6W-900'NMmٕհ$Vlq/h~%K^B>+9ʢk}S ZL_G-{X+y;nR6W+wsEum]|}>c7I_Vo7j;-Jvm FrEB^ݙ-ՒFhL3d}oo];J }€FQH W2&4M',-jW4uuuuzh|&`KbF9ְ ktإmHX> C{AuvGWS5kXv^NrҊh\7o~i ĽF`4Xp錍~<KK1Q謺s[@Fl 3X+y8p5rKE/d+r7o|.n 3Jm(j.L!옝E+zŦte,z@G'6?0Yv)YjusrKCQklAI\m,'YB"K#!R {Uj4i2:,R`UJ$ӐDxiB  ,A`! AXB  ,A`! AXB  ,A`! AXB  ,A`! AXB  ,A`! AXB  ,A`! Aڮ̼}vs1LDܹ3">>555_N8Qvm۶L`!*ꪓ v7oތ}]X ÊиU_ ˗/L}]^{3 IAO5221888m7J 3gΜ}iJZ?KFxkoo==ԴM9~V׬YLsnP)9)tAѬ[4A[vm… eoh�[*DP(~Wܸǎci۳<x===βmmݽ{۳ge)o4]Ivvcuttʶߴi >ի^vte/߿oLədhrUy/>p&{&EjWGqciPVC:& cccC\wwwڷC =nB]} ;2ioo/LOcJW\Y�r{ytZMv]H~h>I�^/ɓZWgy{m AHMCJ7nկ~956ck2Ro}Q;v&x 2أ$&''Ehq.qIU-UQjjƧ\jf:h;_T`ysϥ GP5==nzI�/iTK4@?Ʋ, '1ϷW`;.?w%/\$ҼOi+iTLJ-lGGGfj`*hq?oݺǏJ"۷oUm& Qc$XqA74J cYݹskzRݬkԱە2Wb`7YT 'OW Ρi~:#+i;RlT-&Ղ٦St4k4.^W *?JY~48/+e/;]Ÿ* ,kBFI d֕GSu3QJ4np6(}Y`htH&iSZdԬQ{رcqk}/c\ *)O12uHηS%KS^M$oP[s:.CvM) ѠXObEI577?}Nvbf^a]ɩJ)#0T[X&'iI9I-7k=zfB]x-)[q)ݬeT啺샕jZBdVCT#>?55u>Z4@c6Sy{M)BB"4*7cdO V׿ 0Z4J4 HKx;_X;vWyBg`lRZXepGXiJsG8µt ,A`! AXB  ,A`! AXB  ,A`! AXB  ,A`! AXB  ,A`! AXB  ,A`! AXB  ,A`! AXB  ,A`! AXB  ,A`! AXB  ,A`! AXB  ,A`! AXB  ,A`!>\R {<ܲiӦ*=_ / VtXׯ_uwwץ@XfffJK5?? ݿBV̙3AKLYm|GGǟ/7o̵/؀<oj1nb6r.\({m۶|֭/Cٰf͚!(ŎeMMM}vX{\{;vexQ'&&r===e/ܹsk׮]4Lqe,ѾvbGXNz_(bk׮]*wر޸KKY ,e?jW~??ԮȊC6J ###&u4c~ٳgR"6oR!7[ׯR`]w_`v=D}1.Z ʌܴqϝ8qb HM mm-2ATǘ~ȑS|=V\0zz5¥K@cQJ *jiiC:c޽O7|rkTƓ'O/hPjč[nP6 M .s?14ޢ744~(܁t5K<m+hCE&5mA^`tJ , f6T .` 5>^ټyϫmT UqڌihplK|̎*nܸO ?~S?�aiLJjS]4#FJw'N}L)QkL*Z(i ҭh(NU)SU *IuR)z{{H6k߷hp]ݭ&Rק>P-|: 8,n ٢C4xj {vlC,T46044{CWWװ&΄6ӺnG-OV2=$SV:w\nvv6y`bI6vz,CB!;PVMn0=ol ➞*K?yV d'ǤSkkmT4\4FR- u3C-=af~hҗujfyaqa$~?!PJd:]]T599yʕ+DžQpVcX.bjA%387t}{Ql-[R2-4PN0B+ H/rvyź%~?V2t 4511q:MKJ JǫIP@֗'-Y(MM}B KG4fvvJ1 ء%--,Mt ;s0|4j4@ZkJn-gѣGUK^H񾒗fUE'%kKj$*X˓,޽;wmn_sB,]L'(̥/y[ v5 &YtJNZЇ=e.`鴓]3QKVW[;֖[|]S%4עɖ+Q)IvqO<�QZn﷿\F=*-.tmqiKȢWQ?wLƿjԿ�jB +5|Zo#ťF:9*aѣGo'|j4u˴Ƥ֗M^2j2A}JEb[KVՄ*w( Q(VE[e<||Zѣ&D_⪘*NW6}O]ᏔtJĥX£+xiּY{mbª3h(G˷ťI:zhؖfkJkE_V䳪?d?1F\UK. kl+ne]M,ae|p. ۥ!]0mkKCKqIKku䶴$,M[.r�gΜ9�VUTkKWO{ƓRR+iթSR'+�DבLsKKIKKN4U^K9ǽ&r5U�.{-mR(z}qx^/&,uJ8En`JZ>3iI <UJXq/􅴔sӬFRP(\ZLXwu%V /�*QKKi}.g}'iJT\P].MPgҨTƚuU�RHv ]y]E9LvYzc�Lƍ=5g˖- @;�if=5']>K;>HX�2 3HX�2 3HX�2 3HX�2 3HX�2 3HX�2 3HX�2 3HX�2 3HX�2 3HX�2 3HX�2 3HX�2 3HX�2 3HX�2 3HX�2 3HX�2 3HX�2 3HX�2 3HX�2 3HX�2 3HX�2 3HX�2 3HX�2 3HX�2 3HX�2 3HX�2 3HX�2 3HX�2 3HX�2 3HX�2 3HX�2 3HX�2 3HX�2 3HX�2 3HX�2 3HX�2 3HX�2 3HX�2 3HX�2 3HX�2 3HX�2 3HX�2 3HX�2 3HX�2 3HX�2 3HX�2 36mB `ux[kcW_}kkkKk֬y?-��V4ݻw|SS?|۶m/߸q__�`ڼyKioܸq6͛7S`�NmoٲPB6lXg/IZ�*јia<Ͷח{A---_n+vݹs�V}Nskjj8q$R}#G.{�PRo,Ͷ ƍ޽t1aih+K/loo/ުczO<9/�*ܹcW֕TiZ;s'NȍU?Lthh}?1ZV>G}=,%]]]qz%kV@Μ9snnnn>mA,zgr`n~<eǦ/8}o1]L͝:u*UKK4U(rX]?QQґ(n[WR6ӽr-ɤ6iCXw~f&)Yij```X9###;̛\&-Q2/Eu֗.]E�2ÿiUFP|(EO<YvEs4ll)i)y~!_) IJVRqu5eoԄۻwonttT ]zk׮}�ZT뛨?|e{{_^[uy%֣G6MõOkKvnwŋzIY72_hBHVtpz<](ލ>o[[g[:1."xԊ2ߘVբֱRkJqcU#$^ bWWٸ֖2nJZJ^u}@˧RTRJ]GUUkUW5Z[:4&QOŴ,e}T`=ZQ>TRE%&/f^0*%.i)GicwƿX%ER/4OfTJT&gYKEĥ1DB&ѣG cК_ J V)v/]5&.St7%䵘.(OIŬDcT^L/I/4q~SHÜjuuuu- &''cOQ?u4]r. mMT;Ғ̺ݻ-}LDk*#~,R<.;޴+y y#i{7= j�?͂�SNI3Sh ;L-Lt'a+D¢t=MH:jÇx#xhì嘔_^pOtTQG_iG -�,̕r{ŠRh!AǕL2ڣfo5<�?j1iI]/S-?$T!lW����IENDB`���������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/menu.zh_TW.in��������������������������������������������������������0000644�0001750�0001750�00000017574�13431646201�015561� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Root Menu definition for WindowMaker * * Syntax is: * * <Title> [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 "資訊" MENU "資訊面板..." INFO_PANEL "法律..." LEGAL_PANEL "系統主控台" EXEC xconsole "系統負載" SHEXEC xosview || xload "行程清單" EXEC xterm -e top "手冊瀏覽器" EXEC xman "資訊" END "執行..." EXEC %a (執行,輸入執行的命令:) "終端機" EXEC crxvt -thin -ls -T 終端機 -n 終端機 "工作區" WORKSPACE_MENU "應用程式" MENU "影像處理" MENU "Gimp" SHEXEC gimp >/dev/null "XV" EXEC xv "XPaint" EXEC xpaint "XFig" EXEC xfig "影像處理" END "X 檔案管理員" EXEC xfm "OffiX Files" EXEC files "LyX" EXEC lyx "Netscape" EXEC netscape "Ghostview" EXEC ghostview %a(GhostView,輸入要檢視的檔案) "Acrobat" EXEC /usr/local/Acrobat3/bin/acroread %a(輸入要檢視的 PDF) "TkDesk" EXEC tkdesk "應用程式" END "編輯器" MENU "XFte" EXEC xfte "XEmacs" SHEXEC xemacs || emacs "XJed" EXEC xjed "NEdit" EXEC nedit "Xedit" EXEC xedit "VI" EXEC xterm -e vi "編輯器" END "雜項" MENU "Xmcd" SHEXEC xmcd 2> /dev/null "Xplaycd" EXEC xplaycd "Xmixer" EXEC xmixer "雜項" END "公用程式" MENU "計算機" EXEC xcalc "Window Properties" SHEXEC xprop | xmessage -center -title 'xprop' -file - "Font Chooser" EXEC xfontsel "終端機模擬器" EXEC xminicom "Magnify" EXEC xmag "Colormap" EXEC xcmap "XKill" EXEC xkill "Clipboard" EXEC xclipboard "公用程式" END "選取" MENU "複製" SHEXEC echo '%s' | wxcopy "郵寄至" EXEC xterm -name mail -T "Pine" -e pine %s "Navigate" EXEC netscape %s "在手冊中搜尋" SHEXEC MANUAL_SEARCH(%s) "選取" END "工作區" MENU "隱藏其他" HIDE_OTHERS "全部顯示" SHOW_ALL "排列圖示" ARRANGE_ICONS "更新畫面" REFRESH "鎖定" EXEC xlock -allowroot -usefirst "儲存階段狀態" SAVE_SESSION "清除階段狀態" CLEAR_SESSION "工作區" END "外觀" MENU "主題" OPEN_MENU THEMES_DIR $HOME/GNUstep/Library/WindowMaker/Themes WITH setstyle "風格" OPEN_MENU STYLES_DIR $HOME/GNUstep/Library/WindowMaker/Styles WITH setstyle "圖示集" OPEN_MENU ICON_SETS_DIR $HOME/GNUstep/Library/WindowMaker/IconSets WITH seticons "背景" MENU "實體色" MENU "Black" WS_BACK '(solid, black)' "Blue" WS_BACK '(solid, "#505075")' "Indigo" WS_BACK '(solid, "#243e6c")' "Bleumarine" WS_BACK '(solid, "#224477")' "Purple" WS_BACK '(solid, "#554466")' "Wheat" WS_BACK '(solid, "wheat4")' "Dark Gray" WS_BACK '(solid, "#333340")' "Wine" WS_BACK '(solid, "#400020")' "實體色" END "漸層色" MENU "Sunset" WS_BACK '(mvgradient, deepskyblue4, black, deepskyblue4, tomato4)' "Sky" WS_BACK '(vgradient, blue4, white)' "Blue Shades" WS_BACK '(vgradient, "#7080a5", "#101020")' "Indigo Shades" WS_BACK '(vgradient, "#746ebc", "#242e4c")' "Purple Shades" WS_BACK '(vgradient, "#654c66", "#151426")' "Wheat Shades" WS_BACK '(vgradient, "#a09060", "#302010")' "Grey Shades" WS_BACK '(vgradient, "#636380", "#131318")' "Wine Shades" WS_BACK '(vgradient, "#600040", "#180010")' "漸層色" END "圖片" OPEN_MENU BACKGROUNDS_DIR $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t "背景" END "儲存主題" SHEXEC getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/"%a(主題名稱)" "儲存圖示集" SHEXEC geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/"%a(圖示集名稱)" "偏好設定公用程式" EXEC #wprefs# "外觀" END "離開" MENU "重新啟動" RESTART "啟動 BlackBox" RESTART blackbox "啟動 kwm" RESTART kwm "啟動 IceWM" RESTART icewm "離開..." EXIT "離開" END "應用程式" END ������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/menu.pt��������������������������������������������������������������0000644�0001750�0001750�00000017413�13431646201�014534� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Definição do Menu de Aplicações para o WindowMaker * * Sintaxe: * * <Title> [SHORTCUT <tecla de atalho>] <Comando> <Parâmetros> * * <Title> é qualquer texto a ser usado como título. Deve estar entre aspas " * * SHORTCUT especifica uma tecla de atalho para o item. <tecla de atalho> * 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 * * <Command> é um dos seguintes comandos: * MENU - inicia definição de um (sub)menu * END - termina definição de um (sub)menu * OPEN_MENU - abre um menu apartir de um arquivo, comando pipeado ou * conteúdo de um diretório com um comando opcional para cada * arquivo no diretório. * WORKSPACE_MENU - adiciona menu para operações sobre Áreas de Trabalho * EXEC <programa> - executa um programa * EXIT - termina o gerenciador de janelas * SHEXEC <command> - executa comando de shell (ex.: gimp > /dev/null) * RESTART [<gerenciador de janelas>] - reinicia o WindowMaker ou inicia * outro gerenciador de janelas * REFRESH - força repintagem da área de trabalho * ARRANGE_ICONS - arruma os ícones na área de trabalho * SHUTDOWN - mata todos os programas (terminando a sessão do X) * SHOW_ALL - abre todas as janelas na área de trabalho * HIDE_OTHERS - esconde (hide) todas as janelas na área de trabalho, * exceto a que estiver ativa * SAVE_SESSION - salva o estado da área de trabalho, o que inclui * todos os programas em execução, informações relativas * a posição, tamanho, área de trabalho onde se localizam, * o dock ou clip de onde foi lançado e se a janela está * miniaturizada, shadeada ou hideada. Também salva qual a área * 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 ($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. * CLEAR_SESSION - apaga uma sessão salvada anteriormente. Este comando * não terá efeito algum se SaveSessionOnExit estiver habilitado. * INFO_PANEL - mostra a janela de informações do programa * LEGAL_PANEL - mostra janela de informacoes legais * * Sintaxe do OPEN_MENU: * 1. Uso com outros arquivos de menu: * // abre o arquivo arquivo.menu que deve conter um menu válido * // e o insere naquela posição. * OPEN_MENU arquivo.menu * 2. Uso com comandos pipeados: * // executa o comando e usa a sua saída para construir o menu. * // A saída do menu deve ser uma descrição de menu válida. * // O espaço entre o '|' e o comando é opcional. * OPEN_MENU | comando * 3. Uso com diretórios: * // Abre um ou mais diretórios e constrói um menu com todos * // os subdiretórios e arquivos executáveis neles, em ordem * // alfabética. * OPEN_MENU /algum/diretório [/algum/outro/diretório ...] * 4. Uso com diretórios e comando: * // Abre um ou mais diretórios e constrói um menu com todos os * // subdiretórios e arquivos legíveis neles em ordem alfabética, * // usando o comando para executar cada arquivo. * * OPEN_MENU [-noext] /algum/dir [/algum/outro/dir ...] WITH comando -opções * * * <Parâmetros> é o programa a ser executado. * * ** Códigos especiais para o programa a ser executado: * %s - substitui pela seleção atual * %a(mensagem) - abre uma janela de entrada com a mensagem e substitui * pelo que for digitado nela * %w - substitui pelo XID da janela selecionada * * Para ignorar caracteres especiais, tais como % e ", use \ na frente deles. * ex: xterm -T "\"Hello World\"" * * Também é possível usar caracteres de escape, como \n * * Cada comando MENU deve ter um END correspondente no fim. * * Exemplo: * * "Teste" MENU * "XTerm" EXEC xterm * // 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 $HOME/bin/X11 * // faz um submenu de papéis de parede * "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 */ #include "wmmacros" "Aplicações" MENU "Informações" MENU "Informações..." INFO_PANEL "Informações Legais" LEGAL_PANEL "Console do Sistema" EXEC xconsole "Carga do Sistema" SHEXEC xosview || xload "Lista de Processos" EXEC xterm -e top "Leitor de Manual" EXEC xman "Informações" END "XTerm" EXEC xterm -sb "Rxvt" EXEC rxvt -bg black -fg white -fn fixed "Áreas de Trabalho" WORKSPACE_MENU "Aplicações" MENU "Gráficos" MENU "Gimp" SHEXEC gimp >/dev/null "XV" EXEC xv "XPaint" EXEC xpaint "XFig" EXEC xfig "Gráficos" END "X File Manager" EXEC xfm "OffiX Files" EXEC files "LyX" EXEC lyx "Netscape" EXEC netscape "Ghostview" EXEC ghostview %a(Enter file to view) "Acrobat" EXEC /usr/local/Acrobat3/bin/acroread %a(Enter PDF to view) "TkDesk" EXEC tkdesk "Aplicações" END "Editores" MENU "XFte" EXEC xfte "XEmacs" SHEXEC xemacs || emacs "XJed" EXEC xjed "NEdit" EXEC nedit "Xedit" EXEC xedit "VI" EXEC xterm -e vi "Editores" END "Diversos" MENU "Xmcd" SHEXEC xmcd 2> /dev/null "Xplaycd" EXEC xplaycd "Xmixer" EXEC xmixer "Diversos" END "Utilitários" MENU "Calculadora" EXEC xcalc "Propriedades da Janela" SHEXEC xprop | xmessage -center -title 'xprop' -file - "Seletor de Fontes" EXEC xfontsel "Emulador de Terminal" EXEC xminicom "Lente de Aumento" EXEC xmag "Colormap" EXEC xcmap "XKill" EXEC xkill "ASClock" EXEC asclock -shape "Clipboard" EXEC xclipboard "Utilitários" END "Seleção" MENU "Copiar" SHEXEC echo '%s' | wxcopy "eMail Para" EXEC xterm -name mail -T "Pine" -e pine %s "Navegar" EXEC netscape %s "Procurar Manual" SHEXEC MANUAL_SEARCH(%s) "Seleção" END "Área de Trabalho" MENU "Hide Outros" HIDE_OTHERS "Mostrar Todos" SHOW_ALL "Arrumar Ícones" ARRANGE_ICONS "Refresh" REFRESH "Lock" EXEC xlock -allowroot -usefirst "Salvar Sessão" SAVE_SESSION "Apagar Sessão Salvada" CLEAR_SESSION "Área de Trabalho" END "Aparência" MENU "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)' "Azul" WS_BACK '(solid, "#505075")' "Indigo" WS_BACK '(solid, "#243e6c")' "Azul escuro" WS_BACK '(solid, "#224477")' "Roxo" WS_BACK '(solid, "#554466")' "Creme" WS_BACK '(solid, "wheat4")' "Cinza Escuro" WS_BACK '(solid, "#333340")' "Vinho" WS_BACK '(solid, "#400020")' "Sólido" END "Degradé" MENU "Bandeira" WS_BACK '(mdgradient, green, green, yellow)' "Céu" WS_BACK '(vgradient, blue4, white)' "Degradé" END "Imagens" OPEN_MENU -noext BACKGROUNDS_DIR $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t "Papéis de Parede" END "Salvar Tema" SHEXEC getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/"%a(Nome do Tema)" "Salvar Configuração de Ícones" SHEXEC geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/"%a(Nome do Conjunto de Ícones)" "Appearance" END "Sair" MENU "Reiniciar" RESTART "Iniciar AfterStep" RESTART afterstep "Sair..." EXIT "Terminar Sessão..." SHUTDOWN "Sair" END "Aplicações" END �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/menu.tr��������������������������������������������������������������0000644�0001750�0001750�00000015226�13431646201�014536� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * WindowMaker için ana menü tanımlası * * Yazım kuralı: * * <Başlık> [SHORTCUT <Kısayol>] <Komut> <Parametreler> * * <Başlık> herhangi bitr yazıyı içerebilir, boşul içeriyorsa " içinde * yazılmalı * * SHORTCUT sözkonusu giriş için kısayol tuşu tanımlamak için kullanılır * <Kısayol>, $HOME/GNUstep/Defaults/WindowMaker olduğu gibi tanımlanabilir. * * MENU veya OPEN_MENU için kısayol tanımlayamazsınız. * * <Komut> aşağıdakilerden birisidir * MENU - (Alt)Menü tanımını başlatır. * OPEN_MENU - Menüyü, bir dosya veya dizinden oluşturur * END - Alt)Menü tanımını bitirir * WORKSPACE_MENU - Çalışma alanları için altmenüyü ekler * EXEC <program> - programı çalıştırır * SHEXEC <command> - executes a shell command (like gimp > /dev/null) * EXIT - pencere denetçisinden çıkar. * RESTART [<pencere denetçisi>] - Belirtilen pencere denetçisini * yeniden başlatır. * REFRESH - ekranı tazeler * ARRANGE_ICONS - Ekrandaki simgeleri düzenler * SHUTDOWN - tüm uygulamalrı kapatır ve sistemden çıkar * SHOW_ALL - Tüm pencereleri saklı hallerinden çıkarır * HIDE_OTHERS - içinde bulunulan dışındaki tüm pencereleri saklar * SAVE_SESSION - mevcut uygulamaları ve pencere konumlarını saklar, * yeniden başladığında bu konumları korumaya çalışır. * CLEAR_SESSION - son saklanan bilgileri siler. * * OPEN_MENU yazım kuralları: * 1. Dosyadan * // dosya.menu isimli geçerli dosya tanımı içeren dosyayı alıp * // belirtilen konuma ekler * OPEN_MENU dosya.menu * * 2. Komut sonucundan * // "komut"u çalıştırı ve çıktısını möenü olarak kullanır. * // Komutun çıktısı geçerli bir menü tanımı vermeli * OPEN_MENU | komut * * 3. Dizinden * // Bir veya daha fazla dizin içinde yer alan çalıştırılabilir * // dosyaları alfabetik olarak sıralayarak menü oluşturur * OPEN_MENU /bir/dizin [/bir/başka/dizin ...] * * 4. Dizinden komutla * // Dizin seçeneği gibi, ancak dizindeki dosyaları "komut" * // ile çalıştırır * * OPEN_MENU /bir/dizin [/bir/başka/dizin ...] WITH komut -seçenekler * * * <Parametreler> çalıştırılacak yazılımın parametreleri * * ** EXEC komut satırı seçenekleri: * %s - mevcut seçimi koyar. * %a(mesaj) - bir mesaj başlığı ile bir kutucuk açarak yazılan bilgileri * komuta parametre olarak gönderir * %w - seçili pencerenin XID'sini verir. * * Özel karakterleri (% ve " gibi) \ yardımı ile kullanabilirsiniz: * örnek: xterm -T "\"Hello World\"" * * \n gibi komutları da kullanabilirsiniz. * * Her MENU tanımı bir END tanımı içermelidir. * * Örnek: * * "Test" MENU * "XTerm" EXEC xterm * // /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 $HOME/bin/X11 * // bazı arkaplan görüntülerini ekler * "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 */ #include "wmmacros" "Ana Menü" MENU "Bilgi" MENU "Copyright..." EXEC xmessage -center -font variable -title \ 'WindowMaker 'WM_VERSION -file $HOME/GNUstep/Library/WindowMaker/Copyright "Sistem Konsolu" EXEC xconsole "Sistem Yükü" SHEXEC xosview || xload "Süreç Dökümü" EXEC xterm -e top "Kılavuz Tarayıcısı" EXEC xman "Bilgi" END "XTerm" EXEC xterm -sb "Rxvt" EXEC rxvt -bg black -fg white -fn fixed "Çalışma Alanları" WORKSPACE_MENU "Uygulamalar" MENU "Görüntü" MENU "Gimp" SHEXEC gimp >/dev/null "XV" EXEC xv "XPaint" EXEC xpaint "XFig" EXEC xfig "Graphics" END "X File Manager" EXEC xfm "OffiX Files" EXEC files "LyX" EXEC lyx "Netscape" EXEC netscape "Ghostview" EXEC ghostview %a(PS dosyasını girin) "Acrobat" EXEC /usr/local/Acrobat3/bin/acroread %a(PDF dosyasını girin) "TkDesk" EXEC tkdesk "Uygulamalar" END "Düzenleyiciler" MENU "XFte" EXEC xfte "XEmacs" SHEXEC xemacs || emacs "XJed" EXEC xjed "NEdit" EXEC nedit "Xedit" EXEC xedit "VI" EXEC xterm -e vi "Düzenleyiciler" END "Çeşitli" MENU "Xmcd" SHEXEC xmcd 2> /dev/null "Xplaycd" EXEC xplaycd "Xmixer" EXEC xmixer "Çeşitli" END "Yardımcılar" MENU "Hesap Makinası" EXEC xcalc "Pencere Özellikleri" SHEXEC xprop | xmessage -center -title 'xprop' -file - "Yazı tipi Tarayıcısı" EXEC xfontsel "Terminal Öykümcüsü" EXEC xminicom "Büyüteç" EXEC xmag "Renk Tablosu" EXEC xcmap "XKill" EXEC xkill "ASClock" EXEC asclock -shape "Clipboard" EXEC xclipboard "Yardımcılar" END "Seçim" MENU "Kopyala" SHEXEC echo '%s' | wxcopy "Mail ile gönder" EXEC xterm -name mail -T "Pine" -e pine %s "Ağ'da tara" EXEC netscape %s "Kılavuzda ara" SHEXEC MANUAL_SEARCH(%s) "Seçim" END "Çalışma Alanı" MENU "Diğerlerini Sakla" HIDE_OTHERS "Hepsini Göster" SHOW_ALL "Simgeleri Dğzenle" ARRANGE_ICONS "Tazele" REFRESH "Kilitle" EXEC xlock -allowroot -usefirst "Oturumu Sakla" SAVE_SESSION "Saklanmış Oturumu Sil" CLEAR_SESSION "Çalışma Alanı" END "Görünüm" MENU "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)' "Blue" WS_BACK '(solid, "#505075")' "Indigo" WS_BACK '(solid, "#243e6c")' "Bleumarine" WS_BACK '(solid, "#224477")' "Purple" WS_BACK '(solid, "#554466")' "Wheat" WS_BACK '(solid, "wheat4")' "Dark Gray" WS_BACK '(solid, "#333340")' "Wine" WS_BACK '(solid, "#400020")' "Düz Renk" END "Renk Geçişi" MENU "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 $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t "Arkaplan" END "Tema Sakla" SHEXEC getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/"%a(Theme name)" "Simge Kümesi Sakla" SHEXEC geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/"%a(IconSet name)" "Görünüm" END "Çıkış" MENU "Yeniden Başlat" RESTART "AfterStep Başlat" RESTART afterstep "Çıkış..." EXIT "Oturumu Kapat..." SHUTDOWN "Çıkış" END "Ana Menü" END ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/menu.no��������������������������������������������������������������0000644�0001750�0001750�00000015624�13431646201�014527� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Hovedmeny for WindowMaker * * Syntaksen er: * * <Tittel> <Kommando> <Parametere> * * <Tittel> Er en setning du vil ha som tittel i menyen. Du må ha " rundt hvis * tittelen har mellomrom. * * <Kommando> må være en av de følgende: * MENU - starter definisjon av en (under)meny * OPEN_MENU - legger til en meny fra en fil, eller innholdet av en * katalog * END - Avslutter definisjonen av en (under)meny * WORKSPACE_MENU - legger til en undermeny for å jobbe med Arbeids- * områder * EXEC <program> - starter et eksternt program. * EXIT - Avslutter WindowMaker * SHEXEC <command> - executes a shell command (like gimp > /dev/null) * RESTART - [<window manager>] - restarter WindowMaker eller starter opp * annen "window manager". * REFRESH - tegner opp skjermbildet på nytt. * ARRANGE_ICONS - rydder opp i ikonene dine på skjermbildet. * SHUTDOWN - Stenger ned alle X klienter og avslutter X tjeneren * SHOW ALL - Viser alle skjulte vinduer på denne skjermen * HIDE_OTHERS - skjuler alle vinduer på denne skjermen som ikke har * fokus. * SAVE_SESSION - lagrer desktop'en din som den ser ut. Dette inkluderer * alle applikasjoner som kjører (størrelse, posisjon, * arbeidsområde de er på, hvilken dock/binders de ble * startet fra, og om de er minimert, shadet eller * skjult. Lagrer også hvilket arbeidsområde brukeren * er på. Alt vil bli startet opp igjen hver gang * windowmaker blir startet, fram til til SAVE_SESSION * blir kalt igjen, eller CLEAR_SESSION blir kalt. * Hvis SaveSessionOnExit = Yes; i WindowMaker domene * filen, blir dette automatisk gjort hver gang window- * maker blir avsluttet, og vil da skrive over dette * og også CLEAR_SESSION (Se under). * CLEAR_SESSION - resetter lagrede settinging fra SAVE_SESSION. Vil * ikke ha noen effekt hvis SaveSessionOnExit er satt. * * OPEN_MENU syntaks: * 1. Fil Meny beskrivelse * // åpner fil.menu som må innholde en gyldig meny fil, og setter den * // inn her. * OPEN_MENU fil.menu * 2. Pipe meny beskrivelse * // kjører en kommando, og bruker output fra den for å konstruere en * // meny. Kommandoes stream må være i gyldig meny-format. * // mellomrommet mellom '|' og kommandoen er valgfritt. * OPEN_MENU | kommando * 3. Katalog beskrivelse * // Åpner en eller flere kataloger, og konstruerer en meny med alle * // katalogene og alle kjørbare filer i dem, sortert alfabetisk. * OPEN_MENU /en/katalog [/en/annen/katalog ....] * 4. Beskrivelse av katalog med kommando * // Åpner en eller flere kataloger, og konstruerer en meny med alle * // katalogene og alle lesbare filer i dem. Setter kommando forran * // hver av dem. * OPEN_MENU /en/katalog [/en/annen/katalog ....] WITH kommando -args * * * <Parametere> er programmet du ønsker å starte * * ** Alternativer for kommando linjen i EXEC: * %s - bytt ut med det som er valgt for øyeblikket * %a(melding) - åpner opp en svar-boks med meldingen og sett inn svaret ditt * her. * %w - bytt ut med XId'en for vinduet som er i fokus. * * Du kan bruke \ tegnet for å skrive spesialtegn som vanlige bokstaver: * eksempel: xterm -T "\"Hallo Verden\"" * * * Du kan også bruke spesialsekvenser som i C, f.eks \n * * Hver MENU setning må avsluttes med end END setning nedenfor. * * Eksempel: * * "Test" MENU * "Xterm " EXEC xterm * // lager en undermeny med innholdet av /usr/openwin/bin * "Xview Apps" OPEN_MENU "/usr/openwin/bin" * // Noen X11 programmer i forskjellige kataloger * "X11 apps" OPEN_MENU /usr/X11/bin $HOME/bin/X11 * //setter noen bakgrunnsbilder * "Background" OPEN_MENU $HOME/images /usr/share/images WITH wmsetbg -u -t * // setter inn style.menu som et menyvalg. * "Style" OPEN_MENU style.menu * "Test" END */ #include "wmmacros" "Applikasjoner" MENU "Info" MENU "Lisens..." INFO_PANEL "Legal" LEGAL_PANEL "System Belastning" SHEXEC xosview || xload "Prosess Liste" EXEC xterm -e top "Manual leser" EXEC stepman "Info" END "XTerm" EXEC xterm -sb "Rxvt" EXEC rxvt -bg black -fg white -fn fixed "Arbeids-Områder" WORKSPACE_MENU "Applikasjoner" MENU "Grafikk" MENU "Gimp" SHEXEC gimp >/dev/null "XV" EXEC xv "XPaint" EXEC xpaint "XFig" EXEC xfig "Grafikk" END "X Fil Behandler" EXEC xfm "OffiX Files" EXEC files "LyX" EXEC lyx "Netscape" EXEC netscape "Ghostview" EXEC ghostview %a(Navnet på fila du vil se) "Acrobat" EXEC /usr/local/Acrobat3/bin/acroread %a(Skriv inn PDF\'en du ønsker) "TkDesk" EXEC tkdesk "Applikasjoner" END "Tekst Redigering" MENU "XFte" EXEC xfte "XEmacs" SHEXEC xemacs || emacs "XJed" EXEC xjed "NEdit" EXEC nedit "Xedit" EXEC xedit "VI" EXEC xterm -e vi "Tekst Redigering" END "Diverse" MENU "Xmcd" SHEXEC xmcd 2> /dev/null "Xplaycd" EXEC xplaycd "Xmixer" EXEC xmixer "Diverse" END "Verktøy" MENU "Kalkulator" EXEC xcalc "Font Velger" EXEC xfontsel "Forstørrelsesglass" EXEC xmag "Fargekart" EXEC xcmap "XKill" EXEC xkill "ASClock" EXEC asclock -shape "Clipboard" EXEC xclipboard "Verktøy" END "Utvalg" MENU "Kopier" SHEXEC echo '%s' | wxcopy "Send e-mail" EXEC xterm -name mail -T "Pine" -e pine %s "Gå til (www)" EXEC netscape %s "Søke i manualer" SHEXEC MANUAL_SEARCH(%s) "UtValg" END "Arbeidsområder" MENU "Skjule andre" HIDE_OTHERS "Vise alle" SHOW_ALL "Ordne ikoner" ARRANGE_ICONS "Tegn opp igjen" REFRESH "Låse Arbeidsområde" EXEC xlock -allowroot -usefirst "Lagre Arbeidsområder" SAVE_SESSION "Fjern lagret Arbeidsområde" CLEAR_SESSION "Arbeidsområder" END "Utseende" MENU "Temaer" OPEN_MENU -noext THEMES_DIR $HOME/GNUstep/Library/WindowMaker/Themes WITH setstyle "Stiler" OPEN_MENU -noext STYLES_DIR $HOME/GNUstep/Library/WindowMaker/Styles WITH setstyle "Ikon set" OPEN_MENU -noext ICON_SETS_DIR $HOME/GNUstep/Library/WindowMaker/IconSets WITH seticons "Bakgrunn" MENU "Ensfarget" MENU "Svart" WS_BACK '(solid, black)' "Blå" WS_BACK '(solid, "#505075")' "Lilla" WS_BACK '(solid, "#554466")' "Hvete" WS_BACK '(solid, "wheat4")' "Mørk Grå" WS_BACK '(solid, "#333340")' "Vinrød" WS_BACK '(solid, "#400020")' "Ensfarget" END "Overganger" MENU "Flagg" WS_BACK '(mgradient, green, red, white, green)' "Himmel" WS_BACK '(vgradient, blue4, white)' "Overganger" END "Bilder" OPEN_MENU -noext BACKGROUNDS_DIR $HOME/GNUstep/Library/WindowMaker/BackGrounds WITH wmsetbg -u -t "Bakgrunn" END "Lagre Tema" SHEXEC getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/"%a(Theme name)" "Lagre Ikonsett" SHEXEC geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/"%a(IconSet name)" "Utseende" END "Avslutt" MENU "Restart" RESTART "Start Afterstep" RESTART afterstep "Avslutt WindowMaker..." EXIT "Avslutt X11..." SHUTDOWN "Avslutt" END "Applikasjoner" END ������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/plmenu.ro.in���������������������������������������������������������0000644�0001750�0001750�00000011364�13431646201�015471� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������("Aplicaţii", ("Informaţii", ("Panou cu Informaţii", INFO_PANEL), ("Panou cu Licenţa", LEGAL_PANEL), ("Consola Sistem", EXEC, "xconsole"), ("Încărcarea Sistemului", SHEXEC, "xosview || xload"), ("Lista de Procese", EXEC, "xterm -e top"), ("Navigator de Pagini Man", EXEC, "xman") ), ("Execută...", SHEXEC, "%a(Execută,Introduceţi o comandă:)"), ("XTerm", EXEC, "xterm -sb"), ("Rxvt", EXEC, "rxvt -fg white -bg black -fn -misc-fixed-medium-*-*--*-*-*-*-*-*-iso8859-2 -fb -misc-fixed-medium-*-*--*-*-*-*-*-*-iso8859-2"), ("Spaţii de Lucru", WORKSPACE_MENU), ("Aplicaţii", ("Grafică", ("Gimp", SHEXEC, "gimp >/dev/null"), ("XV", EXEC, "xv"), ("XPaint", EXEC, "xpaint"), ("XFig", EXEC, "xfig") ), ("Manager de Fişiere", EXEC, "xfm"), ("Fişiere OffiX", EXEC, "files"), ("LyX", EXEC, "lyx"), ("Netscape", EXEC, "netscape"), ("Ghostview", EXEC, "ghostview %a(Enter file to view)"), ("Acrobat", EXEC, "/usr/local/Acrobat3/bin/acroread %a(Enter PDF to view)"), ("TkDesk", EXEC, "tkdesk") ), ("Editoare", ("XFte", EXEC, "xfte"), ("XEmacs", SHEXEC, "xemacs || emacs"), ("XJed", EXEC, "xjed"), ("NEdit", EXEC, "nedit"), ("Xedit", EXEC, "xedit"), ("VI", EXEC, "xterm -e vi") ), ("Altele", ("Xmcd", SHEXEC, "xmcd 2> /dev/null"), ("Xplaycd", EXEC, "xplaycd"), ("Xmixer", EXEC, "xmixer") ), ("Utilitare", ("Calculator", EXEC, "xcalc"), ("Proprietăţile Ferestrei...", SHEXEC, "xprop | xmessage -center -title 'xprop' -file -"), ("Navigator de Fonturi", EXEC, "xfontsel"), ("Emulator de Terminal", EXEC, "xminicom"), ("Lupă", EXEC, "xmag"), ("Culori", EXEC, "xcmap"), ("Omoară fereastra...", EXEC, "xkill"), ("ASClock", EXEC, "asclock -shape"), ("Clipboard", EXEC, "xclipboard") ), ("Selecţie", ("Copiază", SHEXEC, "echo '%s' | wxcopy"), ("Poştă către", EXEC, "xterm -name mail -T Pine -e pine %s"), ("Navighează", EXEC, "netscape %s"), ("Caută în Manual", EXEC, "MANUAL_SEARCH(%s)") ), ("Spaţiu de Lucru", ("Ascunde Celelalte", HIDE_OTHERS), ("Arată celelalte", SHOW_ALL), ("Aranjează Iconiţele", ARRANGE_ICONS), ("Reîmprospătează", REFRESH), ("Blochează", EXEC, "xlock -allowroot -usefirst"), ("Salvează Sesiunea", SAVE_SESSION), ("Şterge Setările de Sesiune", CLEAR_SESSION) ), ("Configurare", ("Teme", OPEN_MENU, "-noext #wmdatadir#/Themes $HOME/GNUstep/Library/WindowMaker/Themes WITH setstyle"), ("Stiluri", OPEN_MENU, "-noext #wmdatadir#/Styles $HOME/GNUstep/Library/WindowMaker/Styles WITH setstyle"), ("Seturi de Iconiţe", OPEN_MENU, "-noext #wmdatadir#/IconSets $HOME/GNUstep/Library/WindowMaker/IconSets WITH seticons"), ("Fundal", ("Solid", ("Negru", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, black)'"), ("Albastru", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#505075\")'"), ("Indigo", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#243e6c\")'"), ("Bleumarin", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#224477\")'"), ("Violet", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#554466\")'"), ("Gălbui", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, wheat4)'"), ("Gri Închis", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#333340\")'"), ("Vişiniu", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#400020\")'") ), ("Gradientat", ("Apus", EXEC, "wdwrite WindowMaker WorkspaceBack '(mvgradient, deepskyblue4, black, deepskyblue4, tomato4)'"), ("Cer", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, blue4, white)'"), ("Gradient Albastru", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#7080a5\", \"#101020\")'"), ("Gradient Indigo", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#746ebc\", \"#242e4c\")'"), ("Gradient Violet", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#654c66\", \"#151426\")'"), ("Gradient Gălbui", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#a09060\", \"#302010\")'"), ("Gradient Gri", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#636380\", \"#131318\")'"), ("Gradient Vişiniu", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#600040\", \"#180010\")'") ), ("Imagini", OPEN_MENU, "-noext #wmdatadir#/Backgrounds $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t") ), ("Salvează Tema", SHEXEC, "getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/\"%a(Theme name)\""), ("Salvează Setul de Iconiţe", SHEXEC, "geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/\"%a(IconSet name)\""), ("Utilitar de Configurare", EXEC, "#wprefs#") ), ("Ieşire", ("Repornire", RESTART), ("Porneşte BlackBox", RESTART, blackbox), ("Porneşte kwm", RESTART, kwm), ("Porneşte IceWM", RESTART, icewm), ("Ieşi", EXIT) ) ) ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/plmenu.hr������������������������������������������������������������0000644�0001750�0001750�00000013076�13431646201�015057� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������( Programi, ( Info, ("Info Panel...", INFO_PANEL), (Legal..., LEGAL_PANEL), ("Sistemska konzola", EXEC, xconsole), ("Optere\346enje sistema", SHEXEC, "xosview || xload"), ("Lista procesa", EXEC, "xterm -e top"), ("Pretra\276iva\350 manuala", EXEC, xman) ), (Pokreni..., EXEC, "%a(Pokreni,Upi\271ite naredbu za pokrenuti:)"), (NXTerm, EXEC, "nxterm -sb"), (Rxvt, EXEC, rxvt), (WMTerm, EXEC, "rxvt -wm"), ("Radni prostori", WORKSPACE_MENU), ( Programi, ( Grafika, (Gimp, SHEXEC, "gimp >/dev/null"), (XV, EXEC, xv), (XPaint, EXEC, xpaint), (XFig, EXEC, xfig) ), (FSViewer, EXEC, fsviewer), ("Offix files", EXEC, files), (LyX, EXEC, lyx), (Netscape, EXEC, netscape), (Ghostview, EXEC, "ghostview %a(Enter file to view)"), ( Acrobat, EXEC, "/usr/local/Acrobat3/bin/acroread %a(Enter PDF to view)" ), (TkDesk, EXEC, tkdesk) ), ( Editori, (XFte, EXEC, xfte), (XEmacs, SHEXEC, "xemacs || emacs"), (XJed, EXEC, xjed), (NEdit, EXEC, nedit), (Xedit, EXEC, xedit), (VI, EXEC, "xterm -e vi") ), ( Razno, (Xmcd, SHEXEC, "xmcd 2> /dev/null"), (Xplaycd, EXEC, xplaycd), (Xmixer, EXEC, xmixer) ), ( "Pomo\346ni programi", (Kalkulator, EXEC, xcalc), ( "Info o prozoru", SHEXEC, "xprop | xmessage -center -title 'xprop' -file -" ), ("Bira\350 fontova", EXEC, xfontsel), ("Emulator terminala", EXEC, xminicom), ("Pove\346alo", EXEC, xmag), (Colormap, EXEC, xcmap), (XKill, EXEC, xkill), (WMClock, EXEC, "wmclock -24"), (Clipboard, EXEC, xclipboard) ), ( Odabir, (Kopiraj, SHEXEC, "echo '%s' | wxcopy"), ("Po\271alji e-mail", EXEC, "xterm -name mail -T Pine -e pine %s"), ("Otvori web", EXEC, "netscape %s"), ("Potra\276i u manualu", EXEC, "MANUAL_SEARCH(%s)") ), ( "Radni prostor", ("Sakrij ostale", HIDE_OTHERS), ("Poka\276i sve", SHOW_ALL), ("Pospremi ikone", ARRANGE_ICONS), ("Osvje\276i", REFRESH), ("Zaklju\350aj", EXEC, "xlock -allowroot -usefirst"), ("Snimi session", SAVE_SESSION), ("O\350isti snimljeni session", CLEAR_SESSION) ), ( Izgled, ( Teme, OPEN_MENU, "-noext /usr/local/share/WindowMaker/Themes $HOME/GNUstep/Library/WindowMaker/Themes WITH setstyle" ), ( Stilovi, OPEN_MENU, "-noext /usr/local/share/WindowMaker/Styles $HOME/GNUstep/Library/WindowMaker/Styles WITH setstyle" ), ( "Setovi ikona", OPEN_MENU, "-noext /usr/local/share/WindowMaker/IconSets $HOME/GNUstep/Library/WindowMaker/IconSets WITH seticons" ), ( Pozadina, ( Boja, ( Crna, EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, black)'" ), ( Plava, EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#505075\")'" ), ( Indigo, EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#243e6c\")'" ), ( "Duboko Blue", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#224477\")'" ), ( "Ljubi\350asta", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#554466\")'" ), ( Krem, EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, wheat4)'" ), ( "Tamno siva", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#333340\")'" ), ( "Vinsko crvena", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#400020\")'" ) ), ( Preljevi, ( "Zalazak sunca", EXEC, "wdwrite WindowMaker WorkspaceBack '(mvgradient, deepskyblue4, black, deepskyblue4, tomato4)'" ), ( Nebo, EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, blue4, white)'" ), ( "Plave nijanse", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#7080a5\", \"#101020\")'" ), ( "Indigo nijanse", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#746ebc\", \"#242e4c\")'" ), ( "Ljubi\350aste nijanse", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#654c66\", \"#151426\")'" ), ( "Krem nijanse", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#a09060\", \"#302010\")'" ), ( "Sive nijanse", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#636380\", \"#131318\")'" ), ( "Vinsko crvene nijanse", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#600040\", \"#180010\")'" ) ), ( Slike, OPEN_MENU, "-noext /usr/local/share/WindowMaker/Backgrounds $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t" ) ), ( "Snimi temu", SHEXEC, "getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/\"%a(Theme name)\"" ), ( "Snimi set ikona", SHEXEC, "geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/\"%a(IconSet name)\"" ) ), ( Izlaz, ("Ponovo startaj", RESTART), ("Pokreni BlackBox", RESTART, blackbox), ("Pokreni kwm", RESTART, kwm), ("Pokreni IceWM", RESTART, icewm), (Izlaz..., EXIT), ("Ubij session...", SHUTDOWN) ) ) ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/menu.gl��������������������������������������������������������������0000644�0001750�0001750�00000007401�13431646201�014507� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������// // Definición do Menu de Aplicacións para WindowMaker (en GALEGO) // // A sintaxe é: // // <Título> <Comando> <Parámetros> , onde : // // <Título> cadea de texto usada como o título.Ten que estar pecha entre "" // // // <Comando> un comando dos seguintes : // MENU - escomenza a definición do (sub)menú. // END - remata a definición do (sub)menu. // EXEC <programa> - executa un programa externo // SHEXEC <command> - executes a shell command (like gimp > /dev/null) // EXIT - sae do xestor de fiestras // RESTART [<xestor de fiestras>] - reinicializa WindowMaker ou // arranca outro xestor de fiestras // REFRESH - refresca o ecritorio // ARRANGE_ICONS - ordena os iconos do escritorio // SHUTDOWN - asasina tódalas aplicacións (e fecha a sesión das X) // WORKSPACE_MENU - engade un submenú para as operacións da // area de traballo // SHOW_ALL - mostra tódalas fiestras na área de traballo // HIDE_OTHERS - oculta tódalas fiestras da area de traballo, // excepto a que ten o foco (ou a ultima que haxa recibido o foco) // // <Parametros> é o programa a executar. // // ** Opcións para a liña de comando EXEC : // %s - sustituese pola corrente seleción. Se a selección non é posible , // o comando é cancelado // %w - sustituese coa corrente ID da fiestra selecionada . Se non hay // xanelas selecionadas , non se devolve nada. // // Pódese anular carácteres especiais (como % e ") co caracter \ : // exemplo: xterm -T "\"Boas mundo\"" // // A cada estamento de MENU lle debe de corresponder un estamneto END ó final // Oxea os exemplos: #include <wmmacros> "Aplicacións" MENU "Información" MENU "Info Panel..." INFO_PANEL "Legal" LEGAL_PANEL "Carga do sistema" SHEXEC xosview || xload "Lista de tarefas" EXEC rxvt -ls -fg white -bg black -fn vga -e top "Manual" EXEC xman "Información" END "Emulador Terminal" EXEC rxvt -ls -fg white -bg black -fn vga "XJed" EXEC xjed "Areas de Traballo" WORKSPACE_MENU "Aplicacións" MENU "Gráficos" MENU "Gimp" EXEC gimp "XV" EXEC xv "XPaint" EXEC xpaint "XFig" EXEC xfig "Gráficos" END "X File Manager" EXEC xfm "OffiX Files" EXEC files "LyX" EXEC lyx "Netscape" EXEC netscape "Ghostview" EXEC ghostview "Acrobat" EXEC /usr/local/Acrobat3/bin/acroread "TkDesk" EXEC tkdesk "Aplicacións" END "Editores" MENU "XEmacs" SHEXEC xemacs || emacs "XJed" EXEC xjed "NEdit" EXEC nedit "Xedit" EXEC xedit "VI" EXEC xterm -e vi "Editores" END "Variedade" MENU "Xmcd" SHEXEC xmcd 2> /dev/null "Xplaycd" EXEC xplaycd "Xmixer" EXEC xmixer "Variedade" END "Utiles" MENU "Calculadora" EXEC xcalc "Selector de fonte" EXEC xfontsel "Lupa" EXEC xmag "Mapa de cor" EXEC xcmap "XKill" EXEC xkill "ASClock" EXEC asclock -shape "Portapapeis" EXEC xclipboard "Utiles" END "Selección" MENU "Correo" EXEC xterm -name mail -T "Pine" -e pine %s "Navegar" EXEC netscape %s "Buscar no manual" EXEC xterm -name manualBrowser -e man %s "Selección" END "Area Traballo" MENU "Fondo" MENU "Ningún" EXEC CLEARROOT "Negro" WS_BACK '(solid, black)' "Azul" WS_BACK '(solid, "#505075")' "Violeta" WS_BACK '(solid, "#554466")' "Marelo" WS_BACK '(solid, wheat4)' "Gris oscuro" WS_BACK '(solid, "#333340")' "Granate" WS_BACK '(solid, "#400020")' "Fondo" END #if (DEPTH>8) // Debes de reinicializar para que os cambios se efectúen #include <gradients.menu> #endif "Asasinar outras" HIDE_OTHERS "Mostrar todas" SHOW_ALL "Aliñar iconos" ARRANGE_ICONS "Refrescar" REFRESH "Fechar" EXEC xlock -allowroot -usefirst "Grabar Area de traballo" EXEC SAVE_WORKSPACE "Area Traballo" END "Sair" MENU "Reinicializar" RESTART "Iniciar AfterStep" RESTART afterstep "Sair..." EXIT "Sair da sesión..." SHUTDOWN "Sair" END "Aplicacións" END ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/IconSets/������������������������������������������������������������0000755�0001750�0001750�00000000000�13642365213�015031� 5����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/IconSets/Makefile.in�������������������������������������������������0000644�0001750�0001750�00000040241�13642360054�017015� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = WindowMaker/IconSets ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ $(top_srcdir)/m4/ax_pthread.m4 \ $(top_srcdir)/m4/ld-version-script.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/windowmaker.m4 \ $(top_srcdir)/m4/wm_attributes.m4 \ $(top_srcdir)/m4/wm_cflags_check.m4 \ $(top_srcdir)/m4/wm_i18n.m4 \ $(top_srcdir)/m4/wm_imgfmt_check.m4 \ $(top_srcdir)/m4/wm_libexif.m4 $(top_srcdir)/m4/wm_libmath.m4 \ $(top_srcdir)/m4/wm_prog_cc_c11.m4 \ $(top_srcdir)/m4/wm_xext_check.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(defsdatadir)" DATA = $(defsdata_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ GFXLIBS = @GFXLIBS@ GREP = @GREP@ HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLIBS = @INTLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBBSD = @LIBBSD@ LIBEXIF = @LIBEXIF@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXINERAMA = @LIBXINERAMA@ LIBXMU = @LIBXMU@ LIBXRANDR = @LIBXRANDR@ LINGUAS = @LINGUAS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAGICKFLAGS = @MAGICKFLAGS@ MAGICKLIBS = @MAGICKLIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MANLANGDIRS = @MANLANGDIRS@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOLIBS = @PANGOLIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILMOFILES = @UTILMOFILES@ VERSION = @VERSION@ WINGSMOFILES = @WINGSMOFILES@ WINGS_VERSION = @WINGS_VERSION@ WMAKERMOFILES = @WMAKERMOFILES@ WPREFSMOFILES = @WPREFSMOFILES@ WRASTER_VERSION = @WRASTER_VERSION@ WUTIL_VERSION = @WUTIL_VERSION@ XCFLAGS = @XCFLAGS@ XFTCONFIG = @XFTCONFIG@ XFTFLAGS = @XFTFLAGS@ XFTLIBS = @XFTLIBS@ XGETTEXT = @XGETTEXT@ XLFLAGS = @XLFLAGS@ XLIBS = @XLIBS@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBRARY_PATH = @X_LIBRARY_PATH@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ defsdatadir = $(pkgdatadir)/IconSets docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ inc_search_path = @inc_search_path@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lcov_output_directory = @lcov_output_directory@ lib_search_path = @lib_search_path@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pixmapdir = @pixmapdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ wprefs_bindir = @wprefs_bindir@ wprefs_datadir = @wprefs_datadir@ defsdata_DATA = Default.iconset EXTRA_DIST = CLEANFILES = Default.iconset all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu WindowMaker/IconSets/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu WindowMaker/IconSets/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-defsdataDATA: $(defsdata_DATA) @$(NORMAL_INSTALL) @list='$(defsdata_DATA)'; test -n "$(defsdatadir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(defsdatadir)'"; \ $(MKDIR_P) "$(DESTDIR)$(defsdatadir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(defsdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(defsdatadir)" || exit $$?; \ done uninstall-defsdataDATA: @$(NORMAL_UNINSTALL) @list='$(defsdata_DATA)'; test -n "$(defsdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(defsdatadir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(defsdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-defsdataDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-defsdataDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am \ install-defsdataDATA install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-defsdataDATA .PRECIOUS: Makefile Default.iconset: $(top_builddir)/WindowMaker/Defaults/WMWindowAttributes $(AM_V_GEN)echo '{' > Default.iconset ; \ grep Icon $(top_builddir)/WindowMaker/Defaults/WMWindowAttributes >> Default.iconset ; \ echo '}' >> Default.iconset ; \ chmod 644 Default.iconset # 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. .NOEXPORT: ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/IconSets/Makefile.am�������������������������������������������������0000644�0001750�0001750�00000000577�13431646201�017011� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ defsdatadir = $(pkgdatadir)/IconSets defsdata_DATA = Default.iconset EXTRA_DIST = CLEANFILES = Default.iconset Default.iconset: $(top_builddir)/WindowMaker/Defaults/WMWindowAttributes $(AM_V_GEN)echo '{' > Default.iconset ; \ grep Icon $(top_builddir)/WindowMaker/Defaults/WMWindowAttributes >> Default.iconset ; \ echo '}' >> Default.iconset ; \ chmod 644 Default.iconset ���������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/menu.sl��������������������������������������������������������������0000644�0001750�0001750�00000016755�13431646201�014537� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Root Menu definition for WindowMaker in Slovenian language * * Syntax is: * * <Title> [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 * $HOME/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 * SHEXEC <command> - executes a shell command (like gimp > /dev/null) * 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 /some/dir [/some/other/dir ...] WITH command -options * * * <Parameters> is the program to execute. * * ** Options for command line in EXEC: * %s - substitute with current selection * %a(message) - opens a input box with the message 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 $HOME/bin/X11 * // set some background images * "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 */ #include "wmmacros" "Aplikacije" MENU "Informacije" MENU "Informacije o programu..." INFO_PANEL "Licenca..." LEGAL_PANEL "Sistemska konzola" EXEC xconsole "Obremenitev sistema" SHEXEC xosview || xload "Seznam procesov" EXEC xterm -e top "Pomoč (Iskalec man strani)" EXEC xman "Informacije" END "XTerm" EXEC xterm -sb "Rxvt" EXEC rxvt -bg black -fg white -fn fixed "Delovni prostori" WORKSPACE_MENU "Aplikacije" MENU "Grafika" MENU "Gimp" SHEXEC gimp >/dev/null "XV" EXEC xv "XPaint" EXEC xpaint "XFig" EXEC xfig "Grafika" END "X File Manager" EXEC xfm "OffiX Files" EXEC files "LyX" EXEC lyx "Netscape" EXEC netscape "Ghostview" EXEC ghostview %a(Enter file to view) "Acrobat" EXEC /usr/local/Acrobat3/bin/acroread %a(Enter PDF to view) "TkDesk" EXEC tkdesk "Aplikacije" END "Urejevalniki besedil" MENU "XFte" EXEC xfte "XEmacs" SHEXEC xemacs || emacs "XJed" EXEC xjed "NEdit" EXEC nedit "Xedit" EXEC xedit "VI" EXEC xterm -e vi "Urejevalniki besedil" END "Drugo" MENU "Xmcd" SHEXEC xmcd 2> /dev/null "Xplaycd" EXEC xplaycd "Xmixer" EXEC xmixer "Drugo" END "Uporabi programi" MENU "Kalkulator" EXEC xcalc "Lastnosti oken" SHEXEC xprop | xmessage -center -title 'xprop' -file - "Pregled pisav" EXEC xfontsel "Terminal emulator" EXEC xminicom "Povecevalno steklo" EXEC xmag "Barvna lestvica" EXEC xcmap "XKill" EXEC xkill "ASClock" EXEC asclock -shape "Odlagališče (clipboard)" EXEC xclipboard "Uporabni programi" END "Izbira" MENU "Kopiraj" SHEXEC echo '%s' | wxcopy "Pošlji po pošti" EXEC xterm -name mail -T "Pine" -e pine %s "Odpri WEB stran" EXEC netscape %s "Poišči v navodilih" EXEC MANUAL_SEARCH(%s) "Izbira" END "Delovni prostor" MENU "Skrij druge" HIDE_OTHERS "Pokaži vse" SHOW_ALL "Poravnaj ikone" ARRANGE_ICONS "Obnovi" REFRESH "Zakleni" EXEC xlock -allowroot -usefirst "Shrani session" SAVE_SESSION "Izbriši shranjen session" CLEAR_SESSION "Delovni prostor" END "Izgled" MENU "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)' "Modra" WS_BACK '(solid, "#505075")' "Indigo" WS_BACK '(solid, "#243e6c")' "Temno modra" WS_BACK '(solid, "#224477")' "Violična" WS_BACK '(solid, "#554466")' "Pšenična" WS_BACK '(solid, "wheat4")' "Temno siva" WS_BACK '(solid, "#333340")' "Vinsko rdeča" WS_BACK '(solid, "#400020")' "Barva" END "Preliv" MENU "Zastava" WS_BACK '(mdgradient, green, red, white, green)' "Nebo" WS_BACK '(vgradient, blue4, white)' "Preliv" END "Slike" OPEN_MENU -noext BACKGROUNDS_DIR $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t "Odzadje" END "Shrani temo" SHEXEC getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/"%a(Theme name)" "Shrani zbirko ikon" SHEXEC geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/"%a(IconSet name)" "Izgled" END "Izhod" MENU "Ponovno zaženi" RESTART "Poženi AfterStep" RESTART afterstep "Izhod..." EXIT "Izhod iz session..." SHUTDOWN "Izhod" END "Aplikacije" END �������������������WindowMaker-0.95.9/WindowMaker/menu.zh_CN�����������������������������������������������������������0000644�0001750�0001750�00000020772�13431646201�015114� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Root Menu definition for WindowMaker * * Syntax is: * * <Title> [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 * $HOME/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 * SHEXEC <command> - executes a shell command (like gimp > /dev/null) * 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 * %W - substitute with the number of the current workspace * * 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 $HOME/bin/X11 * // set some background images * "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 */ #include "wmmacros" "应用程序" MENU "信息" MENU "信息面板..." INFO_PANEL "版权..." LEGAL_PANEL "系统控制台" EXEC xconsole "系统负载" SHEXEC xosview || xload "进程列表" EXEC xterm -e top "手册浏览器" EXEC xman "信息" END "运行..." EXEC %a(运行,要执行的命令:) "XTerm" EXEC xterm -sb "Rxvt" EXEC rxvt -bg black -fg white -fn fixed "工作空间" WORKSPACE_MENU "应用程序" OPEN_MENU "图形" MENU "Gimp" SHEXEC gimp >/dev/null "XV" EXEC xv "XPaint" EXEC xpaint "XFig" EXEC xfig "图形" END "X文件管理器" EXEC xfm "OffiX Files" EXEC files "LyX" EXEC lyx "Netscape" EXEC netscape "Ghostview" EXEC ghostview %a(GhostView,输入要查看的文件名) "Acrobat" EXEC /usr/local/Acrobat3/bin/acroread %a(Acrobat,输入要查看的PDF文件名) "TkDesk" EXEC tkdesk "应用程序" END "编辑器" MENU "XFte" EXEC xfte "XEmacs" SHEXEC xemacs || emacs "XJed" EXEC xjed "NEdit" EXEC nedit "Xedit" EXEC xedit "VI" EXEC xterm -e vi "编辑器" END "其他" MENU "Xmcd" SHEXEC xmcd 2> /dev/null "Xplaycd" EXEC xplaycd "Xmixer" EXEC xmixer "其他" END "工具" MENU "计算器" EXEC xcalc "窗口属性" SHEXEC xprop | xmessage -center -title 'xpro p' -file - "字体选择" EXEC xfontsel "终端模拟器" EXEC xminicom "放大" EXEC xmag "颜色表" EXEC xcmap "XKill" EXEC xkill "剪贴板" EXEC xclipboard "工具" END "选择" MENU "复制" SHEXEC echo '%s' | wxcopy "发送邮件" EXEC xterm -name mail -T "Pine" -e pine %s "浏览" EXEC netscape %s "查找手册" SHEXEC MANUAL_SEARCH(%s) "选择" END "工作空间" MENU "隐藏其他" HIDE_OTHERS "显示所有" SHOW_ALL "排列图标" ARRANGE_ICONS "刷新" REFRESH "锁住屏幕" EXEC xlock -allowroot -usefirst "保存会话" SAVE_SESSION "清除保存的会话" CLEAR_SESSION "工作空间" END "外观" MENU "主题" 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)' "蓝" WS_BACK '(solid, "#505075")' "青" WS_BACK '(solid, "#243e6c")' "深蓝" WS_BACK '(solid, "#224477")' "紫" WS_BACK '(solid, "#554466")' "淡黄" WS_BACK '(solid, "wheat4")' "深灰" WS_BACK '(solid, "#333340")' "酒红" WS_BACK '(solid, "#400020")' "单色" END "过渡色" MENU "日落" WS_BACK '(mvgradient, deepskyblue4, black, deepskyblue4, tomato4)' "天空" WS_BACK '(vgradient, blue4, white)' "蓝色阴影" WS_BACK '(vgradient, "#7080a5", "#101020")' "青色阴影" WS_BACK '(vgradient, "#746ebc", "#242e4c")' "紫色阴影" WS_BACK '(vgradient, "#654c66", "#151426")' "淡黄色阴影" WS_BACK '(vgradient, "#a09060", "#302010")' "灰色阴影" WS_BACK '(vgradient, "#636380", "#131318")' "酒红色阴影" WS_BACK '(vgradient, "#600040", "#180010")' "过渡色" END "图像" OPEN_MENU -noext BACKGROUNDS_DIR $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t "背景" END "保存主题" SHEXEC getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/"%a(主题名,输入文件名:)" "保存图标集" SHEXEC geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/"%a(图标集名,输入文件名:)" "外观" END "退出" MENU "重新启动" RESTART "启动 BlackBox" RESTART blackbox "启动 kwm" RESTART kwm "启动 IceWM" RESTART icewm "退出..." EXIT "退出" END "应用程序" END ������WindowMaker-0.95.9/WindowMaker/Themes/��������������������������������������������������������������0000755�0001750�0001750�00000000000�13642365214�014530� 5����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Themes/Makefile.in���������������������������������������������������0000644�0001750�0001750�00000037611�13642360054�016522� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = WindowMaker/Themes ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ $(top_srcdir)/m4/ax_pthread.m4 \ $(top_srcdir)/m4/ld-version-script.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/windowmaker.m4 \ $(top_srcdir)/m4/wm_attributes.m4 \ $(top_srcdir)/m4/wm_cflags_check.m4 \ $(top_srcdir)/m4/wm_i18n.m4 \ $(top_srcdir)/m4/wm_imgfmt_check.m4 \ $(top_srcdir)/m4/wm_libexif.m4 $(top_srcdir)/m4/wm_libmath.m4 \ $(top_srcdir)/m4/wm_prog_cc_c11.m4 \ $(top_srcdir)/m4/wm_xext_check.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(defsdatadir)" DATA = $(defsdata_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ GFXLIBS = @GFXLIBS@ GREP = @GREP@ HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLIBS = @INTLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBBSD = @LIBBSD@ LIBEXIF = @LIBEXIF@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXINERAMA = @LIBXINERAMA@ LIBXMU = @LIBXMU@ LIBXRANDR = @LIBXRANDR@ LINGUAS = @LINGUAS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAGICKFLAGS = @MAGICKFLAGS@ MAGICKLIBS = @MAGICKLIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MANLANGDIRS = @MANLANGDIRS@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOLIBS = @PANGOLIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILMOFILES = @UTILMOFILES@ VERSION = @VERSION@ WINGSMOFILES = @WINGSMOFILES@ WINGS_VERSION = @WINGS_VERSION@ WMAKERMOFILES = @WMAKERMOFILES@ WPREFSMOFILES = @WPREFSMOFILES@ WRASTER_VERSION = @WRASTER_VERSION@ WUTIL_VERSION = @WUTIL_VERSION@ XCFLAGS = @XCFLAGS@ XFTCONFIG = @XFTCONFIG@ XFTFLAGS = @XFTFLAGS@ XFTLIBS = @XFTLIBS@ XGETTEXT = @XGETTEXT@ XLFLAGS = @XLFLAGS@ XLIBS = @XLIBS@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBRARY_PATH = @X_LIBRARY_PATH@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ defsdatadir = $(pkgdatadir)/Themes docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ inc_search_path = @inc_search_path@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lcov_output_directory = @lcov_output_directory@ lib_search_path = @lib_search_path@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pixmapdir = @pixmapdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ wprefs_bindir = @wprefs_bindir@ wprefs_datadir = @wprefs_datadir@ defsdata_DATA = Default.style OpenStep.style Pastel.style SteelBlueSilk.style Blau.style EXTRA_DIST = $(defsdata_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu WindowMaker/Themes/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu WindowMaker/Themes/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-defsdataDATA: $(defsdata_DATA) @$(NORMAL_INSTALL) @list='$(defsdata_DATA)'; test -n "$(defsdatadir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(defsdatadir)'"; \ $(MKDIR_P) "$(DESTDIR)$(defsdatadir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(defsdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(defsdatadir)" || exit $$?; \ done uninstall-defsdataDATA: @$(NORMAL_UNINSTALL) @list='$(defsdata_DATA)'; test -n "$(defsdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(defsdatadir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(defsdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-defsdataDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-defsdataDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am \ install-defsdataDATA install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-defsdataDATA .PRECIOUS: Makefile # 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. .NOEXPORT: �����������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Themes/Blau.style����������������������������������������������������0000644�0001750�0001750�00000003022�13431646201�016404� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{ MenuTitleBack = (mvgradient, "#18191f", "#474967", "#413b6d"); FTitleColor = "#ffffff"; MenuDisabledColor = "#999999"; IconTitleBack = "#18191f"; FTitleBack = ( mdgradient, "#18191f", "#939abd", "#616185", "#616185", "#5f5f83", "#555575", "#59597a", "#555575", "#939abd" ); ClipTitleFont = "lucida:pixelsize=10"; ClipTitleColor = white; IconTitleFont = "Lucida:slant=0:weight=100:width=100:pixelsize=10"; HighlightColor = "#ffffff"; MenuTextBack = (mhgradient, "#384246", "#707080", "#4a4a61"); WindowTitleFont = "Courier:slant=0:weight=80:width=100:pixelsize=16"; LargeDisplayFont = "Helvetica:slant=0:weight=80:width=100:pixelsize=48"; CClipTitleColor = gray60; MenuStyle = flat; ResizebarBack = (solid, "#989aa6"); IconTitleColor = white; TitleJustify = center; MenuTextColor = "#ffffff"; MenuTextExtendSpace = 0; IconBack = ( mdgradient, gray40, "#6d6aa4", "#564e8c", "#41436c", "#464771", "#595090" ); PTitleBack = (mhgradient, "#5a5c66", "rgb:70/72/7e", "rgb:45/47/4e"); MenuTitleColor = "#e8fd00"; UTitleColor = "#333333"; MenuTitleFont = "FreeSans:slant=0:weight=200:width=100:pixelsize=18"; UTitleBack = (mhgradient, "#989aa6", "#9fa1b5", "#86879b"); WindowTitleExtendSpace = 0; NormalCursor = (builtin, left_ptr); PTitleColor = "#ffffff"; MenuTitleExtendSpace = 0; MenuTextFont = "sans serif:slant=0:weight=100:width=100:pixelsize=15"; WorkspaceBack = (solid, "#505075"); HighlightTextColor = "#000000"; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Themes/OpenStep.style������������������������������������������������0000644�0001750�0001750�00000002062�13431646201�017261� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{ NewStyle = new; TitleJustify = left; WindowTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTextFont = "Trebuchet MS,sans serif:pixelsize=12"; IconTitleFont = "Arial,sans serif:pixelsize=9"; ClipTitleFont = "Verdana:bold:pixelsize=10"; LargeDisplayFont = "Trebuchet MS,sans serif:pixelsize=24"; HighlightColor = white; HighlightTextColor = black; ClipTitleColor = black; CClipTitleColor = "rgb:61/61/61"; FTitleColor = white; PTitleColor = white; UTitleColor = gray20; FTitleBack = (dgradient, "rgb:00/00/10", "rgb:20/20/70"); PTitleBack = (dgradient, "rgb:50/50/50", "rgb:80/80/80"); UTitleBack = (dgradient, "rgb:90/90/90", "rgb:d0/d0/d0"); MenuTitleColor = white; MenuTextColor = black; MenuDisabledColor = gray40; MenuTitleBack = (dgradient, "rgb:00/00/20", "rgb:20/20/70"); MenuTextBack = (hgradient, "rgb:d0/d0/d0", "rgb:80/80/80"); WorkspaceBack = (tpixmap, "BlueImage.jpeg", black); IconBack = (dgradient, "rgb:a6/a6/b6", "rgb:51/55/61"); } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Themes/Default.style�������������������������������������������������0000644�0001750�0001750�00000002024�13431646201�017106� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{ TitleJustify = left; WindowTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTextFont = "Trebuchet MS,sans serif:pixelsize=12"; IconTitleFont = "Arial,sans serif:pixelsize=9"; ClipTitleFont = "Verdana:bold:pixelsize=10"; LargeDisplayFont = "Trebuchet MS,sans serif:pixelsize=24"; HighlightColor = white; HighlightTextColor = black; ClipTitleColor = black; CClipTitleColor = "rgb:61/61/61"; FTitleColor = white; PTitleColor = white; UTitleColor = black; FTitleBack = (hgradient, "rgb:50/5a/5e", "rgb:20/2a/2e"); PTitleBack = (hgradient, "rgb:51/50/55", "rgb:80/80/80"); UTitleBack = (hgradient, "rgb:c2/c0/c5", "rgb:82/80/85"); MenuTitleColor = white; MenuTextColor = black; MenuDisabledColor = gray40; MenuTitleBack = (hgradient, "rgb:50/5a/5e", "rgb:20/2a/2e"); MenuTextBack = (hgradient, "rgb:c2/c0/c5", "rgb:82/80/85"); WorkspaceBack = (solid, "rgb:50/50/75"); IconBack = (dgradient, "rgb:a6/a6/b6", "rgb:51/55/61"); } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Themes/SteelBlueSilk.style�������������������������������������������0000644�0001750�0001750�00000002456�13431646201�020242� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{ WindowTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTextFont = "Trebuchet MS,sans serif:pixelsize=12"; IconTitleFont = "Arial,sans serif:pixelsize=9"; ClipTitleFont = "Verdana:bold:pixelsize=10"; LargeDisplayFont = "Trebuchet MS,sans serif:pixelsize=24"; TitleJustify = center; 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"); } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Themes/Makefile.am���������������������������������������������������0000644�0001750�0001750�00000000235�13431646201�016476� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������defsdatadir = $(pkgdatadir)/Themes defsdata_DATA = Default.style OpenStep.style Pastel.style SteelBlueSilk.style Blau.style EXTRA_DIST = $(defsdata_DATA) �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Themes/Pastel.style��������������������������������������������������0000644�0001750�0001750�00000002452�13431646201�016757� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{ WindowTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTextFont = "Trebuchet MS,sans serif:pixelsize=12"; IconTitleFont = "Arial,sans serif:pixelsize=9"; ClipTitleFont = "Verdana:bold:pixelsize=10"; LargeDisplayFont = "Trebuchet MS,sans serif:pixelsize=24"; TitleJustify = left; HighlightColor = white; HighlightTextColor = black; ClipTitleColor = "rgb:79/96/cf"; CClipTitleColor = "rgb:61/61/61"; FTitleColor = white; PTitleColor = white; UTitleColor = "rgb:79/96/cf"; FTitleBack = (mhgradient, "#182c70", "#182c70", "#4969c7", "#79a2d0", "#a4dad0"); PTitleBack = (hgradient, "rgb:08/18/38", "rgb:28/3c/49"); UTitleBack = ( mhgradient, "rgb:18/2c/41", "rgb:18/2c/41", "rgb:08/18/38", "rgb:28/3c/49", "rgb:28/45/30" ); MenuTitleColor = "rgb:10/28/51"; MenuTextColor = "rgb:10/30/38"; MenuDisabledColor = gray; MenuTitleBack = (mhgradient, black, "rgb:28/55/41", "rgb:93/d7/d5", "rgb:96/d7/e7"); MenuTextBack = ( mhgradient, "rgb:18/2c/70", "rgb:28/45/96", "rgb:79/a2/d0", "rgb:96/c7/be" ); IconBack = (mdgradient, "#183454", "#296ed6", "#03110e"); IconTitleColor = white; IconTitleBack = "rgb:18/2c/70"; WorkspaceBack = (solid, "rgb:22/44/77"); } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/plmenu.fr������������������������������������������������������������0000644�0001750�0001750�00000011412�13431646201�015045� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������("Applications", ("Informations", ("Panneau d'informations", INFO_PANEL), ("Panneau d'informations légales", LEGAL_PANEL), ("Console système", EXEC, "xconsole"), ("Charge système", SHEXEC, "xosview || xload"), ("Liste des processus", EXEC, "xterm -e top"), ("Butineur d'aide", EXEC, "xman") ), ("Démarrer...", SHEXEC, "%a(Démarrer,Tapez une commande à démarrer:)"), ("Terminal X", EXEC, "xterm -sb"), ("Rxvt", EXEC, "rxvt -bg black -fg white -fn fixed"), ("Bureau", WORKSPACE_MENU), ("Applications", ("Graphismes", ("Gimp", SHEXEC, "gimp >/dev/null"), ("XV", EXEC, "xv"), ("XPaint", EXEC, "xpaint"), ("XFig", EXEC, "xfig") ), ("Xfm", EXEC, "xfm"), ("OffiX Files", EXEC, "files"), ("LyX", EXEC , "lyx"), ("Netscape", EXEC, "netscape"), ("Ghostview", EXEC, "ghostview %a(Entrez un fichier)"), ("Acrobat", EXEC, "/usr/local/Acrobat3/bin/acroread %a(Acrobat,Entrez un fichier PDF)"), ("TkDesk", EXEC, "tkdesk") ), ("Editeurs", ("XFte", EXEC, "xfte"), ("XEmacs", SHEXEC, "xemacs || emacs"), ("XJed", EXEC, "xjed"), ("NEdit", EXEC, "nedit"), ("Xedit", EXEC, "xedit"), ("VI", EXEC, "xterm -e vi") ), ("Divers", ("Xmcd", SHEXEC, "xmcd 2> /dev/null"), ("Xplaycd", EXEC, "xplaycd"), ("Xmixer", EXEC, "xmixer") ), ("Utilitaires", ("Calculatrice", EXEC, "xcalc"), ("Propriétés de la fenêtre", SHEXEC, "xprop | xmessage -center -title 'xprop' -file -"), ("Sélecteur de polices", EXEC, "xfontsel"), ("Emulateur de terminal", EXEC, "xminicom"), ("Loupe", EXEC, "xmag"), ("Carte des couleurs", EXEC, "xcmap"), ("XKill", EXEC, "xkill"), ("ASClock", EXEC, "asclock -shape"), ("Sélections", EXEC, "xclipboard") ), ("Sélection", ("Copier", SHEXEC, "echo '%s' | wxcopy"), ("Envoyer à", EXEC, "xterm -name mail -T Pine -e pine %s"), ("Naviguer", EXEC, "netscape %s"), ("Rechercher dans le manuel", SHEXEC, "MANUAL_SEARCH(%s)") ), ("Bureaux", ("Cacher les autres fenêtres", HIDE_OTHERS), ("Montrer toutes les fenêtres", SHOW_ALL), ("Arranger les icônes", ARRANGE_ICONS), ("Retracer l'écran", REFRESH), ("Vérrouiller", EXEC, "xlock -allowroot -usefirst"), ("Sauver la session", SAVE_SESSION), ("Effacer la session", CLEAR_SESSION) ), ("Apparence", ("Thèmes", OPEN_MENU, "-noext /opt/share/WindowMaker/Themes $HOME/GNUstep/Library/WindowMaker/Themes WITH setstyle"), ("Styles", OPEN_MENU, "-noext /opt/share/WindowMaker/Styles $HOME/GNUstep/Library/WindowMaker/Styles WITH setstyle"), ("Jeu d'icônes", OPEN_MENU, "-noext /opt/share/WindowMaker/IconSets $HOME/GNUstep/Library/WindowMaker/IconSets WITH seticons"), ("Fond d'écran", ("Unifié", ("Noir", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, black)'"), ("Bleu", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#505075\")'"), ("Violet", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#554466\")'"), ("Blanc crème", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, wheat4)'"), ("Gris foncé", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#333340\")'"), ("Bordeaux", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#400020\")'") ), ("Degradé", ("Coucher de Soleil", EXEC, "wdwrite WindowMaker WorkspaceBack '(mvgradient, deepskyblyblue4, black, deepskyblue4, tomato4)'"), ("Ciel", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, blue4, white)'"), ("Dégradés de Bleu", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#7080a5\", \"#101020\")'"), ("Dégradés d'Indigo", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#746ebc\", \"#242e4c\")'"), ("Dégradés de Violet", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#654c66\", \"#151426\")'"), ("Dégradés de Beige", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#a09060\", \"#302010\")'"), ("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 /opt/share/WindowMaker/Backgrounds $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t") ), ("Sauver le thème", SHEXEC, "getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes /\"%a(Nom du thème,Entrez un nom de fichier:)\""), ("Sauver le jeu d'icônes", SHEXEC, "geticonset $HOME/GNUstep/Library/WindowMaker/IconSets /\"%a(Nom du jeu d'icônes,Entrez un nom de fichier:)\"") ), ("Quitter", ("Redémarrer", RESTART), ("Démarrer AfterStep", RESTART, afterstep), ("Quitter...", EXIT), ("Tuer la session...", SHUTDOWN) ) ) ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/plmenu.zh_TW.in������������������������������������������������������0000644�0001750�0001750�00000010641�13431646201�016101� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������("應用程式", ("資訊", ("資訊面板...", INFO_PANEL), ("法律...", LEGAL_PANEL), ("系統主控台", EXEC, "xconsole"), ("系統負載", SHEXEC, "xosview || xload"), ("行程清單", EXEC, "xterm -e top"), ("手冊瀏覽器", EXEC, "xman") ), ("執行...", SHEXEC,"%a(執行,輸入執行的命令:)"), ("終端機", EXEC, "crxvt -ls -T 終端機 -n 終端機"), ("工作區", WORKSPACE_MENU), ("應用程式", ("影像處理", ("Gimp", SHEXEC, "gimp >/dev/null"), ("XV", EXEC, "xv"), ("XPaint", EXEC, "xpaint"), ("XFig", EXEC, "xfig") ), ("X 檔案管理員", EXEC, "xfm"), ("OffiX Files", EXEC, "files"), ("LyX", EXEC, "lyx"), ("Netscape", EXEC, "netscape"), ("Ghostview", EXEC, "ghostview %a(GhostView,輸入要檢視的檔案)"), ("Acrobat", EXEC, "acroread %a(Acrobat,輸入要檢視的 PDF)"), ("TkDesk", EXEC, "tkdesk") ), ("編輯器", ("XFte", EXEC, "xfte"), ("XEmacs", SHEXEC, "xemacs || emacs"), ("XJed", EXEC, "xjed"), ("NEdit", EXEC, "nedit"), ("Xedit", EXEC, "xedit"), ("VI", EXEC, "xterm -e vi") ), ("雜項", ("Xmcd", SHEXEC, "xmcd 2> /dev/null"), ("Xplaycd", EXEC, "xplaycd" ), ("Xmixer", EXEC, "xmixer") ), ("公用程式", ("計算機", EXEC, "xcalc"), ("Window Properties", SHEXEC, "xprop | xmessage -center -title 'xprop' -file -"), ("Font Chooser", EXEC, "xfontsel"), ("終端機模擬器", EXEC, "xminicom"), ("Magnify", EXEC, "xmag"), ("Colormap", EXEC, "xcmap"), ("XKill", EXEC, "xkill"), ("Clipboard", EXEC, "xclipboard") ), ("選取", ("複製", SHEXEC, "echo '%s' | wxcopy"), ("郵寄至", EXEC, "xterm -name mail -T \"Pine\" -e pine %s"), ("Navigate", EXEC, "netscape %s"), ("在手冊中搜尋", SHEXEC, "MANUAL_SEARCH(%s)") ), ("工作區", ("隱藏其他", HIDE_OTHERS), ("全部顯示", SHOW_ALL), ("排列圖示", ARRANGE_ICONS), ("更新畫面", REFRESH), ("鎖定", EXEC, "xlock -allowroot -usefirst"), ("儲存階段狀態", SAVE_SESSION), ("清除階段狀態", CLEAR_SESSION) ), ("外觀", ("主題", OPEN_MENU, "-noext #wmdatadir#/Themes $HOME/GNUstep/Library/WindowMaker/Themes WITH setstyle"), ("風格", OPEN_MENU, "-noext #wmdatadir#/Styles $HOME/GNUstep/Library/WindowMaker/Styles WITH setstyle"), ("圖示集", OPEN_MENU, "-noext #wmdatadir#/IconSets $HOME/GNUstep/Library/WindowMaker/IconSets WITH seticons"), ("背景", ("實體色", ("Black", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, black)'"), ("Blue", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#505075\")'"), ("Indigo", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#243e6c\")'"), ("Bleumarine", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#224477\")'"), ("Purple", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#554466\")'"), ("Wheat", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, wheat4)'"), ("Dark Gray", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#333340\")'"), ("Wine", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#400020\")'") ), ("漸層色", ("Sunset", EXEC, "wdwrite WindowMaker WorkspaceBack '(mvgradient, deepskyblue4, black, deepskyblue4, tomato4)'"), ("Sky", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, blue4, white)'"), ("Blue Shades", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#7080a5\", \"#101020\")'"), ("Indigo Shades", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#746ebc\", \"#242e4c\")'"), ("Purple Shades", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#654c66\", \"#151426\")'"), ("Wheat Shades", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#a09060\", \"#302010\")'"), ("Grey Shades", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#636380\", \"#131318\")'"), ("Wine Shades", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#600040\", \"#180010\")'") ), ("圖片", OPEN_MENU, "-noext #wmdatadir#/Backgrounds $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t") ), ("儲存主題", SHEXEC, "getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/%a(主題名稱)"), ("儲存圖示集", SHEXEC, "geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/%a(圖示集名稱)"), ("偏好設定公用程式", EXEC, "#wprefs#") ), ("離開", ("重新啟動", RESTART), ("啟動 BlackBox", RESTART, blackbox), ("啟動 kwm", RESTART, kwm), ("啟動 IceWM", RESTART, icewm), ("離開...", EXIT) ) ) �����������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/menu.he��������������������������������������������������������������0000644�0001750�0001750�00000016067�13431646201�014511� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Root Menu definition for WindowMaker * * Syntax is: * * <Title> <Command> <Parameters> * * <Title> is any string to be used as title. Must be enclosed with " if it * has spaces * * <Command> one of the valid commands: * MENU - starts (sub)menu definition * OPEN_MENU - opens a menu from a file, pipe or directory(ies) contents * and eventually precede each with a command. * END - end (sub)menu definition * WORKSPACE_MENU - adds a submenu for workspace operations * EXEC <program> - executes an external program * SHEXEC <command> - executes a shell command (like gimp > /dev/null) * 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. * * 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 /some/dir [/some/other/dir ...] WITH command -options * * * <Parameters> is the program to execute. * * ** Options for command line in EXEC: * %s - substitute with current selection * %a(message) - opens a input box with the message 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 $HOME/bin/X11 * // set some background images * "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 */ #include "wmmacros" "םימושי" MENU "עדימ" MENU "Info Panel..." INFO_PANEL "Legal" LEGAL_PANEL "System Load" SHEXEC xosview || xload "Process List" EXEC xterm -e top "Manual Browser" EXEC xman "עדימ" END "XTerm" EXEC xterm -sb "Rxvt" EXEC rxvt -bg black -fg white -fn fixed "הדובע יבחרמ" WORKSPACE_MENU "םימושי" MENU "הקיפרג" MENU "Gimp" SHEXEC gimp >/dev/null "XV" EXEC xv "XPaint" EXEC xpaint "XFig" EXEC xfig "הקיפרג" END "X File Manager" EXEC xfm "OffiX Files" EXEC files "LyX" EXEC lyx "פייקסטנ" EXEC netscape "Ghostview" EXEC ghostview %a(Enter file to view) "Acrobat" EXEC /usr/local/Acrobat3/bin/acroread %a(Enter PDF to view) "TkDesk" EXEC tkdesk "םימושי" END "םיכרוע" MENU "XFte" EXEC xfte "XEmacs" SHEXEC xemacs || emacs "XJed" EXEC xjed "NEdit" EXEC nedit "Xedit" EXEC xedit "VI" EXEC xterm -e vi "םיכרוע" END "יללכ" MENU "Xmcd" SHEXEC xmcd 2> /dev/null "Xplaycd" EXEC xplaycd "Xmixer" EXEC xmixer "יללכ" END "םילכ" MENU "Calculator" EXEC xcalc "Window Properties" SHEXEC xprop | xmessage -center -title 'xprop' -file - "Font Chooser" EXEC xfontsel "Terminal Emulator" EXEC xminicom "Magnify" EXEC xmag "Colormap" EXEC xcmap "XKill" EXEC xkill "ASClock" EXEC asclock -shape "Clipboard" EXEC xclipboard "םילכ" END "הריחב" MENU "קתעה" SHEXEC echo '%s' | wxcopy "...ל ראודה חלש" EXEC xterm -name mail -T "Pine" -e pine %s "Navigate" EXEC netscape %s "Search in Manual" SHEXEC MANUAL_SEARCH(%s) "הריחב" END "הדובע בחרמ" MENU "םירחא אבחה" HIDE_OTHERS "םלוכ הארה" SHOW_ALL "םינוקייא רדס" ARRANGE_ICONS "ןנער" REFRESH "לענ" EXEC xlock -allowroot -usefirst "Save Session" SAVE_SESSION "Clear Saved Session" CLEAR_SESSION "הדובע בחרמ" END "הארמ" MENU "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)' "לוחכ" WS_BACK '(solid, "#505075")' "Indigo" WS_BACK '(solid, "#243e6c")' "קומע לוחכ" WS_BACK '(solid, "#224477")' "לוגס" WS_BACK '(solid, "#554466")' "הטיח" WS_BACK '(solid, "wheat4")' "רופא רוחש" WS_BACK '(solid, "#333340")' "ןיי" WS_BACK '(solid, "#400020")' "Solid" END "Gradient" MENU "Flag" WS_BACK '(vdgradient, blue, white, blue)' "Sky" WS_BACK '(vgradient, blue4, white)' "Gradient" END "Images" OPEN_MENU -noext BACKGROUNDS_DIR $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t "עקר" END "Save Theme" SHEXEC getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/"%a(Theme name)" "Save IconSet" SHEXEC geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/"%a(IconSet name)" "הארמ" END "האיצי" MENU "לוחתיא" RESTART "AfterStepל רובע " RESTART afterstep "...אצ" EXIT "...לוכה רוגסו אצ" SHUTDOWN "האיצי" END "םימושי" END �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/plmenu.fi.in���������������������������������������������������������0000644�0001750�0001750�00000014663�13431646201�015454� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������( "Sovellukset", ( "Tietoja", ("Tietoja...", INFO_PANEL), ("Laillista", LEGAL_PANEL), ( "Järjestelmäkonsoli", EXEC, "xconsole" ), ( "Järjestelmän rasitus", EXEC, "xosview || xload" ), ( "Prosessiluettelo", EXEC, "xterm -e top" ), ( "Ohjeselain", EXEC, "xman" ) ), ( "Käynnistä...", EXEC, "%a(Käynnistä,Kirjoita suoritettava komento:)" ), ( "XTerm", EXEC, "xterm -sb" ), ( "Rxvt", EXEC, "rxvt -bg black -fg white -fn fixed" ), ("Työtilat", WORKSPACE_MENU), ( "Sovellukset", ( "Grafiikka", ( "Gimp", EXEC, "gimp >/dev/null" ), ( "XV", EXEC, "xv" ), ( "XPaint", EXEC, "xpaint" ), ( "XFig", EXEC, "xfig" ) ), ( "X Tiedostonhallinta", EXEC, "xfm" ), ( "OffiX Tiedostot", EXEC, "files" ), ( "LyX", EXEC, "lyx" ), ( "Netscape", EXEC, "netscape" ), ( "Ghostview", EXEC, "ghostview %a(GhostView,Kirjoita näytettävän tiedoston nimi:)" ), ( "Acrobat", EXEC, "/usr/local/Acrobat3/bin/acroread %a(Acrobat,Kirjoita näytettävän PDF-tiedoston nimi)" ), ( "TkDesk", EXEC, "tkdesk" ) ), ( "Editorit", ( "XFte", EXEC, "xfte" ), ( "XEmacs", EXEC, "xemacs || emacs" ), ( "XJed", EXEC, "xjed" ), ( "NEdit", EXEC, "nedit" ), ( "Xedit", EXEC, "xedit" ), ( "VI", EXEC, "xterm -e vi" ) ), ( "Sekalaiset", ( "Xmcd", EXEC, "xmcd 2> /dev/null" ), ( "Xplaycd", EXEC, "xplaycd" ), ( "Xmixer", EXEC, "xmixer" ) ), ( "Apuohjelmat", ( "Laskin", EXEC, "xcalc" ), ( "Ikkunan ominaisuudet", EXEC, "xprop | xmessage -center -title 'xprop' -file -" ), ( "Kirjasinlajivalitsin", EXEC, "xfontsel" ), ( "Pääte", EXEC, "xminicom" ), ( "Suurennuslasi", EXEC, "xmag" ), ( "Värikartta", EXEC, "xcmap" ), ( "XKill", EXEC, "xkill" ), ( "Leikepöytä", EXEC, "xclipboard" ) ), ( "Valinta", ( "Kopioi", EXEC, "echo '%s' | wxcopy" ), ( "Lähetä sähköpostina", EXEC, "xterm -name mail -T \"Pine\" -e pine %s" ), ( "Selaa selaimella", EXEC, "netscape %s" ), ( "Etsi ohjeista", EXEC, "if ( man %s > /dev/null ); then man %s | xless; else xmessage -center -title \"Manual Browser\" Sorry, but there is no manual page entry for %s ...; fi" ) ), ( "Työtila", ("Piilota muut", HIDE_OTHERS), ("Näytä kaikki ikkunat", SHOW_ALL), ("Järjestä kuvakkeet", ARRANGE_ICONS), ("Virkistä ruutu", REFRESH), ( "Lukitse näyttö", EXEC, "xlock -allowroot -usefirst" ), ("Tallenna istunto", SAVE_SESSION), ("Tyhjennä istunto", CLEAR_SESSION) ), ( "Ulkonäkö", ( "Teemat", OPEN_MENU, "-noext /usr/local/share/WindowMaker/Themes $HOME/GNUstep/Library/WindowMaker/Themes WITH setstyle" ), ( "Tyylit", OPEN_MENU, "-noext /usr/local/share/WindowMaker/Styles $HOME/GNUstep/Library/WindowMaker/Styles WITH setstyle" ), ( "Kuvakkeet", OPEN_MENU, "-noext /usr/local/share/WindowMaker/IconSets $HOME/GNUstep/Library/WindowMaker/IconSets WITH seticons" ), ( "Taustat", ( "Yksivärinen", ( "Musta", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, black)'" ), ( "Sininen", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#505075\")'" ), ( "Indigo", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#243e6c\")'" ), ( "Tummansininen", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#224477\")'" ), ( "Violetti", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#554466\")'" ), ( "Kellertävä", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"wheat4\")'" ), ( "Tummanharmaa", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#333340\")'" ), ( "Viininpunainen", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#400020\")'" ) ), ( "Liukuväri", ( "Auringonlasku", EXEC, "wdwrite WindowMaker WorkspaceBack '(mvgradient, deepskyblue4, black, deepskyblue4, tomato4)'" ), ( "Taivas", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, blue4, white)'" ), ( "Sinisen sävyjä", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#7080a5\", \"#101020\")'" ), ( "Indigon sävyjä", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#746ebc\", \"#242e4c\")'" ), ( "Violetin sävujä", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#654c66\", \"#151426\")'" ), ( "Kellertävän sävyjä", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#a09060\", \"#302010\")'" ), ( "Harmaan sävyjä", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#636380\", \"#131318\")'" ), ( "Viininpunaisen sävyjä", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#600040\", \"#180010\")'" ) ), ( "Kuvat", OPEN_MENU, "-noext /usr/local/share/WindowMaker/Backgrounds $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t" ) ), ( "Tallenna teema", EXEC, "getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/\"%a(Teeman nimi,Kirjoita teematiedoston nimi:)\"" ), ( "Tallenna kuvakkeet", EXEC, "geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/\"%a(Kuvakesetin nimi,Kirjoita tiedostonnimi:)\"" ), ( "Asetukset", EXEC, "#wprefs#" ) ), ( "Lopeta", ("Käynnistä WM uudelleen", RESTART), ("Käynnistä BlackBox", RESTART, blackbox), ("Käynnistä kwm", RESTART, kwm), ("Käynnistä IceWM", RESTART, icewm), ("Lopeta", EXIT) ) ) �����������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/menu.ko.in�����������������������������������������������������������0000644�0001750�0001750�00000023406�13431646201�015126� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Windowmaker를 위한 루트 메뉴 정의 * * 사용법: * * <Title> [SHORTCUT <Shortcut>] <Command> <Parameters> * * <Title> 은 타이틀로 사용되는 문자열이다. 만일 문자열 가운데 공백이 존재 * 한다면 반드시 따옴표 "로 묶어야 한다. * * SHORTCUT은 각 항목에 대한 단축 글쇠를 지정하는 명령이다. <Shortcut>의 * 문법은 $HOME/GNUstep/Defaults/WindowMaker의 RootMenuKey나 MiniaturizeKey * 와 같은 단축 글쇠 설정 옵션과 같다. * * <Command> 사용가능한 명령어들 * MENU - (하부)메뉴 정의를 시작한다. * END - (하부)메뉴 정의를 마친다. * OPEN_MENU - 파일이나 파이프 혹은 디렉토리 내용으로 부터 메뉴를 열고 * 명령어를 실행한다. * WORKSPACE_MENU - 작업공간 제어에 관한 하부 메뉴를 추가한다. * EXEC <program> - 외부 프로그램을 실행한다. * SHEXEC <command> - 쉘 명령을 실행한다. (예제: gimp > /dev/null) * EXIT - 윈도우 매니저를 종료시킨다. * RESTART [<window manager>] - Windowmaker를 다시시작하거나 다른 윈도우 * 관리자를 실행시킨다. * REFRESH - 화면을 다시 그린다. * ARRANGE_ICONS - 작업공간의 아이콘들을 정렬한다. * SHUTDOWN - 모든 클라이언트를 종료한다. (그리고 X 윈도우 세션을 닫는다) * SHOW_ALL - 워크스페이스에 모든 창을 숨김 해제한다. * HIDE_OTHERS - 현재 활성화된 창(혹은 가장 마지막에 포커스를 가진 * 창)을 제외한 모든 창을 숨긴다. * SAVE_SESSION - 데스크탑의 현재 상태를 저장한다. 이때 저장되는 것은 * 실행중인 모든 프로그램 그리고 그 것들의 정보들(크기, * 화면상의 위치, 작업공간 번호, 그것들이 실행된 dock이나 * 클립 그리고 프로그램이 아이콘화되었는지 shade 형태 * 인지 혹은 숨겨졌는지의 여부이다. 또한 사용자가 현재 * 작업중인 워크스페이스도 저장된다. 이 모든 정보들은 * 또다른 SAVE_SESSION이나 CLEAR_SEEION이 사용되기 전까지 * 매번 윈도우메이커가 실행될 때마다 복원된다. 만일 * SaveSession OnExit = Yes; 로 설정되어 있으면 매번 윈도우 * 메이커가 종료될 때마다 자동적으로 세션의 내용을 저장하고 * SAVE_SESSION 이나 CLEAR_SESSOIN 값은 무시된다. * CLEAR_SESSION - 이미 정장된 세션을 지운다. 이것은 SaveSessionOnExit가 * 참인 경우에 효과를 미치지 않는다. * INFO - 정보 패널을 보여준다. * * OPEN_MENU syntax: * OPEN_MENU 문법: * 1. 파일 메뉴 다루기 * // 올바른 메뉴 파일을 포함한 file.menu를 열고 현재 위치에 삽입한다. * OPEN_MENU file.menu * 2. Pipe menu 다루기. * // 명령어를 열고 메뉴를 구성하는데 표준 출력으로 사용한다. * // 명령어의 출력은 반드시 올바른 메뉴 기술자(descriptor)여야 한다. * // '|' 와 명령어사이의 공백은 사용자의 선택사항이다. * OPEN_MENU | command * 3. 디렉토리 다루기. * // 하나 혹은 그 이상의 디렉토리를 열고 그 안의 모든 부디렉토리와 * // 실행 파일들을 알파벳 순으로 정렬한 메뉴를 구성한다. * OPEN_MENU /some/dir [/some/other/dir ...] * 4. 디렉토리 다루기와 명령. * // 하나 혹은 그 이상의 디렉토리를 열고 모든 부디렉토리와 읽기 가능한 * // 파일들을 알파벳순으로 정렬된 형태로 메뉴를 만들되, 지정된 명령어와 * // 결합시킨다. * OPEN_MENU [options] /some/dir [/some/other/dir ...] WITH command -options * 옵션: -noext 파일 이름의 확장자를 없애고 보여준다. * * <Parameters> 는 실행할 프로그램이다. * * ** EXEC의 명령어 라인에 대한 옵션: * %s - 현재 선택된 내용으로 바꾼다. * %a(title[,prompt]) - 입력 상자를 열고 사용자가 입력한 것으로 * 메시지를 바꾼다. * %w - 현재 활성화된 윈도우의 XID를 대체한다. * %W - 현재 작업 공간의 번호로 대체한다. * * %나 "와 같은 특수 문자는 \ 문자를 앞에 써서 사용할 수 있다: * 예: hanterm -T "\"Hello World\"" * * 또한 \n과 같은 character escapes도 사용할 수 있다. * * 각각의 MENU 문은 반드시 END와 쌍을 이루어야 한다. * * 예제: * * "Test" MENU * "XTerm" EXEC xterm * // /usr/openwin/bin 디렉토리의 내용으로 서브 메뉴를 만든다. * "XView apps" OPEN_MENU "/usr/openwin/bin" * // 다른 디렉토리에 있는 몇개의 X11 프로그램들 * "X11 apps" OPEN_MENU /usr/X11/bin ~/bin/X11 * // 바탕화면으로 사용할 그림을 지정한다. * "Background" OPEN_MENU ~/images /usr/share/images WITH wmsetbg -u -t * // 현재 항목에 style.menu를 삽입한다. * "Style" OPEN_MENU style.menu * "Test" END */ #include "wmmacros" "윈도우메이커" MENU "정 보" MENU "정보 패널" INFO_PANEL "저작권 정보" LEGAL_PANEL "시스템 로드" SHEXEC xosview || xload "매뉴얼 찾기" EXEC xman "프로세스목록" EXEC xterm -e top "정 보" END "한 텀" SHORTCUT SHIFT+META+H EXEC hanterm "명 령 창" SHORTCUT SHIFT+META+C EXEC %a(실행할 명령:) "입 력 기" SHORTCUT SHIFT+META+I SHEXEC ami || hanIM "프로그램" MENU "터 미 널" MENU "한 텀" EXEC hanterm "하얀한텀" SHORTCUT CONTROL+META+H EXEC hanterm -fg black -bg gray75 "관 리 자" SHORTCUT SHIFT+META+R EXEC hanterm -T 관리자 -n 관리자 -name root -e sudo su - "엑 스 텀" SHEXEC nxterm || xterm "터 미 널" END "네트워크" MENU "모 질 라" SHORTCUT SHIFT+META+N EXEC netscape "유 즈 넷" EXEC hanterm -T 유즈넷 -n 유즈넷 -e slrn -C "이 메 일" EXEC hanterm -T 이메일 -n 이메일 -e mutt "나우누리" EXEC hanterm -T 나우누리 -n 나우누리 -e ztelnet nownuri.net "하 이 텔" EXEC hanterm -T 하이텔 -n 하이텔 -e ztelnet home.hitel.net "천 리 안" EXEC hanterm -T 천리안 -n 천리안 -e ztelnet chonllian.net "가 우" SHEXEC gau || gaui "네트워크" END "편 집 기" MENU "VIM" EXEC hanterm -T VIM -n VIM -e vim "이맥스" EXEC emacs "피 코" EXEC hanterm -T 피코 -n 피코 -e pico "편 집 기" END "그 래 픽" MENU "XV" EXEC xv "GIMP" EXEC gimp "GQview" EXEC gqview "XPaint" EXEC xpaint "XFig" EXEC xfig "그 래 픽" END "도구모음" MENU "계 산 기" EXEC xcalc "창 속 성" SHEXEC xprop | xmessage -center -title 'xprop' -file - "글꼴보기" EXEC xfontsel "돋 보 기" EXEC xmag "컬 러 맵" EXEC xcmap "강제종료" EXEC xkill "클립보드" EXEC xclipboard "도구모음" END "멀티미디어" MENU "믹 서" SHEXEC xmixer || hanterm -T AuMIX -n AuMix -e aumix "MPEG 보기" EXEC mtv "MP3 연주기" SHEXEC xmms || x11amp "CD 연주기" EXEC xplaycd "멀티미디어" END "프로그램" END "작업공간" WORKSPACE_MENU "창 관 리" MENU "다른창 숨김" HIDE_OTHERS "모두 보이기" SHOW_ALL "아이콘 정렬" ARRANGE_ICONS "화면정리" REFRESH "세션 저장" SAVE_SESSION "세션 지움" CLEAR_SESSION "창 관 리" END "작업환경" MENU "설 정" SHEXEC #wprefs# || wmakerconf "테 마" OPEN_MENU -noext THEMES_DIR ~/GNUstep/Library/WindowMaker/Themes WITH setstyle "테마저장" EXEC getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/"%a(테마 이름,파일 이름을 입력하세요:)" "아이콘셋" OPEN_MENU -noext ICON_SETS_DIR ~/GNUstep/Library/WindowMaker/IconSets WITH seticons "아이콘셋저장" EXEC geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/"%a(아이콘셋 이름,파일 이름을 입력하세요:)" #if (DEPTH>8) "스 타 일" OPEN_MENU -noext STYLES_DIR ~/GNUstep/Library/WindowMaker/Styles WITH setstyle #endif "배경화면" MENU "단 색" MENU "Black" WS_BACK '(solid, black)' "Blue" WS_BACK '(solid, "#505075")' "Indigo" WS_BACK '(solid, "#243e6c")' "Bleumarine" WS_BACK '(solid, "#224477")' "Purple" WS_BACK '(solid, "#554466")' "Wheat" WS_BACK '(solid, "wheat4")' "Dark Gray" WS_BACK '(solid, "#333340")' "Wine" WS_BACK '(solid, "#400020")' "색 지정" WS_BACK '(solid, "%a(배경색:)")' "단 색" END "그 림" MENU "전체화면" OPEN_MENU -noext BACKGROUNDS_DIR $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -s "타일형식" OPEN_MENU -noext BACKGROUNDS_DIR $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t "가 운 데" OPEN_MENU -noext BACKGROUNDS_DIR $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -e "그 림" END #if (DEPTH>8) "그래디언트" MENU "Flag" WS_BACK '(mdgradient, green, red, white, green)' "Sky" WS_BACK '(vgradient, blue4, white)' "Blue Shades" WS_BACK '(vgradient, "#7080a5", "#101020")' "Indigo Shades" WS_BACK '(vgradient, "#746ebc", "#242e4c")' "Purple Shades" WS_BACK '(vgradient, "#654c66", "#151426")' "Wheat Shades" WS_BACK '(vgradient, "#a09060", "#302010")' "Grey Shades" WS_BACK '(vgradient, "#636380", "#131318")' "Wine Shades" WS_BACK '(vgradient, "#600040", "#180010")' "그래디언트" END #endif "배경화면" END "작업환경" END "화면잠금" SHORTCUT SHIFT+META+L EXEC xlock -allowroot -usefirst -nice +20 "종 료" MENU "재 시 작" RESTART "재 시 작" MENU "BlackBox" RESTART blackbox "KDE" RESTART kwm "IceWM" RESTART icewm "AfterStep" RESTART afterstep "Enlightenment" RESTART enlightenment "FVWM2" RESTART fvwm2 "재 시 작" END "종 료" EXIT "세션종료" SHUTDOWN "종 료" END "윈도우메이커" END ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/plmenu.fy.in���������������������������������������������������������0000644�0001750�0001750�00000004412�13642357774�015505� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������("Programma's", ("Ynfo", ("Ynfopaniel", INFO_PANEL), ("Juridyske ynfo", LEGAL_PANEL), ("Systeemconsole", EXEC, "xconsole"), ("Systeembelêsting", SHEXEC, "xosview || xload"), ("Proseslist", EXEC, "xterm -e top"), ("Hantliedingblêder", EXEC, "xman") ), ("Utfiere...", SHEXEC, "%a(Utfiere,Typ út te fieren kommando:)"), ("XTerm", EXEC, "xterm -sb"), ("Mozilla Firefox", EXEC, "firefox"), ("Wurkromten", WORKSPACE_MENU), ("Programma's", ("Gimp", SHEXEC, "gimp >/dev/null"), ("Ghostview", EXEC, "ghostview %a(Fier te besjen bestân yn)"), ("Xpdf", EXEC, "xpdf %a(Fier te besjen PDF yn)"), ("Abiword", EXEC, "abiword"), ("Dia", EXEC, "dia"), ("OpenOffice.org", ("OpenOffice.org", EXEC, "ooffice"), ("Writer", EXEC, "oowriter"), ("Rekkenblêd", EXEC, "oocalc"), ("Draw", EXEC, "oodraw"), ("Impress", EXEC, "ooimpress") ), ("Tekstbewurkers", ("XEmacs", EXEC, "xemacs"), ("Emacs", EXEC, "emacs"), ("XJed", EXEC, "xjed"), ("VI", EXEC, "xterm -e vi"), ("GVIM", EXEC, "gvim"), ("NEdit", EXEC, "nedit"), ("Xedit", EXEC, "xedit") ), ("Multymedia", ("XMMS", ("XMMS", EXEC, "xmms"), ("XMMS ôfspylje/skoftsje", EXEC, "xmms -t"), ("XMMS stopje", EXEC, "xmms -s") ), ("Xine fideospiler", EXEC, "xine"), ("MPlayer", EXEC, "mplayer") ) ), ("Helpmiddels", ("Rekkenmasine", EXEC, "xcalc"), ("Finstereigenskippen", SHEXEC, "xprop | xmessage -center -title 'xprop' -file -"), ("Lettertypekiezer", EXEC, "xfontsel"), ("Fergrutsje", EXEC, "wmagnify"), ("Kleurekaart", EXEC, "xcmap"), ("X-programma deadzje", EXEC, "xkill") ), ("Seleksje", ("Kopiearje", SHEXEC, "echo '%s' | wxcopy"), ("E-maile nei", EXEC, "xterm -name mail -T Pine -e pine %s"), ("Navigearje", EXEC, "mozilla %s"), ("Sykje yn hantlieding", EXEC, "MANUAL_SEARCH(%s)") ), ("Kommando's", ("Oare ferbergje", HIDE_OTHERS), ("Alles toane", SHOW_ALL), ("Ikoanen skikke", ARRANGE_ICONS), ("Fernije", REFRESH), ("Beskoattelje", EXEC, "xlock -allowroot -usefirst") ), ("Uterlik", OPEN_MENU, "appearance.menu.fy"), ("Sesje", ("Sesje bewarje", SAVE_SESSION), ("Sesje wiskje", CLEAR_SESSION), ("Window Maker werstarte", RESTART), ("BlackBox starte", RESTART, blackbox), ("IceWM starte", RESTART, icewm), ("Ofslute", EXIT) ) ) ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Makefile.am����������������������������������������������������������0000644�0001750�0001750�00000002455�13642357774�015301� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������SUBDIRS = Backgrounds . Defaults IconSets Icons Pixmaps Styles Themes prefsdatadir = $(pkgdatadir) wpexecbindir = @wprefs_bindir@ # menus which need generated to have correct path to WPrefs or data directory GENERATED_MENUS =\ appearance.menu\ appearance.menu.fy\ appearance.menu.nl\ menu\ menu.bg\ menu.fi\ menu.fy\ menu.hu\ menu.ko\ menu.nl\ menu.ro\ menu.sk\ menu.zh_TW\ plmenu\ plmenu.bg\ plmenu.es\ plmenu.fi\ plmenu.fy\ plmenu.ja\ plmenu.ko\ plmenu.nl\ plmenu.pl\ plmenu.ro\ plmenu.sk\ plmenu.zh_CN\ plmenu.zh_TW\ wmmacros # menus which do not mention WPrefs or data directory NONGENERATED_MENUS =\ menu.ca\ menu.cz\ menu.da\ menu.de\ menu.el\ menu.es\ menu.fr\ menu.gl\ menu.he\ menu.hr\ menu.it\ menu.ja\ menu.no\ menu.pl\ menu.pt\ menu.ru\ menu.se\ menu.sl\ menu.tr\ menu.zh_CN\ plmenu.da\ plmenu.de\ plmenu.fr\ plmenu.hr\ plmenu.it dist_prefsdata_DATA =\ autostart.sh\ background.menu\ background.menu.fy\ background.menu.nl\ exitscript.sh\ README\ README.themes\ $(NONGENERATED_MENUS) nodist_prefsdata_DATA = $(GENERATED_MENUS) EXTRA_DIST = $(addsuffix .in, $(GENERATED_MENUS)) CLEANFILES = $(GENERATED_MENUS) $(GENERATED_MENUS): $(AM_V_GEN)sed -e "s:#wprefs#:$(wpexecbindir)/WPrefs:" \ -e "s:#wmdatadir#:$(pkgdatadir):" $(srcdir)/$@.in > $@ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/plmenu.ja.in���������������������������������������������������������0000644�0001750�0001750�00000011432�13431646201�015437� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������("アプリケーション", ("情報", ("Info パネル", INFO_PANEL), ("Legal パネル", LEGAL_PANEL), ("システムコンソール", EXEC, "xconsole"), ("システム負荷", SHEXEC, "xosview || xload"), ("プロセス一覧", EXEC, "xterm -e top"), ("マニュアルブラウザ", EXEC, "xman") ), ("コマンド実行", SHEXEC, "%a(Run,Type command to run:)"), ("KTerm", EXEC, "kterm -sb"), ("Rxvt", EXEC, "rxvt -bg black -fg white"), ("ワークスペース", WORKSPACE_MENU), ("アプリケーション", ("グラフィックス", ("Gimp", SHEXEC, "gimp >/dev/null"), ("XV", EXEC, "xv"), ("XPaint", EXEC, "xpaint"), ("XFig", EXEC, "xfig") ), ("X File Manager", EXEC, "xfm"), ("OffiX Files", EXEC, "files"), ("LyX", EXEC, "lyx"), ("Netscape", EXEC, "netscape"), ("Ghostview", EXEC, "ghostview %a(Enter file to view)"), ("Acrobat", EXEC, "/usr/local/Acrobat3/bin/acroread %a(Enter PDF to view)"), ("TkDesk", EXEC, "tkdesk") ), ("エディタ", ("XFte", EXEC, "xfte"), ("XEmacs", SHEXEC, "xemacs || emacs || mule"), ("XJed", EXEC, "xjed"), ("NEdit", EXEC, "nedit"), ("Xedit", EXEC, "xedit"), ("VI", EXEC, "xterm -e vi") ), ("いろいろ", ("Xmcd", SHEXEC, "xmcd 2> /dev/null"), ("Xplaycd", EXEC, "xplaycd"), ("Xmixer", EXEC, "xmixer") ), ("ユーティリティー", ("電卓", EXEC, "xcalc"), ("プロパティ表示", SHEXEC, "xprop | xmessage -center -title 'xprop' -file -"), ("フォントセレクタ", EXEC, "xfontsel"), ("端末エミュレータ", EXEC, "xminicom"), ("眼鏡", EXEC, "xmag"), ("カラーマップ", EXEC, "xcmap"), ("XKill", EXEC, "xkill"), ("ASClock", EXEC, "asclock -shape"), ("Clipboard", EXEC, "xclipboard") ), ("セレクション", ("コピー", SHEXEC, "echo '%s' | wxcopy"), ("Mail To", EXEC, "xterm -name mail -T Pine -e pine %s"), ("Navigate", EXEC, "netscape %s"), ("マニュアル検索", EXEC, "MANUAL_SEARCH(%s)") ), ("ワークスペース", ("他をハイド", HIDE_OTHERS), ("全て表示", SHOW_ALL), ("アイコンの再表示", ARRANGE_ICONS), ("画面の再描画", REFRESH), ("ロック", EXEC, "xlock -allowroot -usefirst"), ("セッションをセーブ", SAVE_SESSION), ("セッションをクリア", CLEAR_SESSION) ), ("外観", ("テーマ", OPEN_MENU, "-noext #wmdatadir#/Themes $HOME/GNUstep/Library/WindowMaker/Themes WITH setstyle"), ("スタイル", OPEN_MENU, "-noext #wmdatadir#/Styles $HOME/GNUstep/Library/WindowMaker/Styles WITH setstyle"), ("アイコンセット", OPEN_MENU, "-noext #wmdatadir#/IconSets $HOME/GNUstep/Library/WindowMaker/IconSets WITH seticons"), ("背景", ("ソリッド", ("Black", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, black)'"), ("Blue", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#505075\")'"), ("Indigo", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#243e6c\")'"), ("Bleumarine", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#224477\")'"), ("Purple", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#554466\")'"), ("Wheat", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, wheat4)'"), ("Dark Gray", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#333340\")'"), ("Wine", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#400020\")'") ), ("グラデーション", ("Sunset", EXEC, "wdwrite WindowMaker WorkspaceBack '(mvgradient, deepskyblue4, black, deepskyblue4, tomato4)'"), ("Sky", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, blue4, white)'"), ("Blue Shades", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#7080a5\", \"#101020\")'"), ("Indigo Shades", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#746ebc\", \"#242e4c\")'"), ("Purple Shades", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#654c66\", \"#151426\")'"), ("Wheat Shades", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#a09060\", \"#302010\")'"), ("Grey Shades", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#636380\", \"#131318\")'"), ("Wine Shades", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#600040\", \"#180010\")'") ), ("イメージ", OPEN_MENU, "-noext #wmdatadir#/Backgrounds $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t") ), ("設定をテーマとしてセーブ", SHEXEC, "getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/\"%a(Theme name)\""), ("現在のアイコンセットをセーブ", SHEXEC, "geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/\"%a(IconSet name)\""), ("設定ユーティリティ", EXEC, "#wprefs#") ), ("終了", ("再起動", RESTART), ("BlackBox をスタート", RESTART, blackbox), ("kwm をスタート", RESTART, kwm), ("IceWM をスタート", RESTART, icewm), ("終了", EXIT) ) ) ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Styles/��������������������������������������������������������������0000755�0001750�0001750�00000000000�13642365213�014565� 5����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Styles/Makefile.in���������������������������������������������������0000644�0001750�0001750�00000040660�13642360054�016556� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = WindowMaker/Styles ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ $(top_srcdir)/m4/ax_pthread.m4 \ $(top_srcdir)/m4/ld-version-script.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/windowmaker.m4 \ $(top_srcdir)/m4/wm_attributes.m4 \ $(top_srcdir)/m4/wm_cflags_check.m4 \ $(top_srcdir)/m4/wm_i18n.m4 \ $(top_srcdir)/m4/wm_imgfmt_check.m4 \ $(top_srcdir)/m4/wm_libexif.m4 $(top_srcdir)/m4/wm_libmath.m4 \ $(top_srcdir)/m4/wm_prog_cc_c11.m4 \ $(top_srcdir)/m4/wm_xext_check.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(prefsdatadir)" DATA = $(prefsdata_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ GFXLIBS = @GFXLIBS@ GREP = @GREP@ HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLIBS = @INTLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBBSD = @LIBBSD@ LIBEXIF = @LIBEXIF@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXINERAMA = @LIBXINERAMA@ LIBXMU = @LIBXMU@ LIBXRANDR = @LIBXRANDR@ LINGUAS = @LINGUAS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAGICKFLAGS = @MAGICKFLAGS@ MAGICKLIBS = @MAGICKLIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MANLANGDIRS = @MANLANGDIRS@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOLIBS = @PANGOLIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILMOFILES = @UTILMOFILES@ VERSION = @VERSION@ WINGSMOFILES = @WINGSMOFILES@ WINGS_VERSION = @WINGS_VERSION@ WMAKERMOFILES = @WMAKERMOFILES@ WPREFSMOFILES = @WPREFSMOFILES@ WRASTER_VERSION = @WRASTER_VERSION@ WUTIL_VERSION = @WUTIL_VERSION@ XCFLAGS = @XCFLAGS@ XFTCONFIG = @XFTCONFIG@ XFTFLAGS = @XFTFLAGS@ XFTLIBS = @XFTLIBS@ XGETTEXT = @XGETTEXT@ XLFLAGS = @XLFLAGS@ XLIBS = @XLIBS@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBRARY_PATH = @X_LIBRARY_PATH@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ defsdatadir = @defsdatadir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ inc_search_path = @inc_search_path@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lcov_output_directory = @lcov_output_directory@ lib_search_path = @lib_search_path@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pixmapdir = @pixmapdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ wprefs_bindir = @wprefs_bindir@ wprefs_datadir = @wprefs_datadir@ prefsdatadir = $(pkgdatadir)/Styles prefsdata_DATA = \ Adwaita.style\ Autumn.style\ Black.style\ BlackTexture.style\ Blue.style\ BlueDawn.style\ BlueishGreen.style\ Brown.style\ Brownish.style\ Chumbo.style\ Copper.style\ DarkBlue.style\ DarkRed.style\ Emerald.style\ Fire.style\ Food.style\ Golden.style\ Green.style\ GreyBlue.style\ Gtk.style\ Interlace.style\ IRednBlue.style\ LightBlue.style\ NewBlue.style\ NightSky.style\ Pastel.style\ Pink.style\ Pumpkin.style\ Purple.style\ Purplish.style\ Red.style\ RednBlue.style\ Spring.style\ Summer.style\ Traditional.style\ VioletBlue.style EXTRA_DIST = $(prefsdata_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu WindowMaker/Styles/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu WindowMaker/Styles/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-prefsdataDATA: $(prefsdata_DATA) @$(NORMAL_INSTALL) @list='$(prefsdata_DATA)'; test -n "$(prefsdatadir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(prefsdatadir)'"; \ $(MKDIR_P) "$(DESTDIR)$(prefsdatadir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(prefsdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(prefsdatadir)" || exit $$?; \ done uninstall-prefsdataDATA: @$(NORMAL_UNINSTALL) @list='$(prefsdata_DATA)'; test -n "$(prefsdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(prefsdatadir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(prefsdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-prefsdataDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-prefsdataDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-prefsdataDATA install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags-am uninstall uninstall-am \ uninstall-prefsdataDATA .PRECIOUS: Makefile # 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. .NOEXPORT: ��������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Styles/Adwaita.style�������������������������������������������������0000644�0001750�0001750�00000002414�13642357774�017157� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{ CClipTitleColor = "#8b8e8e"; ClipTitleColor = "#2e3436"; ClipTitleFont = "Cantarell:slant=0:weight=200:width=100:pixelsize=13"; FrameBorderColor = "#b6b6b3"; FrameFocusedBorderColor = "#b6b6b3"; FrameSelectedBorderColor = "#ffffff"; FTitleBack = (solid, "#e8e8e7"); FTitleColor = "#2e3436"; HighlightColor = "#4a90d9"; HighlightTextColor = "#ffffff"; IconBack = (solid, "#e8e8e7"); IconTitleBack = "#e8e8e7"; IconTitleColor = "#2e3436"; IconTitleFont = "Cantarell:slant=0:weight=80:width=100:pixelsize=9"; LargeDisplayFont = "Cantarell:slant=0:weight=200:width=100:pixelsize=24"; MenuDisabledColor = "#8b8e8e"; MenuStyle = flat; MenuTextBack = (solid, "#ffffff"); MenuTextColor = "#2e3436"; MenuTextExtendSpace = 0; MenuTextFont = "Cantarell:slant=0:weight=80:width=100:pixelsize=13"; MenuTitleBack = (solid, "#e8e8e7"); MenuTitleColor = "#2e3436"; MenuTitleExtendSpace = 0; MenuTitleFont = "Cantarell:slant=0:weight=200:width=100:pixelsize=13"; PTitleBack = (solid, "#e8e8e7"); PTitleColor = "#8b8e8e"; ResizebarBack = (solid, "#e8e8e7"); TitleJustify = center; UTitleBack = (solid, "#e8e8e7"); UTitleColor = "#8b8e8e"; WindowTitleExtendSpace = 0; WindowTitleFont = "Cantarell:slant=0:weight=200:width=100:pixelsize=13"; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Styles/Brown.style���������������������������������������������������0000644�0001750�0001750�00000002166�13431646201�016656� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{ WindowTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTextFont = "Trebuchet MS,sans serif:pixelsize=12"; IconTitleFont = "Arial,sans serif:pixelsize=9"; ClipTitleFont = "Verdana:bold:pixelsize=10"; LargeDisplayFont = "Trebuchet MS,sans serif:pixelsize=24"; TitleJustify = center; HighlightColor = white; HighlightTextColor = black; ClipTitleColor = "rgb:79/96/cf"; CClipTitleColor = "rgb:61/61/61"; FTitleColor = white; PTitleColor = gray; UTitleColor = gray; FTitleBack = (vgradient, "rgb:ae/9e/a6", "rgb:61/51/59"); PTitleBack = (vgradient, "rgb:76/61/76", "rgb:20/0a/20"); UTitleBack = (vgradient, "rgb:51/61/76", "rgb:0a/0a/20"); ResizebarBack = (solid, "#2d354b"); MenuTitleColor = white; MenuTextColor = white; MenuDisabledColor = gray60; MenuTitleBack = (hgradient, "rgb:ae/9e/a6", "rgb:61/51/59"); MenuTextBack = (hgradient, "rgb:49/71/86", "rgb:08/10/30"); IconBack = (mdgradient, "rgb:18/34/54", "rgb:28/45/69", "rgb:08/24/20"); IconTitleColor = white; IconTitleBack = "#88777f"; MenuStyle = normal; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Styles/Interlace.style�����������������������������������������������0000644�0001750�0001750�00000002751�13431646201�017475� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{ WindowTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTextFont = "Trebuchet MS,sans serif:pixelsize=12"; IconTitleFont = "Arial,sans serif:pixelsize=9"; ClipTitleFont = "Verdana:bold:pixelsize=10"; LargeDisplayFont = "Trebuchet MS,sans serif:pixelsize=24"; TitleJustify = right; HighlightColor = "#000000"; HighlightTextColor = "#bac4e0"; ClipTitleColor = "#8a94b0"; CClipTitleColor = "#6a7490"; FTitleColor = (function, libwmfun.so, drawPlainString, "#dae4f0", black, grey20); PTitleColor = (function, libwmfun.so, drawPlainString, "#dae4f0", black, grey20); UTitleColor = (function, libwmfun.so, drawPlainString, "#7a8490", black, grey10); FTitleBack = (igradient, black, "#0000cc", 1, grey10, "#aaaaaa", 1); PTitleBack = (igradient, black, "#0000ff", 1, grey10, "#dddddd", 1); UTitleBack = (igradient, black, "#111188", 1, grey10, "#777777", 1); ResizebarBack = (dgradient, "#111144", grey10); MenuTitleColor = (function, libwmfun.so, drawPlainString, "#dae4f0", black, grey20); MenuTextColor = "#8a94b0"; MenuDisabledColor = "#4a5470"; MenuTitleBack = (igradient, black, "#0000cc", 1, grey10, "#aaaaaa", 1); MenuTextBack = (mdgradient, "#555566", black, black, "#111133"); IconBack = (igradient, black, "#111177", 1, grey10, "#555555", 1); IconTitleColor = "#8a94b0"; IconTitleBack = "#0b0f22"; MenuStyle = flat; WorkspaceBack = (mdgradient, black, black, black, "#111133"); } �����������������������WindowMaker-0.95.9/WindowMaker/Styles/DarkBlue.style������������������������������������������������0000644�0001750�0001750�00000002166�13431646201�017260� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{ WindowTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTextFont = "Trebuchet MS,sans serif:pixelsize=12"; IconTitleFont = "Arial,sans serif:pixelsize=9"; ClipTitleFont = "Verdana:bold:pixelsize=10"; LargeDisplayFont = "Trebuchet MS,sans serif:pixelsize=24"; TitleJustify = center; HighlightColor = white; HighlightTextColor = black; ClipTitleColor = white; CClipTitleColor = gray40; FTitleColor = white; PTitleColor = gray60; UTitleColor = gray60; FTitleBack = (hgradient, "rgb:18/38/59", black); PTitleBack = (hgradient, "rgb:18/38/59", black); UTitleBack = (hgradient, "rgb:38/58/79", "rgb:26/36/46"); ResizebarBack = (hgradient, "rgb:38/58/79", "rgb:26/36/46"); MenuTitleColor = white; MenuTextColor = white; MenuDisabledColor = "rgb:61/61/61"; MenuTitleBack = (hgradient, "rgb:08/24/38", black); MenuTextBack = (hgradient, "rgb:18/38/59", "rgb:00/14/28"); IconBack = (mdgradient, "rgb:61/51/59", "rgb:38/58/79", black, "rgb:18/38/59"); IconTitleColor = white; IconTitleBack = "#0c1c2c"; MenuStyle = normal; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Styles/NightSky.style������������������������������������������������0000644�0001750�0001750�00000002353�13431646201�017325� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{ WindowTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTextFont = "Trebuchet MS,sans serif:pixelsize=12"; IconTitleFont = "Arial,sans serif:pixelsize=9"; ClipTitleFont = "Verdana:bold:pixelsize=10"; LargeDisplayFont = "Trebuchet MS,sans serif:pixelsize=24"; TitleJustify = center; HighlightColor = "#ffe0ac"; HighlightTextColor = "#000000"; ClipTitleColor = "#fff38c"; CClipTitleColor = "#718a79"; FTitleColor = "#ffffff"; PTitleColor = "#ffffff"; UTitleColor = gray; FTitleBack = (mhgradient, "#000000", "#3d637f", "#315c77", "#333f3e"); PTitleBack = (mhgradient, "#000000", "#7390aa", "#405e81", "#3d4a59"); UTitleBack = (mhgradient, "#000000", "#595969", "#444661", "#202831"); ResizebarBack = (mhgradient, "#000000", "#494c63", "#444661", "#202841"); MenuTitleColor = "#ffffff"; MenuTextColor = "#ffffff"; MenuDisabledColor = "#9e9a9e"; MenuTitleBack = (mhgradient, "#000000", "#3d637f", "#315c77", "#333f3e"); MenuTextBack = (mhgradient, "#000000", "#494c63", "#444661", "#202841"); IconBack = (mhgradient, "#000000", "#595969", "#444661", "#202831"); IconTitleColor = white; IconTitleBack = "#4d748f"; MenuStyle = normal; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Styles/Autumn.style��������������������������������������������������0000644�0001750�0001750�00000001777�13431646201�017047� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{ WindowTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTextFont = "Trebuchet MS,sans serif:pixelsize=12"; IconTitleFont = "Arial,sans serif:pixelsize=9"; ClipTitleFont = "Verdana:bold:pixelsize=10"; LargeDisplayFont = "Trebuchet MS,sans serif:pixelsize=24"; TitleJustify = center; HighlightColor = white; HighlightTextColor = black; ClipTitleColor = white; CClipTitleColor = gray20; FTitleColor = white; PTitleColor = gray; UTitleColor = white; FTitleBack = (hgradient, darkred, black); PTitleBack = (hgradient, indianred, black); UTitleBack = (hgradient, peru, black); ResizebarBack = (hgradient, peru, black); MenuTitleColor = white; MenuTextColor = white; MenuDisabledColor = gray80; MenuTitleBack = (hgradient, firebrick, black); MenuTextBack = (hgradient, peru, black); IconBack = (dgradient, "#efb573", "#734221"); IconTitleColor = white; IconTitleBack = "#8b0000"; MenuStyle = normal; } �WindowMaker-0.95.9/WindowMaker/Styles/Pink.style����������������������������������������������������0000644�0001750�0001750�00000002001�13431646201�016454� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{ WindowTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTextFont = "Trebuchet MS,sans serif:pixelsize=12"; IconTitleFont = "Arial,sans serif:pixelsize=9"; ClipTitleFont = "Verdana:bold:pixelsize=10"; LargeDisplayFont = "Trebuchet MS,sans serif:pixelsize=24"; TitleJustify = center; HighlightColor = white; HighlightTextColor = black; ClipTitleColor = white; CClipTitleColor = gray20; FTitleColor = gray40; PTitleColor = gray; UTitleColor = gray; FTitleBack = (hgradient, white, pink); PTitleBack = (hgradient, pink, pink2); UTitleBack = (hgradient, pink3, pink4); ResizebarBack = (hgradient, pink3, pink4); MenuTitleColor = white; MenuTextColor = white; MenuDisabledColor = gray60; MenuTitleBack = (hgradient, pink2, pink4); MenuTextBack = (hgradient, pink4, black); IconBack = (dgradient, "rgb:a6/a6/b6", "rgb:51/55/61"); IconTitleColor = gray40; IconTitleBack = "#ffe0e5"; MenuStyle = normal; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Styles/Fire.style����������������������������������������������������0000644�0001750�0001750�00000002762�13431646201�016456� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{ WindowTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTextFont = "Trebuchet MS,sans serif:pixelsize=12"; IconTitleFont = "Arial,sans serif:pixelsize=9"; ClipTitleFont = "Verdana:bold:pixelsize=10"; LargeDisplayFont = "Trebuchet MS,sans serif:pixelsize=24"; TitleJustify = left; HighlightColor = white; HighlightTextColor = black; ClipTitleColor = black; CClipTitleColor = gray30; FTitleColor = black; PTitleColor = white; UTitleColor = gray20; FTitleBack = ( mhgradient, "rgb:c0/29/15", white, white, white, white, white, white, white, white, white, white, white, black, "rgb:c0/29/15", yellow, yellow, "rgb:c0/29/15", "rgb:c0/29/15" ); PTitleBack = (hgradient, "rgb:50/50/50", "rgb:80/80/80"); UTitleBack = (hgradient, "rgb:90/90/90", "rgb:d0/d0/d0"); ResizebarBack = (solid, "#b0b0b0"); MenuTitleColor = black; MenuTextColor = black; MenuDisabledColor = gray40; MenuTitleBack = ( mhgradient, "rgb:c0/29/15", "rgb:c0/29/15", yellow, yellow, "rgb:c0/29/15", black, white, white, white, white, white, white, white, white, white, white, white, white ); MenuTextBack = (hgradient, "rgb:d0/d0/d0", "rgb:80/80/80"); IconBack = (dgradient, "rgb:a6/a6/b6", "rgb:51/55/61"); IconTitleColor = black; IconTitleBack = white; MenuStyle = normal; } ��������������WindowMaker-0.95.9/WindowMaker/Styles/Pumpkin.style�������������������������������������������������0000644�0001750�0001750�00000002063�13431646201�017206� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{ WindowTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTextFont = "Trebuchet MS,sans serif:pixelsize=12"; IconTitleFont = "Arial,sans serif:pixelsize=9"; ClipTitleFont = "Verdana:bold:pixelsize=10"; LargeDisplayFont = "Trebuchet MS,sans serif:pixelsize=24"; TitleJustify = center; HighlightColor = white; HighlightTextColor = black; ClipTitleColor = black; CClipTitleColor = gray30; FTitleColor = white; PTitleColor = gray60; UTitleColor = gray60; FTitleBack = (hgradient, orange2, orange4); PTitleBack = (hgradient, orange4, black); UTitleBack = (hgradient, "rgb:18/38/59", black); ResizebarBack = (hgradient, "rgb:18/38/59", black); MenuTitleColor = white; MenuTextColor = white; MenuDisabledColor = gray60; MenuTitleBack = (hgradient, orange2, orange4); MenuTextBack = (hgradient, "rgb:18/38/59", "rgb:00/14/28"); IconBack = (dgradient, "rgb:a6/a6/b6", "rgb:51/55/61"); IconTitleColor = white; IconTitleBack = "#bd7a00"; MenuStyle = normal; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Styles/DarkRed.style�������������������������������������������������0000644�0001750�0001750�00000002154�13431646201�017100� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{ WindowTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTextFont = "Trebuchet MS,sans serif:pixelsize=12"; IconTitleFont = "Arial,sans serif:pixelsize=9"; ClipTitleFont = "Verdana:bold:pixelsize=10"; LargeDisplayFont = "Trebuchet MS,sans serif:pixelsize=24"; TitleJustify = center; HighlightColor = white; HighlightTextColor = black; ClipTitleColor = black; CClipTitleColor = gray30; FTitleColor = white; PTitleColor = white; UTitleColor = gray20; FTitleBack = (dgradient, "rgb:21/00/05", "rgb:90/00/30"); PTitleBack = (dgradient, "rgb:51/50/55", "rgb:80/80/80"); UTitleBack = (dgradient, "rgb:90/90/90", "rgb:c0/c0/c0"); ResizebarBack = (dgradient, "rgb:90/90/90", "rgb:c0/c0/c0"); MenuTitleColor = white; MenuTextColor = black; MenuDisabledColor = gray40; MenuTitleBack = (dgradient, "rgb:90/00/30", "rgb:21/00/05"); MenuTextBack = (dgradient, "rgb:b0/b0/b0", "rgb:60/60/60"); IconBack = (dgradient, "rgb:a6/a6/b6", "rgb:51/55/61"); IconTitleColor = white; IconTitleBack = white; MenuStyle = normal; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Styles/VioletBlue.style����������������������������������������������0000644�0001750�0001750�00000002062�13431646201�017634� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{ WindowTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTextFont = "Trebuchet MS,sans serif:pixelsize=12"; IconTitleFont = "Arial,sans serif:pixelsize=9"; ClipTitleFont = "Verdana:bold:pixelsize=10"; LargeDisplayFont = "Trebuchet MS,sans serif:pixelsize=24"; TitleJustify = center; HighlightColor = white; HighlightTextColor = black; ClipTitleColor = white; CClipTitleColor = gray20; FTitleColor = white; PTitleColor = gray; UTitleColor = white; FTitleBack = (dgradient, black, mediumorchid4); PTitleBack = (dgradient, mediumorchid4, dodgerblue3); UTitleBack = (dgradient, black, dodgerblue4); ResizebarBack = (dgradient, black, dodgerblue4); MenuTitleColor = white; MenuTextColor = white; MenuDisabledColor = gray60; MenuTitleBack = (dgradient, black, mediumorchid4); MenuTextBack = (dgradient, black, dodgerblue4); IconBack = (dgradient, "rgb:a6/a6/b6", "rgb:51/55/61"); IconTitleColor = white; IconTitleBack = "#3d1b45"; MenuStyle = normal; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Styles/Green.style���������������������������������������������������0000644�0001750�0001750�00000002127�13431646201�016624� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{ WindowTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTextFont = "Trebuchet MS,sans serif:pixelsize=12"; IconTitleFont = "Arial,sans serif:pixelsize=9"; ClipTitleFont = "Verdana:bold:pixelsize=10"; LargeDisplayFont = "Trebuchet MS,sans serif:pixelsize=24"; TitleJustify = center; HighlightColor = white; HighlightTextColor = black; ClipTitleColor = black; CClipTitleColor = gray30; FTitleColor = white; PTitleColor = white; UTitleColor = gray30; FTitleBack = (dgradient, "rgb:28/48/48", "rgb:08/20/20"); PTitleBack = (hgradient, "rgb:50/50/50", "rgb:80/80/80"); UTitleBack = (dgradient, "rgb:90/90/90", "rgb:b0/b0/b5"); ResizebarBack = (solid, "#a0a0a3"); MenuTitleColor = white; MenuTextColor = black; MenuDisabledColor = gray40; MenuTitleBack = (hgradient, "rgb:28/48/48", "rgb:08/20/20"); MenuTextBack = (dgradient, "rgb:b0/b0/b0", "rgb:70/70/70"); IconBack = (dgradient, "rgb:a6/a6/b6", "rgb:51/55/61"); IconTitleColor = white; IconTitleBack = "#183434"; MenuStyle = normal; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Styles/Spring.style��������������������������������������������������0000644�0001750�0001750�00000002167�13431646201�017032� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{ WindowTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTextFont = "Trebuchet MS,sans serif:pixelsize=12"; IconTitleFont = "Arial,sans serif:pixelsize=9"; ClipTitleFont = "Verdana:bold:pixelsize=10"; LargeDisplayFont = "Trebuchet MS,sans serif:pixelsize=24"; HighlightColor = "#ffffff"; HighlightTextColor = "#000000"; ClipTitleColor = black; CClipTitleColor = gray40; FTitleColor = "#ffffff"; PTitleColor = "#ffffff"; UTitleColor = "#303030"; FTitleBack = (mdgradient, "#181818", "#5ba3bf", "#86b8a1"); PTitleBack = (mhgradient, "#5a5c66", "rgb:70/72/7e", "rgb:45/47/4e"); UTitleBack = (mhgradient, "#9e9aa6", "#91a18d", "#b8d4b7"); ResizebarBack = (mhgradient, "#9e9aa6", "#b09fb5", "#86879b"); MenuTitleColor = "#ffffff"; MenuTextColor = "#ffffff"; MenuDisabledColor = "#515151"; MenuTitleBack = (mdgradient, "#181818", "#5ba3bf", "#86b8a1"); MenuTextBack = (mhgradient, "#9e9aa6", "#91a18d", "#b8d4b7"); IconBack = (mdgradient, "#595d61", "#ddc672", "#cea387"); IconTitleColor = white; IconTitleBack = "#18191f"; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Styles/Traditional.style���������������������������������������������0000644�0001750�0001750�00000001731�13431646201�020036� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{ WindowTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTextFont = "Trebuchet MS,sans serif:pixelsize=12"; IconTitleFont = "Arial,sans serif:pixelsize=9"; ClipTitleFont = "Verdana:bold:pixelsize=10"; LargeDisplayFont = "Trebuchet MS,sans serif:pixelsize=24"; TitleJustify = center; HighlightColor = white; HighlightTextColor = black; ClipTitleColor = black; CClipTitleColor = gray20; FTitleColor = white; PTitleColor = white; UTitleColor = black; FTitleBack = (solid, black); PTitleBack = (solid, gray40); UTitleBack = (solid, "rgb:aa/aa/aa"); ResizebarBack = (solid, "rgb:aa/aa/aa"); MenuTitleColor = white; MenuTextColor = black; MenuDisabledColor = gray40; MenuTitleBack = (solid, black); MenuTextBack = (solid, "rgb:aa/aa/aa"); IconBack = (dgradient, "rgb:a6/a6/b6", "rgb:51/55/61"); IconTitleColor = white; IconTitleBack = black; MenuStyle = normal; } ���������������������������������������WindowMaker-0.95.9/WindowMaker/Styles/Emerald.style�������������������������������������������������0000644�0001750�0001750�00000002155�13431646201�017136� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{ WindowTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTextFont = "Trebuchet MS,sans serif:pixelsize=12"; IconTitleFont = "Arial,sans serif:pixelsize=9"; ClipTitleFont = "Verdana:bold:pixelsize=10"; LargeDisplayFont = "Trebuchet MS,sans serif:pixelsize=24"; HighlightColor = "#595d8e"; HighlightTextColor = "#71b6d7"; ClipTitleColor = white; CClipTitleColor = gray60; FTitleColor = "#ffffff"; PTitleColor = "#ffffff"; UTitleColor = "#d7d7d7"; FTitleBack = (mdgradient, "#415979", "#051626", "#7391bb"); PTitleBack = (mdgradient, "#384161", "#212526", "#474a70"); UTitleBack = (mdgradient, "#386569", "#051c26", "#59999f"); ResizebarBack = (mdgradient, "#386569", "#051c26", "#59999f"); MenuTitleColor = "#ffffff"; MenuTextColor = "#ffffff"; MenuDisabledColor = "#aeaeae"; MenuTitleBack = (mdgradient, "#415979", "#051626", "#7391bb"); MenuTextBack = (mdgradient, "#386569", "#051c26", "#59999f"); IconBack = (mdgradient, "#384161", "#212526", "#474a70"); IconTitleColor = white; IconTitleBack = "#18191f"; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Styles/IRednBlue.style�����������������������������������������������0000644�0001750�0001750�00000002350�13431646201�017373� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{ WindowTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTextFont = "Trebuchet MS,sans serif:pixelsize=12"; IconTitleFont = "Arial,sans serif:pixelsize=9"; ClipTitleFont = "Verdana:bold:pixelsize=10"; LargeDisplayFont = "Trebuchet MS,sans serif:pixelsize=24"; TitleJustify = left; HighlightColor = white; HighlightTextColor = black; ClipTitleColor = black; CClipTitleColor = gray30; FTitleColor = white; PTitleColor = white; UTitleColor = gray; FTitleBack = (igradient, "rgb:96/24/49", black, 2, "rgb:30/00/10", black, 1); PTitleBack = (igradient, black, "rgb:49/71/86", 2, black, "rgb:19/41/56", 1); UTitleBack = (igradient, "rgb:30/51/8e", black, 2, black, "rgb:00/0c/00", 1); ResizebarBack = (igradient, black, "rgb:30/51/8e", 1, black, "rgb:00/0c/00", 1); MenuTitleColor = white; MenuTextColor = white; MenuDisabledColor = "rgb:61/61/61"; MenuTitleBack = (igradient,"rgb:96/24/49",black, 2, "rgb:30/00/10", black, 1); MenuTextBack = (igradient, "rgb:30/51/8e", black, 2, black, "rgb:00/0c/00", 1); IconBack = (dgradient, "rgb:a6/a6/b6", "rgb:51/55/61"); IconTitleColor = white; IconTitleBack = "#63122c"; MenuStyle = flat; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Styles/Summer.style��������������������������������������������������0000644�0001750�0001750�00000002200�13431646201�017024� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{ WindowTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTextFont = "Trebuchet MS,sans serif:pixelsize=12"; IconTitleFont = "Arial,sans serif:pixelsize=9"; ClipTitleFont = "Verdana:bold:pixelsize=10"; LargeDisplayFont = "Trebuchet MS,sans serif:pixelsize=24"; TitleJustify = center; HighlightColor = white; HighlightTextColor = black; ClipTitleColor = black; CClipTitleColor = gray30; FTitleColor = "rgb:83/83/56"; PTitleColor = white; UTitleColor = white; FTitleBack = (hgradient, "rgb:ff/ff/87", "rgb:c7/c7/69"); PTitleBack = (hgradient, seagreen2, seagreen4); UTitleBack = (hgradient, "rgb:b5/b5/ef", "rgb:73/73/99"); ResizebarBack = (hgradient, "rgb:b5/b5/ef", "rgb:73/73/99"); MenuTitleColor = "rgb:83/83/56"; MenuTextColor = white; MenuDisabledColor = gray30; MenuTitleBack = (hgradient, "rgb:ff/ff/87", "rgb:c7/c7/69"); MenuTextBack = (hgradient, "rgb:b5/b5/ef", "rgb:73/73/99"); IconBack = (dgradient, "rgb:a6/a6/b6", "rgb:51/55/61"); IconTitleColor = "rgb:83/83/56"; IconTitleBack = "#e3e378"; MenuStyle = normal; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Styles/Black.style���������������������������������������������������0000644�0001750�0001750�00000002042�13431646201�016574� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{ WindowTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTextFont = "Trebuchet MS,sans serif:pixelsize=12"; IconTitleFont = "Arial,sans serif:pixelsize=9"; ClipTitleFont = "Verdana:bold:pixelsize=10"; LargeDisplayFont = "Trebuchet MS,sans serif:pixelsize=24"; TitleJustify = center; HighlightColor = white; HighlightTextColor = black; ClipTitleColor = white; CClipTitleColor = gray60; FTitleColor = white; PTitleColor = white; UTitleColor = gray20; FTitleBack = (hgradient, "rgb:30/32/3e", black); PTitleBack = (hgradient, "rgb:70/72/7e", "rgb:45/47/4e"); UTitleBack = (hgradient, "rgb:a0/a2/ae", "rgb:90/92/9e"); MenuTitleColor = white; MenuTextColor = white; MenuDisabledColor = gray60; MenuTitleBack = (hgradient, "rgb:30/32/3e", black); MenuTextBack = (hgradient, "rgb:50/5a/5e", "rgb:20/2a/2e"); IconBack = (mdgradient, gray40, "rgb:50/5a/5e", "rgb:30/32/3e", "rgb:20/2a/2e"); IconTitleColor = white; IconTitleBack = "#20202e"; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Styles/Brownish.style������������������������������������������������0000644�0001750�0001750�00000001732�13431646201�017360� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{ WindowTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTextFont = "Trebuchet MS,sans serif:pixelsize=12"; IconTitleFont = "Arial,sans serif:pixelsize=9"; ClipTitleFont = "Verdana:bold:pixelsize=10"; LargeDisplayFont = "Trebuchet MS,sans serif:pixelsize=24"; TitleJustify = center; HighlightColor = "#c0b0b0"; HighlightTextColor = "#201010"; ClipTitleColor = white; CClipTitleColor = gray60; FTitleColor = "#f0e0e0"; PTitleColor = "#f0e0e0"; UTitleColor = gray; FTitleBack = (solid, "#a09080"); PTitleBack = (solid, "#908080"); UTitleBack = (solid, "#808090"); ResizebarBack = (solid, "#808090"); MenuTitleColor = "#f0e0e0"; MenuTextColor = "#f0e0e0"; MenuDisabledColor = "#504040"; MenuTitleBack = (solid, "#a09080"); MenuTextBack = (solid, "#908080"); IconBack = (solid, "#809080"); IconTitleColor = white; IconTitleBack = "#446594"; MenuStyle = normal; } ��������������������������������������WindowMaker-0.95.9/WindowMaker/Styles/BlueishGreen.style��������������������������������������������0000644�0001750�0001750�00000002163�13431646201�020140� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{ WindowTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTextFont = "Trebuchet MS,sans serif:pixelsize=12"; IconTitleFont = "Arial,sans serif:pixelsize=9"; ClipTitleFont = "Verdana:bold:pixelsize=10"; LargeDisplayFont = "Trebuchet MS,sans serif:pixelsize=24"; TitleJustify = center; HighlightColor = lightgoldenrod1; HighlightTextColor = black; ClipTitleColor = "rgb:79/96/cf"; CClipTitleColor = "rgb:61/61/61"; FTitleColor = white; PTitleColor = gray; UTitleColor = white; FTitleBack = (hgradient, darkturquoise, "rgb:00/41/42"); PTitleBack = (hgradient, deepskyblue2, deepskyblue4); UTitleBack = (hgradient, deepskyblue4, black); ResizebarBack = (hgradient, deepskyblue4, black); MenuTitleColor = white; MenuTextColor = black; MenuDisabledColor = gray30; MenuTitleBack = (hgradient, deepskyblue4, black); MenuTextBack = (hgradient, darkturquoise, "rgb:00/41/42"); IconBack = (mdgradient, "rgb:18/34/54", "rgb:28/45/69", "rgb:08/24/20"); IconTitleColor = white; IconTitleBack = "#00888a"; MenuStyle = normal; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Styles/GreyBlue.style������������������������������������������������0000644�0001750�0001750�00000002160�13431646201�017277� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{ WindowTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTextFont = "Trebuchet MS,sans serif:pixelsize=12"; IconTitleFont = "Arial,sans serif:pixelsize=9"; ClipTitleFont = "Verdana:bold:pixelsize=10"; LargeDisplayFont = "Trebuchet MS,sans serif:pixelsize=24"; TitleJustify = center; HighlightColor = white; HighlightTextColor = black; ClipTitleColor = black; CClipTitleColor = gray30; FTitleColor = white; PTitleColor = white; UTitleColor = gray20; FTitleBack = (dgradient, "rgb:20/20/70", "rgb:00/00/20"); PTitleBack = (dgradient, "rgb:50/50/50", "rgb:80/80/80"); UTitleBack = (dgradient, "rgb:70/70/70", "rgb:b0/b0/b0"); ResizebarBack = (dgradient, "rgb:70/70/70", "rgb:b0/b0/b0"); MenuTitleColor = white; MenuTextColor = black; MenuDisabledColor = gray40; MenuTitleBack = (dgradient, "rgb:00/00/10", "rgb:20/20/70"); MenuTextBack = (dgradient, "rgb:70/70/70", "rgb:b0/b0/b0"); IconBack = (dgradient, "rgb:a6/a6/b6", "rgb:51/55/61"); IconTitleColor = white; IconTitleBack = "#101048"; MenuStyle = normal; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Styles/NewBlue.style�������������������������������������������������0000644�0001750�0001750�00000002372�13431646201�017127� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{ WindowTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTextFont = "Trebuchet MS,sans serif:pixelsize=12"; IconTitleFont = "Arial,sans serif:pixelsize=9"; ClipTitleFont = "Verdana:bold:pixelsize=10"; LargeDisplayFont = "Trebuchet MS,sans serif:pixelsize=24"; TitleJustify = left; HighlightColor = white; HighlightTextColor = black; ClipTitleColor = black; CClipTitleColor = gray30; FTitleColor = white; PTitleColor = white; UTitleColor = gray20; FTitleBack = ( igradient, "rgb:00/00/10", "rgb:20/20/70", 1, "rgb:20/20/70", "rgb:00/00/10", 1 ); PTitleBack = (hgradient, "rgb:50/50/50", "rgb:80/80/80"); UTitleBack = (hgradient, "rgb:90/90/90", "rgb:c0/c0/c0"); ResizebarBack = (hgradient, "rgb:90/90/90", "rgb:c0/c0/c0"); MenuTitleColor = white; MenuTextColor = black; MenuDisabledColor = gray40; MenuTitleBack = ( igradient, "rgb:00/00/10", "rgb:20/20/70", 1, "rgb:20/20/70", "rgb:00/00/10", 1 ); MenuTextBack = (hgradient, "rgb:c0/c0/c0", "rgb:90/90/90"); IconBack = (dgradient, "rgb:a6/a6/b6", "rgb:51/55/61"); IconTitleColor = white; IconTitleBack = "#101040"; MenuStyle = normal; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Styles/Food.style����������������������������������������������������0000644�0001750�0001750�00000002047�13431646201�016454� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{ WindowTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTextFont = "Trebuchet MS,sans serif:pixelsize=12"; IconTitleFont = "Arial,sans serif:pixelsize=9"; ClipTitleFont = "Verdana:bold:pixelsize=10"; LargeDisplayFont = "Trebuchet MS,sans serif:pixelsize=24"; TitleJustify = center; HighlightColor = white; HighlightTextColor = black; ClipTitleColor = white; CClipTitleColor = gray20; FTitleColor = gray30; PTitleColor = white; UTitleColor = gray; FTitleBack = (hgradient, orange2, orange4); PTitleBack = (hgradient, lightsalmon2, lightsalmon4); UTitleBack = (hgradient, salmon2, salmon4); ResizebarBack = (hgradient, salmon2, salmon4); MenuTitleColor = gray30; MenuTextColor = white; MenuDisabledColor = gray60; MenuTitleBack = (hgradient, orange2, orange4); MenuTextBack = (hgradient, tomato2, tomato4); IconBack = (dgradient, "rgb:a6/a6/b6", "rgb:51/55/61"); IconTitleColor = gray30; IconTitleBack = "#bd7a00"; MenuStyle = normal; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Styles/Golden.style��������������������������������������������������0000644�0001750�0001750�00000002256�13431646201�016777� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{ WindowTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTextFont = "Trebuchet MS,sans serif:pixelsize=12"; IconTitleFont = "Arial,sans serif:pixelsize=9"; ClipTitleFont = "Verdana:bold:pixelsize=10"; LargeDisplayFont = "Trebuchet MS,sans serif:pixelsize=24"; TitleJustify = center; HighlightColor = white; HighlightTextColor = black; ClipTitleColor = black; CClipTitleColor = gray30; FTitleColor = white; PTitleColor = white; UTitleColor = gray20; FTitleBack = ( mdgradient, "rgb:ba/98/76", "rgb:ba/98/76", "rgb:54/32/10", "rgb:7a/58/36" ); PTitleBack = (dgradient, "rgb:64/42/20", "rgb:ca/a8/86"); UTitleBack = (dgradient, "rgb:90/90/90", "rgb:b0/b0/b0"); ResizebarBack = (dgradient, "rgb:90/90/90", "rgb:b0/b0/b0"); MenuTitleColor = white; MenuTextColor = black; MenuDisabledColor = gray40; MenuTitleBack = (dgradient, "rgb:ba/98/76", "rgb:54/32/10"); MenuTextBack = (dgradient, "rgb:b0/b0/b0", "rgb:70/70/70"); IconBack = (dgradient, "rgb:a6/a6/b6", "rgb:51/55/61"); IconTitleColor = white; IconTitleBack = "rgb:ba/98/76"; MenuStyle = normal; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Styles/Purplish.style������������������������������������������������0000644�0001750�0001750�00000001737�13431646201�017400� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{ WindowTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTextFont = "Trebuchet MS,sans serif:pixelsize=12"; IconTitleFont = "Arial,sans serif:pixelsize=9"; ClipTitleFont = "Verdana:bold:pixelsize=10"; LargeDisplayFont = "Trebuchet MS,sans serif:pixelsize=24"; TitleJustify = center; HighlightColor = "#c0c0d0"; HighlightTextColor = "#505070"; ClipTitleColor = black; CClipTitleColor = gray30; FTitleColor = "#804040"; PTitleColor = "#f0e0e0"; UTitleColor = "#706070"; FTitleBack = (solid, "#b08080"); PTitleBack = (solid, "#908080"); UTitleBack = (solid, "#a090a0"); ResizebarBack = (solid, "#808090"); MenuTitleColor = "#804040"; MenuTextColor = "#505060"; MenuDisabledColor = "#707080"; MenuTitleBack = (solid, "#b08080"); MenuTextBack = (solid, "#9090a0"); IconBack = (solid, "#909080"); IconTitleColor = white; IconTitleBack = "#446594"; MenuStyle = normal; } ���������������������������������WindowMaker-0.95.9/WindowMaker/Styles/LightBlue.style�����������������������������������������������0000644�0001750�0001750�00000002151�13431646201�017440� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{ WindowTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTextFont = "Trebuchet MS,sans serif:pixelsize=12"; IconTitleFont = "Arial,sans serif:pixelsize=9"; ClipTitleFont = "Verdana:bold:pixelsize=10"; LargeDisplayFont = "Trebuchet MS,sans serif:pixelsize=24"; TitleJustify = center; HighlightColor = white; HighlightTextColor = black; ClipTitleColor = black; CClipTitleColor = gray30; FTitleColor = white; PTitleColor = white; UTitleColor = black; FTitleBack = (hgradient, "rgb:41/8a/ef", "rgb:20/49/8e"); PTitleBack = (hgradient, "rgb:41/eb/ef", "rgb:28/92/79"); UTitleBack = (hgradient, lightskyblue1, lightskyblue4); ResizebarBack = (hgradient, lightskyblue1, lightskyblue4); MenuTitleColor = white; MenuTextColor = black; MenuDisabledColor = gray40; MenuTitleBack = (hgradient, "rgb:41/8a/ef", "rgb:20/49/8e"); MenuTextBack = (hgradient, lightskyblue1, lightskyblue4); IconBack = (dgradient, "rgb:a6/a6/b6", "rgb:51/55/61"); IconTitleColor = white; IconTitleBack = "#3069bf"; MenuStyle = normal; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Styles/Copper.style��������������������������������������������������0000644�0001750�0001750�00000002220�13431646201�017006� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{ WindowTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTextFont = "Trebuchet MS,sans serif:pixelsize=12"; IconTitleFont = "Arial,sans serif:pixelsize=9"; ClipTitleFont = "Verdana:bold:pixelsize=10"; LargeDisplayFont = "Trebuchet MS,sans serif:pixelsize=24"; TitleJustify = center; HighlightColor = white; HighlightTextColor = black; ClipTitleColor = "rgb:79/96/cf"; CClipTitleColor = "rgb:61/61/61"; FTitleColor = white; PTitleColor = white; UTitleColor = gray; FTitleBack = (dgradient, "rgb:90/69/8e", "rgb:18/00/00"); PTitleBack = (dgradient, "rgb:50/29/4e", "rgb:00/00/00"); UTitleBack = (dgradient, "rgb:59/6d/8e", "rgb:00/00/00"); ResizebarBack = (dgradient, "rgb:59/6d/8e", "rgb:00/00/00"); MenuTitleColor = white; MenuTextColor = white; MenuDisabledColor = gray60; MenuTitleBack = (dgradient, "rgb:90/69/8e", "rgb:18/00/00"); MenuTextBack = (dgradient, "rgb:38/10/10", "rgb:8e/59/7e"); IconBack = (mdgradient, "rgb:18/34/54", "rgb:28/45/69", "rgb:08/24/20"); IconTitleColor = white; IconTitleBack = "#543447"; MenuStyle = normal; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Styles/Gtk.style�����������������������������������������������������0000644�0001750�0001750�00000001754�13431646201�016316� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{ WindowTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTextFont = "Trebuchet MS,sans serif:pixelsize=12"; IconTitleFont = "Arial,sans serif:pixelsize=9"; ClipTitleFont = "Verdana:bold:pixelsize=10"; LargeDisplayFont = "Trebuchet MS,sans serif:pixelsize=24"; TitleJustify = center; HighlightColor = blue; HighlightTextColor = white; ClipTitleColor = white; CClipTitleColor = gray20; FTitleColor = white; PTitleColor = black; UTitleColor = darkblue; FTitleBack = (solid, darkblue); PTitleBack = (solid, "rgb:d5/d6/d5"); UTitleBack = (solid, "rgb:d5/d6/d5"); ResizebarBack = (solid, "rgb:d5/d6/d5"); MenuTitleColor = white; MenuTextColor = black; MenuDisabledColor = gray40; MenuTitleBack = (solid, darkblue); MenuTextBack = (solid, "rgb:d5/d6/d5"); IconBack = (dgradient, "rgb:a6/a6/b6", "rgb:51/55/61"); IconTitleColor = white; IconTitleBack = darkblue; MenuStyle = normal; } ��������������������WindowMaker-0.95.9/WindowMaker/Styles/BlueDawn.style������������������������������������������������0000644�0001750�0001750�00000003060�13431646201�017262� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{ WindowTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTextFont = "Trebuchet MS,sans serif:pixelsize=12"; IconTitleFont = "Arial,sans serif:pixelsize=9"; ClipTitleFont = "Verdana:bold:pixelsize=10"; LargeDisplayFont = "Trebuchet MS,sans serif:pixelsize=24"; TitleJustify = left; HighlightColor = white; HighlightTextColor = black; ClipTitleColor = "rgb:79/96/cf"; CClipTitleColor = "rgb:61/61/61"; FTitleColor = white; PTitleColor = white; UTitleColor = "rgb:79/96/cf"; FTitleBack = ( mhgradient, "rgb:18/2c/70", "rgb:18/2c/70", "rgb:49/69/c7", "rgb:79/a2/d0", "rgb:96/d7/e7" ); PTitleBack = (hgradient, "rgb:08/18/38", "rgb:28/3c/49"); UTitleBack = ( mhgradient, "rgb:18/2c/41", "rgb:18/2c/41", "rgb:08/18/38", "rgb:28/3c/49", "rgb:28/45/50" ); ResizebarBack = ( mhgradient, "rgb:18/2c/41", "rgb:18/2c/41", "rgb:08/18/38", "rgb:28/3c/49", "rgb:28/45/50" ); MenuTitleColor = white; MenuTextColor = black; MenuDisabledColor = gray; MenuTitleBack = ( mhgradient, "rgb:18/2c/70", "rgb:79/a2/d0", "rgb:28/45/96", "rgb:18/2c/41" ); MenuTextBack = ( mhgradient, "rgb:18/2c/70", "rgb:28/45/96", "rgb:79/a2/d0", "rgb:96/d7/e7" ); IconBack = ( mdgradient, "rgb:58/74/94", "rgb:79/a2/d0", "rgb:28/45/96", "rgb:20/24/4a", "rgb:20/24/4a" ); IconTitleColor = white; IconTitleBack = "rgb:18/2c/70"; MenuStyle = normal; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Styles/BlackTexture.style��������������������������������������������0000644�0001750�0001750�00000002335�13431646201�020162� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{ WindowTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTextFont = "Trebuchet MS,sans serif:pixelsize=12"; IconTitleFont = "Arial,sans serif:pixelsize=9"; ClipTitleFont = "Verdana:bold:pixelsize=10"; LargeDisplayFont = "Trebuchet MS,sans serif:pixelsize=24"; TitleJustify = center; HighlightColor = white; HighlightTextColor = black; ClipTitleColor = white; CClipTitleColor = gray60; FTitleColor = white; PTitleColor = white; UTitleColor = gray20; FTitleBack = (thgradient, BlueImage.jpeg, 140, "rgb:30/32/3e", black); PTitleBack = (thgradient, BlueImage.jpeg, 140, "rgb:70/72/7e", "rgb:45/47/4e"); UTitleBack = (thgradient, BlueImage.jpeg, 100, white, "rgb:9e/94/80"); ResizebarBack = (thgradient, BlueImage.jpeg, 100, white, "rgb:9e/94/80"); MenuTitleColor = white; MenuTextColor = white; MenuDisabledColor = gray60; MenuTitleBack = (thgradient, BlueImage.jpeg, 140, "rgb:30/32/3e", black); MenuTextBack = (thgradient, BlueImage.jpeg, 140, "rgb:50/5a/5e", "rgb:20/2a/2e"); IconBack = (tdgradient, BlueImage.jpeg, 140, "rgb:30/32/3e", black); IconTitleColor = white; IconTitleBack = "#20202e"; MenuStyle = normal; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Styles/Chumbo.style��������������������������������������������������0000644�0001750�0001750�00000002220�13431646201�016773� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{ WindowTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTextFont = "Trebuchet MS,sans serif:pixelsize=12"; IconTitleFont = "Arial,sans serif:pixelsize=9"; ClipTitleFont = "Verdana:bold:pixelsize=10"; LargeDisplayFont = "Trebuchet MS,sans serif:pixelsize=24"; TitleJustify = center; HighlightColor = white; HighlightTextColor = black; ClipTitleColor = "rgb:79/96/cf"; CClipTitleColor = "rgb:61/61/61"; FTitleColor = white; PTitleColor = white; UTitleColor = gray; FTitleBack = (hgradient, "rgb:79/a2/cf", "rgb:20/34/41"); PTitleBack = (hgradient, "rgb:70/82/af", "rgb:00/00/00"); UTitleBack = (hgradient, "rgb:59/6d/8e", "rgb:00/00/00"); ResizebarBack = (hgradient, "rgb:59/6d/8e", "rgb:00/00/00"); MenuTitleColor = white; MenuTextColor = white; MenuDisabledColor = gray60; MenuTitleBack = (hgradient, "rgb:79/a2/cf", "rgb:20/34/41"); MenuTextBack = (hgradient, "rgb:59/6d/8e", "rgb:00/00/00"); IconBack = (mdgradient, "rgb:18/34/54", "rgb:28/45/69", "rgb:08/24/20"); IconTitleColor = white; IconTitleBack = "#4c6b88"; MenuStyle = normal; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Styles/RednBlue.style������������������������������������������������0000644�0001750�0001750�00000002166�13431646201�017267� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{ WindowTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTextFont = "Trebuchet MS,sans serif:pixelsize=12"; IconTitleFont = "Arial,sans serif:pixelsize=9"; ClipTitleFont = "Verdana:bold:pixelsize=10"; LargeDisplayFont = "Trebuchet MS,sans serif:pixelsize=24"; TitleJustify = center; HighlightColor = white; HighlightTextColor = black; ClipTitleColor = black; CClipTitleColor = gray30; FTitleColor = white; PTitleColor = white; UTitleColor = gray; FTitleBack = (hgradient, "rgb:96/24/49", "rgb:30/00/10"); PTitleBack = (hgradient, "rgb:49/71/86", "rgb:19/41/56"); UTitleBack = (hgradient, "rgb:30/51/8e", "rgb:00/0c/00"); ResizebarBack = (hgradient, "rgb:30/51/8e", "rgb:00/0c/00"); MenuTitleColor = white; MenuTextColor = white; MenuDisabledColor = "rgb:61/61/61"; MenuTitleBack = (hgradient, "rgb:96/24/49", "rgb:30/00/10"); MenuTextBack = (hgradient, "rgb:30/51/8e", "rgb:00/0c/00"); IconBack = (dgradient, "rgb:a6/a6/b6", "rgb:51/55/61"); IconTitleColor = white; IconTitleBack = "#63122c"; MenuStyle = normal; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Styles/Makefile.am���������������������������������������������������0000644�0001750�0001750�00000001225�13642357774�016556� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ prefsdatadir = $(pkgdatadir)/Styles prefsdata_DATA =\ Adwaita.style\ Autumn.style\ Black.style\ BlackTexture.style\ Blue.style\ BlueDawn.style\ BlueishGreen.style\ Brown.style\ Brownish.style\ Chumbo.style\ Copper.style\ DarkBlue.style\ DarkRed.style\ Emerald.style\ Fire.style\ Food.style\ Golden.style\ Green.style\ GreyBlue.style\ Gtk.style\ Interlace.style\ IRednBlue.style\ LightBlue.style\ NewBlue.style\ NightSky.style\ Pastel.style\ Pink.style\ Pumpkin.style\ Purple.style\ Purplish.style\ Red.style\ RednBlue.style\ Spring.style\ Summer.style\ Traditional.style\ VioletBlue.style EXTRA_DIST = $(prefsdata_DATA) ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Styles/Pastel.style��������������������������������������������������0000644�0001750�0001750�00000002101�13431646201�017004� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{ WindowTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTextFont = "Trebuchet MS,sans serif:pixelsize=12"; IconTitleFont = "Arial,sans serif:pixelsize=9"; ClipTitleFont = "Verdana:bold:pixelsize=10"; LargeDisplayFont = "Trebuchet MS,sans serif:pixelsize=24"; TitleJustify = center; HighlightColor = white; HighlightTextColor = black; ClipTitleColor = black; CClipTitleColor = gray30; FTitleColor = gray30; PTitleColor = white; UTitleColor = gray30; FTitleBack = (hgradient, PaleTurquoise3, PaleTurquoise4); PTitleBack = (hgradient, pink, pink4); UTitleBack = (hgradient, cornsilk2, cornsilk4); ResizebarBack = (hgradient, cornsilk2, cornsilk4); MenuTitleColor = gray30; MenuTextColor = gray30; MenuDisabledColor = gray50; MenuTitleBack = (hgradient, lightyellow2, lightyellow4); MenuTextBack = (hgradient, slategray2, slategray4); IconBack = (dgradient, "rgb:a6/a6/b6", "rgb:51/55/61"); IconTitleColor = gray30; IconTitleBack = "#7eacac"; MenuStyle = normal; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Styles/Purple.style��������������������������������������������������0000644�0001750�0001750�00000002113�13431646201�017026� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{ WindowTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTextFont = "Trebuchet MS,sans serif:pixelsize=12"; IconTitleFont = "Arial,sans serif:pixelsize=9"; ClipTitleFont = "Verdana:bold:pixelsize=10"; LargeDisplayFont = "Trebuchet MS,sans serif:pixelsize=24"; TitleJustify = center; HighlightColor = white; HighlightTextColor = black; ClipTitleColor = white; CClipTitleColor = gray20; FTitleColor = white; PTitleColor = gray; UTitleColor = gray; FTitleBack = (hgradient, mediumpurple2, "rgb:43/33/64"); PTitleBack = (hgradient, mediumpurple3, mediumpurple4); UTitleBack = (hgradient, mediumpurple4, black); ResizebarBack = (hgradient, mediumpurple4, black); MenuTitleColor = white; MenuTextColor = white; MenuDisabledColor = gray60; MenuTitleBack = (hgradient, mediumpurple2, "rgb:43/33/64"); MenuTextBack = (hgradient, mediumpurple4, black); IconBack = (dgradient, "rgb:a6/a6/b6", "rgb:51/55/61"); IconTitleColor = white; IconTitleBack = "#7156a9"; MenuStyle = normal; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Styles/Red.style�����������������������������������������������������0000644�0001750�0001750�00000002155�13431646201�016277� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{ WindowTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTextFont = "Trebuchet MS,sans serif:pixelsize=12"; IconTitleFont = "Arial,sans serif:pixelsize=9"; ClipTitleFont = "Verdana:bold:pixelsize=10"; LargeDisplayFont = "Trebuchet MS,sans serif:pixelsize=24"; TitleJustify = left; HighlightColor = white; HighlightTextColor = black; ClipTitleColor = black; CClipTitleColor = gray30; FTitleColor = white; PTitleColor = white; UTitleColor = black; FTitleBack = (hgradient, "rgb:21/00/05", "rgb:90/00/30"); PTitleBack = (hgradient, "rgb:51/50/55", "rgb:80/80/80"); UTitleBack = (hgradient, "rgb:90/90/90", "rgb:c0/c0/c0"); ResizebarBack = (hgradient, "rgb:90/90/90", "rgb:c0/c0/c0"); MenuTitleColor = white; MenuTextColor = black; MenuDisabledColor = gray40; MenuTitleBack = (hgradient, "rgb:90/00/30", "rgb:21/00/05"); MenuTextBack = (hgradient, "rgb:c0/c0/c0", "rgb:90/90/90"); IconBack = (dgradient, "rgb:a6/a6/b6", "rgb:51/55/61"); IconTitleColor = white; IconTitleBack = "#58001a"; MenuStyle = normal; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/Styles/Blue.style����������������������������������������������������0000644�0001750�0001750�00000002156�13431646201�016455� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������{ WindowTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTitleFont = "Trebuchet MS,sans serif:bold:pixelsize=12"; MenuTextFont = "Trebuchet MS,sans serif:pixelsize=12"; IconTitleFont = "Arial,sans serif:pixelsize=9"; ClipTitleFont = "Verdana:bold:pixelsize=10"; LargeDisplayFont = "Trebuchet MS,sans serif:pixelsize=24"; TitleJustify = left; HighlightColor = white; HighlightTextColor = black; ClipTitleColor = black; CClipTitleColor = gray30; FTitleColor = white; PTitleColor = white; UTitleColor = gray20; FTitleBack = (hgradient, "rgb:00/00/10", "rgb:20/20/70"); PTitleBack = (hgradient, "rgb:50/50/50", "rgb:80/80/80"); UTitleBack = (hgradient, "rgb:90/90/90", "rgb:c0/c0/c0"); ResizebarBack = (hgradient, "rgb:90/90/90", "rgb:c0/c0/c0"); MenuTitleColor = white; MenuTextColor = black; MenuDisabledColor = gray40; MenuTitleBack = (hgradient, "rgb:20/20/70", "rgb:00/00/20"); MenuTextBack = (hgradient, "rgb:c0/c0/c0", "rgb:90/90/90"); IconBack = (dgradient, "rgb:a6/a6/b6", "rgb:51/55/61"); IconTitleColor = white; IconTitleBack = "#101040"; MenuStyle = normal; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/plmenu.bg.in���������������������������������������������������������0000644�0001750�0001750�00000012313�13431646201�015434� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������("Приложения", ("Инфо", ("Информационен панел...", INFO_PANEL), ("Лицензионен панел...", LEGAL_PANEL), ("Системна конзола", EXEC, "xconsole"), ("Натоварване на системата", SHEXEC, "xosview || xload"), ("Списък на процесите", EXEC, "xterm -e top"), ("Ръководства", EXEC, "xman") ), ("Стартирай...", SHEXEC, "%a(Run,Въведете команда, която да се стартира:)"), ("XTerm", EXEC, "xterm -sb"), ("Rxvt", EXEC, "rxvt -bg black -fg white -fn fixed"), ("Работни места", WORKSPACE_MENU), ("Приложения", ("Графични", ("Gimp", SHEXEC, "gimp >/dev/null"), ("XV", EXEC, "xv"), ("XPaint", EXEC, "xpaint"), ("XFig", EXEC, "xfig") ), ("X File Manager", EXEC, "xfm"), ("OffiX Files", EXEC, "files"), ("LyX", EXEC, "lyx"), ("Netscape", EXEC, "netscape"), ("Ghostview", EXEC, "ghostview %a(Enter file to view)"), ("Acrobat", EXEC, "/usr/local/Acrobat3/bin/acroread %a(Enter PDF to view)"), ("TkDesk", EXEC, "tkdesk") ), ("Редактори", ("XFte", EXEC, "xfte"), ("XEmacs", SHEXEC, "xemacs || emacs"), ("XJed", EXEC, "xjed"), ("NEdit", EXEC, "nedit"), ("Xedit", EXEC, "xedit"), ("VI", EXEC, "xterm -e vi") ), ("Разни", ("Xmcd", SHEXEC, "xmcd 2> /dev/null"), ("Xplaycd", EXEC, "xplaycd"), ("Xmixer", EXEC, "xmixer") ), ("Инструменти", ("Калкулатор", EXEC, "xcalc"), ("Свойства на прозореца", SHEXEC, "xprop | xmessage -center -title 'xprop' -file -"), ("Избор на шрифт", EXEC, "xfontsel"), ("Емулатор на терминал", EXEC, "xminicom"), ("Лупа", EXEC, "xmag"), ("Цветна палитра", EXEC, "xcmap"), ("XKill", EXEC, "xkill"), ("ASClock", EXEC, "asclock -shape"), ("Clipboard", EXEC, "xclipboard") ), ("Избор", ("Copy", SHEXEC, "echo '%s' | wxcopy"), ("Mail To", EXEC, "xterm -name mail -T Pine -e pine %s"), ("Navigate", EXEC, "netscape %s"), ("Search in Manual", EXEC, "MANUAL_SEARCH(%s)") ), ("Работно място", ("Скрий другите", HIDE_OTHERS), ("Покажи всички", SHOW_ALL), ("Подреди иконките", ARRANGE_ICONS), ("Опресни", REFRESH), ("Заключи", EXEC, "xlock -allowroot -usefirst"), ("Запази сесията", SAVE_SESSION), ("Изчисти запазената сесия", CLEAR_SESSION) ), ("Изглед", ("Теми", OPEN_MENU, "-noext #wmdatadir#/Themes $HOME/GNUstep/Library/WindowMaker/Themes WITH setstyle"), ("Стилове", OPEN_MENU, "-noext #wmdatadir#/Styles $HOME/GNUstep/Library/WindowMaker/Styles WITH setstyle"), ("Колекции иконки", OPEN_MENU, "-noext #wmdatadir#/IconSets $HOME/GNUstep/Library/WindowMaker/IconSets WITH seticons"), ("Фон", ("Плътен", ("Черен", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, black)'"), ("Син", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#505075\")'"), ("Тъмнолилав", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#243e6c\")'"), ("Ясно синьо", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#180090\")'"), ("Мораво", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#554466\")'"), ("Пшенично", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, wheat4)'"), ("Тъмно сиво", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#333340\")'"), ("Винено", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, \"#400020\")'") ), ("Градиент", ("Слънце", EXEC, "wdwrite WindowMaker WorkspaceBack '(mvgradient, deepskyblue4, black, deepskyblue4, tomato4)'"), ("Небе", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, blue4, white)'"), ("Сини сенки", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#7080a5\", \"#101020\")'"), ("Лилави сенки", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#746ebc\", \"#242e4c\")'"), ("Морави сенки", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#654c66\", \"#151426\")'"), ("Пшенични сенки", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#a09060\", \"#302010\")'"), ("Сиви сенки", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#636380\", \"#131318\")'"), ("Винени сенки", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#600040\", \"#180010\")'") ), ("Изображения", OPEN_MENU, "-noext #wmdatadir#/Backgrounds $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t") ), ("Запази темата", SHEXEC, "getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/\"%a(Theme name)\""), ("Запази колекцията иконки", SHEXEC, "geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/\"%a(IconSet name)\""), ("Пособие за настройки", EXEC, "#wprefs#") ), ("Изход", ("Рестартиране", RESTART), ("Стартирай BlackBox", RESTART, blackbox), ("Стартирай kwm", RESTART, kwm), ("Стартирай IceWM", RESTART, icewm), ("Изход...", EXIT) ) ) ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/background.menu.nl���������������������������������������������������0000644�0001750�0001750�00000003202�13642357774�016651� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "wmmacros" "Achtergrond" MENU "Effen" MENU "Zwart" WS_BACK '(solid, black)' "Blauw" WS_BACK '(solid, "#505075")' "Indigo" WS_BACK '(solid, "#243e6c")' "Marineblauw" WS_BACK '(solid, "#224477")' "Diepblauw" WS_BACK '(solid, "#180090")' "Purper" WS_BACK '(solid, "#554466")' "Tarwe" WS_BACK '(solid, "wheat4")' "Donkergrijs" WS_BACK '(solid, "#333340")' "Wijnrood" WS_BACK '(solid, "#400020")' "Effen" END "Kleurverloop" MENU "Zonsondergang" WS_BACK '(mvgradient, deepskyblue4, black, deepskyblue4, tomato4)' "Lucht" WS_BACK '(vgradient, blue4, white)' "Blauwtinten" WS_BACK '(vgradient, "#7080a5", "#101020")' "Indigotinten" WS_BACK '(vgradient, "#746ebc", "#242e4c")' "Purpertinten" WS_BACK '(vgradient, "#654c66", "#151426")' "Tarwetinten" WS_BACK '(vgradient, "#a09060", "#302010")' "Grijstinten" WS_BACK '(vgradient, "#636380", "#131318")' "Wijnroodtinten" WS_BACK '(vgradient, "#600040", "#180010")' "Kleurverloop" END "Afbeeldingen" MENU "Getegeld" OPEN_MENU BACKGROUNDS_DIR USER_BACKGROUNDS_DIR WITH wmsetbg -u -t "Geschaald" OPEN_MENU BACKGROUNDS_DIR USER_BACKGROUNDS_DIR WITH wmsetbg -u -s "Gecentreerd" OPEN_MENU BACKGROUNDS_DIR USER_BACKGROUNDS_DIR WITH wmsetbg -u -e "Gemaximaliseerd" OPEN_MENU BACKGROUNDS_DIR USER_BACKGROUNDS_DIR WITH wmsetbg -u -a "Opgevuld" OPEN_MENU BACKGROUNDS_DIR USER_BACKGROUNDS_DIR WITH wmsetbg -u -f "Afbeeldingen" END "Achtergrond" END ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WindowMaker/menu.in��������������������������������������������������������������0000644�0001750�0001750�00000015302�13642357774�014534� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Root Menu definition for WindowMaker * * Syntax is: * * <Title> [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 * $HOME/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 * SHEXEC <command> - executes a shell command (like gimp > /dev/null) * 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 its stdout to construct menu. * // Command's output must be a valid menu description. * // The space between '|' and command itself is optional. * // Use '||' instead of '|' if you want the menu to always update * // when opened. It might be slow. * OPEN_MENU | command * OPEN_MENU || command * 3. Directory handling. * // Opens one or more directories and constructs 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 constructs 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 * * // Use #usergnusteppath# as a placeholder for the path to the user * // GNUstep directory. Window Maker will replace this with the value * // of WMAKER_USER_ROOT, if this environment variable is set, or * // "~/GNUstep" otherwise * * <Parameters> is the program to execute. * * ** Options for command line in EXEC: * %s - substitute with current selection * %a(title[,prompt]) - opens an 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 * %W - substitute with the number of the current workspace * * 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 $HOME/bin/X11 * // set some background images * "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 */ #include "wmmacros" "Applications" MENU "Info" MENU "Info Panel" INFO_PANEL "Legal" LEGAL_PANEL "System Console" EXEC xconsole "System Load" SHEXEC xosview || xload "Process List" EXEC xterm -e top "Manual Browser" EXEC xman "Info" END "Run..." SHEXEC %a(Run,Type command to run:) "XTerm" EXEC xterm -sb "Mozilla Firefox" EXEC firefox "Workspaces" WORKSPACE_MENU "Applications" MENU "Gimp" SHEXEC gimp >/dev/null "Ghostview" EXEC ghostview %a(GhostView,Enter file to view) "Xpdf" EXEC xpdf %a(Xpdf,Enter PDF to view) "Abiword" EXEC abiword "Dia" EXEC dia "OpenOffice.org" MENU "OpenOffice.org" EXEC ooffice "Writer" EXEC oowriter "Spreadsheet" EXEC oocalc "Draw" EXEC oodraw "Impress" EXEC ooimpress "OpenOffice.org" END "Editors" MENU "XEmacs" EXEC xemacs "Emacs" EXEC emacs "XJed" EXEC xjed "VI" EXEC xterm -e vi "GVIM" EXEC gvim "NEdit" EXEC nedit "Xedit" EXEC xedit "Editors" END "Multimedia" MENU "XMMS" MENU "XMMS" EXEC xmms "XMMS play/pause" EXEC xmms -t "XMMS stop" EXEC xmms -s "XMMS" END "Xine video player" EXEC xine "MPlayer" EXEC mplayer "Multimedia" END "Applications" END "Utils" MENU "Calculator" EXEC xcalc "Window Properties" SHEXEC xprop | xmessage -center -title 'xprop' -file - "Font Chooser" EXEC xfontsel "Magnify" EXEC wmagnify "Colormap" EXEC xcmap "Kill X Application" EXEC xkill "Utils" END "Selection" MENU "Copy" SHEXEC echo '%s' | wxcopy "Mail To" EXEC xterm -name mail -T "Pine" -e pine %s "Navigate" EXEC netscape %s "Search in Manual" SHEXEC MANUAL_SEARCH(%s) "Selection" END "Commands" MENU "Hide Others" HIDE_OTHERS "Show All" SHOW_ALL "Arrange Icons" ARRANGE_ICONS "Refresh" REFRESH "Lock" EXEC xlock -allowroot -usefirst "Commands" END "Appearance" OPEN_MENU "appearance.menu" "Session" MENU "Save Session" SAVE_SESSION "Clear Session" CLEAR_SESSION "Restart Window Maker" RESTART "Start BlackBox" RESTART blackbox "Start IceWM" RESTART icewm "Exit" EXIT "Session" END "Applications" END ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/COPYING��������������������������������������������������������������������������0000644�0001750�0001750�00000043103�13431646201�012022� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. <one line to give the program's name and a brief idea of what it does.> Copyright (C) <year> <name of author> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. <signature of Ty Coon>, 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/config.h.in����������������������������������������������������������������������0000644�0001750�0001750�00000016341�13642360052�013017� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* config.h.in. Generated from configure.ac by autoheader. */ /* Define to 1 if you have the <bsd/string.h> header file. */ #undef HAVE_BSD_STRING_H /* Define to 1 if you have the <ctype.h> header file. */ #undef HAVE_CTYPE_H /* Define to 1 if you have the `dgettext' function. */ #undef HAVE_DGETTEXT /* Define to 1 if you have the <dlfcn.h> header file. */ #undef HAVE_DLFCN_H /* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ #undef HAVE_DOPRNT /* Define if EXIF can be used */ #undef HAVE_EXIF /* Define to 1 if you have the <fcntl.h> header file. */ #undef HAVE_FCNTL_H /* Defined if the 'float'-typed math function are available (sinf, cosf) */ #undef HAVE_FLOAT_MATHFUNC /* Define to 1 if you have the `gethostname' function. */ #undef HAVE_GETHOSTNAME /* Define to 1 if you have the `gettext' function. */ #undef HAVE_GETTEXT /* Check for inotify */ #undef HAVE_INOTIFY /* Define to 1 if you have the <inttypes.h> header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the <libintl.h> header file. */ #undef HAVE_LIBINTL_H /* defined when the libXmu library was found */ #undef HAVE_LIBXMU /* Define to 1 if you have the <limits.h> header file. */ #undef HAVE_LIMITS_H /* Define to 1 if you have the `mallinfo' function. */ #undef HAVE_MALLINFO /* Define to 1 if you have the <malloc.h> header file. */ #undef HAVE_MALLOC_H /* Define to 1 if you have the <memory.h> header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the `mkstemp' function. */ #undef HAVE_MKSTEMP /* Define to 1 if you have the `poll' function. */ #undef HAVE_POLL /* Define to 1 if you have the <poll.h> header file. */ #undef HAVE_POLL_H /* Define if you have POSIX threads libraries and header files. */ #undef HAVE_PTHREAD /* Have PTHREAD_PRIO_INHERIT. */ #undef HAVE_PTHREAD_PRIO_INHERIT /* defined when GNU's secure_getenv function is available */ #undef HAVE_SECURE_GETENV /* Define to 1 if you have the `select' function. */ #undef HAVE_SELECT /* Define to 1 if you have the `setsid' function. */ #undef HAVE_SETSID /* Define to 1 if you have the <stdint.h> header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the <stdlib.h> header file. */ #undef HAVE_STDLIB_H /* Defined if header "stdnoreturn.h" exists, it defines ISO C11 attribute 'noreturn' and it works */ #undef HAVE_STDNORETURN /* Define to 1 if you have the `strcasecmp' function. */ #undef HAVE_STRCASECMP /* Define to 1 if you have the <strings.h> header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the <string.h> header file. */ #undef HAVE_STRING_H /* Define if strlcpy is available */ #undef HAVE_STRLCAT /* Define to 1 if you have the `strncasecmp' function. */ #undef HAVE_STRNCASECMP /* Define to 1 if you have the `sysconf' function. */ #undef HAVE_SYSCONF /* Check for syslog */ #undef HAVE_SYSLOG /* Define to 1 if you have the <syslog.h> header file. */ #undef HAVE_SYSLOG_H /* Define to 1 if you have the <sys/inotify.h> header file. */ #undef HAVE_SYS_INOTIFY_H /* Define to 1 if you have the <sys/ioctl.h> header file. */ #undef HAVE_SYS_IOCTL_H /* Define to 1 if you have the <sys/stat.h> header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the <sys/types.h> header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */ #undef HAVE_SYS_WAIT_H /* Define to 1 if you have the <unistd.h> header file. */ #undef HAVE_UNISTD_H /* Define to 1 if you have the `vprintf' function. */ #undef HAVE_VPRINTF /* define if your X server has XConvertCase() (set by configure) */ #undef HAVE_XCONVERTCASE /* define if your X server has XInternAtoms() (set by configure) */ #undef HAVE_XINTERNATOMS /* Internationalization (I18N) support (set by configure) */ #undef I18N /* Define to the sub-directory where libtool stores uninstalled libraries. */ #undef LT_OBJDIR /* gettext domain to be used for menu translations */ #undef MENU_TEXTDOMAIN /* defined by configure if the attribute is not defined on your platform */ #undef O_NOFOLLOW /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define to necessary symbol if this constant uses a non-standard name on your system. */ #undef PTHREAD_CREATE_JOINABLE /* Define as the return type of signal handlers (`int' or `void') */ #undef RETSIGTYPE /* defined when the Solaris Xinerama extension was detected */ #undef SOLARIS_XINERAMA /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */ #undef TIME_WITH_SYS_TIME /* define if you want user defined menus for applications */ #undef USER_MENU /* Defined when user did not request to disable animations */ #undef USE_ANIMATIONS /* Define if Boehm GC is to be used */ #undef USE_BOEHM_GC /* whether Drag-and-Drop on the dock should be enabled */ #undef USE_DOCK_XDND /* defined when valid GIF library with header was found */ #undef USE_GIF /* define to support ICCCM protocol for window manager replacement */ #undef USE_ICCCM_WMREPLACE /* defined when valid JPEG library with header was found */ #undef USE_JPEG /* defined when MagickWand library with header was found */ #undef USE_MAGICK /* Defined when used did not request to disable Motif WM hints */ #undef USE_MWM_HINTS /* Define if Pango is to be used */ #undef USE_PANGO /* defined when valid PNG library with header was found */ #undef USE_PNG /* defined when valid RandR library with header was found */ #undef USE_RANDR /* defined when valid TIFF library with header was found */ #undef USE_TIFF /* defined when valid Webp library with header was found */ #undef USE_WEBP /* defined when usable Xinerama library with header was found */ #undef USE_XINERAMA /* defined when valid XPM library with header was found */ #undef USE_XPM /* defined when valid XShape library with header was found */ #undef USE_XSHAPE /* defined when valid XShm library with header was found */ #undef USE_XSHM /* Version number of package */ #undef VERSION /* Defines how to access the value of Pi */ #undef WM_PI /* whether XKB language MODELOCK should be enabled */ #undef XKB_MODELOCK /* Define to 1 if the X Window System is missing or not being used. */ #undef X_DISPLAY_MISSING /* defined if the locale is initialized by X window */ #undef X_LOCALE /* Define to empty if `const' does not conform to ANSI C. */ #undef const /* Define to `__inline__' or `__inline' if that's what the C compiler calls it, or to nothing if 'inline' is not supported under any name. */ #ifndef __cplusplus #undef inline #endif /* Defines the attribute to tell the compiler that a function never returns, if the ISO C11 attribute does not work */ #undef noreturn /* Define to `int' if <sys/types.h> does not define. */ #undef pid_t /* Define to `unsigned int' if <sys/types.h> does not define. */ #undef size_t #include "config-paths.h" �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/missing��������������������������������������������������������������������������0000755�0001750�0001750�00000015336�13642360053�012377� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#! /bin/sh # Common wrapper for a few potentially missing GNU programs. scriptversion=2018-03-07.03; # UTC # Copyright (C) 1996-2018 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see <https://www.gnu.org/licenses/>. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try '$0 --help' for more information" exit 1 fi case $1 in --is-lightweight) # Used by our autoconf macros to check whether the available missing # script is modern enough. exit 0 ;; --run) # Back-compat with the calling convention used by older automake. shift ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due to PROGRAM being missing or too old. Options: -h, --help display this help and exit -v, --version output version information and exit Supported PROGRAM values: aclocal autoconf autoheader autom4te automake makeinfo bison yacc flex lex help2man Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 'g' are ignored when checking the name. Send bug reports to <bug-automake@gnu.org>." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: unknown '$1' option" echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac # Run the given program, remember its exit status. "$@"; st=$? # If it succeeded, we are done. test $st -eq 0 && exit 0 # Also exit now if we it failed (or wasn't found), and '--version' was # passed; such an option is passed most likely to detect whether the # program is present and works. case $2 in --version|--help) exit $st;; esac # Exit code 63 means version mismatch. This often happens when the user # tries to use an ancient version of a tool on a file that requires a # minimum version. if test $st -eq 63; then msg="probably too old" elif test $st -eq 127; then # Program was missing. msg="missing on your system" else # Program was found and executed, but failed. Give up. exit $st fi perl_URL=https://www.perl.org/ flex_URL=https://github.com/westes/flex gnu_software_URL=https://www.gnu.org/software program_details () { case $1 in aclocal|automake) echo "The '$1' program is part of the GNU Automake package:" echo "<$gnu_software_URL/automake>" echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/autoconf>" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; autoconf|autom4te|autoheader) echo "The '$1' program is part of the GNU Autoconf package:" echo "<$gnu_software_URL/autoconf/>" echo "It also requires GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; esac } give_advice () { # Normalize program name to check for. normalized_program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` printf '%s\n' "'$1' is $msg." configure_deps="'configure.ac' or m4 files included by 'configure.ac'" case $normalized_program in autoconf*) echo "You should only need it if you modified 'configure.ac'," echo "or m4 files included by it." program_details 'autoconf' ;; autoheader*) echo "You should only need it if you modified 'acconfig.h' or" echo "$configure_deps." program_details 'autoheader' ;; automake*) echo "You should only need it if you modified 'Makefile.am' or" echo "$configure_deps." program_details 'automake' ;; aclocal*) echo "You should only need it if you modified 'acinclude.m4' or" echo "$configure_deps." program_details 'aclocal' ;; autom4te*) echo "You might have modified some maintainer files that require" echo "the 'autom4te' program to be rebuilt." program_details 'autom4te' ;; bison*|yacc*) echo "You should only need it if you modified a '.y' file." echo "You may want to install the GNU Bison package:" echo "<$gnu_software_URL/bison/>" ;; lex*|flex*) echo "You should only need it if you modified a '.l' file." echo "You may want to install the Fast Lexical Analyzer package:" echo "<$flex_URL>" ;; help2man*) echo "You should only need it if you modified a dependency" \ "of a man page." echo "You may want to install the GNU Help2man package:" echo "<$gnu_software_URL/help2man/>" ;; makeinfo*) echo "You should only need it if you modified a '.texi' file, or" echo "any other file indirectly affecting the aspect of the manual." echo "You might want to install the Texinfo package:" echo "<$gnu_software_URL/texinfo/>" echo "The spurious makeinfo call might also be the consequence of" echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" echo "want to install GNU make:" echo "<$gnu_software_URL/make/>" ;; *) echo "You might have modified some files without having the proper" echo "tools for further handling them. Check the 'README' file, it" echo "often tells you about the needed prerequisites for installing" echo "this package. You may also peek at any GNU archive site, in" echo "case some other package contains this missing '$1' program." ;; esac } give_advice "$1" | sed -e '1s/^/WARNING: /' \ -e '2,$s/^/ /' >&2 # Propagate the correct exit status (expected to be 127 for a program # not found, 63 for a program that failed due to version mismatch). exit $st # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/autogen.sh�����������������������������������������������������������������������0000755�0001750�0001750�00000001530�13431646201�012766� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh # Generate the documentation about compiling Window Maker ./script/generate-txt-from-texi.sh "doc/build/Compilation.texi" -o "INSTALL-WMAKER" ./script/generate-txt-from-texi.sh "doc/build/Translations.texi" -o "README.i18n" # Change date of the files to the past so they will be regenerated by 'make' touch -d '2000-01-01' INSTALL-WMAKER README.i18n # Generate the configure script from the 'configure.ac' autoreconf -vfi -I m4 exit 0 if [ -x config.status -a -z "$*" ]; then ./config.status --recheck else if test -z "$*"; then echo "I am going to run ./configure with no arguments - if you wish " echo "to pass any to it, please specify them on the $0 command line." echo "If you do not wish to run ./configure, press Ctrl-C now." trap 'echo "configure aborted" ; exit 0' 1 2 15 sleep 1 fi ./configure "$@" fi ������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/config.guess���������������������������������������������������������������������0000755�0001750�0001750�00000126373�13642360053�013324� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#! /bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2018 Free Software Foundation, Inc. timestamp='2018-02-24' # 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 # the Free Software Foundation; either version 3 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, see <https://www.gnu.org/licenses/>. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: # https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess # # Please send patches to <config-patches@gnu.org>. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Options: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to <config-patches@gnu.org>." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright 1992-2018 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > "$dummy.c" ; for c in cc gcc c89 c99 ; do if ($c -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown 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 case "$UNAME_SYSTEM" in Linux|GNU|GNU/*) # If the system lacks a compiler, then just pick glibc. # We could probably try harder. LIBC=gnu eval "$set_cc_for_build" cat <<-EOF > "$dummy.c" #include <features.h> #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc #else LIBC=gnu #endif EOF eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`" # If ldd exists, use it to detect musl libc. if command -v ldd >/dev/null && \ ldd --version 2>&1 | grep -q ^musl then LIBC=musl fi ;; esac # Note: order is significant - the case branches are not exclusive. case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ "/sbin/$sysctl" 2>/dev/null || \ "/usr/sbin/$sysctl" 2>/dev/null || \ echo unknown)` case "$UNAME_MACHINE_ARCH" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; earmv*) arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` machine="${arch}${endian}"-unknown ;; *) machine="$UNAME_MACHINE_ARCH"-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently (or will in the future) and ABI. case "$UNAME_MACHINE_ARCH" in earm*) os=netbsdelf ;; arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval "$set_cc_for_build" if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # Determine ABI tags. case "$UNAME_MACHINE_ARCH" in earm*) expr='s/^earmv[0-9]/-eabi/;s/eb$//' abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "$UNAME_VERSION" in Debian*) release='-gnu' ;; *) release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "$machine-${os}${release}${abi}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE" exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE" exit ;; *:LibertyBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE" exit ;; *:MidnightBSD:*:*) echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE" exit ;; *:ekkoBSD:*:*) echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE" exit ;; *:SolidBSD:*:*) echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE" exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd"$UNAME_RELEASE" exit ;; *:MirBSD:*:*) echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE" exit ;; *:Sortix:*:*) echo "$UNAME_MACHINE"-unknown-sortix exit ;; *:Redox:*:*) echo "$UNAME_MACHINE"-unknown-redox exit ;; mips:OSF1:*.*) echo mips-dec-osf1 exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE=alpha ;; "EV4.5 (21064)") UNAME_MACHINE=alpha ;; "LCA4 (21066/21068)") UNAME_MACHINE=alpha ;; "EV5 (21164)") UNAME_MACHINE=alphaev5 ;; "EV5.6 (21164A)") UNAME_MACHINE=alphaev56 ;; "EV5.6 (21164PC)") UNAME_MACHINE=alphapca56 ;; "EV5.7 (21164PC)") UNAME_MACHINE=alphapca57 ;; "EV6 (21264)") UNAME_MACHINE=alphaev6 ;; "EV6.7 (21264A)") UNAME_MACHINE=alphaev67 ;; "EV6.8CB (21264C)") UNAME_MACHINE=alphaev68 ;; "EV6.8AL (21264B)") UNAME_MACHINE=alphaev68 ;; "EV6.8CX (21264D)") UNAME_MACHINE=alphaev68 ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE=alphaev69 ;; "EV7 (21364)") UNAME_MACHINE=alphaev7 ;; "EV7.9 (21364A)") UNAME_MACHINE=alphaev79 ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # 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. echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`" # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo "$UNAME_MACHINE"-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo "$UNAME_MACHINE"-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix"$UNAME_RELEASE" exit ;; arm*:riscos:*:*|arm*:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-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 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux"$UNAME_RELEASE" exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval "$set_cc_for_build" SUN_ARCH=i386 # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH=x86_64 fi fi echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`" exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos"$UNAME_RELEASE" exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos"$UNAME_RELEASE" ;; sun4) echo sparc-sun-sunos"$UNAME_RELEASE" ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos"$UNAME_RELEASE" exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint"$UNAME_RELEASE" exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint"$UNAME_RELEASE" exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint"$UNAME_RELEASE" exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint"$UNAME_RELEASE" exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint"$UNAME_RELEASE" exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint"$UNAME_RELEASE" exit ;; m68k:machten:*:*) echo m68k-apple-machten"$UNAME_RELEASE" exit ;; powerpc:machten:*:*) echo powerpc-apple-machten"$UNAME_RELEASE" exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix"$UNAME_RELEASE" exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix"$UNAME_RELEASE" exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix"$UNAME_RELEASE" exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval "$set_cc_for_build" sed 's/^ //' << EOF > "$dummy.c" #ifdef __cplusplus #include <stdio.h> /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" && dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`"$dummy" "$dummyarg"` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos"$UNAME_RELEASE" exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ] then if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \ [ "$TARGET_BINARY_INTERFACE"x = x ] then echo m88k-dg-dgux"$UNAME_RELEASE" else echo m88k-dg-dguxbcs"$UNAME_RELEASE" fi else echo i586-dg-dgux"$UNAME_RELEASE" fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`" exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" fi echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV" exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval "$set_cc_for_build" sed 's/^ //' << EOF > "$dummy.c" #include <sys/systemcfg.h> main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/lslpp ] ; then IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" fi echo "$IBM_ARCH"-ibm-aix"$IBM_REV" exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd"$UNAME_RELEASE" # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` case "$UNAME_MACHINE" in 9000/31?) HP_ARCH=m68000 ;; 9000/[34]??) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "$sc_cpu_version" in 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "$sc_kernel_bits" in 32) HP_ARCH=hppa2.0n ;; 64) HP_ARCH=hppa2.0w ;; '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi if [ "$HP_ARCH" = "" ]; then eval "$set_cc_for_build" sed 's/^ //' << EOF > "$dummy.c" #define _HPUX_SOURCE #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 (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ "$HP_ARCH" = hppa2.0w ] then eval "$set_cc_for_build" # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH=hppa2.0w else HP_ARCH=hppa64 fi fi echo "$HP_ARCH"-hp-hpux"$HPUX_REV" exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux"$HPUX_REV" exit ;; 3050*:HI-UX:*:*) eval "$set_cc_for_build" sed 's/^ //' << EOF > "$dummy.c" #include <unistd.h> int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo "$UNAME_MACHINE"-unknown-osf1mk else echo "$UNAME_MACHINE"-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE" exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi"$UNAME_RELEASE" exit ;; *:BSD/OS:*:*) echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE" exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case "$UNAME_PROCESSOR" in amd64) UNAME_PROCESSOR=x86_64 ;; i386) UNAME_PROCESSOR=i586 ;; esac echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" exit ;; i*:CYGWIN*:*) echo "$UNAME_MACHINE"-pc-cygwin exit ;; *:MINGW64*:*) echo "$UNAME_MACHINE"-pc-mingw64 exit ;; *:MINGW*:*) echo "$UNAME_MACHINE"-pc-mingw32 exit ;; *:MSYS*:*) echo "$UNAME_MACHINE"-pc-msys exit ;; i*:PW*:*) echo "$UNAME_MACHINE"-pc-pw32 exit ;; *:Interix*:*) case "$UNAME_MACHINE" in x86) echo i586-pc-interix"$UNAME_RELEASE" exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix"$UNAME_RELEASE" exit ;; IA64) echo ia64-unknown-interix"$UNAME_RELEASE" exit ;; esac ;; i*:UWIN*:*) echo "$UNAME_MACHINE"-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" exit ;; *:GNU:*:*) # the GNU system echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`" exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC" exit ;; i*86:Minix:*:*) echo "$UNAME_MACHINE"-pc-minix exit ;; aarch64:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC=gnulibc1 ; fi echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; arc:Linux:*:* | arceb:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; arm*:Linux:*:*) eval "$set_cc_for_build" if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi else echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf fi fi exit ;; avr32*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; cris:Linux:*:*) echo "$UNAME_MACHINE"-axis-linux-"$LIBC" exit ;; crisv32:Linux:*:*) echo "$UNAME_MACHINE"-axis-linux-"$LIBC" exit ;; e2k:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; frv:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; hexagon:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; i*86:Linux:*:*) echo "$UNAME_MACHINE"-pc-linux-"$LIBC" exit ;; ia64:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; k1om:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; m32r*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; m68*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval "$set_cc_for_build" sed 's/^ //' << EOF > "$dummy.c" #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU'`" test "x$CPU" != x && { echo "$CPU-unknown-linux-$LIBC"; exit; } ;; mips64el:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; openrisc*:Linux:*:*) echo or1k-unknown-linux-"$LIBC" exit ;; or32:Linux:*:* | or1k*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; padre:Linux:*:*) echo sparc-unknown-linux-"$LIBC" exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-"$LIBC" exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;; PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;; *) echo hppa-unknown-linux-"$LIBC" ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-"$LIBC" exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-"$LIBC" exit ;; ppc64le:Linux:*:*) echo powerpc64le-unknown-linux-"$LIBC" exit ;; ppcle:Linux:*:*) echo powerpcle-unknown-linux-"$LIBC" exit ;; riscv32:Linux:*:* | riscv64:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo "$UNAME_MACHINE"-ibm-linux-"$LIBC" exit ;; sh64*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; sh*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; tile*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; vax:Linux:*:*) echo "$UNAME_MACHINE"-dec-linux-"$LIBC" exit ;; x86_64:Linux:*:*) if objdump -f /bin/sh | grep -q elf32-x86-64; then echo "$UNAME_MACHINE"-pc-linux-"$LIBC"x32 else echo "$UNAME_MACHINE"-pc-linux-"$LIBC" fi exit ;; xtensa*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; i*86:DYNIX/ptx:4*:*) # 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. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION" exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo "$UNAME_MACHINE"-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo "$UNAME_MACHINE"-unknown-stop exit ;; i*86:atheos:*:*) echo "$UNAME_MACHINE"-unknown-atheos exit ;; i*86:syllable:*:*) echo "$UNAME_MACHINE"-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos"$UNAME_RELEASE" exit ;; i*86:*DOS:*:*) echo "$UNAME_MACHINE"-pc-msdosdjgpp exit ;; i*86:*:4.*:*) UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL" else echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL" fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}{$UNAME_VERSION}" exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name` echo "$UNAME_MACHINE"-pc-isc"$UNAME_REL" elif /bin/uname -X 2>/dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL" else echo "$UNAME_MACHINE"-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv"$UNAME_RELEASE" # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos"$UNAME_RELEASE" exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos"$UNAME_RELEASE" exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos"$UNAME_RELEASE" exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos"$UNAME_RELEASE" exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv"$UNAME_RELEASE" exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo "$UNAME_MACHINE"-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says <Richard.M.Bartel@ccMail.Census.GOV> echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes <hewes@openmarket.com>. # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo "$UNAME_MACHINE"-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux"$UNAME_RELEASE" exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv"$UNAME_RELEASE" else echo mips-unknown-sysv"$UNAME_RELEASE" fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; x86_64:Haiku:*:*) echo x86_64-unknown-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux"$UNAME_RELEASE" exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux"$UNAME_RELEASE" exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux"$UNAME_RELEASE" exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux"$UNAME_RELEASE" exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux"$UNAME_RELEASE" exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux"$UNAME_RELEASE" exit ;; SX-ACE:SUPER-UX:*:*) echo sxace-nec-superux"$UNAME_RELEASE" exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody"$UNAME_RELEASE" exit ;; *:Rhapsody:*:*) echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE" exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown eval "$set_cc_for_build" if test "$UNAME_PROCESSOR" = unknown ; then UNAME_PROCESSOR=powerpc fi if test "`echo "$UNAME_RELEASE" | sed -e 's/\..*//'`" -le 10 ; then if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_PPC >/dev/null then UNAME_PROCESSOR=powerpc fi fi elif test "$UNAME_PROCESSOR" = i386 ; then # Avoid executing cc on OS X 10.9, as it ships with a stub # that puts up a graphical alert prompting to install # developer tools. Any system running Mac OS X 10.7 or # later (Darwin 11 and later) is required to have a 64-bit # processor. This is not true of the ARM version of Darwin # that Apple uses in portable devices. UNAME_PROCESSOR=x86_64 fi echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE" exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE" exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NEO-*:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk"$UNAME_RELEASE" exit ;; NSE-*:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk"$UNAME_RELEASE" exit ;; NSR-*:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk"$UNAME_RELEASE" exit ;; NSV-*:NONSTOP_KERNEL:*:*) echo nsv-tandem-nsk"$UNAME_RELEASE" exit ;; NSX-*:NONSTOP_KERNEL:*:*) echo nsx-tandem-nsk"$UNAME_RELEASE" exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE" exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = 386; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo "$UNAME_MACHINE"-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux"$UNAME_RELEASE" exit ;; *:DragonFly:*:*) echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "$UNAME_MACHINE" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`" exit ;; i*86:rdos:*:*) echo "$UNAME_MACHINE"-pc-rdos exit ;; i*86:AROS:*:*) echo "$UNAME_MACHINE"-pc-aros exit ;; x86_64:VMkernel:*:*) echo "$UNAME_MACHINE"-unknown-esx exit ;; amd64:Isilon\ OneFS:*:*) echo x86_64-unknown-onefs exit ;; esac echo "$0: unable to guess system type" >&2 case "$UNAME_MACHINE:$UNAME_SYSTEM" in mips:Linux | mips64:Linux) # If we got here on MIPS GNU/Linux, output extra information. cat >&2 <<EOF NOTE: MIPS GNU/Linux systems require a C compiler to fully recognize the system type. Please install a C compiler and try again. EOF ;; esac cat >&2 <<EOF This script (version $timestamp), has failed to recognize the operating system you are using. If your script is old, overwrite *all* copies of config.guess and config.sub with the latest versions from: https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess and https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub If $0 has already been updated, send the following data and any information you think might be pertinent to config-patches@gnu.org to provide the necessary information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = "$UNAME_MACHINE" UNAME_RELEASE = "$UNAME_RELEASE" UNAME_SYSTEM = "$UNAME_SYSTEM" UNAME_VERSION = "$UNAME_VERSION" EOF exit 1 # Local variables: # eval: (add-hook 'write-file-functions 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/email-clients.txt����������������������������������������������������������������0000644�0001750�0001750�00000021213�13431646201�014254� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������Email clients info for Linux ====================================================================== General Preferences ---------------------------------------------------------------------- Patches for the Linux kernel are submitted via email, preferably as inline text in the body of the email. Some maintainers accept attachments, but then the attachments should have content-type "text/plain". However, attachments are generally frowned upon because it makes quoting portions of the patch more difficult in the patch review process. Email clients that are used for Linux kernel patches should send the patch text untouched. For example, they should not modify or delete tabs or spaces, even at the beginning or end of lines. Don't send patches with "format=flowed". This can cause unexpected and unwanted line breaks. Don't let your email client do automatic word wrapping for you. This can also corrupt your patch. Email clients should not modify the character set encoding of the text. Emailed patches should be in ASCII or UTF-8 encoding only. If you configure your email client to send emails with UTF-8 encoding, you avoid some possible charset problems. Email clients should generate and maintain References: or In-Reply-To: headers so that mail threading is not broken. Copy-and-paste (or cut-and-paste) usually does not work for patches because tabs are converted to spaces. Using xclipboard, xclip, and/or xcutsel may work, but it's best to test this for yourself or just avoid copy-and-paste. Don't use PGP/GPG signatures in mail that contains patches. This breaks many scripts that read and apply the patches. (This should be fixable.) It's a good idea to send a patch to yourself, save the received message, and successfully apply it with 'patch' before sending patches to Linux mailing lists. Some email client (MUA) hints ---------------------------------------------------------------------- Here are some specific MUA configuration hints for editing and sending patches for the Linux kernel. These are not meant to be complete software package configuration summaries. Legend: TUI = text-based user interface GUI = graphical user interface ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Alpine (TUI) Config options: In the "Sending Preferences" section: - "Do Not Send Flowed Text" must be enabled - "Strip Whitespace Before Sending" must be disabled When composing the message, the cursor should be placed where the patch should appear, and then pressing CTRL-R let you specify the patch file to insert into the message. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Evolution (GUI) Some people use this successfully for patches. When composing mail select: Preformat from Format->Heading->Preformatted (Ctrl-7) or the toolbar Then use: Insert->Text File... (Alt-n x) to insert the patch. You can also "diff -Nru old.c new.c | xclip", select Preformat, then paste with the middle button. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Kmail (GUI) Some people use Kmail successfully for patches. The default setting of not composing in HTML is appropriate; do not enable it. When composing an email, under options, uncheck "word wrap". The only disadvantage is any text you type in the email will not be word-wrapped so you will have to manually word wrap text before the patch. The easiest way around this is to compose your email with word wrap enabled, then save it as a draft. Once you pull it up again from your drafts it is now hard word-wrapped and you can uncheck "word wrap" without losing the existing wrapping. At the bottom of your email, put the commonly-used patch delimiter before inserting your patch: three hyphens (---). Then from the "Message" menu item, select insert file and choose your patch. As an added bonus you can customise the message creation toolbar menu and put the "insert file" icon there. Make the composer window wide enough so that no lines wrap. As of KMail 1.13.5 (KDE 4.5.4), KMail will apply word wrapping when sending the email if the lines wrap in the composer window. Having word wrapping disabled in the Options menu isn't enough. Thus, if your patch has very long lines, you must make the composer window very wide before sending the email. See: https://bugs.kde.org/show_bug.cgi?id=174034 You can safely GPG sign attachments, but inlined text is preferred for patches so do not GPG sign them. Signing patches that have been inserted as inlined text will make them tricky to extract from their 7-bit encoding. If you absolutely must send patches as attachments instead of inlining them as text, right click on the attachment and select properties, and highlight "Suggest automatic display" to make the attachment inlined to make it more viewable. When saving patches that are sent as inlined text, select the email that contains the patch from the message list pane, right click and select "save as". You can use the whole email unmodified as a patch if it was properly composed. There is no option currently to save the email when you are actually viewing it in its own window -- there has been a request filed at kmail's bugzilla and hopefully this will be addressed. Emails are saved as read-write for user only so you will have to chmod them to make them group and world readable if you copy them elsewhere. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lotus Notes (GUI) Run away from it. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Mutt (TUI) Plenty of Linux developers use mutt, so it must work pretty well. Mutt doesn't come with an editor, so whatever editor you use should be used in a way that there are no automatic linebreaks. Most editors have an "insert file" option that inserts the contents of a file unaltered. To use 'vim' with mutt: set editor="vi" If using xclip, type the command :set paste before middle button or shift-insert or use :r filename if you want to include the patch inline. (a)ttach works fine without "set paste". Config options: It should work with default settings. However, it's a good idea to set the "send_charset" to: set send_charset="us-ascii:utf-8" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Pine (TUI) Pine has had some whitespace truncation issues in the past, but these should all be fixed now. Use alpine (pine's successor) if you can. Config options: - quell-flowed-text is needed for recent versions - the "no-strip-whitespace-before-send" option is needed ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Sylpheed (GUI) - Works well for inlining text (or using attachments). - Allows use of an external editor. - Is slow on large folders. - Won't do TLS SMTP auth over a non-SSL connection. - Has a helpful ruler bar in the compose window. - Adding addresses to address book doesn't understand the display name properly. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Thunderbird (GUI) Thunderbird is an Outlook clone that likes to mangle text, but there are ways to coerce it into behaving. - Allows use of an external editor: The easiest thing to do with Thunderbird and patches is to use an "external editor" extension and then just use your favorite $EDITOR for reading/merging patches into the body text. To do this, download and install the extension, then add a button for it using View->Toolbars->Customize... and finally just click on it when in the Compose dialog. To beat some sense out of the internal editor, do this: - Edit your Thunderbird config settings so that it won't use format=flowed. Go to "edit->preferences->advanced->config editor" to bring up the thunderbird's registry editor, and set "mailnews.send_plaintext_flowed" to "false". - Disable HTML Format: Set "mail.identity.id1.compose_html" to "false". - Enable "preformat" mode: Set "editor.quotesPreformatted" to "true". - Enable UTF8: Set "prefs.converted-to-utf8" to "true". - Install the "toggle wordwrap" extension. Download the file from: https://addons.mozilla.org/thunderbird/addon/2351/ Then go to "tools->add ons", select "install" at the bottom of the screen, and browse to where you saved the .xul file. This adds an "Enable Wordwrap" entry under the Options menu of the message composer. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ TkRat (GUI) Works. Use "Insert file..." or external editor. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Gmail (Web GUI) Does not work for sending patches. Gmail web client converts tabs to spaces automatically. At the same time it wraps lines every 78 chars with CRLF style line breaks although tab2space problem can be solved with external editor. Another problem is that Gmail will base64-encode any message that has a non-ASCII character. That includes things like European names. ### �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/depcomp��������������������������������������������������������������������������0000755�0001750�0001750�00000056020�13642360055�012352� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2018-03-07.03; # UTC # Copyright (C) 1999-2018 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see <https://www.gnu.org/licenses/>. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by 'PROGRAMS ARGS'. object Object file output by 'PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to <bug-automake@gnu.org>. EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac # Get the directory component of the given path, and save it in the # global variables '$dir'. Note that this directory component will # be either empty or ending with a '/' character. This is deliberate. set_dir_from () { case $1 in */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; *) dir=;; esac } # Get the suffix-stripped basename of the given path, and save it the # global variable '$base'. set_base_from () { base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` } # If no dependency file was actually created by the compiler invocation, # we still have to create a dummy depfile, to avoid errors with the # Makefile "include basename.Plo" scheme. make_dummy_depfile () { echo "#dummy" > "$depfile" } # Factor out some common post-processing of the generated depfile. # Requires the auxiliary global variable '$tmpdepfile' to be set. aix_post_process_depfile () { # If the compiler actually managed to produce a dependency file, # post-process it. if test -f "$tmpdepfile"; then # Each line is of the form 'foo.o: dependency.h'. # Do two passes, one to just change these to # $object: dependency.h # and one to simply output # dependency.h: # which is needed to avoid the deleted-header problem. { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" } > "$depfile" rm -f "$tmpdepfile" else make_dummy_depfile fi } # A tabulation character. tab=' ' # A newline character. nl=' ' # Character ranges might be problematic outside the C locale. # These definitions help. upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ lower=abcdefghijklmnopqrstuvwxyz digits=0123456789 alpha=${upper}${lower} if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Avoid interferences from the environment. gccflag= dashmflag= # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then # This is just like msvc7 but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvc7 fi if test "$depmode" = xlc; then # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. gccflag=-qmakedep=gcc,-MF depmode=gcc fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. ## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. ## (see the conditional assignment to $gccflag above). ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). Also, it might not be ## supported by the other compilers which use the 'gcc' depmode. ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The second -e expression handles DOS-style file names with drive # letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the "deleted header file" problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. ## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ | tr "$nl" ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" ;; xlc) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done aix_post_process_depfile ;; tcc) # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 # FIXME: That version still under development at the moment of writing. # Make that this statement remains true also for stable, released # versions. # It will wrap lines (doesn't matter whether long or short) with a # trailing '\', as in: # # foo.o : \ # foo.c \ # foo.h \ # # It will put a trailing '\' even on the last line, and will use leading # spaces rather than leading tabs (at least since its commit 0394caf7 # "Emit spaces for -MD"). "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. # We have to change lines of the first kind to '$object: \'. sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" # And for each line of the second kind, we have to emit a 'dep.h:' # dummy dependency, to avoid the deleted-header problem. sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; ## The order of this option in the case statement is important, since the ## shell code in configure will try each of these formats in the order ## listed in this file. A plain '-MD' option would be understood by many ## compilers, so we must ensure this comes after the gcc and icc options. pgcc) # Portland's C compiler understands '-MD'. # Will always output deps to 'file.d' where file is the root name of the # source file under compilation, even if file resides in a subdirectory. # The object file name does not affect the name of the '.d' file. # pgcc 10.2 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using '\' : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... set_dir_from "$object" # Use the source, not the object, to determine the base name, since # that's sadly what pgcc will do too. set_base_from "$source" tmpdepfile=$base.d # For projects that build the same source file twice into different object # files, the pgcc approach of using the *source* file root name can cause # problems in parallel builds. Use a locking strategy to avoid stomping on # the same $tmpdepfile. lockdir=$base.d-lock trap " echo '$0: caught signal, cleaning up...' >&2 rmdir '$lockdir' exit 1 " 1 2 13 15 numtries=100 i=$numtries while test $i -gt 0; do # mkdir is a portable test-and-set. if mkdir "$lockdir" 2>/dev/null; then # This process acquired the lock. "$@" -MD stat=$? # Release the lock. rmdir "$lockdir" break else # If the lock is being held by a different process, wait # until the winning process is done or we timeout. while test -d "$lockdir" && test $i -gt 0; do sleep 1 i=`expr $i - 1` done fi i=`expr $i - 1` done trap - 1 2 13 15 if test $i -le 0; then echo "$0: failed to acquire lock after $numtries attempts" >&2 echo "$0: check lockdir '$lockdir'" >&2 exit 1 fi if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in 'foo.d' instead, so we check for that too. # Subdirectories are respected. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then # Libtool generates 2 separate objects for the 2 libraries. These # two compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir$base.o.d # libtool 1.5 tmpdepfile2=$dir.libs/$base.o.d # Likewise. tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d "$@" -MD fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done # Same post-processing that is required for AIX mode. aix_post_process_depfile ;; msvc7) if test "$libtool" = yes; then showIncludes=-Wc,-showIncludes else showIncludes=-showIncludes fi "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The first sed program below extracts the file names and escapes # backslashes for cygpath. The second sed program outputs the file # name when reading, but also accumulates all include files in the # hold buffer in order to output them again at the end. This only # works with sed implementations that can handle large buffers. sed < "$tmpdepfile" -n ' /^Note: including file: *\(.*\)/ { s//\1/ s/\\/\\\\/g p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g s/\(.*\)/'"$tab"'\1 \\/p s/.\(.*\) \\/\1:/ H $ { s/.*/'"$tab"'/ G p }' >> "$depfile" echo >> "$depfile" # make sure the fragment doesn't end with a backslash rm -f "$tmpdepfile" ;; msvc7msys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for ':' # in the target name. This is to cope with DOS-style filenames: # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this sed invocation # correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process the last invocation # correctly. Breaking it into two sed invocations is a workaround. sed '1,2d' "$tmpdepfile" \ | tr ' ' "$nl" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E \ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" echo "$tab" >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/README.definable-cursor����������������������������������������������������������0000644�0001750�0001750�00000006533�13431646201�015100� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Definable Mouse Cursors for Window Maker ---------------------------------------- The definable-cursor feature allows user-definable mouse cursors; the cursors can either be the built-in ones from the X11 cursor font, or they can be bitmap (XBM) files. User-definable cursors can be useful for theme-builders, lefthanders, and the visually impaired. Defining Your Own Cursors ------------------------- A cursor specification takes one of the following forms in the ~/GNUstep/Defaults/WindowMaker file: (none) (builtin, <cursor-name>) (bitmap, <bitmap-filename>, <mask-filename>) They have the following meanings: none The cursor is inherited from the parent window (often, this means the root window). builtin Use the cursor named <cursor-name> from X11's set of built-in cursors. The names are the same as you use with 'xsetroot -cursor_name'. See the xsetroot(1) man page for more information. bitmap Use the bitmap in <bitmap-filename> as the foreground cursor bitmap, and the one in <mask-filename> as the background (mask) bitmap. This is pretty much the same as 'xsetroot -cursor', except that Window Maker searches for the bitmaps along its PixmapPath. You can set the following cursor types (they're shown here with their defaults): NormalCursor = (builtin, left_ptr); ArrowCursor = (builtin, top_left_arrow); MoveCursor = (builtin, fleur); TopLeftResizeCursor = (builtin, top_left_corner); TopRightResizeCursor = (builtin, top_right_corner); BottomLeftResizeCursor = (builtin, bottom_left_corner); BottomRightResizeCursor = (builtin, bottom_right_corner); VerticalResizeCursor = (builtin, sb_v_double_arrow); HorizontalResizeCursor = (builtin, sb_h_double_arrow); WaitCursor = (builtin, watch); QuestionCursor = (builtin, question_arrow); TextCursor = (builtin, xterm); SelectCursor = (builtin, cross); The following cursor types are allowed, but they're deprecated (Window Maker used them in the past, but doesn't use them anymore): ResizeCursor = (builtin, sizing); Using Cursors with 'getstyle' and 'setstyle' -------------------------------------------- The 'getstyle' and 'setstyle' style/theme-management utilities can handle user-definable cursors. By default, 'getstyle' ignores cursor definitions; using 'getstyle -t' to get theme-related settings will also include any cursors you've defined in the resulting style file. However, by default, 'setstyle' does NOT ignore cursor settings. If you wish to set a style or theme without installing cursor settings, you can use 'setstyle --no-cursors' to ignore the cursor definitions. Random Notes ------------ Most X11 cursors are 16x16 bitmaps. Many X servers can actually handle larger cursors, though. To check, use: xdpyinfo and in the resulting output look for a line such as: largest cursor: 64x64 The example above indicates that my X server can handle cursors up to 64 pixels wide by 64 pixels high. You can create your own bitmap cursors using the 'bitmap' program that accompanies most X11 distributions. For example bitmap cursors and masks, see <http://www.pobox.com/~jmknoble/WindowMaker/cursors/>. ���������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/test/����������������������������������������������������������������������������0000755�0001750�0001750�00000000000�13642365215�012034� 5����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/test/Makefile.in�����������������������������������������������������������������0000644�0001750�0001750�00000043240�13642360054�014020� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = wtest$(EXEEXT) subdir = test ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ $(top_srcdir)/m4/ax_pthread.m4 \ $(top_srcdir)/m4/ld-version-script.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/windowmaker.m4 \ $(top_srcdir)/m4/wm_attributes.m4 \ $(top_srcdir)/m4/wm_cflags_check.m4 \ $(top_srcdir)/m4/wm_i18n.m4 \ $(top_srcdir)/m4/wm_imgfmt_check.m4 \ $(top_srcdir)/m4/wm_libexif.m4 $(top_srcdir)/m4/wm_libmath.m4 \ $(top_srcdir)/m4/wm_prog_cc_c11.m4 \ $(top_srcdir)/m4/wm_xext_check.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) am_wtest_OBJECTS = wtest.$(OBJEXT) wtest_OBJECTS = $(am_wtest_OBJECTS) wtest_DEPENDENCIES = $(top_builddir)/wmlib/libWMaker.la AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = am__maybe_remake_depfiles = COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(wtest_SOURCES) DIST_SOURCES = $(wtest_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ GFXLIBS = @GFXLIBS@ GREP = @GREP@ HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLIBS = @INTLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBBSD = @LIBBSD@ LIBEXIF = @LIBEXIF@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXINERAMA = @LIBXINERAMA@ LIBXMU = @LIBXMU@ LIBXRANDR = @LIBXRANDR@ LINGUAS = @LINGUAS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAGICKFLAGS = @MAGICKFLAGS@ MAGICKLIBS = @MAGICKLIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MANLANGDIRS = @MANLANGDIRS@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOLIBS = @PANGOLIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILMOFILES = @UTILMOFILES@ VERSION = @VERSION@ WINGSMOFILES = @WINGSMOFILES@ WINGS_VERSION = @WINGS_VERSION@ WMAKERMOFILES = @WMAKERMOFILES@ WPREFSMOFILES = @WPREFSMOFILES@ WRASTER_VERSION = @WRASTER_VERSION@ WUTIL_VERSION = @WUTIL_VERSION@ XCFLAGS = @XCFLAGS@ XFTCONFIG = @XFTCONFIG@ XFTFLAGS = @XFTFLAGS@ XFTLIBS = @XFTLIBS@ XGETTEXT = @XGETTEXT@ XLFLAGS = @XLFLAGS@ XLIBS = @XLIBS@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBRARY_PATH = @X_LIBRARY_PATH@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ defsdatadir = @defsdatadir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ inc_search_path = @inc_search_path@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lcov_output_directory = @lcov_output_directory@ lib_search_path = @lib_search_path@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pixmapdir = @pixmapdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ wprefs_bindir = @wprefs_bindir@ wprefs_datadir = @wprefs_datadir@ AUTOMAKE_OPTIONS = no-dependencies EXTRA_DIST = notest.c wtest_SOURCES = wtest.c wtest_LDADD = $(top_builddir)/wmlib/libWMaker.la @XLFLAGS@ @XLIBS@ AM_CPPFLAGS = -g -D_BSD_SOURCE @XCFLAGS@ -I$(top_srcdir)/wmlib all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu test/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list wtest$(EXEEXT): $(wtest_OBJECTS) $(wtest_DEPENDENCIES) $(EXTRA_wtest_DEPENDENCIES) @rm -f wtest$(EXEEXT) $(AM_V_CCLD)$(LINK) $(wtest_OBJECTS) $(wtest_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c .c.o: $(AM_V_CC)$(COMPILE) -c -o $@ $< .c.obj: $(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: $(AM_V_CC)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # 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. .NOEXPORT: ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/test/wtest.c���������������������������������������������������������������������0000644�0001750�0001750�00000011202�13431646201�013253� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* quick and dirty test application that demonstrates: application hiding, * application defined titlebar button images, application defined * titlebar button actions, application menus, docking and * window manager commands * * Note that the windows don't have a window command menu. * * TODO: remake */ #include "config.h" #include <stdio.h> #include <stdlib.h> #include <X11/Xlib.h> #include <X11/Xutil.h> #include <X11/Xproto.h> #include <WMaker.h> #ifdef HAVE_STDNORETURN #include <stdnoreturn.h> #endif static char bits[] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; static char mbits[] = { 0xff, 0x03, 0xff, 0x01, 0xff, 0x00, 0x7f, 0x00, 0x3f, 0x00, 0x1f, 0x00, 0x0f, 0x00, 0x07, 0x00, 0x03, 0x00, 0x01, 0x00 }; Display *dpy; Window leader; WMAppContext *app; static void callback(int item) { printf("pushed item %i\n", item); } static noreturn void quit(int item) { /* * This parameter is not used, but because we're a call-back we have a fixed * prototype, so we tell the compiler it is ok to avoid a spurious unused * variable warning */ (void) item; exit(0); } static void hide(int item) { /* * This parameter is not used, but because we're a call-back we have a fixed * prototype, so we tell the compiler it is ok to avoid a spurious unused * variable warning */ (void) item; WMHideApplication(app); } Atom delete_win, miniaturize_win; Atom prots[6]; GNUstepWMAttributes attr; XWMHints *hints; WMMenu *menu; WMMenu *submenu; int wincount = 0; static void newwin(int item) { Window win; XClassHint classhint; char title[100]; /* * This parameter is not used, but because we're a call-back we have a fixed * prototype, so we tell the compiler it is ok to avoid a spurious unused * variable warning */ (void) item; wincount++; win = XCreateSimpleWindow(dpy, DefaultRootWindow(dpy), 10 * wincount, 10 * wincount, 200, 100, 0, 0, 0); prots[0] = delete_win; prots[1] = miniaturize_win; XSetWMProtocols(dpy, win, prots, 2); sprintf(title, "Test Window %i", wincount); XStoreName(dpy, win, title); /* set class hint */ classhint.res_name = "test"; classhint.res_class = "Test"; XSetClassHint(dpy, win, &classhint); /* set WindowMaker hints */ attr.flags = GSMiniaturizePixmapAttr | GSMiniaturizeMaskAttr; attr.miniaturize_pixmap = XCreateBitmapFromData(dpy, DefaultRootWindow(dpy), bits, 10, 10); attr.miniaturize_mask = XCreateBitmapFromData(dpy, DefaultRootWindow(dpy), mbits, 10, 10); WMSetWindowAttributes(dpy, win, &attr); hints = XAllocWMHints(); /* set window group leader */ hints->window_group = leader; hints->flags = WindowGroupHint; XSetWMHints(dpy, win, hints); WMAppAddWindow(app, win); XMapWindow(dpy, win); } int main(int argc, char **argv) { XClassHint classhint; dpy = XOpenDisplay(""); if (!dpy) { puts("could not open display!"); exit(1); } delete_win = XInternAtom(dpy, "WM_DELETE_WINDOW", False); miniaturize_win = XInternAtom(dpy, "_GNUSTEP_WM_MINIATURIZE_WINDOW", False); leader = XCreateSimpleWindow(dpy, DefaultRootWindow(dpy), 10, 10, 10, 10, 0, 0, 0); /* set class hint */ classhint.res_name = "test"; classhint.res_class = "Test"; XSetClassHint(dpy, leader, &classhint); /* set window group leader to self */ hints = XAllocWMHints(); hints->window_group = leader; hints->flags = WindowGroupHint; XSetWMHints(dpy, leader, hints); /* create app context */ app = WMAppCreateWithMain(dpy, DefaultScreen(dpy), leader); menu = WMMenuCreate(app, "Test Menu"); submenu = WMMenuCreate(app, "File"); WMMenuAddSubmenu(menu, "File", submenu); WMMenuAddItem(menu, "Hide", (WMMenuAction) hide, NULL, NULL, NULL); WMMenuAddItem(menu, "Quit", (WMMenuAction) quit, NULL, NULL, NULL); WMMenuAddItem(submenu, "New", (WMMenuAction) newwin, NULL, NULL, NULL); WMMenuAddItem(submenu, "Open", (WMMenuAction) callback, NULL, NULL, NULL); WMMenuAddItem(submenu, "Save", (WMMenuAction) callback, NULL, NULL, NULL); WMMenuAddItem(submenu, "Save As...", (WMMenuAction) callback, NULL, NULL, NULL); WMAppSetMainMenu(app, menu); WMRealizeMenus(app); /* set command to use to startup this */ XSetCommand(dpy, leader, argv, argc); /* create first window */ newwin(0); XFlush(dpy); puts("Run xprop on the test window to see the properties defined"); while (wincount > 0) { XEvent ev; XNextEvent(dpy, &ev); if (ev.type == ClientMessage) { if (ev.xclient.data.l[0] == delete_win) { XDestroyWindow(dpy, ev.xclient.window); wincount--; } else if (ev.xclient.data.l[0] == miniaturize_win) { puts("You've pushed the maximize window button"); } } WMProcessEvent(app, &ev); } exit(0); } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/test/notest.c��������������������������������������������������������������������0000644�0001750�0001750�00000005742�13431646201�013435� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* quick and dirty test application that demonstrates: Notify grabbing * * TODO: remake */ #include <stdio.h> #include <X11/Xlib.h> #include <X11/Xutil.h> #include <X11/Xproto.h> #include <WMaker.h> Display *dpy; Window leader; WMAppContext *app; Atom delete_win; Atom prots[6]; XWMHints *hints; WMMenu *menu; static void quit(void *foo, int item, Time time) { exit(0); } static void hide(void *foo, int item, Time time) { WMHideApplication(app); } int notify_print(int id, XEvent * event, void *data) { printf("Got notification 0x%x, window 0x%lx, data '%s'\n", id, event->xclient.data.l[1], (char *)data); return True; } static void newwin(void *foo, int item, Time time) { Window win; XClassHint classhint; char title[100]; win = XCreateSimpleWindow(dpy, DefaultRootWindow(dpy), 0, 0, 200, 100, 0, 0, 0); prots[0] = delete_win; XSetWMProtocols(dpy, win, prots, 1); sprintf(title, "Notify Test Window"); XStoreName(dpy, win, title); /* set class hint */ classhint.res_name = "notest"; classhint.res_class = "Notest"; XSetClassHint(dpy, win, &classhint); hints = XAllocWMHints(); /* set window group leader */ hints->window_group = leader; hints->flags = WindowGroupHint; XSetWMHints(dpy, win, hints); WMAppAddWindow(app, win); XMapWindow(dpy, win); } int main(int argc, char **argv) { XClassHint classhint; dpy = XOpenDisplay(""); if (!dpy) { puts("could not open display!"); exit(1); } delete_win = XInternAtom(dpy, "WM_DELETE_WINDOW", False); leader = XCreateSimpleWindow(dpy, DefaultRootWindow(dpy), 10, 10, 10, 10, 0, 0, 0); /* set class hint */ classhint.res_name = "notest"; classhint.res_class = "Notest"; XSetClassHint(dpy, leader, &classhint); /* set window group leader to self */ hints = XAllocWMHints(); hints->window_group = leader; hints->flags = WindowGroupHint; XSetWMHints(dpy, leader, hints); /* create app context */ app = WMAppCreateWithMain(dpy, DefaultScreen(dpy), leader); menu = WMMenuCreate(app, "Notify Test Menu"); WMMenuAddItem(menu, "Hide", (WMMenuAction) hide, NULL, NULL, NULL); WMMenuAddItem(menu, "Quit", (WMMenuAction) quit, NULL, NULL, NULL); WMAppSetMainMenu(app, menu); WMRealizeMenus(app); /* Get some WindowMaker notifications */ WMNotifySet(app, WMN_APP_START, notify_print, (void *)"App start"); WMNotifySet(app, WMN_APP_EXIT, notify_print, (void *)"App end"); WMNotifySet(app, WMN_WIN_FOCUS, notify_print, (void *)"Focus in"); WMNotifySet(app, WMN_WIN_UNFOCUS, notify_print, (void *)"Focus out"); WMNotifySet(app, WMN_NOTIFY_ALL, notify_print, (void *)"Unknown type"); WMNotifyMaskUpdate(app); /* Mask isn't actually set till we do this */ /* set command to use to startup this */ XSetCommand(dpy, leader, argv, argc); /* create first window */ newwin(NULL, 0, 0); XFlush(dpy); while (1) { XEvent ev; XNextEvent(dpy, &ev); if (ev.type == ClientMessage) { if (ev.xclient.data.l[0] == delete_win) { XDestroyWindow(dpy, ev.xclient.window); break; } } WMProcessEvent(app, &ev); } exit(0); } ������������������������������WindowMaker-0.95.9/test/Makefile.am�����������������������������������������������������������������0000644�0001750�0001750�00000000453�13431646201�014003� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������## Process this file with automake to produce Makefile.in AUTOMAKE_OPTIONS = no-dependencies EXTRA_DIST = notest.c noinst_PROGRAMS = wtest wtest_SOURCES = wtest.c wtest_LDADD = $(top_builddir)/wmlib/libWMaker.la @XLFLAGS@ @XLIBS@ AM_CPPFLAGS = -g -D_BSD_SOURCE @XCFLAGS@ -I$(top_srcdir)/wmlib ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/TODO�����������������������������������������������������������������������������0000644�0001750�0001750�00000005555�13431646201�011470� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������remake wrlib rule to not compile with -fomit-frame-pointer and stuff if its added to CFLAGS Do ASAP: ======== - fix bestvisual selection code. Broken. - fix RemakeStackList() to account for transient windows - blink border of clients with UrgencyHint set between red and black - finish session stuff - remove colors_per_channel stuff from wmaker after? + finish the ability to browse for files/dirs in the WPrefs menu editor - check whether window states are being saved/restored properly via netwm on restart/crash-restart (grep for XXX/TODO) Need to do: =========== - figure out a better gnustep path for wprefs.app installation - impelment a generic pixmap type, which receives attributes (scaled/maxscaled/centered/tiled, smoothed, size/position, ...) - allow user to select/restore default root menu from wprefs - support for X11R6.4 extension for getting extra visual info in wrlib's automatic best context guessing - docklet to control AccessX (keyboard accessibility) functions - rewrite all redundant stuff to use WINGs - add function to directly make a thumbnail of an image, using the functionality provided by the image libraries to load a minimal amount of data. - rewrite defaults/wdefaults stuff to use WINGs UD stuff. Search list: ~/G/D/WindowMaker /u/l/s/W/D/WindowMaker built-in-defaults - remake internal string processing to use wchar? unicode? - add new file for stuff like default commands and dnd commands for docked apps, balloons for the dock etc - check whether apps with name.class set to empty strings should be treated like if name.class is NULL.NULL - review the defaults handling code (not to reread after we update a domain if possible, check WINGs apps updating WMWindowAttributes after start making screen to flash on update) Maybe some day: =============== - virtual workspace - optimize for size Never: (so, dont even bother to ask) ====== - different themes for each workspace. Unless you give us a SGI/Power Onyx with 2 CPUs ;). - anything that requires the mouse pointer to be jumped by WindowMaker to somewhere. This is *terrible* behaviour. And it's not just IMO. - rewrite to use Gtk... I wont even bother to explain why... - ICCCM 2.0: ICCCM 2.0 (not 1.0, which is what everybody supports so so) is a relatively new standard and nobody, AFAIK, complies with it (not even twm as people tend to think). It has some neat things, but many of the new stuff is really weird and tricky to implement, not to say unworthy (read the specs and you'll see). This is not bad, since I think it is very unlikely that a client that requires it exists... Anyway, if we get an "official" sample implementation (twm?) it might be supported. Maybe dtwm supports it? I dont know... After 1.0.0 is released ======================= - rework/redesign the appicon/dock/clip concept - maybe rewrite the main code in obj-c or c++ - major clean up in theming/texturing stuff ���������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/���������������������������������������������������������������������������0000755�0001750�0001750�00000000000�13642365212�012001� 5����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/po/������������������������������������������������������������������������0000755�0001750�0001750�00000000000�13642365212�012417� 5����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/po/Makefile.in�������������������������������������������������������������0000644�0001750�0001750�00000043022�13642360054�014404� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = WINGs/po ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ $(top_srcdir)/m4/ax_pthread.m4 \ $(top_srcdir)/m4/ld-version-script.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/windowmaker.m4 \ $(top_srcdir)/m4/wm_attributes.m4 \ $(top_srcdir)/m4/wm_cflags_check.m4 \ $(top_srcdir)/m4/wm_i18n.m4 \ $(top_srcdir)/m4/wm_imgfmt_check.m4 \ $(top_srcdir)/m4/wm_libexif.m4 $(top_srcdir)/m4/wm_libmath.m4 \ $(top_srcdir)/m4/wm_prog_cc_c11.m4 \ $(top_srcdir)/m4/wm_xext_check.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in README DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ GFXLIBS = @GFXLIBS@ GREP = @GREP@ HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLIBS = @INTLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBBSD = @LIBBSD@ LIBEXIF = @LIBEXIF@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXINERAMA = @LIBXINERAMA@ LIBXMU = @LIBXMU@ LIBXRANDR = @LIBXRANDR@ LINGUAS = @LINGUAS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAGICKFLAGS = @MAGICKFLAGS@ MAGICKLIBS = @MAGICKLIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MANLANGDIRS = @MANLANGDIRS@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOLIBS = @PANGOLIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILMOFILES = @UTILMOFILES@ VERSION = @VERSION@ WINGSMOFILES = @WINGSMOFILES@ WINGS_VERSION = @WINGS_VERSION@ WMAKERMOFILES = @WMAKERMOFILES@ WPREFSMOFILES = @WPREFSMOFILES@ WRASTER_VERSION = @WRASTER_VERSION@ WUTIL_VERSION = @WUTIL_VERSION@ XCFLAGS = @XCFLAGS@ XFTCONFIG = @XFTCONFIG@ XFTFLAGS = @XFTFLAGS@ XFTLIBS = @XFTLIBS@ XGETTEXT = @XGETTEXT@ XLFLAGS = @XLFLAGS@ XLIBS = @XLIBS@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBRARY_PATH = @X_LIBRARY_PATH@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ defsdatadir = @defsdatadir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ inc_search_path = @inc_search_path@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lcov_output_directory = @lcov_output_directory@ lib_search_path = @lib_search_path@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pixmapdir = @pixmapdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ wprefs_bindir = @wprefs_bindir@ wprefs_datadir = @wprefs_datadir@ DOMAIN = WINGs CATALOGS = @WINGSMOFILES@ CLEANFILES = $(CATALOGS) $(DOMAIN).pot EXTRA_DIST = bg.po ca.po cs.po de.po fr.po fy.po hu.po nl.po sk.po # WUtil files: # WINGs files: POTFILES = $(top_srcdir)/WINGs/array.c $(top_srcdir)/WINGs/bagtree.c \ $(top_srcdir)/WINGs/data.c $(top_srcdir)/WINGs/error.c \ $(top_srcdir)/WINGs/findfile.c $(top_srcdir)/WINGs/handlers.c \ $(top_srcdir)/WINGs/hashtable.c $(top_srcdir)/WINGs/memory.c \ $(top_srcdir)/WINGs/menuparser.c \ $(top_srcdir)/WINGs/menuparser_macros.c \ $(top_srcdir)/WINGs/misc.c $(top_srcdir)/WINGs/notification.c \ $(top_srcdir)/WINGs/proplist.c $(top_srcdir)/WINGs/string.c \ $(top_srcdir)/WINGs/tree.c $(top_srcdir)/WINGs/userdefaults.c \ $(top_srcdir)/WINGs/usleep.c \ $(top_srcdir)/WINGs/wapplication.c $(top_srcdir)/WINGs/wutil.c \ $(top_srcdir)/WINGs/configuration.c \ $(top_srcdir)/WINGs/dragcommon.c \ $(top_srcdir)/WINGs/dragdestination.c \ $(top_srcdir)/WINGs/dragsource.c \ $(top_srcdir)/WINGs/selection.c \ $(top_srcdir)/WINGs/wappresource.c \ $(top_srcdir)/WINGs/wballoon.c $(top_srcdir)/WINGs/wbox.c \ $(top_srcdir)/WINGs/wbrowser.c $(top_srcdir)/WINGs/wbutton.c \ $(top_srcdir)/WINGs/wcolor.c $(top_srcdir)/WINGs/wcolorpanel.c \ $(top_srcdir)/WINGs/wcolorwell.c $(top_srcdir)/WINGs/wevent.c \ $(top_srcdir)/WINGs/wfilepanel.c $(top_srcdir)/WINGs/wframe.c \ $(top_srcdir)/WINGs/wfont.c $(top_srcdir)/WINGs/wfontpanel.c \ $(top_srcdir)/WINGs/widgets.c \ $(top_srcdir)/WINGs/winputmethod.c \ $(top_srcdir)/WINGs/wlabel.c $(top_srcdir)/WINGs/wlist.c \ $(top_srcdir)/WINGs/wmenuitem.c $(top_srcdir)/WINGs/wmisc.c \ $(top_srcdir)/WINGs/wpanel.c $(top_srcdir)/WINGs/wpixmap.c \ $(top_srcdir)/WINGs/wpopupbutton.c \ $(top_srcdir)/WINGs/wprogressindicator.c \ $(top_srcdir)/WINGs/wruler.c $(top_srcdir)/WINGs/wscroller.c \ $(top_srcdir)/WINGs/wscrollview.c \ $(top_srcdir)/WINGs/wslider.c $(top_srcdir)/WINGs/wsplitview.c \ $(top_srcdir)/WINGs/wtabview.c $(top_srcdir)/WINGs/wtext.c \ $(top_srcdir)/WINGs/wtextfield.c $(top_srcdir)/WINGs/wview.c \ $(top_srcdir)/WINGs/wwindow.c SUFFIXES = .po .mo # Create a 'silent rule' for our make check the same way automake does AM_V_CHKTRANS = $(am__v_CHKTRANS_$(V)) am__v_CHKTRANS_ = $(am__v_CHKTRANS_$(AM_DEFAULT_VERBOSITY)) am__v_CHKTRANS_0 = @echo " CHK translations" ; am__v_CHKTRANS_1 = all: all-am .SUFFIXES: .SUFFIXES: .po .mo $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu WINGs/po/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu WINGs/po/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) check-local check: check-am all-am: Makefile all-local installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-data-local install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-local .MAKE: check-am install-am install-strip .PHONY: all all-am all-local check check-am check-local clean \ clean-generic clean-libtool cscopelist-am ctags-am distclean \ distclean-generic distclean-libtool distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-data-local install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-local .PRECIOUS: Makefile .po.mo: $(AM_V_GEN)$(MSGFMT) -c -o $@ $< all-local: $(CATALOGS) .PHONY: update-lang @HAVE_XGETTEXT_TRUE@update-lang: $(DOMAIN).pot @HAVE_XGETTEXT_TRUE@ $(AM_V_GEN)$(top_srcdir)/script/generate-po-from-template.sh \ @HAVE_XGETTEXT_TRUE@ -n "$(PACKAGE_NAME)" -v "$(PACKAGE_VERSION)" -b "$(PACKAGE_BUGREPORT)" \ @HAVE_XGETTEXT_TRUE@ -t "$(DOMAIN).pot" "$(srcdir)/$(PO).po" @HAVE_XGETTEXT_TRUE@$(DOMAIN).pot: $(POTFILES) @HAVE_XGETTEXT_TRUE@ $(AM_V_GEN)$(XGETTEXT) --default-domain=$(DOMAIN) \ @HAVE_XGETTEXT_TRUE@ --add-comments --keyword=_ --keyword=N_ $(POTFILES) @HAVE_XGETTEXT_TRUE@ @if cmp -s $(DOMAIN).po $(DOMAIN).pot; then \ @HAVE_XGETTEXT_TRUE@ rm -f $(DOMAIN).po; \ @HAVE_XGETTEXT_TRUE@ else \ @HAVE_XGETTEXT_TRUE@ mv -f $(DOMAIN).po $(DOMAIN).pot; \ @HAVE_XGETTEXT_TRUE@ fi install-data-local: $(CATALOGS) $(mkinstalldirs) $(DESTDIR)$(localedir) for n in $(CATALOGS) __DuMmY ; do \ if test "$$n" -a "$$n" != "__DuMmY" ; then \ l=`basename $$n .mo`; \ $(mkinstalldirs) $(DESTDIR)$(localedir)/$$l/LC_MESSAGES; \ $(INSTALL_DATA) -m 644 $$n $(DESTDIR)$(localedir)/$$l/LC_MESSAGES/$(DOMAIN).mo; \ fi; \ done uninstall-local: for n in $(CATALOGS) ; do \ l=`basename $$n .mo`; \ rm -f $(DESTDIR)$(localedir)/$$l/LC_MESSAGES/$(DOMAIN).mo; \ done # 'make check' will make sure the tranlation sources are in line with the compiled source check-local: $(AM_V_CHKTRANS)$(top_srcdir)/script/check-translation-sources.sh \ "$(srcdir)" -s "$(top_srcdir)/WINGs/Makefile.am" # 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. .NOEXPORT: ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/po/fr.po�������������������������������������������������������������������0000644�0001750�0001750�00000050145�13431646201�013307� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# KTranslator Generated File # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # msgid "" msgstr "" "Project-Id-Version: WINGs 0.80.0\n" "POT-Creation-Date: 2003-05-02 15:39+0200\n" "PO-Revision-Date: 2002-01-09 21:20+0100\n" "Last-Translator: Emmanuel Benoit <tseeker@neptune.fr>\n" "Language-Team: Français <fr@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: unknown\n" #: ../../WINGs/connection.c:467 ../../WINGs/connection.c:532 #: ../../WINGs/connection.c:575 msgid "Bad address-service-protocol combination" msgstr "Mauvaise combinaison adresse-service-protocole" #: ../../WINGs/error.c:54 #, c-format msgid "Unknown error %d" msgstr "Erreur inconnue %d" #: ../../WINGs/error.c:59 #, c-format msgid "Error %d" msgstr "Erreur %d" #: ../../WINGs/error.c:110 msgid "warning: " msgstr "avertissement : " #: ../../WINGs/error.c:137 msgid "fatal: " msgstr "erreur fatale : " #: ../../WINGs/error.c:163 ../../WINGs/error.c:192 msgid "error: " msgstr "erreur : " #: ../../WINGs/findfile.c:48 #, c-format msgid "could not get password entry for UID %i" msgstr "Impossible de lire le mot de passe de l'UID %i" #: ../../WINGs/findfile.c:66 #, c-format msgid "could not get password entry for user %s" msgstr "Impossible de lire le mot de passe de l'utilisateur %s" #: ../../WINGs/host.c:114 msgid "Cannot get current host name" msgstr "Impossible de déterminer le nom de la machine" # TODO pas de traduction correcte possible, cf source. #: ../../WINGs/proplist.c:91 #, c-format msgid "syntax error in %s %s, line %i: %s" msgstr "Faute de syntaxe dans %s %s, ligne %i : %s" #: ../../WINGs/proplist.c:150 msgid "Only string or data is supported for a proplist dictionary key" msgstr "" "Seuls les types string ou data sont supportés pour une clé de dictionnaire " "Proplist" #: ../../WINGs/proplist.c:184 ../../WINGs/proplist.c:236 #: ../../WINGs/proplist.c:394 ../../WINGs/proplist.c:474 #: ../../WINGs/proplist.c:1075 ../../WINGs/proplist.c:1127 #: ../../WINGs/proplist.c:1293 ../../WINGs/proplist.c:1372 #: ../../WINGs/proplist.c:1493 ../../WINGs/proplist.c:1540 msgid "Used proplist functions on non-WMPropLists objects" msgstr "Une fonction Proplist a été utilisée sur des objets non-WMPropList" #: ../../WINGs/proplist.c:630 msgid "unterminated PropList string" msgstr "chaîne PropList sans fin" #: ../../WINGs/proplist.c:670 msgid "unterminated PropList data" msgstr "données PropList sans fin" #: ../../WINGs/proplist.c:678 msgid "unterminated PropList data (missing hexdigit)" msgstr "données PropList sans fin (il manque un chiffre hexadécimal)" #: ../../WINGs/proplist.c:690 ../../WINGs/proplist.c:695 msgid "non hexdigit character in PropList data" msgstr "caractère non-hexadécimal dans les données PropList" #: ../../WINGs/proplist.c:729 msgid "unterminated PropList array" msgstr "tableau PropList sans fin" #: ../../WINGs/proplist.c:737 msgid "missing or unterminated PropList array" msgstr "tableau PropList manquant ou sans fin" #: ../../WINGs/proplist.c:747 msgid "could not get PropList array element" msgstr "impossible de lire l'élément du tableau PropList" #: ../../WINGs/proplist.c:776 msgid "unterminated PropList dictionary" msgstr "dictionnaire PropList sans fin" #: ../../WINGs/proplist.c:793 msgid "missing PropList dictionary key" msgstr "clef du dictionnaire PropList manquante" #: ../../WINGs/proplist.c:795 msgid "missing PropList dictionary entry key or unterminated dictionary" msgstr "clef du dictionnaire PropList manquante ou dictionnaire sans fin" #: ../../WINGs/proplist.c:803 msgid "error parsing PropList dictionary key" msgstr "erreur lors de l'analyse de la clef de dictionnaire PropList" #: ../../WINGs/proplist.c:811 msgid "missing = in PropList dictionary entry" msgstr "signe '=' manquant dans l'entrée du dictionnaire PropList" #: ../../WINGs/proplist.c:819 msgid "error parsing PropList dictionary entry value" msgstr "" "erreur lors de l'analyse de la valeur de l'entrée du dictionnaire PropList" #: ../../WINGs/proplist.c:827 msgid "missing ; in PropList dictionary entry" msgstr "signe ';' manquant dans l'entrée du dictionnaire PropList" #: ../../WINGs/proplist.c:888 msgid "" "was expecting a string, data, array or dictionary. If it's a string, try " "enclosing it with \"." msgstr "" "une chaine, des données, un tableau ou un dictionnaire étaient attendus. " "S'il s'agit d'une chaîne, essayez de la délimiter grâce à '\"'." #: ../../WINGs/proplist.c:892 msgid "Comments are not allowed inside WindowMaker owned domain files." msgstr "" "Les commentaires ne sont pas autorisés dans les fichiers appartenant au " "domaine de Window Maker." #: ../../WINGs/proplist.c:1563 ../../WINGs/proplist.c:1628 msgid "extra data after end of property list" msgstr "données excédentaires après la fin de la liste de propriétés" #: ../../WINGs/proplist.c:1606 #, c-format msgid "could not get size for file '%s'" msgstr "impossible de déterminer la taille du fichier '%s'" #: ../../WINGs/proplist.c:1618 #, c-format msgid "error reading from file '%s'" msgstr "erreur pendant la lecture du fichier '%s'" #: ../../WINGs/proplist.c:1669 #, c-format msgid "mkstemp (%s) failed" msgstr "mkstemp (%s) a échoué" #: ../../WINGs/proplist.c:1680 #, c-format msgid "mktemp (%s) failed" msgstr "mktemp (%s) a échoué" #: ../../WINGs/proplist.c:1691 #, c-format msgid "open (%s) failed" msgstr "open (%s) a échoué" #: ../../WINGs/proplist.c:1698 #, c-format msgid "writing to file: %s failed" msgstr "erreur pendant l'écriture dans le fichier '%s'" #: ../../WINGs/proplist.c:1706 #, c-format msgid "fclose (%s) failed" msgstr "erreur lors de la fermeture du fichier '%s'" #: ../../WINGs/proplist.c:1715 #, c-format msgid "rename ('%s' to '%s') failed" msgstr "impossible de renommer '%s' en '%s'" #. something happened with the file. just overwrite it #: ../../WINGs/userdefaults.c:188 ../../WINGs/userdefaults.c:204 #, c-format msgid "cannot read domain from file '%s' when syncing" msgstr "" "impossible de lire le domaine depuis le fichier '%s' pendant la " "synchronisation" #: ../../WINGs/wcolor.c:224 ../../WINGs/wcolor.c:236 ../../WINGs/wcolor.c:275 #: ../../WINGs/wcolor.c:316 #, c-format msgid "could not allocate %s color" msgstr "impossible d'allouer la couleur %s" #: ../../WINGs/wcolor.c:224 msgid "white" msgstr "blanc" #: ../../WINGs/wcolor.c:236 msgid "black" msgstr "noir" #: ../../WINGs/wcolor.c:275 msgid "gray" msgstr "gris" #: ../../WINGs/wcolor.c:316 msgid "dark gray" msgstr "gris sombre" #: ../../WINGs/wcolorpanel.c:420 msgid "Colors" msgstr "Couleurs" #: ../../WINGs/wcolorpanel.c:610 ../../WINGs/wcolorpanel.c:2829 msgid "Brightness" msgstr "Luminosité" #: ../../WINGs/wcolorpanel.c:612 ../../WINGs/wcolorpanel.c:688 #: ../../WINGs/wcolorpanel.c:721 ../../WINGs/wcolorpanel.c:755 #: ../../WINGs/wcolorpanel.c:815 ../../WINGs/wcolorpanel.c:849 #: ../../WINGs/wcolorpanel.c:883 ../../WINGs/wcolorpanel.c:918 #: ../../WINGs/wcolorpanel.c:2169 ../../WINGs/wcolorpanel.c:2831 #: ../../WINGs/wcolorpanel.c:2867 ../../WINGs/wcolorpanel.c:2903 #: ../../WINGs/wcolorpanel.c:3745 msgid "Color Panel: Could not allocate memory" msgstr "Panneau de Sélection des Couleur: impossible d'allouer la mémoire" #: ../../WINGs/wcolorpanel.c:685 ../../WINGs/wcolorpanel.c:686 msgid "Red" msgstr "Rouge" #: ../../WINGs/wcolorpanel.c:718 ../../WINGs/wcolorpanel.c:719 msgid "Green" msgstr "Vert" #: ../../WINGs/wcolorpanel.c:752 ../../WINGs/wcolorpanel.c:753 msgid "Blue" msgstr "Bleu" #: ../../WINGs/wcolorpanel.c:812 ../../WINGs/wcolorpanel.c:813 msgid "Cyan" msgstr "Cyan" #: ../../WINGs/wcolorpanel.c:846 ../../WINGs/wcolorpanel.c:847 msgid "Magenta" msgstr "Magenta" #: ../../WINGs/wcolorpanel.c:880 ../../WINGs/wcolorpanel.c:881 msgid "Yellow" msgstr "Jaune" #: ../../WINGs/wcolorpanel.c:915 ../../WINGs/wcolorpanel.c:916 msgid "Black" msgstr "Noir" #: ../../WINGs/wcolorpanel.c:996 msgid "Spectrum" msgstr "Spectre" #: ../../WINGs/wcolorpanel.c:1026 msgid "Palette" msgstr "Palette" #: ../../WINGs/wcolorpanel.c:1032 msgid "New from File..." msgstr "Nouveau d'après le fichier..." #: ../../WINGs/wcolorpanel.c:1033 ../../WINGs/wcolorpanel.c:1081 #: ../../WINGs/wcolorpanel.c:1098 msgid "Rename..." msgstr "Renommer..." #: ../../WINGs/wcolorpanel.c:1034 ../../WINGs/wcolorpanel.c:1082 #: ../../WINGs/wcolorpanel.c:1099 ../../WINGs/wcolorpanel.c:3326 msgid "Remove" msgstr "Supprimer" #: ../../WINGs/wcolorpanel.c:1035 msgid "Copy" msgstr "Copier" #: ../../WINGs/wcolorpanel.c:1036 msgid "New from Clipboard" msgstr "Nouveau d'après le presse-papier" #: ../../WINGs/wcolorpanel.c:1057 msgid "X11-Colors" msgstr "Couleurs X11" #: ../../WINGs/wcolorpanel.c:1074 msgid "Color" msgstr "Couleur" #: ../../WINGs/wcolorpanel.c:1080 msgid "Add..." msgstr "Ajouter..." #: ../../WINGs/wcolorpanel.c:1090 msgid "List" msgstr "Liste" #: ../../WINGs/wcolorpanel.c:1097 msgid "New..." msgstr "Nouveau..." #: ../../WINGs/wcolorpanel.c:1236 #, c-format msgid "" "Color Panel: Could not create directory %s needed to store configurations" msgstr "" "Panneau de sélection des couleurs : impossible de créer le répertoire %s " "requis pour enregistrer les configurations." #. Delete the file, it doesn't belong here #: ../../WINGs/wcolorpanel.c:1242 ../../WINGs/wcolorpanel.c:3212 #: ../../WINGs/wcolorpanel.c:3216 msgid "File Error" msgstr "Erreur de fichier" #: ../../WINGs/wcolorpanel.c:1243 msgid "Could not create ColorPanel configuration directory" msgstr "" "Impossible de créer le répertoire pour la configuration du panneau de " "sélection des couleurs." #: ../../WINGs/wcolorpanel.c:1244 ../../WINGs/wcolorpanel.c:3213 #: ../../WINGs/wcolorpanel.c:3218 ../../WINGs/wcolorpanel.c:3245 #: ../../WINGs/wfilepanel.c:250 ../../WINGs/wfilepanel.c:650 #: ../../WINGs/wfilepanel.c:662 ../../WINGs/wfilepanel.c:763 #: ../../WINGs/wfilepanel.c:974 ../../WINGs/wfontpanel.c:751 msgid "OK" msgstr "OK" #: ../../WINGs/wcolorpanel.c:1250 ../../WINGs/wcolorpanel.c:1286 #: ../../WINGs/wcolorpanel.c:1304 msgid "Color Panel: Could not find file" msgstr "Panneau de sélection des couleurs : Impossible de trouver le fichier." #: ../../WINGs/wcolorpanel.c:1491 ../../WINGs/wcolorpanel.c:1556 #: ../../WINGs/wcolorpanel.c:1620 msgid "Color Panel: X failed request" msgstr "Panneau de sélection des couleurs : échec d'une requête X" #: ../../WINGs/wcolorpanel.c:2865 msgid "Saturation" msgstr "Saturation" #: ../../WINGs/wcolorpanel.c:2901 msgid "Hue" msgstr "Teinte" #: ../../WINGs/wcolorpanel.c:3151 msgid "Open Palette" msgstr "Ouvrir une palette" #: ../../WINGs/wcolorpanel.c:3213 msgid "Invalid file format !" msgstr "Format de fichier invalide !" #: ../../WINGs/wcolorpanel.c:3215 #, c-format msgid "can't remove file %s" msgstr "Impossible de supprimer le fichier %s." #: ../../WINGs/wcolorpanel.c:3217 msgid "Couldn't remove file from Configuration Directory !" msgstr "Impossible de supprimer le fichier du répertoire de configuration !" #: ../../WINGs/wcolorpanel.c:3244 msgid "Rename" msgstr "Renommer" #: ../../WINGs/wcolorpanel.c:3244 msgid "Rename palette to:" msgstr "Renommer la palette en :" #: ../../WINGs/wcolorpanel.c:3245 ../../WINGs/wfilepanel.c:259 #: ../../WINGs/wfilepanel.c:662 ../../WINGs/wfilepanel.c:763 msgid "Cancel" msgstr "Annuler" #. Careful, this palette exists already #: ../../WINGs/wcolorpanel.c:3261 ../../WINGs/wfilepanel.c:763 msgid "Warning" msgstr "Avertissement" #: ../../WINGs/wcolorpanel.c:3262 msgid "" "Palette already exists !\n" "\n" "Overwrite ?" msgstr "" "La palette existe déjà !\n" "\n" "Écraser ?" #: ../../WINGs/wcolorpanel.c:3262 ../../WINGs/wcolorpanel.c:3326 msgid "No" msgstr "Non" #: ../../WINGs/wcolorpanel.c:3262 ../../WINGs/wcolorpanel.c:3326 msgid "Yes" msgstr "Oui" #: ../../WINGs/wcolorpanel.c:3294 #, c-format msgid "Couldn't rename palette %s to %s\n" msgstr "Impossible de renommer la palette %s en %s.\n" #: ../../WINGs/wcolorpanel.c:3320 msgid "This will permanently remove the palette " msgstr "Ceci détruira définitivement la palette " #: ../../WINGs/wcolorpanel.c:3323 msgid "" ".\n" "\n" "Are you sure you want to remove this palette ?" msgstr "" ".\n" "\n" "Êtes-vous sûr de vouloir supprimer cette palette ?" #: ../../WINGs/wcolorpanel.c:3348 #, c-format msgid "Couldn't remove palette %s\n" msgstr "Impossible de détruire la palette %s.\n" #: ../../WINGs/wcolorpanel.c:3647 #, c-format msgid "Could not open %s" msgstr "Impossible d'ouvrir %s." #: ../../WINGs/wcolorpanel.c:3654 #, c-format msgid "Could not create %s" msgstr "Impossible de créer %s." #: ../../WINGs/wcolorpanel.c:3665 #, c-format msgid "Write error on file %s" msgstr "Erreur d'écriture dans le fichier %s." #: ../../WINGs/wcolorpanel.c:3710 msgid "Color Panel: Color unspecified" msgstr "Panneau de sélection des couleurs: couleur non spécifiée." #: ../../WINGs/wfilepanel.c:235 msgid "Name:" msgstr "Nom :" #: ../../WINGs/wfilepanel.c:332 ../../WINGs/wfilepanel.c:396 msgid "Open" msgstr "Ouvrir" #: ../../WINGs/wfilepanel.c:350 ../../WINGs/wfilepanel.c:402 msgid "Save" msgstr "Enregistrer" #: ../../WINGs/wfilepanel.c:565 #, c-format msgid "WINGs: could not open directory %s\n" msgstr "WINGs : Impossible d'ouvrir le répertoire %s.\n" #: ../../WINGs/wfilepanel.c:583 #, c-format msgid "WINGs: could not stat %s\n" msgstr "WINGs : impossible de lire l'état du fichier %s.\n" #: ../../WINGs/wfilepanel.c:650 ../../WINGs/wfilepanel.c:973 #: ../../WINGs/wfontpanel.c:750 msgid "Error" msgstr "Erreur" #: ../../WINGs/wfilepanel.c:661 msgid "Create Directory" msgstr "Créer un répertoire" #: ../../WINGs/wfilepanel.c:662 msgid "Enter directory name" msgstr "Saisissez le nom du répertoire" #: ../../WINGs/wfilepanel.c:698 ../../WINGs/wfilepanel.c:737 #: ../../WINGs/wfilepanel.c:768 ../../WINGs/wfilepanel.c:796 msgid "Permission denied." msgstr "Permission refusée." #: ../../WINGs/wfilepanel.c:701 #, c-format msgid "'%s' already exists." msgstr "'%s' existe déjà." #: ../../WINGs/wfilepanel.c:704 msgid "Path does not exist." msgstr "Le chemin n'existe pas." #: ../../WINGs/wfilepanel.c:734 ../../WINGs/wfilepanel.c:793 #, c-format msgid "'%s' does not exist." msgstr "'%s' n'existe pas." #: ../../WINGs/wfilepanel.c:741 ../../WINGs/wfilepanel.c:800 msgid "Insufficient memory available." msgstr "Mémoire disponible insuffisante." #: ../../WINGs/wfilepanel.c:745 ../../WINGs/wfilepanel.c:804 #, c-format msgid "'%s' is on a read-only filesystem." msgstr "'%s' est sur un système de fichiers en lecture seule." #: ../../WINGs/wfilepanel.c:748 ../../WINGs/wfilepanel.c:780 #: ../../WINGs/wfilepanel.c:807 #, c-format msgid "Can not delete '%s'." msgstr "Impossible de supprimer '%s'." #: ../../WINGs/wfilepanel.c:755 #, c-format msgid "Delete directory %s ?" msgstr "Supprimer le répertoire %s ?" #: ../../WINGs/wfilepanel.c:759 #, c-format msgid "Delete file %s ?" msgstr "Supprimer le fichier %s ?" #: ../../WINGs/wfilepanel.c:771 #, c-format msgid "Directory '%s' does not exist." msgstr "Le répertoire '%s' n'existe pas." #: ../../WINGs/wfilepanel.c:774 #, c-format msgid "Directory '%s' is not empty." msgstr "Le répertoire '%s' n'est pas vide." #: ../../WINGs/wfilepanel.c:777 #, c-format msgid "Directory '%s' is busy." msgstr "Le répertoire '%s' est occupé." #: ../../WINGs/wfilepanel.c:790 #, c-format msgid "'%s' is a directory." msgstr "'%s' est un répertoire." #: ../../WINGs/wfilepanel.c:832 #, c-format msgid "An error occurred browsing '%s'." msgstr "Une erreur s'est produite pendant le parcours de '%s'." #: ../../WINGs/wfilepanel.c:836 #, c-format msgid "'%s' is not a directory." msgstr "'%s' n'est pas un répertoire." #: ../../WINGs/wfilepanel.c:973 msgid "File does not exist." msgstr "Le fichier n'existe pas." #: ../../WINGs/wfont.c:133 ../../WINGs/wfont.c:143 #, c-format msgid "Invalid size specification '%s' in %s. Using default %d\n" msgstr "" "Taille invalide dans %2$s : '%1$s'. Utilisation de la valeur par défaut %3" "$d\n" #: ../../WINGs/wfont.c:187 #, c-format msgid "the following character sets are missing in %s:" msgstr "Les jeux de caractères suivants manquent dans %s :" #: ../../WINGs/wfont.c:193 #, c-format msgid "" "the string \"%s\" will be used in place of any characters from those sets." msgstr "" "La chaîne « %s » sera utilisée à la place de tous les caractères de ces jeux." #. is arial a good fallback for multibyte? #: ../../WINGs/wfont.c:599 ../../WINGs/wfont.c:614 #, c-format msgid "could not load font %s. Trying arial." msgstr "" "Impossible de charger la police de caractères %s, essai de la police " "« arial »." #: ../../WINGs/wfont.c:606 msgid "could not load antialiased font set. Reverting to standard font sets." msgstr "" "Impossible de charger les polices lissées, utilisation des polices normales." #: ../../WINGs/wfont.c:609 #, c-format msgid "could not load FontSet %s. Trying fixed." msgstr "" "Impossible de charger la famille de polices %s, essai de la famille " "« fixed »." #: ../../WINGs/wfont.c:621 msgid "could not load antialiased fonts. Reverting to normal fonts." msgstr "" "Impossible de charger les polices lissées, utilisation des polices normales." #: ../../WINGs/wfont.c:624 ../../WINGs/wfont.c:635 #, c-format msgid "could not load font %s. Trying fixed." msgstr "" "Impossible de charger la police de caractères %s, essai de la police " "« fixed »." #: ../../WINGs/wfont.c:629 #, c-format msgid "could not load font set %s. Trying fixed." msgstr "" "Impossible de charger la famille de polices %s, essai de la famille " "« fixed »." #: ../../WINGs/wfont.c:639 msgid "could not load fixed font!" msgstr "Impossible de charger la police de caractères « fixed » !" #: ../../WINGs/wfont.c:704 ../../WINGs/wfont.c:765 ../../WINGs/wfont.c:836 #, c-format msgid "" "Conversion to widechar failed (possible invalid multibyte sequence): '%s':" "(pos %d)\n" msgstr "" "Échec de la conversion en widechar (probablement une séquence d'octets " "erronée) : « %s » (pos %d)\n" #: ../../WINGs/wfont.c:887 #, c-format msgid "font description %s is too large." msgstr "La description de la police de caractères %s est trop volumineuse." #. // remove warning later. or maybe not #: ../../WINGs/wfont.c:935 #, c-format msgid "Invalid font specification: '%s'\n" msgstr "Déclaration de police invalide : « %s »\n" #: ../../WINGs/wfontpanel.c:235 msgid "Test!!!" msgstr "Test !" #: ../../WINGs/wfontpanel.c:241 msgid "Family" msgstr "Famille" #: ../../WINGs/wfontpanel.c:252 msgid "Typeface" msgstr "Caractère" #: ../../WINGs/wfontpanel.c:263 msgid "Size" msgstr "Taille" #: ../../WINGs/wfontpanel.c:282 msgid "Set" msgstr "Famille" #: ../../WINGs/wfontpanel.c:288 msgid "Revert" msgstr "Revenir" #: ../../WINGs/wfontpanel.c:751 msgid "Could not retrieve font list" msgstr "Impossible de lire la liste des polices de caractères." #: ../../WINGs/wfontpanel.c:765 #, c-format msgid "font name %s is longer than 256, which is invalid." msgstr "" "Le nom de police %s a plus de 256 caractères et est par conséquent invalide." #: ../../WINGs/wfontpanel.c:913 msgid "Roman" msgstr "Roman" #: ../../WINGs/wfontpanel.c:916 msgid "Italic" msgstr "Italique" #: ../../WINGs/wfontpanel.c:918 msgid "Oblique" msgstr "Penché" #: ../../WINGs/wfontpanel.c:920 msgid "Rev Italic" msgstr "Italique inverse" #: ../../WINGs/wfontpanel.c:922 msgid "Rev Oblique" msgstr "Penché inverse" #: ../../WINGs/wfontpanel.c:928 msgid "Normal" msgstr "Normal" #: ../../WINGs/widgets.c:419 #, c-format msgid "WINGs: could not load widget images file: %s" msgstr "WINGs : impossible de charger le fichier d'images de widget '%s'." #: ../../WINGs/widgets.c:770 msgid "" "Text antialiasing is enabled in the configuration but the X server doesn't " "have the required capabilities (missing RENDER extension). Disabling text " "antialiasing." msgstr "" "Le lissage du texte est activé dans la configuration mais le serveur X ne " "dispose pas de l'extension adéquate (extension RENDER). Desactivation du " "lissage." #: ../../WINGs/widgets.c:787 msgid "" "could not load any fonts. Make sure your font installation and locale " "settings are correct." msgstr "" "Aucune police n'a pu être chargée. Veuillez vérifier que vos polices sont " "correctement installées et que votre langue est bien configurée." #: ../../WINGs/wruler.c:192 msgid "0 inches" msgstr "0 pouces" ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/po/README������������������������������������������������������������������0000644�0001750�0001750�00000001102�13431646201�013205� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������File Language Note Current Maintainer ------------------------------------------------------------------------------ ca.po Catalan Ernest Adrogu <eadrogue@gmx.net> cs.po Czech Jiri Hnidek <Jiri.Hnidek@vslib.cz de.po German Guido Scholz <guido.scholz@bayernline.de> fr.po French Emmanuel Benoit <tseeker@neptune.fr> Antoine Hulin <antoine@origan.fdn.org> sk.po Slovak Jan 'judas' Tomka <judas@linux.sk> bg.po Bulgarian Anton Zinoviev <zinoviev@debian.org> nl.po Dutch Alwin <translations@ziggo.nl> fy.po Frisian Alwin <translations@ziggo.nl> Notes ----- ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/po/fy.po�������������������������������������������������������������������0000644�0001750�0001750�00000054134�13642357773�013341� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Translation into Western Frisian for Window Maker # Copyright (C) 2015-2016 Window Maker Developers Team # This file is distributed under the same license as the windowmaker package. # Original by Alwin <translations@ziggo.nl>, 2015. # msgid "" msgstr "" "Project-Id-Version: wmaker-0.95.7+\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-01-21 16:19+0100\n" "PO-Revision-Date: 2016-01-21 00:00+0000\n" "Last-Translator: Alwin <translations@ziggo.nl>\n" "Language-Team: Western Frisian\n" "Language: fy\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../../WINGs/error.c:106 msgid "fatal: " msgstr "ûnwerstelber: " #: ../../WINGs/error.c:112 msgid "error: " msgstr "flater: " #: ../../WINGs/error.c:118 msgid "warning: " msgstr "warskôging: " #: ../../WINGs/findfile.c:63 #, c-format msgid "could not get password entry for UID %i" msgstr "koe accountgegevens foar UID %i net krije" #: ../../WINGs/findfile.c:93 #, c-format msgid "could not get password entry for user %s" msgstr "koe accountgegevens foar brûker %s net krije" #: ../../WINGs/findfile.c:212 #, c-format msgid "could not expand %s" msgstr "koe %s net útwurkje" #: ../../WINGs/findfile.c:441 #, c-format msgid "Could not open input file \"%s\": %s" msgstr "Koe ynfierbestân \"%s\" net iepenje: %s" #: ../../WINGs/findfile.c:457 #, c-format msgid "Could not create target file \"%s\": %s" msgstr "Koe doelbestân \"%s\" net oanmeitsje: %s" #: ../../WINGs/findfile.c:465 msgid "could not allocate memory for the copy buffer" msgstr "koe ûnthâld foar de kopybuffer net tawize" #: ../../WINGs/findfile.c:482 #, c-format msgid "could not read from file \"%s\": %s" msgstr "koe bestân \"%s\" net ynlêze: %s" #: ../../WINGs/findfile.c:497 #, c-format msgid "could not write data to file \"%s\": %s" msgstr "koe gjin data skriuwe nei bestân \"%s\": %s" #: ../../WINGs/findfile.c:509 #, c-format msgid "could not set permission 0%03o on file \"%s\": %s" msgstr "koe tastimming 0%03o net ynstelle op bestân \"%s\": %s" #: ../../WINGs/findfile.c:513 #, c-format msgid "could not close the file \"%s\": %s" msgstr "koe bestân \"%s\" net ôfslute: %s" #: ../../WINGs/menuparser.c:110 #, c-format msgid " included from file \"%s\" at line %d" msgstr " ynfoege út bestân \"%s\" op rigel %d" #: ../../WINGs/menuparser.c:142 #, c-format msgid "missing #endif to match #%s at line %d" msgstr "ûntbrekkende #endif behearrend by #%s op rigel %d" #: ../../WINGs/menuparser.c:200 msgid "multiple SHORTCUT definition not valid" msgstr "meartallige SHORTCUT-bepalingen net jildich" #: ../../WINGs/menuparser.c:253 msgid "premature end of file while expecting a new line after '\\'" msgstr "foartidich bestânsein, ferwachte in nije rigel nei '\\'" #: ../../WINGs/menuparser.c:279 #, c-format msgid "reached end of file while searching '*/' for comment started at line %d" msgstr "" "bestânsein berikt by sykjen nei '*/' foar kommentaar begûnen op rigel %d" #: ../../WINGs/menuparser.c:344 msgid "missing closing double-quote before end-of-line" msgstr "ûntbrekkend slutend dûbeld oanhelteken foar rigelein" #: ../../WINGs/menuparser.c:362 msgid "missing closing simple-quote before end-of-line" msgstr "ûntbrekkend slutend inkeld oanhelteken foar rigelein" #: ../../WINGs/menuparser.c:380 msgid "too many nested macro expansions, breaking loop" msgstr "te folle neske makro-útwurkingen, syklus ôfbrutsen" #: ../../WINGs/menuparser.c:439 #, c-format msgid "unknown directive '#%s'" msgstr "ûnbekende oanwizing '#%s'" #: ../../WINGs/menuparser.c:444 #, c-format msgid "extra text after '#' command is ignored: \"%.16s...\"" msgstr "ekstra tekst nei #-kommando wurdt negearre: \"%.16s...\"" #: ../../WINGs/menuparser.c:459 msgid "no file name found for #include" msgstr "gjin bestânsnamme fûn foar #include" #: ../../WINGs/menuparser.c:471 msgid "file name must be enclosed in brackets or double-quotes for #define" msgstr "" "bestânsnamme moat omsletten wurde mei heakjes of dûbelde oanheltekens foar " "#define" #: ../../WINGs/menuparser.c:485 #, c-format msgid "missing closing '%c' in filename specification" msgstr "ûntbrekkende slutende '%c' yn bestânsnammeopjefte" #: ../../WINGs/menuparser.c:503 msgid "too many nested #include's" msgstr "te folle neske #include's" #: ../../WINGs/menuparser.c:568 #, c-format msgid "could not find file \"%s\" for #include" msgstr "koe bestân \"%s\" net fine foar #include" #: ../../WINGs/menuparser.c:589 #, c-format msgid "missing macro name argument to #%s" msgstr "ûntbrekkend makronamme-argumint by #%s" #: ../../WINGs/menuparser.c:600 msgid "too many nested #if sequences" msgstr "te folle neske #if-rigen" #: ../../WINGs/menuparser.c:626 ../../WINGs/menuparser.c:643 #, c-format msgid "found #%s but has no matching #if" msgstr "#%s fûn, mar hat gjin bybehearrende #if" #: ../../WINGs/menuparser_macros.c:166 msgid "no macro name found for #define" msgstr "gjin makronamme fûn foar #define" #: ../../WINGs/menuparser_macros.c:187 #, c-format msgid "premature end of file while reading arg-list for macro \"%s\"" msgstr "foartidich bestânsein by ynlêzen arg.-list foar makro \"%s\"" #: ../../WINGs/menuparser_macros.c:194 #, c-format msgid "too many parameters for macro \"%s\" definition" msgstr "te folle parameters foar bepaling makro \"%s\"" #: ../../WINGs/menuparser_macros.c:209 #, c-format msgid "" "invalid character '%c' in arg-list for macro \"%s\" while expecting " "parameter name" msgstr "" "ûnjildich letterteken '%c' yn arg.-list foar makro \"%s\", ferwachte " "parameternamme" #: ../../WINGs/menuparser_macros.c:220 #, c-format msgid "" "invalid character '%c' in arg-list for macro \"%s\" while expecting ',' or " "')'" msgstr "" "ûnjildich letterteken '%c' yn arg.-list foar makro \"%s\", ferwachte ',' of " "')'" #: ../../WINGs/menuparser_macros.c:253 #, c-format msgid "macro \"%s\" already defined, ignoring redefinition" msgstr "makro \"%s\" al definiearre, negearret werdefiniearjen" #: ../../WINGs/menuparser_macros.c:346 #, c-format msgid "more content than supported for the macro \"%s\"" msgstr "mear ynhâld as stipe foar makro \"%s\"" #: ../../WINGs/menuparser_macros.c:455 #, c-format msgid "expansion for macro \"%s\" too big, line truncated" msgstr "útwurking foar makro \"%s\" te grut, rigel ynkoarte" #: ../../WINGs/menuparser_macros.c:467 #, c-format msgid "macro \"%s\" needs parenthesis for arguments" msgstr "makro \"%s\" hat heakjes nedich foar arguminten" #: ../../WINGs/menuparser_macros.c:498 msgid "missing closing quote or double-quote before end-of-line" msgstr "ûntbrekkend slutend of dûbeld oanhelteken foar rigelein" #: ../../WINGs/menuparser_macros.c:521 #, c-format msgid "too many arguments for macro \"%s\", expected only %d" msgstr "te folle arguminten foar makro \"%s\", ferwachte allinnich %d" #: ../../WINGs/menuparser_macros.c:530 #, c-format msgid "premature end of line while searching for arguments to macro \"%s\"" msgstr "foartidich rigelein by sykjen nei arguminten by makro \"%s\"" #: ../../WINGs/menuparser_macros.c:536 #, c-format msgid "not enough arguments for macro \"%s\", expected %d but got only %d" msgstr "" "ûnfoldwaande arguminten foar makro \"%s\", ferwachte %d, mar krige allinnich " "%d" #: ../../WINGs/menuparser_macros.c:541 #, c-format msgid "too much data in parameter list of macro \"%s\", truncated" msgstr "te folle data yn parameterlist fan makro \"%s\", ynkoarte" #: ../../WINGs/menuparser_macros.c:561 #, c-format msgid "size of value for macro '%s' is too big, truncated" msgstr "wearde foar makro '%s' is te lang, ynkoarte" #: ../../WINGs/menuparser_macros.c:642 ../../WINGs/menuparser_macros.c:668 #, c-format msgid "could not determine %s" msgstr "koe %s net fêststelle" #: ../../WINGs/proplist.c:78 #, c-format msgid "syntax error in %s %s, line %i: %s" msgstr "syntaksflater yn %s %s, rigel %i: %s" #: ../../WINGs/proplist.c:134 msgid "Only string or data is supported for a proplist dictionary key" msgstr "" #: ../../WINGs/proplist.c:167 ../../WINGs/proplist.c:217 #: ../../WINGs/proplist.c:382 ../../WINGs/proplist.c:458 #: ../../WINGs/proplist.c:1048 ../../WINGs/proplist.c:1098 #: ../../WINGs/proplist.c:1246 ../../WINGs/proplist.c:1314 #: ../../WINGs/proplist.c:1419 ../../WINGs/proplist.c:1463 msgid "Used proplist functions on non-WMPropLists objects" msgstr "" #: ../../WINGs/proplist.c:635 msgid "unterminated PropList string" msgstr "" #: ../../WINGs/proplist.c:673 msgid "unterminated PropList data" msgstr "" #: ../../WINGs/proplist.c:681 msgid "unterminated PropList data (missing hexdigit)" msgstr "" #: ../../WINGs/proplist.c:693 ../../WINGs/proplist.c:698 msgid "non hexdigit character in PropList data" msgstr "" #: ../../WINGs/proplist.c:730 msgid "unterminated PropList array" msgstr "" #: ../../WINGs/proplist.c:738 msgid "missing or unterminated PropList array" msgstr "" #: ../../WINGs/proplist.c:748 msgid "could not get PropList array element" msgstr "" #: ../../WINGs/proplist.c:775 msgid "unterminated PropList dictionary" msgstr "" #: ../../WINGs/proplist.c:792 msgid "missing PropList dictionary key" msgstr "" #: ../../WINGs/proplist.c:794 msgid "missing PropList dictionary entry key or unterminated dictionary" msgstr "" #: ../../WINGs/proplist.c:802 msgid "error parsing PropList dictionary key" msgstr "" #: ../../WINGs/proplist.c:810 msgid "missing = in PropList dictionary entry" msgstr "" #: ../../WINGs/proplist.c:818 msgid "error parsing PropList dictionary entry value" msgstr "" #: ../../WINGs/proplist.c:826 msgid "missing ; in PropList dictionary entry" msgstr "" #: ../../WINGs/proplist.c:885 msgid "" "was expecting a string, data, array or dictionary. If it's a string, try " "enclosing it with \"." msgstr "" #: ../../WINGs/proplist.c:888 msgid "Comments are not allowed inside WindowMaker owned domain files." msgstr "Kommentaar is net tastean binnen domeinbestannen fan WindowMaker." #: ../../WINGs/proplist.c:1483 ../../WINGs/proplist.c:1548 #: ../../WINGs/proplist.c:1612 msgid "extra data after end of property list" msgstr "ekstra data nei ein fan 'property list'" #: ../../WINGs/proplist.c:1523 #, c-format msgid "could not get size for file '%s'" msgstr "koe grutte foar bestân '%s' net krije" #: ../../WINGs/proplist.c:1531 #, c-format msgid "error reading from file '%s'" msgstr "flater by ynlêzen bestân '%s'" #: ../../WINGs/proplist.c:1578 #, c-format msgid "%s:could not open menu file" msgstr "%s:koe menubestân net iepenje" #: ../../WINGs/proplist.c:1660 #, c-format msgid "mkstemp (%s) failed" msgstr "oanmeitsjen unyk tydlik bestân (%s) mislearre" #: ../../WINGs/proplist.c:1670 #, c-format msgid "mktemp (%s) failed" msgstr "oanmeitsjen tydlik bestân (%s) mislearre" #: ../../WINGs/proplist.c:1677 #, c-format msgid "open (%s) failed" msgstr "iepenjen (%s) mislearre" #: ../../WINGs/proplist.c:1684 #, c-format msgid "writing to file: %s failed" msgstr "skriuwen nei bestân: %s mislearre" #: ../../WINGs/proplist.c:1693 #, c-format msgid "fclose (%s) failed" msgstr "ôfsluten stream (%s) mislearre" #: ../../WINGs/proplist.c:1701 #, c-format msgid "rename ('%s' to '%s') failed" msgstr "omneamen ('%s' nei '%s') mislearre" #: ../../WINGs/proplist.c:1772 #, c-format msgid "Could not create component %s" msgstr "Koe komponint %s net oanmeitsje" #: ../../WINGs/userdefaults.c:72 msgid "variable WMAKER_USER_ROOT defined with invalid path, not used" msgstr "fariabele WMAKER_USER_ROOT, definiearre mei ûnjildich paad, net brûkt" #. something happened with the file. just overwrite it #: ../../WINGs/userdefaults.c:210 ../../WINGs/userdefaults.c:225 #, c-format msgid "cannot read domain from file '%s' when syncing" msgstr "kin domeinbestân '%s' net ynlêze by syngronisearjen" #: ../../WINGs/dragcommon.c:60 #, c-format msgid "unknown XDND action %s" msgstr "ûnbekende XDND-aksje %s" #: ../../WINGs/dragcommon.c:142 #, c-format msgid "target %lu for XDND message no longer exists" msgstr "doel %lu foar XDND-berjocht bestiet net mear" #: ../../WINGs/dragcommon.c:220 #, c-format msgid "unsupported version %i for XDND enter message" msgstr "net-stipe ferzje %i foar XDND-berjocht by binnen gean" #: ../../WINGs/dragsource.c:163 msgid "XDND selection lost during drag operation..." msgstr "XDND-seleksje ferlern ûnder fersleephanneling..." #: ../../WINGs/dragsource.c:758 msgid "could not get XDND version for target of drop" msgstr "koe XDND-ferzje net krije foar doel fan ferslepen" #: ../../WINGs/dragsource.c:774 msgid "could not get ownership of XDND selection" msgstr "koe eigendom fan XDND-seleksje net krije" #: ../../WINGs/dragsource.c:1070 msgid "delay for drag destination response expired" msgstr "wachttiid foar antwurd fersleepbestimming ferstrutsen" #: ../../WINGs/wcolor.c:204 ../../WINGs/wcolor.c:214 ../../WINGs/wcolor.c:250 #: ../../WINGs/wcolor.c:288 #, c-format msgid "could not allocate %s color" msgstr "koe kleur %s net tawize" #: ../../WINGs/wcolor.c:204 msgid "white" msgstr "wyt" #: ../../WINGs/wcolor.c:214 msgid "black" msgstr "swart" #: ../../WINGs/wcolor.c:250 msgid "gray" msgstr "griis" #: ../../WINGs/wcolor.c:288 msgid "dark gray" msgstr "donkergriis" #: ../../WINGs/wcolorpanel.c:393 msgid "Colors" msgstr "Kleuren" #: ../../WINGs/wcolorpanel.c:568 ../../WINGs/wcolorpanel.c:2720 msgid "Brightness" msgstr "Helderens" #: ../../WINGs/wcolorpanel.c:570 ../../WINGs/wcolorpanel.c:644 #: ../../WINGs/wcolorpanel.c:675 ../../WINGs/wcolorpanel.c:706 #: ../../WINGs/wcolorpanel.c:781 ../../WINGs/wcolorpanel.c:812 #: ../../WINGs/wcolorpanel.c:844 ../../WINGs/wcolorpanel.c:877 #: ../../WINGs/wcolorpanel.c:2016 ../../WINGs/wcolorpanel.c:2722 #: ../../WINGs/wcolorpanel.c:2756 ../../WINGs/wcolorpanel.c:2790 msgid "Color Panel: Could not allocate memory" msgstr "Kleurepaniel: Koe gjin ûnthâld tawize" #: ../../WINGs/wcolorpanel.c:642 msgid "Red" msgstr "Read" #: ../../WINGs/wcolorpanel.c:673 msgid "Green" msgstr "Grien" #: ../../WINGs/wcolorpanel.c:704 msgid "Blue" msgstr "Blau" #: ../../WINGs/wcolorpanel.c:718 msgid "Decimal" msgstr "Desimaal" #: ../../WINGs/wcolorpanel.c:726 msgid "Hexadecimal" msgstr "Heksadesimaal" #: ../../WINGs/wcolorpanel.c:779 msgid "Cyan" msgstr "Cyaan" #: ../../WINGs/wcolorpanel.c:810 msgid "Magenta" msgstr "Magenta" #: ../../WINGs/wcolorpanel.c:842 msgid "Yellow" msgstr "Giel" #: ../../WINGs/wcolorpanel.c:875 msgid "Black" msgstr "Swart" #: ../../WINGs/wcolorpanel.c:950 msgid "Spectrum" msgstr "Spektrum" #: ../../WINGs/wcolorpanel.c:976 msgid "Palette" msgstr "Palet" #: ../../WINGs/wcolorpanel.c:981 msgid "New from File..." msgstr "Nij út bestân..." #: ../../WINGs/wcolorpanel.c:982 ../../WINGs/wcolorpanel.c:1027 #: ../../WINGs/wcolorpanel.c:1042 msgid "Rename..." msgstr "Omneame..." #: ../../WINGs/wcolorpanel.c:983 ../../WINGs/wcolorpanel.c:1028 #: ../../WINGs/wcolorpanel.c:1043 ../../WINGs/wcolorpanel.c:3180 msgid "Remove" msgstr "Ferwiderje" #: ../../WINGs/wcolorpanel.c:984 msgid "Copy" msgstr "Kopiearje" #: ../../WINGs/wcolorpanel.c:985 msgid "New from Clipboard" msgstr "Nij fan klamboerd" #: ../../WINGs/wcolorpanel.c:1004 msgid "X11-Colors" msgstr "X11-kleuren" #: ../../WINGs/wcolorpanel.c:1021 msgid "Color" msgstr "Kleur" #: ../../WINGs/wcolorpanel.c:1026 msgid "Add..." msgstr "Tafoegje..." #: ../../WINGs/wcolorpanel.c:1036 msgid "List" msgstr "List" #: ../../WINGs/wcolorpanel.c:1041 msgid "New..." msgstr "Nij..." #: ../../WINGs/wcolorpanel.c:1170 #, c-format msgid "" "Color Panel: Could not create directory %s needed to store configurations" msgstr "" "Kleurepaniel: Koe map %s, nedich om ynstellingen te bewarjen, net oanmeitsje" #. Delete the file, it doesn't belong here #: ../../WINGs/wcolorpanel.c:1176 ../../WINGs/wcolorpanel.c:3073 #: ../../WINGs/wcolorpanel.c:3077 msgid "File Error" msgstr "Bestânsflater" #: ../../WINGs/wcolorpanel.c:1177 msgid "Could not create ColorPanel configuration directory" msgstr "Koe ynstellingemap Kleurepaniel net oanmeitsje" #: ../../WINGs/wcolorpanel.c:1178 ../../WINGs/wcolorpanel.c:3074 #: ../../WINGs/wcolorpanel.c:3079 ../../WINGs/wcolorpanel.c:3104 #: ../../WINGs/wfilepanel.c:227 ../../WINGs/wfilepanel.c:596 #: ../../WINGs/wfilepanel.c:611 ../../WINGs/wfilepanel.c:715 #: ../../WINGs/wfilepanel.c:883 ../../WINGs/wfontpanel.c:532 msgid "OK" msgstr "OK" #: ../../WINGs/wcolorpanel.c:1184 msgid "Color Panel: Could not find file" msgstr "Kleurepaniel: Koe bestân net fine" #: ../../WINGs/wcolorpanel.c:1380 ../../WINGs/wcolorpanel.c:1441 #: ../../WINGs/wcolorpanel.c:1501 msgid "Color Panel: X failed request" msgstr "Kleurepaniel: X-oanfraach mislearre" #: ../../WINGs/wcolorpanel.c:2754 msgid "Saturation" msgstr "Fersêding" #: ../../WINGs/wcolorpanel.c:2788 msgid "Hue" msgstr "Tint" #: ../../WINGs/wcolorpanel.c:3012 msgid "Open Palette" msgstr "Iepenje palet" #: ../../WINGs/wcolorpanel.c:3074 msgid "Invalid file format !" msgstr "Unjildige bestânsfoarm!" #: ../../WINGs/wcolorpanel.c:3076 #, c-format msgid "can't remove file %s" msgstr "kin bestân %s net ferwiderje" #: ../../WINGs/wcolorpanel.c:3078 msgid "Couldn't remove file from Configuration Directory !" msgstr "Koe bestân net ferwiderje út ynstellingemap!" #: ../../WINGs/wcolorpanel.c:3103 msgid "Rename" msgstr "Omneame" #: ../../WINGs/wcolorpanel.c:3103 msgid "Rename palette to:" msgstr "Neam palet om nei:" #: ../../WINGs/wcolorpanel.c:3104 ../../WINGs/wfilepanel.c:236 #: ../../WINGs/wfilepanel.c:611 ../../WINGs/wfilepanel.c:715 msgid "Cancel" msgstr "Annulearje" #. Careful, this palette exists already #: ../../WINGs/wcolorpanel.c:3120 ../../WINGs/wfilepanel.c:715 msgid "Warning" msgstr "Warskôging" #: ../../WINGs/wcolorpanel.c:3121 msgid "" "Palette already exists !\n" "\n" "Overwrite ?" msgstr "" "Palet bestiet al!\n" "\n" "Oerskriuwe?" #: ../../WINGs/wcolorpanel.c:3121 ../../WINGs/wcolorpanel.c:3180 msgid "No" msgstr "Nee" #: ../../WINGs/wcolorpanel.c:3121 ../../WINGs/wcolorpanel.c:3180 msgid "Yes" msgstr "Ja" #: ../../WINGs/wcolorpanel.c:3152 #, c-format msgid "Couldn't rename palette %s to %s" msgstr "Koe palet %s net omneame nei %s" #: ../../WINGs/wcolorpanel.c:3175 msgid "This will permanently remove the palette " msgstr "Dit sil it palet " #: ../../WINGs/wcolorpanel.c:3177 msgid "" ".\n" "\n" "Are you sure you want to remove this palette ?" msgstr "" " definityf ferwiderje.\n" "\n" "Binne jo wis dat jo dit palet ferwiderje wolle?" #: ../../WINGs/wcolorpanel.c:3199 #, c-format msgid "Couldn't remove palette %s" msgstr "Koe palet %s net ferwiderje" #: ../../WINGs/wcolorpanel.c:3499 msgid "Color Panel: Color unspecified" msgstr "Kleurepaniel: Kleur net opjûn" #: ../../WINGs/wfilepanel.c:216 msgid "Name:" msgstr "Namme:" #: ../../WINGs/wfilepanel.c:306 ../../WINGs/wfilepanel.c:364 msgid "Open" msgstr "Iepenje" #: ../../WINGs/wfilepanel.c:322 ../../WINGs/wfilepanel.c:370 msgid "Save" msgstr "Bewarje" #: ../../WINGs/wfilepanel.c:506 #, c-format msgid "WINGs: could not open directory %s\n" msgstr "WINGs: Koe map %s net iepenje\n" #: ../../WINGs/wfilepanel.c:526 #, c-format msgid "WINGs: could not stat %s\n" msgstr "WINGs: Koe status %s net fêststelle\n" #: ../../WINGs/wfilepanel.c:596 ../../WINGs/wfilepanel.c:883 #: ../../WINGs/wfontpanel.c:531 msgid "Error" msgstr "Flater" #: ../../WINGs/wfilepanel.c:610 msgid "Create Directory" msgstr "Map oanmeitsje" #: ../../WINGs/wfilepanel.c:611 msgid "Enter directory name" msgstr "Fier mapnamme yn" #: ../../WINGs/wfilepanel.c:639 #, c-format msgid "Can not create %s: %s" msgstr "Kin %s net oanmeitsje: %s" #: ../../WINGs/wfilepanel.c:705 #, c-format msgid "Can not find %s: %s" msgstr "Kin %s net fine: %s" #: ../../WINGs/wfilepanel.c:711 #, c-format msgid "Delete %s %s?" msgstr "%s %s ferwiderje?" #: ../../WINGs/wfilepanel.c:712 msgid "directory" msgstr "Map" #: ../../WINGs/wfilepanel.c:712 msgid "file" msgstr "Bestân" #: ../../WINGs/wfilepanel.c:719 #, c-format msgid "Removing %s failed: %s" msgstr "Ferwiderjen %s mislearre: %s" #: ../../WINGs/wfilepanel.c:751 #, c-format msgid "An error occurred browsing '%s'." msgstr "Der trede in flater op by blêdzjen troch '%s'." #: ../../WINGs/wfilepanel.c:754 #, c-format msgid "'%s' is not a directory." msgstr "'%s' is gjin map." #: ../../WINGs/wfilepanel.c:883 msgid "File does not exist." msgstr "Bestân bestiet net." #: ../../WINGs/wfont.c:43 #, c-format msgid "invalid font: %s. Trying '%s'" msgstr "ûnjildich lettertype: %s. Probearret '%s'" #: ../../WINGs/wfont.c:260 ../../WINGs/wfont.c:278 #, c-format msgid "could not load font: %s." msgstr "koe lettertype net lade: %s." #. WMSetWidgetBackgroundColor(panel->win, WMWhiteColor(scr)); #: ../../WINGs/wfontpanel.c:184 msgid "Font Panel" msgstr "Lettertypen" #: ../../WINGs/wfontpanel.c:220 msgid "The quick brown fox jumps over the lazy dog" msgstr "De rappe brune foks springt oer de loaie hûn" #: ../../WINGs/wfontpanel.c:226 msgid "Family" msgstr "Famylje" #: ../../WINGs/wfontpanel.c:237 msgid "Typeface" msgstr "Lettertype" #: ../../WINGs/wfontpanel.c:248 msgid "Size" msgstr "Grutte" #: ../../WINGs/wfontpanel.c:267 msgid "Set" msgstr "Ynstelle" #: ../../WINGs/wfontpanel.c:273 msgid "Revert" msgstr "Werstelle" #: ../../WINGs/wfontpanel.c:532 msgid "Could not init font config library\n" msgstr "Koe biblioteek 'lettertype ynstelle' net inisjalisearje\n" #: ../../WINGs/widgets.c:446 #, c-format msgid "WINGs: could not load widget images file: %s" msgstr "WINGs: Koe ôfbyldingebestân bestjoeringseleminten net lade: %s" #: ../../WINGs/widgets.c:542 #, c-format msgid "WINGs: could not open display %s" msgstr "WINGs: Koe skerm %s net iepenje" #: ../../WINGs/widgets.c:771 msgid "" "could not load any fonts. Make sure your font installation and locale " "settings are correct." msgstr "" "koe gjin lettertypen lade. Soargje derfoar dat jo ynstallearre lettertypen " "en lokalisaasjeynstellingen korrekt binne." #: ../../WINGs/winputmethod.c:65 msgid "could not add destroy callback for XIM input method" msgstr "" #: ../../WINGs/wruler.c:175 msgid "0 inches" msgstr "0 inch" #: ../../WINGs/wtextfield.c:494 msgid "only left alignment is supported in textfields" msgstr "allinnich lofts rjochtsjen wurdt stipe yn tekstfjilden" #: ../../WINGs/wwindow.c:160 msgid "window title conversion error... using STRING encoding" msgstr "finstertitelomsettingsflater... brûkt STRING-kodearring" #: ../../WINGs/wwindow.c:181 msgid "icon title conversion error... using STRING encoding" msgstr "ikoantitelomsettingsflater... brûkt STRING-kodearring" ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/po/ca.po�������������������������������������������������������������������0000644�0001750�0001750�00000050163�13431646201�013263� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Catalan messages for WINGs. # Copyright (C) 2003 Ernest Adrogué <eadrogue@gmx.net>. # This file is distributed under the terms of the GNU General Public License. # # Version history: # WM-ver author email date # 0.80.2 Ernest Adrogué eadrogue@gmx.net 23 Feb 2003 # CVS-20030914 Ernest Adrogué eadrogue@gmx.net 15 Set 2003 # msgid "" msgstr "" "Project-Id-Version: WINGs 0.80.2\n" "POT-Creation-Date: 2003-09-16 22:59+0200\n" "PO-Revision-Date: 2003-09-16 23:16+0200\n" "Last-Translator: Ernest Adrogué <eadrogue@gmx.net>\n" "Language-Team: Catalan <ca@dodds.net>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../../WINGs/connection.c:467 ../../WINGs/connection.c:532 #: ../../WINGs/connection.c:575 msgid "Bad address-service-protocol combination" msgstr "Combinació adreça-servei-protocol incorrecta" #: ../../WINGs/error.c:54 #, c-format msgid "Unknown error %d" msgstr "Error no identificat %d" #: ../../WINGs/error.c:59 #, c-format msgid "Error %d" msgstr "Error %d" #: ../../WINGs/error.c:110 msgid "warning: " msgstr "atenció: " #: ../../WINGs/error.c:137 msgid "fatal: " msgstr "error fatal: " #: ../../WINGs/error.c:163 ../../WINGs/error.c:192 msgid "error: " msgstr "error: " #: ../../WINGs/findfile.c:48 #, c-format msgid "could not get password entry for UID %i" msgstr "no s'ha pogut obtenir l'informació de compte de l'UID %i" #: ../../WINGs/findfile.c:66 #, c-format msgid "could not get password entry for user %s" msgstr "no s'ha pogut obtenir l'informació de compte de l'usuari %s" #: ../../WINGs/host.c:114 msgid "Cannot get current host name" msgstr "No s'ha pogut obtenir el nom de host actual" # falten coses per traduïr en el codi font. eac #: ../../WINGs/proplist.c:91 #, c-format msgid "syntax error in %s %s, line %i: %s" msgstr "error de sintaxi a %s %s, línia %i: %s" #: ../../WINGs/proplist.c:150 msgid "Only string or data is supported for a proplist dictionary key" msgstr "" "Una entrada PropList de diccionari només pot contenir dades o una cadena" #: ../../WINGs/proplist.c:184 ../../WINGs/proplist.c:236 #: ../../WINGs/proplist.c:394 ../../WINGs/proplist.c:474 #: ../../WINGs/proplist.c:1075 ../../WINGs/proplist.c:1127 #: ../../WINGs/proplist.c:1293 ../../WINGs/proplist.c:1372 #: ../../WINGs/proplist.c:1493 ../../WINGs/proplist.c:1540 msgid "Used proplist functions on non-WMPropLists objects" msgstr "S'han usat funcions PropList en objectes no-WMPropLists" #: ../../WINGs/proplist.c:630 msgid "unterminated PropList string" msgstr "cadena PropList incompleta" #: ../../WINGs/proplist.c:670 msgid "unterminated PropList data" msgstr "dades PropList incompletes" #: ../../WINGs/proplist.c:678 msgid "unterminated PropList data (missing hexdigit)" msgstr "Dades PropList incompletes (falta un digit hexadecimal)" #: ../../WINGs/proplist.c:690 ../../WINGs/proplist.c:695 msgid "non hexdigit character in PropList data" msgstr "cap digit hexadecimal a les dades PropList" #: ../../WINGs/proplist.c:729 msgid "unterminated PropList array" msgstr "matriu PropList incompleta" #: ../../WINGs/proplist.c:737 msgid "missing or unterminated PropList array" msgstr "matriu PropList incompleta o inexistent" #: ../../WINGs/proplist.c:747 msgid "could not get PropList array element" msgstr "no s'ha pogut obtenir un element de la matriu PropList" #: ../../WINGs/proplist.c:776 msgid "unterminated PropList dictionary" msgstr "diccionari PropList incomplet" #: ../../WINGs/proplist.c:793 msgid "missing PropList dictionary key" msgstr "falta una entrada PropList de diccionari" #: ../../WINGs/proplist.c:795 msgid "missing PropList dictionary entry key or unterminated dictionary" msgstr "falta una entrada PropList de diccionari o bé està incompleta" #: ../../WINGs/proplist.c:803 msgid "error parsing PropList dictionary key" msgstr "error mentre s'analitzava l'entrada PropList de diccionari" #: ../../WINGs/proplist.c:811 msgid "missing = in PropList dictionary entry" msgstr "falta un \"=\" a l'entrada PropList de diccionari" #: ../../WINGs/proplist.c:819 msgid "error parsing PropList dictionary entry value" msgstr "error mentre s'analitzava el valor de l'entrada PropList de diccionari" #: ../../WINGs/proplist.c:827 msgid "missing ; in PropList dictionary entry" msgstr "falta un \";\" a l'entrada PropList de diccionari" #: ../../WINGs/proplist.c:888 msgid "" "was expecting a string, data, array or dictionary. If it's a string, try " "enclosing it with \"." msgstr "" "s'esperava una cadena, dada, matriu o diccionari. Si es tractava d'una\n" "cadena proveu d'escriure-la \"entre cometes\"." #: ../../WINGs/proplist.c:892 msgid "Comments are not allowed inside WindowMaker owned domain files." msgstr "No es permeten comentaris en els fitxers de domini de WindowMaker." #: ../../WINGs/proplist.c:1563 ../../WINGs/proplist.c:1630 msgid "extra data after end of property list" msgstr "sobren dades després de la llista de propietats" #: ../../WINGs/proplist.c:1606 #, c-format msgid "could not get size for file '%s'" msgstr "no s'ha pogut obtenir la mida de \"%s\"" #: ../../WINGs/proplist.c:1619 #, c-format msgid "error reading from file '%s'" msgstr "error mentre es llegia el fitxer \"%s\"" #: ../../WINGs/proplist.c:1671 #, c-format msgid "mkstemp (%s) failed" msgstr "la rutina mkstemp (%s) ha fallat" #: ../../WINGs/proplist.c:1682 #, c-format msgid "mktemp (%s) failed" msgstr "la rutina mktemp (%s) ha fallat" #: ../../WINGs/proplist.c:1693 #, c-format msgid "open (%s) failed" msgstr "la rutina open (%s) ha fallat" #: ../../WINGs/proplist.c:1700 #, c-format msgid "writing to file: %s failed" msgstr "l'escriptura del fitxer \"%s\" ha fallat" #: ../../WINGs/proplist.c:1708 #, c-format msgid "fclose (%s) failed" msgstr "la rutina fclose (%s) ha fallat" #: ../../WINGs/proplist.c:1717 #, c-format msgid "rename ('%s' to '%s') failed" msgstr "el canvi de nom (\"%s\" a \"%s\") ha fallat" #. something happened with the file. just overwrite it #: ../../WINGs/userdefaults.c:188 ../../WINGs/userdefaults.c:204 #, c-format msgid "cannot read domain from file '%s' when syncing" msgstr "no s'ha pogut llegir un domini del fitxer \"%s\" quan es sincronitzava" #: ../../WINGs/wcolor.c:224 ../../WINGs/wcolor.c:236 ../../WINGs/wcolor.c:275 #: ../../WINGs/wcolor.c:316 #, c-format msgid "could not allocate %s color" msgstr "no s'ha pogut assignar espai pel color \"%s\"" #: ../../WINGs/wcolor.c:224 msgid "white" msgstr "blanc" #: ../../WINGs/wcolor.c:236 msgid "black" msgstr "negre" #: ../../WINGs/wcolor.c:275 msgid "gray" msgstr "gris" #: ../../WINGs/wcolor.c:316 msgid "dark gray" msgstr "gris fosc" #: ../../WINGs/wcolorpanel.c:420 msgid "Colors" msgstr "Colors" #: ../../WINGs/wcolorpanel.c:610 ../../WINGs/wcolorpanel.c:2829 msgid "Brightness" msgstr "Claror" #: ../../WINGs/wcolorpanel.c:612 ../../WINGs/wcolorpanel.c:688 #: ../../WINGs/wcolorpanel.c:721 ../../WINGs/wcolorpanel.c:755 #: ../../WINGs/wcolorpanel.c:815 ../../WINGs/wcolorpanel.c:849 #: ../../WINGs/wcolorpanel.c:883 ../../WINGs/wcolorpanel.c:918 #: ../../WINGs/wcolorpanel.c:2169 ../../WINGs/wcolorpanel.c:2831 #: ../../WINGs/wcolorpanel.c:2867 ../../WINGs/wcolorpanel.c:2903 #: ../../WINGs/wcolorpanel.c:3745 msgid "Color Panel: Could not allocate memory" msgstr "Panell de color: No s'ha pogut assignar memòria" #: ../../WINGs/wcolorpanel.c:685 ../../WINGs/wcolorpanel.c:686 msgid "Red" msgstr "Roig" #: ../../WINGs/wcolorpanel.c:718 ../../WINGs/wcolorpanel.c:719 msgid "Green" msgstr "Verd" #: ../../WINGs/wcolorpanel.c:752 ../../WINGs/wcolorpanel.c:753 msgid "Blue" msgstr "Blau" #: ../../WINGs/wcolorpanel.c:812 ../../WINGs/wcolorpanel.c:813 msgid "Cyan" msgstr "Cian" #: ../../WINGs/wcolorpanel.c:846 ../../WINGs/wcolorpanel.c:847 msgid "Magenta" msgstr "Magenta" #: ../../WINGs/wcolorpanel.c:880 ../../WINGs/wcolorpanel.c:881 msgid "Yellow" msgstr "Groc" #: ../../WINGs/wcolorpanel.c:915 ../../WINGs/wcolorpanel.c:916 msgid "Black" msgstr "Negre" #: ../../WINGs/wcolorpanel.c:996 msgid "Spectrum" msgstr "Espectre" #: ../../WINGs/wcolorpanel.c:1026 msgid "Palette" msgstr "Paleta" #: ../../WINGs/wcolorpanel.c:1032 msgid "New from File..." msgstr "Obtenir d'un fitxer..." #: ../../WINGs/wcolorpanel.c:1033 ../../WINGs/wcolorpanel.c:1081 #: ../../WINGs/wcolorpanel.c:1098 msgid "Rename..." msgstr "Reanomenar..." #: ../../WINGs/wcolorpanel.c:1034 ../../WINGs/wcolorpanel.c:1082 #: ../../WINGs/wcolorpanel.c:1099 ../../WINGs/wcolorpanel.c:3326 msgid "Remove" msgstr "Eliminar" #: ../../WINGs/wcolorpanel.c:1035 msgid "Copy" msgstr "Copiar" #: ../../WINGs/wcolorpanel.c:1036 msgid "New from Clipboard" msgstr "Obtenir del porta-retalls..." #: ../../WINGs/wcolorpanel.c:1057 msgid "X11-Colors" msgstr "Colors-X11" #: ../../WINGs/wcolorpanel.c:1074 msgid "Color" msgstr "Color" #: ../../WINGs/wcolorpanel.c:1080 msgid "Add..." msgstr "Afegeix..." #: ../../WINGs/wcolorpanel.c:1090 msgid "List" msgstr "Llista" #: ../../WINGs/wcolorpanel.c:1097 msgid "New..." msgstr "Nou..." #: ../../WINGs/wcolorpanel.c:1236 #, c-format msgid "" "Color Panel: Could not create directory %s needed to store configurations" msgstr "" "Panell de color: No s'ha pogut crear el directori \"%s\" necessari per desar " "la configuració" #. Delete the file, it doesn't belong here #: ../../WINGs/wcolorpanel.c:1242 ../../WINGs/wcolorpanel.c:3212 #: ../../WINGs/wcolorpanel.c:3216 msgid "File Error" msgstr "Error de fitxer" #: ../../WINGs/wcolorpanel.c:1243 msgid "Could not create ColorPanel configuration directory" msgstr "No s'ha pogut crear el directori de configuració del Panell de color" #: ../../WINGs/wcolorpanel.c:1244 ../../WINGs/wcolorpanel.c:3213 #: ../../WINGs/wcolorpanel.c:3218 ../../WINGs/wcolorpanel.c:3245 #: ../../WINGs/wfilepanel.c:250 ../../WINGs/wfilepanel.c:650 #: ../../WINGs/wfilepanel.c:662 ../../WINGs/wfilepanel.c:763 #: ../../WINGs/wfilepanel.c:974 ../../WINGs/wfontpanel.c:751 msgid "OK" msgstr "D'acord" #: ../../WINGs/wcolorpanel.c:1250 ../../WINGs/wcolorpanel.c:1286 #: ../../WINGs/wcolorpanel.c:1304 msgid "Color Panel: Could not find file" msgstr "Panell de color: No s'ha trobat el fitxer" #: ../../WINGs/wcolorpanel.c:1491 ../../WINGs/wcolorpanel.c:1556 #: ../../WINGs/wcolorpanel.c:1620 msgid "Color Panel: X failed request" msgstr "Panell de color: petició X fallida" #: ../../WINGs/wcolorpanel.c:2865 msgid "Saturation" msgstr "Saturació" #: ../../WINGs/wcolorpanel.c:2901 msgid "Hue" msgstr "Matís" # és el títol d'un quadre de diàleg. eac #: ../../WINGs/wcolorpanel.c:3151 msgid "Open Palette" msgstr "Obrir paleta" #: ../../WINGs/wcolorpanel.c:3213 msgid "Invalid file format !" msgstr "El format del fitxer no és vàlid !" #: ../../WINGs/wcolorpanel.c:3215 #, c-format msgid "can't remove file %s" msgstr "no s'ha pogut eliminar el fitxer \"%s\"" #: ../../WINGs/wcolorpanel.c:3217 msgid "Couldn't remove file from Configuration Directory !" msgstr "No s'ha pogut eliminar el fitxer del directori de configuració !" #: ../../WINGs/wcolorpanel.c:3244 msgid "Rename" msgstr "Reanomena" #: ../../WINGs/wcolorpanel.c:3244 msgid "Rename palette to:" msgstr "Reanomena la paleta com a:" #: ../../WINGs/wcolorpanel.c:3245 ../../WINGs/wfilepanel.c:259 #: ../../WINGs/wfilepanel.c:662 ../../WINGs/wfilepanel.c:763 msgid "Cancel" msgstr "Cancel·la" #. Careful, this palette exists already #: ../../WINGs/wcolorpanel.c:3261 ../../WINGs/wfilepanel.c:763 msgid "Warning" msgstr "Atenció" #: ../../WINGs/wcolorpanel.c:3262 msgid "" "Palette already exists !\n" "\n" "Overwrite ?" msgstr "" "Ja existia una paleta amb aquest nom!\n" "\n" "La voleu sobreescriure?" #: ../../WINGs/wcolorpanel.c:3262 ../../WINGs/wcolorpanel.c:3326 msgid "No" msgstr "No" #: ../../WINGs/wcolorpanel.c:3262 ../../WINGs/wcolorpanel.c:3326 msgid "Yes" msgstr "Sí" #: ../../WINGs/wcolorpanel.c:3294 #, c-format msgid "Couldn't rename palette %s to %s\n" msgstr "No s'ha pogut reanomenar la paleta %s com a %s\n" #: ../../WINGs/wcolorpanel.c:3320 msgid "This will permanently remove the palette " msgstr "Això eliminarà la paleta per sempre " #: ../../WINGs/wcolorpanel.c:3323 msgid "" ".\n" "\n" "Are you sure you want to remove this palette ?" msgstr "" ".\n" "\n" "Esteu segurs que voleu eliminar aquesta paleta?" #: ../../WINGs/wcolorpanel.c:3348 #, c-format msgid "Couldn't remove palette %s\n" msgstr "No s'ha pogut eliminar la paleta %s\n" #: ../../WINGs/wcolorpanel.c:3647 #, c-format msgid "Could not open %s" msgstr "No s'ha pogut obrir %s" #: ../../WINGs/wcolorpanel.c:3654 #, c-format msgid "Could not create %s" msgstr "No s'ha pogut crear %s" #: ../../WINGs/wcolorpanel.c:3665 #, c-format msgid "Write error on file %s" msgstr "Error d'escriptura en el fitxer %s" #: ../../WINGs/wcolorpanel.c:3710 msgid "Color Panel: Color unspecified" msgstr "Panell de color: Color no especificat" #: ../../WINGs/wfilepanel.c:235 msgid "Name:" msgstr "Nom:" #: ../../WINGs/wfilepanel.c:332 ../../WINGs/wfilepanel.c:396 msgid "Open" msgstr "Obre" #: ../../WINGs/wfilepanel.c:350 ../../WINGs/wfilepanel.c:402 msgid "Save" msgstr "Desa" #: ../../WINGs/wfilepanel.c:565 #, c-format msgid "WINGs: could not open directory %s\n" msgstr "WINGs: no s'ha pogut obrir el directori %s\n" #: ../../WINGs/wfilepanel.c:583 #, c-format msgid "WINGs: could not stat %s\n" msgstr "WINGs: no s'ha pogut determinar l'estat de %s\n" #: ../../WINGs/wfilepanel.c:650 ../../WINGs/wfilepanel.c:973 #: ../../WINGs/wfontpanel.c:750 msgid "Error" msgstr "Error" # és el nom d'un quadre de diàleg. eac #: ../../WINGs/wfilepanel.c:661 msgid "Create Directory" msgstr "Crear directori" #: ../../WINGs/wfilepanel.c:662 msgid "Enter directory name" msgstr "Entreu el nom del directori" #: ../../WINGs/wfilepanel.c:698 ../../WINGs/wfilepanel.c:737 #: ../../WINGs/wfilepanel.c:768 ../../WINGs/wfilepanel.c:796 msgid "Permission denied." msgstr "Permís denegat." #: ../../WINGs/wfilepanel.c:701 #, c-format msgid "'%s' already exists." msgstr "\"%s\" existia prèviament." #: ../../WINGs/wfilepanel.c:704 msgid "Path does not exist." msgstr "L'ubicació no existeix." #: ../../WINGs/wfilepanel.c:734 ../../WINGs/wfilepanel.c:793 #, c-format msgid "'%s' does not exist." msgstr "\"%s\" no existeix." #: ../../WINGs/wfilepanel.c:741 ../../WINGs/wfilepanel.c:800 msgid "Insufficient memory available." msgstr "No hi ha prou memòria disponible." #: ../../WINGs/wfilepanel.c:745 ../../WINGs/wfilepanel.c:804 #, c-format msgid "'%s' is on a read-only filesystem." msgstr "\"%s\" es troba en un sistema de fitxers de només lectura." #: ../../WINGs/wfilepanel.c:748 ../../WINGs/wfilepanel.c:780 #: ../../WINGs/wfilepanel.c:807 #, c-format msgid "Can not delete '%s'." msgstr "No s'ha pogut eliminar \"%s\"." #: ../../WINGs/wfilepanel.c:755 #, c-format msgid "Delete directory %s ?" msgstr "Voleu eliminar el directori %s ?" #: ../../WINGs/wfilepanel.c:759 #, c-format msgid "Delete file %s ?" msgstr "Voleu eliminar el fitxer %s ?" #: ../../WINGs/wfilepanel.c:771 #, c-format msgid "Directory '%s' does not exist." msgstr "El directori \"%s\" no existeix." #: ../../WINGs/wfilepanel.c:774 #, c-format msgid "Directory '%s' is not empty." msgstr "El directori \"%s\" no està buit." #: ../../WINGs/wfilepanel.c:777 #, c-format msgid "Directory '%s' is busy." msgstr "El directori \"%s\" es troba ocupat." #: ../../WINGs/wfilepanel.c:790 #, c-format msgid "'%s' is a directory." msgstr "\"%s\" és un directori." #: ../../WINGs/wfilepanel.c:832 #, c-format msgid "An error occurred browsing '%s'." msgstr "S'ha produït un error mentre s'explorava \"%s\"." #: ../../WINGs/wfilepanel.c:836 #, c-format msgid "'%s' is not a directory." msgstr "\"%s\" no és un directori." #: ../../WINGs/wfilepanel.c:973 msgid "File does not exist." msgstr "El fitxer no existeix." #: ../../WINGs/wfont.c:324 ../../WINGs/wfont.c:344 #, c-format msgid "could not load font %s." msgstr "no s'ha pogut carregar el tipus de lletra %s." #: ../../WINGs/wfont.c:375 ../../WINGs/wfont.c:420 ../../WINGs/wfont.c:475 #: ../../WINGs/wfont.c:1337 ../../WINGs/wfont.c:1398 ../../WINGs/wfont.c:1469 #, c-format msgid "" "Conversion to widechar failed (possible invalid multibyte sequence): '%s':" "(pos %d)\n" msgstr "" "Ha fallat la conversió a caràcter estès (possible seqüència no vàlida): '%" "s': (pos %d)\n" #. // remove warning later. or maybe not #: ../../WINGs/wfont.c:591 ../../WINGs/wfont.c:1568 #, c-format msgid "Invalid font specification: '%s'\n" msgstr "Especificació de font no vàlida: \"%s\"\n" #: ../../WINGs/wfont.c:770 ../../WINGs/wfont.c:780 #, c-format msgid "Invalid size specification '%s' in %s. Using default %d\n" msgstr "" "La mida \"%s\" especificada a %s no és vàlida. S'usa el valor per omissió %" "d\n" #: ../../WINGs/wfont.c:824 #, c-format msgid "the following character sets are missing in %s:" msgstr "els següents conjunts de caràcters falten a %s:" #: ../../WINGs/wfont.c:830 #, c-format msgid "" "the string \"%s\" will be used in place of any characters from those sets." msgstr "" "la cadena \"%s\" s'usarà en lloc dels caràcters d'aquests conjunts de " "caràcters." #. is arial a good fallback for multibyte? #: ../../WINGs/wfont.c:1232 ../../WINGs/wfont.c:1247 #, c-format msgid "could not load font %s. Trying arial." msgstr "no s'ha pogut carregar el tipus de lletra %s. Provant amb \"arial\"." #: ../../WINGs/wfont.c:1239 msgid "could not load antialiased font set. Reverting to standard font sets." msgstr "" "no s'ha pogut carregar el conjunt de fonts amb allisat. S'usarà l'estàndard." #: ../../WINGs/wfont.c:1242 #, c-format msgid "could not load FontSet %s. Trying fixed." msgstr "no s'ha pogut carregar el tipus de lletra %s. Provant amb \"fixed\"." #: ../../WINGs/wfont.c:1254 msgid "could not load antialiased fonts. Reverting to normal fonts." msgstr "no s'han pogut carregar fonts allisades. S'usaran fonts normals." #: ../../WINGs/wfont.c:1257 ../../WINGs/wfont.c:1268 #, c-format msgid "could not load font %s. Trying fixed." msgstr "no s'ha pogut carregar la font %s. Provant amb \"fixed\"." #: ../../WINGs/wfont.c:1262 #, c-format msgid "could not load font set %s. Trying fixed." msgstr "no s'ha pogut carregar el conjunt de fonts %s. Provant amb \"fixed\"." #: ../../WINGs/wfont.c:1272 msgid "could not load fixed font!" msgstr "no s'ha pogut carregar el tipus de lletra \"fixed\" !" #: ../../WINGs/wfont.c:1520 #, c-format msgid "font description %s is too large." msgstr "la descripció de tipus de lletra %s és massa gran." #: ../../WINGs/wfontpanel.c:235 msgid "Test!!!" msgstr "Prova!!!" #: ../../WINGs/wfontpanel.c:241 msgid "Family" msgstr "Familia" #: ../../WINGs/wfontpanel.c:252 msgid "Typeface" msgstr "Fosa" #: ../../WINGs/wfontpanel.c:263 msgid "Size" msgstr "Mida" #: ../../WINGs/wfontpanel.c:282 msgid "Set" msgstr "Conjunt" #: ../../WINGs/wfontpanel.c:288 msgid "Revert" msgstr "Torna" #: ../../WINGs/wfontpanel.c:751 msgid "Could not retrieve font list" msgstr "No s'ha pogut obtenir la llista de tipus de lletra" #: ../../WINGs/wfontpanel.c:765 #, c-format msgid "font name %s is longer than 256, which is invalid." msgstr "" "el nom de tipus de lletra %s ocupa més de 256 caràcters, per tant no és " "vàlid." #: ../../WINGs/wfontpanel.c:913 msgid "Roman" msgstr "Romana" #: ../../WINGs/wfontpanel.c:916 msgid "Italic" msgstr "Itàlica" #: ../../WINGs/wfontpanel.c:918 msgid "Oblique" msgstr "Obliqua" #: ../../WINGs/wfontpanel.c:920 msgid "Rev Italic" msgstr "Itàlica inv" #: ../../WINGs/wfontpanel.c:922 msgid "Rev Oblique" msgstr "Obliqua inv" #: ../../WINGs/wfontpanel.c:928 msgid "Normal" msgstr "Normal" #: ../../WINGs/widgets.c:419 #, c-format msgid "WINGs: could not load widget images file: %s" msgstr "WINGs: no s'ha pogut carregar el fitxer d'imatges: %s" #: ../../WINGs/widgets.c:772 msgid "" "could not load any fonts. Make sure your font installation and locale " "settings are correct." msgstr "" "no s'ha pogut carregar cap font. Assegureu-vos que heu instal·lat i " "configurat correctament les fonts i el local." #: ../../WINGs/wruler.c:192 msgid "0 inches" msgstr "0 polzades" #~ msgid "" #~ "Text antialiasing is enabled in the configuration but the X server " #~ "doesn't have the required capabilities (missing RENDER extension). " #~ "Disabling text antialiasing." #~ msgstr "" #~ "L'allisat de text està habilitat a la configuració però el servidor X no\n" #~ "té la capacitat necessària (falta l'extensió RENDER) de manera que " #~ "l'allisat\n" #~ "de text es deshabilitarà." �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/po/sk.po�������������������������������������������������������������������0000644�0001750�0001750�00000046300�13431646201�013313� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Slovak messages for WINGs # (C) 2001 Jan "judas" Tomka # # Original translation by Jan "judas" Tomka on Feb 25 2001 # Currently maintained by Jan "judas" Tomka <judas@linux.sk> # # Version history: # WM-ver author email date # 0.65.1 Jan "judas" Tomka <judas@linux.sk> Aug 08 2001 # 0.70.0 Jan "judas" Tomka <judas@linux.sk> Oct 15 2001 # 0.70.1 Jan "judas" Tomka <judas@linux.sk> Nov 02 2001 # 0.80.0 Jan "judas" Tomka <judas@linux.sk> Dec 20 2001 # 0.80.2 Jan "judas" Tomka <judas@linux.sk> Jan 31 2004 # msgid "" msgstr "" "Project-Id-Version: WINGs 0.80.0\n" "POT-Creation-Date: 2004-01-31 18:36+0100\n" "PO-Revision-Date: 2001-12-20 04:00+0100\n" "Last-Translator: Jan \"judas\" Tomka <judas@linux.sk>\n" "Language-Team: Slovak <sk@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../../WINGs/connection.c:467 ../../WINGs/connection.c:532 #: ../../WINGs/connection.c:575 msgid "Bad address-service-protocol combination" msgstr "Nesprávna kombinácia adresa-služba-protokol" #: ../../WINGs/error.c:54 #, c-format msgid "Unknown error %d" msgstr "Nezmána chyba %d" #: ../../WINGs/error.c:59 #, c-format msgid "Error %d" msgstr "Chyba %d" #: ../../WINGs/error.c:110 msgid "warning: " msgstr "varovanie: " #: ../../WINGs/error.c:137 msgid "fatal: " msgstr "fatálna chyba: " #: ../../WINGs/error.c:163 ../../WINGs/error.c:192 msgid "error: " msgstr "chyba: " #: ../../WINGs/findfile.c:48 #, c-format msgid "could not get password entry for UID %i" msgstr "nemožno zistiť informácie o UID %i" #: ../../WINGs/findfile.c:66 #, c-format msgid "could not get password entry for user %s" msgstr "nemožno zistiť informácie o užívateľovi %s" #: ../../WINGs/host.c:114 msgid "Cannot get current host name" msgstr "Nemožno zistiť aktuálne meno počítača" #: ../../WINGs/proplist.c:91 #, c-format msgid "syntax error in %s %s, line %i: %s" msgstr "chyba syntaxe v %s %s, riadok %i: %s" #: ../../WINGs/proplist.c:150 msgid "Only string or data is supported for a proplist dictionary key" msgstr "Pre kľúč slovníka proplist je podporovaný len reťazec alebo dáta" #: ../../WINGs/proplist.c:184 ../../WINGs/proplist.c:236 #: ../../WINGs/proplist.c:394 ../../WINGs/proplist.c:474 #: ../../WINGs/proplist.c:1075 ../../WINGs/proplist.c:1127 #: ../../WINGs/proplist.c:1293 ../../WINGs/proplist.c:1372 #: ../../WINGs/proplist.c:1493 ../../WINGs/proplist.c:1540 msgid "Used proplist functions on non-WMPropLists objects" msgstr "Použitá proplist funkcia na iných ako WMPropLists objektoch" #: ../../WINGs/proplist.c:630 msgid "unterminated PropList string" msgstr "neukončený PropList reťazec" #: ../../WINGs/proplist.c:670 msgid "unterminated PropList data" msgstr "neukončené PropList dáta" #: ../../WINGs/proplist.c:678 msgid "unterminated PropList data (missing hexdigit)" msgstr "neukončené PropList dáta (chýbajúca hex číslica)" #: ../../WINGs/proplist.c:690 ../../WINGs/proplist.c:695 msgid "non hexdigit character in PropList data" msgstr "v PropList dátach je znak, ktorý nie je hex číslicou" #: ../../WINGs/proplist.c:729 msgid "unterminated PropList array" msgstr "neukončené PropList pole" #: ../../WINGs/proplist.c:737 msgid "missing or unterminated PropList array" msgstr "chýbajúce alebo neukončené PropList pole" #: ../../WINGs/proplist.c:747 msgid "could not get PropList array element" msgstr "nemožno zistiť prvok PropList poľa" #: ../../WINGs/proplist.c:776 msgid "unterminated PropList dictionary" msgstr "neukončený PropList slovník" #: ../../WINGs/proplist.c:793 msgid "missing PropList dictionary key" msgstr "chýbajúci kľúč PropList slovníka" #: ../../WINGs/proplist.c:795 msgid "missing PropList dictionary entry key or unterminated dictionary" msgstr "chýbajúci kľúč položky PropList slovníka alebo neukončený slovník" #: ../../WINGs/proplist.c:803 msgid "error parsing PropList dictionary key" msgstr "chyba pri parsovaní kľúča PropList slovníka" #: ../../WINGs/proplist.c:811 msgid "missing = in PropList dictionary entry" msgstr "chýbajúce = v položke PropList slovníka" #: ../../WINGs/proplist.c:819 msgid "error parsing PropList dictionary entry value" msgstr "chyba pri parsovaní hodnoty položky PropList slovníka" #: ../../WINGs/proplist.c:827 msgid "missing ; in PropList dictionary entry" msgstr "chýbajúca ; v položke PropList slovníka" #: ../../WINGs/proplist.c:888 msgid "" "was expecting a string, data, array or dictionary. If it's a string, try " "enclosing it with \"." msgstr "" "očakávaný bol reťazec, dáta, pole alebo slovník. Ak je to reťazec, skúste ho " "uzavrieť medzi \"." #: ../../WINGs/proplist.c:892 msgid "Comments are not allowed inside WindowMaker owned domain files." msgstr "Komentáre v doménových súboroch Window Makera nie sú povolené." #: ../../WINGs/proplist.c:1563 ../../WINGs/proplist.c:1630 msgid "extra data after end of property list" msgstr "prebytočné dáta na konci property listu" #: ../../WINGs/proplist.c:1606 #, c-format msgid "could not get size for file '%s'" msgstr "nemožno zistiť veľkosť súboru '%s'" #: ../../WINGs/proplist.c:1619 #, c-format msgid "error reading from file '%s'" msgstr "chyba pri čítaní zo súboru '%s'" #: ../../WINGs/proplist.c:1671 #, c-format msgid "mkstemp (%s) failed" msgstr "chyba mkstemp (%s)" #: ../../WINGs/proplist.c:1682 #, c-format msgid "mktemp (%s) failed" msgstr "chyba mktemp(%s)" #: ../../WINGs/proplist.c:1693 #, c-format msgid "open (%s) failed" msgstr "chyba pri otváraní (%s)" #: ../../WINGs/proplist.c:1700 #, c-format msgid "writing to file: %s failed" msgstr "chyba pri zápise do súboru: %s" #: ../../WINGs/proplist.c:1708 #, c-format msgid "fclose (%s) failed" msgstr "chyba fclose (%s)" #: ../../WINGs/proplist.c:1717 #, c-format msgid "rename ('%s' to '%s') failed" msgstr "chyba rename ('%s' na '%s')" #. something happened with the file. just overwrite it #: ../../WINGs/userdefaults.c:188 ../../WINGs/userdefaults.c:204 #, c-format msgid "cannot read domain from file '%s' when syncing" msgstr "nemožno čítať doménu zo súboru '%s' pri synchronizácii" #: ../../WINGs/wcolor.c:224 ../../WINGs/wcolor.c:236 ../../WINGs/wcolor.c:275 #: ../../WINGs/wcolor.c:316 #, c-format msgid "could not allocate %s color" msgstr "nemožno alokovať %s farbu" #: ../../WINGs/wcolor.c:224 msgid "white" msgstr "bielu" #: ../../WINGs/wcolor.c:236 msgid "black" msgstr "čiernu" #: ../../WINGs/wcolor.c:275 msgid "gray" msgstr "šedú" #: ../../WINGs/wcolor.c:316 msgid "dark gray" msgstr "tmavošedú" #: ../../WINGs/wcolorpanel.c:420 msgid "Colors" msgstr "Farby" #: ../../WINGs/wcolorpanel.c:610 ../../WINGs/wcolorpanel.c:2829 msgid "Brightness" msgstr "Svetlosť" #: ../../WINGs/wcolorpanel.c:612 ../../WINGs/wcolorpanel.c:688 #: ../../WINGs/wcolorpanel.c:721 ../../WINGs/wcolorpanel.c:755 #: ../../WINGs/wcolorpanel.c:815 ../../WINGs/wcolorpanel.c:849 #: ../../WINGs/wcolorpanel.c:883 ../../WINGs/wcolorpanel.c:918 #: ../../WINGs/wcolorpanel.c:2169 ../../WINGs/wcolorpanel.c:2831 #: ../../WINGs/wcolorpanel.c:2867 ../../WINGs/wcolorpanel.c:2903 #: ../../WINGs/wcolorpanel.c:3745 msgid "Color Panel: Could not allocate memory" msgstr "Panel farieb: Nemožno alokovať pamäť" #: ../../WINGs/wcolorpanel.c:685 ../../WINGs/wcolorpanel.c:686 msgid "Red" msgstr "Červená" #: ../../WINGs/wcolorpanel.c:718 ../../WINGs/wcolorpanel.c:719 msgid "Green" msgstr "Zelená" #: ../../WINGs/wcolorpanel.c:752 ../../WINGs/wcolorpanel.c:753 msgid "Blue" msgstr "Modrá" #: ../../WINGs/wcolorpanel.c:812 ../../WINGs/wcolorpanel.c:813 msgid "Cyan" msgstr "Azúrová" #: ../../WINGs/wcolorpanel.c:846 ../../WINGs/wcolorpanel.c:847 msgid "Magenta" msgstr "Purpurová" #: ../../WINGs/wcolorpanel.c:880 ../../WINGs/wcolorpanel.c:881 msgid "Yellow" msgstr "Žltá" #: ../../WINGs/wcolorpanel.c:915 ../../WINGs/wcolorpanel.c:916 msgid "Black" msgstr "Čierna" #: ../../WINGs/wcolorpanel.c:996 msgid "Spectrum" msgstr "Spektrum" #: ../../WINGs/wcolorpanel.c:1026 msgid "Palette" msgstr "Paleta" #: ../../WINGs/wcolorpanel.c:1032 msgid "New from File..." msgstr "Nová zo súboru..." #: ../../WINGs/wcolorpanel.c:1033 ../../WINGs/wcolorpanel.c:1081 #: ../../WINGs/wcolorpanel.c:1098 msgid "Rename..." msgstr "Premenovať..." #: ../../WINGs/wcolorpanel.c:1034 ../../WINGs/wcolorpanel.c:1082 #: ../../WINGs/wcolorpanel.c:1099 ../../WINGs/wcolorpanel.c:3326 msgid "Remove" msgstr "Odstrániť" #: ../../WINGs/wcolorpanel.c:1035 msgid "Copy" msgstr "Kopírovať" #: ../../WINGs/wcolorpanel.c:1036 msgid "New from Clipboard" msgstr "Nová z nástenky" #: ../../WINGs/wcolorpanel.c:1057 msgid "X11-Colors" msgstr "Farby X11" #: ../../WINGs/wcolorpanel.c:1074 msgid "Color" msgstr "Farba" #: ../../WINGs/wcolorpanel.c:1080 msgid "Add..." msgstr "Pridať..." #: ../../WINGs/wcolorpanel.c:1090 msgid "List" msgstr "Zoznam" #: ../../WINGs/wcolorpanel.c:1097 msgid "New..." msgstr "Nový..." #: ../../WINGs/wcolorpanel.c:1236 #, c-format msgid "" "Color Panel: Could not create directory %s needed to store configurations" msgstr "" "Panel farieb: Nemožno vytvoriť adresár %s potrebný na uloženie nastavení" #. Delete the file, it doesn't belong here #: ../../WINGs/wcolorpanel.c:1242 ../../WINGs/wcolorpanel.c:3212 #: ../../WINGs/wcolorpanel.c:3216 msgid "File Error" msgstr "Chyba súboru" #: ../../WINGs/wcolorpanel.c:1243 msgid "Could not create ColorPanel configuration directory" msgstr "Nemožno vytvoriť konfiguračný adresár panelu farieb" #: ../../WINGs/wcolorpanel.c:1244 ../../WINGs/wcolorpanel.c:3213 #: ../../WINGs/wcolorpanel.c:3218 ../../WINGs/wcolorpanel.c:3245 #: ../../WINGs/wfilepanel.c:250 ../../WINGs/wfilepanel.c:650 #: ../../WINGs/wfilepanel.c:662 ../../WINGs/wfilepanel.c:763 #: ../../WINGs/wfilepanel.c:974 ../../WINGs/wfontpanel.c:751 msgid "OK" msgstr "OK" #: ../../WINGs/wcolorpanel.c:1250 ../../WINGs/wcolorpanel.c:1286 #: ../../WINGs/wcolorpanel.c:1304 msgid "Color Panel: Could not find file" msgstr "Panel farieb: Nemožno nájsť súbor" #: ../../WINGs/wcolorpanel.c:1491 ../../WINGs/wcolorpanel.c:1556 #: ../../WINGs/wcolorpanel.c:1620 msgid "Color Panel: X failed request" msgstr "Panel farieb: chyba požiadavky X" #: ../../WINGs/wcolorpanel.c:2865 msgid "Saturation" msgstr "Saturácia" #: ../../WINGs/wcolorpanel.c:2901 msgid "Hue" msgstr "Odtieň" #: ../../WINGs/wcolorpanel.c:3151 msgid "Open Palette" msgstr "Otvoriť paletu" #: ../../WINGs/wcolorpanel.c:3213 msgid "Invalid file format !" msgstr "Nesprávny súborový formát!" #: ../../WINGs/wcolorpanel.c:3215 #, c-format msgid "can't remove file %s" msgstr "namožno odstrániť súbor %s" #: ../../WINGs/wcolorpanel.c:3217 msgid "Couldn't remove file from Configuration Directory !" msgstr "Nemožno odstrániť súbor z konfiguračného adresára!" #: ../../WINGs/wcolorpanel.c:3244 msgid "Rename" msgstr "Premenovať" #: ../../WINGs/wcolorpanel.c:3244 msgid "Rename palette to:" msgstr "Premenovať paletu:" #: ../../WINGs/wcolorpanel.c:3245 ../../WINGs/wfilepanel.c:259 #: ../../WINGs/wfilepanel.c:662 ../../WINGs/wfilepanel.c:763 msgid "Cancel" msgstr "Zrušiť" #. Careful, this palette exists already #: ../../WINGs/wcolorpanel.c:3261 ../../WINGs/wfilepanel.c:763 msgid "Warning" msgstr "Varovanie" #: ../../WINGs/wcolorpanel.c:3262 msgid "" "Palette already exists !\n" "\n" "Overwrite ?" msgstr "" "Paleta už existuje!\n" "\n" "Prepísať?" #: ../../WINGs/wcolorpanel.c:3262 ../../WINGs/wcolorpanel.c:3326 msgid "No" msgstr "Nie" #: ../../WINGs/wcolorpanel.c:3262 ../../WINGs/wcolorpanel.c:3326 msgid "Yes" msgstr "Áno" #: ../../WINGs/wcolorpanel.c:3294 #, c-format msgid "Couldn't rename palette %s to %s\n" msgstr "Nemožno premenovať paletu %s na %s\n" #: ../../WINGs/wcolorpanel.c:3320 msgid "This will permanently remove the palette " msgstr "Paleta bude natrvalo zmazaná" #: ../../WINGs/wcolorpanel.c:3323 msgid "" ".\n" "\n" "Are you sure you want to remove this palette ?" msgstr "" ".\n" "\n" "Ste si istý, že chcete odstrániť túto paletu?" #: ../../WINGs/wcolorpanel.c:3348 #, c-format msgid "Couldn't remove palette %s\n" msgstr "Nemožno odstrániť paletu %s\n" #: ../../WINGs/wcolorpanel.c:3647 #, c-format msgid "Could not open %s" msgstr "Nemožno otvoriť %s" #: ../../WINGs/wcolorpanel.c:3654 #, c-format msgid "Could not create %s" msgstr "Nemožno vytvoriť %s" #: ../../WINGs/wcolorpanel.c:3665 #, c-format msgid "Write error on file %s" msgstr "Chyba zápisu do súboru %s" #: ../../WINGs/wcolorpanel.c:3710 msgid "Color Panel: Color unspecified" msgstr "Panel farieb: Nešpecifikovaná farba" #: ../../WINGs/wfilepanel.c:235 msgid "Name:" msgstr "Meno:" #: ../../WINGs/wfilepanel.c:332 ../../WINGs/wfilepanel.c:396 msgid "Open" msgstr "Otvoriť" #: ../../WINGs/wfilepanel.c:350 ../../WINGs/wfilepanel.c:402 msgid "Save" msgstr "Uložiť" #: ../../WINGs/wfilepanel.c:565 #, c-format msgid "WINGs: could not open directory %s\n" msgstr "WINGs: nemožno otvoriť adresár %s\n" #: ../../WINGs/wfilepanel.c:583 #, c-format msgid "WINGs: could not stat %s\n" msgstr "WINGs: nemožno zistiť informácie o %s\n" #: ../../WINGs/wfilepanel.c:650 ../../WINGs/wfilepanel.c:973 #: ../../WINGs/wfontpanel.c:750 msgid "Error" msgstr "Chyba" #: ../../WINGs/wfilepanel.c:661 msgid "Create Directory" msgstr "Vytvoriť adresár" #: ../../WINGs/wfilepanel.c:662 msgid "Enter directory name" msgstr "Meno adresára" #: ../../WINGs/wfilepanel.c:698 ../../WINGs/wfilepanel.c:737 #: ../../WINGs/wfilepanel.c:768 ../../WINGs/wfilepanel.c:796 msgid "Permission denied." msgstr "Prístup zamietnutý." #: ../../WINGs/wfilepanel.c:701 #, c-format msgid "'%s' already exists." msgstr "'%s' už existuje" #: ../../WINGs/wfilepanel.c:704 msgid "Path does not exist." msgstr "Cesta neexistuje." #: ../../WINGs/wfilepanel.c:734 ../../WINGs/wfilepanel.c:793 #, c-format msgid "'%s' does not exist." msgstr "'%s' neexistuje." #: ../../WINGs/wfilepanel.c:741 ../../WINGs/wfilepanel.c:800 msgid "Insufficient memory available." msgstr "Nedostatok pamäti." #: ../../WINGs/wfilepanel.c:745 ../../WINGs/wfilepanel.c:804 #, c-format msgid "'%s' is on a read-only filesystem." msgstr "'%s' je na súborovom systéme len pre čítanie." #: ../../WINGs/wfilepanel.c:748 ../../WINGs/wfilepanel.c:780 #: ../../WINGs/wfilepanel.c:807 #, c-format msgid "Can not delete '%s'." msgstr "Nemožno odstrániť '%s'." #: ../../WINGs/wfilepanel.c:755 #, c-format msgid "Delete directory %s ?" msgstr "Odstrániť adresár %s?" #: ../../WINGs/wfilepanel.c:759 #, c-format msgid "Delete file %s ?" msgstr "Odstrániť súbor %s?" #: ../../WINGs/wfilepanel.c:771 #, c-format msgid "Directory '%s' does not exist." msgstr "Adresár '%s' neexistuje." #: ../../WINGs/wfilepanel.c:774 #, c-format msgid "Directory '%s' is not empty." msgstr "Adresár '%s' nie je prázdny." #: ../../WINGs/wfilepanel.c:777 #, c-format msgid "Directory '%s' is busy." msgstr "Adresár '%s' je používaný." #: ../../WINGs/wfilepanel.c:790 #, c-format msgid "'%s' is a directory." msgstr "'%s' je adresár." #: ../../WINGs/wfilepanel.c:832 #, c-format msgid "An error occurred browsing '%s'." msgstr "Pri prehliadaní '%s' nastala chyba." #: ../../WINGs/wfilepanel.c:836 #, c-format msgid "'%s' is not a directory." msgstr "'%s' nie je adresár." #: ../../WINGs/wfilepanel.c:973 msgid "File does not exist." msgstr "Súbor neexistuje." #: ../../WINGs/wfont.c:324 ../../WINGs/wfont.c:344 #, c-format msgid "could not load font %s." msgstr "nemožno načítať font %s." #: ../../WINGs/wfont.c:375 ../../WINGs/wfont.c:420 ../../WINGs/wfont.c:475 #: ../../WINGs/wfont.c:1337 ../../WINGs/wfont.c:1398 ../../WINGs/wfont.c:1469 #, c-format msgid "" "Conversion to widechar failed (possible invalid multibyte sequence): '%s':" "(pos %d)\n" msgstr "" "Konverzia do widechar zlyhala (možno nesprávna multibyte sekvencia): '%s':" "(pos %d)\n" #. // remove warning later. or maybe not #: ../../WINGs/wfont.c:591 ../../WINGs/wfont.c:1568 #, c-format msgid "Invalid font specification: '%s'\n" msgstr "Chybná špecifikácia fontu: '%s'\n" #: ../../WINGs/wfont.c:770 ../../WINGs/wfont.c:780 #, c-format msgid "Invalid size specification '%s' in %s. Using default %d\n" msgstr "Chybná špecifikácia veľkosti '%s' v %s. Použije sa implicitná %d\n" #: ../../WINGs/wfont.c:824 #, c-format msgid "the following character sets are missing in %s:" msgstr "nasledujúce sady znakov chýbajú v %s:" #: ../../WINGs/wfont.c:830 #, c-format msgid "" "the string \"%s\" will be used in place of any characters from those sets." msgstr "reťazec \"%s\" bude použitý namiesto znakov z týchto sád." #. is arial a good fallback for multibyte? #: ../../WINGs/wfont.c:1232 ../../WINGs/wfont.c:1247 #, c-format msgid "could not load font %s. Trying arial." msgstr "nemožno načítať font %s. Skúša sa načítať arial." #: ../../WINGs/wfont.c:1239 msgid "could not load antialiased font set. Reverting to standard font sets." msgstr "nemožno načítať antialiasovanú sadu fontov. Späť k štandardnej sade fontov." #: ../../WINGs/wfont.c:1242 #, c-format msgid "could not load FontSet %s. Trying fixed." msgstr "nemožno načítať sadu fontov %s. Skúša sa načítať fixed." #: ../../WINGs/wfont.c:1254 msgid "could not load antialiased fonts. Reverting to normal fonts." msgstr "nemožno zaviesť antialiasovaný font. Návrat k normálnemu fontu." #: ../../WINGs/wfont.c:1257 ../../WINGs/wfont.c:1268 #, c-format msgid "could not load font %s. Trying fixed." msgstr "nemožno načítať font %s. Skúša sa načítať fixed." #: ../../WINGs/wfont.c:1262 #, c-format msgid "could not load font set %s. Trying fixed." msgstr "nemožno načítať font %s. Skúša sa načítať fixed." #: ../../WINGs/wfont.c:1272 msgid "could not load fixed font!" msgstr "nemožno načítať font fixed!" #: ../../WINGs/wfont.c:1520 #, c-format msgid "font description %s is too large." msgstr "popis fontu %s je príliš veľký." #: ../../WINGs/wfontpanel.c:235 msgid "Test!!!" msgstr "Skúška!!!" #: ../../WINGs/wfontpanel.c:241 msgid "Family" msgstr "Rodina" #: ../../WINGs/wfontpanel.c:252 msgid "Typeface" msgstr "Vzhľad" #: ../../WINGs/wfontpanel.c:263 msgid "Size" msgstr "Veľkosť" #: ../../WINGs/wfontpanel.c:282 msgid "Set" msgstr "Sada" #: ../../WINGs/wfontpanel.c:288 msgid "Revert" msgstr "Obrátiť" #: ../../WINGs/wfontpanel.c:751 msgid "Could not retrieve font list" msgstr "Nemožno obdržať zoznam fontov" #: ../../WINGs/wfontpanel.c:765 #, c-format msgid "font name %s is longer than 256, which is invalid." msgstr "meno fontu %s je dlhšie ako 256, čo je nesprávne." #: ../../WINGs/wfontpanel.c:913 msgid "Roman" msgstr "roman" #: ../../WINGs/wfontpanel.c:916 msgid "Italic" msgstr "kurzíva" #: ../../WINGs/wfontpanel.c:918 msgid "Oblique" msgstr "šikmé" #: ../../WINGs/wfontpanel.c:920 msgid "Rev Italic" msgstr "obr. kurzíva" #: ../../WINGs/wfontpanel.c:922 msgid "Rev Oblique" msgstr "obr. šikmé" #: ../../WINGs/wfontpanel.c:928 msgid "Normal" msgstr "normálne" #: ../../WINGs/widgets.c:419 #, c-format msgid "WINGs: could not load widget images file: %s" msgstr "WINGs: nemožno načítať súbor s obrázkami pre widgety: %s" #: ../../WINGs/widgets.c:772 msgid "" "could not load any fonts. Make sure your font installation and locale " "settings are correct." msgstr "" "nemožno načítať žiadny font. Ubezpečte sa, že inštalácia fontov a miestne " "nastavenia sú v poriadku." #: ../../WINGs/wruler.c:192 msgid "0 inches" msgstr "0 palcov" ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/po/cs.po�������������������������������������������������������������������0000644�0001750�0001750�00000041626�13431646201�013311� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Czech messages for WINGs # (C) 2001 Jiří Hnídek # Special thanks to Jan "judas" Tomka # # Original translation by Jiří Hnídek on Oct 11 2001 # Currently maintained by Jiří Hnídek <jiri.hnidek@vslib.cz> # msgid "" msgstr "" "Project-Id-Version: WINGs 0.70.0\n" "POT-Creation-Date: 2001-10-11 19:10+0100\n" "PO-Revision-Date: 2001-10-11 22:00+0100\n" "Last-Translator: Jiří Hnídek <jiri.hnidek@vslib.cz>\n" "Language-Team: Czech <cz@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: unknown\n" #: ../../WINGs/connection.c:451 ../../WINGs/connection.c:516 #: ../../WINGs/connection.c:559 msgid "Bad address-service-protocol combination" msgstr "Nesprávná kombinace adresa-služba-protokol" #: ../../WINGs/dragsource.c:541 msgid "XDND selection lost during drag operation..." msgstr "XDND výběr se ztratil během opere táhnutí..." #: ../../WINGs/dragsource.c:610 #, c-format msgid "drag & drop timed out while waiting for response from 0x%x\n" msgstr "čas pro drag & drop vypršel během čekání na odpoveď z 0x%x\n" #: ../../WINGs/dragsource.c:728 msgid "could not get ownership of XDND selection" msgstr "nemožné získat vlastnictví nebo XDND výběr" #: ../../WINGs/dragsource.c:898 #, c-format msgid "drag source received unexpected XdndFinished message from %x" msgstr "zdroj tahání přijal neočekávanou zprávu XdndFinished z %x" #: ../../WINGs/dragsource.c:1040 #, c-format msgid "unknown XDND action %s from 0x%x" msgstr "neznámá XDND akce %s z 0x%x" #: ../../WINGs/dragsource.c:1073 msgid "received invalid drag & drop type list" msgstr "přijatý nesprávný seznam typů drag & drop" #: ../../WINGs/dragsource.c:1161 msgid "received Enter event in bad order" msgstr "přijatá událost Enter v nesprávném pořadí" #: ../../WINGs/dragsource.c:1168 #, c-format msgid "received drag & drop request with unsupported version %i" msgstr "přijatý požadavek drag & drop s nepodporovanou verzí %i" #: ../../WINGs/error.c:56 #, c-format msgid "Unknown error %d" msgstr "Neznámá chyba %d" #: ../../WINGs/error.c:61 #, c-format msgid "Error %d" msgstr "Chyba %d" #: ../../WINGs/error.c:112 msgid "warning: " msgstr "varovíní: " #: ../../WINGs/error.c:139 msgid "fatal: " msgstr "fatální chyba: " #: ../../WINGs/error.c:165 ../../WINGs/error.c:194 msgid "error: " msgstr "chyba: " #: ../../WINGs/findfile.c:50 #, c-format msgid "could not get password entry for UID %i" msgstr "nemožné zjistit informaci o UID %i" #: ../../WINGs/findfile.c:68 #, c-format msgid "could not get password entry for user %s" msgstr "nemožné zjistit informaci o uživatelovi %s" #: ../../WINGs/hashtable.c:275 msgid "rebuilding hash table...\n" msgstr "přepis tabulky hashovských funkcí...\n" #: ../../WINGs/hashtable.c:279 msgid "finished rebuild.\n" msgstr "konec přepisu.\n" #: ../../WINGs/host.c:116 msgid "Cannot get current host name" msgstr "Nemožné zjistit aktuální jméno počítače" #: ../../WINGs/memory.c:94 msgid "malloc() failed. Retrying after 2s." msgstr "chyba malloc(). Nový pokus o 2s." #: ../../WINGs/memory.c:103 msgid "Really Bad Error: recursive malloc() failure." msgstr "Skutečně ošklivá chyba: rekurzivní chyba malloc()." #: ../../WINGs/memory.c:106 ../../WINGs/memory.c:146 msgid "virtual memory exhausted" msgstr "virtuální paměť vyčerpaná" #: ../../WINGs/memory.c:133 msgid "realloc() failed. Retrying after 2s." msgstr "chyba realloc(). Nový pokus o 2s." #: ../../WINGs/memory.c:142 msgid "Really Bad Error: recursive realloc() failure." msgstr "Skutečně ošklivá chyba: rekurzivní chyba realloc()." #: ../../WINGs/memory.c:205 #, c-format msgid "trying to release unexisting data %p" msgstr "pokus uvolnit neexistujícá data %p" #: ../../WINGs/memory.c:210 #, c-format msgid "RELEASING %p\n" msgstr "UVOLNĚNÍ %p\n" #: ../../WINGs/wcolor.c:198 ../../WINGs/wcolor.c:211 ../../WINGs/wcolor.c:250 #: ../../WINGs/wcolor.c:291 #, c-format msgid "could not allocate %s color" msgstr "nemožné alokovat %s barvu" #: ../../WINGs/wcolor.c:198 msgid "white" msgstr "bílou" #: ../../WINGs/wcolor.c:211 msgid "black" msgstr "černou" #: ../../WINGs/wcolor.c:250 msgid "gray" msgstr "šedou" #: ../../WINGs/wcolor.c:291 msgid "dark gray" msgstr "tmavě šedou" #: ../../WINGs/wcolorpanel.c:410 msgid "Colors" msgstr "Barvy" #: ../../WINGs/wcolorpanel.c:600 ../../WINGs/wcolorpanel.c:2819 msgid "Brightness" msgstr "Světlost" #: ../../WINGs/wcolorpanel.c:602 ../../WINGs/wcolorpanel.c:678 #: ../../WINGs/wcolorpanel.c:711 ../../WINGs/wcolorpanel.c:745 #: ../../WINGs/wcolorpanel.c:805 ../../WINGs/wcolorpanel.c:839 #: ../../WINGs/wcolorpanel.c:873 ../../WINGs/wcolorpanel.c:908 #: ../../WINGs/wcolorpanel.c:2159 ../../WINGs/wcolorpanel.c:2821 #: ../../WINGs/wcolorpanel.c:2857 ../../WINGs/wcolorpanel.c:2893 #: ../../WINGs/wcolorpanel.c:3741 msgid "Color Panel: Could not allocate memory" msgstr "Panel barev: Nemožné alokovat paměť" #: ../../WINGs/wcolorpanel.c:675 ../../WINGs/wcolorpanel.c:676 msgid "Red" msgstr "Červená" #: ../../WINGs/wcolorpanel.c:708 ../../WINGs/wcolorpanel.c:709 msgid "Green" msgstr "Zelená" #: ../../WINGs/wcolorpanel.c:742 ../../WINGs/wcolorpanel.c:743 msgid "Blue" msgstr "Modrá" #: ../../WINGs/wcolorpanel.c:802 ../../WINGs/wcolorpanel.c:803 msgid "Cyan" msgstr "" #: ../../WINGs/wcolorpanel.c:836 ../../WINGs/wcolorpanel.c:837 msgid "Magenta" msgstr "" #: ../../WINGs/wcolorpanel.c:870 ../../WINGs/wcolorpanel.c:871 msgid "Yellow" msgstr "Žlutá" #: ../../WINGs/wcolorpanel.c:905 ../../WINGs/wcolorpanel.c:906 msgid "Black" msgstr "Černá" #: ../../WINGs/wcolorpanel.c:986 msgid "Spectrum" msgstr "Spektrum" #: ../../WINGs/wcolorpanel.c:1016 msgid "Palette" msgstr "Paleta" #: ../../WINGs/wcolorpanel.c:1022 msgid "New from File..." msgstr "Nová ze souboru..." #: ../../WINGs/wcolorpanel.c:1023 ../../WINGs/wcolorpanel.c:1071 #: ../../WINGs/wcolorpanel.c:1088 msgid "Rename..." msgstr "Přejmenovat..." #: ../../WINGs/wcolorpanel.c:1024 ../../WINGs/wcolorpanel.c:1072 #: ../../WINGs/wcolorpanel.c:1089 ../../WINGs/wcolorpanel.c:3316 msgid "Remove" msgstr "Odstranit" #: ../../WINGs/wcolorpanel.c:1025 msgid "Copy" msgstr "Kopírovat" #: ../../WINGs/wcolorpanel.c:1026 msgid "New from Clipboard" msgstr "Nová ze schránky" #: ../../WINGs/wcolorpanel.c:1047 msgid "X11-Colors" msgstr "Barvy X11" #: ../../WINGs/wcolorpanel.c:1064 msgid "Color" msgstr "Barva" #: ../../WINGs/wcolorpanel.c:1070 msgid "Add..." msgstr "Přidat..." #: ../../WINGs/wcolorpanel.c:1080 msgid "List" msgstr "Seznam" #: ../../WINGs/wcolorpanel.c:1087 msgid "New..." msgstr "Nový..." #: ../../WINGs/wcolorpanel.c:1226 #, c-format msgid "" "Color Panel: Could not create directory %s needed to store configurations" msgstr "" "Panel barev: Nemožné vytvořit adresář %s potřebný k uložení nastavení" #. Delete the file, it doesn't belong here #: ../../WINGs/wcolorpanel.c:1232 ../../WINGs/wcolorpanel.c:3202 #: ../../WINGs/wcolorpanel.c:3206 msgid "File Error" msgstr "Chyba souboru" #: ../../WINGs/wcolorpanel.c:1233 msgid "Could not create ColorPanel configuration directory" msgstr "Nemožné vytvořit konfigurační adresář panelu barev" #: ../../WINGs/wcolorpanel.c:1234 ../../WINGs/wcolorpanel.c:3203 #: ../../WINGs/wcolorpanel.c:3208 ../../WINGs/wcolorpanel.c:3235 #: ../../WINGs/wfilepanel.c:243 ../../WINGs/wfilepanel.c:641 #: ../../WINGs/wfilepanel.c:653 ../../WINGs/wfilepanel.c:752 #: ../../WINGs/wfilepanel.c:963 ../../WINGs/wfontpanel.c:717 msgid "OK" msgstr "OK" #: ../../WINGs/wcolorpanel.c:1240 ../../WINGs/wcolorpanel.c:1276 #: ../../WINGs/wcolorpanel.c:1294 msgid "Color Panel: Could not find file" msgstr "Panel barev: Nemožné nalézt soubor" #: ../../WINGs/wcolorpanel.c:1481 ../../WINGs/wcolorpanel.c:1546 #: ../../WINGs/wcolorpanel.c:1610 msgid "Color Panel: X failed request" msgstr "Panel barev: chyba požadavku X" #: ../../WINGs/wcolorpanel.c:2855 msgid "Saturation" msgstr "Saturace" #: ../../WINGs/wcolorpanel.c:2891 msgid "Hue" msgstr "Odteď" #: ../../WINGs/wcolorpanel.c:3141 msgid "Open Palette" msgstr "Otevřít paletu" #: ../../WINGs/wcolorpanel.c:3203 msgid "Invalid file format !" msgstr "Nesprávný souborový formát!" #: ../../WINGs/wcolorpanel.c:3205 #, c-format msgid "can't remove file %s" msgstr "nemožné odstranit soubor %s" #: ../../WINGs/wcolorpanel.c:3207 msgid "Couldn't remove file from Configuration Directory !" msgstr "Nemožné odstranit soubor z konfiguračního adresáře!" #: ../../WINGs/wcolorpanel.c:3234 msgid "Rename" msgstr "Přejmenovat" #: ../../WINGs/wcolorpanel.c:3234 msgid "Rename palette to:" msgstr "Přejmenovat paletu:" #: ../../WINGs/wcolorpanel.c:3235 ../../WINGs/wfilepanel.c:252 #: ../../WINGs/wfilepanel.c:653 ../../WINGs/wfilepanel.c:752 msgid "Cancel" msgstr "Zrušit" #. Careful, this palette exists already #: ../../WINGs/wcolorpanel.c:3251 ../../WINGs/wfilepanel.c:752 msgid "Warning" msgstr "Varování" #: ../../WINGs/wcolorpanel.c:3252 msgid "" "Palette already exists !\n" "\n" "Overwrite ?" msgstr "" "Paleta už existuje!\n" "\n" "Přepsat?" #: ../../WINGs/wcolorpanel.c:3252 ../../WINGs/wcolorpanel.c:3316 msgid "No" msgstr "Ne" #: ../../WINGs/wcolorpanel.c:3252 ../../WINGs/wcolorpanel.c:3316 msgid "Yes" msgstr "Ano" #: ../../WINGs/wcolorpanel.c:3284 #, c-format msgid "Couldn't rename palette %s to %s\n" msgstr "Nemožné přejmenovat paletu %s na %s\n" #: ../../WINGs/wcolorpanel.c:3310 msgid "This will permanently remove the palette " msgstr "Paleta bude natrvalo smazaná" #: ../../WINGs/wcolorpanel.c:3313 msgid "" ".\n" "\n" "Are you sure you want to remove this palette ?" msgstr "" ".\n" "\n" "Jste si jisti, že chcete odstranit tuto paletu?" #: ../../WINGs/wcolorpanel.c:3338 #, c-format msgid "Couldn't remove palette %s\n" msgstr "Nemožné odstranit paletu %s\n" #: ../../WINGs/wcolorpanel.c:3643 #, c-format msgid "Could not open %s" msgstr "Nemožné otevřít %s" #: ../../WINGs/wcolorpanel.c:3650 #, c-format msgid "Could not create %s" msgstr "Nemožné vytvořit %s" #: ../../WINGs/wcolorpanel.c:3661 #, c-format msgid "Write error on file %s" msgstr "Chyba při zápisu do souboru %s" #: ../../WINGs/wcolorpanel.c:3706 msgid "Color Panel: Color unspecified" msgstr "Panel barev: Nespecifikovaná barva" #: ../../WINGs/wfilepanel.c:228 msgid "Name:" msgstr "Jméno:" #: ../../WINGs/wfilepanel.c:325 ../../WINGs/wfilepanel.c:390 msgid "Open" msgstr "Otevřít" #: ../../WINGs/wfilepanel.c:343 ../../WINGs/wfilepanel.c:396 msgid "Save" msgstr "Uložit" #: ../../WINGs/wfilepanel.c:556 #, c-format msgid "WINGs: could not open directory %s\n" msgstr "WINGs: nemožné otevřít adresář %s\n" #: ../../WINGs/wfilepanel.c:574 #, c-format msgid "WINGs: could not stat %s\n" msgstr "WINGs: nemožné zjistit informace o %s\n" #: ../../WINGs/wfilepanel.c:641 ../../WINGs/wfilepanel.c:962 #: ../../WINGs/wfontpanel.c:716 msgid "Error" msgstr "Chyba" #: ../../WINGs/wfilepanel.c:652 msgid "Create Directory" msgstr "Vytvořit adresář" #: ../../WINGs/wfilepanel.c:653 msgid "Enter directory name" msgstr "Jméno adresáře" #: ../../WINGs/wfilepanel.c:689 ../../WINGs/wfilepanel.c:728 #: ../../WINGs/wfilepanel.c:757 ../../WINGs/wfilepanel.c:785 msgid "Permission denied." msgstr "Přístup odmítnut." #: ../../WINGs/wfilepanel.c:692 #, c-format msgid "'%s' already exists." msgstr "'%s' už existuje" #: ../../WINGs/wfilepanel.c:695 msgid "Path does not exist." msgstr "Cesta neexistuje." #: ../../WINGs/wfilepanel.c:725 ../../WINGs/wfilepanel.c:782 #, c-format msgid "'%s' does not exist." msgstr "'%s' neexistuje." #: ../../WINGs/wfilepanel.c:732 ../../WINGs/wfilepanel.c:789 msgid "Insufficient memory available." msgstr "Nedostatek paměti." #: ../../WINGs/wfilepanel.c:736 ../../WINGs/wfilepanel.c:793 #, c-format msgid "'%s' is on a read-only filesystem." msgstr "'%s' je na souborovém systému jen pro čtení." #: ../../WINGs/wfilepanel.c:739 ../../WINGs/wfilepanel.c:769 #: ../../WINGs/wfilepanel.c:796 #, c-format msgid "Can not delete '%s'." msgstr "Nemožné odstranit '%s'." #: ../../WINGs/wfilepanel.c:745 #, c-format msgid "Delete directory %s ?" msgstr "Odstranit adresář %s?" #: ../../WINGs/wfilepanel.c:748 #, c-format msgid "Delete file %s ?" msgstr "Odstranit soubor %s?" #: ../../WINGs/wfilepanel.c:760 #, c-format msgid "Directory '%s' does not exist." msgstr "Adresář '%s' neexistuje." #: ../../WINGs/wfilepanel.c:763 #, c-format msgid "Directory '%s' is not empty." msgstr "Adresář '%s' není prázdný." #: ../../WINGs/wfilepanel.c:766 #, c-format msgid "Directory '%s' is busy." msgstr "Adresář '%s' je používaný." #: ../../WINGs/wfilepanel.c:779 #, c-format msgid "'%s' is a directory." msgstr "'%s' je adresář." #: ../../WINGs/wfilepanel.c:821 #, c-format msgid "An error occurred browsing '%s'." msgstr "Při prohlížení '%s' nastala chyba." #: ../../WINGs/wfilepanel.c:825 #, c-format msgid "'%s' is not a directory." msgstr "'%s' není adresář." #: ../../WINGs/wfilepanel.c:962 msgid "File does not exist." msgstr "Soubor neexistuje." #: ../../WINGs/wfont.c:129 #, c-format msgid "the following character sets are missing in %s:" msgstr "nasledující sady znaků chybí v %s:" #: ../../WINGs/wfont.c:136 #, c-format msgid "" "the string \"%s\" will be used in place of any characters from those sets." msgstr "" "řetězec \"%s\" bude použitý namísto znaků z těchto sad." #: ../../WINGs/wfont.c:282 ../../WINGs/wfont.c:318 #, c-format msgid "could not load font set %s. Trying fixed." msgstr "nemožné načíst font %s. Zkouší se načíst fixed." #: ../../WINGs/wfont.c:288 ../../WINGs/wfont.c:324 #, c-format msgid "could not load font %s. Trying fixed." msgstr "nemožno načíst font %s. Zkoší se načíst fixed." #: ../../WINGs/wfont.c:292 ../../WINGs/wfont.c:328 msgid "could not load fixed font!" msgstr "nemožné načíst font fixed!" #: ../../WINGs/wfont.c:423 #, c-format msgid "font description %s is too large." msgstr "popis fontu %s je příliš velký." #: ../../WINGs/wfontpanel.c:205 msgid "Test!!!" msgstr "Zkouška!!!" #: ../../WINGs/wfontpanel.c:211 msgid "Family" msgstr "" #: ../../WINGs/wfontpanel.c:222 msgid "Typeface" msgstr "" #: ../../WINGs/wfontpanel.c:233 msgid "Size" msgstr "Velikost" #: ../../WINGs/wfontpanel.c:252 msgid "Set" msgstr "Sada" #: ../../WINGs/wfontpanel.c:257 msgid "Revert" msgstr "Zpět" #: ../../WINGs/wfontpanel.c:717 msgid "Could not retrieve font list" msgstr "Nemožné obdržet seznam fontů" #: ../../WINGs/wfontpanel.c:729 #, c-format msgid "font name %s is longer than 256, which is invalid." msgstr "jméno fontu %s je delší než 256, což je špatně." #: ../../WINGs/wfontpanel.c:880 msgid "Roman" msgstr "" #: ../../WINGs/wfontpanel.c:883 msgid "Italic" msgstr "" #: ../../WINGs/wfontpanel.c:885 msgid "Oblique" msgstr "" #: ../../WINGs/wfontpanel.c:887 msgid "Rev Italic" msgstr "" #: ../../WINGs/wfontpanel.c:889 msgid "Rev Oblique" msgstr "" #: ../../WINGs/wfontpanel.c:895 msgid "Normal" msgstr "Normílní" #: ../../WINGs/widgets.c:414 #, c-format msgid "WINGs: could not load widget images file: %s" msgstr "WINGs: nemožné načíst soubor s obrázky pro widgety: %s" #: ../../WINGs/widgets.c:525 #, c-format msgid "WINGs: could not open display %s" msgstr "WINGs: nemožné otevřít display %s" #: ../../WINGs/widgets.c:717 msgid "" "could not load any fonts. Make sure your font installationand locale " "settings are correct." msgstr "" "nemožné načíst žádný font. Ubezpečte se, že instalace fontů a místního " "nastavení jsou v pořádku." #: ../../WINGs/wruler.c:189 msgid "0 inches" msgstr "0 palců" #: ../../WINGs/wtext.c:1212 msgid "...for this app will surely crash :-)\n" msgstr "...pro tuto aplikaci to určitě spadne :-)\n" #: ../../WINGs/wtext.c:2084 msgid "didn't get it\n" msgstr "nedosaženo\n" #: ../../WINGs/wtext.c:2726 #, c-format msgid "type is [%s]\n" msgstr "typ je [%s]\n" #: ../../WINGs/wtext.c:2797 msgid "could not request data for dropped data" msgstr "nemohou být vyžádána data pro položená data" #: ../../WINGs/wtext.c:2995 msgid "could not create text's view\n" msgstr "nemožné zobrazit text\n" #: ../../WINGs/wview.c:219 msgid "trying to realize widget of unrealized parent" msgstr "snaha vytvořit widget neexistujícího rodiče objektu" #: ../../WINGs/wview.c:267 msgid "trying to reparent realized view to unrealized parent" msgstr "" #: ../../WINGs/wtextfield.c:490 msgid "only left alignment is supported in textfields" msgstr "pro textové pole je povolené jen levé zarovnání" #pozor, co je STRING? #: ../../WINGs/wwindow.c:222 msgid "window title conversion error... using STRING encoding" msgstr "chyba konverze titulku okna... použije se kódovaní STRING" #: ../../WINGs/wwindow.c:313 msgid "could not allocate memory for window size hints" msgstr "nemožné alokovat paměť pro pokyny velikosti okna" #: ../../WINGs/wwindow.c:586 msgid "could not allocate memory for WM hints" msgstr "nemožné alokovat paměť pro pokyny WM" #: ../../WINGs/wwindow.c:627 msgid "icon title conversion error..using STRING encoding" msgstr "chyba konverze titulku ikony... použije se kódovaní STRING" ����������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/po/hu.po�������������������������������������������������������������������0000644�0001750�0001750�00000043360�13642357773�013336� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Hungarian Translation for WINGs # Copyright (C)2014 BALATON Zoltan # This file is distributed under the same license as WINGs. # BALATON Zoltán <balaton@eik.bme.hu>, 2014 # msgid "" msgstr "" "Project-Id-Version: Window Maker 0.95.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-02-18 00:14+0100\n" "PO-Revision-Date: 2014-02-18 00:25+0100\n" "Last-Translator: BALATON Zoltán <balaton@eik.bme.hu>\n" "Language-Team: Hungarian\n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../../../wmaker-crm/WINGs/error.c:117 msgid "fatal: " msgstr "végzetes hiba: " #: ../../../wmaker-crm/WINGs/error.c:124 msgid "error: " msgstr "hiba: " #: ../../../wmaker-crm/WINGs/error.c:131 msgid "warning: " msgstr "figyelmeztetés: " #: ../../../wmaker-crm/WINGs/findfile.c:58 #, c-format msgid "could not get password entry for UID %i" msgstr "nem találtam jelszó bejegyzést a %i felhasználó azonosítóhoz" #: ../../../wmaker-crm/WINGs/findfile.c:87 #, c-format msgid "could not get password entry for user %s" msgstr "nem találtam jelszó bejegyzést a \"%s\" nevű felhasználóhoz" #: ../../../wmaker-crm/WINGs/findfile.c:203 #, c-format msgid "could not expand %s" msgstr "nem tudtam értelmezni: %s" #: ../../../wmaker-crm/WINGs/findfile.c:435 #, c-format msgid "Could not open %s" msgstr "Nem sikerült megnyitni ezt: %s" #: ../../../wmaker-crm/WINGs/findfile.c:442 #, c-format msgid "Could not create %s" msgstr "Nem sikerült létrehozni ezt: %s" #: ../../../wmaker-crm/WINGs/proplist.c:78 #, c-format msgid "syntax error in %s %s, line %i: %s" msgstr "formai hiba ebben: %s %s, %i. sor: %s" #: ../../../wmaker-crm/WINGs/proplist.c:134 msgid "Only string or data is supported for a proplist dictionary key" msgstr "proplist szótár kulcsa csak karakterlánc vagy adat típusú lehet" #: ../../../wmaker-crm/WINGs/proplist.c:167 #: ../../../wmaker-crm/WINGs/proplist.c:217 #: ../../../wmaker-crm/WINGs/proplist.c:382 #: ../../../wmaker-crm/WINGs/proplist.c:458 #: ../../../wmaker-crm/WINGs/proplist.c:1048 #: ../../../wmaker-crm/WINGs/proplist.c:1098 #: ../../../wmaker-crm/WINGs/proplist.c:1245 #: ../../../wmaker-crm/WINGs/proplist.c:1313 #: ../../../wmaker-crm/WINGs/proplist.c:1418 #: ../../../wmaker-crm/WINGs/proplist.c:1462 msgid "Used proplist functions on non-WMPropLists objects" msgstr "proplist függvényt próbáltál használni nem WMPropList objektumon" #: ../../../wmaker-crm/WINGs/proplist.c:635 msgid "unterminated PropList string" msgstr "befejezetlen PropList karakterlánc" #: ../../../wmaker-crm/WINGs/proplist.c:673 msgid "unterminated PropList data" msgstr "befejezetlen PropList adat" #: ../../../wmaker-crm/WINGs/proplist.c:681 msgid "unterminated PropList data (missing hexdigit)" msgstr "befejezetlen PropList adat (hiányzó hexa számjegy)" #: ../../../wmaker-crm/WINGs/proplist.c:693 #: ../../../wmaker-crm/WINGs/proplist.c:698 msgid "non hexdigit character in PropList data" msgstr "nem hexa számjegy karakter PropList adaton belül" #: ../../../wmaker-crm/WINGs/proplist.c:730 msgid "unterminated PropList array" msgstr "befejezetlen PropList tömb" #: ../../../wmaker-crm/WINGs/proplist.c:738 msgid "missing or unterminated PropList array" msgstr "hiányzó vagy befejezetlen PropList tömb" #: ../../../wmaker-crm/WINGs/proplist.c:748 msgid "could not get PropList array element" msgstr "nem találom a PropList tömb elemét" #: ../../../wmaker-crm/WINGs/proplist.c:775 msgid "unterminated PropList dictionary" msgstr "befejezetlen PropList szótár" #: ../../../wmaker-crm/WINGs/proplist.c:792 msgid "missing PropList dictionary key" msgstr "hiányzó PropList szótár kulcs" #: ../../../wmaker-crm/WINGs/proplist.c:794 msgid "missing PropList dictionary entry key or unterminated dictionary" msgstr "hiányzó PropList szótár kulcs vagy befejezetlen szótár" #: ../../../wmaker-crm/WINGs/proplist.c:802 msgid "error parsing PropList dictionary key" msgstr "hiba a PropList szótár kulcs értelmezése közben" #: ../../../wmaker-crm/WINGs/proplist.c:810 msgid "missing = in PropList dictionary entry" msgstr "hiányzó = a PropList szótár elemben" #: ../../../wmaker-crm/WINGs/proplist.c:818 msgid "error parsing PropList dictionary entry value" msgstr "hiba a PropList szótár elem értékenek értelmezése közben" #: ../../../wmaker-crm/WINGs/proplist.c:826 msgid "missing ; in PropList dictionary entry" msgstr "hiányzó ; a PropList szótár elemben" #: ../../../wmaker-crm/WINGs/proplist.c:885 msgid "was expecting a string, data, array or dictionary. If it's a string, try enclosing it with \"." msgstr "karakterlánc, adat, tömb vagy szótár típusra számítottam. Ha karakterláncot adtál meg, próbáld idézőjelbe tenni!" #: ../../../wmaker-crm/WINGs/proplist.c:888 msgid "Comments are not allowed inside WindowMaker owned domain files." msgstr "A Window Maker fájljaiban nem engedélyezettek a megjegyzések." #: ../../../wmaker-crm/WINGs/proplist.c:1482 #: ../../../wmaker-crm/WINGs/proplist.c:1547 #: ../../../wmaker-crm/WINGs/proplist.c:1604 msgid "extra data after end of property list" msgstr "extra adat a proplist vége után" #: ../../../wmaker-crm/WINGs/proplist.c:1522 #, c-format msgid "could not get size for file '%s'" msgstr "nem tudtam lekérdezni a következő fájl méretet: '%s'" #: ../../../wmaker-crm/WINGs/proplist.c:1530 #, c-format msgid "error reading from file '%s'" msgstr "nem tudtam beolvasni a következő fájlt: '%s'" #: ../../../wmaker-crm/WINGs/proplist.c:1575 #, c-format msgid "%s:could not open menu file" msgstr "%s: nem tudtam megnyitni a menü fájlt" #: ../../../wmaker-crm/WINGs/proplist.c:1642 #, c-format msgid "mkstemp (%s) failed" msgstr "mkstemp (%s) hibát adott" #: ../../../wmaker-crm/WINGs/proplist.c:1653 #, c-format msgid "mktemp (%s) failed" msgstr "mktemp (%s) hibát adott" #: ../../../wmaker-crm/WINGs/proplist.c:1660 #, c-format msgid "open (%s) failed" msgstr "open (%s) hibát adott" #: ../../../wmaker-crm/WINGs/proplist.c:1667 #, c-format msgid "writing to file: %s failed" msgstr "hiba a következő fájl írásakor: %s" #: ../../../wmaker-crm/WINGs/proplist.c:1676 #, c-format msgid "fclose (%s) failed" msgstr "fclose (%s) hibát adott" #: ../../../wmaker-crm/WINGs/proplist.c:1684 #, c-format msgid "rename ('%s' to '%s') failed" msgstr "rename ('%s'-ről '%s'-re) hibát adott" #: ../../../wmaker-crm/WINGs/proplist.c:1755 #, c-format msgid "Could not create component %s" msgstr "Nem sikerült létrehozni a %s elemet" #: ../../../wmaker-crm/WINGs/userdefaults.c:65 msgid "variable WMAKER_USER_ROOT defined with invalid path, not used" msgstr "A WMAKER_USER_ROOT változó be van állítva, de rossz értékre. Nem használom" #. something happened with the file. just overwrite it #: ../../../wmaker-crm/WINGs/userdefaults.c:196 #: ../../../wmaker-crm/WINGs/userdefaults.c:211 #, c-format msgid "cannot read domain from file '%s' when syncing" msgstr "szinkronizálás közben nem tudtam a tartományt kiolvasni a '%s' fájlból" #: ../../../wmaker-crm/WINGs/wcolor.c:204 #: ../../../wmaker-crm/WINGs/wcolor.c:214 #: ../../../wmaker-crm/WINGs/wcolor.c:250 #: ../../../wmaker-crm/WINGs/wcolor.c:288 #, c-format msgid "could not allocate %s color" msgstr "nem sikerült lefoglalni ezt a színt: %s" #: ../../../wmaker-crm/WINGs/wcolor.c:204 msgid "white" msgstr "fehér" #: ../../../wmaker-crm/WINGs/wcolor.c:214 msgid "black" msgstr "fekete" #: ../../../wmaker-crm/WINGs/wcolor.c:250 msgid "gray" msgstr "szürke" #: ../../../wmaker-crm/WINGs/wcolor.c:288 msgid "dark gray" msgstr "sötétszürke" #: ../../../wmaker-crm/WINGs/wcolorpanel.c:383 msgid "Colors" msgstr "Színek" #: ../../../wmaker-crm/WINGs/wcolorpanel.c:558 #: ../../../wmaker-crm/WINGs/wcolorpanel.c:2624 msgid "Brightness" msgstr "Világosság" #: ../../../wmaker-crm/WINGs/wcolorpanel.c:560 #: ../../../wmaker-crm/WINGs/wcolorpanel.c:634 #: ../../../wmaker-crm/WINGs/wcolorpanel.c:665 #: ../../../wmaker-crm/WINGs/wcolorpanel.c:696 #: ../../../wmaker-crm/WINGs/wcolorpanel.c:754 #: ../../../wmaker-crm/WINGs/wcolorpanel.c:785 #: ../../../wmaker-crm/WINGs/wcolorpanel.c:817 #: ../../../wmaker-crm/WINGs/wcolorpanel.c:850 #: ../../../wmaker-crm/WINGs/wcolorpanel.c:1988 #: ../../../wmaker-crm/WINGs/wcolorpanel.c:2626 #: ../../../wmaker-crm/WINGs/wcolorpanel.c:2660 #: ../../../wmaker-crm/WINGs/wcolorpanel.c:2694 msgid "Color Panel: Could not allocate memory" msgstr "Szín panel: nem sikerült a memória foglalás" #: ../../../wmaker-crm/WINGs/wcolorpanel.c:632 msgid "Red" msgstr "Piros" #: ../../../wmaker-crm/WINGs/wcolorpanel.c:663 msgid "Green" msgstr "Zöld" #: ../../../wmaker-crm/WINGs/wcolorpanel.c:694 msgid "Blue" msgstr "Kék" #: ../../../wmaker-crm/WINGs/wcolorpanel.c:752 msgid "Cyan" msgstr "Türkiz" #: ../../../wmaker-crm/WINGs/wcolorpanel.c:783 msgid "Magenta" msgstr "Lila" #: ../../../wmaker-crm/WINGs/wcolorpanel.c:815 msgid "Yellow" msgstr "Sárga" #: ../../../wmaker-crm/WINGs/wcolorpanel.c:848 msgid "Black" msgstr "Fekete" #: ../../../wmaker-crm/WINGs/wcolorpanel.c:923 msgid "Spectrum" msgstr "Spektrum" #: ../../../wmaker-crm/WINGs/wcolorpanel.c:949 msgid "Palette" msgstr "Paletta" #: ../../../wmaker-crm/WINGs/wcolorpanel.c:954 msgid "New from File..." msgstr "Új, fájlból..." #: ../../../wmaker-crm/WINGs/wcolorpanel.c:955 #: ../../../wmaker-crm/WINGs/wcolorpanel.c:1000 #: ../../../wmaker-crm/WINGs/wcolorpanel.c:1015 msgid "Rename..." msgstr "Átnevez..." #: ../../../wmaker-crm/WINGs/wcolorpanel.c:956 #: ../../../wmaker-crm/WINGs/wcolorpanel.c:1001 #: ../../../wmaker-crm/WINGs/wcolorpanel.c:1016 #: ../../../wmaker-crm/WINGs/wcolorpanel.c:3086 msgid "Remove" msgstr "Töröl" #: ../../../wmaker-crm/WINGs/wcolorpanel.c:957 msgid "Copy" msgstr "Másol" #: ../../../wmaker-crm/WINGs/wcolorpanel.c:958 msgid "New from Clipboard" msgstr "Új, vágólapról" #: ../../../wmaker-crm/WINGs/wcolorpanel.c:977 msgid "X11-Colors" msgstr "X11 színek" #: ../../../wmaker-crm/WINGs/wcolorpanel.c:994 msgid "Color" msgstr "Szín" #: ../../../wmaker-crm/WINGs/wcolorpanel.c:999 msgid "Add..." msgstr "Hozzáad..." #: ../../../wmaker-crm/WINGs/wcolorpanel.c:1009 msgid "List" msgstr "Lista" #: ../../../wmaker-crm/WINGs/wcolorpanel.c:1014 msgid "New..." msgstr "Új..." #: ../../../wmaker-crm/WINGs/wcolorpanel.c:1142 #, c-format msgid "Color Panel: Could not create directory %s needed to store configurations" msgstr "Szín panel: Nem sikerült a beállítások tárolásához szükséges könyvtárat létrehozni: %s" #. Delete the file, it doesn't belong here #: ../../../wmaker-crm/WINGs/wcolorpanel.c:1148 #: ../../../wmaker-crm/WINGs/wcolorpanel.c:2979 #: ../../../wmaker-crm/WINGs/wcolorpanel.c:2983 msgid "File Error" msgstr "Fájl hiba" #: ../../../wmaker-crm/WINGs/wcolorpanel.c:1149 msgid "Could not create ColorPanel configuration directory" msgstr "Nem sikerült létrehozni a Szín panel beállítás könyvtárát" #: ../../../wmaker-crm/WINGs/wcolorpanel.c:1150 #: ../../../wmaker-crm/WINGs/wcolorpanel.c:2980 #: ../../../wmaker-crm/WINGs/wcolorpanel.c:2985 #: ../../../wmaker-crm/WINGs/wcolorpanel.c:3010 #: ../../../wmaker-crm/WINGs/wfilepanel.c:227 #: ../../../wmaker-crm/WINGs/wfilepanel.c:596 #: ../../../wmaker-crm/WINGs/wfilepanel.c:611 #: ../../../wmaker-crm/WINGs/wfilepanel.c:712 #: ../../../wmaker-crm/WINGs/wfilepanel.c:890 #: ../../../wmaker-crm/WINGs/wfontpanel.c:534 msgid "OK" msgstr "OK" #: ../../../wmaker-crm/WINGs/wcolorpanel.c:1156 msgid "Color Panel: Could not find file" msgstr "Szín panel: nem találom a fájlt" #: ../../../wmaker-crm/WINGs/wcolorpanel.c:1352 #: ../../../wmaker-crm/WINGs/wcolorpanel.c:1413 #: ../../../wmaker-crm/WINGs/wcolorpanel.c:1473 msgid "Color Panel: X failed request" msgstr "Szín panel: hibás X kérés" #: ../../../wmaker-crm/WINGs/wcolorpanel.c:2658 msgid "Saturation" msgstr "Telítettség" #: ../../../wmaker-crm/WINGs/wcolorpanel.c:2692 msgid "Hue" msgstr "Árnyalat" #: ../../../wmaker-crm/WINGs/wcolorpanel.c:2918 msgid "Open Palette" msgstr "Paletta megnyitás" #: ../../../wmaker-crm/WINGs/wcolorpanel.c:2980 msgid "Invalid file format !" msgstr "Érvénytelen fájl formátum!" #: ../../../wmaker-crm/WINGs/wcolorpanel.c:2982 #, c-format msgid "can't remove file %s" msgstr "nem sikerült törölni a következő fált: %s" #: ../../../wmaker-crm/WINGs/wcolorpanel.c:2984 msgid "Couldn't remove file from Configuration Directory !" msgstr "Nem sikerült törölni a fájlt a beállítás könyvtárból!" #: ../../../wmaker-crm/WINGs/wcolorpanel.c:3009 msgid "Rename" msgstr "Átnevez" #: ../../../wmaker-crm/WINGs/wcolorpanel.c:3009 msgid "Rename palette to:" msgstr "Paletta átnevezése erre:" #: ../../../wmaker-crm/WINGs/wcolorpanel.c:3010 #: ../../../wmaker-crm/WINGs/wfilepanel.c:236 #: ../../../wmaker-crm/WINGs/wfilepanel.c:611 #: ../../../wmaker-crm/WINGs/wfilepanel.c:712 msgid "Cancel" msgstr "Mégsem" #. Careful, this palette exists already #: ../../../wmaker-crm/WINGs/wcolorpanel.c:3026 #: ../../../wmaker-crm/WINGs/wfilepanel.c:712 msgid "Warning" msgstr "Figyelem!" #: ../../../wmaker-crm/WINGs/wcolorpanel.c:3027 msgid "" "Palette already exists !\n" "\n" "Overwrite ?" msgstr "" "Ez a paletta már létezik!\n" "\n" "Felülírjam?" #: ../../../wmaker-crm/WINGs/wcolorpanel.c:3027 #: ../../../wmaker-crm/WINGs/wcolorpanel.c:3086 msgid "No" msgstr "Nem" #: ../../../wmaker-crm/WINGs/wcolorpanel.c:3027 #: ../../../wmaker-crm/WINGs/wcolorpanel.c:3086 msgid "Yes" msgstr "Igen" #: ../../../wmaker-crm/WINGs/wcolorpanel.c:3058 #, c-format msgid "Couldn't rename palette %s to %s" msgstr "Nem sikerült a paletta átnevezése %s-ről %s-re" #: ../../../wmaker-crm/WINGs/wcolorpanel.c:3081 msgid "This will permanently remove the palette " msgstr "Ez véglegesen törli a következő palettát: " #: ../../../wmaker-crm/WINGs/wcolorpanel.c:3083 msgid "" ".\n" "\n" "Are you sure you want to remove this palette ?" msgstr "" ".\n" "\n" "Biztosan törölni akarod ezt a palettát?" #: ../../../wmaker-crm/WINGs/wcolorpanel.c:3105 #, c-format msgid "Couldn't remove palette %s" msgstr "Nem sikerült törölni ezt a palettát: %s" #: ../../../wmaker-crm/WINGs/wcolorpanel.c:3395 msgid "Color Panel: Color unspecified" msgstr "Szín panel: nincs megadva szín" #: ../../../wmaker-crm/WINGs/wfilepanel.c:216 msgid "Name:" msgstr "Név: " #: ../../../wmaker-crm/WINGs/wfilepanel.c:306 #: ../../../wmaker-crm/WINGs/wfilepanel.c:364 msgid "Open" msgstr "Megnyit" #: ../../../wmaker-crm/WINGs/wfilepanel.c:322 #: ../../../wmaker-crm/WINGs/wfilepanel.c:370 msgid "Save" msgstr "Ment" #: ../../../wmaker-crm/WINGs/wfilepanel.c:506 #, c-format msgid "WINGs: could not open directory %s\n" msgstr "WINGs: nem tudom megnyitni a következő könyvtárat: %s\n" #: ../../../wmaker-crm/WINGs/wfilepanel.c:526 #, c-format msgid "WINGs: could not stat %s\n" msgstr "WINGs: nem tudom lekérdezni a következő fájl adatait: %s\n" #: ../../../wmaker-crm/WINGs/wfilepanel.c:596 #: ../../../wmaker-crm/WINGs/wfilepanel.c:890 #: ../../../wmaker-crm/WINGs/wfontpanel.c:533 msgid "Error" msgstr "Hiba" #: ../../../wmaker-crm/WINGs/wfilepanel.c:610 msgid "Create Directory" msgstr "Új könyvtár" #: ../../../wmaker-crm/WINGs/wfilepanel.c:611 msgid "Enter directory name" msgstr "Könyvtár neve" #: ../../../wmaker-crm/WINGs/wfilepanel.c:639 #, c-format msgid "Can not create %s: %s" msgstr "Nem sikerült létrehozni: %s: %s" #: ../../../wmaker-crm/WINGs/wfilepanel.c:702 #, c-format msgid "Can not find %s: %s" msgstr "Nem találom: %s: %s" #: ../../../wmaker-crm/WINGs/wfilepanel.c:708 #, c-format msgid "Delete %s %s?" msgstr "Töröljem a következő %s: \"%s\"?" #: ../../../wmaker-crm/WINGs/wfilepanel.c:709 msgid "directory" msgstr "könyvtárat" #: ../../../wmaker-crm/WINGs/wfilepanel.c:709 msgid "file" msgstr "fájlt" #: ../../../wmaker-crm/WINGs/wfilepanel.c:716 #, c-format msgid "Removing %s failed: %s" msgstr "Hiba \"%s\" törlésekor: %s" #: ../../../wmaker-crm/WINGs/wfilepanel.c:749 #, c-format msgid "An error occurred browsing '%s'." msgstr "Hiba történt a '%s' olvasásakor." #: ../../../wmaker-crm/WINGs/wfilepanel.c:752 #, c-format msgid "'%s' is not a directory." msgstr "Nem könyvtár: '%s'." #: ../../../wmaker-crm/WINGs/wfilepanel.c:890 msgid "File does not exist." msgstr "Nem létező fájl." #: ../../../wmaker-crm/WINGs/wfont.c:37 #, c-format msgid "invalid font: %s. Trying '%s'" msgstr "érvénytelen betűtípus: %s. Ezt próbálom helyette: '%s'" #: ../../../wmaker-crm/WINGs/wfont.c:227 ../../../wmaker-crm/WINGs/wfont.c:245 #, c-format msgid "could not load font: %s." msgstr "nem tudtam betölteni ezt a betűtípust: %s." #. WMSetWidgetBackgroundColor(panel->win, WMWhiteColor(scr)); #: ../../../wmaker-crm/WINGs/wfontpanel.c:186 msgid "Font Panel" msgstr "Betűtípus panel" #: ../../../wmaker-crm/WINGs/wfontpanel.c:222 msgid "The quick brown fox jumps over the lazy dog" msgstr "Árvíztűrő tükörfúrógép" #: ../../../wmaker-crm/WINGs/wfontpanel.c:228 msgid "Family" msgstr "Típuscsalád" #: ../../../wmaker-crm/WINGs/wfontpanel.c:239 msgid "Typeface" msgstr "Betűtípus" #: ../../../wmaker-crm/WINGs/wfontpanel.c:250 msgid "Size" msgstr "Méret" #: ../../../wmaker-crm/WINGs/wfontpanel.c:269 msgid "Set" msgstr "Beállít" #: ../../../wmaker-crm/WINGs/wfontpanel.c:275 msgid "Revert" msgstr "Elvet" #: ../../../wmaker-crm/WINGs/wfontpanel.c:534 msgid "Could not init font config library\n" msgstr "Nem sikerült inicializálni a betűtípus konfigurációs könyvtárat\n" #: ../../../wmaker-crm/WINGs/widgets.c:389 #, c-format msgid "WINGs: could not load widget images file: %s" msgstr "WINGs: nem tudtam betölteni a következő fájlt: %s" #: ../../../wmaker-crm/WINGs/widgets.c:724 msgid "could not load any fonts. Make sure your font installation and locale settings are correct." msgstr "egyetlen betűtípust sem tudtam betölteni. Ellenőrizd a telepítést és a nemzetközi beállítások helyességét!" #: ../../../wmaker-crm/WINGs/wruler.c:175 msgid "0 inches" msgstr "0 hüvelyk" ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/po/Makefile.am�������������������������������������������������������������0000644�0001750�0001750�00000007224�13431646201�014374� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������DOMAIN = WINGs CATALOGS = @WINGSMOFILES@ CLEANFILES = $(CATALOGS) $(DOMAIN).pot EXTRA_DIST = bg.po ca.po cs.po de.po fr.po fy.po hu.po nl.po sk.po # WUtil files: POTFILES = \ $(top_srcdir)/WINGs/array.c \ $(top_srcdir)/WINGs/bagtree.c \ $(top_srcdir)/WINGs/data.c \ $(top_srcdir)/WINGs/error.c \ $(top_srcdir)/WINGs/findfile.c \ $(top_srcdir)/WINGs/handlers.c \ $(top_srcdir)/WINGs/hashtable.c \ $(top_srcdir)/WINGs/memory.c \ $(top_srcdir)/WINGs/menuparser.c \ $(top_srcdir)/WINGs/menuparser_macros.c \ $(top_srcdir)/WINGs/misc.c \ $(top_srcdir)/WINGs/notification.c \ $(top_srcdir)/WINGs/proplist.c \ $(top_srcdir)/WINGs/string.c \ $(top_srcdir)/WINGs/tree.c \ $(top_srcdir)/WINGs/userdefaults.c \ $(top_srcdir)/WINGs/usleep.c \ $(top_srcdir)/WINGs/wapplication.c \ $(top_srcdir)/WINGs/wutil.c # WINGs files: POTFILES += \ $(top_srcdir)/WINGs/configuration.c \ $(top_srcdir)/WINGs/dragcommon.c \ $(top_srcdir)/WINGs/dragdestination.c \ $(top_srcdir)/WINGs/dragsource.c \ $(top_srcdir)/WINGs/selection.c \ $(top_srcdir)/WINGs/wappresource.c \ $(top_srcdir)/WINGs/wballoon.c \ $(top_srcdir)/WINGs/wbox.c \ $(top_srcdir)/WINGs/wbrowser.c \ $(top_srcdir)/WINGs/wbutton.c \ $(top_srcdir)/WINGs/wcolor.c \ $(top_srcdir)/WINGs/wcolorpanel.c \ $(top_srcdir)/WINGs/wcolorwell.c \ $(top_srcdir)/WINGs/wevent.c \ $(top_srcdir)/WINGs/wfilepanel.c \ $(top_srcdir)/WINGs/wframe.c \ $(top_srcdir)/WINGs/wfont.c \ $(top_srcdir)/WINGs/wfontpanel.c \ $(top_srcdir)/WINGs/widgets.c \ $(top_srcdir)/WINGs/winputmethod.c \ $(top_srcdir)/WINGs/wlabel.c \ $(top_srcdir)/WINGs/wlist.c \ $(top_srcdir)/WINGs/wmenuitem.c \ $(top_srcdir)/WINGs/wmisc.c \ $(top_srcdir)/WINGs/wpanel.c \ $(top_srcdir)/WINGs/wpixmap.c \ $(top_srcdir)/WINGs/wpopupbutton.c \ $(top_srcdir)/WINGs/wprogressindicator.c \ $(top_srcdir)/WINGs/wruler.c \ $(top_srcdir)/WINGs/wscroller.c \ $(top_srcdir)/WINGs/wscrollview.c \ $(top_srcdir)/WINGs/wslider.c \ $(top_srcdir)/WINGs/wsplitview.c \ $(top_srcdir)/WINGs/wtabview.c \ $(top_srcdir)/WINGs/wtext.c \ $(top_srcdir)/WINGs/wtextfield.c \ $(top_srcdir)/WINGs/wview.c \ $(top_srcdir)/WINGs/wwindow.c SUFFIXES = .po .mo .po.mo: $(AM_V_GEN)$(MSGFMT) -c -o $@ $< all-local: $(CATALOGS) .PHONY: update-lang if HAVE_XGETTEXT update-lang: $(DOMAIN).pot $(AM_V_GEN)$(top_srcdir)/script/generate-po-from-template.sh \ -n "$(PACKAGE_NAME)" -v "$(PACKAGE_VERSION)" -b "$(PACKAGE_BUGREPORT)" \ -t "$(DOMAIN).pot" "$(srcdir)/$(PO).po" $(DOMAIN).pot: $(POTFILES) $(AM_V_GEN)$(XGETTEXT) --default-domain=$(DOMAIN) \ --add-comments --keyword=_ --keyword=N_ $(POTFILES) @if cmp -s $(DOMAIN).po $(DOMAIN).pot; then \ rm -f $(DOMAIN).po; \ else \ mv -f $(DOMAIN).po $(DOMAIN).pot; \ fi endif install-data-local: $(CATALOGS) $(mkinstalldirs) $(DESTDIR)$(localedir) for n in $(CATALOGS) __DuMmY ; do \ if test "$$n" -a "$$n" != "__DuMmY" ; then \ l=`basename $$n .mo`; \ $(mkinstalldirs) $(DESTDIR)$(localedir)/$$l/LC_MESSAGES; \ $(INSTALL_DATA) -m 644 $$n $(DESTDIR)$(localedir)/$$l/LC_MESSAGES/$(DOMAIN).mo; \ fi; \ done uninstall-local: for n in $(CATALOGS) ; do \ l=`basename $$n .mo`; \ rm -f $(DESTDIR)$(localedir)/$$l/LC_MESSAGES/$(DOMAIN).mo; \ done # Create a 'silent rule' for our make check the same way automake does AM_V_CHKTRANS = $(am__v_CHKTRANS_$(V)) am__v_CHKTRANS_ = $(am__v_CHKTRANS_$(AM_DEFAULT_VERBOSITY)) am__v_CHKTRANS_0 = @echo " CHK translations" ; am__v_CHKTRANS_1 = # 'make check' will make sure the tranlation sources are in line with the compiled source check-local: $(AM_V_CHKTRANS)$(top_srcdir)/script/check-translation-sources.sh \ "$(srcdir)" -s "$(top_srcdir)/WINGs/Makefile.am" ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/po/de.po�������������������������������������������������������������������0000644�0001750�0001750�00000041113�13431646201�013263� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # German Message Catalog for WINGs # # Initial translation # Gudio Scholz <guido.scholz@bayernline.de> # # Adapted to versions 0.80 ff. # Torsten Marek <shlomme@gmx.net> # msgid "" msgstr "" "Project-Id-Version: WINGs\n" "POT-Creation-Date: 2004-11-01 16:24+0100\n" "PO-Revision-Date: 2004-11-05 23:48+0100\n" "Last-Translator: shlomme@gmx.net\n" "Language-Team: German\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../../WINGs/connection.c:471 ../../WINGs/connection.c:536 #: ../../WINGs/connection.c:579 msgid "Bad address-service-protocol combination" msgstr "Ungültige Kombination von Adresse und Dienstprotokoll" #: ../../WINGs/error.c:54 #, c-format msgid "Unknown error %d" msgstr "Unbekannter Fehler %d" #: ../../WINGs/error.c:59 #, c-format msgid "Error %d" msgstr "Fehler %d" #: ../../WINGs/error.c:110 msgid "warning: " msgstr "warnung: " #: ../../WINGs/error.c:137 msgid "fatal: " msgstr "fataler Fehler: " #: ../../WINGs/error.c:163 ../../WINGs/error.c:192 msgid "error: " msgstr "fehler: " #: ../../WINGs/findfile.c:48 #, c-format msgid "could not get password entry for UID %i" msgstr "Passworteintrag für UID %i konnte nicht ermittelt werden" #: ../../WINGs/findfile.c:66 #, c-format msgid "could not get password entry for user %s" msgstr "Passworteintrag für Benutzer %s konnte nicht ermittelt werden" #: ../../WINGs/host.c:114 msgid "Cannot get current host name" msgstr "Aktueller Hostname kann nicht ermittelt werden" #: ../../WINGs/proplist.c:91 #, c-format msgid "syntax error in %s %s, line %i: %s" msgstr "Syntaxfehler in %s %s, Zeile %i: %s" #: ../../WINGs/proplist.c:150 msgid "Only string or data is supported for a proplist dictionary key" msgstr "" "Nur Zeichenketten oder Binärdaten werden als Schlüssel für ein PropList-Dictionary " "unterstützt" #: ../../WINGs/proplist.c:184 ../../WINGs/proplist.c:236 #: ../../WINGs/proplist.c:394 ../../WINGs/proplist.c:474 #: ../../WINGs/proplist.c:1075 ../../WINGs/proplist.c:1127 #: ../../WINGs/proplist.c:1293 ../../WINGs/proplist.c:1372 #: ../../WINGs/proplist.c:1493 ../../WINGs/proplist.c:1540 msgid "Used proplist functions on non-WMPropLists objects" msgstr "PropList-Funktionen werden auf nicht-WMPropList-Objekte angewendet" #: ../../WINGs/proplist.c:630 msgid "unterminated PropList string" msgstr "nicht terminierte PropList-Zeichenkette" #: ../../WINGs/proplist.c:670 msgid "unterminated PropList data" msgstr "nicht terminierte PropList-Binärdaten" #: ../../WINGs/proplist.c:678 msgid "unterminated PropList data (missing hexdigit)" msgstr "nicht terminierte PropList-Binärdaten (fehlendes Hex-Zeichen)" #: ../../WINGs/proplist.c:690 ../../WINGs/proplist.c:695 msgid "non hexdigit character in PropList data" msgstr "falsches Hex-Zeichen in PropList-Binärdaten" #: ../../WINGs/proplist.c:729 msgid "unterminated PropList array" msgstr "nicht terminiertes PropList-Array" #: ../../WINGs/proplist.c:737 msgid "missing or unterminated PropList array" msgstr "fehlendes oder nicht terminiertes PropList-Array" #: ../../WINGs/proplist.c:747 msgid "could not get PropList array element" msgstr "PropList-Array-Element konnte nicht gelesen werden" #: ../../WINGs/proplist.c:776 msgid "unterminated PropList dictionary" msgstr "nicht terminiertes PropList-Dictionary" #: ../../WINGs/proplist.c:793 msgid "missing PropList dictionary key" msgstr "fehlender Schlüssel in PropList-Dictionary" #: ../../WINGs/proplist.c:795 msgid "missing PropList dictionary entry key or unterminated dictionary" msgstr "fehlender Schlüssel in PropList-Dictionary oder fehlende Terminierung" #: ../../WINGs/proplist.c:803 msgid "error parsing PropList dictionary key" msgstr "Fehler beim Parsen eines PropList-Dictionary-Schlüssels" #: ../../WINGs/proplist.c:811 msgid "missing = in PropList dictionary entry" msgstr "fehlendes \"=\" in PropList-Dictionary-Schlüssel" #: ../../WINGs/proplist.c:819 msgid "error parsing PropList dictionary entry value" msgstr "Fehler beim Parsen eines PropList-Dictionary-Wertes" #: ../../WINGs/proplist.c:827 msgid "missing ; in PropList dictionary entry" msgstr "fehlendes \";\" in PropList-Dictionary-Eintrag" #: ../../WINGs/proplist.c:888 msgid "" "was expecting a string, data, array or dictionary. If it's a string, try " "enclosing it with \"." msgstr "" "Zeichenkette, Binärdaten, Array oder Dictionary erwartet. Zeichenketten ggf. mit \" " "einklammern." #: ../../WINGs/proplist.c:892 msgid "Comments are not allowed inside WindowMaker owned domain files." msgstr "Kommentare sind in Domänendaten von WindowMaker nicht erlaubt." #: ../../WINGs/proplist.c:1563 ../../WINGs/proplist.c:1630 msgid "extra data after end of property list" msgstr "zusätzliche Daten hinter dem Ende der Propertyliste" #: ../../WINGs/proplist.c:1606 #, c-format msgid "could not get size for file '%s'" msgstr "Dateigröße von '%s' konnte nicht ermittelt werden" #: ../../WINGs/proplist.c:1619 #, c-format msgid "error reading from file '%s'" msgstr "Fehler beim Lesen der Datei '%s'" #: ../../WINGs/proplist.c:1671 #, c-format msgid "mkstemp (%s) failed" msgstr "mkstemp (%s) fehlgeschlagen" #: ../../WINGs/proplist.c:1682 #, c-format msgid "mktemp (%s) failed" msgstr "mktemp (%s) fehlgeschlagen" #: ../../WINGs/proplist.c:1693 #, c-format msgid "open (%s) failed" msgstr "open (%s) fehlgeschlagen" #: ../../WINGs/proplist.c:1700 #, c-format msgid "writing to file: %s failed" msgstr "Schreiben in Datei: %s fehlgeschlagen" #: ../../WINGs/proplist.c:1708 #, c-format msgid "fclose (%s) failed" msgstr "fclose (%s) fehlgeschlagen" #: ../../WINGs/proplist.c:1717 #, c-format msgid "rename ('%s' to '%s') failed" msgstr "rename ('%s' nach '%s') fehlgeschlagen" #. something happened with the file. just overwrite it #: ../../WINGs/userdefaults.c:188 ../../WINGs/userdefaults.c:204 #, c-format msgid "cannot read domain from file '%s' when syncing" msgstr "Bei der Synchronisation konnte nicht aus der Datei '%s' gelesen werden" #: ../../WINGs/wcolor.c:237 ../../WINGs/wcolor.c:249 ../../WINGs/wcolor.c:288 #: ../../WINGs/wcolor.c:329 #, c-format msgid "could not allocate %s color" msgstr "Farbe %s konnte nicht erzeugt werden" #: ../../WINGs/wcolor.c:237 msgid "white" msgstr "Weiß" #: ../../WINGs/wcolor.c:249 msgid "black" msgstr "Schwarz" #: ../../WINGs/wcolor.c:288 msgid "gray" msgstr "Grau" #: ../../WINGs/wcolor.c:329 msgid "dark gray" msgstr "Dunkelgrau" #: ../../WINGs/wcolorpanel.c:420 msgid "Colors" msgstr "Farben" #: ../../WINGs/wcolorpanel.c:610 ../../WINGs/wcolorpanel.c:2829 msgid "Brightness" msgstr "Helligkeit" #: ../../WINGs/wcolorpanel.c:612 ../../WINGs/wcolorpanel.c:688 #: ../../WINGs/wcolorpanel.c:721 ../../WINGs/wcolorpanel.c:755 #: ../../WINGs/wcolorpanel.c:815 ../../WINGs/wcolorpanel.c:849 #: ../../WINGs/wcolorpanel.c:883 ../../WINGs/wcolorpanel.c:918 #: ../../WINGs/wcolorpanel.c:2169 ../../WINGs/wcolorpanel.c:2831 #: ../../WINGs/wcolorpanel.c:2867 ../../WINGs/wcolorpanel.c:2903 #: ../../WINGs/wcolorpanel.c:3745 msgid "Color Panel: Could not allocate memory" msgstr "Farb-Panel: Speicher konnte nicht reserviert werden" #: ../../WINGs/wcolorpanel.c:685 ../../WINGs/wcolorpanel.c:686 msgid "Red" msgstr "Rot" #: ../../WINGs/wcolorpanel.c:718 ../../WINGs/wcolorpanel.c:719 msgid "Green" msgstr "Grün" #: ../../WINGs/wcolorpanel.c:752 ../../WINGs/wcolorpanel.c:753 msgid "Blue" msgstr "Blau" #: ../../WINGs/wcolorpanel.c:812 ../../WINGs/wcolorpanel.c:813 msgid "Cyan" msgstr "" #: ../../WINGs/wcolorpanel.c:846 ../../WINGs/wcolorpanel.c:847 msgid "Magenta" msgstr "" #: ../../WINGs/wcolorpanel.c:880 ../../WINGs/wcolorpanel.c:881 msgid "Yellow" msgstr "Gelb" #: ../../WINGs/wcolorpanel.c:915 ../../WINGs/wcolorpanel.c:916 msgid "Black" msgstr "Schwarz" #: ../../WINGs/wcolorpanel.c:996 msgid "Spectrum" msgstr "Spektrum" #: ../../WINGs/wcolorpanel.c:1026 msgid "Palette" msgstr "" #: ../../WINGs/wcolorpanel.c:1032 msgid "New from File..." msgstr "Neu aus Datei..." #: ../../WINGs/wcolorpanel.c:1033 ../../WINGs/wcolorpanel.c:1081 #: ../../WINGs/wcolorpanel.c:1098 msgid "Rename..." msgstr "Umbenennen..." #: ../../WINGs/wcolorpanel.c:1034 ../../WINGs/wcolorpanel.c:1082 #: ../../WINGs/wcolorpanel.c:1099 ../../WINGs/wcolorpanel.c:3326 msgid "Remove" msgstr "Entfernen" #: ../../WINGs/wcolorpanel.c:1035 msgid "Copy" msgstr "Kopieren" #: ../../WINGs/wcolorpanel.c:1036 msgid "New from Clipboard" msgstr "Neu aus Zwischenablage" #: ../../WINGs/wcolorpanel.c:1057 msgid "X11-Colors" msgstr "X11-Farben" #: ../../WINGs/wcolorpanel.c:1074 msgid "Color" msgstr "Farbe" #: ../../WINGs/wcolorpanel.c:1080 msgid "Add..." msgstr "Hinzufügen..." #: ../../WINGs/wcolorpanel.c:1090 msgid "List" msgstr "Liste" #: ../../WINGs/wcolorpanel.c:1097 msgid "New..." msgstr "Neu..." #: ../../WINGs/wcolorpanel.c:1236 #, c-format msgid "Color Panel: Could not create directory %s needed to store configurations" msgstr "Farb-Panel: Verzeichnis %s konnte zum Speichern der Konfiguration nicht erzeugt werden" #. Delete the file, it doesn't belong here #: ../../WINGs/wcolorpanel.c:1242 ../../WINGs/wcolorpanel.c:3212 #: ../../WINGs/wcolorpanel.c:3216 msgid "File Error" msgstr "Dateifehler" #: ../../WINGs/wcolorpanel.c:1243 msgid "Could not create ColorPanel configuration directory" msgstr "Konfigurationsverzeichnis für Farb-Panel konnte nicht erzeugt werden" #: ../../WINGs/wcolorpanel.c:1244 ../../WINGs/wcolorpanel.c:3213 #: ../../WINGs/wcolorpanel.c:3218 ../../WINGs/wcolorpanel.c:3245 #: ../../WINGs/wfilepanel.c:250 ../../WINGs/wfilepanel.c:650 #: ../../WINGs/wfilepanel.c:662 ../../WINGs/wfilepanel.c:763 #: ../../WINGs/wfilepanel.c:974 ../../WINGs/wfontpanel.c:591 msgid "OK" msgstr "" #: ../../WINGs/wcolorpanel.c:1250 ../../WINGs/wcolorpanel.c:1286 #: ../../WINGs/wcolorpanel.c:1304 msgid "Color Panel: Could not find file" msgstr "Farb-Panel: Datei konnte nicht gefunden werden" #: ../../WINGs/wcolorpanel.c:1491 ../../WINGs/wcolorpanel.c:1556 #: ../../WINGs/wcolorpanel.c:1620 msgid "Color Panel: X failed request" msgstr "Farb-Panel: X-Anfrage fehlgeschlagen" #: ../../WINGs/wcolorpanel.c:2865 msgid "Saturation" msgstr "Sättigung" #: ../../WINGs/wcolorpanel.c:2901 msgid "Hue" msgstr "Farbton" #: ../../WINGs/wcolorpanel.c:3151 msgid "Open Palette" msgstr "Palette öffnen" #: ../../WINGs/wcolorpanel.c:3213 msgid "Invalid file format !" msgstr "Ungültiges Dateiformat!" #: ../../WINGs/wcolorpanel.c:3215 #, c-format msgid "can't remove file %s" msgstr "Datei %s konnte nicht entfert werden" #: ../../WINGs/wcolorpanel.c:3217 msgid "Couldn't remove file from Configuration Directory !" msgstr "Datei konnte nicht aus Konfigurationsverzeichnis entfernt werden!" #: ../../WINGs/wcolorpanel.c:3244 msgid "Rename" msgstr "Umbenennen" #: ../../WINGs/wcolorpanel.c:3244 msgid "Rename palette to:" msgstr "Palette umbenennen in:" #: ../../WINGs/wcolorpanel.c:3245 ../../WINGs/wfilepanel.c:259 #: ../../WINGs/wfilepanel.c:662 ../../WINGs/wfilepanel.c:763 msgid "Cancel" msgstr "Abbrechen" #. Careful, this palette exists already #: ../../WINGs/wcolorpanel.c:3261 ../../WINGs/wfilepanel.c:763 msgid "Warning" msgstr "Warnung" #: ../../WINGs/wcolorpanel.c:3262 msgid "" "Palette already exists !\n" "\n" "Overwrite ?" msgstr "" "Palette existiert bereits!\n" "\n" "Überschreiben?" #: ../../WINGs/wcolorpanel.c:3262 ../../WINGs/wcolorpanel.c:3326 msgid "No" msgstr "Nein" #: ../../WINGs/wcolorpanel.c:3262 ../../WINGs/wcolorpanel.c:3326 msgid "Yes" msgstr "Ja" #: ../../WINGs/wcolorpanel.c:3294 #, c-format msgid "Couldn't rename palette %s to %s\n" msgstr "Palette %s konnte nicht nach %s umbenannt werden\n" #: ../../WINGs/wcolorpanel.c:3320 msgid "This will permanently remove the palette " msgstr "Hiermit wird die Palette unwiderruflich gelöscht " #: ../../WINGs/wcolorpanel.c:3323 msgid "" ".\n" "\n" "Are you sure you want to remove this palette ?" msgstr "" ".\n" "\n" "Sind Sie sicher, dass Sie die Palette löschen wollen?" #: ../../WINGs/wcolorpanel.c:3348 #, c-format msgid "Couldn't remove palette %s\n" msgstr "Palette %s konnte nicht gelöscht werden\n" #: ../../WINGs/wcolorpanel.c:3647 #, c-format msgid "Could not open %s" msgstr "%s konnte nicht geöffnet werden" #: ../../WINGs/wcolorpanel.c:3654 #, c-format msgid "Could not create %s" msgstr "%s konnte nicht erzeugt werden" #: ../../WINGs/wcolorpanel.c:3665 #, c-format msgid "Write error on file %s" msgstr "Schreibfehler bei Datei %s" #: ../../WINGs/wcolorpanel.c:3710 msgid "Color Panel: Color unspecified" msgstr "Farb-Panel: Farbe nicht spezifiziert" #: ../../WINGs/wfilepanel.c:235 msgid "Name:" msgstr "Name:" #: ../../WINGs/wfilepanel.c:332 ../../WINGs/wfilepanel.c:396 msgid "Open" msgstr "Öffnen" #: ../../WINGs/wfilepanel.c:350 ../../WINGs/wfilepanel.c:402 msgid "Save" msgstr "Speichern" #: ../../WINGs/wfilepanel.c:565 #, c-format msgid "WINGs: could not open directory %s\n" msgstr "WINGs: Verzeichnis %s konnte nicht geöffnet werden\n" #: ../../WINGs/wfilepanel.c:583 #, c-format msgid "WINGs: could not stat %s\n" msgstr "WINGs: Dateistatus von %s unbestimmbar\n" #: ../../WINGs/wfilepanel.c:650 ../../WINGs/wfilepanel.c:973 #: ../../WINGs/wfontpanel.c:590 msgid "Error" msgstr "Fehler" #: ../../WINGs/wfilepanel.c:661 msgid "Create Directory" msgstr "Verzeichnis anlegen" #: ../../WINGs/wfilepanel.c:662 msgid "Enter directory name" msgstr "Verzeichnisname eingeben" #: ../../WINGs/wfilepanel.c:698 ../../WINGs/wfilepanel.c:737 #: ../../WINGs/wfilepanel.c:768 ../../WINGs/wfilepanel.c:796 msgid "Permission denied." msgstr "Zugriff verweigert." #: ../../WINGs/wfilepanel.c:701 #, c-format msgid "'%s' already exists." msgstr "'%s' existiert bereits." #: ../../WINGs/wfilepanel.c:704 msgid "Path does not exist." msgstr "Pfad existiert nicht." #: ../../WINGs/wfilepanel.c:734 ../../WINGs/wfilepanel.c:793 #, c-format msgid "'%s' does not exist." msgstr "'%s' existiert nicht." #: ../../WINGs/wfilepanel.c:741 ../../WINGs/wfilepanel.c:800 msgid "Insufficient memory available." msgstr "Nicht genügend Speicher verfügbar." #: ../../WINGs/wfilepanel.c:745 ../../WINGs/wfilepanel.c:804 #, c-format msgid "'%s' is on a read-only filesystem." msgstr "'%s' liegt auf einem nur lesbaren Dateisystem." #: ../../WINGs/wfilepanel.c:748 ../../WINGs/wfilepanel.c:780 #: ../../WINGs/wfilepanel.c:807 #, c-format msgid "Can not delete '%s'." msgstr "Kann %s nicht löschen." #: ../../WINGs/wfilepanel.c:755 #, c-format msgid "Delete directory %s ?" msgstr "Verzeichnis %s löschen?" #: ../../WINGs/wfilepanel.c:759 #, c-format msgid "Delete file %s ?" msgstr "Datei %s löschen?" #: ../../WINGs/wfilepanel.c:771 #, c-format msgid "Directory '%s' does not exist." msgstr "Verzeichnis '%s' existiert nicht." #: ../../WINGs/wfilepanel.c:774 #, c-format msgid "Directory '%s' is not empty." msgstr "Verzeichnis '%s' ist nicht leer." #: ../../WINGs/wfilepanel.c:777 #, c-format msgid "Directory '%s' is busy." msgstr "Verzeichnis '%s' wird benutz." #: ../../WINGs/wfilepanel.c:790 #, c-format msgid "'%s' is a directory." msgstr "'%s' ist ein Verzeichnis." #: ../../WINGs/wfilepanel.c:832 #, c-format msgid "An error occurred browsing '%s'." msgstr "Fehler beim Lesen von '%s'." #: ../../WINGs/wfilepanel.c:836 #, c-format msgid "'%s' is not a directory." msgstr "'%s' ist kein Verzeichnis." #: ../../WINGs/wfilepanel.c:973 msgid "File does not exist." msgstr "Datei existiert nicht." #: ../../WINGs/wfont.c:40 #, c-format msgid "invalid font: %s. Trying '%s'" msgstr "Ungültige Schriftart: %s. Wird ersetzt durch %s." #: ../../WINGs/wfont.c:257 ../../WINGs/wfont.c:277 #, c-format msgid "could not load font: %s." msgstr "Schriftart konnte nicht geladen werden: %s" #. WMSetWidgetBackgroundColor(panel->win, WMWhiteColor(scr)); #: ../../WINGs/wfontpanel.c:203 msgid "Font Panel" msgstr "Schrift-Panel" #: ../../WINGs/wfontpanel.c:239 msgid "The quick brown fox jumps over the lazy dog" msgstr "" #: ../../WINGs/wfontpanel.c:245 msgid "Family" msgstr "Familie" #: ../../WINGs/wfontpanel.c:256 msgid "Typeface" msgstr "Schriftart" #: ../../WINGs/wfontpanel.c:267 msgid "Size" msgstr "Größe" #: ../../WINGs/wfontpanel.c:286 msgid "Set" msgstr "Setzen" #: ../../WINGs/wfontpanel.c:292 msgid "Revert" msgstr "Zurücksetzen" #: ../../WINGs/wfontpanel.c:591 msgid "Could not init font config library\n" msgstr "\"font-config\"-Bibliothek konnte nicht initialisiert werden\n" #: ../../WINGs/widgets.c:419 #, c-format msgid "WINGs: could not load widget images file: %s" msgstr "WINGs: Widget-Bilderdatei konnte nicht geladen werden: %s" #: ../../WINGs/widgets.c:767 msgid "" "could not load any fonts. Make sure your font installation and locale " "settings are correct." msgstr "" "Keine Schrifen konnten geladen werden. Überprüfen Sie, ob Ihre Schrifteninstallation und -" "Lokalisierungseinstellungen korrekt sind." #: ../../WINGs/wruler.c:192 msgid "0 inches" msgstr "0 Inch" �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/po/bg.po�������������������������������������������������������������������0000644�0001750�0001750�00000050211�13431646201�013262� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Message catalog for WINGs # Copyright (C) 2003 Free Software Foundation, Inc. # Anton Zinoviev <zinoviev@debian.org>, 2003 # msgid "" msgstr "" "Project-Id-Version: WINGs 0.80.0\n" "POT-Creation-Date: 2003-02-08 21:42+0200\n" "PO-Revision-Date: 2003-02-09 12:10+0200\n" "Last-Translator: Anton Zinoviev <zinoviev@debian.org>\n" "Language-Team: Bulgarian <dict@linux.zonebg.com>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../../WINGs/connection.c:461 ../../WINGs/connection.c:526 #: ../../WINGs/connection.c:569 msgid "Bad address-service-protocol combination" msgstr "Неправилна комбинация адрес-услуга-протокол" #: ../../WINGs/error.c:54 #, c-format msgid "Unknown error %d" msgstr "Непозната грешка %d" #: ../../WINGs/error.c:59 #, c-format msgid "Error %d" msgstr "Грешка %d" #: ../../WINGs/error.c:110 msgid "warning: " msgstr "внимание: " #: ../../WINGs/error.c:137 msgid "fatal: " msgstr "критична грешка: " #: ../../WINGs/error.c:163 ../../WINGs/error.c:192 msgid "error: " msgstr "грешка: " #: ../../WINGs/findfile.c:48 #, c-format msgid "could not get password entry for UID %i" msgstr "не може да се получи записът за парола на потребител с номер %i" #: ../../WINGs/findfile.c:66 #, c-format msgid "could not get password entry for user %s" msgstr "не може да се получи записът за парола на потребител %s<" #: ../../WINGs/host.c:114 msgid "Cannot get current host name" msgstr "Не може да се получи името на хоста" #: ../../WINGs/proplist.c:91 #, c-format msgid "syntax error in %s %s, line %i: %s" msgstr "синтактична грешка в %s %s, ред %i: %s" #: ../../WINGs/proplist.c:150 msgid "Only string or data is supported for a proplist dictionary key" msgstr "Като ключ за достъп до proplist се поддържат само низове или данни" #: ../../WINGs/proplist.c:184 ../../WINGs/proplist.c:236 #: ../../WINGs/proplist.c:394 ../../WINGs/proplist.c:474 #: ../../WINGs/proplist.c:1075 ../../WINGs/proplist.c:1127 #: ../../WINGs/proplist.c:1293 ../../WINGs/proplist.c:1372 #: ../../WINGs/proplist.c:1493 ../../WINGs/proplist.c:1540 msgid "Used proplist functions on non-WMPropLists objects" msgstr "Ползват се proplist-функции за обекти, които не са от тип WMPropLists" #: ../../WINGs/proplist.c:630 msgid "unterminated PropList string" msgstr "незавършен низ PropList" #: ../../WINGs/proplist.c:670 msgid "unterminated PropList data" msgstr "незавършени данни PropList" #: ../../WINGs/proplist.c:678 msgid "unterminated PropList data (missing hexdigit)" msgstr "незавършени данни PropList (липсва шестнадесетично число)" #: ../../WINGs/proplist.c:690 ../../WINGs/proplist.c:695 msgid "non hexdigit character in PropList data" msgstr "знак, който не е шестнадесетично число, в данни PropList" #: ../../WINGs/proplist.c:729 msgid "unterminated PropList array" msgstr "незавършен масив PropList" #: ../../WINGs/proplist.c:737 msgid "missing or unterminated PropList array" msgstr "липсващ или незавършен масив Proplist" #: ../../WINGs/proplist.c:747 msgid "could not get PropList array element" msgstr "не може да се получи елемент от масив PropList" #: ../../WINGs/proplist.c:776 msgid "unterminated PropList dictionary" msgstr "незавършен речник PropList" #: ../../WINGs/proplist.c:793 msgid "missing PropList dictionary key" msgstr "липсващ ключ за достъп до PropList" #: ../../WINGs/proplist.c:795 msgid "missing PropList dictionary entry key or unterminated dictionary" msgstr "липсващ ключ за достъп до PropList или незавършен речник" #: ../../WINGs/proplist.c:803 msgid "error parsing PropList dictionary key" msgstr "грешка при разбор на ключ в PropList" #: ../../WINGs/proplist.c:811 msgid "missing = in PropList dictionary entry" msgstr "липсва знак за равенство в елемент на PropList" #: ../../WINGs/proplist.c:819 msgid "error parsing PropList dictionary entry value" msgstr "грешка при разбор на стойност на елемент в PropList" #: ../../WINGs/proplist.c:827 msgid "missing ; in PropList dictionary entry" msgstr "липсва знак точка и запетая в елемент на PropList" #: ../../WINGs/proplist.c:888 msgid "" "was expecting a string, data, array or dictionary. If it's a string, try " "enclosing it with \"." msgstr "очакваха се низ, данни, масив или речник. Ако е речник, пробвайте да го оградите с \"." #: ../../WINGs/proplist.c:892 msgid "Comments are not allowed inside WindowMaker owned domain files." msgstr "Не се позволяват коментари във файлове с области, собственост на Уиндоу Мейкър" #: ../../WINGs/proplist.c:1563 ../../WINGs/proplist.c:1628 msgid "extra data after end of property list" msgstr "данни в повече след края на списък свойства" #: ../../WINGs/proplist.c:1606 #, c-format msgid "could not get size for file '%s'" msgstr "не може да се получи размерът за файл \"%s\"" #: ../../WINGs/proplist.c:1618 #, c-format msgid "error reading from file '%s'" msgstr "грешка при четене от файл \"%s\"" #: ../../WINGs/proplist.c:1669 #, c-format msgid "mkstemp (%s) failed" msgstr "mkstemp (%s) не успя" #: ../../WINGs/proplist.c:1680 #, c-format msgid "mktemp (%s) failed" msgstr "mktemp (%s) не успя" #: ../../WINGs/proplist.c:1691 #, c-format msgid "open (%s) failed" msgstr "open (%s) не успя" #: ../../WINGs/proplist.c:1698 #, c-format msgid "writing to file: %s failed" msgstr "записът във файл %s не успя" #: ../../WINGs/proplist.c:1706 #, c-format msgid "fclose (%s) failed" msgstr "fclose (%s) не успя" #: ../../WINGs/proplist.c:1715 #, c-format msgid "rename ('%s' to '%s') failed" msgstr "преименуването (от \"%s\" на \"%s\") не успя" #. something happened with the file. just overwrite it #: ../../WINGs/userdefaults.c:192 ../../WINGs/userdefaults.c:208 #, c-format msgid "cannot read domain from file '%s' when syncing" msgstr "не може да се прочете областта от файл \"%s\" при синхронизиране" #: ../../WINGs/wcolor.c:198 ../../WINGs/wcolor.c:211 ../../WINGs/wcolor.c:250 #: ../../WINGs/wcolor.c:291 #, c-format msgid "could not allocate %s color" msgstr "не може да се задели цвят %s" #: ../../WINGs/wcolor.c:198 msgid "white" msgstr "бял" #: ../../WINGs/wcolor.c:211 msgid "black" msgstr "черен" #: ../../WINGs/wcolor.c:250 msgid "gray" msgstr "сив" #: ../../WINGs/wcolor.c:291 msgid "dark gray" msgstr "тъмносив" #: ../../WINGs/wcolorpanel.c:415 msgid "Colors" msgstr "Цветове" #: ../../WINGs/wcolorpanel.c:605 ../../WINGs/wcolorpanel.c:2824 msgid "Brightness" msgstr "Яркост" #: ../../WINGs/wcolorpanel.c:607 ../../WINGs/wcolorpanel.c:683 #: ../../WINGs/wcolorpanel.c:716 ../../WINGs/wcolorpanel.c:750 #: ../../WINGs/wcolorpanel.c:810 ../../WINGs/wcolorpanel.c:844 #: ../../WINGs/wcolorpanel.c:878 ../../WINGs/wcolorpanel.c:913 #: ../../WINGs/wcolorpanel.c:2164 ../../WINGs/wcolorpanel.c:2826 #: ../../WINGs/wcolorpanel.c:2862 ../../WINGs/wcolorpanel.c:2898 #: ../../WINGs/wcolorpanel.c:3746 msgid "Color Panel: Could not allocate memory" msgstr "Color Panel: не може да се задели памет" #: ../../WINGs/wcolorpanel.c:680 ../../WINGs/wcolorpanel.c:681 msgid "Red" msgstr "Червен" #: ../../WINGs/wcolorpanel.c:713 ../../WINGs/wcolorpanel.c:714 msgid "Green" msgstr "Зелен" #: ../../WINGs/wcolorpanel.c:747 ../../WINGs/wcolorpanel.c:748 msgid "Blue" msgstr "Син" #: ../../WINGs/wcolorpanel.c:807 ../../WINGs/wcolorpanel.c:808 msgid "Cyan" msgstr "Синьозелен" #: ../../WINGs/wcolorpanel.c:841 ../../WINGs/wcolorpanel.c:842 msgid "Magenta" msgstr "Пурпурен" #: ../../WINGs/wcolorpanel.c:875 ../../WINGs/wcolorpanel.c:876 msgid "Yellow" msgstr "Жълт" #: ../../WINGs/wcolorpanel.c:910 ../../WINGs/wcolorpanel.c:911 msgid "Black" msgstr "Черен" #: ../../WINGs/wcolorpanel.c:991 msgid "Spectrum" msgstr "Спектър" #: ../../WINGs/wcolorpanel.c:1021 msgid "Palette" msgstr "Палитра" #: ../../WINGs/wcolorpanel.c:1027 msgid "New from File..." msgstr "Нова от файл..." #: ../../WINGs/wcolorpanel.c:1028 ../../WINGs/wcolorpanel.c:1076 #: ../../WINGs/wcolorpanel.c:1093 msgid "Rename..." msgstr "Преименувай..." #: ../../WINGs/wcolorpanel.c:1029 ../../WINGs/wcolorpanel.c:1077 #: ../../WINGs/wcolorpanel.c:1094 ../../WINGs/wcolorpanel.c:3321 msgid "Remove" msgstr "Премахни" #: ../../WINGs/wcolorpanel.c:1030 msgid "Copy" msgstr "Копирай" #: ../../WINGs/wcolorpanel.c:1031 #, fuzzy msgid "New from Clipboard" msgstr "Нова от Clipboard" #: ../../WINGs/wcolorpanel.c:1052 msgid "X11-Colors" msgstr "Цветове от X11" #: ../../WINGs/wcolorpanel.c:1069 msgid "Color" msgstr "Цвят" #: ../../WINGs/wcolorpanel.c:1075 msgid "Add..." msgstr "Добави..." #: ../../WINGs/wcolorpanel.c:1085 msgid "List" msgstr "Списък" #: ../../WINGs/wcolorpanel.c:1092 msgid "New..." msgstr "Нов..." #: ../../WINGs/wcolorpanel.c:1231 #, c-format msgid "" "Color Panel: Could not create directory %s needed to store configurations" msgstr "Color Panel: Не може да се създаде директория %s, необходима за да се запазят настройките" #. Delete the file, it doesn't belong here #: ../../WINGs/wcolorpanel.c:1237 ../../WINGs/wcolorpanel.c:3207 #: ../../WINGs/wcolorpanel.c:3211 msgid "File Error" msgstr "Файлова грешка" #: ../../WINGs/wcolorpanel.c:1238 msgid "Could not create ColorPanel configuration directory" msgstr "Не може да се създаде конфигурационна директория за ColorPanel" #: ../../WINGs/wcolorpanel.c:1239 ../../WINGs/wcolorpanel.c:3208 #: ../../WINGs/wcolorpanel.c:3213 ../../WINGs/wcolorpanel.c:3240 #: ../../WINGs/wfilepanel.c:250 ../../WINGs/wfilepanel.c:647 #: ../../WINGs/wfilepanel.c:659 ../../WINGs/wfilepanel.c:760 #: ../../WINGs/wfilepanel.c:971 ../../WINGs/wfontpanel.c:709 msgid "OK" msgstr "Приемам" #: ../../WINGs/wcolorpanel.c:1245 ../../WINGs/wcolorpanel.c:1281 #: ../../WINGs/wcolorpanel.c:1299 msgid "Color Panel: Could not find file" msgstr "Color Panel: Не може да се открие файла" #: ../../WINGs/wcolorpanel.c:1486 ../../WINGs/wcolorpanel.c:1551 #: ../../WINGs/wcolorpanel.c:1615 msgid "Color Panel: X failed request" msgstr "Color Panel: не успя заявка към X" #: ../../WINGs/wcolorpanel.c:2860 msgid "Saturation" msgstr "Наситеност" #: ../../WINGs/wcolorpanel.c:2896 msgid "Hue" msgstr "Нюанс" #: ../../WINGs/wcolorpanel.c:3146 msgid "Open Palette" msgstr "Отваряне на палитра" #: ../../WINGs/wcolorpanel.c:3208 msgid "Invalid file format !" msgstr "Неправилен файлов формат!" #: ../../WINGs/wcolorpanel.c:3210 #, c-format msgid "can't remove file %s" msgstr "не може да се изтрие файлът %s" #: ../../WINGs/wcolorpanel.c:3212 msgid "Couldn't remove file from Configuration Directory !" msgstr "Не може да се изтрие файл от директорията за настройки!" #: ../../WINGs/wcolorpanel.c:3239 msgid "Rename" msgstr "Преименуване" #: ../../WINGs/wcolorpanel.c:3239 msgid "Rename palette to:" msgstr "Преименувай палитрата на " #: ../../WINGs/wcolorpanel.c:3240 ../../WINGs/wfilepanel.c:259 #: ../../WINGs/wfilepanel.c:659 ../../WINGs/wfilepanel.c:760 msgid "Cancel" msgstr "Отменям" #. Careful, this palette exists already #: ../../WINGs/wcolorpanel.c:3256 ../../WINGs/wfilepanel.c:760 msgid "Warning" msgstr "Внимание" #: ../../WINGs/wcolorpanel.c:3257 msgid "" "Palette already exists !\n" "\n" "Overwrite ?" msgstr "" "Такава палитра вече съществува!\n" "\n" "Да бъде ли заменена с новата?" #: ../../WINGs/wcolorpanel.c:3257 ../../WINGs/wcolorpanel.c:3321 msgid "No" msgstr "Не" #: ../../WINGs/wcolorpanel.c:3257 ../../WINGs/wcolorpanel.c:3321 msgid "Yes" msgstr "Да" #: ../../WINGs/wcolorpanel.c:3289 #, c-format msgid "Couldn't rename palette %s to %s\n" msgstr "Палитрата %s не може да се преименува на %s\n" #: ../../WINGs/wcolorpanel.c:3315 msgid "This will permanently remove the palette " msgstr "Това ще отстрани палитрата необратимо " #: ../../WINGs/wcolorpanel.c:3318 msgid "" ".\n" "\n" "Are you sure you want to remove this palette ?" msgstr "" ".\n" "\n" "Убедени ли сте, че искате да отстраните тази палитра?" #: ../../WINGs/wcolorpanel.c:3343 #, c-format msgid "Couldn't remove palette %s\n" msgstr "Палитрата %s не може да бъде отстранена\n" #: ../../WINGs/wcolorpanel.c:3648 #, c-format msgid "Could not open %s" msgstr "Не може да бъде отворен %s" #: ../../WINGs/wcolorpanel.c:3655 #, c-format msgid "Could not create %s" msgstr "Не може да бъде създаден %s" #: ../../WINGs/wcolorpanel.c:3666 #, c-format msgid "Write error on file %s" msgstr "Грешка при запис във файл %s" #: ../../WINGs/wcolorpanel.c:3711 msgid "Color Panel: Color unspecified" msgstr "Color Panel: Не е посочен цвят" #: ../../WINGs/wfilepanel.c:235 msgid "Name:" msgstr "Име:" #: ../../WINGs/wfilepanel.c:332 ../../WINGs/wfilepanel.c:396 msgid "Open" msgstr "Отвори" #: ../../WINGs/wfilepanel.c:350 ../../WINGs/wfilepanel.c:402 msgid "Save" msgstr "Запази" #: ../../WINGs/wfilepanel.c:562 #, c-format msgid "WINGs: could not open directory %s\n" msgstr "WINGs: директорията %s не може да се отвори\n" #: ../../WINGs/wfilepanel.c:580 #, c-format msgid "WINGs: could not stat %s\n" msgstr "WINGs: не могат да се получат атрибутите (stat) за %s\n" #: ../../WINGs/wfilepanel.c:647 ../../WINGs/wfilepanel.c:970 #: ../../WINGs/wfontpanel.c:708 msgid "Error" msgstr "Грешка" #: ../../WINGs/wfilepanel.c:658 msgid "Create Directory" msgstr "Създаване на директория" #: ../../WINGs/wfilepanel.c:659 msgid "Enter directory name" msgstr "Въведете името на директорията" #: ../../WINGs/wfilepanel.c:695 ../../WINGs/wfilepanel.c:734 #: ../../WINGs/wfilepanel.c:765 ../../WINGs/wfilepanel.c:793 msgid "Permission denied." msgstr "Отказан достъп" #: ../../WINGs/wfilepanel.c:698 #, c-format msgid "'%s' already exists." msgstr "вече съществува \"%s\"." #: ../../WINGs/wfilepanel.c:701 msgid "Path does not exist." msgstr "Пътят не съществува." #: ../../WINGs/wfilepanel.c:731 ../../WINGs/wfilepanel.c:790 #, c-format msgid "'%s' does not exist." msgstr "Не съществува \"%s\"." #: ../../WINGs/wfilepanel.c:738 ../../WINGs/wfilepanel.c:797 msgid "Insufficient memory available." msgstr "Не е достъпна достатъчно памет." #: ../../WINGs/wfilepanel.c:742 ../../WINGs/wfilepanel.c:801 #, c-format msgid "'%s' is on a read-only filesystem." msgstr "\"%s\" се намира във файлова система с достъп само за четене." #: ../../WINGs/wfilepanel.c:745 ../../WINGs/wfilepanel.c:777 #: ../../WINGs/wfilepanel.c:804 #, c-format msgid "Can not delete '%s'." msgstr "\"%s\" не може да бъде изтрит." #: ../../WINGs/wfilepanel.c:752 #, c-format msgid "Delete directory %s ?" msgstr "Да се изтрие ли директорията %s?" #: ../../WINGs/wfilepanel.c:756 #, c-format msgid "Delete file %s ?" msgstr "Да се изтрие ли файлът %s?" #: ../../WINGs/wfilepanel.c:768 #, c-format msgid "Directory '%s' does not exist." msgstr "Директорията \"%s\" не съществува." #: ../../WINGs/wfilepanel.c:771 #, c-format msgid "Directory '%s' is not empty." msgstr "Директорията \"%s\" не е празна." #: ../../WINGs/wfilepanel.c:774 #, c-format msgid "Directory '%s' is busy." msgstr "Директорията \"%s е заета." #: ../../WINGs/wfilepanel.c:787 #, c-format msgid "'%s' is a directory." msgstr "\"%s\" е директория." #: ../../WINGs/wfilepanel.c:829 #, c-format msgid "An error occurred browsing '%s'." msgstr "Настъпи грешка при показване на \"%s\"." #: ../../WINGs/wfilepanel.c:833 #, c-format msgid "'%s' is not a directory." msgstr "\"%s\" не е директория." #: ../../WINGs/wfilepanel.c:970 msgid "File does not exist." msgstr "Файлът не съществува." #: ../../WINGs/wfont.c:129 #, c-format msgid "the following character sets are missing in %s:" msgstr "в %s липсват следните кодирания:" #: ../../WINGs/wfont.c:136 #, c-format msgid "" "the string \"%s\" will be used in place of any characters from those sets." msgstr "Вместо кой да е символ от тези кодирания ще се използва низът \"%s\"." #: ../../WINGs/wfont.c:300 ../../WINGs/wfont.c:336 #, c-format msgid "could not load font set %s. Trying fixed." msgstr "не може да се зареди шрифтова комбинация %s. Опит за шрифт fixed." #: ../../WINGs/wfont.c:306 ../../WINGs/wfont.c:342 #, c-format msgid "could not load font %s. Trying fixed." msgstr "не може да се зареди шрифт %s. Опит за шрифт fixed." #: ../../WINGs/wfont.c:310 ../../WINGs/wfont.c:346 msgid "could not load fixed font!" msgstr "не може да се зареди шрифтът fixed!" #: ../../WINGs/wfont.c:441 #, c-format msgid "font description %s is too large." msgstr "шрифтовото описание %s е твърде дълго." #: ../../WINGs/wfontpanel.c:205 msgid "Test!!!" msgstr "Проба!!! Test!!!" #: ../../WINGs/wfontpanel.c:211 msgid "Family" msgstr "Гарнитура" #: ../../WINGs/wfontpanel.c:222 msgid "Typeface" msgstr "Стил" #: ../../WINGs/wfontpanel.c:233 msgid "Size" msgstr "Размер" #: ../../WINGs/wfontpanel.c:252 msgid "Set" msgstr "Установи" #: ../../WINGs/wfontpanel.c:257 msgid "Revert" msgstr "Предишното" #: ../../WINGs/wfontpanel.c:709 msgid "Could not retrieve font list" msgstr "Не може да се получи списъка от шрифтове" #: ../../WINGs/wfontpanel.c:721 #, c-format msgid "font name %s is longer than 256, which is invalid." msgstr "името на шрифта %s е по-дълго от 256 символа, което е недопустимо." #: ../../WINGs/wfontpanel.c:868 msgid "Roman" msgstr "Изправен" #: ../../WINGs/wfontpanel.c:871 msgid "Italic" msgstr "Курсив" #: ../../WINGs/wfontpanel.c:873 msgid "Oblique" msgstr "Наклонен" #: ../../WINGs/wfontpanel.c:875 msgid "Rev Italic" msgstr "Обратен курсив" #: ../../WINGs/wfontpanel.c:877 msgid "Rev Oblique" msgstr "Обратно наклонен" #: ../../WINGs/wfontpanel.c:883 msgid "Normal" msgstr "Нормален" #: ../../WINGs/widgets.c:415 #, c-format msgid "WINGs: could not load widget images file: %s" msgstr "WINGs: не може да се зареди изображението %s на библиотеката." #: ../../WINGs/widgets.c:763 msgid "" "could not load any fonts. Make sure your font installation and locale " "settings are correct." msgstr "не може да се зареди никакъв шрифт. Убедете се, че имате правилно инсталирани шрифтове и посочен езиков локал." #: ../../WINGs/wruler.c:189 msgid "0 inches" msgstr "0 цола" ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/po/nl.po�������������������������������������������������������������������0000644�0001750�0001750�00000056530�13642357773�013336� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# New translation into Dutch for Window Maker # Copyright (C) 2014-2015 Window Maker Developers Team # This file is distributed under the same license as the windowmaker package. # Original by Alwin <translations@ziggo.nl>, 2014. # msgid "" msgstr "" "Project-Id-Version: wmaker-0.95.6+\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-05-18 08:07+0200\n" "PO-Revision-Date: 2015-05-18 00:00+0000\n" "Last-Translator: Alwin <translations@ziggo.nl>\n" "Language-Team: Dutch\n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../../WINGs/error.c:106 msgid "fatal: " msgstr "onherstelbaar: " #: ../../WINGs/error.c:112 msgid "error: " msgstr "fout: " #: ../../WINGs/error.c:118 msgid "warning: " msgstr "waarschuwing: " #: ../../WINGs/findfile.c:63 #, c-format msgid "could not get password entry for UID %i" msgstr "kon accountgegevens voor UID %i niet krijgen" #: ../../WINGs/findfile.c:93 #, c-format msgid "could not get password entry for user %s" msgstr "kon accountgegevens voor gebruiker %s niet krijgen" #: ../../WINGs/findfile.c:212 #, c-format msgid "could not expand %s" msgstr "kon %s niet uitwerken" #: ../../WINGs/findfile.c:441 #, c-format msgid "Could not open input file \"%s\": %s" msgstr "Kon invoerbestand \"%s\" niet openen: %s" #: ../../WINGs/findfile.c:457 #, c-format msgid "Could not create target file \"%s\": %s" msgstr "Kon doelbestand \"%s\" niet aanmaken: %s" #: ../../WINGs/findfile.c:465 msgid "could not allocate memory for the copy buffer" msgstr "kon geheugen voor de kopiebuffer niet toewijzen" #: ../../WINGs/findfile.c:482 #, c-format msgid "could not read from file \"%s\": %s" msgstr "kon bestand \"%s\" niet inlezen: %s" #: ../../WINGs/findfile.c:497 #, c-format msgid "could not write data to file \"%s\": %s" msgstr "kon geen data schrijven naar bestand \"%s\": %s" #: ../../WINGs/findfile.c:509 #, c-format msgid "could not set permission 0%03o on file \"%s\": %s" msgstr "kon toestemming 0%03o niet instellen op bestand \"%s\": %s" #: ../../WINGs/findfile.c:513 #, c-format msgid "could not close the file \"%s\": %s" msgstr "kon bestand \"%s\" niet afsluiten: %s" #: ../../WINGs/menuparser.c:110 #, c-format msgid " included from file \"%s\" at line %d" msgstr " ingevoegd uit bestand \"%s\" op regel %d" #: ../../WINGs/menuparser.c:142 #, c-format msgid "missing #endif to match #%s at line %d" msgstr "ontbrekende #endif behorend bij #%s op regel %d" #: ../../WINGs/menuparser.c:200 msgid "multiple SHORTCUT definition not valid" msgstr "meervoudige SHORTCUT-bepalingen niet geldig" #: ../../WINGs/menuparser.c:253 msgid "premature end of file while expecting a new line after '\\'" msgstr "voortijdig bestandseinde, verwachtte 'n nieuwe regel na '\\'" #: ../../WINGs/menuparser.c:279 #, c-format msgid "reached end of file while searching '*/' for comment started at line %d" msgstr "" "bestandseinde bereikt bij zoeken naar '*/' voor commentaar begonnen op regel " "%d" #: ../../WINGs/menuparser.c:344 msgid "missing closing double-quote before end-of-line" msgstr "ontbrekend sluitend dubbel aanhalingsteken voor regeleinde" #: ../../WINGs/menuparser.c:362 msgid "missing closing simple-quote before end-of-line" msgstr "ontbrekend sluitend enkel aanhalingsteken voor regeleinde" #: ../../WINGs/menuparser.c:380 msgid "too many nested macro expansions, breaking loop" msgstr "te veel geneste macro-uitwerkingen, cyclus afgebroken" #: ../../WINGs/menuparser.c:439 #, c-format msgid "unknown directive '#%s'" msgstr "onbekende aanwijzing '#%s'" #: ../../WINGs/menuparser.c:444 #, c-format msgid "extra text after '#' command is ignored: \"%.16s...\"" msgstr "extra tekst na #-commando wordt genegeerd: \"%.16s...\"" #: ../../WINGs/menuparser.c:459 msgid "no file name found for #include" msgstr "geen bestandsnaam gevonden voor #include" #: ../../WINGs/menuparser.c:471 msgid "file name must be enclosed in brackets or double-quotes for #define" msgstr "" "bestandsnaam moet omsloten worden met haakjes of dubbele aanhalingstekens " "voor #define" #: ../../WINGs/menuparser.c:485 #, c-format msgid "missing closing '%c' in filename specification" msgstr "ontbrekende sluitende '%c' in bestandsnaamopgave" #: ../../WINGs/menuparser.c:503 msgid "too many nested #include's" msgstr "te veel geneste #include's" #: ../../WINGs/menuparser.c:568 #, c-format msgid "could not find file \"%s\" for #include" msgstr "kon bestand \"%s\" niet vinden voor #include" #: ../../WINGs/menuparser.c:589 #, c-format msgid "missing macro name argument to #%s" msgstr "ontbrekend macronaamargument bij #%s" #: ../../WINGs/menuparser.c:600 msgid "too many nested #if sequences" msgstr "te veel geneste #if-reeksen" #: ../../WINGs/menuparser.c:626 ../../WINGs/menuparser.c:643 #, c-format msgid "found #%s but has no matching #if" msgstr "#%s gevonden, maar heeft geen bijbehorende #if" #: ../../WINGs/menuparser_macros.c:166 msgid "no macro name found for #define" msgstr "geen macronaam gevonden voor #define" #: ../../WINGs/menuparser_macros.c:187 #, c-format msgid "premature end of file while reading arg-list for macro \"%s\"" msgstr "voortijdig bestandseinde bij inlezen arg.-lijst voor macro \"%s\"" #: ../../WINGs/menuparser_macros.c:194 #, c-format msgid "too many parameters for macro \"%s\" definition" msgstr "te veel parameters voor bepaling macro \"%s\"" #: ../../WINGs/menuparser_macros.c:209 #, c-format msgid "" "invalid character '%c' in arg-list for macro \"%s\" while expecting " "parameter name" msgstr "" "ongeldig letterteken '%c' in arg.-lijst voor macro \"%s\", verwachtte " "parameternaam" #: ../../WINGs/menuparser_macros.c:220 #, c-format msgid "" "invalid character '%c' in arg-list for macro \"%s\" while expecting ',' or " "')'" msgstr "" "ongeldig letterteken '%c' in arg.-lijst voor macro \"%s\", verwachtte ',' of " "')'" #: ../../WINGs/menuparser_macros.c:253 #, c-format msgid "macro \"%s\" already defined, ignoring redefinition" msgstr "macro \"%s\" al gedefinieerd, negeert herdefiniëren" #: ../../WINGs/menuparser_macros.c:346 #, c-format msgid "more content than supported for the macro \"%s\"" msgstr "meer inhoud dan ondersteund voor macro \"%s\"" #: ../../WINGs/menuparser_macros.c:455 #, c-format msgid "expansion for macro \"%s\" too big, line truncated" msgstr "uitwerking voor macro \"%s\" te groot, regel ingekort" #: ../../WINGs/menuparser_macros.c:467 #, c-format msgid "macro \"%s\" needs parenthesis for arguments" msgstr "macro \"%s\" heeft haakjes nodig voor argumenten" #: ../../WINGs/menuparser_macros.c:498 msgid "missing closing quote or double-quote before end-of-line" msgstr "ontbrekend sluitend of dubbel aanhalingsteken voor regeleinde" #: ../../WINGs/menuparser_macros.c:521 #, c-format msgid "too many arguments for macro \"%s\", expected only %d" msgstr "te veel argumenten voor macro \"%s\", verwachtte alleen %d" #: ../../WINGs/menuparser_macros.c:530 #, c-format msgid "premature end of line while searching for arguments to macro \"%s\"" msgstr "voortijdig regeleinde bij zoeken naar argumenten bij macro \"%s\"" #: ../../WINGs/menuparser_macros.c:536 #, c-format msgid "not enough arguments for macro \"%s\", expected %d but got only %d" msgstr "" "onvoldoende argumenten voor macro \"%s\", verwachtte %d, maar kreeg alleen %d" #: ../../WINGs/menuparser_macros.c:541 #, c-format msgid "too much data in parameter list of macro \"%s\", truncated" msgstr "te veel data in parameterlijst van macro \"%s\", ingekort" #: ../../WINGs/menuparser_macros.c:561 #, c-format msgid "size of value for macro '%s' is too big, truncated" msgstr "waarde voor macro '%s' is te lang, ingekort" #: ../../WINGs/menuparser_macros.c:642 ../../WINGs/menuparser_macros.c:668 #, c-format msgid "could not determine %s" msgstr "kon %s niet vaststellen" #: ../../WINGs/proplist.c:78 #, c-format msgid "syntax error in %s %s, line %i: %s" msgstr "syntaxfout in %s %s, regel %i: %s" #: ../../WINGs/proplist.c:134 msgid "Only string or data is supported for a proplist dictionary key" msgstr "" #: ../../WINGs/proplist.c:167 ../../WINGs/proplist.c:217 #: ../../WINGs/proplist.c:382 ../../WINGs/proplist.c:458 #: ../../WINGs/proplist.c:1048 ../../WINGs/proplist.c:1098 #: ../../WINGs/proplist.c:1246 ../../WINGs/proplist.c:1314 #: ../../WINGs/proplist.c:1419 ../../WINGs/proplist.c:1463 msgid "Used proplist functions on non-WMPropLists objects" msgstr "" #: ../../WINGs/proplist.c:635 msgid "unterminated PropList string" msgstr "" #: ../../WINGs/proplist.c:673 msgid "unterminated PropList data" msgstr "" #: ../../WINGs/proplist.c:681 msgid "unterminated PropList data (missing hexdigit)" msgstr "" #: ../../WINGs/proplist.c:693 ../../WINGs/proplist.c:698 msgid "non hexdigit character in PropList data" msgstr "" #: ../../WINGs/proplist.c:730 msgid "unterminated PropList array" msgstr "" #: ../../WINGs/proplist.c:738 msgid "missing or unterminated PropList array" msgstr "" #: ../../WINGs/proplist.c:748 msgid "could not get PropList array element" msgstr "" #: ../../WINGs/proplist.c:775 msgid "unterminated PropList dictionary" msgstr "" #: ../../WINGs/proplist.c:792 msgid "missing PropList dictionary key" msgstr "" # Geen chocola van te maken. ;-) #: ../../WINGs/proplist.c:794 msgid "missing PropList dictionary entry key or unterminated dictionary" msgstr "" #: ../../WINGs/proplist.c:802 msgid "error parsing PropList dictionary key" msgstr "" #: ../../WINGs/proplist.c:810 msgid "missing = in PropList dictionary entry" msgstr "" #: ../../WINGs/proplist.c:818 msgid "error parsing PropList dictionary entry value" msgstr "" #: ../../WINGs/proplist.c:826 msgid "missing ; in PropList dictionary entry" msgstr "" #: ../../WINGs/proplist.c:885 msgid "" "was expecting a string, data, array or dictionary. If it's a string, try " "enclosing it with \"." msgstr "" #: ../../WINGs/proplist.c:888 msgid "Comments are not allowed inside WindowMaker owned domain files." msgstr "Commentaar is niet toegestaan binnen domeinbestanden van WindowMaker." #: ../../WINGs/proplist.c:1483 ../../WINGs/proplist.c:1548 #: ../../WINGs/proplist.c:1612 msgid "extra data after end of property list" msgstr "extra data na einde van 'property list'" #: ../../WINGs/proplist.c:1523 #, c-format msgid "could not get size for file '%s'" msgstr "kon grootte voor bestand '%s' niet krijgen" #: ../../WINGs/proplist.c:1531 #, c-format msgid "error reading from file '%s'" msgstr "fout bij inlezen bestand '%s'" #: ../../WINGs/proplist.c:1578 #, c-format msgid "%s:could not open menu file" msgstr "%s:kon menubestand niet openen" #: ../../WINGs/proplist.c:1660 #, c-format msgid "mkstemp (%s) failed" msgstr "aanmaken uniek tijdelijk bestand (%s) mislukt" #: ../../WINGs/proplist.c:1670 #, c-format msgid "mktemp (%s) failed" msgstr "aanmaken tijdelijk bestand (%s) mislukt" #: ../../WINGs/proplist.c:1677 #, c-format msgid "open (%s) failed" msgstr "openen (%s) mislukt" #: ../../WINGs/proplist.c:1684 #, c-format msgid "writing to file: %s failed" msgstr "schrijven naar bestand: %s mislukt" #: ../../WINGs/proplist.c:1693 #, c-format msgid "fclose (%s) failed" msgstr "afsluiten stream (%s) mislukt" #: ../../WINGs/proplist.c:1701 #, c-format msgid "rename ('%s' to '%s') failed" msgstr "hernoemen ('%s' naar '%s') mislukt" #: ../../WINGs/proplist.c:1772 #, c-format msgid "Could not create component %s" msgstr "Kon component %s niet aanmaken" #: ../../WINGs/userdefaults.c:72 msgid "variable WMAKER_USER_ROOT defined with invalid path, not used" msgstr "" "variabele WMAKER_USER_ROOT, gedefinieerd met ongeldig pad, niet gebruikt" #. something happened with the file. just overwrite it #: ../../WINGs/userdefaults.c:210 ../../WINGs/userdefaults.c:225 #, c-format msgid "cannot read domain from file '%s' when syncing" msgstr "kan domeinbestand '%s' niet inlezen bij synchroniseren" #: ../../WINGs/dragcommon.c:60 #, c-format msgid "unknown XDND action %s" msgstr "onbekende XDND-actie %s" #: ../../WINGs/dragcommon.c:142 #, c-format msgid "target %lu for XDND message no longer exists" msgstr "doel %lu voor XDND-bericht bestaat niet meer" #: ../../WINGs/dragcommon.c:220 #, c-format msgid "unsupported version %i for XDND enter message" msgstr "niet-ondersteunde versie %i voor XDND-bericht bij binnengaan" #: ../../WINGs/dragsource.c:163 msgid "XDND selection lost during drag operation..." msgstr "XDND-selectie verloren tijdens versleephandeling..." #: ../../WINGs/dragsource.c:758 msgid "could not get XDND version for target of drop" msgstr "kon XDND-versie niet krijgen voor doel van verslepen" #: ../../WINGs/dragsource.c:774 msgid "could not get ownership of XDND selection" msgstr "kon eigendom van XDND-selectie niet krijgen" #: ../../WINGs/dragsource.c:1070 msgid "delay for drag destination response expired" msgstr "wachttijd voor antwoord versleepbestemming verstreken" #: ../../WINGs/wcolor.c:204 ../../WINGs/wcolor.c:214 ../../WINGs/wcolor.c:250 #: ../../WINGs/wcolor.c:288 #, c-format msgid "could not allocate %s color" msgstr "kon kleur %s niet toewijzen" #: ../../WINGs/wcolor.c:204 msgid "white" msgstr "wit" #: ../../WINGs/wcolor.c:214 msgid "black" msgstr "zwart" #: ../../WINGs/wcolor.c:250 msgid "gray" msgstr "grijs" #: ../../WINGs/wcolor.c:288 msgid "dark gray" msgstr "donkergrijs" #: ../../WINGs/wcolorpanel.c:393 msgid "Colors" msgstr "Kleuren" #: ../../WINGs/wcolorpanel.c:568 ../../WINGs/wcolorpanel.c:2720 msgid "Brightness" msgstr "Helderheid" #: ../../WINGs/wcolorpanel.c:570 ../../WINGs/wcolorpanel.c:644 #: ../../WINGs/wcolorpanel.c:675 ../../WINGs/wcolorpanel.c:706 #: ../../WINGs/wcolorpanel.c:781 ../../WINGs/wcolorpanel.c:812 #: ../../WINGs/wcolorpanel.c:844 ../../WINGs/wcolorpanel.c:877 #: ../../WINGs/wcolorpanel.c:2016 ../../WINGs/wcolorpanel.c:2722 #: ../../WINGs/wcolorpanel.c:2756 ../../WINGs/wcolorpanel.c:2790 msgid "Color Panel: Could not allocate memory" msgstr "Kleurenpaneel: Kon geen geheugen toewijzen" #: ../../WINGs/wcolorpanel.c:642 msgid "Red" msgstr "Rood" #: ../../WINGs/wcolorpanel.c:673 msgid "Green" msgstr "Groen" #: ../../WINGs/wcolorpanel.c:704 msgid "Blue" msgstr "Blauw" #: ../../WINGs/wcolorpanel.c:718 msgid "Decimal" msgstr "Decimaal" #: ../../WINGs/wcolorpanel.c:726 msgid "Hexadecimal" msgstr "Hexadecimaal" #: ../../WINGs/wcolorpanel.c:779 msgid "Cyan" msgstr "Cyaan" #: ../../WINGs/wcolorpanel.c:810 msgid "Magenta" msgstr "Magenta" #: ../../WINGs/wcolorpanel.c:842 msgid "Yellow" msgstr "Geel" #: ../../WINGs/wcolorpanel.c:875 msgid "Black" msgstr "Zwart" #: ../../WINGs/wcolorpanel.c:950 msgid "Spectrum" msgstr "Spectrum" #: ../../WINGs/wcolorpanel.c:976 msgid "Palette" msgstr "Palet" #: ../../WINGs/wcolorpanel.c:981 msgid "New from File..." msgstr "Nieuw uit bestand..." #: ../../WINGs/wcolorpanel.c:982 ../../WINGs/wcolorpanel.c:1027 #: ../../WINGs/wcolorpanel.c:1042 msgid "Rename..." msgstr "Hernoemen..." #: ../../WINGs/wcolorpanel.c:983 ../../WINGs/wcolorpanel.c:1028 #: ../../WINGs/wcolorpanel.c:1043 ../../WINGs/wcolorpanel.c:3180 msgid "Remove" msgstr "Verwijderen" #: ../../WINGs/wcolorpanel.c:984 msgid "Copy" msgstr "Kopiëren" #: ../../WINGs/wcolorpanel.c:985 msgid "New from Clipboard" msgstr "Nieuw van klembord" #: ../../WINGs/wcolorpanel.c:1004 msgid "X11-Colors" msgstr "X11-kleuren" #: ../../WINGs/wcolorpanel.c:1021 msgid "Color" msgstr "Kleur" #: ../../WINGs/wcolorpanel.c:1026 msgid "Add..." msgstr "Toevoegen..." #: ../../WINGs/wcolorpanel.c:1036 msgid "List" msgstr "Lijst" #: ../../WINGs/wcolorpanel.c:1041 msgid "New..." msgstr "Nieuw..." #: ../../WINGs/wcolorpanel.c:1170 #, c-format msgid "" "Color Panel: Could not create directory %s needed to store configurations" msgstr "" "Kleurenpaneel: Kon map %s, nodig om instellingen op te slaan, niet aanmaken" #. Delete the file, it doesn't belong here #: ../../WINGs/wcolorpanel.c:1176 ../../WINGs/wcolorpanel.c:3073 #: ../../WINGs/wcolorpanel.c:3077 msgid "File Error" msgstr "Bestandsfout" #: ../../WINGs/wcolorpanel.c:1177 msgid "Could not create ColorPanel configuration directory" msgstr "Kon instellingenmap Kleurenpaneel niet aanmaken" #: ../../WINGs/wcolorpanel.c:1178 ../../WINGs/wcolorpanel.c:3074 #: ../../WINGs/wcolorpanel.c:3079 ../../WINGs/wcolorpanel.c:3104 #: ../../WINGs/wfilepanel.c:227 ../../WINGs/wfilepanel.c:596 #: ../../WINGs/wfilepanel.c:611 ../../WINGs/wfilepanel.c:715 #: ../../WINGs/wfilepanel.c:883 ../../WINGs/wfontpanel.c:532 msgid "OK" msgstr "OK" #: ../../WINGs/wcolorpanel.c:1184 msgid "Color Panel: Could not find file" msgstr "Kleurenpaneel: Kon bestand niet vinden" #: ../../WINGs/wcolorpanel.c:1380 ../../WINGs/wcolorpanel.c:1441 #: ../../WINGs/wcolorpanel.c:1501 msgid "Color Panel: X failed request" msgstr "Kleurenpaneel: X-aanvraag mislukt" #: ../../WINGs/wcolorpanel.c:2754 msgid "Saturation" msgstr "Verzadiging" #: ../../WINGs/wcolorpanel.c:2788 msgid "Hue" msgstr "Tint" #: ../../WINGs/wcolorpanel.c:3012 msgid "Open Palette" msgstr "Open palet" #: ../../WINGs/wcolorpanel.c:3074 msgid "Invalid file format !" msgstr "Ongeldige bestandsvorm!" #: ../../WINGs/wcolorpanel.c:3076 #, c-format msgid "can't remove file %s" msgstr "kan bestand %s niet verwijderen" #: ../../WINGs/wcolorpanel.c:3078 msgid "Couldn't remove file from Configuration Directory !" msgstr "Kon bestand niet verwijderen uit instellingenmap!" #: ../../WINGs/wcolorpanel.c:3103 msgid "Rename" msgstr "Hernoemen" #: ../../WINGs/wcolorpanel.c:3103 msgid "Rename palette to:" msgstr "Hernoem palet naar:" #: ../../WINGs/wcolorpanel.c:3104 ../../WINGs/wfilepanel.c:236 #: ../../WINGs/wfilepanel.c:611 ../../WINGs/wfilepanel.c:715 msgid "Cancel" msgstr "Annuleren" #. Careful, this palette exists already #: ../../WINGs/wcolorpanel.c:3120 ../../WINGs/wfilepanel.c:715 msgid "Warning" msgstr "Waarschuwing" #: ../../WINGs/wcolorpanel.c:3121 msgid "" "Palette already exists !\n" "\n" "Overwrite ?" msgstr "" "Palet bestaat al!\n" "\n" "Overschrijven?" #: ../../WINGs/wcolorpanel.c:3121 ../../WINGs/wcolorpanel.c:3180 msgid "No" msgstr "Nee" #: ../../WINGs/wcolorpanel.c:3121 ../../WINGs/wcolorpanel.c:3180 msgid "Yes" msgstr "Ja" #: ../../WINGs/wcolorpanel.c:3152 #, c-format msgid "Couldn't rename palette %s to %s" msgstr "Kon palet %s niet hernoemen naar %s" #: ../../WINGs/wcolorpanel.c:3175 msgid "This will permanently remove the palette " msgstr "Dit zal 't palet " #: ../../WINGs/wcolorpanel.c:3177 msgid "" ".\n" "\n" "Are you sure you want to remove this palette ?" msgstr "" " definitief verwijderen.\n" "\n" "Weet u zeker dat u dit palet wilt verwijderen?" #: ../../WINGs/wcolorpanel.c:3199 #, c-format msgid "Couldn't remove palette %s" msgstr "Kon palet %s niet verwijderen" #: ../../WINGs/wcolorpanel.c:3499 msgid "Color Panel: Color unspecified" msgstr "Kleurenpaneel: Kleur niet opgegeven" #: ../../WINGs/wfilepanel.c:216 msgid "Name:" msgstr "Naam:" #: ../../WINGs/wfilepanel.c:306 ../../WINGs/wfilepanel.c:364 msgid "Open" msgstr "Openen" #: ../../WINGs/wfilepanel.c:322 ../../WINGs/wfilepanel.c:370 msgid "Save" msgstr "Opslaan" #: ../../WINGs/wfilepanel.c:506 #, c-format msgid "WINGs: could not open directory %s\n" msgstr "WINGs: Kon map %s niet openen\n" #: ../../WINGs/wfilepanel.c:526 #, c-format msgid "WINGs: could not stat %s\n" msgstr "WINGs: Kon status %s niet vaststellen\n" #: ../../WINGs/wfilepanel.c:596 ../../WINGs/wfilepanel.c:883 #: ../../WINGs/wfontpanel.c:531 msgid "Error" msgstr "Fout" #: ../../WINGs/wfilepanel.c:610 msgid "Create Directory" msgstr "Map aanmaken" #: ../../WINGs/wfilepanel.c:611 msgid "Enter directory name" msgstr "Voer mapnaam in" #: ../../WINGs/wfilepanel.c:639 #, c-format msgid "Can not create %s: %s" msgstr "Kan %s niet aanmaken: %s" #: ../../WINGs/wfilepanel.c:705 #, c-format msgid "Can not find %s: %s" msgstr "Kan %s niet vinden: %s" #: ../../WINGs/wfilepanel.c:711 #, c-format msgid "Delete %s %s?" msgstr "%s %s verwijderen?" #: ../../WINGs/wfilepanel.c:712 msgid "directory" msgstr "Map" #: ../../WINGs/wfilepanel.c:712 msgid "file" msgstr "Bestand" #: ../../WINGs/wfilepanel.c:719 #, c-format msgid "Removing %s failed: %s" msgstr "Verwijderen %s mislukt: %s" #: ../../WINGs/wfilepanel.c:751 #, c-format msgid "An error occurred browsing '%s'." msgstr "Er trad 'n fout op bij bladeren door '%s'." #: ../../WINGs/wfilepanel.c:754 #, c-format msgid "'%s' is not a directory." msgstr "'%s' is geen map." #: ../../WINGs/wfilepanel.c:883 msgid "File does not exist." msgstr "Bestand bestaat niet." #: ../../WINGs/wfont.c:43 #, c-format msgid "invalid font: %s. Trying '%s'" msgstr "ongeldig lettertype: %s. Probeert '%s'" #: ../../WINGs/wfont.c:260 ../../WINGs/wfont.c:278 #, c-format msgid "could not load font: %s." msgstr "kon lettertype niet laden: %s." #. WMSetWidgetBackgroundColor(panel->win, WMWhiteColor(scr)); #: ../../WINGs/wfontpanel.c:184 msgid "Font Panel" msgstr "Lettertypen" #: ../../WINGs/wfontpanel.c:220 msgid "The quick brown fox jumps over the lazy dog" msgstr "De snelle bruine vos springt over de luie hond" #: ../../WINGs/wfontpanel.c:226 msgid "Family" msgstr "Familie" #: ../../WINGs/wfontpanel.c:237 msgid "Typeface" msgstr "Lettertype" #: ../../WINGs/wfontpanel.c:248 msgid "Size" msgstr "Grootte" #: ../../WINGs/wfontpanel.c:267 msgid "Set" msgstr "Instellen" #: ../../WINGs/wfontpanel.c:273 msgid "Revert" msgstr "Herstellen" #: ../../WINGs/wfontpanel.c:532 msgid "Could not init font config library\n" msgstr "Kon bibliotheek 'lettertype instellen' niet initialiseren\n" #: ../../WINGs/widgets.c:446 #, c-format msgid "WINGs: could not load widget images file: %s" msgstr "WINGs: Kon afbeeldingenbestand besturingselementen niet laden: %s" #: ../../WINGs/widgets.c:542 #, c-format msgid "WINGs: could not open display %s" msgstr "WINGs: Kon scherm %s niet openen" #: ../../WINGs/widgets.c:771 msgid "" "could not load any fonts. Make sure your font installation and locale " "settings are correct." msgstr "" "kon geen lettertypen laden. Zorg ervoor dat uw geïnstalleerde lettertypen en " "lokalisatie-instellingen juist zijn." #: ../../WINGs/winputmethod.c:65 msgid "could not add destroy callback for XIM input method" msgstr "" #: ../../WINGs/wruler.c:175 msgid "0 inches" msgstr "0 inch" #: ../../WINGs/wtextfield.c:494 msgid "only left alignment is supported in textfields" msgstr "alleen links uitlijnen wordt ondersteund in tekstvelden" #: ../../WINGs/wwindow.c:160 msgid "window title conversion error... using STRING encoding" msgstr "venstertitelomzettingsfout... gebruikt STRING-codering" #: ../../WINGs/wwindow.c:181 msgid "icon title conversion error... using STRING encoding" msgstr "icoontitelomzettingsfout... gebruikt STRING-codering" # Keep next entries for wmaker-0.95.6 msgid "Could not open input file \"%s\"" msgstr "Kon invoerbestand \"%s\" niet openen" msgid "Could not create target file \"%s\"" msgstr "Kon doelbestand \"%s\" niet aanmaken" msgid "An error occured browsing '%s'." msgstr "Er trad 'n fout op bij bladeren door '%s'." msgid "" "invalid characted '%c' in arg-list for macro \"%s\" while expecting " "parameter name" msgstr "" "ongeldig letterteken '%c' in arg.-lijst voor macro \"%s\", verwachtte " "parameternaam" msgid "" "invalid characted '%c' in arg-list for macro \"%s\" while expecting ',' " "or ')'" msgstr "" "ongeldig letterteken '%c' in arg.-lijst voor macro \"%s\", verwachtte ',' " "of ')'" msgid "unknow directive '#%s'" msgstr "onbekende aanwijzing '#%s'" msgid "found #%s but have no matching #if" msgstr "#%s gevonden, maar heeft geen bijbehorende #if" msgid "too many nested includes" msgstr "te veel geneste #include's" msgid "could not find file \"%s\" for include" msgstr "kon bestand \"%s\" niet vinden voor #include" msgid "too many nested macro expansion, breaking loop" msgstr "te veel geneste macro-uitwerkingen, cyclus afgebroken" ������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Makefile.in����������������������������������������������������������������0000644�0001750�0001750�00000121431�13642360053�013766� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = WINGs ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ $(top_srcdir)/m4/ax_pthread.m4 \ $(top_srcdir)/m4/ld-version-script.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/windowmaker.m4 \ $(top_srcdir)/m4/wm_attributes.m4 \ $(top_srcdir)/m4/wm_cflags_check.m4 \ $(top_srcdir)/m4/wm_i18n.m4 \ $(top_srcdir)/m4/wm_imgfmt_check.m4 \ $(top_srcdir)/m4/wm_libexif.m4 $(top_srcdir)/m4/wm_libmath.m4 \ $(top_srcdir)/m4/wm_prog_cc_c11.m4 \ $(top_srcdir)/m4/wm_xext_check.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)" LTLIBRARIES = $(lib_LTLIBRARIES) libWINGs_la_DEPENDENCIES = libWUtil.la \ $(top_builddir)/wrlib/libwraster.la am_libWINGs_la_OBJECTS = configuration.lo dragcommon.lo \ dragdestination.lo dragsource.lo selection.lo wappresource.lo \ wballoon.lo wbox.lo wbrowser.lo wbutton.lo wcolor.lo \ wcolorpanel.lo wcolorwell.lo wevent.lo wfilepanel.lo wframe.lo \ wfont.lo wfontpanel.lo widgets.lo winputmethod.lo wlabel.lo \ wlist.lo wmenuitem.lo wmisc.lo wpanel.lo wpixmap.lo \ wpopupbutton.lo wprogressindicator.lo wruler.lo wscroller.lo \ wscrollview.lo wslider.lo wsplitview.lo wtabview.lo wtext.lo \ wtextfield.lo wview.lo wwindow.lo libWINGs_la_OBJECTS = $(am_libWINGs_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = libWINGs_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(libWINGs_la_LDFLAGS) $(LDFLAGS) -o $@ libWUtil_la_DEPENDENCIES = am_libWUtil_la_OBJECTS = array.lo bagtree.lo data.lo error.lo \ findfile.lo handlers.lo hashtable.lo memory.lo menuparser.lo \ menuparser_macros.lo misc.lo notification.lo proplist.lo \ string.lo tree.lo userdefaults.lo usleep.lo wapplication.lo \ wutil.lo libWUtil_la_OBJECTS = $(am_libWUtil_la_OBJECTS) libWUtil_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(libWUtil_la_LDFLAGS) $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/array.Plo ./$(DEPDIR)/bagtree.Plo \ ./$(DEPDIR)/configuration.Plo ./$(DEPDIR)/data.Plo \ ./$(DEPDIR)/dragcommon.Plo ./$(DEPDIR)/dragdestination.Plo \ ./$(DEPDIR)/dragsource.Plo ./$(DEPDIR)/error.Plo \ ./$(DEPDIR)/findfile.Plo ./$(DEPDIR)/handlers.Plo \ ./$(DEPDIR)/hashtable.Plo ./$(DEPDIR)/memory.Plo \ ./$(DEPDIR)/menuparser.Plo ./$(DEPDIR)/menuparser_macros.Plo \ ./$(DEPDIR)/misc.Plo ./$(DEPDIR)/notification.Plo \ ./$(DEPDIR)/proplist.Plo ./$(DEPDIR)/selection.Plo \ ./$(DEPDIR)/string.Plo ./$(DEPDIR)/tree.Plo \ ./$(DEPDIR)/userdefaults.Plo ./$(DEPDIR)/usleep.Plo \ ./$(DEPDIR)/wapplication.Plo ./$(DEPDIR)/wappresource.Plo \ ./$(DEPDIR)/wballoon.Plo ./$(DEPDIR)/wbox.Plo \ ./$(DEPDIR)/wbrowser.Plo ./$(DEPDIR)/wbutton.Plo \ ./$(DEPDIR)/wcolor.Plo ./$(DEPDIR)/wcolorpanel.Plo \ ./$(DEPDIR)/wcolorwell.Plo ./$(DEPDIR)/wevent.Plo \ ./$(DEPDIR)/wfilepanel.Plo ./$(DEPDIR)/wfont.Plo \ ./$(DEPDIR)/wfontpanel.Plo ./$(DEPDIR)/wframe.Plo \ ./$(DEPDIR)/widgets.Plo ./$(DEPDIR)/winputmethod.Plo \ ./$(DEPDIR)/wlabel.Plo ./$(DEPDIR)/wlist.Plo \ ./$(DEPDIR)/wmenuitem.Plo ./$(DEPDIR)/wmisc.Plo \ ./$(DEPDIR)/wpanel.Plo ./$(DEPDIR)/wpixmap.Plo \ ./$(DEPDIR)/wpopupbutton.Plo \ ./$(DEPDIR)/wprogressindicator.Plo ./$(DEPDIR)/wruler.Plo \ ./$(DEPDIR)/wscroller.Plo ./$(DEPDIR)/wscrollview.Plo \ ./$(DEPDIR)/wslider.Plo ./$(DEPDIR)/wsplitview.Plo \ ./$(DEPDIR)/wtabview.Plo ./$(DEPDIR)/wtext.Plo \ ./$(DEPDIR)/wtextfield.Plo ./$(DEPDIR)/wutil.Plo \ ./$(DEPDIR)/wview.Plo ./$(DEPDIR)/wwindow.Plo am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libWINGs_la_SOURCES) $(libWUtil_la_SOURCES) DIST_SOURCES = $(libWINGs_la_SOURCES) $(libWUtil_la_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DATA = $(pkgconfig_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir distdir-am am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \ ChangeLog NEWS README TODO DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ GFXLIBS = @GFXLIBS@ GREP = @GREP@ HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLIBS = @INTLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBBSD = @LIBBSD@ LIBEXIF = @LIBEXIF@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXINERAMA = @LIBXINERAMA@ LIBXMU = @LIBXMU@ LIBXRANDR = @LIBXRANDR@ LINGUAS = @LINGUAS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAGICKFLAGS = @MAGICKFLAGS@ MAGICKLIBS = @MAGICKLIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MANLANGDIRS = @MANLANGDIRS@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOLIBS = @PANGOLIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILMOFILES = @UTILMOFILES@ VERSION = @VERSION@ WINGSMOFILES = @WINGSMOFILES@ WINGS_VERSION = @WINGS_VERSION@ WMAKERMOFILES = @WMAKERMOFILES@ WPREFSMOFILES = @WPREFSMOFILES@ WRASTER_VERSION = @WRASTER_VERSION@ WUTIL_VERSION = @WUTIL_VERSION@ XCFLAGS = @XCFLAGS@ XFTCONFIG = @XFTCONFIG@ XFTFLAGS = @XFTFLAGS@ XFTLIBS = @XFTLIBS@ XGETTEXT = @XGETTEXT@ XLFLAGS = @XLFLAGS@ XLIBS = @XLIBS@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBRARY_PATH = @X_LIBRARY_PATH@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ defsdatadir = @defsdatadir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ inc_search_path = @inc_search_path@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lcov_output_directory = @lcov_output_directory@ lib_search_path = @lib_search_path@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pixmapdir = @pixmapdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ wprefs_bindir = @wprefs_bindir@ wprefs_datadir = @wprefs_datadir@ AUTOMAKE_OPTIONS = SUBDIRS = WINGs . po Documentation Resources DIST_SUBDIRS = $(SUBDIRS) Tests Examples Extras libWINGs_la_LDFLAGS = -version-info @WINGS_VERSION@ libWUtil_la_LDFLAGS = -version-info @WUTIL_VERSION@ lib_LTLIBRARIES = libWUtil.la libWINGs.la LDADD = libWUtil.la libWINGs.la $(top_builddir)/wrlib/libwraster.la @INTLIBS@ libWINGs_la_LIBADD = libWUtil.la $(top_builddir)/wrlib/libwraster.la @XLIBS@ @XFTLIBS@ @FCLIBS@ @LIBM@ @PANGOLIBS@ libWUtil_la_LIBADD = @LIBBSD@ EXTRA_DIST = BUGS make-rgb Examples Extras Tests # wbutton.c libWINGs_la_SOURCES = \ configuration.c \ dragcommon.c \ dragdestination.c \ dragsource.c \ rgb.h \ selection.c \ wappresource.c \ wballoon.c \ wbox.c \ wbrowser.c \ wbutton.c \ wcolor.c \ wcolorpanel.c \ wcolorwell.c \ wconfig.h \ wevent.c \ wfilepanel.c \ wframe.c \ wfont.c \ wfontpanel.c \ widgets.c \ winputmethod.c \ wlabel.c \ wlist.c \ wmenuitem.c \ wmisc.c \ wpanel.c \ wpixmap.c \ wpopupbutton.c \ wprogressindicator.c \ wruler.c \ wscroller.c \ wscrollview.c \ wslider.c \ wsplitview.c \ wtabview.c \ wtext.c \ wtextfield.c \ wview.c \ wwindow.c libWUtil_la_SOURCES = \ array.c \ bagtree.c \ data.c \ error.c \ error.h \ findfile.c \ handlers.c \ hashtable.c \ memory.c \ menuparser.c \ menuparser.h \ menuparser_macros.c \ misc.c \ notification.c \ proplist.c \ string.c \ tree.c \ userdefaults.c \ userdefaults.h \ usleep.c \ wapplication.c \ wconfig.h \ wutil.c AM_CFLAGS = AM_CPPFLAGS = -DRESOURCE_PATH=\"$(datadir)/WINGs\" \ -I$(top_srcdir)/WINGs/WINGs -I$(top_srcdir)/wrlib -I$(top_srcdir)/src \ @XFTFLAGS@ @HEADER_SEARCH_PATH@ pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = WINGs.pc WUtil.pc DISTCLEANFILES = $(pkgconfig_DATA) all: all-recursive .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu WINGs/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu WINGs/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libWINGs.la: $(libWINGs_la_OBJECTS) $(libWINGs_la_DEPENDENCIES) $(EXTRA_libWINGs_la_DEPENDENCIES) $(AM_V_CCLD)$(libWINGs_la_LINK) -rpath $(libdir) $(libWINGs_la_OBJECTS) $(libWINGs_la_LIBADD) $(LIBS) libWUtil.la: $(libWUtil_la_OBJECTS) $(libWUtil_la_DEPENDENCIES) $(EXTRA_libWUtil_la_DEPENDENCIES) $(AM_V_CCLD)$(libWUtil_la_LINK) -rpath $(libdir) $(libWUtil_la_OBJECTS) $(libWUtil_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/array.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bagtree.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/configuration.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/data.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dragcommon.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dragdestination.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dragsource.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/error.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/findfile.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/handlers.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hashtable.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memory.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/menuparser.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/menuparser_macros.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/misc.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/notification.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/proplist.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/selection.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/string.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tree.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/userdefaults.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/usleep.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wapplication.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wappresource.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wballoon.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wbox.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wbrowser.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wbutton.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wcolor.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wcolorpanel.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wcolorwell.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wevent.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wfilepanel.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wfont.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wfontpanel.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wframe.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/widgets.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/winputmethod.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wlabel.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wlist.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wmenuitem.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wmisc.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wpanel.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wpixmap.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wpopupbutton.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wprogressindicator.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wruler.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wscroller.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wscrollview.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wslider.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wsplitview.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wtabview.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wtext.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wtextfield.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wutil.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wview.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wwindow.Plo@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @echo '# dummy' >$@-t && $(am__mv) $@-t $@ am--depfiles: $(am__depfiles_remade) .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-pkgconfigDATA: $(pkgconfig_DATA) @$(NORMAL_INSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ done uninstall-pkgconfigDATA: @$(NORMAL_UNINSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(LTLIBRARIES) $(DATA) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ mostlyclean-am distclean: distclean-recursive -rm -f ./$(DEPDIR)/array.Plo -rm -f ./$(DEPDIR)/bagtree.Plo -rm -f ./$(DEPDIR)/configuration.Plo -rm -f ./$(DEPDIR)/data.Plo -rm -f ./$(DEPDIR)/dragcommon.Plo -rm -f ./$(DEPDIR)/dragdestination.Plo -rm -f ./$(DEPDIR)/dragsource.Plo -rm -f ./$(DEPDIR)/error.Plo -rm -f ./$(DEPDIR)/findfile.Plo -rm -f ./$(DEPDIR)/handlers.Plo -rm -f ./$(DEPDIR)/hashtable.Plo -rm -f ./$(DEPDIR)/memory.Plo -rm -f ./$(DEPDIR)/menuparser.Plo -rm -f ./$(DEPDIR)/menuparser_macros.Plo -rm -f ./$(DEPDIR)/misc.Plo -rm -f ./$(DEPDIR)/notification.Plo -rm -f ./$(DEPDIR)/proplist.Plo -rm -f ./$(DEPDIR)/selection.Plo -rm -f ./$(DEPDIR)/string.Plo -rm -f ./$(DEPDIR)/tree.Plo -rm -f ./$(DEPDIR)/userdefaults.Plo -rm -f ./$(DEPDIR)/usleep.Plo -rm -f ./$(DEPDIR)/wapplication.Plo -rm -f ./$(DEPDIR)/wappresource.Plo -rm -f ./$(DEPDIR)/wballoon.Plo -rm -f ./$(DEPDIR)/wbox.Plo -rm -f ./$(DEPDIR)/wbrowser.Plo -rm -f ./$(DEPDIR)/wbutton.Plo -rm -f ./$(DEPDIR)/wcolor.Plo -rm -f ./$(DEPDIR)/wcolorpanel.Plo -rm -f ./$(DEPDIR)/wcolorwell.Plo -rm -f ./$(DEPDIR)/wevent.Plo -rm -f ./$(DEPDIR)/wfilepanel.Plo -rm -f ./$(DEPDIR)/wfont.Plo -rm -f ./$(DEPDIR)/wfontpanel.Plo -rm -f ./$(DEPDIR)/wframe.Plo -rm -f ./$(DEPDIR)/widgets.Plo -rm -f ./$(DEPDIR)/winputmethod.Plo -rm -f ./$(DEPDIR)/wlabel.Plo -rm -f ./$(DEPDIR)/wlist.Plo -rm -f ./$(DEPDIR)/wmenuitem.Plo -rm -f ./$(DEPDIR)/wmisc.Plo -rm -f ./$(DEPDIR)/wpanel.Plo -rm -f ./$(DEPDIR)/wpixmap.Plo -rm -f ./$(DEPDIR)/wpopupbutton.Plo -rm -f ./$(DEPDIR)/wprogressindicator.Plo -rm -f ./$(DEPDIR)/wruler.Plo -rm -f ./$(DEPDIR)/wscroller.Plo -rm -f ./$(DEPDIR)/wscrollview.Plo -rm -f ./$(DEPDIR)/wslider.Plo -rm -f ./$(DEPDIR)/wsplitview.Plo -rm -f ./$(DEPDIR)/wtabview.Plo -rm -f ./$(DEPDIR)/wtext.Plo -rm -f ./$(DEPDIR)/wtextfield.Plo -rm -f ./$(DEPDIR)/wutil.Plo -rm -f ./$(DEPDIR)/wview.Plo -rm -f ./$(DEPDIR)/wwindow.Plo -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-pkgconfigDATA install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-libLTLIBRARIES install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f ./$(DEPDIR)/array.Plo -rm -f ./$(DEPDIR)/bagtree.Plo -rm -f ./$(DEPDIR)/configuration.Plo -rm -f ./$(DEPDIR)/data.Plo -rm -f ./$(DEPDIR)/dragcommon.Plo -rm -f ./$(DEPDIR)/dragdestination.Plo -rm -f ./$(DEPDIR)/dragsource.Plo -rm -f ./$(DEPDIR)/error.Plo -rm -f ./$(DEPDIR)/findfile.Plo -rm -f ./$(DEPDIR)/handlers.Plo -rm -f ./$(DEPDIR)/hashtable.Plo -rm -f ./$(DEPDIR)/memory.Plo -rm -f ./$(DEPDIR)/menuparser.Plo -rm -f ./$(DEPDIR)/menuparser_macros.Plo -rm -f ./$(DEPDIR)/misc.Plo -rm -f ./$(DEPDIR)/notification.Plo -rm -f ./$(DEPDIR)/proplist.Plo -rm -f ./$(DEPDIR)/selection.Plo -rm -f ./$(DEPDIR)/string.Plo -rm -f ./$(DEPDIR)/tree.Plo -rm -f ./$(DEPDIR)/userdefaults.Plo -rm -f ./$(DEPDIR)/usleep.Plo -rm -f ./$(DEPDIR)/wapplication.Plo -rm -f ./$(DEPDIR)/wappresource.Plo -rm -f ./$(DEPDIR)/wballoon.Plo -rm -f ./$(DEPDIR)/wbox.Plo -rm -f ./$(DEPDIR)/wbrowser.Plo -rm -f ./$(DEPDIR)/wbutton.Plo -rm -f ./$(DEPDIR)/wcolor.Plo -rm -f ./$(DEPDIR)/wcolorpanel.Plo -rm -f ./$(DEPDIR)/wcolorwell.Plo -rm -f ./$(DEPDIR)/wevent.Plo -rm -f ./$(DEPDIR)/wfilepanel.Plo -rm -f ./$(DEPDIR)/wfont.Plo -rm -f ./$(DEPDIR)/wfontpanel.Plo -rm -f ./$(DEPDIR)/wframe.Plo -rm -f ./$(DEPDIR)/widgets.Plo -rm -f ./$(DEPDIR)/winputmethod.Plo -rm -f ./$(DEPDIR)/wlabel.Plo -rm -f ./$(DEPDIR)/wlist.Plo -rm -f ./$(DEPDIR)/wmenuitem.Plo -rm -f ./$(DEPDIR)/wmisc.Plo -rm -f ./$(DEPDIR)/wpanel.Plo -rm -f ./$(DEPDIR)/wpixmap.Plo -rm -f ./$(DEPDIR)/wpopupbutton.Plo -rm -f ./$(DEPDIR)/wprogressindicator.Plo -rm -f ./$(DEPDIR)/wruler.Plo -rm -f ./$(DEPDIR)/wscroller.Plo -rm -f ./$(DEPDIR)/wscrollview.Plo -rm -f ./$(DEPDIR)/wslider.Plo -rm -f ./$(DEPDIR)/wsplitview.Plo -rm -f ./$(DEPDIR)/wtabview.Plo -rm -f ./$(DEPDIR)/wtext.Plo -rm -f ./$(DEPDIR)/wtextfield.Plo -rm -f ./$(DEPDIR)/wutil.Plo -rm -f ./$(DEPDIR)/wview.Plo -rm -f ./$(DEPDIR)/wwindow.Plo -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-libLTLIBRARIES uninstall-pkgconfigDATA .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--depfiles check check-am clean clean-generic \ clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-libLTLIBRARIES install-man install-pdf \ install-pdf-am install-pkgconfigDATA install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am uninstall-libLTLIBRARIES uninstall-pkgconfigDATA .PRECIOUS: Makefile WINGs.pc: Makefile @echo "Generating $@" @echo 'Name: WINGs' > $@ @echo 'Description: Small widget set with the NeXTStep(TM) look and feel' >> $@ @echo 'Version: $(VERSION)' >> $@ @echo 'Requires: wrlib WUtil' >> $@ @echo 'Libs: $(lib_search_path) -lWINGs' >> $@ @echo 'Libs.private: $(XFTLIBS) $(PANGOLIBS) $(XLIBS) -lm $(INTLIBS)' >> $@ @echo 'Cflags: $(inc_search_path)' >> $@ WUtil.pc: Makefile @echo "Generating $@" @echo 'Name: WUtil' > $@ @echo 'Description: Utility library for WINGs' >> $@ @echo 'Version: $(VERSION)' >> $@ @echo 'Libs: -L$(libdir) -lWUtil' >> $@ @echo 'Libs.private: $(INTLIBS)' >> $@ @echo 'Cflags: -I$(includedir)' >> $@ # 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. .NOEXPORT: ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/wsplitview.c���������������������������������������������������������������0000644�0001750�0001750�00000041261�13431646201�014302� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include "WINGsP.h" /* char *WMSplitViewDidResizeSubviewsNotification = "WMSplitViewDidResizeSubviewsNotification"; char *WMSplitViewWillResizeSubviewsNotification = "WMSplitViewWillResizeSubviewsNotification"; */ typedef struct W_SplitViewSubview { WMView *view; int minSize; int maxSize; int size; int pos; } W_SplitViewSubview; typedef struct W_SplitView { W_Class widgetClass; W_View *view; WMArray *subviews; WMSplitViewConstrainProc *constrainProc; struct { unsigned int vertical:1; unsigned int adjustOnPaint:1; unsigned int subviewsWereManuallyMoved:1; } flags; /* WMSplitViewResizeSubviewsProc *resizeSubviewsProc; */ } W_SplitView; #define DIVIDER_THICKNESS 8 #define MIN_SUBVIEW_SIZE 4 #define MAX_SUBVIEW_SIZE -1 /* TODO: rewrite --Dan */ #define _GetSubviewsCount() WMGetArrayItemCount(sPtr->subviews) #define _GetPSubviewStructAt(i) \ ((W_SplitViewSubview*)WMGetFromArray(sPtr->subviews,(i))) #define _GetSubviewAt(i) \ (((W_SplitViewSubview*)WMGetFromArray(sPtr->subviews,(i)))->view) #define _GetMinSizeAt(i) \ (((W_SplitViewSubview*)WMGetFromArray(sPtr->subviews,(i)))->minSize) #define _GetMaxSizeAt(i) \ (((W_SplitViewSubview*)WMGetFromArray(sPtr->subviews,(i)))->maxSize) #define _GetSizeAt(i) \ (((W_SplitViewSubview*)WMGetFromArray(sPtr->subviews,(i)))->size) #define _GetPosAt(i) \ (((W_SplitViewSubview*)WMGetFromArray(sPtr->subviews,(i)))->pos) #define _GetSplitViewSize() \ ((sPtr->flags.vertical) ? sPtr->view->size.width : sPtr->view->size.height) static void destroySplitView(WMSplitView * sPtr); static void paintSplitView(WMSplitView * sPtr); static void handleEvents(XEvent * event, void *data); static void handleActionEvents(XEvent * event, void *data); static void getConstraints(WMSplitView * sPtr, int index, int *minSize, int *maxSize) { *minSize = MIN_SUBVIEW_SIZE; *maxSize = MAX_SUBVIEW_SIZE; if (sPtr->constrainProc) (*sPtr->constrainProc) (sPtr, index, minSize, maxSize); if (*minSize < MIN_SUBVIEW_SIZE) *minSize = MIN_SUBVIEW_SIZE; if (*maxSize < MIN_SUBVIEW_SIZE) *maxSize = MAX_SUBVIEW_SIZE; else if (*maxSize < *minSize) *maxSize = *minSize; } static void updateConstraints(WMSplitView * sPtr) { W_SplitViewSubview *p; int i, count; count = _GetSubviewsCount(); for (i = 0; i < count; i++) { p = _GetPSubviewStructAt(i); getConstraints(sPtr, i, &(p->minSize), &(p->maxSize)); } } static void resizeView(WMSplitView * sPtr, WMView * view, int size) { int width, height; if (sPtr->flags.vertical) { width = size; height = sPtr->view->size.height; } else { width = sPtr->view->size.width; height = size; } if (view->self) WMResizeWidget(view->self, width, height); else W_ResizeView(view, width, height); } static void reparentView(WMSplitView * sPtr, WMView * view, int pos) { int x, y; if (sPtr->flags.vertical) { x = pos; y = 0; } else { x = 0; y = pos; } W_ReparentView(view, sPtr->view, x, y); } static void moveView(WMSplitView * sPtr, WMView * view, int pos) { int x, y; if (sPtr->flags.vertical) { x = pos; y = 0; } else { x = 0; y = pos; } if (view->self) WMMoveWidget(view->self, x, y); else W_MoveView(view, x, y); } static int checkSizes(WMSplitView * sPtr) { int i, count, offset; W_SplitViewSubview *p; count = _GetSubviewsCount(); offset = 0; for (i = 0; i < count; i++) { p = _GetPSubviewStructAt(i); if (p->size < p->minSize) { offset += p->minSize - p->size; p->size = p->minSize; } else if (p->maxSize != MAX_SUBVIEW_SIZE && p->size > p->maxSize) { offset += p->maxSize - p->size; p->size = p->maxSize; } } return (offset); } static void checkPositions(WMSplitView * sPtr) { int i, count, pos; W_SplitViewSubview *p; count = _GetSubviewsCount(); pos = 0; for (i = 0; i < count; i++) { p = _GetPSubviewStructAt(i); p->pos = pos; pos += p->size + DIVIDER_THICKNESS; } } static void updateSubviewsGeom(WMSplitView * sPtr) { int i, count; W_SplitViewSubview *p; count = _GetSubviewsCount(); for (i = 0; i < count; i++) { p = _GetPSubviewStructAt(i); resizeView(sPtr, p->view, p->size); moveView(sPtr, p->view, p->pos); } } static int getTotalSize(WMSplitView * sPtr) { int i, count, totSize; count = _GetSubviewsCount(); if (!count) return (0); totSize = 0; for (i = 0; i < count; i++) totSize += _GetSizeAt(i) + DIVIDER_THICKNESS; return (totSize - DIVIDER_THICKNESS); } static Bool distributeOffsetEqually(WMSplitView * sPtr, int offset) { W_SplitViewSubview *p; int i, count, sizeChanged, forced; if ((count = _GetSubviewsCount()) < 1) return (True); forced = False; while (offset != 0) { sizeChanged = 0; for (i = 0; i < count && offset != 0; i++) { p = _GetPSubviewStructAt(i); if (offset < 0) { if (p->size > p->minSize) { offset++; p->size--; sizeChanged = 1; } } else if (p->maxSize == MAX_SUBVIEW_SIZE || p->size < p->maxSize) { offset--; p->size++; sizeChanged = 1; } } if (offset != 0 && !sizeChanged) { p = _GetPSubviewStructAt(count - 1); if (offset > 0) { p->size += offset; p->maxSize = MAX_SUBVIEW_SIZE; } offset = 0; forced = True; } } return (forced); } static Bool distributeOffsetFormEnd(WMSplitView * sPtr, int offset) { W_SplitViewSubview *p; int i, count, sizeTmp; if ((count = _GetSubviewsCount()) < 1) return (True); for (i = count - 1; i >= 0 && offset != 0; i--) { p = _GetPSubviewStructAt(i); sizeTmp = p->size; if (offset > 0) { if (p->maxSize == MAX_SUBVIEW_SIZE || p->size + offset < p->maxSize) p->size += offset; else p->size = p->maxSize; } else { if (p->size + offset >= p->minSize) p->size += offset; else p->size = p->minSize; } offset -= p->size - sizeTmp; } return (offset == 0); } static void adjustSplitViewSubviews(WMSplitView * sPtr) { W_SplitViewSubview *p; int i, count, adjSize, adjPad; CHECK_CLASS(sPtr, WC_SplitView); #if 0 printf("---- (adjustSplitViewSubviews - 1) ----\n"); dumpSubviews(sPtr); #endif if ((count = _GetSubviewsCount()) < 1) return; adjSize = (_GetSplitViewSize() - ((count - 1) * DIVIDER_THICKNESS)) / count; adjPad = (_GetSplitViewSize() - ((count - 1) * DIVIDER_THICKNESS)) % count; for (i = 0; i < count; i++) { p = _GetPSubviewStructAt(i); p->size = adjSize; } distributeOffsetEqually(sPtr, adjPad - checkSizes(sPtr)); checkPositions(sPtr); updateSubviewsGeom(sPtr); sPtr->flags.subviewsWereManuallyMoved = 0; #if 0 printf("---- (adjustSplitViewSubviews - 2) ----\n"); dumpSubviews(sPtr); #endif } #if 0 static void handleSubviewResized(void *self, WMNotification * notif) { WMSplitView *sPtr = (WMSplitView *) self; CHECK_CLASS(sPtr, WC_SplitView); if (WMGetNotificationName(notif) == WMViewSizeDidChangeNotification) { W_SplitViewSubview *p; int i, count, done; WMView *view = WMGetNotificationObject(notif); count = _GetSubviewsCount(); done = 0; for (i = 0; i < count; i++) { p = _GetPSubviewStructAt(i); if (p->view == view) { done = 1; break; } } if (done) { /* TODO !!! */ resizeView(sPtr, p->view, p->size); moveView(sPtr, p->view, p->pos); } } } #endif static void handleViewResized(void *self, WMNotification * notification) { WMSplitView *sPtr = (WMSplitView *) self; /* Parameter not used, but tell the compiler that it is ok */ (void) notification; #if 0 printf("---- (handleViewResized - 1) ----\n"); dumpSubviews(sPtr); #endif updateConstraints(sPtr); checkSizes(sPtr); if (sPtr->constrainProc || sPtr->flags.subviewsWereManuallyMoved) { distributeOffsetFormEnd(sPtr, _GetSplitViewSize() - getTotalSize(sPtr)); checkPositions(sPtr); updateSubviewsGeom(sPtr); } else adjustSplitViewSubviews(sPtr); assert(checkSizes(sPtr) == 0); #if 0 printf("---- (handleViewResized - 2) ----\n"); dumpSubviews(sPtr); #endif } static void paintSplitView(WMSplitView * sPtr) { W_SplitViewSubview *p; W_Screen *scr = sPtr->view->screen; int x, y, i, count; WMPixmap *dimple = scr->scrollerDimple; #if 0 printf("---- (paintSplitView - 1) ----\n"); dumpSubviews(sPtr); #endif if (!sPtr->view->flags.mapped || !sPtr->view->flags.realized) return; XClearWindow(scr->display, sPtr->view->window); count = _GetSubviewsCount(); if (count == 0) return; if (sPtr->flags.adjustOnPaint) { handleViewResized(sPtr, NULL); sPtr->flags.adjustOnPaint = 0; } XSetClipMask(scr->display, scr->clipGC, dimple->mask); if (sPtr->flags.vertical) { x = ((DIVIDER_THICKNESS - dimple->width) / 2); y = (sPtr->view->size.height - dimple->height) / 2; } else { x = (sPtr->view->size.width - dimple->width) / 2; y = ((DIVIDER_THICKNESS - dimple->height) / 2); } for (i = 0; i < count - 1; i++) { p = _GetPSubviewStructAt(i); if (sPtr->flags.vertical) x += p->size; else y += p->size; XSetClipOrigin(scr->display, scr->clipGC, x, y); XCopyArea(scr->display, dimple->pixmap, sPtr->view->window, scr->clipGC, 0, 0, dimple->width, dimple->height, x, y); if (sPtr->flags.vertical) x += DIVIDER_THICKNESS; else y += DIVIDER_THICKNESS; } #if 0 printf("---- (paintSplitView - 2) ----\n"); dumpSubviews(sPtr); #endif } static void drawDragingRectangle(WMSplitView * sPtr, int pos) { int x, y, w, h; if (sPtr->flags.vertical) { x = pos; y = 0; w = DIVIDER_THICKNESS; h = sPtr->view->size.height; } else { x = 0; y = pos; w = sPtr->view->size.width; h = DIVIDER_THICKNESS; } XFillRectangle(sPtr->view->screen->display, sPtr->view->window, sPtr->view->screen->ixorGC, x, y, w, h); } static void getMinMaxDividerCoord(WMSplitView * sPtr, int divider, int *minC, int *maxC) { int relMinC, relMaxC; int totSize = _GetSizeAt(divider) + _GetSizeAt(divider + 1); relMinC = _GetMinSizeAt(divider); if (_GetMaxSizeAt(divider + 1) != MAX_SUBVIEW_SIZE && relMinC < totSize - _GetMaxSizeAt(divider + 1)) relMinC = totSize - _GetMaxSizeAt(divider + 1); relMaxC = totSize - _GetMinSizeAt(divider + 1); if (_GetMaxSizeAt(divider) != MAX_SUBVIEW_SIZE && relMaxC > _GetMaxSizeAt(divider)) relMaxC = _GetMaxSizeAt(divider); *minC = _GetPosAt(divider) + relMinC; *maxC = _GetPosAt(divider) + relMaxC; } static void dragDivider(WMSplitView * sPtr, int clickX, int clickY) { int divider, pos, ofs, done, dragging; int i, count; XEvent ev; WMScreen *scr; int minCoord, maxCoord, coord; if (sPtr->constrainProc) { updateConstraints(sPtr); checkSizes(sPtr); distributeOffsetFormEnd(sPtr, _GetSplitViewSize() - getTotalSize(sPtr)); checkPositions(sPtr); updateSubviewsGeom(sPtr); } scr = sPtr->view->screen; divider = ofs = pos = done = 0; coord = (sPtr->flags.vertical) ? clickX : clickY; count = _GetSubviewsCount(); if (count < 2) return; for (i = 0; i < count - 1; i++) { pos += _GetSizeAt(i) + DIVIDER_THICKNESS; if (coord < pos) { ofs = coord - pos + DIVIDER_THICKNESS; done = 1; break; } divider++; } if (!done) return; getMinMaxDividerCoord(sPtr, divider, &minCoord, &maxCoord); done = 0; dragging = 0; while (!done) { WMMaskEvent(scr->display, ButtonMotionMask | ButtonReleaseMask | ExposureMask, &ev); coord = (sPtr->flags.vertical) ? ev.xmotion.x : ev.xmotion.y; switch (ev.type) { case ButtonRelease: done = 1; if (dragging) drawDragingRectangle(sPtr, pos); break; case MotionNotify: if (dragging) drawDragingRectangle(sPtr, pos); if (coord - ofs < minCoord) pos = minCoord; else if (coord - ofs > maxCoord) pos = maxCoord; else pos = coord - ofs; drawDragingRectangle(sPtr, pos); dragging = 1; break; default: WMHandleEvent(&ev); break; } } if (dragging) { W_SplitViewSubview *p1, *p2; int totSize; p1 = _GetPSubviewStructAt(divider); p2 = _GetPSubviewStructAt(divider + 1); totSize = p1->size + DIVIDER_THICKNESS + p2->size; p1->size = pos - p1->pos; p2->size = totSize - p1->size - DIVIDER_THICKNESS; p2->pos = p1->pos + p1->size + DIVIDER_THICKNESS; resizeView(sPtr, p1->view, p1->size); moveView(sPtr, p2->view, p2->pos); resizeView(sPtr, p2->view, p2->size); sPtr->flags.subviewsWereManuallyMoved = 1; } } static void handleEvents(XEvent * event, void *data) { WMSplitView *sPtr = (WMSplitView *) data; CHECK_CLASS(data, WC_SplitView); switch (event->type) { case Expose: if (event->xexpose.count != 0) break; paintSplitView(sPtr); break; case DestroyNotify: destroySplitView(sPtr); break; } } static void handleActionEvents(XEvent * event, void *data) { CHECK_CLASS(data, WC_SplitView); switch (event->type) { case ButtonPress: if (event->xbutton.button == Button1) dragDivider(data, event->xbutton.x, event->xbutton.y); break; } } static void destroySplitView(WMSplitView * sPtr) { WMFreeArray(sPtr->subviews); WMRemoveNotificationObserver(sPtr); wfree(sPtr); } WMSplitView *WMCreateSplitView(WMWidget * parent) { WMSplitView *sPtr; sPtr = wmalloc(sizeof(WMSplitView)); sPtr->widgetClass = WC_SplitView; sPtr->view = W_CreateView(W_VIEW(parent)); if (!sPtr->view) { wfree(sPtr); return NULL; } sPtr->view->self = sPtr; WMSetViewNotifySizeChanges(sPtr->view, True); WMCreateEventHandler(sPtr->view, ExposureMask | StructureNotifyMask | ClientMessageMask, handleEvents, sPtr); WMCreateEventHandler(sPtr->view, ButtonPressMask | ButtonReleaseMask | EnterWindowMask | LeaveWindowMask, handleActionEvents, sPtr); WMAddNotificationObserver(handleViewResized, sPtr, WMViewSizeDidChangeNotification, sPtr->view); sPtr->subviews = WMCreateArrayWithDestructor(8, wfree); return sPtr; } void WMAdjustSplitViewSubviews(WMSplitView * sPtr) { CHECK_CLASS(sPtr, WC_SplitView); checkSizes(sPtr); adjustSplitViewSubviews(sPtr); assert(checkSizes(sPtr) == 0); } void WMAddSplitViewSubview(WMSplitView * sPtr, WMView * subview) { int wasMapped, count; W_SplitViewSubview *p; CHECK_CLASS(sPtr, WC_SplitView); p = (W_SplitViewSubview *) wmalloc(sizeof(W_SplitViewSubview)); if (!p) return; wasMapped = subview->flags.mapped; if (wasMapped) W_UnmapView(subview); count = _GetSubviewsCount(); p->view = subview; getConstraints(sPtr, count, &(p->minSize), &(p->maxSize)); if (sPtr->flags.vertical) p->size = subview->size.width; else p->size = subview->size.height; WMAddToArray(sPtr->subviews, p); reparentView(sPtr, subview, 0); /* We should have something like that... WMSetViewNotifySizeChanges(subview, True); WMAddNotificationObserver(handleSubviewResized, sPtr, WMViewSizeDidChangeNotification, subview); WMSetViewNotifyMoveChanges(subview, True); WMAddNotificationObserver(handleSubviewResized, sPtr, WMViewMoveDidChangeNotification, subview); */ if (wasMapped) { W_MapView(subview); sPtr->flags.adjustOnPaint = 1; paintSplitView(sPtr); } else { handleViewResized(sPtr, NULL); } } WMView *WMGetSplitViewSubviewAt(WMSplitView * sPtr, int index) { CHECK_CLASS(sPtr, WC_SplitView); if (index >= 0 && index < _GetSubviewsCount()) return (_GetSubviewAt(index)); else return (NULL); } void WMRemoveSplitViewSubview(WMSplitView * sPtr, WMView * view) { W_SplitViewSubview *p; int i, count; CHECK_CLASS(sPtr, WC_SplitView); /* TODO: rewrite this. This code with macros is getting more complex than it worths */ count = _GetSubviewsCount(); for (i = 0; i < count; i++) { p = _GetPSubviewStructAt(i); if (p->view == view) { WMDeleteFromArray(sPtr->subviews, i); sPtr->flags.adjustOnPaint = 1; paintSplitView(sPtr); break; } } } void WMRemoveSplitViewSubviewAt(WMSplitView * sPtr, int index) { CHECK_CLASS(sPtr, WC_SplitView); /* TODO: same about rewrite */ if (index >= 0 && index < _GetSubviewsCount()) { WMDeleteFromArray(sPtr->subviews, index); sPtr->flags.adjustOnPaint = 1; paintSplitView(sPtr); } } void WMSetSplitViewConstrainProc(WMSplitView * sPtr, WMSplitViewConstrainProc * proc) { CHECK_CLASS(sPtr, WC_SplitView); sPtr->constrainProc = proc; } int WMGetSplitViewSubviewsCount(WMSplitView * sPtr) { CHECK_CLASS(sPtr, WC_SplitView); return (_GetSubviewsCount()); } Bool WMGetSplitViewVertical(WMSplitView * sPtr) { CHECK_CLASS(sPtr, WC_SplitView); return (sPtr->flags.vertical == 1); } void WMSetSplitViewVertical(WMSplitView * sPtr, Bool flag) { int vertical; CHECK_CLASS(sPtr, WC_SplitView); vertical = ((flag == 0) ? 0 : 1); if (sPtr->flags.vertical == vertical) return; sPtr->flags.vertical = vertical; /* if (sPtr->view->flags.mapped && sPtr->view->flags.realized) */ handleViewResized(sPtr, NULL); /* else sPtr->flags.adjustOnPaint = 1; */ } int WMGetSplitViewDividerThickness(WMSplitView *sPtr) { CHECK_CLASS(sPtr, WC_SplitView); (void) sPtr; return (DIVIDER_THICKNESS); } #if 0 void WMSetSplitViewResizeSubviewsProc(WMSplitView * sPtr, WMSplitViewResizeSubviewsProc * proc) { CHECK_CLASS(sPtr, WC_SplitView); sPtr->resizeSubviewsProc = proc; } #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/README���������������������������������������������������������������������0000644�0001750�0001750�00000006032�13431646201�012576� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ WINGs - WINGs Is Not GNUstep by Alfredo Kengi Kojima kojima@windowmaker.info WINGs is a small widget set with the N*XTSTEP look and feel. It's API is inspired in OpenStep and it's implementation borrows some ideas from Tk. It has a reasonable set of widgets, sufficient for building small applications (like a CDPlayer or hacking something like rxvt). It also has other functions that are usefull for applications, like a User Defaults alike configuration manager and a notification system. The library is limited and it's design is a little sloppy, so it's not intended to build large or complex applications, like anything more complex than a CDPlayer. GNUstep should be used for such applications. Since WINGs is written in C and is sort of low-level it is small and faster than say, Motif or even Athena. Knowing Xlib will help you to workaround some of it's limitations, although you'll probably be able to write something like a trivial tic-tac-toe game without knowing much Xlib. Some of it's functions are designed to support the Window Maker window manager (see http://windowmaker.info) In fact, it's primary role is to support Window Maker. All other uses of it are just an added bonus. It will help you to understand the API if you read the ApplicationKit reference manual, distributed as a PDF by Apple. The function names, structs and most of the intrinsics are very close to OpenStep classes. Internationalization: --------------------- Change ~/GNUstep/Defaults/WMGLOBAL to set the desired font set and set MultiByteText = YES; to enable support for multibyte text. Widgets provided by WINGs: -------------------------- - button (command button, radio, switch etc. - all buttons defined in OpenStep) - label - textfield - frame - window - popup menu button - scroller - selection list - browser - slider - scrollable view - color well - split view - tabbed view - progress indicator - selection (make pasteboard like?) - drag&drop - input box - file panel - color panel - alert panel - font panel If you think you can code the following, please do. They are needed by WPrefs.app, but the number of other things I have to do is huge. - input method support (XIM). I have no idea of how to code it. People who use different characters than ASCII will have trouble editing menus without it... Wish list: (I don't have the know-how or time to do them) --------------------------------------------------------- - text (with support for RTF) - matrix (like NSMatrix) - font manager (like NSFontManager) - finish other wigets - optimize list scrolling (XCopyArea() the area that's already drawn) - InterfaceMaker? - use XSetWMName and XSetWMIconName for the window/icon title setting. This requires transforming the received text to a text property with the proper encoding. Copyright --------- WINGs is copyright (c) Alfredo K. Kojima and is licensed through the GNU Library General Public License (LGPL). ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/wbox.c���������������������������������������������������������������������0000644�0001750�0001750�00000011572�13431646201�013046� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include "WINGsP.h" typedef struct { WMView *view; int minSize; int maxSize; int space; unsigned expand:1; unsigned fill:1; unsigned end:1; } SubviewItem; typedef struct W_Box { W_Class widgetClass; W_View *view; WMArray *subviews; short borderWidth; unsigned horizontal:1; } Box; #define DEFAULT_WIDTH 40 #define DEFAULT_HEIGHT 40 static void destroyBox(Box * bPtr); static void handleEvents(XEvent * event, void *data); static void didResize(struct W_ViewDelegate *, WMView *); static W_ViewDelegate delegate = { NULL, NULL, didResize, NULL, NULL }; WMBox *WMCreateBox(WMWidget * parent) { Box *bPtr; bPtr = wmalloc(sizeof(Box)); bPtr->widgetClass = WC_Box; bPtr->view = W_CreateView(W_VIEW(parent)); if (!bPtr->view) { wfree(bPtr); return NULL; } bPtr->view->self = bPtr; bPtr->view->delegate = &delegate; bPtr->subviews = WMCreateArrayWithDestructor(2, wfree); WMCreateEventHandler(bPtr->view, StructureNotifyMask, handleEvents, bPtr); WMResizeWidget(bPtr, DEFAULT_WIDTH, DEFAULT_HEIGHT); return bPtr; } typedef struct { WMBox *box; int total; int expands; int x, y; int xe, ye; int w, h; } BoxData; static void computeExpansion(void *object, void *cdata) { SubviewItem *item = (SubviewItem *) object; BoxData *eData = (BoxData *) cdata; eData->total -= item->minSize; eData->total -= item->space; if (item->expand) { eData->expands++; } } static void doRearrange(void *object, void *cdata) { SubviewItem *item = (SubviewItem *) object; BoxData *eData = (BoxData *) cdata; if (eData->box->horizontal) { eData->w = item->minSize; if (item->expand) eData->w += eData->total / eData->expands; } else { eData->h = item->minSize; if (item->expand) eData->h += eData->total / eData->expands; } if (!item->end) { W_MoveView(item->view, eData->x, eData->y); } W_ResizeView(item->view, eData->w, eData->h); if (eData->box->horizontal) { if (item->end) eData->xe -= eData->w + item->space; else eData->x += eData->w + item->space; } else { if (item->end) eData->ye -= eData->h + item->space; else eData->y += eData->h + item->space; } if (item->end) { W_MoveView(item->view, eData->xe, eData->ye); } } static void rearrange(WMBox * box) { BoxData eData; eData.box = box; eData.x = eData.y = box->borderWidth; eData.w = eData.h = 1; eData.expands = 0; if (box->horizontal) { eData.ye = box->borderWidth; eData.xe = WMWidgetWidth(box) - box->borderWidth; eData.h = WMWidgetHeight(box) - 2 * box->borderWidth; eData.total = WMWidgetWidth(box) - 2 * box->borderWidth; } else { eData.xe = box->borderWidth; eData.ye = WMWidgetHeight(box) - box->borderWidth; eData.w = WMWidgetWidth(box) - 2 * box->borderWidth; eData.total = WMWidgetHeight(box) - 2 * box->borderWidth; } if (eData.w <= 0 || eData.h <= 0 || eData.total <= 0) { return; } WMMapArray(box->subviews, computeExpansion, &eData); WMMapArray(box->subviews, doRearrange, &eData); } void WMSetBoxBorderWidth(WMBox * box, unsigned width) { if (box->borderWidth != width) { box->borderWidth = width; rearrange(box); } } void WMAddBoxSubview(WMBox * bPtr, WMView * view, Bool expand, Bool fill, int minSize, int maxSize, int space) { SubviewItem *subView; subView = wmalloc(sizeof(SubviewItem)); subView->view = view; subView->minSize = minSize; subView->maxSize = maxSize; subView->expand = expand; subView->fill = fill; subView->space = space; subView->end = 0; WMAddToArray(bPtr->subviews, subView); rearrange(bPtr); } void WMAddBoxSubviewAtEnd(WMBox * bPtr, WMView * view, Bool expand, Bool fill, int minSize, int maxSize, int space) { SubviewItem *subView; subView = wmalloc(sizeof(SubviewItem)); subView->view = view; subView->minSize = minSize; subView->maxSize = maxSize; subView->expand = expand; subView->fill = fill; subView->space = space; subView->end = 1; WMAddToArray(bPtr->subviews, subView); rearrange(bPtr); } static int matchView(const void *item, const void *cdata) { return (((SubviewItem *) item)->view == (WMView *) cdata); } void WMRemoveBoxSubview(WMBox * bPtr, WMView * view) { if (WMRemoveFromArrayMatching(bPtr->subviews, matchView, view)) { rearrange(bPtr); } } void WMSetBoxHorizontal(WMBox * box, Bool flag) { /* make sure flag is either 0 or 1 no matter what true value was passed */ flag = ((flag == 0) ? 0 : 1); if (box->horizontal != flag) { box->horizontal = flag; rearrange(box); } } static void destroyBox(Box * bPtr) { WMFreeArray(bPtr->subviews); wfree(bPtr); } static void didResize(struct W_ViewDelegate *delegate, WMView * view) { /* Parameter not used, but tell the compiler that it is ok */ (void) delegate; rearrange(view->self); } static void handleEvents(XEvent * event, void *data) { Box *bPtr = (Box *) data; CHECK_CLASS(data, WC_Box); switch (event->type) { case DestroyNotify: destroyBox(bPtr); break; case ConfigureNotify: rearrange(bPtr); break; } } ��������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/memory.c�������������������������������������������������������������������0000644�0001750�0001750�00000010404�13431646201�013370� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker miscelaneous function library * * Copyright (c) 1997-2003 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., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301, USA. */ #include "wconfig.h" #include "WUtil.h" #include <stdlib.h> #include <sys/types.h> #include <unistd.h> #include <stdio.h> #include <string.h> #include <assert.h> #include <signal.h> #ifdef HAVE_STDNORETURN #include <stdnoreturn.h> #endif #ifdef USE_BOEHM_GC #ifndef GC_DEBUG #define GC_DEBUG #endif /* !GC_DEBUG */ #include <gc/gc.h> #endif /* USE_BOEHM_GC */ #ifndef False # define False 0 #endif #ifndef True # define True 1 #endif static void defaultHandler(int bla) { if (bla) kill(getpid(), SIGABRT); else exit(1); } static waborthandler *aborthandler = defaultHandler; static inline noreturn void wAbort(int bla) { (*aborthandler)(bla); exit(-1); } waborthandler *wsetabort(waborthandler * handler) { waborthandler *old = aborthandler; aborthandler = handler; return old; } static int Aborting = 0; /* if we're in the middle of an emergency exit */ static WMHashTable *table = NULL; void *wmalloc(size_t size) { void *tmp; assert(size > 0); #ifdef USE_BOEHM_GC tmp = GC_MALLOC(size); #else tmp = malloc(size); #endif if (tmp == NULL) { wwarning("malloc() failed. Retrying after 2s."); sleep(2); #ifdef USE_BOEHM_GC tmp = GC_MALLOC(size); #else tmp = malloc(size); #endif if (tmp == NULL) { if (Aborting) { fputs("Really Bad Error: recursive malloc() failure.", stderr); exit(-1); } else { wfatal("virtual memory exhausted"); Aborting = 1; wAbort(False); } } } memset(tmp, 0, size); return tmp; } void *wrealloc(void *ptr, size_t newsize) { void *nptr; if (!ptr) { nptr = wmalloc(newsize); } else if (newsize == 0) { wfree(ptr); nptr = NULL; } else { #ifdef USE_BOEHM_GC nptr = GC_REALLOC(ptr, newsize); #else nptr = realloc(ptr, newsize); #endif if (nptr == NULL) { wwarning("realloc() failed. Retrying after 2s."); sleep(2); #ifdef USE_BOEHM_GC nptr = GC_REALLOC(ptr, newsize); #else nptr = realloc(ptr, newsize); #endif if (nptr == NULL) { if (Aborting) { fputs("Really Bad Error: recursive realloc() failure.", stderr); exit(-1); } else { wfatal("virtual memory exhausted"); Aborting = 1; wAbort(False); } } } } return nptr; } void *wretain(void *ptr) { int *refcount; if (!table) { table = WMCreateHashTable(WMIntHashCallbacks); } refcount = WMHashGet(table, ptr); if (!refcount) { refcount = wmalloc(sizeof(int)); *refcount = 1; WMHashInsert(table, ptr, refcount); #ifdef VERBOSE printf("== %i (%p)\n", *refcount, ptr); #endif } else { (*refcount)++; #ifdef VERBOSE printf("+ %i (%p)\n", *refcount, ptr); #endif } return ptr; } void wfree(void *ptr) { if (ptr) #ifdef USE_BOEHM_GC /* This should eventually be removed, once the criss-cross * of wmalloc()d memory being free()d, malloc()d memory being * wfree()d, various misuses of calling wfree() on objects * allocated by libc malloc() and calling libc free() on * objects allocated by Boehm GC (think external libraries) * is cleaned up. */ if (GC_base(ptr) != 0) GC_FREE(ptr); else free(ptr); #else free(ptr); #endif ptr = NULL; } void wrelease(void *ptr) { int *refcount; refcount = WMHashGet(table, ptr); if (!refcount) { wwarning("trying to release unexisting data %p", ptr); } else { (*refcount)--; if (*refcount < 1) { #ifdef VERBOSE printf("RELEASING %p\n", ptr); #endif WMHashRemove(table, ptr); wfree(refcount); wfree(ptr); } #ifdef VERBOSE else { printf("- %i (%p)\n", *refcount, ptr); } #endif } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/findfile.c�����������������������������������������������������������������0000644�0001750�0001750�00000027100�13431646201�013641� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker miscelaneous function library * * Copyright (c) 1997-2003 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., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301, USA. */ #include "wconfig.h" #include "WUtil.h" #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <errno.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <pwd.h> #include <limits.h> #ifndef PATH_MAX #define PATH_MAX 1024 #endif char *wgethomedir() { static char *home = NULL; char *tmp; struct passwd *user; if (home) return home; #ifdef HAVE_SECURE_GETENV tmp = secure_getenv("HOME"); #else tmp = getenv("HOME"); #endif if (tmp) { home = wstrdup(tmp); return home; } user = getpwuid(getuid()); if (!user) { werror(_("could not get password entry for UID %i"), getuid()); home = "/"; return home; } if (!user->pw_dir) home = "/"; else home = wstrdup(user->pw_dir); return home; } /* * Return the home directory for the specified used * * If user not found, returns NULL, otherwise always returns a path that is * statically stored. * * Please note you must use the path before any other call to 'getpw*' or it * may be erased. This is a design choice to avoid duplication considering * the use case for this function. */ static const char *getuserhomedir(const char *username) { static const char default_home[] = "/"; struct passwd *user; user = getpwnam(username); if (!user) { werror(_("could not get password entry for user %s"), username); return NULL; } if (!user->pw_dir) return default_home; else return user->pw_dir; } char *wexpandpath(const char *path) { const char *origpath = path; char buffer2[PATH_MAX + 2]; char buffer[PATH_MAX + 2]; int i; memset(buffer, 0, PATH_MAX + 2); if (*path == '~') { const char *home; path++; if (*path == '/' || *path == 0) { home = wgethomedir(); if (strlen(home) > PATH_MAX || wstrlcpy(buffer, home, sizeof(buffer)) >= sizeof(buffer)) goto error; } else { int j; j = 0; while (*path != 0 && *path != '/') { if (j > PATH_MAX) goto error; buffer2[j++] = *path; buffer2[j] = 0; path++; } home = getuserhomedir(buffer2); if (!home || wstrlcat(buffer, home, sizeof(buffer)) >= sizeof(buffer)) goto error; } } i = strlen(buffer); while (*path != 0 && i <= PATH_MAX) { char *tmp; if (*path == '$') { int j; path++; /* expand $(HOME) or $HOME style environment variables */ if (*path == '(') { path++; j = 0; while (*path != 0 && *path != ')') { if (j > PATH_MAX) goto error; buffer2[j++] = *(path++); } buffer2[j] = 0; if (*path == ')') { path++; tmp = getenv(buffer2); } else { tmp = NULL; } if (!tmp) { if ((i += strlen(buffer2) + 2) > PATH_MAX) goto error; buffer[i] = 0; if (wstrlcat(buffer, "$(", sizeof(buffer)) >= sizeof(buffer) || wstrlcat(buffer, buffer2, sizeof(buffer)) >= sizeof(buffer)) goto error; if (*(path-1)==')') { if (++i > PATH_MAX || wstrlcat(buffer, ")", sizeof(buffer)) >= sizeof(buffer)) goto error; } } else { if ((i += strlen(tmp)) > PATH_MAX || wstrlcat(buffer, tmp, sizeof(buffer)) >= sizeof(buffer)) goto error; } } else { j = 0; while (*path != 0 && *path != '/') { if (j > PATH_MAX) goto error; buffer2[j++] = *(path++); } buffer2[j] = 0; tmp = getenv(buffer2); if (!tmp) { if ((i += strlen(buffer2) + 1) > PATH_MAX || wstrlcat(buffer, "$", sizeof(buffer)) >= sizeof(buffer) || wstrlcat(buffer, buffer2, sizeof(buffer)) >= sizeof(buffer)) goto error; } else { if ((i += strlen(tmp)) > PATH_MAX || wstrlcat(buffer, tmp, sizeof(buffer)) >= sizeof(buffer)) goto error; } } } else { buffer[i++] = *path; path++; } } if (*path!=0) goto error; return wstrdup(buffer); error: errno = ENAMETOOLONG; werror(_("could not expand %s"), origpath); return NULL; } /* return address of next char != tok or end of string whichever comes first */ static const char *skipchar(const char *string, char tok) { while (*string != 0 && *string == tok) string++; return string; } /* return address of next char == tok or end of string whichever comes first */ static const char *nextchar(const char *string, char tok) { while (*string != 0 && *string != tok) string++; return string; } /* *---------------------------------------------------------------------- * findfile-- * Finds a file in a : separated list of paths. ~ expansion is also * done. * * Returns: * The complete path for the file (in a newly allocated string) or * NULL if the file was not found. * * Side effects: * A new string is allocated. It must be freed later. * *---------------------------------------------------------------------- */ char *wfindfile(const char *paths, const char *file) { char *path; const char *tmp, *tmp2; int len, flen; char *fullpath; if (!file) return NULL; if (*file == '/' || *file == '~' || *file == '$' || !paths || *paths == 0) { if (access(file, F_OK) < 0) { fullpath = wexpandpath(file); if (!fullpath) return NULL; if (access(fullpath, F_OK) < 0) { wfree(fullpath); return NULL; } else { return fullpath; } } else { return wstrdup(file); } } flen = strlen(file); tmp = paths; while (*tmp) { tmp = skipchar(tmp, ':'); if (*tmp == 0) break; tmp2 = nextchar(tmp, ':'); len = tmp2 - tmp; path = wmalloc(len + flen + 2); path = memcpy(path, tmp, len); path[len] = 0; if (path[len - 1] != '/' && wstrlcat(path, "/", len + flen + 2) >= len + flen + 2) { wfree(path); return NULL; } if (wstrlcat(path, file, len + flen + 2) >= len + flen + 2) { wfree(path); return NULL; } fullpath = wexpandpath(path); wfree(path); if (fullpath) { if (access(fullpath, F_OK) == 0) { return fullpath; } wfree(fullpath); } tmp = tmp2; } return NULL; } char *wfindfileinlist(char *const *path_list, const char *file) { int i; char *path; int len, flen; char *fullpath; if (!file) return NULL; if (*file == '/' || *file == '~' || !path_list) { if (access(file, F_OK) < 0) { fullpath = wexpandpath(file); if (!fullpath) return NULL; if (access(fullpath, F_OK) < 0) { wfree(fullpath); return NULL; } else { return fullpath; } } else { return wstrdup(file); } } flen = strlen(file); for (i = 0; path_list[i] != NULL; i++) { len = strlen(path_list[i]); path = wmalloc(len + flen + 2); path = memcpy(path, path_list[i], len); path[len] = 0; if (wstrlcat(path, "/", len + flen + 2) >= len + flen + 2 || wstrlcat(path, file, len + flen + 2) >= len + flen + 2) { wfree(path); return NULL; } /* expand tilde */ fullpath = wexpandpath(path); wfree(path); if (fullpath) { /* check if file exists */ if (access(fullpath, F_OK) == 0) { return fullpath; } wfree(fullpath); } } return NULL; } char *wfindfileinarray(WMPropList *array, const char *file) { int i; char *path; int len, flen; char *fullpath; if (!file) return NULL; if (*file == '/' || *file == '~' || !array) { if (access(file, F_OK) < 0) { fullpath = wexpandpath(file); if (!fullpath) return NULL; if (access(fullpath, F_OK) < 0) { wfree(fullpath); return NULL; } else { return fullpath; } } else { return wstrdup(file); } } flen = strlen(file); for (i = 0; i < WMGetPropListItemCount(array); i++) { WMPropList *prop; char *p; prop = WMGetFromPLArray(array, i); if (!prop) continue; p = WMGetFromPLString(prop); len = strlen(p); path = wmalloc(len + flen + 2); path = memcpy(path, p, len); path[len] = 0; if (wstrlcat(path, "/", len + flen + 2) >= len + flen + 2 || wstrlcat(path, file, len + flen + 2) >= len + flen + 2) { wfree(path); return NULL; } /* expand tilde */ fullpath = wexpandpath(path); wfree(path); if (fullpath) { /* check if file exists */ if (access(fullpath, F_OK) == 0) { return fullpath; } wfree(fullpath); } } return NULL; } int wcopy_file(const char *dest_dir, const char *src_file, const char *dest_file) { char *path_dst; int fd_src, fd_dst; struct stat stat_src; mode_t permission_dst; const size_t buffer_size = 2 * 1024 * 1024; /* 4MB is a decent start choice to allow the OS to take advantage of modern disk's performance */ char *buffer; /* The buffer is not created on the stack to avoid possible stack overflow as our buffer is big */ try_again_src: fd_src = open(src_file, O_RDONLY | O_NOFOLLOW); if (fd_src == -1) { if (errno == EINTR) goto try_again_src; werror(_("Could not open input file \"%s\": %s"), src_file, strerror(errno)); return -1; } /* Only accept to copy regular files */ if (fstat(fd_src, &stat_src) != 0 || !S_ISREG(stat_src.st_mode)) { close(fd_src); return -1; } path_dst = wstrconcat(dest_dir, dest_file); try_again_dst: fd_dst = open(path_dst, O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR); if (fd_dst == -1) { if (errno == EINTR) goto try_again_dst; werror(_("Could not create target file \"%s\": %s"), path_dst, strerror(errno)); wfree(path_dst); close(fd_src); return -1; } buffer = malloc(buffer_size); /* Don't use wmalloc to avoid the memset(0) we don't need */ if (buffer == NULL) { werror(_("could not allocate memory for the copy buffer")); close(fd_dst); goto cleanup_and_return_failure; } for (;;) { ssize_t size_data; const char *write_ptr; size_t write_remain; try_again_read: size_data = read(fd_src, buffer, buffer_size); if (size_data == 0) break; /* End of File have been reached */ if (size_data < 0) { if (errno == EINTR) goto try_again_read; werror(_("could not read from file \"%s\": %s"), src_file, strerror(errno)); close(fd_dst); goto cleanup_and_return_failure; } write_ptr = buffer; write_remain = size_data; while (write_remain > 0) { ssize_t write_done; try_again_write: write_done = write(fd_dst, write_ptr, write_remain); if (write_done < 0) { if (errno == EINTR) goto try_again_write; werror(_("could not write data to file \"%s\": %s"), path_dst, strerror(errno)); close(fd_dst); goto cleanup_and_return_failure; } write_ptr += write_done; write_remain -= write_done; } } /* Keep only the permission-related part of the field: */ permission_dst = stat_src.st_mode & (S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX); if (fchmod(fd_dst, permission_dst) != 0) wwarning(_("could not set permission 0%03o on file \"%s\": %s"), permission_dst, path_dst, strerror(errno)); if (close(fd_dst) != 0) { werror(_("could not close the file \"%s\": %s"), path_dst, strerror(errno)); cleanup_and_return_failure: free(buffer); close(fd_src); unlink(path_dst); wfree(path_dst); return -1; } free(buffer); wfree(path_dst); close(fd_src); return 0; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/misc.c���������������������������������������������������������������������0000644�0001750�0001750�00000002237�13431646201�013020� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* WUtil / misc.c * * Copyright (c) 2001 Dan Pascu * Copyright (c) 2014 Window Maker Team * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ /* Miscelaneous helper functions */ #include <WUtil.h> #include "error.h" WMRange wmkrange(int start, int count) { WMRange range; range.position = start; range.count = count; return range; } /* * wutil_shutdown - cleanup in WUtil when user program wants to exit */ void wutil_shutdown(void) { #ifdef HAVE_SYSLOG w_syslog_close(); #endif } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Extras/��������������������������������������������������������������������0000755�0001750�0001750�00000000000�13642360104�013242� 5����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Extras/Makefile.in���������������������������������������������������������0000644�0001750�0001750�00000060425�13642360053�015241� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = test$(EXEEXT) subdir = WINGs/Extras ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ $(top_srcdir)/m4/ax_pthread.m4 \ $(top_srcdir)/m4/ld-version-script.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/windowmaker.m4 \ $(top_srcdir)/m4/wm_attributes.m4 \ $(top_srcdir)/m4/wm_cflags_check.m4 \ $(top_srcdir)/m4/wm_i18n.m4 \ $(top_srcdir)/m4/wm_imgfmt_check.m4 \ $(top_srcdir)/m4/wm_libexif.m4 $(top_srcdir)/m4/wm_libmath.m4 \ $(top_srcdir)/m4/wm_prog_cc_c11.m4 \ $(top_srcdir)/m4/wm_xext_check.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(include_HEADERS) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)" LTLIBRARIES = $(lib_LTLIBRARIES) libExtraWINGs_la_LIBADD = am_libExtraWINGs_la_OBJECTS = wtableview.lo wtabledelegates.lo libExtraWINGs_la_OBJECTS = $(am_libExtraWINGs_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = test_SOURCES = test.c test_OBJECTS = test.$(OBJEXT) am__DEPENDENCIES_1 = $(top_builddir)/WINGs/libWINGs.la \ $(top_builddir)/wrlib/libwraster.la \ $(top_builddir)/WINGs/libWUtil.la test_DEPENDENCIES = wtableview.o wtabledelegates.o \ $(am__DEPENDENCIES_1) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/test.Po \ ./$(DEPDIR)/wtabledelegates.Plo ./$(DEPDIR)/wtableview.Plo am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libExtraWINGs_la_SOURCES) test.c DIST_SOURCES = $(libExtraWINGs_la_SOURCES) test.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(include_HEADERS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ GFXLIBS = @GFXLIBS@ GREP = @GREP@ HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLIBS = @INTLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBBSD = @LIBBSD@ LIBEXIF = @LIBEXIF@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXINERAMA = @LIBXINERAMA@ LIBXMU = @LIBXMU@ LIBXRANDR = @LIBXRANDR@ LINGUAS = @LINGUAS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAGICKFLAGS = @MAGICKFLAGS@ MAGICKLIBS = @MAGICKLIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MANLANGDIRS = @MANLANGDIRS@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOLIBS = @PANGOLIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILMOFILES = @UTILMOFILES@ VERSION = @VERSION@ WINGSMOFILES = @WINGSMOFILES@ WINGS_VERSION = @WINGS_VERSION@ WMAKERMOFILES = @WMAKERMOFILES@ WPREFSMOFILES = @WPREFSMOFILES@ WRASTER_VERSION = @WRASTER_VERSION@ WUTIL_VERSION = @WUTIL_VERSION@ XCFLAGS = @XCFLAGS@ XFTCONFIG = @XFTCONFIG@ XFTFLAGS = @XFTFLAGS@ XFTLIBS = @XFTLIBS@ XGETTEXT = @XGETTEXT@ XLFLAGS = @XLFLAGS@ XLIBS = @XLIBS@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBRARY_PATH = @X_LIBRARY_PATH@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ defsdatadir = @defsdatadir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ inc_search_path = @inc_search_path@ # is this a kluge? if so, how should i do it? includedir = @includedir@/WINGs infodir = @infodir@ install_sh = @install_sh@ lcov_output_directory = @lcov_output_directory@ lib_search_path = @lib_search_path@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pixmapdir = @pixmapdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ wprefs_bindir = @wprefs_bindir@ wprefs_datadir = @wprefs_datadir@ AUTOMAKE_OPTIONS = include_HEADERS = wtableview.h wtabledelegates.h lib_LTLIBRARIES = libExtraWINGs.la EXTRA_DIST = libExtraWINGs_la_SOURCES = \ wtableview.c \ wtabledelegates.c \ wtableview.h \ wtabledelegates.h AM_CPPFLAGS = -I$(top_srcdir)/wrlib -I$(top_srcdir)/WINGs \ -DRESOURCE_PATH=\"$(datadir)/WINGs\" @HEADER_SEARCH_PATH@ LDADD = $(top_builddir)/WINGs/libWINGs.la $(top_builddir)/wrlib/libwraster.la \ $(top_builddir)/WINGs/libWUtil.la \ @XFTLIBS@ @INTLIBS@ test_LDADD = wtableview.o wtabledelegates.o $(LDADD) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu WINGs/Extras/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu WINGs/Extras/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libExtraWINGs.la: $(libExtraWINGs_la_OBJECTS) $(libExtraWINGs_la_DEPENDENCIES) $(EXTRA_libExtraWINGs_la_DEPENDENCIES) $(AM_V_CCLD)$(LINK) -rpath $(libdir) $(libExtraWINGs_la_OBJECTS) $(libExtraWINGs_la_LIBADD) $(LIBS) test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) @rm -f test$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wtabledelegates.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wtableview.Plo@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @echo '# dummy' >$@-t && $(am__mv) $@-t $@ am--depfiles: $(am__depfiles_remade) .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-includeHEADERS: $(include_HEADERS) @$(NORMAL_INSTALL) @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ done uninstall-includeHEADERS: @$(NORMAL_UNINSTALL) @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) $(LTLIBRARIES) $(HEADERS) installdirs: for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -f ./$(DEPDIR)/test.Po -rm -f ./$(DEPDIR)/wtabledelegates.Plo -rm -f ./$(DEPDIR)/wtableview.Plo -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-includeHEADERS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-libLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/test.Po -rm -f ./$(DEPDIR)/wtabledelegates.Plo -rm -f ./$(DEPDIR)/wtableview.Plo -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ clean-generic clean-libLTLIBRARIES clean-libtool \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-includeHEADERS install-info \ install-info-am install-libLTLIBRARIES install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am uninstall-includeHEADERS \ uninstall-libLTLIBRARIES .PRECIOUS: Makefile # 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. .NOEXPORT: �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Extras/wtabledelegates.c���������������������������������������������������0000644�0001750�0001750�00000040275�13431646201�016473� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include <stdint.h> #include <WINGs/WINGsP.h> #include "wtableview.h" #include "wtabledelegates.h" typedef struct { WMTableView *table; WMFont *font; GC gc; GC selGC; WMColor *textColor; } StringData; typedef struct { WMTableView *table; GC selGc; } PixmapData; typedef struct { WMTextField *widget; WMTableView *table; WMFont *font; GC gc; GC selGC; WMColor *textColor; } StringEditorData; typedef struct { WMPopUpButton *widget; WMTableView *table; WMFont *font; char **options; int count; GC gc; GC selGC; WMColor *textColor; } EnumSelectorData; typedef struct { WMButton *widget; WMTableView *table; Bool state; GC gc; GC selGC; } BooleanSwitchData; static char *SelectionColor = "#bbbbcc"; static void stringDraw(WMScreen * scr, Drawable d, GC gc, GC sgc, WMColor * textColor, WMFont * font, void *data, WMRect rect, Bool selected) { int x, y; XRectangle rects[1]; Display *dpy = WMScreenDisplay(scr); x = rect.pos.x + 5; y = rect.pos.y + (rect.size.height - WMFontHeight(font)) / 2; rects[0].x = rect.pos.x + 1; rects[0].y = rect.pos.y + 1; rects[0].width = rect.size.width - 1; rects[0].height = rect.size.height - 1; XSetClipRectangles(dpy, gc, 0, 0, rects, 1, YXSorted); if (!selected) { XFillRectangles(dpy, d, gc, rects, 1); WMDrawString(scr, d, textColor, font, x, y, data, strlen(data)); } else { XFillRectangles(dpy, d, sgc, rects, 1); WMDrawString(scr, d, textColor, font, x, y, data, strlen(data)); } XSetClipMask(dpy, gc, None); } static void pixmapDraw(WMScreen * scr, Drawable d, GC gc, GC sgc, WMPixmap * pixmap, WMRect rect, Bool selected) { int x, y; XRectangle rects[1]; Display *dpy = WMScreenDisplay(scr); WMSize size; rects[0].x = rect.pos.x + 1; rects[0].y = rect.pos.y + 1; rects[0].width = rect.size.width - 1; rects[0].height = rect.size.height - 1; XSetClipRectangles(dpy, gc, 0, 0, rects, 1, YXSorted); if (!selected) { XFillRectangles(dpy, d, gc, rects, 1); if (pixmap) { size = WMGetPixmapSize(pixmap); x = rect.pos.x + (rect.size.width - size.width) / 2; y = rect.pos.y + (rect.size.height - size.height) / 2; WMDrawPixmap(pixmap, d, x, y); } } else { XFillRectangles(dpy, d, sgc, rects, 1); if (pixmap) { size = WMGetPixmapSize(pixmap); x = rect.pos.x + (rect.size.width - size.width) / 2; y = rect.pos.y + (rect.size.height - size.height) / 2; WMDrawPixmap(pixmap, d, x, y); } } XSetClipMask(dpy, gc, None); } /* ---------------------------------------------------------------------- */ static void SECellPainter(WMTableColumnDelegate * self, WMTableColumn * column, int row, Drawable d) { StringEditorData *strdata = (StringEditorData *) self->data; WMTableView *table = WMGetTableColumnTableView(column); stringDraw(WMWidgetScreen(table), d, strdata->gc, strdata->selGC, strdata->textColor, strdata->font, WMTableViewDataForCell(table, column, row), WMTableViewRectForCell(table, column, row), False); } static void selectedSECellPainter(WMTableColumnDelegate * self, WMTableColumn * column, int row, Drawable d) { StringEditorData *strdata = (StringEditorData *) self->data; WMTableView *table = WMGetTableColumnTableView(column); stringDraw(WMWidgetScreen(table), d, strdata->gc, strdata->selGC, strdata->textColor, strdata->font, WMTableViewDataForCell(table, column, row), WMTableViewRectForCell(table, column, row), True); } static void beginSECellEdit(WMTableColumnDelegate * self, WMTableColumn * column, int row) { StringEditorData *strdata = (StringEditorData *) self->data; WMRect rect = WMTableViewRectForCell(strdata->table, column, row); void *data = WMTableViewDataForCell(strdata->table, column, row); WMSetTextFieldText(strdata->widget, (char *)data); WMMoveWidget(strdata->widget, rect.pos.x, rect.pos.y); WMResizeWidget(strdata->widget, rect.size.width + 1, rect.size.height + 1); WMMapWidget(strdata->widget); } static void endSECellEdit(WMTableColumnDelegate * self, WMTableColumn * column, int row) { StringEditorData *strdata = (StringEditorData *) self->data; char *text; WMUnmapWidget(strdata->widget); text = WMGetTextFieldText(strdata->widget); WMSetTableViewDataForCell(strdata->table, column, row, (void *)text); } WMTableColumnDelegate *WTCreateStringEditorDelegate(WMTableView * parent) { WMTableColumnDelegate *delegate = wmalloc(sizeof(WMTableColumnDelegate)); WMScreen *scr = WMWidgetScreen(parent); StringEditorData *data = wmalloc(sizeof(StringEditorData)); data->widget = WMCreateTextField(parent); W_ReparentView(WMWidgetView(data->widget), WMGetTableViewDocumentView(parent), 0, 0); data->table = parent; data->font = WMSystemFontOfSize(scr, 12); data->gc = WMColorGC(WMWhiteColor(scr)); data->selGC = WMColorGC(WMCreateNamedColor(scr, SelectionColor, False)); data->textColor = WMBlackColor(scr); delegate->data = data; delegate->drawCell = SECellPainter; delegate->drawSelectedCell = selectedSECellPainter; delegate->beginCellEdit = beginSECellEdit; delegate->endCellEdit = endSECellEdit; return delegate; } /* ---------------------------------------------------------------------- */ static void ESCellPainter(WMTableColumnDelegate * self, WMTableColumn * column, int row, Drawable d) { EnumSelectorData *strdata = (EnumSelectorData *) self->data; WMTableView *table = WMGetTableColumnTableView(column); uintptr_t i = (uintptr_t)WMTableViewDataForCell(table, column, row); stringDraw(WMWidgetScreen(table), d, strdata->gc, strdata->selGC, strdata->textColor, strdata->font, strdata->options[i], WMTableViewRectForCell(table, column, row), False); } static void selectedESCellPainter(WMTableColumnDelegate * self, WMTableColumn * column, int row, Drawable d) { EnumSelectorData *strdata = (EnumSelectorData *) self->data; WMTableView *table = WMGetTableColumnTableView(column); uintptr_t i = (uintptr_t)WMTableViewDataForCell(table, column, row); stringDraw(WMWidgetScreen(table), d, strdata->gc, strdata->selGC, strdata->textColor, strdata->font, strdata->options[i], WMTableViewRectForCell(table, column, row), True); } static void beginESCellEdit(WMTableColumnDelegate * self, WMTableColumn * column, int row) { EnumSelectorData *strdata = (EnumSelectorData *) self->data; WMRect rect = WMTableViewRectForCell(strdata->table, column, row); uintptr_t data = (uintptr_t)WMTableViewDataForCell(strdata->table, column, row); wassertr(data < strdata->count); WMSetPopUpButtonSelectedItem(strdata->widget, data); WMMoveWidget(strdata->widget, rect.pos.x, rect.pos.y); WMResizeWidget(strdata->widget, rect.size.width, rect.size.height + 1); WMMapWidget(strdata->widget); } static void endESCellEdit(WMTableColumnDelegate * self, WMTableColumn * column, int row) { EnumSelectorData *strdata = (EnumSelectorData *) self->data; int option; WMUnmapWidget(strdata->widget); option = WMGetPopUpButtonSelectedItem(strdata->widget); WMSetTableViewDataForCell(strdata->table, column, row, (void *)(uintptr_t) option); } WMTableColumnDelegate *WTCreateEnumSelectorDelegate(WMTableView * parent) { WMTableColumnDelegate *delegate = wmalloc(sizeof(WMTableColumnDelegate)); WMScreen *scr = WMWidgetScreen(parent); EnumSelectorData *data = wmalloc(sizeof(EnumSelectorData)); data->widget = WMCreatePopUpButton(parent); W_ReparentView(WMWidgetView(data->widget), WMGetTableViewDocumentView(parent), 0, 0); data->table = parent; data->font = WMSystemFontOfSize(scr, 12); data->gc = WMColorGC(WMWhiteColor(scr)); data->selGC = WMColorGC(WMCreateNamedColor(scr, SelectionColor, False)); data->textColor = WMBlackColor(scr); data->count = 0; data->options = NULL; delegate->data = data; delegate->drawCell = ESCellPainter; delegate->drawSelectedCell = selectedESCellPainter; delegate->beginCellEdit = beginESCellEdit; delegate->endCellEdit = endESCellEdit; return delegate; } void WTSetEnumSelectorOptions(WMTableColumnDelegate * delegate, char **options, int count) { EnumSelectorData *data = (EnumSelectorData *) delegate->data; int i; for (i = 0; i < WMGetPopUpButtonNumberOfItems(data->widget); i++) { WMRemovePopUpButtonItem(data->widget, 0); } data->options = options; data->count = count; for (i = 0; i < count; i++) { WMAddPopUpButtonItem(data->widget, options[i]); } } /* ---------------------------------------------------------------------- */ static void BSCellPainter(WMTableColumnDelegate * self, WMTableColumn * column, int row, Drawable d) { BooleanSwitchData *strdata = (BooleanSwitchData *) self->data; WMTableView *table = WMGetTableColumnTableView(column); uintptr_t i = (uintptr_t)WMTableViewDataForCell(table, column, row); WMScreen *scr = WMWidgetScreen(table); if (i) { pixmapDraw(scr, d, strdata->gc, strdata->selGC, WMGetSystemPixmap(scr, WSICheckMark), WMTableViewRectForCell(table, column, row), False); } else { pixmapDraw(scr, d, strdata->gc, strdata->selGC, NULL, WMTableViewRectForCell(table, column, row), False); } } static void selectedBSCellPainter(WMTableColumnDelegate * self, WMTableColumn * column, int row, Drawable d) { BooleanSwitchData *strdata = (BooleanSwitchData *) self->data; WMTableView *table = WMGetTableColumnTableView(column); uintptr_t i = (uintptr_t)WMTableViewDataForCell(table, column, row); WMScreen *scr = WMWidgetScreen(table); if (i) { pixmapDraw(scr, d, strdata->gc, strdata->selGC, WMGetSystemPixmap(scr, WSICheckMark), WMTableViewRectForCell(table, column, row), True); } else { pixmapDraw(scr, d, strdata->gc, strdata->selGC, NULL, WMTableViewRectForCell(table, column, row), True); } } static void beginBSCellEdit(WMTableColumnDelegate * self, WMTableColumn * column, int row) { BooleanSwitchData *strdata = (BooleanSwitchData *) self->data; WMRect rect = WMTableViewRectForCell(strdata->table, column, row); uintptr_t data = (uintptr_t)WMTableViewDataForCell(strdata->table, column, row); WMSetButtonSelected(strdata->widget, data); WMMoveWidget(strdata->widget, rect.pos.x + 1, rect.pos.y + 1); WMResizeWidget(strdata->widget, rect.size.width - 1, rect.size.height - 1); WMMapWidget(strdata->widget); } static void endBSCellEdit(WMTableColumnDelegate * self, WMTableColumn * column, int row) { BooleanSwitchData *strdata = (BooleanSwitchData *) self->data; int value; value = WMGetButtonSelected(strdata->widget); WMSetTableViewDataForCell(strdata->table, column, row, (void *)(uintptr_t) value); WMUnmapWidget(strdata->widget); } WMTableColumnDelegate *WTCreateBooleanSwitchDelegate(WMTableView * parent) { WMTableColumnDelegate *delegate = wmalloc(sizeof(WMTableColumnDelegate)); WMScreen *scr = WMWidgetScreen(parent); BooleanSwitchData *data = wmalloc(sizeof(BooleanSwitchData)); WMColor *color; data->widget = WMCreateSwitchButton(parent); W_ReparentView(WMWidgetView(data->widget), WMGetTableViewDocumentView(parent), 0, 0); WMSetButtonText(data->widget, NULL); WMSetButtonImagePosition(data->widget, WIPImageOnly); WMSetButtonImage(data->widget, NULL); WMSetButtonAltImage(data->widget, WMGetSystemPixmap(scr, WSICheckMark)); data->table = parent; color = WMCreateNamedColor(scr, SelectionColor, False); WMSetWidgetBackgroundColor(data->widget, color); data->gc = WMColorGC(WMWhiteColor(scr)); data->selGC = WMColorGC(color); delegate->data = data; delegate->drawCell = BSCellPainter; delegate->drawSelectedCell = selectedBSCellPainter; delegate->beginCellEdit = beginBSCellEdit; delegate->endCellEdit = endBSCellEdit; return delegate; } /* ---------------------------------------------------------------------- */ static void SCellPainter(WMTableColumnDelegate * self, WMTableColumn * column, int row, Drawable d) { StringData *strdata = (StringData *) self->data; WMTableView *table = WMGetTableColumnTableView(column); stringDraw(WMWidgetScreen(table), d, strdata->gc, strdata->selGC, strdata->textColor, strdata->font, WMTableViewDataForCell(table, column, row), WMTableViewRectForCell(table, column, row), False); } static void selectedSCellPainter(WMTableColumnDelegate * self, WMTableColumn * column, int row, Drawable d) { StringData *strdata = (StringData *) self->data; WMTableView *table = WMGetTableColumnTableView(column); stringDraw(WMWidgetScreen(table), d, strdata->gc, strdata->selGC, strdata->textColor, strdata->font, WMTableViewDataForCell(table, column, row), WMTableViewRectForCell(table, column, row), True); } WMTableColumnDelegate *WTCreateStringDelegate(WMTableView * parent) { WMTableColumnDelegate *delegate = wmalloc(sizeof(WMTableColumnDelegate)); WMScreen *scr = WMWidgetScreen(parent); StringData *data = wmalloc(sizeof(StringData)); data->table = parent; data->font = WMSystemFontOfSize(scr, 12); data->gc = WMColorGC(WMWhiteColor(scr)); data->selGC = WMColorGC(WMCreateNamedColor(scr, SelectionColor, False)); data->textColor = WMBlackColor(scr); delegate->data = data; delegate->drawCell = SCellPainter; delegate->drawSelectedCell = selectedSCellPainter; delegate->beginCellEdit = NULL; delegate->endCellEdit = NULL; return delegate; } /* ---------------------------------------------------------------------- */ static void PCellPainter(WMTableColumnDelegate * self, WMTableColumn * column, int row, Drawable d) { StringData *strdata = (StringData *) self->data; WMTableView *table = WMGetTableColumnTableView(column); pixmapDraw(WMWidgetScreen(table), d, strdata->gc, strdata->selGC, (WMPixmap *) WMTableViewDataForCell(table, column, row), WMTableViewRectForCell(table, column, row), False); } static void selectedPCellPainter(WMTableColumnDelegate * self, WMTableColumn * column, int row, Drawable d) { StringData *strdata = (StringData *) self->data; WMTableView *table = WMGetTableColumnTableView(column); pixmapDraw(WMWidgetScreen(table), d, strdata->gc, strdata->selGC, (WMPixmap *) WMTableViewDataForCell(table, column, row), WMTableViewRectForCell(table, column, row), True); } WMTableColumnDelegate *WTCreatePixmapDelegate(WMTableView * table) { WMTableColumnDelegate *delegate = wmalloc(sizeof(WMTableColumnDelegate)); WMScreen *scr = WMWidgetScreen(table); StringData *data = wmalloc(sizeof(StringData)); data->table = table; data->gc = WMColorGC(WMWhiteColor(scr)); data->selGC = WMColorGC(WMCreateNamedColor(scr, SelectionColor, False)); delegate->data = data; delegate->drawCell = PCellPainter; delegate->drawSelectedCell = selectedPCellPainter; delegate->beginCellEdit = NULL; delegate->endCellEdit = NULL; return delegate; } /* ---------------------------------------------------------------------- */ static void drawPSCell(WMTableColumnDelegate * self, Drawable d, WMTableColumn * column, int row, Bool selected) { StringData *strdata = (StringData *) self->data; WMTableView *table = WMGetTableColumnTableView(column); void **data; WMPixmap *pix; char *str; WMRect rect; WMSize size; data = WMTableViewDataForCell(table, column, row); str = (char *)data[0]; pix = (WMPixmap *) data[1]; rect = WMTableViewRectForCell(table, column, row); if (pix) { int owidth = rect.size.width; size = WMGetPixmapSize(pix); rect.size.width = size.width; pixmapDraw(WMWidgetScreen(table), WMViewXID(WMGetTableViewDocumentView(table)), strdata->gc, strdata->selGC, pix, rect, selected); rect.pos.x += size.width - 1; rect.size.width = owidth - size.width + 1; } stringDraw(WMWidgetScreen(table), d, strdata->gc, strdata->selGC, strdata->textColor, strdata->font, str, rect, selected); } static void PSCellPainter(WMTableColumnDelegate * self, WMTableColumn * column, int row, Drawable d) { drawPSCell(self, d, column, row, False); } static void selectedPSCellPainter(WMTableColumnDelegate * self, WMTableColumn * column, int row, Drawable d) { drawPSCell(self, d, column, row, True); } WMTableColumnDelegate *WTCreatePixmapStringDelegate(WMTableView * parent) { WMTableColumnDelegate *delegate = wmalloc(sizeof(WMTableColumnDelegate)); WMScreen *scr = WMWidgetScreen(parent); StringData *data = wmalloc(sizeof(StringData)); data->table = parent; data->font = WMSystemFontOfSize(scr, 12); data->gc = WMColorGC(WMWhiteColor(scr)); data->selGC = WMColorGC(WMCreateNamedColor(scr, SelectionColor, False)); data->textColor = WMBlackColor(scr); delegate->data = data; delegate->drawCell = PSCellPainter; delegate->drawSelectedCell = selectedPSCellPainter; delegate->beginCellEdit = NULL; delegate->endCellEdit = NULL; return delegate; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Extras/wtabledelegates.h���������������������������������������������������0000644�0001750�0001750�00000001276�13431646201�016476� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #ifndef _TABLEDELEGATES_H_ #define _TABLEDELEGATES_H_ #ifdef __cplusplus extern "C" { #endif WMTableColumnDelegate *WTCreatePixmapDelegate(WMTableView *table); WMTableColumnDelegate *WTCreateStringDelegate(WMTableView *table); WMTableColumnDelegate *WTCreatePixmapStringDelegate(WMTableView *parent); WMTableColumnDelegate *WTCreateStringEditorDelegate(WMTableView *table); WMTableColumnDelegate *WTCreateEnumSelectorDelegate(WMTableView *table); void WTSetEnumSelectorOptions(WMTableColumnDelegate *delegate, char **options, int count); WMTableColumnDelegate *WTCreateBooleanSwitchDelegate(WMTableView *parent); #ifdef __cplusplus } #endif #endif ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Extras/.deps/��������������������������������������������������������������0000755�0001750�0001750�00000000000�13642360104�014253� 5����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Extras/.deps/wtableview.Plo������������������������������������������������0000644�0001750�0001750�00000000010�13642360104�017007� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# dummy ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Extras/.deps/test.Po�������������������������������������������������������0000644�0001750�0001750�00000000010�13642360104�015441� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# dummy ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Extras/.deps/wtabledelegates.Plo�������������������������������������������0000644�0001750�0001750�00000000010�13642360104�017772� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# dummy ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Extras/wtableview.h��������������������������������������������������������0000644�0001750�0001750�00000006631�13431646201�015513� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #ifndef _WTABLEVIEW_H_ #define _WTABLEVIEW_H_ #ifdef __cplusplus extern "C" { #endif typedef struct W_TableColumn WMTableColumn; typedef struct W_TableView WMTableView; extern const char *WMTableViewSelectionDidChangeNotification; typedef struct WMTableColumnDelegate { void *data; void (*drawCell)(struct WMTableColumnDelegate *self, WMTableColumn *column, int row, Drawable d); void (*drawSelectedCell)(struct WMTableColumnDelegate *self, WMTableColumn *column, int row, Drawable d); void (*beginCellEdit)(struct WMTableColumnDelegate *self, WMTableColumn *column, int row); void (*endCellEdit)(struct WMTableColumnDelegate *self, WMTableColumn *column, int row); } WMTableColumnDelegate; typedef struct W_TableViewDelegate { void *data; int (*numberOfRows)(struct W_TableViewDelegate *self, WMTableView *table); void *(*valueForCell)(struct W_TableViewDelegate *self, WMTableColumn *column, int row); void (*setValueForCell)(struct W_TableViewDelegate *self, WMTableColumn *column, int row, void *value); } WMTableViewDelegate; WMTableColumn *WMCreateTableColumn(char *title); void WMSetTableColumnWidth(WMTableColumn *column, unsigned width); void WMSetTableColumnConstraints(WMTableColumn *column, unsigned minWidth, unsigned maxWidth); void WMSetTableColumnDelegate(WMTableColumn *column, WMTableColumnDelegate *delegate); WMTableView *WMGetTableColumnTableView(WMTableColumn *column); void WMSetTableColumnId(WMTableColumn *column, void *id); void *WMGetTableColumnId(WMTableColumn *column); WMTableView *WMCreateTableView(WMWidget *parent); void WMSetTableViewDataSource(WMTableView *table, void *source); void *WMGetTableViewDataSource(WMTableView *table); void WMSetTableViewHeaderHeight(WMTableView *table, unsigned height); void WMAddTableViewColumn(WMTableView *table, WMTableColumn *column); void WMSetTableViewDelegate(WMTableView *table, WMTableViewDelegate *delegate); void WMSetTableViewAction(WMTableView *table, WMAction *action, void *clientData); void *WMGetTableViewClickedColumn(WMTableView *table); int WMGetTableViewClickedRow(WMTableView *table); WMArray *WMGetTableViewSelectedRows(WMTableView *table); WMView *WMGetTableViewDocumentView(WMTableView *table); void WMEditTableViewRow(WMTableView *table, int row); void WMSelectTableViewRow(WMTableView *table, int row); void *WMTableViewDataForCell(WMTableView *table, WMTableColumn *column, int row); void WMSetTableViewDataForCell(WMTableView *table, WMTableColumn *column, int row, void *data); WMRect WMTableViewRectForCell(WMTableView *table, WMTableColumn *column, int row); void WMSetTableViewBackgroundColor(WMTableView *table, WMColor *color); void WMSetTableViewGridColor(WMTableView *table, WMColor *color); void WMSetTableViewRowHeight(WMTableView *table, int height); void WMReloadTableView(WMTableView *table); void WMNoteTableViewNumberOfRowsChanged(WMTableView *table); void WMScrollTableViewRowToVisible(WMTableView *table, int row); void WMSetTableViewHasHorizontalScroller(WMTableView *tPtr, Bool flag); #ifdef __cplusplus } #endif #endif �������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Extras/wtableview.c��������������������������������������������������������0000644�0001750�0001750�00000070177�13431646201�015514� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include <WINGs/WINGsP.h> #include <X11/cursorfont.h> #include <stdint.h> #include "wtableview.h" const char *WMTableViewSelectionDidChangeNotification = "WMTableViewSelectionDidChangeNotification"; struct W_TableColumn { WMTableView *table; WMWidget *titleW; char *title; int width; int minWidth; int maxWidth; void *id; WMTableColumnDelegate *delegate; unsigned resizable:1; unsigned editable:1; }; static void handleResize(W_ViewDelegate * self, WMView * view); static void rearrangeHeader(WMTableView * table); static WMRange rowsInRect(WMTableView * table, WMRect rect); WMTableColumn *WMCreateTableColumn(char *title) { WMTableColumn *col = wmalloc(sizeof(WMTableColumn)); col->table = NULL; col->titleW = NULL; col->width = 50; col->minWidth = 5; col->maxWidth = 0; col->id = NULL; col->title = wstrdup(title); col->delegate = NULL; col->resizable = 1; col->editable = 0; return col; } void WMSetTableColumnId(WMTableColumn * column, void *id) { column->id = id; } void *WMGetTableColumnId(WMTableColumn * column) { return column->id; } void WMSetTableColumnWidth(WMTableColumn * column, unsigned width) { if (column->maxWidth == 0) column->width = WMAX(column->minWidth, width); else column->width = WMAX(column->minWidth, WMIN(column->maxWidth, width)); if (column->table) { rearrangeHeader(column->table); } } void WMSetTableColumnDelegate(WMTableColumn * column, WMTableColumnDelegate * delegate) { column->delegate = delegate; } void WMSetTableColumnConstraints(WMTableColumn * column, unsigned minWidth, unsigned maxWidth) { wassertr(maxWidth == 0 || minWidth <= maxWidth); column->minWidth = minWidth; column->maxWidth = maxWidth; if (column->width < column->minWidth) WMSetTableColumnWidth(column, column->minWidth); else if (column->width > column->maxWidth && column->maxWidth != 0) WMSetTableColumnWidth(column, column->maxWidth); } void WMSetTableColumnEditable(WMTableColumn * column, Bool flag) { column->editable = ((flag == 0) ? 0 : 1); } WMTableView *WMGetTableColumnTableView(WMTableColumn * column) { return column->table; } struct W_TableView { W_Class widgetClass; WMView *view; WMFrame *header; WMLabel *corner; WMScroller *hscroll; WMScroller *vscroll; WMView *tableView; WMPixmap *viewBuffer; WMArray *columns; WMArray *splitters; WMArray *selectedRows; int tableWidth; int rows; WMColor *backColor; GC gridGC; WMColor *gridColor; Cursor splitterCursor; void *dataSource; WMTableViewDelegate *delegate; WMAction *action; void *clientData; void *clickedColumn; int clickedRow; int editingRow; unsigned headerHeight; unsigned rowHeight; unsigned dragging:1; unsigned drawsGrid:1; unsigned canSelectRow:1; unsigned canSelectMultiRows:1; unsigned canDeselectRow:1; unsigned int hasVScroller:1; unsigned int hasHScroller:1; }; static W_Class tableClass = 0; static W_ViewDelegate viewDelegate = { NULL, NULL, handleResize, NULL, NULL }; static void reorganizeInterior(WMTableView * table); static void handleEvents(XEvent * event, void *data); static void handleTableEvents(XEvent * event, void *data); static void repaintTable(WMTableView * table); static WMSize getTotalSize(WMTableView * table) { WMSize size; int i; /* get width from columns */ size.width = 0; for (i = 0; i < WMGetArrayItemCount(table->columns); i++) { WMTableColumn *column; column = WMGetFromArray(table->columns, i); size.width += column->width; } /* get height from rows */ size.height = table->rows * table->rowHeight; return size; } static WMRect getVisibleRect(WMTableView * table) { WMSize size = getTotalSize(table); WMRect rect; if (table->vscroll) { rect.size.height = size.height * WMGetScrollerKnobProportion(table->vscroll); rect.pos.y = (size.height - rect.size.height) * WMGetScrollerValue(table->vscroll); } else { rect.size.height = size.height; rect.pos.y = 0; } if (table->hscroll) { rect.size.width = size.width * WMGetScrollerKnobProportion(table->hscroll); rect.pos.x = (size.width - rect.size.width) * WMGetScrollerValue(table->hscroll); } else { rect.size.width = size.width; rect.pos.x = 0; } return rect; } static void scrollToPoint(WMTableView * table, int x, int y) { WMSize size = getTotalSize(table); int i; float value, prop; if (table->hscroll) { if (size.width > W_VIEW_WIDTH(table->tableView)) { prop = (float)W_VIEW_WIDTH(table->tableView) / (float)size.width; value = (float)x / (float)(size.width - W_VIEW_WIDTH(table->tableView)); } else { prop = 1.0; value = 0.0; } WMSetScrollerParameters(table->hscroll, value, prop); } if (table->vscroll) { if (size.height > W_VIEW_HEIGHT(table->tableView)) { prop = (float)W_VIEW_HEIGHT(table->tableView) / (float)size.height; value = (float)y / (float)(size.height - W_VIEW_HEIGHT(table->tableView)); } else { prop = 1.0; value = 0.0; } WMSetScrollerParameters(table->vscroll, value, prop); } if (table->editingRow >= 0) { for (i = 0; i < WMGetArrayItemCount(table->columns); i++) { WMTableColumn *column; column = WMGetFromArray(table->columns, i); if (column->delegate && column->delegate->beginCellEdit) (*column->delegate->beginCellEdit) (column->delegate, column, table->editingRow); } } repaintTable(table); } static void adjustScrollers(WMTableView * table) { WMSize size = getTotalSize(table); WMSize vsize = WMGetViewSize(table->tableView); float prop, value; float oprop, ovalue; if (table->hscroll) { if (size.width <= vsize.width) { value = 0.0; prop = 1.0; } else { oprop = WMGetScrollerKnobProportion(table->hscroll); if (oprop == 0.0) oprop = 1.0; ovalue = WMGetScrollerValue(table->hscroll); prop = (float)vsize.width / (float)size.width; value = prop * ovalue / oprop; } WMSetScrollerParameters(table->hscroll, value, prop); } if (table->vscroll) { if (size.height <= vsize.height) { value = 0.0; prop = 1.0; } else { oprop = WMGetScrollerKnobProportion(table->vscroll); if (oprop == 0.0) oprop = 1.0; ovalue = WMGetScrollerValue(table->vscroll); prop = (float)vsize.height / (float)size.height; value = prop * ovalue / oprop; } WMSetScrollerParameters(table->vscroll, value, prop); } } static void doScroll(WMWidget * self, void *data) { WMTableView *table = (WMTableView *) data; float value; float vpsize; float size; WMSize ts = getTotalSize(table); value = WMGetScrollerValue(self); if (table->hscroll == (WMScroller *) self) { vpsize = W_VIEW_WIDTH(table->tableView); size = ts.width; } else { vpsize = W_VIEW_HEIGHT(table->tableView); size = ts.height; } switch (WMGetScrollerHitPart(self)) { case WSDecrementWheel: case WSDecrementLine: value -= (float)table->rowHeight / size; if (value < 0) value = 0.0; WMSetScrollerParameters(self, value, WMGetScrollerKnobProportion(self)); repaintTable(table); break; case WSIncrementWheel: case WSIncrementLine: value += (float)table->rowHeight / size; if (value > 1.0) value = 1.0; WMSetScrollerParameters(self, value, WMGetScrollerKnobProportion(self)); repaintTable(table); break; case WSKnob: repaintTable(table); break; case WSDecrementPage: value -= vpsize / size; if (value < 0.0) value = 0.0; WMSetScrollerParameters(self, value, WMGetScrollerKnobProportion(self)); repaintTable(table); break; case WSIncrementPage: value += vpsize / size; if (value > 1.0) value = 1.0; WMSetScrollerParameters(self, value, WMGetScrollerKnobProportion(self)); repaintTable(table); break; case WSNoPart: case WSKnobSlot: break; } if (table->editingRow >= 0) { int i; for (i = 0; i < WMGetArrayItemCount(table->columns); i++) { WMTableColumn *column; column = WMGetFromArray(table->columns, i); if (column->delegate && column->delegate->beginCellEdit) (*column->delegate->beginCellEdit) (column->delegate, column, table->editingRow); } } if (table->hscroll == self) { int x = 0; int i; WMRect rect = getVisibleRect(table); for (i = 0; i < WMGetArrayItemCount(table->columns); i++) { WMTableColumn *column; WMView *splitter; column = WMGetFromArray(table->columns, i); WMMoveWidget(column->titleW, x - rect.pos.x, 0); x += W_VIEW_WIDTH(WMWidgetView(column->titleW)) + 1; splitter = WMGetFromArray(table->splitters, i); W_MoveView(splitter, x - rect.pos.x - 1, 0); } } } static void splitterHandler(XEvent * event, void *data) { WMTableColumn *column = (WMTableColumn *) data; WMTableView *table = column->table; int done = 0; int cx, ox, offsX; WMPoint pos; WMScreen *scr = WMWidgetScreen(table); GC gc = scr->ixorGC; Display *dpy = WMScreenDisplay(scr); int h = WMWidgetHeight(table) - 22; Window w = WMViewXID(table->view); pos = WMGetViewPosition(WMWidgetView(column->titleW)); offsX = pos.x + column->width; ox = cx = offsX; XDrawLine(dpy, w, gc, cx + 20, 0, cx + 20, h); while (!done) { XEvent ev; WMMaskEvent(dpy, ButtonMotionMask | ButtonReleaseMask, &ev); switch (ev.type) { case MotionNotify: ox = cx; if (column->width + ev.xmotion.x < column->minWidth) cx = pos.x + column->minWidth; else if (column->maxWidth > 0 && column->width + ev.xmotion.x > column->maxWidth) cx = pos.x + column->maxWidth; else cx = offsX + ev.xmotion.x; XDrawLine(dpy, w, gc, ox + 20, 0, ox + 20, h); XDrawLine(dpy, w, gc, cx + 20, 0, cx + 20, h); break; case ButtonRelease: column->width = cx - pos.x; done = 1; break; } } XDrawLine(dpy, w, gc, cx + 20, 0, cx + 20, h); rearrangeHeader(table); repaintTable(table); } static void realizeTable(void *data, WMNotification * notif) { repaintTable(data); } WMTableView *WMCreateTableView(WMWidget * parent) { WMTableView *table = wmalloc(sizeof(WMTableView)); WMScreen *scr = WMWidgetScreen(parent); memset(table, 0, sizeof(WMTableView)); if (!tableClass) { tableClass = W_RegisterUserWidget(); } table->widgetClass = tableClass; table->view = W_CreateView(W_VIEW(parent)); if (!table->view) goto error; table->view->self = table; table->view->delegate = &viewDelegate; table->headerHeight = 20; table->hscroll = WMCreateScroller(table); WMSetScrollerAction(table->hscroll, doScroll, table); WMMoveWidget(table->hscroll, 1, 2 + table->headerHeight); WMMapWidget(table->hscroll); table->hasHScroller = 1; table->vscroll = WMCreateScroller(table); WMSetScrollerArrowsPosition(table->vscroll, WSAMaxEnd); WMSetScrollerAction(table->vscroll, doScroll, table); WMMoveWidget(table->vscroll, 1, 2 + table->headerHeight); WMMapWidget(table->vscroll); table->hasVScroller = 1; table->header = WMCreateFrame(table); WMMoveWidget(table->header, 22, 2); WMMapWidget(table->header); WMSetFrameRelief(table->header, WRFlat); table->corner = WMCreateLabel(table); WMResizeWidget(table->corner, 20, table->headerHeight); WMMoveWidget(table->corner, 2, 2); WMMapWidget(table->corner); WMSetLabelRelief(table->corner, WRRaised); WMSetWidgetBackgroundColor(table->corner, scr->darkGray); table->tableView = W_CreateView(table->view); if (!table->tableView) goto error; table->tableView->self = table; W_MapView(table->tableView); WMAddNotificationObserver(realizeTable, table, WMViewRealizedNotification, table->tableView); table->tableView->flags.dontCompressExpose = 1; table->gridColor = WMCreateNamedColor(scr, "#cccccc", False); /* table->gridColor = WMGrayColor(scr); */ { XGCValues gcv; table->backColor = WMWhiteColor(scr); gcv.foreground = WMColorPixel(table->gridColor); gcv.dashes = 1; gcv.line_style = LineOnOffDash; table->gridGC = XCreateGC(WMScreenDisplay(scr), W_DRAWABLE(scr), GCForeground, &gcv); } table->editingRow = -1; table->clickedRow = -1; table->drawsGrid = 1; table->rowHeight = 16; table->tableWidth = 1; table->columns = WMCreateArray(4); table->splitters = WMCreateArray(4); table->selectedRows = WMCreateArray(16); table->splitterCursor = XCreateFontCursor(WMScreenDisplay(scr), XC_sb_h_double_arrow); table->canSelectRow = 1; WMCreateEventHandler(table->view, ExposureMask | StructureNotifyMask, handleEvents, table); WMCreateEventHandler(table->tableView, ExposureMask | ButtonPressMask | ButtonReleaseMask | ButtonMotionMask, handleTableEvents, table); WMResizeWidget(table, 50, 50); return table; error: if (table->tableView) W_DestroyView(table->tableView); if (table->view) W_DestroyView(table->view); wfree(table); return NULL; } void WMAddTableViewColumn(WMTableView * table, WMTableColumn * column) { WMScreen *scr = WMWidgetScreen(table); column->table = table; WMAddToArray(table->columns, column); if (!column->titleW) { column->titleW = WMCreateLabel(table); WMSetLabelRelief(column->titleW, WRRaised); WMSetLabelFont(column->titleW, scr->boldFont); WMSetLabelTextColor(column->titleW, scr->white); WMSetWidgetBackgroundColor(column->titleW, scr->darkGray); WMSetLabelText(column->titleW, column->title); W_ReparentView(WMWidgetView(column->titleW), WMWidgetView(table->header), 0, 0); if (W_VIEW_REALIZED(table->view)) WMRealizeWidget(column->titleW); WMMapWidget(column->titleW); } { WMView *splitter = W_CreateView(WMWidgetView(table->header)); W_SetViewBackgroundColor(splitter, WMWhiteColor(scr)); if (W_VIEW_REALIZED(table->view)) W_RealizeView(splitter); W_ResizeView(splitter, 2, table->headerHeight); W_MapView(splitter); W_SetViewCursor(splitter, table->splitterCursor); WMCreateEventHandler(splitter, ButtonPressMask | ButtonReleaseMask, splitterHandler, column); WMAddToArray(table->splitters, splitter); } rearrangeHeader(table); } void WMSetTableViewHeaderHeight(WMTableView * table, unsigned height) { table->headerHeight = height; handleResize(NULL, table->view); } void WMSetTableViewDelegate(WMTableView * table, WMTableViewDelegate * delegate) { table->delegate = delegate; } void WMSetTableViewAction(WMTableView * table, WMAction * action, void *clientData) { table->action = action; table->clientData = clientData; } void *WMGetTableViewClickedColumn(WMTableView * table) { return table->clickedColumn; } int WMGetTableViewClickedRow(WMTableView * table) { return table->clickedRow; } WMArray *WMGetTableViewSelectedRows(WMTableView * table) { return table->selectedRows; } WMView *WMGetTableViewDocumentView(WMTableView * table) { return table->tableView; } void *WMTableViewDataForCell(WMTableView * table, WMTableColumn * column, int row) { return (*table->delegate->valueForCell) (table->delegate, column, row); } void WMSetTableViewDataForCell(WMTableView * table, WMTableColumn * column, int row, void *data) { (*table->delegate->setValueForCell) (table->delegate, column, row, data); } WMRect WMTableViewRectForCell(WMTableView * table, WMTableColumn * column, int row) { WMRect rect; int i; rect.pos.x = 0; rect.pos.y = row * table->rowHeight; rect.size.height = table->rowHeight; for (i = 0; i < WMGetArrayItemCount(table->columns); i++) { WMTableColumn *col; col = WMGetFromArray(table->columns, i); if (col == column) { rect.size.width = col->width; break; } rect.pos.x += col->width; } { WMRect r = getVisibleRect(table); rect.pos.y -= r.pos.y; rect.pos.x -= r.pos.x; } return rect; } void WMSetTableViewDataSource(WMTableView * table, void *source) { table->dataSource = source; } void *WMGetTableViewDataSource(WMTableView * table) { return table->dataSource; } void WMSetTableViewHasHorizontalScroller(WMTableView * tPtr, Bool flag) { if (flag) { if (tPtr->hasHScroller) return; tPtr->hasHScroller = 1; tPtr->hscroll = WMCreateScroller(tPtr); WMSetScrollerAction(tPtr->hscroll, doScroll, tPtr); WMSetScrollerArrowsPosition(tPtr->hscroll, WSAMaxEnd); /* make it a horiz. scroller */ WMResizeWidget(tPtr->hscroll, 1, 2); if (W_VIEW_REALIZED(tPtr->view)) { WMRealizeWidget(tPtr->hscroll); } reorganizeInterior(tPtr); WMMapWidget(tPtr->hscroll); } else { if (!tPtr->hasHScroller) return; tPtr->hasHScroller = 0; WMUnmapWidget(tPtr->hscroll); WMDestroyWidget(tPtr->hscroll); tPtr->hscroll = NULL; reorganizeInterior(tPtr); } } #if 0 /* not supported by now */ void WMSetTableViewHasVerticalScroller(WMTableView * tPtr, Bool flag) { if (flag) { if (tPtr->hasVScroller) return; tPtr->hasVScroller = 1; tPtr->vscroll = WMCreateScroller(tPtr); WMSetScrollerAction(tPtr->vscroll, doScroll, tPtr); WMSetScrollerArrowsPosition(tPtr->vscroll, WSAMaxEnd); /* make it a vert. scroller */ WMResizeWidget(tPtr->vscroll, 1, 2); if (W_VIEW_REALIZED(tPtr->view)) { WMRealizeWidget(tPtr->vscroll); } reorganizeInterior(tPtr); WMMapWidget(tPtr->vscroll); } else { if (!tPtr->hasVScroller) return; tPtr->hasVScroller = 0; WMUnmapWidget(tPtr->vscroll); WMDestroyWidget(tPtr->vscroll); tPtr->vscroll = NULL; reorganizeInterior(tPtr); } } #endif void WMSetTableViewBackgroundColor(WMTableView * table, WMColor * color) { W_SetViewBackgroundColor(table->tableView, color); if (table->backColor) WMReleaseColor(table->backColor); table->backColor = WMRetainColor(color); repaintTable(table); } void WMSetTableViewGridColor(WMTableView * table, WMColor * color) { WMReleaseColor(table->gridColor); table->gridColor = WMRetainColor(color); XSetForeground(WMScreenDisplay(WMWidgetScreen(table)), table->gridGC, WMColorPixel(color)); repaintTable(table); } void WMSetTableViewRowHeight(WMTableView * table, int height) { table->rowHeight = height; repaintTable(table); } void WMScrollTableViewRowToVisible(WMTableView * table, int row) { WMScroller *scroller; WMRange range; WMRect rect; int newY, tmp; rect = getVisibleRect(table); range = rowsInRect(table, rect); scroller = table->vscroll; if (row < range.position) { newY = row * table->rowHeight - rect.size.height / 2; } else if (row >= range.position + range.count) { newY = row * table->rowHeight - rect.size.height / 2; } else { return; } tmp = table->rows * table->rowHeight - rect.size.height; newY = WMAX(0, WMIN(newY, tmp)); scrollToPoint(table, rect.pos.x, newY); } static void drawGrid(WMTableView * table, WMRect rect) { WMScreen *scr = WMWidgetScreen(table); Display *dpy = WMScreenDisplay(scr); int i; int y1, y2; int x1, x2; int xx; Drawable d = WMGetPixmapXID(table->viewBuffer); GC gc = table->gridGC; #if 0 char dashl[1] = { 1 }; XSetDashes(dpy, gc, 0, dashl, 1); y1 = (rect.pos.y / table->rowHeight - 1) * table->rowHeight; y2 = y1 + (rect.size.height / table->rowHeight + 2) * table->rowHeight; #endif y1 = 0; y2 = W_VIEW_HEIGHT(table->tableView); xx = -rect.pos.x; for (i = 0; i < WMGetArrayItemCount(table->columns); i++) { WMTableColumn *column; XDrawLine(dpy, d, gc, xx, y1, xx, y2); column = WMGetFromArray(table->columns, i); xx += column->width; } XDrawLine(dpy, d, gc, xx, y1, xx, y2); x1 = 0; x2 = rect.size.width; if (x2 <= x1) return; #if 0 XSetDashes(dpy, gc, (rect.pos.x & 1), dashl, 1); #endif y1 = -rect.pos.y % table->rowHeight; y2 = y1 + rect.size.height + table->rowHeight; for (i = y1; i <= y2; i += table->rowHeight) { XDrawLine(dpy, d, gc, x1, i, x2, i); } } static WMRange columnsInRect(WMTableView * table, WMRect rect) { WMTableColumn *column; int pos; int i, found; int totalColumns = WMGetArrayItemCount(table->columns); WMRange range; pos = 0; found = 0; for (i = 0; i < totalColumns; i++) { column = WMGetFromArray(table->columns, i); if (!found) { if (rect.pos.x >= pos && rect.pos.x < pos + column->width) { range.position = i; range.count = 1; found = 1; } } else { if (pos > rect.pos.x + rect.size.width) { break; } range.count++; } pos += column->width; } range.count = WMAX(1, WMIN(range.count, totalColumns - range.position)); return range; } static WMRange rowsInRect(WMTableView * table, WMRect rect) { WMRange range; int rh = table->rowHeight; int dif; dif = rect.pos.y % rh; range.position = WMAX(0, (rect.pos.y - dif) / rh); range.count = WMAX(1, WMIN((rect.size.height + dif) / rh, table->rows)); return range; } static void drawRow(WMTableView * table, int row, WMRect clipRect) { int i; WMRange cols = columnsInRect(table, clipRect); WMTableColumn *column; Drawable d = WMGetPixmapXID(table->viewBuffer); for (i = cols.position; i < cols.position + cols.count; i++) { column = WMGetFromArray(table->columns, i); if (!column->delegate || !column->delegate->drawCell) continue; if (WMFindInArray(table->selectedRows, NULL, (void *)(uintptr_t) row) != WANotFound) (*column->delegate->drawSelectedCell) (column->delegate, column, row, d); else (*column->delegate->drawCell) (column->delegate, column, row, d); } } #if 0 static void drawFullRow(WMTableView * table, int row) { int i; WMTableColumn *column; Drawable d = WMGetPixmapXID(table->viewBuffer); for (i = 0; i < WMGetArrayItemCount(table->columns); i++) { column = WMGetFromArray(table->columns, i); if (!column->delegate || !column->delegate->drawCell) continue; if (WMFindInArray(table->selectedRows, NULL, (void *)row) != WANotFound) (*column->delegate->drawSelectedCell) (column->delegate, column, row, d); else (*column->delegate->drawCell) (column->delegate, column, row, d); } } #endif static void setRowSelected(WMTableView * table, unsigned row, Bool flag) { int repaint = 0; if (WMFindInArray(table->selectedRows, NULL, (void *)(uintptr_t) row) != WANotFound) { if (!flag) { WMRemoveFromArray(table->selectedRows, (void *)(uintptr_t) row); repaint = 1; } } else { if (flag) { WMAddToArray(table->selectedRows, (void *)(uintptr_t) row); repaint = 1; } } if (repaint && row < table->rows) { /*drawFullRow(table, row); */ repaintTable(table); } } static void repaintTable(WMTableView * table) { WMRect rect; WMRange rows; WMScreen *scr = WMWidgetScreen(table); int i; if (!table->delegate || !W_VIEW_REALIZED(table->view)) return; wassertr(table->delegate->numberOfRows); if (!table->viewBuffer) { table->viewBuffer = WMCreatePixmap(scr, W_VIEW_WIDTH(table->tableView), W_VIEW_HEIGHT(table->tableView), WMScreenDepth(scr), 0); } XFillRectangle(scr->display, WMGetPixmapXID(table->viewBuffer), WMColorGC(table->backColor), 0, 0, W_VIEW_WIDTH(table->tableView), W_VIEW_HEIGHT(table->tableView)); rect = getVisibleRect(table); if (table->drawsGrid) { drawGrid(table, rect); } rows = rowsInRect(table, rect); for (i = rows.position; i < WMIN(rows.position + rows.count + 1, table->rows); i++) { drawRow(table, i, rect); } XSetWindowBackgroundPixmap(scr->display, table->tableView->window, WMGetPixmapXID(table->viewBuffer)); XClearWindow(scr->display, table->tableView->window); } static void stopRowEdit(WMTableView * table, int row) { int i; WMTableColumn *column; table->editingRow = -1; for (i = 0; i < WMGetArrayItemCount(table->columns); i++) { column = WMGetFromArray(table->columns, i); if (column->delegate && column->delegate->endCellEdit) (*column->delegate->endCellEdit) (column->delegate, column, row); } } void WMEditTableViewRow(WMTableView * table, int row) { int i; WMTableColumn *column; if (table->editingRow >= 0) { stopRowEdit(table, table->editingRow); } table->editingRow = row; if (row < 0) return; for (i = 0; i < WMGetArrayItemCount(table->columns); i++) { column = WMGetFromArray(table->columns, i); if (column->delegate && column->delegate->beginCellEdit) (*column->delegate->beginCellEdit) (column->delegate, column, row); } } void WMSelectTableViewRow(WMTableView * table, int row) { if (table->clickedRow >= 0) setRowSelected(table, table->clickedRow, False); if (row >= table->rows) { return; } setRowSelected(table, row, True); table->clickedRow = row; if (table->action) (*table->action) (table, table->clientData); WMPostNotificationName(WMTableViewSelectionDidChangeNotification, table, NULL); } void WMReloadTableView(WMTableView * table) { if (table->editingRow >= 0) stopRowEdit(table, table->editingRow); /* when this is called, nothing in the table can be assumed to be * like the last time we accessed it (ie, rows might have disappeared) */ WMEmptyArray(table->selectedRows); if (table->clickedRow >= 0) { if (table->action) (*table->action) (table, table->clientData); WMPostNotificationName(WMTableViewSelectionDidChangeNotification, table, NULL); table->clickedRow = -1; } if (table->delegate && table->delegate->numberOfRows) { int rows; rows = (*table->delegate->numberOfRows) (table->delegate, table); if (rows != table->rows) { table->rows = rows; handleResize(table->view->delegate, table->view); } else { repaintTable(table); } } } void WMNoteTableViewNumberOfRowsChanged(WMTableView * table) { WMReloadTableView(table); } static void handleTableEvents(XEvent * event, void *data) { WMTableView *table = (WMTableView *) data; int row; switch (event->type) { case ButtonPress: if (event->xbutton.button == Button1) { WMRect rect = getVisibleRect(table); row = (event->xbutton.y + rect.pos.y) / table->rowHeight; if (row != table->clickedRow) { setRowSelected(table, table->clickedRow, False); setRowSelected(table, row, True); table->clickedRow = row; table->dragging = 1; } else { table->dragging = 1; } } break; case MotionNotify: if (table->dragging && event->xmotion.y >= 0) { WMRect rect = getVisibleRect(table); row = (event->xmotion.y + rect.pos.y) / table->rowHeight; if (table->clickedRow != row && row >= 0 && row < table->rows) { setRowSelected(table, table->clickedRow, False); setRowSelected(table, row, True); table->clickedRow = row; } } break; case ButtonRelease: if (event->xbutton.button == Button1) { if (table->action) (*table->action) (table, table->clientData); WMPostNotificationName(WMTableViewSelectionDidChangeNotification, table, NULL); table->dragging = 0; } break; } } static void handleEvents(XEvent * event, void *data) { WMTableView *table = (WMTableView *) data; WMScreen *scr = WMWidgetScreen(table); switch (event->type) { case Expose: W_DrawRelief(scr, W_VIEW_DRAWABLE(table->view), 0, 0, W_VIEW_WIDTH(table->view), W_VIEW_HEIGHT(table->view), WRSunken); break; } } static void handleResize(W_ViewDelegate * self, WMView * view) { reorganizeInterior(view->self); } static void reorganizeInterior(WMTableView * table) { int width; int height; WMSize size = getTotalSize(table); WMView *view = table->view; int vw, vh; int hsThickness, vsThickness; if (table->vscroll) vsThickness = WMWidgetWidth(table->vscroll); if (table->hscroll) hsThickness = WMWidgetHeight(table->hscroll); width = W_VIEW_WIDTH(view) - 2; height = W_VIEW_HEIGHT(view) - 3; height -= table->headerHeight; /* table header */ if (table->corner) WMResizeWidget(table->corner, 20, table->headerHeight); WMMoveWidget(table->vscroll, 1, table->headerHeight + 1); WMResizeWidget(table->vscroll, 20, height + 1); if (table->hscroll) { WMMoveWidget(table->hscroll, vsThickness, W_VIEW_HEIGHT(view) - hsThickness - 1); WMResizeWidget(table->hscroll, width - (vsThickness + 1), hsThickness); } if (table->header) WMResizeWidget(table->header, width - (vsThickness + 1), table->headerHeight); if (table->viewBuffer) { WMReleasePixmap(table->viewBuffer); table->viewBuffer = NULL; } width -= vsThickness; height -= hsThickness; vw = WMIN(size.width, width); vh = WMIN(size.height, height); W_MoveView(table->tableView, vsThickness + 1, 1 + table->headerHeight + 1); W_ResizeView(table->tableView, WMAX(vw, 1), WMAX(vh, 1) + 1); adjustScrollers(table); repaintTable(table); } static void rearrangeHeader(WMTableView * table) { int width; int count; int i; /*WMRect rect = WMGetScrollViewVisibleRect(table->scrollView); */ width = 0; count = WMGetArrayItemCount(table->columns); for (i = 0; i < count; i++) { WMTableColumn *column = WMGetFromArray(table->columns, i); WMView *splitter = WMGetFromArray(table->splitters, i); WMMoveWidget(column->titleW, width, 0); WMResizeWidget(column->titleW, column->width - 1, table->headerHeight); width += column->width; W_MoveView(splitter, width - 1, 0); } wassertr(table->delegate && table->delegate->numberOfRows); table->rows = table->delegate->numberOfRows(table->delegate, table); table->tableWidth = width + 1; handleResize(table->view->delegate, table->view); } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Extras/Makefile������������������������������������������������������������0000644�0001750�0001750�00000057564�13642360103�014642� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.16.1 from Makefile.am. # WINGs/Extras/Makefile. Generated from Makefile.in by configure. # Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/WindowMaker pkgincludedir = $(includedir)/WindowMaker pkglibdir = $(libdir)/WindowMaker pkglibexecdir = $(libexecdir)/WindowMaker am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = x86_64-pc-linux-gnu host_triplet = x86_64-pc-linux-gnu noinst_PROGRAMS = test$(EXEEXT) subdir = WINGs/Extras ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ $(top_srcdir)/m4/ax_pthread.m4 \ $(top_srcdir)/m4/ld-version-script.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/windowmaker.m4 \ $(top_srcdir)/m4/wm_attributes.m4 \ $(top_srcdir)/m4/wm_cflags_check.m4 \ $(top_srcdir)/m4/wm_i18n.m4 \ $(top_srcdir)/m4/wm_imgfmt_check.m4 \ $(top_srcdir)/m4/wm_libexif.m4 $(top_srcdir)/m4/wm_libmath.m4 \ $(top_srcdir)/m4/wm_prog_cc_c11.m4 \ $(top_srcdir)/m4/wm_xext_check.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(include_HEADERS) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)" LTLIBRARIES = $(lib_LTLIBRARIES) libExtraWINGs_la_LIBADD = am_libExtraWINGs_la_OBJECTS = wtableview.lo wtabledelegates.lo libExtraWINGs_la_OBJECTS = $(am_libExtraWINGs_la_OBJECTS) AM_V_lt = $(am__v_lt_$(V)) am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) am__v_lt_0 = --silent am__v_lt_1 = test_SOURCES = test.c test_OBJECTS = test.$(OBJEXT) am__DEPENDENCIES_1 = $(top_builddir)/WINGs/libWINGs.la \ $(top_builddir)/wrlib/libwraster.la \ $(top_builddir)/WINGs/libWUtil.la test_DEPENDENCIES = wtableview.o wtabledelegates.o \ $(am__DEPENDENCIES_1) AM_V_P = $(am__v_P_$(V)) am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I. -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/test.Po \ ./$(DEPDIR)/wtabledelegates.Plo ./$(DEPDIR)/wtableview.Plo am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_$(V)) am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_$(V)) am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libExtraWINGs_la_SOURCES) test.c DIST_SOURCES = $(libExtraWINGs_la_SOURCES) test.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(include_HEADERS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = ${SHELL} /home/profzoom/src/wmaker/wmaker-crm/missing aclocal-1.16 AMTAR = $${TAR-tar} AM_DEFAULT_VERBOSITY = 1 AR = ar AUTOCONF = ${SHELL} /home/profzoom/src/wmaker/wmaker-crm/missing autoconf AUTOHEADER = ${SHELL} /home/profzoom/src/wmaker/wmaker-crm/missing autoheader AUTOMAKE = ${SHELL} /home/profzoom/src/wmaker/wmaker-crm/missing automake-1.16 AWK = gawk CC = gcc CCDEPMODE = depmode=gcc3 CFLAGS = -g -O2 -Wall -Wextra -Wno-sign-compare -Werror=trampolines -Wno-deprecated -Wno-deprecated-declarations CPP = gcc -E CPPFLAGS = -DNDEBUG -D_XOPEN_SOURCE=600 -D_GNU_SOURCE CYGPATH_W = echo DEFS = -DHAVE_CONFIG_H DEPDIR = .deps DLLTOOL = false DSYMUTIL = DUMPBIN = ECHO_C = ECHO_N = -n ECHO_T = EGREP = /bin/grep -E EXEEXT = FCLIBS = -lfontconfig -lfreetype FGREP = /bin/grep -F GFXLIBS = -lXpm -lpng -ljpeg -lgif -ltiff GREP = /bin/grep HEADER_SEARCH_PATH = -I${includedir} ICONEXT = tiff INSTALL = /usr/bin/install -c INSTALL_DATA = ${INSTALL} -m 644 INSTALL_PROGRAM = ${INSTALL} INSTALL_SCRIPT = ${INSTALL} INSTALL_STRIP_PROGRAM = $(install_sh) -c -s INTLIBS = LD = /usr/bin/ld -m elf_x86_64 LDFLAGS = LIBBSD = LIBEXIF = LIBM = -lm LIBOBJS = LIBRARY_SEARCH_PATH = -L${libdir} LIBS = LIBTOOL = $(SHELL) $(top_builddir)/libtool LIBXINERAMA = -lXinerama LIBXMU = -lXmu LIBXRANDR = LINGUAS = LIPO = LN_S = ln -s LTLIBOBJS = LT_SYS_LIBRARY_PATH = MAGICKFLAGS = MAGICKLIBS = MAKEINFO = ${SHELL} /home/profzoom/src/wmaker/wmaker-crm/missing makeinfo MANIFEST_TOOL = : MANLANGDIRS = MKDIR_P = /bin/mkdir -p MSGFMT = NM = /usr/bin/nm -B NMEDIT = OBJDUMP = objdump OBJEXT = o OTOOL = OTOOL64 = PACKAGE = WindowMaker PACKAGE_BUGREPORT = wmaker-dev@googlegroups.com PACKAGE_NAME = WindowMaker PACKAGE_STRING = WindowMaker 0.95.9 PACKAGE_TARNAME = WindowMaker PACKAGE_URL = http://www.windowmaker.org/ PACKAGE_VERSION = 0.95.9 PANGOLIBS = PATH_SEPARATOR = : PKG_CONFIG = /usr/bin/pkg-config PKG_CONFIG_LIBDIR = PKG_CONFIG_PATH = PTHREAD_CC = gcc PTHREAD_CFLAGS = -pthread PTHREAD_LIBS = RANLIB = ranlib SED = /bin/sed SET_MAKE = SHELL = /bin/bash STRIP = strip UTILMOFILES = VERSION = 0.95.9 WINGSMOFILES = WINGS_VERSION = 4:0:1 WMAKERMOFILES = WPREFSMOFILES = WRASTER_VERSION = 6:0:0 WUTIL_VERSION = 5:0:0 XCFLAGS = XFTCONFIG = /usr/bin/pkg-config xft XFTFLAGS = -I/usr/include/uuid -I/usr/include/freetype2 -I/usr/include/libpng16 XFTLIBS = -lXft XGETTEXT = xgettext XLFLAGS = XLIBS = -lX11 -lXext XMKMF = X_CFLAGS = X_EXTRA_LIBS = X_LIBRARY_PATH = X_LIBS = X_PRE_LIBS = -lSM -lICE abs_builddir = /home/profzoom/src/wmaker/wmaker-crm/WINGs/Extras abs_srcdir = /home/profzoom/src/wmaker/wmaker-crm/WINGs/Extras abs_top_builddir = /home/profzoom/src/wmaker/wmaker-crm abs_top_srcdir = /home/profzoom/src/wmaker/wmaker-crm ac_ct_AR = ar ac_ct_CC = gcc ac_ct_DUMPBIN = am__include = include am__leading_dot = . am__quote = am__tar = $${TAR-tar} chof - "$$tardir" am__untar = $${TAR-tar} xf - ax_pthread_config = bindir = ${exec_prefix}/bin build = x86_64-pc-linux-gnu build_alias = build_cpu = x86_64 build_os = linux-gnu build_vendor = pc builddir = . datadir = ${datarootdir} datarootdir = ${prefix}/share defsdatadir = ${sysconfdir}/WindowMaker docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} dvidir = ${docdir} exec_prefix = ${prefix} host = x86_64-pc-linux-gnu host_alias = host_cpu = x86_64 host_os = linux-gnu host_vendor = pc htmldir = ${docdir} inc_search_path = -I${includedir} # is this a kluge? if so, how should i do it? includedir = ${prefix}/include/WINGs infodir = ${datarootdir}/info install_sh = ${SHELL} /home/profzoom/src/wmaker/wmaker-crm/install-sh lcov_output_directory = lib_search_path = -L${libdir} libdir = ${exec_prefix}/lib libexecdir = ${exec_prefix}/libexec localedir = ${datarootdir}/locale localstatedir = ${prefix}/var mandir = ${datarootdir}/man mkdir_p = $(MKDIR_P) oldincludedir = /usr/include pdfdir = ${docdir} pixmapdir = ${datadir}/pixmaps prefix = /usr/local program_transform_name = s,x,x, psdir = ${docdir} runstatedir = ${localstatedir}/run sbindir = ${exec_prefix}/sbin sharedstatedir = ${prefix}/com srcdir = . sysconfdir = ${prefix}/etc target_alias = top_build_prefix = ../../ top_builddir = ../.. top_srcdir = ../.. wprefs_bindir = ${exec_prefix}/bin wprefs_datadir = ${datarootdir}/WPrefs AUTOMAKE_OPTIONS = include_HEADERS = wtableview.h wtabledelegates.h lib_LTLIBRARIES = libExtraWINGs.la EXTRA_DIST = libExtraWINGs_la_SOURCES = \ wtableview.c \ wtabledelegates.c \ wtableview.h \ wtabledelegates.h AM_CPPFLAGS = -I$(top_srcdir)/wrlib -I$(top_srcdir)/WINGs \ -DRESOURCE_PATH=\"$(datadir)/WINGs\" -I${includedir} LDADD = $(top_builddir)/WINGs/libWINGs.la $(top_builddir)/wrlib/libwraster.la \ $(top_builddir)/WINGs/libWUtil.la \ -lXft test_LDADD = wtableview.o wtabledelegates.o $(LDADD) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu WINGs/Extras/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu WINGs/Extras/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libExtraWINGs.la: $(libExtraWINGs_la_OBJECTS) $(libExtraWINGs_la_DEPENDENCIES) $(EXTRA_libExtraWINGs_la_DEPENDENCIES) $(AM_V_CCLD)$(LINK) -rpath $(libdir) $(libExtraWINGs_la_OBJECTS) $(libExtraWINGs_la_LIBADD) $(LIBS) test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES) @rm -f test$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c include ./$(DEPDIR)/test.Po # am--include-marker include ./$(DEPDIR)/wtabledelegates.Plo # am--include-marker include ./$(DEPDIR)/wtableview.Plo # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @echo '# dummy' >$@-t && $(am__mv) $@-t $@ am--depfiles: $(am__depfiles_remade) .c.o: $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po # $(AM_V_CC)source='$<' object='$@' libtool=no \ # DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ # $(AM_V_CC_no)$(COMPILE) -c -o $@ $< .c.obj: $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po # $(AM_V_CC)source='$<' object='$@' libtool=no \ # DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ # $(AM_V_CC_no)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo # $(AM_V_CC)source='$<' object='$@' libtool=yes \ # DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ # $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-includeHEADERS: $(include_HEADERS) @$(NORMAL_INSTALL) @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ done uninstall-includeHEADERS: @$(NORMAL_UNINSTALL) @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) $(LTLIBRARIES) $(HEADERS) installdirs: for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -f ./$(DEPDIR)/test.Po -rm -f ./$(DEPDIR)/wtabledelegates.Plo -rm -f ./$(DEPDIR)/wtableview.Plo -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-includeHEADERS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-libLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/test.Po -rm -f ./$(DEPDIR)/wtabledelegates.Plo -rm -f ./$(DEPDIR)/wtableview.Plo -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ clean-generic clean-libLTLIBRARIES clean-libtool \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-includeHEADERS install-info \ install-info-am install-libLTLIBRARIES install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am uninstall-includeHEADERS \ uninstall-libLTLIBRARIES .PRECIOUS: Makefile # 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. .NOEXPORT: ��������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Extras/Makefile.am���������������������������������������������������������0000644�0001750�0001750�00000001243�13431646201�015217� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������## automake input file for WINGs AUTOMAKE_OPTIONS = # is this a kluge? if so, how should i do it? includedir = @includedir@/WINGs include_HEADERS = wtableview.h wtabledelegates.h lib_LTLIBRARIES = libExtraWINGs.la noinst_PROGRAMS = test EXTRA_DIST = libExtraWINGs_la_SOURCES = \ wtableview.c \ wtabledelegates.c \ wtableview.h \ wtabledelegates.h AM_CPPFLAGS = -I$(top_srcdir)/wrlib -I$(top_srcdir)/WINGs \ -DRESOURCE_PATH=\"$(datadir)/WINGs\" @HEADER_SEARCH_PATH@ LDADD= $(top_builddir)/WINGs/libWINGs.la $(top_builddir)/wrlib/libwraster.la \ $(top_builddir)/WINGs/libWUtil.la \ @XFTLIBS@ @INTLIBS@ test_LDADD = wtableview.o wtabledelegates.o $(LDADD) �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Extras/test.c��������������������������������������������������������������0000644�0001750�0001750�00000005374�13431646201�014317� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include <WINGs/WINGs.h> #include <stdio.h> #include <stdint.h> #include "wtableview.h" #include "wtabledelegates.h" static char *col1[20] = { 0 }; static int col2[20]; static char *options[] = { "Option1", "Option2", "Option3", "Option4", "Option5" }; int numberOfRows(WMTableViewDelegate * self, WMTableView * table) { return 20; } void *valueForCell(WMTableViewDelegate * self, WMTableColumn * column, int row) { /*WMTableView *table = (WMTableView*)WMGetTableColumnTableView(column); */ int i; if (col1[0] == 0) { for (i = 0; i < 20; i++) { char buf[128]; sprintf(buf, "Test row %i", i); col1[i] = wstrdup(buf); col2[i] = 0; } } if ((uintptr_t)WMGetTableColumnId(column) == 1) return col1[row]; else return (void *)(uintptr_t) col2[row]; } void setValueForCell(WMTableViewDelegate * self, WMTableColumn * column, int row, void *data) { if ((uintptr_t)WMGetTableColumnId(column) == 1) col1[row] = data; else col2[row] = (uintptr_t) data; } static WMTableViewDelegate delegate = { NULL, numberOfRows, valueForCell, setValueForCell }; void clickedTable(WMWidget * w, void *self) { int row = WMGetTableViewClickedRow((WMTableView *) self); WMEditTableViewRow(self, row); } int main(int argc, char **argv) { WMScreen *scr; WMWindow *win; WMTableView *table; WMTableColumn *col; WMTableColumnDelegate *colDeleg; WMInitializeApplication("test", &argc, argv); scr = WMOpenScreen(NULL); XSynchronize(WMScreenDisplay(scr), 1); win = WMCreateWindow(scr, "eweq"); WMResizeWidget(win, 400, 200); WMMapWidget(win); table = WMCreateTableView(win); WMSetTableViewHasHorizontalScroller(table, 0); WMSetViewExpandsToParent(WMWidgetView(table), 10, 10, 10, 10); WMSetTableViewBackgroundColor(table, WMWhiteColor(scr)); /*WMSetTableViewGridColor(table, WMGrayColor(scr)); */ WMSetTableViewHeaderHeight(table, 20); WMSetTableViewDelegate(table, &delegate); WMSetTableViewAction(table, clickedTable, table); colDeleg = WTCreateStringEditorDelegate(table); col = WMCreateTableColumn("Group"); WMSetTableColumnWidth(col, 180); WMAddTableViewColumn(table, col); WMSetTableColumnDelegate(col, colDeleg); WMSetTableColumnId(col, (void *)1); colDeleg = WTCreateEnumSelectorDelegate(table); WTSetEnumSelectorOptions(colDeleg, options, 5); col = WMCreateTableColumn("Package"); WMSetTableColumnWidth(col, 140); WMAddTableViewColumn(table, col); WMSetTableColumnDelegate(col, colDeleg); WMSetTableColumnId(col, (void *)2); colDeleg = WTCreateBooleanSwitchDelegate(table); col = WMCreateTableColumn("Bool"); WMSetTableColumnWidth(col, 50); WMAddTableViewColumn(table, col); WMSetTableColumnDelegate(col, colDeleg); WMSetTableColumnId(col, (void *)2); WMMapWidget(table); WMRealizeWidget(win); WMScreenMainLoop(scr); return 0; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Examples/������������������������������������������������������������������0000755�0001750�0001750�00000000000�13642360104�013552� 5����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Examples/Makefile.in�������������������������������������������������������0000644�0001750�0001750�00000050636�13642360053�015554� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = fontl$(EXEEXT) puzzle$(EXEEXT) colorpick$(EXEEXT) subdir = WINGs/Examples ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ $(top_srcdir)/m4/ax_pthread.m4 \ $(top_srcdir)/m4/ld-version-script.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/windowmaker.m4 \ $(top_srcdir)/m4/wm_attributes.m4 \ $(top_srcdir)/m4/wm_cflags_check.m4 \ $(top_srcdir)/m4/wm_i18n.m4 \ $(top_srcdir)/m4/wm_imgfmt_check.m4 \ $(top_srcdir)/m4/wm_libexif.m4 $(top_srcdir)/m4/wm_libmath.m4 \ $(top_srcdir)/m4/wm_prog_cc_c11.m4 \ $(top_srcdir)/m4/wm_xext_check.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) colorpick_SOURCES = colorpick.c colorpick_OBJECTS = colorpick.$(OBJEXT) colorpick_LDADD = $(LDADD) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = fontl_SOURCES = fontl.c fontl_OBJECTS = fontl.$(OBJEXT) fontl_LDADD = $(LDADD) puzzle_SOURCES = puzzle.c puzzle_OBJECTS = puzzle.$(OBJEXT) puzzle_LDADD = $(LDADD) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/colorpick.Po ./$(DEPDIR)/fontl.Po \ ./$(DEPDIR)/puzzle.Po am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = colorpick.c fontl.c puzzle.c DIST_SOURCES = colorpick.c fontl.c puzzle.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp README DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ GFXLIBS = @GFXLIBS@ GREP = @GREP@ HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLIBS = @INTLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBBSD = @LIBBSD@ LIBEXIF = @LIBEXIF@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXINERAMA = @LIBXINERAMA@ LIBXMU = @LIBXMU@ LIBXRANDR = @LIBXRANDR@ LINGUAS = @LINGUAS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAGICKFLAGS = @MAGICKFLAGS@ MAGICKLIBS = @MAGICKLIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MANLANGDIRS = @MANLANGDIRS@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOLIBS = @PANGOLIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILMOFILES = @UTILMOFILES@ VERSION = @VERSION@ WINGSMOFILES = @WINGSMOFILES@ WINGS_VERSION = @WINGS_VERSION@ WMAKERMOFILES = @WMAKERMOFILES@ WPREFSMOFILES = @WPREFSMOFILES@ WRASTER_VERSION = @WRASTER_VERSION@ WUTIL_VERSION = @WUTIL_VERSION@ XCFLAGS = @XCFLAGS@ XFTCONFIG = @XFTCONFIG@ XFTFLAGS = @XFTFLAGS@ XFTLIBS = @XFTLIBS@ XGETTEXT = @XGETTEXT@ XLFLAGS = @XLFLAGS@ XLIBS = @XLIBS@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBRARY_PATH = @X_LIBRARY_PATH@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ defsdatadir = @defsdatadir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ inc_search_path = @inc_search_path@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lcov_output_directory = @lcov_output_directory@ lib_search_path = @lib_search_path@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pixmapdir = @pixmapdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ wprefs_bindir = @wprefs_bindir@ wprefs_datadir = @wprefs_datadir@ AUTOMAKE_OPTIONS = LDADD = $(top_builddir)/WINGs/libWINGs.la $(top_builddir)/wrlib/libwraster.la \ $(top_builddir)/WINGs/libWUtil.la \ @XFTLIBS@ @INTLIBS@ @XLIBS@ colorpick_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.la fontl_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.la puzzle_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.la AM_CPPFLAGS = -I$(top_srcdir)/WINGs -I$(top_srcdir)/wrlib -I$(top_srcdir)/src \ -DRESOURCE_PATH=\"$(datadir)/WINGs\" @HEADER_SEARCH_PATH@ all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu WINGs/Examples/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu WINGs/Examples/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list colorpick$(EXEEXT): $(colorpick_OBJECTS) $(colorpick_DEPENDENCIES) $(EXTRA_colorpick_DEPENDENCIES) @rm -f colorpick$(EXEEXT) $(AM_V_CCLD)$(LINK) $(colorpick_OBJECTS) $(colorpick_LDADD) $(LIBS) fontl$(EXEEXT): $(fontl_OBJECTS) $(fontl_DEPENDENCIES) $(EXTRA_fontl_DEPENDENCIES) @rm -f fontl$(EXEEXT) $(AM_V_CCLD)$(LINK) $(fontl_OBJECTS) $(fontl_LDADD) $(LIBS) puzzle$(EXEEXT): $(puzzle_OBJECTS) $(puzzle_DEPENDENCIES) $(EXTRA_puzzle_DEPENDENCIES) @rm -f puzzle$(EXEEXT) $(AM_V_CCLD)$(LINK) $(puzzle_OBJECTS) $(puzzle_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/colorpick.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fontl.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/puzzle.Po@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @echo '# dummy' >$@-t && $(am__mv) $@-t $@ am--depfiles: $(am__depfiles_remade) .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -f ./$(DEPDIR)/colorpick.Po -rm -f ./$(DEPDIR)/fontl.Po -rm -f ./$(DEPDIR)/puzzle.Po -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/colorpick.Po -rm -f ./$(DEPDIR)/fontl.Po -rm -f ./$(DEPDIR)/puzzle.Po -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \ ctags ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # 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. .NOEXPORT: ��������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Examples/README������������������������������������������������������������0000644�0001750�0001750�00000000266�13431646201�014357� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Files: ----- colorpick - a color picker puzzle - a nice zuPzel =) fontl - a map of all characters with their corresponding ascii, hex, decimal and octal representations. ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Examples/puzzle.c����������������������������������������������������������0000644�0001750�0001750�00000010764�13431646201�015200� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include <stdlib.h> #include <stdio.h> #include <WINGs/WINGs.h> #include <stdint.h> #define MAX_SIZE 10*10 WMWindow *win; WMButton *Button[MAX_SIZE]; signed char Map[MAX_SIZE]; int Size = 4; int MoveCount; #define MAP(x,y) Map[(x)+(y)*Size] int WinSize = 120; Bool CheckWin(void) { int i; for (i = 0; i < Size * Size - 1; i++) { if (Map[i] != i) return False; } return True; } void MoveButton(int button, int x, int y) { WMMoveWidget(Button[button], x * (WinSize / Size), y * (WinSize / Size)); } Bool SlideButton(int button) { int x = 0, y = 0, done = 0; /* locate the button */ for (y = 0; y < Size; y++) { for (x = 0; x < Size; x++) { if (MAP(x, y) == button) { done = 1; break; } } if (done) break; } if (x > 0 && MAP(x - 1, y) < 0) { MAP(x, y) = -1; MoveButton(button, x - 1, y); MAP(x - 1, y) = button; } else if (x < Size - 1 && MAP(x + 1, y) < 0) { MAP(x, y) = -1; MoveButton(button, x + 1, y); MAP(x + 1, y) = button; } else if (y > 0 && MAP(x, y - 1) < 0) { MAP(x, y) = -1; MoveButton(button, x, y - 1); MAP(x, y - 1) = button; } else if (y < Size - 1 && MAP(x, y + 1) < 0) { MAP(x, y) = -1; MoveButton(button, x, y + 1); MAP(x, y + 1) = button; } else { return False; } return True; } #define SWAP(a,b) {int tmp; tmp=a; a=b; b=tmp;} void ResetGame(void) { int i, x, y, ox, oy; MoveCount = 0; for (i = 0; i < Size * Size - 1; i++) { Map[i] = i; } Map[i] = -1; ox = x = Size - 1; oy = y = Size - 1; for (i = 0; i < 1000; i++) { int ok; ok = 1; switch (rand() % 4) { case 0: if (x > 0) x--; else ok = 0; break; case 2: if (x < Size - 1) x++; else ok = 0; break; case 1: if (y > 0) y--; else ok = 0; break; case 3: if (y < Size - 1) y++; else ok = 0; break; } if (ok) { MoveButton(MAP(x, y), ox, oy); SWAP(MAP(ox, oy), MAP(x, y)); while (XPending(WMScreenDisplay(WMWidgetScreen(win)))) { XEvent ev; WMNextEvent(WMScreenDisplay(WMWidgetScreen(win)), &ev); WMHandleEvent(&ev); } ox = x; oy = y; } } } void buttonClick(WMWidget * w, void *ptr) { char buffer[300]; if (SlideButton((uintptr_t)ptr)) { MoveCount++; if (CheckWin()) { sprintf(buffer, "You finished the game in %i moves.", MoveCount); if (WMRunAlertPanel(WMWidgetScreen(w), win, "You Won!", buffer, "Wee!", "Gah! Lemme retry!", NULL) == WAPRDefault) { exit(0); } ResetGame(); } } } static void resizeObserver(void *self, WMNotification * notif) { WMSize size = WMGetViewSize(WMWidgetView(win)); int x, y; (void) self; (void) notif; WinSize = size.width; for (y = 0; y < Size; y++) { for (x = 0; x < Size; x++) { if (MAP(x, y) >= 0) { WMResizeWidget(Button[(int)MAP(x, y)], WinSize / Size, WinSize / Size); WMMoveWidget(Button[(int)MAP(x, y)], x * (WinSize / Size), y * (WinSize / Size)); } } } } int main(int argc, char **argv) { Display *dpy; WMScreen *scr; int x, y, i; WMInitializeApplication("Puzzle", &argc, argv); dpy = XOpenDisplay(""); if (!dpy) { printf("could not open display\n"); exit(1); } scr = WMCreateScreen(dpy, DefaultScreen(dpy)); win = WMCreateWindow(scr, "puzzle"); WMResizeWidget(win, WinSize, WinSize); WMSetWindowTitle(win, "zuPzel"); WMSetWindowMinSize(win, 80, 80); WMSetWindowAspectRatio(win, 2, 2, 2, 2); WMSetWindowResizeIncrements(win, Size, Size); WMSetViewNotifySizeChanges(WMWidgetView(win), True); WMAddNotificationObserver(resizeObserver, NULL, WMViewSizeDidChangeNotification, WMWidgetView(win)); for (i = y = 0; y < Size && i < Size * Size - 1; y++) { for (x = 0; x < Size && i < Size * Size - 1; x++) { char buf[32]; WMColor *color; RColor col; RHSVColor hsv; hsv.hue = i * 360 / (Size * Size - 1); hsv.saturation = 120; hsv.value = 200; RHSVtoRGB(&hsv, &col); color = WMCreateRGBColor(scr, col.red << 8, col.green << 8, col.blue << 8, False); MAP(x, y) = i; Button[i] = WMCreateButton(win, WBTMomentaryLight); WMSetWidgetBackgroundColor(Button[i], color); WMReleaseColor(color); WMSetButtonAction(Button[i], buttonClick, (void *)(uintptr_t) i); WMResizeWidget(Button[i], WinSize / Size, WinSize / Size); WMMoveWidget(Button[i], x * (WinSize / Size), y * (WinSize / Size)); sprintf(buf, "%i", i + 1); WMSetButtonText(Button[i], buf); WMSetButtonTextAlignment(Button[i], WACenter); i++; } } WMMapSubwidgets(win); WMMapWidget(win); WMRealizeWidget(win); ResetGame(); WMScreenMainLoop(scr); return 0; } ������������WindowMaker-0.95.9/WINGs/Examples/.deps/������������������������������������������������������������0000755�0001750�0001750�00000000000�13642360104�014563� 5����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Examples/.deps/colorpick.Po������������������������������������������������0000644�0001750�0001750�00000000010�13642360104�016757� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# dummy ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Examples/.deps/fontl.Po����������������������������������������������������0000644�0001750�0001750�00000000010�13642360104�016114� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# dummy ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Examples/.deps/puzzle.Po���������������������������������������������������0000644�0001750�0001750�00000000010�13642360104�016323� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# dummy ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Examples/fontl.c�����������������������������������������������������������0000644�0001750�0001750�00000004567�13431646201�014775� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * WINGs demo: font lister * * Copyright (c) 1998-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include <stdlib.h> #include <stdio.h> #include <stdint.h> #include <WINGs/WINGs.h> #include <WINGs/WUtil.h> #include <inttypes.h> void wAbort() { exit(0); } void show(WMWidget * self, void *data) { char buf[60]; void *d; WMLabel *l = (WMLabel *) data; d = WMGetHangedData(self); sprintf(buf, "%"PRIiPTR" - 0x%"PRIxPTR" - 0%"PRIoPTR, (intptr_t) d, (intptr_t) d, (intptr_t) d); WMSetLabelText(l, buf); } void quit(WMWidget * self, void *data) { (void) self; (void) data; exit(0); } int main(int argc, char **argv) { Display *dpy; WMWindow *win; WMScreen *scr; WMButton *lab, *l0 = NULL; WMLabel *pos; int x, y, c; char buf[20]; WMInitializeApplication("FontView", &argc, argv); dpy = XOpenDisplay(""); if (!dpy) { wfatal("cant open display"); exit(0); } scr = WMCreateSimpleApplicationScreen(dpy); win = WMCreateWindow(scr, "main"); WMResizeWidget(win, 20 * 33, 20 + 20 * 9); WMSetWindowTitle(win, "Font Chars"); WMSetWindowCloseAction(win, quit, NULL); pos = WMCreateLabel(win); WMResizeWidget(pos, 20 * 33, 20); WMMoveWidget(pos, 10, 5); c = 0; for (y = 0; y < 8; y++) { for (x = 0; x < 32; x++, c++) { lab = WMCreateCustomButton(win, WBBStateLightMask); WMResizeWidget(lab, 20, 20); WMMoveWidget(lab, 10 + x * 20, 30 + y * 20); sprintf(buf, "%c", c); WMSetButtonText(lab, buf); WMSetButtonAction(lab, show, pos); WMHangData(lab, (void *)(uintptr_t) c); if (c > 0) { WMGroupButtons(l0, lab); } else { l0 = lab; } } } WMRealizeWidget(win); WMMapSubwidgets(win); WMMapWidget(win); WMScreenMainLoop(scr); return 0; } �����������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Examples/colorpick.c�������������������������������������������������������0000644�0001750�0001750�00000001303�13431646201�015621� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include <stdlib.h> #include <stdio.h> #include <WINGs/WINGs.h> void showSelectedColor(void *self, void *cdata) { WMColorPanel *panel = (WMColorPanel *) self; (void) cdata; printf("Selected Color: %s\n", WMGetColorRGBDescription(WMGetColorPanelColor(panel))); } int main(int argc, char **argv) { Display *dpy; WMScreen *scr; WMInitializeApplication("wmcolorpick", &argc, argv); dpy = XOpenDisplay(""); if (!dpy) { printf("could not open display\n"); exit(1); } scr = WMCreateScreen(dpy, DefaultScreen(dpy)); { WMColorPanel *panel = WMGetColorPanel(scr); WMSetColorPanelAction(panel, showSelectedColor, NULL); WMShowColorPanel(panel); } WMScreenMainLoop(scr); return 0; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Examples/Makefile����������������������������������������������������������0000644�0001750�0001750�00000050011�13642360103�015126� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.16.1 from Makefile.am. # WINGs/Examples/Makefile. Generated from Makefile.in by configure. # Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/WindowMaker pkgincludedir = $(includedir)/WindowMaker pkglibdir = $(libdir)/WindowMaker pkglibexecdir = $(libexecdir)/WindowMaker am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = x86_64-pc-linux-gnu host_triplet = x86_64-pc-linux-gnu noinst_PROGRAMS = fontl$(EXEEXT) puzzle$(EXEEXT) colorpick$(EXEEXT) subdir = WINGs/Examples ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ $(top_srcdir)/m4/ax_pthread.m4 \ $(top_srcdir)/m4/ld-version-script.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/windowmaker.m4 \ $(top_srcdir)/m4/wm_attributes.m4 \ $(top_srcdir)/m4/wm_cflags_check.m4 \ $(top_srcdir)/m4/wm_i18n.m4 \ $(top_srcdir)/m4/wm_imgfmt_check.m4 \ $(top_srcdir)/m4/wm_libexif.m4 $(top_srcdir)/m4/wm_libmath.m4 \ $(top_srcdir)/m4/wm_prog_cc_c11.m4 \ $(top_srcdir)/m4/wm_xext_check.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) colorpick_SOURCES = colorpick.c colorpick_OBJECTS = colorpick.$(OBJEXT) colorpick_LDADD = $(LDADD) AM_V_lt = $(am__v_lt_$(V)) am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) am__v_lt_0 = --silent am__v_lt_1 = fontl_SOURCES = fontl.c fontl_OBJECTS = fontl.$(OBJEXT) fontl_LDADD = $(LDADD) puzzle_SOURCES = puzzle.c puzzle_OBJECTS = puzzle.$(OBJEXT) puzzle_LDADD = $(LDADD) AM_V_P = $(am__v_P_$(V)) am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I. -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/colorpick.Po ./$(DEPDIR)/fontl.Po \ ./$(DEPDIR)/puzzle.Po am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_$(V)) am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_$(V)) am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = colorpick.c fontl.c puzzle.c DIST_SOURCES = colorpick.c fontl.c puzzle.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp README DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = ${SHELL} /home/profzoom/src/wmaker/wmaker-crm/missing aclocal-1.16 AMTAR = $${TAR-tar} AM_DEFAULT_VERBOSITY = 1 AR = ar AUTOCONF = ${SHELL} /home/profzoom/src/wmaker/wmaker-crm/missing autoconf AUTOHEADER = ${SHELL} /home/profzoom/src/wmaker/wmaker-crm/missing autoheader AUTOMAKE = ${SHELL} /home/profzoom/src/wmaker/wmaker-crm/missing automake-1.16 AWK = gawk CC = gcc CCDEPMODE = depmode=gcc3 CFLAGS = -g -O2 -Wall -Wextra -Wno-sign-compare -Werror=trampolines -Wno-deprecated -Wno-deprecated-declarations CPP = gcc -E CPPFLAGS = -DNDEBUG -D_XOPEN_SOURCE=600 -D_GNU_SOURCE CYGPATH_W = echo DEFS = -DHAVE_CONFIG_H DEPDIR = .deps DLLTOOL = false DSYMUTIL = DUMPBIN = ECHO_C = ECHO_N = -n ECHO_T = EGREP = /bin/grep -E EXEEXT = FCLIBS = -lfontconfig -lfreetype FGREP = /bin/grep -F GFXLIBS = -lXpm -lpng -ljpeg -lgif -ltiff GREP = /bin/grep HEADER_SEARCH_PATH = -I${includedir} ICONEXT = tiff INSTALL = /usr/bin/install -c INSTALL_DATA = ${INSTALL} -m 644 INSTALL_PROGRAM = ${INSTALL} INSTALL_SCRIPT = ${INSTALL} INSTALL_STRIP_PROGRAM = $(install_sh) -c -s INTLIBS = LD = /usr/bin/ld -m elf_x86_64 LDFLAGS = LIBBSD = LIBEXIF = LIBM = -lm LIBOBJS = LIBRARY_SEARCH_PATH = -L${libdir} LIBS = LIBTOOL = $(SHELL) $(top_builddir)/libtool LIBXINERAMA = -lXinerama LIBXMU = -lXmu LIBXRANDR = LINGUAS = LIPO = LN_S = ln -s LTLIBOBJS = LT_SYS_LIBRARY_PATH = MAGICKFLAGS = MAGICKLIBS = MAKEINFO = ${SHELL} /home/profzoom/src/wmaker/wmaker-crm/missing makeinfo MANIFEST_TOOL = : MANLANGDIRS = MKDIR_P = /bin/mkdir -p MSGFMT = NM = /usr/bin/nm -B NMEDIT = OBJDUMP = objdump OBJEXT = o OTOOL = OTOOL64 = PACKAGE = WindowMaker PACKAGE_BUGREPORT = wmaker-dev@googlegroups.com PACKAGE_NAME = WindowMaker PACKAGE_STRING = WindowMaker 0.95.9 PACKAGE_TARNAME = WindowMaker PACKAGE_URL = http://www.windowmaker.org/ PACKAGE_VERSION = 0.95.9 PANGOLIBS = PATH_SEPARATOR = : PKG_CONFIG = /usr/bin/pkg-config PKG_CONFIG_LIBDIR = PKG_CONFIG_PATH = PTHREAD_CC = gcc PTHREAD_CFLAGS = -pthread PTHREAD_LIBS = RANLIB = ranlib SED = /bin/sed SET_MAKE = SHELL = /bin/bash STRIP = strip UTILMOFILES = VERSION = 0.95.9 WINGSMOFILES = WINGS_VERSION = 4:0:1 WMAKERMOFILES = WPREFSMOFILES = WRASTER_VERSION = 6:0:0 WUTIL_VERSION = 5:0:0 XCFLAGS = XFTCONFIG = /usr/bin/pkg-config xft XFTFLAGS = -I/usr/include/uuid -I/usr/include/freetype2 -I/usr/include/libpng16 XFTLIBS = -lXft XGETTEXT = xgettext XLFLAGS = XLIBS = -lX11 -lXext XMKMF = X_CFLAGS = X_EXTRA_LIBS = X_LIBRARY_PATH = X_LIBS = X_PRE_LIBS = -lSM -lICE abs_builddir = /home/profzoom/src/wmaker/wmaker-crm/WINGs/Examples abs_srcdir = /home/profzoom/src/wmaker/wmaker-crm/WINGs/Examples abs_top_builddir = /home/profzoom/src/wmaker/wmaker-crm abs_top_srcdir = /home/profzoom/src/wmaker/wmaker-crm ac_ct_AR = ar ac_ct_CC = gcc ac_ct_DUMPBIN = am__include = include am__leading_dot = . am__quote = am__tar = $${TAR-tar} chof - "$$tardir" am__untar = $${TAR-tar} xf - ax_pthread_config = bindir = ${exec_prefix}/bin build = x86_64-pc-linux-gnu build_alias = build_cpu = x86_64 build_os = linux-gnu build_vendor = pc builddir = . datadir = ${datarootdir} datarootdir = ${prefix}/share defsdatadir = ${sysconfdir}/WindowMaker docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} dvidir = ${docdir} exec_prefix = ${prefix} host = x86_64-pc-linux-gnu host_alias = host_cpu = x86_64 host_os = linux-gnu host_vendor = pc htmldir = ${docdir} inc_search_path = -I${includedir} includedir = ${prefix}/include infodir = ${datarootdir}/info install_sh = ${SHELL} /home/profzoom/src/wmaker/wmaker-crm/install-sh lcov_output_directory = lib_search_path = -L${libdir} libdir = ${exec_prefix}/lib libexecdir = ${exec_prefix}/libexec localedir = ${datarootdir}/locale localstatedir = ${prefix}/var mandir = ${datarootdir}/man mkdir_p = $(MKDIR_P) oldincludedir = /usr/include pdfdir = ${docdir} pixmapdir = ${datadir}/pixmaps prefix = /usr/local program_transform_name = s,x,x, psdir = ${docdir} runstatedir = ${localstatedir}/run sbindir = ${exec_prefix}/sbin sharedstatedir = ${prefix}/com srcdir = . sysconfdir = ${prefix}/etc target_alias = top_build_prefix = ../../ top_builddir = ../.. top_srcdir = ../.. wprefs_bindir = ${exec_prefix}/bin wprefs_datadir = ${datarootdir}/WPrefs AUTOMAKE_OPTIONS = LDADD = $(top_builddir)/WINGs/libWINGs.la $(top_builddir)/wrlib/libwraster.la \ $(top_builddir)/WINGs/libWUtil.la \ -lXft -lX11 -lXext colorpick_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.la fontl_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.la puzzle_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.la AM_CPPFLAGS = -I$(top_srcdir)/WINGs -I$(top_srcdir)/wrlib -I$(top_srcdir)/src \ -DRESOURCE_PATH=\"$(datadir)/WINGs\" -I${includedir} all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu WINGs/Examples/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu WINGs/Examples/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list colorpick$(EXEEXT): $(colorpick_OBJECTS) $(colorpick_DEPENDENCIES) $(EXTRA_colorpick_DEPENDENCIES) @rm -f colorpick$(EXEEXT) $(AM_V_CCLD)$(LINK) $(colorpick_OBJECTS) $(colorpick_LDADD) $(LIBS) fontl$(EXEEXT): $(fontl_OBJECTS) $(fontl_DEPENDENCIES) $(EXTRA_fontl_DEPENDENCIES) @rm -f fontl$(EXEEXT) $(AM_V_CCLD)$(LINK) $(fontl_OBJECTS) $(fontl_LDADD) $(LIBS) puzzle$(EXEEXT): $(puzzle_OBJECTS) $(puzzle_DEPENDENCIES) $(EXTRA_puzzle_DEPENDENCIES) @rm -f puzzle$(EXEEXT) $(AM_V_CCLD)$(LINK) $(puzzle_OBJECTS) $(puzzle_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c include ./$(DEPDIR)/colorpick.Po # am--include-marker include ./$(DEPDIR)/fontl.Po # am--include-marker include ./$(DEPDIR)/puzzle.Po # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @echo '# dummy' >$@-t && $(am__mv) $@-t $@ am--depfiles: $(am__depfiles_remade) .c.o: $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po # $(AM_V_CC)source='$<' object='$@' libtool=no \ # DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ # $(AM_V_CC_no)$(COMPILE) -c -o $@ $< .c.obj: $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po # $(AM_V_CC)source='$<' object='$@' libtool=no \ # DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ # $(AM_V_CC_no)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo # $(AM_V_CC)source='$<' object='$@' libtool=yes \ # DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ # $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -f ./$(DEPDIR)/colorpick.Po -rm -f ./$(DEPDIR)/fontl.Po -rm -f ./$(DEPDIR)/puzzle.Po -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/colorpick.Po -rm -f ./$(DEPDIR)/fontl.Po -rm -f ./$(DEPDIR)/puzzle.Po -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \ ctags ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # 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. .NOEXPORT: �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Examples/Makefile.am�������������������������������������������������������0000644�0001750�0001750�00000001070�13431646201�015525� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������## automake input file for WINGs - Examples AUTOMAKE_OPTIONS = noinst_PROGRAMS = fontl puzzle colorpick LDADD= $(top_builddir)/WINGs/libWINGs.la $(top_builddir)/wrlib/libwraster.la \ $(top_builddir)/WINGs/libWUtil.la \ @XFTLIBS@ @INTLIBS@ @XLIBS@ colorpick_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.la fontl_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.la puzzle_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.la AM_CPPFLAGS = -I$(top_srcdir)/WINGs -I$(top_srcdir)/wrlib -I$(top_srcdir)/src \ -DRESOURCE_PATH=\"$(datadir)/WINGs\" @HEADER_SEARCH_PATH@ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/wpixmap.c������������������������������������������������������������������0000644�0001750�0001750�00000012762�13431646201�013556� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include "WINGsP.h" #include <wraster.h> WMPixmap *WMRetainPixmap(WMPixmap * pixmap) { if (pixmap) pixmap->refCount++; return pixmap; } void WMReleasePixmap(WMPixmap * pixmap) { wassertr(pixmap != NULL); pixmap->refCount--; if (pixmap->refCount < 1) { if (pixmap->pixmap) XFreePixmap(pixmap->screen->display, pixmap->pixmap); if (pixmap->mask) XFreePixmap(pixmap->screen->display, pixmap->mask); wfree(pixmap); } } WMPixmap *WMCreatePixmap(WMScreen * scrPtr, int width, int height, int depth, Bool masked) { WMPixmap *pixPtr; pixPtr = wmalloc(sizeof(WMPixmap)); pixPtr->screen = scrPtr; pixPtr->width = width; pixPtr->height = height; pixPtr->depth = depth; pixPtr->refCount = 1; pixPtr->pixmap = XCreatePixmap(scrPtr->display, W_DRAWABLE(scrPtr), width, height, depth); if (masked) { pixPtr->mask = XCreatePixmap(scrPtr->display, W_DRAWABLE(scrPtr), width, height, 1); } else { pixPtr->mask = None; } return pixPtr; } WMPixmap *WMCreatePixmapFromXPixmaps(WMScreen * scrPtr, Pixmap pixmap, Pixmap mask, int width, int height, int depth) { WMPixmap *pixPtr; pixPtr = wmalloc(sizeof(WMPixmap)); pixPtr->screen = scrPtr; pixPtr->pixmap = pixmap; pixPtr->mask = mask; pixPtr->width = width; pixPtr->height = height; pixPtr->depth = depth; pixPtr->refCount = 1; return pixPtr; } WMPixmap *WMCreatePixmapFromFile(WMScreen * scrPtr, const char *fileName) { WMPixmap *pixPtr; RImage *image; image = RLoadImage(scrPtr->rcontext, fileName, 0); if (!image) return NULL; pixPtr = WMCreatePixmapFromRImage(scrPtr, image, 127); RReleaseImage(image); return pixPtr; } WMPixmap *WMCreatePixmapFromRImage(WMScreen * scrPtr, RImage * image, int threshold) { WMPixmap *pixPtr; Pixmap pixmap, mask; if (image == NULL) return NULL; if (!RConvertImageMask(scrPtr->rcontext, image, &pixmap, &mask, threshold)) { return NULL; } pixPtr = wmalloc(sizeof(WMPixmap)); pixPtr->screen = scrPtr; pixPtr->pixmap = pixmap; pixPtr->mask = mask; pixPtr->width = image->width; pixPtr->height = image->height; pixPtr->depth = scrPtr->depth; pixPtr->refCount = 1; return pixPtr; } WMPixmap *WMCreateBlendedPixmapFromRImage(WMScreen * scrPtr, RImage * image, const RColor * color) { WMPixmap *pixPtr; RImage *copy; copy = RCloneImage(image); if (!copy) return NULL; RCombineImageWithColor(copy, color); pixPtr = WMCreatePixmapFromRImage(scrPtr, copy, 0); RReleaseImage(copy); return pixPtr; } WMPixmap *WMCreateBlendedPixmapFromFile(WMScreen * scrPtr, const char *fileName, const RColor * color) { return WMCreateScaledBlendedPixmapFromFile(scrPtr, fileName, color, 0, 0); } WMPixmap *WMCreateScaledBlendedPixmapFromFile(WMScreen *scrPtr, const char *fileName, const RColor *color, unsigned int width, unsigned int height) { WMPixmap *pixPtr; RImage *image; image = RLoadImage(scrPtr->rcontext, fileName, 0); if (!image) return NULL; /* scale it if needed to fit in the specified box */ if ((width > 0) && (height > 0) && ((image->width > width) || (image->height > height))) { int new_width, new_height; RImage *new_image; new_width = image->width; new_height = image->height; if (new_width > width) { new_width = width; new_height = width * image->height / image->width; } if (new_height > height) { new_width = height * image->width / image->height; new_height = height; } new_image = RScaleImage(image, new_width, new_height); RReleaseImage(image); image = new_image; } RCombineImageWithColor(image, color); pixPtr = WMCreatePixmapFromRImage(scrPtr, image, 0); RReleaseImage(image); return pixPtr; } WMPixmap *WMCreatePixmapFromXPMData(WMScreen * scrPtr, char **data) { WMPixmap *pixPtr; RImage *image; image = RGetImageFromXPMData(scrPtr->rcontext, data); if (!image) return NULL; pixPtr = WMCreatePixmapFromRImage(scrPtr, image, 127); RReleaseImage(image); return pixPtr; } Pixmap WMGetPixmapXID(WMPixmap * pixmap) { wassertrv(pixmap != NULL, None); return pixmap->pixmap; } Pixmap WMGetPixmapMaskXID(WMPixmap * pixmap) { wassertrv(pixmap != NULL, None); return pixmap->mask; } WMSize WMGetPixmapSize(WMPixmap * pixmap) { WMSize size = { 0, 0 }; wassertrv(pixmap != NULL, size); size.width = pixmap->width; size.height = pixmap->height; return size; } WMPixmap *WMGetSystemPixmap(WMScreen * scr, int image) { switch (image) { case WSIReturnArrow: return WMRetainPixmap(scr->buttonArrow); case WSIHighlightedReturnArrow: return WMRetainPixmap(scr->pushedButtonArrow); case WSIScrollerDimple: return WMRetainPixmap(scr->scrollerDimple); case WSIArrowLeft: return WMRetainPixmap(scr->leftArrow); case WSIHighlightedArrowLeft: return WMRetainPixmap(scr->hiLeftArrow); case WSIArrowRight: return WMRetainPixmap(scr->rightArrow); case WSIHighlightedArrowRight: return WMRetainPixmap(scr->hiRightArrow); case WSIArrowUp: return WMRetainPixmap(scr->upArrow); case WSIHighlightedArrowUp: return WMRetainPixmap(scr->hiUpArrow); case WSIArrowDown: return WMRetainPixmap(scr->downArrow); case WSIHighlightedArrowDown: return WMRetainPixmap(scr->hiDownArrow); case WSICheckMark: return WMRetainPixmap(scr->checkMark); default: return NULL; } } void WMDrawPixmap(WMPixmap * pixmap, Drawable d, int x, int y) { WMScreen *scr = pixmap->screen; XSetClipMask(scr->display, scr->clipGC, pixmap->mask); XSetClipOrigin(scr->display, scr->clipGC, x, y); XCopyArea(scr->display, pixmap->pixmap, d, scr->clipGC, 0, 0, pixmap->width, pixmap->height, x, y); } ��������������WindowMaker-0.95.9/WINGs/wslider.c������������������������������������������������������������������0000644�0001750�0001750�00000027676�13431646201�013554� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include "WINGsP.h" #undef STRICT_NEXT_BEHAVIOUR typedef struct W_Slider { W_Class widgetClass; WMView *view; int minValue; int maxValue; int value; Pixmap knobPixmap; WMPixmap *backPixmap; WMAction *action; void *clientData; int knobThickness; struct { unsigned int continuous:1; unsigned int vertical:1; unsigned int dragging:1; } flags; } Slider; static void didResizeSlider(W_ViewDelegate * self, WMView * view); W_ViewDelegate _SliderViewDelegate = { NULL, NULL, didResizeSlider, NULL, NULL }; static void destroySlider(Slider * sPtr); static void paintSlider(Slider * sPtr); static void handleEvents(XEvent * event, void *data); static void handleActionEvents(XEvent * event, void *data); static void makeKnobPixmap(Slider * sPtr); static void realizeObserver(void *self, WMNotification * not) { /* Parameter not used, but tell the compiler that it is ok */ (void) not; makeKnobPixmap(self); } WMSlider *WMCreateSlider(WMWidget * parent) { Slider *sPtr; sPtr = wmalloc(sizeof(Slider)); sPtr->widgetClass = WC_Slider; sPtr->view = W_CreateView(W_VIEW(parent)); if (!sPtr->view) { wfree(sPtr); return NULL; } sPtr->view->self = sPtr; sPtr->view->delegate = &_SliderViewDelegate; WMCreateEventHandler(sPtr->view, ExposureMask | StructureNotifyMask, handleEvents, sPtr); WMCreateEventHandler(sPtr->view, ButtonPressMask | ButtonReleaseMask | EnterWindowMask | LeaveWindowMask | ButtonMotionMask, handleActionEvents, sPtr); W_ResizeView(sPtr->view, 100, 16); sPtr->flags.vertical = 0; sPtr->minValue = 0; sPtr->maxValue = 100; sPtr->value = 50; sPtr->knobThickness = 20; sPtr->flags.continuous = 1; WMAddNotificationObserver(realizeObserver, sPtr, WMViewRealizedNotification, sPtr->view); return sPtr; } void WMSetSliderImage(WMSlider * sPtr, WMPixmap * pixmap) { if (sPtr->backPixmap) WMReleasePixmap(sPtr->backPixmap); sPtr->backPixmap = WMRetainPixmap(pixmap); if (sPtr->view->flags.mapped) { paintSlider(sPtr); } } void WMSetSliderKnobThickness(WMSlider * sPtr, int thickness) { assert(thickness > 0); sPtr->knobThickness = thickness; if (sPtr->knobPixmap) { makeKnobPixmap(sPtr); } if (sPtr->view->flags.mapped) { paintSlider(sPtr); } } int WMGetSliderMinValue(WMSlider * slider) { CHECK_CLASS(slider, WC_Slider); return slider->minValue; } int WMGetSliderMaxValue(WMSlider * slider) { CHECK_CLASS(slider, WC_Slider); return slider->maxValue; } int WMGetSliderValue(WMSlider * slider) { CHECK_CLASS(slider, WC_Slider); return slider->value; } void WMSetSliderMinValue(WMSlider * slider, int value) { CHECK_CLASS(slider, WC_Slider); slider->minValue = value; if (slider->value < value) { slider->value = value; if (slider->view->flags.mapped) paintSlider(slider); } } void WMSetSliderMaxValue(WMSlider * slider, int value) { CHECK_CLASS(slider, WC_Slider); slider->maxValue = value; if (slider->value > value) { slider->value = value; if (slider->view->flags.mapped) paintSlider(slider); } } void WMSetSliderValue(WMSlider * slider, int value) { CHECK_CLASS(slider, WC_Slider); if (value < slider->minValue) slider->value = slider->minValue; else if (value > slider->maxValue) slider->value = slider->maxValue; else slider->value = value; if (slider->view->flags.mapped) paintSlider(slider); } void WMSetSliderContinuous(WMSlider * slider, Bool flag) { CHECK_CLASS(slider, WC_Slider); slider->flags.continuous = ((flag == 0) ? 0 : 1); } void WMSetSliderAction(WMSlider * slider, WMAction * action, void *data) { CHECK_CLASS(slider, WC_Slider); slider->action = action; slider->clientData = data; } static void makeKnobPixmap(Slider * sPtr) { Pixmap pix; WMScreen *scr = sPtr->view->screen; int w, h; if (sPtr->flags.vertical) { w = sPtr->view->size.width - 2; h = sPtr->knobThickness; } else { w = sPtr->knobThickness; h = sPtr->view->size.height - 2; } pix = XCreatePixmap(scr->display, sPtr->view->window, w, h, scr->depth); XFillRectangle(scr->display, pix, WMColorGC(scr->gray), 0, 0, w, h); if (sPtr->knobThickness < 10) { W_DrawRelief(scr, pix, 0, 0, w, h, WRRaised); } else if (sPtr->flags.vertical) { XDrawLine(scr->display, pix, WMColorGC(scr->white), 0, 0, 0, h - 3); XDrawLine(scr->display, pix, WMColorGC(scr->white), 1, 0, 1, h - 3); XDrawLine(scr->display, pix, WMColorGC(scr->darkGray), w - 2, 1, w - 2, h / 2 - 2); XDrawLine(scr->display, pix, WMColorGC(scr->darkGray), w - 2, h / 2, w - 2, h - 2); XDrawLine(scr->display, pix, WMColorGC(scr->white), 0, 0, w - 2, 0); XDrawLine(scr->display, pix, WMColorGC(scr->darkGray), 1, h / 2 - 2, w - 3, h / 2 - 2); XDrawLine(scr->display, pix, WMColorGC(scr->white), 0, h / 2 - 1, w - 3, h / 2 - 1); XDrawLine(scr->display, pix, WMColorGC(scr->black), w - 1, 0, w - 1, h - 2); XDrawLine(scr->display, pix, WMColorGC(scr->darkGray), 0, h - 3, w - 2, h - 3); XDrawLine(scr->display, pix, WMColorGC(scr->black), 0, h - 2, w - 1, h - 2); XDrawLine(scr->display, pix, WMColorGC(scr->darkGray), 0, h - 1, w - 1, h - 1); } else { XDrawLine(scr->display, pix, WMColorGC(scr->white), 0, 0, w - 3, 0); XDrawLine(scr->display, pix, WMColorGC(scr->white), 0, 0, 0, h - 2); XDrawLine(scr->display, pix, WMColorGC(scr->white), 1, 0, 1, h - 3); XDrawLine(scr->display, pix, WMColorGC(scr->darkGray), w / 2 - 2, 1, w / 2 - 2, h - 3); XDrawLine(scr->display, pix, WMColorGC(scr->white), w / 2 - 1, 0, w / 2 - 1, h - 3); XDrawLine(scr->display, pix, WMColorGC(scr->darkGray), w - 3, 0, w - 3, h - 2); XDrawLine(scr->display, pix, WMColorGC(scr->black), w - 2, 0, w - 2, h - 2); XDrawLine(scr->display, pix, WMColorGC(scr->darkGray), w - 1, 0, w - 1, h - 1); XDrawLine(scr->display, pix, WMColorGC(scr->black), 1, h - 1, w / 2 + 1, h - 1); XDrawLine(scr->display, pix, WMColorGC(scr->darkGray), 1, h - 2, w / 2 - 2, h - 2); XDrawLine(scr->display, pix, WMColorGC(scr->darkGray), w / 2, h - 2, w - 3, h - 2); XDrawLine(scr->display, pix, WMColorGC(scr->black), 0, h - 1, w - 2, h - 1); } if (sPtr->knobPixmap) XFreePixmap(scr->display, sPtr->knobPixmap); sPtr->knobPixmap = pix; } static void didResizeSlider(W_ViewDelegate * self, WMView * view) { Slider *sPtr = (Slider *) view->self; int width = sPtr->view->size.width; int height = sPtr->view->size.height; /* Parameter not used, but tell the compiler that it is ok */ (void) self; assert(width > 0); assert(height > 0); if (width > height) { if (sPtr->flags.vertical) { sPtr->flags.vertical = 0; if (sPtr->view->flags.realized) makeKnobPixmap(sPtr); } } else { if (!sPtr->flags.vertical) { sPtr->flags.vertical = 1; if (sPtr->view->flags.realized) makeKnobPixmap(sPtr); } } } static void paintSlider(Slider * sPtr) { W_Screen *scr = sPtr->view->screen; GC bgc; GC wgc; GC lgc; WMSize size = sPtr->view->size; int pos; Pixmap buffer; #define MINV sPtr->minValue #define MAXV sPtr->maxValue #define POSV sPtr->value bgc = WMColorGC(scr->black); wgc = WMColorGC(scr->white); lgc = WMColorGC(scr->gray); buffer = XCreatePixmap(scr->display, sPtr->view->window, size.width, size.height, scr->depth); if (sPtr->backPixmap) { WMSize size = WMGetPixmapSize(sPtr->backPixmap); XCopyArea(scr->display, WMGetPixmapXID(sPtr->backPixmap), buffer, scr->copyGC, 0, 0, size.width, size.height, 1, 1); } else { XFillRectangle(scr->display, buffer, lgc, 0, 0, size.width, size.height); XFillRectangle(scr->display, buffer, scr->stippleGC, 0, 0, size.width, size.height); } if (sPtr->flags.vertical) { pos = (size.height - 2 - sPtr->knobThickness) * (POSV - MINV) / (MAXV - MINV) + 1; /* draw knob */ XCopyArea(scr->display, sPtr->knobPixmap, buffer, scr->copyGC, 0, 0, size.width - 2, sPtr->knobThickness, 1, pos); } else { pos = (size.width - 2 - sPtr->knobThickness) * (POSV - MINV) / (MAXV - MINV) + 1; /* draw knob */ XCopyArea(scr->display, sPtr->knobPixmap, buffer, scr->copyGC, 0, 0, sPtr->knobThickness, size.height, pos, 1); } XDrawLine(scr->display, buffer, bgc, 0, 0, 0, size.height - 1); XDrawLine(scr->display, buffer, bgc, 0, 0, size.width, 0); XDrawLine(scr->display, buffer, wgc, size.width - 1, 0, size.width - 1, size.height - 1); XDrawLine(scr->display, buffer, wgc, 0, size.height - 1, size.width - 1, size.height - 1); XCopyArea(scr->display, buffer, sPtr->view->window, scr->copyGC, 0, 0, size.width, size.height, 0, 0); XFreePixmap(scr->display, buffer); } static void handleEvents(XEvent * event, void *data) { Slider *sPtr = (Slider *) data; CHECK_CLASS(data, WC_Slider); switch (event->type) { case Expose: if (event->xexpose.count != 0) break; paintSlider(sPtr); break; case DestroyNotify: destroySlider(sPtr); break; } } #define DECR_PART 1 #define KNOB_PART 2 #define INCR_PART 3 static int getSliderPart(Slider * sPtr, int x, int y) { int p; int pos; WMSize size = sPtr->view->size; if (sPtr->flags.vertical) { p = y; pos = (size.height - 2 - sPtr->knobThickness) * (POSV - MINV) / (MAXV - MINV); if (p < pos) return INCR_PART; if (p > pos + sPtr->knobThickness) return DECR_PART; return KNOB_PART; } else { p = x; pos = (size.width - 2 - sPtr->knobThickness) * (POSV - MINV) / (MAXV - MINV); if (p < pos) return DECR_PART; if (p > pos + sPtr->knobThickness) return INCR_PART; return KNOB_PART; } } static int valueForMousePoint(Slider * sPtr, int x, int y) { WMSize size = sPtr->view->size; int f; if (sPtr->flags.vertical) { f = (y - sPtr->knobThickness / 2) * (MAXV - MINV) / ((int)size.height - 2 - sPtr->knobThickness); } else { f = (x - sPtr->knobThickness / 2) * (MAXV - MINV) / ((int)size.width - 2 - sPtr->knobThickness); } f += sPtr->minValue; if (f < sPtr->minValue) f = sPtr->minValue; else if (f > sPtr->maxValue) f = sPtr->maxValue; return f; } static void handleActionEvents(XEvent * event, void *data) { WMSlider *sPtr = (Slider *) data; CHECK_CLASS(data, WC_Slider); switch (event->type) { case ButtonPress: if (event->xbutton.button == WINGsConfiguration.mouseWheelDown && !sPtr->flags.dragging) { /* Wheel down */ if (sPtr->value + 1 <= sPtr->maxValue) { WMSetSliderValue(sPtr, sPtr->value + 1); if (sPtr->flags.continuous && sPtr->action) { (*sPtr->action) (sPtr, sPtr->clientData); } } } else if (event->xbutton.button == WINGsConfiguration.mouseWheelUp && !sPtr->flags.dragging) { /* Wheel up */ if (sPtr->value - 1 >= sPtr->minValue) { WMSetSliderValue(sPtr, sPtr->value - 1); if (sPtr->flags.continuous && sPtr->action) { (*sPtr->action) (sPtr, sPtr->clientData); } } } else if (getSliderPart(sPtr, event->xbutton.x, event->xbutton.y) == KNOB_PART) sPtr->flags.dragging = 1; else { #ifdef STRICT_NEXT_BEHAVIOUR sPtr->flags.dragging = 1; sPtr->value = valueForMousePoint(sPtr, event->xmotion.x, event->xmotion.y); paintSlider(sPtr); #else int tmp; if (event->xbutton.button == Button2) { sPtr->flags.dragging = 1; sPtr->value = valueForMousePoint(sPtr, event->xmotion.x, event->xmotion.y); paintSlider(sPtr); } else { tmp = valueForMousePoint(sPtr, event->xmotion.x, event->xmotion.y); if (tmp < sPtr->value) tmp = sPtr->value - 1; else tmp = sPtr->value + 1; WMSetSliderValue(sPtr, tmp); } #endif if (sPtr->flags.continuous && sPtr->action) { (*sPtr->action) (sPtr, sPtr->clientData); } } break; case ButtonRelease: if (!sPtr->flags.continuous && sPtr->action) { (*sPtr->action) (sPtr, sPtr->clientData); } sPtr->flags.dragging = 0; break; case MotionNotify: if (sPtr->flags.dragging) { sPtr->value = valueForMousePoint(sPtr, event->xmotion.x, event->xmotion.y); paintSlider(sPtr); if (sPtr->flags.continuous && sPtr->action) { (*sPtr->action) (sPtr, sPtr->clientData); } } break; } } static void destroySlider(Slider * sPtr) { if (sPtr->knobPixmap) XFreePixmap(sPtr->view->screen->display, sPtr->knobPixmap); if (sPtr->backPixmap) WMReleasePixmap(sPtr->backPixmap); WMRemoveNotificationObserver(sPtr); wfree(sPtr); } ������������������������������������������������������������������WindowMaker-0.95.9/WINGs/notification.c�������������������������������������������������������������0000644�0001750�0001750�00000027573�13431646201�014565� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include <stdlib.h> #include <assert.h> #include <stdio.h> #include <string.h> #include "WUtil.h" #include "WINGsP.h" typedef struct W_Notification { const char *name; void *object; void *clientData; int refCount; } Notification; const char *WMGetNotificationName(WMNotification * notification) { return notification->name; } void *WMGetNotificationObject(WMNotification * notification) { return notification->object; } void *WMGetNotificationClientData(WMNotification * notification) { return notification->clientData; } WMNotification *WMCreateNotification(const char *name, void *object, void *clientData) { Notification *nPtr; nPtr = wmalloc(sizeof(Notification)); nPtr->name = name; nPtr->object = object; nPtr->clientData = clientData; nPtr->refCount = 1; return nPtr; } void WMReleaseNotification(WMNotification * notification) { notification->refCount--; if (notification->refCount < 1) { wfree(notification); } } WMNotification *WMRetainNotification(WMNotification * notification) { notification->refCount++; return notification; } /***************** Notification Center *****************/ typedef struct NotificationObserver { WMNotificationObserverAction *observerAction; void *observer; const char *name; void *object; struct NotificationObserver *prev; /* for tables */ struct NotificationObserver *next; struct NotificationObserver *nextAction; /* for observerTable */ } NotificationObserver; typedef struct W_NotificationCenter { WMHashTable *nameTable; /* names -> observer lists */ WMHashTable *objectTable; /* object -> observer lists */ NotificationObserver *nilList; /* obervers that catch everything */ WMHashTable *observerTable; /* observer -> NotificationObserver */ } NotificationCenter; /* default (and only) center */ static NotificationCenter *notificationCenter = NULL; void W_InitNotificationCenter(void) { notificationCenter = wmalloc(sizeof(NotificationCenter)); notificationCenter->nameTable = WMCreateHashTable(WMStringPointerHashCallbacks); notificationCenter->objectTable = WMCreateHashTable(WMIntHashCallbacks); notificationCenter->nilList = NULL; notificationCenter->observerTable = WMCreateHashTable(WMIntHashCallbacks); } void W_ReleaseNotificationCenter(void) { if (notificationCenter) { if (notificationCenter->nameTable) WMFreeHashTable(notificationCenter->nameTable); if (notificationCenter->objectTable) WMFreeHashTable(notificationCenter->objectTable); if (notificationCenter->observerTable) WMFreeHashTable(notificationCenter->observerTable); wfree(notificationCenter); notificationCenter = NULL; } } void WMAddNotificationObserver(WMNotificationObserverAction * observerAction, void *observer, const char *name, void *object) { NotificationObserver *oRec, *rec; oRec = wmalloc(sizeof(NotificationObserver)); oRec->observerAction = observerAction; oRec->observer = observer; oRec->name = name; oRec->object = object; oRec->next = NULL; oRec->prev = NULL; /* put this action in the list of actions for this observer */ rec = (NotificationObserver *) WMHashInsert(notificationCenter->observerTable, observer, oRec); if (rec) { /* if this is not the first action for the observer */ oRec->nextAction = rec; } else { oRec->nextAction = NULL; } if (!name && !object) { /* catch-all */ oRec->next = notificationCenter->nilList; if (notificationCenter->nilList) { notificationCenter->nilList->prev = oRec; } notificationCenter->nilList = oRec; } else if (!name) { /* any message coming from object */ rec = (NotificationObserver *) WMHashInsert(notificationCenter->objectTable, object, oRec); oRec->next = rec; if (rec) { rec->prev = oRec; } } else { /* name && (object || !object) */ rec = (NotificationObserver *) WMHashInsert(notificationCenter->nameTable, name, oRec); oRec->next = rec; if (rec) { rec->prev = oRec; } } } void WMPostNotification(WMNotification * notification) { NotificationObserver *orec, *tmp; WMRetainNotification(notification); /* tell the observers that want to know about a particular message */ orec = (NotificationObserver *) WMHashGet(notificationCenter->nameTable, notification->name); while (orec) { tmp = orec->next; if (!orec->object || !notification->object || orec->object == notification->object) { /* tell the observer */ if (orec->observerAction) { (*orec->observerAction) (orec->observer, notification); } } orec = tmp; } /* tell the observers that want to know about an object */ orec = (NotificationObserver *) WMHashGet(notificationCenter->objectTable, notification->object); while (orec) { tmp = orec->next; /* tell the observer */ if (orec->observerAction) { (*orec->observerAction) (orec->observer, notification); } orec = tmp; } /* tell the catch all observers */ orec = notificationCenter->nilList; while (orec) { tmp = orec->next; /* tell the observer */ if (orec->observerAction) { (*orec->observerAction) (orec->observer, notification); } orec = tmp; } WMReleaseNotification(notification); } void WMRemoveNotificationObserver(void *observer) { NotificationObserver *orec, *tmp, *rec; /* get the list of actions the observer is doing */ orec = (NotificationObserver *) WMHashGet(notificationCenter->observerTable, observer); /* * FOREACH orec IN actionlist for observer * DO * remove from respective lists/tables * free * END */ while (orec) { tmp = orec->nextAction; if (!orec->name && !orec->object) { /* catch-all */ if (notificationCenter->nilList == orec) notificationCenter->nilList = orec->next; } else if (!orec->name) { /* any message coming from object */ rec = (NotificationObserver *) WMHashGet(notificationCenter->objectTable, orec->object); if (rec == orec) { /* replace table entry */ if (orec->next) { WMHashInsert(notificationCenter->objectTable, orec->object, orec->next); } else { WMHashRemove(notificationCenter->objectTable, orec->object); } } } else { /* name && (object || !object) */ rec = (NotificationObserver *) WMHashGet(notificationCenter->nameTable, orec->name); if (rec == orec) { /* replace table entry */ if (orec->next) { WMHashInsert(notificationCenter->nameTable, orec->name, orec->next); } else { WMHashRemove(notificationCenter->nameTable, orec->name); } } } if (orec->prev) orec->prev->next = orec->next; if (orec->next) orec->next->prev = orec->prev; wfree(orec); orec = tmp; } WMHashRemove(notificationCenter->observerTable, observer); } void WMRemoveNotificationObserverWithName(void *observer, const char *name, void *object) { NotificationObserver *orec, *tmp, *rec; NotificationObserver *newList = NULL; /* get the list of actions the observer is doing */ orec = (NotificationObserver *) 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) { if (!name && !object) { if (notificationCenter->nilList == orec) notificationCenter->nilList = orec->next; } else if (!name) { rec = (NotificationObserver *) WMHashGet(notificationCenter->objectTable, orec->object); if (rec == orec) { assert(rec->prev == NULL); /* replace table entry */ if (orec->next) { WMHashInsert(notificationCenter->objectTable, orec->object, orec->next); } else { WMHashRemove(notificationCenter->objectTable, orec->object); } } } else { rec = (NotificationObserver *) WMHashGet(notificationCenter->nameTable, orec->name); if (rec == orec) { assert(rec->prev == NULL); /* replace table entry */ if (orec->next) { WMHashInsert(notificationCenter->nameTable, orec->name, orec->next); } else { WMHashRemove(notificationCenter->nameTable, orec->name); } } } if (orec->prev) orec->prev->next = orec->next; if (orec->next) orec->next->prev = orec->prev; wfree(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); } } void WMPostNotificationName(const char *name, void *object, void *clientData) { WMNotification *notification; notification = WMCreateNotification(name, object, clientData); WMPostNotification(notification); WMReleaseNotification(notification); } /**************** Notification Queues ****************/ typedef struct W_NotificationQueue { WMArray *asapQueue; WMArray *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; } WMNotificationQueue *WMCreateNotificationQueue(void) { NotificationQueue *queue; queue = wmalloc(sizeof(NotificationQueue)); queue->asapQueue = WMCreateArrayWithDestructor(8, (WMFreeDataProc *) WMReleaseNotification); queue->idleQueue = WMCreateArrayWithDestructor(8, (WMFreeDataProc *) WMReleaseNotification); queue->next = notificationQueueList; notificationQueueList = queue; return queue; } void WMEnqueueNotification(WMNotificationQueue * queue, WMNotification * notification, WMPostingStyle postingStyle) { WMEnqueueCoalesceNotification(queue, notification, postingStyle, WNCOnName | WNCOnSender); } #define NOTIF ((WMNotification*)cdata) #define ITEM ((WMNotification*)item) static int matchSenderAndName(const void *item, const void *cdata) { return (NOTIF->object == ITEM->object && strcmp(NOTIF->name, ITEM->name) == 0); } static int matchSender(const void *item, const void *cdata) { return (NOTIF->object == ITEM->object); } static int matchName(const void *item, const void *cdata) { return (strcmp(NOTIF->name, ITEM->name) == 0); } #undef NOTIF #undef ITEM void WMDequeueNotificationMatching(WMNotificationQueue * queue, WMNotification * notification, unsigned mask) { WMMatchDataProc *matchFunc; if ((mask & WNCOnName) && (mask & WNCOnSender)) matchFunc = matchSenderAndName; else if (mask & WNCOnName) matchFunc = matchName; else if (mask & WNCOnSender) matchFunc = matchSender; else return; WMRemoveFromArrayMatching(queue->asapQueue, matchFunc, notification); WMRemoveFromArrayMatching(queue->idleQueue, matchFunc, notification); } void WMEnqueueCoalesceNotification(WMNotificationQueue * queue, WMNotification * notification, WMPostingStyle postingStyle, unsigned coalesceMask) { if (coalesceMask != WNCNone) WMDequeueNotificationMatching(queue, notification, coalesceMask); switch (postingStyle) { case WMPostNow: WMPostNotification(notification); WMReleaseNotification(notification); break; case WMPostASAP: WMAddToArray(queue->asapQueue, notification); break; case WMPostWhenIdle: WMAddToArray(queue->idleQueue, notification); break; } } void W_FlushASAPNotificationQueue(void) { WMNotificationQueue *queue = notificationQueueList; while (queue) { while (WMGetArrayItemCount(queue->asapQueue)) { WMPostNotification(WMGetFromArray(queue->asapQueue, 0)); WMDeleteFromArray(queue->asapQueue, 0); } queue = queue->next; } } void W_FlushIdleNotificationQueue(void) { WMNotificationQueue *queue = notificationQueueList; while (queue) { while (WMGetArrayItemCount(queue->idleQueue)) { WMPostNotification(WMGetFromArray(queue->idleQueue, 0)); WMDeleteFromArray(queue->idleQueue, 0); } queue = queue->next; } } �������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/tree.c���������������������������������������������������������������������0000644�0001750�0001750�00000012132�13431646201�013017� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include <string.h> #include "WUtil.h" typedef struct W_TreeNode { void *data; /*unsigned int uflags:16; */ WMArray *leaves; int depth; struct W_TreeNode *parent; WMFreeDataProc *destructor; } W_TreeNode; static void destroyNode(void *data) { WMTreeNode *aNode = (WMTreeNode *) data; if (aNode->destructor) { (*aNode->destructor) (aNode->data); } if (aNode->leaves) { WMFreeArray(aNode->leaves); } wfree(aNode); } WMTreeNode *WMCreateTreeNode(void *data) { return WMCreateTreeNodeWithDestructor(data, NULL); } WMTreeNode *WMCreateTreeNodeWithDestructor(void *data, WMFreeDataProc * destructor) { WMTreeNode *aNode; aNode = (WMTreeNode *) wmalloc(sizeof(W_TreeNode)); aNode->destructor = destructor; aNode->data = data; aNode->parent = NULL; aNode->depth = 0; aNode->leaves = NULL; /*aNode->leaves = WMCreateArrayWithDestructor(1, destroyNode); */ return aNode; } WMTreeNode *WMInsertItemInTree(WMTreeNode * parent, int index, void *item) { WMTreeNode *aNode; wassertrv(parent != NULL, NULL); aNode = WMCreateTreeNodeWithDestructor(item, parent->destructor); aNode->parent = parent; aNode->depth = parent->depth + 1; if (!parent->leaves) { parent->leaves = WMCreateArrayWithDestructor(1, destroyNode); } if (index < 0) { WMAddToArray(parent->leaves, aNode); } else { WMInsertInArray(parent->leaves, index, aNode); } return aNode; } static void updateNodeDepth(WMTreeNode * aNode, int depth) { int i; aNode->depth = depth; if (aNode->leaves) { for (i = 0; i < WMGetArrayItemCount(aNode->leaves); i++) { updateNodeDepth(WMGetFromArray(aNode->leaves, i), depth + 1); } } } WMTreeNode *WMInsertNodeInTree(WMTreeNode * parent, int index, WMTreeNode * aNode) { wassertrv(parent != NULL, NULL); wassertrv(aNode != NULL, NULL); aNode->parent = parent; updateNodeDepth(aNode, parent->depth + 1); if (!parent->leaves) { parent->leaves = WMCreateArrayWithDestructor(1, destroyNode); } if (index < 0) { WMAddToArray(parent->leaves, aNode); } else { WMInsertInArray(parent->leaves, index, aNode); } return aNode; } void WMDestroyTreeNode(WMTreeNode * aNode) { wassertr(aNode != NULL); if (aNode->parent && aNode->parent->leaves) { WMRemoveFromArray(aNode->parent->leaves, aNode); } else { destroyNode(aNode); } } void WMDeleteLeafForTreeNode(WMTreeNode * aNode, int index) { wassertr(aNode != NULL); wassertr(aNode->leaves != NULL); WMDeleteFromArray(aNode->leaves, index); } static int sameData(const void *item, const void *data) { return (((WMTreeNode *) item)->data == data); } void WMRemoveLeafForTreeNode(WMTreeNode * aNode, void *leaf) { int index; wassertr(aNode != NULL); wassertr(aNode->leaves != NULL); index = WMFindInArray(aNode->leaves, sameData, leaf); if (index != WANotFound) { WMDeleteFromArray(aNode->leaves, index); } } void *WMReplaceDataForTreeNode(WMTreeNode * aNode, void *newData) { void *old; wassertrv(aNode != NULL, NULL); old = aNode->data; aNode->data = newData; return old; } void *WMGetDataForTreeNode(WMTreeNode * aNode) { return aNode->data; } int WMGetTreeNodeDepth(WMTreeNode * aNode) { return aNode->depth; } WMTreeNode *WMGetParentForTreeNode(WMTreeNode * aNode) { return aNode->parent; } void WMSortLeavesForTreeNode(WMTreeNode * aNode, WMCompareDataProc * comparer) { wassertr(aNode != NULL); if (aNode->leaves) { WMSortArray(aNode->leaves, comparer); } } static void sortLeavesForNode(WMTreeNode * aNode, WMCompareDataProc * comparer) { int i; if (!aNode->leaves) return; WMSortArray(aNode->leaves, comparer); for (i = 0; i < WMGetArrayItemCount(aNode->leaves); i++) { sortLeavesForNode(WMGetFromArray(aNode->leaves, i), comparer); } } void WMSortTree(WMTreeNode * aNode, WMCompareDataProc * comparer) { wassertr(aNode != NULL); sortLeavesForNode(aNode, comparer); } static WMTreeNode *findNodeInTree(WMTreeNode * aNode, WMMatchDataProc * match, void *cdata, int limit) { if (match == NULL && aNode->data == cdata) return aNode; else if (match && (*match) (aNode->data, cdata)) return aNode; if (aNode->leaves && limit != 0) { WMTreeNode *leaf; int i; for (i = 0; i < WMGetArrayItemCount(aNode->leaves); i++) { leaf = findNodeInTree(WMGetFromArray(aNode->leaves, i), match, cdata, limit > 0 ? limit - 1 : limit); if (leaf) return leaf; } } return NULL; } WMTreeNode *WMFindInTree(WMTreeNode * aTree, WMMatchDataProc * match, void *cdata) { wassertrv(aTree != NULL, NULL); return findNodeInTree(aTree, match, cdata, -1); } WMTreeNode *WMFindInTreeWithDepthLimit(WMTreeNode * aTree, WMMatchDataProc * match, void *cdata, int limit) { wassertrv(aTree != NULL, NULL); wassertrv(limit >= 0, NULL); return findNodeInTree(aTree, match, cdata, limit); } void WMTreeWalk(WMTreeNode * aNode, WMTreeWalkProc * walk, void *data, Bool DepthFirst) { int i; WMTreeNode *leaf; wassertr(aNode != NULL); if (DepthFirst) (*walk)(aNode, data); if (aNode->leaves) { for (i = 0; i < WMGetArrayItemCount(aNode->leaves); i++) { leaf = (WMTreeNode *)WMGetFromArray(aNode->leaves, i); WMTreeWalk(leaf, walk, data, DepthFirst); } } if (!DepthFirst) (*walk)(aNode, data); } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/wscrollview.c��������������������������������������������������������������0000644�0001750�0001750�00000027213�13431646201�014446� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include "WINGsP.h" typedef struct W_ScrollView { W_Class widgetClass; WMView *view; WMView *contentView; WMView *viewport; WMScroller *vScroller; WMScroller *hScroller; short lineScroll; short pageScroll; struct { WMReliefType relief:3; unsigned int hasVScroller:1; unsigned int hasHScroller:1; } flags; } ScrollView; static void destroyScrollView(ScrollView * sPtr); static void paintScrollView(ScrollView * sPtr); static void handleEvents(XEvent * event, void *data); static void handleViewportEvents(XEvent * event, void *data); static void resizeScrollView(W_ViewDelegate *self, WMView *view); static void updateScrollerProportion(ScrollView *sPtr); W_ViewDelegate _ScrollViewViewDelegate = { NULL, NULL, resizeScrollView, NULL, NULL }; WMScrollView *WMCreateScrollView(WMWidget * parent) { ScrollView *sPtr; sPtr = wmalloc(sizeof(ScrollView)); sPtr->widgetClass = WC_ScrollView; sPtr->view = W_CreateView(W_VIEW(parent)); if (!sPtr->view) { wfree(sPtr); return NULL; } sPtr->viewport = W_CreateView(sPtr->view); if (!sPtr->viewport) { W_DestroyView(sPtr->view); wfree(sPtr); return NULL; } sPtr->view->self = sPtr; sPtr->viewport->self = sPtr; sPtr->view->delegate = &_ScrollViewViewDelegate; sPtr->viewport->flags.mapWhenRealized = 1; WMCreateEventHandler(sPtr->view, StructureNotifyMask | ExposureMask, handleEvents, sPtr); WMCreateEventHandler(sPtr->viewport, SubstructureNotifyMask, handleViewportEvents, sPtr); sPtr->lineScroll = 4; sPtr->pageScroll = 0; return sPtr; } static void applyScrollerValues(WMScrollView * sPtr) { int x, y; if (sPtr->contentView == NULL) return; if (sPtr->flags.hasHScroller) { float v = WMGetScrollerValue(sPtr->hScroller); int size; size = sPtr->contentView->size.width - sPtr->viewport->size.width; x = v * size; } else { x = 0; } if (sPtr->flags.hasVScroller) { float v = WMGetScrollerValue(sPtr->vScroller); int size; size = sPtr->contentView->size.height - sPtr->viewport->size.height; y = v * size; } else { y = 0; } x = WMAX(0, x); y = WMAX(0, y); W_MoveView(sPtr->contentView, -x, -y); W_RaiseView(sPtr->viewport); } static void reorganizeInterior(WMScrollView * sPtr) { int hx, hy, hw; int vx, vy, vh; int cx, cy, cw, ch; cw = hw = sPtr->view->size.width; vh = ch = sPtr->view->size.height; if (sPtr->flags.relief == WRSimple) { cw -= 2; ch -= 2; cx = 1; cy = 1; } else if (sPtr->flags.relief != WRFlat) { cw -= 3; ch -= 3; cx = 2; cy = 2; } else { cx = 0; cy = 0; } if (sPtr->flags.hasHScroller) { int h = 20; ch -= h; if (sPtr->flags.relief == WRSimple) { hx = 0; hy = sPtr->view->size.height - h; } else if (sPtr->flags.relief != WRFlat) { hx = 1; hy = sPtr->view->size.height - h - 1; hw -= 2; } else { hx = 0; hy = sPtr->view->size.height - h; } } else { /* make compiler shutup */ hx = 0; hy = 0; } if (sPtr->flags.hasVScroller) { int w = 20; cw -= w; cx += w; hx += w - 1; hw -= w - 1; if (sPtr->flags.relief == WRSimple) { vx = 0; vy = 0; } else if (sPtr->flags.relief != WRFlat) { vx = 1; vy = 1; vh -= 2; } else { vx = 0; vy = 0; } } else { /* make compiler shutup */ vx = 0; vy = 0; } W_ResizeView(sPtr->viewport, cw, ch); W_MoveView(sPtr->viewport, cx, cy); if (sPtr->flags.hasHScroller) { WMResizeWidget(sPtr->hScroller, hw, 20); WMMoveWidget(sPtr->hScroller, hx, hy); } if (sPtr->flags.hasVScroller) { WMResizeWidget(sPtr->vScroller, 20, vh); WMMoveWidget(sPtr->vScroller, vx, vy); } applyScrollerValues(sPtr); } static void resizeScrollView(W_ViewDelegate * self, WMView * view) { /* Parameter not used, but tell the compiler that it is ok */ (void) self; reorganizeInterior(view->self); updateScrollerProportion(view->self); } void WMResizeScrollViewContent(WMScrollView * sPtr, unsigned int width, unsigned int height) { int w, h, x; w = width; h = height; x = 0; if (sPtr->flags.relief == WRSimple) { w += 2; h += 2; } else if (sPtr->flags.relief != WRFlat) { w += 4; h += 4; x = 1; } if (sPtr->flags.hasVScroller) { WMResizeWidget(sPtr->vScroller, 20, h); width -= W_VIEW(sPtr->vScroller)->size.width; } if (sPtr->flags.hasHScroller) { WMResizeWidget(sPtr->hScroller, w, 20); WMMoveWidget(sPtr->hScroller, x, h); height -= W_VIEW(sPtr->hScroller)->size.height; } W_ResizeView(sPtr->view, w, h); W_ResizeView(sPtr->viewport, width, height); } void WMSetScrollViewLineScroll(WMScrollView * sPtr, int amount) { assert(amount > 0); sPtr->lineScroll = amount; } void WMSetScrollViewPageScroll(WMScrollView * sPtr, int amount) { assert(amount >= 0); sPtr->pageScroll = amount; } WMRect WMGetScrollViewVisibleRect(WMScrollView * sPtr) { WMRect rect; rect.pos.x = -sPtr->contentView->pos.x; rect.pos.y = -sPtr->contentView->pos.y; rect.size = sPtr->viewport->size; return rect; } void WMScrollViewScrollPoint(WMScrollView * sPtr, WMPoint point) { float xsize, ysize; float xpos, ypos; xsize = sPtr->contentView->size.width - sPtr->viewport->size.width; ysize = sPtr->contentView->size.height - sPtr->viewport->size.height; xpos = point.x / xsize; ypos = point.y / ysize; if (sPtr->hScroller) WMSetScrollerParameters(sPtr->hScroller, xpos, WMGetScrollerKnobProportion(sPtr->hScroller)); if (sPtr->vScroller) WMSetScrollerParameters(sPtr->vScroller, ypos, WMGetScrollerKnobProportion(sPtr->vScroller)); W_MoveView(sPtr->contentView, -point.x, -point.y); } static void doScrolling(WMWidget * self, void *data) { ScrollView *sPtr = (ScrollView *) data; float value; int pos; int vpsize; float size; if (sPtr->hScroller == (WMScroller *) self) { pos = -sPtr->contentView->pos.x; size = sPtr->contentView->size.width - sPtr->viewport->size.width; vpsize = sPtr->viewport->size.width - sPtr->pageScroll; } else { pos = -sPtr->contentView->pos.y; size = sPtr->contentView->size.height - sPtr->viewport->size.height; vpsize = sPtr->viewport->size.height - sPtr->pageScroll; } if (vpsize <= 0) vpsize = 1; switch (WMGetScrollerHitPart(self)) { case WSDecrementLine: if (pos > 0) { pos -= sPtr->lineScroll; if (pos < 0) pos = 0; value = (float)pos / size; WMSetScrollerParameters(self, value, WMGetScrollerKnobProportion(self)); } break; case WSIncrementLine: if (pos < size) { pos += sPtr->lineScroll; if (pos > size) pos = size; value = (float)pos / size; WMSetScrollerParameters(self, value, WMGetScrollerKnobProportion(self)); } break; case WSKnob: value = WMGetScrollerValue(self); pos = value * size; break; case WSDecrementPage: if (pos > 0) { pos -= vpsize; if (pos < 0) pos = 0; value = (float)pos / size; WMSetScrollerParameters(self, value, WMGetScrollerKnobProportion(self)); } break; case WSDecrementWheel: if (pos > 0) { pos -= vpsize / 3; if (pos < 0) pos = 0; value = (float)pos / size; WMSetScrollerParameters(self, value, WMGetScrollerKnobProportion(self)); } break; case WSIncrementPage: if (pos < size) { pos += vpsize; if (pos > size) pos = size; value = (float)pos / size; WMSetScrollerParameters(self, value, WMGetScrollerKnobProportion(self)); } break; case WSIncrementWheel: if (pos < size) { pos += vpsize / 3; if (pos > size) pos = size; value = (float)pos / size; WMSetScrollerParameters(self, value, WMGetScrollerKnobProportion(self)); } break; case WSNoPart: case WSKnobSlot: break; } if (sPtr->hScroller == (WMScroller *) self) { W_MoveView(sPtr->contentView, -pos, sPtr->contentView->pos.y); } else { W_MoveView(sPtr->contentView, sPtr->contentView->pos.x, -pos); } } WMScroller *WMGetScrollViewHorizontalScroller(WMScrollView * sPtr) { return sPtr->hScroller; } WMScroller *WMGetScrollViewVerticalScroller(WMScrollView * sPtr) { return sPtr->vScroller; } void WMSetScrollViewHasHorizontalScroller(WMScrollView * sPtr, Bool flag) { if (flag) { if (sPtr->flags.hasHScroller) return; sPtr->flags.hasHScroller = 1; sPtr->hScroller = WMCreateScroller(sPtr); WMSetScrollerAction(sPtr->hScroller, doScrolling, sPtr); /* make it a horiz. scroller */ WMResizeWidget(sPtr->hScroller, 2, 1); if (W_VIEW_REALIZED(sPtr->view)) { WMRealizeWidget(sPtr->hScroller); } reorganizeInterior(sPtr); WMMapWidget(sPtr->hScroller); } else { if (!sPtr->flags.hasHScroller) return; WMUnmapWidget(sPtr->hScroller); WMDestroyWidget(sPtr->hScroller); sPtr->hScroller = NULL; sPtr->flags.hasHScroller = 0; reorganizeInterior(sPtr); } } void WMSetScrollViewHasVerticalScroller(WMScrollView * sPtr, Bool flag) { if (flag) { if (sPtr->flags.hasVScroller) return; sPtr->flags.hasVScroller = 1; sPtr->vScroller = WMCreateScroller(sPtr); WMSetScrollerAction(sPtr->vScroller, doScrolling, sPtr); WMSetScrollerArrowsPosition(sPtr->vScroller, WSAMaxEnd); /* make it a vert. scroller */ WMResizeWidget(sPtr->vScroller, 1, 2); if (W_VIEW_REALIZED(sPtr->view)) { WMRealizeWidget(sPtr->vScroller); } reorganizeInterior(sPtr); WMMapWidget(sPtr->vScroller); } else { if (!sPtr->flags.hasVScroller) return; sPtr->flags.hasVScroller = 0; WMUnmapWidget(sPtr->vScroller); WMDestroyWidget(sPtr->vScroller); sPtr->vScroller = NULL; reorganizeInterior(sPtr); } } void WMSetScrollViewContentView(WMScrollView * sPtr, WMView * view) { assert(sPtr->contentView == NULL); sPtr->contentView = view; W_ReparentView(sPtr->contentView, sPtr->viewport, 0, 0); if (sPtr->flags.hasHScroller) { float prop; prop = (float)sPtr->viewport->size.width / sPtr->contentView->size.width; WMSetScrollerParameters(sPtr->hScroller, 0, prop); } if (sPtr->flags.hasVScroller) { float prop; prop = (float)sPtr->viewport->size.height / sPtr->contentView->size.height; WMSetScrollerParameters(sPtr->vScroller, 0, prop); } } void WMSetScrollViewRelief(WMScrollView * sPtr, WMReliefType type) { sPtr->flags.relief = type; reorganizeInterior(sPtr); if (sPtr->view->flags.mapped) paintScrollView(sPtr); } static void paintScrollView(ScrollView * sPtr) { W_DrawRelief(sPtr->view->screen, sPtr->view->window, 0, 0, sPtr->view->size.width, sPtr->view->size.height, sPtr->flags.relief); } static void updateScrollerProportion(ScrollView * sPtr) { float prop, value; float oldV, oldP; if (sPtr->flags.hasHScroller) { oldV = WMGetScrollerValue(sPtr->hScroller); oldP = WMGetScrollerKnobProportion(sPtr->hScroller); prop = (float)sPtr->viewport->size.width / (float)sPtr->contentView->size.width; if (oldP < 1.0F) value = (prop * oldV) / oldP; else value = 0; WMSetScrollerParameters(sPtr->hScroller, value, prop); } if (sPtr->flags.hasVScroller) { oldV = WMGetScrollerValue(sPtr->vScroller); oldP = WMGetScrollerKnobProportion(sPtr->vScroller); prop = (float)sPtr->viewport->size.height / (float)sPtr->contentView->size.height; if (oldP < 1.0F) value = (prop * oldV) / oldP; else value = 0; WMSetScrollerParameters(sPtr->vScroller, value, prop); } applyScrollerValues(sPtr); } static void handleViewportEvents(XEvent * event, void *data) { ScrollView *sPtr = (ScrollView *) data; if (sPtr->contentView && event->xconfigure.window == sPtr->contentView->window) updateScrollerProportion(sPtr); } static void handleEvents(XEvent * event, void *data) { ScrollView *sPtr = (ScrollView *) data; CHECK_CLASS(data, WC_ScrollView); switch (event->type) { case Expose: if (event->xexpose.count != 0) break; if (event->xexpose.serial == 0) /* means it's artificial */ W_RedisplayView(sPtr->contentView); else paintScrollView(sPtr); break; case DestroyNotify: destroyScrollView(sPtr); break; } } static void destroyScrollView(ScrollView * sPtr) { wfree(sPtr); } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/hashtable.c����������������������������������������������������������������0000644�0001750�0001750�00000020126�13431646201�014015� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include <config.h> #include <sys/types.h> #include <string.h> #include <stdlib.h> #include <stdio.h> #include "WUtil.h" #define INITIAL_CAPACITY 23 typedef struct HashItem { const void *key; const void *data; struct HashItem *next; /* collided item list */ } HashItem; typedef struct W_HashTable { WMHashTableCallbacks callbacks; unsigned itemCount; unsigned size; /* table size */ HashItem **table; } HashTable; #define HASH(table, key) (((table)->callbacks.hash ? \ (*(table)->callbacks.hash)(key) : hashPtr(key)) % (table)->size) #define DUPKEY(table, key) ((table)->callbacks.retainKey ? \ (*(table)->callbacks.retainKey)(key) : (key)) #define RELKEY(table, key) if ((table)->callbacks.releaseKey) \ (*(table)->callbacks.releaseKey)(key) static inline unsigned hashString(const void *param) { const char *key = param; unsigned ret = 0; unsigned ctr = 0; while (*key) { ret ^= *key++ << ctr; ctr = (ctr + 1) % sizeof(char *); } return ret; } static inline unsigned hashPtr(const void *key) { return ((size_t) key / sizeof(char *)); } static void rellocateItem(WMHashTable * table, HashItem * item) { unsigned h; h = HASH(table, item->key); item->next = table->table[h]; table->table[h] = item; } static void rebuildTable(WMHashTable * table) { HashItem *next; HashItem **oldArray; int i; int oldSize; int newSize; oldArray = table->table; oldSize = table->size; newSize = table->size * 2; table->table = wmalloc(sizeof(char *) * newSize); table->size = newSize; for (i = 0; i < oldSize; i++) { while (oldArray[i] != NULL) { next = oldArray[i]->next; rellocateItem(table, oldArray[i]); oldArray[i] = next; } } wfree(oldArray); } WMHashTable *WMCreateHashTable(const WMHashTableCallbacks callbacks) { HashTable *table; table = wmalloc(sizeof(HashTable)); table->callbacks = callbacks; table->size = INITIAL_CAPACITY; table->table = wmalloc(sizeof(HashItem *) * table->size); return table; } void WMResetHashTable(WMHashTable * table) { HashItem *item, *tmp; int i; for (i = 0; i < table->size; i++) { item = table->table[i]; while (item) { tmp = item->next; RELKEY(table, item->key); wfree(item); item = tmp; } } table->itemCount = 0; if (table->size > INITIAL_CAPACITY) { wfree(table->table); table->size = INITIAL_CAPACITY; table->table = wmalloc(sizeof(HashItem *) * table->size); } else { memset(table->table, 0, sizeof(HashItem *) * table->size); } } void WMFreeHashTable(WMHashTable * table) { HashItem *item, *tmp; int i; for (i = 0; i < table->size; i++) { item = table->table[i]; while (item) { tmp = item->next; RELKEY(table, item->key); wfree(item); item = tmp; } } wfree(table->table); wfree(table); } unsigned WMCountHashTable(WMHashTable * table) { return table->itemCount; } static HashItem *hashGetItem(WMHashTable *table, const void *key) { unsigned h; HashItem *item; h = HASH(table, key); item = table->table[h]; if (table->callbacks.keyIsEqual) { while (item) { if ((*table->callbacks.keyIsEqual) (key, item->key)) { break; } item = item->next; } } else { while (item) { if (key == item->key) { break; } item = item->next; } } return item; } void *WMHashGet(WMHashTable * table, const void *key) { HashItem *item; item = hashGetItem(table, key); if (!item) return NULL; return (void *)item->data; } Bool WMHashGetItemAndKey(WMHashTable * table, const void *key, void **retItem, void **retKey) { HashItem *item; item = hashGetItem(table, key); if (!item) return False; if (retKey) *retKey = (void *)item->key; if (retItem) *retItem = (void *)item->data; return True; } void *WMHashInsert(WMHashTable * table, const void *key, const void *data) { unsigned h; HashItem *item; int replacing = 0; h = HASH(table, key); /* look for the entry */ item = table->table[h]; if (table->callbacks.keyIsEqual) { while (item) { if ((*table->callbacks.keyIsEqual) (key, item->key)) { replacing = 1; break; } item = item->next; } } else { while (item) { if (key == item->key) { replacing = 1; break; } item = item->next; } } if (replacing) { const void *old; old = item->data; item->data = data; RELKEY(table, item->key); item->key = DUPKEY(table, key); return (void *)old; } else { HashItem *nitem; nitem = wmalloc(sizeof(HashItem)); nitem->key = DUPKEY(table, key); nitem->data = data; nitem->next = table->table[h]; table->table[h] = nitem; table->itemCount++; } /* OPTIMIZE: put this in an idle handler. */ if (table->itemCount > table->size) { #ifdef DEBUG0 printf("rebuilding hash table...\n"); #endif rebuildTable(table); #ifdef DEBUG0 printf("finished rebuild.\n"); #endif } return NULL; } static HashItem *deleteFromList(HashTable * table, HashItem * item, const void *key) { HashItem *next; if (item == NULL) return NULL; if ((table->callbacks.keyIsEqual && (*table->callbacks.keyIsEqual) (key, item->key)) || (!table->callbacks.keyIsEqual && key == item->key)) { next = item->next; RELKEY(table, item->key); wfree(item); table->itemCount--; return next; } item->next = deleteFromList(table, item->next, key); return item; } void WMHashRemove(WMHashTable * table, const void *key) { unsigned h; h = HASH(table, key); table->table[h] = deleteFromList(table, table->table[h], key); } WMHashEnumerator WMEnumerateHashTable(WMHashTable * table) { WMHashEnumerator enumerator; enumerator.table = table; enumerator.index = 0; enumerator.nextItem = table->table[0]; return enumerator; } void *WMNextHashEnumeratorItem(WMHashEnumerator * enumerator) { const void *data = NULL; /* this assumes the table doesn't change between * WMEnumerateHashTable() and WMNextHashEnumeratorItem() calls */ if (enumerator->nextItem == NULL) { HashTable *table = enumerator->table; while (++enumerator->index < table->size) { if (table->table[enumerator->index] != NULL) { enumerator->nextItem = table->table[enumerator->index]; break; } } } if (enumerator->nextItem) { data = ((HashItem *) enumerator->nextItem)->data; enumerator->nextItem = ((HashItem *) enumerator->nextItem)->next; } return (void *)data; } void *WMNextHashEnumeratorKey(WMHashEnumerator * enumerator) { const void *key = NULL; /* this assumes the table doesn't change between * WMEnumerateHashTable() and WMNextHashEnumeratorKey() calls */ if (enumerator->nextItem == NULL) { HashTable *table = enumerator->table; while (++enumerator->index < table->size) { if (table->table[enumerator->index] != NULL) { enumerator->nextItem = table->table[enumerator->index]; break; } } } if (enumerator->nextItem) { key = ((HashItem *) enumerator->nextItem)->key; enumerator->nextItem = ((HashItem *) enumerator->nextItem)->next; } return (void *)key; } Bool WMNextHashEnumeratorItemAndKey(WMHashEnumerator * enumerator, void **item, void **key) { /* this assumes the table doesn't change between * WMEnumerateHashTable() and WMNextHashEnumeratorItemAndKey() calls */ if (enumerator->nextItem == NULL) { HashTable *table = enumerator->table; while (++enumerator->index < table->size) { if (table->table[enumerator->index] != NULL) { enumerator->nextItem = table->table[enumerator->index]; break; } } } if (enumerator->nextItem) { if (item) *item = (void *)((HashItem *) enumerator->nextItem)->data; if (key) *key = (void *)((HashItem *) enumerator->nextItem)->key; enumerator->nextItem = ((HashItem *) enumerator->nextItem)->next; return True; } return False; } static Bool compareStrings(const void *param1, const void *param2) { const char *key1 = param1; const char *key2 = param2; return strcmp(key1, key2) == 0; } typedef void *(*retainFunc) (const void *); typedef void (*releaseFunc) (const void *); const WMHashTableCallbacks WMIntHashCallbacks = { NULL, NULL, NULL, NULL }; const WMHashTableCallbacks WMStringHashCallbacks = { hashString, compareStrings, (retainFunc) wstrdup, (releaseFunc) wfree }; const WMHashTableCallbacks WMStringPointerHashCallbacks = { hashString, compareStrings, NULL, NULL }; ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/wmisc.c��������������������������������������������������������������������0000644�0001750�0001750�00000017120�13431646201�013204� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include "WINGsP.h" #include <wraster.h> #include <ctype.h> void W_DrawRelief(W_Screen * scr, Drawable d, int x, int y, unsigned int width, unsigned int height, WMReliefType relief) { W_DrawReliefWithGC(scr, d, x, y, width, height, relief, WMColorGC(scr->black), WMColorGC(scr->darkGray), WMColorGC(scr->gray), WMColorGC(scr->white)); } void W_DrawReliefWithGC(W_Screen * scr, Drawable d, int x, int y, unsigned int width, unsigned int height, WMReliefType relief, GC black, GC dark, GC light, GC white) { Display *dpy = scr->display; GC bgc; GC wgc; GC lgc; GC dgc; switch (relief) { case WRSimple: XDrawRectangle(dpy, d, black, x, y, width - 1, height - 1); return; case WRRaised: bgc = black; dgc = dark; wgc = white; lgc = light; break; case WRSunken: wgc = dark; lgc = black; bgc = white; dgc = light; break; case WRPushed: lgc = wgc = black; dgc = bgc = white; break; case WRRidge: lgc = bgc = dark; dgc = wgc = white; break; case WRGroove: wgc = dgc = dark; lgc = bgc = white; break; default: return; } /* top left */ XDrawLine(dpy, d, wgc, x, y, x + width - 1, y); if (width > 2 && relief != WRRaised && relief != WRPushed) { XDrawLine(dpy, d, lgc, x + 1, y + 1, x + width - 3, y + 1); } XDrawLine(dpy, d, wgc, x, y, x, y + height - 1); if (height > 2 && relief != WRRaised && relief != WRPushed) { XDrawLine(dpy, d, lgc, x + 1, y + 1, x + 1, y + height - 3); } /* bottom right */ XDrawLine(dpy, d, bgc, x, y + height - 1, x + width - 1, y + height - 1); if (width > 2 && relief != WRPushed) { XDrawLine(dpy, d, dgc, x + 1, y + height - 2, x + width - 2, y + height - 2); } XDrawLine(dpy, d, bgc, x + width - 1, y, x + width - 1, y + height - 1); if (height > 2 && relief != WRPushed) { XDrawLine(dpy, d, dgc, x + width - 2, y + 1, x + width - 2, y + height - 2); } } static int findNextWord(const char *text, int limit) { int pos, len; len = strcspn(text, " \t\n\r"); pos = len + strspn(text + len, " \t\n\r"); if (pos > limit) pos = limit; return pos; } static int fitText(const char *text, WMFont * font, int width, int wrap) { int i, w, beforecrlf, word1, word2; /* text length before first cr/lf */ beforecrlf = strcspn(text, "\n"); if (!wrap || beforecrlf == 0) return beforecrlf; w = WMWidthOfString(font, text, beforecrlf); if (w <= width) { /* text up to first crlf fits */ return beforecrlf; } word1 = 0; while (1) { word2 = word1 + findNextWord(text + word1, beforecrlf - word1); if (word2 >= beforecrlf) break; w = WMWidthOfString(font, text, word2); if (w > width) break; word1 = word2; } for (i = word1; i < word2; i++) { w = WMWidthOfString(font, text, i); if (w > width) { break; } } /* keep words complete if possible */ if (!isspace(text[i]) && word1 > 0) { i = word1; } else if (isspace(text[i]) && i < beforecrlf) { /* keep space on current row, so new row has next word in column 1 */ i++; } return i; } int W_GetTextHeight(WMFont * font, const char *text, int width, int wrap) { const char *ptr = text; int count; int length = strlen(text); int h; int fheight = WMFontHeight(font); h = 0; while (length > 0) { count = fitText(ptr, font, width, wrap); h += fheight; if (isspace(ptr[count])) count++; ptr += count; length -= count; } return h; } void W_PaintText(W_View * view, Drawable d, WMFont * font, int x, int y, int width, WMAlignment alignment, WMColor * color, int wrap, const char *text, int length) { const char *ptr = text; int line_width; int line_x; int count; int fheight = WMFontHeight(font); while (length > 0) { count = fitText(ptr, font, width, wrap); line_width = WMWidthOfString(font, ptr, count); if (alignment == WALeft) line_x = x; else if (alignment == WARight) line_x = x + width - line_width; else line_x = x + (width - line_width) / 2; WMDrawString(view->screen, d, color, font, line_x, y, ptr, count); if (wrap && ptr[count] != '\n') y += fheight; while (ptr[count] && ptr[count] == '\n') { y += fheight; count++; } ptr += count; length -= count; } } void W_PaintTextAndImage(W_View * view, int wrap, WMColor * textColor, W_Font * font, WMReliefType relief, const char *text, WMAlignment alignment, W_Pixmap * image, WMImagePosition position, WMColor * backColor, int ofs) { W_Screen *screen = view->screen; int ix, iy; int x, y, w, h; Drawable d = view->window; #ifdef DOUBLE_BUFFER d = XCreatePixmap(screen->display, view->window, view->size.width, view->size.height, screen->depth); #endif /* background */ if (backColor) { XFillRectangle(screen->display, d, WMColorGC(backColor), 0, 0, view->size.width, view->size.height); } else { if (view->attribs.background_pixmap) { #ifndef DOUBLE_BUFFER XClearWindow(screen->display, d); #else XCopyArea(screen->display, view->attribs.background_pixmap, d, screen->copyGC, 0, 0, view->size.width, view->size.height, 0, 0); #endif } else { #ifndef DOUBLE_BUFFER XClearWindow(screen->display, d); #else XSetForeground(screen->display, screen->copyGC, view->attribs.background_pixel); XFillRectangle(screen->display, d, screen->copyGC, 0, 0, view->size.width, view->size.height); #endif } } if (relief == WRFlat) { x = 0; y = 0; w = view->size.width; h = view->size.height; } else { x = 1; y = 1; w = view->size.width - 3; h = view->size.height - 3; } /* calc. image alignment */ if (position != WIPNoImage && image != NULL) { switch (position) { case WIPOverlaps: case WIPImageOnly: ix = (view->size.width - image->width) / 2; iy = (view->size.height - image->height) / 2; /* x = 2; y = 0; */ break; case WIPLeft: ix = x; iy = y + (h - image->height) / 2; x = x + image->width + 5; y = 0; w -= image->width + 5; break; case WIPRight: ix = view->size.width - image->width - x; iy = y + (h - image->height) / 2; w -= image->width + 5; break; case WIPBelow: ix = (view->size.width - image->width) / 2; iy = h - image->height; y = 0; h -= image->height; break; default: case WIPAbove: ix = (view->size.width - image->width) / 2; iy = y; y = image->height; h -= image->height; break; } ix += ofs; iy += ofs; XSetClipOrigin(screen->display, screen->clipGC, ix, iy); XSetClipMask(screen->display, screen->clipGC, image->mask); if (image->depth == 1) XCopyPlane(screen->display, image->pixmap, d, screen->clipGC, 0, 0, image->width, image->height, ix, iy, 1); else XCopyArea(screen->display, image->pixmap, d, screen->clipGC, 0, 0, image->width, image->height, ix, iy); } /* draw text */ if (position != WIPImageOnly && text != NULL) { int textHeight; textHeight = W_GetTextHeight(font, text, w - 8, wrap); W_PaintText(view, d, font, x + ofs + 4, y + ofs + (h - textHeight) / 2, w - 8, alignment, textColor, wrap, text, strlen(text)); } /* draw relief */ W_DrawRelief(screen, d, 0, 0, view->size.width, view->size.height, relief); #ifdef DOUBLE_BUFFER XCopyArea(screen->display, d, view->window, screen->copyGC, 0, 0, view->size.width, view->size.height, 0, 0); XFreePixmap(screen->display, d); #endif } WMPoint wmkpoint(int x, int y) { WMPoint point; point.x = x; point.y = y; return point; } WMSize wmksize(unsigned int width, unsigned int height) { WMSize size; size.width = width; size.height = height; return size; } WMRect wmkrect(int x, int y, unsigned int width, unsigned int height) { WMRect rect; rect.pos.x = x; rect.pos.y = y; rect.size.width = width; rect.size.height = height; return rect; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/wframe.c�������������������������������������������������������������������0000644�0001750�0001750�00000012117�13431646201�013344� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include "WINGsP.h" typedef struct W_Frame { W_Class widgetClass; W_View *view; char *caption; WMColor *textColor; struct { WMReliefType relief:4; WMTitlePosition titlePosition:4; } flags; } Frame; #define DEFAULT_RELIEF WRGroove #define DEFAULT_TITLE_POSITION WTPAtTop #define DEFAULT_WIDTH 40 #define DEFAULT_HEIGHT 40 static void destroyFrame(Frame * fPtr); static void paintFrame(Frame * fPtr); static void repaintFrame(Frame * fPtr); void WMSetFrameTitlePosition(WMFrame * fPtr, WMTitlePosition position) { fPtr->flags.titlePosition = position; if (fPtr->view->flags.realized) { repaintFrame(fPtr); } } void WMSetFrameRelief(WMFrame * fPtr, WMReliefType relief) { fPtr->flags.relief = relief; if (fPtr->view->flags.realized) { repaintFrame(fPtr); } } void WMSetFrameTitle(WMFrame * fPtr, const char *title) { if (fPtr->caption) wfree(fPtr->caption); if (title) fPtr->caption = wstrdup(title); else fPtr->caption = NULL; if (fPtr->view->flags.realized) { repaintFrame(fPtr); } } static void repaintFrame(Frame * fPtr) { W_View *view = fPtr->view; W_Screen *scrPtr = view->screen; XClearWindow(scrPtr->display, view->window); paintFrame(fPtr); } static void paintFrame(Frame * fPtr) { W_View *view = fPtr->view; W_Screen *scrPtr = view->screen; WMFont *font = scrPtr->normalFont; Display *display = scrPtr->display; int tx, ty, tw, th, tlen; int fy, fh; Bool drawTitle; if (fPtr->caption != NULL) { th = WMFontHeight(font); tlen = strlen(fPtr->caption); } else { th = 0; tlen = 0; } switch (fPtr->flags.titlePosition) { case WTPAboveTop: ty = 0; fy = th + 4; fh = view->size.height - fy; break; case WTPAtTop: ty = 0; fy = th / 2; fh = view->size.height - fy; break; case WTPBelowTop: ty = 4; fy = 0; fh = view->size.height; break; case WTPAboveBottom: ty = view->size.height - th - 4; fy = 0; fh = view->size.height; break; case WTPAtBottom: ty = view->size.height - th; fy = 0; fh = view->size.height - th / 2; break; case WTPBelowBottom: ty = view->size.height - th; fy = 0; fh = view->size.height - th - 4; break; default: ty = 0; fy = 0; fh = view->size.height; } if (tlen > 0 && fPtr->flags.titlePosition != WTPNoTitle) { tw = WMWidthOfString(font, fPtr->caption, tlen); tx = (view->size.width - tw) / 2; drawTitle = True; } else { tw = tx = 0; drawTitle = False; } { XRectangle rect; Region region, tmp; GC gc[4]; int i; region = XCreateRegion(); rect.x = 0; rect.y = 0; rect.width = view->size.width; rect.height = view->size.height; XUnionRectWithRegion(&rect, region, region); if (drawTitle) { tmp = XCreateRegion(); rect.x = tx; rect.y = ty; rect.width = tw; rect.height = th; XUnionRectWithRegion(&rect, tmp, tmp); XSubtractRegion(region, tmp, region); XDestroyRegion(tmp); } gc[0] = WMColorGC(scrPtr->black); gc[1] = WMColorGC(scrPtr->darkGray); gc[2] = WMColorGC(scrPtr->gray); gc[3] = WMColorGC(scrPtr->white); for (i = 0; i < 4; i++) { XSetRegion(display, gc[i], region); } XDestroyRegion(region); W_DrawReliefWithGC(scrPtr, view->window, 0, fy, view->size.width, fh, fPtr->flags.relief, gc[0], gc[1], gc[2], gc[3]); for (i = 0; i < 4; i++) { XSetClipMask(display, gc[i], None); } } if (drawTitle) { /* can't draw AA text over and over again because it gets messed */ /* // TODO create the dbl buffer pixmap when create/set frame title */ if (scrPtr->antialiasedText) { Drawable d; d = XCreatePixmap(display, view->window, tw, th, scrPtr->depth); XFillRectangle(display, d, WMColorGC(view->backColor), 0, 0, tw, th); WMDrawString(scrPtr, d, fPtr->textColor ? fPtr->textColor : scrPtr->black, font, 0, 0, fPtr->caption, tlen); XCopyArea(display, d, view->window, scrPtr->copyGC, 0, 0, tw, th, tx, ty); XFreePixmap(display, d); } else { WMDrawString(scrPtr, view->window, scrPtr->black, font, tx, ty, fPtr->caption, tlen); } } } static void handleEvents(XEvent * event, void *data) { Frame *fPtr = (Frame *) data; CHECK_CLASS(data, WC_Frame); switch (event->type) { case Expose: if (event->xexpose.count == 0) paintFrame(fPtr); break; case DestroyNotify: destroyFrame(fPtr); break; } } void WMSetFrameTitleColor(WMFrame *fPtr, WMColor *color) { if (fPtr->textColor) WMReleaseColor(fPtr->textColor); fPtr->textColor = WMRetainColor(color); if (fPtr->view->flags.realized) { repaintFrame(fPtr); } } WMFrame *WMCreateFrame(WMWidget * parent) { Frame *fPtr; fPtr = wmalloc(sizeof(Frame)); fPtr->widgetClass = WC_Frame; fPtr->view = W_CreateView(W_VIEW(parent)); if (!fPtr->view) { wfree(fPtr); return NULL; } fPtr->view->self = fPtr; fPtr->textColor = WMRetainColor(fPtr->view->screen->black); WMCreateEventHandler(fPtr->view, ExposureMask | StructureNotifyMask, handleEvents, fPtr); fPtr->flags.relief = DEFAULT_RELIEF; fPtr->flags.titlePosition = DEFAULT_TITLE_POSITION; WMResizeWidget(fPtr, DEFAULT_WIDTH, DEFAULT_HEIGHT); return fPtr; } static void destroyFrame(Frame * fPtr) { if (fPtr->caption) wfree(fPtr->caption); wfree(fPtr); } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Resources/�����������������������������������������������������������������0000755�0001750�0001750�00000000000�13642365212�013753� 5����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Resources/Makefile.in������������������������������������������������������0000644�0001750�0001750�00000037571�13642360053�015753� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = WINGs/Resources ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ $(top_srcdir)/m4/ax_pthread.m4 \ $(top_srcdir)/m4/ld-version-script.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/windowmaker.m4 \ $(top_srcdir)/m4/wm_attributes.m4 \ $(top_srcdir)/m4/wm_cflags_check.m4 \ $(top_srcdir)/m4/wm_i18n.m4 \ $(top_srcdir)/m4/wm_imgfmt_check.m4 \ $(top_srcdir)/m4/wm_libexif.m4 $(top_srcdir)/m4/wm_libmath.m4 \ $(top_srcdir)/m4/wm_prog_cc_c11.m4 \ $(top_srcdir)/m4/wm_xext_check.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(resdatadir)" DATA = $(resdata_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ GFXLIBS = @GFXLIBS@ GREP = @GREP@ HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLIBS = @INTLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBBSD = @LIBBSD@ LIBEXIF = @LIBEXIF@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXINERAMA = @LIBXINERAMA@ LIBXMU = @LIBXMU@ LIBXRANDR = @LIBXRANDR@ LINGUAS = @LINGUAS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAGICKFLAGS = @MAGICKFLAGS@ MAGICKLIBS = @MAGICKLIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MANLANGDIRS = @MANLANGDIRS@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOLIBS = @PANGOLIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILMOFILES = @UTILMOFILES@ VERSION = @VERSION@ WINGSMOFILES = @WINGSMOFILES@ WINGS_VERSION = @WINGS_VERSION@ WMAKERMOFILES = @WMAKERMOFILES@ WPREFSMOFILES = @WPREFSMOFILES@ WRASTER_VERSION = @WRASTER_VERSION@ WUTIL_VERSION = @WUTIL_VERSION@ XCFLAGS = @XCFLAGS@ XFTCONFIG = @XFTCONFIG@ XFTFLAGS = @XFTFLAGS@ XFTLIBS = @XFTLIBS@ XGETTEXT = @XGETTEXT@ XLFLAGS = @XLFLAGS@ XLIBS = @XLIBS@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBRARY_PATH = @X_LIBRARY_PATH@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ defsdatadir = @defsdatadir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ inc_search_path = @inc_search_path@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lcov_output_directory = @lcov_output_directory@ lib_search_path = @lib_search_path@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pixmapdir = @pixmapdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ wprefs_bindir = @wprefs_bindir@ wprefs_datadir = @wprefs_datadir@ resdatadir = $(datadir)/WINGs resdata_DATA = Images.tiff Images.xpm defaultIcon.tiff defaultIcon.xpm EXTRA_DIST = $(resdata_DATA) Images.xcf all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu WINGs/Resources/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu WINGs/Resources/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-resdataDATA: $(resdata_DATA) @$(NORMAL_INSTALL) @list='$(resdata_DATA)'; test -n "$(resdatadir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(resdatadir)'"; \ $(MKDIR_P) "$(DESTDIR)$(resdatadir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(resdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(resdatadir)" || exit $$?; \ done uninstall-resdataDATA: @$(NORMAL_UNINSTALL) @list='$(resdata_DATA)'; test -n "$(resdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(resdatadir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(resdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-resdataDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-resdataDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-resdataDATA install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags-am uninstall uninstall-am uninstall-resdataDATA .PRECIOUS: Makefile # 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. .NOEXPORT: ���������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Resources/defaultIcon.xpm��������������������������������������������������0000644�0001750�0001750�00000005062�13431646201�016655� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * defaultIcon_xpm[] = { "48 48 3 1", " c #000000000000", ". c None", "X c #FFFFFFFFFFFF", " ..", " ..", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ..", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ..", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", " ", " ", ".... ", ".... "}; ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Resources/defaultIcon.tiff�������������������������������������������������0000644�0001750�0001750�00000001404�13431646201�016775� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������MM�*��� O Иd" ¢P؄V'Eјb=ƤQجM H2ITY/e)la'D}?PhT:%GRiT$#KTjU:VMNպv_V %gX6eKS;m!^oV[ZUo Fpdq6K-eWo=uVM|ZYjn[ _e~n|&}EoTabDSqzOsm;owyW-d~'!|o � OBaPd6DbQ8V- qnHdR9$EJ#R]+JRٌg/gi}:NhS ?ije.JRjR-VUk4r]k{%_WV+M�������0�������0���������������������� ������� ����������+���������������������������*���������������������������(�������1���� ��R���������������defaultIcon.tiff�� Imported from XPM image: defaultIcon.xpm�������*��"���~H������H������ImageMagick�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Resources/Images.xpm�������������������������������������������������������0000644�0001750�0001750�00000237551�13431646201�015637� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * Images_xpm[] = { "128 128 3027 2", " c None", ". c #125D93", "+ c #12547E", "@ c #0B4E7A", "# c #06436B", "$ c #0F4F77", "% c #0B4B73", "& c #0A4B73", "* c #11527D", "= c #12588A", "- c #1E6CA1", "; c #1368A2", "> c #3A3A3A", ", c #262626", "' c #292929", ") c #2A2A2A", "! c #00436F", "~ c #14517D", "{ c #1C5882", "] c #205C85", "^ c #155176", "/ c #1E5C85", "( c #144F76", "_ c #155078", ": c #26638C", "< c #18547E", "[ c #043F69", "} c #023F67", "| c #024A78", "1 c #575757", "2 c #FFFFFF", "3 c #F3F3F3", "4 c #F1F1F1", "5 c #333333", "6 c #014778", "7 c #0B4970", "8 c #1B557D", "9 c #235F8A", "0 c #19537B", "a c #16527A", "b c #22608B", "c c #19557D", "d c #094368", "e c #23608A", "f c #145075", "g c #1B557B", "h c #0A4A73", "i c #0C486E", "j c #054A74", "k c #000000", "l c #000006", "m c #040711", "n c #060912", "o c #030611", "p c #000004", "q c #8E8E8E", "r c #181818", "s c #DCDCDC", "t c #161616", "u c #191919", "v c #1E1E1E", "w c #AFAFAF", "x c #222222", "y c #004474", "z c #1E6493", "A c #074266", "B c #1C608F", "C c #0A4468", "D c #00375A", "E c #1B608F", "F c #033D60", "G c #1B608E", "H c #114C73", "I c #10466B", "J c #154D70", "K c #1D6393", "L c #054C7F", "M c #020511", "N c #1D2131", "O c #39415E", "P c #4D577A", "Q c #545E80", "R c #4B5578", "S c #363D54", "T c #1B1E33", "U c #000207", "V c #F8F8F8", "W c #EAEAEA", "X c #E4E4E4", "Y c #DDDDDD", "Z c #D6D6D6", "` c #D0D0D0", " . c #C9C9C9", ".. c #C2C2C2", "+. c #BBBBBB", "@. c #B5B5B5", "#. c #AEAEAE", "$. c #A7A7A7", "%. c #A1A1A1", "&. c #9A9A9A", "*. c #939393", "=. c #8C8C8C", "-. c #868686", ";. c #7F7F7F", ">. c #787878", ",. c #727272", "'. c #6B6B6B", "). c #646464", "!. c #5D5D5D", "~. c #505050", "{. c #494949", "]. c #434343", "^. c #3C3C3C", "/. c #353535", "(. c #2E2E2E", "_. c #282828", ":. c #212121", "<. c #1A1A1A", "[. c #141414", "}. c #0D0D0D", "|. c #060606", "1. c #6C6C6C", "2. c #383838", "3. c #616161", "4. c #E1E1E1", "5. c #535353", "6. c #686868", "7. c #5B5B5B", "8. c #A5A5A5", "9. c #9D9D9D", "0. c #2775BC", "a. c #256C9C", "b. c #196395", "c. c #135C8F", "d. c #115C91", "e. c #105A8E", "f. c #175E93", "g. c #1D6396", "h. c #266A9E", "i. c #26699E", "j. c #266A9C", "k. c #1C6094", "l. c #155A8D", "m. c #0F5A8E", "n. c #145F94", "o. c #176095", "p. c #1B6396", "q. c #145B8F", "r. c #145FA2", "s. c #000005", "t. c #1D2942", "u. c #424E6B", "v. c #5A6583", "w. c #6C7488", "x. c #767C8D", "y. c #787E92", "z. c #6F768B", "A. c #5B6178", "B. c #454B62", "C. c #333545", "D. c #0F0F12", "E. c #8B8B8B", "F. c #838383", "G. c #B0B0B0", "H. c #B7B7B7", "I. c #A8A8A8", "J. c #999999", "K. c #ACACAC", "L. c #A19995", "M. c #847A73", "N. c #847871", "O. c #8A7D74", "P. c #847570", "Q. c #77706C", "R. c #71716B", "S. c #7A7772", "T. c #787570", "U. c #6E6C67", "V. c #6F706C", "W. c #8A8380", "X. c #958984", "Y. c #A69B93", "Z. c #968C86", "`. c #979089", " + c #575843", ".+ c #15213C", "++ c #5B6F95", "@+ c #707D97", "#+ c #868FA2", "$+ c #8A95AC", "%+ c #7A85A5", "&+ c #6F7CA3", "*+ c #6C79A1", "=+ c #5A668D", "-+ c #424A66", ";+ c #313655", ">+ c #0A0B10", ",+ c #444444", "'+ c #D3D3D3", ")+ c #B4B4B4", "!+ c #9B9B9B", "~+ c #909090", "{+ c #7A7A7A", "]+ c #545454", "^+ c #3D3D3D", "/+ c #E3E3E3", "(+ c #ACA9AA", "_+ c #2B2D2B", ":+ c #1B2828", "<+ c #2C4447", "[+ c #D6D4D4", "}+ c #2E2D2A", "|+ c #393A39", "1+ c #002749", "2+ c #313230", "3+ c #373938", "4+ c #E4E0E1", "5+ c #474040", "6+ c #233F41", "7+ c #3A3C3E", "8+ c #A3A49F", "9+ c #72726B", "0+ c #4A618A", "a+ c #485C83", "b+ c #495D85", "c+ c #4B618B", "d+ c #4C6590", "e+ c #4C6793", "f+ c #4A678F", "g+ c #0F1420", "h+ c #495A7E", "i+ c #7D8CA7", "j+ c #99A5BA", "k+ c #A0AECA", "l+ c #889BC4", "m+ c #7181AF", "n+ c #6777A7", "o+ c #6373A5", "p+ c #5D6B99", "q+ c #576693", "r+ c #525E89", "s+ c #4A5477", "t+ c #31374B", "u+ c #0C101A", "v+ c #3D5371", "w+ c #54729C", "x+ c #53749E", "y+ c #54739C", "z+ c #55749E", "A+ c #55739B", "B+ c #526F98", "C+ c #516B92", "D+ c #4F668D", "E+ c #51678D", "F+ c #556F94", "G+ c #567499", "H+ c #CECECE", "I+ c #FEFEFE", "J+ c #CBCBCB", "K+ c #C5C5C5", "L+ c #828282", "M+ c #484848", "N+ c #363636", "O+ c #4D4D4D", "P+ c #F6F5F6", "Q+ c #FCFAFC", "R+ c #041010", "S+ c #225156", "T+ c #51787D", "U+ c #F5F2F2", "V+ c #424948", "W+ c #2F656B", "X+ c #21474A", "Y+ c #155C63", "Z+ c #307F89", "`+ c #F6F2F3", " @ c #1F3234", ".@ c #004850", "+@ c #628990", "@@ c #9FA39B", "#@ c #6D7266", "$@ c #495D84", "%@ c #48577A", "&@ c #49587D", "*@ c #495C83", "=@ c #4B5F88", "-@ c #4B648B", ";@ c #2E3E56", ">@ c #2F3237", ",@ c #8D95A3", "'@ c #AFB4BC", ")@ c #D6DBE5", "!@ c #AFBAD0", "~@ c #8494B6", "{@ c #7D91B8", "]@ c #7A8FB7", "^@ c #7489B3", "/@ c #5D6B97", "(@ c #586794", "_@ c #546290", ":@ c #4E5C89", "<@ c #445076", "[@ c #1C1F28", "}@ c #1F2938", "|@ c #4C688C", "1@ c #527099", "2@ c #536F97", "3@ c #536E94", "4@ c #536D92", "5@ c #516B90", "6@ c #526B90", "7@ c #557094", "8@ c #F2F2F2", "9@ c #E0E0E0", "0@ c #C8C8C8", "a@ c #BEBEBE", "b@ c #969696", "c@ c #4C4C4C", "d@ c #303030", "e@ c #232323", "f@ c #090909", "g@ c #F8F2EF", "h@ c #FFF9F5", "i@ c #625F55", "j@ c #7B756E", "k@ c #91847B", "l@ c #F6EDEA", "m@ c #65756E", "n@ c #98C2C0", "o@ c #708D89", "p@ c #87A4A0", "q@ c #D3CDC3", "r@ c #FFFFFE", "s@ c #847B72", "t@ c #ABADA7", "u@ c #D8C5BE", "v@ c #B9B5AB", "w@ c #6F6D65", "x@ c #485C80", "y@ c #485574", "z@ c #48587C", "A@ c #485B82", "B@ c #495E85", "C@ c #496089", "D@ c #19222F", "E@ c #9CA7B1", "F@ c #A0A4A8", "G@ c #D6D9DE", "H@ c #E3E7EF", "I@ c #B1BBD0", "J@ c #8392B1", "K@ c #8195BA", "L@ c #7F95BB", "M@ c #7A90B7", "N@ c #5F6D97", "O@ c #5A6995", "P@ c #576692", "Q@ c #52618F", "R@ c #4C5A88", "S@ c #323951", "T@ c #0C0E14", "U@ c #3F5676", "V@ c #506E94", "W@ c #516C94", "X@ c #516D93", "Y@ c #526E94", "Z@ c #546E93", "`@ c #6880A1", " # c #88A1BC", ".# c #7D99B5", "+# c #7794B2", "@# c #6182A3", "## c #E6E6E6", "$# c #5E5E5E", "%# c #515151", "&# c #555555", "*# c #2C2C2C", "=# c #2F2F2F", "-# c #1C1C1C", ";# c #000935", "># c #00497F", ",# c #00255F", "'# c #0C517F", ")# c #003973", "!# c #004680", "~# c #00326F", "{# c #003E76", "]# c #145689", "^# c #04447B", "/# c #01487F", "(# c #002563", "_# c #00467D", ":# c #002C6B", "<# c #003B79", "[# c #003E77", "}# c #00346F", "|# c #004A83", "1# c #001642", "2# c #48597C", "3# c #475472", "4# c #485572", "5# c #485677", "6# c #49597D", "7# c #495F86", "8# c #111721", "9# c #949BA4", "0# c #C5C8CD", "a# c #E1E3ED", "b# c #E2E6F3", "c# c #B6BDD6", "d# c #8C96BB", "e# c #767E96", "f# c #6D7489", "g# c #727A8F", "h# c #B8C5D8", "i# c #A7B7D2", "j# c #7D98C5", "k# c #7A95C3", "l# c #647DAF", "m# c #4B5E8B", "n# c #0C0F17", "o# c #2B3A4E", "p# c #4B6589", "q# c #516C91", "r# c #516C93", "s# c #56759B", "t# c #6C8BAB", "u# c #B2C3D2", "v# c #C4D4E0", "w# c #849CB7", "x# c #5D7597", "y# c #587494", "z# c #E5E5E5", "A# c #717171", "B# c #949494", "C# c #626262", "D# c #414141", "E# c #343434", "F# c #1D1D1D", "G# c #002E51", "H# c #417292", "I# c #1A567D", "J# c #1D5275", "K# c #386D8E", "L# c #145886", "M# c #296691", "N# c #0A5080", "O# c #3C7499", "P# c #2C6892", "Q# c #054D7F", "R# c #477DA0", "S# c #356F95", "T# c #306D95", "U# c #004479", "V# c #397399", "W# c #094F80", "X# c #316E95", "Y# c #236491", "Z# c #3475A1", "`# c #002D4E", " $ c #485779", ".$ c #47536D", "+$ c #47536F", "@$ c #485674", "#$ c #495779", "$$ c #495D83", "%$ c #0F141C", "&$ c #92989F", "*$ c #DADFE7", "=$ c #E7EAF4", "-$ c #E1E5F3", ";$ c #B4BBD5", ">$ c #8A94B9", ",$ c #747B94", "'$ c #6C7388", ")$ c #70778D", "!$ c #B7C5D7", "~$ c #A8B9D3", "{$ c #809AC7", "]$ c #7E99C6", "^$ c #6A82B3", "/$ c #566D9E", "($ c #0E121B", "_$ c #1D2836", ":$ c #475E7F", "<$ c #597699", "[$ c #A8BDCF", "}$ c #CEDCE6", "|$ c #B5C6D4", "1$ c #748BA7", "2$ c #576789", "3$ c #546484", "4$ c #556788", "5$ c #7D7D7D", "6$ c #B1B1B1", "7$ c #BABABA", "8$ c #7C7C7C", "9$ c #404040", "0$ c #1B5E8C", "a$ c #2C668B", "b$ c #1E6391", "c$ c #00406C", "d$ c #1E6390", "e$ c #085180", "f$ c #1D5D89", "g$ c #1E618E", "h$ c #0E5381", "i$ c #1D608E", "j$ c #125683", "k$ c #1D608D", "l$ c #1B5A88", "m$ c #42789E", "n$ c #1B5F8D", "o$ c #497CA1", "p$ c #1C5F8D", "q$ c #2D6793", "r$ c #4883AB", "s$ c #003F68", "t$ c #47516B", "u$ c #48546E", "v$ c #485470", "w$ c #495774", "x$ c #4A5879", "y$ c #4A5C7D", "z$ c #0F131B", "A$ c #7F8592", "B$ c #CDD5E4", "C$ c #D9E0F1", "D$ c #CBD5EB", "E$ c #A4AECE", "F$ c #808BB3", "G$ c #707891", "H$ c #6B7287", "I$ c #6F778C", "J$ c #C9D3E0", "K$ c #C0CBDD", "L$ c #A9BAD7", "M$ c #A8B9D7", "N$ c #90A4C7", "O$ c #141920", "P$ c #1B2531", "Q$ c #475F7E", "R$ c #546C90", "S$ c #6982A0", "T$ c #C0CFDC", "U$ c #8B9FB7", "V$ c #56688A", "W$ c #515D7B", "X$ c #515B79", "Y$ c #515B76", "Z$ c #525D79", "`$ c #E2E2E2", " % c #FCFCFC", ".% c #A9A9A9", "+% c #BCBCBC", "@% c #757575", "#% c #242424", "$% c #0C0C0C", "%% c #003E69", "&% c #00457E", "*% c #003671", "=% c #003875", "-% c #003974", ";% c #003773", ">% c #003E7A", ",% c #004582", "'% c #004684", ")% c #004383", "!% c #004586", "~% c #00488A", "{% c #004683", "]% c #00427E", "^% c #003772", "/% c #003771", "(% c #003B75", "_% c #00477D", ":% c #004F86", "<% c #005089", "[% c #025C98", "}% c #003E6B", "|% c #545F79", "1% c #65728D", "2% c #495776", "3% c #4B5C7D", "4% c #131720", "5% c #535C70", "6% c #9EADCF", "7% c #B7C7E6", "8% c #A0B5DE", "9% c #8696C1", "0% c #727EA8", "a% c #6A728C", "b% c #686F83", "c% c #72788B", "d% c #ECEDF0", "e% c #EFF0F2", "f% c #F6F6F7", "g% c #D7E2ED", "h% c #98A7B8", "i% c #21272D", "j% c #1D2834", "k% c #4D6887", "l% c #546788", "m% c #5F7494", "n% c #647596", "o% c #515F80", "p% c #4F5876", "q% c #4E5672", "r% c #4F5774", "s% c #4E566F", "t% c #515874", "u% c #E8E8E8", "v% c #C1C1C1", "w% c #B3B3B3", "x% c #252525", "y% c #AEA9A4", "z% c #564B44", "A% c #655C55", "B% c #433B39", "C% c #847F7A", "D% c #7E7067", "E% c #4B4241", "F% c #6F635E", "G% c #835C30", "H% c #734E21", "I% c #6E481B", "J% c #664319", "K% c #593811", "L% c #6E6158", "M% c #6B5D52", "N% c #726C68", "O% c #544A43", "P% c #514845", "Q% c #484048", "R% c #776F6A", "S% c #4F4440", "T% c #48546F", "U% c #5B6479", "V% c #96A2B5", "W% c #7486A1", "X% c #516183", "Y% c #4C5E7F", "Z% c #4C6184", "`% c #273042", " & c #2C2F37", ".& c #64708F", "+& c #8A9ABF", "@& c #8F9FC4", "#& c #7483AB", "$& c #677299", "%& c #646D8C", "&& c #646D88", "*& c #6D7690", "=& c #C8CEDD", "-& c #D5D9E4", ";& c #F3F3F5", ">& c #CFDAE6", ",& c #67717D", "'& c #2D3948", ")& c #232F3D", "!& c #4A5E7A", "~& c #4E5977", "{& c #4F5C7A", "]& c #4E5876", "^& c #4E5875", "/& c #4D5570", "(& c #4D5572", "_& c #4E546D", ":& c #4D546B", "<& c #FDFDFD", "[& c #8B8A8A", "}& c #40434C", "|& c #2E3545", "1& c #A3A3A0", "2& c #2C3623", "3& c #9A9FA8", "4& c #7B5E30", "5& c #183744", "6& c #49585B", "7& c #404E4C", "8& c #403115", "9& c #9DA1A7", "0& c #898989", "a& c #6B6B6C", "b& c #464647", "c& c #343C28", "d& c #374266", "e& c #B6B4B6", "f& c #313723", "g& c #47526B", "h& c #484F61", "i& c #6F7B90", "j& c #9BA6B7", "k& c #99A6B7", "l& c #ABB6C5", "m& c #BEC7D4", "n& c #4C5B72", "o& c #0E0E10", "p& c #3C4151", "q& c #5D6C97", "r& c #7A87AC", "s& c #7C87A8", "t& c #667193", "u& c #5D688A", "v& c #616B8B", "w& c #697493", "x& c #ABB5CD", "y& c #BFC6D8", "z& c #F0F0F3", "A& c #EFF0F3", "B& c #A9B4C0", "C& c #3C4249", "D& c #2F3B4E", "E& c #232A38", "F& c #434B62", "G& c #4B536E", "H& c #4D5775", "I& c #4C546E", "J& c #4A516B", "K& c #4C526B", "L& c #4C536B", "M& c #4A4F61", "N& c #4C5469", "O& c #4E566E", "P& c #B8B8B8", "Q& c #696969", "R& c #373737", "S& c #CAC8C9", "T& c #62687F", "U& c #656773", "V& c #696869", "W& c #403D40", "X& c #ACB2BD", "Y& c #815D27", "Z& c #1C4A64", "`& c #4D5D5F", " * c #143643", ".* c #392608", "+* c #9DA0A6", "@* c #7E7E7D", "#* c #E7E7E7", "$* c #5C5C5D", "%* c #454243", "&* c #556081", "** c #BBB9BA", "=* c #434044", "-* c #465167", ";* c #474C5B", ">* c #4D5569", ",* c #48526B", "'* c #48536D", ")* c #495670", "!* c #4F5E7B", "~* c #4A566E", "{* c #26272E", "]* c #1E212A", "^* c #4D5C85", "/* c #5E6E9A", "(* c #7C88A9", "_* c #6E7899", ":* c #5B6688", "<* c #5E6889", "[* c #677090", "}* c #AAB3CC", "|* c #BEC4D7", "1* c #CAD0DC", "2* c #727883", "3* c #1F232B", "4* c #1F2430", "5* c #2F3546", "6* c #464D65", "7* c #4A536C", "8* c #4C526C", "9* c #4A5166", "0* c #494D61", "a* c #494E61", "b* c #494C5D", "c* c #474955", "d* c #4C5365", "e* c #4D5467", "f* c #B9B9B9", "g* c #979797", "h* c #666666", "i* c #FFFBFF", "j* c #D5CFD4", "k* c #DCDEDB", "l* c #D9CBD4", "m* c #28311E", "n* c #B4BAC3", "o* c #7D5624", "p* c #35403A", "q* c #2A3B3D", "r* c #556161", "s* c #4F3513", "t* c #91969B", "u* c #6F6F6F", "v* c #606060", "w* c #2B3220", "x* c #EBE6EA", "y* c #BEB7BF", "z* c #2F3328", "A* c #454D61", "B* c #434754", "C* c #434857", "D* c #454B5D", "E* c #464C63", "F* c #464E66", "G* c #464D66", "H* c #656E82", "I* c #717281", "J* c #070809", "K* c #22252E", "L* c #3C404F", "M* c #4A4D5B", "N* c #4F5260", "O* c #545F7F", "P* c #5B678E", "Q* c #5E698F", "R* c #62687B", "S* c #6E748A", "T* c #8E94AC", "U* c #626775", "V* c #393A3E", "W* c #2B2D36", "X* c #1E2029", "Y* c #393E51", "Z* c #484E66", "`* c #4A4F67", " = c #494C61", ".= c #4A4E61", "+= c #494D60", "@= c #484A56", "#= c #474953", "$= c #4C5366", "%= c #4D5363", "&= c #BFBFBF", "*= c #777777", "== c #808080", "-= c #2D2D2D", ";= c #FFF9FF", ">= c #009300", ",= c #009100", "'= c #99ABA1", ")= c #A59DA5", "!= c #3C3A3C", "~= c #AEB2BB", "{= c #695127", "]= c #214253", "^= c #4E5D77", "/= c #3C4442", "(= c #472214", "_= c #8F8A94", ":= c #4D4E4D", "<= c #FBFBFB", "[= c #8B8A8B", "}= c #454045", "|= c #E2E9E7", "1= c #589959", "2= c #4CC100", "3= c #434C5D", "4= c #41434E", "5= c #434651", "6= c #454B60", "7= c #434D64", "8= c #484F66", "9= c #586177", "0= c #3F434F", "a= c #111113", "b= c #25272B", "c= c #33353F", "d= c #4E515B", "e= c #5F6885", "f= c #656E91", "g= c #667090", "h= c #616677", "i= c #64697B", "j= c #525868", "k= c #383739", "l= c #585141", "m= c #5C4F3A", "n= c #383536", "o= c #40485A", "p= c #495167", "q= c #484E61", "r= c #484B5C", "s= c #515D75", "t= c #6888A7", "u= c #7089A3", "v= c #575F6F", "w= c #494C5B", "x= c #4D5464", "y= c #4A4E59", "z= c #A3A3A3", "A= c #C3C3C3", "B= c #919191", "C= c #4F4F4F", "D= c #53AD00", "E= c #569657", "F= c #C9FCD4", "G= c #5F9B5C", "H= c #004E15", "I= c #003300", "J= c #AC98AA", "K= c #212B18", "L= c #C0CBCF", "M= c #6A4C2A", "N= c #2E323F", "O= c #5DA059", "P= c #00C20E", "Q= c #004C00", "R= c #8A748C", "S= c #4A4248", "T= c #D1D1D1", "U= c #8A8A8A", "V= c #262B1C", "W= c #589C58", "X= c #C4FAD0", "Y= c #0E7A2E", "Z= c #006C15", "`= c #434959", " - c #3F434B", ".- c #424654", "+- c #434858", "@- c #43495C", "#- c #43495D", "$- c #434B5D", "%- c #41475A", "&- c #373C49", "*- c #1E2028", "=- c #0B0C10", "-- c #0E0F11", ";- c #65686E", ">- c #737786", ",- c #787E8C", "'- c #767A88", ")- c #6C717E", "!- c #5E6370", "~- c #2E323A", "{- c #4B4743", "]- c #937E48", "^- c #AE904C", "/- c #675841", "(- c #414552", "_- c #464E60", ":- c #484A5B", "<- c #4A5161", "[- c #556683", "}- c #535E75", "|- c #4C5161", "1- c #484C56", "2- c #4B4E59", "3- c #474A51", "4- c #C7C7C7", "5- c #D2D2D2", "6- c #CACACA", "7- c #B4EABD", "8- c #56985B", "9- c #6C876E", "0- c #748D75", "a- c #005A20", "b- c #004900", "c- c #89B08C", "d- c #EBB1C4", "e- c #C3B8BA", "f- c #D0A6AF", "g- c #509B53", "h- c #CBFFD5", "i- c #758A73", "j- c #00551D", "k- c #004800", "l- c #BDAEBC", "m- c #9A9B9A", "n- c #9D9E9E", "o- c #BCA1BC", "p- c #C3FFCE", "q- c #6E876D", "r- c #778C73", "s- c #005920", "t- c #424856", "u- c #3E4047", "v- c #3F4149", "w- c #41434F", "x- c #414555", "y- c #424655", "z- c #424656", "A- c #424756", "B- c #3F4352", "C- c #303541", "D- c #1F222B", "E- c #1A1C23", "F- c #17191F", "G- c #16181E", "H- c #181920", "I- c #1B1E24", "J- c #21242D", "K- c #2E333E", "L- c #3D4355", "M- c #2C2E31", "N- c #544B30", "O- c #B2984C", "P- c #9C8149", "Q- c #4F4940", "R- c #3D404A", "S- c #3F4249", "T- c #3F4248", "U- c #464B57", "V- c #4A5266", "W- c #494E5E", "X- c #484A55", "Y- c #45484D", "Z- c #47494F", "`- c #434748", " ; c #ABABAB", ".; c #656565", "+; c #424242", "@; c #474747", "#; c #080808", "$; c #555450", "%; c #00590A", "&; c #718D74", "*; c #7E6500", "=; c #00541C", "-; c #E0CBDC", ";; c #C8959B", ">; c #B0A9A7", ",; c #D8ADC0", "'; c #5D8260", "); c #658566", "!; c #6E8A6D", "~; c #003E00", "{; c #003800", "]; c #EDDAEA", "^; c #C6C5C6", "/; c #C0C1C0", "(; c #DECDDC", "_; c #002300", ":; c #6E8B6E", "<; c #004500", "[; c #00571D", "}; c #424652", "|; c #3C3F45", "1; c #3C3E45", "2; c #3E4045", "3; c #3F4148", "4; c #3F3F48", "5; c #3F424B", "6; c #40434E", "7; c #3D3F49", "8; c #31343B", "9; c #24252C", "0; c #202127", "a; c #292C34", "b; c #2D2E35", "c; c #2B2C32", "d; c #2B2E37", "e; c #2F343F", "f; c #303540", "g; c #2C3039", "h; c #2A2B29", "i; c #6F6337", "j; c #BD9F4F", "k; c #836D42", "l; c #3E3B34", "m; c #36393A", "n; c #42464C", "o; c #474A56", "p; c #464852", "q; c #43464B", "r; c #404347", "s; c #3F4343", "t; c #414646", "u; c #404343", "v; c #131313", "w; c #66635F", "x; c #77746F", "y; c #3F434C", "z; c #3A3C40", "A; c #3C3F43", "B; c #3D3F42", "C; c #3F4143", "D; c #3F4043", "E; c #3B3D43", "F; c #3E3F47", "G; c #3F4147", "H; c #3D3D44", "I; c #393B41", "J; c #34363C", "K; c #2B2C31", "L; c #292B2F", "M; c #2E3337", "N; c #34383F", "O; c #3B3F46", "P; c #373A3F", "Q; c #37362C", "R; c #998643", "S; c #BA9B50", "T; c #66573E", "U; c #38393A", "V; c #3F4246", "W; c #414549", "X; c #3F4243", "Y; c #3E4141", "Z; c #3D413F", "`; c #3F4341", " > c #3F4340", ".> c #2B2B2B", "+> c #272727", "@> c #686561", "#> c #6F6C68", "$> c #3E4048", "%> c #393B3C", "&> c #3B3C3E", "*> c #3D3E3F", "=> c #3E3F42", "-> c #3E3F46", ";> c #3B3D42", ">> c #3B3E41", ",> c #3C3E42", "'> c #3E4043", ")> c #3E3F43", "!> c #3D3F41", "~> c #3C3D42", "{> c #3D3F43", "]> c #3E3F44", "^> c #353639", "/> c #423E2F", "(> c #AE9649", "_> c #A5894C", ":> c #574B3C", "<> c #383A38", "[> c #3E4041", "}> c #3D4040", "|> c #3C3F3F", "1> c #3C403E", "2> c #3C413E", "3> c #3E423F", "4> c #3F433F", "5> c #3A3D3F", "6> c #3B3D3B", "7> c #3C3D3C", "8> c #3B3D3D", "9> c #3B3D40", "0> c #404043", "a> c #3A3E3F", "b> c #3B3F3E", "c> c #3C3F40", "d> c #3F3F42", "e> c #3E3F41", "f> c #3B3F3F", "g> c #393D3D", "h> c #2F3131", "i> c #54492E", "j> c #C3A551", "k> c #917947", "l> c #423F35", "m> c #353937", "n> c #3A3E3B", "o> c #3B3F3B", "p> c #3B3F3C", "q> c #3B403D", "r> c #373939", "s> c #3A3B39", "t> c #393B39", "u> c #3B3B3B", "v> c #3B3C3D", "w> c #3B3D3F", "x> c #3D3F40", "y> c #3F3F43", "z> c #3A3D3C", "A> c #393E3B", "B> c #3D3F3E", "C> c #3E3F3F", "D> c #3C3E3E", "E> c #3A3D3B", "F> c #363A38", "G> c #2E2F2B", "H> c #948141", "I> c #C0A151", "J> c #76623F", "K> c #383732", "L> c #373C38", "M> c #3A3F3B", "N> c #3D413E", "O> c #258C00", "P> c #3D9800", "Q> c #489800", "R> c #518000", "S> c #373A39", "T> c #373837", "U> c #383B39", "V> c #393A38", "W> c #3B3D3C", "X> c #3C3D3D", "Y> c #3D3E3E", "Z> c #3B3E3D", "`> c #393C3B", " , c #3A3E3C", "., c #3B3C3B", "+, c #393D3B", "@, c #383C3B", "#, c #383D3B", "$, c #383B3A", "%, c #323635", "&, c #323128", "*, c #9C8743", "=, c #B0944C", "-, c #61543C", ";, c #353733", ">, c #383C39", ",, c #228822", "', c #46D02F", "), c #47DB10", "!, c #5AE90C", "~, c #72FF0D", "{, c #8EF10D", "], c #9DE20C", "^, c #B4E12D", "/, c #B4D22B", "(, c #828819", "_, c #4B3D13", ":, c #AF953F", "<, c #90743B", "[, c #553524", "}, c #826A57", "|, c #775E4D", "1, c #735A48", "2, c #735640", "3, c #76573F", "4, c #76573D", "5, c #74543B", "6, c #76563C", "7, c #574333", "8, c #765944", "9, c #634634", "0, c #554131", "a, c #75543A", "b, c #74543A", "c, c #725339", "d, c #715239", "e, c #715238", "f, c #443121", "g, c #2BC537", "h, c #33EE23", "i, c #37FF20", "j, c #5EFF21", "k, c #77FF2A", "l, c #90FF31", "m, c #AAFF31", "n, c #C1FF31", "o, c #CAFF2A", "p, c #DEFF23", "q, c #DBE01F", "r, c #D6C629", "s, c #776633", "t, c #B29943", "u, c #776136", "v, c #2C2519", "w, c #795F4F", "x, c #AB9488", "y, c #A9907E", "z, c #A48169", "A, c #9F7B60", "B, c #A1795E", "C, c #A47C61", "D, c #A67E63", "E, c #A1785C", "F, c #957256", "G, c #79523A", "H, c #836046", "I, c #8D694E", "J, c #926D4F", "K, c #946F51", "L, c #936F52", "M, c #926E51", "N, c #916E52", "O, c #6E553B", "P, c #7A7875", "Q, c #1BD83E", "R, c #1FFF35", "S, c #2BFF39", "T, c #43FF39", "U, c #67FF39", "V, c #7EFF3F", "W, c #99FF4A", "X, c #B0FF4A", "Y, c #CBFF4A", "Z, c #D6FF41", "`, c #ECFF3A", " ' c #EDEE21", ".' c #F1DD12", "+' c #E2BF0E", "@' c #9A7D0A", "#' c #887330", "$' c #9F823E", "%' c #443720", "&' c #F8FEFF", "*' c #F1FDFF", "=' c #EAFCFF", "-' c #E3FCFF", ";' c #DCFBFF", ">' c #D5FAFF", ",' c #CEFAFF", "'' c #C7F9FF", ")' c #C0F8FF", "!' c #BAF7FF", "~' c #B3F7FF", "{' c #ACF6FF", "]' c #A5F5FF", "^' c #9EF5FF", "/' c #97F4FF", "(' c #90F3FF", "_' c #89F3FF", ":' c #82F2FF", "<' c #7CF1FF", "[' c #75F0FF", "}' c #6EF0FF", "|' c #67EFFF", "1' c #60EEFF", "2' c #59EEFF", "3' c #52EDFF", "4' c #4BECFF", "5' c #44ECFF", "6' c #3EEBFF", "7' c #37EAFF", "8' c #30E9FF", "9' c #29E9FF", "0' c #0DE6FF", "a' c #06E5FF", "b' c #00E2FB", "c' c #6F5745", "d' c #A38776", "e' c #997966", "f' c #977358", "g' c #956C50", "h' c #90684D", "i' c #906949", "j' c #8F694A", "k' c #8A6145", "l' c #957154", "m' c #79533A", "n' c #755238", "o' c #81593E", "p' c #855E42", "q' c #8A6143", "r' c #8A6245", "s' c #8A6343", "t' c #8C6345", "u' c #886345", "v' c #6B4B38", "w' c #140E09", "x' c #7E7C79", "y' c #1DD866", "z' c #1EFF54", "A' c #34FF57", "B' c #3CFF4D", "C' c #57FF49", "D' c #6CFF4E", "E' c #88FF5A", "F' c #9EFF5E", "G' c #BBFF59", "H' c #D0FF5E", "I' c #EAFF5A", "J' c #FAFB4D", "K' c #F1E531", "L' c #F1D524", "M' c #F1BF15", "N' c #E8A911", "O' c #A17717", "P' c #161100", "Q' c #403312", "R' c #100C01", "S' c #00E1F9", "T' c #6E5441", "U' c #A18574", "V' c #967661", "W' c #956E52", "X' c #8B6444", "Y' c #896242", "Z' c #865E41", "`' c #855D40", " ) c #865F43", ".) c #97745A", "+) c #76533B", "@) c #6B4A34", "#) c #765139", "$) c #7B573C", "%) c #7E5A3D", "&) c #7C593F", "*) c #7E5A3F", "=) c #7C593E", "-) c #604531", ";) c #110D08", ">) c #2DCC79", ",) c #12FF72", "') c #2AFF76", ")) c #3AFF6C", "!) c #4AFF68", "~) c #5FFF61", "{) c #78FF69", "]) c #8CFF6D", "^) c #ADFF7A", "/) c #C2FF6D", "() c #DCFF76", "_) c #EEFF6B", ":) c #FBF25D", "<) c #F1DC41", "[) c #F1CA38", "}) c #F1B42A", "|) c #F1A011", "1) c #E1961E", "2) c #01E1F9", "3) c #7D604E", "4) c #957562", "5) c #947157", "6) c #906D55", "7) c #8E674B", "8) c #886141", "9) c #845C3F", "0) c #856048", "a) c #95735A", "b) c #704E37", "c) c #61442E", "d) c #714E36", "e) c #77543A", "f) c #74523B", "g) c #72523B", "h) c #70543B", "i) c #72533D", "j) c #77573E", "k) c #583E2D", "l) c #0D0906", "m) c #7E7C7B", "n) c #118855", "o) c #13EE88", "p) c #29FF8D", "q) c #3AFF8C", "r) c #4AFF88", "s) c #5CFF80", "t) c #77FF89", "u) c #7EFF7D", "v) c #9AFF8A", "w) c #BDFF8D", "x) c #DDFF8A", "y) c #DFFF7C", "z) c #FAFF79", "A) c #FFF06F", "B) c #F1CA52", "C) c #F1B441", "D) c #F1A532", "E) c #F1961E", "F) c #EE7D07", "G) c #B85500", "H) c #836956", "I) c #957966", "J) c #8E725D", "K) c #8E6F59", "L) c #8D6E58", "M) c #8C684D", "N) c #865C3D", "O) c #81583C", "P) c #845C43", "Q) c #906F59", "R) c #694A36", "S) c #5A3F2B", "T) c #6A4A35", "U) c #694D36", "V) c #694C36", "W) c #674D38", "X) c #6B4F38", "Y) c #71543C", "Z) c #503B2B", "`) c #0A0603", " ! c #32D099", ".! c #1AFFAB", "+! c #2FFFAB", "@! c #49FFA7", "#! c #5AFF9F", "$! c #6AFFA9", "%! c #7DFF9C", "&! c #99FF9A", "*! c #9EFF9D", "=! c #CCFFAB", "-! c #DEFF9C", ";! c #EFFF9A", ">! c #FCFB8D", ",! c #FFE388", "'! c #F1C367", ")! c #F1AC51", "!! c #F19B41", "~! c #F18E32", "{! c #F1741D", "]! c #E76811", "^! c #02E2FB", "/! c #7D6250", "(! c #907461", "_! c #8A6E59", ":! c #8B6D54", "<! c #8E6D53", "[! c #83593A", "}! c #7D563C", "|! c #7E5C43", "1! c #977B66", "2! c #654734", "3! c #5B3B2A", "4! c #664731", "5! c #644531", "6! c #644733", "7! c #654834", "8! c #604533", "9! c #614734", "0! c #5C4533", "a! c #4B3628", "b! c #040301", "c! c #7E7D7D", "d! c #33DBA6", "e! c #29FFBD", "f! c #39FFBD", "g! c #4EFFBD", "h! c #69FFBD", "i! c #7DFFBD", "j! c #99FFBB", "k! c #9DFFAE", "l! c #BBFFBC", "m! c #CDFFBD", "n! c #EEFEBC", "o! c #FEFDAC", "p! c #FFE1AA", "q! c #FFCF92", "r! c #F1B371", "s! c #F1A35A", "t! c #F18D49", "u! c #F1753D", "v! c #F16022", "w! c #EE4714", "x! c #9D3206", "y! c #8D7260", "z! c #927765", "A! c #8D715E", "B! c #8C6E55", "C! c #8F6546", "D! c #855C40", "E! c #7B553C", "F! c #8B6650", "G! c #B49A89", "H! c #735844", "I! c #5C3E2B", "J! c #5A3E29", "K! c #664533", "L! c #634832", "M! c #5F4532", "N! c #5B432E", "O! c #5B4430", "P! c #5F4834", "Q! c #3F2C22", "R! c #010000", "S! c #018A74", "T! c #15E9C9", "U! c #2AFFDD", "V! c #3FFFDD", "W! c #5AFFDD", "X! c #6DFFDD", "Y! c #8AFFDD", "Z! c #9DFFDD", "`! c #BBFFDC", " ~ c #BDFFCD", ".~ c #DDFEDD", "+~ c #EEFECD", "@~ c #FEEECC", "#~ c #FFDEAF", "$~ c #FFC3A9", "%~ c #F1A287", "&~ c #F18A72", "*~ c #F17A5B", "=~ c #F16E42", "-~ c #F1532E", ";~ c #EB3D11", ">~ c #B00D00", ",~ c #FEF8FF", "'~ c #FEF1FF", ")~ c #FDEAFF", "!~ c #FDE3FF", "~~ c #FBC7FF", "{~ c #FAC0FF", "]~ c #FABAFF", "^~ c #F9B3FF", "/~ c #F9ACFF", "(~ c #F9A5FF", "_~ c #F89EFF", ":~ c #F897FF", "<~ c #F790FF", "[~ c #F789FF", "}~ c #F682FF", "|~ c #F67CFF", "1~ c #F575FF", "2~ c #F56EFF", "3~ c #F467FF", "4~ c #F460FF", "5~ c #F359FF", "6~ c #F352FF", "7~ c #F34BFF", "8~ c #F244FF", "9~ c #F23EFF", "0~ c #F137FF", "a~ c #F130FF", "b~ c #F029FF", "c~ c #F022FF", "d~ c #EF1BFF", "e~ c #EF14FF", "f~ c #EE0DFF", "g~ c #EE06FF", "h~ c #EC01FC", "i~ c #9F8372", "j~ c #967B69", "k~ c #937662", "l~ c #8F6B50", "m~ c #8E6B4B", "n~ c #8C6347", "o~ c #805B3F", "p~ c #745036", "q~ c #6E4E37", "r~ c #836448", "s~ c #6B4C36", "t~ c #4D3522", "u~ c #553A28", "v~ c #614530", "w~ c #5C412D", "x~ c #5E452F", "y~ c #5E442D", "z~ c #563D2D", "A~ c #281B15", "B~ c #0F8181", "C~ c #1CE3D9", "D~ c #31FEEE", "E~ c #4AFEEE", "F~ c #5EFEEE", "G~ c #7AFEEE", "H~ c #8DFEEE", "I~ c #ABFEEE", "J~ c #BDFEEE", "K~ c #DDFEEE", "L~ c #EEFEEE", "M~ c #FFEDEE", "N~ c #FFDDCD", "O~ c #FFBFBD", "P~ c #FFAEA2", "Q~ c #F18881", "R~ c #F17269", "S~ c #F16252", "T~ c #F1533D", "U~ c #F13B22", "V~ c #F1120E", "W~ c #CF0000", "X~ c #ED00FD", "Y~ c #71553F", "Z~ c #684E3D", "`~ c #654A38", " { c #60432F", ".{ c #553D2A", "+{ c #523927", "@{ c #4E3627", "#{ c #4B3424", "${ c #4E3625", "%{ c #80634B", "&{ c #674834", "*{ c #462E21", "={ c #422C1F", "-{ c #3D2A1C", ";{ c #3C281B", ">{ c #3D281C", ",{ c #3A281B", "'{ c #36241B", "){ c #231510", "!{ c #038181", "~{ c #15D9E3", "{{ c #29F5FF", "]{ c #3FF8FF", "^{ c #59F2FF", "/{ c #6DFBFF", "({ c #8AF0FF", "_{ c #9CFDFF", ":{ c #BCEFFF", "<{ c #CDFEFF", "[{ c #EEEDFF", "}{ c #FFEDFE", "|{ c #FFCDEE", "1{ c #FFBDD0", "2{ c #FFA1BF", "3{ c #F18B98", "4{ c #F17A83", "5{ c #F1626C", "6{ c #F14D53", "7{ c #F1323F", "8{ c #F11F22", "9{ c #CF000E", "0{ c #060000", "a{ c #0C0000", "b{ c #130000", "c{ c #190000", "d{ c #1F0000", "e{ c #260000", "f{ c #2C0000", "g{ c #330000", "h{ c #390000", "i{ c #3F0000", "j{ c #460000", "k{ c #4C0000", "l{ c #520000", "m{ c #590000", "n{ c #5F0000", "o{ c #660000", "p{ c #6C0000", "q{ c #720000", "r{ c #790000", "s{ c #7F0000", "t{ c #850000", "u{ c #8C0000", "v{ c #920000", "w{ c #990000", "x{ c #9F0000", "y{ c #B80000", "z{ c #BF0000", "A{ c #C50000", "B{ c #CC0000", "C{ c #D20000", "D{ c #D80000", "E{ c #DF0000", "F{ c #E50000", "G{ c #EB0000", "H{ c #F20000", "I{ c #EE00FF", "J{ c #78573C", "K{ c #A28773", "L{ c #87634E", "M{ c #7E583F", "N{ c #6C4C35", "O{ c #644833", "P{ c #624531", "Q{ c #634532", "R{ c #644533", "S{ c #82654D", "T{ c #644835", "U{ c #533828", "V{ c #503527", "W{ c #513828", "X{ c #4F3626", "Y{ c #493424", "Z{ c #453222", "`{ c #422E21", " ] c #38281D", ".] c #040201", "+] c #7E7E7E", "@] c #0D6A80", "#] c #1BC0E2", "$] c #31D6FF", "%] c #49D3FF", "&] c #5ED9FF", "*] c #7AD1FF", "=] c #8DDBFF", "-] c #A9CFFF", ";] c #ACDCFF", ">] c #CCCEFF", ",] c #DDDDFF", "'] c #FFCDFE", ")] c #FFCCEE", "!] c #FFAFDE", "~] c #FF9DC3", "{] c #F177A3", "]] c #F16A8B", "^] c #F15C73", "/] c #F1425E", "(] c #F12E43", "_] c #EE1533", ":] c #BF0D1B", "<] c #76553B", "[] c #9D7E6A", "}] c #936D54", "|] c #8A6347", "1] c #7E593D", "2] c #715038", "3] c #674A36", "4] c #81614A", "5] c #654836", "6] c #583C2B", "7] c #5D422E", "8] c #5B402E", "9] c #583E2B", "0] c #553C2C", "a] c #4C3729", "b] c #433024", "c] c #1E160F", "d] c #010101", "e] c #2DB4E1", "f] c #2AC5FF", "g] c #41C7FF", "h] c #56C3FF", "i] c #60C9FF", "j] c #7CBFFF", "k] c #8FBDFF", "l] c #AABFFF", "m] c #AFBDFF", "n] c #CEBFFF", "o] c #E1BDFE", "p] c #FDAFFC", "q] c #FFAAEE", "r] c #FF92DD", "s] c #F171B7", "t] c #F162A1", "u] c #F1538B", "v] c #F13D72", "w] c #F1235D", "x] c #E81444", "y] c #AA0831", "z] c #77563B", "A] c #95735C", "B] c #8E694D", "C] c #7F583E", "D] c #7A543B", "E] c #75503A", "F] c #6E4E39", "G] c #81624C", "H] c #674734", "I] c #5E422D", "J] c #5D412E", "K] c #614430", "L] c #5E412D", "M] c #533B2C", "N] c #4E3929", "O] c #30241B", "P] c #2E9DD2", "Q] c #23AAFF", "R] c #3AA9FF", "S] c #4CACFF", "T] c #59A8FF", "U] c #6FACFF", "V] c #88A1FF", "W] c #92A1FF", "X] c #AAA2FF", "Y] c #BFAEFF", "Z] c #DDA1FF", "`] c #F19DFF", " ^ c #FD92FB", ".^ c #FF8AE4", "+^ c #F168C2", "@^ c #F154AB", "#^ c #F14594", "$^ c #F1347D", "%^ c #F11E67", "&^ c #E71161", "*^ c #78563C", "=^ c #98765F", "-^ c #8F674C", ";^ c #7E573D", ">^ c #79553A", ",^ c #75523A", "'^ c #714E38", ")^ c #85634C", "!^ c #684A33", "~^ c #5E422F", "{^ c #593E2E", "]^ c #4E3827", "^^ c #4D3A2A", "/^ c #392C20", "(^ c #010100", "_^ c #115B92", ":^ c #0E88EC", "<^ c #1B8AF1", "[^ c #3186F1", "}^ c #4182F1", "|^ c #5286F1", "1^ c #6880F1", "2^ c #7C77F1", "3^ c #9381F1", "4^ c #AE88F1", "5^ c #C58BF1", "6^ c #E081F1", "7^ c #E672F1", "8^ c #EF68E0", "9^ c #F15DC9", "0^ c #F14AB8", "a^ c #F136A6", "b^ c #F1268E", "c^ c #EC1577", "d^ c #BC0552", "e^ c #FFFEF8", "f^ c #FFFEF1", "g^ c #FFFEEA", "h^ c #FFFEE3", "i^ c #FFFEDC", "j^ c #FFFED5", "k^ c #FFFECE", "l^ c #FFFDC7", "m^ c #FFFDC0", "n^ c #FFFDBA", "o^ c #FFFDB3", "p^ c #FFFDAC", "q^ c #FFFDA5", "r^ c #FFFD9E", "s^ c #FFFC97", "t^ c #FFFC90", "u^ c #FFFC89", "v^ c #FFFC6E", "w^ c #FFFC67", "x^ c #FFFB60", "y^ c #FFFB59", "z^ c #FFFB52", "A^ c #FFFB4B", "B^ c #FFFB44", "C^ c #FFFB3E", "D^ c #FFFB37", "E^ c #FFFA30", "F^ c #FFFA29", "G^ c #FFFA22", "H^ c #FFFA1B", "I^ c #FFFA14", "J^ c #FFFA0D", "K^ c #FFFA06", "L^ c #FCF701", "M^ c #79583D", "N^ c #937058", "O^ c #8C654B", "P^ c #84593D", "Q^ c #7E563B", "R^ c #785239", "S^ c #754F38", "T^ c #704D38", "U^ c #84644D", "V^ c #684833", "W^ c #59402E", "X^ c #5C402D", "Y^ c #583F2B", "Z^ c #4A3727", "`^ c #493626", " / c #382B1F", "./ c #2577D2", "+/ c #0D72F1", "@/ c #246FF1", "#/ c #3869F1", "$/ c #4168F1", "%/ c #5260F1", "&/ c #6B61F1", "*/ c #8C69F1", "=/ c #A572F1", "-/ c #BF71F1", ";/ c #D772F1", ">/ c #E75CF1", ",/ c #EF52E5", "'/ c #F14AD1", ")/ c #F13AC3", "!/ c #F127B4", "~/ c #F1179D", "{/ c #E41383", "]/ c #8C1755", "^/ c #825E42", "// c #886147", "(/ c #865D41", "_/ c #7F573E", ":/ c #7C553E", "</ c #7D5D46", "[/ c #573D2C", "}/ c #543B2B", "|/ c #563D2B", "1/ c #513A2A", "2/ c #4A3929", "3/ c #3D3024", "4/ c #020201", "5/ c #1C5EDF", "6/ c #1554F1", "7/ c #2A50F1", "8/ c #3249F1", "9/ c #4341F1", "0/ c #5B4BF1", "a/ c #7E52F1", "b/ c #9D5BF1", "c/ c #B051F1", "d/ c #C85BF1", "e/ c #E04AF1", "f/ c #EE42EA", "g/ c #F136DD", "h/ c #F127CE", "i/ c #F11ABE", "j/ c #EE22AA", "k/ c #BD177B", "l/ c #010600", "m/ c #020C00", "n/ c #031300", "o/ c #051900", "p/ c #061F00", "q/ c #072600", "r/ c #082C00", "s/ c #0A3300", "t/ c #0F4C00", "u/ c #105200", "v/ c #115900", "w/ c #125F00", "x/ c #146600", "y/ c #156C00", "z/ c #167200", "A/ c #177900", "B/ c #197F00", "C/ c #1A8500", "D/ c #1B8C00", "E/ c #1C9200", "F/ c #1E9900", "G/ c #1F9F00", "H/ c #20A500", "I/ c #21AC00", "J/ c #22B200", "K/ c #24B800", "L/ c #25BF00", "M/ c #26C500", "N/ c #28CC00", "O/ c #29D200", "P/ c #2AD800", "Q/ c #2BDF00", "R/ c #2DE500", "S/ c #2EEB00", "T/ c #2FF200", "U/ c #FDF701", "V/ c #886145", "W/ c #876854", "X/ c #78593F", "Y/ c #705138", "Z/ c #664933", "`/ c #5C412F", " ( c #533A2A", ".( c #594434", "+( c #4E3729", "@( c #4E3629", "#( c #53392A", "$( c #583B2B", "%( c #563B2D", "&( c #50392B", "*( c #483427", "=( c #483729", "-( c #31261E", ";( c #020000", ">( c #23428D", ",( c #1940E0", "'( c #1334F1", ")( c #232BF1", "!( c #392CF1", "~( c #5432F1", "{( c #6B3DF1", "]( c #9242F1", "^( c #9D3CF1", "/( c #B83CF1", "(( c #CC3CF1", "_( c #E434F1", ":( c #EF23EA", "<( c #F115DB", "[( c #EE22CC", "}( c #C11B98", "|( c #FEF900", "1( c #655144", "2( c #3E3027", "3( c #1C140F", "4( c #19120C", "5( c #16100B", "6( c #110C08", "7( c #0E0905", "8( c #050402", "9( c #030202", "0( c #302217", "a( c #402E21", "b( c #19110C", "c( c #130C08", "d( c #100A07", "e( c #0A0705", "f( c #050302", "g( c #020101", "h( c #2C3A90", "i( c #1E2DF0", "j( c #1B14EE", "k( c #3112F1", "l( c #4921F1", "m( c #6622F1", "n( c #7B2EF1", "o( c #9825F1", "p( c #AD21F1", "q( c #C421F1", "r( c #D71EF1", "s( c #E112EC", "t( c #E213D7", "u( c #BD1AAA", "v( c #FFFA00", "w( c #807B79", "x( c #807C79", "y( c #7E7B79", "z( c #7D7C7A", "A( c #7D7C7C", "B( c #7C7B7B", "C( c #797876", "D( c #7B7A7A", "E( c #7E7A79", "F( c #7D7B7A", "G( c #7D7D7C", "H( c #190CB7", "I( c #2C18E4", "J( c #5522EE", "K( c #560EEB", "L( c #7811F1", "M( c #8C1CF1", "N( c #AA15EE", "O( c #AC19E8", "P( c #BF19E3", "Q( c #A618B9", "R( c #862B8C", "S( c #43219D", "T( c #3A00B0", "U( c #5800CF", "V( c #7600CF", "W( c #750BBF", "X( c #8A22AA", "Y( c #00000C", "Z( c #010013", "`( c #010019", " _ c #02001F", "._ c #020026", "+_ c #02002C", "@_ c #030033", "#_ c #030039", "$_ c #04003F", "%_ c #040046", "&_ c #04004C", "*_ c #050052", "=_ c #050059", "-_ c #06005F", ";_ c #060066", ">_ c #06006C", ",_ c #070072", "'_ c #08008C", ")_ c #090092", "!_ c #090099", "~_ c #0A009F", "{_ c #0A00A5", "]_ c #0A00AC", "^_ c #0B00B2", "/_ c #0B00B8", "(_ c #0C00BF", "__ c #0C00C5", ":_ c #0C00CC", "<_ c #0D00D2", "[_ c #0D00D8", "}_ c #0E00DF", "|_ c #0E00E5", "1_ c #0E00EB", "2_ c #0F00F2", "3_ c #FF0000", "4_ c #000399", "5_ c #00049B", "6_ c #00039B", "7_ c #00039A", "8_ c #000299", "9_ c #00029B", "0_ c #00019B", "a_ c #00009A", "b_ c #000199", "c_ c #FF2800", "d_ c #FF5000", "e_ c #FF7800", "f_ c #FFA100", "g_ c #FFC900", "h_ c #FFF100", "i_ c #E4FF00", "j_ c #BBFF00", "k_ c #93FF00", "l_ c #6BFF00", "m_ c #43FF00", "n_ c #1AFF00", "o_ c #00FF0D", "p_ c #00FF35", "q_ c #00FF5D", "r_ c #00FF86", "s_ c #00FFAE", "t_ c #00FFD6", "u_ c #00FFFF", "v_ c #00D6FF", "w_ c #00AEFF", "x_ c #0086FF", "y_ c #005DFF", "z_ c #0035FF", "A_ c #000DFF", "B_ c #1A00FF", "C_ c #4300FF", "D_ c #6B00FF", "E_ c #9300FF", "F_ c #BB00FF", "G_ c #E400FF", "H_ c #FF00F1", "I_ c #FF00C9", "J_ c #FF00A1", "K_ c #030C9E", "L_ c #0410A6", "M_ c #0310A6", "N_ c #0110A5", "O_ c #010FA5", "P_ c #010FA3", "Q_ c #000FA3", "R_ c #010DA5", "S_ c #030DA6", "T_ c #010DA3", "U_ c #010CA3", "V_ c #030CA5", "W_ c #02099D", "X_ c #FFEE00", "Y_ c #0513A2", "Z_ c #0A1AAB", "`_ c #0919AB", " : c #0719AB", ".: c #0618AA", "+: c #061BAA", "@: c #061AAA", "#: c #071CAB", "$: c #071AAB", "%: c #0619A8", "&: c #041AA6", "*: c #0618A8", "=: c #0418A6", "-: c #0416A7", ";: c #0613AC", ">: c #0610AB", ",: c #060DAE", "': c #060EAC", "): c #0610AA", "!: c #060DAC", "~: c #0713A9", "{: c #0714AC", "]: c #0618A6", "^: c #0617A6", "/: c #0619A6", "(: c #0717A8", "_: c #0411A0", ":: c #091DA6", "<: c #0F26AF", "[: c #0D25AD", "}: c #0F25AE", "|: c #0F26AE", "1: c #0F22AE", "2: c #0D23AE", "3: c #0C23AD", "4: c #0C22AD", "5: c #0C24AD", "6: c #0C24AB", "7: c #0C20AD", "8: c #0C1EB0", "9: c #0928A3", "0: c #035782", "a: c #0432A0", "b: c #074592", "c: c #066C73", "d: c #075784", "e: c #075C80", "f: c #0D20AE", "g: c #0D22AD", "h: c #0D22AE", "i: c #081AA5", "j: c #737373", "k: c #0C25A9", "l: c #102AB0", "m: c #1029B2", "n: c #102AB2", "o: c #102BB2", "p: c #102CB2", "q: c #0F29AF", "r: c #102BB1", "s: c #102AB1", "t: c #1024B7", "u: c #123098", "v: c #146848", "w: c #03FA05", "x: c #00C837", "y: c #0BA630", "z: c #0AB825", "A: c #04A54D", "B: c #0C9548", "C: c #0F2CAB", "D: c #1026B4", "E: c #122BB1", "F: c #122BB2", "G: c #0A22A9", "H: c #37FF00", "I: c #0E2CAD", "J: c #1431B0", "K: c #1331B1", "L: c #1331AF", "M: c #1431AF", "N: c #122FAF", "O: c #132FAE", "P: c #1331AE", "Q: c #132CB4", "R: c #1138AD", "S: c #12636D", "T: c #1D6B2D", "U: c #07D512", "V: c #06A93F", "W: c #177737", "X: c #1D6735", "Y: c #166B4D", "Z: c #1D5940", "`: c #162E9B", " < c #142AB5", ".< c #122EAE", "+< c #132EAE", "@< c #132EAF", "#< c #0D29AB", "$< c #1135B0", "%< c #153CB2", "&< c #143BB2", "*< c #143BB1", "=< c #1339AF", "-< c #1439B1", ";< c #1539B1", ">< c #1539AF", ",< c #1639AF", "'< c #1439AF", ")< c #1538B5", "!< c #0C8A71", "~< c #03E91C", "{< c #129F1C", "]< c #177531", "^< c #1D3C59", "/< c #149231", "(< c #205B37", "_< c #244A38", ":< c #168644", "<< c #135296", "[< c #1533BB", "}< c #153AB1", "|< c #1639B1", "1< c #1032AE", "2< c #FFF8F8", "3< c #FFF1F1", "4< c #FFEAEA", "5< c #FFE4E4", "6< c #FFDDDD", "7< c #FFD6D6", "8< c #FFD0D0", "9< c #FFC9C9", "0< c #FFC2C2", "a< c #FFBBBB", "b< c #FFB5B5", "c< c #FFAEAE", "d< c #FFA7A7", "e< c #FFA1A1", "f< c #FF9A9A", "g< c #FF9393", "h< c #FF8C8C", "i< c #FF7272", "j< c #FF6B6B", "k< c #FF6464", "l< c #FF5D5D", "m< c #FF5757", "n< c #FF5050", "o< c #FF4949", "p< c #FF4343", "q< c #FF3C3C", "r< c #FF3535", "s< c #FF2E2E", "t< c #FF2828", "u< c #FF2121", "v< c #FF1A1A", "w< c #FF0808", "x< c #FF0101", "y< c #133EB3", "z< c #1A46B8", "A< c #1A45B8", "B< c #1945B8", "C< c #1A43B8", "D< c #1943B8", "E< c #1943B7", "F< c #1743B5", "G< c #1743B7", "H< c #183FBD", "I< c #1461A0", "J< c #0E807D", "K< c #1C5558", "L< c #177C3F", "M< c #0E9B3B", "N< c #08D629", "O< c #157F53", "P< c #15853A", "Q< c #0EB733", "R< c #0F9171", "S< c #183EBD", "T< c #1941B7", "U< c #1942B7", "V< c #1742B5", "W< c #1742B7", "X< c #133BB2", "Y< c #1745B7", "Z< c #204ABB", "`< c #1F49BB", " [ c #1F4ABB", ".[ c #1F4BBB", "+[ c #1D4ABB", "@[ c #1C49BA", "#[ c #1C48BA", "$[ c #1C46BD", "%[ c #1D45C0", "&[ c #1D3EB9", "*[ c #243568", "=[ c #14814E", "-[ c #0C9A61", ";[ c #10945A", ">[ c #187847", ",[ c #1D6C36", "'[ c #225747", ")[ c #1C6190", "![ c #1E47C1", "~[ c #1F4CBA", "{[ c #1F4DBA", "][ c #1F4DBB", "^[ c #1643B6", "/[ c #1A4CBB", "([ c #2352C2", "_[ c #2252C2", ":[ c #224FC1", "<[ c #2253C1", "[[ c #2250C1", "}[ c #2051C1", "|[ c #2051BF", "1[ c #1F50BF", "2[ c #1F52BE", "3[ c #1F51BF", "4[ c #1F51BE", "5[ c #1F4FC2", "6[ c #158E68", "7[ c #0BD008", "8[ c #177028", "9[ c #175F2C", "0[ c #228238", "a[ c #12AC2E", "b[ c #1B5D84", "c[ c #204BBC", "d[ c #1F4EBF", "e[ c #204EBF", "f[ c #194AB9", "g[ c #1D56BF", "h[ c #275CC5", "i[ c #255BC5", "j[ c #265AC6", "k[ c #2759CA", "l[ c #265AC7", "m[ c #2657C7", "n[ c #2557C7", "o[ c #265AC5", "p[ c #235AC2", "q[ c #2359C2", "r[ c #2358C2", "s[ c #2357C2", "t[ c #2457C3", "u[ c #2253C9", "v[ c #1C73AA", "w[ c #12A154", "x[ c #0F823A", "y[ c #4F9E60", "z[ c #A48869", "A[ c #4D7372", "B[ c #1A5BCB", "C[ c #2457CA", "D[ c #235AC5", "E[ c #2358C4", "F[ c #2559C3", "G[ c #1C53BD", "H[ c #0019FF", "I[ c #1F5DC3", "J[ c #2765CA", "K[ c #2564CA", "L[ c #2563CC", "M[ c #275FD1", "N[ c #2261C9", "O[ c #19938E", "P[ c #19918F", "Q[ c #226BBE", "R[ c #2560CF", "S[ c #245ECC", "T[ c #2263C8", "U[ c #2264C8", "V[ c #2364C8", "W[ c #2462CA", "X[ c #265FD0", "Y[ c #1F62C7", "Z[ c #1A6AB7", "`[ c #B0B5AE", " } c #E0A57F", ".} c #6A5771", "+} c #195FD6", "@} c #2462CB", "#} c #2562CA", "$} c #2362CA", "%} c #1D5AC2", "&} c #2165C6", "*} c #296ACE", "=} c #2869CF", "-} c #2962D5", ";} c #257BBB", ">} c #17A580", ",} c #08EF26", "'} c #09E72A", ")} c #15B05E", "!} c #1BA08A", "~} c #296ACF", "{} c #2967D0", "]} c #286ACD", "^} c #2567CF", "/} c #2066D1", "(} c #BEB7B1", "_} c #DBA876", ":} c #7A5956", "<} c #1A68D5", "[} c #266ACE", "}} c #2669CD", "|} c #266ACD", "1} c #286BCD", "2} c #2A6BCE", "3} c #2163C5", "4} c #0D0000", "5} c #140000", "6} c #1A0000", "7} c #210000", "8} c #280000", "9} c #2E0000", "0} c #350000", "a} c #3C0000", "b} c #430000", "c} c #490000", "d} c #500000", "e} c #570000", "f} c #5D0000", "g} c #640000", "h} c #6B0000", "i} c #780000", "j} c #860000", "k} c #930000", "l} c #9A0000", "m} c #B50000", "n} c #BB0000", "o} c #C20000", "p} c #C90000", "q} c #D00000", "r} c #D60000", "s} c #DD0000", "t} c #E40000", "u} c #E30000", "v} c #E70000", "w} c #236DCA", "x} c #2671CF", "y} c #2870D2", "z} c #2970D4", "A} c #12C35F", "B} c #0DC421", "C} c #0ACB28", "D} c #14A24D", "E} c #1B7036", "F} c #0AEA20", "G} c #2389B0", "H} c #2B6FD8", "I} c #2872D2", "J} c #2871D5", "K} c #2870D4", "L} c #286FD4", "M} c #2870D1", "N} c #2871D1", "O} c #236FD0", "P} c #1E6ED4", "Q} c #BABCAE", "R} c #D8A775", "S} c #84584F", "T} c #1D70D8", "U} c #2572D2", "V} c #2670D1", "W} c #2670D0", "X} c #2671D0", "Y} c #266FD1", "Z} c #226BC9", "`} c #E100FF", " | c #2576CD", ".| c #287AD0", "+| c #2577D8", "@| c #2084C5", "#| c #01E729", "$| c #0C881D", "%| c #0D972C", "&| c #09C336", "*| c #196C41", "=| c #10D43C", "-| c #2393B0", ";| c #2C72DE", ">| c #2778D3", ",| c #2780C8", "'| c #2684BF", ")| c #277ACE", "!| c #2974DB", "~| c #2576D5", "{| c #2177D6", "]| c #1C77D8", "^| c #B6BCB4", "/| c #D9A87A", "(| c #88594B", "_| c #2276D5", ":| c #2478D6", "<| c #2474D5", "[| c #2174D6", "}| c #1F74D7", "|| c #2175D6", "1| c #2476D4", "2| c #2778D4", "3| c #2473CC", "4| c #DE0000", "5| c #2A7ECF", "6| c #1C83D8", "7| c #1E80DE", "8| c #3E89C9", "9| c #35D24F", "0| c #38B833", "a| c #61A26A", "b| c #3C9D7D", "c| c #155847", "d| c #06CC23", "e| c #14A1AA", "f| c #247CE4", "g| c #18A8A3", "h| c #0CD954", "i| c #0DDE47", "j| c #11C36D", "k| c #1F90CD", "l| c #207CDC", "m| c #297CCC", "n| c #347DC5", "o| c #A5B3B3", "p| c #D6AB7D", "q| c #955841", "r| c #2D7ED1", "s| c #2083E0", "t| c #3183D5", "u| c #4787CA", "v| c #4685CB", "w| c #4786CB", "x| c #3682D3", "y| c #2180D6", "z| c #277BCF", "A| c #EE0000", "B| c #7497BC", "C| c #849DBA", "D| c #A29EAD", "E| c #DCB0AD", "F| c #E8BCA8", "G| c #E2BCA8", "H| c #F1B8B1", "I| c #BB8884", "J| c #527A52", "K| c #31B254", "L| c #6E92AF", "M| c #9E9EBB", "N| c #6BB389", "O| c #22A648", "P| c #297C49", "Q| c #189F21", "R| c #6AAF7B", "S| c #A38D94", "T| c #C29A8E", "U| c #D3AA96", "V| c #CFA594", "W| c #AF7962", "X| c #905B4D", "Y| c #5480B7", "Z| c #617EAA", "`| c #B49A9A", " 1 c #E4BDA7", ".1 c #E4BAA8", "+1 c #E6BCA6", "@1 c #B4A9AE", "#1 c #2E8CDA", "$1 c #3182CC", "%1 c #F00000", "&1 c #3A5656", "*1 c #C7A79C", "=1 c #E4B9A2", "-1 c #E5B9A2", ";1 c #DFB09D", ">1 c #B58676", ",1 c #916759", "'1 c #926759", ")1 c #935B4F", "!1 c #A56351", "~1 c #B78467", "{1 c #E9B6A8", "]1 c #F6C6B4", "^1 c #CF9D89", "/1 c #674C43", "(1 c #564752", "_1 c #6C775C", ":1 c #D6B99A", "<1 c #E5B4A3", "[1 c #DFB8A0", "}1 c #D9B19C", "|1 c #C9907F", "11 c #9E5F51", "21 c #824D3C", "31 c #915E53", "41 c #A86959", "51 c #C08575", "61 c #CF9F92", "71 c #CC9C91", "81 c #CF9E8F", "91 c #C58D7B", "01 c #7D7888", "a1 c #6E7692", "b1 c #C69686", "c1 c #C89B8B", "d1 c #C79787", "e1 c #B98373", "f1 c #946151", "g1 c #714B3A", "h1 c #6F4939", "i1 c #794E3D", "j1 c #9B5E4E", "k1 c #BA8170", "l1 c #D6B2A1", "m1 c #D9B7A5", "n1 c #B18675", "o1 c #725043", "p1 c #745A4F", "q1 c #977D6B", "r1 c #C09A87", "s1 c #C69C8B", "t1 c #C0917F", "u1 c #B6826F", "v1 c #AA6E5C", "w1 c #935A49", "x1 c #744A3A", "y1 c #7A4E3D", "z1 c #965C4C", "A1 c #AA6B5B", "B1 c #AD7162", "C1 c #AA7160", "D1 c #AC7262", "E1 c #AC6E5C", "F1 c #A4675A", "G1 c #9E685F", "H1 c #D1E3FF", "I1 c #B9D3FF", "J1 c #B5D0FF", "K1 c #8CB3F3", "L1 c #84ADF1", "M1 c #7FA9F0", "N1 c #7EA9F1", "O1 c #F9F9F9", "P1 c #F5F5F5", "Q1 c #EBEBEB", "R1 c #DADADA", "S1 c #BDD5FF", "T1 c #93BBFF", "U1 c #224681", "V1 c #EFF5FF", "W1 c #87ACE8", "X1 c #81A5E6", "Y1 c #4F73B0", "Z1 c #658DD0", "`1 c #5B85CA", " 2 c #5981CA", ".2 c #989898", "+2 c #B2B2B2", "@2 c #ADADAD", "#2 c #B7D2FF", "$2 c #244885", "%2 c #295290", "&2 c #83A7E2", "*2 c #7CA4DF", "=2 c #385789", "-2 c #4A70AF", ";2 c #5276B9", ">2 c #4F77BA", ",2 c #F0F0F0", "'2 c #CCCCCC", ")2 c #B3D1FF", "!2 c #274D8C", "~2 c #20457D", "{2 c #82A4DD", "]2 c #7B9FDC", "^2 c #3B5888", "/2 c #4A6CA5", "(2 c #4C71AD", "_2 c #496FAE", ":2 c #D8D8D8", "<2 c #AFCDFF", "[2 c #254D88", "}2 c #20427B", "|2 c #80A2DB", "12 c #7A9DD7", "22 c #3D5988", "32 c #4E70A7", "42 c #5073AD", "52 c #4D72AE", "62 c #ECECEC", "72 c #ADCDFF", "82 c #234782", "92 c #F1F5FF", "02 c #81A2D8", "a2 c #7A9BD3", "b2 c #3E5B87", "c2 c #5473AB", "d2 c #4E6FA5", "e2 c #4B6DA6", "f2 c #E9E9E9", "g2 c #B6B6B6", "h2 c #A9C9FF", "i2 c #000201", "j2 c #87A6DA", "k2 c #7B99D0", "l2 c #789AD1", "m2 c #A7C5F8", "n2 c #A6C7F9", "o2 c #A2C2F7", "p2 c #789EDD", "q2 c #749BDB", "r2 c #7199DC", "s2 c #FDD8D8", "t2 c #264A85", "u2 c #234884", "v2 c #030814", "w2 c #6F98DC", "x2 c #6993DA", "y2 c #6E99E1", "z2 c #6B98E2", "A2 c #6A97E3", "B2 c #6D9BE6", "C2 c #274A84", "D2 c #F1F6FF", "E2 c #8AA6D9", "F2 c #809FD3", "G2 c #7392C6", "H2 c #6D8EC4", "I2 c #678BC0", "J2 c #6183BC", "K2 c #597CB6", "L2 c #5679B3", "M2 c #5175B0", "N2 c #FF0326", "O2 c #FC0023", "P2 c #F6001C", "Q2 c #F00021", "R2 c #EC0021", "S2 c #1D3460", "T2 c #1D4176", "U2 c #040D19", "V2 c #4C70AB", "W2 c #456AA6", "X2 c #4064A1", "Y2 c #3A5E9B", "Z2 c #355994", "`2 c #2F538E", " 3 c #2A4D87", ".3 c #254780", "+3 c #204479", "@3 c #EFF4FF", "#3 c #8FA9D8", "$3 c #83A1D2", "%3 c #708EC1", "&3 c #6C8ABD", "*3 c #6686BB", "=3 c #6280B7", "-3 c #5D7DB2", ";3 c #5678B1", ">3 c #5173AC", ",3 c #1C3A6C", "'3 c #284C87", ")3 c #4467A1", "!3 c #41619C", "~3 c #3B5B96", "{3 c #355790", "]3 c #305489", "^3 c #2B4C82", "/3 c #26447B", "(3 c #204075", "_3 c #EDF4FF", ":3 c #91ADD8", "<3 c #87A3D2", "[3 c #475E84", "}3 c #FFE1E1", "|3 c #264778", "13 c #294C86", "23 c #2A4E83", "33 c #91ABD6", "43 c #8AA5D1", "53 c #4A5E83", "63 c #FAFAFA", "73 c #EA0021", "83 c #E40020", "93 c #DE001A", "03 c #D80019", "a3 c #D2001D", "b3 c #284678", "c3 c #F4F4F4", "d3 c #EFEFEF", "e3 c #C3D8FF", "f3 c #2C4D83", "g3 c #EFF3FF", "h3 c #94ACD5", "i3 c #8BA5D0", "j3 c #4C6183", "k3 c #F7F7F7", "l3 c #2B4777", "m3 c #2C4B7F", "n3 c #D4D4D4", "o3 c #C4C4C4", "p3 c #C0C0C0", "q3 c #C5DCFF", "r3 c #2F4E82", "s3 c #EDF3FF", "t3 c #9AB0D5", "u3 c #8FA7D0", "v3 c #4D6182", "w3 c #2C4776", "x3 c #2C4D7F", "y3 c #F6F6F6", "z3 c #EDEDED", "A3 c #C5DAFF", "B3 c #304E81", "C3 c #EBF3FF", "D3 c #9BB2D4", "E3 c #93AAD0", "F3 c #506281", "G3 c #D9D9D9", "H3 c #D00013", "I3 c #C60017", "J3 c #BC001A", "K3 c #B80019", "L3 c #2E4A78", "M3 c #2E4A7D", "N3 c #060C17", "O3 c #BDBDBD", "P3 c #C7DAFF", "Q3 c #325081", "R3 c #E9F2FF", "S3 c #9EB2D3", "T3 c #93A7CC", "U3 c #526481", "V3 c #CC0017", "W3 c #C20016", "X3 c #BE0016", "Y3 c #B60015", "Z3 c #5F5F5F", "`3 c #24395A", " 4 c #050914", ".4 c #DEDEDE", "+4 c #C7DCFF", "@4 c #335280", "#4 c #2E4A79", "$4 c #080C17", "%4 c #EBF2FF", "&4 c #A1B3D2", "*4 c #95A8CA", "=4 c #556580", "-4 c #CA001C", ";4 c #CE0013", ">4 c #CC0013", ",4 c #C20012", "'4 c #C00012", ")4 c #B40015", "!4 c #B00014", "~4 c #A00016", "{4 c #960015", "]4 c #060A15", "^4 c #D5D5D5", "/4 c #CDCDCD", "(4 c #C9DDFF", "_4 c #36537F", ":4 c #2F4A76", "<4 c #E9F1FE", "[4 c #A3B5D2", "}4 c #98ACCB", "|4 c #56667F", "14 c #C00016", "24 c #C80012", "34 c #B80011", "44 c #AE0014", "54 c #AA000F", "64 c #940014", "74 c #233758", "84 c #D7D7D7", "94 c #CBDEFF", "04 c #38547F", "a4 c #2F4974", "b4 c #E7F1FC", "c4 c #A9B9D4", "d4 c #9CAECB", "e4 c #58667F", "f4 c #BE0011", "g4 c #BC000D", "h4 c #B20010", "i4 c #263859", "j4 c #26395B", "k4 c #070D16", "l4 c #CBDDFF", "m4 c #3B537E", "n4 c #2E456B", "o4 c #080E17", "p4 c #E6F0FB", "q4 c #ABB9D2", "r4 c #A0B0CB", "s4 c #59677E", "t4 c #FEA4A4", "u4 c #A8000F", "v4 c #920014", "w4 c #9E9E9E", "x4 c #9FADC7", "y4 c #324669", "z4 c #2F456A", "A4 c #0A0E19", "B4 c #DFDFDF", "C4 c #DBDBDB", "D4 c #CDDFFF", "E4 c #3C547D", "F4 c #30466B", "G4 c #E7EFFA", "H4 c #ADB9D0", "I4 c #9FADC6", "J4 c #5C687D", "K4 c #8C0013", "L4 c #ADBCD8", "M4 c #3D557C", "N4 c #344A6F", "O4 c #060A0E", "P4 c #3E567D", "Q4 c #A6B2C5", "R4 c #202429", " . + @ # $ % & * = - ; > , ' ) > ", " ! ~ { ] ^ / ( _ : < [ } | 1 2 3 3 3 4 5 ", " 6 7 8 9 0 a b c d e f g h i j k l m n o p q r s t u u u v w x 5 ", " y z A B C B D E F G H G I B J K L M N O P Q R S T U 2 V 4 W X Y Z ` ...+.@.#.$.%.&.*.=.-.;.>.,.'.).!.1 ~.{.].^./.(._.:.<.[.}.|. 1.2.s 3.4.> > 5.6.7.8.>.9.5 5 ", " 0.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r. s.t.u.v.w.x.y.z.A.B.C.D.k 2 V 4 W X Y Z ` ...+.@.#.$.%.&.*.=.-.;.>.,.'.).!.1 ~.{.].^./.(._.:.<.[.}.|. 5 -.-.&.E.F.F.q G.H.I.I.J.;.K.5.5 ", " L.M.N.O.P.Q.R.S.T.U.V.W.X.Y.Z.`. + .+++@+#+$+%+&+*+=+R -+;+>+k 2 V 4 W X Y Z ` ...+.@.#.$.%.&.*.=.-.;.>.,.'.).!.1 ~.{.].^./.(._.:.<.[.}.|. ,+Y '+)+K.!+9.>.F.F.~+!+E.{+]+^+5 ", " /+(+_+:+<+[+}+|+1+2+3+4+5+6+7+8+9+ 0+a+b+0+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+w+x+y+z+A+B+C+D+E+F+G+ 2 V 4 W X Y Z ` ...+.@.#.$.%.&.*.=.-.;.>.,.'.).!.1 ~.{.].^./.(._.:.<.[.}.|. 5 H+I+V '+J+K+w !+!+L+M+N+O+5.2.k ", " P+Q+R+S+T+U+V+W+X+Y+Z+`+ @.@+@@@#@ $@%@&@*@b+=@-@;@>@,@'@)@!@~@{@]@^@/@(@_@:@<@[@}@|@1@B+B+2@3@4@5@6@7@G+ 2 V 4 W X Y Z ` ...+.@.#.$.%.&.*.=.-.;.>.,.'.).!.1 ~.{.].^./.(._.:.<.[.}.|. 5 K.H.J.s 8@9@J+0@a@*.b@L+c@d@e@f@ ", " g@h@i@j@k@l@m@n@o@p@q@r@s@t@u@v@w@ x@y@y@z@A@B@C@D@E@F@G@H@I@J@K@L@M@N@O@P@Q@R@S@T@U@V@W@X@Y@Z@`@ #.#+#@# 5 ##Y ~+$#5.2.,+%#&#N+*#> =#_.-#k ", " ;#>#,#'#)#!#~#{#]#^#/#(#_#:#<#[#}#|#1# 2#3#4#5#6#*@7#8#9#0#a#b#c#d#e#f#g#h#i#j#k#l#m#n#o#p#q#r#s#t#u#v#w#x#y# 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 5 '+z#K.A#&.B#C#D#O+^.E#,+N+, F#f@ ", " G#H#I#J#K#L#M#N#O#P#Q#R#S#T#U#V#W#X#Y#Z#`# $.$+$@$#$6#$$%$&$*$=$-$;$>$,$'$)$!$~${$]$^$/$($_$:$5@<$[$}$|$1$2$3$4$ 2 ;.;.;.;.5 2 ;.;.;.;.5 2 ;.;.;.;.5 2 ;.;.;.;.5 2 ;.;.;.;.5 5 Z 8@I.5$6$7$5$'.8$6.9$~.M+x x k ", "0$a$b$c$d$e$f$g$h$i$j$k$l$0$m$n$o$p$k$q$p$r$s$ @$t$u$v$w$x$y$z$A$B$C$D$E$F$G$H$I$J$K$L$M$N$]@O$P$Q$R$S$T$U$V$W$X$Y$Z$ 2 ;.;.;.;.5 2 ;.;.;.;.5 2 ;.;.;.;.5 2 ;.;.;.;.5 2 ;.;.;.;.5 5 `$ %.%-.` +%@%A#.%*.c@.x #%$% ", "%%&%*%=%-%;%>%,%'%)%!%~%~%{%]%^%/%(%_%:%<%[%}% @$|%1%2%2%x$3%4%5%6%7%8%9%0%a%b%c%d%e%f%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t% 2 ;.;.;.;.5 2 ;.;.;.;.5 2 ;.;.;.;.5 2 ;.;.;.;.5 2 ;.;.;.;.5 5 u%2 .%*.s v%5${+w%!+c@ x%d@k ", " y%z%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S% T%U%V%W%X%Y%Z%`% &.&+&@&#&$&%&&&*&=&-&;&;&>&,&'&)&!&~&{&]&^&/&(&_&:&t% 2 5 5 5 5 5 2 5 5 5 5 5 2 5 5 5 5 5 2 5 5 5 5 5 2 5 5 5 5 5 5 u%2 K.b@s ..;.{+H.!+O+1 '.' /.k ", " <&[&}&|&1&).2&3&4&5&6&7&8&9&0&a&b&c&d&e&f& g&h&i&j&k&l&m&n&o&p&q&r&s&t&u&v&w&x&y&z&A&B&C&D&E&F&G&H&I&J&K&L&M&N&O& 5 u%2 K.b@s v%5${+P&J.c@1 Q&' R&k ", " 2 S&T&U&2 V&W&X&Y&Z&`& *.*+*@*#*$*%*&***=* -*;*>*,*'*)*!*~*{*]*^*/*(*_*:*<*[*}*|*A&1*2*3*4*5*6*7*8*9*0*a*b*c*d*e* 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 5 u%2 G.b@s v%8${+f*g*c@&#h*#%5 k ", " i*j*k*l*2 ,.m*n*o*p*q*r*s*t*u*2 v*w*x*y*z* A*B*C*D*E*F*G*H*I*J*K*L*M*N*O*P*Q*R*S*T*U*V*W*X*Y*Z*`*0* =.=+=@=#=$=%= 2 ;.;.;.;.5 2 ;.;.;.;.5 2 ;.;.;.;.5 2 ;.;.;.;.5 2 ;.;.;.;.5 5 u%2 w !+Y &=*===H.g*c@&#Q&x -=k ", " ;=>=,='=2 )=!=~={=]=^=/=(=_=:=<=[=}=|=1=2= 3=4=5=C*D*6=7=8=9=0=a=b=c=d=e=f=g=h=i=j=k=l=m=n=o=p=q=r=s=t=u=v=w=x=y= 2 ;.;.;.;.5 2 ;.;.;.;.5 2 ;.;.;.;.5 2 ;.;.;.;.5 2 ;.;.;.;.5 5 u%X H.z=4.A=u*F.@.B=C=$#3., _.k ", "D=E=F=G=H=I=J=K=L=M=N=O=P=Q=R=S=T=U=V=W=X=Y=Z= `= -4=.-+-@-#-$-%-&-*-=---;->-,-'-)-!-~-{-]-^-/-(-_-:-c*<-[-}-|-1-2-3- 2 ;.;.;.;.5 2 ;.;.;.;.5 2 ;.;.;.;.5 2 ;.;.;.;.5 2 ;.;.;.;.5 5 4-z#5-$./+6-{+q 8.L+M+&#c@-=e@k S. ", "7-8-9-0-a-b-c-d-e-f-g-h-i-j-k-l-m-n-o-p-q-r-s- t-u-v-w-.-x-y-z-A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z-`- 2 5 5 5 5 5 2 5 5 5 5 5 2 5 5 5 5 5 2 5 5 5 5 5 2 5 5 5 5 5 5 P&T=s u%` ;b@L+.;+;@;5 , #;$;S.S. ", "%;&;*;=;k-k -;;;>;,;';);!;~;{;];^;/;(;_;:;<;[; };|;1;2;3;T-4;S-5;6;7;8;9;0;a;b;c;d;e;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u; 5 5 M+'.$.w%u*M+2.(.t v;#;w;x; ", "%;%;<;<;<;k n-n-n-n-<;%;%;<;k n-n-n-n-n-%;<;k y;z;A;B;C;D;B;E;A;F;G;H;I;J;>@K;L;K;M;N;O;P;Q;R;S;T;U;V;W;r;X;Y;Z;`; > $.'.M+.>.>+>.>+>@>#>S. ", " $>%>&>*>=>->;>>>,>'>)>A;A;!>~>,>~>,>,>{>]>'>^>/>(>_>:><>[>}>|>1>2>3>4> ", " 5>|+6>7>8>9>B;)>C;0>C;)>a>b>c>d>D;e>f>f>f>f>g>h>i>j>k>l>m>n>o>p>q>3>3> ", " r><>s>t>u>v>w>x>y>C;x>f>z>A>b>B>C>D>E>n>z>n>E>F>G>H>I>J>K>L>M>p>q>N>4> ", " O>P>Q>R> S>T>U>V>t>u>W>X>Y>*>Z>E>A>`> ,.,6>.,+,@,+,+,#,$,%,&,*,=,-,;,>,M>q>2>4> ", " ,,',),!,~,{,],^,/,(, _,:,<,[, },|,1,2,3,4,5,6,7,8,9,0,a,b,b,b,b,c,d,e,f, ", " g,h,i,j,k,l,m,n,o,p,q,r, s,t,u,v, w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,L,N,O,k P, ", " Q,R,S,T,U,V,W,X,Y,Z,`, '.'+'@' #'$'%' 2 &'*'='-';'>',''')'!'~'{']'^'/'('_':'<'['}'|'1'2'3'4'5'6'7'8'9'u%u%u%0'a'b' c'd'e'f'g'h'i'j'k'l'm'n'o'p'q'r's't'u'v'w'x' ", " y'z'A'B'C'D'E'F'G'H'I'J'K'L'M'N'O' P'Q'R' 2 &'*'='-';'>',''')'!'~'{']'^'/'('_':'<'['}'|'1'2'3'4'5'6'7'8'9'u%;.5 0'a'S' T'U'V'W'X'Y'Z'`' ).)+)@)#)$)%)&)*)*)=)-);)x' ", " >),)')))!)~){)])^)/)()_):)<)[)})|)1) k k 2 &'*'='-';'>',''')'!'~'{']'^'/'('_':'<'['}'|'1'2'3'4'5'6'7'8'9'u%;.5 0'a'2) 3)U'4)5)6)7)8)9)0)a)b)c)d)e)f)g)h)i)j)k)l)m) ", " n)o)p)q)r)s)t)u)v)w)x)y)z)A)B)C)D)E)F)G) 2 &'*'='-';'>',''')'!'~'{']'^'/'('_':'<'['}'|'1'2'3'4'5'6'7'8'9'u%;.5 0'a'b' H)I)J)K)L)M)N)O)P)Q)R)S)T)b)U)V)W)X)Y)Z)`)m) ", " !.!+!@!#!$!%!&!*!=!-!;!>!,!'!)!!!~!{!]! 2 &'*'='-';'>',''')'!'~'{']'^'/'('_':'<'['}'|'1'2'3'4'5'6'7'8'9'u%5 5 0'a'^! /!(!_!:!<!u'[!}!|!1!2!3!4!5!6!7!8!9!0!a!b!c! ", " d!e!f!g!h!i!j!k!l!m!n!o!p!q!r!s!t!u!v!w!x! y!z!A!B!M,C!D!E!F!G!H!I!J!K!L!M!N!O!P!Q!R!c! ", " S!T!U!V!W!X!Y!Z!`! ~.~+~@~#~$~%~&~*~=~-~;~>~ 2 ,~'~)~!~u%u%u%~~{~]~^~/~(~_~:~<~[~}~|~1~2~3~4~5~6~7~8~9~0~a~b~c~d~e~f~g~h~ i~z!j~k~l~m~n~o~p~q~r~s~t~u~v~w~N!x~y~z~A~k ;. ", " B~C~D~E~F~G~H~I~J~K~L~M~N~O~P~Q~R~S~T~U~V~W~ 2 ,~'~)~!~u%;.5 ~~{~]~^~/~(~_~:~<~[~}~|~1~2~3~4~5~6~7~8~9~0~a~b~c~d~e~f~g~X~ Y~Z~`~ {.{+{@{#{${%{&{*{={-{;{;{>{,{'{){k ;. ", " !{~{{{]{^{/{({_{:{<{[{}{|{1{2{3{4{5{6{7{8{9{ 0{a{b{c{d{e{f{g{h{i{j{k{l{m{n{o{p{q{r{s{t{u{v{w{x{u%u%u%y{z{A{B{C{D{E{F{G{H{ 2 ,~'~)~!~u%;.5 ~~{~]~^~/~(~_~:~<~[~}~|~1~2~3~4~5~6~7~8~9~0~a~b~c~d~e~f~g~I{ J{K{L{M{N{O{P{Q{R{S{T{U{V{W{X{Y{Z{`{ ].]k +] ", " @]#]$]%]&]*]=]-];]>],]'])]!]~]{]]]^]/](]_]:] 0{a{b{c{d{e{f{g{h{i{j{k{l{m{n{o{p{q{r{s{t{u{v{w{x{u%;.5 y{z{A{B{C{D{E{F{G{H{ 2 ,~'~)~!~u%;.5 ~~{~]~^~/~(~_~:~<~[~}~|~1~2~3~4~5~6~7~8~9~0~a~b~c~d~e~f~g~I{ <][]}]|]1]2]U)3]&{4]5]6]6]7]8]9]0]a]b]c]d]+] ", " e]f]g]h]i]j]k]l]m]n]o]p]q]r]s]t]u]v]w]x]y] 0{a{b{c{d{e{f{g{h{i{j{k{l{m{n{o{p{q{r{s{t{u{v{w{x{u%;.5 y{z{A{B{C{D{E{F{G{H{ 2 ,~'~)~!~u%5 5 ~~{~]~^~/~(~_~:~<~[~}~|~1~2~3~4~5~6~7~8~9~0~a~b~c~d~e~f~g~X~ z]A]B]k'C]D]E]F]R)G]H]I]J]K]L]8]J]M]N]O]R!+] ", " P]Q]R]S]T]U]V]W]X]Y]Z]`] ^.^+^@^#^$^%^&^ 0{a{b{c{d{e{f{g{h{i{j{k{l{m{n{o{p{q{r{s{t{u{v{w{x{u%;.5 y{z{A{B{C{D{E{F{G{H{ *^=^-^k'o';^>^,^'^)^!^L]7]~^~^{^8]]^^^/^(^+] ", " _^:^<^[^}^|^1^2^3^4^5^6^7^8^9^0^a^b^c^d^ 0{a{b{c{d{e{f{g{h{i{j{k{l{m{n{o{p{q{r{s{t{u{v{w{x{u%5 5 y{z{A{B{C{D{E{F{G{H{ 2 e^f^g^h^i^j^k^l^m^n^o^p^q^r^s^t^u^u%u%u%v^w^x^y^z^A^B^C^D^E^F^G^H^I^J^K^L^ M^N^O^q'P^Q^R^S^T^U^V^K]W^X^8]9]Y^Z^`^ /(^+] ", " ./+/@/#/$/%/&/*/=/-/;/>/,/'/)/!/~/{/]/ 2 e^f^g^h^i^j^k^l^m^n^o^p^q^r^s^t^u^u%;.5 v^w^x^y^z^A^B^C^D^E^F^G^H^I^J^K^L^ ^/N^//(/;^_/:/$)d)</T)L]X^{^[/}/|/1/2/3/4/+] ", " 5/6/7/8/9/0/a/b/c/d/e/f/g/h/i/j/k/ l/m/n/o/p/q/r/s/u%u%u%t/u/v/w/x/y/z/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/ 2 e^f^g^h^i^j^k^l^m^n^o^p^q^r^s^t^u^u%;.5 v^w^x^y^z^A^B^C^D^E^F^G^H^I^J^K^U/ V/W/X/Y/Z/7!`/ (1/.(+(@(#($(%(&(a!*(=(-(;(;. ", " >(,('()(!(~({(](^(/(((_(:(<([(}( l/m/n/o/p/q/r/s/u%;.5 t/u/v/w/x/y/z/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/ 2 e^f^g^h^i^j^k^l^m^n^o^p^q^r^s^t^u^u%;.5 v^w^x^y^z^A^B^C^D^E^F^G^H^I^J^K^|( 1(2(3(4(5(6(7(8(9(0(a(b(6(c(c(d(e(f(g(k k ;. ", " h(i(j(k(l(m(n(o(p(q(r(s(t(u( l/m/n/o/p/q/r/s/u%;.5 t/u/v/w/x/y/z/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/ 2 e^f^g^h^i^j^k^l^m^n^o^p^q^r^s^t^u^u%5 5 v^w^x^y^z^A^B^C^D^E^F^G^H^I^J^K^v( ;.w(w(x(y(z(A(B(B(C(D(y(E(F(F(A(G(+]+];.;. ", " H(I(J(K(L(M(N(O(P(Q(R( l/m/n/o/p/q/r/s/u%;.5 t/u/v/w/x/y/z/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/ ", " S(T(U(V(W(X( l/m/n/o/p/q/r/s/u%5 5 t/u/v/w/x/y/z/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/ ", " ", " l Y(Z(`( _._+_@_#_$_%_&_*_=_-_;_>_,_u%u%u%'_)_!_~_{_]_^_/_(___:_<_[_}_|_1_2_ ", " l Y(Z(`( _._+_@_#_$_%_&_*_=_-_;_>_,_u%;.5 '_)_!_~_{_]_^_/_(___:_<_[_}_|_1_2_ ", " l Y(Z(`( _._+_@_#_$_%_&_*_=_-_;_>_,_u%;.5 '_)_!_~_{_]_^_/_(___:_<_[_}_|_1_2_ ", " l Y(Z(`( _._+_@_#_$_%_&_*_=_-_;_>_,_u%;.5 '_)_!_~_{_]_^_/_(___:_<_[_}_|_1_2_ ", " l Y(Z(`( _._+_@_#_$_%_&_*_=_-_;_>_,_u%5 5 '_)_!_~_{_]_^_/_(___:_<_[_}_|_1_2_ ", " ", " ", " ", " ", " ", " 3_3_3_3_3_ k k k k k k k k ", " 3_3_3_3_3_ k k k k k k k 4_5_5_6_6_6_6_6_6_6_7_7_8_7_7_7_8_7_7_7_9_9_9_9_0_0_0_0_a_0_0_b_ ", "3_c_d_e_f_g_h_i_j_k_l_m_n_o_p_q_r_s_t_u_v_w_x_y_z_A_B_C_D_E_F_G_H_I_J_u%u%u% K_L_M_M_M_N_M_N_O_O_P_Q_O_O_O_O_O_O_R_R_S_R_S_T_T_U_U_U_V_V_V_W_ ", "3_c_d_e_f_g_h_i_j_k_l_m_n_o_p_q_r_s_t_u_v_w_x_y_z_A_B_C_D_E_F_G_H_I_J_u%;.5 X_X_X_X_X_ k k k k k k k k k k k k k Y_Z_`_ :.:+:@:#:$:@:%:&:%:*:*:=:-:;:>:,:':):!:~:{:]:^:/:(:(:(:_: ", "3_c_d_e_f_g_h_i_j_k_l_m_n_o_p_q_r_s_t_u_v_w_x_y_z_A_B_C_D_E_F_G_H_I_J_u%;.+> X_X_X_X_X_ k k k k k k k k k k k ::<:[:}:|:1:2:2:2:2:2:3:4:5:6:7:8:9:0:a:b:c:d:e:8:f:g:g:g:g:h:i: ", "3_c_d_e_f_g_h_i_j_k_l_m_n_o_p_q_r_s_t_u_v_w_x_y_z_A_B_C_D_E_F_G_H_I_J_u%j:, k:l:m:m:n:o:p:p:p:p:q:r:r:s:m:t:u:v:w:x:y:z:A:B:C:D:q:E:E:E:F:G: ", "3_c_d_e_f_g_h_i_j_k_l_m_n_o_p_q_r_s_t_u_v_w_x_y_z_A_B_C_D_E_F_G_H_I_J_u%+>+> H:H:H:H:H: k k k k k k k k I:J:K:L:L:L:L:L:L:M:N:O:O:P:Q:R:S:T:U:V:W:X:Y:Z:`: <.<+<+<+<@<#< ", " H:H:H:H:H: k k k k k k k $<%<&<&<&<*<=<-<-<;<><,<,<'<)<!<~<{<]<^</<(<_<:<<<[<}<|<,<,<,<1< ", "2 2<3<4<5<6<7<8<9<0<a<b<c<d<e<f<g<h<u%u%u%i<j<k<l<m<n<o<p<q<r<s<t<u<v<w<x<3_ y<z<A<B<C<C<D<C<C<D<E<E<F<G<H<I<J<K<L<M<N<O<P<Q<R<S<T<U<V<W<U<X< ", "2 2<3<4<5<6<7<8<9<0<a<b<c<d<e<f<g<h<u%;.5 i<j<k<l<m<n<o<p<q<r<s<t<u<v<w<x<3_ u_u_u_u_u_ k k k k k k k k k k k k k k k Y<Z<`<`< [ [.[.[.[.[+[@[#[#[$[%[&[*[=[-[;[>[,['[)[![~[{[{[{[][^[ ", "2 2<3<4<5<6<7<8<9<0<a<b<c<d<e<f<g<h<u%;.5 i<j<k<l<m<n<o<p<q<r<s<t<u<v<w<3_3_ u_u_u_u_u_ k k k k k k k k k k /[([_[:[<[[[}[}[|[}[1[2[3[3[4[}[5[6[7[8[9[0[a[b[c[5[1[d[e[d[e[f[ ", "2 2<3<4<5<6<7<8<9<0<a<b<c<d<e<f<g<h<u%;.5 i<j<k<l<m<n<o<p<q<r<s<t<u<v<w<3_3_ g[h[i[i[j[k[l[m[n[o[p[q[r[s[s[t[u[v[w[x[y[z[A[B[C[D[E[E[E[E[F[G[ ", "2 2<3<4<5<6<7<8<9<0<a<b<c<d<e<f<g<h<u%5 5 i<j<k<l<m<n<o<p<q<r<s<t<u<v<w<3_3_ H[H[H[H[H[ k k k k k k k k I[J[K[L[M[N[O[P[Q[R[S[T[U[U[U[V[W[X[Y[Z[`[ }.}+}@}#}$}$}$}$}#}%} ", " H[H[H[H[H[ k k k k k k k &}*}=}-};}>},}'})}!}~}{}]}]}]}]}]}*}^}/}(}_}:}<}[}}}}}}}|}1}2}3} ", "k 0{4}5}6}7}8}9}0}a}b}c}d}e}f}g}h}q{i}s{j}u{k}l}u%u%u%m}n}o}p}q}r}s}t}s}u}v} w}x}y}z}A}B}C}D}E}F}G}H}I}J}K}L}M}N}O}P}Q}R}S}T}U}V}W}V}X}Y}M}Z} ", "k 0{4}5}6}7}8}9}0}a}b}c}d}e}f}g}h}q{i}s{j}u{k}l}u%;.5 m}n}o}p}q}r}s}t}s}u}v} `}`}`}`}`} k k k k k k k k k k k k k |.|+|@|#|$|%|&|*|=|-|;|>|,|'|)|!|~|{|]|^|/|(|_|:|<|[|}|||1|2|3| ", "k 0{4}5}6}7}8}9}0}a}b}c}d}e}f}g}h}q{i}s{j}u{k}l}u%;.5 m}n}o}p}q}r}s}D{4|u}v} `}`}`}`}`} k k k k k k k k k k k 5|6|7|8|9|0|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z| ", "k 0{4}5}6}7}8}9}0}a}b}c}d}e}f}g}h}q{i}s{j}u{k}l}u%;.5 m}n}o}p}q}r}s}D{4|t}A| B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|`| 1.1+1@1#1$1 ", "k 0{4}5}6}7}8}9}0}a}b}c}d}e}f}g}h}q{i}s{j}u{k}l}u%5 5 m}n}o}p}q}r}s}D{4|%1v} &1&1&1&1&1 k k k k k k k k k k k k k k k *1=1-1;1>1,1'1)1!1~1{1]1^1/1(1_1:1<1[1}1|111213141516171819101a1 ", " &1&1&1&1&1 k k k k k k k k k k b1c1d1e1f1g1h1i1j1k1l1m1n1o1p1q1r1s1t1u1v1w1x1y1z1A1B1C1D1E1F1G1 ", " ", " ", " ", " H1I1J1K1L1M1N1u%<&<=O1P1Q14.R1J+S1S1T1U1 H1I1J1K1L1M1N1u%<&<=O1P1Q14.R1J+S1S1T1U1 ", " V1W1X1Y1Z1`1 2V .2+2&=@2E#2.8@2 #2$2%2U1k V1W1X1Y1Z1`1 2V .2+2&=@2E#2.8@2 #2$2%2U1k ", " V1&2*2=2-2;2>2,28.&='2.%R&9$2 2 )2$2!2~2k ;. V1&2*2=2-2;2>2,28.&='2.%R&9$2 2 )2$2!2~2k ;. ", " V1{2]2^2/2(2_2,2+2'2:2#.N+9$2 2 <2$2[2}2k ;. V1{2]2^2/2(2_2,2+2'2:2#.N+9$2 2 <2$2[2}2k ;. ", " V1|2122232425262&=:2z#@.D#O+2 2 72$28282k ;. V1|2122232425262&=:2z#@.D#O+2 2 72$28282k ;. ", " 9202a2b2c2d2e2f2'2z#8@5-+%g2Q12 h2$2~2$2i2;. 9202a2b2c2d2e2f2'2z#8@5-+%g2Q12 h2$2~2$2i2;. ", " 92j2k2l2m2n2o2p2q2r22 s2s2s2s2s2Q&t2}2u2v2;. 92j2k2l2m2n2o2p2q2r2w2x2y2z2A2B2C2t2}2u2v2;. ", " D2E2F2G2H2I2J2K2L2M2d<N2O2P2Q2R2M+S2T2$2U2;. D2E2F2G2H2I2J2K2L2M2V2W2X2Y2Z2`2 3.3+3$2U2;. ", " @3#3$3%3&3*3=3-3;3>3d<3.3.3.3.3.M+S2,3'3U2;. @3#3$3%3&3*3=3-3;3>3e2)3!3~3{3]3^3/3(3'3U2;. ", " _3:3<3[3k k k k k k }3s2s2s2s2s23.k |313U2;. _3:3<3[3k k k k k k k k k k k k k k 2313U2;. ", " V1334353<= %<=63O1V d<73839303a3M+e2b323U2;. V1334353<= %<=63O1V c38@d362f2z#`$e3f323U2;. ", " g3h3i3j3k3 %<=63O1V d<3.3.3.3.3.M+e2l3m3U2;. g3h3i3j3k3 %<=63O1V c34.n34-o3p3T=q3r3m3U2;. ", " s3t3u3v3<& % %6363V }3s2s2s2s2s23.e2w3x3U2;. s3t3u3v3<& % %6363V y34 4 z3Q1#*4.A3B3x3U2;. ", " C3D3E3F3z#9@s G3Z R1d<a3H3I3J3K3M+e2L3M3N3;. C3D3E3F3z#9@s G3Z R1'+T='20@K+O3&=P3Q3M3N3;. ", " R3S3T3U3V k3P1c32 s2s2V3I3W3X3Y33.!.Z3`3 4;. R3S3T3U3V k3P1c38@4 Q1f2X `$.4G3G3+4@4#4$4;. ", " %4&4*4=4#*/+4.Y d<-4;4>4,4'4)4!4~4{43.`3]4;. %4&4*4=4#*/+4.Y G3^4/44-..&=P&w%a@(4_4:4$4;. ", " <4[4}4|4P13 4 ,2z3d<1424'4344454643.`374]4;. <4[4}4|4P13 4 ,2z362##z#9@Y R184'+9404a4$4;. ", " b4c4d4e44.X 9@.4G3Z d<f4g4h454643.e2i4j4k4;. b4c4d4e44.X 9@.4G3Z H+0@..a@P&w%w l4m4n4o4;. ", " p4q4r4s48@,2d3z3Q1W ##t454u4v43.w4x4y4z4A4;. p4q4r4s48@,2d3z3Q1W ##z#`$B4s C4C4D4E4F4A4;. ", " G4H4I4J4R16-6-6-0@o3a@+%d<K43.w4w4L4M4N4O4;. G4H4I4J4R16-6-6-0@o3a@+%+.f*H.g2P&D4P4N4O4;. ", " Q4k R4k k k k k k k k k k Q&k k k k k k k ;. Q4k R4k k k k k k k k k k k k k k k k k k ;. ", " ;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;. ;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;. ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "}; �������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Resources/Images.xcf�������������������������������������������������������0000644�0001750�0001750�00000136071�13431646201�015606� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������gimp xcf file�����������������������B��B�����������?��������������������c��R�������������������� Pasted Layer����������������������������� ���������� ��������� ���������� ���������� ����������������������������������������?�������������������������,��R������������H����:K��K�����  �3� &�0� #" # ���� ���9MTK6��'%&&��BZlvxo[E3��UwqzxnoW��[pzolZKB1 ��U�+,.9�17G#:r��JHIJKLLJI}qgc]WRJ1 =TSTUURQOQUV��"QB/!0�bm��IHIIK./֯}zt]XTNDLRRSQRUV��Ub{epعo��HI㱃z_ZWRL2 ?PQQRTh}wa��U�� ��� �HGHHIIⶌvmr}zdK +KQQVlĄ]X��A8) <,G50�9 1#4��HGGHIIᴊtlp~jVGQYεtWTU��,�BI-H��HGHHIJJˤpkozGTiVQQR����HTeIIJKSrjhrט!MT_dQONONQ��fVeC~KosnfYnkrTQHwO��H[tQLL',dtgddmg-#JNONNMMNMQ��@.d,{I@@kF471��GHoL<]z|f]ai</#CKMLJLLJLN��bei@M9~\EUC��FGMHHIOJ&M^|n[^gr/FJLJIIGLM��r(}5*UOo`+/��ECCEFFeq"<JOT[^bnb9+9HJIIJIHGLM����<i!N<GMEXL��CACCEECHX?%3N_efadR8X\8@IHHQhpWIMJ��SV_��!j.]��Jъ&X��C?ABCCA7 esxvl^.KgAFHGJUSLHKG��Vlt��Pu��nw��B>?ABABB?0!.=,TO=??FJIHEGC��q~��Ȱ]en���n��B<<>??@=1$ )-++/0,*o>6BGFC@?A@����?:<=??=;<>?=94/+)+.4;77f8?A@?>=??��>9;=>>;;<>><<=<<=>>5BW8>=<<>?��:9;<;;=>?@?>:;<??>;;9/TÑB5:;;>�78:9;;=??=;:9;=><::6.v87:;;=?��U%=HQVH� �7899;;<==;:99:;;98998822a58:;<?��"FGZrS�!�KU� �+37^w֪3� �ww,��#+Cg~3�� D��4<Wl� �@��-*:J_xu�*�):J\w~�)�U2/IZj}�(�3)9Ni}�(�*?Zm�(�1J^z�(�)?Ym�� &,39?FLRY_flry踿�� 1I^z�� &,39?FLRY_flry3��-*AV`|�� &,39?FLRY_flry3��$.#:LYo�� &,39?FLRY_flry3��1ARh|�� &,39?FLRY_flry33�� % $8ARk�+�**2C[~U��  !"$%&()*+-./��##9TkB�� 3 !"$%&()*+-./��,1If{B�� 3 !"$%&()*+-./��?,UVxU�� 3 !"$%&()*+-./��[C:Xvuw�� 33 !"$%&()*+-./�Z�     ��3     ��3     ��3     ��33     �l�:��仓kC� �Ck�仓kC� �Ck3���仓kC� �Ck'���仓kC� �Cks&���]TNCOKKRXlh�2�CQX\Q\OPcT??J�0�GIU_SR`UC`PUJHJ�� ��DdB`D`7`=`L`F`McL��!AW^U=��ulc\\Z^cjij`ZZ_`c[_��)Net|~vaK5��Uzx}upqwulpX��!o}|yfUJ6 ��U�-(D-:'29@?<r��a\]aaeggZwskf^T7Srtstsokfgot��QxIeG\2Hr��]WX\]_d>2ۺkgb\P)hpoonmkkpt��U_uu{ŵm��\UUX[^`"绒mifaZ9Vnlmnn��U I%Q9F2>VDH%F,;>4J��YTUVY\_潖~tzŷ}^:elluԜut��.rVRmXfPthM}omDsOndu-��WSSVWY]廔{swŹm(^kvƋgdg��^fc@cQ]aS`V`Z^x_|_`g_?��VQTTWX\ծxrw˺%_lϟh][[]��>E6897>EFCEHHFB77;GOP\>��V_rWWX\\ǵ~rox'(hgtu_XVWVX��fK\;pBc\NHC8a]lJH@oD��Tda^a0/prmmvq9/^Y\XXUUTTX��C5d6^7XN1kF<B7��RO{[AlqhktB;*KSWTQRSOTV��hgh=]J]6&~\B`@��QLURSV^V'!\nxfhpx#$5MSRQMNLIST��r1V@;a5o`23��MGHKLNMnr%@MR_gihtg:- >NOMLNMJISS��:QB]D"N@��LCFHKKMOaC'5QhnpfiX7QO5HQNK]_LTN��N3+L2LtBъ+zl��ICCFHIIKG< hw~zqc2G~XENJIQf^QLNJ��ꘇZIUHY��H@ACFEFFGC5"$3C.KI@BBKRNJHIG��YeTH�˕>8#EW��F?>@AB?BBC?4%!,.,.450+cm;9FJHFCCFC��YYEE�EYYE�YE��C<??A@?=??A=;62,+,38?:6W9BECBAACC��@;<>??=>>@??=>=>>??@6>K:@@?@ABC��=:==?A@A?>??@??=1Iy?9>??@BB��9:;;<=??A??=>??>=>=>=:/b7<??@AC��UpoV� �:8;:;;==>>=><><=<=<==;61T7<?@AC��U҈J�!�=t5� �\Ɓ3� �fa%��}ݿ}3��s7��_տw� �3 ��U ʴf�*� ʴ}U�)�U ìthM�(�pϳu`G2�(�âznS= �(�ݿrbS;�)�ͽzbM2�� �j̯wj\B. ��3� �cɿqbS=#��3� �LhTE43��3� �[wrh]J6&��33� �-wroih`airqr\RJ:'�+�U^TPIAKR[Q[JB6'""�� &,3LRY_flry��"B@4+,2=B<<4#"�� &,33LRY_flry��:-!".%!!�� &,33LRY_flry��f "+3�� &,33LRY_flry��M!�� "f�� &,333LRY_flry�j�<�3�;�3�;�3�;�33��(Px ֮]5 ���(Px ֮]5 ��3���(Px ֮]5 ��'���(Px ֮]5 ��s&���~zkwss}�2�o}vvx~igx�0�xp}{z}hu{snt����tfhZ`skp��1^zxT3��켜� �BkxbE��UsqtplkrpglC��<xfU��U�+(G*9I08@A>k��܊ ~įwKq��V}HkJc4Pf��܄z}V7жv(8��UUn{nre��܀tt|/бQv��U5_sov{c}kywoB��|rrw}!ֻïN෗��Q}uyN��ymoty}չƳ6ԧ��lh��tknpty}γǷ 1~ܷ{yvy��i~qutsz~rqu}k��tyvvy} p-4vrtot��fDU9zgA^0!XRhCEHj@��oyB7ī}H=zwzvuprmkt��LEd#0D[LlG(f#��karQIN8bnunkkain��si@'d_C}]CD��g[ikmp{n.*܃+0Fellfaa]Ueg��r$:=ao` (��aTW]cff .O[`{u>6)Qfgaa`VSfc����<'SwBMEY��]NQW]`dfwO+?[w{h9A:6Zga\uo[dY��W\�*?Y�HъX.��YKNTX\]]ZI(n~p:CHLAR`[UauaVYQ��[nu �ĺSs�ms ��VGIOTUUVVRA+# $->U10LI@JIHWf^UMOH�� t���ܛ`fm���n���REEHIKNI;,'4527?@9)7OB4:LVRKGCFC�� ��� �� ��L@CBCCBCCGGDA<71/17?F?,CP>:FIGCA?A@��H<>?BFBABCCABBCDC9/IL<8A@?>>??��?9;<=@BCC?>@BCA??=1.QG57;;<=??��9899;=?@CC@?<;>>?>;;<;;8+AQ?28;<=>?��U��!� �97989;<=>?=;;<;;:5(CL<39;=>?�� "/ -+ �!�?;$� �7# !*11*#)�!�3C6��<>599?JJA:! �!�0> ��-fTWMINZ^Y^ZM1$�!���Uyrvlhaimzmvk]A8*3�*�U}|yoRA2�*�UgQA2-�(�X𻮼qZI="�(�t̯r[B.�)�ͽiR="�)�пlS?"�� �ãs^C3��3� �oݷr]D1��3� �V «}gaf��3� � ɸwR��33� �M ôU�+�ξ{D� ��3̘)� �3��3ת0� �3� �㹌U� �3�"�Ͽ��33�s� &,39?FLRY_flr�� &,39?FLRY_flr3�� &,39?FLRY_flr3�� &,39?FLRY_flr3�� &,39?FLRY_flr33�� 5] ɡ&� 5] ɡ3�%� 5] ɡ'�%� 5] ɡs&��� 3� � ��� :n0���~~�� � � � � �f � ���"���"��60��"� ��"��"��"���"��"��"��"��"� ��"��"��"��"���"�"�"�"� EvyM��"�E”Y��05��`~-�� M��f(��lG��` ��'r��E d��5j��  �� *:!��E Y����v �(� �(� �(� ��$� ��$�y ��$�M d��$���$�Y�*�~ -��%�- I��%�(I��%�dǁ-��%� YĜd��%Y�%�%�%�%�%m��q�UqUU�q�*��q�UUU8�U$ ����$�q�Uqqqq#��qUU8q"� ����0�:&)*:�8�W3�3��"3��»xrkd]WPIC<5.(! ��l8a::Sh[x33��»xrkd]WPIC<5.(! ��3S3��»xrkd]WPIC<5.(! ��DӴxzT=3��»xrkd]WPIC<5.(! ��3ůH6MS8��»xrkd]WPIC<5.(! ��3ȾL0# �-�3ݐ^S8DQU6,:/(�������3qbAM<4D6& ��3�3�3�3�3��3}}k|h@PH""��3�3�3�3�3��3мuqLUS"$ ��3�3�3�3�3��3}zLUW%0��33�33�33�33�33�3zMWk)5�.�3}zLWi)7�������3|zLUf$3��3�3�3�3�3��3ݿwLUi"-��3�3�3�3�3��3䷣oO^a&(��3�3�3�3�3��3ҧzHUL-#�z��33�33�33�33�33�3ЫeBG3&Uzz�-�3HkoH8.fwf�0�kH++'+'hoz�.�wssvvtvWvcUuttrqqD�)�yyn�z��|ung`YRKD>70) ��oyuӌk~��|ung`YRKD>70)3 ��nvkv{~|~~|`~��|ung`YRKD>70)3 ��}paqwtrprwX ~��|ung`YRKD>70)3 ��iZjpiigkqP ~��|ung`YRKD>70)33 ��}}~e[fdde`a\K~�'�3{s\Zfc_[[_?~���tnkMUa\[^^V(���3�qhe`URNKNgFB=<<=:6#���3�3x~ldbcddSPQOIEB8�~��3�v~qiggeXX][XULC~��33�3wzunig^]a^[]SN0~�(�x~yuqh^]^^Y[NM9~����y~xuphaY\[XXJI8~��3��~|{q}j^\YWTVQJ=~��3��xpfe\SQYNNSXVPKHH1��3��e>0@ ����33�~}}||y{~~}}~)�U�U��U(.UUi�:�U�^���� ��      �� �   � �0�:&)*:�8�W3�3��"3��»xrkd]WPIC<5.(! ��l8a::Sh[x33��»xrkd]WPIC<5.(! ��3S3��»xrkd]WPIC<5.(! ��DӴxzT=3��»xrkd]WPIC<5.(! ��3ůH6MS8��»xrkd]WPIC<5.(! ��3ȾL0# �-�3ݐ^S8DQU6,:/(�������3qbAM<4D6& ��3�3�3�3�3��3}}k|h@PH""��3�3�3�3�3��3мuqLUS"$ ��3�3�3�3�3��3}zLUW%0��33�33�33�33�33�3zMWk)5�.�3}zLWi)7�������3|zLUf$3��3�3�3�3�3��3ݿwLUi"-��3�3�3�3�3��3䷣oO^a&(��3�3�3�3�3��3ҧzHUL-#�w��33�33�33�33�33�3ЫeBG3&Tww�-�3HkoH8.ct]�0�kH++'+'elw�.�j^ZVWWTVCYFATTSRR1�)�_{y|~xrR`imoononU�x����WyslhiiaqSRY^abccK|��3��Tvndb^]_tSJQWZYZZYE |��3��`uqmga\`sNDNTRRTSW> |��3��iyronh\X\oJ?JNMLMOT;|��33��btnmmcYV\{G;GEGHEGE6}�(�rwqnne\UfX>>EHECDH,�}��|ung`YRKD>70)" �w{vkkc[PNdL5:EACED=���3|ung`YRKD>70)" ��iUNJC=9646cH.,*(($���3|ung`YRKD>70)" ��3WcXLHEEeH858642.(�~��3|ung`YRKD>70)" ��U~mcYPMJHaH<<B@><70~��33|ung`YRKD>70)" ��VsiaXTPNJbGBADA@A;9$�~�(�VvgaYWURNcJABB>@8:,~����XpeaYVROMdHD@@>?76+~��3��^pa]WWUWN]JA@>=;=:90~��3��ahYQIHA::D769;;9647&���3��Q0 ".  ����33�{{|{||{{xz{z{{|}~~�(�U�U��U UUK�:�U����    ��  ��&%%&"##"$$ (W2ElW\ ""��%*))*+,,)++*)$0hȦ,&)++"� �0�:&)*:�8�W3�3��"3��»xrkd]WPIC<5.(! ��l8a::Sh[x33��»xrkd]WPIC<5.(! ��3S3��»xrkd]WPIC<5.(! ��DӴxzT=3��»xrkd]WPIC<5.(! ��3ůH6MS8��»xrkd]WPIC<5.(! ��3ȾL0# �-�3ݐ^S8DQU6,:/(�������3qbAM<4D6& ��3�3�3�3�3��3}}k|h@PH""��3�3�3�3�3��3мuqLUS"$ ��3�3�3�3�3��3}zLUW%0��33�33�33�33�33�3zMWk)5�.�3}zLWi)7�������3|zLUf$3��3�3�3�3�3��3ݿwLUi"-��3�3�3�3�3��3䷣oO^a&(��3�3�3�3�3��3ҧzHUL-#�r��33�33�33�33�33�3ЫeBG3&Prr�-�3HkoH8._o]�0�kH++'+'ahr�.�WMH@?=;<3D41::98!�)�O~i`^ac\V:FNOQRQRR;�u����EvfXPMIJET:8>BCECEE8 y��3��AtaRDBA@CZ;49<=??>1y��3��NtbWUKA?HZ7.6:;;=>-{��3��Vf]YXM=<CY6+576688<+{��33��PaYTSE:<Cf4*1134343(}�(�`e^UQF@<PD+)322.04"�}���reibPKG?67H6"(0-./--���3�Z?=8/*''$%K4!���3�<sN?53123M5('(&$"!�~��3�;jTG=8664J6++..+,)$~��33��;\ME>;:96L4-.0-..,)�~�(�<_LE>=::8L3-.//..'* �~���ng`YRKD>70)" ��=XKC=;988M30.-.++'&�~��3ng`YRKD>70)" ��BXGA=>><6F5--.,++*)$~��3ng`YRKD>70)" ��ET?834/**4))*+-+(')���3ng`YRKD>70)" ��D' ! ����33ng`YRKD>70)" ��yyz|{{vzyyzz||~~�(�U�� K�:�U��������󫭰s��򲷘H70%MH� �.��7����1�� ��%� ��%��%��%��%�.������������������� ������ ������ -� ������ ������ �������������������+� 9�/� 7����(���$��%��%��%��%�(��%��%��%� �%��%�(��%��%��%��%��%�(�   �+����qqq8�qqUq� � � � �qUqqq8�� �qqU8q8��� � �仓kC� �Ck''��7:�7��3�3�3�33Z� !(.5<CIPW]dkrx�� !(.5<CIPW]dkrx3��� !(.5<CIPW]dkrx3��� !(.5<CIPW]dkrx3�� !(.5<CIPW]dkrx33��:::�:��ѹ~˽"��ѹ~˽"��Oe[Y48$)"��Oe[Y48$)"��|8JRO̩7@$' ���|8JRO̩7@$' ���{;JLIخ6@$% ���{;JLIخ6@$% ���z=NPMAM$##���z=NPMAM$##���z>TNKҼ$ $�U�z>TNKҼ$ $���{xxtqi& #��{xxtqoinkjm'& #��smgaYVQH$��smgaYVQLE@:5/*% $��plfb]VQaaH(��plfb]VQKDA;50+& (��푇G��a�&)��푇G� �*)��JHK(*��J,*��LaaHK+,��L/,��횏MaK,,��횏M0,��뛓PƼHK..��뛓PŽ2.��鞓R¾a]_$��鞓R3.��롕Ua$��롕U¿6/��飘Va$#��飘V8/��穜XaK&&��穜X¾;.��櫠Ya2/ ��櫠Y<0 ��筟\ľa=4��筟\ľ>4��� ��i����� �����Q��(Px ֮]5 ��''��:��»rkd]WPIC<5.(!��»3rkd]WPIC<5.(!���»3rkd]WPIC<5.(!���»3rkd]WPIC<5.(!��»33rkd]WPIC<5.(!��:�&�<�3�;�3�;�3�;�33��V:�V��гջF��гջF��s48HRF��s48HRF��Wpvw̩7@HME���Wpvw̩7@HME���Xlqoخ6@HMB���Xlqoخ6@HMB���YpsrAMHGG���YpsrAMHGG���[somҼHEHU�[somҼHEH��žiJBH��žJJBH��|yu��H4AH ��|yupjd^YSMGDH ��}xsaaH4:L ��}xsmga[WTLD@L ��^��a�GL ��^� �NL ��^��HmFN ��^MN ��aaaHmGK ��aNK ��aamGM ��aNM ��bڧ��HmJJ ��bŽPJ ��d��a]_9 ��dRJ ��eݧ��a9 ��e¿SJ ��f��a97 ��fTI ��f֧��am89 ��f¾SE��g��aFE��gTF��﹭hľ�aUJ ��﹭hľVJ ���$��i�����$�����Q� � 5] ɡ''�X�»rkd]WPIC<5.(!��»3rkd]WPIC<5.(!���»3rkd]WPIC<5.(!���»3rkd]WPIC<5.(!��»33rkd]WPIC<5.(!��:�&�<�3��&�3��&�3�;�33��V:�V������48��48��߉̩7@ꅌ}���߉̩7@}���܈خ6@ꅈ{���܈خ6@{���׈AMꅂ���׈AM���ӇҼ}U�ӇҼ}��i{��愅{��&#!!H`v��y��aaH`l��{u��҄��a�x��҄� ���у! Hx��у��ЃaaHw��Ѓ��Ђav��Ђ��ЁڧHx}��ЁŽ}��́a]_Z��́y��ʀݧaZ��ʀ¿v��aZX��t��֧ aY[��¾~k��~aij��~}k��}ľa|o��}ľ}o���)��i�����)�����Q�#���qUqUUq�*��qUUU8U!� ���!��qUqqq!��qUqUq!����"ܷ���q�UqUU�q�*��q�UUU8�U!ٮ����"ԫ���qUqq�qq خ���qqUU8�q ڴ����!ݼ���qUqq�q�*��q�UqU�q��� ���������������������������������������������Q�� ��  $���� $ "��#""   "   ��'%%&'&&%&##$"OM$##%��'%%'""%$""#$&j$%##%��!)()% ))(()% z&&(*!��#&()  #+((#؄%&&("��%(%  #,''&')%!و"$$!!$'$��*>58a<$  )4֕- 1GFG6!'����tR1nk")jϯTa.1����ߵgVlɞ}n��ǹqoyٱrttz� ��,11/1,8ckթwgkY.*..)��5<;;98u<[JR3:992��>FEECC?aU|>ABB;��EJIIJJKKJIHHFE>5xlWaGLMMC��LRROSPQQPRQQOp_]KOPNNJ��V\[[ZYZWWZZYXWWSss[WZXXYS��]edc_ak`^cddb_bjW_bbZ��ejib{簠jgjjgfYhjiijkkc��mqppˢporqpopqonXprppqopk��vzw爗lԓrxztvwwYvxttuvxs��~ҸX̡|Ð||}X~{����ߗz|y[~����ߧgg[cƝLGw_M^ixv��ߖaKIN^PZ}nZJN\kqqrngh� ��m-?75M@��q1Y178D��뵷}X?;)S:3q��hNaZG6G��h(,8.¿��ɪT:`irý��ɎǷq��ջ&*^ѱvV��_!(M6 ԮuO��),6A<ȿشzK��O3j}G#TGmų}A��3��߼RTHI!{bM��ߜvYYOQgCR\Q<SYu{��߆sQ:9=NpuCOko\I:=L[b`b\Z_� �qqq � �qqUq� �� � �ƍq� � �qqqUU� �� � �qqq � �qqUq� � ���� �qUqqq8�� �qqU8u8�� �� �� �ƍq �� �qqqUU� � ����@���@���������������� New Layer���������������������� ���������� ���������� ���������� ���������� ��������������������������������������������������SI���������������Sa��-������������S}��m��������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@���������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@���������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@���������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@��������������������������������������������������������@������������������������������������������������������������@���@���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Resources/Makefile.am������������������������������������������������������0000644�0001750�0001750�00000000220�13431646201�015715� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ resdatadir = $(datadir)/WINGs resdata_DATA = Images.tiff Images.xpm defaultIcon.tiff defaultIcon.xpm EXTRA_DIST = $(resdata_DATA) Images.xcf ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Resources/Images.tiff������������������������������������������������������0000644�0001750�0001750�00000043076�13431646201�015760� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*�D��� $hJk�>}۫G� '.0� 0�@�ʠ!x9rʝ'o *\h%JT�jR `nR% 8� �b5� �O=p:?�8B &2p@@'�7>'-ZdR__:�^6f��5pI ��*7/^yp\D�<zߪ{PL8Pj:�J00 �_x%E`P`} 5PB3@)<"P.UT  1&�pUoa9.\W\=�<(6� u�JX]�btS�li9cWJ ې� FZ9LA;�[dp @"exq`�N9d8aD`rκ`]vϚEf V kκzji:kmzZjfjdf#�(�B�@;A1YP7�?�HPP\Y Ǖr^xCD#�ksDk�Hl� 7ECR�W`5^>,d)zLpR�t0R^k: ˲njbxN`hnj俭Zަء6otwiz&߭Aa>=Qt>N$:VtA}/[> y$4xCuCd/�lLIJW_�3DtGў&J*k &1L8@ hm�,w3;'<7p'E\zwU7qjw?8!t@a;+$ a�ð }x* �`;r A�P9Ia+1`Q�V#~q=cc�@�"p$*$ �Ѐ&X` #q�(G%�` �;'�X�<0�"5 e|5RYҞD(j(JA�`L nՅKd'.݋[]GT20+&�FC�@>~0<Eg.~\G]捀AKUmP^ QЄ !-`~B,9Gva��3o5\1yqC]).`@/qF�(5A NfJ^PF!�Ѓ\(\�Y7p}6�1ȨgX�`ؔ�A��/9KɈCVI" 5h $|u3.�p-�/BaTWR& Ul #^"['Dq<r*<(P? eaVT[ӮgY XG:*$ٵH��G� �c(\E $?LA8i޼&*ﵭG? Ť 3��@�O �="�0CJ�1@ s�  @k*hCwdd@"L|LNH@g `R2Ѫ �F(h_�l`��5�`+Bօ?�35DiNr'qg.Ԃ3[X!#zx$e$I M�@A�BB*|AA_r4^g9/%1RЖaR/� Ujs,G � !�)aG ؀FB! sA-^@8 ��Os0�W3B^H@>\w]@MЁ)!YmZhQ+X1�MY E7�Z2�@ Ґ�.*.s*hD �v��#K�P@ 8$ X�696�mIhzDW(xR׺)B�o �ޡW ߃:Ix j [~_4z�tP?!Rl�ǁ *a*C\ L £[B`�*|3 Xo8AY,`'~�>{7"CAj e4P'3ED+%'dA8$ 7a5Yyq8Bdl0k=npi AxRS@#{6'YTq2G8+~%86#0-̄jWF�䆖Ua`@e`C `&r3� )��Ui`A T ="v0=P9BP 3E.=@'E8]E< &@|@L'08PVhBcL ,@r8'\e8&?f �3. ^AP:�56 v^$`eLv�p�'p�?Dx.u؁]6FIQa,-j\{z2k̇�Ȃ(4.5]@4 u�iXPd%DllUFA{b aQ E  ΄ OD D5(WO��$�M2�ݤ0L:A<H&VeP5Kl>lT[KpC`TeDΤ4POA�RhF0cVy$4 `^bTA#�T>d* _F8%M3Ln(��QP��E�LB;38t x,3uq�P0%F8QA%�Ez�eJhqCl�UOeAd)oT zWJ`M(dODO IN` \J\IdFPx<4|<M�ɼj|$|M2d~ $(" (;%�=,UGVYX  B(@t.�g Y/9.�x@MSdG/B{z< X5�F4d@@x=8!pe3BdTAk؆yc*�A�� *``bS8?x{_N) U&mЈ+h<ND Htԁ a2r^hHmN]_Zp'cPK$\4Lș ʩʫ*=`΃<RbI2Ut'�1w�4k'͂$(w/Ć38GhNB;xBp;�AQ*XK6�\D?`BxΆc]p$ 6-GQ$R7B?p0`d]qPk_Qrz��& $@@s@Dt8H.:`V j\^BdVF;dH&!$j@D~F"{̆.Y�P+,Dkx{Ű86Yf,,̕[fB�h*Hm36ꪅ<N$jU>ț3��v6пH64�쐚E.�Å)� (6T,pKՀuXui�UV Ȇ F@��RxQ��.nwit��Wp7@�3N�~E0hq�H4+>Rh�E ؁ENDR~^rFx`;B`uxnJm8%$jP@,:' �qFEiq�rTG/hqF 7dqc7J<l/|vk�a6 a/0|'RC6�߷֬X�<p�~ j�cЦ_ �1"0)!�0�Ȑ�eE�B E�g � �0, %� h1`Ѭ j֪(Y}y``��lY #� Ҥ )�X� �#x�+ `ŲI��+��xP۶а}`@wۖ=AAnfrk9sgjk pe-W߼un8ًk~ʇS_jǫV�= �h�n!�(8� C� ,�5PA�:#�ȕeeh�r?B�0C=�(#2�H't�p�&y�h;Ι=�@ wcN�:'�h �r�h �^�Z7\M~|AtGmN[-4�@s�%�08PGA ��3 @t7M�d�g��@ �dB~_C � � �,s֘[SHUl(u{ٗ}Wwon0T`;\�5ʨ0 +`g2�:/R:FgжT�ؘ5_PD] 4墐k�*�p%;�ȧv�"m�F �! �x bd�'Ȉ#%B� Gx�=<�@y�H'FMkK;Ps-Kd~7^/蜋:@Mt R@ׂxݾCdyek$`*JL@N[~ڰU0 hP描-W3QQ-6v!{zA|`ɰ10��/ĭ8�'¹:B@@�v ��� 1�2�0.]� rC"[y G�À�YT8��"anf8�;!�(�a k :|ƴYc�f.nN%# �T#B(-Ys�8;  9 ;J y]`359) xrzq�|eM$�Tj5`L�@\:@t.]fL�;Daق9!؁MHy @~fC^(91r?w{Ω`#�0+2Q��EA��ׅ q\3&Y)8��@ bfS+, M@`Ua.r $LLB0P�D* t@�HB UW(yL3DP#`ae$��p Jg@/LvsFM�"]2xTQH@k LR\H[`5Bd�(89c11gK|lRQ+ DN�=.�z[˼vpG:1�qjg��!Hdz �lv�xvWW؅x1�m@ P .\ \,yƩqB.FJFwK9-ycu9 ~xQSb&NejL%@nwa]'+FVG$3�>>FQlUKA#da` ή|xc730^ c3Lf:3Ff[.2�27 a/h3_B:�>@8HYV�-qԦ4jMHந}gҡ C!{K+OapA F61~nf:.]ZQD8!+u#%p? $GB:_.\w*ve  a�sXa16Y<hF &:B7{G:Qvps{;Ysg};;TwƲu9GD5N]B|0@^ Visc5 lWUC@ <x@OMu4pSa8ǻ4 \l -Ԍ9]%Ca{GT.1$ưUX] 3KЬ^\1qo�@l@# B(1A� !�l[jgb#F=EL89~1FMq6�@np9 S G щQ؁ AM' 0o uWx> E ;1*JeˀCA4͂'B �d)<s:G-te؇K�} D� �"� ku@eN�rmmg#lkD DgX[؀1�5bh)xz!'�p C mrpe�,`AGxJmȇ gCM80 GOy&`N>G SuIf)@dx1�8P8 (1tYfuܴcˑq؆3_H/�W�0h &�9�os%�& d*E d 9*"#@\h!~�0!%�{ o8XȁOfoȂ,�4Up�}�[<ށ,X)XsBMPR9cbTROB̈́MOINĈDKDM,JO$L8K$B  ?NX�P{PQy`"x,$JO,o.@`m�h@x8#8cppB4v;�c@ca+� pa xP$!pP `B*1\ FC C*JVS`g��AcxK8Fx@c�+ ؄o8p_(JFMɋW h}bX=xD#?�@"JM$O$HDɑNd́$N$KI\'o\-hdT5��|�'Z`F`Fjx>(fKC;R@:@T} xwDh�1A:蠄�h X�{pLv�! ~p'RJk J8ڦ1d %lDc6kq;gLFF Xc}2pX f%!e-ԴeEM+ބ͜\H$ͩ2*˥2/SU ܕUC_0�9 2rcTbO3ob@�k@pcmG81j$O,J\w �A 8s.VM��GpP%�Z�e ZD"Wc�2ϥk7lt%@: Q`KB�t�G؄#t+. Lw8KB/�GM.9o4PFMF Ԥ ,.2,(ODnвu/IdKVԂ`@O|W;JQt.@F*جZ@�h0Jl5*ldدripj�@��=(Qhr 7aa�"�� ���2����(�����Q�'`۷KW{9�gu)c}�YpQy5j֪]n 6j(0Im;>[w ]{W]m�~CԭO#Ǝ ߿K�gְ̤~y |QR4_b�3E^_<pM�&|�̙1o�@9%�@67/@@uqN6 7"3KbA E`$D|�ZZ�4P;1W@N 9�L+4|y _ybB37H0,0 ФKw�D Ex/g8>s$qY~~?QB�`�0|I !dD t!�. �H<`�WS _,xX N=vB#%k�8�^oi<S'ᦛi9յ(C+l(P-UjM;n s:V z쥣�@�''y'�K ~֝^ WN>הOsPA . �4`+@*Xb/l68U pDU*A" T@t 4V @`1x`_ xd3<®C k"*�Xyf k~^j I?�Z R1>.N>{h.qŕ@� D̑;B9MW0R/g }9t9VdWoV5 ! E΃[OZ_pa\J "P Ф��AvMD^ Mk8"NDG\bv!խ^Vu~X** �8B'xR&pB`@! yCЅ0t&$ML,�m'܂mB;�Dx':ϡwtg4*r~T]tUT`�zm�d.7$4"¦ ]!�\%qI"77ᇼxQ0-xK6 E|F:(h0� 8 .qH(r � �V6űMqg lbx-lK FT9*Ӱ;n4J19@B?9ir ;ґE �Y&9U"(GYڌ;#J[Ǡ0.T  `17>AJs;Hy.G<A � @�Np><"g+xҼTrq9y] orOu,�< �4r6MIJK<"o"`&yHWμpg F~p +o~"4mBcD`y{>&"XEQ`fBpRQպ")ErZ_gx(ܠn| Ȁc HZwV.,3p*RI40u,K2I9U�XĎU0! " �3 tZɷd!Q�`PC @?� ^ |0U �p#€SP�GX?Fp 4Votrݤ4oMn|Ԭ壉k~[(Nb<�;=o5܃1e-Miw+>﬊ji@ @  @* }āR"HZ<5�7�HA>n A51Y 0qci\Sדu7魠qkbZS͢YiL}�(k関mw M9@x ,`x%܉Fi㫴IqS{F �8 fm^y<S2<UB=^IUa x`AXG qdHwn4e 4G;Z@@; 8u|O ]|c Z.bջUny5۬5#� &:v@D 9N"/s$�  ^NZ7QwSc1S�F]�>|| (8@ 4# s~ܴ�!bx0�c<!hB7._x29 !x� ��(xCmr?/Y,.#7 �� ? �3Et$[@vstwX7q3׳#Q @]V;(�CE;Dzv@tӂ7@NSADNA&B{PDRfB4XOW~O]t-_`!R�`�HQ0`@oPrK4,ltF G2\dʤ ihGw�228'('a;(4 WhG}ӭ�?�GXL�? �( ( `("G"@t[  Ȑ tײV:F;WS:؃vXiSaV^D�AT DY\G-vX#^@ P!v� @|c�%t4H� \18��\Kf=ʒ:�X!؂h�hQH{Ȇ< AH (*47ԬȊHK�MO8|׎T tr=|J%ށ_� c2O0KFSAu HNJ 521F 2PU44� 9M@X2h@X�[�H `P@ ;ʀ`�6{;x5Q8!�6xIGSH䈚$TIȌLƀʲddbȦ(MhH{W;G}'oPӏF^D͸B3�#�IAr�!6SM\5�,YoFP*|��J}A`xAo5؀-@%؀@ k%,Mʺ(JqN͊(($͆ζB)d/ ΁-,AI"DTʡC+/-/b,bY� $h!B &lh`��F=Rh1N/V$L`(I<KT)L+kq&M�J*]l*V\ja#.;qs6,QiKo @K;�VִI.֠Wިы1d#F=fyfݼ{ͦh ;vn?_R,|`c7nڼe!jMh<mf43;6teUCfzq垃6}vjʓ5KCmEg{,Sn>?0 42 6C1C 53 7#=N J`&^`Tc9Ep)6\*I41#Q*rq<a�b(E�b S u(ʹ#WX34Z&SD�,RsBS("(0/а$X�JSb]`6.L9�R(*,ʩFFY+2j ą Ts8HmhBfm)o% ,=!�@�`A 1GQ;mV. G[s�p~s*_>zT/.(˯nŠkjFm!ꩯrj< bvA ⮣@Np*3(SN3 AuqxALA8L)[f)VZ<@y@A@#[x %1pZ ~_Bf�jC-f;k�~`UhJ+q'ƘѪtj󂫯hq)?8HgXH�g=yI3,4Si2t~!V[r_ V�`%RHp)0 7�~|xOlY /Ԇ/c(�� d8$ H QJ h�ATq[øuF#JCw*Ƥn;5͑#KA #֢Lr0 Ecm 7OMӟ>Sߚ` p�Gz90�çW� XØ(0�(Z C7A=T" �E`�2xNF葃;�6\aC3pdH s'��tA�~e(%J =PLPƃKN%8;iTZMp nإk.Ш ( U^*�/(o`�� b4� �>��]:Vik8úT�֩r'N:}lTXcځa`0ټ8&pwow>"V �[[9# 4V vX`#U�Q'h�x5P-e\0Q &M�{y�e%��R-H%P/>9Ed�8Q�+O2I8SH9Mtt(RHCԒI)TH6[Hn|sωx[WGrdhp �Xy8-0@~L" ]�cm�/Jj>a-��ZdT8sU؀o�e -.,38Vh=nTJ3�j?J9!K!vlB -�7�p �w�[�<'FGVrGBAuQP@)Dx[x]T?_T�z�x@Fl>�@b�N�P^_k� h8Q@@yk+zZ/(qmm%N;띶vv;#9]wuu =p[p?InPǻXk&PzI  YP~ <25K5PS7)7(�� i8r HQ[;/4A; R瓟8 b߮*]vۃ]ڳ?7I_O`쫇|Tqc`(GdJj?�ΜT6i@D �f;s%S2lf@CO!!�W�*qi��~(`M3<x1%B87 �S^Ҧ3Cvpr�`�H'i񔦺�gCSgFp%\�Ȉ0(iJ'>>t1@�͡PX|%xFݥ^l��ƫU<N} Rq2�ƻ*�� ҙ�DLnF!GN2(EunrфE҉1)xGΤdNfDç0wT�!L1r´ƧrIl<*x',,hT)Rg,��iE>ˎs�p3"*K \EPb ZWb }TjWկq Қr1 V״5cH`%!0VaL`Qs\y/@`4Lê2@~s�2U@ nEp�|jgïgn('Twd@[��4v@�$)%2Z G+.c|{H{#9S׹Q zR:լ.=kU,f{ރ^̊�>f8� �@ fC3).!w lL6v C 6AlH٦-"kY&LG!^x�?8P hAB@F?\ԋ}Щ`x%0 �oqӹ &JӌED b` �Gc֐\�@T((ЊJL �``._^IzՏm]uG�iehE�-AJCA6yS H|0p^Eäcr7,�ԆgA?O�42��ׂ$҅3W6-Mtc �xKUp���^@&@p aT"y@p]�2@Fm<tV2�2& �OqmvD(e/q^Ēu, KΗysL[Aݚ5rlAh`h6w\�IOL у � $0iLav�}p08`n �h5*D�pb��>`%D ?VCm # qG:('`�1qEA92s-"p\R�옇߂ 3|gg9?E/%1|M6TpT@�Ԡ!` UZ#nn&2Gp}=269 s�(N`#>rȁ$L0w5XM C40�b$X@B@�`&D@ r؄uXu.'o�4`@q!xi$vGCXyXb-D@�@hL� A,3& 7'kąGCqH(s: 0�.`C)qVp1`�0T|!k ?1H0eP>xrm3�؅+(� V| "NFH �ArW�("b F\0�bW7xyx�8u0�A8�.n2W 6'k� G /�X0 ( 0؏8888B@� $h!B &l"F%j1bƊ'nQ,:߅@~ �?l���*XO1�J(,��x%5gċ. (I�I!Sl9rWPn�)>W\5He&N<e@&%�_>33g �4XJd(|�( �6�`wp�]:,bM�@q 9Ϝ=wB�._m7nVuN~Q]?<}E]Uu4=2ErRhX~f�� L��0 PN �Z,?`7:�� c%p9\>\n?)�L6P� !$>C 0 '" Ȣ5hc7b28+�H !> $r=Y& ( #z[6�A���~r3"�X�"��_PWPe#4ɤN‹,K,rgŠ+e*0Z�몧<I஻鶻 #Zv̗��Ad+9 >�X�0 f$�*�I]:?d{U>?hj0a$bFx g<&tIhWXq%y4eS>h H燯f$x>78�ksX�R�9)pء $񝔠~Wd]w Axrm;]vݝ=wP<=8xO2y4PN衆\voXcG )e4 V͵DDCpC�wT`xӞJGOe؂d+� 0 d#:WC3x# 2р-JxMɄ/_7>©tTu X �@kX 0X��0 fb f5xXՍ//~HĢ@fR u/ ̂1e "V Cr</$AZV'N&;I VT:XF# hG�3`lbI) d?%)KERx3doɖD$6!JO\$F̹Ld ޱ u󚷼Y@ :EIc�A'O; D"uG>�@qx�1L;dI?@�(H�*ISGqd**w>"a9QEЈbN 6HR�54ټ � P-6 @p [GZ 9�*V V4(C/~$X!fjSM =LSkx�0(4�ip<@Wʶ UJ?ғ>�Hn¢4l`Y0fm[Тޝje}S[�ĵ iŁ5$׎v5>MqOۦ^n]"h@+Oz�%W" DCla@!�60Ѓ<�='Iz;�O}1\ #/=H��Bi/G{z:+׽@JB*a֬ETc@Yp %?3DHkXccW_�O8â I3>|L�D&67@6GIoB lnLg>!cKb:.Db�+�+^~eH{Qi@g 0A"DQs$P CLb!(C,^pe.{b[�VJr[$gݑR|D!0W BYjɻ5q �ړ Zū�j Is�~b'F,DL0M+� � ԁ��#���H4C2� E�xre@`9 *LD'vܘu)�_-�n o;�>;j+� `M@lR;geW=f&N<e3fΚ=g]z_+�z/O�soKmCҥ A>Pi ��2$[p--Yz -Yb՚u6m5xv~oS3v~hhWJ^yM)6p< C1C 549b �x �z谞H1`w�EMelUIMds\ D`iP.YQ F07$(FC{MEs-5,C�p x�PP ( )08oeu+Nړ h\lkq tY`e����ɤH[U`IGRȢ-޳J2++fШ,?[Ѿ,y�?ax.w& ﲫ0ιƘb �x^i�?Е9.K-Ck Ml�`C䪩NE �Ȥ$`` �z詗諟hc+o;��P!G�qo7^xpI'nWXq%)QBn� &)>t,7W]}͵]ÕM*e7ݤ=;ࠃ:9O8O989//˯򪫯oo� $h!B &l"F%j1bƊ'n &J$i)RJ&m2fʜ%k9rʝ'o *\h%J*]l*V\j5j֪]n 6jܤi-Zjݦm:vܥk=zݧo��������������������E���������������� ������� �J���E������E������E���������������������������F������.F������6F���������(�������=�������R���������������/usr/src/Applications/windowmaker/WindowMaker/WINGs/Resources/Images.tiff�Created with The GIMP��������*��.��9��@�� D���� ��r ��w�� ����R��������H������H���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/wbrowser.c�����������������������������������������������������������������0000644�0001750�0001750�00000067660�13431646201�013752� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include "WINGsP.h" #include <math.h> /* for : double rint (double) */ typedef struct W_Browser { W_Class widgetClass; W_View *view; char **titles; WMList **columns; short columnCount; short usedColumnCount; /* columns actually being used */ short minColumnWidth; short maxVisibleColumns; short firstVisibleColumn; short titleHeight; short selectedColumn; WMSize columnSize; void *clientData; WMAction *action; void *doubleClientData; WMAction *doubleAction; WMBrowserDelegate *delegate; WMScroller *scroller; char *pathSeparator; struct { unsigned int isTitled:1; unsigned int allowMultipleSelection:1; unsigned int allowEmptySelection:1; unsigned int hasScroller:1; /* */ unsigned int loaded:1; unsigned int loadingColumn:1; } flags; } Browser; #define COLUMN_SPACING 4 #define TITLE_SPACING 2 #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 COLUMN_IS_VISIBLE(b, c) ((c) >= (b)->firstVisibleColumn \ && (c) < (b)->firstVisibleColumn + (b)->maxVisibleColumns) static void handleEvents(XEvent * event, void *data); static void destroyBrowser(WMBrowser * bPtr); static void setupScroller(WMBrowser * bPtr); 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, const char *text, int *textLen, int width); static void willResizeBrowser(W_ViewDelegate *, WMView *, unsigned int *, unsigned int *); W_ViewDelegate _BrowserViewDelegate = { NULL, NULL, NULL, NULL, willResizeBrowser }; WMBrowser *WMCreateBrowser(WMWidget * parent) { WMBrowser *bPtr; int i; wassertrv(parent, NULL); bPtr = wmalloc(sizeof(WMBrowser)); bPtr->widgetClass = WC_Browser; bPtr->view = W_CreateView(W_VIEW(parent)); if (!bPtr->view) { wfree(bPtr); return NULL; } bPtr->view->self = bPtr; bPtr->view->delegate = &_BrowserViewDelegate; WMCreateEventHandler(bPtr->view, ExposureMask | StructureNotifyMask | ClientMessageMask, handleEvents, bPtr); /* default configuration */ bPtr->flags.hasScroller = DEFAULT_HAS_SCROLLER; bPtr->titleHeight = DEFAULT_TITLE_HEIGHT; bPtr->flags.isTitled = DEFAULT_IS_TITLED; bPtr->maxVisibleColumns = DEFAULT_MAX_VISIBLE_COLUMNS; WMResizeWidget(bPtr, DEFAULT_WIDTH, DEFAULT_HEIGHT); bPtr->pathSeparator = wstrdup(DEFAULT_SEPARATOR); if (bPtr->flags.hasScroller) setupScroller(bPtr); for (i = 0; i < bPtr->maxVisibleColumns; i++) { WMAddBrowserColumn(bPtr); } bPtr->usedColumnCount = 0; bPtr->selectedColumn = -1; return bPtr; } void WMSetBrowserAllowMultipleSelection(WMBrowser * bPtr, Bool flag) { int i; bPtr->flags.allowMultipleSelection = ((flag == 0) ? 0 : 1); for (i = 0; i < bPtr->columnCount; i++) { WMSetListAllowMultipleSelection(bPtr->columns[i], flag); } } void WMSetBrowserAllowEmptySelection(WMBrowser * bPtr, Bool flag) { int i; bPtr->flags.allowEmptySelection = ((flag == 0) ? 0 : 1); for (i = 0; i < bPtr->columnCount; i++) { WMSetListAllowEmptySelection(bPtr->columns[i], flag); } } int WMGetBrowserMaxVisibleColumns(WMBrowser * bPtr) { return bPtr->maxVisibleColumns; } void WMSetBrowserMaxVisibleColumns(WMBrowser * bPtr, int columns) { int curMaxVisibleColumns; int newFirstVisibleColumn = 0; assert(bPtr != NULL); 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); } } WMResizeWidget(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); } } int WMGetBrowserNumberOfColumns(WMBrowser * bPtr) { return bPtr->usedColumnCount; } void WMSetBrowserPathSeparator(WMBrowser * bPtr, const char *separator) { if (bPtr->pathSeparator) wfree(bPtr->pathSeparator); bPtr->pathSeparator = wstrdup(separator); } static void drawTitleOfColumn(WMBrowser * bPtr, int column) { WMScreen *scr = bPtr->view->screen; int x; x = (column - bPtr->firstVisibleColumn) * (bPtr->columnSize.width + COLUMN_SPACING); XFillRectangle(scr->display, bPtr->view->window, WMColorGC(scr->darkGray), x, 0, bPtr->columnSize.width, bPtr->titleHeight); W_DrawRelief(scr, bPtr->view->window, x, 0, bPtr->columnSize.width, bPtr->titleHeight, WRSunken); 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, scr->white, False, titleBuf, titleLen); wfree(titleBuf); } else { W_PaintText(bPtr->view, bPtr->view->window, scr->boldFont, x, (bPtr->titleHeight - WMFontHeight(scr->boldFont)) / 2, bPtr->columnSize.width, WACenter, scr->white, False, bPtr->titles[column], titleLen); } } } WMList *WMGetBrowserListInColumn(WMBrowser * bPtr, int column) { if (column < 0 || column >= bPtr->usedColumnCount) return NULL; return bPtr->columns[column]; } void WMSetBrowserDelegate(WMBrowser * bPtr, WMBrowserDelegate * delegate) { bPtr->delegate = delegate; } int WMGetBrowserFirstVisibleColumn(WMBrowser * bPtr) { return bPtr->firstVisibleColumn; } static void removeColumn(WMBrowser * bPtr, int column) { int i, clearEnd, destroyEnd; WMList **clist; char **tlist; assert(bPtr != NULL); column = (column < 0) ? 0 : column; if (column >= bPtr->columnCount) { return; } 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]) { wfree(bPtr->titles[i]); bPtr->titles[i] = NULL; } WMClearList(bPtr->columns[i]); } for (; i < destroyEnd; i++) { if (bPtr->titles[i]) { wfree(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)); wfree(bPtr->titles); wfree(bPtr->columns); bPtr->titles = tlist; bPtr->columns = clist; } WMListItem *WMGetBrowserSelectedItemInColumn(WMBrowser * bPtr, int column) { if ((column < 0) || (column >= bPtr->usedColumnCount)) return NULL; return WMGetListSelectedItem(bPtr->columns[column]); } int WMGetBrowserSelectedColumn(WMBrowser * bPtr) { return bPtr->selectedColumn; } int WMGetBrowserSelectedRowInColumn(WMBrowser * bPtr, int column) { if (column >= 0 && column < bPtr->columnCount) { return WMGetListSelectedItemRow(bPtr->columns[column]); } else { return -1; } } void WMSetBrowserColumnTitle(WMBrowser * bPtr, int column, const char *title) { assert(column >= 0); assert(column < bPtr->usedColumnCount); if (bPtr->titles[column]) wfree(bPtr->titles[column]); bPtr->titles[column] = wstrdup(title); if (COLUMN_IS_VISIBLE(bPtr, column) && bPtr->flags.isTitled) { drawTitleOfColumn(bPtr, column); } } void WMSetBrowserTitled(WMBrowser * bPtr, Bool flag) { int i; int columnX, columnY; flag = ((flag == 0) ? 0 : 1); if (bPtr->flags.isTitled == flag) return; if (!bPtr->flags.isTitled) { columnY = TITLE_SPACING + bPtr->titleHeight; bPtr->columnSize.height -= columnY; for (i = 0; i < bPtr->columnCount; i++) { WMResizeWidget(bPtr->columns[i], bPtr->columnSize.width, bPtr->columnSize.height); columnX = WMWidgetView(bPtr->columns[i])->pos.x; WMMoveWidget(bPtr->columns[i], columnX, columnY); } } else { bPtr->columnSize.height += TITLE_SPACING + bPtr->titleHeight; for (i = 0; i < bPtr->columnCount; i++) { WMResizeWidget(bPtr->columns[i], bPtr->columnSize.width, bPtr->columnSize.height); columnX = WMWidgetView(bPtr->columns[i])->pos.x; WMMoveWidget(bPtr->columns[i], columnX, 0); } } bPtr->flags.isTitled = flag; } void WMSortBrowserColumn(WMBrowser * bPtr, int column) { WMSortListItems(bPtr->columns[column]); } void WMSortBrowserColumnWithComparer(WMBrowser * bPtr, int column, WMCompareDataProc * func) { WMSortListItemsWithComparer(bPtr->columns[column], func); } WMListItem *WMInsertBrowserItem(WMBrowser * bPtr, int column, int row, const char *text, Bool isBranch) { WMListItem *item; if (column < 0 || column >= bPtr->columnCount) return NULL; item = WMInsertListItem(bPtr->columns[column], row, text); item->isBranch = isBranch; return item; } static void willResizeBrowser(W_ViewDelegate * self, WMView * view, unsigned int *width, unsigned int *height) { WMBrowser *bPtr = (WMBrowser *) view->self; int cols = bPtr->maxVisibleColumns; int colX, colY; int i; /* Parameter not used, but tell the compiler that it is ok */ (void) self; assert(*width > 0); assert(*height > 0); bPtr->columnSize.width = (*width - (cols - 1) * COLUMN_SPACING) / cols; bPtr->columnSize.height = *height; if (bPtr->flags.isTitled) { colY = TITLE_SPACING + bPtr->titleHeight; bPtr->columnSize.height -= colY; } else { colY = 0; } if (bPtr->flags.hasScroller) { bPtr->columnSize.height -= SCROLLER_WIDTH + 4; if (bPtr->scroller) { WMResizeWidget(bPtr->scroller, *width - 2, 1); WMMoveWidget(bPtr->scroller, 1, *height - SCROLLER_WIDTH - 1); } } colX = 0; for (i = 0; i < bPtr->columnCount; i++) { WMResizeWidget(bPtr->columns[i], bPtr->columnSize.width, bPtr->columnSize.height); WMMoveWidget(bPtr->columns[i], colX, colY); if (COLUMN_IS_VISIBLE(bPtr, i)) { colX += bPtr->columnSize.width + COLUMN_SPACING; } } } static void paintItem(WMList * lPtr, int index, Drawable d, char *text, int state, WMRect * rect) { WMView *view = W_VIEW(lPtr); W_Screen *scr = view->screen; Display *display = scr->display; WMFont *font = ((state & WLDSIsBranch) ? scr->boldFont : scr->normalFont); WMColor *backColor = ((state & WLDSSelected) ? scr->white : view->backColor); int width, height, x, y; /* Parameter not used, but tell the compiler that it is ok */ (void) index; width = rect->size.width; height = rect->size.height; x = rect->pos.x; y = rect->pos.y; XFillRectangle(display, d, WMColorGC(backColor), x, y, width, height); if (text) { int widthC, textLen; /* Avoid overlaping... */ widthC = (state & WLDSIsBranch) ? width - 20 : width - 8; textLen = strlen(text); if (WMWidthOfString(font, text, textLen) > widthC) { char *textBuf = createTruncatedString(font, text, &textLen, widthC); W_PaintText(view, d, font, x + 4, y, widthC, WALeft, scr->black, False, textBuf, textLen); wfree(textBuf); } else { W_PaintText(view, d, font, x + 4, y, widthC, WALeft, scr->black, False, text, textLen); } } if (state & WLDSIsBranch) { WMColor *lineColor = ((state & WLDSSelected) ? scr->gray : scr->white); XDrawLine(display, d, WMColorGC(scr->darkGray), x + width - 11, y + 3, x + width - 6, y + height / 2); XDrawLine(display, d, WMColorGC(lineColor), x + width - 11, y + height - 5, x + width - 6, y + height / 2); XDrawLine(display, d, WMColorGC(scr->black), x + width - 12, y + 3, x + width - 12, y + height - 5); } } static void scrollCallback(WMWidget * scroller, void *self) { WMBrowser *bPtr = (WMBrowser *) self; WMScroller *sPtr = (WMScroller *) scroller; int newFirst; #define LAST_VISIBLE_COLUMN bPtr->firstVisibleColumn+bPtr->maxVisibleColumns switch (WMGetScrollerHitPart(sPtr)) { case WSDecrementLine: if (bPtr->firstVisibleColumn > 0) { scrollToColumn(bPtr, bPtr->firstVisibleColumn - 1, True); } break; case WSDecrementPage: case WSDecrementWheel: if (bPtr->firstVisibleColumn > 0) { newFirst = bPtr->firstVisibleColumn - bPtr->maxVisibleColumns; scrollToColumn(bPtr, newFirst, True); } break; case WSIncrementLine: if (LAST_VISIBLE_COLUMN < bPtr->usedColumnCount) { scrollToColumn(bPtr, bPtr->firstVisibleColumn + 1, True); } break; case WSIncrementPage: case WSIncrementWheel: 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, True); } break; case WSKnob: { double floatValue; double value = bPtr->columnCount - bPtr->maxVisibleColumns; floatValue = WMGetScrollerValue(bPtr->scroller); floatValue = (floatValue * value) / value; newFirst = rint(floatValue * (double)(bPtr->columnCount - bPtr->maxVisibleColumns)); if (bPtr->firstVisibleColumn != newFirst) scrollToColumn(bPtr, newFirst, False); /*else WMSetScrollerParameters(bPtr->scroller, floatValue, bPtr->maxVisibleColumns/(float)bPtr->columnCount); */ } break; case WSKnobSlot: case WSNoPart: /* do nothing */ break; } #undef LAST_VISIBLE_COLUMN } static void setupScroller(WMBrowser * bPtr) { WMScroller *sPtr; int y; y = bPtr->view->size.height - SCROLLER_WIDTH - 1; sPtr = WMCreateScroller(bPtr); WMSetScrollerAction(sPtr, scrollCallback, bPtr); WMMoveWidget(sPtr, 1, y); WMResizeWidget(sPtr, bPtr->view->size.width - 2, SCROLLER_WIDTH); bPtr->scroller = sPtr; WMMapWidget(sPtr); } void WMSetBrowserAction(WMBrowser * bPtr, WMAction * action, void *clientData) { bPtr->action = action; bPtr->clientData = clientData; } void WMSetBrowserDoubleAction(WMBrowser * bPtr, WMAction * action, void *clientData) { bPtr->doubleAction = action; bPtr->doubleClientData = clientData; } void WMSetBrowserHasScroller(WMBrowser * bPtr, int hasScroller) { bPtr->flags.hasScroller = hasScroller; } char *WMSetBrowserPath(WMBrowser * bPtr, char *path) { int i; char *str; char *tmp, *retPtr = NULL; int item; WMListItem *listItem; /* WMLoadBrowserColumnZero must be call first */ if (!bPtr->flags.loaded) { return False; } removeColumn(bPtr, 1); WMSelectListItem(bPtr->columns[0], -1); WMSetListPosition(bPtr->columns[0], 0); i = 0; str = wstrdup(path); tmp = strtok(str, bPtr->pathSeparator); while (tmp) { /* select it in the column */ item = WMFindRowOfListItemWithTitle(bPtr->columns[i], tmp); if (item < 0) { 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; } /* load next column */ WMAddBrowserColumn(bPtr); loadColumn(bPtr, i + 1); tmp = strtok(NULL, bPtr->pathSeparator); i++; } wfree(str); for (i = bPtr->usedColumnCount - 1; (i > -1) && !WMGetListSelectedItem(bPtr->columns[i]); i--) ; 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; } scrollToColumn(bPtr, bPtr->columnCount - bPtr->maxVisibleColumns, True); return retPtr; } char *WMGetBrowserPath(WMBrowser * bPtr) { return WMGetBrowserPathToColumn(bPtr, bPtr->columnCount); } char *WMGetBrowserPathToColumn(WMBrowser * bPtr, int column) { int i, size; char *path; size_t slen; WMListItem *item; 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++) { item = WMGetListSelectedItem(bPtr->columns[i]); if (!item) break; size += strlen(item->text); } /* get the path */ slen = size + (column + 1) * strlen(bPtr->pathSeparator) + 1; path = wmalloc(slen); /* ignore first `/' */ for (i = 0; i <= column; i++) { if (wstrlcat(path, bPtr->pathSeparator, slen) >= slen) goto error; item = WMGetListSelectedItem(bPtr->columns[i]); if (!item) break; if (wstrlcat(path, item->text, slen) >= slen) goto error; } return path; error: wfree(path); return NULL; } WMArray *WMGetBrowserPaths(WMBrowser * bPtr) { int column, i, k, size, selNo; char *path; size_t slen; WMListItem *item, *lastItem; WMArray *paths, *items; column = bPtr->usedColumnCount - 1; if (column < 0) { paths = WMCreateArrayWithDestructor(1, wfree); WMAddToArray(paths, wstrdup(bPtr->pathSeparator)); return paths; } items = WMGetListSelectedItems(bPtr->columns[column]); selNo = WMGetArrayItemCount(items); paths = WMCreateArrayWithDestructor(selNo, wfree); if (selNo <= 1) { WMAddToArray(paths, WMGetBrowserPath(bPtr)); return paths; } /* calculate size of buffer */ size = 0; for (i = 0; i < column; i++) { item = WMGetListSelectedItem(bPtr->columns[i]); if (!item) break; size += strlen(item->text); } size += (column + 1) * strlen(bPtr->pathSeparator) + 1; for (k = 0; k < selNo; k++) { /* get the path */ lastItem = WMGetFromArray(items, k); slen = size + (lastItem != NULL ? strlen(lastItem->text) : 0); path = wmalloc(slen); /* ignore first `/' */ for (i = 0; i <= column; i++) { wstrlcat(path, bPtr->pathSeparator, slen); if (i == column) { item = lastItem; } else { item = WMGetListSelectedItem(bPtr->columns[i]); } if (!item) break; wstrlcat(path, item->text, slen); } WMAddToArray(paths, path); } return paths; } Bool WMBrowserAllowsMultipleSelection(WMBrowser * bPtr) { return bPtr->flags.allowMultipleSelection; } Bool WMBrowserAllowsEmptySelection(WMBrowser * bPtr) { return bPtr->flags.allowEmptySelection; } static void loadColumn(WMBrowser * bPtr, int column) { assert(bPtr->delegate); assert(bPtr->delegate->createRowsForColumn); bPtr->flags.loadingColumn = 1; (*bPtr->delegate->createRowsForColumn) (bPtr->delegate, bPtr, column, bPtr->columns[column]); bPtr->flags.loadingColumn = 0; if (bPtr->delegate->titleOfColumn) { char *title; title = (*bPtr->delegate->titleOfColumn) (bPtr->delegate, bPtr, column); if (bPtr->titles[column]) wfree(bPtr->titles[column]); bPtr->titles[column] = wstrdup(title); if (COLUMN_IS_VISIBLE(bPtr, column) && bPtr->flags.isTitled) { drawTitleOfColumn(bPtr, column); } } } static void paintBrowser(WMBrowser * bPtr) { int i; if (!bPtr->view->flags.mapped) return; W_DrawRelief(bPtr->view->screen, bPtr->view->window, 0, bPtr->view->size.height - SCROLLER_WIDTH - 2, bPtr->view->size.width, 22, WRSunken); if (bPtr->flags.isTitled) { for (i = 0; i < bPtr->maxVisibleColumns; i++) { drawTitleOfColumn(bPtr, i + bPtr->firstVisibleColumn); } } } static void handleEvents(XEvent * event, void *data) { WMBrowser *bPtr = (WMBrowser *) data; CHECK_CLASS(data, WC_Browser); switch (event->type) { case Expose: paintBrowser(bPtr); break; case DestroyNotify: destroyBrowser(bPtr); break; } } static void scrollToColumn(WMBrowser * bPtr, int column, Bool updateScroller) { int i; int x; int notify = 0; if (column != bPtr->firstVisibleColumn) { notify = 1; } if (column < 0) column = 0; if (notify && bPtr->delegate && bPtr->delegate->willScroll) { (*bPtr->delegate->willScroll) (bPtr->delegate, bPtr); } x = 0; bPtr->firstVisibleColumn = column; for (i = 0; i < bPtr->columnCount; i++) { if (COLUMN_IS_VISIBLE(bPtr, i)) { WMMoveWidget(bPtr->columns[i], x, WMWidgetView(bPtr->columns[i])->pos.y); if (!WMWidgetView(bPtr->columns[i])->flags.realized) WMRealizeWidget(bPtr->columns[i]); WMMapWidget(bPtr->columns[i]); x += bPtr->columnSize.width + COLUMN_SPACING; } else { WMUnmapWidget(bPtr->columns[i]); } } /* update the scroller */ 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); } } if (bPtr->view->flags.mapped) paintBrowser(bPtr); if (notify && bPtr->delegate && bPtr->delegate->didScroll) { (*bPtr->delegate->didScroll) (bPtr->delegate, bPtr); } } static void listCallback(void *self, void *clientData) { WMBrowser *bPtr = (WMBrowser *) clientData; WMList *lPtr = (WMList *) self; WMListItem *item; int i, selNo; static WMListItem *oldItem = NULL; static int oldSelNo = 0; item = WMGetListSelectedItem(lPtr); selNo = WMGetArrayItemCount(WMGetListSelectedItems(lPtr)); if (oldItem == NULL || oldItem != item || oldSelNo != selNo) { for (i = 0; i < bPtr->columnCount; i++) { if (lPtr == bPtr->columns[i]) break; } assert(i < bPtr->columnCount); bPtr->selectedColumn = i; /* columns at right must be cleared */ removeColumn(bPtr, i + 1); /* open directory */ if (item && item->isBranch && selNo == 1) { WMAddBrowserColumn(bPtr); } if (bPtr->usedColumnCount < bPtr->maxVisibleColumns) i = 0; else i = bPtr->usedColumnCount - bPtr->maxVisibleColumns; scrollToColumn(bPtr, i, True); if (item && item->isBranch && selNo == 1) { loadColumn(bPtr, bPtr->usedColumnCount - 1); } } /* call callback for click */ if (bPtr->action) (*bPtr->action) (bPtr, bPtr->clientData); oldItem = item; oldSelNo = selNo; } 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); } void WMLoadBrowserColumnZero(WMBrowser * bPtr) { if (!bPtr->flags.loaded) { /* create column 0 */ WMAddBrowserColumn(bPtr); loadColumn(bPtr, 0); /* make column 0 visible */ scrollToColumn(bPtr, 0, True); bPtr->flags.loaded = 1; } } 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, True); else scrollToColumn(bPtr, bPtr->usedColumnCount - bPtr->maxVisibleColumns, True); WMRemoveListItem(list, row); } static void listSelectionObserver(void *observerData, WMNotification * notification) { WMBrowser *bPtr = (WMBrowser *) observerData; int column; WMList *lPtr = (WMList *) WMGetNotificationObject(notification); for (column = 0; column < bPtr->usedColumnCount; 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 (WMGetArrayItemCount(WMGetListSelectedItems(lPtr)) == 0) column--; bPtr->selectedColumn = column; } int WMAddBrowserColumn(WMBrowser * bPtr) { WMList *list; WMList **clist; char **tlist; int colY; int index; if (bPtr->usedColumnCount < bPtr->columnCount) { return bPtr->usedColumnCount++; } bPtr->usedColumnCount++; if (bPtr->flags.isTitled) { colY = TITLE_SPACING + bPtr->titleHeight; } else { colY = 0; } index = bPtr->columnCount; bPtr->columnCount++; clist = wmalloc(sizeof(WMList *) * bPtr->columnCount); tlist = wmalloc(sizeof(char *) * bPtr->columnCount); memcpy(clist, bPtr->columns, sizeof(WMList *) * (bPtr->columnCount - 1)); memcpy(tlist, bPtr->titles, sizeof(char *) * (bPtr->columnCount - 1)); if (bPtr->columns) wfree(bPtr->columns); if (bPtr->titles) wfree(bPtr->titles); bPtr->columns = clist; bPtr->titles = tlist; bPtr->titles[index] = NULL; list = WMCreateList(bPtr); WMSetListAllowMultipleSelection(list, bPtr->flags.allowMultipleSelection); WMSetListAllowEmptySelection(list, bPtr->flags.allowEmptySelection); 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); WMMoveWidget(list, (bPtr->columnSize.width + COLUMN_SPACING) * index, colY); if (COLUMN_IS_VISIBLE(bPtr, index)) WMMapWidget(list); /* update the scroller */ 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); } return index; } static void destroyBrowser(WMBrowser * bPtr) { int i; for (i = 0; i < bPtr->columnCount; i++) { if (bPtr->titles[i]) wfree(bPtr->titles[i]); } wfree(bPtr->titles); wfree(bPtr->pathSeparator); WMRemoveNotificationObserver(bPtr); wfree(bPtr); } static char *createTruncatedString(WMFont * font, const char *text, int *textLen, int width) { size_t slen; int dLen; char *textBuf; dLen = WMWidthOfString(font, ".", 1); slen = *textLen + 4; textBuf = wmalloc(slen); if (width >= 3 * dLen) { int tmpTextLen = *textLen; if (wstrlcpy(textBuf, text, slen) >= slen) goto error; while (tmpTextLen && (WMWidthOfString(font, textBuf, tmpTextLen) + 3 * dLen > width)) tmpTextLen--; if (wstrlcpy(textBuf + tmpTextLen, "...", slen) >= slen) goto error; *textLen = tmpTextLen + 3; } else if (width >= 2 * dLen) { if (wstrlcpy(textBuf, "..", slen) >= slen) goto error; *textLen = 2; } else if (width >= dLen) { if (wstrlcpy(textBuf, ".", slen) >= slen) goto error; *textLen = 1; } else { *textBuf = '\0'; *textLen = 0; } return textBuf; error: wfree(textBuf); return NULL; } ��������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/wconfig.h������������������������������������������������������������������0000644�0001750�0001750�00000002013�13431646201�013516� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* wconfig.h * * Copyright (c) 2001 Dan Pascu * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef WINGS_CONFIG_H_ #define WINGS_CONFIG_H_ #include "../config.h" #if defined(HAVE_LIBINTL_H) && defined(I18N) # include <libintl.h> # define _(text) dgettext("WINGs", text) #else # define _(text) (text) #endif #endif /* WINGS_CONFIG_H_ */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/wcolorwell.c���������������������������������������������������������������0000644�0001750�0001750�00000023751�13431646201�014262� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include "WINGsP.h" #define XDND_COLOR_DATA_TYPE "application/X-color" char *WMColorWellDidChangeNotification = "WMColorWellDidChangeNotification"; typedef struct W_ColorWell { W_Class widgetClass; WMView *view; WMView *colorView; WMColor *color; WMAction *action; void *clientData; WMPoint ipoint; struct { unsigned int active:1; unsigned int bordered:1; } flags; WMArray *xdndTypes; } ColorWell; static char *_ColorWellActivatedNotification = "_ColorWellActivatedNotification"; static void destroyColorWell(ColorWell * cPtr); static void paintColorWell(ColorWell * cPtr); static void handleEvents(XEvent * event, void *data); static void handleDragEvents(XEvent * event, void *data); static void handleActionEvents(XEvent * event, void *data); static void willResizeColorWell(W_ViewDelegate * self, WMView * view, unsigned int *width, unsigned int *height); W_ViewDelegate _ColorWellViewDelegate = { NULL, NULL, NULL, NULL, willResizeColorWell }; static WMArray *dropDataTypes(WMView * self); static WMDragOperationType wantedDropOperation(WMView * self); static Bool acceptDropOperation(WMView * self, WMDragOperationType operation); static WMData *fetchDragData(WMView * self, char *type); static WMDragSourceProcs _DragSourceProcs = { dropDataTypes, wantedDropOperation, NULL, acceptDropOperation, NULL, NULL, fetchDragData }; static WMArray *requiredDataTypes(WMView * self, WMDragOperationType requestedOperation, WMArray * sourceDataTypes); static WMDragOperationType allowedOperation(WMView * self, WMDragOperationType requestedOperation, WMArray * sourceDataTypes); static void performDragOperation(WMView * self, WMArray * dropDatas, WMArray * operationsList, WMPoint * dropLocation); static WMDragDestinationProcs _DragDestinationProcs = { NULL, requiredDataTypes, allowedOperation, NULL, performDragOperation, NULL }; #define DEFAULT_WIDTH 60 #define DEFAULT_HEIGHT 30 #define MIN_WIDTH 16 #define MIN_HEIGHT 8 static void colorChangedObserver(void *data, WMNotification * notification) { WMColorPanel *panel = (WMColorPanel *) WMGetNotificationObject(notification); WMColorWell *cPtr = (WMColorWell *) data; WMColor *color; if (!cPtr->flags.active) return; color = WMGetColorPanelColor(panel); WMSetColorWellColor(cPtr, color); WMPostNotificationName(WMColorWellDidChangeNotification, cPtr, NULL); } static void updateColorCallback(void *self, void *data) { WMColorPanel *panel = (WMColorPanel *) self; WMColorWell *cPtr = (ColorWell *) data; WMColor *color; color = WMGetColorPanelColor(panel); WMSetColorWellColor(cPtr, color); WMPostNotificationName(WMColorWellDidChangeNotification, cPtr, NULL); } static WMArray *getXdndTypeArray(void) { WMArray *types = WMCreateArray(1); WMAddToArray(types, XDND_COLOR_DATA_TYPE); return types; } WMColorWell *WMCreateColorWell(WMWidget * parent) { ColorWell *cPtr; cPtr = wmalloc(sizeof(ColorWell)); cPtr->widgetClass = WC_ColorWell; cPtr->view = W_CreateView(W_VIEW(parent)); if (!cPtr->view) { wfree(cPtr); return NULL; } cPtr->view->self = cPtr; cPtr->view->delegate = &_ColorWellViewDelegate; cPtr->colorView = W_CreateView(cPtr->view); if (!cPtr->colorView) { W_DestroyView(cPtr->view); wfree(cPtr); return NULL; } cPtr->colorView->self = cPtr; WMCreateEventHandler(cPtr->view, ExposureMask | StructureNotifyMask | ClientMessageMask, handleEvents, cPtr); WMCreateEventHandler(cPtr->colorView, ExposureMask, handleEvents, cPtr); WMCreateDragHandler(cPtr->colorView, handleDragEvents, cPtr); WMCreateEventHandler(cPtr->view, ButtonPressMask, handleActionEvents, cPtr); WMCreateEventHandler(cPtr->colorView, ButtonPressMask, handleActionEvents, cPtr); cPtr->colorView->flags.mapWhenRealized = 1; cPtr->flags.bordered = 1; W_ResizeView(cPtr->view, DEFAULT_WIDTH, DEFAULT_HEIGHT); cPtr->color = WMBlackColor(WMWidgetScreen(cPtr)); WMAddNotificationObserver(colorChangedObserver, cPtr, WMColorPanelColorChangedNotification, NULL); WMSetViewDragSourceProcs(cPtr->colorView, &_DragSourceProcs); WMSetViewDragDestinationProcs(cPtr->colorView, &_DragDestinationProcs); cPtr->xdndTypes = getXdndTypeArray(); WMRegisterViewForDraggedTypes(cPtr->colorView, cPtr->xdndTypes); return cPtr; } void WMSetColorWellColor(WMColorWell * cPtr, WMColor * color) { if (cPtr->color) WMReleaseColor(cPtr->color); cPtr->color = WMRetainColor(color); if (cPtr->colorView->flags.realized && cPtr->colorView->flags.mapped) paintColorWell(cPtr); } WMColor *WMGetColorWellColor(WMColorWell * cPtr) { return cPtr->color; } void WSetColorWellBordered(WMColorWell * cPtr, Bool flag) { flag = ((flag == 0) ? 0 : 1); if (cPtr->flags.bordered != flag) { cPtr->flags.bordered = flag; W_ResizeView(cPtr->view, cPtr->view->size.width, cPtr->view->size.height); } } static void willResizeColorWell(W_ViewDelegate * self, WMView * view, unsigned int *width, unsigned int *height) { WMColorWell *cPtr = (WMColorWell *) view->self; int bw; /* Parameter not used, but tell the compiler that it is ok */ (void) self; if (cPtr->flags.bordered) { if (*width < MIN_WIDTH) *width = MIN_WIDTH; if (*height < MIN_HEIGHT) *height = MIN_HEIGHT; bw = (int)((float)WMIN(*width, *height) * 0.24F); W_ResizeView(cPtr->colorView, *width - 2 * bw, *height - 2 * bw); if (cPtr->colorView->pos.x != bw || cPtr->colorView->pos.y != bw) W_MoveView(cPtr->colorView, bw, bw); } else { W_ResizeView(cPtr->colorView, *width, *height); W_MoveView(cPtr->colorView, 0, 0); } } static void paintColorWell(ColorWell * cPtr) { W_Screen *scr = cPtr->view->screen; W_DrawRelief(scr, cPtr->view->window, 0, 0, cPtr->view->size.width, cPtr->view->size.height, WRRaised); W_DrawRelief(scr, cPtr->colorView->window, 0, 0, cPtr->colorView->size.width, cPtr->colorView->size.height, WRSunken); if (cPtr->color) WMPaintColorSwatch(cPtr->color, cPtr->colorView->window, 2, 2, cPtr->colorView->size.width - 4, cPtr->colorView->size.height - 4); } static void handleEvents(XEvent * event, void *data) { ColorWell *cPtr = (ColorWell *) data; CHECK_CLASS(data, WC_ColorWell); switch (event->type) { case Expose: if (event->xexpose.count != 0) break; paintColorWell(cPtr); break; case DestroyNotify: destroyColorWell(cPtr); break; } } static WMArray *dropDataTypes(WMView * self) { return ((ColorWell *) self->self)->xdndTypes; } static WMDragOperationType wantedDropOperation(WMView * self) { /* Parameter not used, but tell the compiler that it is ok */ (void) self; return WDOperationCopy; } static Bool acceptDropOperation(WMView * self, WMDragOperationType operation) { /* Parameter not used, but tell the compiler that it is ok */ (void) self; return (operation == WDOperationCopy); } static WMData *fetchDragData(WMView * self, char *type) { char *color = WMGetColorRGBDescription(((WMColorWell *) self->self)->color); WMData *data; /* Parameter not used, but tell the compiler that it is ok */ (void) type; data = WMCreateDataWithBytes(color, strlen(color) + 1); wfree(color); return data; } static WMPixmap *makeDragPixmap(WMColorWell * cPtr) { WMScreen *scr = cPtr->view->screen; Pixmap pix; pix = XCreatePixmap(scr->display, W_DRAWABLE(scr), 16, 16, scr->depth); XFillRectangle(scr->display, pix, WMColorGC(cPtr->color), 0, 0, 15, 15); XDrawRectangle(scr->display, pix, WMColorGC(scr->black), 0, 0, 15, 15); return WMCreatePixmapFromXPixmaps(scr, pix, None, 16, 16, scr->depth); } static void handleDragEvents(XEvent * event, void *data) { WMColorWell *cPtr = (ColorWell *) data; if (event->type == ButtonPress && event->xbutton.button == Button1) { /* initialise drag icon */ WMSetViewDragImage(cPtr->colorView, makeDragPixmap(cPtr)); } WMDragImageFromView(cPtr->colorView, event); } static void handleActionEvents(XEvent * event, void *data) { WMColorWell *cPtr = (ColorWell *) data; WMScreen *scr = WMWidgetScreen(cPtr); WMColorPanel *cpanel; /* Parameter not used, but tell the compiler that it is ok */ (void) event; if (cPtr->flags.active) W_SetViewBackgroundColor(cPtr->view, scr->gray); else W_SetViewBackgroundColor(cPtr->view, scr->white); paintColorWell(cPtr); cPtr->flags.active ^= 1; if (cPtr->flags.active) { WMPostNotificationName(_ColorWellActivatedNotification, cPtr, NULL); } cpanel = WMGetColorPanel(scr); WMSetColorPanelAction(cpanel, updateColorCallback, cPtr); if (cPtr->color) WMSetColorPanelColor(cpanel, cPtr->color); WMShowColorPanel(cpanel); } static void destroyColorWell(ColorWell * cPtr) { WMRemoveNotificationObserver(cPtr); if (cPtr->color) WMReleaseColor(cPtr->color); WMFreeArray(cPtr->xdndTypes); wfree(cPtr); } static Bool dropIsOk(WMDragOperationType request, WMArray * sourceDataTypes) { WMArrayIterator iter; char *type; if (request == WDOperationCopy) { WM_ITERATE_ARRAY(sourceDataTypes, type, iter) { if (type != NULL && strcmp(type, XDND_COLOR_DATA_TYPE) == 0) { return True; } } } return False; } static WMArray *requiredDataTypes(WMView * self, WMDragOperationType request, WMArray * sourceDataTypes) { if (dropIsOk(request, sourceDataTypes)) return ((ColorWell *) self->self)->xdndTypes; else return NULL; } static WMDragOperationType allowedOperation(WMView * self, WMDragOperationType request, WMArray * sourceDataTypes) { /* Parameter not used, but tell the compiler that it is ok */ (void) self; if (dropIsOk(request, sourceDataTypes)) return WDOperationCopy; else return WDOperationNone; } static void performDragOperation(WMView * self, WMArray * dropData, WMArray * operations, WMPoint * dropLocation) { char *colorName; WMColor *color; WMData *data; /* Parameter not used, but tell the compiler that it is ok */ (void) operations; (void) dropLocation; /* only one operation requested (WDOperationCopy) implies only one data */ data = (WMData *) WMGetFromArray(dropData, 0); if (data != NULL) { colorName = (char *)WMDataBytes(data); color = WMCreateNamedColor(W_VIEW_SCREEN(self), colorName, True); WMSetColorWellColor(self->self, color); WMReleaseColor(color); } } �����������������������WindowMaker-0.95.9/WINGs/dragcommon.c���������������������������������������������������������������0000644�0001750�0001750�00000014074�13431646201�014215� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "wconfig.h" #include "WINGsP.h" #define XDND_SOURCE_VERSION(dragInfo) dragInfo->protocolVersion #define XDND_DEST_INFO(dragInfo) dragInfo->destInfo #define XDND_DEST_VIEW(dragInfo) dragInfo->destInfo->destView static Bool _WindowExists; Atom W_OperationToAction(WMScreen * scr, WMDragOperationType operation) { switch (operation) { case WDOperationNone: return None; case WDOperationCopy: return scr->xdndActionCopy; case WDOperationMove: return scr->xdndActionMove; case WDOperationLink: return scr->xdndActionLink; case WDOperationAsk: return scr->xdndActionAsk; case WDOperationPrivate: return scr->xdndActionPrivate; default: return None; } } WMDragOperationType W_ActionToOperation(WMScreen * scr, Atom action) { if (action == scr->xdndActionCopy) { return WDOperationCopy; } else if (action == scr->xdndActionMove) { return WDOperationMove; } else if (action == scr->xdndActionLink) { return WDOperationLink; } else if (action == scr->xdndActionAsk) { return WDOperationAsk; } else if (action == scr->xdndActionPrivate) { return WDOperationPrivate; } else if (action == None) { return WDOperationNone; } else { char *tmp = XGetAtomName(scr->display, action); wwarning(_("unknown XDND action %s"), tmp); XFree(tmp); return WDOperationCopy; } } static void freeDragOperationItem(void *item) { wfree(item); } WMArray *WMCreateDragOperationArray(int initialSize) { return WMCreateArrayWithDestructor(initialSize, freeDragOperationItem); } WMDragOperationItem *WMCreateDragOperationItem(WMDragOperationType type, char *text) { W_DragOperationItem *result = wmalloc(sizeof(W_DragOperationItem)); result->type = type; result->text = text; return (WMDragOperationItem *) result; } WMDragOperationType WMGetDragOperationItemType(WMDragOperationItem * item) { return ((W_DragOperationItem *) item)->type; } char *WMGetDragOperationItemText(WMDragOperationItem * item) { return ((W_DragOperationItem *) item)->text; } static int handleNoWindowXError(Display * dpy, XErrorEvent * errEvt) { /* Parameter not used, but tell the compiler that it is ok */ (void) dpy; if (errEvt->error_code == BadWindow || errEvt->error_code == BadDrawable) { _WindowExists = False; return Success; } return errEvt->error_code; } static Bool windowExists(Display * dpy, Window win) { void *previousErrorHandler; XWindowAttributes attr; XSynchronize(dpy, True); previousErrorHandler = XSetErrorHandler(handleNoWindowXError); _WindowExists = True; /* can generate BadDrawable or BadWindow */ XGetWindowAttributes(dpy, win, &attr); XSetErrorHandler(previousErrorHandler); XSynchronize(dpy, False); return _WindowExists; } Bool W_SendDnDClientMessage(Display * dpy, Window win, Atom message, unsigned long data0, unsigned long data1, unsigned long data2, unsigned long data3, unsigned long data4) { XEvent ev; #ifdef XDND_DEBUG char *msgName = XGetAtomName(dpy, message); printf("sending message %s ... ", msgName); XFree(msgName); #endif if (!windowExists(dpy, win)) { wwarning(_("target %lu for XDND message no longer exists"), win); return False; /* message not sent */ } ev.type = ClientMessage; ev.xclient.message_type = message; ev.xclient.format = 32; ev.xclient.window = win; ev.xclient.data.l[0] = data0; ev.xclient.data.l[1] = data1; ev.xclient.data.l[2] = data2; ev.xclient.data.l[3] = data3; ev.xclient.data.l[4] = data4; XSendEvent(dpy, win, False, 0, &ev); XFlush(dpy); #ifdef XDND_DEBUG printf("sent\n"); #endif return True; /* message sent */ } static void handleLeaveMessage(WMDraggingInfo * info) { if (XDND_DEST_INFO(info) != NULL) { /* XDND_DEST_VIEW is never NULL (it's the xdnd aware view) */ wassertr(XDND_DEST_VIEW(info) != NULL); if (XDND_DEST_VIEW(info)->dragDestinationProcs != NULL) { XDND_DEST_VIEW(info)->dragDestinationProcs->concludeDragOperation(XDND_DEST_VIEW(info)); } W_DragDestinationInfoClear(info); } } void W_HandleDNDClientMessage(WMView * toplevel, XClientMessageEvent * event) { WMScreen *scr = W_VIEW_SCREEN(toplevel); WMDraggingInfo *info = &scr->dragInfo; Atom messageType = event->message_type; #ifdef XDND_DEBUG { char *msgTypeName = XGetAtomName(scr->display, messageType); if (msgTypeName != NULL) printf("event type = %s\n", msgTypeName); else printf("pb with event type !\n"); } #endif /* Messages from destination to source */ if (messageType == scr->xdndStatusAtom || messageType == scr->xdndFinishedAtom) { W_DragSourceStopTimer(); W_DragSourceStateHandler(info, event); return; } /* Messages from source to destination */ if (messageType == scr->xdndEnterAtom) { Bool positionSent = (XDND_DEST_INFO(info) != NULL); W_DragDestinationStopTimer(); W_DragDestinationStoreEnterMsgInfo(info, toplevel, event); /* Xdnd version 3 and up are not compatible with version 1 or 2 */ if (XDND_SOURCE_VERSION(info) > 2) { if (positionSent) { /* xdndPosition previously received on xdnd aware view */ W_DragDestinationStateHandler(info, event); return; } else { W_DragDestinationStartTimer(info); return; } } else { wwarning(_("unsupported version %i for XDND enter message"), XDND_SOURCE_VERSION(info)); W_DragDestinationCancelDropOnEnter(toplevel, info); return; } } if (messageType == scr->xdndPositionAtom) { W_DragDestinationStopTimer(); W_DragDestinationStorePositionMsgInfo(info, toplevel, event); W_DragDestinationStateHandler(info, event); return; } if (messageType == scr->xdndSelectionAtom || messageType == scr->xdndDropAtom) { W_DragDestinationStopTimer(); W_DragDestinationStateHandler(info, event); return; } if (messageType == scr->xdndLeaveAtom) { /* conclude drop operation, and clear dragging info */ W_DragDestinationStopTimer(); handleLeaveMessage(info); } } /* called in destroyView (wview.c) */ void W_FreeViewXdndPart(WMView * view) { WMUnregisterViewDraggedTypes(view); if (view->dragSourceProcs) wfree(view->dragSourceProcs); if (view->dragDestinationProcs) wfree(view->dragDestinationProcs); if (view->dragImage) WMReleasePixmap(view->dragImage); } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/TODO�����������������������������������������������������������������������0000644�0001750�0001750�00000001203�13431646201�012401� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������- move paint to idle handlers - check if its useful to add some WMBrowserSelectionDidChangeNotification (actually a pass-through for WMListSelectionDidChangeNotification). Or a delegate to be called when the list selection change. - add some way to modify speed when scrolling WMList, depending on how far the mouse is moved outside of the list. - clean up header files of declared but not implemented anywhere functions - implement a generic WMChangeFontAttribute(WMFont *font, enum attributes) function - optimize color allocation for repeated colors - make it work in 8bpp - optimize SystemFont allocation for repeated font sizes ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/wtabview.c�����������������������������������������������������������������0000644�0001750�0001750�00000051770�13431646201�013723� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include "WINGsP.h" typedef struct W_TabView { W_Class widgetClass; W_View *view; struct W_TabViewItem **items; int itemCount; int maxItems; /* size of items array, can be increased */ int selectedItem; int firstVisible; int visibleTabs; WMFont *font; WMColor *lightGray; WMColor *tabColor; WMTabViewDelegate *delegate; short tabHeight; struct { WMReliefType relief:4; WMTitlePosition titlePosition:4; WMTabViewType type:2; unsigned enabled:1; unsigned tabbed:1; unsigned dontFitAll:1; unsigned bordered:1; unsigned uniformTabs:1; } flags; } TabView; typedef struct W_TabViewItem { WMTabView *tabView; W_View *view; char *label; short tabWidth; int identifier; struct { unsigned visible:1; unsigned enabled:1; } flags; } W_TabViewItem; #define DEFAULT_WIDTH 40 #define DEFAULT_HEIGHT 40 #define NORMAL_SIDE_OFFSET 8 #define BUTTONED_SIDE_OFFSET 15 static void destroyTabView(TabView * tPtr); static void paintTabView(TabView * tPtr); static void W_SetTabViewItemParent(WMTabViewItem * item, WMTabView * parent); static void W_DrawLabel(WMTabViewItem * item, Drawable d, WMRect rect, Bool enabled); static void W_UnmapTabViewItem(WMTabViewItem * item); static void W_MapTabViewItem(WMTabViewItem * item); static WMView *W_TabViewItemView(WMTabViewItem * item); static int W_TabViewItemTabWidth(WMTabViewItem * item); static void W_SetTabViewItemTabWidth(WMTabViewItem * item, int width); static void recalcTabWidth(TabView * tPtr); static void rearrange(TabView * tPtr); static void didResize(struct W_ViewDelegate *, WMView *); static W_ViewDelegate delegate = { NULL, NULL, didResize, NULL, NULL }; static int positionOfTab(WMTabView * tabView, int tab) { int i; int offs; if (tab < 0 || tab < tabView->firstVisible) return -1; if (tab > tabView->firstVisible + tabView->visibleTabs) return -1; if (tabView->flags.dontFitAll) offs = BUTTONED_SIDE_OFFSET; else offs = NORMAL_SIDE_OFFSET; for (i = tabView->firstVisible; i < tab; i++) offs += W_TabViewItemTabWidth(tabView->items[i]) - 10; return offs; } static int countVisibleTabs(TabView * tPtr, int first) { int i; int width; if (first < 0) { width = W_VIEW_WIDTH(tPtr->view) - 2 * NORMAL_SIDE_OFFSET; first = 0; } else { width = W_VIEW_WIDTH(tPtr->view) - 2 * BUTTONED_SIDE_OFFSET; } for (i = first; i < tPtr->itemCount; i++) { width -= W_TabViewItemTabWidth(tPtr->items[i]) - 10; if (width <= 0) { return i - first; } } return i - first; } static void handleEvents(XEvent * event, void *data) { TabView *tPtr = (TabView *) data; CHECK_CLASS(data, WC_TabView); switch (event->type) { case Expose: if (event->xexpose.count != 0) break; paintTabView(tPtr); break; case ButtonPress: if (tPtr->flags.enabled) { WMTabViewItem *item = WMTabViewItemAtPoint(tPtr, event->xbutton.x, event->xbutton.y); /*if (item && !item->flags.enabled) break; */ if (item && item->flags.enabled) { WMSelectTabViewItem(tPtr, item); } else if (tPtr->flags.dontFitAll) { int redraw = 0; int lastVisible = tPtr->firstVisible + tPtr->visibleTabs - 1; if (event->xbutton.x < BUTTONED_SIDE_OFFSET) { if (tPtr->firstVisible > 0) { redraw = 1; tPtr->firstVisible--; } } else if (event->xbutton.x > positionOfTab(tPtr, lastVisible)) { if (lastVisible < tPtr->itemCount - 1) { redraw = 1; tPtr->firstVisible++; } } tPtr->visibleTabs = countVisibleTabs(tPtr, tPtr->firstVisible); if (redraw) { paintTabView(tPtr); } } } break; case DestroyNotify: destroyTabView(tPtr); break; } } WMTabView *WMCreateTabView(WMWidget * parent) { TabView *tPtr; WMScreen *scr = WMWidgetScreen(parent); tPtr = wmalloc(sizeof(TabView)); tPtr->widgetClass = WC_TabView; tPtr->view = W_CreateView(W_VIEW(parent)); if (!tPtr->view) { wfree(tPtr); return NULL; } tPtr->view->self = tPtr; tPtr->view->delegate = &delegate; tPtr->lightGray = WMCreateRGBColor(scr, 0xd9d9, 0xd9d9, 0xd9d9, False); tPtr->tabColor = WMCreateRGBColor(scr, 0x8420, 0x8420, 0x8420, False); tPtr->font = WMRetainFont(scr->normalFont); tPtr->flags.type = WTTopTabsBevelBorder; tPtr->flags.bordered = 1; tPtr->flags.uniformTabs = 0; tPtr->flags.enabled = 1; WMCreateEventHandler(tPtr->view, ExposureMask | StructureNotifyMask | ButtonPressMask, handleEvents, tPtr); WMResizeWidget(tPtr, DEFAULT_WIDTH, DEFAULT_HEIGHT); tPtr->tabHeight = WMFontHeight(tPtr->font) + 3; return tPtr; } void WMSetTabViewDelegate(WMTabView * tPtr, WMTabViewDelegate * delegate) { tPtr->delegate = delegate; } WMTabViewItem *WMAddTabViewItemWithView(WMTabView * tPtr, WMView * view, int identifier, const char *label) { WMTabViewItem *item; item = WMCreateTabViewItemWithIdentifier(identifier); WMSetTabViewItemView(item, view); WMAddItemInTabView(tPtr, item); WMSetTabViewItemLabel(item, label); return item; } void WMAddItemInTabView(WMTabView * tPtr, WMTabViewItem * item) { WMInsertItemInTabView(tPtr, tPtr->itemCount, item); } void WMSetTabViewEnabled(WMTabView * tPtr, Bool flag) { tPtr->flags.enabled = ((flag == 0) ? 0 : 1); if (W_VIEW_REALIZED(tPtr->view)) paintTabView(tPtr); } void WMInsertItemInTabView(WMTabView * tPtr, int index, WMTabViewItem * item) { wassertr(W_TabViewItemView(item) != NULL); if (tPtr->maxItems == tPtr->itemCount) { WMTabViewItem **items; items = wrealloc(tPtr->items, sizeof(WMTabViewItem *) * (tPtr->maxItems + 10)); memset(&items[tPtr->maxItems], 0, sizeof(WMTabViewItem *) * 10); /* XXX */ tPtr->items = items; tPtr->maxItems += 10; } if (index > tPtr->itemCount) index = tPtr->itemCount; if (index == 0 && tPtr->items[0]) { W_UnmapTabViewItem(tPtr->items[0]); } if (index < tPtr->itemCount) { memmove(tPtr->items + index + 1, tPtr->items + index, (tPtr->itemCount - index) * sizeof(WMTabViewItem *)); } tPtr->items[index] = item; tPtr->itemCount++; recalcTabWidth(tPtr); W_SetTabViewItemParent(item, tPtr); W_UnmapTabViewItem(item); if (tPtr->flags.bordered) { W_ReparentView(W_TabViewItemView(item), tPtr->view, 1, tPtr->tabHeight + 1); W_ResizeView(W_TabViewItemView(item), tPtr->view->size.width - 3, tPtr->view->size.height - tPtr->tabHeight - 3); } else { W_ReparentView(W_TabViewItemView(item), tPtr->view, 0, tPtr->tabHeight); W_ResizeView(W_TabViewItemView(item), tPtr->view->size.width, tPtr->view->size.height - tPtr->tabHeight); } if (index == 0) { W_MapTabViewItem(item); } if (tPtr->delegate && tPtr->delegate->didChangeNumberOfItems) (*tPtr->delegate->didChangeNumberOfItems) (tPtr->delegate, tPtr); if (W_VIEW_REALIZED(tPtr->view)) paintTabView(tPtr); } void WMRemoveTabViewItem(WMTabView * tPtr, WMTabViewItem * item) { int i; for (i = 0; i < tPtr->itemCount; i++) { if (tPtr->items[i] == item) { if (i < tPtr->itemCount - 1) memmove(&tPtr->items[i], &tPtr->items[i + 1], tPtr->itemCount - i - 1); else tPtr->items[i] = NULL; W_SetTabViewItemParent(item, NULL); tPtr->itemCount--; break; } } if (tPtr->delegate && tPtr->delegate->didChangeNumberOfItems) (*tPtr->delegate->didChangeNumberOfItems) (tPtr->delegate, tPtr); } static Bool isInside(int x, int y, int width, int height, int px, int py) { if (py >= y + height - 3 && py <= y + height && px >= x + py - (y + height - 3) && px <= x + width - (py - (y + height - 3))) { return True; } if (py >= y + 3 && py < y + height - 3 && px >= x + 3 + ((y + 3) - py) * 3 / 7 && px <= x + width - 3 - ((y + 3) - py) * 3 / 7) { return True; } if (py >= y && py < y + 3 && px >= x + 7 + py - y && px <= x + width - 7 - (py - y)) { return True; } return False; } WMTabViewItem *WMTabViewItemAtPoint(WMTabView * tPtr, int x, int y) { int i; int count = tPtr->visibleTabs; int first = tPtr->firstVisible; if (tPtr->flags.dontFitAll) { i = tPtr->selectedItem - tPtr->firstVisible; if (i >= 0 && i < tPtr->visibleTabs && isInside(positionOfTab(tPtr, tPtr->selectedItem), 0, W_TabViewItemTabWidth(tPtr->items[tPtr->selectedItem]), tPtr->tabHeight, x, y)) { return tPtr->items[tPtr->selectedItem]; } } else { i = tPtr->selectedItem; if (isInside(positionOfTab(tPtr, i), 0, W_TabViewItemTabWidth(tPtr->items[i]), tPtr->tabHeight, x, y)) { return tPtr->items[i]; } } for (i = first; i < first + count; i++) { int pos; pos = positionOfTab(tPtr, i); if (isInside(pos, 0, W_TabViewItemTabWidth(tPtr->items[i]), tPtr->tabHeight, x, y)) { return tPtr->items[i]; } } return NULL; } void WMSetTabViewType(WMTabView * tPtr, WMTabViewType type) { tPtr->flags.type = type; if (type != WTTopTabsBevelBorder) tPtr->tabHeight = 0; else tPtr->tabHeight = WMFontHeight(tPtr->font) + 3; if (type == WTNoTabsNoBorder) tPtr->flags.bordered = 0; else tPtr->flags.bordered = 1; rearrange(tPtr); } void WMSelectFirstTabViewItem(WMTabView * tPtr) { WMSelectTabViewItemAtIndex(tPtr, 0); } void WMSelectLastTabViewItem(WMTabView * tPtr) { WMSelectTabViewItemAtIndex(tPtr, tPtr->itemCount); } void WMSelectNextTabViewItem(WMTabView * tPtr) { WMSelectTabViewItemAtIndex(tPtr, tPtr->selectedItem + 1); } void WMSelectPreviousTabViewItem(WMTabView * tPtr) { WMSelectTabViewItemAtIndex(tPtr, tPtr->selectedItem - 1); } WMTabViewItem *WMGetSelectedTabViewItem(WMTabView * tPtr) { return tPtr->items[tPtr->selectedItem]; } void WMSelectTabViewItem(WMTabView * tPtr, WMTabViewItem * item) { int i; for (i = 0; i < tPtr->itemCount; i++) { if (tPtr->items[i] == item) { WMSelectTabViewItemAtIndex(tPtr, i); break; } } } void WMSelectTabViewItemAtIndex(WMTabView * tPtr, int index) { WMTabViewItem *item; if (index == tPtr->selectedItem) { return; } if (index < 0) index = 0; else if (index >= tPtr->itemCount) index = tPtr->itemCount - 1; item = tPtr->items[tPtr->selectedItem]; if (tPtr->delegate && tPtr->delegate->shouldSelectItem) if (!(*tPtr->delegate->shouldSelectItem) (tPtr->delegate, tPtr, tPtr->items[index])) return; if (tPtr->delegate && tPtr->delegate->willSelectItem) (*tPtr->delegate->willSelectItem) (tPtr->delegate, tPtr, tPtr->items[index]); W_UnmapTabViewItem(item); item = tPtr->items[index]; W_MapTabViewItem(item); tPtr->selectedItem = index; if (tPtr->delegate && tPtr->delegate->didSelectItem) (*tPtr->delegate->didSelectItem) (tPtr->delegate, tPtr, tPtr->items[index]); paintTabView(tPtr); } static void recalcTabWidth(TabView * tPtr) { int i; /*int twidth = W_VIEW(tPtr)->size.width; */ int width; if (tPtr->flags.uniformTabs) { int tabWidth; tabWidth = 0; for (i = 0; i < tPtr->itemCount; i++) { char *str = WMGetTabViewItemLabel(tPtr->items[i]); if (str) { width = WMWidthOfString(tPtr->font, str, strlen(str)); if (width > tabWidth) tabWidth = width; } } tabWidth = tabWidth + 30; for (i = 0; i < tPtr->itemCount; i++) W_SetTabViewItemTabWidth(tPtr->items[i], tabWidth); tPtr->firstVisible = 0; tPtr->visibleTabs = countVisibleTabs(tPtr, -1); if (tPtr->visibleTabs < tPtr->itemCount) tPtr->flags.dontFitAll = 1; else tPtr->flags.dontFitAll = 0; } else { for (i = 0; i < tPtr->itemCount; i++) { char *str = WMGetTabViewItemLabel(tPtr->items[i]); if (!str) continue; width = WMWidthOfString(tPtr->font, str, strlen(str)) + 30; W_SetTabViewItemTabWidth(tPtr->items[i], width); } if (countVisibleTabs(tPtr, -1) < tPtr->itemCount) { tPtr->flags.dontFitAll = 1; tPtr->firstVisible = 0; tPtr->visibleTabs = countVisibleTabs(tPtr, tPtr->firstVisible); } else { tPtr->flags.dontFitAll = 0; tPtr->firstVisible = 0; tPtr->visibleTabs = tPtr->itemCount; } } } static void drawRelief(W_Screen * scr, Drawable d, int x, int y, unsigned int width, unsigned int height) { Display *dpy = scr->display; GC bgc = WMColorGC(scr->black); GC wgc = WMColorGC(scr->white); GC dgc = WMColorGC(scr->darkGray); XDrawLine(dpy, d, wgc, x, y, x, y + height - 1); XDrawLine(dpy, d, bgc, x, y + height - 1, x + width - 1, y + height - 1); XDrawLine(dpy, d, dgc, x + 1, y + height - 2, x + width - 2, y + height - 2); XDrawLine(dpy, d, bgc, x + width - 1, y, x + width - 1, y + height - 1); XDrawLine(dpy, d, dgc, x + width - 2, y + 1, x + width - 2, y + height - 2); } static void drawTab(TabView * tPtr, Drawable d, int x, int y, unsigned width, unsigned height, Bool selected) { WMScreen *scr = W_VIEW(tPtr)->screen; Display *dpy = scr->display; GC white = WMColorGC(selected ? scr->white : tPtr->lightGray); GC black = WMColorGC(scr->black); GC dark = WMColorGC(scr->darkGray); GC light = WMColorGC(scr->gray); XPoint trap[8]; trap[0].x = x + (selected ? 0 : 1); trap[0].y = y + height - (selected ? 0 : 1); trap[1].x = x + 3; trap[1].y = y + height - 3; trap[2].x = x + 10 - 3; trap[2].y = y + 3; trap[3].x = x + 10; trap[3].y = y; trap[4].x = x + width - 10; trap[4].y = y; trap[5].x = x + width - 10 + 3; trap[5].y = y + 3; trap[6].x = x + width - 3; trap[6].y = y + height - 3; trap[7].x = x + width - (selected ? 0 : 1); trap[7].y = y + height - (selected ? 0 : 1); XFillPolygon(dpy, d, selected ? light : WMColorGC(tPtr->tabColor), trap, 8, Convex, CoordModeOrigin); XDrawLine(dpy, d, white, trap[0].x, trap[0].y, trap[1].x, trap[1].y); XDrawLine(dpy, d, white, trap[1].x, trap[1].y, trap[2].x, trap[2].y); XDrawLine(dpy, d, white, trap[2].x, trap[2].y, trap[3].x, trap[3].y); XDrawLine(dpy, d, white, trap[3].x, trap[3].y, trap[4].x, trap[4].y); XDrawLine(dpy, d, dark, trap[4].x, trap[4].y, trap[5].x, trap[5].y); XDrawLine(dpy, d, black, trap[5].x, trap[5].y, trap[6].x, trap[6].y); XDrawLine(dpy, d, black, trap[6].x, trap[6].y, trap[7].x, trap[7].y); XDrawLine(dpy, d, selected ? light : WMColorGC(scr->white), trap[0].x, trap[0].y, trap[7].x, trap[7].y); } static void paintDot(TabView * tPtr, Drawable d, int x, int y) { WMScreen *scr = W_VIEW(tPtr)->screen; Display *dpy = scr->display; GC white = WMColorGC(scr->white); GC black = WMColorGC(scr->black); XFillRectangle(dpy, d, black, x, y, 2, 2); XDrawPoint(dpy, d, white, x, y); } static void paintTabView(TabView * tPtr) { Pixmap buffer; WMScreen *scr = W_VIEW(tPtr)->screen; Display *dpy = scr->display; GC white = WMColorGC(scr->white); int i; if (tPtr->flags.type == WTTopTabsBevelBorder) { int count = tPtr->visibleTabs; int first = tPtr->firstVisible; int moreAtLeft; int moreAtRight; int selectedIsVisible; int ty; int twidth, theight; ty = 2; theight = tPtr->tabHeight; buffer = XCreatePixmap(dpy, W_VIEW(tPtr)->window, W_VIEW(tPtr)->size.width, theight, W_VIEW(tPtr)->screen->depth); XFillRectangle(dpy, buffer, WMColorGC(W_VIEW(tPtr)->backColor), 0, 0, W_VIEW(tPtr)->size.width, tPtr->tabHeight); if (tPtr->flags.dontFitAll) { moreAtLeft = first > 0; moreAtRight = (first + count) < tPtr->itemCount; if (tPtr->selectedItem >= first && tPtr->selectedItem < first + count) selectedIsVisible = 1; else selectedIsVisible = 0; } else { moreAtLeft = 0; moreAtRight = 0; selectedIsVisible = 1; } if (moreAtRight) { drawTab(tPtr, buffer, positionOfTab(tPtr, first + count), 0, W_VIEW_WIDTH(tPtr->view), theight, False); } for (i = first + count - 1; i >= first; i--) { if (!selectedIsVisible || i != tPtr->selectedItem) { twidth = W_TabViewItemTabWidth(tPtr->items[i]); drawTab(tPtr, buffer, positionOfTab(tPtr, i), 0, twidth, theight, False); } } if (moreAtLeft) { drawTab(tPtr, buffer, positionOfTab(tPtr, 0) - 2 * BUTTONED_SIDE_OFFSET, 0, BUTTONED_SIDE_OFFSET * 4, theight, False); } if (selectedIsVisible) { int idx = tPtr->selectedItem; drawTab(tPtr, buffer, positionOfTab(tPtr, idx), 0, W_TabViewItemTabWidth(tPtr->items[idx]), theight, True); XDrawLine(dpy, buffer, white, 0, theight - 1, positionOfTab(tPtr, idx), theight - 1); XDrawLine(dpy, buffer, white, positionOfTab(tPtr, idx) + W_TabViewItemTabWidth(tPtr->items[idx]), tPtr->tabHeight - 1, W_VIEW_WIDTH(tPtr->view) - 1, tPtr->tabHeight - 1); } else { XDrawLine(dpy, buffer, white, 0, theight - 1, W_VIEW_WIDTH(tPtr->view), theight - 1); } for (i = 0; i < count; i++) { WMRect rect; rect.pos.x = 15 + positionOfTab(tPtr, first + i); rect.pos.y = ty; rect.size.width = W_TabViewItemTabWidth(tPtr->items[first + i]); rect.size.height = theight; W_DrawLabel(tPtr->items[first + i], buffer, rect, tPtr->flags.enabled && tPtr->items[first + i]->flags.enabled); } if (moreAtLeft) { paintDot(tPtr, buffer, 4, 10); paintDot(tPtr, buffer, 7, 10); paintDot(tPtr, buffer, 10, 10); } if (moreAtRight) { int x; x = positionOfTab(tPtr, tPtr->firstVisible + tPtr->visibleTabs); x = x + (W_VIEW_WIDTH(tPtr->view) - x) / 2; paintDot(tPtr, buffer, x + 5, 10); paintDot(tPtr, buffer, x + 8, 10); paintDot(tPtr, buffer, x + 11, 10); } XCopyArea(dpy, buffer, W_VIEW(tPtr)->window, scr->copyGC, 0, 0, W_VIEW_WIDTH(tPtr->view), theight, 0, 0); XFreePixmap(dpy, buffer); } switch (tPtr->flags.type) { case WTTopTabsBevelBorder: drawRelief(scr, W_VIEW(tPtr)->window, 0, tPtr->tabHeight - 1, W_VIEW(tPtr)->size.width, W_VIEW(tPtr)->size.height - tPtr->tabHeight + 1); break; case WTNoTabsBevelBorder: W_DrawRelief(scr, W_VIEW(tPtr)->window, 0, 0, W_VIEW(tPtr)->size.width, W_VIEW(tPtr)->size.height, WRRaised); break; case WTNoTabsLineBorder: W_DrawRelief(scr, W_VIEW(tPtr)->window, 0, 0, W_VIEW(tPtr)->size.width, W_VIEW(tPtr)->size.height, WRSimple); break; case WTNoTabsNoBorder: break; } } static void rearrange(TabView * tPtr) { int i; int width, height; int bordered = tPtr->flags.bordered; recalcTabWidth(tPtr); width = tPtr->view->size.width - (bordered ? 3 : 0); height = tPtr->view->size.height - tPtr->tabHeight - (bordered ? 3 : 0); for (i = 0; i < tPtr->itemCount; i++) { W_MoveView(W_TabViewItemView(tPtr->items[i]), 1 * bordered, tPtr->tabHeight + 1 * bordered); W_ResizeView(W_TabViewItemView(tPtr->items[i]), width, height); } if (W_VIEW_MAPPED(tPtr->view) && W_VIEW_REALIZED(tPtr->view)) paintTabView(tPtr); } static void didResize(struct W_ViewDelegate *deleg, WMView * view) { /* Parameter not used, but tell the compiler that it is ok */ (void) deleg; rearrange(view->self); } static void destroyTabView(TabView * tPtr) { int i; for (i = 0; i < tPtr->itemCount; i++) { WMSetTabViewItemView(tPtr->items[i], NULL); WMDestroyTabViewItem(tPtr->items[i]); } wfree(tPtr->items); WMReleaseColor(tPtr->lightGray); WMReleaseColor(tPtr->tabColor); WMReleaseFont(tPtr->font); wfree(tPtr); } /******************************************************************/ static void W_SetTabViewItemParent(WMTabViewItem * item, WMTabView * parent) { item->tabView = parent; } static void W_DrawLabel(WMTabViewItem * item, Drawable d, WMRect rect, Bool enabled) { WMScreen *scr = W_VIEW(item->tabView)->screen; if (!item->label) return; WMDrawString(scr, d, enabled ? scr->black : scr->darkGray, item->tabView->font, rect.pos.x, rect.pos.y, item->label, strlen(item->label)); } static void W_UnmapTabViewItem(WMTabViewItem * item) { wassertr(item->view); W_UnmapView(item->view); item->flags.visible = 0; } static void W_MapTabViewItem(WMTabViewItem * item) { wassertr(item->view); W_MapView(item->view); W_RaiseView(item->view); item->flags.visible = 1; } static WMView *W_TabViewItemView(WMTabViewItem * item) { return item->view; } static int W_TabViewItemTabWidth(WMTabViewItem * item) { return item->tabWidth; } static void W_SetTabViewItemTabWidth(WMTabViewItem * item, int width) { item->tabWidth = width; } WMTabViewItem *WMCreateTabViewItemWithIdentifier(int identifier) { WMTabViewItem *item; item = wmalloc(sizeof(WMTabViewItem)); item->identifier = identifier; item->flags.enabled = 1; return item; } WMTabViewItem *WMCreateTabViewItem(int identifier, const char *label) { WMTabViewItem *item; item = wmalloc(sizeof(WMTabViewItem)); item->identifier = identifier; item->flags.enabled = 1; WMSetTabViewItemLabel(item, label); return item; } void WMSetTabViewItemEnabled(WMTabViewItem * tPtr, Bool flag) { tPtr->flags.enabled = ((flag == 0) ? 0 : 1); if (tPtr->tabView && W_VIEW_REALIZED(tPtr->tabView->view)) paintTabView(tPtr->tabView); } int WMGetTabViewItemIdentifier(WMTabViewItem * item) { return item->identifier; } void WMSetTabViewFont(WMTabView * tPtr, WMFont * font) { if (tPtr->font) WMReleaseFont(tPtr->font); tPtr->font = WMRetainFont(font); tPtr->tabHeight = WMFontHeight(tPtr->font) + 3; recalcTabWidth(tPtr); } void WMSetTabViewItemLabel(WMTabViewItem * item, const char *label) { if (item->label) wfree(item->label); if (label) item->label = wstrdup(label); else item->label = NULL; if (item->tabView) recalcTabWidth(item->tabView); } char *WMGetTabViewItemLabel(WMTabViewItem * item) { return item->label; } void WMSetTabViewItemView(WMTabViewItem * item, WMView * view) { item->view = view; } WMView *WMGetTabViewItemView(WMTabViewItem * item) { return item->view; } void WMDestroyTabViewItem(WMTabViewItem * item) { if (item->label) wfree(item->label); if (item->view) W_DestroyView(item->view); wfree(item); } ��������WindowMaker-0.95.9/WINGs/WINGs/���������������������������������������������������������������������0000755�0001750�0001750�00000000000�13642365212�012730� 5����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/WINGs/Makefile.in����������������������������������������������������������0000644�0001750�0001750�00000043632�13642360053�014723� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = WINGs/WINGs ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ $(top_srcdir)/m4/ax_pthread.m4 \ $(top_srcdir)/m4/ld-version-script.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/windowmaker.m4 \ $(top_srcdir)/m4/wm_attributes.m4 \ $(top_srcdir)/m4/wm_cflags_check.m4 \ $(top_srcdir)/m4/wm_i18n.m4 \ $(top_srcdir)/m4/wm_imgfmt_check.m4 \ $(top_srcdir)/m4/wm_libexif.m4 $(top_srcdir)/m4/wm_libmath.m4 \ $(top_srcdir)/m4/wm_prog_cc_c11.m4 \ $(top_srcdir)/m4/wm_xext_check.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(include_HEADERS) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(includedir)" HEADERS = $(include_HEADERS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ GFXLIBS = @GFXLIBS@ GREP = @GREP@ HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLIBS = @INTLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBBSD = @LIBBSD@ LIBEXIF = @LIBEXIF@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXINERAMA = @LIBXINERAMA@ LIBXMU = @LIBXMU@ LIBXRANDR = @LIBXRANDR@ LINGUAS = @LINGUAS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAGICKFLAGS = @MAGICKFLAGS@ MAGICKLIBS = @MAGICKLIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MANLANGDIRS = @MANLANGDIRS@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOLIBS = @PANGOLIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILMOFILES = @UTILMOFILES@ VERSION = @VERSION@ WINGSMOFILES = @WINGSMOFILES@ WINGS_VERSION = @WINGS_VERSION@ WMAKERMOFILES = @WMAKERMOFILES@ WPREFSMOFILES = @WPREFSMOFILES@ WRASTER_VERSION = @WRASTER_VERSION@ WUTIL_VERSION = @WUTIL_VERSION@ XCFLAGS = @XCFLAGS@ XFTCONFIG = @XFTCONFIG@ XFTFLAGS = @XFTFLAGS@ XFTLIBS = @XFTLIBS@ XGETTEXT = @XGETTEXT@ XLFLAGS = @XLFLAGS@ XLIBS = @XLIBS@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBRARY_PATH = @X_LIBRARY_PATH@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ defsdatadir = @defsdatadir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ inc_search_path = @inc_search_path@ # is this a kluge? if so, how should i do it? includedir = @includedir@/WINGs infodir = @infodir@ install_sh = @install_sh@ lcov_output_directory = @lcov_output_directory@ lib_search_path = @lib_search_path@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pixmapdir = @pixmapdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ wprefs_bindir = @wprefs_bindir@ wprefs_datadir = @wprefs_datadir@ AUTOMAKE_OPTIONS = include_HEADERS = WINGs.h WUtil.h WINGsP.h all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu WINGs/WINGs/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu WINGs/WINGs/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-includeHEADERS: $(include_HEADERS) @$(NORMAL_INSTALL) @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ done uninstall-includeHEADERS: @$(NORMAL_UNINSTALL) @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(HEADERS) installdirs: for dir in "$(DESTDIR)$(includedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-includeHEADERS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-includeHEADERS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libtool cscopelist-am ctags ctags-am distclean \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-includeHEADERS install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am \ uninstall-includeHEADERS .PRECIOUS: Makefile # 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. .NOEXPORT: ������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/WINGs/WINGs.h��������������������������������������������������������������0000644�0001750�0001750�00000155227�13642357773�014001� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* WINGs.h * * Copyright (c) 1998 scottc * Copyright (c) 1999-2004 Dan Pascu * Copyright (c) 1999-2001 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef _WINGS_H_ #define _WINGS_H_ #include <wraster.h> #include <WINGs/WUtil.h> #include <X11/Xlib.h> #define WINGS_H_VERSION 20150508 #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #if 0 } #endif #ifdef __STDC_VERSION__ # if __STDC_VERSION__ >= 201112L /* * Ideally, we would like to include the proper header to have 'noreturn' properly * defined (that's what is done for the rest of the code) * However, as we're a public API file we can't do that in a portable fashion, so * we just stick to plain STD C11 keyword */ # define _wings_noreturn _Noreturn # else # define _wings_noreturn /**/ # endif #else #define _wings_noreturn /**/ #endif typedef unsigned long WMPixel; typedef struct { unsigned int width; unsigned int height; } WMSize; typedef struct { int x; int y; } WMPoint; typedef struct { WMPoint pos; WMSize size; } WMRect; #define ClientMessageMask (1L<<30) #ifndef _DEFINED_GNUSTEP_WINDOW_INFO #define _DEFINED_GNUSTEP_WINDOW_INFO /* * Window levels are taken from GNUstep (gui/AppKit/NSWindow.h) * NSDesktopWindowLevel intended to be the level at which things * on the desktop sit ... so you should be able * to put a desktop background just below it. * * Applications are actually permitted to use any value in the * range INT_MIN+1 to INT_MAX */ enum { WMDesktopWindowLevel = -1000, /* GNUstep addition */ WMNormalWindowLevel = 0, WMFloatingWindowLevel = 3, WMSubmenuWindowLevel = 3, WMTornOffMenuWindowLevel = 3, WMMainMenuWindowLevel = 20, WMDockWindowLevel = 21, /* Deprecated - use NSStatusWindowLevel */ WMStatusWindowLevel = 21, WMModalPanelWindowLevel = 100, WMPopUpMenuWindowLevel = 101, WMScreenSaverWindowLevel = 1000 }; /* window attributes */ enum { WMBorderlessWindowMask = 0, WMTitledWindowMask = 1, WMClosableWindowMask = 2, WMMiniaturizableWindowMask = 4, WMResizableWindowMask = 8, WMIconWindowMask = 64, WMMiniWindowMask = 128 }; #endif /* button types */ typedef enum { /* 0 is reserved for internal use */ WBTMomentaryPush = 1, WBTPushOnPushOff = 2, WBTToggle = 3, WBTSwitch = 4, WBTRadio = 5, WBTMomentaryChange = 6, WBTOnOff = 7, WBTMomentaryLight = 8, WBTTriState = 9 } WMButtonType; /* button behaviour masks */ enum { WBBSpringLoadedMask = (1 << 0), WBBPushInMask = (1 << 1), WBBPushChangeMask = (1 << 2), WBBPushLightMask = (1 << 3), WBBStateLightMask = (1 << 5), WBBStateChangeMask = (1 << 6), WBBStatePushMask = (1 << 7) }; /* frame title positions */ typedef enum { WTPNoTitle, WTPAboveTop, WTPAtTop, WTPBelowTop, WTPAboveBottom, WTPAtBottom, WTPBelowBottom } WMTitlePosition; /* relief types */ typedef enum { WRFlat, WRSimple, WRRaised, WRSunken, WRGroove, WRRidge, WRPushed } WMReliefType; /* alignment types */ typedef enum { WALeft, WACenter, WARight, WAJustified /* not valid for textfields */ } WMAlignment; /* image position */ typedef enum { WIPNoImage, WIPImageOnly, WIPLeft, WIPRight, WIPBelow, WIPAbove, WIPOverlaps } WMImagePosition; /* scroller arrow position */ typedef enum { WSAMaxEnd, WSAMinEnd, WSANone } WMScrollArrowPosition; /* scroller parts */ typedef enum { WSNoPart, WSDecrementPage, WSIncrementPage, WSDecrementLine, WSIncrementLine, WSDecrementWheel, WSIncrementWheel, WSKnob, WSKnobSlot } WMScrollerPart; /* usable scroller parts */ typedef enum { WSUNoParts, WSUOnlyArrows, WSUAllParts } WMUsableScrollerParts; /* matrix types */ typedef enum { WMRadioMode, WMHighlightMode, WMListMode, WMTrackMode } WMMatrixTypes; typedef enum { WTTopTabsBevelBorder, WTNoTabsBevelBorder, WTNoTabsLineBorder, WTNoTabsNoBorder } WMTabViewType; /* text movement types */ enum { WMIllegalTextMovement, WMReturnTextMovement, WMEscapeTextMovement, WMTabTextMovement, WMBacktabTextMovement, WMLeftTextMovement, WMRightTextMovement, WMUpTextMovement, WMDownTextMovement }; /* text field special events */ enum { WMInsertTextEvent, WMDeleteTextEvent }; enum { WLNotFound = -1 /* element was not found in WMList */ }; /* drag operations */ typedef enum { WDOperationNone = 0, WDOperationCopy, WDOperationMove, WDOperationLink, WDOperationAsk, WDOperationPrivate } WMDragOperationType; typedef enum { WMGrayModeColorPanel = 1, WMRGBModeColorPanel = 2, WMCMYKModeColorPanel = 3, WMHSBModeColorPanel = 4, WMCustomPaletteModeColorPanel = 5, WMColorListModeColorPanel = 6, WMWheelModeColorPanel = 7 } WMColorPanelMode; /* system images */ #define WSIReturnArrow 1 #define WSIHighlightedReturnArrow 2 #define WSIScrollerDimple 3 #define WSIArrowLeft 4 #define WSIHighlightedArrowLeft 5 #define WSIArrowRight 6 #define WSIHighlightedArrowRight 7 #define WSIArrowUp 8 #define WSIHighlightedArrowUp 9 #define WSIArrowDown 10 #define WSIHighlightedArrowDown 11 #define WSICheckMark 12 enum { WLDSSelected = (1 << 16), WLDSDisabled = (1 << 17), WLDSFocused = (1 << 18), WLDSIsBranch = (1 << 19) }; /* alert panel return values */ enum { WAPRDefault = 0, WAPRAlternate = 1, WAPROther = -1, WAPRError = -2 }; /* types of input observers */ enum { WIReadMask = (1 << 0), WIWriteMask = (1 << 1), WIExceptMask = (1 << 2) }; typedef int W_Class; enum { WC_Window = 0, WC_Frame = 1, WC_Label = 2, WC_Button = 3, WC_TextField = 4, WC_Scroller = 5, WC_ScrollView = 6, WC_List = 7, WC_Browser = 8, WC_PopUpButton = 9, WC_ColorWell = 10, WC_Slider = 11, WC_Matrix = 12, /* not ready */ WC_SplitView = 13, WC_TabView = 14, WC_ProgressIndicator = 15, WC_MenuView = 16, WC_Ruler = 17, WC_Text = 18, WC_Box = 19 }; /* All widgets must start with the following structure * in that order. Used for typecasting to get some generic data */ typedef struct W_WidgetType { W_Class widgetClass; struct W_View *view; } W_WidgetType; #define WMWidgetClass(widget) (((W_WidgetType*)(widget))->widgetClass) #define WMWidgetView(widget) (((W_WidgetType*)(widget))->view) /* widgets */ typedef void WMWidget; typedef struct W_Pixmap WMPixmap; typedef struct W_Font WMFont; typedef struct W_Color WMColor; typedef struct W_Screen WMScreen; typedef struct W_View WMView; typedef struct W_Window WMWindow; typedef struct W_Frame WMFrame; typedef struct W_Button WMButton; typedef struct W_Label WMLabel; typedef struct W_TextField WMTextField; typedef struct W_Scroller WMScroller; typedef struct W_ScrollView WMScrollView; typedef struct W_List WMList; typedef struct W_Browser WMBrowser; typedef struct W_PopUpButton WMPopUpButton; typedef struct W_ProgressIndicator WMProgressIndicator; typedef struct W_ColorWell WMColorWell; typedef struct W_Slider WMSlider; typedef struct W_Matrix WMMatrix; /* not ready */ typedef struct W_SplitView WMSplitView; typedef struct W_TabView WMTabView; typedef struct W_Ruler WMRuler; typedef struct W_Text WMText; typedef struct W_Box WMBox; /* not widgets */ typedef struct W_TabViewItem WMTabViewItem; typedef struct W_MenuItem WMMenuItem; typedef struct W_FilePanel WMFilePanel; typedef WMFilePanel WMOpenPanel; typedef WMFilePanel WMSavePanel; typedef struct W_FontPanel WMFontPanel; typedef struct W_ColorPanel WMColorPanel; /* item for WMList */ typedef struct WMListItem { char *text; void *clientData; /* ptr for user clientdata. */ unsigned int uflags:16; /* flags for the user */ unsigned int selected:1; unsigned int disabled:1; unsigned int isBranch:1; unsigned int loaded:1; } WMListItem; /* struct for message panel */ typedef struct WMAlertPanel { WMWindow *win; /* window */ WMBox *vbox; WMBox *hbox; WMButton *defBtn; /* default button */ WMButton *altBtn; /* alternative button */ WMButton *othBtn; /* other button */ WMLabel *iLbl; /* icon label */ WMLabel *tLbl; /* title label */ WMLabel *mLbl; /* message label */ WMFrame *line; /* separator */ short result; /* button that was pushed */ } WMAlertPanel; typedef struct WMGenericPanel { WMWindow *win; WMBox *vbox; WMLabel *iLbl; WMLabel *tLbl; WMFrame *line; WMFrame *content; WMBox *buttonBox; WMButton *defBtn; WMButton *altBtn; short result; } WMGenericPanel; typedef struct WMInputPanel { WMWindow *win; /* window */ WMButton *defBtn; /* default button */ WMButton *altBtn; /* alternative button */ WMLabel *tLbl; /* title label */ WMLabel *mLbl; /* message label */ WMTextField *text; /* text field */ short result; /* button that was pushed */ } WMInputPanel; /* Basic font styles. Used to easily get one style from another */ typedef enum WMFontStyle { WFSNormal = 0, WFSBold = 1, WFSItalic = 2, WFSBoldItalic = 3 } WMFontStyle; /* WMRuler: */ typedef struct { WMArray *tabs; /* a growable array of tabstops */ unsigned short left; /* left margin marker */ unsigned short right; /* right margin marker */ unsigned short first; /* indentation marker for first line only */ unsigned short body; /* body indentation marker */ unsigned short retainCount; } WMRulerMargins; /* All indentation and tab markers are _relative_ to the left margin marker */ typedef void WMEventProc(XEvent *event, void *clientData); typedef void WMEventHook(XEvent *event); /* self is set to the widget from where the callback is being called and * clientData to the data set to with WMSetClientData() */ typedef void WMAction(WMWidget *self, void *clientData); /* same as WMAction, but for stuff that arent widgets */ typedef void WMAction2(void *self, void *clientData); /* delegate method like stuff */ typedef void WMListDrawProc(WMList *lPtr, int index, Drawable d, char *text, int state, WMRect *rect); /* typedef void WMSplitViewResizeSubviewsProc(WMSplitView *sPtr, unsigned int oldWidth, unsigned int oldHeight); */ typedef void WMSplitViewConstrainProc(WMSplitView *sPtr, int dividerIndex, int *minSize, int *maxSize); typedef WMWidget* WMMatrixCreateCellProc(WMMatrix *mPtr); typedef struct WMBrowserDelegate { void *data; void (*createRowsForColumn)(struct WMBrowserDelegate *self, WMBrowser *sender, int column, WMList *list); char* (*titleOfColumn)(struct WMBrowserDelegate *self, WMBrowser *sender, int column); void (*didScroll)(struct WMBrowserDelegate *self, WMBrowser *sender); void (*willScroll)(struct WMBrowserDelegate *self, WMBrowser *sender); } WMBrowserDelegate; typedef struct WMTextFieldDelegate { void *data; void (*didBeginEditing)(struct WMTextFieldDelegate *self, WMNotification *notif); void (*didChange)(struct WMTextFieldDelegate *self, WMNotification *notif); void (*didEndEditing)(struct WMTextFieldDelegate *self, WMNotification *notif); Bool (*shouldBeginEditing)(struct WMTextFieldDelegate *self, WMTextField *tPtr); Bool (*shouldEndEditing)(struct WMTextFieldDelegate *self, WMTextField *tPtr); } WMTextFieldDelegate; typedef struct WMTextDelegate { void *data; Bool (*didDoubleClickOnPicture)(struct WMTextDelegate *self, void *description); } WMTextDelegate; typedef struct WMTabViewDelegate { void *data; void (*didChangeNumberOfItems)(struct WMTabViewDelegate *self, WMTabView *tabView); void (*didSelectItem)(struct WMTabViewDelegate *self, WMTabView *tabView, WMTabViewItem *item); Bool (*shouldSelectItem)(struct WMTabViewDelegate *self, WMTabView *tabView, WMTabViewItem *item); void (*willSelectItem)(struct WMTabViewDelegate *self, WMTabView *tabView, WMTabViewItem *item); } WMTabViewDelegate; typedef void WMSelectionCallback(WMView *view, Atom selection, Atom target, Time timestamp, void *cdata, WMData *data); typedef struct WMSelectionProcs { WMData* (*convertSelection)(WMView *view, Atom selection, Atom target, void *cdata, Atom *type); void (*selectionLost)(WMView *view, Atom selection, void *cdata); void (*selectionDone)(WMView *view, Atom selection, Atom target, void *cdata); } WMSelectionProcs; typedef struct W_DraggingInfo WMDraggingInfo; /* links a label to a dnd operation. */ typedef struct W_DragOperationtItem WMDragOperationItem; typedef struct W_DragSourceProcs { WMArray* (*dropDataTypes)(WMView *self); WMDragOperationType (*wantedDropOperation)(WMView *self); WMArray* (*askedOperations)(WMView *self); Bool (*acceptDropOperation)(WMView *self, WMDragOperationType operation); void (*beganDrag)(WMView *self, WMPoint *point); void (*endedDrag)(WMView *self, WMPoint *point, Bool deposited); WMData* (*fetchDragData)(WMView *self, char *type); /*Bool (*ignoreModifierKeysWhileDragging)(WMView *view);*/ } WMDragSourceProcs; typedef struct W_DragDestinationProcs { void (*prepareForDragOperation)(WMView *self); WMArray* (*requiredDataTypes)(WMView *self, WMDragOperationType request, WMArray *sourceDataTypes); WMDragOperationType (*allowedOperation)(WMView *self, WMDragOperationType request, WMArray *sourceDataTypes); Bool (*inspectDropData)(WMView *self, WMArray *dropData); void (*performDragOperation)(WMView *self, WMArray *dropData, WMArray *operations, WMPoint *dropLocation); void (*concludeDragOperation)(WMView *self); } WMDragDestinationProcs; /* ---[ WINGs/wmisc.c ]--------------------------------------------------- */ WMPoint wmkpoint(int x, int y); WMSize wmksize(unsigned int width, unsigned int height); WMRect wmkrect(int x, int y, unsigned int width, unsigned int height); #ifdef ANSI_C_DOESNT_LIKE_IT_THIS_WAY #define wmksize(width, height) (WMSize){(width), (height)} #define wmkpoint(x, y) (WMPoint){(x), (y)} #endif /* ---[ WINGs/wapplication.c ]-------------------------------------------- */ void WMInitializeApplication(const char *applicationName, int *argc, char **argv); /* You're supposed to call this funtion before exiting so WINGs can terminate properly */ void WMReleaseApplication(void); void WMSetResourcePath(const char *path); /* don't free the returned string */ char* WMGetApplicationName(void); /* Try to locate resource file. ext may be NULL */ char* WMPathForResourceOfType(const char *resource, const char *ext); /* ---[ WINGs/widgets.c ]------------------------------------------------- */ WMScreen* WMOpenScreen(const char *display); WMScreen* WMCreateScreenWithRContext(Display *display, int screen, RContext *context); WMScreen* WMCreateScreen(Display *display, int screen); WMScreen* WMCreateSimpleApplicationScreen(Display *display); _wings_noreturn void WMScreenMainLoop(WMScreen *scr); void WMBreakModalLoop(WMScreen *scr); void WMRunModalLoop(WMScreen *scr, WMView *view); RContext* WMScreenRContext(WMScreen *scr); Display* WMScreenDisplay(WMScreen *scr); int WMScreenDepth(WMScreen *scr); void WMSetFocusToWidget(WMWidget *widget); /* ---[ WINGs/wappresource.c ]-------------------------------------------- */ void WMSetApplicationIconImage(WMScreen *app, RImage *image); RImage* WMGetApplicationIconImage(WMScreen *app); void WMSetApplicationIconPixmap(WMScreen *app, WMPixmap *icon); WMPixmap* WMGetApplicationIconPixmap(WMScreen *app); /* If color==NULL it will use the default color for panels: ae/aa/ae */ WMPixmap* WMCreateApplicationIconBlendedPixmap(WMScreen *scr, const RColor *color); void WMSetApplicationIconWindow(WMScreen *scr, Window window); /* ---[ WINGs/wevent.c ]-------------------------------------------------- */ WMEventHook* WMHookEventHandler(WMEventHook *handler); int WMHandleEvent(XEvent *event); Bool WMScreenPending(WMScreen *scr); void WMCreateEventHandler(WMView *view, unsigned long mask, WMEventProc *eventProc, void *clientData); void WMDeleteEventHandler(WMView *view, unsigned long mask, WMEventProc *eventProc, void *clientData); int WMIsDoubleClick(XEvent *event); /*int WMIsTripleClick(XEvent *event);*/ void WMNextEvent(Display *dpy, XEvent *event); void WMMaskEvent(Display *dpy, long mask, XEvent *event); void WMSetViewNextResponder(WMView *view, WMView *responder); void WMRelayToNextResponder(WMView *view, XEvent *event); /* ---[ WINGs/selection.c ]----------------------------------------------- */ Bool WMCreateSelectionHandler(WMView *view, Atom selection, Time timestamp, WMSelectionProcs *procs, void *cdata); void WMDeleteSelectionHandler(WMView *view, Atom selection, Time timestamp); Bool WMRequestSelection(WMView *view, Atom selection, Atom target, Time timestamp, WMSelectionCallback *callback, void *cdata); extern char *WMSelectionOwnerDidChangeNotification; /* ---[ WINGs/dragcommon.c ]---------------------------------------------- */ WMArray* WMCreateDragOperationArray(int initialSize); WMDragOperationItem* WMCreateDragOperationItem(WMDragOperationType type, char* text); WMDragOperationType WMGetDragOperationItemType(WMDragOperationItem* item); char* WMGetDragOperationItemText(WMDragOperationItem* item); /* ---[ WINGs/dragsource.c ]---------------------------------------------- */ void WMSetViewDragImage(WMView* view, WMPixmap *dragImage); void WMReleaseViewDragImage(WMView* view); void WMSetViewDragSourceProcs(WMView *view, WMDragSourceProcs *procs); Bool WMIsDraggingFromView(WMView *view); void WMDragImageFromView(WMView *view, XEvent *event); /* Create a drag handler, associating drag event masks with dragEventProc */ void WMCreateDragHandler(WMView *view, WMEventProc *dragEventProc, void *clientData); void WMDeleteDragHandler(WMView *view, WMEventProc *dragEventProc, void *clientData); /* set default drag handler for view */ void WMSetViewDraggable(WMView *view, WMDragSourceProcs *procs, WMPixmap *dragImage); void WMUnsetViewDraggable(WMView *view); /* ---[ WINGs/dragdestination.c ]----------------------------------------- */ void WMRegisterViewForDraggedTypes(WMView *view, WMArray *acceptedTypes); void WMUnregisterViewDraggedTypes(WMView *view); void WMSetViewDragDestinationProcs(WMView *view, WMDragDestinationProcs *procs); /* ---[ WINGs/wfont.c ]--------------------------------------------------- */ Bool WMIsAntialiasingEnabled(WMScreen *scrPtr); WMFont* WMCreateFont(WMScreen *scrPtr, const char *fontName); WMFont* WMCopyFontWithStyle(WMScreen *scrPtr, WMFont *font, WMFontStyle style); WMFont* WMRetainFont(WMFont *font); void WMReleaseFont(WMFont *font); char* WMGetFontName(WMFont *font); unsigned int WMFontHeight(WMFont *font); void WMGetScaleBaseFromSystemFont(WMScreen *scrPtr, int *alphabetWidth, int *fontHeight); void WMSetWidgetDefaultFont(WMScreen *scr, WMFont *font); void WMSetWidgetDefaultBoldFont(WMScreen *scr, WMFont *font); WMFont* WMDefaultSystemFont(WMScreen *scrPtr); WMFont* WMDefaultBoldSystemFont(WMScreen *scrPtr); WMFont* WMSystemFontOfSize(WMScreen *scrPtr, int size); WMFont* WMBoldSystemFontOfSize(WMScreen *scrPtr, int size); void WMDrawString(WMScreen *scr, Drawable d, WMColor *color, WMFont *font, int x, int y, const char *text, int length); void WMDrawImageString(WMScreen *scr, Drawable d, WMColor *color, WMColor *background, WMFont *font, int x, int y, const char *text, int length); int WMWidthOfString(WMFont *font, const char *text, int length); /* ---[ WINGs/wpixmap.c ]------------------------------------------------- */ WMPixmap* WMRetainPixmap(WMPixmap *pixmap); void WMReleasePixmap(WMPixmap *pixmap); WMPixmap* WMCreatePixmap(WMScreen *scrPtr, int width, int height, int depth, Bool masked); WMPixmap* WMCreatePixmapFromXPixmaps(WMScreen *scrPtr, Pixmap pixmap, Pixmap mask, int width, int height, int depth); WMPixmap* WMCreatePixmapFromRImage(WMScreen *scrPtr, RImage *image, int threshold); WMPixmap* WMCreatePixmapFromXPMData(WMScreen *scrPtr, char **data); WMSize WMGetPixmapSize(WMPixmap *pixmap); WMPixmap* WMCreatePixmapFromFile(WMScreen *scrPtr, const char *fileName); WMPixmap* WMCreateBlendedPixmapFromRImage(WMScreen *scrPtr, RImage *image, const RColor *color); WMPixmap* WMCreateBlendedPixmapFromFile(WMScreen *scrPtr, const char *fileName, const RColor *color); WMPixmap* WMCreateScaledBlendedPixmapFromFile(WMScreen *scrPtr, const char *fileName, const RColor *color, unsigned int width, unsigned int height); void WMDrawPixmap(WMPixmap *pixmap, Drawable d, int x, int y); Pixmap WMGetPixmapXID(WMPixmap *pixmap); Pixmap WMGetPixmapMaskXID(WMPixmap *pixmap); WMPixmap* WMGetSystemPixmap(WMScreen *scr, int image); /* ---[ WINGs/wcolor.c ]-------------------------------------------------- */ WMColor* WMDarkGrayColor(WMScreen *scr); WMColor* WMGrayColor(WMScreen *scr); WMColor* WMBlackColor(WMScreen *scr); WMColor* WMWhiteColor(WMScreen *scr); void WMSetColorInGC(WMColor *color, GC gc); GC WMColorGC(WMColor *color); WMPixel WMColorPixel(WMColor *color); void WMPaintColorSwatch(WMColor *color, Drawable d, int x, int y, unsigned int width, unsigned int height); void WMReleaseColor(WMColor *color); WMColor* WMRetainColor(WMColor *color); WMColor* WMCreateRGBColor(WMScreen *scr, unsigned short red, unsigned short green, unsigned short blue, Bool exact); WMColor* WMCreateRGBAColor(WMScreen *scr, unsigned short red, unsigned short green, unsigned short blue, unsigned short alpha, Bool exact); WMColor* WMCreateNamedColor(WMScreen *scr, const char *name, Bool exact); RColor WMGetRColorFromColor(WMColor *color); void WMSetColorAlpha(WMColor *color, unsigned short alpha); unsigned short WMRedComponentOfColor(WMColor *color); unsigned short WMGreenComponentOfColor(WMColor *color); unsigned short WMBlueComponentOfColor(WMColor *color); unsigned short WMGetColorAlpha(WMColor *color); char* WMGetColorRGBDescription(WMColor *color); /* ---[ WINGs/widgets.c ]------------------------------------------------- */ WMScreen* WMWidgetScreen(WMWidget *w); unsigned int WMScreenWidth(WMScreen *scr); unsigned int WMScreenHeight(WMScreen *scr); void WMUnmapWidget(WMWidget *w); void WMMapWidget(WMWidget *w); Bool WMWidgetIsMapped(WMWidget *w); void WMRaiseWidget(WMWidget *w); void WMLowerWidget(WMWidget *w); void WMMoveWidget(WMWidget *w, int x, int y); void WMResizeWidget(WMWidget *w, unsigned int width, unsigned int height); void WMSetWidgetBackgroundColor(WMWidget *w, WMColor *color); WMColor* WMGetWidgetBackgroundColor(WMWidget *w); void WMSetWidgetBackgroundPixmap(WMWidget *w, WMPixmap *pix); WMPixmap *WMGetWidgetBackgroundPixmap(WMWidget *w); void WMMapSubwidgets(WMWidget *w); void WMUnmapSubwidgets(WMWidget *w); void WMRealizeWidget(WMWidget *w); void WMReparentWidget(WMWidget *w, WMWidget *newParent, int x, int y); void WMDestroyWidget(WMWidget *widget); void WMHangData(WMWidget *widget, void *data); void* WMGetHangedData(WMWidget *widget); unsigned int WMWidgetWidth(WMWidget *w); unsigned int WMWidgetHeight(WMWidget *w); Window WMWidgetXID(WMWidget *w); void WMRedisplayWidget(WMWidget *w); /* ---[ WINGs/wview.c ]--------------------------------------------------- */ Window WMViewXID(WMView *view); void WMSetViewNotifySizeChanges(WMView *view, Bool flag); void WMSetViewExpandsToParent(WMView *view, int topOffs, int leftOffs, int rightOffs, int bottomOffs); WMSize WMGetViewSize(WMView *view); WMPoint WMGetViewPosition(WMView *view); WMPoint WMGetViewScreenPosition(WMView *view); WMWidget* WMWidgetOfView(WMView *view); /* notifications */ extern char *WMViewSizeDidChangeNotification; extern char *WMViewFocusDidChangeNotification; extern char *WMViewRealizedNotification; /* ---[ WINGs/wballoon.c ]------------------------------------------------ */ void WMSetBalloonTextForView(const char *text, WMView *view); void WMSetBalloonTextAlignment(WMScreen *scr, WMAlignment alignment); void WMSetBalloonFont(WMScreen *scr, WMFont *font); void WMSetBalloonTextColor(WMScreen *scr, WMColor *color); void WMSetBalloonDelay(WMScreen *scr, int delay); void WMSetBalloonEnabled(WMScreen *scr, Bool flag); /* ---[ WINGs/wwindow.c ]------------------------------------------------- */ WMWindow* WMCreateWindow(WMScreen *screen, const char *name); WMWindow* WMCreateWindowWithStyle(WMScreen *screen, const char *name, int style); WMWindow* WMCreatePanelWithStyleForWindow(WMWindow *owner, const char *name, int style); WMWindow* WMCreatePanelForWindow(WMWindow *owner, const char *name); void WMChangePanelOwner(WMWindow *win, WMWindow *newOwner); void WMSetWindowTitle(WMWindow *wPtr, const char *title); void WMSetWindowMiniwindowTitle(WMWindow *win, const char *title); void WMSetWindowMiniwindowImage(WMWindow *win, RImage *image); void WMSetWindowMiniwindowPixmap(WMWindow *win, WMPixmap *pixmap); void WMSetWindowCloseAction(WMWindow *win, WMAction *action, void *clientData); void WMSetWindowInitialPosition(WMWindow *win, int x, int y); void WMSetWindowUserPosition(WMWindow *win, int x, int y); void WMSetWindowAspectRatio(WMWindow *win, int minX, int minY, int maxX, int maxY); void WMSetWindowMaxSize(WMWindow *win, unsigned width, unsigned height); void WMSetWindowMinSize(WMWindow *win, unsigned width, unsigned height); void WMSetWindowBaseSize(WMWindow *win, unsigned width, unsigned height); void WMSetWindowResizeIncrements(WMWindow *win, unsigned wIncr, unsigned hIncr); void WMSetWindowLevel(WMWindow *win, int level); void WMSetWindowDocumentEdited(WMWindow *win, Bool flag); void WMCloseWindow(WMWindow *win); /* ---[ WINGs/wbutton.c ]------------------------------------------------- */ void WMSetButtonAction(WMButton *bPtr, WMAction *action, void *clientData); #define WMCreateCommandButton(parent) \ WMCreateCustomButton((parent), WBBSpringLoadedMask\ |WBBPushInMask\ |WBBPushLightMask\ |WBBPushChangeMask) #define WMCreateRadioButton(parent) \ WMCreateButton((parent), WBTRadio) #define WMCreateSwitchButton(parent) \ WMCreateButton((parent), WBTSwitch) WMButton* WMCreateButton(WMWidget *parent, WMButtonType type); WMButton* WMCreateCustomButton(WMWidget *parent, int behaviourMask); void WMSetButtonImageDefault(WMButton *bPtr); void WMSetButtonImage(WMButton *bPtr, WMPixmap *image); void WMSetButtonAltImage(WMButton *bPtr, WMPixmap *image); void WMSetButtonImagePosition(WMButton *bPtr, WMImagePosition position); void WMSetButtonFont(WMButton *bPtr, WMFont *font); void WMSetButtonTextAlignment(WMButton *bPtr, WMAlignment alignment); void WMSetButtonText(WMButton *bPtr, const char *text); /* Returns direct pointer to internal data, do not modify! */ const char *WMGetButtonText(WMButton *bPtr); void WMSetButtonAltText(WMButton *bPtr, const char *text); void WMSetButtonTextColor(WMButton *bPtr, WMColor *color); void WMSetButtonAltTextColor(WMButton *bPtr, WMColor *color); void WMSetButtonDisabledTextColor(WMButton *bPtr, WMColor *color); void WMSetButtonSelected(WMButton *bPtr, int isSelected); int WMGetButtonSelected(WMButton *bPtr); void WMSetButtonBordered(WMButton *bPtr, int isBordered); void WMSetButtonEnabled(WMButton *bPtr, Bool flag); int WMGetButtonEnabled(WMButton *bPtr); void WMSetButtonImageDimsWhenDisabled(WMButton *bPtr, Bool flag); void WMSetButtonTag(WMButton *bPtr, int tag); void WMGroupButtons(WMButton *bPtr, WMButton *newMember); void WMPerformButtonClick(WMButton *bPtr); void WMSetButtonContinuous(WMButton *bPtr, Bool flag); void WMSetButtonPeriodicDelay(WMButton *bPtr, float delay, float interval); /* ---[ WINGs/wlabel.c ]-------------------------------------------------- */ WMLabel* WMCreateLabel(WMWidget *parent); void WMSetLabelWraps(WMLabel *lPtr, Bool flag); void WMSetLabelImage(WMLabel *lPtr, WMPixmap *image); WMPixmap* WMGetLabelImage(WMLabel *lPtr); char* WMGetLabelText(WMLabel *lPtr); void WMSetLabelImagePosition(WMLabel *lPtr, WMImagePosition position); void WMSetLabelTextAlignment(WMLabel *lPtr, WMAlignment alignment); void WMSetLabelRelief(WMLabel *lPtr, WMReliefType relief); void WMSetLabelText(WMLabel *lPtr, const char *text); WMFont* WMGetLabelFont(WMLabel *lPtr); void WMSetLabelFont(WMLabel *lPtr, WMFont *font); void WMSetLabelTextColor(WMLabel *lPtr, WMColor *color); /* ---[ WINGs/wframe.c ]-------------------------------------------------- */ WMFrame* WMCreateFrame(WMWidget *parent); void WMSetFrameTitlePosition(WMFrame *fPtr, WMTitlePosition position); void WMSetFrameRelief(WMFrame *fPtr, WMReliefType relief); void WMSetFrameTitle(WMFrame *fPtr, const char *title); void WMSetFrameTitleColor(WMFrame *fPtr, WMColor *color); /* ---[ WINGs/wtextfield.c ]---------------------------------------------- */ WMTextField* WMCreateTextField(WMWidget *parent); void WMInsertTextFieldText(WMTextField *tPtr, const char *text, int position); void WMDeleteTextFieldRange(WMTextField *tPtr, WMRange range); /* you can free the returned string */ char* WMGetTextFieldText(WMTextField *tPtr); void WMSetTextFieldText(WMTextField *tPtr, const char *text); void WMSetTextFieldAlignment(WMTextField *tPtr, WMAlignment alignment); void WMSetTextFieldFont(WMTextField *tPtr, WMFont *font); WMFont* WMGetTextFieldFont(WMTextField *tPtr); void WMSetTextFieldBordered(WMTextField *tPtr, Bool bordered); void WMSetTextFieldBeveled(WMTextField *tPtr, Bool flag); Bool WMGetTextFieldEditable(WMTextField *tPtr); void WMSetTextFieldEditable(WMTextField *tPtr, Bool flag); void WMSetTextFieldSecure(WMTextField *tPtr, Bool flag); void WMSelectTextFieldRange(WMTextField *tPtr, WMRange range); void WMSetTextFieldCursorPosition(WMTextField *tPtr, unsigned int position); unsigned WMGetTextFieldCursorPosition(WMTextField *tPtr); void WMSetTextFieldNextTextField(WMTextField *tPtr, WMTextField *next); void WMSetTextFieldPrevTextField(WMTextField *tPtr, WMTextField *prev); void WMSetTextFieldDelegate(WMTextField *tPtr, WMTextFieldDelegate *delegate); WMTextFieldDelegate* WMGetTextFieldDelegate(WMTextField *tPtr); extern char *WMTextDidChangeNotification; extern char *WMTextDidBeginEditingNotification; extern char *WMTextDidEndEditingNotification; /* ---[ WINGs/wscroller.c ]----------------------------------------------- */ WMScroller* WMCreateScroller(WMWidget *parent); void WMSetScrollerParameters(WMScroller *sPtr, float floatValue, float knobProportion); float WMGetScrollerKnobProportion(WMScroller *sPtr); float WMGetScrollerValue(WMScroller *sPtr); WMScrollerPart WMGetScrollerHitPart(WMScroller *sPtr); void WMSetScrollerAction(WMScroller *sPtr, WMAction *action, void *clientData); void WMSetScrollerArrowsPosition(WMScroller *sPtr, WMScrollArrowPosition position); extern char *WMScrollerDidScrollNotification; /* ---[ WINGs/wlist.c ]--------------------------------------------------- */ WMList* WMCreateList(WMWidget *parent); void WMSetListAllowMultipleSelection(WMList *lPtr, Bool flag); void WMSetListAllowEmptySelection(WMList *lPtr, Bool flag); #define WMAddListItem(lPtr, text) WMInsertListItem((lPtr), -1, (text)) WMListItem* WMInsertListItem(WMList *lPtr, int row, const char *text); void WMSortListItems(WMList *lPtr); void WMSortListItemsWithComparer(WMList *lPtr, WMCompareDataProc *func); int WMFindRowOfListItemWithTitle(WMList *lPtr, const char *title); WMListItem* WMGetListItem(WMList *lPtr, int row); WMArray* WMGetListItems(WMList *lPtr); void WMRemoveListItem(WMList *lPtr, int row); void WMSelectListItem(WMList *lPtr, int row); void WMUnselectListItem(WMList *lPtr, int row); /* This will select all items in range, and deselect all the others */ void WMSetListSelectionToRange(WMList *lPtr, WMRange range); /* This will select all items in range, leaving the others as they are */ void WMSelectListItemsInRange(WMList *lPtr, WMRange range); void WMSelectAllListItems(WMList *lPtr); void WMUnselectAllListItems(WMList *lPtr); void WMSetListUserDrawProc(WMList *lPtr, WMListDrawProc *proc); void WMSetListUserDrawItemHeight(WMList *lPtr, unsigned short height); int WMGetListItemHeight(WMList *lPtr); /* don't free the returned data */ WMArray* WMGetListSelectedItems(WMList *lPtr); /* * For the following 2 functions, in case WMList allows multiple selection, * the first item in the list of selected items, respective its row number, * will be returned. */ /* don't free the returned data */ WMListItem* WMGetListSelectedItem(WMList *lPtr); int WMGetListSelectedItemRow(WMList *lPtr); void WMSetListAction(WMList *lPtr, WMAction *action, void *clientData); void WMSetListDoubleAction(WMList *lPtr, WMAction *action, void *clientData); void WMClearList(WMList *lPtr); int WMGetListNumberOfRows(WMList *lPtr); void WMSetListPosition(WMList *lPtr, int row); void WMSetListBottomPosition(WMList *lPtr, int row); int WMGetListPosition(WMList *lPtr); Bool WMListAllowsMultipleSelection(WMList *lPtr); Bool WMListAllowsEmptySelection(WMList *lPtr); extern char *WMListDidScrollNotification; extern char *WMListSelectionDidChangeNotification; /* ---[ WINGs/wbrowser.c ]------------------------------------------------ */ WMBrowser* WMCreateBrowser(WMWidget *parent); void WMSetBrowserAllowMultipleSelection(WMBrowser *bPtr, Bool flag); void WMSetBrowserAllowEmptySelection(WMBrowser *bPtr, Bool flag); void WMSetBrowserPathSeparator(WMBrowser *bPtr, const char *separator); void WMSetBrowserTitled(WMBrowser *bPtr, Bool flag); void WMLoadBrowserColumnZero(WMBrowser *bPtr); int WMAddBrowserColumn(WMBrowser *bPtr); void WMRemoveBrowserItem(WMBrowser *bPtr, int column, int row); void WMSetBrowserMaxVisibleColumns(WMBrowser *bPtr, int columns); void WMSetBrowserColumnTitle(WMBrowser *bPtr, int column, const char *title); WMListItem* WMInsertBrowserItem(WMBrowser *bPtr, int column, int row, const char *text, Bool isBranch); void WMSortBrowserColumn(WMBrowser *bPtr, int column); void WMSortBrowserColumnWithComparer(WMBrowser *bPtr, int column, WMCompareDataProc *func); /* Don't free the returned string. */ char* WMSetBrowserPath(WMBrowser *bPtr, char *path); /* free the returned string */ char* WMGetBrowserPath(WMBrowser *bPtr); /* free the returned string */ char* WMGetBrowserPathToColumn(WMBrowser *bPtr, int column); /* free the returned array */ WMArray* WMGetBrowserPaths(WMBrowser *bPtr); 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); int WMGetBrowserSelectedColumn(WMBrowser *bPtr); int WMGetBrowserSelectedRowInColumn(WMBrowser *bPtr, int column); int WMGetBrowserNumberOfColumns(WMBrowser *bPtr); int WMGetBrowserMaxVisibleColumns(WMBrowser *bPtr); WMList* WMGetBrowserListInColumn(WMBrowser *bPtr, int column); void WMSetBrowserDelegate(WMBrowser *bPtr, WMBrowserDelegate *delegate); Bool WMBrowserAllowsMultipleSelection(WMBrowser *bPtr); Bool WMBrowserAllowsEmptySelection(WMBrowser *bPtr); void WMSetBrowserHasScroller(WMBrowser *bPtr, int hasScroller); /* ---[ WINGs/wmenuitem.c ]----------------------------------------------- */ Bool WMMenuItemIsSeparator(WMMenuItem *item); WMMenuItem* WMCreateMenuItem(void); void WMDestroyMenuItem(WMMenuItem *item); Bool WMGetMenuItemEnabled(WMMenuItem *item); void WMSetMenuItemEnabled(WMMenuItem *item, Bool flag); char* WMGetMenuItemShortcut(WMMenuItem *item); unsigned WMGetMenuItemShortcutModifierMask(WMMenuItem *item); void WMSetMenuItemShortcut(WMMenuItem *item, const char *shortcut); void WMSetMenuItemShortcutModifierMask(WMMenuItem *item, unsigned mask); void* WMGetMenuItemRepresentedObject(WMMenuItem *item); void WMSetMenuItemRepresentedObject(WMMenuItem *item, void *object); void WMSetMenuItemAction(WMMenuItem *item, WMAction *action, void *data); WMAction* WMGetMenuItemAction(WMMenuItem *item); void* WMGetMenuItemData(WMMenuItem *item); void WMSetMenuItemTitle(WMMenuItem *item, const char *title); char* WMGetMenuItemTitle(WMMenuItem *item); void WMSetMenuItemState(WMMenuItem *item, int state); int WMGetMenuItemState(WMMenuItem *item); void WMSetMenuItemPixmap(WMMenuItem *item, WMPixmap *pixmap); WMPixmap* WMGetMenuItemPixmap(WMMenuItem *item); void WMSetMenuItemOnStatePixmap(WMMenuItem *item, WMPixmap *pixmap); WMPixmap* WMGetMenuItemOnStatePixmap(WMMenuItem *item); void WMSetMenuItemOffStatePixmap(WMMenuItem *item, WMPixmap *pixmap); WMPixmap* WMGetMenuItemOffStatePixmap(WMMenuItem *item); void WMSetMenuItemMixedStatePixmap(WMMenuItem *item, WMPixmap *pixmap); WMPixmap* WMGetMenuItemMixedStatePixmap(WMMenuItem *item); /*void WMSetMenuItemSubmenu(WMMenuItem *item, WMMenu *submenu); WMMenu* WMGetMenuItemSubmenu(WMMenuItem *item); Bool WMGetMenuItemHasSubmenu(WMMenuItem *item); */ /* ---[ WINGs/wpopupbutton.c ]-------------------------------------------- */ WMPopUpButton* WMCreatePopUpButton(WMWidget *parent); void WMSetPopUpButtonAction(WMPopUpButton *sPtr, WMAction *action, void *clientData); void WMSetPopUpButtonPullsDown(WMPopUpButton *bPtr, Bool flag); WMMenuItem* WMAddPopUpButtonItem(WMPopUpButton *bPtr, const char *title); WMMenuItem* WMInsertPopUpButtonItem(WMPopUpButton *bPtr, int index, const char *title); void WMRemovePopUpButtonItem(WMPopUpButton *bPtr, int index); void WMSetPopUpButtonItemEnabled(WMPopUpButton *bPtr, int index, Bool flag); Bool WMGetPopUpButtonItemEnabled(WMPopUpButton *bPtr, int index); void WMSetPopUpButtonSelectedItem(WMPopUpButton *bPtr, int index); int WMGetPopUpButtonSelectedItem(WMPopUpButton *bPtr); void WMSetPopUpButtonText(WMPopUpButton *bPtr, const char *text); /* don't free the returned data */ char* WMGetPopUpButtonItem(WMPopUpButton *bPtr, int index); WMMenuItem* WMGetPopUpButtonMenuItem(WMPopUpButton *bPtr, int index); int WMGetPopUpButtonNumberOfItems(WMPopUpButton *bPtr); void WMSetPopUpButtonEnabled(WMPopUpButton *bPtr, Bool flag); Bool WMGetPopUpButtonEnabled(WMPopUpButton *bPtr); /* ---[ WINGs/wprogressindicator.c ]------------------------------------- */ WMProgressIndicator* WMCreateProgressIndicator(WMWidget *parent); void WMSetProgressIndicatorMinValue(WMProgressIndicator *progressindicator, int value); void WMSetProgressIndicatorMaxValue(WMProgressIndicator *progressindicator, int value); void WMSetProgressIndicatorValue(WMProgressIndicator *progressindicator, int value); int WMGetProgressIndicatorMinValue(WMProgressIndicator *progressindicator); int WMGetProgressIndicatorMaxValue(WMProgressIndicator *progressindicator); int WMGetProgressIndicatorValue(WMProgressIndicator *progressindicator); /* ---[ WINGs/wcolorpanel.c ]--------------------------------------------- */ WMColorPanel* WMGetColorPanel(WMScreen *scrPtr); void WMFreeColorPanel(WMColorPanel *panel); void WMShowColorPanel(WMColorPanel *panel); void WMCloseColorPanel(WMColorPanel *panel); void WMSetColorPanelColor(WMColorPanel *panel, WMColor *color); WMColor* WMGetColorPanelColor(WMColorPanel *panel); void WMSetColorPanelPickerMode(WMColorPanel *panel, WMColorPanelMode mode); void WMSetColorPanelAction(WMColorPanel *panel, WMAction2 *action, void *data); extern char *WMColorPanelColorChangedNotification; /* ---[ WINGs/wcolorwell.c ]---------------------------------------------- */ WMColorWell* WMCreateColorWell(WMWidget *parent); void WMSetColorWellColor(WMColorWell *cPtr, WMColor *color); WMColor* WMGetColorWellColor(WMColorWell *cPtr); void WSetColorWellBordered(WMColorWell *cPtr, Bool flag); extern char *WMColorWellDidChangeNotification; /* ---[ WINGs/wscrollview.c ]--------------------------------------------- */ WMScrollView* WMCreateScrollView(WMWidget *parent); void WMResizeScrollViewContent(WMScrollView *sPtr, unsigned int width, unsigned int height); void WMSetScrollViewHasHorizontalScroller(WMScrollView *sPtr, Bool flag); void WMSetScrollViewHasVerticalScroller(WMScrollView *sPtr, Bool flag); void WMSetScrollViewContentView(WMScrollView *sPtr, WMView *view); void WMSetScrollViewRelief(WMScrollView *sPtr, WMReliefType type); WMRect WMGetScrollViewVisibleRect(WMScrollView *sPtr); WMScroller* WMGetScrollViewHorizontalScroller(WMScrollView *sPtr); WMScroller* WMGetScrollViewVerticalScroller(WMScrollView *sPtr); void WMSetScrollViewLineScroll(WMScrollView *sPtr, int amount); void WMSetScrollViewPageScroll(WMScrollView *sPtr, int amount); /* ---[ WINGs/wslider.c ]------------------------------------------------- */ WMSlider* WMCreateSlider(WMWidget *parent); int WMGetSliderMinValue(WMSlider *slider); int WMGetSliderMaxValue(WMSlider *slider); int WMGetSliderValue(WMSlider *slider); void WMSetSliderMinValue(WMSlider *slider, int value); void WMSetSliderMaxValue(WMSlider *slider, int value); void WMSetSliderValue(WMSlider *slider, int value); void WMSetSliderContinuous(WMSlider *slider, Bool flag); void WMSetSliderAction(WMSlider *slider, WMAction *action, void *data); void WMSetSliderKnobThickness(WMSlider *sPtr, int thickness); void WMSetSliderImage(WMSlider *sPtr, WMPixmap *pixmap); /* ---[ WINGs/wsplitview.c ]---------------------------------------------- */ WMSplitView* WMCreateSplitView(WMWidget *parent); Bool WMGetSplitViewVertical(WMSplitView *sPtr); void WMSetSplitViewVertical(WMSplitView *sPtr, Bool flag); int WMGetSplitViewSubviewsCount(WMSplitView *sPtr); /* ??? remove ??? */ WMView* WMGetSplitViewSubviewAt(WMSplitView *sPtr, int index); /* remove the first subview == view */ void WMRemoveSplitViewSubview(WMSplitView *sPtr, WMView *view); void WMRemoveSplitViewSubviewAt(WMSplitView *sPtr, int index); void WMAddSplitViewSubview(WMSplitView *sPtr, WMView *subview); void WMAdjustSplitViewSubviews(WMSplitView *sPtr); void WMSetSplitViewConstrainProc(WMSplitView *sPtr, WMSplitViewConstrainProc *proc); /* void WMSetSplitViewResizeSubviewsProc(WMSplitView *sPtr, WMSplitViewResizeSubviewsProc *proc); */ int WMGetSplitViewDividerThickness(WMSplitView *sPtr); /* ...................................................................... */ WMRuler* WMCreateRuler (WMWidget *parent); WMRulerMargins* WMGetRulerMargins(WMRuler *rPtr); void WMSetRulerMargins(WMRuler *rPtr, WMRulerMargins margins); Bool WMIsMarginEqualToMargin(WMRulerMargins *aMargin, WMRulerMargins *anotherMargin); int WMGetGrabbedRulerMargin(WMRuler *rPtr); int WMGetReleasedRulerMargin(WMRuler *rPtr); int WMGetRulerOffset(WMRuler *rPtr); void WMSetRulerOffset(WMRuler *rPtr, int pixels); void WMSetRulerMoveAction(WMRuler *rPtr, WMAction *action, void *clientData); void WMSetRulerReleaseAction(WMRuler *rPtr, WMAction *action, void *clientData); /* ....................................................................... */ #define WMCreateText(parent) WMCreateTextForDocumentType \ ((parent), (NULL), (NULL)) WMText* WMCreateTextForDocumentType(WMWidget *parent, WMAction *parser, WMAction *writer); void WMSetTextDelegate(WMText *tPtr, WMTextDelegate *delegate); void WMFreezeText(WMText *tPtr); #define WMRefreshText(tPtr) WMThawText((tPtr)) void WMThawText(WMText *tPtr); int WMScrollText(WMText *tPtr, int amount); int WMPageText(WMText *tPtr, Bool direction); void WMSetTextHasHorizontalScroller(WMText *tPtr, Bool shouldhave); void WMSetTextHasVerticalScroller(WMText *tPtr, Bool shouldhave); void WMSetTextHasRuler(WMText *tPtr, Bool shouldhave); void WMShowTextRuler(WMText *tPtr, Bool show); int WMGetTextRulerShown(WMText *tPtr); void WMSetTextEditable(WMText *tPtr, Bool editable); int WMGetTextEditable(WMText *tPtr); void WMSetTextUsesMonoFont(WMText *tPtr, Bool mono); int WMGetTextUsesMonoFont(WMText *tPtr); void WMSetTextIndentNewLines(WMText *tPtr, Bool indent); void WMSetTextIgnoresNewline(WMText *tPtr, Bool ignore); int WMGetTextIgnoresNewline(WMText *tPtr); void WMSetTextDefaultFont(WMText *tPtr, WMFont *font); WMFont* WMGetTextDefaultFont(WMText *tPtr); void WMSetTextDefaultColor(WMText *tPtr, WMColor *color); WMColor* WMGetTextDefaultColor(WMText *tPtr); void WMSetTextRelief(WMText *tPtr, WMReliefType relief); void WMSetTextForegroundColor(WMText *tPtr, WMColor *color); void WMSetTextBackgroundColor(WMText *tPtr, WMColor *color); void WMSetTextBackgroundPixmap(WMText *tPtr, WMPixmap *pixmap); void WMPrependTextStream(WMText *tPtr, const char *text); void WMAppendTextStream(WMText *tPtr, const char *text); #define WMClearText(tPtr) WMAppendTextStream \ ((tPtr), (NULL)) /* free the text */ char* WMGetTextStream(WMText *tPtr); /* free the text */ char* WMGetTextSelectedStream(WMText *tPtr); /* destroy the array */ WMArray* WMGetTextObjects(WMText *tPtr); /* destroy the array */ WMArray* WMGetTextSelectedObjects(WMText *tPtr); void WMSetTextSelectionColor(WMText *tPtr, WMColor *color); WMColor* WMGetTextSelectionColor(WMText *tPtr); void WMSetTextSelectionFont(WMText *tPtr, WMFont *font); WMFont* WMGetTextSelectionFont(WMText *tPtr); void WMSetTextSelectionUnderlined(WMText *tPtr, int underlined); int WMGetTextSelectionUnderlined(WMText *tPtr); void WMSetTextAlignment(WMText *tPtr, WMAlignment alignment); Bool WMFindInTextStream(WMText *tPtr, const char *needle, Bool direction, Bool caseSensitive); /* Warning: replacement can be modified by the function */ Bool WMReplaceTextSelection(WMText *tPtr, char *replacement); /* parser related stuff... use only if implementing a new parser */ void* WMCreateTextBlockWithObject(WMText *tPtr, WMWidget *w, const char *description, WMColor *color, unsigned short first, unsigned short extraInfo); void* WMCreateTextBlockWithPixmap(WMText *tPtr, WMPixmap *p, const char *description, WMColor *color, unsigned short first, unsigned short extraInfo); void* WMCreateTextBlockWithText(WMText *tPtr, const char *text, WMFont *font, WMColor *color, unsigned short first, unsigned short length); void WMSetTextBlockProperties(WMText *tPtr, void *vtb, unsigned int first, unsigned int kanji, unsigned int underlined, int script, WMRulerMargins *margins); /* do NOT free the margins */ void WMGetTextBlockProperties(WMText *tPtr, void *vtb, unsigned int *first, unsigned int *kanji, unsigned int *underlined, int *script, WMRulerMargins *margins); int WMGetTextInsertType(WMText *tPtr); /*int WMGetTextBlocks(WMText *tPtr); void WMSetCurrentTextBlock(WMText *tPtr, int current); int WMGetCurrentTextBlock(WMText *tPtr);*/ void WMPrependTextBlock(WMText *tPtr, void *vtb); void WMAppendTextBlock(WMText *tPtr, void *vtb); void* WMRemoveTextBlock(WMText *tPtr); void WMDestroyTextBlock(WMText *tPtr, void *vtb); /* ---[ WINGs/wtabview.c ]------------------------------------------------ */ WMTabView* WMCreateTabView(WMWidget *parent); void WMSetTabViewType(WMTabView *tPtr, WMTabViewType type); void WMSetTabViewEnabled(WMTabView *tPtr, Bool flag); void WMSetTabViewFont(WMTabView *tPtr, WMFont *font); void WMAddItemInTabView(WMTabView *tPtr, WMTabViewItem *item); void WMInsertItemInTabView(WMTabView *tPtr, int index, WMTabViewItem *item); void WMRemoveTabViewItem(WMTabView *tPtr, WMTabViewItem *item); WMTabViewItem* WMAddTabViewItemWithView(WMTabView *tPtr, WMView *view, int identifier, const char *label); WMTabViewItem* WMTabViewItemAtPoint(WMTabView *tPtr, int x, int y); void WMSelectFirstTabViewItem(WMTabView *tPtr); void WMSelectLastTabViewItem(WMTabView *tPtr); void WMSelectNextTabViewItem(WMTabView *tPtr); void WMSelectPreviousTabViewItem(WMTabView *tPtr); WMTabViewItem* WMGetSelectedTabViewItem(WMTabView *tPtr); void WMSelectTabViewItem(WMTabView *tPtr, WMTabViewItem *item); void WMSelectTabViewItemAtIndex(WMTabView *tPtr, int index); void WMSetTabViewDelegate(WMTabView *tPtr, WMTabViewDelegate *delegate); WMTabViewItem* WMCreateTabViewItemWithIdentifier(int identifier); void WMSetTabViewItemEnabled(WMTabViewItem *tPtr, Bool flag); int WMGetTabViewItemIdentifier(WMTabViewItem *item); void WMSetTabViewItemLabel(WMTabViewItem *item, const char *label); char* WMGetTabViewItemLabel(WMTabViewItem *item); void WMSetTabViewItemView(WMTabViewItem *item, WMView *view); WMView* WMGetTabViewItemView(WMTabViewItem *item); void WMDestroyTabViewItem(WMTabViewItem *item); /* ---[ WINGs/wbox.c ]---------------------------------------------------- */ WMBox* WMCreateBox(WMWidget *parent); void WMSetBoxBorderWidth(WMBox *box, unsigned width); void WMAddBoxSubview(WMBox *bPtr, WMView *view, Bool expand, Bool fill, int minSize, int maxSize, int space); void WMAddBoxSubviewAtEnd(WMBox *bPtr, WMView *view, Bool expand, Bool fill, int minSize, int maxSize, int space); void WMRemoveBoxSubview(WMBox *bPtr, WMView *view); void WMSetBoxHorizontal(WMBox *box, Bool flag); /* ---[ WINGs/wpanel.c ]-------------------------------------------------- */ int WMRunAlertPanel(WMScreen *app, WMWindow *owner, const char *title, const char *msg, const char *defaultButton, const char *alternateButton, const char *otherButton); /* you can free the returned string */ char* WMRunInputPanel(WMScreen *app, WMWindow *owner, const char *title, const char *msg, const char *defaultText, const char *okButton, const char *cancelButton); WMAlertPanel* WMCreateAlertPanel(WMScreen *app, WMWindow *owner, const char *title, const char *msg, const char *defaultButton, const char *alternateButton, const char *otherButton); WMAlertPanel* WMCreateScaledAlertPanel(WMScreen *app, WMWindow *owner, const char *title, const char *msg, const char *defaultButton, const char *alternateButton, const char *otherButton); WMInputPanel* WMCreateInputPanel(WMScreen *app, WMWindow *owner, const char *title, const char *msg, const char *defaultText, const char *okButton, const char *cancelButton); WMInputPanel* WMCreateScaledInputPanel(WMScreen *app, WMWindow *owner, const char *title, const char *msg, const char *defaultText, const char *okButton, const char *cancelButton); WMGenericPanel* WMCreateGenericPanel(WMScreen *scrPtr, WMWindow *owner, const char *title, const char *defaultButton, const char *alternateButton); void WMDestroyAlertPanel(WMAlertPanel *panel); void WMDestroyInputPanel(WMInputPanel *panel); void WMDestroyGenericPanel(WMGenericPanel *panel); /* ---[ WINGs/wfilepanel.c ]---------------------------------------------- */ /* only 1 instance per WMScreen */ WMOpenPanel* WMGetOpenPanel(WMScreen *scrPtr); WMSavePanel* WMGetSavePanel(WMScreen *scrPtr); void WMSetFilePanelCanChooseDirectories(WMFilePanel *panel, Bool flag); void WMSetFilePanelCanChooseFiles(WMFilePanel *panel, Bool flag); void WMSetFilePanelAutoCompletion(WMFilePanel *panel, Bool flag); void WMSetFilePanelDirectory(WMFilePanel *panel, char *path); /* you can free the returned string */ char* WMGetFilePanelFileName(WMFilePanel *panel); void WMFreeFilePanel(WMFilePanel *panel); int WMRunModalFilePanelForDirectory(WMFilePanel *panel, WMWindow *owner, char *path, const char *name, char **fileTypes); void WMSetFilePanelAccessoryView(WMFilePanel *panel, WMView *view); WMView* WMGetFilePanelAccessoryView(WMFilePanel *panel); /* ---[ WINGs/wfontpanel.c ]---------------------------------------------- */ /* only 1 instance per WMScreen */ WMFontPanel* WMGetFontPanel(WMScreen *scr); void WMShowFontPanel(WMFontPanel *panel); void WMHideFontPanel(WMFontPanel *panel); void WMFreeFontPanel(WMFontPanel *panel); void WMSetFontPanelAction(WMFontPanel *panel, WMAction2 *action, void *data); void WMSetFontPanelFont(WMFontPanel *panel, const char *fontName); WMFont* WMGetFontPanelFont(WMFontPanel *panel); /* ---[ WINGs/configuration.c ]------------------------------------------- */ unsigned W_getconf_mouseWheelUp(void); unsigned W_getconf_mouseWheelDown(void); void W_setconf_doubleClickDelay(int value); #ifdef __cplusplus } #endif /* __cplusplus */ /* These definitions are not meant to be seen outside this file */ #undef _wings_noreturn #endif �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/WINGs/Makefile.am����������������������������������������������������������0000644�0001750�0001750�00000000301�13431646201�014672� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������## automake input file for WINGs - Headers subdir AUTOMAKE_OPTIONS = # is this a kluge? if so, how should i do it? includedir = @includedir@/WINGs include_HEADERS = WINGs.h WUtil.h WINGsP.h �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/WINGs/WINGsP.h�������������������������������������������������������������0000644�0001750�0001750�00000041762�13431646201�014076� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef _WINGSP_H_ #define _WINGSP_H_ #include <X11/Xlib.h> #include <X11/Xutil.h> #ifdef USE_PANGO #include <pango/pango.h> #endif #include <WINGs/WINGs.h> #if WINGS_H_VERSION < 20041030 #error There_is_an_old_WINGs.h_file_somewhere_in_your_system._Please_remove_it. #endif #include <assert.h> #include <stdlib.h> #include <string.h> #include <strings.h> #include <stdio.h> #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* ---[ global settigns ]------------------------------------------------- */ #define DOUBLE_BUFFER 1 #define SCROLLER_WIDTH 20 typedef struct _WINGsConfiguration { char *systemFont; char *boldSystemFont; int defaultFontSize; Bool antialiasedText; char *floppyPath; unsigned doubleClickDelay; unsigned mouseWheelUp; unsigned mouseWheelDown; } _WINGsConfiguration; extern char *_WINGS_progname; extern _WINGsConfiguration WINGsConfiguration; extern struct W_Application WMApplication; /* ---[ drag*.c ]--------------------------------------------------------- */ /* * We need to define these structure first because they are used in W_Screen * below. The rest of drag-related stuff if after because it needs W_Screen */ #define XDND_VERSION 3 typedef struct W_DraggingInfo { unsigned char protocolVersion; /* version supported on the other side */ Time timestamp; Atom sourceAction; Atom destinationAction; struct W_DragSourceInfo* sourceInfo; /* infos needed by source */ struct W_DragDestinationInfo* destInfo; /* infos needed by destination */ } W_DraggingInfo; /* ---[ Structures from WINGs.h ]----------------------------------------- */ /* Pre-definition of internal structs */ typedef struct W_Color W_Color; typedef struct W_Pixmap W_Pixmap; typedef struct W_View W_View; typedef struct W_FocusInfo { W_View *toplevel; W_View *focused; /* view that has the focus in this toplevel */ struct W_FocusInfo *next; } W_FocusInfo; typedef struct W_Screen { Display *display; int screen; int depth; Colormap colormap; Visual *visual; Time lastEventTime; Window rootWin; W_View *rootView; RContext *rcontext; struct W_IMContext *imctx; struct _XftDraw *xftdraw; /* shared XftDraw */ /* application related */ W_FocusInfo *focusInfo; RImage *applicationIconImage; /* image (can have alpha channel) */ W_Pixmap *applicationIconPixmap; /* pixmap - no alpha channel */ Window applicationIconWindow; struct W_Window *windowList; /* list of windows in the app */ Window groupLeader; /* the leader of the application */ /* also used for other things */ struct W_SelectionHandlers *selectionHandlerList; struct { unsigned int hasAppIcon:1; unsigned int simpleApplication:1; } aflags; WMOpenPanel *sharedOpenPanel; WMSavePanel *sharedSavePanel; struct W_FontPanel *sharedFontPanel; struct W_ColorPanel *sharedColorPanel; Pixmap stipple; W_View *dragSourceView; W_DraggingInfo dragInfo; /* colors */ W_Color *white; W_Color *black; W_Color *gray; W_Color *darkGray; GC stippleGC; GC copyGC; GC clipGC; GC monoGC; /* GC for 1bpp visuals */ GC xorGC; GC ixorGC; /* IncludeInferiors XOR */ GC drawStringGC; /* for WMDrawString() */ GC drawImStringGC; /* for WMDrawImageString() */ struct W_Font *normalFont; struct W_Font *boldFont; WMHashTable *fontCache; Bool antialiasedText; unsigned int ignoredModifierMask; /* modifiers to ignore when typing txt */ struct W_Balloon *balloon; W_Pixmap *checkButtonImageOn; W_Pixmap *checkButtonImageOff; W_Pixmap *radioButtonImageOn; W_Pixmap *radioButtonImageOff; W_Pixmap *buttonArrow; W_Pixmap *pushedButtonArrow; W_Pixmap *scrollerDimple; W_Pixmap *upArrow; W_Pixmap *downArrow; W_Pixmap *leftArrow; W_Pixmap *rightArrow; W_Pixmap *hiUpArrow; W_Pixmap *hiDownArrow; W_Pixmap *hiLeftArrow; W_Pixmap *hiRightArrow; W_Pixmap *pullDownIndicator; W_Pixmap *popUpIndicator; W_Pixmap *checkMark; W_Pixmap *homeIcon; W_Pixmap *altHomeIcon; W_Pixmap *trashcanIcon; W_Pixmap *altTrashcanIcon; W_Pixmap *createDirIcon; W_Pixmap *altCreateDirIcon; W_Pixmap *disketteIcon; W_Pixmap *altDisketteIcon; W_Pixmap *unmountIcon; W_Pixmap *altUnmountIcon; W_Pixmap *magnifyIcon; /*W_Pixmap *altMagnifyIcon;*/ W_Pixmap *wheelIcon; W_Pixmap *grayIcon; W_Pixmap *rgbIcon; W_Pixmap *cmykIcon; W_Pixmap *hsbIcon; W_Pixmap *customPaletteIcon; W_Pixmap *colorListIcon; W_Pixmap *defaultObjectIcon; Cursor defaultCursor; Cursor textCursor; Cursor invisibleCursor; Atom attribsAtom; /* GNUstepWindowAttributes */ Atom deleteWindowAtom; /* WM_DELETE_WINDOW */ Atom protocolsAtom; /* _XA_WM_PROTOCOLS */ Atom clipboardAtom; /* CLIPBOARD */ Atom xdndAwareAtom; /* XdndAware */ Atom xdndSelectionAtom; Atom xdndEnterAtom; Atom xdndLeaveAtom; Atom xdndPositionAtom; Atom xdndDropAtom; Atom xdndFinishedAtom; Atom xdndTypeListAtom; Atom xdndActionListAtom; Atom xdndActionDescriptionAtom; Atom xdndStatusAtom; Atom xdndActionCopy; Atom xdndActionMove; Atom xdndActionLink; Atom xdndActionAsk; Atom xdndActionPrivate; Atom wmIconDragOffsetAtom; Atom wmStateAtom; /* WM_STATE */ Atom utf8String; Atom netwmName; Atom netwmIconName; Atom netwmIcon; /* stuff for detecting double-clicks */ Time lastClickTime; /* time of last mousedown event */ Window lastClickWindow; /* window of the last mousedown */ struct W_View *modalView; unsigned modalLoop:1; unsigned ignoreNextDoubleClick:1; /* * New stuff in Window Maker 0.95.7 * Added at the end of the structure to avoid breaking binary compatibility * with previous versions of the toolkit */ W_Pixmap *tristateButtonImageOn; W_Pixmap *tristateButtonImageOff; W_Pixmap *tristateButtonImageTri; } W_Screen; #define W_DRAWABLE(scr) (scr)->rcontext->drawable /* ---[ configuration.c ]------------------------------------------------- */ void W_ReadConfigurations(void); /* ---[ drag*.c ]--------------------------------------------------------- */ typedef struct W_DragOperationItem { WMDragOperationType type; char* text; } W_DragOperationItem; typedef void* W_DndState(WMView *destView, XClientMessageEvent *event, WMDraggingInfo *info); typedef struct W_DragSourceInfo { WMView *sourceView; Window destinationWindow; W_DndState *state; WMSelectionProcs *selectionProcs; Window icon; WMPoint imageLocation; WMPoint mouseOffset; /* mouse pos in icon */ Cursor dragCursor; WMRect noPositionMessageZone; Atom firstThreeTypes[3]; } W_DragSourceInfo; typedef struct W_DragDestinationInfo { WMView *destView; WMView *xdndAwareView; Window sourceWindow; W_DndState *state; Bool sourceActionChanged; WMArray *sourceTypes; WMArray *requiredTypes; Bool typeListAvailable; WMArray *dropDatas; } W_DragDestinationInfo; /* -- Functions -- */ void W_HandleDNDClientMessage(WMView *toplevel, XClientMessageEvent *event); Atom W_OperationToAction(WMScreen *scr, WMDragOperationType operation); WMDragOperationType W_ActionToOperation(WMScreen *scr, Atom action); void W_FreeDragOperationItem(void* item); Bool W_SendDnDClientMessage(Display *dpy, Window win, Atom message, unsigned long data1, unsigned long data2, unsigned long data3, unsigned long data4, unsigned long data5); void W_DragSourceStartTimer(WMDraggingInfo *info); void W_DragSourceStopTimer(void); void W_DragSourceStateHandler(WMDraggingInfo *info, XClientMessageEvent *event); void W_DragDestinationStartTimer(WMDraggingInfo *info); void W_DragDestinationStopTimer(void); void W_DragDestinationStoreEnterMsgInfo(WMDraggingInfo *info, WMView *toplevel, XClientMessageEvent *event); void W_DragDestinationStorePositionMsgInfo(WMDraggingInfo *info, WMView *toplevel, XClientMessageEvent *event); void W_DragDestinationCancelDropOnEnter(WMView *toplevel, WMDraggingInfo *info); void W_DragDestinationStateHandler(WMDraggingInfo *info, XClientMessageEvent *event); void W_DragDestinationInfoClear(WMDraggingInfo *info); void W_FreeViewXdndPart(WMView *view); /* ---[ handlers.c ]------------------------------------------------------ */ Bool W_CheckIdleHandlers(void); void W_CheckTimerHandlers(void); Bool W_HandleInputEvents(Bool waitForInput, int inputfd); /* ---[ notification.c ]-------------------------------------------------- */ void W_InitNotificationCenter(void); void W_ReleaseNotificationCenter(void); void W_FlushASAPNotificationQueue(void); void W_FlushIdleNotificationQueue(void); /* ---[ selection.c ]----------------------------------------------------- */ void W_HandleSelectionEvent(XEvent *event); /* ---[ wapplication.c ]-------------------------------------------------- */ typedef struct W_Application { char *applicationName; int argc; char **argv; char *resourcePath; } W_Application; /* -- Functions -- */ void W_InitApplication(WMScreen *scr); Bool W_ApplicationInitialized(void); /* ---[ wballoon.c ]------------------------------------------------------ */ struct W_Balloon *W_CreateBalloon(WMScreen *scr); void W_BalloonHandleEnterView(WMView *view); void W_BalloonHandleLeaveView(WMView *view); /* ---[ wcolor.c ]-------------------------------------------------------- */ struct W_Color { struct W_Screen *screen; XColor color; unsigned short alpha; short refCount; GC gc; struct { unsigned int exact:1; } flags; }; #define W_PIXEL(c) (c)->color.pixel /* ---[ wevent.c ]-------------------------------------------------------- */ typedef struct W_EventHandler { unsigned long eventMask; WMEventProc *proc; void *clientData; } W_EventHandler; /* -- Functions -- */ void W_CallDestroyHandlers(W_View *view); /* ---[ wfont.c ]--------------------------------------------------------- */ typedef struct W_Font { struct W_Screen *screen; struct _XftFont *font; short height; short y; short refCount; char *name; #ifdef USE_PANGO PangoLayout *layout; #endif } W_Font; #define W_FONTID(f) (f)->font->fid /* ---[ widgets.c ]------------------------------------------------------- */ #define WC_UserWidget 128 #define CHECK_CLASS(widget, class) assert(W_CLASS(widget)==(class)) #define W_CLASS(widget) (((W_WidgetType*)(widget))->widgetClass) #define W_VIEW(widget) (((W_WidgetType*)(widget))->view) /* -- Functions -- */ W_Class W_RegisterUserWidget(void); /* ---[ winputmethod.c ]-------------------------------------------------- */ void W_InitIM(WMScreen *scr); void W_CreateIC(WMView *view); void W_DestroyIC(WMView *view); void W_FocusIC(WMView *view); void W_UnFocusIC(WMView *view); void W_SetPreeditPositon(W_View *view, int x, int y); int W_LookupString(W_View *view, XKeyPressedEvent *event, char *buffer, int buflen, KeySym *keysym, Status *status); /* ---[ wmisc.c ]--------------------------------------------------------- */ void W_DrawRelief(W_Screen *scr, Drawable d, int x, int y, unsigned int width, unsigned int height, WMReliefType relief); void W_DrawReliefWithGC(W_Screen *scr, Drawable d, int x, int y, unsigned int width, unsigned int height, WMReliefType relief, GC black, GC dark, GC light, GC white); void W_PaintTextAndImage(W_View *view, int wrap, WMColor *textColor, W_Font *font, WMReliefType relief, const char *text, WMAlignment alignment, W_Pixmap *image, WMImagePosition position, WMColor *backColor, int ofs); void W_PaintText(W_View *view, Drawable d, WMFont *font, int x, int y, int width, WMAlignment alignment, WMColor *color, int wrap, const char *text, int length); int W_GetTextHeight(WMFont *font, const char *text, int width, int wrap); /* ---[ wpixmap.c ]------------------------------------------------------- */ struct W_Pixmap { struct W_Screen *screen; Pixmap pixmap; Pixmap mask; unsigned short width; unsigned short height; short depth; short refCount; }; /* ---[ wview.c ]--------------------------------------------------------- */ typedef struct W_ViewDelegate { void *data; void (*didMove)(struct W_ViewDelegate*, WMView*); void (*didResize)(struct W_ViewDelegate*, WMView*); void (*willMove)(struct W_ViewDelegate*, WMView*, int*, int*); void (*willResize)(struct W_ViewDelegate*, WMView*, unsigned int*, unsigned int*); } W_ViewDelegate; struct W_View { struct W_Screen *screen; WMWidget *self; /* must point to the widget the view belongs to */ W_ViewDelegate *delegate; Window window; WMSize size; short topOffs; short leftOffs; short bottomOffs; short rightOffs; WMPoint pos; struct W_View *nextFocusChain; /* next/prev in focus chain */ struct W_View *prevFocusChain; struct W_View *nextResponder; /* next to receive keyboard events */ struct W_View *parent; /* parent WMView */ struct W_View *childrenList; /* first in list of child windows */ struct W_View *nextSister; /* next on parent's children list */ WMArray *eventHandlers; /* event handlers for this window */ unsigned long attribFlags; XSetWindowAttributes attribs; void *hangedData; /* data holder for user program */ WMColor *backColor; WMPixmap *backImage; Cursor cursor; Atom *droppableTypes; struct W_DragSourceProcs *dragSourceProcs; struct W_DragDestinationProcs *dragDestinationProcs; WMPixmap *dragImage; int helpContext; XIC xic; struct { unsigned int realized:1; unsigned int mapped:1; unsigned int parentDying:1; unsigned int dying:1; /* the view is being destroyed */ unsigned int topLevel:1; /* is a top level window */ unsigned int root:1; /* is the root window */ unsigned int mapWhenRealized:1; /* map the view when it's realized */ unsigned int alreadyDead:1; /* view was freed */ unsigned int dontCompressMotion:1; /* motion notify event compress */ unsigned int notifySizeChanged:1; unsigned int dontCompressExpose:1; /* expose event compress */ /* toplevel only */ unsigned int worksWhenModal:1; unsigned int pendingRelease1:1; unsigned int pendingRelease2:1; unsigned int pendingRelease3:1; unsigned int pendingRelease4:1; unsigned int pendingRelease5:1; unsigned int xdndHintSet:1; } flags; int refCount; }; #define W_VIEW_REALIZED(view) (view)->flags.realized #define W_VIEW_MAPPED(view) (view)->flags.mapped #define W_VIEW_DISPLAY(view) (view)->screen->display #define W_VIEW_SCREEN(view) (view)->screen #define W_VIEW_DRAWABLE(view) (view)->window #define W_VIEW_WIDTH(view) (view)->size.width #define W_VIEW_HEIGHT(view) (view)->size.height /* -- Functions -- */ W_View *W_GetViewForXWindow(Display *display, Window window); W_View *W_CreateView(W_View *parent); W_View *W_CreateTopView(W_Screen *screen); W_View *W_CreateUnmanagedTopView(W_Screen *screen); W_View *W_CreateRootView(W_Screen *screen); void W_DestroyView(W_View *view); void W_RealizeView(W_View *view); void W_RedisplayView(WMView *view); void W_ReparentView(W_View *view, W_View *newParent, int x, int y); void W_RaiseView(W_View *view); void W_LowerView(W_View *view); void W_MapView(W_View *view); void W_MapSubviews(W_View *view); void W_UnmapSubviews(W_View *view); W_View *W_TopLevelOfView(W_View *view); void W_UnmapView(W_View *view); WMView *W_RetainView(WMView *view); void W_ReleaseView(WMView *view); void W_MoveView(W_View *view, int x, int y); void W_ResizeView(W_View *view, unsigned int width, unsigned int height); void W_SetViewBackgroundColor(W_View *view, WMColor *color); void W_SetViewBackgroundPixmap(W_View *view, WMPixmap *pix); void W_SetViewCursor(W_View *view, Cursor cursor); void W_SetFocusOfTopLevel(W_View *toplevel, W_View *view); W_View *W_FocusedViewOfToplevel(W_View *view); void W_BroadcastMessage(W_View *targetParent, XEvent *event); void W_DispatchMessage(W_View *target, XEvent *event); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* _WINGSP_H_ */ ��������������WindowMaker-0.95.9/WINGs/WINGs/WUtil.h��������������������������������������������������������������0000644�0001750�0001750�00000073003�13642357773�014105� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* WUtil.h * * Copyright (c) 1998 scottc * Copyright (c) 1999-2004 Dan Pascu * Copyright (c) 1999-2000 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef _WUTIL_H_ #define _WUTIL_H_ #include <X11/Xlib.h> #include <limits.h> #include <sys/types.h> /* SunOS 4.x Blargh.... */ #ifndef NULL #define NULL ((void*)0) #endif #ifndef WMAX # define WMAX(a,b) ((a)>(b) ? (a) : (b)) #endif #ifndef WMIN # define WMIN(a,b) ((a)<(b) ? (a) : (b)) #endif #ifndef __GNUC__ #define __attribute__(x) /*NOTHING*/ #endif #ifdef NDEBUG #define wassertr(expr) \ if (!(expr)) { return; } #define wassertrv(expr, val) \ if (!(expr)) { return (val); } #else /* !NDEBUG */ #define wassertr(expr) \ if (!(expr)) { \ wwarning("wassertr: assertion %s failed", #expr); \ return;\ } #define wassertrv(expr, val) \ if (!(expr)) { \ wwarning("wassertrv: assertion %s failed", #expr); \ return (val);\ } #endif /* !NDEBUG */ #ifdef static_assert # define _wutil_static_assert(check, message) static_assert(check, message) #else # ifdef __STDC_VERSION__ # if __STDC_VERSION__ >= 201112L /* * Ideally, we would like to include <assert.h> to have 'static_assert' * properly defined, but as we have to be sure about portability and * because we're a public header we can't count on 'configure' to tell * us about availability, so we use the raw C11 keyword */ # define _wutil_static_assert(check, message) _Static_assert(check, message) # else # define _wutil_static_assert(check, message) /**/ # endif # else # define _wutil_static_assert(check, message) /**/ # endif #endif #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ typedef enum { WMPostWhenIdle = 1, WMPostASAP = 2, WMPostNow = 3 } WMPostingStyle; typedef enum { WNCNone = 0, WNCOnName = 1, WNCOnSender = 2 } WMNotificationCoalescing; enum { WBNotFound = INT_MIN, /* element was not found in WMBag */ WANotFound = -1 /* element was not found in WMArray */ }; typedef struct W_Array WMArray; typedef struct W_Bag WMBag; typedef struct W_Data WMData; typedef struct W_TreeNode WMTreeNode; typedef struct W_HashTable WMHashTable; typedef struct W_UserDefaults WMUserDefaults; typedef struct W_Notification WMNotification; typedef struct W_NotificationQueue WMNotificationQueue; typedef struct W_Host WMHost; typedef struct W_Connection WMConnection; typedef struct W_PropList WMPropList; /* Some typedefs for the handler stuff */ typedef void *WMHandlerID; typedef void WMCallback(void *data); typedef void WMInputProc(int fd, int mask, void *clientData); typedef int WMCompareDataProc(const void *item1, const void *item2); typedef void WMTreeWalkProc(WMTreeNode *aNode, void *data); typedef void WMFreeDataProc(void *data); /* Used by WMBag or WMArray for matching data */ typedef int WMMatchDataProc(const void *item, const void *cdata); typedef struct { int position; int count; } WMRange; /* DO NOT ACCESS THE CONTENTS OF THIS STRUCT */ typedef struct { void *table; void *nextItem; int index; } WMHashEnumerator; typedef struct { /* NULL is pointer hash */ unsigned (*hash)(const void *); /* NULL is pointer compare */ Bool (*keyIsEqual)(const void *, const void *); /* NULL does nothing */ void* (*retainKey)(const void *); /* NULL does nothing */ void (*releaseKey)(const void *); } WMHashTableCallbacks; typedef int WMArrayIterator; typedef void *WMBagIterator; typedef void WMNotificationObserverAction(void *observerData, WMNotification *notification); /* ---[ Macros ]---------------------------------------------------------- */ #define wlengthof(array) \ ({ \ _wutil_static_assert(sizeof(array) > sizeof(array[0]), \ "the macro 'wlengthof' cannot be used on pointers, only on known size arrays"); \ sizeof(array) / sizeof(array[0]); \ }) /* These macros can be used to adjust the location and size pixel values in * the panel layouts so that they match the configured size of the system * font (useful with high DPI screens, where you have to increase this size). * The macros require two local variables to be set: * wmScaleWidth: the width of the alphabet in the current system font * wmScaleHeight: the height of the current system font * Use the WMGetScaleBaseFromSystemFont function to set these values. */ #define WMScaleX(value) ((int)((double)value / 177.0 * (double)wmScaleWidth + 0.5)) #define WMScaleY(value) ((int)((double)value / 15.0 * (double)wmScaleHeight + 0.5)) /* ---[ WINGs/memory.c ]-------------------------------------------------- */ void* wmalloc(size_t size); void* wrealloc(void *ptr, size_t newsize); void wfree(void *ptr); void wrelease(void *ptr); void* wretain(void *ptr); typedef void waborthandler(int); waborthandler* wsetabort(waborthandler* handler); /* ---[ WINGs/error.c ]--------------------------------------------------- */ enum { WMESSAGE_TYPE_MESSAGE, WMESSAGE_TYPE_WARNING, WMESSAGE_TYPE_ERROR, WMESSAGE_TYPE_FATAL }; #define wmessage(fmt, args...) __wmessage( __func__, __FILE__, __LINE__, WMESSAGE_TYPE_MESSAGE, fmt, ## args) #define wwarning(fmt, args...) __wmessage( __func__, __FILE__, __LINE__, WMESSAGE_TYPE_WARNING, fmt, ## args) #define werror(fmt, args...) __wmessage( __func__, __FILE__, __LINE__, WMESSAGE_TYPE_ERROR, fmt, ## args) #define wfatal(fmt, args...) __wmessage( __func__, __FILE__, __LINE__, WMESSAGE_TYPE_FATAL, fmt, ## args) void __wmessage(const char *func, const char *file, int line, int type, const char *msg, ...) __attribute__((__format__(printf,5,6))); /* ---[ WINGs/findfile.c ]------------------------------------------------ */ /* For the 4 function below, you have to free the returned string when you no longer need it */ char* wfindfile(const char *paths, const char *file); char* wfindfileinlist(char *const *path_list, const char *file); char* wfindfileinarray(WMPropList* array, const char *file); char* wexpandpath(const char *path); int wcopy_file(const char *toPath, const char *srcFile, const char *destFile); /* don't free the returned string */ char* wgethomedir(void); /* ---[ WINGs/proplist.c ]------------------------------------------------ */ int wmkdirhier(const char *path); int wrmdirhier(const char *path); /* ---[ WINGs/string.c ]-------------------------------------------------- */ char *wstrdup(const char *str); char* wstrndup(const char *str, size_t len); /* Concatenate str1 with str2 and return that in a newly malloc'ed string. * str1 and str2 can be any strings including static and constant strings. * str1 and str2 will not be modified. * Free the returned string when you're done with it. */ char* wstrconcat(const char *str1, const char *str2); /* This will append src to dst, and return dst. dst MUST be either NULL * or a string that was a result of a dynamic allocation (malloc, realloc * wmalloc, wrealloc, ...). dst CANNOT be a static or a constant string! * Modifies dst (no new string is created except if dst==NULL in which case * it is equivalent to calling wstrdup(src) ). * The returned address may be different from the original address of dst, * so always assign the returned address to avoid dangling pointers. */ char* wstrappend(char *dst, const char *src); size_t wstrlcpy(char *, const char *, size_t); size_t wstrlcat(char *, const char *, size_t); void wtokensplit(char *command, char ***argv, int *argc); char* wtokennext(char *word, char **next); char* wtokenjoin(char **list, int count); void wtokenfree(char **tokens, int count); char* wtrimspace(const char *s); /* transform `s' so that the result is safe to pass to the shell as an argument. * returns a newly allocated string. * with very heavy inspirations from NetBSD's shquote(3). */ char *wshellquote(const char *s); /* ---[ WINGs/misc.c ]--------------------------------------------------- */ WMRange wmkrange(int start, int count); /* An application must call this function before exiting, to let WUtil do some internal cleanup */ void wutil_shutdown(void); /* ---[ WINGs/usleep.c ]-------------------------------------------------- */ void wusleep(unsigned int usec); /* ---[ WINGs/handlers.c ]------------------------------------------------ */ /* Event handlers: timer, idle, input */ WMHandlerID WMAddTimerHandler(int milliseconds, WMCallback *callback, void *cdata); WMHandlerID WMAddPersistentTimerHandler(int milliseconds, WMCallback *callback, void *cdata); void WMDeleteTimerWithClientData(void *cdata); void WMDeleteTimerHandler(WMHandlerID handlerID); WMHandlerID WMAddIdleHandler(WMCallback *callback, void *cdata); void WMDeleteIdleHandler(WMHandlerID handlerID); WMHandlerID WMAddInputHandler(int fd, int condition, WMInputProc *proc, void *clientData); void WMDeleteInputHandler(WMHandlerID handlerID); /* This function is used _only_ if you create a non-GUI program. * For GUI based programs use WMNextEvent()/WMHandleEvent() instead. * This function will handle all input/timer/idle events, then return. */ void WHandleEvents(void); /* ---[ WINGs/hashtable.c ]----------------------------------------------- */ WMHashTable* WMCreateHashTable(const WMHashTableCallbacks callbacks); void WMFreeHashTable(WMHashTable *table); void WMResetHashTable(WMHashTable *table); unsigned WMCountHashTable(WMHashTable *table); void* WMHashGet(WMHashTable *table, const void *key); /* Returns True if there is a value associated with <key> in the table, in * which case <retKey> and <retItem> will contain the item's internal key * address and the item's value respectively. * If there is no value associated with <key> it will return False and in * this case <retKey> and <retItem> will be undefined. * Use this when you need to perform your own custom retain/release mechanism * which requires access to the keys too. */ Bool WMHashGetItemAndKey(WMHashTable *table, const void *key, void **retItem, void **retKey); /* put data in table, replacing already existing data and returning * the old value */ void* WMHashInsert(WMHashTable *table, const void *key, const void *data); void WMHashRemove(WMHashTable *table, const void *key); /* warning: do not manipulate the table while using the enumerator functions */ WMHashEnumerator WMEnumerateHashTable(WMHashTable *table); void* WMNextHashEnumeratorItem(WMHashEnumerator *enumerator); void* WMNextHashEnumeratorKey(WMHashEnumerator *enumerator); /* Returns True if there is a next element, in which case key and item * will contain the next element's key and value respectively. * If there is no next element available it will return False and in this * case key and item will be undefined. */ Bool WMNextHashEnumeratorItemAndKey(WMHashEnumerator *enumerator, void **item, void **key); /* some predefined callback sets */ extern const WMHashTableCallbacks WMIntHashCallbacks; /* sizeof(keys) are <= sizeof(void*) */ extern const WMHashTableCallbacks WMStringHashCallbacks; /* keys are strings. Strings will be copied with wstrdup() * and freed with wfree() */ extern const WMHashTableCallbacks WMStringPointerHashCallbacks; /* keys are strings, but they are not copied */ /* ---[ WINGs/array.c ]--------------------------------------------------- */ /* * WMArray use an array to store the elements. * Item indexes may be only positive integer numbers. * The array cannot contain holes in it. * * Pros: * Fast [O(1)] access to elements * Fast [O(1)] push/pop * * Cons: * A little slower [O(n)] for insertion/deletion of elements that * aren't in the end */ WMArray* WMCreateArray(int initialSize); WMArray* WMCreateArrayWithDestructor(int initialSize, WMFreeDataProc *destructor); WMArray* WMCreateArrayWithArray(WMArray *array); #define WMDuplicateArray(array) WMCreateArrayWithArray(array) void WMEmptyArray(WMArray *array); void WMFreeArray(WMArray *array); int WMGetArrayItemCount(WMArray *array); /* appends other to array. other remains unchanged */ void WMAppendArray(WMArray *array, WMArray *other); /* add will place the element at the end of the array */ void WMAddToArray(WMArray *array, void *item); /* insert will increment the index of elements after it by 1 */ void WMInsertInArray(WMArray *array, int index, void *item); /* replace and set will return the old item WITHOUT calling the * destructor on it even if its available. Free the returned item yourself. */ void* WMReplaceInArray(WMArray *array, int index, void *item); #define WMSetInArray(array, index, item) WMReplaceInArray(array, index, item) /* delete and remove will remove the elements and cause the elements * after them to decrement their indexes by 1. Also will call the * destructor on the deleted element if there's one available. */ int WMDeleteFromArray(WMArray *array, int index); #define WMRemoveFromArray(array, item) WMRemoveFromArrayMatching(array, NULL, item) int WMRemoveFromArrayMatching(WMArray *array, WMMatchDataProc *match, void *cdata); void* WMGetFromArray(WMArray *array, int index); #define WMGetFirstInArray(array, item) WMFindInArray(array, NULL, item) /* pop will return the last element from the array, also removing it * from the array. The destructor is NOT called, even if available. * Free the returned element if needed by yourself */ void* WMPopFromArray(WMArray *array); int WMFindInArray(WMArray *array, WMMatchDataProc *match, void *cdata); int WMCountInArray(WMArray *array, void *item); /* comparer must return: * < 0 if a < b * > 0 if a > b * = 0 if a = b */ void WMSortArray(WMArray *array, WMCompareDataProc *comparer); void WMMapArray(WMArray *array, void (*function)(void*, void*), void *data); WMArray* WMGetSubarrayWithRange(WMArray* array, WMRange aRange); void* WMArrayFirst(WMArray *array, WMArrayIterator *iter); void* WMArrayLast(WMArray *array, WMArrayIterator *iter); /* The following 2 functions assume that the array doesn't change between calls */ void* WMArrayNext(WMArray *array, WMArrayIterator *iter); void* WMArrayPrevious(WMArray *array, WMArrayIterator *iter); /* The following 2 macros assume that the array doesn't change in the for loop */ #define WM_ITERATE_ARRAY(array, var, i) \ for (var = WMArrayFirst(array, &(i)); (i) != WANotFound; \ var = WMArrayNext(array, &(i))) #define WM_ETARETI_ARRAY(array, var, i) \ for (var = WMArrayLast(array, &(i)); (i) != WANotFound; \ var = WMArrayPrevious(array, &(i))) /* ---[ WINGs/bagtree.c ]------------------------------------------------- */ /* * Tree bags use a red-black tree for storage. * Item indexes may be any integer number. * * Pros: * O(lg n) insertion/deletion/search * Good for large numbers of elements with sparse indexes * * Cons: * O(lg n) insertion/deletion/search * Slow for storing small numbers of elements */ #define WMCreateBag(size) WMCreateTreeBag() #define WMCreateBagWithDestructor(size, d) WMCreateTreeBagWithDestructor(d) WMBag* WMCreateTreeBag(void); WMBag* WMCreateTreeBagWithDestructor(WMFreeDataProc *destructor); int WMGetBagItemCount(WMBag *bag); void WMAppendBag(WMBag *bag, WMBag *other); void WMPutInBag(WMBag *bag, void *item); /* insert will increment the index of elements after it by 1 */ void WMInsertInBag(WMBag *bag, int index, void *item); /* erase will remove the element from the bag, * but will keep the index of the other elements unchanged */ int WMEraseFromBag(WMBag *bag, int index); /* delete and remove will remove the elements and cause the elements * after them to decrement their indexes by 1 */ int WMDeleteFromBag(WMBag *bag, int index); int WMRemoveFromBag(WMBag *bag, void *item); void* WMGetFromBag(WMBag *bag, int index); void* WMReplaceInBag(WMBag *bag, int index, void *item); #define WMSetInBag(bag, index, item) WMReplaceInBag(bag, index, item) /* comparer must return: * < 0 if a < b * > 0 if a > b * = 0 if a = b */ void WMSortBag(WMBag *bag, WMCompareDataProc *comparer); void WMEmptyBag(WMBag *bag); void WMFreeBag(WMBag *bag); void WMMapBag(WMBag *bag, void (*function)(void*, void*), void *data); int WMGetFirstInBag(WMBag *bag, void *item); int WMCountInBag(WMBag *bag, void *item); int WMFindInBag(WMBag *bag, WMMatchDataProc *match, void *cdata); void* WMBagFirst(WMBag *bag, WMBagIterator *ptr); void* WMBagLast(WMBag *bag, WMBagIterator *ptr); /* The following 4 functions assume that the bag doesn't change between calls */ void* WMBagNext(WMBag *bag, WMBagIterator *ptr); void* WMBagPrevious(WMBag *bag, WMBagIterator *ptr); void* WMBagIteratorAtIndex(WMBag *bag, int index, WMBagIterator *ptr); int WMBagIndexForIterator(WMBag *bag, WMBagIterator ptr); /* The following 2 macros assume that the bag doesn't change in the for loop */ #define WM_ITERATE_BAG(bag, var, i) \ for (var = WMBagFirst(bag, &(i)); (i) != NULL; \ var = WMBagNext(bag, &(i))) #define WM_ETARETI_BAG(bag, var, i) \ for (var = WMBagLast(bag, &(i)); (i) != NULL; \ var = WMBagPrevious(bag, &(i))) /* ---[ WINGs/data.c ]---------------------------------------------------- */ /* WMData handling */ /* Creating/destroying data */ WMData* WMCreateDataWithCapacity(unsigned capacity); WMData* WMCreateDataWithLength(unsigned length); WMData* WMCreateDataWithBytes(const void *bytes, unsigned length); /* destructor is a function called to free the data when releasing the data * object, or NULL if no freeing of data is necesary. */ WMData* WMCreateDataWithBytesNoCopy(void *bytes, unsigned length, WMFreeDataProc *destructor); WMData* WMCreateDataWithData(WMData *aData); WMData* WMRetainData(WMData *aData); void WMReleaseData(WMData *aData); /* Adjusting capacity */ void WMSetDataCapacity(WMData *aData, unsigned capacity); void WMSetDataLength(WMData *aData, unsigned length); void WMIncreaseDataLengthBy(WMData *aData, unsigned extraLength); /* Accessing data */ const void* WMDataBytes(WMData *aData); void WMGetDataBytes(WMData *aData, void *buffer); void WMGetDataBytesWithLength(WMData *aData, void *buffer, unsigned length); void WMGetDataBytesWithRange(WMData *aData, void *buffer, WMRange aRange); WMData* WMGetSubdataWithRange(WMData *aData, WMRange aRange); /* Testing data */ Bool WMIsDataEqualToData(WMData *aData, WMData *anotherData); unsigned WMGetDataLength(WMData *aData); /* Adding data */ void WMAppendDataBytes(WMData *aData, const void *bytes, unsigned length); void WMAppendData(WMData *aData, WMData *anotherData); /* Modifying data */ void WMReplaceDataBytesInRange(WMData *aData, WMRange aRange, const void *bytes); void WMResetDataBytesInRange(WMData *aData, WMRange aRange); void WMSetData(WMData *aData, WMData *anotherData); void WMSetDataFormat(WMData *aData, unsigned format); unsigned WMGetDataFormat(WMData *aData); /* Storing data */ /* ---[ WINGs/tree.c ]---------------------------------------------------- */ /* Generic Tree and TreeNode */ WMTreeNode* WMCreateTreeNode(void *data); WMTreeNode* WMCreateTreeNodeWithDestructor(void *data, WMFreeDataProc *destructor); WMTreeNode* WMInsertItemInTree(WMTreeNode *parent, int index, void *item); #define WMAddItemToTree(parent, item) WMInsertItemInTree(parent, -1, item) WMTreeNode* WMInsertNodeInTree(WMTreeNode *parent, int index, WMTreeNode *aNode); #define WMAddNodeToTree(parent, aNode) WMInsertNodeInTree(parent, -1, aNode) void WMDestroyTreeNode(WMTreeNode *aNode); void WMDeleteLeafForTreeNode(WMTreeNode *aNode, int index); void WMRemoveLeafForTreeNode(WMTreeNode *aNode, void *leaf); void* WMReplaceDataForTreeNode(WMTreeNode *aNode, void *newData); void* WMGetDataForTreeNode(WMTreeNode *aNode); int WMGetTreeNodeDepth(WMTreeNode *aNode); WMTreeNode* WMGetParentForTreeNode(WMTreeNode *aNode); /* Sort only the leaves of the passed node */ void WMSortLeavesForTreeNode(WMTreeNode *aNode, WMCompareDataProc *comparer); /* Sort all tree recursively starting from the passed node */ void WMSortTree(WMTreeNode *aNode, WMCompareDataProc *comparer); /* Returns the first node which matches node's data with cdata by 'match' */ WMTreeNode* WMFindInTree(WMTreeNode *aTree, WMMatchDataProc *match, void *cdata); /* Returns the first node where node's data matches cdata by 'match' and node is * at most `limit' depths down from `aTree'. */ WMTreeNode *WMFindInTreeWithDepthLimit(WMTreeNode * aTree, WMMatchDataProc * match, void *cdata, int limit); /* Returns first tree node that has data == cdata */ #define WMGetFirstInTree(aTree, cdata) WMFindInTree(aTree, NULL, cdata) /* Walk every node of aNode with `walk' */ void WMTreeWalk(WMTreeNode *aNode, WMTreeWalkProc * walk, void *data, Bool DepthFirst); /* ---[ WINGs/data.c ]---------------------------------------------------- */ WMNotification* WMCreateNotification(const char *name, void *object, void *clientData); void WMReleaseNotification(WMNotification *notification); WMNotification* WMRetainNotification(WMNotification *notification); void* WMGetNotificationClientData(WMNotification *notification); void* WMGetNotificationObject(WMNotification *notification); const char* WMGetNotificationName(WMNotification *notification); void WMAddNotificationObserver(WMNotificationObserverAction *observerAction, void *observer, const char *name, void *object); void WMPostNotification(WMNotification *notification); void WMRemoveNotificationObserver(void *observer); void WMRemoveNotificationObserverWithName(void *observer, const char *name, void *object); void WMPostNotificationName(const char *name, void *object, void *clientData); WMNotificationQueue* WMGetDefaultNotificationQueue(void); WMNotificationQueue* WMCreateNotificationQueue(void); void WMDequeueNotificationMatching(WMNotificationQueue *queue, WMNotification *notification, unsigned mask); void WMEnqueueNotification(WMNotificationQueue *queue, WMNotification *notification, WMPostingStyle postingStyle); void WMEnqueueCoalesceNotification(WMNotificationQueue *queue, WMNotification *notification, WMPostingStyle postingStyle, unsigned coalesceMask); /* ---[ WINGs/proplist.c ]------------------------------------------------ */ /* Property Lists handling */ void WMPLSetCaseSensitive(Bool caseSensitive); WMPropList* WMCreatePLString(const char *str); WMPropList* WMCreatePLData(WMData *data); WMPropList* WMCreatePLDataWithBytes(const unsigned char *bytes, unsigned int length); WMPropList* WMCreatePLDataWithBytesNoCopy(unsigned char *bytes, unsigned int length, WMFreeDataProc *destructor); WMPropList* WMCreatePLArray(WMPropList *elem, ...); WMPropList* WMCreatePLDictionary(WMPropList *key, WMPropList *value, ...); WMPropList* WMRetainPropList(WMPropList *plist); void WMReleasePropList(WMPropList *plist); /* Objects inserted in arrays and dictionaries will be retained, * so you can safely release them after insertion. * For dictionaries both the key and value are retained. * Objects removed from arrays or dictionaries are released */ void WMInsertInPLArray(WMPropList *plist, int index, WMPropList *item); void WMAddToPLArray(WMPropList *plist, WMPropList *item); void WMDeleteFromPLArray(WMPropList *plist, int index); void WMRemoveFromPLArray(WMPropList *plist, WMPropList *item); void WMPutInPLDictionary(WMPropList *plist, WMPropList *key, WMPropList *value); void WMRemoveFromPLDictionary(WMPropList *plist, WMPropList *key); /* It will insert all key/value pairs from source into dest, overwriting * the values with the same keys from dest, keeping all values with keys * only present in dest unchanged */ WMPropList* WMMergePLDictionaries(WMPropList *dest, WMPropList *source, Bool recursive); /* It will remove all key/value pairs from dest for which there is an * identical key/value present in source. Entires only present in dest, or * which have different values in dest than in source will be preserved. */ WMPropList* WMSubtractPLDictionaries(WMPropList *dest, WMPropList *source, Bool recursive); int WMGetPropListItemCount(WMPropList *plist); Bool WMIsPLString(WMPropList *plist); Bool WMIsPLData(WMPropList *plist); Bool WMIsPLArray(WMPropList *plist); Bool WMIsPLDictionary(WMPropList *plist); Bool WMIsPropListEqualTo(WMPropList *plist, WMPropList *other); /* Returns a reference. Do not free it! */ char* WMGetFromPLString(WMPropList *plist); /* Returns a reference. Do not free it! */ WMData* WMGetFromPLData(WMPropList *plist); /* Returns a reference. Do not free it! */ const unsigned char* WMGetPLDataBytes(WMPropList *plist); int WMGetPLDataLength(WMPropList *plist); /* Returns a reference. */ WMPropList* WMGetFromPLArray(WMPropList *plist, int index); /* Returns a reference. */ WMPropList* WMGetFromPLDictionary(WMPropList *plist, WMPropList *key); /* Returns a PropList array with all the dictionary keys. Release it when * you're done. Keys in array are retained from the original dictionary * not copied and need NOT to be released individually. */ WMPropList* WMGetPLDictionaryKeys(WMPropList *plist); /* Creates only the first level deep object. All the elements inside are * retained from the original */ WMPropList* WMShallowCopyPropList(WMPropList *plist); /* Makes a completely separate replica of the original proplist */ WMPropList* WMDeepCopyPropList(WMPropList *plist); WMPropList* WMCreatePropListFromDescription(const char *desc); /* Free the returned string when you no longer need it */ char* WMGetPropListDescription(WMPropList *plist, Bool indented); WMPropList* WMReadPropListFromFile(const char *file); WMPropList* WMReadPropListFromPipe(const char *command); Bool WMWritePropListToFile(WMPropList *plist, const char *path); /* ---[ WINGs/userdefaults.c ]-------------------------------------------- */ /* don't free the returned string */ const char* wusergnusteppath(void); /* Free the returned string when you no longer need it */ char* wdefaultspathfordomain(const char *domain); /* Free the returned string when you no longer need it */ char* wglobaldefaultspathfordomain(const char *domain); WMUserDefaults* WMGetStandardUserDefaults(void); WMUserDefaults* WMGetDefaultsFromPath(const char *path); void WMSynchronizeUserDefaults(WMUserDefaults *database); void WMSaveUserDefaults(WMUserDefaults *database); void WMEnableUDPeriodicSynchronization(WMUserDefaults *database, Bool enable); /* Returns a WMPropList array with all the keys in the user defaults database. * Free the array with WMReleasePropList() when no longer needed. * Keys in array are just retained references to the original keys */ WMPropList* WMGetUDKeys(WMUserDefaults *database); WMPropList* WMGetUDObjectForKey(WMUserDefaults *database, const char *defaultName); void WMSetUDObjectForKey(WMUserDefaults *database, WMPropList *object, const char *defaultName); void WMRemoveUDObjectForKey(WMUserDefaults *database, const char *defaultName); /* Returns a reference. Do not free it! */ char* WMGetUDStringForKey(WMUserDefaults *database, const char *defaultName); int WMGetUDIntegerForKey(WMUserDefaults *database, const char *defaultName); float WMGetUDFloatForKey(WMUserDefaults *database, const char *defaultName); Bool WMGetUDBoolForKey(WMUserDefaults *database, const char *defaultName); void WMSetUDStringForKey(WMUserDefaults *database, const char *value, const char *defaultName); void WMSetUDIntegerForKey(WMUserDefaults *database, int value, const char *defaultName); void WMSetUDFloatForKey(WMUserDefaults *database, float value, const char *defaultName); void WMSetUDBoolForKey(WMUserDefaults *database, Bool value, const char *defaultName); WMPropList* WMGetUDSearchList(WMUserDefaults *database); void WMSetUDSearchList(WMUserDefaults *database, WMPropList *list); extern char *WMUserDefaultsDidChangeNotification; /* ---[ WINGs/menuparser.c ]---------------------------------------------- */ typedef struct w_menu_parser *WMenuParser; WMenuParser WMenuParserCreate(const char *file_name, void *file, const char *include_default_paths); void WMenuParserRegisterSimpleMacro(WMenuParser parser, const char *name, const char *value); void WMenuParserError(WMenuParser parser, const char *msg, ...) __attribute__ ((format (printf, 2, 3))); const char *WMenuParserGetFilename(WMenuParser parser); Bool WMenuParserGetLine(WMenuParser parser, char **title, char **command, char **parameter, char **shortcut); void WMenuParserDelete(WMenuParser parser); /*-------------------------------------------------------------------------*/ /* Global variables */ extern int WCErrorCode; /*-------------------------------------------------------------------------*/ #ifdef __cplusplus } #endif /* __cplusplus */ #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/wfilepanel.c���������������������������������������������������������������0000644�0001750�0001750�00000056165�13431646201�014224� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> #include <dirent.h> #include <limits.h> #include <errno.h> #include <stdint.h> #include "WINGsP.h" #include "wconfig.h" #ifndef PATH_MAX #define PATH_MAX 1024 #endif typedef struct W_FilePanel { WMWindow *win; WMLabel *iconLabel; WMLabel *titleLabel; WMFrame *line; WMLabel *nameLabel; WMBrowser *browser; WMButton *okButton; WMButton *cancelButton; WMButton *homeButton; WMButton *trashcanButton; WMButton *createDirButton; WMButton *disketteButton; WMButton *unmountButton; WMView *accessoryView; WMTextField *fileField; char **fileTypes; struct { unsigned int canExit:1; unsigned int canceled:1; /* clicked on cancel */ unsigned int filtered:1; unsigned int canChooseFiles:1; unsigned int canChooseDirectories:1; unsigned int autoCompletion:1; unsigned int showAllFiles:1; unsigned int canFreeFileTypes:1; unsigned int fileMustExist:1; unsigned int panelType:1; } flags; } W_FilePanel; /* Type of panel */ #define WP_OPEN 0 #define WP_SAVE 1 #define PWIDTH 330 #define PHEIGHT 360 static void listDirectoryOnColumn(WMFilePanel * panel, int column, const char *path); static void browserClick(WMWidget *widget, void *p_panel); static void browserDClick(WMWidget *widget, void *p_panel); static void fillColumn(WMBrowserDelegate * self, WMBrowser * bPtr, int column, WMList * list); static void normalizePath(char *s); static void deleteFile(WMWidget *widget, void *p_panel); static void createDir(WMWidget *widget, void *p_panel); static void goHome(WMWidget *widget, void *p_panel); static void goFloppy(WMWidget *widget, void *p_panel); static void goUnmount(WMWidget *widget, void *p_panel); static void buttonClick(WMWidget *widget, void *p_panel); static char *getCurrentFileName(WMFilePanel * panel); static void handleEvents(XEvent * event, void *data); static WMBrowserDelegate browserDelegate = { NULL, /* data */ fillColumn, /* createRowsForColumn */ NULL, /* titleOfColumn */ NULL, /* didScroll */ NULL /* willScroll */ }; static int closestListItem(WMList * list, const char *text, Bool exact) { WMListItem *item; WMArray *items = WMGetListItems(list); int i, nb_item, len = strlen(text); if (len == 0) return -1; nb_item = WMGetArrayItemCount(items); for (i = 0; i < nb_item; i++) { item = WMGetFromArray(items, i); if ((exact && strcmp(item->text, text) == 0) || (!exact && strncmp(item->text, text, len) == 0)) { return i; } } return -1; } static void textChangedObserver(void *observerData, WMNotification * notification) { W_FilePanel *panel = (W_FilePanel *) observerData; char *text; WMList *list; int col = WMGetBrowserNumberOfColumns(panel->browser) - 1; int i; uintptr_t textEvent; if (!(list = WMGetBrowserListInColumn(panel->browser, col))) return; text = WMGetTextFieldText(panel->fileField); textEvent = (uintptr_t)WMGetNotificationClientData(notification); if (panel->flags.autoCompletion && textEvent != WMDeleteTextEvent) i = closestListItem(list, text, False); else i = closestListItem(list, text, True); WMSelectListItem(list, i); if (i >= 0 && panel->flags.autoCompletion) { WMListItem *item = WMGetListItem(list, i); int textLen = strlen(text), itemTextLen = strlen(item->text); int visibleItems = WMWidgetHeight(list) / WMGetListItemHeight(list); WMSetListPosition(list, i - visibleItems / 2); if (textEvent != WMDeleteTextEvent) { WMRange range; WMInsertTextFieldText(panel->fileField, &item->text[textLen], textLen); range.position = textLen; range.count = itemTextLen - textLen; WMSelectTextFieldRange(panel->fileField, range); /*WMSetTextFieldCursorPosition(panel->fileField, itemTextLen); */ } } wfree(text); } static void textEditedObserver(void *observerData, WMNotification * notification) { W_FilePanel *panel = (W_FilePanel *) observerData; if ((uintptr_t)WMGetNotificationClientData(notification) == WMReturnTextMovement) { WMPerformButtonClick(panel->okButton); } } static WMFilePanel *makeFilePanel(WMScreen * scrPtr, const char *name, const char *title) { WMFilePanel *fPtr; WMFont *largeFont; WMPixmap *icon; fPtr = wmalloc(sizeof(WMFilePanel)); fPtr->win = WMCreateWindowWithStyle(scrPtr, name, WMTitledWindowMask | WMResizableWindowMask); 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); WMSetLabelImagePosition(fPtr->iconLabel, WIPImageOnly); icon = WMCreateApplicationIconBlendedPixmap(scrPtr, (RColor *) NULL); if (icon) { WMSetLabelImage(fPtr->iconLabel, icon); WMReleasePixmap(icon); } else { WMSetLabelImage(fPtr->iconLabel, scrPtr->applicationIconPixmap); } fPtr->titleLabel = WMCreateLabel(fPtr->win); WMResizeWidget(fPtr->titleLabel, PWIDTH - 64, 64); WMMoveWidget(fPtr->titleLabel, 64, 0); largeFont = WMBoldSystemFontOfSize(scrPtr, 24); WMSetLabelFont(fPtr->titleLabel, largeFont); WMReleaseFont(largeFont); WMSetLabelText(fPtr->titleLabel, title); fPtr->line = WMCreateFrame(fPtr->win); WMMoveWidget(fPtr->line, 0, 64); WMResizeWidget(fPtr->line, PWIDTH, 2); WMSetFrameRelief(fPtr->line, WRGroove); fPtr->browser = WMCreateBrowser(fPtr->win); WMSetBrowserAllowEmptySelection(fPtr->browser, True); WMSetBrowserDelegate(fPtr->browser, &browserDelegate); WMSetBrowserAction(fPtr->browser, browserClick, fPtr); WMSetBrowserDoubleAction(fPtr->browser, browserDClick, fPtr); WMMoveWidget(fPtr->browser, 7, 72); WMResizeWidget(fPtr->browser, PWIDTH - 14, 200); WMHangData(fPtr->browser, fPtr); fPtr->nameLabel = WMCreateLabel(fPtr->win); WMMoveWidget(fPtr->nameLabel, 7, 282); WMResizeWidget(fPtr->nameLabel, 55, 14); WMSetLabelText(fPtr->nameLabel, _("Name:")); fPtr->fileField = WMCreateTextField(fPtr->win); WMMoveWidget(fPtr->fileField, 60, 278); WMResizeWidget(fPtr->fileField, PWIDTH - 60 - 10, 24); WMAddNotificationObserver(textEditedObserver, fPtr, WMTextDidEndEditingNotification, fPtr->fileField); WMAddNotificationObserver(textChangedObserver, fPtr, WMTextDidChangeNotification, fPtr->fileField); fPtr->okButton = WMCreateCommandButton(fPtr->win); WMMoveWidget(fPtr->okButton, 245, 325); WMResizeWidget(fPtr->okButton, 75, 28); WMSetButtonText(fPtr->okButton, _("OK")); WMSetButtonImage(fPtr->okButton, scrPtr->buttonArrow); WMSetButtonAltImage(fPtr->okButton, scrPtr->pushedButtonArrow); WMSetButtonImagePosition(fPtr->okButton, WIPRight); WMSetButtonAction(fPtr->okButton, buttonClick, fPtr); fPtr->cancelButton = WMCreateCommandButton(fPtr->win); WMMoveWidget(fPtr->cancelButton, 165, 325); WMResizeWidget(fPtr->cancelButton, 75, 28); WMSetButtonText(fPtr->cancelButton, _("Cancel")); WMSetButtonAction(fPtr->cancelButton, buttonClick, fPtr); fPtr->trashcanButton = WMCreateCommandButton(fPtr->win); WMMoveWidget(fPtr->trashcanButton, 7, 325); WMResizeWidget(fPtr->trashcanButton, 28, 28); WMSetButtonImagePosition(fPtr->trashcanButton, WIPImageOnly); WMSetButtonImage(fPtr->trashcanButton, scrPtr->trashcanIcon); WMSetButtonAltImage(fPtr->trashcanButton, scrPtr->altTrashcanIcon); WMSetButtonAction(fPtr->trashcanButton, deleteFile, fPtr); fPtr->createDirButton = WMCreateCommandButton(fPtr->win); WMMoveWidget(fPtr->createDirButton, 37, 325); WMResizeWidget(fPtr->createDirButton, 28, 28); WMSetButtonImagePosition(fPtr->createDirButton, WIPImageOnly); WMSetButtonImage(fPtr->createDirButton, scrPtr->createDirIcon); WMSetButtonAltImage(fPtr->createDirButton, scrPtr->altCreateDirIcon); WMSetButtonAction(fPtr->createDirButton, createDir, fPtr); fPtr->homeButton = WMCreateCommandButton(fPtr->win); WMMoveWidget(fPtr->homeButton, 67, 325); WMResizeWidget(fPtr->homeButton, 28, 28); WMSetButtonImagePosition(fPtr->homeButton, WIPImageOnly); WMSetButtonImage(fPtr->homeButton, scrPtr->homeIcon); WMSetButtonAltImage(fPtr->homeButton, scrPtr->altHomeIcon); WMSetButtonAction(fPtr->homeButton, goHome, fPtr); fPtr->disketteButton = WMCreateCommandButton(fPtr->win); WMMoveWidget(fPtr->disketteButton, 97, 325); WMResizeWidget(fPtr->disketteButton, 28, 28); WMSetButtonImagePosition(fPtr->disketteButton, WIPImageOnly); WMSetButtonImage(fPtr->disketteButton, scrPtr->disketteIcon); WMSetButtonAltImage(fPtr->disketteButton, scrPtr->altDisketteIcon); WMSetButtonAction(fPtr->disketteButton, goFloppy, fPtr); fPtr->unmountButton = WMCreateCommandButton(fPtr->win); WMMoveWidget(fPtr->unmountButton, 127, 325); WMResizeWidget(fPtr->unmountButton, 28, 28); WMSetButtonImagePosition(fPtr->unmountButton, WIPImageOnly); WMSetButtonImage(fPtr->unmountButton, scrPtr->unmountIcon); WMSetButtonAltImage(fPtr->unmountButton, scrPtr->altUnmountIcon); WMSetButtonAction(fPtr->unmountButton, goUnmount, fPtr); WMSetButtonEnabled(fPtr->unmountButton, False); WMRealizeWidget(fPtr->win); WMMapSubwidgets(fPtr->win); WMSetFocusToWidget(fPtr->fileField); WMSetTextFieldCursorPosition(fPtr->fileField, 0); WMLoadBrowserColumnZero(fPtr->browser); WMSetWindowInitialPosition(fPtr->win, (scrPtr->rootView->size.width - WMWidgetWidth(fPtr->win)) / 2, (scrPtr->rootView->size.height - WMWidgetHeight(fPtr->win)) / 2); fPtr->flags.canChooseFiles = 1; fPtr->flags.canChooseDirectories = 1; fPtr->flags.autoCompletion = 1; return fPtr; } WMOpenPanel *WMGetOpenPanel(WMScreen * scrPtr) { WMFilePanel *panel; if (scrPtr->sharedOpenPanel) return scrPtr->sharedOpenPanel; panel = makeFilePanel(scrPtr, "openFilePanel", _("Open")); panel->flags.fileMustExist = 1; panel->flags.panelType = WP_OPEN; scrPtr->sharedOpenPanel = panel; return panel; } WMSavePanel *WMGetSavePanel(WMScreen * scrPtr) { WMFilePanel *panel; if (scrPtr->sharedSavePanel) return scrPtr->sharedSavePanel; panel = makeFilePanel(scrPtr, "saveFilePanel", _("Save")); panel->flags.fileMustExist = 0; panel->flags.panelType = WP_SAVE; scrPtr->sharedSavePanel = panel; return panel; } void WMFreeFilePanel(WMFilePanel * panel) { if (panel == WMWidgetScreen(panel->win)->sharedSavePanel) { WMWidgetScreen(panel->win)->sharedSavePanel = NULL; } if (panel == WMWidgetScreen(panel->win)->sharedOpenPanel) { WMWidgetScreen(panel->win)->sharedOpenPanel = NULL; } WMRemoveNotificationObserver(panel); WMUnmapWidget(panel->win); WMDestroyWidget(panel->win); wfree(panel); } int WMRunModalFilePanelForDirectory(WMFilePanel * panel, WMWindow * owner, char *path, const char *name, char **fileTypes) { WMScreen *scr = WMWidgetScreen(panel->win); if (name && !owner) { WMSetWindowTitle(panel->win, name); } WMChangePanelOwner(panel->win, owner); WMSetFilePanelDirectory(panel, path); 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; } WMSetLabelText(panel->titleLabel, name); WMMapWidget(panel->win); WMRunModalLoop(scr, W_VIEW(panel->win)); /* Must withdraw window because the next time we map * it, it might have a different transient owner. */ WMCloseWindow(panel->win); return (panel->flags.canceled ? False : True); } void WMSetFilePanelDirectory(WMFilePanel * panel, char *path) { WMList *list; WMListItem *item; int col; 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, rest); } else { WMSetTextFieldText(panel->fileField, item->text); } } else { WMSetTextFieldText(panel->fileField, rest); } } void WMSetFilePanelCanChooseDirectories(WMFilePanel * panel, Bool flag) { panel->flags.canChooseDirectories = ((flag == 0) ? 0 : 1); } void WMSetFilePanelCanChooseFiles(WMFilePanel * panel, Bool flag) { panel->flags.canChooseFiles = ((flag == 0) ? 0 : 1); } void WMSetFilePanelAutoCompletion(WMFilePanel * panel, Bool flag) { panel->flags.autoCompletion = ((flag == 0) ? 0 : 1); } char *WMGetFilePanelFileName(WMFilePanel * panel) { return getCurrentFileName(panel); } void WMSetFilePanelAccessoryView(WMFilePanel * panel, WMView * view) { WMView *v; panel->accessoryView = view; v = WMWidgetView(panel->win); W_ReparentView(view, v, 0, 0); W_MoveView(view, (v->size.width - v->size.width) / 2, 300); } WMView *WMGetFilePanelAccessoryView(WMFilePanel * panel) { return panel->accessoryView; } static char *get_name_from_path(const char *path) { int size; assert(path != NULL); size = strlen(path); /* remove trailing / */ while (size > 0 && path[size - 1] == '/') size--; /* directory was root */ if (size == 0) return wstrdup("/"); while (size > 0 && path[size - 1] != '/') size--; return wstrdup(&(path[size])); } #define CAST(item) (*((WMListItem**)item)) static int comparer(const void *a, const void *b) { if (CAST(a)->isBranch == CAST(b)->isBranch) return (strcmp(CAST(a)->text, CAST(b)->text)); if (CAST(a)->isBranch) return (-1); return (1); } #undef CAST static void listDirectoryOnColumn(WMFilePanel * panel, int column, const char *path) { WMBrowser *bPtr = panel->browser; struct dirent *dentry; DIR *dir; struct stat stat_buf; char pbuf[PATH_MAX + 16]; char *name; assert(column >= 0); assert(path != NULL); /* put directory name in the title */ name = get_name_from_path(path); WMSetBrowserColumnTitle(bPtr, column, name); wfree(name); dir = opendir(path); if (!dir) { #ifdef VERBOSE printf(_("WINGs: could not open directory %s\n"), path); #endif return; } /* list contents in the column */ while ((dentry = readdir(dir))) { if (strcmp(dentry->d_name, ".") == 0 || strcmp(dentry->d_name, "..") == 0) continue; if (wstrlcpy(pbuf, path, sizeof(pbuf)) >= sizeof(pbuf)) goto out; if (strcmp(path, "/") != 0 && wstrlcat(pbuf, "/", sizeof(pbuf)) >= sizeof(pbuf)) goto out; if (wstrlcat(pbuf, dentry->d_name, sizeof(pbuf)) >= sizeof(pbuf)) goto out; if (stat(pbuf, &stat_buf) != 0) { #ifdef VERBOSE printf(_("WINGs: could not stat %s\n"), pbuf); #endif continue; } else { int isDirectory; isDirectory = S_ISDIR(stat_buf.st_mode); WMInsertBrowserItem(bPtr, column, -1, dentry->d_name, isDirectory); } } WMSortBrowserColumnWithComparer(bPtr, column, comparer); out: closedir(dir); } static void fillColumn(WMBrowserDelegate * self, WMBrowser * bPtr, int column, WMList * list) { char *path; WMFilePanel *panel; /* Parameter not used, but tell the compiler that it is ok */ (void) self; (void) list; if (column > 0) { path = WMGetBrowserPathToColumn(bPtr, column - 1); } else { path = wstrdup("/"); } panel = WMGetHangedData(bPtr); listDirectoryOnColumn(panel, column, path); wfree(path); } static void browserDClick(WMWidget *widget, void *p_panel) { WMFilePanel *panel = p_panel; /* Parameter not used, but tell the compiler that it is ok */ (void) widget; WMPerformButtonClick(panel->okButton); } static void browserClick(WMWidget *widget, void *p_panel) { WMBrowser *bPtr = (WMBrowser *) widget; WMFilePanel *panel = p_panel; int col = WMGetBrowserSelectedColumn(bPtr); WMListItem *item = WMGetBrowserSelectedItemInColumn(bPtr, col); if (!item || item->isBranch) WMSetTextFieldText(panel->fileField, NULL); else { WMSetTextFieldText(panel->fileField, item->text); } } static void showError(WMScreen * scr, WMWindow * owner, const char *s, const char *file) { char *errStr; if (file) { errStr = wmalloc(strlen(file) + strlen(s) + 1); sprintf(errStr, s, file); } else { errStr = wstrdup(s); } WMRunAlertPanel(scr, owner, _("Error"), errStr, _("OK"), NULL, NULL); wfree(errStr); } static void createDir(WMWidget *widget, void *p_panel) { WMFilePanel *panel = p_panel; char *dirName, *directory, *file; size_t slen; WMScreen *scr = WMWidgetScreen(panel->win); /* Parameter not used, but tell the compiler that it is ok */ (void) widget; dirName = WMRunInputPanel(scr, panel->win, _("Create Directory"), _("Enter directory name"), "", _("OK"), _("Cancel")); if (!dirName) return; /* if `dirName' is an absolute path, don't mind `directory'. * normalize as needed (possibly not needed at all?) */ normalizePath(dirName); if (*dirName != '/') { directory = getCurrentFileName(panel); normalizePath(directory); } else { directory = NULL; } slen = strlen(dirName) + (directory ? strlen(directory) + 1 /* "/" */ : 0) + 1 /* NULL */; file = wmalloc(slen); if (directory && (wstrlcat(file, directory, slen) >= slen || wstrlcat(file, "/", slen) >= slen)) goto out; if (wstrlcat(file, dirName, slen) >= slen) goto out; if (mkdir(file, 00777) != 0) { #define __msgbufsize__ 512 char *buffer = wmalloc(__msgbufsize__); snprintf(buffer, __msgbufsize__, _("Can not create %s: %s"), file, strerror(errno)); showError(scr, panel->win, buffer, NULL); wfree(buffer); #undef __msgbufsize__ } else { WMSetFilePanelDirectory(panel, file); } out: if (dirName) wfree(dirName); if (directory) wfree(directory); if (file) wfree(file); } /* *---------------------------------------------------------------------- * normalizePath-- * Remove multiple consecutive and any trailing slashes from * a path. *---------------------------------------------------------------------- */ static void normalizePath(char *s) { int i, j, found; found = 0; for (i = 0; s[i]; (void)(!found && i++)) { found = 0; if (s[i] == '/' && s[i+1] == '/') { int nslash = 1; found = 1; i++; while (s[i+nslash] == '/') nslash++; for (j = 0; s[i+j+nslash]; j++) s[i+j] = s[i+j+nslash]; s[i+j] = '\0'; } } if (i > 1 && s[--i] == '/') s[i] = '\0'; } static void deleteFile(WMWidget *widget, void *p_panel) { WMFilePanel *panel = p_panel; char *file; char buffer[512]; struct stat filestat; WMScreen *scr = WMWidgetScreen(panel->win); /* Parameter not used, but tell the compiler that it is ok */ (void) widget; file = getCurrentFileName(panel); if (file == NULL) return; normalizePath(file); if (stat(file, &filestat) == -1) { snprintf(buffer, sizeof(buffer), _("Can not find %s: %s"), file, strerror(errno)); showError(scr, panel->win, buffer, NULL); goto out; } snprintf(buffer, sizeof(buffer), _("Delete %s %s?"), S_ISDIR(filestat.st_mode) ? _("directory") : _("file"), file); if (!WMRunAlertPanel(WMWidgetScreen(panel->win), panel->win, _("Warning"), buffer, _("OK"), _("Cancel"), NULL)) { if (remove(file) == -1) { snprintf(buffer, sizeof(buffer), _("Removing %s failed: %s"), file, strerror(errno)); showError(scr, panel->win, buffer, NULL); } else { char *s = strrchr(file, '/'); if (s) s[0] = 0; WMSetFilePanelDirectory(panel, file); } } out: wfree(file); } static void goUnmount(WMWidget *widget, void *p_panel) { /* Not implemented yet */ (void) widget; (void) p_panel; } static void goFloppy(WMWidget *widget, void *p_panel) { WMFilePanel *panel = p_panel; struct stat filestat; WMScreen *scr = WMWidgetScreen(panel->win); /* Parameter not used, but tell the compiler that it is ok */ (void) widget; if (stat(WINGsConfiguration.floppyPath, &filestat)) { showError(scr, panel->win, _("An error occurred browsing '%s'."), WINGsConfiguration.floppyPath); return; } else if (!S_ISDIR(filestat.st_mode)) { showError(scr, panel->win, _("'%s' is not a directory."), WINGsConfiguration.floppyPath); return; } WMSetFilePanelDirectory(panel, WINGsConfiguration.floppyPath); } static void goHome(WMWidget *widget, void *p_panel) { WMFilePanel *panel = p_panel; char *home; /* Parameter not used, but tell the compiler that it is ok */ (void) widget; /* home is statically allocated. Don't free it! */ home = wgethomedir(); if (!home) return; WMSetFilePanelDirectory(panel, home); } 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 - 245), newHeight - (PHEIGHT - 325)); WMMoveWidget(pPtr->cancelButton, newWidth - (PWIDTH - 165), newHeight - (PHEIGHT - 325)); WMMoveWidget(pPtr->trashcanButton, 7, newHeight - (PHEIGHT - 325)); WMMoveWidget(pPtr->createDirButton, 37, newHeight - (PHEIGHT - 325)); WMMoveWidget(pPtr->homeButton, 67, newHeight - (PHEIGHT - 325)); WMMoveWidget(pPtr->disketteButton, 97, newHeight - (PHEIGHT - 325)); WMMoveWidget(pPtr->unmountButton, 127, newHeight - (PHEIGHT - 325)); newColumnCount = (newWidth - 14) / 140; WMSetBrowserMaxVisibleColumns(pPtr->browser, newColumnCount); } } } static char *getCurrentFileName(WMFilePanel * panel) { char *path; char *file; char *ret; size_t slen; path = WMGetBrowserPath(panel->browser); if (!path) return NULL; if (path[strlen(path) -1] != '/') return path; file = WMGetTextFieldText(panel->fileField); slen = strlen(path) + strlen(file) + 1; ret = wmalloc(slen); if (file[0] != '/') strcpy(ret, path); strcat(ret, file); wfree(file); wfree(path); return ret; } static Bool validOpenFile(WMFilePanel * panel) { WMListItem *item; int col, haveFile = 0; char *file = WMGetTextFieldText(panel->fileField); if (file[0] != '\0') haveFile = 1; wfree(file); col = WMGetBrowserSelectedColumn(panel->browser); item = WMGetBrowserSelectedItemInColumn(panel->browser, col); if (item) { 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; } return True; } static void buttonClick(WMWidget *widget, void *p_panel) { WMButton *bPtr = (WMButton *) widget; WMFilePanel *panel = p_panel; WMRange range; if (bPtr == panel->okButton) { if (!validOpenFile(panel)) return; if (panel->flags.fileMustExist) { char *file; file = getCurrentFileName(panel); if (access(file, F_OK) != 0) { WMRunAlertPanel(WMWidgetScreen(panel->win), panel->win, _("Error"), _("File does not exist."), _("OK"), NULL, NULL); wfree(file); return; } wfree(file); } panel->flags.canceled = 0; } else panel->flags.canceled = 1; range.count = range.position = 0; WMSelectTextFieldRange(panel->fileField, range); WMBreakModalLoop(WMWidgetScreen(bPtr)); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Tests/���������������������������������������������������������������������0000755�0001750�0001750�00000000000�13642360104�013076� 5����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Tests/Makefile.in����������������������������������������������������������0000644�0001750�0001750�00000053064�13642360053�015076� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = wtest$(EXEEXT) wmquery$(EXEEXT) wmfile$(EXEEXT) \ testmywidget$(EXEEXT) subdir = WINGs/Tests ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ $(top_srcdir)/m4/ax_pthread.m4 \ $(top_srcdir)/m4/ld-version-script.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/windowmaker.m4 \ $(top_srcdir)/m4/wm_attributes.m4 \ $(top_srcdir)/m4/wm_cflags_check.m4 \ $(top_srcdir)/m4/wm_i18n.m4 \ $(top_srcdir)/m4/wm_imgfmt_check.m4 \ $(top_srcdir)/m4/wm_libexif.m4 $(top_srcdir)/m4/wm_libmath.m4 \ $(top_srcdir)/m4/wm_prog_cc_c11.m4 \ $(top_srcdir)/m4/wm_xext_check.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) am_testmywidget_OBJECTS = testmywidget.$(OBJEXT) mywidget.$(OBJEXT) testmywidget_OBJECTS = $(am_testmywidget_OBJECTS) testmywidget_LDADD = $(LDADD) testmywidget_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.la \ $(top_builddir)/wrlib/libwraster.la \ $(top_builddir)/WINGs/libWUtil.la AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = wmfile_SOURCES = wmfile.c wmfile_OBJECTS = wmfile.$(OBJEXT) wmfile_LDADD = $(LDADD) wmfile_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.la \ $(top_builddir)/wrlib/libwraster.la \ $(top_builddir)/WINGs/libWUtil.la wmquery_SOURCES = wmquery.c wmquery_OBJECTS = wmquery.$(OBJEXT) wmquery_LDADD = $(LDADD) wmquery_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.la \ $(top_builddir)/wrlib/libwraster.la \ $(top_builddir)/WINGs/libWUtil.la wtest_SOURCES = wtest.c wtest_OBJECTS = wtest.$(OBJEXT) wtest_LDADD = $(LDADD) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/mywidget.Po \ ./$(DEPDIR)/testmywidget.Po ./$(DEPDIR)/wmfile.Po \ ./$(DEPDIR)/wmquery.Po ./$(DEPDIR)/wtest.Po am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(testmywidget_SOURCES) wmfile.c wmquery.c wtest.c DIST_SOURCES = $(testmywidget_SOURCES) wmfile.c wmquery.c wtest.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ GFXLIBS = @GFXLIBS@ GREP = @GREP@ HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLIBS = @INTLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBBSD = @LIBBSD@ LIBEXIF = @LIBEXIF@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXINERAMA = @LIBXINERAMA@ LIBXMU = @LIBXMU@ LIBXRANDR = @LIBXRANDR@ LINGUAS = @LINGUAS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAGICKFLAGS = @MAGICKFLAGS@ MAGICKLIBS = @MAGICKLIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MANLANGDIRS = @MANLANGDIRS@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOLIBS = @PANGOLIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILMOFILES = @UTILMOFILES@ VERSION = @VERSION@ WINGSMOFILES = @WINGSMOFILES@ WINGS_VERSION = @WINGS_VERSION@ WMAKERMOFILES = @WMAKERMOFILES@ WPREFSMOFILES = @WPREFSMOFILES@ WRASTER_VERSION = @WRASTER_VERSION@ WUTIL_VERSION = @WUTIL_VERSION@ XCFLAGS = @XCFLAGS@ XFTCONFIG = @XFTCONFIG@ XFTFLAGS = @XFTFLAGS@ XFTLIBS = @XFTLIBS@ XGETTEXT = @XGETTEXT@ XLFLAGS = @XLFLAGS@ XLIBS = @XLIBS@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBRARY_PATH = @X_LIBRARY_PATH@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ defsdatadir = @defsdatadir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ inc_search_path = @inc_search_path@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lcov_output_directory = @lcov_output_directory@ lib_search_path = @lib_search_path@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pixmapdir = @pixmapdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ wprefs_bindir = @wprefs_bindir@ wprefs_datadir = @wprefs_datadir@ AUTOMAKE_OPTIONS = LDADD = $(top_builddir)/WINGs/libWINGs.la $(top_builddir)/wrlib/libwraster.la \ $(top_builddir)/WINGs/libWUtil.la \ @XFTLIBS@ @INTLIBS@ @XLIBS@ testmywidget_SOURCES = testmywidget.c mywidget.c mywidget.h wtest_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.la EXTRA_DIST = logo.xpm upbtn.xpm wm.html wm.png AM_CPPFLAGS = -I$(top_srcdir)/WINGs -I$(top_srcdir)/wrlib -I$(top_srcdir)/src \ -DRESOURCE_PATH=\"$(datadir)/WINGs\" @XFTFLAGS@ @HEADER_SEARCH_PATH@ all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu WINGs/Tests/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu WINGs/Tests/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list testmywidget$(EXEEXT): $(testmywidget_OBJECTS) $(testmywidget_DEPENDENCIES) $(EXTRA_testmywidget_DEPENDENCIES) @rm -f testmywidget$(EXEEXT) $(AM_V_CCLD)$(LINK) $(testmywidget_OBJECTS) $(testmywidget_LDADD) $(LIBS) wmfile$(EXEEXT): $(wmfile_OBJECTS) $(wmfile_DEPENDENCIES) $(EXTRA_wmfile_DEPENDENCIES) @rm -f wmfile$(EXEEXT) $(AM_V_CCLD)$(LINK) $(wmfile_OBJECTS) $(wmfile_LDADD) $(LIBS) wmquery$(EXEEXT): $(wmquery_OBJECTS) $(wmquery_DEPENDENCIES) $(EXTRA_wmquery_DEPENDENCIES) @rm -f wmquery$(EXEEXT) $(AM_V_CCLD)$(LINK) $(wmquery_OBJECTS) $(wmquery_LDADD) $(LIBS) wtest$(EXEEXT): $(wtest_OBJECTS) $(wtest_DEPENDENCIES) $(EXTRA_wtest_DEPENDENCIES) @rm -f wtest$(EXEEXT) $(AM_V_CCLD)$(LINK) $(wtest_OBJECTS) $(wtest_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mywidget.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testmywidget.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wmfile.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wmquery.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wtest.Po@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @echo '# dummy' >$@-t && $(am__mv) $@-t $@ am--depfiles: $(am__depfiles_remade) .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -f ./$(DEPDIR)/mywidget.Po -rm -f ./$(DEPDIR)/testmywidget.Po -rm -f ./$(DEPDIR)/wmfile.Po -rm -f ./$(DEPDIR)/wmquery.Po -rm -f ./$(DEPDIR)/wtest.Po -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/mywidget.Po -rm -f ./$(DEPDIR)/testmywidget.Po -rm -f ./$(DEPDIR)/wmfile.Po -rm -f ./$(DEPDIR)/wmquery.Po -rm -f ./$(DEPDIR)/wtest.Po -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \ ctags ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # 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. .NOEXPORT: ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Tests/logo.xpm�������������������������������������������������������������0000644�0001750�0001750�00000004564�13431646201�014516� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * GNUSTEP_XPM[] = { "45 45 8 1", " c None", ". c #666666666666", "X c #777777777777", "o c #596559656185", "O c #000000000000", "+ c #3CF33CF33CF3", "@ c #CF3CCF3CCF3C", "# c #FFFFFFFFFFFF", " ", " .Xooooooooo. ", " ..ooOOOOOOOOOOOOOo. ", " .XoOOOOOOOOOOOOOOOOOO+ ", " .oOOOOOOOOOOOOOOOOOOOOOO+ ", " XOOOOOOOOOOOOOOOOOOOOOOOOOOo ", " oOOOOOOOOOOOOOOOOOOOOOOOOOOOO+ ", " oOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+ooooooo", " +OOOOOOOOOOOOOOOOOOOOOOOOoXXXXX.XOOOOOOO", " XOOOOOOOOOOOOOOOOOOOOOOOOOX#######.OOOOOO", " XOOOOOOOOOOOOOOOOOOOOOOOOOOX########oOOOOO", " OOOOOOOOOOOOOOOOOOOOOOOOOOOX#########oOOOO", " oOOOOOOOOOOOOOOOOOOOOOOOOOOOX#########@OOOO", " OOOOOOOOOOOOOOOOOOOOOOOOOOOOX##########oOOO", " oOOOOOOOOOOOOOOOOOOOOOOOOOOOOX##########@OOO", " OOOOOOOOOOOOOOOOOOOOOOOOOOOOOX###########+OO", " OOOOOOOOOOOOOOOOOOOOOOOOOOOOOX###########oOO", "oOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX###########@OO", "+OOOOOOOOOOOOOOOOOOOOOOOOOOOOOX###########@OO", "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX############XO", "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX############XO", "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX############XO", "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX############XO", "OOOOOOOOOOOOOOOoX.X.X.X.XX.XXX@############XO", "OOOOOOOOOOOOOOOX###########################XO", "OOOOOOOOOOOOOOOX###########################XO", "OOOOOOOOOOOOOOOX###########################XO", "+OOOOOOOOOOOOOOX###########################OO", "oOOOOOOOOOOOOOOX###########################OO", " OOOOOOOOOOOOOOX##########################XOO", " OOOOOOOOOOOOOOX##########################oOO", " oOOOOOOOOOOOOOX#########################@OOO", " OOOOOOOOOOOOOX#########################+OOO", " oOOOOOOOOOOOOX########################@OOOO", " OOOOOOOOOOOOX########################oOOOO", " OOOOOOOOOOOX#######################oOOOOO", " OOOOOOOOOOX######################XOOOOOO", "OOOOOOOXXXXXXXX@#####################@OOOOOOO", "OOOOOOOo############################@OOOOOOOO", "OOOOOOOOO@#########################oOOOOOOOOO", "OOOOOOOOOOX######################@oOOOOOOOOOO", "OOOOOOOOOOOOX###################XOOOOOOOOOOOO", "OOOOOOOOOOOOOOX@#############@XOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOXXX#####XXXOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO"}; ��������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Tests/wmfile.c�������������������������������������������������������������0000644�0001750�0001750�00000004375�13431646201�014457� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Author: Len Trigg <trigg@cs.waikato.ac.nz> */ /* Update: Franck Wolff <frawolff@club-internet.fr> ----------------------------------------------------------------------- List of updated functions : - main : add -s option for a save panel... ----------------------------------------------------------------------- */ #include <WINGs/WINGs.h> #include <unistd.h> #include <stdio.h> #include <stdlib.h> #include "logo.xpm" void wAbort() { exit(1); } char *ProgName; void usage(void) { fprintf(stderr, "usage:\n" "\t%s [-options]\n" "\n" "options:\n" " -s\t\tSave panel (default open panel)\n" " -i <str>\tInitial directory (default /)\n" " -t <str>\tQuery window title (default none)\n" "\n" "information:\n" "\t%s pops up a WindowMaker style file selection panel.\n" "\n" "version:\n" "\t%s\n", ProgName, ProgName, __DATE__); 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 *oPanel; WMSavePanel *sPanel; /* RImage *image; */ char *title = NULL; char *initial = "/"; int ch; int panelType = OPEN_PANEL_TYPE; extern char *optarg; extern int optind; if (!dpy) { puts("could not open display"); exit(1); } WMInitializeApplication("WMFile", &argc, argv); ProgName = argv[0]; while ((ch = getopt(argc, argv, "si:ht:")) != -1) switch (ch) { case 's': panelType = SAVE_PANEL_TYPE; break; case 'i': initial = optarg; break; case 't': title = optarg; break; default: usage(); } for (; optind < argc; optind++) usage(); scr = WMCreateSimpleApplicationScreen(dpy); pixmap = WMCreatePixmapFromXPMData(scr, GNUSTEP_XPM); WMSetApplicationIconPixmap(scr, pixmap); WMReleasePixmap(pixmap); if (panelType == SAVE_PANEL_TYPE) { sPanel = WMGetSavePanel(scr); if (WMRunModalFilePanelForDirectory(sPanel, NULL, initial, /*title */ NULL, NULL) == True) printf("%s\n", WMGetFilePanelFileName(sPanel)); else printf("\n"); } else { oPanel = WMGetOpenPanel(scr); if (WMRunModalFilePanelForDirectory(oPanel, NULL, initial, /*title */ NULL, NULL) == True) printf("%s\n", WMGetFilePanelFileName(oPanel)); else printf("\n"); } return 0; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Tests/wtest.c��������������������������������������������������������������0000644�0001750�0001750�00000056257�13431646201�014350� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * WINGs test application */ #include <WINGs/WINGs.h> #include <stdio.h> #include <stdlib.h> #include <string.h> /* * You need to define this function to link any program to WINGs. * (this is no longer required as there is a default abort handler in WINGs) * This will be called when the application will be terminated because * of a fatal error (only for memory allocation failures ATM). */ void wAbort() { exit(1); } Display *dpy; int windowCount = 0; void closeAction(WMWidget * self, void *data) { WMDestroyWidget(self); windowCount--; printf("window closed, window count = %d\n", windowCount); if (windowCount < 1) exit(0); } void testOpenFilePanel(WMScreen * scr) { WMOpenPanel *panel; /* windowCount++; */ /* get the shared Open File panel */ panel = WMGetOpenPanel(scr); WMRunModalFilePanelForDirectory(panel, NULL, "/usr/local", NULL, NULL); /* free the panel to save some memory. Not needed otherwise. */ WMFreeFilePanel(WMGetOpenPanel(scr)); } void testFontPanel(WMScreen * scr) { WMFontPanel *panel; /*windowCount++; */ panel = WMGetFontPanel(scr); WMShowFontPanel(panel); /*WMFreeFontPanel(panel); */ } void testFrame(WMScreen * scr) { WMWindow *win; WMFrame *frame; int i; static char *titles[] = { "AboveTop", "AtTop", "BelowTop", "AboveBottom", "AtBottom", "BelowBottom" }; static WMTitlePosition pos[] = { WTPAboveTop, WTPAtTop, WTPBelowTop, WTPAboveBottom, WTPAtBottom, WTPBelowBottom }; windowCount++; win = WMCreateWindow(scr, "testFrame"); WMSetWindowTitle(win, "Frame"); WMSetWindowCloseAction(win, closeAction, NULL); WMResizeWidget(win, 400, 300); for (i = 0; i < 6; i++) { frame = WMCreateFrame(win); WMMoveWidget(frame, 8 + (i % 3) * 130, 8 + (i / 3) * 130); WMResizeWidget(frame, 120, 120); WMSetFrameTitle(frame, titles[i]); WMSetFrameTitlePosition(frame, pos[i]); } WMRealizeWidget(win); WMMapSubwidgets(win); WMMapWidget(win); } /*static void resizedWindow(void *self, WMNotification *notif) { WMView *view = (WMView*)WMGetNotificationObject(notif); WMSize size = WMGetViewSize(view); WMResizeWidget((WMWidget*)self, size.width, size.height); }*/ void testBox(WMScreen * scr) { WMWindow *win; WMBox *box, *hbox; WMButton *btn; WMPopUpButton *pop; int i; windowCount++; win = WMCreateWindow(scr, "testBox"); WMSetWindowTitle(win, "Box"); WMSetWindowCloseAction(win, closeAction, NULL); WMResizeWidget(win, 400, 300); box = WMCreateBox(win); WMSetBoxBorderWidth(box, 5); WMSetViewExpandsToParent(WMWidgetView(box), 0, 0, 0, 0); /*WMSetBoxHorizontal(box, True); */ for (i = 0; i < 4; i++) { btn = WMCreateCommandButton(box); WMSetButtonText(btn, "bla"); WMMapWidget(btn); WMAddBoxSubview(box, WMWidgetView(btn), i & 1, True, 20, 0, 5); } pop = WMCreatePopUpButton(box); WMAddPopUpButtonItem(pop, "ewqeq"); WMAddPopUpButtonItem(pop, "ewqeqrewrw"); WMAddBoxSubview(box, WMWidgetView(pop), False, True, 20, 0, 5); WMMapWidget(pop); hbox = WMCreateBox(box); WMSetBoxHorizontal(hbox, True); WMAddBoxSubview(box, WMWidgetView(hbox), False, True, 24, 0, 0); WMMapWidget(hbox); for (i = 0; i < 4; i++) { btn = WMCreateCommandButton(hbox); WMSetButtonText(btn, "bla"); WMMapWidget(btn); WMAddBoxSubview(hbox, WMWidgetView(btn), 1, True, 60, 0, i < 3 ? 5 : 0); } WMRealizeWidget(win); WMMapSubwidgets(win); WMMapWidget(win); } static void singleClick(WMWidget * self, void *data) { } static void doubleClick(WMWidget * self, void *data) { WMSelectAllListItems((WMList *) self); } static void listSelectionObserver(void *observer, WMNotification * notification) { WMLabel *label = (WMLabel *) observer; WMList *lPtr = (WMList *) WMGetNotificationObject(notification); char buf[255]; sprintf(buf, "Selected items: %d", WMGetArrayItemCount(WMGetListSelectedItems(lPtr))); WMSetLabelText(label, buf); } void testList(WMScreen * scr) { WMWindow *win; WMList *list; WMList *mlist; WMLabel *label; WMLabel *mlabel; WMLabel *title; WMLabel *mtitle; char text[100]; int i; windowCount++; win = WMCreateWindow(scr, "testList"); WMResizeWidget(win, 370, 250); WMSetWindowTitle(win, "List"); WMSetWindowCloseAction(win, closeAction, NULL); title = WMCreateLabel(win); WMResizeWidget(title, 150, 20); WMMoveWidget(title, 10, 10); WMSetLabelRelief(title, WRRidge); WMSetLabelText(title, "Single selection list"); mtitle = WMCreateLabel(win); WMResizeWidget(mtitle, 150, 20); WMMoveWidget(mtitle, 210, 10); WMSetLabelRelief(mtitle, WRRidge); WMSetLabelText(mtitle, "Multiple selection list"); list = WMCreateList(win); /*WMSetListAllowEmptySelection(list, True); */ WMMoveWidget(list, 10, 40); for (i = 0; i < 105; i++) { sprintf(text, "Item %i", i); WMAddListItem(list, text); } mlist = WMCreateList(win); WMSetListAllowMultipleSelection(mlist, True); /*WMSetListAllowEmptySelection(mlist, True); */ WMMoveWidget(mlist, 210, 40); for (i = 0; i < 135; i++) { sprintf(text, "Item %i", i); WMAddListItem(mlist, text); } label = WMCreateLabel(win); WMResizeWidget(label, 150, 40); WMMoveWidget(label, 10, 200); WMSetLabelRelief(label, WRRidge); WMSetLabelText(label, "Selected items: 0"); mlabel = WMCreateLabel(win); WMResizeWidget(mlabel, 150, 40); WMMoveWidget(mlabel, 210, 200); WMSetLabelRelief(mlabel, WRRidge); WMSetLabelText(mlabel, "Selected items: 0"); WMSetListAction(list, singleClick, label); WMSetListDoubleAction(list, doubleClick, label); WMSetListAction(mlist, singleClick, mlabel); WMSetListDoubleAction(mlist, doubleClick, mlabel); WMAddNotificationObserver(listSelectionObserver, label, WMListSelectionDidChangeNotification, list); WMAddNotificationObserver(listSelectionObserver, mlabel, WMListSelectionDidChangeNotification, mlist); WMRealizeWidget(win); WMMapSubwidgets(win); WMMapWidget(win); } void testButton(WMScreen * scr) { WMWindow *win; int i; char *types[] = { "MomentaryPush", "PushOnPushOff", "Toggle", "Switch", "Radio", "MomentaryChange", "OnOff", "MomentaryLigh" }; windowCount++; win = WMCreateWindow(scr, "testButton"); WMResizeWidget(win, 300, 300); WMSetWindowTitle(win, "Buttons"); WMSetWindowCloseAction(win, closeAction, NULL); for (i = 1; i < 9; i++) { WMButton *b; b = WMCreateButton(win, i); WMResizeWidget(b, 150, 24); WMMoveWidget(b, 20, i * 30); WMSetButtonText(b, types[i - 1]); } WMRealizeWidget(win); WMMapSubwidgets(win); WMMapWidget(win); } void testGradientButtons(WMScreen * scr) { WMWindow *win; WMButton *btn; WMPixmap *pix1, *pix2; RImage *back; RColor light, dark; WMColor *color, *altColor; windowCount++; /* creates the top-level window */ win = WMCreateWindow(scr, "testGradientButtons"); WMSetWindowTitle(win, "Gradiented Button Demo"); WMResizeWidget(win, 300, 200); WMSetWindowCloseAction(win, closeAction, NULL); light.red = 0x90; light.green = 0x85; light.blue = 0x90; dark.red = 0x35; dark.green = 0x30; dark.blue = 0x35; color = WMCreateRGBColor(scr, 0x5900, 0x5100, 0x5900, True); WMSetWidgetBackgroundColor(win, color); WMReleaseColor(color); back = RRenderGradient(60, 24, &dark, &light, RGRD_DIAGONAL); RBevelImage(back, RBEV_RAISED2); pix1 = WMCreatePixmapFromRImage(scr, back, 0); RReleaseImage(back); back = RRenderGradient(60, 24, &dark, &light, RGRD_DIAGONAL); RBevelImage(back, RBEV_SUNKEN); pix2 = WMCreatePixmapFromRImage(scr, back, 0); RReleaseImage(back); color = WMWhiteColor(scr); altColor = WMCreateNamedColor(scr, "red", True); btn = WMCreateButton(win, WBTMomentaryChange); WMResizeWidget(btn, 60, 24); WMMoveWidget(btn, 20, 100); WMSetButtonBordered(btn, False); WMSetButtonImagePosition(btn, WIPOverlaps); WMSetButtonImage(btn, pix1); WMSetButtonAltImage(btn, pix2); WMSetButtonText(btn, "Cool"); WMSetButtonTextColor(btn, color); WMSetButtonAltTextColor(btn, altColor); WMSetBalloonTextForView("This is a cool button", WMWidgetView(btn)); btn = WMCreateButton(win, WBTMomentaryChange); WMResizeWidget(btn, 60, 24); WMMoveWidget(btn, 90, 100); WMSetButtonBordered(btn, False); WMSetButtonImagePosition(btn, WIPOverlaps); WMSetButtonImage(btn, pix1); WMSetButtonAltImage(btn, pix2); WMSetButtonText(btn, "Button"); WMSetButtonTextColor(btn, color); WMSetBalloonTextForView("Este outro balo.", WMWidgetView(btn)); WMReleaseColor(color); color = WMCreateNamedColor(scr, "orange", True); btn = WMCreateButton(win, WBTMomentaryChange); WMResizeWidget(btn, 60, 24); WMMoveWidget(btn, 160, 100); WMSetButtonBordered(btn, False); WMSetButtonImagePosition(btn, WIPOverlaps); WMSetButtonImage(btn, pix1); WMSetButtonAltImage(btn, pix2); WMSetButtonText(btn, "Test"); WMSetButtonTextColor(btn, color); WMSetBalloonTextForView("This is yet another button.\nBut the balloon has 3 lines.\nYay!", WMWidgetView(btn)); WMReleaseColor(color); WMReleaseColor(altColor); WMRealizeWidget(win); WMMapSubwidgets(win); WMMapWidget(win); } void testScrollView(WMScreen * scr) { WMWindow *win; WMScrollView *sview; WMFrame *f; WMLabel *l; char buffer[128]; int i; windowCount++; /* creates the top-level window */ win = WMCreateWindow(scr, "testScroll"); WMSetWindowTitle(win, "Scrollable View"); WMSetWindowCloseAction(win, closeAction, NULL); /* set the window size */ WMResizeWidget(win, 300, 300); /* creates a scrollable view inside the top-level window */ sview = WMCreateScrollView(win); WMResizeWidget(sview, 200, 200); WMMoveWidget(sview, 30, 30); WMSetScrollViewRelief(sview, WRSunken); WMSetScrollViewHasVerticalScroller(sview, True); WMSetScrollViewHasHorizontalScroller(sview, True); /* create a frame with a bunch of labels */ f = WMCreateFrame(win); WMResizeWidget(f, 400, 400); WMSetFrameRelief(f, WRFlat); for (i = 0; i < 20; i++) { l = WMCreateLabel(f); WMResizeWidget(l, 50, 18); WMMoveWidget(l, 10, 20 * i); sprintf(buffer, "Label %i", i); WMSetLabelText(l, buffer); WMSetLabelRelief(l, WRSimple); } WMMapSubwidgets(f); WMMapWidget(f); WMSetScrollViewContentView(sview, WMWidgetView(f)); /* make the windows of the widgets be actually created */ WMRealizeWidget(win); /* Map all child widgets of the top-level be mapped. * You must call this for each container widget (like frames), * even if they are childs of the top-level window. */ WMMapSubwidgets(win); /* map the top-level window */ WMMapWidget(win); } void testColorWell(WMScreen * scr) { WMWindow *win; WMColorWell *well1, *well2; windowCount++; win = WMCreateWindow(scr, "testColor"); WMResizeWidget(win, 300, 300); WMSetWindowCloseAction(win, closeAction, NULL); well1 = WMCreateColorWell(win); WMResizeWidget(well1, 60, 40); WMMoveWidget(well1, 100, 100); WMSetColorWellColor(well1, WMCreateRGBColor(scr, 0x8888, 0, 0x1111, True)); well2 = WMCreateColorWell(win); WMResizeWidget(well2, 60, 40); WMMoveWidget(well2, 200, 100); WMSetColorWellColor(well2, WMCreateRGBColor(scr, 0, 0, 0x8888, True)); WMRealizeWidget(win); WMMapSubwidgets(win); WMMapWidget(win); } void testColorPanel(WMScreen * scr) { WMColorPanel *panel = WMGetColorPanel(scr); /*if (colorname) { startcolor = WMCreateNamedColor(scr, colorname, False); WMSetColorPanelColor(panel, startcolor); WMReleaseColor(startcolor); } */ WMShowColorPanel(panel); } void sliderCallback(WMWidget * w, void *data) { printf("SLIDER == %i\n", WMGetSliderValue(w)); } void testSlider(WMScreen * scr) { WMWindow *win; WMSlider *s; windowCount++; win = WMCreateWindow(scr, "testSlider"); WMResizeWidget(win, 300, 300); WMSetWindowTitle(win, "Sliders"); WMSetWindowCloseAction(win, closeAction, NULL); s = WMCreateSlider(win); WMResizeWidget(s, 16, 100); WMMoveWidget(s, 100, 100); WMSetSliderKnobThickness(s, 8); WMSetSliderContinuous(s, False); WMSetSliderAction(s, sliderCallback, s); s = WMCreateSlider(win); WMResizeWidget(s, 100, 16); WMMoveWidget(s, 100, 10); WMSetSliderKnobThickness(s, 8); WMRealizeWidget(win); WMMapSubwidgets(win); WMMapWidget(win); } void testTextField(WMScreen * scr) { WMWindow *win; WMTextField *field, *field2; windowCount++; win = WMCreateWindow(scr, "testTextField"); WMResizeWidget(win, 400, 300); WMSetWindowCloseAction(win, closeAction, NULL); field = WMCreateTextField(win); WMResizeWidget(field, 200, 20); WMMoveWidget(field, 20, 20); WMSetTextFieldText(field, "the little \xc2\xa9 sign"); field2 = WMCreateTextField(win); WMResizeWidget(field2, 200, 20); WMMoveWidget(field2, 20, 50); WMSetTextFieldAlignment(field2, WARight); WMRealizeWidget(win); WMMapSubwidgets(win); WMMapWidget(win); } void testText(WMScreen * scr) { WMWindow *win; WMText *text; WMFont *font; void *tb; FILE *file = fopen("wm.html", "rb"); windowCount++; win = WMCreateWindow(scr, "testText"); WMResizeWidget(win, 500, 300); WMSetWindowCloseAction(win, closeAction, NULL); text = WMCreateText(win); WMResizeWidget(text, 480, 280); WMMoveWidget(text, 10, 10); WMSetTextHasVerticalScroller(text, True); WMSetTextEditable(text, False); WMSetTextIgnoresNewline(text, False); #define FNAME "Verdana,sans serif:pixelsize=12" #define MSG \ "Window Maker is the GNU window manager for the " \ "X Window System. It was designed to emulate the " \ "look and feel of part of the NEXTSTEP(tm) GUI. It's " \ "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)." font = WMCreateFont(scr, FNAME ":autohint=false"); WMSetTextDefaultFont(text, font); WMReleaseFont(font); if (0 && file) { char buf[1024]; WMFreezeText(text); while (fgets(buf, 1023, file)) WMAppendTextStream(text, buf); fclose(file); WMThawText(text); } else { WMAppendTextStream(text, "First paragraph has autohinting turned off, " "while the second has it turned on:"); WMAppendTextStream(text, "\n\n\n"); WMAppendTextStream(text, MSG); WMAppendTextStream(text, "\n\n\n"); font = WMCreateFont(scr, FNAME ":autohint=true"); tb = WMCreateTextBlockWithText(text, MSG, font, WMBlackColor(scr), 0, strlen(MSG)); WMAppendTextBlock(text, tb); WMReleaseFont(font); } WMRealizeWidget(win); WMMapSubwidgets(win); WMMapWidget(win); } void testProgressIndicator(WMScreen * scr) { WMWindow *win; WMProgressIndicator *pPtr; windowCount++; win = WMCreateWindow(scr, "testProgressIndicator"); WMResizeWidget(win, 292, 32); WMSetWindowCloseAction(win, closeAction, NULL); pPtr = WMCreateProgressIndicator(win); WMMoveWidget(pPtr, 8, 8); WMSetProgressIndicatorValue(pPtr, 75); WMRealizeWidget(win); WMMapSubwidgets(win); WMMapWidget(win); } void testPullDown(WMScreen * scr) { WMWindow *win; WMPopUpButton *pop, *pop2; windowCount++; win = WMCreateWindow(scr, "pullDown"); WMResizeWidget(win, 400, 300); WMSetWindowCloseAction(win, closeAction, NULL); pop = WMCreatePopUpButton(win); WMResizeWidget(pop, 100, 20); WMMoveWidget(pop, 50, 60); WMSetPopUpButtonPullsDown(pop, True); WMSetPopUpButtonText(pop, "Commands"); WMAddPopUpButtonItem(pop, "Add"); WMAddPopUpButtonItem(pop, "Remove"); WMAddPopUpButtonItem(pop, "Check"); WMAddPopUpButtonItem(pop, "Eat"); pop2 = WMCreatePopUpButton(win); WMResizeWidget(pop2, 100, 20); WMMoveWidget(pop2, 200, 60); WMSetPopUpButtonText(pop2, "Select"); WMAddPopUpButtonItem(pop2, "Apples"); WMAddPopUpButtonItem(pop2, "Bananas"); WMAddPopUpButtonItem(pop2, "Strawberries"); WMAddPopUpButtonItem(pop2, "Blueberries"); WMRealizeWidget(win); WMMapSubwidgets(win); WMMapWidget(win); } void testTabView(WMScreen * scr) { WMWindow *win; WMTabView *tabv; WMTabViewItem *tab; WMFrame *frame; WMLabel *label; windowCount++; win = WMCreateWindow(scr, "testTabs"); WMResizeWidget(win, 400, 300); WMSetWindowCloseAction(win, closeAction, NULL); tabv = WMCreateTabView(win); WMMoveWidget(tabv, 50, 50); WMResizeWidget(tabv, 300, 200); frame = WMCreateFrame(win); WMSetFrameRelief(frame, WRFlat); label = WMCreateLabel(frame); WMResizeWidget(label, 100, 100); WMSetLabelText(label, "Label 1"); WMMapWidget(label); tab = WMCreateTabViewItemWithIdentifier(0); WMSetTabViewItemView(tab, WMWidgetView(frame)); WMAddItemInTabView(tabv, tab); WMSetTabViewItemLabel(tab, "Instances"); frame = WMCreateFrame(win); WMSetFrameRelief(frame, WRFlat); label = WMCreateLabel(frame); WMResizeWidget(label, 40, 50); WMSetLabelText(label, "Label 2"); WMMapWidget(label); tab = WMCreateTabViewItemWithIdentifier(0); WMSetTabViewItemView(tab, WMWidgetView(frame)); WMAddItemInTabView(tabv, tab); WMSetTabViewItemLabel(tab, "Classes"); frame = WMCreateFrame(win); WMSetFrameRelief(frame, WRFlat); label = WMCreateLabel(frame); WMResizeWidget(label, 100, 100); WMMoveWidget(label, 60, 40); WMSetLabelText(label, "Label 3"); WMMapWidget(label); tab = WMCreateTabViewItemWithIdentifier(0); WMSetTabViewItemView(tab, WMWidgetView(frame)); WMAddItemInTabView(tabv, tab); WMSetTabViewItemLabel(tab, "Something"); frame = WMCreateFrame(win); WMSetFrameRelief(frame, WRFlat); label = WMCreateLabel(frame); WMResizeWidget(label, 100, 100); WMMoveWidget(label, 160, 40); WMSetLabelText(label, "Label 4"); WMMapWidget(label); tab = WMCreateTabViewItemWithIdentifier(0); WMSetTabViewItemView(tab, WMWidgetView(frame)); WMAddItemInTabView(tabv, tab); WMSetTabViewItemLabel(tab, "Bla!"); frame = WMCreateFrame(win); WMSetFrameRelief(frame, WRFlat); label = WMCreateLabel(frame); WMResizeWidget(label, 100, 100); WMMoveWidget(label, 160, 40); WMSetLabelText(label, "Label fjweqklrj qwl"); WMMapWidget(label); tab = WMCreateTabViewItemWithIdentifier(0); WMSetTabViewItemView(tab, WMWidgetView(frame)); WMAddItemInTabView(tabv, tab); WMSetTabViewItemLabel(tab, "Weee!"); WMRealizeWidget(win); WMMapSubwidgets(win); WMMapWidget(win); } void splitViewConstrainProc(WMSplitView * sPtr, int indView, int *minSize, int *maxSize) { switch (indView) { case 0: *minSize = 20; break; case 1: *minSize = 40; *maxSize = 80; break; case 2: *maxSize = 60; break; default: break; } } static void resizeSplitView(XEvent * event, void *data) { WMSplitView *sPtr = (WMSplitView *) data; if (event->type == ConfigureNotify) { int width = event->xconfigure.width - 10; if (width < WMGetSplitViewDividerThickness(sPtr)) width = WMGetSplitViewDividerThickness(sPtr); if (width != WMWidgetWidth(sPtr) || event->xconfigure.height != WMWidgetHeight(sPtr)) WMResizeWidget(sPtr, width, event->xconfigure.height - 55); } } void appendSubviewButtonAction(WMWidget * self, void *data) { WMSplitView *sPtr = (WMSplitView *) data; char buf[64]; WMLabel *label = WMCreateLabel(sPtr); sprintf(buf, "Subview %d", WMGetSplitViewSubviewsCount(sPtr) + 1); WMSetLabelText(label, buf); WMSetLabelRelief(label, WRSunken); WMAddSplitViewSubview(sPtr, WMWidgetView(label)); WMRealizeWidget(label); WMMapWidget(label); } void removeSubviewButtonAction(WMWidget * self, void *data) { WMSplitView *sPtr = (WMSplitView *) data; int count = WMGetSplitViewSubviewsCount(sPtr); if (count > 2) { WMView *view = WMGetSplitViewSubviewAt(sPtr, count - 1); WMDestroyWidget(WMWidgetOfView(view)); WMRemoveSplitViewSubviewAt(sPtr, count - 1); } } void orientationButtonAction(WMWidget * self, void *data) { WMSplitView *sPtr = (WMSplitView *) data; WMSetSplitViewVertical(sPtr, !WMGetSplitViewVertical(sPtr)); } void adjustSubviewsButtonAction(WMWidget * self, void *data) { WMAdjustSplitViewSubviews((WMSplitView *) data); } void testSplitView(WMScreen * scr) { WMWindow *win; WMSplitView *splitv1, *splitv2; WMFrame *frame; WMLabel *label; WMButton *button; windowCount++; win = WMCreateWindow(scr, "testTabs"); WMResizeWidget(win, 300, 400); WMSetWindowCloseAction(win, closeAction, NULL); frame = WMCreateFrame(win); WMSetFrameRelief(frame, WRSunken); WMMoveWidget(frame, 5, 5); WMResizeWidget(frame, 290, 40); splitv1 = WMCreateSplitView(win); WMMoveWidget(splitv1, 5, 50); WMResizeWidget(splitv1, 290, 345); WMSetSplitViewConstrainProc(splitv1, splitViewConstrainProc); WMCreateEventHandler(WMWidgetView(win), StructureNotifyMask, resizeSplitView, splitv1); button = WMCreateCommandButton(frame); WMSetButtonText(button, "+"); WMSetButtonAction(button, appendSubviewButtonAction, splitv1); WMMoveWidget(button, 10, 8); WMMapWidget(button); button = WMCreateCommandButton(frame); WMSetButtonText(button, "-"); WMSetButtonAction(button, removeSubviewButtonAction, splitv1); WMMoveWidget(button, 80, 8); WMMapWidget(button); button = WMCreateCommandButton(frame); WMSetButtonText(button, "="); WMMoveWidget(button, 150, 8); WMSetButtonAction(button, adjustSubviewsButtonAction, splitv1); WMMapWidget(button); button = WMCreateCommandButton(frame); WMSetButtonText(button, "#"); WMMoveWidget(button, 220, 8); WMSetButtonAction(button, orientationButtonAction, splitv1); WMMapWidget(button); label = WMCreateLabel(splitv1); WMSetLabelText(label, "Subview 1"); WMSetLabelRelief(label, WRSunken); WMMapWidget(label); WMAddSplitViewSubview(splitv1, WMWidgetView(label)); splitv2 = WMCreateSplitView(splitv1); WMResizeWidget(splitv2, 150, 150); WMSetSplitViewVertical(splitv2, True); label = WMCreateLabel(splitv2); WMSetLabelText(label, "Subview 2.1"); WMSetLabelRelief(label, WRSunken); WMMapWidget(label); WMAddSplitViewSubview(splitv2, WMWidgetView(label)); label = WMCreateLabel(splitv2); WMSetLabelText(label, "Subview 2.2"); WMSetLabelRelief(label, WRSunken); WMMapWidget(label); WMAddSplitViewSubview(splitv2, WMWidgetView(label)); label = WMCreateLabel(splitv2); WMSetLabelText(label, "Subview 2.3"); WMSetLabelRelief(label, WRSunken); WMMapWidget(label); WMAddSplitViewSubview(splitv2, WMWidgetView(label)); WMMapWidget(splitv2); WMAddSplitViewSubview(splitv1, WMWidgetView(splitv2)); WMRealizeWidget(win); WMMapSubwidgets(win); WMMapWidget(win); } void testUD() { WMUserDefaults *defs; char str[32]; defs = WMGetStandardUserDefaults(); sprintf(str, "TEST DATA"); puts(str); WMSetUDStringForKey(defs, str, "testKey"); puts(str); } int main(int argc, char **argv) { WMScreen *scr; WMPixmap *pixmap; /* Initialize the application */ WMInitializeApplication("Test@eqweq_ewq$eqw", &argc, argv); testUD(); /* * Open connection to the X display. */ dpy = XOpenDisplay(""); if (!dpy) { puts("could not open display"); exit(1); } /* This is used to disable buffering of X protocol requests. * Do NOT use it unless when debugging. It will cause a major * slowdown in your application */ #if 0 XSynchronize(dpy, True); #endif /* * Create screen descriptor. */ scr = WMCreateScreen(dpy, DefaultScreen(dpy)); /* * Loads the logo of the application. */ pixmap = WMCreatePixmapFromFile(scr, "logo.xpm"); /* * Makes the logo be used in standard dialog panels. */ if (pixmap) { WMSetApplicationIconPixmap(scr, pixmap); WMReleasePixmap(pixmap); } /* * Do some test stuff. * * Put the testSomething() function you want to test here. */ testText(scr); testFontPanel(scr); testColorPanel(scr); testTextField(scr); #if 0 testBox(scr); testButton(scr); testColorPanel(scr); testColorWell(scr); testDragAndDrop(scr); testFrame(scr); testGradientButtons(scr); testList(scr); testOpenFilePanel(scr); testProgressIndicator(scr); testPullDown(scr); testScrollView(scr); testSlider(scr); testSplitView(scr); testTabView(scr); testTextField(scr); #endif /* * The main event loop. * */ WMScreenMainLoop(scr); return 0; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Tests/testmywidget.c�������������������������������������������������������0000644�0001750�0001750�00000001323�13431646201�015713� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include <WINGs/WINGs.h> #include <stdlib.h> #include "mywidget.h" void wAbort() { exit(1); } int main(int argc, char **argv) { Display *dpy = XOpenDisplay(""); WMScreen *scr; WMWindow *win; MyWidget *thing; WMInitializeApplication("Test", &argc, argv); if (!dpy) { wfatal("could not open display"); exit(1); } scr = WMCreateSimpleApplicationScreen(dpy); /* init our widget */ InitMyWidget(scr); win = WMCreateWindow(scr, "test"); WMResizeWidget(win, 150, 50); thing = CreateMyWidget(win); SetMyWidgetText(thing, "The Test"); WMResizeWidget(thing, 100, 20); WMMoveWidget(thing, 10, 10); WMRealizeWidget(win); WMMapSubwidgets(win); WMMapWidget(win); WMScreenMainLoop(scr); return 0; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Tests/wm.png���������������������������������������������������������������0000644�0001750�0001750�00000011174�13431646201�014154� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a�>���H sD-IC1ɄOF8Ȥ[H㐉c;gcTzd%$%F%~iE-Mc=g,)q"$d=04BE4[cT2ɔU$!G4*ԂvoGIȵf) tCiS6VZR26%tFX4(tETD5^&#ԤOׄNwT6xD,8<I}h4(T6ڔ]%&zrDntDڤf܇F<0S4U3,d?̀ztCd<+,1شhqT=ԠDDj܊ONI،Tuc:6,$w6+E.T851g\=&fK1tEڜ_28K͝X<+RU%EL_{k?d@YcR@{|JTD<@g42{GJ˟TS"D<51VJQRWx%'hJ% $#x!svY {Nz_77L3:6W9 y ּl;<5K.ȭc\:w\7wL/j<(ثe,,OY[``cvɌOG, eͻj\8\8L0U^4[SLGlATmBƛX-2M|FݡW[8|Gy;%R<'S,)<<oT||{m@-,Z<8l?l?|IX,j,),+]8?DRpmk k |HmAz+" F,K ,* NL̨ !Made with GIMP�! ��,�����>��� H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0ct8SgϟI49=*]ιPaJ*7iU+sIA hYvmڧDÎBVk!+e/^sK]�x"Ec)d3k'\ kYG'^=NJiu}L[b9ϊAk@aBGX|_%U̘ q {8G :9E_PN껁oΥN:Mm64{h[ rEr1_9d ex䥡a]ӀhN a}u8x__j_-h@A`v)SУ,H!�⍵ApZu$Xv7!Ir]OBY!?b ॒`nH^>NI bv4~n:H@Хt!=Ε'aS"X j)[j$aBF�GYjc5}1ȠY>x-!jJP&A)�MaxT z®TR8S},&Qڤy.%bmJ=|`Cf+ƚ7C5esOrBy[D�AEA@f*V@'0 C=eL6U%Y�O cjq ,?]F !Od-CLPRLTNnsD ErQGOK]5փ^Y3T=j@.Dl-\qoCu8QAq4tԬOݴ72TXzdG) 9}TT&x ~~G1__!FЂt6U<1BA3y4 4R; B kP[d‚<Hx�?2R N6E/ @A |6 . -�9�2mnFP-@#�l+f� C@>a7` $h _ b u@iԀg;@�8>ET�Xx-akX1, CdP '| $8cMp/`,X0(upE,(A> >.rЊ7b6� 0B`U0%,? a u#q{U � 44 f#l h`R2sH\`DHIg0Z |b50D 3( VIx-T0 0 ;h@#ȁ �nXE@*0[d:T>(&M^|@J. !l.` 6Ym!f?c[I BL:d0 3 Zp �Mʁ``CpHȬѹrxŵ 48%T T(NMxⶸ"`+`6p< (Qdx-(^`P$JIx+z*ڹ@ .~ �P׿$$-jHA :Y(  D ��7�Gi v\CT*.`�: NX�Q>:pa� M 8 #B) 6"1Ih` b� x'z�bo%{L.�/bF@>PEpA 0nG@ E0ľzz05QMaF pbbq1wp"ǛXF!lb DJQ�l -0ahtspK JE 'BH"H�@pE0/X8ðqn70F'H/ 0h)�0֎a{[VOЅk\c )7 b4a<1f@:]A<8CPtƚc)w. ,xc4]^3N4 (( 3X2i  PN8!dP0j@gGaorp8ܤ#8Œ�D,4-F#}[6~ *l ʁp CHǟ H�B ?ic 1 h'ȥd)=w&j|cj H πgZ`D7Nyp4("�_g�@[.�d �X 'p c�  7sU 6]`k9 pGT v F_ 9|Rgz b@�r0bPcWdN �wo�Uf/_po¡  m ˣw'`u %| &g8" =3@�: 0` @6Y g� 2  2?2W4 @M} F@lI) OW*@�P6nvA TWvROpq! !' bq8B˓h�Oad^@! eP�zgP g `1"r�u0;8)@~=)@A!@ 9=� PWUT0Mf=B^~@ zvVtW|WiRR<c/Z�6N C bi%( -=fpa0�>wyC5* 0p ~b6{mrJ@9hj Pk@S3T-FYl@k7G1ViM( I^QI`oV(�2DNpV ( SCh �` À$w4 `G=X1 Yr8,ІEP B  pY gSb RX� ? @�wv}9i3֘f4@Fh ^ 0D ܰ�`vF A\p91 @g-@AFS<g ؋u� XU@m`` gO5!gw01m6eh97Q�! 7e90 Ku@DAgQOiʃ ѦmYAkJ9kW[ K! DUsb KsI=*v[)C)zJo0JjeBʫxz3]Vг5Lj6j]Ȕ**LYh3pR! a a ZP!;:u(({l!- "a QQ Q ! a ! u�b+Pް8t�[;_+J;P:k!l{qK H EKtKf;e` L+ lk wAeY+r q iL;[k4q KetKBKrAa @۸k 0kHStVл ok Hb[HkAe `븶tp `0 S+[t LK+K1<| �;����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Tests/.deps/���������������������������������������������������������������0000755�0001750�0001750�00000000000�13642360104�014107� 5����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Tests/.deps/wmfile.Po������������������������������������������������������0000644�0001750�0001750�00000000010�13642360104�015601� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# dummy ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Tests/.deps/testmywidget.Po������������������������������������������������0000644�0001750�0001750�00000000010�13642360104�017047� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# dummy ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Tests/.deps/wtest.Po�������������������������������������������������������0000644�0001750�0001750�00000000010�13642360104�015464� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# dummy ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Tests/.deps/mywidget.Po����������������������������������������������������0000644�0001750�0001750�00000000010�13642360104�016147� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# dummy ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Tests/.deps/wmquery.Po�����������������������������������������������������0000644�0001750�0001750�00000000010�13642360104�016027� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# dummy ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Tests/mywidget.h�����������������������������������������������������������0000644�0001750�0001750�00000000323�13431646201�015017� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ /* * Header for demo widget. * */ typedef struct W_MyWidget MyWidget; MyWidget *CreateMyWidget(WMWidget *parent); void SetMyWidgetText(MyWidget *mPtr, char *text); W_Class InitMyWidget(WMScreen *scr); �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Tests/wm.html��������������������������������������������������������������0000644�0001750�0001750�00000003642�13431646201�014335� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<HTML><font size=-1> <center> <Img src=wm.png></b><p> <b>GNU Window Maker</B><br> <i>X11 Window Manager</i><p> <u>http://windowmaker.info<br> ftp.windowmaker.info</u></font><Br> </center> <b><i>Window Maker</b> <Img src=upbtn.xpm></i>is the GNU window manager for the X Window System. It was designed to emulate the look and feel of part of the NEXTSTEP(tm) GUI. Its 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). <p> <b>Window Maker</b> was designed keeping integration with GNUstep in mind and is the "official" window manager for it. It is also part of the GNU project (<u>www.gnu.org</u>) <p> <b>What is <i>GNUstep?</i></b><p> <i><b>G</i>NU</b>step is a complete object-oriented development system, based on the OpenStep specification released by NeXT(tm) (now Apple(tm)) and Sun(tm). It will provide everything one needs to produce cross-platform, object-oriented, graphical (and non-graphical) applications; providing among other things, base system libraries, a high-level GUI application framework that uses a Display PostScript(tm)-like imaging model (DGS), objects for accessing relational databases, distributed objects and a graphical development environment, with tools like interface modeller, a project management system (project center) and other tools. <p> The GNUstep development system will be used to create a user environment, with everything needed for a complete graphical user interface, such as a file viewer, text editors and other applications. Note that the user environment (or "desktop environment") is only a small part of the whole GNUstep project and therefore it does not "compete" with other projects like KDE or GNOME, simply because they are completely different things. <p> For more information on the GNUstep project, visit: <u>http://www.gnustep.org</u> and <u>http://gnustep.current.nu</u> </HTML> ����������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Tests/upbtn.xpm������������������������������������������������������������0000644�0001750�0001750�00000002044�13431646201�014675� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * upbtn_xpm[] = { "20 22 32 1", " c None", ". c #000000", "+ c #FFFFFF", "@ c #4A485A", "# c #524052", "$ c #4A595A", "% c #5A596A", "& c #4A486A", "* c #5A595A", "= c #52556A", "- c #52406A", "; c #6A556A", "> c #5A6D6A", ", c #5A597B", "' c #5A6D7B", ") c #6A557B", "! c #6A6D7B", "~ c #6A697B", "{ c #6A698B", "] c #7B797B", "^ c #C5C2C5", "/ c #6A818B", "( c #6A7D7B", "_ c #7B698B", ": c #6A798B", "< c #7B799C", "[ c #7B798B", "} c #7B8D94", "| c #7B81A4", "1 c #8B85A4", "2 c #73899C", "3 c #7B89A4", " ", " .+ ", " .@#+ ", " .$%$&+ ", " .*=*-*-+ ", " .%%%%%%$%+ ", " .%=%;%=*=*-+ ", " .>%>,''>,>%=%+ ", " .%)>)!~>)>)>=*#+ ", " .>~'~'{'{'~',>%$@+ ", " ]+++^{!{!~!)>+++++ ", " ./{/{({'~+ ", " ._:_:_!~>+ ", " ./</</{'~+ ", " .<<<[_({!+ ", " .}|}</{(~+ ", " .12<[_:{'+ ", " .31}</{'~+ ", " .12<[_!~>+ ", " .2</</{''+ ", " ]+++++++++ ", " "}; ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Tests/Makefile�������������������������������������������������������������0000644�0001750�0001750�00000052200�13642360103�014454� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.16.1 from Makefile.am. # WINGs/Tests/Makefile. Generated from Makefile.in by configure. # Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/WindowMaker pkgincludedir = $(includedir)/WindowMaker pkglibdir = $(libdir)/WindowMaker pkglibexecdir = $(libexecdir)/WindowMaker am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = x86_64-pc-linux-gnu host_triplet = x86_64-pc-linux-gnu noinst_PROGRAMS = wtest$(EXEEXT) wmquery$(EXEEXT) wmfile$(EXEEXT) \ testmywidget$(EXEEXT) subdir = WINGs/Tests ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ $(top_srcdir)/m4/ax_pthread.m4 \ $(top_srcdir)/m4/ld-version-script.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/windowmaker.m4 \ $(top_srcdir)/m4/wm_attributes.m4 \ $(top_srcdir)/m4/wm_cflags_check.m4 \ $(top_srcdir)/m4/wm_i18n.m4 \ $(top_srcdir)/m4/wm_imgfmt_check.m4 \ $(top_srcdir)/m4/wm_libexif.m4 $(top_srcdir)/m4/wm_libmath.m4 \ $(top_srcdir)/m4/wm_prog_cc_c11.m4 \ $(top_srcdir)/m4/wm_xext_check.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) am_testmywidget_OBJECTS = testmywidget.$(OBJEXT) mywidget.$(OBJEXT) testmywidget_OBJECTS = $(am_testmywidget_OBJECTS) testmywidget_LDADD = $(LDADD) testmywidget_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.la \ $(top_builddir)/wrlib/libwraster.la \ $(top_builddir)/WINGs/libWUtil.la AM_V_lt = $(am__v_lt_$(V)) am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) am__v_lt_0 = --silent am__v_lt_1 = wmfile_SOURCES = wmfile.c wmfile_OBJECTS = wmfile.$(OBJEXT) wmfile_LDADD = $(LDADD) wmfile_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.la \ $(top_builddir)/wrlib/libwraster.la \ $(top_builddir)/WINGs/libWUtil.la wmquery_SOURCES = wmquery.c wmquery_OBJECTS = wmquery.$(OBJEXT) wmquery_LDADD = $(LDADD) wmquery_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.la \ $(top_builddir)/wrlib/libwraster.la \ $(top_builddir)/WINGs/libWUtil.la wtest_SOURCES = wtest.c wtest_OBJECTS = wtest.$(OBJEXT) wtest_LDADD = $(LDADD) AM_V_P = $(am__v_P_$(V)) am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I. -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/mywidget.Po \ ./$(DEPDIR)/testmywidget.Po ./$(DEPDIR)/wmfile.Po \ ./$(DEPDIR)/wmquery.Po ./$(DEPDIR)/wtest.Po am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_$(V)) am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_$(V)) am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(testmywidget_SOURCES) wmfile.c wmquery.c wtest.c DIST_SOURCES = $(testmywidget_SOURCES) wmfile.c wmquery.c wtest.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = ${SHELL} /home/profzoom/src/wmaker/wmaker-crm/missing aclocal-1.16 AMTAR = $${TAR-tar} AM_DEFAULT_VERBOSITY = 1 AR = ar AUTOCONF = ${SHELL} /home/profzoom/src/wmaker/wmaker-crm/missing autoconf AUTOHEADER = ${SHELL} /home/profzoom/src/wmaker/wmaker-crm/missing autoheader AUTOMAKE = ${SHELL} /home/profzoom/src/wmaker/wmaker-crm/missing automake-1.16 AWK = gawk CC = gcc CCDEPMODE = depmode=gcc3 CFLAGS = -g -O2 -Wall -Wextra -Wno-sign-compare -Werror=trampolines -Wno-deprecated -Wno-deprecated-declarations CPP = gcc -E CPPFLAGS = -DNDEBUG -D_XOPEN_SOURCE=600 -D_GNU_SOURCE CYGPATH_W = echo DEFS = -DHAVE_CONFIG_H DEPDIR = .deps DLLTOOL = false DSYMUTIL = DUMPBIN = ECHO_C = ECHO_N = -n ECHO_T = EGREP = /bin/grep -E EXEEXT = FCLIBS = -lfontconfig -lfreetype FGREP = /bin/grep -F GFXLIBS = -lXpm -lpng -ljpeg -lgif -ltiff GREP = /bin/grep HEADER_SEARCH_PATH = -I${includedir} ICONEXT = tiff INSTALL = /usr/bin/install -c INSTALL_DATA = ${INSTALL} -m 644 INSTALL_PROGRAM = ${INSTALL} INSTALL_SCRIPT = ${INSTALL} INSTALL_STRIP_PROGRAM = $(install_sh) -c -s INTLIBS = LD = /usr/bin/ld -m elf_x86_64 LDFLAGS = LIBBSD = LIBEXIF = LIBM = -lm LIBOBJS = LIBRARY_SEARCH_PATH = -L${libdir} LIBS = LIBTOOL = $(SHELL) $(top_builddir)/libtool LIBXINERAMA = -lXinerama LIBXMU = -lXmu LIBXRANDR = LINGUAS = LIPO = LN_S = ln -s LTLIBOBJS = LT_SYS_LIBRARY_PATH = MAGICKFLAGS = MAGICKLIBS = MAKEINFO = ${SHELL} /home/profzoom/src/wmaker/wmaker-crm/missing makeinfo MANIFEST_TOOL = : MANLANGDIRS = MKDIR_P = /bin/mkdir -p MSGFMT = NM = /usr/bin/nm -B NMEDIT = OBJDUMP = objdump OBJEXT = o OTOOL = OTOOL64 = PACKAGE = WindowMaker PACKAGE_BUGREPORT = wmaker-dev@googlegroups.com PACKAGE_NAME = WindowMaker PACKAGE_STRING = WindowMaker 0.95.9 PACKAGE_TARNAME = WindowMaker PACKAGE_URL = http://www.windowmaker.org/ PACKAGE_VERSION = 0.95.9 PANGOLIBS = PATH_SEPARATOR = : PKG_CONFIG = /usr/bin/pkg-config PKG_CONFIG_LIBDIR = PKG_CONFIG_PATH = PTHREAD_CC = gcc PTHREAD_CFLAGS = -pthread PTHREAD_LIBS = RANLIB = ranlib SED = /bin/sed SET_MAKE = SHELL = /bin/bash STRIP = strip UTILMOFILES = VERSION = 0.95.9 WINGSMOFILES = WINGS_VERSION = 4:0:1 WMAKERMOFILES = WPREFSMOFILES = WRASTER_VERSION = 6:0:0 WUTIL_VERSION = 5:0:0 XCFLAGS = XFTCONFIG = /usr/bin/pkg-config xft XFTFLAGS = -I/usr/include/uuid -I/usr/include/freetype2 -I/usr/include/libpng16 XFTLIBS = -lXft XGETTEXT = xgettext XLFLAGS = XLIBS = -lX11 -lXext XMKMF = X_CFLAGS = X_EXTRA_LIBS = X_LIBRARY_PATH = X_LIBS = X_PRE_LIBS = -lSM -lICE abs_builddir = /home/profzoom/src/wmaker/wmaker-crm/WINGs/Tests abs_srcdir = /home/profzoom/src/wmaker/wmaker-crm/WINGs/Tests abs_top_builddir = /home/profzoom/src/wmaker/wmaker-crm abs_top_srcdir = /home/profzoom/src/wmaker/wmaker-crm ac_ct_AR = ar ac_ct_CC = gcc ac_ct_DUMPBIN = am__include = include am__leading_dot = . am__quote = am__tar = $${TAR-tar} chof - "$$tardir" am__untar = $${TAR-tar} xf - ax_pthread_config = bindir = ${exec_prefix}/bin build = x86_64-pc-linux-gnu build_alias = build_cpu = x86_64 build_os = linux-gnu build_vendor = pc builddir = . datadir = ${datarootdir} datarootdir = ${prefix}/share defsdatadir = ${sysconfdir}/WindowMaker docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} dvidir = ${docdir} exec_prefix = ${prefix} host = x86_64-pc-linux-gnu host_alias = host_cpu = x86_64 host_os = linux-gnu host_vendor = pc htmldir = ${docdir} inc_search_path = -I${includedir} includedir = ${prefix}/include infodir = ${datarootdir}/info install_sh = ${SHELL} /home/profzoom/src/wmaker/wmaker-crm/install-sh lcov_output_directory = lib_search_path = -L${libdir} libdir = ${exec_prefix}/lib libexecdir = ${exec_prefix}/libexec localedir = ${datarootdir}/locale localstatedir = ${prefix}/var mandir = ${datarootdir}/man mkdir_p = $(MKDIR_P) oldincludedir = /usr/include pdfdir = ${docdir} pixmapdir = ${datadir}/pixmaps prefix = /usr/local program_transform_name = s,x,x, psdir = ${docdir} runstatedir = ${localstatedir}/run sbindir = ${exec_prefix}/sbin sharedstatedir = ${prefix}/com srcdir = . sysconfdir = ${prefix}/etc target_alias = top_build_prefix = ../../ top_builddir = ../.. top_srcdir = ../.. wprefs_bindir = ${exec_prefix}/bin wprefs_datadir = ${datarootdir}/WPrefs AUTOMAKE_OPTIONS = LDADD = $(top_builddir)/WINGs/libWINGs.la $(top_builddir)/wrlib/libwraster.la \ $(top_builddir)/WINGs/libWUtil.la \ -lXft -lX11 -lXext testmywidget_SOURCES = testmywidget.c mywidget.c mywidget.h wtest_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.la EXTRA_DIST = logo.xpm upbtn.xpm wm.html wm.png AM_CPPFLAGS = -I$(top_srcdir)/WINGs -I$(top_srcdir)/wrlib -I$(top_srcdir)/src \ -DRESOURCE_PATH=\"$(datadir)/WINGs\" -I/usr/include/uuid -I/usr/include/freetype2 -I/usr/include/libpng16 -I${includedir} all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu WINGs/Tests/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu WINGs/Tests/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list testmywidget$(EXEEXT): $(testmywidget_OBJECTS) $(testmywidget_DEPENDENCIES) $(EXTRA_testmywidget_DEPENDENCIES) @rm -f testmywidget$(EXEEXT) $(AM_V_CCLD)$(LINK) $(testmywidget_OBJECTS) $(testmywidget_LDADD) $(LIBS) wmfile$(EXEEXT): $(wmfile_OBJECTS) $(wmfile_DEPENDENCIES) $(EXTRA_wmfile_DEPENDENCIES) @rm -f wmfile$(EXEEXT) $(AM_V_CCLD)$(LINK) $(wmfile_OBJECTS) $(wmfile_LDADD) $(LIBS) wmquery$(EXEEXT): $(wmquery_OBJECTS) $(wmquery_DEPENDENCIES) $(EXTRA_wmquery_DEPENDENCIES) @rm -f wmquery$(EXEEXT) $(AM_V_CCLD)$(LINK) $(wmquery_OBJECTS) $(wmquery_LDADD) $(LIBS) wtest$(EXEEXT): $(wtest_OBJECTS) $(wtest_DEPENDENCIES) $(EXTRA_wtest_DEPENDENCIES) @rm -f wtest$(EXEEXT) $(AM_V_CCLD)$(LINK) $(wtest_OBJECTS) $(wtest_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c include ./$(DEPDIR)/mywidget.Po # am--include-marker include ./$(DEPDIR)/testmywidget.Po # am--include-marker include ./$(DEPDIR)/wmfile.Po # am--include-marker include ./$(DEPDIR)/wmquery.Po # am--include-marker include ./$(DEPDIR)/wtest.Po # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @echo '# dummy' >$@-t && $(am__mv) $@-t $@ am--depfiles: $(am__depfiles_remade) .c.o: $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po # $(AM_V_CC)source='$<' object='$@' libtool=no \ # DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ # $(AM_V_CC_no)$(COMPILE) -c -o $@ $< .c.obj: $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po # $(AM_V_CC)source='$<' object='$@' libtool=no \ # DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ # $(AM_V_CC_no)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo # $(AM_V_CC)source='$<' object='$@' libtool=yes \ # DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ # $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -f ./$(DEPDIR)/mywidget.Po -rm -f ./$(DEPDIR)/testmywidget.Po -rm -f ./$(DEPDIR)/wmfile.Po -rm -f ./$(DEPDIR)/wmquery.Po -rm -f ./$(DEPDIR)/wtest.Po -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/mywidget.Po -rm -f ./$(DEPDIR)/testmywidget.Po -rm -f ./$(DEPDIR)/wmfile.Po -rm -f ./$(DEPDIR)/wmquery.Po -rm -f ./$(DEPDIR)/wtest.Po -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \ ctags ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # 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. .NOEXPORT: ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Tests/mywidget.c�����������������������������������������������������������0000644�0001750�0001750�00000007405�13431646201�015022� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Demo user widget for WINGs * * Author: Alfredo K. Kojima * * This file is in the public domain. * */ /* * * Include the WINGs private data header. * * */ #include <WINGs/WINGsP.h> /* * Our public header. */ #include "mywidget.h" /* * Define the widget "class" */ typedef struct W_MyWidget { /* these two fields must be present in all your widgets in this * exact position */ W_Class widgetClass; WMView *view; /* put your stuff here */ char *text; } _MyWidget; /* some forward declarations */ static void destroyMyWidget(_MyWidget * mPtr); static void paintMyWidget(_MyWidget * mPtr); static void handleEvents(XEvent * event, void *data); static void handleActionEvents(XEvent * event, void *data); /* * Delegates * See the source for the other widgets to see how to use. * You won't need to use this most of the time. */ static W_ViewDelegate _MyWidgetDelegate = { NULL, NULL, NULL, NULL, NULL }; /* our widget class ID */ static W_Class myWidgetClass = 0; /* * Initializer for our widget. Must be called before creating any * instances of the widget. */ W_Class InitMyWidget(WMScreen * scr) { /* register our widget with WINGs and get our widget class ID */ if (!myWidgetClass) { myWidgetClass = W_RegisterUserWidget(); } return myWidgetClass; } /* * Our widget fabrication plant. */ MyWidget *CreateMyWidget(WMWidget * parent) { MyWidget *mPtr; /* allocate some storage for our new widget instance */ mPtr = wmalloc(sizeof(MyWidget)); /* initialize it */ memset(mPtr, 0, sizeof(MyWidget)); /* set the class ID */ mPtr->widgetClass = myWidgetClass; /* * Create the view for our widget. * Note: the Window for the view is only created after the view is * realized with W_RealizeView() * * Consider the returned view as read-only. */ mPtr->view = W_CreateView(W_VIEW(parent)); if (!mPtr->view) { wfree(mPtr); return NULL; } /* always do this */ mPtr->view->self = mPtr; /* setup the delegates for the view */ mPtr->view->delegate = &_MyWidgetDelegate; /* * Intercept some events for our widget, so that we can handle them. */ WMCreateEventHandler(mPtr->view, ExposureMask /* this allows us to know when we should paint */ | StructureNotifyMask, /* this allows us to know things like when we are destroyed */ handleEvents, mPtr); /* * Intercept some other events. This could be merged with the above * call, but we separate for more organization. */ WMCreateEventHandler(mPtr->view, ButtonPressMask, handleActionEvents, mPtr); return mPtr; } /* * Paint our widget contents. */ static void paintMyWidget(_MyWidget * mPtr) { W_Screen *scr = mPtr->view->screen; WMColor *color; if (mPtr->text) { color = WMWhiteColor(scr); W_PaintText(mPtr->view, mPtr->view->window, scr->normalFont, 0, 0, mPtr->view->size.width, WACenter, color, False, mPtr->text, strlen(mPtr->text)); WMReleaseColor(color); } } static void handleEvents(XEvent * event, void *data) { _MyWidget *mPtr = (_MyWidget *) data; switch (event->type) { case Expose: if (event->xexpose.count != 0) break; paintMyWidget(mPtr); break; case DestroyNotify: destroyMyWidget(mPtr); break; } } static void handleActionEvents(XEvent * event, void *data) { _MyWidget *mPtr = (_MyWidget *) data; switch (event->type) { case ButtonPress: XBell(mPtr->view->screen->display, 100); XBell(mPtr->view->screen->display, 100); break; } } void SetMyWidgetText(MyWidget * mPtr, char *text) { CHECK_CLASS(mPtr, myWidgetClass); if (mPtr->text) wfree(mPtr->text); mPtr->text = wstrdup(text); if (W_VIEW_MAPPED(mPtr->view)) { paintMyWidget(mPtr); } } static void destroyMyWidget(_MyWidget * mPtr) { /* * Free all data we allocated for our widget. */ if (mPtr->text) wfree(mPtr->text); wfree(mPtr); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Tests/Makefile.am����������������������������������������������������������0000644�0001750�0001750�00000001105�13431646201�015050� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������## automake input file for WINGs - Tests AUTOMAKE_OPTIONS = noinst_PROGRAMS = wtest wmquery wmfile testmywidget LDADD= $(top_builddir)/WINGs/libWINGs.la $(top_builddir)/wrlib/libwraster.la \ $(top_builddir)/WINGs/libWUtil.la \ @XFTLIBS@ @INTLIBS@ @XLIBS@ testmywidget_SOURCES = testmywidget.c mywidget.c mywidget.h wtest_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.la EXTRA_DIST = logo.xpm upbtn.xpm wm.html wm.png AM_CPPFLAGS = -I$(top_srcdir)/WINGs -I$(top_srcdir)/wrlib -I$(top_srcdir)/src \ -DRESOURCE_PATH=\"$(datadir)/WINGs\" @XFTFLAGS@ @HEADER_SEARCH_PATH@ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Tests/wmquery.c������������������������������������������������������������0000644�0001750�0001750�00000003052�13431646201�014674� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ /* * Author: Len Trigg <trigg@cs.waikato.ac.nz> */ #include <WINGs/WINGs.h> #include <unistd.h> #include <stdio.h> #include <stdlib.h> #include "logo.xpm" void wAbort() { exit(1); } char *ProgName; void usage(void) { fprintf(stderr, "usage:\n" "\t%s [-options]\n" "\n" "options:\n" " -i <str>\tInitial entry contents (default none)\n" " -p <str>\tPrompt message (default none)\n" " -t <str>\tQuery window title (default none)\n" "\n" "information:\n" "\t%s pops up a WindowMaker style input panel.\n" "\n" "version:\n" "\t%s\n", ProgName, ProgName, __DATE__); exit(0); } int main(int argc, char **argv) { Display *dpy = XOpenDisplay(""); WMScreen *scr; WMPixmap *pixmap; char *title = NULL; char *prompt = NULL; char *initial = NULL; char *result = NULL; int ch; extern char *optarg; extern int optind; WMInitializeApplication("WMQuery", &argc, argv); ProgName = argv[0]; if (!dpy) { puts("could not open display"); exit(1); } while ((ch = getopt(argc, argv, "i:hp:t:")) != -1) switch (ch) { case 'i': initial = optarg; break; case 'p': prompt = optarg; break; case 't': title = optarg; break; default: usage(); } for (; optind < argc; optind++) usage(); scr = WMCreateSimpleApplicationScreen(dpy); pixmap = WMCreatePixmapFromXPMData(scr, GNUSTEP_XPM); WMSetApplicationIconPixmap(scr, pixmap); WMReleasePixmap(pixmap); if ((result = WMRunInputPanel(scr, NULL, title, prompt, initial, "OK", "Cancel")) != NULL) printf("%s\n", result); else printf("\n"); return 0; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/widgets.c������������������������������������������������������������������0000644�0001750�0001750�00000064011�13642357773�013552� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include "WINGsP.h" #include "wconfig.h" #include <X11/Xft/Xft.h> #include <X11/Xutil.h> #include <X11/Xatom.h> #include <X11/keysym.h> #include <X11/cursorfont.h> #include <X11/Xlocale.h> /********** data ************/ #define CHECK_BUTTON_ON_WIDTH 16 #define CHECK_BUTTON_ON_HEIGHT 16 static char *CHECK_BUTTON_ON[] = { " %", " .............%#", " ........... .%#", " .......... #.%#", " ......... #%.%#", " ........ #%..%#", " ... #.. #%...%#", " ... #% #%....%#", " ... % #%.....%#", " ... #%......%#", " ... #%.......%#", " ...#%........%#", " .............%#", " .............%#", " %%%%%%%%%%%%%%#", "%###############" }; #define CHECK_BUTTON_OFF_WIDTH 16 #define CHECK_BUTTON_OFF_HEIGHT 16 static char *CHECK_BUTTON_OFF[] = { " %", " .............%#", " .............%#", " .............%#", " .............%#", " .............%#", " .............%#", " .............%#", " .............%#", " .............%#", " .............%#", " .............%#", " .............%#", " .............%#", " %%%%%%%%%%%%%%#", "%###############" }; #define RADIO_BUTTON_ON_WIDTH 15 #define RADIO_BUTTON_ON_HEIGHT 15 static char *RADIO_BUTTON_ON[] = { ".....%%%%%.....", "...%%#####%%...", "..%##.....%.%..", ".%#%.. .....", ".%#. ...", "%#.. .. ", "%#. . ", "%#. . ", "%#. . ", "%#. . ", ".%%. . .", ".%.. . .", "..%... .. ..", ".... ..... ...", "..... .....", }; #define RADIO_BUTTON_OFF_WIDTH 15 #define RADIO_BUTTON_OFF_HEIGHT 15 static char *RADIO_BUTTON_OFF[] = { ".....%%%%%.....", "...%%#####%%...", "..%##.......%..", ".%#%...........", ".%#............", "%#............ ", "%#............ ", "%#............ ", "%#............ ", "%#............ ", ".%%.......... .", ".%........... .", "..%......... ..", ".... ..... ...", "..... .....", }; #define TRISTATE_BUTTON_ON_WIDTH 15 #define TRISTATE_BUTTON_ON_HEIGHT 15 static char *TRISTATE_BUTTON_ON[] = { "%%%%%%%%%%%%%%.", "%%%%%%%%%%%%%. ", "%% . ", "%% ## ## . ", "%% ### ### . ", "%% ### ### . ", "%% ##### . ", "%% ### . ", "%% ##### . ", "%% ### ### . ", "%% ### ### . ", "%% ## ## . ", "%% . ", "%............. ", ". ", }; #define TRISTATE_BUTTON_OFF_WIDTH 15 #define TRISTATE_BUTTON_OFF_HEIGHT 15 static char *TRISTATE_BUTTON_OFF[] = { "%%%%%%%%%%%%%%.", "%%%%%%%%%%%%%. ", "%% . ", "%% . ", "%% . ", "%% . ", "%% . ", "%% . ", "%% . ", "%% . ", "%% . ", "%% . ", "%% . ", "%............. ", ". ", }; #define TRISTATE_BUTTON_TRI_WIDTH 15 #define TRISTATE_BUTTON_TRI_HEIGHT 15 static char *TRISTATE_BUTTON_TRI[] = { "%%%%%%%%%%%%%%.", "%%%%%%%%%%%%%. ", "%% . ", "%% # # # # # . ", "%% # # # # . ", "%% # # # # # . ", "%% # # # # . ", "%% # # # # # . ", "%% # # # # . ", "%% # # # # # . ", "%% # # # # . ", "%% # # # # # . ", "%% . ", "%............. ", ". ", }; static char *BUTTON_ARROW[] = { "..................", "....##....#### ...", "...#.%....#... ...", "..#..%#####... ...", ".#............ ...", "#............. ...", ".#............ ...", "..#.. ...", "...#. ............", "....# ............" }; #define BUTTON_ARROW_WIDTH 18 #define BUTTON_ARROW_HEIGHT 10 static char *BUTTON_ARROW2[] = { " ", " ## ####. ", " # % # . ", " # %##### . ", " # . ", "# . ", " # . ", " # .......... ", " # . ", " #. " }; #define BUTTON_ARROW2_WIDTH 18 #define BUTTON_ARROW2_HEIGHT 10 static char *SCROLLER_DIMPLE[] = { ".%###.", "%#%%%%", "#%%...", "#%.. ", "#%. ", ".%. ." }; #define SCROLLER_DIMPLE_WIDTH 6 #define SCROLLER_DIMPLE_HEIGHT 6 static char *SCROLLER_ARROW_UP[] = { "....%....", "....#....", "...%#%...", "...###...", "..%###%..", "..#####..", ".%#####%.", ".#######.", "%#######%" }; static char *HI_SCROLLER_ARROW_UP[] = { " % ", " % ", " %%% ", " %%% ", " %%%%% ", " %%%%% ", " %%%%%%% ", " %%%%%%% ", "%%%%%%%%%" }; #define SCROLLER_ARROW_UP_WIDTH 9 #define SCROLLER_ARROW_UP_HEIGHT 9 static char *SCROLLER_ARROW_DOWN[] = { "%#######%", ".#######.", ".%#####%.", "..#####..", "..%###%..", "...###...", "...%#%...", "....#....", "....%...." }; static char *HI_SCROLLER_ARROW_DOWN[] = { "%%%%%%%%%", " %%%%%%% ", " %%%%%%% ", " %%%%% ", " %%%%% ", " %%% ", " %%% ", " % ", " % " }; #define SCROLLER_ARROW_DOWN_WIDTH 9 #define SCROLLER_ARROW_DOWN_HEIGHT 9 static char *SCROLLER_ARROW_LEFT[] = { "........%", "......%##", "....%####", "..%######", "%########", "..%######", "....%####", "......%##", "........%" }; static char *HI_SCROLLER_ARROW_LEFT[] = { " %", " %%%", " %%%%%", " %%%%%%%", "%%%%%%%%%", " %%%%%%%", " %%%%%", " %%%", " %" }; #define SCROLLER_ARROW_LEFT_WIDTH 9 #define SCROLLER_ARROW_LEFT_HEIGHT 9 static char *SCROLLER_ARROW_RIGHT[] = { "%........", "##%......", "####%....", "######%..", "########%", "######%..", "####%....", "##%......", "%........" }; static char *HI_SCROLLER_ARROW_RIGHT[] = { "% ", "%%% ", "%%%%% ", "%%%%%%% ", "%%%%%%%%%", "%%%%%%% ", "%%%%% ", "%%% ", "% " }; #define SCROLLER_ARROW_RIGHT_WIDTH 9 #define SCROLLER_ARROW_RIGHT_HEIGHT 9 static char *POPUP_INDICATOR[] = { " #==", " ......%#==", " ......%#%%", " ......%#%%", " %%%%%%%#%%", "#########%%", "==%%%%%%%%%", "==%%%%%%%%%" }; #define POPUP_INDICATOR_WIDTH 11 #define POPUP_INDICATOR_HEIGHT 8 static char *PULLDOWN_INDICATOR[] = { "=#######=", "=%===== =", "==%=== ==", "==%=== ==", "===%= ===", "===%= ===", "====%====" }; #define PULLDOWN_INDICATOR_WIDTH 9 #define PULLDOWN_INDICATOR_HEIGHT 7 #define CHECK_MARK_WIDTH 8 #define CHECK_MARK_HEIGHT 10 static char *CHECK_MARK[] = { "======== ", "======= #", "====== #%", "===== #%=", " #== #%==", " #% #%===", " % #%====", " #%=====", " #%======", "#%=======" }; #define STIPPLE_WIDTH 8 #define STIPPLE_HEIGHT 8 static char STIPPLE_BITS[] = { 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55 }; static int userWidgetCount = 0; /***** end data ******/ static void renderPixmap(W_Screen * screen, Pixmap d, Pixmap mask, char **data, int width, int height) { int x, y; GC whiteGC = WMColorGC(screen->white); GC blackGC = WMColorGC(screen->black); GC lightGC = WMColorGC(screen->gray); GC darkGC = WMColorGC(screen->darkGray); if (mask) XSetForeground(screen->display, screen->monoGC, 0); for (y = 0; y < height; y++) { for (x = 0; x < width; x++) { switch (data[y][x]) { case ' ': case 'w': XDrawPoint(screen->display, d, whiteGC, x, y); break; case '=': if (mask) XDrawPoint(screen->display, mask, screen->monoGC, x, y); /* FALLTHRU */ case '.': case 'l': XDrawPoint(screen->display, d, lightGC, x, y); break; case '%': case 'd': XDrawPoint(screen->display, d, darkGC, x, y); break; case '#': case 'b': default: XDrawPoint(screen->display, d, blackGC, x, y); break; } } } } static WMPixmap *makePixmap(W_Screen * sPtr, char **data, int width, int height, int masked) { Pixmap pixmap, mask = None; pixmap = XCreatePixmap(sPtr->display, W_DRAWABLE(sPtr), width, height, sPtr->depth); if (masked) { mask = XCreatePixmap(sPtr->display, W_DRAWABLE(sPtr), width, height, 1); XSetForeground(sPtr->display, sPtr->monoGC, 1); XFillRectangle(sPtr->display, mask, sPtr->monoGC, 0, 0, width, height); } renderPixmap(sPtr, pixmap, mask, data, width, height); return WMCreatePixmapFromXPixmaps(sPtr, pixmap, mask, width, height, sPtr->depth); } #define T_WINGS_IMAGES_FILE RESOURCE_PATH"/Images.tiff" #define X_WINGS_IMAGES_FILE RESOURCE_PATH"/Images.xpm" static Bool loadPixmaps(WMScreen * scr) { RImage *image, *tmp; RColor gray; RColor white; gray.red = 0xae; gray.green = 0xaa; gray.blue = 0xae; white.red = 0xff; white.green = 0xff; white.blue = 0xff; 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; } /* home icon */ /* make it have a gray background */ tmp = RGetSubImage(image, 0, 0, 24, 24); RCombineImageWithColor(tmp, &gray); scr->homeIcon = WMCreatePixmapFromRImage(scr, tmp, 128); RReleaseImage(tmp); /* make it have a white background */ tmp = RGetSubImage(image, 0, 0, 24, 24); RCombineImageWithColor(tmp, &white); scr->altHomeIcon = WMCreatePixmapFromRImage(scr, tmp, 128); RReleaseImage(tmp); /* trash can */ tmp = RGetSubImage(image, 104, 0, 24, 24); RCombineImageWithColor(tmp, &white); scr->trashcanIcon = WMCreatePixmapFromRImage(scr, tmp, 128); RReleaseImage(tmp); tmp = RGetSubImage(image, 104, 0, 24, 24); RCombineImageWithColor(tmp, &white); scr->altTrashcanIcon = WMCreatePixmapFromRImage(scr, tmp, 128); RReleaseImage(tmp); /* create dir */ tmp = RGetSubImage(image, 104, 24, 24, 24); RCombineImageWithColor(tmp, &white); scr->createDirIcon = WMCreatePixmapFromRImage(scr, tmp, 128); RReleaseImage(tmp); tmp = RGetSubImage(image, 104, 24, 24, 24); RCombineImageWithColor(tmp, &white); scr->altCreateDirIcon = WMCreatePixmapFromRImage(scr, tmp, 128); RReleaseImage(tmp); /* diskettes */ tmp = RGetSubImage(image, 24, 80, 24, 24); RCombineImageWithColor(tmp, &white); scr->disketteIcon = WMCreatePixmapFromRImage(scr, tmp, 128); RReleaseImage(tmp); tmp = RGetSubImage(image, 24, 80, 24, 24); RCombineImageWithColor(tmp, &white); scr->altDisketteIcon = WMCreatePixmapFromRImage(scr, tmp, 128); RReleaseImage(tmp); /* unmount */ tmp = RGetSubImage(image, 0, 80, 24, 24); RCombineImageWithColor(tmp, &white); scr->unmountIcon = WMCreatePixmapFromRImage(scr, tmp, 128); RReleaseImage(tmp); tmp = RGetSubImage(image, 0, 80, 24, 24); RCombineImageWithColor(tmp, &white); scr->altUnmountIcon = WMCreatePixmapFromRImage(scr, tmp, 128); RReleaseImage(tmp); /* Magnifying Glass Icon for ColorPanel */ tmp = RGetSubImage(image, 24, 0, 40, 32); RCombineImageWithColor(tmp, &gray); scr->magnifyIcon = WMCreatePixmapFromRImage(scr, tmp, 128); RReleaseImage(tmp); /* ColorWheel Icon for ColorPanel */ tmp = RGetSubImage(image, 0, 25, 24, 24); scr->wheelIcon = WMCreatePixmapFromRImage(scr, tmp, 128); RReleaseImage(tmp); /* GrayScale Icon for ColorPanel */ tmp = RGetSubImage(image, 65, 0, 40, 24); scr->grayIcon = WMCreatePixmapFromRImage(scr, tmp, 128); RReleaseImage(tmp); /* RGB Icon for ColorPanel */ tmp = RGetSubImage(image, 25, 33, 40, 24); scr->rgbIcon = WMCreatePixmapFromRImage(scr, tmp, 128); RReleaseImage(tmp); /* CMYK Icon for ColorPanel */ tmp = RGetSubImage(image, 65, 25, 40, 24); scr->cmykIcon = WMCreatePixmapFromRImage(scr, tmp, 128); RReleaseImage(tmp); /* HSB Icon for ColorPanel */ tmp = RGetSubImage(image, 0, 57, 40, 24); scr->hsbIcon = WMCreatePixmapFromRImage(scr, tmp, 128); RReleaseImage(tmp); /* CustomColorPalette Icon for ColorPanel */ tmp = RGetSubImage(image, 81, 57, 40, 24); scr->customPaletteIcon = WMCreatePixmapFromRImage(scr, tmp, 128); RReleaseImage(tmp); /* ColorList Icon for ColorPanel */ tmp = RGetSubImage(image, 41, 57, 40, 24); scr->colorListIcon = WMCreatePixmapFromRImage(scr, tmp, 128); RReleaseImage(tmp); RReleaseImage(image); return True; } WMScreen *WMOpenScreen(const char *display) { Display *dpy = XOpenDisplay(display); if (!dpy) { wwarning(_("WINGs: could not open display %s"), XDisplayName(display)); return NULL; } return WMCreateSimpleApplicationScreen(dpy); } WMScreen *WMCreateSimpleApplicationScreen(Display * display) { WMScreen *scr; scr = WMCreateScreen(display, DefaultScreen(display)); scr->aflags.hasAppIcon = 0; scr->aflags.simpleApplication = 1; return scr; } WMScreen *WMCreateScreen(Display * display, int screen) { return WMCreateScreenWithRContext(display, screen, RCreateContext(display, screen, NULL)); } WMScreen *WMCreateScreenWithRContext(Display * display, int screen, RContext * context) { W_Screen *scrPtr; XGCValues gcv; Pixmap stipple; static int initialized = 0; static char *atomNames[] = { "_GNUSTEP_WM_ATTR", "WM_DELETE_WINDOW", "WM_PROTOCOLS", "CLIPBOARD", "XdndAware", "XdndSelection", "XdndEnter", "XdndLeave", "XdndPosition", "XdndDrop", "XdndFinished", "XdndTypeList", "XdndActionList", "XdndActionDescription", "XdndStatus", "XdndActionCopy", "XdndActionMove", "XdndActionLink", "XdndActionAsk", "XdndActionPrivate", "_WINGS_DND_MOUSE_OFFSET", "WM_STATE", "UTF8_STRING", "_NET_WM_NAME", "_NET_WM_ICON_NAME", "_NET_WM_ICON", }; Atom atoms[wlengthof(atomNames)]; int i; if (!initialized) { initialized = 1; W_ReadConfigurations(); assert(W_ApplicationInitialized()); } scrPtr = malloc(sizeof(W_Screen)); if (!scrPtr) return NULL; memset(scrPtr, 0, sizeof(W_Screen)); scrPtr->aflags.hasAppIcon = 1; scrPtr->display = display; scrPtr->screen = screen; scrPtr->rcontext = context; scrPtr->depth = context->depth; scrPtr->visual = context->visual; scrPtr->lastEventTime = 0; scrPtr->colormap = context->cmap; scrPtr->rootWin = RootWindow(display, screen); scrPtr->fontCache = WMCreateHashTable(WMStringPointerHashCallbacks); scrPtr->xftdraw = XftDrawCreate(scrPtr->display, W_DRAWABLE(scrPtr), scrPtr->visual, scrPtr->colormap); /* Create missing CUT_BUFFERs */ { Atom *rootWinProps; int exists[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; int count; rootWinProps = XListProperties(display, scrPtr->rootWin, &count); for (i = 0; i < count; i++) { switch (rootWinProps[i]) { case XA_CUT_BUFFER0: exists[0] = 1; break; case XA_CUT_BUFFER1: exists[1] = 1; break; case XA_CUT_BUFFER2: exists[2] = 1; break; case XA_CUT_BUFFER3: exists[3] = 1; break; case XA_CUT_BUFFER4: exists[4] = 1; break; case XA_CUT_BUFFER5: exists[5] = 1; break; case XA_CUT_BUFFER6: exists[6] = 1; break; case XA_CUT_BUFFER7: exists[7] = 1; break; default: break; } } if (rootWinProps) { XFree(rootWinProps); } for (i = 0; i < 8; i++) { if (!exists[i]) { XStoreBuffer(display, "", 0, i); } } } scrPtr->ignoredModifierMask = 0; { int i; XModifierKeymap *modmap; KeyCode nlock, slock; static int mask_table[8] = { ShiftMask, LockMask, ControlMask, Mod1Mask, Mod2Mask, Mod3Mask, Mod4Mask, Mod5Mask }; unsigned int numLockMask = 0, scrollLockMask = 0; nlock = XKeysymToKeycode(display, XK_Num_Lock); slock = XKeysymToKeycode(display, XK_Scroll_Lock); /* * Find out the masks for the NumLock and ScrollLock modifiers, * so that we can bind the grabs for when they are enabled too. */ modmap = XGetModifierMapping(display); if (modmap != NULL && modmap->max_keypermod > 0) { for (i = 0; i < 8 * modmap->max_keypermod; i++) { if (modmap->modifiermap[i] == nlock && nlock != 0) numLockMask = mask_table[i / modmap->max_keypermod]; else if (modmap->modifiermap[i] == slock && slock != 0) scrollLockMask = mask_table[i / modmap->max_keypermod]; } } if (modmap) XFreeModifiermap(modmap); scrPtr->ignoredModifierMask = numLockMask | scrollLockMask | LockMask; } /* initially allocate some colors */ WMWhiteColor(scrPtr); WMBlackColor(scrPtr); WMGrayColor(scrPtr); WMDarkGrayColor(scrPtr); gcv.graphics_exposures = False; gcv.function = GXxor; gcv.foreground = W_PIXEL(scrPtr->white); if (gcv.foreground == 0) gcv.foreground = 1; scrPtr->xorGC = XCreateGC(display, W_DRAWABLE(scrPtr), GCFunction | GCGraphicsExposures | GCForeground, &gcv); gcv.function = GXxor; gcv.foreground = W_PIXEL(scrPtr->gray); gcv.subwindow_mode = IncludeInferiors; scrPtr->ixorGC = XCreateGC(display, W_DRAWABLE(scrPtr), GCFunction | GCGraphicsExposures | GCForeground | GCSubwindowMode, &gcv); gcv.function = GXcopy; scrPtr->copyGC = XCreateGC(display, W_DRAWABLE(scrPtr), GCFunction | GCGraphicsExposures, &gcv); scrPtr->clipGC = XCreateGC(display, W_DRAWABLE(scrPtr), GCFunction | GCGraphicsExposures, &gcv); stipple = XCreateBitmapFromData(display, W_DRAWABLE(scrPtr), STIPPLE_BITS, STIPPLE_WIDTH, STIPPLE_HEIGHT); gcv.foreground = W_PIXEL(scrPtr->darkGray); gcv.background = W_PIXEL(scrPtr->gray); gcv.fill_style = FillStippled; gcv.stipple = stipple; scrPtr->stippleGC = XCreateGC(display, W_DRAWABLE(scrPtr), GCForeground | GCBackground | GCStipple | GCFillStyle | GCGraphicsExposures, &gcv); scrPtr->drawStringGC = XCreateGC(display, W_DRAWABLE(scrPtr), GCGraphicsExposures, &gcv); scrPtr->drawImStringGC = XCreateGC(display, W_DRAWABLE(scrPtr), GCGraphicsExposures, &gcv); /* we need a 1bpp drawable for the monoGC, so borrow this one */ scrPtr->monoGC = XCreateGC(display, stipple, 0, NULL); scrPtr->stipple = stipple; scrPtr->antialiasedText = WINGsConfiguration.antialiasedText; scrPtr->normalFont = WMSystemFontOfSize(scrPtr, 0); scrPtr->boldFont = WMBoldSystemFontOfSize(scrPtr, 0); if (!scrPtr->boldFont) scrPtr->boldFont = scrPtr->normalFont; if (!scrPtr->normalFont) { wwarning(_("could not load any fonts. Make sure your font installation" " and locale settings are correct.")); return NULL; } /* create input method stuff */ W_InitIM(scrPtr); scrPtr->checkButtonImageOn = makePixmap(scrPtr, CHECK_BUTTON_ON, CHECK_BUTTON_ON_WIDTH, CHECK_BUTTON_ON_HEIGHT, False); scrPtr->checkButtonImageOff = makePixmap(scrPtr, CHECK_BUTTON_OFF, CHECK_BUTTON_OFF_WIDTH, CHECK_BUTTON_OFF_HEIGHT, False); scrPtr->radioButtonImageOn = makePixmap(scrPtr, RADIO_BUTTON_ON, RADIO_BUTTON_ON_WIDTH, RADIO_BUTTON_ON_HEIGHT, False); scrPtr->radioButtonImageOff = makePixmap(scrPtr, RADIO_BUTTON_OFF, RADIO_BUTTON_OFF_WIDTH, RADIO_BUTTON_OFF_HEIGHT, False); scrPtr->tristateButtonImageOn = makePixmap(scrPtr, TRISTATE_BUTTON_ON, TRISTATE_BUTTON_ON_WIDTH, TRISTATE_BUTTON_ON_HEIGHT, False); scrPtr->tristateButtonImageOff = makePixmap(scrPtr, TRISTATE_BUTTON_OFF, TRISTATE_BUTTON_OFF_WIDTH, TRISTATE_BUTTON_OFF_HEIGHT, False); scrPtr->tristateButtonImageTri = makePixmap(scrPtr, TRISTATE_BUTTON_TRI, TRISTATE_BUTTON_TRI_WIDTH, TRISTATE_BUTTON_TRI_HEIGHT, False); scrPtr->buttonArrow = makePixmap(scrPtr, BUTTON_ARROW, BUTTON_ARROW_WIDTH, BUTTON_ARROW_HEIGHT, False); scrPtr->pushedButtonArrow = makePixmap(scrPtr, BUTTON_ARROW2, BUTTON_ARROW2_WIDTH, BUTTON_ARROW2_HEIGHT, False); scrPtr->scrollerDimple = makePixmap(scrPtr, SCROLLER_DIMPLE, SCROLLER_DIMPLE_WIDTH, SCROLLER_DIMPLE_HEIGHT, False); scrPtr->upArrow = makePixmap(scrPtr, SCROLLER_ARROW_UP, SCROLLER_ARROW_UP_WIDTH, SCROLLER_ARROW_UP_HEIGHT, True); scrPtr->downArrow = makePixmap(scrPtr, SCROLLER_ARROW_DOWN, SCROLLER_ARROW_DOWN_WIDTH, SCROLLER_ARROW_DOWN_HEIGHT, True); scrPtr->leftArrow = makePixmap(scrPtr, SCROLLER_ARROW_LEFT, SCROLLER_ARROW_LEFT_WIDTH, SCROLLER_ARROW_LEFT_HEIGHT, True); scrPtr->rightArrow = makePixmap(scrPtr, SCROLLER_ARROW_RIGHT, SCROLLER_ARROW_RIGHT_WIDTH, SCROLLER_ARROW_RIGHT_HEIGHT, True); scrPtr->hiUpArrow = makePixmap(scrPtr, HI_SCROLLER_ARROW_UP, SCROLLER_ARROW_UP_WIDTH, SCROLLER_ARROW_UP_HEIGHT, True); scrPtr->hiDownArrow = makePixmap(scrPtr, HI_SCROLLER_ARROW_DOWN, SCROLLER_ARROW_DOWN_WIDTH, SCROLLER_ARROW_DOWN_HEIGHT, True); scrPtr->hiLeftArrow = makePixmap(scrPtr, HI_SCROLLER_ARROW_LEFT, SCROLLER_ARROW_LEFT_WIDTH, SCROLLER_ARROW_LEFT_HEIGHT, True); scrPtr->hiRightArrow = makePixmap(scrPtr, HI_SCROLLER_ARROW_RIGHT, SCROLLER_ARROW_RIGHT_WIDTH, SCROLLER_ARROW_RIGHT_HEIGHT, True); scrPtr->popUpIndicator = makePixmap(scrPtr, POPUP_INDICATOR, POPUP_INDICATOR_WIDTH, POPUP_INDICATOR_HEIGHT, True); scrPtr->pullDownIndicator = makePixmap(scrPtr, PULLDOWN_INDICATOR, PULLDOWN_INDICATOR_WIDTH, PULLDOWN_INDICATOR_HEIGHT, True); scrPtr->checkMark = makePixmap(scrPtr, CHECK_MARK, CHECK_MARK_WIDTH, CHECK_MARK_HEIGHT, True); loadPixmaps(scrPtr); scrPtr->defaultCursor = XCreateFontCursor(display, XC_left_ptr); scrPtr->textCursor = XCreateFontCursor(display, XC_xterm); { XColor bla; Pixmap blank; blank = XCreatePixmap(display, scrPtr->stipple, 1, 1, 1); XSetForeground(display, scrPtr->monoGC, 0); XFillRectangle(display, blank, scrPtr->monoGC, 0, 0, 1, 1); scrPtr->invisibleCursor = XCreatePixmapCursor(display, blank, blank, &bla, &bla, 0, 0); XFreePixmap(display, blank); } #ifdef HAVE_XINTERNATOMS XInternAtoms(display, atomNames, wlengthof(atomNames), False, atoms); #else for (i = 0; i < wlengthof(atomNames); i++) { atoms[i] = XInternAtom(display, atomNames[i], False); } #endif i = 0; scrPtr->attribsAtom = atoms[i++]; scrPtr->deleteWindowAtom = atoms[i++]; scrPtr->protocolsAtom = atoms[i++]; scrPtr->clipboardAtom = atoms[i++]; scrPtr->xdndAwareAtom = atoms[i++]; scrPtr->xdndSelectionAtom = atoms[i++]; scrPtr->xdndEnterAtom = atoms[i++]; scrPtr->xdndLeaveAtom = atoms[i++]; scrPtr->xdndPositionAtom = atoms[i++]; scrPtr->xdndDropAtom = atoms[i++]; scrPtr->xdndFinishedAtom = atoms[i++]; scrPtr->xdndTypeListAtom = atoms[i++]; scrPtr->xdndActionListAtom = atoms[i++]; scrPtr->xdndActionDescriptionAtom = atoms[i++]; scrPtr->xdndStatusAtom = atoms[i++]; scrPtr->xdndActionCopy = atoms[i++]; scrPtr->xdndActionMove = atoms[i++]; scrPtr->xdndActionLink = atoms[i++]; scrPtr->xdndActionAsk = atoms[i++]; scrPtr->xdndActionPrivate = atoms[i++]; scrPtr->wmIconDragOffsetAtom = atoms[i++]; scrPtr->wmStateAtom = atoms[i++]; scrPtr->utf8String = atoms[i++]; scrPtr->netwmName = atoms[i++]; scrPtr->netwmIconName = atoms[i++]; scrPtr->netwmIcon = atoms[i++]; scrPtr->rootView = W_CreateRootView(scrPtr); scrPtr->balloon = W_CreateBalloon(scrPtr); W_InitApplication(scrPtr); return scrPtr; } void WMSetWidgetDefaultFont(WMScreen * scr, WMFont * font) { WMReleaseFont(scr->normalFont); scr->normalFont = WMRetainFont(font); } void WMSetWidgetDefaultBoldFont(WMScreen * scr, WMFont * font) { WMReleaseFont(scr->boldFont); scr->boldFont = WMRetainFont(font); } void WMHangData(WMWidget * widget, void *data) { W_VIEW(widget)->hangedData = data; } void *WMGetHangedData(WMWidget * widget) { return W_VIEW(widget)->hangedData; } void WMDestroyWidget(WMWidget * widget) { W_UnmapView(W_VIEW(widget)); W_DestroyView(W_VIEW(widget)); } void WMSetFocusToWidget(WMWidget * widget) { W_SetFocusOfTopLevel(W_TopLevelOfView(W_VIEW(widget)), W_VIEW(widget)); } /* * WMRealizeWidget- * Realizes the widget and all it's children. * */ void WMRealizeWidget(WMWidget * w) { W_RealizeView(W_VIEW(w)); } void WMMapWidget(WMWidget * w) { W_MapView(W_VIEW(w)); } void WMReparentWidget(WMWidget * w, WMWidget * newParent, int x, int y) { W_ReparentView(W_VIEW(w), W_VIEW(newParent), x, y); } static void makeChildrenAutomap(W_View * view, int flag) { view = view->childrenList; while (view) { view->flags.mapWhenRealized = flag; makeChildrenAutomap(view, flag); view = view->nextSister; } } void WMMapSubwidgets(WMWidget * w) { /* make sure that subwidgets created after the parent was realized * are mapped too */ if (!W_VIEW(w)->flags.realized) { makeChildrenAutomap(W_VIEW(w), True); } else { W_MapSubviews(W_VIEW(w)); } } void WMUnmapSubwidgets(WMWidget * w) { if (!W_VIEW(w)->flags.realized) { makeChildrenAutomap(W_VIEW(w), False); } else { W_UnmapSubviews(W_VIEW(w)); } } void WMUnmapWidget(WMWidget * w) { W_UnmapView(W_VIEW(w)); } Bool WMWidgetIsMapped(WMWidget * w) { return W_VIEW(w)->flags.mapped; } void WMSetWidgetBackgroundColor(WMWidget * w, WMColor * color) { W_SetViewBackgroundColor(W_VIEW(w), color); if (W_VIEW(w)->flags.mapped) WMRedisplayWidget(w); } WMColor *WMGetWidgetBackgroundColor(WMWidget * w) { return W_VIEW(w)->backColor; } void WMSetWidgetBackgroundPixmap(WMWidget *w, WMPixmap *pix) { if (!pix) return; W_SetViewBackgroundPixmap(W_VIEW(w), pix); if (W_VIEW(w)->flags.mapped) WMRedisplayWidget(w); } WMPixmap *WMGetWidgetBackgroundPixmap(WMWidget *w) { return W_VIEW(w)->backImage; } void WMRaiseWidget(WMWidget * w) { W_RaiseView(W_VIEW(w)); } void WMLowerWidget(WMWidget * w) { W_LowerView(W_VIEW(w)); } void WMMoveWidget(WMWidget * w, int x, int y) { W_MoveView(W_VIEW(w), x, y); } void WMResizeWidget(WMWidget * w, unsigned int width, unsigned int height) { W_ResizeView(W_VIEW(w), width, height); } W_Class W_RegisterUserWidget(void) { userWidgetCount++; return userWidgetCount + WC_UserWidget - 1; } RContext *WMScreenRContext(WMScreen * scr) { return scr->rcontext; } unsigned int WMWidgetWidth(WMWidget * w) { return W_VIEW(w)->size.width; } unsigned int WMWidgetHeight(WMWidget * w) { return W_VIEW(w)->size.height; } Window WMWidgetXID(WMWidget * w) { return W_VIEW(w)->window; } WMScreen *WMWidgetScreen(WMWidget * w) { return W_VIEW(w)->screen; } void WMScreenMainLoop(WMScreen * scr) { XEvent event; while (1) { WMNextEvent(scr->display, &event); WMHandleEvent(&event); } } void WMBreakModalLoop(WMScreen * scr) { scr->modalLoop = 0; } void WMRunModalLoop(WMScreen * scr, WMView * view) { /* why is scr passed if is determined from the view? */ /*WMScreen *scr = view->screen; */ int oldModalLoop = scr->modalLoop; WMView *oldModalView = scr->modalView; scr->modalView = view; scr->modalLoop = 1; while (scr->modalLoop) { XEvent event; WMNextEvent(scr->display, &event); WMHandleEvent(&event); } scr->modalView = oldModalView; scr->modalLoop = oldModalLoop; } Display *WMScreenDisplay(WMScreen * scr) { return scr->display; } int WMScreenDepth(WMScreen * scr) { return scr->depth; } unsigned int WMScreenWidth(WMScreen * scr) { return scr->rootView->size.width; } unsigned int WMScreenHeight(WMScreen * scr) { return scr->rootView->size.height; } void WMRedisplayWidget(WMWidget * w) { W_RedisplayView(W_VIEW(w)); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/ChangeLog������������������������������������������������������������������0000644�0001750�0001750�00000071435�13431646201�013501� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������Changes since wmaker 0.92.0: ............................ - updated the XDND code in to work with GDK based applications. WINGs based applications should now work with both KDE and GNOME applications (Sylvain Reynal <sreynal@nerim.net>) - better check for the XDND protocol version when interoperating with other applications. As it seems xdnd version 3 (which WINGs supports) and newer are not backward compatible with xdnd version 1 and 2. This is why WINGs applications cannot interoperate with GNUstep applications (which uses xdnd version 2). Xdnd version 4 and 5 are backwards compatible with version 3 though. (Sylvain Reynal <sreynal@nerim.net>) - removed dependency on rgb.txt from X11 and issues with locating it on the filesystem for different systems/distributions. - Removed dependency on rgb.txt (from X11) and issues with locating it on the filesystem for different systems/distributions. Changes since wmaker 0.80.1: ............................ - Added WMSetConnectionShutdownOnClose() - Added an extra member to the ConnectionDelegate: canResumeSending see NEWS for details. - WMDrawString() and WMDrawImageString() now take WMColor instead of GC as arguments. WMDrawImageString() receives 2 colors (text & background). This is to allow easy extension for Xft/Xrender and hide X low level details Read NEWS for details since this will break backward compatibility. - Added alpha channel to WMColor. 2 new functions also: WMCreateRGBAColor() and WMSetColorAlpha() - Miscelaneous code cleanups in wtext.c - Added Xft2 support in WINGs (for drawing antialiased fonts with transparency). - New options in WMGLOBAL: AntialiasedText. Check NEWS for details. - Fixed some improper calls to snprintf in wfont.c - Added double buffering when drawing a WMFrame title with an antialiased font to avoid flickering. - Added double buffering when drawing WMList items to avoid flickering. Double buffering for list also works for user drawn lists. Read NEWS for details and incompatibilities introduced by this change. - Added WMGetColorAlpha(WMColor *color) - Better outline when drawing balloons. - Added WMCreateFontWithAttributes() - You can now pass "SystemFont", "BoldSystemFont", "SystemFont-##" or "BoldSystemFont-##", with ## being the font size to any font creating function to create a font with the (bold) system font font specification. - Added WMCopyFontWithChanges(). This is a more generic and powerful function meant to replaces the obsoleted WMEmphasizeFont(), WMNormalizeFont(), WMStrenghtenFont() and the other similar functions. To get the same effect you pass some predefined structs to it: WFANormal, WFABold, WFAEmphasized, etc which are declared in WINGs.h). - Fixed a bug with empty frame titles (Alexey Voinov <voins@voins.program.ru>) - Added WMGetWidgetBackgroundColor() - Code cleanup in wtext.c - Fixed a memory leak in wfontpanel.c - Fixed WMGetTextDefaultColor() not to retain the returned color. It returns only a reference to the internal color, which you shouldn't release - Added wstrndup() - Added WMGetFontName() - Added fontpanel callback - Added WMSetTableViewHasHorizontalScroller() - Fixed bug that could cause SIGSEGV by accessing beyond the end of text in a WINGs textfield widget. - Fixed small memory leak in the font panel code. - Fixed call to qsort in WMSortArray. - Fixed a memleak in the file panel. - Double/triple-click selection in text widgets (Vitaly Ovtchinnikov <ov@rbcmail.ru>) - Fixed bug in tableview (clicked row callback got incorrect row) (Carlos Torres <vlaadbrain@operamail.com>) - Fixed bug in resizing a scrollview - Fixed bug with wrong text wrapping (Alexey Voinov <voins@voins.program.ru>) - Added wmkrect() - Added xdnd v3 support (Sylvain Reynal <sreynal@nerim.net>) - Fixed and enhanced text wrapping. Changes since wmaker 0.80.0: ............................ - fixed a bug in wfindfile() (rewrote wfindfile() with better logic). - separated the font caches for normal fonts and fontsets in WINGs (they can have the same names and collide in the cache giving unwanted results) - fixed labels not to display '\n' as a character if multiple '\n' are passed but just skip to the next line. - better warning when importing non-digit characters in PropList Data. - rewrote WMBox to use a WMArray for subviews. with this change fixed a bug about arranging subviews after removing one and a memleak occuring in the same case. - Fixed WMGetViewScreenPosition() to consider the window decorations. - Added ability to enable/disable individual WMTableViewItems. - Fixed textfields regarding interpretation of special keys with modifiers. - Fixed some functions that accept a boolean flag as a paramater, to set only 1 or 0 for the flag value, not the flag passed by the user. - Added 2 functions to retrieve the default system fonts: WMDefaultSystemFont(WMScreen *scr) and WMDefaultBoldSystemFont(WMScreen *scr) - Added WMSetButtonImageDimsWhenDisabled() and WMGetButtonEnabled() - Cleaned-up the header files of functions/vars declared but not implemented - Added WMGetTextFieldDelegate() Changes since wmaker 0.70.0: ............................ - added an internal strcasecmp() (only on systems where is not present) - removed some redundant includes of ../src/config.h when wconfig.h is included too - removed a wsyserror() message when reading a property list from file (the programmer should decide if to give that message or just ignore). - added a 'Bool recursive' flag to WMMergePLDictionaries() - added WMSubtractPLDictionaries() Changes since wmaker 0.65.0: ............................ - fixed problem with WINGs based apps exiting with a "X_RotateProperties" related error when text was selected in a textfiled. - moved wstrdup(), wstrconcat() and wstrappend() from memory.c to string.c - added property list handling code making libPropList unnecessary and obsolete. Backward compatibility is provided through the WINGs/proplist-compat.h header file which has #defines from old libPropList function names to new function names with minimal changes. Read this header file and the NEWS file for more details about this subject. - Renamed WMGetUDAllKeys() to WMGetUDKeys() Changes since wmaker 0.64.0: ............................ - made programmatic scroller changes send notifications - replaced WMSetBoxExpandsToParent with WMSetViewExpands... - added WMGetLabelFont() - added WMAddPersistentTimerHandler() - Moved all internal handlers (timer, idle and input) to handlers.c - simplified wevent.c and wutil.c. - fixed handling of input with poll (was broken) - fixed mem leak that occured when input handling was done with poll - simpler and more straightforward event handling for timer, idle, input and X events (also fixed some problems the old handling logic had) - moved timer, idle and input handler definitions and prototypes from WINGs.h to WUtil.h because they're not GUI related. - better and more robust handling of events (timer, idle, input, X) in WMMaskEvent(). Also fixed a bug where input and timer events were not treated for undefined periods of time under some circumstances. - fixed secure textfields not to allow text selection, to avoid compromising sensitive information by pasting it to a terminal. - replaced wmkrange(), wmkpoint() and wmksize() functions with macros. - added WMRemoveFromArrayMatching(array, match, cdata), which will remove the first element in the array that is matched by match(item, cdata)==True. - added WMArrayFirst(), WMArrayLast(), WMArrayNext() and WMArrayPrevious() functions and also WM_ITERATE_ARRAY() and WM_ETARETI_ARRAY() macros, to make interfaces to WMBag and WMArray similar and to make life a little simpler when iterating through all elements of an array. - replaced bags with arrays wherever appropriate. This will improve performance a bit. - replaced some recursive code with iterative code in selection.c - added WMCreateBlendedPixmapFromRImage() - small API change: 1. Renamed WMSetApplicationIconImage(), WMGetApplicationIconImage() and WMSetWindowMiniwindowImage() to respectively WMSetApplicationIconPixmap(), WMGetApplicationIconPixmap() and WMSetWindowMiniwindowPixmap() They operate on a WMPixmap which is practically an X Pixmap with no alpha channel information and the new name is more suggestive and also leaves room for the new functions added for operating on images with alpha info. 2. Added WMSetApplicationIconImage() and WMGetApplicationIconImage() which operate on an RImage and store alpha information too. 3. Added WMCreateApplicationIconBlendedPixmap() which will take the image set by WMSetApplicationIconImage() and will combine it with a color. If color is NULL it will blend using the default panel color (#aeaaae) All these changes will allow WINGs to handle images with alpha blending correctly in panels and wherever else needed. More about in NEWS. - updated panels to use the newly available RImages if present and fallback to old WMPixmaps if not, to properly show alpha blended images. - replaced some still left malloc's with wmalloc's. - fixed a bug in WMReparentWidget() - added WMReparentWidget() to WINGs.h - fixed a bug that made the scroller knob jump backwards when dragged (this bug had no relation with the behavior that #define STRICT_NEXT_BEHAVIOUR attempts to accomplish). - fixed scrolling direction with mouse wheel for horizontal scroller. changes since wmaker 0.63.1: ............................ - added WMRunModalLoop() and WMBreakModalLoop() - added WMSetBoxExpandsToParent() - added WMRemoveBoxSubview() - moved WINGs headers in a WINGs subdirectory when installed. use #include <WINGs/header_file_name> in your application from now on. Also updated get-{wings|wutil}-flags. - Fixed a mem leak in WMList. - Fixed a bug that caused sigsegv for a WMList with more than 32767 items. - Added an example of how to create a server type program with WMConnection. - added WMOpenScreen() changes since wmaker 0.62.1: ............................ - added WRuler widget - added WText widget (rtf multiline text widget) Nwanua Elumeze <nwanua@colorado.edu> - added a new AUTO option for the UseMultiByte option - added WMRaiseWidget()/WMLowerWidget() - added missing EscapeTextMovement to textfield delegate/notification - added WMGetLabelText() - added WMReparentWidget() - added WMCreateTabViewItem() - added W_CreateUnmanagedTopView() - added wtokenjoin(), wtokensplit(), wtokenfree(), wtrimspace() - added WMWidgetIsMapped() - added WMSetApplicationIconWindow() - restructured the directory tree. Added Documentation, Examples and Tests subdirectories - removed WMArrayBag and reorganized WMTreeBag to be WMBag. - added WMArray class. - added WMSetWindowUserPosition() - added WMGetListSelectedItems() - added WMSetListAllowMultipleSelection(), WMListAllowsMultipleSelection(). - added WMSetListAllowEmptySelection(), WMListAllowsEmptySelection(). - WMListSelectionDidChangeNotification passes NULL as the notification client data (previously passed the selected item row). - added WMUnselectListItem(), WMSelectAllListItems(), WMUnselectAllListItems() - better behavior of wheel mices in WMList. Simple mouse wheel events will scroll by 1/3 of the WMList height. Using Shift as a modifier will scroll line by line, while using Control as a modifier will scroll page by page. - better behavior of WMScroller regarding mouse wheel events. 'Shift' modifier will scroll line by line, while 'Control' modifier will scroll page by page. - fixed some buffer overflow allowing bugs. - added WSDecrementWheel and WSIncrementWheel for handling mouse wheel in scrollers and scrolled widgets. This should be treated like the WSxxxPage counterparts, except it should scroll by page_size/3 instead of one full page - added WMSetBrowserAllowMultipleSelection(), WMSetBrowserAllowEmptySelection() WMBrowserAllowsMultipleSelection() and WMBrowserAllowsEmptySelection() - WMBrowser now allows multiple selections. - Added WMGetBrowserPaths() to retrieve the paths for browsers that allow multiple selections. - WMDestroyWidget() now calls WMUnmapWidget() first - added WMScrollerDidScrollNotification to scroller - added WMGetScrollViewVisibleRect() - fixed a mem leak in the browser code. - renamed wstrappend() to wstrconcat(). wstrconcat(str1, str2) concatenates str1 with str2 and returns that in a newly malloc'ed string. Be sure to rename wstrappend with wstrconcat in your code too, else hazardous things can happen! - implemented a new wstrappend() function. wstrappend(dst, src) will append src to dst modifing dst and returning a pointer to it. No new string is generated, except if dst is NULL, in which case its the same as calling wstrdup(src). dst can ONLY be NULL or a dynamically allocated string (obtained from a call to malloc, realloc, wmalloc, wrealloc, ...). dst CANNOT be a static or a constant string! - added wmessage() for printing a variable formatted string to stderr, with the program name prepended to it. Similar to wwarning(), except that it doesn't add "warning:" in the output message. - added WMBox widget - added WMAddTabViewItemWithView() - added W_SetViewCursor() - made Extra widgets library - added table widget in Extras library - added WMGetConnectionUnsentData() (WMGetConnectionQueuedData() too as an alias). - added WMSetConnectionCloseOnExec() to specify if the socket associated with a connection survives an exec* call or not. When a new connection is created using the WMCreate... or WMAcceptConnection() calls, it has the close on exec flag set automatically to 'True' by the library. Unless you want to let the socket of some connection to survive across an exec* call, you need not to call this function. - removed all the wsyserror() and wwarning() calls from host.c and connection.c and replaced where appropriate with assertions. If a function returns some invalid result, you can still get the system error message if you need, by calling wsyserrorwithcode() and passing WCErrorCode, if WCErrorCode > 0. If WCErrorCode==0, that is not a system error, and wsyserrorwithcode() should not be called in this case. - added WMNextHashEnumeratorKey() to retrieve all keys in some hash enumerator one by one. - fixed a bug with mouse wheels scrolling in scrollers even with the widget fully visible. - Fixed a memory leak (the destroy function for a view was never called and as a result the shaded windows didn't go away when closed. The non-shaded windows were unmapped on close but not destroyed either so they only apparently went away, but continued to use memory). - Fixed a bug in the hashtable code which free'd the whole item instead of just the item key in WMResetHashTable() (possible source of SIGSEGVs) changes since wmaker 0.62.0: ............................ - added WMSetWidgetDefaultFont(), WMSetWidgetDefaultBoldFont() changes since wmaker 0.62.0: ............................ - added WM{S,G}etDataFormat() - added drag and drop - changed selection code - added clientdata to WMFindInBag - removed SetWindowInitialSize() - added SetWindowAspectRatio() - added initial timeout when establishing a connection. - added WMSetConnectionDefaultTimeout() and WMSetConnectionOpenTimeout(); - added WMGetConnectionTimeoutState() changes since wmaker 0.61.1: ............................ - WARNING: semantic of bags has changed! An index assigned to an item will always keep that index unless you insert an item before it. For example: bag = WMCreateBag(); WMSetInBag(bag, 10, "bla"); That code will put "bla" in index 10, instead of 0, as it used to be. - fixed WMInsertInBag(). It ignored index, and always put the new item at end. - added WMSaveUserDefaults(). - rewrote WMPopUpButton to use WMMenuItem - added WMGetPopUpButtonMenuItem(WMPopUpButton *bPtr, int index) - WMSortListItemsWithComparer(WMList *lPtr, (int)(f)(const void*, const void*)) - WMSortBrowserColumnWithComparer() - fixed bug with sorting list items. - fixed bug in handling keyboard input associated with selection and notification sending. - filepanel puts dirs on top of list (Wolff <wolff@cybercable.fr>) - added WMReplaceInBag (Wolff <wolff@cybercable.fr>) - added vertical views and multiple views in WMSplitView (Wolff <wolff@cybercable.fr>) - changed values of parameter values of WMSplitViewConstrainProc() - configurable default fontsize patch (Igor P. Roboul <igor@mordor.myip.org>) - fixed a bug that crashed the programm when a popup button was scrolled. - fixed a bug that caused incorrect drawing position of the popup indicator. - fixed a bug that prevented selecting no item (-1) in a popup button. - an assertion will be raised if the program tries to select a popup button item that is beyond the total number of items present in the popup button. - changed names of functions for SplitView to be consistent. Some contained SubView while other Subview. Now all have Subview. - fixed a bug in how input events were posted. Establishing 2 or more input handlers for the same file descriptor, handling different (read/write/except) events, caused wrong handlers to be called. - Reimplemented the input and idle handlers with WMBag to avoid a functional problem with them: inability to remove handlers next to the called one, from the called handler itself. Trying to do this with the old version caused the program to crash. - changed wrealloc behaviour to be like this: new = wrealloc(old, new_size); 1. if old is NULL, return wmalloc(new_size). 2. if new_size is 0, call wfree(old), and return NULL. 3. if both old is a valid pointer and new_size>0, call realloc. - added wstrerror(int errnum) to return the string associated with errnum. - new wsyserrorwithcode(int error, const char* fmt, ...), similar to wsyserror(), but printing the message for the specified error code. - added 3 new classes: WMData, WMHost and WMConnection - fixed a big memory leak in the color panel code (from Pascal Hofstee). - added scrolling to tabview changes since wmaker 0.61.0: ............................ - added WMGetTextFieldFont() - escape key in panels (craig nellist <crn@ozemail.com.au>) - applied patch with fixes and enhancements to textfield (Franck Wolff <wolff@cybercable.fr>) - changed WMList to use WMBag internally, instead of a linked list - replaced WMAddSortedListItem() with WMSortListItems() - replaced WMAddSortedBrowserItem() with WMSortBrowserColumn() changes since wmaker 0.60.0: ............................ - added WMScreenWidth() and WMScreenHeight() functions. - fixed some problems when compiling with non gcc compilers. - added WMSetTextFieldFont() - added WMSetButtonImageDefault() (craig nellist <crn@ozemail.com.au>) - added WMBag (array/list) - added libWUtil, a library that is a subset of libWINGs. It contains utils that can be used in writing non-GUI programs. They include: hashes, notifications, input/idle/timer handlers, user defaults database handling, memory handling, application resource handling, etc. All the non-GUI stuff from libWINGs is present. Still linWINGs contain all this stuff so if you use libWINGs, you don't need to link against libWUtil too. One notable aspect of libWUtil is that it has a modified version of the event handling function. It is named WHandleEvents() and will handle all input/idle/timer events the app has. If your app has a permanent input handler (as for example a socket a server is listening on), then the main loop of the app can be: while(1) { WHandleEvents(); } but if there is no permanent input handler, you need to add some delay to avoid a too high cpu load by your program: while(1) { WHandleEvents(); wusleep(5000); } A permanent input handler is one that is established when the program starts and is present until the program exits. One that is deleted and later reinstalled, is not considered permanent. This difference is because if there is some input handler, the function will block until some event appears, while if there is no input handler the function will return almost immediately (after handling the timer/idle stuff). Except the stuff declared in WUtil.h, the following functions declared in WINGs.h are also present in libWUtil (you will need to #include <WINGs.h> if you use one of these): WMInitializeApplication(char *applicationName, int *argc, char **argv); WMSetResourcePath(char *path); WMGetApplicationName(); WMPathForResourceOfType(char *resource, char *ext); WMAddTimerHandler(int milliseconds, WMCallback *callback, void *cdata); WMDeleteTimerWithClientData(void *cdata); WMDeleteTimerHandler(WMHandlerID handlerID); WMAddIdleHandler(WMCallback *callback, void *cdata); WMDeleteIdleHandler(WMHandlerID handlerID); WMAddInputHandler(int fd, int condition, WMInputProc *proc, void *clientData); WMDeleteInputHandler(WMHandlerID handlerID); - added progress indicator widget - Changed WMSetWindowUPosition() and WMSetWindowUSize() to WMSetWindowInitialPosition() and WMSetWindowInitialSize() respectively, for better naming conventions. changes since wmaker 0.53.0: ............................ - added balloon help - fixed a bug with setting initial path in browsers. - added WMSetButtonImageDimsWhenDisabled() - changed simple callback/notifications to delegate-like stuff. Affected widgets are: WMBrowser - WMSetBrowserFillProc() was replaced with WMSetBrowserDelegate - WMBrowserDidScrollNotification was replaced with a delegate callback WMTextField (not completed yet) The notifications will still work, but using the delegate is preferable How to convert old code to delegate callbacks: 1 - create a variable (static or dynamic) of the type of the delegate for the widget type. 2 - Replace the notification observers with the equivalent delegate callbacks. 3 - Put pointers to the callbacks in the delegate variable. Take a look in wfilepanel.c to see how it is used there. - changed W_ViewProcedureTable to delegates This will only affect user created widgets. If you have a custom widget, you will need to update the callbacks and the declaration of the W_ViewProcedureTable variable to be a W_ViewDelegate, which is declared in WINGsP.h To setup the delegate, assign the delegate variable to view->delegate. - WMTextField Removed all the didChange notifications that were sent when the text was changed programmatically. Only changes made by user interaction will be notified now. If you need the old behaviour, send notifications manually when you change the text. - added WMTabView - added WMGetColorPanelColor(WMColorPanel *panel) - made WMGetUDStringForKey() to only return a reference to the string, not a wstrdup()'ed copy. DO NOT FREE IT ANYMORE! - added MultiByteText option to userdefaults file to control use of multibyte string drawing functions - renamed WMCreateFont() to WMCreateFontSet() - renamed WMCreateFontInDefaultEncoding() to WMCreateNormalFont() - added WMCreateFont() with different semantics changes since wmaker 0.52.0: ............................ - added int WMGetBrowserMaxVisibleColumns(WMBrowser *bPtr); changes since wmaker 0.51.2: ............................ - added WMColorWellDidChangeNotification - added wfindfileinarray() - fixed bug in window title setting (MANOME Tomonori <manome@itlb.te.noda.sut.ac.jp>) changes since wmaker 0.51.1: ............................ - wusergnusteppath() will return a statically allocated string now. DO NOT FREE IT ANYMORE!! changes since wmaker 0.51.0: ............................ - applied c++ compat header patch from Martynas Kunigelis <mkunigelis@alna.lt> - added WMSetTextFieldBeveled() - removed W_GC() : use WMColorGC() instead - added WMCreatePixmap() - changed WMSetTextFieldEnabled() to WMSetTextFieldEditable() changes since wmaker 0.50.1: ............................ - fixed various bugs - added patch from Franck Wolff <frawolff@club-internet.fr>, with many fixes and enhancements - added notification queues, asynchronous notifications etc. - added WMSetBrowserDoubleAction() - fixed list double click action changes since wmaker 0.50.2: ............................ - added wsetabort() - look WUtil.h - fixed bug in WMList resize - added notification sending when changing textfield programatically - removed WMHideWindow() - fixed bug in WMCloseWindow() - added textfield selection patch - added color panel code - added auto name completion for the file panel - added function to select text range, and to set cursor position in text fields programatically changes since wmaker 0.20.3: ............................ - added WMSetSliderImage(), WMSetSliderKnobThickness() - added WMGetListItemHeight() - added WMListDidScrollNotification - added WSetColorWellBordered() - added hacky color dragging in colorwell - added poll() support in WMNextEvent. WARNING: the stuff needed for WMAddInputHandler() is not yet implemented for the poll stuff - added WMSetFilePanelAccessoryView(), WMGetFilePanelAccessoryView() - added WMSetPopUpButtonEnabled() - added WMGetLabelImage() - autoscroll for popup button menus - added WMDrawPixmap() - WARNING: changed parameter list for WMListDrawProc changes since wmaker 0.20.2: ............................ - WMSetBrowserMaxVisibleColumns() - untested changes since wmaker 0.20.0: ............................ - added generic object field for WMListItem. This is for hanging generic clientdata changes since wmaker 0.20.0: ............................ - changed WMGetFilePanelFile() with WMGetFilePanelFileName() - made SavePanel changes since wmaker 0.19.3: ............................ - added WMCreatePanelForWindow() - added extra parent parameter for filepanel, alertpanel and inputpanel - WMCloseWindow() - WMChangePanelOwner() - added WMAddInputHandler() - change range related function arguments (WMTextField) to use WMRange changes since wmaker 0.19.1: ............................ - added wstrappend() - fixed bug when changing selected radio button by hand changes since wmaker 0.18.1: ............................ - removed textHeight arg from W_PaintImageAndText - added WMCreateWindowWithStyle() - added WMSetWindowBaseSize() and ResizeIncrements() - added WMSetWindowLeve() - added WMSetWindowDocumentEdited() - added WMSetScrollViewLineScroll(), WMSetScrollViewPageScroll() - added WMSetWindowMiniwindowTitle() - added WMSetWindowMiniwindowImage() changes since wmaker 0.18.0: ............................ - added functions to get RGB components and "#rrggbb" string from WMColor. - added function to create color from a name - fixed bug that caused blocking until some new event arrives, even when there already were events in the queue (like having to move the pointer over window to force the window to be painted) changes since wmaker 0.17.5: ............................ I don't remember everything, but here it goes: - fixed some bugs in text field - added a incomplete implementation of split view (not yet usable) - added a slider - changed the filepanel stuff. Each application can have only 1 file panel. The same panel will be reused every time you call for it, unless you free it. - changed semantics of WMCreateFont() so that it returns NULL if the requested font can't be loaded - removed WMAddDestroyCallback() - fixed bug in WMRemovePopUpButtonItem() - added function for user specified item height in WMList - added WMSetPopUpButtonText(). It will set the default text in the button when no options are selected - fixed bug in remove/add item in already mapped popupbuttons. Note: it is not good practice to change the contents of a popup button when it's already visible and the user has probably interacted with it. - fixed behaviour of "radio buttons" - WMInitializeApplication() must be the first function to be called in the program - removed applicationName, argc and argv arguments from the WMCreateScree... functions - WMReleaseColor(scr,color) changed to WMReleaseColor(color) - WMPaintColorRectangle() changed to WMPaintColorSwatch() - added various functions in font and color handling - added WMSetButtonFont() - changed WMCreateCommandButton() so that the buttons it creates will change their label when pushed - added WMGetSystemPixmap(WMScreen *scr, int image) - added partial I18N support - added libPropList requirement and some related utility functions - added a interface to prooplist, so that it works as a user defaults db - added WMWidthOfString() (removed WMFontWidthOfString()) - added WMDrawString() - added WMSetTextFieldSecure(WMTextField *tPtr, Bool flag) - WMGetListItem() will dup the returned string - removed need for ProgName being defined - rewrote hashtable stuff and made it available for outside use - added notification functions, with view resize notification - added WMSetWindowMinSize() and MaxSize() - text editing notification - added WMSetListPosition() etc. - added WMInsertBrowserItem() - the above 2 functions return WMListItem*, instead of Bool - rewrote browser - WMGetListItem() will return WMListItem* - removed WMGetListItems() and WMSetListItems() - fixed focus stuff for multi-window apps - changed all WMList function names that contained index to row �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/error.h��������������������������������������������������������������������0000644�0001750�0001750�00000002171�13431646201�013220� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* WUtil / error.h * * Copyright (c) 2014 Window Maker Team * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef WUTIL_ERROR_H #define WUTIL_ERROR_H /* * This file is not part of WUtil public API * * It defines internal things for the error message display functions */ #ifdef HAVE_SYSLOG_H /* Function to cleanly close the syslog stuff, called by wutil_shutdown from user side */ void w_syslog_close(void); #endif #endif /* WUTIL_ERROR_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/usleep.c�������������������������������������������������������������������0000644�0001750�0001750�00000000675�13431646201�013366� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include <errno.h> #include <time.h> #include "WUtil.h" #include "wconfig.h" void wusleep(unsigned int usec) { struct timespec tm; /* An arbitrary limit of 10 minutes -- in WM, if * somethings wants to sleep anything even close to * this, it's most likely an error. */ if (usec > 600000000) return; tm.tv_sec = usec / 1000000; tm.tv_nsec = (usec % 1000000) * 1000; while (nanosleep(&tm, &tm) == -1 && errno == EINTR) ; } �������������������������������������������������������������������WindowMaker-0.95.9/WINGs/wmenuitem.c����������������������������������������������������������������0000644�0001750�0001750�00000007561�13431646201�014104� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include "WINGsP.h" typedef struct W_MenuItem { char *title; WMPixmap *image; char *shortcutKey; int shortcutModifierMask; WMAction *action; void *data; struct W_Menu *submenu; void *object; WMPixmap *onStateImage; WMPixmap *offStateImage; WMPixmap *mixedStateImage; struct { unsigned enabled:1; unsigned state:2; } flags; } MenuItem; WMMenuItem *WMGetSeparatorMenuItem(void) { return NULL; } Bool WMMenuItemIsSeparator(WMMenuItem * item) { /* Parameter not used, but tell the compiler that it is ok */ (void) item; return False; } WMMenuItem *WMCreateMenuItem(void) { WMMenuItem *item; item = wmalloc(sizeof(MenuItem)); item->flags.enabled = 1; return item; } void WMDestroyMenuItem(WMMenuItem * item) { if (item->title) wfree(item->title); if (item->image) WMReleasePixmap(item->image); if (item->shortcutKey) wfree(item->shortcutKey); if (item->onStateImage) WMReleasePixmap(item->onStateImage); if (item->offStateImage) WMReleasePixmap(item->offStateImage); if (item->mixedStateImage) WMReleasePixmap(item->mixedStateImage); } Bool WMGetMenuItemEnabled(WMMenuItem * item) { return item->flags.enabled; } void WMSetMenuItemEnabled(WMMenuItem * item, Bool flag) { item->flags.enabled = ((flag == 0) ? 0 : 1); } char *WMGetMenuItemShortcut(WMMenuItem * item) { return item->shortcutKey; } unsigned WMGetMenuItemShortcutModifierMask(WMMenuItem * item) { return item->shortcutModifierMask; } void WMSetMenuItemShortcut(WMMenuItem * item, const char *shortcut) { if (item->shortcutKey) wfree(item->shortcutKey); item->shortcutKey = wstrdup(shortcut); } void WMSetMenuItemShortcutModifierMask(WMMenuItem * item, unsigned mask) { item->shortcutModifierMask = mask; } void *WMGetMenuItemRepresentedObject(WMMenuItem * item) { return item->object; } void WMSetMenuItemRepresentedObject(WMMenuItem * item, void *object) { item->object = object; } void WMSetMenuItemAction(WMMenuItem * item, WMAction * action, void *data) { item->action = action; item->data = data; } WMAction *WMGetMenuItemAction(WMMenuItem * item) { return item->action; } void *WMGetMenuItemData(WMMenuItem * item) { return item->data; } void WMSetMenuItemTitle(WMMenuItem * item, const char *title) { if (item->title) wfree(item->title); if (title) item->title = wstrdup(title); else item->title = NULL; } char *WMGetMenuItemTitle(WMMenuItem * item) { return item->title; } void WMSetMenuItemState(WMMenuItem * item, int state) { item->flags.state = state; } int WMGetMenuItemState(WMMenuItem * item) { return item->flags.state; } void WMSetMenuItemPixmap(WMMenuItem * item, WMPixmap * pixmap) { if (item->image) WMReleasePixmap(item->image); item->image = WMRetainPixmap(pixmap); } WMPixmap *WMGetMenuItemPixmap(WMMenuItem * item) { return item->image; } void WMSetMenuItemOnStatePixmap(WMMenuItem * item, WMPixmap * pixmap) { if (item->onStateImage) WMReleasePixmap(item->onStateImage); item->onStateImage = WMRetainPixmap(pixmap); } WMPixmap *WMGetMenuItemOnStatePixmap(WMMenuItem * item) { return item->onStateImage; } void WMSetMenuItemOffStatePixmap(WMMenuItem * item, WMPixmap * pixmap) { if (item->offStateImage) WMReleasePixmap(item->offStateImage); item->offStateImage = WMRetainPixmap(pixmap); } WMPixmap *WMGetMenuItemOffStatePixmap(WMMenuItem * item) { return item->offStateImage; } void WMSetMenuItemMixedStatePixmap(WMMenuItem * item, WMPixmap * pixmap) { if (item->mixedStateImage) WMReleasePixmap(item->mixedStateImage); item->mixedStateImage = WMRetainPixmap(pixmap); } WMPixmap *WMGetMenuItemMixedStatePixmap(WMMenuItem * item) { return item->mixedStateImage; } #if 0 void WMSetMenuItemSubmenu(WMMenuItem * item, WMMenu * submenu) { item->submenu = submenu; } WMMenu *WMGetMenuItemSubmenu(WMMenuItem * item) { return item->submenu; } Bool WMGetMenuItemHasSubmenu(WMMenuItem * item) { return item->submenu != NULL; } #endif �����������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/wlist.c��������������������������������������������������������������������0000644�0001750�0001750�00000066425�13431646201�013240� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include "WINGsP.h" char *WMListDidScrollNotification = "WMListDidScrollNotification"; char *WMListSelectionDidChangeNotification = "WMListSelectionDidChangeNotification"; typedef struct W_List { W_Class widgetClass; W_View *view; WMArray *items; /* list of WMListItem */ WMArray *selectedItems; /* list of selected WMListItems */ short itemHeight; int topItem; /* index of first visible item */ short fullFitLines; /* no of lines that fit entirely */ void *clientData; WMAction *action; void *doubleClientData; WMAction *doubleAction; WMListDrawProc *draw; WMHandlerID *idleID; /* for updating the scroller after adding elements */ WMHandlerID *selectID; /* for selecting items in list while scrolling */ WMScroller *vScroller; Pixmap doubleBuffer; struct { unsigned int allowMultipleSelection:1; unsigned int allowEmptySelection:1; unsigned int userDrawn:1; unsigned int userItemHeight:1; unsigned int dontFitAll:1; /* 1 = last item won't be fully visible */ unsigned int redrawPending:1; unsigned int buttonPressed:1; unsigned int buttonWasPressed:1; } flags; } List; #define DEFAULT_WIDTH 150 #define DEFAULT_HEIGHT 150 #define SCROLL_DELAY 100 static void destroyList(List * lPtr); static void paintList(List * lPtr); static void handleEvents(XEvent * event, void *data); static void handleActionEvents(XEvent * event, void *data); static void updateScroller(void *data); static void scrollForwardSelecting(void *data); static void scrollBackwardSelecting(void *data); static void vScrollCallBack(WMWidget * scroller, void *self); static void toggleItemSelection(WMList * lPtr, int index); static void updateGeometry(WMList * lPtr); static void didResizeList(W_ViewDelegate * self, WMView * view); static void unselectAllListItems(WMList * lPtr, WMListItem * exceptThis); static W_ViewDelegate _ListViewDelegate = { NULL, NULL, didResizeList, NULL, NULL }; static void updateDoubleBufferPixmap(WMList * lPtr) { WMView *view = lPtr->view; WMScreen *scr = view->screen; if (!view->flags.realized) return; if (lPtr->doubleBuffer) XFreePixmap(scr->display, lPtr->doubleBuffer); lPtr->doubleBuffer = XCreatePixmap(scr->display, view->window, view->size.width, lPtr->itemHeight, scr->depth); } static void realizeObserver(void *self, WMNotification * not) { /* Parameter not used, but tell the compiler that it is ok */ (void) not; updateDoubleBufferPixmap(self); } static void releaseItem(void *data) { WMListItem *item = (WMListItem *) data; if (item->text) wfree(item->text); wfree(item); } WMList *WMCreateList(WMWidget * parent) { List *lPtr; W_Screen *scrPtr = W_VIEW(parent)->screen; lPtr = wmalloc(sizeof(List)); lPtr->widgetClass = WC_List; lPtr->view = W_CreateView(W_VIEW(parent)); if (!lPtr->view) { wfree(lPtr); return NULL; } lPtr->view->self = lPtr; lPtr->view->delegate = &_ListViewDelegate; WMCreateEventHandler(lPtr->view, ExposureMask | StructureNotifyMask | ClientMessageMask, handleEvents, lPtr); WMCreateEventHandler(lPtr->view, ButtonPressMask | ButtonReleaseMask | EnterWindowMask | LeaveWindowMask | ButtonMotionMask, handleActionEvents, lPtr); lPtr->itemHeight = WMFontHeight(scrPtr->normalFont) + 1; lPtr->items = WMCreateArrayWithDestructor(4, releaseItem); lPtr->selectedItems = WMCreateArray(4); /* create the vertical scroller */ lPtr->vScroller = WMCreateScroller(lPtr); WMMoveWidget(lPtr->vScroller, 1, 1); WMSetScrollerArrowsPosition(lPtr->vScroller, WSAMaxEnd); WMSetScrollerAction(lPtr->vScroller, vScrollCallBack, lPtr); /* make the scroller map itself when it's realized */ WMMapWidget(lPtr->vScroller); W_ResizeView(lPtr->view, DEFAULT_WIDTH, DEFAULT_HEIGHT); WMAddNotificationObserver(realizeObserver, lPtr, WMViewRealizedNotification, lPtr->view); return lPtr; } void WMSetListAllowMultipleSelection(WMList * lPtr, Bool flag) { lPtr->flags.allowMultipleSelection = ((flag == 0) ? 0 : 1); } void WMSetListAllowEmptySelection(WMList * lPtr, Bool flag) { lPtr->flags.allowEmptySelection = ((flag == 0) ? 0 : 1); } static int comparator(const void *a, const void *b) { return (strcmp((*(WMListItem **) a)->text, (*(WMListItem **) b)->text)); } void WMSortListItems(WMList * lPtr) { WMSortArray(lPtr->items, comparator); paintList(lPtr); } void WMSortListItemsWithComparer(WMList * lPtr, WMCompareDataProc * func) { WMSortArray(lPtr->items, func); paintList(lPtr); } WMListItem *WMInsertListItem(WMList * lPtr, int row, const char *text) { WMListItem *item; CHECK_CLASS(lPtr, WC_List); item = wmalloc(sizeof(WMListItem)); item->text = wstrdup(text); row = WMIN(row, WMGetArrayItemCount(lPtr->items)); if (row < 0) WMAddToArray(lPtr->items, item); else WMInsertInArray(lPtr->items, row, item); /* update the scroller when idle, so that we don't waste time * updating it when another item is going to be added later */ if (!lPtr->idleID) { lPtr->idleID = WMAddIdleHandler((WMCallback *) updateScroller, lPtr); } return item; } void WMRemoveListItem(WMList * lPtr, int row) { WMListItem *item; int topItem = lPtr->topItem; int selNotify = 0; CHECK_CLASS(lPtr, WC_List); /*wassertr(row>=0 && row<WMGetArrayItemCount(lPtr->items)); */ if (row < 0 || row >= WMGetArrayItemCount(lPtr->items)) return; item = WMGetFromArray(lPtr->items, row); if (item->selected) { WMRemoveFromArray(lPtr->selectedItems, item); selNotify = 1; } if (row <= lPtr->topItem + lPtr->fullFitLines + lPtr->flags.dontFitAll) lPtr->topItem--; if (lPtr->topItem < 0) lPtr->topItem = 0; WMDeleteFromArray(lPtr->items, row); if (!lPtr->idleID) { lPtr->idleID = WMAddIdleHandler((WMCallback *) updateScroller, lPtr); } if (lPtr->topItem != topItem) { WMPostNotificationName(WMListDidScrollNotification, lPtr, NULL); } if (selNotify) { WMPostNotificationName(WMListSelectionDidChangeNotification, lPtr, NULL); } } WMListItem *WMGetListItem(WMList * lPtr, int row) { return WMGetFromArray(lPtr->items, row); } WMArray *WMGetListItems(WMList * lPtr) { return lPtr->items; } void WMSetListUserDrawProc(WMList * lPtr, WMListDrawProc * proc) { lPtr->flags.userDrawn = 1; lPtr->draw = proc; } void WMSetListUserDrawItemHeight(WMList * lPtr, unsigned short height) { assert(height > 0); lPtr->flags.userItemHeight = 1; lPtr->itemHeight = height; updateDoubleBufferPixmap(lPtr); updateGeometry(lPtr); } void WMClearList(WMList * lPtr) { int selNo = WMGetArrayItemCount(lPtr->selectedItems); WMEmptyArray(lPtr->selectedItems); WMEmptyArray(lPtr->items); lPtr->topItem = 0; if (!lPtr->idleID) { WMDeleteIdleHandler(lPtr->idleID); lPtr->idleID = NULL; } if (lPtr->selectID) { WMDeleteTimerHandler(lPtr->selectID); lPtr->selectID = NULL; } if (lPtr->view->flags.realized) { updateScroller(lPtr); } if (selNo > 0) { WMPostNotificationName(WMListSelectionDidChangeNotification, lPtr, NULL); } } void WMSetListAction(WMList * lPtr, WMAction * action, void *clientData) { lPtr->action = action; lPtr->clientData = clientData; } void WMSetListDoubleAction(WMList * lPtr, WMAction * action, void *clientData) { lPtr->doubleAction = action; lPtr->doubleClientData = clientData; } WMArray *WMGetListSelectedItems(WMList * lPtr) { return lPtr->selectedItems; } WMListItem *WMGetListSelectedItem(WMList * lPtr) { return WMGetFromArray(lPtr->selectedItems, 0); } int WMGetListSelectedItemRow(WMList * lPtr) { WMListItem *item = WMGetFromArray(lPtr->selectedItems, 0); return (item != NULL ? WMGetFirstInArray(lPtr->items, item) : WLNotFound); } int WMGetListItemHeight(WMList * lPtr) { return lPtr->itemHeight; } void WMSetListPosition(WMList * lPtr, int row) { lPtr->topItem = row; if (lPtr->topItem + lPtr->fullFitLines > WMGetArrayItemCount(lPtr->items)) lPtr->topItem = WMGetArrayItemCount(lPtr->items) - lPtr->fullFitLines; if (lPtr->topItem < 0) lPtr->topItem = 0; if (lPtr->view->flags.realized) updateScroller(lPtr); } void WMSetListBottomPosition(WMList * lPtr, int row) { if (WMGetArrayItemCount(lPtr->items) > lPtr->fullFitLines) { lPtr->topItem = row - lPtr->fullFitLines; if (lPtr->topItem < 0) lPtr->topItem = 0; if (lPtr->view->flags.realized) updateScroller(lPtr); } } int WMGetListNumberOfRows(WMList * lPtr) { return WMGetArrayItemCount(lPtr->items); } int WMGetListPosition(WMList * lPtr) { return lPtr->topItem; } Bool WMListAllowsMultipleSelection(WMList * lPtr) { return lPtr->flags.allowMultipleSelection; } Bool WMListAllowsEmptySelection(WMList * lPtr) { return lPtr->flags.allowEmptySelection; } static void scrollByAmount(WMList * lPtr, int amount) { int itemCount = WMGetArrayItemCount(lPtr->items); if ((amount < 0 && lPtr->topItem > 0) || (amount > 0 && (lPtr->topItem + lPtr->fullFitLines < itemCount))) { lPtr->topItem += amount; if (lPtr->topItem < 0) lPtr->topItem = 0; if (lPtr->topItem + lPtr->fullFitLines > itemCount) lPtr->topItem = itemCount - lPtr->fullFitLines; updateScroller(lPtr); } } static void vScrollCallBack(WMWidget * scroller, void *self) { WMList *lPtr = (WMList *) self; int oldTopItem = lPtr->topItem; int itemCount = WMGetArrayItemCount(lPtr->items); switch (WMGetScrollerHitPart((WMScroller *) scroller)) { case WSDecrementLine: scrollByAmount(lPtr, -1); break; case WSIncrementLine: scrollByAmount(lPtr, 1); break; case WSDecrementPage: scrollByAmount(lPtr, -lPtr->fullFitLines + (1 - lPtr->flags.dontFitAll) + 1); break; case WSIncrementPage: scrollByAmount(lPtr, lPtr->fullFitLines - (1 - lPtr->flags.dontFitAll) - 1); break; case WSDecrementWheel: scrollByAmount(lPtr, -lPtr->fullFitLines / 3); break; case WSIncrementWheel: scrollByAmount(lPtr, lPtr->fullFitLines / 3); break; case WSKnob: lPtr->topItem = WMGetScrollerValue(lPtr->vScroller) * (float)(itemCount - lPtr->fullFitLines); if (oldTopItem != lPtr->topItem) paintList(lPtr); /* use updateScroller(lPtr) here? -Dan */ break; case WSKnobSlot: case WSNoPart: default: /* do nothing */ break; } if (lPtr->topItem != oldTopItem) WMPostNotificationName(WMListDidScrollNotification, lPtr, NULL); } static void paintItem(List * lPtr, int index) { WMView *view = lPtr->view; W_Screen *scr = view->screen; Display *display = scr->display; int width, height, x, y, tlen; WMListItem *itemPtr; Drawable d = lPtr->doubleBuffer; itemPtr = WMGetFromArray(lPtr->items, index); width = lPtr->view->size.width - 2 - 19; height = lPtr->itemHeight; x = 19; y = 2 + (index - lPtr->topItem) * lPtr->itemHeight + 1; tlen = strlen(itemPtr->text); if (lPtr->flags.userDrawn) { WMRect rect; int flags; rect.size.width = width; rect.size.height = height; rect.pos.x = 0; rect.pos.y = 0; flags = itemPtr->uflags; if (itemPtr->disabled) flags |= WLDSDisabled; if (itemPtr->selected) flags |= WLDSSelected; if (itemPtr->isBranch) flags |= WLDSIsBranch; if (lPtr->draw) (*lPtr->draw) (lPtr, index, d, itemPtr->text, flags, &rect); XCopyArea(display, d, view->window, scr->copyGC, 0, 0, width, height, x, y); } else { WMColor *back = (itemPtr->selected ? scr->white : view->backColor); XFillRectangle(display, d, WMColorGC(back), 0, 0, width, height); W_PaintText(view, d, scr->normalFont, 4, 0, width, WALeft, scr->black, False, itemPtr->text, tlen); XCopyArea(display, d, view->window, scr->copyGC, 0, 0, width, height, x, y); } if ((index - lPtr->topItem + lPtr->fullFitLines) * lPtr->itemHeight > lPtr->view->size.height - 2) { W_DrawRelief(lPtr->view->screen, lPtr->view->window, 0, 0, lPtr->view->size.width, lPtr->view->size.height, WRSunken); } } static void paintList(List * lPtr) { W_Screen *scrPtr = lPtr->view->screen; int i, lim; if (!lPtr->view->flags.mapped) return; if (WMGetArrayItemCount(lPtr->items) > 0) { if (lPtr->topItem + lPtr->fullFitLines + lPtr->flags.dontFitAll > WMGetArrayItemCount(lPtr->items)) { lim = WMGetArrayItemCount(lPtr->items) - lPtr->topItem; XClearArea(scrPtr->display, lPtr->view->window, 19, 2 + lim * lPtr->itemHeight, lPtr->view->size.width - 21, lPtr->view->size.height - lim * lPtr->itemHeight - 3, False); } else { lim = lPtr->fullFitLines + lPtr->flags.dontFitAll; } for (i = lPtr->topItem; i < lPtr->topItem + lim; i++) { paintItem(lPtr, i); } } else { XClearWindow(scrPtr->display, lPtr->view->window); } W_DrawRelief(scrPtr, lPtr->view->window, 0, 0, lPtr->view->size.width, lPtr->view->size.height, WRSunken); } #if 0 static void scrollTo(List * lPtr, int newTop) { } #endif static void updateScroller(void *data) { List *lPtr = (List *) data; float knobProportion, floatValue, tmp; int count = WMGetArrayItemCount(lPtr->items); if (lPtr->idleID) WMDeleteIdleHandler(lPtr->idleID); lPtr->idleID = NULL; paintList(lPtr); if (count == 0 || count <= lPtr->fullFitLines) WMSetScrollerParameters(lPtr->vScroller, 0, 1); else { tmp = lPtr->fullFitLines; knobProportion = tmp / (float)count; floatValue = (float)lPtr->topItem / (float)(count - lPtr->fullFitLines); WMSetScrollerParameters(lPtr->vScroller, floatValue, knobProportion); } } static void scrollForwardSelecting(void *data) { List *lPtr = (List *) data; int lastSelected; lastSelected = lPtr->topItem + lPtr->fullFitLines + lPtr->flags.dontFitAll - 1; if (lastSelected >= WMGetArrayItemCount(lPtr->items) - 1) { lPtr->selectID = NULL; if (lPtr->flags.dontFitAll) scrollByAmount(lPtr, 1); return; } /* selecting NEEDS to be done before scrolling to avoid flickering */ if (lPtr->flags.allowMultipleSelection) { WMListItem *item; WMRange range; item = WMGetFromArray(lPtr->selectedItems, 0); range.position = WMGetFirstInArray(lPtr->items, item); if (lastSelected + 1 >= range.position) { range.count = lastSelected - range.position + 2; } else { range.count = lastSelected - range.position; } WMSetListSelectionToRange(lPtr, range); } else { WMSelectListItem(lPtr, lastSelected + 1); } scrollByAmount(lPtr, 1); lPtr->selectID = WMAddTimerHandler(SCROLL_DELAY, scrollForwardSelecting, lPtr); } static void scrollBackwardSelecting(void *data) { List *lPtr = (List *) data; if (lPtr->topItem < 1) { lPtr->selectID = NULL; return; } /* selecting NEEDS to be done before scrolling to avoid flickering */ if (lPtr->flags.allowMultipleSelection) { WMListItem *item; WMRange range; item = WMGetFromArray(lPtr->selectedItems, 0); range.position = WMGetFirstInArray(lPtr->items, item); if (lPtr->topItem - 1 >= range.position) { range.count = lPtr->topItem - range.position; } else { range.count = lPtr->topItem - range.position - 2; } WMSetListSelectionToRange(lPtr, range); } else { WMSelectListItem(lPtr, lPtr->topItem - 1); } scrollByAmount(lPtr, -1); lPtr->selectID = WMAddTimerHandler(SCROLL_DELAY, scrollBackwardSelecting, lPtr); } static void handleEvents(XEvent * event, void *data) { List *lPtr = (List *) data; CHECK_CLASS(data, WC_List); switch (event->type) { case Expose: if (event->xexpose.count != 0) break; paintList(lPtr); break; case DestroyNotify: destroyList(lPtr); break; } } static int matchTitle(const void *item, const void *title) { const WMListItem *wl_item = item; const char *s_title = title; return (strcmp(wl_item->text, s_title) == 0 ? 1 : 0); } int WMFindRowOfListItemWithTitle(WMList * lPtr, const char *title) { /* * We explicitely discard the 'const' attribute here because the * call-back function handler must not be made with a const * attribute, but our local call-back function (above) does have * it properly set, so we're consistent */ return WMFindInArray(lPtr->items, matchTitle, (char *) title); } void WMSelectListItem(WMList * lPtr, int row) { WMListItem *item; if (row >= WMGetArrayItemCount(lPtr->items)) return; if (row < 0) { /* row = -1 will deselects all for backward compatibility. * will be removed later. -Dan */ WMUnselectAllListItems(lPtr); return; } item = WMGetFromArray(lPtr->items, row); if (item->selected) return; /* Return if already selected */ if (!lPtr->flags.allowMultipleSelection) { /* unselect previous selected items */ unselectAllListItems(lPtr, NULL); } /* select item */ item->selected = 1; WMAddToArray(lPtr->selectedItems, item); if (lPtr->view->flags.mapped && row >= lPtr->topItem && row <= lPtr->topItem + lPtr->fullFitLines) { paintItem(lPtr, row); } WMPostNotificationName(WMListSelectionDidChangeNotification, lPtr, NULL); } void WMUnselectListItem(WMList * lPtr, int row) { WMListItem *item = WMGetFromArray(lPtr->items, row); if (!item || !item->selected) return; if (!lPtr->flags.allowEmptySelection && WMGetArrayItemCount(lPtr->selectedItems) <= 1) { return; } item->selected = 0; WMRemoveFromArray(lPtr->selectedItems, item); if (lPtr->view->flags.mapped && row >= lPtr->topItem && row <= lPtr->topItem + lPtr->fullFitLines) { paintItem(lPtr, row); } WMPostNotificationName(WMListSelectionDidChangeNotification, lPtr, NULL); } void WMSelectListItemsInRange(WMList * lPtr, WMRange range) { WMListItem *item; int position = range.position, k = 1, notify = 0; int total = WMGetArrayItemCount(lPtr->items); if (!lPtr->flags.allowMultipleSelection) return; if (range.count == 0) return; /* Nothing to select */ if (range.count < 0) { range.count = -range.count; k = -1; } for (; range.count > 0 && position >= 0 && position < total; range.count--) { item = WMGetFromArray(lPtr->items, position); if (!item->selected) { item->selected = 1; WMAddToArray(lPtr->selectedItems, item); if (lPtr->view->flags.mapped && position >= lPtr->topItem && position <= lPtr->topItem + lPtr->fullFitLines) { paintItem(lPtr, position); } notify = 1; } position += k; } if (notify) { WMPostNotificationName(WMListSelectionDidChangeNotification, lPtr, NULL); } } void WMSetListSelectionToRange(WMList * lPtr, WMRange range) { WMListItem *item; int mark1, mark2, i, k; int position = range.position, notify = 0; int total = WMGetArrayItemCount(lPtr->items); if (!lPtr->flags.allowMultipleSelection) return; if (range.count == 0) { WMUnselectAllListItems(lPtr); return; } if (range.count < 0) { mark1 = range.position + range.count + 1; mark2 = range.position + 1; range.count = -range.count; k = -1; } else { mark1 = range.position; mark2 = range.position + range.count; k = 1; } if (mark1 > total) mark1 = total; if (mark2 < 0) mark2 = 0; WMEmptyArray(lPtr->selectedItems); for (i = 0; i < mark1; i++) { item = WMGetFromArray(lPtr->items, i); if (item->selected) { item->selected = 0; if (lPtr->view->flags.mapped && i >= lPtr->topItem && i <= lPtr->topItem + lPtr->fullFitLines) { paintItem(lPtr, i); } notify = 1; } } for (; range.count > 0 && position >= 0 && position < total; range.count--) { item = WMGetFromArray(lPtr->items, position); if (!item->selected) { item->selected = 1; if (lPtr->view->flags.mapped && position >= lPtr->topItem && position <= lPtr->topItem + lPtr->fullFitLines) { paintItem(lPtr, position); } notify = 1; } WMAddToArray(lPtr->selectedItems, item); position += k; } for (i = mark2; i < total; i++) { item = WMGetFromArray(lPtr->items, i); if (item->selected) { item->selected = 0; if (lPtr->view->flags.mapped && i >= lPtr->topItem && i <= lPtr->topItem + lPtr->fullFitLines) { paintItem(lPtr, i); } notify = 1; } } if (notify) { WMPostNotificationName(WMListSelectionDidChangeNotification, lPtr, NULL); } } void WMSelectAllListItems(WMList * lPtr) { int i; WMListItem *item; if (!lPtr->flags.allowMultipleSelection) return; if (WMGetArrayItemCount(lPtr->items) == WMGetArrayItemCount(lPtr->selectedItems)) { return; /* All items are selected already */ } WMFreeArray(lPtr->selectedItems); lPtr->selectedItems = WMCreateArrayWithArray(lPtr->items); for (i = 0; i < WMGetArrayItemCount(lPtr->items); i++) { item = WMGetFromArray(lPtr->items, i); if (!item->selected) { item->selected = 1; if (lPtr->view->flags.mapped && i >= lPtr->topItem && i <= lPtr->topItem + lPtr->fullFitLines) { paintItem(lPtr, i); } } } WMPostNotificationName(WMListSelectionDidChangeNotification, lPtr, NULL); } /* * Be careful from where you call this function! It doesn't honor the * allowEmptySelection flag and doesn't send a notification about selection * change! You need to manage these in the functions from where you call it. * * This will unselect all items if exceptThis is NULL, else will keep * exceptThis selected. * Make sure that exceptThis is one of the already selected items if not NULL! * */ static void unselectAllListItems(WMList * lPtr, WMListItem * exceptThis) { int i; WMListItem *item; for (i = 0; i < WMGetArrayItemCount(lPtr->items); i++) { item = WMGetFromArray(lPtr->items, i); if (item != exceptThis && item->selected) { item->selected = 0; if (lPtr->view->flags.mapped && i >= lPtr->topItem && i <= lPtr->topItem + lPtr->fullFitLines) { paintItem(lPtr, i); } } } WMEmptyArray(lPtr->selectedItems); if (exceptThis != NULL) { exceptThis->selected = 1; WMAddToArray(lPtr->selectedItems, exceptThis); } } void WMUnselectAllListItems(WMList * lPtr) { int keep; WMListItem *keepItem; keep = lPtr->flags.allowEmptySelection ? 0 : 1; if (WMGetArrayItemCount(lPtr->selectedItems) == keep) return; keepItem = (keep == 1 ? WMGetFromArray(lPtr->selectedItems, 0) : NULL); unselectAllListItems(lPtr, keepItem); WMPostNotificationName(WMListSelectionDidChangeNotification, lPtr, NULL); } static int getItemIndexAt(List * lPtr, int clickY) { int index; index = (clickY - 2) / lPtr->itemHeight + lPtr->topItem; if (index < 0 || index >= WMGetArrayItemCount(lPtr->items)) return -1; return index; } static void toggleItemSelection(WMList * lPtr, int index) { WMListItem *item = WMGetFromArray(lPtr->items, index); if (item && item->selected) { WMUnselectListItem(lPtr, index); } else { WMSelectListItem(lPtr, index); } } static void handleActionEvents(XEvent * event, void *data) { List *lPtr = (List *) data; int tmp, height; int topItem = lPtr->topItem; static int lastClicked = -1, prevItem = -1; CHECK_CLASS(data, WC_List); switch (event->type) { case ButtonRelease: /* Ignore mouse wheel events, they're not "real" button events */ if (event->xbutton.button == WINGsConfiguration.mouseWheelUp || event->xbutton.button == WINGsConfiguration.mouseWheelDown) { break; } lPtr->flags.buttonPressed = 0; if (lPtr->selectID) { WMDeleteTimerHandler(lPtr->selectID); lPtr->selectID = NULL; } tmp = getItemIndexAt(lPtr, event->xbutton.y); if (tmp >= 0) { if (lPtr->action) (*lPtr->action) (lPtr, lPtr->clientData); } if (!(event->xbutton.state & ShiftMask)) lastClicked = prevItem = tmp; break; case EnterNotify: if (lPtr->selectID) { WMDeleteTimerHandler(lPtr->selectID); lPtr->selectID = NULL; } break; case LeaveNotify: height = WMWidgetHeight(lPtr); if (lPtr->flags.buttonPressed && !lPtr->selectID) { if (event->xcrossing.y >= height) { lPtr->selectID = WMAddTimerHandler(SCROLL_DELAY, scrollForwardSelecting, lPtr); } else if (event->xcrossing.y <= 0) { lPtr->selectID = WMAddTimerHandler(SCROLL_DELAY, scrollBackwardSelecting, lPtr); } } break; case ButtonPress: if (event->xbutton.x <= WMWidgetWidth(lPtr->vScroller)) break; if (event->xbutton.button == WINGsConfiguration.mouseWheelDown || event->xbutton.button == WINGsConfiguration.mouseWheelUp) { int amount = 0; if (event->xbutton.state & ControlMask) { amount = lPtr->fullFitLines - (1 - lPtr->flags.dontFitAll) - 1; } else if (event->xbutton.state & ShiftMask) { amount = 1; } else { amount = lPtr->fullFitLines / 3; if (amount == 0) amount++; } if (event->xbutton.button == WINGsConfiguration.mouseWheelUp) amount = -amount; scrollByAmount(lPtr, amount); break; } tmp = getItemIndexAt(lPtr, event->xbutton.y); lPtr->flags.buttonPressed = 1; if (tmp >= 0) { if (tmp == lastClicked && WMIsDoubleClick(event)) { WMSelectListItem(lPtr, tmp); if (lPtr->doubleAction) (*lPtr->doubleAction) (lPtr, lPtr->doubleClientData); } else { if (!lPtr->flags.allowMultipleSelection) { if (event->xbutton.state & ControlMask) { toggleItemSelection(lPtr, tmp); } else { WMSelectListItem(lPtr, tmp); } } else { WMRange range; WMListItem *lastSel; if (event->xbutton.state & ControlMask) { toggleItemSelection(lPtr, tmp); } else if (event->xbutton.state & ShiftMask) { if (WMGetArrayItemCount(lPtr->selectedItems) == 0) { WMSelectListItem(lPtr, tmp); } else { lastSel = WMGetFromArray(lPtr->items, lastClicked); range.position = WMGetFirstInArray(lPtr->items, lastSel); if (tmp >= range.position) range.count = tmp - range.position + 1; else range.count = tmp - range.position - 1; WMSetListSelectionToRange(lPtr, range); } } else { range.position = tmp; range.count = 1; WMSetListSelectionToRange(lPtr, range); } } } } if (!(event->xbutton.state & ShiftMask)) lastClicked = prevItem = tmp; break; case MotionNotify: height = WMWidgetHeight(lPtr); if (lPtr->selectID && event->xmotion.y > 0 && event->xmotion.y < height) { WMDeleteTimerHandler(lPtr->selectID); lPtr->selectID = NULL; } if (lPtr->flags.buttonPressed && !lPtr->selectID) { if (event->xmotion.y <= 0) { lPtr->selectID = WMAddTimerHandler(SCROLL_DELAY, scrollBackwardSelecting, lPtr); break; } else if (event->xmotion.y >= height) { lPtr->selectID = WMAddTimerHandler(SCROLL_DELAY, scrollForwardSelecting, lPtr); break; } tmp = getItemIndexAt(lPtr, event->xmotion.y); if (tmp >= 0 && tmp != prevItem) { if (lPtr->flags.allowMultipleSelection) { WMRange range; range.position = lastClicked; if (tmp >= lastClicked) range.count = tmp - lastClicked + 1; else range.count = tmp - lastClicked - 1; WMSetListSelectionToRange(lPtr, range); } else { WMSelectListItem(lPtr, tmp); } } prevItem = tmp; } break; } if (lPtr->topItem != topItem) WMPostNotificationName(WMListDidScrollNotification, lPtr, NULL); } static void updateGeometry(WMList * lPtr) { lPtr->fullFitLines = (lPtr->view->size.height - 4) / lPtr->itemHeight; if (lPtr->fullFitLines * lPtr->itemHeight < lPtr->view->size.height - 4) { lPtr->flags.dontFitAll = 1; } else { lPtr->flags.dontFitAll = 0; } if (WMGetArrayItemCount(lPtr->items) - lPtr->topItem <= lPtr->fullFitLines) { lPtr->topItem = WMGetArrayItemCount(lPtr->items) - lPtr->fullFitLines; if (lPtr->topItem < 0) lPtr->topItem = 0; } updateScroller(lPtr); } static void didResizeList(W_ViewDelegate * self, WMView * view) { WMList *lPtr = (WMList *) view->self; /* Parameter not used, but tell the compiler that it is ok */ (void) self; WMResizeWidget(lPtr->vScroller, 1, view->size.height - 2); updateDoubleBufferPixmap(lPtr); updateGeometry(lPtr); } static void destroyList(List * lPtr) { if (lPtr->idleID) WMDeleteIdleHandler(lPtr->idleID); lPtr->idleID = NULL; if (lPtr->selectID) WMDeleteTimerHandler(lPtr->selectID); lPtr->selectID = NULL; if (lPtr->selectedItems) WMFreeArray(lPtr->selectedItems); if (lPtr->items) WMFreeArray(lPtr->items); if (lPtr->doubleBuffer) XFreePixmap(lPtr->view->screen->display, lPtr->doubleBuffer); WMRemoveNotificationObserver(lPtr); wfree(lPtr); } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/rgb.h����������������������������������������������������������������������0000644�0001750�0001750�00000070130�13431646201�012641� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ /* Automatically generated file. Do NOT edit. Regenerate it using make-rgb */ #ifndef RGB_H_ #define RGB_H_ #include <wraster.h> typedef struct RGBColor { RColor color; char *name; } RGBColor; RGBColor rgbColors[] = { {{255, 250, 250, 0}, "snow"}, {{248, 248, 255, 0}, "ghost"}, {{248, 248, 255, 0}, "GhostWhite"}, {{245, 245, 245, 0}, "white"}, {{245, 245, 245, 0}, "WhiteSmoke"}, {{220, 220, 220, 0}, "gainsboro"}, {{255, 250, 240, 0}, "floral"}, {{255, 250, 240, 0}, "FloralWhite"}, {{253, 245, 230, 0}, "old"}, {{253, 245, 230, 0}, "OldLace"}, {{250, 240, 230, 0}, "linen"}, {{250, 235, 215, 0}, "antique"}, {{250, 235, 215, 0}, "AntiqueWhite"}, {{255, 239, 213, 0}, "papaya"}, {{255, 239, 213, 0}, "PapayaWhip"}, {{255, 235, 205, 0}, "blanched"}, {{255, 235, 205, 0}, "BlanchedAlmond"}, {{255, 228, 196, 0}, "bisque"}, {{255, 218, 185, 0}, "peach"}, {{255, 218, 185, 0}, "PeachPuff"}, {{255, 222, 173, 0}, "navajo"}, {{255, 222, 173, 0}, "NavajoWhite"}, {{255, 228, 181, 0}, "moccasin"}, {{255, 248, 220, 0}, "cornsilk"}, {{255, 255, 240, 0}, "ivory"}, {{255, 250, 205, 0}, "lemon"}, {{255, 250, 205, 0}, "LemonChiffon"}, {{255, 245, 238, 0}, "seashell"}, {{240, 255, 240, 0}, "honeydew"}, {{245, 255, 250, 0}, "mint"}, {{245, 255, 250, 0}, "MintCream"}, {{240, 255, 255, 0}, "azure"}, {{240, 248, 255, 0}, "alice"}, {{240, 248, 255, 0}, "AliceBlue"}, {{230, 230, 250, 0}, "lavender"}, {{255, 240, 245, 0}, "lavender"}, {{255, 240, 245, 0}, "LavenderBlush"}, {{255, 228, 225, 0}, "misty"}, {{255, 228, 225, 0}, "MistyRose"}, {{255, 255, 255, 0}, "white"}, {{ 0, 0, 0, 0}, "black"}, {{ 47, 79, 79, 0}, "dark"}, {{ 47, 79, 79, 0}, "DarkSlateGray"}, {{ 47, 79, 79, 0}, "dark"}, {{ 47, 79, 79, 0}, "DarkSlateGrey"}, {{105, 105, 105, 0}, "dim"}, {{105, 105, 105, 0}, "DimGray"}, {{105, 105, 105, 0}, "dim"}, {{105, 105, 105, 0}, "DimGrey"}, {{112, 128, 144, 0}, "slate"}, {{112, 128, 144, 0}, "SlateGray"}, {{112, 128, 144, 0}, "slate"}, {{112, 128, 144, 0}, "SlateGrey"}, {{119, 136, 153, 0}, "light"}, {{119, 136, 153, 0}, "LightSlateGray"}, {{119, 136, 153, 0}, "light"}, {{119, 136, 153, 0}, "LightSlateGrey"}, {{190, 190, 190, 0}, "gray"}, {{190, 190, 190, 0}, "grey"}, {{211, 211, 211, 0}, "light"}, {{211, 211, 211, 0}, "LightGrey"}, {{211, 211, 211, 0}, "light"}, {{211, 211, 211, 0}, "LightGray"}, {{ 25, 25, 112, 0}, "midnight"}, {{ 25, 25, 112, 0}, "MidnightBlue"}, {{ 0, 0, 128, 0}, "navy"}, {{ 0, 0, 128, 0}, "navy"}, {{ 0, 0, 128, 0}, "NavyBlue"}, {{100, 149, 237, 0}, "cornflower"}, {{100, 149, 237, 0}, "CornflowerBlue"}, {{ 72, 61, 139, 0}, "dark"}, {{ 72, 61, 139, 0}, "DarkSlateBlue"}, {{106, 90, 205, 0}, "slate"}, {{106, 90, 205, 0}, "SlateBlue"}, {{123, 104, 238, 0}, "medium"}, {{123, 104, 238, 0}, "MediumSlateBlue"}, {{132, 112, 255, 0}, "light"}, {{132, 112, 255, 0}, "LightSlateBlue"}, {{ 0, 0, 205, 0}, "medium"}, {{ 0, 0, 205, 0}, "MediumBlue"}, {{ 65, 105, 225, 0}, "royal"}, {{ 65, 105, 225, 0}, "RoyalBlue"}, {{ 0, 0, 255, 0}, "blue"}, {{ 30, 144, 255, 0}, "dodger"}, {{ 30, 144, 255, 0}, "DodgerBlue"}, {{ 0, 191, 255, 0}, "deep"}, {{ 0, 191, 255, 0}, "DeepSkyBlue"}, {{135, 206, 235, 0}, "sky"}, {{135, 206, 235, 0}, "SkyBlue"}, {{135, 206, 250, 0}, "light"}, {{135, 206, 250, 0}, "LightSkyBlue"}, {{ 70, 130, 180, 0}, "steel"}, {{ 70, 130, 180, 0}, "SteelBlue"}, {{176, 196, 222, 0}, "light"}, {{176, 196, 222, 0}, "LightSteelBlue"}, {{173, 216, 230, 0}, "light"}, {{173, 216, 230, 0}, "LightBlue"}, {{176, 224, 230, 0}, "powder"}, {{176, 224, 230, 0}, "PowderBlue"}, {{175, 238, 238, 0}, "pale"}, {{175, 238, 238, 0}, "PaleTurquoise"}, {{ 0, 206, 209, 0}, "dark"}, {{ 0, 206, 209, 0}, "DarkTurquoise"}, {{ 72, 209, 204, 0}, "medium"}, {{ 72, 209, 204, 0}, "MediumTurquoise"}, {{ 64, 224, 208, 0}, "turquoise"}, {{ 0, 255, 255, 0}, "cyan"}, {{224, 255, 255, 0}, "light"}, {{224, 255, 255, 0}, "LightCyan"}, {{ 95, 158, 160, 0}, "cadet"}, {{ 95, 158, 160, 0}, "CadetBlue"}, {{102, 205, 170, 0}, "medium"}, {{102, 205, 170, 0}, "MediumAquamarine"}, {{127, 255, 212, 0}, "aquamarine"}, {{ 0, 100, 0, 0}, "dark"}, {{ 0, 100, 0, 0}, "DarkGreen"}, {{ 85, 107, 47, 0}, "dark"}, {{ 85, 107, 47, 0}, "DarkOliveGreen"}, {{143, 188, 143, 0}, "dark"}, {{143, 188, 143, 0}, "DarkSeaGreen"}, {{ 46, 139, 87, 0}, "sea"}, {{ 46, 139, 87, 0}, "SeaGreen"}, {{ 60, 179, 113, 0}, "medium"}, {{ 60, 179, 113, 0}, "MediumSeaGreen"}, {{ 32, 178, 170, 0}, "light"}, {{ 32, 178, 170, 0}, "LightSeaGreen"}, {{152, 251, 152, 0}, "pale"}, {{152, 251, 152, 0}, "PaleGreen"}, {{ 0, 255, 127, 0}, "spring"}, {{ 0, 255, 127, 0}, "SpringGreen"}, {{124, 252, 0, 0}, "lawn"}, {{124, 252, 0, 0}, "LawnGreen"}, {{ 0, 255, 0, 0}, "green"}, {{127, 255, 0, 0}, "chartreuse"}, {{ 0, 250, 154, 0}, "medium"}, {{ 0, 250, 154, 0}, "MediumSpringGreen"}, {{173, 255, 47, 0}, "green"}, {{173, 255, 47, 0}, "GreenYellow"}, {{ 50, 205, 50, 0}, "lime"}, {{ 50, 205, 50, 0}, "LimeGreen"}, {{154, 205, 50, 0}, "yellow"}, {{154, 205, 50, 0}, "YellowGreen"}, {{ 34, 139, 34, 0}, "forest"}, {{ 34, 139, 34, 0}, "ForestGreen"}, {{107, 142, 35, 0}, "olive"}, {{107, 142, 35, 0}, "OliveDrab"}, {{189, 183, 107, 0}, "dark"}, {{189, 183, 107, 0}, "DarkKhaki"}, {{240, 230, 140, 0}, "khaki"}, {{238, 232, 170, 0}, "pale"}, {{238, 232, 170, 0}, "PaleGoldenrod"}, {{250, 250, 210, 0}, "light"}, {{250, 250, 210, 0}, "LightGoldenrodYellow"}, {{255, 255, 224, 0}, "light"}, {{255, 255, 224, 0}, "LightYellow"}, {{255, 255, 0, 0}, "yellow"}, {{255, 215, 0, 0}, "gold"}, {{238, 221, 130, 0}, "light"}, {{238, 221, 130, 0}, "LightGoldenrod"}, {{218, 165, 32, 0}, "goldenrod"}, {{184, 134, 11, 0}, "dark"}, {{184, 134, 11, 0}, "DarkGoldenrod"}, {{188, 143, 143, 0}, "rosy"}, {{188, 143, 143, 0}, "RosyBrown"}, {{205, 92, 92, 0}, "indian"}, {{205, 92, 92, 0}, "IndianRed"}, {{139, 69, 19, 0}, "saddle"}, {{139, 69, 19, 0}, "SaddleBrown"}, {{160, 82, 45, 0}, "sienna"}, {{205, 133, 63, 0}, "peru"}, {{222, 184, 135, 0}, "burlywood"}, {{245, 245, 220, 0}, "beige"}, {{245, 222, 179, 0}, "wheat"}, {{244, 164, 96, 0}, "sandy"}, {{244, 164, 96, 0}, "SandyBrown"}, {{210, 180, 140, 0}, "tan"}, {{210, 105, 30, 0}, "chocolate"}, {{178, 34, 34, 0}, "firebrick"}, {{165, 42, 42, 0}, "brown"}, {{233, 150, 122, 0}, "dark"}, {{233, 150, 122, 0}, "DarkSalmon"}, {{250, 128, 114, 0}, "salmon"}, {{255, 160, 122, 0}, "light"}, {{255, 160, 122, 0}, "LightSalmon"}, {{255, 165, 0, 0}, "orange"}, {{255, 140, 0, 0}, "dark"}, {{255, 140, 0, 0}, "DarkOrange"}, {{255, 127, 80, 0}, "coral"}, {{240, 128, 128, 0}, "light"}, {{240, 128, 128, 0}, "LightCoral"}, {{255, 99, 71, 0}, "tomato"}, {{255, 69, 0, 0}, "orange"}, {{255, 69, 0, 0}, "OrangeRed"}, {{255, 0, 0, 0}, "red"}, {{255, 105, 180, 0}, "hot"}, {{255, 105, 180, 0}, "HotPink"}, {{255, 20, 147, 0}, "deep"}, {{255, 20, 147, 0}, "DeepPink"}, {{255, 192, 203, 0}, "pink"}, {{255, 182, 193, 0}, "light"}, {{255, 182, 193, 0}, "LightPink"}, {{219, 112, 147, 0}, "pale"}, {{219, 112, 147, 0}, "PaleVioletRed"}, {{176, 48, 96, 0}, "maroon"}, {{199, 21, 133, 0}, "medium"}, {{199, 21, 133, 0}, "MediumVioletRed"}, {{208, 32, 144, 0}, "violet"}, {{208, 32, 144, 0}, "VioletRed"}, {{255, 0, 255, 0}, "magenta"}, {{238, 130, 238, 0}, "violet"}, {{221, 160, 221, 0}, "plum"}, {{218, 112, 214, 0}, "orchid"}, {{186, 85, 211, 0}, "medium"}, {{186, 85, 211, 0}, "MediumOrchid"}, {{153, 50, 204, 0}, "dark"}, {{153, 50, 204, 0}, "DarkOrchid"}, {{148, 0, 211, 0}, "dark"}, {{148, 0, 211, 0}, "DarkViolet"}, {{138, 43, 226, 0}, "blue"}, {{138, 43, 226, 0}, "BlueViolet"}, {{160, 32, 240, 0}, "purple"}, {{147, 112, 219, 0}, "medium"}, {{147, 112, 219, 0}, "MediumPurple"}, {{216, 191, 216, 0}, "thistle"}, {{255, 250, 250, 0}, "snow1"}, {{238, 233, 233, 0}, "snow2"}, {{205, 201, 201, 0}, "snow3"}, {{139, 137, 137, 0}, "snow4"}, {{255, 245, 238, 0}, "seashell1"}, {{238, 229, 222, 0}, "seashell2"}, {{205, 197, 191, 0}, "seashell3"}, {{139, 134, 130, 0}, "seashell4"}, {{255, 239, 219, 0}, "AntiqueWhite1"}, {{238, 223, 204, 0}, "AntiqueWhite2"}, {{205, 192, 176, 0}, "AntiqueWhite3"}, {{139, 131, 120, 0}, "AntiqueWhite4"}, {{255, 228, 196, 0}, "bisque1"}, {{238, 213, 183, 0}, "bisque2"}, {{205, 183, 158, 0}, "bisque3"}, {{139, 125, 107, 0}, "bisque4"}, {{255, 218, 185, 0}, "PeachPuff1"}, {{238, 203, 173, 0}, "PeachPuff2"}, {{205, 175, 149, 0}, "PeachPuff3"}, {{139, 119, 101, 0}, "PeachPuff4"}, {{255, 222, 173, 0}, "NavajoWhite1"}, {{238, 207, 161, 0}, "NavajoWhite2"}, {{205, 179, 139, 0}, "NavajoWhite3"}, {{139, 121, 94, 0}, "NavajoWhite4"}, {{255, 250, 205, 0}, "LemonChiffon1"}, {{238, 233, 191, 0}, "LemonChiffon2"}, {{205, 201, 165, 0}, "LemonChiffon3"}, {{139, 137, 112, 0}, "LemonChiffon4"}, {{255, 248, 220, 0}, "cornsilk1"}, {{238, 232, 205, 0}, "cornsilk2"}, {{205, 200, 177, 0}, "cornsilk3"}, {{139, 136, 120, 0}, "cornsilk4"}, {{255, 255, 240, 0}, "ivory1"}, {{238, 238, 224, 0}, "ivory2"}, {{205, 205, 193, 0}, "ivory3"}, {{139, 139, 131, 0}, "ivory4"}, {{240, 255, 240, 0}, "honeydew1"}, {{224, 238, 224, 0}, "honeydew2"}, {{193, 205, 193, 0}, "honeydew3"}, {{131, 139, 131, 0}, "honeydew4"}, {{255, 240, 245, 0}, "LavenderBlush1"}, {{238, 224, 229, 0}, "LavenderBlush2"}, {{205, 193, 197, 0}, "LavenderBlush3"}, {{139, 131, 134, 0}, "LavenderBlush4"}, {{255, 228, 225, 0}, "MistyRose1"}, {{238, 213, 210, 0}, "MistyRose2"}, {{205, 183, 181, 0}, "MistyRose3"}, {{139, 125, 123, 0}, "MistyRose4"}, {{240, 255, 255, 0}, "azure1"}, {{224, 238, 238, 0}, "azure2"}, {{193, 205, 205, 0}, "azure3"}, {{131, 139, 139, 0}, "azure4"}, {{131, 111, 255, 0}, "SlateBlue1"}, {{122, 103, 238, 0}, "SlateBlue2"}, {{105, 89, 205, 0}, "SlateBlue3"}, {{ 71, 60, 139, 0}, "SlateBlue4"}, {{ 72, 118, 255, 0}, "RoyalBlue1"}, {{ 67, 110, 238, 0}, "RoyalBlue2"}, {{ 58, 95, 205, 0}, "RoyalBlue3"}, {{ 39, 64, 139, 0}, "RoyalBlue4"}, {{ 0, 0, 255, 0}, "blue1"}, {{ 0, 0, 238, 0}, "blue2"}, {{ 0, 0, 205, 0}, "blue3"}, {{ 0, 0, 139, 0}, "blue4"}, {{ 30, 144, 255, 0}, "DodgerBlue1"}, {{ 28, 134, 238, 0}, "DodgerBlue2"}, {{ 24, 116, 205, 0}, "DodgerBlue3"}, {{ 16, 78, 139, 0}, "DodgerBlue4"}, {{ 99, 184, 255, 0}, "SteelBlue1"}, {{ 92, 172, 238, 0}, "SteelBlue2"}, {{ 79, 148, 205, 0}, "SteelBlue3"}, {{ 54, 100, 139, 0}, "SteelBlue4"}, {{ 0, 191, 255, 0}, "DeepSkyBlue1"}, {{ 0, 178, 238, 0}, "DeepSkyBlue2"}, {{ 0, 154, 205, 0}, "DeepSkyBlue3"}, {{ 0, 104, 139, 0}, "DeepSkyBlue4"}, {{135, 206, 255, 0}, "SkyBlue1"}, {{126, 192, 238, 0}, "SkyBlue2"}, {{108, 166, 205, 0}, "SkyBlue3"}, {{ 74, 112, 139, 0}, "SkyBlue4"}, {{176, 226, 255, 0}, "LightSkyBlue1"}, {{164, 211, 238, 0}, "LightSkyBlue2"}, {{141, 182, 205, 0}, "LightSkyBlue3"}, {{ 96, 123, 139, 0}, "LightSkyBlue4"}, {{198, 226, 255, 0}, "SlateGray1"}, {{185, 211, 238, 0}, "SlateGray2"}, {{159, 182, 205, 0}, "SlateGray3"}, {{108, 123, 139, 0}, "SlateGray4"}, {{202, 225, 255, 0}, "LightSteelBlue1"}, {{188, 210, 238, 0}, "LightSteelBlue2"}, {{162, 181, 205, 0}, "LightSteelBlue3"}, {{110, 123, 139, 0}, "LightSteelBlue4"}, {{191, 239, 255, 0}, "LightBlue1"}, {{178, 223, 238, 0}, "LightBlue2"}, {{154, 192, 205, 0}, "LightBlue3"}, {{104, 131, 139, 0}, "LightBlue4"}, {{224, 255, 255, 0}, "LightCyan1"}, {{209, 238, 238, 0}, "LightCyan2"}, {{180, 205, 205, 0}, "LightCyan3"}, {{122, 139, 139, 0}, "LightCyan4"}, {{187, 255, 255, 0}, "PaleTurquoise1"}, {{174, 238, 238, 0}, "PaleTurquoise2"}, {{150, 205, 205, 0}, "PaleTurquoise3"}, {{102, 139, 139, 0}, "PaleTurquoise4"}, {{152, 245, 255, 0}, "CadetBlue1"}, {{142, 229, 238, 0}, "CadetBlue2"}, {{122, 197, 205, 0}, "CadetBlue3"}, {{ 83, 134, 139, 0}, "CadetBlue4"}, {{ 0, 245, 255, 0}, "turquoise1"}, {{ 0, 229, 238, 0}, "turquoise2"}, {{ 0, 197, 205, 0}, "turquoise3"}, {{ 0, 134, 139, 0}, "turquoise4"}, {{ 0, 255, 255, 0}, "cyan1"}, {{ 0, 238, 238, 0}, "cyan2"}, {{ 0, 205, 205, 0}, "cyan3"}, {{ 0, 139, 139, 0}, "cyan4"}, {{151, 255, 255, 0}, "DarkSlateGray1"}, {{141, 238, 238, 0}, "DarkSlateGray2"}, {{121, 205, 205, 0}, "DarkSlateGray3"}, {{ 82, 139, 139, 0}, "DarkSlateGray4"}, {{127, 255, 212, 0}, "aquamarine1"}, {{118, 238, 198, 0}, "aquamarine2"}, {{102, 205, 170, 0}, "aquamarine3"}, {{ 69, 139, 116, 0}, "aquamarine4"}, {{193, 255, 193, 0}, "DarkSeaGreen1"}, {{180, 238, 180, 0}, "DarkSeaGreen2"}, {{155, 205, 155, 0}, "DarkSeaGreen3"}, {{105, 139, 105, 0}, "DarkSeaGreen4"}, {{ 84, 255, 159, 0}, "SeaGreen1"}, {{ 78, 238, 148, 0}, "SeaGreen2"}, {{ 67, 205, 128, 0}, "SeaGreen3"}, {{ 46, 139, 87, 0}, "SeaGreen4"}, {{154, 255, 154, 0}, "PaleGreen1"}, {{144, 238, 144, 0}, "PaleGreen2"}, {{124, 205, 124, 0}, "PaleGreen3"}, {{ 84, 139, 84, 0}, "PaleGreen4"}, {{ 0, 255, 127, 0}, "SpringGreen1"}, {{ 0, 238, 118, 0}, "SpringGreen2"}, {{ 0, 205, 102, 0}, "SpringGreen3"}, {{ 0, 139, 69, 0}, "SpringGreen4"}, {{ 0, 255, 0, 0}, "green1"}, {{ 0, 238, 0, 0}, "green2"}, {{ 0, 205, 0, 0}, "green3"}, {{ 0, 139, 0, 0}, "green4"}, {{127, 255, 0, 0}, "chartreuse1"}, {{118, 238, 0, 0}, "chartreuse2"}, {{102, 205, 0, 0}, "chartreuse3"}, {{ 69, 139, 0, 0}, "chartreuse4"}, {{192, 255, 62, 0}, "OliveDrab1"}, {{179, 238, 58, 0}, "OliveDrab2"}, {{154, 205, 50, 0}, "OliveDrab3"}, {{105, 139, 34, 0}, "OliveDrab4"}, {{202, 255, 112, 0}, "DarkOliveGreen1"}, {{188, 238, 104, 0}, "DarkOliveGreen2"}, {{162, 205, 90, 0}, "DarkOliveGreen3"}, {{110, 139, 61, 0}, "DarkOliveGreen4"}, {{255, 246, 143, 0}, "khaki1"}, {{238, 230, 133, 0}, "khaki2"}, {{205, 198, 115, 0}, "khaki3"}, {{139, 134, 78, 0}, "khaki4"}, {{255, 236, 139, 0}, "LightGoldenrod1"}, {{238, 220, 130, 0}, "LightGoldenrod2"}, {{205, 190, 112, 0}, "LightGoldenrod3"}, {{139, 129, 76, 0}, "LightGoldenrod4"}, {{255, 255, 224, 0}, "LightYellow1"}, {{238, 238, 209, 0}, "LightYellow2"}, {{205, 205, 180, 0}, "LightYellow3"}, {{139, 139, 122, 0}, "LightYellow4"}, {{255, 255, 0, 0}, "yellow1"}, {{238, 238, 0, 0}, "yellow2"}, {{205, 205, 0, 0}, "yellow3"}, {{139, 139, 0, 0}, "yellow4"}, {{255, 215, 0, 0}, "gold1"}, {{238, 201, 0, 0}, "gold2"}, {{205, 173, 0, 0}, "gold3"}, {{139, 117, 0, 0}, "gold4"}, {{255, 193, 37, 0}, "goldenrod1"}, {{238, 180, 34, 0}, "goldenrod2"}, {{205, 155, 29, 0}, "goldenrod3"}, {{139, 105, 20, 0}, "goldenrod4"}, {{255, 185, 15, 0}, "DarkGoldenrod1"}, {{238, 173, 14, 0}, "DarkGoldenrod2"}, {{205, 149, 12, 0}, "DarkGoldenrod3"}, {{139, 101, 8, 0}, "DarkGoldenrod4"}, {{255, 193, 193, 0}, "RosyBrown1"}, {{238, 180, 180, 0}, "RosyBrown2"}, {{205, 155, 155, 0}, "RosyBrown3"}, {{139, 105, 105, 0}, "RosyBrown4"}, {{255, 106, 106, 0}, "IndianRed1"}, {{238, 99, 99, 0}, "IndianRed2"}, {{205, 85, 85, 0}, "IndianRed3"}, {{139, 58, 58, 0}, "IndianRed4"}, {{255, 130, 71, 0}, "sienna1"}, {{238, 121, 66, 0}, "sienna2"}, {{205, 104, 57, 0}, "sienna3"}, {{139, 71, 38, 0}, "sienna4"}, {{255, 211, 155, 0}, "burlywood1"}, {{238, 197, 145, 0}, "burlywood2"}, {{205, 170, 125, 0}, "burlywood3"}, {{139, 115, 85, 0}, "burlywood4"}, {{255, 231, 186, 0}, "wheat1"}, {{238, 216, 174, 0}, "wheat2"}, {{205, 186, 150, 0}, "wheat3"}, {{139, 126, 102, 0}, "wheat4"}, {{255, 165, 79, 0}, "tan1"}, {{238, 154, 73, 0}, "tan2"}, {{205, 133, 63, 0}, "tan3"}, {{139, 90, 43, 0}, "tan4"}, {{255, 127, 36, 0}, "chocolate1"}, {{238, 118, 33, 0}, "chocolate2"}, {{205, 102, 29, 0}, "chocolate3"}, {{139, 69, 19, 0}, "chocolate4"}, {{255, 48, 48, 0}, "firebrick1"}, {{238, 44, 44, 0}, "firebrick2"}, {{205, 38, 38, 0}, "firebrick3"}, {{139, 26, 26, 0}, "firebrick4"}, {{255, 64, 64, 0}, "brown1"}, {{238, 59, 59, 0}, "brown2"}, {{205, 51, 51, 0}, "brown3"}, {{139, 35, 35, 0}, "brown4"}, {{255, 140, 105, 0}, "salmon1"}, {{238, 130, 98, 0}, "salmon2"}, {{205, 112, 84, 0}, "salmon3"}, {{139, 76, 57, 0}, "salmon4"}, {{255, 160, 122, 0}, "LightSalmon1"}, {{238, 149, 114, 0}, "LightSalmon2"}, {{205, 129, 98, 0}, "LightSalmon3"}, {{139, 87, 66, 0}, "LightSalmon4"}, {{255, 165, 0, 0}, "orange1"}, {{238, 154, 0, 0}, "orange2"}, {{205, 133, 0, 0}, "orange3"}, {{139, 90, 0, 0}, "orange4"}, {{255, 127, 0, 0}, "DarkOrange1"}, {{238, 118, 0, 0}, "DarkOrange2"}, {{205, 102, 0, 0}, "DarkOrange3"}, {{139, 69, 0, 0}, "DarkOrange4"}, {{255, 114, 86, 0}, "coral1"}, {{238, 106, 80, 0}, "coral2"}, {{205, 91, 69, 0}, "coral3"}, {{139, 62, 47, 0}, "coral4"}, {{255, 99, 71, 0}, "tomato1"}, {{238, 92, 66, 0}, "tomato2"}, {{205, 79, 57, 0}, "tomato3"}, {{139, 54, 38, 0}, "tomato4"}, {{255, 69, 0, 0}, "OrangeRed1"}, {{238, 64, 0, 0}, "OrangeRed2"}, {{205, 55, 0, 0}, "OrangeRed3"}, {{139, 37, 0, 0}, "OrangeRed4"}, {{255, 0, 0, 0}, "red1"}, {{238, 0, 0, 0}, "red2"}, {{205, 0, 0, 0}, "red3"}, {{139, 0, 0, 0}, "red4"}, {{255, 20, 147, 0}, "DeepPink1"}, {{238, 18, 137, 0}, "DeepPink2"}, {{205, 16, 118, 0}, "DeepPink3"}, {{139, 10, 80, 0}, "DeepPink4"}, {{255, 110, 180, 0}, "HotPink1"}, {{238, 106, 167, 0}, "HotPink2"}, {{205, 96, 144, 0}, "HotPink3"}, {{139, 58, 98, 0}, "HotPink4"}, {{255, 181, 197, 0}, "pink1"}, {{238, 169, 184, 0}, "pink2"}, {{205, 145, 158, 0}, "pink3"}, {{139, 99, 108, 0}, "pink4"}, {{255, 174, 185, 0}, "LightPink1"}, {{238, 162, 173, 0}, "LightPink2"}, {{205, 140, 149, 0}, "LightPink3"}, {{139, 95, 101, 0}, "LightPink4"}, {{255, 130, 171, 0}, "PaleVioletRed1"}, {{238, 121, 159, 0}, "PaleVioletRed2"}, {{205, 104, 137, 0}, "PaleVioletRed3"}, {{139, 71, 93, 0}, "PaleVioletRed4"}, {{255, 52, 179, 0}, "maroon1"}, {{238, 48, 167, 0}, "maroon2"}, {{205, 41, 144, 0}, "maroon3"}, {{139, 28, 98, 0}, "maroon4"}, {{255, 62, 150, 0}, "VioletRed1"}, {{238, 58, 140, 0}, "VioletRed2"}, {{205, 50, 120, 0}, "VioletRed3"}, {{139, 34, 82, 0}, "VioletRed4"}, {{255, 0, 255, 0}, "magenta1"}, {{238, 0, 238, 0}, "magenta2"}, {{205, 0, 205, 0}, "magenta3"}, {{139, 0, 139, 0}, "magenta4"}, {{255, 131, 250, 0}, "orchid1"}, {{238, 122, 233, 0}, "orchid2"}, {{205, 105, 201, 0}, "orchid3"}, {{139, 71, 137, 0}, "orchid4"}, {{255, 187, 255, 0}, "plum1"}, {{238, 174, 238, 0}, "plum2"}, {{205, 150, 205, 0}, "plum3"}, {{139, 102, 139, 0}, "plum4"}, {{224, 102, 255, 0}, "MediumOrchid1"}, {{209, 95, 238, 0}, "MediumOrchid2"}, {{180, 82, 205, 0}, "MediumOrchid3"}, {{122, 55, 139, 0}, "MediumOrchid4"}, {{191, 62, 255, 0}, "DarkOrchid1"}, {{178, 58, 238, 0}, "DarkOrchid2"}, {{154, 50, 205, 0}, "DarkOrchid3"}, {{104, 34, 139, 0}, "DarkOrchid4"}, {{155, 48, 255, 0}, "purple1"}, {{145, 44, 238, 0}, "purple2"}, {{125, 38, 205, 0}, "purple3"}, {{ 85, 26, 139, 0}, "purple4"}, {{171, 130, 255, 0}, "MediumPurple1"}, {{159, 121, 238, 0}, "MediumPurple2"}, {{137, 104, 205, 0}, "MediumPurple3"}, {{ 93, 71, 139, 0}, "MediumPurple4"}, {{255, 225, 255, 0}, "thistle1"}, {{238, 210, 238, 0}, "thistle2"}, {{205, 181, 205, 0}, "thistle3"}, {{139, 123, 139, 0}, "thistle4"}, {{ 0, 0, 0, 0}, "gray0"}, {{ 0, 0, 0, 0}, "grey0"}, {{ 3, 3, 3, 0}, "gray1"}, {{ 3, 3, 3, 0}, "grey1"}, {{ 5, 5, 5, 0}, "gray2"}, {{ 5, 5, 5, 0}, "grey2"}, {{ 8, 8, 8, 0}, "gray3"}, {{ 8, 8, 8, 0}, "grey3"}, {{ 10, 10, 10, 0}, "gray4"}, {{ 10, 10, 10, 0}, "grey4"}, {{ 13, 13, 13, 0}, "gray5"}, {{ 13, 13, 13, 0}, "grey5"}, {{ 15, 15, 15, 0}, "gray6"}, {{ 15, 15, 15, 0}, "grey6"}, {{ 18, 18, 18, 0}, "gray7"}, {{ 18, 18, 18, 0}, "grey7"}, {{ 20, 20, 20, 0}, "gray8"}, {{ 20, 20, 20, 0}, "grey8"}, {{ 23, 23, 23, 0}, "gray9"}, {{ 23, 23, 23, 0}, "grey9"}, {{ 26, 26, 26, 0}, "gray10"}, {{ 26, 26, 26, 0}, "grey10"}, {{ 28, 28, 28, 0}, "gray11"}, {{ 28, 28, 28, 0}, "grey11"}, {{ 31, 31, 31, 0}, "gray12"}, {{ 31, 31, 31, 0}, "grey12"}, {{ 33, 33, 33, 0}, "gray13"}, {{ 33, 33, 33, 0}, "grey13"}, {{ 36, 36, 36, 0}, "gray14"}, {{ 36, 36, 36, 0}, "grey14"}, {{ 38, 38, 38, 0}, "gray15"}, {{ 38, 38, 38, 0}, "grey15"}, {{ 41, 41, 41, 0}, "gray16"}, {{ 41, 41, 41, 0}, "grey16"}, {{ 43, 43, 43, 0}, "gray17"}, {{ 43, 43, 43, 0}, "grey17"}, {{ 46, 46, 46, 0}, "gray18"}, {{ 46, 46, 46, 0}, "grey18"}, {{ 48, 48, 48, 0}, "gray19"}, {{ 48, 48, 48, 0}, "grey19"}, {{ 51, 51, 51, 0}, "gray20"}, {{ 51, 51, 51, 0}, "grey20"}, {{ 54, 54, 54, 0}, "gray21"}, {{ 54, 54, 54, 0}, "grey21"}, {{ 56, 56, 56, 0}, "gray22"}, {{ 56, 56, 56, 0}, "grey22"}, {{ 59, 59, 59, 0}, "gray23"}, {{ 59, 59, 59, 0}, "grey23"}, {{ 61, 61, 61, 0}, "gray24"}, {{ 61, 61, 61, 0}, "grey24"}, {{ 64, 64, 64, 0}, "gray25"}, {{ 64, 64, 64, 0}, "grey25"}, {{ 66, 66, 66, 0}, "gray26"}, {{ 66, 66, 66, 0}, "grey26"}, {{ 69, 69, 69, 0}, "gray27"}, {{ 69, 69, 69, 0}, "grey27"}, {{ 71, 71, 71, 0}, "gray28"}, {{ 71, 71, 71, 0}, "grey28"}, {{ 74, 74, 74, 0}, "gray29"}, {{ 74, 74, 74, 0}, "grey29"}, {{ 77, 77, 77, 0}, "gray30"}, {{ 77, 77, 77, 0}, "grey30"}, {{ 79, 79, 79, 0}, "gray31"}, {{ 79, 79, 79, 0}, "grey31"}, {{ 82, 82, 82, 0}, "gray32"}, {{ 82, 82, 82, 0}, "grey32"}, {{ 84, 84, 84, 0}, "gray33"}, {{ 84, 84, 84, 0}, "grey33"}, {{ 87, 87, 87, 0}, "gray34"}, {{ 87, 87, 87, 0}, "grey34"}, {{ 89, 89, 89, 0}, "gray35"}, {{ 89, 89, 89, 0}, "grey35"}, {{ 92, 92, 92, 0}, "gray36"}, {{ 92, 92, 92, 0}, "grey36"}, {{ 94, 94, 94, 0}, "gray37"}, {{ 94, 94, 94, 0}, "grey37"}, {{ 97, 97, 97, 0}, "gray38"}, {{ 97, 97, 97, 0}, "grey38"}, {{ 99, 99, 99, 0}, "gray39"}, {{ 99, 99, 99, 0}, "grey39"}, {{102, 102, 102, 0}, "gray40"}, {{102, 102, 102, 0}, "grey40"}, {{105, 105, 105, 0}, "gray41"}, {{105, 105, 105, 0}, "grey41"}, {{107, 107, 107, 0}, "gray42"}, {{107, 107, 107, 0}, "grey42"}, {{110, 110, 110, 0}, "gray43"}, {{110, 110, 110, 0}, "grey43"}, {{112, 112, 112, 0}, "gray44"}, {{112, 112, 112, 0}, "grey44"}, {{115, 115, 115, 0}, "gray45"}, {{115, 115, 115, 0}, "grey45"}, {{117, 117, 117, 0}, "gray46"}, {{117, 117, 117, 0}, "grey46"}, {{120, 120, 120, 0}, "gray47"}, {{120, 120, 120, 0}, "grey47"}, {{122, 122, 122, 0}, "gray48"}, {{122, 122, 122, 0}, "grey48"}, {{125, 125, 125, 0}, "gray49"}, {{125, 125, 125, 0}, "grey49"}, {{127, 127, 127, 0}, "gray50"}, {{127, 127, 127, 0}, "grey50"}, {{130, 130, 130, 0}, "gray51"}, {{130, 130, 130, 0}, "grey51"}, {{133, 133, 133, 0}, "gray52"}, {{133, 133, 133, 0}, "grey52"}, {{135, 135, 135, 0}, "gray53"}, {{135, 135, 135, 0}, "grey53"}, {{138, 138, 138, 0}, "gray54"}, {{138, 138, 138, 0}, "grey54"}, {{140, 140, 140, 0}, "gray55"}, {{140, 140, 140, 0}, "grey55"}, {{143, 143, 143, 0}, "gray56"}, {{143, 143, 143, 0}, "grey56"}, {{145, 145, 145, 0}, "gray57"}, {{145, 145, 145, 0}, "grey57"}, {{148, 148, 148, 0}, "gray58"}, {{148, 148, 148, 0}, "grey58"}, {{150, 150, 150, 0}, "gray59"}, {{150, 150, 150, 0}, "grey59"}, {{153, 153, 153, 0}, "gray60"}, {{153, 153, 153, 0}, "grey60"}, {{156, 156, 156, 0}, "gray61"}, {{156, 156, 156, 0}, "grey61"}, {{158, 158, 158, 0}, "gray62"}, {{158, 158, 158, 0}, "grey62"}, {{161, 161, 161, 0}, "gray63"}, {{161, 161, 161, 0}, "grey63"}, {{163, 163, 163, 0}, "gray64"}, {{163, 163, 163, 0}, "grey64"}, {{166, 166, 166, 0}, "gray65"}, {{166, 166, 166, 0}, "grey65"}, {{168, 168, 168, 0}, "gray66"}, {{168, 168, 168, 0}, "grey66"}, {{171, 171, 171, 0}, "gray67"}, {{171, 171, 171, 0}, "grey67"}, {{173, 173, 173, 0}, "gray68"}, {{173, 173, 173, 0}, "grey68"}, {{176, 176, 176, 0}, "gray69"}, {{176, 176, 176, 0}, "grey69"}, {{179, 179, 179, 0}, "gray70"}, {{179, 179, 179, 0}, "grey70"}, {{181, 181, 181, 0}, "gray71"}, {{181, 181, 181, 0}, "grey71"}, {{184, 184, 184, 0}, "gray72"}, {{184, 184, 184, 0}, "grey72"}, {{186, 186, 186, 0}, "gray73"}, {{186, 186, 186, 0}, "grey73"}, {{189, 189, 189, 0}, "gray74"}, {{189, 189, 189, 0}, "grey74"}, {{191, 191, 191, 0}, "gray75"}, {{191, 191, 191, 0}, "grey75"}, {{194, 194, 194, 0}, "gray76"}, {{194, 194, 194, 0}, "grey76"}, {{196, 196, 196, 0}, "gray77"}, {{196, 196, 196, 0}, "grey77"}, {{199, 199, 199, 0}, "gray78"}, {{199, 199, 199, 0}, "grey78"}, {{201, 201, 201, 0}, "gray79"}, {{201, 201, 201, 0}, "grey79"}, {{204, 204, 204, 0}, "gray80"}, {{204, 204, 204, 0}, "grey80"}, {{207, 207, 207, 0}, "gray81"}, {{207, 207, 207, 0}, "grey81"}, {{209, 209, 209, 0}, "gray82"}, {{209, 209, 209, 0}, "grey82"}, {{212, 212, 212, 0}, "gray83"}, {{212, 212, 212, 0}, "grey83"}, {{214, 214, 214, 0}, "gray84"}, {{214, 214, 214, 0}, "grey84"}, {{217, 217, 217, 0}, "gray85"}, {{217, 217, 217, 0}, "grey85"}, {{219, 219, 219, 0}, "gray86"}, {{219, 219, 219, 0}, "grey86"}, {{222, 222, 222, 0}, "gray87"}, {{222, 222, 222, 0}, "grey87"}, {{224, 224, 224, 0}, "gray88"}, {{224, 224, 224, 0}, "grey88"}, {{227, 227, 227, 0}, "gray89"}, {{227, 227, 227, 0}, "grey89"}, {{229, 229, 229, 0}, "gray90"}, {{229, 229, 229, 0}, "grey90"}, {{232, 232, 232, 0}, "gray91"}, {{232, 232, 232, 0}, "grey91"}, {{235, 235, 235, 0}, "gray92"}, {{235, 235, 235, 0}, "grey92"}, {{237, 237, 237, 0}, "gray93"}, {{237, 237, 237, 0}, "grey93"}, {{240, 240, 240, 0}, "gray94"}, {{240, 240, 240, 0}, "grey94"}, {{242, 242, 242, 0}, "gray95"}, {{242, 242, 242, 0}, "grey95"}, {{245, 245, 245, 0}, "gray96"}, {{245, 245, 245, 0}, "grey96"}, {{247, 247, 247, 0}, "gray97"}, {{247, 247, 247, 0}, "grey97"}, {{250, 250, 250, 0}, "gray98"}, {{250, 250, 250, 0}, "grey98"}, {{252, 252, 252, 0}, "gray99"}, {{252, 252, 252, 0}, "grey99"}, {{255, 255, 255, 0}, "gray100"}, {{255, 255, 255, 0}, "grey100"}, {{169, 169, 169, 0}, "dark"}, {{169, 169, 169, 0}, "DarkGrey"}, {{169, 169, 169, 0}, "dark"}, {{169, 169, 169, 0}, "DarkGray"}, {{ 0, 0, 139, 0}, "dark"}, {{ 0, 0, 139, 0}, "DarkBlue"}, {{ 0, 139, 139, 0}, "dark"}, {{ 0, 139, 139, 0}, "DarkCyan"}, {{139, 0, 139, 0}, "dark"}, {{139, 0, 139, 0}, "DarkMagenta"}, {{139, 0, 0, 0}, "dark"}, {{139, 0, 0, 0}, "DarkRed"}, {{144, 238, 144, 0}, "light"}, {{144, 238, 144, 0}, "LightGreen"}, {{ 0, 0, 0, 0}, NULL} }; #endif ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/dragdestination.c����������������������������������������������������������0000644�0001750�0001750�00000067372�13431646201�015257� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include "WINGsP.h" #include <X11/Xatom.h> #define XDND_SOURCE_RESPONSE_MAX_DELAY 3000 #define XDND_PROPERTY_FORMAT 32 #define XDND_ACTION_DESCRIPTION_FORMAT 8 #define XDND_SOURCE_VERSION(dragInfo) dragInfo->protocolVersion #define XDND_DEST_INFO(dragInfo) dragInfo->destInfo #define XDND_AWARE_VIEW(dragInfo) dragInfo->destInfo->xdndAwareView #define XDND_SOURCE_WIN(dragInfo) dragInfo->destInfo->sourceWindow #define XDND_DEST_VIEW(dragInfo) dragInfo->destInfo->destView #define XDND_DEST_STATE(dragInfo) dragInfo->destInfo->state #define XDND_SOURCE_ACTION_CHANGED(dragInfo) dragInfo->destInfo->sourceActionChanged #define XDND_SOURCE_TYPES(dragInfo) dragInfo->destInfo->sourceTypes #define XDND_TYPE_LIST_AVAILABLE(dragInfo) dragInfo->destInfo->typeListAvailable #define XDND_REQUIRED_TYPES(dragInfo) dragInfo->destInfo->requiredTypes #define XDND_SOURCE_ACTION(dragInfo) dragInfo->sourceAction #define XDND_DEST_ACTION(dragInfo) dragInfo->destinationAction #define XDND_DROP_DATAS(dragInfo) dragInfo->destInfo->dropDatas #define XDND_DEST_VIEW_IS_REGISTERED(dragInfo) ((dragInfo->destInfo) != NULL)\ && ((dragInfo->destInfo->destView->dragDestinationProcs) != NULL) static const unsigned char XDNDversion = XDND_VERSION; static WMHandlerID dndDestinationTimer = NULL; static void *idleState(WMView * destView, XClientMessageEvent * event, WMDraggingInfo * info); static void *waitEnterState(WMView * destView, XClientMessageEvent * event, WMDraggingInfo * info); static void *inspectDropDataState(WMView * destView, XClientMessageEvent * event, WMDraggingInfo * info); static void *dropAllowedState(WMView * destView, XClientMessageEvent * event, WMDraggingInfo * info); static void *dropNotAllowedState(WMView * destView, XClientMessageEvent * event, WMDraggingInfo * info); static void *waitForDropDataState(WMView * destView, XClientMessageEvent * event, WMDraggingInfo * info); /* ----- Types & datas list ----- */ static void freeSourceTypeArrayItem(void *type) { XFree(type); } static WMArray *createSourceTypeArray(int initialSize) { return WMCreateArrayWithDestructor(initialSize, freeSourceTypeArrayItem); } static void freeDropDataArrayItem(void *data) { if (data != NULL) WMReleaseData((WMData *) data); } static WMArray *createDropDataArray(WMArray * requiredTypes) { if (requiredTypes != NULL) return WMCreateArrayWithDestructor(WMGetArrayItemCount(requiredTypes), freeDropDataArrayItem); else return WMCreateArray(0); } static WMArray *getTypesFromTypeList(WMScreen * scr, Window sourceWin) { Atom dataType; Atom *typeAtomList; WMArray *typeList; int i, format; unsigned long count, remaining; unsigned char *data = NULL; XGetWindowProperty(scr->display, sourceWin, scr->xdndTypeListAtom, 0, 0x8000000L, False, XA_ATOM, &dataType, &format, &count, &remaining, &data); if (dataType != XA_ATOM || format != XDND_PROPERTY_FORMAT || count == 0 || !data) { if (data) { XFree(data); } return createSourceTypeArray(0); } typeList = createSourceTypeArray(count); typeAtomList = (Atom *) data; for (i = 0; i < count; i++) { WMAddToArray(typeList, XGetAtomName(scr->display, typeAtomList[i])); } XFree(data); return typeList; } static WMArray *getTypesFromThreeTypes(WMScreen * scr, XClientMessageEvent * event) { WMArray *typeList; Atom atom; int i; typeList = createSourceTypeArray(3); for (i = 2; i < 5; i++) { if (event->data.l[i] != None) { atom = (Atom) event->data.l[i]; WMAddToArray(typeList, XGetAtomName(scr->display, atom)); } } return typeList; } static void storeRequiredTypeList(WMDraggingInfo * info) { WMView *destView = XDND_DEST_VIEW(info); WMScreen *scr = W_VIEW_SCREEN(destView); WMArray *requiredTypes; /* First, see if the stored source types are enough for dest requirements */ requiredTypes = destView->dragDestinationProcs->requiredDataTypes(destView, W_ActionToOperation(scr, XDND_SOURCE_ACTION (info)), XDND_SOURCE_TYPES(info)); if (requiredTypes == NULL && XDND_TYPE_LIST_AVAILABLE(info)) { /* None of the stored source types fits, but the whole type list hasn't been retrieved yet. */ WMFreeArray(XDND_SOURCE_TYPES(info)); XDND_SOURCE_TYPES(info) = getTypesFromTypeList(scr, XDND_SOURCE_WIN(info)); /* Don't retrieve the type list again */ XDND_TYPE_LIST_AVAILABLE(info) = False; requiredTypes = destView->dragDestinationProcs->requiredDataTypes(destView, W_ActionToOperation(scr, XDND_SOURCE_ACTION (info)), XDND_SOURCE_TYPES(info)); } XDND_REQUIRED_TYPES(info) = requiredTypes; } static char *getNextRequestedDataType(WMDraggingInfo * info) { /* get the type of the first data not yet retrieved from selection */ int nextTypeIndex; if (XDND_REQUIRED_TYPES(info) != NULL) { nextTypeIndex = WMGetArrayItemCount(XDND_DROP_DATAS(info)); return WMGetFromArray(XDND_REQUIRED_TYPES(info), nextTypeIndex); /* NULL if no more type */ } else return NULL; } /* ----- Action list ----- */ static WMArray *sourceOperationList(WMScreen * scr, Window sourceWin) { Atom dataType, *actionList; int i, size; unsigned long count, remaining; unsigned char *actionDatas = NULL; unsigned char *descriptionList = NULL; WMArray *operationArray; WMDragOperationItem *operationItem; char *description; remaining = 0; XGetWindowProperty(scr->display, sourceWin, scr->xdndActionListAtom, 0, 0x8000000L, False, XA_ATOM, &dataType, &size, &count, &remaining, &actionDatas); if (dataType != XA_ATOM || size != XDND_PROPERTY_FORMAT || count == 0 || !actionDatas) { wwarning("Cannot read action list"); if (actionDatas) { XFree(actionDatas); } return NULL; } actionList = (Atom *) actionDatas; XGetWindowProperty(scr->display, sourceWin, scr->xdndActionDescriptionAtom, 0, 0x8000000L, False, XA_STRING, &dataType, &size, &count, &remaining, &descriptionList); if (dataType != XA_STRING || size != XDND_ACTION_DESCRIPTION_FORMAT || count == 0 || !descriptionList) { wwarning("Cannot read action description list"); if (actionList) { XFree(actionList); } if (descriptionList) { XFree(descriptionList); } return NULL; } operationArray = WMCreateDragOperationArray(count); description = (char *)descriptionList; for (i = 0; count > 0; i++) { size = strlen(description); operationItem = WMCreateDragOperationItem(W_ActionToOperation(scr, actionList[i]), wstrdup(description)); WMAddToArray(operationArray, operationItem); count -= (size + 1); /* -1 : -NULL char */ /* next description */ description = &(description[size + 1]); } XFree(actionList); XFree(descriptionList); return operationArray; } /* ----- Dragging Info ----- */ static void updateSourceWindow(WMDraggingInfo * info, XClientMessageEvent * event) { XDND_SOURCE_WIN(info) = (Window) event->data.l[0]; } static WMView *findChildInView(WMView * parent, int x, int y) { if (parent->childrenList == NULL) return parent; else { WMView *child = parent->childrenList; while (child != NULL && (!child->flags.mapped || x < WMGetViewPosition(child).x || x > WMGetViewPosition(child).x + WMGetViewSize(child).width || y < WMGetViewPosition(child).y || y > WMGetViewPosition(child).y + WMGetViewSize(child).height)) child = child->nextSister; if (child == NULL) return parent; else return findChildInView(child, x - WMGetViewPosition(child).x, y - WMGetViewPosition(child).y); } } static WMView *findDestinationViewInToplevel(WMView * toplevel, int x, int y) { WMScreen *scr = W_VIEW_SCREEN(toplevel); Window toplevelWin = WMViewXID(toplevel); int xInToplevel, yInToplevel; Window foo; XTranslateCoordinates(scr->display, scr->rootWin, toplevelWin, x, y, &xInToplevel, &yInToplevel, &foo); return findChildInView(toplevel, xInToplevel, yInToplevel); } /* Clear datas only used by current destination view */ static void freeDestinationViewInfos(WMDraggingInfo * info) { if (XDND_SOURCE_TYPES(info) != NULL) { WMFreeArray(XDND_SOURCE_TYPES(info)); XDND_SOURCE_TYPES(info) = NULL; } if (XDND_DROP_DATAS(info) != NULL) { WMFreeArray(XDND_DROP_DATAS(info)); XDND_DROP_DATAS(info) = NULL; } XDND_REQUIRED_TYPES(info) = NULL; } void W_DragDestinationInfoClear(WMDraggingInfo * info) { W_DragDestinationStopTimer(); if (XDND_DEST_INFO(info) != NULL) { freeDestinationViewInfos(info); wfree(XDND_DEST_INFO(info)); XDND_DEST_INFO(info) = NULL; } } static void initDestinationDragInfo(WMDraggingInfo * info, WMView * destView) { wassertr(destView != NULL); XDND_DEST_INFO(info) = (W_DragDestinationInfo *) wmalloc(sizeof(W_DragDestinationInfo)); XDND_DEST_STATE(info) = idleState; XDND_DEST_VIEW(info) = destView; XDND_SOURCE_ACTION_CHANGED(info) = False; XDND_SOURCE_TYPES(info) = NULL; XDND_REQUIRED_TYPES(info) = NULL; XDND_DROP_DATAS(info) = NULL; } void W_DragDestinationStoreEnterMsgInfo(WMDraggingInfo * info, WMView * toplevel, XClientMessageEvent * event) { WMScreen *scr = W_VIEW_SCREEN(toplevel); if (XDND_DEST_INFO(info) == NULL) initDestinationDragInfo(info, toplevel); XDND_SOURCE_VERSION(info) = (event->data.l[1] >> 24); XDND_AWARE_VIEW(info) = toplevel; updateSourceWindow(info, event); #if 0 if (event->data.l[1] & 1) /* XdndTypeList property is available */ XDND_SOURCE_TYPES(info) = getTypesFromTypeList(scr, XDND_SOURCE_WIN(info)); else XDND_SOURCE_TYPES(info) = getTypesFromThreeTypes(scr, event); #endif XDND_SOURCE_TYPES(info) = getTypesFromThreeTypes(scr, event); /* to use if the 3 types are not enough */ XDND_TYPE_LIST_AVAILABLE(info) = (event->data.l[1] & 1); } void W_DragDestinationStorePositionMsgInfo(WMDraggingInfo * info, WMView * toplevel, XClientMessageEvent * event) { int x = event->data.l[2] >> 16; int y = event->data.l[2] & 0xffff; WMView *newDestView; newDestView = findDestinationViewInToplevel(toplevel, x, y); if (XDND_DEST_INFO(info) == NULL) { initDestinationDragInfo(info, newDestView); XDND_AWARE_VIEW(info) = toplevel; updateSourceWindow(info, event); } else { if (newDestView != XDND_DEST_VIEW(info)) { updateSourceWindow(info, event); XDND_DEST_VIEW(info) = newDestView; XDND_SOURCE_ACTION_CHANGED(info) = False; if (XDND_DEST_STATE(info) != waitEnterState) XDND_DEST_STATE(info) = idleState; } else { XDND_SOURCE_ACTION_CHANGED(info) = (XDND_SOURCE_ACTION(info) != event->data.l[4]); } } XDND_SOURCE_ACTION(info) = event->data.l[4]; /* note: source position is not stored */ } /* ----- End of Dragging Info ----- */ /* ----- Messages ----- */ /* send a DnD message to the source window */ static void sendDnDClientMessage(WMDraggingInfo * info, Atom message, unsigned long data1, unsigned long data2, unsigned long data3, unsigned long data4) { if (!W_SendDnDClientMessage(W_VIEW_SCREEN(XDND_AWARE_VIEW(info))->display, XDND_SOURCE_WIN(info), message, WMViewXID(XDND_AWARE_VIEW(info)), data1, data2, data3, data4)) { /* drop failed */ W_DragDestinationInfoClear(info); } } /* send a xdndStatus message to the source, with position and size of the destination if it has no subwidget (requesting a position message on every move otherwise) */ static void sendStatusMessage(WMView * destView, WMDraggingInfo * info, Atom action) { unsigned long data1; data1 = (action == None) ? 0 : 1; if (destView->childrenList == NULL) { WMScreen *scr = W_VIEW_SCREEN(destView); int destX, destY; WMSize destSize = WMGetViewSize(destView); Window foo; XTranslateCoordinates(scr->display, WMViewXID(destView), scr->rootWin, 0, 0, &destX, &destY, &foo); sendDnDClientMessage(info, W_VIEW_SCREEN(destView)->xdndStatusAtom, data1, (destX << 16) | destY, (destSize.width << 16) | destSize.height, action); } else { /* set bit 1 to request explicitly position message on every move */ data1 = data1 | 2; sendDnDClientMessage(info, W_VIEW_SCREEN(destView)->xdndStatusAtom, data1, 0, 0, action); } } static void storeDropData(WMView * destView, Atom selection, Atom target, Time timestamp, void *cdata, WMData * data) { WMScreen *scr = W_VIEW_SCREEN(destView); WMDraggingInfo *info = &(scr->dragInfo); WMData *dataToStore = NULL; /* Parameter not used, but tell the compiler that it is ok */ (void) selection; (void) target; (void) timestamp; (void) cdata; if (data != NULL) dataToStore = WMRetainData(data); if (XDND_DEST_INFO(info) != NULL && XDND_DROP_DATAS(info) != NULL) { WMAddToArray(XDND_DROP_DATAS(info), dataToStore); W_SendDnDClientMessage(scr->display, WMViewXID(destView), scr->xdndSelectionAtom, WMViewXID(destView), 0, 0, 0, 0); } } static Bool requestDropDataInSelection(WMView * destView, const char *type) { WMScreen *scr = W_VIEW_SCREEN(destView); if (type != NULL) { if (!WMRequestSelection(destView, scr->xdndSelectionAtom, XInternAtom(scr->display, type, False), CurrentTime, storeDropData, NULL)) { wwarning("could not request data for dropped data"); return False; } return True; } return False; } static Bool requestDropData(WMDraggingInfo * info) { WMView *destView = XDND_DEST_VIEW(info); char *nextType = getNextRequestedDataType(info); while ((nextType != NULL) && (!requestDropDataInSelection(destView, nextType))) { /* store NULL if request failed, and try with next type */ WMAddToArray(XDND_DROP_DATAS(info), NULL); nextType = getNextRequestedDataType(info); } /* remains types to retrieve ? */ return (nextType != NULL); } static void concludeDrop(WMView * destView) { destView->dragDestinationProcs->concludeDragOperation(destView); } /* send cancel message to the source */ static void cancelDrop(WMView * destView, WMDraggingInfo * info) { sendStatusMessage(destView, info, None); concludeDrop(destView); freeDestinationViewInfos(info); } /* suspend drop, when dragged icon enter an unregistered view or a register view that doesn't accept the drop */ static void suspendDropAuthorization(WMView * destView, WMDraggingInfo * info) { sendStatusMessage(destView, info, None); /* Free datas that depend on destination behaviour */ if (XDND_DROP_DATAS(info) != NULL) { WMFreeArray(XDND_DROP_DATAS(info)); XDND_DROP_DATAS(info) = NULL; } XDND_REQUIRED_TYPES(info) = NULL; } /* cancel drop on Enter message, if protocol version is nok */ void W_DragDestinationCancelDropOnEnter(WMView * toplevel, WMDraggingInfo * info) { if (XDND_DEST_VIEW_IS_REGISTERED(info)) cancelDrop(XDND_DEST_VIEW(info), info); else sendStatusMessage(toplevel, info, None); W_DragDestinationInfoClear(info); } static void finishDrop(WMView * destView, WMDraggingInfo * info) { sendDnDClientMessage(info, W_VIEW_SCREEN(destView)->xdndFinishedAtom, 0, 0, 0, 0); concludeDrop(destView); W_DragDestinationInfoClear(info); } static Atom getAllowedAction(WMView * destView, WMDraggingInfo * info) { WMScreen *scr = W_VIEW_SCREEN(destView); return W_OperationToAction(scr, destView->dragDestinationProcs->allowedOperation(destView, W_ActionToOperation(scr, XDND_SOURCE_ACTION (info)), XDND_SOURCE_TYPES(info))); } static void *checkActionAllowed(WMView * destView, WMDraggingInfo * info) { XDND_DEST_ACTION(info) = getAllowedAction(destView, info); if (XDND_DEST_ACTION(info) == None) { suspendDropAuthorization(destView, info); return dropNotAllowedState; } sendStatusMessage(destView, info, XDND_DEST_ACTION(info)); return dropAllowedState; } static void *checkDropAllowed(WMView *destView, WMDraggingInfo *info) { storeRequiredTypeList(info); if (destView->dragDestinationProcs->inspectDropData != NULL) { XDND_DROP_DATAS(info) = createDropDataArray(XDND_REQUIRED_TYPES(info)); /* store first available data */ if (requestDropData(info)) return inspectDropDataState; /* no data retrieved, but inspect can allow it */ if (destView->dragDestinationProcs->inspectDropData(destView, XDND_DROP_DATAS(info))) return checkActionAllowed(destView, info); suspendDropAuthorization(destView, info); return dropNotAllowedState; } return checkActionAllowed(destView, info); } static WMPoint *getDropLocationInView(WMView * view) { Window rootWin, childWin; int rootX, rootY; unsigned int mask; WMPoint *location; location = (WMPoint *) wmalloc(sizeof(WMPoint)); XQueryPointer(W_VIEW_SCREEN(view)->display, WMViewXID(view), &rootWin, &childWin, &rootX, &rootY, &(location->x), &(location->y), &mask); return location; } static void callPerformDragOperation(WMView * destView, WMDraggingInfo * info) { WMArray *operationList = NULL; WMScreen *scr = W_VIEW_SCREEN(destView); WMPoint *dropLocation; if (XDND_SOURCE_ACTION(info) == scr->xdndActionAsk) operationList = sourceOperationList(scr, XDND_SOURCE_WIN(info)); dropLocation = getDropLocationInView(destView); destView->dragDestinationProcs->performDragOperation(destView, XDND_DROP_DATAS(info), operationList, dropLocation); wfree(dropLocation); if (operationList != NULL) WMFreeArray(operationList); } /* ----- Destination timer ----- */ static void dragSourceResponseTimeOut(void *destView) { WMView *view = (WMView *) destView; WMDraggingInfo *info; wwarning("delay for drag source response expired"); info = &(W_VIEW_SCREEN(view)->dragInfo); if (XDND_DEST_VIEW_IS_REGISTERED(info)) cancelDrop(view, info); else { sendStatusMessage(view, info, None); } W_DragDestinationInfoClear(info); } void W_DragDestinationStopTimer() { if (dndDestinationTimer != NULL) { WMDeleteTimerHandler(dndDestinationTimer); dndDestinationTimer = NULL; } } void W_DragDestinationStartTimer(WMDraggingInfo * info) { W_DragDestinationStopTimer(); if (XDND_DEST_STATE(info) != idleState) dndDestinationTimer = WMAddTimerHandler(XDND_SOURCE_RESPONSE_MAX_DELAY, dragSourceResponseTimeOut, XDND_DEST_VIEW(info)); } /* ----- End of Destination timer ----- */ /* ----- Destination states ----- */ #ifdef XDND_DEBUG static const char *stateName(W_DndState * state) { if (state == NULL) return "no state defined"; if (state == idleState) return "idleState"; if (state == waitEnterState) return "waitEnterState"; if (state == inspectDropDataState) return "inspectDropDataState"; if (state == dropAllowedState) return "dropAllowedState"; if (state == dropNotAllowedState) return "dropNotAllowedState"; if (state == waitForDropDataState) return "waitForDropDataState"; return "unknown state"; } #endif static void *idleState(WMView * destView, XClientMessageEvent * event, WMDraggingInfo * info) { WMScreen *scr; Atom sourceMsg; if (destView->dragDestinationProcs != NULL) { scr = W_VIEW_SCREEN(destView); sourceMsg = event->message_type; if (sourceMsg == scr->xdndPositionAtom) { destView->dragDestinationProcs->prepareForDragOperation(destView); if (XDND_SOURCE_TYPES(info) != NULL) { /* enter message infos are available */ return checkDropAllowed(destView, info); } /* waiting for enter message */ return waitEnterState; } } suspendDropAuthorization(destView, info); return idleState; } /* Source position and action are stored, waiting for xdnd protocol version and source type */ static void *waitEnterState(WMView * destView, XClientMessageEvent * event, WMDraggingInfo * info) { WMScreen *scr = W_VIEW_SCREEN(destView); Atom sourceMsg = event->message_type; if (sourceMsg == scr->xdndEnterAtom) { W_DragDestinationStoreEnterMsgInfo(info, destView, event); return checkDropAllowed(destView, info); } return waitEnterState; } /* We have requested a data, and have received it */ static void *inspectDropDataState(WMView * destView, XClientMessageEvent * event, WMDraggingInfo * info) { WMScreen *scr; Atom sourceMsg; scr = W_VIEW_SCREEN(destView); sourceMsg = event->message_type; if (sourceMsg == scr->xdndSelectionAtom) { /* a data has been retrieved, store next available */ if (requestDropData(info)) return inspectDropDataState; /* all required (and available) datas are stored */ if (destView->dragDestinationProcs->inspectDropData(destView, XDND_DROP_DATAS(info))) return checkActionAllowed(destView, info); suspendDropAuthorization(destView, info); return dropNotAllowedState; } return inspectDropDataState; } static void *dropNotAllowedState(WMView * destView, XClientMessageEvent * event, WMDraggingInfo * info) { WMScreen *scr = W_VIEW_SCREEN(destView); Atom sourceMsg = event->message_type; if (sourceMsg == scr->xdndDropAtom) { finishDrop(destView, info); return idleState; } if (sourceMsg == scr->xdndPositionAtom) { if (XDND_SOURCE_ACTION_CHANGED(info)) { return checkDropAllowed(destView, info); } else { sendStatusMessage(destView, info, None); return dropNotAllowedState; } } return dropNotAllowedState; } static void *dropAllowedState(WMView * destView, XClientMessageEvent * event, WMDraggingInfo * info) { WMScreen *scr = W_VIEW_SCREEN(destView); Atom sourceMsg = event->message_type; if (sourceMsg == scr->xdndDropAtom) { if (XDND_DROP_DATAS(info) != NULL) { /* drop datas were cached with inspectDropData call */ callPerformDragOperation(destView, info); } else { XDND_DROP_DATAS(info) = createDropDataArray(XDND_REQUIRED_TYPES(info)); /* store first available data */ if (requestDropData(info)) return waitForDropDataState; /* no data retrieved */ callPerformDragOperation(destView, info); } finishDrop(destView, info); return idleState; } if (sourceMsg == scr->xdndPositionAtom) { if (XDND_SOURCE_ACTION_CHANGED(info)) { return checkDropAllowed(destView, info); } else { sendStatusMessage(destView, info, XDND_DEST_ACTION(info)); return dropAllowedState; } } return dropAllowedState; } static void *waitForDropDataState(WMView * destView, XClientMessageEvent * event, WMDraggingInfo * info) { WMScreen *scr = W_VIEW_SCREEN(destView); Atom sourceMsg = event->message_type; if (sourceMsg == scr->xdndSelectionAtom) { /* store next data */ if (requestDropData(info)) return waitForDropDataState; /* all required (and available) datas are stored */ callPerformDragOperation(destView, info); finishDrop(destView, info); return idleState; } return waitForDropDataState; } /* ----- End of Destination states ----- */ void W_DragDestinationStateHandler(WMDraggingInfo * info, XClientMessageEvent * event) { WMView *destView; W_DndState *newState; wassertr(XDND_DEST_INFO(info) != NULL); wassertr(XDND_DEST_VIEW(info) != NULL); destView = XDND_DEST_VIEW(info); if (XDND_DEST_STATE(info) == NULL) XDND_DEST_STATE(info) = idleState; #ifdef XDND_DEBUG printf("current dest state: %s\n", stateName(XDND_DEST_STATE(info))); #endif newState = (W_DndState *) XDND_DEST_STATE(info) (destView, event, info); #ifdef XDND_DEBUG printf("new dest state: %s\n", stateName(newState)); #endif if (XDND_DEST_INFO(info) != NULL) { XDND_DEST_STATE(info) = newState; if (XDND_DEST_STATE(info) != idleState) W_DragDestinationStartTimer(info); } } static void realizedObserver(void *self, WMNotification * notif) { WMView *view = (WMView *) WMGetNotificationObject(notif); WMScreen *scr = W_VIEW_SCREEN(view); XChangeProperty(scr->display, W_VIEW_DRAWABLE(view), scr->xdndAwareAtom, XA_ATOM, XDND_PROPERTY_FORMAT, PropModeReplace, &XDNDversion, 1); WMRemoveNotificationObserver(self); } static void W_SetXdndAwareProperty(WMScreen *scr, WMView *view) { WMView *toplevel = W_TopLevelOfView(view); if (!toplevel->flags.xdndHintSet) { toplevel->flags.xdndHintSet = 1; if (toplevel->flags.realized) { XChangeProperty(scr->display, W_VIEW_DRAWABLE(toplevel), scr->xdndAwareAtom, XA_ATOM, XDND_PROPERTY_FORMAT, PropModeReplace, &XDNDversion, 1); } else { WMAddNotificationObserver(realizedObserver, /* just use as an id */ &view->dragDestinationProcs, WMViewRealizedNotification, toplevel); } } } void WMRegisterViewForDraggedTypes(WMView * view, WMArray * acceptedTypes) { Atom *types; int typeCount; int i; typeCount = WMGetArrayItemCount(acceptedTypes); types = wmalloc(sizeof(Atom) * (typeCount + 1)); for (i = 0; i < typeCount; i++) { types[i] = XInternAtom(W_VIEW_SCREEN(view)->display, WMGetFromArray(acceptedTypes, i), False); } types[i] = 0; view->droppableTypes = types; /* WMFreeArray(acceptedTypes); */ W_SetXdndAwareProperty(W_VIEW_SCREEN(view), view); } void WMUnregisterViewDraggedTypes(WMView * view) { if (view->droppableTypes != NULL) wfree(view->droppableTypes); view->droppableTypes = NULL; } /* requestedOperation: operation requested by the source sourceDataTypes: data types (mime-types strings) supported by the source (never NULL, destroyed when drop ends) return operation allowed by destination (self) */ static WMDragOperationType defAllowedOperation(WMView * self, WMDragOperationType requestedOperation, WMArray * sourceDataTypes) { /* Parameter not used, but tell the compiler that it is ok */ (void) self; (void) requestedOperation; (void) sourceDataTypes; /* no operation allowed */ return WDOperationNone; } /* requestedOperation: operation requested by the source sourceDataTypes: data types (mime-types strings) supported by the source (never NULL, destroyed when drop ends) return data types (mime-types strings) required by destination (self) or NULL if no suitable data type is available (force to 2nd pass with full source type list). */ static WMArray *defRequiredDataTypes(WMView * self, WMDragOperationType requestedOperation, WMArray * sourceDataTypes) { /* Parameter not used, but tell the compiler that it is ok */ (void) self; (void) requestedOperation; (void) sourceDataTypes; /* no data type allowed (NULL even at 2nd pass) */ return NULL; } /* Executed when the drag enters destination (self) */ static void defPrepareForDragOperation(WMView * self) { /* Parameter not used, but tell the compiler that it is ok */ (void) self; } /* Checks datas to be dropped (optional). dropDatas: datas (WMData*) required by destination (self) (given in same order as returned by requiredDataTypes). A NULL data means it couldn't be retreived. Destroyed when drop ends. return true if data array is ok */ /* Bool (*inspectDropData)(WMView *self, WMArray *dropDatas); */ /* Process drop dropDatas: datas (WMData*) required by destination (self) (given in same order as returned by requiredDataTypes). A NULL data means it couldn't be retrieved. Destroyed when drop ends. operationList: if source operation is WDOperationAsk, contains operations (and associated texts) that can be asked to source. (destroyed after performDragOperation call) Otherwise this parameter is NULL. */ static void defPerformDragOperation(WMView * self, WMArray * dropDatas, WMArray * operationList, WMPoint * dropLocation) { /* Parameter not used, but tell the compiler that it is ok */ (void) self; (void) dropDatas; (void) operationList; (void) dropLocation; } /* Executed after drop */ static void defConcludeDragOperation(WMView * self) { /* Parameter not used, but tell the compiler that it is ok */ (void) self; } void WMSetViewDragDestinationProcs(WMView * view, WMDragDestinationProcs * procs) { if (view->dragDestinationProcs == NULL) { view->dragDestinationProcs = wmalloc(sizeof(WMDragDestinationProcs)); } *view->dragDestinationProcs = *procs; /*XXX fill in non-implemented stuffs */ if (procs->allowedOperation == NULL) { view->dragDestinationProcs->allowedOperation = defAllowedOperation; } if (procs->allowedOperation == NULL) { view->dragDestinationProcs->requiredDataTypes = defRequiredDataTypes; } /* note: inspectDropData can be NULL, if data consultation is not needed to give drop permission */ if (procs->prepareForDragOperation == NULL) { view->dragDestinationProcs->prepareForDragOperation = defPrepareForDragOperation; } if (procs->performDragOperation == NULL) { view->dragDestinationProcs->performDragOperation = defPerformDragOperation; } if (procs->concludeDragOperation == NULL) { view->dragDestinationProcs->concludeDragOperation = defConcludeDragOperation; } } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Documentation/�������������������������������������������������������������0000755�0001750�0001750�00000000000�13642365212�014612� 5����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Documentation/Makefile.in��������������������������������������������������0000644�0001750�0001750�00000033133�13642360053�016600� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = WINGs/Documentation ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ $(top_srcdir)/m4/ax_pthread.m4 \ $(top_srcdir)/m4/ld-version-script.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/windowmaker.m4 \ $(top_srcdir)/m4/wm_attributes.m4 \ $(top_srcdir)/m4/wm_cflags_check.m4 \ $(top_srcdir)/m4/wm_i18n.m4 \ $(top_srcdir)/m4/wm_imgfmt_check.m4 \ $(top_srcdir)/m4/wm_libexif.m4 $(top_srcdir)/m4/wm_libmath.m4 \ $(top_srcdir)/m4/wm_prog_cc_c11.m4 \ $(top_srcdir)/m4/wm_xext_check.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ GFXLIBS = @GFXLIBS@ GREP = @GREP@ HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLIBS = @INTLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBBSD = @LIBBSD@ LIBEXIF = @LIBEXIF@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXINERAMA = @LIBXINERAMA@ LIBXMU = @LIBXMU@ LIBXRANDR = @LIBXRANDR@ LINGUAS = @LINGUAS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAGICKFLAGS = @MAGICKFLAGS@ MAGICKLIBS = @MAGICKLIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MANLANGDIRS = @MANLANGDIRS@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOLIBS = @PANGOLIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILMOFILES = @UTILMOFILES@ VERSION = @VERSION@ WINGSMOFILES = @WINGSMOFILES@ WINGS_VERSION = @WINGS_VERSION@ WMAKERMOFILES = @WMAKERMOFILES@ WPREFSMOFILES = @WPREFSMOFILES@ WRASTER_VERSION = @WRASTER_VERSION@ WUTIL_VERSION = @WUTIL_VERSION@ XCFLAGS = @XCFLAGS@ XFTCONFIG = @XFTCONFIG@ XFTFLAGS = @XFTFLAGS@ XFTLIBS = @XFTLIBS@ XGETTEXT = @XGETTEXT@ XLFLAGS = @XLFLAGS@ XLIBS = @XLIBS@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBRARY_PATH = @X_LIBRARY_PATH@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ defsdatadir = @defsdatadir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ inc_search_path = @inc_search_path@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lcov_output_directory = @lcov_output_directory@ lib_search_path = @lib_search_path@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pixmapdir = @pixmapdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ wprefs_bindir = @wprefs_bindir@ wprefs_datadir = @wprefs_datadir@ AUTOMAKE_OPTIONS = EXTRA_DIST = all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu WINGs/Documentation/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu WINGs/Documentation/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags-am uninstall uninstall-am .PRECIOUS: Makefile # 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. .NOEXPORT: �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Documentation/Makefile.am��������������������������������������������������0000644�0001750�0001750�00000000124�13431646201�016557� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������## automake input file for WINGs - Documentation AUTOMAKE_OPTIONS = EXTRA_DIST = ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/winputmethod.c�������������������������������������������������������������0000644�0001750�0001750�00000012634�13431646201�014616� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include <X11/Xlib.h> #include "wconfig.h" #include "WINGsP.h" typedef struct W_IMContext { XIM xim; XIMStyle ximstyle; } WMIMContext; static void instantiateIM_cb(Display * display, XPointer client_data, XPointer call_data) { /* Parameter not used, but tell the compiler that it is ok */ (void) display; (void) call_data; W_InitIM((W_Screen *) client_data); } static void destroyIM_cb(XIM xim, XPointer client_data, XPointer call_data) { W_Screen *scr = (W_Screen *) client_data; W_View *target; /* Parameter not used, but tell the compiler that it is ok */ (void) call_data; if (scr->imctx->xim != xim) return; target = scr->rootView->childrenList; while (target != NULL) { W_DestroyIC(target); target = target->nextSister; } wfree(scr->imctx); scr->imctx = NULL; XRegisterIMInstantiateCallback(scr->display, NULL, NULL, NULL, instantiateIM_cb, (XPointer) scr); } void W_InitIM(W_Screen * scr) { XIM xim; if (scr->imctx) return; xim = XOpenIM(scr->display, NULL, NULL, NULL); if (xim) { XIMStyles *im_styles; XIMCallback cb; int i; scr->imctx = wmalloc(sizeof(WMIMContext)); scr->imctx->xim = xim; cb.callback = destroyIM_cb; cb.client_data = (XPointer) scr; if (XSetIMValues(scr->imctx->xim, XNDestroyCallback, &cb, NULL)) wwarning(_("could not add destroy callback for XIM input method")); XUnregisterIMInstantiateCallback(scr->display, NULL, NULL, NULL, instantiateIM_cb, (XPointer) scr); /* Get available input style */ XGetIMValues(scr->imctx->xim, XNQueryInputStyle, &im_styles, NULL); scr->imctx->ximstyle = 0; for (i = 0; i < im_styles->count_styles && scr->imctx->ximstyle == 0; i++) { if ((im_styles->supported_styles[i] & XIMPreeditPosition) && (im_styles->supported_styles[i] & XIMStatusNothing)) { scr->imctx->ximstyle = XIMPreeditPosition | XIMStatusNothing; } else if ((im_styles->supported_styles[i] & XIMPreeditNothing) && (im_styles->supported_styles[i] & XIMStatusNothing)) { scr->imctx->ximstyle = XIMPreeditNothing | XIMStatusNothing; } } XFree(im_styles); } else { XRegisterIMInstantiateCallback(scr->display, NULL, NULL, NULL, instantiateIM_cb, (XPointer) scr); } } void W_CreateIC(WMView * view) { WMScreen *scr = W_VIEW_SCREEN(view); XVaNestedList preedit_attr = NULL; if (view->xic || !view->flags.realized || !scr->imctx) return; if (scr->imctx->ximstyle & XIMPreeditPosition) { XPoint spot; XRectangle rect; int ofs; ofs = (view->size.height - WMFontHeight(scr->normalFont)) / 2; rect.x = ofs; rect.y = ofs; rect.height = WMFontHeight(scr->normalFont); rect.width = view->size.width - ofs * 2; spot.x = rect.x; spot.y = rect.y + rect.height; // this really needs to be changed, but I don't know how yet -Dan // it used to be like this with fontsets, but no longer applies to xft preedit_attr = XVaCreateNestedList(0, XNSpotLocation, &spot, XNArea, &rect, XNFontInfo, scr->normalFont->font, NULL); } view->xic = XCreateIC(scr->imctx->xim, XNInputStyle, scr->imctx->ximstyle, XNClientWindow, view->window, preedit_attr ? XNPreeditAttributes : NULL, preedit_attr, NULL); if (preedit_attr) XFree(preedit_attr); if (view->xic) { unsigned long fevent = 0; XGetICValues(view->xic, XNFilterEvents, &fevent, NULL); XSelectInput(scr->display, view->window, ButtonPressMask | ButtonReleaseMask | ExposureMask | KeyPressMask | FocusChangeMask | ButtonMotionMask | fevent); } } void W_DestroyIC(WMView * view) { if (view->xic) { XDestroyIC(view->xic); view->xic = 0; } } static void setPreeditArea(W_View * view) { WMScreen *scr = W_VIEW_SCREEN(view); XVaNestedList preedit_attr = NULL; if (view->xic && (scr->imctx->ximstyle & XIMPreeditPosition)) { XRectangle rect; int ofs; ofs = (view->size.height - WMFontHeight(scr->normalFont)) / 2; rect.x = ofs; rect.y = ofs; rect.height = WMFontHeight(scr->normalFont); rect.width = view->size.width - ofs * 2; preedit_attr = XVaCreateNestedList(0, XNArea, &rect, NULL); XSetICValues(view->xic, XNPreeditAttributes, preedit_attr, NULL); if (preedit_attr) { XFree(preedit_attr); } } } void W_FocusIC(WMView * view) { WMScreen *scr = W_VIEW_SCREEN(view); if (view->xic) { XSetICFocus(view->xic); XSetICValues(view->xic, XNFocusWindow, view->window, NULL); if (scr->imctx->ximstyle & XIMPreeditPosition) { setPreeditArea(view); } } } void W_UnFocusIC(WMView * view) { if (view->xic) { XUnsetICFocus(view->xic); } } void W_SetPreeditPositon(W_View * view, int x, int y) { WMScreen *scr = W_VIEW_SCREEN(view); XVaNestedList preedit_attr = NULL; if (view->xic && (scr->imctx->ximstyle & XIMPreeditPosition)) { XPoint spot; int ofs; ofs = (view->size.height - WMFontHeight(scr->normalFont)) / 2; spot.x = x; spot.y = y + view->size.height - ofs - 3; preedit_attr = XVaCreateNestedList(0, XNSpotLocation, &spot, NULL); XSetICValues(view->xic, XNPreeditAttributes, preedit_attr, NULL); if (preedit_attr) { XFree(preedit_attr); } } } int W_LookupString(W_View *view, XKeyPressedEvent *event, char *buffer, int buflen, KeySym *keysym, Status *status) { WMScreen *scr = W_VIEW_SCREEN(view); XSetInputFocus(scr->display, view->window, RevertToParent, CurrentTime); #ifdef X_HAVE_UTF8_STRING if (view->xic) return Xutf8LookupString(view->xic, event, buffer, buflen, keysym, status); #endif return XLookupString(event, buffer, buflen, keysym, (XComposeStatus *) status); } ����������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/error.c��������������������������������������������������������������������0000644�0001750�0001750�00000007110�13431646201�013211� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker miscelaneous function library * * Copyright (c) 1997-2003 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., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301, USA. */ #include "wconfig.h" #include <stdarg.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <WUtil.h> #include <WINGsP.h> #ifdef HAVE_SYSLOG_H #include <syslog.h> static Bool syslog_initialized = False; static void syslog_open(const char *prog_name) { int options; if (!prog_name) prog_name = "WINGs"; options = LOG_PID; openlog(prog_name, options, LOG_DAEMON); syslog_initialized = True; } static void syslog_message(int prio, const char *prog_name, const char *msg) { if (!syslog_initialized) syslog_open(prog_name); //jump over the program name cause syslog is already displaying it syslog(prio, "%s", msg + strlen(prog_name)); } void w_syslog_close(void) { if (syslog_initialized) { closelog(); syslog_initialized = False; } } #endif void __wmessage(const char *func, const char *file, int line, int type, const char *msg, ...) { va_list args; char *buf; static int linemax = 0; int truncated = 0; #ifdef HAVE_SYSLOG int syslog_priority = LOG_INFO; #endif if (linemax == 0) { #ifdef HAVE_SYSCONF linemax = sysconf(_SC_LINE_MAX); if (linemax == -1) { /* I'd like to know of this ever fires */ fprintf(stderr, "%s %d: sysconf(_SC_LINE_MAX) returned error\n", __FILE__, __LINE__); linemax = 512; } #else /* !HAVE_SYSCONF */ fprintf(stderr, "%s %d: Your system does not have sysconf(3); " "let wmaker-dev@windowmaker.org know.\n", __FILE__, __LINE__); linemax = 512; #endif /* HAVE_SYSCONF */ } buf = wmalloc(linemax); fflush(stdout); /* message format: <wings_progname>(function(file:line): <type?>: <message>"\n" */ strncat(buf, _WINGS_progname ? _WINGS_progname : "WINGs", linemax - 1); snprintf(buf + strlen(buf), linemax - strlen(buf), "(%s(%s:%d))", func, file, line); strncat(buf, ": ", linemax - 1 - strlen(buf)); switch (type) { case WMESSAGE_TYPE_FATAL: strncat(buf, _("fatal: "), linemax - 1 - strlen(buf)); #ifdef HAVE_SYSLOG syslog_priority = LOG_CRIT; #endif break; case WMESSAGE_TYPE_ERROR: strncat(buf, _("error: "), linemax - 1 - strlen(buf)); #ifdef HAVE_SYSLOG syslog_priority = LOG_ERR; #endif break; case WMESSAGE_TYPE_WARNING: strncat(buf, _("warning: "), linemax - 1 - strlen(buf)); #ifdef HAVE_SYSLOG syslog_priority = LOG_WARNING; #endif break; case WMESSAGE_TYPE_MESSAGE: /* FALLTHROUGH */ default: /* should not happen, but doesn't hurt either */ break; } va_start(args, msg); if (vsnprintf(buf + strlen(buf), linemax - strlen(buf), msg, args) >= linemax - strlen(buf)) truncated = 1; va_end(args); fputs(buf, stderr); #ifdef HAVE_SYSLOG syslog_message(syslog_priority, _WINGS_progname ? _WINGS_progname : "WINGs", buf); #endif if (truncated) fputs("*** message truncated ***", stderr); fputs("\n", stderr); wfree(buf); } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/configuration.c������������������������������������������������������������0000644�0001750�0001750�00000006220�13431646201�014730� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include "WINGsP.h" #include "wconfig.h" #include <X11/Xlocale.h> _WINGsConfiguration WINGsConfiguration; #define SYSTEM_FONT "sans serif" #define BOLD_SYSTEM_FONT "sans serif:bold" #define DEFAULT_FONT_SIZE 12 #define FLOPPY_PATH "/floppy" static unsigned getButtonWithName(const char *name, unsigned defaultButton) { if (strncmp(name, "Button", 6) == 0 && strlen(name) == 7) { switch (name[6]) { case '1': return Button1; case '2': return Button2; case '3': return Button3; case '4': return Button4; case '5': return Button5; default: break; } } return defaultButton; } void W_ReadConfigurations(void) { WMUserDefaults *defaults; Bool aaIsSet = False; memset(&WINGsConfiguration, 0, sizeof(_WINGsConfiguration)); defaults = WMGetStandardUserDefaults(); if (defaults) { char *buttonName; WMPropList *val; unsigned button; WINGsConfiguration.systemFont = WMGetUDStringForKey(defaults, "SystemFont"); WINGsConfiguration.boldSystemFont = WMGetUDStringForKey(defaults, "BoldSystemFont"); val = WMGetUDObjectForKey(defaults, "AntialiasedText"); if (val && WMIsPLString(val) && WMGetFromPLString(val)) { aaIsSet = True; WINGsConfiguration.antialiasedText = WMGetUDBoolForKey(defaults, "AntialiasedText"); } WINGsConfiguration.doubleClickDelay = WMGetUDIntegerForKey(defaults, "DoubleClickTime"); WINGsConfiguration.floppyPath = WMGetUDStringForKey(defaults, "FloppyPath"); buttonName = WMGetUDStringForKey(defaults, "MouseWheelUp"); if (buttonName) { button = getButtonWithName(buttonName, Button4); wfree(buttonName); } else { button = Button4; } WINGsConfiguration.mouseWheelUp = button; buttonName = WMGetUDStringForKey(defaults, "MouseWheelDown"); if (buttonName) { button = getButtonWithName(buttonName, Button5); wfree(buttonName); } else { button = Button5; } WINGsConfiguration.mouseWheelDown = button; if (WINGsConfiguration.mouseWheelDown == WINGsConfiguration.mouseWheelUp) { WINGsConfiguration.mouseWheelUp = Button4; WINGsConfiguration.mouseWheelDown = Button5; } WINGsConfiguration.defaultFontSize = WMGetUDIntegerForKey(defaults, "DefaultFontSize"); } if (!WINGsConfiguration.systemFont) { WINGsConfiguration.systemFont = SYSTEM_FONT; } if (!WINGsConfiguration.boldSystemFont) { WINGsConfiguration.boldSystemFont = BOLD_SYSTEM_FONT; } if (WINGsConfiguration.defaultFontSize == 0) { WINGsConfiguration.defaultFontSize = DEFAULT_FONT_SIZE; } if (!aaIsSet) { WINGsConfiguration.antialiasedText = True; } if (!WINGsConfiguration.floppyPath) { WINGsConfiguration.floppyPath = FLOPPY_PATH; } if (WINGsConfiguration.doubleClickDelay == 0) { WINGsConfiguration.doubleClickDelay = 250; } if (WINGsConfiguration.mouseWheelUp == 0) { WINGsConfiguration.mouseWheelUp = Button4; } if (WINGsConfiguration.mouseWheelDown == 0) { WINGsConfiguration.mouseWheelDown = Button5; } } unsigned W_getconf_mouseWheelUp(void) { return WINGsConfiguration.mouseWheelUp; } unsigned W_getconf_mouseWheelDown(void) { return WINGsConfiguration.mouseWheelDown; } void W_setconf_doubleClickDelay(int value) { WINGsConfiguration.doubleClickDelay = value; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/wpopupbutton.c�������������������������������������������������������������0000644�0001750�0001750�00000043014�13431646201�014651� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include "WINGsP.h" typedef struct W_PopUpButton { W_Class widgetClass; WMView *view; void *clientData; WMAction *action; char *caption; WMArray *items; short selectedItemIndex; short highlightedItem; WMView *menuView; /* override redirect popup menu */ WMHandlerID timer; /* for autoscroll */ /**/ int scrollStartY; /* for autoscroll */ struct { unsigned int pullsDown:1; unsigned int configured:1; unsigned int insideMenu:1; unsigned int enabled:1; } flags; } PopUpButton; #define MENU_BLINK_DELAY 60000 #define MENU_BLINK_COUNT 2 #define SCROLL_DELAY 10 #define DEFAULT_WIDTH 60 #define DEFAULT_HEIGHT 20 #define DEFAULT_CAPTION "" static void destroyPopUpButton(PopUpButton * bPtr); static void paintPopUpButton(PopUpButton * bPtr); static void handleEvents(XEvent * event, void *data); static void handleActionEvents(XEvent * event, void *data); static void resizeMenu(PopUpButton * bPtr); WMPopUpButton *WMCreatePopUpButton(WMWidget * parent) { PopUpButton *bPtr; W_Screen *scr = W_VIEW(parent)->screen; bPtr = wmalloc(sizeof(PopUpButton)); bPtr->widgetClass = WC_PopUpButton; bPtr->view = W_CreateView(W_VIEW(parent)); if (!bPtr->view) { wfree(bPtr); return NULL; } bPtr->view->self = bPtr; WMCreateEventHandler(bPtr->view, ExposureMask | StructureNotifyMask | ClientMessageMask, handleEvents, bPtr); W_ResizeView(bPtr->view, DEFAULT_WIDTH, DEFAULT_HEIGHT); bPtr->caption = wstrdup(DEFAULT_CAPTION); WMCreateEventHandler(bPtr->view, ButtonPressMask | ButtonReleaseMask, handleActionEvents, bPtr); bPtr->flags.enabled = 1; bPtr->items = WMCreateArrayWithDestructor(4, (WMFreeDataProc *) WMDestroyMenuItem); bPtr->selectedItemIndex = -1; bPtr->menuView = W_CreateUnmanagedTopView(scr); W_ResizeView(bPtr->menuView, bPtr->view->size.width, 1); WMCreateEventHandler(bPtr->menuView, ButtonPressMask | ButtonReleaseMask | EnterWindowMask | LeaveWindowMask | ButtonMotionMask | ExposureMask, handleActionEvents, bPtr); return bPtr; } void WMSetPopUpButtonAction(WMPopUpButton * bPtr, WMAction * action, void *clientData) { CHECK_CLASS(bPtr, WC_PopUpButton); bPtr->action = action; bPtr->clientData = clientData; } WMMenuItem *WMAddPopUpButtonItem(WMPopUpButton * bPtr, const char *title) { WMMenuItem *item; CHECK_CLASS(bPtr, WC_PopUpButton); item = WMCreateMenuItem(); WMSetMenuItemTitle(item, title); WMAddToArray(bPtr->items, item); if (bPtr->menuView && bPtr->menuView->flags.realized) resizeMenu(bPtr); return item; } WMMenuItem *WMInsertPopUpButtonItem(WMPopUpButton * bPtr, int index, const char *title) { WMMenuItem *item; CHECK_CLASS(bPtr, WC_PopUpButton); item = WMCreateMenuItem(); WMSetMenuItemTitle(item, title); WMInsertInArray(bPtr->items, index, item); /* if there is an selected item, update it's index to match the new * position */ if (index < bPtr->selectedItemIndex) bPtr->selectedItemIndex++; if (bPtr->menuView && bPtr->menuView->flags.realized) resizeMenu(bPtr); return item; } void WMRemovePopUpButtonItem(WMPopUpButton * bPtr, int index) { CHECK_CLASS(bPtr, WC_PopUpButton); wassertr(index >= 0 && index < WMGetArrayItemCount(bPtr->items)); WMDeleteFromArray(bPtr->items, index); if (bPtr->selectedItemIndex >= 0 && !bPtr->flags.pullsDown) { if (index < bPtr->selectedItemIndex) bPtr->selectedItemIndex--; else if (index == bPtr->selectedItemIndex) { /* reselect first item if the removed item is the * selected one */ bPtr->selectedItemIndex = 0; if (bPtr->view->flags.mapped) paintPopUpButton(bPtr); } } if (bPtr->menuView && bPtr->menuView->flags.realized) resizeMenu(bPtr); } void WMSetPopUpButtonEnabled(WMPopUpButton * bPtr, Bool flag) { bPtr->flags.enabled = ((flag == 0) ? 0 : 1); if (bPtr->view->flags.mapped) paintPopUpButton(bPtr); } Bool WMGetPopUpButtonEnabled(WMPopUpButton * bPtr) { return bPtr->flags.enabled; } void WMSetPopUpButtonSelectedItem(WMPopUpButton * bPtr, int index) { wassertr(index < WMGetArrayItemCount(bPtr->items)); /* if (index >= WMGetArrayCount(bPtr->items)) index = -1; */ bPtr->selectedItemIndex = index; if (bPtr->view->flags.mapped) paintPopUpButton(bPtr); } int WMGetPopUpButtonSelectedItem(WMPopUpButton * bPtr) { if (!bPtr->flags.pullsDown && bPtr->selectedItemIndex < 0) return -1; else return bPtr->selectedItemIndex; } void WMSetPopUpButtonText(WMPopUpButton * bPtr, const char *text) { if (bPtr->caption) wfree(bPtr->caption); if (text) bPtr->caption = wstrdup(text); else bPtr->caption = NULL; if (bPtr->view->flags.realized) { if (bPtr->flags.pullsDown || bPtr->selectedItemIndex < 0) { paintPopUpButton(bPtr); } } } void WMSetPopUpButtonItemEnabled(WMPopUpButton * bPtr, int index, Bool flag) { WMSetMenuItemEnabled(WMGetFromArray(bPtr->items, index), (flag ? 1 : 0)); } Bool WMGetPopUpButtonItemEnabled(WMPopUpButton * bPtr, int index) { return WMGetMenuItemEnabled(WMGetFromArray(bPtr->items, index)); } void WMSetPopUpButtonPullsDown(WMPopUpButton * bPtr, Bool flag) { bPtr->flags.pullsDown = ((flag == 0) ? 0 : 1); if (flag) { bPtr->selectedItemIndex = -1; } if (bPtr->view->flags.mapped) paintPopUpButton(bPtr); } int WMGetPopUpButtonNumberOfItems(WMPopUpButton * bPtr) { return WMGetArrayItemCount(bPtr->items); } char *WMGetPopUpButtonItem(WMPopUpButton * bPtr, int index) { if (index >= WMGetArrayItemCount(bPtr->items) || index < 0) return NULL; return WMGetMenuItemTitle(WMGetFromArray(bPtr->items, index)); } WMMenuItem *WMGetPopUpButtonMenuItem(WMPopUpButton * bPtr, int index) { return WMGetFromArray(bPtr->items, index); } static void paintPopUpButton(PopUpButton * bPtr) { W_Screen *scr = bPtr->view->screen; char *caption; Pixmap pixmap; if (bPtr->flags.pullsDown) { caption = bPtr->caption; } else { if (bPtr->selectedItemIndex < 0) { /* if no item selected, show the caption */ caption = bPtr->caption; } else { caption = WMGetPopUpButtonItem(bPtr, bPtr->selectedItemIndex); } } pixmap = XCreatePixmap(scr->display, bPtr->view->window, bPtr->view->size.width, bPtr->view->size.height, scr->depth); XFillRectangle(scr->display, pixmap, WMColorGC(scr->gray), 0, 0, bPtr->view->size.width, bPtr->view->size.height); W_DrawRelief(scr, pixmap, 0, 0, bPtr->view->size.width, bPtr->view->size.height, WRRaised); if (caption) { W_PaintText(bPtr->view, pixmap, scr->normalFont, 6, (bPtr->view->size.height - WMFontHeight(scr->normalFont)) / 2, bPtr->view->size.width, WALeft, bPtr->flags.enabled ? scr->black : scr->darkGray, False, caption, strlen(caption)); } if (bPtr->flags.pullsDown) { XCopyArea(scr->display, scr->pullDownIndicator->pixmap, pixmap, scr->copyGC, 0, 0, scr->pullDownIndicator->width, scr->pullDownIndicator->height, bPtr->view->size.width - scr->pullDownIndicator->width - 4, (bPtr->view->size.height - scr->pullDownIndicator->height) / 2); } else { int x, y; x = bPtr->view->size.width - scr->popUpIndicator->width - 4; y = (bPtr->view->size.height - scr->popUpIndicator->height) / 2; XSetClipOrigin(scr->display, scr->clipGC, x, y); XSetClipMask(scr->display, scr->clipGC, scr->popUpIndicator->mask); XCopyArea(scr->display, scr->popUpIndicator->pixmap, pixmap, scr->clipGC, 0, 0, scr->popUpIndicator->width, scr->popUpIndicator->height, x, y); } XCopyArea(scr->display, pixmap, bPtr->view->window, scr->copyGC, 0, 0, bPtr->view->size.width, bPtr->view->size.height, 0, 0); XFreePixmap(scr->display, pixmap); } static void handleEvents(XEvent * event, void *data) { PopUpButton *bPtr = (PopUpButton *) data; CHECK_CLASS(data, WC_PopUpButton); switch (event->type) { case Expose: if (event->xexpose.count != 0) break; paintPopUpButton(bPtr); break; case DestroyNotify: destroyPopUpButton(bPtr); break; } } static void paintMenuEntry(PopUpButton * bPtr, int index, int highlight) { W_Screen *scr = bPtr->view->screen; int yo; int width, itemHeight, itemCount; char *title; itemCount = WMGetArrayItemCount(bPtr->items); if (index < 0 || index >= itemCount) return; itemHeight = bPtr->view->size.height; width = bPtr->view->size.width; yo = (itemHeight - WMFontHeight(scr->normalFont)) / 2; if (!highlight) { XClearArea(scr->display, bPtr->menuView->window, 0, index * itemHeight, width, itemHeight, False); return; } XFillRectangle(scr->display, bPtr->menuView->window, WMColorGC(scr->white), 1, index * itemHeight + 1, width - 3, itemHeight - 3); title = WMGetPopUpButtonItem(bPtr, index); W_DrawRelief(scr, bPtr->menuView->window, 0, index * itemHeight, width, itemHeight, WRRaised); W_PaintText(bPtr->menuView, bPtr->menuView->window, scr->normalFont, 6, index * itemHeight + yo, width, WALeft, scr->black, False, title, strlen(title)); if (!bPtr->flags.pullsDown && index == bPtr->selectedItemIndex) { XCopyArea(scr->display, scr->popUpIndicator->pixmap, bPtr->menuView->window, scr->copyGC, 0, 0, scr->popUpIndicator->width, scr->popUpIndicator->height, width - scr->popUpIndicator->width - 4, index * itemHeight + (itemHeight - scr->popUpIndicator->height) / 2); } } static Pixmap makeMenuPixmap(PopUpButton * bPtr) { Pixmap pixmap; W_Screen *scr = bPtr->view->screen; WMMenuItem *item; WMArrayIterator iter; int yo, i; int width, height, itemHeight; itemHeight = bPtr->view->size.height; width = bPtr->view->size.width; height = itemHeight * WMGetArrayItemCount(bPtr->items); yo = (itemHeight - WMFontHeight(scr->normalFont)) / 2; pixmap = XCreatePixmap(scr->display, bPtr->view->window, width, height, scr->depth); XFillRectangle(scr->display, pixmap, WMColorGC(scr->gray), 0, 0, width, height); i = 0; WM_ITERATE_ARRAY(bPtr->items, item, iter) { WMColor *color; char *text; text = WMGetMenuItemTitle(item); W_DrawRelief(scr, pixmap, 0, i * itemHeight, width, itemHeight, WRRaised); if (!WMGetMenuItemEnabled(item)) color = scr->darkGray; else color = scr->black; W_PaintText(bPtr->menuView, pixmap, scr->normalFont, 6, i * itemHeight + yo, width, WALeft, color, False, text, strlen(text)); if (!bPtr->flags.pullsDown && i == bPtr->selectedItemIndex) { XCopyArea(scr->display, scr->popUpIndicator->pixmap, pixmap, scr->copyGC, 0, 0, scr->popUpIndicator->width, scr->popUpIndicator->height, width - scr->popUpIndicator->width - 4, i * itemHeight + (itemHeight - scr->popUpIndicator->height) / 2); } i++; } return pixmap; } static void resizeMenu(PopUpButton * bPtr) { int height; height = WMGetArrayItemCount(bPtr->items) * bPtr->view->size.height; if (height > 0) W_ResizeView(bPtr->menuView, bPtr->view->size.width, height); } static void popUpMenu(PopUpButton * bPtr) { W_Screen *scr = bPtr->view->screen; Window dummyW; int x, y; if (!bPtr->flags.enabled) return; if (!bPtr->menuView->flags.realized) { W_RealizeView(bPtr->menuView); resizeMenu(bPtr); } if (WMGetArrayItemCount(bPtr->items) < 1) return; XTranslateCoordinates(scr->display, bPtr->view->window, scr->rootWin, 0, 0, &x, &y, &dummyW); if (bPtr->flags.pullsDown) { y += bPtr->view->size.height; } else { y -= bPtr->view->size.height * bPtr->selectedItemIndex; } W_MoveView(bPtr->menuView, x, y); XSetWindowBackgroundPixmap(scr->display, bPtr->menuView->window, makeMenuPixmap(bPtr)); XClearWindow(scr->display, bPtr->menuView->window); if (W_VIEW_WIDTH(bPtr->menuView) != W_VIEW_WIDTH(bPtr->view)) resizeMenu(bPtr); W_MapView(bPtr->menuView); bPtr->highlightedItem = 0; if (!bPtr->flags.pullsDown && bPtr->selectedItemIndex < 0) paintMenuEntry(bPtr, bPtr->selectedItemIndex, True); } static void popDownMenu(PopUpButton * bPtr) { W_UnmapView(bPtr->menuView); } static void autoScroll(void *data) { PopUpButton *bPtr = (PopUpButton *) data; int scrHeight = WMWidgetScreen(bPtr)->rootView->size.height; int repeat = 0; int dy = 0; if (bPtr->scrollStartY >= scrHeight - 1 && bPtr->menuView->pos.y + bPtr->menuView->size.height >= scrHeight - 1) { repeat = 1; if (bPtr->menuView->pos.y + bPtr->menuView->size.height - 5 <= scrHeight - 1) { dy = scrHeight - 1 - (bPtr->menuView->pos.y + bPtr->menuView->size.height); } else dy = -5; } else if (bPtr->scrollStartY <= 1 && bPtr->menuView->pos.y < 1) { repeat = 1; if (bPtr->menuView->pos.y + 5 > 1) dy = 1 - bPtr->menuView->pos.y; else dy = 5; } if (repeat) { int oldItem; W_MoveView(bPtr->menuView, bPtr->menuView->pos.x, bPtr->menuView->pos.y + dy); oldItem = bPtr->highlightedItem; bPtr->highlightedItem = (bPtr->scrollStartY - bPtr->menuView->pos.y) / bPtr->view->size.height; if (oldItem != bPtr->highlightedItem) { WMMenuItem *item; paintMenuEntry(bPtr, oldItem, False); if (bPtr->highlightedItem >= 0 && bPtr->highlightedItem < WMGetArrayItemCount(bPtr->items)) { item = WMGetPopUpButtonMenuItem(bPtr, bPtr->highlightedItem); paintMenuEntry(bPtr, bPtr->highlightedItem, WMGetMenuItemEnabled(item)); } else { bPtr->highlightedItem = -1; } } bPtr->timer = WMAddTimerHandler(SCROLL_DELAY, autoScroll, bPtr); } else { bPtr->timer = NULL; } } static void wheelScrollUp(PopUpButton * bPtr) { int testIndex = bPtr->selectedItemIndex - 1; while (testIndex >= 0 && !WMGetPopUpButtonItemEnabled(bPtr, testIndex)) testIndex--; if (testIndex != -1) { WMSetPopUpButtonSelectedItem(bPtr, testIndex); if (bPtr->action) (*bPtr->action) (bPtr, bPtr->clientData); } } static void wheelScrollDown(PopUpButton * bPtr) { int itemCount = WMGetArrayItemCount(bPtr->items); int testIndex = bPtr->selectedItemIndex + 1; while (testIndex < itemCount && !WMGetPopUpButtonItemEnabled(bPtr, testIndex)) testIndex++; if (testIndex != itemCount) { WMSetPopUpButtonSelectedItem(bPtr, testIndex); if (bPtr->action) (*bPtr->action) (bPtr, bPtr->clientData); } } static void handleActionEvents(XEvent * event, void *data) { PopUpButton *bPtr = (PopUpButton *) data; int oldItem; int scrHeight = WMWidgetScreen(bPtr)->rootView->size.height; CHECK_CLASS(data, WC_PopUpButton); if (WMGetArrayItemCount(bPtr->items) < 1) return; switch (event->type) { /* called for menuView */ case Expose: paintMenuEntry(bPtr, bPtr->highlightedItem, True); break; case LeaveNotify: bPtr->flags.insideMenu = 0; if (bPtr->menuView->flags.mapped) paintMenuEntry(bPtr, bPtr->highlightedItem, False); bPtr->highlightedItem = -1; break; case EnterNotify: bPtr->flags.insideMenu = 1; break; case MotionNotify: if (bPtr->flags.insideMenu) { oldItem = bPtr->highlightedItem; bPtr->highlightedItem = event->xmotion.y / bPtr->view->size.height; if (oldItem != bPtr->highlightedItem) { WMMenuItem *item; paintMenuEntry(bPtr, oldItem, False); if (bPtr->highlightedItem >= 0 && bPtr->highlightedItem < WMGetArrayItemCount(bPtr->items)) { item = WMGetPopUpButtonMenuItem(bPtr, bPtr->highlightedItem); paintMenuEntry(bPtr, bPtr->highlightedItem, WMGetMenuItemEnabled(item)); } else { bPtr->highlightedItem = -1; } } if (event->xmotion.y_root >= scrHeight - 1 || event->xmotion.y_root <= 1) { bPtr->scrollStartY = event->xmotion.y_root; if (!bPtr->timer) autoScroll(bPtr); } else if (bPtr->timer) { WMDeleteTimerHandler(bPtr->timer); bPtr->timer = NULL; } } break; /* called for bPtr->view */ case ButtonPress: if (!bPtr->flags.enabled) break; if (event->xbutton.button == WINGsConfiguration.mouseWheelUp) { if (!bPtr->menuView->flags.mapped && !bPtr->flags.pullsDown) { wheelScrollUp(bPtr); } break; } else if (event->xbutton.button == WINGsConfiguration.mouseWheelDown) { if (!bPtr->menuView->flags.mapped && !bPtr->flags.pullsDown) { wheelScrollDown(bPtr); } break; } popUpMenu(bPtr); if (!bPtr->flags.pullsDown) { bPtr->highlightedItem = bPtr->selectedItemIndex; bPtr->flags.insideMenu = 1; } else { bPtr->highlightedItem = -1; bPtr->flags.insideMenu = 0; } XGrabPointer(bPtr->view->screen->display, bPtr->menuView->window, False, ButtonReleaseMask | ButtonMotionMask | EnterWindowMask | LeaveWindowMask, GrabModeAsync, GrabModeAsync, None, None, CurrentTime); break; case ButtonRelease: if (event->xbutton.button == WINGsConfiguration.mouseWheelUp || event->xbutton.button == WINGsConfiguration.mouseWheelDown) { break; } XUngrabPointer(bPtr->view->screen->display, event->xbutton.time); if (!bPtr->flags.pullsDown) popDownMenu(bPtr); if (bPtr->timer) { WMDeleteTimerHandler(bPtr->timer); bPtr->timer = NULL; } if (bPtr->flags.insideMenu && bPtr->highlightedItem >= 0) { WMMenuItem *item; item = WMGetPopUpButtonMenuItem(bPtr, bPtr->highlightedItem); if (WMGetMenuItemEnabled(item)) { int i; WMSetPopUpButtonSelectedItem(bPtr, bPtr->highlightedItem); if (bPtr->flags.pullsDown) { for (i = 0; i < MENU_BLINK_COUNT; i++) { paintMenuEntry(bPtr, bPtr->highlightedItem, False); XSync(bPtr->view->screen->display, 0); wusleep(MENU_BLINK_DELAY); paintMenuEntry(bPtr, bPtr->highlightedItem, True); XSync(bPtr->view->screen->display, 0); wusleep(MENU_BLINK_DELAY); } } paintMenuEntry(bPtr, bPtr->highlightedItem, False); popDownMenu(bPtr); if (bPtr->action) (*bPtr->action) (bPtr, bPtr->clientData); } } if (bPtr->menuView->flags.mapped) popDownMenu(bPtr); break; } } static void destroyPopUpButton(PopUpButton * bPtr) { if (bPtr->timer) { WMDeleteTimerHandler(bPtr->timer); } WMFreeArray(bPtr->items); if (bPtr->caption) wfree(bPtr->caption); /* have to destroy explicitly because the popup is a toplevel */ W_DestroyView(bPtr->menuView); wfree(bPtr); } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/dragsource.c���������������������������������������������������������������0000644�0001750�0001750�00000074507�13431646201�014234� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include "wconfig.h" #include "WINGsP.h" #include <X11/Xatom.h> #include <X11/cursorfont.h> #ifdef USE_XSHAPE #include <X11/extensions/shape.h> #endif #define XDND_DESTINATION_RESPONSE_MAX_DELAY 10000 #define MIN_X_MOVE_OFFSET 5 #define MIN_Y_MOVE_OFFSET 5 #define MAX_SLIDEBACK_ITER 15 #define XDND_PROPERTY_FORMAT 32 #define XDND_ACTION_DESCRIPTION_FORMAT 8 #define XDND_DEST_VERSION(dragInfo) dragInfo->protocolVersion #define XDND_SOURCE_INFO(dragInfo) dragInfo->sourceInfo #define XDND_DEST_WIN(dragInfo) dragInfo->sourceInfo->destinationWindow #define XDND_SOURCE_ACTION(dragInfo) dragInfo->sourceAction #define XDND_DEST_ACTION(dragInfo) dragInfo->destinationAction #define XDND_SOURCE_VIEW(dragInfo) dragInfo->sourceInfo->sourceView #define XDND_SOURCE_STATE(dragInfo) dragInfo->sourceInfo->state #define XDND_SELECTION_PROCS(dragInfo) dragInfo->sourceInfo->selectionProcs #define XDND_DRAG_ICON(dragInfo) dragInfo->sourceInfo->icon #define XDND_MOUSE_OFFSET(dragInfo) dragInfo->sourceInfo->mouseOffset #define XDND_DRAG_CURSOR(dragInfo) dragInfo->sourceInfo->dragCursor #define XDND_DRAG_ICON_POS(dragInfo) dragInfo->sourceInfo->imageLocation #define XDND_NO_POS_ZONE(dragInfo) dragInfo->sourceInfo->noPositionMessageZone #define XDND_TIMESTAMP(dragInfo) dragInfo->timestamp #define XDND_3_TYPES(dragInfo) dragInfo->sourceInfo->firstThreeTypes #define XDND_SOURCE_VIEW_STORED(dragInfo) dragInfo->sourceInfo != NULL \ && dragInfo->sourceInfo->sourceView != NULL static WMHandlerID dndSourceTimer = NULL; static void *idleState(WMView * srcView, XClientMessageEvent * event, WMDraggingInfo * info); static void *dropAllowedState(WMView * srcView, XClientMessageEvent * event, WMDraggingInfo * info); static void *finishDropState(WMView * srcView, XClientMessageEvent * event, WMDraggingInfo * info); #ifdef XDND_DEBUG static const char *stateName(W_DndState * state) { if (state == NULL) return "no state defined"; if (state == idleState) return "idleState"; if (state == dropAllowedState) return "dropAllowedState"; if (state == finishDropState) return "finishDropState"; return "unknown state"; } #endif static WMScreen *sourceScreen(WMDraggingInfo * info) { return W_VIEW_SCREEN(XDND_SOURCE_VIEW(info)); } static void endDragProcess(WMDraggingInfo * info, Bool deposited) { WMView *view = XDND_SOURCE_VIEW(info); WMScreen *scr = W_VIEW_SCREEN(XDND_SOURCE_VIEW(info)); /* free selection handler while view exists */ WMDeleteSelectionHandler(view, scr->xdndSelectionAtom, CurrentTime); wfree(XDND_SELECTION_PROCS(info)); if (XDND_DRAG_CURSOR(info) != None) { XFreeCursor(scr->display, XDND_DRAG_CURSOR(info)); XDND_DRAG_CURSOR(info) = None; } if (view->dragSourceProcs->endedDrag != NULL) { /* this can destroy source view (with a "move" action for example) */ view->dragSourceProcs->endedDrag(view, &XDND_DRAG_ICON_POS(info), deposited); } /* clear remaining draggging infos */ wfree(XDND_SOURCE_INFO(info)); XDND_SOURCE_INFO(info) = NULL; } /* ----- drag cursor ----- */ static void initDragCursor(WMDraggingInfo * info) { WMScreen *scr = sourceScreen(info); XColor cursorFgColor, cursorBgColor; /* green */ cursorFgColor.red = 0x4500; cursorFgColor.green = 0xb000; cursorFgColor.blue = 0x4500; /* white */ cursorBgColor.red = 0xffff; cursorBgColor.green = 0xffff; cursorBgColor.blue = 0xffff; XDND_DRAG_CURSOR(info) = XCreateFontCursor(scr->display, XC_left_ptr); XRecolorCursor(scr->display, XDND_DRAG_CURSOR(info), &cursorFgColor, &cursorBgColor); XFlush(scr->display); } static void recolorCursor(WMDraggingInfo * info, Bool dropIsAllowed) { WMScreen *scr = sourceScreen(info); if (dropIsAllowed) { XDefineCursor(scr->display, scr->rootWin, XDND_DRAG_CURSOR(info)); } else { XDefineCursor(scr->display, scr->rootWin, scr->defaultCursor); } XFlush(scr->display); } /* ----- end of drag cursor ----- */ /* ----- selection procs ----- */ static WMData *convertSelection(WMView * view, Atom selection, Atom target, void *cdata, Atom * type) { WMScreen *scr; WMData *data; char *typeName; /* Parameter not used, but tell the compiler that it is ok */ (void) selection; (void) cdata; scr = W_VIEW_SCREEN(view); typeName = XGetAtomName(scr->display, target); *type = target; if (view->dragSourceProcs->fetchDragData != NULL) { data = view->dragSourceProcs->fetchDragData(view, typeName); } else { data = NULL; } if (typeName != NULL) XFree(typeName); return data; } static void selectionLost(WMView * view, Atom selection, void *cdata) { /* Parameter not used, but tell the compiler that it is ok */ (void) view; (void) selection; (void) cdata; wwarning(_("XDND selection lost during drag operation...")); } static void selectionDone(WMView * view, Atom selection, Atom target, void *cdata) { /* Parameter not used, but tell the compiler that it is ok */ (void) view; (void) selection; (void) target; (void) cdata; #ifdef XDND_DEBUG printf("selection done\n"); #endif } /* ----- end of selection procs ----- */ /* ----- visual part ----- */ static Window makeDragIcon(WMScreen * scr, WMPixmap * pixmap) { Window window; WMSize size; unsigned long flags; XSetWindowAttributes attribs; if (!pixmap) { pixmap = scr->defaultObjectIcon; } size = WMGetPixmapSize(pixmap); flags = CWSaveUnder | CWBackPixmap | CWOverrideRedirect | CWColormap; attribs.save_under = True; attribs.background_pixmap = pixmap->pixmap; attribs.override_redirect = True; attribs.colormap = scr->colormap; window = XCreateWindow(scr->display, scr->rootWin, 0, 0, size.width, size.height, 0, scr->depth, InputOutput, scr->visual, flags, &attribs); #ifdef USE_XSHAPE if (pixmap->mask) { XShapeCombineMask(scr->display, window, ShapeBounding, 0, 0, pixmap->mask, ShapeSet); } #endif return window; } static void slideWindow(Display * dpy, Window win, int srcX, int srcY, int dstX, int dstY) { double x, y, dx, dy; int i; int iterations; iterations = WMIN(MAX_SLIDEBACK_ITER, WMAX(abs(dstX - srcX), abs(dstY - srcY))); x = srcX; y = srcY; dx = (double)(dstX - srcX) / iterations; dy = (double)(dstY - srcY) / iterations; for (i = 0; i <= iterations; i++) { XMoveWindow(dpy, win, x, y); XFlush(dpy); wusleep(800); x += dx; y += dy; } } static int getInitialDragImageCoord(int viewCoord, int mouseCoord, int viewSize, int iconSize) { if (iconSize >= viewSize) { /* center icon coord on view */ return viewCoord - iconSize / 2; } else { /* try to center icon on mouse pos */ if (mouseCoord - iconSize / 2 <= viewCoord) /* if icon was centered on mouse, it would be off view thus, put icon left (resp. top) side at view (resp. top) side */ return viewCoord; else if (mouseCoord + iconSize / 2 >= viewCoord + viewSize) /* if icon was centered on mouse, it would be off view thus, put icon right (resp. bottom) side at view right (resp. bottom) side */ return viewCoord + viewSize - iconSize; else return mouseCoord - iconSize / 2; } } static void initDragImagePos(WMView * view, WMDraggingInfo * info, XEvent * event) { WMSize iconSize = WMGetPixmapSize(view->dragImage); WMSize viewSize = WMGetViewSize(view); WMPoint viewPos; Window foo; XTranslateCoordinates(W_VIEW_SCREEN(view)->display, WMViewXID(view), W_VIEW_SCREEN(view)->rootWin, 0, 0, &(viewPos.x), &(viewPos.y), &foo); /* set icon pos */ XDND_DRAG_ICON_POS(info).x = getInitialDragImageCoord(viewPos.x, event->xmotion.x_root, viewSize.width, iconSize.width); XDND_DRAG_ICON_POS(info).y = getInitialDragImageCoord(viewPos.y, event->xmotion.y_root, viewSize.height, iconSize.height); /* set mouse offset relative to icon */ XDND_MOUSE_OFFSET(info).x = event->xmotion.x_root - XDND_DRAG_ICON_POS(info).x; XDND_MOUSE_OFFSET(info).y = event->xmotion.y_root - XDND_DRAG_ICON_POS(info).y; } static void refreshDragImage(WMView * view, WMDraggingInfo * info) { WMScreen *scr = W_VIEW_SCREEN(view); XMoveWindow(scr->display, XDND_DRAG_ICON(info), XDND_DRAG_ICON_POS(info).x, XDND_DRAG_ICON_POS(info).y); } static void startDragImage(WMView * view, WMDraggingInfo * info, XEvent * event) { WMScreen *scr = W_VIEW_SCREEN(view); XDND_DRAG_ICON(info) = makeDragIcon(scr, view->dragImage); initDragImagePos(view, info, event); refreshDragImage(view, info); XMapRaised(scr->display, XDND_DRAG_ICON(info)); initDragCursor(info); } static void endDragImage(WMDraggingInfo * info, Bool slideBack) { WMView *view = XDND_SOURCE_VIEW(info); Display *dpy = W_VIEW_SCREEN(view)->display; if (slideBack) { WMPoint toLocation; Window foo; XTranslateCoordinates(W_VIEW_SCREEN(view)->display, WMViewXID(view), W_VIEW_SCREEN(view)->rootWin, 0, 0, &(toLocation.x), &(toLocation.y), &foo); slideWindow(dpy, XDND_DRAG_ICON(info), XDND_DRAG_ICON_POS(info).x, XDND_DRAG_ICON_POS(info).y, toLocation.x, toLocation.y); } XDestroyWindow(dpy, XDND_DRAG_ICON(info)); } /* ----- end of visual part ----- */ /* ----- messages ----- */ /* send a DnD message to the destination window */ static Bool sendDnDClientMessage(WMDraggingInfo * info, Atom message, unsigned long data1, unsigned long data2, unsigned long data3, unsigned long data4) { Display *dpy = sourceScreen(info)->display; Window srcWin = WMViewXID(XDND_SOURCE_VIEW(info)); Window destWin = XDND_DEST_WIN(info); if (!W_SendDnDClientMessage(dpy, destWin, message, srcWin, data1, data2, data3, data4)) { /* drop failed */ recolorCursor(info, False); endDragImage(info, True); endDragProcess(info, False); return False; } return True; } static Bool sendEnterMessage(WMDraggingInfo * info) { WMScreen *scr = sourceScreen(info); unsigned long version; if (XDND_DEST_VERSION(info) > 2) { if (XDND_DEST_VERSION(info) < XDND_VERSION) version = XDND_DEST_VERSION(info); else version = XDND_VERSION; } else { version = 3; } return sendDnDClientMessage(info, scr->xdndEnterAtom, (version << 24) | 1, /* 1: support of type list */ XDND_3_TYPES(info)[0], XDND_3_TYPES(info)[1], XDND_3_TYPES(info)[2]); } static Bool sendPositionMessage(WMDraggingInfo * info, WMPoint * mousePos) { WMScreen *scr = sourceScreen(info); WMRect *noPosZone = &(XDND_NO_POS_ZONE(info)); if (noPosZone->size.width != 0 || noPosZone->size.height != 0) { if (mousePos->x < noPosZone->pos.x || mousePos->x > (noPosZone->pos.x + noPosZone->size.width) || mousePos->y < noPosZone->pos.y || mousePos->y > (noPosZone->pos.y + noPosZone->size.height)) { /* send position if out of zone defined by destination */ return sendDnDClientMessage(info, scr->xdndPositionAtom, 0, mousePos->x << 16 | mousePos->y, XDND_TIMESTAMP(info), XDND_SOURCE_ACTION(info)); } /* Nothing to send, always succeed */ return True; } /* send position on each move */ return sendDnDClientMessage(info, scr->xdndPositionAtom, 0, mousePos->x << 16 | mousePos->y, XDND_TIMESTAMP(info), XDND_SOURCE_ACTION(info)); } static Bool sendLeaveMessage(WMDraggingInfo * info) { WMScreen *scr = sourceScreen(info); return sendDnDClientMessage(info, scr->xdndLeaveAtom, 0, 0, 0, 0); } static Bool sendDropMessage(WMDraggingInfo * info) { WMScreen *scr = sourceScreen(info); return sendDnDClientMessage(info, scr->xdndDropAtom, 0, XDND_TIMESTAMP(info), 0, 0); } /* ----- end of messages ----- */ static Atom *getTypeAtomList(WMScreen * scr, WMView * view, int *count) { WMArray *types; Atom *typeAtoms; int i; types = view->dragSourceProcs->dropDataTypes(view); if (types != NULL) { *count = WMGetArrayItemCount(types); if (*count > 0) { typeAtoms = wmalloc((*count) * sizeof(Atom)); for (i = 0; i < *count; i++) { typeAtoms[i] = XInternAtom(scr->display, WMGetFromArray(types, i), False); } /* WMFreeArray(types); */ return typeAtoms; } /* WMFreeArray(types); */ } *count = 1; typeAtoms = wmalloc(sizeof(Atom)); *typeAtoms = None; return typeAtoms; } static void registerDropTypes(WMScreen * scr, WMView * view, WMDraggingInfo * info) { Atom *typeList; int i, count; typeList = getTypeAtomList(scr, view, &count); /* store the first 3 types */ for (i = 0; i < 3 && i < count; i++) XDND_3_TYPES(info)[i] = typeList[i]; for (; i < 3; i++) XDND_3_TYPES(info)[i] = None; /* store the entire type list */ XChangeProperty(scr->display, WMViewXID(view), scr->xdndTypeListAtom, XA_ATOM, XDND_PROPERTY_FORMAT, PropModeReplace, (unsigned char *)typeList, count); } static void registerOperationList(WMScreen * scr, WMView * view, WMArray * operationArray) { Atom *actionList; WMDragOperationType operation; int count = WMGetArrayItemCount(operationArray); int i; actionList = wmalloc(sizeof(Atom) * count); for (i = 0; i < count; i++) { operation = WMGetDragOperationItemType(WMGetFromArray(operationArray, i)); actionList[i] = W_OperationToAction(scr, operation); } XChangeProperty(scr->display, WMViewXID(view), scr->xdndActionListAtom, XA_ATOM, XDND_PROPERTY_FORMAT, PropModeReplace, (unsigned char *)actionList, count); } static void registerDescriptionList(WMScreen * scr, WMView * view, WMArray * operationArray) { char *text, *textListItem, *textList; int count = WMGetArrayItemCount(operationArray); int i; int size = 0; /* size of XA_STRING info */ for (i = 0; i < count; i++) { size += strlen(WMGetDragOperationItemText(WMGetFromArray(operationArray, i))) + 1 /* NULL */; } /* create text list */ textList = wmalloc(size); textListItem = textList; for (i = 0; i < count; i++) { text = WMGetDragOperationItemText(WMGetFromArray(operationArray, i)); wstrlcpy(textListItem, text, size); /* to next text offset */ textListItem = &(textListItem[strlen(textListItem) + 1]); } XChangeProperty(scr->display, WMViewXID(view), scr->xdndActionDescriptionAtom, XA_STRING, XDND_ACTION_DESCRIPTION_FORMAT, PropModeReplace, (unsigned char *)textList, size); } /* called if wanted operation is WDOperationAsk */ static void registerSupportedOperations(WMView * view) { WMScreen *scr = W_VIEW_SCREEN(view); WMArray *operationArray; operationArray = view->dragSourceProcs->askedOperations(view); registerOperationList(scr, view, operationArray); registerDescriptionList(scr, view, operationArray); /* WMFreeArray(operationArray); */ } static void initSourceDragInfo(WMView * sourceView, WMDraggingInfo * info) { WMRect emptyZone; XDND_SOURCE_INFO(info) = (W_DragSourceInfo *) wmalloc(sizeof(W_DragSourceInfo)); XDND_SOURCE_VIEW(info) = sourceView; XDND_DEST_WIN(info) = None; XDND_DRAG_ICON(info) = None; XDND_SOURCE_ACTION(info) = W_OperationToAction(W_VIEW_SCREEN(sourceView), sourceView->dragSourceProcs-> wantedDropOperation(sourceView)); XDND_DEST_ACTION(info) = None; XDND_SOURCE_STATE(info) = idleState; emptyZone.pos = wmkpoint(0, 0); emptyZone.size = wmksize(0, 0); XDND_NO_POS_ZONE(info) = emptyZone; } /* Returned array is destroyed after dropDataTypes call */ static WMArray *defDropDataTypes(WMView * self) { /* Parameter not used, but tell the compiler that it is ok */ (void) self; return NULL; } static WMDragOperationType defWantedDropOperation(WMView * self) { /* Parameter not used, but tell the compiler that it is ok */ (void) self; return WDOperationNone; } /* Must be defined if wantedDropOperation return WDOperationAsk (useless otherwise). Return a WMDragOperationItem array (destroyed after call). A WMDragOperationItem links a label to an operation. static WMArray* defAskedOperations(WMView *self); */ static Bool defAcceptDropOperation(WMView * self, WMDragOperationType allowedOperation) { /* Parameter not used, but tell the compiler that it is ok */ (void) self; (void) allowedOperation; return False; } static void defBeganDrag(WMView * self, WMPoint * point) { /* Parameter not used, but tell the compiler that it is ok */ (void) self; (void) point; } static void defEndedDrag(WMView * self, WMPoint * point, Bool deposited) { /* Parameter not used, but tell the compiler that it is ok */ (void) self; (void) point; (void) deposited; } /* Returned data is not destroyed */ static WMData *defFetchDragData(WMView * self, char *type) { /* Parameter not used, but tell the compiler that it is ok */ (void) self; (void) type; return NULL; } void WMSetViewDragSourceProcs(WMView * view, WMDragSourceProcs * procs) { if (view->dragSourceProcs) wfree(view->dragSourceProcs); view->dragSourceProcs = wmalloc(sizeof(WMDragSourceProcs)); *view->dragSourceProcs = *procs; if (procs->dropDataTypes == NULL) view->dragSourceProcs->dropDataTypes = defDropDataTypes; if (procs->wantedDropOperation == NULL) view->dragSourceProcs->wantedDropOperation = defWantedDropOperation; /* Note: askedOperations can be NULL, if wantedDropOperation never returns WDOperationAsk. */ if (procs->acceptDropOperation == NULL) view->dragSourceProcs->acceptDropOperation = defAcceptDropOperation; if (procs->beganDrag == NULL) view->dragSourceProcs->beganDrag = defBeganDrag; if (procs->endedDrag == NULL) view->dragSourceProcs->endedDrag = defEndedDrag; if (procs->fetchDragData == NULL) view->dragSourceProcs->fetchDragData = defFetchDragData; } static Bool isXdndAware(WMScreen * scr, Window win) { Atom type; int format; unsigned long count, remain; unsigned char *winXdndVersion; if (win == None) return False; XGetWindowProperty(scr->display, win, scr->xdndAwareAtom, 0, 1, False, XA_ATOM, &type, &format, &count, &remain, &winXdndVersion); if (type != XA_ATOM || format != XDND_PROPERTY_FORMAT || count == 0 || !winXdndVersion) { if (winXdndVersion) XFree(winXdndVersion); return False; } XFree(winXdndVersion); return (count == 1); /* xdnd version is set */ } static Window *windowChildren(Display * dpy, Window win, unsigned *nchildren) { Window *children; Window foo, bar; if (!XQueryTree(dpy, win, &foo, &bar, &children, nchildren)) { *nchildren = 0; return NULL; } else return children; } static Window lookForAwareWindow(WMScreen * scr, WMPoint * mousePos, Window win) { int tmpx, tmpy; Window child; /* Since xdnd v3, only the toplevel window should be aware */ if (isXdndAware(scr, win)) return win; /* inspect child under pointer */ if (XTranslateCoordinates(scr->display, scr->rootWin, win, mousePos->x, mousePos->y, &tmpx, &tmpy, &child)) { if (child == None) return None; else return lookForAwareWindow(scr, mousePos, child); } return None; } static Window findDestination(WMDraggingInfo * info, WMPoint * mousePos) { WMScreen *scr = sourceScreen(info); unsigned nchildren; Window *children = windowChildren(scr->display, scr->rootWin, &nchildren); int i; XWindowAttributes attr; if (isXdndAware(scr, scr->rootWin)) return scr->rootWin; /* exclude drag icon (and upper) from search */ for (i = nchildren - 1; i >= 0; i--) { if (children[i] == XDND_DRAG_ICON(info)) { i--; break; } } if (i < 0) { /* root window has no child under drag icon, and is not xdnd aware. */ return None; } /* inspecting children, from upper to lower */ for (; i >= 0; i--) { if (XGetWindowAttributes(scr->display, children[i], &attr) && attr.map_state == IsViewable && mousePos->x >= attr.x && mousePos->y >= attr.y && mousePos->x < attr.x + attr.width && mousePos->y < attr.y + attr.height) { return lookForAwareWindow(scr, mousePos, children[i]); } } /* No child window under drag pointer */ return None; } static void storeDestinationProtocolVersion(WMDraggingInfo * info) { Atom type; int format; unsigned long count, remain; unsigned char *winXdndVersion; WMScreen *scr = W_VIEW_SCREEN(XDND_SOURCE_VIEW(info)); wassertr(XDND_DEST_WIN(info) != None); if (XGetWindowProperty(scr->display, XDND_DEST_WIN(info), scr->xdndAwareAtom, 0, 1, False, XA_ATOM, &type, &format, &count, &remain, &winXdndVersion) == Success) { XDND_DEST_VERSION(info) = *winXdndVersion; XFree(winXdndVersion); } else { XDND_DEST_VERSION(info) = 0; wwarning(_("could not get XDND version for target of drop")); } } static void initMotionProcess(WMView * view, WMDraggingInfo * info, XEvent * event, WMPoint * startLocation) { WMScreen *scr = W_VIEW_SCREEN(view); /* take ownership of XdndSelection */ XDND_SELECTION_PROCS(info) = (WMSelectionProcs *) wmalloc(sizeof(WMSelectionProcs)); XDND_SELECTION_PROCS(info)->convertSelection = convertSelection; XDND_SELECTION_PROCS(info)->selectionLost = selectionLost; XDND_SELECTION_PROCS(info)->selectionDone = selectionDone; XDND_TIMESTAMP(info) = event->xmotion.time; if (!WMCreateSelectionHandler(view, scr->xdndSelectionAtom, CurrentTime, XDND_SELECTION_PROCS(info), NULL)) { wwarning(_("could not get ownership of XDND selection")); return; } registerDropTypes(scr, view, info); if (XDND_SOURCE_ACTION(info) == W_VIEW_SCREEN(view)->xdndActionAsk) registerSupportedOperations(view); if (view->dragSourceProcs->beganDrag != NULL) { view->dragSourceProcs->beganDrag(view, startLocation); } } static void processMotion(WMDraggingInfo * info, WMPoint * mousePos) { Window newDestination = findDestination(info, mousePos); W_DragSourceStopTimer(); if (newDestination != XDND_DEST_WIN(info)) { recolorCursor(info, False); if (XDND_DEST_WIN(info) != None) { /* leaving a xdnd window */ sendLeaveMessage(info); } XDND_DEST_WIN(info) = newDestination; XDND_DEST_ACTION(info) = None; XDND_NO_POS_ZONE(info).size.width = 0; XDND_NO_POS_ZONE(info).size.height = 0; if (newDestination != None) { /* entering a xdnd window */ XDND_SOURCE_STATE(info) = idleState; storeDestinationProtocolVersion(info); if (!sendEnterMessage(info)) { XDND_DEST_WIN(info) = None; return; } W_DragSourceStartTimer(info); } else { XDND_SOURCE_STATE(info) = NULL; } } else { if (XDND_DEST_WIN(info) != None) { if (!sendPositionMessage(info, mousePos)) { XDND_DEST_WIN(info) = None; return; } W_DragSourceStartTimer(info); } } } static Bool processButtonRelease(WMDraggingInfo * info) { if (XDND_SOURCE_STATE(info) == dropAllowedState) { /* begin drop */ W_DragSourceStopTimer(); if (!sendDropMessage(info)) return False; W_DragSourceStartTimer(info); return True; } else { if (XDND_DEST_WIN(info) != None) sendLeaveMessage(info); W_DragSourceStopTimer(); return False; } } Bool WMIsDraggingFromView(WMView * view) { WMDraggingInfo *info = &W_VIEW_SCREEN(view)->dragInfo; return (XDND_SOURCE_INFO(info) != NULL && XDND_SOURCE_STATE(info) != finishDropState); /* return W_VIEW_SCREEN(view)->dragInfo.sourceInfo != NULL; */ } void WMDragImageFromView(WMView * view, XEvent * event) { WMDraggingInfo *info = &W_VIEW_SCREEN(view)->dragInfo; WMPoint mouseLocation; switch (event->type) { case ButtonPress: if (event->xbutton.button == Button1) { XEvent nextEvent; XPeekEvent(event->xbutton.display, &nextEvent); /* Initialize only if a drag really begins (avoid clicks) */ if (nextEvent.type == MotionNotify) { initSourceDragInfo(view, info); } } break; case ButtonRelease: if (WMIsDraggingFromView(view)) { Bool dropBegan = processButtonRelease(info); recolorCursor(info, False); if (dropBegan) { endDragImage(info, False); XDND_SOURCE_STATE(info) = finishDropState; } else { /* drop failed */ endDragImage(info, True); endDragProcess(info, False); } } break; case MotionNotify: if (WMIsDraggingFromView(view)) { mouseLocation = wmkpoint(event->xmotion.x_root, event->xmotion.y_root); if (abs(XDND_DRAG_ICON_POS(info).x - mouseLocation.x) >= MIN_X_MOVE_OFFSET || abs(XDND_DRAG_ICON_POS(info).y - mouseLocation.y) >= MIN_Y_MOVE_OFFSET) { if (XDND_DRAG_ICON(info) == None) { initMotionProcess(view, info, event, &mouseLocation); startDragImage(view, info, event); } else { XDND_DRAG_ICON_POS(info).x = mouseLocation.x - XDND_MOUSE_OFFSET(info).x; XDND_DRAG_ICON_POS(info).y = mouseLocation.y - XDND_MOUSE_OFFSET(info).y; refreshDragImage(view, info); processMotion(info, &mouseLocation); } } } break; } } /* Minimal mouse events handler: no right or double-click detection, only drag is supported */ static void dragImageHandler(XEvent * event, void *cdata) { WMView *view = (WMView *) cdata; WMDragImageFromView(view, event); } /* ----- source states ----- */ #ifdef XDND_DEBUG static void traceStatusMsg(Display * dpy, XClientMessageEvent * statusEvent) { printf("Xdnd status message:\n"); if (statusEvent->data.l[1] & 0x2UL) printf("\tsend position on every move\n"); else { int x, y, w, h; x = statusEvent->data.l[2] >> 16; y = statusEvent->data.l[2] & 0xFFFFL; w = statusEvent->data.l[3] >> 16; h = statusEvent->data.l[3] & 0xFFFFL; printf("\tsend position out of ((%d,%d) , (%d,%d))\n", x, y, x + w, y + h); } if (statusEvent->data.l[1] & 0x1L) printf("\tallowed action: %s\n", XGetAtomName(dpy, statusEvent->data.l[4])); else printf("\tno action allowed\n"); } #endif static void storeDropAction(WMDraggingInfo * info, Atom destAction) { WMView *sourceView = XDND_SOURCE_VIEW(info); WMScreen *scr = W_VIEW_SCREEN(sourceView); if (sourceView->dragSourceProcs->acceptDropOperation != NULL) { if (sourceView->dragSourceProcs->acceptDropOperation(sourceView, W_ActionToOperation(scr, destAction))) XDND_DEST_ACTION(info) = destAction; else XDND_DEST_ACTION(info) = None; } else { XDND_DEST_ACTION(info) = destAction; } } static void storeStatusMessageInfos(WMDraggingInfo * info, XClientMessageEvent * statusEvent) { WMRect *noPosZone = &(XDND_NO_POS_ZONE(info)); #ifdef XDND_DEBUG traceStatusMsg(sourceScreen(info)->display, statusEvent); #endif if (statusEvent->data.l[1] & 0x2UL) { /* bit 1 set: destination wants position messages on every move */ noPosZone->size.width = 0; noPosZone->size.height = 0; } else { /* don't send another position message while in given rectangle */ noPosZone->pos.x = statusEvent->data.l[2] >> 16; noPosZone->pos.y = statusEvent->data.l[2] & 0xFFFFL; noPosZone->size.width = statusEvent->data.l[3] >> 16; noPosZone->size.height = statusEvent->data.l[3] & 0xFFFFL; } if ((statusEvent->data.l[1] & 0x1L) || statusEvent->data.l[4] != None) { /* destination accept drop */ storeDropAction(info, statusEvent->data.l[4]); } else { XDND_DEST_ACTION(info) = None; } } static void *idleState(WMView * view, XClientMessageEvent * event, WMDraggingInfo * info) { WMScreen *scr; Atom destMsg = event->message_type; scr = W_VIEW_SCREEN(view); if (destMsg == scr->xdndStatusAtom) { storeStatusMessageInfos(info, event); if (XDND_DEST_ACTION(info) != None) { recolorCursor(info, True); W_DragSourceStartTimer(info); return dropAllowedState; } else { /* drop denied */ recolorCursor(info, False); return idleState; } } if (destMsg == scr->xdndFinishedAtom) { wwarning("received xdndFinishedAtom before drop began"); } W_DragSourceStartTimer(info); return idleState; } static void *dropAllowedState(WMView * view, XClientMessageEvent * event, WMDraggingInfo * info) { WMScreen *scr = W_VIEW_SCREEN(view); Atom destMsg = event->message_type; if (destMsg == scr->xdndStatusAtom) { storeStatusMessageInfos(info, event); if (XDND_DEST_ACTION(info) == None) { /* drop denied */ recolorCursor(info, False); return idleState; } } W_DragSourceStartTimer(info); return dropAllowedState; } static void *finishDropState(WMView * view, XClientMessageEvent * event, WMDraggingInfo * info) { WMScreen *scr = W_VIEW_SCREEN(view); Atom destMsg = event->message_type; if (destMsg == scr->xdndFinishedAtom) { endDragProcess(info, True); return NULL; } W_DragSourceStartTimer(info); return finishDropState; } /* ----- end of source states ----- */ /* ----- source timer ----- */ static void dragSourceResponseTimeOut(void *source) { WMView *view = (WMView *) source; WMDraggingInfo *info = &(W_VIEW_SCREEN(view)->dragInfo); wwarning(_("delay for drag destination response expired")); sendLeaveMessage(info); recolorCursor(info, False); if (XDND_SOURCE_STATE(info) == finishDropState) { /* drop failed */ endDragImage(info, True); endDragProcess(info, False); } else { XDND_SOURCE_STATE(info) = idleState; } } void W_DragSourceStopTimer() { if (dndSourceTimer != NULL) { WMDeleteTimerHandler(dndSourceTimer); dndSourceTimer = NULL; } } void W_DragSourceStartTimer(WMDraggingInfo * info) { W_DragSourceStopTimer(); dndSourceTimer = WMAddTimerHandler(XDND_DESTINATION_RESPONSE_MAX_DELAY, dragSourceResponseTimeOut, XDND_SOURCE_VIEW(info)); } /* ----- End of Destination timer ----- */ void W_DragSourceStateHandler(WMDraggingInfo * info, XClientMessageEvent * event) { WMView *view; W_DndState *newState; if (XDND_SOURCE_VIEW_STORED(info)) { if (XDND_SOURCE_STATE(info) != NULL) { view = XDND_SOURCE_VIEW(info); #ifdef XDND_DEBUG printf("current source state: %s\n", stateName(XDND_SOURCE_STATE(info))); #endif newState = (W_DndState *) XDND_SOURCE_STATE(info) (view, event, info); #ifdef XDND_DEBUG printf("new source state: %s\n", stateName(newState)); #endif if (newState != NULL) XDND_SOURCE_STATE(info) = newState; /* else drop finished, and info has been flushed */ } } else { wwarning("received DnD message without having a target"); } } void WMSetViewDragImage(WMView * view, WMPixmap * dragImage) { if (view->dragImage != NULL) WMReleasePixmap(view->dragImage); view->dragImage = WMRetainPixmap(dragImage); } void WMReleaseViewDragImage(WMView * view) { if (view->dragImage != NULL) WMReleasePixmap(view->dragImage); } /* Create a drag handler, associating drag event masks with dragEventProc */ void WMCreateDragHandler(WMView * view, WMEventProc * dragEventProc, void *clientData) { WMCreateEventHandler(view, ButtonPressMask | ButtonReleaseMask | Button1MotionMask, dragEventProc, clientData); } void WMDeleteDragHandler(WMView * view, WMEventProc * dragEventProc, void *clientData) { WMDeleteEventHandler(view, ButtonPressMask | ButtonReleaseMask | Button1MotionMask, dragEventProc, clientData); } /* set default drag handler for view */ void WMSetViewDraggable(WMView * view, WMDragSourceProcs * dragSourceProcs, WMPixmap * dragImage) { wassertr(dragImage != NULL); view->dragImage = WMRetainPixmap(dragImage); WMSetViewDragSourceProcs(view, dragSourceProcs); WMCreateDragHandler(view, dragImageHandler, view); } void WMUnsetViewDraggable(WMView * view) { if (view->dragSourceProcs) { wfree(view->dragSourceProcs); view->dragSourceProcs = NULL; } WMReleaseViewDragImage(view); WMDeleteDragHandler(view, dragImageHandler, view); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/wruler.c�������������������������������������������������������������������0000644�0001750�0001750�00000032224�13642357773�013425� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * WINGs WMRuler: nifty ruler widget for WINGs :-) * * Copyright (c) 1999-2000 Nwanua Elumeze * * 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., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301, USA. */ #include "WINGsP.h" #include "wconfig.h" #define MIN_DOC_WIDTH 10 typedef struct W_Ruler { W_Class widgetClass; W_View *view; W_View *pview; /* the parent's view (for drawing the line) */ WMAction *moveAction; /* what to when while moving */ WMAction *releaseAction; /* what to do when released */ void *clientData; WMColor *fg; GC fgGC, bgGC; WMFont *font; WMRulerMargins margins; int offset; int motion; /* the position of the _moving_ marker(s) */ int end; /* the last tick on the baseline (restrict markers to it) */ Pixmap drawBuffer; struct { unsigned int whichMarker:3; /* 0, 1, 2, 3, 4, 5, 6 */ /* none, left, right, first, body, tabstop, first & body */ unsigned int buttonPressed:1; unsigned int redraw:1; unsigned int RESERVED:27; } flags; } Ruler; /* Marker for left margin |\ | \ |__\ | | */ static void drawLeftMarker(Ruler * rPtr) { XPoint points[4]; int xpos = (rPtr->flags.whichMarker == 1 ? rPtr->motion : rPtr->margins.left); XDrawLine(rPtr->view->screen->display, rPtr->drawBuffer, rPtr->fgGC, xpos, 8, xpos, 22); points[0].x = xpos; points[0].y = 1; points[1].x = points[0].x + 6; points[1].y = 8; points[2].x = points[0].x + 6; points[2].y = 9; points[3].x = points[0].x; points[3].y = 9; XFillPolygon(rPtr->view->screen->display, rPtr->drawBuffer, rPtr->fgGC, points, 4, Convex, CoordModeOrigin); } /* Marker for right margin /| / | /__| | | */ static void drawRightMarker(Ruler * rPtr) { XPoint points[4]; int xpos = (rPtr->flags.whichMarker == 2 ? rPtr->motion : rPtr->margins.right); XDrawLine(rPtr->view->screen->display, rPtr->drawBuffer, rPtr->fgGC, xpos, 8, xpos, 22); points[0].x = xpos + 1; points[0].y = 0; points[1].x = points[0].x - 6; points[1].y = 7; points[2].x = points[0].x - 6; points[2].y = 9; points[3].x = points[0].x; points[3].y = 9; XFillPolygon(rPtr->view->screen->display, rPtr->drawBuffer, rPtr->fgGC, points, 4, Convex, CoordModeOrigin); } /* Marker for first line only _____ |___| | */ static void drawFirstMarker(Ruler * rPtr) { int xpos = ((rPtr->flags.whichMarker == 3 || rPtr->flags.whichMarker == 6) ? rPtr->motion : rPtr->margins.first); XFillRectangle(rPtr->view->screen->display, rPtr->drawBuffer, rPtr->fgGC, xpos - 5, 10, 11, 5); XDrawLine(rPtr->view->screen->display, rPtr->drawBuffer, rPtr->fgGC, xpos, 12, xpos, 22); } /* Marker for rest of body _____ \ / \./ */ static void drawBodyMarker(Ruler * rPtr) { XPoint points[4]; int xpos = ((rPtr->flags.whichMarker == 4 || rPtr->flags.whichMarker == 6) ? rPtr->motion : rPtr->margins.body); points[0].x = xpos - 5; points[0].y = 16; points[1].x = points[0].x + 11; points[1].y = 16; points[2].x = points[0].x + 5; points[2].y = 22; XFillPolygon(rPtr->view->screen->display, rPtr->drawBuffer, rPtr->fgGC, points, 3, Convex, CoordModeOrigin); } static void createDrawBuffer(Ruler * rPtr) { if (!rPtr->view->flags.realized) return; if (rPtr->drawBuffer) XFreePixmap(rPtr->view->screen->display, rPtr->drawBuffer); rPtr->drawBuffer = XCreatePixmap(rPtr->view->screen->display, rPtr->view->window, rPtr->view->size.width, 40, rPtr->view->screen->depth); XFillRectangle(rPtr->view->screen->display, rPtr->drawBuffer, rPtr->bgGC, 0, 0, rPtr->view->size.width, 40); } static void drawRulerOnPixmap(Ruler * rPtr) { int i, j, w, m; char c[3]; int marks[9] = { 11, 3, 5, 3, 7, 3, 5, 3 }; if (!rPtr->drawBuffer || !rPtr->view->flags.realized) return; XFillRectangle(rPtr->view->screen->display, rPtr->drawBuffer, rPtr->bgGC, 0, 0, rPtr->view->size.width, 40); WMDrawString(rPtr->view->screen, rPtr->drawBuffer, rPtr->fg, rPtr->font, rPtr->margins.left + 2, 26, _("0 inches"), 10); /* marker ticks */ i = j = m = 0; w = rPtr->view->size.width - rPtr->margins.left; while (m < w) { XDrawLine(rPtr->view->screen->display, rPtr->drawBuffer, rPtr->fgGC, rPtr->margins.left + m, 23, rPtr->margins.left + m, marks[i % 8] + 23); if (i != 0 && i % 8 == 0) { snprintf(c, sizeof(c), "%hu", ++j); WMDrawString(rPtr->view->screen, rPtr->drawBuffer, rPtr->fg, rPtr->font, rPtr->margins.left + 2 + m, 26, c, 2); } m = (++i) * 10; } rPtr->end = rPtr->margins.left + m - 10; if (rPtr->margins.right > rPtr->end) rPtr->margins.right = rPtr->end; /* base line */ XDrawLine(rPtr->view->screen->display, rPtr->drawBuffer, rPtr->fgGC, rPtr->margins.left, 22, rPtr->margins.left + m - 10, 22); drawLeftMarker(rPtr); drawRightMarker(rPtr); drawFirstMarker(rPtr); drawBodyMarker(rPtr); rPtr->flags.redraw = False; } static void paintRuler(Ruler * rPtr) { if (!rPtr->drawBuffer || !rPtr->view->flags.realized) return; if (rPtr->flags.redraw) drawRulerOnPixmap(rPtr); XCopyArea(rPtr->view->screen->display, rPtr->drawBuffer, rPtr->view->window, rPtr->bgGC, 0, 0, rPtr->view->size.width, 40, 0, 0); } static Bool verifyMarkerMove(Ruler * rPtr, int x) { if (rPtr->flags.whichMarker < 1 || rPtr->flags.whichMarker > 6) return False; switch (rPtr->flags.whichMarker) { case 1: if (x > rPtr->margins.right - 10 || x < rPtr->offset || rPtr->margins.body + x > rPtr->margins.right - MIN_DOC_WIDTH || rPtr->margins.first + x > rPtr->margins.right - MIN_DOC_WIDTH) return False; break; case 2: if (x < rPtr->margins.first + MIN_DOC_WIDTH || x < rPtr->margins.body + MIN_DOC_WIDTH || x < rPtr->margins.left + MIN_DOC_WIDTH || x > rPtr->end) /*rPtr->view->size.width) */ return False; break; case 3: if (x >= rPtr->margins.right - MIN_DOC_WIDTH || x < rPtr->margins.left) return False; break; case 4: if (x >= rPtr->margins.right - MIN_DOC_WIDTH || x < rPtr->margins.left) return False; break; case 6: if (x >= rPtr->margins.right - MIN_DOC_WIDTH || x < rPtr->margins.left) return False; break; default: return False; } rPtr->motion = x; return True; } static int whichMarker(Ruler * rPtr, int x, int y) { if (x < rPtr->offset || y > 22) return 0; if (rPtr->margins.left - x >= -6 && y <= 9 && (rPtr->margins.left - x <= 0) && y >= 4) { rPtr->motion = rPtr->margins.left; return 1; } if (rPtr->margins.right - x >= -1 && y <= 11 && rPtr->margins.right - x <= 5 && y >= 4) { rPtr->motion = rPtr->margins.right; return 2; } #if 0 /* both first and body? */ if (rPtr->margins.first - x <= 4 && rPtr->margins.first - x >= -5 && rPtr->margins.body - x <= 4 && rPtr->margins.body - x >= -5 && y >= 15 && y <= 17) { rPtr->motion = rPtr->margins.first; return 6; } #endif if (rPtr->margins.first - x <= 4 && y <= 15 && rPtr->margins.first - x >= -5 && y >= 10) { rPtr->motion = rPtr->margins.first; return 3; } if (rPtr->margins.body - x <= 4 && y <= 21 && rPtr->margins.body - x >= -5 && y >= 17) { rPtr->motion = rPtr->margins.body; return 4; } /* do tabs (5) */ return 0; } static void rulerDidResize(W_ViewDelegate * self, WMView * view) { Ruler *rPtr = (Ruler *) view->self; /* Parameter not used, but tell the compiler that it is ok */ (void) self; createDrawBuffer(rPtr); rPtr->flags.redraw = True; paintRuler(rPtr); } static void handleEvents(XEvent * event, void *data) { Ruler *rPtr = (Ruler *) data; switch (event->type) { case Expose: rulerDidResize(rPtr->view->delegate, rPtr->view); break; case MotionNotify: if (rPtr->flags.buttonPressed && (event->xmotion.state & Button1Mask)) { if (verifyMarkerMove(rPtr, event->xmotion.x)) { GC gc = WMColorGC(WMDarkGrayColor(rPtr->view->screen)); if (rPtr->moveAction) (rPtr->moveAction) (rPtr, rPtr->clientData); rPtr->flags.redraw = True; paintRuler(rPtr); XSetLineAttributes(rPtr->view->screen->display, gc, 1, LineSolid, CapNotLast, JoinMiter); XDrawLine(rPtr->pview->screen->display, rPtr->pview->window, gc, rPtr->motion + 1, 40, rPtr->motion + 1, rPtr->pview->size.height - 5); } } break; case ButtonPress: if (event->xbutton.button != Button1) return; rPtr->flags.buttonPressed = True; rPtr->flags.whichMarker = whichMarker(rPtr, event->xmotion.x, event->xmotion.y); break; case ButtonRelease: if (event->xbutton.button != Button1) return; rPtr->flags.buttonPressed = False; switch (rPtr->flags.whichMarker) { case 1:{ int change = rPtr->margins.left - rPtr->motion; rPtr->margins.first -= change; rPtr->margins.body -= change; rPtr->margins.left = rPtr->motion; rPtr->flags.redraw = True; paintRuler(rPtr); break; } case 2: rPtr->margins.right = rPtr->motion; break; case 3: rPtr->margins.first = rPtr->motion; break; case 4: rPtr->margins.body = rPtr->motion; break; case 6: rPtr->margins.first = rPtr->margins.body = rPtr->motion; break; } if (rPtr->releaseAction) (rPtr->releaseAction) (rPtr, rPtr->clientData); break; } } W_ViewDelegate _RulerViewDelegate = { NULL, NULL, rulerDidResize, NULL, NULL }; WMRuler *WMCreateRuler(WMWidget * parent) { Ruler *rPtr = wmalloc(sizeof(Ruler)); unsigned int w = WMWidgetWidth(parent); rPtr->widgetClass = WC_Ruler; rPtr->view = W_CreateView(W_VIEW(parent)); if (!rPtr->view) { wfree(rPtr); return NULL; } rPtr->view->self = rPtr; rPtr->drawBuffer = (Pixmap) NULL; W_ResizeView(rPtr->view, w, 40); WMCreateEventHandler(rPtr->view, ExposureMask | StructureNotifyMask | EnterWindowMask | LeaveWindowMask | FocusChangeMask | ButtonReleaseMask | ButtonPressMask | KeyReleaseMask | KeyPressMask | Button1MotionMask, handleEvents, rPtr); rPtr->view->delegate = &_RulerViewDelegate; rPtr->fg = WMBlackColor(rPtr->view->screen); rPtr->fgGC = WMColorGC(rPtr->fg); rPtr->bgGC = WMColorGC(WMGrayColor(rPtr->view->screen)); rPtr->font = WMSystemFontOfSize(rPtr->view->screen, 8); rPtr->offset = 22; rPtr->margins.left = 22; rPtr->margins.body = 22; rPtr->margins.first = 42; rPtr->margins.right = (w < 502 ? w : 502); rPtr->margins.tabs = NULL; rPtr->flags.whichMarker = 0; /* none */ rPtr->flags.buttonPressed = False; rPtr->flags.redraw = True; rPtr->moveAction = NULL; rPtr->releaseAction = NULL; rPtr->pview = W_VIEW(parent); return rPtr; } void WMSetRulerMargins(WMRuler * rPtr, WMRulerMargins margins) { if (!rPtr) return; rPtr->margins.left = margins.left + rPtr->offset; rPtr->margins.right = margins.right + rPtr->offset; rPtr->margins.first = margins.first + rPtr->offset; rPtr->margins.body = margins.body + rPtr->offset; rPtr->margins.tabs = margins.tabs; /*for loop */ rPtr->flags.redraw = True; paintRuler(rPtr); } WMRulerMargins *WMGetRulerMargins(WMRuler * rPtr) { WMRulerMargins *margins = wmalloc(sizeof(WMRulerMargins)); if (!rPtr) { margins->first = margins->body = margins->left = 0; margins->right = 100; return margins; } margins->left = rPtr->margins.left - rPtr->offset; margins->right = rPtr->margins.right - rPtr->offset; margins->first = rPtr->margins.first - rPtr->offset; margins->body = rPtr->margins.body - rPtr->offset; /*for */ margins->tabs = rPtr->margins.tabs; return margins; } Bool WMIsMarginEqualToMargin(WMRulerMargins * aMargin, WMRulerMargins * anotherMargin) { if (aMargin == anotherMargin) return True; else if (!aMargin || !anotherMargin) return False; if (aMargin->left != anotherMargin->left) return False; if (aMargin->first != anotherMargin->first) return False; if (aMargin->body != anotherMargin->body) return False; if (aMargin->right != anotherMargin->right) return False; return True; } void WMSetRulerOffset(WMRuler * rPtr, int pixels) { if (!rPtr || pixels < 0 || pixels + MIN_DOC_WIDTH >= rPtr->view->size.width) return; rPtr->offset = pixels; /*rulerDidResize(rPtr, rPtr->view); */ } int WMGetRulerOffset(WMRuler * rPtr) { if (!rPtr) return 0; /* what value should return if no ruler? -1 or 0? */ return rPtr->offset; } void WMSetRulerReleaseAction(WMRuler * rPtr, WMAction * action, void *clientData) { if (!rPtr) return; rPtr->releaseAction = action; rPtr->clientData = clientData; } void WMSetRulerMoveAction(WMRuler * rPtr, WMAction * action, void *clientData) { if (!rPtr) return; rPtr->moveAction = action; rPtr->clientData = clientData; } /* _which_ one was released */ int WMGetReleasedRulerMargin(WMRuler * rPtr) { if (!rPtr) return 0; return rPtr->flags.whichMarker; } /* _which_ one is being grabbed */ int WMGetGrabbedRulerMargin(WMRuler * rPtr) { if (!rPtr) return 0; return rPtr->flags.whichMarker; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/wcolorpanel.c��������������������������������������������������������������0000644�0001750�0001750�00000325112�13642357773�014433� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * ColorPanel for WINGs * * by ]d : Original idea and basic initial code * Pascal Hofstee : Code for wheeldrawing and calculating * colors from it. * Primary coder of this Color Panel. * Alban Hertroys : Optimizations for algorithms for color- * wheel. Also custom ColorPalettes and * magnifying glass. Secondary coder ;) * Alfredo K. Kojima : For pointing out memory-allocation * problems and similair code-issues * Marco van Hylckama-Vlieg : For once again doing the artwork ;-) * */ /* TODO: * - Look at further optimization of colorWheel matrix calculation. * It appears to be rather symmetric in angles of 60 degrees, * while it is optimized in angles of 90 degrees. * - Custom color-lists and custom colors in custom color-lists. * - Stored colors * - Resizing */ #include "wconfig.h" #include "WINGsP.h" #include "rgb.h" #include <errno.h> #include <math.h> #include <unistd.h> #include <ctype.h> #include <fcntl.h> #include <sys/types.h> #include <sys/stat.h> #include <dirent.h> /* BUG There's something fishy with shaped windows */ /* Whithout shape extension the magnified image is completely broken -Dan */ #ifdef USE_XSHAPE # include <X11/extensions/shape.h> #endif char *WMColorPanelColorChangedNotification = "WMColorPanelColorChangedNotification"; /* * Bitmaps for magnifying glass cursor */ /* Cursor */ #define Cursor_x_hot 11 #define Cursor_y_hot 11 #define Cursor_width 32 #define Cursor_height 32 static unsigned char Cursor_bits[] = { 0x00, 0x7e, 0x00, 0x00, 0xc0, 0x81, 0x03, 0x00, 0x20, 0x00, 0x04, 0x00, 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x04, 0x00, 0x20, 0x00, 0x02, 0x00, 0x40, 0x00, 0x02, 0x00, 0x40, 0x00, 0x02, 0x00, 0x40, 0x00, 0x01, 0x42, 0x80, 0x00, 0x01, 0x24, 0x80, 0x00, 0x01, 0x00, 0x80, 0x00, 0x01, 0x00, 0x80, 0x00, 0x01, 0x24, 0x80, 0x00, 0x01, 0x42, 0x80, 0x00, 0x02, 0x00, 0x40, 0x00, 0x02, 0x00, 0x40, 0x00, 0x02, 0x00, 0x40, 0x00, 0x04, 0x00, 0x20, 0x00, 0x08, 0x00, 0x50, 0x00, 0x10, 0x00, 0x88, 0x00, 0x20, 0x00, 0x5c, 0x01, 0xc0, 0x81, 0x3b, 0x02, 0x00, 0x7e, 0x70, 0x05, 0x00, 0x00, 0xe0, 0x08, 0x00, 0x00, 0xc0, 0x15, 0x00, 0x00, 0x80, 0x23, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x70 }; static unsigned char Cursor_shape_bits[] = { 0x00, 0x7e, 0x00, 0x00, 0xc0, 0x81, 0x03, 0x00, 0x20, 0x00, 0x04, 0x00, 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x04, 0x00, 0x20, 0x00, 0x02, 0x00, 0x40, 0x00, 0x02, 0x00, 0x40, 0x00, 0x02, 0x00, 0x40, 0x00, 0x01, 0x42, 0x80, 0x00, 0x01, 0x24, 0x80, 0x00, 0x01, 0x00, 0x80, 0x00, 0x01, 0x00, 0x80, 0x00, 0x01, 0x24, 0x80, 0x00, 0x01, 0x42, 0x80, 0x00, 0x02, 0x00, 0x40, 0x00, 0x02, 0x00, 0x40, 0x00, 0x02, 0x00, 0x40, 0x00, 0x04, 0x00, 0x20, 0x00, 0x08, 0x00, 0x70, 0x00, 0x10, 0x00, 0xf8, 0x00, 0x20, 0x00, 0xfc, 0x01, 0xc0, 0x81, 0xfb, 0x03, 0x00, 0x7e, 0xf0, 0x07, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x70 }; /* Clip-mask for magnified pixels */ #define Cursor_mask_width 24 #define Cursor_mask_height 24 static unsigned char Cursor_mask_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0xc0, 0xff, 0x03, 0xe0, 0xff, 0x07, 0xf0, 0xff, 0x0f, 0xf8, 0xff, 0x1f, 0xfc, 0xff, 0x3f, 0xfc, 0xff, 0x3f, 0xfc, 0xff, 0x3f, 0xfe, 0xff, 0x7f, 0xfe, 0xff, 0x7f, 0xfe, 0xff, 0x7f, 0xfe, 0xff, 0x7f, 0xfe, 0xff, 0x7f, 0xfe, 0xff, 0x7f, 0xfc, 0xff, 0x3f, 0xfc, 0xff, 0x3f, 0xfc, 0xff, 0x3f, 0xf8, 0xff, 0x1f, 0xf0, 0xff, 0x0f, 0xe0, 0xff, 0x07, 0xc0, 0xff, 0x03, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00 }; typedef struct MovingView { WMView *view; /* The view this is all about */ XImage *image; /* What's under the view */ XImage *dirtyRect; /* Storage of overlapped image area */ Pixmap magPix; /* Magnified part of pixmap */ RColor color; /* Color of a pixel in the image */ int x, y; /* Position of view */ } MovingView; typedef struct CPColor { RColor rgb; /* The RGB values of the color */ RHSVColor hsv; /* The HSV values of the color */ enum { /* Which one was last set ? */ cpNone, cpRGB, cpHSV } set; } CPColor; 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 R,G & B = 0-255 */ } wheelMatrix; typedef struct W_ColorPanel { WMWindow *win; WMFont *font8; WMFont *font12; void *clientData; WMAction2 *action; /* 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 */ WMButton *rgbDecB; WMButton *rgbHexB; WMFrame *rgbFrm; WMLabel *rgbMinL; WMLabel *rgbMaxL; WMSlider *rgbRedS; WMSlider *rgbGreenS; WMSlider *rgbBlueS; WMTextField *rgbRedT; WMTextField *rgbGreenT; WMTextField *rgbBlueT; enum { RGBdec, RGBhex } rgbState; /* 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 */ CPColor color; /* Current color */ WMColorPanelMode mode; /* Current color selection mode */ WMColorPanelMode slidersmode; /* Current color sel. mode sliders panel */ WMColorPanelMode lastChanged; /* Panel that last changed the color */ int colx, coly; /* (x,y) of sel.-marker in WheelMode */ int palx, paly; /* (x,y) of sel.-marker in CustomPaletteMode */ double palXRatio, palYRatio; /* Ratios in x & y between original and scaled palettesize */ int currentPalette; char *configurationPath; struct { unsigned int continuous:1; unsigned int dragging:1; } flags; } W_ColorPanel; enum { CPmenuNewFromFile, CPmenuRename, CPmenuRemove, CPmenuCopy, CPmenuNewFromClipboard } customPaletteMenuItem; enum { CLmenuAdd, CLmenuRename, CLmenuRemove } colorListMenuItem; #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 COLORWHEEL_PART 1 #define CUSTOMPALETTE_PART 2 static char *generateNewFilename(const char *curName); static void convertCPColor(CPColor * color); static RColor ulongToRColor(WMScreen * scr, unsigned long value); static unsigned char getShift(unsigned char value); 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 void closeWindowCallback(WMWidget * w, void *data); 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 void magnifyGetImageStored(W_ColorPanel * panel, int x1, int y1, int x2, int y2); static XImage *magnifyGetImage(WMScreen * scr, XImage * image, int x, int y, int w, int h); static wheelMatrix *wheelCreateMatrix(unsigned int width, unsigned int height); static void wheelDestroyMatrix(wheelMatrix * matrix); static void wheelInitMatrix(W_ColorPanel * panel); static void wheelCalculateValues(W_ColorPanel * panel, int maxvalue); 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); static void wheelBrightnessSliderCallback(WMWidget * w, void *data); static void wheelUpdateSelection(W_ColorPanel * panel); 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 wheelUpdateBrightnessGradientFromLocation(W_ColorPanel * panel); static void wheelUpdateBrightnessGradient(W_ColorPanel * panel, CPColor topColor); static void grayBrightnessSliderCallback(WMWidget * w, void *data); static void grayPresetButtonCallback(WMWidget * w, void *data); static void grayBrightnessTextFieldCallback(void *observerData, WMNotification * notification); static void rgbSliderCallback(WMWidget * w, void *data); static void rgbTextFieldCallback(void *observerData, WMNotification * notification); static void rgbDecToHex(WMWidget *w, void *data); static void cmykSliderCallback(WMWidget * w, void *data); static void cmykTextFieldCallback(void *observerData, WMNotification * notification); 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 customRenderSpectrum(W_ColorPanel * panel); static void customSetPalette(W_ColorPanel * panel); static void customPaletteHandleEvents(XEvent * event, void *data); static void customPaletteHandleActionEvents(XEvent * event, void *data); static void customPalettePositionSelection(W_ColorPanel * panel, int x, int y); static void customPalettePositionSelectionOutBounds(W_ColorPanel * panel, int x, int y); static void customPaletteMenuCallback(WMWidget * w, void *data); static void customPaletteHistoryCallback(WMWidget * w, void *data); static void customPaletteMenuNewFromFile(W_ColorPanel * panel); static void customPaletteMenuRename(W_ColorPanel * panel); 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 colorListColorMenuCallback(WMWidget * w, void *data); static void colorListListMenuCallback(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 hsbInit(W_ColorPanel * panel); static inline int get_textfield_as_integer(WMTextField *widget) { char *str; int value; str = WMGetTextFieldText(widget); value = atoi(str); wfree(str); return value; } void WMSetColorPanelAction(WMColorPanel * panel, WMAction2 * action, void *data) { panel->action = action; panel->clientData = data; } static WMColorPanel *makeColorPanel(WMScreen * scrPtr, const char *name) { WMColorPanel *panel; RImage *image; WMPixmap *pixmap; RColor from; RColor to; WMColor *textcolor, *graybuttoncolor; int i; GC bgc = WMColorGC(scrPtr->black); GC wgc = WMColorGC(scrPtr->white); panel = wmalloc(sizeof(WMColorPanel)); panel->color.rgb.red = 0; panel->color.rgb.green = 0; panel->color.rgb.blue = 0; panel->color.hsv.hue = 0; panel->color.hsv.saturation = 0; panel->color.hsv.value = 0; panel->color.set = cpNone; /* Color has not been set yet */ 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")); WMSetWindowCloseAction(panel->win, closeWindowCallback, panel); /* Set Default ColorPanel Mode(s) */ panel->mode = WMWheelModeColorPanel; panel->lastChanged = 0; panel->slidersmode = WMRGBModeColorPanel; panel->configurationPath = wstrconcat(wusergnusteppath(), "/Library/Colors/"); /* Some General Purpose Widgets */ panel->colorWell = WMCreateColorWell(panel->win); WMResizeWidget(panel->colorWell, 134, 36); WSetColorWellBordered(panel->colorWell, False); WMMoveWidget(panel->colorWell, 56, 4); panel->magnifyBtn = WMCreateCustomButton(panel->win, WBBStateLightMask | WBBStateChangeMask); WMResizeWidget(panel->magnifyBtn, 46, 36); WMMoveWidget(panel->magnifyBtn, 6, 4); WMSetButtonAction(panel->magnifyBtn, magnifyPutCursor, panel); WMSetButtonImagePosition(panel->magnifyBtn, WIPImageOnly); WMSetButtonImage(panel->magnifyBtn, scrPtr->magnifyIcon); 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 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); panel->wheelMtrx = wheelCreateMatrix(colorWheelSize + 4, colorWheelSize + 4); wheelInitMatrix(panel); /* 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); RReleaseImage(image); if (pixmap) W_PaintText(W_VIEW(panel->grayBrightnessS), pixmap->pixmap, panel->font12, 2, 0, 100, WALeft, scrPtr->white, False, _("Brightness"), strlen(_("Brightness"))); else wwarning(_("Color Panel: Could not allocate memory")); 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); for (i = 0; i < 7; i++) { pixmap = WMCreatePixmap(scrPtr, 13, 13, scrPtr->depth, False); graybuttoncolor = WMCreateRGBColor(scrPtr, (255 / 6) * i << 8, (255 / 6) * i << 8, (255 / 6) * i << 8, True); WMPaintColorSwatch(graybuttoncolor, pixmap->pixmap, 0, 0, 15, 15); WMReleaseColor(graybuttoncolor); 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); WMSetButtonImage(panel->grayPresetBtn[i], pixmap); WMSetButtonImagePosition(panel->grayPresetBtn[i], WIPImageOnly); WMReleasePixmap(pixmap); } /* 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); RReleaseImage(image); if (pixmap) W_PaintText(W_VIEW(panel->rgbRedS), pixmap->pixmap, panel->font12, 2, 0, 100, WALeft, scrPtr->white, False, _("Red"), strlen(_("Red"))); else wwarning(_("Color Panel: Could not allocate memory")); 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); RReleaseImage(image); if (pixmap) W_PaintText(W_VIEW(panel->rgbGreenS), pixmap->pixmap, panel->font12, 2, 0, 100, WALeft, scrPtr->white, False, _("Green"), strlen(_("Green"))); else wwarning(_("Color Panel: Could not allocate memory")); 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); RReleaseImage(image); if (pixmap) W_PaintText(W_VIEW(panel->rgbBlueS), pixmap->pixmap, panel->font12, 2, 0, 100, WALeft, scrPtr->white, False, _("Blue"), strlen(_("Blue"))); else wwarning(_("Color Panel: Could not allocate memory")); 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); panel->rgbDecB = WMCreateButton(panel->rgbFrm, WBTRadio); WMSetButtonText(panel->rgbDecB, _("Decimal")); WMSetButtonSelected(panel->rgbDecB, 1); panel->rgbState = RGBdec; WMSetButtonAction(panel->rgbDecB, rgbDecToHex, panel); WMResizeWidget(panel->rgbDecB, PWIDTH - 8, 23); WMMoveWidget(panel->rgbDecB, 2, 81); panel->rgbHexB = WMCreateButton(panel->rgbFrm, WBTRadio); WMSetButtonText(panel->rgbHexB, _("Hexadecimal")); WMSetButtonAction(panel->rgbHexB, rgbDecToHex, panel); WMResizeWidget(panel->rgbHexB, PWIDTH - 8, 23); WMMoveWidget(panel->rgbHexB, 2, 104); WMGroupButtons(panel->rgbDecB, panel->rgbHexB); /* 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); RReleaseImage(image); if (pixmap) W_PaintText(W_VIEW(panel->cmykCyanS), pixmap->pixmap, panel->font12, 2, 0, 100, WALeft, scrPtr->black, False, _("Cyan"), strlen(_("Cyan"))); else wwarning(_("Color Panel: Could not allocate memory")); 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); RReleaseImage(image); if (pixmap) W_PaintText(W_VIEW(panel->cmykMagentaS), pixmap->pixmap, panel->font12, 2, 0, 100, WALeft, scrPtr->black, False, _("Magenta"), strlen(_("Magenta"))); else wwarning(_("Color Panel: Could not allocate memory")); 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); RReleaseImage(image); if (pixmap) W_PaintText(W_VIEW(panel->cmykYellowS), pixmap->pixmap, panel->font12, 2, 0, 100, WALeft, scrPtr->black, False, _("Yellow"), strlen(_("Yellow"))); else wwarning(_("Color Panel: Could not allocate memory")); 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); RReleaseImage(image); if (pixmap) W_PaintText(W_VIEW(panel->cmykBlackS), pixmap->pixmap, panel->font12, 2, 0, 100, WALeft, scrPtr->black, False, _("Black"), strlen(_("Black"))); else wwarning(_("Color Panel: Could not allocate memory")); 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 Test if we can create a view */ W_ResizeView(panel->customPaletteContentView, customPaletteWidth, customPaletteHeight); W_MoveView(panel->customPaletteContentView, 2, 2); /* Create event handler to handle expose/click events in 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...")); WMAddPopUpButtonItem(panel->customPaletteMenuBtn, _("Rename...")); WMAddPopUpButtonItem(panel->customPaletteMenuBtn, _("Remove")); WMAddPopUpButtonItem(panel->customPaletteMenuBtn, _("Copy")); WMAddPopUpButtonItem(panel->customPaletteMenuBtn, _("New from Clipboard")); WMSetPopUpButtonItemEnabled(panel->customPaletteMenuBtn, CPmenuRename, 0); WMSetPopUpButtonItemEnabled(panel->customPaletteMenuBtn, CPmenuRemove, 0); WMSetPopUpButtonItemEnabled(panel->customPaletteMenuBtn, CPmenuCopy, 0); WMSetPopUpButtonItemEnabled(panel->customPaletteMenuBtn, CPmenuNewFromClipboard, 0); customRenderSpectrum(panel); panel->currentPalette = 0; panel->palx = customPaletteWidth / 2; panel->paly = customPaletteHeight / 2; /* 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); WMAddPopUpButtonItem(panel->colorListColorMenuBtn, _("Add...")); WMAddPopUpButtonItem(panel->colorListColorMenuBtn, _("Rename...")); WMAddPopUpButtonItem(panel->colorListColorMenuBtn, _("Remove")); WMSetPopUpButtonItemEnabled(panel->colorListColorMenuBtn, CLmenuAdd, 0); WMSetPopUpButtonItemEnabled(panel->colorListColorMenuBtn, CLmenuRename, 0); WMSetPopUpButtonItemEnabled(panel->colorListColorMenuBtn, CLmenuRemove, 0); 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); WMAddPopUpButtonItem(panel->colorListListMenuBtn, _("New...")); WMAddPopUpButtonItem(panel->colorListListMenuBtn, _("Rename...")); WMAddPopUpButtonItem(panel->colorListListMenuBtn, _("Remove")); WMSetPopUpButtonItemEnabled(panel->colorListListMenuBtn, CLmenuAdd, 0); WMSetPopUpButtonItemEnabled(panel->colorListListMenuBtn, CLmenuRename, 0); WMSetPopUpButtonItemEnabled(panel->colorListListMenuBtn, CLmenuRemove, 0); 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); /* Pixmap to indicate selection positions * wheelframe MUST be mapped. */ panel->selectionImg = XCreatePixmap(scrPtr->display, WMWidgetXID(panel->win), 4, 4, scrPtr->depth); XFillRectangle(scrPtr->display, panel->selectionImg, bgc, 0, 0, 4, 4); XFillRectangle(scrPtr->display, panel->selectionImg, wgc, 1, 1, 2, 2); 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; } void WMFreeColorPanel(WMColorPanel * panel) { W_Screen *scr; if (!panel) return; scr = WMWidgetScreen(panel->win); if (panel == scr->sharedColorPanel) { scr->sharedColorPanel = NULL; } WMRemoveNotificationObserver(panel); WMUnmapWidget(panel->win); /* fonts */ WMReleaseFont(panel->font8); WMReleaseFont(panel->font12); /* pixmaps */ 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); RReleaseImage(panel->customPaletteImg); /* structs */ if (panel->lastBrowseDir) wfree(panel->lastBrowseDir); if (panel->configurationPath) wfree(panel->configurationPath); WMDestroyWidget(panel->win); wfree(panel); } void WMCloseColorPanel(WMColorPanel * panel) { WMFreeColorPanel(panel); } void WMShowColorPanel(WMColorPanel * panel) { WMScreen *scr = WMWidgetScreen(panel->win); WMColor *white = WMWhiteColor(scr); if (panel->color.set == cpNone) WMSetColorPanelColor(panel, white); WMReleaseColor(white); if (panel->mode != WMWheelModeColorPanel) WMPerformButtonClick(panel->wheelBtn); WMMapWidget(panel->win); } static void closeWindowCallback(WMWidget * w, void *data) { W_ColorPanel *panel = (W_ColorPanel *) data; /* Parameter not used, but tell the compiler that it is ok */ (void) w; WMCloseColorPanel(panel); } static void readConfiguration(W_ColorPanel * panel) { /* XXX Doesn't take care of "invalid" files */ DIR *dPtr; struct dirent *dp; struct stat stat_buf; int item; if (stat(panel->configurationPath, &stat_buf) != 0) { if (mkdir(panel->configurationPath, S_IRWXU | S_IRGRP | S_IROTH | S_IXGRP | S_IXOTH) != 0) { werror(_("Color Panel: Could not create directory %s needed" " to store configurations"), panel->configurationPath); WMSetPopUpButtonEnabled(panel->customPaletteMenuBtn, False); WMSetPopUpButtonEnabled(panel->colorListColorMenuBtn, False); WMSetPopUpButtonEnabled(panel->colorListListMenuBtn, False); WMRunAlertPanel(WMWidgetScreen(panel->win), panel->win, _("File Error"), _("Could not create ColorPanel configuration directory"), _("OK"), NULL, NULL); } return; } if (!(dPtr = opendir(panel->configurationPath))) { wwarning("%s: %s", _("Color Panel: Could not find file"), panel->configurationPath); return; } while ((dp = readdir(dPtr)) != NULL) { unsigned int perm_mask; char *path = wstrconcat(panel->configurationPath, dp->d_name); if (dp->d_name[0] != '.') { item = WMGetPopUpButtonNumberOfItems(panel->customPaletteHistoryBtn); WMAddPopUpButtonItem(panel->customPaletteHistoryBtn, dp->d_name); perm_mask = (access(path, R_OK) == 0); WMSetPopUpButtonItemEnabled(panel->customPaletteHistoryBtn, item, perm_mask); } wfree(path); } closedir(dPtr); } static void readXColors(W_ColorPanel * panel) { WMListItem *item; const RGBColor *entry; for (entry = rgbColors; entry->name != NULL; entry++) { item = WMAddListItem(panel->colorListContentLst, entry->name); item->clientData = (void *)&(entry->color); } } void WMSetColorPanelPickerMode(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); 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; } WMColor *WMGetColorPanelColor(WMColorPanel * panel) { return WMGetColorWellColor(panel->colorWell); } void WMSetColorPanelColor(WMColorPanel * panel, WMColor * color) { WMSetColorWellColor(panel->colorWell, color); panel->color.rgb.red = color->color.red >> 8; panel->color.rgb.green = color->color.green >> 8; panel->color.rgb.blue = color->color.blue >> 8; panel->color.set = cpRGB; if (panel->mode == panel->lastChanged) panel->lastChanged = 0; WMSetColorPanelPickerMode(panel, panel->mode); } static void updateSwatch(WMColorPanel * panel, CPColor color) { WMScreen *scr = WMWidgetScreen(panel->win); WMColor *wellcolor; if (color.set != cpRGB) convertCPColor(&color); panel->color = color; wellcolor = WMCreateRGBColor(scr, color.rgb.red << 8, color.rgb.green << 8, color.rgb.blue << 8, True); WMSetColorWellColor(panel->colorWell, wellcolor); WMReleaseColor(wellcolor); if (!panel->flags.dragging || panel->flags.continuous) { if (panel->action) (*panel->action) (panel, panel->clientData); WMPostNotificationName(WMColorPanelColorChangedNotification, panel, NULL); } } static void modeButtonCallback(WMWidget * w, void *data) { W_ColorPanel *panel = (W_ColorPanel *) (data); if (w == panel->wheelBtn) WMSetColorPanelPickerMode(panel, WMWheelModeColorPanel); else if (w == panel->slidersBtn) WMSetColorPanelPickerMode(panel, panel->slidersmode); else if (w == panel->customPaletteBtn) WMSetColorPanelPickerMode(panel, WMCustomPaletteModeColorPanel); else if (w == panel->colorListBtn) WMSetColorPanelPickerMode(panel, WMColorListModeColorPanel); else if (w == panel->grayBtn) WMSetColorPanelPickerMode(panel, WMGrayModeColorPanel); else if (w == panel->rgbBtn) WMSetColorPanelPickerMode(panel, WMRGBModeColorPanel); else if (w == panel->cmykBtn) WMSetColorPanelPickerMode(panel, WMCMYKModeColorPanel); else if (w == panel->hsbBtn) WMSetColorPanelPickerMode(panel, WMHSBModeColorPanel); } /****************** Magnifying Cursor Functions *******************/ static XImage *magnifyGetImage(WMScreen * scr, XImage * image, int x, int y, int w, int h) { int x0 = 0, y0 = 0, w0 = w, h0 = h; const int displayWidth = DisplayWidth(scr->display, scr->screen), displayHeight = DisplayHeight(scr->display, scr->screen); if (!(image && image->data)) { /* The image in panel->magnifyGlass->image does not exist yet. * Grab one from the screen (not beyond) and use it from now on. */ if (!(image = XGetImage(scr->display, scr->rootWin, x - Cursor_x_hot, y - Cursor_y_hot, w, h, AllPlanes, ZPixmap))) wwarning(_("Color Panel: X failed request")); return image; } /* Coordinate correction for back pixmap * if magnifying glass is at screen-borders */ /* Figure 1: Shifting of rectangle-to-grab at top/left screen borders * Hatched area is beyond screen border. * * |<-Cursor_x_hot->| * ________________|_____ * |/ / / / / / /| | | * | / / / / / / |(x,y) | * |/_/_/_/_/_/_/|________| * |<----x0----->|<--w0-->| * 0 */ /* Figure 2: Shifting of rectangle-to-grab at bottom/right * screen borders * Hatched area is beyond screen border * * |<-Cursor_x_hot->| * ________________|_______________ * | | | / / / / / /| * | (x,y)|/ / / / / / | * |___________________|_/_/_/_/_/_/| * |<-------w0-------->| | * |<---------------w--|----------->| * | | * x0 Displaywidth-1 */ if (x < Cursor_x_hot) { /* see fig. 1 */ x0 = Cursor_x_hot - x; w0 = w - x0; } if (displayWidth - 1 < x - Cursor_x_hot + w) { /* see fig. 2 */ w0 = (displayWidth) - (x - Cursor_x_hot); } if (y < Cursor_y_hot) { /* see fig. 1 */ y0 = Cursor_y_hot - y; h0 = h - y0; } if (displayHeight - 1 < y - Cursor_y_hot + h) { /* see fig. 2 */ h0 = (displayHeight) - (y - Cursor_y_hot); } /* end of coordinate correction */ /* Grab an image from the screen, clipped if necessary, * and put it in the existing panel->magnifyGlass->image * with the corresponding clipping offset. */ if (!XGetSubImage(scr->display, scr->rootWin, x - Cursor_x_hot + x0, y - Cursor_y_hot + y0, w0, h0, AllPlanes, ZPixmap, image, x0, y0)) wwarning(_("Color Panel: X failed request")); return NULL; } static void magnifyGetImageStored(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); int xa = 0, ya = 0, xb = 0, yb = 0; int width, height; const int dx = abs(x2 - x1), dy = abs(y2 - y1); XImage *image; const int x_min = Cursor_x_hot, y_min = Cursor_y_hot, x_max = DisplayWidth(scr->display, scr->screen) - 1 - (Cursor_mask_width - Cursor_x_hot), y_max = DisplayHeight(scr->display, scr->screen) - 1 - (Cursor_mask_height - Cursor_y_hot); if ((dx == 0) && (dy == 0) && panel->magnifyGlass->image) return; /* No movement */ if (x1 < x2) xa = dx; else xb = dx; if (y1 < y2) ya = dy; else yb = dy; width = Cursor_mask_width - dx; height = Cursor_mask_height - dy; /* If the traversed distance is larger than the size of the magnifying * glass contents, there is no need to do dirty rectangles. A whole new * rectangle can be grabbed (unless that rectangle falls partially * off screen). * Destroying the image and setting it to NULL will achieve that later on. * * Of course, grabbing an XImage beyond the borders of the screen will * cause trouble, this is considdered a special case. Part of the screen * is grabbed, but there is no need for dirty rectangles. */ if ((width <= 0) || (height <= 0)) { if ((x2 >= x_min) && (y2 >= y_min) && (x2 <= x_max) && (y2 <= y_max)) { if (panel->magnifyGlass->image) XDestroyImage(panel->magnifyGlass->image); panel->magnifyGlass->image = NULL; } } else { if (panel->magnifyGlass->image) { /* Get dirty rectangle from panel->magnifyGlass->image */ panel->magnifyGlass->dirtyRect = XSubImage(panel->magnifyGlass->image, xa, ya, width, height); if (!panel->magnifyGlass->dirtyRect) { wwarning(_("Color Panel: X failed request")); return; /* X returned a NULL from XSubImage */ } } } /* Get image from screen */ image = magnifyGetImage(scr, panel->magnifyGlass->image, x2, y2, Cursor_mask_width, Cursor_mask_height); if (image) { /* Only reassign if a *new* image was grabbed */ panel->magnifyGlass->image = image; return; } /* Copy previously stored rectangle on covered part of image */ if (panel->magnifyGlass->image && panel->magnifyGlass->dirtyRect) { int old_height; /* "width" and "height" are used as coordinates here, * and run from [0...width-1] and [0...height-1] respectively. */ width--; height--; old_height = height; for (; width >= 0; width--) for (height = old_height; height >= 0; height--) XPutPixel(panel->magnifyGlass->image, xb + width, yb + height, XGetPixel(panel->magnifyGlass->dirtyRect, width, height)); XDestroyImage(panel->magnifyGlass->dirtyRect); panel->magnifyGlass->dirtyRect = NULL; } return; } static Pixmap magnifyCreatePixmap(WMColorPanel * panel) { W_Screen *scr = WMWidgetScreen(panel->win); int u, v; #ifndef USE_XSHAPE Pixmap pixmap; #endif unsigned long color; if (!panel->magnifyGlass->image) return None; if (!panel->magnifyGlass->magPix) return None; /* * Copy an area of only 5x5 pixels from the center of the image. */ for (u = 0; u < 5; u++) { for (v = 0; v < 5; v++) { color = XGetPixel(panel->magnifyGlass->image, u + 9, v + 9); XSetForeground(scr->display, scr->copyGC, color); if ((u == 2) && (v == 2)) /* (2,2) is center pixel (unmagn.) */ panel->magnifyGlass->color = ulongToRColor(scr, color); /* The center square must eventually be centered around the * hotspot. The image needs shifting to achieve this. The amount of * shifting is (Cursor_mask_width/2 - 2 * square_size) = 11-10 = 1 * _ _ _ _ _ * |_|_|_|_|_| * ^------- center of center square == Cursor_x_hot */ XFillRectangle(scr->display, panel->magnifyGlass->magPix, scr->copyGC, u * 5 + (u == 0 ? 0 : -1), v * 5 + (v == 0 ? 0 : -1), (u == 0 ? 4 : 5), (v == 0 ? 4 : 5)); } } #ifdef USE_XSHAPE return panel->magnifyGlass->magPix; #else pixmap = XCreatePixmap(scr->display, W_DRAWABLE(scr), Cursor_mask_width, Cursor_mask_height, scr->depth); if (!pixmap) return None; XPutImage(scr->display, pixmap, scr->copyGC, panel->magnifyGlass->image, 0, 0, 0, 0, Cursor_mask_width, Cursor_mask_height); /* Copy the magnified pixmap, with the clip mask, to background pixmap */ XCopyArea(scr->display, panel->magnifyGlass->magPix, pixmap, scr->clipGC, 0, 0, Cursor_mask_width, Cursor_mask_height, 0, 0); /* (2,2) puts center pixel on center of glass */ return pixmap; #endif } static WMView *magnifyCreateView(W_ColorPanel * panel) { W_Screen *scr = WMWidgetScreen(panel->win); WMView *magView; magView = W_CreateTopView(scr); if (!magView) return NULL; magView->self = panel->win; magView->flags.topLevel = 1; magView->attribFlags |= CWOverrideRedirect | CWSaveUnder; magView->attribs.override_redirect = True; magView->attribs.save_under = True; W_ResizeView(magView, Cursor_mask_width, Cursor_mask_height); W_RealizeView(magView); return magView; } static Cursor magnifyGrabPointer(W_ColorPanel * panel) { W_Screen *scr = WMWidgetScreen(panel->win); Pixmap magPixmap, magPixmap2; Cursor magCursor; XColor fgColor = { 0, 0, 0, 0, DoRed | DoGreen | DoBlue, 0 }; XColor bgColor = { 0, 0xbf00, 0xa000, 0x5000, DoRed | DoGreen | DoBlue, 0 }; /* Cursor creation stuff */ magPixmap = XCreatePixmapFromBitmapData(scr->display, W_DRAWABLE(scr), (char *)Cursor_bits, Cursor_width, Cursor_height, 1, 0, 1); magPixmap2 = XCreatePixmapFromBitmapData(scr->display, W_DRAWABLE(scr), (char *)Cursor_shape_bits, Cursor_width, Cursor_height, 1, 0, 1); magCursor = XCreatePixmapCursor(scr->display, magPixmap, magPixmap2, &fgColor, &bgColor, Cursor_x_hot, Cursor_y_hot); 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, clip_mask; WMPoint point; Window root_return, child_return; clip_mask = XCreatePixmapFromBitmapData(scr->display, W_DRAWABLE(scr), (char *)Cursor_mask_bits, Cursor_mask_width, Cursor_mask_height, 1, 0, 1); panel->magnifyGlass->magPix = XCreatePixmap(scr->display, W_DRAWABLE(scr), 5 * 5 - 1, 5 * 5 - 1, scr->depth); XQueryPointer(scr->display, scr->rootWin, &root_return, &child_return, &x, &y, &u, &v, &mask); panel->magnifyGlass->image = NULL; /* Clipmask to make magnified view-contents circular */ #ifdef USE_XSHAPE XShapeCombineMask(scr->display, WMViewXID(panel->magnifyGlass->view), ShapeBounding, 0, 0, clip_mask, ShapeSet); #else /* Clip circle in glass cursor */ XSetClipMask(scr->display, scr->clipGC, clip_mask); XSetClipOrigin(scr->display, scr->clipGC, 0, 0); #endif XFreePixmap(scr->display, clip_mask); /* Draw initial magnifying glass contents */ magnifyGetImageStored(panel, x, y, x, y); pixmap = magnifyCreatePixmap(panel); XSetWindowBackgroundPixmap(scr->display, WMViewXID(panel->magnifyGlass->view), pixmap); XClearWindow(scr->display, WMViewXID(panel->magnifyGlass->view)); XFlush(scr->display); #ifndef USE_XSHAPE XFreePixmap(scr->display, pixmap); #endif 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; Pixmap pixmap; XEvent event; WMPoint initialPosition; /* Parameter not used, but tell the compiler that it is ok */ (void) w; /* Destroy wheelBackImg, so it'll update properly */ if (panel->selectionBackImg) { XFreePixmap(WMWidgetScreen(panel->win)->display, panel->selectionBackImg); panel->selectionBackImg = None; } /* Create magnifying glass */ panel->magnifyGlass = wmalloc(sizeof(MovingView)); panel->magnifyGlass->view = magnifyCreateView(panel); if (!panel->magnifyGlass->view) return; initialPosition = magnifyInitialize(panel); panel->magnifyGlass->x = initialPosition.x; panel->magnifyGlass->y = initialPosition.y; W_MoveView(panel->magnifyGlass->view, panel->magnifyGlass->x - Cursor_x_hot, panel->magnifyGlass->y - Cursor_y_hot); W_MapView(panel->magnifyGlass->view); magCursor = magnifyGrabPointer(panel); while (panel->magnifyGlass->image) { WMNextEvent(scr->display, &event); /* Pack motion events */ while (XCheckTypedEvent(scr->display, MotionNotify, &event)) { } switch (event.type) { case ButtonPress: XDestroyImage(panel->magnifyGlass->image); panel->magnifyGlass->image = NULL; if (event.xbutton.button == Button1) { panel->color.rgb = panel->magnifyGlass->color; panel->color.set = cpRGB; updateSwatch(panel, panel->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; WMSetButtonSelected(panel->magnifyBtn, False); break; case MotionNotify: while (XPending(event.xmotion.display)) { XEvent ev; XPeekEvent(event.xmotion.display, &ev); if (ev.type == MotionNotify) XNextEvent(event.xmotion.display, &event); else break; } /* Get a "dirty rectangle" */ magnifyGetImageStored(panel, panel->magnifyGlass->x, panel->magnifyGlass->y, event.xmotion.x_root, event.xmotion.y_root); /* Update coordinates */ panel->magnifyGlass->x = event.xmotion.x_root; panel->magnifyGlass->y = event.xmotion.y_root; /* Move view */ W_MoveView(panel->magnifyGlass->view, panel->magnifyGlass->x - Cursor_x_hot, panel->magnifyGlass->y - Cursor_y_hot); /* Put new image (with magn.) in view */ pixmap = magnifyCreatePixmap(panel); if (pixmap != None) { /* Change the window background */ XSetWindowBackgroundPixmap(scr->display, WMViewXID(panel->magnifyGlass->view), pixmap); /* Force an Expose (handled by X) */ XClearWindow(scr->display, WMViewXID(panel->magnifyGlass->view)); /* Synchronize the event queue, so the Expose is handled NOW */ XFlush(scr->display); #ifndef USE_XSHAPE XFreePixmap(scr->display, pixmap); #endif } break; /* Try XQueryPointer for this !!! It returns windows that the pointer * is over. Note: We found this solving the invisible donkey cap bug */ #if 0 /* As it is impossible to make this work in all cases, * we consider it confusing. Therefore we disabled it. */ case FocusOut: /* fall through */ case FocusIn: /* * Color Panel window (panel->win) lost or received focus. * We need to update the pixmap in the magnifying glass. * * BUG Doesn't work with focus switches between two windows * if none of them is the color panel. */ XUngrabPointer(scr->display, CurrentTime); W_UnmapView(panel->magnifyGlass->view); magnifyInitialize(panel); W_MapView(panel->magnifyGlass->view); XGrabPointer(scr->display, panel->magnifyGlass->view->window, True, PointerMotionMask | ButtonPressMask, GrabModeAsync, GrabModeAsync, scr->rootWin, magCursor, CurrentTime); break; #endif default: WMHandleEvent(&event); break; } /* of switch */ } XUngrabPointer(scr->display, CurrentTime); XFreeCursor(scr->display, magCursor); XFreePixmap(scr->display, panel->magnifyGlass->magPix); panel->magnifyGlass->magPix = None; W_UnmapView(panel->magnifyGlass->view); W_DestroyView(panel->magnifyGlass->view); panel->magnifyGlass->view = NULL; wfree(panel->magnifyGlass); } /****************** ColorWheel Functions ************************/ static wheelMatrix *wheelCreateMatrix(unsigned int width, unsigned int height) { wheelMatrix *matrix = NULL; int i; assert((width > 0) && (height > 0)); matrix = wmalloc(sizeof(wheelMatrix)); matrix->width = width; matrix->height = height; for (i = 0; i < 3; i++) { matrix->data[i] = wmalloc(width * height * sizeof(unsigned char)); } return matrix; } static void wheelDestroyMatrix(wheelMatrix * matrix) { int i; if (!matrix) return; for (i = 0; i < 3; i++) { if (matrix->data[i]) wfree(matrix->data[i]); } wfree(matrix); } static void wheelInitMatrix(W_ColorPanel * panel) { int i; int x, y; unsigned char *rp, *gp, *bp; CPColor cpColor; long ofs[4]; int xcor, ycor; unsigned short sat; int dhue[4]; const int cw_halfsize = (colorWheelSize + 4) / 2, cw_sqsize = (colorWheelSize + 4) * (colorWheelSize + 4), uchar_shift = getShift(sizeof(unsigned char)); if (!panel->wheelMtrx) return; cpColor.hsv.value = 255; cpColor.set = cpHSV; ofs[0] = -1; ofs[1] = -(colorWheelSize + 4); /* offsets are counterclockwise (in triangles). * * ofs[0] ----> * _______________________________________ * [1] |_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_| o * s |_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_| f * f |_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_| s * o | | | | | | | | | | | | | | | | | | | | | [3] * * <---- ofs[2] * ____ * |\ /| <-- triangles * | \/ | * | /\ | * |/__\| */ for (y = 0; y < cw_halfsize; y++) { for (x = y; x < (colorWheelSize + 4 - y); x++) { /* (xcor, ycor) is (x,y) relative to center of matrix */ xcor = 2 * x - 4 - colorWheelSize; ycor = 2 * y - 4 - colorWheelSize; /* RColor.saturation is unsigned char and will wrap after 255 */ sat = rint(255.0 * sqrt(xcor * xcor + ycor * ycor) / colorWheelSize); cpColor.hsv.saturation = (unsigned char)sat; ofs[0]++; /* top quarter of matrix */ ofs[1] += colorWheelSize + 4; /* left quarter */ ofs[2] = cw_sqsize - 1 - ofs[0]; /* bottom quarter */ ofs[3] = cw_sqsize - 1 - ofs[1]; /* right quarter */ if (sat < 256) { if (xcor != 0) dhue[0] = rint(atan((double)ycor / (double)xcor) * (180.0 / WM_PI)) + (xcor < 0 ? 180.0 : 0.0); else dhue[0] = 270; dhue[0] = 360 - dhue[0]; /* Reverse direction of ColorWheel */ dhue[1] = 270 - dhue[0] + (dhue[0] > 270 ? 360 : 0); dhue[2] = dhue[0] - 180 + (dhue[0] < 180 ? 360 : 0); dhue[3] = 90 - dhue[0] + (dhue[0] > 90 ? 360 : 0); for (i = 0; i < 4; i++) { rp = panel->wheelMtrx->data[0] + (ofs[i] << uchar_shift); gp = panel->wheelMtrx->data[1] + (ofs[i] << uchar_shift); bp = panel->wheelMtrx->data[2] + (ofs[i] << uchar_shift); cpColor.hsv.hue = dhue[i]; convertCPColor(&cpColor); *rp = (unsigned char)(cpColor.rgb.red); *gp = (unsigned char)(cpColor.rgb.green); *bp = (unsigned char)(cpColor.rgb.blue); } } else { for (i = 0; i < 4; i++) { rp = panel->wheelMtrx->data[0] + (ofs[i] << uchar_shift); gp = panel->wheelMtrx->data[1] + (ofs[i] << uchar_shift); bp = panel->wheelMtrx->data[2] + (ofs[i] << uchar_shift); *rp = (unsigned char)0; *gp = (unsigned char)0; *bp = (unsigned char)0; } } } ofs[0] += 2 * y + 1; ofs[1] += 1 - (colorWheelSize + 4) * (colorWheelSize + 4 - 1 - 2 * y); } } static void wheelCalculateValues(W_ColorPanel * panel, int maxvalue) { unsigned int i; unsigned int v; 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 * maxvalue) >> 7; panel->wheelMtrx->values[i] = (unsigned char)((v >> 1) + (v & 0x01)); } } static void wheelRender(W_ColorPanel * panel) { W_Screen *scr = WMWidgetScreen(panel->win); int x, y; RImage *image; unsigned char *ptr; RColor gray; unsigned long ofs = 0; /*unsigned char shift = getShift(sizeof(unsigned char)); */ image = RCreateImage(colorWheelSize + 4, colorWheelSize + 4, True); if (!image) { wwarning(_("Color Panel: Could not allocate memory")); return; } ptr = image->data; /* TODO Make this transparent istead of gray */ gray.red = gray.blue = 0xae; gray.green = 0xaa; for (y = 0; y < colorWheelSize + 4; y++) { for (x = 0; x < colorWheelSize + 4; x++) { if (wheelInsideColorWheel(panel, ofs)) { *(ptr++) = (unsigned char)(panel->wheelMtrx->values[panel->wheelMtrx->data[0][ofs]]); *(ptr++) = (unsigned char)(panel->wheelMtrx->values[panel->wheelMtrx->data[1][ofs]]); *(ptr++) = (unsigned char)(panel->wheelMtrx->values[panel->wheelMtrx->data[2][ofs]]); *(ptr++) = 0; } else { *(ptr++) = (unsigned char)(gray.red); *(ptr++) = (unsigned char)(gray.green); *(ptr++) = (unsigned char)(gray.blue); *(ptr++) = 255; } ofs++; } } if (panel->wheelImg) XFreePixmap(scr->display, panel->wheelImg); RConvertImage(scr->rcontext, image, &panel->wheelImg); RReleaseImage(image); /* Check if backimage exists. If it doesn't, allocate 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 hot spot correction */ } } static Bool wheelInsideColorWheel(W_ColorPanel * panel, unsigned long ofs) { 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); } static void wheelHandleEvents(XEvent * event, void *data) { W_ColorPanel *panel = (W_ColorPanel *) data; switch (event->type) { case Expose: if (event->xexpose.count != 0) /* TODO Improve */ 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->lastChanged = WMWheelModeColorPanel; panel->flags.dragging = 1; wheelPositionSelection(panel, event->xbutton.x, event->xbutton.y); } break; case ButtonRelease: panel->flags.dragging = 0; if (!panel->flags.continuous) { if (panel->action) (*panel->action) (panel, panel->clientData); } 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; } static void wheelBrightnessSliderCallback(WMWidget * w, void *data) { int value; W_ColorPanel *panel = (W_ColorPanel *) data; /* Parameter not used, but tell the compiler that it is ok */ (void) w; value = 255 - WMGetSliderValue(panel->wheelBrightnessS); wheelCalculateValues(panel, value); if (panel->color.set == cpRGB) { convertCPColor(&panel->color); panel->color.set = cpHSV; } panel->color.hsv.value = value; wheelRender(panel); wheelPaint(panel); wheelUpdateSelection(panel); } static void wheelUpdateSelection(W_ColorPanel * panel) { W_Screen *scr = WMWidgetScreen(panel->win); updateSwatch(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 */ } static void wheelPositionSelection(W_ColorPanel * panel, int x, int y) { unsigned long ofs = (y * panel->wheelMtrx->width) + x; panel->color.rgb.red = panel->wheelMtrx->values[panel->wheelMtrx->data[0][ofs]]; panel->color.rgb.green = panel->wheelMtrx->values[panel->wheelMtrx->data[1][ofs]]; panel->color.rgb.blue = panel->wheelMtrx->values[panel->wheelMtrx->data[2][ofs]]; panel->color.set = cpRGB; wheelUndrawSelection(panel); panel->colx = x; panel->coly = y; wheelUpdateSelection(panel); wheelUpdateBrightnessGradientFromLocation(panel); } static void wheelPositionSelectionOutBounds(W_ColorPanel * panel, int x, int y) { int hue; int xcor, ycor; CPColor cpColor; xcor = x * 2 - colorWheelSize - 4; ycor = y * 2 - colorWheelSize - 4; panel->color.hsv.saturation = 255; panel->color.hsv.value = 255 - WMGetSliderValue(panel->wheelBrightnessS); if (xcor != 0) hue = rint(atan(-(double)ycor / (double)xcor) * (180.0 / WM_PI)); else { if (ycor < 0) hue = 90; else hue = 270; } if (xcor < 0) hue += 180; if ((xcor > 0) && (ycor > 0)) hue += 360; panel->color.hsv.hue = hue; panel->color.set = cpHSV; convertCPColor(&panel->color); wheelUndrawSelection(panel); panel->colx = 2 + rint((colorWheelSize * (1.0 + cos(panel->color.hsv.hue * (WM_PI / 180.0)))) / 2.0); /* "+2" because of "colorWheelSize + 4" */ panel->coly = 2 + rint((colorWheelSize * (1.0 + sin(-panel->color.hsv.hue * (WM_PI / 180.0)))) / 2.0); wheelUpdateSelection(panel); cpColor = panel->color; wheelUpdateBrightnessGradient(panel, cpColor); } static void wheelUpdateBrightnessGradientFromLocation(W_ColorPanel * panel) { CPColor from; unsigned long ofs; ofs = panel->coly * panel->wheelMtrx->width + panel->colx; from.rgb.red = panel->wheelMtrx->data[0][ofs]; from.rgb.green = panel->wheelMtrx->data[1][ofs]; from.rgb.blue = panel->wheelMtrx->data[2][ofs]; from.set = cpRGB; wheelUpdateBrightnessGradient(panel, from); } static void wheelUpdateBrightnessGradient(W_ColorPanel * panel, CPColor topColor) { RColor to; RImage *sliderImg; WMPixmap *sliderPxmp; to.red = to.green = to.blue = 0; if (topColor.set == cpHSV) convertCPColor(&topColor); sliderImg = RRenderGradient(16, 153, &(topColor.rgb), &to, RGRD_VERTICAL); sliderPxmp = WMCreatePixmapFromRImage(WMWidgetScreen(panel->win), sliderImg, 0); RReleaseImage(sliderImg); WMSetSliderImage(panel->wheelBrightnessS, sliderPxmp); WMReleasePixmap(sliderPxmp); } /****************** Grayscale Panel Functions ***************/ static void grayBrightnessSliderCallback(WMWidget * w, void *data) { CPColor cpColor; int value; char tmp[4]; W_ColorPanel *panel = (W_ColorPanel *) data; /* Parameter not used, but tell the compiler that it is ok */ (void) w; value = WMGetSliderValue(panel->grayBrightnessS); sprintf(tmp, "%d", value); WMSetTextFieldText(panel->grayBrightnessT, tmp); cpColor.rgb.red = cpColor.rgb.green = cpColor.rgb.blue = rint(2.55 * value); cpColor.set = cpRGB; updateSwatch(panel, cpColor); panel->lastChanged = WMGrayModeColorPanel; } static void grayPresetButtonCallback(WMWidget * w, void *data) { CPColor cpColor; 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 * i) / 6.0); sprintf(tmp, "%d", value); WMSetTextFieldText(panel->grayBrightnessT, tmp); cpColor.rgb.red = cpColor.rgb.green = cpColor.rgb.blue = rint((255.0 * i) / 6.0); cpColor.set = cpRGB; WMSetSliderValue(panel->grayBrightnessS, rint((100.0 * i) / 6.0)); updateSwatch(panel, cpColor); panel->lastChanged = WMGrayModeColorPanel; } static void grayBrightnessTextFieldCallback(void *observerData, WMNotification * notification) { CPColor cpColor; char tmp[4]; int value; W_ColorPanel *panel = (W_ColorPanel *) observerData; /* Parameter not used, but tell the compiler that it is ok */ (void) notification; value = get_textfield_as_integer(panel->grayBrightnessT); if (value > 100) value = 100; if (value < 0) value = 0; sprintf(tmp, "%d", value); WMSetTextFieldText(panel->grayBrightnessT, tmp); WMSetSliderValue(panel->grayBrightnessS, value); cpColor.rgb.red = cpColor.rgb.green = cpColor.rgb.blue = rint((255.0 * value) / 100.0); cpColor.set = cpRGB; updateSwatch(panel, cpColor); panel->lastChanged = WMGrayModeColorPanel; } /******************* RGB Panel Functions *****************/ void rgbIntToChar(W_ColorPanel *panel, int *value) { char tmp[4]; const char *format; switch (panel->rgbState) { case RGBdec: format = "%d"; break; case RGBhex: format = "%0X"; break; default: format = ""; } sprintf(tmp, format, value[0]); WMSetTextFieldText(panel->rgbRedT, tmp); sprintf(tmp, format, value[1]); WMSetTextFieldText(panel->rgbGreenT, tmp); sprintf(tmp, format, value[2]); WMSetTextFieldText(panel->rgbBlueT, tmp); } int *rgbCharToInt(W_ColorPanel *panel) { int base = 0; static int value[3]; char *str; switch (panel->rgbState) { case RGBdec: base = 10; break; case RGBhex: base = 16; break; } str = WMGetTextFieldText(panel->rgbRedT); value[0] = strtol(str, NULL, base); wfree(str); str = WMGetTextFieldText(panel->rgbGreenT); value[1] = strtol(str, NULL, base); wfree(str); str = WMGetTextFieldText(panel->rgbBlueT); value[2] = strtol(str, NULL, base); wfree(str); return value; } static void rgbSliderCallback(WMWidget * w, void *data) { CPColor cpColor; int value[3]; W_ColorPanel *panel = (W_ColorPanel *) data; /* Parameter not used, but tell the compiler that it is ok */ (void) w; value[0] = WMGetSliderValue(panel->rgbRedS); value[1] = WMGetSliderValue(panel->rgbGreenS); value[2] = WMGetSliderValue(panel->rgbBlueS); rgbIntToChar(panel, value); cpColor.rgb.red = value[0]; cpColor.rgb.green = value[1]; cpColor.rgb.blue = value[2]; cpColor.set = cpRGB; updateSwatch(panel, cpColor); panel->lastChanged = WMRGBModeColorPanel; } static void rgbTextFieldCallback(void *observerData, WMNotification * notification) { CPColor cpColor; int *value; int n; W_ColorPanel *panel = (W_ColorPanel *) observerData; /* Parameter not used, but tell the compiler that it is ok */ (void) notification; value = rgbCharToInt(panel); for (n = 0; n < 3; n++) { if (value[n] > 255) value[n] = 255; if (value[n] < 0) value[n] = 0; } rgbIntToChar(panel, value); WMSetSliderValue(panel->rgbRedS, value[0]); WMSetSliderValue(panel->rgbGreenS, value[1]); WMSetSliderValue(panel->rgbBlueS, value[2]); cpColor.rgb.red = value[0]; cpColor.rgb.green = value[1]; cpColor.rgb.blue = value[2]; cpColor.set = cpRGB; updateSwatch(panel, cpColor); panel->lastChanged = WMRGBModeColorPanel; } static void rgbDecToHex(WMWidget *w, void *data) { W_ColorPanel *panel = (W_ColorPanel *) data; int *value; (void) w; switch (panel->rgbState) { case RGBhex: if (WMGetButtonSelected(panel->rgbDecB)) { WMSetLabelText(panel->rgbMaxL, "255"); WMRedisplayWidget(panel->rgbMaxL); value = rgbCharToInt(panel); panel->rgbState = RGBdec; rgbIntToChar(panel, value); } break; case RGBdec: if (WMGetButtonSelected(panel->rgbHexB)) { WMSetLabelText(panel->rgbMaxL, "FF"); WMRedisplayWidget(panel->rgbMaxL); value = rgbCharToInt(panel); panel->rgbState = RGBhex; rgbIntToChar(panel, value); } break; } } /******************* CMYK Panel Functions *****************/ static void cmykSliderCallback(WMWidget * w, void *data) { CPColor cpColor; int value[4]; char tmp[4]; W_ColorPanel *panel = (W_ColorPanel *) data; double scale; /* Parameter not used, but tell the compiler that it is ok */ (void) w; 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); scale = 2.55 * (1.0 - (value[3] / 100.0)); cpColor.rgb.red = rint((100.0 - value[0]) * scale); cpColor.rgb.green = rint((100.0 - value[1]) * scale); cpColor.rgb.blue = rint((100.0 - value[2]) * scale); cpColor.set = cpRGB; updateSwatch(panel, cpColor); panel->lastChanged = WMCMYKModeColorPanel; } static void cmykTextFieldCallback(void *observerData, WMNotification * notification) { CPColor cpColor; int value[4]; char tmp[4]; int n; double scale; W_ColorPanel *panel = (W_ColorPanel *) observerData; /* Parameter not used, but tell the compiler that it is ok */ (void) notification; value[0] = get_textfield_as_integer(panel->cmykCyanT); value[1] = get_textfield_as_integer(panel->cmykMagentaT); value[2] = get_textfield_as_integer(panel->cmykYellowT); value[3] = get_textfield_as_integer(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]); scale = 2.55 * (1.0 - (value[3] / 100.0)); cpColor.rgb.red = rint((100.0 - value[0]) * scale); cpColor.rgb.green = rint((100.0 - value[1]) * scale); cpColor.rgb.blue = rint((100.0 - value[2]) * scale); cpColor.set = cpRGB; updateSwatch(panel, cpColor); panel->lastChanged = WMCMYKModeColorPanel; } /********************** HSB Panel Functions ***********************/ static void hsbSliderCallback(WMWidget * w, void *data) { CPColor cpColor; 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); cpColor.hsv.hue = value[0]; cpColor.hsv.saturation = value[1] * 2.55; cpColor.hsv.value = value[2] * 2.55; cpColor.set = cpHSV; convertCPColor(&cpColor); panel->lastChanged = WMHSBModeColorPanel; updateSwatch(panel, cpColor); 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) { CPColor cpColor; int value[3]; char tmp[4]; int n; W_ColorPanel *panel = (W_ColorPanel *) observerData; /* Parameter not used, but tell the compiler that it is ok */ (void) notification; value[0] = get_textfield_as_integer(panel->hsbHueT); value[1] = get_textfield_as_integer(panel->hsbSaturationT); value[2] = get_textfield_as_integer(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]); cpColor.hsv.hue = value[0]; cpColor.hsv.saturation = value[1] * 2.55; cpColor.hsv.value = value[2] * 2.55; cpColor.set = cpHSV; convertCPColor(&cpColor); panel->lastChanged = WMHSBModeColorPanel; updateSwatch(panel, cpColor); hsbUpdateBrightnessGradient(panel); hsbUpdateSaturationGradient(panel); hsbUpdateHueGradient(panel); } static void hsbUpdateBrightnessGradient(W_ColorPanel * panel) { W_Screen *scr = WMWidgetScreen(panel->win); RColor from; CPColor to; RImage *sliderImg; WMPixmap *sliderPxmp; from.red = from.green = from.blue = 0; to.hsv = panel->color.hsv; to.hsv.value = 255; to.set = cpHSV; convertCPColor(&to); sliderImg = RRenderGradient(141, 16, &from, &(to.rgb), RGRD_HORIZONTAL); sliderPxmp = WMCreatePixmapFromRImage(scr, sliderImg, 0); RReleaseImage(sliderImg); if (sliderPxmp) W_PaintText(W_VIEW(panel->hsbBrightnessS), sliderPxmp->pixmap, panel->font12, 2, 0, 100, WALeft, scr->white, False, _("Brightness"), strlen(_("Brightness"))); else wwarning(_("Color Panel: Could not allocate memory")); WMSetSliderImage(panel->hsbBrightnessS, sliderPxmp); WMReleasePixmap(sliderPxmp); } static void hsbUpdateSaturationGradient(W_ColorPanel * panel) { W_Screen *scr = WMWidgetScreen(panel->win); CPColor from; CPColor to; RImage *sliderImg; WMPixmap *sliderPxmp; from.hsv = panel->color.hsv; from.hsv.saturation = 0; from.set = cpHSV; convertCPColor(&from); to.hsv = panel->color.hsv; to.hsv.saturation = 255; to.set = cpHSV; convertCPColor(&to); sliderImg = RRenderGradient(141, 16, &(from.rgb), &(to.rgb), RGRD_HORIZONTAL); sliderPxmp = WMCreatePixmapFromRImage(scr, sliderImg, 0); RReleaseImage(sliderImg); if (sliderPxmp) W_PaintText(W_VIEW(panel->hsbSaturationS), sliderPxmp->pixmap, panel->font12, 2, 0, 100, WALeft, from.hsv.value < 128 ? scr->white : scr->black, False, _("Saturation"), strlen(_("Saturation"))); else wwarning(_("Color Panel: Could not allocate memory")); 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->color.hsv; colors = wmalloc(sizeof(RColor *) * (8)); for (i = 0; i < 7; i++) { hsvcolor.hue = (360 * i) / 6; colors[i] = wmalloc(sizeof(RColor)); RHSVtoRGB(&hsvcolor, colors[i]); } colors[7] = NULL; sliderImg = RRenderMultiGradient(141, 16, colors, RGRD_HORIZONTAL); sliderPxmp = WMCreatePixmapFromRImage(scr, sliderImg, 0); RReleaseImage(sliderImg); if (sliderPxmp) W_PaintText(W_VIEW(panel->hsbHueS), sliderPxmp->pixmap, panel->font12, 2, 0, 100, WALeft, hsvcolor.value < 128 ? scr->white : scr->black, False, _("Hue"), strlen(_("Hue"))); else wwarning(_("Color Panel: Could not allocate memory")); WMSetSliderImage(panel->hsbHueS, sliderPxmp); WMReleasePixmap(sliderPxmp); for (i = 0; i < 7; i++) wfree(colors[i]); wfree(colors); } /*************** Custom Palette Functions ****************/ static void customRenderSpectrum(W_ColorPanel * panel) { RImage *spectrum; int x, y; unsigned char *ptr; CPColor cpColor; spectrum = RCreateImage(SPECTRUM_WIDTH, SPECTRUM_HEIGHT, False); ptr = spectrum->data; for (y = 0; y < SPECTRUM_HEIGHT; y++) { cpColor.hsv.hue = y; cpColor.hsv.saturation = 0; cpColor.hsv.value = 255; cpColor.set = cpHSV; for (x = 0; x < SPECTRUM_WIDTH; x++) { convertCPColor(&cpColor); *(ptr++) = (unsigned char)cpColor.rgb.red; *(ptr++) = (unsigned char)cpColor.rgb.green; *(ptr++) = (unsigned char)cpColor.rgb.blue; if (x < (SPECTRUM_WIDTH / 2)) cpColor.hsv.saturation++; if (x > (SPECTRUM_WIDTH / 2)) cpColor.hsv.value--; } } if (panel->customPaletteImg) { RReleaseImage(panel->customPaletteImg); panel->customPaletteImg = NULL; } panel->customPaletteImg = spectrum; } static void customSetPalette(W_ColorPanel * panel) { W_Screen *scr = WMWidgetScreen(panel->win); RImage *scaledImg; Pixmap image; image = XCreatePixmap(scr->display, W_DRAWABLE(scr), customPaletteWidth, customPaletteHeight, scr->depth); scaledImg = RScaleImage(panel->customPaletteImg, customPaletteWidth, customPaletteHeight); RConvertImage(scr->rcontext, scaledImg, &image); RReleaseImage(scaledImg); XCopyArea(scr->display, image, panel->customPaletteContentView->window, scr->copyGC, 0, 0, customPaletteWidth, customPaletteHeight, 0, 0); /* Check backimage exists. If it doesn't, allocate 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 = (double)(panel->customPaletteImg->width) / (double)(customPaletteWidth); panel->palYRatio = (double)(panel->customPaletteImg->height) / (double)(customPaletteHeight); } 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) * 3; panel->color.rgb.red = panel->customPaletteImg->data[ofs]; panel->color.rgb.green = panel->customPaletteImg->data[ofs + 1]; panel->color.rgb.blue = panel->customPaletteImg->data[ofs + 2]; panel->color.set = cpRGB; updateSwatch(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); } static void customPaletteHandleEvents(XEvent * event, void *data) { W_ColorPanel *panel = (W_ColorPanel *) data; switch (event->type) { case Expose: if (event->xexpose.count != 0) /* TODO Improve. */ 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; if (!panel->flags.continuous) { if (panel->action) (*panel->action) (panel, panel->clientData); } 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 = WMGetPopUpButtonSelectedItem(panel->customPaletteMenuBtn); /* Parameter not used, but tell the compiler that it is ok */ (void) w; switch (item) { case CPmenuNewFromFile: customPaletteMenuNewFromFile(panel); break; case CPmenuRename: customPaletteMenuRename(panel); break; case CPmenuRemove: customPaletteMenuRemove(panel); break; case CPmenuCopy: break; case CPmenuNewFromClipboard: break; } } static void customPaletteMenuNewFromFile(W_ColorPanel * panel) { 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); /* 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) wfree(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 = wstrconcat(panel->configurationPath, filename); while (access(tmp, F_OK) == 0) { char *newName; wfree(tmp); newName = generateNewFilename(filename); wfree(filename); filename = newName; tmp = wstrconcat(panel->configurationPath, filename); } wfree(tmp); /* Copy image to $(gnustepdir)/Library/Colors/ & * Add filename to history menu */ if (wcopy_file(panel->configurationPath, filepath, filename) == 0) { /* filepath is a "local" path now the file has been copied */ wfree(filepath); filepath = wstrconcat(panel->configurationPath, filename); /* load the image & add menu entries */ tmpImg = RLoadImage(scr->rcontext, filepath, 0); if (tmpImg) { if (panel->customPaletteImg) RReleaseImage(panel->customPaletteImg); panel->customPaletteImg = tmpImg; customSetPalette(panel); WMAddPopUpButtonItem(panel->customPaletteHistoryBtn, filename); panel->currentPalette = WMGetPopUpButtonNumberOfItems(panel->customPaletteHistoryBtn) - 1; WMSetPopUpButtonSelectedItem(panel->customPaletteHistoryBtn, panel->currentPalette); } } else { tmp = wstrconcat(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) { werror(_("can't remove file %s"), tmp); WMRunAlertPanel(scr, panel->win, _("File Error"), _("Couldn't remove file from Configuration Directory !"), _("OK"), NULL, NULL); } wfree(tmp); } wfree(filepath); wfree(filename); } WMFreeFilePanel(browseP); wfree(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) { wfree(toName); return; } /* For normal people */ fromPath = wstrconcat(panel->configurationPath, fromName); toPath = wstrconcat(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 { wfree(fromPath); wfree(toName); wfree(toPath); return; } } if (rename(fromPath, toPath) != 0) werror(_("Couldn't rename palette %s to %s"), fromName, toName); else { WMRemovePopUpButtonItem(panel->customPaletteHistoryBtn, item); WMInsertPopUpButtonItem(panel->customPaletteHistoryBtn, item, toName); WMSetPopUpButtonSelectedItem(panel->customPaletteHistoryBtn, item); } wfree(fromPath); wfree(toPath); wfree(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 = wstrconcat(_("This will permanently remove the palette "), WMGetPopUpButtonItem(panel->customPaletteHistoryBtn, item)); text = wstrconcat(tmp, _(".\n\nAre you sure you want to remove this palette ?")); wfree(tmp); choice = WMRunAlertPanel(scr, panel->win, _("Remove"), text, _("Yes"), _("No"), NULL); /* returns 0 (= "Yes") or 1 (="No") */ wfree(text); if (choice == 0) { tmp = wstrconcat(panel->configurationPath, WMGetPopUpButtonItem(panel->customPaletteHistoryBtn, item)); if (remove(tmp) == 0) { /* item-1 always exists */ WMSetPopUpButtonSelectedItem(panel->customPaletteHistoryBtn, item - 1); customPaletteHistoryCallback(panel->customPaletteHistoryBtn, panel); customSetPalette(panel); WMRemovePopUpButtonItem(panel->customPaletteHistoryBtn, item); } else { werror(_("Couldn't remove palette %s"), tmp); } wfree(tmp); } } 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; unsigned char perm_mask; item = WMGetPopUpButtonSelectedItem(panel->customPaletteHistoryBtn); if (item == panel->currentPalette) return; if (item == 0) { customRenderSpectrum(panel); WMSetPopUpButtonItemEnabled(panel->customPaletteMenuBtn, CPmenuRename, False); WMSetPopUpButtonItemEnabled(panel->customPaletteMenuBtn, CPmenuRemove, False); } else { /* Load file from configpath */ filename = wstrconcat(panel->configurationPath, WMGetPopUpButtonItem(panel->customPaletteHistoryBtn, item)); /* If the file corresponding to the item does not exist, * remove it from the history list and select the next one. */ perm_mask = (access(filename, F_OK) == 0); if (!perm_mask) { /* File does not exist */ wfree(filename); WMSetPopUpButtonSelectedItem(panel->customPaletteHistoryBtn, item - 1); WMRemovePopUpButtonItem(panel->customPaletteHistoryBtn, item); customPaletteHistoryCallback(w, data); return; } /* Get the image */ tmp = RLoadImage(scr->rcontext, filename, 0); if (tmp) { if (panel->customPaletteImg) { RReleaseImage(panel->customPaletteImg); panel->customPaletteImg = NULL; } panel->customPaletteImg = tmp; } /* If the image is not writable, don't allow removing/renaming */ perm_mask = (access(filename, W_OK) == 0); WMSetPopUpButtonItemEnabled(panel->customPaletteMenuBtn, CPmenuRename, perm_mask); WMSetPopUpButtonItemEnabled(panel->customPaletteMenuBtn, CPmenuRemove, perm_mask); wfree(filename); } customSetPalette(panel); panel->currentPalette = item; } /************************* ColorList Panel Functions **********************/ static void colorListPaintItem(WMList * lPtr, int index, Drawable d, char *text, int state, WMRect * rect) { WMScreen *scr = WMWidgetScreen(lPtr); Display *dpy = WMScreenDisplay(scr); WMView *view = W_VIEW(lPtr); RColor *color = (RColor *) WMGetListItem(lPtr, index)->clientData; W_ColorPanel *panel = WMGetHangedData(lPtr); int width, height, x, y; WMColor *fillColor; width = rect->size.width; height = rect->size.height; x = rect->pos.x; y = rect->pos.y; if (state & WLDSSelected) XFillRectangle(dpy, d, WMColorGC(scr->white), x, y, width, height); else XFillRectangle(dpy, d, WMColorGC(view->backColor), x, y, width, height); fillColor = WMCreateRGBColor(scr, color->red << 8, color->green << 8, color->blue << 8, True); XFillRectangle(dpy, d, WMColorGC(fillColor), x, y, 15, height); WMReleaseColor(fillColor); WMDrawString(scr, d, scr->black, panel->font12, x + 18, y, text, strlen(text)); } static void colorListSelect(WMWidget * w, void *data) { W_ColorPanel *panel = (W_ColorPanel *) data; CPColor cpColor; cpColor.rgb = *((RColor *) WMGetListSelectedItem(w)->clientData); cpColor.set = cpRGB; panel->lastChanged = WMColorListModeColorPanel; updateSwatch(panel, cpColor); } static void colorListColorMenuCallback(WMWidget * w, void *data) { W_ColorPanel *panel = (W_ColorPanel *) data; int item = WMGetPopUpButtonSelectedItem(panel->colorListColorMenuBtn); /* Parameter not used, but tell the compiler that it is ok */ (void) w; switch (item) { case CLmenuAdd: break; case CLmenuRename: break; case CLmenuRemove: break; } } static void colorListListMenuCallback(WMWidget * w, void *data) { W_ColorPanel *panel = (W_ColorPanel *) data; int item = WMGetPopUpButtonSelectedItem(panel->colorListListMenuBtn); /* Parameter not used, but tell the compiler that it is ok */ (void) w; switch (item) { case CLmenuAdd: break; case CLmenuRename: break; case CLmenuRemove: break; } } /*************** Panel Initialisation Functions *****************/ static void wheelInit(W_ColorPanel * panel) { CPColor cpColor; if (panel->color.set != cpHSV) convertCPColor(&panel->color); WMSetSliderValue(panel->wheelBrightnessS, 255 - panel->color.hsv.value); panel->colx = 2 + rint((colorWheelSize / 2.0) * (1 + (panel->color.hsv.saturation / 255.0) * cos(panel->color.hsv.hue * WM_PI / 180.0))); panel->coly = 2 + rint((colorWheelSize / 2.0) * (1 + (panel->color.hsv.saturation / 255.0) * sin(-panel->color.hsv.hue * WM_PI / 180.0))); wheelCalculateValues(panel, panel->color.hsv.value); cpColor = panel->color; cpColor.hsv.value = 255; cpColor.set = cpHSV; wheelUpdateBrightnessGradient(panel, cpColor); } static void grayInit(W_ColorPanel * panel) { int value; char tmp[4]; if (panel->color.set != cpHSV) convertCPColor(&panel->color); value = rint(panel->color.hsv.value / 2.55); WMSetSliderValue(panel->grayBrightnessS, value); sprintf(tmp, "%d", value); WMSetTextFieldText(panel->grayBrightnessT, tmp); } static void rgbInit(W_ColorPanel * panel) { char tmp[4]; const char *format; if (panel->color.set != cpRGB) convertCPColor(&panel->color); WMSetSliderValue(panel->rgbRedS, panel->color.rgb.red); WMSetSliderValue(panel->rgbGreenS, panel->color.rgb.green); WMSetSliderValue(panel->rgbBlueS, panel->color.rgb.blue); switch (panel->rgbState) { case RGBdec: format = "%d"; break; case RGBhex: format = "%0X"; break; default: /* Avoid compiler warning */ format = ""; } sprintf(tmp, format, panel->color.rgb.red); WMSetTextFieldText(panel->rgbRedT, tmp); sprintf(tmp, format, panel->color.rgb.green); WMSetTextFieldText(panel->rgbGreenT, tmp); sprintf(tmp, format, panel->color.rgb.blue); WMSetTextFieldText(panel->rgbBlueT, tmp); } static void cmykInit(W_ColorPanel * panel) { int value[3]; char tmp[4]; if (panel->color.set != cpRGB) convertCPColor(&panel->color); value[0] = rint((255 - panel->color.rgb.red) / 2.55); value[1] = rint((255 - panel->color.rgb.green) / 2.55); value[2] = rint((255 - panel->color.rgb.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[4]; if (panel->color.set != cpHSV) convertCPColor(&panel->color); value[0] = panel->color.hsv.hue; value[1] = rint(panel->color.hsv.saturation / 2.55); value[2] = rint(panel->color.hsv.value / 2.55); WMSetSliderValue(panel->hsbHueS, value[0]); WMSetSliderValue(panel->hsbSaturationS, value[1]); WMSetSliderValue(panel->hsbBrightnessS, value[2]); sprintf(tmp, "%hu", 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); } /************************** Common utility functions ************************/ static char *generateNewFilename(const char *curName) { int n; char c; int baseLen; const char *ptr; char *newName; assert(curName); ptr = curName; if (((ptr = strrchr(ptr, '{')) == 0) || sscanf(ptr, "{%i}%c", &n, &c) != 1) return wstrconcat(curName, " {1}"); baseLen = ptr - curName - 1; newName = wmalloc(baseLen + 16); strncpy(newName, curName, baseLen); snprintf(&newName[baseLen], 16, " {%i}", n + 1); return newName; } static void convertCPColor(CPColor * color) { unsigned short old_hue = 0; switch (color->set) { case cpNone: wwarning(_("Color Panel: Color unspecified")); return; case cpRGB: old_hue = color->hsv.hue; RRGBtoHSV(&(color->rgb), &(color->hsv)); /* In black the hue is undefined, and may change by conversion * Same for white. */ if (((color->rgb.red == 0) && (color->rgb.green == 0) && (color->rgb.blue == 0)) || ((color->rgb.red == 0) && (color->rgb.green == 0) && (color->rgb.blue == 255)) ) color->hsv.hue = old_hue; break; case cpHSV: RHSVtoRGB(&(color->hsv), &(color->rgb)); break; } } static RColor ulongToRColor(WMScreen * scr, unsigned long value) { RColor color; XColor *xcolor = NULL; xcolor = wmalloc(sizeof(XColor)); xcolor->pixel = value; XQueryColor(scr->display, scr->rcontext->cmap, xcolor); color.red = xcolor->red >> 8; color.green = xcolor->green >> 8; color.blue = xcolor->blue >> 8; color.alpha = 0; wfree(xcolor); return color; } static unsigned char getShift(unsigned char value) { unsigned char i = -1; if (value == 0) return 0; while (value) { value >>= 1; i++; } return i; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/wtext.c��������������������������������������������������������������������0000644�0001750�0001750�00000271153�13642357773�013266� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ /* WINGs WMText: multi-line/font/color/graphic text widget, by Nwanua. */ #include "WINGsP.h" #include <ctype.h> #include <X11/keysym.h> #include <X11/Xatom.h> #define DO_BLINK 0 /* TODO: * - verify what happens with XK_return in insertTextInt... * - selection code... selects can be funny if it crosses over. use rect? * - also inspect behaviour for WACenter and WARight * - what if a widget grabs the click... howto say: "pressed me"? * note that WMCreateEventHandler takes one data, but need widget & tPtr * - FIX: graphix blocks MUST be skipped if monoFont even though they exist! * - check if support for Horizontal Scroll is complete * - Tabs now are simply replaced by 4 spaces... * - redo blink code to reduce paint event... use pixmap buffer... * - add paragraph support (full) and '\n' code in getStream.. */ /* a Section is a section of a TextBlock that describes what parts of a TextBlock has been laid out on which "line"... o this greatly aids redraw, scroll and selection. o this is created during layoutLine, but may be later modified. o there may be many Sections per TextBlock, hence the array */ typedef struct { unsigned int x, y; /* where to draw it from */ unsigned short w, h; /* its width and height */ unsigned short begin; /* where the layout begins */ unsigned short end; /* where it ends */ unsigned short max_d; /* a quick hack for layOut if(laidOut) */ unsigned short last:1; /* is it the last section on a "line"? */ unsigned int _y:31; /* the "line" it and other textblocks are on */ } Section; /* a TextBlock is a node in a doubly-linked list of TextBlocks containing: o text for the block, color and font o or a pointer to the pixmap o OR a pointer to the widget and the (text) description for its graphic */ typedef struct _TextBlock { struct _TextBlock *next; /* next text block in linked list */ struct _TextBlock *prior; /* prior text block in linked list */ char *text; /* pointer to text (could be kanji) */ /* or to the object's description */ union { WMFont *font; /* the font */ WMWidget *widget; /* the embedded widget */ WMPixmap *pixmap; /* the pixmap */ } d; /* description */ unsigned short used; /* number of chars in this block */ unsigned short allocated; /* size of allocation (in chars) */ WMColor *color; /* the color */ Section *sections; /* the region for layouts (a growable array) */ /* an _array_! of size _nsections_ */ unsigned short s_begin; /* where the selection begins */ unsigned short s_end; /* where it ends */ unsigned int first:1; /* first TextBlock in paragraph */ unsigned int blank:1; /* ie. blank paragraph */ unsigned int kanji:1; /* is of 16-bit characters or not */ unsigned int graphic:1; /* graphic or text: text=0 */ unsigned int object:1; /* embedded object or pixmap */ unsigned int underlined:1; /* underlined or not */ unsigned int selected:1; /* selected or not */ unsigned int nsections:8; /* over how many "lines" a TextBlock wraps */ int script:8; /* script in points: negative for subscript */ unsigned int marginN:8; /* which of the margins in the tPtr to use */ unsigned int nClicks:2; /* single, double, triple clicks */ unsigned int RESERVED:7; } TextBlock; /* I'm lazy: visible.h vs. visible.size.height :-) */ typedef struct { int y, x, h, w; } myRect; typedef struct W_Text { W_Class widgetClass; /* the class number of this widget */ W_View *view; /* the view referring to this instance */ WMRuler *ruler; /* the ruler widget to manipulate paragraphs */ WMScroller *vS; /* the vertical scroller */ unsigned int vpos; /* the current vertical position */ unsigned int prevVpos; /* the previous vertical position */ WMScroller *hS; /* the horizontal scroller */ unsigned int hpos; /* the current horizontal position */ unsigned int prevHpos; /* the previous horizontal position */ WMFont *dFont; /* the default font */ WMColor *dColor; /* the default color */ WMPixmap *dBulletPix; /* the default pixmap for bullets */ WMColor *fgColor; /* The current foreground color */ WMColor *bgColor; /* The background color */ GC stippledGC; /* the GC to overlay selected graphics with */ Pixmap db; /* the buffer on which to draw */ WMPixmap *bgPixmap; /* the background pixmap */ myRect visible; /* the actual rectangle that can be drawn into */ myRect cursor; /* the position and (height) of cursor */ myRect sel; /* the selection rectangle */ WMPoint clicked; /* where in the _document_ was clicked */ unsigned short tpos; /* the position in the currentTextBlock */ unsigned short docWidth; /* the width of the entire document */ unsigned int docHeight; /* the height of the entire document */ TextBlock *firstTextBlock; TextBlock *lastTextBlock; TextBlock *currentTextBlock; WMArray *gfxItems; /* a nice array of graphic items */ #if DO_BLINK WMHandlerID timerID; /* for nice twinky-winky */ #endif WMAction *parser; WMAction *writer; WMTextDelegate *delegate; Time lastClickTime; WMRulerMargins *margins; /* an array of margins */ unsigned int nMargins:7; /* the total number of margins in use */ struct { unsigned int monoFont:1; /* whether to ignore formats and graphic */ unsigned int focused:1; /* whether this instance has input focus */ unsigned int editable:1; /* "silly user, you can't edit me" */ unsigned int ownsSelection:1; /* "I ownz the current selection!" */ unsigned int pointerGrabbed:1; /* "heh, gib me pointer" */ unsigned int extendSelection:1; /* shift-drag to select more regions */ unsigned int rulerShown:1; /* whether the ruler is shown or not */ unsigned int frozen:1; /* whether screen updates are to be made */ unsigned int cursorShown:1; /* whether to show the cursor */ unsigned int acceptsGraphic:1; /* accept graphic when dropped */ unsigned int horizOnDemand:1; /* if a large image should appear */ unsigned int needsLayOut:1; /* in case of Append/Deletes */ unsigned int ignoreNewLine:1; /* turn it into a ' ' in streams > 1 */ unsigned int indentNewLine:1; /* add " " for a newline typed */ unsigned int laidOut:1; /* have the TextBlocks all been laid out */ unsigned int waitingForSelection:1; /* I don't wanna wait in vain... */ unsigned int prepend:1; /* prepend=1, append=0 (for parsers) */ WMAlignment alignment:2; /* the alignment for text */ WMReliefType relief:3; /* the relief to display with */ unsigned int isOverGraphic:2; /* the mouse is over a graphic */ unsigned int first:1; /* for plain text parsing, newline? */ /* unsigned int RESERVED:1; */ } flags; WMArray *xdndSourceTypes; WMArray *xdndDestinationTypes; } Text; #define NOTIFY(T,C,N,A) {\ WMNotification *notif = WMCreateNotification(N,T,A);\ if ((T)->delegate && (T)->delegate->C)\ (*(T)->delegate->C)((T)->delegate,notif);\ WMPostNotification(notif);\ WMReleaseNotification(notif);} #define TYPETEXT 0 #if 0 /* just to print blocks of text not terminated by \0 */ static void output(char *ptr, int len) { char *s; s = wmalloc(len + 1); memcpy(s, ptr, len); s[len] = 0; /* printf(" s is [%s] (%d)\n", s, strlen(s)); */ printf("[%s]\n", s); wfree(s); } #endif #if DO_BLINK #define CURSOR_BLINK_ON_DELAY 600 #define CURSOR_BLINK_OFF_DELAY 400 #endif #define STIPPLE_WIDTH 8 #define STIPPLE_HEIGHT 8 static char STIPPLE_BITS[] = { 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa }; static char *default_bullet[] = { "6 6 4 1", " c None s None", ". c black", "X c white", "o c #808080", " ... ", ".XX.. ", ".XX..o", ".....o", " ...oo", " ooo " }; static void handleEvents(XEvent * event, void *data); static void layOutDocument(Text * tPtr); static void updateScrollers(Text * tPtr); static int getMarginNumber(Text * tPtr, WMRulerMargins * margins) { unsigned int i = 0; for (i = 0; i < tPtr->nMargins; i++) { if (WMIsMarginEqualToMargin(&tPtr->margins[i], margins)) return i; } return -1; } static int newMargin(Text * tPtr, WMRulerMargins * margins) { int n; if (!margins) { tPtr->margins[0].retainCount++; return 0; } n = getMarginNumber(tPtr, margins); if (n == -1) { if (tPtr->nMargins >= 127) { n = tPtr->nMargins - 1; return n; } tPtr->margins = wrealloc(tPtr->margins, (++tPtr->nMargins) * sizeof(WMRulerMargins)); n = tPtr->nMargins - 1; tPtr->margins[n].left = margins->left; tPtr->margins[n].first = margins->first; tPtr->margins[n].body = margins->body; tPtr->margins[n].right = margins->right; /* for each tab... */ tPtr->margins[n].retainCount = 1; } else { tPtr->margins[n].retainCount++; } return n; } static Bool sectionWasSelected(Text * tPtr, TextBlock * tb, XRectangle * rect, int s) { unsigned short i, w, lw, selected = False, extend = False; myRect sel; /* if selection rectangle completely encloses the section */ if ((tb->sections[s]._y >= tPtr->visible.y + tPtr->sel.y) && (tb->sections[s]._y + tb->sections[s].h <= tPtr->visible.y + tPtr->sel.y + tPtr->sel.h)) { sel.x = 0; sel.w = tPtr->visible.w; selected = extend = True; /* or if it starts on a line and then goes further down */ } else if ((tb->sections[s]._y <= tPtr->visible.y + tPtr->sel.y) && (tb->sections[s]._y + tb->sections[s].h <= tPtr->visible.y + tPtr->sel.y + tPtr->sel.h) && (tb->sections[s]._y + tb->sections[s].h >= tPtr->visible.y + tPtr->sel.y)) { sel.x = WMAX(tPtr->sel.x, tPtr->clicked.x); sel.w = tPtr->visible.w; selected = extend = True; /* or if it begins before a line, but ends on it */ } else if ((tb->sections[s]._y >= tPtr->visible.y + tPtr->sel.y) && (tb->sections[s]._y + tb->sections[s].h >= tPtr->visible.y + tPtr->sel.y + tPtr->sel.h) && (tb->sections[s]._y <= tPtr->visible.y + tPtr->sel.y + tPtr->sel.h)) { if (1 || tPtr->sel.x + tPtr->sel.w > tPtr->clicked.x) sel.w = tPtr->sel.x + tPtr->sel.w; else sel.w = tPtr->sel.x; sel.x = 0; selected = True; /* or if the selection rectangle lies entirely within a line */ } else if ((tb->sections[s]._y <= tPtr->visible.y + tPtr->sel.y) && (tPtr->sel.w >= 2) && (tb->sections[s]._y + tb->sections[s].h >= tPtr->visible.y + tPtr->sel.y + tPtr->sel.h)) { sel.x = tPtr->sel.x; sel.w = tPtr->sel.w; selected = True; } if (selected) { selected = False; /* if not within (modified) selection rectangle */ if (tb->sections[s].x > sel.x + sel.w || tb->sections[s].x + tb->sections[s].w < sel.x) return False; if (tb->graphic) { if (tb->sections[s].x + tb->sections[s].w <= sel.x + sel.w && tb->sections[s].x >= sel.x) { rect->width = tb->sections[s].w; rect->x = tb->sections[s].x; selected = True; } } else { i = tb->sections[s].begin; lw = 0; if (0 && tb->sections[s].x >= sel.x) { tb->s_begin = tb->sections[s].begin; goto _selEnd; } while (++i <= tb->sections[s].end) { w = WMWidthOfString(tb->d.font, &(tb->text[i - 1]), 1); lw += w; if (lw + tb->sections[s].x >= sel.x || i == tb->sections[s].end) { lw -= w; i--; tb->s_begin = (tb->selected ? WMIN(tb->s_begin, i) : i); break; } } if (i > tb->sections[s].end) { printf("WasSelected: (i > tb->sections[s].end) \n"); return False; } _selEnd: rect->x = tb->sections[s].x + lw; lw = 0; while (++i <= tb->sections[s].end) { w = WMWidthOfString(tb->d.font, &(tb->text[i - 1]), 1); lw += w; if (lw + rect->x >= sel.x + sel.w || i == tb->sections[s].end) { if (i != tb->sections[s].end) { lw -= w; i--; } rect->width = lw; if (tb->sections[s].last && sel.x + sel.w >= tb->sections[s].x + tb->sections[s].w && extend) { rect->width += (tPtr->visible.w - rect->x - lw); } tb->s_end = (tb->selected ? WMAX(tb->s_end, i) : i); selected = True; break; } } } } if (selected) { rect->y = tb->sections[s]._y - tPtr->vpos; rect->height = tb->sections[s].h; if (tb->graphic) { printf("DEBUG: graphic s%d h%d\n", s, tb->sections[s].h); } } return selected; } static void setSelectionProperty(WMText * tPtr, WMFont * font, WMColor * color, int underlined) { TextBlock *tb; int isFont = False; tb = tPtr->firstTextBlock; if (!tb || !tPtr->flags.ownsSelection) return; if (font && (!color || underlined == -1)) isFont = True; while (tb) { if (tPtr->flags.monoFont || tb->selected) { if (tPtr->flags.monoFont || (tb->s_end - tb->s_begin == tb->used) || tb->graphic) { if (isFont) { if (!tb->graphic) { WMReleaseFont(tb->d.font); tb->d.font = WMRetainFont(font); } } else if (underlined != -1) { tb->underlined = underlined; } else { WMReleaseColor(tb->color); tb->color = WMRetainColor(color); } } else if (tb->s_end <= tb->used && tb->s_begin < tb->s_end) { TextBlock *midtb, *otb = tb; if (underlined != -1) { midtb = (TextBlock *) WMCreateTextBlockWithText(tPtr, &(tb->text[tb->s_begin]), tb->d.font, tb->color, False, (tb->s_end - tb->s_begin)); } else { midtb = (TextBlock *) WMCreateTextBlockWithText(tPtr, &(tb->text[tb->s_begin]), (isFont ? font : tb->d. font), (isFont ? tb-> color : color), False, (tb->s_end - tb->s_begin)); } if (midtb) { if (underlined != -1) { midtb->underlined = underlined; } else { midtb->underlined = otb->underlined; } midtb->selected = !True; midtb->s_begin = 0; midtb->s_end = midtb->used; tPtr->currentTextBlock = tb; WMAppendTextBlock(tPtr, midtb); tb = tPtr->currentTextBlock; } if (otb->used - otb->s_end > 0) { TextBlock *ntb; ntb = (TextBlock *) WMCreateTextBlockWithText(tPtr, &(otb->text[otb->s_end]), otb->d.font, otb->color, False, otb->used - otb->s_end); if (ntb) { ntb->underlined = otb->underlined; ntb->selected = False; WMAppendTextBlock(tPtr, ntb); tb = tPtr->currentTextBlock; } } if (midtb) { tPtr->currentTextBlock = midtb; } otb->selected = False; otb->used = otb->s_begin; } } tb = tb->next; } tPtr->flags.needsLayOut = True; WMThawText(tPtr); /* in case the size changed... */ if (isFont && tPtr->currentTextBlock) { TextBlock *tb = tPtr->currentTextBlock; printf("%d %d %d\n", tPtr->sel.y, tPtr->sel.h, tPtr->sel.w); tPtr->sel.y = 3 + tb->sections[0]._y; tPtr->sel.h = tb->sections[tb->nsections - 1]._y - tb->sections[0]._y; tPtr->sel.w = tb->sections[tb->nsections - 1].w; if (tb->sections[tb->nsections - 1]._y != tb->sections[0]._y) { tPtr->sel.x = 0; } printf("%d %d %d\n\n\n", tPtr->sel.y, tPtr->sel.h, tPtr->sel.w); } } static Bool removeSelection(Text * tPtr) { TextBlock *tb = NULL; Bool first = False; if (!(tb = tPtr->firstTextBlock)) return False; while (tb) { if (tb->selected) { if (!first && !tb->graphic) { WMReleaseFont(tPtr->dFont); tPtr->dFont = WMRetainFont(tb->d.font); first = True; } if ((tb->s_end - tb->s_begin == tb->used) || tb->graphic) { tPtr->currentTextBlock = tb; if (tb->next) { tPtr->tpos = 0; } else if (tb->prior) { if (tb->prior->graphic) tPtr->tpos = 1; else tPtr->tpos = tb->prior->used; } else tPtr->tpos = 0; WMDestroyTextBlock(tPtr, WMRemoveTextBlock(tPtr)); tb = tPtr->currentTextBlock; continue; } else if (tb->s_end <= tb->used) { memmove(&(tb->text[tb->s_begin]), &(tb->text[tb->s_end]), tb->used - tb->s_end); tb->used -= (tb->s_end - tb->s_begin); tb->selected = False; tPtr->tpos = tb->s_begin; } } tb = tb->next; } return True; } static TextBlock *getFirstNonGraphicBlockFor(TextBlock * tb, short dir) { TextBlock *hold = tb; if (!tb) return NULL; while (tb) { if (!tb->graphic) break; tb = (dir ? tb->next : tb->prior); } if (!tb) { tb = hold; while (tb) { if (!tb->graphic) break; tb = (dir ? tb->prior : tb->next); } } if (!tb) return NULL; return tb; } static Bool updateStartForCurrentTextBlock(Text * tPtr, int x, int y, int *dir, TextBlock * tb) { if (tPtr->flags.monoFont && tb->graphic) { tb = getFirstNonGraphicBlockFor(tb, *dir); if (!tb) return 0; if (tb->graphic) { tPtr->currentTextBlock = (*dir ? tPtr->lastTextBlock : tPtr->firstTextBlock); tPtr->tpos = 0; return 0; } } if (!tb->sections) { layOutDocument(tPtr); return 0; } *dir = !(y <= tb->sections[0].y); if (*dir) { if ((y <= tb->sections[0]._y + tb->sections[0].h) && (y >= tb->sections[0]._y)) { /* if it's on the same line */ if (x < tb->sections[0].x) *dir = 0; } } else { if ((y <= tb->sections[tb->nsections - 1]._y + tb->sections[tb->nsections - 1].h) && (y >= tb->sections[tb->nsections - 1]._y)) { /* if it's on the same line */ if (x > tb->sections[tb->nsections - 1].x) *dir = 1; } } return 1; } static void paintText(Text * tPtr) { TextBlock *tb; WMFont *font; const char *text; int len, y, c, s, done = False, dir /* 1 = down */ ; WMScreen *scr = tPtr->view->screen; Display *dpy = tPtr->view->screen->display; Window win = tPtr->view->window; WMColor *color; if (!tPtr->view->flags.realized || !tPtr->db || tPtr->flags.frozen) return; XFillRectangle(dpy, tPtr->db, WMColorGC(tPtr->bgColor), 0, 0, tPtr->visible.w, tPtr->visible.h); if (tPtr->bgPixmap) { WMDrawPixmap(tPtr->bgPixmap, tPtr->db, (tPtr->visible.w - tPtr->visible.x - tPtr->bgPixmap->width) / 2, (tPtr->visible.h - tPtr->visible.y - tPtr->bgPixmap->height) / 2); } if (!(tb = tPtr->currentTextBlock)) { if (!(tb = tPtr->firstTextBlock)) { goto _copy_area; } } done = False; /* first, which direction? Don't waste time looking all over, since the parts to be drawn will most likely be near what was previously drawn */ if (!updateStartForCurrentTextBlock(tPtr, 0, tPtr->vpos, &dir, tb)) goto _copy_area; while (tb) { if (tb->graphic && tPtr->flags.monoFont) goto _getSibling; if (dir) { if (tPtr->vpos <= tb->sections[tb->nsections - 1]._y + tb->sections[tb->nsections - 1].h) break; } else { if (tPtr->vpos >= tb->sections[tb->nsections - 1]._y + tb->sections[tb->nsections - 1].h) break; } _getSibling: if (dir) { if (tb->next) tb = tb->next; else break; } else { if (tb->prior) tb = tb->prior; else break; } } /* first, place all text that can be viewed */ while (!done && tb) { if (tb->graphic) { tb = tb->next; continue; } tb->selected = False; for (s = 0; s < tb->nsections && !done; s++) { if (tb->sections[s]._y > tPtr->vpos + tPtr->visible.h) { done = True; break; } if (tb->sections[s].y + tb->sections[s].h < tPtr->vpos) continue; if (tPtr->flags.monoFont) { font = tPtr->dFont; color = tPtr->fgColor; } else { font = tb->d.font; color = tb->color; } if (tPtr->flags.ownsSelection) { XRectangle rect; if (sectionWasSelected(tPtr, tb, &rect, s)) { tb->selected = True; XFillRectangle(dpy, tPtr->db, WMColorGC(scr->gray), rect.x, rect.y, rect.width, rect.height); } } len = tb->sections[s].end - tb->sections[s].begin; text = &(tb->text[tb->sections[s].begin]); y = tb->sections[s].y - tPtr->vpos; WMDrawString(scr, tPtr->db, color, font, tb->sections[s].x - tPtr->hpos, y, text, len); if (!tPtr->flags.monoFont && tb->underlined) { XDrawLine(dpy, tPtr->db, WMColorGC(color), tb->sections[s].x - tPtr->hpos, y + font->y + 1, tb->sections[s].x + tb->sections[s].w - tPtr->hpos, y + font->y + 1); } } tb = (!done ? tb->next : NULL); } /* now , show all graphic items that can be viewed */ c = WMGetArrayItemCount(tPtr->gfxItems); if (c > 0 && !tPtr->flags.monoFont) { int j, h; for (j = 0; j < c; j++) { tb = (TextBlock *) WMGetFromArray(tPtr->gfxItems, j); /* if it's not viewable, and mapped, unmap it */ if (tb->sections[0]._y + tb->sections[0].h <= tPtr->vpos || tb->sections[0]._y >= tPtr->vpos + tPtr->visible.h) { if (tb->object) { if ((W_VIEW(tb->d.widget))->flags.mapped) { WMUnmapWidget(tb->d.widget); } } } else { /* if it's viewable, and not mapped, map it */ if (tb->object) { W_View *view = W_VIEW(tb->d.widget); if (!view->flags.realized) WMRealizeWidget(tb->d.widget); if (!view->flags.mapped) { XMapWindow(view->screen->display, view->window); XFlush(view->screen->display); view->flags.mapped = 1; } } if (tb->object) { WMMoveWidget(tb->d.widget, tb->sections[0].x + tPtr->visible.x - tPtr->hpos, tb->sections[0].y + tPtr->visible.y - tPtr->vpos); h = WMWidgetHeight(tb->d.widget) + 1; } else { WMDrawPixmap(tb->d.pixmap, tPtr->db, tb->sections[0].x - tPtr->hpos, tb->sections[0].y - tPtr->vpos); h = tb->d.pixmap->height + 1; } if (tPtr->flags.ownsSelection) { XRectangle rect; if (sectionWasSelected(tPtr, tb, &rect, 0)) { Drawable d = (0 && tb->object ? (WMWidgetView(tb->d.widget))->window : tPtr->db); tb->selected = True; XFillRectangle(dpy, d, tPtr->stippledGC, /*XFillRectangle(dpy, tPtr->db, tPtr->stippledGC, */ rect.x, rect.y, rect.width, rect.height); } } if (!tPtr->flags.monoFont && tb->underlined) { XDrawLine(dpy, tPtr->db, WMColorGC(tb->color), tb->sections[0].x - tPtr->hpos, tb->sections[0].y + h - tPtr->vpos, tb->sections[0].x + tb->sections[0].w - tPtr->hpos, tb->sections[0].y + h - tPtr->vpos); } } } } _copy_area: if (tPtr->flags.editable && tPtr->flags.cursorShown && tPtr->cursor.x != -23 && tPtr->flags.focused) { int y = tPtr->cursor.y - tPtr->vpos; XDrawLine(dpy, tPtr->db, WMColorGC(tPtr->fgColor), tPtr->cursor.x, y, tPtr->cursor.x, y + tPtr->cursor.h); } XCopyArea(dpy, tPtr->db, win, WMColorGC(tPtr->bgColor), 0, 0, tPtr->visible.w, tPtr->visible.h, tPtr->visible.x, tPtr->visible.y); W_DrawRelief(scr, win, 0, 0, tPtr->view->size.width, tPtr->view->size.height, tPtr->flags.relief); if (tPtr->ruler && tPtr->flags.rulerShown) XDrawLine(dpy, win, WMColorGC(tPtr->fgColor), 2, 42, tPtr->view->size.width - 4, 42); } static void mouseOverObject(Text * tPtr, int x, int y) { TextBlock *tb; Bool result = False; x -= tPtr->visible.x; x += tPtr->hpos; y -= tPtr->visible.y; y += tPtr->vpos; if (tPtr->flags.ownsSelection) { if (tPtr->sel.x <= x && tPtr->sel.y <= y && tPtr->sel.x + tPtr->sel.w >= x && tPtr->sel.y + tPtr->sel.h >= y) { tPtr->flags.isOverGraphic = 1; result = True; } } if (!result) { int j, c = WMGetArrayItemCount(tPtr->gfxItems); if (c < 1) tPtr->flags.isOverGraphic = 0; for (j = 0; j < c; j++) { tb = (TextBlock *) WMGetFromArray(tPtr->gfxItems, j); if (!tb || !tb->sections) { tPtr->flags.isOverGraphic = 0; return; } if (!tb->object) { if (tb->sections[0].x <= x && tb->sections[0].y <= y && tb->sections[0].x + tb->sections[0].w >= x && tb->sections[0].y + tb->d.pixmap->height >= y) { tPtr->flags.isOverGraphic = 3; result = True; break; } } } } if (!result) tPtr->flags.isOverGraphic = 0; tPtr->view->attribs.cursor = (result ? tPtr->view->screen->defaultCursor : tPtr->view->screen->textCursor); { XSetWindowAttributes attribs; attribs.cursor = tPtr->view->attribs.cursor; XChangeWindowAttributes(tPtr->view->screen->display, tPtr->view->window, CWCursor, &attribs); } } #if DO_BLINK static void blinkCursor(void *data) { Text *tPtr = (Text *) data; if (tPtr->flags.cursorShown) { tPtr->timerID = WMAddTimerHandler(CURSOR_BLINK_OFF_DELAY, blinkCursor, data); } else { tPtr->timerID = WMAddTimerHandler(CURSOR_BLINK_ON_DELAY, blinkCursor, data); } paintText(tPtr); tPtr->flags.cursorShown = !tPtr->flags.cursorShown; } #endif static void updateCursorPosition(Text * tPtr) { TextBlock *tb = NULL; int x, y, h, s; if (tPtr->flags.needsLayOut) layOutDocument(tPtr); if (!(tb = tPtr->currentTextBlock)) { if (!(tb = tPtr->firstTextBlock)) { WMFont *font = tPtr->dFont; tPtr->tpos = 0; tPtr->cursor.h = font->height + abs(font->height - font->y); tPtr->cursor.y = 2; tPtr->cursor.x = 2; return; } } if (tb->blank) { tPtr->tpos = 0; y = tb->sections[0].y; h = tb->sections[0].h; x = tb->sections[0].x; } else if (tb->graphic) { y = tb->sections[0].y; h = tb->sections[0].h; x = tb->sections[0].x; if (tPtr->tpos == 1) x += tb->sections[0].w; } else { if (tPtr->tpos > tb->used) tPtr->tpos = tb->used; for (s = 0; s < tb->nsections - 1; s++) { if (tPtr->tpos >= tb->sections[s].begin && tPtr->tpos <= tb->sections[s].end) break; } y = tb->sections[s]._y; h = tb->sections[s].h; x = tb->sections[s].x + WMWidthOfString((tPtr->flags.monoFont ? tPtr->dFont : tb->d.font), &tb->text[tb->sections[s].begin], tPtr->tpos - tb->sections[s].begin); } tPtr->cursor.y = y; tPtr->cursor.h = h; tPtr->cursor.x = x; /* scroll the bars if the cursor is not visible */ if (tPtr->flags.editable && tPtr->cursor.x != -23) { if (tPtr->cursor.y + tPtr->cursor.h > tPtr->vpos + tPtr->visible.y + tPtr->visible.h) { tPtr->vpos += (tPtr->cursor.y + tPtr->cursor.h + 10 - (tPtr->vpos + tPtr->visible.y + tPtr->visible.h)); } else if (tPtr->cursor.y < tPtr->vpos + tPtr->visible.y) { tPtr->vpos -= (tPtr->vpos + tPtr->visible.y - tPtr->cursor.y); } } updateScrollers(tPtr); } static void cursorToTextPosition(Text * tPtr, int x, int y) { TextBlock *tb = NULL; int done = False, s, pos, len, _w, _y, dir = 1; /* 1 == "down" */ const char *text; if (tPtr->flags.needsLayOut) layOutDocument(tPtr); y += (tPtr->vpos - tPtr->visible.y); if (y < 0) y = 0; x -= (tPtr->visible.x - 2); if (x < 0) x = 0; /* clicked is relative to document, not window... */ tPtr->clicked.x = x; tPtr->clicked.y = y; if (!(tb = tPtr->currentTextBlock)) { if (!(tb = tPtr->firstTextBlock)) { WMFont *font = tPtr->dFont; tPtr->tpos = 0; tPtr->cursor.h = font->height + abs(font->height - font->y); tPtr->cursor.y = 2; tPtr->cursor.x = 2; return; } } /* first, which direction? Most likely, newly clicked position will be close to previous */ if (!updateStartForCurrentTextBlock(tPtr, x, y, &dir, tb)) return; s = (dir ? 0 : tb->nsections - 1); if (y >= tb->sections[s]._y && y <= tb->sections[s]._y + tb->sections[s].h) { goto _doneV; } /* get the first (or last) section of the TextBlock that lies about the vertical click point */ done = False; while (!done && tb) { if (tPtr->flags.monoFont && tb->graphic) { if ((dir ? tb->next : tb->prior)) tb = (dir ? tb->next : tb->prior); continue; } s = (dir ? 0 : tb->nsections - 1); while (!done && (dir ? (s < tb->nsections) : (s >= 0))) { if ((dir ? (y <= tb->sections[s]._y + tb->sections[s].h) : (y >= tb->sections[s]._y))) { done = True; } else { dir ? s++ : s--; } } if (!done) { if ((dir ? tb->next : tb->prior)) { tb = (dir ? tb->next : tb->prior); } else { break; /* goto _doneH; */ } } } if (s < 0 || s >= tb->nsections) { s = (dir ? tb->nsections - 1 : 0); } _doneV: /* we have the line, which TextBlock on that line is it? */ pos = (dir ? 0 : tb->sections[s].begin); if (tPtr->flags.monoFont && tb->graphic) { TextBlock *hold = tb; tb = getFirstNonGraphicBlockFor(hold, dir); if (!tb) { tPtr->tpos = 0; tb = hold; s = 0; goto _doNothing; } } _y = tb->sections[s]._y; while (tb) { if (tPtr->flags.monoFont && tb->graphic) { tb = (dir ? tb->next : tb->prior); continue; } if (dir) { if (tb->graphic) { if (tb->object) _w = WMWidgetWidth(tb->d.widget) - 5; else _w = tb->d.pixmap->width - 5; if (tb->sections[0].x + _w >= x) break; } else { text = &(tb->text[tb->sections[s].begin]); len = tb->sections[s].end - tb->sections[s].begin; _w = WMWidthOfString(tb->d.font, text, len); if (tb->sections[s].x + _w >= x) break; } } else { if (tb->sections[s].x <= x) break; } if ((dir ? tb->next : tb->prior)) { TextBlock *nxt = (dir ? tb->next : tb->prior); if (tPtr->flags.monoFont && nxt->graphic) { nxt = getFirstNonGraphicBlockFor(nxt, dir); if (!nxt) { pos = (dir ? 0 : tb->sections[s].begin); tPtr->cursor.x = tb->sections[s].x; goto _doneH; } } if (_y != nxt->sections[dir ? 0 : nxt->nsections - 1]._y) { /* this must be the last/first on this line. stop */ pos = (dir ? tb->sections[s].end : 0); tPtr->cursor.x = tb->sections[s].x; if (!tb->blank) { if (tb->graphic) { if (tb->object) tPtr->cursor.x += WMWidgetWidth(tb->d.widget); else tPtr->cursor.x += tb->d.pixmap->width; } else if (pos > tb->sections[s].begin) { tPtr->cursor.x += WMWidthOfString(tb->d.font, &(tb->text[tb->sections[s].begin]), pos - tb->sections[s].begin); } } goto _doneH; } } if ((dir ? tb->next : tb->prior)) { tb = (dir ? tb->next : tb->prior); } else { break; } if (tb) s = (dir ? 0 : tb->nsections - 1); } /* we have said TextBlock, now where within it? */ if (tb) { if (tb->graphic) { int gw = (tb->object ? WMWidgetWidth(tb->d.widget) : tb->d.pixmap->width); tPtr->cursor.x = tb->sections[0].x; if (x > tPtr->cursor.x + gw / 2) { pos = 1; tPtr->cursor.x += gw; } else { printf("first %d\n", tb->first); if (tb->prior) { if (tb->prior->graphic) pos = 1; else pos = tb->prior->used; tb = tb->prior; } else pos = 0; } s = 0; goto _doneH; } else { WMFont *f = tb->d.font; len = tb->sections[s].end - tb->sections[s].begin; text = &(tb->text[tb->sections[s].begin]); _w = x - tb->sections[s].x; pos = 0; while (pos < len && WMWidthOfString(f, text, pos + 1) < _w) pos++; tPtr->cursor.x = tb->sections[s].x + (pos ? WMWidthOfString(f, text, pos) : 0); pos += tb->sections[s].begin; } } _doneH: if (tb->graphic) { tPtr->tpos = (pos <= 1) ? pos : 0; } else { tPtr->tpos = (pos < tb->used) ? pos : tb->used; } _doNothing: if (!tb) printf("...for this app will surely crash :-)\n"); tPtr->currentTextBlock = tb; tPtr->cursor.h = tb->sections[s].h; tPtr->cursor.y = tb->sections[s]._y; /* scroll the bars if the cursor is not visible */ if (tPtr->flags.editable && tPtr->cursor.x != -23) { if (tPtr->cursor.y + tPtr->cursor.h > tPtr->vpos + tPtr->visible.y + tPtr->visible.h) { tPtr->vpos += (tPtr->cursor.y + tPtr->cursor.h + 10 - (tPtr->vpos + tPtr->visible.y + tPtr->visible.h)); updateScrollers(tPtr); } else if (tPtr->cursor.y < tPtr->vpos + tPtr->visible.y) { tPtr->vpos -= (tPtr->vpos + tPtr->visible.y - tPtr->cursor.y); updateScrollers(tPtr); } } } static void updateScrollers(Text * tPtr) { if (tPtr->flags.frozen) return; if (tPtr->vS) { if (tPtr->docHeight <= tPtr->visible.h) { WMSetScrollerParameters(tPtr->vS, 0, 1); tPtr->vpos = 0; } else { float hmax = (float)(tPtr->docHeight); WMSetScrollerParameters(tPtr->vS, ((float)tPtr->vpos) / (hmax - (float)tPtr->visible.h), (float)tPtr->visible.h / hmax); } } else tPtr->vpos = 0; if (tPtr->hS) { if (tPtr->docWidth <= tPtr->visible.w) { WMSetScrollerParameters(tPtr->hS, 0, 1); tPtr->hpos = 0; } else { float wmax = (float)(tPtr->docWidth); WMSetScrollerParameters(tPtr->hS, ((float)tPtr->hpos) / (wmax - (float)tPtr->visible.w), (float)tPtr->visible.w / wmax); } } else tPtr->hpos = 0; } static void scrollersCallBack(WMWidget * w, void *self) { Text *tPtr = (Text *) self; Bool scroll = False; int which; if (!tPtr->view->flags.realized || tPtr->flags.frozen) return; if (w == tPtr->vS) { int height; height = tPtr->visible.h; which = WMGetScrollerHitPart(tPtr->vS); switch (which) { case WSDecrementLine: if (tPtr->vpos > 0) { if (tPtr->vpos > 16) tPtr->vpos -= 16; else tPtr->vpos = 0; } break; case WSIncrementLine:{ int limit = tPtr->docHeight - height; if (tPtr->vpos < limit) { if (tPtr->vpos < limit - 16) tPtr->vpos += 16; else tPtr->vpos = limit; } } break; case WSDecrementPage: if (((int)tPtr->vpos - (int)height) >= 0) tPtr->vpos -= height; else tPtr->vpos = 0; break; case WSIncrementPage: tPtr->vpos += height; if (tPtr->vpos > (tPtr->docHeight - height)) tPtr->vpos = tPtr->docHeight - height; break; case WSKnob: tPtr->vpos = WMGetScrollerValue(tPtr->vS) * (float)(tPtr->docHeight - height); break; case WSKnobSlot: case WSNoPart: break; } scroll = (tPtr->vpos != tPtr->prevVpos); tPtr->prevVpos = tPtr->vpos; } if (w == tPtr->hS) { int width = tPtr->visible.w; which = WMGetScrollerHitPart(tPtr->hS); switch (which) { case WSDecrementLine: if (tPtr->hpos > 0) { if (tPtr->hpos > 16) tPtr->hpos -= 16; else tPtr->hpos = 0; } break; case WSIncrementLine:{ int limit = tPtr->docWidth - width; if (tPtr->hpos < limit) { if (tPtr->hpos < limit - 16) tPtr->hpos += 16; else tPtr->hpos = limit; } } break; case WSDecrementPage: if (((int)tPtr->hpos - (int)width) >= 0) tPtr->hpos -= width; else tPtr->hpos = 0; break; case WSIncrementPage: tPtr->hpos += width; if (tPtr->hpos > (tPtr->docWidth - width)) tPtr->hpos = tPtr->docWidth - width; break; case WSKnob: tPtr->hpos = WMGetScrollerValue(tPtr->hS) * (float)(tPtr->docWidth - width); break; case WSKnobSlot: case WSNoPart: break; } scroll = (tPtr->hpos != tPtr->prevHpos); tPtr->prevHpos = tPtr->hpos; } if (scroll) { updateScrollers(tPtr); paintText(tPtr); } } typedef struct { TextBlock *tb; unsigned short begin, end; /* what part of the text block */ } myLineItems; static int layOutLine(Text * tPtr, myLineItems * items, int nitems, int x, int y) { int i, j = 0, lw = 0, line_height = 0, max_d = 0, len, n; WMFont *font; const char *text; TextBlock *tb, *tbsame = NULL; if (!items || nitems == 0) return 0; for (i = 0; i < nitems; i++) { tb = items[i].tb; if (tb->graphic) { if (!tPtr->flags.monoFont) { if (tb->object) { WMWidget *wdt = tb->d.widget; line_height = WMAX(line_height, WMWidgetHeight(wdt)); if (tPtr->flags.alignment != WALeft) lw += WMWidgetWidth(wdt); } else { line_height = WMAX(line_height, tb->d.pixmap->height + max_d); if (tPtr->flags.alignment != WALeft) lw += tb->d.pixmap->width; } } } else { font = (tPtr->flags.monoFont) ? tPtr->dFont : tb->d.font; /*max_d = WMAX(max_d, abs(font->height-font->y)); */ max_d = 2; line_height = WMAX(line_height, font->height + max_d); text = &(tb->text[items[i].begin]); len = items[i].end - items[i].begin; if (tPtr->flags.alignment != WALeft) lw += WMWidthOfString(font, text, len); } } if (tPtr->flags.alignment == WARight) { j = tPtr->visible.w - lw; } else if (tPtr->flags.alignment == WACenter) { j = (int)((float)(tPtr->visible.w - lw)) / 2.0; } for (i = 0; i < nitems; i++) { tb = items[i].tb; if (tbsame == tb) { /* extend it, since it's on same line */ tb->sections[tb->nsections - 1].end = items[i].end; n = tb->nsections - 1; } else { tb->sections = wrealloc(tb->sections, (++tb->nsections) * sizeof(Section)); n = tb->nsections - 1; tb->sections[n]._y = y + max_d; tb->sections[n].max_d = max_d; tb->sections[n].x = x + j; tb->sections[n].h = line_height; tb->sections[n].begin = items[i].begin; tb->sections[n].end = items[i].end; } tb->sections[n].last = (i + 1 == nitems); if (tb->graphic) { if (!tPtr->flags.monoFont) { if (tb->object) { WMWidget *wdt = tb->d.widget; tb->sections[n].y = max_d + y + line_height - WMWidgetHeight(wdt); tb->sections[n].w = WMWidgetWidth(wdt); } else { tb->sections[n].y = y + line_height + max_d - tb->d.pixmap->height; tb->sections[n].w = tb->d.pixmap->width; } x += tb->sections[n].w; } } else { font = (tPtr->flags.monoFont) ? tPtr->dFont : tb->d.font; len = items[i].end - items[i].begin; text = &(tb->text[items[i].begin]); tb->sections[n].y = y + line_height - font->y; tb->sections[n].w = WMWidthOfString(font, &(tb->text[tb->sections[n].begin]), tb->sections[n].end - tb->sections[n].begin); x += WMWidthOfString(font, text, len); } tbsame = tb; } return line_height; } static void layOutDocument(Text * tPtr) { TextBlock *tb; myLineItems *items = NULL; unsigned int itemsSize = 0, nitems = 0, begin, end; WMFont *font; unsigned int x, y = 0, lw = 0, width = 0, bmargin; const char *start = NULL, *mark = NULL; if (tPtr->flags.frozen || (!(tb = tPtr->firstTextBlock))) return; assert(tPtr->visible.w > 20); tPtr->docWidth = tPtr->visible.w; x = tPtr->margins[tb->marginN].first; bmargin = tPtr->margins[tb->marginN].body; /* only partial layOut needed: re-Lay only affected textblocks */ if (tPtr->flags.laidOut) { tb = tPtr->currentTextBlock; /* search backwards for textblocks on same line */ while (tb->prior) { if (!tb->sections || tb->nsections < 1) { tb = tPtr->firstTextBlock; tPtr->flags.laidOut = False; y = 0; goto _layOut; } if (!tb->prior->sections || tb->prior->nsections < 1) { tb = tPtr->firstTextBlock; tPtr->flags.laidOut = False; y = 0; goto _layOut; } if (tb->sections[0]._y != tb->prior->sections[tb->prior->nsections - 1]._y) { break; } tb = tb->prior; } if (tb->prior && tb->prior->sections && tb->prior->nsections > 0) { y = tb->prior->sections[tb->prior->nsections - 1]._y + tb->prior->sections[tb->prior->nsections - 1].h - tb->prior->sections[tb->prior->nsections - 1].max_d; } else { y = 0; } } _layOut: while (tb) { if (tb->sections && tb->nsections > 0) { wfree(tb->sections); tb->sections = NULL; tb->nsections = 0; } if (tb->first && tb->blank && tb->next && !tb->next->first) { TextBlock *next = tb->next; tPtr->currentTextBlock = tb; WMDestroyTextBlock(tPtr, WMRemoveTextBlock(tPtr)); tb = next; tb->first = True; continue; } if (tb->first && tb != tPtr->firstTextBlock) { y += layOutLine(tPtr, items, nitems, x, y); x = tPtr->margins[tb->marginN].first; bmargin = tPtr->margins[tb->marginN].body; nitems = 0; lw = 0; } if (tb->graphic) { if (!tPtr->flags.monoFont) { if (tb->object) width = WMWidgetWidth(tb->d.widget); else width = tb->d.pixmap->width; if (width > tPtr->docWidth) tPtr->docWidth = width; lw += width; if (lw >= tPtr->visible.w - x) { y += layOutLine(tPtr, items, nitems, x, y); nitems = 0; x = bmargin; lw = width; } if (nitems + 1 > itemsSize) { items = wrealloc(items, (++itemsSize) * sizeof(myLineItems)); } items[nitems].tb = tb; items[nitems].begin = 0; items[nitems].end = 0; nitems++; } } else if ((start = tb->text)) { begin = end = 0; font = tPtr->flags.monoFont ? tPtr->dFont : tb->d.font; while (start) { mark = strchr(start, ' '); if (mark) { end += (int)(mark - start) + 1; start = mark + 1; } else { end += strlen(start); start = mark; } if (end > tb->used) end = tb->used; if (end - begin > 0) { width = WMWidthOfString(font, &tb->text[begin], end - begin); /* if it won't fit, char wrap it */ if (width >= tPtr->visible.w) { char *t = &tb->text[begin]; int l = end - begin, i = 0; do { width = WMWidthOfString(font, t, ++i); } while (width < tPtr->visible.w && i < l); if (i > 2) i--; end = begin + i; start = &tb->text[end]; } lw += width; } if (lw >= tPtr->visible.w - x) { y += layOutLine(tPtr, items, nitems, x, y); lw = width; x = bmargin; nitems = 0; } if (nitems + 1 > itemsSize) { items = wrealloc(items, (++itemsSize) * sizeof(myLineItems)); } items[nitems].tb = tb; items[nitems].begin = begin; items[nitems].end = end; nitems++; begin = end; } } /* not yet fully ready. but is already VERY FAST for a 3Mbyte file ;-) */ if (0 && tPtr->flags.laidOut && tb->next && tb->next->sections && tb->next->nsections > 0 && (tPtr->vpos + tPtr->visible.h < tb->next->sections[0]._y)) { if (tPtr->lastTextBlock->sections && tPtr->lastTextBlock->nsections > 0) { TextBlock *ltb = tPtr->lastTextBlock; int ly = ltb->sections[ltb->nsections - 1]._y; int lh = ltb->sections[ltb->nsections - 1].h; int ss, sd; lh += 1 + tPtr->visible.y + ltb->sections[ltb->nsections - 1].max_d; printf("it's %d\n", tPtr->visible.y + ltb->sections[ltb->nsections - 1].max_d); y += layOutLine(tPtr, items, nitems, x, y); ss = ly + lh - y; sd = tPtr->docHeight - y; printf("dif %d-%d: %d\n", ss, sd, ss - sd); y += tb->next->sections[0]._y - y; nitems = 0; printf("nitems%d\n", nitems); if (ss - sd != 0) y = tPtr->docHeight + ss - sd; break; } else { tPtr->flags.laidOut = False; } } tb = tb->next; } if (nitems > 0) y += layOutLine(tPtr, items, nitems, x, y); if (tPtr->docHeight != y + 10) { tPtr->docHeight = y + 10; updateScrollers(tPtr); } if (tPtr->docWidth > tPtr->visible.w && !tPtr->hS) { XEvent event; tPtr->flags.horizOnDemand = True; WMSetTextHasHorizontalScroller((WMText *) tPtr, True); event.type = Expose; handleEvents(&event, (void *)tPtr); } else if (tPtr->docWidth <= tPtr->visible.w && tPtr->hS && tPtr->flags.horizOnDemand) { tPtr->flags.horizOnDemand = False; WMSetTextHasHorizontalScroller((WMText *) tPtr, False); } tPtr->flags.laidOut = True; if (items && itemsSize > 0) wfree(items); } static void textDidResize(W_ViewDelegate * self, WMView * view) { Text *tPtr = (Text *) view->self; unsigned short w = tPtr->view->size.width; unsigned short h = tPtr->view->size.height; unsigned short rh = 0, vw = 0, rel; /* Parameter not used, but tell the compiler that it is ok */ (void) self; rel = (tPtr->flags.relief == WRFlat); if (tPtr->ruler && tPtr->flags.rulerShown) { WMMoveWidget(tPtr->ruler, 2, 2); WMResizeWidget(tPtr->ruler, w - 4, 40); rh = 40; } if (tPtr->vS) { WMMoveWidget(tPtr->vS, 1 - (rel ? 1 : 0), rh + 1 - (rel ? 1 : 0)); WMResizeWidget(tPtr->vS, 20, h - rh - 2 + (rel ? 2 : 0)); vw = 20; WMSetRulerOffset(tPtr->ruler, 22); } else WMSetRulerOffset(tPtr->ruler, 2); if (tPtr->hS) { if (tPtr->vS) { WMMoveWidget(tPtr->hS, vw, h - 21); WMResizeWidget(tPtr->hS, w - vw - 1, 20); } else { WMMoveWidget(tPtr->hS, vw + 1, h - 21); WMResizeWidget(tPtr->hS, w - vw - 2, 20); } } tPtr->visible.x = (tPtr->vS) ? 24 : 4; tPtr->visible.y = (tPtr->ruler && tPtr->flags.rulerShown) ? 43 : 3; tPtr->visible.w = tPtr->view->size.width - tPtr->visible.x - 8; tPtr->visible.h = tPtr->view->size.height - tPtr->visible.y; tPtr->visible.h -= (tPtr->hS) ? 20 : 0; tPtr->margins[0].right = tPtr->visible.w; if (tPtr->view->flags.realized) { if (tPtr->db) { XFreePixmap(tPtr->view->screen->display, tPtr->db); tPtr->db = (Pixmap) NULL; } if (tPtr->visible.w < 40) tPtr->visible.w = 40; if (tPtr->visible.h < 20) tPtr->visible.h = 20; if (!tPtr->db) { tPtr->db = XCreatePixmap(tPtr->view->screen->display, tPtr->view->window, tPtr->visible.w, tPtr->visible.h, tPtr->view->screen->depth); } } WMThawText(tPtr); } W_ViewDelegate _TextViewDelegate = { NULL, NULL, textDidResize, NULL, NULL }; #define TEXT_BUFFER_INCR 8 #define reqBlockSize(requested) (requested + TEXT_BUFFER_INCR) static void clearText(Text * tPtr) { tPtr->vpos = tPtr->hpos = 0; tPtr->docHeight = tPtr->docWidth = 0; tPtr->cursor.x = -23; if (!tPtr->firstTextBlock) return; while (tPtr->currentTextBlock) WMDestroyTextBlock(tPtr, WMRemoveTextBlock(tPtr)); tPtr->firstTextBlock = NULL; tPtr->currentTextBlock = NULL; tPtr->lastTextBlock = NULL; WMEmptyArray(tPtr->gfxItems); } /* possibly remove a single character from the currentTextBlock, or if there's a selection, remove it... note that Delete and Backspace are treated differently */ static void deleteTextInteractively(Text * tPtr, KeySym ksym) { TextBlock *tb; Bool back = (Bool) (ksym == XK_BackSpace); Bool done = 1, wasFirst = 0; if (!tPtr->flags.editable) return; if (!(tb = tPtr->currentTextBlock)) return; if (tPtr->flags.ownsSelection) { if (removeSelection(tPtr)) layOutDocument(tPtr); return; } wasFirst = tb->first; if (back && tPtr->tpos < 1) { if (tb->prior) { if (tb->prior->blank) { tPtr->currentTextBlock = tb->prior; WMRemoveTextBlock(tPtr); tPtr->currentTextBlock = tb; tb->first = True; layOutDocument(tPtr); return; } else { if (tb->blank) { TextBlock *prior = tb->prior; tPtr->currentTextBlock = tb; WMRemoveTextBlock(tPtr); tb = prior; } else { tb = tb->prior; } if (tb->graphic) tPtr->tpos = 1; else tPtr->tpos = tb->used; tPtr->currentTextBlock = tb; done = 1; if (wasFirst) { if (tb->next) tb->next->first = False; layOutDocument(tPtr); return; } } } } if ((tb->used > 0) && ((back ? tPtr->tpos > 0 : 1)) && (tPtr->tpos <= tb->used) && !tb->graphic) { if (back) tPtr->tpos--; memmove(&(tb->text[tPtr->tpos]), &(tb->text[tPtr->tpos + 1]), tb->used - tPtr->tpos); tb->used--; done = 0; } /* if there are no characters left to back over in the textblock, but it still has characters to the right of the cursor: */ if ((back ? (tPtr->tpos == 0 && !done) : (tPtr->tpos >= tb->used)) || tb->graphic) { /* no more chars, and it's marked as blank? */ if (tb->blank) { TextBlock *sibling = (back ? tb->prior : tb->next); if (tb->used == 0 || tb->graphic) WMDestroyTextBlock(tPtr, WMRemoveTextBlock(tPtr)); if (sibling) { tPtr->currentTextBlock = sibling; if (tb->graphic) tPtr->tpos = (back ? 1 : 0); else tPtr->tpos = (back ? sibling->used : 0); } /* no more chars, so mark it as blank */ } else if (tb->used == 0) { tb->blank = 1; } else if (tb->graphic) { Bool hasNext = (tb->next != NULL); WMDestroyTextBlock(tPtr, WMRemoveTextBlock(tPtr)); if (hasNext) { tPtr->tpos = 0; } else if (tPtr->currentTextBlock) { tPtr->tpos = (tPtr->currentTextBlock->graphic ? 1 : tPtr->currentTextBlock->used); } } else printf("DEBUG: unaccounted for... catch this!\n"); } layOutDocument(tPtr); } static void insertTextInteractively(Text * tPtr, char *text, int len) { TextBlock *tb; char *newline = NULL; if (!tPtr->flags.editable) { return; } if (len < 1 || !text) return; if (tPtr->flags.ignoreNewLine && *text == '\n' && len == 1) return; if (tPtr->flags.ownsSelection) removeSelection(tPtr); if (tPtr->flags.ignoreNewLine) { int i; for (i = 0; i < len; i++) { if (text[i] == '\n') text[i] = ' '; } } tb = tPtr->currentTextBlock; if (!tb || tb->graphic) { tPtr->tpos = 0; WMAppendTextStream(tPtr, text); layOutDocument(tPtr); return; } if ((newline = strchr(text, '\n'))) { int nlen = (int)(newline - text); int s = tb->used - tPtr->tpos; if (!tb->blank && nlen > 0) { char *save = NULL; if (s > 0) { save = wmalloc(s); memcpy(save, &tb->text[tPtr->tpos], s); tb->used -= (tb->used - tPtr->tpos); } insertTextInteractively(tPtr, text, nlen); newline++; WMAppendTextStream(tPtr, newline); if (s > 0) { insertTextInteractively(tPtr, save, s); wfree(save); } } else { if (tPtr->tpos > 0 && tPtr->tpos < tb->used && !tb->graphic && tb->text) { unsigned short savePos = tPtr->tpos; void *ntb = WMCreateTextBlockWithText(tPtr, &tb->text[tPtr->tpos], tb->d.font, tb->color, True, tb->used - tPtr->tpos); if (tb->sections[0].end == tPtr->tpos) WMAppendTextBlock(tPtr, WMCreateTextBlockWithText(tPtr, NULL, tb->d.font, tb->color, True, 0)); tb->used = savePos; WMAppendTextBlock(tPtr, ntb); tPtr->tpos = 0; } else if (tPtr->tpos == tb->used) { if (tPtr->flags.indentNewLine) { WMAppendTextBlock(tPtr, WMCreateTextBlockWithText(tPtr, " ", tb->d.font, tb->color, True, 4)); tPtr->tpos = 4; } else { WMAppendTextBlock(tPtr, WMCreateTextBlockWithText(tPtr, NULL, tb->d.font, tb->color, True, 0)); tPtr->tpos = 0; } } else if (tPtr->tpos == 0) { if (tPtr->flags.indentNewLine) { WMPrependTextBlock(tPtr, WMCreateTextBlockWithText(tPtr, " ", tb->d.font, tb->color, True, 4)); } else { WMPrependTextBlock(tPtr, WMCreateTextBlockWithText(tPtr, NULL, tb->d.font, tb->color, True, 0)); } tPtr->tpos = 0; if (tPtr->currentTextBlock->next) tPtr->currentTextBlock = tPtr->currentTextBlock->next; } } } else { if (tb->used + len >= tb->allocated) { tb->allocated = reqBlockSize(tb->used + len); tb->text = wrealloc(tb->text, tb->allocated); } if (tb->blank) { memcpy(tb->text, text, len); tb->used = len; tPtr->tpos = len; tb->text[tb->used] = 0; tb->blank = False; } else { memmove(&(tb->text[tPtr->tpos + len]), &tb->text[tPtr->tpos], tb->used - tPtr->tpos + 1); memmove(&tb->text[tPtr->tpos], text, len); tb->used += len; tPtr->tpos += len; tb->text[tb->used] = 0; } } layOutDocument(tPtr); } static void selectRegion(Text * tPtr, int x, int y) { if (x < 0 || y < 0) return; y += (tPtr->flags.rulerShown ? 40 : 0); y += tPtr->vpos; if (y > 10) y -= 10; /* the original offset */ x -= tPtr->visible.x - 2; if (x < 0) x = 0; tPtr->sel.x = WMAX(0, WMIN(tPtr->clicked.x, x)); tPtr->sel.w = abs(tPtr->clicked.x - x); tPtr->sel.y = WMAX(0, WMIN(tPtr->clicked.y, y)); tPtr->sel.h = abs(tPtr->clicked.y - y); tPtr->flags.ownsSelection = True; paintText(tPtr); } static void releaseSelection(Text * tPtr) { TextBlock *tb = tPtr->firstTextBlock; while (tb) { tb->selected = False; tb = tb->next; } tPtr->flags.ownsSelection = False; WMDeleteSelectionHandler(tPtr->view, XA_PRIMARY, CurrentTime); paintText(tPtr); } static WMData *requestHandler(WMView * view, Atom selection, Atom target, void *cdata, Atom * type) { Text *tPtr = view->self; Display *dpy = tPtr->view->screen->display; Atom _TARGETS; Atom TEXT = XInternAtom(dpy, "TEXT", False); Atom COMPOUND_TEXT = XInternAtom(dpy, "COMPOUND_TEXT", False); WMData *data = NULL; /* Parameter not used, but tell the compiler that it is ok */ (void) selection; (void) cdata; if (target == XA_STRING || target == TEXT || target == COMPOUND_TEXT) { char *text = WMGetTextSelectedStream(tPtr); if (text) { data = WMCreateDataWithBytes(text, strlen(text)); WMSetDataFormat(data, TYPETEXT); wfree(text); } *type = target; return data; } else printf("didn't get it\n"); _TARGETS = XInternAtom(dpy, "TARGETS", False); if (target == _TARGETS) { Atom array[4]; array[0] = _TARGETS; array[1] = XA_STRING; array[2] = TEXT; array[3] = COMPOUND_TEXT; data = WMCreateDataWithBytes(&array, sizeof(array)); WMSetDataFormat(data, 32); *type = target; return data; } return NULL; } static void lostHandler(WMView * view, Atom selection, void *cdata) { /* Parameter not used, but tell the compiler that it is ok */ (void) selection; (void) cdata; releaseSelection((WMText *) view->self); } static WMSelectionProcs selectionHandler = { requestHandler, lostHandler, NULL }; static void ownershipObserver(void *observerData, WMNotification * notification) { if (observerData != WMGetNotificationClientData(notification)) lostHandler(WMWidgetView(observerData), XA_PRIMARY, NULL); } static void autoSelectText(Text * tPtr, int clicks) { int x, start; TextBlock *tb; char *mark = NULL, behind, ahead; if (!(tb = tPtr->currentTextBlock)) return; if (clicks == 2) { switch (tb->text[tPtr->tpos]) { case ' ': return; /* case '<': case '>': behind = '<'; ahead = '>'; break; case '{': case '}': behind = '{'; ahead = '}'; break; case '[': case ']': behind = '['; ahead = ']'; break; */ default: behind = ahead = ' '; } tPtr->sel.y = tPtr->cursor.y + 5; tPtr->sel.h = 6; /*tPtr->cursor.h-10; */ if (tb->graphic) { tPtr->sel.x = tb->sections[0].x; tPtr->sel.w = tb->sections[0].w; } else { WMFont *font = tPtr->flags.monoFont ? tPtr->dFont : tb->d.font; start = tPtr->tpos; while (start > 0 && tb->text[start - 1] != behind) start--; x = tPtr->cursor.x; if (tPtr->tpos > start) { x -= WMWidthOfString(font, &tb->text[start], tPtr->tpos - start); } tPtr->sel.x = (x < 0 ? 0 : x) + 1; if ((mark = strchr(&tb->text[start], ahead))) { tPtr->sel.w = WMWidthOfString(font, &tb->text[start], (int)(mark - &tb->text[start])); } else if (tb->used > start) { tPtr->sel.w = WMWidthOfString(font, &tb->text[start], tb->used - start); } } } else if (clicks == 3) { TextBlock *cur = tb; while (!tb->first) { tb = tb->prior; if (tb == NULL) { #ifndef NDEBUG wwarning("corrupted list of text blocks in WMText, while searching for first block"); #endif goto error_select_3clicks; } } tPtr->sel.y = tb->sections[0]._y; tb = cur; while (tb->next && !tb->next->first) { tb = tb->next; } tPtr->sel.h = tb->sections[tb->nsections - 1]._y + 5 - tPtr->sel.y; error_select_3clicks: tPtr->sel.x = 0; tPtr->sel.w = tPtr->docWidth; tPtr->clicked.x = 0; /* only for now, fix sel. code */ } if (!tPtr->flags.ownsSelection) { WMCreateSelectionHandler(tPtr->view, XA_PRIMARY, tPtr->lastClickTime, &selectionHandler, NULL); tPtr->flags.ownsSelection = True; } paintText(tPtr); } # if 0 static void fontChanged(void *observerData, WMNotification * notification) { WMText *tPtr = (WMText *) observerData; WMFont *font = (WMFont *) WMGetNotificationClientData(notification); printf("fontChanged\n"); if (!tPtr || !font) return; if (tPtr->flags.ownsSelection) WMSetTextSelectionFont(tPtr, font); } #endif static void handleTextKeyPress(Text * tPtr, XEvent * event) { char buffer[64]; KeySym ksym; int control_pressed = False; TextBlock *tb = NULL; if (((XKeyEvent *) event)->state & ControlMask) control_pressed = True; buffer[XLookupString(&event->xkey, buffer, 63, &ksym, NULL)] = 0; switch (ksym) { case XK_Home: if ((tPtr->currentTextBlock = tPtr->firstTextBlock)) tPtr->tpos = 0; updateCursorPosition(tPtr); paintText(tPtr); break; case XK_End: if ((tPtr->currentTextBlock = tPtr->lastTextBlock)) { if (tPtr->currentTextBlock->graphic) tPtr->tpos = 1; else tPtr->tpos = tPtr->currentTextBlock->used; } updateCursorPosition(tPtr); paintText(tPtr); break; case XK_Left: if (!(tb = tPtr->currentTextBlock)) break; if (tb->graphic || tPtr->tpos == 0) { if (tb->prior) { tPtr->currentTextBlock = tb->prior; if (tPtr->currentTextBlock->graphic) tPtr->tpos = 1; else tPtr->tpos = tPtr->currentTextBlock->used; if (!tb->first && tPtr->tpos > 0) tPtr->tpos--; } else tPtr->tpos = 0; } else tPtr->tpos--; updateCursorPosition(tPtr); paintText(tPtr); break; case XK_Right: if (!(tb = tPtr->currentTextBlock)) break; if (tb->graphic || tPtr->tpos == tb->used) { if (tb->next) { tPtr->currentTextBlock = tb->next; tPtr->tpos = 0; if (!tb->next->first && tb->next->used > 0) tPtr->tpos++; } else { if (tb->graphic) tPtr->tpos = 1; else tPtr->tpos = tb->used; } } else tPtr->tpos++; updateCursorPosition(tPtr); paintText(tPtr); break; case XK_Down: cursorToTextPosition(tPtr, tPtr->cursor.x + tPtr->visible.x, tPtr->clicked.y + tPtr->cursor.h - tPtr->vpos); paintText(tPtr); break; case XK_Up: cursorToTextPosition(tPtr, tPtr->cursor.x + tPtr->visible.x, tPtr->visible.y + tPtr->cursor.y - tPtr->vpos - 3); paintText(tPtr); break; case XK_BackSpace: case XK_Delete: #ifdef XK_KP_Delete case XK_KP_Delete: #endif deleteTextInteractively(tPtr, ksym); updateCursorPosition(tPtr); paintText(tPtr); break; case XK_Control_R: case XK_Control_L: control_pressed = True; break; case XK_Tab: insertTextInteractively(tPtr, " ", 4); updateCursorPosition(tPtr); paintText(tPtr); break; case XK_Return: *buffer = '\n'; /* FALLTHRU */ default: if (*buffer != 0 && !control_pressed) { insertTextInteractively(tPtr, buffer, strlen(buffer)); updateCursorPosition(tPtr); paintText(tPtr); } else if (control_pressed && ksym == XK_r) { Bool i = !tPtr->flags.rulerShown; WMShowTextRuler(tPtr, i); tPtr->flags.rulerShown = i; } else if (control_pressed && *buffer == '\a') { XBell(tPtr->view->screen->display, 0); } else { WMRelayToNextResponder(tPtr->view, event); } } if (!control_pressed && tPtr->flags.ownsSelection) { releaseSelection(tPtr); } } static void pasteText(WMView * view, Atom selection, Atom target, Time timestamp, void *cdata, WMData * data) { Text *tPtr = (Text *) view->self; char *text; /* Parameter not used, but tell the compiler that it is ok */ (void) selection; (void) target; (void) timestamp; (void) cdata; tPtr->flags.waitingForSelection = 0; if (data) { text = (char *)WMDataBytes(data); if (tPtr->parser) { (tPtr->parser) (tPtr, (void *)text); layOutDocument(tPtr); } else insertTextInteractively(tPtr, text, strlen(text)); updateCursorPosition(tPtr); paintText(tPtr); } else { int n; text = XFetchBuffer(tPtr->view->screen->display, &n, 0); if (text) { text[n] = 0; if (tPtr->parser) { (tPtr->parser) (tPtr, (void *)text); layOutDocument(tPtr); } else insertTextInteractively(tPtr, text, n); updateCursorPosition(tPtr); paintText(tPtr); XFree(text); } } } static void handleActionEvents(XEvent * event, void *data) { Text *tPtr = (Text *) data; Display *dpy = event->xany.display; KeySym ksym; switch (event->type) { case KeyPress: ksym = XLookupKeysym((XKeyEvent *) event, 0); if (ksym == XK_Shift_R || ksym == XK_Shift_L) { tPtr->flags.extendSelection = True; return; } if (tPtr->flags.focused) { XGrabPointer(dpy, W_VIEW(tPtr)->window, False, PointerMotionMask | ButtonPressMask | ButtonReleaseMask, GrabModeAsync, GrabModeAsync, None, tPtr->view->screen->invisibleCursor, CurrentTime); tPtr->flags.pointerGrabbed = True; handleTextKeyPress(tPtr, event); } break; case KeyRelease: ksym = XLookupKeysym((XKeyEvent *) event, 0); if (ksym == XK_Shift_R || ksym == XK_Shift_L) { tPtr->flags.extendSelection = False; return; /* end modify flag so selection can be extended */ } break; case MotionNotify: if (tPtr->flags.pointerGrabbed) { tPtr->flags.pointerGrabbed = False; XUngrabPointer(dpy, CurrentTime); } if (tPtr->flags.waitingForSelection) break; if ((event->xmotion.state & Button1Mask)) { if (WMIsDraggingFromView(tPtr->view)) { WMDragImageFromView(tPtr->view, event); break; } if (!tPtr->flags.ownsSelection) { WMCreateSelectionHandler(tPtr->view, XA_PRIMARY, event->xbutton.time, &selectionHandler, NULL); tPtr->flags.ownsSelection = True; } selectRegion(tPtr, event->xmotion.x, event->xmotion.y); break; } mouseOverObject(tPtr, event->xmotion.x, event->xmotion.y); break; case ButtonPress: if (tPtr->flags.pointerGrabbed) { tPtr->flags.pointerGrabbed = False; XUngrabPointer(dpy, CurrentTime); break; } if (tPtr->flags.waitingForSelection) break; if (tPtr->flags.extendSelection && tPtr->flags.ownsSelection) { selectRegion(tPtr, event->xmotion.x, event->xmotion.y); return; } if (tPtr->flags.ownsSelection) releaseSelection(tPtr); if (event->xbutton.button == Button1) { TextBlock *tb = tPtr->currentTextBlock; if (WMIsDoubleClick(event)) { tPtr->lastClickTime = event->xbutton.time; if (tb && tb->graphic && !tb->object) { if (tPtr->delegate && tPtr->delegate->didDoubleClickOnPicture) { char *desc; desc = wmalloc(tb->used + 1); memcpy(desc, tb->text, tb->used); desc[tb->used] = 0; (*tPtr->delegate->didDoubleClickOnPicture) (tPtr->delegate, desc); wfree(desc); } } else { autoSelectText(tPtr, 2); } break; } else if (event->xbutton.time - tPtr->lastClickTime < WINGsConfiguration.doubleClickDelay) { tPtr->lastClickTime = event->xbutton.time; autoSelectText(tPtr, 3); break; } if (!tPtr->flags.focused) { WMSetFocusToWidget(tPtr); tPtr->flags.focused = True; } else if (tb && tPtr->flags.isOverGraphic && tb->graphic && !tb->object && tb->d.pixmap) { WMSetViewDragImage(tPtr->view, tb->d.pixmap); WMDragImageFromView(tPtr->view, event); break; } tPtr->lastClickTime = event->xbutton.time; cursorToTextPosition(tPtr, event->xmotion.x, event->xmotion.y); paintText(tPtr); } if (event->xbutton.button == WINGsConfiguration.mouseWheelDown) { WMScrollText(tPtr, 16); break; } if (event->xbutton.button == WINGsConfiguration.mouseWheelUp) { WMScrollText(tPtr, -16); break; } if (event->xbutton.button == Button2) { char *text = NULL; int n; if (!tPtr->flags.editable) { XBell(dpy, 0); break; } if (!WMRequestSelection(tPtr->view, XA_PRIMARY, XA_STRING, event->xbutton.time, pasteText, NULL)) { text = XFetchBuffer(tPtr->view->screen->display, &n, 0); tPtr->flags.waitingForSelection = 0; if (text) { text[n] = 0; if (tPtr->parser) { (tPtr->parser) (tPtr, (void *)text); layOutDocument(tPtr); } else insertTextInteractively(tPtr, text, n); XFree(text); #if 0 NOTIFY(tPtr, didChange, WMTextDidChangeNotification, (void *)WMInsertTextEvent); #endif updateCursorPosition(tPtr); paintText(tPtr); } else { tPtr->flags.waitingForSelection = True; } } break; } /* FALLTHRU */ case ButtonRelease: if (tPtr->flags.pointerGrabbed) { tPtr->flags.pointerGrabbed = False; XUngrabPointer(dpy, CurrentTime); break; } if (tPtr->flags.waitingForSelection) break; if (WMIsDraggingFromView(tPtr->view)) WMDragImageFromView(tPtr->view, event); } } static void handleEvents(XEvent * event, void *data) { Text *tPtr = (Text *) data; switch (event->type) { case Expose: if (event->xexpose.count != 0) break; if (tPtr->hS) { if (!(W_VIEW(tPtr->hS))->flags.realized) WMRealizeWidget(tPtr->hS); } if (tPtr->vS) { if (!(W_VIEW(tPtr->vS))->flags.realized) WMRealizeWidget(tPtr->vS); } if (tPtr->ruler) { if (!(W_VIEW(tPtr->ruler))->flags.realized) WMRealizeWidget(tPtr->ruler); } if (!tPtr->db) textDidResize(tPtr->view->delegate, tPtr->view); paintText(tPtr); break; case FocusIn: if (W_FocusedViewOfToplevel(W_TopLevelOfView(tPtr->view)) != tPtr->view) return; tPtr->flags.focused = True; #if DO_BLINK if (tPtr->flags.editable && !tPtr->timerID) { tPtr->timerID = WMAddTimerHandler(12 + 0 * CURSOR_BLINK_ON_DELAY, blinkCursor, tPtr); } #endif break; case FocusOut: tPtr->flags.focused = False; paintText(tPtr); #if DO_BLINK if (tPtr->timerID) { WMDeleteTimerHandler(tPtr->timerID); tPtr->timerID = NULL; } #endif break; case DestroyNotify: clearText(tPtr); if (tPtr->db) XFreePixmap(tPtr->view->screen->display, tPtr->db); if (tPtr->gfxItems) WMEmptyArray(tPtr->gfxItems); #if DO_BLINK if (tPtr->timerID) WMDeleteTimerHandler(tPtr->timerID); #endif WMReleaseFont(tPtr->dFont); WMReleaseColor(tPtr->dColor); WMDeleteSelectionHandler(tPtr->view, XA_PRIMARY, CurrentTime); WMRemoveNotificationObserver(tPtr); WMFreeArray(tPtr->xdndSourceTypes); WMFreeArray(tPtr->xdndDestinationTypes); wfree(tPtr); break; } } static void insertPlainText(Text * tPtr, const char *text) { const char *start, *mark; void *tb = NULL; start = text; while (start) { mark = strchr(start, '\n'); if (mark) { tb = WMCreateTextBlockWithText(tPtr, start, tPtr->dFont, tPtr->dColor, tPtr->flags.first, (int)(mark - start)); start = mark + 1; tPtr->flags.first = True; } else { if (start && strlen(start)) { tb = WMCreateTextBlockWithText(tPtr, start, tPtr->dFont, tPtr->dColor, tPtr->flags.first, strlen(start)); } else tb = NULL; tPtr->flags.first = False; start = mark; } if (tPtr->flags.prepend) WMPrependTextBlock(tPtr, tb); else WMAppendTextBlock(tPtr, tb); } } static void rulerMoveCallBack(WMWidget * w, void *self) { Text *tPtr = (Text *) self; /* Parameter not used, but tell the compiler that it is ok */ (void) w; if (!tPtr) return; if (W_CLASS(tPtr) != WC_Text) return; paintText(tPtr); } static void rulerReleaseCallBack(WMWidget * w, void *self) { Text *tPtr = (Text *) self; /* Parameter not used, but tell the compiler that it is ok */ (void) w; if (!tPtr) return; if (W_CLASS(tPtr) != WC_Text) return; WMThawText(tPtr); return; } static WMArray *dropDataTypes(WMView * self) { return ((Text *) self->self)->xdndSourceTypes; } static WMDragOperationType wantedDropOperation(WMView * self) { /* Parameter not used, but tell the compiler that it is ok */ (void) self; return WDOperationCopy; } static Bool acceptDropOperation(WMView * self, WMDragOperationType allowedOperation) { /* Parameter not used, but tell the compiler that it is ok */ (void) self; return (allowedOperation == WDOperationCopy); } static WMData *fetchDragData(WMView * self, char *type) { TextBlock *tb = ((WMText *) self->self)->currentTextBlock; char *desc; WMData *data; if (strcmp(type, "text/plain")) { if (!tb) return NULL; desc = wmalloc(tb->used + 1); memcpy(desc, tb->text, tb->used); desc[tb->used] = 0; data = WMCreateDataWithBytes(desc, strlen(desc) + 1); wfree(desc); return data; } return NULL; } static WMDragSourceProcs _DragSourceProcs = { dropDataTypes, wantedDropOperation, NULL, acceptDropOperation, NULL, NULL, fetchDragData }; static WMArray *requiredDataTypes(WMView * self, WMDragOperationType request, WMArray * sourceDataTypes) { /* Parameter not used, but tell the compiler that it is ok */ (void) request; (void) sourceDataTypes; return ((Text *) self->self)->xdndDestinationTypes; } static WMDragOperationType allowedOperation(WMView * self, WMDragOperationType request, WMArray * sourceDataTypes) { /* Parameter not used, but tell the compiler that it is ok */ (void) self; (void) request; (void) sourceDataTypes; return WDOperationCopy; } static void performDragOperation(WMView * self, WMArray * dropData, WMArray * operations, WMPoint * dropLocation) { WMText *tPtr = (WMText *) self->self; WMData *data; char *colorName; WMColor *color; /* Parameter not used, but tell the compiler that it is ok */ (void) operations; (void) dropLocation; if (tPtr) { /* only one required type, implies only one drop data */ /* get application/X-color if any */ data = (WMData *) WMPopFromArray(dropData); if (data != NULL) { colorName = (char *)WMDataBytes(data); color = WMCreateNamedColor(W_VIEW_SCREEN(self), colorName, True); if (color) { WMSetTextSelectionColor(tPtr, color); WMReleaseColor(color); } } } } static WMDragDestinationProcs _DragDestinationProcs = { NULL, requiredDataTypes, allowedOperation, NULL, performDragOperation, NULL }; static char *getStream(WMText * tPtr, int sel, int array) { TextBlock *tb = NULL; char *text = NULL; unsigned long where = 0; if (!tPtr) return NULL; if (!(tb = tPtr->firstTextBlock)) return NULL; if (tPtr->writer) { (tPtr->writer) (tPtr, (void *)text); return text; } tb = tPtr->firstTextBlock; while (tb) { if (!tb->graphic || (tb->graphic && !tPtr->flags.monoFont)) { if (!sel || (tb->graphic && tb->selected)) { if (!tPtr->flags.ignoreNewLine && (tb->first || tb->blank) && tb != tPtr->firstTextBlock) { text = wrealloc(text, where + 1); text[where++] = '\n'; } if (tb->blank) goto _gSnext; if (tb->graphic && array) { text = wrealloc(text, where + 4); text[where++] = 0xFA; text[where++] = (tb->used >> 8) & 0x0ff; text[where++] = tb->used & 0x0ff; text[where++] = tb->allocated; /* extra info */ } text = wrealloc(text, where + tb->used); memcpy(&text[where], tb->text, tb->used); where += tb->used; } else if (sel && tb->selected) { if (!tPtr->flags.ignoreNewLine && tb->blank) { text = wrealloc(text, where + 1); text[where++] = '\n'; } if (tb->blank) goto _gSnext; text = wrealloc(text, where + (tb->s_end - tb->s_begin)); memcpy(&text[where], &tb->text[tb->s_begin], tb->s_end - tb->s_begin); where += tb->s_end - tb->s_begin; } } _gSnext: tb = tb->next; } /* +1 for the end of string, let's be nice */ text = wrealloc(text, where + 1); text[where] = 0; return text; } static void releaseStreamObjects(void *data) { if (data) wfree(data); } static WMArray *getStreamObjects(WMText * tPtr, int sel) { WMArray *array; WMData *data; char *stream; unsigned short len; char *start, *fa, *desc; stream = getStream(tPtr, sel, 1); if (!stream) return NULL; array = WMCreateArrayWithDestructor(4, releaseStreamObjects); start = stream; while (start) { fa = strchr(start, 0xFA); if (fa) { if ((int)(fa - start) > 0) { desc = start; desc[(int)(fa - start)] = 0; data = WMCreateDataWithBytes((void *)desc, (int)(fa - start)); WMSetDataFormat(data, TYPETEXT); WMAddToArray(array, (void *)data); } len = *(fa + 1) * 0xff + *(fa + 2); data = WMCreateDataWithBytes((void *)(fa + 4), len); WMSetDataFormat(data, *(fa + 3)); WMAddToArray(array, (void *)data); start = fa + len + 4; } else { if (start && strlen(start)) { data = WMCreateDataWithBytes((void *)start, strlen(start)); WMSetDataFormat(data, TYPETEXT); WMAddToArray(array, (void *)data); } start = fa; } } wfree(stream); return array; } #define XDND_TEXT_DATA_TYPE "text/plain" #define XDND_COLOR_DATA_TYPE "application/X-color" static WMArray *getXdndSourceTypeArray(void) { WMArray *types = WMCreateArray(1); WMAddToArray(types, XDND_TEXT_DATA_TYPE); return types; } static WMArray *getXdndDestinationTypeArray(void) { WMArray *types = WMCreateArray(1); WMAddToArray(types, XDND_COLOR_DATA_TYPE); return types; } WMText *WMCreateTextForDocumentType(WMWidget * parent, WMAction * parser, WMAction * writer) { Text *tPtr; Display *dpy; WMScreen *scr; XGCValues gcv; tPtr = wmalloc(sizeof(Text)); tPtr->widgetClass = WC_Text; tPtr->view = W_CreateView(W_VIEW(parent)); if (!tPtr->view) { perror("could not create text's view\n"); wfree(tPtr); return NULL; } dpy = tPtr->view->screen->display; scr = tPtr->view->screen; tPtr->view->self = tPtr; tPtr->view->attribs.cursor = scr->textCursor; tPtr->view->attribFlags |= CWOverrideRedirect | CWCursor; W_ResizeView(tPtr->view, 250, 200); tPtr->dColor = WMBlackColor(scr); tPtr->fgColor = WMBlackColor(scr); tPtr->bgColor = WMWhiteColor(scr); W_SetViewBackgroundColor(tPtr->view, tPtr->bgColor); gcv.graphics_exposures = False; gcv.foreground = W_PIXEL(scr->gray); gcv.background = W_PIXEL(scr->darkGray); gcv.fill_style = FillStippled; /* why not use scr->stipple here? */ gcv.stipple = XCreateBitmapFromData(dpy, W_DRAWABLE(scr), STIPPLE_BITS, STIPPLE_WIDTH, STIPPLE_HEIGHT); tPtr->stippledGC = XCreateGC(dpy, W_DRAWABLE(scr), GCForeground | GCBackground | GCStipple | GCFillStyle | GCGraphicsExposures, &gcv); tPtr->ruler = NULL; tPtr->vS = NULL; tPtr->hS = NULL; tPtr->dFont = WMSystemFontOfSize(scr, 12); tPtr->view->delegate = &_TextViewDelegate; tPtr->delegate = NULL; #if DO_BLINK tPtr->timerID = NULL; #endif WMCreateEventHandler(tPtr->view, ExposureMask | StructureNotifyMask | EnterWindowMask | LeaveWindowMask | FocusChangeMask, handleEvents, tPtr); WMCreateEventHandler(tPtr->view, ButtonReleaseMask | ButtonPressMask | KeyReleaseMask | KeyPressMask | Button1MotionMask, handleActionEvents, tPtr); WMAddNotificationObserver(ownershipObserver, tPtr, WMSelectionOwnerDidChangeNotification, tPtr); WMSetViewDragSourceProcs(tPtr->view, &_DragSourceProcs); WMSetViewDragDestinationProcs(tPtr->view, &_DragDestinationProcs); { WMArray *types = WMCreateArray(2); WMAddToArray(types, "application/X-color"); WMAddToArray(types, "application/X-image"); WMRegisterViewForDraggedTypes(tPtr->view, types); WMFreeArray(types); } /*WMAddNotificationObserver(fontChanged, tPtr, WMFontPanelDidChangeNotification, tPtr); */ tPtr->firstTextBlock = NULL; tPtr->lastTextBlock = NULL; tPtr->currentTextBlock = NULL; tPtr->tpos = 0; tPtr->gfxItems = WMCreateArray(4); tPtr->parser = parser; tPtr->writer = writer; tPtr->sel.x = tPtr->sel.y = 2; tPtr->sel.w = tPtr->sel.h = 0; tPtr->clicked.x = tPtr->clicked.y = 2; tPtr->visible.x = tPtr->visible.y = 2; tPtr->visible.h = tPtr->view->size.height; tPtr->visible.w = tPtr->view->size.width - 4; tPtr->cursor.x = -23; tPtr->docWidth = 0; tPtr->docHeight = 0; tPtr->dBulletPix = WMCreatePixmapFromXPMData(tPtr->view->screen, default_bullet); tPtr->db = (Pixmap) NULL; tPtr->bgPixmap = NULL; tPtr->margins = WMGetRulerMargins(NULL); tPtr->margins->right = tPtr->visible.w; tPtr->nMargins = 1; tPtr->flags.rulerShown = False; tPtr->flags.monoFont = False; tPtr->flags.focused = False; tPtr->flags.editable = True; tPtr->flags.ownsSelection = False; tPtr->flags.pointerGrabbed = False; tPtr->flags.extendSelection = False; tPtr->flags.frozen = False; tPtr->flags.cursorShown = True; tPtr->flags.acceptsGraphic = False; tPtr->flags.horizOnDemand = False; tPtr->flags.needsLayOut = False; tPtr->flags.ignoreNewLine = False; tPtr->flags.indentNewLine = False; tPtr->flags.laidOut = False; tPtr->flags.ownsSelection = False; tPtr->flags.waitingForSelection = False; tPtr->flags.prepend = False; tPtr->flags.isOverGraphic = False; tPtr->flags.relief = WRSunken; tPtr->flags.isOverGraphic = 0; tPtr->flags.alignment = WALeft; tPtr->flags.first = True; tPtr->xdndSourceTypes = getXdndSourceTypeArray(); tPtr->xdndDestinationTypes = getXdndDestinationTypeArray(); return tPtr; } void WMPrependTextStream(WMText * tPtr, const char *text) { CHECK_CLASS(tPtr, WC_Text); if (!text) { if (tPtr->flags.ownsSelection) releaseSelection(tPtr); clearText(tPtr); updateScrollers(tPtr); return; } tPtr->flags.prepend = True; if (text && tPtr->parser) (tPtr->parser) (tPtr, (void *)text); else insertPlainText(tPtr, text); tPtr->flags.needsLayOut = True; tPtr->tpos = 0; if (!tPtr->flags.frozen) { layOutDocument(tPtr); } } void WMAppendTextStream(WMText * tPtr, const char *text) { CHECK_CLASS(tPtr, WC_Text); if (!text) { if (tPtr->flags.ownsSelection) releaseSelection(tPtr); clearText(tPtr); updateScrollers(tPtr); return; } tPtr->flags.prepend = False; if (text && tPtr->parser) (tPtr->parser) (tPtr, (void *)text); else insertPlainText(tPtr, text); tPtr->flags.needsLayOut = True; if (tPtr->currentTextBlock) { if (tPtr->currentTextBlock->graphic) tPtr->tpos = 1; else tPtr->tpos = tPtr->currentTextBlock->used; } if (!tPtr->flags.frozen) { layOutDocument(tPtr); } } char *WMGetTextStream(WMText * tPtr) { CHECK_CLASS(tPtr, WC_Text); return getStream(tPtr, 0, 0); } char *WMGetTextSelectedStream(WMText * tPtr) { CHECK_CLASS(tPtr, WC_Text); return getStream(tPtr, 1, 0); } WMArray *WMGetTextObjects(WMText * tPtr) { CHECK_CLASS(tPtr, WC_Text); return getStreamObjects(tPtr, 0); } WMArray *WMGetTextSelectedObjects(WMText * tPtr) { CHECK_CLASS(tPtr, WC_Text); return getStreamObjects(tPtr, 1); } void WMSetTextDelegate(WMText * tPtr, WMTextDelegate * delegate) { CHECK_CLASS(tPtr, WC_Text); tPtr->delegate = delegate; } void *WMCreateTextBlockWithObject(WMText * tPtr, WMWidget * w, const char *description, WMColor * color, unsigned short first, unsigned short extraInfo) { TextBlock *tb; if (!w || !description || !color) return NULL; tb = wmalloc(sizeof(TextBlock)); tb->text = wstrdup(description); tb->used = strlen(description); tb->blank = False; tb->d.widget = w; tb->color = WMRetainColor(color); tb->marginN = newMargin(tPtr, NULL); tb->allocated = extraInfo; tb->first = first; tb->kanji = False; tb->graphic = True; tb->object = True; tb->underlined = False; tb->selected = False; tb->script = 0; tb->sections = NULL; tb->nsections = 0; tb->prior = NULL; tb->next = NULL; return tb; } void *WMCreateTextBlockWithPixmap(WMText * tPtr, WMPixmap * p, const char *description, WMColor * color, unsigned short first, unsigned short extraInfo) { TextBlock *tb; if (!p || !description || !color) return NULL; tb = wmalloc(sizeof(TextBlock)); tb->text = wstrdup(description); tb->used = strlen(description); tb->blank = False; tb->d.pixmap = WMRetainPixmap(p); tb->color = WMRetainColor(color); tb->marginN = newMargin(tPtr, NULL); tb->allocated = extraInfo; tb->first = first; tb->kanji = False; tb->graphic = True; tb->object = False; tb->underlined = False; tb->selected = False; tb->script = 0; tb->sections = NULL; tb->nsections = 0; tb->prior = NULL; tb->next = NULL; return tb; } void *WMCreateTextBlockWithText(WMText * tPtr, const char *text, WMFont * font, WMColor * color, unsigned short first, unsigned short len) { TextBlock *tb; if (!font || !color) return NULL; tb = wmalloc(sizeof(TextBlock)); tb->allocated = reqBlockSize(len); tb->text = (char *)wmalloc(tb->allocated); if (len < 1 || !text || (*text == '\n' && len == 1)) { *tb->text = ' '; tb->used = 1; tb->blank = True; } else { memcpy(tb->text, text, len); tb->used = len; tb->blank = False; } tb->text[tb->used] = 0; tb->d.font = WMRetainFont(font); tb->color = WMRetainColor(color); tb->marginN = newMargin(tPtr, NULL); tb->first = first; tb->kanji = False; tb->graphic = False; tb->underlined = False; tb->selected = False; tb->script = 0; tb->sections = NULL; tb->nsections = 0; tb->prior = NULL; tb->next = NULL; return tb; } void WMSetTextBlockProperties(WMText * tPtr, void *vtb, unsigned int first, unsigned int kanji, unsigned int underlined, int script, WMRulerMargins * margins) { TextBlock *tb = (TextBlock *) vtb; if (!tb) return; tb->first = first; tb->kanji = kanji; tb->underlined = underlined; tb->script = script; tb->marginN = newMargin(tPtr, margins); } void WMGetTextBlockProperties(WMText * tPtr, void *vtb, unsigned int *first, unsigned int *kanji, unsigned int *underlined, int *script, WMRulerMargins *margins) { TextBlock *tb = (TextBlock *) vtb; if (!tb) return; if (first) *first = tb->first; if (kanji) *kanji = tb->kanji; if (underlined) *underlined = tb->underlined; if (script) *script = tb->script; if (margins) *margins = tPtr->margins[tb->marginN]; } static int prepareTextBlock(WMText *tPtr, TextBlock *tb) { if (tb->graphic) { if (tb->object) { WMWidget *w = tb->d.widget; if (W_CLASS(w) != WC_TextField && W_CLASS(w) != WC_Text) { (W_VIEW(w))->attribs.cursor = tPtr->view->screen->defaultCursor; (W_VIEW(w))->attribFlags |= CWOverrideRedirect | CWCursor; } } WMAddToArray(tPtr->gfxItems, (void *)tb); tPtr->tpos = 1; } else { tPtr->tpos = tb->used; } if (!tPtr->lastTextBlock || !tPtr->firstTextBlock) { tb->next = tb->prior = NULL; tb->first = True; tPtr->lastTextBlock = tPtr->firstTextBlock = tPtr->currentTextBlock = tb; return 0; } if (!tb->first) { tb->marginN = tPtr->currentTextBlock->marginN; } return 1; } void WMPrependTextBlock(WMText *tPtr, void *vtb) { TextBlock *tb = (TextBlock *) vtb; if (!tb || !prepareTextBlock(tPtr, tb)) return; tb->next = tPtr->currentTextBlock; tb->prior = tPtr->currentTextBlock->prior; if (tPtr->currentTextBlock->prior) tPtr->currentTextBlock->prior->next = tb; tPtr->currentTextBlock->prior = tb; if (!tb->prior) tPtr->firstTextBlock = tb; tPtr->currentTextBlock = tb; } void WMAppendTextBlock(WMText *tPtr, void *vtb) { TextBlock *tb = (TextBlock *) vtb; if (!tb || !prepareTextBlock(tPtr, tb)) return; tb->next = tPtr->currentTextBlock->next; tb->prior = tPtr->currentTextBlock; if (tPtr->currentTextBlock->next) tPtr->currentTextBlock->next->prior = tb; tPtr->currentTextBlock->next = tb; if (!tb->next) tPtr->lastTextBlock = tb; tPtr->currentTextBlock = tb; } void *WMRemoveTextBlock(WMText * tPtr) { TextBlock *tb = NULL; if (!tPtr->firstTextBlock || !tPtr->lastTextBlock || !tPtr->currentTextBlock) { return NULL; } tb = tPtr->currentTextBlock; if (tb->graphic) { WMRemoveFromArray(tPtr->gfxItems, (void *)tb); if (tb->object) { WMUnmapWidget(tb->d.widget); } } if (tPtr->currentTextBlock == tPtr->firstTextBlock) { if (tPtr->currentTextBlock->next) tPtr->currentTextBlock->next->prior = NULL; tPtr->firstTextBlock = tPtr->currentTextBlock->next; tPtr->currentTextBlock = tPtr->firstTextBlock; } else if (tPtr->currentTextBlock == tPtr->lastTextBlock) { tPtr->currentTextBlock->prior->next = NULL; tPtr->lastTextBlock = tPtr->currentTextBlock->prior; tPtr->currentTextBlock = tPtr->lastTextBlock; } else { tPtr->currentTextBlock->prior->next = tPtr->currentTextBlock->next; tPtr->currentTextBlock->next->prior = tPtr->currentTextBlock->prior; tPtr->currentTextBlock = tPtr->currentTextBlock->next; } return (void *)tb; } #if 0 static void destroyWidget(WMWidget * widget) { WMDestroyWidget(widget); // -- never do this -- wfree(widget); } #endif void WMDestroyTextBlock(WMText * tPtr, void *vtb) { TextBlock *tb = (TextBlock *) vtb; /* Parameter not used, but tell the compiler that it is ok */ (void) tPtr; if (!tb) return; if (tb->graphic) { if (tb->object) { /* naturally, there's a danger to destroying widgets whose action * brings us here: ie. press a button to destroy it... * need to find a safer way. till then... this stays commented out */ /* 5 months later... destroy it 10 seconds after now which should * be enough time for the widget's action to be completed... :-) */ /* This is a bad assumption. Just destroy the widget here. * if the caller needs it, it can protect it with W_RetainView() * WMAddTimerHandler(10000, destroyWidget, (void *)tb->d.widget);*/ WMDestroyWidget(tb->d.widget); } else { WMReleasePixmap(tb->d.pixmap); } } else { WMReleaseFont(tb->d.font); } WMReleaseColor(tb->color); /* isn't this going to memleak if nsections==0? if (tb->sections && tb->nsections > 0) */ if (tb->sections) wfree(tb->sections); wfree(tb->text); wfree(tb); } void WMSetTextForegroundColor(WMText * tPtr, WMColor * color) { if (tPtr->fgColor) WMReleaseColor(tPtr->fgColor); tPtr->fgColor = WMRetainColor(color ? color : tPtr->view->screen->black); paintText(tPtr); } void WMSetTextBackgroundColor(WMText * tPtr, WMColor * color) { if (tPtr->bgColor) WMReleaseColor(tPtr->bgColor); tPtr->bgColor = WMRetainColor(color ? color : tPtr->view->screen->white); W_SetViewBackgroundColor(tPtr->view, tPtr->bgColor); paintText(tPtr); } void WMSetTextBackgroundPixmap(WMText * tPtr, WMPixmap * pixmap) { if (tPtr->bgPixmap) WMReleasePixmap(tPtr->bgPixmap); if (pixmap) tPtr->bgPixmap = WMRetainPixmap(pixmap); else tPtr->bgPixmap = NULL; } void WMSetTextRelief(WMText * tPtr, WMReliefType relief) { tPtr->flags.relief = relief; textDidResize(tPtr->view->delegate, tPtr->view); } void WMSetTextHasHorizontalScroller(WMText * tPtr, Bool shouldhave) { if (shouldhave && !tPtr->hS) { tPtr->hS = WMCreateScroller(tPtr); (W_VIEW(tPtr->hS))->attribs.cursor = tPtr->view->screen->defaultCursor; (W_VIEW(tPtr->hS))->attribFlags |= CWOverrideRedirect | CWCursor; WMSetScrollerArrowsPosition(tPtr->hS, WSAMinEnd); WMSetScrollerAction(tPtr->hS, scrollersCallBack, tPtr); WMMapWidget(tPtr->hS); } else if (!shouldhave && tPtr->hS) { WMUnmapWidget(tPtr->hS); WMDestroyWidget(tPtr->hS); tPtr->hS = NULL; } tPtr->hpos = 0; tPtr->prevHpos = 0; textDidResize(tPtr->view->delegate, tPtr->view); } void WMSetTextHasRuler(WMText * tPtr, Bool shouldhave) { if (shouldhave && !tPtr->ruler) { tPtr->ruler = WMCreateRuler(tPtr); (W_VIEW(tPtr->ruler))->attribs.cursor = tPtr->view->screen->defaultCursor; (W_VIEW(tPtr->ruler))->attribFlags |= CWOverrideRedirect | CWCursor; WMSetRulerReleaseAction(tPtr->ruler, rulerReleaseCallBack, tPtr); WMSetRulerMoveAction(tPtr->ruler, rulerMoveCallBack, tPtr); } else if (!shouldhave && tPtr->ruler) { WMShowTextRuler(tPtr, False); WMDestroyWidget(tPtr->ruler); tPtr->ruler = NULL; } textDidResize(tPtr->view->delegate, tPtr->view); } void WMShowTextRuler(WMText * tPtr, Bool show) { if (!tPtr->ruler) return; if (tPtr->flags.monoFont) show = False; tPtr->flags.rulerShown = show; if (show) { WMMapWidget(tPtr->ruler); } else { WMUnmapWidget(tPtr->ruler); } textDidResize(tPtr->view->delegate, tPtr->view); } Bool WMGetTextRulerShown(WMText * tPtr) { if (!tPtr->ruler) return False; return tPtr->flags.rulerShown; } void WMSetTextHasVerticalScroller(WMText * tPtr, Bool shouldhave) { if (shouldhave && !tPtr->vS) { tPtr->vS = WMCreateScroller(tPtr); (W_VIEW(tPtr->vS))->attribs.cursor = tPtr->view->screen->defaultCursor; (W_VIEW(tPtr->vS))->attribFlags |= CWOverrideRedirect | CWCursor; WMSetScrollerArrowsPosition(tPtr->vS, WSAMaxEnd); WMSetScrollerAction(tPtr->vS, scrollersCallBack, tPtr); WMMapWidget(tPtr->vS); } else if (!shouldhave && tPtr->vS) { WMUnmapWidget(tPtr->vS); WMDestroyWidget(tPtr->vS); tPtr->vS = NULL; } tPtr->vpos = 0; tPtr->prevVpos = 0; textDidResize(tPtr->view->delegate, tPtr->view); } Bool WMScrollText(WMText * tPtr, int amount) { Bool scroll = False; if (amount == 0 || !tPtr->view->flags.realized) return False; if (amount < 0) { if (tPtr->vpos > 0) { if (tPtr->vpos > abs(amount)) tPtr->vpos += amount; else tPtr->vpos = 0; scroll = True; } } else { int limit = tPtr->docHeight - tPtr->visible.h; if (tPtr->vpos < limit) { if (tPtr->vpos < limit - amount) tPtr->vpos += amount; else tPtr->vpos = limit; scroll = True; } } if (scroll && tPtr->vpos != tPtr->prevVpos) { updateScrollers(tPtr); paintText(tPtr); } tPtr->prevVpos = tPtr->vpos; return scroll; } Bool WMPageText(WMText * tPtr, Bool direction) { if (!tPtr->view->flags.realized) return False; return WMScrollText(tPtr, direction ? tPtr->visible.h : -tPtr->visible.h); } void WMSetTextEditable(WMText * tPtr, Bool editable) { tPtr->flags.editable = editable; } int WMGetTextEditable(WMText * tPtr) { return tPtr->flags.editable; } void WMSetTextIndentNewLines(WMText * tPtr, Bool indent) { tPtr->flags.indentNewLine = indent; } void WMSetTextIgnoresNewline(WMText * tPtr, Bool ignore) { tPtr->flags.ignoreNewLine = ignore; } Bool WMGetTextIgnoresNewline(WMText * tPtr) { return tPtr->flags.ignoreNewLine; } void WMSetTextUsesMonoFont(WMText * tPtr, Bool mono) { if (mono) { if (tPtr->flags.rulerShown) WMShowTextRuler(tPtr, False); if (tPtr->flags.alignment != WALeft) tPtr->flags.alignment = WALeft; } tPtr->flags.monoFont = mono; textDidResize(tPtr->view->delegate, tPtr->view); } Bool WMGetTextUsesMonoFont(WMText * tPtr) { return tPtr->flags.monoFont; } void WMSetTextDefaultFont(WMText * tPtr, WMFont * font) { if (tPtr->dFont) WMReleaseFont(tPtr->dFont); if (font) { tPtr->dFont = WMRetainFont(font); } else { tPtr->dFont = WMSystemFontOfSize(tPtr->view->screen, 12); } } WMFont *WMGetTextDefaultFont(WMText * tPtr) { return WMRetainFont(tPtr->dFont); } void WMSetTextDefaultColor(WMText * tPtr, WMColor * color) { if (tPtr->dColor) WMReleaseColor(tPtr->dColor); if (color) { tPtr->dColor = WMRetainColor(color); } else { tPtr->dColor = WMBlackColor(tPtr->view->screen); } } WMColor *WMGetTextDefaultColor(WMText * tPtr) { return tPtr->dColor; } void WMSetTextAlignment(WMText * tPtr, WMAlignment alignment) { if (tPtr->flags.monoFont) tPtr->flags.alignment = WALeft; else tPtr->flags.alignment = alignment; WMThawText(tPtr); } int WMGetTextInsertType(WMText * tPtr) { return tPtr->flags.prepend; } void WMSetTextSelectionColor(WMText * tPtr, WMColor * color) { setSelectionProperty(tPtr, NULL, color, -1); } WMColor *WMGetTextSelectionColor(WMText * tPtr) { TextBlock *tb; tb = tPtr->currentTextBlock; if (!tb || !tPtr->flags.ownsSelection) return NULL; if (!tb->selected) return NULL; return tb->color; } void WMSetTextSelectionFont(WMText * tPtr, WMFont * font) { setSelectionProperty(tPtr, font, NULL, -1); } WMFont *WMGetTextSelectionFont(WMText * tPtr) { TextBlock *tb; tb = tPtr->currentTextBlock; if (!tb || !tPtr->flags.ownsSelection) return NULL; if (!tb->selected) return NULL; if (tb->graphic) { tb = getFirstNonGraphicBlockFor(tb, 1); if (!tb) return NULL; } return (tb->selected ? tb->d.font : NULL); } void WMSetTextSelectionUnderlined(WMText * tPtr, int underlined) { /* // check this */ if (underlined != 0 && underlined != 1) return; setSelectionProperty(tPtr, NULL, NULL, underlined); } int WMGetTextSelectionUnderlined(WMText * tPtr) { TextBlock *tb; tb = tPtr->currentTextBlock; if (!tb || !tPtr->flags.ownsSelection) return 0; if (!tb->selected) return 0; return tb->underlined; } void WMFreezeText(WMText * tPtr) { tPtr->flags.frozen = True; } void WMThawText(WMText * tPtr) { tPtr->flags.frozen = False; if (tPtr->flags.monoFont) { int j, c = WMGetArrayItemCount(tPtr->gfxItems); TextBlock *tb; /* make sure to unmap widgets no matter where they are */ /* they'll be later remapped if needed by paintText */ for (j = 0; j < c; j++) { if ((tb = (TextBlock *) WMGetFromArray(tPtr->gfxItems, j))) { if (tb->object && ((W_VIEW(tb->d.widget))->flags.mapped)) WMUnmapWidget(tb->d.widget); } } } tPtr->flags.laidOut = False; layOutDocument(tPtr); updateScrollers(tPtr); paintText(tPtr); tPtr->flags.needsLayOut = False; } /* find first occurence of a string */ static const char *mystrstr(const char *haystack, const char *needle, unsigned short len, const char *end, Bool caseSensitive) { const char *ptr; if (!haystack || !needle || !end) return NULL; for (ptr = haystack; ptr < end; ptr++) { if (caseSensitive) { if (*ptr == *needle && !strncmp(ptr, needle, len)) return ptr; } else { if (tolower(*ptr) == tolower(*needle) && !strncasecmp(ptr, needle, len)) return ptr; } } return NULL; } /* find last occurence of a string */ static const char *mystrrstr(const char *haystack, const char *needle, unsigned short len, const char *end, Bool caseSensitive) { const char *ptr; if (!haystack || !needle || !end) return NULL; for (ptr = haystack - 2; ptr > end; ptr--) { if (caseSensitive) { if (*ptr == *needle && !strncmp(ptr, needle, len)) return ptr; } else { if (tolower(*ptr) == tolower(*needle) && !strncasecmp(ptr, needle, len)) return ptr; } } return NULL; } Bool WMFindInTextStream(WMText * tPtr, const char *needle, Bool direction, Bool caseSensitive) { TextBlock *tb; const char *mark = NULL; unsigned short pos; #if 0 if (!(tb = tPtr->currentTextBlock)) { if (!(tb = ((direction > 0) ? tPtr->firstTextBlock : tPtr->lastTextBlock))) { return False; } } else { /* if(tb != ((direction>0) ?tPtr->firstTextBlock : tPtr->lastTextBlock)) tb = (direction>0) ? tb->next : tb->prior; */ if (tb != tPtr->lastTextBlock) tb = tb->prior; } #endif tb = tPtr->currentTextBlock; pos = tPtr->tpos; while (tb) { if (!tb->graphic) { if (direction > 0) { if (pos + 1 < tb->used) pos++; if (tb->used - pos > 0 && pos > 0) { mark = mystrstr(&tb->text[pos], needle, strlen(needle), &tb->text[tb->used], caseSensitive); } else { tb = tb->next; pos = 0; continue; } } else { if (pos - 1 > 0) pos--; if (pos > 0) { mark = mystrrstr(&tb->text[pos], needle, strlen(needle), tb->text, caseSensitive); } else { tb = tb->prior; if (!tb) return False; pos = tb->used; continue; } } if (mark) { WMFont *font = tPtr->flags.monoFont ? tPtr->dFont : tb->d.font; tPtr->tpos = (int)(mark - tb->text); tPtr->currentTextBlock = tb; updateCursorPosition(tPtr); tPtr->sel.y = tPtr->cursor.y + 5; tPtr->sel.h = tPtr->cursor.h - 10; tPtr->sel.x = tPtr->cursor.x + 1; tPtr->sel.w = WMIN(WMWidthOfString(font, &tb->text[tPtr->tpos], strlen(needle)), tPtr->docWidth - tPtr->sel.x); tPtr->flags.ownsSelection = True; paintText(tPtr); return True; } } tb = (direction > 0) ? tb->next : tb->prior; if (tb) { pos = (direction > 0) ? 0 : tb->used; } } return False; } Bool WMReplaceTextSelection(WMText * tPtr, char *replacement) { if (!tPtr->flags.ownsSelection) return False; removeSelection(tPtr); if (replacement) { insertTextInteractively(tPtr, replacement, strlen(replacement)); updateCursorPosition(tPtr); paintText(tPtr); } return True; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/userdefaults.c�������������������������������������������������������������0000644�0001750�0001750�00000033454�13642357773�014621� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include <stdlib.h> #include <string.h> #include <strings.h> #include <stdio.h> #include <assert.h> #include <unistd.h> #include <sys/stat.h> #include "wconfig.h" #include "WINGs.h" #include "WINGsP.h" #include "userdefaults.h" typedef struct W_UserDefaults { WMPropList *defaults; WMPropList *appDomain; WMPropList *searchListArray; WMPropList **searchList; /* cache for searchListArray */ char dirty; char dontSync; char *path; /* where is db located */ time_t timestamp; /* last modification time */ struct W_UserDefaults *next; } UserDefaults; static UserDefaults *sharedUserDefaults = NULL; char *WMUserDefaultsDidChangeNotification = "WMUserDefaultsDidChangeNotification"; static void synchronizeUserDefaults(void *foo); #define DEFAULTS_DIR "/Defaults" #ifndef HAVE_INOTIFY /* Check defaults database for changes every this many milliseconds */ /* XXX: this is shared with src/ stuff, put it in some common header */ #define UD_SYNC_INTERVAL 2000 #endif const char *wusergnusteppath() { static const char subdir[] = "/GNUstep"; static char *path = NULL; char *gspath, *h; int pathlen; if (path) /* Value have been already computed, re-use it */ return path; #ifdef HAVE_SECURE_GETENV gspath = secure_getenv("WMAKER_USER_ROOT"); #else gspath = getenv("WMAKER_USER_ROOT"); #endif if (gspath) { gspath = wexpandpath(gspath); if (gspath) { path = gspath; return path; } wwarning(_("variable WMAKER_USER_ROOT defined with invalid path, not used")); } h = wgethomedir(); if (!h) return NULL; pathlen = strlen(h); path = wmalloc(pathlen + sizeof(subdir)); strcpy(path, h); strcpy(path + pathlen, subdir); return path; } char *wdefaultspathfordomain(const char *domain) { char *path; const char *gspath; size_t slen; gspath = wusergnusteppath(); slen = strlen(gspath) + strlen(DEFAULTS_DIR) + strlen(domain) + 4; path = wmalloc(slen); strcpy(path, gspath); strcat(path, DEFAULTS_DIR); strcat(path, "/"); strcat(path, domain); return path; } /* XXX: doesn't quite belong to *user*defaults.c */ char *wglobaldefaultspathfordomain(const char *domain) { char *t = NULL; size_t len; len = strlen(DEFSDATADIR) + strlen(domain) + 2; t = wmalloc(len); snprintf(t, len, "%s/%s", DEFSDATADIR, domain); return t; } void w_save_defaults_changes(void) { if (WMApplication.applicationName == NULL) { /* * This means that the user has properly exited by calling the * function 'WMReleaseApplication' (which has already called us) * but we're being called again by the fallback 'atexit' method * (the legacy way of saving changes on exit which is kept for * application that would forget to call 'WMReleaseApplication') */ return; } /* save the user defaults databases */ synchronizeUserDefaults(NULL); } /* set to save changes in defaults when program is exited */ static void registerSaveOnExit(void) { static Bool registeredSaveOnExit = False; if (!registeredSaveOnExit) { atexit(w_save_defaults_changes); registeredSaveOnExit = True; } } static void synchronizeUserDefaults(void *foo) { UserDefaults *database = sharedUserDefaults; /* Parameter not used, but tell the compiler that it is ok */ (void) foo; while (database) { if (!database->dontSync) WMSynchronizeUserDefaults(database); database = database->next; } } #ifndef HAVE_INOTIFY static void addSynchronizeTimerHandler(void) { static Bool initialized = False; if (!initialized) { WMAddPersistentTimerHandler(UD_SYNC_INTERVAL, synchronizeUserDefaults, NULL); initialized = True; } } #endif void WMEnableUDPeriodicSynchronization(WMUserDefaults * database, Bool enable) { database->dontSync = !enable; } void WMSynchronizeUserDefaults(WMUserDefaults * database) { Bool fileIsNewer = False, release = False, notify = False; WMPropList *plF, *key; char *path; struct stat stbuf; if (!database->path) { path = wdefaultspathfordomain(WMGetApplicationName()); release = True; } else { path = database->path; } if (stat(path, &stbuf) >= 0 && stbuf.st_mtime > database->timestamp) fileIsNewer = True; if (database->appDomain && (database->dirty || fileIsNewer)) { if (database->dirty && fileIsNewer) { plF = WMReadPropListFromFile(path); if (plF) { plF = WMMergePLDictionaries(plF, database->appDomain, False); WMReleasePropList(database->appDomain); database->appDomain = plF; key = database->searchList[0]; WMPutInPLDictionary(database->defaults, key, plF); notify = True; } else { /* something happened with the file. just overwrite it */ wwarning(_("cannot read domain from file '%s' when syncing"), path); WMWritePropListToFile(database->appDomain, path); } } else if (database->dirty) { WMWritePropListToFile(database->appDomain, path); } else if (fileIsNewer) { plF = WMReadPropListFromFile(path); if (plF) { WMReleasePropList(database->appDomain); database->appDomain = plF; key = database->searchList[0]; WMPutInPLDictionary(database->defaults, key, plF); notify = True; } else { /* something happened with the file. just overwrite it */ wwarning(_("cannot read domain from file '%s' when syncing"), path); WMWritePropListToFile(database->appDomain, path); } } database->dirty = 0; if (stat(path, &stbuf) >= 0) database->timestamp = stbuf.st_mtime; if (notify) { WMPostNotificationName(WMUserDefaultsDidChangeNotification, database, NULL); } } if (release) wfree(path); } void WMSaveUserDefaults(WMUserDefaults * database) { if (database->appDomain) { struct stat stbuf; char *path; Bool release = False; if (!database->path) { path = wdefaultspathfordomain(WMGetApplicationName()); release = True; } else { path = database->path; } WMWritePropListToFile(database->appDomain, path); database->dirty = 0; if (stat(path, &stbuf) >= 0) database->timestamp = stbuf.st_mtime; if (release) wfree(path); } } WMUserDefaults *WMGetStandardUserDefaults(void) { WMUserDefaults *defaults; WMPropList *domain; WMPropList *key; struct stat stbuf; char *path; int i; if (sharedUserDefaults) { defaults = sharedUserDefaults; while (defaults) { /* path == NULL only for StandardUserDefaults db */ if (defaults->path == NULL) return defaults; defaults = defaults->next; } } /* we didn't found the database we are looking for. Go read it. XXX: wtf? */ defaults = wmalloc(sizeof(WMUserDefaults)); defaults->defaults = WMCreatePLDictionary(NULL, NULL); defaults->searchList = wmalloc(sizeof(WMPropList *) * 3); /* application domain */ key = WMCreatePLString(WMGetApplicationName()); defaults->searchList[0] = key; /* temporary kluge. wmaker handles synchronization itself */ if (strcmp(WMGetApplicationName(), "WindowMaker") == 0) { defaults->dontSync = 1; } path = wdefaultspathfordomain(WMGetFromPLString(key)); if (stat(path, &stbuf) >= 0) defaults->timestamp = stbuf.st_mtime; domain = WMReadPropListFromFile(path); if (!domain) domain = WMCreatePLDictionary(NULL, NULL); wfree(path); defaults->appDomain = domain; if (domain) WMPutInPLDictionary(defaults->defaults, key, domain); /* global domain */ key = WMCreatePLString("WMGLOBAL"); defaults->searchList[1] = key; path = wdefaultspathfordomain(WMGetFromPLString(key)); domain = WMReadPropListFromFile(path); wfree(path); if (!domain) domain = WMCreatePLDictionary(NULL, NULL); if (domain) WMPutInPLDictionary(defaults->defaults, key, domain); /* terminate list */ defaults->searchList[2] = NULL; defaults->searchListArray = WMCreatePLArray(NULL, NULL); i = 0; while (defaults->searchList[i]) { WMAddToPLArray(defaults->searchListArray, defaults->searchList[i]); i++; } if (sharedUserDefaults) defaults->next = sharedUserDefaults; sharedUserDefaults = defaults; #ifndef HAVE_INOTIFY addSynchronizeTimerHandler(); #endif registerSaveOnExit(); return defaults; } WMUserDefaults *WMGetDefaultsFromPath(const char *path) { WMUserDefaults *defaults; WMPropList *domain; WMPropList *key; struct stat stbuf; const char *name; int i; assert(path != NULL); if (sharedUserDefaults) { defaults = sharedUserDefaults; while (defaults) { if (defaults->path && strcmp(defaults->path, path) == 0) return defaults; defaults = defaults->next; } } /* we didn't found the database we are looking for. Go read it. XXX wtf? */ defaults = wmalloc(sizeof(WMUserDefaults)); defaults->defaults = WMCreatePLDictionary(NULL, NULL); defaults->searchList = wmalloc(sizeof(WMPropList *) * 2); /* the domain we want, go in the first position */ name = strrchr(path, '/'); if (!name) name = path; else name++; key = WMCreatePLString(name); defaults->searchList[0] = key; if (stat(path, &stbuf) >= 0) defaults->timestamp = stbuf.st_mtime; domain = WMReadPropListFromFile(path); if (!domain) domain = WMCreatePLDictionary(NULL, NULL); defaults->path = wstrdup(path); defaults->appDomain = domain; if (domain) WMPutInPLDictionary(defaults->defaults, key, domain); /* terminate list */ defaults->searchList[1] = NULL; defaults->searchListArray = WMCreatePLArray(NULL, NULL); i = 0; while (defaults->searchList[i]) { WMAddToPLArray(defaults->searchListArray, defaults->searchList[i]); i++; } if (sharedUserDefaults) defaults->next = sharedUserDefaults; sharedUserDefaults = defaults; #ifndef HAVE_INOTIFY addSynchronizeTimerHandler(); #endif registerSaveOnExit(); return defaults; } /* Returns a WMPropList array with all keys in the user defaults database. * Free the array with WMReleasePropList() when no longer needed, * but do not free the elements of the array! They're just references. */ WMPropList *WMGetUDKeys(WMUserDefaults * database) { return WMGetPLDictionaryKeys(database->appDomain); } WMPropList *WMGetUDObjectForKey(WMUserDefaults * database, const char *defaultName) { WMPropList *domainName, *domain; WMPropList *object = NULL; WMPropList *key = WMCreatePLString(defaultName); int i = 0; while (database->searchList[i] && !object) { domainName = database->searchList[i]; domain = WMGetFromPLDictionary(database->defaults, domainName); if (domain) { object = WMGetFromPLDictionary(domain, key); } i++; } WMReleasePropList(key); return object; } void WMSetUDObjectForKey(WMUserDefaults * database, WMPropList * object, const char *defaultName) { WMPropList *key = WMCreatePLString(defaultName); database->dirty = 1; WMPutInPLDictionary(database->appDomain, key, object); WMReleasePropList(key); } void WMRemoveUDObjectForKey(WMUserDefaults * database, const char *defaultName) { WMPropList *key = WMCreatePLString(defaultName); database->dirty = 1; WMRemoveFromPLDictionary(database->appDomain, key); WMReleasePropList(key); } char *WMGetUDStringForKey(WMUserDefaults * database, const char *defaultName) { WMPropList *val; val = WMGetUDObjectForKey(database, defaultName); if (!val) return NULL; if (!WMIsPLString(val)) return NULL; return WMGetFromPLString(val); } int WMGetUDIntegerForKey(WMUserDefaults * database, const char *defaultName) { WMPropList *val; char *str; int value; val = WMGetUDObjectForKey(database, defaultName); if (!val) return 0; if (!WMIsPLString(val)) return 0; str = WMGetFromPLString(val); if (!str) return 0; if (sscanf(str, "%i", &value) != 1) return 0; return value; } float WMGetUDFloatForKey(WMUserDefaults * database, const char *defaultName) { WMPropList *val; char *str; float value; val = WMGetUDObjectForKey(database, defaultName); if (!val || !WMIsPLString(val)) return 0.0; if (!(str = WMGetFromPLString(val))) return 0.0; if (sscanf(str, "%f", &value) != 1) return 0.0; return value; } Bool WMGetUDBoolForKey(WMUserDefaults * database, const char *defaultName) { WMPropList *val; int value; char *str; val = WMGetUDObjectForKey(database, defaultName); if (!val) return False; if (!WMIsPLString(val)) return False; str = WMGetFromPLString(val); if (!str) return False; if (sscanf(str, "%i", &value) == 1 && value != 0) return True; if (strcasecmp(str, "YES") == 0) return True; if (strcasecmp(str, "Y") == 0) return True; return False; } void WMSetUDIntegerForKey(WMUserDefaults * database, int value, const char *defaultName) { WMPropList *object; char buffer[128]; sprintf(buffer, "%i", value); object = WMCreatePLString(buffer); WMSetUDObjectForKey(database, object, defaultName); WMReleasePropList(object); } void WMSetUDStringForKey(WMUserDefaults * database, const char *value, const char *defaultName) { WMPropList *object; object = WMCreatePLString(value); WMSetUDObjectForKey(database, object, defaultName); WMReleasePropList(object); } void WMSetUDFloatForKey(WMUserDefaults * database, float value, const char *defaultName) { WMPropList *object; char buffer[128]; sprintf(buffer, "%f", (double)value); object = WMCreatePLString(buffer); WMSetUDObjectForKey(database, object, defaultName); WMReleasePropList(object); } void WMSetUDBoolForKey(WMUserDefaults * database, Bool value, const char *defaultName) { static WMPropList *yes = NULL, *no = NULL; if (!yes) { yes = WMCreatePLString("YES"); no = WMCreatePLString("NO"); } WMSetUDObjectForKey(database, value ? yes : no, defaultName); } WMPropList *WMGetUDSearchList(WMUserDefaults * database) { return database->searchListArray; } void WMSetUDSearchList(WMUserDefaults * database, WMPropList * list) { int i, c; if (database->searchList) { i = 0; while (database->searchList[i]) { WMReleasePropList(database->searchList[i]); i++; } wfree(database->searchList); } if (database->searchListArray) { WMReleasePropList(database->searchListArray); } c = WMGetPropListItemCount(list); database->searchList = wmalloc(sizeof(WMPropList *) * (c + 1)); for (i = 0; i < c; i++) { database->searchList[i] = WMGetFromPLArray(list, i); } database->searchList[c] = NULL; database->searchListArray = WMDeepCopyPropList(list); } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/array.c��������������������������������������������������������������������0000644�0001750�0001750�00000016350�13431646201�013204� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Dynamically Resized Array * * Authors: Alfredo K. Kojima <kojima@windowmaker.info> * Dan Pascu <dan@windowmaker.info> * * This code is released to the Public Domain, but * proper credit is always appreciated :) */ #include <stdlib.h> #include <string.h> #include "WUtil.h" #define INITIAL_SIZE 8 #define RESIZE_INCREMENT 8 typedef struct W_Array { void **items; /* the array data */ int itemCount; /* # of items in array */ int allocSize; /* allocated size of array */ WMFreeDataProc *destructor; /* the destructor to free elements */ } W_Array; WMArray *WMCreateArray(int initialSize) { return WMCreateArrayWithDestructor(initialSize, NULL); } WMArray *WMCreateArrayWithDestructor(int initialSize, WMFreeDataProc * destructor) { WMArray *array; array = wmalloc(sizeof(WMArray)); if (initialSize <= 0) { initialSize = INITIAL_SIZE; } array->items = wmalloc(sizeof(void *) * initialSize); array->itemCount = 0; array->allocSize = initialSize; array->destructor = destructor; return array; } WMArray *WMCreateArrayWithArray(WMArray * array) { WMArray *newArray; newArray = wmalloc(sizeof(WMArray)); newArray->items = wmalloc(sizeof(void *) * array->allocSize); memcpy(newArray->items, array->items, sizeof(void *) * array->itemCount); newArray->itemCount = array->itemCount; newArray->allocSize = array->allocSize; newArray->destructor = NULL; return newArray; } void WMEmptyArray(WMArray * array) { if (array->destructor) { while (array->itemCount > 0) { array->itemCount--; array->destructor(array->items[array->itemCount]); } } /*memset(array->items, 0, array->itemCount * sizeof(void*)); */ array->itemCount = 0; } void WMFreeArray(WMArray * array) { if (array == NULL) return; WMEmptyArray(array); wfree(array->items); wfree(array); } int WMGetArrayItemCount(WMArray * array) { if (array == NULL) return 0; return array->itemCount; } void WMAppendArray(WMArray * array, WMArray * other) { if (array == NULL || other == NULL) return; if (other->itemCount == 0) return; if (array->itemCount + other->itemCount > array->allocSize) { array->allocSize += other->allocSize; array->items = wrealloc(array->items, sizeof(void *) * array->allocSize); } memcpy(array->items + array->itemCount, other->items, sizeof(void *) * other->itemCount); array->itemCount += other->itemCount; } void WMAddToArray(WMArray * array, void *item) { if (array == NULL) return; if (array->itemCount >= array->allocSize) { array->allocSize += RESIZE_INCREMENT; array->items = wrealloc(array->items, sizeof(void *) * array->allocSize); } array->items[array->itemCount] = item; array->itemCount++; } void WMInsertInArray(WMArray * array, int index, void *item) { if (array == NULL) return; wassertr(index >= 0 && index <= array->itemCount); if (array->itemCount >= array->allocSize) { array->allocSize += RESIZE_INCREMENT; array->items = wrealloc(array->items, sizeof(void *) * array->allocSize); } if (index < array->itemCount) { memmove(array->items + index + 1, array->items + index, sizeof(void *) * (array->itemCount - index)); } array->items[index] = item; array->itemCount++; } void *WMReplaceInArray(WMArray * array, int index, void *item) { void *old; if (array == NULL) return NULL; wassertrv(index >= 0 && index <= array->itemCount, NULL); /* is it really useful to perform append if index == array->itemCount ? -Dan */ if (index == array->itemCount) { WMAddToArray(array, item); return NULL; } old = array->items[index]; array->items[index] = item; return old; } int WMDeleteFromArray(WMArray * array, int index) { if (array == NULL) return 0; wassertrv(index >= 0 && index < array->itemCount, 0); if (array->destructor) { array->destructor(array->items[index]); } if (index < array->itemCount - 1) { memmove(array->items + index, array->items + index + 1, sizeof(void *) * (array->itemCount - index - 1)); } array->itemCount--; return 1; } int WMRemoveFromArrayMatching(WMArray * array, WMMatchDataProc * match, void *cdata) { int i; if (array == NULL) return 1; if (match != NULL) { for (i = 0; i < array->itemCount; i++) { if ((*match) (array->items[i], cdata)) { WMDeleteFromArray(array, i); return 1; } } } else { for (i = 0; i < array->itemCount; i++) { if (array->items[i] == cdata) { WMDeleteFromArray(array, i); return 1; } } } return 0; } void *WMGetFromArray(WMArray * array, int index) { if (index < 0 || array == NULL || index >= array->itemCount) return NULL; return array->items[index]; } void *WMPopFromArray(WMArray * array) { if (array == NULL || array->itemCount <= 0) return NULL; array->itemCount--; return array->items[array->itemCount]; } int WMFindInArray(WMArray * array, WMMatchDataProc * match, void *cdata) { int i; if (array == NULL) return WANotFound; if (match != NULL) { for (i = 0; i < array->itemCount; i++) { if ((*match) (array->items[i], cdata)) return i; } } else { for (i = 0; i < array->itemCount; i++) { if (array->items[i] == cdata) return i; } } return WANotFound; } int WMCountInArray(WMArray * array, void *item) { int i, count; if (array == NULL) return 0; for (i = 0, count = 0; i < array->itemCount; i++) { if (array->items[i] == item) count++; } return count; } void WMSortArray(WMArray * array, WMCompareDataProc * comparer) { if (array == NULL) return; if (array->itemCount > 1) { /* Don't sort empty or single element arrays */ qsort(array->items, array->itemCount, sizeof(void *), comparer); } } void WMMapArray(WMArray * array, void (*function) (void *, void *), void *data) { int i; if (array == NULL) return; for (i = 0; i < array->itemCount; i++) { (*function) (array->items[i], data); } } WMArray *WMGetSubarrayWithRange(WMArray * array, WMRange aRange) { WMArray *newArray; if (aRange.count <= 0 || array == NULL) return WMCreateArray(0); if (aRange.position < 0) aRange.position = 0; if (aRange.position >= array->itemCount) aRange.position = array->itemCount - 1; if (aRange.position + aRange.count > array->itemCount) aRange.count = array->itemCount - aRange.position; newArray = WMCreateArray(aRange.count); memcpy(newArray->items, array->items + aRange.position, sizeof(void *) * aRange.count); newArray->itemCount = aRange.count; return newArray; } void *WMArrayFirst(WMArray * array, WMArrayIterator * iter) { if (array == NULL || array->itemCount == 0) { *iter = WANotFound; return NULL; } else { *iter = 0; return array->items[0]; } } void *WMArrayLast(WMArray * array, WMArrayIterator * iter) { if (array == NULL || array->itemCount == 0) { *iter = WANotFound; return NULL; } else { *iter = array->itemCount - 1; return array->items[*iter]; } } void *WMArrayNext(WMArray * array, WMArrayIterator * iter) { if (array == NULL) { *iter = WANotFound; return NULL; } if (*iter >= 0 && *iter < array->itemCount - 1) { return array->items[++(*iter)]; } else { *iter = WANotFound; return NULL; } } void *WMArrayPrevious(WMArray * array, WMArrayIterator * iter) { if (array == NULL) { *iter = WANotFound; return NULL; } if (*iter > 0 && *iter < array->itemCount) { return array->items[--(*iter)]; } else { *iter = WANotFound; return NULL; } } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/wscroller.c����������������������������������������������������������������0000644�0001750�0001750�00000052165�13431646201�014106� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ /* * Until FreeBSD gets their act together; * http://www.mail-archive.com/freebsd-hackers@freebsd.org/msg69469.html */ #if defined( FREEBSD ) # undef _XOPEN_SOURCE #endif #include "WINGsP.h" #include <math.h> /* undefine will disable the autoadjusting of the knob dimple to be * directly below the cursor * DOES NOT WORK */ #undef STRICT_NEXT_BEHAVIOUR #define AUTOSCROLL_INITIAL_DELAY 200 #define AUTOSCROLL_DELAY 40 char *WMScrollerDidScrollNotification = "WMScrollerDidScrollNotification"; typedef struct W_Scroller { W_Class widgetClass; W_View *view; void *clientData; WMAction *action; float knobProportion; float floatValue; WMHandlerID timerID; /* for continuous scrolling mode */ #ifndef STRICT_NEXT_BEHAVIOUR int dragPoint; /* point where the knob is being * dragged */ #endif struct { WMScrollArrowPosition arrowsPosition:4; unsigned int horizontal:1; WMScrollerPart hitPart:4; /* */ unsigned int documentFullyVisible:1; /* document is fully visible */ unsigned int prevSelected:1; unsigned int pushed:1; unsigned int incrDown:1; /* whether increment button is down */ unsigned int decrDown:1; unsigned int draggingKnob:1; unsigned int configured:1; unsigned int redrawPending:1; } flags; } Scroller; #define DEFAULT_ARROWS_POSITION WSAMinEnd #define BUTTON_SIZE ((SCROLLER_WIDTH) - 4) static void destroyScroller(Scroller * sPtr); static void paintScroller(Scroller * sPtr); static void willResizeScroller(W_ViewDelegate * self, WMView * view, unsigned int *width, unsigned int *height); static void handleEvents(XEvent * event, void *data); static void handleActionEvents(XEvent * event, void *data); static void handleMotion(Scroller * sPtr, int mouseX, int mouseY); W_ViewDelegate _ScrollerViewDelegate = { NULL, NULL, NULL, NULL, willResizeScroller }; WMScroller *WMCreateScroller(WMWidget * parent) { Scroller *sPtr; sPtr = wmalloc(sizeof(Scroller)); sPtr->widgetClass = WC_Scroller; sPtr->view = W_CreateView(W_VIEW(parent)); if (!sPtr->view) { wfree(sPtr); return NULL; } sPtr->view->self = sPtr; sPtr->view->delegate = &_ScrollerViewDelegate; sPtr->flags.documentFullyVisible = 1; WMCreateEventHandler(sPtr->view, ExposureMask | StructureNotifyMask | ClientMessageMask, handleEvents, sPtr); W_ResizeView(sPtr->view, SCROLLER_WIDTH, SCROLLER_WIDTH); sPtr->flags.arrowsPosition = DEFAULT_ARROWS_POSITION; WMCreateEventHandler(sPtr->view, ButtonPressMask | ButtonReleaseMask | EnterWindowMask | LeaveWindowMask | ButtonMotionMask, handleActionEvents, sPtr); sPtr->flags.hitPart = WSNoPart; sPtr->floatValue = 0.0; sPtr->knobProportion = 1.0; return sPtr; } void WMSetScrollerArrowsPosition(WMScroller * sPtr, WMScrollArrowPosition position) { sPtr->flags.arrowsPosition = position; if (sPtr->view->flags.realized) { paintScroller(sPtr); } } static void willResizeScroller(W_ViewDelegate * self, WMView * view, unsigned int *width, unsigned int *height) { WMScroller *sPtr = (WMScroller *) view->self; /* Parameter not used, but tell the compiler that it is ok */ (void) self; if (*width > *height) { sPtr->flags.horizontal = 1; *height = SCROLLER_WIDTH; } else { sPtr->flags.horizontal = 0; *width = SCROLLER_WIDTH; } } void WMSetScrollerAction(WMScroller * sPtr, WMAction * action, void *clientData) { CHECK_CLASS(sPtr, WC_Scroller); sPtr->action = action; sPtr->clientData = clientData; } void WMSetScrollerParameters(WMScroller * sPtr, float floatValue, float knobProportion) { /* * This value represents 1 pixel on a 4k wide screen, it makes * a good minimum; this ensure a non-null value to avoid * potential division-by-0. * Please note that there is another size check when drawing * the knob to make sure it will remain selectable. */ static const float min_knob_proportion = 1.0 / 4096.0; CHECK_CLASS(sPtr, WC_Scroller); assert(!isnan(floatValue)); if (floatValue < 0.0F) sPtr->floatValue = 0.0F; else if (floatValue > 1.0F) sPtr->floatValue = 1.0F; else sPtr->floatValue = floatValue; if (knobProportion <= min_knob_proportion) { sPtr->knobProportion = min_knob_proportion; sPtr->flags.documentFullyVisible = 0; } else if (knobProportion >= 1.0F) { sPtr->knobProportion = 1.0F; sPtr->flags.documentFullyVisible = 1; } else { sPtr->knobProportion = knobProportion; sPtr->flags.documentFullyVisible = 0; } if (sPtr->view->flags.realized) paintScroller(sPtr); /* WMPostNotificationName(WMScrollerDidScrollNotification, sPtr, NULL); */ } float WMGetScrollerKnobProportion(WMScroller * sPtr) { CHECK_CLASS(sPtr, WC_Scroller); return sPtr->knobProportion; } float WMGetScrollerValue(WMScroller * sPtr) { CHECK_CLASS(sPtr, WC_Scroller); return sPtr->floatValue; } WMScrollerPart WMGetScrollerHitPart(WMScroller * sPtr) { CHECK_CLASS(sPtr, WC_Scroller); return sPtr->flags.hitPart; } static void paintArrow(WMScroller * sPtr, Drawable d, int part) /* * part- 0 paints the decrement arrow, 1 the increment arrow */ { WMView *view = sPtr->view; WMScreen *scr = view->screen; int ofs; W_Pixmap *arrow; #ifndef DOUBLE_BUFFER GC gc = scr->lightGC; #endif if (part == 0) { /* decrement button */ if (sPtr->flags.horizontal) { if (sPtr->flags.arrowsPosition == WSAMaxEnd) { ofs = view->size.width - 2 * (BUTTON_SIZE + 1) - 1; } else { ofs = 2; } if (sPtr->flags.decrDown) arrow = scr->hiLeftArrow; else arrow = scr->leftArrow; } else { if (sPtr->flags.arrowsPosition == WSAMaxEnd) { ofs = view->size.height - 2 * (BUTTON_SIZE + 1) - 1; } else { ofs = 2; } if (sPtr->flags.decrDown) arrow = scr->hiUpArrow; else arrow = scr->upArrow; } #ifndef DOUBLE_BUFFER if (sPtr->flags.decrDown) gc = WMColorGC(scr->white); #endif } else { /* increment button */ if (sPtr->flags.horizontal) { if (sPtr->flags.arrowsPosition == WSAMaxEnd) { ofs = view->size.width - BUTTON_SIZE + 1 - 3; } else { ofs = 2 + BUTTON_SIZE + 1; } if (sPtr->flags.incrDown) arrow = scr->hiRightArrow; else arrow = scr->rightArrow; } else { if (sPtr->flags.arrowsPosition == WSAMaxEnd) { ofs = view->size.height - BUTTON_SIZE + 1 - 3; } else { ofs = 2 + BUTTON_SIZE + 1; } if (sPtr->flags.incrDown) arrow = scr->hiDownArrow; else arrow = scr->downArrow; } #ifndef DOUBLE_BUFFER if (sPtr->flags.incrDown) gc = scr->whiteGC; #endif } if (sPtr->flags.horizontal) { /* paint button */ #ifndef DOUBLE_BUFFER XFillRectangle(scr->display, d, gc, ofs + 1, 2 + 1, BUTTON_SIZE + 1 - 3, BUTTON_SIZE - 3); #else if ((!part && sPtr->flags.decrDown) || (part && sPtr->flags.incrDown)) XFillRectangle(scr->display, d, WMColorGC(scr->white), ofs + 1, 2 + 1, BUTTON_SIZE + 1 - 3, BUTTON_SIZE - 3); #endif /* DOUBLE_BUFFER */ W_DrawRelief(scr, d, ofs, 2, BUTTON_SIZE, BUTTON_SIZE, WRRaised); /* paint arrow */ XSetClipMask(scr->display, scr->clipGC, arrow->mask); XSetClipOrigin(scr->display, scr->clipGC, ofs + (BUTTON_SIZE - arrow->width) / 2, 2 + (BUTTON_SIZE - arrow->height) / 2); XCopyArea(scr->display, arrow->pixmap, d, scr->clipGC, 0, 0, arrow->width, arrow->height, ofs + (BUTTON_SIZE - arrow->width) / 2, 2 + (BUTTON_SIZE - arrow->height) / 2); } else { /* vertical */ /* paint button */ #ifndef DOUBLE_BUFFER XFillRectangle(scr->display, d, gc, 2 + 1, ofs + 1, BUTTON_SIZE - 3, BUTTON_SIZE + 1 - 3); #else if ((!part && sPtr->flags.decrDown) || (part && sPtr->flags.incrDown)) XFillRectangle(scr->display, d, WMColorGC(scr->white), 2 + 1, ofs + 1, BUTTON_SIZE - 3, BUTTON_SIZE + 1 - 3); #endif /* DOUBLE_BUFFER */ W_DrawRelief(scr, d, 2, ofs, BUTTON_SIZE, BUTTON_SIZE, WRRaised); /* paint arrow */ XSetClipMask(scr->display, scr->clipGC, arrow->mask); XSetClipOrigin(scr->display, scr->clipGC, 2 + (BUTTON_SIZE - arrow->width) / 2, ofs + (BUTTON_SIZE - arrow->height) / 2); XCopyArea(scr->display, arrow->pixmap, d, scr->clipGC, 0, 0, arrow->width, arrow->height, 2 + (BUTTON_SIZE - arrow->width) / 2, ofs + (BUTTON_SIZE - arrow->height) / 2); } } static int knobLength(Scroller * sPtr) { int tmp, length; if (sPtr->flags.horizontal) length = sPtr->view->size.width - 4; else length = sPtr->view->size.height - 4; if (sPtr->flags.arrowsPosition != WSANone) { length -= 2 * (BUTTON_SIZE + 1); } tmp = (int)((float)length * sPtr->knobProportion + 0.5F); /* keep minimum size */ if (tmp < BUTTON_SIZE) tmp = BUTTON_SIZE; return tmp; } static void paintScroller(Scroller * sPtr) { WMView *view = sPtr->view; WMScreen *scr = view->screen; #ifdef DOUBLE_BUFFER Pixmap d; #else Drawable d = view->window; #endif int length, ofs; float knobP, knobL; #ifdef DOUBLE_BUFFER d = XCreatePixmap(scr->display, view->window, view->size.width, view->size.height, scr->depth); XFillRectangle(scr->display, d, WMColorGC(scr->gray), 0, 0, view->size.width, view->size.height); #endif XDrawRectangle(scr->display, d, WMColorGC(scr->black), 0, 0, view->size.width - 1, view->size.height - 1); #ifndef DOUBLE_BUFFER XDrawRectangle(scr->display, d, WMColorGC(scr->gray), 1, 1, view->size.width - 3, view->size.height - 3); #endif if (sPtr->flags.horizontal) length = view->size.width - 4; else length = view->size.height - 4; if (sPtr->flags.documentFullyVisible) { XFillRectangle(scr->display, d, scr->stippleGC, 2, 2, view->size.width - 4, view->size.height - 4); } else { ofs = 2; if (sPtr->flags.arrowsPosition == WSAMaxEnd) { length -= (BUTTON_SIZE + 1) * 2; } else if (sPtr->flags.arrowsPosition == WSAMinEnd) { ofs += (BUTTON_SIZE + 1) * 2; length -= (BUTTON_SIZE + 1) * 2; } knobL = (float)knobLength(sPtr); knobP = sPtr->floatValue * ((float)length - knobL); if (sPtr->flags.horizontal) { /* before */ XFillRectangle(scr->display, d, scr->stippleGC, ofs, 2, (int)knobP, view->size.height - 4); /* knob */ #ifndef DOUBLE_BUFFER XFillRectangle(scr->display, d, scr->lightGC, ofs + (int)knobP + 2, 2 + 2, (int)knobL - 4, view->size.height - 4 - 4); #endif W_DrawRelief(scr, d, ofs + (int)knobP, 2, (int)knobL, view->size.height - 4, WRRaised); XCopyArea(scr->display, scr->scrollerDimple->pixmap, d, scr->copyGC, 0, 0, scr->scrollerDimple->width, scr->scrollerDimple->height, ofs + (int)knobP + ((int)knobL - scr->scrollerDimple->width - 1) / 2, (view->size.height - scr->scrollerDimple->height - 1) / 2); /* after */ if ((int)(knobP + knobL) < length) XFillRectangle(scr->display, d, scr->stippleGC, ofs + (int)(knobP + knobL), 2, length - (int)(knobP + knobL), view->size.height - 4); } else { /* before */ if (knobP > 0.0F) XFillRectangle(scr->display, d, scr->stippleGC, 2, ofs, view->size.width - 4, (int)knobP); /* knob */ #ifndef DOUBLE_BUFFER XFillRectangle(scr->display, d, scr->lightGC, 2 + 2, ofs + (int)knobP + 2, view->size.width - 4 - 4, (int)knobL - 4); #endif XCopyArea(scr->display, scr->scrollerDimple->pixmap, d, scr->copyGC, 0, 0, scr->scrollerDimple->width, scr->scrollerDimple->height, (view->size.width - scr->scrollerDimple->width - 1) / 2, ofs + (int)knobP + ((int)knobL - scr->scrollerDimple->height - 1) / 2); W_DrawRelief(scr, d, 2, ofs + (int)knobP, view->size.width - 4, (int)knobL, WRRaised); /* after */ if ((int)(knobP + knobL) < length) XFillRectangle(scr->display, d, scr->stippleGC, 2, ofs + (int)(knobP + knobL), view->size.width - 4, length - (int)(knobP + knobL)); } if (sPtr->flags.arrowsPosition != WSANone) { paintArrow(sPtr, d, 0); paintArrow(sPtr, d, 1); } } #ifdef DOUBLE_BUFFER XCopyArea(scr->display, d, view->window, scr->copyGC, 0, 0, view->size.width, view->size.height, 0, 0); XFreePixmap(scr->display, d); #endif } static void handleEvents(XEvent * event, void *data) { Scroller *sPtr = (Scroller *) data; CHECK_CLASS(data, WC_Scroller); switch (event->type) { case Expose: if (event->xexpose.count == 0) paintScroller(sPtr); break; case DestroyNotify: destroyScroller(sPtr); break; } } /* * locatePointInScroller- * Return the part of the scroller where the point is located. */ static WMScrollerPart locatePointInScroller(Scroller * sPtr, int x, int y, int alternate) { int width = sPtr->view->size.width; int height = sPtr->view->size.height; int c, p1, p2, p3, p4, p5, p6; int knobL, slotL; /* if there is no knob... */ if (sPtr->flags.documentFullyVisible) return WSKnobSlot; if (sPtr->flags.horizontal) c = x; else c = y; /* p1 p2 p3 p4 p5 p6 * | | |###########| |#####| | | * | < | > |###########| O |#####| < | > | * | | |###########| |#####| | | */ if (sPtr->flags.arrowsPosition == WSAMinEnd) { p1 = 18; p2 = 36; if (sPtr->flags.horizontal) { slotL = width - 36; p5 = width; } else { slotL = height - 36; p5 = height; } p6 = p5; } else if (sPtr->flags.arrowsPosition == WSAMaxEnd) { if (sPtr->flags.horizontal) { slotL = width - 36; p6 = width - 18; } else { slotL = height - 36; p6 = height - 18; } p5 = p6 - 18; p1 = p2 = 0; } else { /* no arrows */ p1 = p2 = 0; if (sPtr->flags.horizontal) { slotL = p5 = p6 = width; } else { slotL = p5 = p6 = height; } } knobL = knobLength(sPtr); p3 = p2 + (int)((float)(slotL - knobL) * sPtr->floatValue); p4 = p3 + knobL; /* uses a mix of the NS and Win ways of doing scroll page */ if (c <= p1) return alternate ? WSDecrementPage : WSDecrementLine; else if (c <= p2) return alternate ? WSIncrementPage : WSIncrementLine; else if (c <= p3) return WSDecrementPage; else if (c <= p4) return WSKnob; else if (c <= p5) return WSIncrementPage; else if (c <= p6) return alternate ? WSDecrementPage : WSDecrementLine; else return alternate ? WSIncrementPage : WSIncrementLine; } static void handlePush(Scroller * sPtr, int pushX, int pushY, int alternate) { WMScrollerPart part; int doAction = 0; part = locatePointInScroller(sPtr, pushX, pushY, alternate); sPtr->flags.hitPart = part; switch (part) { case WSIncrementLine: sPtr->flags.incrDown = 1; doAction = 1; break; case WSIncrementPage: doAction = 1; break; case WSDecrementLine: sPtr->flags.decrDown = 1; doAction = 1; break; case WSDecrementPage: doAction = 1; break; case WSKnob: sPtr->flags.draggingKnob = 1; #ifndef STRICT_NEXT_BEHAVIOUR if (sPtr->flags.horizontal) sPtr->dragPoint = pushX; else sPtr->dragPoint = pushY; { int length, knobP; int buttonsLen; if (sPtr->flags.arrowsPosition != WSANone) buttonsLen = 2 * (BUTTON_SIZE + 1); else buttonsLen = 0; if (sPtr->flags.horizontal) length = sPtr->view->size.width - 4 - buttonsLen; else length = sPtr->view->size.height - 4 - buttonsLen; knobP = (int)(sPtr->floatValue * (float)(length - knobLength(sPtr))); if (sPtr->flags.arrowsPosition == WSAMinEnd) sPtr->dragPoint -= 2 + buttonsLen + knobP; else sPtr->dragPoint -= 2 + knobP; } #endif /* STRICT_NEXT_BEHAVIOUR */ /* This does not seem necesary here since we don't know yet if the * knob will be dragged later. -Dan handleMotion(sPtr, pushX, pushY); */ break; case WSDecrementWheel: case WSIncrementWheel: case WSKnobSlot: case WSNoPart: /* dummy */ break; } if (doAction && sPtr->action) { (*sPtr->action) (sPtr, sPtr->clientData); WMPostNotificationName(WMScrollerDidScrollNotification, sPtr, NULL); } } static float floatValueForPoint(Scroller * sPtr, int point) { float floatValue = 0; float position; int slotOfs, slotLength, knobL; if (sPtr->flags.horizontal) slotLength = sPtr->view->size.width - 4; else slotLength = sPtr->view->size.height - 4; slotOfs = 2; if (sPtr->flags.arrowsPosition == WSAMaxEnd) { slotLength -= (BUTTON_SIZE + 1) * 2; } else if (sPtr->flags.arrowsPosition == WSAMinEnd) { slotOfs += (BUTTON_SIZE + 1) * 2; slotLength -= (BUTTON_SIZE + 1) * 2; } knobL = (float)knobLength(sPtr); #ifdef STRICT_NEXT_BEHAVIOUR if (point < slotOfs + knobL / 2) position = (float)(slotOfs + knobL / 2); else if (point > slotOfs + slotLength - knobL / 2) position = (float)(slotOfs + slotLength - knobL / 2); else position = (float)point; floatValue = (position - (float)(slotOfs + slotLength / 2)) / (float)(slotLength - knobL); #else /* Adjust the last point to lie inside the knob slot */ if (point < slotOfs) position = (float)slotOfs; else if (point > slotOfs + slotLength) position = (float)(slotOfs + slotLength); else position = (float)point; /* Compute the float value */ floatValue = (position - (float)slotOfs) / (float)(slotLength - knobL); #endif assert(!isnan(floatValue)); return floatValue; } static void handleMotion(Scroller * sPtr, int mouseX, int mouseY) { if (sPtr->flags.draggingKnob) { float newFloatValue; int point; if (sPtr->flags.horizontal) { point = mouseX; } else { point = mouseY; } #ifndef STRICT_NEXT_BEHAVIOUR point -= sPtr->dragPoint; #endif newFloatValue = floatValueForPoint(sPtr, point); WMSetScrollerParameters(sPtr, newFloatValue, sPtr->knobProportion); if (sPtr->action) { (*sPtr->action) (sPtr, sPtr->clientData); WMPostNotificationName(WMScrollerDidScrollNotification, sPtr, NULL); } } else { int part; part = locatePointInScroller(sPtr, mouseX, mouseY, False); sPtr->flags.hitPart = part; if (part == WSIncrementLine && sPtr->flags.decrDown) { sPtr->flags.decrDown = 0; sPtr->flags.incrDown = 1; } else if (part == WSDecrementLine && sPtr->flags.incrDown) { sPtr->flags.incrDown = 0; sPtr->flags.decrDown = 1; } else if (part != WSIncrementLine && part != WSDecrementLine) { sPtr->flags.incrDown = 0; sPtr->flags.decrDown = 0; } } } static void autoScroll(void *clientData) { Scroller *sPtr = (Scroller *) clientData; if (sPtr->action) { (*sPtr->action) (sPtr, sPtr->clientData); WMPostNotificationName(WMScrollerDidScrollNotification, sPtr, NULL); } sPtr->timerID = WMAddTimerHandler(AUTOSCROLL_DELAY, autoScroll, clientData); } static void handleActionEvents(XEvent * event, void *data) { Scroller *sPtr = (Scroller *) data; int wheelDecrement, wheelIncrement; int id, dd; /* check if we're really dealing with a scroller, as something * might have gone wrong in the event dispatching stuff */ CHECK_CLASS(sPtr, WC_Scroller); id = sPtr->flags.incrDown; dd = sPtr->flags.decrDown; switch (event->type) { case EnterNotify: break; case LeaveNotify: if (sPtr->timerID) { WMDeleteTimerHandler(sPtr->timerID); sPtr->timerID = NULL; } sPtr->flags.incrDown = 0; sPtr->flags.decrDown = 0; break; case ButtonPress: /* FIXME: change Mod1Mask with something else */ if (sPtr->flags.documentFullyVisible) break; if (sPtr->flags.horizontal) { wheelDecrement = WINGsConfiguration.mouseWheelDown; wheelIncrement = WINGsConfiguration.mouseWheelUp; } else { wheelDecrement = WINGsConfiguration.mouseWheelUp; wheelIncrement = WINGsConfiguration.mouseWheelDown; } if (event->xbutton.button == wheelDecrement) { if (event->xbutton.state & ControlMask) { sPtr->flags.hitPart = WSDecrementPage; } else if (event->xbutton.state & ShiftMask) { sPtr->flags.hitPart = WSDecrementLine; } else { sPtr->flags.hitPart = WSDecrementWheel; } if (sPtr->action) { (*sPtr->action) (sPtr, sPtr->clientData); WMPostNotificationName(WMScrollerDidScrollNotification, sPtr, NULL); } } else if (event->xbutton.button == wheelIncrement) { if (event->xbutton.state & ControlMask) { sPtr->flags.hitPart = WSIncrementPage; } else if (event->xbutton.state & ShiftMask) { sPtr->flags.hitPart = WSIncrementLine; } else { sPtr->flags.hitPart = WSIncrementWheel; } if (sPtr->action) { (*sPtr->action) (sPtr, sPtr->clientData); WMPostNotificationName(WMScrollerDidScrollNotification, sPtr, NULL); } } else { handlePush(sPtr, event->xbutton.x, event->xbutton.y, (event->xbutton.state & Mod1Mask) || event->xbutton.button == Button2); /* continue scrolling if pushed on the buttons */ if (sPtr->flags.hitPart == WSIncrementLine || sPtr->flags.hitPart == WSDecrementLine) { sPtr->timerID = WMAddTimerHandler(AUTOSCROLL_INITIAL_DELAY, autoScroll, sPtr); } } break; case ButtonRelease: if (sPtr->flags.draggingKnob) { if (sPtr->action) { (*sPtr->action) (sPtr, sPtr->clientData); WMPostNotificationName(WMScrollerDidScrollNotification, sPtr, NULL); } } if (sPtr->timerID) { WMDeleteTimerHandler(sPtr->timerID); sPtr->timerID = NULL; } sPtr->flags.incrDown = 0; sPtr->flags.decrDown = 0; sPtr->flags.draggingKnob = 0; break; case MotionNotify: handleMotion(sPtr, event->xbutton.x, event->xbutton.y); if (sPtr->timerID && sPtr->flags.hitPart != WSIncrementLine && sPtr->flags.hitPart != WSDecrementLine) { WMDeleteTimerHandler(sPtr->timerID); sPtr->timerID = NULL; } break; } if (id != sPtr->flags.incrDown || dd != sPtr->flags.decrDown) paintScroller(sPtr); } static void destroyScroller(Scroller * sPtr) { /* we don't want autoscroll try to scroll a freed widget */ if (sPtr->timerID) { WMDeleteTimerHandler(sPtr->timerID); } wfree(sPtr); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/wlabel.c�������������������������������������������������������������������0000644�0001750�0001750�00000007770�13431646201�013342� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include "WINGsP.h" typedef struct W_Label { W_Class widgetClass; W_View *view; char *caption; WMColor *textColor; WMFont *font; /* if NULL, use default */ W_Pixmap *image; struct { WMReliefType relief:3; WMImagePosition imagePosition:4; WMAlignment alignment:2; unsigned int noWrap:1; unsigned int redrawPending:1; } flags; } Label; #define DEFAULT_WIDTH 60 #define DEFAULT_HEIGHT 14 #define DEFAULT_ALIGNMENT WALeft #define DEFAULT_RELIEF WRFlat #define DEFAULT_IMAGE_POSITION WIPNoImage static void destroyLabel(Label * lPtr); static void paintLabel(Label * lPtr); static void handleEvents(XEvent * event, void *data); WMLabel *WMCreateLabel(WMWidget * parent) { Label *lPtr; lPtr = wmalloc(sizeof(Label)); lPtr->widgetClass = WC_Label; lPtr->view = W_CreateView(W_VIEW(parent)); if (!lPtr->view) { wfree(lPtr); return NULL; } lPtr->view->self = lPtr; lPtr->textColor = WMRetainColor(lPtr->view->screen->black); WMCreateEventHandler(lPtr->view, ExposureMask | StructureNotifyMask, handleEvents, lPtr); W_ResizeView(lPtr->view, DEFAULT_WIDTH, DEFAULT_HEIGHT); lPtr->flags.alignment = DEFAULT_ALIGNMENT; lPtr->flags.relief = DEFAULT_RELIEF; lPtr->flags.imagePosition = DEFAULT_IMAGE_POSITION; lPtr->flags.noWrap = 1; return lPtr; } void WMSetLabelImage(WMLabel * lPtr, WMPixmap * image) { if (lPtr->image != NULL) WMReleasePixmap(lPtr->image); if (image) lPtr->image = WMRetainPixmap(image); else lPtr->image = NULL; if (lPtr->view->flags.realized) { paintLabel(lPtr); } } WMPixmap *WMGetLabelImage(WMLabel * lPtr) { return lPtr->image; } char *WMGetLabelText(WMLabel * lPtr) { return lPtr->caption; } void WMSetLabelImagePosition(WMLabel * lPtr, WMImagePosition position) { lPtr->flags.imagePosition = position; if (lPtr->view->flags.realized) { paintLabel(lPtr); } } void WMSetLabelTextAlignment(WMLabel * lPtr, WMAlignment alignment) { lPtr->flags.alignment = alignment; if (lPtr->view->flags.realized) { paintLabel(lPtr); } } void WMSetLabelRelief(WMLabel * lPtr, WMReliefType relief) { lPtr->flags.relief = relief; if (lPtr->view->flags.realized) { paintLabel(lPtr); } } void WMSetLabelText(WMLabel * lPtr, const char *text) { if (lPtr->caption) wfree(lPtr->caption); if (text != NULL) { lPtr->caption = wstrdup(text); } else { lPtr->caption = NULL; } if (lPtr->view->flags.realized) { paintLabel(lPtr); } } WMFont *WMGetLabelFont(WMLabel * lPtr) { return lPtr->font; } void WMSetLabelFont(WMLabel * lPtr, WMFont * font) { if (lPtr->font != NULL) WMReleaseFont(lPtr->font); if (font) lPtr->font = WMRetainFont(font); else lPtr->font = NULL; if (lPtr->view->flags.realized) { paintLabel(lPtr); } } void WMSetLabelTextColor(WMLabel * lPtr, WMColor * color) { if (lPtr->textColor) WMReleaseColor(lPtr->textColor); lPtr->textColor = WMRetainColor(color); if (lPtr->view->flags.realized) { paintLabel(lPtr); } } void WMSetLabelWraps(WMLabel * lPtr, Bool flag) { flag = ((flag == 0) ? 0 : 1); if (lPtr->flags.noWrap != !flag) { lPtr->flags.noWrap = !flag; if (lPtr->view->flags.realized) paintLabel(lPtr); } } static void paintLabel(Label * lPtr) { W_Screen *scrPtr = lPtr->view->screen; W_PaintTextAndImage(lPtr->view, !lPtr->flags.noWrap, lPtr->textColor ? lPtr->textColor : scrPtr->black, (lPtr->font != NULL ? lPtr->font : scrPtr->normalFont), lPtr->flags.relief, lPtr->caption, lPtr->flags.alignment, lPtr->image, lPtr->flags.imagePosition, NULL, 0); } static void handleEvents(XEvent * event, void *data) { Label *lPtr = (Label *) data; CHECK_CLASS(data, WC_Label); switch (event->type) { case Expose: if (event->xexpose.count != 0) break; paintLabel(lPtr); break; case DestroyNotify: destroyLabel(lPtr); break; } } static void destroyLabel(Label * lPtr) { if (lPtr->textColor) WMReleaseColor(lPtr->textColor); if (lPtr->caption) wfree(lPtr->caption); if (lPtr->font) WMReleaseFont(lPtr->font); if (lPtr->image) WMReleasePixmap(lPtr->image); wfree(lPtr); } ��������WindowMaker-0.95.9/WINGs/wballoon.c�����������������������������������������������������������������0000644�0001750�0001750�00000024017�13431646201�013702� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include "wconfig.h" #include "WINGsP.h" #ifdef USE_XSHAPE #include <X11/extensions/shape.h> #endif typedef struct W_Balloon { W_View *view; WMHashTable *table; /* Table from view ptr to text */ WMColor *backColor; WMColor *textColor; WMFont *font; WMHandlerID timer; /* timer for showing balloon */ WMHandlerID noDelayTimer; int delay; Window forWindow; /* window for which the balloon * is being show in the moment */ struct { WMAlignment alignment:2; unsigned enabled:1; unsigned noDelay:1; } flags; } Balloon; #define DEFAULT_WIDTH 60 #define DEFAULT_HEIGHT 14 #define DEFAULT_ALIGNMENT WALeft #define DEFAULT_DELAY 500 #define NO_DELAY_DELAY 150 static void destroyBalloon(Balloon * bPtr); static void handleEvents(XEvent * event, void *data); static void showText(Balloon * bPtr, int x, int y, int w, int h, const char *text); struct W_Balloon *W_CreateBalloon(WMScreen * scr) { Balloon *bPtr; bPtr = wmalloc(sizeof(Balloon)); bPtr->view = W_CreateUnmanagedTopView(scr); if (!bPtr->view) { wfree(bPtr); return NULL; } bPtr->view->self = bPtr; bPtr->textColor = WMRetainColor(bPtr->view->screen->black); WMCreateEventHandler(bPtr->view, StructureNotifyMask, handleEvents, bPtr); W_ResizeView(bPtr->view, DEFAULT_WIDTH, DEFAULT_HEIGHT); bPtr->flags.alignment = DEFAULT_ALIGNMENT; bPtr->table = WMCreateHashTable(WMIntHashCallbacks); bPtr->delay = DEFAULT_DELAY; bPtr->flags.enabled = 1; return bPtr; } void WMSetBalloonTextAlignment(WMScreen * scr, WMAlignment alignment) { scr->balloon->flags.alignment = alignment; } void WMSetBalloonTextForView(const char *text, WMView * view) { char *oldText = NULL; WMScreen *scr = view->screen; if (text) { oldText = WMHashInsert(scr->balloon->table, view, wstrdup(text)); } else { oldText = WMHashGet(scr->balloon->table, view); WMHashRemove(scr->balloon->table, view); } if (oldText) { wfree(oldText); } } void WMSetBalloonFont(WMScreen * scr, WMFont * font) { Balloon *bPtr = scr->balloon; if (bPtr->font != NULL) WMReleaseFont(bPtr->font); if (font) bPtr->font = WMRetainFont(font); else bPtr->font = NULL; } void WMSetBalloonTextColor(WMScreen * scr, WMColor * color) { Balloon *bPtr = scr->balloon; if (bPtr->textColor) WMReleaseColor(bPtr->textColor); bPtr->textColor = WMRetainColor(color); } void WMSetBalloonDelay(WMScreen * scr, int delay) { scr->balloon->delay = delay; } void WMSetBalloonEnabled(WMScreen * scr, Bool flag) { scr->balloon->flags.enabled = ((flag == 0) ? 0 : 1); W_UnmapView(scr->balloon->view); } static void clearNoDelay(void *data) { Balloon *bPtr = (Balloon *) data; bPtr->flags.noDelay = 0; bPtr->noDelayTimer = NULL; } void W_BalloonHandleLeaveView(WMView * view) { Balloon *bPtr = view->screen->balloon; if (bPtr->forWindow == view->window) { if (bPtr->view->flags.mapped) { W_UnmapView(bPtr->view); bPtr->noDelayTimer = WMAddTimerHandler(NO_DELAY_DELAY, clearNoDelay, bPtr); } if (bPtr->timer) WMDeleteTimerHandler(bPtr->timer); bPtr->timer = NULL; bPtr->forWindow = None; } } /* * botar balao perto do cursor * so mapear balao se o mouse ficar parado pelo delay * */ static void showBalloon(void *data) { char *text; WMView *view = (WMView *) data; Balloon *bPtr = view->screen->balloon; int x, y; Window foo; bPtr->timer = NULL; text = WMHashGet(bPtr->table, view); if (!text) return; XTranslateCoordinates(view->screen->display, view->window, view->screen->rootWin, 0, 0, &x, &y, &foo); if (!bPtr->view->flags.realized) W_RealizeView(bPtr->view); showText(bPtr, x, y, view->size.width, view->size.height, text); bPtr->flags.noDelay = 1; } void W_BalloonHandleEnterView(WMView * view) { Balloon *bPtr = view->screen->balloon; char *text; if (!bPtr->flags.enabled) return; text = WMHashGet(bPtr->table, view); if (!text) { if (bPtr->view->flags.realized) W_UnmapView(bPtr->view); return; } if (bPtr->timer) WMDeleteTimerHandler(bPtr->timer); bPtr->timer = NULL; if (bPtr->noDelayTimer) WMDeleteTimerHandler(bPtr->noDelayTimer); bPtr->noDelayTimer = NULL; bPtr->forWindow = view->window; if (bPtr->flags.noDelay) { bPtr->timer = NULL; showBalloon(view); } else { bPtr->timer = WMAddTimerHandler(bPtr->delay, showBalloon, view); } } #define TOP 0 #define BOTTOM 1 #define LEFT 0 #define RIGHT 2 #define SPACE 12 static void drawBalloon(WMScreen * scr, Pixmap bitmap, Pixmap pix, int x, int y, int w, int h, int side) { Display *dpy = scr->display; WMColor *white = WMWhiteColor(scr); WMColor *black = WMBlackColor(scr); GC bgc = scr->monoGC; GC gc = WMColorGC(white); int rad = h * 3 / 10; XPoint pt[3], ipt[3]; int w1; /* outline */ XSetForeground(dpy, bgc, 1); XFillArc(dpy, bitmap, bgc, x, y, rad, rad, 90 * 64, 90 * 64); XFillArc(dpy, bitmap, bgc, x, y + h - 1 - rad, rad, rad, 180 * 64, 90 * 64); XFillArc(dpy, bitmap, bgc, x + w - 1 - rad, y, rad, rad, 0 * 64, 90 * 64); XFillArc(dpy, bitmap, bgc, x + w - 1 - rad, y + h - 1 - rad, rad, rad, 270 * 64, 90 * 64); XFillRectangle(dpy, bitmap, bgc, x, y + rad / 2, w, h - rad); XFillRectangle(dpy, bitmap, bgc, x + rad / 2, y, w - rad, h); /* interior */ XFillArc(dpy, pix, gc, x + 1, y + 1, rad, rad, 90 * 64, 90 * 64); XFillArc(dpy, pix, gc, x + 1, y + h - 2 - rad, rad, rad, 180 * 64, 90 * 64); XFillArc(dpy, pix, gc, x + w - 2 - rad, y + 1, rad, rad, 0 * 64, 90 * 64); XFillArc(dpy, pix, gc, x + w - 2 - rad, y + h - 2 - rad, rad, rad, 270 * 64, 90 * 64); XFillRectangle(dpy, pix, gc, x + 1, y + 1 + rad / 2, w - 2, h - 2 - rad); XFillRectangle(dpy, pix, gc, x + 1 + rad / 2, y + 1, w - 2 - rad, h - 2); if (side & BOTTOM) { pt[0].y = y + h - 1; pt[1].y = y + h - 1 + SPACE; pt[2].y = y + h - 1; ipt[0].y = pt[0].y - 1; ipt[1].y = pt[1].y - 1; ipt[2].y = pt[2].y - 1; } else { pt[0].y = y; pt[1].y = y - SPACE; pt[2].y = y; ipt[0].y = pt[0].y + 1; ipt[1].y = pt[1].y + 1; ipt[2].y = pt[2].y + 1; } /*w1 = WMAX(h, 24); */ w1 = WMAX(h, 21); if (side & RIGHT) { pt[0].x = x + w - w1 + 2 * w1 / 16; pt[1].x = x + w - w1 + 11 * w1 / 16; pt[2].x = x + w - w1 + 7 * w1 / 16; ipt[0].x = x + 1 + w - w1 + 2 * (w1 - 1) / 16; ipt[1].x = x + 1 + w - w1 + 11 * (w1 - 1) / 16; ipt[2].x = x + 1 + w - w1 + 7 * (w1 - 1) / 16; /*ipt[0].x = pt[0].x+1; ipt[1].x = pt[1].x; ipt[2].x = pt[2].x; */ } else { pt[0].x = x + w1 - 2 * w1 / 16; pt[1].x = x + w1 - 11 * w1 / 16; pt[2].x = x + w1 - 7 * w1 / 16; ipt[0].x = x - 1 + w1 - 2 * (w1 - 1) / 16; ipt[1].x = x - 1 + w1 - 11 * (w1 - 1) / 16; ipt[2].x = x - 1 + w1 - 7 * (w1 - 1) / 16; /*ipt[0].x = pt[0].x-1; ipt[1].x = pt[1].x; ipt[2].x = pt[2].x; */ } XFillPolygon(dpy, bitmap, bgc, pt, 3, Convex, CoordModeOrigin); XFillPolygon(dpy, pix, gc, ipt, 3, Convex, CoordModeOrigin); /* fix outline */ XDrawLines(dpy, pix, WMColorGC(black), pt, 3, CoordModeOrigin); if (side & RIGHT) { pt[0].x++; pt[2].x--; } else { pt[0].x--; pt[2].x++; } XDrawLines(dpy, pix, WMColorGC(black), pt, 3, CoordModeOrigin); WMReleaseColor(white); WMReleaseColor(black); } static Pixmap makePixmap(WMScreen * scr, int width, int height, int side, Pixmap * mask) { Display *dpy = WMScreenDisplay(scr); Pixmap bitmap; Pixmap pixmap; int x, y; WMColor *black = WMBlackColor(scr); bitmap = XCreatePixmap(dpy, scr->rootWin, width + SPACE, height + SPACE, 1); XSetForeground(dpy, scr->monoGC, 0); XFillRectangle(dpy, bitmap, scr->monoGC, 0, 0, width + SPACE, height + SPACE); pixmap = XCreatePixmap(dpy, scr->rootWin, width + SPACE, height + SPACE, scr->depth); XFillRectangle(dpy, pixmap, WMColorGC(black), 0, 0, width + SPACE, height + SPACE); if (side & BOTTOM) { y = 0; } else { y = SPACE; } x = 0; drawBalloon(scr, bitmap, pixmap, x, y, width, height, side); *mask = bitmap; WMReleaseColor(black); return pixmap; } static void showText(Balloon * bPtr, int x, int y, int w, int h, const char *text) { WMScreen *scr = bPtr->view->screen; Display *dpy = WMScreenDisplay(scr); int width; int height; Pixmap pixmap; Pixmap mask; WMFont *font = bPtr->font ? bPtr->font : scr->normalFont; int textHeight; int side = 0; int ty; int bx, by; { int w; const char *ptr, *ptr2; ptr2 = ptr = text; width = 0; while (ptr && ptr2) { ptr2 = strchr(ptr, '\n'); if (ptr2) { w = WMWidthOfString(font, ptr, ptr2 - ptr); } else { w = WMWidthOfString(font, ptr, strlen(ptr)); } if (w > width) width = w; ptr = ptr2 + 1; } } width += 16; textHeight = W_GetTextHeight(font, text, width, False); height = textHeight + 4; if (height < 16) height = 16; if (width < height) width = height; if (x + width > scr->rootView->size.width) { side = RIGHT; bx = x - width + w / 2; if (bx < 0) bx = 0; } else { side = LEFT; bx = x + w / 2; } if (bx + width > scr->rootView->size.width) bx = scr->rootView->size.width - width; if (y - (height + SPACE) < 0) { side |= TOP; by = y + h - 1; ty = SPACE; } else { side |= BOTTOM; by = y - (height + SPACE); ty = 0; } pixmap = makePixmap(scr, width, height, side, &mask); W_PaintText(bPtr->view, pixmap, font, 8, ty + (height - textHeight) / 2, width, bPtr->flags.alignment, bPtr->textColor ? bPtr->textColor : scr->black, False, text, strlen(text)); XSetWindowBackgroundPixmap(dpy, bPtr->view->window, pixmap); W_ResizeView(bPtr->view, width, height + SPACE); XFreePixmap(dpy, pixmap); #ifdef USE_XSHAPE XShapeCombineMask(dpy, bPtr->view->window, ShapeBounding, 0, 0, mask, ShapeSet); #endif XFreePixmap(dpy, mask); W_MoveView(bPtr->view, bx, by); W_MapView(bPtr->view); } static void handleEvents(XEvent * event, void *data) { Balloon *bPtr = (Balloon *) data; switch (event->type) { case DestroyNotify: destroyBalloon(bPtr); break; } } static void destroyBalloon(Balloon * bPtr) { WMHashEnumerator e; char *str; e = WMEnumerateHashTable(bPtr->table); while ((str = WMNextHashEnumeratorItem(&e))) { wfree(str); } WMFreeHashTable(bPtr->table); if (bPtr->textColor) WMReleaseColor(bPtr->textColor); if (bPtr->font) WMReleaseFont(bPtr->font); wfree(bPtr); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/wevent.c�������������������������������������������������������������������0000644�0001750�0001750�00000026110�13431646201�013371� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ /* * This event handling stuff was inspired on Tk. */ #include "WINGsP.h" /* table to map event types to event masks */ static const unsigned long eventMasks[] = { 0, 0, KeyPressMask, /* KeyPress */ KeyReleaseMask, /* KeyRelease */ ButtonPressMask, /* ButtonPress */ ButtonReleaseMask, /* ButtonRelease */ PointerMotionMask | PointerMotionHintMask | ButtonMotionMask | Button1MotionMask | Button2MotionMask | Button3MotionMask | Button4MotionMask | Button5MotionMask, /* MotionNotify */ EnterWindowMask, /* EnterNotify */ LeaveWindowMask, /* LeaveNotify */ FocusChangeMask, /* FocusIn */ FocusChangeMask, /* FocusOut */ KeymapStateMask, /* KeymapNotify */ ExposureMask, /* Expose */ ExposureMask, /* GraphicsExpose */ ExposureMask, /* NoExpose */ VisibilityChangeMask, /* VisibilityNotify */ SubstructureNotifyMask, /* CreateNotify */ StructureNotifyMask, /* DestroyNotify */ StructureNotifyMask, /* UnmapNotify */ StructureNotifyMask, /* MapNotify */ SubstructureRedirectMask, /* MapRequest */ StructureNotifyMask, /* ReparentNotify */ StructureNotifyMask, /* ConfigureNotify */ SubstructureRedirectMask, /* ConfigureRequest */ StructureNotifyMask, /* GravityNotify */ ResizeRedirectMask, /* ResizeRequest */ StructureNotifyMask, /* CirculateNotify */ SubstructureRedirectMask, /* CirculateRequest */ PropertyChangeMask, /* PropertyNotify */ 0, /* SelectionClear */ 0, /* SelectionRequest */ 0, /* SelectionNotify */ ColormapChangeMask, /* ColormapNotify */ ClientMessageMask, /* ClientMessage */ 0, /* Mapping Notify */ }; /* hook for other toolkits or wmaker process their events */ static WMEventHook *extraEventHandler = NULL; /* * WMCreateEventHandler-- * Create an event handler and put it in the event handler list for the * view. If the same callback and clientdata are already used in another * handler, the masks are OR'ed. * */ void WMCreateEventHandler(WMView * view, unsigned long mask, WMEventProc * eventProc, void *clientData) { W_EventHandler *hPtr; WMArrayIterator iter; WM_ITERATE_ARRAY(view->eventHandlers, hPtr, iter) { if (hPtr->clientData == clientData && hPtr->proc == eventProc) { hPtr->eventMask |= mask; return; } } hPtr = wmalloc(sizeof(W_EventHandler)); /* select events for window */ hPtr->eventMask = mask; hPtr->proc = eventProc; hPtr->clientData = clientData; WMAddToArray(view->eventHandlers, hPtr); } static int matchHandler(const void *item, const void *cdata) { const W_EventHandler *h1 = item; const W_EventHandler *h2 = cdata; return ((h1->eventMask == h2->eventMask) && (h1->proc == h2->proc) && (h1->clientData == h2->clientData)); } /* * WMDeleteEventHandler-- * Delete event handler matching arguments from windows * event handler list. * */ void WMDeleteEventHandler(WMView * view, unsigned long mask, WMEventProc * eventProc, void *clientData) { W_EventHandler tmp; tmp.eventMask = mask; tmp.proc = eventProc; tmp.clientData = clientData; WMRemoveFromArrayMatching(view->eventHandlers, matchHandler, (void *)&tmp); } static Time getEventTime(WMScreen * screen, XEvent * event) { switch (event->type) { case ButtonPress: case ButtonRelease: return event->xbutton.time; case KeyPress: case KeyRelease: return event->xkey.time; case MotionNotify: return event->xmotion.time; case EnterNotify: case LeaveNotify: return event->xcrossing.time; case PropertyNotify: return event->xproperty.time; case SelectionClear: return event->xselectionclear.time; case SelectionRequest: return event->xselectionrequest.time; case SelectionNotify: return event->xselection.time; default: return screen->lastEventTime; } } void W_CallDestroyHandlers(W_View * view) { XEvent event; WMArrayIterator iter; W_EventHandler *hPtr; event.type = DestroyNotify; event.xdestroywindow.window = view->window; event.xdestroywindow.event = view->window; WM_ITERATE_ARRAY(view->eventHandlers, hPtr, iter) { if (hPtr->eventMask & StructureNotifyMask) { (*hPtr->proc) (&event, hPtr->clientData); } } } void WMSetViewNextResponder(WMView * view, WMView * responder) { /* set the widget to receive keyboard events that aren't handled * by this widget */ view->nextResponder = responder; } void WMRelayToNextResponder(WMView * view, XEvent * event) { unsigned long mask = eventMasks[event->xany.type]; if (view->nextResponder) { WMView *next = view->nextResponder; W_EventHandler *hPtr; WMArrayIterator iter; WM_ITERATE_ARRAY(next->eventHandlers, hPtr, iter) { if ((hPtr->eventMask & mask)) { (*hPtr->proc) (event, hPtr->clientData); } } } } int WMHandleEvent(XEvent * event) { W_EventHandler *hPtr; W_View *view, *toplevel; unsigned long mask; Window window; WMArrayIterator iter; if (event->type == MappingNotify) { XRefreshKeyboardMapping(&event->xmapping); return True; } if (XFilterEvent(event, None) == True) { return False; } mask = eventMasks[event->xany.type]; window = event->xany.window; /* diferentiate SubstructureNotify with StructureNotify */ if (mask == StructureNotifyMask) { if (event->xmap.event != event->xmap.window) { mask = SubstructureNotifyMask; window = event->xmap.event; } } view = W_GetViewForXWindow(event->xany.display, window); if (!view) { if (extraEventHandler) (extraEventHandler) (event); return False; } view->screen->lastEventTime = getEventTime(view->screen, event); toplevel = W_TopLevelOfView(view); if (event->type == SelectionNotify || event->type == SelectionClear || event->type == SelectionRequest) { /* handle selection related events */ W_HandleSelectionEvent(event); } /* if it's a key event, redispatch it to the focused control */ if (mask & (KeyPressMask | KeyReleaseMask)) { W_View *focused = W_FocusedViewOfToplevel(toplevel); if (focused) { view = focused; } } /* compress Motion events */ if (event->type == MotionNotify && !view->flags.dontCompressMotion) { while (XPending(event->xmotion.display)) { XEvent ev; XPeekEvent(event->xmotion.display, &ev); if (ev.type == MotionNotify && event->xmotion.window == ev.xmotion.window && event->xmotion.subwindow == ev.xmotion.subwindow) { /* replace events */ XNextEvent(event->xmotion.display, event); } else break; } } /* compress expose events */ if (event->type == Expose && !view->flags.dontCompressExpose) { while (XCheckTypedWindowEvent(event->xexpose.display, view->window, Expose, event)) ; } if (view->screen->modalLoop && toplevel != view->screen->modalView && !toplevel->flags.worksWhenModal) { if (event->type == KeyPress || event->type == KeyRelease || event->type == MotionNotify || event->type == ButtonPress || event->type == ButtonRelease || event->type == FocusIn || event->type == FocusOut) { return True; } } /* do balloon stuffs */ if (event->type == EnterNotify) W_BalloonHandleEnterView(view); else if (event->type == LeaveNotify) W_BalloonHandleLeaveView(view); /* This is a hack. It will make the panel be secure while * the event handlers are handled, as some event handler * might destroy the widget. */ W_RetainView(toplevel); WM_ITERATE_ARRAY(view->eventHandlers, hPtr, iter) { if ((hPtr->eventMask & mask)) { (*hPtr->proc) (event, hPtr->clientData); } } #if 0 /* pass the event to the top level window of the widget */ /* TODO: change this to a responder chain */ if (view->parent != NULL) { vPtr = view; while (vPtr->parent != NULL) vPtr = vPtr->parent; WM_ITERATE_ARRAY(vPtr->eventHandlers, hPtr, iter) { if (hPtr->eventMask & mask) { (*hPtr->proc) (event, hPtr->clientData); } } } #endif /* save button click info to track double-clicks */ if (view->screen->ignoreNextDoubleClick) { view->screen->ignoreNextDoubleClick = 0; } else { if (event->type == ButtonPress) { view->screen->lastClickWindow = event->xbutton.window; view->screen->lastClickTime = event->xbutton.time; } } if (event->type == ClientMessage) { /* must be handled at the end, for such message can destroy the view */ W_HandleDNDClientMessage(toplevel, &event->xclient); } W_ReleaseView(toplevel); return True; } int WMIsDoubleClick(XEvent * event) { W_View *view; if (event->type != ButtonPress) return False; view = W_GetViewForXWindow(event->xany.display, event->xbutton.window); if (!view) return False; if (view->screen->lastClickWindow != event->xbutton.window) return False; if (event->xbutton.time - view->screen->lastClickTime < WINGsConfiguration.doubleClickDelay) { view->screen->lastClickTime = 0; view->screen->lastClickWindow = None; view->screen->ignoreNextDoubleClick = 1; return True; } else return False; } /* * Check for X and input events. If X events are present input events will * not be checked. * * Return value: True if a X event is available or any input event was * processed, false otherwise (including return because of * some timer handler expired). * * If waitForInput is False, it will just peek for available input and return * without processing. Return vaue will be True if input is available. * * If waitForInput is True, it will wait until an input event arrives on the * registered input handlers and ConnectionNumber(dpy), or will return when * a timer handler expires if no input event arrived until then. */ static Bool waitForEvent(Display * dpy, unsigned long xeventmask, Bool waitForInput) { XSync(dpy, False); if (xeventmask == 0) { if (XPending(dpy)) return True; } else { XEvent ev; if (XCheckMaskEvent(dpy, xeventmask, &ev)) { XPutBackEvent(dpy, &ev); return True; } } return W_HandleInputEvents(waitForInput, ConnectionNumber(dpy)); } void WMNextEvent(Display * dpy, XEvent * event) { /* Check any expired timers */ W_CheckTimerHandlers(); while (XPending(dpy) == 0) { /* Do idle and timer stuff while there are no input or X events */ while (!waitForEvent(dpy, 0, False) && W_CheckIdleHandlers()) { /* dispatch timer events */ W_CheckTimerHandlers(); } /* * Make sure that new events did not arrive while we were doing * timer/idle stuff. Or we might block forever waiting for * an event that already arrived. */ /* wait for something to happen or a timer to expire */ waitForEvent(dpy, 0, True); /* Check any expired timers */ W_CheckTimerHandlers(); } XNextEvent(dpy, event); } void WMMaskEvent(Display * dpy, long mask, XEvent * event) { /* Check any expired timers */ W_CheckTimerHandlers(); while (!XCheckMaskEvent(dpy, mask, event)) { /* Do idle and timer stuff while there are no input or X events */ while (!waitForEvent(dpy, mask, False) && W_CheckIdleHandlers()) { W_CheckTimerHandlers(); } if (XCheckMaskEvent(dpy, mask, event)) return; /* Wait for input on the X connection socket or another input handler */ waitForEvent(dpy, mask, True); /* Check any expired timers */ W_CheckTimerHandlers(); } } Bool WMScreenPending(WMScreen * scr) { if (XPending(scr->display)) return True; else return False; } WMEventHook *WMHookEventHandler(WMEventHook * handler) { WMEventHook *oldHandler = extraEventHandler; extraEventHandler = handler; return oldHandler; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/data.c���������������������������������������������������������������������0000644�0001750�0001750�00000015357�13431646201�013005� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * WINGs WMData function library * * Copyright (c) 1999-2003 Dan Pascu * * 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., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301, USA. */ #include <string.h> #include "WUtil.h" typedef struct W_Data { unsigned length; /* How many bytes we have */ unsigned capacity; /* How many bytes it can hold */ unsigned growth; /* How much to grow */ void *bytes; /* Actual data */ unsigned retainCount; WMFreeDataProc *destructor; int format; /* 0, 8, 16 or 32 */ } W_Data; /* Creating and destroying data objects */ WMData *WMCreateDataWithCapacity(unsigned capacity) { WMData *aData; aData = (WMData *) wmalloc(sizeof(WMData)); if (capacity > 0) aData->bytes = wmalloc(capacity); else aData->bytes = NULL; aData->capacity = capacity; aData->growth = capacity / 2 > 0 ? capacity / 2 : 1; aData->length = 0; aData->retainCount = 1; aData->format = 0; aData->destructor = wfree; return aData; } WMData *WMCreateDataWithLength(unsigned length) { WMData *aData; aData = WMCreateDataWithCapacity(length); if (length > 0) { aData->length = length; } return aData; } WMData *WMCreateDataWithBytes(const void *bytes, unsigned length) { WMData *aData; aData = WMCreateDataWithCapacity(length); aData->length = length; memcpy(aData->bytes, bytes, length); return aData; } WMData *WMCreateDataWithBytesNoCopy(void *bytes, unsigned length, WMFreeDataProc * destructor) { WMData *aData; aData = (WMData *) wmalloc(sizeof(WMData)); aData->length = length; aData->capacity = length; aData->growth = length / 2 > 0 ? length / 2 : 1; aData->bytes = bytes; aData->retainCount = 1; aData->format = 0; aData->destructor = destructor; return aData; } WMData *WMCreateDataWithData(WMData * aData) { WMData *newData; if (aData->length > 0) { newData = WMCreateDataWithBytes(aData->bytes, aData->length); } else { newData = WMCreateDataWithCapacity(0); } newData->format = aData->format; return newData; } WMData *WMRetainData(WMData * aData) { aData->retainCount++; return aData; } void WMReleaseData(WMData * aData) { aData->retainCount--; if (aData->retainCount > 0) return; if (aData->bytes != NULL && aData->destructor != NULL) { aData->destructor(aData->bytes); } wfree(aData); } /* Adjusting capacity */ void WMSetDataCapacity(WMData * aData, unsigned capacity) { if (aData->capacity != capacity) { aData->bytes = wrealloc(aData->bytes, capacity); aData->capacity = capacity; aData->growth = capacity / 2 > 0 ? capacity / 2 : 1; } if (aData->length > capacity) { aData->length = capacity; } } void WMSetDataLength(WMData * aData, unsigned length) { if (length > aData->capacity) { WMSetDataCapacity(aData, length); } if (length > aData->length) { memset((unsigned char *)aData->bytes + aData->length, 0, length - aData->length); } aData->length = length; } void WMSetDataFormat(WMData * aData, unsigned format) { aData->format = format; } void WMIncreaseDataLengthBy(WMData * aData, unsigned extraLength) { WMSetDataLength(aData, aData->length + extraLength); } /* Accessing data */ const void *WMDataBytes(WMData * aData) { return aData->bytes; } void WMGetDataBytes(WMData * aData, void *buffer) { wassertr(aData->length > 0); memcpy(buffer, aData->bytes, aData->length); } unsigned WMGetDataFormat(WMData * aData) { return aData->format; } void WMGetDataBytesWithLength(WMData * aData, void *buffer, unsigned length) { wassertr(aData->length > 0); wassertr(length <= aData->length); memcpy(buffer, aData->bytes, length); } void WMGetDataBytesWithRange(WMData * aData, void *buffer, WMRange aRange) { wassertr(aRange.position < aData->length); wassertr(aRange.count <= aData->length - aRange.position); memcpy(buffer, (unsigned char *)aData->bytes + aRange.position, aRange.count); } WMData *WMGetSubdataWithRange(WMData * aData, WMRange aRange) { void *buffer; WMData *newData; if (aRange.count <= 0) return WMCreateDataWithCapacity(0); buffer = wmalloc(aRange.count); WMGetDataBytesWithRange(aData, buffer, aRange); newData = WMCreateDataWithBytesNoCopy(buffer, aRange.count, wfree); newData->format = aData->format; return newData; } /* Testing data */ Bool WMIsDataEqualToData(WMData * aData, WMData * anotherData) { if (aData->length != anotherData->length) return False; else if (!aData->bytes && !anotherData->bytes) /* both are empty */ return True; else if (!aData->bytes || !anotherData->bytes) /* one of them is empty */ return False; return (memcmp(aData->bytes, anotherData->bytes, aData->length) == 0); } unsigned WMGetDataLength(WMData * aData) { return aData->length; } /* Adding data */ void WMAppendDataBytes(WMData * aData, const void *bytes, unsigned length) { unsigned oldLength = aData->length; unsigned newLength = oldLength + length; if (newLength > aData->capacity) { unsigned nextCapacity = aData->capacity + aData->growth; unsigned nextGrowth = aData->capacity ? aData->capacity : 1; while (nextCapacity < newLength) { unsigned tmp = nextCapacity + nextGrowth; nextGrowth = nextCapacity; nextCapacity = tmp; } WMSetDataCapacity(aData, nextCapacity); aData->growth = nextGrowth; } memcpy((unsigned char *)aData->bytes + oldLength, bytes, length); aData->length = newLength; } void WMAppendData(WMData * aData, WMData * anotherData) { if (anotherData->length > 0) WMAppendDataBytes(aData, anotherData->bytes, anotherData->length); } /* Modifying data */ void WMReplaceDataBytesInRange(WMData * aData, WMRange aRange, const void *bytes) { wassertr(aRange.position < aData->length); wassertr(aRange.count <= aData->length - aRange.position); memcpy((unsigned char *)aData->bytes + aRange.position, bytes, aRange.count); } void WMResetDataBytesInRange(WMData * aData, WMRange aRange) { wassertr(aRange.position < aData->length); wassertr(aRange.count <= aData->length - aRange.position); memset((unsigned char *)aData->bytes + aRange.position, 0, aRange.count); } void WMSetData(WMData * aData, WMData * anotherData) { unsigned length = anotherData->length; WMSetDataCapacity(aData, length); if (length > 0) memcpy(aData->bytes, anotherData->bytes, length); aData->length = length; } /* Storing data */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/userdefaults.h�������������������������������������������������������������0000644�0001750�0001750�00000002164�13431646201�014577� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* WUtil / userdefaults.h * * Copyright (c) 2014 Window Maker Team * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef WUTIL_USERDEFAULTS_H #define WUTIL_USERDEFAULTS_H /* * This file is not part of WUtil public API * * It defines internal things for the user configuration handling functions */ /* Save user configuration, to be used when application exits only */ void w_save_defaults_changes(void); #endif /* WUTIL_USERDEFAULTS_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/wfontpanel.c���������������������������������������������������������������0000644�0001750�0001750�00000046352�13431646201�014250� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include "WINGsP.h" #include "WUtil.h" #include "wconfig.h" #include <ctype.h> #include <string.h> #include <strings.h> #include <stdint.h> #include <X11/Xft/Xft.h> #include <fontconfig/fontconfig.h> /* XXX TODO */ char *WMFontPanelFontChangedNotification = "WMFontPanelFontChangedNotification"; typedef struct W_FontPanel { WMWindow *win; WMFrame *upperF; WMTextField *sampleT; WMSplitView *split; WMFrame *lowerF; WMLabel *famL; WMList *famLs; WMLabel *typL; WMList *typLs; WMLabel *sizL; WMTextField *sizT; WMList *sizLs; WMAction2 *action; void *data; WMButton *revertB; WMButton *setB; WMPropList *fdb; } FontPanel; #define MIN_UPPER_HEIGHT 20 #define MIN_LOWER_HEIGHT 140 #define BUTTON_SPACE_HEIGHT 40 #define MIN_WIDTH 250 #define MIN_HEIGHT (MIN_UPPER_HEIGHT+MIN_LOWER_HEIGHT+BUTTON_SPACE_HEIGHT) #define DEF_UPPER_HEIGHT 60 #define DEF_LOWER_HEIGHT 310 #define DEF_WIDTH 320 #define DEF_HEIGHT (DEF_UPPER_HEIGHT+DEF_LOWER_HEIGHT) static const int scalableFontSizes[] = { 8, 10, 11, 12, 14, 16, 18, 20, 24, 36, 48, 64 }; static void setFontPanelFontName(FontPanel * panel, const char *family, const char *style, double size); static int isXLFD(const char *font, int *length_ret); static void arrangeLowerFrame(FontPanel * panel); static void familyClick(WMWidget *, void *); static void typefaceClick(WMWidget *, void *); static void sizeClick(WMWidget *, void *); static void listFamilies(WMScreen * scr, WMFontPanel * panel); static void splitViewConstrainCallback(WMSplitView * sPtr, int indView, int *min, int *max) { /* Parameter not used, but tell the compiler that it is ok */ (void) sPtr; (void) max; if (indView == 0) *min = MIN_UPPER_HEIGHT; else *min = MIN_LOWER_HEIGHT; } static void notificationObserver(void *self, WMNotification * notif) { WMFontPanel *panel = (WMFontPanel *) self; void *object = WMGetNotificationObject(notif); if (WMGetNotificationName(notif) == WMViewSizeDidChangeNotification) { if (object == WMWidgetView(panel->win)) { int h = WMWidgetHeight(panel->win); int w = WMWidgetWidth(panel->win); WMResizeWidget(panel->split, w, h - BUTTON_SPACE_HEIGHT); WMMoveWidget(panel->setB, w - 80, h - (BUTTON_SPACE_HEIGHT - 5)); WMMoveWidget(panel->revertB, w - 240, h - (BUTTON_SPACE_HEIGHT - 5)); } else if (object == WMWidgetView(panel->upperF)) { if (WMWidgetHeight(panel->upperF) < MIN_UPPER_HEIGHT) { WMResizeWidget(panel->upperF, WMWidgetWidth(panel->upperF), MIN_UPPER_HEIGHT); } else { WMResizeWidget(panel->sampleT, WMWidgetWidth(panel->upperF) - 20, WMWidgetHeight(panel->upperF) - 10); } } else if (object == WMWidgetView(panel->lowerF)) { if (WMWidgetHeight(panel->lowerF) < MIN_LOWER_HEIGHT) { WMResizeWidget(panel->upperF, WMWidgetWidth(panel->upperF), MIN_UPPER_HEIGHT); WMMoveWidget(panel->lowerF, 0, WMWidgetHeight(panel->upperF) + WMGetSplitViewDividerThickness(panel->split)); WMResizeWidget(panel->lowerF, WMWidgetWidth(panel->lowerF), WMWidgetWidth(panel->split) - MIN_UPPER_HEIGHT - WMGetSplitViewDividerThickness(panel->split)); } else { arrangeLowerFrame(panel); } } } } static void closeWindow(WMWidget * w, void *data) { FontPanel *panel = (FontPanel *) data; /* Parameter not used, but tell the compiler that it is ok */ (void) w; WMHideFontPanel(panel); } static void setClickedAction(WMWidget * w, void *data) { FontPanel *panel = (FontPanel *) data; /* Parameter not used, but tell the compiler that it is ok */ (void) w; if (panel->action) (*panel->action) (panel, panel->data); } static void revertClickedAction(WMWidget * w, void *data) { /* Parameter not used, but tell the compiler that it is ok */ (void) w; (void) data; /*FontPanel *panel = (FontPanel*)data; */ /* XXX TODO */ } WMFontPanel *WMGetFontPanel(WMScreen * scr) { FontPanel *panel; WMColor *dark, *white; WMFont *font; int divThickness; if (scr->sharedFontPanel) return scr->sharedFontPanel; panel = wmalloc(sizeof(FontPanel)); panel->win = WMCreateWindow(scr, "fontPanel"); /* WMSetWidgetBackgroundColor(panel->win, WMWhiteColor(scr)); */ WMSetWindowTitle(panel->win, _("Font Panel")); WMResizeWidget(panel->win, DEF_WIDTH, DEF_HEIGHT); WMSetWindowMinSize(panel->win, MIN_WIDTH, MIN_HEIGHT); WMSetViewNotifySizeChanges(WMWidgetView(panel->win), True); WMSetWindowCloseAction(panel->win, closeWindow, panel); panel->split = WMCreateSplitView(panel->win); WMResizeWidget(panel->split, DEF_WIDTH, DEF_HEIGHT - BUTTON_SPACE_HEIGHT); WMSetSplitViewConstrainProc(panel->split, splitViewConstrainCallback); divThickness = WMGetSplitViewDividerThickness(panel->split); panel->upperF = WMCreateFrame(panel->win); WMSetFrameRelief(panel->upperF, WRFlat); WMSetViewNotifySizeChanges(WMWidgetView(panel->upperF), True); panel->lowerF = WMCreateFrame(panel->win); /* WMSetWidgetBackgroundColor(panel->lowerF, WMBlackColor(scr)); */ WMSetFrameRelief(panel->lowerF, WRFlat); WMSetViewNotifySizeChanges(WMWidgetView(panel->lowerF), True); WMAddSplitViewSubview(panel->split, W_VIEW(panel->upperF)); WMAddSplitViewSubview(panel->split, W_VIEW(panel->lowerF)); WMResizeWidget(panel->upperF, DEF_WIDTH, DEF_UPPER_HEIGHT); WMResizeWidget(panel->lowerF, DEF_WIDTH, DEF_LOWER_HEIGHT); WMMoveWidget(panel->lowerF, 0, 60 + divThickness); white = WMWhiteColor(scr); dark = WMDarkGrayColor(scr); panel->sampleT = WMCreateTextField(panel->upperF); WMResizeWidget(panel->sampleT, DEF_WIDTH - 20, 50); WMMoveWidget(panel->sampleT, 10, 10); WMSetTextFieldText(panel->sampleT, _("The quick brown fox jumps over the lazy dog")); font = WMBoldSystemFontOfSize(scr, 12); panel->famL = WMCreateLabel(panel->lowerF); WMSetWidgetBackgroundColor(panel->famL, dark); WMSetLabelText(panel->famL, _("Family")); WMSetLabelFont(panel->famL, font); WMSetLabelTextColor(panel->famL, white); WMSetLabelRelief(panel->famL, WRSunken); WMSetLabelTextAlignment(panel->famL, WACenter); panel->famLs = WMCreateList(panel->lowerF); WMSetListAction(panel->famLs, familyClick, panel); panel->typL = WMCreateLabel(panel->lowerF); WMSetWidgetBackgroundColor(panel->typL, dark); WMSetLabelText(panel->typL, _("Typeface")); WMSetLabelFont(panel->typL, font); WMSetLabelTextColor(panel->typL, white); WMSetLabelRelief(panel->typL, WRSunken); WMSetLabelTextAlignment(panel->typL, WACenter); panel->typLs = WMCreateList(panel->lowerF); WMSetListAction(panel->typLs, typefaceClick, panel); panel->sizL = WMCreateLabel(panel->lowerF); WMSetWidgetBackgroundColor(panel->sizL, dark); WMSetLabelText(panel->sizL, _("Size")); WMSetLabelFont(panel->sizL, font); WMSetLabelTextColor(panel->sizL, white); WMSetLabelRelief(panel->sizL, WRSunken); WMSetLabelTextAlignment(panel->sizL, WACenter); panel->sizT = WMCreateTextField(panel->lowerF); /* WMSetTextFieldAlignment(panel->sizT, WARight); */ panel->sizLs = WMCreateList(panel->lowerF); WMSetListAction(panel->sizLs, sizeClick, panel); WMReleaseFont(font); WMReleaseColor(white); WMReleaseColor(dark); panel->setB = WMCreateCommandButton(panel->win); WMResizeWidget(panel->setB, 70, 24); WMMoveWidget(panel->setB, 240, DEF_HEIGHT - (BUTTON_SPACE_HEIGHT - 5)); WMSetButtonText(panel->setB, _("Set")); WMSetButtonAction(panel->setB, setClickedAction, panel); panel->revertB = WMCreateCommandButton(panel->win); WMResizeWidget(panel->revertB, 70, 24); WMMoveWidget(panel->revertB, 80, DEF_HEIGHT - (BUTTON_SPACE_HEIGHT - 5)); WMSetButtonText(panel->revertB, _("Revert")); WMSetButtonAction(panel->revertB, revertClickedAction, panel); WMRealizeWidget(panel->win); WMMapSubwidgets(panel->upperF); WMMapSubwidgets(panel->lowerF); WMMapSubwidgets(panel->split); WMMapSubwidgets(panel->win); WMUnmapWidget(panel->revertB); arrangeLowerFrame(panel); scr->sharedFontPanel = panel; /* register notification observers */ WMAddNotificationObserver(notificationObserver, panel, WMViewSizeDidChangeNotification, WMWidgetView(panel->win)); WMAddNotificationObserver(notificationObserver, panel, WMViewSizeDidChangeNotification, WMWidgetView(panel->upperF)); WMAddNotificationObserver(notificationObserver, panel, WMViewSizeDidChangeNotification, WMWidgetView(panel->lowerF)); listFamilies(scr, panel); return panel; } void WMFreeFontPanel(WMFontPanel * panel) { if (panel == WMWidgetScreen(panel->win)->sharedFontPanel) { WMWidgetScreen(panel->win)->sharedFontPanel = NULL; } WMRemoveNotificationObserver(panel); WMUnmapWidget(panel->win); WMDestroyWidget(panel->win); wfree(panel); } void WMShowFontPanel(WMFontPanel * panel) { WMMapWidget(panel->win); } void WMHideFontPanel(WMFontPanel * panel) { WMUnmapWidget(panel->win); } WMFont *WMGetFontPanelFont(WMFontPanel * panel) { return WMGetTextFieldFont(panel->sampleT); } void WMSetFontPanelFont(WMFontPanel * panel, const char *fontName) { int fname_len; FcPattern *pattern; FcChar8 *family, *style; double size; if (!isXLFD(fontName, &fname_len)) { /* maybe its proper fontconfig and we can parse it */ pattern = FcNameParse((const FcChar8 *) fontName); } else { /* maybe its proper xlfd and we can convert it to an FcPattern */ pattern = XftXlfdParse(fontName, False, False); /*//FcPatternPrint(pattern); */ } if (!pattern) return; if (FcPatternGetString(pattern, FC_FAMILY, 0, &family) == FcResultMatch) if (FcPatternGetString(pattern, FC_STYLE, 0, &style) == FcResultMatch) if (FcPatternGetDouble(pattern, "pixelsize", 0, &size) == FcResultMatch) setFontPanelFontName(panel, (char *)family, (char *)style, size); FcPatternDestroy(pattern); } void WMSetFontPanelAction(WMFontPanel * panel, WMAction2 * action, void *data) { panel->action = action; panel->data = data; } static void arrangeLowerFrame(FontPanel * panel) { int width = WMWidgetWidth(panel->lowerF) - 55 - 30; int height = WMWidgetHeight(panel->split) - WMWidgetHeight(panel->upperF); int fw, tw, sw; #define LABEL_HEIGHT 20 height -= WMGetSplitViewDividerThickness(panel->split); height -= LABEL_HEIGHT + 8; fw = (125 * width) / 235; tw = (110 * width) / 235; sw = 55; WMMoveWidget(panel->famL, 10, 0); WMResizeWidget(panel->famL, fw, LABEL_HEIGHT); WMMoveWidget(panel->famLs, 10, 23); WMResizeWidget(panel->famLs, fw, height); WMMoveWidget(panel->typL, 10 + fw + 3, 0); WMResizeWidget(panel->typL, tw, LABEL_HEIGHT); WMMoveWidget(panel->typLs, 10 + fw + 3, 23); WMResizeWidget(panel->typLs, tw, height); WMMoveWidget(panel->sizL, 10 + fw + 3 + tw + 3, 0); WMResizeWidget(panel->sizL, sw + 4, LABEL_HEIGHT); WMMoveWidget(panel->sizT, 10 + fw + 3 + tw + 3, 23); WMResizeWidget(panel->sizT, sw + 4, 20); WMMoveWidget(panel->sizLs, 10 + fw + 3 + tw + 3, 46); WMResizeWidget(panel->sizLs, sw + 4, height - 23); } #define NUM_FIELDS 14 static int isXLFD(const char *font, int *length_ret) { int c = 0; *length_ret = 0; while (*font) { (*length_ret)++; if (*font++ == '-') c++; } return c == NUM_FIELDS; } typedef struct { char *typeface; WMArray *sizes; } Typeface; typedef struct { char *name; /* gotta love simplicity */ WMArray *typefaces; } Family; static int compare_int(const void *a, const void *b) { int i1 = *(int *)a; int i2 = *(int *)b; if (i1 < i2) return -1; else if (i1 > i2) return 1; else return 0; } static void addSizeToTypeface(Typeface * face, int size) { if (size == 0) { int j; for (j = 0; j < wlengthof(scalableFontSizes); j++) { size = scalableFontSizes[j]; if (!WMCountInArray(face->sizes, (void *)(uintptr_t) size)) { WMAddToArray(face->sizes, (void *)(uintptr_t) size); } } WMSortArray(face->sizes, compare_int); } else { if (!WMCountInArray(face->sizes, (void *)(uintptr_t) size)) { WMAddToArray(face->sizes, (void *)(uintptr_t) size); WMSortArray(face->sizes, compare_int); } } } static void addTypefaceToXftFamily(Family * fam, const char *style) { Typeface *face; WMArrayIterator i; if (fam->typefaces) { WM_ITERATE_ARRAY(fam->typefaces, face, i) { if (strcmp(face->typeface, style) != 0) continue; /* go to next interation */ addSizeToTypeface(face, 0); return; } } else { fam->typefaces = WMCreateArray(4); } face = wmalloc(sizeof(Typeface)); face->typeface = wstrdup(style); face->sizes = WMCreateArray(4); addSizeToTypeface(face, 0); WMAddToArray(fam->typefaces, face); } /* * families (same family name) (Hashtable of family -> array) * registries (same family but different registries) * */ static void addFontToXftFamily(WMHashTable * families, const char *name, const char *style) { WMArrayIterator i; WMArray *array; Family *fam; array = WMHashGet(families, name); if (array) { WM_ITERATE_ARRAY(array, fam, i) { if (strcmp(fam->name, name) == 0) addTypefaceToXftFamily(fam, style); return; } } array = WMCreateArray(8); fam = wmalloc(sizeof(Family)); fam->name = wstrdup(name); addTypefaceToXftFamily(fam, style); WMAddToArray(array, fam); WMHashInsert(families, fam->name, array); } static void listFamilies(WMScreen * scr, WMFontPanel * panel) { FcObjectSet *os = 0; FcFontSet *fs; FcPattern *pat; WMHashTable *families; WMHashEnumerator enumer; WMArray *array; int i; pat = FcPatternCreate(); os = FcObjectSetBuild(FC_FAMILY, FC_STYLE, NULL); fs = FcFontList(0, pat, os); if (!fs) { WMRunAlertPanel(scr, panel->win, _("Error"), _("Could not init font config library\n"), _("OK"), NULL, NULL); return; } if (pat) FcPatternDestroy(pat); families = WMCreateHashTable(WMStringPointerHashCallbacks); if (fs) { for (i = 0; i < fs->nfont; i++) { FcChar8 *family; FcChar8 *style; if (FcPatternGetString(fs->fonts[i], FC_FAMILY, 0, &family) == FcResultMatch) if (FcPatternGetString(fs->fonts[i], FC_STYLE, 0, &style) == FcResultMatch) addFontToXftFamily(families, (char *)family, (char *)style); } FcFontSetDestroy(fs); } enumer = WMEnumerateHashTable(families); while ((array = WMNextHashEnumeratorItem(&enumer))) { WMArrayIterator i; Family *fam; char buffer[256]; WMListItem *item; WM_ITERATE_ARRAY(array, fam, i) { wstrlcpy(buffer, fam->name, sizeof(buffer)); item = WMAddListItem(panel->famLs, buffer); item->clientData = fam; } WMFreeArray(array); } WMSortListItems(panel->famLs); WMFreeHashTable(families); } static void getSelectedFont(FontPanel * panel, char buffer[], int bufsize) { WMListItem *item; Family *family; Typeface *face; char *size; item = WMGetListSelectedItem(panel->famLs); if (!item) return; family = (Family *) item->clientData; item = WMGetListSelectedItem(panel->typLs); if (!item) return; face = (Typeface *) item->clientData; size = WMGetTextFieldText(panel->sizT); snprintf(buffer, bufsize, "%s:style=%s:pixelsize=%s", family->name, face->typeface, size); wfree(size); } static void preview(FontPanel * panel) { char buffer[512]; WMFont *font; getSelectedFont(panel, buffer, sizeof(buffer)); font = WMCreateFont(WMWidgetScreen(panel->win), buffer); if (font) { WMSetTextFieldFont(panel->sampleT, font); WMReleaseFont(font); } } static void familyClick(WMWidget * w, void *data) { WMList *lPtr = (WMList *) w; WMListItem *item; Family *family; Typeface *face; FontPanel *panel = (FontPanel *) data; WMArrayIterator i; /* current typeface and size */ char *oface = NULL; char *osize = NULL; int facei = -1; int sizei = -1; /* must try to keep the same typeface and size for the new family */ item = WMGetListSelectedItem(panel->typLs); if (item) oface = wstrdup(item->text); osize = WMGetTextFieldText(panel->sizT); item = WMGetListSelectedItem(lPtr); family = (Family *) item->clientData; WMClearList(panel->typLs); WM_ITERATE_ARRAY(family->typefaces, face, i) { char buffer[256]; int top = 0; WMListItem *fitem; wstrlcpy(buffer, face->typeface, sizeof(buffer)); if (strcasecmp(face->typeface, "Roman") == 0) top = 1; if (strcasecmp(face->typeface, "Regular") == 0) top = 1; if (top) fitem = WMInsertListItem(panel->typLs, 0, buffer); else fitem = WMAddListItem(panel->typLs, buffer); fitem->clientData = face; } if (oface) { facei = WMFindRowOfListItemWithTitle(panel->typLs, oface); wfree(oface); } if (facei < 0) { facei = 0; } WMSelectListItem(panel->typLs, facei); typefaceClick(panel->typLs, panel); if (osize) { sizei = WMFindRowOfListItemWithTitle(panel->sizLs, osize); } if (sizei >= 0) { WMSelectListItem(panel->sizLs, sizei); sizeClick(panel->sizLs, panel); } if (osize) wfree(osize); preview(panel); } static void typefaceClick(WMWidget * w, void *data) { FontPanel *panel = (FontPanel *) data; WMListItem *item; Typeface *face; WMArrayIterator i; char buffer[32]; char *osize = NULL; int sizei = -1; void *size; /* Parameter not used, but tell the compiler that it is ok */ (void) w; osize = WMGetTextFieldText(panel->sizT); item = WMGetListSelectedItem(panel->typLs); face = (Typeface *) item->clientData; WMClearList(panel->sizLs); WM_ITERATE_ARRAY(face->sizes, size, i) { if (size != NULL) { int size_int = (intptr_t) size; sprintf(buffer, "%i", size_int); WMAddListItem(panel->sizLs, buffer); } } if (osize) { sizei = WMFindRowOfListItemWithTitle(panel->sizLs, osize); } if (sizei < 0) { sizei = WMFindRowOfListItemWithTitle(panel->sizLs, "12"); } if (sizei < 0) { sizei = 0; } WMSelectListItem(panel->sizLs, sizei); WMSetListPosition(panel->sizLs, sizei); sizeClick(panel->sizLs, panel); if (osize) wfree(osize); preview(panel); } static void sizeClick(WMWidget * w, void *data) { FontPanel *panel = (FontPanel *) data; WMListItem *item; /* Parameter not used, but tell the compiler that it is ok */ (void) w; item = WMGetListSelectedItem(panel->sizLs); WMSetTextFieldText(panel->sizT, item->text); WMSelectTextFieldRange(panel->sizT, wmkrange(0, strlen(item->text))); preview(panel); } static void setFontPanelFontName(FontPanel * panel, const char *family, const char *style, double size) { int famrow; int stlrow; int sz; char asize[64]; void *vsize; WMListItem *item; Family *fam; Typeface *face; WMArrayIterator i; famrow = WMFindRowOfListItemWithTitle(panel->famLs, family); if (famrow < 0) { famrow = 0; return; } WMSelectListItem(panel->famLs, famrow); WMSetListPosition(panel->famLs, famrow); WMClearList(panel->typLs); item = WMGetListSelectedItem(panel->famLs); fam = (Family *) item->clientData; WM_ITERATE_ARRAY(fam->typefaces, face, i) { char buffer[256]; int top = 0; WMListItem *fitem; wstrlcpy(buffer, face->typeface, sizeof(buffer)); if (strcasecmp(face->typeface, "Roman") == 0) top = 1; if (top) fitem = WMInsertListItem(panel->typLs, 0, buffer); else fitem = WMAddListItem(panel->typLs, buffer); fitem->clientData = face; } stlrow = WMFindRowOfListItemWithTitle(panel->typLs, style); if (stlrow < 0) { stlrow = 0; return; } WMSelectListItem(panel->typLs, stlrow); item = WMGetListSelectedItem(panel->typLs); face = (Typeface *) item->clientData; WMClearList(panel->sizLs); WM_ITERATE_ARRAY(face->sizes, vsize, i) { char buffer[32]; if (vsize != NULL) { int size_int = (intptr_t) vsize; sprintf(buffer, "%i", size_int); WMAddListItem(panel->sizLs, buffer); } } snprintf(asize, sizeof(asize) - 1, "%d", (int)(size + 0.5)); sz = WMFindRowOfListItemWithTitle(panel->sizLs, asize); if (sz < 0) { return; } WMSelectListItem(panel->sizLs, sz); sizeClick(panel->sizLs, panel); return; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/wprogressindicator.c�������������������������������������������������������0000644�0001750�0001750�00000014376�13431646201�016024� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Original idea and implementation by Frederik Schueler <fr.schueler@netsurf.de> * Rewritten by Pascal Hofstee <daeron@windowmaker.info> * - Added options to set min/max values * - centralized drawing into one pain function */ #include "WINGsP.h" typedef struct W_ProgressIndicator { W_Class widgetClass; W_View *view; int value; int minValue; int maxValue; void *clientData; } ProgressIndicator; #define DEFAULT_PROGRESS_INDICATOR_WIDTH 276 #define DEFAULT_PROGRESS_INDICATOR_HEIGHT 16 /* define if only the ticks within the progress region should be displayed */ #undef SHOW_PROGRESS_TICKS_ONLY static void didResizeProgressIndicator(W_ViewDelegate * self, WMView * view); W_ViewDelegate _ProgressIndicatorDelegate = { NULL, NULL, didResizeProgressIndicator, NULL, NULL }; static void destroyProgressIndicator(ProgressIndicator * pPtr); static void paintProgressIndicator(ProgressIndicator * pPtr); static void handleEvents(XEvent * event, void *data); WMProgressIndicator *WMCreateProgressIndicator(WMWidget * parent) { ProgressIndicator *pPtr; pPtr = wmalloc(sizeof(ProgressIndicator)); pPtr->widgetClass = WC_ProgressIndicator; pPtr->view = W_CreateView(W_VIEW(parent)); if (!pPtr->view) { wfree(pPtr); return NULL; } pPtr->view->self = pPtr; pPtr->view->delegate = &_ProgressIndicatorDelegate; WMCreateEventHandler(pPtr->view, ExposureMask | StructureNotifyMask, handleEvents, pPtr); W_ResizeView(pPtr->view, DEFAULT_PROGRESS_INDICATOR_WIDTH, DEFAULT_PROGRESS_INDICATOR_HEIGHT); /* Initialize ProgressIndicator Values */ pPtr->value = 0; pPtr->minValue = 0; pPtr->maxValue = 100; return pPtr; } void WMSetProgressIndicatorMinValue(WMProgressIndicator * progressindicator, int value) { CHECK_CLASS(progressindicator, WC_ProgressIndicator); progressindicator->minValue = value; if (progressindicator->value < value) { progressindicator->value = value; if (progressindicator->view->flags.mapped) { paintProgressIndicator(progressindicator); } } } void WMSetProgressIndicatorMaxValue(WMProgressIndicator * progressindicator, int value) { CHECK_CLASS(progressindicator, WC_ProgressIndicator); progressindicator->maxValue = value; if (progressindicator->value > value) { progressindicator->value = value; if (progressindicator->view->flags.mapped) { paintProgressIndicator(progressindicator); } } } void WMSetProgressIndicatorValue(WMProgressIndicator * progressindicator, int value) { CHECK_CLASS(progressindicator, WC_ProgressIndicator); progressindicator->value = value; /* Check if value is within min/max-range */ if (progressindicator->minValue > value) progressindicator->value = progressindicator->minValue; if (progressindicator->maxValue < value) progressindicator->value = progressindicator->maxValue; if (progressindicator->view->flags.mapped) { paintProgressIndicator(progressindicator); } } int WMGetProgressIndicatorMinValue(WMProgressIndicator * progressindicator) { CHECK_CLASS(progressindicator, WC_ProgressIndicator); return progressindicator->minValue; } int WMGetProgressIndicatorMaxValue(WMProgressIndicator * progressindicator) { CHECK_CLASS(progressindicator, WC_ProgressIndicator); return progressindicator->maxValue; } int WMGetProgressIndicatorValue(WMProgressIndicator * progressindicator) { CHECK_CLASS(progressindicator, WC_ProgressIndicator); return progressindicator->value; } static void didResizeProgressIndicator(W_ViewDelegate * self, WMView * view) { WMProgressIndicator *pPtr = (WMProgressIndicator *) view->self; int width = pPtr->view->size.width; int height = pPtr->view->size.height; /* Parameter not used, but tell the compiler that it is ok */ (void) self; (void) width; (void) height; assert(width > 0); assert(height > 0); } static void paintProgressIndicator(ProgressIndicator * pPtr) { W_Screen *scr = pPtr->view->screen; GC bgc; GC wgc; GC lgc; GC dgc; WMSize size = pPtr->view->size; int perc, w, h; double unit, i; Pixmap buffer; bgc = WMColorGC(scr->black); wgc = WMColorGC(scr->white); lgc = WMColorGC(scr->gray); dgc = WMColorGC(scr->darkGray); unit = (double)(size.width - 3.0) / 100; buffer = XCreatePixmap(scr->display, pPtr->view->window, size.width, size.height, scr->depth); XFillRectangle(scr->display, buffer, lgc, 0, 0, size.width, size.height); /* Calculate size of Progress to draw and paint ticks */ perc = (pPtr->value - pPtr->minValue) * 100 / (pPtr->maxValue - pPtr->minValue); w = (int)((double)(perc * unit)); h = size.height - 2; if (w > (size.width - 3)) w = size.width - 3; if (w > 0) { XFillRectangle(scr->display, buffer, lgc, 2, 1, w, h); XFillRectangle(scr->display, buffer, scr->stippleGC, 2, 1, w, h); W_DrawRelief(scr, buffer, 2, 1, w, h, WRFlat); /* Draw Progress Marks */ i = (5.0 * unit); #ifdef SHOW_PROGRESS_TICKS_ONLY while ((int)i < w + 5) { #else while ((int)i < (size.width - 3)) { #endif XDrawLine(scr->display, buffer, dgc, (int)i + 2, h - 1, i + 2, h - 3); i += (5.0 * unit); #ifdef SHOW_PROGRESS_TICKS_ONLY if ((int)i >= w) break; #endif XDrawLine(scr->display, buffer, dgc, (int)i + 2, h - 1, i + 2, h - 6); i += (5.0 * unit); } } XDrawLine(scr->display, buffer, bgc, w + 2, 1, w + 2, h + 1); XDrawLine(scr->display, buffer, lgc, 2, h, w + 2, h); XDrawLine(scr->display, buffer, dgc, 0, 0, 0, size.height - 1); XDrawLine(scr->display, buffer, dgc, 0, 0, size.width, 0); XDrawLine(scr->display, buffer, bgc, 1, 1, 1, size.height - 1); XDrawLine(scr->display, buffer, bgc, 1, 1, size.width - 1, 1); XDrawLine(scr->display, buffer, wgc, size.width - 1, 0, size.width - 1, size.height - 1); XDrawLine(scr->display, buffer, wgc, 0, size.height - 1, size.width - 1, size.height - 1); XCopyArea(scr->display, buffer, pPtr->view->window, scr->copyGC, 0, 0, size.width, size.height, 0, 0); XFreePixmap(scr->display, buffer); } static void handleEvents(XEvent * event, void *data) { ProgressIndicator *pPtr = (ProgressIndicator *) data; CHECK_CLASS(data, WC_ProgressIndicator); switch (event->type) { case Expose: if (event->xexpose.count != 0) break; paintProgressIndicator(pPtr); break; case DestroyNotify: destroyProgressIndicator(pPtr); break; } } static void destroyProgressIndicator(ProgressIndicator * pPtr) { WMRemoveNotificationObserver(pPtr); wfree(pPtr); } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/wapplication.c�������������������������������������������������������������0000644�0001750�0001750�00000010677�13642357773�014607� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include <unistd.h> #include <X11/Xlocale.h> #include "WINGsP.h" #include "wconfig.h" #include "userdefaults.h" struct W_Application WMApplication; char *_WINGS_progname = NULL; Bool W_ApplicationInitialized(void) { return _WINGS_progname != NULL; } void WMInitializeApplication(const char *applicationName, int *argc, char **argv) { int i; assert(argc != NULL); assert(argv != NULL); assert(applicationName != NULL); setlocale(LC_ALL, ""); #ifdef I18N if (getenv("NLSPATH")) bindtextdomain("WINGs", getenv("NLSPATH")); else bindtextdomain("WINGs", LOCALEDIR); bind_textdomain_codeset("WINGs", "UTF-8"); #endif _WINGS_progname = argv[0]; WMApplication.applicationName = wstrdup(applicationName); WMApplication.argc = *argc; WMApplication.argv = wmalloc((*argc + 1) * sizeof(char *)); for (i = 0; i < *argc; i++) { WMApplication.argv[i] = wstrdup(argv[i]); } WMApplication.argv[i] = NULL; /* initialize notification center */ W_InitNotificationCenter(); } void WMReleaseApplication(void) { int i; /* * We save the configuration on exit, this used to be handled * through an 'atexit' registered function but if application * properly calls WMReleaseApplication then the info to that * will have been freed by us. */ w_save_defaults_changes(); W_ReleaseNotificationCenter(); if (WMApplication.applicationName) { wfree(WMApplication.applicationName); WMApplication.applicationName = NULL; } if (WMApplication.argv) { for (i = 0; i < WMApplication.argc; i++) wfree(WMApplication.argv[i]); wfree(WMApplication.argv); WMApplication.argv = NULL; } } void WMSetResourcePath(const char *path) { if (WMApplication.resourcePath) wfree(WMApplication.resourcePath); WMApplication.resourcePath = wstrdup(path); } char *WMGetApplicationName() { return WMApplication.applicationName; } static char *checkFile(const char *path, const char *folder, const char *ext, const char *resource) { char *ret; int extralen; size_t slen; if (!path || !resource) return NULL; extralen = (ext ? strlen(ext) + 1 : 0) + (folder ? strlen(folder) + 1 : 0) + 1; slen = strlen(path) + strlen(resource) + 1 + extralen; ret = wmalloc(slen); if (wstrlcpy(ret, path, slen) >= slen) goto error; if (folder && (wstrlcat(ret, "/", slen) >= slen || wstrlcat(ret, folder, slen) >= slen)) goto error; if (ext && (wstrlcat(ret, "/", slen) >= slen || wstrlcat(ret, ext, slen) >= slen)) goto error; if (wstrlcat(ret, "/", slen) >= slen || wstrlcat(ret, resource, slen) >= slen) goto error; if (access(ret, F_OK) != 0) goto error; return ret; error: if (ret) wfree(ret); return NULL; } char *WMPathForResourceOfType(const char *resource, const char *ext) { char *path, *appdir; size_t slen; path = appdir = NULL; /* * Paths are searched in this order: * - resourcePath/ext * - dirname(argv[0])/ext * - WMAKER_USER_ROOT/Applications/ApplicationName.app/ext * - ~/GNUstep/Applications/ApplicationName.app/ext * - GNUSTEP_LOCAL_ROOT/Applications/ApplicationName.app/ext * - /usr/local/GNUstep/Applications/ApplicationName.app/ext * - GNUSTEP_SYSTEM_ROOT/Applications/ApplicationName.app/ext * - /usr/GNUstep/Applications/ApplicationName.app/ext */ if (WMApplication.resourcePath) { path = checkFile(WMApplication.resourcePath, NULL, ext, resource); if (path) goto out; } if (WMApplication.argv[0]) { char *ptr_slash; ptr_slash = strrchr(WMApplication.argv[0], '/'); if (ptr_slash != NULL) { char tmp[ptr_slash - WMApplication.argv[0] + 1]; strncpy(tmp, WMApplication.argv[0], sizeof(tmp)-1); tmp[sizeof(tmp) - 1] = '\0'; path = checkFile(tmp, NULL, ext, resource); if (path) goto out; } } slen = strlen(WMApplication.applicationName) + sizeof("Applications/.app"); appdir = wmalloc(slen); if (snprintf(appdir, slen, "Applications/%s.app", WMApplication.applicationName) >= slen) goto out; path = checkFile(getenv("WMAKER_USER_ROOT"), appdir, ext, resource); if (path) goto out; path = checkFile(wusergnusteppath(), appdir, ext, resource); if (path) goto out; path = checkFile(getenv("GNUSTEP_LOCAL_ROOT"), appdir, ext, resource); if (path) goto out; path = checkFile("/usr/local/GNUstep", appdir, ext, resource); if (path) goto out; path = checkFile(getenv("GNUSTEP_SYSTEM_ROOT"), appdir, ext, resource); if (path) goto out; path = checkFile("/usr/GNUstep", appdir, ext, resource); /* falls through */ out: if (appdir) wfree(appdir); return path; } �����������������������������������������������������������������WindowMaker-0.95.9/WINGs/wwindow.c������������������������������������������������������������������0000644�0001750�0001750�00000042167�13431646201�013571� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include <X11/Xmd.h> #include "wconfig.h" #include "WINGsP.h" #include "GNUstep.h" #include <X11/Xatom.h> typedef struct W_Window { W_Class widgetClass; W_View *view; struct W_Window *nextPtr; /* next in the window list */ struct W_Window *owner; char *title; WMPixmap *miniImage; /* miniwindow */ char *miniTitle; char *wname; WMSize resizeIncrement; WMSize baseSize; WMSize minSize; WMSize maxSize; WMPoint minAspect; WMPoint maxAspect; WMPoint upos; WMPoint ppos; WMAction *closeAction; void *closeData; int level; struct { unsigned style:4; unsigned configured:1; unsigned documentEdited:1; unsigned setUPos:1; unsigned setPPos:1; unsigned setAspect:1; } flags; } _Window; static void willResizeWindow(W_ViewDelegate *, WMView *, unsigned *, unsigned *); struct W_ViewDelegate _WindowViewDelegate = { NULL, NULL, NULL, NULL, willResizeWindow }; #define DEFAULT_WIDTH 400 #define DEFAULT_HEIGHT 180 static void destroyWindow(_Window * win); static void handleEvents(XEvent * event, void *clientData); static void realizeWindow(WMWindow * win); static void realizeObserver(void *self, WMNotification * not) { /* Parameter not used, but tell the compiler that it is ok */ (void) not; realizeWindow(self); } WMWindow *WMCreatePanelWithStyleForWindow(WMWindow * owner, const char *name, int style) { WMWindow *win; win = WMCreateWindowWithStyle(owner->view->screen, name, style); win->owner = owner; return win; } WMWindow *WMCreatePanelForWindow(WMWindow * owner, const char *name) { return WMCreatePanelWithStyleForWindow(owner, name, WMTitledWindowMask | WMClosableWindowMask | WMResizableWindowMask); } void WMChangePanelOwner(WMWindow * win, WMWindow * newOwner) { win->owner = newOwner; if (win->view->flags.realized && newOwner) { XSetTransientForHint(win->view->screen->display, win->view->window, newOwner->view->window); } } WMWindow *WMCreateWindow(WMScreen * screen, const char *name) { return WMCreateWindowWithStyle(screen, name, WMTitledWindowMask | WMClosableWindowMask | WMMiniaturizableWindowMask | WMResizableWindowMask); } WMWindow *WMCreateWindowWithStyle(WMScreen * screen, const char *name, int style) { _Window *win; win = wmalloc(sizeof(_Window)); win->widgetClass = WC_Window; win->view = W_CreateTopView(screen); if (!win->view) { wfree(win); return NULL; } win->view->self = win; win->view->delegate = &_WindowViewDelegate; win->wname = wstrdup(name); /* add to the window list of the screen (application) */ win->nextPtr = screen->windowList; screen->windowList = win; WMCreateEventHandler(win->view, ExposureMask | StructureNotifyMask | ClientMessageMask | FocusChangeMask, handleEvents, win); W_ResizeView(win->view, DEFAULT_WIDTH, DEFAULT_HEIGHT); WMAddNotificationObserver(realizeObserver, win, WMViewRealizedNotification, win->view); win->flags.style = style; win->level = WMNormalWindowLevel; /* kluge. Find a better solution */ W_SetFocusOfTopLevel(win->view, win->view); return win; } static void setWindowTitle(WMWindow * win, const char *title) { WMScreen *scr = win->view->screen; XTextProperty property; int result; result = XmbTextListToTextProperty(scr->display, (char **)&title, 1, XStdICCTextStyle, &property); if (result == XNoMemory || result == XLocaleNotSupported) { wwarning(_("window title conversion error... using STRING encoding")); XStoreName(scr->display, win->view->window, title); } else { XSetWMName(scr->display, win->view->window, &property); if (property.value) XFree(property.value); } XChangeProperty(scr->display, win->view->window, scr->netwmName, scr->utf8String, 8, PropModeReplace, (unsigned char *)title, strlen(title)); } static void setMiniwindowTitle(WMWindow * win, const char *title) { WMScreen *scr = win->view->screen; XTextProperty property; int result; result = XmbTextListToTextProperty(scr->display, (char **)&title, 1, XStdICCTextStyle, &property); if (result == XNoMemory || result == XLocaleNotSupported) { wwarning(_("icon title conversion error... using STRING encoding")); XSetIconName(scr->display, win->view->window, title); } else { XSetWMIconName(scr->display, win->view->window, &property); if (property.value) XFree(property.value); } XChangeProperty(scr->display, win->view->window, scr->netwmIconName, scr->utf8String, 8, PropModeReplace, (unsigned char *)title, strlen(title)); } static void setMiniwindow(WMWindow *win, RImage *image) { WMScreen *scr = win->view->screen; unsigned long *data; int x, y; int o; if (!image) return; data = wmalloc((image->width * image->height + 2) * sizeof(long)); o = 0; data[o++] = image->width; data[o++] = image->height; for (y = 0; y < image->height; y++) { for (x = 0; x < image->width; x++) { unsigned long pixel; int offs = (x + y * image->width); if (image->format == RRGBFormat) { pixel = ((unsigned long) image->data[offs * 3 ]) << 16; pixel |= ((unsigned long) image->data[offs * 3 + 1]) << 8; pixel |= ((unsigned long) image->data[offs * 3 + 2]); } else { pixel = ((unsigned long) image->data[offs * 4 ]) << 16; pixel |= ((unsigned long) image->data[offs * 4 + 1]) << 8; pixel |= ((unsigned long) image->data[offs * 4 + 2]); pixel |= ((unsigned long) image->data[offs * 4 + 3]) << 24; } data[o++] = pixel; } } XChangeProperty(scr->display, win->view->window, scr->netwmIcon, XA_CARDINAL, 32, PropModeReplace, (unsigned char *)data, (image->width * image->height + 2)); wfree(data); } void WMSetWindowTitle(WMWindow * win, const char *title) { wassertr(title != NULL); if (win->title != NULL) wfree(win->title); win->title = wstrdup(title); if (win->view->flags.realized) { setWindowTitle(win, title); } } void WMSetWindowCloseAction(WMWindow * win, WMAction * action, void *clientData) { Atom *atoms = NULL; Atom *newAtoms; int count; WMScreen *scr = win->view->screen; if (win->view->flags.realized) { if (action && !win->closeAction) { if (!XGetWMProtocols(scr->display, win->view->window, &atoms, &count)) { count = 0; } newAtoms = wmalloc((count + 1) * sizeof(Atom)); if (count > 0) memcpy(newAtoms, atoms, count * sizeof(Atom)); newAtoms[count++] = scr->deleteWindowAtom; XSetWMProtocols(scr->display, win->view->window, newAtoms, count); if (atoms) XFree(atoms); wfree(newAtoms); } else if (!action && win->closeAction) { int i, ncount; if (XGetWMProtocols(scr->display, win->view->window, &atoms, &count) && count > 0) { newAtoms = wmalloc((count - 1) * sizeof(Atom)); ncount = 0; for (i = 0; i < count; i++) { if (atoms[i] != scr->deleteWindowAtom) { newAtoms[i] = atoms[i]; ncount++; } } XSetWMProtocols(scr->display, win->view->window, newAtoms, ncount); if (atoms) XFree(atoms); wfree(newAtoms); } } } win->closeAction = action; win->closeData = clientData; } static void willResizeWindow(W_ViewDelegate * self, WMView * view, unsigned *width, unsigned *height) { WMWindow *win = (WMWindow *) view->self; /* Parameter not used, but tell the compiler that it is ok */ (void) self; if (win->minSize.width > 0 && win->minSize.height > 0) { if (*width < win->minSize.width) *width = win->minSize.width; if (*height < win->minSize.height) *height = win->minSize.height; } if (win->maxSize.width > 0 && win->maxSize.height > 0) { if (*width > win->maxSize.width) *width = win->maxSize.width; if (*height > win->maxSize.height) *height = win->maxSize.height; } } static void setSizeHints(WMWindow * win) { XSizeHints *hints; hints = XAllocSizeHints(); if (!hints) { wwarning("could not allocate memory for window size hints"); return; } hints->flags = 0; if (win->flags.setPPos) { hints->flags |= PPosition; hints->x = win->ppos.x; hints->y = win->ppos.y; } if (win->flags.setUPos) { hints->flags |= USPosition; hints->x = win->upos.x; hints->y = win->upos.y; } if (win->minSize.width > 0 && win->minSize.height > 0) { hints->flags |= PMinSize; hints->min_width = win->minSize.width; hints->min_height = win->minSize.height; } if (win->maxSize.width > 0 && win->maxSize.height > 0) { hints->flags |= PMaxSize; hints->max_width = win->maxSize.width; hints->max_height = win->maxSize.height; } if (win->baseSize.width > 0 && win->baseSize.height > 0) { hints->flags |= PBaseSize; hints->base_width = win->baseSize.width; hints->base_height = win->baseSize.height; } if (win->resizeIncrement.width > 0 && win->resizeIncrement.height > 0) { hints->flags |= PResizeInc; hints->width_inc = win->resizeIncrement.width; hints->height_inc = win->resizeIncrement.height; } if (win->flags.setAspect) { hints->flags |= PAspect; hints->min_aspect.x = win->minAspect.x; hints->min_aspect.y = win->minAspect.y; hints->max_aspect.x = win->maxAspect.x; hints->max_aspect.y = win->maxAspect.y; } if (hints->flags) { XSetWMNormalHints(win->view->screen->display, win->view->window, hints); } XFree(hints); } 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 setWindowMakerHints(WMWindow * win) { GNUstepWMAttributes attribs; WMScreen *scr = WMWidgetScreen(win); memset(&attribs, 0, sizeof(GNUstepWMAttributes)); attribs.flags = GSWindowStyleAttr | GSWindowLevelAttr | GSExtraFlagsAttr; attribs.window_style = win->flags.style; attribs.window_level = win->level; if (win->flags.documentEdited) attribs.extra_flags = GSDocumentEditedFlag; else attribs.extra_flags = 0; writeGNUstepWMAttr(scr, win->view->window, &attribs); } static void realizeWindow(WMWindow * win) { XWMHints *hints; XClassHint *classHint; WMScreen *scr = win->view->screen; Atom atoms[4]; int count; classHint = XAllocClassHint(); classHint->res_name = win->wname; classHint->res_class = WMGetApplicationName(); XSetClassHint(scr->display, win->view->window, classHint); XFree(classHint); hints = XAllocWMHints(); hints->flags = 0; if (!scr->aflags.simpleApplication) { hints->flags |= WindowGroupHint; hints->window_group = scr->groupLeader; } if (win->miniImage) { hints->flags |= IconPixmapHint; hints->icon_pixmap = WMGetPixmapXID(win->miniImage); hints->icon_mask = WMGetPixmapMaskXID(win->miniImage); if (hints->icon_mask != None) { hints->flags |= IconMaskHint; } } if (hints->flags != 0) XSetWMHints(scr->display, win->view->window, hints); XFree(hints); count = 0; if (win->closeAction) { atoms[count++] = scr->deleteWindowAtom; } if (count > 0) XSetWMProtocols(scr->display, win->view->window, atoms, count); if (win->title || win->miniTitle) XmbSetWMProperties(scr->display, win->view->window, win->title, win->miniTitle, NULL, 0, NULL, NULL, NULL); setWindowMakerHints(win); setSizeHints(win); if (win->owner) { XSetTransientForHint(scr->display, win->view->window, win->owner->view->window); } if (win->title) setWindowTitle(win, win->title); } void WMSetWindowAspectRatio(WMWindow * win, int minX, int minY, int maxX, int maxY) { win->flags.setAspect = 1; win->minAspect.x = minX; win->minAspect.y = minY; win->maxAspect.x = maxX; win->maxAspect.y = maxY; if (win->view->flags.realized) setSizeHints(win); } void WMSetWindowInitialPosition(WMWindow * win, int x, int y) { win->flags.setPPos = 1; win->ppos.x = x; win->ppos.y = y; if (win->view->flags.realized) setSizeHints(win); WMMoveWidget(win, x, y); } void WMSetWindowUserPosition(WMWindow * win, int x, int y) { win->flags.setUPos = 1; win->upos.x = x; win->upos.y = y; if (win->view->flags.realized) setSizeHints(win); WMMoveWidget(win, x, y); } void WMSetWindowMinSize(WMWindow * win, unsigned width, unsigned height) { win->minSize.width = width; win->minSize.height = height; if (win->view->flags.realized) setSizeHints(win); } void WMSetWindowMaxSize(WMWindow * win, unsigned width, unsigned height) { win->maxSize.width = width; win->maxSize.height = height; if (win->view->flags.realized) setSizeHints(win); } void WMSetWindowBaseSize(WMWindow * win, unsigned width, unsigned height) { /* TODO: validate sizes */ win->baseSize.width = width; win->baseSize.height = height; if (win->view->flags.realized) setSizeHints(win); } void WMSetWindowResizeIncrements(WMWindow * win, unsigned wIncr, unsigned hIncr) { win->resizeIncrement.width = wIncr; win->resizeIncrement.height = hIncr; if (win->view->flags.realized) setSizeHints(win); } void WMSetWindowLevel(WMWindow * win, int level) { win->level = level; if (win->view->flags.realized) setWindowMakerHints(win); } void WMSetWindowDocumentEdited(WMWindow * win, Bool flag) { flag = ((flag == 0) ? 0 : 1); if (win->flags.documentEdited != flag) { win->flags.documentEdited = flag; if (win->view->flags.realized) setWindowMakerHints(win); } } void WMSetWindowMiniwindowImage(WMWindow * win, RImage * image) { if (win->view->flags.realized) setMiniwindow(win, image); } void WMSetWindowMiniwindowPixmap(WMWindow * win, WMPixmap * pixmap) { if ((win->miniImage && !pixmap) || (!win->miniImage && pixmap)) { if (win->miniImage) WMReleasePixmap(win->miniImage); if (pixmap) win->miniImage = WMRetainPixmap(pixmap); else win->miniImage = NULL; if (win->view->flags.realized) { XWMHints *hints; hints = XGetWMHints(win->view->screen->display, win->view->window); if (!hints) { hints = XAllocWMHints(); if (!hints) { wwarning("could not allocate memory for WM hints"); return; } hints->flags = 0; } if (pixmap) { hints->flags |= IconPixmapHint; hints->icon_pixmap = WMGetPixmapXID(pixmap); hints->icon_mask = WMGetPixmapMaskXID(pixmap); if (hints->icon_mask != None) { hints->flags |= IconMaskHint; } } XSetWMHints(win->view->screen->display, win->view->window, hints); XFree(hints); } } } void WMSetWindowMiniwindowTitle(WMWindow * win, const char *title) { if (win && ((win->miniTitle && !title) || (!win->miniTitle && title) || (title && win->miniTitle && strcoll(title, win->miniTitle) != 0))) { if (win->miniTitle) wfree(win->miniTitle); if (title) win->miniTitle = wstrdup(title); else win->miniTitle = NULL; if (win->view->flags.realized) { setMiniwindowTitle(win, title); } } } void WMCloseWindow(WMWindow * win) { WMUnmapWidget(win); /* withdraw the window */ if (win->view->flags.realized) XWithdrawWindow(win->view->screen->display, win->view->window, win->view->screen->screen); } static void handleEvents(XEvent * event, void *clientData) { _Window *win = (_Window *) clientData; W_View *view = win->view; switch (event->type) { case ClientMessage: if (event->xclient.message_type == win->view->screen->protocolsAtom && event->xclient.format == 32 && event->xclient.data.l[0] == win->view->screen->deleteWindowAtom) { if (win->closeAction) { (*win->closeAction) (win, win->closeData); } } break; /* * was causing windows to ignore commands like closeWindow * after the windows is iconized/restored or a workspace change * if this is really needed, put the MapNotify portion too and * fix the restack bug in wmaker case UnmapNotify: WMUnmapWidget(win); break; * case MapNotify: WMMapWidget(win); break; */ case DestroyNotify: destroyWindow(win); break; case 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) { 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 { Window foo; XTranslateCoordinates(view->screen->display, view->window, view->screen->rootWin, event->xconfigure.x, event->xconfigure.y, &view->pos.x, &view->pos.y, &foo); } } break; } } static void destroyWindow(_Window * win) { WMScreen *scr = win->view->screen; WMRemoveNotificationObserver(win); if (scr->windowList == win) { scr->windowList = scr->windowList->nextPtr; } else { WMWindow *ptr; ptr = scr->windowList; if (ptr) { while (ptr->nextPtr) { if (ptr->nextPtr == win) { ptr->nextPtr = ptr->nextPtr->nextPtr; break; } ptr = ptr->nextPtr; } } } if (win->title) { wfree(win->title); } if (win->miniTitle) { wfree(win->miniTitle); } if (win->miniImage) { WMReleasePixmap(win->miniImage); } if (win->wname) wfree(win->wname); wfree(win); } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/wbutton.c������������������������������������������������������������������0000644�0001750�0001750�00000042731�13431646201�013572� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include "WINGsP.h" typedef struct W_Button { W_Class widgetClass; WMView *view; char *caption; char *altCaption; WMFont *font; WMColor *textColor; WMColor *altTextColor; WMColor *disTextColor; W_Pixmap *image; W_Pixmap *altImage; W_Pixmap *tsImage; W_Pixmap *dimage; void *clientData; WMAction *action; int tag; int groupIndex; float periodicDelay; float periodicInterval; WMHandlerID *timer; /* for continuous mode */ struct { WMButtonType type:4; WMImagePosition imagePosition:4; WMAlignment alignment:2; unsigned int selected:2; unsigned int enabled:1; unsigned int dimsWhenDisabled:1; unsigned int bordered:1; unsigned int springLoaded:1; unsigned int pushIn:1; /* change relief while pushed */ unsigned int pushLight:1; /* highlight while pushed */ unsigned int pushChange:1; /* change caption while pushed */ unsigned int stateLight:1; /* state indicated by highlight */ unsigned int stateChange:1; /* state indicated by caption change */ unsigned int statePush:1; /* state indicated by relief */ unsigned int continuous:1; /* continually perform action */ unsigned int prevSelected:1; unsigned int pushed:1; unsigned int wasPushed:1; unsigned int redrawPending:1; unsigned int addedObserver:1; } flags; } Button; #define DEFAULT_BUTTON_WIDTH 60 #define DEFAULT_BUTTON_HEIGHT 24 #define DEFAULT_BUTTON_ALIGNMENT WACenter #define DEFAULT_BUTTON_IS_BORDERED True #define DEFAULT_RADIO_WIDTH 100 #define DEFAULT_RADIO_HEIGHT 20 #define DEFAULT_RADIO_ALIGNMENT WALeft #define DEFAULT_RADIO_IMAGE_POSITION WIPLeft #define DEFAULT_RADIO_TEXT "Radio" #define DEFAULT_SWITCH_WIDTH 100 #define DEFAULT_SWITCH_HEIGHT 20 #define DEFAULT_SWITCH_ALIGNMENT WALeft #define DEFAULT_SWITCH_IMAGE_POSITION WIPLeft #define DEFAULT_SWITCH_TEXT "Switch" static void destroyButton(Button * bPtr); static void paintButton(Button * bPtr); static void handleEvents(XEvent * event, void *data); static void handleActionEvents(XEvent * event, void *data); static char *WMPushedRadioNotification = "WMPushedRadioNotification"; WMButton *WMCreateCustomButton(WMWidget * parent, int behaviourMask) { Button *bPtr; bPtr = wmalloc(sizeof(Button)); bPtr->widgetClass = WC_Button; bPtr->view = W_CreateView(W_VIEW(parent)); if (!bPtr->view) { wfree(bPtr); return NULL; } bPtr->view->self = bPtr; bPtr->flags.type = 0; bPtr->flags.springLoaded = (behaviourMask & WBBSpringLoadedMask) != 0; bPtr->flags.pushIn = (behaviourMask & WBBPushInMask) != 0; bPtr->flags.pushChange = (behaviourMask & WBBPushChangeMask) != 0; bPtr->flags.pushLight = (behaviourMask & WBBPushLightMask) != 0; bPtr->flags.stateLight = (behaviourMask & WBBStateLightMask) != 0; bPtr->flags.stateChange = (behaviourMask & WBBStateChangeMask) != 0; bPtr->flags.statePush = (behaviourMask & WBBStatePushMask) != 0; W_ResizeView(bPtr->view, DEFAULT_BUTTON_WIDTH, DEFAULT_BUTTON_HEIGHT); bPtr->flags.alignment = DEFAULT_BUTTON_ALIGNMENT; bPtr->flags.bordered = DEFAULT_BUTTON_IS_BORDERED; bPtr->flags.enabled = 1; bPtr->flags.dimsWhenDisabled = 1; WMCreateEventHandler(bPtr->view, ExposureMask | StructureNotifyMask, handleEvents, bPtr); WMCreateEventHandler(bPtr->view, ButtonPressMask | ButtonReleaseMask | EnterWindowMask | LeaveWindowMask, handleActionEvents, bPtr); W_ResizeView(bPtr->view, DEFAULT_BUTTON_WIDTH, DEFAULT_BUTTON_HEIGHT); bPtr->flags.alignment = DEFAULT_BUTTON_ALIGNMENT; bPtr->flags.bordered = DEFAULT_BUTTON_IS_BORDERED; return bPtr; } WMButton *WMCreateButton(WMWidget * parent, WMButtonType type) { W_Screen *scrPtr = W_VIEW(parent)->screen; Button *bPtr; switch (type) { case WBTMomentaryPush: bPtr = WMCreateCustomButton(parent, WBBSpringLoadedMask | WBBPushInMask | WBBPushLightMask); break; case WBTMomentaryChange: bPtr = WMCreateCustomButton(parent, WBBSpringLoadedMask | WBBPushChangeMask); break; case WBTPushOnPushOff: bPtr = WMCreateCustomButton(parent, WBBPushInMask | WBBStatePushMask | WBBStateLightMask); break; case WBTToggle: bPtr = WMCreateCustomButton(parent, WBBPushInMask | WBBStateChangeMask | WBBStatePushMask); break; case WBTOnOff: bPtr = WMCreateCustomButton(parent, WBBStateLightMask); break; case WBTSwitch: bPtr = WMCreateCustomButton(parent, WBBStateChangeMask); bPtr->flags.bordered = 0; bPtr->image = WMRetainPixmap(scrPtr->checkButtonImageOff); bPtr->altImage = WMRetainPixmap(scrPtr->checkButtonImageOn); break; case WBTRadio: bPtr = WMCreateCustomButton(parent, WBBStateChangeMask); bPtr->flags.bordered = 0; bPtr->image = WMRetainPixmap(scrPtr->radioButtonImageOff); bPtr->altImage = WMRetainPixmap(scrPtr->radioButtonImageOn); break; case WBTTriState: bPtr = WMCreateCustomButton(parent, WBBStateChangeMask); bPtr->flags.bordered = 0; bPtr->image = WMRetainPixmap(scrPtr->tristateButtonImageOff); bPtr->altImage = WMRetainPixmap(scrPtr->tristateButtonImageOn); bPtr->tsImage = WMRetainPixmap(scrPtr->tristateButtonImageTri); break; default: case WBTMomentaryLight: bPtr = WMCreateCustomButton(parent, WBBSpringLoadedMask | WBBPushLightMask); bPtr->flags.bordered = 1; break; } bPtr->flags.type = type; if (type == WBTRadio) { W_ResizeView(bPtr->view, DEFAULT_RADIO_WIDTH, DEFAULT_RADIO_HEIGHT); WMSetButtonText(bPtr, DEFAULT_RADIO_TEXT); bPtr->flags.alignment = DEFAULT_RADIO_ALIGNMENT; bPtr->flags.imagePosition = DEFAULT_RADIO_IMAGE_POSITION; } else if (type == WBTSwitch || type == WBTTriState) { W_ResizeView(bPtr->view, DEFAULT_SWITCH_WIDTH, DEFAULT_SWITCH_HEIGHT); WMSetButtonText(bPtr, DEFAULT_SWITCH_TEXT); bPtr->flags.alignment = DEFAULT_SWITCH_ALIGNMENT; bPtr->flags.imagePosition = DEFAULT_SWITCH_IMAGE_POSITION; } return bPtr; } static void updateDisabledMask(WMButton * bPtr) { WMScreen *scr = WMWidgetScreen(bPtr); Display *dpy = scr->display; if (bPtr->image) { XGCValues gcv; if (bPtr->dimage->mask) { XFreePixmap(dpy, bPtr->dimage->mask); bPtr->dimage->mask = None; } if (bPtr->flags.dimsWhenDisabled) { bPtr->dimage->mask = XCreatePixmap(dpy, scr->stipple, bPtr->dimage->width, bPtr->dimage->height, 1); XSetForeground(dpy, scr->monoGC, 0); XFillRectangle(dpy, bPtr->dimage->mask, scr->monoGC, 0, 0, bPtr->dimage->width, bPtr->dimage->height); gcv.foreground = 1; gcv.background = 0; gcv.stipple = scr->stipple; gcv.fill_style = FillStippled; gcv.clip_mask = bPtr->image->mask; gcv.clip_x_origin = 0; gcv.clip_y_origin = 0; XChangeGC(dpy, scr->monoGC, GCForeground | GCBackground | GCStipple | GCFillStyle | GCClipMask | GCClipXOrigin | GCClipYOrigin, &gcv); XFillRectangle(dpy, bPtr->dimage->mask, scr->monoGC, 0, 0, bPtr->dimage->width, bPtr->dimage->height); gcv.fill_style = FillSolid; gcv.clip_mask = None; XChangeGC(dpy, scr->monoGC, GCFillStyle | GCClipMask, &gcv); } } } void WMSetButtonImageDefault(WMButton * bPtr) { WMSetButtonImage(bPtr, WMWidgetScreen(bPtr)->buttonArrow); WMSetButtonAltImage(bPtr, WMWidgetScreen(bPtr)->pushedButtonArrow); } void WMSetButtonImage(WMButton * bPtr, WMPixmap * image) { if (bPtr->image != NULL) WMReleasePixmap(bPtr->image); bPtr->image = WMRetainPixmap(image); if (bPtr->dimage) { bPtr->dimage->pixmap = None; WMReleasePixmap(bPtr->dimage); bPtr->dimage = NULL; } if (image) { bPtr->dimage = WMCreatePixmapFromXPixmaps(WMWidgetScreen(bPtr), image->pixmap, None, image->width, image->height, image->depth); updateDisabledMask(bPtr); } if (bPtr->view->flags.realized) { paintButton(bPtr); } } void WMSetButtonAltImage(WMButton * bPtr, WMPixmap * image) { if (bPtr->altImage != NULL) WMReleasePixmap(bPtr->altImage); bPtr->altImage = WMRetainPixmap(image); if (bPtr->view->flags.realized) { paintButton(bPtr); } } void WMSetButtonImagePosition(WMButton * bPtr, WMImagePosition position) { bPtr->flags.imagePosition = position; if (bPtr->view->flags.realized) { paintButton(bPtr); } } void WMSetButtonTextAlignment(WMButton * bPtr, WMAlignment alignment) { bPtr->flags.alignment = alignment; if (bPtr->view->flags.realized) { paintButton(bPtr); } } void WMSetButtonText(WMButton * bPtr, const char *text) { if (bPtr->caption) wfree(bPtr->caption); if (text != NULL) { bPtr->caption = wstrdup(text); } else { bPtr->caption = NULL; } if (bPtr->view->flags.realized) { paintButton(bPtr); } } const char *WMGetButtonText(WMButton *bPtr) { return bPtr->caption; } void WMSetButtonAltText(WMButton * bPtr, const char *text) { if (bPtr->altCaption) wfree(bPtr->altCaption); if (text != NULL) { bPtr->altCaption = wstrdup(text); } else { bPtr->altCaption = NULL; } if (bPtr->view->flags.realized) { paintButton(bPtr); } } void WMSetButtonTextColor(WMButton * bPtr, WMColor * color) { if (bPtr->textColor) WMReleaseColor(bPtr->textColor); bPtr->textColor = WMRetainColor(color); } void WMSetButtonAltTextColor(WMButton * bPtr, WMColor * color) { if (bPtr->altTextColor) WMReleaseColor(bPtr->altTextColor); bPtr->altTextColor = WMRetainColor(color); } void WMSetButtonDisabledTextColor(WMButton * bPtr, WMColor * color) { if (bPtr->disTextColor) WMReleaseColor(bPtr->disTextColor); bPtr->disTextColor = WMRetainColor(color); } void WMSetButtonSelected(WMButton * bPtr, int isSelected) { if ((bPtr->flags.type == WBTTriState) && (isSelected < 0)) bPtr->flags.selected = 2; else bPtr->flags.selected = isSelected ? 1 : 0; if (bPtr->view->flags.realized) { paintButton(bPtr); } if (bPtr->groupIndex > 0) WMPostNotificationName(WMPushedRadioNotification, bPtr, NULL); } int WMGetButtonSelected(WMButton * bPtr) { CHECK_CLASS(bPtr, WC_Button); if ((bPtr->flags.type == WBTTriState) && (bPtr->flags.selected == 2)) return -1; return bPtr->flags.selected; } void WMSetButtonBordered(WMButton * bPtr, int isBordered) { bPtr->flags.bordered = isBordered; if (bPtr->view->flags.realized) { paintButton(bPtr); } } void WMSetButtonFont(WMButton * bPtr, WMFont * font) { if (bPtr->font) WMReleaseFont(bPtr->font); bPtr->font = WMRetainFont(font); } void WMSetButtonEnabled(WMButton * bPtr, Bool flag) { bPtr->flags.enabled = ((flag == 0) ? 0 : 1); if (bPtr->view->flags.mapped) { paintButton(bPtr); } } int WMGetButtonEnabled(WMButton * bPtr) { CHECK_CLASS(bPtr, WC_Button); return bPtr->flags.enabled; } void WMSetButtonImageDimsWhenDisabled(WMButton * bPtr, Bool flag) { bPtr->flags.dimsWhenDisabled = ((flag == 0) ? 0 : 1); updateDisabledMask(bPtr); } void WMSetButtonTag(WMButton * bPtr, int tag) { bPtr->tag = tag; } void WMPerformButtonClick(WMButton * bPtr) { CHECK_CLASS(bPtr, WC_Button); if (!bPtr->flags.enabled) return; bPtr->flags.pushed = 1; bPtr->flags.selected = 1; if (bPtr->view->flags.mapped) { paintButton(bPtr); XFlush(WMScreenDisplay(WMWidgetScreen(bPtr))); wusleep(20000); } bPtr->flags.pushed = 0; if (bPtr->groupIndex > 0) { WMPostNotificationName(WMPushedRadioNotification, bPtr, NULL); } if (bPtr->action) (*bPtr->action) (bPtr, bPtr->clientData); if (bPtr->view->flags.mapped) paintButton(bPtr); } void WMSetButtonAction(WMButton * bPtr, WMAction * action, void *clientData) { CHECK_CLASS(bPtr, WC_Button); bPtr->action = action; bPtr->clientData = clientData; } static void radioPushObserver(void *observerData, WMNotification * notification) { WMButton *bPtr = (WMButton *) observerData; WMButton *pushedButton = (WMButton *) WMGetNotificationObject(notification); if (bPtr != pushedButton && pushedButton->groupIndex == bPtr->groupIndex && bPtr->groupIndex != 0) { if (bPtr->flags.selected) { bPtr->flags.selected = 0; paintButton(bPtr); } } } void WMGroupButtons(WMButton * bPtr, WMButton * newMember) { static int tagIndex = 0; CHECK_CLASS(bPtr, WC_Button); CHECK_CLASS(newMember, WC_Button); if (!bPtr->flags.addedObserver) { WMAddNotificationObserver(radioPushObserver, bPtr, WMPushedRadioNotification, NULL); bPtr->flags.addedObserver = 1; } if (!newMember->flags.addedObserver) { WMAddNotificationObserver(radioPushObserver, newMember, WMPushedRadioNotification, NULL); newMember->flags.addedObserver = 1; } if (bPtr->groupIndex == 0) { bPtr->groupIndex = ++tagIndex; } newMember->groupIndex = bPtr->groupIndex; } void WMSetButtonContinuous(WMButton * bPtr, Bool flag) { bPtr->flags.continuous = ((flag == 0) ? 0 : 1); if (bPtr->timer) { WMDeleteTimerHandler(bPtr->timer); bPtr->timer = NULL; } } void WMSetButtonPeriodicDelay(WMButton * bPtr, float delay, float interval) { bPtr->periodicInterval = interval; bPtr->periodicDelay = delay; } static void paintButton(Button * bPtr) { W_Screen *scrPtr = bPtr->view->screen; WMReliefType relief; int offset; char *caption; WMPixmap *image; WMColor *textColor; WMColor *backColor; backColor = NULL; caption = bPtr->caption; if (bPtr->flags.enabled) { textColor = (bPtr->textColor != NULL ? bPtr->textColor : scrPtr->black); } else { textColor = (bPtr->disTextColor != NULL ? bPtr->disTextColor : scrPtr->darkGray); } if (bPtr->flags.enabled || !bPtr->dimage) image = bPtr->image; else image = bPtr->dimage; offset = 0; if (bPtr->flags.bordered) relief = WRRaised; else relief = WRFlat; if (bPtr->flags.selected) { if (bPtr->flags.stateLight) { backColor = scrPtr->white; textColor = scrPtr->black; } if (bPtr->flags.stateChange) { if (bPtr->altCaption) caption = bPtr->altCaption; if (bPtr->flags.selected == 2) image = bPtr->tsImage; else if (bPtr->altImage) image = bPtr->altImage; if (bPtr->altTextColor) textColor = bPtr->altTextColor; } if (bPtr->flags.statePush && bPtr->flags.bordered) { relief = WRSunken; offset = 1; } } if (bPtr->flags.pushed) { if (bPtr->flags.pushIn) { relief = WRPushed; offset = 1; } if (bPtr->flags.pushLight) { backColor = scrPtr->white; textColor = scrPtr->black; } if (bPtr->flags.pushChange) { if (bPtr->altCaption) caption = bPtr->altCaption; if (bPtr->altImage) image = bPtr->altImage; if (bPtr->altTextColor) textColor = bPtr->altTextColor; } } W_PaintTextAndImage(bPtr->view, True, textColor, (bPtr->font != NULL ? bPtr->font : scrPtr->normalFont), relief, caption, bPtr->flags.alignment, image, bPtr->flags.imagePosition, backColor, offset); } static void handleEvents(XEvent * event, void *data) { Button *bPtr = (Button *) data; CHECK_CLASS(data, WC_Button); switch (event->type) { case Expose: if (event->xexpose.count != 0) break; paintButton(bPtr); break; case DestroyNotify: destroyButton(bPtr); break; } } static void autoRepeat(void *data) { Button *bPtr = (Button *) data; if (bPtr->action && bPtr->flags.pushed) (*bPtr->action) (bPtr, bPtr->clientData); bPtr->timer = WMAddTimerHandler((int)(bPtr->periodicInterval * 1000), autoRepeat, bPtr); } static void handleActionEvents(XEvent * event, void *data) { Button *bPtr = (Button *) data; int doclick = 0, dopaint = 0; CHECK_CLASS(data, WC_Button); if (!bPtr->flags.enabled) return; switch (event->type) { case EnterNotify: if (bPtr->groupIndex == 0) { bPtr->flags.pushed = bPtr->flags.wasPushed; if (bPtr->flags.pushed) { bPtr->flags.selected = !bPtr->flags.prevSelected; dopaint = 1; } } break; case LeaveNotify: if (bPtr->groupIndex == 0) { bPtr->flags.wasPushed = bPtr->flags.pushed; if (bPtr->flags.pushed) { bPtr->flags.selected = bPtr->flags.prevSelected; dopaint = 1; } bPtr->flags.pushed = 0; } break; case ButtonPress: if (event->xbutton.button == Button1) { static const unsigned int next_state[4] = { [0] = 1, [1] = 2, [2] = 0 }; bPtr->flags.prevSelected = bPtr->flags.selected; bPtr->flags.wasPushed = 0; bPtr->flags.pushed = 1; if (bPtr->groupIndex > 0) { bPtr->flags.selected = 1; dopaint = 1; break; } if (bPtr->flags.type == WBTTriState) bPtr->flags.selected = next_state[bPtr->flags.selected]; else bPtr->flags.selected = !bPtr->flags.selected; dopaint = 1; if (bPtr->flags.continuous && !bPtr->timer) { bPtr->timer = WMAddTimerHandler((int)(bPtr->periodicDelay * 1000), autoRepeat, bPtr); } } break; case ButtonRelease: if (event->xbutton.button == Button1) { if (bPtr->flags.pushed) { if (bPtr->groupIndex == 0 || (bPtr->flags.selected && bPtr->groupIndex > 0)) doclick = 1; dopaint = 1; if (bPtr->flags.springLoaded) { bPtr->flags.selected = bPtr->flags.prevSelected; } } bPtr->flags.pushed = 0; } if (bPtr->timer) { WMDeleteTimerHandler(bPtr->timer); bPtr->timer = NULL; } break; } if (dopaint) paintButton(bPtr); if (doclick) { if (bPtr->flags.selected && bPtr->groupIndex > 0) { WMPostNotificationName(WMPushedRadioNotification, bPtr, NULL); } if (bPtr->action) (*bPtr->action) (bPtr, bPtr->clientData); } } static void destroyButton(Button * bPtr) { if (bPtr->flags.addedObserver) { WMRemoveNotificationObserver(bPtr); } if (bPtr->timer) WMDeleteTimerHandler(bPtr->timer); if (bPtr->font) WMReleaseFont(bPtr->font); if (bPtr->caption) wfree(bPtr->caption); if (bPtr->altCaption) wfree(bPtr->altCaption); if (bPtr->textColor) WMReleaseColor(bPtr->textColor); if (bPtr->altTextColor) WMReleaseColor(bPtr->altTextColor); if (bPtr->disTextColor) WMReleaseColor(bPtr->disTextColor); if (bPtr->image) WMReleasePixmap(bPtr->image); if (bPtr->dimage) { /* yuck.. kluge */ bPtr->dimage->pixmap = None; WMReleasePixmap(bPtr->dimage); } if (bPtr->altImage) WMReleasePixmap(bPtr->altImage); if (bPtr->tsImage) WMReleasePixmap(bPtr->tsImage); wfree(bPtr); } ���������������������������������������WindowMaker-0.95.9/WINGs/wcolor.c�������������������������������������������������������������������0000644�0001750�0001750�00000016673�13431646201�013403� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include "WINGsP.h" #include "wconfig.h" #include <wraster.h> #define LIGHT_STIPPLE_WIDTH 4 #define LIGHT_STIPPLE_HEIGHT 4 static char LIGHT_STIPPLE_BITS[] = { 0x05, 0x0a, 0x05, 0x0a }; #define DARK_STIPPLE_WIDTH 4 #define DARK_STIPPLE_HEIGHT 4 static char DARK_STIPPLE_BITS[] = { 0x0a, 0x04, 0x0a, 0x01 }; static WMColor *createRGBAColor(WMScreen * scr, unsigned short red, unsigned short green, unsigned short blue, unsigned short alpha); /* * TODO: make the color creation code return the same WMColor for the * same colors. * make findCloseColor() find the closest color in the RContext pallette * or in the other colors allocated by WINGs. */ static WMColor *findCloseColor(WMScreen * scr, unsigned short red, unsigned short green, unsigned short blue, unsigned short alpha) { WMColor *color; XColor xcolor; RColor rcolor; rcolor.red = red >> 8; rcolor.green = green >> 8; rcolor.blue = blue >> 8; rcolor.alpha = alpha >> 8; if (!RGetClosestXColor(scr->rcontext, &rcolor, &xcolor)) return NULL; if (!XAllocColor(scr->display, scr->colormap, &xcolor)) return NULL; color = wmalloc(sizeof(WMColor)); color->screen = scr; color->refCount = 1; color->color = xcolor; color->alpha = alpha; color->flags.exact = 1; color->gc = NULL; return color; } static WMColor *createRGBAColor(WMScreen * scr, unsigned short red, unsigned short green, unsigned short blue, unsigned short alpha) { WMColor *color; XColor xcolor; xcolor.red = red; xcolor.green = green; xcolor.blue = blue; xcolor.flags = DoRed | DoGreen | DoBlue; if (!XAllocColor(scr->display, scr->colormap, &xcolor)) return NULL; color = wmalloc(sizeof(WMColor)); color->screen = scr; color->refCount = 1; color->color = xcolor; color->alpha = alpha; color->flags.exact = 1; color->gc = NULL; return color; } WMColor *WMCreateRGBColor(WMScreen * scr, unsigned short red, unsigned short green, unsigned short blue, Bool exact) { WMColor *color = NULL; if (!exact || !(color = createRGBAColor(scr, red, green, blue, 0xffff))) { color = findCloseColor(scr, red, green, blue, 0xffff); } if (!color) color = WMBlackColor(scr); return color; } RColor WMGetRColorFromColor(WMColor * color) { RColor rcolor; rcolor.red = color->color.red >> 8; rcolor.green = color->color.green >> 8; rcolor.blue = color->color.blue >> 8; rcolor.alpha = color->alpha >> 8; return rcolor; } WMColor *WMCreateRGBAColor(WMScreen * scr, unsigned short red, unsigned short green, unsigned short blue, unsigned short alpha, Bool exact) { WMColor *color = NULL; if (!exact || !(color = createRGBAColor(scr, red, green, blue, alpha))) { color = findCloseColor(scr, red, green, blue, alpha); } if (!color) color = WMBlackColor(scr); return color; } WMColor *WMCreateNamedColor(WMScreen * scr, const char *name, Bool exact) { WMColor *color; XColor xcolor; if (!XParseColor(scr->display, scr->colormap, name, &xcolor)) return NULL; if (scr->visual->class == TrueColor) exact = True; if (!exact || !(color = createRGBAColor(scr, xcolor.red, xcolor.green, xcolor.blue, 0xffff))) { color = findCloseColor(scr, xcolor.red, xcolor.green, xcolor.blue, 0xffff); } return color; } WMColor *WMRetainColor(WMColor * color) { assert(color != NULL); color->refCount++; return color; } void WMReleaseColor(WMColor * color) { color->refCount--; if (color->refCount < 1) { XFreeColors(color->screen->display, color->screen->colormap, &(color->color.pixel), 1, 0); if (color->gc) XFreeGC(color->screen->display, color->gc); wfree(color); } } void WMSetColorAlpha(WMColor * color, unsigned short alpha) { color->alpha = alpha; } void WMPaintColorSwatch(WMColor * color, Drawable d, int x, int y, unsigned int width, unsigned int height) { XFillRectangle(color->screen->display, d, WMColorGC(color), x, y, width, height); } WMPixel WMColorPixel(WMColor * color) { return color->color.pixel; } GC WMColorGC(WMColor * color) { if (!color->gc) { XGCValues gcv; WMScreen *scr = color->screen; gcv.foreground = color->color.pixel; gcv.graphics_exposures = False; color->gc = XCreateGC(scr->display, scr->rcontext->drawable, GCForeground | GCGraphicsExposures, &gcv); } return color->gc; } void WMSetColorInGC(WMColor * color, GC gc) { XSetForeground(color->screen->display, gc, color->color.pixel); } /* "system" colors */ WMColor *WMWhiteColor(WMScreen * scr) { if (!scr->white) { scr->white = WMCreateRGBColor(scr, 0xffff, 0xffff, 0xffff, True); if (!scr->white->flags.exact) wwarning(_("could not allocate %s color"), _("white")); } return WMRetainColor(scr->white); } WMColor *WMBlackColor(WMScreen * scr) { if (!scr->black) { scr->black = WMCreateRGBColor(scr, 0, 0, 0, True); if (!scr->black->flags.exact) wwarning(_("could not allocate %s color"), _("black")); } return WMRetainColor(scr->black); } WMColor *WMGrayColor(WMScreen * scr) { if (!scr->gray) { WMColor *color; if (scr->depth == 1) { Pixmap stipple; WMColor *white = WMWhiteColor(scr); WMColor *black = WMBlackColor(scr); XGCValues gcv; stipple = XCreateBitmapFromData(scr->display, W_DRAWABLE(scr), LIGHT_STIPPLE_BITS, LIGHT_STIPPLE_WIDTH, LIGHT_STIPPLE_HEIGHT); color = createRGBAColor(scr, 0xffff, 0xffff, 0xffff, 0xffff); gcv.foreground = white->color.pixel; gcv.background = black->color.pixel; gcv.fill_style = FillStippled; gcv.stipple = stipple; color->gc = XCreateGC(scr->display, W_DRAWABLE(scr), GCForeground | GCBackground | GCStipple | GCFillStyle | GCGraphicsExposures, &gcv); XFreePixmap(scr->display, stipple); WMReleaseColor(white); WMReleaseColor(black); } else { color = WMCreateRGBColor(scr, 0xaeba, 0xaaaa, 0xaeba, True); if (!color->flags.exact) wwarning(_("could not allocate %s color"), _("gray")); } scr->gray = color; } return WMRetainColor(scr->gray); } WMColor *WMDarkGrayColor(WMScreen * scr) { if (!scr->darkGray) { WMColor *color; if (scr->depth == 1) { Pixmap stipple; WMColor *white = WMWhiteColor(scr); WMColor *black = WMBlackColor(scr); XGCValues gcv; stipple = XCreateBitmapFromData(scr->display, W_DRAWABLE(scr), DARK_STIPPLE_BITS, DARK_STIPPLE_WIDTH, DARK_STIPPLE_HEIGHT); color = createRGBAColor(scr, 0, 0, 0, 0xffff); gcv.foreground = white->color.pixel; gcv.background = black->color.pixel; gcv.fill_style = FillStippled; gcv.stipple = stipple; color->gc = XCreateGC(scr->display, W_DRAWABLE(scr), GCForeground | GCBackground | GCStipple | GCFillStyle | GCGraphicsExposures, &gcv); XFreePixmap(scr->display, stipple); WMReleaseColor(white); WMReleaseColor(black); } else { color = WMCreateRGBColor(scr, 0x5144, 0x5555, 0x5144, True); if (!color->flags.exact) wwarning(_("could not allocate %s color"), _("dark gray")); } scr->darkGray = color; } return WMRetainColor(scr->darkGray); } unsigned short WMRedComponentOfColor(WMColor * color) { return color->color.red; } unsigned short WMGreenComponentOfColor(WMColor * color) { return color->color.green; } unsigned short WMBlueComponentOfColor(WMColor * color) { return color->color.blue; } unsigned short WMGetColorAlpha(WMColor * color) { return color->alpha; } char *WMGetColorRGBDescription(WMColor * color) { char *str = wmalloc(8); if (snprintf(str, 8, "#%02x%02x%02x", color->color.red >> 8, color->color.green >> 8, color->color.blue >> 8) >= 8) { wfree(str); return NULL; } return str; } ���������������������������������������������������������������������WindowMaker-0.95.9/WINGs/wappresource.c�������������������������������������������������������������0000644�0001750�0001750�00000006530�13431646201�014604� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include <unistd.h> #include "WINGsP.h" #include <X11/Xutil.h> #include "GNUstep.h" void WMSetApplicationIconWindow(WMScreen * scr, Window window) { scr->applicationIconWindow = window; if (scr->groupLeader) { XWMHints *hints; hints = XGetWMHints(scr->display, scr->groupLeader); hints->flags |= IconWindowHint; hints->icon_window = window; XSetWMHints(scr->display, scr->groupLeader, hints); XFree(hints); } } void WMSetApplicationIconImage(WMScreen * scr, RImage * image) { WMPixmap *icon; if (scr->applicationIconImage == image) return; if (scr->applicationIconImage) RReleaseImage(scr->applicationIconImage); scr->applicationIconImage = RRetainImage(image); /* TODO: check whether we should set the pixmap only if there's none yet */ if (image != NULL && (icon = WMCreatePixmapFromRImage(scr, image, 128)) != NULL) { WMSetApplicationIconPixmap(scr, icon); WMReleasePixmap(icon); } } RImage *WMGetApplicationIconImage(WMScreen * scr) { return scr->applicationIconImage; } void WMSetApplicationIconPixmap(WMScreen * scr, WMPixmap * icon) { if (scr->applicationIconPixmap == icon) return; if (scr->applicationIconPixmap) WMReleasePixmap(scr->applicationIconPixmap); scr->applicationIconPixmap = WMRetainPixmap(icon); if (scr->groupLeader) { XWMHints *hints; hints = XGetWMHints(scr->display, scr->groupLeader); hints->flags |= IconPixmapHint | IconMaskHint; hints->icon_pixmap = (icon != NULL ? icon->pixmap : None); hints->icon_mask = (icon != NULL ? icon->mask : None); XSetWMHints(scr->display, scr->groupLeader, hints); XFree(hints); } } WMPixmap *WMGetApplicationIconPixmap(WMScreen * scr) { return scr->applicationIconPixmap; } WMPixmap *WMCreateApplicationIconBlendedPixmap(WMScreen * scr, const RColor * color) { WMPixmap *pix; if (scr->applicationIconImage) { static const RColor gray = { /* red */ 0xAE, /* green */ 0xAA, /* blue */ 0xAE, /* alpha */ 0xFF }; if (!color) color = &gray; pix = WMCreateBlendedPixmapFromRImage(scr, scr->applicationIconImage, color); } else { pix = NULL; } return pix; } void WMSetApplicationHasAppIcon(WMScreen * scr, Bool flag) { scr->aflags.hasAppIcon = ((flag == 0) ? 0 : 1); } void W_InitApplication(WMScreen * scr) { Window leader; XClassHint *classHint; XWMHints *hints; leader = XCreateSimpleWindow(scr->display, scr->rootWin, -1, -1, 1, 1, 0, 0, 0); if (!scr->aflags.simpleApplication) { classHint = XAllocClassHint(); classHint->res_name = "groupLeader"; classHint->res_class = WMApplication.applicationName; XSetClassHint(scr->display, leader, classHint); XFree(classHint); XSetCommand(scr->display, leader, WMApplication.argv, WMApplication.argc); hints = XAllocWMHints(); hints->flags = WindowGroupHint; hints->window_group = leader; /* This code will never actually be reached, because to have * scr->applicationIconPixmap set we need to have a screen first, * but this function is called in the screen creation process. * -Dan */ if (scr->applicationIconPixmap) { hints->flags |= IconPixmapHint; hints->icon_pixmap = scr->applicationIconPixmap->pixmap; if (scr->applicationIconPixmap->mask) { hints->flags |= IconMaskHint; hints->icon_mask = scr->applicationIconPixmap->mask; } } XSetWMHints(scr->display, leader, hints); XFree(hints); } scr->groupLeader = leader; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/wfont.c��������������������������������������������������������������������0000644�0001750�0001750�00000023453�13642357773�013246� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include <stdlib.h> #include "wconfig.h" #include "WINGsP.h" #include <wraster.h> #include <assert.h> #include <X11/Xlocale.h> #include <X11/Xft/Xft.h> #include <fontconfig/fontconfig.h> #ifdef USE_PANGO #include <pango/pango.h> #include <pango/pangofc-fontmap.h> #include <pango/pangoxft.h> #endif #define DEFAULT_FONT "sans serif:pixelsize=12" #define DEFAULT_SIZE WINGsConfiguration.defaultFontSize static FcPattern *xlfdToFcPattern(const char *xlfd) { FcPattern *pattern; char *fname, *ptr; /* Just skip old font names that contain %d in them. * We don't support that anymore. */ if (strchr(xlfd, '%') != NULL) return FcNameParse((FcChar8 *) DEFAULT_FONT); fname = wstrdup(xlfd); if ((ptr = strchr(fname, ','))) { *ptr = 0; } pattern = XftXlfdParse(fname, False, False); wfree(fname); if (!pattern) { wwarning(_("invalid font: %s. Trying '%s'"), xlfd, DEFAULT_FONT); pattern = FcNameParse((FcChar8 *) DEFAULT_FONT); } return pattern; } static char *xlfdToFcName(const char *xlfd) { FcPattern *pattern; char *fname; pattern = xlfdToFcPattern(xlfd); fname = (char *)FcNameUnparse(pattern); FcPatternDestroy(pattern); return fname; } static Bool hasProperty(FcPattern * pattern, const char *property) { FcValue val; if (FcPatternGet(pattern, property, 0, &val) == FcResultMatch) { return True; } return False; } static Bool hasPropertyWithStringValue(FcPattern * pattern, const char *object, const char *value) { FcChar8 *str; int id; if (!value || value[0] == 0) return True; id = 0; while (FcPatternGetString(pattern, object, id, &str) == FcResultMatch) { if (strcasecmp(value, (char *)str) == 0) { return True; } id++; } return False; } static char *makeFontOfSize(const char *font, int size, const char *fallback) { FcPattern *pattern; char *result; if (font[0] == '-') { pattern = xlfdToFcPattern(font); } else { pattern = FcNameParse((const FcChar8 *) font); } /*FcPatternPrint(pattern); */ if (size > 0) { FcPatternDel(pattern, FC_PIXEL_SIZE); FcPatternAddDouble(pattern, FC_PIXEL_SIZE, (double)size); } else if (size == 0 && !hasProperty(pattern, "size") && !hasProperty(pattern, FC_PIXEL_SIZE)) { FcPatternAddDouble(pattern, FC_PIXEL_SIZE, (double)DEFAULT_SIZE); } if (fallback && !hasPropertyWithStringValue(pattern, FC_FAMILY, fallback)) { FcPatternAddString(pattern, FC_FAMILY, (const FcChar8 *) fallback); } /*FcPatternPrint(pattern); */ result = (char *)FcNameUnparse(pattern); FcPatternDestroy(pattern); return result; } WMFont *WMCreateFont(WMScreen * scrPtr, const char *fontName) { Display *display = scrPtr->display; WMFont *font; char *fname; #ifdef USE_PANGO PangoFontMap *fontmap; PangoContext *context; PangoLayout *layout; FcPattern *pattern; PangoFontDescription *description; double size; #endif if (fontName[0] == '-') { fname = xlfdToFcName(fontName); } else { fname = wstrdup(fontName); } if (!WINGsConfiguration.antialiasedText && !strstr(fname, ":antialias=")) { fname = wstrappend(fname, ":antialias=false"); } font = WMHashGet(scrPtr->fontCache, fname); if (font) { WMRetainFont(font); wfree(fname); return font; } font = wmalloc(sizeof(WMFont)); font->screen = scrPtr; font->font = XftFontOpenName(display, scrPtr->screen, fname); if (!font->font) { wfree(font); wfree(fname); return NULL; } font->height = font->font->ascent + font->font->descent; font->y = font->font->ascent; font->refCount = 1; font->name = fname; #ifdef USE_PANGO fontmap = pango_xft_get_font_map(scrPtr->display, scrPtr->screen); context = pango_font_map_create_context(fontmap); layout = pango_layout_new(context); pattern = FcNameParse((FcChar8 *) font->name); description = pango_fc_font_description_from_pattern(pattern, FALSE); /* Pango examines FC_SIZE but not FC_PIXEL_SIZE of the patten, but * font-name has only "pixelsize", so set the size manually here. */ if (FcPatternGetDouble(pattern, FC_PIXEL_SIZE, 0, &size) == FcResultMatch) pango_font_description_set_absolute_size(description, size * PANGO_SCALE); pango_layout_set_font_description(layout, description); font->layout = layout; #endif assert(WMHashInsert(scrPtr->fontCache, font->name, font) == NULL); return font; } WMFont *WMRetainFont(WMFont * font) { wassertrv(font != NULL, NULL); font->refCount++; return font; } void WMReleaseFont(WMFont * font) { wassertr(font != NULL); font->refCount--; if (font->refCount < 1) { XftFontClose(font->screen->display, font->font); if (font->name) { WMHashRemove(font->screen->fontCache, font->name); wfree(font->name); } wfree(font); } } Bool WMIsAntialiasingEnabled(WMScreen * scrPtr) { return scrPtr->antialiasedText; } unsigned int WMFontHeight(WMFont * font) { wassertrv(font != NULL, 0); return font->height; } char *WMGetFontName(WMFont * font) { wassertrv(font != NULL, NULL); return font->name; } void WMGetScaleBaseFromSystemFont(WMScreen *scrPtr, int *alphabetWidth, int *fontHeight) { WMFont *font; font = WMDefaultSystemFont(scrPtr); *alphabetWidth = WMWidthOfString(font, "abcdefghijklmnopqrstuvwxyz", 26); *fontHeight = WMFontHeight(font); WMReleaseFont(font); } WMFont *WMDefaultSystemFont(WMScreen * scrPtr) { return WMRetainFont(scrPtr->normalFont); } WMFont *WMDefaultBoldSystemFont(WMScreen * scrPtr) { return WMRetainFont(scrPtr->boldFont); } WMFont *WMSystemFontOfSize(WMScreen * scrPtr, int size) { WMFont *font; char *fontSpec; fontSpec = makeFontOfSize(WINGsConfiguration.systemFont, size, NULL); font = WMCreateFont(scrPtr, fontSpec); if (!font) { wwarning(_("could not load font: %s."), fontSpec); } wfree(fontSpec); return font; } WMFont *WMBoldSystemFontOfSize(WMScreen * scrPtr, int size) { WMFont *font; char *fontSpec; fontSpec = makeFontOfSize(WINGsConfiguration.boldSystemFont, size, NULL); font = WMCreateFont(scrPtr, fontSpec); if (!font) { wwarning(_("could not load font: %s."), fontSpec); } wfree(fontSpec); return font; } int WMWidthOfString(WMFont * font, const char *text, int length) { #ifdef USE_PANGO const char *previous_text; int width; #else XGlyphInfo extents; #endif wassertrv(font != NULL && text != NULL, 0); #ifdef USE_PANGO previous_text = pango_layout_get_text(font->layout); if ((previous_text == NULL) || (strncmp(text, previous_text, length) != 0) || previous_text[length] != '\0') pango_layout_set_text(font->layout, text, length); pango_layout_get_pixel_size(font->layout, &width, NULL); return width; #else XftTextExtentsUtf8(font->screen->display, font->font, (XftChar8 *) text, length, &extents); return extents.xOff; /* don't ask :P */ #endif } void WMDrawString(WMScreen * scr, Drawable d, WMColor * color, WMFont * font, int x, int y, const char *text, int length) { XftColor xftcolor; #ifdef USE_PANGO const char *previous_text; #endif wassertr(font != NULL); xftcolor.color.red = color->color.red; xftcolor.color.green = color->color.green; xftcolor.color.blue = color->color.blue; xftcolor.color.alpha = color->alpha;; xftcolor.pixel = W_PIXEL(color); XftDrawChange(scr->xftdraw, d); #ifdef USE_PANGO previous_text = pango_layout_get_text(font->layout); if ((previous_text == NULL) || (strcmp(text, previous_text) != 0)) pango_layout_set_text(font->layout, text, length); pango_xft_render_layout(scr->xftdraw, &xftcolor, font->layout, x * PANGO_SCALE, y * PANGO_SCALE); #else XftDrawStringUtf8(scr->xftdraw, &xftcolor, font->font, x, y + font->y, (XftChar8 *) text, length); #endif } void WMDrawImageString(WMScreen * scr, Drawable d, WMColor * color, WMColor * background, WMFont * font, int x, int y, const char *text, int length) { XftColor textColor; XftColor bgColor; #ifdef USE_PANGO const char *previous_text; #endif wassertr(font != NULL); textColor.color.red = color->color.red; textColor.color.green = color->color.green; textColor.color.blue = color->color.blue; textColor.color.alpha = color->alpha;; textColor.pixel = W_PIXEL(color); bgColor.color.red = background->color.red; bgColor.color.green = background->color.green; bgColor.color.blue = background->color.blue; bgColor.color.alpha = background->alpha;; bgColor.pixel = W_PIXEL(background); XftDrawChange(scr->xftdraw, d); XftDrawRect(scr->xftdraw, &bgColor, x, y, WMWidthOfString(font, text, length), font->height); #ifdef USE_PANGO previous_text = pango_layout_get_text(font->layout); if ((previous_text == NULL) || (strcmp(text, previous_text) != 0)) pango_layout_set_text(font->layout, text, length); pango_xft_render_layout(scr->xftdraw, &textColor, font->layout, x * PANGO_SCALE, y * PANGO_SCALE); #else XftDrawStringUtf8(scr->xftdraw, &textColor, font->font, x, y + font->y, (XftChar8 *) text, length); #endif } WMFont *WMCopyFontWithStyle(WMScreen * scrPtr, WMFont * font, WMFontStyle style) { FcPattern *pattern; WMFont *copy; char *name; if (!font) return NULL; /* It's enough to add italic to slant, even if the font has no italic * variant, but only oblique. This is because fontconfig will actually * return the closest match font to what we requested which is the * oblique font. Same goes for using bold for weight. */ pattern = FcNameParse((FcChar8 *) WMGetFontName(font)); switch (style) { case WFSNormal: FcPatternDel(pattern, FC_WEIGHT); FcPatternDel(pattern, FC_SLANT); break; case WFSBold: FcPatternDel(pattern, FC_WEIGHT); FcPatternAddString(pattern, FC_WEIGHT, (FcChar8 *) "bold"); break; case WFSItalic: FcPatternDel(pattern, FC_SLANT); FcPatternAddString(pattern, FC_SLANT, (FcChar8 *) "italic"); break; case WFSBoldItalic: FcPatternDel(pattern, FC_WEIGHT); FcPatternDel(pattern, FC_SLANT); FcPatternAddString(pattern, FC_WEIGHT, (FcChar8 *) "bold"); FcPatternAddString(pattern, FC_SLANT, (FcChar8 *) "italic"); break; } name = (char *)FcNameUnparse(pattern); copy = WMCreateFont(scrPtr, name); FcPatternDestroy(pattern); wfree(name); return copy; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/bagtree.c������������������������������������������������������������������0000644�0001750�0001750�00000031751�13431646201�013501� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include <stdlib.h> #include <string.h> #include "WUtil.h" typedef struct W_Node { struct W_Node *parent; struct W_Node *left; struct W_Node *right; int color; void *data; int index; } W_Node; typedef struct W_Bag { W_Node *root; W_Node *nil; /* sentinel */ int count; void (*destructor) (void *item); } W_Bag; #define IS_LEFT(node) (node == node->parent->left) #define IS_RIGHT(node) (node == node->parent->right) static void leftRotate(W_Bag * tree, W_Node * node) { W_Node *node2; node2 = node->right; node->right = node2->left; node2->left->parent = node; node2->parent = node->parent; if (node->parent == tree->nil) { tree->root = node2; } else { if (IS_LEFT(node)) { node->parent->left = node2; } else { node->parent->right = node2; } } node2->left = node; node->parent = node2; } static void rightRotate(W_Bag * tree, W_Node * node) { W_Node *node2; node2 = node->left; node->left = node2->right; node2->right->parent = node; node2->parent = node->parent; if (node->parent == tree->nil) { tree->root = node2; } else { if (IS_LEFT(node)) { node->parent->left = node2; } else { node->parent->right = node2; } } node2->right = node; node->parent = node2; } static void treeInsert(W_Bag * tree, W_Node * node) { W_Node *y = tree->nil; W_Node *x = tree->root; while (x != tree->nil) { y = x; if (node->index <= x->index) x = x->left; else x = x->right; } node->parent = y; if (y == tree->nil) tree->root = node; else if (node->index <= y->index) y->left = node; else y->right = node; } static void rbTreeInsert(W_Bag * tree, W_Node * node) { W_Node *y; treeInsert(tree, node); node->color = 'R'; while (node != tree->root && node->parent->color == 'R') { if (IS_LEFT(node->parent)) { y = node->parent->parent->right; if (y->color == 'R') { node->parent->color = 'B'; y->color = 'B'; node->parent->parent->color = 'R'; node = node->parent->parent; } else { if (IS_RIGHT(node)) { node = node->parent; leftRotate(tree, node); } node->parent->color = 'B'; node->parent->parent->color = 'R'; rightRotate(tree, node->parent->parent); } } else { y = node->parent->parent->left; if (y->color == 'R') { node->parent->color = 'B'; y->color = 'B'; node->parent->parent->color = 'R'; node = node->parent->parent; } else { if (IS_LEFT(node)) { node = node->parent; rightRotate(tree, node); } node->parent->color = 'B'; node->parent->parent->color = 'R'; leftRotate(tree, node->parent->parent); } } } tree->root->color = 'B'; } static void rbDeleteFixup(W_Bag * tree, W_Node * node) { W_Node *w; while (node != tree->root && node->color == 'B') { if (IS_LEFT(node)) { w = node->parent->right; if (w->color == 'R') { w->color = 'B'; node->parent->color = 'R'; leftRotate(tree, node->parent); w = node->parent->right; } if (w->left->color == 'B' && w->right->color == 'B') { w->color = 'R'; node = node->parent; } else { if (w->right->color == 'B') { w->left->color = 'B'; w->color = 'R'; rightRotate(tree, w); w = node->parent->right; } w->color = node->parent->color; node->parent->color = 'B'; w->right->color = 'B'; leftRotate(tree, node->parent); node = tree->root; } } else { w = node->parent->left; if (w->color == 'R') { w->color = 'B'; node->parent->color = 'R'; rightRotate(tree, node->parent); w = node->parent->left; } if (w->left->color == 'B' && w->right->color == 'B') { w->color = 'R'; node = node->parent; } else { if (w->left->color == 'B') { w->right->color = 'B'; w->color = 'R'; leftRotate(tree, w); w = node->parent->left; } w->color = node->parent->color; node->parent->color = 'B'; w->left->color = 'B'; rightRotate(tree, node->parent); node = tree->root; } } } node->color = 'B'; } static W_Node *treeMinimum(W_Node * node, W_Node * nil) { while (node->left != nil) node = node->left; return node; } static W_Node *treeMaximum(W_Node * node, W_Node * nil) { while (node->right != nil) node = node->right; return node; } static W_Node *treeSuccessor(W_Node * node, W_Node * nil) { W_Node *y; if (node->right != nil) { return treeMinimum(node->right, nil); } y = node->parent; while (y != nil && node == y->right) { node = y; y = y->parent; } return y; } static W_Node *treePredecessor(W_Node * node, W_Node * nil) { W_Node *y; if (node->left != nil) { return treeMaximum(node->left, nil); } y = node->parent; while (y != nil && node == y->left) { node = y; y = y->parent; } return y; } static W_Node *rbTreeDelete(W_Bag * tree, W_Node * node) { W_Node *nil = tree->nil; W_Node *x, *y; if (node->left == nil || node->right == nil) { y = node; } else { y = treeSuccessor(node, nil); } if (y->left != nil) { x = y->left; } else { x = y->right; } x->parent = y->parent; if (y->parent == nil) { tree->root = x; } else { if (IS_LEFT(y)) { y->parent->left = x; } else { y->parent->right = x; } } if (y != node) { node->index = y->index; node->data = y->data; } if (y->color == 'B') { rbDeleteFixup(tree, x); } return y; } static W_Node *treeSearch(W_Node * root, W_Node * nil, int index) { if (root == nil || root->index == index) { return root; } if (index < root->index) { return treeSearch(root->left, nil, index); } else { return treeSearch(root->right, nil, index); } } static W_Node *treeFind(W_Node * root, W_Node * nil, void *data) { W_Node *tmp; if (root == nil || root->data == data) return root; tmp = treeFind(root->left, nil, data); if (tmp != nil) return tmp; tmp = treeFind(root->right, nil, data); return tmp; } #if 0 static char buf[512]; static void printNodes(W_Node * node, W_Node * nil, int depth) { if (node == nil) { return; } printNodes(node->left, nil, depth + 1); memset(buf, ' ', depth * 2); buf[depth * 2] = 0; if (IS_LEFT(node)) printf("%s/(%2i\n", buf, node->index); else printf("%s\\(%2i\n", buf, node->index); printNodes(node->right, nil, depth + 1); } void PrintTree(WMBag * bag) { W_TreeBag *tree = (W_TreeBag *) bag->data; printNodes(tree->root, tree->nil, 0); } #endif WMBag *WMCreateTreeBag(void) { return WMCreateTreeBagWithDestructor(NULL); } WMBag *WMCreateTreeBagWithDestructor(WMFreeDataProc * destructor) { WMBag *bag; bag = wmalloc(sizeof(WMBag)); bag->nil = wmalloc(sizeof(W_Node)); bag->nil->left = bag->nil->right = bag->nil->parent = bag->nil; bag->nil->index = WBNotFound; bag->root = bag->nil; bag->destructor = destructor; return bag; } int WMGetBagItemCount(WMBag * self) { return self->count; } void WMAppendBag(WMBag * self, WMBag * bag) { WMBagIterator ptr; void *data; for (data = WMBagFirst(bag, &ptr); data != NULL; data = WMBagNext(bag, &ptr)) { WMPutInBag(self, data); } } void WMPutInBag(WMBag * self, void *item) { W_Node *ptr; ptr = wmalloc(sizeof(W_Node)); ptr->data = item; ptr->index = self->count; ptr->left = self->nil; ptr->right = self->nil; ptr->parent = self->nil; rbTreeInsert(self, ptr); self->count++; } void WMInsertInBag(WMBag * self, int index, void *item) { W_Node *ptr; ptr = wmalloc(sizeof(W_Node)); ptr->data = item; ptr->index = index; ptr->left = self->nil; ptr->right = self->nil; ptr->parent = self->nil; rbTreeInsert(self, ptr); while ((ptr = treeSuccessor(ptr, self->nil)) != self->nil) { ptr->index++; } self->count++; } static int treeDeleteNode(WMBag * self, W_Node *ptr) { if (ptr != self->nil) { W_Node *tmp; self->count--; tmp = treeSuccessor(ptr, self->nil); while (tmp != self->nil) { tmp->index--; tmp = treeSuccessor(tmp, self->nil); } ptr = rbTreeDelete(self, ptr); if (self->destructor) self->destructor(ptr->data); wfree(ptr); return 1; } return 0; } int WMRemoveFromBag(WMBag * self, void *item) { W_Node *ptr = treeFind(self->root, self->nil, item); return treeDeleteNode(self, ptr); } int WMEraseFromBag(WMBag * self, int index) { W_Node *ptr = treeSearch(self->root, self->nil, index); if (ptr != self->nil) { self->count--; ptr = rbTreeDelete(self, ptr); if (self->destructor) self->destructor(ptr->data); wfree(ptr); wassertrv(self->count == 0 || self->root->index >= 0, 1); return 1; } else { return 0; } } int WMDeleteFromBag(WMBag * self, int index) { W_Node *ptr = treeSearch(self->root, self->nil, index); return treeDeleteNode(self, ptr); } void *WMGetFromBag(WMBag * self, int index) { W_Node *node; node = treeSearch(self->root, self->nil, index); if (node != self->nil) return node->data; else return NULL; } int WMGetFirstInBag(WMBag * self, void *item) { W_Node *node; node = treeFind(self->root, self->nil, item); if (node != self->nil) return node->index; else return WBNotFound; } static int treeCount(W_Node * root, W_Node * nil, void *item) { int count = 0; if (root == nil) return 0; if (root->data == item) count++; if (root->left != nil) count += treeCount(root->left, nil, item); if (root->right != nil) count += treeCount(root->right, nil, item); return count; } int WMCountInBag(WMBag * self, void *item) { return treeCount(self->root, self->nil, item); } void *WMReplaceInBag(WMBag * self, int index, void *item) { W_Node *ptr = treeSearch(self->root, self->nil, index); void *old = NULL; if (item == NULL) { self->count--; ptr = rbTreeDelete(self, ptr); if (self->destructor) self->destructor(ptr->data); wfree(ptr); } else if (ptr != self->nil) { old = ptr->data; ptr->data = item; } else { W_Node *ptr; ptr = wmalloc(sizeof(W_Node)); ptr->data = item; ptr->index = index; ptr->left = self->nil; ptr->right = self->nil; ptr->parent = self->nil; rbTreeInsert(self, ptr); self->count++; } return old; } void WMSortBag(WMBag * self, WMCompareDataProc * comparer) { void **items; W_Node *tmp; int i; if (self->count == 0) return; items = wmalloc(sizeof(void *) * self->count); i = 0; tmp = treeMinimum(self->root, self->nil); while (tmp != self->nil) { items[i++] = tmp->data; tmp = treeSuccessor(tmp, self->nil); } qsort(&items[0], self->count, sizeof(void *), comparer); i = 0; tmp = treeMinimum(self->root, self->nil); while (tmp != self->nil) { tmp->index = i; tmp->data = items[i++]; tmp = treeSuccessor(tmp, self->nil); } wfree(items); } static void deleteTree(WMBag * self, W_Node * node) { if (node == self->nil) return; deleteTree(self, node->left); if (self->destructor) self->destructor(node->data); deleteTree(self, node->right); wfree(node); } void WMEmptyBag(WMBag * self) { deleteTree(self, self->root); self->root = self->nil; self->count = 0; } void WMFreeBag(WMBag * self) { WMEmptyBag(self); wfree(self->nil); wfree(self); } static void mapTree(W_Bag * tree, W_Node * node, void (*function) (void *, void *), void *data) { if (node == tree->nil) return; mapTree(tree, node->left, function, data); (*function) (node->data, data); mapTree(tree, node->right, function, data); } void WMMapBag(WMBag * self, void (*function) (void *, void *), void *data) { mapTree(self, self->root, function, data); } static int findInTree(W_Bag * tree, W_Node * node, WMMatchDataProc * function, void *cdata) { int index; if (node == tree->nil) return WBNotFound; index = findInTree(tree, node->left, function, cdata); if (index != WBNotFound) return index; if ((*function) (node->data, cdata)) { return node->index; } return findInTree(tree, node->right, function, cdata); } int WMFindInBag(WMBag * self, WMMatchDataProc * match, void *cdata) { return findInTree(self, self->root, match, cdata); } void *WMBagFirst(WMBag * self, WMBagIterator * ptr) { W_Node *node; node = treeMinimum(self->root, self->nil); if (node == self->nil) { *ptr = NULL; return NULL; } else { *ptr = node; return node->data; } } void *WMBagLast(WMBag * self, WMBagIterator * ptr) { W_Node *node; node = treeMaximum(self->root, self->nil); if (node == self->nil) { *ptr = NULL; return NULL; } else { *ptr = node; return node->data; } } void *WMBagNext(WMBag * self, WMBagIterator * ptr) { W_Node *node; if (*ptr == NULL) return NULL; node = treeSuccessor(*ptr, self->nil); if (node == self->nil) { *ptr = NULL; return NULL; } else { *ptr = node; return node->data; } } void *WMBagPrevious(WMBag * self, WMBagIterator * ptr) { W_Node *node; if (*ptr == NULL) return NULL; node = treePredecessor(*ptr, self->nil); if (node == self->nil) { *ptr = NULL; return NULL; } else { *ptr = node; return node->data; } } void *WMBagIteratorAtIndex(WMBag * self, int index, WMBagIterator * ptr) { W_Node *node; node = treeSearch(self->root, self->nil, index); if (node == self->nil) { *ptr = NULL; return NULL; } else { *ptr = node; return node->data; } } int WMBagIndexForIterator(WMBag * bag, WMBagIterator ptr) { /* Parameter not used, but tell the compiler that it is ok */ (void) bag; return ((W_Node *) ptr)->index; } �����������������������WindowMaker-0.95.9/WINGs/menuparser.h���������������������������������������������������������������0000644�0001750�0001750�00000004713�13431646201�014254� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* menuparser.h * * Copyright (c) 2012 Christophe Curis * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef _MENUPARSER_H_INCLUDED #define _MENUPARSER_H_INCLUDED /* * This file is not part of WINGs public API * * It defines internal things for the Menu Parser, the public API is * located in WINGs/WUtil.h as usual */ #define MAXLINE 1024 #define MAX_NESTED_INCLUDES 16 // To avoid infinite includes case #define MAX_NESTED_MACROS 24 // To avoid infinite loop inside macro expansions #define MAX_MACRO_ARG_COUNT 32 // Limited by design typedef struct w_parser_macro WParserMacro; typedef void WParserMacroFunction(WParserMacro *this, WMenuParser parser); struct w_menu_parser { WMenuParser include_file; WMenuParser parent_file; const char *include_default_paths; const char *file_name; FILE *file_handle; int line_number; WParserMacro *macros; struct { /* Conditional text parsing is implemented using a stack of the skip states for each nested #if */ int depth; struct { Bool skip; char name[8]; int line; } stack[32]; } cond; char *rd; char line_buffer[MAXLINE]; }; struct w_parser_macro { WParserMacro *next; char name[64]; WParserMacroFunction *function; int arg_count; #ifdef DEBUG int usage_count; #endif unsigned char value[MAXLINE * 4]; }; Bool menu_parser_skip_spaces_and_comments(WMenuParser parser); void menu_parser_register_preset_macros(WMenuParser parser); void menu_parser_define_macro(WMenuParser parser); void menu_parser_free_macros(WMenuParser parser); WParserMacro *menu_parser_find_macro(WMenuParser parser, const char *name); void menu_parser_expand_macro(WMenuParser parser, WParserMacro *macro); int isnamechr(char ch); // Check if char is valid character for a macro name #endif /* _MENUPARSER_H_INCLUDED */ �����������������������������������������������������WindowMaker-0.95.9/WINGs/wview.c��������������������������������������������������������������������0000644�0001750�0001750�00000036530�13642357773�013252� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include "WINGsP.h" #include <X11/Xresource.h> /* the notifications about views */ char *WMViewSizeDidChangeNotification = "WMViewSizeDidChangeNotification"; char *WMViewFocusDidChangeNotification = "WMViewFocusDidChangeNotification"; char *WMViewRealizedNotification = "WMViewRealizedNotification"; #define EVENT_MASK \ KeyPressMask|KeyReleaseMask|ButtonPressMask|ButtonReleaseMask| \ EnterWindowMask|LeaveWindowMask|PointerMotionMask|ExposureMask| \ VisibilityChangeMask|FocusChangeMask|PropertyChangeMask|\ SubstructureNotifyMask|SubstructureRedirectMask static const XSetWindowAttributes defAtts = { None, /* background_pixmap */ 0, /* background_pixel */ CopyFromParent, /* border_pixmap */ 0, /* border_pixel */ ForgetGravity, /* bit_gravity */ ForgetGravity, /* win_gravity */ NotUseful, /* backing_store */ (unsigned)~0, /* backing_planes */ 0, /* backing_pixel */ False, /* save_under */ EVENT_MASK, /* event_mask */ 0, /* do_not_propagate_mask */ False, /* override_redirect */ None, /* colormap */ None /* cursor */ }; static XContext ViewContext = 0; /* context for views */ W_View *W_GetViewForXWindow(Display * display, Window window) { W_View *view; if (XFindContext(display, window, ViewContext, (XPointer *) & view) == 0) { return view; } return NULL; } static void unparentView(W_View * view) { /* remove from parent's children list */ if (view->parent != NULL) { W_View *ptr; ptr = view->parent->childrenList; if (ptr == view) { view->parent->childrenList = view->nextSister; } else { while (ptr != NULL) { if (ptr->nextSister == view) { ptr->nextSister = view->nextSister; break; } ptr = ptr->nextSister; } } } view->parent = NULL; } static void adoptChildView(W_View * view, W_View * child) { child->nextSister = NULL; /* add to end of children list of parent */ if (view->childrenList == NULL) { view->childrenList = child; } else { W_View *ptr; ptr = view->childrenList; while (ptr->nextSister != NULL) ptr = ptr->nextSister; ptr->nextSister = child; } child->parent = view; } static W_View *createView(W_Screen * screen, W_View * parent) { W_View *view; if (ViewContext == 0) ViewContext = XUniqueContext(); view = wmalloc(sizeof(W_View)); view->screen = screen; if (parent != NULL) { /* attributes are not valid for root window */ view->attribFlags = CWEventMask | CWBitGravity; view->attribs = defAtts; view->attribFlags |= CWBackPixel | CWColormap | CWBorderPixel | CWBackPixmap; view->attribs.background_pixmap = None; view->attribs.background_pixel = W_PIXEL(screen->gray); view->attribs.border_pixel = W_PIXEL(screen->black); view->attribs.colormap = screen->colormap; view->backColor = WMRetainColor(screen->gray); adoptChildView(parent, view); } view->xic = 0; view->refCount = 1; view->eventHandlers = WMCreateArrayWithDestructor(4, wfree); return view; } W_View *W_CreateView(W_View * parent) { return createView(parent->screen, parent); } W_View *W_CreateRootView(W_Screen * screen) { W_View *view; view = createView(screen, NULL); view->window = screen->rootWin; view->flags.realized = 1; view->flags.mapped = 1; view->flags.root = 1; view->size.width = WidthOfScreen(ScreenOfDisplay(screen->display, screen->screen)); view->size.height = HeightOfScreen(ScreenOfDisplay(screen->display, screen->screen)); return view; } W_View *W_CreateTopView(W_Screen * screen) { W_View *view; view = createView(screen, screen->rootView); if (!view) return NULL; view->flags.topLevel = 1; view->attribs.event_mask |= StructureNotifyMask; return view; } W_View *W_CreateUnmanagedTopView(W_Screen * screen) { W_View *view; view = createView(screen, screen->rootView); if (!view) return NULL; view->flags.topLevel = 1; view->attribs.event_mask |= StructureNotifyMask; view->attribFlags |= CWOverrideRedirect; view->attribs.override_redirect = True; return view; } void W_RealizeView(W_View * view) { Window parentWID; Display *dpy = view->screen->display; W_View *ptr; assert(view->size.width > 0); assert(view->size.height > 0); if (view->parent && !view->parent->flags.realized) { wwarning("trying to realize widget of unrealized parent"); return; } if (!view->flags.realized) { if (view->parent == NULL) { wwarning("trying to realize widget without parent"); return; } parentWID = view->parent->window; view->window = XCreateWindow(dpy, parentWID, view->pos.x, view->pos.y, view->size.width, view->size.height, 0, view->screen->depth, InputOutput, view->screen->visual, view->attribFlags, &view->attribs); XSaveContext(dpy, view->window, ViewContext, (XPointer) view); view->flags.realized = 1; if (view->flags.mapWhenRealized) { W_MapView(view); view->flags.mapWhenRealized = 0; } WMPostNotificationName(WMViewRealizedNotification, view, NULL); } /* realize children */ ptr = view->childrenList; while (ptr != NULL) { W_RealizeView(ptr); ptr = ptr->nextSister; } } void W_ReparentView(W_View * view, W_View * newParent, int x, int y) { Display *dpy = view->screen->display; assert(!view->flags.topLevel); unparentView(view); adoptChildView(newParent, view); if (view->flags.realized) { if (newParent->flags.realized) { XReparentWindow(dpy, view->window, newParent->window, x, y); } else { wwarning("trying to reparent realized view to unrealized parent"); return; } } view->pos.x = x; view->pos.y = y; } void W_RaiseView(W_View * view) { if (W_VIEW_REALIZED(view)) XRaiseWindow(W_VIEW_DISPLAY(view), W_VIEW_DRAWABLE(view)); } void W_LowerView(W_View * view) { if (W_VIEW_REALIZED(view)) XLowerWindow(W_VIEW_DISPLAY(view), W_VIEW_DRAWABLE(view)); } void W_MapView(W_View * view) { if (!view->flags.mapped) { if (view->flags.realized) { XMapRaised(view->screen->display, view->window); XFlush(view->screen->display); view->flags.mapped = 1; } else { view->flags.mapWhenRealized = 1; } } } /* * W_MapSubviews- * maps all children of the current view that where already realized. */ void W_MapSubviews(W_View * view) { XMapSubwindows(view->screen->display, view->window); XFlush(view->screen->display); view = view->childrenList; while (view) { view->flags.mapped = 1; view->flags.mapWhenRealized = 0; view = view->nextSister; } } void W_UnmapSubviews(W_View * view) { XUnmapSubwindows(view->screen->display, view->window); XFlush(view->screen->display); view = view->childrenList; while (view) { view->flags.mapped = 0; view->flags.mapWhenRealized = 0; view = view->nextSister; } } void W_UnmapView(W_View * view) { view->flags.mapWhenRealized = 0; if (!view->flags.mapped) return; XUnmapWindow(view->screen->display, view->window); XFlush(view->screen->display); view->flags.mapped = 0; } W_View *W_TopLevelOfView(W_View * view) { W_View *toplevel; for (toplevel = view; toplevel && !toplevel->flags.topLevel; toplevel = toplevel->parent) ; return toplevel; } static void destroyView(W_View * view) { W_View *ptr; if (view->flags.alreadyDead) return; view->flags.alreadyDead = 1; /* delete the balloon text for the view, if there's any */ WMSetBalloonTextForView(NULL, view); 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); if (view->flags.topLevel) { W_FocusInfo *info = view->screen->focusInfo; /* remove focus information associated to this toplevel */ if (info) { if (info->toplevel == view) { view->screen->focusInfo = info->next; wfree(info); } else { while (info->next) { if (info->next->toplevel == view) break; info = info->next; } if (info->next) { W_FocusInfo *next = info->next->next; wfree(info->next); info->next = next; } /* else the toplevel did not have any focused subview */ } } } /* destroy children recursively */ while (view->childrenList != NULL) { ptr = view->childrenList; ptr->flags.parentDying = 1; W_DestroyView(ptr); if (ptr == view->childrenList) { view->childrenList = ptr->nextSister; ptr->parent = NULL; } } W_CallDestroyHandlers(view); if (view->flags.realized) { XDeleteContext(view->screen->display, view->window, ViewContext); /* if parent is being destroyed, it will die naturaly */ if (!view->flags.parentDying || view->flags.topLevel) XDestroyWindow(view->screen->display, view->window); } /* remove self from parent's children list */ unparentView(view); /* the array has a wfree() destructor that will be called automatically */ WMFreeArray(view->eventHandlers); view->eventHandlers = NULL; WMRemoveNotificationObserver(view); W_FreeViewXdndPart(view); if (view->backColor) WMReleaseColor(view->backColor); wfree(view); } void W_DestroyView(W_View * view) { view->refCount--; if (view->refCount < 1) { destroyView(view); } } void W_MoveView(W_View * view, int x, int y) { assert(view->flags.root == 0); if (view->delegate && view->delegate->willMove) { (*view->delegate->willMove) (view->delegate, view, &x, &y); } if (view->pos.x == x && view->pos.y == y) return; if (view->flags.realized) { XMoveWindow(view->screen->display, view->window, x, y); } view->pos.x = x; view->pos.y = y; if (view->delegate && view->delegate->didMove) { (*view->delegate->didMove) (view->delegate, view); } } void W_ResizeView(W_View * view, unsigned int width, unsigned int height) { /*int shrinked; */ if (view->delegate && view->delegate->willResize) { (*view->delegate->willResize) (view->delegate, view, &width, &height); } assert(width > 0); assert(height > 0); if (view->size.width == width && view->size.height == height) return; /*shrinked = width < view->size.width || height < view->size.height; */ if (view->flags.realized) { XResizeWindow(view->screen->display, view->window, width, height); } view->size.width = width; view->size.height = height; if (view->delegate && view->delegate->didResize) { (*view->delegate->didResize) (view->delegate, view); } /* // TODO. replace in WINGs code, with the didResize delegate */ if (view->flags.notifySizeChanged) WMPostNotificationName(WMViewSizeDidChangeNotification, view, NULL); } void W_RedisplayView(W_View * view) { XEvent ev; if (!view->flags.mapped) return; ev.xexpose.type = Expose; ev.xexpose.display = view->screen->display; ev.xexpose.window = view->window; ev.xexpose.count = 0; ev.xexpose.serial = 0; WMHandleEvent(&ev); } void W_SetViewBackgroundColor(W_View * view, WMColor * color) { if (view->backColor) WMReleaseColor(view->backColor); view->backColor = WMRetainColor(color); view->attribFlags |= CWBackPixel; view->attribFlags &= ~CWBackPixmap; view->attribs.background_pixel = W_PIXEL(color); if (view->flags.realized) { XSetWindowBackground(view->screen->display, view->window, W_PIXEL(color)); XClearWindow(view->screen->display, view->window); } } void W_SetViewBackgroundPixmap(W_View *view, WMPixmap *pix) { if (view->backImage) WMReleasePixmap(view->backImage); view->backImage = WMRetainPixmap(pix); view->attribFlags |= CWBackPixmap; view->attribFlags &= ~CWBackPixel; view->attribs.background_pixmap = pix->pixmap; if (view->flags.realized) { XSetWindowBackgroundPixmap(view->screen->display, view->window, pix->pixmap); XClearWindow(view->screen->display, view->window); } } void W_SetViewCursor(W_View * view, Cursor cursor) { view->cursor = cursor; if (W_VIEW_REALIZED(view)) { XDefineCursor(W_VIEW_DISPLAY(view), W_VIEW_DRAWABLE(view), cursor); } else { view->attribFlags |= CWCursor; view->attribs.cursor = cursor; } } W_View *W_FocusedViewOfToplevel(W_View * view) { WMScreen *scr = view->screen; W_FocusInfo *info; for (info = scr->focusInfo; info != NULL; info = info->next) if (view == info->toplevel) break; if (!info) return NULL; return info->focused; } void W_SetFocusOfTopLevel(W_View * toplevel, W_View * view) { WMScreen *scr = toplevel->screen; XEvent event; W_FocusInfo *info; for (info = scr->focusInfo; info != NULL; info = info->next) if (toplevel == info->toplevel) break; if (!info) { info = wmalloc(sizeof(W_FocusInfo)); info->toplevel = toplevel; info->focused = view; info->next = scr->focusInfo; scr->focusInfo = info; } else { event.xfocus.mode = NotifyNormal; event.xfocus.detail = NotifyDetailNone; if (info->focused) { /* simulate FocusOut event */ event.xfocus.type = FocusOut; W_DispatchMessage(info->focused, &event); } info->focused = view; } if (view) { /* simulate FocusIn event */ event.xfocus.type = FocusIn; W_DispatchMessage(view, &event); } } void W_BroadcastMessage(W_View * targetParent, XEvent * event) { W_View *target; target = targetParent->childrenList; while (target != NULL) { W_DispatchMessage(target, event); target = target->nextSister; } } void W_DispatchMessage(W_View * target, XEvent * event) { if (target->window == None) return; event->xclient.window = target->window; event->xclient.display = target->screen->display; WMHandleEvent(event); /* XSendEvent(target->screen->display, target->window, False, SubstructureNotifyMask, event); */ } WMView *W_RetainView(WMView * view) { view->refCount++; return view; } void W_ReleaseView(WMView * view) { view->refCount--; if (view->refCount < 1) { destroyView(view); } } WMWidget *WMWidgetOfView(WMView * view) { return view->self; } WMSize WMGetViewSize(WMView * view) { return view->size; } WMPoint WMGetViewPosition(WMView * view) { return view->pos; } void WMSetViewNotifySizeChanges(WMView * view, Bool flag) { view->flags.notifySizeChanged = ((flag == 0) ? 0 : 1); } Window WMViewXID(WMView * view) { return view->window; } WMPoint WMGetViewScreenPosition(WMView * view) { WMScreen *scr = W_VIEW_SCREEN(view); Window foo; int x, y, topX, topY; unsigned int bar; WMView *topView; topView = view; while (topView->parent && topView->parent != scr->rootView) topView = topView->parent; if (!XGetGeometry(scr->display, W_VIEW_DRAWABLE(topView), &foo, &topX, &topY, &bar, &bar, &bar, &bar)) { topX = topY = 0; } XTranslateCoordinates(scr->display, W_VIEW_DRAWABLE(view), scr->rootWin, 0, 0, &x, &y, &foo); return wmkpoint(x - topX, y - topY); } static void resizedParent(void *self, WMNotification * notif) { WMSize size = WMGetViewSize((WMView *) WMGetNotificationObject(notif)); WMView *view = (WMView *) self; W_MoveView(view, view->leftOffs, view->topOffs); W_ResizeView(view, size.width - (view->leftOffs + view->rightOffs), size.height - (view->topOffs + view->bottomOffs)); } void WMSetViewExpandsToParent(WMView * view, int leftOffs, int topOffs, int rightOffs, int bottomOffs) { WMSize size = view->parent->size; view->topOffs = topOffs; view->bottomOffs = bottomOffs; view->leftOffs = leftOffs; view->rightOffs = rightOffs; WMAddNotificationObserver(resizedParent, view, WMViewSizeDidChangeNotification, view->parent); WMSetViewNotifySizeChanges(view->parent, True); W_MoveView(view, leftOffs, topOffs); W_ResizeView(view, size.width - (leftOffs + rightOffs), size.height - (topOffs + bottomOffs)); } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/selection.c����������������������������������������������������������������0000644�0001750�0001750�00000022756�13642357773�014103� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include <stdlib.h> #include <X11/Xatom.h> #include "WINGsP.h" #define MAX_PROPERTY_SIZE 8*1024 char *WMSelectionOwnerDidChangeNotification = "WMSelectionOwnerDidChange"; typedef struct SelectionHandler { WMView *view; Atom selection; Time timestamp; WMSelectionProcs procs; void *data; struct { unsigned delete_pending:1; unsigned done_pending:1; } flags; } SelectionHandler; typedef struct SelectionCallback { WMView *view; Atom selection; Atom target; Time timestamp; WMSelectionCallback *callback; void *data; struct { unsigned delete_pending:1; unsigned done_pending:1; } flags; } SelectionCallback; static WMArray *selCallbacks = NULL; static WMArray *selHandlers = NULL; static Bool gotXError = False; void WMDeleteSelectionHandler(WMView * view, Atom selection, Time timestamp) { SelectionHandler *handler; Display *dpy = W_VIEW_SCREEN(view)->display; Window win = W_VIEW_DRAWABLE(view); WMArrayIterator iter; if (!selHandlers) return; /*//printf("deleting selection handler for %d", win); */ WM_ITERATE_ARRAY(selHandlers, handler, iter) { if (handler->view == view && (handler->selection == selection || selection == None) && (handler->timestamp == timestamp || timestamp == CurrentTime)) { if (handler->flags.done_pending) { handler->flags.delete_pending = 1; /*//puts(": postponed because still pending"); */ return; } /*//printf(": found & removed"); */ WMRemoveFromArray(selHandlers, handler); break; } } /*//printf("\n"); */ XGrabServer(dpy); if (XGetSelectionOwner(dpy, selection) == win) { XSetSelectionOwner(dpy, selection, None, timestamp); } XUngrabServer(dpy); } static void WMDeleteSelectionCallback(WMView * view, Atom selection, Time timestamp) { SelectionCallback *handler; WMArrayIterator iter; if (!selCallbacks) return; WM_ITERATE_ARRAY(selCallbacks, handler, iter) { if (handler->view == view && (handler->selection == selection || selection == None) && (handler->timestamp == timestamp || timestamp == CurrentTime)) { if (handler->flags.done_pending) { handler->flags.delete_pending = 1; return; } WMRemoveFromArray(selCallbacks, handler); break; } } } static int handleXError(Display * dpy, XErrorEvent * ev) { /* Parameter not used, but tell the compiler that it is ok */ (void) dpy; (void) ev; gotXError = True; return 1; } static Bool writeSelection(Display * dpy, Window requestor, Atom property, Atom type, WMData * data) { static void *oldHandler; int format, bpi; format = WMGetDataFormat(data); if (format == 0) format = 8; bpi = format / 8; /* printf("write to %x: %s\n", requestor, XGetAtomName(dpy, property)); */ oldHandler = XSetErrorHandler(handleXError); gotXError = False; XChangeProperty(dpy, requestor, property, type, format, PropModeReplace, WMDataBytes(data), WMGetDataLength(data) / bpi); XFlush(dpy); XSetErrorHandler(oldHandler); return !gotXError; } static void notifySelection(XEvent * event, Atom prop) { XEvent ev; /* printf("event to %x\n", event->xselectionrequest.requestor); */ ev.xselection.type = SelectionNotify; ev.xselection.serial = 0; ev.xselection.send_event = True; ev.xselection.display = event->xselectionrequest.display; ev.xselection.requestor = event->xselectionrequest.requestor; ev.xselection.target = event->xselectionrequest.target; ev.xselection.selection = event->xselectionrequest.selection; ev.xselection.property = prop; ev.xselection.time = event->xselectionrequest.time; XSendEvent(event->xany.display, event->xselectionrequest.requestor, False, 0, &ev); XFlush(event->xany.display); } static void handleRequestEvent(XEvent * event) { SelectionHandler *handler; WMArrayIterator iter; WMArray *copy; Bool handledRequest; WM_ITERATE_ARRAY(selHandlers, handler, iter) { switch (event->type) { case SelectionClear: if (W_VIEW_DRAWABLE(handler->view) != event->xselectionclear.window) { break; } handler->flags.done_pending = 1; if (handler->procs.selectionLost) handler->procs.selectionLost(handler->view, handler->selection, handler->data); handler->flags.done_pending = 0; handler->flags.delete_pending = 1; break; case SelectionRequest: if (W_VIEW_DRAWABLE(handler->view) != event->xselectionrequest.owner) { break; } if (handler->procs.convertSelection != NULL && handler->selection == event->xselectionrequest.selection) { Atom atom; WMData *data; Atom prop; /* they're requesting for something old.. maybe another handler * can handle it */ if (event->xselectionrequest.time < handler->timestamp && event->xselectionrequest.time != CurrentTime) { break; } handledRequest = False; handler->flags.done_pending = 1; data = handler->procs.convertSelection(handler->view, handler->selection, event->xselectionrequest.target, handler->data, &atom); prop = event->xselectionrequest.property; /* obsolete clients that don't set the property field */ if (prop == None) prop = event->xselectionrequest.target; if (data) { if (writeSelection(event->xselectionrequest.display, event->xselectionrequest.requestor, prop, atom, data)) { handledRequest = True; } WMReleaseData(data); } notifySelection(event, (handledRequest == True ? prop : None)); if (handler->procs.selectionDone != NULL) { handler->procs.selectionDone(handler->view, handler->selection, event->xselectionrequest.target, handler->data); } handler->flags.done_pending = 0; } break; } } /* delete handlers */ copy = WMDuplicateArray(selHandlers); WM_ITERATE_ARRAY(copy, handler, iter) { if (handler && handler->flags.delete_pending) { WMDeleteSelectionHandler(handler->view, handler->selection, handler->timestamp); } } WMFreeArray(copy); } static WMData *getSelectionData(Display * dpy, Window win, Atom where) { WMData *wdata; unsigned char *data; Atom rtype; int bits, bpi; unsigned long len, bytes; if (XGetWindowProperty(dpy, win, where, 0, MAX_PROPERTY_SIZE, False, AnyPropertyType, &rtype, &bits, &len, &bytes, &data) != Success) { return NULL; } bpi = bits / 8; wdata = WMCreateDataWithBytesNoCopy(data, len * bpi, (void *) XFree); WMSetDataFormat(wdata, bits); return wdata; } static void handleNotifyEvent(XEvent * event) { SelectionCallback *handler; WMArrayIterator iter; WMArray *copy; WMData *data; WM_ITERATE_ARRAY(selCallbacks, handler, iter) { if (W_VIEW_DRAWABLE(handler->view) != event->xselection.requestor || handler->selection != event->xselection.selection) { continue; } handler->flags.done_pending = 1; if (event->xselection.property == None) { data = NULL; } else { data = getSelectionData(event->xselection.display, event->xselection.requestor, event->xselection.property); } (*handler->callback) (handler->view, handler->selection, handler->target, handler->timestamp, handler->data, data); if (data != NULL) { WMReleaseData(data); } handler->flags.done_pending = 0; handler->flags.delete_pending = 1; } /* delete callbacks */ copy = WMDuplicateArray(selCallbacks); WM_ITERATE_ARRAY(copy, handler, iter) { if (handler && handler->flags.delete_pending) { WMDeleteSelectionCallback(handler->view, handler->selection, handler->timestamp); } } WMFreeArray(copy); } void W_HandleSelectionEvent(XEvent * event) { /*//printf("%d received selection ", event->xany.window); */ /*//switch(event->type) { case SelectionNotify: puts("notify"); break; case SelectionRequest: puts("request"); break; case SelectionClear: puts("clear"); break; default: puts("unknown"); break; } */ if (event->type == SelectionNotify) { handleNotifyEvent(event); } else { handleRequestEvent(event); } } Bool WMCreateSelectionHandler(WMView * view, Atom selection, Time timestamp, WMSelectionProcs * procs, void *cdata) { SelectionHandler *handler; Display *dpy = W_VIEW_SCREEN(view)->display; XSetSelectionOwner(dpy, selection, W_VIEW_DRAWABLE(view), timestamp); if (XGetSelectionOwner(dpy, selection) != W_VIEW_DRAWABLE(view)) { return False; } WMPostNotificationName(WMSelectionOwnerDidChangeNotification, (void *)selection, (void *)view); /*//printf("created selection handler for %d\n", W_VIEW_DRAWABLE(view)); */ handler = wmalloc(sizeof(SelectionHandler)); handler->view = view; handler->selection = selection; handler->timestamp = timestamp; handler->procs = *procs; handler->data = cdata; memset(&handler->flags, 0, sizeof(handler->flags)); if (selHandlers == NULL) { selHandlers = WMCreateArrayWithDestructor(4, wfree); } WMAddToArray(selHandlers, handler); return True; } Bool WMRequestSelection(WMView * view, Atom selection, Atom target, Time timestamp, WMSelectionCallback * callback, void *cdata) { SelectionCallback *handler; if (XGetSelectionOwner(W_VIEW_SCREEN(view)->display, selection) == None) return False; if (!XConvertSelection(W_VIEW_SCREEN(view)->display, selection, target, W_VIEW_SCREEN(view)->clipboardAtom, W_VIEW_DRAWABLE(view), timestamp)) { return False; } handler = wmalloc(sizeof(SelectionCallback)); handler->view = view; handler->selection = selection; handler->target = target; handler->timestamp = timestamp; handler->callback = callback; handler->data = cdata; if (selCallbacks == NULL) { selCallbacks = WMCreateArrayWithDestructor(4, wfree); } WMAddToArray(selCallbacks, handler); return True; } ������������������WindowMaker-0.95.9/WINGs/handlers.c�����������������������������������������������������������������0000644�0001750�0001750�00000031772�13431646201�013673� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ /* * WINGs internal handlers: timer, idle and input handlers */ #include "wconfig.h" #include "WINGsP.h" #include <sys/types.h> #include <unistd.h> #include <X11/Xos.h> #ifdef HAVE_SYS_SELECT_H # include <sys/select.h> #endif #include <time.h> #ifndef X_GETTIMEOFDAY #define X_GETTIMEOFDAY(t) gettimeofday(t, (struct timezone*)0) #endif typedef struct TimerHandler { WMCallback *callback; /* procedure to call */ struct timeval when; /* when to call the callback */ void *clientData; struct TimerHandler *next; int nextDelay; /* 0 if it's one-shot */ } TimerHandler; typedef struct IdleHandler { WMCallback *callback; void *clientData; } IdleHandler; typedef struct InputHandler { WMInputProc *callback; void *clientData; int fd; int mask; } InputHandler; /* queue of timer event handlers */ static TimerHandler *timerHandler = NULL; static WMArray *idleHandler = NULL; static WMArray *inputHandler = NULL; #define timerPending() (timerHandler) static void rightNow(struct timeval *tv) { X_GETTIMEOFDAY(tv); } /* is t1 after t2 ? */ #define IS_AFTER(t1, t2) (((t1).tv_sec > (t2).tv_sec) || \ (((t1).tv_sec == (t2).tv_sec) \ && ((t1).tv_usec > (t2).tv_usec))) #define IS_ZERO(tv) (tv.tv_sec == 0 && tv.tv_usec == 0) #define SET_ZERO(tv) tv.tv_sec = 0, tv.tv_usec = 0 static void addmillisecs(struct timeval *tv, int milliseconds) { tv->tv_usec += milliseconds * 1000; tv->tv_sec += tv->tv_usec / 1000000; tv->tv_usec = tv->tv_usec % 1000000; } static void enqueueTimerHandler(TimerHandler * handler) { TimerHandler *tmp; /* insert callback in queue, sorted by time left */ if (!timerHandler || !IS_AFTER(handler->when, timerHandler->when)) { /* first in the queue */ handler->next = timerHandler; timerHandler = handler; } else { tmp = timerHandler; while (tmp->next && IS_AFTER(handler->when, tmp->next->when)) { tmp = tmp->next; } handler->next = tmp->next; tmp->next = handler; } } static void delayUntilNextTimerEvent(struct timeval *delay) { struct timeval now; TimerHandler *handler; handler = timerHandler; while (handler && IS_ZERO(handler->when)) handler = handler->next; if (!handler) { /* The return value of this function is only valid if there _are_ timers active. */ delay->tv_sec = 0; delay->tv_usec = 0; return; } rightNow(&now); if (IS_AFTER(now, handler->when)) { delay->tv_sec = 0; delay->tv_usec = 0; } else { delay->tv_sec = handler->when.tv_sec - now.tv_sec; delay->tv_usec = handler->when.tv_usec - now.tv_usec; if (delay->tv_usec < 0) { delay->tv_usec += 1000000; delay->tv_sec--; } } } WMHandlerID WMAddTimerHandler(int milliseconds, WMCallback * callback, void *cdata) { TimerHandler *handler; handler = malloc(sizeof(TimerHandler)); if (!handler) return NULL; rightNow(&handler->when); addmillisecs(&handler->when, milliseconds); handler->callback = callback; handler->clientData = cdata; handler->nextDelay = 0; enqueueTimerHandler(handler); return handler; } WMHandlerID WMAddPersistentTimerHandler(int milliseconds, WMCallback * callback, void *cdata) { TimerHandler *handler = WMAddTimerHandler(milliseconds, callback, cdata); if (handler != NULL) handler->nextDelay = milliseconds; return handler; } void WMDeleteTimerWithClientData(void *cdata) { TimerHandler *handler, *tmp; if (!cdata || !timerHandler) return; tmp = timerHandler; if (tmp->clientData == cdata) { tmp->nextDelay = 0; if (!IS_ZERO(tmp->when)) { timerHandler = tmp->next; wfree(tmp); } } else { while (tmp->next) { if (tmp->next->clientData == cdata) { handler = tmp->next; handler->nextDelay = 0; if (IS_ZERO(handler->when)) break; tmp->next = handler->next; wfree(handler); break; } tmp = tmp->next; } } } void WMDeleteTimerHandler(WMHandlerID handlerID) { TimerHandler *tmp, *handler = (TimerHandler *) handlerID; if (!handler || !timerHandler) return; tmp = timerHandler; handler->nextDelay = 0; if (IS_ZERO(handler->when)) return; if (tmp == handler) { timerHandler = handler->next; wfree(handler); } else { while (tmp->next) { if (tmp->next == handler) { tmp->next = handler->next; wfree(handler); break; } tmp = tmp->next; } } } WMHandlerID WMAddIdleHandler(WMCallback * callback, void *cdata) { IdleHandler *handler; handler = malloc(sizeof(IdleHandler)); if (!handler) return NULL; handler->callback = callback; handler->clientData = cdata; /* add handler at end of queue */ if (!idleHandler) { idleHandler = WMCreateArrayWithDestructor(16, wfree); } WMAddToArray(idleHandler, handler); return handler; } void WMDeleteIdleHandler(WMHandlerID handlerID) { IdleHandler *handler = (IdleHandler *) handlerID; if (!handler || !idleHandler) return; WMRemoveFromArray(idleHandler, handler); } WMHandlerID WMAddInputHandler(int fd, int condition, WMInputProc * proc, void *clientData) { InputHandler *handler; handler = wmalloc(sizeof(InputHandler)); handler->fd = fd; handler->mask = condition; handler->callback = proc; handler->clientData = clientData; if (!inputHandler) inputHandler = WMCreateArrayWithDestructor(16, wfree); WMAddToArray(inputHandler, handler); return handler; } void WMDeleteInputHandler(WMHandlerID handlerID) { InputHandler *handler = (InputHandler *) handlerID; if (!handler || !inputHandler) return; WMRemoveFromArray(inputHandler, handler); } Bool W_CheckIdleHandlers(void) { IdleHandler *handler; WMArray *handlerCopy; WMArrayIterator iter; if (!idleHandler || WMGetArrayItemCount(idleHandler) == 0) { W_FlushIdleNotificationQueue(); /* make sure an observer in queue didn't added an idle handler */ return (idleHandler != NULL && WMGetArrayItemCount(idleHandler) > 0); } handlerCopy = WMDuplicateArray(idleHandler); WM_ITERATE_ARRAY(handlerCopy, handler, iter) { /* check if the handler still exist or was removed by a callback */ if (WMGetFirstInArray(idleHandler, handler) == WANotFound) continue; (*handler->callback) (handler->clientData); WMDeleteIdleHandler(handler); } WMFreeArray(handlerCopy); W_FlushIdleNotificationQueue(); /* this is not necesarrily False, because one handler can re-add itself */ return (WMGetArrayItemCount(idleHandler) > 0); } void W_CheckTimerHandlers(void) { TimerHandler *handler; struct timeval now; if (!timerHandler) { W_FlushASAPNotificationQueue(); return; } rightNow(&now); handler = timerHandler; while (handler && IS_AFTER(now, handler->when)) { if (!IS_ZERO(handler->when)) { SET_ZERO(handler->when); (*handler->callback) (handler->clientData); } handler = handler->next; } while (timerHandler && IS_ZERO(timerHandler->when)) { handler = timerHandler; timerHandler = timerHandler->next; if (handler->nextDelay > 0) { handler->when = now; addmillisecs(&handler->when, handler->nextDelay); enqueueTimerHandler(handler); } else { wfree(handler); } } W_FlushASAPNotificationQueue(); } /* * This functions will handle input events on all registered file descriptors. * Input: * - waitForInput - True if we want the function to wait until an event * appears on a file descriptor we watch, False if we * want the function to immediately return if there is * no data available on the file descriptors we watch. * - inputfd - Extra input file descriptor to watch for input. * This is only used when called from wevent.c to watch * on ConnectionNumber(dpy) to avoid blocking of X events * if we wait for input from other file handlers. * Output: * if waitForInput is False, the function will return False if there are no * input handlers registered, or if there is no data * available on the registered ones, and will return True * if there is at least one input handler that has data * available. * if waitForInput is True, the function will return False if there are no * input handlers registered, else it will block until an * event appears on one of the file descriptors it watches * and then it will return True. * * If the retured value is True, the input handlers for the corresponding file * descriptors are also called. * * Parametersshould be passed like this: * - from wevent.c: * waitForInput - apropriate value passed by the function who called us * inputfd = ConnectionNumber(dpy) * - from wutil.c: * waitForInput - apropriate value passed by the function who called us * inputfd = -1 * */ Bool W_HandleInputEvents(Bool waitForInput, int inputfd) { #if defined(HAVE_POLL) && defined(HAVE_POLL_H) && !defined(HAVE_SELECT) struct poll fd *fds; InputHandler *handler; int count, timeout, nfds, i, extrafd; extrafd = (inputfd < 0) ? 0 : 1; if (inputHandler) nfds = WMGetArrayItemCount(inputHandler); else nfds = 0; if (!extrafd && nfds == 0) { W_FlushASAPNotificationQueue(); return False; } fds = wmalloc((nfds + extrafd) * sizeof(struct pollfd)); if (extrafd) { /* put this to the end of array to avoid using ranges from 1 to nfds+1 */ fds[nfds].fd = inputfd; fds[nfds].events = POLLIN; } /* use WM_ITERATE_ARRAY() here */ for (i = 0; i < nfds; i++) { handler = WMGetFromArray(inputHandler, i); fds[i].fd = handler->fd; fds[i].events = 0; if (handler->mask & WIReadMask) fds[i].events |= POLLIN; if (handler->mask & WIWriteMask) fds[i].events |= POLLOUT; #if 0 /* FIXME */ if (handler->mask & WIExceptMask) FD_SET(handler->fd, &eset); #endif } /* * Setup the timeout to the estimated time until the * next timer expires. */ if (!waitForInput) { timeout = 0; } else if (timerPending()) { struct timeval tv; delayUntilNextTimerEvent(&tv); timeout = tv.tv_sec * 1000 + tv.tv_usec / 1000; } else { timeout = -1; } count = poll(fds, nfds + extrafd, timeout); if (count > 0 && nfds > 0) { WMArray *handlerCopy = WMDuplicateArray(inputHandler); int mask; /* use WM_ITERATE_ARRAY() here */ for (i = 0; i < nfds; i++) { handler = WMGetFromArray(handlerCopy, i); /* check if the handler still exist or was removed by a callback */ if (WMGetFirstInArray(inputHandler, handler) == WANotFound) continue; mask = 0; if ((handler->mask & WIReadMask) && (fds[i].revents & (POLLIN | POLLRDNORM | POLLRDBAND | POLLPRI))) mask |= WIReadMask; if ((handler->mask & WIWriteMask) && (fds[i].revents & (POLLOUT | POLLWRBAND))) mask |= WIWriteMask; if ((handler->mask & WIExceptMask) && (fds[i].revents & (POLLHUP | POLLNVAL | POLLERR))) mask |= WIExceptMask; if (mask != 0 && handler->callback) { (*handler->callback) (handler->fd, mask, handler->clientData); } } WMFreeArray(handlerCopy); } wfree(fds); W_FlushASAPNotificationQueue(); return (count > 0); #else #ifdef HAVE_SELECT struct timeval timeout; struct timeval *timeoutPtr; fd_set rset, wset, eset; int maxfd, nfds, i; int count; InputHandler *handler; if (inputHandler) nfds = WMGetArrayItemCount(inputHandler); else nfds = 0; if (inputfd < 0 && nfds == 0) { W_FlushASAPNotificationQueue(); return False; } FD_ZERO(&rset); FD_ZERO(&wset); FD_ZERO(&eset); if (inputfd < 0) { maxfd = 0; } else { FD_SET(inputfd, &rset); maxfd = inputfd; } /* use WM_ITERATE_ARRAY() here */ for (i = 0; i < nfds; i++) { handler = WMGetFromArray(inputHandler, i); if (handler->mask & WIReadMask) FD_SET(handler->fd, &rset); if (handler->mask & WIWriteMask) FD_SET(handler->fd, &wset); if (handler->mask & WIExceptMask) FD_SET(handler->fd, &eset); if (maxfd < handler->fd) maxfd = handler->fd; } /* * Setup the timeout to the estimated time until the * next timer expires. */ if (!waitForInput) { SET_ZERO(timeout); timeoutPtr = &timeout; } else if (timerPending()) { delayUntilNextTimerEvent(&timeout); timeoutPtr = &timeout; } else { timeoutPtr = (struct timeval *)0; } count = select(1 + maxfd, &rset, &wset, &eset, timeoutPtr); if (count > 0 && nfds > 0) { WMArray *handlerCopy = WMDuplicateArray(inputHandler); int mask; /* use WM_ITERATE_ARRAY() here */ for (i = 0; i < nfds; i++) { handler = WMGetFromArray(handlerCopy, i); /* check if the handler still exist or was removed by a callback */ if (WMGetFirstInArray(inputHandler, handler) == WANotFound) continue; mask = 0; if ((handler->mask & WIReadMask) && FD_ISSET(handler->fd, &rset)) mask |= WIReadMask; if ((handler->mask & WIWriteMask) && FD_ISSET(handler->fd, &wset)) mask |= WIWriteMask; if ((handler->mask & WIExceptMask) && FD_ISSET(handler->fd, &eset)) mask |= WIExceptMask; if (mask != 0 && handler->callback) { (*handler->callback) (handler->fd, mask, handler->clientData); } } WMFreeArray(handlerCopy); } W_FlushASAPNotificationQueue(); return (count > 0); #else /* not HAVE_SELECT, not HAVE_POLL */ # error Neither select nor poll. You lose. #endif /* HAVE_SELECT */ #endif /* HAVE_POLL */ } ������WindowMaker-0.95.9/WINGs/NEWS�����������������������������������������������������������������������0000644�0001750�0001750�00000046551�13431646201�012427� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������** API and ABI modifications since wmaker 0.92.0 ** libWINGs ** <WINGsP.h> struct W_DragDestinationInfo: new members added SIZE CHANGE <WINGs.h> WMGetTextFieldCursorPosition ADDED WC_Matrix REMOVED from enum. WMCreateProgressIndicator REMOVED WMSetProgressIndicatorMinValue REMOVED WMSetProgressIndicatorMaxValue REMOVED WMSetProgressIndicatorValue REMOVED WMGetProgressIndicatorMinValue REMOVED WMGetProgressIndicatorMaxValue REMOVED WMGetProgressIndicatorValue REMOVED typedef struct W_Ruler WMRuler REMOVED typedef struct WMRulerMargins REMOVED WMAppendTextBlock REMOVED WMAppendTextStream REMOVED WMCreateRuler REMOVED WMCreateTextBlockWithObject REMOVED WMCreateTextBlockWithPixmap REMOVED WMCreateTextBlockWithText REMOVED WMCreateTextForDocumentType REMOVED WMDestroyTextBlock REMOVED WMFindInTextStream REMOVED WMFreezeText REMOVED WMGetGrabbedRulerMargin REMOVED WMGetReleasedRulerMargin REMOVED WMGetRulerMargins REMOVED WMGetRulerOffset REMOVED WMGetTextBlockProperties REMOVED WMGetTextDefaultColor REMOVED WMGetTextDefaultFont REMOVED WMGetTextEditable REMOVED WMGetTextIgnoresNewline REMOVED WMGetTextInsertType REMOVED WMGetTextObjects REMOVED WMGetTextRulerShown REMOVED WMGetTextSelectedObjects REMOVED WMGetTextSelectedStream REMOVED WMGetTextSelectionColor REMOVED WMGetTextSelectionFont REMOVED WMGetTextSelectionUnderlined REMOVED WMGetTextStream REMOVED WMGetTextUsesMonoFont REMOVED WMIsMarginEqualToMargin REMOVED WMPageText REMOVED WMPrependTextBlock REMOVED WMPrependTextStream REMOVED WMRemoveTextBlock REMOVED WMReplaceTextSelection REMOVED WMScrollText REMOVED WMSetRulerMargins REMOVED WMSetRulerMoveAction REMOVED WMSetRulerOffset REMOVED WMSetRulerReleaseAction REMOVED WMSetTextAlignment REMOVED WMSetTextBackgroundColor REMOVED WMSetTextBackgroundPixmap REMOVED WMSetTextBlockProperties REMOVED WMSetTextDefaultColor REMOVED WMSetTextDefaultFont REMOVED WMSetTextDelegate REMOVED WMSetTextEditable REMOVED WMSetTextForegroundColor REMOVED WMSetTextHasHorizontalScroller REMOVED WMSetTextHasRuler REMOVED WMSetTextHasVerticalScroller REMOVED WMSetTextIgnoresNewline REMOVED WMSetTextIndentNewLines REMOVED WMSetTextRelief REMOVED WMSetTextSelectionColor REMOVED WMSetTextSelectionFont REMOVED WMSetTextSelectionUnderlined REMOVED WMSetTextUsesMonoFont REMOVED WMShowTextRuler REMOVED WMThawText REMOVED WMRefreshText REMOVED WMCreateText REMOVED WMClearText REMOVED ** libWutil ** enum WMConnectionState REMOVED enum WMConnectionTimeoutState REMOVED struct ConnectionDelegate REMOVED __wmessage ADDED wstrerror REMOVED wmessage converted from function to wrapper macro wwarning converted from function to wrapper macro wfatal converted from function to wrapper macro wsyserror converted from function to wrapper macro wsyserror REMOVED (use werror instead) werror macro ADDED (replaces wsyserror) wsyserrorwithcode removed wmkdirhier ADDED wrmdirhier ADDED wmalloc0 REMOVED wnew REMOVED wnew0 REMOVED wstrlcpy ADDED wstrlcat ADDED WMPushInArray REMOVED WMWritePropListToFile NUMBER OF FUNCTION ARGUMENTS CHANGED WMGetCurrentHost WMGetHostWithName WMGetHostWithAddress WMRetainHost WMReleaseHost WMSetHostCacheEnabled WMIsHostCacheEnabled WMFlushHostCache WMIsHostEqualToHost WMGetHostName WMGetHostNames WMGetHostAddress WMCreateConnectionAsServerAtAddress REMOVED WMCreateConnectionToAddress REMOVED WMCreateConnectionToAddressAndNotify REMOVED WMCloseConnection REMOVED WMDestroyConnection REMOVED WMConnection* WMAcceptConnection REMOVED WMGetConnectionAvailableData REMOVED WMSendConnectionData REMOVED WMEnqueueConnectionData REMOVED WMFlushConnection REMOVED WMSetConnectionDelegate REMOVED WMGetConnectionService REMOVED WMGetConnectionProtocol REMOVED WMSetConnectionNonBlocking REMOVED WMSetConnectionCloseOnExec REMOVED WMSetConnectionShutdownOnClose REMOVED WMGetConnectionClientData REMOVED WMSetConnectionClientData REMOVED WMGetConnectionFlags REMOVED WMSetConnectionFlags REMOVED WMGetConnectionSocket REMOVED WMGetConnectionState REMOVED WMGetConnectionTimeoutState REMOVED WMGetConnectionUnsentData REMOVED WMGetConnectionQueuedData REMOVED WMSetConnectionDefaultTimeout REMOVED WMSetConnectionOpenTimeout REMOVED WMSetConnectionSendTimeout REMOVED WMTreeWalkProc ADDED WMTreeWalk ADDED wshellquote ADDED ---------------------------------------------------- *** Fri May 15 18:44:50 CEST 2015 - Christophe New Tri-state type for WMButton ------------------------------- A new check-box type button is available with state On/Off/Tri, the later being generally used to express "leave as-is". The states are cycled through as user click on the button. It is created with: btn = WMCreateButton(parent_widget, WBTTriState); There are is this case 3 possible values for WMSetButtonSelected/WMGetButtonSelected: - 0 and 1, the legacy checked/unchecked states - the new -1, when in the 3rd state *** Sun Dec 7 10:52:21 CET 2014 - David Support for pixmap in the background of Widget ---------------------------------------------- The new function WMSetWidgetBackgroundPixmap was introduced to specify a pixmap that will be displayed as the background of a widget instead of the usual plain color. The dual WMGetWidgetBackgroundPixmap is provided too. *** Sun Nov 2 13:04:14 CET 2014 - David Get the text of a button ------------------------ It was assumed that there was no need to retrieve the text from a button because it is generally a static constant text, but there are some cases where this can be useful, so the new function WMGetButtonText was added to the API. *** Thu May 9 18:24:03 CEST 2013 - Christophe Const-correctness API changes for WRaster, WUtils and WINGs ----------------------------------------------------------- The 3 libraries have been modified to include appropriate 'const' qualifier to the function parameters that are treated as such. This should provide some hints to the compiler for better optimisation. This change should have no impact on the binary interface, and will not impact existing source code. There is one exception however: WUtil: wusergnusteppath() This function now returns 'const char *' because its result must *not* be modified, so it may generate a const related warning in old code. *** Fri Mar 7 00:39:28 CET 2014 - David New function WMCreateScaledBlendedPixmapFromFile ------------------------------------------------ This function can load an image from a file and if it is bigger than the specified width/height then it will be scaled down to fit the size while keeping the aspect ratio of the original image. *** Mon Oct 14 19:42:42 EEST 2002 - Dan Double buffering ---------------- To avoid flickering caused by redrawing the widgets on Expose events, a double buffering technique was implemented for most of the widgets. This flickering effect has gotten more visible with the introduction of antialiased fonts. If with normal text one can redraw the text over the old one over and over again without any degradation of the text (new pixels simply overwrite old pixels), with antialiased text the situation is different and text gets quickly corrupted. To avoid this corruption, one needs to first erase the area where the text will go, which can cause the before mentioned flickering. The double buffer is implemented to solve this issue. This is a change that that will be automatically available for any WINGs applications and will require no change in the existing code. However there is an exception from this in case of WMList if you delegate the drawing of items to userspace (read below for the complete details). *** Mon Oct 14 22:07:42 EEST 2002 - Dan WMList change ------------- In case of WMList there is the possibility to delegate the drawing of the list items to the application that is linked with WINGs, and this code will not be inside the WINGs library, but in userland. Since we use the double buffering technique in this case too (to allow all widgets based on WMList and the ones that draw their list items by themselves to benefit from the double buffering advantage automatically), we no longer pass the window to the user code doing item drawing, but instead pass this pixmap in which we draw before copying to the real window. Since one cannot use XClearWindow() or XClearArea() on pixmaps, but only on windows, if the code drawing list items used to call these functions to clear the item area before drawing it needs to change to using XFillRectangle() instead. With this change it also means that there is no longer any need to do any double buffering in the user code, since it's already done by WINGs. *** Mon Oct 14 19:28:35 EEST 2002 - Dan API change ---------- WMDrawString() and WMDrawImageString() no longer take a GC as argument. Instead WMDrawString() takes a WMColor* as the color for the string to be drawn, while WMDrawImageString() takes 2 WMColor* arguments in place of the old GC: first for text color and second for background color. This change is required to support extending WMFont to allow it to handle antialiased fonts through the XFree86 Xft2 extension. This also has the advantage of hiding low level X11 details and use WINGs internal objects instead. To fix your old code to work with the new WINGs API you need to replace the GC passed to WMDraw***String() in your code with a WMColor*. Most of the old code used to be like this: WMDrawString(screen, window, WMColorGC(color), font, x, y, txt, len); for the new API it should be replaced by: WMDrawString(screen, window, color, font, x, y, txt, len); However if you used a particular GC created by yourself to suit your special needs, you need to pass a color which is the same as the foreground color of that gc. For WMDrawImageString(), from: WMDrawImageString(screen, window, gc, font, x, y, txt, len); becomes WMDrawImageString(screen, window, textColor, backColor, font, x, y, txt, len); where textColor and backColor are declared like: WMColor *textColor, *backColor; and have the color of the foreground respective the background of the old gc. *** Wed Oct 9 07:10:04 EEST 2002 - Dan Antialiased font support ------------------------ With the addition of Xft2 support in the WINGs library, now WINGs can display antialiased text with TrueType or any scalable fonts. Antialiased text is enabled by default, but can be disabled by adding AntialiasedText = NO; in ~/GNUstep/Defaults/WMGLOBAL This will disable antialiased text for any WINGs based application. If you only want to disable them for a specific application only, like WindowMaker for example, then add the same option in the applications configuration file, in this case ~/GNUstep/Defaults/WindowMaker Note that bitmapped fonts look much better than TrueType when antialiasing is disabled. *** Mon Sep 09 06:58:30 EEST 2002 - Dan New delegate for the WMConnection class --------------------------------------- ConnectionDelegate structure has a new member: canResumeSending. The purpose of this callback is to notify you that you can resume sending data over a WMConnection. It works in the following manner: WMSendConnectionData() can return 3 values: -1, 0, 1 -1 - means that the connection has died. you should stop sending data and close the connection ASAP. 1 - means that the data was successfully sent 0 - means that the data (or part of it) was not sent. however, it was saved in a queue and the library will try to send it later when possible. if the return value is 1, you can continue to send the next message, and so on, until the return value of such a send call will be 0. After it returns 0 you can continue sending, however, the data will not be sent over the connection because the operating system cannot accept any more data for the moment. Instead it will be queued inside the library, making your program's memory footprint increase. If the amount of data you need to send is limited and not too big, this shouldn't be a problem, because your data will be queued and sent when the operating system will notify the library that sending is possible again. If this is the case you can just ignore the output of WMSendConnectionData() and not set a callback for canResumeSending. However, if the amount of data you have to send is undetermined and you also want to keep a small memory footprint for your program (so that it won't grow until it uses all your available memory ;) ), you will have to stop sending data over the connection as soon as WMSendConnectionData() returns with 0. Then you should somehow mark this situation in your program to avoid it trying to send anymore data until notified that it can resume. (You should have also set a canResumeSending callback when you initialized your WMConnection object because else you cannot be notified when to resume.) Now, when you receive such a 0 from the send operation, your last sent data is put in a queue inside the library. At a later time when the operating system notifies the library that sending is possible again, the library will resume to send the data that is saved in the queue. After it will be able to send all the data in the queue, the canResumeSending callback will be called, letting you know that not only you can resume sending because the operating system is again able to send data, but also that the queue was completely flushed. From the canResumeSending callback, you should again update the status of your program marking that it can send again, and then resume sending the data from where you were left. *** Thu Oct 04 06:00:09 EEST 2001 -Dan Property lists handling code ---------------------------- Code to handle property lists was added to WINGs. It is more robust than the libPropList code, mostly because some conflicting concepts borrowed from UserDefaults (which libPropList use) are no longer used in the WINGs property lists code. These borrowed concepts conflicted with the retain/release mechanism of property lists and could lead in certain cases to segmentation faults when executing libPropList based code. But the worse part was that these libPropList problems were practically unsolvable without removing one of those conflicting concepts and without a complete redesign. The new WINGs property lists code is also better integrated with the other data types from WINGs and is actively maintained. Practically the things that were removed from the WINGs property list implementation compared to the old libPropList implementation, are exactly the UserDefaults borrowed concepts that conflict with the retain/release mechanism: - The container of a proplist object and the associated functions are gone. - The filename associated with a proplist object and the corresponding functions are gone. Now the saving function needs the filename as a parameter. - The synchronization functions are no longer supported. They are part of the UserDefaults and are implemented there. - No functions related to domains/registering were implemented in the WINGs property lists code, because they are also not part of property lists. They are more in connection with UserDefaults and a central point of access for domains. The above 2 concepts: container and filename were added to libPropList just to let it support synchronization which was borrowed from UserDefaults. Property lists as defined in the openstep specification are just complex data structures composed of strings, data, arrays, dictionaries and a mix of them and are not associated with any file in particular. UserDefaults on the other hand are property lists read from a specific file and they associate that property list with that file and allow them to be synchronized. Old libPropList based code can still be used by linking against the WINGs library containing the new proplist code with minimal changes which are described in detail in the comments at the top of the WINGs/proplist-compat.h header file (the same file carries the #defines for mapping old libPropList functions to the new WINGs proplist functions). Our recommendation is to move to the new functions WINGs provide because they better integrate with other function naming conventions in WINGs. The proplist-compat.h header file is just a way to have old code up and running with minimal changes so that we can remove the old and unmaintained libPropList from systems while keeping to use old libPropList based code without rewriting it and it should not be used for other purposes. *** Sat Apr 21 09:12:09 EEST 2001 -Dan API change ---------- To allow a correct display of icon images with alpha blending in panels and other places where a WINGs based application may use them the following changes took place: 1. The following functions were renamed: - WMSetApplicationIconImage() --> WMSetApplicationIconPixmap() - WMGetApplicationIconImage() --> WMGetApplicationIconPixmap() - WMSetWindowMiniwindowImage() --> WMSetWindowMiniwindowPixmap() 2. The following functions were added: - WMSetApplicationIconImage(WMScreen *scr, RImage *image) - RImage* WMGetApplicationIconImage(WMScreen *scr) - WMPixmap* WMCreateApplicationIconBlendedPixmap(WMScreen *scr, RColor *col) As you can see the old functions that operated on WMPixmap images (which are basically X Pixmaps that lack alpha information) were renamed to ...Pixmap() to make them more suggestive about what they do and to make room for the new functions that operate on RImages (that hold alpha information). Since the corresponding WMGet... functions only retrieve the stored image/pixmap from the application, I'll outline how the WMSet... functions operate: All WM...IconPixmap() functions operate on WMPixmaps All WM...IconImage() functions operate on RImages - WMSetApplicationIconImage() will set the RImage to be used in panels and will also convert the RImage to a WMPixmap with a threshold of 128 and will use that pixmap for the appicon image. If that doesn't satisfy you, you can make a call to WMSetApplicationIconPixmap() on your own to set whatever WMPixmap you see fit for the appicon. - WMSetApplicationIconPixmap() will set the WMPixmap to be used for the appicon and for the panels If you use only one of the above functions, the corresponding image/pixmap will be used everywhere where needed (panels and appicon), but the pixmap version will not be able to handle alpha blending correctly. If you use both WMSetApplicationIconImage() and WMSetApplicationIconPixmap() then the RImage will have priority in panels, and the WMPixmap will only be used for the appicon. This allows you to better control what icon is displayed in the appicon, in case the default conversion of the RImage to a pixmap with a threshold of 128 is not good enough, or in case you want a different icon to be shown in the appicon than in panels. Also this new function was added: - WMCreateApplicationIconBlendedPixmap() will use the RImage set with WMSetApplicationIconImage() if available and will blend it with the color you passed. This will make the image show well on a background of that color. If the RImage was not set it will return NULL. You need to call WMReleasePixmap() on it after you finish with it. Passing a NULL pointer instead of a color will make the RImage be blended with the default color of the WINGs widgets: '#aeaaae' making it suitable to be assigned to any WINGs widget. To make your existing code work as before all you need to do is to rename the following functions: - WMSetApplicationIconImage() --> WMSetApplicationIconPixmap() - WMGetApplicationIconImage() --> WMGetApplicationIconPixmap() - WMSetWindowMiniwindowImage() --> WMSetWindowMiniwindowPixmap() But if you want to take advantage of the new abilities to show alpha blended images you need to start using the new functions. �������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/string.c�������������������������������������������������������������������0000644�0001750�0001750�00000023052�13431646201�013371� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Until FreeBSD gets their act together; * http://www.mail-archive.com/freebsd-hackers@freebsd.org/msg69469.html */ #if defined( FREEBSD ) # undef _XOPEN_SOURCE #endif #include "wconfig.h" #include <string.h> #include <stdlib.h> #include <assert.h> #include <ctype.h> #ifdef HAVE_BSD_STRING_H #include <bsd/string.h> #endif #include "WUtil.h" #define PRC_ALPHA 0 #define PRC_BLANK 1 #define PRC_ESCAPE 2 #define PRC_DQUOTE 3 #define PRC_EOS 4 #define PRC_SQUOTE 5 typedef struct { short nstate; short output; } DFA; static DFA mtable[9][6] = { {{3, 1}, {0, 0}, {4, 0}, {1, 0}, {8, 0}, {6, 0}}, {{1, 1}, {1, 1}, {2, 0}, {3, 0}, {5, 0}, {1, 1}}, {{1, 1}, {1, 1}, {1, 1}, {1, 1}, {5, 0}, {1, 1}}, {{3, 1}, {5, 0}, {4, 0}, {1, 0}, {5, 0}, {6, 0}}, {{3, 1}, {3, 1}, {3, 1}, {3, 1}, {5, 0}, {3, 1}}, {{-1, -1}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}}, /* final state */ {{6, 1}, {6, 1}, {7, 0}, {6, 1}, {5, 0}, {3, 0}}, {{6, 1}, {6, 1}, {6, 1}, {6, 1}, {5, 0}, {6, 1}}, {{-1, -1}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}}, /* final state */ }; char *wtokennext(char *word, char **next) { char *ptr; char *ret, *t; int state, ctype; t = ret = wmalloc(strlen(word) + 1); ptr = word; state = 0; while (1) { if (*ptr == 0) ctype = PRC_EOS; else if (*ptr == '\\') ctype = PRC_ESCAPE; else if (*ptr == '"') ctype = PRC_DQUOTE; else if (*ptr == '\'') ctype = PRC_SQUOTE; else if (*ptr == ' ' || *ptr == '\t') ctype = PRC_BLANK; else ctype = PRC_ALPHA; if (mtable[state][ctype].output) { *t = *ptr; t++; *t = 0; } state = mtable[state][ctype].nstate; ptr++; if (mtable[state][0].output < 0) { break; } } if (*ret == 0) { wfree(ret); ret = NULL; } if (ctype == PRC_EOS) *next = NULL; else *next = ptr; return ret; } /* separate a string in tokens, taking " and ' into account */ void wtokensplit(char *command, char ***argv, int *argc) { char *token, *line; int count; count = 0; line = command; do { token = wtokennext(line, &line); if (token) { if (count == 0) *argv = wmalloc(sizeof(**argv)); else *argv = wrealloc(*argv, (count + 1) * sizeof(**argv)); (*argv)[count++] = token; } } while (token != NULL && line != NULL); *argc = count; } char *wtokenjoin(char **list, int count) { int i, j; char *flat_string, *wspace; j = 0; for (i = 0; i < count; i++) { if (list[i] != NULL && list[i][0] != 0) { j += strlen(list[i]); if (strpbrk(list[i], " \t")) j += 2; } } flat_string = wmalloc(j + count + 1); for (i = 0; i < count; i++) { if (list[i] != NULL && list[i][0] != 0) { if (i > 0 && wstrlcat(flat_string, " ", j + count + 1) >= j + count + 1) goto error; wspace = strpbrk(list[i], " \t"); if (wspace && wstrlcat(flat_string, "\"", j + count + 1) >= j + count + 1) goto error; if (wstrlcat(flat_string, list[i], j + count + 1) >= j + count + 1) goto error; if (wspace && wstrlcat(flat_string, "\"", j + count + 1) >= j + count + 1) goto error; } } return flat_string; error: wfree(flat_string); return NULL; } void wtokenfree(char **tokens, int count) { while (count--) wfree(tokens[count]); wfree(tokens); } char *wtrimspace(const char *s) { const char *t; if (s == NULL) return NULL; while (isspace(*s) && *s) s++; t = s + strlen(s) - 1; while (t > s && isspace(*t)) t--; return wstrndup(s, t - s + 1); } char *wstrdup(const char *str) { assert(str != NULL); return strcpy(wmalloc(strlen(str) + 1), str); } char *wstrndup(const char *str, size_t len) { char *copy; assert(str != NULL); len = WMIN(len, strlen(str)); copy = strncpy(wmalloc(len + 1), str, len); copy[len] = 0; return copy; } char *wstrconcat(const char *str1, const char *str2) { char *str; size_t slen; if (!str1 && str2) return wstrdup(str2); else if (str1 && !str2) return wstrdup(str1); else if (!str1 && !str2) return NULL; slen = strlen(str1) + strlen(str2) + 1; str = wmalloc(slen); if (wstrlcpy(str, str1, slen) >= slen || wstrlcat(str, str2, slen) >= slen) { wfree(str); return NULL; } return str; } char *wstrappend(char *dst, const char *src) { size_t slen; if (!src || *src == 0) return dst; else if (!dst) return wstrdup(src); slen = strlen(dst) + strlen(src) + 1; dst = wrealloc(dst, slen); strcat(dst, src); return dst; } #ifdef HAVE_STRLCAT size_t wstrlcat(char *dst, const char *src, size_t siz) { return strlcat(dst, src, siz); } #else /* $OpenBSD: strlcat.c,v 1.13 2005/08/08 08:05:37 espie Exp $ */ /* * Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com> * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /* * Appends src to string dst of size siz (unlike strncat, siz is the * full size of dst, not space left). At most siz-1 characters * will be copied. Always NUL terminates (unless siz <= strlen(dst)). * Returns strlen(src) + MIN(siz, strlen(initial dst)). * If retval >= siz, truncation occurred. */ size_t wstrlcat(char *dst, const char *src, size_t siz) { char *d = dst; const char *s = src; size_t n = siz; size_t dlen; /* Find the end of dst and adjust bytes left but don't go past end */ while (n-- != 0 && *d != '\0') d++; dlen = d - dst; n = siz - dlen; if (n == 0) return(dlen + strlen(s)); while (*s != '\0') { if (n != 1) { *d++ = *s; n--; } s++; } *d = '\0'; return(dlen + (s - src)); /* count does not include NUL */ } #endif /* HAVE_STRLCAT */ #ifdef HAVE_STRLCPY size_t wstrlcpy(char *dst, const char *src, size_t siz) { return strlcpy(dst, src, siz); } #else /* $OpenBSD: strlcpy.c,v 1.11 2006/05/05 15:27:38 millert Exp $ */ /* * Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com> * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /* * Copy src to string dst of size siz. At most siz-1 characters * will be copied. Always NUL terminates (unless siz == 0). * Returns strlen(src); if retval >= siz, truncation occurred. */ size_t wstrlcpy(char *dst, const char *src, size_t siz) { char *d = dst; const char *s = src; size_t n = siz; /* Copy as many bytes as will fit */ if (n != 0) { while (--n != 0) { if ((*d++ = *s++) == '\0') break; } } /* Not enough room in dst, add NUL and traverse rest of src */ if (n == 0) { if (siz != 0) *d = '\0'; /* NUL-terminate dst */ while (*s++) ; } return(s - src - 1); /* count does not include NUL */ } #endif /* HAVE_STRLCPY */ /* transform `s' so that the result is safe to pass to the shell as an argument. * returns a newly allocated string. * with very heavy inspirations from NetBSD's shquote(3). */ char *wshellquote(const char *s) { char *p, *r, *last, *ret; size_t slen; int needs_quoting; if (!s) return NULL; needs_quoting = !*s; /* the empty string does need quoting */ /* do not quote if consists only of the following characters */ for (p = (char *)s; *p && !needs_quoting; p++) { needs_quoting = !(isalnum(*p) || (*p == '+') || (*p == '/') || (*p == '.') || (*p == ',') || (*p == '-')); } if (!needs_quoting) return wstrdup(s); for (slen = 0, p = (char *)s; *p; p++) /* count space needed (worst case) */ slen += *p == '\'' ? 4 : 1; /* every single ' becomes ''\' */ slen += 2 /* leading + trailing "'" */ + 1 /* NULL */; ret = r = wmalloc(slen); p = (char *)s; last = p; if (*p != '\'') /* if string doesn't already begin with "'" */ *r++ ='\''; /* start putting it in quotes */ while (*p) { last = p; if (*p == '\'') { /* turn each ' into ''\' */ if (p != s) /* except if it's the first ', in which case */ *r++ = '\''; /* only escape it */ *r++ = '\\'; *r++ = '\''; while (*++p && *p == '\'') { /* keep turning each consecutive 's into \' */ *r++ = '\\'; *r++ = '\''; } if (*p) /* if more input follows, terminate */ *r++ = '\''; /* what we have so far */ } else { *r++ = *p++; } } if (*last != '\'') /* if the last one isn't already a ' */ *r++ = '\''; /* terminate the whole shebang */ *r = '\0'; return ret; /* technically, we lose (but not leak) a couple of */ /* bytes (twice the number of consecutive 's in the */ /* input or so), but since these are relatively rare */ /* and short-lived strings, not sure if a trip to */ /* wstrdup+wfree worths the gain. */ } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/wutil.c��������������������������������������������������������������������0000644�0001750�0001750�00000001004�13431646201�013220� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ /* * Handle events for non-GUI based applications */ #include "WINGsP.h" void WHandleEvents() { /* Check any expired timers */ W_CheckTimerHandlers(); /* Do idle and timer stuff while there are no input events */ /* Do not wait for input here. just peek to see if input is available */ while (!W_HandleInputEvents(False, -1) && W_CheckIdleHandlers()) { /* dispatch timer events */ W_CheckTimerHandlers(); } W_HandleInputEvents(True, -1); /* Check any expired timers */ W_CheckTimerHandlers(); } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/make-rgb�������������������������������������������������������������������0000755�0001750�0001750�00000002340�13431646201�013327� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/python import sys import re from optparse import OptionParser parser = OptionParser(version="%prog 1.0") parser.add_option("-f", "--file", dest="rgbtxtFile", default='/etc/X11/rgb.txt', help="rgb.txt file containing X11 colors (/etc/X11/rgb.txt)", metavar="File") (options, args) = parser.parse_args() f = open(options.rgbtxtFile) lines = f.readlines() f.close() colorLine = re.compile(r'''\s* (?P<red>\d+) # red \s+ (?P<green>\d+) # green \s+ (?P<blue>\d+) # blue \s+ (?P<name>[^\s]+) # name ''', re.VERBOSE) print ''' /* Automatically generated file. Do NOT edit. Regenerate it using make-rgb */ #ifndef RGB_H_ #define RGB_H_ #include <wraster.h> typedef struct RGBColor { RColor color; char *name; } RGBColor; RGBColor rgbColors[] = {''' for line in lines: m = colorLine.match(line) if m: print ''' {{%(red)3s, %(green)3s, %(blue)3s, 0}, "%(name)s"},''' % m.groupdict() print ''' {{ 0, 0, 0, 0}, NULL} }; #endif ''' ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/menuparser.c���������������������������������������������������������������0000644�0001750�0001750�00000042275�13431646201�014254� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 2012 Christophe Curis * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "wconfig.h" #include <stdio.h> #include <string.h> #include <ctype.h> #include <stdarg.h> #include <WINGs/WUtil.h> #include "menuparser.h" static WMenuParser menu_parser_create_new(const char *file_name, void *file, const char *include_default_paths); static char *menu_parser_isolate_token(WMenuParser parser); static void menu_parser_get_directive(WMenuParser parser); static Bool menu_parser_include_file(WMenuParser parser); static void menu_parser_condition_ifmacro(WMenuParser parser, Bool check_exists); static void menu_parser_condition_else(WMenuParser parser); static void menu_parser_condition_end(WMenuParser parser); /* Constructor and Destructor for the Menu Parser object */ WMenuParser WMenuParserCreate(const char *file_name, void *file, const char *include_default_paths) { WMenuParser parser; parser = menu_parser_create_new(file_name, file, include_default_paths); menu_parser_register_preset_macros(parser); return parser; } void WMenuParserDelete(WMenuParser parser) { if (parser->include_file) { /* Trick: the top parser's data are not wmalloc'd, we point on the * provided data so we do not wfree it; however for include files * we did wmalloc them. * This code should not be used as the wfree is done when we reach * the end of an include file; however this may not happen when an * early exit occurs (typically when 'readMenuFile' does not find * its expected command). */ fclose(parser->include_file->file_handle); wfree((char *) parser->include_file->file_name); WMenuParserDelete(parser->include_file); } if (parser->macros) menu_parser_free_macros(parser); wfree(parser); } static WMenuParser menu_parser_create_new(const char *file_name, void *file, const char *include_default_paths) { WMenuParser parser; parser = wmalloc(sizeof(*parser)); parser->include_default_paths = include_default_paths; parser->file_name = file_name; parser->file_handle = file; parser->rd = parser->line_buffer; return parser; } /* To report helpfull messages to user */ const char *WMenuParserGetFilename(WMenuParser parser) { return parser->file_name; } void WMenuParserError(WMenuParser parser, const char *msg, ...) { char buf[MAXLINE]; va_list args; WMenuParser parent; while (parser->include_file) parser = parser->include_file; va_start(args, msg); vsnprintf(buf, sizeof(buf), msg, args); va_end(args); __wmessage("WMenuParser", parser->file_name, parser->line_number, WMESSAGE_TYPE_WARNING, "%s", buf); for (parent = parser->parent_file; parent != NULL; parent = parent->parent_file) __wmessage("WMenuParser", parser->file_name, parser->line_number, WMESSAGE_TYPE_WARNING, _(" included from file \"%s\" at line %d"), parent->file_name, parent->line_number); } /* Read one line from file and split content * The function returns False when the end of file is reached */ Bool WMenuParserGetLine(WMenuParser top_parser, char **title, char **command, char **parameter, char **shortcut) { WMenuParser cur_parser; enum { GET_TITLE, GET_COMMAND, GET_PARAMETERS, GET_SHORTCUT } scanmode; char *token, *params = NULL; char lineparam[MAXLINE]; lineparam[0] = '\0'; *title = NULL; *command = NULL; *parameter = NULL; *shortcut = NULL; scanmode = GET_TITLE; read_next_line_with_filechange: cur_parser = top_parser; while (cur_parser->include_file) cur_parser = cur_parser->include_file; read_next_line: if (fgets(cur_parser->line_buffer, sizeof(cur_parser->line_buffer), cur_parser->file_handle) == NULL) { if (cur_parser->cond.depth > 0) { int i; for (i = 0; i < cur_parser->cond.depth; i++) WMenuParserError(cur_parser, _("missing #endif to match #%s at line %d"), cur_parser->cond.stack[i].name, cur_parser->cond.stack[i].line); } if (cur_parser->parent_file == NULL) /* Not inside an included file -> we have reached the end */ return False; /* We have only reached the end of an included file -> go back to calling file */ fclose(cur_parser->file_handle); wfree((char *) cur_parser->file_name); cur_parser = cur_parser->parent_file; wfree(cur_parser->include_file); cur_parser->include_file = NULL; goto read_next_line_with_filechange; } cur_parser->line_number++; cur_parser->rd = cur_parser->line_buffer; for (;;) { if (!menu_parser_skip_spaces_and_comments(cur_parser)) { /* We reached the end of line */ if (scanmode == GET_TITLE) goto read_next_line; /* Empty line -> skip */ else break; /* Finished reading current line -> return it to caller */ } if ((scanmode == GET_TITLE) && (*cur_parser->rd == '#')) { cur_parser->rd++; menu_parser_get_directive(cur_parser); goto read_next_line_with_filechange; } if (cur_parser->cond.stack[0].skip) goto read_next_line; /* Found a word */ token = menu_parser_isolate_token(cur_parser); switch (scanmode) { case GET_TITLE: *title = token; scanmode = GET_COMMAND; break; case GET_COMMAND: if (strcmp(token, "SHORTCUT") == 0) { scanmode = GET_SHORTCUT; wfree(token); } else { *command = token; scanmode = GET_PARAMETERS; } break; case GET_SHORTCUT: if (*shortcut != NULL) { WMenuParserError(top_parser, _("multiple SHORTCUT definition not valid") ); wfree(*shortcut); } *shortcut = token; scanmode = GET_COMMAND; break; case GET_PARAMETERS: { char *src; if (params == NULL) { params = lineparam; } else { if ((params - lineparam) < sizeof(lineparam) - 1) *params++ = ' '; } src = token; while ((params - lineparam) < sizeof(lineparam) - 1) if ( (*params = *src++) == '\0') break; else params++; wfree(token); } break; } } if (params != NULL) { lineparam[sizeof(lineparam) - 1] = '\0'; *parameter = wstrdup(lineparam); } return True; } /* Return False when there's nothing left on the line, otherwise increment parser's pointer to next token */ Bool menu_parser_skip_spaces_and_comments(WMenuParser parser) { for (;;) { while (isspace(*parser->rd)) parser->rd++; if (*parser->rd == '\0') { return False; /* Found the end of current line */ } else if ((parser->rd[0] == '\\') && (parser->rd[1] == '\n') && (parser->rd[2] == '\0')) { /* Means that the current line is expected to be continued on next line */ if (fgets(parser->line_buffer, sizeof(parser->line_buffer), parser->file_handle) == NULL) { WMenuParserError(parser, _("premature end of file while expecting a new line after '\\'") ); return False; } parser->line_number++; parser->rd = parser->line_buffer; } else if (parser->rd[0] == '/') { if (parser->rd[1] == '/') /* Single line C comment */ return False; /* Won't find anything more on this line */ if (parser->rd[1] == '*') { int start_line; start_line = parser->line_number; parser->rd += 2; for (;;) { /* Search end-of-comment marker */ while (*parser->rd != '\0') { if ((parser->rd[0] == '*') && (parser->rd[1] == '/')) goto found_end_of_comment; parser->rd++; } /* Marker not found -> load next line */ if (fgets(parser->line_buffer, sizeof(parser->line_buffer), parser->file_handle) == NULL) { WMenuParserError(parser, _("reached end of file while searching '*/' for comment started at line %d"), start_line); return False; } parser->line_number++; parser->rd = parser->line_buffer; } found_end_of_comment: parser->rd += 2; /* Skip closing mark */ continue; /* Because there may be spaces after the comment */ } return True; /* the '/' was not a comment, treat it as user data */ } else { return True; /* Found some data */ } } } /* read a token (non-spaces suite of characters) * the result is wmalloc's, so it needs to be free'd */ static char *menu_parser_isolate_token(WMenuParser parser) { char buffer_token[sizeof(parser->line_buffer)]; char *token; int limit = MAX_NESTED_MACROS; token = buffer_token; restart_token_split: while (*parser->rd != '\0') if (isspace(*parser->rd)) { break; } else if ((parser->rd[0] == '/') && ((parser->rd[1] == '*') || (parser->rd[1] == '/'))) { break; } else if (parser->rd[0] == '\\') { if ((parser->rd[1] == '\n') || (parser->rd[1] == '\0')) break; parser->rd++; *token++ = *parser->rd++; } else if (*parser->rd == '"' ) { char ch; /* Double-quoted string deserve special processing because macros are not expanded inside. We also remove the double quotes. */ parser->rd++; while ((*parser->rd != '\0') && (*parser->rd != '\n')) { ch = *parser->rd++; if (ch == '\\') { if ((*parser->rd == '\0') || (*parser->rd == '\n')) break; *token++ = *parser->rd++; } else if (ch == '"') goto found_end_dquote; else *token++ = ch; } WMenuParserError(parser, _("missing closing double-quote before end-of-line") ); found_end_dquote: ; } else if (*parser->rd == '\'') { char ch; /* Simple-quoted string deserve special processing because we keep their content as-is, including the quotes and the \-escaped text */ *token++ = *parser->rd++; while ((*parser->rd != '\0') && (*parser->rd != '\n')) { ch = *parser->rd++; *token++ = ch; if (ch == '\'') goto found_end_squote; } WMenuParserError(parser, _("missing closing simple-quote before end-of-line") ); found_end_squote: ; } else if (isnamechr(*parser->rd)) { WParserMacro *macro; macro = menu_parser_find_macro(parser, parser->rd); if (macro != NULL) { /* The expansion is done inside the parser's buffer this is needed to allow sub macro calls */ menu_parser_expand_macro(parser, macro); /* Restart parsing to allow expansion of sub macro calls */ if (limit-- > 0) goto restart_token_split; WMenuParserError(parser, _("too many nested macro expansions, breaking loop")); while (isnamechr(*parser->rd)) parser->rd++; break; } else { while (isnamechr(*parser->rd)) *token++ = *parser->rd++; } } else { *token++ = *parser->rd++; } *token++ = '\0'; token = wmalloc(token - buffer_token); strcpy(token, buffer_token); return token; } /* Processing of special # directives */ static void menu_parser_get_directive(WMenuParser parser) { char *command; /* Isolate the command */ while (isspace(*parser->rd)) parser->rd++; command = parser->rd; while (*parser->rd) if (isspace(*parser->rd)) { *parser->rd++ = '\0'; break; } else { parser->rd++; } if (strcmp(command, "include") == 0) { if (!menu_parser_include_file(parser)) return; } else if (strcmp(command, "define") == 0) { menu_parser_define_macro(parser); } else if (strcmp(command, "ifdef") == 0) { menu_parser_condition_ifmacro(parser, 1); } else if (strcmp(command, "ifndef") == 0) { menu_parser_condition_ifmacro(parser, 0); } else if (strcmp(command, "else") == 0) { menu_parser_condition_else(parser); } else if (strcmp(command, "endif") == 0) { menu_parser_condition_end(parser); } else { WMenuParserError(parser, _("unknown directive '#%s'"), command); return; } if (menu_parser_skip_spaces_and_comments(parser)) WMenuParserError(parser, _("extra text after '#' command is ignored: \"%.16s...\""), parser->rd); } /* Extract the file name, search for it in known directories * and create a sub-parser to handle it. * Returns False if the file could not be found */ static Bool menu_parser_include_file(WMenuParser parser) { char buffer[MAXLINE]; char *req_filename, *fullfilename, *p; char eot; FILE *fh; if (!menu_parser_skip_spaces_and_comments(parser)) { WMenuParserError(parser, _("no file name found for #include") ); return False; } switch (*parser->rd++) { case '<': eot = '>'; break; case '"': eot = '"'; break; default: WMenuParserError(parser, _("file name must be enclosed in brackets or double-quotes for #define") ); return False; } req_filename = parser->rd; while (*parser->rd) { if (*parser->rd == eot) { *parser->rd++ = '\0'; goto found_end_define_fname; } else { parser->rd++; } } WMenuParserError(parser, _("missing closing '%c' in filename specification"), eot); return False; found_end_define_fname: /* If we're inside a #if sequence, we abort now, but not sooner in * order to keep the syntax check */ if (parser->cond.stack[0].skip) return False; { /* Check we are not nesting too many includes */ WMenuParser p; int count; count = 0; for (p = parser; p->parent_file; p = p->parent_file) count++; if (count > MAX_NESTED_INCLUDES) { WMenuParserError(parser, _("too many nested #include's")); return False; } } /* Absolute paths */ fullfilename = req_filename; if (req_filename[0] != '/') { /* Search first in the same directory as the current file */ p = strrchr(parser->file_name, '/'); if (p != NULL) { int len; len = p - parser->file_name + 1; if (len > sizeof(buffer) - 1) len = sizeof(buffer) - 1; strncpy(buffer, parser->file_name, len); strncpy(buffer+len, req_filename, sizeof(buffer) - len - 1); buffer[sizeof(buffer) - 1] = '\0'; fullfilename = buffer; } } fh = fopen(fullfilename, "rb"); /* Not found? Search in wmaker's known places */ if (fh == NULL) { if (req_filename[0] != '/') { const char *src; int idx; fullfilename = buffer; src = parser->include_default_paths; while (*src != '\0') { idx = 0; if (*src == '~') { char *home = wgethomedir(); while (*home != '\0') { if (idx < sizeof(buffer) - 2) buffer[idx++] = *home; home++; } src++; } while ((*src != '\0') && (*src != ':')) { if (idx < sizeof(buffer) - 2) buffer[idx++] = *src; src++; } buffer[idx++] = '/'; for (p = req_filename; *p != '\0'; p++) if (idx < sizeof(buffer) - 1) buffer[idx++] = *p; buffer[idx] = '\0'; fh = fopen(fullfilename, "rb"); if (fh != NULL) goto found_valid_file; if (*src == ':') src++; } } WMenuParserError(parser, _("could not find file \"%s\" for #include"), req_filename); return False; } /* Found the file, make it our new source */ found_valid_file: parser->include_file = menu_parser_create_new(wstrdup(req_filename), fh, parser->include_default_paths); parser->include_file->parent_file = parser; return True; } /* Check wether a macro exists or not, and marks the parser to ignore the * following data accordingly */ static void menu_parser_condition_ifmacro(WMenuParser parser, Bool check_exists) { WParserMacro *macro; int idx; const char *cmd_name, *macro_name; cmd_name = check_exists?"ifdef":"ifndef"; if (!menu_parser_skip_spaces_and_comments(parser)) { WMenuParserError(parser, _("missing macro name argument to #%s"), cmd_name); return; } /* jump to end of provided name for later checks that no extra stuff is following */ macro_name = parser->rd; while (isnamechr(*parser->rd)) parser->rd++; /* Add this condition to the stack of conditions */ if (parser->cond.depth >= wlengthof(parser->cond.stack)) { WMenuParserError(parser, _("too many nested #if sequences") ); return; } for (idx = parser->cond.depth - 1; idx >= 0; idx--) parser->cond.stack[idx + 1] = parser->cond.stack[idx]; parser->cond.depth++; if (parser->cond.stack[1].skip) { parser->cond.stack[0].skip = True; } else { macro = menu_parser_find_macro(parser, macro_name); parser->cond.stack[0].skip = ((check_exists) && (macro == NULL)) || ((!check_exists) && (macro != NULL)) ; } strcpy(parser->cond.stack[0].name, cmd_name); parser->cond.stack[0].line = parser->line_number; } /* Swap the 'data ignore' flag because a #else condition was found */ static void menu_parser_condition_else(WMenuParser parser) { if (parser->cond.depth <= 0) { WMenuParserError(parser, _("found #%s but has no matching #if"), "else"); return; } if ((parser->cond.depth > 1) && (parser->cond.stack[1].skip)) /* The containing #if is false, so we continue skipping anyway */ parser->cond.stack[0].skip = True; else parser->cond.stack[0].skip = !parser->cond.stack[0].skip; } /* Closes the current conditional, removing it from the stack */ static void menu_parser_condition_end(WMenuParser parser) { int idx; if (parser->cond.depth <= 0) { WMenuParserError(parser, _("found #%s but has no matching #if"), "endif"); return; } if (--parser->cond.depth > 0) for (idx = 0; idx < parser->cond.depth; idx++) parser->cond.stack[idx] = parser->cond.stack[idx + 1]; else parser->cond.stack[0].skip = False; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/Makefile.am����������������������������������������������������������������0000644�0001750�0001750�00000004653�13642357773�014002� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������## automake input file for WINGs AUTOMAKE_OPTIONS = SUBDIRS = WINGs . po Documentation Resources DIST_SUBDIRS = $(SUBDIRS) Tests Examples Extras libWINGs_la_LDFLAGS = -version-info @WINGS_VERSION@ libWUtil_la_LDFLAGS = -version-info @WUTIL_VERSION@ lib_LTLIBRARIES = libWUtil.la libWINGs.la LDADD= libWUtil.la libWINGs.la $(top_builddir)/wrlib/libwraster.la @INTLIBS@ libWINGs_la_LIBADD = libWUtil.la $(top_builddir)/wrlib/libwraster.la @XLIBS@ @XFTLIBS@ @FCLIBS@ @LIBM@ @PANGOLIBS@ libWUtil_la_LIBADD = @LIBBSD@ EXTRA_DIST = BUGS make-rgb Examples Extras Tests # wbutton.c libWINGs_la_SOURCES = \ configuration.c \ dragcommon.c \ dragdestination.c \ dragsource.c \ rgb.h \ selection.c \ wappresource.c \ wballoon.c \ wbox.c \ wbrowser.c \ wbutton.c \ wcolor.c \ wcolorpanel.c \ wcolorwell.c \ wconfig.h \ wevent.c \ wfilepanel.c \ wframe.c \ wfont.c \ wfontpanel.c \ widgets.c \ winputmethod.c \ wlabel.c \ wlist.c \ wmenuitem.c \ wmisc.c \ wpanel.c \ wpixmap.c \ wpopupbutton.c \ wprogressindicator.c \ wruler.c \ wscroller.c \ wscrollview.c \ wslider.c \ wsplitview.c \ wtabview.c \ wtext.c \ wtextfield.c \ wview.c \ wwindow.c libWUtil_la_SOURCES = \ array.c \ bagtree.c \ data.c \ error.c \ error.h \ findfile.c \ handlers.c \ hashtable.c \ memory.c \ menuparser.c \ menuparser.h \ menuparser_macros.c \ misc.c \ notification.c \ proplist.c \ string.c \ tree.c \ userdefaults.c \ userdefaults.h \ usleep.c \ wapplication.c \ wconfig.h \ wutil.c AM_CFLAGS = AM_CPPFLAGS = -DRESOURCE_PATH=\"$(datadir)/WINGs\" \ -I$(top_srcdir)/WINGs/WINGs -I$(top_srcdir)/wrlib -I$(top_srcdir)/src \ @XFTFLAGS@ @HEADER_SEARCH_PATH@ pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = WINGs.pc WUtil.pc DISTCLEANFILES = $(pkgconfig_DATA) WINGs.pc: Makefile @echo "Generating $@" @echo 'Name: WINGs' > $@ @echo 'Description: Small widget set with the NeXTStep(TM) look and feel' >> $@ @echo 'Version: $(VERSION)' >> $@ @echo 'Requires: wrlib WUtil' >> $@ @echo 'Libs: $(lib_search_path) -lWINGs' >> $@ @echo 'Libs.private: $(XFTLIBS) $(PANGOLIBS) $(XLIBS) -lm $(INTLIBS)' >> $@ @echo 'Cflags: $(inc_search_path)' >> $@ WUtil.pc: Makefile @echo "Generating $@" @echo 'Name: WUtil' > $@ @echo 'Description: Utility library for WINGs' >> $@ @echo 'Version: $(VERSION)' >> $@ @echo 'Libs: -L$(libdir) -lWUtil' >> $@ @echo 'Libs.private: $(INTLIBS)' >> $@ @echo 'Cflags: -I$(includedir)' >> $@ �������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/proplist.c�����������������������������������������������������������������0000644�0001750�0001750�00000116373�13642357773�013771� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include <sys/types.h> #include <sys/stat.h> #include <ctype.h> #include <errno.h> #include <ftw.h> #include <stdarg.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <strings.h> #include <unistd.h> #include "WUtil.h" #include "wconfig.h" typedef enum { WPLString = 0x57504c01, WPLData = 0x57504c02, WPLArray = 0x57504c03, WPLDictionary = 0x57504c04 } WPLType; typedef struct W_PropList { WPLType type; union { char *string; WMData *data; WMArray *array; WMHashTable *dict; } d; int retainCount; } W_PropList; typedef struct PLData { const char *ptr; int pos; const char *filename; int lineNumber; } PLData; typedef struct StringBuffer { char *str; int size; } StringBuffer; static unsigned hashPropList(const void *param); static WMPropList *getPLString(PLData * pldata); static WMPropList *getPLQString(PLData * pldata); static WMPropList *getPLData(PLData * pldata); static WMPropList *getPLArray(PLData * pldata); static WMPropList *getPLDictionary(PLData * pldata); static WMPropList *getPropList(PLData * pldata); typedef Bool(*isEqualFunc) (const void *, const void *); static const WMHashTableCallbacks WMPropListHashCallbacks = { hashPropList, (isEqualFunc) WMIsPropListEqualTo, NULL, NULL }; static Bool caseSensitive = True; #define BUFFERSIZE 8192 #define BUFFERSIZE_INCREMENT 1024 #if 0 # define DPUT(s) puts(s) #else # define DPUT(s) #endif #define COMPLAIN(pld, msg) wwarning(_("syntax error in %s %s, line %i: %s"),\ (pld)->filename ? "file" : "PropList",\ (pld)->filename ? (pld)->filename : "description",\ (pld)->lineNumber, msg) #define ISSTRINGABLE(c) (isalnum(c) || (c)=='.' || (c)=='_' || (c)=='/' \ || (c)=='+') #define CHECK_BUFFER_SIZE(buf, ptr) \ if ((ptr) >= (buf).size-1) {\ (buf).size += BUFFERSIZE_INCREMENT;\ (buf).str = wrealloc((buf).str, (buf).size);\ } #define inrange(ch, min, max) ((ch)>=(min) && (ch)<=(max)) #define noquote(ch) (inrange(ch, 'a', 'z') || inrange(ch, 'A', 'Z') || inrange(ch, '0', '9') || ((ch)=='_') || ((ch)=='.') || ((ch)=='$')) #define charesc(ch) (inrange(ch, 0x07, 0x0c) || ((ch)=='"') || ((ch)=='\\')) #define numesc(ch) (((ch)<=0x06) || inrange(ch, 0x0d, 0x1f) || ((ch)>0x7e)) #define ishexdigit(ch) (inrange(ch, 'a', 'f') || inrange(ch, 'A', 'F') || inrange(ch, '0', '9')) #define char2num(ch) (inrange(ch,'0','9') ? ((ch)-'0') : (inrange(ch,'a','f') ? ((ch)-0x57) : ((ch)-0x37))) #define num2char(num) ((num) < 0xa ? ((num)+'0') : ((num)+0x57)) #define MaxHashLength 64 static unsigned hashPropList(const void *param) { WMPropList *plist= (WMPropList *) param; unsigned ret = 0; unsigned ctr = 0; const char *key; int i, len; switch (plist->type) { case WPLString: key = plist->d.string; len = WMIN(strlen(key), MaxHashLength); for (i = 0; i < len; i++) { ret ^= tolower(key[i]) << ctr; ctr = (ctr + 1) % sizeof(char *); } /*while (*key) { ret ^= tolower(*key++) << ctr; ctr = (ctr + 1) % sizeof (char *); } */ break; case WPLData: key = WMDataBytes(plist->d.data); len = WMIN(WMGetDataLength(plist->d.data), MaxHashLength); for (i = 0; i < len; i++) { ret ^= key[i] << ctr; ctr = (ctr + 1) % sizeof(char *); } break; default: wwarning(_("Only string or data is supported for a proplist dictionary key")); wassertrv(False, 0); break; } return ret; } static WMPropList *retainPropListByCount(WMPropList * plist, int count) { WMPropList *key, *value; WMHashEnumerator e; int i; plist->retainCount += count; switch (plist->type) { case WPLString: case WPLData: break; case WPLArray: for (i = 0; i < WMGetArrayItemCount(plist->d.array); i++) { retainPropListByCount(WMGetFromArray(plist->d.array, i), count); } break; case WPLDictionary: e = WMEnumerateHashTable(plist->d.dict); while (WMNextHashEnumeratorItemAndKey(&e, (void **)&value, (void **)&key)) { retainPropListByCount(key, count); retainPropListByCount(value, count); } break; default: wwarning(_("Used proplist functions on non-WMPropLists objects")); wassertrv(False, NULL); break; } return plist; } static void releasePropListByCount(WMPropList * plist, int count) { WMPropList *key, *value; WMHashEnumerator e; int i; plist->retainCount -= count; switch (plist->type) { case WPLString: if (plist->retainCount < 1) { wfree(plist->d.string); wfree(plist); } break; case WPLData: if (plist->retainCount < 1) { WMReleaseData(plist->d.data); wfree(plist); } break; case WPLArray: for (i = 0; i < WMGetArrayItemCount(plist->d.array); i++) { releasePropListByCount(WMGetFromArray(plist->d.array, i), count); } if (plist->retainCount < 1) { WMFreeArray(plist->d.array); wfree(plist); } break; case WPLDictionary: e = WMEnumerateHashTable(plist->d.dict); while (WMNextHashEnumeratorItemAndKey(&e, (void **)&value, (void **)&key)) { releasePropListByCount(key, count); releasePropListByCount(value, count); } if (plist->retainCount < 1) { WMFreeHashTable(plist->d.dict); wfree(plist); } break; default: wwarning(_("Used proplist functions on non-WMPropLists objects")); wassertr(False); break; } } static char *dataDescription(WMPropList * plist) { const unsigned char *data; char *retVal; int i, j, length; data = WMDataBytes(plist->d.data); length = WMGetDataLength(plist->d.data); retVal = (char *)wmalloc(2 * length + length / 4 + 3); retVal[0] = '<'; for (i = 0, j = 1; i < length; i++) { retVal[j++] = num2char((data[i] >> 4) & 0x0f); retVal[j++] = num2char(data[i] & 0x0f); if ((i & 0x03) == 3 && i != length - 1) { /* if we've just finished a 32-bit int, add a space */ retVal[j++] = ' '; } } retVal[j++] = '>'; retVal[j] = '\0'; return retVal; } static char *stringDescription(WMPropList * plist) { const char *str; char *retVal, *sPtr, *dPtr; int len, quote; unsigned char ch; str = plist->d.string; if (strlen(str) == 0) { return wstrdup("\"\""); } /* FIXME: make this work with unichars. */ quote = 0; sPtr = (char *)str; len = 0; while ((ch = *sPtr)) { if (!noquote(ch)) { quote = 1; if (charesc(ch)) len++; else if (numesc(ch)) len += 3; } sPtr++; len++; } if (quote) len += 2; retVal = (char *)wmalloc(len + 1); sPtr = (char *)str; dPtr = retVal; if (quote) *dPtr++ = '"'; while ((ch = *sPtr)) { if (charesc(ch)) { *(dPtr++) = '\\'; switch (ch) { case '\a': *dPtr = 'a'; break; case '\b': *dPtr = 'b'; break; case '\t': *dPtr = 't'; break; case '\n': *dPtr = 'n'; break; case '\v': *dPtr = 'v'; break; case '\f': *dPtr = 'f'; break; default: *dPtr = ch; /* " or \ */ } } else if (numesc(ch)) { *(dPtr++) = '\\'; *(dPtr++) = '0' + ((ch >> 6) & 07); *(dPtr++) = '0' + ((ch >> 3) & 07); *dPtr = '0' + (ch & 07); } else { *dPtr = ch; } sPtr++; dPtr++; } if (quote) *dPtr++ = '"'; *dPtr = '\0'; return retVal; } static char *description(WMPropList * plist) { WMPropList *key, *val; char *retstr = NULL; char *str, *tmp, *skey, *sval; WMHashEnumerator e; int i; switch (plist->type) { case WPLString: retstr = stringDescription(plist); break; case WPLData: retstr = dataDescription(plist); break; case WPLArray: retstr = wstrdup("("); for (i = 0; i < WMGetArrayItemCount(plist->d.array); i++) { str = description(WMGetFromArray(plist->d.array, i)); if (i == 0) { retstr = wstrappend(retstr, str); } else { tmp = (char *)wmalloc(strlen(retstr) + strlen(str) + 3); sprintf(tmp, "%s, %s", retstr, str); wfree(retstr); retstr = tmp; } wfree(str); } retstr = wstrappend(retstr, ")"); break; case WPLDictionary: retstr = wstrdup("{"); e = WMEnumerateHashTable(plist->d.dict); while (WMNextHashEnumeratorItemAndKey(&e, (void **)&val, (void **)&key)) { skey = description(key); sval = description(val); tmp = (char *)wmalloc(strlen(retstr) + strlen(skey) + strlen(sval) + 5); sprintf(tmp, "%s%s = %s;", retstr, skey, sval); wfree(skey); wfree(sval); wfree(retstr); retstr = tmp; } retstr = wstrappend(retstr, "}"); break; default: wwarning(_("Used proplist functions on non-WMPropLists objects")); wassertrv(False, NULL); break; } return retstr; } static char *indentedDescription(WMPropList * plist, int level) { WMPropList *key, *val; char *retstr = NULL; char *str, *tmp, *skey, *sval; WMHashEnumerator e; int i; if (plist->type == WPLArray /* || plist->type==WPLDictionary */ ) { retstr = description(plist); if (retstr && ((2 * (level + 1) + strlen(retstr)) <= 77)) { return retstr; } else if (retstr) { wfree(retstr); retstr = NULL; } } switch (plist->type) { case WPLString: retstr = stringDescription(plist); break; case WPLData: retstr = dataDescription(plist); break; case WPLArray: retstr = wstrdup("(\n"); for (i = 0; i < WMGetArrayItemCount(plist->d.array); i++) { str = indentedDescription(WMGetFromArray(plist->d.array, i), level + 1); if (i == 0) { tmp = (char *)wmalloc(2 * (level + 1) + strlen(retstr) + strlen(str) + 1); sprintf(tmp, "%s%*s%s", retstr, 2 * (level + 1), "", str); wfree(retstr); retstr = tmp; } else { tmp = (char *)wmalloc(2 * (level + 1) + strlen(retstr) + strlen(str) + 3); sprintf(tmp, "%s,\n%*s%s", retstr, 2 * (level + 1), "", str); wfree(retstr); retstr = tmp; } wfree(str); } tmp = (char *)wmalloc(strlen(retstr) + 2 * level + 3); sprintf(tmp, "%s\n%*s)", retstr, 2 * level, ""); wfree(retstr); retstr = tmp; break; case WPLDictionary: retstr = wstrdup("{\n"); e = WMEnumerateHashTable(plist->d.dict); while (WMNextHashEnumeratorItemAndKey(&e, (void **)&val, (void **)&key)) { skey = indentedDescription(key, level + 1); sval = indentedDescription(val, level + 1); tmp = (char *)wmalloc(2 * (level + 1) + strlen(retstr) + strlen(skey) + strlen(sval) + 6); sprintf(tmp, "%s%*s%s = %s;\n", retstr, 2 * (level + 1), "", skey, sval); wfree(skey); wfree(sval); wfree(retstr); retstr = tmp; } tmp = (char *)wmalloc(strlen(retstr) + 2 * level + 2); sprintf(tmp, "%s%*s}", retstr, 2 * level, ""); wfree(retstr); retstr = tmp; break; default: wwarning(_("Used proplist functions on non-WMPropLists objects")); wassertrv(False, NULL); break; } return retstr; } static inline int getChar(PLData * pldata) { int c; c = pldata->ptr[pldata->pos]; if (c == 0) { return 0; } pldata->pos++; if (c == '\n') pldata->lineNumber++; return c; } static inline int getNonSpaceChar(PLData * pldata) { int c; while (1) { c = pldata->ptr[pldata->pos]; if (c == 0) { break; } pldata->pos++; if (c == '\n') { pldata->lineNumber++; } else if (!isspace(c)) { break; } } return c; } static char *unescapestr(const char *src) { char *dest = wmalloc(strlen(src) + 1); char *dPtr; char ch; for (dPtr = dest; ; dPtr++) { ch = *src++; if (ch == '\0') break; else if (ch != '\\') *dPtr = ch; else { ch = *(src++); if (ch == '\0') { *dPtr = '\\'; break; } else if ((ch >= '0') && (ch <= '7')) { char wch; /* Convert octal number to character */ wch = (ch & 07); ch = *src; if ((ch >= '0') && (ch <= '7')) { src++; wch = (wch << 3) | (ch & 07); ch = *src; if ((ch >= '0') && (ch <= '7')) { src++; wch = (wch << 3) | (ch & 07); } } *dPtr = wch; } else { switch (ch) { case 'a': *dPtr = '\a'; break; case 'b': *dPtr = '\b'; break; case 't': *dPtr = '\t'; break; case 'r': *dPtr = '\r'; break; case 'n': *dPtr = '\n'; break; case 'v': *dPtr = '\v'; break; case 'f': *dPtr = '\f'; break; default: *dPtr = ch; } } } } *dPtr = 0; return dest; } static WMPropList *getPLString(PLData * pldata) { WMPropList *plist; StringBuffer sBuf; int ptr = 0; int c; sBuf.str = wmalloc(BUFFERSIZE); sBuf.size = BUFFERSIZE; while (1) { c = getChar(pldata); if (ISSTRINGABLE(c)) { CHECK_BUFFER_SIZE(sBuf, ptr); sBuf.str[ptr++] = c; } else { if (c != 0) { pldata->pos--; } break; } } sBuf.str[ptr] = 0; if (ptr == 0) { plist = NULL; } else { char *tmp = unescapestr(sBuf.str); plist = WMCreatePLString(tmp); wfree(tmp); } wfree(sBuf.str); return plist; } static WMPropList *getPLQString(PLData * pldata) { WMPropList *plist; int ptr = 0, escaping = 0, ok = 1; int c; StringBuffer sBuf; sBuf.str = wmalloc(BUFFERSIZE); sBuf.size = BUFFERSIZE; while (1) { c = getChar(pldata); if (!escaping) { if (c == '\\') { escaping = 1; continue; } else if (c == '"') { break; } } else { CHECK_BUFFER_SIZE(sBuf, ptr); sBuf.str[ptr++] = '\\'; escaping = 0; } if (c == 0) { COMPLAIN(pldata, _("unterminated PropList string")); ok = 0; break; } else { CHECK_BUFFER_SIZE(sBuf, ptr); sBuf.str[ptr++] = c; } } sBuf.str[ptr] = 0; if (!ok) { plist = NULL; } else { char *tmp = unescapestr(sBuf.str); plist = WMCreatePLString(tmp); wfree(tmp); } wfree(sBuf.str); return plist; } static WMPropList *getPLData(PLData * pldata) { int ok = 1; int len = 0; int c1, c2; unsigned char buf[BUFFERSIZE], byte; WMPropList *plist; WMData *data; data = WMCreateDataWithCapacity(0); while (1) { c1 = getNonSpaceChar(pldata); if (c1 == 0) { COMPLAIN(pldata, _("unterminated PropList data")); ok = 0; break; } else if (c1 == '>') { break; } else if (ishexdigit(c1)) { c2 = getNonSpaceChar(pldata); if (c2 == 0 || c2 == '>') { COMPLAIN(pldata, _("unterminated PropList data (missing hexdigit)")); ok = 0; break; } else if (ishexdigit(c2)) { byte = char2num(c1) << 4; byte |= char2num(c2); buf[len++] = byte; if (len == sizeof(buf)) { WMAppendDataBytes(data, buf, len); len = 0; } } else { COMPLAIN(pldata, _("non hexdigit character in PropList data")); ok = 0; break; } } else { COMPLAIN(pldata, _("non hexdigit character in PropList data")); ok = 0; break; } } if (!ok) { WMReleaseData(data); return NULL; } if (len > 0) WMAppendDataBytes(data, buf, len); plist = WMCreatePLData(data); WMReleaseData(data); return plist; } static WMPropList *getPLArray(PLData * pldata) { Bool first = True; int ok = 1; int c; WMPropList *array, *obj; array = WMCreatePLArray(NULL); while (1) { c = getNonSpaceChar(pldata); if (c == 0) { COMPLAIN(pldata, _("unterminated PropList array")); ok = 0; break; } else if (c == ')') { break; } else if (c == ',') { /* continue normally */ } else if (!first) { COMPLAIN(pldata, _("missing or unterminated PropList array")); ok = 0; break; } else { pldata->pos--; } first = False; obj = getPropList(pldata); if (!obj) { COMPLAIN(pldata, _("could not get PropList array element")); ok = 0; break; } WMAddToPLArray(array, obj); WMReleasePropList(obj); } if (!ok) { WMReleasePropList(array); array = NULL; } return array; } static WMPropList *getPLDictionary(PLData * pldata) { int ok = 1; int c; WMPropList *dict, *key, *value; dict = WMCreatePLDictionary(NULL, NULL); while (1) { c = getNonSpaceChar(pldata); if (c == 0) { COMPLAIN(pldata, _("unterminated PropList dictionary")); ok = 0; break; } else if (c == '}') { break; } DPUT("getting PropList dictionary key"); if (c == '<') { key = getPLData(pldata); } else if (c == '"') { key = getPLQString(pldata); } else if (ISSTRINGABLE(c)) { pldata->pos--; key = getPLString(pldata); } else { if (c == '=') { COMPLAIN(pldata, _("missing PropList dictionary key")); } else { COMPLAIN(pldata, _("missing PropList dictionary entry key " "or unterminated dictionary")); } ok = 0; break; } if (!key) { COMPLAIN(pldata, _("error parsing PropList dictionary key")); ok = 0; break; } c = getNonSpaceChar(pldata); if (c != '=') { WMReleasePropList(key); COMPLAIN(pldata, _("missing = in PropList dictionary entry")); ok = 0; break; } DPUT("getting PropList dictionary entry value for key"); value = getPropList(pldata); if (!value) { COMPLAIN(pldata, _("error parsing PropList dictionary entry value")); WMReleasePropList(key); ok = 0; break; } c = getNonSpaceChar(pldata); if (c != ';') { COMPLAIN(pldata, _("missing ; in PropList dictionary entry")); WMReleasePropList(key); WMReleasePropList(value); ok = 0; break; } WMPutInPLDictionary(dict, key, value); WMReleasePropList(key); WMReleasePropList(value); } if (!ok) { WMReleasePropList(dict); dict = NULL; } return dict; } static WMPropList *getPropList(PLData * pldata) { WMPropList *plist; int c; c = getNonSpaceChar(pldata); switch (c) { case 0: DPUT("End of PropList"); plist = NULL; break; case '{': DPUT("Getting PropList dictionary"); plist = getPLDictionary(pldata); break; case '(': DPUT("Getting PropList array"); plist = getPLArray(pldata); break; case '<': DPUT("Getting PropList data"); plist = getPLData(pldata); break; case '"': DPUT("Getting PropList quoted string"); plist = getPLQString(pldata); break; default: if (ISSTRINGABLE(c)) { DPUT("Getting PropList string"); pldata->pos--; plist = getPLString(pldata); } else { COMPLAIN(pldata, _("was expecting a string, data, array or " "dictionary. If it's a string, try enclosing " "it with \".")); if (c == '#' || c == '/') { wwarning(_("Comments are not allowed inside WindowMaker owned" " domain files.")); } plist = NULL; } break; } return plist; } void WMPLSetCaseSensitive(Bool caseSensitiveness) { caseSensitive = caseSensitiveness; } WMPropList *WMCreatePLString(const char *str) { WMPropList *plist; wassertrv(str != NULL, NULL); plist = (WMPropList *) wmalloc(sizeof(W_PropList)); plist->type = WPLString; plist->d.string = wstrdup(str); plist->retainCount = 1; return plist; } WMPropList *WMCreatePLData(WMData * data) { WMPropList *plist; wassertrv(data != NULL, NULL); plist = (WMPropList *) wmalloc(sizeof(W_PropList)); plist->type = WPLData; plist->d.data = WMRetainData(data); plist->retainCount = 1; return plist; } WMPropList *WMCreatePLDataWithBytes(const unsigned char *bytes, unsigned int length) { WMPropList *plist; wassertrv(bytes != NULL, NULL); plist = (WMPropList *) wmalloc(sizeof(W_PropList)); plist->type = WPLData; plist->d.data = WMCreateDataWithBytes(bytes, length); plist->retainCount = 1; return plist; } WMPropList *WMCreatePLDataWithBytesNoCopy(unsigned char *bytes, unsigned int length, WMFreeDataProc * destructor) { WMPropList *plist; wassertrv(bytes != NULL, NULL); plist = (WMPropList *) wmalloc(sizeof(W_PropList)); plist->type = WPLData; plist->d.data = WMCreateDataWithBytesNoCopy(bytes, length, destructor); plist->retainCount = 1; return plist; } WMPropList *WMCreatePLArray(WMPropList * elem, ...) { WMPropList *plist, *nelem; va_list ap; plist = (WMPropList *) wmalloc(sizeof(W_PropList)); plist->type = WPLArray; plist->d.array = WMCreateArray(4); plist->retainCount = 1; if (!elem) return plist; WMAddToArray(plist->d.array, WMRetainPropList(elem)); va_start(ap, elem); while (1) { nelem = va_arg(ap, WMPropList *); if (!nelem) { va_end(ap); return plist; } WMAddToArray(plist->d.array, WMRetainPropList(nelem)); } } WMPropList *WMCreatePLDictionary(WMPropList * key, WMPropList * value, ...) { WMPropList *plist, *nkey, *nvalue, *k, *v; va_list ap; plist = (WMPropList *) wmalloc(sizeof(W_PropList)); plist->type = WPLDictionary; plist->d.dict = WMCreateHashTable(WMPropListHashCallbacks); plist->retainCount = 1; if (!key || !value) return plist; WMHashInsert(plist->d.dict, WMRetainPropList(key), WMRetainPropList(value)); va_start(ap, value); while (1) { nkey = va_arg(ap, WMPropList *); if (!nkey) { va_end(ap); return plist; } nvalue = va_arg(ap, WMPropList *); if (!nvalue) { va_end(ap); return plist; } if (WMHashGetItemAndKey(plist->d.dict, nkey, (void **)&v, (void **)&k)) { WMHashRemove(plist->d.dict, k); WMReleasePropList(k); WMReleasePropList(v); } WMHashInsert(plist->d.dict, WMRetainPropList(nkey), WMRetainPropList(nvalue)); } } WMPropList *WMRetainPropList(WMPropList * plist) { WMPropList *key, *value; WMHashEnumerator e; int i; plist->retainCount++; switch (plist->type) { case WPLString: case WPLData: break; case WPLArray: for (i = 0; i < WMGetArrayItemCount(plist->d.array); i++) { WMRetainPropList(WMGetFromArray(plist->d.array, i)); } break; case WPLDictionary: e = WMEnumerateHashTable(plist->d.dict); while (WMNextHashEnumeratorItemAndKey(&e, (void **)&value, (void **)&key)) { WMRetainPropList(key); WMRetainPropList(value); } break; default: wwarning(_("Used proplist functions on non-WMPropLists objects")); wassertrv(False, NULL); break; } return plist; } void WMReleasePropList(WMPropList * plist) { WMPropList *key, *value; WMHashEnumerator e; int i; plist->retainCount--; switch (plist->type) { case WPLString: if (plist->retainCount < 1) { wfree(plist->d.string); wfree(plist); } break; case WPLData: if (plist->retainCount < 1) { WMReleaseData(plist->d.data); wfree(plist); } break; case WPLArray: for (i = 0; i < WMGetArrayItemCount(plist->d.array); i++) { WMReleasePropList(WMGetFromArray(plist->d.array, i)); } if (plist->retainCount < 1) { WMFreeArray(plist->d.array); wfree(plist); } break; case WPLDictionary: e = WMEnumerateHashTable(plist->d.dict); while (WMNextHashEnumeratorItemAndKey(&e, (void **)&value, (void **)&key)) { WMReleasePropList(key); WMReleasePropList(value); } if (plist->retainCount < 1) { WMFreeHashTable(plist->d.dict); wfree(plist); } break; default: wwarning(_("Used proplist functions on non-WMPropLists objects")); wassertr(False); break; } } void WMInsertInPLArray(WMPropList * plist, int index, WMPropList * item) { wassertr(plist->type == WPLArray); retainPropListByCount(item, plist->retainCount); WMInsertInArray(plist->d.array, index, item); } void WMAddToPLArray(WMPropList * plist, WMPropList * item) { wassertr(plist->type == WPLArray); retainPropListByCount(item, plist->retainCount); WMAddToArray(plist->d.array, item); } void WMDeleteFromPLArray(WMPropList * plist, int index) { WMPropList *item; wassertr(plist->type == WPLArray); item = WMGetFromArray(plist->d.array, index); if (item != NULL) { WMDeleteFromArray(plist->d.array, index); releasePropListByCount(item, plist->retainCount); } } void WMRemoveFromPLArray(WMPropList * plist, WMPropList * item) { WMPropList *iPtr; int i; wassertr(plist->type == WPLArray); for (i = 0; i < WMGetArrayItemCount(plist->d.array); i++) { iPtr = WMGetFromArray(plist->d.array, i); if (WMIsPropListEqualTo(item, iPtr)) { WMDeleteFromArray(plist->d.array, i); releasePropListByCount(iPtr, plist->retainCount); break; } } } void WMPutInPLDictionary(WMPropList * plist, WMPropList * key, WMPropList * value) { wassertr(plist->type == WPLDictionary); /*WMRetainPropList(key); */ WMRemoveFromPLDictionary(plist, key); retainPropListByCount(key, plist->retainCount); retainPropListByCount(value, plist->retainCount); WMHashInsert(plist->d.dict, key, value); /*WMReleasePropList(key); */ } void WMRemoveFromPLDictionary(WMPropList * plist, WMPropList * key) { WMPropList *k, *v; wassertr(plist->type == WPLDictionary); if (WMHashGetItemAndKey(plist->d.dict, key, (void **)&v, (void **)&k)) { WMHashRemove(plist->d.dict, k); releasePropListByCount(k, plist->retainCount); releasePropListByCount(v, plist->retainCount); } } WMPropList *WMMergePLDictionaries(WMPropList * dest, WMPropList * source, Bool recursive) { WMPropList *key, *value, *dvalue; WMHashEnumerator e; wassertrv(source->type == WPLDictionary && dest->type == WPLDictionary, NULL); if (source == dest) return dest; e = WMEnumerateHashTable(source->d.dict); while (WMNextHashEnumeratorItemAndKey(&e, (void **)&value, (void **)&key)) { if (recursive && value->type == WPLDictionary) { dvalue = WMHashGet(dest->d.dict, key); if (dvalue && dvalue->type == WPLDictionary) { WMMergePLDictionaries(dvalue, value, True); } else { WMPutInPLDictionary(dest, key, value); } } else { WMPutInPLDictionary(dest, key, value); } } return dest; } WMPropList *WMSubtractPLDictionaries(WMPropList * dest, WMPropList * source, Bool recursive) { WMPropList *key, *value, *dvalue; WMHashEnumerator e; wassertrv(source->type == WPLDictionary && dest->type == WPLDictionary, NULL); if (source == dest) { WMPropList *keys = WMGetPLDictionaryKeys(dest); int i; for (i = 0; i < WMGetArrayItemCount(keys->d.array); i++) { WMRemoveFromPLDictionary(dest, WMGetFromArray(keys->d.array, i)); } WMReleasePropList(keys); return dest; } e = WMEnumerateHashTable(source->d.dict); while (WMNextHashEnumeratorItemAndKey(&e, (void **)&value, (void **)&key)) { dvalue = WMHashGet(dest->d.dict, key); if (!dvalue) continue; if (WMIsPropListEqualTo(value, dvalue)) { WMRemoveFromPLDictionary(dest, key); } else if (recursive && value->type == WPLDictionary && dvalue->type == WPLDictionary) { WMSubtractPLDictionaries(dvalue, value, True); } } return dest; } int WMGetPropListItemCount(WMPropList * plist) { switch (plist->type) { case WPLString: case WPLData: return 0; /* should this be 1 instead? */ case WPLArray: return WMGetArrayItemCount(plist->d.array); case WPLDictionary: return (int)WMCountHashTable(plist->d.dict); default: wwarning(_("Used proplist functions on non-WMPropLists objects")); wassertrv(False, 0); break; } return 0; } Bool WMIsPLString(WMPropList * plist) { if (plist) return (plist->type == WPLString); else return False; } Bool WMIsPLData(WMPropList * plist) { if (plist) return (plist->type == WPLData); else return False; } Bool WMIsPLArray(WMPropList * plist) { if (plist) return (plist->type == WPLArray); else return False; } Bool WMIsPLDictionary(WMPropList * plist) { if (plist) return (plist->type == WPLDictionary); else return False; } Bool WMIsPropListEqualTo(WMPropList * plist, WMPropList * other) { WMPropList *key1, *item1, *item2; WMHashEnumerator enumerator; int n, i; if (plist->type != other->type) return False; switch (plist->type) { case WPLString: if (caseSensitive) { return (strcmp(plist->d.string, other->d.string) == 0); } else { return (strcasecmp(plist->d.string, other->d.string) == 0); } case WPLData: return WMIsDataEqualToData(plist->d.data, other->d.data); case WPLArray: n = WMGetArrayItemCount(plist->d.array); if (n != WMGetArrayItemCount(other->d.array)) return False; for (i = 0; i < n; i++) { item1 = WMGetFromArray(plist->d.array, i); item2 = WMGetFromArray(other->d.array, i); if (!WMIsPropListEqualTo(item1, item2)) return False; } return True; case WPLDictionary: if (WMCountHashTable(plist->d.dict) != WMCountHashTable(other->d.dict)) return False; enumerator = WMEnumerateHashTable(plist->d.dict); while (WMNextHashEnumeratorItemAndKey(&enumerator, (void **)&item1, (void **)&key1)) { item2 = WMHashGet(other->d.dict, key1); if (!item2 || !item1 || !WMIsPropListEqualTo(item1, item2)) return False; } return True; default: wwarning(_("Used proplist functions on non-WMPropLists objects")); wassertrv(False, False); break; } return False; } char *WMGetFromPLString(WMPropList * plist) { wassertrv(plist->type == WPLString, NULL); return plist->d.string; } WMData *WMGetFromPLData(WMPropList * plist) { wassertrv(plist->type == WPLData, NULL); return plist->d.data; } const unsigned char *WMGetPLDataBytes(WMPropList * plist) { wassertrv(plist->type == WPLData, NULL); return WMDataBytes(plist->d.data); } int WMGetPLDataLength(WMPropList * plist) { wassertrv(plist->type == WPLData, 0); return WMGetDataLength(plist->d.data); } WMPropList *WMGetFromPLArray(WMPropList * plist, int index) { wassertrv(plist->type == WPLArray, NULL); return WMGetFromArray(plist->d.array, index); } WMPropList *WMGetFromPLDictionary(WMPropList * plist, WMPropList * key) { wassertrv(plist->type == WPLDictionary, NULL); return WMHashGet(plist->d.dict, key); } WMPropList *WMGetPLDictionaryKeys(WMPropList * plist) { WMPropList *array, *key; WMHashEnumerator enumerator; wassertrv(plist->type == WPLDictionary, NULL); array = (WMPropList *) wmalloc(sizeof(W_PropList)); array->type = WPLArray; array->d.array = WMCreateArray(WMCountHashTable(plist->d.dict)); array->retainCount = 1; enumerator = WMEnumerateHashTable(plist->d.dict); while ((key = WMNextHashEnumeratorKey(&enumerator))) { WMAddToArray(array->d.array, WMRetainPropList(key)); } return array; } WMPropList *WMShallowCopyPropList(WMPropList * plist) { WMPropList *ret = NULL; WMPropList *key, *item; WMHashEnumerator e; WMData *data; int i; switch (plist->type) { case WPLString: ret = WMCreatePLString(plist->d.string); break; case WPLData: data = WMCreateDataWithData(plist->d.data); ret = WMCreatePLData(data); WMReleaseData(data); break; case WPLArray: ret = (WMPropList *) wmalloc(sizeof(W_PropList)); ret->type = WPLArray; ret->d.array = WMCreateArrayWithArray(plist->d.array); ret->retainCount = 1; for (i = 0; i < WMGetArrayItemCount(ret->d.array); i++) WMRetainPropList(WMGetFromArray(ret->d.array, i)); break; case WPLDictionary: ret = WMCreatePLDictionary(NULL, NULL); e = WMEnumerateHashTable(plist->d.dict); while (WMNextHashEnumeratorItemAndKey(&e, (void **)&item, (void **)&key)) { WMPutInPLDictionary(ret, key, item); } break; default: wwarning(_("Used proplist functions on non-WMPropLists objects")); wassertrv(False, NULL); break; } return ret; } WMPropList *WMDeepCopyPropList(WMPropList * plist) { WMPropList *ret = NULL; WMPropList *key, *item; WMHashEnumerator e; WMData *data; int i; switch (plist->type) { case WPLString: ret = WMCreatePLString(plist->d.string); break; case WPLData: data = WMCreateDataWithData(plist->d.data); ret = WMCreatePLData(data); WMReleaseData(data); break; case WPLArray: ret = WMCreatePLArray(NULL); for (i = 0; i < WMGetArrayItemCount(plist->d.array); i++) { item = WMDeepCopyPropList(WMGetFromArray(plist->d.array, i)); WMAddToArray(ret->d.array, item); } break; case WPLDictionary: ret = WMCreatePLDictionary(NULL, NULL); e = WMEnumerateHashTable(plist->d.dict); /* While we copy an existing dictionary there is no way that we can * have duplicate keys, so we don't need to first remove a key/value * pair before inserting the new key/value. */ while (WMNextHashEnumeratorItemAndKey(&e, (void **)&item, (void **)&key)) { WMHashInsert(ret->d.dict, WMDeepCopyPropList(key), WMDeepCopyPropList(item)); } break; default: wwarning(_("Used proplist functions on non-WMPropLists objects")); wassertrv(False, NULL); break; } return ret; } WMPropList *WMCreatePropListFromDescription(const char *desc) { WMPropList *plist = NULL; PLData *pldata; pldata = (PLData *) wmalloc(sizeof(PLData)); pldata->ptr = desc; pldata->lineNumber = 1; plist = getPropList(pldata); if (getNonSpaceChar(pldata) != 0 && plist) { COMPLAIN(pldata, _("extra data after end of property list")); /* * We can't just ignore garbage after the end of the description * (especially if the description was read from a file), because * the "garbage" can be the real data and the real garbage is in * fact in the beginning of the file (which is now inside plist) */ WMReleasePropList(plist); plist = NULL; } wfree(pldata); return plist; } char *WMGetPropListDescription(WMPropList * plist, Bool indented) { return (indented ? indentedDescription(plist, 0) : description(plist)); } WMPropList *WMReadPropListFromFile(const char *file) { WMPropList *plist = NULL; PLData *pldata; char *read_buf; FILE *f; struct stat stbuf; size_t length; f = fopen(file, "rb"); if (!f) { /* let the user print the error message if he really needs to */ /*werror(_("could not open domain file '%s' for reading"), file); */ return NULL; } if (stat(file, &stbuf) == 0) { length = (size_t) stbuf.st_size; } else { werror(_("could not get size for file '%s'"), file); fclose(f); return NULL; } read_buf = wmalloc(length + 1); if (fread(read_buf, length, 1, f) != 1) { if (ferror(f)) { werror(_("error reading from file '%s'"), file); } fclose(f); wfree(read_buf); return NULL; } read_buf[length] = '\0'; fclose(f); pldata = (PLData *) wmalloc(sizeof(PLData)); pldata->ptr = read_buf; pldata->filename = file; pldata->lineNumber = 1; plist = getPropList(pldata); if (getNonSpaceChar(pldata) != 0 && plist) { COMPLAIN(pldata, _("extra data after end of property list")); /* * We can't just ignore garbage after the end of the description * (especially if the description was read from a file), because * the "garbage" can be the real data and the real garbage is in * fact in the beginning of the file (which is now inside plist) */ WMReleasePropList(plist); plist = NULL; } wfree(read_buf); wfree(pldata); return plist; } WMPropList *WMReadPropListFromPipe(const char *command) { FILE *file; WMPropList *plist; PLData *pldata; char *read_buf, *read_ptr; size_t remain_size, line_size; const size_t block_read_size = 4096; const size_t block_read_margin = 512; file = popen(command, "r"); if (!file) { werror(_("%s:could not open menu file"), command); return NULL; } /* read from file till EOF or OOM and fill proplist buffer*/ remain_size = block_read_size; read_buf = wmalloc(remain_size); read_ptr = read_buf; while (fgets(read_ptr, remain_size, file) != NULL) { line_size = strlen(read_ptr); remain_size -= line_size; read_ptr += line_size; if (remain_size < block_read_margin) { size_t read_length; read_length = read_ptr - read_buf; read_buf = wrealloc(read_buf, read_length + block_read_size); read_ptr = read_buf + read_length; remain_size = block_read_size; } } pclose(file); pldata = (PLData *) wmalloc(sizeof(PLData)); pldata->ptr = read_buf; pldata->filename = command; pldata->lineNumber = 1; plist = getPropList(pldata); if (getNonSpaceChar(pldata) != 0 && plist) { COMPLAIN(pldata, _("extra data after end of property list")); /* * We can't just ignore garbage after the end of the description * (especially if the description was read from a file), because * the "garbage" can be the real data and the real garbage is in * fact in the beginning of the file (which is now inside plist) */ WMReleasePropList(plist); plist = NULL; } wfree(read_buf); wfree(pldata); return plist; } /* TODO: review this function's code */ Bool WMWritePropListToFile(WMPropList * plist, const char *path) { char *thePath = NULL; char *desc; FILE *theFile; #ifdef HAVE_MKSTEMP int fd, mask; #endif if (!wmkdirhier(path)) return False; /* Use the path name of the destination file as a prefix for the * mkstemp() call so that we can be sure that both files are on * the same filesystem and the subsequent rename() will work. */ thePath = wstrconcat(path, ".XXXXXX"); #ifdef HAVE_MKSTEMP /* * We really just want to read the current umask, but as Coverity is * pointing a possible security issue: * some versions of mkstemp do not set file rights properly on the * created file, so it is recommended so set the umask beforehand. * As we need to set an umask to read the current value, we take this * opportunity to set a temporary aggresive umask so Coverity won't * complain, even if we do not really care in the present use case. */ mask = umask(S_IRWXG | S_IRWXO); if ((fd = mkstemp(thePath)) < 0) { werror(_("mkstemp (%s) failed"), thePath); goto failure; } umask(mask); fchmod(fd, 0666 & ~mask); if ((theFile = fdopen(fd, "wb")) == NULL) { close(fd); } #else if (mktemp(thePath) == NULL) { werror(_("mktemp (%s) failed"), thePath); goto failure; } theFile = fopen(thePath, "wb"); #endif if (theFile == NULL) { werror(_("open (%s) failed"), thePath); goto failure; } desc = indentedDescription(plist, 0); if (fprintf(theFile, "%s\n", desc) != strlen(desc) + 1) { werror(_("writing to file: %s failed"), thePath); wfree(desc); goto failure; } wfree(desc); (void)fsync(fileno(theFile)); if (fclose(theFile) != 0) { werror(_("fclose (%s) failed"), thePath); goto failure; } /* If we used a temporary file, we still need to rename() it be the * real file. Also, we need to try to retain the file attributes of * the original file we are overwriting (if we are) */ if (rename(thePath, path) != 0) { werror(_("rename ('%s' to '%s') failed"), thePath, path); goto failure; } wfree(thePath); return True; failure: unlink(thePath); wfree(thePath); return False; } /* * create a directory hierarchy * * if the last octet of `path' is `/', the full path is * assumed to be a directory; otherwise path is assumed to be a * file, and the last component is stripped off. the rest is the * the hierarchy to be created. * * refuses to create anything outside $WMAKER_USER_ROOT * * returns 1 on success, 0 on failure */ int wmkdirhier(const char *path) { const char *t; char *thePath = NULL, buf[1024]; size_t p, plen; struct stat st; /* Only create directories under $WMAKER_USER_ROOT */ if ((t = wusergnusteppath()) == NULL) return 0; if (strncmp(path, t, strlen(t)) != 0) return 0; thePath = wstrdup(path); /* Strip the trailing component if it is a file */ p = strlen(thePath); while (p && thePath[p] != '/') thePath[p--] = '\0'; thePath[p] = '\0'; /* Shortcut if it already exists */ if (stat(thePath, &st) == 0) { wfree(thePath); if (S_ISDIR(st.st_mode)) { /* Is a directory alright */ return 1; } else { /* Exists, but not a directory, the caller * might just as well abort now */ return 0; } } memset(buf, 0, sizeof(buf)); strncpy(buf, t, sizeof(buf) - 1); p = strlen(buf); plen = strlen(thePath); do { while (p++ < plen && thePath[p] != '/') ; strncpy(buf, thePath, p); if (mkdir(buf, 0777) == -1 && errno == EEXIST && stat(buf, &st) == 0 && !S_ISDIR(st.st_mode)) { werror(_("Could not create component %s"), buf); wfree(thePath); return 0; } } while (p < plen); wfree(thePath); return 1; } /* ARGSUSED2 */ static int wrmdirhier_fn(const char *path, const struct stat *st, int type, struct FTW *ftw) { /* Parameter not used, but tell the compiler that it is ok */ (void) st; (void) ftw; switch(type) { case FTW_D: break; case FTW_DP: return rmdir(path); break; case FTW_F: case FTW_SL: case FTW_SLN: return unlink(path); break; case FTW_DNR: case FTW_NS: default: return EPERM; } /* NOTREACHED */ return 0; } /* * remove a directory hierarchy * * refuses to remove anything outside $WMAKER_USER_ROOT * * returns 1 on success, 0 on failure * * TODO: revisit what's error and what's not * * with inspirations from OpenBSD's bin/rm/rm.c */ int wrmdirhier(const char *path) { struct stat st; int error; const char *t; /* Only remove directories under $WMAKER_USER_ROOT */ if ((t = wusergnusteppath()) == NULL) return EPERM; if (strncmp(path, t, strlen(t)) != 0) return EPERM; /* Shortcut if it doesn't exist to begin with */ if (stat(path, &st) == -1) return ENOENT; error = nftw(path, wrmdirhier_fn, 1, FTW_PHYS); return error; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/BUGS�����������������������������������������������������������������������0000644�0001750�0001750�00000000253�13431646201�012400� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������- filepanel does not reread / . If you add new files in / they will not be visible until the program is restarted. Closing and reopening the file panel does not help. �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/menuparser_macros.c��������������������������������������������������������0000644�0001750�0001750�00000052706�13431646201�015620� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 2012 Christophe Curis * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "wconfig.h" #include <stdlib.h> #include <stdio.h> #include <string.h> #include <ctype.h> #include <unistd.h> #include <pwd.h> #include <WINGs/WUtil.h> #include "menuparser.h" /* This file contains the functions related to macros: - parse a macro being defined - handle single macro expansion - pre-defined parser's macros Some design notes for macro internal storage: arg_count is -1 when the macro does not take arguments but 0 when no args but still using parenthesis. The difference is explained in GNU cpp's documentation: http://gcc.gnu.org/onlinedocs/cpp/Function_002dlike-Macros.html the value is stored for fast expansion; here is an example of the storage format used: #define EXAMPLE(a, b) "text:" a and b! will be stored in macro->value[] as: 0x0000: 0x00 0x07 (strlen(part 1)) 0x0002: '"', 't', 'e', 'x', 't', ':', '"' (first part) 0x0009: 0x00 (part 2, id=0 for replacement by 1st parameter 'a') 0x000A: 0x00 0x03 (strlen(part 3)) 0x000C: 'a', 'n', 'd' (part 3) 0x000F: 0x01 (part 4, id=1 for replacement by 2nd parameter 'b') 0x0010: 0x00 0x01 (strlen(part 5)) 0x0012: '!' (part 5) 0x0013: 0xFF (end of macro) This structure allows to store any number and combination of text/parameter and still provide very fast generation at macro replacement time. Predefined macros are using a call-back function mechanism to generate the value on-demand. This value is generated in the 'value' buffer of the structure. Most of these call-backs will actually cache the value: they generate it on the first use (inside a parser, not globally) and reuse that value on next call(s). Because none of these macros take parameters, the call-back mechanism does not include passing of user arguments; the complex storage mechanism for argument replacement being not necessary the macro->value parameter is used as a plain C string to be copied, this fact being recognised by macro->function being non-null. It was chosen that the call-back function would not have the possibility to fail. */ static Bool menu_parser_read_macro_def(WMenuParser parser, WParserMacro *macro, char **argname); static Bool menu_parser_read_macro_args(WMenuParser parser, WParserMacro *macro, char *array[], char *buffer, ssize_t buffer_size); /* Free all used memory associated with parser's macros */ void menu_parser_free_macros(WMenuParser parser) { WParserMacro *macro, *mnext; #ifdef DEBUG unsigned char *rd; unsigned int size; unsigned int count; /* if we were compiled with debugging, we take the opportunity that we parse the list of macros, for memory release, to print all the definitions */ printf(__FILE__ ": Macros defined while parsing \"%s\"\n", parser->file_name); count = 0; #endif for (macro = parser->macros; macro != NULL; macro = mnext) { #ifdef DEBUG printf(" %s", macro->name); if (macro->arg_count >= 0) printf("(args=%d)", macro->arg_count); printf(" = "); if (macro->function != NULL) { macro->function(macro, parser); printf("function:\"%s\"", macro->value); } else { rd = macro->value; for (;;) { putchar('"'); size = (*rd++) << 8; size |= *rd++; while (size-- > 0) putchar(*rd++); putchar('"'); if (*rd == 0xFF) break; printf(" #%d ", (*rd++) + 1); } } printf(", used %d times\n", macro->usage_count); count++; #endif mnext = macro->next; wfree(macro); } #ifdef DEBUG printf(__FILE__ ": %d macros\n", count); #endif parser->macros = NULL; // Security } /* Check wether the specified character is valid for a name (macro, parameter) or not */ int isnamechr(char ch) { static const int table[256] = { [0] = 0, // In case we'd fall on buggy compiler, to avoid crash // C99: 6.7.8.21 -> non specified values are initialised to 0 ['0'] = 1, ['1'] = 1, ['2'] = 1, ['3'] = 1, ['4'] = 1, ['5'] = 1, ['6'] = 1, ['7'] = 1, ['8'] = 1, ['9'] = 1, ['A'] = 1, ['B'] = 1, ['C'] = 1, ['D'] = 1, ['E'] = 1, ['F'] = 1, ['G'] = 1, ['H'] = 1, ['I'] = 1, ['J'] = 1, ['K'] = 1, ['L'] = 1, ['M'] = 1, ['N'] = 1, ['O'] = 1, ['P'] = 1, ['Q'] = 1, ['R'] = 1, ['S'] = 1, ['T'] = 1, ['U'] = 1, ['V'] = 1, ['W'] = 1, ['X'] = 1, ['Y'] = 1, ['Z'] = 1, ['a'] = 1, ['b'] = 1, ['c'] = 1, ['d'] = 1, ['e'] = 1, ['f'] = 1, ['g'] = 1, ['h'] = 1, ['i'] = 1, ['j'] = 1, ['k'] = 1, ['l'] = 1, ['m'] = 1, ['n'] = 1, ['o'] = 1, ['p'] = 1, ['q'] = 1, ['r'] = 1, ['s'] = 1, ['t'] = 1, ['u'] = 1, ['v'] = 1, ['w'] = 1, ['x'] = 1, ['y'] = 1, ['z'] = 1, ['_'] = 1 // We refuse any UTF-8 coded character, or accents in ISO-xxx codepages }; return table[0x00FF & (unsigned)ch ]; } /* Parse the definition of the macro and add it to the top-most parser's list */ void menu_parser_define_macro(WMenuParser parser) { WParserMacro *macro; int idx; char arg_names_buf[MAXLINE]; char *arg_name[MAX_MACRO_ARG_COUNT]; if (!menu_parser_skip_spaces_and_comments(parser)) { WMenuParserError(parser, _("no macro name found for #define") ); return; } macro = wmalloc(sizeof(*macro)); /* Isolate name of macro */ idx = 0; while (isnamechr(*parser->rd)) { if (idx < sizeof(macro->name) - 1) macro->name[idx++] = *parser->rd; parser->rd++; } // macro->name[idx] = '\0'; -> Already present because wmalloc filled struct with 0s /* Build list of expected arguments */ if (*parser->rd == '(') { parser->rd++; idx = 0; for (;;) { if (!menu_parser_skip_spaces_and_comments(parser)) { arglist_error_premature_eol: WMenuParserError(parser, _("premature end of file while reading arg-list for macro \"%s\""), macro->name); wfree(macro); return; } if (*parser->rd == ')') break; if (macro->arg_count >= wlengthof(arg_name)) { WMenuParserError(parser, _("too many parameters for macro \"%s\" definition"), macro->name); wfree(macro); *parser->rd = '\0'; // fake end-of-line to avoid warnings from remaining line content return; } if (isnamechr(*parser->rd)) { arg_name[macro->arg_count++] = arg_names_buf + idx; do { if (idx < sizeof(arg_names_buf) - 1) arg_names_buf[idx++] = *parser->rd; parser->rd++; } while (isnamechr(*parser->rd)); arg_names_buf[idx] = '\0'; if (idx < sizeof(arg_names_buf) - 1) idx++; } else { WMenuParserError(parser, _("invalid character '%c' in arg-list for macro \"%s\" while expecting parameter name"), *parser->rd, macro->name); wfree(macro); *parser->rd = '\0'; // fake end-of-line to avoid warnings from remaining line content return; } if (!menu_parser_skip_spaces_and_comments(parser)) goto arglist_error_premature_eol; if (*parser->rd == ')') break; if (*parser->rd != ',') { WMenuParserError(parser, _("invalid character '%c' in arg-list for macro \"%s\" while expecting ',' or ')'"), *parser->rd, macro->name); wfree(macro); *parser->rd = '\0'; // fake end-of-line to avoid warnings from remaining line content return; } parser->rd++; } parser->rd++; // skip the closing ')' } else macro->arg_count = -1; // Means no parenthesis at all to expect /* If we're inside a #if sequence, we abort now, but not sooner in order to keep the syntax check */ if (parser->cond.stack[0].skip) { wfree(macro); *parser->rd = '\0'; // Ignore macro content return; } /* Get the macro's definition */ menu_parser_skip_spaces_and_comments(parser); if (!menu_parser_read_macro_def(parser, macro, arg_name)) { wfree(macro); return; } /* Create the macro in the Root parser */ while (parser->parent_file != NULL) parser = parser->parent_file; /* Check that the macro was not already defined */ if (menu_parser_find_macro(parser, macro->name) != NULL) { WMenuParserError(parser, _("macro \"%s\" already defined, ignoring redefinition"), macro->name); wfree(macro); return; } /* Append at beginning of list */ macro->next = parser->macros; parser->macros = macro; } /* Check if the current word in the parser matches a macro */ WParserMacro *menu_parser_find_macro(WMenuParser parser, const char *name) { const char *ref, *cmp; WParserMacro *macro; while (parser->parent_file != NULL) parser = parser->parent_file; for (macro = parser->macros; macro != NULL; macro = macro->next) { ref = macro->name; cmp = name; while (*ref != '\0') if (*ref++ != *cmp++) goto check_next_macro; if (isnamechr(*cmp)) continue; return macro; check_next_macro: ; } return NULL; } /* look to see if the next word matches the name of one of the parameter names for a macro definition This function is internal to the macro definition function as this is where the analysis is done */ static inline char *mp_is_parameter(char *parse, const char *param) { while (*param) if (*parse++ != *param++) return NULL; if (isnamechr(*parse)) return NULL; return parse; } /* Read the content definition part of a #define construct (the part after the optional argument list) and store it in the prepared format for quick expansion There is no need to keep track of the names of the parameters, so they are stored in a temporary storage for the time of the macro parsing. */ static Bool menu_parser_read_macro_def(WMenuParser parser, WParserMacro *macro, char **arg) { unsigned char *wr_size; unsigned char *wr; unsigned int size_data; unsigned int size_max; int i; wr_size = macro->value; size_data = 0; wr = wr_size + 2; size_max = sizeof(macro->value) - (wr - macro->value) - 3; while (menu_parser_skip_spaces_and_comments(parser)) { if (isnamechr(*parser->rd)) { char *next_rd; /* Is the current word a parameter to replace? */ for (i = 0; i < macro->arg_count; i++) { next_rd = mp_is_parameter(parser->rd, arg[i]); if (next_rd != NULL) { if (wr + 4 >= macro->value + sizeof(macro->value)) goto error_too_much_data; wr_size[0] = (size_data >> 8) & 0xFF; wr_size[1] = size_data & 0xFF; *wr++ = i; wr_size = wr; wr += 2; parser->rd = next_rd; *wr++ = ' '; size_data = 1; size_max = sizeof(macro->value) - (wr - macro->value) - 3; goto next_loop; // Because we can't 'break' this loop and 'continue' // the outer one in a clean and easy way } } /* Not parameter name -> copy as-is */ do { *wr++ = *parser->rd++; if (++size_data >= size_max) { error_too_much_data: WMenuParserError(parser, _("more content than supported for the macro \"%s\""), macro->name); return False; } } while (isnamechr(*parser->rd)); if (isspace(*parser->rd)) { *wr++ = ' '; if (++size_data >= size_max) goto error_too_much_data; } } else { /* Some uninterresting characters, copy as-is */ while (*parser->rd != '\0') { if (isnamechr(*parser->rd)) break; // handle in next loop if (parser->rd[0] == '/') if ((parser->rd[1] == '*') || (parser->rd[1] == '/')) break; // Comments are handled by std function if ((parser->rd[0] == '\\') && (parser->rd[1] == '\n') && (parser->rd[2] == '\0')) break; // Long-lines are handled by std function *wr++ = *parser->rd++; if (++size_data >= size_max) goto error_too_much_data; } } next_loop: ; } wr_size[0] = (size_data >> 8) & 0xFF; wr_size[1] = size_data & 0xFF; *wr = 0xFF; return True; } /* When a macro is being used in the file, this function will generate the expanded value for the macro in the parser's work line. It blindly supposes that the data generated in macro->value is valid */ void menu_parser_expand_macro(WMenuParser parser, WParserMacro *macro) { char save_buf[sizeof(parser->line_buffer)]; char arg_values_buf[MAXLINE]; char *arg_value[MAX_MACRO_ARG_COUNT]; char *src, *dst; unsigned char *rd; unsigned int size; int i, space_left; /* Skip the name of the macro, this was not done by caller */ for (i = 0; macro->name[i] != '\0'; i++) parser->rd++; if (macro->arg_count >= 0) { menu_parser_skip_spaces_and_comments(parser); if (!menu_parser_read_macro_args(parser, macro, arg_value, arg_values_buf, sizeof(arg_values_buf))) return; } #ifdef DEBUG macro->usage_count++; #endif /* Save the remaining data from current line as we will overwrite the current line's workspace with the expanded macro, so we can re-append it afterwards */ dst = save_buf; while ((*dst++ = *parser->rd++) != '\0') ; /* Generate expanded macro */ dst = parser->line_buffer; parser->rd = dst; space_left = sizeof(parser->line_buffer) - 1; if (macro->function != NULL) { /* Parser's pre-defined macros actually proposes a function call to generate dynamic value for the expansion of the macro. In this case it is generated as a C string in the macro->value and used directly */ macro->function(macro, parser); rd = macro->value; while (--space_left > 0) if ((*dst = *rd++) == '\0') break; else dst++; } else { rd = macro->value; for (;;) { size = (*rd++) << 8; size |= *rd++; while (size-- > 0) { *dst = *rd++; if (--space_left > 0) dst++; } if (*rd == 0xFF) break; src = arg_value[*rd++]; while (*src) { *dst = *src++; if (--space_left > 0) dst++; } } } /* Copy finished -> Re-append the text that was following the macro */ src = save_buf; while (--space_left > 0) if ((*dst++ = *src++) == '\0') break; *dst = '\0'; if (space_left <= 0) WMenuParserError(parser, _("expansion for macro \"%s\" too big, line truncated"), macro->name); } /* When reading a macro to be expanded (not being defined), that takes arguments, this function parses the arguments being provided */ static Bool menu_parser_read_macro_args(WMenuParser parser, WParserMacro *macro, char *array[], char *buffer, ssize_t buffer_size) { int arg; if (*parser->rd != '(') { WMenuParserError(parser, _("macro \"%s\" needs parenthesis for arguments"), macro->name); return False; } parser->rd++; buffer_size--; // Room for final '\0' menu_parser_skip_spaces_and_comments(parser); arg = 0; for (;;) { int paren_count; array[arg] = buffer; paren_count = 0; while (*parser->rd != '\0') { if (*parser->rd == '(') paren_count++; if (paren_count <= 0) if ((*parser->rd == ',') || (*parser->rd == ')') ) break; if ((*parser->rd == '"') || (*parser->rd == '\'')) { char eot = *parser->rd++; if (buffer_size-- > 0) *buffer++ = eot; while (*parser->rd) { if ((*buffer = *parser->rd++) == eot) goto found_end_of_string; if (buffer_size-- > 0) buffer++; } WMenuParserError(parser, _("missing closing quote or double-quote before end-of-line") ); return False; found_end_of_string: continue; } if (isspace(*parser->rd)) { if (buffer_size-- > 0) *buffer++ = ' '; menu_parser_skip_spaces_and_comments(parser); continue; } *buffer = *parser->rd++; if (buffer_size-- > 0) buffer++; } *buffer = '\0'; if (buffer_size-- > 0) buffer++; arg++; if (*parser->rd == ',') { parser->rd++; if (arg >= macro->arg_count) { WMenuParserError(parser, _("too many arguments for macro \"%s\", expected only %d"), macro->name, macro->arg_count); return False; } continue; } break; } if (*parser->rd != ')') { WMenuParserError(parser, _("premature end of line while searching for arguments to macro \"%s\""), macro->name); return False; } parser->rd++; if (arg < macro->arg_count) { WMenuParserError(parser, _("not enough arguments for macro \"%s\", expected %d but got only %d"), macro->name, macro->arg_count, arg); return False; } if (buffer_size < 0) WMenuParserError(parser, _("too much data in parameter list of macro \"%s\", truncated"), macro->name); return True; } /******************************************************************************/ /* Definition of pre-defined macros */ /******************************************************************************/ void WMenuParserRegisterSimpleMacro(WMenuParser parser, const char *name, const char *value) { WParserMacro *macro; size_t len; unsigned char *wr; macro = wmalloc(sizeof(*macro)); strncpy(macro->name, name, sizeof(macro->name)-1); macro->arg_count = -1; len = strlen(value); if (len > sizeof(macro->value) - 3) { wwarning(_("size of value for macro '%s' is too big, truncated"), name); len = sizeof(macro->value) - 3; } macro->value[0] = (len >> 8) & 0xFF; macro->value[1] = len & 0xFF; wr = ¯o->value[2]; while (len-- > 0) *wr++ = *value++; *wr = 0xFF; macro->next = parser->macros; parser->macros = macro; } /* Name of the originally loaded file (before #includes) */ static void mpm_base_file(WParserMacro *this, WMenuParser parser) { unsigned char *src, *dst; if (this->value[0] != '\0') return; // Value already evaluated, re-use previous while (parser->parent_file != NULL) parser = parser->parent_file; dst = this->value; src = (unsigned char *) parser->file_name; *dst++ = '\"'; while (*src != '\0') if (dst < this->value + sizeof(this->value) - 2) *dst++ = *src++; else break; *dst++ = '\"'; *dst = '\0'; } /* Number of #include currently nested */ static void mpm_include_level(WParserMacro *this, WMenuParser parser) { int level = 0; while (parser->parent_file != NULL) { parser = parser->parent_file; level++; } snprintf((char *) this->value, sizeof(this->value), "%d", level); } /* Name of current file */ static void mpm_current_file(WParserMacro *this, WMenuParser parser) { unsigned char *src, *dst; dst = this->value; src = (unsigned char *) parser->file_name; *dst++ = '\"'; while (*src != '\0') if (dst < this->value + sizeof(this->value) - 2) *dst++ = *src++; else break; *dst++ = '\"'; *dst = '\0'; } /* Number of current line */ static void mpm_current_line(WParserMacro *this, WMenuParser parser) { snprintf((char *) this->value, sizeof(this->value), "%d", parser->line_number); } /* Name of host on which we are running, not necessarily displaying */ static void mpm_get_hostname(WParserMacro *this, WMenuParser parser) { char *h; if (this->value[0] != '\0') return; // Value already evaluated, re-use previous h = getenv("HOSTNAME"); if (h == NULL) { h = getenv("HOST"); if (h == NULL) { if (gethostname((char *) this->value, sizeof(this->value) ) != 0) { WMenuParserError(parser, _("could not determine %s"), "HOSTNAME"); this->value[0] = '?'; this->value[1] = '?'; this->value[2] = '?'; this->value[3] = '\0'; } return; } } wstrlcpy((char *) this->value, h, sizeof(this->value) ); } /* Name of the current user */ static void mpm_get_user_name(WParserMacro *this, WMenuParser parser) { char *user; if (this->value[0] != '\0') return; // Value already evaluated, re-use previous user = getlogin(); if (user == NULL) { struct passwd *pw_user; pw_user = getpwuid(getuid()); if (pw_user == NULL) { error_no_username: WMenuParserError(parser, _("could not determine %s"), "USER" ); /* Fall back on numeric id - better than nothing */ snprintf((char *) this->value, sizeof(this->value), "%d", getuid() ); return; } user = pw_user->pw_name; if (user == NULL) goto error_no_username; } wstrlcpy((char *) this->value, user, sizeof(this->value) ); } /* Number id of the user under which we are running */ static void mpm_get_user_id(WParserMacro *this, WMenuParser parser) { /* Parameter not used, but tell the compiler that it is ok */ (void) parser; if (this->value[0] != '\0') return; // Already evaluated, re-use previous snprintf((char *) this->value, sizeof(this->value), "%d", getuid() ); } /* Small helper to automate creation of one pre-defined macro in the parser */ static void w_create_macro(WMenuParser parser, const char *name, WParserMacroFunction *handler) { WParserMacro *macro; macro = wmalloc(sizeof(*macro)); strcpy(macro->name, name); macro->function = handler; macro->arg_count = -1; macro->next = parser->macros; parser->macros = macro; } /***** Register all the pre-defined macros in the parser *****/ void menu_parser_register_preset_macros(WMenuParser parser) { /* Defined by CPP: common predefined macros (GNU C extension) */ w_create_macro(parser, "__BASE_FILE__", mpm_base_file); w_create_macro(parser, "__INCLUDE_LEVEL__", mpm_include_level); /* Defined by CPP: standard predefined macros */ w_create_macro(parser, "__FILE__", mpm_current_file); w_create_macro(parser, "__LINE__", mpm_current_line); // w_create_macro(parser, "__DATE__", NULL); [will be implemented only per user request] // w_create_macro(parser, "__TIME__", NULL); [will be implemented only per user request] /* Historically defined by WindowMaker */ w_create_macro(parser, "HOST", mpm_get_hostname); w_create_macro(parser, "UID", mpm_get_user_id); w_create_macro(parser, "USER", mpm_get_user_name); } ����������������������������������������������������������WindowMaker-0.95.9/WINGs/wpanel.c�������������������������������������������������������������������0000644�0001750�0001750�00000061233�13642357773�013375� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include "WINGsP.h" #include <X11/keysym.h> #include <stdint.h> static void alertPanelOnClick(WMWidget * self, void *clientData) { WMAlertPanel *panel = clientData; WMBreakModalLoop(WMWidgetScreen(self)); if (self == panel->defBtn) { panel->result = WAPRDefault; } else if (self == panel->othBtn) { panel->result = WAPROther; } else if (self == panel->altBtn) { panel->result = WAPRAlternate; } } static void handleKeyPress(XEvent * event, void *clientData) { WMAlertPanel *panel = (WMAlertPanel *) clientData; KeySym ksym; XLookupString(&event->xkey, NULL, 0, &ksym, NULL); if (ksym == XK_Return && panel->defBtn) { WMPerformButtonClick(panel->defBtn); } else if (ksym == XK_Escape) { if (panel->altBtn || panel->othBtn) { WMPerformButtonClick(panel->othBtn ? panel->othBtn : panel->altBtn); } else { panel->result = WAPRDefault; WMBreakModalLoop(WMWidgetScreen(panel->win)); } } } int WMRunAlertPanel(WMScreen * scrPtr, WMWindow * owner, const char *title, const char *msg, const char *defaultButton, const char *alternateButton, const char *otherButton) { WMAlertPanel *panel; int tmp; panel = WMCreateAlertPanel(scrPtr, owner, title, msg, defaultButton, alternateButton, otherButton); { int px, py; WMView *view = WMWidgetView(panel->win); if (owner) { WMView *oview = WMWidgetView(owner); WMPoint pt = WMGetViewScreenPosition(oview); px = (W_VIEW_WIDTH(oview) - W_VIEW_WIDTH(view)) / 2; py = (W_VIEW_HEIGHT(oview) - W_VIEW_HEIGHT(view)) / 2; px += pt.x; py += pt.y; } else { px = (W_VIEW_WIDTH(scrPtr->rootView) - W_VIEW_WIDTH(view)) / 2; py = (W_VIEW_HEIGHT(scrPtr->rootView) - W_VIEW_HEIGHT(view)) / 2; } WMSetWindowInitialPosition(panel->win, px, py); } WMMapWidget(panel->win); WMRunModalLoop(scrPtr, W_VIEW(panel->win)); tmp = panel->result; WMDestroyAlertPanel(panel); return tmp; } void WMDestroyAlertPanel(WMAlertPanel * panel) { WMUnmapWidget(panel->win); WMDestroyWidget(panel->win); wfree(panel); } WMAlertPanel *WMCreateAlertPanel(WMScreen * scrPtr, WMWindow * owner, const char *title, const char *msg, const char *defaultButton, const char *alternateButton, const char *otherButton) { WMAlertPanel *panel; WMFont *defaultFont; int dw = 0, aw = 0, ow = 0, w; WMBox *hbox; WMPixmap *icon; defaultFont = WMSystemFontOfSize(scrPtr, 12); panel = wmalloc(sizeof(WMAlertPanel)); if (owner) { panel->win = WMCreatePanelWithStyleForWindow(owner, "alertPanel", WMTitledWindowMask); } else { panel->win = WMCreateWindowWithStyle(scrPtr, "alertPanel", WMTitledWindowMask); } WMSetWindowInitialPosition(panel->win, (scrPtr->rootView->size.width - WMWidgetWidth(panel->win)) / 2, (scrPtr->rootView->size.height - WMWidgetHeight(panel->win)) / 2); WMSetWindowTitle(panel->win, ""); panel->vbox = WMCreateBox(panel->win); WMSetViewExpandsToParent(WMWidgetView(panel->vbox), 0, 0, 0, 0); WMSetBoxHorizontal(panel->vbox, False); WMMapWidget(panel->vbox); hbox = WMCreateBox(panel->vbox); WMSetBoxBorderWidth(hbox, 5); WMSetBoxHorizontal(hbox, True); WMMapWidget(hbox); WMAddBoxSubview(panel->vbox, WMWidgetView(hbox), False, True, 74, 0, 5); panel->iLbl = WMCreateLabel(hbox); WMSetLabelImagePosition(panel->iLbl, WIPImageOnly); WMMapWidget(panel->iLbl); WMAddBoxSubview(hbox, WMWidgetView(panel->iLbl), False, True, 64, 0, 10); icon = WMCreateApplicationIconBlendedPixmap(scrPtr, (RColor *) NULL); if (icon) { WMSetLabelImage(panel->iLbl, icon); WMReleasePixmap(icon); } else { WMSetLabelImage(panel->iLbl, scrPtr->applicationIconPixmap); } if (title) { WMFont *largeFont; largeFont = WMBoldSystemFontOfSize(scrPtr, 24); panel->tLbl = WMCreateLabel(hbox); WMMapWidget(panel->tLbl); WMAddBoxSubview(hbox, WMWidgetView(panel->tLbl), True, True, 64, 0, 0); WMSetLabelText(panel->tLbl, title); WMSetLabelTextAlignment(panel->tLbl, WALeft); WMSetLabelFont(panel->tLbl, largeFont); WMReleaseFont(largeFont); } /* create divider line */ panel->line = WMCreateFrame(panel->win); WMMapWidget(panel->line); WMAddBoxSubview(panel->vbox, WMWidgetView(panel->line), False, True, 2, 2, 5); WMSetFrameRelief(panel->line, WRGroove); if (msg) { panel->mLbl = WMCreateLabel(panel->vbox); WMSetLabelWraps(panel->mLbl, True); WMMapWidget(panel->mLbl); WMAddBoxSubview(panel->vbox, WMWidgetView(panel->mLbl), True, True, WMFontHeight(scrPtr->normalFont) * 4, 0, 5); WMSetLabelText(panel->mLbl, msg); WMSetLabelTextAlignment(panel->mLbl, WACenter); WMSetLabelFont(panel->mLbl, defaultFont); } panel->hbox = WMCreateBox(panel->vbox); WMSetBoxBorderWidth(panel->hbox, 10); WMSetBoxHorizontal(panel->hbox, True); WMMapWidget(panel->hbox); WMAddBoxSubview(panel->vbox, WMWidgetView(panel->hbox), False, True, 44, 0, 0); /* create buttons */ if (otherButton) ow = WMWidthOfString(defaultFont, otherButton, strlen(otherButton)); if (alternateButton) aw = WMWidthOfString(defaultFont, alternateButton, strlen(alternateButton)); if (defaultButton) dw = WMWidthOfString(defaultFont, defaultButton, strlen(defaultButton)); dw = dw + (scrPtr->buttonArrow ? scrPtr->buttonArrow->width : 0); aw += 30; ow += 30; dw += 30; w = WMAX(dw, WMAX(aw, ow)); if ((w + 10) * 3 < 400) { aw = w; ow = w; dw = w; } else { int t; t = 400 - 40 - aw - ow - dw; aw += t / 3; ow += t / 3; dw += t / 3; } if (defaultButton) { panel->defBtn = WMCreateCommandButton(panel->hbox); WMSetButtonAction(panel->defBtn, alertPanelOnClick, panel); WMAddBoxSubviewAtEnd(panel->hbox, WMWidgetView(panel->defBtn), False, True, dw, 0, 0); WMSetButtonText(panel->defBtn, defaultButton); WMSetButtonImage(panel->defBtn, scrPtr->buttonArrow); WMSetButtonAltImage(panel->defBtn, scrPtr->pushedButtonArrow); WMSetButtonImagePosition(panel->defBtn, WIPRight); WMSetButtonFont(panel->defBtn, defaultFont); } if (alternateButton) { panel->altBtn = WMCreateCommandButton(panel->hbox); WMAddBoxSubviewAtEnd(panel->hbox, WMWidgetView(panel->altBtn), False, True, aw, 0, 5); WMSetButtonAction(panel->altBtn, alertPanelOnClick, panel); WMSetButtonText(panel->altBtn, alternateButton); WMSetButtonFont(panel->altBtn, defaultFont); } if (otherButton) { panel->othBtn = WMCreateCommandButton(panel->hbox); WMSetButtonAction(panel->othBtn, alertPanelOnClick, panel); WMAddBoxSubviewAtEnd(panel->hbox, WMWidgetView(panel->othBtn), False, True, ow, 0, 5); WMSetButtonText(panel->othBtn, otherButton); WMSetButtonFont(panel->othBtn, defaultFont); } WMMapSubwidgets(panel->hbox); WMCreateEventHandler(W_VIEW(panel->win), KeyPressMask, handleKeyPress, panel); WMRealizeWidget(panel->win); WMMapSubwidgets(panel->win); WMReleaseFont(defaultFont); return panel; } WMAlertPanel *WMCreateScaledAlertPanel(WMScreen * scrPtr, WMWindow * owner, const char *title, const char *msg, const char *defaultButton, const char *alternateButton, const char *otherButton) { WMAlertPanel *panel; int dw = 0, aw = 0, ow = 0, w; WMBox *hbox; WMPixmap *icon; int wmScaleWidth, wmScaleHeight; int pwidth, pheight; panel = wmalloc(sizeof(WMAlertPanel)); if (owner) { panel->win = WMCreatePanelWithStyleForWindow(owner, "alertPanel", WMTitledWindowMask); } else { panel->win = WMCreateWindowWithStyle(scrPtr, "alertPanel", WMTitledWindowMask); } /* calculate and set the panel's size */ WMGetScaleBaseFromSystemFont(scrPtr, &wmScaleWidth, &wmScaleHeight); pwidth = WMScaleX(400); pheight = WMScaleY(5) /* upper margin */ + 64 /* icon size */ + WMScaleY(5) /* space between icon and divider line */ + 2 /* divider line */ + WMScaleY(5); /* space between divider line and message */ if (msg) pheight += WMFontHeight(scrPtr->normalFont) * 4 + WMScaleY(5); pheight += WMScaleY(44); WMResizeWidget(panel->win, pwidth, pheight); WMSetWindowInitialPosition(panel->win, (scrPtr->rootView->size.width - pwidth) / 2, (scrPtr->rootView->size.height - pheight) / 2); WMSetWindowTitle(panel->win, ""); panel->vbox = WMCreateBox(panel->win); WMSetViewExpandsToParent(WMWidgetView(panel->vbox), 0, 0, 0, 0); WMSetBoxHorizontal(panel->vbox, False); WMMapWidget(panel->vbox); hbox = WMCreateBox(panel->vbox); WMSetBoxBorderWidth(hbox, WMScaleX(5)); WMSetBoxHorizontal(hbox, True); WMMapWidget(hbox); WMAddBoxSubview(panel->vbox, WMWidgetView(hbox), False, True, 64 + 2 * WMScaleY(5), 0, WMScaleY(5)); panel->iLbl = WMCreateLabel(hbox); WMSetLabelImagePosition(panel->iLbl, WIPImageOnly); WMMapWidget(panel->iLbl); WMAddBoxSubview(hbox, WMWidgetView(panel->iLbl), False, True, 64, 0, 10); icon = WMCreateApplicationIconBlendedPixmap(scrPtr, (RColor *) NULL); if (icon) { WMSetLabelImage(panel->iLbl, icon); WMReleasePixmap(icon); } else { WMSetLabelImage(panel->iLbl, scrPtr->applicationIconPixmap); } if (title) { WMFont *largeFont; largeFont = WMBoldSystemFontOfSize(scrPtr, 24); panel->tLbl = WMCreateLabel(hbox); WMMapWidget(panel->tLbl); WMAddBoxSubview(hbox, WMWidgetView(panel->tLbl), True, True, 64, 0, 0); WMSetLabelText(panel->tLbl, title); WMSetLabelTextAlignment(panel->tLbl, WALeft); WMSetLabelFont(panel->tLbl, largeFont); WMReleaseFont(largeFont); } /* create divider line */ panel->line = WMCreateFrame(panel->win); WMMapWidget(panel->line); WMAddBoxSubview(panel->vbox, WMWidgetView(panel->line), False, True, 2, 2, WMScaleY(5)); WMSetFrameRelief(panel->line, WRGroove); if (msg) { panel->mLbl = WMCreateLabel(panel->vbox); WMSetLabelWraps(panel->mLbl, True); WMMapWidget(panel->mLbl); WMAddBoxSubview(panel->vbox, WMWidgetView(panel->mLbl), True, True, WMFontHeight(scrPtr->normalFont) * 4, 0, WMScaleY(5)); WMSetLabelText(panel->mLbl, msg); WMSetLabelTextAlignment(panel->mLbl, WACenter); } panel->hbox = WMCreateBox(panel->vbox); WMSetBoxBorderWidth(panel->hbox, WMScaleX(10)); WMSetBoxHorizontal(panel->hbox, True); WMMapWidget(panel->hbox); WMAddBoxSubview(panel->vbox, WMWidgetView(panel->hbox), False, True, WMScaleY(44), 0, 0); /* create buttons */ if (otherButton) ow = WMWidthOfString(scrPtr->normalFont, otherButton, strlen(otherButton)); if (alternateButton) aw = WMWidthOfString(scrPtr->normalFont, alternateButton, strlen(alternateButton)); if (defaultButton) dw = WMWidthOfString(scrPtr->normalFont, defaultButton, strlen(defaultButton)); dw = dw + (scrPtr->buttonArrow ? scrPtr->buttonArrow->width : 0); aw += WMScaleX(30); ow += WMScaleX(30); dw += WMScaleX(30); w = WMAX(dw, WMAX(aw, ow)); if ((w + WMScaleX(10)) * 3 < pwidth) { aw = w; ow = w; dw = w; } else { int t; t = pwidth - 4 * WMScaleX(10) - aw - ow - dw; aw += t / 3; ow += t / 3; dw += t / 3; } if (defaultButton) { panel->defBtn = WMCreateCommandButton(panel->hbox); WMResizeWidget(panel->defBtn, dw, WMScaleY(24)); WMSetButtonAction(panel->defBtn, alertPanelOnClick, panel); WMAddBoxSubviewAtEnd(panel->hbox, WMWidgetView(panel->defBtn), False, True, dw, 0, 0); WMSetButtonText(panel->defBtn, defaultButton); WMSetButtonImage(panel->defBtn, scrPtr->buttonArrow); WMSetButtonAltImage(panel->defBtn, scrPtr->pushedButtonArrow); WMSetButtonImagePosition(panel->defBtn, WIPRight); } if (alternateButton) { panel->altBtn = WMCreateCommandButton(panel->hbox); WMResizeWidget(panel->altBtn, aw, WMScaleY(24)); WMAddBoxSubviewAtEnd(panel->hbox, WMWidgetView(panel->altBtn), False, True, aw, 0, WMScaleX(5)); WMSetButtonAction(panel->altBtn, alertPanelOnClick, panel); WMSetButtonText(panel->altBtn, alternateButton); } if (otherButton) { panel->othBtn = WMCreateCommandButton(panel->hbox); WMResizeWidget(panel->othBtn, ow, WMScaleY(24)); WMSetButtonAction(panel->othBtn, alertPanelOnClick, panel); WMAddBoxSubviewAtEnd(panel->hbox, WMWidgetView(panel->othBtn), False, True, ow, 0, WMScaleX(5)); WMSetButtonText(panel->othBtn, otherButton); } WMMapSubwidgets(panel->hbox); WMCreateEventHandler(W_VIEW(panel->win), KeyPressMask, handleKeyPress, panel); WMRealizeWidget(panel->win); WMMapSubwidgets(panel->win); return panel; } static void inputBoxOnClick(WMWidget * self, void *clientData) { WMInputPanel *panel = clientData; WMBreakModalLoop(WMWidgetScreen(self)); if (self == panel->defBtn) { panel->result = WAPRDefault; } else if (self == panel->altBtn) { panel->result = WAPRAlternate; } } static void handleKeyPress2(XEvent * event, void *clientData) { WMInputPanel *panel = (WMInputPanel *) clientData; KeySym ksym; XLookupString(&event->xkey, NULL, 0, &ksym, NULL); if (ksym == XK_Return && panel->defBtn) { WMPerformButtonClick(panel->defBtn); } else if (ksym == XK_Escape) { if (panel->altBtn) { WMPerformButtonClick(panel->altBtn); } else { /* printf("got esc\n"); */ WMBreakModalLoop(WMWidgetScreen(panel->win)); panel->result = WAPRDefault; } } } char *WMRunInputPanel(WMScreen * scrPtr, WMWindow * owner, const char *title, const char *msg, const char *defaultText, const char *okButton, const char *cancelButton) { WMInputPanel *panel; char *tmp; panel = WMCreateInputPanel(scrPtr, owner, title, msg, defaultText, okButton, cancelButton); { int px, py; WMView *view = WMWidgetView(panel->win); if (owner) { WMView *oview = WMWidgetView(owner); WMPoint pt = WMGetViewScreenPosition(oview); px = (W_VIEW_WIDTH(oview) - W_VIEW_WIDTH(view)) / 2; py = (W_VIEW_HEIGHT(oview) - W_VIEW_HEIGHT(view)) / 2; px += pt.x; py += pt.y; } else { px = (W_VIEW_WIDTH(scrPtr->rootView) - W_VIEW_WIDTH(view)) / 2; py = (W_VIEW_HEIGHT(scrPtr->rootView) - W_VIEW_HEIGHT(view)) / 2; } WMSetWindowInitialPosition(panel->win, px, py); } WMMapWidget(panel->win); WMRunModalLoop(scrPtr, W_VIEW(panel->win)); if (panel->result == WAPRDefault) tmp = WMGetTextFieldText(panel->text); else tmp = NULL; WMDestroyInputPanel(panel); return tmp; } void WMDestroyInputPanel(WMInputPanel * panel) { WMRemoveNotificationObserver(panel); WMUnmapWidget(panel->win); WMDestroyWidget(panel->win); wfree(panel); } static void endedEditingObserver(void *observerData, WMNotification * notification) { WMInputPanel *panel = (WMInputPanel *) observerData; switch ((uintptr_t)WMGetNotificationClientData(notification)) { case WMReturnTextMovement: if (panel->defBtn) WMPerformButtonClick(panel->defBtn); break; case WMEscapeTextMovement: if (panel->altBtn) WMPerformButtonClick(panel->altBtn); else { WMBreakModalLoop(WMWidgetScreen(panel->win)); panel->result = WAPRDefault; } break; default: break; } } WMInputPanel *WMCreateInputPanel(WMScreen * scrPtr, WMWindow * owner, const char *title, const char *msg, const char *defaultText, const char *okButton, const char *cancelButton) { WMInputPanel *panel; WMFont *defaultFont; int x, dw = 0, aw = 0, w; defaultFont = WMSystemFontOfSize(scrPtr, 12); panel = wmalloc(sizeof(WMInputPanel)); if (owner) panel->win = WMCreatePanelWithStyleForWindow(owner, "inputPanel", WMTitledWindowMask); else panel->win = WMCreateWindowWithStyle(scrPtr, "inputPanel", WMTitledWindowMask); WMSetWindowTitle(panel->win, ""); WMResizeWidget(panel->win, 320, 160); if (title) { WMFont *largeFont; largeFont = WMBoldSystemFontOfSize(scrPtr, 24); panel->tLbl = WMCreateLabel(panel->win); WMMoveWidget(panel->tLbl, 20, 16); WMResizeWidget(panel->tLbl, 320 - 40, WMFontHeight(largeFont) + 4); WMSetLabelText(panel->tLbl, title); WMSetLabelTextAlignment(panel->tLbl, WALeft); WMSetLabelFont(panel->tLbl, largeFont); WMReleaseFont(largeFont); } if (msg) { panel->mLbl = WMCreateLabel(panel->win); WMMoveWidget(panel->mLbl, 20, 50); WMResizeWidget(panel->mLbl, 320 - 40, WMFontHeight(scrPtr->normalFont) * 2); WMSetLabelText(panel->mLbl, msg); WMSetLabelTextAlignment(panel->mLbl, WALeft); WMSetLabelFont(panel->mLbl, defaultFont); } panel->text = WMCreateTextField(panel->win); WMMoveWidget(panel->text, 20, 85); WMResizeWidget(panel->text, 320 - 40, WMWidgetHeight(panel->text)); WMSetTextFieldText(panel->text, defaultText); WMSetTextFieldFont(panel->text, defaultFont); WMAddNotificationObserver(endedEditingObserver, panel, WMTextDidEndEditingNotification, panel->text); /* create buttons */ if (cancelButton) aw = WMWidthOfString(defaultFont, cancelButton, strlen(cancelButton)); if (okButton) dw = WMWidthOfString(defaultFont, okButton, strlen(okButton)); w = dw + (scrPtr->buttonArrow ? scrPtr->buttonArrow->width : 0); if (aw > w) w = aw; w += 30; x = 310; if (okButton) { x -= w + 10; panel->defBtn = WMCreateCustomButton(panel->win, WBBPushInMask | WBBPushChangeMask | WBBPushLightMask); WMSetButtonAction(panel->defBtn, inputBoxOnClick, panel); WMMoveWidget(panel->defBtn, x, 124); WMResizeWidget(panel->defBtn, w, 24); WMSetButtonText(panel->defBtn, okButton); WMSetButtonImage(panel->defBtn, scrPtr->buttonArrow); WMSetButtonAltImage(panel->defBtn, scrPtr->pushedButtonArrow); WMSetButtonImagePosition(panel->defBtn, WIPRight); WMSetButtonFont(panel->defBtn, defaultFont); } if (cancelButton) { x -= w + 10; panel->altBtn = WMCreateCommandButton(panel->win); WMSetButtonAction(panel->altBtn, inputBoxOnClick, panel); WMMoveWidget(panel->altBtn, x, 124); WMResizeWidget(panel->altBtn, w, 24); WMSetButtonText(panel->altBtn, cancelButton); WMSetButtonFont(panel->altBtn, defaultFont); } WMCreateEventHandler(W_VIEW(panel->win), KeyPressMask, handleKeyPress2, panel); WMRealizeWidget(panel->win); WMMapSubwidgets(panel->win); WMSetFocusToWidget(panel->text); WMReleaseFont(defaultFont); return panel; } WMInputPanel *WMCreateScaledInputPanel(WMScreen * scrPtr, WMWindow * owner, const char *title, const char *msg, const char *defaultText, const char *okButton, const char *cancelButton) { WMInputPanel *panel; int x, dw = 0, aw = 0, w; int wmScaleWidth, wmScaleHeight; panel = wmalloc(sizeof(WMInputPanel)); if (owner) panel->win = WMCreatePanelWithStyleForWindow(owner, "inputPanel", WMTitledWindowMask); else panel->win = WMCreateWindowWithStyle(scrPtr, "inputPanel", WMTitledWindowMask); WMSetWindowTitle(panel->win, ""); WMGetScaleBaseFromSystemFont(scrPtr, &wmScaleWidth, &wmScaleHeight); WMResizeWidget(panel->win, WMScaleX(320), WMScaleY(160)); if (title) { WMFont *largeFont; largeFont = WMBoldSystemFontOfSize(scrPtr, WMScaleY(24)); panel->tLbl = WMCreateLabel(panel->win); WMMoveWidget(panel->tLbl, WMScaleX(20), WMScaleY(16)); WMResizeWidget(panel->tLbl, WMScaleX(320) - 2 * WMScaleX(20), WMFontHeight(largeFont) + WMScaleY(4)); WMSetLabelText(panel->tLbl, title); WMSetLabelTextAlignment(panel->tLbl, WALeft); WMSetLabelFont(panel->tLbl, largeFont); WMReleaseFont(largeFont); } if (msg) { panel->mLbl = WMCreateLabel(panel->win); WMMoveWidget(panel->mLbl, WMScaleX(20), WMScaleY(50)); WMResizeWidget(panel->mLbl, WMScaleX(320) - 2 * WMScaleX(20), WMFontHeight(scrPtr->normalFont) * 2); WMSetLabelText(panel->mLbl, msg); WMSetLabelTextAlignment(panel->mLbl, WALeft); } panel->text = WMCreateTextField(panel->win); WMMoveWidget(panel->text, WMScaleX(20), WMScaleY(85)); WMResizeWidget(panel->text, WMScaleX(320) - 2 * WMScaleX(20), WMScaleY(20)); WMSetTextFieldText(panel->text, defaultText); WMAddNotificationObserver(endedEditingObserver, panel, WMTextDidEndEditingNotification, panel->text); /* create buttons */ if (cancelButton) aw = WMWidthOfString(scrPtr->normalFont, cancelButton, strlen(cancelButton)); if (okButton) dw = WMWidthOfString(scrPtr->normalFont, okButton, strlen(okButton)); w = dw + (scrPtr->buttonArrow ? scrPtr->buttonArrow->width : 0); if (aw > w) w = aw; w += WMScaleX(30); x = WMScaleX(310); if (okButton) { x -= w + WMScaleX(10); panel->defBtn = WMCreateCustomButton(panel->win, WBBPushInMask | WBBPushChangeMask | WBBPushLightMask); WMSetButtonAction(panel->defBtn, inputBoxOnClick, panel); WMMoveWidget(panel->defBtn, x, WMScaleY(124)); WMResizeWidget(panel->defBtn, w, WMScaleY(24)); WMSetButtonText(panel->defBtn, okButton); WMSetButtonImage(panel->defBtn, scrPtr->buttonArrow); WMSetButtonAltImage(panel->defBtn, scrPtr->pushedButtonArrow); WMSetButtonImagePosition(panel->defBtn, WIPRight); } if (cancelButton) { x -= w + WMScaleX(10); panel->altBtn = WMCreateCommandButton(panel->win); WMSetButtonAction(panel->altBtn, inputBoxOnClick, panel); WMMoveWidget(panel->altBtn, x, WMScaleY(124)); WMResizeWidget(panel->altBtn, w, WMScaleY(24)); WMSetButtonText(panel->altBtn, cancelButton); } WMCreateEventHandler(W_VIEW(panel->win), KeyPressMask, handleKeyPress2, panel); WMRealizeWidget(panel->win); WMMapSubwidgets(panel->win); WMSetFocusToWidget(panel->text); return panel; } static void handleKeyPress3(XEvent * event, void *clientData) { WMGenericPanel *panel = (WMGenericPanel *) clientData; KeySym ksym; XLookupString(&event->xkey, NULL, 0, &ksym, NULL); if (ksym == XK_Return && panel->defBtn) { WMPerformButtonClick(panel->defBtn); } else if (ksym == XK_Escape) { if (panel->altBtn) { WMPerformButtonClick(panel->altBtn); } else { panel->result = WAPRDefault; WMBreakModalLoop(WMWidgetScreen(panel->win)); } } } void WMDestroyGenericPanel(WMGenericPanel * panel) { WMUnmapWidget(panel->win); WMDestroyWidget(panel->win); wfree(panel); } WMGenericPanel *WMCreateGenericPanel(WMScreen * scrPtr, WMWindow * owner, const char *title, const char *defaultButton, const char *alternateButton) { WMGenericPanel *panel; WMFont *defaultFont; int dw = 0, aw = 0, w; WMBox *hbox; WMPixmap *icon; defaultFont = WMSystemFontOfSize(scrPtr, 12); panel = wmalloc(sizeof(WMGenericPanel)); if (owner) { panel->win = WMCreatePanelWithStyleForWindow(owner, "genericPanel", WMTitledWindowMask); } else { panel->win = WMCreateWindowWithStyle(scrPtr, "genericPanel", WMTitledWindowMask); } WMSetWindowInitialPosition(panel->win, (scrPtr->rootView->size.width - WMWidgetWidth(panel->win)) / 2, (scrPtr->rootView->size.height - WMWidgetHeight(panel->win)) / 2); WMSetWindowTitle(panel->win, ""); panel->vbox = WMCreateBox(panel->win); WMSetViewExpandsToParent(WMWidgetView(panel->vbox), 0, 0, 0, 0); WMSetBoxHorizontal(panel->vbox, False); WMMapWidget(panel->vbox); hbox = WMCreateBox(panel->vbox); WMSetBoxBorderWidth(hbox, 5); WMSetBoxHorizontal(hbox, True); WMMapWidget(hbox); WMAddBoxSubview(panel->vbox, WMWidgetView(hbox), False, True, 74, 0, 5); panel->iLbl = WMCreateLabel(hbox); WMSetLabelImagePosition(panel->iLbl, WIPImageOnly); WMMapWidget(panel->iLbl); WMAddBoxSubview(hbox, WMWidgetView(panel->iLbl), False, True, 64, 0, 10); icon = WMCreateApplicationIconBlendedPixmap(scrPtr, (RColor *) NULL); if (icon) { WMSetLabelImage(panel->iLbl, icon); WMReleasePixmap(icon); } else { WMSetLabelImage(panel->iLbl, scrPtr->applicationIconPixmap); } if (title) { WMFont *largeFont; largeFont = WMBoldSystemFontOfSize(scrPtr, 24); panel->tLbl = WMCreateLabel(hbox); WMMapWidget(panel->tLbl); WMAddBoxSubview(hbox, WMWidgetView(panel->tLbl), True, True, 64, 0, 0); WMSetLabelText(panel->tLbl, title); WMSetLabelTextAlignment(panel->tLbl, WALeft); WMSetLabelFont(panel->tLbl, largeFont); WMReleaseFont(largeFont); } /* create divider line */ panel->line = WMCreateFrame(panel->vbox); WMMapWidget(panel->line); WMAddBoxSubview(panel->vbox, WMWidgetView(panel->line), False, True, 2, 2, 5); WMSetFrameRelief(panel->line, WRGroove); panel->content = WMCreateFrame(panel->vbox); WMMapWidget(panel->content); WMAddBoxSubview(panel->vbox, WMWidgetView(panel->content), True, True, 50, 0, 5); WMSetFrameRelief(panel->content, WRFlat); hbox = WMCreateBox(panel->vbox); WMSetBoxBorderWidth(hbox, 10); WMSetBoxHorizontal(hbox, True); WMMapWidget(hbox); WMAddBoxSubview(panel->vbox, WMWidgetView(hbox), False, True, 44, 0, 0); /* create buttons */ if (defaultButton) dw = WMWidthOfString(defaultFont, defaultButton, strlen(defaultButton)); if (alternateButton) aw = WMWidthOfString(defaultFont, alternateButton, strlen(alternateButton)); dw = dw + (scrPtr->buttonArrow ? scrPtr->buttonArrow->width : 0); aw += 30; dw += 30; w = WMAX(dw, aw); if ((w + 10) * 2 < 400) { dw = w; } else { int t; t = 400 - 40 - aw - dw; dw += t / 2; } if (defaultButton) { panel->defBtn = WMCreateCommandButton(hbox); WMSetButtonAction(panel->defBtn, alertPanelOnClick, panel); WMAddBoxSubviewAtEnd(hbox, WMWidgetView(panel->defBtn), False, True, dw, 0, 0); WMSetButtonText(panel->defBtn, defaultButton); WMSetButtonImage(panel->defBtn, scrPtr->buttonArrow); WMSetButtonAltImage(panel->defBtn, scrPtr->pushedButtonArrow); WMSetButtonImagePosition(panel->defBtn, WIPRight); WMSetButtonFont(panel->defBtn, defaultFont); } WMMapSubwidgets(hbox); WMCreateEventHandler(W_VIEW(panel->win), KeyPressMask, handleKeyPress3, panel); WMRealizeWidget(panel->win); WMMapSubwidgets(panel->win); WMReleaseFont(defaultFont); return panel; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WINGs/wtextfield.c���������������������������������������������������������������0000644�0001750�0001750�00000113350�13642357773�014264� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include "WINGsP.h" #include "wconfig.h" #include <X11/keysym.h> #include <X11/Xatom.h> #include <ctype.h> #define CURSOR_BLINK_ON_DELAY 600 #define CURSOR_BLINK_OFF_DELAY 300 char *WMTextDidChangeNotification = "WMTextDidChangeNotification"; char *WMTextDidBeginEditingNotification = "WMTextDidBeginEditingNotification"; char *WMTextDidEndEditingNotification = "WMTextDidEndEditingNotification"; 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 */ int bufferSize; /* memory allocated for text */ int viewPosition; /* position of text being shown */ int cursorPosition; /* position of the insertion cursor */ short usableWidth; short offsetWidth; /* offset of text from border */ WMRange selection; WMFont *font; WMTextFieldDelegate *delegate; WMHandlerID timerID; /* for cursor blinking */ struct { 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 */ unsigned int pointerGrabbed:1; unsigned int ownsSelection:1; unsigned int waitingSelection:1; /* requested selection, but * didnt get yet */ unsigned int notIllegalMovement:1; } flags; } TextField; #define NOTIFY(T,C,N,A) { WMNotification *notif = WMCreateNotification(N,T,A);\ if ((T)->delegate && (T)->delegate->C)\ (*(T)->delegate->C)((T)->delegate,notif);\ WMPostNotification(notif);\ WMReleaseNotification(notif);} #define MIN_TEXT_BUFFER 2 #define TEXT_BUFFER_INCR 8 #define WM_EMACSKEYMASK ControlMask #define WM_EMACSKEY_LEFT XK_b #define WM_EMACSKEY_RIGHT XK_f #define WM_EMACSKEY_HOME XK_a #define WM_EMACSKEY_END XK_e #define WM_EMACSKEY_BS XK_h #define WM_EMACSKEY_DEL XK_d #define DEFAULT_WIDTH 60 #define DEFAULT_HEIGHT 20 #define DEFAULT_BORDERED True #define DEFAULT_ALIGNMENT WALeft static void destroyTextField(TextField * tPtr); static void paintTextField(TextField * tPtr); static void handleEvents(XEvent * event, void *data); static void handleTextFieldActionEvents(XEvent * event, void *data); static void didResizeTextField(W_ViewDelegate * self, WMView * view); struct W_ViewDelegate _TextFieldViewDelegate = { NULL, NULL, didResizeTextField, NULL, NULL }; static void lostSelection(WMView * view, Atom selection, void *cdata); static WMData *requestHandler(WMView * view, Atom selection, Atom target, void *cdata, Atom * type); static WMSelectionProcs selectionHandler = { requestHandler, lostSelection, NULL }; #define TEXT_WIDTH(tPtr, start) (WMWidthOfString((tPtr)->font, \ &((tPtr)->text[(start)]), (tPtr)->textLen - (start))) #define TEXT_WIDTH2(tPtr, start, end) (WMWidthOfString((tPtr)->font, \ &((tPtr)->text[(start)]), (end) - (start))) static inline int oneUTF8CharBackward(const char *str, int len) { const unsigned char *ustr = (const unsigned char *)str; int pos = 0; while (len-- > 0 && ustr[--pos] >= 0x80 && ustr[pos] <= 0xbf) ; return pos; } static inline int oneUTF8CharForward(const char *str, int len) { const unsigned char *ustr = (const unsigned char *)str; int pos = 0; while (len-- > 0 && ustr[++pos] >= 0x80 && ustr[pos] <= 0xbf) ; return pos; } // find the beginning of the UTF8 char pointed by str static inline int seekUTF8CharStart(const char *str, int len) { const unsigned char *ustr = (const unsigned char *)str; int pos = 0; while (len-- > 0 && ustr[pos] >= 0x80 && ustr[pos] <= 0xbf) --pos; return pos; } static void normalizeRange(TextField * tPtr, WMRange * range) { if (range->position < 0 && range->count < 0) range->count = 0; if (range->count == 0) { /*range->position = 0; why is this? */ return; } /* (1,-2) ~> (0,1) ; (1,-1) ~> (0,1) ; (2,-1) ~> (1,1) */ if (range->count < 0) { /* && range->position >= 0 */ if (range->position + range->count < 0) { range->count = range->position; range->position = 0; } else { range->count = -range->count; range->position -= range->count; } /* (-2,1) ~> (0,0) ; (-1,1) ~> (0,0) ; (-1,2) ~> (0,1) */ } else if (range->position < 0) { /* && range->count > 0 */ if (range->position + range->count < 0) { range->position = range->count = 0; } else { range->count += range->position; range->position = 0; } } if (range->position + range->count > tPtr->textLen) range->count = tPtr->textLen - range->position; } static void memmv(char *dest, const char *src, int size) { int i; if (dest > src) { for (i = size - 1; i >= 0; i--) { dest[i] = src[i]; } } else if (dest < src) { for (i = 0; i < size; i++) { dest[i] = src[i]; } } } static int incrToFit(TextField * tPtr) { int vp = tPtr->viewPosition; while (TEXT_WIDTH(tPtr, tPtr->viewPosition) > tPtr->usableWidth) { tPtr->viewPosition += oneUTF8CharForward(&tPtr->text[tPtr->viewPosition], tPtr->textLen - tPtr->viewPosition); } return vp != tPtr->viewPosition; } static int incrToFit2(TextField * tPtr) { int vp = tPtr->viewPosition; while (TEXT_WIDTH2(tPtr, tPtr->viewPosition, tPtr->cursorPosition) >= tPtr->usableWidth) tPtr->viewPosition += oneUTF8CharForward(&tPtr->text[tPtr->viewPosition], tPtr->cursorPosition - tPtr->viewPosition); return vp != tPtr->viewPosition; } static void decrToFit(TextField * tPtr) { int vp = tPtr->viewPosition; while (vp > 0 && (vp += oneUTF8CharBackward(&tPtr->text[vp], vp), TEXT_WIDTH(tPtr, vp)) < tPtr->usableWidth) { tPtr->viewPosition = vp; } } #undef TEXT_WIDTH #undef TEXT_WIDTH2 static WMData *requestHandler(WMView * view, Atom selection, Atom target, void *cdata, Atom * type) { TextField *tPtr = view->self; int count; Display *dpy = tPtr->view->screen->display; Atom _TARGETS; Atom TEXT = XInternAtom(dpy, "TEXT", False); Atom COMPOUND_TEXT = XInternAtom(dpy, "COMPOUND_TEXT", False); WMData *data; /* Parameter not used, but tell the compiler that it is ok */ (void) selection; (void) cdata; count = tPtr->selection.count < 0 ? tPtr->selection.position + tPtr->selection.count : tPtr->selection.position; if (target == XA_STRING || target == TEXT || target == COMPOUND_TEXT) { data = WMCreateDataWithBytes(&(tPtr->text[count]), abs(tPtr->selection.count)); WMSetDataFormat(data, 8); *type = target; return data; } _TARGETS = XInternAtom(dpy, "TARGETS", False); if (target == _TARGETS) { Atom supported_type[4]; supported_type[0] = _TARGETS; supported_type[1] = XA_STRING; supported_type[2] = TEXT; supported_type[3] = COMPOUND_TEXT; data = WMCreateDataWithBytes(supported_type, sizeof(supported_type)); WMSetDataFormat(data, 32); *type = target; return data; } return NULL; } static void lostSelection(WMView * view, Atom selection, void *cdata) { TextField *tPtr = (WMTextField *) view->self; /* Parameter not used, but tell the compiler that it is ok */ (void) cdata; if (tPtr->flags.ownsSelection) { WMDeleteSelectionHandler(view, selection, CurrentTime); tPtr->flags.ownsSelection = 0; } if (tPtr->selection.count != 0) { tPtr->selection.count = 0; paintTextField(tPtr); } } static void selectionNotification(void *observerData, WMNotification * notification) { WMView *observerView = (WMView *) observerData; WMView *newOwnerView = (WMView *) WMGetNotificationClientData(notification); if (observerView != newOwnerView) { /* //if (tPtr->flags.ownsSelection) // WMDeleteSelectionHandler(observerView, XA_PRIMARY, CurrentTime); */ lostSelection(observerView, XA_PRIMARY, NULL); } } static void realizeObserver(void *self, WMNotification * not) { /* Parameter not used, but tell the compiler that it is ok */ (void) not; W_CreateIC(((TextField *) self)->view); } WMTextField *WMCreateTextField(WMWidget * parent) { TextField *tPtr; tPtr = wmalloc(sizeof(TextField)); tPtr->widgetClass = WC_TextField; tPtr->view = W_CreateView(W_VIEW(parent)); if (!tPtr->view) { wfree(tPtr); return NULL; } tPtr->view->self = tPtr; tPtr->view->delegate = &_TextFieldViewDelegate; tPtr->view->attribFlags |= CWCursor; tPtr->view->attribs.cursor = tPtr->view->screen->textCursor; W_SetViewBackgroundColor(tPtr->view, tPtr->view->screen->white); tPtr->text = wmalloc(MIN_TEXT_BUFFER); tPtr->textLen = 0; tPtr->bufferSize = MIN_TEXT_BUFFER; tPtr->flags.enabled = 1; WMCreateEventHandler(tPtr->view, ExposureMask | StructureNotifyMask | FocusChangeMask, handleEvents, tPtr); tPtr->font = WMRetainFont(tPtr->view->screen->normalFont); tPtr->flags.bordered = DEFAULT_BORDERED; tPtr->flags.beveled = True; tPtr->flags.alignment = DEFAULT_ALIGNMENT; tPtr->offsetWidth = WMAX((tPtr->view->size.height - WMFontHeight(tPtr->font)) / 2, 1); W_ResizeView(tPtr->view, DEFAULT_WIDTH, DEFAULT_HEIGHT); WMCreateEventHandler(tPtr->view, EnterWindowMask | LeaveWindowMask | ButtonReleaseMask | ButtonPressMask | KeyPressMask | Button1MotionMask, handleTextFieldActionEvents, tPtr); WMAddNotificationObserver(selectionNotification, tPtr->view, WMSelectionOwnerDidChangeNotification, (void *)XA_PRIMARY); WMAddNotificationObserver(realizeObserver, tPtr, WMViewRealizedNotification, tPtr->view); tPtr->flags.cursorOn = 1; return tPtr; } void WMSetTextFieldDelegate(WMTextField * tPtr, WMTextFieldDelegate * delegate) { CHECK_CLASS(tPtr, WC_TextField); tPtr->delegate = delegate; } WMTextFieldDelegate *WMGetTextFieldDelegate(WMTextField * tPtr) { CHECK_CLASS(tPtr, WC_TextField); return tPtr->delegate; } void WMInsertTextFieldText(WMTextField * tPtr, const char *text, int position) { int len; CHECK_CLASS(tPtr, WC_TextField); if (!text) return; len = strlen(text); /* check if buffer will hold the text */ if (len + tPtr->textLen >= tPtr->bufferSize) { tPtr->bufferSize = tPtr->textLen + len + TEXT_BUFFER_INCR; tPtr->text = wrealloc(tPtr->text, tPtr->bufferSize); } if (position < 0 || position >= tPtr->textLen) { /* append the text at the end */ wstrlcat(tPtr->text, text, tPtr->bufferSize); tPtr->textLen += len; tPtr->cursorPosition += len; incrToFit(tPtr); } else { /* insert text at position */ memmv(&(tPtr->text[position + len]), &(tPtr->text[position]), tPtr->textLen - position + 1); memcpy(&(tPtr->text[position]), text, len); tPtr->textLen += len; if (position >= tPtr->cursorPosition) { tPtr->cursorPosition += len; incrToFit2(tPtr); } else { incrToFit(tPtr); } } paintTextField(tPtr); } void WMDeleteTextFieldRange(WMTextField * tPtr, WMRange range) { CHECK_CLASS(tPtr, WC_TextField); normalizeRange(tPtr, &range); if (!range.count) return; memmv(&(tPtr->text[range.position]), &(tPtr->text[range.position + range.count]), tPtr->textLen - (range.position + range.count) + 1); /* better than nothing ;) */ if (tPtr->cursorPosition > range.position) tPtr->viewPosition += oneUTF8CharBackward(&tPtr->text[tPtr->viewPosition], tPtr->viewPosition); tPtr->textLen -= range.count; tPtr->cursorPosition = range.position; decrToFit(tPtr); paintTextField(tPtr); } char *WMGetTextFieldText(WMTextField * tPtr) { CHECK_CLASS(tPtr, WC_TextField); return wstrdup(tPtr->text); } void WMSetTextFieldText(WMTextField * tPtr, const char *text) { CHECK_CLASS(tPtr, WC_TextField); if ((text && strcmp(tPtr->text, text) == 0) || (!text && tPtr->textLen == 0)) return; if (text == NULL) { tPtr->text[0] = 0; tPtr->textLen = 0; } else { tPtr->textLen = strlen(text); if (tPtr->textLen >= tPtr->bufferSize) { tPtr->bufferSize = tPtr->textLen + TEXT_BUFFER_INCR; tPtr->text = wrealloc(tPtr->text, tPtr->bufferSize); } wstrlcpy(tPtr->text, text, tPtr->bufferSize); } tPtr->cursorPosition = tPtr->selection.position = tPtr->textLen; tPtr->viewPosition = 0; tPtr->selection.count = 0; if (tPtr->view->flags.realized) paintTextField(tPtr); } void WMSetTextFieldAlignment(WMTextField * tPtr, WMAlignment alignment) { CHECK_CLASS(tPtr, WC_TextField); tPtr->flags.alignment = alignment; if (alignment != WALeft) { wwarning(_("only left alignment is supported in textfields")); return; } if (tPtr->view->flags.realized) { paintTextField(tPtr); } } void WMSetTextFieldBordered(WMTextField * tPtr, Bool bordered) { CHECK_CLASS(tPtr, WC_TextField); tPtr->flags.bordered = bordered; if (tPtr->view->flags.realized) { paintTextField(tPtr); } } void WMSetTextFieldBeveled(WMTextField * tPtr, Bool flag) { CHECK_CLASS(tPtr, WC_TextField); tPtr->flags.beveled = ((flag == 0) ? 0 : 1); if (tPtr->view->flags.realized) { paintTextField(tPtr); } } void WMSetTextFieldSecure(WMTextField * tPtr, Bool flag) { CHECK_CLASS(tPtr, WC_TextField); tPtr->flags.secure = ((flag == 0) ? 0 : 1); if (tPtr->view->flags.realized) { paintTextField(tPtr); } } Bool WMGetTextFieldEditable(WMTextField * tPtr) { CHECK_CLASS(tPtr, WC_TextField); return tPtr->flags.enabled; } void WMSetTextFieldEditable(WMTextField * tPtr, Bool flag) { CHECK_CLASS(tPtr, WC_TextField); tPtr->flags.enabled = ((flag == 0) ? 0 : 1); if (tPtr->view->flags.realized) { paintTextField(tPtr); } } void WMSelectTextFieldRange(WMTextField * tPtr, WMRange range) { CHECK_CLASS(tPtr, WC_TextField); if (tPtr->flags.enabled) { normalizeRange(tPtr, &range); tPtr->selection = range; tPtr->cursorPosition = range.position + range.count; if (tPtr->view->flags.realized) { paintTextField(tPtr); } } } void WMSetTextFieldCursorPosition(WMTextField * tPtr, unsigned int position) { CHECK_CLASS(tPtr, WC_TextField); if (tPtr->flags.enabled) { if (position > tPtr->textLen) position = tPtr->textLen; tPtr->cursorPosition = position; if (tPtr->view->flags.realized) { paintTextField(tPtr); } } } unsigned WMGetTextFieldCursorPosition(WMTextField *tPtr) { CHECK_CLASS(tPtr, WC_TextField); return tPtr->cursorPosition; } 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; } void WMSetTextFieldFont(WMTextField * tPtr, WMFont * font) { CHECK_CLASS(tPtr, WC_TextField); if (tPtr->font) WMReleaseFont(tPtr->font); tPtr->font = WMRetainFont(font); tPtr->offsetWidth = WMAX((tPtr->view->size.height - WMFontHeight(tPtr->font)) / 2, 1); if (tPtr->view->flags.realized) { paintTextField(tPtr); } } WMFont *WMGetTextFieldFont(WMTextField * tPtr) { return tPtr->font; } static void didResizeTextField(W_ViewDelegate * self, WMView * view) { WMTextField *tPtr = (WMTextField *) view->self; /* Parameter not used, but tell the compiler that it is ok */ (void) self; tPtr->offsetWidth = WMAX((tPtr->view->size.height - WMFontHeight(tPtr->font)) / 2, 1); tPtr->usableWidth = tPtr->view->size.width - 2 * tPtr->offsetWidth /*+ 2 */ ; } static char *makeHiddenString(int length) { char *data = wmalloc(length + 1); memset(data, '*', length); data[length] = '\0'; return data; } static void paintCursor(TextField * tPtr) { int cx; WMScreen *screen = tPtr->view->screen; int textWidth; char *text; if (tPtr->flags.secure) text = makeHiddenString(strlen(tPtr->text)); else text = tPtr->text; cx = WMWidthOfString(tPtr->font, &(text[tPtr->viewPosition]), tPtr->cursorPosition - tPtr->viewPosition); switch (tPtr->flags.alignment) { case WARight: textWidth = WMWidthOfString(tPtr->font, text, tPtr->textLen); if (textWidth < tPtr->usableWidth) cx += tPtr->offsetWidth + tPtr->usableWidth - textWidth + 1; else cx += tPtr->offsetWidth + 1; break; case WALeft: cx += tPtr->offsetWidth + 1; break; case WAJustified: /* not supported */ case WACenter: textWidth = WMWidthOfString(tPtr->font, text, tPtr->textLen); if (textWidth < tPtr->usableWidth) cx += tPtr->offsetWidth + (tPtr->usableWidth - textWidth) / 2; else cx += tPtr->offsetWidth; break; } /* XDrawRectangle(screen->display, tPtr->view->window, screen->xorGC, cx, tPtr->offsetWidth, 1, tPtr->view->size.height - 2*tPtr->offsetWidth - 1); printf("%d %d\n",cx,tPtr->cursorPosition); */ XDrawLine(screen->display, tPtr->view->window, screen->xorGC, cx, tPtr->offsetWidth, cx, tPtr->view->size.height - tPtr->offsetWidth - 1); W_SetPreeditPositon(tPtr->view, cx, 0); if (tPtr->flags.secure) { wfree(text); } } static void drawRelief(WMView * view, Bool beveled) { WMScreen *scr = view->screen; Display *dpy = scr->display; GC wgc; GC lgc; GC dgc; int width = view->size.width; int height = view->size.height; dgc = WMColorGC(scr->darkGray); if (!beveled) { XDrawRectangle(dpy, view->window, dgc, 0, 0, width - 1, height - 1); return; } wgc = WMColorGC(scr->white); lgc = WMColorGC(scr->gray); /* top left */ XDrawLine(dpy, view->window, dgc, 0, 0, width - 1, 0); XDrawLine(dpy, view->window, dgc, 0, 1, width - 2, 1); XDrawLine(dpy, view->window, dgc, 0, 0, 0, height - 2); XDrawLine(dpy, view->window, dgc, 1, 0, 1, height - 3); /* bottom right */ XDrawLine(dpy, view->window, wgc, 0, height - 1, width - 1, height - 1); XDrawLine(dpy, view->window, lgc, 1, height - 2, width - 2, height - 2); XDrawLine(dpy, view->window, wgc, width - 1, 0, width - 1, height - 1); XDrawLine(dpy, view->window, lgc, width - 2, 1, width - 2, height - 3); } static void paintTextField(TextField * tPtr) { W_Screen *screen = tPtr->view->screen; W_View *view = tPtr->view; W_View viewbuffer; int tx, ty, tw; int rx; int bd; int totalWidth; char *text; Pixmap drawbuffer; WMColor *color; if (!view->flags.realized || !view->flags.mapped) return; if (!tPtr->flags.bordered) { bd = 0; } else { bd = 2; } if (tPtr->flags.secure) { text = makeHiddenString(strlen(tPtr->text)); } else { text = tPtr->text; } totalWidth = tPtr->view->size.width - 2 * bd; drawbuffer = XCreatePixmap(screen->display, view->window, view->size.width, view->size.height, screen->depth); XFillRectangle(screen->display, drawbuffer, WMColorGC(screen->white), 0, 0, view->size.width, view->size.height); /* this is quite dirty */ viewbuffer.screen = view->screen; viewbuffer.size = view->size; viewbuffer.window = drawbuffer; if (tPtr->textLen > 0) { tw = WMWidthOfString(tPtr->font, &(text[tPtr->viewPosition]), tPtr->textLen - tPtr->viewPosition); ty = tPtr->offsetWidth; switch (tPtr->flags.alignment) { case WALeft: tx = tPtr->offsetWidth + 1; if (tw < tPtr->usableWidth) XFillRectangle(screen->display, drawbuffer, WMColorGC(screen->white), bd + tw, bd, totalWidth - tw, view->size.height - 2 * bd); break; case WACenter: tx = tPtr->offsetWidth + (tPtr->usableWidth - tw) / 2; if (tw < tPtr->usableWidth) XClearArea(screen->display, view->window, bd, bd, totalWidth, view->size.height - 2 * bd, False); break; default: case WARight: 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); break; } color = tPtr->flags.enabled ? screen->black : screen->darkGray; WMDrawImageString(screen, drawbuffer, color, screen->white, tPtr->font, tx, ty, &(text[tPtr->viewPosition]), tPtr->textLen - tPtr->viewPosition); if (tPtr->selection.count) { int count, count2; count = tPtr->selection.count < 0 ? tPtr->selection.position + tPtr->selection.count : tPtr->selection.position; count2 = abs(tPtr->selection.count); if (count < tPtr->viewPosition) { count2 = abs(count2 - abs(tPtr->viewPosition - count)); count = tPtr->viewPosition; } rx = tPtr->offsetWidth + 1 + WMWidthOfString(tPtr->font, text, count) - WMWidthOfString(tPtr->font, text, tPtr->viewPosition); WMDrawImageString(screen, drawbuffer, color, screen->gray, tPtr->font, rx, ty, &(text[count]), count2); } } else { XFillRectangle(screen->display, drawbuffer, WMColorGC(screen->white), bd, bd, totalWidth, view->size.height - 2 * bd); } /* draw relief */ if (tPtr->flags.bordered) { drawRelief(&viewbuffer, tPtr->flags.beveled); } if (tPtr->flags.secure) wfree(text); XCopyArea(screen->display, drawbuffer, view->window, screen->copyGC, 0, 0, view->size.width, view->size.height, 0, 0); XFreePixmap(screen->display, drawbuffer); /* draw cursor */ if (tPtr->flags.focused && tPtr->flags.enabled && tPtr->flags.cursorOn) { paintCursor(tPtr); } } static void blinkCursor(void *data) { TextField *tPtr = (TextField *) data; if (tPtr->flags.cursorOn) { tPtr->timerID = WMAddTimerHandler(CURSOR_BLINK_OFF_DELAY, blinkCursor, data); } else { tPtr->timerID = WMAddTimerHandler(CURSOR_BLINK_ON_DELAY, blinkCursor, data); } paintCursor(tPtr); tPtr->flags.cursorOn = !tPtr->flags.cursorOn; } static void handleEvents(XEvent * event, void *data) { TextField *tPtr = (TextField *) data; CHECK_CLASS(data, WC_TextField); switch (event->type) { case FocusIn: W_FocusIC(tPtr->view); if (W_FocusedViewOfToplevel(W_TopLevelOfView(tPtr->view)) != tPtr->view) return; tPtr->flags.focused = 1; if (!tPtr->timerID) { tPtr->timerID = WMAddTimerHandler(CURSOR_BLINK_ON_DELAY, blinkCursor, tPtr); } paintTextField(tPtr); NOTIFY(tPtr, didBeginEditing, WMTextDidBeginEditingNotification, NULL); tPtr->flags.notIllegalMovement = 0; break; case FocusOut: W_UnFocusIC(tPtr->view); tPtr->flags.focused = 0; if (tPtr->timerID) WMDeleteTimerHandler(tPtr->timerID); tPtr->timerID = NULL; paintTextField(tPtr); if (!tPtr->flags.notIllegalMovement) { NOTIFY(tPtr, didEndEditing, WMTextDidEndEditingNotification, (void *)WMIllegalTextMovement); } break; case Expose: if (event->xexpose.count != 0) break; paintTextField(tPtr); break; case DestroyNotify: destroyTextField(tPtr); break; } } static void handleTextFieldKeyPress(TextField * tPtr, XEvent * event) { char buffer[64]; KeySym ksym; char *textEvent = NULL; void *data = NULL; int count, refresh = 0; int control_pressed = 0; int cancelSelection = 1; Bool shifted, controled, modified; Bool relay = True; /*printf("(%d,%d) -> ", tPtr->selection.position, tPtr->selection.count); */ if (((XKeyEvent *) event)->state & WM_EMACSKEYMASK) control_pressed = 1; shifted = (event->xkey.state & ShiftMask ? True : False); controled = (event->xkey.state & ControlMask ? True : False); modified = shifted || controled; count = W_LookupString(tPtr->view, &event->xkey, buffer, 63, &ksym, NULL); //count = XLookupString(&event->xkey, buffer, 63, &ksym, NULL); buffer[count] = '\0'; switch (ksym) { case XK_Tab: #ifdef XK_ISO_Left_Tab /* FALLTHRU */ case XK_ISO_Left_Tab: #endif if (!controled) { if (shifted) { if (tPtr->view->prevFocusChain) { W_SetFocusOfTopLevel(W_TopLevelOfView(tPtr->view), tPtr->view->prevFocusChain); tPtr->flags.notIllegalMovement = 1; } data = (void *)WMBacktabTextMovement; } else { if (tPtr->view->nextFocusChain) { W_SetFocusOfTopLevel(W_TopLevelOfView(tPtr->view), tPtr->view->nextFocusChain); tPtr->flags.notIllegalMovement = 1; } data = (void *)WMTabTextMovement; } textEvent = WMTextDidEndEditingNotification; cancelSelection = 0; relay = False; } break; case XK_Escape: if (!modified) { data = (void *)WMEscapeTextMovement; textEvent = WMTextDidEndEditingNotification; relay = False; } break; #ifdef XK_KP_Enter /* FALLTHRU */ case XK_KP_Enter: #endif /* FALLTHRU */ case XK_Return: if (!modified) { data = (void *)WMReturnTextMovement; textEvent = WMTextDidEndEditingNotification; relay = False; } break; case WM_EMACSKEY_LEFT: if (!control_pressed) goto normal_key; else controled = False; #ifdef XK_KP_Left /* FALLTHRU */ case XK_KP_Left: #endif /* FALLTHRU */ case XK_Left: if (tPtr->cursorPosition > 0) { int i; paintCursor(tPtr); i = tPtr->cursorPosition; i += oneUTF8CharBackward(&tPtr->text[i], i); if (controled) { while (i > 0 && tPtr->text[i] != ' ') i--; while (i > 0 && tPtr->text[i] == ' ') i--; tPtr->cursorPosition = (i > 0) ? i + 1 : 0; } else tPtr->cursorPosition = i; if (tPtr->cursorPosition < tPtr->viewPosition) { tPtr->viewPosition = tPtr->cursorPosition; refresh = 1; } else paintCursor(tPtr); } if (shifted) cancelSelection = 0; relay = False; break; case WM_EMACSKEY_RIGHT: if (!control_pressed) goto normal_key; else controled = False; #ifdef XK_KP_Right /* FALLTHRU */ case XK_KP_Right: #endif /* FALLTHRU */ case XK_Right: if (tPtr->cursorPosition < tPtr->textLen) { int i; paintCursor(tPtr); i = tPtr->cursorPosition; if (controled) { while (tPtr->text[i] && tPtr->text[i] != ' ') i++; while (tPtr->text[i] == ' ') i++; } else { i += oneUTF8CharForward(&tPtr->text[i], tPtr->textLen - i); } tPtr->cursorPosition = i; refresh = incrToFit2(tPtr); if (!refresh) paintCursor(tPtr); } if (shifted) cancelSelection = 0; relay = False; break; case WM_EMACSKEY_HOME: if (!control_pressed) goto normal_key; else controled = False; #ifdef XK_KP_Home /* FALLTHRU */ case XK_KP_Home: #endif /* FALLTHRU */ case XK_Home: if (!controled) { if (tPtr->cursorPosition > 0) { paintCursor(tPtr); tPtr->cursorPosition = 0; if (tPtr->viewPosition > 0) { tPtr->viewPosition = 0; refresh = 1; } else paintCursor(tPtr); } if (shifted) cancelSelection = 0; relay = False; } break; case WM_EMACSKEY_END: if (!control_pressed) goto normal_key; else controled = False; #ifdef XK_KP_End /* FALLTHRU */ case XK_KP_End: #endif /* FALLTHRU */ case XK_End: if (!controled) { if (tPtr->cursorPosition < tPtr->textLen) { paintCursor(tPtr); tPtr->cursorPosition = tPtr->textLen; tPtr->viewPosition = 0; refresh = incrToFit(tPtr); if (!refresh) paintCursor(tPtr); } if (shifted) cancelSelection = 0; relay = False; } break; case WM_EMACSKEY_BS: if (!control_pressed) goto normal_key; else modified = False; /* FALLTHRU */ case XK_BackSpace: if (!modified) { if (tPtr->selection.count) { WMDeleteTextFieldRange(tPtr, tPtr->selection); data = (void *)WMDeleteTextEvent; textEvent = WMTextDidChangeNotification; } else if (tPtr->cursorPosition > 0) { int i = oneUTF8CharBackward(&tPtr->text[tPtr->cursorPosition], tPtr->cursorPosition); WMRange range; range.position = tPtr->cursorPosition + i; range.count = -i; WMDeleteTextFieldRange(tPtr, range); data = (void *)WMDeleteTextEvent; textEvent = WMTextDidChangeNotification; } relay = False; } break; case WM_EMACSKEY_DEL: if (!control_pressed) goto normal_key; else modified = False; #ifdef XK_KP_Delete /* FALLTHRU */ case XK_KP_Delete: #endif /* FALLTHRU */ case XK_Delete: if (!modified) { if (tPtr->selection.count) { WMDeleteTextFieldRange(tPtr, tPtr->selection); data = (void *)WMDeleteTextEvent; textEvent = WMTextDidChangeNotification; } else if (tPtr->cursorPosition < tPtr->textLen) { WMRange range; range.position = tPtr->cursorPosition; range.count = oneUTF8CharForward(&tPtr->text[tPtr->cursorPosition], tPtr->textLen - tPtr->cursorPosition); WMDeleteTextFieldRange(tPtr, range); data = (void *)WMDeleteTextEvent; textEvent = WMTextDidChangeNotification; } relay = False; } break; normal_key: default: if (!controled) { if (count > 0 && !iscntrl(buffer[0])) { if (tPtr->selection.count) WMDeleteTextFieldRange(tPtr, tPtr->selection); WMInsertTextFieldText(tPtr, buffer, tPtr->cursorPosition); data = (void *)WMInsertTextEvent; textEvent = WMTextDidChangeNotification; relay = False; } } break; } if (relay) { WMRelayToNextResponder(W_VIEW(tPtr), event); return; } /* Do not allow text selection in secure text fields */ if (cancelSelection || tPtr->flags.secure) { lostSelection(tPtr->view, XA_PRIMARY, NULL); if (tPtr->selection.count) { tPtr->selection.count = 0; refresh = 1; } tPtr->selection.position = tPtr->cursorPosition; } else { if (tPtr->selection.count != tPtr->cursorPosition - tPtr->selection.position) { tPtr->selection.count = tPtr->cursorPosition - tPtr->selection.position; refresh = 1; } } /*printf("(%d,%d)\n", tPtr->selection.position, tPtr->selection.count); */ if (textEvent) { WMNotification *notif = WMCreateNotification(textEvent, tPtr, data); if (tPtr->delegate) { if (textEvent == WMTextDidBeginEditingNotification && tPtr->delegate->didBeginEditing) (*tPtr->delegate->didBeginEditing) (tPtr->delegate, notif); else if (textEvent == WMTextDidEndEditingNotification && tPtr->delegate->didEndEditing) (*tPtr->delegate->didEndEditing) (tPtr->delegate, notif); else if (textEvent == WMTextDidChangeNotification && tPtr->delegate->didChange) (*tPtr->delegate->didChange) (tPtr->delegate, notif); } WMPostNotification(notif); WMReleaseNotification(notif); } if (refresh) paintTextField(tPtr); /*printf("(%d,%d)\n", tPtr->selection.position, tPtr->selection.count); */ } static int pointToCursorPosition(TextField * tPtr, int x) { int a, b, pos, prev, tw; if (tPtr->flags.bordered) x -= 2; if (WMWidthOfString(tPtr->font, &(tPtr->text[tPtr->viewPosition]), tPtr->textLen - tPtr->viewPosition) <= x) return tPtr->textLen; a = tPtr->viewPosition; b = tPtr->textLen; /* we halve the text until we get into a 10 byte vicinity of x */ while (b - a > 10) { pos = (a + b) / 2; pos += seekUTF8CharStart(&tPtr->text[pos], pos - a); tw = WMWidthOfString(tPtr->font, &(tPtr->text[tPtr->viewPosition]), pos - tPtr->viewPosition); if (tw > x) { b = pos; } else if (tw < x) { a = pos; } else { return pos; } } /* at this point x can be positioned on any glyph between 'a' and 'b-1' * inclusive, with the exception of the left border of the 'a' glyph and * the right border or the 'b-1' glyph * * ( <--- range for x's position ---> ) * a a+1 .......................... b-1 b */ pos = prev = a; while (pos <= b) { tw = WMWidthOfString(tPtr->font, &(tPtr->text[tPtr->viewPosition]), pos - tPtr->viewPosition); if (tw > x) { return prev; } else if (pos == b) { break; } prev = pos; pos += oneUTF8CharForward(&tPtr->text[pos], b - pos); } return b; } static void pasteText(WMView * view, Atom selection, Atom target, Time timestamp, void *cdata, WMData * data) { TextField *tPtr = (TextField *) view->self; char *str; /* Parameter not used, but tell the compiler that it is ok */ (void) selection; (void) target; (void) timestamp; (void) cdata; tPtr->flags.waitingSelection = 0; if (data != NULL) { str = (char *)WMDataBytes(data); WMInsertTextFieldText(tPtr, str, tPtr->cursorPosition); NOTIFY(tPtr, didChange, WMTextDidChangeNotification, (void *)WMInsertTextEvent); } else { int n; str = XFetchBuffer(tPtr->view->screen->display, &n, 0); if (str != NULL) { str[n] = 0; WMInsertTextFieldText(tPtr, str, tPtr->cursorPosition); XFree(str); NOTIFY(tPtr, didChange, WMTextDidChangeNotification, (void *)WMInsertTextEvent); } } } static void handleTextFieldActionEvents(XEvent * event, void *data) { TextField *tPtr = (TextField *) data; static Time lastButtonReleasedEvent = 0; static Time lastButtonReleasedEvent2 = 0; Display *dpy = event->xany.display; CHECK_CLASS(data, WC_TextField); switch (event->type) { case KeyPress: if (tPtr->flags.waitingSelection) { return; } if (tPtr->flags.enabled && tPtr->flags.focused) { handleTextFieldKeyPress(tPtr, event); XDefineCursor(dpy, W_VIEW(tPtr)->window, W_VIEW(tPtr)->screen->invisibleCursor); tPtr->flags.pointerGrabbed = 1; } break; case MotionNotify: if (tPtr->flags.pointerGrabbed) { tPtr->flags.pointerGrabbed = 0; XDefineCursor(dpy, W_VIEW(tPtr)->window, W_VIEW(tPtr)->screen->textCursor); } if (tPtr->flags.waitingSelection) { return; } if (tPtr->flags.enabled && (event->xmotion.state & Button1Mask)) { if (tPtr->viewPosition < tPtr->textLen && event->xmotion.x > tPtr->usableWidth) { if (WMWidthOfString(tPtr->font, &(tPtr->text[tPtr->viewPosition]), tPtr->cursorPosition - tPtr->viewPosition) > tPtr->usableWidth) { tPtr->viewPosition += oneUTF8CharForward(&tPtr->text[tPtr->viewPosition], tPtr->textLen - tPtr->viewPosition); } } else if (tPtr->viewPosition > 0 && event->xmotion.x < 0) { paintCursor(tPtr); tPtr->viewPosition += oneUTF8CharBackward(&tPtr->text[tPtr->viewPosition], tPtr->viewPosition); } tPtr->cursorPosition = pointToCursorPosition(tPtr, event->xmotion.x); /* Do not allow text selection in secure textfields */ if (tPtr->flags.secure) { tPtr->selection.position = tPtr->cursorPosition; } tPtr->selection.count = tPtr->cursorPosition - tPtr->selection.position; paintCursor(tPtr); paintTextField(tPtr); } break; case ButtonPress: if (tPtr->flags.pointerGrabbed) { tPtr->flags.pointerGrabbed = 0; XDefineCursor(dpy, W_VIEW(tPtr)->window, W_VIEW(tPtr)->screen->textCursor); break; } if (tPtr->flags.waitingSelection) { break; } switch (tPtr->flags.alignment) { int textWidth; case WARight: textWidth = WMWidthOfString(tPtr->font, tPtr->text, tPtr->textLen); if (tPtr->flags.enabled && !tPtr->flags.focused) { WMSetFocusToWidget(tPtr); } if (tPtr->flags.focused) { tPtr->selection.position = tPtr->cursorPosition; tPtr->selection.count = 0; } if (textWidth < tPtr->usableWidth) { tPtr->cursorPosition = pointToCursorPosition(tPtr, event->xbutton.x - tPtr->usableWidth + textWidth); } else tPtr->cursorPosition = pointToCursorPosition(tPtr, event->xbutton.x); paintTextField(tPtr); break; case WALeft: if (tPtr->flags.enabled && !tPtr->flags.focused) { WMSetFocusToWidget(tPtr); } if (tPtr->flags.focused && event->xbutton.button == Button1) { tPtr->cursorPosition = pointToCursorPosition(tPtr, event->xbutton.x); tPtr->selection.position = tPtr->cursorPosition; tPtr->selection.count = 0; paintTextField(tPtr); } if (event->xbutton.button == Button2 && tPtr->flags.enabled) { char *text; int n; if (!WMRequestSelection(tPtr->view, XA_PRIMARY, XA_STRING, event->xbutton.time, pasteText, NULL)) { text = XFetchBuffer(tPtr->view->screen->display, &n, 0); if (text) { text[n] = 0; WMInsertTextFieldText(tPtr, text, tPtr->cursorPosition); XFree(text); NOTIFY(tPtr, didChange, WMTextDidChangeNotification, (void *)WMInsertTextEvent); } } else { tPtr->flags.waitingSelection = 1; } } break; default: break; } break; case ButtonRelease: if (tPtr->flags.pointerGrabbed) { tPtr->flags.pointerGrabbed = 0; XDefineCursor(dpy, W_VIEW(tPtr)->window, W_VIEW(tPtr)->screen->textCursor); } if (tPtr->flags.waitingSelection) { break; } if (!tPtr->flags.secure && tPtr->selection.count != 0) { int start, count; XRotateBuffers(dpy, 1); count = abs(tPtr->selection.count); if (tPtr->selection.count < 0) start = tPtr->selection.position - count; else start = tPtr->selection.position; XStoreBuffer(dpy, &tPtr->text[start], count, 0); } if (!tPtr->flags.secure && event->xbutton.time - lastButtonReleasedEvent <= WINGsConfiguration.doubleClickDelay) { if (event->xbutton.time - lastButtonReleasedEvent2 <= 2 * WINGsConfiguration.doubleClickDelay) { tPtr->selection.position = 0; tPtr->selection.count = tPtr->textLen; } else { int pos, cnt; char *txt; pos = tPtr->selection.position; cnt = tPtr->selection.count; txt = tPtr->text; while (pos >= 0) { if (txt[pos] == ' ' || txt[pos] == '\t') break; pos--; } pos++; while (pos + cnt < tPtr->textLen) { if (txt[pos + cnt] == ' ' || txt[pos + cnt] == '\t') break; cnt++; } tPtr->selection.position = pos; tPtr->selection.count = cnt; } paintTextField(tPtr); if (!tPtr->flags.ownsSelection) { tPtr->flags.ownsSelection = WMCreateSelectionHandler(tPtr->view, XA_PRIMARY, event->xbutton.time, &selectionHandler, NULL); } } else if (!tPtr->flags.secure && tPtr->selection.count != 0 && !tPtr->flags.ownsSelection) { tPtr->flags.ownsSelection = WMCreateSelectionHandler(tPtr->view, XA_PRIMARY, event->xbutton.time, &selectionHandler, NULL); } lastButtonReleasedEvent2 = lastButtonReleasedEvent; lastButtonReleasedEvent = event->xbutton.time; break; } } static void destroyTextField(TextField * tPtr) { if (tPtr->timerID) WMDeleteTimerHandler(tPtr->timerID); W_DestroyIC(tPtr->view); WMReleaseFont(tPtr->font); /*// use lostSelection() instead of WMDeleteSelectionHandler here? */ WMDeleteSelectionHandler(tPtr->view, XA_PRIMARY, CurrentTime); WMRemoveNotificationObserver(tPtr); if (tPtr->text) wfree(tPtr->text); wfree(tPtr); } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/ChangeLog������������������������������������������������������������������������0000644�0001750�0001750�00000726061�13431646237�012565� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������Changes since version 0.95.7: ............................. - Build on Ubuntu 14.04 (Johann Haarhoff <johann@haarhoff.org.za>) - Window Maker 0.95.7 Debian files - create_appicon_from_dock checks if no_appicon flag is set - New applications do not create Cached Icon - Remove unused argument in save_appicon - Avoid recreate Cached icon moving between docks - Avoid create again a docked application cache icon - save the icon filename instead the full path - Remove cache icon when detached - usermenu.c Avoid compiler warnings - Enable usermenu (Rodolfo García Peñas (kix) <kix@kix.es>) - wmaker: fixed infinite loop in switching within group (Satya Mishra <qufgmx@gmail.com>) - wmaker: Print error dialog when attempting to delete an in-use workspace. (Doug Torrance <dtorrance@piedmont.edu>) - debian: Ignore missing documentation for --runstatedir. - debian: Use dh_autoreconf. - debian: Simplify debian/rules. - debian: Fix typo occured. (Thanks, lintian.) - debian: wmaker manpage moved from 1x to 1. (Andreas Metzler <ametzler@bebt.de>) - debian: Add wmiv to wmaker package. - debian: Add version 0.95.6-1.2 entry to changelog. - debian: Update with final version of 0.95.7-1 packaging. - wmaker: Maintain sorting of windows by workspace in switch menu. - debian: Update with version 0.95.7-2 packaging. - wmaker: Update copyright years in info panel. - wmaker: Remove prototype for unused get_right_position_on_screen function. - wmaker: Fix typos (used codespell). - wmaker: Add option for window snap to top edge to maximize to full screen. - wmaker: Use window placement settings on other workspaces. - wmaker: Add keyboard shortcuts for keeping window on top or at bottom. - wmaker: Display keyboard shortcuts for remaining options in window menu. - wmaker: Fix whitespace in menu.h; passes checkpatch.pl inspection. - wmaker: Implement basic menu shading. (Doug Torrance <dtorrance@piedmont.edu>) - Translations: Dutch language files updated - Translations: Frisian language files updated (Alwin <translations@ziggo.nl>) - wmlib: Add pkg-config file. - wmlib: Remove install-exec-local target. - WPrefs: Code formatting in TexturePanel.c; minimizes checkpatch.pl warnings. - WPrefs: Add support for fpixmap ("fillscale") texture. - check-doc: Ignore runstatedir in check-cmdline-options-doc.sh - check-doc: Ignore with-aix-soname in check-cmdline-options-doc.sh - debian: Remove 56_ignore_runstatedir.diff. - debian: Update with version 0.95.7-3 packaging. - debian: Update with version 0.95.7-4 packaging. - debian: Update with version 0.95.7-5 packaging. - debian: Update with version 0.95.7-6 packaging. - wmmenugen: Fix segfault; argv[argc] doesn't exist. (Doug Torrance <dtorrance@piedmont.edu>) - getstyle: fix wcopy_file paths (Alexandru Lazar <alazar@startmail.com>) - wmaker: fix stacking order of dock and fullscreen - wmaker: allow alt+tabbed windows over fullscreen (Bjørn Mork <bjorn@mork.no>) - WPrefs: Update path for Debian menu - Use wprefs_bindir output variable to set WPrefs path in menus. - Remove WindowMaker/mkMakefile script. - Don't try and add removed file mkMakefile to distribution tarball. - Look for plmenu in build directory when creating WMRootMenu. - debian: Update with version 0.95.7-7 packaging. - configure: Use PKG_PROG_PKG_CONFIG macro to allow cross building. (Doug Torrance <dtorrance@piedmont.edu>) - Trivial cleanup: Removed unused defines. (Roman Dobosz <gryf73@gmail.com>) - Added 'head' parameter to wMaximizeWindow - Added wGetHeadRelativeToCurrentHead function - Added option for ability to move half-maximized between heads. - Added possibility for half-maximized windows to move across the screens. - Fixed wrong (re)stored dimensions for unmaximized window. (gryf <gryf73@gmail.com>) - Bugfix for moving windows between heads. - New option for enabling alternative half-maximized window movement. - Alternative way for traversing half-maximized windows. - New option for moving mouse pointer along with half-maximized windows. - Implementation for moving mouse pointer within the maximized window. - Refactoring handleMaximize() function - Removed trailing whitespaces from readme files. - Fixed couple of compilator warning and removed unused macros. (Roman Dobosz <gryf73@gmail.com>) - wmaker: Do not place icons under the dock (Cyrus Rahman <crahman@gmail.com>) - debian: Update with version 0.95.7-8 packaging. (Doug Torrance <dtorrance@piedmont.edu>) Changes since version 0.95.6: ............................. - wmaker: improve key shortcut labelling - WINGs: merge hashtable duplicate code - WINGs: merge bagtree duplicate code - wmaker: merge reading menu duplicate code (David Maciejak <david.maciejak@gmail.com>) - Catch-up and some improvements of the Dutch .po files - Make two text strings translatable (Alwin <translations@ziggo.nl>) - wrlib: merge gradient duplicate code - wmaker: update NEWS for 0.95.6 - WPrefs: set default to 1st color in gradient texture - wmaker: add next and previous window focus functions - wmaker: use defined wWindowSingleFocus() function - wmaker: add new button and wheel mouse actions - WPrefs: add new mouse actions configuration (David Maciejak <david.maciejak@gmail.com>) - wmaker: Remove dead links from BUGFORM. (Doug Torrance <dtorrance@monmouthcollege.edu>) - wmaker: improve windows listing in switchpanel - wmaker: add clip mouse wheel action to change workspace - util: create custom GNUSTEP dir if needed (David Maciejak <david.maciejak@gmail.com>) - wmaker: Add window snapping feature. - WPrefs.app: Add ability to enable or disable window snapping. - wmaker: Clear maximized flag of a maximized window when moved. - wmaker: Add "unmaximize on move" feature. - WPrefs.app: Add ability to enable or disable "unmaximize on move" feature. - NEWS: Add note about window snapping. (Doug Torrance <dtorrance@monmouthcollege.edu>) - fix maximize when dock is set 'on top' and it should be covered (Amadeusz Sławiński <amade@asmblr.net>) - wmaker: Add new options for dragging maximized windows. - WPrefs.app: Add ability to set behavior when dragging a maximized window. - NEWS: Add note about dragging maximized windows. - wmaker: Add more directions for window snapping. - wmaker: Consistent whitespace in WindowMaker.h. - Add script to update ChangeLog from git log. (Doug Torrance <dtorrance@monmouthcollege.edu>) - wmaker: fix arbitrary shell command injection - WINGs: add function to get button caption - wmaker: fix maximizing window in multiple screens env (David Maciejak <david.maciejak@gmail.com>) - WINGs: Add optional Pango text layout support (Khaled Hosny <khaledhosny@eglug.org>) - wmaker: Restore multi screen functionality by reverting wrong commits (BALATON Zoltan <balaton@eik.bme.hu>) - util: clarify error message in "wmaker.inst" in case of directory creation failure (Christophe CURIS <christophe.curis@free.fr>) - wrlib: fix usage of deprecated attribute for gcc 3.x - wmaker: remove call to internal X11 header (Milan Čermák <mcermak@chello.cz>) - configure: add detection for 'nanosleep' function with appropriate headers - util: removed usage of external '__progname' because it is not portable - wrlib: add support for release 5.1.0 of the libgif - WPrefs: created macro 'wlengthof_nocheck' for the cases were wlengthof cannot be used - WPrefs: replaced a few constants by the macro 'wlengthof' - WPrefs: grouped items related to the menu style in a single place - WPrefs: grouped items related to the window title alignment in a single place - WPrefs: grouped items related to the help balloon configuration in a single place - WPrefs: grouped items related to the AppIcon bouncing configuration in a single place - WPrefs: grouped items related to the behaviour of moving a maximized window in a single place - WPrefs: grouped items related to the possible window placement algorithms in a single place - WPrefs: use length of array instead of hard-coded constant for sample colours (Christophe CURIS <christophe.curis@free.fr>) - WINGs: Fix decimal/hexadecimal conversion bug in color panel. - WINGs: Fix unused parameter compiler warnings in examples. - WINGs: Avoid cast from pointer to integer of different size compiler warnings. - WINGs: Link examples against Xlib. - debian: Capitalize "Maker" in X session desktop entry. (Doug Torrance <dtorrance@monmouthcollege.edu>) - WPrefs: moved the titles of Clip Delay frames to an array - WPrefs: grouped the balloon text for the dock configuration with the rest of the struct - WPrefs: grouped items related to the mouse actions in a single place - WPrefs: reorganised the Mouse Settings panel for better look - WPrefs: reorganised the Preference panel for better look - WPrefs: reorganised the Window Handling Settings panel for better look - WPrefs: small reorganisation in the Dock Preferences panel - WPrefs: minor improvements to the Focus Preference panel - WPrefs: minor reorganisation in the Keyboard Shortcut panel - WPrefs: minor improvements to the Workspace panel - WPrefs: changed label from "msec" to the standard "ms" from the SI - WPrefs: replaced call to external program "chmod" by the equivalent system call (Christophe CURIS <christophe.curis@free.fr>) - wmaker: Support omnipresent setting toggle from keyboard (Gaspar Chilingarov <gasparch@gmail.com>) - Catch-up and some cosmetic changes of the Dutch .po files (Alwin <translations@ziggo.nl>) - WUtil: changed order for null pointer check in array functions (Coverity #72806, #72807, #72819) - WUtil: rewrote wcopy_file for better error handling and to fix Coverity #50234 - WUtil: fix default rights for file created when saving PropList - WINGs: inverted the direction for mouse wheel on WMSliders - WINGs: removed unnecessary size checks in WMGetBrowserPaths - WINGs: fix possible null pointer dereference in W_RealizeView (Coverity #50060) - wmaker: replaced dangerous function type conversion by argument conversion - wmaker: avoid allocating temporary memory in GetShortcutKey (Coverity #50115) - WMaker: Fixed crash if the RContext creation fail on a Screen (Coverity #50066) - wmaker: removed unnecessary check when painting application icon (Coverity #50052) - wmaker: removed unnecessary assignation (Coverity #50257) - wmaker: minor fixes for the size of an aperçu - wmaker: moved the code for the bg helper to a dedicated function - wmaker: close unneeded file handles when running the bg helper (Coverity #50137) - wmaker: improve error messages when trying to start the helper - wmaker: removed unnecessary null pointer check (Coverity #50041) - wmaker: removed unnecessary variable 'done' in panelBtnCallback - wmaker: remove unnecessary null check (Coverity #50196) - wmaker: fix incomplete null pointer check in wFrameWindowChangeTitle (Coverity #50058) - wmaker: make parsing on display name less prone to crash in SetupEnvironment (Coverity #50096) - wmaker: remove unnecessary null check in readMenuDirectory (Coverity #50190) - wmaker: fix memory leak in get_icon_filename (Coverity #50132) - wmaker: fixes in function 'UnescapeWM_CLASS' (Coverity #50101, #50186, #50187) - wmaker: fix possible buffer overrun in readMenuPipe (Coverity #50211, #50212) - wmaker: update error message to have only one string to be translated - wmaker: do not duplicate a string that does not need to be (Coverity #72814) - wmaker: change message to have only one string to translate and to have more information - wmaker: removed case from switch that is unreachable (Coverity #50043) - wmaker: fix size of element given to the 'qsort' function (Coverity #50210) - WPrefs: remove fuzzy translation that are likely to puzzle user - WPrefs: fix possible buffer overrun (Coverity #50216) - WPrefs: add check for image validity in 'loadRImage' (Coverity #50221, #50081) - wmaker: do not remove Title Bar for windows that declare themselves as Toolbar or Tear-off menu - WINGs: fix infinite loop when using Pango on string that have to be split - WINGs: fix WMPathForResourceOfType to check for all the paths it claims to check - WINGs: to not allocate memory for a short lived array (Coverity #50136) - WINGs: fix possible problems due to sign extension when setting Icon (Coverity #50202) - wmaker: add check for null pointer in wAppIconCreateForDock (Coverity #50053) - wmaker: change strcpy to the version with size check (Coverity #50217) - wmaker: fix possible buffer overrun with filename for Icon Chooser (Coverity #50218) - wmaker: replaced temporary allocation by local storage for error message - wmaker: remove intermediate strcpy in updateWorkspaceMenu (Coverity #50213) - wmaker: do not store return value that we don't use (Coverity #50252) - wmaker: fix signedness of variable (Coverity #50082, #50222) - wmaker: removed variable 'done' to prepare return status in 'wNETWMProcessClientMessage' - wmaker: remove unnecessary check in acceptXDND (Coverity #72817) - WPrefs: fix memory leak when storing the list of colors in Appearence panel - WPrefs: fix memory leaks on temporary colours to draw icon's title in Appearence preview (Coverity #72808, #72810) - util: return from 'findCopyFile' if the source file could not be found (Coverity #50075) - util: use wfree instead of free for consistency - wmaker: work around compilers that do not support nested functions - WPrefs: Use standard C declaration of array instead of GNU syntax - WPrefs: link against math library because it is used in a few places - Make sub-directories visible the automake's "dist*" targets (Christophe CURIS <christophe.curis@free.fr>) - WINGs: add functions to set widget background image - WPrefs: add workspace pager configuration - wmaker: add workspace pager underlying configuration - wmaker: add core workspace pager functions (David Maciejak <david.maciejak@gmail.com>) - wmaker: moved the variable 'process_workspacemap_event' to the global namespace - wmaker: remove unnecessary null pointer checks in handle_event of wsmap - makefile: make silent rule work also for generated files - wmaker: replaced macro by an inline function, in X Modifier initialisation - wmaker: replaced macro 'store_modifier' by an inline function, in X Modifier initialisation - checkpatch: fix bug in regular expression - WPrefs: fix memory leak when storing the list of texture in Appearence panel (Coverity #50112) - WPrefs: fix icon used in the Opaque/Non-opaque Move setting (Christophe CURIS <christophe.curis@free.fr>) - wrlib: Merge some duplicate code when allocating color (David Maciejak <david.maciejak@gmail.com>) - configure: rewrote the detection for -Wunused-macro - configure: add macro to check compiler flag '-Wstrict-prototype' - configure: add a few warning flags for gcc and clang to help catch bugs - configure: make the gcc check for trampolines stronger - WINGs: remove the macro DEFAULT_TITLE because it is not used - WINGs: remove constants used for default width+height for the widget - WINGs: remove unused constant DEFAULT_BORDER_WIDTH in wcolorwell - WINGs: remove unused macro NFONT in wbutton - WINGs: remove dead code from 'loadPixmaps' - WINGs: remove macro ABS_SHIFT from the wcolorpanel code - WINGs: remove internal XDND macros that are not used - WINGs: reuse GNUstep header instead of duplicating stuff in wwindow.c - remove a few unused constant for size of buffers - remove unused macros defining corner positions - replaced all local definitions of PI by a single one - wmaker: removed unused macro DBLCLICK_TIME - wmaker: removed unused constant SCROLL_STEPS in the switchpanel code - wmaker: add code to explicitly ignore Motif-WM flags we don't want to handle - wmaker: remove constants HORIZONTAL and VERTICAL from moveres.c - wmaker: remove parameter 'which' from local function 'restoreMenu' - wmaker: comment out definition of wm-spec constant that we do not use - WPrefs: remove unused constants ICON_TITLE_*FONT - util: remove local constants GLOBAL_DEFAULTS_SUBDIR that are not used (Christophe CURIS <christophe.curis@free.fr>) - WINGs: increment version (David Maciejak <david.maciejak@gmail.com>) - configure: require a minimum version for Autoconf to avoid wrong generation - wmaker: rewrote the update of _NET_WORKAREA property - configure: rewrote the detection for WebP image library - configure: add detection for O_NOFOLLOW flag to the open function (Christophe CURIS <christophe.curis@free.fr>) - WPrefs: improve texts in the Window Handling panel (Yury Tarasievich <yury.tarasievich@gmail.com>) - WPrefs: moved the list of icon animations into an array - WPrefs: created an array to store the database values for the Icon Position setting - WPrefs: grouped the choices for Window Resize Display in a single place - WPrefs: grouped the choices for Window Move Display in a single place - WPrefs: add an image to represent the window in the Window Placement frame - WPrefs: add possibility to configure the size of the aperçu (Christophe CURIS <christophe.curis@free.fr>) - WPrefs: Clarify purpose of "window snapping" feature in expert panel. (Doug Torrance <dtorrance@monmouthcollege.edu>) - Translations: Dutch .po files updated - WPrefs: make a text string translatable - WINGs: trivial fix in text string - WMaker: trivial fixes in text strings - WPrefs: trivial fixes in text strings (Alwin <translations@ziggo.nl>) - wmaker: removed global variable "flags.nopolling" - make: do not compile stuff in the 'test' directory - Renamed "Aperçu" into "Mini-Preview" in visible places - Renamed "apercu" to "minipreview" in the source code - Renamed "Apercu" to "MiniPreview" in the configuration database - wmaker: remove execute permissions on the source file 'wsmap.c' - configure: updates as reported by 'autoupdate' - configure: remove a few commented-out stuff that are deprecated - configure: added the copyright notice at the begining of the file - configure: add email address for bug reports in AC_INIT - configure: cosmetic improvements on comments - configure: minor updates on quoting for consistency with Autoconf's syntax - configure: rewrote 3 ARG_ENABLEs to get them to behave properly - configure: rewrote 2 ARG_WITH for paths to provide better feedback - updated autoconf macro gl_LD_VERSION_SCRIPT from gnulib to version 4 - wrlib: generate automatically the list of symbols to keep from the API header (Christophe CURIS <christophe.curis@free.fr>) - Add generate-mapfile-from-header.sh to distribution tarball. (Doug Torrance <dtorrance@monmouthcollege.edu>) - created script to check the list of source files to handle for translation - WINGs: add missing source files for translation - wmaker: add missing source files for translation - WPrefs: fix list of source files for translation - make: remove unnecessary chmod when creating directories for locales installation - make: add a variable 'DOMAIN' for the name of the pot and mo files - doc: create the skeleton to have a documentation for Internationalisation - configure: rewrote the support for languages in localisation - configure: rewrote detection for 'xgettext' - configure: add check for the program "msgfmt" when i18n is requested - doc: explain how to compile with language support - doc: describe how to choose the language (i18n) at run time - configure: replaced option '--with-nls' by autoconf's '--localedir' - configure: rewrote the support for option '--with-menu-textdomain' - configure: rewrote support for option '--disable-locale' - doc: moved the FAQ on i18n into the dedicated README.i18n - configure: enable all languages when performing make distcheck - configure: add possibility to list available languages with LINGUAS=list - make: remove installed translations when performing Uninstall - txt-from-texi: add support for variables - doc: explain how to help translating the Window Maker project - make: new target 'update-lang' to update the PO files for a languages against latest sources - make: moved PHONY outside the USE_LCOV conditional - txt-from-texi: fixed use of awk 'match' function to be portable - txt-from-texi: remove use of the 'switch' statement for portability - i18n: fix failing generation of the README.i18n file (Christophe CURIS <christophe.curis@free.fr>) - wmaker: Add autocomplete/history feature to keyboard shortcut Run dialog. (Doug Torrance <dtorrance@monmouthcollege.edu>) - wrlib: mark the script 'get-wraster-flags' as deprecated - WUtil: mark the script 'get-wutil-flags' as deprecated - WINGs: mark the script 'get-wings-flags' as deprecated - wmaker: created script to check program's options against documentation - wmaker: improve the documentation for the command-line options - wmaker: create script to handle conditional and variables replacement in man pages - doc: changed section for man page of "wdread" to 1x for consistency - doc: add check of the program options against their man pages - doc: updated man pages for many tools - doc: the man page for "wmsetbg" is now processed by a script - texi2txt: fix support embedded item lists to allow nested lists - texi2txt: add support for enumerated lists - texi2txt: add support for the @table command - texi2txt: add support for making cross-references in the document - doc: convert INSTALL-WMAKER into a texinfo source processed by texi2txt - doc: update information in the Installation Manual - doc: removed a few deprecated stuff from the Installation Manual - check the "configure" option list against the INSTALL-WMAKER documentation - doc: describe the "new" options to the "configure" script - check-doc: add an option to ignore some explicit options from the command's help - Code refactoring: replaced macro 'MWM_HINTS' by 'USE_MWM_HINTS' for consistency - configure: Added option to disable Motif WM Hints support - Code refactoring: replaced macro 'XDND' by 'USE_DOCK_XDND' for consistency - doc: re-generate the top directory documentation when "make dist" is invoked - texi2txt: add workaround for a known bug in "mawk" - wmaker: check return value for XGetWindowAttributes (Coverity #50032) - Handle NULL pointer as good as possible (Coverity #50099) - WINGs: fix memory leak in WMSubtractPLDictionaries (Coverity #50128) - wmaker: fix incorrect size for memory allocation (Coverity #50207) - wmaker: fix memory leak in the Workspace Map if there is no workspace (Coverity #109608) - wmaker: remove non-necessary allocation (Coverity #109609) - wmaker: remove useless null pointer check (Coverity #109612) - WINGs: remove useless function call in WColorPanel (Coverity #109617) - WUtil: fix improper use of de-allocated variable (Coverity #109618) - wmaker: converted macro 'SAME' into a static function - wmaker: fix crash when switching workspace with "Affiche.app" - wmaker: fix non-portable int argument for printf in error message (Christophe CURIS <christophe.curis@free.fr>) - Translations: Dutch language files updated - WINGs: trivial fixes in text strings - WMaker: trivial fixes in text strings - WPrefs: trivial fixes in text strings (Alwin <translations@ziggo.nl>) - wmaker: add script to check the call-back function used when loading configuration - wmaker: fix incorrect type for variable in the global preference structure - Code refactoring: replaced macro 'ANIMATIONS' by 'USE_ANIMATIONS' for consistency - configure: Added option to disable animations - wmaker: fix warnings from compiler when animations are disabled - wmaker: took as much assignation as possible outside 'if' statements - wmaker: reorganisation of the control flow of the function 'findDock' - wmaker: remove one level of pointers for the function SlideWindows - wmaker: do not use strcmp twice on the same thing, in function appiconBalloon (Christophe CURIS <christophe.curis@free.fr>) - wmaker: removed dead code related to 'GLOBAL_SUBMENU_FILE' (Rodolfo García Peñas (kix) <kix@kix.es>) - wmaker: moved the definition of the list of entries for the window menu to an array - wmaker: moved the definition of the entries for the window menu options to an array - wmaker: moved calculation of internal offset in handleDockMove outside the loop - wmaker: moved the list of Window Attributes into an array, for the Window Inspector - wmaker: moved the list of Advanced Options into an array, for the Window Inspector - wmaker: moved the list of Application Attributes into an array, for the Window Inspector - wmaker: fix misuse of 'user_flags' instead of 'client_flags' for window attributes - wmaker: honour MWM Hint to have no border to a window - WINGs: create a new type of Tri-State Switch Button (to doc) - wmaker: fix clearing of window attribute that was not saved properly - doc: describe the GNOME application issue in the FAQ - Add a configuration option to ignore Decoration Hints from GTK-based application - wmaker-check: rewrote parsing of structure fields for callback checker (Christophe CURIS <christophe.curis@free.fr>) - wmaker: replace and be replaced (ICCCM protocol) (Iain Patterson <wm@iain.cx>) - wmaker: make the '--replace' de-activable at compile time - wmaker: support providing ICCCM version, for compliance with the standard - doc: describe Iain Patterson's new feature for ICCCM compliance (Christophe CURIS <christophe.curis@free.fr>) - Translations: Dutch language files updated - WMaker: trivial fix in text string (Alwin <translations@ziggo.nl>) - doc: changed section for man pages from 1x to 1 - util: improve the command line argument parsing in wmmenugen - doc: do not install translated man pages if the language was not enabled in LINGUAS - doc: changed section for translated man pages from 1x to 1 - configure: Add compiler detection on non optimal floating point constant - Fixed floating point constants defined as double but expected as float - Added some explicit conversion to double precision - Use single-precision math functions when available - wrlib: changed Gamma Correction calculation to use single-precision float (Christophe CURIS <christophe.curis@free.fr>) - WPrefs: creating more space for translations (Alwin <translations@ziggo.nl>) - debian: Import version 0.95.6-1. - debian: Import version 0.95.6-1.1. (Doug Torrance <dtorrance@monmouthcollege.edu>) - Import of (partly outdated) Ukrainian translations. (Martin Dietze <mdietze@gmail.com>) - Add folder with fedora .spec file (Alexey I. Froloff <raorn@raorn.name>) - make: Add Ukrainian translation files to EXTRA_DIST. - wmiv: Add long command line options --help and --version. - wmiv: Improve help text. - doc: Add manpage for wmiv. (Doug Torrance <dtorrance@monmouthcollege.edu>) - wmaker: replaced old email address with the official one - WINGs: Updated news with the API changes that occured between 0.95.6 and 0.95.7 - WINGs: ran spell checker on the NEWS file - WINGs: fix non-portable int conversion for printf in font panel size handling - WRaster: fix unused variable warning when XShm extention is not enabled (Christophe CURIS <christophe.curis@free.fr>) - New translation into Frisian for Window Maker (Alwin <translations@ziggo.nl>) - wrlib: fixed gcc version needed for deprecated attribute support - Configure: increased the version of Automake requested (Christophe CURIS <christophe.curis@free.fr>) - configure: Fix output of libdir directory in summary (Josip Deanovic <djosip+news@linuxpages.net>) - wmaker: fix detection of legacy Apercu configuration keywords - WPrefs: fix conversion of old "Apercu" setting to the new keywords (Christophe CURIS <christophe.curis@free.fr>) - wmaker: Allow window snapping and linked workspaces simultaneously. - wmaker: Allow configuration of window snapping detect distances. - WPrefs: Add ability to set integer values in Expert panel - WPrefs: Add snap edge and corner detect to Expert panel. (Doug Torrance <dtorrance@monmouthcollege.edu>) - Translations: Dutch updates for WPrefs - Translations: Frisian updates for WPrefs (Alwin <translations@ziggo.nl>) - configure: fixed incorrect variable name that prevented --disable-xdnd to work (Rodolfo García Peñas (kix) <kix@kix.es>) - Revert "wmaker: fix clearing of window attribute that was not saved properly" - Disable pager by default (Carlos R. Mafra <crmafra@gmail.com>) - Allow using keypad Enter to commit move/resize - Allow using numpad Enter key in dialogs for confirmation (Amadeusz Sławiński <amade@asmblr.net>) - Window Maker 0.95.7 (Carlos R. Mafra <crmafra@gmail.com>) Changes since version 0.95.5: ............................. - ppm.c code style - gif.c code style - Removed optimize_for_speed flag - Removed context argument in jpeg files - supports_tiff moved to wPreferences - wApplicationExtractDirPackIcon doesn't use WScreen - get_icon_filename doesn't use WScreen (Rodolfo García Peñas (kix) <kix@kix.es>) - Display app name in ballon help of GNUstep apps (Charles Philip Chan <cpchan@bell.net>) - osdep_bsd.c: Fix a typo causing memory to be overwritten (François Tigeot <ftigeot@wolfpond.org>) - Add some information in the NEWS file (Carlos R. Mafra <crmafra@gmail.com>) - Debian 0.95.5 - Small typo with the word attempts - WPrefs: Ignore NumLock key when capturing keyboard shortcuts (Rodolfo García Peñas (kix) <kix@kix.es>) - wmaker: Converted #define to an Enum for the Program State tracking variables - wmaker: Changed name of parameter in macro WCHECK_STATE - wmaker: Created a global structure to regroup all global variables - wmaker: Moved the variable for Locale choice (I18N) to the global variable structure - wmaker: Moved timestamp variable (#1) to the global variable structure - wmaker: Moved timestamp variable (#2) to the global variable structure - wmaker: Moved global var with list of cursors to the preferences variable - wmaker: Removed notion of 'Default' mouse cursor - wmaker: Moved definition of WM-related XAtoms into the global variables structure - wmaker: Moved definition of GNUStep-related XAtoms into the global variables structure - wmaker: Moved definition of WMaker-specific XAtoms into the global variables structure - wmaker: Moved definition of X Contexts into the global variables structure - wmaker: Removed variable for X Context that is not used (Christophe CURIS <christophe.curis@free.fr>) - wIconChangeImageFile returns int - wIconChangeImageFile find image if block swapped - wIconChangeImageFile get image block swapped - wIconChangeImageFile removed error variable (Rodolfo García Peñas (kix) <kix@kix.es>) - Fixed scoping error in wSwitchPanelSelectFirst(). (Iain Patterson <wm@iain.cx>) - StartWindozeCycle uses ease variable - Avoid loop in keybinding check - wmaker: code style - Moved 'workspace_name_font' from the Screen to a Workspace object in the global namespace - Variable workspace_count moved to the workspace object in the global namespace - Variable last_workspace moved to workspace object in global namespace - Variable current_workspace moved to workspace object in global namespace - Array of workspaces moved to the workspace object in the global namespace - Variable workspace_menu moved to workspace object in global namespace - Clip, Dock and Drawers menu moved to appropriate global namespace - Removed WScreen args not used - AppIcon list moved out of WScreen - Removed unused WScreen variable in wIsADrawer - Variable clip_icon moved to clip object in the global namespace - wClipIconPaint appicon argument removed (Rodolfo García Peñas (kix) <kix@kix.es>) - Remove warning by open coding WM_ITERATE_ARRAY macro (Rodolfo García Peñas <kix@kix.es>) - Varible session_state moved to global namespace - Removed WScreen argument - shortcutWindows moved to w_global - Removed unused variable wapp_list (Rodolfo García Peñas (kix) <kix@kix.es>) - Allow undocking appicon when Alt is pressed - Prevent crash when toggling auto-attract on a drawer with clip disabled - Correctly initialize the drawer tile when the dock is on the left side - Fix stacking level bug when creating a drawer in a keep-on-top dock - Fix removal of drawer with a single appicon - Remove dead code for a confirmation dialog that we'll probably never want to show (Daniel Déchelotte <yo.dan@free.fr>) - Compiler food. - Removed unused keymove_tick variable (Rodolfo García Peñas (kix) <kix@kix.es>) - wmaker: Moved variable Screen Count into the global namespace - wmaker: Moved variable Ignore Wks Change into the workspace object in the global namespace - wmaker: Moved variables for the XShape extension into the global namespace - wmaker: Moved variables for the Xkb extension into the global namespace - wmaker: Moved variables for the XRandR extension into the global namespace - wmaker: Moved variables for Inotify into the global namespace - wmaker: Removed global variable 'WDelayedActionSet' and associated dead code - wmaker: Moved variable ValidModMask into the global namespace - wmaker: Moved global domain definition to the global namespace - wmaker: Moved definition of global variable 'wKeyBindings' to header - configure: Added compilation check for dangerous use of 'extern' keyword (Christophe CURIS <christophe.curis@free.fr>) - Removed unused WScreen argument (Rodolfo García Peñas (kix) <kix@kix.es>) - Removed unused WScreen argument from dock's clip state functions - Removed unused WScreen argument from workspace's state functions - Removed unused WScreen argument in Pixmap function - Removed unused WScreen argument in dock's drawer state functions - Removed unused WScreen argument in dock's clip function - Removed unused WScreen argument in some Default handling functions - util: Fixed possible off-by-one issue when generating filename - WPrefs: Grouped config key and user display string in a single struct - WPrefs: Grouped config key and user display icon in a single struct - WPrefs: Fixed duplicate 'const' keyword - wmaker: Fixed compilation of XDND support - wmaker: Added 'static' attribute to local variables - Removed parameter to function 'create_tab_icon_workspace' that was not used - Removed parameters to function 'open_window_menu_core' that were not used - Removed parameter to function 'updateResistance' that was not used - Removed parameter to function 'handleDeadProcess' that was not used - Removed parameters to function 'handle_inotify_events' that were not used - wmaker: Added reset of file handle variable to avoid multiple file close - wmaker: Removed non necessary macro for buffer size - wmaker: Marked arg as unused for compiler in callback code - wmaker: Marked args as unused at places where conditional code is used - wmaker: Marked args as unused for compiler in callback code - wmaker: Marked args as unused for compiler in menu callback code - wmaker: Marked args as unused for compiler in XExposeEvent callback code - wmaker: Marked args as unused for compiler in XClickEvent callback code - wmaker: Marked args as unused for compiler in XCloseEvent callback code - wmaker: Marked args as unused for compiler in WINGs Notif callback code - wmaker: Removed explicit callback type conversion - wmaker: Marked args as unused for compiler in WINGs callback code - wmaker: Marked args as unused for compiler in X Error handlers - wmaker: Removed explicit callback type conversion - wmaker: Marked args as unused for compiler in process death handlers - wmaker: Marked args as unused for compiler in signal handlers (Christophe CURIS <christophe.curis@free.fr>) - Add "Other maximization options" to window menu. (Doug Torrance <torrance@vandals.uidaho.edu>) - Focus fullscreen windows. - Update shortcut label for Unmaximize menu entry. - Update shortcut labels for Other maximization submenu. - Update other window menu shortcut labels. (Iain Patterson <wm@iain.cx>) - Included compile file in gitignore (Rodolfo García Peñas (kix) <kix@kix.es>) - Compiler food. (Iain Patterson <wm@iain.cx>) - WUtil: Marked args as unused for compiler in a callback functions - WUtil: Marked args as unused for compiler in WUtil's API code - WUtil: Removed unused argument in internal function - WINGs: Marked args as unused for compiler in Notification callback code - WINGs: Marked args as unused for compiler in XDND callback code - WINGs: Marked args as unused for compiler in widget resize callback code - WINGs: Marked args as unused for compiler in X Error handlers - WINGs: Marked args as unused for compiler in event callback code - WINGs: Marked args as unused for compiler in a few more callback functions - WINGs: Marked args as unused for compiler in WINGs API code (Christophe CURIS <christophe.curis@free.fr>) - Updated default icons (Doug Torrance <dtorrance@monmouthcollege.edu>) - Avoid unnecessary wWindowConfigure(). (Iain Patterson <wm@iain.cx>) - util: Marked args as unused for compiler in X Error handlers - WPrefs: Marked args as unused for compiler in Notification callback code - WPrefs: Marked args as unused for compiler in X Error handler - WPrefs: Marked args as unused for compiler in event callback code - WPrefs: Marked args as unused for compiler in signal handlers - WPrefs: Marked args as unused for compiler in WINGs callback code - wmaker: Marked arg as unused for compiler in Timer handler - Re-enable the compiler check for unused arguments - wmaker: Removed unused argument to function 'wMenuScroll' - wmaker: Removed unused args to local functions in wmspec - util: Removed argument that is not used - WINGs: Removed unused argument in function 'checkDropAllowed' - WINGs: Removed unused argument to function 'W_SetXdndAwareProperty' - WPrefs: Removed unused argument to function 'handleDragOver' - WPrefs: Removed unused screen argument in functions 'Init*' - WPrefs: Removed unused function 'DestroyTexturePanel' - WPrefs: Removed unused Screen argument to the 'Init*' functions - WPrefs: Disable compilation for code that is 'not_yet_fully_implemented' - WPrefs: Removed unused argument to function 'OpenExtractPanelFor' (Christophe CURIS <christophe.curis@free.fr>) - Remove default Microsoft fonts. - Remove newlines in legal panel. (Doug Torrance <dtorrance@monmouthcollege.edu>) - wmaker: Removed unused argument in function 'wDockFinishLaunch' - wmaker: Removed unused argument in function 'wDockLaunchWithState' (Christophe CURIS <christophe.curis@free.fr>) - Info Panel size with variables - Window Maker Developers Team Copyright - Legal Panel size with variables (Rodolfo García Peñas (kix) <kix@kix.es>) - Removed newlines from legal text in translations (Doug Torrance <dtorrance@monmouthcollege.edu>) - Improved ignore for 'm4' macro directory - configure: Moved detection of GIF support to a dedicated macro - wrlib: Use a Conditional for GIF in the makefile instead of #if in source - wrlib: Add support for v5 of the gif_lib API - WPrefs: Removed unused argument in function 'WGetEditMenuSubmenu' - WPrefs: Marked args as unused for compiler in callback code - wrlib: Moved configure's detection of JPEG support to a dedicated macro - wrlib: Moved configure's detection of PNG support to a dedicated macro - wrlib: Moved configure's detection of TIFF support to a dedicated macro (Christophe CURIS <christophe.curis@free.fr>) - Remove WMFullscreenLevel - Raise fullscreened window (Amadeusz Sławiński <amade@asmblr.net>) - wrlib: Moved configure's detection of XPM support to a dedicated macro - configure: Moved PPM image format handling to a consistent place - wrlib: separated the code to save to XPM from the builtin XPM loading - wrlib: Use a Conditional for XPM in the makefile instead of #if in source - wrlib: Marked args as unused for compiler - wrlib: Renamed image format related files for clarity - WUtil: New macro 'wlengthof' in the public API to get number of elements in an array - WINGs: Use the macro 'wlengthof' to get the number of element in an array - wmaker: Use the macro 'wlengthof' to get the number of element in an array - WPrefs: Use the macro 'wlengthof' to get the number of element in an array - util: Use the macro 'wlengthof' to get the number of element in an array - configure: Less intrusive CFLAGS change when --enable-debug is chosen - configure: Do not keep assertion if debug was not enabled - configure: Added a check to try to enable STD C11 if possible - configure: Minor changes to option parsing for consistency - configure: Add check on function prototypes when debug is enabled - WINGs: Minor improvments in 'closestListItem' function - WINGs: Do not allocate memory for a fixed-size short-lived buffer - wmaker: Minor improvements to function 'shade_animate' when empty on purpose - wmaker: Avoid multiple calls to gettext - wmaker: Created an array to hold the maximize menu entries - WPrefs: Changed array of strings 'colorOptions' into a struct for explicitness - WPrefs: Changed array of strings 'textureOptions' into a struct for explicitness - WPrefs: Make the label internationalised for the texture option in dialog window - wmaker: Do not allocate memory for a short lived string in 'selectSpecification' (Christophe CURIS <christophe.curis@free.fr>) - move maximization size adjustments to maximization function - make adjustments for dock when calculating area for miniwindows - take dock into account when not covering icons next to it - Fix implicit declaration (Amadeusz Sławiński <amade@asmblr.net>) - Fix arrow keys in switchpanel. (Iain Patterson <wm@iain.cx>) - configure: Enable compiler warnings to help add 'format' attribute - configure: Enable compiler warnings to help add 'noreturn' attribute - WINGs: Added attribute 'noreturn' to public function 'WMScreenMainLoop' - util: Removed unused procedure that caused a compilation warning - util: Added noreturn attribute to appropriate functions - WPrefs: Added noreturn attribute to appropriate functions - wrlib: Added noreturn attribute to appropriate functions - wmaker: Do not call XShape function if the server did not say it supports it - WINGs: Do not create variables for trivial things - Remove some unnecessary code related to XShape usage - configure: Removed deprecated lines for unused X stuff - configure: Enable compiler warnings for trampoline code generation - configure: Replaced deprecated construct with recommended new check - configure: Removed macro that are not used anymore - configure: Added m4 check to detect possible non-expanded macros - WINGs: Removed unnecessary type conversion - WRaster: Removed unused variables from Makefile - wmaker: Do not create a temporary variable for Xrandr support detection - WPrefs: Add case check to fix -Wmaybe-uninitialized warning - Code refactoring: replaced macro 'SHAPE' by 'USE_XSHAPE' for consistency - configure: made the functions to try lib link+compile more generic - configure: Created new macro to append only once a flag to a variable - configure: Created new macro to perform the repetitive part of Library check - configure: Moved configure's detection of XShape to a dedicated macro - Code refactoring: replaced macro 'XINERAMA' by 'USE_XINERAMA' for consistency - configure: Moved configure's detection of Xinerama to a dedicated macro - Code refactoring: replaced macro 'HAVE_XRANDR' by 'USE_XRANDR' for consistency - configure: Moved configure's detection of XRandR to a dedicated macro - Code refactoring: replaced macro 'XSHM' by 'USE_XSHM' for consistency - Configure: Moved configure's detection of XShm to a dedicated macro - Configure: Added proper check for Xmu library for WRaster - WINGs: Added a few missing const attributes - WRaster: Added missing const attribute - wmaker: Added missing const attribute - WPrefs: Added a few missing const attributes - utils: Added a few missing attributes to local variables - WINGs: Added 'const' attribute to function 'WMCreateHashTable' (Christophe CURIS <christophe.curis@free.fr>) - move dock/icons size adjustments, to fix window placement (Amadeusz Sławiński <amade@asmblr.net>) - Fixed a few improper macro usages - WPrefs: Moved widgets in Workspace panel so that label is not truncated (Christophe CURIS <christophe.curis@free.fr>) - Removed unused code in makeTitledIcon - Arguments not used in SetButtonAlphaImage - GetWindow function, argument not used - Remove compiler warnings in defaults.c - Removed unused code in screen.c - remove wtest compiler warnings. - WINGS: removed compiler warnings. (Rodolfo García Peñas (kix) <kix@kix.es>) - Minimal support for _NET_WM_WINDOW_OPACITY - Add _NET_WM_WINDOW_TYPEs added in EWMH 1.3 (Brad Jorsch <anomie@users.sourceforge.net>) - WINGs/Examples: Removed refs to connect and server examples - WPrefs: Fixed label display truncated for delays in ms for autocollapsing clips (David Maciejak <david.maciejak@gmail.com>) - Fixed compiler warnings in dock.c (Rodolfo García Peñas (kix) <kix@kix.es>) - Fixed xinerama detection - WPrefs: Resized frames inside Mouse Settings panel to avoid label truncated - WPrefs: Removed \n from label as the widget does at better job at splitting lines (Christophe CURIS <christophe.curis@free.fr>) - Fix out of source build for i18n pot files - Updated Hungarian translations (BALATON Zoltan <balaton@eik.bme.hu>) - Set no_focusable for "notification" and "tooltip" windows (Brad Jorsch <anomie@users.sourceforge.net>) - WPrefs: Make Dock preferences pane less busy and fix up some strings - Updated Hungarian translation (BALATON Zoltan <balaton@eik.bme.hu>) - Updated copyright date - WPrefs: Fixed compiler warnings (David Maciejak <david.maciejak@gmail.com>) - WPrefs: Completely removed function 'makeTitledIcon' that did nothing - test: Added a few comments to explain things - doc: Minor updates to the main README file - doc: Added info on git send-email in the 'perfect-patch' recommendation - doc: Ran spell-checker on most text files present in the top directory (Christophe CURIS <christophe.curis@free.fr>) - New translation into Dutch for Window Maker (Alwin <translations@ziggo.nl>) - RandR misc. (David Maciejak <david.maciejak@gmail.com>) - wmgenmenu: Write paths according to options set at configure time (Carlos R. Mafra <crmafra@gmail.com>) - split autoPlaceWindow to smaller functions - autoPlaceWindow: rewrite iteration to more comprehensible form - autoPlaceWindow: rename mysterious parameter tryCount to ignore_sunken - autoPlaceWindow: try placing window at center first (Yuri Karaban <dev@dev97.com>) - WINGs: Add support for syslog messaging (David Maciejak <david.maciejak@gmail.com>) - WUtil: Fixed incorrect header being included - WUtil: Added missing const attribute to function arguments (Christophe CURIS <christophe.curis@free.fr>) - WINGs: Add functions to release application memory - Add call to WMReleaseApplication on application exit - util: Make code a bit more secure - wrlib: Improved NETPBM support, file format detection - wrlib: Improvements to Netpbm memory usage on errors (David Maciejak <david.maciejak@gmail.com>) - wrlib: Improved NETPBM support (Christophe CURIS <christophe.curis@free.fr>) - wrlib: Improved file format detection (David Maciejak <david.maciejak@gmail.com>) - wrlib: Improved file format detection (Christophe CURIS <christophe.curis@free.fr>) - wrlib: Fixed and improved NETPBM examples - wrlib: Added support for webp image (David Maciejak <david.maciejak@gmail.com>) - wmaker: Scale image to make them fit in the preview panel - WINGs: Changed algorithm to resize a pixmap while keeping aspect ratio (Christophe CURIS <christophe.curis@free.fr>) - wrlib: added support for imagemagick third-party lib (David Maciejak <david.maciejak@gmail.com>) - Added pkg-config file for WUtil. (Doug Torrance <dtorrance@monmouthcollege.edu>) - wrlib: revert addition of an internal ImgFormat for ImageMagick - wmaker: update translations following string changes from previous commit - wmaker: Updated Dutch translation against changes in Info Panel - wmaker: Updated Armenian translation against changes in Info Panel (Christophe CURIS <christophe.curis@free.fr>) - Added missing files to distribution tarball. - Debian: Added wrlib.pc to libwraster3-dev package. (Doug Torrance <dtorrance@monmouthcollege.edu>) - wrlib: fixed prototype for 'RShutdown' in the public API header - wrlib: renamed compilation flags variables with a name less prone to clash - wrlib: fixed compilation to use the flags detected by configure for MagickWand - wrlib: light changes to the code for ImageMagick - wrlib: grouped the detection of ImageMagick in the CHECK_MAGICK macro - wrlib: changed the function used to detecting MagickWand - wrlib: moved 'RShutdown' from 'load.c' to 'misc.c' for consistency - wrlib: do not initialize/release ImageMagick unnecessarily - wrlib: add detection for ImageMagick using pkg-config (Christophe CURIS <christophe.curis@free.fr>) - wmaker: minor improvements to labels in the info panel - wrlib: Implemented functions to allow clean-up of Contexts - wrlib: Added clean-up of image cache in 'RShutdown' - wrlib: Added clean-up of library internals in 'RShutdown' (David Maciejak <david.maciejak@gmail.com>) - WINGs: Fix crash on exit while trying to save user config changes - WUtil: Aligned msgid for error message translations against latest code - WINGs: removed unused variable in syslog messaging code - WINGs: safer cleanup in the 'WMReleaseApplication' function - WINGs: Removed checks for code that can't fail - WMaker: rationalised the use of flags for window icons in the switchpanel - WPrefs: Make Opaque Move/Resize less cramped in the Window Handling panel - WPrefs: Updated translation source strings against source code - Add attribute 'noreturn' to a few functions pointed by clang (Christophe CURIS <christophe.curis@free.fr>) - Add keyboard shortcut to run application. (Doug Torrance <dtorrance@monmouthcollege.edu>) - wrlib: add a function to draw rectangles (David Maciejak <david.maciejak@gmail.com>) - Restore wprogressindicator.c declarations to WINGs/WINGs.h - WPrefs: WINGs font configuration - WINGs: Option for decimal or hexadecimal RGB colors - WPrefs: Set workspace background (Doug Torrance <dtorrance@monmouthcollege.edu>) - util/wmiv: an image viewer using wrlib - clean wDockFindFreeSlot function (David Maciejak <david.maciejak@gmail.com>) - wrlib: Potential leak of memory pointed to by 'tmpp' - wmlib: Potential leak of memory pointed to by 'entry' (Amadeusz Sławiński <amade@asmblr.net>) - wmlib: remove wrong free highlighted by commit 65dc99d805 (Christophe CURIS <christophe.curis@free.fr>) - wrlib: potentially incorrect sizeof in malloc - wrlib: wrong type in sizeof - wrlib: wrong type in sizeof - WINGs: Called function pointer is null (null dereference) - WINGs: Value stored to 'scroll' is never read - WINGs: Value stored to 'pos'|'_w'|'done' is never read - WINGs: actually assign variable (Amadeusz Sławiński <amade@asmblr.net>) - WPrefs: fix segfault when image not found - add util/wmiv to .gitignore (Doug Torrance <dtorrance@monmouthcollege.edu>) - WPrefs: Value stored to 'timage' is never read (Amadeusz Sławiński <amade@asmblr.net>) - WPrefs: remove unfinished background tab from appearances panel code - WPrefs: new enum in Appearances.c for tab identifiers to increase readability - doc: Update getstyle and setstyle manpages. - WPrefs: Add ability to edit FrameBorderColor/FrameSelectedBorderColor. (Doug Torrance <dtorrance@monmouthcollege.edu>) - WINGs: changed use of 'if' on panel->rgbState into a switch - WMaker: moved XGrab/XUngrabPointer into the conditional code - News: created section dedicated to the changes related to 0.95.3 - News: added description of a change that may be interesting to users - News: added section to describe the changes that have occured in 0.95.4 - News: marked the current changes as part of 0.95.5 and describe the drawers feature - News: described the new features for future 0.95.6 release - News: ran spell-checker on the file (Christophe CURIS <christophe.curis@free.fr>) - src/appicon.c: updated paint_app_icon (David Maciejak <david.maciejak@gmail.com>) - WMaker: rewrote generation of title for the Icon Chooser to avoid problems (Christophe CURIS <christophe.curis@free.fr>) - src/misc.c: updated GetShortcutString - src/usermenu.c: updated wUserMenuRefreshInstances - src/winmenu.c: updated prepare_menu_position (David Maciejak <david.maciejak@gmail.com>) - WUtil: fix posible crash in 'wgethomedir' (Coverity #50070) - WUtil: make sure wmalloc/wrealloc won't fail because of abort handler - WUtil: remove unnecessary check in wstrappend (Coverity #50138) - WUtil: fixed possible problem in wcopy_file (Coverity #50141) - WUtil: remove unnecessary check in WMGetStandardUserDefaults (Coverity #50191) - WUtil: fix type used in sizeof in function wtokensplit (Coverity #50208 + #50209) - WUtil: make use of secure_getenv if the function is available - WUtil: fix undefined behaviour with $VARS in wexpandpath (Coverity #50244) - WUtil: change 'wassertr(v)' to still perform check even if NDEBUG is set - WUtil: remove duplicated information from 'wassertr(v)' message (Christophe CURIS <christophe.curis@free.fr>) - Coding style: Change 'foo * bar' to 'foo *bar' in function arguments (Carlos R. Mafra <crmafra@gmail.com>) - WINGs: Value stored to 'columnX' is never read - wrlib: Value stored to 'i'|'tmpc' is never read - wrlib: Value stored to 'bptr' is never read - util: Value stored to 'ret' is never read - wmaker: Value stored to 'w1' is never read - wrlib: Value stored to 'nptr' is never read - WINGs: Value stored to 'aw' is never read - util: Value stored to 'count' is never read - WINGs: Value stored to 'fh'|'fy' is never read - WINGs: Value stored to 'sz' is never read (Amadeusz Sławiński <amade@asmblr.net>) - WINGs: remove unreachable code in paintMenuEntry (Coverity #50042) - WINGs: do not crash on NULL title in WMSetWindowTitle (Coverity #50046) - WINGs: fix check for NULL pointer in WMText selection (Coverity #50067) - WINGs: fix memory leak in WColorPanel (Coverity #50102, #50103, #50104 and #50133) - WINGs: fix memory leak in WMGetBrowserPaths (Coverity #50111) - WINGs: fix memory leak in WMCreateTextForDocumentType (Coverity #50118) - WINGs: fix memory leak in getStreamObjects (Coverity #50119) - WINGs: fix memory leak in requestHandler (Coverity #50135) - WINGs: fix memory leak in requestHandler (Coverity #50136) - WINGs: fix possible NULL pointer dereference in WMFreeColorPanel (Coverity #50189) - WINGs: fix incorrect usage of direction variable in updateStartForCurrentTextBlock (Coverity #50192) - WINGs: fix check for NULL pointer in WMFilePanel (Coverity #50195) - WINGs: fix possible NULL pointer dereference (Coverity #50197) - WINGs: fix probable crash in drag'n'drop (Coverity #50264) - WINGs: removed unnecessary gotos in handleTextKeyPress (Christophe CURIS <christophe.curis@free.fr>) - WPrefs: updates to FrameBorderColor/FrameSelectedBorderColor options - WINGs: Click on colored portion of color well also opens color panel. (Doug Torrance <dtorrance@monmouthcollege.edu>) - Add checkpatch.pl, stolen from the linux kernel (Carlos R. Mafra <crmafra@gmail.com>) - Removed references to obsolete DisplayFont (Doug Torrance <dtorrance@monmouthcollege.edu>) - WPrefs: changed renderTexture to always fallback to solid black when image can't be loaded (Christophe CURIS <christophe.curis@free.fr>) - Fix segfault in Wprefs when background is set to fpixmap (wmsetbg --fillscale) - Allow setting separate border color for focused windows - Allow setting "FrameFocusedBorderColor" from WPrefs - reformat output so it fits on terminals with 80 columns - Add missing options to wmsetbg manpage (Amadeusz Sławiński <amade@asmblr.net>) - WMaker: remove unnecessary check in Balloon show function (Coverity #50065) - WMaker: fix memory leak in windows menu (Coverity #50109) - WMaker: fix memory leak in window inspector (Coverity #50116) - WMaker: fix memory leak in the docked apps icon chooser (Coverity #50117.1) - WMaker: fix memory leak in the windows icon chooser (Coverity #50117.2) - WMaker: fix memory leak in wDockTrackWindowLaunch (Coverity #50120 and #50121) - WMaker: fix memory leak in the root menu parser (Coverity #50122) - WMaker: fix memory leak in root menu parser (Coverity #50123 and #50124) - WMaker: fix memory leak in workspace switching (Coverity #50126) - WMaker: fix memory leak in the switchpanel backgroung image (Coverity #50131) - WMaker: fix memory leak in screen initialisation (Coverity #50134) - WMaker: removed unnecessary case handling in appicon setting - WMaker: fix memory leak in app icon changing (Coverity #50139) - WMaker: fix memory leak in the crash handling dialog (Coverity #50163) - WMaker: fix memory leak when respawning after crash (Coverity #50165) - WMaker: fix memory leak in windows saved state handling (Coverity #50171) - WMaker: fix dangerous code in file scanning for wAdvancedInputDialog (Coverity #50172) - WMaker: fix possible memory leak in the icon chooser dialog (Coverity #50173) - WMaker: fix memory leak in the window inspector when saving settings (Coverity #50174) - WMaker: fix memory leak in the window inspector when saving settings (Coverity #50175) - WMaker: removed check that is always true in wDefaultsInitDomain (Coverity #50243) - WMaker: change conceptually imperfect code in drawerDestroy (Coverity #50265) - WMaker: removed use of dangerous RETRY macro in GetCommandForPid for Linux (Coverity #50267) (Christophe CURIS <christophe.curis@free.fr>) - wrlib: add image flip functions - util/wmiv: correct errors and warnings - wrlib: RRotateImage function not fully implemented (David Maciejak <david.maciejak@gmail.com>) - wmaker: raise shaded window when alt tabbing - wmaker: alt-tab to shaded windows when "SwitchPanelImages = None" is set (Amadeusz Sławiński <amade@asmblr.net>) - wrlib: fixed transformation functions (David Maciejak <david.maciejak@gmail.com>) - wmgenmenu: Do not force command line options upon everybody (Carlos R. Mafra <crmafra@gmail.com>) - WINGs: fix duplicate if/else branch in W_LookupString (David Maciejak <david.maciejak@gmail.com>) - WPrefs: make fall-back value look like a fall-back value in Texture Panel (Coverity #50031) - WPrefs: fix NULL pointer dereference in the Pixmap/Icon path panel (Coverity #50073 + #50150) - WPrefs: fix possible crash when saving mouse modifier (Coverity #50098) - WPrefs: fix memory leak in buildPLFromMenu (Coverity #50105) - WPrefs: fix memory leak in loadRImage (Coverity #50107) - WPrefs: fix memory leak when editing the label of a menu (Coverity #50130) - WPrefs: fix memory leak when saving settings (Coverity #50140 + #50157 + #50159) - WPrefs: fix memory leak when editing a delay for the dock (Coverity #50156) - WPrefs: fix memory leak when saving window handling settings (Coverity #50158) - WPrefs: fix NULL pointer handling when getting the Modifiers (Coverity #50200) - WPrefs: add warning when renderTexture encounters some unknow settings (Christophe CURIS <christophe.curis@free.fr>) - util/wmiv: add image auto orientation detection (David Maciejak <david.maciejak@gmail.com>) - WPrefs: set IconTitleColor, IconTitleBack, ClipTitleColor, and CClipTitleColor - Add checkpatch.pl to distribution tarball. (Doug Torrance <dtorrance@monmouthcollege.edu>) - WPrefs: add expert option to disable switch panel - WMaker: src/misc.c remove obsolete code - wrlib: load.c clean coding style - WINGs: add function to set the color of the frame title - wmaker: darken labels from docked application settings (David Maciejak <david.maciejak@gmail.com>) - wrlib: fix possible incorrect shifting operations (Coverity #50203) - wrlib: fix possible incorrect shifting operations (Coverity #50204, #50205, #50206) - wrlib: removed macro RETRY that does not does what is expected (Coverity #50160) - wrlib: added a limit to the image cache size (Coverity #50223) - wrlib: initialise value for variable to avoid possible crash (Coverity #50245) - wrlib: remove unnecessary variable assignation (Coverity #50258) - wrlib: return NULL if XImage could not be taken, for consistency - wrlib: new headers to contain definition of internal stuff - wrlib: add explicit type definition in API to allow compiler Type Checks (1/3) - wrlib: add explicit type definition in API to allow compiler Type Checks (2/3) - wrlib: add explicit type definition in API to allow compiler Type Checks (3/3) (Christophe CURIS <christophe.curis@free.fr>) - Consistent terms for switch panel cycling. (Iain Patterson <wm@iain.cx>) - wmaker: redo logo (David Maciejak <david.maciejak@gmail.com>) - util: simplify the code for 'find_terminal_emulator' (Coverity #50076) - util: removed unnecessary RReleaseImage in wmsetbg (Coverity #50077) - util: fix misleading indentation in assemblePLMenuFunc (Coverity #50094) - util: fix leak in setstyle (Coverity #50151+#50152) - util: remove unnecesary allocation in addWMMenuEntryCallback (Coverity #50161) - util: fix leak in getstyle's makeThemePack (Coverity #50164) - util: fix image leak in wmsebg's parseTexture (Coverity #50166) - util: fixed memleak in wmsetbg's updateDomain (Coverity #50167) - util: fix leaks in wmsetbg's changeTextureForWorkspace (Coverity #50169) - util: add proper check for null pointer in wmsetbg (Coverity #50198) - util: fix possible buffer overrun in the function that create L2 menus (Coverity #50219) - util: replaced sprintf with snprintf to avoid buffer overflow (Coverity #50220) - util: add check for size validity (Coverity #50224) - util: rewrote path building in makeThemePack - Removed definitions of dangerous macro RETRY that does not work as expected - util: cosmetic updates to the list of terminals for wmmenugen (Christophe CURIS <christophe.curis@free.fr>) - Catch-up with new strings, and overall improvements of the Dutch language files (Alwin <translations@ziggo.nl>) - wrlib: move fixed angle rotation code to dedicated functions - wrlib: code refactoring in RFlipImage functions - wrlib: do not create an alpha channel if the original image did not have it in RFlipImage - wrlib: merged both R*FlipImage function into one for the public API - WINGs: optimisations to 'WMReadPropListFromPipe' - wmaker: fixed flag to avoid reloading config multiple times - wmaker: removed variable whose value never changed - wmaker: remove checks on variables that have already been checked - wmaker: simplify the code for the Xkb event handler - WPrefs: replaced NULL terminated lists by 'wlengthof' usages - WPrefs: grouped items related to the color selection in a single place - WPrefs: grouped items related to the texture selection in a single place - util: update wmiv after the RFlipImage API change in wrlib - util: clarify a bit of the code for parsing commands in wmgenmenu - util: add explicit types for calback functions definitions - doc: add a few more suggestions for people willing to contribute (Christophe CURIS <christophe.curis@free.fr>) - wmaker: improve the behaviour of window resizing by user (Ioan Moldovan <ioanm@outlook.com>) - wrlib: re-introduce the optimize_for_speed flag for binary compatibility - Increment versions of libraries for next release due to public API Changes (Christophe CURIS <christophe.curis@free.fr>) - wrlib/tests: fix testgrad memory leak - WINGs/Tests: make them compile again - wmaker: dock.c possible null pointer dereference - wmaker: superfluous.c possible null pointer dereference - wmaker: main.c fix realloc mistake - WINGs: correct possible null pointer dereference - wrlib: fix RCreateImageFromDrawable error log msg - wmaker: fix xdnd accepted type - wmaker: Improve drag-nd-drop support - wmaker: Add drag-nd-drop support in info panel - wmaker: Add drag-nd-drop support - wmaker: fix moveres.c compilation warning - wmaker: switch back icon name to the window name when needed - wmaker: unset default app logo size - wmaker: update drag-nd-drop label related - wmaker: src/dialog cosmetic code change - wmaker: add miniwindow apercu (David Maciejak <david.maciejak@gmail.com>) - apercu: Make preview size a configuration option (Carlos R. Mafra <crmafra@gmail.com>) - wmaker: change default app icon - WPrefs: fix key capture - wmaker: update docked application balloon text - wmaker: fix src/dock.c code typo - wmaker: src/action.c merge duplicate code - WINGs: merge duplicate code from wtext - wmaker: fix deiconify window on double-click - wmaker: fix control shortcut label in window menu - wmaker: update src/action.c coding style - wrlib: add merged code for xpm support in 2 distinct functions - wrlib: remove duplicate code from xpm support - wmaker: add support for more mouse buttons - WPrefs: add new mouse buttons configuration support - wmaker: make disable mouse actions a live set - wmaker: implement EWMH _NET_WORKAREA (David Maciejak <david.maciejak@gmail.com>) - Window Maker 0.95.6 (Carlos R. Mafra <crmafra@gmail.com>) Changes since version 0.95.4: ............................. - Fix underlinking (Kamil Rytarowski <krytarowski@gmail.com>) - Set mod+wheel to OFF by default (Carlos R. Mafra <crmafra@gmail.com>) - Fix incorrect FSF address - Include LGPL with correct FSF address (Andreas Bierfert <andreas.bierfert@lowlatency.de>) - README capitalization fix (SJS <wmaker@stremler.net>) - Removed XRANDR externs - New shutdown.h file - WINGs: Functions to read the Mouse Wheel conf - Don't access to private WINGs info - WINGs: New function W_setconf_doubleClickDelay (Rodolfo García Peñas (kix) <kix@kix.es>) - Window placement: Enforce center position (Carlos R. Mafra <crmafra@gmail.com>) - Update docked icon after kill dockapp - New function set_icon_image_from_database - Simplify the application appicon creation (Rodolfo García Peñas (kix) <kix@kix.es>) - autoconf: add remaining parameter for AC_SEARCH_LIBS (Wade Berrier <wberrier@gmail.com>) - Sanitize 'Ignore client supplied icon' logic (Rodolfo García Peñas (kix) <kix@kix.es>) - wmgenmenu: Add XBMC entry (Carlos R. Mafra <crmafra@gmail.com>) - WPrefs: Fix single click activation button in Icon preferences (BALATON Zoltan <balaton@eik.bme.hu>) - WINGS: New function WMReadPropListFromPipe - Add OPEN_PLMENU option to parse command generated proplist style menus - Teach WPrefs about OPEN_PLMENU (Andreas Bierfert <andreas.bierfert@lowlatency.de>) - Removed dead code in wSessionRestoreState - Cosmetic code changes in workspace - Removed unused dock types - Window attributes moved to wCoreCreateTopLevel - Removed extra XClearWindow call - Workspace clip creation in two steps (Rodolfo García Peñas (kix) <kix@kix.es>) - Added wGetColorForColormap(). - Use wGetColorForColormap() when allocating border pixel. - Make window border colours configurable. - Make window border size configurable. - Document FrameBorder* preferences. - Change Select menu entry text for selected windows. (Iain Patterson <wm@iain.cx>) - Removed old window clip balloon code (Rodolfo García Peñas (kix) <kix@kix.es>) - Added GetShortcutKey(). - Eliminate Workspaces menu magic numbers. - Show shortcuts for workspace switching menu entries. - Added shortcut to switch to last used workspace. - Allow WPrefs to configure the last used workspace key. - Shortcuts for moving windows between workspaces. - Allow WPrefs to configure workspace switching keys. - Document new workspace shortcuts. (Iain Patterson <wm@iain.cx>) - Removed dup function wScreenSearchForRootWindow - code clean at startup.c - wGetRectForHead moved to where used - New file placement.h - New function set_icon_image_from_image - wIconChangeImageFile use set_icon_image_from_image - wIconUpdate removed image argument - Dockapps don't have title - drawIconTitle renamed - New function update_icon_title - wIconChangeTitle rewrited - Move out wIconUpdate from set_icon_image_from_database - Remove wIconUpdate in keepIconsCallback - Remove wIconUpdate in moveIconBetweenDocks - Remove wIconUpdate in wDockDetach - Remove wIconUpdate in wDockAttachIcon - Remove wIconUpdate in tileObserver - wIconPaint: avoid crashing if icon is NULL - wIconChangeTitle rewritten (Rodolfo García Peñas (kix) <kix@kix.es>) - configure: Add detection of library kvm that is used under OpenBSD (Christophe CURIS <christophe.curis@free.fr>) - Deleted useless test - Avoid clip flickering when docking an appicon - BF for "some obscured windows briefly appears when switching workspaces" - Fix leading spaces in comment (trivial) - WPrefs: consolidate the 2 createImages static functions into a global one - Consolidated all code checking whether a tile is fully on screen in one static function - Make the clip's auto-delays configurable - WPrefs: new Docks pannel, to change auto-expand/collapse/etc delays - Increase MAX_WINDOWLIST_WIDTH from 160 to 400 (in pixels) - Bring back some "About" information when double-clicking the dock - Move code that removes icons from a dock to new removeIcons function - Merging appicon.c:appIconMouseDown and dock.c:handleIconMove into appicon.c:wHandleAppIconMove - Added wDefaultPurgeInfo to remove what we stored about a given instance-class couple. - Added a SlideWindows function to handle horizontally-aligned array of windows - Add drawers to wmaker! - WPrefs: adds possibility to disable drawers from Docks panel - Real-time dock left-right swapping - Allow appicons above the dock - Wrap appicons when dock is moved up and down - Add option to merge the workspace-switching functionality into the dock (Daniel Déchelotte <yo.dan@free.fr>) - Merge branch 'wmdrawer' into next - Fix compilation from merge conflict - WPrefs: Avoid crash when config file does not contain wmdrawer settings (Carlos R. Mafra <crmafra@gmail.com>) - WPrefs: fix missing drawer image in Makefile.am (Renan Traba <rvt10@inf.ufpr.br>) - Compiler food. (Iain Patterson <wm@iain.cx>) - New file misc.h - icon_update_pixmap default moved to bottom (Rodolfo García Peñas (kix) <kix@kix.es>) - Fix StartWindozeCycle() shift key behaviour. - Set StrictWindozeCycle by default. - Added sameWindowClass(). - Correct check for modifier in class-specific cycle. - Support for same-class cycling in open switchpanel. (Iain Patterson <wm@iain.cx>) - Move the list of keyboard shortcut texts into the array of their config keyword - Moved declaration of format-specific image Load functions to dedicated header - Moved the function to Save image also into the internal header - Converted #define into an Enum for image format number - Added 'const' attribute to the file name parameter to load/save - Added 'const' attribute on non-modified arguments for drawing functions - Added 'const' attribute on non-modified arguments for color handling functions - Added the last missing 'const' attributes to function parameters - Increased library's revision to reflect API updates - Added missing headers to the list of source files of the project - WRaster: Bugfix, added missing 'const' to RLoad* functions - WUtil: Added 'const' attribute on non-modified arguments to functions - WUtil: Added 'const' attribute to parameters for file related API - WUtil: Added 'const' attribute to the filename on WM(Read|Write)PropList* - WUtil: Added 'const' attribute to all remaining functions where applicable - WUtil: Added comment about values returned by API functions - WUtil: Avoid unnecessary strdup + free - WUtil: Fixed wrong type recast - WUtil: Fixed risky code for de-escaping of strings - WUtil: Changed declaration of 'wusergnusteppath' to return a CONST string - Fixed const correctness in functions using 'wusergnusteppath' - WUtil: Rewrote 'wusergnusteppath' to be more efficient - WUtil: Increased version number for the library (Christophe CURIS <christophe.curis@free.fr>) - Documentation on the new switchpanel behaviour. (Iain Patterson <wm@iain.cx>) - WPrefs: Added the proper 'const' attribute to the dictionnary functions - WPrefs: Added const attribute to statically stored strings - Fixed memory leak due to non-freed temporary PropList - Added a few 'const' to filename parameters for History functions - Changed method to limit the number of History entries loaded - Fixed memory leak due to non-freed property list structure - WINGs: Added 'const' attribute to functions in wapplication, wappresource, wcolor, wfont, wpixmap - WINGs: Added 'const' attribute to functions in wbutton, wframe, wlabel, wlist, wwindow - WINGs: Added 'const' attribute to functions in wbrowser, wcolorpanel, wfilepanel and wfontpanel - WINGs: Added 'const' attribute to functions in wballoon, wmenuitem, wmisc, wtextfield - WINGs: Added 'const' attribute to functions in wpanel, wpopupbutton, wtabview - WINGs: Added 'const' attribute to functions in dragdestination, wtext - WINGs: Added 'const' attribute to 'WMCreatePropListFromDescription' - WINGs: Added 'static' attribute to local functions in wcolorpanel - wrlib: Added 'const' attribute to local function in 'context' - WPrefs.app: Added const attribute to local string - WINGs: Fixed incorrect allocation size, missing room for '\0' - WINGs: Fixed incorrect return type for internal function - WINGs: Updated NEWS file about the API changes in the libraries (Christophe CURIS <christophe.curis@free.fr>) - InfoPanel: Added info about XRandR in the info dialog (Rodolfo García Peñas (kix) <kix@kix.es>) - InfoPanel: Minor fixes for what must be translated and what does not need to - InfoPanel: Use a more user-friendly separator to display supported image formats - InfoPanel: Added display of memory fragmentation information - Readme: Removed reference to the tutorial - Readme: Removed reference to 'contrib' directory - util: removed deprecated file 'directjpeg.c' - Configure: Changed OS dependant check to use Autoconf's macro - Changed WM_OSDEP to use Conditional instead of Substitution - WPrefs: Added a few comments in header file - Added proper legal notice at beginning of header files - Added missing include guards in a few headers - Removed temporary allocation to build a path that is actually a constant - Configure: Fixed usage of CPPFLAGS instead of CFLAGS for some options - Changed formula for getting the number of elements in a static array - Unified usage of the 'inline' attribute for functions - WPrefs: Move declaration of function into the common header - Fixed improper variables definition in header file - WRaster: Changed equality/inequality comparison on floating point number - WINGs: Changed the minimum internal knob size of WScroller - WINGs: Changed equality comparison on floating point number - wmaker: Removed equality comparison on floating point number - Configure: Added some -Wxxx checks when debug mode is enabled - util: Created header to define functions that may be used in more that one place - util: Added 'const' attribute to function parameters - WPrefs: Moved content of 'double.h' into 'WPrefs.h' - WPrefs: Added 'const' attribute to function parameters - wmaker: Removed deprecated function definition from header - wmaker: Reorganised the header 'funcs.h' - src/main.c: Moved local prototype for global function to header 'funcs.h' - Added explicit 'void' to function that takes no argument - WINGs: Added explicit parameter list to function prototypes (Simple cases) - WINGs: Added explicit parameter list to function prototypes (Complex case) - WINGs: Removed cast to change function prototype - WINGs: Reorganised the private header - WINGs: Place prototype of functions in WINGsP.h instead of local definition - WINGs: Moved declaration of extern variable to the global header - WINGs: Added include for header defining the funcion provided by the file - WINGs: Added a few missing 'static' attributes to functions - wmaker: Cleaned dangerous function prototype usage - util: Added a few missing 'static' attributes for functions - WPrefs: Cleaned dangerous function prototype usage (Christophe CURIS <christophe.curis@free.fr>) - fix condition to restore window position when unmaximized - simplified logic of handleMaximize function (Renan Traba <rvt10@inf.ufpr.br>) - simplified logic of wMaximizeWindow function - added new maximize positions, top and bottom (Renan Traba <hellupline@gmail.com>) - WPrefs: added option to configure new top and bottom viewports - added new windows positions - WPrefs: added option to configure new viewports - explicit restore to MAX_MAXIMUS instead of empty flag at handleMaximize - enforce requested window position whem maximizing (Renan Traba <rvt10@inf.ufpr.br>) - Prevent crash when switchpanel is not initialised. - Dim switchpanel icons when same-class cycling. - Undim switchpanel icons when selecting windows directly. (Iain Patterson <wm@iain.cx>) - New header file startup.h - New header file cycling.h - New header file event.h - getWVisualID prototype moved to main.h - New header file monitor.h - New header file winmenu.h - New header file switchmenu.h - funcs.h removed (Rodolfo García Peñas (kix) <kix@kix.es>) - Fix workspace renaming with Ctrl+left click (Carlos R. Mafra <crmafra@gmail.com>) - Avoid unnecessary switchpanel icon redraws. - Compiler food. - Preference to open the switchpanel without selecting a window. - Handle Return in switchpanel. - funcs.h regression - Maximization regression (Iain Patterson <wm@iain.cx>) - Configure: Use automake's conditional to handle icon installation - WUtil: Avoid memory leak and misbehaviour on internal function 'getuserhomedir' - Configure: Added check for compiler attribute 'noreturn' - wmaker: Added attribute 'noreturn' to appropriate functions - Added explicit prototype for callback function and fixed code accordingly - Fixed structure declaration syntax - Fixed incorrect format specifier - WPrefs: Fix crash when switching to mouse settings panel - WPrefs: Fixed empty list of Mouse Grab Modifier problem - WPrefs: Added XKeycodeToKeysym work-around to all other usage places - Hide some compiler warning that are known and accepted - wmaker: Added 'const' attribute to function 'ShrinkString' - wmaker: Added 'const' attribute to local function 'getMaxStringWidth' - wmaker: Added 'const' attribute to local function 'drawMultiLineString' - wmaker: Added 'const' attribute to function 'GetShortcutString' - wmaker: Added 'const' attribute to function 'wDefaultsInitDomain' - wmaker: Added 'const' attribute to most local functions - wmaker: Added 'const' attribute to most global functions - wmaker: Added 'const' attribute to function 'wWindowUpdateName' - wmaker: Added 'const' attribute to remaining functions - wmaker: Added 'const' attribute to local variables - Configure: Moved check for Math lib to a dedicated M4 macro - Configure: Added explicit check for math library header - wmaker: Changed math on floating point by integer operation - WRaster: Changed formula for reconverting angle to the (0-360) bounds (Christophe CURIS <christophe.curis@free.fr>) - Fix segfault when SwitchPanelImages = None and user press Alt+tab. (Gabriel VLASIU <gabriel@vlasiu.net>) - Don't crash when SwitchPanelImages is None. (Iain Patterson <wm@iain.cx>) - Estonian translation of Window Maker 0.95.4 (Ivar Smolin <okul@linux.ee>) - wmaker: Replaced local 'extern' definition by proper header include - wmaker: Replaced local 'extern' definition of wPreferences by proper header usage - wmaker: Moved function prototype to the appropriate header - wmaker: Replaced local declaration of system function by proper header call - wmaker: Moved function prototype to the appropriate header - wmaker: Changed global constant declaration to use appropriate type (Christophe CURIS <christophe.curis@free.fr>) - Proper fix for array == NULL in WMPopFromArray() function. (Gabriel VLASIU <gabriel@vlasiu.net>) - Korean Localization update, etc. (Lee, Seong-Gu <sgleehd@gmail.com>) - wmaker: reset "ignore workspace change" flag in all cases (Thomas Otto <totto@zbh.uni-hamburg.de>) - Window Maker 0.95.5 (Carlos R. Mafra <crmafra@gmail.com>) Changes since version 0.95.3: ............................. - Makefile: Add missing subdir (John H. Robinson, IV <jaqque@sbih.org>) - debian: New version 0.95.3 - Added wmlib/libWMaker.la to .gitignore (Rodolfo García Peñas (kix) <kix@kix.es>) - Bugs with readMenu*(). (Iain Patterson <wm@iain.cx>) - Fixed possible off-by-one loops (Christophe CURIS <christophe.curis@free.nospam.fr>) - Initialize app_icon to null - New function save_app_icon - New function app_icon_create_from_docks - Move makeAppIconFor() and removeAppIconFor() - Split makeAppIconFor() - Remove code duplication by calling paint_app_icon() - Check one time if no_appicon is set - Coding style cleanup in application.c - Remove code duplication by calling removeAppIconFor() (Rodolfo García Peñas (kix) <kix@kix.es>) - Random coding style cleanup in winspector.c (Carlos R. Mafra <crmafra@gmail.com>) - New function create_logo_image (Rodolfo García Peñas (kix) <kix@kix.es>) - Add fill screen scale to wmsetbg - Fix "implicit declaration of function" (Amadeusz Sławiński <amade@asmblr.net>) - WScreen argument removed in get_generic_value() - Function wDefaultFillAttributes() rewritten - New functions in icon.c - Function get_name_for_icon splitted - Remove code duplication by calling readGlobalDomain() (Rodolfo García Peñas (kix) <kix@kix.es>) - Add "Center" window placement strategy (Yuri Karaban <mlists@dev97.com>) - New function get_name_for_instance_class - Remove code duplication by calling get_name_for_instance_class() - Icon functions moved to appicon.c - wAppIconSave is now void - wAppIconSave splitted - app_icon_create_from_docks moved to appicon.c - Create WAppIcon always - extractIcon removed. - save_app_icon WWindow argument removed - Do static icon functions - GetProgramNameForWindow removed - Change a small comment in icon.c - Icon painting moved to makeAppIconFor() - New debian version 0.95.3-2 (Rodolfo García Peñas (kix) <kix@kix.es>) - wmmenugen: properly skip NoDispaly entries (Alexey I. Froloff <raorn@raorn.name>) - app_icon_create_from_docks renamed to create_appicon_from_dock (Rodolfo García Peñas (kix) <kix@kix.es>) - WMPopFromArray(): avoid underflow (Alexey I. Froloff <raorn@raorn.name>) - Make create_appicon_from_dock() do only what its name implies - Unify save_appicon() and wAppIconSave() - Skip no_appicon apps in the application icon list (Carlos R. Mafra <crmafra@gmail.com>) - Correct window shading logic. (Iain Patterson <wm@iain.cx>) - Cleanup superfluous.c a bit - icon.c code cleanup (Rodolfo García Peñas (kix) <kix@kix.es>) - Address unprototyped call in dock.c (Carlos R. Mafra <crmafra@gmail.com>) - Remove code duplication in winmenu.c (Rodolfo García Peñas (kix) <kix@kix.es>) - Address 'may be used uninitialized' warnings (Carlos R. Mafra <crmafra@gmail.com>) - rootmenu header file updated - XKeycodeToKeysym deprecated function - Moving header functions to main.h (Rodolfo García Peñas (kix) <kix@kix.es>) - wmaker.inst: Remove test for LITE and KDE message (Carlos R. Mafra <crmafra@gmail.com>) - Add helper functions for appicon list management - New move_window function - New colormap header file and remove unused functions - Remove unused variables from WSessionData struct - Remove unused wWindowCanReceiveFocus() - Remove unused variable wm_name_changed - Remove never-set variable net_state_from_client - Variables user_changed_* can be removed - window.h: Remove unused variables from WWindow struct - Remove unused stuff from session.h (Rodolfo García Peñas (kix) <kix@kix.es>) - More (un)maximize tweaks. - Support _NET_FRAME_EXTENTS. (Iain Patterson <wm@iain.cx>) - Remove unused argument from init_wdefaults() - Remove unused argument from wDefaultGetIconFile() - Remove unused argument from wDefaultFillAttributes() - wDefaultGetImage splitted - Remove dup code from getWindowMakerIconImage() (Rodolfo García Peñas (kix) <kix@kix.es>) - Remove dependency to CPP: Moving parser functions to a dedicated file - Remove dependency to CPP: create structure to keep info of file being parsed - Remove dependency to CPP: merged 'getLine' and 'separateline' into a single function call - Remove dependency to CPP: add function to report problems while parsing - Remove dependency to CPP: new parser that handles comments - Remove dependency to CPP: support for #include directive - Remove dependency to CPP: support for #define macros - Remove dependency to CPP: added pre-defined macros - Remove dependency to CPP: add support for conditional directives - Remove dependency to CPP: removed stuff related to CPP calls (Christophe CURIS <christophe.curis@free.fr>) - WPrefs: XKeycodeToKeysym deprecated function - switchpanel.c code clean - New function create_default_icon - switchpanel default icon removed - Better icon scale (Rodolfo García Peñas (kix) <kix@kix.es>) - Added some comments and spaces in Git's ignore file - Small cleanup in Git's ignore file - Fixed wrong re-generation of 'config-paths.h' file (Christophe CURIS <christophe.curis@free.fr>) - Removed WScreen argument in wIconValidateIconSize - Removed scaleDownIfNeeded function (dup code) - get_wwindow_image_from_x11 icon resize - Format string bug in WMenuParserError - noDefault changed to default_icon - Remove dup code in wAppIconCreateForDock (Rodolfo García Peñas (kix) <kix@kix.es>) - Fixed warning in Debian's wrapper script for wmaker - Menu parser: fix possible infinite loop when loading menu file - Menu parser: added boundary checks in the path-gen for #include file search - Menu parser: remove d-quotes around title of entry (Christophe CURIS <christophe.curis@free.fr>) - menuparser.c code clean (Rodolfo García Peñas (kix) <kix@kix.es>) - Allow windows to specify their own depth. - _NET_FRAME_EXTENTS fixes. - Draw window borders with correct colormap. - Fixed invalid argument to popen in readMenuPipe(). (Iain Patterson <wm@iain.cx>) - Debian 0.95.3-20120909-1 version (Rodolfo García Peñas (kix) <kix@kix.es>) - Remove _NET_FRAME_EXTENTS on shutdown. (Iain Patterson <wm@iain.cx>) - Code style cleanup in framewin.c - Coding style cleanup in dock.c - Removed block in restore_icon_state - Icon: Replace code by call to helper function in wIconCreateWithIconFile - wIconCreate: get the icon file name first - Remove call to wIconUpdate() from wAppIconCreate() - wAppIconCreateForDockm, changed variable WAppIcon name - wIcon* functions renamed - Icon: Make icon_create_for_* be more similar - New helper function remove_wwindowstate() - wmcore code clean - wcore set vmask in one step - Icon creation in only one function (Rodolfo García Peñas (kix) <kix@kix.es>) - Fixed crash when changing icon to non-existent file - Fixed possible null pointer dereference - Fixed incorrect attributes for XCreateWindow's attributes (Christophe CURIS <christophe.curis@free.fr>) - Revert "Fixed incorrect attributes for XCreateWindow's attributes" (Carlos R. Mafra <crmafra@gmail.com>) - Make debug statement print function name - wNETWMShowingDesktop is now static - wNETWMCheckInitialClientState is now void - Code not needed at wWindowSetupInitialAttributes - wNETWMCheckClientHints should be void - wNETWMCheckClientHintChange should be void - wmspec code clean - style - get_pixmap_icon_from_user_icon extra argument removed - get_pixmap_icon_from_wm_hints removed extra arguments - New icon_update_pixmap helper function - declare get_pixmap_icon_from_* as static functions - New helper function get_default_image - Better default icon management - Function makeIcon removed - New helper function get_pixmap_icon_from_default_icon - Changed get_default_icon_rimage function name - remove_wwindowstate name changed - Debian configuration file error (Rodolfo García Peñas (kix) <kix@kix.es>) - Partially support _NET_WM_STRUT_PARTIAL. - AppIcon helper functions. - Brief documentation on wAppIconFor() and wWindowFor(). - Allow struts from all windows. (Iain Patterson <wm@iain.cx>) - Removed dup code at get_default_image - wIconChangeImageFile don't update without file - wIconChangeImageFile removed dup code - wIconChangeImageFile change image only if found - CachedPixmaps added as pixmap folder - getSize returns XGetGeometry exit - get_pixmap_icon_from_wm_hints uses getSize - get_pixmap_icon_from_wm_hints rewritten - New helper function unset_icon_image() - Split get_pixmap_icon_from_default_icon() into two - Split get_pixmap_icon_from_user_icon() into two - Split get_pixmap_icon_from_wm_hints() into two - New functions get_*_icon_from_x11 - Make get_wwindow_image_from_x11() take Window as argument - get_pixmap_icon_from_icon_win rewritten - Solved bug if icon doesn't exists - Split get_pixmap_icon_from_icon_win() - wIconUpdate create rimage and then pixmap - New function update_icon_pixmap - wIconSetHighlited: Do not create the icon again - appearanceObserver doesn't create icon again (Rodolfo García Peñas (kix) <kix@kix.es>) - Maximized windows appear misplaced (Iain Patterson <wm@iain.cx>) - wDockAttachIcon icon_editing is common in if else - get_default_icon_filename rewritten - wDefaultGetImage renamed to get_icon_image - get_default_image_path unused argument - wDockAttachIcon paint argument - wAppIconPaint paint argument - force_paint removed - Update icon images before calling wIconUpdate - wAppIconPaint argument removed - Window comments cleanup (Rodolfo García Peñas (kix) <kix@kix.es>) - Fixed out of source dir build (BALATON Zoltan <balaton@eik.bme.hu>) - Remove last QUIET hack from Makefiles - WPrefs: Remove pointless 'this is annoying' warning (Carlos R. Mafra <crmafra@gmail.com>) - WPrefs: Update translations - WPrefs: Move around some options between pages (BALATON Zoltan <balaton@eik.bme.hu>) - appicon: Avoid double 'Hide' entry (Carlos R. Mafra <crmafra@gmail.com>) - Added reset of pointer after memory free to avoid double-free crash (Christophe CURIS <christophe.curis@free.fr>) - Remove dup set icon file to NULL - get_wwindow_image_from_wmhints scale image - wIconValidateIconSize checks the width and height - get_default_image resize image - wIconUpdate removed scr variable (Rodolfo García Peñas (kix) <kix@kix.es>) - Changed handling of quoted strings in the menu parser for consistency - Fixed wrong count to release temporary memory (Christophe CURIS <christophe.curis@free.fr>) - WPrefs: More moving around of options and tweaks to layout (BALATON Zoltan <balaton@eik.bme.hu>) - Added option to 'configure' to control debug information for compilation (Christophe CURIS <christophe.curis@free.fr>) - Prevent windows from drifting on restart. - Fixed regression when placing windows. - Prevent border drifting. (Iain Patterson <wm@iain.cx>) - Made highlighting the AppIcon of the active app configurable at run time - WPrefs: Fixed handling of options which default to true (BALATON Zoltan <balaton@eik.bme.hu>) - wIconUpdate image preselected - update_icon_pixmap don't paint dock icon - wIconUpdate wwin checks - wIconChangeImageFile set the file image - get_rimage_icon_from_wm_hints returns image - applySettings icon set updated (Rodolfo García Peñas (kix) <kix@kix.es>) - Moved parameters of WPrefs's expert check-buttons to a single place (Christophe CURIS <christophe.curis@free.fr>) - create_stdcmap is never used - window.c clean code 1 - stacking.h removed white lines (Rodolfo García Peñas (kix) <kix@kix.es>) - Makefile: Add forgotten .h files (John H. Robinson, IV <jaqque@sbih.org>) - Fix Maximize/Unmaximize in window menu (Amadeusz Sławiński <amade@asmblr.net>) - Added option to ignore minimized windows during cycling. (Martin Frydl <mfrydl@gmail.com>) - Avoid crash on icon move without command - winspector.c: Full clean patch - winspector: Don't use text input if NULL - winspector: Save iconpath if icon will be used - Avoid icon change to default on winspector save (Rodolfo García Peñas (kix) <kix@kix.es>) - Revert "Prevent border drifting." - Revert "Fixed regression when placing windows." - Revert "Prevent windows from drifting on restart." - Revert "Maximized windows appear misplaced" - WINGs: Enable cursor blinking in text fields (Carlos R. Mafra <crmafra@gmail.com>) - Debian changes for final 0.95.4 (Rodolfo García Peñas (kix) <kix@kix.es>) - Fix build with automake-1.13 and modernize .am files. (Kamil Rytarowski <krytarowski@gmail.com>) - Window Maker 0.95.4 (Carlos R. Mafra <crmafra@gmail.com>) Changes since version 0.95.2: ............................. - debian: New debian version 0.95.2 (Rodolfo García Peñas (kix) <kix@kix.es>) - Don't shrink icons in switchpanel. (Iain Patterson <wm@iain.cx>) - 'Make install' now installs all man pages: - Cleanup German plmenu entries - Stop using old /usr/X11R6 directory (Kamil Rytarowski <n54@gmx.com>) - debian: Added the debian revision to changelog (Rodolfo García Peñas (kix) <kix@kix.es>) - WINGs: Do not call exit() (Carlos R. Mafra <crmafra@gmail.com>) - utils: Include the SHEXEC in the wm-oldmenu2new script (Rodolfo García Peñas (kix) <kix@kix.es>) - Change behaviour of the GNUstep dockapp (Kamil Rytarowski <n54@gmx.com>) - Remove wShowGNUstepPanel() etc - Small update on wmgenmenu list of apps (Carlos R. Mafra <crmafra@gmail.com>) - wmgenmenu: Add Portuguese translation (Leandro Vital <leandro.vital@yahoo.com.br>) - Enable toggling of AppIcons bouncing (Giuseppe Gatta <tails92@gmail.com>) - debian: Remove /etc/X11/WindowMaker folder (Rodolfo García Peñas (kix) <kix@kix.es>) - Remove commented out code (Carlos R. Mafra <crmafra@gmail.com>) - WindowMaker: Spanish translation updated (Rodolfo García Peñas (kix) <kix@kix.es>) - Add wmlib folder back - wmgenmenu: Fix name for FSViewer (Carlos R. Mafra <crmafra@gmail.com>) - Options for limiting window/menu title height (Alexey I. Froloff <raorn@altlinux.org>) - Coding style cleanups - debian: Small updates in menus etc - Fix technical drawing+opaque resize - Coding style cleanup in wmspec.c - Little simplification in makeIcon() - WindowMaker: New get_wwindow_image_from_x11 function (Rodolfo García Peñas (kix) <kix@kix.es>) - Japanese translation updated (Takeo Hashimoto <HashimotoTakeo@mac.com>) - WindowMaker: New function get_pixmap_icon_from_icon_win - WindowMaker: New function get_pixmap_icon_from_wm_hints - WindowMaker: New function get_pixmap_icon_from_user_icon - WindowMaker: icon.c goto removed - WindowMaker: icon.c comments added - Coding-style cleanup (Rodolfo García Peñas (kix) <kix@kix.es>) - wmgenmenu: Add more apps to our nice menu (Christoph Soehngen <Blackstar86@gmx.net>) - canReceiveFocus() should check no_focusable first (Rodolfo García Peñas (kix) <kix@kix.es>) - Allow relaunch with shortcut key. - Also allow relaunching from the window menu. - Also allow relaunching from appicon. - Also relaunch from appicon with Ctrl + DblClick. - Compiler food. - Describe relaunching in the NEWS file. (Iain Patterson <wm@iain.cx>) - Remove unused functions - Turn wApplication{Activate,Deactivate} into real functions (Rodolfo García Peñas (kix) <kix@kix.es>) - Style consistency. - Compiler diet. - Use noreturn attribute in Exit() declaration. (Iain Patterson <wm@iain.cx>) - WindowMaker: appicon.h clean code - WindowMaker: Clean curly brackets - WindowMaker: New function wGetWorkspaceNumber - WindowMaker: Check iconPath variable only if needed - WindowMaker: New function wIconCreateCore() - wIconStore(): do not save the icon if it exists - WindowMaker: Header files clean code - WindowMaker: New get_texture_image function (Rodolfo García Peñas (kix) <kix@kix.es>) - Fixed wrong structure declaration (Christophe CURIS <christophe.curis@free.nospam.fr>) - Fix wrong wfree() use - Revert "Inotify: Reload keyboard shortcut definitions when configuration changes" (Carlos R. Mafra <crmafra@gmail.com>) - Avoid GNUism in Makefiles for *BSD support - Include assert.h to avoid linker issues if -DDEBUG was not supplied. - Adjust OpenBSD-specific code to match OpenBSD-current (Tobias Stoeckmann <tobias@openbsd.org>) - Scare people away from --enable-xrandr (Carlos R. Mafra <crmafra@gmail.com>) - Fixed some typos. - Use proper (w)free functions for (w)malloced data. - Fixed memory leak in wHideAll. - Avoid memory leak on error path in constructMenu. (Tobias Stoeckmann <tobias@openbsd.org>) - More intuitive maximization handling. (Iain Patterson <wm@iain.cx>) - No need to call memset after wmalloc - Get rid of NEW definition. - Removed unused "buffer" variables. - Easier error path in wDockTrackWindowLaunch. - wstrdup cannot fail, therefore no need to check for NULL. - Easier code path in appIconMouseDown - Remove curly brackets - Avoid buffer overrun in parseMenuCommand. (Tobias Stoeckmann <tobias@openbsd.org>) - Fixed memory leak in wWorkspaceRename. (Tobias Stoeckmann <tobias@picolo.pizza.local>) - Don't fail with assert() in string functions if both strings are NULL. - Major overhaul of rootmenu's file handling. (Tobias Stoeckmann <tobias@openbsd.org>) - Fixed typos (Tobias Stoeckmann <tobias@picolo.pizza.local>) - Window Maker 0.95.3 (Carlos R. Mafra <crmafra@gmail.com>) Changes since version 0.95.1: ............................. - debian: New debian version 0.95.1-1 (Rodolfo García Peñas (kix) <kix@kix.es>) - WINGs: Rename copy_file() to wcopy_file() - Remove forgotten src/text.h (Carlos R. Mafra <crmafra@gmail.com>) - debian: Symbols update for libWutil2 (Rodolfo García Peñas (kix) <kix@kix.es>) - Revert "getstyle: Remove dead code" - Fix getstyle, again (Carlos R. Mafra <crmafra@gmail.com>) - debian: Don't include files created under debian/ from previous builds in the tarball. (Martin Dietze <mdietze@gmail.com>) - Made ARROWLESS_KBD a preference. (Iain Patterson <wm@iain.cx>) - Remove dead code ifdef'ed by GRADIENT_CLIP_ARROW - dock: Trivial code style cleanups - clip: Do not display balloon with workspace name (Carlos R. Mafra <crmafra@gmail.com>) - WindowMaker: Add Balloon to the clip - menu: remove OpenWorkspaceMenu() (Rodolfo García Peñas (kix) <kix@kix.es>) - wmgenmenu: Update mrxvt options - dock: Make some functions static - Window Maker 0.95.2 (Carlos R. Mafra <crmafra@gmail.com>) Changes since version 0.95.0-crm: ................................. - Update email address (Xose Vazquez Perez <xose.vazquez@gmail.com>) - Debian: New version 0.95.0-1 - WINGs: removed prev_y variable not used - WindowMaker: icon DefaultAppIcon.tiff removed - debian: symbols updated to 0.95.0 - util: po files reports warning with fuzzy (Rodolfo García Peñas (kix) <kix@kix.es>) - Add WMRootMenu to the clean list (Rodolfo kix Garcia <kix@kix.es>) - configure: New architectures kfreebsd* and Hurd (Rodolfo García Peñas (kix) <kix@kix.es>) - WPrefs: Fetch default menu from system path (Rodolfo Garc??a Pe??as (kix) <kix@kix.es>) - Prevent removal of dock icons due to resolution changes (David Couzelis <drcouzelis@gmail.com>) - Expand the documentation about writing patches - Steal documentation with tips on email clients - getstyle: Fix output to stdout - getstyle: Save theme pack in Themes dir - wmgenmenu: Fix "Save Theme" - WINGs: Make fetchFile() more similar to copyFile() from getstyle.c - WINGs: Add copy_file() to libWUtil - WINGs: Replace fetchFile() by copy_file() in wcolorpanel.c - getstyle: Use new copy_file() from libWUtil and delete copyFile() - getstyle: Get rid of abortar() - getstyle: Remove dead code (Carlos R. Mafra <crmafra@gmail.com>) - wrlib: Improvement in the alpha channel support. (Christophe CURIS <christophe.curis@free.nospam.fr>) - configure: Also display the library dir in the summary - Fix non-ascii workspace rename via menu - wtext killing spree (Carlos R. Mafra <crmafra@gmail.com>) - Remove endian swap for icon image data. (GhostlyDeath <ghostlydeath@gmail.com>) - Get rid of cropline(), use wtrimspace() instead - WPrefs: Remove trimstr() and use wtrimspace() from WINGs (Carlos R. Mafra <crmafra@gmail.com>) - WINGs: Remove proplist-compat.h - WPrefs: Remove duplicated function captureShortcut() - WPrefs: Remove extra include of src/wconfig.h (Rodolfo García Peñas (kix) <kix@kix.es>) - Inotify: Use wwarning() instead of fprintf() - Inotify: Reload keyboard shortcut definitions when configuration changes - Info panel: Shorten memory line and simplify code a bit - event.c: Make two functions static (Carlos R. Mafra <crmafra@gmail.com>) - Remove unused variables - Make ProgName a local variable (Rodolfo García Peñas (kix) <kix@kix.es>) - Window Maker 0.95.1 (Carlos R. Mafra <crmafra@gmail.com>) Changes since version 0.94.0-crm: ................................. - Small fix for wmaker nightly build script (Martin Dietze <di@fh-wedel.de>) - Remove VIRTUAL_DESKTOP code (Carlos R. Mafra <crmafra@gmail.com>) - Small fix for wmaker nightly build script 2 (Martin Dietze <di@fh-wedel.de>) - Remove mkpatch script - Add a few instructions to the WPrefs.app/po/README (Carlos R. Mafra <crmafra@gmail.com>) - Turn anti-aliasing on by default. (Alexey I. Froloff <raorn@altlinux.org>) - Add new style - Re-create German translation file - Add new German translated strings - Regenerate WPrefs German translation file - Add new WPrefs German strings (Carlos R. Mafra <crmafra@gmail.com>) - Changed runtime dependency libjpeg62-dev to libjpeg-dev (Martin Dietze <herbert@spamcop.net>) - Remove old backward compatibility code - Remove unused stuff from src/defaults.c - Remove HEARTBEAT #ifdef's - wmgenmenu: A Window Maker menu generator (Carlos R. Mafra <crmafra@gmail.com>) - Removed unused version of RScaleImage() in wrlib/scale.c (Nicolas Bonifas <nicolas.bonifas@free.fr>) - Patch for WINGs buffer overflow (Martin Frydl <mfrydl@gmail.com>) - Add a trailing "/" to dirs in dialog autocomplete (Johann Haarhoff <johann@haarhoff.org.za>) - Remove ancient 'DBase 3' data file - Remove references to non-gpl artwork license - Convert README.pt to UTF-8 - Delete reference to non-gpl license in README.pt - Remove COPYING.OPL - Remove reference to sound support from README.* (Carlos R. Mafra <crmafra@gmail.com>) - CTRL+Wheel Horizontal Resize + extras - Make CTRL+Wheel less intrusive - Add info about Resize, Maximus and LR Maximize to NEWS (Johann Haarhoff <johann@haarhoff.org.za>) - Add more info to the NEWS file etc (Carlos R. Mafra <crmafra@gmail.com>) - Unused wsmap, begone! (Tamas TEVESZ <ice@extreme.hu>) - wmgenmenu: Add 'mc' to file managers list (Tamas TEVESZ <ice@wormhole.hu>) - Remove NEWAPPICON #ifdefs - Maximus: Simplify the +/- border width madness - Fix typos, remove commented out code etc (Carlos R. Mafra <crmafra@gmail.com>) - Add a new helper function, WMMkDirHier() - simplify WMWritePropListToFile() (Tamas TEVESZ <ice@extreme.hu>) - Remove redundant 'if defined' check - Cleanup includes of wcore.h, defaults.h and pixmap.h (Carlos R. Mafra <crmafra@gmail.com>) - Kill redundant function (Tamas TEVESZ <ice@extreme.hu>) - Constify the argument of wstrdup() - Constify WMMatchDataProc and fix fallout (Carlos R. Mafra <crmafra@gmail.com>) - Remove unused WINGs/international.c - Fold many functions into one - make wtrimspace() use internal api - Remove unreferenced files (Tamas TEVESZ <ice@extreme.hu>) - Remove DEBUG statements, #if 0 etc - Maximus: Cleanup the code (Carlos R. Mafra <crmafra@gmail.com>) - Remove unneeded files - Remove long-dead plugins. (Tamas TEVESZ <ice@extreme.hu>) - Nightly build script with more robust handling of debian patches. (Martin Dietze <herbert@spamcop.net>) - Some rework on getstyle - Feet protector for getstyle - Collect low-hanging fruits - Sensible defaults - Idle fixes - Make inotify optional (Tamas TEVESZ <ice@extreme.hu>) - rebase in git pull for nightly build (Martin Dietze <herbert@spamcop.net>) - Trivial format string fixes - Remove texture plugins (Tamas TEVESZ <ice@extreme.hu>) - Remove python support from WINGs (Carlos R. Mafra <crmafra@gmail.com>) - Introduce OS-dependent stuff - Add the BSD version of GetCommandForPid() - GetCommandForPid() for darwin/osx - Remove some dead weight from configure.ac and debian/rules - Remove wmlib - Half-assed fix to make autoconf bend - Remove network support from WINGs (Tamas TEVESZ <ice@extreme.hu>) - Fix non-I18N build (Renato Botelho <rbgarga@gmail.com>) - Remove looking for libxpg4 on FreeBSD - Remove old unused Red Hat-specific configure checks - Remove dead code from wrlib - Add Cygwin to GCFB() (it is just like linux) - Switch file ops to stdio (Tamas TEVESZ <ice@extreme.hu>) - Remove GRADIENT_CLIP_ARROWS from wconfig.h.in - Remove uncompiled code from src/window.c - Use 'long' instead of 'CARD32' in wClientSetState() and wWindowSaveState() (Carlos R. Mafra <crmafra@gmail.com>) - Fix png 1.4+ builds - An XLFD has exactly 15 fields, not "at least" 15 fields. - Make asm code readable - Style stuff up - Autoconf mods - Spice up setstyle - Convert to getopt, continued - Attach utils versions to WM version - Tidy comms between external apps and wm a bit - Kill leftovers - Poke wmgenmenu - Poke wmgenmenu, part 2 (Tamas TEVESZ <ice@extreme.hu>) - Regenerate wmgenmenu German translation (Carlos R. Mafra <crmafra@gmail.com>) - Poke wmgenmenu some more (Tamas TEVESZ <ice@extreme.hu>) - wmgenmenu: Change the app order in terminals list (Carlos R. Mafra <crmafra@gmail.com>) - Add new cycling option - Make WPrefs' Expert panel scrollable - Fix spacing on WPrefs Misc panel (Tamas TEVESZ <ice@extreme.hu>) - Menu positioning bug (Brad Jorsch <anomie@users.sourceforge.net>) - Tidy (Tamas TEVESZ <ice@extreme.hu>) - Use int instead of size_t to silence warning - Do not skip windows in the switchpanel - Rename wmaker INSTALL file - Remove install-sh, missing and mkinstalldirs from the repo (Carlos R. Mafra <crmafra@gmail.com>) - Fix out-of-tree builds (Tamas TEVESZ <ice@extreme.hu>) - Fix trivial warnings - Fix internationalized format string warnings (Brad Jorsch <anomie@users.sourceforge.net>) - Fix PO files breaking build (Tamas TEVESZ <ice@extreme.hu>) - XShapeEvent strict aliasing violation - Fix uninitialized vars (Brad Jorsch <anomie@users.sourceforge.net>) - Plug leak (Tamas TEVESZ <ice@extreme.hu>) - Fix enable-modelock warnings (Brad Jorsch <anomie@users.sourceforge.net>) - Fix Debian builds - Fix CRLF files - Kill contribs (Tamas TEVESZ <ice@extreme.hu>) - Rename INSTALL.pt - Fix "make dist" - Ignore build files - Remove apparently-unused files (Brad Jorsch <anomie@users.sourceforge.net>) - Fix 'make install' from silent compilation (Carlos R. Mafra <crmafra@gmail.com>) - Fix loading saved states on 64-bit systems (Brad Jorsch <anomie@users.sourceforge.net>) - Add nice labels to wmgenmenu (Tamas TEVESZ <ice@extreme.hu>) - Add more pretty names for wmgenmenu apps (Carlos R. Mafra <crmafra@gmail.com>) - Add i18n labels to wmgenmenu - Add missing initializers (Tamas TEVESZ <ice@extreme.hu>) - Address some sparse warnings - Remove unneeded extern's in .c files - Add include guards - Remove NEWSTUFF #ifdef's (Carlos R. Mafra <crmafra@gmail.com>) - Fix mouse button grab swallowing - Don't grab Ctrl+Wheel if ResizeIncrement is 0 - Fix wheel resizing with resize increments (Brad Jorsch <anomie@users.sourceforge.net>) - wrlib: Use snprintf() instead of sprintf() (Tamas TEVESZ <ice@extreme.hu>) - link libWINGs against libWUtil - link libWINGs against libwraster - link libWINGs against libXft - link libWINGs against libfontconfig - link libWINGs against libm if necessary - floppy mountpoint is /media/floppy - Fix duplicate entry in manpage. - line wrap build-depends for enhanced readability. - Add libxmu-dev to build-depends. - Add ${misc:Depends} to all package dependencies. - Move homepage from description text to homepage field. - Invoke ./configure with correct --build argument. - Use dh_prep instead of "dh_clean -k" - Use ${binary:Version} instead of ${Source-Version} - Remove ./libtool on clean - remove cruft from debian/rules - patch management with dpkg-source v3 - do not run complete debian build under fakeroot - remove dead outdated code from debian/rules - Use static debian/libwings-dev.files. - Use static debian/libwraster*.files. - stop removing debian/files manually - Drop code for generating debian/conffiles - Use dh_lintian. - Invoke dh_installman only once. - Invoke dh_link only once. - Generate symlink with dh_link instead of ln -s - Remove unneeded directory creation - Drop dead code from debian rules - Ship libWUtils and libWINGs in dedicated packages - invoke dh_installdeb after dh_makeshlibs - Escape minus sign ("-") in manpages. - Typo fixes - update debian/changelog. - Use automake instead of automake1.4. - Add some bug closers - SelectWindowsMouseButton -> MouseLeftButtonAction (Andreas Metzler <ametzler@downhill.at.eu.org>) - Made Debian autobuild work again (Martin Dietze <herbert@spamcop.net>) - Add Russian manpages (NIR Ginko <faust@gmx.com>) - Correct .TH header (Andreas Metzler <ametzler@downhill.at.eu.org>) - Make wmaker XRandR aware (Carlos R. Mafra <crmafra@gmail.com>) - Fix build failure on missing randr (Andreas Metzler <ametzler@downhill.at.eu.org>) - Add /usr/local/share/WindowMaker dir to wmgenmenu - Avoid more gcc warnings - configure: Use AS_HELP_STRING macro to print messages - configure: Replace obsolete macros - configure: Remove gcc warning about signed x unsigned - configure: Remove --disable-verbose-compile hack - WINGs: Remove private snprintf() implementation (Carlos R. Mafra <crmafra@gmail.com>) - Build Debian packages with RandR support - Pass tarname argument to AC_INIT - Set library version in configure.ac - Import ld-version-script.m4 from gnulib - Add version script versioning for libwraster - Move debugging symbols to new wmaker-dbg package (Andreas Metzler <ametzler@downhill.at.eu.org>) - Raise shaded window frame when unhiding - Luxi Sans doesn't have cyrillic - Menu translation support - Add key binding to minimize all windows (Alexey I. Froloff <raorn@altlinux.org>) - WPrefs: Add MinimizeAllKey shortcut configuration (Carlos R. Mafra <crmafra@gmail.com>) - Open window menu on right-click in window list menu - New titlebar button style - Bouncing appicon effect - Highlite current window's appicon (Alexey I. Froloff <raorn@altlinux.org>) - wconfig: Define BOUNCE_APP and NEWAPPICON (Carlos R. Mafra <crmafra@gmail.com>) - Option to disable clip title (Alexey I. Froloff <raorn@altlinux.org>) - WPrefs: Add ShowClipTitle config option (Carlos R. Mafra <crmafra@gmail.com>) - Improve dockapp recognition - Automake dependency tracking - Make bouncing respect DisableAnimations - Fix bounce direction of docked appicons (Brad Jorsch <anomie@users.sourceforge.net>) - Drop BOUNCE_APP #ifdef's (Alexey I. Froloff <raorn@altlinux.org>) - Periodic bouncing for XUrgencyHint - Add a preference for XUrgencyHint bouncing - Option to raise bouncing appicons (Brad Jorsch <anomie@users.sourceforge.net>) - configure: Disable XRandR by default (Carlos R. Mafra <crmafra@gmail.com>) - Prevent a WPrefs segfault - CommitStackingForWindow prototype - Remove local strcasecmp implementation (Tamas TEVESZ <ice@extreme.hu>) - Fix compilation with LDFLAGS=-Wl,--no-add-needed (Brad Jorsch <anomie@users.sourceforge.net>) - WPrefs: Replace Netscape and Acrobat Reader menu entries (Carlos R. Mafra <crmafra@gmail.com>) - Fix typo in wApplicationExtractDirPackIcon() (Tamas TEVESZ <ice@extreme.hu>) - XRandR temporary amendments (Carlos R. Mafra <crmafra@gmail.com>) - Fix --with-gnustepdir - Documentation cleanups for --with-gnustepdir (Brad Jorsch <anomie@users.sourceforge.net>) - Pretty-print for string2index - Repair TEST_WITH_GC - Kill BENCH - Ungeneralize wrlib DEBUG - Kill wstrerror - Reduce noise in WUtil - Fix some off-by-ones - Remove obsolete --with-xft from debian/rules (Tamas TEVESZ <ice@extreme.hu>) - configure: Do not warn about unused parameters - Remove assembly/optimized code (Carlos R. Mafra <crmafra@gmail.com>) - WINGs: Make wmalloc() intialize allocated memory to 0 - WINGs: Return NULL on NULL input in checkFile() - WINGs: Simplify WMPathForResourceOfType() - WINGs: Add normalizePath() - WINGs: Simplify and rationalize createDir() and deleteFile() - WINGs: Small assorted formatting changes - WINGs: Add detection and local copy for strlcat()/strlcpy() - WINGs: Less ad-hoc approach for __wmessage() - Repair defaults for new titlebar button style (Tamas TEVESZ <ice@extreme.hu>) - Use -lbsd for strlcat/strlcpy, if needed and available - Clean up library linking (Brad Jorsch <anomie@users.sourceforge.net>) - Add function declaration for wIconSetHighlited - Build-Depend on automake 1.11 or later. - Do not mark product names as translatable - Fix typo enviroment - Document ABI and API changes (Andreas Metzler <ametzler@downhill.at.eu.org>) - More precise information on unknown systems - Remove wsyserrorwithcode, rename wsyserror to werror - Preparing to do exactly as FIXME says - WINGs: Make w*() print message origins - Fix some double newlines - WINGs: Plug potential segfault - WINGs: Do not look static information up every time - WINGs: Remove wruler and wtext - Repair wgethomedir(), broken a little while back (Tamas TEVESZ <ice@extreme.hu>) - Rename libwutil1 to libwutil2 (Andreas Metzler <ametzler@downhill.at.eu.org>) - Ignore shared_appicon if an appicon already exists (Brad Jorsch <anomie@users.sourceforge.net>) - WINGs: Dead code removal - WINGs: Remove wprogressindicator and tree - WINGs: Reorg headers to mark items' locations in source files - WPrefs: Remove dead code - WINGs: Modernize wusleep() - WINGs: Remove #ifdef OLD_CODE - WINGs: Bounded string ops - Silence a few warnings - Add LCOV support to generate coverage information (Tamas TEVESZ <ice@extreme.hu>) - Fix "make dist" - Fix path substitutions (Brad Jorsch <anomie@users.sourceforge.net>) - Remove translations of INSTALL-WMAKER, README and FAQ.I18N (Carlos R. Mafra <crmafra@gmail.com>) - Fix wusleep (Brad Jorsch <anomie@users.sourceforge.net>) - Make OPEN_MENU be able to include PropList menus (Tamas TEVESZ <ice@extreme.hu>) - Minor fixes to appicon highlighting (Brad Jorsch <anomie@users.sourceforge.net>) - Document ABI/API changes (Andreas Metzler <ametzler@downhill.at.eu.org>) - Missed a piece in tree.c removal (Tamas TEVESZ <ice@extreme.hu>) - Fix stuck appicon from embedded apps (Brad Jorsch <anomie@users.sourceforge.net>) - WINGs: fts() -> nftw() in wrmdirhier() (Adam Hoka <adam.hoka@gmail.com>) - Cleanup .gitignore (Brad Jorsch <anomie@users.sourceforge.net>) - Add back WINGs/tree.c that was removed in c9d0c7c - WINGs: tree enhancements - Add wmmenugen, an extensible PropList-format menu generator - Update local copy of GPLv2 and FSF address in copyrights (Tamas TEVESZ <ice@extreme.hu>) - wmaker.inst: better locale check - wmaker.inst: quote shell variables (Alexey I. Froloff <raorn@altlinux.org>) - Fix some warnings - Fix handling of NET_WM_ICON - Fix wIconUpdate logic - Paint app icons when updated - Only cache pixmaps for docked icons (Brad Jorsch <anomie@users.sourceforge.net>) - wmmenugen: Finish Wmconfig parser, touch up PropList writer - wmmenugen: Add executable detection, make Wmconfig use it - wmmenugen: Add file name validator function - wmmenugen: Finish the XDG parser (Tamas TEVESZ <ice@extreme.hu>) - Reset bouncing app icon position when bounce ends (Brad Jorsch <anomie@users.sourceforge.net>) - WINGs: Add wshellquote() (Tamas TEVESZ <ice@extreme.hu>) - Don't save app settings proplist when nothing changed (Brad Jorsch <anomie@users.sourceforge.net>) - Simplify/fix pkgconfig installation - pkgconfig - minimize direct linking (Andreas Metzler <ametzler@downhill.at.eu.org>) - Fix pkgdatadir (Brad Jorsch <anomie@users.sourceforge.net>) - Update documentation of ABI/API changes again. (Andreas Metzler <ametzler@downhill.at.eu.org>) - Display modifiers in window menu (Brad Jorsch <anomie@users.sourceforge.net>) - Remove duplicated #includes (Andrea Gelmini <andrea.gelmini@gelma.net>) - wmgenmenu: Add more apps - WPrefs: Update po/Makefile.am to reflect file deletion - WPrefs: Update ballon text for "Window Focus Preferences" (Carlos R. Mafra <crmafra@gmail.com>) - wmgenmenu: Add French and Spanish translations (Camille d'Alméras <camilledalmeras@yahoo.com>) - switchpanel: Add skip_switchpanel advanced option (Haroldo Santos <haroldo.santos@gmail.com>) - Fix compilation in FreeBSD (Szabó Ambrus <szambusz@gmail.com>) - Adapt for libpng changes - Remove warnings (Tamas TEVESZ <ice@extreme.hu>) - Fix makefiles bug. - opaque resize - Bugfix: java menu problem after resize, maximize (Ambrus Szabo <donamo@donamo.hu>) - wmgenmenu: Add more apps - wmgenmenu: Update German translation (Christoph Soehngen <Blackstar86@gmx.net>) - Fix app behaviour on Xinerama displays - Amend recent wmgenmenu changes - Partial fix for focus stealing - Plug some (possible) memleaks (Tamas TEVESZ <ice@extreme.hu>) - Fix make-gzip (Carlos R. Mafra <crmafra@gmail.com>) - Added mailing list address in the parfect-patch file (Christophe CURIS <christophe.curis@free.nospam.fr>) - util: Fix wmagnify - Use wmgenmenu to create WMRootMenu during installation - Remove Netscape icon (Carlos R. Mafra <crmafra@gmail.com>) - Fix possible missing NUL at end of string (Christophe CURIS <christophe.curis@free.nospam.fr>) - Remove warning in wmagnify.c (correctly) - Fix some "'var' may be used uninitialized" warnings (Brad Jorsch <anomie@users.sourceforge.net>) - Increase width of 'Attributes' window - Make 'no miniaturizable' window property user-configurable - Increase height of 'Attributes' window (Carlos R. Mafra <crmafra@gmail.com>) - doc: Fix error in Russian wmaker.1x manpage (lintian error) - debian: lots of updates (Rodolfo García Peñas (kix) <kix@kix.es>) - Revert "WINGs: Remove wruler and wtext" - WINGs: Add back wprogressindicator.c (Carlos R. Mafra <crmafra@gmail.com>) - Debian full patch migration - debian: add back wmlib folder (Rodolfo García Peñas (kix) <kix@kix.es>) - debian: Version bump in nightly build script. (Martin Dietze <herbert@spamcop.net>) - debian: problem with spaces and forget autogenerated files (Rodolfo García Peñas (kix) <kix@kix.es>) - WindowMaker 0.95.0-crm (Carlos R. Mafra <crmafra@gmail.com>) Changes since version 0.93.0-crm: ................................. - Add GLOBAL_DEFAULTS_SUBDIR and fix a syntax error in wmlib/Makefile.am - Add two menu files from the Debian package - Add debianisation code and automatic build script (Martin Dietze <herbert@spamcop.net>) - Do not switch workspace to follow new windows in others - Fix NULL pointer dereference (Martin Dietze <di@fh-wedel.de>) - Adapted nightly build script to coexist with new 'next' branch. (Martin Dietze <herbert@spamcop.net>) - Add config option to supress focus requests across workspaces (Carlos R. Mafra <crmafra@gmail.com>) - Miscellaneous fixes from OpenSuse (Vladimir Nadvornik <nadvornik@suse.cz>) - Show app name in Kill Application dialog (Gilbert Ashley <amigo@ibiblio.org>) - Nightly Build script can now deal with testing and unstable branches. (Martin Dietze <herbert@spamcop.net>) - Make wmaker 0.11% smaller by avoiding code duplication - Define TITLEBAR_HEIGHT in default configuration file (Carlos R. Mafra <crmafra@gmail.com>) - Left Half / Right Half Maximize (Johann Haarhoff <johann@haarhoff.org.za>) - k&r->ansi some stuff (Tamas TEVESZ <ice@wormhole.hu>) - Trivial coding style changes - Increase the readability of wUnshadeWindow() and wShadeWindow() a little bit - Use half_scr_width instead of computing it each time (Carlos R. Mafra <crmafra@gmail.com>) - Fix half_scr_width calculation (klaasvakie <johann@haarhoff.org.za>) - Gobble "spurious" EnterNotify events when moving an appIcon or a dock (Daniel Déchelotte <yo.dan@free.fr>) - Clean up #ifdef mess (Tamas TEVESZ <ice@wormhole.hu>) - Fix for omnipresent AppIcon bug at startup (Daniel Déchelotte <yo.dan@free.fr>) - Maximus: Tiled Maximization - Clean up maximization and un-maximization logic (Carlos R. Mafra <crmafra@gmail.com>) - Add option to allow starting DockApps with a single click (Sebastien Bauer <seb_bauer@bigfoot.com>) - Add history to some dialog boxes (Alexey Voinov <voins@altlinux.ru>) - Atomic save for session - Remove alloca(3) (Alexey I. Froloff <raorn@altlinux.org>) - wmrlib: Avoid code duplication (Carlos R. Mafra <crmafra@gmail.com>) - Christmas does not last forever (Alexey Voinov <voins@altlinux.ru>) - Reduce the number of simultaneous inotify events (Carlos R. Mafra <crmafra@gmail.com>) - Fix session saving for apps with shared appicons (Alexey Voinov <voins@altlinux.ru>) - Fix compilation failure (Andreas Tscharner <andy@vis.ethz.ch>) - Fix miniwindows auto-arranging bug (BERTRAND Joel <joel.bertrand@systella.fr>) - Delete stale .cvsignore files - Ansify function declaration - Make left/right maximization work again (Carlos R. Mafra <crmafra@gmail.com>) - Maximizing a resized window (Nicolas Bonifas <nicolas.bonifas@free.fr>) - Remove bundled wrlib stuff (Tamas TEVESZ <ice@extreme.hu>) - Remove commented code in xinerama.c - Maximus: Use unsigned int for width/height variables - Un-maximize window inside current head (Nicolas Bonifas <nicolas.bonifas@free.fr>) - x86_64 mmx fixes (Alexey Voinov <voins@altlinux.ru>) - Fix the use of uinptr_t - Add Maximus key back in WPrefs.app (Carlos R. Mafra <crmafra@gmail.com>) - Constrain switching workspace name to one head. - Pad workspace name display. - Support Xinerama in wmsetbg. - Mac OS X-style window cycling. (Iain Patterson <wm@iain.cx>) - Trivial coding style fix - Fix the call to XChangeProperty() in 64-bit mode - Yet another trivial coding style cleanup (Carlos R. Mafra <crmafra@gmail.com>) - Fix race condition during workspace changes (Alexey I. Froloff <raorn@altlinux.org>) - Increase the readability of SlideWindow() - Simplify wMaximizeWindow() a little bit - Maximus: Consider the full_maximize window attribute (Carlos R. Mafra <crmafra@gmail.com>) - WINGs shared library generation (Alexey Voinov <voins@altlinux.ru>) - Fix --disable-verbose-compile - Maximus: Avoid a window list order issue - Maximus: Some cleanups and bug fixes - swpanel: Fix focus issue when alt-tabbing (Carlos R. Mafra <crmafra@gmail.com>) - Fix automatic Debian builds (Martin Dietze <di@fh-wedel.de>) - Ansify function declarations (Carlos R. Mafra <crmafra@gmail.com>) - Window Maker armenian translation (Norayr Chilignaryan <chnorik@gmail.com>) - Fix msgfmt error with Armenian translation. (Iain Patterson <wm@iain.cx>) - Updated documentation (John H. Robinson, IV <jhriv@sbih.org>) - Clean up contrib/ folder - Remove sound support - Remove SPEAKER_SOUND dead code - Remove 'ghost window move' code - Delete WINDOW_BIRTH_ZOOM and default to WINDOW_BIRTH_ZOOM2 - Remove 'hiding' parameter from animateResize() - Add function prototypes in action.h and include it in superfluous.c - Remove MINIATURIZE_ANIMATION_DELAY_{Z,F,T} tests - Increase granularity of 'shrink/zoom' animation - HOWTO: The perfect Window Maker patch (Carlos R. Mafra <crmafra@gmail.com>) - Mod+Wheel Window Resize (Johann Haarhoff <johann@haarhoff.org.za>) - A few trivial code style cleanups - Remove #ifdef NETWM_HINTS constructs - Remove repeated functions enclosed by #if 0 - WPrefs: trivial coding style fixes - Remove remaining sound stuff from WPrefs etc (Carlos R. Mafra <crmafra@gmail.com>) - Respect size hints when resizing with wheel. (Iain Patterson <wm@iain.cx>) - Mod+Wheel resize increment now respects size hints (Johann Haarhoff <johann@haarhoff.org.za>) - Remove #ifdef SYS_SIGLIST_DECLARED constructs - Remove SILLYNESS - Remove DEMATERIALIZE_ICON code (Carlos R. Mafra <crmafra@gmail.com>) - Fix the empty button in titlebar after going fullscreen bug (Debian bug #298873) (Nicolas Bonifas <nicolas.bonifas@free.fr>) - Update German translation (Carlos R. Mafra <crmafra@gmail.com>) - 2 open() statements were not matched with close() statements in function fetchFile - Remove useless NULL test (Nicolas Bonifas <nicolas.bonifas@free.fr>) - Remove unused function wWindowCheckAttributeSanity() - Remove unused functions from src/pixmap.c - Remove unused function wIconSetHighlited() - Remove unused wHackedUngrabButton() - Remove unused src/menureader.c file - Remove unused function getRImages() - Remove DRAWSTRING_PLUGIN reference from wconfig.h.in (Carlos R. Mafra <crmafra@gmail.com>) - activate XGrabServer again - fixed wrong env setup when setting background - changed behavior when focusing new windows with autofocus enabled (Ralf Hoffmann <ralf@boomerangsworld.de>) - Maximus: Take border into account (Nicolas Bonifas <nicolas.bonifas@free.fr>) - Remove unused function argument from randomPlaceWindow() - Remove static function declaration from header file - Remove unused arguments from a few functions (Carlos R. Mafra <crmafra@gmail.com>) - Add menu path to Debian build system (Nicolas Bonifas <nicolas.bonifas@free.fr>) - fixed problem with default visual ID for multi-screen setups by using multiple IDs for each screen (Ralf Hoffmann <ralf@boomerangsworld.de>) - Remove XSMP_ENABLED constructs - Remove unused function raiseMenus() - Do not change workspace during deiconify animation - Do not compile extra stuff under wrlib/tests etc - Undefine WINDOW_BIRTH_ZOOM (Carlos R. Mafra <crmafra@gmail.com>) - Keyboard shortcut to raise the dock (Brad Jorsch <anomie@users.sourceforge.net>) - Remove a few unneeded includes - Remove ICON_KABOOM_EXTRA - Remove [raise,lower]clip shortcut keys - wmaker-0.94.0-crm (Carlos R. Mafra <crmafra@gmail.com>) Changes since version 0.92.0+: .............................. - Add .gitignore to git repository - wmaker: Reduce wakeups to zero - WINGs/wfont.c: Avoid returning font=NULL in WMCreateFont() (Carlos R. Mafra <crmafra@ift.unesp.br>) - Workaround for Composite problems when default depth is not 24. (Paulo Cesar Pereira de Andrade <pcpa@mandriva.com.br>) - Fix periodic focus bug (Pedro Gimeno <parigalo@formauri.es>) - Use inotify to check for changes to the defaults database. Workaround for (Rodney Padgett <rod_padgett@hotmail.com>) - Makefile: Beautify compilation messages - automake: Fix warnings about underquoted calls to AC_DEFUN - wmaker: Fix compiler warnings about pointer <--> integer conversion - Fix buffer overflows in shortcut and workspace name handling - Compilation: Add a few spaces in the output - Fix gcc warnings - Trivial cleanup (Carlos R. Mafra <crmafra@gmail.com>) - Fix menu positioning bug (Samir SAADA <zepard@gmail.com>) - Sync comment with reality - avoid integer overflow (Tamas TEVESZ <ice@extreme.hu>) - Fix workspace limit segfault (Samir SAADA <zepard@gmail.com>) - Fix mixing pixels when maximizing borderless windows (David Benbennick <dbenbenn@gmail.com>) - xinerama switchpanel corruption fix (Iain Patterson <wm@iain.cx>) - Check for argc==0 when calling wtokensplit() (Tobias Stoeckmann <unknown-email>) - Remove unused StartLogShell function. (John H. Robinson, IV <jaqque@sbih.org>) - Fix buffer overflow in SendHelperMessage() (Tamas TEVESZ <ice@wormhole.hu>) - Remove prototype of unused function StartLogShell - Make compilation even less verbose - Remove unused variables - WPrefs: Remove unused function updateThemeList() - Fix improper use of function sentinel - real_main: Use setenv() instead of putenv() - real_main: Use setenv() instead of putenv() in remaining places - inotifyHandleEvents: Reduce buffer size to avoid huge memory consumption - handleKeyPress: Fix shadowing of global 'index' variable - WMCreateFont: Add missing wfree()'s - Fix variable shadowing - Make loop variable be unsigned int - Sanitize calling sites of wDefaultsCheckDomains() - Remove unsigned type from 'mask' - Clean up case switching in handleKeyPress() - Make drawIconProc() static - Change to the linux kernel coding style - Clean up StartWindozeCycle() - Clean up coding style in StartWindozeCycle() - Use helper function in StartWindozeCycle() - Escape key handling in switchpanel (Carlos R. Mafra <crmafra@gmail.com>) - Fix focus issues with the switch panel and auto-focus - Fix "smart" placement bug when there are shaded windows in other workspaces (Daniel Déchelotte <yo.dan@free.fr>) - Fix findBestIcon() - Less strict font requirements (Vladimir Nadvornik <nadvornik@suse.cz>) - Fix use of uninitialized variable (Carlos R. Mafra <crmafra@gmail.com>) - Remove useless tests (Daniel Déchelotte <yo.dan@free.fr>) - Fix multiple errors in findfile.c (Tobias Stoeckmann <tobias@openbsd.org>) - swpanel: Clean up StartWindozeCycle() a bit more - swpanel: Clean up "case ButtonRelease" - swpanel: Factor out if (swpanel) test - swpanel: Fix stacking issue with swpanel escape handling (Carlos R. Mafra <crmafra@gmail.com>) - swpanel: Start with the first window when all are minimized (Nicolas Bonifas <nicolas.bonifas@free.fr>) - WINGs: Fix memory leak in wtokenfree() (Tobias Stoeckmann <tobias@openbsd.org>) - WPrefs: Fix crash due to wtokenfree() memory leak fix (Pedro Martelletto <pedro@ambientworks.net>) - Fix function prototype declaration - Add spaces to gcc 'case' range extension - Remove LITE config option (Carlos R. Mafra <crmafra@gmail.com>) - swpanel: Consider also the release of FOCUSPREV (Alexey Voinov <voins@altlinux.ru>) - Fix format strings (Tamas TEVESZ <ice@wormhole.hu>) - Up the version number for the GIT version to 0.93.0-pre (Martin Dietze <herbert@spamcop.net>) Changes since version 0.92.0: ............................. - added check for --with-gnustepdir option to configure to verify that its argument is an absolute path - updated german translations (Torsten Marek <shlomme@gmx.net>) - fixed WPrefs.app to find its icons when not installed under GNUstep paths - fixed gcc-4 compilation issues (Vladimir Nadvornik <nadvornik@suse.cz>) - fixed amd64 compilation issues (Vladimir Nadvornik <nadvornik@suse.cz>) - eliminated gcc-4 compilation warnings - small fix for compilation in a different directory than the source (Balaton Zoltan <balaton@eik.bme.hu>) - fixed some warnings on 64bit platforms (Balaton Zoltan <balaton@eik.bme.hu>) - fixed issue with invisible modal windows from Qt and Gtk applications on 64bit platforms (Max Loparyev <max@city.veganet.ru>) - fixed issue with icon colors on big endian platforms (Max Loparyev <max@city.veganet.ru>) - release colors to avoid issues with the reference count overflowing a small integer and causing unexpected color releases that can crash Window Maker (Martin Frydl <martin.frydl@systinet.com>) - fixed a small memory leak in WINGs/wview.c caused by not releasing the background color of a view (Martin Frydl <martin.frydl@systinet.com>) - updated estonian translation (Ivar Smolin <okul@linux.ee>) - updated the XDND code in WINGs to work with GDK based applications. WINGs based applications should now work with both KDE and GNOME applications (Sylvain Reynal <sreynal@nerim.net>) - better check for the XDND protocol version when interoperating with other applications. As it seems xdnd version 3 (which WINGs supports) and newer are not backward compatible with xdnd version 1 and 2. This is why WINGs applications cannot interoperate with GNUstep applications (which uses xdnd version 2). Xdnd version 4 and 5 are backwards compatible with version 3 though. (Sylvain Reynal <sreynal@nerim.net>) - Improved Info panel layout and fonts. - Fixed missing library paths when linking some binaries on certain platforms with a recent pkg-config (debian unstable/sid for one) - Fixed buggy handling of UTF8 characters in textfields in WINGs. (Stanislav Maslovski <stanislav.maslovski@gmail.com>) - Fixed segfault in WPrefs when some font description is missing from the configuration file (Stanislav Maslovski <stanislav.maslovski@gmail.com>) - Removed WINGs' dependency on rgb.txt (from X11) and issues with locating it on the filesystem for different systems/distributions. - Fixed segfault when unhiding an application in certain conditions (seen with KDE applications with transient windows) Changes since version 0.91.0: ............................. - fixed crash with info panel and alt-tabbing - updated Japanese translations (Takeo Hashimoto <HashimotoTakeo@mac.com>) - allow disable of switch panel when SwitchPanelImages=None - added X Input Methods support in WINGs - fixed issues with compiling on Solaris with openwin - reduced minimum required version number for the Xft library to 2.1.0 - fixed some compilation issues with gcc-2.9x - removed --with-appsdir option and replaced it with --with-gnustepdir. Also, default installation path (for non GNUstep users) is now $(prefix)/bin - fixed bug with infinite loop in some circumstances in fitText() in WINGs - fixed to allow parallel builds on SMP systems using make -j - updated Italian translation (Marco Colombo <m.colombo@ed.ac.uk>) - applied .AppInfo --> Library path rename patch (Alex Perez <aperez@student.santarosa.edu>) - added code to automatically update the icon paths from the old .AppInfo style to the new Library/WindowMaker style in WMWindowAttributes when Window Maker starts to make transition transparent for users. - fixed issue with window being moved by 1 pixel up and left when the window move was initiated by the client - improved hide/unhide animation for applications with multiple windows (only animate the active window hiding/unhiding, which makes Window Maker faster and more responsive for such applications). This also makes the restart operation much faster. - fixed bug with windows shrinking to very small sizes when Unmaximize was used on them, after they were closed in a maximized state. - fixed bug with restoring maximized state from NetWM atoms. - fixed issue with GNUstep applications losing focus when all their windows are closed and there remains only their menu (Matt Rice <ratmice@yahoo.com>) - try fixed font for the technical drawing font if helvetica-12 is not available to avoid crashing (Timo Juhani Lindfors <timo.lindfors@iki.fi>) - new algorithm for placing miniwindows after unhiding the application they belong to, that works without auto-arranging the icons, while still avoiding multiple icons in the same spot by moving the miniwindows to a new slot if their old slot was occupied in the meantime. - double clicking an appicon will also raise the miniwindows that belong to that application to the front (along with the normal windows). Changes since version 0.90.0: ............................. - added _NET_WM_NAME, _NET_WM_ICON_NAME and _NET_WM_ICON to WINGs - new WPrefs icon (thanks to Largo) - replaced VirtualEdgeThickness option, with EnableVirtualDesktop (boolean) - enhanced alt-tab panel, added theming ability - fixed issues with broken crash dialog - removed obsoleted options from wconfig.h - changed animation delay constants to fix issues with 2.6.x linux kernels (patch provided by Eric Piel <Eric.Piel@lifl.fr>) - fixed several broken po files - increased libwraster version number to 3.1.0 (added a RCopyArea function) Changes since version 0.80.2: ............................. - Some updates to WINGs WMConnection. See WINGs/ChangeLog for details. - Fixed empty window list menu, if the window list menu was launched through the root menu (sent by "Marc-Christian Petersen" <m.c.p@wolk-project.de>) - Fixed dock's menu mapping position when dock is on the right side. - Map clip's menu so that it never gets out of screen on the left or the right. - Patch to add binary mode on opening files (needed for Windows with Cygwin) (sent by luke <luke@posh.optushome.com.au>) - Updated French translations (Antoine Hulin <antoine@origan.fdn.org>) - Removed Hermes lib dependency in wrlib - Put back asm/MMX code in wrlib - Updated Russian locale files ("Andrew W. Nosenko" <awn@bcs.zp.ua>) - API change in WINGs for WMDraw*String(). Details in WINGs/Changelog - Removed obsoleted acconfig.h and implemented its functionality using AC_DEFINE and AC_DEFINE_UNQUOTED as autoconf 2.5x recommends. This will definitely enforce the need to use autoconf 2.5x - Added Xft2 support to WINGs, for rendering antialiased fonts with transparency. Details in WINGs/ChangeLog. - Fixed problem with long, preset workspace names (Wanderlei Antonio Cavassin <cavassin@conectiva.com.br>) - Added kinput2 bug workaround to stock WMWindowAttributes (Seiichi SATO <sato@cvs-net.co.jp>) - Added Belarusian translation (Ihar Viarheichyk <iverg@mail.ru>) - Fixed wrlib not to load braindead images with 0 sized width or height - Removed double no-position-display when cycling position display types with Shift key while moving windows. - Changed the default position display while moving a window to 'Center'. - Better outline when drawing balloons. - Fixed wrlib to not accept too large images (fixes buffer overflow) - Patched FAQ (David Coe <davidc@debian.org>) - Fixed bug with resizebars appearing out of nothing when reloading configs - Fixed sloppy focus bug (Pawel S. Veselov <Pawel.Veselov@Sun.COM>) - Applied Xinerama patch (after fixes) from (Peter Zijlstra <a.p.zijlstra@chello.nl>) - Added switch to enable/disable antialiased fonts in WPrefs's Expert Settings panel. (Temporary until the Font Settings panel in WPrefs is finished). - Added a check that only %d is used in a font specification in WMGLOBAL and at most once for each font in a fontset (eliminates a possible security exploit) - Added fontpanel callback - Fixed focus handling for windows that set WM_HINTS.take_focus = False. - Fixed a problem in the stacking code which could lead to segmentation faults (Jeff Teunissen <deek@d2dc.net>) - Fixed a crashing bug in the menu code with modal panels involved. - Fixed incorrect focusing of application's windows after an unhide (sometimes the incorrect window got focus instead of the apps's last focused window) - Unshade application's shaded windows when Dbl-MiddleClick-ing its appicon. (this is to be consistent with deminiaturizing application's miniwindows which also happens in this case, since shading is a form of miniaturization) - Fixed bug with tpixmap from previous xinerama patch (reported by g0sh) - Fixed edge resistance and move/resize frame drawing for borderless windows - Fixed wrong display position for the move/resize widgets after xinerama patch (Peter Zijlstra <a.p.zijlstra@chello.nl>) - Fixed bug with cursor locked in drag mode after Alt-dragging a window - Added Catalan translation (Ernest Adrogu <eadrogue@gmx.net>) - Fixed a bug with deminiaturizing windows when the application is hidden and the miniaturized window is selected from the window list menu - Fixed a bug with not showing shaded window frames when the application is hidden and another window belonging to the app is selected in the window list menu - Autoarrange icons after unhiding an application that has miniaturized windows, else they may cover other icons which are now in the positions they have occupied before hiding - Fixed Clip's workspace menu mapping to be consistent with the others - Fixed bug in wmsetbg that caused scale and maxscale to both do maxscale (Alexey Voinov <voins@voins.program.ru>) - Fixed bug with scrolling menus introduced by the xinerama patch. - Fixed bug that could cause SIGSEGV by accessing beyond the end of text in a WINGs textfield widget. - Fixed small memory leak in WINGs' font panel code. - Fixed memory leak in WINGs' file panel code. - Updated Bulgarian translations (Anton Zinoviev <zinoviev@debian.org>) - Fixed a bug in WINGs' hashtable which free'd the wrong memory in the WMResetHashTable() function (possible source of SIGSEGVs) - Fixed 2 syntax errors in plmenu.zh_TW.Big5 (Mike FABIAN <mfabian@suse.de>) - Some .po file fixes (Mike FABIAN <mfabian@suse.de>) - Fixed the problem with the root menu code changing the locale setting as a side effect of loading a localized menu - Fixed e memory leak in the code that reads a localized root menu - Added support for generating pkgconfig files for WINGS, wmlib and wrlib. ("Marcelo E. Magallon" <mmagallo@debian.org>) - Support for multiline balloons (Vitaly Ovtchinnikov <ov@rbcmail.ru>) - Improved wsetfont (Mike FABIAN <mfabian@suse.de>) - Updated single-click contrib patch (steve lion <steve.lion@verizon.net> and vlaad) - Updated French translations (Antoine Hulin <antoine@origan.fdn.org>) - Xinerama support for Solaris - Added global menu support (see NEWS) - Fixed sloppy focus bug - Made maximize behave differently with keyboard/mouse for xinerama (Peter Zijlstra <a.p.zijlstra@chello.nl>) - A few leftover xinerama fixes (Peter Zijlstra <a.p.zijlstra@chello.nl>) - Extended the 'strut' to multiple heads (Peter Zijlstra <a.p.zijlstra@chello.nl>) - Icon placement now takes into account the new xinerama extended 'strut' (Peter Zijlstra <a.p.zijlstra@chello.nl>) - Icon arrangement that takes the new extended xinerama 'strut' into account (Peter Zijlstra <a.p.zijlstra@chello.nl>) - Fixed the 'KDE omnipresent' bug. - Fixed bug with focusing a deminiaturized window with sloppy focus mode - Fixed aspect of window list menu (window name was too close to workspace indicator) - Fixed menu panel in WPrefs.app. Explanatory text did not fit into the label - Implemented a better logic to preserve the window's old geometry when maximizing to support succesive maximizations in different directions without the need to do an intermediary un-maximize step (eliminates flicker) - Made keyboard/mouse maximization behavior consinstent relative to each other - Enhanced wmsetbg's man page with description for -b | --back-color (Marcelo E. Magallon <marcelo.magallon@bigfoot.com>) - Do not use the disabled clip color for the clip's workspace navigation arrows when the clip is collapsed (it made them look like disabled) - Fixed bug with incorrect un-escaping if there is a dot in wm_class. - Updated Catalan translations (Ernest Adrogue <eadrogue@gmx.net>) - Updated Spanish translation of WPrefs (Alberto Gimenez <algibe@teleline.es>) - Fixed synchronization problem between hair cursor and mouse cursor in wmagnify with mouse cursor at the screen edge (Jon Diercks <jon@diercks.net>) - Fixed 2 focus switching related bugs (Allan Peramaki <aperamak@cc.hut.fi>) - Fixed a bug that made the crash panel to be shown again and again when the 'Restart Window Maker' option was selected, under some circumstances. - Added workaround in global WMWindowAttributes, to avoid creating a second appicon when a KDE3 application opens a config panel. - Updated slovak translation (Jan Tomka <judas@linux.sk>) - Added xdnd v3 support in WINGs (Sylvain Reynal <sreynal@nerim.net>) - Check whether libXft is at least version 2.1.2 else refuse to compile. - Fixed bug in icon chooser dialog that could cause a segmentation fault in some cases (Pascal Hofstee <caelian@gmail.com>) - Fixed crash in asm code in wrlib, with new versions of gcc. - Fixed bug in the x86_PseudoColor_32_to_8() function which incorrectly used the r, g, b fields in the conversion. - Fixed x86 ASM code in wrlib to work on 64 bit architectures. - Fixed the focus flicker seen with some apps (notably gtk2) (Alexey Spiridonov <snarkmaster@gmail.com>) - Fixed all crashing bugs that were generated by wmaker starting with the WMState file missing. - Added NetWM support (a modified version of the patch originaly written by Peter Zijlstra <a.p.zijlstra@chello.nl>) - Applied patch to enhance the Virtual Desktop behaviour, and to integrate it with the NetWM code (Peter Zijlstra <a.p.zijlstra@chello.nl>) - Applied a few xinerama and placement fixes (Peter Zijlstra <a.p.zijlstra@chello.nl>) - Fixed memory leak in dock code. - Fixed and enhanced the text wrapping in WINGs. - Fixed the layout of some elements in WPrefs.app - Added workaround for aplications that don't set the required hints on the client leader window, but they set them on normal windows (observer with KDE 3.3.0 mainly). This will allow these apps to get an appicon again. (they should be fixed still) - Added workaround for applications that do not set a command with XSetCommand(), but instead they set the _NET_WM_PID property. This works with operating systems that offer a /proc interface similar to what linux has. (This also is to fix problems with KDE 3.3.0 apps, but not only them). - Fixed bug with autostart and exit scripts not being executed if user GNUstep path was different from ~/GNUstep (when setting GNUSTEP_USER_ROOT) - Removed legacy OFFIX_DND support code - Fixed the signal handler for crashes (ie, removed it) and made wmaker restarting be made automatically by a monitoring process. - Made NetWM support be enabled by default - Removed old code to store/restore workspace state (now relies on netwm) - Added a (simple) Font Configuration for fontconfig fonts - MacOS X style window switching panel (navigate through windows with Alt-Tab or arrow keys) - Added support for NET_WM_NAME/NET_WM_ICON_NAME - Moved out font name conversion code from getstyle/setstyle/convertfonts and made it support fontsets - Converted all menu and po files to UTF-8 - Updated de.po (Thomas Otto <3.1415926535897932384626433832@gmx.net>) - Fixed a crash bug when switching workspaces - Removed obsoleted scripts from util: wsetfont, wmchlocale, wcopy, wpaste Changes since version 0.80.1: ............................. - Fixed a buffer overflow when allocating a RImage struct. Changes since version 0.80.0: ............................. - Fixed a bug that crashed wmaker when closing a window if multiple screens were managed by wmaker (Valery Kotchiev <aggregator@nospam.dk>) - Fixed a problem that crashed wmaker when trying to read an unexisting WMState.<number> file on multihead system. - Fixed problem with keyboard shortcuts executed an every screen for multihead systems. - Updated traditional chinese translations - Fixed buglet in non-caching rootmenu option ("John H. Robinson, IV" <jhriv@ucsd.edu>) - Added Malay translation - Fixed problem with kcalc not having a miniaturize button. - Added "Hide Others" to the window menu. - Fixed text in info panel for multibyte (Seiichi SATO <ssato@sh.rim.or.jp>) - Separated the font caches for normal fonts and fontsets in WINGs (they can have the same names and collide in the cache giving unwanted results) - Fixed Legal Panel not to display rectangles in place of new lines. - Fixed problem with losing focus when changing to an empty workspace and back. - Fixed another focus related problem when changing workspaces. - Fixed problem with saving session when shared appicon is enabled (not all instances were saved in the session, only one per shared appicon) - Added support for the ukrainian language in wsetfont (Bohdan Vlasyuk <bohdan@bodq.vstu.vinnica.ua>) - Fixed a bug that crashed Window Maker when setting the "Emulate AppIcon" option for a window using the window Inspector. - Let XRender transparent window be see-through to desktop - Added Greek (el) language pixmap (Michalis Kabrianis <Michalis@bigfoot.com>) - Fixes icons being reduced twice when icon size != 64x64 Eduardo Pereira Habkost <ehabkost@conectiva.com.br> - Fixed a bug that crashed wmaker when selecting the "Start alternate window manager" option in the crashing dialog panel. - Window Maker will now use the WINDOWMAKER_ALT_WM environment variable (if it is defined) to overwrite the default hardcoded fallback window manager. - Fixed marks for menu entries to be grayed as the text for disabled entries. - Fixed Clip's "Autoraise" option to be marked as disabled when the "Keep on Top" option is active. - Added ability to browse for files/directories in the WPrefs menu editor. - Added Czech translations of documentation (Jiri Hnidek <Jiri.Hnidek@vslib.cz>) - Fixed segfault with incomplete WM_CLASS specifications. - Fixed a bug about arranging subviews in a WMBox after removing a subview and a memleak occuring in the same situation. - Fixed a bug in wdread - Fixed bug with windows that have WM_HINTS.take_focus = False. These windows will not receive focus at all. - Fixed a buffer overflow in winmenu.c Changes since version 0.70.0: ............................. - Disabled window birth animation by default (while it was ok with normal windows, it was very annoying with menus editing in WPrefs.app) - Added ability to shade/unshade a window using the mouse wheel. - Fixed compilation for systems that required -lintl for WINGs (Jim Knoble <jmknoble@pobox.com>) - Removed redundant include/lib paths from the get-*-flags scripts - Updated slovak .po files (Jan Tomka <judas@linux.sk>) - Added "Save workspace state" switch button on the exit confirmation panel (based on a patch sent by Jan Tomka <judas@linux.sk>) - Fixed WPrefs crash when clicking on the menu editor to keep the current menu (Alexey Voinov <voins@voins.program.ru>) - Added patch to fix some gnome issues (Les Schaffer <schaffer@optonline.net>) - SIGTERM is now handled and saves the internal state before exiting (like SIGHUP and SIGINT already do). Now a "kill wmaker_pid" will exit cleanly saving dock/clip/session information on exit. - Added an internal strcasecmp() to WINGs (only on systems where's not present) - Deminiaturizing a window that is also shaded, will perform an unshade too. (Note that this only applies to deminiaturizing shaded windows. Unhiding an application will keep the shaded/unshaded state of windows.) - Removed compile time option for definable cursors and made them available by default. - Mapping a new window that belongs to a running application that is hidden, will unhide the application. - Added || pipe menu for generating non-cached menus - Removed the collapse appicons thing. - Added real appicon sharing (apps of the same kind will have a single shared appicon). - Fixed user and global defaults domain merging to preserve values present in global but not in user, in sub-dictionaries. - Made dock/clip steal appicons of applications that were started from a shell/xterm or from the main menu, if there is a docked appicon of that class that is not running at the time the app is launched. - Added animation to show that the appicon was stolen by the dock (the way NEXTSTEP did - map an appicon as it normally would have been, then slide it to the position the docked appicon is). - Updated the animation constants for scrolling/sliding/shading to better adapt to newer/faster machines. Also used wusleep(10) when the delay was 0 to get rid of the jerky animation when there was no delay. - Fixed bug with Unhide mapping windows from other workspaces. - keyboard shortcuts are active during mouse window drag - Saving a domain file will first strip all entries that are also present in the global domain as well and are exactly the same. This fixes a bug where settings from the global domain file were merged in the user domain file and further changes in the global domain file for those merged values was ignored making a system admin unable to set global defaults for all users using the global domains. - Fixed bug with improper setting of root/titlebar cursor (definable cursors). Changes since version 0.65.1: ............................. - fixed crash when saving empty menu item in WPrefs - Fixed some more bash specific constructs in wsetfont. (Marcelo E. Magallon <marcelo.magallon@bigfoot.com>) - fixed crash with broken apps that set null WM_CLASS - fixed crash when with gnome panel and multi-screens, some menu updates and applied various other patches from (Crutcher Dunnavant <crutcher@redhat.com>) - po file fixes (Crutcher Dunnavant <crutcher@redhat.com>) - replaced I18N_MB with I18N in one place in src/wconfig.h.in - fixed default clip title font in WindowMaker.in - fixed some locale related problems (Yukihiro Nakai <ynakai@redhat.com>) - fixed a bug in RCombineAreaWithOpaqueness() (Brad <lists@anomie.yi.org>) - added spanish INSTALL file (Efrain Maximiliano Palermo <max_drake2001@yahoo.com.ar>) - updated Finnish pots (Tomi Kajala <tomi@iki.fi>) - copy/paste launching in Dock - fixed switch to wrong workspace bug (Masashi Shimbo <shimbo@cis.ibaraki.ac.jp>) - added snprintf and removed XConvertCase usage for portability - added wcopy/wpaste scripts from (<luke@research.canon.com.au>) - added Xinerama support: see details in NEWS - fixed artifact pattern left in TrueColor dithering code (visible with tiled gradients) - fixed bug in positioning of window list menu when opened by kbd - internal code clean-up with notifications for window state change and other stuff - removed the libPropList dependancy by adding property list handling code to WINGs. This code is not only better integrated with the other WINGs data structures, but it's also more robust. Also a backward compatibility header file is provided which maps old libPropList function names to the new WINGs based proplist names allowing old code to be linked to WINGs with minimal changes. For details on how to use the compat mode, read the comments on top of WINGs/WINGs/proplist-compat.h More details about this can be found in WINGs/ChangeLog and WINGs/NEWS. Say bye, bye libPropList =) - rewrote all Window Maker code to use the new WINGs based proplist functions. - fixed a few compilation warnings and a problem caused by an uninitialized variable. Changes since version 0.65.0: ............................. - removed FocusFollowMouse from wmaker and WPrefs - fixed problem with alpha images showing a blue tint on big endian machines - fixed problem with WINGs based apps exiting with a "X_RotateProperties" related error when text was selected in a textfiled (including WPrefs.app and Window Maker itself). - fixed bug with maximization of windows with fixed resize increments - added None geometry display type - fixed window enumeration bug - removed GNUisms from wsetfont (Marcelo E. Magallon <marcelo.magallon@bigfoot.com>, Masahide -mac- NODA <mac@clave.gr.jp>) - added slovakian translations from (tomka@oalevice.sk) - added WINGs i18n patch from tomka@oalevice.sk - fixed wmsetbg.c to work in servers capable of multiple depths (overlay) - added HMaximizeKey (Ruda Moura <ruda@conectiva.com.br>) - fixed bad SIGPIPE handling setup across forks (Philippe Troin <phil@fifi.org>) - added workaround for bug in locale handling on font set creation (Seiichi SATO <sato@cvs-net.co.jp>) - Fixed some non-portable shell constructs used in installed scripts (Johnny C. Lam <lamj@stat.cmu.edu>) - Fixed crash with long titles in the window list menu (buffer overflow) (Alban Hertroys <dalroi@wit401310.student.utwente.nl>, reported by Robert Marshall <robert@chezmarshall.freeserve.co.uk>) - Replaced almost all sprintf() calls with snprintf() - fixed crash when removing menu entry for Window List or Workspace submenu - added WINDOW_BIRTH_ZOOM2 (ric Tremblay <delt@razorback.yi.org>) Changes since version 0.64.0: ............................. - fix with gnome hints stuff, related to tasklist/bar - ripped off single appicon stuff - added better appicon handling of apps of the same type - applied patch for wkdemenu (Malcolm Cowe <malk@bruhaha.co.uk>) - added WINDOWS_MENU submenu type for root menu (Bastien Nocera <hadess@hadess.net>) - added kbd shortcuts for icon chooser - use Hermes in wrlib - removed MOUSE_WS_WHEEL #defines - fixed bug with multibyte text on libc5 systems (Osamu Ajiki <osam-a@astroarts.co.jp>) - fixed race conditions on signal handlers - SIGINT will gently exit, SIGTERM will not be handled - When Window Maker calls wmsetbg to set the background, it will consider the value of the DisableDithering option and pass the right switch to wmsetbg. - fixed a memleak in the dialog panels. - made "Keep on Top" in the dock/clip menu a checked menu entry. It's _much_ easier to work with it this way. - Fixed problem with GNOME apps that have windows which need to stay on the desktop level. - Fixed incorrect parsing of display and screen number from $DISPLAY. - Organized the inspector panel a bit better. - Replaced bags with arrays wherever appropriate. This will improve performance a bit. - Made the Gnome tasklist skip the windows with the "Skip window list" flag enabled. (Bastien Nocera <hadess@hadess.net>) - Fixed crashing bug when name and class were empty for a docked app. - Removed MIN() and MAX() macros and replaced them with WMIN() and WMAX() from WINGs. - Added a hint that Window Maker crashed, to allow windows to be placed correctly after a crash situation. - Added a hint that Window Maker crashed, to allow windows to be placed in their correct previous positions after a crash situation and also to preserve their state before the crash (minimized, shaded, hidden, ...) - Fixed wrong mapping position of the "Docked Applications Panel" for some icons. - Smoother animation for the smiley =) - Added retain/release mechanism for RImages. RDestroyImage() has become obsolete. More about this can be found in wrlib/Changelog and wrlib/NEWS. - Small API change in WINGs to allow images with alpha blending set as the application icons be shown correctly. More about this in WINGs/Changelog and WINGs/NEWS. - Made images with alpha blending be shown correctly in the panels and the icon chooser. - The icon image set to be shown in panels ("Logo.WMPanel") will be automatically updated if its entry in WMWindowAttributes changes (without a need to restart as until now). - Fixed a bug in the icon chooser dialog that made the selected icon look wrong if it had alpha blending. - Removed the following 3 options from configuration: SelectWindowsMouseButton, WindowListMouseButton and ApplicationMenuMouseButton. - Added 4 options to the configuration file for binding workspace actions to mouse buttons: MouseLeftButtonAction, MouseMiddleButtonAction, MouseRightButtonAction and MouseWheelAction. They replace the above 3 removed options, but use a different semantic. More in NEWS. - client supplied icons that were saved by Window Maker in the directory ~/GNUstep/.AppInfo/WindowMaker/ will be recreated if missing when the application starts. - fixed a small memleak when the client supplied icon was extracted and saved. Changes since version 0.63.1: ............................. - fixed messup in get-{wings,wutil,wraster}-flags - fixed #wmdatadir# substitution in wmaker.inst (Seiichi SATO <sato@cvs-net.co.jp>) - Removed spurious focus disabling for GNUstep applications - but retain code that lets GNUstep apps control their window titlebar. (Richard Frith-Macdonald <rfm@gnu.org>) - Fixed broken panels. - Renamed se.po to sv.po - New version of wkdemenu.pl (from Malcolm Cowe <malk@bruhaha.co.uk>) - new updated Slovak translations (Jan Tomka/judas@hell <tomka@oalevice.sk>) - integrated the 'no polling' patch from Jim Knoble <jmknoble@jmknoble.cx>. - new wsetfont script (Anton Zinoviev <zinoviev@debian.org>) - lots of i18n fixes (Jan Tomka/judas@hell <tomka@oalevice.sk>) - window levels changed to match GNUstep <rfm@gnu.org> ... src/GNUstep.h src/WindowMaker.h src/window.c wmlib/WMaker.h WINGs/WINGs/WINGs.h Changes since version 0.63.0: ............................. - fixed compile prob with SGI compiler - decreased nice() value in wmsetbg - applied gnome panel not-covering patch from (Bastien Nocera <hadess@hadess.net>) - added item copy to WPrefs menu editor - added locale selection code for menu in wmaker.inst (Eliphas Levy Theodoro <eliphas@conectiva.com.br>) - fixed bug in built-in xpm support (Alessandro Strada <a.strada@libero.it>) - removed plugin support - fixed a crash bug in WPrefs menu editor - added es and pt potfiles from conectiva/eliphas - added updated galician potfile (Jesus Bravo Alvarez <jba@pobox.com>) - added update hungarian potfiles (HORVATH Szabolcs <horvaths@inf.elte.hu>) - added updated single-click patch from John Morrissey <jwm@horde.net> - added updated danish translations (Birger Langkjer <birger.langkjer@image.dk>) - fixed WindozeCycling config in WPrefs - fixed circulate raise withour WindozeCycling Changes since version 0.62.1: ............................. - added blackbox style igradient (interwoven) - added wmagnify utility - changed behaviour of control/shift double click on titlebar for maximize - updated getstyle to account for extendspace options - fixed weird color bug in jpeg loader (Alban Hertroys <dalroi@wit401310.student.utwente.nl>) - improved and simplified fonts configuration for multibyte languages (Tomohiro KUBOTA <kubota@debian.or.jp>) - cleaned ParseCommand() and renamed to TokenizeString() - rewrote menu editor in WPrefs - added definable workspace border (0..5 pixels). See NEWS. - fixed circulateraise on non-windoze cycling mode - fixed bug in RCombineAreaWithOpaqueness (Tim Malone <tmalone3@uswest.net>) - fixed bug with hangling of WM_COMMAND update in client.c (Andrew M. Langmead <aml@world.std.com>) - fixed bug with incorrect reading of ppm files (Adam Fedor <fedor@gnu.org>) - fixed bug with incorrect window placement using automatic placement, while there were shaded windows on other workspaces - fixed some buffer overflow issues in WINGs - fixed bug with WPrefs.app not selecting the menu appearance options after startup. - replaced free() with wfree() wherever appropriate - fixed some memory leaks generated by wstrappend() - fixed code that was dependant on the order of evaluation in wrlib. This fixed a number of problems, like greyscale jpegs that showed up in red and possibly the problems with pseudocolor displays. - made clicks on unfocused windows be effective on focus follow mouse/sloppy Changes since version 0.62.0: ............................. - made shortcuts available during alt+tab - save lowered state of menus - fixed portability bugs for old X servers - added check for XInternAtoms in configure and replacement code - fixed window cycling with single key shortcut - fixed WPrefs crash on menu editor - install only needed icons for WPrefs.app - updated Finnish translations - fixed user-whining-windoze-cycling bug - added option for f'n windoze cycling.. - added --create-stdcmap and made std colormap creation off by default - updated get/setstyle to account for new options - fixed crash on restart bug - made GNOME wm hints take precedence over KDE.. KDE hint will only be read if GNOME hints dont exist - updated kwm hint support (maximize hint) - added memory usage in info panel - fixed sticky hint handling in GNOME - fixed saving of maximized state for restart Changes since version 0.61.1: ............................. - fixed bug with menu editor in WPrefs placing cut/paste-ed entries in wrong positions. - removed "Keep Attracted Icons" option from Clip's menu. See NEWS. - fixed bug in Xdnd code to be able to work with QT. (This is QT's bug so it will change again in future) - replaced debugging output stuff with Nana - fixed problem with session restoring and dock autolaunch (Jacek Naglak <nag@promail.pl>) - put WorkspaceNamePosition in WPrefs - added a lock to docked icons - fixed crashing bug in WPrefs.app's Appearance section. - fixed sorting of names in icon chooser, and file browser. - fixed name completion problem in file browser. - added new sound events (from pascal) - fixed bug when moving/resizing internal windows - propagation of -noext for submenus (David Reviejo <dreviejo@arrakis.es>) - fixed problem with mouse sampling rate in SGIs - optimized frame drawing (Swivel <swivel@gnugeneration.com>) - removed broken optimized frame drawing patch - added Select Window button in attribute inspector - made icon images scale by a constant factor when changing icon size - added support for standard colormaps in PseudoColor visuals - changed geometry view for move/resize to a WINGs widget - removed DisplayFont option - added NoBorder attribute - changed semantics of GNUstep window attribute hints - added get-wings-flags and get-wutil-flags with the same purpose as get-wraster-flags, but for compiling and linking with WINGs/WUtil - fixed bug handling non-string values given to string valued options in defaults.c - fixed colormap_window crash bug (appears when launching some apps from dock, or removing apps from gnome panel etc) - added DONT_SCALE_ICONS #define - added --no-autolaunch patch (John Bafford <dshadow@zort.net>) - made Apply button work on window inspector for windows with no WM_CLASS - changed sound server code to be more efficient - fixed crash with broken apps that set mask size != pixmap size in icons - made wmsetbg accept relative paths for images that are not in PixmapPath - fixed windoze cycling - replaced XSync with XFlush in wUnshadeWindow() - added GNUstep window recognition through WM_CLASS->class == GNUstep - made window focusing not change titlebar color of GNUstep windows - disabled passive mouse grabbing in client area of GNUstep window when they are unfocused - added Jim Knoble <jmknoble@pobox.com>'s cursor thing patch - fixed lock of wmaker when clicking on menu multiple times - made transients appear near their owner - fixed crash bug with broken java implementations (Miguel Covarrubias <mcovarr@tigr.org>) - made Revert on attributes panel apply the reverted changes immediately to avoid inconsistent internal state - color dragging works correctly now - arbitrary stacking levels - save window shortcuts in state - changed license of Marco's icons to GPL - added --dont-restore cmd line option to not restore previous state - fixed focus bug when moving wmaker panel windows in focus-follow mouse Changes since version 0.61.0: ............................. - fixed Xdnd by cropping filename with "" - fixed OPEN_MENU - fixed crash when moving a shaded window with keyboard - fixed problem with window shortcut assignment from the menu - fixed problem with fonts in WINGs (Masahide -mac- NODA <mac@flab.fujitsu.co.jp>) - fixed multihead bugs (Morten Bgeskov" <mb@dbc.dk>) - fixed crashing bug when saving session information. - fixed crashing bug related to onmipresent icons in Clip - added _WINDOWMAKER_ICON_TILE and _WINDOWMAKER_ICON_SIZE hint in the noticeboard window Changes since version 0.60.0: ............................. - fixed bug in window attribute panel - SGI portability fix (Graham Whitted <gbw@sgrail.com>) - fixed compilation problem with --enable-singleicon - fixed compilation problem with WS_INDICATOR - fixed crash bug with SGI (defaults.c) (Graham Whitted <gbw@sgrail.com>) - fixed sloppyfocus problem in multihead dpys (Morten Bgeskov <morten@bogeskov.dk>) - fixed WorkspaceSpecificBackground bug in wmsetbg - give preference to windows in window list when switching focus after workspace change (Richard Kilgore <rkilgore@ece.utexas.edu>) - brought back --locale cmd line option - fixed bug with WorkspaceNameDisplayPosition (Emanuele Caratti <wiz@iol.it>) - added missing kbd shortcut definitions for window shortcuts (Michael Smith <mjsmith@spirit.com.au>) - fixed floppy button layout in filepanel (Matthew Ashton <mrashton@home.com>) - fixed bug with documentedited close button (Felipe A. Rodriguez <farz@mindspring.com>) - fixed some buffer overflows - fixed some problem with the alpha - fixed some problems with non gcc compilers. - fixed problem with showing instance.class in the inspector window. - fixed crash when displaying workspace name in some positions. - fixed compilation problem when WS_INDICATOR was defined. - added edge attraction. See NEWS. - fixed buggy RSaveXPM() in wraster library. Its output was messed up, and caused crashes for icons with more than 1024 colors. - sinking windows (such as gmc icons) won't be calculated in edge resistance or attraction. - removed drop shadow for text on title bar code. (TITLE_TEXT_SHADOW) - text on title bar is now possible to be drawn by plugin. See NEWS. - WPrefs: added support for button4/5 - fixed scrolling of menus outside screen (Vito Caputo <swivel@virtual-webworld.com) - added dialog window for menu commands that can't be executed - fixed crash when deiconifying windows when icons are disabled - better smart placement (Gabor Melis <gabor.melis@essnet.se>) - replaced old linkedlist code with WMBag - fixed wmsetbg to use right bg color with transparent background images - fixed crash with Assertion "bad_root_window" && 0' failed. on startup - fixed crash when more than 1 dockapp fails to launch on startup - added a different dock setup config for each screen size - fixed PPosition handling - New "Smart placement" mode. 'Smart' is no longer an alias to 'Auto' but a different mode of placing windows. 'Auto' keeps the old behavior. - added the dir where the menu is being read from to the search path given to cpp - doing a multiwindow selection shortcut and hitting the shortcut repeatedly will cycle through the selected windows - fixed crash when overwriting a string constant (default font specs) in WINGs Changes since version 0.53.0: ............................. - fixed a bug that caused icon overlaping in Clip, when icon was moved around. - this time really added libwmfun to distribution. - made deiconification not automatically focus window in sloppy focus - fixed crash with DisableMiniwindows and icon pixmap changes - fixed crash when changing icon of window without WM_CLASS - added hysteresys for offscreen menu scrollback - fixed bug with IgnoreFocusClick - fixed crash with windows with width == 1 (Alban Hertroys <dalroi@wit401310.student.utwente.nl>) - added SHEXEC command - fixed resizebarback for SHADOW_RESIZEBAR ( jim knoble jmknoble@pobox.com) - added balloon help everywhere - fixed bug with FullMaximize attribute - GNOME: button events not bound in wmaker are proxyized (to gmc) (Paul Warren <pdw@ferret.lmh.ox.ac.uk>) - fixed bug with restoration of maximized window after restart with --enable-kde - added high-quality filtered rescaling (smoothed rescaling) to wrlib/wmsetbg - added SmoothWorkspaceBack - fixed crash bug in Paths section of WPrefs - optimized image rendering for 15/16 bpp - user menus' paths were changed. See NEWS. - added a timeout for the workspace name fading - HP-UX compiler compatibility workarounds (Sebastien Bauer seb_bauer@bigfoot.com) - fixed crash with attributes panel - save state of all menus when exiting (Sebastien Bauer seb_bauer@bigfoot.com) - added GNUstep info panel (still needs beautification..) - made the paths selector in WPrefs.app use the open file panel - fixed crash bug with hiding apps without dock/clip - fixed a mem leak in superfluous mode caused by the ghost icon. - added possibility to set omnipresent icons in Clip. See NEWS. - fixed bug in WPrefs menu editor - fixed crash when moving internal window with kbd - fixed compilation problem on IRIX machines (Neil Muller <neil@octane.sun.ac.za>) - replace xde support drop on dock with xdnd. - added an (internal use) environment variable for telling WPrefs whats's the name of the wmaker binary being ran. - more elegant text entries in Clip's menu, regarding single/multiple selected icons. - fixed cosmetic bug in geom. dpy window for 8bpp - removed --enable-kanji and added MultiByteText option - rewrote font code to use WINGs - made autoraise only work for the active window - fixed compilation problem with OpenWindows and other non-X11R6 systems.. - fixed crash bug when iconsize=24 - fixed portability prob with raise() in SunOS - fixed icon placement bug (Markus Schoder <Markus.Schoder@online.de>) - added delete and floppy buttons in file panel. Changes since version 0.52.0: ............................. - patched wmsetbg to work with dynamically loadable texture renderer code - added libwmfun to distribution (forgot to do so in 0.52.0) - added MenuStyle option - changed configuration updating to use notifications - fixed window move through workspaces in nonopaquemove - added message to immediately reread configuration data - fixed some bug in XKB modelock toggling - fixed crash bug when hiding apps with appicon disabled - fixed wrong initial workspace # being shown on attributes panel - XSMP updates - update colorpanel - applied WMSound patch from "Quinn, Anthony" <Anthony.Quinn@usa.xerox.com> - fixed focus bug with unfocusable window (I swear I had fixed that before...) - applied windoze cycle patch from Paul Warren <pdw@ferret.lmh.ox.ac.uk> - changed initscript and exitscript execution from fork()/exec() to system() - added ResizebarBack and added appropriate backwards compat. hacks in setstyle - applied ]d's patch to allow DEMATERIALIZE_ICON over windows - made clip arrows gradiented - added a crashing dialog panel to select what to do on crashes. - fixed the problem with showing a window as focused in the window list menu while it was on another workspace. - show workspace name on screen when switching workspaces - made setstyle support WorkspaceSpecificBack - fixed getstyle prob with filenames with spaces (Pierre Phaneuf <pp@ludusdesign.com) - fixed crash with InfoPanel in multihead dpy - Fixed bug in WPrefs that added a new line at the end of autostart script at every save, growing it indefinitely. - fixed a memory leak in wrlib (Wolfram Gloger <wmglo@dent.med.uni-muenchen.de>) - fixed crash during forced shutdown of X (Wolfram Gloger <wmglo@dent.med.uni-muenchen.de>) Changes since version 0.51.2: ............................. - made the Attributes panel be available for all windows, even for completely broken apps (although settings wont be saved for completely broken apps) - fixed compilation problems with compile time #defines - workaround for crash during startup related to hiding miniaturized windows from Matt Armstrong <matt_armstrong@bigfoot.com> - fixed focus problem with unfocusable windows - fixed bug in WPrefs that changed EXIT to SHUTDOWN - fixed menu title messup bug in WPrefs - added a dot to mark hidden applications (compile time) (id@windowmaker.info) - enhancements to the modelock patch (id@windowmaker.info) - show kbd mode for modelock (id@windowmaker.info) - enhanced positioning of transient windows - added dynamically loadable texture renderer code from Tobias Gloth <gloth@online.de> - added DisableMiniwindows option - kde: miniaturize animation will match the taskbar icon (KWM_WIN_ICON_GEOMETRY) - miniwindows show the title of the window if there is none set for it - fixed crash on kpanel restart - remember window shortcuts after restart - change edge resistance to account for panels and stuffs - narrower menus - fixed auto raise/lower behaviour of clip for docked applications that have their own window (applets). - cleaned up Clip's autocollapsing code, and made it to be similar to the auto raise/lower code (much cleaner). - fixed a race condition in Clip behavior when changing workspaces, if set to autocollapsing. Changes since version 0.51.1: ............................. - fixed bug with window that can get focus if both shaded and hidden. - maximize for full screen - fixed problem with frame drawing in non-opaque - fixed installation path prob [jmknoble@pobox.com] - fixed bug moving window when only one window is on screen - fixed bug with ignored GNUstep attributes - fixed WPrefs crash in Mouse Preferences - fixed crash bug in WINGs/wmaker startup - added workaround for kde pager crash bug - made %W in root menu and wmsetbg -w take numbers starting from 1 - fixed crash bugs with kpanel Changes since version 0.51.0: ............................. - put . to mark hidden apps - 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 - fixed crash with CalendarManager deiconify - fixed heisencrash when mapping new windows - fixed totally buggy wmaker.inst ~/.xinitrc checker Changes since version 0.50.2: ............................. - added some new icons made by Marco - kde: fixed stacking order reporting for modules - gnome: fixed state change request handling - fixed handling of file names with non-alphanum characters in wmsetbg - hopefully fixed timestamp problem that caused regeneration of configure - fixed a bug in the auto raise code - made SIGHUP exit wmaker and SIGUSR1 restart for GNOME compatibility - fixed %a() bug (now it really is fixed!) - fixed docking icons in last icon - fixed WMInsertPopUpButtonItem() - fixed bug that caused fonts of themes to be ignored - fixed bug in path handling in getstyle - stop icon explosion animation by clicking on root window - made SAVE_SESSION save the state of the dock - added command line option aliases that adhere to the GNU standards - fixed png gamma bug (actually unmade buggy fix) - fixed bug in property notify handling - removed KeepTransientsOnTop - fixed window focus when switching workspaces - fixed attribute inspector Apply for dont bind keys - fixed bad colormap bug (I hope) - added acceleration to keyboard window move - %W expand to current workspace # - fixed background pixmap color problem (cpixmap etc) - applied drop shadow patch - fixed crash on startup with xconsole and xdm - fixed portability prob with MkLinux/PPC - fixed portability prob with Alpha - added color panel to WINGs - added support for olwm/OPEN LOOK(tm) hints - added SaveYourself support - 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: ............................. - fixed wmsetbg - fixed parsing of WorkspaceSpecificBack - fixed initial workspace for new windows - added the workspace button proxy thingy for GNOME - added more GNOME compatibility fixes - fixed bug in %a() macro in root menu Changes since version 0.50.0: ............................. - fixed bug that allowed docking of icons to outside the screen - added extra code to handle kpager bug - fixed crash when opening appicon menu - fixed problem that caused Motif hints to be sometimes ignored - fixed bug in layer treatment of GNOME hints - fixed weirdness in initial window workspace - fixed problem with Sun compilers - fixed bug with () Workspace{Specific,}Back specs - added --disable-rpath option (from KDE) by request - maybe fixed bug with StarOffice - fixed pipe fd inheritance mess - fixed bug in kde workspace renaming - fixed installation problems Changes since version 0.20.3: ............................. - window list is ordered by workspace - preliminary grid move mode - fixed prob with docked apps with the same name switching places (like wmmon and wmmon -s) - wrapping of workspace switching for 5button mice - added restart in fallback menu - fixed buglet in modifier error reporting - extra options in window command menu - changed select() used in wevent.c to poll() - fixed bug in SGI boxes (black dialogs) - added IconTitleBack, IconTitleColor - made error checking stricter - fixed crash when saving application supplied icons that have many colors - added move threshold to menus - added textured gradient textures - added -nofont flag for setstyle - added -p flag and theme pack support for getstyle - fixed crash bug when clicking on menu title opened with kbd - fixed bug that caused incorrect saving of icon configuration (the -name bug) - scale pixmap texture for workspaceback type will maintain aspect ratio - fixed memory leak in jpeg loader - started XStandardColormap support - added StartMaximized window flag - fixed bug of mixed up Unfocusable and StartMiniaturized flags - yet another try to switch to shared libraries - workspace specific background images - stack new windows to under focused window if autofocus is off (disabled) - added kde support - implemented the "GNOME Window Manager Compliance" stuff - window move/resize by keyboard - rewrote window attribute code to make it cleaner - added --enable-lite configure option - added support to change prompt in %a() for root menu - rewrote exit code - added KeepInsideScreen=YES; for scilab in default WMWindowAttributes - added an option to the Clip, to allow automatic Raise/Lower when the mouse cursor enter/leave the Clip. Changes since version 0.20.2: ............................. - hysteresis for menu item selection (delayed selection for selecting submenu items) - window shortcuts - removed Hide Others from window commands menu - window commands menu will close when the window for it is closed - made shade not set the Iconic state - fixed bug in miniaturizing atribute panel - made frame rectangles be more visible in PseudoColor (8bpp) - fixed bug for 64bit machines - added support for ICCCM 2.0 WM_COLORMAP_NOTIFY message - fixed bug for apps that put strings with . in WM_CLASS - added handling for reparented client windows - fixed bug with window positioning - fixed cascade window placement to account for dock - added modelock stuff - added X include path in gfx header when configure searches for headers - fixed bug in window positioning by clients - added run-time test for shared pixmap support on server - changed order of link flags in Makefiles - fixed problem with random window placement - fixed multiple window selection for multiheads - grayscale and 8bit jpeg support - fixed client restoration in restart/exit in multiheads - started session management code - fixed problem with docked programs that have names with spaces - updated WPrefs.app for iconificationstyle - added -static command line option - put redundant NoWindowOverDock - fixed overlapping clip icon bug - extended window level code - added KeepOnBottom hint - added iconification style to WPrefs.app - fixed crash with bad value in defaults file - changed icon stacking code - added primitive support for 5 button mouse (for switching workspaces) - fixed BadAccess and crash on programs that do XGrabButton - fixed bug with rootmenu Exec not working when stty is called from ~/.tcshrc - fixed bug with Move menu and sloppy focus - temporarily removed SHELL support in apps menu Changes since version 0.20.1: ............................. - fixed timer bug - removed NoWindowUnderDock - error reporting mechanism has changed in wrlib. Instead of a writing the message in a string, it will place the error code in RErrorCode - smoother icon selection - persistent client supplied icon pixmaps - fixed yet another crash on emacs exit bug - fixed portability prob in wrlib shm code - fixed bug in DISPLAY variable setting in multiheads - fixed a few more portability problems related to storing struct properties - fixed damaged balloons on Suns/8bpp (I guess) - better "one of" type option handling - added a timeout for some animations - support for large binary files in wxcopy/wxpaste - fixed bug of losing focus when resizing/moving windows - fixed bug in libproplist - fixed focus with sloppy - changed permissions of shm segments to 0666. Now, if someone has a shm leak, we can know who it is. - faster titlebar texture update - faster icon kaboom - added different undocking animation - updated wmaker -version to output "Window Maker" instead of WindowMaker - fixed crash bug with transient windows (gimp etc) - fixed bug with popen()+wwarning() - problem opening cpp'ed menus - added test for header files in configure for gfx libraries - simplified building process, making libPropList be always built - fixed crash with bad mgradient color entry - docked appicons that are being edited/killed cant be moved (mutex fix) - more features in wxcopy/wxpaste - fixed bug with state file in multiheads - selection retrieval moved to WINGs - fixed workspacekey to switch workspaces in the current layer - fixed workspacekey to not switch to inexisting workspace unless AdvanceToNewWorkspace is YES - fixed bug with disappearing windows if a workspace switch is made on startup - fixed blocking of window creation/destroy events when opening menu with kbd - fixed aspect ratio setting bug - fixed crashing when miniaturized window is closed during animation - added XDE support - fixed stupid bug in shape stuff - raised threshold for removing docked icons - fixed HideOthers for windows with NoAppIcon=YES - if Cancel is pressed in dialog box of %a in menu cmd lines, the command will be canceled - slightly better dithering for 8bpp - apps menu will use $SHELL, instead of /bin/sh to run EXEC menu commands - cleaned up some code (GetNormalHints(), wManageWindow(), wGetWindowSavedState() et al, ) Changes since version 0.20.0: ............................. - fixed cpixmap to use the specified color for background around the image. - fixed compiling problem in wrlib. - fixed bug with bad shortcut names in menus. - fixed some compiling compatibilities. - added a new theme, named BlueWaves. Changes since version 0.19.3: ............................. - fixed crash when closing windows in autoraise - fixed a memory leak - fixed a crash when closing Lotus Notes - rewrote colormap code - incomplete multihead support - optimized wrlib dithering code - new superfluous animation - fixed cpixmap bug - fixed sound bugs - fixed miniaturization bug - added script to be called when wmaker exits - fixed GNUSTEP_WM_ATTR writing/reading - added quick and dirty selection pasting in text fields - fixed animation to be displayed again when unhiding an application. - made the miniaturize animation a runtime option. See NEWS. - fixed bug with reassigning keyboard shortcuts after they are changed. - added edge resistance. See NEWS. - fixed bug with long names when renaming workspaces. - fixed clip's balloon to not overlap the clip's buttons. - fixed bad update of clip's workspace menu after workspace name change. - fixed bug with cpixmap in wmsetbg. - fixed a memory allocation problem in wrlib. - AIX bug compatibility in XmbTextEntents() - fixed jpeg loading bug Changes since version 0.19.2: ............................. - fixed visual problem when mapping internal panels - better looking bevels for solid textures - centered pixmap texture (cpixmap) - added compile-time selectable animations for miniaturization - fixed bug with moveto workspace, omnipresent and miniaturize - fixed doubleclick bug - added GIF file support (through libgif) - implemented close color allocation in WINGs - fixed bug with visuals different than default - finished balloons Changes since version 0.19.1: ............................. - clip balloon under the clip - fixed setting of DISPLAY env var from wmaker. - fixed bug of passing focus to shaded window in other workspace - changed ballon font from titlebar font to displayfont - update menu when menu file path is changed in WMRootMenu - fixed OPEN_MENU stuff in WPrefs - fixed bug with mdgradient - fixed maximize with NoWindowOverIcons - fixed bug with kbd focus change - fixed race in autoraise - fixed bug in menu section of WPrefs - fixed problem with modifier keys Changes since version 0.19.0: ............................. - fixed bug in balloon titles - fixed stupid bug in workspace renaming from menu - fixed bug with iconsize != 64 - fixed forgotten menu saving in WPrefs - fixed various bugs in WPrefs - fixed kbd menu traversal bug - fixed bug with multiple depth supporting servers - fixed disappearing outer border of shaped windows - kluged bug with shaped window resize - fixed bug in WPrefs for systems without TIFF - fixed bug with Info/Legal panel closure - fixed Clip's look. Changes since version 0.18.1: ............................. - added shade indicator for window list - fixed small problem in menu autoscrolling - fixed bug when reading a corrupted defaults file - visual depths different than the default works now - fixed problem with non-ascii characters in localized dialogs - workspace rename from clip menu - fixed memory leak in internal proplist parser - fixed infinite loop when parsing mgradient with bad color name - fixed bug with paths containing ~ in iconchooser - cleaned up double-click code - balloon help - fixed bug with launching of ForcedDock apps - fixed cosmetic bug with miniwindows and titlebar - fixed bug with applications that steal input focus - EmulateAppIcon window attribute - Revert in attribs panel will not apply the changes - fixed bug with focus being left in old workspace after switching to an empty workspace. - finished clip remakeup - more generic and faster icon placement algorithm - icon yard - fixed wxcopy bugs Changes since version 0.18.0: ............................. - fixed cosmetic bug in beveling of pixmap/gradient textures - fixed bug in titlebar mouse bindings - fixed some bugs in proplist menu - fixed bug in window list menu indicator - fixed a very old bug related to unwanted button grabs in non-click-to-focus - fixed bug when opening settings panel for appicon with invalid icon file - winspector appicon related bug fix Changes since version 0.17.5: ............................. - fixed handling of signals when the X event queue is empty - fixed blank window titles - made current workspace entry be disabled in Move To window menu command, and in the Clip's Move To submenu. - fixed menu width calculation - fixed bug with buttonpress/release events - fixed problem with WMRootMenu with a ~ in the path - fixed bug caused that caused the clip to not function properly, unless a workspace switch was made - added a hack to make everything work even if NumLock or ScrollLock is on - added a little more verbosity to error messages - fixed kluged workspace menu in clip - removed workspace menu mapped through the microbutton in the clip. - remade clip button layout to be more usable - fixed bug with keepontop and apps with Motif hints (x11amp) - changed menu border drawing - fixed bug in clip free slot finder code - fixed infinite reproduction of OPEN_MENU submenus bug - added support for future extension to dock totally broken apps (wharf-like dumb launching) - changed icon of close button when app doesn't understand WM_DELETE_WINDOW - removed SwapMenuButton and added 3 finer grained equivalent options - better docked application settings panel - fixed positioning problem with attributes panel - removed WorkspaceChangeDelay and cleaned up related stuff - removed AClipColor and IClipColor - added SelectKey back - removed install -d from po/Makefile - i18n support in WINGs (dialog panels) - rewrote menu scrolling code (possibly fixed related crashing bug) - fixed crash with icons bigger than the tile - fixed bug in attributes editor to apply changes to dont bind {keys, mouse} - fixed bug in unhide that unhided all windows in the same workspace - moved noappicon to Application Specific options. - fixed revert for StartHidden - changed style in default WindowMaker domain file - fixed bug in hash table - fixed bug with transients for leaders that don't have their leader hint set to themselves - changed all window_flags to have default values of 0 (closable -> no_closable) - fixed bug with workspace change of hidden miniwindows - added descriptive icons in window list - fixed bug of having to keep mouse over window to edit textfields of wmaker panels - extended menu shortcuts to proplist menus - changed proplist menu format: removed redundant array for submenus - made arrangement of icons when workspace is switched to not arrange moved icons - fixed bug in focusfollowmouse that made windows under the currently focused window that close, to not get the focus - if the app is a .app, it will try to find it's icon in the .app directory and save it in the WMWindowAttributes, so that the dock can use it. - drag docklets that select for mouse events to with Alt+drag Changes since version 0.17.4: ............................. - fixed bug titlebar when closing transient of unfocusable window - fixed crashing bug with attributes editor when saving Changes since version 0.17.3: ............................. - added Info panel - fixed crashing bug in libproplist - do not crash anymore if config files are bad - better handling of libjpeg errors - changed method to select icons - fixed bug in dock panel - fixed bug in Remove Icon in clip - fixed serious memory leak in wrlib - fixed bug that allowed addition of more than 1 WORKSPACE_MENU - rewrote proplist parser by hand. Seems to work with no crashes, but I'm sure someone will crash it... - fixed invisible text in geometry display when unfocused titlebar is black - fixed bug with rootmenu that caused twin menus to be left mapped - added DontConfirmKill option to remove confirmation panel for Kill - fixed bug with hide of app with wmaker menu - changed all NSsomething internal flags for the GNUstep attributes to WMsomething Changes since version 0.17.2: ............................. - fixed bug in attributes panel with Disable Resizebar - fixed save in attribs panel with windows other than the client leader - bug in attribs panel with Revert that made it save attributes with the wrong name - fixed (by kluging) bugs related to destroying dialog panels in a bad order - fixed various bug with hide in empty screens - fixed various potential races in miniaturize/shade code - added Keep Icon command in clip - made remove selected icons to remove current icon - changed clientdata of clip to the clicked icon instead of the clip. - renamed collect icons, made clip icons have a more uniform behaviour, added keep icon command. - fixed docking of apps that dont have WM_COMMAND and when the user clicks Cancel in the command input dialog. - fixed bugs in moving commandless icons between dock/clip or workspaces - fixed bug hiding miniaturized windows - fixed bug when reloading rootmenu with more than one shortcut - fixed bug that launched shortcut entries without modifier together with modified shortcuts - even algorithm to find free slot in clip Changes since version 0.17.1: ............................. - Makefile.am fixes - removed libtoolized libPropList - fixed cascade placement Changes since version 0.17.0: ............................. - updated Makefile of the po directory - removed useless strdup() in proplist.l - fixed problem with systems that dont have PATH_MAX in <limits.h> Changes since version 0.16.1: ............................. - removed the Select key binding. - changed Normal speed type to Medium and added UltraFast. - Shift-dbl-click on appicon brings the app to current workspace. - replaced menu based configuration of docked apps with a panel. - added Unhide Here command for appicon menus - partially corrected bug in icon selection code in window inspector. Was not working correctly for multiwindow apps with appicon. - added command menu for appicons - removed global variables from winmenu.c - fixed some memory leaks and removed redundant code in icon choosing code - made Kill in dock menu to unconditionally XKillClient() the app. Sending WM_DELETE_WINDOW would not close the app if the app had multiple windows - added confirmation dialogs for Kill in appicon menus - made ClipMaxIcons to be compile time settable - renamed NoSound to DisableSound - changed NoAutowrap to DontLinkWorkspaces - fixed bug that prevented windows moved to other workspaces break Unhide - fixed bug that made titlebar buttons disappear when font sizes were changed in NewStyle - changed Hide command binding in miniaturize button from Alt-Click to Control-Click - changed decoration window attributes to affect only decorations and their names - fixed MWM_HINTS support, removed MWMHints from WWindow - removed Right button constrain window resize to horizontal only. It breaks Alt-Right button resizes through the client area of window. - fixed menu flicker problem when changing textures - fixed bug miniaturizing shaded transient windows - added shortcuts for menus - remade titlebar bevel drawing - fixed all known cosmetic bugs in titlebars and menu - better algorithm to find free slot in clip - user attributes have priority over program attributes - removed LeftHanded and wLeftBtn/wRightBtn stuff - added DisableWSMouseActions - added SwapMenuButton - renamed all NoSomething option names to DisableSomething, except NoWindow* - removed ConstrainWindowSize - fixed focus bug when changing workspaces in sloppy focus - Changed the look of temporary attracted icons in Clip. - Better detecting of graphic libraries. - Made the menu scrolling with mouse button pressed to be smooth and clean. - fixed a bug that left empty frames if a window was withdrawn on a different workspace - removed iconification animations for windows not in the current workspace - readded shm support in wrlib - merged libwwm.a with WINGs - major cleanup of library function names. - detect "lapses of memory" that cause forgetting to build libPropList and build it automatically. Changes since version 0.16.0: ............................. - Fixed bug with applications set to start hidden. - Fixed buggy getSpeed() that caused crash on some systems. - Miscellaneous bug fixes. - The resizebar cornewr handle is correctly rescaled when resizing. - OPEN_MENU will read again menus from files. - Right drag in corner handle of resizebar restrict resize to only horizontal. - Corrected typo with default fonts used in WINGs. - Implemented superfluous stuff as a runtime option. Is Superfluous = Yes/No; - Disabling dock and/or clip can be done now from WindowMaker domain too. - Selecting new style buttons is now done at run time. See NEWS. - Fixed docked appicons to switch to last workspace the app was on when unhiding (like not docked appicons do). - Moved wNextEvent() and timer events stuff to WINGs. - Added autoscroll for scrollers in WINGs. - Optimized WMList and WMBrowser in WINGs. - Button2 on clip opens workspace menu - Changed cycling colors of selected icons. - Made icon chooser display a better rendering of alpha-channeled icons. - Sorted list/browser entries. - Fixed bug in timer code that was causing some timer events to be lost. - New Pastel theme. - Attracted icons in Clip will have a shadowed look if they are to be removed when closed. Changes since version 0.15.1: ............................. - Modified how the wNextEvent() works, so it will go to sleep when there is nothing to do. This changed the busy 5ms checking WindowMaker main loop, with one that is active only when there are X events or timer events. - Changed WorkspaceTiedMiniWindows option name to StickyIcons. - Fixed some bugs with the miniwindows being sticky to workspace. - WorkspaceBack now accepts the key None. WorkspaceBack = (None); will not set any workspace back. - Changed the fix for restoring window stacking order after restart and fixed window stacking order on exit. - OPEN_MENU command now expands paths with environment variables ($HOME) and tildes (~user) - automatic restart of another window manager on SIGSEGV, SIGFPE, SIGBUS - removed HorizontalResizeThreshold option. To restrict resize to only horizontal use Shift-drag in the corner handle. - Added option to allow vertical maximizing not to overlap the minimized windows. It is NoWindowOverIcons = Yes/No; - Applications written with XForms library will get an app-icon now. - Included the MWM hints for GNOME support. There is also a configure option --with-gnome=yes/no. - The dialog to enter the docked icon command is no longer called, if icons are collected/attracted and the "Keep Attracted Icons" is not set. - fixed start workspace in Attributes inspector. Current Workspace is the workspace the user is when the app is started. - clicking on the appicon switches to the workspace where the app was last focused before unhiding - fixed problem with aspect ratio setting (gr_osview etc.) - changed some extensions in the default config/data files and removed Sound.{xpm,tif} because it seem to be copyrighted. - added icon selection panel - changed selection indication of icons. Removed SClipColor option - simplified animation speed options (IconSlideDelay, IconDelayStep, MenuScrollDelay, MenuScrollStep etc. etc) to IconSlideSpeed etc. - removed Start miniaturized/hidden items from Dock/Clip and added them as attributes - fixed Save in Attributes Panel. It should apply the changes before saving - changed format of geometry information in WMState - added DontSaveSession window attribute - changed name of NextMenuBehaviour option to WrapMenus - turned graphics_exposures off for all GCs created - Fixed the big memory leak problem for oldstyle buttons in title bars. - Solved problem with undefined ($RM) on Solaris, and maybe *BSD. - Fixed how icon extension is set in WMWindowAttributes to be portable. - Fixed buggy behavior when dragging a window from first workspace to next. - Implemented selecting of miniwindows. - Split the Clip menu to be smaller. - Modified how selected app-icons/miniwindows are marked. - Included patch for single appicon per instance.class pair. - StartWorkspace was changed to take precedence over the workspace in which application was started from Clip. - Applications launched from dock will no longer start on the workspace they were launched, but the one the user is in, when the window is mapping. - Miscellaneous bug fixes. Changes since version 0.15.0: ............................. - Fixed bug that kept an appicon selected after detaching. - Fixed bug that crashed WindowMaker if starting an application with. NoAppIcon = Yes; while AutoArrangeIcons = True; - Fixed the installed .xinitrc file. - Fixed some ANSI C incompatibilities. - Applications with omnipresent flag set will be mapped on the current workspace, no matter from which Workspace Dock they were started from. - mkmenu no longer gets installed, since is no longer needed. - Fixed a problem for systems which do bad things for free(NULL); - Attracted icons in Clip will not be saved in WMState if "Keep Attracted Icons" is not set. - Fixed code in defaults.c to use default hard coded values, if a syntax error is encountered when parsing the default domain WindowMaker database. This avoids a crashing bug if an image for spixmap or tpixmap is not found. - Fixed some missing parameter in a call to wWarning() in texture.c which could have caused hazardous (even crash) behavior if the pixmap image for texture was not found. - Fixed code in session handling, to save only one entry for applications with multiple windows opened on screen. - Implemented option to allow miniwindows to be workspace specific. It is named WorkspaceTiedMiniWindows = Yes/No; It is set in WindowMaker domain. Read NEWS - Fixed bug with incorrect height restoral of window when unshading requested from client. - Fixed problem with solid IconBack. - Fixed problem with hardcoded /usr/local. The value given to configure with --prefix=/some/path is now used. - Implemented some workaround to avoid crashing of applications that expect WM_STATE hint set before the window is mapped. - Changed how the bevel for the menu title is drawn for solid color titlebars. They now look nicer, and more consistent with the rest. - Implemented a new animation method when blowing the detached icons. See NEWS. - Fixed some places in code where hardcoded values (8) were used instead of TITLEBAR_EXTRA_HEIGHT. - Implemented a marking for the HorizontalResizeThreshold option. It will mark the corresponding number of pixels on the resizebar corner if the option is greater than 0. - Changed WindowPlaceOrigin format from string to array. It should now be: WindowPlaceOrigin = (64, 64); Default is (0, 0). - The geometry window is now constrained to be always visible on screen, if the geometry is set to be displayed Floating. - The geometry window size is decided based on the font size. Also the geometry window is correctly updated if the font size is changed while running. - Deleted unnecessary redrawing code in moveres.c. - Many fixes to moveres.c. - Put all the keys from defaults.c in WindowMaker domain database. - Fixed a crashing bug when workspace names were as long (or longer) as MAX_WORKSPACENAME_WIDTH (16 characters). In this case a right click on a window title caused WindowMaker to crash. - Included support for detecting if system requires to include libxpg4, which is needed by some FreeBSD systems, when using --enable-kanji. - Some fixes to configure.in and some Makefile.am files to allow the use of VPATH feature of 'make', which will let the source and build directories to be separate. - Changed the application launching code, so it put fork()-ed processes in process groups of their own, to avoid locking of entire session, due to a badly configure launching child. Only for systems which have setpgrp(). This is autodetected by configure, and used if available, else it will revert to old behavior. - Added the AutoCollapse feature to clip. This (when set) will allow the clip to stay collapsed, and show when moving the mouse over it. When the mouse leaves it, it will collapse back after a delay. Read NEWS. Changes since version 0.14.1: ............................. - Fixed icon tiles and icon titles to update correctly after changes in the configuration, without restarting. - Added code to deal with different visuals in wrlib. See NEWS. - Many things fixed in wrlib. - Fixed bug that crashed WindowMaker when the background image was no found. - Fixed crashing bug in wRemoveTimerInstance(). - Changed name of fiend to Clip. It can also be refered like "Workspace dock". This means all references should be changed in all configuration files, and the command line options. - Fixed crashing bug when moving icon between dock and full Clip. - Fixed bug in wrlib (RCreateImage), that could crash WindowMaker if trying to create an image with not enough virtual memory. - Changed code for diagonal rendering in wrlib, to be faster. - Implemented multi-diagonal gradients. - Fixed problem when shading a window without titlebar. - Fixed code in rootmenu.c to substitute ~/ with user's homedir in OPEN_MENU. - Implemented sorting feature for OPEN_MENU. Now files in directories are sorted alphabetically, with directories first. - Some small fixes to the code in generic/list.c - Fixed jpeg and png loading in wrlib to be faster. - Renamed Style directory to Styles. - Striped the .style extension from the style file names. This is to let them better be handled by OPEN_MENU. - Changed Appereance submenu to include Theme support. - Fixed bug when updating clip's main icon. - Improved version of wmsetbg. See NEWS for new options. - Small gradient testing program in wrlib/testgrad.c - Fixed problem with zombie wmsetbg. - Integrated dockit in WindowMaker. dockit now gets installed with WindowMaker. - Implemented runtime option to allow user to select the origin from where windows are placed on screen with auto and cascade placement modes. Default is WindowPlaceOrigin = "0, 0"; See NEWS. - New behavior of OPEN_MENU. See NEWS. - Fixed applications autolaunched from Clip, to be mapped on the same workspace as the Clip they were autolaunched from. - A default WMState is now installed with WindowMaker, containing only the top most dock icon configured to run dockit. - Install will automatically detect if you have TIFF, PNG or XPM support compiled in WindowMaker (in this order), and update WMWindowAttributes accordingly with icon file extensions. - Directory structure under .../GNUstep/Library/WindowMaker changed to easily support themes. - Syntax of WMState was slightly modified. See NEWS. - Fixed WindowMaker when using -nodock and/or -noclip command line options to preserve the state of old dock and/or clip in WMState. - Fixed some mem leaks. - Fixed crashing bug in window.c. - Fixed bug that allowed a shaded window on other workspace to get focus. - New options in dock/clip menu. They allow one to start the app either miniaturized or hidden. See NEWS. - Applications launched from dock/clip now will be mapped on the workspace they were started from, even if meanwhile user change workspaces. - Implemented SAVE_SESSION, and CLEAR_SESSION commands for the root menu. They are intended to save (or clear) a shapshot a the current session state. Read NEWS for details. - Added SaveSessionOnExit = Yes/No; option in WindowMaker, to allow autosaving the state of the workspace on exit, and its restoral on next session. Defaults to No. See also NEWS. - Converted menu scrolling parameters to run time. They are (with default): MenuScrollDelay = 10; and MenuScrollStep = 5; - getstyle now accepts -t to get theme options too. Without -t getstyle will only get options for style (without WorkspaceBack and IconBack). - Added option in clip menu to allow moving of an icon to another workspace. - Fixed clip to remember the drop command over sessions. - Added option to clip menu to attract application icons from bottom of screen when they are launched, and attach them to the clip. Also there is a flag to allow the attracted icons to be kept in clip or destroyed when the application is closed. See NEWS. - Added option to dock/clip menu to allow one to set the icon image. - Fixed bug that not updated the default icon pixmap after the icon background changed. - Added posibility to (un)select icons in clip with Shift Left click, or using the clip menu. Read NEWS. - New option for color to mark selected icons. SClipColor = color; - Added option to clip to remove selected icons. Read NEWS. - Move between clips now applies to all selected icons, or if none selected, to the one the mouse was pressed on. See NEWS. - Fixed OPEN_MENU to accept names with spaces in them when used for opening directories. "foo bar" files or subdirectories are now correctly proccessed. - Fixed crashing bug when hiding/showing all windows with inspector panel open. - Fixed bug that raised unfocusable windows, (if RaiseDelay>0 and Sloppy or Auto focus mode was used) when the mouse pointer got over them. Unfocusable windows can still be raised, if selected from the window switch menu, or with click on title-bar. Meta click on titlebar will lower them. - Fixes in moveres.c to allow a smoother draw of frames while moving and resizing windows. - Fixed a problem when resizing with Meta+RightClick. - Fixed a bug that freezed WindowMaker when dragging a window from one workspace to other, with OpaqueMove = No; - WindowMaker now uses the values set for MoveToNewWorkspace and CycleWorkspaces when dragging windows from one workspace to other, making this more consistent with the behaviour of Clip and Next/PrevWorkspaceKeys. - Fixed problem with the geometry window not showing up, showing in the wrong place or with the wrong numbers in some cases. - Put all transparent drawing code into a single function, to ensure consistency. - Fixed really ugly crashing bug, when editing workspace names with Control-LeftClick on the workspace menu name, for workspaces above 10. - WindowMaker now reads domains from /usr/local/share/WindowMaker/Defaults and merge them with the user domain files. This way new options, or global settings are available for old users, without reinstalling these files for every user. See NEWS for details. - Basic icons needed to run WindowMaker are now part of the main package. They are icons for dock, clip, defaultAppIcon, sound server and for xterm. All the rest needed for apps that can be started from menu, and have entries in WMWindowAttributes, are in WindowMaker-data.tar.gz which can be found on http://windowmaker.info/ or ftp://ftp.windowmaker.info/pub/contrib/icons - Changed the SlideWindow() function to better adapt to slow machines. Also the animation constants are now run time. They are IconSlideDelay = 0; IconSlideStep = 5; and IconSlideSlowDown = 50; See NEWS for a more in depth description of how it works, and what all these options mean. - Changed behavior of AutoArrangeIcons to avoid unnecessarily shuffling of icons. - Changing icons in WMWindowAttributes domain, now automatically reflect on screen, without the need of restarting WindowMaker. - Added sound support in WindowMaker. Sound can now be enabled at compile time using --enable-sound option to configure. Also there is a runtime option named NoSound = Yes/No; See NEWS for details, as sound support is not yet fully functional. - Some animation constants are now runtime configurable. Please read NEWS file for a complete list of all the new entries in WindowMaker domain database. - Added option to clip menu to collect all icons on the screen that are not already docked. Changes since version 0.14.0: ............................. - Fixed stacking problem with main fiend icon. - Fixed bug that made fiend's rewind button to not work on IRIX and PPC. - Removed "Default" button in panel 4 of the attribute editor and replaced with "Browse", to avoid confusion about it. But please note that Browse does not work yet. - Solved a bug in attribute editor that incorrectly create the appicon for an application. This could made WindowMaker to crash in certain conditions. - Fixed bug that gived focus to shaded&hidden windows. - Added keys to Raise/Lower the fiend. Read NEWS. - Added posibility to move app-icons between dock and fiend. - Fixed bug in winmenu.c, that caused incorrect menu item disabling in window menu, making the attribute editor inaccessible in certain cases. - Fiend enhancements. Read NEWS. - Added options for advancing to new workspace, and cycling through existing workspaces. Read NEWS. - Made the delay between changing workspaces with the fiend a runtime option. - Fixed bug that caused crash in certain condition when using Sloppy focus. - Fixed getstyle to include new options in WindowMaker configuration file. - Changed the default color for active fiend buttons and updated it in WindowMaker configuration file. You should update this, since the old active color was too close to the inactive color. - Made the fiend middle button have Active/Inactive color, corresponding to its normal/collapsed state. - Fixed a small mem-leak when destroying a workspace. - Fixed a bug in superfluous.c related to swapping dock position. - Fixed resize frame to show the window size numbers. Also fixed the numbers shown in that frame to reflect the real window size. Nicer arrows too. - Added posibility to send only a synthetic ConfigureNotify event, at the end of window moving, instead of every movement, to increase performance. - Fixed a bug in docking code, to allow strings with spaces in command name be properly quoted. - Changed the included asclock.tgz to better adapt to 8 bit displays. - Fixed window title updating after changes made with the attribute editor, when not using NEWSTYLE. - Made spixmap and tpixmap to work. See NEWS. - Theme support now available. See NEWS. - Fixed bug when loading missing domains that caused WindowMaker to crash. - Fixed typo in domain loading to count for global files if user files are not available. - Fixed bug in Attribute Editor, that crashed WindowMaker when restarting or exiting, while an Attribute Editor panel is open. - Put clip.tif, clip.png, clip.xpm, clip2.tif, clip2.xpm, Cone.xpm and Penguin.xpm in WindowMaker-data_tar.gz. These are icons intended for fiend. It can be found on ftp://ftp.windowmaker.info/pub/wmaker/contrib/icons Changes since version 0.13.1: ............................. - put back libPropList tarball in archive. This will not count for people with already installed libPropList, since configure will first look for the installed version. Read the INSTALL file for details. - made a clean-up to let WindowMaker compile with DOCK undefined. - working fiend clone. Read the NEWS file for details. - fixed bug that caused crash when using FocusNext or FocusPrevious keys with no opened window. - some small bug fixes. - Added handler for SIGHUP. <kill -1 wmaker_pid> will cause wmaker to restart. Changes since version 0.13.0: ............................. - Enhanced Attribute Editor. It will allow you to set options that apply to all windows. Also some new features. Read NEWS file. - Fixed bug in Attribute Editor that caused crash when icon was not found. - Fixed bug that crashed WindowMaker when some transient windows closed and the Attribute Editor remained open. - Fixed sloppy focus to correctly transfer the focus to the root window when there is no window open, or no window under the pointer. - Fixed sloppy focus to correctly focus the window under pointer after a restart or workspace change. - Fixed shift dbl-click on titlebar to not select the window. - libPropList is no more part of distribution. You need to have it installed or else you need to download it and compile. See INSTALL file. - Added Manome Tomonori's patch to fix kanji supprot. This added a new option to configure: --with-x-locale. See INSTALL and FAQ for more info. - Fix for clean compile under Irix. - Fixed autoarrange icons to do autoarrange after the dbl-click on app-icon. This way the appicon will not slip to the bottom left corner at the first touch, but let you first unhide the window. - Fixed icon box position when dock on the left side. Now dock will not cover the app-icons. - Fixed typo in application.c that inverted instance and class, thus making instance.class options saved in WMWindowAttributes unavailable. - Added option SelectKey in WindowMaker config file, that lets one bind a key to select/unselect the focused window. Also the same option added to the window menu. SelectKey = "some_key_bind"; - Changed stream->_fileno to fileno(stream) in isEof() in misc.c for portability. - Fixed window to not place themselves under dock if dock on the left side and auto/cascade mode is used. - Fixed auto/cascade window placement to not place a new window over a shadowed window. - Fixed bug in wdefaults.c that do not correctly initialized all bits in WWindowAttributes structure to 1. Changes since version 0.12.3: ............................. - Attribute editor is working. - Now menus positions are remembered between sesions if they are sticky when WindowMaker exits/restarts. - Fixed menu behaviour when using lousy Windoze behaviour, not to select the item under mouse pointer if the launching click is shorter than the default double-click time. - fixed window menu (Move to), to correctly update after a workspace delete. - fixed stacking order after restart. - fixed FocusPrevious/Next keybindings to skip windows with skip_window_list enabled. - added horizontal restricted resizing, if modifier key (Shift) is used to drag the corner handle of resizebar. - minor fixes in WINGs related to the return of some function and string update for NULL strings. Also a new function for getting the state of a button. - fixed some bugs that crashed WindowMaker because of NULL pointers. - fixed a crasing bug in the window stacking code. - fixed Hide item in window menu to be disabled for windows that do not have an application icon, or have set "NoAppIcon = YES". - fixed problems with hiding applications without application icon. - put back the patches that lost between 0.12.0 and 0.12.3 - changed autoarrange icons from a compile-time to a runtime option. Use AutoArrangeIcons = YES/NO; in 'WindowMaker' options file. Default is NO. - added compile time option for shading the resizebar. Default is no shade, which is default Openstep/NextStep4.0 look. - added pipe menus. '"Name" OPEN_MENU | script_that_constructs_menu' See the NEWS file. - added configurable horizontal resize threshold. Changes since version 0.12.2: ............................. - fixed typos and a bug that could cause a crash on machines where sizeof(int) was different from sizeof(pointer). - this is mainly intended for clarifying the confusion about patches that was done in the last releases. Changes since version 0.12.1: ............................. - fixed stupid, stupid typographical error that caused menus to segfault when NexMenuBehaviour / ScrollableMenus were set to YES (which is/was default) - changed configure so you can specify the location of graphics libraries and their header files (useful for building on different architectures) - fixed window focus problem Changes since version 0.12.0: ............................. - now maintained by Matthew Hawkins <matt@mail.goldweb.com.au> while our esteemed friend Alfredo is away. Have a great holiday in Japan, mate! - fixed __DuMmY install problems - made NextMenuBehaviour and ScrollableMenus run-time configuration options instead of compile-time options Changes since version 0.11.1: ............................. - added Launch command in dock menu - fixed manual window placement - fixed problem during installation in po/ directory - changed Command format for dock state - added OffiX DND support for the dock - added Move To submenu in window commands menu - right click on root window does not deselect windows (to allow workspace switch through menu) - various 8bpp Colormap related glitches fixed - fixed keyboard bindings when all windows are closed - OPEN_MENU in unreadable directory fix - changed PixmapPath format from : separated paths to array of paths - multi color horizontal and vertical gradient - fixed crash in unhide application with transient windows - OPEN_MENU with optional command Changes since version 0.11.0: ............................. - fixed bug with menus that caused wmaker to crash - brought program parameter dialog box back - fixed autoplacement - changed window matching precedence for WMWindowAttributes (complete, just instance, just class, global) - event compression while moving windows for slow videos and ultra-high mouse sampling rates - fixed private colormap change in 8bpp - fixed titlebar redraw on unshade - renamed atom _GNUSTEP_WM_MINIATURIZE_WINDOW to _WINDOWMAKER_WM_MINIATURIZE_WINDOW - fixed a bug with focusing windows in AutoFocus=NO; Changes since version 0.10.2: ............................. - fixed autoraise - fixed menu weirdness - many features brought back - fixed maximize bug - added a widget set and new dialog panels - fixed titlebar update after font change - renamed back _WINDOWMAKER_COMMAND to _WINDOWMAKER_WM_FUNCTION - fixed bug with miniaturization of bad behaved apps (vtcl) Changes since version 0.10.1: ............................. - fixed bug with "invisible" menus - added AutoFocus option - support for pixmap files for dock tile - fixed focusmode - tile pixmap for icons Changes since version 0.10.0: ............................. - fixed bug with input focus in sloppy focus mode - implemented pixmap mask creation in wrlib - root window pixmap option - added ppm support in wrlib - fixed portability stuff in libPropList - merged wmsound and bug fix patches - fixed dock icon border width - readded focusable option - autostart apps on startup - added jpeg support in wrlib - fixed bug with menus that did not end with a newline - RaiseLower now acts on the window under the pointer, as in olwm - fixed docked icon move - option for left handed ppl (swap left button with right button) - generalized titlebar and window frame stuff for windows and menus - changed event handling - single piece titlebar gradients - option and escape expansion for dock commands - save workspace state - initial workspace window option - corrected order of window names for dock state file (was class.instance, is instance.class now) Changes since version 0.9.0: ............................ - option to make maximize and window placement account for the Dock - fixed modifier binding - new menu configuration: OPEN_MENU. Get menu data from file, directory or pipe - removed rename_ws menu command - fixed IgnoreFocusClick - more apps can be docked (ghostview et. al) - fixed diagonal/horizontal resize detection to be like in NS - simplified titlebar button code: removed possibility to add more buttons - fixed window gravity handling (xclock -geometry 100x100-0-0) - removed shadeable window attribute, added DontMoveOff - window resize with Meta-Click3 on window - fixed bug that caused keyboard locks if a invalid key was used in a shortcut Changes since version 0.6.3: ............................ - moved to automake - changed preference directory from gnustep to GNUstep - added tiff support - changed preferences to be dynamically modifiable - several memory leaks fixed - changed meta-dblclick in dock button to start app to control-dblclick - fixed bug with unhide app and window list menu - miniaturized windows are now hidden when hiding an app - fixed bug in random window placement - renamed _GNUSTEP_WM_FUNCTION to _WINDOWMAKER_COMMAND - close stdin from forked processes, so that they don't block wmaker - fixed crash when closing a selected window - fixed timer event stuff to be more robust - rewrote dialog boxes with Athena - removed focusable window option - savews now puts -geometry as the first argument of the command line - new superfluous stuff: better ghost image/shadow for dock - changed handling of menus that fall outside of screen to be like in NS - icon caching - resize with button2 don't raise window - option to change menu highlight color - lower miniwindow when miniaturize - option for setting icon size - keyboard traversal of menus - all dock state information saved across sessions - must hold Alt to undock running app - added focused window indicator in window list - CirculateRaise option - ModifierKey option - fixed duplicated menu bug Changes since version 0.6.2: ............................ - fixed problem with window command menu (click3 on titlebar) - fixed appmenus that were not unmapped when focus switched from the app - fixed bug with exit dialog when NEWSTYLE is defined - miniaturized menus are not mapped when activating an app Changes since version 0.6.1: ............................ - dynamic update of WM_COMMAND hint - fixed crash bug with dock and application icons - fixed bug with application defined menus - selecting a window through the window list, brings windows that fall outside the visible area back - fixed bug with multiple window moving - various platform specific bug fixes - removed grab icon application icons Changes since version 0.6.0: ............................ - --enable-shape is the default now - fixed group leader change for windows that are already mapped - NEWSTYLE button images have the same color as the title text - fixed noappicon bugs related to dock - fixed starticonic hint (-iconic) - broke menu code so that it will not work as OpenStep says. ie: submenus are not mapped below the mainmenu. If you want it to be like before, undefine SINGLE_MENULEVEL in src/wconfig.h - switch to next window (alt+tab) raises the window - fixed window title handling for titles that don't fit on the window - drag select for window command menu - gamma correction for 8bpp - fixed bug in full docks - workspace switching by window drag - added patches for smart and random placement - added dgradient fix patch - workspace state restoration after restart - added PNG support to wrlib - changed RLoadImage() support in wrlib - set DISPLAY environment variable to what was passed with -display option - added animations preference option - fixed winitrc - restore main menu, workspace menu and window list menu after restart - changed gethostname() with getenv("HOSTNAME") || getenv("HOST") to setup cpp - fixed bug with program defined titlebar button image in NEWSTYLE - added kluge for buggy MetroX servers (look at wconfig.h) - ignore CapsLock when handling windows - ability to drag windows between workspaces - ability to drag icons with a icon window - fixed bug with arrange icons for appicons without any window mapped - display window's workspace in window list menu - if a sticked menu is opened again, a new instance of the menu is created Changes since version 0.5.1: ............................ - fixed bug that crashed wmaker on HPs - fixed bug that crashed wmaker with the window list - fixed bug with window focus after window miniturization - fixed bug that made wmaker crash when it didn't figure a docked app has quit. (probably the same problem with XFMail and others) - documented ColormapFollowsMouse option - workspace renaming through current selection - autolaunch indicator - dbl-click3 will not start app anymore - better handling of long text - limited windowlist menu width - fixed arrange icons - changed geometry display to account for base size if it's not in the technical drawing style - meta-dbl-click on appicon does hide others - changed RaiseOnFocus option with RaiseDelay - dbl-click on root window or open submenu entry brings the root menu to the cursor. - removed AllowMenuLowering option and made menu ontopness work like on dock - changed meta-click on dock with meta-dbl-click, to change ontopness - moved gradient and image code to a library. - added support for icons with alpha channel - simplified dithering setup - many clean ups - not-so-good looking gradients for 8bpp - changed application menu stuff - started wmaker client library. Try out test/test.c Changes since version 0.5.0: ............................ - startup stuff has changed!!! Instead of placing ~/.workspace_state in your .xinitrc, you must now call ~/gnustep/Library/WindowMaker/winitrc from there. Don't forget to update your menu files!!! Read the INSTALL file. - persistent root background colors (read the above item) - Spanish, Korean, Czech, Swedish and Dutch locales - menu commands can use the current selection as parameter (read the menu config file) - fixed bug in dock icons with 3 dots on some platforms - opaque window move - skipwindowlist option - better miniaturize animation - new silly animation(s) if --enable-superfluous is configured - button3 on miniaturize button hides the app - fixed bug on multi-window move - keyboard bindings ignores capslock state (but not NumLock, ScrollLock etc.) - fixed focus in unhide under sloppy focus mode Changes since version 0.4.3: ............................ - dock remembers ontop state - OnTopTransients works correctly now - removed startWithdrawn option - added option to put text over icons (iconText) - fixed slippery window move - fixed another bug with NEWSTYLE - fixed problem with large app_options files - more i18n stuff. japanese, german and portuguese locale support. Changes since version 0.4.2: ............................ - fixed black icon bug - fixed icon specification for dock - fixed docking on left side dock - fixed bug in window command menu - fixed bug in narrow windows with NEWSTYLE enabled - fixed Hide Others crash - I18N fixes - hopefully stable again Changes since version 0.4.1: ............................ - fixed some crash on startup bugs - fixed bug that made excessive use of colors in PseudoColor - (re)binding of application icons to Dock icons on (re)start - startWithdrawn window attribute - finished window list menu (button2) - implemented GSClientResizebar, GSMenuWindow, GSIconWindow, GSFullKeyboardEvents - implemented WINDOWMAKER_COMMAND ClientMessage handler - OffiX DND support in icons (for Trash) - portability fix for SunOS 4.x - fixed hide for windows with .noAppIcon: true - remember if window was hidden on restart - remember workspace on restart - do not auto-launch apps that are already running - asclock (and other docked apps) do not die on restart - forced application docking for undockable apps. See utils/dockapp - raiseOnFocus option for focus-follow-mouse mode - window command menu - fixed NEWSTYLE titlebars and converted menu titlebar button too Changes since version 0.4.0: ............................ - fixed bug in I18N support - fixed bug that caused crash when patched xv was ran - cosmetic fix for transparent icon images - tell about apps that couldn't be launched - auto-launch in dock - patch for asclock to work on dock - raise/lower dock - fixed bug in workspace change when there are no windows - allow screen side change for dock Changes since version 0.3.2: ............................ - application icons (not mini-windows) like I think how it is on NEXTSTEP(tm) - fixed "slippery" icon movement - added a Dock (not for GNUstep, as it will have it's own) Changes since version 0.3.1: ............................ - fixed bug that caused window frames to be left after window closure - submenus are opened to the left/right if it is too close to the right/left edge (not perfect, but better than before) - remember window state (shade) on restart - fixed resize bug - FreeBSD portability fixes - fixed bug in workspace menu with more than 9 workspaces - removed _GNUSTEP_WM_RESIZE_WINDOW, _GNUSTEP_WM_RESIZED_WINDOW protocols - fixed bug that caused crash when closing miniaturized apps - fixed little bug in resize - changed default shortcuts to be closer to NEXTSTEP(tm) (raise/lower window) Changes since version 0.3.0: ............................ - added diagonal gradients - ignoreHideOthers window flag - optimized/fixed window raising and lowering - fixed menu handling: don't need to click on the menu after it's opened to select items, just drag the pointer - _GNUSTEP_WM_RESIZE_WINDOW, _GNUSTEP_WM_RESIZED_WINDOW protocols - application specified titlebar button pixmaps - transient owners get a different titlebar color when the focus is in the transient (e.g, in NeXTese: mainWindow is highlighted correctly when the keyWindow is a panel) - when transient is closed, it's owner always get the focus - fixed XGrabButton/BadAccess bug - fixed window_count error (this time I'm 90% sure) - fixed focusNextWindow through Alt-Tab bug with non-focusable windows - fixed resize in windows without a titlebar - fixed bug with PAspect XSizeHint Changes since version 0.2.2: ............................ - fixed problem that made multiple applications be launched with accidental dbl-clicks on the root menu. - _GNUSTEP_WM_MINIATURIZE_WINDOW protocol - added hideOtherApplications command (meta-dbl-click3 on titlebar) - new SHOW_ALL (windows) menu command - new HIDE_OTHERS (windows) menu command - changed icon/window title to show only end part of text if it doesn't fit - remade application group code (more stable) - undid stacking code change from 0.2.0 - fixed bug that caused hangs (not sure) - fixed bug that caused window_count error and associated crashes - remade application defined menus - vertical gradient - I18N support - fixed multiple window selection bug with windows in other workspaces - changed workspace numbering - fixed problem with series of X errors when a window is destroyed - fixed cosmetic bug in gradient bevels - added UseSaveUnders option (problem with Netscape redrawing) Changes since version 0.2.1: ............................ - fixed segfault on startup - changed source tree Changes since version 0.2.0: ............................ - fixed various miscelaneous bugs - fixed icon pixmap update code - fixed bugs related to focus-follows-mouse mode (workspace switching, keyboard focus after unshading etc) - changed some options in preferences - changed window stacking order code - fixed icon handling - added option to display the root menu on startup - shaded windows are unshaded on restart, instead of getting iconified - fixed {ResizeDisplay,MoveDisplay}=corner - fixed problem with icon windows during restart - works OK from XDM Changes since version 0.1.3: ............................ - fixed color freeing bug - fixed bug that allowed a window to keep the input focus when you focus a shaded window - fixed bug that allowed on top window to be lowered - disappearing xconsole and other initial-state==IconicState windows fixed - menus open always inside screen area - open submenus are moved with their parents - keyboard support - faster menu drawing - hide for applications that use window_group hint fixed (LyX et al) - dynamic font setup (just a test) Changes since version 0.1.2: ............................ - worked around problems when freeing colors under some buggy X servers - vertical gradients - floatingmenu option Changes since version 0.1.1: ............................ - fixed list.c to compile in non-debug mode - sticked root menus cannot be unmapped clicking button3 (workspace unreachable problem) Changes since version 0.1.0: ............................ - texture structure changed - application menu prototype (not finished) - arrange icons command - menu window levels (menus are kept on top of other windows) - crash-on-alt-move-in-borderless-windows fixed - lot's of other bugs killed - delete last workspace command - titlebar text justification - start iconic hint is honored now - font setting in preferences - color setting in preferences - window dragging only occurs after 4 pixels of movement - restart command Changes since version 0.0.4: ............................ - changed configuration file syntax (just a little bit) - removed box class - finished multiple window move - changed window list order from focus order to stacking order - implemented OpenStep window levels and OnTop windows - added refresh command to menu - added shutdown command to menu - make default menu when menu config can't be parsed - finally added window focusing when clicking on client window area - added visual clue to menu item invocation - shaped window support - in-memory size got bigger than AfterStep - various client window state transition bug fixes - icon placement - added multiple workspaces (no Pager yet) - added option for submenu alignment in relation to their parents - rewrote preference parser - added focus-follows-mouse and sloppy-focus - added cpp preprocessing - zombie process bug fixed - interactive and dumb (cascade) window placement - floating transient windows - disable mapped submenu entry on parent - added colormap handling stolen from fvwm (temporary) Changes since version 0.0.3: ............................ - hide application implemented (just for apps that have the window_group field of WMHints set or the WM_CLIENT_LEADER property set, apparently most Xt based apps) - fixed a crashing bug caused by icons - internal change on button pixmap structure and other places - handling of property changes on mapped windows - fixed bug in event handling (MapRequest) - added support for systems without libXpm - added configure script, although it's still almost useless. - remade icon painting - icon background pixmap - internal icon pixmap dithering �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/COPYING.WTFPL��������������������������������������������������������������������0000644�0001750�0001750�00000002036�13431646201�012715� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ The following artwork were created by Banlu Kemiyatorn and are distributed through the license in this file: GNUstepGlow.tiff GNUstepGlow.xpm Magnify.tiff Magnify.xpm Terminal.tiff Terminal.xpm TerminalGNUstep.tiff TerminalGNUstep.xpm TerminalLinux.tiff TerminalLinux.xpm tiff/msty1.tiff tiff/msty2.tiff tiff/msty3.tiff xpm/msty1.xpm xpm/msty2.xpm xpm/msty3.xpm WPrefs.tiff WPrefs.xpm tiff/tdel.tiff tiff/tedit.tiff tiff/textr.tiff tiff/tnew.tiff xpm/tdel.xpm xpm/tedit.xpm xpm/textr.xpm xpm/tnew.xpm inside Resources/Images.tiff "the little house", "the trash can", "the folder", "the floppies" Ear.png Ftp.png ICQ.png Jabber.png Mozilla.png Pen.png Pencil.png Shell.png Speaker.png XChat.png do What The Fuck you want to Public License Version 1.0, March 2000 Copyright (C) 2000 Banlu Kemiyatorn (]d). 136 Nives 7 Jangwattana 14 Laksi Bangkok Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Ok, the purpose of this license is simple and you just DO WHAT THE FUCK YOU WANT TO. ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/����������������������������������������������������������������������0000755�0001750�0001750�00000000000�13642365214�013041� 5����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/po/�������������������������������������������������������������������0000755�0001750�0001750�00000000000�13642365214�013457� 5����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/po/it.po��������������������������������������������������������������0000644�0001750�0001750�00000157463�13431646201�014365� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# File dei messaggi in italiano per WPrefs # Italian message file for WPrefs # Copyright (C) 2001 Free Software Foundation, Inc. # # Michele Campeotto <micampe@f2s.com>, 2001. # msgid "" msgstr "" "Project-Id-Version: WPrefs 0.42\n" "POT-Creation-Date: 2001-05-21 11:58+0200\n" "PO-Revision-Date: 2001-05-21\n" "Last-Translator: Michele Campeotto <micampe@f2s.com\n" "Language-Team: Italian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: unknown\n" #: ../../WPrefs.app/main.c:74 #, c-format msgid "usage: %s [options]\n" msgstr "Uso: %s [opzioni]\n" #: ../../WPrefs.app/main.c:75 msgid "options:" msgstr "opzioni:" #: ../../WPrefs.app/main.c:76 msgid " -display <display>\tdisplay to be used" msgstr " -display <display>\tdisplay da usare" #: ../../WPrefs.app/main.c:77 msgid " --version\t\tprint version number and exit" msgstr " --version\t\tvisualizza il numero di versione ed esci" #: ../../WPrefs.app/main.c:78 msgid " --help\t\tprint this message and exit" msgstr " --help\t\tstampa questo messaggio ed esci" #: ../../WPrefs.app/main.c:137 #, c-format msgid "too few arguments for %s" msgstr "Mancano parametri per %s." #: ../../WPrefs.app/main.c:159 msgid "X server does not support locale" msgstr "Il server X non supporta la localizzazione." #: ../../WPrefs.app/main.c:162 msgid "cannot set locale modifiers" msgstr "Impossibile impostare i modificatori del locale." #: ../../WPrefs.app/main.c:168 #, c-format msgid "could not open display %s" msgstr "Impossibile aprire il display %s." #: ../../WPrefs.app/main.c:176 msgid "could not initialize application" msgstr "Impossibile inizializzare l'applicazione." #: ../../WPrefs.app/WPrefs.c:259 msgid "Window Maker Preferences" msgstr "Configurazione di Window Maker" #: ../../WPrefs.app/WPrefs.c:283 msgid "Revert Page" msgstr "Ripristina pagina" #: ../../WPrefs.app/WPrefs.c:289 msgid "Revert All" msgstr "Ripristina tutto" #: ../../WPrefs.app/WPrefs.c:295 msgid "Save" msgstr "Salva" #: ../../WPrefs.app/Appearance.c:2294 ../../WPrefs.app/WPrefs.c:301 msgid "Close" msgstr "Chiudi" #: ../../WPrefs.app/WPrefs.c:308 msgid "Balloon Help" msgstr "Mostra suggerimenti" #: ../../WPrefs.app/WPrefs.c:333 msgid "Window Maker Preferences Utility" msgstr "Utilità di Configurazione di Window Maker" #: ../../WPrefs.app/WPrefs.c:340 #, c-format msgid "Version %s for Window Maker %s or newer" msgstr "Versione %s per Window Maker %s o successivo" #: ../../WPrefs.app/WPrefs.c:348 msgid "Starting..." msgstr "Avvio..." #: ../../WPrefs.app/WPrefs.c:354 msgid "" "Programming/Design: Alfredo K. Kojima\n" "Artwork: Marco van Hylckama Vlieg, Largo et al\n" "More Programming: James Thompson et al" msgstr "" "Programmazione/Progetto: Alfredo K. Kojima\n" "Grafica: Marco van Hylckama Vlieg, Largo e altri\n" "Altra Programmazione: James Thompson e altri" #: ../../WPrefs.app/WPrefs.c:454 #, c-format msgid "could not locate image file %s\n" msgstr "Impossibile trovare il file di immagine %s\n" #: ../../WPrefs.app/Appearance.c:1965 ../../WPrefs.app/Configurations.c:242 #: ../../WPrefs.app/Configurations.c:254 ../../WPrefs.app/Focus.c:315 #: ../../WPrefs.app/Focus.c:326 ../../WPrefs.app/MenuPreferences.c:135 #: ../../WPrefs.app/MenuPreferences.c:146 #: ../../WPrefs.app/MenuPreferences.c:174 #: ../../WPrefs.app/MenuPreferences.c:189 ../../WPrefs.app/MouseSettings.c:560 #: ../../WPrefs.app/MouseSettings.c:571 ../../WPrefs.app/WPrefs.c:557 #: ../../WPrefs.app/WPrefs.c:582 #, c-format msgid "could not load icon file %s" msgstr "Impossibile caricare il file dell'icona %s" #: ../../WPrefs.app/WPrefs.c:669 #, c-format msgid "could not load image file %s:%s" msgstr "Impossibile trovare il file di immagine %s:%s" #: ../../WPrefs.app/WPrefs.c:688 msgid "Loading Window Maker configuration files..." msgstr "Carico i file di configurazione di Window Maker..." #: ../../WPrefs.app/WPrefs.c:692 msgid "Initializing configuration panels..." msgstr "Inizializzo i pannelli di configurazione..." #: ../../WPrefs.app/WPrefs.c:726 msgid "" "WPrefs is free software and is distributed WITHOUT ANY\n" "WARRANTY under the terms of the GNU General Public License." msgstr "" "WPrefs è software libero ed è distribuito SENZA NESSUNA\n" "GARANZIA nei termini della GNU General Public License." #: ../../WPrefs.app/WPrefs.c:755 ../../WPrefs.app/WPrefs.c:835 #, c-format msgid "Window Maker domain (%s) is corrupted!" msgstr "Il dominio di Window Maker (%s) è rovinato!" #: ../../WPrefs.app/Font.c:330 ../../WPrefs.app/Menu.c:1533 #: ../../WPrefs.app/MouseSettings.c:140 ../../WPrefs.app/MouseSettings.c:160 #: ../../WPrefs.app/TexturePanel.c:606 ../../WPrefs.app/TexturePanel.c:686 #: ../../WPrefs.app/Themes.c:96 ../../WPrefs.app/WPrefs.c:756 #: ../../WPrefs.app/WPrefs.c:761 ../../WPrefs.app/WPrefs.c:779 #: ../../WPrefs.app/WPrefs.c:789 ../../WPrefs.app/WPrefs.c:799 #: ../../WPrefs.app/WPrefs.c:836 ../../WPrefs.app/WPrefs.c:841 msgid "Error" msgstr "Errore" #: ../../WPrefs.app/Font.c:330 ../../WPrefs.app/Menu.c:1533 #: ../../WPrefs.app/MouseSettings.c:142 ../../WPrefs.app/MouseSettings.c:162 #: ../../WPrefs.app/TexturePanel.c:607 ../../WPrefs.app/TexturePanel.c:688 #: ../../WPrefs.app/TexturePanel.c:1522 ../../WPrefs.app/Themes.c:98 #: ../../WPrefs.app/WPrefs.c:756 ../../WPrefs.app/WPrefs.c:761 #: ../../WPrefs.app/WPrefs.c:781 ../../WPrefs.app/WPrefs.c:793 #: ../../WPrefs.app/WPrefs.c:799 ../../WPrefs.app/WPrefs.c:806 #: ../../WPrefs.app/WPrefs.c:836 ../../WPrefs.app/WPrefs.c:841 msgid "OK" msgstr "Ok" #: ../../WPrefs.app/WPrefs.c:759 #, c-format msgid "Could not load Window Maker domain (%s) from defaults database." msgstr "" "Impossibile caricare il dominio di Window Maker (%s) dal database delle " "impostazioni predefinite." #: ../../WPrefs.app/WPrefs.c:776 msgid "could not extract version information from Window Maker" msgstr "Impossibile leggere le informazioni di versione da Window Maker." #: ../../WPrefs.app/WPrefs.c:777 msgid "Make sure wmaker is in your search path." msgstr "Assicurarsi che wmaker sia presente nel percorso di ricerca ($PATH)." #: ../../WPrefs.app/WPrefs.c:780 msgid "" "Could not extract version from Window Maker. Make sure it is correctly " "installed and is in your PATH environment variable." msgstr "" "Impossibile leggere le informazioni di versione da Window Maker. Assicurarsi " "che sia correttamente installato e che sia presente nel percorso di ricerca " "($PATH)." #: ../../WPrefs.app/WPrefs.c:790 msgid "" "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." msgstr "" "Impossibile leggere le informazioni di versione da Window Maker. Assicurarsi " "che sia correttamente installato e che sia presente nel percorso di ricerca " "($PATH)." #: ../../WPrefs.app/WPrefs.c:797 #, c-format msgid "" "WPrefs only supports Window Maker 0.18.0 or newer.\n" "The version installed is %i.%i.%i\n" msgstr "" "WPrefs supporta solo Window Maker 0.18.0 o successivo.\n" "La versione installata è %i.%i.%i\n" #: ../../WPrefs.app/WPrefs.c:804 #, 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, che è installato in questo sistema, non è " "completamente supportato da questa versione di WPrefs." #: ../../WPrefs.app/Menu.c:1568 ../../WPrefs.app/WPrefs.c:806 msgid "Warning" msgstr "Attenzione" #: ../../WPrefs.app/WPrefs.c:817 #, c-format msgid "could not run \"%s --global_defaults_path\"." msgstr "Impossibiled eseguire \"%s --global_defaults_path\"." #: ../../WPrefs.app/WPrefs.c:839 #, c-format msgid "Could not load global Window Maker domain (%s)." msgstr "Impossibile caricare il dominio globale di Window Maker (%s)." #: ../../WPrefs.app/WPrefs.c:1088 #, c-format msgid "" "bad speed value for option %s\n" ". Using default Medium" msgstr "" "Valore di velocità errato per l'opzione %s\n" "Uso Medium" #: ../../WPrefs.app/Appearance.c:1131 msgid "Select File" msgstr "Selezione file" #: ../../WPrefs.app/Appearance.c:1533 msgid "Focused Window" msgstr "Finestra attiva" #: ../../WPrefs.app/Appearance.c:1537 msgid "Unfocused Window" msgstr "Finestra non attiva" #: ../../WPrefs.app/Appearance.c:1541 msgid "Owner of Focused Window" msgstr "Proprietario della finestra attiva" #: ../../WPrefs.app/Appearance.c:1545 ../../WPrefs.app/Appearance.c:1862 msgid "Menu Title" msgstr "Titolo menu" #: ../../WPrefs.app/Appearance.c:1549 ../../WPrefs.app/Appearance.c:1551 msgid "Normal Item" msgstr "Normale" #: ../../WPrefs.app/Appearance.c:1555 msgid "Disabled Item" msgstr "Inattivo" #: ../../WPrefs.app/Appearance.c:1564 msgid "Highlighted" msgstr "Evidenziato" #: ../../WPrefs.app/Appearance.c:1755 msgid "Texture" msgstr "Trama" #: ../../WPrefs.app/Appearance.c:1763 msgid "Titlebar of Focused Window" msgstr "Titolo della finestra attiva" #: ../../WPrefs.app/Appearance.c:1764 msgid "Titlebar of Unfocused Windows" msgstr "Titolo delle finestre inattive" #: ../../WPrefs.app/Appearance.c:1765 msgid "Titlebar of Focused Window's Owner" msgstr "Titolo del padre della finestra attiva" #: ../../WPrefs.app/Appearance.c:1766 msgid "Window Resizebar" msgstr "Barra di ridimensionamento" #: ../../WPrefs.app/Appearance.c:1767 msgid "Titlebar of Menus" msgstr "Titolo dei menù" #: ../../WPrefs.app/Appearance.c:1768 msgid "Menu Items" msgstr "Voci dei menù" #: ../../WPrefs.app/Appearance.c:1769 msgid "Icon Background" msgstr "Sfondo delle icone" #: ../../WPrefs.app/Appearance.c:1784 msgid "" "Double click in the texture you want to use\n" "for the selected item." msgstr "" "Doppio click sulla trama da usare\n" "per la voce selezionata." #: ../../WPrefs.app/Appearance.c:1798 msgid "New" msgstr "Nuova" #: ../../WPrefs.app/Appearance.c:1802 msgid "Create a new texture." msgstr "Crea una nuova trama." #: ../../WPrefs.app/Appearance.c:1810 msgid "Extract..." msgstr "Estrai..." #: ../../WPrefs.app/Appearance.c:1814 msgid "Extract texture(s) from a theme or a style file." msgstr "Estrai le trame da un tema o da un file di stile." #: ../../WPrefs.app/Appearance.c:1824 msgid "Edit" msgstr "Modifica" #: ../../WPrefs.app/Appearance.c:1827 msgid "Edit the highlighted texture." msgstr "Modifica la trama selezionata." #: ../../WPrefs.app/Appearance.c:1835 ../../WPrefs.app/TexturePanel.c:1310 msgid "Delete" msgstr "Elimina" #: ../../WPrefs.app/Appearance.c:1839 msgid "Delete the highlighted texture." msgstr "Cancella la trama selezionata." #: ../../WPrefs.app/Appearance.c:1852 msgid "Color" msgstr "Colore" #: ../../WPrefs.app/Appearance.c:1859 msgid "Focused Window Title" msgstr "Titolo della finestra attiva" #: ../../WPrefs.app/Appearance.c:1860 msgid "Unfocused Window Title" msgstr "Titolo delle finestre inattive" #: ../../WPrefs.app/Appearance.c:1861 msgid "Owner of Focused Window Title" msgstr "Titolo del padre della finestra attiva" #: ../../WPrefs.app/Appearance.c:1863 msgid "Menu Item Text" msgstr "Testo delle voci normali" #: ../../WPrefs.app/Appearance.c:1864 msgid "Disabled Menu Item Text" msgstr "Testo delle voci inattive" #: ../../WPrefs.app/Appearance.c:1865 msgid "Menu Highlight Color" msgstr "Selezione" #: ../../WPrefs.app/Appearance.c:1866 msgid "Highlighted Menu Text Color" msgstr "Testo selezionato del menu" #: ../../WPrefs.app/Appearance.c:1905 msgid "Background" msgstr "Sfondo" #: ../../WPrefs.app/Appearance.c:1917 ../../WPrefs.app/TexturePanel.c:1497 msgid "Browse..." msgstr "Sfoglia..." #: ../../WPrefs.app/Appearance.c:1930 msgid "Options" msgstr "Opzioni" #: ../../WPrefs.app/Appearance.c:1937 msgid "Menu Style" msgstr "Stile del menu" #: ../../WPrefs.app/Appearance.c:1979 msgid "Title Alignment" msgstr "Allineamento titoli" #: ../../WPrefs.app/Appearance.c:1986 msgid "Left" msgstr "Sinistra" #: ../../WPrefs.app/Appearance.c:1989 ../../WPrefs.app/TexturePanel.c:1511 #: ../../WPrefs.app/Workspace.c:270 msgid "Center" msgstr "Centro" #: ../../WPrefs.app/Appearance.c:1992 msgid "Right" msgstr "Destra" #: ../../WPrefs.app/Appearance.c:2216 msgid "Appearance Preferences" msgstr "Opzioni all'aspetto" #: ../../WPrefs.app/Appearance.c:2218 msgid "" "Background texture configuration for windows,\n" "menus and icons." msgstr "" "Configurazione delle trame di sfondo per\n" "finestre, menu e icone." #: ../../WPrefs.app/Appearance.c:2263 msgid "Extract Texture" msgstr "Estrai trama" #: ../../WPrefs.app/Appearance.c:2283 msgid "Textures" msgstr "Trame" #: ../../WPrefs.app/Appearance.c:2299 msgid "Extract" msgstr "Estrai" #: ../../WPrefs.app/Configurations.c:150 ../../WPrefs.app/Configurations.c:156 #: ../../WPrefs.app/MouseSettings.c:490 ../../WPrefs.app/WindowHandling.c:339 #: ../../WPrefs.app/WindowHandling.c:351 ../../WPrefs.app/Workspace.c:90 #: ../../WPrefs.app/Workspace.c:101 #, c-format msgid "could not load icon %s" msgstr "Impossibile caricare l'icona %s" #: ../../WPrefs.app/Configurations.c:164 ../../WPrefs.app/Workspace.c:109 #, c-format msgid "could not process icon %s: %s" msgstr "Impossibile elaborare l'icona %s: %s" #: ../../WPrefs.app/Configurations.c:189 ../../WPrefs.app/Workspace.c:164 #, c-format msgid "could not load image file %s" msgstr "Impossibile caricare il file immagine %s" #: ../../WPrefs.app/Configurations.c:203 msgid "Icon Slide Speed" msgstr "Velocità di scorrimento delle icone" #: ../../WPrefs.app/Configurations.c:209 msgid "Shade Animation Speed" msgstr "Velocità dell'arrotolamento" #: ../../WPrefs.app/Configurations.c:271 msgid "Smooth Scaling" msgstr "Scalatura levigata" #: ../../WPrefs.app/Configurations.c:272 msgid "" "Smooth scaled background images, neutralizing\n" "the `pixelization' effect. This will slow\n" "down loading of background images considerably." msgstr "" "Immagini di sfondo levigate: neutralizza\n" "l'effetto 'scalettatura'. Questo rallenterà\n" "considerevolmente il caricamento delle\n" "immagini di sfondo." #: ../../WPrefs.app/Configurations.c:313 msgid "Titlebar Style" msgstr "Barra del titolo" #: ../../WPrefs.app/Configurations.c:351 msgid "Animations and Sound" msgstr "Animazioni e suoni" #: ../../WPrefs.app/Configurations.c:357 msgid "Animations" msgstr "Animazioni" #: ../../WPrefs.app/Configurations.c:368 msgid "" "Disable/enable animations such as those shown\n" "for window miniaturization, shading etc." msgstr "" "Attiva/disattiva le animazioni per la riduzione ad icona\n" "delle finestre, l'arrotolamento ed altre." #: ../../WPrefs.app/Configurations.c:376 msgid "Superfluous" msgstr "Superflue" #: ../../WPrefs.app/Configurations.c:387 msgid "" "Disable/enable `superfluous' features and\n" "animations. These include the `ghosting' of the\n" "dock when it's being moved to another side and\n" "the explosion animation when undocking icons." msgstr "" "Attiva/disattiva effetti ed animazioni superflue.\n" "Queste comprendono la trasparenza del dock quando\n" "viene spostato o l'esplosione delle icone quando\n" "vengono staccate dal Dock." #: ../../WPrefs.app/Configurations.c:397 msgid "Sounds" msgstr "Suoni" #: ../../WPrefs.app/Configurations.c:408 msgid "" "Disable/enable support for sound effects played\n" "for actions like shading and closing a window.\n" "You will need a module distributed separately\n" "for this. You can get it at:\n" "http://shadowmere.student.utwente.nl/" msgstr "" "Attiva/disattiva gli effetti sonori associati\n" "agli eventi del gestore di finestre. Sarà \n" "necessario un modulo separato che è possibile\n" "trovare all'indirizzo:\n" "http://shadowmere.student.utwente.nl/" #: ../../WPrefs.app/Configurations.c:419 msgid "" "Note: sound requires a module distributed\n" "separately" msgstr "" "Nota: i suoni richiedono un modulo\n" "distribuito separatemente." #: ../../WPrefs.app/Configurations.c:429 msgid "Dithering colormap for 8bpp" msgstr "Approssimazione dei colori a 8 bit" #: ../../WPrefs.app/Configurations.c:431 msgid "" "Number of colors to reserve for Window Maker\n" "on displays that support only 8bpp (PseudoColor)." msgstr "" "Numero di colori da riservare a Window Maker\n" "sui display che supportano solo 8 bit di colore." #: ../../WPrefs.app/Configurations.c:438 msgid "Disable dithering in any visual/depth" msgstr "Disabilita l'approssimazione dei colori." #: ../../WPrefs.app/Configurations.c:459 msgid "" "More colors for\n" "applications" msgstr "" "Più colori per\n" "le applicazioni" #: ../../WPrefs.app/Configurations.c:466 msgid "" "More colors for\n" "Window Maker" msgstr "" "Più colori per\n" "WindowMaker" #: ../../WPrefs.app/Configurations.c:521 msgid "Other Configurations" msgstr "Altre opzioni" #: ../../WPrefs.app/Configurations.c:523 msgid "" "Animation speeds, titlebar styles, various option\n" "toggling and number of colors to reserve for\n" "Window Maker on 8bit displays." msgstr "" "Velocità delle animazioni, stili della barra del tiolo,\n" "opzioni per la modalità a 8 bit di colore e altre opzioni\n" "per l'aspetto di Window Maker." #: ../../WPrefs.app/Expert.c:75 msgid "" "Disable miniwindows (icons for miniaturized windows). For use with KDE/GNOME." msgstr "" "Disabilita le icone per le finestre ridotte a icona. Per usare con GNOME o " "KDE." #: ../../WPrefs.app/Expert.c:76 msgid "Do not set non-WindowMaker specific parameters (do not use xset)." msgstr "Non cambiare parametri esterni a Window Maker (non usare xset)." #: ../../WPrefs.app/Expert.c:77 msgid "Automatically save session when exiting Window Maker." msgstr "Salva automaticamente la sessione uscendo da Window Maker." #: ../../WPrefs.app/Expert.c:78 msgid "Use SaveUnder in window frames, icons, menus and other objects." msgstr "Usa SaveUnder nelle finestre, icone, menu e altri oggetti." #: ../../WPrefs.app/Expert.c:79 msgid "Use Windoze style cycling." msgstr "Usa il ciclo finestre in stile Windoze." #: ../../WPrefs.app/Expert.c:80 msgid "Disable confirmation panel for the Kill command." msgstr "Disabilita il dialogo di conferma per il comando di uccisione." #: ../../WPrefs.app/Expert.c:81 msgid "Disable cycling of highlighting color for selected icons." msgstr "Disabilita l'animazione per le icone selezionate." #: ../../WPrefs.app/Expert.c:115 msgid "Expert User Preferences" msgstr "Opzioni per utenti esperti" #: ../../WPrefs.app/Expert.c:117 msgid "" "Options for people who know what they're doing...\n" "Also have some other misc. options." msgstr "" "Opzioni per chi sa cosa sta facendo...\n" "Ci sono anche altre opzioni miste." #: ../../WPrefs.app/Focus.c:83 #, c-format msgid "bad option value %s for option FocusMode. Using default Manual" msgstr "Valore %s errato per l'opzione FocusMode. Uso Manual" #: ../../WPrefs.app/Focus.c:98 #, c-format msgid "bad option value %s for option ColormapMode. Using default Auto" msgstr "Valore %s errato per l'opzione ColormapMode. Uso Auto" #: ../../WPrefs.app/Focus.c:196 msgid "Manual: Click on the window to set keyboard input focus" msgstr "Clicca sulla finestra per assegnarle il focus di tastiera" #: ../../WPrefs.app/Focus.c:200 msgid "Auto: Set keyboard input focus to the window under the mouse pointer" msgstr "Assegna il focus di tastiera alla finestra sotto al puntatore" #: ../../WPrefs.app/Focus.c:248 msgid "Input Focus Mode" msgstr "Modalità di focus" #: ../../WPrefs.app/Focus.c:253 msgid "Click window to focus" msgstr "Clicca per il focus" #: ../../WPrefs.app/Focus.c:254 msgid "Focus follows mouse" msgstr "Il focus segue il mouse" #: ../../WPrefs.app/Focus.c:255 msgid "\"Sloppy\" focus" msgstr "Focus intelligente \"Sloppy\"" #: ../../WPrefs.app/Focus.c:270 msgid "Install colormap from the window..." msgstr "Installa la mappa dei colori della finestra..." #: ../../WPrefs.app/Focus.c:275 msgid "...that has the input focus" msgstr "...che ha il focus" #: ../../WPrefs.app/Focus.c:280 msgid "...that's under the mouse pointer" msgstr "...che è sotto al puntatore" #: ../../WPrefs.app/Focus.c:289 msgid "Automatic Window Raise Delay" msgstr "Ritardo per il sollevamento automatico" #: ../../WPrefs.app/Focus.c:346 ../../WPrefs.app/MouseSettings.c:601 msgid "ms" msgstr "ms" #: ../../WPrefs.app/Focus.c:363 msgid "Do not let applications receive the click used to focus windows" msgstr "Evita che le applicazioni ricevano il click usato per assegnare il focus" #: ../../WPrefs.app/Focus.c:369 msgid "Automatically focus new windows" msgstr "Assegna automaticamente il focus alle nuove finestre" #: ../../WPrefs.app/Focus.c:390 msgid "Window Focus Preferences" msgstr "Opzioni del focus delle finestre" #: ../../WPrefs.app/Focus.c:392 msgid "" "Keyboard focus switching policy, colormap switching\n" "policy for 8bpp displays and other related options." msgstr "" "Modalità di cambio del focus, cambio della mappa dei\n" "colori e altre opzioni correlate." #: ../../WPrefs.app/Font.c:277 msgid "Could not locate font information file WPrefs.app/font.data" msgstr "" "Impossibile trovare il file di informazioni sui font WPrefs.app/font.data" #: ../../WPrefs.app/Font.c:283 msgid "Could not read font information file WPrefs.app/font.data" msgstr "" "Impossibile leggere il file di informazioni sui font WPrefs.app/font.data" #: ../../WPrefs.app/Font.c:294 msgid "" "Invalid data in font information file WPrefs.app/font.data.\n" "Encodings data not found." msgstr "" "Dati non validi nel file di informazioni sui font WPrefs.app/font.data.\n" "Dati sulle codifiche non trovati." #: ../../WPrefs.app/Font.c:299 msgid "- Custom -" msgstr "" #: ../../WPrefs.app/Font.c:376 msgid "Default Font Sets" msgstr "Font Set predefiniti" #: ../../WPrefs.app/Font.c:389 msgid "Font Set" msgstr "Font Set" #: ../../WPrefs.app/Font.c:418 msgid "Add..." msgstr "Aggiungi..." #: ../../WPrefs.app/Font.c:423 ../../WPrefs.app/Font.c:438 msgid "Change..." msgstr "Modifica..." #: ../../WPrefs.app/Font.c:428 ../../WPrefs.app/Paths.c:288 #: ../../WPrefs.app/Paths.c:319 msgid "Remove" msgstr "Elimina" #: ../../WPrefs.app/Font.c:477 msgid "Font Preferences" msgstr "Opzioni dei font" #: ../../WPrefs.app/Font.c:478 msgid "Font Configurations for Windows, Menus etc" msgstr "Configurazione dei font per le finestre, i menu, ecc." #: ../../WPrefs.app/Icons.c:180 msgid "Icon Positioning" msgstr "Posizionamento delle icone" #: ../../WPrefs.app/Icons.c:227 msgid "Iconification Animation" msgstr "Animazione per riduzione ad icona" #: ../../WPrefs.app/Icons.c:238 msgid "Shrinking/Zooming" msgstr "Riduzione/Ingrandimento" #: ../../WPrefs.app/Icons.c:239 msgid "Spinning/Twisting" msgstr "Rotazione/Distorsione" #: ../../WPrefs.app/Icons.c:240 msgid "3D-flipping" msgstr "Rotazione 3D" #: ../../WPrefs.app/Icons.c:241 ../../WPrefs.app/MouseSettings.c:838 #: ../../WPrefs.app/MouseSettings.c:843 msgid "None" msgstr "Nessuna" #: ../../WPrefs.app/Icons.c:254 msgid "Auto-arrange icons" msgstr "Disponi automaticamente le icone" #: ../../WPrefs.app/Icons.c:256 msgid "Keep icons and miniwindows arranged all the time." msgstr "Mantieni le icone sempre in ordine." #: ../../WPrefs.app/Icons.c:262 msgid "Omnipresent miniwindows" msgstr "Finestre iconificate onnipresenti" #: ../../WPrefs.app/Icons.c:264 msgid "Make miniwindows be present in all workspaces." msgstr "" "Le finestre iconificate sono presenti\n" "in tutte le aree di lavoro." #: ../../WPrefs.app/Icons.c:273 msgid "Icon Size" msgstr "Dimensione icone" #: ../../WPrefs.app/Icons.c:275 msgid "The size of the dock/application icon and miniwindows" msgstr "La dimensione del Dock e delle icone delle applicazioni" #: ../../WPrefs.app/Icons.c:345 msgid "Icon Preferences" msgstr "Opzioni delle icone" #: ../../WPrefs.app/Icons.c:347 msgid "" "Icon/Miniwindow handling options. Icon positioning\n" "area, sizes of icons, miniaturization animation style." msgstr "" "Opzioni di gestione delle icone. Area di\n" "posizionamento, dimensione e animazioni." #: ../../WPrefs.app/KeyboardSettings.c:73 msgid "Initial Key Repeat" msgstr "Ritardo della prima ripetizione" #: ../../WPrefs.app/KeyboardSettings.c:114 msgid "Key Repeat Rate" msgstr "Frequenza delle successive ripetizioni" #: ../../WPrefs.app/KeyboardSettings.c:154 msgid "Type here to test" msgstr "Prova qui" #: ../../WPrefs.app/KeyboardSettings.c:173 msgid "Keyboard Preferences" msgstr "Opzioni della tastiera" #: ../../WPrefs.app/KeyboardSettings.c:175 msgid "Not done" msgstr "Da fare" #: ../../WPrefs.app/KeyboardShortcuts.c:185 ../../WPrefs.app/Menu.c:327 #: ../../WPrefs.app/TexturePanel.c:1528 msgid "Cancel" msgstr "Annulla" #: ../../WPrefs.app/KeyboardShortcuts.c:186 msgid "Press the desired shortcut key(s) or click Cancel to stop capturing." msgstr "Premi la combinazione di tasti desiderata o Annulla per interrompere." #: ../../WPrefs.app/KeyboardShortcuts.c:206 #: ../../WPrefs.app/KeyboardShortcuts.c:454 ../../WPrefs.app/Menu.c:338 #: ../../WPrefs.app/Menu.c:782 msgid "Capture" msgstr "Cattura" #: ../../WPrefs.app/KeyboardShortcuts.c:207 #: ../../WPrefs.app/KeyboardShortcuts.c:462 msgid "Click Capture to interactively define the shortcut key." msgstr "Clicca su cattura per definire interattivamente la scorciatoia." #: ../../WPrefs.app/KeyboardShortcuts.c:362 msgid "Actions" msgstr "Azioni" #: ../../WPrefs.app/KeyboardShortcuts.c:378 msgid "Open applications menu" msgstr "Apri il menu applicazioni" #: ../../WPrefs.app/KeyboardShortcuts.c:379 msgid "Open window list menu" msgstr "Apri la lista delle finestre" #: ../../WPrefs.app/KeyboardShortcuts.c:380 msgid "Open window commands menu" msgstr "Apri il menu delle operazioni sulla finestra" #: ../../WPrefs.app/KeyboardShortcuts.c:381 msgid "Hide active application" msgstr "Nascondi l'applicazione attiva" #: ../../WPrefs.app/KeyboardShortcuts.c:382 msgid "Miniaturize active window" msgstr "Iconifica la finestra attiva" #: ../../WPrefs.app/KeyboardShortcuts.c:383 msgid "Close active window" msgstr "Chiudi la finestra attiva" #: ../../WPrefs.app/KeyboardShortcuts.c:384 msgid "Maximize active window" msgstr "Ingrandisci la finestra attiva" #: ../../WPrefs.app/KeyboardShortcuts.c:385 msgid "Maximize active window vertically" msgstr "Ingrandisci la finestra attiva verticalmente" #: ../../WPrefs.app/KeyboardShortcuts.c:386 msgid "Raise active window" msgstr "Porta davanti la finestra attiva" #: ../../WPrefs.app/KeyboardShortcuts.c:387 msgid "Lower active window" msgstr "Porta dietro la finestra attiva" #: ../../WPrefs.app/KeyboardShortcuts.c:388 msgid "Raise/Lower window under mouse pointer" msgstr "Davanti/Dietro la finestra sotto il puntatore" #: ../../WPrefs.app/KeyboardShortcuts.c:389 msgid "Shade active window" msgstr "Arrotola la finestra attiva" #: ../../WPrefs.app/KeyboardShortcuts.c:390 msgid "Move/Resize active window" msgstr "Sposta/Ridimensiona la finestra attiva" #: ../../WPrefs.app/KeyboardShortcuts.c:391 msgid "Select active window" msgstr "Seleziona la finestra attiva" #: ../../WPrefs.app/KeyboardShortcuts.c:392 msgid "Focus next window" msgstr "Assegna il focus alla finestra successiva" #: ../../WPrefs.app/KeyboardShortcuts.c:393 msgid "Focus previous window" msgstr "Assegna il focus alla finestra precedente" #: ../../WPrefs.app/KeyboardShortcuts.c:394 msgid "Switch to next workspace" msgstr "Vai all'area di lavoro successiva" #: ../../WPrefs.app/KeyboardShortcuts.c:395 msgid "Switch to previous workspace" msgstr "Vai all'area di lavoro precedente" #: ../../WPrefs.app/KeyboardShortcuts.c:396 msgid "Switch to next ten workspaces" msgstr "Vai avanti di dieci aree di lavoro" #: ../../WPrefs.app/KeyboardShortcuts.c:397 msgid "Switch to previous ten workspaces" msgstr "Vai indietro di dieci aree di lavoro" #: ../../WPrefs.app/KeyboardShortcuts.c:398 msgid "Switch to workspace 1" msgstr "Vai all'area di lavoro 1" #: ../../WPrefs.app/KeyboardShortcuts.c:399 msgid "Switch to workspace 2" msgstr "Vai all'area di lavoro 2" #: ../../WPrefs.app/KeyboardShortcuts.c:400 msgid "Switch to workspace 3" msgstr "Vai all'area di lavoro 3" #: ../../WPrefs.app/KeyboardShortcuts.c:401 msgid "Switch to workspace 4" msgstr "Vai all'area di lavoro 4" #: ../../WPrefs.app/KeyboardShortcuts.c:402 msgid "Switch to workspace 5" msgstr "Vai all'area di lavoro 5" #: ../../WPrefs.app/KeyboardShortcuts.c:403 msgid "Switch to workspace 6" msgstr "Vai all'area di lavoro 6" #: ../../WPrefs.app/KeyboardShortcuts.c:404 msgid "Switch to workspace 7" msgstr "Vai all'area di lavoro 7" #: ../../WPrefs.app/KeyboardShortcuts.c:405 msgid "Switch to workspace 8" msgstr "Vai all'area di lavoro 8" #: ../../WPrefs.app/KeyboardShortcuts.c:406 msgid "Switch to workspace 9" msgstr "Vai all'area di lavoro 9" #: ../../WPrefs.app/KeyboardShortcuts.c:407 msgid "Switch to workspace 10" msgstr "Vai all'area di lavoro 10" #: ../../WPrefs.app/KeyboardShortcuts.c:408 msgid "Shortcut for window 1" msgstr "Attiva la finestra 1" #: ../../WPrefs.app/KeyboardShortcuts.c:409 msgid "Shortcut for window 2" msgstr "Attiva la finestra 2" #: ../../WPrefs.app/KeyboardShortcuts.c:410 msgid "Shortcut for window 3" msgstr "Attiva la finestra 3" #: ../../WPrefs.app/KeyboardShortcuts.c:411 msgid "Shortcut for window 4" msgstr "Attiva la finestra 4" #: ../../WPrefs.app/KeyboardShortcuts.c:412 msgid "Shortcut for window 5" msgstr "Attiva la finestra 5" #: ../../WPrefs.app/KeyboardShortcuts.c:413 msgid "Shortcut for window 6" msgstr "Attiva la finestra 6" #: ../../WPrefs.app/KeyboardShortcuts.c:414 msgid "Shortcut for window 7" msgstr "Attiva la finestra 7" #: ../../WPrefs.app/KeyboardShortcuts.c:415 msgid "Shortcut for window 8" msgstr "Attiva la finestra 8" #: ../../WPrefs.app/KeyboardShortcuts.c:416 msgid "Shortcut for window 9" msgstr "Attiva la finestra 9" #: ../../WPrefs.app/KeyboardShortcuts.c:417 msgid "Shortcut for window 10" msgstr "Attiva la finestra 10" #: ../../WPrefs.app/KeyboardShortcuts.c:418 msgid "Switch to Next Screen/Monitor" msgstr "Vai allo schermo successivo" #: ../../WPrefs.app/KeyboardShortcuts.c:419 msgid "Raise Clip" msgstr "Porta davanti la Clip" #: ../../WPrefs.app/KeyboardShortcuts.c:420 msgid "Lower Clip" msgstr "Porta dietro la Clip" #: ../../WPrefs.app/KeyboardShortcuts.c:421 msgid "Raise/Lower Clip" msgstr "Porta davanti/dietro la Clip" #: ../../WPrefs.app/KeyboardShortcuts.c:423 msgid "Toggle keyboard language" msgstr "Cambia la lingua della tastiera" #: ../../WPrefs.app/KeyboardShortcuts.c:437 msgid "Shortcut" msgstr "Scorciatoia" #: ../../WPrefs.app/KeyboardShortcuts.c:448 ../../WPrefs.app/Menu.c:788 msgid "Clear" msgstr "Cancella" #: ../../WPrefs.app/KeyboardShortcuts.c:510 msgid "Keyboard Shortcut Preferences" msgstr "Opzioni delle scorciatoie di tastiera" #: ../../WPrefs.app/KeyboardShortcuts.c:512 msgid "" "Change the keyboard shortcuts for actions such\n" "as changing workspaces and opening menus." msgstr "" "Modifica gli shortcut di tastiera per i comandi\n" "di Window Maker." #: ../../WPrefs.app/Menu.c:477 msgid "New Items" msgstr "Nuove voci" #: ../../WPrefs.app/Menu.c:478 msgid "Sample Commands" msgstr "Comandi di esempio" #: ../../WPrefs.app/Menu.c:479 msgid "Sample Submenus" msgstr "Sottomenu di esempio" #: ../../WPrefs.app/Menu.c:493 msgid "Run Program" msgstr "Esegui programma" #: ../../WPrefs.app/Menu.c:494 msgid "Internal Command" msgstr "Comando interno" #: ../../WPrefs.app/Menu.c:495 msgid "Submenu" msgstr "Sottomenu" #: ../../WPrefs.app/Menu.c:496 msgid "External Submenu" msgstr "Sottomenu esterno" #: ../../WPrefs.app/Menu.c:497 msgid "Generated Submenu" msgstr "Sottomenu generato" #: ../../WPrefs.app/Menu.c:498 msgid "Directory Contents" msgstr "Directory" #: ../../WPrefs.app/Menu.c:499 msgid "Workspace Menu" msgstr "Aree di lavoro" #: ../../WPrefs.app/Menu.c:500 ../../WPrefs.app/MouseSettings.c:840 msgid "Window List Menu" msgstr "Lista finestre" #: ../../WPrefs.app/Menu.c:519 msgid "XTerm" msgstr "XTerm" #: ../../WPrefs.app/Menu.c:522 msgid "rxvt" msgstr "rxvt" #: ../../WPrefs.app/Menu.c:525 msgid "ETerm" msgstr "ETerm" #: ../../WPrefs.app/Menu.c:528 msgid "Run..." msgstr "Esegui..." #: ../../WPrefs.app/Menu.c:531 msgid "Netscape" msgstr "Netscape" #: ../../WPrefs.app/Menu.c:534 msgid "gimp" msgstr "the Gimp" #: ../../WPrefs.app/Menu.c:537 msgid "epic" msgstr "epic" #: ../../WPrefs.app/Menu.c:540 msgid "ee" msgstr "ee" #: ../../WPrefs.app/Menu.c:543 msgid "xv" msgstr "xv" #: ../../WPrefs.app/Menu.c:546 msgid "Acrobat Reader" msgstr "Acrobat Reader" #: ../../WPrefs.app/Menu.c:549 msgid "ghostview" msgstr "ghostview" #: ../../WPrefs.app/Menu.c:552 ../../WPrefs.app/Menu.c:809 msgid "Exit Window Maker" msgstr "Esci da Window Maker" #: ../../WPrefs.app/Menu.c:575 msgid "Debian Menu" msgstr "Menu Debian" #: ../../WPrefs.app/Menu.c:578 msgid "RedHat Menu" msgstr "Menu RedHat" #: ../../WPrefs.app/Menu.c:581 msgid "Menu Conectiva" msgstr "Menu Conectiva" #: ../../WPrefs.app/Menu.c:584 ../../WPrefs.app/Themes.c:250 msgid "Themes" msgstr "Temi" #: ../../WPrefs.app/Menu.c:589 msgid "Bg Images (scale)" msgstr "Sfondi (scala)" #: ../../WPrefs.app/Menu.c:594 msgid "Bg Images (tile)" msgstr "Sfondi (ripeti)" #: ../../WPrefs.app/Menu.c:599 msgid "Assorted XTerms" msgstr "XTerm assortiti" #: ../../WPrefs.app/Menu.c:601 msgid "XTerm Yellow on Blue" msgstr "XTerm giallo su blu" #: ../../WPrefs.app/Menu.c:604 msgid "XTerm White on Black" msgstr "XTerm bianco su nero" #: ../../WPrefs.app/Menu.c:607 msgid "XTerm Black on White" msgstr "XTerm nero su bianco" #: ../../WPrefs.app/Menu.c:610 msgid "XTerm Black on Beige" msgstr "XTerm nero su beige" #: ../../WPrefs.app/Menu.c:613 msgid "XTerm White on Green" msgstr "XTerm bianco su verde" #: ../../WPrefs.app/Menu.c:616 msgid "XTerm White on Olive" msgstr "XTerm bianco su oliva" #: ../../WPrefs.app/Menu.c:619 msgid "XTerm Blue on Blue" msgstr "XTerm blu su blu" #: ../../WPrefs.app/Menu.c:622 msgid "XTerm BIG FONTS" msgstr "XTerm CARATTERI GRANDI" #: ../../WPrefs.app/Menu.c:644 msgid "Program to Run" msgstr "Programma da eseguire" #: ../../WPrefs.app/Menu.c:658 msgid "Run the program inside a Xterm" msgstr "Esegui il programma in un terminale" #: ../../WPrefs.app/Menu.c:668 msgid "Path for Menu" msgstr "Percorso del menu" #: ../../WPrefs.app/Menu.c:681 msgid "" "Enter the path for a file containing a menu\n" "or a list of directories with the programs you\n" "want to have listed in the menu. Ex:\n" "~/GNUstep/Library/WindowMaker/menu\n" "or\n" "/usr/bin ~/xbin" msgstr "" "Scrivere il percorso di un file contenente un\n" "menù o una lista di directory con i programmi\n" "che si vogliono nel menù. Ad esempio:\n" "~/GNUstep/Library/WindowMaker/menu.it\n" "oppure\n" "/usr/bin ~/xbin" #: ../../WPrefs.app/Menu.c:696 msgid "Command" msgstr "Comando" #: ../../WPrefs.app/Menu.c:710 msgid "" "Enter a command that outputs a menu\n" "definition to stdout when invoked." msgstr "" "Scrivere un comando che produca una\n" "definizione di menù su stdout quando\n" "invocato." #: ../../WPrefs.app/Menu.c:721 msgid "Command to Open Files" msgstr "Comando per aprire i file" #: ../../WPrefs.app/Menu.c:735 msgid "" "Enter the command you want to use to open the\n" "files in the directories listed below." msgstr "" "Scrivere il comando da usare per aprire i file\n" "nelle directory indicate sotto." #: ../../WPrefs.app/Menu.c:744 msgid "Directories with Files" msgstr "Directory con i file" #: ../../WPrefs.app/Menu.c:757 msgid "Strip extensions from file names" msgstr "Togli le estensioni dai nomi dei file" #: ../../WPrefs.app/Menu.c:769 msgid "Keyboard Shortcut" msgstr "Scorciatoia di tastiera" #: ../../WPrefs.app/Menu.c:805 msgid "Arrange Icons" msgstr "Disponi icone" #: ../../WPrefs.app/Menu.c:806 msgid "Hide All Windows Except For The Focused One" msgstr "Nascondi tutte le finestre tranne quella attiva" #: ../../WPrefs.app/Menu.c:807 msgid "Show All Windows" msgstr "Mostra tutte le finestre" #: ../../WPrefs.app/Menu.c:810 msgid "Exit X Session" msgstr "Esci da X Window" #: ../../WPrefs.app/Menu.c:811 msgid "Restart Window Maker" msgstr "Riavvia Window Maker" #: ../../WPrefs.app/Menu.c:812 msgid "Start Another Window Manager : (" msgstr "Avvia un altro gestore di finestre : (" #: ../../WPrefs.app/Menu.c:814 msgid "Save Current Session" msgstr "Salva la sessione corrente" #: ../../WPrefs.app/Menu.c:815 msgid "Clear Saved Session" msgstr "Cancella la sessione salvata" #: ../../WPrefs.app/Menu.c:816 msgid "Refresh Screen" msgstr "Ridisegna lo schermo" #: ../../WPrefs.app/Menu.c:817 msgid "Open Info Panel" msgstr "Mostra una finestra di informazioni" #: ../../WPrefs.app/Menu.c:818 msgid "Open Copyright Panel" msgstr "Mostra una finestra con i diritti d'autore" #: ../../WPrefs.app/Menu.c:824 msgid "Window Manager to Start" msgstr "Gestore di finestre da avviare" #: ../../WPrefs.app/Menu.c:840 msgid "Do not confirm action." msgstr "Non chiedere conferma per l'azione." #: ../../WPrefs.app/Menu.c:850 msgid "" "Instructions:\n" "\n" " - drag items from the left to the menu to add new items\n" " - drag items out of the menu to remove items\n" " - drag items in menu to change their position\n" " - drag items with Control pressed to copy them\n" " - double click in a menu item to change the label\n" " - click on a menu item to change related information" msgstr "" "Istruzioni:\n" "\n" " - per aggiungere elementi, trascinarli sul menù\n" " - per eliminarli elementi, trascinarli fuori dal menù\n" " - per spostare elementi, trascinarli nel menù\n" " - per copiare elementi, trascinarli premendo Control\n" " - doppio click su un elemento per cambiare l'etichetta\n" " - click su un elemento per modificare le informazioni" #: ../../WPrefs.app/Menu.c:1067 #, c-format msgid "unknown command '%s' in menu" msgstr "comando `%s' sconosciuto nel menù" #: ../../WPrefs.app/Menu.c:1099 msgid ": Execute Program" msgstr ": Esegui programma" #: ../../WPrefs.app/Menu.c:1103 msgid ": Perform Internal Command" msgstr ": Esegui comando interno" #: ../../WPrefs.app/Menu.c:1107 msgid ": Open a Submenu" msgstr ": apri un sottomenu" #: ../../WPrefs.app/Menu.c:1111 msgid ": Program Generated Submenu" msgstr ": sottomenu generato da un programma" #: ../../WPrefs.app/Menu.c:1115 msgid ": Directory Contents Menu" msgstr ": menu di directory" #: ../../WPrefs.app/Menu.c:1119 msgid ": Open Workspaces Submenu" msgstr ": sottomenu aree di lavoro" #: ../../WPrefs.app/Menu.c:1123 msgid ": Open Window List Submenu" msgstr ": lista delle finestre" #: ../../WPrefs.app/Menu.c:1343 msgid "Remove Submenu" msgstr "Elimina sottomenu" #: ../../WPrefs.app/Menu.c:1344 msgid "" "Removing this item will destroy all items inside\n" "the submenu. Do you really want to do that?" msgstr "" "Eliminare questo elemento distruggerà tutti gli\n" "elementi che contiene. Si vuole farlo veramente?" #: ../../WPrefs.app/Menu.c:1346 msgid "Yes" msgstr "Sì" #: ../../WPrefs.app/Menu.c:1346 msgid "No" msgstr "No" #: ../../WPrefs.app/Menu.c:1347 msgid "Yes, don't ask again" msgstr "Sì, non chiederlo più" #. if there is a localized plmenu for the tongue put it's filename here #: ../../WPrefs.app/Menu.c:1514 ../../WPrefs.app/Menu.c:1521 #, c-format msgid "%s/Library/WindowMaker/plmenu" msgstr "%s/Library/WindowMaker/plmenu.it" #: ../../WPrefs.app/Menu.c:1530 #, c-format msgid "Could not open default menu from '%s'" msgstr "Impossibile aprire il menu predefinito da `%s'" #: ../../WPrefs.app/Menu.c:1569 msgid "" "The menu file format currently in use is not supported\n" "by this tool. Do you want to discard the current menu\n" "to use this tool?" msgstr "" "Il formato del menu correntemente in uso non è supportato\n" "da questo programma. Si vuole scartare il menù corrente\n" "per poter usare questo programma?" #: ../../WPrefs.app/Menu.c:1572 msgid "Yes, Discard and Update" msgstr "Sì, scarta e aggiorna" #: ../../WPrefs.app/Menu.c:1573 msgid "No, Keep Current Menu" msgstr "No, tieni il menu corrente" #: ../../WPrefs.app/Menu.c:1821 msgid "Applications Menu Definition" msgstr "Definizione del menu appplicazioni" #: ../../WPrefs.app/Menu.c:1823 msgid "Edit the menu for launching applications." msgstr "Modifica il menu per lanciare le applicazioni." #: ../../WPrefs.app/MenuPreferences.c:112 msgid "Menu Scrolling Speed" msgstr "Velocità di scorrimento del menu" #: ../../WPrefs.app/MenuPreferences.c:161 msgid "Submenu Alignment" msgstr "Allineamento dei sottomenu" #: ../../WPrefs.app/MenuPreferences.c:205 msgid "" "Always open submenus inside the screen, instead of scrolling." msgstr "" "Apri sempre i sottomenu nello schermo, invece di farli scorrere." #: ../../WPrefs.app/MenuPreferences.c:210 msgid "Scroll off-screen menus when pointer is moved over them." msgstr "Fai scorrere i menu nello schermo quando il puntatore ci passa sopra." #: ../../WPrefs.app/MenuPreferences.c:230 msgid "Menu Preferences" msgstr "Opzioni del menu" #: ../../WPrefs.app/MenuPreferences.c:232 msgid "" "Menu usability related options. Scrolling speed,\n" "alignment of submenus etc." msgstr "" "Opzioni sull'uso del menu. Velocità di scrolling,\n" "allineamento dei sottomenu, ecc." #: ../../WPrefs.app/MouseSettings.c:141 msgid "Invalid mouse acceleration value. Must be a positive real value." msgstr "" "Valore di accelerazione del mouse non valido. Deve essere un valore reale " "e positivo." #: ../../WPrefs.app/MouseSettings.c:161 msgid "" "Invalid mouse acceleration threshold value. Must be the number of pixels to " "travel before accelerating." msgstr "" "Valore della soglia di accelerazione del mouse non valido. Deve essere un " "numero di pixel da percorrere prima di accelerare." #: ../../WPrefs.app/MouseSettings.c:262 ../../WPrefs.app/MouseSettings.c:274 #: ../../WPrefs.app/MouseSettings.c:286 ../../WPrefs.app/MouseSettings.c:298 #, c-format msgid "bad value %s for option %s" msgstr "Valore %s errato per l'opzione %s" #: ../../WPrefs.app/MouseSettings.c:357 #, c-format msgid "" "modifier key %s for option ModifierKey was not recognized. Using %s as " "default" msgstr "" "Il tasto modificatore %s per l'opzione ModifierKey non è stato riconosciuto. " "Uso `%s'." #: ../../WPrefs.app/MouseSettings.c:382 msgid "could not retrieve keyboard modifier mapping" msgstr "Impossibile leggere la mappa dei modificatori della tastiera." #: ../../WPrefs.app/MouseSettings.c:477 msgid "Mouse Speed" msgstr "Velocità del mouse" #: ../../WPrefs.app/MouseSettings.c:507 msgid "Accel.:" msgstr "Accel.:" #: ../../WPrefs.app/MouseSettings.c:520 msgid "Threshold:" msgstr "Soglia:" #: ../../WPrefs.app/MouseSettings.c:535 msgid "Double-Click Delay" msgstr "Ritardo doppio click" #: ../../WPrefs.app/MouseSettings.c:579 msgid "Test" msgstr "Prova" #: ../../WPrefs.app/MouseSettings.c:609 msgid "Workspace Mouse Actions" msgstr "Azioni del mouse sull'area di lavoro" #: ../../WPrefs.app/MouseSettings.c:614 msgid "Disable mouse actions" msgstr "Disattiva le azioni del mouse" #: ../../WPrefs.app/MouseSettings.c:620 msgid "Left Button" msgstr "Tasto sinistro" #: ../../WPrefs.app/MouseSettings.c:630 msgid "Middle Button" msgstr "Tasto centrale" #: ../../WPrefs.app/MouseSettings.c:640 msgid "Right Button" msgstr "Tasto destro" #: ../../WPrefs.app/MouseSettings.c:650 msgid "Mouse Wheel" msgstr "Rotella" #: ../../WPrefs.app/MouseSettings.c:672 msgid "Mouse Grab Modifier" msgstr "Modificatore per il mouse" #: ../../WPrefs.app/MouseSettings.c:674 msgid "" "Keyboard modifier to use for actions that\n" "involve dragging windows with the mouse,\n" "clicking inside the window." msgstr "" "Tasto modificatore da usare per spostare\n" "le finestre con il mouse cliccando al\n" "loro interno e trascinandole." #: ../../WPrefs.app/MouseSettings.c:708 #, c-format msgid "could not create %s" msgstr "impossibile creare %s" #: ../../WPrefs.app/MouseSettings.c:724 #, c-format msgid "could not create temporary file %s" msgstr "impossibile creare il file temporaneo %s" #: ../../WPrefs.app/MouseSettings.c:756 #, c-format msgid "could not rename file %s to %s\n" msgstr "impossibile rinominare il file %s a %s\n" #: ../../WPrefs.app/MouseSettings.c:829 msgid "Shift" msgstr "Shift" #: ../../WPrefs.app/MouseSettings.c:830 msgid "Lock" msgstr "" #: ../../WPrefs.app/MouseSettings.c:831 msgid "Control" msgstr "Control" #: ../../WPrefs.app/MouseSettings.c:832 msgid "Mod1" msgstr "Mod1" #: ../../WPrefs.app/MouseSettings.c:833 msgid "Mod2" msgstr "Mod2" #: ../../WPrefs.app/MouseSettings.c:834 msgid "Mod3" msgstr "Mod3" #: ../../WPrefs.app/MouseSettings.c:835 msgid "Mod4" msgstr "Mod4" #: ../../WPrefs.app/MouseSettings.c:836 msgid "Mod5" msgstr "Mod5" #: ../../WPrefs.app/MouseSettings.c:839 msgid "Applications Menu" msgstr "Menu applicazioni" #: ../../WPrefs.app/MouseSettings.c:841 msgid "Select Windows" msgstr "Seleziona finestre" #: ../../WPrefs.app/MouseSettings.c:844 msgid "Switch Workspaces" msgstr "Cambia area di lavoro" #: ../../WPrefs.app/MouseSettings.c:849 msgid "Mouse Preferences" msgstr "Opzioni del mouse" #: ../../WPrefs.app/MouseSettings.c:851 msgid "" "Mouse speed/acceleration, double click delay,\n" "mouse button bindings etc." msgstr "" "Velocità e accelerazione del mouse, ritardo\n" "del doppio click, funzioni dei tasti, ecc." #: ../../WPrefs.app/Paths.c:84 msgid "bad value in option IconPath. Using default path list" msgstr "Valore errato nell'opzione IconPath. Uso i percorsi predefiniti." #: ../../WPrefs.app/Paths.c:101 msgid "bad value in option PixmapPath. Using default path list" msgstr "Valore errato nell'opzione PixmapPath. Uso i percorsi predefiniti." #: ../../WPrefs.app/Paths.c:149 msgid "Select directory" msgstr "Selezionare la directory" #: ../../WPrefs.app/Paths.c:270 msgid "Icon Search Paths" msgstr "Percorsi di ricerca delle icone" #: ../../WPrefs.app/Paths.c:281 ../../WPrefs.app/Paths.c:312 #: ../../WPrefs.app/TexturePanel.c:1304 msgid "Add" msgstr "Aggiungi" #: ../../WPrefs.app/Paths.c:301 msgid "Pixmap Search Paths" msgstr "Percorsi di ricerca delle pixmap" #: ../../WPrefs.app/Paths.c:341 msgid "Search Path Configuration" msgstr "Configurazione percorsi di ricerca" #: ../../WPrefs.app/Paths.c:343 msgid "" "Search paths to use when looking for pixmaps\n" "and icons." msgstr "" "Scegli i percorsi dove cercare le pixmap\n" "e le icone." #: ../../WPrefs.app/Preferences.c:75 msgid "OFF" msgstr "Off" #: ../../WPrefs.app/Preferences.c:77 msgid "1 pixel" msgstr "1 pixel" #. 2-4 #: ../../WPrefs.app/Preferences.c:80 #, c-format msgid "%i pixels" msgstr "%i pixel" #. >4 #: ../../WPrefs.app/Preferences.c:83 #, c-format msgid "%i pixels " msgstr "%i pixel" #: ../../WPrefs.app/Preferences.c:219 msgid "Size Display" msgstr "Visualizzazione dimensione finestra" #: ../../WPrefs.app/Preferences.c:221 msgid "" "The position or style of the window size\n" "display that's shown when a window is resized." msgstr "" "Stile di visualizzazione delle dimensioni della\n" "finestra quando viene ridimensionata." #: ../../WPrefs.app/Preferences.c:228 ../../WPrefs.app/Preferences.c:248 msgid "Corner of screen" msgstr "Angolo dello schermo" #: ../../WPrefs.app/Preferences.c:229 ../../WPrefs.app/Preferences.c:249 msgid "Center of screen" msgstr "Centro dello schermo" #: ../../WPrefs.app/Preferences.c:230 ../../WPrefs.app/Preferences.c:250 msgid "Center of resized window" msgstr "Centro della finestra" #: ../../WPrefs.app/Preferences.c:231 msgid "Technical drawing-like" msgstr "Disegno tecnico" #: ../../WPrefs.app/Preferences.c:239 msgid "Position Display" msgstr "Visualizzazione posizione finestra" #: ../../WPrefs.app/Preferences.c:241 msgid "" "The position or style of the window position\n" "display that's shown when a window is moved." msgstr "" "Stile di visualizzazione delle coordinate della\n" "finestra quando viene spostata." #: ../../WPrefs.app/Preferences.c:258 msgid "Show balloon text for..." msgstr "Mostra suggerimento per..." #: ../../WPrefs.app/Preferences.c:265 msgid "incomplete window titles" msgstr "...titoli finestre incompleti." #: ../../WPrefs.app/Preferences.c:266 msgid "miniwindow titles" msgstr "...titoli delle icone." #: ../../WPrefs.app/Preferences.c:267 msgid "application/dock icons" msgstr "...applicazioni e icone sul Dock." #: ../../WPrefs.app/Preferences.c:268 msgid "internal help" msgstr "...aiuto di Window Maker" #: ../../WPrefs.app/Preferences.c:280 msgid "Raise window when switching focus with keyboard" msgstr "Porta davanti le finestre cambiando focus con la tastiera" #: ../../WPrefs.app/Preferences.c:286 msgid "" "Enable keyboard language\n" "switch button in window titlebars." msgstr "" "Bottone di cambio della lingua\n" "della tastiera sulle barre dei titoli." #: ../../WPrefs.app/Preferences.c:295 msgid "Workspace border" msgstr "Bordo dell'area di lavoro" #: ../../WPrefs.app/Preferences.c:311 msgid "Left/Right" msgstr "Sinistra/Destra" #: ../../WPrefs.app/Preferences.c:316 msgid "Top/Bottom" msgstr "Sopra/Sotto" #: ../../WPrefs.app/Preferences.c:337 msgid "Miscellaneous Ergonomic Preferences" msgstr "Opzioni varie di ergonomia" #: ../../WPrefs.app/Preferences.c:338 msgid "" "Various settings like balloon text, geometry\n" "displays etc." msgstr "" "Opzioni varie come i suggerimenti, visualizzazione\n" "delle geometrie, ecc." #: ../../WPrefs.app/TexturePanel.c:603 msgid "Could not load the selected file: " msgstr "Impossibile caricare il file dell'icona %s" #: ../../WPrefs.app/TexturePanel.c:657 msgid "Open Image" msgstr "Apri immagine" #: ../../WPrefs.app/TexturePanel.c:687 msgid "The selected file does not contain a supported image." msgstr "Il file selezionato non contiene un'immagine conosciuta." #: ../../WPrefs.app/TexturePanel.c:938 #, c-format msgid "could not load file '%s': %s" msgstr "impossibile caricare il file `%s': %s" #: ../../WPrefs.app/TexturePanel.c:1057 #, c-format msgid "error creating texture %s" msgstr "errore creando la trama %s" #: ../../WPrefs.app/TexturePanel.c:1248 msgid "Texture Panel" msgstr "Modifica trama" #: ../../WPrefs.app/TexturePanel.c:1256 msgid "Texture Name" msgstr "Nome della trama" #: ../../WPrefs.app/TexturePanel.c:1268 msgid "Solid Color" msgstr "Tinta unita" #: ../../WPrefs.app/TexturePanel.c:1269 msgid "Gradient Texture" msgstr "Sfumatura" #: ../../WPrefs.app/TexturePanel.c:1270 msgid "Simple Gradient Texture" msgstr "Sfumatura semplice" #: ../../WPrefs.app/TexturePanel.c:1271 msgid "Textured Gradient" msgstr "Immagine sfumata" #: ../../WPrefs.app/TexturePanel.c:1272 msgid "Image Texture" msgstr "Immagine" #: ../../WPrefs.app/TexturePanel.c:1280 msgid "Default Color" msgstr "Colore base" #: ../../WPrefs.app/TexturePanel.c:1292 msgid "Gradient Colors" msgstr "Colori sfumatura" #: ../../WPrefs.app/TexturePanel.c:1388 msgid "Direction" msgstr "Direzione" #: ../../WPrefs.app/TexturePanel.c:1416 msgid "Gradient" msgstr "Sfumatura" #: ../../WPrefs.app/TexturePanel.c:1434 msgid "Gradient Opacity" msgstr "Traparenza sfumatura" #: ../../WPrefs.app/TexturePanel.c:1477 msgid "Image" msgstr "Immagine" #: ../../WPrefs.app/TexturePanel.c:1509 msgid "Tile" msgstr "Affianca" #: ../../WPrefs.app/TexturePanel.c:1510 msgid "Scale" msgstr "Ridimensiona" #: ../../WPrefs.app/TexturePanel.c:1512 msgid "Maximize" msgstr "Ingrandisci" #: ../../WPrefs.app/Themes.c:71 ../../WPrefs.app/Themes.c:82 msgid "Set" msgstr "Attiva" #: ../../WPrefs.app/Themes.c:132 msgid "Stop" msgstr "Ferma" #: ../../WPrefs.app/Themes.c:143 ../../WPrefs.app/Themes.c:203 #: ../../WPrefs.app/Themes.c:223 msgid "Download" msgstr "Scarica" #: ../../WPrefs.app/Themes.c:171 msgid "Save Current Theme" msgstr "Salva il tema corrente" #: ../../WPrefs.app/Themes.c:180 msgid "Load" msgstr "Carica" #: ../../WPrefs.app/Themes.c:185 msgid "Install" msgstr "Installa" #: ../../WPrefs.app/Themes.c:193 msgid "Tile of The Day" msgstr "Tile del giorno" #: ../../WPrefs.app/Themes.c:213 msgid "Bar of The Day" msgstr "Barra del giorno" #: ../../WPrefs.app/WindowHandling.c:141 #, c-format msgid "bad option value %s in WindowPlacement. Using default value" msgstr "" "Valore %s errato per l'opzione WindowPlacement. Uso il valore predefinito" #: ../../WPrefs.app/WindowHandling.c:163 msgid "invalid data in option WindowPlaceOrigin. Using default (0,0)" msgstr "Valore errato per l'opzione WindowPlaceOrigin. Uso (0,0)" #: ../../WPrefs.app/WindowHandling.c:243 msgid "Window Placement" msgstr "Posizionamento delle finestre" #: ../../WPrefs.app/WindowHandling.c:244 msgid "" "How to place windows when they are first put\n" "on screen." msgstr "" "Posizionamento delle finestre quando appaiono\n" "la prima volta sullo schermo." #: ../../WPrefs.app/WindowHandling.c:250 msgid "Automatic" msgstr "Automatico" #: ../../WPrefs.app/WindowHandling.c:251 msgid "Random" msgstr "Casuale" #: ../../WPrefs.app/WindowHandling.c:252 msgid "Manual" msgstr "Manuale" #: ../../WPrefs.app/WindowHandling.c:253 msgid "Cascade" msgstr "A cascata" #: ../../WPrefs.app/WindowHandling.c:254 msgid "Smart" msgstr "Intelligente" #: ../../WPrefs.app/WindowHandling.c:260 msgid "Placement Origin" msgstr "Origine\nposizionamento" #: ../../WPrefs.app/WindowHandling.c:321 msgid "Opaque Move" msgstr "Movimento opaco" #: ../../WPrefs.app/WindowHandling.c:322 msgid "" "Whether the window contents should be moved\n" "when dragging windows aroung or if only a\n" "frame should be displayed.\n" msgstr "" "Imposta se debba essere visualizzato il contenuto\n" "delle finestre quando vengono spostate o se mostrare\n" "solo un rettangolo.\n" #: ../../WPrefs.app/WindowHandling.c:361 msgid "When maximizing..." msgstr "Quando ingrandisci..." #: ../../WPrefs.app/WindowHandling.c:366 msgid "...do not cover icons" msgstr "...non coprire le icone." #: ../../WPrefs.app/WindowHandling.c:372 msgid "...do not cover dock" msgstr "...non coprire il Dock." #: ../../WPrefs.app/WindowHandling.c:381 msgid "Edge Resistance" msgstr "Resistenza dei bordi" #: ../../WPrefs.app/WindowHandling.c:383 msgid "" "Edge resistance will make windows `resist'\n" "being moved further for the defined threshold\n" "when moved against other windows or the edges\n" "of the screen." msgstr "" "La resistenza dei bordi fa sì che la finestra\n" "`resista' allo spostamento fino al superamento\n" "della soglia impostata quando viene avvicinata\n" "ad altre finestre o ai bordi dello schermo." #: ../../WPrefs.app/WindowHandling.c:402 msgid "Resist" msgstr "Resisti" #: ../../WPrefs.app/WindowHandling.c:407 msgid "Attract" msgstr "Attrai" #: ../../WPrefs.app/WindowHandling.c:423 msgid "Open dialogs in same workspace as their owners" msgstr "" "Apri le finestre di dialogo nella " "stessa area di lavoro dei proprietari." #: ../../WPrefs.app/WindowHandling.c:450 msgid "Window Handling Preferences" msgstr "Opzioni di gestione delle finestre" #: ../../WPrefs.app/WindowHandling.c:452 msgid "" "Window handling options. Initial placement style\n" "edge resistance, opaque move etc." msgstr "" "Opzioni di gestione delle finestre. Posizionamento,\n" "resistenza dei bordi, modo di spostamento, ecc." #: ../../WPrefs.app/Workspace.c:176 msgid "Workspace Navigation" msgstr "Navigazione delle aree di lavoro" #: ../../WPrefs.app/Workspace.c:183 msgid "Wrap to the first workspace from the last workspace" msgstr "Passa alla prima area di lavoro quando supero l'ultima" #: ../../WPrefs.app/Workspace.c:205 msgid "Switch workspaces while dragging windows" msgstr "Cambia area di lavoro spostando le finestre" #: ../../WPrefs.app/Workspace.c:227 msgid "Automatically create new workspaces" msgstr "Crea automaticamente nuove aree di lavoro" #: ../../WPrefs.app/Workspace.c:250 msgid "Position of workspace name display" msgstr "Posizione del nome delle aree di lavoro" #: ../../WPrefs.app/Workspace.c:269 msgid "Disable" msgstr "Disattiva" #: ../../WPrefs.app/Workspace.c:271 msgid "Top" msgstr "In alto" #: ../../WPrefs.app/Workspace.c:272 msgid "Bottom" msgstr "In basso" #: ../../WPrefs.app/Workspace.c:273 msgid "Top/Left" msgstr "In alto a sinistra" #: ../../WPrefs.app/Workspace.c:274 msgid "Top/Right" msgstr "In alto a destra" #: ../../WPrefs.app/Workspace.c:275 msgid "Bottom/Left" msgstr "In basso a sinistra" #: ../../WPrefs.app/Workspace.c:276 msgid "Bottom/Right" msgstr "In basso a destra" #: ../../WPrefs.app/Workspace.c:284 msgid "Dock/Clip" msgstr "Dock/Clip" #: ../../WPrefs.app/Workspace.c:303 msgid "" "Disable/enable the application Dock (the\n" "vertical icon bar in the side of the screen)." msgstr "" "Attiva/disattiva il Dock delle applicazioni (la barra\n" "di icone verticale a lato dello schermo)." #: ../../WPrefs.app/Workspace.c:324 msgid "" "Disable/enable the Clip (that thing with\n" "a paper clip icon)." msgstr "" "Attiva/disattiva la Clip (quella cosa con\n" "una graffetta disegnata)." #: ../../WPrefs.app/Workspace.c:364 msgid "Workspace Preferences" msgstr "Opzioni delle aree di lavoro" #: ../../WPrefs.app/Workspace.c:366 msgid "" "Workspace navigation features.\n" "You can also enable/disable the Dock and Clip here." msgstr "" "Opzioni di navigazione delle aree di lavoro. Si possono\n" "anche attivare e disattivare il Dock o la Clip" �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/po/Makefile.in��������������������������������������������������������0000644�0001750�0001750�00000041266�13642360054�015452� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = WPrefs.app/po ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ $(top_srcdir)/m4/ax_pthread.m4 \ $(top_srcdir)/m4/ld-version-script.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/windowmaker.m4 \ $(top_srcdir)/m4/wm_attributes.m4 \ $(top_srcdir)/m4/wm_cflags_check.m4 \ $(top_srcdir)/m4/wm_i18n.m4 \ $(top_srcdir)/m4/wm_imgfmt_check.m4 \ $(top_srcdir)/m4/wm_libexif.m4 $(top_srcdir)/m4/wm_libmath.m4 \ $(top_srcdir)/m4/wm_prog_cc_c11.m4 \ $(top_srcdir)/m4/wm_xext_check.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in README DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ GFXLIBS = @GFXLIBS@ GREP = @GREP@ HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLIBS = @INTLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBBSD = @LIBBSD@ LIBEXIF = @LIBEXIF@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXINERAMA = @LIBXINERAMA@ LIBXMU = @LIBXMU@ LIBXRANDR = @LIBXRANDR@ LINGUAS = @LINGUAS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAGICKFLAGS = @MAGICKFLAGS@ MAGICKLIBS = @MAGICKLIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MANLANGDIRS = @MANLANGDIRS@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOLIBS = @PANGOLIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILMOFILES = @UTILMOFILES@ VERSION = @VERSION@ WINGSMOFILES = @WINGSMOFILES@ WINGS_VERSION = @WINGS_VERSION@ WMAKERMOFILES = @WMAKERMOFILES@ WPREFSMOFILES = @WPREFSMOFILES@ WRASTER_VERSION = @WRASTER_VERSION@ WUTIL_VERSION = @WUTIL_VERSION@ XCFLAGS = @XCFLAGS@ XFTCONFIG = @XFTCONFIG@ XFTFLAGS = @XFTFLAGS@ XFTLIBS = @XFTLIBS@ XGETTEXT = @XGETTEXT@ XLFLAGS = @XLFLAGS@ XLIBS = @XLIBS@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBRARY_PATH = @X_LIBRARY_PATH@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ defsdatadir = @defsdatadir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ inc_search_path = @inc_search_path@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lcov_output_directory = @lcov_output_directory@ lib_search_path = @lib_search_path@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pixmapdir = @pixmapdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ wprefs_bindir = @wprefs_bindir@ wprefs_datadir = @wprefs_datadir@ DOMAIN = WPrefs CATALOGS = @WPREFSMOFILES@ CLEANFILES = $(DOMAIN).pot $(CATALOGS) EXTRA_DIST = bg.po ca.po cs.po de.po es.po et.po fi.po fr.po fy.po hr.po hu.po \ it.po ja.po ko.po nl.po pt.po ru.po sk.po uk.po zh_CN.po zh_TW.po POTFILES = \ $(top_srcdir)/WPrefs.app/Appearance.c \ $(top_srcdir)/WPrefs.app/Configurations.c \ $(top_srcdir)/WPrefs.app/Docks.c \ $(top_srcdir)/WPrefs.app/Expert.c \ $(top_srcdir)/WPrefs.app/Focus.c \ $(top_srcdir)/WPrefs.app/FontSimple.c \ $(top_srcdir)/WPrefs.app/Icons.c \ $(top_srcdir)/WPrefs.app/KeyboardShortcuts.c \ $(top_srcdir)/WPrefs.app/Menu.c \ $(top_srcdir)/WPrefs.app/MenuPreferences.c \ $(top_srcdir)/WPrefs.app/MouseSettings.c \ $(top_srcdir)/WPrefs.app/Paths.c \ $(top_srcdir)/WPrefs.app/Preferences.c \ $(top_srcdir)/WPrefs.app/TexturePanel.c \ $(top_srcdir)/WPrefs.app/WPrefs.c \ $(top_srcdir)/WPrefs.app/WindowHandling.c \ $(top_srcdir)/WPrefs.app/Workspace.c \ $(top_srcdir)/WPrefs.app/double.c \ $(top_srcdir)/WPrefs.app/editmenu.c \ $(top_srcdir)/WPrefs.app/main.c \ $(top_srcdir)/WPrefs.app/xmodifier.c # not_yet_fully_implemented # $(top_srcdir)/WPrefs.app/KeyboardSettings.c \ # $(top_srcdir)/WPrefs.app/Themes.c \ # SUFFIXES = .po .mo # Create a 'silent rule' for our make check the same way automake does AM_V_CHKTRANS = $(am__v_CHKTRANS_$(V)) am__v_CHKTRANS_ = $(am__v_CHKTRANS_$(AM_DEFAULT_VERBOSITY)) am__v_CHKTRANS_0 = @echo " CHK translations" ; am__v_CHKTRANS_1 = all: all-am .SUFFIXES: .SUFFIXES: .po .mo $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu WPrefs.app/po/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu WPrefs.app/po/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) check-local check: check-am all-am: Makefile all-local installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-data-local install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-local .MAKE: check-am install-am install-strip .PHONY: all all-am all-local check check-am check-local clean \ clean-generic clean-libtool cscopelist-am ctags-am distclean \ distclean-generic distclean-libtool distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-data-local install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-local .PRECIOUS: Makefile .po.mo: $(AM_V_GEN)$(MSGFMT) -c -o $@ $< all-local: $(CATALOGS) .PHONY: update-lang @HAVE_XGETTEXT_TRUE@update-lang: $(DOMAIN).pot @HAVE_XGETTEXT_TRUE@ $(AM_V_GEN)$(top_srcdir)/script/generate-po-from-template.sh \ @HAVE_XGETTEXT_TRUE@ -n "$(PACKAGE_NAME)" -v "$(PACKAGE_VERSION)" -b "$(PACKAGE_BUGREPORT)" \ @HAVE_XGETTEXT_TRUE@ -t "$(DOMAIN).pot" "$(srcdir)/$(PO).po" @HAVE_XGETTEXT_TRUE@$(DOMAIN).pot: $(POTFILES) @HAVE_XGETTEXT_TRUE@ $(AM_V_GEN)$(XGETTEXT) --default-domain=$(DOMAIN) \ @HAVE_XGETTEXT_TRUE@ --add-comments --keyword=_ --keyword=N_ $(POTFILES) @HAVE_XGETTEXT_TRUE@ @if cmp -s $(DOMAIN).po $(DOMAIN).pot; then \ @HAVE_XGETTEXT_TRUE@ rm -f $(DOMAIN).po; \ @HAVE_XGETTEXT_TRUE@ else \ @HAVE_XGETTEXT_TRUE@ mv -f $(DOMAIN).po $(DOMAIN).pot; \ @HAVE_XGETTEXT_TRUE@ fi install-data-local: $(CATALOGS) $(mkinstalldirs) $(DESTDIR)$(localedir) for n in $(CATALOGS) __DuMmY ; do \ if test "$$n" -a "$$n" != "__DuMmY" ; then \ l=`basename $$n .mo`; \ $(mkinstalldirs) $(DESTDIR)$(localedir)/$$l/LC_MESSAGES; \ $(INSTALL_DATA) -m 644 $$n $(DESTDIR)$(localedir)/$$l/LC_MESSAGES/$(DOMAIN).mo; \ fi; \ done uninstall-local: for n in $(CATALOGS) ; do \ l=`basename $$n .mo`; \ rm -f $(DESTDIR)$(localedir)/$$l/LC_MESSAGES/$(DOMAIN).mo; \ done # 'make check' will make sure the tranlation sources are in line with the compiled source check-local: $(AM_V_CHKTRANS)$(top_srcdir)/script/check-translation-sources.sh \ "$(srcdir)" -s "$(top_srcdir)/WPrefs.app/Makefile.am" # 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. .NOEXPORT: ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/po/fi.po��������������������������������������������������������������0000644�0001750�0001750�00000175604�13431646201�014344� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Finnish translation for WPrefs.app # Copyright (C) 1999 Free Software Foundation, Inc. # # Tomi Kajala <tomi@iki.fi>, 1999-2001 # Pauli Virtanen <pauli.virtanen@saunalahti.fi>, 2000 # msgid "" msgstr "" "Project-Id-Version: Window Maker-0.64.0\n" "POT-Creation-Date: 2001-09-03 16:27+0300\n" "PO-Revision-Date: 2001-09-03 22:18+03:00\n" "Last-Translator: Tomi Kajala <tomi@iki.fi>\n" "Language-Team: Finnish <fi@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" #: ../../WPrefs.app/main.c:74 #, c-format msgid "usage: %s [options]\n" msgstr "käyttö: %s [optiot]\n" #: ../../WPrefs.app/main.c:75 msgid "options:" msgstr "optiot:" #: ../../WPrefs.app/main.c:76 msgid " -display <display>\tdisplay to be used" msgstr " -display <display>\tkäytettävä näyttö" #: ../../WPrefs.app/main.c:77 msgid " --version\t\tprint version number and exit" msgstr " --version\t\ttulosta versionumero ja poistu" #: ../../WPrefs.app/main.c:78 msgid " --help\t\tprint this message and exit" msgstr " --help\t\ttulosta tämä viesti ja poistu" #: ../../WPrefs.app/main.c:137 #, c-format msgid "too few arguments for %s" msgstr "liian vähän argumentteja %s:lle" #: ../../WPrefs.app/main.c:159 msgid "X server does not support locale" msgstr "X-palvelin ei tue maa-asetusta" #: ../../WPrefs.app/main.c:162 msgid "cannot set locale modifiers" msgstr "maa-asetusmääreiden asettaminen epäonnistui" #: ../../WPrefs.app/main.c:168 #, c-format msgid "could not open display %s" msgstr "näytön %s avaus ei onnistunut" #: ../../WPrefs.app/main.c:176 msgid "could not initialize application" msgstr "sovelluksen käynnistäminen epäonnistui" #: ../../WPrefs.app/WPrefs.c:259 msgid "Window Maker Preferences" msgstr "Window Makerin asetukset" #: ../../WPrefs.app/WPrefs.c:283 msgid "Revert Page" msgstr "Peruuta sivun muutokset" #: ../../WPrefs.app/WPrefs.c:289 msgid "Revert All" msgstr "Peruuta kaikki muutokset" #: ../../WPrefs.app/WPrefs.c:295 msgid "Save" msgstr "Tallenna" #: ../../WPrefs.app/Appearance.c:2294 ../../WPrefs.app/WPrefs.c:301 msgid "Close" msgstr "Sulje" #: ../../WPrefs.app/WPrefs.c:308 msgid "Balloon Help" msgstr "Puhekuplaopastus" #: ../../WPrefs.app/WPrefs.c:333 msgid "Window Maker Preferences Utility" msgstr "Window Makerin asetusten säätöohjelma" #: ../../WPrefs.app/WPrefs.c:340 #, c-format msgid "Version %s for Window Maker %s or newer" msgstr "Versio %s Window Makerille %s tai uudemmalle" #: ../../WPrefs.app/WPrefs.c:348 msgid "Starting..." msgstr "Käynnistyy..." #: ../../WPrefs.app/WPrefs.c:354 msgid "" "Programming/Design: Alfredo K. Kojima\n" "Artwork: Marco van Hylckama Vlieg, Largo et al\n" "More Programming: James Thompson et al" msgstr "" "Ohjelmointi/suunnittelu: Alfredo K. Kojima\n" "Grafiikka: Marco van Hylckama Vlieg, Largo et al\n" "Lisää ohjelmointia: James Thompson et al" #: ../../WPrefs.app/WPrefs.c:454 #, c-format msgid "could not locate image file %s\n" msgstr "Kuvatiedostoa %s ei löytynyt\n" #: ../../WPrefs.app/Appearance.c:1965 ../../WPrefs.app/Configurations.c:242 #: ../../WPrefs.app/Configurations.c:254 ../../WPrefs.app/Focus.c:289 #: ../../WPrefs.app/Focus.c:300 ../../WPrefs.app/MenuPreferences.c:135 #: ../../WPrefs.app/MenuPreferences.c:146 #: ../../WPrefs.app/MenuPreferences.c:174 #: ../../WPrefs.app/MenuPreferences.c:189 ../../WPrefs.app/MouseSettings.c:560 #: ../../WPrefs.app/MouseSettings.c:571 ../../WPrefs.app/WPrefs.c:557 #: ../../WPrefs.app/WPrefs.c:582 #, c-format msgid "could not load icon file %s" msgstr "kuvaketiedoston %s lataus epäonnistui" #: ../../WPrefs.app/WPrefs.c:669 #, c-format msgid "could not load image file %s:%s" msgstr "kuvatiedoston %s:%s lataus epäonnistui" #: ../../WPrefs.app/WPrefs.c:688 msgid "Loading Window Maker configuration files..." msgstr "Lataan Window Makerin asetustiedostoja..." #: ../../WPrefs.app/WPrefs.c:692 msgid "Initializing configuration panels..." msgstr "Alustan asetuspaneeleja..." #: ../../WPrefs.app/WPrefs.c:726 msgid "" "WPrefs is free software and is distributed WITHOUT ANY\n" "WARRANTY under the terms of the GNU General Public License." msgstr "" "WPrefs on vapaa ohjelmisto ja sitä levitetään ILMAN\n" "MITÄÄN TAKUUTA, GNU General Public Licensen ehdoilla." #: ../../WPrefs.app/WPrefs.c:755 ../../WPrefs.app/WPrefs.c:835 #, c-format msgid "Window Maker domain (%s) is corrupted!" msgstr "Window Makerin kenttä (%s) on vioittunut!" #: ../../WPrefs.app/Font.c:330 ../../WPrefs.app/Menu.c:1533 #: ../../WPrefs.app/MouseSettings.c:140 ../../WPrefs.app/MouseSettings.c:160 #: ../../WPrefs.app/TexturePanel.c:613 ../../WPrefs.app/TexturePanel.c:693 #: ../../WPrefs.app/Themes.c:96 ../../WPrefs.app/WPrefs.c:756 #: ../../WPrefs.app/WPrefs.c:761 ../../WPrefs.app/WPrefs.c:779 #: ../../WPrefs.app/WPrefs.c:789 ../../WPrefs.app/WPrefs.c:799 #: ../../WPrefs.app/WPrefs.c:836 ../../WPrefs.app/WPrefs.c:841 msgid "Error" msgstr "Virhe" #: ../../WPrefs.app/Font.c:330 ../../WPrefs.app/Menu.c:1533 #: ../../WPrefs.app/MouseSettings.c:142 ../../WPrefs.app/MouseSettings.c:162 #: ../../WPrefs.app/TexturePanel.c:614 ../../WPrefs.app/TexturePanel.c:695 #: ../../WPrefs.app/TexturePanel.c:1529 ../../WPrefs.app/Themes.c:98 #: ../../WPrefs.app/WPrefs.c:756 ../../WPrefs.app/WPrefs.c:761 #: ../../WPrefs.app/WPrefs.c:781 ../../WPrefs.app/WPrefs.c:793 #: ../../WPrefs.app/WPrefs.c:799 ../../WPrefs.app/WPrefs.c:806 #: ../../WPrefs.app/WPrefs.c:836 ../../WPrefs.app/WPrefs.c:841 msgid "OK" msgstr "OK" #: ../../WPrefs.app/WPrefs.c:759 #, c-format msgid "Could not load Window Maker domain (%s) from defaults database." msgstr "Window Makerin kentän (%s) lataus oletustietokannasta epäonnistui." #: ../../WPrefs.app/WPrefs.c:776 msgid "could not extract version information from Window Maker" msgstr "Window Makerin versiotietojen selvitys epäonnistui" #: ../../WPrefs.app/WPrefs.c:777 msgid "Make sure wmaker is in your search path." msgstr "Varmista, että wmaker on hakupolussasi." #: ../../WPrefs.app/WPrefs.c:780 msgid "" "Could not extract version from Window Maker. Make sure it is correctly " "installed and is in your PATH environment variable." msgstr "" "Window Makerin versiota ei voitu selvittää. Varmista, että se on oikein " "asennettu ja että PATH-ympäristömuuttujasi sisältää polun, johon se on " "asennettu." #: ../../WPrefs.app/WPrefs.c:790 msgid "" "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." msgstr "" "Window Makerin versiota ei voitu selvittää. Varmista, että se on oikein " "asennettu ja että PATH-ympäristömuuttujasi sisältää polun, johon se on " "asennettu." #: ../../WPrefs.app/WPrefs.c:797 #, c-format msgid "" "WPrefs only supports Window Maker 0.18.0 or newer.\n" "The version installed is %i.%i.%i\n" msgstr "" "WPrefs tukee vain Window Makeria 0.18.0 tai uudempaa.\n" "Asennettu versio on %i.%i.%i\n" #: ../../WPrefs.app/WPrefs.c:804 #, c-format msgid "" "Window Maker %i.%i.%i, which is installed in your system, is not fully " "supported by this version of WPrefs." msgstr "" "Tämä WPrefs-versio ei tue täysin Window Makeria %i.%i.%i, joka on asennettu " "järjestelmääsi." #: ../../WPrefs.app/Menu.c:1568 ../../WPrefs.app/WPrefs.c:806 msgid "Warning" msgstr "Varoitus" #: ../../WPrefs.app/WPrefs.c:817 #, c-format msgid "could not run \"%s --global_defaults_path\"." msgstr "" #: ../../WPrefs.app/WPrefs.c:839 #, c-format msgid "Could not load global Window Maker domain (%s)." msgstr "Globaalia Window Makerin kenttää (%s) ei voitu ladata." #: ../../WPrefs.app/WPrefs.c:1088 #, c-format msgid "" "bad speed value for option %s\n" ". Using default Medium" msgstr "" "virheellinen nopeusarvo valinnalle %s.\n" "Käytetään oletusta keskinopea" #: ../../WPrefs.app/Appearance.c:1131 msgid "Select File" msgstr "Valitse tiedosto" #: ../../WPrefs.app/Appearance.c:1533 msgid "Focused Window" msgstr "Aktiivinen ikkuna" #: ../../WPrefs.app/Appearance.c:1537 msgid "Unfocused Window" msgstr "Ei-aktiivinen ikkuna" #: ../../WPrefs.app/Appearance.c:1541 msgid "Owner of Focused Window" msgstr "Aktiivisen ikkunan omistaja" #: ../../WPrefs.app/Appearance.c:1545 ../../WPrefs.app/Appearance.c:1862 msgid "Menu Title" msgstr "Valikon otsikko" #: ../../WPrefs.app/Appearance.c:1549 ../../WPrefs.app/Appearance.c:1551 msgid "Normal Item" msgstr "Normaali alkio" #: ../../WPrefs.app/Appearance.c:1555 msgid "Disabled Item" msgstr "Ei käytössä" #: ../../WPrefs.app/Appearance.c:1564 msgid "Highlighted" msgstr "Korostettu" #: ../../WPrefs.app/Appearance.c:1755 msgid "Texture" msgstr "Kuvio" #: ../../WPrefs.app/Appearance.c:1763 msgid "Titlebar of Focused Window" msgstr "Aktiivisen ikkunan otsikkopalkki" #: ../../WPrefs.app/Appearance.c:1764 msgid "Titlebar of Unfocused Windows" msgstr "Ei-aktiivisten ikkunoiden otsikkopalkki" #: ../../WPrefs.app/Appearance.c:1765 msgid "Titlebar of Focused Window's Owner" msgstr "Aktiivisen ikkunan omistajan otsikkopalkki" #: ../../WPrefs.app/Appearance.c:1766 msgid "Window Resizebar" msgstr "Ikkunan koonsäätöpalkki" #: ../../WPrefs.app/Appearance.c:1767 msgid "Titlebar of Menus" msgstr "Valikoiden otsikkopalkki" #: ../../WPrefs.app/Appearance.c:1768 msgid "Menu Items" msgstr "Valikon alkiot" #: ../../WPrefs.app/Appearance.c:1769 msgid "Icon Background" msgstr "Kuvakkeen tausta" #: ../../WPrefs.app/Appearance.c:1784 msgid "" "Double click in the texture you want to use\n" "for the selected item." msgstr "" "Kaksoisnapauta kuviota, jota haluat käyttää\n" "valitussa kohdassa." #: ../../WPrefs.app/Appearance.c:1798 msgid "New" msgstr "Uusi" #: ../../WPrefs.app/Appearance.c:1802 msgid "Create a new texture." msgstr "Luo uusi kuvio" #: ../../WPrefs.app/Appearance.c:1810 msgid "Extract..." msgstr "Poimi..." #: ../../WPrefs.app/Appearance.c:1814 msgid "Extract texture(s) from a theme or a style file." msgstr "Poimi kuvio(ita) teemasta tai tyylitiedostosta." #: ../../WPrefs.app/Appearance.c:1824 msgid "Edit" msgstr "Muokkaa" #: ../../WPrefs.app/Appearance.c:1827 msgid "Edit the highlighted texture." msgstr "Muokkaa korostettua kuviota." #: ../../WPrefs.app/Appearance.c:1835 ../../WPrefs.app/TexturePanel.c:1317 msgid "Delete" msgstr "Poista" #: ../../WPrefs.app/Appearance.c:1839 msgid "Delete the highlighted texture." msgstr "Poista korostettu kuvio." #: ../../WPrefs.app/Appearance.c:1852 msgid "Color" msgstr "Väri" #: ../../WPrefs.app/Appearance.c:1859 msgid "Focused Window Title" msgstr "Aktiivisen ikkunan otsikko" #: ../../WPrefs.app/Appearance.c:1860 msgid "Unfocused Window Title" msgstr "Ei-aktiivisen ikkunan otsikko" #: ../../WPrefs.app/Appearance.c:1861 msgid "Owner of Focused Window Title" msgstr "Aktiivisen ikkunan omistajan otsikko" #: ../../WPrefs.app/Appearance.c:1863 msgid "Menu Item Text" msgstr "Valikkokohdan teksti" #: ../../WPrefs.app/Appearance.c:1864 msgid "Disabled Menu Item Text" msgstr "Pois käytöstä olevan valikkokohdan teksti" #: ../../WPrefs.app/Appearance.c:1865 msgid "Menu Highlight Color" msgstr "Valikon korostusväri" #: ../../WPrefs.app/Appearance.c:1866 msgid "Highlighted Menu Text Color" msgstr "Korostetun valikon tekstiväri" #: ../../WPrefs.app/Appearance.c:1905 msgid "Background" msgstr "Tausta" #: ../../WPrefs.app/Appearance.c:1917 ../../WPrefs.app/TexturePanel.c:1504 msgid "Browse..." msgstr "Selaa..." #: ../../WPrefs.app/Appearance.c:1930 msgid "Options" msgstr "Valintoja" #: ../../WPrefs.app/Appearance.c:1937 msgid "Menu Style" msgstr "Valikon tyyli" #: ../../WPrefs.app/Appearance.c:1979 msgid "Title Alignment" msgstr "Otsikon sijoitus" #: ../../WPrefs.app/Appearance.c:1986 msgid "Left" msgstr "Vasen" #: ../../WPrefs.app/Appearance.c:1989 ../../WPrefs.app/TexturePanel.c:1518 #: ../../WPrefs.app/Workspace.c:270 msgid "Center" msgstr "Keskitetty" #: ../../WPrefs.app/Appearance.c:1992 msgid "Right" msgstr "Oikea" #: ../../WPrefs.app/Appearance.c:2216 msgid "Appearance Preferences" msgstr "Ulkonäköasetukset" #: ../../WPrefs.app/Appearance.c:2218 msgid "" "Background texture configuration for windows,\n" "menus and icons." msgstr "" "Taustakuvion asetukset ikkunoille,\n" "valikoille ja kuvakkeille." #: ../../WPrefs.app/Appearance.c:2263 msgid "Extract Texture" msgstr "Poimi kuvio" #: ../../WPrefs.app/Appearance.c:2283 msgid "Textures" msgstr "Kuviot" #: ../../WPrefs.app/Appearance.c:2299 msgid "Extract" msgstr "Poimi" #: ../../WPrefs.app/Configurations.c:150 ../../WPrefs.app/Configurations.c:156 #: ../../WPrefs.app/MouseSettings.c:490 ../../WPrefs.app/WindowHandling.c:339 #: ../../WPrefs.app/WindowHandling.c:351 ../../WPrefs.app/Workspace.c:90 #: ../../WPrefs.app/Workspace.c:101 #, c-format msgid "could not load icon %s" msgstr "kuvakkeen %s lataus ei onnistunut" #: ../../WPrefs.app/Configurations.c:164 ../../WPrefs.app/Workspace.c:109 #, c-format msgid "could not process icon %s: %s" msgstr "ei voitu käsitellä kuvaketta %s: %s" #: ../../WPrefs.app/Configurations.c:189 ../../WPrefs.app/Workspace.c:164 #, c-format msgid "could not load image file %s" msgstr "kuvatiedoston %s lataus epäonnistui" #: ../../WPrefs.app/Configurations.c:203 msgid "Icon Slide Speed" msgstr "Kuvakkeen liukumisnopeus" #: ../../WPrefs.app/Configurations.c:209 msgid "Shade Animation Speed" msgstr "\"Vain otsikkopalkki\"-animaation nopeus" #: ../../WPrefs.app/Configurations.c:271 msgid "Smooth Scaling" msgstr "Pehmeä venytys" #: ../../WPrefs.app/Configurations.c:272 msgid "" "Smooth scaled background images, neutralizing\n" "the `pixelization' effect. This will slow\n" "down loading of background images considerably." msgstr "" "Pehmennä venytetyt taustakuvat, mikä\n" "poistaa `sahalaitaefektin'. Tämä hidastaa\n" "taustakuvan latausta huomattavasti." #: ../../WPrefs.app/Configurations.c:313 msgid "Titlebar Style" msgstr "Otsikkopalkin tyyli" #: ../../WPrefs.app/Configurations.c:351 msgid "Animations and Sound" msgstr "Animaatiot ja ääni" #: ../../WPrefs.app/Configurations.c:357 msgid "Animations" msgstr "Animaatiot" #: ../../WPrefs.app/Configurations.c:368 msgid "" "Disable/enable animations such as those shown\n" "for window miniaturization, shading etc." msgstr "" "Ikkunan pienennys-, vain otsikkopalkki-, ym.\n" "animaatiot päälle/pois." #: ../../WPrefs.app/Configurations.c:376 msgid "Superfluous" msgstr "Ylimääräiset" #: ../../WPrefs.app/Configurations.c:387 msgid "" "Disable/enable `superfluous' features and\n" "animations. These include the `ghosting' of the\n" "dock when it's being moved to another side and\n" "the explosion animation when undocking icons." msgstr "" "\"Ylimääräiset\" ominaisuudet ja animaatiot\n" "päälle/pois. Ne sisältävät telakan \"haamuilun\",\n" "kun sitä siirretään toiselle puolelle, ja\n" "telakasta poistettavien kuvakkeiden räjähdyksen." #: ../../WPrefs.app/Configurations.c:397 msgid "Sounds" msgstr "Äänet" #: ../../WPrefs.app/Configurations.c:408 msgid "" "Disable/enable support for sound effects played\n" "for actions like shading and closing a window.\n" "You will need a module distributed separately\n" "for this. You can get it at:\n" "http://shadowmere.student.utwente.nl/" msgstr "" "Tuki äänitehosteille, joita soitetaan toiminnoille\n" "kuten Vain otsikkopalkki ja ikkunan sulkeminen.\n" "Tähän tarvitaan erikseen jaettava moduuli.\n" "Voit hakea sen osoitteesta\n" "http://shadowmere.student.utwente.nl/" #: ../../WPrefs.app/Configurations.c:419 msgid "" "Note: sound requires a module distributed\n" "separately" msgstr "" "Huomaa: ääni edellyttää erikseen\n" "jaettavaa moduulia" #: ../../WPrefs.app/Configurations.c:429 msgid "Dithering colormap for 8bpp" msgstr "Pehmennysvärikartta 8 bpp:lle" #: ../../WPrefs.app/Configurations.c:431 msgid "" "Number of colors to reserve for Window Maker\n" "on displays that support only 8bpp (PseudoColor)." msgstr "" "Värimäärä, joka Window Makerille varataan näytöissä,\n" "joissa käytetään vain 8 bittiä pikseliä kohti (PseudoColor)." #: ../../WPrefs.app/Configurations.c:438 msgid "Disable dithering in any visual/depth" msgstr "Ei pehmennystä missään visualissa/värisyvyydessä" #: ../../WPrefs.app/Configurations.c:459 msgid "" "More colors for\n" "applications" msgstr "" "Lisää värejä\n" "sovelluksille" #: ../../WPrefs.app/Configurations.c:466 msgid "" "More colors for\n" "Window Maker" msgstr "" "Lisää värejä\n" "Window Makerille" #: ../../WPrefs.app/Configurations.c:521 msgid "Other Configurations" msgstr "Muut asetukset" #: ../../WPrefs.app/Configurations.c:523 msgid "" "Animation speeds, titlebar styles, various option\n" "toggling and number of colors to reserve for\n" "Window Maker on 8bit displays." msgstr "" "Animaationopeudet, otsikkopalkin tyylit, erilaisten\n" "asetusten valinta ja värimäärä, joka Window Makerille\n" "varataan kahdeksanbittisissä näytöissä." #: ../../WPrefs.app/Expert.c:75 msgid "" "Disable miniwindows (icons for miniaturized windows). For use with KDE/GNOME." msgstr "" "Ei mini-ikkunoita (pienennettyjen ikkunoiden kuvakkeita). KDE:tä/GNOMEa " "varten." #: ../../WPrefs.app/Expert.c:76 msgid "Do not set non-WindowMaker specific parameters (do not use xset)." msgstr "Älä aseta Window Makerin ulkopuolisia parametreja (älä käytä xset:iä)" #: ../../WPrefs.app/Expert.c:77 msgid "Automatically save session when exiting Window Maker." msgstr "Tallenna istunto automaattisesti, kun Window Maker suljetaan" #: ../../WPrefs.app/Expert.c:78 msgid "Use SaveUnder in window frames, icons, menus and other objects." msgstr "" "SaveUnder käytössä ikkunoiden kehyksissä, kuvakkeissa, valikoissa ja muissa " "kohteissa" #: ../../WPrefs.app/Expert.c:79 msgid "Use Windoze style cycling." msgstr "Käytä Windoze-tyylistä vaihtoa" #: ../../WPrefs.app/Expert.c:80 msgid "Disable confirmation panel for the Kill command." msgstr "Älä pyydä Tapa-komentoon vahvistusta." #: ../../WPrefs.app/Expert.c:81 msgid "Disable selection animation for selected icons." msgstr "Ei valittujen kuvakkeiden animaatiota" #: ../../WPrefs.app/Expert.c:115 msgid "Expert User Preferences" msgstr "Tehokäyttäjän asetukset" #: ../../WPrefs.app/Expert.c:117 msgid "" "Options for people who know what they're doing...\n" "Also have some other misc. options." msgstr "" "Valintoja ihmisille, jotka tietävät, mitä tekevät...\n" "Sekä eräitä sekalaisia valintoja." #: ../../WPrefs.app/Focus.c:81 #, c-format msgid "bad option value %s for option FocusMode. Using default Manual" msgstr "väärä arvo %s valinnalle FocusMode. Käytetään oletusta Manual" #: ../../WPrefs.app/Focus.c:95 #, c-format msgid "bad option value %s for option ColormapMode. Using default Auto" msgstr "väärä arvo %s valinnalle ColormapMode. Käytetään oletusta Auto" #: ../../WPrefs.app/Focus.c:215 msgid "Input Focus Mode" msgstr "Syöttökohdistuksen tila" #: ../../WPrefs.app/Focus.c:223 msgid "Manual: Click on the window to set keyboard input focus" msgstr "Manuaalinen: Napauta ikkunaa asettaaksesi sen näppäimistösyötön kohteeksi" #: ../../WPrefs.app/Focus.c:230 msgid "Auto: Set keyboard input focus to the window under the mouse pointer" msgstr "Automaattinen: Aseta hiiren osoittimen alla oleva ikkuna näppäimistösyötön kohteeksi" #: ../../WPrefs.app/Focus.c:244 msgid "Install colormap from the window..." msgstr "Asenna värikartta ikkunaan..." #: ../../WPrefs.app/Focus.c:249 msgid "...that has the input focus" msgstr "...jolla on syöttökohdistus" #: ../../WPrefs.app/Focus.c:254 msgid "...that's under the mouse pointer" msgstr "...joka on hiiren osoittimen alla" #: ../../WPrefs.app/Focus.c:263 msgid "Automatic Window Raise Delay" msgstr "Automaattisen ikkunannoston viive" #: ../../WPrefs.app/Focus.c:320 ../../WPrefs.app/MouseSettings.c:601 msgid "ms" msgstr "ms" #: ../../WPrefs.app/Focus.c:337 msgid "Do not let applications receive the click used to focus windows" msgstr "Älä välitä sovelluksille ikkunan aktivointipainallusta" #: ../../WPrefs.app/Focus.c:343 msgid "Automatically focus new windows" msgstr "Aktivoi uudet ikkunat automaattisesti" #: ../../WPrefs.app/Focus.c:364 msgid "Window Focus Preferences" msgstr "Ikkunoiden aktivointiasetukset" #: ../../WPrefs.app/Focus.c:366 msgid "" "Keyboard focus switching policy, colormap switching\n" "policy for 8bpp displays and other related options." msgstr "" "Näppäimistökohdistuksen vaihtosäännöt, värikartan vaihto-\n" "säännöt 8 bittitason näytöille yms. valintoja." #: ../../WPrefs.app/Font.c:277 msgid "Could not locate font information file WPrefs.app/font.data" msgstr "Kirjasininfo-tiedostoa WPrefs.app/font.data ei löytynyt" #: ../../WPrefs.app/Font.c:283 msgid "Could not read font information file WPrefs.app/font.data" msgstr "Kirjasininfo-tiedostoa WPrefs.app/font.data ei voitu lukea" #: ../../WPrefs.app/Font.c:294 msgid "" "Invalid data in font information file WPrefs.app/font.data.\n" "Encodings data not found." msgstr "" "Virheellisiä tietoja kirjasininfo-tiedostossa WPrefs.app/font.data.\n" "Merkistötietoja ei löytynyt." #: ../../WPrefs.app/Font.c:299 msgid "- Custom -" msgstr "- Mukautettu -" #: ../../WPrefs.app/Font.c:376 msgid "Default Font Sets" msgstr "Oletuskirjasinvalikoima" #: ../../WPrefs.app/Font.c:389 msgid "Font Set" msgstr "Kirjasinvalikoima" #: ../../WPrefs.app/Font.c:418 msgid "Add..." msgstr "Lisää..." #: ../../WPrefs.app/Font.c:423 ../../WPrefs.app/Font.c:438 msgid "Change..." msgstr "Muuta..." #: ../../WPrefs.app/Font.c:428 ../../WPrefs.app/Paths.c:288 #: ../../WPrefs.app/Paths.c:319 msgid "Remove" msgstr "Poista" #: ../../WPrefs.app/Font.c:477 msgid "Font Preferences" msgstr "Kirjasinasetukset" #: ../../WPrefs.app/Font.c:478 msgid "Font Configurations for Windows, Menus etc" msgstr "Kirjasinasetukset ikkunoille, valikoille jne." #: ../../WPrefs.app/Icons.c:180 msgid "Icon Positioning" msgstr "Kuvakkeiden sijoitus" #: ../../WPrefs.app/Icons.c:227 msgid "Iconification Animation" msgstr "Pienennysanimaatio" #: ../../WPrefs.app/Icons.c:238 msgid "Shrinking/Zooming" msgstr "Kutistuva/kasvava" #: ../../WPrefs.app/Icons.c:239 msgid "Spinning/Twisting" msgstr "Pyörivä (Z-aks.)" #: ../../WPrefs.app/Icons.c:240 msgid "3D-flipping" msgstr "Pyörivä (X-aks.)" #: ../../WPrefs.app/Icons.c:241 ../../WPrefs.app/MouseSettings.c:838 #: ../../WPrefs.app/MouseSettings.c:843 msgid "None" msgstr "Ei mitään" #: ../../WPrefs.app/Icons.c:254 msgid "Auto-arrange icons" msgstr "Järjestä kuvakkeet automaattisesti" #: ../../WPrefs.app/Icons.c:256 msgid "Keep icons and miniwindows arranged all the time." msgstr "Pidä kuvakkeet ja mini-ikkunat aina järjestyksessä." #: ../../WPrefs.app/Icons.c:262 msgid "Omnipresent miniwindows" msgstr "Mini-ikkunat näkyvät kaikkialla" #: ../../WPrefs.app/Icons.c:264 msgid "Make miniwindows be present in all workspaces." msgstr "Näytä mini-ikkunat kaikissa työtiloissa." #: ../../WPrefs.app/Icons.c:273 msgid "Icon Size" msgstr "Kuvakkeiden koko" #: ../../WPrefs.app/Icons.c:275 msgid "The size of the dock/application icon and miniwindows" msgstr "Telakka/sovelluskuvakkeen ja mini-ikkunoiden koko." #: ../../WPrefs.app/Icons.c:345 msgid "Icon Preferences" msgstr "Kuvakeasetukset" #: ../../WPrefs.app/Icons.c:347 msgid "" "Icon/Miniwindow handling options. Icon positioning\n" "area, sizes of icons, miniaturization animation style." msgstr "" "Kuvakkeiden/mini-ikkunoiden käsittelyasetukset:\n" "kuvakkeiden sijoituspaikka, niiden koot ja pienennys-\n" "animaation tyyli." #: ../../WPrefs.app/KeyboardSettings.c:73 msgid "Initial Key Repeat" msgstr "Näppäintoiston alkuviive" #: ../../WPrefs.app/KeyboardSettings.c:114 msgid "Key Repeat Rate" msgstr "Näppäintoiston nopeus" #: ../../WPrefs.app/KeyboardSettings.c:154 msgid "Type here to test" msgstr "Kokeile kirjoitusta tässä" #: ../../WPrefs.app/KeyboardSettings.c:173 msgid "Keyboard Preferences" msgstr "Näppäimistöasetukset" #: ../../WPrefs.app/KeyboardSettings.c:175 msgid "Not done" msgstr "Ei tehty" #: ../../WPrefs.app/KeyboardShortcuts.c:186 ../../WPrefs.app/Menu.c:327 #: ../../WPrefs.app/TexturePanel.c:1535 msgid "Cancel" msgstr "Peruuta" #: ../../WPrefs.app/KeyboardShortcuts.c:187 msgid "Press the desired shortcut key(s) or click Cancel to stop capturing." msgstr "Paina haluamasi pikavalinnan näppäinyhdistelmä tai paina 'Peruuta'." #: ../../WPrefs.app/KeyboardShortcuts.c:207 #: ../../WPrefs.app/KeyboardShortcuts.c:456 ../../WPrefs.app/Menu.c:338 #: ../../WPrefs.app/Menu.c:782 msgid "Capture" msgstr "Sieppaa" #: ../../WPrefs.app/KeyboardShortcuts.c:208 #: ../../WPrefs.app/KeyboardShortcuts.c:464 msgid "Click Capture to interactively define the shortcut key." msgstr "Paina 'Sieppaa' määritelläksesi pikavalinnan interaktiivisesti." #: ../../WPrefs.app/KeyboardShortcuts.c:363 msgid "Actions" msgstr "Toiminnot" #: ../../WPrefs.app/KeyboardShortcuts.c:379 msgid "Open applications menu" msgstr "Avaa sovellusvalikko" #: ../../WPrefs.app/KeyboardShortcuts.c:380 msgid "Open window list menu" msgstr "Avaa ikkunalistavalikko" #: ../../WPrefs.app/KeyboardShortcuts.c:381 msgid "Open window commands menu" msgstr "Avaa ikkunakomennot-valikko" #: ../../WPrefs.app/KeyboardShortcuts.c:382 msgid "Hide active application" msgstr "Piilota aktiivinen sovellus" #: ../../WPrefs.app/KeyboardShortcuts.c:383 msgid "Miniaturize active window" msgstr "Pienennä aktiivinen ikkuna" #: ../../WPrefs.app/KeyboardShortcuts.c:384 msgid "Close active window" msgstr "Sulje aktiivinen ikkuna" #: ../../WPrefs.app/KeyboardShortcuts.c:385 msgid "Maximize active window" msgstr "Suurenna aktiivinen ikkuna" #: ../../WPrefs.app/KeyboardShortcuts.c:386 msgid "Maximize active window vertically" msgstr "Suurenna akt. ikkuna pystysuunnassa" #: ../../WPrefs.app/KeyboardShortcuts.c:387 msgid "Maximize active window horizontally" msgstr "Suurenna akt. ikkuna vaakasuunnassa" #: ../../WPrefs.app/KeyboardShortcuts.c:388 msgid "Raise active window" msgstr "Nosta aktiivinen ikkuna" #: ../../WPrefs.app/KeyboardShortcuts.c:389 msgid "Lower active window" msgstr "Laske aktiivinen ikkuna" #: ../../WPrefs.app/KeyboardShortcuts.c:390 msgid "Raise/Lower window under mouse pointer" msgstr "Nosta/laske hiiren os. alla oleva ikkuna" #: ../../WPrefs.app/KeyboardShortcuts.c:391 msgid "Shade active window" msgstr "Vain otsikkopalkki aktiivisesta ikkunasta" #: ../../WPrefs.app/KeyboardShortcuts.c:392 msgid "Move/Resize active window" msgstr "Muuta aktiivisen ikkunan paikkaa tai kokoa" #: ../../WPrefs.app/KeyboardShortcuts.c:393 msgid "Select active window" msgstr "Valitse aktiivinen ikkuna" #: ../../WPrefs.app/KeyboardShortcuts.c:394 msgid "Focus next window" msgstr "Aktivoi seuraava ikkuna" #: ../../WPrefs.app/KeyboardShortcuts.c:395 msgid "Focus previous window" msgstr "Aktivoi edellinen ikkuna" #: ../../WPrefs.app/KeyboardShortcuts.c:396 msgid "Switch to next workspace" msgstr "Siirry seuraavaan työtilaan" #: ../../WPrefs.app/KeyboardShortcuts.c:397 msgid "Switch to previous workspace" msgstr "Siirry edelliseen työtilaan" #: ../../WPrefs.app/KeyboardShortcuts.c:398 msgid "Switch to next ten workspaces" msgstr "Siirry seuraavalle työtilakymmenelle" #: ../../WPrefs.app/KeyboardShortcuts.c:399 msgid "Switch to previous ten workspaces" msgstr "Siirry edelliselle työtilakymmenelle" #: ../../WPrefs.app/KeyboardShortcuts.c:400 msgid "Switch to workspace 1" msgstr "Siirry työtilaan 1" #: ../../WPrefs.app/KeyboardShortcuts.c:401 msgid "Switch to workspace 2" msgstr "Siirry työtilaan 2" #: ../../WPrefs.app/KeyboardShortcuts.c:402 msgid "Switch to workspace 3" msgstr "Siirry työtilaan 3" #: ../../WPrefs.app/KeyboardShortcuts.c:403 msgid "Switch to workspace 4" msgstr "Siirry työtilaan 4" #: ../../WPrefs.app/KeyboardShortcuts.c:404 msgid "Switch to workspace 5" msgstr "Siirry työtilaan 5" #: ../../WPrefs.app/KeyboardShortcuts.c:405 msgid "Switch to workspace 6" msgstr "Siirry työtilaan 6" #: ../../WPrefs.app/KeyboardShortcuts.c:406 msgid "Switch to workspace 7" msgstr "Siirry työtilaan 7" #: ../../WPrefs.app/KeyboardShortcuts.c:407 msgid "Switch to workspace 8" msgstr "Siirry työtilaan 8" #: ../../WPrefs.app/KeyboardShortcuts.c:408 msgid "Switch to workspace 9" msgstr "Siirry työtilaan 9" #: ../../WPrefs.app/KeyboardShortcuts.c:409 msgid "Switch to workspace 10" msgstr "Siirry työtilaan 10" #: ../../WPrefs.app/KeyboardShortcuts.c:410 msgid "Shortcut for window 1" msgstr "Pikavalinta ikkunalle 1" #: ../../WPrefs.app/KeyboardShortcuts.c:411 msgid "Shortcut for window 2" msgstr "Pikavalinta ikkunalle 2" #: ../../WPrefs.app/KeyboardShortcuts.c:412 msgid "Shortcut for window 3" msgstr "Pikavalinta ikkunalle 3" #: ../../WPrefs.app/KeyboardShortcuts.c:413 msgid "Shortcut for window 4" msgstr "Pikavalinta ikkunalle 4" #: ../../WPrefs.app/KeyboardShortcuts.c:414 msgid "Shortcut for window 5" msgstr "Pikavalinta ikkunalle 5" #: ../../WPrefs.app/KeyboardShortcuts.c:415 msgid "Shortcut for window 6" msgstr "Pikavalinta ikkunalle 6" #: ../../WPrefs.app/KeyboardShortcuts.c:416 msgid "Shortcut for window 7" msgstr "Pikavalinta ikkunalle 7" #: ../../WPrefs.app/KeyboardShortcuts.c:417 msgid "Shortcut for window 8" msgstr "Pikavalinta ikkunalle 8" #: ../../WPrefs.app/KeyboardShortcuts.c:418 msgid "Shortcut for window 9" msgstr "Pikavalinta ikkunalle 9" #: ../../WPrefs.app/KeyboardShortcuts.c:419 msgid "Shortcut for window 10" msgstr "Pikavalinta ikkunalle 10" #: ../../WPrefs.app/KeyboardShortcuts.c:420 msgid "Switch to Next Screen/Monitor" msgstr "Vaihda seuraavaan ruutuun/monitoriin" #: ../../WPrefs.app/KeyboardShortcuts.c:421 msgid "Raise Clip" msgstr "Nosta Liitin" #: ../../WPrefs.app/KeyboardShortcuts.c:422 msgid "Lower Clip" msgstr "Laske Liitin" #: ../../WPrefs.app/KeyboardShortcuts.c:423 msgid "Raise/Lower Clip" msgstr "Nosta/Laske Liitin" #: ../../WPrefs.app/KeyboardShortcuts.c:425 msgid "Toggle keyboard language" msgstr "Vaihda näppäimistön kieli" #: ../../WPrefs.app/KeyboardShortcuts.c:439 msgid "Shortcut" msgstr "Pikavalinta" #: ../../WPrefs.app/KeyboardShortcuts.c:450 ../../WPrefs.app/Menu.c:788 msgid "Clear" msgstr "Tyhjennä" #: ../../WPrefs.app/KeyboardShortcuts.c:512 msgid "Keyboard Shortcut Preferences" msgstr "Näppäimistöpikavalintojen asetukset" #: ../../WPrefs.app/KeyboardShortcuts.c:514 msgid "" "Change the keyboard shortcuts for actions such\n" "as changing workspaces and opening menus." msgstr "" "Muuta näppäinpikavalintoja toiminnoille kuten\n" "työtilojen vaihto ja valikkojen avaus." #: ../../WPrefs.app/Menu.c:477 msgid "New Items" msgstr "Uudet alkiot" #: ../../WPrefs.app/Menu.c:478 msgid "Sample Commands" msgstr "Näytekomentoja" #: ../../WPrefs.app/Menu.c:479 msgid "Sample Submenus" msgstr "Näyte-alivalikkoja" #: ../../WPrefs.app/Menu.c:493 msgid "Run Program" msgstr "Käynnistä ohjelma" #: ../../WPrefs.app/Menu.c:494 msgid "Internal Command" msgstr "Sisäinen komento" #: ../../WPrefs.app/Menu.c:495 msgid "Submenu" msgstr "Alivalikko" #: ../../WPrefs.app/Menu.c:496 msgid "External Submenu" msgstr "Ulkoinen alivalikko" #: ../../WPrefs.app/Menu.c:497 msgid "Generated Submenu" msgstr "Ohjelman luoma alivalikko" #: ../../WPrefs.app/Menu.c:498 msgid "Directory Contents" msgstr "Hakemiston sisältö" #: ../../WPrefs.app/Menu.c:499 msgid "Workspace Menu" msgstr "Työtilavalikko" #: ../../WPrefs.app/Menu.c:500 ../../WPrefs.app/MouseSettings.c:840 msgid "Window List Menu" msgstr "Ikkunalistavalikko" #: ../../WPrefs.app/Menu.c:519 msgid "XTerm" msgstr "XTerm" #: ../../WPrefs.app/Menu.c:522 msgid "rxvt" msgstr "rxvt" #: ../../WPrefs.app/Menu.c:525 msgid "ETerm" msgstr "ETerm" #: ../../WPrefs.app/Menu.c:528 msgid "Run..." msgstr "Käynnistä..." #: ../../WPrefs.app/Menu.c:531 msgid "Netscape" msgstr "Netscape" #: ../../WPrefs.app/Menu.c:534 msgid "gimp" msgstr "gimp" #: ../../WPrefs.app/Menu.c:537 msgid "epic" msgstr "epic" #: ../../WPrefs.app/Menu.c:540 msgid "ee" msgstr "ee" #: ../../WPrefs.app/Menu.c:543 msgid "xv" msgstr "xv" #: ../../WPrefs.app/Menu.c:546 msgid "Acrobat Reader" msgstr "Acrobat Reader" #: ../../WPrefs.app/Menu.c:549 msgid "ghostview" msgstr "ghostview" #: ../../WPrefs.app/Menu.c:552 ../../WPrefs.app/Menu.c:809 msgid "Exit Window Maker" msgstr "Sulje Window Maker" #: ../../WPrefs.app/Menu.c:575 msgid "Debian Menu" msgstr "Debian-valikko" #: ../../WPrefs.app/Menu.c:578 msgid "RedHat Menu" msgstr "RedHat-valikko" #: ../../WPrefs.app/Menu.c:581 msgid "Menu Conectiva" msgstr "" #: ../../WPrefs.app/Menu.c:584 ../../WPrefs.app/Themes.c:250 msgid "Themes" msgstr "Teemat" #: ../../WPrefs.app/Menu.c:589 msgid "Bg Images (scale)" msgstr "Taustakuvat (venytys)" #: ../../WPrefs.app/Menu.c:594 msgid "Bg Images (tile)" msgstr "Taustakuvat (mosaiikki)" #: ../../WPrefs.app/Menu.c:599 msgid "Assorted XTerms" msgstr "XTerm-kokoelma" #: ../../WPrefs.app/Menu.c:601 msgid "XTerm Yellow on Blue" msgstr "XTerm, keltainen sinisellä" #: ../../WPrefs.app/Menu.c:604 msgid "XTerm White on Black" msgstr "XTerm, valkoinen mustalla" #: ../../WPrefs.app/Menu.c:607 msgid "XTerm Black on White" msgstr "XTerm, musta valkoisella" #: ../../WPrefs.app/Menu.c:610 msgid "XTerm Black on Beige" msgstr "XTerm, musta beigellä" #: ../../WPrefs.app/Menu.c:613 msgid "XTerm White on Green" msgstr "XTerm, valkoinen vihreällä" #: ../../WPrefs.app/Menu.c:616 msgid "XTerm White on Olive" msgstr "XTerm, valkoinen oliivinvihreällä" #: ../../WPrefs.app/Menu.c:619 msgid "XTerm Blue on Blue" msgstr "XTerm, sininen sinisellä" #: ../../WPrefs.app/Menu.c:622 msgid "XTerm BIG FONTS" msgstr "XTerm, SUURET FONTIT" #: ../../WPrefs.app/Menu.c:644 msgid "Program to Run" msgstr "Käynnistettävä ohjelma" #: ../../WPrefs.app/Menu.c:658 msgid "Run the program inside a Xterm" msgstr "Aja ohjelma Xtermissä" #: ../../WPrefs.app/Menu.c:668 msgid "Path for Menu" msgstr "Valikon polku" #: ../../WPrefs.app/Menu.c:681 msgid "" "Enter the path for a file containing a menu\n" "or a list of directories with the programs you\n" "want to have listed in the menu. Ex:\n" "~/GNUstep/Library/WindowMaker/menu\n" "or\n" "/usr/bin ~/xbin" msgstr "" "Syötä valikon sisältävän tiedoston polku\n" "tai ne hakemistot, jotka sisältävät ohjelmat,\n" "jotka haluat mukaan valikkoon. Esim.\n" "~/GNUstep/Library/WindowMaker/menu\n" "tai\n" "/usr/bin ~/xbin" #: ../../WPrefs.app/Menu.c:696 msgid "Command" msgstr "Komento" #: ../../WPrefs.app/Menu.c:710 msgid "" "Enter a command that outputs a menu\n" "definition to stdout when invoked." msgstr "" "Syötä komento, joka tulostaa valikko-\n" "määritelmän vakiotulostusvirtaan." #: ../../WPrefs.app/Menu.c:721 msgid "Command to Open Files" msgstr "Tiedostojen avauskomento" #: ../../WPrefs.app/Menu.c:735 msgid "" "Enter the command you want to use to open the\n" "files in the directories listed below." msgstr "" "Kirjoita komento, jolla haluat avata alla näkyvien\n" "hakemistojen sisältämät tiedostot." #: ../../WPrefs.app/Menu.c:744 msgid "Directories with Files" msgstr "Hakemistot, jotka sisältävät tiedostot" #: ../../WPrefs.app/Menu.c:757 msgid "Strip extensions from file names" msgstr "Älä näytä tiedostonimien päätteitä" #: ../../WPrefs.app/Menu.c:769 msgid "Keyboard Shortcut" msgstr "Näppäimistöpikavalinta" #: ../../WPrefs.app/Menu.c:805 msgid "Arrange Icons" msgstr "Järjestä kuvakkeet" #: ../../WPrefs.app/Menu.c:806 msgid "Hide All Windows Except For The Focused One" msgstr "Piilota kaikki ikkunat aktiivista lukuunottamatta" #: ../../WPrefs.app/Menu.c:807 msgid "Show All Windows" msgstr "Näytä kaikki ikkunat" #: ../../WPrefs.app/Menu.c:810 msgid "Exit X Session" msgstr "Sulje X-istunto" #: ../../WPrefs.app/Menu.c:811 msgid "Restart Window Maker" msgstr "Käynnistä WM uudelleen" #: ../../WPrefs.app/Menu.c:812 msgid "Start Another Window Manager : (" msgstr "Käynnistä toinen ikkunamanageri : (" #: ../../WPrefs.app/Menu.c:814 msgid "Save Current Session" msgstr "Tallenna tämä istunto" #: ../../WPrefs.app/Menu.c:815 msgid "Clear Saved Session" msgstr "Tyhjennä tallennettu istunto" #: ../../WPrefs.app/Menu.c:816 msgid "Refresh Screen" msgstr "Virkistä ruutu" #: ../../WPrefs.app/Menu.c:817 msgid "Open Info Panel" msgstr "Avaa infopaneeli" #: ../../WPrefs.app/Menu.c:818 msgid "Open Copyright Panel" msgstr "Avaa copyright-paneeli" #: ../../WPrefs.app/Menu.c:824 msgid "Window Manager to Start" msgstr "Käynnistettävä ikkunamanageri" #: ../../WPrefs.app/Menu.c:840 msgid "Do not confirm action." msgstr "Ei vahvistuspaneelia" #: ../../WPrefs.app/Menu.c:850 msgid "" "Instructions:\n" "\n" " - drag items from the left to the menu to add new items\n" " - drag items out of the menu to remove items\n" " - drag items in menu to change their position\n" " - drag items with Control pressed to copy them\n" " - double click in a menu item to change the label\n" " - click on a menu item to change related information" msgstr "" "Ohjeet:\n" " - valikkoon lisätään merkintöjä siirtämällä\n" " niitä vasemmalta\n" " - valikosta poistetaan merkintöjä siirtämällä\n" " niitä hiirellä pois\n" " - merkintöjen paikkaa vaihdetaan siirtämällä\n" " niitä hiirellä\n" " - merkintöjä kopioidaan siirtämällä niitä\n" " Control painettuna\n" " - merkinnän nimeä vaihdetaan kaksois-\n" " napauttamalla merkintää\n" " - merkintään liittyviä tietoja vaihdetaan\n" " painamalla merkintää" #: ../../WPrefs.app/Menu.c:1067 #, c-format msgid "unknown command '%s' in menu" msgstr "Valikossa on tuntematon komento '%s'" #: ../../WPrefs.app/Menu.c:1099 msgid ": Execute Program" msgstr ": Käynnistä ohjelma" #: ../../WPrefs.app/Menu.c:1103 msgid ": Perform Internal Command" msgstr ": Suorita sisäinen komento" #: ../../WPrefs.app/Menu.c:1107 msgid ": Open a Submenu" msgstr ": Avaa alivalikko" #: ../../WPrefs.app/Menu.c:1111 msgid ": Program Generated Submenu" msgstr ": Ohjelman luoma alivalikko" #: ../../WPrefs.app/Menu.c:1115 msgid ": Directory Contents Menu" msgstr ": Hakemiston sisällön mukainen valikko" #: ../../WPrefs.app/Menu.c:1119 msgid ": Open Workspaces Submenu" msgstr ": Avaa työtila-alivalikko" #: ../../WPrefs.app/Menu.c:1123 msgid ": Open Window List Submenu" msgstr "Avaa ikkunalista-alivalikko" #: ../../WPrefs.app/Menu.c:1343 msgid "Remove Submenu" msgstr "Poista alivalikko" #: ../../WPrefs.app/Menu.c:1344 msgid "" "Removing this item will destroy all items inside\n" "the submenu. Do you really want to do that?" msgstr "" "Jos tämä merkintä poistetaan, kaikki alivalikon\n" "sisältämät alkiot häviävät. Haluatko silti poistaa sen?" #: ../../WPrefs.app/Menu.c:1346 msgid "Yes" msgstr "Kyllä" #: ../../WPrefs.app/Menu.c:1346 msgid "No" msgstr "Ei" #: ../../WPrefs.app/Menu.c:1347 msgid "Yes, don't ask again" msgstr "Kyllä, älä kysy enää" #. if there is a localized plmenu for the tongue put it's filename here #: ../../WPrefs.app/Menu.c:1514 ../../WPrefs.app/Menu.c:1521 #, c-format msgid "%s/Library/WindowMaker/plmenu" msgstr "%s/Library/WindowMaker/plmenu.fi" #: ../../WPrefs.app/Menu.c:1530 #, c-format msgid "Could not open default menu from '%s'" msgstr "Oletusvalikon '%s' avaaminen ei onnistunut" #: ../../WPrefs.app/Menu.c:1569 msgid "" "The menu file format currently in use is not supported\n" "by this tool. Do you want to discard the current menu\n" "to use this tool?" msgstr "" "Tämä työkalu ei tue käytössä olevaa valikkotiedostomuotoa.\n" "Haluatko hylätä tämänhetkisen valikon, jotta voit käyttää\n" "tätä työkalua?" #: ../../WPrefs.app/Menu.c:1572 msgid "Yes, Discard and Update" msgstr "Kyllä, hylkää ja päivitä" #: ../../WPrefs.app/Menu.c:1573 msgid "No, Keep Current Menu" msgstr "Ei, pidä nykyinen valikko" #: ../../WPrefs.app/Menu.c:1821 msgid "Applications Menu Definition" msgstr "Sovellusvalikon määrittely" #: ../../WPrefs.app/Menu.c:1823 msgid "Edit the menu for launching applications." msgstr "Muokkaa sovellusten käynnistysvalikkoa." #: ../../WPrefs.app/MenuPreferences.c:112 msgid "Menu Scrolling Speed" msgstr "Valikon liukunopeus" #: ../../WPrefs.app/MenuPreferences.c:161 msgid "Submenu Alignment" msgstr "Alivalikon sijoitus" #: ../../WPrefs.app/MenuPreferences.c:205 msgid "" "Always open submenus inside the screen, instead of scrolling." msgstr "" "Avaa alivalikot aina ruudun sisällä vierityksen sijaan." #: ../../WPrefs.app/MenuPreferences.c:210 msgid "Scroll off-screen menus when pointer is moved over them." msgstr "" "Liu'uta ruudun ulkopuolinen valikko näkyviin, kun osoitin on sen päällä." #: ../../WPrefs.app/MenuPreferences.c:230 msgid "Menu Preferences" msgstr "Valikkoasetukset" #: ../../WPrefs.app/MenuPreferences.c:232 msgid "" "Menu usability related options. Scrolling speed,\n" "alignment of submenus etc." msgstr "" "Valikon käyttöön liittyvät valinnat. Liukunopeus,\n" "alivalikoiden sijoitus, yms." #: ../../WPrefs.app/MouseSettings.c:141 msgid "Invalid mouse acceleration value. Must be a positive real value." msgstr "Väärä hiiren kiihdytyksen arvo. Pitää olla positiivinen reaaliluku." #: ../../WPrefs.app/MouseSettings.c:161 msgid "" "Invalid mouse acceleration threshold value. Must be the number of pixels to " "travel before accelerating." msgstr "" "Virheellinen hiiren kiihdytyksen kynnysarvo. Sen pitää olla pikselimäärä, " "joka voidaan liikuttaa ilman kiihdytystä." #: ../../WPrefs.app/MouseSettings.c:262 ../../WPrefs.app/MouseSettings.c:274 #: ../../WPrefs.app/MouseSettings.c:286 ../../WPrefs.app/MouseSettings.c:298 #, c-format msgid "bad value %s for option %s" msgstr "virheellinen arvo %s valinnalle %s" #: ../../WPrefs.app/MouseSettings.c:357 #, c-format msgid "" "modifier key %s for option ModifierKey was not recognized. Using %s as " "default" msgstr "" "muunnosnäppäintä %s valintaa ModifierKey varten ei tunnistettu. Käytetään " "oletusta %s" #: ../../WPrefs.app/MouseSettings.c:382 msgid "could not retrieve keyboard modifier mapping" msgstr "muunnosnäppäimen sijoituksen noutaminen epäonnistui" #: ../../WPrefs.app/MouseSettings.c:477 msgid "Mouse Speed" msgstr "Hiiren nopeus" #: ../../WPrefs.app/MouseSettings.c:507 msgid "Accel.:" msgstr "Kiihdytys:" #: ../../WPrefs.app/MouseSettings.c:520 msgid "Threshold:" msgstr "Kynnys:" #: ../../WPrefs.app/MouseSettings.c:535 msgid "Double-Click Delay" msgstr "Kaksoispainalluksen viive" #: ../../WPrefs.app/MouseSettings.c:579 msgid "Test" msgstr "Kokeile" #: ../../WPrefs.app/MouseSettings.c:609 msgid "Workspace Mouse Actions" msgstr "Työtilan hiiritoiminnot" #: ../../WPrefs.app/MouseSettings.c:614 msgid "Disable mouse actions" msgstr "Estä hiiritoiminnot" #: ../../WPrefs.app/MouseSettings.c:620 msgid "Left Button" msgstr "Vasen painike" #: ../../WPrefs.app/MouseSettings.c:630 msgid "Middle Button" msgstr "Keskipainike" #: ../../WPrefs.app/MouseSettings.c:640 msgid "Right Button" msgstr "Oikea painike" #: ../../WPrefs.app/MouseSettings.c:650 msgid "Mouse Wheel" msgstr "Hiiren rulla" #: ../../WPrefs.app/MouseSettings.c:672 msgid "Mouse Grab Modifier" msgstr "Hiirellätarttumisnäppäin" #: ../../WPrefs.app/MouseSettings.c:674 msgid "" "Keyboard modifier to use for actions that\n" "involve dragging windows with the mouse,\n" "clicking inside the window." msgstr "" "Muunnosnäppäin, jota käytetään toiminnoissa,\n" "joiden avulla ikkunoita voidaan siirtää\n" "vetämällä hiirellä muualta kuin otsikkopalkista." #: ../../WPrefs.app/MouseSettings.c:708 #, c-format msgid "could not create %s" msgstr "ei voitu luoda %s:aa" #: ../../WPrefs.app/MouseSettings.c:724 #, c-format msgid "could not create temporary file %s" msgstr "ei voitu luoda tilapäistä tiedostoa %s" #: ../../WPrefs.app/MouseSettings.c:756 #, c-format msgid "could not rename file %s to %s\n" msgstr "Ei voitu vaihtaa nimeä %s -> %s\n" #: ../../WPrefs.app/MouseSettings.c:829 msgid "Shift" msgstr "" #: ../../WPrefs.app/MouseSettings.c:830 msgid "Lock" msgstr "" #: ../../WPrefs.app/MouseSettings.c:831 msgid "Control" msgstr "" #: ../../WPrefs.app/MouseSettings.c:832 msgid "Mod1" msgstr "" #: ../../WPrefs.app/MouseSettings.c:833 msgid "Mod2" msgstr "" #: ../../WPrefs.app/MouseSettings.c:834 msgid "Mod3" msgstr "" #: ../../WPrefs.app/MouseSettings.c:835 msgid "Mod4" msgstr "" #: ../../WPrefs.app/MouseSettings.c:836 msgid "Mod5" msgstr "" #: ../../WPrefs.app/MouseSettings.c:839 msgid "Applications Menu" msgstr "Sovellusvalikko" #: ../../WPrefs.app/MouseSettings.c:841 msgid "Select Windows" msgstr "Ikkunoiden valinta" #: ../../WPrefs.app/MouseSettings.c:844 msgid "Switch Workspaces" msgstr "Työtilan vaihto" #: ../../WPrefs.app/MouseSettings.c:849 msgid "Mouse Preferences" msgstr "Hiiriasetukset" #: ../../WPrefs.app/MouseSettings.c:851 msgid "" "Mouse speed/acceleration, double click delay,\n" "mouse button bindings etc." msgstr "" "Hiiren nopeus, kiihdytys, kaksoisnapautuksen viive,\n" "hiiren nappien merkitys jne." #: ../../WPrefs.app/Paths.c:84 msgid "bad value in option IconPath. Using default path list" msgstr "Virheellinen arvo valinnassa IconPath. Käytetään oletushakupolkuja" #: ../../WPrefs.app/Paths.c:101 msgid "bad value in option PixmapPath. Using default path list" msgstr "" "valinta PixmapPath sisältää virheellisen arvon. Käytetään oletushakupolkuja" #: ../../WPrefs.app/Paths.c:149 msgid "Select directory" msgstr "Valitse hakemisto" #: ../../WPrefs.app/Paths.c:270 msgid "Icon Search Paths" msgstr "Kuvakkeiden hakupolut" #: ../../WPrefs.app/Paths.c:281 ../../WPrefs.app/Paths.c:312 #: ../../WPrefs.app/TexturePanel.c:1311 msgid "Add" msgstr "Lisää" #: ../../WPrefs.app/Paths.c:301 msgid "Pixmap Search Paths" msgstr "Kuvien hakupolut" #: ../../WPrefs.app/Paths.c:341 msgid "Search Path Configuration" msgstr "Hakupolkujen asetukset" #: ../../WPrefs.app/Paths.c:343 msgid "" "Search paths to use when looking for pixmaps\n" "and icons." msgstr "" "Kuvien ja kuvakkeiden hakemiseen käytettävät\n" "hakupolut." #: ../../WPrefs.app/Preferences.c:75 msgid "OFF" msgstr "POIS" #: ../../WPrefs.app/Preferences.c:77 msgid "1 pixel" msgstr "1 pikseli" #. 2-4 #: ../../WPrefs.app/Preferences.c:80 #, c-format msgid "%i pixels" msgstr "%i pikseliä" #. >4 #: ../../WPrefs.app/Preferences.c:83 #, c-format msgid "%i pixels " msgstr "%i pikseliä " #: ../../WPrefs.app/Preferences.c:229 msgid "Size Display" msgstr "Koon näyttö" #: ../../WPrefs.app/Preferences.c:231 msgid "" "The position or style of the window size\n" "display that's shown when a window is resized." msgstr "" "Ikkunan kokoa muutettaessa näytettävän\n" "kokonäytön paikka tai tyyli." #: ../../WPrefs.app/Preferences.c:238 ../../WPrefs.app/Preferences.c:259 msgid "Corner of screen" msgstr "Ruudun kulmassa" #: ../../WPrefs.app/Preferences.c:239 ../../WPrefs.app/Preferences.c:260 msgid "Center of screen" msgstr "Ruudun keskipisteessä" #: ../../WPrefs.app/Preferences.c:240 ../../WPrefs.app/Preferences.c:261 msgid "Center of resized window" msgstr "Ks. ikkunan keskipisteessä" #: ../../WPrefs.app/Preferences.c:241 msgid "Technical drawing-like" msgstr "Teknisen piirr. tyyppinen" #: ../../WPrefs.app/Preferences.c:242 ../../WPrefs.app/Preferences.c:262 msgid "Disabled" msgstr "Ei käytössä" #: ../../WPrefs.app/Preferences.c:250 msgid "Position Display" msgstr "Sijainnin näyttö" #: ../../WPrefs.app/Preferences.c:252 msgid "" "The position or style of the window position\n" "display that's shown when a window is moved." msgstr "" "Ikkunaa siirrettäessä näkyvän\n" "sijaintinäytön paikka tai tyyli." #: ../../WPrefs.app/Preferences.c:270 msgid "Show balloon text for..." msgstr "Näytä puhekuplateksti..." #: ../../WPrefs.app/Preferences.c:277 msgid "incomplete window titles" msgstr "epätäydellisille ikkunaotsikoille" #: ../../WPrefs.app/Preferences.c:278 msgid "miniwindow titles" msgstr "mini-ikkunoiden otsikoille" #: ../../WPrefs.app/Preferences.c:279 msgid "application/dock icons" msgstr "sovellus-/telakkakuvakkeille" #: ../../WPrefs.app/Preferences.c:280 msgid "internal help" msgstr "sisäinen apu" #: ../../WPrefs.app/Preferences.c:292 msgid "Raise window when switching focus with keyboard" msgstr "Nosta ikkuna, kun aktiivista ikkunaa vaihdetaan näppäimistöllä" #: ../../WPrefs.app/Preferences.c:298 msgid "" "Enable keyboard language\n" "switch button in window titlebars." msgstr "" "Näytä näppäimistön kielen vaihtopainike\n" "ikkunoiden otsikkopalkeissa." #: ../../WPrefs.app/Preferences.c:307 msgid "Workspace border" msgstr "Työtilan reuna" #: ../../WPrefs.app/Preferences.c:323 msgid "Left/Right" msgstr "Vas./oik." #: ../../WPrefs.app/Preferences.c:328 msgid "Top/Bottom" msgstr "Ylh./alh." #: ../../WPrefs.app/Preferences.c:349 msgid "Miscellaneous Ergonomic Preferences" msgstr "Sekalaiset ergonomia-asetukset" #: ../../WPrefs.app/Preferences.c:350 msgid "" "Various settings like balloon text, geometry\n" "displays etc." msgstr "" "Erilaisia asetuksia kuten puhekuplateksti,\n" "geometrianäytöt jne." #: ../../WPrefs.app/TexturePanel.c:323 msgid "Saturation" msgstr "" #: ../../WPrefs.app/TexturePanel.c:325 msgid "Brightness" msgstr "Kirkkaus" #: ../../WPrefs.app/TexturePanel.c:373 ../../WPrefs.app/TexturePanel.c:380 msgid "Hue" msgstr "Sävy" #: ../../WPrefs.app/TexturePanel.c:610 msgid "Could not load the selected file: " msgstr "Ei voitu avata valittua tiedostoa: " #: ../../WPrefs.app/TexturePanel.c:664 msgid "Open Image" msgstr "Avaa kuva" #: ../../WPrefs.app/TexturePanel.c:694 msgid "The selected file does not contain a supported image." msgstr "Valittu tiedosto ei sisällä tuetun tyyppistä kuvaa." #: ../../WPrefs.app/TexturePanel.c:945 #, c-format msgid "could not load file '%s': %s" msgstr "tiedoston '%s': %s lataus epäonnistui" #: ../../WPrefs.app/TexturePanel.c:1064 #, c-format msgid "error creating texture %s" msgstr "" #: ../../WPrefs.app/TexturePanel.c:1255 msgid "Texture Panel" msgstr "Kuviopaneeli" #: ../../WPrefs.app/TexturePanel.c:1263 msgid "Texture Name" msgstr "Kuvion nimi" #: ../../WPrefs.app/TexturePanel.c:1275 msgid "Solid Color" msgstr "Yksivärinen" #: ../../WPrefs.app/TexturePanel.c:1276 msgid "Gradient Texture" msgstr "Liukuväri" #: ../../WPrefs.app/TexturePanel.c:1277 msgid "Simple Gradient Texture" msgstr "Yksinkertainen liukuväri" #: ../../WPrefs.app/TexturePanel.c:1278 msgid "Textured Gradient" msgstr "Liukuväritetty kuvio" #: ../../WPrefs.app/TexturePanel.c:1279 msgid "Image Texture" msgstr "Kuva" #: ../../WPrefs.app/TexturePanel.c:1287 msgid "Default Color" msgstr "Oletusväri" #: ../../WPrefs.app/TexturePanel.c:1299 msgid "Gradient Colors" msgstr "Liukuvärit" #: ../../WPrefs.app/TexturePanel.c:1395 msgid "Direction" msgstr "Suunta" #: ../../WPrefs.app/TexturePanel.c:1423 msgid "Gradient" msgstr "Liukuväri" #: ../../WPrefs.app/TexturePanel.c:1441 msgid "Gradient Opacity" msgstr "Liukuvärin peittävyys" #: ../../WPrefs.app/TexturePanel.c:1484 msgid "Image" msgstr "Kuva" #: ../../WPrefs.app/TexturePanel.c:1516 msgid "Tile" msgstr "Tiili" #: ../../WPrefs.app/TexturePanel.c:1517 msgid "Scale" msgstr "Venytä" #: ../../WPrefs.app/TexturePanel.c:1519 msgid "Maximize" msgstr "Suurenna" #: ../../WPrefs.app/Themes.c:71 ../../WPrefs.app/Themes.c:82 msgid "Set" msgstr "Aseta" #: ../../WPrefs.app/Themes.c:132 msgid "Stop" msgstr "Pysäytä" #: ../../WPrefs.app/Themes.c:143 ../../WPrefs.app/Themes.c:203 #: ../../WPrefs.app/Themes.c:223 msgid "Download" msgstr "Imuroi" #: ../../WPrefs.app/Themes.c:171 msgid "Save Current Theme" msgstr "Tallenna nykyinen teema" #: ../../WPrefs.app/Themes.c:180 msgid "Load" msgstr "Lataa" #: ../../WPrefs.app/Themes.c:185 msgid "Install" msgstr "Asenna" #: ../../WPrefs.app/Themes.c:193 msgid "Tile of The Day" msgstr "Päivän tiili" #: ../../WPrefs.app/Themes.c:213 msgid "Bar of The Day" msgstr "Päivän palkki" #: ../../WPrefs.app/WindowHandling.c:141 #, c-format msgid "bad option value %s in WindowPlacement. Using default value" msgstr "" "tiedolla WindowPlacement on virheellinen arvo %s. Käytetään oletusarvoa" #: ../../WPrefs.app/WindowHandling.c:163 msgid "invalid data in option WindowPlaceOrigin. Using default (0,0)" msgstr "" "asetuksessa WindowPlaceOrigin on virheellistä tietoa. Käytetään oletusta " "(0,0)" #: ../../WPrefs.app/WindowHandling.c:243 msgid "Window Placement" msgstr "Ikkunan sijoitus" #: ../../WPrefs.app/WindowHandling.c:244 msgid "" "How to place windows when they are first put\n" "on screen." msgstr "" "Miten ikkunat sijoitetaan, kun ne tulevat\n" "ruudulle ensimmäisen kerran." #: ../../WPrefs.app/WindowHandling.c:250 msgid "Automatic" msgstr "Automaattinen" #: ../../WPrefs.app/WindowHandling.c:251 msgid "Random" msgstr "Satunnainen" #: ../../WPrefs.app/WindowHandling.c:252 msgid "Manual" msgstr "Käsin" #: ../../WPrefs.app/WindowHandling.c:253 msgid "Cascade" msgstr "Limittäin" #: ../../WPrefs.app/WindowHandling.c:254 msgid "Smart" msgstr "Älykäs" #: ../../WPrefs.app/WindowHandling.c:260 msgid "Placement Origin" msgstr "Sijoituksen origo" #: ../../WPrefs.app/WindowHandling.c:321 msgid "Opaque Move" msgstr "Näytä sisältö siirr." #: ../../WPrefs.app/WindowHandling.c:322 msgid "" "Whether the window contents should be moved\n" "when dragging windows aroung or if only a\n" "frame should be displayed.\n" msgstr "" "Pitääkö ikkunan sisällön liikkua ikkunoita\n" "siirreltäessä, vai pitääkö näyttää\n" "vain kehys.\n" #: ../../WPrefs.app/WindowHandling.c:361 msgid "When maximizing..." msgstr "Suurennettaessa..." #: ../../WPrefs.app/WindowHandling.c:366 msgid "...do not cover icons" msgstr "...älä peitä kuvakkeita" #: ../../WPrefs.app/WindowHandling.c:372 msgid "...do not cover dock" msgstr "...älä peitä sovellustelakkaa" #: ../../WPrefs.app/WindowHandling.c:381 msgid "Edge Resistance" msgstr "Reunavastus" #: ../../WPrefs.app/WindowHandling.c:383 msgid "" "Edge resistance will make windows `resist'\n" "being moved further for the defined threshold\n" "when moved against other windows or the edges\n" "of the screen." msgstr "" "Reunavastus saa ikkunat `vastustamaan'\n" "siirtämistä reunavastuksen määrällä, kun\n" "niitä siirretään toisten ikkunoiden tai\n" "ruudun reunojen yli." #: ../../WPrefs.app/WindowHandling.c:402 msgid "Resist" msgstr "Vastus" #: ../../WPrefs.app/WindowHandling.c:407 msgid "Attract" msgstr "Veto" #: ../../WPrefs.app/WindowHandling.c:423 msgid "Open dialogs in same workspace as their owners" msgstr "Avaa valintaikkunat omistajansa työtilassa" #: ../../WPrefs.app/WindowHandling.c:450 msgid "Window Handling Preferences" msgstr "Ikkunoidenkäsittelyn asetukset" #: ../../WPrefs.app/WindowHandling.c:452 msgid "" "Window handling options. Initial placement style\n" "edge resistance, opaque move etc." msgstr "" "Ikkunoidenkäsittelyn valinnat. Ensisijoituspaikka,\n" "reunavastus, näytä sisältö siirrettäessä jne." #: ../../WPrefs.app/Workspace.c:176 msgid "Workspace Navigation" msgstr "Työtilanavigointi" #: ../../WPrefs.app/Workspace.c:183 msgid "Wrap to the first workspace from the last workspace" msgstr "Siirry ensimmäiseen työtilaan siirryttäessä viimeisen yli" #: ../../WPrefs.app/Workspace.c:205 msgid "Switch workspaces while dragging windows" msgstr "Vaihda työtiloja ikkunoita vedettäessä" #: ../../WPrefs.app/Workspace.c:227 msgid "Automatically create new workspaces" msgstr "Luo uusia työtiloja automaattisesti" #: ../../WPrefs.app/Workspace.c:250 msgid "Position of workspace name display" msgstr "Työtilan nimi-näytön paikka" #: ../../WPrefs.app/Workspace.c:269 msgid "Disable" msgstr "Ei käytössä" #: ../../WPrefs.app/Workspace.c:271 msgid "Top" msgstr "Ylhäällä" #: ../../WPrefs.app/Workspace.c:272 msgid "Bottom" msgstr "Alhaalla" #: ../../WPrefs.app/Workspace.c:273 msgid "Top/Left" msgstr "Ylävasemmalla" #: ../../WPrefs.app/Workspace.c:274 msgid "Top/Right" msgstr "Yläoikealla" #: ../../WPrefs.app/Workspace.c:275 msgid "Bottom/Left" msgstr "Alavasemmalla" #: ../../WPrefs.app/Workspace.c:276 msgid "Bottom/Right" msgstr "Alaoikealla" #: ../../WPrefs.app/Workspace.c:284 msgid "Dock/Clip" msgstr "Telakka/Liitin" #: ../../WPrefs.app/Workspace.c:303 msgid "" "Disable/enable the application Dock (the\n" "vertical icon bar in the side of the screen)." msgstr "" "Sovellustelakka (pystysuuntainen kuvake-\n" "palkki ruudun reunassa) päälle/pois." #: ../../WPrefs.app/Workspace.c:324 msgid "" "Disable/enable the Clip (that thing with\n" "a paper clip icon)." msgstr "" "Liitin (se laite, jossa on paperiliittimen\n" "kuva) päälle/pois." #: ../../WPrefs.app/Workspace.c:364 msgid "Workspace Preferences" msgstr "Työtila-asetukset" #: ../../WPrefs.app/Workspace.c:366 msgid "" "Workspace navigation features.\n" "You can also enable/disable the Dock and Clip here." msgstr "" "Työtilanavigoinnin ominaisuudet.\n" "Tästä voi myös laittaa Telakan ja Liittimen päälle/pois." #~ msgid "Disable cycling color highlighting of icons" #~ msgstr "Ei kuvakkeiden korostusta värikierrolla." #~ msgid "Click window to focus" #~ msgstr "Napauta ikkunaa kohdistaaksesi" #~ msgid "Focus follows mouse" #~ msgstr "Kohdistus seuraa hiirtä" #~ msgid "\"Sloppy\" focus" #~ msgstr "\"Huolimaton\" kohdistus" #~ msgid "Btn1 (left)" #~ msgstr "Painike 1 (vasen)" #~ msgid "Btn2 (middle)" #~ msgstr "Painike 2 (keski)" #~ msgid "Btn3 (right)" #~ msgstr "Painike 3 (oikea)" #~ msgid "Btn4" #~ msgstr "Painike 4" #~ msgid "Btn5" #~ msgstr "Painike 5" #~ msgid "Command to Execute" #~ msgstr "Suoritettava komento" #~ msgid "New Command %i" #~ msgstr "Uusi komento %i" #~ msgid "Workspaces" #~ msgstr "Työtilat" #~ msgid "Add Command" #~ msgstr "Lisää komento" #~ msgid "Add External Menu" #~ msgstr "Lisää ulkopuolinen valikko" #~ msgid "Remove Item" #~ msgstr "Poista alkio" #~ msgid "Cut Item" #~ msgstr "Leikkaa alkio" #~ msgid "Copy Item" #~ msgstr "Kopioi alkio" #~ msgid "Paste Item" #~ msgstr "Liitä alkio" #~ msgid "Label" #~ msgstr "Nimike" #~ msgid "Execute Shell Command" #~ msgstr "Suorita kuoren komento" #~ msgid "Hide Others" #~ msgstr "Piilota muut" #~ msgid "Legal Panel" #~ msgstr "Oikeudet-paneeli" #~ msgid "Menu Path/Directory List" #~ msgstr "Valikkopolku tai hakemistolistaus" #~ msgid "Ask help to the Guru" #~ msgstr "Pyydä Gurulta apua" #~ msgid "" #~ " 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 keep using the current menu, please read the '%s/%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. Window " #~ "Maker supports both formats." #~ msgstr "" #~ " Käytössä olevaa valikkoa ei voitu avata. Se tarkoittaa, että valikossa " #~ "on syntaksivirhe tai se on sellaisessa muodossa, jota WPrefs ei tue (WPrefs " #~ "tukee vain \"property list\"-valikoita).\n" #~ " Jos haluat käyttää edelleen nykyistä valikkoa, ole hyvä ja lue '%s/%s', " #~ "paina 'Pidä nykyinen valikko'-painiketta ja muokkaa valikkotiedostoa " #~ "tekstieditorilla.\n" #~ " Jos haluat käyttää WPrefsin valikkomuokkainta, paina \"Kopioi " #~ "oletusvalikko\"-painiketta. Se korvaa nykyisen valikon oletusvalikolla, jota " #~ "voi muokata.\n" #~ " Jos haluat enemmän joustavuutta, jatka nykyisen valikon käyttöä, sillä " #~ "se mahdollistaa C-esiprosessorin (cpp) makrojen käytön ja valikon helpon " #~ "käsin muokkauksen. Window Maker tukee molempia valikkomuotoja." #~ msgid "Copy Default Menu" #~ msgstr "Kopioi oletusvalikko" #~ msgid "Menu Guru - Select Type" #~ msgstr "Valikkoguru - Valitse tyyppi" #~ msgid "Next" #~ msgstr "Seuraava" #~ msgid "Menu Guru - Select Menu File" #~ msgstr "Valikkoguru - Valitse valikkotiedosto" #~ msgid "Menu Guru - Select Pipe Command" #~ msgstr "Valikkoguru - Valitse putkikomento" #~ msgid "Menu Guru - Select Directories" #~ msgstr "Valikkoguru - Valitse hakemistot" #~ msgid "Menu Guru - Select Command" #~ msgstr "Valikkoguru - Valitse komento" #~ msgid "Back" #~ msgstr "Taaksepäin" #~ 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 "" #~ "Tämä auttaa sinua luomaan alivalikon, jonka määritelmä sijaitsee muussa " #~ "tiedostossa tai joka luodaan dynaamisesti.\n" #~ "Mitä haluat käyttää alivalikon sisältönä?" #~ msgid "" #~ "A file containing the menu definition in the plain text (non-property list) " #~ "menu format." #~ msgstr "" #~ "Tiedosto, joka sisältää valikkomääritelmän \"pelkkä teksti\" (ei \"property " #~ "list\") -muodossa." #~ msgid "" #~ "The menu definition generated by a script/program read through a pipe." #~ msgstr "" #~ "Valikkomääritelmä, joka luodaan skriptillä tai ohjelmalla ja luetaan " #~ "putkituksen läpi." #~ msgid "The files in one or more directories." #~ msgstr "Tiedostot yhdessä tai useammassa hakemistossa." #~ msgid "Type the path for the menu file:" #~ msgstr "Kirjoita valikkotiedoston polku:" #~ 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 "" #~ "Valikkotiedoston pitää sisältää valikko pelkkä teksti -muodossa. Tämä muoto " #~ "kuvaillaan Window Makerin sisältämissä valikkotiedostoissa, luultavasti " #~ "paikassa ~/GNUstep/Library/WindowMaker/menu" #~ msgid "Type the command that will generate the menu definition:" #~ msgstr "Kirjoita komento, joka luo valikkomääritelmän:" #~ 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 "" #~ "Tämän komennon pitää muodostaa valikkomääritelmä ja tulostaa se " #~ "vakiotulostusvirtaan. Valikon pitää olla \"pelkkä teksti\" -tiedostomuodossa " #~ "(kuvailtu Window Makerin mukana tulevissa valikkotiedostoissa, yleensä " #~ "~/GNUstep/Library/WindowMaker/menu)." #~ msgid "" #~ "Type the path for the directory. You can type more than one path by " #~ "separating them with spaces." #~ msgstr "" #~ "Kirjoita hakemiston polku. Voit kirjoittaa useamman kuin yhden polun " #~ "erottamalla ne välilyönneillä." #~ 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 "" #~ "Luotu valikko sisältää yhden alkion jokaista hakemistossa olevaa tiedostoa " #~ "kohti. Hakemistot voivat sisältää suoritettavia ohjelmia tai datatiedostoja " #~ "(kuten jpeg-kuvia)." #~ msgid "" #~ "If the directory contain data files, type the command used to open these " #~ "files. Otherwise, leave it in blank." #~ msgstr "" #~ "Jos hakemisto sisältää datatiedostoja, kirjoita näiden tiedostojen " #~ "avaamiseen tarvittava komento. Muulloin jätä tyhjäksi." #~ 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 "" #~ "Jokainen hakemiston tiedosto näkyy yhtenä kohtana, ja ne avataan annetulla " #~ "komennolla. Esimerkiksi jos hakemisto sisältää kuvatiedostoja ja komento on " #~ "\"xv -root\", jokaisella hakemiston tiedostolla on valikkokohta kuten \"xv " #~ "-root kuvatiedosto\"." ����������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/po/fr.po��������������������������������������������������������������0000644�0001750�0001750�00000167620�13431646201�014354� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# French Message file for WPrefs.app # # Update History: # Antoine Hulin <antoine.hulin@origan.fdn.org> # Christoph Thompson <obituary@freshmeat.net> # Bastien Nocera <hadess@writeme.com> # msgid "" msgstr "" "Project-Id-Version: WPrefs 0.40\n" "POT-Creation-Date: 2003-05-02 15:39+0200\n" "PO-Revision-Date: 1999-07-28 16:31-0100\n" "Last-Translator: Antoine Hulin <antoine.hulin@origan.fdn.org>\n" "Language-Team: French <fr@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" #: ../../WPrefs.app/Appearance.c:1154 msgid "Select File" msgstr "Sélectionnez un fichier" #: ../../WPrefs.app/Appearance.c:1555 msgid "Focused Window" msgstr "Fenêtre active" #: ../../WPrefs.app/Appearance.c:1560 msgid "Unfocused Window" msgstr "Fenêtres inactives" #: ../../WPrefs.app/Appearance.c:1565 msgid "Owner of Focused Window" msgstr "Parente de la fenêtre active" #: ../../WPrefs.app/Appearance.c:1570 ../../WPrefs.app/Appearance.c:1893 #: ../../WPrefs.app/Font.c:408 msgid "Menu Title" msgstr "Titre du menu" #: ../../WPrefs.app/Appearance.c:1575 ../../WPrefs.app/Appearance.c:1578 msgid "Normal Item" msgstr "Normal" #: ../../WPrefs.app/Appearance.c:1583 msgid "Disabled Item" msgstr "Inactivé" #: ../../WPrefs.app/Appearance.c:1595 msgid "Highlighted" msgstr "Sélectionné" #: ../../WPrefs.app/Appearance.c:1786 msgid "Texture" msgstr "Texture" #: ../../WPrefs.app/Appearance.c:1794 msgid "Titlebar of Focused Window" msgstr "Barre de titre de la fenêtre active" #: ../../WPrefs.app/Appearance.c:1795 msgid "Titlebar of Unfocused Windows" msgstr "Barre de titre d'une fenêtre inactive" #: ../../WPrefs.app/Appearance.c:1796 msgid "Titlebar of Focused Window's Owner" msgstr "Barre de titre de la fenêtre parente" #: ../../WPrefs.app/Appearance.c:1797 msgid "Window Resizebar" msgstr "Barre de redimensionnement" #: ../../WPrefs.app/Appearance.c:1798 msgid "Titlebar of Menus" msgstr "Barre de titre des menus" #: ../../WPrefs.app/Appearance.c:1799 msgid "Menu Items" msgstr "Éléments du menu" #: ../../WPrefs.app/Appearance.c:1800 msgid "Icon Background" msgstr "Fond d'icône" #: ../../WPrefs.app/Appearance.c:1815 msgid "" "Double click in the texture you want to use\n" "for the selected item." msgstr "" "Double-cliquez sur la texture que vous voulez\n" "utiliser pour l'élément sélectionné." #: ../../WPrefs.app/Appearance.c:1829 msgid "New" msgstr "Nouveau" #: ../../WPrefs.app/Appearance.c:1833 msgid "Create a new texture." msgstr "Créer une nouvelle texture." #: ../../WPrefs.app/Appearance.c:1841 msgid "Extract..." msgstr "Extraire..." #: ../../WPrefs.app/Appearance.c:1845 msgid "Extract texture(s) from a theme or a style file." msgstr "Extraire les textures d'un thème ou d'un fichier de style." #: ../../WPrefs.app/Appearance.c:1855 msgid "Edit" msgstr "Éditer" #: ../../WPrefs.app/Appearance.c:1858 msgid "Edit the highlighted texture." msgstr "Éditer la texture sélectionnée." #: ../../WPrefs.app/Appearance.c:1866 ../../WPrefs.app/TexturePanel.c:1318 msgid "Delete" msgstr "Supprimer" #: ../../WPrefs.app/Appearance.c:1870 msgid "Delete the highlighted texture." msgstr "Effacer la texture sélectionnée." #: ../../WPrefs.app/Appearance.c:1883 msgid "Color" msgstr "Couleur" #: ../../WPrefs.app/Appearance.c:1890 msgid "Focused Window Title" msgstr "Titre de la fenêtre active" #: ../../WPrefs.app/Appearance.c:1891 msgid "Unfocused Window Title" msgstr "Titre d'une fenêtre inactive" #: ../../WPrefs.app/Appearance.c:1892 msgid "Owner of Focused Window Title" msgstr "Titre du parent de la fenêtre active" #: ../../WPrefs.app/Appearance.c:1894 msgid "Menu Item Text" msgstr "Entrée de menu normale" #: ../../WPrefs.app/Appearance.c:1895 msgid "Disabled Menu Item Text" msgstr "Entrée de menu inactive" #: ../../WPrefs.app/Appearance.c:1896 msgid "Menu Highlight Color" msgstr "Entrée de menu sélectionnée" #: ../../WPrefs.app/Appearance.c:1897 msgid "Highlighted Menu Text Color" msgstr "Texte de l'entrée sélectionnée" #: ../../WPrefs.app/Appearance.c:1936 msgid "Background" msgstr "Fond d'écran" #: ../../WPrefs.app/Appearance.c:1948 ../../WPrefs.app/TexturePanel.c:1504 msgid "Browse..." msgstr "Parcourir..." #: ../../WPrefs.app/Appearance.c:1961 msgid "Options" msgstr "Options" #: ../../WPrefs.app/Appearance.c:1968 msgid "Menu Style" msgstr "Apparence du menu" #: ../../WPrefs.app/Appearance.c:1996 ../../WPrefs.app/Configurations.c:242 #: ../../WPrefs.app/Configurations.c:254 ../../WPrefs.app/Focus.c:288 #: ../../WPrefs.app/Focus.c:299 ../../WPrefs.app/MenuPreferences.c:134 #: ../../WPrefs.app/MenuPreferences.c:145 #: ../../WPrefs.app/MenuPreferences.c:173 #: ../../WPrefs.app/MenuPreferences.c:188 ../../WPrefs.app/MouseSettings.c:560 #: ../../WPrefs.app/MouseSettings.c:571 ../../WPrefs.app/WPrefs.c:558 #: ../../WPrefs.app/WPrefs.c:583 #, c-format msgid "could not load icon file %s" msgstr "Le chargement de l'icône %s a échoué." #: ../../WPrefs.app/Appearance.c:2010 msgid "Title Alignment" msgstr "Position du titre" #: ../../WPrefs.app/Appearance.c:2017 msgid "Left" msgstr "Gauche" #: ../../WPrefs.app/Appearance.c:2020 ../../WPrefs.app/TexturePanel.c:1518 #: ../../WPrefs.app/Workspace.c:270 msgid "Center" msgstr "Centré" #: ../../WPrefs.app/Appearance.c:2023 msgid "Right" msgstr "Droite" #: ../../WPrefs.app/Appearance.c:2247 msgid "Appearance Preferences" msgstr "Préférences d'apparence" #: ../../WPrefs.app/Appearance.c:2249 msgid "" "Background texture configuration for windows,\n" "menus and icons." msgstr "" "Configuration des textures de fond des fenêtres,\n" "menus et icônes." #: ../../WPrefs.app/Appearance.c:2294 msgid "Extract Texture" msgstr "Extraire une texture" #: ../../WPrefs.app/Appearance.c:2314 msgid "Textures" msgstr "Textures" #: ../../WPrefs.app/Appearance.c:2325 ../../WPrefs.app/WPrefs.c:302 msgid "Close" msgstr "Fermer" #: ../../WPrefs.app/Appearance.c:2330 msgid "Extract" msgstr "Extraire" #: ../../WPrefs.app/Configurations.c:150 ../../WPrefs.app/Configurations.c:156 #: ../../WPrefs.app/MouseSettings.c:490 ../../WPrefs.app/WindowHandling.c:339 #: ../../WPrefs.app/WindowHandling.c:351 ../../WPrefs.app/Workspace.c:90 #: ../../WPrefs.app/Workspace.c:101 #, c-format msgid "could not load icon %s" msgstr "Le chargement de l'icône %s a échoué." #: ../../WPrefs.app/Configurations.c:164 ../../WPrefs.app/Workspace.c:109 #, c-format msgid "could not process icon %s: %s" msgstr "Le traitement de l'icône %s a échoué : %s" #: ../../WPrefs.app/Configurations.c:189 ../../WPrefs.app/Workspace.c:164 #, c-format msgid "could not load image file %s" msgstr "Le chargement de l'image %s a échoué." #: ../../WPrefs.app/Configurations.c:203 msgid "Icon Slide Speed" msgstr "Vitesse du glissement des icônes" #: ../../WPrefs.app/Configurations.c:209 msgid "Shade Animation Speed" msgstr "Vitesse de l'enroulement" #: ../../WPrefs.app/Configurations.c:271 msgid "Smooth Scaling" msgstr "Lissage" #: ../../WPrefs.app/Configurations.c:272 msgid "" "Smooth scaled background images, neutralizing\n" "the `pixelization' effect. This will slow\n" "down loading of background images considerably." msgstr "" "Lissage des images de fond d'écran pour neutraliser\n" "l'effet crénelé. Ceci ralentira considérablement le\n" "chargement des images de fond d'écran." #: ../../WPrefs.app/Configurations.c:313 msgid "Titlebar Style" msgstr "Barre de titre" #: ../../WPrefs.app/Configurations.c:351 msgid "Animations and Sound" msgstr "Animations et sons" #: ../../WPrefs.app/Configurations.c:357 msgid "Animations" msgstr "Animations" #: ../../WPrefs.app/Configurations.c:368 msgid "" "Disable/enable animations such as those shown\n" "for window miniaturization, shading etc." msgstr "" "Activation des animations telles que la miniaturisation\n" "des fenêtres, l'enroulement, etc." #: ../../WPrefs.app/Configurations.c:376 msgid "Superfluous" msgstr "Superflu" #: ../../WPrefs.app/Configurations.c:387 msgid "" "Disable/enable `superfluous' features and\n" "animations. These include the `ghosting' of the\n" "dock when it's being moved to another side and\n" "the explosion animation when undocking icons." msgstr "" "Activation des options « superflues » et des animations.\n" "Celles-ci incluent la matérialisation « spectrale » du Dock\n" "quand il est déplacé et l'animation d'explosion pour les\n" "icônes retirées du Dock." #: ../../WPrefs.app/Configurations.c:397 msgid "Sounds" msgstr "Sons" #: ../../WPrefs.app/Configurations.c:408 msgid "" "Disable/enable support for sound effects played\n" "for actions like shading and closing a window.\n" "You will need a module distributed separately\n" "for this. You can get it at:\n" "http://shadowmere.student.utwente.nl/" msgstr "" "Activation des effets sonores lors d'actions comme\n" "l'enroulement et la fermeture d'une fenêtre. Pour cela,\n" "vous aurez besoin d'un module distribué séparément.\n" "Vous pouvez l'obtenir à l'adresse :\n" "http://shadowmere.student.utwente.nl/" #: ../../WPrefs.app/Configurations.c:419 msgid "" "Note: sound requires a module distributed\n" "separately" msgstr "" "Note : le son nécessite un module\n" "distribué séparément." #: ../../WPrefs.app/Configurations.c:429 msgid "Dithering colormap for 8bpp" msgstr "Tramage en 256 couleurs" #: ../../WPrefs.app/Configurations.c:431 msgid "" "Number of colors to reserve for Window Maker\n" "on displays that support only 8bpp (PseudoColor)." msgstr "" "Nombre de couleurs à réserver pour Window Maker\n" "sur les affichages qui ne supportent que 256\n" "couleurs (PseudoColor)." #: ../../WPrefs.app/Configurations.c:438 msgid "Disable dithering in any visual/depth" msgstr "Désactiver le tramage dans tous les modes graphiques" #: ../../WPrefs.app/Configurations.c:459 msgid "" "More colors for\n" "applications" msgstr "" "Plus pour les\n" "applications" #: ../../WPrefs.app/Configurations.c:466 msgid "" "More colors for\n" "Window Maker" msgstr "" "Plus pour\n" "Window Maker" #: ../../WPrefs.app/Configurations.c:521 msgid "Other Configurations" msgstr "Autres configurations" #: ../../WPrefs.app/Configurations.c:523 msgid "" "Animation speeds, titlebar styles, various option\n" "toggling and number of colors to reserve for\n" "Window Maker on 8bit displays." msgstr "" "Vitesse des animations, style des barres de titre,\n" "options diverses et nombre de couleurs à réserver\n" "pour Window Maker avec un affichage en 256 couleurs." #: ../../WPrefs.app/Expert.c:77 msgid "" "Disable miniwindows (icons for miniaturized windows). For use with KDE/GNOME." msgstr "" "Pas de mini-fenêtres (icônes des fenêtres miniaturisées). Pour KDE/GNOME." #: ../../WPrefs.app/Expert.c:78 msgid "Do not set non-WindowMaker specific parameters (do not use xset)." msgstr "" "Ne modifier que les options spécifiques à Window Maker (ne pas utiliser " "xset)." #: ../../WPrefs.app/Expert.c:79 msgid "Automatically save session when exiting Window Maker." msgstr "Toujours sauver la session lors de la fermeture de Window Maker." #: ../../WPrefs.app/Expert.c:80 msgid "Use SaveUnder in window frames, icons, menus and other objects." msgstr "Utiliser « enregister sous » pour les icônes, menus et autres objets." #: ../../WPrefs.app/Expert.c:81 msgid "Use Windoze style cycling." msgstr "Changer de fenêtre active façon Windows" #: ../../WPrefs.app/Expert.c:82 msgid "Disable confirmation panel for the Kill command." msgstr "Désactiver la confirmation pour la commande Terminer." #: ../../WPrefs.app/Expert.c:83 msgid "Disable selection animation for selected icons." msgstr "Désactiver l'animation pour les icônes sélectionnées." #: ../../WPrefs.app/Expert.c:84 msgid "Smooth font edges (needs restart)." msgstr "Lissage des polices (après redémarrage)" #: ../../WPrefs.app/Expert.c:123 msgid "Expert User Preferences" msgstr "Préférences pour utilisateur averti" #: ../../WPrefs.app/Expert.c:125 msgid "" "Options for people who know what they're doing...\n" "Also have some other misc. options." msgstr "" "Options diverses et options pour les utilisateurs\n" "qui savent où ils mettent les pieds." #: ../../WPrefs.app/Focus.c:80 #, c-format msgid "bad option value %s for option FocusMode. Using default Manual" msgstr "" "Mauvaise valeur pour l'option FocusMode : %s. Utilisation de la valeur par " "défaut : Manuel." #: ../../WPrefs.app/Focus.c:94 #, c-format msgid "bad option value %s for option ColormapMode. Using default Auto" msgstr "" "Mauvaise valeur pour l'option ColormapMode : %s. Utilisation de la valeur " "par défaut : Auto" #: ../../WPrefs.app/Focus.c:214 msgid "Input Focus Mode" msgstr "Mode d'activation des fenêtres" #: ../../WPrefs.app/Focus.c:222 msgid "Manual: Click on the window to set keyboard input focus" msgstr "Manuel : Cliquer sur une fenêtre pour l'activer" #: ../../WPrefs.app/Focus.c:229 msgid "Auto: Set keyboard input focus to the window under the mouse pointer" msgstr "Automatique : Activer la fenêtre pointée par la souris" # "Utiliser la palette de couleurs de la fenêtre..." prends trop de place #: ../../WPrefs.app/Focus.c:243 msgid "Install colormap from the window..." msgstr "Palette de couleurs utilisée" #: ../../WPrefs.app/Focus.c:248 msgid "...that has the input focus" msgstr "fenêtre active" #: ../../WPrefs.app/Focus.c:253 msgid "...that's under the mouse pointer" msgstr "fenêtre pointée par la souris" #: ../../WPrefs.app/Focus.c:262 msgid "Automatic Window Raise Delay" msgstr "Délai d'auto-activation des fenêtres" #: ../../WPrefs.app/Focus.c:319 ../../WPrefs.app/MouseSettings.c:601 msgid "ms" msgstr "ms" #: ../../WPrefs.app/Focus.c:336 msgid "Do not let applications receive the click used to focus windows" msgstr "L'application ne reçoit pas le clic utilisé pour activer la fenêtre" #: ../../WPrefs.app/Focus.c:342 msgid "Automatically focus new windows" msgstr "Activer automatiquement les nouvelles fenêtres" #: ../../WPrefs.app/Focus.c:363 msgid "Window Focus Preferences" msgstr "Préférences d'activation des fenêtres" #: ../../WPrefs.app/Focus.c:365 msgid "" "Keyboard focus switching policy, colormap switching\n" "policy for 8bpp displays and other related options." msgstr "" "Règles d'activation des fenêtres, règles de commutation des\n" "couleurs en mode 256 couleurs et options proches." #: ../../WPrefs.app/Font.c:400 ../../WPrefs.app/Font.c:1872 msgid "Window Title Font" msgstr "Titre de fenêtre" #: ../../WPrefs.app/Font.c:404 msgid "Display" msgstr "Affichage" #: ../../WPrefs.app/Font.c:412 msgid "Menu Item" msgstr "Item du menu" #: ../../WPrefs.app/Font.c:418 msgid "Clip title" msgstr "Titre du Trombone" #: ../../WPrefs.app/Font.c:422 msgid "Icon Title" msgstr "Titre d'icônes" #: ../../WPrefs.app/Font.c:726 msgid "error capturing \"original\" tile image" msgstr "Erreur à la capture du fond d'icône." #: ../../WPrefs.app/Font.c:1130 msgid "Could not locate font information file WPrefs.app/font.data" msgstr "" "Impossible de trouver le fichier de déclaration des polices WPrefs.app/font." "data" #: ../../WPrefs.app/Font.c:1136 msgid "Could not read font information file WPrefs.app/font.data" msgstr "" "Impossible de lire le fichier de déclaration des polices WPrefs.app/font.data" #: ../../WPrefs.app/Font.c:1147 msgid "" "Invalid data in font information file WPrefs.app/font.data.\n" "Encodings data not found." msgstr "" "Informations invalides dans le fichier de déclaration des polices\n" "WPrefs.app/font.data. Encodage absent." #: ../../WPrefs.app/Font.c:1152 msgid "Current" msgstr "Actuel" #: ../../WPrefs.app/Font.c:1197 ../../WPrefs.app/Menu.c:1594 #: ../../WPrefs.app/MouseSettings.c:140 ../../WPrefs.app/MouseSettings.c:160 #: ../../WPrefs.app/TexturePanel.c:615 ../../WPrefs.app/TexturePanel.c:695 #: ../../WPrefs.app/Themes.c:96 ../../WPrefs.app/WPrefs.c:759 #: ../../WPrefs.app/WPrefs.c:764 ../../WPrefs.app/WPrefs.c:781 #: ../../WPrefs.app/WPrefs.c:791 ../../WPrefs.app/WPrefs.c:801 #: ../../WPrefs.app/WPrefs.c:839 ../../WPrefs.app/WPrefs.c:844 msgid "Error" msgstr "Erreur" #: ../../WPrefs.app/Font.c:1197 ../../WPrefs.app/Font.c:1307 #: ../../WPrefs.app/Menu.c:1594 ../../WPrefs.app/MouseSettings.c:142 #: ../../WPrefs.app/MouseSettings.c:162 ../../WPrefs.app/TexturePanel.c:616 #: ../../WPrefs.app/TexturePanel.c:697 ../../WPrefs.app/TexturePanel.c:1529 #: ../../WPrefs.app/Themes.c:98 ../../WPrefs.app/WPrefs.c:759 #: ../../WPrefs.app/WPrefs.c:764 ../../WPrefs.app/WPrefs.c:783 #: ../../WPrefs.app/WPrefs.c:795 ../../WPrefs.app/WPrefs.c:801 #: ../../WPrefs.app/WPrefs.c:808 ../../WPrefs.app/WPrefs.c:839 #: ../../WPrefs.app/WPrefs.c:844 ../../WPrefs.app/imagebrowser.c:105 msgid "OK" msgstr "Accepter" #: ../../WPrefs.app/Font.c:1307 ../../WPrefs.app/Menu.c:1629 #: ../../WPrefs.app/WPrefs.c:808 msgid "Warning" msgstr "Avertissement" #: ../../WPrefs.app/Font.c:1503 ../../WPrefs.app/Menu.c:1406 msgid "Yes" msgstr "Oui" #: ../../WPrefs.app/Font.c:1507 msgid "Auto" msgstr "Auto" #: ../../WPrefs.app/Font.c:1873 msgid "Large Display Font" msgstr "Grande police" #: ../../WPrefs.app/Font.c:1874 msgid "Menu Title Font" msgstr "Titre de menu" #: ../../WPrefs.app/Font.c:1875 msgid "Menu Item Font" msgstr "Item du menu" #: ../../WPrefs.app/Font.c:1876 msgid "Clip Title Font" msgstr "Titre du Trombone" #: ../../WPrefs.app/Font.c:1877 msgid "Icon Title Font" msgstr "Titre d'icône" #: ../../WPrefs.app/Font.c:1887 msgid "MultiByte" msgstr "Multi-octets" #: ../../WPrefs.app/Font.c:1901 msgid "Default Font Encodings" msgstr "Encodage par défaut" #: ../../WPrefs.app/Font.c:1917 msgid "Smooth Fonts" msgstr "Polices lissées" #: ../../WPrefs.app/Font.c:1918 msgid "" "Smooth Font edges for the eye candy\n" "requires a restart after saving" msgstr "" "Bordure de caractères adoucies, pour le plaisir des yeux.\n" "Nécessite un redémarrage après sauvegarde." #: ../../WPrefs.app/Font.c:1927 msgid "Font Set" msgstr "Famille de polices" #: ../../WPrefs.app/Font.c:1957 msgid "Add..." msgstr "Ajouter..." #: ../../WPrefs.app/Font.c:1963 ../../WPrefs.app/Font.c:1999 msgid "Change..." msgstr "Modifier..." #: ../../WPrefs.app/Font.c:1969 ../../WPrefs.app/Paths.c:289 #: ../../WPrefs.app/Paths.c:320 msgid "Remove" msgstr "Supprimer" #: ../../WPrefs.app/Font.c:2095 msgid "Font Preferences" msgstr "Préférences des polices" #: ../../WPrefs.app/Font.c:2096 msgid "Font Configurations for Windows, Menus etc" msgstr "Configuration des polices pour les fenêtres, menus, etc." #: ../../WPrefs.app/Icons.c:180 msgid "Icon Positioning" msgstr "Positionnement des icônes" #: ../../WPrefs.app/Icons.c:227 msgid "Iconification Animation" msgstr "Iconification animée" #: ../../WPrefs.app/Icons.c:238 msgid "Shrinking/Zooming" msgstr "Zoom" #: ../../WPrefs.app/Icons.c:239 msgid "Spinning/Twisting" msgstr "Tournoiement" #: ../../WPrefs.app/Icons.c:240 msgid "3D-flipping" msgstr "Rotation 3D" #: ../../WPrefs.app/Icons.c:241 ../../WPrefs.app/MouseSettings.c:838 #: ../../WPrefs.app/MouseSettings.c:843 msgid "None" msgstr "Aucune" #: ../../WPrefs.app/Icons.c:254 msgid "Auto-arrange icons" msgstr "Rangement automatique des icônes" #: ../../WPrefs.app/Icons.c:256 msgid "Keep icons and miniwindows arranged all the time." msgstr "Toujours ranger les icônes et les mini-fenêtres." #: ../../WPrefs.app/Icons.c:262 msgid "Omnipresent miniwindows" msgstr "Mini-fenêtres omniprésentes" #: ../../WPrefs.app/Icons.c:264 msgid "Make miniwindows be present in all workspaces." msgstr "Les mini-fenêtres apparaissent sur tous les bureaux." #: ../../WPrefs.app/Icons.c:273 msgid "Icon Size" msgstr "Taille des icônes" #: ../../WPrefs.app/Icons.c:275 msgid "The size of the dock/application icon and miniwindows" msgstr "" "La taille des icônes du Dock, des applications\n" "et des mini-fenêtres." #: ../../WPrefs.app/Icons.c:345 msgid "Icon Preferences" msgstr "Préférences des icônes" #: ../../WPrefs.app/Icons.c:347 msgid "" "Icon/Miniwindow handling options. Icon positioning\n" "area, sizes of icons, miniaturization animation style." msgstr "" "Options de manipulation des icônes et mini-fenêtres :\n" "positionnement et taille des icônes, type d'animation\n" "pour la miniaturisation." #: ../../WPrefs.app/KeyboardSettings.c:73 msgid "Initial Key Repeat" msgstr "Première répétition" #: ../../WPrefs.app/KeyboardSettings.c:114 msgid "Key Repeat Rate" msgstr "Taux de répétition" #: ../../WPrefs.app/KeyboardSettings.c:154 msgid "Type here to test" msgstr "Écrivez ici pour tester" #: ../../WPrefs.app/KeyboardSettings.c:173 msgid "Keyboard Preferences" msgstr "Préférences clavier" #: ../../WPrefs.app/KeyboardSettings.c:175 msgid "Not done" msgstr "Pas fait" #: ../../WPrefs.app/KeyboardShortcuts.c:308 ../../WPrefs.app/Menu.c:360 #: ../../WPrefs.app/TexturePanel.c:1535 ../../WPrefs.app/imagebrowser.c:100 msgid "Cancel" msgstr "Annuler" #: ../../WPrefs.app/KeyboardShortcuts.c:309 msgid "Press the desired shortcut key(s) or click Cancel to stop capturing." msgstr "" "Tapez le raccourci souhaité ou cliquez sur Annuler pour arrêter la capture." #: ../../WPrefs.app/KeyboardShortcuts.c:329 #: ../../WPrefs.app/KeyboardShortcuts.c:577 ../../WPrefs.app/Menu.c:371 #: ../../WPrefs.app/Menu.c:830 msgid "Capture" msgstr "Capturer" #: ../../WPrefs.app/KeyboardShortcuts.c:330 #: ../../WPrefs.app/KeyboardShortcuts.c:585 msgid "Click Capture to interactively define the shortcut key." msgstr "Cliquez sur Capturer pour définir interactivement le raccourci." #: ../../WPrefs.app/KeyboardShortcuts.c:484 msgid "Actions" msgstr "Actions" #: ../../WPrefs.app/KeyboardShortcuts.c:498 msgid "Open applications menu" msgstr "Ouvrir le menu Applications" #: ../../WPrefs.app/KeyboardShortcuts.c:499 msgid "Open window list menu" msgstr "Ouvrir la liste des fenêtres" #: ../../WPrefs.app/KeyboardShortcuts.c:500 msgid "Open window commands menu" msgstr "Ouvrir le menu de la fenêtre" #: ../../WPrefs.app/KeyboardShortcuts.c:501 msgid "Hide active application" msgstr "Masquer l'application active" #: ../../WPrefs.app/KeyboardShortcuts.c:502 msgid "Hide other applications" msgstr "Masquer les autres applications" #: ../../WPrefs.app/KeyboardShortcuts.c:503 msgid "Miniaturize active window" msgstr "Miniaturiser la fenêtre active" #: ../../WPrefs.app/KeyboardShortcuts.c:504 msgid "Close active window" msgstr "Fermer la fenêtre active" #: ../../WPrefs.app/KeyboardShortcuts.c:505 msgid "Maximize active window" msgstr "Maximiser la fenêtre active" #: ../../WPrefs.app/KeyboardShortcuts.c:506 msgid "Maximize active window vertically" msgstr "Maximiser la hauteur de la fenêtre active" #: ../../WPrefs.app/KeyboardShortcuts.c:507 msgid "Maximize active window horizontally" msgstr "Maximiser la largeur de la fenêtre active" #: ../../WPrefs.app/KeyboardShortcuts.c:508 msgid "Raise active window" msgstr "Mettre la fenêtre active devant les autres" #: ../../WPrefs.app/KeyboardShortcuts.c:509 msgid "Lower active window" msgstr "Mettre la fenêtre active derrière les autres" #: ../../WPrefs.app/KeyboardShortcuts.c:510 msgid "Raise/Lower window under mouse pointer" msgstr "Mettre la fenêtre pointée devant/derrière" #: ../../WPrefs.app/KeyboardShortcuts.c:511 msgid "Shade active window" msgstr "Enrouler la fenêtre active" #: ../../WPrefs.app/KeyboardShortcuts.c:512 msgid "Move/Resize active window" msgstr "Déplacer/dimensionner la fenêtre active" #: ../../WPrefs.app/KeyboardShortcuts.c:513 msgid "Select active window" msgstr "Sélectionner la fenêtre active" #: ../../WPrefs.app/KeyboardShortcuts.c:514 msgid "Focus next window" msgstr "Activer la fenêtre suivante" #: ../../WPrefs.app/KeyboardShortcuts.c:515 msgid "Focus previous window" msgstr "Activer la fenêtre précédente" #: ../../WPrefs.app/KeyboardShortcuts.c:516 msgid "Switch to next workspace" msgstr "Aller au bureau suivant" #: ../../WPrefs.app/KeyboardShortcuts.c:517 msgid "Switch to previous workspace" msgstr "Aller au bureau précédent" #: ../../WPrefs.app/KeyboardShortcuts.c:518 msgid "Switch to next ten workspaces" msgstr "Avancer de dix bureaux" #: ../../WPrefs.app/KeyboardShortcuts.c:519 msgid "Switch to previous ten workspaces" msgstr "Reculer de dix bureaux" #: ../../WPrefs.app/KeyboardShortcuts.c:520 msgid "Switch to workspace 1" msgstr "Aller au bureau 1" #: ../../WPrefs.app/KeyboardShortcuts.c:521 msgid "Switch to workspace 2" msgstr "Aller au bureau 2" #: ../../WPrefs.app/KeyboardShortcuts.c:522 msgid "Switch to workspace 3" msgstr "Aller au bureau 3" #: ../../WPrefs.app/KeyboardShortcuts.c:523 msgid "Switch to workspace 4" msgstr "Aller au bureau 4" #: ../../WPrefs.app/KeyboardShortcuts.c:524 msgid "Switch to workspace 5" msgstr "Aller au bureau 5" #: ../../WPrefs.app/KeyboardShortcuts.c:525 msgid "Switch to workspace 6" msgstr "Aller au bureau 6" #: ../../WPrefs.app/KeyboardShortcuts.c:526 msgid "Switch to workspace 7" msgstr "Aller au bureau 7" #: ../../WPrefs.app/KeyboardShortcuts.c:527 msgid "Switch to workspace 8" msgstr "Aller au bureau 8" #: ../../WPrefs.app/KeyboardShortcuts.c:528 msgid "Switch to workspace 9" msgstr "Aller au bureau 9" #: ../../WPrefs.app/KeyboardShortcuts.c:529 msgid "Switch to workspace 10" msgstr "Aller au bureau 10" #: ../../WPrefs.app/KeyboardShortcuts.c:530 msgid "Shortcut for window 1" msgstr "Aller à la fenêtre 1" #: ../../WPrefs.app/KeyboardShortcuts.c:531 msgid "Shortcut for window 2" msgstr "Aller à la fenêtre 2" #: ../../WPrefs.app/KeyboardShortcuts.c:532 msgid "Shortcut for window 3" msgstr "Aller à la fenêtre 3" #: ../../WPrefs.app/KeyboardShortcuts.c:533 msgid "Shortcut for window 4" msgstr "Aller à la fenêtre 4" #: ../../WPrefs.app/KeyboardShortcuts.c:534 msgid "Shortcut for window 5" msgstr "Aller à la fenêtre 5" #: ../../WPrefs.app/KeyboardShortcuts.c:535 msgid "Shortcut for window 6" msgstr "Aller à la fenêtre 6" #: ../../WPrefs.app/KeyboardShortcuts.c:536 msgid "Shortcut for window 7" msgstr "Aller à la fenêtre 7" #: ../../WPrefs.app/KeyboardShortcuts.c:537 msgid "Shortcut for window 8" msgstr "Aller à la fenêtre 8" #: ../../WPrefs.app/KeyboardShortcuts.c:538 msgid "Shortcut for window 9" msgstr "Aller à la fenêtre 9" #: ../../WPrefs.app/KeyboardShortcuts.c:539 msgid "Shortcut for window 10" msgstr "Aller à la fenêtre 10" #: ../../WPrefs.app/KeyboardShortcuts.c:540 msgid "Switch to Next Screen/Monitor" msgstr "Aller à l'écran suivant" #: ../../WPrefs.app/KeyboardShortcuts.c:541 msgid "Switch to Previous Screen/Monitor" msgstr "Aller à l'écran précédent" #: ../../WPrefs.app/KeyboardShortcuts.c:542 msgid "Raise Clip" msgstr "Mettre le Trombone devant" #: ../../WPrefs.app/KeyboardShortcuts.c:543 msgid "Lower Clip" msgstr "Mettre le Trombone derrière" #: ../../WPrefs.app/KeyboardShortcuts.c:544 msgid "Raise/Lower Clip" msgstr "Mettre le Trombone devant/derrière" #: ../../WPrefs.app/KeyboardShortcuts.c:546 msgid "Toggle keyboard language" msgstr "Activer/désactiver l'internationalisation du clavier" #: ../../WPrefs.app/KeyboardShortcuts.c:560 msgid "Shortcut" msgstr "Raccourci" #: ../../WPrefs.app/KeyboardShortcuts.c:571 ../../WPrefs.app/Menu.c:836 msgid "Clear" msgstr "Effacer" #: ../../WPrefs.app/KeyboardShortcuts.c:633 msgid "Keyboard Shortcut Preferences" msgstr "Préférences de raccourcis clavier" #: ../../WPrefs.app/KeyboardShortcuts.c:635 msgid "" "Change the keyboard shortcuts for actions such\n" "as changing workspaces and opening menus." msgstr "" "Modification des raccourcis clavier pour les actions\n" "telles que le changemement de bureau et l'ouverture\n" "de menus." #: ../../WPrefs.app/Menu.c:278 msgid "Select Program" msgstr "Selectionner le programme" #: ../../WPrefs.app/Menu.c:510 msgid "New Items" msgstr "Nouveaux éléments" #: ../../WPrefs.app/Menu.c:511 msgid "Sample Commands" msgstr "Exemples de commande" #: ../../WPrefs.app/Menu.c:512 msgid "Sample Submenus" msgstr "Exemples de sous-menu" #: ../../WPrefs.app/Menu.c:526 msgid "Run Program" msgstr "Lancer le programme" #: ../../WPrefs.app/Menu.c:527 msgid "Internal Command" msgstr "Commande interne" #: ../../WPrefs.app/Menu.c:528 msgid "Submenu" msgstr "Sous-menu" #: ../../WPrefs.app/Menu.c:529 msgid "External Submenu" msgstr "Menu externe" #: ../../WPrefs.app/Menu.c:530 msgid "Generated Submenu" msgstr "Sous-menu dynamique" #: ../../WPrefs.app/Menu.c:531 msgid "Directory Contents" msgstr "Contenu d'un répertoire" #: ../../WPrefs.app/Menu.c:532 msgid "Workspace Menu" msgstr "Menu des bureaux" #: ../../WPrefs.app/Menu.c:533 ../../WPrefs.app/MouseSettings.c:840 msgid "Window List Menu" msgstr "Liste des fenêtres" #: ../../WPrefs.app/Menu.c:552 msgid "XTerm" msgstr "XTerm" #: ../../WPrefs.app/Menu.c:555 msgid "rxvt" msgstr "rxvt" #: ../../WPrefs.app/Menu.c:558 msgid "ETerm" msgstr "ETerm" #: ../../WPrefs.app/Menu.c:561 msgid "Run..." msgstr "Démarrer..." #: ../../WPrefs.app/Menu.c:562 msgid "%a(Run,Type command to run)" msgstr "%a(Démarrer,Saisir la commande :)" #: ../../WPrefs.app/Menu.c:564 msgid "Netscape" msgstr "Netscape" #: ../../WPrefs.app/Menu.c:567 msgid "gimp" msgstr "Le Gimp" #: ../../WPrefs.app/Menu.c:570 msgid "epic" msgstr "epic" #: ../../WPrefs.app/Menu.c:573 msgid "ee" msgstr "ee" #: ../../WPrefs.app/Menu.c:576 msgid "xv" msgstr "xv" #: ../../WPrefs.app/Menu.c:579 msgid "Acrobat Reader" msgstr "Acrobat Reader" #: ../../WPrefs.app/Menu.c:582 msgid "ghostview" msgstr "ghostview" #: ../../WPrefs.app/Menu.c:585 ../../WPrefs.app/Menu.c:857 msgid "Exit Window Maker" msgstr "Quitter Window Maker" #: ../../WPrefs.app/Menu.c:608 msgid "Debian Menu" msgstr "Menu Debian" #: ../../WPrefs.app/Menu.c:611 msgid "RedHat Menu" msgstr "Menu Red Hat" #: ../../WPrefs.app/Menu.c:614 msgid "Menu Conectiva" msgstr "Menu Conectiva" #: ../../WPrefs.app/Menu.c:617 ../../WPrefs.app/Themes.c:250 msgid "Themes" msgstr "Thèmes" #: ../../WPrefs.app/Menu.c:622 msgid "Bg Images (scale)" msgstr "Fond (à l'échelle)" #: ../../WPrefs.app/Menu.c:627 msgid "Bg Images (tile)" msgstr "Fond (mosaïque)" #: ../../WPrefs.app/Menu.c:632 msgid "Assorted XTerms" msgstr "Choix de XTerm" #: ../../WPrefs.app/Menu.c:634 msgid "XTerm Yellow on Blue" msgstr "XTerm jaune sur bleu" #: ../../WPrefs.app/Menu.c:637 msgid "XTerm White on Black" msgstr "XTerm blanc sur noir" #: ../../WPrefs.app/Menu.c:640 msgid "XTerm Black on White" msgstr "XTerm noir sur blanc" #: ../../WPrefs.app/Menu.c:643 msgid "XTerm Black on Beige" msgstr "XTerm noir sur beige" #: ../../WPrefs.app/Menu.c:646 msgid "XTerm White on Green" msgstr "XTerm blanc sur vert" #: ../../WPrefs.app/Menu.c:649 msgid "XTerm White on Olive" msgstr "XTerm blanc sur olive" #: ../../WPrefs.app/Menu.c:652 msgid "XTerm Blue on Blue" msgstr "XTerm bleu sur bleu" #: ../../WPrefs.app/Menu.c:655 msgid "XTerm BIG FONTS" msgstr "XTerm grandes polices" #: ../../WPrefs.app/Menu.c:677 msgid "Program to Run" msgstr "Programme à lancer" #: ../../WPrefs.app/Menu.c:687 msgid "Browse" msgstr "Parcourir" #: ../../WPrefs.app/Menu.c:698 msgid "Run the program inside a Xterm" msgstr "Lancer le programme dans un terminal (xterm)" #: ../../WPrefs.app/Menu.c:708 msgid "Path for Menu" msgstr "Répertoire du menu" #: ../../WPrefs.app/Menu.c:721 msgid "" "Enter the path for a file containing a menu\n" "or a list of directories with the programs you\n" "want to have listed in the menu. Ex:\n" "~/GNUstep/Library/WindowMaker/menu\n" "or\n" "/usr/bin ~/xbin" msgstr "" "Indiquez l'emplacement d'un fichier décrivant un\n" "menu ou une liste de répertoires contenant les\n" "programmes que vous voulez voir dans le menu.\n" "Exemple : « ~/GNUstep/Library/WindowMaker/menu »\n" "ou\n" "« /usr/X116/bin ~/xbin »" #: ../../WPrefs.app/Menu.c:736 msgid "Command" msgstr "Commande" #: ../../WPrefs.app/Menu.c:750 msgid "" "Enter a command that outputs a menu\n" "definition to stdout when invoked." msgstr "" "Indiquez une commande qui génère une description\n" "de menu sur la sortie standard." #: ../../WPrefs.app/Menu.c:758 msgid "" "Cache menu contents after opening for\n" "the first time" msgstr "" "Mémoriser le sous-menu dynamique généré au\n" "premier affichage." #: ../../WPrefs.app/Menu.c:769 msgid "Command to Open Files" msgstr "Commande pour ouvrir les fichiers" #: ../../WPrefs.app/Menu.c:783 msgid "" "Enter the command you want to use to open the\n" "files in the directories listed below." msgstr "" "Indiquez la commande à utiliser pour ouvrir\n" "les fichiers des répertoires listés ci-dessous." #: ../../WPrefs.app/Menu.c:792 msgid "Directories with Files" msgstr "Répertoires listés" #: ../../WPrefs.app/Menu.c:805 msgid "Strip extensions from file names" msgstr "Supprimer les extensions des noms de fichiers" #: ../../WPrefs.app/Menu.c:817 msgid "Keyboard Shortcut" msgstr "Raccourci clavier" #: ../../WPrefs.app/Menu.c:853 msgid "Arrange Icons" msgstr "Ranger les icônes" #: ../../WPrefs.app/Menu.c:854 msgid "Hide All Windows Except For The Focused One" msgstr "Masquer toutes les fenêtres inactives" #: ../../WPrefs.app/Menu.c:855 msgid "Show All Windows" msgstr "Montrer toutes les fenêtres" #: ../../WPrefs.app/Menu.c:858 msgid "Exit X Session" msgstr "Terminer la session X" #: ../../WPrefs.app/Menu.c:859 msgid "Restart Window Maker" msgstr "Redémarrer Window Maker" #: ../../WPrefs.app/Menu.c:860 msgid "Start Another Window Manager : (" msgstr "Démarrer un autre gestionnaire de fenêtres  : (" #: ../../WPrefs.app/Menu.c:862 msgid "Save Current Session" msgstr "Enregistrer la session" #: ../../WPrefs.app/Menu.c:863 msgid "Clear Saved Session" msgstr "Effacer la session enregistrée" #: ../../WPrefs.app/Menu.c:864 msgid "Refresh Screen" msgstr "Rafraîchir l'écran" #: ../../WPrefs.app/Menu.c:865 msgid "Open Info Panel" msgstr "Informations Window Maker" #: ../../WPrefs.app/Menu.c:866 msgid "Open Copyright Panel" msgstr "Informations légales" #: ../../WPrefs.app/Menu.c:872 msgid "Window Manager to Start" msgstr "Gestionnaire de fenêtres" #: ../../WPrefs.app/Menu.c:888 msgid "Do not confirm action." msgstr "Pas de demande de confirmation." #: ../../WPrefs.app/Menu.c:898 msgid "" "Instructions:\n" "\n" " - drag items from the left to the menu to add new items\n" " - drag items out of the menu to remove items\n" " - drag items in menu to change their position\n" " - drag items with Control pressed to copy them\n" " - double click in a menu item to change the label\n" " - click on a menu item to change related information" msgstr "" "Instructions :\n" "\n" " - glissez un élément de la gauche jusqu'au menu\n" " pour l'ajouter ;\n" " - glissez un élément hors du menu pour le supprimer ;\n" " - déplacez les éléments dans le menu pour modifier\n" " leur position ;\n" " - déplacez un élément en pressant la touche Ctrl\n" " pour le copier ;\n" " - double-cliquez sur un élément pour changer son\n" " intitulé ;\n" " - cliquez sur un élément pour modifier ses propriétés." #: ../../WPrefs.app/Menu.c:1122 #, c-format msgid "unknown command '%s' in menu" msgstr "Commande « %s » du menu inconnue" #: ../../WPrefs.app/Menu.c:1154 msgid ": Execute Program" msgstr " : Démarrer le programme" #: ../../WPrefs.app/Menu.c:1158 msgid ": Perform Internal Command" msgstr " : exécuter une commande interne" #: ../../WPrefs.app/Menu.c:1162 msgid ": Open a Submenu" msgstr " : ouvrir un sous-menu" #: ../../WPrefs.app/Menu.c:1166 msgid ": Program Generated Submenu" msgstr " : menu généré par un programme" #: ../../WPrefs.app/Menu.c:1170 msgid ": Directory Contents Menu" msgstr " : contenu d'un répertoire" #: ../../WPrefs.app/Menu.c:1174 msgid ": Open Workspaces Submenu" msgstr " : Ouvrir le menu des bureaux" #: ../../WPrefs.app/Menu.c:1178 msgid ": Open Window List Submenu" msgstr " : Ouvrir le menu Fenêtre" #: ../../WPrefs.app/Menu.c:1403 msgid "Remove Submenu" msgstr "Supprimer le sous-menu" #: ../../WPrefs.app/Menu.c:1404 msgid "" "Removing this item will destroy all items inside\n" "the submenu. Do you really want to do that?" msgstr "" "Supprimer cet élément détruira tous les éléments du\n" "sous-menu. Est-ce vraiment ce que vous voulez ?" #: ../../WPrefs.app/Menu.c:1406 msgid "No" msgstr "Non" #: ../../WPrefs.app/Menu.c:1407 msgid "Yes, don't ask again" msgstr "Oui, ne plus me demander" #. if there is a localized plmenu for the tongue put it's filename here #: ../../WPrefs.app/Menu.c:1575 ../../WPrefs.app/Menu.c:1582 #, c-format msgid "%s/Library/WindowMaker/plmenu" msgstr "%s/Library/WindowMaker/plmenu.fr" #: ../../WPrefs.app/Menu.c:1591 #, c-format msgid "Could not open default menu from '%s'" msgstr "Impossible d'ouvrir le menu par défaut « %s »." #: ../../WPrefs.app/Menu.c:1630 msgid "" "The menu file format currently in use is not supported\n" "by this tool. Do you want to discard the current menu\n" "to use this tool?" msgstr "" "WPrefs.app ne gère pas le format utilisé par le fichier\n" "de menu. Voulez-vous supprimer le menu actuel pour utiliser\n" "WPrefs.app ?" #: ../../WPrefs.app/Menu.c:1633 msgid "Yes, Discard and Update" msgstr "Oui, remplace ce menu." #: ../../WPrefs.app/Menu.c:1634 msgid "No, Keep Current Menu" msgstr "Non, garde le menu en cours." #: ../../WPrefs.app/Menu.c:1897 msgid "Applications Menu Definition" msgstr "Définition du menu Application" #: ../../WPrefs.app/Menu.c:1899 msgid "Edit the menu for launching applications." msgstr "" "Personnalisation du menu de lancement\n" "des applications." #: ../../WPrefs.app/MenuPreferences.c:111 msgid "Menu Scrolling Speed" msgstr "Vitesse de défilement des menus" #: ../../WPrefs.app/MenuPreferences.c:160 msgid "Submenu Alignment" msgstr "Alignement des sous-menus" #: ../../WPrefs.app/MenuPreferences.c:204 msgid "" "Always open submenus inside the screen, instead of scrolling." msgstr "" "Toujours afficher entièrement les sous-menus à l'écran (pas de défilement)." #: ../../WPrefs.app/MenuPreferences.c:209 msgid "Scroll off-screen menus when pointer is moved over them." msgstr "Recentrer les menus hors-écran quand la souris est sur eux." #: ../../WPrefs.app/MenuPreferences.c:229 msgid "Menu Preferences" msgstr "Préférences des menus" #: ../../WPrefs.app/MenuPreferences.c:231 msgid "" "Menu usability related options. Scrolling speed,\n" "alignment of submenus etc." msgstr "" "Options relatives à l'utilisation des menus : vitesse de\n" "défilement, alignement des sous-menus, etc." #: ../../WPrefs.app/MouseSettings.c:141 msgid "Invalid mouse acceleration value. Must be a positive real value." msgstr "" "La valeur d'accélération de la souris est invalide. Il faut un réel positif." #: ../../WPrefs.app/MouseSettings.c:161 msgid "" "Invalid mouse acceleration threshold value. Must be the number of pixels to " "travel before accelerating." msgstr "" "Le seuil d'accélération de la souris est invalide. Il faut indiquer le " "nombre de pixels à traverser avant d'accélérer." #: ../../WPrefs.app/MouseSettings.c:262 ../../WPrefs.app/MouseSettings.c:274 #: ../../WPrefs.app/MouseSettings.c:286 ../../WPrefs.app/MouseSettings.c:298 #, c-format msgid "bad value %s for option %s" msgstr "Mauvaise valeur %s pour l'option %s" #: ../../WPrefs.app/MouseSettings.c:357 #, c-format msgid "" "modifier key %s for option ModifierKey was not recognized. Using %s as " "default" msgstr "" "La touche modificatrice %s n'est pas reconnue. La valeur utilisée sera : %s." #: ../../WPrefs.app/MouseSettings.c:382 msgid "could not retrieve keyboard modifier mapping" msgstr "Emplacement (mapping) de la touche modificatrice introuvable." #: ../../WPrefs.app/MouseSettings.c:477 msgid "Mouse Speed" msgstr "Vitesse de la souris" #: ../../WPrefs.app/MouseSettings.c:507 msgid "Accel.:" msgstr "Accélér. :" #: ../../WPrefs.app/MouseSettings.c:520 msgid "Threshold:" msgstr "Seuil :" #: ../../WPrefs.app/MouseSettings.c:535 msgid "Double-Click Delay" msgstr "Délai du double-clic" #: ../../WPrefs.app/MouseSettings.c:579 msgid "Test" msgstr "Test" #: ../../WPrefs.app/MouseSettings.c:609 msgid "Workspace Mouse Actions" msgstr "Actions de la souris sur le bureau" #: ../../WPrefs.app/MouseSettings.c:614 msgid "Disable mouse actions" msgstr "Désactiver la souris" #: ../../WPrefs.app/MouseSettings.c:620 msgid "Left Button" msgstr "bouton gauche" #: ../../WPrefs.app/MouseSettings.c:630 msgid "Middle Button" msgstr "bouton central" #: ../../WPrefs.app/MouseSettings.c:640 msgid "Right Button" msgstr "bouton droit" #: ../../WPrefs.app/MouseSettings.c:650 msgid "Mouse Wheel" msgstr "molette" #: ../../WPrefs.app/MouseSettings.c:672 msgid "Mouse Grab Modifier" msgstr "Saisir une fenêtre à la souris" #: ../../WPrefs.app/MouseSettings.c:674 msgid "" "Keyboard modifier to use for actions that\n" "involve dragging windows with the mouse,\n" "clicking inside the window." msgstr "" "Touche utilisée pour les actions comme\n" "déplacer la fenêtre avec la souris et\n" "cliquer à l'intérieur de la fenêtre." #: ../../WPrefs.app/MouseSettings.c:708 #, c-format msgid "could not create %s" msgstr "Création de %s impossible." #: ../../WPrefs.app/MouseSettings.c:724 #, c-format msgid "could not create temporary file %s" msgstr "Création du fichier temporaire %s impossible." #: ../../WPrefs.app/MouseSettings.c:756 #, c-format msgid "could not rename file %s to %s\n" msgstr "Impossible de renommer %s en %s\n" #: ../../WPrefs.app/MouseSettings.c:829 msgid "Shift" msgstr "Shift" #: ../../WPrefs.app/MouseSettings.c:830 msgid "Lock" msgstr "Arrêt défil." #: ../../WPrefs.app/MouseSettings.c:831 msgid "Control" msgstr "Ctrl" #: ../../WPrefs.app/MouseSettings.c:832 msgid "Mod1" msgstr "Mod1" #: ../../WPrefs.app/MouseSettings.c:833 msgid "Mod2" msgstr "Mod2" #: ../../WPrefs.app/MouseSettings.c:834 msgid "Mod3" msgstr "Mod3" #: ../../WPrefs.app/MouseSettings.c:835 msgid "Mod4" msgstr "Mod4" #: ../../WPrefs.app/MouseSettings.c:836 msgid "Mod5" msgstr "Mod5" #: ../../WPrefs.app/MouseSettings.c:839 msgid "Applications Menu" msgstr "Menu Applications" #: ../../WPrefs.app/MouseSettings.c:841 msgid "Select Windows" msgstr "Sélectionner" #: ../../WPrefs.app/MouseSettings.c:844 msgid "Switch Workspaces" msgstr "Changer de bureau" #: ../../WPrefs.app/MouseSettings.c:849 msgid "Mouse Preferences" msgstr "Préférences de la souris" #: ../../WPrefs.app/MouseSettings.c:851 msgid "" "Mouse speed/acceleration, double click delay,\n" "mouse button bindings etc." msgstr "" "Vitesse et accélération de la souris, délai du\n" "double-clic, action des boutons de la souris, etc." #: ../../WPrefs.app/Paths.c:85 msgid "bad value in option IconPath. Using default path list" msgstr "" "Mauvaise valeur pour la clé IconPath remplacée par la valeur par défaut." #: ../../WPrefs.app/Paths.c:103 msgid "bad value in option PixmapPath. Using default path list" msgstr "" "Mauvaise valeur pour la clé PixmapPath remplacée par la valeur par défaut." #: ../../WPrefs.app/Paths.c:155 msgid "Select directory" msgstr "Choisissez un répertoire" #: ../../WPrefs.app/Paths.c:271 msgid "Icon Search Paths" msgstr "Emplacements des icônes" #: ../../WPrefs.app/Paths.c:282 ../../WPrefs.app/Paths.c:313 #: ../../WPrefs.app/TexturePanel.c:1312 msgid "Add" msgstr "Ajouter" #: ../../WPrefs.app/Paths.c:302 msgid "Pixmap Search Paths" msgstr "Emplacements des images" #: ../../WPrefs.app/Paths.c:342 msgid "Search Path Configuration" msgstr "Configuration des chemins" #: ../../WPrefs.app/Paths.c:344 msgid "" "Search paths to use when looking for pixmaps\n" "and icons." msgstr "" "Chemins vers les répertoires contenant\n" "images et icônes." #: ../../WPrefs.app/Preferences.c:75 msgid "OFF" msgstr "OFF" #: ../../WPrefs.app/Preferences.c:77 msgid "1 pixel" msgstr "1 pixel" #. 2-4 #: ../../WPrefs.app/Preferences.c:80 #, c-format msgid "%i pixels" msgstr "%i pixels" #. >4 #: ../../WPrefs.app/Preferences.c:83 #, c-format msgid "%i pixels " msgstr "%i pixels " #: ../../WPrefs.app/Preferences.c:229 msgid "Size Display" msgstr "Affichage de la taille des fenêtres" #: ../../WPrefs.app/Preferences.c:231 msgid "" "The position or style of the window size\n" "display that's shown when a window is resized." msgstr "" "Position ou apparence de la taille de la fenêtre\n" "quand celle-ci est redimensionnée." #: ../../WPrefs.app/Preferences.c:238 ../../WPrefs.app/Preferences.c:259 msgid "Corner of screen" msgstr "Sur le coin de l'écran" #: ../../WPrefs.app/Preferences.c:239 ../../WPrefs.app/Preferences.c:260 msgid "Center of screen" msgstr "Au centre de l'écran" #: ../../WPrefs.app/Preferences.c:240 ../../WPrefs.app/Preferences.c:261 msgid "Center of resized window" msgstr "Au centre de la fenêtre" #: ../../WPrefs.app/Preferences.c:241 msgid "Technical drawing-like" msgstr "Avec un cadre" #: ../../WPrefs.app/Preferences.c:242 ../../WPrefs.app/Preferences.c:262 msgid "Disabled" msgstr "Désactivé" #: ../../WPrefs.app/Preferences.c:250 msgid "Position Display" msgstr "Affichage de la position" #: ../../WPrefs.app/Preferences.c:252 msgid "" "The position or style of the window position\n" "display that's shown when a window is moved." msgstr "" "Position ou apparence de la position de\n" "la fenêtre quand celle-ci est déplacée." #: ../../WPrefs.app/Preferences.c:270 msgid "Show balloon text for..." msgstr "Afficher l'aide contextuelle pour..." #: ../../WPrefs.app/Preferences.c:277 msgid "incomplete window titles" msgstr "Titres de fenêtres incomplets" #: ../../WPrefs.app/Preferences.c:278 msgid "miniwindow titles" msgstr "Titres des mini-fenêtres" #: ../../WPrefs.app/Preferences.c:279 msgid "application/dock icons" msgstr "Applications dockée" #: ../../WPrefs.app/Preferences.c:280 msgid "internal help" msgstr "Aide interne" #: ../../WPrefs.app/Preferences.c:292 msgid "Raise window when switching focus with keyboard" msgstr "Une fenêtre activée par le clavier passe devant" #: ../../WPrefs.app/Preferences.c:298 msgid "" "Enable keyboard language\n" "switch button in window titlebars." msgstr "" "Bouton pour modifier la cartographie du clavier\n" "dans les barres de titre des fenêtres." #: ../../WPrefs.app/Preferences.c:307 msgid "Workspace border" msgstr "Bordure des bureaux" #: ../../WPrefs.app/Preferences.c:323 msgid "Left/Right" msgstr "gauche/droite" #: ../../WPrefs.app/Preferences.c:328 msgid "Top/Bottom" msgstr "haut/bas" #: ../../WPrefs.app/Preferences.c:349 msgid "Miscellaneous Ergonomic Preferences" msgstr "Autres préférences ergonomiques" #: ../../WPrefs.app/Preferences.c:350 msgid "" "Various settings like balloon text, geometry\n" "displays etc." msgstr "" "Options diverses commme l'aide contextuelle,\n" "la géométrie, les affichages, etc." #: ../../WPrefs.app/TexturePanel.c:323 msgid "Saturation" msgstr "Saturation" #: ../../WPrefs.app/TexturePanel.c:325 msgid "Brightness" msgstr "Luminosité" #: ../../WPrefs.app/TexturePanel.c:373 ../../WPrefs.app/TexturePanel.c:380 msgid "Hue" msgstr "Teinte" #: ../../WPrefs.app/TexturePanel.c:612 msgid "Could not load the selected file: " msgstr "Chargement du fichier sélectionné impossible : " #: ../../WPrefs.app/TexturePanel.c:666 msgid "Open Image" msgstr "Choisir une image" #: ../../WPrefs.app/TexturePanel.c:696 msgid "The selected file does not contain a supported image." msgstr "Le fichier sélectionné ne contient pas un format d'image supporté." #: ../../WPrefs.app/TexturePanel.c:947 #, c-format msgid "could not load file '%s': %s" msgstr "L'image « %s » est introuvable : %s" #: ../../WPrefs.app/TexturePanel.c:1066 #, c-format msgid "error creating texture %s" msgstr "Erreur en créant la texture %s." #: ../../WPrefs.app/TexturePanel.c:1256 msgid "Texture Panel" msgstr "Panneau de texture" #: ../../WPrefs.app/TexturePanel.c:1264 msgid "Texture Name" msgstr "Nom de la texture" #: ../../WPrefs.app/TexturePanel.c:1276 msgid "Solid Color" msgstr "Couleur unie" #: ../../WPrefs.app/TexturePanel.c:1277 msgid "Gradient Texture" msgstr "Couleurs dégradées" #: ../../WPrefs.app/TexturePanel.c:1278 msgid "Simple Gradient Texture" msgstr "Dégradé simple" #: ../../WPrefs.app/TexturePanel.c:1279 msgid "Textured Gradient" msgstr "Dégradé texturé" #: ../../WPrefs.app/TexturePanel.c:1280 msgid "Image Texture" msgstr "Image" #: ../../WPrefs.app/TexturePanel.c:1288 msgid "Default Color" msgstr "Couleur du fond" #: ../../WPrefs.app/TexturePanel.c:1300 msgid "Gradient Colors" msgstr "Couleurs du dégradé" #: ../../WPrefs.app/TexturePanel.c:1396 msgid "Direction" msgstr "Direction" #: ../../WPrefs.app/TexturePanel.c:1424 msgid "Gradient" msgstr "Dégradé" #: ../../WPrefs.app/TexturePanel.c:1442 msgid "Gradient Opacity" msgstr "Opacité du dégradé" #: ../../WPrefs.app/TexturePanel.c:1484 msgid "Image" msgstr "Image" #: ../../WPrefs.app/TexturePanel.c:1516 msgid "Tile" msgstr "Mosaïque" #: ../../WPrefs.app/TexturePanel.c:1517 msgid "Scale" msgstr "À l'échelle" #: ../../WPrefs.app/TexturePanel.c:1519 msgid "Maximize" msgstr "Maximisée" #: ../../WPrefs.app/Themes.c:71 ../../WPrefs.app/Themes.c:82 msgid "Set" msgstr "Appliquer" #: ../../WPrefs.app/Themes.c:132 msgid "Stop" msgstr "Stop" #: ../../WPrefs.app/Themes.c:143 ../../WPrefs.app/Themes.c:203 #: ../../WPrefs.app/Themes.c:223 msgid "Download" msgstr "Télécharger" #: ../../WPrefs.app/Themes.c:171 msgid "Save Current Theme" msgstr "Enregistrer le thème" #: ../../WPrefs.app/Themes.c:180 msgid "Load" msgstr "Charger" #: ../../WPrefs.app/Themes.c:185 msgid "Install" msgstr "Installer" #: ../../WPrefs.app/Themes.c:193 msgid "Tile of The Day" msgstr "Fond d'icône du jour" #: ../../WPrefs.app/Themes.c:213 msgid "Bar of The Day" msgstr "Barre du jour" #: ../../WPrefs.app/WPrefs.c:260 msgid "Window Maker Preferences" msgstr "Préférences pour Window Maker" #: ../../WPrefs.app/WPrefs.c:284 msgid "Revert Page" msgstr "Annuler la page" #: ../../WPrefs.app/WPrefs.c:290 msgid "Revert All" msgstr "Tout annuler" #: ../../WPrefs.app/WPrefs.c:296 msgid "Save" msgstr "Enregistrer" #: ../../WPrefs.app/WPrefs.c:309 msgid "Balloon Help" msgstr "Aide contextuelle" #: ../../WPrefs.app/WPrefs.c:334 msgid "Window Maker Preferences Utility" msgstr "Outil de configuration de Window Maker" #: ../../WPrefs.app/WPrefs.c:341 #, c-format msgid "Version %s for Window Maker %s or newer" msgstr "Version %s pour Window Maker %s ou postérieur" #: ../../WPrefs.app/WPrefs.c:349 msgid "Starting..." msgstr "Démarrage..." #: ../../WPrefs.app/WPrefs.c:355 msgid "" "Programming/Design: Alfredo K. Kojima\n" "Artwork: Marco van Hylckama Vlieg, Largo et al\n" "More Programming: James Thompson et al" msgstr "" "Programmation/conception : Alfredo K. Kojima\n" "Dessins : Marco van Hylckama Vlieg, Largo et autres\n" "Programmation additionnelle : James Thompson et autres\n" "Traduction française : Antoine Hulin, Bastien Nocera et Christoph Thompson" #: ../../WPrefs.app/WPrefs.c:455 #, c-format msgid "could not locate image file %s\n" msgstr "Impossible de trouver l'image %s\n" #: ../../WPrefs.app/WPrefs.c:670 #, c-format msgid "could not load image file %s:%s" msgstr "Impossible de charger l'image %s : %s" #: ../../WPrefs.app/WPrefs.c:689 msgid "Loading Window Maker configuration files..." msgstr "Lecture de la configuration de Window Maker..." #: ../../WPrefs.app/WPrefs.c:693 msgid "Initializing configuration panels..." msgstr "Initialisation des panneaux de configuration..." #: ../../WPrefs.app/WPrefs.c:728 msgid "" "WPrefs is free software and is distributed WITHOUT ANY\n" "WARRANTY under the terms of the GNU General Public License." msgstr "" "WPrefs est un logiciel libre. Il est distribué sans AUCUNE\n" "GARANTIE sous les termes de la licence publique générale\n" "du projet GNU (GNU GPL)." #: ../../WPrefs.app/WPrefs.c:758 ../../WPrefs.app/WPrefs.c:838 #, c-format msgid "Window Maker domain (%s) is corrupted!" msgstr "Le domaine Window Maker (%s) est corrompu !" #: ../../WPrefs.app/WPrefs.c:762 #, c-format msgid "Could not load Window Maker domain (%s) from defaults database." msgstr "" "Lecture du domaine Window Maker (%s) impossible depuis la base de données " "par défaut." #: ../../WPrefs.app/WPrefs.c:778 msgid "could not extract version information from Window Maker" msgstr "extraction du numéro de version de Window Maker impossible" #: ../../WPrefs.app/WPrefs.c:779 msgid "Make sure wmaker is in your search path." msgstr "Assurez-vous que l'exécutable « wmaker » est dans votre variable PATH." #: ../../WPrefs.app/WPrefs.c:782 msgid "" "Could not extract version from Window Maker. Make sure it is correctly " "installed and is in your PATH environment variable." msgstr "" "Impossible de récupérer le numéro de version de Window Maker. Assurez-vous " "que Window Maker est correctement installé et que son emplacement est " "indiqué par la variable PATH." # TODO:Fusionner avec la précédente. #: ../../WPrefs.app/WPrefs.c:792 msgid "" "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." msgstr "" "Impossible de récupérer le numéro de version de Window Maker. Assurez-vous " "que Window Maker est correctement installé et que son emplacement est " "indiqué par la variable PATH." #: ../../WPrefs.app/WPrefs.c:799 #, c-format msgid "" "WPrefs only supports Window Maker 0.18.0 or newer.\n" "The version installed is %i.%i.%i\n" msgstr "" "WPrefs fonctionne avec les versions 0.18.0 et postérieures\n" "de Window Maker. La version installée est %i.%i.%i\n" #: ../../WPrefs.app/WPrefs.c:806 #, 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, qui est installé sur votre système, n'est pas " "pleinement supporté par cette version de WPrefs." #: ../../WPrefs.app/WPrefs.c:819 #, c-format msgid "could not run \"%s --global_defaults_path\"." msgstr "Impossible de démarrer \"%s --global_defaults_path\"." #: ../../WPrefs.app/WPrefs.c:842 #, c-format msgid "Could not load global Window Maker domain (%s)." msgstr "Impossible de charger le domaine global Window Maker (%s)." #: ../../WPrefs.app/WPrefs.c:1091 #, c-format msgid "" "bad speed value for option %s\n" ". Using default Medium" msgstr "" "Mauvaise valeur pour l'option %s\n" "remplacée par : Medium" #: ../../WPrefs.app/WindowHandling.c:141 #, c-format msgid "bad option value %s in WindowPlacement. Using default value" msgstr "" "Mauvaise valeur pour le placement des fenêtres (WindowPlacement) : %s. " "Remplacée par la valeur par défaut." #: ../../WPrefs.app/WindowHandling.c:163 msgid "invalid data in option WindowPlaceOrigin. Using default (0,0)" msgstr "" "Mauvaise valeur pour l'origine du placement des fenêtres (WindowPlaceOrigin) " "remplacée par (0,0)." #: ../../WPrefs.app/WindowHandling.c:243 msgid "Window Placement" msgstr "Placement des fenêtres" #: ../../WPrefs.app/WindowHandling.c:244 msgid "" "How to place windows when they are first put\n" "on screen." msgstr "" "Méthode utilisée pour placer les fenêtres quand elles\n" "apparaissent à l'écran pour la première fois." #: ../../WPrefs.app/WindowHandling.c:250 msgid "Automatic" msgstr "Automatique" #: ../../WPrefs.app/WindowHandling.c:251 msgid "Random" msgstr "Aléatoire" #: ../../WPrefs.app/WindowHandling.c:252 msgid "Manual" msgstr "Manuel" #: ../../WPrefs.app/WindowHandling.c:253 msgid "Cascade" msgstr "En cascade" #: ../../WPrefs.app/WindowHandling.c:254 msgid "Smart" msgstr "Intelligent" #: ../../WPrefs.app/WindowHandling.c:260 msgid "Placement Origin" msgstr "Origine du placement" # msgstr "Mouvement opaque" # msgstr "Dépl. opaque" # msgstr "Mvt opaque" #: ../../WPrefs.app/WindowHandling.c:321 msgid "Opaque Move" msgstr "Dépl. opaque" #: ../../WPrefs.app/WindowHandling.c:322 msgid "" "Whether the window contents should be moved\n" "when dragging windows aroung or if only a\n" "frame should be displayed.\n" msgstr "" "Afficher le contenu des fenêtres quand elles sont\n" "déplacées sur le bureau ou simplement afficher\n" "un cadre.\n" #: ../../WPrefs.app/WindowHandling.c:361 msgid "When maximizing..." msgstr "Lors de l'agrandissement..." #: ../../WPrefs.app/WindowHandling.c:366 msgid "...do not cover icons" msgstr "ne pas couvrir les icônes" #: ../../WPrefs.app/WindowHandling.c:372 msgid "...do not cover dock" msgstr "ne pas couvrir le Dock" #: ../../WPrefs.app/WindowHandling.c:381 msgid "Edge Resistance" msgstr "Résistance des bordures" #: ../../WPrefs.app/WindowHandling.c:383 msgid "" "Edge resistance will make windows `resist'\n" "being moved further for the defined threshold\n" "when moved against other windows or the edges\n" "of the screen." msgstr "" "Les fenêtres résistent aux déplacements quand elles\n" "sont proches des autres fenêtres ou des bordures\n" "de l'écran, c-à-d. quand elles sont en deçà de la\n" "limite définie ici." #: ../../WPrefs.app/WindowHandling.c:402 msgid "Resist" msgstr "Résister" #: ../../WPrefs.app/WindowHandling.c:407 msgid "Attract" msgstr "Attirer" #: ../../WPrefs.app/WindowHandling.c:423 msgid "Open dialogs in same workspace as their owners" msgstr "" "Ouvrir les boîtes de dialogue sur le " "même bureau que leurs propriétaires." #: ../../WPrefs.app/WindowHandling.c:450 msgid "Window Handling Preferences" msgstr "Préférences pour la gestion des fenêtres" #: ../../WPrefs.app/WindowHandling.c:452 msgid "" "Window handling options. Initial placement style\n" "edge resistance, opaque move etc." msgstr "" "Options de manipulation des fenêtres : \n" "placement initial, résistance des bordures,\n" "déplacement opaque etc." #: ../../WPrefs.app/Workspace.c:176 msgid "Workspace Navigation" msgstr "Navigation entre bureaux" #: ../../WPrefs.app/Workspace.c:183 msgid "Wrap to the first workspace from the last workspace" msgstr "Revenir au premier bureau après le dernier" #: ../../WPrefs.app/Workspace.c:205 msgid "Switch workspaces while dragging windows" msgstr "Déplacer les fenêtres d'un bureau à l'autre" #: ../../WPrefs.app/Workspace.c:227 msgid "Automatically create new workspaces" msgstr "Créer automatiquement d'autres bureaux" #: ../../WPrefs.app/Workspace.c:250 msgid "Position of workspace name display" msgstr "Position pour l'affichage du nom du bureau" #: ../../WPrefs.app/Workspace.c:269 msgid "Disable" msgstr "Désactivé" #: ../../WPrefs.app/Workspace.c:271 msgid "Top" msgstr "Haut" #: ../../WPrefs.app/Workspace.c:272 msgid "Bottom" msgstr "Bas" #: ../../WPrefs.app/Workspace.c:273 msgid "Top/Left" msgstr "En haut à gauche" #: ../../WPrefs.app/Workspace.c:274 msgid "Top/Right" msgstr "En haut à droite" #: ../../WPrefs.app/Workspace.c:275 msgid "Bottom/Left" msgstr "En bas à gauche" #: ../../WPrefs.app/Workspace.c:276 msgid "Bottom/Right" msgstr "En bas à droite" #: ../../WPrefs.app/Workspace.c:284 msgid "Dock/Clip" msgstr "Dock/Trombone" #: ../../WPrefs.app/Workspace.c:303 msgid "" "Disable/enable the application Dock (the\n" "vertical icon bar in the side of the screen)." msgstr "" "Activation du Dock (la barre d'icônes\n" "verticale sur le côté de l'écran)." #: ../../WPrefs.app/Workspace.c:324 msgid "" "Disable/enable the Clip (that thing with\n" "a paper clip icon)." msgstr "" "Activation du Trombone (le bidule avec\n" "un trombone dessus)." #: ../../WPrefs.app/Workspace.c:364 msgid "Workspace Preferences" msgstr "Préférences pour les bureaux" #: ../../WPrefs.app/Workspace.c:366 msgid "" "Workspace navigation features.\n" "You can also enable/disable the Dock and Clip here." msgstr "" "Options pour la navigation entre bureaux. Vous\n" "pouvez également activer ou désactiver le Dock\n" "et le Trombone ici." #: ../../WPrefs.app/imagebrowser.c:95 msgid "View" msgstr "Aperçu" #: ../../WPrefs.app/main.c:59 #, c-format msgid "usage: %s [options]\n" msgstr "usage : %s [options]\n" #: ../../WPrefs.app/main.c:60 msgid "options:" msgstr "options : " #: ../../WPrefs.app/main.c:61 msgid " -display <display>\tdisplay to be used" msgstr " -display <affichage>\taffichage à utiliser" #: ../../WPrefs.app/main.c:62 msgid " --version\t\tprint version number and exit" msgstr " --version\t\taffiche le numéro de version" #: ../../WPrefs.app/main.c:63 msgid " --help\t\tprint this message and exit" msgstr " --help\t\taffiche ce message" #: ../../WPrefs.app/main.c:122 #, c-format msgid "too few arguments for %s" msgstr "trop peu d'arguments pour %s" #: ../../WPrefs.app/main.c:144 msgid "X server does not support locale" msgstr "Pas de gestion des langues dans le serveur X." #: ../../WPrefs.app/main.c:147 msgid "cannot set locale modifiers" msgstr "Impossible d'affecter les modificateurs de langue (locale modifiers)." #: ../../WPrefs.app/main.c:153 #, c-format msgid "could not open display %s" msgstr "Impossible d'ouvrir l'affichage %s" #: ../../WPrefs.app/main.c:161 msgid "could not initialize application" msgstr "Impossible d'initialiser l'application" #~ msgid "- Custom -" #~ msgstr "- Personnalisée -" ����������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/po/README�������������������������������������������������������������0000644�0001750�0001750�00000002601�13431646201�014250� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������File Language Current Maintainer ------------------------------------------------------------------------------ pt.po Portuguese Eliphas Levy Theodoro <eliphas@conectiva.com.br> hr.po Croatian Toni Bili <tbilic@oliver.efos.hr> fr.po French Bastien NOCERA <hadess@writeme.com> Hadess <hadess@infonie.fr> Antoine Hulin <antoine@origan.fdn.org> ko.po Korean Byeong-Chan Kim <redhands@linux.sarang.net> cs.po Czech Jiri Hnidek <Jiri.Hnidek@vslib.cz> ja.po Japanese Kazuhide Takahashi <kazu@dgra.ne.jp> Takeo Hashimoto <HashimotoTakeo@mac.com> zh_TW.Big5.po Chinese Li Wei Jih <lwj@manufacture.com.tw> zh_CN.po Chinese Wang Jian <larkw@263.net> es.po Spanish Alvaro Herrera <alvherre@webhost.cl> fi.po Finnish Tomi Kajala <tomi@iki.fi> it.po Italian Michele Campeotto <micampe@f2s.com> ru.po Russian Igor P. Roboul <igor@srcso.sochi.su> de.po German Torsten Marek <torsten.marek@vbdnet.de> Bernd Eggert <Bernd.Eggert@t-online.de> Guido Scholz <guido.scholz@bayernline.de> hu.po Hungarian Horvath Szabolcs <horvathsz@penguinpowered.com> bg.po Bulgarian Slavei Karadjov <slaff@exco.net> Anton Zinoviev <zinoviev@debian.org> sk.po Slovak Jan 'judas' Tomka <judas@linux.sk> et.po Estonian Ivar Smolin <okul@linux.ee> ca.po Catalan Ernest Adrogu <eadrogue@gmx.net> nl.po Dutch Alwin <translations@ziggo.nl> fy.po Frisian Alwin <translations@ziggo.nl> �������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/po/fy.po��������������������������������������������������������������0000644�0001750�0001750�00000216532�13642357773�014401� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Translation into Western Frisian for Window Maker # Copyright (C) 2015-2017 Window Maker Developers Team # This file is distributed under the same license as the windowmaker package. # Original by Alwin <translations@ziggo.nl>, 2015. # msgid "" msgstr "" "Project-Id-Version: wmaker-0.95.8+\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-09-14 19:36+0200\n" "PO-Revision-Date: 2017-09-14 00:00+0000\n" "Last-Translator: Alwin <translations@ziggo.nl>\n" "Language-Team: Western Frisian\n" "Language: fy\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. Related to Window titles #: ../../WPrefs.app/Appearance.c:44 msgid "Focused Window Title" msgstr "Titel fan fokust finster" #: ../../WPrefs.app/Appearance.c:46 msgid "Unfocused Window Title" msgstr "Titel fan ûnfokust finster" #: ../../WPrefs.app/Appearance.c:48 msgid "Owner of Focused Window Title" msgstr "Titel fan eigener fokust finster" #. Related to Menus #: ../../WPrefs.app/Appearance.c:52 ../../WPrefs.app/Appearance.c:1501 #: ../../WPrefs.app/FontSimple.c:99 msgid "Menu Title" msgstr "Menutitel" #: ../../WPrefs.app/Appearance.c:54 msgid "Menu Item Text" msgstr "Tekst fan menuyngong" #: ../../WPrefs.app/Appearance.c:56 msgid "Disabled Menu Item Text" msgstr "Tekst fan útskeakele menuyngong" #: ../../WPrefs.app/Appearance.c:58 msgid "Menu Highlight Color" msgstr "Kleur fan útljocht menu" #: ../../WPrefs.app/Appearance.c:60 msgid "Highlighted Menu Text Color" msgstr "Tekstkleur fan útljocht menu" #. #. * yuck kluge: the coordinate for HighlightTextColor are actually those of the last "Normal item" #. * at the bottom when user clicks it, the "yuck kluge" in the function 'previewClick' will swap it #. * for the MenuTextColor selection as user would expect #. * #. * Note that the entries are reffered by their index for performance #. #. Related to Window's border #: ../../WPrefs.app/Appearance.c:71 msgid "Focused Window Border Color" msgstr "Kleur fan finsterrâne, fokust" #: ../../WPrefs.app/Appearance.c:73 msgid "Window Border Color" msgstr "Kleur fan finsterrâne" #: ../../WPrefs.app/Appearance.c:75 msgid "Selected Window Border Color" msgstr "Kleur fan finsterrâne, selektearre" #. Related to Icons and Clip #: ../../WPrefs.app/Appearance.c:79 msgid "Miniwindow Title" msgstr "Titel fan minyfinster" #: ../../WPrefs.app/Appearance.c:81 msgid "Miniwindow Title Back" msgstr "Titeleftergrûn fan minyfinster" #: ../../WPrefs.app/Appearance.c:83 ../../WPrefs.app/FontSimple.c:102 msgid "Clip Title" msgstr "Kliptitel" #: ../../WPrefs.app/Appearance.c:85 msgid "Collapsed Clip Title" msgstr "Kliptitel, ynskood" #: ../../WPrefs.app/Appearance.c:110 msgid "Left" msgstr "Lofts" #: ../../WPrefs.app/Appearance.c:111 ../../WPrefs.app/TexturePanel.c:1407 #: ../../WPrefs.app/WindowHandling.c:93 ../../WPrefs.app/Workspace.c:189 msgid "Center" msgstr "Sintrearje" #: ../../WPrefs.app/Appearance.c:112 msgid "Right" msgstr "Rjochts" #: ../../WPrefs.app/Appearance.c:382 msgid "[Focused]" msgstr "[Fokust]" #: ../../WPrefs.app/Appearance.c:383 msgid "Titlebar of Focused Window" msgstr "Titelbalke fan fokust finster" #: ../../WPrefs.app/Appearance.c:386 msgid "[Unfocused]" msgstr "[Unfokust]" #: ../../WPrefs.app/Appearance.c:387 msgid "Titlebar of Unfocused Windows" msgstr "Titelbalke fan ûnfokust finster" #: ../../WPrefs.app/Appearance.c:390 msgid "[Owner of Focused]" msgstr "[Eigener fan fokust]" #: ../../WPrefs.app/Appearance.c:391 msgid "Titlebar of Focused Window's Owner" msgstr "Titelbalke eigener fokust finster" #: ../../WPrefs.app/Appearance.c:394 msgid "[Resizebar]" msgstr "[Fergrutbalke]" #: ../../WPrefs.app/Appearance.c:395 msgid "Window Resizebar" msgstr "Finsterfergrutbalke" #: ../../WPrefs.app/Appearance.c:398 msgid "[Menu Title]" msgstr "[Menutitel]" #: ../../WPrefs.app/Appearance.c:399 msgid "Titlebar of Menus" msgstr "Titelbalke fan menu's" #: ../../WPrefs.app/Appearance.c:402 msgid "[Menu Item]" msgstr "[Menuyngong]" #: ../../WPrefs.app/Appearance.c:403 msgid "Menu Items" msgstr "Menuyngongen" #: ../../WPrefs.app/Appearance.c:406 msgid "[Icon]" msgstr "[Ikoan]" #: ../../WPrefs.app/Appearance.c:407 msgid "Icon Background" msgstr "Ikoaneftergrûn" #: ../../WPrefs.app/Appearance.c:410 msgid "[Background]" msgstr "[Eftergrûn]" #: ../../WPrefs.app/Appearance.c:411 msgid "Workspace Background" msgstr "Wurkromte-eftergrûn" #: ../../WPrefs.app/Appearance.c:562 ../../WPrefs.app/TexturePanel.c:880 #, c-format msgid "could not load file '%s': %s" msgstr "koe bestân '%s' net lade: %s" #: ../../WPrefs.app/Appearance.c:565 #, c-format msgid "could not find file '%s' for texture type %s" msgstr "koe bestân '%s' net fine foar tekstuertype %s" #: ../../WPrefs.app/Appearance.c:613 ../../WPrefs.app/Appearance.c:639 #: ../../WPrefs.app/Appearance.c:673 #, c-format msgid "unknown direction in '%s', falling back to diagonal" msgstr "ûnbekende rjochting yn '%s', falt werom op diagonaal" #: ../../WPrefs.app/Appearance.c:720 #, c-format msgid "type '%s' is not a supported type for a texture" msgstr "type '%s' is gjin stipe type foar in tekstuer" #: ../../WPrefs.app/Appearance.c:1088 #, c-format msgid "could not remove file %s" msgstr "koe bestân %s net ferwiderje" #: ../../WPrefs.app/Appearance.c:1110 msgid "Select File" msgstr "Kies bestân" #: ../../WPrefs.app/Appearance.c:1313 #, c-format msgid "could not read size of image from '%s', ignoring" msgstr "koe ôfbyldingsgrutte net ynlêze út '%s', negearre" #: ../../WPrefs.app/Appearance.c:1318 #, c-format msgid "image \"%s\" has an invalid depth of %d, ignoring" msgstr "ôfbylding \"%s\" hat in ûnjildige kleurdjipte fan %d, negearre" #: ../../WPrefs.app/Appearance.c:1324 #, c-format msgid "could not create RImage for \"%s\": %s" msgstr "koe RImage net oanmeitsje foar \"%s\": %s" #: ../../WPrefs.app/Appearance.c:1481 msgid "Focused Window" msgstr "Fokust finster" #: ../../WPrefs.app/Appearance.c:1488 msgid "Unfocused Window" msgstr "Unfokust finster" #: ../../WPrefs.app/Appearance.c:1495 msgid "Owner of Focused Window" msgstr "Eigener fokust finster" #: ../../WPrefs.app/Appearance.c:1507 ../../WPrefs.app/Appearance.c:1511 msgid "Normal Item" msgstr "Normaal item" #: ../../WPrefs.app/Appearance.c:1517 msgid "Disabled Item" msgstr "Utskeakele" #: ../../WPrefs.app/Appearance.c:1532 msgid "Highlighted" msgstr "Utljochte" #: ../../WPrefs.app/Appearance.c:1625 msgid "Icon Text" msgstr "Ikoantekst" #: ../../WPrefs.app/Appearance.c:1709 ../../WPrefs.app/Appearance.c:1716 msgid "Clip" msgstr "Klip" #: ../../WPrefs.app/Appearance.c:1713 msgid "Coll." msgstr "Ynsk." #: ../../WPrefs.app/Appearance.c:1877 msgid "Texture" msgstr "Tekstuer" #: ../../WPrefs.app/Appearance.c:1900 msgid "" "Double click in the texture you want to use\n" "for the selected item." msgstr "" "Dûbeldklik yn 'e tekstuer dy't jo brûke wolle\n" "foar it selektearre ûnderdiel." #: ../../WPrefs.app/Appearance.c:1912 msgid "New" msgstr "Nij" #: ../../WPrefs.app/Appearance.c:1916 msgid "Create a new texture." msgstr "Meitsje in nije tekstuer oan." #: ../../WPrefs.app/Appearance.c:1923 msgid "Extract..." msgstr "Utpakke..." #: ../../WPrefs.app/Appearance.c:1927 msgid "Extract texture(s) from a theme or a style file." msgstr "" "Pak tekstuer(en) fan in tema- of\n" "stylbestân út." #: ../../WPrefs.app/Appearance.c:1936 msgid "Edit" msgstr "Bewurkje" #: ../../WPrefs.app/Appearance.c:1939 msgid "Edit the highlighted texture." msgstr "Bewurkje de útljochte tekstuer." #: ../../WPrefs.app/Appearance.c:1946 ../../WPrefs.app/TexturePanel.c:1218 msgid "Delete" msgstr "Wiskje" #: ../../WPrefs.app/Appearance.c:1950 msgid "Delete the highlighted texture." msgstr "Wiskje de útljochte tekstuer." #: ../../WPrefs.app/Appearance.c:1962 msgid "Color" msgstr "Kleur" #: ../../WPrefs.app/Appearance.c:2018 msgid "Options" msgstr "Opsjes" #: ../../WPrefs.app/Appearance.c:2025 msgid "Menu Style" msgstr "Menustyl" #: ../../WPrefs.app/Appearance.c:2043 ../../WPrefs.app/Configurations.c:179 #: ../../WPrefs.app/Configurations.c:191 ../../WPrefs.app/Docks.c:212 #: ../../WPrefs.app/Docks.c:220 ../../WPrefs.app/Focus.c:279 #: ../../WPrefs.app/Focus.c:290 ../../WPrefs.app/MenuPreferences.c:127 #: ../../WPrefs.app/MenuPreferences.c:138 #: ../../WPrefs.app/MenuPreferences.c:166 #: ../../WPrefs.app/MenuPreferences.c:181 ../../WPrefs.app/MouseSettings.c:554 #: ../../WPrefs.app/MouseSettings.c:565 ../../WPrefs.app/WPrefs.c:459 #: ../../WPrefs.app/WPrefs.c:473 #, c-format msgid "could not load icon file %s" msgstr "koe ikoanbestân %s net lade" #: ../../WPrefs.app/Appearance.c:2056 msgid "Title Alignment" msgstr "Titelrjochting" #: ../../WPrefs.app/Appearance.c:2254 msgid "Appearance Preferences" msgstr "Uterlikfoarkarren" #: ../../WPrefs.app/Appearance.c:2256 msgid "" "Background texture configuration for windows,\n" "menus and icons." msgstr "" "Eftergrûntekstuerynstellingen foar finsters,\n" "menu's en ikoanen." #: ../../WPrefs.app/Appearance.c:2292 msgid "Extract Texture" msgstr "Tekstuer útpakke" #: ../../WPrefs.app/Appearance.c:2312 msgid "Textures" msgstr "Tekstueren" #: ../../WPrefs.app/Appearance.c:2321 ../../WPrefs.app/WPrefs.c:253 msgid "Close" msgstr "Slute" #: ../../WPrefs.app/Appearance.c:2326 msgid "Extract" msgstr "Utpakke" #: ../../WPrefs.app/Configurations.c:130 ../../WPrefs.app/Docks.c:170 #: ../../WPrefs.app/Workspace.c:106 #, c-format msgid "could not load image file %s" msgstr "koe ôfbyldingsbestân %s net lade" #: ../../WPrefs.app/Configurations.c:141 msgid "Icon Slide Speed" msgstr "Ikoanskofaasje" #: ../../WPrefs.app/Configurations.c:147 msgid "Shade Animation Speed" msgstr "Animaasjefaasje fan oprôljen" #: ../../WPrefs.app/Configurations.c:206 msgid "Smooth Scaling" msgstr "Glêdskale" #: ../../WPrefs.app/Configurations.c:237 msgid "" "Smooth scaled background images, neutralizing\n" "the `pixelization' effect. This will slow\n" "down loading of background images considerably." msgstr "" "Glêdskaalde eftergrûnôfbyldingen\n" "neutralisearje it 'pixeleffekt'. Dit sil it laden fan\n" "eftergrûnôfbyldingen oansjenlik fertraagje." #: ../../WPrefs.app/Configurations.c:247 msgid "Titlebar Style" msgstr "Titelbalkestyl" #: ../../WPrefs.app/Configurations.c:300 ../../WPrefs.app/Configurations.c:306 msgid "Animations" msgstr "Animaasjes" #: ../../WPrefs.app/Configurations.c:317 msgid "" "Disable/enable animations such as those shown\n" "for window miniaturization, shading etc." msgstr "" "Skeakelje animaasjes yn/út, sa as dy toand\n" "foar finster miniaturisearjen, oprôljen ensfh." #: ../../WPrefs.app/Configurations.c:324 msgid "Superfluous" msgstr "Oerfloedich" #: ../../WPrefs.app/Configurations.c:335 msgid "" "Disable/enable `superfluous' features and\n" "animations. These include the `ghosting' of the\n" "dock when it's being moved to another side and\n" "the explosion animation when undocking icons." msgstr "" "Skeakelje 'oerfloedige' skaaimerken en animaasjes\n" "yn/út. Dêrta hearre it 'reizgjen' fan it\n" "Dok by ferpleatsen nei de oare kant, en de\n" "eksploazje-animaasje by ûntdokken fan ikoanen." #: ../../WPrefs.app/Configurations.c:348 msgid "Dithering colormap for 8bpp" msgstr "Rasterkleurekaart foar 8 bpp" #: ../../WPrefs.app/Configurations.c:350 msgid "" "Number of colors to reserve for Window Maker\n" "on displays that support only 8bpp (PseudoColor)." msgstr "" "Oantal kleuren te reservearjen foar Window Maker, op\n" "skermen dy't allinnich 8 bpp (PseudoColor) stypje." #: ../../WPrefs.app/Configurations.c:357 msgid "Disable dithering in any visual/depth" msgstr "Skeakelje rasterjen út yn elke 'visual'/kleurdjipte" #: ../../WPrefs.app/Configurations.c:378 msgid "" "More colors for\n" "applications" msgstr "" "Mear\n" "kleuren foar\n" "programma's" #: ../../WPrefs.app/Configurations.c:385 msgid "" "More colors for\n" "Window Maker" msgstr "" "Mear\n" "kleuren foar\n" "Window Maker" #: ../../WPrefs.app/Configurations.c:434 msgid "Other Configurations" msgstr "Oare ynstellingen" #: ../../WPrefs.app/Configurations.c:435 msgid "" "Animation speeds, titlebar styles, various option\n" "toggling and number of colors to reserve for\n" "Window Maker on 8bit displays." msgstr "" "Animaasjefaasjes, titelbalkestilen, ferskate\n" "opsjes ynskeakelje, en it oantal kleuren te reservearjen\n" "foar Window Maker op 8-bitskermen." #: ../../WPrefs.app/Docks.c:26 msgid "Clip autocollapsing delays" msgstr "Fertraging fansels skowen Klip" #: ../../WPrefs.app/Docks.c:27 msgid "Clip autoraising delays" msgstr "Fertraging fansels ferheegjen Klip" #: ../../WPrefs.app/Docks.c:34 msgid "Before auto-expansion" msgstr "Fansels útskowe nei" #: ../../WPrefs.app/Docks.c:35 msgid "Before auto-collapsing" msgstr "Fansels ynskowe nei" #: ../../WPrefs.app/Docks.c:36 msgid "Before auto-raising" msgstr "Fansels ferheegje nei" #: ../../WPrefs.app/Docks.c:37 msgid "Before auto-lowering" msgstr "Fansels ferleegje nei" #: ../../WPrefs.app/Docks.c:48 msgid "" "Disable/enable the application Dock (the\n" "vertical icon bar in the side of the screen)." msgstr "" "Skeakelje it programmadok (de fertikale ikoanebalke\n" "oan 'e sydkant fan it skerm) yn/út." #: ../../WPrefs.app/Docks.c:50 msgid "" "Disable/enable the Clip (that thing with\n" "a paper clip icon)." msgstr "" "Skeakelje de Klip (dat ding mei in paperclipikoan)\n" "yn/út." #: ../../WPrefs.app/Docks.c:52 msgid "" "Disable/enable Drawers (a dock that stores\n" "application icons horizontally). The dock is required." msgstr "" "Skeakelje de laden (in dok dat programma-ikoanen\n" "horizontaal bewarret) yn/út. It Dok is fereaske." #: ../../WPrefs.app/Docks.c:234 ../../WPrefs.app/Focus.c:309 #: ../../WPrefs.app/MouseSettings.c:595 msgid "ms" msgstr "ms" #: ../../WPrefs.app/Docks.c:250 msgid "Dock/Clip/Drawer" msgstr "Dok/Klip/Laad" #: ../../WPrefs.app/Docks.c:322 msgid "Dock Preferences" msgstr "Dokfoarkarren" #: ../../WPrefs.app/Docks.c:324 msgid "" "Dock and clip features.\n" "Enable/disable the Dock and Clip, and tune some delays." msgstr "" "Dok- en klipskaaimerken. Skeakelje it Dok en de Klip yn/út,\n" "en pas fertragingen oan." #: ../../WPrefs.app/Expert.c:44 msgid "" "Disable miniwindows (icons for minimized windows). For use with KDE/GNOME." msgstr "" "Skeakelje minyfinsters (ikoanen foar miniaturisearre finsters) út. Foar ge-\n" "brûk mei KDE/GNOME." #. default: #: ../../WPrefs.app/Expert.c:47 msgid "Ignore decoration hints for GTK applications." msgstr "Negearje dekoraasjehints foar GTK-programma's." #. default: #: ../../WPrefs.app/Expert.c:50 msgid "Enable workspace pager." msgstr "Skeakelje wurkromtefolger yn." #. default: #: ../../WPrefs.app/Expert.c:53 msgid "Do not set non-WindowMaker specific parameters (do not use xset)." msgstr "Stel gjin net-WindowMaker-spesifike parameters yn (brûk 'xset' net)." #. default: #: ../../WPrefs.app/Expert.c:56 msgid "Automatically save session when exiting Window Maker." msgstr "Bewarje sesje fansels by ôfsluten fan Window Maker." #. default: #: ../../WPrefs.app/Expert.c:59 msgid "Use SaveUnder in window frames, icons, menus and other objects." msgstr "Brûk SaveUnder yn finsteromlisting, ikoanen, menu's en oare objekten." #. default: #: ../../WPrefs.app/Expert.c:62 msgid "Disable confirmation panel for the Kill command." msgstr "Skeakelje befêstigingspaniel foar it kommando 'Deadzje' út." #. default: #: ../../WPrefs.app/Expert.c:65 msgid "Disable selection animation for selected icons." msgstr "Skeakelje seleksje-animaasje foar selektearre ikoanen út." #. default: #: ../../WPrefs.app/Expert.c:68 msgid "Smooth font edges (needs restart)." msgstr "Flakje letterrânen ôf (werstart nedich)." #. default: #: ../../WPrefs.app/Expert.c:71 msgid "Cycle windows only on the active head." msgstr "Wikselje finsters allinnich op 'e aktive kop." #. default: #: ../../WPrefs.app/Expert.c:74 msgid "Ignore minimized windows when cycling." msgstr "Negearje miniaturisearre finsters by wikseljen." #. default: #: ../../WPrefs.app/Expert.c:77 msgid "Show switch panel when cycling windows." msgstr "Toan skeakelpaniel by finsters wikseljen." #. default: #: ../../WPrefs.app/Expert.c:80 msgid "Show workspace title on Clip." msgstr "Toan wurkromtetitel op Klip." #. default: #: ../../WPrefs.app/Expert.c:83 msgid "Highlight the icon of the application when it has the focus." msgstr "Aksintuearje it programma-ikoan, wannear't it fokus hat." #: ../../WPrefs.app/Expert.c:87 msgid "Enable keyboard language switch button in window titlebars." msgstr "Skeakelje toetseboerdtaalknop op finstertitelbalken yn." #: ../../WPrefs.app/Expert.c:91 msgid "Maximize (snap) a window to edge or corner by dragging." msgstr "" "Maksimalisearje (triuw) in finster tsjin kant of hoeke troch ferslepen." #. default: #: ../../WPrefs.app/Expert.c:94 msgid "Distance from edge to begin window snap." msgstr "Ofstân fan kant ôf wêr't finster optriuwen begjint." #. default: #: ../../WPrefs.app/Expert.c:97 msgid "Distance from corner to begin window snap." msgstr "Ofstân fan hoeke ôf wêr't finster optriuwen begjint." #. default: #: ../../WPrefs.app/Expert.c:100 msgid "Snapping a window to the top maximizes it to the full screen." msgstr "Finster triuwen tsjin de boppekant, maksimalisearet it skermfoljend." #. default: #: ../../WPrefs.app/Expert.c:103 msgid "Allow move half-maximized windows between multiple screens." msgstr "Stean ferpleatsen healmaksimalisearre finsters ta tusken skermen." #. default: #: ../../WPrefs.app/Expert.c:106 msgid "Alternative transitions between states for half maximized windows." msgstr "Oare steaten fan oergong foar healmaksimalisearre finsters." #. default: #: ../../WPrefs.app/Expert.c:109 msgid "Move mouse pointer with half maximized windows." msgstr "Ferpleats mûspylk mei healmaksimalisearre finsters." #. default: #: ../../WPrefs.app/Expert.c:112 msgid "Open dialogs in the same workspace as their owners." msgstr "Iepenje dialogen yn deselde wurkromte as har eigeners." #: ../../WPrefs.app/Expert.c:322 msgid "Expert User Preferences" msgstr "Foarkarren foar bedreaune brûkers" #: ../../WPrefs.app/Expert.c:324 msgid "" "Options for people who know what they're doing...\n" "Also has some other misc. options." msgstr "" "Opsjes foar har dy't witte wat se dogge...\n" "Hat teffens alderhande oare opsjes." #: ../../WPrefs.app/Focus.c:75 #, c-format msgid "bad option value %s for option FocusMode. Using default Manual" msgstr "ferkearde opsjewearde %s foar opsje FocusMode. Brûkt standert Manual" #: ../../WPrefs.app/Focus.c:87 #, c-format msgid "bad option value %s for option ColormapMode. Using default Auto" msgstr "ferkearde opsjewearde %s foar opsje ColormapMode. Brûkt standert Auto" #: ../../WPrefs.app/Focus.c:154 ../../WPrefs.app/Icons.c:160 #: ../../WPrefs.app/Icons.c:367 ../../WPrefs.app/Preferences.c:120 #: ../../WPrefs.app/WindowHandling.c:140 ../../WPrefs.app/WindowHandling.c:159 #, c-format msgid "OFF" msgstr "UT" #: ../../WPrefs.app/Focus.c:199 msgid "Input Focus Mode" msgstr "Ynfierfokusmodus" #: ../../WPrefs.app/Focus.c:207 msgid "Manual: Click on the window to set keyboard input focus" msgstr "Hânmjittich: Klik op it finster om toetseboerdynfierfokus te jaan" #: ../../WPrefs.app/Focus.c:213 msgid "Auto: Set keyboard input focus to the window under the mouse pointer" msgstr "" "Fansels: Jou toetseboerd-\n" "ynfierfokus oan it finster ûnder de mûspylk" #: ../../WPrefs.app/Focus.c:226 msgid "Install colormap from the window..." msgstr "Ynstallearje kleurekaart út it finster..." #: ../../WPrefs.app/Focus.c:228 msgid "" "This option is for screens that can display only a limited number\n" "of colors at a time, so they use an indexed table of colors (called\n" "a ColorMap) that each application customizes for its needs, and\n" "WindowMaker will set the global ColorMap dynamically from the\n" "active application.\n" "You can know the capability of your screen in WindowMaker's info\n" "panel as the 'visual'." msgstr "" "Dizze opsje is foar skermen dy't mar in beheind oantal kleuren\n" "tagelyk werjaan kinne. Se brûke in yndeksearre kleuretabel\n" "(ColorMap neamd), dy't troch elk programma oanpast wurdt nei\n" "ferlet, en WindowMaker sil de algemiene kleurekaart dynamysk\n" "ynstelle út it aktive programma.\n" "Jo kinne de mooglikheden fan jo skerm werkenne oan 'e 'visual'\n" "yn WindowMakers Ynfopaniel." #: ../../WPrefs.app/Focus.c:240 msgid "...that has the input focus" msgstr "...dat de ynfierfokus hat" #: ../../WPrefs.app/Focus.c:245 msgid "...that's under the mouse pointer" msgstr "...dat ûnder de mûspylk sit" #: ../../WPrefs.app/Focus.c:254 msgid "Automatic Window Raise Delay" msgstr "Fertraging fansels finsters ferheegjen" #: ../../WPrefs.app/Focus.c:326 msgid "Do not let applications receive the click used to focus windows" msgstr "Lit programma's net de finsterfokusklik ûntfange" #: ../../WPrefs.app/Focus.c:331 msgid "Automatically focus new windows" msgstr "Fokusje nije finsters fansels" #: ../../WPrefs.app/Focus.c:336 msgid "Raise window when switching focus with keyboard" msgstr "Ferheegje finster by fokus wikseljen mei toetseboerd" #: ../../WPrefs.app/Focus.c:352 msgid "Window Focus Preferences" msgstr "Finsterfokusfoarkarren" #: ../../WPrefs.app/Focus.c:353 msgid "Keyboard focus switching policy and related options." msgstr "" "Belied foar toetseboerdfokus wikseljen, en\n" "relatearre opsjes." #: ../../WPrefs.app/FontSimple.c:98 msgid "Window Title" msgstr "Finstertitel" #: ../../WPrefs.app/FontSimple.c:100 msgid "Menu Text" msgstr "Menutekst" #: ../../WPrefs.app/FontSimple.c:101 msgid "Icon Title" msgstr "Ikoantitel" #: ../../WPrefs.app/FontSimple.c:103 msgid "Desktop Caption" msgstr "Buroblêdopskrift" #: ../../WPrefs.app/FontSimple.c:104 msgid "System Font" msgstr "Systeemletter" #: ../../WPrefs.app/FontSimple.c:105 msgid "Bold System Font" msgstr "Systeemletter, fet" #: ../../WPrefs.app/FontSimple.c:660 msgid "Sample Text" msgstr "Foarbyld" #: ../../WPrefs.app/FontSimple.c:677 msgid "Family" msgstr "Famylje" #: ../../WPrefs.app/FontSimple.c:703 msgid "Style" msgstr "Styl" #: ../../WPrefs.app/FontSimple.c:706 msgid "Size" msgstr "Grutte" #: ../../WPrefs.app/FontSimple.c:738 msgid "Font Configuration" msgstr "Lettertypekonfiguraasje" #: ../../WPrefs.app/FontSimple.c:740 msgid "Configure fonts for Window Maker titlebars, menus etc." msgstr "" "Stel lettertypen yn foar Window Maker-titelbalken,\n" "menu's ensfh." #: ../../WPrefs.app/Icons.c:29 msgid "Shrinking/Zooming" msgstr "Krimpe/sûme" #: ../../WPrefs.app/Icons.c:30 msgid "Spinning/Twisting" msgstr "Spinne/draaie" #: ../../WPrefs.app/Icons.c:31 msgid "3D-flipping" msgstr "3D wintelje" #: ../../WPrefs.app/Icons.c:32 ../../WPrefs.app/MouseSettings.c:56 #: ../../WPrefs.app/MouseSettings.c:70 msgid "None" msgstr "Gjin" #: ../../WPrefs.app/Icons.c:184 ../../WPrefs.app/Preferences.c:145 #: ../../WPrefs.app/Preferences.c:159 #, c-format msgid "bad value \"%s\" for option %s, using default \"%s\"" msgstr "ferkearde wearde \"%s\" foar opsje %s, brûkt standert \"%s\"" #: ../../WPrefs.app/Icons.c:226 #, c-format msgid "animation style \"%s\" is unknown, resetting to \"%s\"" msgstr "animaasjestyl \"%s\" is ûnbekend, weromset op \"%s\"" #: ../../WPrefs.app/Icons.c:253 msgid "Icon Positioning" msgstr "Ikoanpleatsing" #: ../../WPrefs.app/Icons.c:332 msgid "Icon Size" msgstr "Ikoangrutte" #: ../../WPrefs.app/Icons.c:334 msgid "The size of the dock/application icon and miniwindows" msgstr "" "De ôfmjittingen fan it dok-/programma-ikoan\n" "en minyfinsters" #: ../../WPrefs.app/Icons.c:351 msgid "Mini-Previews for Icons" msgstr "Miniatueren foar ikoanen" #: ../../WPrefs.app/Icons.c:353 msgid "" "The Mini-Preview provides a small view of the content of the\n" "window when the mouse is placed over the icon." msgstr "" "De miniatuer biedt in lytse blik op 'e ynhâld fan it\n" "finster, as de mûs op it ikoan pleatst wurdt." #: ../../WPrefs.app/Icons.c:375 msgid "Iconification Animation" msgstr "Ikoanifisearringsanimaasje" #: ../../WPrefs.app/Icons.c:399 msgid "Auto-arrange icons" msgstr "Ikoanen fansels skikke" #: ../../WPrefs.app/Icons.c:401 msgid "Keep icons and miniwindows arranged all the time." msgstr "Hâld ikoanen en minyfinsters altiten skikt." #: ../../WPrefs.app/Icons.c:406 msgid "Omnipresent miniwindows" msgstr "Rûnombywêzige minyfinsters" #: ../../WPrefs.app/Icons.c:408 msgid "Make miniwindows be present in all workspaces." msgstr "Meitsje minyfinsters oanwêzich yn alle wurkromten." #: ../../WPrefs.app/Icons.c:413 msgid "Single click activation" msgstr "Inkeldkliksaktivearring" #: ../../WPrefs.app/Icons.c:415 msgid "Launch applications and restore windows with a single click." msgstr "" "Start programma's op, en werstel finsters mei\n" "in inkelde klik." #: ../../WPrefs.app/Icons.c:467 msgid "Icon Preferences" msgstr "Ikoanfoarkarren" #: ../../WPrefs.app/Icons.c:469 msgid "" "Icon/Miniwindow handling options. Icon positioning\n" "area, sizes of icons, miniaturization animation style." msgstr "" "Ikoan-/minyfinster-behannelingsopsjes. Pleatsingsgebiet\n" "en ôfmjittingen fan ikoanen, animaasjestyl by miniaturisearjen." #: ../../WPrefs.app/KeyboardShortcuts.c:72 msgid "Open applications menu" msgstr "Iepenje programmamenu" #: ../../WPrefs.app/KeyboardShortcuts.c:73 msgid "Open window list menu" msgstr "Iepenje finsterlistmenu" #: ../../WPrefs.app/KeyboardShortcuts.c:74 msgid "Open window commands menu" msgstr "Iepenje finsterkommandomenu" #: ../../WPrefs.app/KeyboardShortcuts.c:75 msgid "Hide active application" msgstr "Ferbergje aktyf programma" #: ../../WPrefs.app/KeyboardShortcuts.c:76 msgid "Hide other applications" msgstr "Ferbergje oare programma's" #: ../../WPrefs.app/KeyboardShortcuts.c:77 msgid "Miniaturize active window" msgstr "Miniaturisearje aktyf finster" #: ../../WPrefs.app/KeyboardShortcuts.c:78 msgid "Miniaturize all windows" msgstr "Miniaturisearje alle finsters" #: ../../WPrefs.app/KeyboardShortcuts.c:79 msgid "Close active window" msgstr "Slút aktyf finster" #: ../../WPrefs.app/KeyboardShortcuts.c:80 msgid "Maximize active window" msgstr "Maksimalisearje aktyf finster" #: ../../WPrefs.app/KeyboardShortcuts.c:81 msgid "Maximize active window vertically" msgstr "Maksimalisearje akt. finster fertikaal" #: ../../WPrefs.app/KeyboardShortcuts.c:82 msgid "Maximize active window horizontally" msgstr "Maksimalisearje akt. finster horizontaal" #: ../../WPrefs.app/KeyboardShortcuts.c:83 msgid "Maximize active window left half" msgstr "Maksimalisearje akt. finster lofterhelte" #: ../../WPrefs.app/KeyboardShortcuts.c:84 msgid "Maximize active window right half" msgstr "Maksimalisearje akt. finster rjochterhelte" #: ../../WPrefs.app/KeyboardShortcuts.c:85 msgid "Maximize active window top half" msgstr "Maksimalisearje akt. finster boppehelte" #: ../../WPrefs.app/KeyboardShortcuts.c:86 msgid "Maximize active window bottom half" msgstr "Maksimalisearje akt. finster ûnderhelte" #: ../../WPrefs.app/KeyboardShortcuts.c:87 msgid "Maximize active window left top corner" msgstr "Maksimal. akt. finster lofterboppehoeke" #: ../../WPrefs.app/KeyboardShortcuts.c:88 msgid "Maximize active window right top corner" msgstr "Maksimal. akt. finster rjochterboppehoeke" #: ../../WPrefs.app/KeyboardShortcuts.c:89 msgid "Maximize active window left bottom corner" msgstr "Maksimal. akt. finster lofterûnderhoeke" #: ../../WPrefs.app/KeyboardShortcuts.c:90 msgid "Maximize active window right bottom corner" msgstr "Maksimal. akt. finster rjochterûnderhoeke" #: ../../WPrefs.app/KeyboardShortcuts.c:91 msgid "Maximus: Tiled maximization " msgstr "Maximus: tegelmaksimalisearring " #: ../../WPrefs.app/KeyboardShortcuts.c:92 msgid "Toggle window on top status" msgstr "Skeakelje 'finster boppe-op hâlde' yn/út" #: ../../WPrefs.app/KeyboardShortcuts.c:93 msgid "Toggle window at bottom status" msgstr "Skeakelje 'finster ûnderop hâlde' yn/út" #: ../../WPrefs.app/KeyboardShortcuts.c:94 msgid "Toggle window omnipresent status" msgstr "Skeakelje 'finster rûnombywêzig' yn/út" #: ../../WPrefs.app/KeyboardShortcuts.c:95 msgid "Raise active window" msgstr "Ferheegje aktyf finster" #: ../../WPrefs.app/KeyboardShortcuts.c:96 msgid "Lower active window" msgstr "Ferleegje aktyf finster" #: ../../WPrefs.app/KeyboardShortcuts.c:97 msgid "Raise/Lower window under mouse pointer" msgstr "Ferheegje/ferleegje finster ûnder mûspylk" #: ../../WPrefs.app/KeyboardShortcuts.c:98 msgid "Shade active window" msgstr "Rôlje aktyf finster op" #: ../../WPrefs.app/KeyboardShortcuts.c:99 msgid "Move/Resize active window" msgstr "Ferpleats/fergrutsje aktyf finster" #: ../../WPrefs.app/KeyboardShortcuts.c:100 msgid "Select active window" msgstr "Selektearje aktyf finster" #: ../../WPrefs.app/KeyboardShortcuts.c:101 msgid "Focus next window" msgstr "Fokusje folgjend finster" #: ../../WPrefs.app/KeyboardShortcuts.c:102 msgid "Focus previous window" msgstr "Fokusje foarich finster" #: ../../WPrefs.app/KeyboardShortcuts.c:103 msgid "Focus next group window" msgstr "Fokusje folgjend groepsfinster" #: ../../WPrefs.app/KeyboardShortcuts.c:104 msgid "Focus previous group window" msgstr "Fokusje foarich groepsfinster" #. Workspace Related #: ../../WPrefs.app/KeyboardShortcuts.c:107 msgid "Open workspace pager" msgstr "Iepenje wurkromtefolger" #: ../../WPrefs.app/KeyboardShortcuts.c:108 msgid "Switch to next workspace" msgstr "Skeakelje nei folgjende wurkromte" #: ../../WPrefs.app/KeyboardShortcuts.c:109 msgid "Switch to previous workspace" msgstr "Skeakelje nei foarige wurkromte" #: ../../WPrefs.app/KeyboardShortcuts.c:110 msgid "Switch to last used workspace" msgstr "Skeakelje n. lêst brûkte wurkromte" #: ../../WPrefs.app/KeyboardShortcuts.c:111 msgid "Switch to next ten workspaces" msgstr "Skeakelje 10 wurkromten fierder" #: ../../WPrefs.app/KeyboardShortcuts.c:112 msgid "Switch to previous ten workspaces" msgstr "Skeakelje 10 wurkromten werom" #: ../../WPrefs.app/KeyboardShortcuts.c:113 msgid "Switch to workspace 1" msgstr "Skeakelje nei wurkromte 1" #: ../../WPrefs.app/KeyboardShortcuts.c:114 msgid "Switch to workspace 2" msgstr "Skeakelje nei wurkromte 2" #: ../../WPrefs.app/KeyboardShortcuts.c:115 msgid "Switch to workspace 3" msgstr "Skeakelje nei wurkromte 3" #: ../../WPrefs.app/KeyboardShortcuts.c:116 msgid "Switch to workspace 4" msgstr "Skeakelje nei wurkromte 4" #: ../../WPrefs.app/KeyboardShortcuts.c:117 msgid "Switch to workspace 5" msgstr "Skeakelje nei wurkromte 5" #: ../../WPrefs.app/KeyboardShortcuts.c:118 msgid "Switch to workspace 6" msgstr "Skeakelje nei wurkromte 6" #: ../../WPrefs.app/KeyboardShortcuts.c:119 msgid "Switch to workspace 7" msgstr "Skeakelje nei wurkromte 7" #: ../../WPrefs.app/KeyboardShortcuts.c:120 msgid "Switch to workspace 8" msgstr "Skeakelje nei wurkromte 8" #: ../../WPrefs.app/KeyboardShortcuts.c:121 msgid "Switch to workspace 9" msgstr "Skeakelje nei wurkromte 9" #: ../../WPrefs.app/KeyboardShortcuts.c:122 msgid "Switch to workspace 10" msgstr "Skeakelje nei wurkromte 10" #: ../../WPrefs.app/KeyboardShortcuts.c:123 msgid "Move window to next workspace" msgstr "Ferpl. finster n. folgjende wurkromte" #: ../../WPrefs.app/KeyboardShortcuts.c:124 msgid "Move window to previous workspace" msgstr "Ferpl. finster n. foarige wurkromte" #: ../../WPrefs.app/KeyboardShortcuts.c:125 msgid "Move window to last used workspace" msgstr "Ferpl. finster n. lêst brûkte wurkr." #: ../../WPrefs.app/KeyboardShortcuts.c:126 msgid "Move window to next ten workspaces" msgstr "Ferpl. finster 10 wurkromten fierder" #: ../../WPrefs.app/KeyboardShortcuts.c:127 msgid "Move window to previous ten workspaces" msgstr "Ferpl. finster 10 wurkromten werom" #: ../../WPrefs.app/KeyboardShortcuts.c:128 msgid "Move window to workspace 1" msgstr "Ferpleats finster nei wurkromte 1" #: ../../WPrefs.app/KeyboardShortcuts.c:129 msgid "Move window to workspace 2" msgstr "Ferpleats finster nei wurkromte 2" #: ../../WPrefs.app/KeyboardShortcuts.c:130 msgid "Move window to workspace 3" msgstr "Ferpleats finster nei wurkromte 3" #: ../../WPrefs.app/KeyboardShortcuts.c:131 msgid "Move window to workspace 4" msgstr "Ferpleats finster nei wurkromte 4" #: ../../WPrefs.app/KeyboardShortcuts.c:132 msgid "Move window to workspace 5" msgstr "Ferpleats finster nei wurkromte 5" #: ../../WPrefs.app/KeyboardShortcuts.c:133 msgid "Move window to workspace 6" msgstr "Ferpleats finster nei wurkromte 6" #: ../../WPrefs.app/KeyboardShortcuts.c:134 msgid "Move window to workspace 7" msgstr "Ferpleats finster nei wurkromte 7" #: ../../WPrefs.app/KeyboardShortcuts.c:135 msgid "Move window to workspace 8" msgstr "Ferpleats finster nei wurkromte 8" #: ../../WPrefs.app/KeyboardShortcuts.c:136 msgid "Move window to workspace 9" msgstr "Ferpleats finster nei wurkromte 9" #: ../../WPrefs.app/KeyboardShortcuts.c:137 msgid "Move window to workspace 10" msgstr "Ferpleats finster nei wurkromte 10" #. Window Selection #: ../../WPrefs.app/KeyboardShortcuts.c:140 msgid "Shortcut for window 1" msgstr "Fluchtoets foar finster 1" #: ../../WPrefs.app/KeyboardShortcuts.c:141 msgid "Shortcut for window 2" msgstr "Fluchtoets foar finster 2" #: ../../WPrefs.app/KeyboardShortcuts.c:142 msgid "Shortcut for window 3" msgstr "Fluchtoets foar finster 3" #: ../../WPrefs.app/KeyboardShortcuts.c:143 msgid "Shortcut for window 4" msgstr "Fluchtoets foar finster 4" #: ../../WPrefs.app/KeyboardShortcuts.c:144 msgid "Shortcut for window 5" msgstr "Fluchtoets foar finster 5" #: ../../WPrefs.app/KeyboardShortcuts.c:145 msgid "Shortcut for window 6" msgstr "Fluchtoets foar finster 6" #: ../../WPrefs.app/KeyboardShortcuts.c:146 msgid "Shortcut for window 7" msgstr "Fluchtoets foar finster 7" #: ../../WPrefs.app/KeyboardShortcuts.c:147 msgid "Shortcut for window 8" msgstr "Fluchtoets foar finster 8" #: ../../WPrefs.app/KeyboardShortcuts.c:148 msgid "Shortcut for window 9" msgstr "Fluchtoets foar finster 9" #: ../../WPrefs.app/KeyboardShortcuts.c:149 msgid "Shortcut for window 10" msgstr "Fluchtoets foar finster 10" #. Misc. #: ../../WPrefs.app/KeyboardShortcuts.c:152 msgid "Launch new instance of application" msgstr "Start nij eksimplaar fan programma op" #: ../../WPrefs.app/KeyboardShortcuts.c:153 msgid "Switch to Next Screen/Monitor" msgstr "Skeakelje nei folgjend skerm/monitor" #: ../../WPrefs.app/KeyboardShortcuts.c:154 msgid "Run application" msgstr "Fier programma út" #: ../../WPrefs.app/KeyboardShortcuts.c:155 msgid "Raise/Lower Dock" msgstr "Ferheegje/ferleegje Dok" #: ../../WPrefs.app/KeyboardShortcuts.c:156 msgid "Raise/Lower Clip" msgstr "Ferheegje/ferleegje Klip" #: ../../WPrefs.app/KeyboardShortcuts.c:158 msgid "Toggle keyboard language" msgstr "Wikselje toetseboerdtaal" #: ../../WPrefs.app/KeyboardShortcuts.c:375 ../../WPrefs.app/Menu.c:275 #: ../../WPrefs.app/TexturePanel.c:1425 msgid "Cancel" msgstr "Annulearje" #: ../../WPrefs.app/KeyboardShortcuts.c:377 msgid "Press the desired shortcut key(s) or click Cancel to stop capturing." msgstr "" "Druk op 'e winske fluchtoets(en), of klik Annulearje om it opnimmen te " "stopjen." #: ../../WPrefs.app/KeyboardShortcuts.c:396 #: ../../WPrefs.app/KeyboardShortcuts.c:566 ../../WPrefs.app/Menu.c:285 #: ../../WPrefs.app/Menu.c:733 msgid "Capture" msgstr "Opnimme" #: ../../WPrefs.app/KeyboardShortcuts.c:397 #: ../../WPrefs.app/KeyboardShortcuts.c:574 msgid "Click on Capture to interactively define the shortcut key." msgstr "Klik op Opnimme om ynteraktyf de fluchtoets fêst te stellen." #: ../../WPrefs.app/KeyboardShortcuts.c:523 msgid "Actions" msgstr "Aksjes" #: ../../WPrefs.app/KeyboardShortcuts.c:550 msgid "Shortcut" msgstr "Fluchtoets" #: ../../WPrefs.app/KeyboardShortcuts.c:560 ../../WPrefs.app/Menu.c:739 msgid "Clear" msgstr "Wiskje" #: ../../WPrefs.app/KeyboardShortcuts.c:615 msgid "Keyboard Shortcut Preferences" msgstr "Fluchtoetsfoarkarren" #: ../../WPrefs.app/KeyboardShortcuts.c:617 msgid "" "Change the keyboard shortcuts for actions such\n" "as changing workspaces and opening menus." msgstr "" "Wizigje de fluchtoetsen foar aksjes, sa as fan\n" "wurkromte wikseljen en menu's iepenjen." #: ../../WPrefs.app/Menu.c:251 msgid "Select Program" msgstr "Kies programma" #: ../../WPrefs.app/Menu.c:413 msgid "New Items" msgstr "Nije ûnderdielen" #: ../../WPrefs.app/Menu.c:414 msgid "Sample Commands" msgstr "Foarbyldkommando's" #: ../../WPrefs.app/Menu.c:415 msgid "Sample Submenus" msgstr "Foarbyldmenu's" #: ../../WPrefs.app/Menu.c:427 msgid "Run Program" msgstr "Programma útfiere" #: ../../WPrefs.app/Menu.c:428 msgid "Internal Command" msgstr "Yntern kommando" #: ../../WPrefs.app/Menu.c:429 msgid "Submenu" msgstr "Submenu" #: ../../WPrefs.app/Menu.c:430 msgid "External Submenu" msgstr "Ekstern submenu" #: ../../WPrefs.app/Menu.c:431 msgid "Generated Submenu" msgstr "Oanmakke submenu" #: ../../WPrefs.app/Menu.c:432 msgid "Generated PL Menu" msgstr "Oanmakke PL-menu" #: ../../WPrefs.app/Menu.c:433 msgid "Directory Contents" msgstr "Mapynhâld" #: ../../WPrefs.app/Menu.c:434 msgid "Workspace Menu" msgstr "Wurkromtenmenu" #: ../../WPrefs.app/Menu.c:435 ../../WPrefs.app/MouseSettings.c:58 msgid "Window List Menu" msgstr "Finsterlistmenu" #: ../../WPrefs.app/Menu.c:454 msgid "XTerm" msgstr "" #: ../../WPrefs.app/Menu.c:457 msgid "rxvt" msgstr "" #: ../../WPrefs.app/Menu.c:460 msgid "ETerm" msgstr "" #: ../../WPrefs.app/Menu.c:463 msgid "Run..." msgstr "Utfiere..." #: ../../WPrefs.app/Menu.c:464 #, c-format msgid "%A(Run,Type command to run)" msgstr "%A(Utfiere,Typ út te fieren kommando)" #: ../../WPrefs.app/Menu.c:466 msgid "Firefox" msgstr "" #: ../../WPrefs.app/Menu.c:469 msgid "gimp" msgstr "" #: ../../WPrefs.app/Menu.c:472 msgid "epic" msgstr "" #: ../../WPrefs.app/Menu.c:475 msgid "ee" msgstr "" #: ../../WPrefs.app/Menu.c:478 msgid "xv" msgstr "" #: ../../WPrefs.app/Menu.c:481 msgid "Evince" msgstr "" #: ../../WPrefs.app/Menu.c:484 msgid "ghostview" msgstr "" #: ../../WPrefs.app/Menu.c:487 ../../WPrefs.app/Menu.c:758 msgid "Exit Window Maker" msgstr "Window Maker ôfslute" #: ../../WPrefs.app/Menu.c:509 msgid "Debian Menu" msgstr "Debian-menu" #: ../../WPrefs.app/Menu.c:512 msgid "RedHat Menu" msgstr "RedHat-menu" #: ../../WPrefs.app/Menu.c:515 msgid "Menu Conectiva" msgstr "Conectiva-menu" #: ../../WPrefs.app/Menu.c:518 msgid "Themes" msgstr "Tema's" #: ../../WPrefs.app/Menu.c:524 msgid "Bg Images (scale)" msgstr "Eftergrûn (skaal)" #: ../../WPrefs.app/Menu.c:530 msgid "Bg Images (tile)" msgstr "Eftergrûn (tegel)" #: ../../WPrefs.app/Menu.c:536 msgid "Assorted XTerms" msgstr "Alderhande XTerms" #: ../../WPrefs.app/Menu.c:538 msgid "XTerm Yellow on Blue" msgstr "XTerm giel op blau" #: ../../WPrefs.app/Menu.c:541 msgid "XTerm White on Black" msgstr "XTerm wyt op swart" #: ../../WPrefs.app/Menu.c:544 msgid "XTerm Black on White" msgstr "XTerm swart op wyt" #: ../../WPrefs.app/Menu.c:547 msgid "XTerm Black on Beige" msgstr "XTerm swart op bêzje" #: ../../WPrefs.app/Menu.c:550 msgid "XTerm White on Green" msgstr "XTerm wyt op grien" #: ../../WPrefs.app/Menu.c:553 msgid "XTerm White on Olive" msgstr "XTerm wyt op oliifgrien" #: ../../WPrefs.app/Menu.c:556 msgid "XTerm Blue on Blue" msgstr "XTerm blau op blau" #: ../../WPrefs.app/Menu.c:559 msgid "XTerm BIG FONTS" msgstr "XTerm GRUTTE LETTERS" #: ../../WPrefs.app/Menu.c:580 msgid "Program to Run" msgstr "Ut te fieren programma" #: ../../WPrefs.app/Menu.c:590 msgid "Browse" msgstr "Blêdzje" #: ../../WPrefs.app/Menu.c:599 msgid "Run the program inside a Xterm" msgstr "Fier it programma út yn in XTerm" #: ../../WPrefs.app/Menu.c:608 msgid "Path for Menu" msgstr "Paad nei menu" #: ../../WPrefs.app/Menu.c:619 msgid "" "Enter the path for a file containing a menu\n" "or a list of directories with the programs you\n" "want to have listed in the menu. Ex:\n" "~/GNUstep/Library/WindowMaker/menu\n" "or\n" "/usr/bin ~/xbin" msgstr "" "Fier it paad yn nei in bestân dat in menu befettet,\n" "of in list fan mappen mei de programma's dy't jo\n" "fermeld hawwe wolle yn it menu. Fb.:\n" "~/GNUstep/Library/WindowMaker/menu\n" "of\n" "/usr/bin ~/xbin" #: ../../WPrefs.app/Menu.c:631 ../../WPrefs.app/Menu.c:656 msgid "Command" msgstr "Kommando" #: ../../WPrefs.app/Menu.c:642 msgid "" "Enter a command that outputs a menu\n" "definition to stdout when invoked." msgstr "" "Fier in kommando yn, dat by oanroppen\n" "in útwurke menu jout nei 'stdout'." #: ../../WPrefs.app/Menu.c:647 ../../WPrefs.app/Menu.c:672 msgid "" "Cache menu contents after opening for\n" "the first time" msgstr "" "Bewarje menuynhâld nei de earste kear\n" "iepenjen" #: ../../WPrefs.app/Menu.c:667 msgid "" "Enter a command that outputs a proplist menu\n" "definition to stdout when invoked." msgstr "" "Fier in kommando yn, dat by oanroppen\n" "in útwurke 'property list'-menu jout\n" "nei 'stdout'." #: ../../WPrefs.app/Menu.c:681 msgid "Command to Open Files" msgstr "Kommando om bestannen te iepenjen" #: ../../WPrefs.app/Menu.c:692 msgid "" "Enter the command you want to use to open the\n" "files in the directories listed below." msgstr "" "Fier it te brûken kommando yn, om 'e\n" "bestannen yn ûndersteande mappen te iepenjen." #: ../../WPrefs.app/Menu.c:700 msgid "Directories with Files" msgstr "Mappen mei bestannen" #: ../../WPrefs.app/Menu.c:711 msgid "Strip extensions from file names" msgstr "Ekstinsjes fan bestânsnammen ôf helje" #: ../../WPrefs.app/Menu.c:722 msgid "Keyboard Shortcut" msgstr "Fluchtoets" #: ../../WPrefs.app/Menu.c:754 msgid "Arrange Icons" msgstr "Ikoanen skikke" #: ../../WPrefs.app/Menu.c:755 msgid "Hide All Windows Except For The Focused One" msgstr "Alle finsters ferbergje, útsein dy't fokus hat" #: ../../WPrefs.app/Menu.c:756 msgid "Show All Windows" msgstr "Alle finsters toane" #: ../../WPrefs.app/Menu.c:759 msgid "Exit X Session" msgstr "X-sesje ôfslute" #: ../../WPrefs.app/Menu.c:760 msgid "Restart Window Maker" msgstr "Window Maker werstarte" #: ../../WPrefs.app/Menu.c:761 msgid "Start Another Window Manager : (" msgstr "Oare finsterbehearder starte : (" #: ../../WPrefs.app/Menu.c:763 msgid "Save Current Session" msgstr "Hjoeddeiske sesje bewarje" #: ../../WPrefs.app/Menu.c:764 msgid "Clear Saved Session" msgstr "Bewarre sesje wiskje" #: ../../WPrefs.app/Menu.c:765 msgid "Refresh Screen" msgstr "Skerm fernije" #: ../../WPrefs.app/Menu.c:766 msgid "Open Info Panel" msgstr "Ynfopaniel iepenje" #: ../../WPrefs.app/Menu.c:767 msgid "Open Copyright Panel" msgstr "Auteursrjochtenpaniel iepenje" #: ../../WPrefs.app/Menu.c:772 msgid "Window Manager to Start" msgstr "Te starten finsterbehearder" #: ../../WPrefs.app/Menu.c:785 msgid "Do not confirm action." msgstr "Aksje net befêstigje." #: ../../WPrefs.app/Menu.c:792 msgid "" "Instructions:\n" "\n" " - drag items from the left to the menu to add new items\n" " - drag items out of the menu to remove items\n" " - drag items in menu to change their position\n" " - drag items with Control pressed to copy them\n" " - double click in a menu item to change the label\n" " - click on a menu item to change related information" msgstr "" "Ynstruksjes:\n" "\n" "Fersleep ûnderdielen...\n" " ...fan lofts nei it menu, om nije yngongen ta te foegjen.\n" " ...út it menu, om se te ferwiderjen.\n" " ...binnen it menu, om har plak te feroarjen.\n" " ...mei Control yndrukt, om se te kopiearjen.\n" "(Dûbeld)klik op in menuyngong, om...\n" " ...de beneaming te wizigjen.\n" " ...relatearre ynformaasje te wizigjen." #: ../../WPrefs.app/Menu.c:1031 #, c-format msgid "unknown command '%s' in menu" msgstr "ûnbekend kommando '%s' yn menu" #: ../../WPrefs.app/Menu.c:1055 msgid ": Execute Program" msgstr ": start programma" #: ../../WPrefs.app/Menu.c:1059 msgid ": Perform Internal Command" msgstr ": fier yntern kommando út" #: ../../WPrefs.app/Menu.c:1063 msgid ": Open a Submenu" msgstr ": iepenje in submenu" #: ../../WPrefs.app/Menu.c:1067 msgid ": Program Generated Submenu" msgstr ": submenu út programma" #: ../../WPrefs.app/Menu.c:1071 msgid ": Program Generated Proplist Submenu" msgstr ": PropList-submenu út programma" #: ../../WPrefs.app/Menu.c:1075 msgid ": Directory Contents Menu" msgstr ": menu mei mapynhâld" #: ../../WPrefs.app/Menu.c:1079 msgid ": Open Workspaces Submenu" msgstr ": iepenje wurkromtensubmenu" #: ../../WPrefs.app/Menu.c:1083 msgid ": Open Window List Submenu" msgstr ": iepenje finsterlistsubmenu" #: ../../WPrefs.app/Menu.c:1299 msgid "Remove Submenu" msgstr "Submenu ferwiderje" #: ../../WPrefs.app/Menu.c:1300 msgid "" "Removing this item will destroy all items inside\n" "the submenu. Do you really want to do that?" msgstr "" "Dit ûnderdiel ferwiderjen, sil alle yngongen yn it\n" "submenu ferneatigje. Wolle jo dat echt dwaan?" #: ../../WPrefs.app/Menu.c:1302 msgid "Yes" msgstr "Ja" #: ../../WPrefs.app/Menu.c:1302 msgid "No" msgstr "Nee" #: ../../WPrefs.app/Menu.c:1302 msgid "Yes, don't ask again" msgstr "Ja, freegje net wer" #: ../../WPrefs.app/Menu.c:1440 #, c-format msgid "Invalid menu command \"%s\" with label \"%s\" cleared" msgstr "Unjildich menukommando \"%s\" mei label \"%s\" leech" #: ../../WPrefs.app/Menu.c:1443 ../../WPrefs.app/Menu.c:1522 #: ../../WPrefs.app/Menu.c:1537 ../../WPrefs.app/WPrefs.c:668 msgid "Warning" msgstr "Warskôging" #: ../../WPrefs.app/Menu.c:1443 ../../WPrefs.app/Menu.c:1476 #: ../../WPrefs.app/Menu.c:1523 ../../WPrefs.app/MouseSettings.c:156 #: ../../WPrefs.app/MouseSettings.c:176 ../../WPrefs.app/TexturePanel.c:585 #: ../../WPrefs.app/TexturePanel.c:663 ../../WPrefs.app/TexturePanel.c:1419 #: ../../WPrefs.app/WPrefs.c:617 ../../WPrefs.app/WPrefs.c:621 #: ../../WPrefs.app/WPrefs.c:641 ../../WPrefs.app/WPrefs.c:653 #: ../../WPrefs.app/WPrefs.c:659 ../../WPrefs.app/WPrefs.c:668 #: ../../WPrefs.app/WPrefs.c:699 ../../WPrefs.app/WPrefs.c:703 msgid "OK" msgstr "OK" #: ../../WPrefs.app/Menu.c:1472 #, c-format msgid "Could not open default menu from '%s'" msgstr "Koe standertmenu net iepenje út '%s'" #: ../../WPrefs.app/Menu.c:1476 ../../WPrefs.app/MouseSettings.c:154 #: ../../WPrefs.app/MouseSettings.c:173 ../../WPrefs.app/TexturePanel.c:585 #: ../../WPrefs.app/TexturePanel.c:661 ../../WPrefs.app/WPrefs.c:617 #: ../../WPrefs.app/WPrefs.c:621 ../../WPrefs.app/WPrefs.c:638 #: ../../WPrefs.app/WPrefs.c:649 ../../WPrefs.app/WPrefs.c:659 #: ../../WPrefs.app/WPrefs.c:699 ../../WPrefs.app/WPrefs.c:703 msgid "Error" msgstr "Flater" #: ../../WPrefs.app/Menu.c:1516 #, c-format msgid "" "The menu file \"%s\" referenced by WMRootMenu is read-only.\n" "You cannot use WPrefs to modify it." msgstr "" "Menubestân \"%s\" ferwiisd troch WMRootMenu is allinnich-lêze.\n" "Jo kinne WPrefs net brûke om it te wizigjen." #: ../../WPrefs.app/Menu.c:1538 msgid "" "The menu file format currently in use is not supported\n" "by this tool. Do you want to discard the current menu\n" "to use this tool?" msgstr "" "De no brûkte menubestânsfoarm wurdt net stipe\n" "troch dit helpmiddel. Wolle jo it hjoeddeiske menu fersmite,\n" "om dit helpmiddel te brûken?" #: ../../WPrefs.app/Menu.c:1541 msgid "Yes, Discard and Update" msgstr "Ja, fersmiet, wurkje by" #: ../../WPrefs.app/Menu.c:1541 msgid "No, Keep Current Menu" msgstr "Nee, behâld hjoeddeisk menu" #: ../../WPrefs.app/Menu.c:1558 #, c-format msgid "" "\n" "\n" "When saved, the menu will be written to the file\n" "\"%s\"." msgstr "" "\n" "\n" "By bewarjen wurdt it menu skreaun nei it bestân\n" "\"%s\"." #: ../../WPrefs.app/Menu.c:1795 msgid "Applications Menu Definition" msgstr "Programmamenu fêststelle" #: ../../WPrefs.app/Menu.c:1797 msgid "Edit the menu for launching applications." msgstr "Bewurkje it menu foar programma's opstarten." #: ../../WPrefs.app/MenuPreferences.c:105 msgid "Menu Scrolling Speed" msgstr "Menuskofaasje" #: ../../WPrefs.app/MenuPreferences.c:153 msgid "Submenu Alignment" msgstr "Submenurjochting" #: ../../WPrefs.app/MenuPreferences.c:197 msgid "Always open submenus inside the screen, instead of scrolling." msgstr "Iepenje submenu's altiten binnen it skerm, yn plak fan skowen." #: ../../WPrefs.app/MenuPreferences.c:202 msgid "Scroll off-screen menus when pointer is moved over them." msgstr "Ferskow menu's fan bûten it skerm, as mûspylk deroer beweecht." #: ../../WPrefs.app/MenuPreferences.c:206 msgid "Use h/j/k/l keys to select menu options." msgstr "Brûk h/j/k/l-toetsen om menu-opsjes te selektearjen." #: ../../WPrefs.app/MenuPreferences.c:222 msgid "Menu Preferences" msgstr "Menufoarkarren" #: ../../WPrefs.app/MenuPreferences.c:224 msgid "" "Menu usability related options. Scrolling speed,\n" "alignment of submenus etc." msgstr "" "Menugebrûkrelatearre opsjes. Skofaasje,\n" "rjochting fan submenu's ensfh." #: ../../WPrefs.app/MouseSettings.c:43 msgid "Left Button" msgstr "Lofterknop" #: ../../WPrefs.app/MouseSettings.c:44 msgid "Middle Button" msgstr "Middenknop" #: ../../WPrefs.app/MouseSettings.c:45 msgid "Right Button" msgstr "Rjochterknop" #: ../../WPrefs.app/MouseSettings.c:46 msgid "Back Button" msgstr "Efterútknop" #: ../../WPrefs.app/MouseSettings.c:47 msgid "Forward Button" msgstr "Foarútknop" #: ../../WPrefs.app/MouseSettings.c:48 msgid "Mouse Wheel" msgstr "Mûstsjil" #: ../../WPrefs.app/MouseSettings.c:49 msgid "Mouse Wheel Tilt" msgstr "Mûstsjilkanteling" #: ../../WPrefs.app/MouseSettings.c:57 msgid "Applications Menu" msgstr "Programmamenu" #: ../../WPrefs.app/MouseSettings.c:59 msgid "Select Windows" msgstr "Finsters selektearje" #: ../../WPrefs.app/MouseSettings.c:60 msgid "Previous Workspace" msgstr "Foarige wurkromte" #: ../../WPrefs.app/MouseSettings.c:61 msgid "Next Workspace" msgstr "Folgjende wurkromte" #: ../../WPrefs.app/MouseSettings.c:62 msgid "Previous Window" msgstr "Foarich finster" #: ../../WPrefs.app/MouseSettings.c:63 msgid "Next Window" msgstr "Folgjend finster" #: ../../WPrefs.app/MouseSettings.c:71 msgid "Switch Workspaces" msgstr "Wurkromte wikselje" #: ../../WPrefs.app/MouseSettings.c:72 msgid "Switch Windows" msgstr "Finster wikselje" #: ../../WPrefs.app/MouseSettings.c:155 msgid "Invalid mouse acceleration value. Must be a positive real value." msgstr "Unjildige mûsfersnellingswearde. Moat in positive reële wearde wêze." #: ../../WPrefs.app/MouseSettings.c:175 msgid "" "Invalid mouse acceleration threshold value. Must be the number of pixels to " "travel before accelerating." msgstr "" "Unjildige drompelwearde mûsfersnelling. Moat it oantal pixels om te " "ferpleatsen wêze, alear't te fersnellen." #: ../../WPrefs.app/MouseSettings.c:284 #, c-format msgid "bad value %s for option %s" msgstr "ferkearde wearde %s foar opsje %s" #: ../../WPrefs.app/MouseSettings.c:343 #, c-format msgid "" "modifier key %s for option ModifierKey was not recognized. Using %s as " "default" msgstr "" "modifikatortoets %s foar opsje ModifierKey wurdt net werkend. Brûkt %s as " "standert" #: ../../WPrefs.app/MouseSettings.c:364 msgid "could not retrieve keyboard modifier mapping" msgstr "koe beskriuwing modifikatortoets net ophelje" #: ../../WPrefs.app/MouseSettings.c:458 msgid "Mouse Speed" msgstr "Mûsfaasje" #: ../../WPrefs.app/MouseSettings.c:471 ../../WPrefs.app/WPrefs.c:408 #: ../../WPrefs.app/WPrefs.c:424 ../../WPrefs.app/WindowHandling.c:372 #: ../../WPrefs.app/WindowHandling.c:423 ../../WPrefs.app/WindowHandling.c:435 #: ../../WPrefs.app/WindowHandling.c:454 ../../WPrefs.app/WindowHandling.c:466 #, c-format msgid "could not load icon %s" msgstr "koe ikoan %s net lade" #: ../../WPrefs.app/MouseSettings.c:488 msgid "Accel.:" msgstr "Fersnl.:" #: ../../WPrefs.app/MouseSettings.c:499 msgid "Threshold:" msgstr "Drompel:" #: ../../WPrefs.app/MouseSettings.c:512 msgid "Mouse Grab Modifier" msgstr "Grypmodifikator foar mûs" #: ../../WPrefs.app/MouseSettings.c:514 msgid "" "Keyboard modifier to use for actions that\n" "involve dragging windows with the mouse,\n" "clicking inside the window." msgstr "" "Te brûken modifikatortoets, foar aksjes\n" "wat finsters ferslepen mei de mûs, en\n" "klikken binnen it finster oanbelanget." #: ../../WPrefs.app/MouseSettings.c:530 msgid "Double-Click Delay" msgstr "Dûbeldklikfertraging" #: ../../WPrefs.app/MouseSettings.c:573 msgid "Test" msgstr "Test" #: ../../WPrefs.app/MouseSettings.c:604 msgid "Workspace Mouse Actions" msgstr "Mûsaksjes yn wurkromte" #: ../../WPrefs.app/MouseSettings.c:609 msgid "Disable mouse actions" msgstr "Mûsaksjes útskeakelje" #: ../../WPrefs.app/MouseSettings.c:659 #, c-format msgid "could not create %s" msgstr "koe %s net oanmeitsje" #: ../../WPrefs.app/MouseSettings.c:674 #, c-format msgid "could not create temporary file %s" msgstr "koe tydlik bestân %s net oanmeitsje" #: ../../WPrefs.app/MouseSettings.c:707 #, c-format msgid "could not rename file %s to %s" msgstr "koe bestân %s net omneame nei %s" #: ../../WPrefs.app/MouseSettings.c:712 #, c-format msgid "could not set permission 0%03o on file \"%s\"" msgstr "koe tastimming 0%03o net ynstelle op bestân \"%s\"" #: ../../WPrefs.app/MouseSettings.c:776 msgid "Shift" msgstr "Shift" #: ../../WPrefs.app/MouseSettings.c:777 msgid "Lock" msgstr "Lock" #: ../../WPrefs.app/MouseSettings.c:778 msgid "Control" msgstr "Control" #: ../../WPrefs.app/MouseSettings.c:779 msgid "Mod1" msgstr "Mod1" #: ../../WPrefs.app/MouseSettings.c:780 msgid "Mod2" msgstr "Mod2" #: ../../WPrefs.app/MouseSettings.c:781 msgid "Mod3" msgstr "Mod3" #: ../../WPrefs.app/MouseSettings.c:782 msgid "Mod4" msgstr "Mod4" #: ../../WPrefs.app/MouseSettings.c:783 msgid "Mod5" msgstr "Mod5" #: ../../WPrefs.app/MouseSettings.c:787 msgid "Mouse Preferences" msgstr "Mûsfoarkarren" #: ../../WPrefs.app/MouseSettings.c:789 msgid "" "Mouse speed/acceleration, double click delay,\n" "mouse button bindings etc." msgstr "" "Mûsfaasje/-fersnelling, dûbeldklikfertraging,\n" "mûsknopbiningen ensfh." #: ../../WPrefs.app/Paths.c:78 msgid "bad value in option IconPath. Using default path list" msgstr "ferkearde wearde yn opsje IconPath. Brûkt standertpadelist" #: ../../WPrefs.app/Paths.c:95 msgid "bad value in option PixmapPath. Using default path list" msgstr "ferkearde wearde yn opsje PixmapPath. Brûkt standertpadelist" #: ../../WPrefs.app/Paths.c:140 msgid "Select directory" msgstr "Kies map" #: ../../WPrefs.app/Paths.c:250 msgid "Icon Search Paths" msgstr "Ikoansykpaden" #: ../../WPrefs.app/Paths.c:261 ../../WPrefs.app/Paths.c:292 #: ../../WPrefs.app/TexturePanel.c:1212 msgid "Add" msgstr "Tafoegje" #: ../../WPrefs.app/Paths.c:268 ../../WPrefs.app/Paths.c:299 msgid "Remove" msgstr "Ferwiderje" #: ../../WPrefs.app/Paths.c:281 msgid "Pixmap Search Paths" msgstr "Pixmapsykpaden" #: ../../WPrefs.app/Paths.c:316 msgid "Search Path Configuration" msgstr "Sykpadekonfiguraasje" #: ../../WPrefs.app/Paths.c:318 msgid "" "Search paths to use when looking for pixmaps\n" "and icons." msgstr "" "Te brûken sykpaden by sykjen nei 'pixmaps'\n" "en ikoanen." #: ../../WPrefs.app/Preferences.c:30 ../../WPrefs.app/Preferences.c:42 msgid "Corner of screen" msgstr "Skermhoeke" #: ../../WPrefs.app/Preferences.c:31 ../../WPrefs.app/Preferences.c:43 msgid "Center of screen" msgstr "Skermmidden" #: ../../WPrefs.app/Preferences.c:32 ../../WPrefs.app/Preferences.c:44 msgid "Center of resized window" msgstr "Midden fan fergrut finster" #: ../../WPrefs.app/Preferences.c:33 msgid "Technical drawing-like" msgstr "Technysketekeningachtich" #: ../../WPrefs.app/Preferences.c:34 ../../WPrefs.app/Preferences.c:45 msgid "Disabled" msgstr "Utskeakele" #: ../../WPrefs.app/Preferences.c:53 msgid "incomplete window titles" msgstr "ûnfolsleine finstertitels" #: ../../WPrefs.app/Preferences.c:54 msgid "miniwindow titles" msgstr "minyfinster-titels" #: ../../WPrefs.app/Preferences.c:55 msgid "application/dock icons" msgstr "programma-/dokikoanen" #: ../../WPrefs.app/Preferences.c:56 msgid "internal help" msgstr "ynterne help" #: ../../WPrefs.app/Preferences.c:65 msgid "Disable AppIcon bounce" msgstr "Skeakelje stuiterjen ikoan út" #: ../../WPrefs.app/Preferences.c:66 msgid "By default, the AppIcon bounces when the application is launched" msgstr "" "Standert stuiteret it programma-ikoan,\n" "wannear't it programma opstart wurdt." #: ../../WPrefs.app/Preferences.c:68 msgid "Bounce when the application wants attention" msgstr "Stuiterje as it programma oandacht wol" #: ../../WPrefs.app/Preferences.c:71 msgid "Raise AppIcon when bouncing" msgstr "Ferheegje ikoan by stuiterjen" #: ../../WPrefs.app/Preferences.c:72 msgid "" "Otherwise you will not see it bouncing if\n" "there is a window in front of the AppIcon" msgstr "" "Oars sille jo it net stuiterje sjen, as der\n" "in finster foar it programma-ikoan sit." #: ../../WPrefs.app/Preferences.c:122 #, c-format msgid "1 pixel" msgstr "1 pixel" #. 2-4 #: ../../WPrefs.app/Preferences.c:125 #, c-format msgid "%i pixels" msgstr "%i pixels" #. >4 #: ../../WPrefs.app/Preferences.c:128 #, c-format msgid "%i pixels " msgstr "%i pixels " #: ../../WPrefs.app/Preferences.c:236 msgid "Size Display" msgstr "Ofmjittingewerjefte" #: ../../WPrefs.app/Preferences.c:238 msgid "" "The position or style of the window size\n" "display that's shown when a window is resized." msgstr "" "De plak of styl fan 'e finsterôfmjittingewerjefte,\n" "dy't toand wurdt as in finster fergrutte wurdt." #: ../../WPrefs.app/Preferences.c:253 msgid "Position Display" msgstr "Posysjewerjefte" #: ../../WPrefs.app/Preferences.c:255 msgid "" "The position or style of the window position\n" "display that's shown when a window is moved." msgstr "" "De plak of styl fan 'e finsterposysjewerjefte,\n" "dy't toand wurdt as in finster ferpleatst wurdt." #: ../../WPrefs.app/Preferences.c:270 msgid "Show balloon for..." msgstr "Toan ballon foar..." #: ../../WPrefs.app/Preferences.c:285 msgid "AppIcon bouncing" msgstr "Stuiterjen fan programma-ikoan" #: ../../WPrefs.app/Preferences.c:307 msgid "Workspace border" msgstr "Wurkromterâne" #: ../../WPrefs.app/Preferences.c:323 msgid "Left/Right" msgstr "Lofts/rjochts" #: ../../WPrefs.app/Preferences.c:328 msgid "Top/Bottom" msgstr "Boppe/ûnder" #: ../../WPrefs.app/Preferences.c:344 msgid "Miscellaneous Ergonomic Preferences" msgstr "Alderhande gebrûksfreonlike foarkarren" #: ../../WPrefs.app/Preferences.c:345 msgid "" "Various settings like balloon text, geometry\n" "displays etc." msgstr "" "Ferskate ynstellingen sa as ballontekst,\n" "ferhâlding fan werjeften ensfh." #: ../../WPrefs.app/TexturePanel.c:296 msgid "Saturation" msgstr "Fersêding" #: ../../WPrefs.app/TexturePanel.c:298 msgid "Brightness" msgstr "Helderens" #: ../../WPrefs.app/TexturePanel.c:343 ../../WPrefs.app/TexturePanel.c:349 msgid "Hue" msgstr "Tint" #: ../../WPrefs.app/TexturePanel.c:582 msgid "Could not load the selected file: " msgstr "Koe it selektearre bestân net lade: " #: ../../WPrefs.app/TexturePanel.c:632 msgid "Open Image" msgstr "Iepenje ôfbylding" #: ../../WPrefs.app/TexturePanel.c:662 msgid "The selected file does not contain a supported image." msgstr "It selektearre bestân befettet gjin stipe ôfbylding." #: ../../WPrefs.app/TexturePanel.c:995 #, c-format msgid "error creating texture %s" msgstr "flater by oanmeitsjen tekstuer %s" #: ../../WPrefs.app/TexturePanel.c:1157 msgid "Texture Panel" msgstr "Tekstueren" #: ../../WPrefs.app/TexturePanel.c:1164 msgid "Texture Name" msgstr "Tekstuernamme" #: ../../WPrefs.app/TexturePanel.c:1176 msgid "Solid Color" msgstr "Effenkleur" #: ../../WPrefs.app/TexturePanel.c:1177 msgid "Gradient Texture" msgstr "Kleurferrin" #: ../../WPrefs.app/TexturePanel.c:1178 msgid "Simple Gradient Texture" msgstr "Ienfâldich kleurferrin" #: ../../WPrefs.app/TexturePanel.c:1179 msgid "Textured Gradient" msgstr "Teksturearre kleurferrin" #: ../../WPrefs.app/TexturePanel.c:1180 msgid "Image Texture" msgstr "Ofbyldingstekstuer" #: ../../WPrefs.app/TexturePanel.c:1188 msgid "Default Color" msgstr "Standertkleur" #: ../../WPrefs.app/TexturePanel.c:1200 msgid "Gradient Colors" msgstr "Kleurferrin" #: ../../WPrefs.app/TexturePanel.c:1289 msgid "Direction" msgstr "Rjochting" #: ../../WPrefs.app/TexturePanel.c:1317 msgid "Gradient" msgstr "Ferrin" #: ../../WPrefs.app/TexturePanel.c:1333 msgid "Gradient Opacity" msgstr "Trochsichtichheidsferrin" #: ../../WPrefs.app/TexturePanel.c:1373 msgid "Image" msgstr "Ofbylding" #: ../../WPrefs.app/TexturePanel.c:1393 msgid "Browse..." msgstr "Blêdzje..." #: ../../WPrefs.app/TexturePanel.c:1405 msgid "Tile" msgstr "Tegelje" #: ../../WPrefs.app/TexturePanel.c:1406 msgid "Scale" msgstr "Skale" #: ../../WPrefs.app/TexturePanel.c:1408 msgid "Maximize" msgstr "Maksimalisearje" #: ../../WPrefs.app/TexturePanel.c:1409 msgid "Fill" msgstr "Folje" #: ../../WPrefs.app/WPrefs.c:212 ../../WPrefs.app/WPrefs.c:282 msgid "Window Maker Preferences" msgstr "Window Maker-foarkarren" #: ../../WPrefs.app/WPrefs.c:216 msgid "Preferences" msgstr "Foarkarren" #: ../../WPrefs.app/WPrefs.c:235 msgid "Revert Page" msgstr "Pagina werstelle" #: ../../WPrefs.app/WPrefs.c:241 msgid "Revert All" msgstr "Alles werstelle" #: ../../WPrefs.app/WPrefs.c:247 msgid "Save" msgstr "Bewarje" #: ../../WPrefs.app/WPrefs.c:259 msgid "Balloon Help" msgstr "Ballonhelp" #: ../../WPrefs.app/WPrefs.c:289 #, c-format msgid "Version %s" msgstr "Ferzje %s" #: ../../WPrefs.app/WPrefs.c:296 msgid "Starting..." msgstr "Starte..." #: ../../WPrefs.app/WPrefs.c:383 #, c-format msgid "could not locate image file %s" msgstr "koe ôfbyldingsbestân %s net lokalisearje" #: ../../WPrefs.app/WPrefs.c:437 #, c-format msgid "could not process icon %s: %s" msgstr "koe ikoan %s net ferwurkje: %s" #: ../../WPrefs.app/WPrefs.c:537 #, c-format msgid "could not load image file %s:%s" msgstr "koe ôfbyldingsbestân %s net lade:%s" #: ../../WPrefs.app/WPrefs.c:554 msgid "Loading Window Maker configuration files..." msgstr "Lade Window Maker-konfiguraasjebestannen..." #: ../../WPrefs.app/WPrefs.c:558 msgid "Initializing configuration panels..." msgstr "Inisjalisearje konfiguraasjepanielen..." #: ../../WPrefs.app/WPrefs.c:616 ../../WPrefs.app/WPrefs.c:698 #, c-format msgid "Window Maker domain (%s) is corrupted!" msgstr "Window Maker-domein (%s) is skansearre!" #: ../../WPrefs.app/WPrefs.c:620 #, c-format msgid "Could not load Window Maker domain (%s) from defaults database." msgstr "Koe Window Maker-domein (%s) net lade út ynstellingedatabase." #: ../../WPrefs.app/WPrefs.c:635 msgid "could not extract version information from Window Maker" msgstr "koe ferzjeynformaasje net ôfliede út Window Maker" #: ../../WPrefs.app/WPrefs.c:636 msgid "Make sure wmaker is in your search path." msgstr "Soargje derfoar dat 'wmaker' yn jo sykpaad sit." #: ../../WPrefs.app/WPrefs.c:640 msgid "" "Could not extract version from Window Maker. Make sure it is correctly " "installed and is in your PATH environment variable." msgstr "" "Koe ferzje net ôfliede út Window Maker. Soargje derfoar dat it korrekt " "ynstallearre is, en yn jo PATH-omjouwingsfariabele sit." #: ../../WPrefs.app/WPrefs.c:650 msgid "" "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." msgstr "" "Koe ferzje net ôfliede út Window Maker. Soargje derfoar dat it korrekt " "ynstallearre is, en it paad dêr't it ynstallearre is yn 'e PATH-" "omjouwingsfariabele sit." #: ../../WPrefs.app/WPrefs.c:657 #, c-format msgid "" "WPrefs only supports Window Maker 0.18.0 or newer.\n" "The version installed is %i.%i.%i\n" msgstr "" "WPrefs stipet allinnich Window Maker 0.18.0 of nijer.\n" "De ynstallearre ferzje is %i.%i.%i\n" #: ../../WPrefs.app/WPrefs.c:666 #, 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, dy't op jo systeem ynstallearre is, wurdt net " "folslein stipe troch dizze ferzje fan WPrefs." #: ../../WPrefs.app/WPrefs.c:679 #, c-format msgid "could not run \"%s --global_defaults_path\"." msgstr "koe \"%s --global_defaults_path\" net útfiere." #: ../../WPrefs.app/WPrefs.c:702 #, c-format msgid "Could not load global Window Maker domain (%s)." msgstr "Koe algemien Window Maker-domein (%s) net lade." #: ../../WPrefs.app/WPrefs.c:922 #, c-format msgid "bad speed value for option %s; using default Medium" msgstr "ferkearde faasjewearde foar opsje %s; brûkt standert Medium" #: ../../WPrefs.app/WindowHandling.c:88 msgid "Automatic" msgstr "Automatysk" #: ../../WPrefs.app/WindowHandling.c:89 msgid "Random" msgstr "Willekeurich" #: ../../WPrefs.app/WindowHandling.c:90 msgid "Manual" msgstr "Hânmjittich" #: ../../WPrefs.app/WindowHandling.c:91 msgid "Cascade" msgstr "Trepsgewiis" #: ../../WPrefs.app/WindowHandling.c:92 msgid "Smart" msgstr "Snoad" #: ../../WPrefs.app/WindowHandling.c:100 msgid "...changes its position (normal behavior)" msgstr "...feroaret syn plak (normaal gedrach)" #: ../../WPrefs.app/WindowHandling.c:101 msgid "...restores its unmaximized geometry" msgstr "...werstelt syn demaksimalisearre grutte" #: ../../WPrefs.app/WindowHandling.c:102 msgid "...considers the window now unmaximized" msgstr "...beskôget it finster nó demaksimalisearre" #: ../../WPrefs.app/WindowHandling.c:103 msgid "...does not move the window" msgstr "...ferpleatst it finster net" #: ../../WPrefs.app/WindowHandling.c:178 ../../WPrefs.app/WindowHandling.c:194 #, c-format msgid "bad option value %s in WindowPlacement. Using default value" msgstr "ferkearde opsjewearde %s yn WindowPlacement. Brûkt standertwearde" #: ../../WPrefs.app/WindowHandling.c:214 msgid "invalid data in option WindowPlaceOrigin. Using default (0,0)" msgstr "ûnjildige data yn opsje WindowPlaceOrigin. Brûkt standert (0,0)" #: ../../WPrefs.app/WindowHandling.c:310 msgid "Window Placement" msgstr "Finsterpleatsing" #: ../../WPrefs.app/WindowHandling.c:311 msgid "" "How to place windows when they are first put\n" "on screen." msgstr "" "Hoe finsters te pleatsen, wannear't se foar it\n" "earst op it skerm set wurde." #: ../../WPrefs.app/WindowHandling.c:325 msgid "Origin:" msgstr "Begjin:" #: ../../WPrefs.app/WindowHandling.c:406 msgid "Opaque Move/Resize" msgstr "Untrochsicht. ferpl./gr." #: ../../WPrefs.app/WindowHandling.c:407 msgid "" "Whether the window contents or only a frame should\n" "be displayed during a move or resize.\n" msgstr "" "Of de finsterynhâld, of allinnich in kader werjûn\n" "moat wurde ûnder ferpleatsen of fergrutsjen.\n" #: ../../WPrefs.app/WindowHandling.c:474 msgid "by keyboard" msgstr "mei toetseboerd" #: ../../WPrefs.app/WindowHandling.c:476 msgid "" "When selected, moving or resizing windows\n" "using keyboard shortcuts will also display its\n" "content instead of just a frame." msgstr "" "Wannear oanfinke, sil finsters ferpleatsen\n" "of fergrutsjen mei fluchtoetsen ek de ynhâld\n" "werjaan, yn plak fan allinnich in kader." #: ../../WPrefs.app/WindowHandling.c:487 msgid "When maximizing..." msgstr "By maksimalisearjen..." #: ../../WPrefs.app/WindowHandling.c:490 msgid "...do not cover:" msgstr "...net bedekke:" #: ../../WPrefs.app/WindowHandling.c:497 msgid "Icons" msgstr "ikoanen" #: ../../WPrefs.app/WindowHandling.c:502 msgid "The dock" msgstr "'t Dok" #: ../../WPrefs.app/WindowHandling.c:510 msgid "Mod+Wheel" msgstr "'Mod'+tsjil" #: ../../WPrefs.app/WindowHandling.c:513 msgid "Resize increment:" msgstr "Fergrutstap:" #: ../../WPrefs.app/WindowHandling.c:534 msgid "Edge Resistance" msgstr "Kantwjerstân" #: ../../WPrefs.app/WindowHandling.c:536 msgid "" "Edge resistance will make windows `resist'\n" "being moved further for the defined threshold\n" "when moved against other windows or the edges\n" "of the screen." msgstr "" "Kantwjerstân lit finsters 'wjerstân' biede om\n" "fierder ferpleatst te wurden, oant de drompelwearde,\n" "wannear pleatst tsjin oare finsters of de\n" "kanten fan it skerm." #: ../../WPrefs.app/WindowHandling.c:555 msgid "Resist" msgstr "Stjit ôf" #: ../../WPrefs.app/WindowHandling.c:560 msgid "Attract" msgstr "Lûk oan" #: ../../WPrefs.app/WindowHandling.c:569 msgid "Dragging a maximized window..." msgstr "Ferslepen fan in maksimalisearre finster..." #: ../../WPrefs.app/WindowHandling.c:598 msgid "Window Handling Preferences" msgstr "Finsterbehannelingsfoarkarren" #: ../../WPrefs.app/WindowHandling.c:600 msgid "" "Window handling options. Initial placement style\n" "edge resistance, opaque move etc." msgstr "" "Finsterbehannelingsopsjes. Inisjele pleatsingsstyl,\n" "kantwjerstân, ûntrochsichtich ferpleatse ensfh." #: ../../WPrefs.app/Workspace.c:118 msgid "Workspace Navigation" msgstr "Wurkromtenavigaasje" #: ../../WPrefs.app/Workspace.c:123 msgid "Wrap to the first workspace from the last workspace" msgstr "Omslaan nei de earste wurkromte, fan 'e lêste wurkromte ôf" #: ../../WPrefs.app/Workspace.c:139 msgid "Switch workspaces while dragging windows" msgstr "Fan wurkromte wikselje by finsters ferslepen" #: ../../WPrefs.app/Workspace.c:155 msgid "Automatically create new workspaces" msgstr "Fansels nije wurkromten oanmeitsje" #. WMSetLabelTextAlignment(panel->posL, WARight); #: ../../WPrefs.app/Workspace.c:172 msgid "Position of workspace name display" msgstr "Plak fan wurkromtenammewerjefte" #: ../../WPrefs.app/Workspace.c:188 msgid "Disable" msgstr "Utskeakelje" #: ../../WPrefs.app/Workspace.c:190 msgid "Top" msgstr "Boppe" #: ../../WPrefs.app/Workspace.c:191 msgid "Bottom" msgstr "Under" #: ../../WPrefs.app/Workspace.c:192 msgid "Top/Left" msgstr "Loftsboppe" #: ../../WPrefs.app/Workspace.c:193 msgid "Top/Right" msgstr "Rjochtsboppe" #: ../../WPrefs.app/Workspace.c:194 msgid "Bottom/Left" msgstr "Loftsûnder" #: ../../WPrefs.app/Workspace.c:195 msgid "Bottom/Right" msgstr "Rjochtsûnder" #: ../../WPrefs.app/Workspace.c:224 msgid "Workspace Preferences" msgstr "Wurkromtefoarkarren" #: ../../WPrefs.app/Workspace.c:226 msgid "" "Workspace navigation features\n" "and workspace name display settings." msgstr "" "Navigaasjeskaaimerken en nammewerjefte-\n" "ynstellingen fan 'e wurkromte." #: ../../WPrefs.app/main.c:62 #, c-format msgid "usage: %s [options]\n" msgstr "gebrûk: %s [opsjes]\n" #: ../../WPrefs.app/main.c:63 msgid "options:" msgstr "opsjes:" #: ../../WPrefs.app/main.c:64 msgid " -display <display>\tdisplay to be used" msgstr " -display <display>\tte brûken skerm" #: ../../WPrefs.app/main.c:65 msgid " --version\t\tprint version number and exit" msgstr " --version\t\tferzjenûmer ôfdrukke, en ôfslute" #: ../../WPrefs.app/main.c:66 msgid " --help\t\tprint this message and exit" msgstr " --help\t\tdizze boadskip ôfdrukke, en ôfslute" #: ../../WPrefs.app/main.c:133 #, c-format msgid "too few arguments for %s" msgstr "te min arguminten foar %s" #: ../../WPrefs.app/main.c:155 msgid "X server does not support locale" msgstr "X-server stipet lokalisaasje net" #: ../../WPrefs.app/main.c:158 msgid "cannot set locale modifiers" msgstr "kin lokalisaasjemodifikatoaren net ynstelle" #: ../../WPrefs.app/main.c:164 #, c-format msgid "could not open display %s" msgstr "koe skerm %s net iepenje" #: ../../WPrefs.app/main.c:172 msgid "could not initialize application" msgstr "koe programma net inisjalisearje" #: ../../WPrefs.app/xmodifier.c:125 #, c-format msgid "%s (0x%x) generates %s which is generated by %s" msgstr "%s (0x%x) generearret %s dy't troch %s generearre wurdt" #: ../../WPrefs.app/xmodifier.c:129 ../../WPrefs.app/xmodifier.c:134 #, c-format msgid "%s (0x%x) generates %s which is nonsensical" msgstr "%s (0x%x) generearret %s, wat ûnsinnich is" #: ../../WPrefs.app/xmodifier.c:139 #, c-format msgid "%s (0x%x) generates both %s and %s which is nonsensical" msgstr "%s (0x%x) generearret sawol %s as %s, wat ûnsinnich is" #: ../../WPrefs.app/xmodifier.c:160 msgid "XGetModifierMapping returned NULL, there is no modifier or no memory" msgstr "" #: ../../WPrefs.app/xmodifier.c:268 #, c-format msgid "%s is being used for both %s and %s" msgstr "%s wurdt foar sawol %s as %s brûkt" # Keep next entries for KeyboardSettings.c #~ msgid "Initial Key Repeat" #~ msgstr "Inisjele toetswerhelling" #~ msgid "Key Repeat Rate" #~ msgstr "Toetswerhelfaasje" #~ msgid "Type here to test" #~ msgstr "Typ hjir om te testen" #~ msgid "Keyboard Preferences" #~ msgstr "Toetseboerdfoarkarren" #~ msgid "Not done" #~ msgstr "Net klear" # Keep next entries for Themes.c #~ msgid "Set" #~ msgstr "Ynstelle" #~ msgid "Stop" #~ msgstr "Stopje" #~ msgid "Download" #~ msgstr "Ynlade" #~ msgid "Save Current Theme" #~ msgstr "Hjoeddeisk tema bewarje" #~ msgid "Load" #~ msgstr "Lade" #~ msgid "Install" #~ msgstr "Ynstallearje" #~ msgid "Tile of The Day" #~ msgstr "Tegel fan 'e dei" #~ msgid "Bar of The Day" #~ msgstr "Balke fan 'e dei" ����������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/po/zh_CN.po�����������������������������������������������������������0000644�0001750�0001750�00000143140�13431646201�014735� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# SOME DESCRIPTIVE TITLE. # Copyright (C) 1999 Free Software Foundation, Inc. # Wang Jian <larkw@263.net> , 1999.4 # msgid "" msgstr "" "Project-Id-Version: Window Maker-0.51.0\n" "POT-Creation-Date: 1999-07-05 00:48+0800\n" "PO-Revision-Date: 1999-07-05 23:20+0800\n" "Last-Translator: Wang Jian <larkw@263.net>\n" "Language-Team: chinese <zh@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "Translator: Wang Jian <larkw@263.net>\n" #: ../../WPrefs.app/main.c:74 #, c-format msgid "usage: %s [options]\n" msgstr "用法: %s [选项]\n" #: ../../WPrefs.app/main.c:75 msgid "options:" msgstr "选项:" #: ../../WPrefs.app/main.c:76 msgid " -display <display>\tdisplay to be used" msgstr " -display <display>\t要使用的显示服务器" #: ../../WPrefs.app/main.c:77 msgid " --version\t\tprint version number and exit" msgstr " --version\t\t显示版本号后退出" #: ../../WPrefs.app/main.c:78 msgid " --help\t\tprint this message and exit" msgstr " --help\t\t显示本信息后退出" #: ../../WPrefs.app/main.c:137 #, c-format msgid "too few arguments for %s" msgstr "%s 的参数太少" #: ../../WPrefs.app/main.c:159 msgid "X server does not support locale" msgstr "X 服务器不支持地区设置" #: ../../WPrefs.app/main.c:162 msgid "cannot set locale modifiers" msgstr "不能设置地区设置修饰符" #: ../../WPrefs.app/main.c:168 #, c-format msgid "could not open display %s" msgstr "不能打开显示服务器 %s" #: ../../WPrefs.app/main.c:176 msgid "could not initialize application" msgstr "不能初始化应用程序" #: ../../WPrefs.app/WPrefs.c:254 msgid "Window Maker Preferences" msgstr "WindowMaker 设置" #: ../../WPrefs.app/WPrefs.c:278 msgid "Revert Page" msgstr "还原页面" #: ../../WPrefs.app/WPrefs.c:284 msgid "Revert All" msgstr "全部还原" #: ../../WPrefs.app/WPrefs.c:290 msgid "Save" msgstr "保存" #: ../../WPrefs.app/Appearance.c:2227 ../../WPrefs.app/WPrefs.c:296 msgid "Close" msgstr "关闭" #: ../../WPrefs.app/WPrefs.c:303 msgid "Balloon Help" msgstr "浮动帮助" #: ../../WPrefs.app/WPrefs.c:328 msgid "Window Maker Preferences Utility" msgstr "WindowMaker 设置程序" #: ../../WPrefs.app/WPrefs.c:335 #, c-format msgid "Version %s for Window Maker %s or newer" msgstr "版本 %s, 用于 WindowMaker %s 或更新的版本" #: ../../WPrefs.app/WPrefs.c:343 msgid "Starting..." msgstr "正在启动..." #: ../../WPrefs.app/WPrefs.c:349 msgid "" "Programming/Design: Alfredo K. Kojima\n" "Artwork: Marco van Hylckama Vlieg\n" "More Programming: James Thompson" msgstr "" "程序/设计:Alfredo K. Kojima\n" "美术:Marco van Hylckama Vlieg\n" "程序:James Thompson" #: ../../WPrefs.app/WPrefs.c:437 #, c-format msgid "could not locate image file %s\n" msgstr "不能定位图像文件 %s\n" #: ../../WPrefs.app/Appearance.c:1895 ../../WPrefs.app/Configurations.c:242 #: ../../WPrefs.app/Configurations.c:254 ../../WPrefs.app/Focus.c:316 #: ../../WPrefs.app/Focus.c:327 ../../WPrefs.app/MenuPreferences.c:137 #: ../../WPrefs.app/MenuPreferences.c:148 #: ../../WPrefs.app/MenuPreferences.c:176 #: ../../WPrefs.app/MenuPreferences.c:191 ../../WPrefs.app/MouseSettings.c:606 #: ../../WPrefs.app/MouseSettings.c:617 ../../WPrefs.app/MouseSettings.c:673 #: ../../WPrefs.app/MouseSettings.c:688 ../../WPrefs.app/MouseSettings.c:704 #: ../../WPrefs.app/WPrefs.c:460 ../../WPrefs.app/WPrefs.c:477 #, c-format msgid "could not load icon file %s" msgstr "不能载入图标文件 %s" #: ../../WPrefs.app/WPrefs.c:553 #, c-format msgid "could not load image file %s:%s" msgstr "不能载入图像文件 %s:%s" #: ../../WPrefs.app/WPrefs.c:572 msgid "Loading Window Maker configuration files..." msgstr "载入Window Maker配置文件..." #: ../../WPrefs.app/WPrefs.c:576 msgid "Initializing configuration panels..." msgstr "初始化设置面板..." #: ../../WPrefs.app/WPrefs.c:607 msgid "" "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." msgstr "" "WPrefs 是自由软件,在GNU General Public\n" "License条款下无任何保证地分发.\n" "这个程序中的图标以OpenContent\n" "方式授权." #: ../../WPrefs.app/WPrefs.c:638 ../../WPrefs.app/WPrefs.c:708 #, c-format msgid "Window Maker domain (%s) is corrupted!" msgstr "Window Maker 域(%s)已损坏!" #: ../../WPrefs.app/Menu.c:1384 ../../WPrefs.app/MouseSettings.c:149 #: ../../WPrefs.app/MouseSettings.c:169 ../../WPrefs.app/Text.c:183 #: ../../WPrefs.app/TexturePanel.c:608 ../../WPrefs.app/TexturePanel.c:686 #: ../../WPrefs.app/Themes.c:96 ../../WPrefs.app/WPrefs.c:639 #: ../../WPrefs.app/WPrefs.c:644 ../../WPrefs.app/WPrefs.c:658 #: ../../WPrefs.app/WPrefs.c:668 ../../WPrefs.app/WPrefs.c:678 #: ../../WPrefs.app/WPrefs.c:709 ../../WPrefs.app/WPrefs.c:714 msgid "Error" msgstr "错误" #: ../../WPrefs.app/Menu.c:1384 ../../WPrefs.app/MenuGuru.c:119 #: ../../WPrefs.app/MenuGuru.c:126 ../../WPrefs.app/MenuGuru.c:140 #: ../../WPrefs.app/MouseSettings.c:151 ../../WPrefs.app/MouseSettings.c:171 #: ../../WPrefs.app/Text.c:183 ../../WPrefs.app/TexturePanel.c:609 #: ../../WPrefs.app/TexturePanel.c:688 ../../WPrefs.app/TexturePanel.c:1520 #: ../../WPrefs.app/Themes.c:98 ../../WPrefs.app/WPrefs.c:639 #: ../../WPrefs.app/WPrefs.c:644 ../../WPrefs.app/WPrefs.c:660 #: ../../WPrefs.app/WPrefs.c:672 ../../WPrefs.app/WPrefs.c:678 #: ../../WPrefs.app/WPrefs.c:685 ../../WPrefs.app/WPrefs.c:709 #: ../../WPrefs.app/WPrefs.c:714 msgid "OK" msgstr "确定" #: ../../WPrefs.app/WPrefs.c:642 #, c-format msgid "Could not load Window Maker domain (%s) from defaults database." msgstr "不能从默认数据库载入 Window Maker 域(%s)" #: ../../WPrefs.app/WPrefs.c:655 msgid "could not extract version information from Window Maker" msgstr "不能提取 Window Maker 的版本信息" #: ../../WPrefs.app/WPrefs.c:656 msgid "Make sure wmaker is in your search path." msgstr "确定 wmaker 在搜索路径中." #: ../../WPrefs.app/WPrefs.c:659 msgid "" "Could not extract version from Window Maker. Make sure it is correctly " "installed and is in your PATH environment variable." msgstr "不能提取 Window Makeri 的版本. 确定它安装正确,并且在PATH环境变量中." #: ../../WPrefs.app/WPrefs.c:669 msgid "" "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." msgstr "" "不能提取Window Maker的版本.确定它安装正确,并且它安装的位置在PATH环境变量中." #: ../../WPrefs.app/WPrefs.c:676 #, 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:683 #, 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:685 msgid "Warning" msgstr "警告" #: ../../WPrefs.app/WPrefs.c:690 msgid "could not run \"wmaker --global_defaults_path\"." msgstr "不能运行 \"wmaker --global_defaults_path\"." #: ../../WPrefs.app/WPrefs.c:712 #, c-format msgid "Could not load global Window Maker domain (%s)." msgstr "不能载入全局 Window Maker域 (%s)." #: ../../WPrefs.app/WPrefs.c:961 #, c-format msgid "" "bad speed value for option %s\n" ". Using default Medium" msgstr "" "%s 选项速度值错误.\n" "使用默认的中间值" #: ../../WPrefs.app/Appearance.c:1089 msgid "Select File" msgstr "选择文件" #: ../../WPrefs.app/Appearance.c:1488 msgid "Focused Window" msgstr "聚焦窗口" #: ../../WPrefs.app/Appearance.c:1492 msgid "Unfocused Window" msgstr "非聚焦窗口" #: ../../WPrefs.app/Appearance.c:1496 msgid "Owner of Focused Window" msgstr "聚焦窗口的拥有者" #: ../../WPrefs.app/Appearance.c:1500 ../../WPrefs.app/Appearance.c:1819 msgid "Menu Title" msgstr "菜单标题" #: ../../WPrefs.app/Appearance.c:1504 ../../WPrefs.app/Appearance.c:1506 msgid "Normal Item" msgstr "普通项" #: ../../WPrefs.app/Appearance.c:1510 msgid "Disabled Item" msgstr "失效项" #: ../../WPrefs.app/Appearance.c:1519 msgid "Highlighted" msgstr "突出的" #: ../../WPrefs.app/Appearance.c:1711 msgid "Texture" msgstr "纹理" #: ../../WPrefs.app/Appearance.c:1720 msgid "Titlebar of Focused Window" msgstr "聚焦窗口的标题行" #: ../../WPrefs.app/Appearance.c:1721 msgid "Titlebar of Unfocused Windows" msgstr "非聚焦窗口的标题行" #: ../../WPrefs.app/Appearance.c:1722 msgid "Titlebar of Focused Window's Owner" msgstr "聚焦窗口拥有者的标题行" #: ../../WPrefs.app/Appearance.c:1723 msgid "Window Resizebar" msgstr "窗口的调整大小边框" #: ../../WPrefs.app/Appearance.c:1724 msgid "Titlebar of Menus" msgstr "菜单标题行" #: ../../WPrefs.app/Appearance.c:1725 msgid "Menu Items" msgstr "菜单项" #: ../../WPrefs.app/Appearance.c:1726 msgid "Icon Background" msgstr "图标背景" #: ../../WPrefs.app/Appearance.c:1740 msgid "" "Double click in the texture you want to use\n" "for the selected item." msgstr "" "在你想给选中的项使用的纹理图上双击." #: ../../WPrefs.app/Appearance.c:1754 msgid "New" msgstr "新建" #: ../../WPrefs.app/Appearance.c:1758 msgid "Create a new texture." msgstr "新建纹理图." #: ../../WPrefs.app/Appearance.c:1766 msgid "Extract..." msgstr "提取..." #: ../../WPrefs.app/Appearance.c:1770 msgid "Extract texture(s) from a theme or a style file." msgstr "从主题或风格文件中提取纹理图." #: ../../WPrefs.app/Appearance.c:1780 msgid "Edit" msgstr "编辑" #: ../../WPrefs.app/Appearance.c:1783 msgid "Edit the highlighted texture." msgstr "编辑突出显示纹理图." #: ../../WPrefs.app/Appearance.c:1791 ../../WPrefs.app/TexturePanel.c:1308 msgid "Delete" msgstr "删除" #: ../../WPrefs.app/Appearance.c:1795 msgid "Delete the highlighted texture." msgstr "删除突出显示纹理图." #: ../../WPrefs.app/Appearance.c:1808 msgid "Color" msgstr "颜色" #: ../../WPrefs.app/Appearance.c:1816 msgid "Focused Window Title" msgstr "聚焦窗口标题" #: ../../WPrefs.app/Appearance.c:1817 msgid "Unfocused Window Title" msgstr "非聚焦窗口标题" #: ../../WPrefs.app/Appearance.c:1818 msgid "Owner of Focused Window Title" msgstr "聚焦窗口拥有者的标题" #: ../../WPrefs.app/Appearance.c:1820 msgid "Menu Item Text" msgstr "菜单项文字" #: ../../WPrefs.app/Appearance.c:1821 msgid "Disabled Menu Item Text" msgstr "失效菜单项文字" #: ../../WPrefs.app/Appearance.c:1822 msgid "Menu Highlight Color" msgstr "菜单突出显示颜色" #: ../../WPrefs.app/Appearance.c:1823 msgid "Highlighted Menu Text Color" msgstr "突出显示的菜单文字颜色" #: ../../WPrefs.app/Appearance.c:1860 msgid "Options" msgstr "选项" #: ../../WPrefs.app/Appearance.c:1867 msgid "Menu Style" msgstr "菜单风格" #: ../../WPrefs.app/Appearance.c:1909 msgid "Title Alignment" msgstr "标题对齐" #: ../../WPrefs.app/Appearance.c:1916 ../../WPrefs.app/Text.c:292 msgid "Left" msgstr "靠左" #: ../../WPrefs.app/Appearance.c:1919 ../../WPrefs.app/Text.c:298 #: ../../WPrefs.app/TexturePanel.c:1509 msgid "Center" msgstr "居中" #: ../../WPrefs.app/Appearance.c:1922 ../../WPrefs.app/Text.c:305 msgid "Right" msgstr "靠右" #: ../../WPrefs.app/Appearance.c:2149 msgid "Appearance Preferences" msgstr "外观设置" #: ../../WPrefs.app/Appearance.c:2151 msgid "" "Background texture configuration for windows,\n" "menus and icons." msgstr "" "窗口, 菜单和图标的背景纹理图." #: ../../WPrefs.app/Appearance.c:2196 msgid "Extract Texture" msgstr "提取纹理" #: ../../WPrefs.app/Appearance.c:2216 msgid "Textures" msgstr "纹理" #: ../../WPrefs.app/Appearance.c:2232 msgid "Extract" msgstr "提取" #: ../../WPrefs.app/Configurations.c:150 ../../WPrefs.app/Configurations.c:156 #: ../../WPrefs.app/MouseSettings.c:536 ../../WPrefs.app/WindowHandling.c:319 #: ../../WPrefs.app/WindowHandling.c:331 ../../WPrefs.app/Workspace.c:73 #: ../../WPrefs.app/Workspace.c:79 #, c-format msgid "could not load icon %s" msgstr "不能载入图标 %s" #: ../../WPrefs.app/Configurations.c:164 ../../WPrefs.app/Workspace.c:87 #, c-format msgid "could not process icon %s: %s" msgstr "不能处理图标 %s: %s" #: ../../WPrefs.app/Configurations.c:189 ../../WPrefs.app/Workspace.c:126 #, c-format msgid "could not load image file %s" msgstr "不能载入图像文件 %s" #: ../../WPrefs.app/Configurations.c:203 msgid "Icon Slide Speed" msgstr "图标移动速度" #: ../../WPrefs.app/Configurations.c:209 msgid "Shade Animation Speed" msgstr "窗口卷起动画速度" #: ../../WPrefs.app/Configurations.c:271 msgid "Smooth Scaling" msgstr "平滑缩放" #: ../../WPrefs.app/Configurations.c:272 msgid "" "Smooth scaled background images, neutralizing\n" "the `pixelization' effect. This will slow\n" "down loading of background images considerably." msgstr "" "平滑缩放的背景图像, 抑制了`像素化' 效应.\n" "这会相当地降低背景图像的载入速度." #: ../../WPrefs.app/Configurations.c:313 msgid "Titlebar Style" msgstr "标题行风格" #: ../../WPrefs.app/Configurations.c:350 msgid "Animations and Sound" msgstr "动画与音效" #: ../../WPrefs.app/Configurations.c:356 msgid "Animations" msgstr "动画" #: ../../WPrefs.app/Configurations.c:367 msgid "" "Disable/enable animations such as those shown\n" "for window miniaturization, shading etc." msgstr "" "取消/允许动画, 例如窗口最小化, 卷起时显示\n" "的动画." #: ../../WPrefs.app/Configurations.c:375 msgid "Superfluous" msgstr "大量的" #: ../../WPrefs.app/Configurations.c:386 msgid "" "Disable/enable `superfluous' features and\n" "animations. These include the `ghosting' of the\n" "dock when it's being moved to the another side\n" "and the explosion animation for undocked icons." msgstr "" "取消/允许 `大量的' 特性和动画. 这包括\n" "嵌入器在移动到屏幕对边时的`幻影'和图标\n" "从嵌入器上移开时的爆炸效果." #: ../../WPrefs.app/Configurations.c:396 msgid "Sounds" msgstr "音效" #: ../../WPrefs.app/Configurations.c:407 msgid "" "Disable/enable support for sound effects played\n" "for actions like shading and closing a window.\n" "You will need a module distributed separately\n" "for this. You can get it at:\n" "http://www.frontiernet.net/~southgat/wmsound" msgstr "" "取消/允许动作时播放声响效果, 比如卷起窗口和\n" "关闭窗口时. 你需要一个单独分发的模块来使用\n" "这个功能. 你可以从以下地址得到:\n" "http://www.frontiernet.net/~southgat/wmsound" #: ../../WPrefs.app/Configurations.c:418 msgid "Note: sound requires a module distributed separately" msgstr "注意:音效需要一个单独发行的模块" #: ../../WPrefs.app/Configurations.c:428 msgid "Dithering colormap for 8bpp" msgstr "使用 8bpp 颜色表时减少颜色" #: ../../WPrefs.app/Configurations.c:430 msgid "" "Number of colors to reserve for Window Maker\n" "on displays that support only 8bpp (PseudoColor)." msgstr "" "在只支持 8bpp (伪彩色) 的显示上为 Window\n" "Maker 保留的颜色数." #: ../../WPrefs.app/Configurations.c:437 msgid "Disable dithering in any visual/depth" msgstr "在任何visual和颜色深度时都不减少颜色" #: ../../WPrefs.app/Configurations.c:458 msgid "More colors for applications" msgstr "把更多颜色保留给应用程序" #: ../../WPrefs.app/Configurations.c:465 msgid "More colors for WindowMaker" msgstr "WindowMaker 使用更多颜色" #: ../../WPrefs.app/Configurations.c:520 msgid "Other Configurations" msgstr "其他配置" #: ../../WPrefs.app/Configurations.c:522 msgid "" "Animation speeds, titlebar styles, various option\n" "toggling and number of colors to reserve for\n" "Window Maker in 8bit displays." msgstr "" "动画速度, 标题行风格, 各种选项和在 8bit 显示上\n" "为 Window Maker 保留的颜色数." #: ../../WPrefs.app/Expert.c:74 msgid "" "Disable miniwindows (icons for miniaturized windows). For use with KDE/GNOME." msgstr "取消微型窗口(最小化窗口的图标)以便和 KDE 或 GNOME 一起使用." #: ../../WPrefs.app/Expert.c:75 msgid "Do not set non-WindowMaker specific parameters (do not use xset)" msgstr "不设置非 WindowMaker 使用的参数(不使用xset)" #: ../../WPrefs.app/Expert.c:76 msgid "Automatically save session when exiting WindowMaker" msgstr "退出 WindowMaker 时自动保存会话" #: ../../WPrefs.app/Expert.c:77 msgid "Use SaveUnder in window frames, icons, menus and other objects" msgstr "在窗口框架,图标,菜单和其它对象中使用 SaveUnder 特性" #: ../../WPrefs.app/Expert.c:78 msgid "Disable cycling color highlighting of icons." msgstr "取消图标的循环色彩突出" #: ../../WPrefs.app/Expert.c:110 msgid "Expert User Preferences" msgstr "熟练用户设置" #: ../../WPrefs.app/Expert.c:112 msgid "" "Options for people who know what they're doing...\n" "Also have some other misc. options." msgstr "" "给那些知道他们正在做什么的人使用...\n" "另外还有其他的杂项." #: ../../WPrefs.app/Focus.c:83 #, c-format msgid "bad option value %s for option FocusMode. Using default Manual" msgstr "FocusModei 选项值 %s 错误. 使用默认的手工方式" #: ../../WPrefs.app/Focus.c:98 #, c-format msgid "bad option value %s for option ColormapMode. Using default Auto" msgstr "ColormapMode 选项值 %s 错误.使用默认的自动方式" #: ../../WPrefs.app/Focus.c:196 msgid "Manual: Click on the window to set keyboard input focus" msgstr "在窗口上点击一下以设置键盘输入焦点" #: ../../WPrefs.app/Focus.c:200 msgid "Auto: Set keyboard input focus to the window under the mouse pointer" msgstr "鼠标下面的窗口获得键盘输入焦点" #: ../../WPrefs.app/Focus.c:249 msgid "Input Focus Mode" msgstr "输入焦点模式" #: ../../WPrefs.app/Focus.c:254 msgid "Click window to focus" msgstr "点击窗口获得焦点" #: ../../WPrefs.app/Focus.c:255 msgid "Focus follows mouse" msgstr "焦点跟随鼠标" #: ../../WPrefs.app/Focus.c:256 msgid "\"Sloppy\" focus" msgstr "\"Sloppy\" 焦点" #: ../../WPrefs.app/Focus.c:271 msgid "Install colormap from the window..." msgstr "在窗口里安装颜色表..." #: ../../WPrefs.app/Focus.c:276 msgid "...that has the input focus" msgstr "...获得输入焦点的窗口" #: ../../WPrefs.app/Focus.c:281 msgid "...that's under the mouse pointer" msgstr "...鼠标下面的窗口" #: ../../WPrefs.app/Focus.c:290 msgid "Automatic Window Raise Delay" msgstr "自动升起窗口的延迟" #: ../../WPrefs.app/Focus.c:347 msgid "ms" msgstr "毫秒" #: ../../WPrefs.app/Focus.c:364 msgid "Do not let applications receive the click used to focus windows" msgstr "不让应用程序得到用来设置窗口焦点的鼠标按键动作" #: ../../WPrefs.app/Focus.c:370 msgid "Automatically focus new windows" msgstr "新窗口自动得到焦点" #: ../../WPrefs.app/Focus.c:391 msgid "Window Focus Preferences" msgstr "窗口焦点设置" #: ../../WPrefs.app/Focus.c:393 msgid "" "Keyboard focus switching policy, colormap switching\n" "policy for 8bpp displays and other related options." msgstr "" "键盘输入焦点切换的策略, 8位显示的颜色表切换策略和\n" "其他相关的选项." #: ../../WPrefs.app/Icons.c:182 msgid "Icon Positioning" msgstr "图标放置" #: ../../WPrefs.app/Icons.c:229 msgid "Iconification Animation" msgstr "图标化时动画" #: ../../WPrefs.app/Icons.c:240 msgid "Shrinking/Zooming" msgstr "缩小/放大" #: ../../WPrefs.app/Icons.c:241 msgid "Spinning/Twisting" msgstr "回转/转向" #: ../../WPrefs.app/Icons.c:242 msgid "3D-flipping" msgstr "立体翻转" #: ../../WPrefs.app/Icons.c:243 msgid "None" msgstr "无" #: ../../WPrefs.app/Icons.c:256 msgid "Auto-arrange icons" msgstr "自动排列图标" #: ../../WPrefs.app/Icons.c:258 msgid "Keep icons and miniwindows arranged all the time." msgstr "总是让图标和小窗口排列整齐." #: ../../WPrefs.app/Icons.c:264 msgid "Omnipresent miniwindows" msgstr "最小窗口在所有工作区" #: ../../WPrefs.app/Icons.c:266 msgid "Make miniwindows be present in all workspaces." msgstr "让小窗口在所有的工作区都有." #: ../../WPrefs.app/Icons.c:275 msgid "Icon Size" msgstr "图标大小" #: ../../WPrefs.app/Icons.c:277 msgid "The size of the dock/application icon and miniwindows" msgstr "嵌入应用程序图标和小窗口的大小" #: ../../WPrefs.app/Icons.c:347 msgid "Icon Preferences" msgstr "图标设置" #: ../../WPrefs.app/Icons.c:349 msgid "" "Icon/Miniwindow handling options. Icon positioning\n" "area, sizes of icons, miniaturization animation style." msgstr "" "图标/小窗口处理选项. 图标放置区域, 图标大小,\n" "最小化时的动画风格." #: ../../WPrefs.app/KeyboardSettings.c:74 msgid "Initial Key Repeat" msgstr "起始按键重复" #: ../../WPrefs.app/KeyboardSettings.c:115 msgid "Key Repeat Rate" msgstr "按键重复速率" #: ../../WPrefs.app/KeyboardSettings.c:155 msgid "Type here to test" msgstr "在此输入测试" #: ../../WPrefs.app/KeyboardSettings.c:174 msgid "Keyboard Preferences" msgstr "键盘设置" #: ../../WPrefs.app/KeyboardSettings.c:176 msgid "Not done" msgstr "没有完成" #: ../../WPrefs.app/KeyboardShortcuts.c:185 ../../WPrefs.app/Menu.c:1010 #: ../../WPrefs.app/MenuGuru.c:263 ../../WPrefs.app/TexturePanel.c:1526 msgid "Cancel" msgstr "取消" #: ../../WPrefs.app/KeyboardShortcuts.c:186 msgid "Press the desired shortcut key(s) or click Cancel to stop capturing." msgstr "按下想要的快捷键或按下[取消]以停止捕获." #: ../../WPrefs.app/KeyboardShortcuts.c:206 #: ../../WPrefs.app/KeyboardShortcuts.c:454 ../../WPrefs.app/Menu.c:1022 #: ../../WPrefs.app/Menu.c:1245 msgid "Capture" msgstr "捕获" #: ../../WPrefs.app/KeyboardShortcuts.c:207 #: ../../WPrefs.app/KeyboardShortcuts.c:461 msgid "Click Capture to interactively define the shortcut key." msgstr "按下[捕获]可交互定义快捷键." #: ../../WPrefs.app/KeyboardShortcuts.c:361 msgid "Actions" msgstr "动作" #: ../../WPrefs.app/KeyboardShortcuts.c:377 msgid "Open applications menu" msgstr "打开应用程序菜单" #: ../../WPrefs.app/KeyboardShortcuts.c:378 msgid "Open window list menu" msgstr "打开窗口列表菜单" #: ../../WPrefs.app/KeyboardShortcuts.c:379 msgid "Open window commands menu" msgstr "打开窗口命令菜单" #: ../../WPrefs.app/KeyboardShortcuts.c:380 msgid "Hide active application" msgstr "隐藏活动的应用程序" #: ../../WPrefs.app/KeyboardShortcuts.c:381 msgid "Miniaturize active window" msgstr "最小化活动窗口" #: ../../WPrefs.app/KeyboardShortcuts.c:382 msgid "Close active window" msgstr "关闭活动窗口" #: ../../WPrefs.app/KeyboardShortcuts.c:383 msgid "Maximize active window" msgstr "最大化活动窗口" #: ../../WPrefs.app/KeyboardShortcuts.c:384 msgid "Maximize active window vertically" msgstr "垂直最大化活动窗口" #: ../../WPrefs.app/KeyboardShortcuts.c:385 msgid "Raise active window" msgstr "把活动窗口放在最前" #: ../../WPrefs.app/KeyboardShortcuts.c:386 msgid "Lower active window" msgstr "把活动窗口放在最后" #: ../../WPrefs.app/KeyboardShortcuts.c:387 msgid "Raise/Lower window under mouse pointer" msgstr "把鼠标下的窗口放置在最前/最后" #: ../../WPrefs.app/KeyboardShortcuts.c:388 msgid "Shade active window" msgstr "卷起活动窗口" #: ../../WPrefs.app/KeyboardShortcuts.c:389 msgid "Move/Resize active window" msgstr "移动/调整活动窗口大小" #: ../../WPrefs.app/KeyboardShortcuts.c:390 msgid "Select active window" msgstr "选取活动窗口" #: ../../WPrefs.app/KeyboardShortcuts.c:391 msgid "Focus next window" msgstr "焦点移至下一个窗口" #: ../../WPrefs.app/KeyboardShortcuts.c:392 msgid "Focus previous window" msgstr "焦点移至上一个窗口" #: ../../WPrefs.app/KeyboardShortcuts.c:393 msgid "Switch to next workspace" msgstr "切换至下一个工作区" #: ../../WPrefs.app/KeyboardShortcuts.c:394 msgid "Switch to previous workspace" msgstr "切换至上一个工作区" #: ../../WPrefs.app/KeyboardShortcuts.c:395 msgid "Switch to next ten workspaces" msgstr "切换至后十个工作区" #: ../../WPrefs.app/KeyboardShortcuts.c:396 msgid "Switch to previous ten workspaces" msgstr "切换至前十个工作区" #: ../../WPrefs.app/KeyboardShortcuts.c:397 msgid "Switch to workspace 1" msgstr "切换至工作区 1" #: ../../WPrefs.app/KeyboardShortcuts.c:398 msgid "Switch to workspace 2" msgstr "切换至工作区 2" #: ../../WPrefs.app/KeyboardShortcuts.c:399 msgid "Switch to workspace 3" msgstr "切换至工作区 3" #: ../../WPrefs.app/KeyboardShortcuts.c:400 msgid "Switch to workspace 4" msgstr "切换至工作区 4" #: ../../WPrefs.app/KeyboardShortcuts.c:401 msgid "Switch to workspace 5" msgstr "切换至工作区 5" #: ../../WPrefs.app/KeyboardShortcuts.c:402 msgid "Switch to workspace 6" msgstr "切换至工作区 6" #: ../../WPrefs.app/KeyboardShortcuts.c:403 msgid "Switch to workspace 7" msgstr "切换至工作区 7" #: ../../WPrefs.app/KeyboardShortcuts.c:404 msgid "Switch to workspace 8" msgstr "切换至工作区 8" #: ../../WPrefs.app/KeyboardShortcuts.c:405 msgid "Switch to workspace 9" msgstr "切换至工作区 9" #: ../../WPrefs.app/KeyboardShortcuts.c:406 msgid "Switch to workspace 10" msgstr "切换至工作区 10" #: ../../WPrefs.app/KeyboardShortcuts.c:407 msgid "Shortcut for window 1" msgstr "窗口 1 的快捷键" #: ../../WPrefs.app/KeyboardShortcuts.c:408 msgid "Shortcut for window 2" msgstr "窗口 2 的快捷键" #: ../../WPrefs.app/KeyboardShortcuts.c:409 msgid "Shortcut for window 3" msgstr "窗口 3 的快捷键" #: ../../WPrefs.app/KeyboardShortcuts.c:410 msgid "Shortcut for window 4" msgstr "窗口 4 的快捷键" #: ../../WPrefs.app/KeyboardShortcuts.c:412 msgid "Shortcut for window 5" msgstr "窗口 5 的快捷键" #: ../../WPrefs.app/KeyboardShortcuts.c:413 msgid "Shortcut for window 6" msgstr "窗口 6 的快捷键" #: ../../WPrefs.app/KeyboardShortcuts.c:414 msgid "Shortcut for window 7" msgstr "窗口 7 的快捷键" #: ../../WPrefs.app/KeyboardShortcuts.c:415 msgid "Shortcut for window 8" msgstr "窗口 8 的快捷键" #: ../../WPrefs.app/KeyboardShortcuts.c:416 msgid "Shortcut for window 9" msgstr "窗口 9 的快捷键" #: ../../WPrefs.app/KeyboardShortcuts.c:417 msgid "Shortcut for window 10" msgstr "窗口 10 的快捷键" #: ../../WPrefs.app/KeyboardShortcuts.c:419 msgid "Raise Clip" msgstr "放置夹子在最前" #: ../../WPrefs.app/KeyboardShortcuts.c:420 msgid "Lower Clip" msgstr "放置夹子在后" #: ../../WPrefs.app/KeyboardShortcuts.c:421 msgid "Raise/Lower Clip" msgstr "把夹子放置在前/后" #: ../../WPrefs.app/KeyboardShortcuts.c:423 msgid "Toggle keyboard language" msgstr "切换键盘语言" #: ../../WPrefs.app/KeyboardShortcuts.c:437 ../../WPrefs.app/Menu.c:1234 msgid "Shortcut" msgstr "快捷键" #: ../../WPrefs.app/KeyboardShortcuts.c:448 msgid "Clear" msgstr "清除" #: ../../WPrefs.app/KeyboardShortcuts.c:509 msgid "Keyboard Shortcut Preferences" msgstr "快捷键设置" #: ../../WPrefs.app/KeyboardShortcuts.c:511 msgid "" "Change the keyboard shortcuts for actions such\n" "as changing workspaces and opening menus." msgstr "" "改变动作的键盘快捷键, 例如改变工作空间和\n" "打开菜单." #: ../../WPrefs.app/Menu.c:422 msgid "Window Manager" msgstr "窗口管理器" #: ../../WPrefs.app/Menu.c:424 msgid "Program to Open Files" msgstr "打开文件的程序" #: ../../WPrefs.app/Menu.c:426 msgid "Command to Execute" msgstr "要执行的命令" #: ../../WPrefs.app/Menu.c:428 ../../WPrefs.app/Menu.c:1221 msgid "Program to Run" msgstr "要运行的程序" #: ../../WPrefs.app/Menu.c:477 ../../WPrefs.app/Menu.c:478 #, c-format msgid "New Command %i" msgstr "新建命令 %i" #: ../../WPrefs.app/Menu.c:485 msgid "New Submenu" msgstr "新建子菜单" #: ../../WPrefs.app/Menu.c:490 msgid "External Menu" msgstr "外部菜单" #: ../../WPrefs.app/Menu.c:497 msgid "Workspaces" msgstr "工作区" #: ../../WPrefs.app/Menu.c:1102 ../../WPrefs.app/Menu.c:1117 msgid "Commands" msgstr "命令" #: ../../WPrefs.app/Menu.c:1103 ../../WPrefs.app/Menu.c:1118 msgid "Add Command" msgstr "添加命令" #: ../../WPrefs.app/Menu.c:1104 ../../WPrefs.app/Menu.c:1119 msgid "Add Submenu" msgstr "添加子菜单" #: ../../WPrefs.app/Menu.c:1105 ../../WPrefs.app/Menu.c:1120 msgid "Add External Menu" msgstr "添加外部菜单" #: ../../WPrefs.app/Menu.c:1106 ../../WPrefs.app/Menu.c:1121 msgid "Add Workspace Menu" msgstr "添加工作区菜单" #: ../../WPrefs.app/Menu.c:1107 ../../WPrefs.app/Menu.c:1122 msgid "Remove Item" msgstr "删除项目" #: ../../WPrefs.app/Menu.c:1108 ../../WPrefs.app/Menu.c:1123 msgid "Cut Item" msgstr "剪切项目" #: ../../WPrefs.app/Menu.c:1109 ../../WPrefs.app/Menu.c:1124 msgid "Copy Item" msgstr "复制项目" #: ../../WPrefs.app/Menu.c:1110 ../../WPrefs.app/Menu.c:1125 msgid "Paste Item" msgstr "粘贴项目" #: ../../WPrefs.app/Menu.c:1156 msgid "Label" msgstr "标签" #: ../../WPrefs.app/Menu.c:1169 msgid "Command" msgstr "命令" #: ../../WPrefs.app/Menu.c:1174 msgid "Run Program" msgstr "运行程序" #: ../../WPrefs.app/Menu.c:1175 msgid "Execute Shell Command" msgstr "执行 shell 命令" #: ../../WPrefs.app/Menu.c:1176 msgid "Arrange Icons" msgstr "排列图标" #: ../../WPrefs.app/Menu.c:1177 msgid "Hide Others" msgstr "隐藏其他" #: ../../WPrefs.app/Menu.c:1178 msgid "Show All Windows" msgstr "显示所有窗口" #: ../../WPrefs.app/Menu.c:1179 msgid "Exit WindowMaker" msgstr "退出 WindowMaker" #: ../../WPrefs.app/Menu.c:1180 msgid "Exit X Session" msgstr "退出 X 会话" #: ../../WPrefs.app/Menu.c:1181 msgid "Start Window Manager" msgstr "启动窗口管理器" #: ../../WPrefs.app/Menu.c:1182 msgid "Restart WindowMaker" msgstr "重新启动 WindowMaker" #: ../../WPrefs.app/Menu.c:1183 msgid "Save Session" msgstr "保存会话" #: ../../WPrefs.app/Menu.c:1184 msgid "Clear Session" msgstr "清除会话" #: ../../WPrefs.app/Menu.c:1185 msgid "Refresh Screen" msgstr "刷新屏幕" #: ../../WPrefs.app/Menu.c:1186 msgid "Info Panel" msgstr "信息面板" #: ../../WPrefs.app/Menu.c:1187 msgid "Legal Panel" msgstr "版权面板" #: ../../WPrefs.app/Menu.c:1195 msgid "Open workspace menu" msgstr "打开工作区菜单" #: ../../WPrefs.app/Menu.c:1202 msgid "No confirmation panel" msgstr "没有确认面板" #: ../../WPrefs.app/Menu.c:1208 msgid "Menu Path/Directory List" msgstr "菜单路径/目录列表" #: ../../WPrefs.app/Menu.c:1253 msgid "Ask help to the Guru" msgstr "向专家求助" #. if there is a localized plmenu for the tongue put it's filename here #: ../../WPrefs.app/Menu.c:1365 ../../WPrefs.app/Menu.c:1372 #, c-format msgid "%s/Library/WindowMaker/plmenu" msgstr "%s/Library/WindowMaker/plmenu" #: ../../WPrefs.app/Menu.c:1381 #, c-format msgid "Could not open default menu from '%s'" msgstr "不能从'%s'打开默认菜单" #: ../../WPrefs.app/Menu.c:1491 msgid "Applications Menu Definition" msgstr "应用程序菜单定义" #: ../../WPrefs.app/Menu.c:1493 msgid "Edit the menu for launching applications." msgstr "编辑启动应用程序的菜单." #: ../../WPrefs.app/MenuPreferences.c:114 msgid "Menu Scrolling Speed" msgstr "菜单滚动速度" #: ../../WPrefs.app/MenuPreferences.c:163 msgid "Submenu Alignment" msgstr "子菜单对齐" #: ../../WPrefs.app/MenuPreferences.c:207 msgid "" "Always open submenus inside the screen, instead of scrolling." msgstr "" "总是在屏幕内显示子菜单,而不是滚动." #: ../../WPrefs.app/MenuPreferences.c:212 msgid "Scroll off-screen menus when pointer is moved over them." msgstr "当鼠标位于其上时,把屏幕之外的菜单滚动到屏幕内." #: ../../WPrefs.app/MenuPreferences.c:232 msgid "Menu Preferences" msgstr "菜单设置" #: ../../WPrefs.app/MenuPreferences.c:234 msgid "" "Menu usability related options. Scrolling speed,\n" "alignment of submenus etc." msgstr "" "菜单可用性相关的选项. 滚动速度, 对齐或子菜单等." #: ../../WPrefs.app/MouseSettings.c:150 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:229 #, c-format msgid "mouse button %s not supported by WPrefs." msgstr "WPrefs 不支持鼠标按钮 %s." #: ../../WPrefs.app/MouseSettings.c:265 ../../WPrefs.app/MouseSettings.c:278 #: ../../WPrefs.app/MouseSettings.c:291 #, c-format msgid "bad value %s for option %s" msgstr "选项 %s 的值 %s 错误" #: ../../WPrefs.app/MouseSettings.c:351 #, c-format msgid "" "modifier key %s for option ModifierKey was not recognized. Using %s as " "default" msgstr "ModifierKey 选项的修饰键 %s 不能辨认.使用默认值 %s " #: ../../WPrefs.app/MouseSettings.c:376 msgid "could not retrieve keyboard modifier mapping" msgstr "不能提取键盘修饰键映射" #: ../../WPrefs.app/MouseSettings.c:523 msgid "Mouse Speed" msgstr "鼠标速度" #: ../../WPrefs.app/MouseSettings.c:553 msgid "Accel.:" msgstr "加速值:" #: ../../WPrefs.app/MouseSettings.c:566 msgid "Threshold:" msgstr "加速阈值:" #: ../../WPrefs.app/MouseSettings.c:581 msgid "Double-Click Delay" msgstr "双击延时" #: ../../WPrefs.app/MouseSettings.c:625 msgid "Test" msgstr "测试" #: ../../WPrefs.app/MouseSettings.c:655 msgid "Workspace Mouse Actions" msgstr "工作区鼠标动作" #: ../../WPrefs.app/MouseSettings.c:660 msgid "Disable mouse actions" msgstr "使鼠标动作失效" #: ../../WPrefs.app/MouseSettings.c:713 msgid "Applications menu" msgstr "应用程序菜单" #: ../../WPrefs.app/MouseSettings.c:719 msgid "Window list menu" msgstr "窗口列表菜单" #: ../../WPrefs.app/MouseSettings.c:725 msgid "Select windows" msgstr "选取窗口" #: ../../WPrefs.app/MouseSettings.c:760 msgid "Mouse Grab Modifier" msgstr "鼠标争夺修饰键" #: ../../WPrefs.app/MouseSettings.c:762 msgid "" "Keyboard modifier to use for actions that\n" "involve dragging windows with the mouse,\n" "clicking inside the window." msgstr "" "在某些动作中使用到的键盘修饰键, 这些动作\n" "有关用鼠标拖动窗口, 在窗口中点击等." #: ../../WPrefs.app/MouseSettings.c:796 #, c-format msgid "could not create %s" msgstr "不能建立 %s" #: ../../WPrefs.app/MouseSettings.c:812 #, c-format msgid "could not create temporary file %s" msgstr "不能建立临时文件 %s" #: ../../WPrefs.app/MouseSettings.c:843 #, c-format msgid "could not rename file %s to %s\n" msgstr "不能改变文件名 %s 到 %s\n" #: ../../WPrefs.app/MouseSettings.c:927 msgid "Mouse Preferences" msgstr "鼠标设置" #: ../../WPrefs.app/MouseSettings.c:929 msgid "" "Mouse speed/acceleration, double click delay,\n" "mouse button bindings etc." msgstr "" "鼠标速度/加速, 双击间隔, 鼠标按钮关联等." #: ../../WPrefs.app/NoMenuAlert.c:100 msgid "Copy Default Menu" msgstr "复制默认菜单" #: ../../WPrefs.app/NoMenuAlert.c:106 msgid "Keep Current Menu" msgstr "保留当前菜单" #: ../../WPrefs.app/Paths.c:84 msgid "bad value in option IconPath. Using default path list" msgstr "IconPath 选项的值错误.使用默认路径列表" #: ../../WPrefs.app/Paths.c:101 msgid "bad value in option PixmapPath. Using default path list" msgstr "PixmapPath 选项的值错误.使用默认路径列表" #: ../../WPrefs.app/Paths.c:149 msgid "Select directory" msgstr "选择目录" #: ../../WPrefs.app/Paths.c:281 ../../WPrefs.app/Paths.c:312 #: ../../WPrefs.app/TexturePanel.c:1302 msgid "Add" msgstr "添加" #: ../../WPrefs.app/Paths.c:288 ../../WPrefs.app/Paths.c:319 msgid "Remove" msgstr "删除" #: ../../WPrefs.app/Paths.c:341 msgid "Search Path Configuration" msgstr "搜索路径配置" #: ../../WPrefs.app/Paths.c:343 msgid "" "Search paths to use when looking for pixmaps\n" "and icons." msgstr "" "在寻找位图和图标的时候使用的搜索路径." #: ../../WPrefs.app/Preferences.c:159 msgid "Size Display" msgstr "窗口大小显示" #: ../../WPrefs.app/Preferences.c:161 msgid "" "The position or style of the window size\n" "display that's shown when a window is resized." msgstr "" "当窗口大小改变时窗口大小显示的位置或风格." #: ../../WPrefs.app/Preferences.c:168 ../../WPrefs.app/Preferences.c:188 msgid "Corner of screen" msgstr "屏幕角落" #: ../../WPrefs.app/Preferences.c:169 ../../WPrefs.app/Preferences.c:189 msgid "Center of screen" msgstr "屏幕中央" #: ../../WPrefs.app/Preferences.c:170 ../../WPrefs.app/Preferences.c:190 msgid "Center of resized window" msgstr "调整大小后的窗口中央" #: ../../WPrefs.app/Preferences.c:171 msgid "Technical drawing-like" msgstr "技术制图风格" #: ../../WPrefs.app/Preferences.c:179 msgid "Position Display" msgstr "位置显示" #: ../../WPrefs.app/Preferences.c:181 msgid "" "The position or style of the window position\n" "display that's shown when a window is moved." msgstr "" "当窗口移动时窗口位置显示的位置或风格." #: ../../WPrefs.app/Preferences.c:198 msgid "Show balloon text for..." msgstr "显示浮动文字..." #: ../../WPrefs.app/Preferences.c:205 msgid "incomplete window titles" msgstr "不完整的窗口标题" #: ../../WPrefs.app/Preferences.c:206 msgid "miniwindow titles" msgstr "小窗口标题" #: ../../WPrefs.app/Preferences.c:207 msgid "application/dock icons" msgstr "应用程序/嵌入器图标" #: ../../WPrefs.app/Preferences.c:208 msgid "internal help" msgstr "内部帮助" #: ../../WPrefs.app/Preferences.c:220 msgid "Raise window when switching focus with keyboard" msgstr "当使用键盘切换焦点时把窗口放置在前" #: ../../WPrefs.app/Preferences.c:226 msgid "Keep keyboard language status for each window." msgstr "为每个窗口保持键盘语言状态" #: ../../WPrefs.app/Preferences.c:247 msgid "Miscellaneous Ergonomic Preferences" msgstr "其他操作性设置" #: ../../WPrefs.app/Preferences.c:248 msgid "" "Various settings like balloon text, geometry\n" "displays etc." msgstr "" "有关浮动文字, 几何参数显示和其他选项的各种设置." #: ../../WPrefs.app/Text.c:181 #, c-format msgid "Invalid font %s." msgstr "无效的字体 %s." #: ../../WPrefs.app/Text.c:258 msgid "Set Font..." msgstr "设置字体..." #: ../../WPrefs.app/Text.c:264 msgid "Window Title Font" msgstr "窗口标题字体" #: ../../WPrefs.app/Text.c:265 msgid "Menu Title Font" msgstr "菜单标题字体" #: ../../WPrefs.app/Text.c:266 msgid "Menu Item Font" msgstr "菜单项目字体" #: ../../WPrefs.app/Text.c:267 msgid "Icon Title Font" msgstr "图标标题字体" #: ../../WPrefs.app/Text.c:268 msgid "Clip Title Font" msgstr "夹子标题字体" #: ../../WPrefs.app/Text.c:269 msgid "Geometry Display Font" msgstr "几何参数显示字体" #: ../../WPrefs.app/Text.c:282 msgid "" "Sample Text\n" "abcdefghijklmnopqrstuvxywz\n" "ABCDEFGHIJKLMNOPQRSTUVXYWZ\n" "0123456789" msgstr "" "示例文字\n" "abcdefghijklmnopqrstuvxywz\n" "ABCDEFGHIJKLMNOPQRSTUVXYWZ\n" "0123456789" #: ../../WPrefs.app/Text.c:287 msgid "Alignment" msgstr "对齐" #: ../../WPrefs.app/Text.c:327 msgid "Text Preferences" msgstr "文字设置" #: ../../WPrefs.app/TexturePanel.c:605 msgid "Could not load the selected file: " msgstr "不能载入选中的文件: " #: ../../WPrefs.app/TexturePanel.c:687 msgid "The selected file does not contain a supported image." msgstr "选中的文件不是被支持的格式的图像." #: ../../WPrefs.app/TexturePanel.c:1246 msgid "Texture Panel" msgstr "纹理面板" #: ../../WPrefs.app/TexturePanel.c:1254 msgid "Texture Name" msgstr "纹理名称" #: ../../WPrefs.app/TexturePanel.c:1266 msgid "Solid Color" msgstr "单色" #: ../../WPrefs.app/TexturePanel.c:1267 msgid "Gradient Texture" msgstr "过渡纹理" #: ../../WPrefs.app/TexturePanel.c:1268 msgid "Simple Gradient Texture" msgstr "简单的过渡纹理" #: ../../WPrefs.app/TexturePanel.c:1269 msgid "Textured Gradient" msgstr "纹理化的过渡色" #: ../../WPrefs.app/TexturePanel.c:1270 msgid "Image Texture" msgstr "图像纹理" #: ../../WPrefs.app/TexturePanel.c:1278 msgid "Default Color" msgstr "默认颜色" #: ../../WPrefs.app/TexturePanel.c:1290 msgid "Gradient Colors" msgstr "过渡色" #: ../../WPrefs.app/TexturePanel.c:1386 msgid "Direction" msgstr "方向" #: ../../WPrefs.app/TexturePanel.c:1414 msgid "Gradient" msgstr "过渡色" #: ../../WPrefs.app/TexturePanel.c:1432 msgid "Gradient Opacity" msgstr "过渡色不透明度" #: ../../WPrefs.app/TexturePanel.c:1475 msgid "Image" msgstr "图像" #: ../../WPrefs.app/TexturePanel.c:1495 msgid "Browse..." msgstr "浏览..." #: ../../WPrefs.app/TexturePanel.c:1507 msgid "Tile" msgstr "并列" #: ../../WPrefs.app/TexturePanel.c:1508 msgid "Scale" msgstr "缩放" #: ../../WPrefs.app/TexturePanel.c:1510 msgid "Maximize" 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:204 #: ../../WPrefs.app/Themes.c:224 msgid "Download" msgstr "下载" #: ../../WPrefs.app/Themes.c:172 msgid "Save Current Theme" msgstr "保存当前主题" #: ../../WPrefs.app/Themes.c:181 msgid "Load" msgstr "载入" #: ../../WPrefs.app/Themes.c:186 msgid "Install" msgstr "安装" #: ../../WPrefs.app/Themes.c:194 msgid "Tile of The Day" msgstr "本日标题" #: ../../WPrefs.app/Themes.c:214 msgid "Bar of The Day" msgstr "本日标题行" #: ../../WPrefs.app/Themes.c:251 msgid "Themes" msgstr "主题" #: ../../WPrefs.app/WindowHandling.c:136 #, c-format msgid "bad option value %s in WindowPlacement. Using default value" msgstr "WindowPlacement 选项 %s 错误.使用默认值" #: ../../WPrefs.app/WindowHandling.c:158 msgid "invalid data in option WindowPlaceOrigin. Using default (0,0)" msgstr "窗口放置起点选项中数据无效.使用默认值(0,0)" #: ../../WPrefs.app/WindowHandling.c:225 msgid "Window Placement" msgstr "窗口放置" #: ../../WPrefs.app/WindowHandling.c:226 msgid "" "How to place windows when they are first put\n" "on screen." msgstr "" "当窗口初次出现在屏幕上时怎样放置窗口." #: ../../WPrefs.app/WindowHandling.c:232 msgid "Automatic" msgstr "自动" #: ../../WPrefs.app/WindowHandling.c:233 msgid "Random" msgstr "随机" #: ../../WPrefs.app/WindowHandling.c:234 msgid "Manual" msgstr "手工" #: ../../WPrefs.app/WindowHandling.c:235 msgid "Cascade" msgstr "层叠" #: ../../WPrefs.app/WindowHandling.c:241 msgid "Placement Origin" msgstr "放置起点" #: ../../WPrefs.app/WindowHandling.c:301 msgid "Opaque Move" msgstr "不透明移动" #: ../../WPrefs.app/WindowHandling.c:302 msgid "" "Whether the window contents should be moved\n" "when dragging windows aroung or if only a\n" "frame should be displayed.\n" msgstr "" "在拖动窗口时是否显示窗口的内容, 或者\n" "只显示窗口的边框.\n" #: ../../WPrefs.app/WindowHandling.c:341 msgid "When maximizing..." msgstr "当最大化时..." #: ../../WPrefs.app/WindowHandling.c:346 msgid "...do not cover icons" msgstr "...不覆盖图标" #: ../../WPrefs.app/WindowHandling.c:352 msgid "...do not cover dock" msgstr "...不覆盖嵌入器" #: ../../WPrefs.app/WindowHandling.c:361 msgid "Edge Resistance" msgstr "边缘阻力" #: ../../WPrefs.app/WindowHandling.c:363 msgid "" "Edge resistance will make windows `resist'\n" "being moved further for the defined threshold\n" "when moved against other windows or the edges\n" "of the screen." msgstr "" "边缘阻力使窗口移动到其他窗口或屏幕边缘\n" "时, 根据定义的阈值对进一步移动进行`抵制'" #: ../../WPrefs.app/WindowHandling.c:390 msgid "Open dialogs in same workspace as their owners" msgstr "在程序所在的同一工作区打开对话框" #: ../../WPrefs.app/WindowHandling.c:417 msgid "Window Handling Preferences" msgstr "窗口处理设置" #: ../../WPrefs.app/WindowHandling.c:419 msgid "" "Window handling options. Initial placement style\n" "edge resistance, opaque move etc." msgstr "" "窗口处理选项. 起始放置风格, 边缘阻力, 不透明\n" "移动等." #: ../../WPrefs.app/Workspace.c:139 msgid "Workspace Navigation" msgstr "工作区导航" #: ../../WPrefs.app/Workspace.c:163 msgid "drag windows between workspaces." msgstr "在工作区之间拖动窗口." #: ../../WPrefs.app/Workspace.c:188 msgid "" "switch to first workspace when switching past the last workspace and " "vice-versa" msgstr "当切换过最后一个工作区时切换到第一个工作区,反之亦然." #: ../../WPrefs.app/Workspace.c:212 msgid "create a new workspace when switching past the last workspace." msgstr "当切换过最后一个工作区时建立新的工作区." #: ../../WPrefs.app/Workspace.c:220 msgid "Dock/Clip" msgstr "嵌入/夹子" #: ../../WPrefs.app/Workspace.c:239 msgid "" "Disable/enable the application Dock (the\n" "vertical icon bar in the side of the screen)." msgstr "" "取消/允许应用程序嵌入器 (在屏幕侧面的\n" "垂直图标条)." #: ../../WPrefs.app/Workspace.c:259 msgid "" "Disable/enable the Clip (that thing with\n" "a paper clip icon)." msgstr "" "取消/允许夹子(带有纸夹图标的东西)." #: ../../WPrefs.app/Workspace.c:296 msgid "Workspace Preferences" msgstr "工作区设置" #: ../../WPrefs.app/Workspace.c:298 msgid "" "Workspace navigation features.\n" "You can also enable/disable the Dock and Clip here." msgstr "" "工作空间导航特性. 你可以在这里\n" "取消/允许嵌入器和夹子." #: ../../WPrefs.app/MenuGuru.c:106 msgid "Menu Guru - Select Type" msgstr "菜单专家 - 选择类型" #: ../../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 "菜单专家 - 选择菜单文件" #: ../../WPrefs.app/MenuGuru.c:122 msgid "Menu Guru - Select Pipe Command" msgstr "菜单专家 - 选择管道命令" #: ../../WPrefs.app/MenuGuru.c:129 msgid "Menu Guru - Select Directories" msgstr "菜单专家 - 选择目录" #: ../../WPrefs.app/MenuGuru.c:136 msgid "Menu Guru - Select Command" msgstr "菜单专家 - 选择命令" #: ../../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 里" #: ../../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 里" #: ../../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 " "imagefile\" 的菜单项." ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/po/ca.po��������������������������������������������������������������0000644�0001750�0001750�00000166712�13431646201�014331� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Catalan messages for WindowMaker WPrefs.app. # Copyright (C) 2002 Ernest Adrogué <eadrogue@gmx.net>. # This file is distributed under the terms of the GNU General Public License. # # Version history: # WP-ver author email date # 0.45 Ernest Adrogué eadrogue@gmx.net 04 Dec 2002 # CVS-20030914 Ernest Adrogué eadrogue@gmx.net 15 Set 2003 # msgid "" msgstr "" "Project-Id-Version: wprefs 0.45\n" "POT-Creation-Date: 2003-09-16 22:59+0200\n" "PO-Revision-Date: 2003-09-16 23:15+0200\n" "Last-Translator: Ernest Adrogué <eadrogue@gmx.net>\n" "Language-Team: Catalan <ca@dodds.net>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../../WPrefs.app/Appearance.c:1154 msgid "Select File" msgstr "Trieu un fitxer" #: ../../WPrefs.app/Appearance.c:1555 msgid "Focused Window" msgstr "Finestra enfocada" #: ../../WPrefs.app/Appearance.c:1560 msgid "Unfocused Window" msgstr "Finestra desenfocada" #: ../../WPrefs.app/Appearance.c:1565 msgid "Owner of Focused Window" msgstr "Amo de la finestra enfocada" #: ../../WPrefs.app/Appearance.c:1570 ../../WPrefs.app/Appearance.c:1893 #: ../../WPrefs.app/Font.c:408 msgid "Menu Title" msgstr "Títol de menú" #: ../../WPrefs.app/Appearance.c:1575 ../../WPrefs.app/Appearance.c:1578 msgid "Normal Item" msgstr "Ítem normal" #: ../../WPrefs.app/Appearance.c:1583 msgid "Disabled Item" msgstr "Deshabilitat" #: ../../WPrefs.app/Appearance.c:1595 msgid "Highlighted" msgstr "Seleccionat" #: ../../WPrefs.app/Appearance.c:1786 msgid "Texture" msgstr "Textura" #: ../../WPrefs.app/Appearance.c:1794 msgid "Titlebar of Focused Window" msgstr "Barra de títol enfocada" #: ../../WPrefs.app/Appearance.c:1795 msgid "Titlebar of Unfocused Windows" msgstr "Barra de títol no enfocada" #: ../../WPrefs.app/Appearance.c:1796 msgid "Titlebar of Focused Window's Owner" msgstr "Barra de títol semienfocada" #: ../../WPrefs.app/Appearance.c:1797 msgid "Window Resizebar" msgstr "Barra inferior" #: ../../WPrefs.app/Appearance.c:1798 msgid "Titlebar of Menus" msgstr "Barra de títol de menú" #: ../../WPrefs.app/Appearance.c:1799 msgid "Menu Items" msgstr "Ítems de menú" #: ../../WPrefs.app/Appearance.c:1800 msgid "Icon Background" msgstr "Fons de les icones" #: ../../WPrefs.app/Appearance.c:1815 msgid "" "Double click in the texture you want to use\n" "for the selected item." msgstr "" "Feu doble clic sobre la textura que volgueu\n" "utilitzar per a l'element seleccionat." #: ../../WPrefs.app/Appearance.c:1829 msgid "New" msgstr "Nova" #: ../../WPrefs.app/Appearance.c:1833 msgid "Create a new texture." msgstr "Crea una textura nova." #: ../../WPrefs.app/Appearance.c:1841 msgid "Extract..." msgstr "Extreu..." #: ../../WPrefs.app/Appearance.c:1845 msgid "Extract texture(s) from a theme or a style file." msgstr "" "Extreu una textura (o vàries)\n" "d'un fitxer de tema o estil." #: ../../WPrefs.app/Appearance.c:1855 msgid "Edit" msgstr "Edita" #: ../../WPrefs.app/Appearance.c:1858 msgid "Edit the highlighted texture." msgstr "Edita la textura seleccionada." #: ../../WPrefs.app/Appearance.c:1866 ../../WPrefs.app/TexturePanel.c:1318 msgid "Delete" msgstr "Elimina" #: ../../WPrefs.app/Appearance.c:1870 msgid "Delete the highlighted texture." msgstr "Elimina la textura seleccionada." #: ../../WPrefs.app/Appearance.c:1883 msgid "Color" msgstr "Color" #: ../../WPrefs.app/Appearance.c:1890 msgid "Focused Window Title" msgstr "Títol de la finestra enfocada" #: ../../WPrefs.app/Appearance.c:1891 msgid "Unfocused Window Title" msgstr "Títol de finestra desenfocada" #: ../../WPrefs.app/Appearance.c:1892 msgid "Owner of Focused Window Title" msgstr "Títol de l'amo de la finestra enfocada" #: ../../WPrefs.app/Appearance.c:1894 msgid "Menu Item Text" msgstr "Text d'ítem de menú" #: ../../WPrefs.app/Appearance.c:1895 msgid "Disabled Menu Item Text" msgstr "Text d'ítem de menú deshabilitat" #: ../../WPrefs.app/Appearance.c:1896 msgid "Menu Highlight Color" msgstr "Color d'ítem de menú seleccionat" #: ../../WPrefs.app/Appearance.c:1897 msgid "Highlighted Menu Text Color" msgstr "Color de text d'ítem seleccionat" #: ../../WPrefs.app/Appearance.c:1936 msgid "Background" msgstr "Fons" #: ../../WPrefs.app/Appearance.c:1948 ../../WPrefs.app/TexturePanel.c:1504 msgid "Browse..." msgstr "Vés a..." #: ../../WPrefs.app/Appearance.c:1961 msgid "Options" msgstr "Opcions" #: ../../WPrefs.app/Appearance.c:1968 msgid "Menu Style" msgstr "Estil dels menús" #: ../../WPrefs.app/Appearance.c:1996 ../../WPrefs.app/Configurations.c:242 #: ../../WPrefs.app/Configurations.c:254 ../../WPrefs.app/Focus.c:288 #: ../../WPrefs.app/Focus.c:299 ../../WPrefs.app/MenuPreferences.c:134 #: ../../WPrefs.app/MenuPreferences.c:145 #: ../../WPrefs.app/MenuPreferences.c:173 #: ../../WPrefs.app/MenuPreferences.c:188 ../../WPrefs.app/MouseSettings.c:560 #: ../../WPrefs.app/MouseSettings.c:571 ../../WPrefs.app/WPrefs.c:558 #: ../../WPrefs.app/WPrefs.c:583 #, c-format msgid "could not load icon file %s" msgstr "no s'ha pogut carregar el fitxer d'icona %s" #: ../../WPrefs.app/Appearance.c:2010 msgid "Title Alignment" msgstr "Alineació del títol" #: ../../WPrefs.app/Appearance.c:2017 msgid "Left" msgstr "Esquerra" # s'usa en contexts diferents. eac #: ../../WPrefs.app/Appearance.c:2020 ../../WPrefs.app/TexturePanel.c:1518 #: ../../WPrefs.app/Workspace.c:270 msgid "Center" msgstr "Centre" #: ../../WPrefs.app/Appearance.c:2023 msgid "Right" msgstr "Dreta" #: ../../WPrefs.app/Appearance.c:2247 msgid "Appearance Preferences" msgstr "Preferències d'aparença" #: ../../WPrefs.app/Appearance.c:2249 msgid "" "Background texture configuration for windows,\n" "menus and icons." msgstr "" "Configuració de les textures de fons\n" "per a finestres, menús i icones." #: ../../WPrefs.app/Appearance.c:2294 msgid "Extract Texture" msgstr "Extreu textura" #: ../../WPrefs.app/Appearance.c:2314 msgid "Textures" msgstr "Textures" #: ../../WPrefs.app/Appearance.c:2325 ../../WPrefs.app/WPrefs.c:302 msgid "Close" msgstr "Tanca" #: ../../WPrefs.app/Appearance.c:2330 msgid "Extract" msgstr "Extreu" #: ../../WPrefs.app/Configurations.c:150 ../../WPrefs.app/Configurations.c:156 #: ../../WPrefs.app/MouseSettings.c:490 ../../WPrefs.app/WindowHandling.c:339 #: ../../WPrefs.app/WindowHandling.c:351 ../../WPrefs.app/Workspace.c:90 #: ../../WPrefs.app/Workspace.c:101 #, c-format msgid "could not load icon %s" msgstr "no s'ha pogut carregar el fitxer d'icona %s" #: ../../WPrefs.app/Configurations.c:164 ../../WPrefs.app/Workspace.c:109 #, c-format msgid "could not process icon %s: %s" msgstr "no s'ha pogut processar l'icona %s: %s" #: ../../WPrefs.app/Configurations.c:189 ../../WPrefs.app/Workspace.c:164 #, c-format msgid "could not load image file %s" msgstr "no s'ha pogut carregar el fitxer d'imatge %s" #: ../../WPrefs.app/Configurations.c:203 msgid "Icon Slide Speed" msgstr "Velocitat de lliscament de les icones" #: ../../WPrefs.app/Configurations.c:209 msgid "Shade Animation Speed" msgstr "Velocitat de l'animació d'ombrejat" #: ../../WPrefs.app/Configurations.c:271 msgid "Smooth Scaling" msgstr "Escalat suau" #: ../../WPrefs.app/Configurations.c:272 msgid "" "Smooth scaled background images, neutralizing\n" "the `pixelization' effect. This will slow\n" "down loading of background images considerably." msgstr "" "Escala les imatges de fons amb suavitat, eliminant\n" "l'efecte de \"pixelització\". Això fa augmentar el temps\n" "de càrrega de les imatges considerablement." #: ../../WPrefs.app/Configurations.c:313 msgid "Titlebar Style" msgstr "Estil dels botons" #: ../../WPrefs.app/Configurations.c:351 msgid "Animations and Sound" msgstr "Animacions i sons" #: ../../WPrefs.app/Configurations.c:357 msgid "Animations" msgstr "Animacions" #: ../../WPrefs.app/Configurations.c:368 msgid "" "Disable/enable animations such as those shown\n" "for window miniaturization, shading etc." msgstr "" "Habilita o deshabilita les animacions, com les\n" "que tenen lloc quan es miniaturitza una finestra,\n" "s'ombreja, et cetera." #: ../../WPrefs.app/Configurations.c:376 msgid "Superfluous" msgstr "Superflu" #: ../../WPrefs.app/Configurations.c:387 msgid "" "Disable/enable `superfluous' features and\n" "animations. These include the `ghosting' of the\n" "dock when it's being moved to another side and\n" "the explosion animation when undocking icons." msgstr "" "Habilita o deshabilita les funcions i animacions\n" "supèrflues, com per exemple l'imatge \"fantasme\" del\n" "Moll quan es canvia de lloc, o l'efecte d'explosió\n" "quan es desancora una icona." #: ../../WPrefs.app/Configurations.c:397 msgid "Sounds" msgstr "Sons" #: ../../WPrefs.app/Configurations.c:408 msgid "" "Disable/enable support for sound effects played\n" "for actions like shading and closing a window.\n" "You will need a module distributed separately\n" "for this. You can get it at:\n" "http://shadowmere.student.utwente.nl/" msgstr "" "Habilita o deshabilita els efectes de so que se\n" "senten, per exemple, quan s'ombreja o es tanca una\n" "finestra. Per habilitar aquesta funció necessiteu\n" "un mòdul que es distribueix per separat i que podeu\n" "trobar a: http://shadowmere.student.utwente.nl/" #: ../../WPrefs.app/Configurations.c:419 msgid "" "Note: sound requires a module distributed\n" "separately" msgstr "" "Nota: els efectes de so requereixen un mòdul que\n" "es distribueix per separat" #: ../../WPrefs.app/Configurations.c:429 msgid "Dithering colormap for 8bpp" msgstr "Difuminat del mapa de colors per 8bpp" #: ../../WPrefs.app/Configurations.c:431 msgid "" "Number of colors to reserve for Window Maker\n" "on displays that support only 8bpp (PseudoColor)." msgstr "" "Nombre de colors que es reserva Window Maker en\n" "pantalles que només suporten 8bpp (PseudoColor)." #: ../../WPrefs.app/Configurations.c:438 msgid "Disable dithering in any visual/depth" msgstr "Deshabilita el difuminat per totes les resolucions i profunditats" #: ../../WPrefs.app/Configurations.c:459 msgid "" "More colors for\n" "applications" msgstr "" "Més colors per\n" "les aplicacions" #: ../../WPrefs.app/Configurations.c:466 msgid "" "More colors for\n" "Window Maker" msgstr "" "Més colors per\n" "Window Maker" #: ../../WPrefs.app/Configurations.c:521 msgid "Other Configurations" msgstr "Altres configuracions" #: ../../WPrefs.app/Configurations.c:523 msgid "" "Animation speeds, titlebar styles, various option\n" "toggling and number of colors to reserve for\n" "Window Maker on 8bit displays." msgstr "" "Velocitat de les animacions, estils de la barra de títol,\n" "diverses opcions generals i el nombre de colors que es\n" "reserva Window Maker en pantalles de 8 bits." #: ../../WPrefs.app/Expert.c:77 msgid "" "Disable miniwindows (icons for miniaturized windows). For use with KDE/GNOME." msgstr "Deshabilitar les minifinestres (per a l'ús amb KDE o GNOME)." #: ../../WPrefs.app/Expert.c:78 msgid "Do not set non-WindowMaker specific parameters (do not use xset)." msgstr "No usar paràmetres no específics de Window Maker (no usar xset)." #: ../../WPrefs.app/Expert.c:79 msgid "Automatically save session when exiting Window Maker." msgstr "Desar la sessió automàticament en sortir de Window Maker." #: ../../WPrefs.app/Expert.c:80 msgid "Use SaveUnder in window frames, icons, menus and other objects." msgstr "" "Usar la funció SaveUnder en marcs de finestres, icones, menús i altres " "objectes." #: ../../WPrefs.app/Expert.c:81 msgid "Use Windoze style cycling." msgstr "Usar l'estil de rotació de finestres de MS Windows." #: ../../WPrefs.app/Expert.c:82 msgid "Disable confirmation panel for the Kill command." msgstr "No demanar confirmació per l'ordre \"Finalitzar\"." #: ../../WPrefs.app/Expert.c:83 msgid "Disable selection animation for selected icons." msgstr "Deshabilitar l'animació de selecció per les icones seleccionades." #: ../../WPrefs.app/Expert.c:84 msgid "Smooth font edges (needs restart)." msgstr "Habilitar l'allisat de fonts (és necessari reiniciar)." #: ../../WPrefs.app/Expert.c:123 msgid "Expert User Preferences" msgstr "Preferències per a usuaris experimentats" #: ../../WPrefs.app/Expert.c:125 msgid "" "Options for people who know what they're doing...\n" "Also have some other misc. options." msgstr "" "Opcions de configuració per a usuaris experts.\n" "I tambés algunes altres opcions diverses." #: ../../WPrefs.app/Focus.c:80 #, c-format msgid "bad option value %s for option FocusMode. Using default Manual" msgstr "" "el valor %s de l'opció FocusModu no és vàlid. S'usa el valor per omissió " "\"Manual\"" #: ../../WPrefs.app/Focus.c:94 #, c-format msgid "bad option value %s for option ColormapMode. Using default Auto" msgstr "" "el valor %s de l'opció ColormapMode no és vàlid. S'usa el valor per omissió " "\"Auto\"" #: ../../WPrefs.app/Focus.c:214 msgid "Input Focus Mode" msgstr "Mode d'enfocament" #: ../../WPrefs.app/Focus.c:222 msgid "Manual: Click on the window to set keyboard input focus" msgstr "Manual: Fer clic sobre la finestra per tal d'enfocar-la" #: ../../WPrefs.app/Focus.c:229 msgid "Auto: Set keyboard input focus to the window under the mouse pointer" msgstr "Auto: Enfoca la finestra que es troba sota el punter del ratolí" #: ../../WPrefs.app/Focus.c:243 msgid "Install colormap from the window..." msgstr "Instal·lar el mapa de color a la finestra..." #: ../../WPrefs.app/Focus.c:248 msgid "...that has the input focus" msgstr "...que està enfocada" #: ../../WPrefs.app/Focus.c:253 msgid "...that's under the mouse pointer" msgstr "...que està sota el punter del ratolí" #: ../../WPrefs.app/Focus.c:262 msgid "Automatic Window Raise Delay" msgstr "Elevació automàtica de la finestra" #: ../../WPrefs.app/Focus.c:319 ../../WPrefs.app/MouseSettings.c:601 msgid "ms" msgstr "ms" #: ../../WPrefs.app/Focus.c:336 msgid "Do not let applications receive the click used to focus windows" msgstr "No passar el clic utilitzat per enfocar la finestra a les aplicacions" #: ../../WPrefs.app/Focus.c:342 msgid "Automatically focus new windows" msgstr "Enfocar les finestres noves automàticament" #: ../../WPrefs.app/Focus.c:363 msgid "Window Focus Preferences" msgstr "Preferències d'enfocament de les finestres" #: ../../WPrefs.app/Focus.c:365 msgid "" "Keyboard focus switching policy, colormap switching\n" "policy for 8bpp displays and other related options." msgstr "" "Mode d'alternança d'enfocament de finestres, mapes de\n" "color (per pantalles de 8bpp) i opcions relacionades." #: ../../WPrefs.app/Font.c:400 ../../WPrefs.app/Font.c:1872 msgid "Window Title Font" msgstr "Font pel títol de finestra" #: ../../WPrefs.app/Font.c:404 msgid "Display" msgstr "Pantalla" #: ../../WPrefs.app/Font.c:412 msgid "Menu Item" msgstr "Ítem de menú" #: ../../WPrefs.app/Font.c:418 msgid "Clip title" msgstr "Títol del Clip" #: ../../WPrefs.app/Font.c:422 msgid "Icon Title" msgstr "Títol de les icones" #: ../../WPrefs.app/Font.c:726 msgid "error capturing \"original\" tile image" msgstr "error quan es capturava l'imatge \"original\" de l'icona" #: ../../WPrefs.app/Font.c:1130 msgid "Could not locate font information file WPrefs.app/font.data" msgstr "" "No s'ha trobat el fitxer d'informació de tipus de lletra WPrefs.app/font.data" #: ../../WPrefs.app/Font.c:1136 msgid "Could not read font information file WPrefs.app/font.data" msgstr "" "No s'ha pogut llegir el fitxer d'informació de tipus de lletra WPrefs.app/" "font.data" #: ../../WPrefs.app/Font.c:1147 msgid "" "Invalid data in font information file WPrefs.app/font.data.\n" "Encodings data not found." msgstr "" "Les dades del fitxer d'informació de tipus de lletra WPrefs.app/font.data\n" "no són vàlides. No s'han trobat les dades de codificació." #: ../../WPrefs.app/Font.c:1152 msgid "Current" msgstr "Actual" #: ../../WPrefs.app/Font.c:1197 ../../WPrefs.app/Menu.c:1592 #: ../../WPrefs.app/MouseSettings.c:140 ../../WPrefs.app/MouseSettings.c:160 #: ../../WPrefs.app/TexturePanel.c:615 ../../WPrefs.app/TexturePanel.c:695 #: ../../WPrefs.app/Themes.c:96 ../../WPrefs.app/WPrefs.c:759 #: ../../WPrefs.app/WPrefs.c:764 ../../WPrefs.app/WPrefs.c:781 #: ../../WPrefs.app/WPrefs.c:791 ../../WPrefs.app/WPrefs.c:801 #: ../../WPrefs.app/WPrefs.c:839 ../../WPrefs.app/WPrefs.c:844 msgid "Error" msgstr "Error" #: ../../WPrefs.app/Font.c:1197 ../../WPrefs.app/Font.c:1307 #: ../../WPrefs.app/Menu.c:1592 ../../WPrefs.app/MouseSettings.c:142 #: ../../WPrefs.app/MouseSettings.c:162 ../../WPrefs.app/TexturePanel.c:616 #: ../../WPrefs.app/TexturePanel.c:697 ../../WPrefs.app/TexturePanel.c:1529 #: ../../WPrefs.app/Themes.c:98 ../../WPrefs.app/WPrefs.c:759 #: ../../WPrefs.app/WPrefs.c:764 ../../WPrefs.app/WPrefs.c:783 #: ../../WPrefs.app/WPrefs.c:795 ../../WPrefs.app/WPrefs.c:801 #: ../../WPrefs.app/WPrefs.c:808 ../../WPrefs.app/WPrefs.c:839 #: ../../WPrefs.app/WPrefs.c:844 ../../WPrefs.app/imagebrowser.c:105 msgid "OK" msgstr "D'acord" #: ../../WPrefs.app/Font.c:1307 ../../WPrefs.app/Menu.c:1627 #: ../../WPrefs.app/WPrefs.c:808 msgid "Warning" msgstr "Atenció" #: ../../WPrefs.app/Font.c:1503 ../../WPrefs.app/Menu.c:1404 msgid "Yes" msgstr "Sí" #: ../../WPrefs.app/Font.c:1507 msgid "Auto" msgstr "Automàtic" #: ../../WPrefs.app/Font.c:1873 msgid "Large Display Font" msgstr "Visor gran de font" #: ../../WPrefs.app/Font.c:1874 msgid "Menu Title Font" msgstr "Font pel títol de menú" #: ../../WPrefs.app/Font.c:1875 msgid "Menu Item Font" msgstr "Font pels ítems de menú" #: ../../WPrefs.app/Font.c:1876 msgid "Clip Title Font" msgstr "Font pel títol del Clip" #: ../../WPrefs.app/Font.c:1877 msgid "Icon Title Font" msgstr "Font pel títol de les icones" #: ../../WPrefs.app/Font.c:1887 msgid "MultiByte" msgstr "Multi-octet" #: ../../WPrefs.app/Font.c:1901 msgid "Default Font Encodings" msgstr "Conjunt de caràcters per omissió" #: ../../WPrefs.app/Font.c:1917 msgid "Smooth Fonts" msgstr "Fonts allisades" #: ../../WPrefs.app/Font.c:1918 msgid "" "Smooth Font edges for the eye candy\n" "requires a restart after saving" msgstr "" "L'allisat de fonts requereix\n" "reiniciar el gestor de finestres." #: ../../WPrefs.app/Font.c:1927 msgid "Font Set" msgstr "Conjunt de fonts" #: ../../WPrefs.app/Font.c:1957 msgid "Add..." msgstr "Afegeix..." #: ../../WPrefs.app/Font.c:1963 ../../WPrefs.app/Font.c:1999 msgid "Change..." msgstr "Canvia..." #: ../../WPrefs.app/Font.c:1969 ../../WPrefs.app/Paths.c:284 #: ../../WPrefs.app/Paths.c:315 msgid "Remove" msgstr "Elimina" #: ../../WPrefs.app/Font.c:2095 msgid "Font Preferences" msgstr "Preferències de tipus de lletres" #: ../../WPrefs.app/Font.c:2096 msgid "Font Configurations for Windows, Menus etc" msgstr "Configuració dels tipus de lletra per finestres, menús, et cetera." #: ../../WPrefs.app/Icons.c:180 msgid "Icon Positioning" msgstr "Posició de les icones" #: ../../WPrefs.app/Icons.c:227 msgid "Iconification Animation" msgstr "Animació d'iconificació" #: ../../WPrefs.app/Icons.c:238 msgid "Shrinking/Zooming" msgstr "Reducció/Ampliació" #: ../../WPrefs.app/Icons.c:239 msgid "Spinning/Twisting" msgstr "Centrifugat" #: ../../WPrefs.app/Icons.c:240 msgid "3D-flipping" msgstr "Tombarelles" #: ../../WPrefs.app/Icons.c:241 ../../WPrefs.app/MouseSettings.c:838 #: ../../WPrefs.app/MouseSettings.c:843 msgid "None" msgstr "Cap" #: ../../WPrefs.app/Icons.c:254 msgid "Auto-arrange icons" msgstr "Arranjar les icones automàticament" #: ../../WPrefs.app/Icons.c:256 msgid "Keep icons and miniwindows arranged all the time." msgstr "Manté les icones i minifestres arranjades en tot moment." #: ../../WPrefs.app/Icons.c:262 msgid "Omnipresent miniwindows" msgstr "Minifinestres omnipresents" #: ../../WPrefs.app/Icons.c:264 msgid "Make miniwindows be present in all workspaces." msgstr "Fa les minifinestres presents a totes les àrees de treball." #: ../../WPrefs.app/Icons.c:273 msgid "Icon Size" msgstr "Mida de les icones" #: ../../WPrefs.app/Icons.c:275 msgid "The size of the dock/application icon and miniwindows" msgstr "Mida del moll, icones d'aplicació i minifinestres" #: ../../WPrefs.app/Icons.c:345 msgid "Icon Preferences" msgstr "Preferències d'icones" #: ../../WPrefs.app/Icons.c:347 msgid "" "Icon/Miniwindow handling options. Icon positioning\n" "area, sizes of icons, miniaturization animation style." msgstr "" "Opcions d'icones i minifinestres. Posició, mides\n" "i estil de les animacions de miniaturització." #: ../../WPrefs.app/KeyboardSettings.c:73 msgid "Initial Key Repeat" msgstr "Repetició inicial de tecla" #: ../../WPrefs.app/KeyboardSettings.c:114 msgid "Key Repeat Rate" msgstr "Taxa de repetició" #: ../../WPrefs.app/KeyboardSettings.c:154 msgid "Type here to test" msgstr "Teclejeu aquí per provar-ho" #: ../../WPrefs.app/KeyboardSettings.c:173 msgid "Keyboard Preferences" msgstr "Preferències del teclat" #: ../../WPrefs.app/KeyboardSettings.c:175 msgid "Not done" msgstr "En preparació" #: ../../WPrefs.app/KeyboardShortcuts.c:307 ../../WPrefs.app/Menu.c:360 #: ../../WPrefs.app/TexturePanel.c:1535 ../../WPrefs.app/imagebrowser.c:100 msgid "Cancel" msgstr "Cancel·la" #: ../../WPrefs.app/KeyboardShortcuts.c:308 msgid "Press the desired shortcut key(s) or click Cancel to stop capturing." msgstr "" "Premeu la tecla o tecles que volgueu vincular i després feu clic sobre " "Cancel·la." #: ../../WPrefs.app/KeyboardShortcuts.c:328 #: ../../WPrefs.app/KeyboardShortcuts.c:575 ../../WPrefs.app/Menu.c:371 #: ../../WPrefs.app/Menu.c:830 msgid "Capture" msgstr "Captura" #: ../../WPrefs.app/KeyboardShortcuts.c:329 #: ../../WPrefs.app/KeyboardShortcuts.c:583 msgid "Click Capture to interactively define the shortcut key." msgstr "Cliqueu sobre Captura per establir vincles de tecles interactivament." #: ../../WPrefs.app/KeyboardShortcuts.c:483 msgid "Actions" msgstr "Accions" #: ../../WPrefs.app/KeyboardShortcuts.c:497 msgid "Open applications menu" msgstr "Obrir el menú d'aplicacions" #: ../../WPrefs.app/KeyboardShortcuts.c:498 msgid "Open window list menu" msgstr "Obrir la llista de finestres" #: ../../WPrefs.app/KeyboardShortcuts.c:499 msgid "Open window commands menu" msgstr "Obrir el menú d'ordres de finestra" #: ../../WPrefs.app/KeyboardShortcuts.c:500 msgid "Hide active application" msgstr "Amagar l'aplicació activa" #: ../../WPrefs.app/KeyboardShortcuts.c:501 msgid "Hide other applications" msgstr "Amagar les altres aplicacions" #: ../../WPrefs.app/KeyboardShortcuts.c:502 msgid "Miniaturize active window" msgstr "Miniaturitzar l'aplicació activa" #: ../../WPrefs.app/KeyboardShortcuts.c:503 msgid "Close active window" msgstr "Tancar la finestra activa" #: ../../WPrefs.app/KeyboardShortcuts.c:504 msgid "Maximize active window" msgstr "Maximitzar la finestra activa" #: ../../WPrefs.app/KeyboardShortcuts.c:505 msgid "Maximize active window vertically" msgstr "Maximitzar verticalment la finestra activa" #: ../../WPrefs.app/KeyboardShortcuts.c:506 msgid "Maximize active window horizontally" msgstr "Maximitzar horitzontalment la finestra activa" #: ../../WPrefs.app/KeyboardShortcuts.c:507 msgid "Raise active window" msgstr "Elevar la finestra activa" #: ../../WPrefs.app/KeyboardShortcuts.c:508 msgid "Lower active window" msgstr "Abaixar la finestra activa" #: ../../WPrefs.app/KeyboardShortcuts.c:509 msgid "Raise/Lower window under mouse pointer" msgstr "Elevar/Abaixar la finestra sota el punter del ratolí" #: ../../WPrefs.app/KeyboardShortcuts.c:510 msgid "Shade active window" msgstr "Ombrejar la finestra activa" #: ../../WPrefs.app/KeyboardShortcuts.c:511 msgid "Move/Resize active window" msgstr "Moure o redimensionar la finestra activa" #: ../../WPrefs.app/KeyboardShortcuts.c:512 msgid "Select active window" msgstr "Seleccionar la finestra activa" #: ../../WPrefs.app/KeyboardShortcuts.c:513 msgid "Focus next window" msgstr "Enfocar la següent finestra" #: ../../WPrefs.app/KeyboardShortcuts.c:514 msgid "Focus previous window" msgstr "Enfocar la finestra prèvia" #: ../../WPrefs.app/KeyboardShortcuts.c:515 msgid "Switch to next workspace" msgstr "Anar a l'àrea de treball següent" #: ../../WPrefs.app/KeyboardShortcuts.c:516 msgid "Switch to previous workspace" msgstr "Anar a l'àrea de treball prèvia" #: ../../WPrefs.app/KeyboardShortcuts.c:517 msgid "Switch to next ten workspaces" msgstr "Saltar les deu àrees de treball següents" #: ../../WPrefs.app/KeyboardShortcuts.c:518 msgid "Switch to previous ten workspaces" msgstr "Saltar les deu àrees de treball prèvies" #: ../../WPrefs.app/KeyboardShortcuts.c:519 msgid "Switch to workspace 1" msgstr "Canviar a l'àrea de treball 1" #: ../../WPrefs.app/KeyboardShortcuts.c:520 msgid "Switch to workspace 2" msgstr "Canviar a l'àrea de treball 2" #: ../../WPrefs.app/KeyboardShortcuts.c:521 msgid "Switch to workspace 3" msgstr "Canviar a l'àrea de treball 3" #: ../../WPrefs.app/KeyboardShortcuts.c:522 msgid "Switch to workspace 4" msgstr "Canviar a l'àrea de treball 4" #: ../../WPrefs.app/KeyboardShortcuts.c:523 msgid "Switch to workspace 5" msgstr "Canviar a l'àrea de treball 5" #: ../../WPrefs.app/KeyboardShortcuts.c:524 msgid "Switch to workspace 6" msgstr "Canviar a l'àrea de treball 6" #: ../../WPrefs.app/KeyboardShortcuts.c:525 msgid "Switch to workspace 7" msgstr "Canviar a l'àrea de treball 7" #: ../../WPrefs.app/KeyboardShortcuts.c:526 msgid "Switch to workspace 8" msgstr "Canviar a l'àrea de treball 8" #: ../../WPrefs.app/KeyboardShortcuts.c:527 msgid "Switch to workspace 9" msgstr "Canviar a l'àrea de treball 9" #: ../../WPrefs.app/KeyboardShortcuts.c:528 msgid "Switch to workspace 10" msgstr "Canviar a l'àrea de treball 10" #: ../../WPrefs.app/KeyboardShortcuts.c:529 msgid "Shortcut for window 1" msgstr "Drecera a la finestra 1" #: ../../WPrefs.app/KeyboardShortcuts.c:530 msgid "Shortcut for window 2" msgstr "Drecera a la finestra 2" #: ../../WPrefs.app/KeyboardShortcuts.c:531 msgid "Shortcut for window 3" msgstr "Drecera a la finestra 3" #: ../../WPrefs.app/KeyboardShortcuts.c:532 msgid "Shortcut for window 4" msgstr "Drecera a la finestra 4" #: ../../WPrefs.app/KeyboardShortcuts.c:533 msgid "Shortcut for window 5" msgstr "Drecera a la finestra 5" #: ../../WPrefs.app/KeyboardShortcuts.c:534 msgid "Shortcut for window 6" msgstr "Drecera a la finestra 6" #: ../../WPrefs.app/KeyboardShortcuts.c:535 msgid "Shortcut for window 7" msgstr "Drecera a la finestra 7" #: ../../WPrefs.app/KeyboardShortcuts.c:536 msgid "Shortcut for window 8" msgstr "Drecera a la finestra 8" #: ../../WPrefs.app/KeyboardShortcuts.c:537 msgid "Shortcut for window 9" msgstr "Drecera a la finestra 9" #: ../../WPrefs.app/KeyboardShortcuts.c:538 msgid "Shortcut for window 10" msgstr "Drecera a la finestra 10" #: ../../WPrefs.app/KeyboardShortcuts.c:539 msgid "Switch to Next Screen/Monitor" msgstr "Canviar a la següent pantalla/monitor" #: ../../WPrefs.app/KeyboardShortcuts.c:540 msgid "Raise Clip" msgstr "Elevar el Clip" #: ../../WPrefs.app/KeyboardShortcuts.c:541 msgid "Lower Clip" msgstr "Abaixar el Clip" #: ../../WPrefs.app/KeyboardShortcuts.c:542 msgid "Raise/Lower Clip" msgstr "Elevar/Abaixar el Clip" #: ../../WPrefs.app/KeyboardShortcuts.c:544 msgid "Toggle keyboard language" msgstr "Commutar el llenguatge del teclat" #: ../../WPrefs.app/KeyboardShortcuts.c:558 msgid "Shortcut" msgstr "Vincula" #: ../../WPrefs.app/KeyboardShortcuts.c:569 ../../WPrefs.app/Menu.c:836 msgid "Clear" msgstr "Oblida" #: ../../WPrefs.app/KeyboardShortcuts.c:631 msgid "Keyboard Shortcut Preferences" msgstr "Preferències de vincles de tecla" #: ../../WPrefs.app/KeyboardShortcuts.c:633 msgid "" "Change the keyboard shortcuts for actions such\n" "as changing workspaces and opening menus." msgstr "" "Permet establir o canviar vincles de tecla per\n" "accions tals com canviar d'àrea de treball o\n" "obrir menús." #: ../../WPrefs.app/Menu.c:278 msgid "Select Program" msgstr "Trieu un programa" #: ../../WPrefs.app/Menu.c:510 msgid "New Items" msgstr "Elements Nous" #: ../../WPrefs.app/Menu.c:511 msgid "Sample Commands" msgstr "Ordres d'exemple" #: ../../WPrefs.app/Menu.c:512 msgid "Sample Submenus" msgstr "Submenús d'exemple" #: ../../WPrefs.app/Menu.c:526 msgid "Run Program" msgstr "Executar programa" #: ../../WPrefs.app/Menu.c:527 msgid "Internal Command" msgstr "Ordre interna" #: ../../WPrefs.app/Menu.c:528 msgid "Submenu" msgstr "Submenú" #: ../../WPrefs.app/Menu.c:529 msgid "External Submenu" msgstr "Submenú extern" #: ../../WPrefs.app/Menu.c:530 msgid "Generated Submenu" msgstr "Submenú generat" #: ../../WPrefs.app/Menu.c:531 msgid "Directory Contents" msgstr "Contingut d'un directori" #: ../../WPrefs.app/Menu.c:532 msgid "Workspace Menu" msgstr "Menú d'àrea" #: ../../WPrefs.app/Menu.c:533 ../../WPrefs.app/MouseSettings.c:840 msgid "Window List Menu" msgstr "Llista de finestres" #: ../../WPrefs.app/Menu.c:552 msgid "XTerm" msgstr "XTerm" #: ../../WPrefs.app/Menu.c:555 msgid "rxvt" msgstr "rxvt" #: ../../WPrefs.app/Menu.c:558 msgid "ETerm" msgstr "ETerm" #: ../../WPrefs.app/Menu.c:561 msgid "Run..." msgstr "Executa..." #: ../../WPrefs.app/Menu.c:562 msgid "%a(Run,Type command to run)" msgstr "%a(Executar,Entreu l'ordre a executar)" #: ../../WPrefs.app/Menu.c:564 msgid "Netscape" msgstr "Netscape" #: ../../WPrefs.app/Menu.c:567 msgid "gimp" msgstr "Gimp" #: ../../WPrefs.app/Menu.c:570 msgid "epic" msgstr "epic" #: ../../WPrefs.app/Menu.c:573 msgid "ee" msgstr "ee" #: ../../WPrefs.app/Menu.c:576 msgid "xv" msgstr "xv" #: ../../WPrefs.app/Menu.c:579 msgid "Acrobat Reader" msgstr "Acrobat Reader" #: ../../WPrefs.app/Menu.c:582 msgid "ghostview" msgstr "ghostview" #: ../../WPrefs.app/Menu.c:585 ../../WPrefs.app/Menu.c:857 msgid "Exit Window Maker" msgstr "Sortir de Window Maker" #: ../../WPrefs.app/Menu.c:608 msgid "Debian Menu" msgstr "Menú de Debian" #: ../../WPrefs.app/Menu.c:611 msgid "RedHat Menu" msgstr "Menú de RedHat" #: ../../WPrefs.app/Menu.c:614 msgid "Menu Conectiva" msgstr "Menú de Conectiva" #: ../../WPrefs.app/Menu.c:617 ../../WPrefs.app/Themes.c:250 msgid "Themes" msgstr "Temes" #: ../../WPrefs.app/Menu.c:622 msgid "Bg Images (scale)" msgstr "Imatge de fons (escalada)" #: ../../WPrefs.app/Menu.c:627 msgid "Bg Images (tile)" msgstr "Imatge de fons (repetida)" #: ../../WPrefs.app/Menu.c:632 msgid "Assorted XTerms" msgstr "Vàries XTerms" #: ../../WPrefs.app/Menu.c:634 msgid "XTerm Yellow on Blue" msgstr "XTerm groc sobre blau" #: ../../WPrefs.app/Menu.c:637 msgid "XTerm White on Black" msgstr "XTerm blanc sobre negre" #: ../../WPrefs.app/Menu.c:640 msgid "XTerm Black on White" msgstr "XTerm negre sobre blanc" #: ../../WPrefs.app/Menu.c:643 msgid "XTerm Black on Beige" msgstr "XTerm negre sobre beix" #: ../../WPrefs.app/Menu.c:646 msgid "XTerm White on Green" msgstr "XTerm blanc sobre verd" #: ../../WPrefs.app/Menu.c:649 msgid "XTerm White on Olive" msgstr "XTerm blanc sobre verd fosc" #: ../../WPrefs.app/Menu.c:652 msgid "XTerm Blue on Blue" msgstr "Xterm blau sobre blau" #: ../../WPrefs.app/Menu.c:655 msgid "XTerm BIG FONTS" msgstr "XTerm FONTS GRANS" #: ../../WPrefs.app/Menu.c:677 msgid "Program to Run" msgstr "Programa a executar" #: ../../WPrefs.app/Menu.c:687 msgid "Browse" msgstr "Vés a..." #: ../../WPrefs.app/Menu.c:698 msgid "Run the program inside a Xterm" msgstr "Executa en una XTerm" #: ../../WPrefs.app/Menu.c:708 msgid "Path for Menu" msgstr "Ubicació del menú" #: ../../WPrefs.app/Menu.c:721 msgid "" "Enter the path for a file containing a menu\n" "or a list of directories with the programs you\n" "want to have listed in the menu. Ex:\n" "~/GNUstep/Library/WindowMaker/menu\n" "or\n" "/usr/bin ~/xbin" msgstr "" "Entreu l'ubicació d'un fitxer que contingui el menú, o\n" "una llista de directoris amb els programes que voleu\n" "que apareguin al menú. Per exemple:\n" "~/GNUstep/Library/WindowMaker/menu, o\n" "/usr/bin ~/xbin" #: ../../WPrefs.app/Menu.c:736 msgid "Command" msgstr "Ordre" #: ../../WPrefs.app/Menu.c:750 msgid "" "Enter a command that outputs a menu\n" "definition to stdout when invoked." msgstr "" "Entreu una ordre que generi una definició\n" "de menú a l'eixida estàndard quan s'invoca." #: ../../WPrefs.app/Menu.c:758 msgid "" "Cache menu contents after opening for\n" "the first time" msgstr "" "Fer una còpia \"cache\" del menú quan\n" "s'obra per primera vegada" #: ../../WPrefs.app/Menu.c:769 msgid "Command to Open Files" msgstr "Ordre per obrir els fitxers" #: ../../WPrefs.app/Menu.c:783 msgid "" "Enter the command you want to use to open the\n" "files in the directories listed below." msgstr "" "Indiqueu l'ordre que voleu usar per obrir els\n" "fitxers dels directoris llistats tot seguit." #: ../../WPrefs.app/Menu.c:792 msgid "Directories with Files" msgstr "Directoris amb fitxers" #: ../../WPrefs.app/Menu.c:805 msgid "Strip extensions from file names" msgstr "No mostrar les extensions dels fitxers" #: ../../WPrefs.app/Menu.c:817 msgid "Keyboard Shortcut" msgstr "Vincle de tecla" #: ../../WPrefs.app/Menu.c:853 msgid "Arrange Icons" msgstr "Arranjar les icones" #: ../../WPrefs.app/Menu.c:854 msgid "Hide All Windows Except For The Focused One" msgstr "Amagar totes les finestres tret de l'enfocada" #: ../../WPrefs.app/Menu.c:855 msgid "Show All Windows" msgstr "Mostrar totes les finestres" #: ../../WPrefs.app/Menu.c:858 msgid "Exit X Session" msgstr "Sortir de la sessió X" #: ../../WPrefs.app/Menu.c:859 msgid "Restart Window Maker" msgstr "Reiniciar Window Maker" #: ../../WPrefs.app/Menu.c:860 msgid "Start Another Window Manager : (" msgstr "Iniciar un altre gestor de finestres :(" #: ../../WPrefs.app/Menu.c:862 msgid "Save Current Session" msgstr "Desar la sessió actual" #: ../../WPrefs.app/Menu.c:863 msgid "Clear Saved Session" msgstr "Oblidar la sessió desada" #: ../../WPrefs.app/Menu.c:864 msgid "Refresh Screen" msgstr "Refrescar la pantalla" #: ../../WPrefs.app/Menu.c:865 msgid "Open Info Panel" msgstr "Obrir el panell d'informació" #: ../../WPrefs.app/Menu.c:866 msgid "Open Copyright Panel" msgstr "Obrir l'informació del copyright" #: ../../WPrefs.app/Menu.c:872 msgid "Window Manager to Start" msgstr "Gestor de finestres a iniciar" #: ../../WPrefs.app/Menu.c:888 msgid "Do not confirm action." msgstr "No confirmar" #: ../../WPrefs.app/Menu.c:896 msgid "" "Instructions:\n" "\n" " - drag items from the left to the menu to add new items\n" " - drag items out of the menu to remove items\n" " - drag items in menu to change their position\n" " - drag items with Control pressed to copy them\n" " - double click in a menu item to change the label\n" " - click on a menu item to change related information" msgstr "" "Instruccions:\n" "\n" "- afegiu ítems movent-los des de l'esquerra al menú\n" "- moveu els ítems fora del menú per eliminar-los\n" "- canvieu la posició d'un ítem movent-lo dins del menú\n" "- copieu un ítem movent-lo prement la tecla Control\n" "- feu doble clic en un ítem per canviar-li la etiqueta\n" "- feu clic en un ítem per canviar-ne les propietats" #: ../../WPrefs.app/Menu.c:1120 #, c-format msgid "unknown command '%s' in menu" msgstr "ordre '%s' desconeguda en el menú" #: ../../WPrefs.app/Menu.c:1152 msgid ": Execute Program" msgstr ": Executar programa" #: ../../WPrefs.app/Menu.c:1156 msgid ": Perform Internal Command" msgstr ": Ordre interna" #: ../../WPrefs.app/Menu.c:1160 msgid ": Open a Submenu" msgstr ": Obrir submenú" #: ../../WPrefs.app/Menu.c:1164 msgid ": Program Generated Submenu" msgstr ": Submenú generat per un programa" #: ../../WPrefs.app/Menu.c:1168 msgid ": Directory Contents Menu" msgstr ": Contingut d'un directori" #: ../../WPrefs.app/Menu.c:1172 msgid ": Open Workspaces Submenu" msgstr ": Obrir menú d'àrea de treball" #: ../../WPrefs.app/Menu.c:1176 msgid ": Open Window List Submenu" msgstr ": Obrir llista de finestres" #: ../../WPrefs.app/Menu.c:1401 msgid "Remove Submenu" msgstr "Eliminar submenú" #: ../../WPrefs.app/Menu.c:1402 msgid "" "Removing this item will destroy all items inside\n" "the submenu. Do you really want to do that?" msgstr "" "Eliminant aquest element també eliminareu tots els\n" "elements que es trobin dins del submenú.\n" "Esteu segurs que voleu fer això?" #: ../../WPrefs.app/Menu.c:1404 msgid "No" msgstr "No" #: ../../WPrefs.app/Menu.c:1405 msgid "Yes, don't ask again" msgstr "Sí, no preguntis més" #. if there is a localized plmenu for the tongue put it's filename here #: ../../WPrefs.app/Menu.c:1573 ../../WPrefs.app/Menu.c:1580 #, c-format msgid "%s/Library/WindowMaker/plmenu" msgstr "%s/Library/WindowMaker/plmenu" #: ../../WPrefs.app/Menu.c:1589 #, c-format msgid "Could not open default menu from '%s'" msgstr "No s'ha pogut obrir el menú per omissió de '%s'" #: ../../WPrefs.app/Menu.c:1628 msgid "" "The menu file format currently in use is not supported\n" "by this tool. Do you want to discard the current menu\n" "to use this tool?" msgstr "" "Aquesta eina no suporta el format de menú usat\n" "actualment. Voleu descartar el menú actual?" #: ../../WPrefs.app/Menu.c:1631 msgid "Yes, Discard and Update" msgstr "Sí, descarta i actualitza" #: ../../WPrefs.app/Menu.c:1632 msgid "No, Keep Current Menu" msgstr "No, deixa el que hi ha ara" #: ../../WPrefs.app/Menu.c:1895 msgid "Applications Menu Definition" msgstr "Definició del menú d'aplicacions" #: ../../WPrefs.app/Menu.c:1897 msgid "Edit the menu for launching applications." msgstr "Edita el menú per executar aplicacions." #: ../../WPrefs.app/MenuPreferences.c:111 msgid "Menu Scrolling Speed" msgstr "Velocitat de desplaçament dels menús" #: ../../WPrefs.app/MenuPreferences.c:160 msgid "Submenu Alignment" msgstr "Alineació dels submenús" #: ../../WPrefs.app/MenuPreferences.c:204 msgid "" "Always open submenus inside the screen, instead of scrolling." msgstr "Obrir sempre els submenús dins la pantalla, en lloc de desplaçar-los." #: ../../WPrefs.app/MenuPreferences.c:209 msgid "Scroll off-screen menus when pointer is moved over them." msgstr "" "Desplaçar els menús que no caben a la pantalla amb el punter del ratolí." #: ../../WPrefs.app/MenuPreferences.c:229 msgid "Menu Preferences" msgstr "Preferències de menús" #: ../../WPrefs.app/MenuPreferences.c:231 msgid "" "Menu usability related options. Scrolling speed,\n" "alignment of submenus etc." msgstr "" "Opcions relacionades amb l'ús de menús. Velocitat\n" "de desplaçament, alineació dels submenús, etc." #: ../../WPrefs.app/MouseSettings.c:141 msgid "Invalid mouse acceleration value. Must be a positive real value." msgstr "" "El valor d'acceleració del ratolí no és vàlid. Ha de ser un nombre real " "positiu." #: ../../WPrefs.app/MouseSettings.c:161 msgid "" "Invalid mouse acceleration threshold value. Must be the number of pixels to " "travel before accelerating." msgstr "" "El valor del llindar d'acceleració del ratolí no és vàlid. Ha de ser el " "nombre de píxels que es recorren abans de començar a accelerar." #: ../../WPrefs.app/MouseSettings.c:262 ../../WPrefs.app/MouseSettings.c:274 #: ../../WPrefs.app/MouseSettings.c:286 ../../WPrefs.app/MouseSettings.c:298 #, c-format msgid "bad value %s for option %s" msgstr "el valor %s de l'opció %s no és vàlid" #: ../../WPrefs.app/MouseSettings.c:357 #, c-format msgid "" "modifier key %s for option ModifierKey was not recognized. Using %s as " "default" msgstr "" "la tecla de modificació %s en l'opció ModifierKey és desconeguda. S'usa el " "valor per omissió %s." #: ../../WPrefs.app/MouseSettings.c:382 msgid "could not retrieve keyboard modifier mapping" msgstr "no s'han pogut obtenir els codis de la tecla de modificació" #: ../../WPrefs.app/MouseSettings.c:477 msgid "Mouse Speed" msgstr "Velocitat del ratolí" #: ../../WPrefs.app/MouseSettings.c:507 msgid "Accel.:" msgstr "Accel.:" #: ../../WPrefs.app/MouseSettings.c:520 msgid "Threshold:" msgstr "Llindar:" #: ../../WPrefs.app/MouseSettings.c:535 msgid "Double-Click Delay" msgstr "Retard de doble-clic" #: ../../WPrefs.app/MouseSettings.c:579 msgid "Test" msgstr "Prova" #: ../../WPrefs.app/MouseSettings.c:609 msgid "Workspace Mouse Actions" msgstr "Accions del ratolí a l'àrea de treball" #: ../../WPrefs.app/MouseSettings.c:614 msgid "Disable mouse actions" msgstr "Deshabilita els vincles de menú" #: ../../WPrefs.app/MouseSettings.c:620 msgid "Left Button" msgstr "Botó esquerra" #: ../../WPrefs.app/MouseSettings.c:630 msgid "Middle Button" msgstr "Botó del mig" #: ../../WPrefs.app/MouseSettings.c:640 msgid "Right Button" msgstr "Botó dret" #: ../../WPrefs.app/MouseSettings.c:650 msgid "Mouse Wheel" msgstr "Roda" #: ../../WPrefs.app/MouseSettings.c:672 msgid "Mouse Grab Modifier" msgstr "Tecla de modificació" #: ../../WPrefs.app/MouseSettings.c:674 msgid "" "Keyboard modifier to use for actions that\n" "involve dragging windows with the mouse,\n" "clicking inside the window." msgstr "" "La tecla modificadora a usar per les accions\n" "que impliquin arrossegar finestres amb el ratolí,\n" "clicant dins de la finestra en qüestió." #: ../../WPrefs.app/MouseSettings.c:708 #, c-format msgid "could not create %s" msgstr "no s'ha pogut crear %s" #: ../../WPrefs.app/MouseSettings.c:724 #, c-format msgid "could not create temporary file %s" msgstr "no s'ha pogut crear el fitxer temporal %s" #: ../../WPrefs.app/MouseSettings.c:756 #, c-format msgid "could not rename file %s to %s\n" msgstr "no s'ha pogut reanomenar el fitxer %s a %s\n" #: ../../WPrefs.app/MouseSettings.c:829 msgid "Shift" msgstr "Shift" #: ../../WPrefs.app/MouseSettings.c:830 msgid "Lock" msgstr "Bloq" #: ../../WPrefs.app/MouseSettings.c:831 msgid "Control" msgstr "Control" #: ../../WPrefs.app/MouseSettings.c:832 msgid "Mod1" msgstr "Mod1" #: ../../WPrefs.app/MouseSettings.c:833 msgid "Mod2" msgstr "Mod2" #: ../../WPrefs.app/MouseSettings.c:834 msgid "Mod3" msgstr "Mod3" #: ../../WPrefs.app/MouseSettings.c:835 msgid "Mod4" msgstr "Mod4" #: ../../WPrefs.app/MouseSettings.c:836 msgid "Mod5" msgstr "Mod5" #: ../../WPrefs.app/MouseSettings.c:839 msgid "Applications Menu" msgstr "Menú d'aplicacions" #: ../../WPrefs.app/MouseSettings.c:841 msgid "Select Windows" msgstr "Selecciona" #: ../../WPrefs.app/MouseSettings.c:844 msgid "Switch Workspaces" msgstr "Canvia d'àrea" #: ../../WPrefs.app/MouseSettings.c:849 msgid "Mouse Preferences" msgstr "Preferències del ratolí" #: ../../WPrefs.app/MouseSettings.c:851 msgid "" "Mouse speed/acceleration, double click delay,\n" "mouse button bindings etc." msgstr "" "Volocitat i acceleració del ratolí, retard\n" "de doble clic, vincles dels botons, etc." #: ../../WPrefs.app/Paths.c:85 msgid "bad value in option IconPath. Using default path list" msgstr "" "valor incorrecte a l'opció IconPath. S'usa la llista de camins per omissió" #: ../../WPrefs.app/Paths.c:102 msgid "bad value in option PixmapPath. Using default path list" msgstr "" "valor incorrecte a l'opció PixmapPath. S'usa la llista de camins per omissió" #: ../../WPrefs.app/Paths.c:150 msgid "Select directory" msgstr "Trieu un directori" #: ../../WPrefs.app/Paths.c:266 msgid "Icon Search Paths" msgstr "Ubicació de les icones" #: ../../WPrefs.app/Paths.c:277 ../../WPrefs.app/Paths.c:308 #: ../../WPrefs.app/TexturePanel.c:1312 msgid "Add" msgstr "Afegeix" #: ../../WPrefs.app/Paths.c:297 msgid "Pixmap Search Paths" msgstr "Ubicació dels fitxers d'imatge" #: ../../WPrefs.app/Paths.c:337 msgid "Search Path Configuration" msgstr "Configuració dels camins de recerca" #: ../../WPrefs.app/Paths.c:339 msgid "" "Search paths to use when looking for pixmaps\n" "and icons." msgstr "Ubicacions on buscar icones i mapes de bits." #: ../../WPrefs.app/Preferences.c:75 msgid "OFF" msgstr "0 píxels" #: ../../WPrefs.app/Preferences.c:77 msgid "1 pixel" msgstr "1 píxel" #. 2-4 #: ../../WPrefs.app/Preferences.c:80 #, c-format msgid "%i pixels" msgstr "%i píxels" #. >4 #: ../../WPrefs.app/Preferences.c:83 #, c-format msgid "%i pixels " msgstr "%i píxels " #: ../../WPrefs.app/Preferences.c:229 msgid "Size Display" msgstr "Visor de mida" #: ../../WPrefs.app/Preferences.c:231 msgid "" "The position or style of the window size\n" "display that's shown when a window is resized." msgstr "" "La posició o estil del visor de mida que\n" "apareix quan una finestra es redimensiona." #: ../../WPrefs.app/Preferences.c:238 ../../WPrefs.app/Preferences.c:259 msgid "Corner of screen" msgstr "Cantonada de la pantalla" #: ../../WPrefs.app/Preferences.c:239 ../../WPrefs.app/Preferences.c:260 msgid "Center of screen" msgstr "Centre de la pantalla" #: ../../WPrefs.app/Preferences.c:240 ../../WPrefs.app/Preferences.c:261 msgid "Center of resized window" msgstr "Centre de la finestra" #: ../../WPrefs.app/Preferences.c:241 msgid "Technical drawing-like" msgstr "Estil dibuix tècnic" #: ../../WPrefs.app/Preferences.c:242 ../../WPrefs.app/Preferences.c:262 msgid "Disabled" msgstr "Deshabilitat" #: ../../WPrefs.app/Preferences.c:250 msgid "Position Display" msgstr "Visor de posició" #: ../../WPrefs.app/Preferences.c:252 msgid "" "The position or style of the window position\n" "display that's shown when a window is moved." msgstr "" "La posició o estil del visor de posició\n" "que apareix quan es mou una finestra." #: ../../WPrefs.app/Preferences.c:270 msgid "Show balloon text for..." msgstr "Mostrar text flotant per..." #: ../../WPrefs.app/Preferences.c:277 msgid "incomplete window titles" msgstr "títols incomplets de finestres" #: ../../WPrefs.app/Preferences.c:278 msgid "miniwindow titles" msgstr "títols de minifinestres" #: ../../WPrefs.app/Preferences.c:279 msgid "application/dock icons" msgstr "icones ancorades o d'aplicació" #: ../../WPrefs.app/Preferences.c:280 msgid "internal help" msgstr "ajuda interna" #: ../../WPrefs.app/Preferences.c:292 msgid "Raise window when switching focus with keyboard" msgstr "Elevar la finestra enfocada amb el teclat automàticament" #: ../../WPrefs.app/Preferences.c:298 msgid "" "Enable keyboard language\n" "switch button in window titlebars." msgstr "" "Mostrar el botó de canvi de\n" "llenguatge a les finestres." #: ../../WPrefs.app/Preferences.c:307 msgid "Workspace border" msgstr "Marc de l'àrea de treball" #: ../../WPrefs.app/Preferences.c:323 msgid "Left/Right" msgstr "Lateral" #: ../../WPrefs.app/Preferences.c:328 msgid "Top/Bottom" msgstr "Dalt/Baix" #: ../../WPrefs.app/Preferences.c:349 msgid "Miscellaneous Ergonomic Preferences" msgstr "Preferències ergonòmiques diverses" #: ../../WPrefs.app/Preferences.c:350 msgid "" "Various settings like balloon text, geometry\n" "displays etc." msgstr "" "Diverses opcions com texts flotants,\n" "visors de geometria, etc." #: ../../WPrefs.app/TexturePanel.c:323 msgid "Saturation" msgstr "Saturació" #: ../../WPrefs.app/TexturePanel.c:325 msgid "Brightness" msgstr "Claror" #: ../../WPrefs.app/TexturePanel.c:373 ../../WPrefs.app/TexturePanel.c:380 msgid "Hue" msgstr "Matís" #: ../../WPrefs.app/TexturePanel.c:612 msgid "Could not load the selected file: " msgstr "No s'ha pogut carregar el fitxer seleccionat: " #: ../../WPrefs.app/TexturePanel.c:666 msgid "Open Image" msgstr "Obrir imatge" #: ../../WPrefs.app/TexturePanel.c:696 msgid "The selected file does not contain a supported image." msgstr "El fitxer seleccionat no conté cap tipus d'imatge suportat." #: ../../WPrefs.app/TexturePanel.c:947 #, c-format msgid "could not load file '%s': %s" msgstr "no s'ha pogut carregar el fitxer '%s': %s" #: ../../WPrefs.app/TexturePanel.c:1066 #, c-format msgid "error creating texture %s" msgstr "error quan es creava la textura %s" #: ../../WPrefs.app/TexturePanel.c:1256 msgid "Texture Panel" msgstr "Panell de textura" #: ../../WPrefs.app/TexturePanel.c:1264 msgid "Texture Name" msgstr "Nom de la textura" #: ../../WPrefs.app/TexturePanel.c:1276 msgid "Solid Color" msgstr "Color sòlid" #: ../../WPrefs.app/TexturePanel.c:1277 msgid "Gradient Texture" msgstr "Gradient" #: ../../WPrefs.app/TexturePanel.c:1278 msgid "Simple Gradient Texture" msgstr "Gradient simple" #: ../../WPrefs.app/TexturePanel.c:1279 msgid "Textured Gradient" msgstr "Gradient amb textura" #: ../../WPrefs.app/TexturePanel.c:1280 msgid "Image Texture" msgstr "Imatge" #: ../../WPrefs.app/TexturePanel.c:1288 msgid "Default Color" msgstr "Color per omissió" #: ../../WPrefs.app/TexturePanel.c:1300 msgid "Gradient Colors" msgstr "Colors del gradient" #: ../../WPrefs.app/TexturePanel.c:1396 msgid "Direction" msgstr "Direcció" #: ../../WPrefs.app/TexturePanel.c:1424 msgid "Gradient" msgstr "Gradient" #: ../../WPrefs.app/TexturePanel.c:1442 msgid "Gradient Opacity" msgstr "Opacitat del gradient" #: ../../WPrefs.app/TexturePanel.c:1484 msgid "Image" msgstr "Imatge" #: ../../WPrefs.app/TexturePanel.c:1516 msgid "Tile" msgstr "Mosaic" #: ../../WPrefs.app/TexturePanel.c:1517 msgid "Scale" msgstr "Escalat" #: ../../WPrefs.app/TexturePanel.c:1519 msgid "Maximize" msgstr "Maximitzat" #: ../../WPrefs.app/Themes.c:71 ../../WPrefs.app/Themes.c:82 msgid "Set" msgstr "Estableix" #: ../../WPrefs.app/Themes.c:132 msgid "Stop" msgstr "Atura" #: ../../WPrefs.app/Themes.c:143 ../../WPrefs.app/Themes.c:203 #: ../../WPrefs.app/Themes.c:223 msgid "Download" msgstr "Descarrega" #: ../../WPrefs.app/Themes.c:171 msgid "Save Current Theme" msgstr "Desa el tema actual" #: ../../WPrefs.app/Themes.c:180 msgid "Load" msgstr "Carrega" #: ../../WPrefs.app/Themes.c:185 msgid "Install" msgstr "Instal·la" #: ../../WPrefs.app/Themes.c:193 msgid "Tile of The Day" msgstr "Mosaic del dia" #: ../../WPrefs.app/Themes.c:213 msgid "Bar of The Day" msgstr "Barra del dia" #: ../../WPrefs.app/WPrefs.c:260 msgid "Window Maker Preferences" msgstr "Preferències de Window Maker" #: ../../WPrefs.app/WPrefs.c:284 msgid "Revert Page" msgstr "Tornar pàgina" #: ../../WPrefs.app/WPrefs.c:290 msgid "Revert All" msgstr "Tornar totes" #: ../../WPrefs.app/WPrefs.c:296 msgid "Save" msgstr "Desa" #: ../../WPrefs.app/WPrefs.c:309 msgid "Balloon Help" msgstr "Ajuda flotant" #: ../../WPrefs.app/WPrefs.c:334 msgid "Window Maker Preferences Utility" msgstr "Utilitat de preferències de Window Maker" #: ../../WPrefs.app/WPrefs.c:341 #, c-format msgid "Version %s for Window Maker %s or newer" msgstr "Versió %s per a Window Maker %s o posterior" #: ../../WPrefs.app/WPrefs.c:349 msgid "Starting..." msgstr "Iniciant..." #: ../../WPrefs.app/WPrefs.c:355 msgid "" "Programming/Design: Alfredo K. Kojima\n" "Artwork: Marco van Hylckama Vlieg, Largo et al\n" "More Programming: James Thompson et al" msgstr "" "Programació i disseny: Alfredo K. Kojima\n" "Art: Marco van Hylckama Vlieg, Largo et al\n" "Més programació: James Thompson et al" #: ../../WPrefs.app/WPrefs.c:455 #, c-format msgid "could not locate image file %s\n" msgstr "no s'ha pogut localitzar el fitxer d'imatge %s\n" #: ../../WPrefs.app/WPrefs.c:670 #, c-format msgid "could not load image file %s:%s" msgstr "no s'ha pogut carregar el fitxer d'imatge %s:%s" #: ../../WPrefs.app/WPrefs.c:689 msgid "Loading Window Maker configuration files..." msgstr "S'estan carregant els fitxers de configuració de Window Maker..." #: ../../WPrefs.app/WPrefs.c:693 msgid "Initializing configuration panels..." msgstr "S'estan inicialitzant els panells de configuració..." #: ../../WPrefs.app/WPrefs.c:728 msgid "" "WPrefs is free software and is distributed WITHOUT ANY\n" "WARRANTY under the terms of the GNU General Public License." msgstr "" "WPrefs és programari lliure i es distribueix sense CAP MENA\n" "DE GARANTIA sota els termes de la GNU General Public License." #: ../../WPrefs.app/WPrefs.c:758 ../../WPrefs.app/WPrefs.c:838 #, c-format msgid "Window Maker domain (%s) is corrupted!" msgstr "Domini de Window Maker (%s) malmès!" #: ../../WPrefs.app/WPrefs.c:762 #, c-format msgid "Could not load Window Maker domain (%s) from defaults database." msgstr "" "No s'ha pogut carregar el domini de Window Maker (%s) de la base de dades " "per omissió." #: ../../WPrefs.app/WPrefs.c:778 msgid "could not extract version information from Window Maker" msgstr "no s'ha pogut obtenir informació sobre la versió de Window Maker" #: ../../WPrefs.app/WPrefs.c:779 msgid "Make sure wmaker is in your search path." msgstr "Assegureu-vos que wmaker es troba en el camí de recerca." #: ../../WPrefs.app/WPrefs.c:782 msgid "" "Could not extract version from Window Maker. Make sure it is correctly " "installed and is in your PATH environment variable." msgstr "" "No s'ha pogut obtenir la versió de Window Maker. Assegureu-vos que està " "instal·lat correctament i que es troba en el PATH." #: ../../WPrefs.app/WPrefs.c:792 msgid "" "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." msgstr "" "No s'ha pogut obtenir la versió de Window Maker. Assegureu-vos que està " "instal·lat correctament i que el lloc on està instal·lat es troba en la " "variable d'entorn PATH." #: ../../WPrefs.app/WPrefs.c:799 #, c-format msgid "" "WPrefs only supports Window Maker 0.18.0 or newer.\n" "The version installed is %i.%i.%i\n" msgstr "" "WPrefs només suporta Window Maker 0.18.0 o posterior.\n" "La versió instal·lada és %i.%i.%i\n" #: ../../WPrefs.app/WPrefs.c:806 #, 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, que està instal·lat en el sistema, no està suportat " "totalment per aquesta versió de WPrefs." #: ../../WPrefs.app/WPrefs.c:819 #, c-format msgid "could not run \"%s --global_defaults_path\"." msgstr "no s'ha pogut executar \"%s --global_defaults_path\"." #: ../../WPrefs.app/WPrefs.c:842 #, c-format msgid "Could not load global Window Maker domain (%s)." msgstr "No s'ha pogut carregar el domini global de Window Maker (%s)." #: ../../WPrefs.app/WPrefs.c:1091 #, c-format msgid "" "bad speed value for option %s\n" ". Using default Medium" msgstr "" "valor de velocitat incorrecte a l'opció %s.\n" "S'usa el valor per omissió \"Medium\"" #: ../../WPrefs.app/WindowHandling.c:141 #, c-format msgid "bad option value %s in WindowPlacement. Using default value" msgstr "" "valor %s incorrecte a l'opció WindowPlacement. S'usa el valor per omissió" #: ../../WPrefs.app/WindowHandling.c:163 msgid "invalid data in option WindowPlaceOrigin. Using default (0,0)" msgstr "" "dada no vàlida a l'opció WindowPlaceOrigin. S'usa el valor per omissió (0,0)" #: ../../WPrefs.app/WindowHandling.c:243 msgid "Window Placement" msgstr "Ubicació de les finestres" #: ../../WPrefs.app/WindowHandling.c:244 msgid "" "How to place windows when they are first put\n" "on screen." msgstr "" "Com disposar les finestres quan\n" "apareixen per primer cop en pantalla." #: ../../WPrefs.app/WindowHandling.c:250 msgid "Automatic" msgstr "Automàtic" #: ../../WPrefs.app/WindowHandling.c:251 msgid "Random" msgstr "Aleatori" #: ../../WPrefs.app/WindowHandling.c:252 msgid "Manual" msgstr "Manual" #: ../../WPrefs.app/WindowHandling.c:253 msgid "Cascade" msgstr "En cascada" #: ../../WPrefs.app/WindowHandling.c:254 msgid "Smart" msgstr "Intel·ligent" #: ../../WPrefs.app/WindowHandling.c:260 msgid "Placement Origin" msgstr "Ubicació original" #: ../../WPrefs.app/WindowHandling.c:321 msgid "Opaque Move" msgstr "Moviment opac" #: ../../WPrefs.app/WindowHandling.c:322 msgid "" "Whether the window contents should be moved\n" "when dragging windows aroung or if only a\n" "frame should be displayed.\n" msgstr "" "Si s'ha de moure o no el contingut d'una finestra\n" "quan és arrossegada o només es mostra un marc.\n" #: ../../WPrefs.app/WindowHandling.c:361 msgid "When maximizing..." msgstr "Quan es maximitza..." #: ../../WPrefs.app/WindowHandling.c:366 msgid "...do not cover icons" msgstr "...no cobrir les icones" #: ../../WPrefs.app/WindowHandling.c:372 msgid "...do not cover dock" msgstr "..no cobrir el moll" #: ../../WPrefs.app/WindowHandling.c:381 msgid "Edge Resistance" msgstr "Resistència dels marges" #: ../../WPrefs.app/WindowHandling.c:383 msgid "" "Edge resistance will make windows `resist'\n" "being moved further for the defined threshold\n" "when moved against other windows or the edges\n" "of the screen." msgstr "" "La resistència dels marges és el factor amb que\n" "una finestra es \"resisteix\" a ser moguda fora de\n" "la pantalla, o contra altres finestres." #: ../../WPrefs.app/WindowHandling.c:402 msgid "Resist" msgstr "Oposa" #: ../../WPrefs.app/WindowHandling.c:407 msgid "Attract" msgstr "Atreu" #: ../../WPrefs.app/WindowHandling.c:423 msgid "Open dialogs in same workspace as their owners" msgstr "" "Obrir els quadres de diàleg a la mateixa " "àrea de treball que els seus propietaris." #: ../../WPrefs.app/WindowHandling.c:450 msgid "Window Handling Preferences" msgstr "Preferències d'administració de finestres" #: ../../WPrefs.app/WindowHandling.c:452 msgid "" "Window handling options. Initial placement style\n" "edge resistance, opaque move etc." msgstr "" "Opcions d'administració de finestres. Estil de\n" "posicionament inicial, resistència a ser mogudes\n" "fora dels marges, moviment opac, et cetera." #: ../../WPrefs.app/Workspace.c:176 msgid "Workspace Navigation" msgstr "Navegació entre àrees de treball" #: ../../WPrefs.app/Workspace.c:183 msgid "Wrap to the first workspace from the last workspace" msgstr "Tornar a la primera àrea després de l'última" #: ../../WPrefs.app/Workspace.c:205 msgid "Switch workspaces while dragging windows" msgstr "Passar a l'àrea del costat en arrossegar finestres fora dels marges" #: ../../WPrefs.app/Workspace.c:227 msgid "Automatically create new workspaces" msgstr "Crear noves àrees de treball automàticament" #: ../../WPrefs.app/Workspace.c:250 msgid "Position of workspace name display" msgstr "Posició del nom de l'àrea de treball" #: ../../WPrefs.app/Workspace.c:269 msgid "Disable" msgstr "Deshabilitat" #: ../../WPrefs.app/Workspace.c:271 msgid "Top" msgstr "Dalt" #: ../../WPrefs.app/Workspace.c:272 msgid "Bottom" msgstr "Baix" #: ../../WPrefs.app/Workspace.c:273 msgid "Top/Left" msgstr "Dalt/Esquerra" #: ../../WPrefs.app/Workspace.c:274 msgid "Top/Right" msgstr "Dalt/Dreta" #: ../../WPrefs.app/Workspace.c:275 msgid "Bottom/Left" msgstr "Baix/Esquerra" #: ../../WPrefs.app/Workspace.c:276 msgid "Bottom/Right" msgstr "Baix/Dreta" #: ../../WPrefs.app/Workspace.c:284 msgid "Dock/Clip" msgstr "Moll/Clip" #: ../../WPrefs.app/Workspace.c:303 msgid "" "Disable/enable the application Dock (the\n" "vertical icon bar in the side of the screen)." msgstr "" "Habilita o deshabilita el Moll d'aplicacions\n" "(aquesta barra vertical amb icones que hi ha\n" "a un costat de la pantalla)." #: ../../WPrefs.app/Workspace.c:324 msgid "" "Disable/enable the Clip (that thing with\n" "a paper clip icon)." msgstr "" "Habilita o deshabilita el Clip (aquesta cosa\n" "que té una icona amb una imatge d'un clip)." #: ../../WPrefs.app/Workspace.c:364 msgid "Workspace Preferences" msgstr "Preferències d'àrea de treball" #: ../../WPrefs.app/Workspace.c:366 msgid "" "Workspace navigation features.\n" "You can also enable/disable the Dock and Clip here." msgstr "" "Funcions de navegació entre àrees de treball. També podeu\n" "habilitar o deshabilitar tant el Moll com el Clip aquí." #: ../../WPrefs.app/imagebrowser.c:95 msgid "View" msgstr "Veure" #: ../../WPrefs.app/main.c:59 #, c-format msgid "usage: %s [options]\n" msgstr "sintaxi: %s [opcions]\n" #: ../../WPrefs.app/main.c:60 msgid "options:" msgstr "opcions:" #: ../../WPrefs.app/main.c:61 msgid " -display <display>\tdisplay to be used" msgstr " -display <display>\tpantalla a utilitzar" #: ../../WPrefs.app/main.c:62 msgid " --version\t\tprint version number and exit" msgstr " --version\t\tmostra la versió i surt" #: ../../WPrefs.app/main.c:63 msgid " --help\t\tprint this message and exit" msgstr " --help\t\tmostra aquest missatge i surt" #: ../../WPrefs.app/main.c:122 #, c-format msgid "too few arguments for %s" msgstr "falten arguments per a %s" #: ../../WPrefs.app/main.c:144 msgid "X server does not support locale" msgstr "el servidor X no suporta el local" #: ../../WPrefs.app/main.c:147 msgid "cannot set locale modifiers" msgstr "no s'han pogut establir els modificadors de local" #: ../../WPrefs.app/main.c:153 #, c-format msgid "could not open display %s" msgstr "no s'ha pogut obrir la pantalla %s" #: ../../WPrefs.app/main.c:161 msgid "could not initialize application" msgstr "no s'ha pogut inicialitzar l'aplicació" #~ msgid "- Custom -" #~ msgstr "- Personalitzat -" ������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/po/sk.po��������������������������������������������������������������0000644�0001750�0001750�00000161162�13431646201�014355� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Slovak messages for WPreffs.app # (C) 2001 Jan "judas" Tomka # # Original translation by Jan "judas" Tomka on Jan 21 2001 # Currently maintained by Jan "judas" Tomka <judas@linux.sk> # # Revision history: # WP-ver author email date # 0.43 Jan "judas" Tomka <tomka@oalevice.sk> Jan 28 2001 # 0.44 Jan "judas" Tomka <tomka@oalevice.sk> Feb 22 2001 # 0.45 Jan "judas" Tomka <judas@linux.sk> Aug 08 2001 # 0.45 Jan "judas" Tomka <judas@linux.sk> Oct 15 2001 # msgid "" msgstr "" "Project-Id-Version: WPrefs 0.45\n" "POT-Creation-Date: 2001-12-20 03:47+0100\n" "PO-Revision-Date: 2001-10-15 20:40+0100\n" "Last-Translator: Jan \"judas\" Tomka <judas@linux.sk>\n" "Language-Team: Slovak <sk@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../../WPrefs.app/Appearance.c:1131 msgid "Select File" msgstr "Vyberte súbor" #: ../../WPrefs.app/Appearance.c:1533 msgid "Focused Window" msgstr "Aktívne okno" #: ../../WPrefs.app/Appearance.c:1537 msgid "Unfocused Window" msgstr "Neaktívne okno" #: ../../WPrefs.app/Appearance.c:1541 msgid "Owner of Focused Window" msgstr "Vlastník aktívneho okna" #: ../../WPrefs.app/Appearance.c:1545 ../../WPrefs.app/Appearance.c:1862 msgid "Menu Title" msgstr "Názov menu" #: ../../WPrefs.app/Appearance.c:1549 ../../WPrefs.app/Appearance.c:1551 msgid "Normal Item" msgstr "Normálna" #: ../../WPrefs.app/Appearance.c:1555 msgid "Disabled Item" msgstr "Zakázaná" #: ../../WPrefs.app/Appearance.c:1564 msgid "Highlighted" msgstr "Aktívna" #: ../../WPrefs.app/Appearance.c:1755 msgid "Texture" msgstr "Textúra" #: ../../WPrefs.app/Appearance.c:1763 msgid "Titlebar of Focused Window" msgstr "Horná lišta aktívneho okna" #: ../../WPrefs.app/Appearance.c:1764 msgid "Titlebar of Unfocused Windows" msgstr "Horná lišta neaktívneho okna" #: ../../WPrefs.app/Appearance.c:1765 msgid "Titlebar of Focused Window's Owner" msgstr "Horná lišta vlastníka aktívneho okna" #: ../../WPrefs.app/Appearance.c:1766 msgid "Window Resizebar" msgstr "Spodná lišta" #: ../../WPrefs.app/Appearance.c:1767 msgid "Titlebar of Menus" msgstr "Horná lišta menu" #: ../../WPrefs.app/Appearance.c:1768 msgid "Menu Items" msgstr "Položky menu" #: ../../WPrefs.app/Appearance.c:1769 msgid "Icon Background" msgstr "Pozadie ikon" #: ../../WPrefs.app/Appearance.c:1784 msgid "" "Double click in the texture you want to use\n" "for the selected item." msgstr "" "Dvojkliknite na textúru, ktorú si želáte\n" "použiť pre zvolenú položku." #: ../../WPrefs.app/Appearance.c:1798 msgid "New" msgstr "Nová" #: ../../WPrefs.app/Appearance.c:1802 msgid "Create a new texture." msgstr "Vytvoriť novú textúru." # info: je to o pol milimetra dlhšie ako by bolo ideálne... #: ../../WPrefs.app/Appearance.c:1810 msgid "Extract..." msgstr "Vytiahnuť..." #: ../../WPrefs.app/Appearance.c:1814 msgid "Extract texture(s) from a theme or a style file." msgstr "Vytiahnuť textúru/y zo súboru s témou alebo štýlom." #: ../../WPrefs.app/Appearance.c:1824 msgid "Edit" msgstr "Upraviť" #: ../../WPrefs.app/Appearance.c:1827 msgid "Edit the highlighted texture." msgstr "Upraviť zvýraznenú textúru." #: ../../WPrefs.app/Appearance.c:1835 ../../WPrefs.app/TexturePanel.c:1316 msgid "Delete" msgstr "Odstrániť" #: ../../WPrefs.app/Appearance.c:1839 msgid "Delete the highlighted texture." msgstr "Odstrániť zvýraznenú textúru." #: ../../WPrefs.app/Appearance.c:1852 msgid "Color" msgstr "Farba" #: ../../WPrefs.app/Appearance.c:1859 msgid "Focused Window Title" msgstr "Názov aktívneho okna" #: ../../WPrefs.app/Appearance.c:1860 msgid "Unfocused Window Title" msgstr "Názov neaktívneho okna" #: ../../WPrefs.app/Appearance.c:1861 msgid "Owner of Focused Window Title" msgstr "Názov vlastníka aktívneho okna" #: ../../WPrefs.app/Appearance.c:1863 msgid "Menu Item Text" msgstr "Text položky menu" #: ../../WPrefs.app/Appearance.c:1864 msgid "Disabled Menu Item Text" msgstr "Text zakázanej položky menu" #: ../../WPrefs.app/Appearance.c:1865 msgid "Menu Highlight Color" msgstr "Farba zvýraznenej položky menu" #: ../../WPrefs.app/Appearance.c:1866 msgid "Highlighted Menu Text Color" msgstr "Text zvýraznenej položky menu" #: ../../WPrefs.app/Appearance.c:1905 msgid "Background" msgstr "Pozadie" #: ../../WPrefs.app/Appearance.c:1917 ../../WPrefs.app/TexturePanel.c:1503 msgid "Browse..." msgstr "Hľadať..." #: ../../WPrefs.app/Appearance.c:1930 msgid "Options" msgstr "Možnosti" #: ../../WPrefs.app/Appearance.c:1937 msgid "Menu Style" msgstr "Štýl menu" #: ../../WPrefs.app/Appearance.c:1965 ../../WPrefs.app/Configurations.c:242 #: ../../WPrefs.app/Configurations.c:254 ../../WPrefs.app/Focus.c:288 #: ../../WPrefs.app/Focus.c:299 ../../WPrefs.app/MenuPreferences.c:134 #: ../../WPrefs.app/MenuPreferences.c:145 #: ../../WPrefs.app/MenuPreferences.c:173 #: ../../WPrefs.app/MenuPreferences.c:188 ../../WPrefs.app/MouseSettings.c:560 #: ../../WPrefs.app/MouseSettings.c:571 ../../WPrefs.app/WPrefs.c:558 #: ../../WPrefs.app/WPrefs.c:583 #, c-format msgid "could not load icon file %s" msgstr "nemožno načítať súbor s ikonou %s" #: ../../WPrefs.app/Appearance.c:1979 msgid "Title Alignment" msgstr "Umiestniť názov" #: ../../WPrefs.app/Appearance.c:1986 msgid "Left" msgstr "Vľavo" #: ../../WPrefs.app/Appearance.c:1989 ../../WPrefs.app/TexturePanel.c:1517 #: ../../WPrefs.app/Workspace.c:270 msgid "Center" msgstr "V strede" #: ../../WPrefs.app/Appearance.c:1992 msgid "Right" msgstr "Vpravo" #: ../../WPrefs.app/Appearance.c:2216 msgid "Appearance Preferences" msgstr "Nastavenia vzhľadu" #: ../../WPrefs.app/Appearance.c:2218 msgid "" "Background texture configuration for windows,\n" "menus and icons." msgstr "" "Konfigurácia textúr pozadia pre okná,\n" "menu a ikony." #: ../../WPrefs.app/Appearance.c:2263 msgid "Extract Texture" msgstr "Vytiahnuť textúru" #: ../../WPrefs.app/Appearance.c:2283 msgid "Textures" msgstr "Textúry" #: ../../WPrefs.app/Appearance.c:2294 ../../WPrefs.app/WPrefs.c:302 msgid "Close" msgstr "Zavrieť" #: ../../WPrefs.app/Appearance.c:2299 msgid "Extract" msgstr "Vytiahnuť" #: ../../WPrefs.app/Configurations.c:150 ../../WPrefs.app/Configurations.c:156 #: ../../WPrefs.app/MouseSettings.c:490 ../../WPrefs.app/WindowHandling.c:339 #: ../../WPrefs.app/WindowHandling.c:351 ../../WPrefs.app/Workspace.c:90 #: ../../WPrefs.app/Workspace.c:101 #, c-format msgid "could not load icon %s" msgstr "nemožno načítať ikonu %s" #: ../../WPrefs.app/Configurations.c:164 ../../WPrefs.app/Workspace.c:109 #, c-format msgid "could not process icon %s: %s" msgstr "nemožno spracovať ikonu %s %s" #: ../../WPrefs.app/Configurations.c:189 ../../WPrefs.app/Workspace.c:164 #, c-format msgid "could not load image file %s" msgstr "nemožno načítať súbor s obrázkom %s" #: ../../WPrefs.app/Configurations.c:203 msgid "Icon Slide Speed" msgstr "Rýchlosť kĺzania ikony" #: ../../WPrefs.app/Configurations.c:209 msgid "Shade Animation Speed" msgstr "Rýchlosť zrolovania okna" #: ../../WPrefs.app/Configurations.c:271 msgid "Smooth Scaling" msgstr "Jemné prechody" #: ../../WPrefs.app/Configurations.c:272 msgid "" "Smooth scaled background images, neutralizing\n" "the `pixelization' effect. This will slow\n" "down loading of background images considerably." msgstr "" "Zjemnenie prechodov na obrázkoch v pozadí\n" "odstraňuje efekt pixelizácie. Podstatne\n" "spomaľuje načítavanie obrázkov v pozadí." #: ../../WPrefs.app/Configurations.c:313 msgid "Titlebar Style" msgstr "Štýl hornej lišty" #: ../../WPrefs.app/Configurations.c:351 msgid "Animations and Sound" msgstr "Animácie a zvuk" #: ../../WPrefs.app/Configurations.c:357 msgid "Animations" msgstr "Animácie" #: ../../WPrefs.app/Configurations.c:368 msgid "" "Disable/enable animations such as those shown\n" "for window miniaturization, shading etc." msgstr "" "Zakázať/povoliť animácie ako napr.\n" "minimalizácia okna, rolovanie, atď." #: ../../WPrefs.app/Configurations.c:376 msgid "Superfluous" msgstr "Zbytočnosti" #: ../../WPrefs.app/Configurations.c:387 msgid "" "Disable/enable `superfluous' features and\n" "animations. These include the `ghosting' of the\n" "dock when it's being moved to another side and\n" "the explosion animation when undocking icons." msgstr "" "Zakázať/povoliť `zbytočné' vlastnosti a animácie.\n" "Tieto zahŕňajú napr. priehľadnosť Doku pri jeho\n" "presúvaní na opačnú stranu alebo výbuch\n" "odkotvenej ikony." #: ../../WPrefs.app/Configurations.c:397 msgid "Sounds" msgstr "Zvuky" #: ../../WPrefs.app/Configurations.c:408 msgid "" "Disable/enable support for sound effects played\n" "for actions like shading and closing a window.\n" "You will need a module distributed separately\n" "for this. You can get it at:\n" "http://shadowmere.student.utwente.nl/" msgstr "" "Zakázať/povoliť podporu zvukových efektov\n" "pri udalostiach ako rolovanie a zatváranie\n" "okna. Budete potrebovať samostatný modul,\n" "ktorý nájdete na adrese:\n" "http://www.frontiernet.net/~southgat/wmsound" #: ../../WPrefs.app/Configurations.c:419 msgid "" "Note: sound requires a module distributed\n" "separately" msgstr "Pozor: zvuk vyžaduje samostatný modul" #: ../../WPrefs.app/Configurations.c:429 msgid "Dithering colormap for 8bpp" msgstr "Rezervovanie farieb pri 8bpp" #: ../../WPrefs.app/Configurations.c:431 msgid "" "Number of colors to reserve for Window Maker\n" "on displays that support only 8bpp (PseudoColor)." msgstr "" "Počet farieb, ktoré rezervovať pre Window Maker na\n" "systémoch, ktoré podporujú len 8bpp (PseudoColor)." #: ../../WPrefs.app/Configurations.c:438 msgid "Disable dithering in any visual/depth" msgstr "Zakázať rezervovanie farieb" #: ../../WPrefs.app/Configurations.c:459 msgid "" "More colors for\n" "applications" msgstr "" "Viac farieb pre\n" "aplikácie" #: ../../WPrefs.app/Configurations.c:466 msgid "" "More colors for\n" "Window Maker" msgstr "" "Viac farieb pre\n" "Window Maker" #: ../../WPrefs.app/Configurations.c:521 msgid "Other Configurations" msgstr "Ostatné nastavenia" #: ../../WPrefs.app/Configurations.c:523 msgid "" "Animation speeds, titlebar styles, various option\n" "toggling and number of colors to reserve for\n" "Window Maker on 8bit displays." msgstr "" "Rýchlosť animácií, štýly horných líšt, nastavenia\n" "rôznych vlastností a počet farieb rezervovaných\n" "pre Window Maker pri 8bpp." #: ../../WPrefs.app/Expert.c:75 msgid "" "Disable miniwindows (icons for miniaturized windows). For use with KDE/GNOME." msgstr "" "Zakázať miniokná (ikony pre minimalizované okná). Pre použitie s KDE/GNOME." #: ../../WPrefs.app/Expert.c:76 msgid "Do not set non-WindowMaker specific parameters (do not use xset)." msgstr "Nenastavovať parametre, ktoré nie sú špecifické pre WindowMaker." #: ../../WPrefs.app/Expert.c:77 msgid "Automatically save session when exiting Window Maker." msgstr "Automaticky ukladať sedenia pri odchode z Window Makeru." #: ../../WPrefs.app/Expert.c:78 msgid "Use SaveUnder in window frames, icons, menus and other objects." msgstr "Používať SaveUnder pre okná, ikony, menu a ostatné objekty." # fix me! keby tie okná naozaj rotovali, mali by z toho ľudia halušky... #: ../../WPrefs.app/Expert.c:79 msgid "Use Windoze style cycling." msgstr "Povoliť Windoze štýl prepínania okien." #: ../../WPrefs.app/Expert.c:80 msgid "Disable confirmation panel for the Kill command." msgstr "Vypnúť potvrdzovanie príkazu Zabiť." #: ../../WPrefs.app/Expert.c:81 msgid "Disable selection animation for selected icons." msgstr "Zakázať animáciu výberu pre vybraté ikony." #: ../../WPrefs.app/Expert.c:115 msgid "Expert User Preferences" msgstr "Nastavenia skúseného užívateľa" #: ../../WPrefs.app/Expert.c:117 msgid "" "Options for people who know what they're doing...\n" "Also have some other misc. options." msgstr "Nastavenia pre tých, ktorí vedia, čo robia..." #: ../../WPrefs.app/Focus.c:80 #, c-format msgid "bad option value %s for option FocusMode. Using default Manual" msgstr "nesprávna hodnota %s vlastnosti FocusMode. Použitá Manual" #: ../../WPrefs.app/Focus.c:94 #, c-format msgid "bad option value %s for option ColormapMode. Using default Auto" msgstr "nesprávna hodnota %s vlastnosti ColormapMode. Použitá Auto" #: ../../WPrefs.app/Focus.c:214 msgid "Input Focus Mode" msgstr "Spôsob aktivovania okien" #: ../../WPrefs.app/Focus.c:222 msgid "Manual: Click on the window to set keyboard input focus" msgstr "Manuálne: Kliknutie na okno ho aktivuje" #: ../../WPrefs.app/Focus.c:229 msgid "Auto: Set keyboard input focus to the window under the mouse pointer" msgstr "Automatické: Aktivuje sa okno pod kurzorom myši" #: ../../WPrefs.app/Focus.c:243 msgid "Install colormap from the window..." msgstr "Nastaviť paletu oknu..." #: ../../WPrefs.app/Focus.c:248 msgid "...that has the input focus" msgstr "...ktoré je aktívne" #: ../../WPrefs.app/Focus.c:253 msgid "...that's under the mouse pointer" msgstr "...ktoré sa nachádza pod kurzorom" #: ../../WPrefs.app/Focus.c:262 msgid "Automatic Window Raise Delay" msgstr "Zdržanie pred presunutím do popredia" #: ../../WPrefs.app/Focus.c:319 ../../WPrefs.app/MouseSettings.c:601 msgid "ms" msgstr "ms" #: ../../WPrefs.app/Focus.c:336 msgid "Do not let applications receive the click used to focus windows" msgstr "Aplikácia nesmie prijať kliknutie, ktoré spôsobilo aktiváciu okna" #: ../../WPrefs.app/Focus.c:342 msgid "Automatically focus new windows" msgstr "Automaticky aktivovať nové okná" #: ../../WPrefs.app/Focus.c:363 msgid "Window Focus Preferences" msgstr "Nastavenia aktivácie okien" #: ../../WPrefs.app/Focus.c:365 msgid "" "Keyboard focus switching policy, colormap switching\n" "policy for 8bpp displays and other related options." msgstr "" "Spôsob aktivovania okien, prepínanie paliet\n" "pre systémy s 8bpp a s tým súvisiace možnosti." #: ../../WPrefs.app/Font.c:276 msgid "Could not locate font information file WPrefs.app/font.data" msgstr "Nemožno nájsť súbor s informáciami o fontoch WPrefs.app/font.data" #: ../../WPrefs.app/Font.c:282 msgid "Could not read font information file WPrefs.app/font.data" msgstr "Nemožno načítať súbor s informáciami o fontoch WPrefs.app/font.data" #: ../../WPrefs.app/Font.c:293 msgid "" "Invalid data in font information file WPrefs.app/font.data.\n" "Encodings data not found." msgstr "" "Nesprávne údaje v súbore s informáciami o fontoch WPrefs.app/font.data.\n" "Neboli nájdené údaje o kódovaní." #: ../../WPrefs.app/Font.c:298 msgid "- Custom -" msgstr "- Užívateľský -" #: ../../WPrefs.app/Font.c:329 ../../WPrefs.app/Menu.c:1534 #: ../../WPrefs.app/MouseSettings.c:140 ../../WPrefs.app/MouseSettings.c:160 #: ../../WPrefs.app/TexturePanel.c:613 ../../WPrefs.app/TexturePanel.c:693 #: ../../WPrefs.app/Themes.c:96 ../../WPrefs.app/WPrefs.c:758 #: ../../WPrefs.app/WPrefs.c:763 ../../WPrefs.app/WPrefs.c:780 #: ../../WPrefs.app/WPrefs.c:790 ../../WPrefs.app/WPrefs.c:800 #: ../../WPrefs.app/WPrefs.c:838 ../../WPrefs.app/WPrefs.c:843 msgid "Error" msgstr "Chyba" #: ../../WPrefs.app/Font.c:329 ../../WPrefs.app/Menu.c:1534 #: ../../WPrefs.app/MouseSettings.c:142 ../../WPrefs.app/MouseSettings.c:162 #: ../../WPrefs.app/TexturePanel.c:614 ../../WPrefs.app/TexturePanel.c:695 #: ../../WPrefs.app/TexturePanel.c:1528 ../../WPrefs.app/Themes.c:98 #: ../../WPrefs.app/WPrefs.c:758 ../../WPrefs.app/WPrefs.c:763 #: ../../WPrefs.app/WPrefs.c:782 ../../WPrefs.app/WPrefs.c:794 #: ../../WPrefs.app/WPrefs.c:800 ../../WPrefs.app/WPrefs.c:807 #: ../../WPrefs.app/WPrefs.c:838 ../../WPrefs.app/WPrefs.c:843 #: ../../WPrefs.app/imagebrowser.c:105 msgid "OK" msgstr "OK" #: ../../WPrefs.app/Font.c:376 msgid "Default Font Sets" msgstr "Implicitné sady fontov" #: ../../WPrefs.app/Font.c:389 msgid "Font Set" msgstr "Sada fontov" #: ../../WPrefs.app/Font.c:418 msgid "Add..." msgstr "Pridať..." #: ../../WPrefs.app/Font.c:423 ../../WPrefs.app/Font.c:438 msgid "Change..." msgstr "Zmeniť..." #: ../../WPrefs.app/Font.c:428 ../../WPrefs.app/Paths.c:288 #: ../../WPrefs.app/Paths.c:319 msgid "Remove" msgstr "Odstrániť" #: ../../WPrefs.app/Font.c:477 msgid "Font Preferences" msgstr "Nastavenia fontov" #: ../../WPrefs.app/Font.c:478 msgid "Font Configurations for Windows, Menus etc" msgstr "Nastavenia fontov pre okná, menu, atď." #: ../../WPrefs.app/Icons.c:180 msgid "Icon Positioning" msgstr "Umiestňovanie ikon" #: ../../WPrefs.app/Icons.c:227 msgid "Iconification Animation" msgstr "Animácia minimalizácie" #: ../../WPrefs.app/Icons.c:238 msgid "Shrinking/Zooming" msgstr "Zmenšenie/zväčšenie" #: ../../WPrefs.app/Icons.c:239 msgid "Spinning/Twisting" msgstr "Vírenie/točenie" #: ../../WPrefs.app/Icons.c:240 msgid "3D-flipping" msgstr "3D saltá" #: ../../WPrefs.app/Icons.c:241 ../../WPrefs.app/MouseSettings.c:838 #: ../../WPrefs.app/MouseSettings.c:843 msgid "None" msgstr "Žiadna" #: ../../WPrefs.app/Icons.c:254 msgid "Auto-arrange icons" msgstr "Automaticky usporiadavať ikony" #: ../../WPrefs.app/Icons.c:256 msgid "Keep icons and miniwindows arranged all the time." msgstr "Udržiavať ikony a miniokná usporiadané." #: ../../WPrefs.app/Icons.c:262 msgid "Omnipresent miniwindows" msgstr "Miniokná na všetkých plochách" #: ../../WPrefs.app/Icons.c:264 msgid "Make miniwindows be present in all workspaces." msgstr "Miniokná prítomné na všetkých pracovných plochách." #: ../../WPrefs.app/Icons.c:273 msgid "Icon Size" msgstr "Rozmery ikony" #: ../../WPrefs.app/Icons.c:275 msgid "The size of the dock/application icon and miniwindows" msgstr "Rozmery ikon a miniokien" #: ../../WPrefs.app/Icons.c:345 msgid "Icon Preferences" msgstr "Nastavenia ikon" #: ../../WPrefs.app/Icons.c:347 msgid "" "Icon/Miniwindow handling options. Icon positioning\n" "area, sizes of icons, miniaturization animation style." msgstr "" "Možnosti spravovania ikon a miniokien. Umiestňovanie\n" "ikon, ich veľkosť, štýl minimalizácie." #: ../../WPrefs.app/KeyboardSettings.c:73 msgid "Initial Key Repeat" msgstr "Oneskorenie opakovania" #: ../../WPrefs.app/KeyboardSettings.c:114 msgid "Key Repeat Rate" msgstr "Frekvencia opakovania" #: ../../WPrefs.app/KeyboardSettings.c:154 msgid "Type here to test" msgstr "Skúste tu" #: ../../WPrefs.app/KeyboardSettings.c:173 msgid "Keyboard Preferences" msgstr "Nastavenia klávesnice" #: ../../WPrefs.app/KeyboardSettings.c:175 msgid "Not done" msgstr "Ešte nie" #: ../../WPrefs.app/KeyboardShortcuts.c:186 ../../WPrefs.app/Menu.c:327 #: ../../WPrefs.app/TexturePanel.c:1534 ../../WPrefs.app/imagebrowser.c:100 msgid "Cancel" msgstr "Zrušiť" #: ../../WPrefs.app/KeyboardShortcuts.c:187 msgid "Press the desired shortcut key(s) or click Cancel to stop capturing." msgstr "" "Zadajte klávesovú skratku alebo použite Zrušiť na prerušenie zadávania." #: ../../WPrefs.app/KeyboardShortcuts.c:207 #: ../../WPrefs.app/KeyboardShortcuts.c:456 ../../WPrefs.app/Menu.c:338 #: ../../WPrefs.app/Menu.c:782 msgid "Capture" msgstr "Zadať" #: ../../WPrefs.app/KeyboardShortcuts.c:208 #: ../../WPrefs.app/KeyboardShortcuts.c:464 msgid "Click Capture to interactively define the shortcut key." msgstr "Použite Zadať na definovanie klávesovej skratky." #: ../../WPrefs.app/KeyboardShortcuts.c:363 msgid "Actions" msgstr "Činnosti" #: ../../WPrefs.app/KeyboardShortcuts.c:379 msgid "Open applications menu" msgstr "Otvoriť aplikačné menu" #: ../../WPrefs.app/KeyboardShortcuts.c:380 msgid "Open window list menu" msgstr "Otvoriť menu Okná" #: ../../WPrefs.app/KeyboardShortcuts.c:381 msgid "Open window commands menu" msgstr "Otvoriť menu Aplikácie" #: ../../WPrefs.app/KeyboardShortcuts.c:382 msgid "Hide active application" msgstr "Skryť aktívnu aplikáciu" #: ../../WPrefs.app/KeyboardShortcuts.c:383 msgid "Miniaturize active window" msgstr "Minimalizovať aktívne okno" #: ../../WPrefs.app/KeyboardShortcuts.c:384 msgid "Close active window" msgstr "Zavrieť aktívne okno" #: ../../WPrefs.app/KeyboardShortcuts.c:385 msgid "Maximize active window" msgstr "Maximalizovať aktívne okno" #: ../../WPrefs.app/KeyboardShortcuts.c:386 msgid "Maximize active window vertically" msgstr "Maximalizovať aktívne okno vertikálne" #: ../../WPrefs.app/KeyboardShortcuts.c:387 msgid "Maximize active window horizontally" msgstr "Maximalizovať aktívne okno horizontálne" #: ../../WPrefs.app/KeyboardShortcuts.c:388 msgid "Raise active window" msgstr "Presunúť aktívne okno do popredia" #: ../../WPrefs.app/KeyboardShortcuts.c:389 msgid "Lower active window" msgstr "Presunúť aktívne okno do pozadia" #: ../../WPrefs.app/KeyboardShortcuts.c:390 msgid "Raise/Lower window under mouse pointer" msgstr "Okno pod kurzorom do popredia/pozadia" #: ../../WPrefs.app/KeyboardShortcuts.c:391 msgid "Shade active window" msgstr "Zrolovať aktívne okno" #: ../../WPrefs.app/KeyboardShortcuts.c:392 msgid "Move/Resize active window" msgstr "Presun/veľkosť aktívneho okna" #: ../../WPrefs.app/KeyboardShortcuts.c:393 msgid "Select active window" msgstr "Vybrať aktívne okno" #: ../../WPrefs.app/KeyboardShortcuts.c:394 msgid "Focus next window" msgstr "Aktivovať nasledujúce okno" #: ../../WPrefs.app/KeyboardShortcuts.c:395 msgid "Focus previous window" msgstr "Aktivovať predchádzajúce okno" #: ../../WPrefs.app/KeyboardShortcuts.c:396 msgid "Switch to next workspace" msgstr "Nasledujúca pracovná plocha" #: ../../WPrefs.app/KeyboardShortcuts.c:397 msgid "Switch to previous workspace" msgstr "Predchádzajúca pracovná plocha" #: ../../WPrefs.app/KeyboardShortcuts.c:398 msgid "Switch to next ten workspaces" msgstr "Nasledujúcich desať plôch" #: ../../WPrefs.app/KeyboardShortcuts.c:399 msgid "Switch to previous ten workspaces" msgstr "Predchádzajúcich desať plôch" #: ../../WPrefs.app/KeyboardShortcuts.c:400 msgid "Switch to workspace 1" msgstr "Pracovná plocha 1" #: ../../WPrefs.app/KeyboardShortcuts.c:401 msgid "Switch to workspace 2" msgstr "Pracovná plocha 2" #: ../../WPrefs.app/KeyboardShortcuts.c:402 msgid "Switch to workspace 3" msgstr "Pracovná plocha 3" #: ../../WPrefs.app/KeyboardShortcuts.c:403 msgid "Switch to workspace 4" msgstr "Pracovná plocha 4" #: ../../WPrefs.app/KeyboardShortcuts.c:404 msgid "Switch to workspace 5" msgstr "Pracovná plocha 5" #: ../../WPrefs.app/KeyboardShortcuts.c:405 msgid "Switch to workspace 6" msgstr "Pracovná plocha 6" #: ../../WPrefs.app/KeyboardShortcuts.c:406 msgid "Switch to workspace 7" msgstr "Pracovná plocha 7" #: ../../WPrefs.app/KeyboardShortcuts.c:407 msgid "Switch to workspace 8" msgstr "Pracovná plocha 8" #: ../../WPrefs.app/KeyboardShortcuts.c:408 msgid "Switch to workspace 9" msgstr "Pracovná plocha 9" #: ../../WPrefs.app/KeyboardShortcuts.c:409 msgid "Switch to workspace 10" msgstr "Pracovná plocha 10" #: ../../WPrefs.app/KeyboardShortcuts.c:410 msgid "Shortcut for window 1" msgstr "Klávesová skratka pre okno 1" #: ../../WPrefs.app/KeyboardShortcuts.c:411 msgid "Shortcut for window 2" msgstr "Klávesová skratka pre okno 2" #: ../../WPrefs.app/KeyboardShortcuts.c:412 msgid "Shortcut for window 3" msgstr "Klávesová skratka pre okno 3" #: ../../WPrefs.app/KeyboardShortcuts.c:413 msgid "Shortcut for window 4" msgstr "Klávesová skratka pre okno 4" #: ../../WPrefs.app/KeyboardShortcuts.c:414 msgid "Shortcut for window 5" msgstr "Klávesová skratka pre okno 5" #: ../../WPrefs.app/KeyboardShortcuts.c:415 msgid "Shortcut for window 6" msgstr "Klávesová skratka pre okno 6" #: ../../WPrefs.app/KeyboardShortcuts.c:416 msgid "Shortcut for window 7" msgstr "Klávesová skratka pre okno 7" #: ../../WPrefs.app/KeyboardShortcuts.c:417 msgid "Shortcut for window 8" msgstr "Klávesová skratka pre okno 8" #: ../../WPrefs.app/KeyboardShortcuts.c:418 msgid "Shortcut for window 9" msgstr "Klávesová skratka pre okno 9" #: ../../WPrefs.app/KeyboardShortcuts.c:419 msgid "Shortcut for window 10" msgstr "Klávesová skratka pre okno 10" #: ../../WPrefs.app/KeyboardShortcuts.c:420 msgid "Switch to Next Screen/Monitor" msgstr "Prepnúť na ďalšiu obrazovku/monitor" #: ../../WPrefs.app/KeyboardShortcuts.c:421 msgid "Raise Clip" msgstr "Presunúť Spinku do popredia" #: ../../WPrefs.app/KeyboardShortcuts.c:422 msgid "Lower Clip" msgstr "Presunúť Spinku do pozadia" #: ../../WPrefs.app/KeyboardShortcuts.c:423 msgid "Raise/Lower Clip" msgstr "Presúvať Spinku do popredia/pozadia" #: ../../WPrefs.app/KeyboardShortcuts.c:425 msgid "Toggle keyboard language" msgstr "Prepnúť jazyk klávesnice" #: ../../WPrefs.app/KeyboardShortcuts.c:439 msgid "Shortcut" msgstr "Klávesová skratka" #: ../../WPrefs.app/KeyboardShortcuts.c:450 ../../WPrefs.app/Menu.c:788 msgid "Clear" msgstr "Žiadna" #: ../../WPrefs.app/KeyboardShortcuts.c:512 msgid "Keyboard Shortcut Preferences" msgstr "Nastavenia klávesových skratiek" #: ../../WPrefs.app/KeyboardShortcuts.c:514 msgid "" "Change the keyboard shortcuts for actions such\n" "as changing workspaces and opening menus." msgstr "" "Zmena klávesových skratiek pre činnosti ako\n" "zmena pracovnej plochy a otváranie menu." #: ../../WPrefs.app/Menu.c:477 msgid "New Items" msgstr "Nové položky" #: ../../WPrefs.app/Menu.c:478 msgid "Sample Commands" msgstr "Vzorové príkazy" #: ../../WPrefs.app/Menu.c:479 msgid "Sample Submenus" msgstr "Vzorové submenu" #: ../../WPrefs.app/Menu.c:493 msgid "Run Program" msgstr "Spustiť program" #: ../../WPrefs.app/Menu.c:494 msgid "Internal Command" msgstr "Interný príkaz" #: ../../WPrefs.app/Menu.c:495 msgid "Submenu" msgstr "Submenu" #: ../../WPrefs.app/Menu.c:496 msgid "External Submenu" msgstr "Externé submenu" #: ../../WPrefs.app/Menu.c:497 msgid "Generated Submenu" msgstr "Generované menu" #: ../../WPrefs.app/Menu.c:498 msgid "Directory Contents" msgstr "Adresár s menu" #: ../../WPrefs.app/Menu.c:499 msgid "Workspace Menu" msgstr "Pracovné plochy" #: ../../WPrefs.app/Menu.c:500 ../../WPrefs.app/MouseSettings.c:840 msgid "Window List Menu" msgstr "Menu Okná" #: ../../WPrefs.app/Menu.c:519 msgid "XTerm" msgstr "" #: ../../WPrefs.app/Menu.c:522 msgid "rxvt" msgstr "" #: ../../WPrefs.app/Menu.c:525 msgid "ETerm" msgstr "" #: ../../WPrefs.app/Menu.c:528 msgid "Run..." msgstr "Spustiť..." #: ../../WPrefs.app/Menu.c:529 msgid "%a(Run,Type command to run)" msgstr "%a(Spustiť,Zadajte príkaz:)" #: ../../WPrefs.app/Menu.c:531 msgid "Netscape" msgstr "" #: ../../WPrefs.app/Menu.c:534 msgid "gimp" msgstr "" #: ../../WPrefs.app/Menu.c:537 msgid "epic" msgstr "" #: ../../WPrefs.app/Menu.c:540 msgid "ee" msgstr "" #: ../../WPrefs.app/Menu.c:543 msgid "xv" msgstr "" #: ../../WPrefs.app/Menu.c:546 msgid "Acrobat Reader" msgstr "" #: ../../WPrefs.app/Menu.c:549 msgid "ghostview" msgstr "" #: ../../WPrefs.app/Menu.c:552 ../../WPrefs.app/Menu.c:809 msgid "Exit Window Maker" msgstr "Ukončiť Window Maker" #: ../../WPrefs.app/Menu.c:575 msgid "Debian Menu" msgstr "" #: ../../WPrefs.app/Menu.c:578 msgid "RedHat Menu" msgstr "" #: ../../WPrefs.app/Menu.c:581 msgid "Menu Conectiva" msgstr "" #: ../../WPrefs.app/Menu.c:584 ../../WPrefs.app/Themes.c:250 msgid "Themes" msgstr "Témy" #: ../../WPrefs.app/Menu.c:589 msgid "Bg Images (scale)" msgstr "Obrázky pozadia (roztiahnuté)" #: ../../WPrefs.app/Menu.c:594 msgid "Bg Images (tile)" msgstr "Obrázky pozadia (vedľa seba)" #: ../../WPrefs.app/Menu.c:599 msgid "Assorted XTerms" msgstr "Rôzne XTermy" #: ../../WPrefs.app/Menu.c:601 msgid "XTerm Yellow on Blue" msgstr "XTerm žltá na modrej" #: ../../WPrefs.app/Menu.c:604 msgid "XTerm White on Black" msgstr "XTerm biela na čiernej" #: ../../WPrefs.app/Menu.c:607 msgid "XTerm Black on White" msgstr "XTerm čierna na bielej" # beige nie je maslo a tá farba nie je maslová... #: ../../WPrefs.app/Menu.c:610 msgid "XTerm Black on Beige" msgstr "XTerm čierna na maslovej" #: ../../WPrefs.app/Menu.c:613 msgid "XTerm White on Green" msgstr "XTerm biela na zelenej" #: ../../WPrefs.app/Menu.c:616 msgid "XTerm White on Olive" msgstr "XTerm biela na olivovej" #: ../../WPrefs.app/Menu.c:619 msgid "XTerm Blue on Blue" msgstr "XTerm modrá na modrej" #: ../../WPrefs.app/Menu.c:622 msgid "XTerm BIG FONTS" msgstr "XTerm VEĽKÉ FONTY" #: ../../WPrefs.app/Menu.c:644 msgid "Program to Run" msgstr "Spustiť program" #: ../../WPrefs.app/Menu.c:658 msgid "Run the program inside a Xterm" msgstr "Spustiť program v XTerme" #: ../../WPrefs.app/Menu.c:668 msgid "Path for Menu" msgstr "Cesta k menu" #: ../../WPrefs.app/Menu.c:681 msgid "" "Enter the path for a file containing a menu\n" "or a list of directories with the programs you\n" "want to have listed in the menu. Ex:\n" "~/GNUstep/Library/WindowMaker/menu\n" "or\n" "/usr/bin ~/xbin" msgstr "" "Zadajte cestu k súboru, ktorý obsahuje menu\n" "alebo zoznam adresárov s programami, ktoré chcete\n" "mať zaradené do menu. Napr.\n" "~/GNUstep/Library/WindowMaker/menu\n" "alebo\n" "/usr/bin ~/xbin" #: ../../WPrefs.app/Menu.c:696 msgid "Command" msgstr "Príkaz" #: ../../WPrefs.app/Menu.c:710 msgid "" "Enter a command that outputs a menu\n" "definition to stdout when invoked." msgstr "" "Zadajte príkaz, ktorý po spustení\n" "generuje na výstup definíciu menu." #: ../../WPrefs.app/Menu.c:721 msgid "Command to Open Files" msgstr "Otvárať súbory príkazom" #: ../../WPrefs.app/Menu.c:735 msgid "" "Enter the command you want to use to open the\n" "files in the directories listed below." msgstr "" "Zadajte príkaz, ktorým chcete otvárať súbory\n" "v nasledovných adresároch." #: ../../WPrefs.app/Menu.c:744 msgid "Directories with Files" msgstr "Adresáre so súbormi" #: ../../WPrefs.app/Menu.c:757 msgid "Strip extensions from file names" msgstr "Odstrániť prípony z mien súborov" #: ../../WPrefs.app/Menu.c:769 msgid "Keyboard Shortcut" msgstr "Klávesová skratka" #: ../../WPrefs.app/Menu.c:805 msgid "Arrange Icons" msgstr "Vyrovnať ikony" #: ../../WPrefs.app/Menu.c:806 msgid "Hide All Windows Except For The Focused One" msgstr "Skryť všetky okná okrem aktívneho" #: ../../WPrefs.app/Menu.c:807 msgid "Show All Windows" msgstr "Zobraziť všetky okná" #: ../../WPrefs.app/Menu.c:810 msgid "Exit X Session" msgstr "Ukončiť sedenie X systému" #: ../../WPrefs.app/Menu.c:811 msgid "Restart Window Maker" msgstr "Reštartovať Window Maker" #: ../../WPrefs.app/Menu.c:812 msgid "Start Another Window Manager : (" msgstr "Spustiť iný manažér okien : (" #: ../../WPrefs.app/Menu.c:814 msgid "Save Current Session" msgstr "Uložiť súčasné sedenie" #: ../../WPrefs.app/Menu.c:815 msgid "Clear Saved Session" msgstr "Zmazať uložené sedenie" #: ../../WPrefs.app/Menu.c:816 msgid "Refresh Screen" msgstr "Obnoviť obrazovku" #: ../../WPrefs.app/Menu.c:817 msgid "Open Info Panel" msgstr "Otvoriť panel Info" #: ../../WPrefs.app/Menu.c:818 msgid "Open Copyright Panel" msgstr "Otvoriť panel Copyright" #: ../../WPrefs.app/Menu.c:824 msgid "Window Manager to Start" msgstr "Spustiť manažér okien" #: ../../WPrefs.app/Menu.c:840 msgid "Do not confirm action." msgstr "Nepotvrdzovať činnosť." #: ../../WPrefs.app/Menu.c:850 msgid "" "Instructions:\n" "\n" " - drag items from the left to the menu to add new items\n" " - drag items out of the menu to remove items\n" " - drag items in menu to change their position\n" " - drag items with Control pressed to copy them\n" " - double click in a menu item to change the label\n" " - click on a menu item to change related information" msgstr "" "Pokyny:\n" "\n" " - ťahaním položiek z ľava do menu pridávate\n" " nové položky\n" " - ťahaním položiek von z menu odstraňujete položky\n" " - ťahaním položiek v menu meníte ich pozíciu\n" " - ťahaním pri stlačenom Control kopírujete položky\n" " - dvojkliknutím na položku menu meníte jej názov\n" " - kliknutím na položku menu meníte súvisiace údaje" #: ../../WPrefs.app/Menu.c:1068 #, c-format msgid "unknown command '%s' in menu" msgstr "neznámy príkaz '%s' v menu" #: ../../WPrefs.app/Menu.c:1100 msgid ": Execute Program" msgstr ": Spustiť program" #: ../../WPrefs.app/Menu.c:1104 msgid ": Perform Internal Command" msgstr ": Vykonať interný príkaz" #: ../../WPrefs.app/Menu.c:1108 msgid ": Open a Submenu" msgstr ": Otvoriť submenu" #: ../../WPrefs.app/Menu.c:1112 msgid ": Program Generated Submenu" msgstr ": Programom generované menu" #: ../../WPrefs.app/Menu.c:1116 msgid ": Directory Contents Menu" msgstr ": Adresár obsahujúci menu" #: ../../WPrefs.app/Menu.c:1120 msgid ": Open Workspaces Submenu" msgstr ": Menu pracovných plôch" #: ../../WPrefs.app/Menu.c:1124 msgid ": Open Window List Submenu" msgstr ": Otvoriť submenu Okná" #: ../../WPrefs.app/Menu.c:1344 msgid "Remove Submenu" msgstr "Odstrániť submenu" #: ../../WPrefs.app/Menu.c:1345 msgid "" "Removing this item will destroy all items inside\n" "the submenu. Do you really want to do that?" msgstr "" "Odstránením tejto položky odstránite všetky\n" "položky v submenu. Chcete odstrániť položku?" #: ../../WPrefs.app/Menu.c:1347 msgid "Yes" msgstr "Áno" #: ../../WPrefs.app/Menu.c:1347 msgid "No" msgstr "Nie" #: ../../WPrefs.app/Menu.c:1348 msgid "Yes, don't ask again" msgstr "Áno, viac sa nepýtať" #. if there is a localized plmenu for the tongue put it's filename here #: ../../WPrefs.app/Menu.c:1515 ../../WPrefs.app/Menu.c:1522 #, c-format msgid "%s/Library/WindowMaker/plmenu" msgstr "%s/Library/WindowMaker/plmenu.sk" #: ../../WPrefs.app/Menu.c:1531 #, c-format msgid "Could not open default menu from '%s'" msgstr "Nemožno otvoriť implicitné menu z '%s'" #: ../../WPrefs.app/Menu.c:1569 ../../WPrefs.app/WPrefs.c:807 msgid "Warning" msgstr "Varovanie" #: ../../WPrefs.app/Menu.c:1570 msgid "" "The menu file format currently in use is not supported\n" "by this tool. Do you want to discard the current menu\n" "to use this tool?" msgstr "" "Formát súboru menu, ktoré používate, nie je podporovaný\n" "týmto programom. Chcete sa vzdať súčasného menu, aby ste\n" "mohli použiť tento program?" #: ../../WPrefs.app/Menu.c:1573 msgid "Yes, Discard and Update" msgstr "Áno, vzdať sa a vytvoriť nové" #: ../../WPrefs.app/Menu.c:1574 msgid "No, Keep Current Menu" msgstr "Nie, ponechať súčasné menu" # info: aplikačné menu ani menu aplikácii nie je celkom ono (ani hlavné menu...) #: ../../WPrefs.app/Menu.c:1834 msgid "Applications Menu Definition" msgstr "Definícia menu Aplikácie" #: ../../WPrefs.app/Menu.c:1836 msgid "Edit the menu for launching applications." msgstr "Úpravy menu Aplikácie, ktoré slúži na spúšťanie programov." #: ../../WPrefs.app/MenuPreferences.c:111 msgid "Menu Scrolling Speed" msgstr "Rýchlosť posunu menu" #: ../../WPrefs.app/MenuPreferences.c:160 msgid "Submenu Alignment" msgstr "Zarovnanie submenu" #: ../../WPrefs.app/MenuPreferences.c:204 msgid "" "Always open submenus inside the screen, instead of scrolling." msgstr "" "Vždy otvárať submenu vo vnútri obrazovky namiesto posúvania." #: ../../WPrefs.app/MenuPreferences.c:209 msgid "Scroll off-screen menus when pointer is moved over them." msgstr "" "Pri prechode kurzoru nad menu, ktoré je čiastočne mimo\n" "obrazovky, posúvať toto menu do vnútra obrazovky." #: ../../WPrefs.app/MenuPreferences.c:229 msgid "Menu Preferences" msgstr "Nastavenia menu" #: ../../WPrefs.app/MenuPreferences.c:231 msgid "" "Menu usability related options. Scrolling speed,\n" "alignment of submenus etc." msgstr "" "Možnosti spojené s používaním menu. Rýchlosť\n" "posúvania, zarovnávanie submenu atď." #: ../../WPrefs.app/MouseSettings.c:141 msgid "Invalid mouse acceleration value. Must be a positive real value." msgstr "Nesprávna hodnota zrýchlenia myši. Musí byť kladné reálne číslo." #: ../../WPrefs.app/MouseSettings.c:161 msgid "" "Invalid mouse acceleration threshold value. Must be the number of pixels to " "travel before accelerating." msgstr "" "Nesprávna hodnota prahu zrýchlenia myši. Musí byť počet bodov pred začatím " "zrýchlenia." #: ../../WPrefs.app/MouseSettings.c:262 ../../WPrefs.app/MouseSettings.c:274 #: ../../WPrefs.app/MouseSettings.c:286 ../../WPrefs.app/MouseSettings.c:298 #, c-format msgid "bad value %s for option %s" msgstr "nesprávna hodnota %s voľby %s" #: ../../WPrefs.app/MouseSettings.c:357 #, c-format msgid "" "modifier key %s for option ModifierKey was not recognized. Using %s as " "default" msgstr "modifikátor %s voľby ModifierKey nie je správny. Pužitá hodnota %s." #: ../../WPrefs.app/MouseSettings.c:382 msgid "could not retrieve keyboard modifier mapping" msgstr "nemožno načítať mapu modifikátorov" #: ../../WPrefs.app/MouseSettings.c:477 msgid "Mouse Speed" msgstr "Rýchlosť myši" #: ../../WPrefs.app/MouseSettings.c:507 msgid "Accel.:" msgstr "Zrýchl.:" #: ../../WPrefs.app/MouseSettings.c:520 msgid "Threshold:" msgstr "Prah zrýchl.:" #: ../../WPrefs.app/MouseSettings.c:535 msgid "Double-Click Delay" msgstr "Interval dvojkliknutia" #: ../../WPrefs.app/MouseSettings.c:579 msgid "Test" msgstr "Test" #: ../../WPrefs.app/MouseSettings.c:609 msgid "Workspace Mouse Actions" msgstr "Akcie myši na ploche" #: ../../WPrefs.app/MouseSettings.c:614 msgid "Disable mouse actions" msgstr "Zakázať akcie myši" #: ../../WPrefs.app/MouseSettings.c:620 msgid "Left Button" msgstr "Ľavé tlač." #: ../../WPrefs.app/MouseSettings.c:630 msgid "Middle Button" msgstr "Stredné tlač." #: ../../WPrefs.app/MouseSettings.c:640 msgid "Right Button" msgstr "Pravé tlač." #: ../../WPrefs.app/MouseSettings.c:650 msgid "Mouse Wheel" msgstr "Koliesko myši" #: ../../WPrefs.app/MouseSettings.c:672 msgid "Mouse Grab Modifier" msgstr "Modifikátor ťahania myšou" #: ../../WPrefs.app/MouseSettings.c:674 msgid "" "Keyboard modifier to use for actions that\n" "involve dragging windows with the mouse,\n" "clicking inside the window." msgstr "" "Klávesa, pri ktorej držaní môžete\n" "ťahaním presúvať (Tlač1) alebo meniť\n" "veľkosť (Tlač2) okna." #: ../../WPrefs.app/MouseSettings.c:708 #, c-format msgid "could not create %s" msgstr "nemožno vytvoriť %s" #: ../../WPrefs.app/MouseSettings.c:724 #, c-format msgid "could not create temporary file %s" msgstr "nemožno vytvoriť dočasný súbor %s" #: ../../WPrefs.app/MouseSettings.c:756 #, c-format msgid "could not rename file %s to %s\n" msgstr "nemožno premenovať súbor %s na %s\n" #: ../../WPrefs.app/MouseSettings.c:829 msgid "Shift" msgstr "" #: ../../WPrefs.app/MouseSettings.c:830 msgid "Lock" msgstr "" #: ../../WPrefs.app/MouseSettings.c:831 msgid "Control" msgstr "" #: ../../WPrefs.app/MouseSettings.c:832 msgid "Mod1" msgstr "" #: ../../WPrefs.app/MouseSettings.c:833 msgid "Mod2" msgstr "" #: ../../WPrefs.app/MouseSettings.c:834 msgid "Mod3" msgstr "" #: ../../WPrefs.app/MouseSettings.c:835 msgid "Mod4" msgstr "" #: ../../WPrefs.app/MouseSettings.c:836 msgid "Mod5" msgstr "" #: ../../WPrefs.app/MouseSettings.c:839 msgid "Applications Menu" msgstr "Menu Aplikácie" #: ../../WPrefs.app/MouseSettings.c:841 msgid "Select Windows" msgstr "Výber okien" #: ../../WPrefs.app/MouseSettings.c:844 msgid "Switch Workspaces" msgstr "Prepínanie pracovných plôch" #: ../../WPrefs.app/MouseSettings.c:849 msgid "Mouse Preferences" msgstr "Nastavenia myši" #: ../../WPrefs.app/MouseSettings.c:851 msgid "" "Mouse speed/acceleration, double click delay,\n" "mouse button bindings etc." msgstr "" "Rýchlosť/zrýchlenie myši, interval dvoj-\n" "kliknutia, činnosť jednotlivých tlačidiel." #: ../../WPrefs.app/Paths.c:84 msgid "bad value in option IconPath. Using default path list" msgstr "nesprávna hodnota voľby IconPath. Použitý implicitný zoznam ciest" #: ../../WPrefs.app/Paths.c:101 msgid "bad value in option PixmapPath. Using default path list" msgstr "nesprávna hodnota voľby PixmapPath. Použitý implicitný zoznam ciest" #: ../../WPrefs.app/Paths.c:149 msgid "Select directory" msgstr "Vyberte adresár" #: ../../WPrefs.app/Paths.c:270 msgid "Icon Search Paths" msgstr "Cesty k ikonám" #: ../../WPrefs.app/Paths.c:281 ../../WPrefs.app/Paths.c:312 #: ../../WPrefs.app/TexturePanel.c:1310 msgid "Add" msgstr "Pridať" #: ../../WPrefs.app/Paths.c:301 msgid "Pixmap Search Paths" msgstr "Cesty k obrázkom" #: ../../WPrefs.app/Paths.c:341 msgid "Search Path Configuration" msgstr "Nastavenia prehľadávaných ciest" #: ../../WPrefs.app/Paths.c:343 msgid "" "Search paths to use when looking for pixmaps\n" "and icons." msgstr "" "Nastavenia prehľadávaných adresárov\n" "pri hľadaní obrázkov a ikon." #: ../../WPrefs.app/Preferences.c:75 msgid "OFF" msgstr "VYPNUTÉ" #: ../../WPrefs.app/Preferences.c:77 msgid "1 pixel" msgstr "1 bod" #. 2-4 #: ../../WPrefs.app/Preferences.c:80 #, c-format msgid "%i pixels" msgstr "%i body" #. >4 #: ../../WPrefs.app/Preferences.c:83 #, c-format msgid "%i pixels " msgstr "%i bodov" #: ../../WPrefs.app/Preferences.c:229 msgid "Size Display" msgstr "Zobrazenie rozmerov okna" #: ../../WPrefs.app/Preferences.c:231 msgid "" "The position or style of the window size\n" "display that's shown when a window is resized." msgstr "" "Umiestnenie a štýl zobrazenia\n" "rozmerov okna pri ich zmene." #: ../../WPrefs.app/Preferences.c:238 ../../WPrefs.app/Preferences.c:259 msgid "Corner of screen" msgstr "V rohu obrazovky" #: ../../WPrefs.app/Preferences.c:239 ../../WPrefs.app/Preferences.c:260 msgid "Center of screen" msgstr "V strede obrazovky" #: ../../WPrefs.app/Preferences.c:240 ../../WPrefs.app/Preferences.c:261 msgid "Center of resized window" msgstr "V strede okna" #: ../../WPrefs.app/Preferences.c:241 msgid "Technical drawing-like" msgstr "Ako technické kreslenie" #: ../../WPrefs.app/Preferences.c:242 ../../WPrefs.app/Preferences.c:262 msgid "Disabled" msgstr "Zakázané" #: ../../WPrefs.app/Preferences.c:250 msgid "Position Display" msgstr "Zobrazenie umiestnenia" #: ../../WPrefs.app/Preferences.c:252 msgid "" "The position or style of the window position\n" "display that's shown when a window is moved." msgstr "" "Umiestnenie a štýl zobrazenia\n" "pozície okna pri jej zmene." #: ../../WPrefs.app/Preferences.c:270 msgid "Show balloon text for..." msgstr "Zobrazovanie obláčikov pre..." #: ../../WPrefs.app/Preferences.c:277 msgid "incomplete window titles" msgstr "neúplné názvy okien" #: ../../WPrefs.app/Preferences.c:278 msgid "miniwindow titles" msgstr "názvy miniokien" #: ../../WPrefs.app/Preferences.c:279 msgid "application/dock icons" msgstr "ikony aplikácií a v Doku" #: ../../WPrefs.app/Preferences.c:280 msgid "internal help" msgstr "internú nápovedu" #: ../../WPrefs.app/Preferences.c:292 msgid "Raise window when switchingfocus with keyboard" msgstr "Pri aktivovaní okna klávesnicoupresunúť okno do popredia" #: ../../WPrefs.app/Preferences.c:298 msgid "" "Enable keyboard language\n" "switch button in window titlebars." msgstr "" "Povoliť tlačítko prepínania jazyka\n" "klávesnice v hornej lište okien." #: ../../WPrefs.app/Preferences.c:307 msgid "Workspace border" msgstr "Okraje pracovnej plochy" #: ../../WPrefs.app/Preferences.c:323 msgid "Left/Right" msgstr "Vertikálne" #: ../../WPrefs.app/Preferences.c:328 msgid "Top/Bottom" msgstr "Horizontálne" #: ../../WPrefs.app/Preferences.c:349 msgid "Miscellaneous Ergonomic Preferences" msgstr "Rôzne ergonomické nastavenia" #: ../../WPrefs.app/Preferences.c:350 msgid "" "Various settings like balloon text, geometry\n" "displays etc." msgstr "Nastavenie zobrazovania obláčikov, geometrie atď." #: ../../WPrefs.app/TexturePanel.c:323 msgid "Saturation" msgstr "Saturácia" #: ../../WPrefs.app/TexturePanel.c:325 msgid "Brightness" msgstr "Svetlosť" #: ../../WPrefs.app/TexturePanel.c:373 ../../WPrefs.app/TexturePanel.c:380 msgid "Hue" msgstr "Odtieň" #: ../../WPrefs.app/TexturePanel.c:610 msgid "Could not load the selected file: " msgstr "Nemožno načítať vybraný súbor: " #: ../../WPrefs.app/TexturePanel.c:664 msgid "Open Image" msgstr "Obrázok" #: ../../WPrefs.app/TexturePanel.c:694 msgid "The selected file does not contain a supported image." msgstr "Vybraný súbor neobsahuje podporovaný typ obrázku." #: ../../WPrefs.app/TexturePanel.c:945 #, c-format msgid "could not load file '%s': %s" msgstr "nemožno načítať súbor '%s': %s" #: ../../WPrefs.app/TexturePanel.c:1064 #, c-format msgid "error creating texture %s" msgstr "chyba pri vytváraní textúry %s" #: ../../WPrefs.app/TexturePanel.c:1254 msgid "Texture Panel" msgstr "Panel textúr" #: ../../WPrefs.app/TexturePanel.c:1262 msgid "Texture Name" msgstr "Meno textúry" #: ../../WPrefs.app/TexturePanel.c:1274 msgid "Solid Color" msgstr "Jedna farba" #: ../../WPrefs.app/TexturePanel.c:1275 msgid "Gradient Texture" msgstr "Prechod farieb" #: ../../WPrefs.app/TexturePanel.c:1276 msgid "Simple Gradient Texture" msgstr "Prechod dvoch farieb" # fix me! kombinácia prechodu dvoch farieb a obrázku pod tým... #: ../../WPrefs.app/TexturePanel.c:1277 msgid "Textured Gradient" msgstr "Prechod na obrázku" #: ../../WPrefs.app/TexturePanel.c:1278 msgid "Image Texture" msgstr "Obrázok" #: ../../WPrefs.app/TexturePanel.c:1286 msgid "Default Color" msgstr "Farba pozadia" #: ../../WPrefs.app/TexturePanel.c:1298 msgid "Gradient Colors" msgstr "Farby prechodu" #: ../../WPrefs.app/TexturePanel.c:1394 msgid "Direction" msgstr "Smer" #: ../../WPrefs.app/TexturePanel.c:1422 msgid "Gradient" msgstr "Prechod" #: ../../WPrefs.app/TexturePanel.c:1440 msgid "Gradient Opacity" msgstr "Nepriehľadnosť prechodu" #: ../../WPrefs.app/TexturePanel.c:1483 msgid "Image" msgstr "Obrázok" #: ../../WPrefs.app/TexturePanel.c:1515 msgid "Tile" msgstr "Vedľa seba" #: ../../WPrefs.app/TexturePanel.c:1516 msgid "Scale" msgstr "Roztiahnuť" # fix me! príliš dlhé #: ../../WPrefs.app/TexturePanel.c:1518 msgid "Maximize" msgstr "Maximaliz." #: ../../WPrefs.app/Themes.c:71 ../../WPrefs.app/Themes.c:82 msgid "Set" msgstr "Nastaviť" #: ../../WPrefs.app/Themes.c:132 msgid "Stop" msgstr "Zastaviť" #: ../../WPrefs.app/Themes.c:143 ../../WPrefs.app/Themes.c:203 #: ../../WPrefs.app/Themes.c:223 msgid "Download" msgstr "Stiahnuť" #: ../../WPrefs.app/Themes.c:171 msgid "Save Current Theme" msgstr "Uložiť súčasnú tému" #: ../../WPrefs.app/Themes.c:180 msgid "Load" msgstr "Načítať" #: ../../WPrefs.app/Themes.c:185 msgid "Install" msgstr "Inštalovať" # fix me! tile = pozadie ikony #: ../../WPrefs.app/Themes.c:193 msgid "Tile of The Day" msgstr "Pozadie dňa" #: ../../WPrefs.app/Themes.c:213 msgid "Bar of The Day" msgstr "Lišta dňa" #: ../../WPrefs.app/WPrefs.c:260 msgid "Window Maker Preferences" msgstr "Konfigurácia Window Makeru" #: ../../WPrefs.app/WPrefs.c:284 msgid "Revert Page" msgstr "Obnoviť stranu" #: ../../WPrefs.app/WPrefs.c:290 msgid "Revert All" msgstr "Obnoviť všetko" #: ../../WPrefs.app/WPrefs.c:296 msgid "Save" msgstr "Uložiť" #: ../../WPrefs.app/WPrefs.c:309 msgid "Balloon Help" msgstr "Nápoveda" #: ../../WPrefs.app/WPrefs.c:334 msgid "Window Maker Preferences Utility" msgstr "Konfiguračný nástroj Window Makeru" #: ../../WPrefs.app/WPrefs.c:341 #, c-format msgid "Version %s for Window Maker %s or newer" msgstr "Verzia %s pre Window Maker %s alebo novší" # info: nemáme radi slovesá v inom tvare ako neurčitku (štartujem) #: ../../WPrefs.app/WPrefs.c:349 msgid "Starting..." msgstr "Inicializácia..." #: ../../WPrefs.app/WPrefs.c:355 msgid "" "Programming/Design: Alfredo K. Kojima\n" "Artwork: Marco van Hylckama Vlieg, Largo et al\n" "More Programming: James Thompson et al" msgstr "" "Programovanie/dizajn: Alfredo K. Kojima\n" "Grafika: Marco van Hylckama Vlieg, Largo a kol.\n" "Ďalšie programovanie: James Thompson a kol." #: ../../WPrefs.app/WPrefs.c:455 #, c-format msgid "could not locate image file %s\n" msgstr "nemožno nájsť súbor s obrázkom %s\n" #: ../../WPrefs.app/WPrefs.c:670 #, c-format msgid "could not load image file %s:%s" msgstr "nemožno načítať súbor s obrázkom %s:%s" #: ../../WPrefs.app/WPrefs.c:689 msgid "Loading Window Maker configuration files..." msgstr "Čítajú sa konfiguračné súbory Window Makeru..." #: ../../WPrefs.app/WPrefs.c:693 msgid "Initializing configuration panels..." msgstr "Inicializujú sa konfiguračné panely..." #: ../../WPrefs.app/WPrefs.c:727 msgid "" "WPrefs is free software and is distributed WITHOUT ANY\n" "WARRANTY under the terms of the GNU General Public License." msgstr "" "WPrefs je free software a je rozširovaný BEZ AKEJKOĽVEK\n" "ZÁRUKY v súlade s licenciou GNU General Public Licence." #: ../../WPrefs.app/WPrefs.c:757 ../../WPrefs.app/WPrefs.c:837 #, c-format msgid "Window Maker domain (%s) is corrupted!" msgstr "Doména Window Makeru (%s) je poškodená!" # info: jak zvažujem, tak zvažujem, prednastavenia vs. štandardné nastavenia # vs. implicitné nastavenia, vždy mi to vychádza rovnako #: ../../WPrefs.app/WPrefs.c:761 #, c-format msgid "Could not load Window Maker domain (%s) from defaults database." msgstr "" "Nemožno načítať doménu Window Makeru (%s) z databázy implicitných nastavení." #: ../../WPrefs.app/WPrefs.c:777 msgid "could not extract version information from Window Maker" msgstr "nemožno získať informáciu o verzii Window Makeru" #: ../../WPrefs.app/WPrefs.c:778 msgid "Make sure wmaker is in your search path." msgstr "Ubezpečte sa, že wmaker sa nachádza v prehľadávanom adresári." #: ../../WPrefs.app/WPrefs.c:781 msgid "" "Could not extract version from Window Maker. Make sure it is correctly " "installed and is in your PATH environment variable." msgstr "" "Nemožno zistiť verziu Window Makeru. Ubezpečte sa, že je správne " "nainštalovaný a cesta k nemu sa nachádza v premennej PATH." #: ../../WPrefs.app/WPrefs.c:791 msgid "" "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." msgstr "" "Nemožno zistiť verziu Window Makeru. Ubezpečte sa, že je správne " "nainštalovaný a cesta k nemu sa nachádza v premennej PATH." #: ../../WPrefs.app/WPrefs.c:798 #, c-format msgid "" "WPrefs only supports Window Maker 0.18.0 or newer.\n" "The version installed is %i.%i.%i\n" msgstr "" "WPrefs podporuje Window Maker 0.18.0 alebo novší.\n" "Verzia nainštalovaného je %i.%i.%i.\n" #: ../../WPrefs.app/WPrefs.c:805 #, 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, ktorý je nainštalovaný na vašom systéme, nie je úplne " "podporovaný touto verziou WPrefs." #: ../../WPrefs.app/WPrefs.c:818 #, c-format msgid "could not run \"%s --global_defaults_path\"." msgstr "nemožno spustiť \"%s --global_defaults_path\"." #: ../../WPrefs.app/WPrefs.c:841 #, c-format msgid "Could not load global Window Maker domain (%s)." msgstr "Nemožno načítať globálnu doménu Window Makeru (%s)." #: ../../WPrefs.app/WPrefs.c:1090 #, c-format msgid "" "bad speed value for option %s\n" ". Using default Medium" msgstr "" "nesprávna hodnota rýchlosti pre voľbu %s.\n" "Použitá implicitná Medium" #: ../../WPrefs.app/WindowHandling.c:141 #, c-format msgid "bad option value %s in WindowPlacement. Using default value" msgstr "nesprávna hodnota voľby %s vo WindowPlacement. Použitá implicitná" #: ../../WPrefs.app/WindowHandling.c:163 msgid "invalid data in option WindowPlaceOrigin. Using default (0,0)" msgstr "nesprávne údaje voľby WindowPlaceOrigin. Požité (0, 0)" #: ../../WPrefs.app/WindowHandling.c:243 msgid "Window Placement" msgstr "Umiestňovanie okien" #: ../../WPrefs.app/WindowHandling.c:244 msgid "" "How to place windows when they are first put\n" "on screen." msgstr "" "Kam sa majú umiestňovať okná\n" "pri ich prvom zobrazení." #: ../../WPrefs.app/WindowHandling.c:250 msgid "Automatic" msgstr "Automatické" #: ../../WPrefs.app/WindowHandling.c:251 msgid "Random" msgstr "Náhodné" #: ../../WPrefs.app/WindowHandling.c:252 msgid "Manual" msgstr "Ručné" #: ../../WPrefs.app/WindowHandling.c:253 msgid "Cascade" msgstr "Do kaskády" # info: v krajnom prípade to možno zmeniť na niečo # lepšie (mňa nič také nenapadne) #: ../../WPrefs.app/WindowHandling.c:254 msgid "Smart" msgstr "Elegantné" #: ../../WPrefs.app/WindowHandling.c:260 msgid "Placement Origin" msgstr "" "Umiestňovať od\n" "pozície" #: ../../WPrefs.app/WindowHandling.c:321 msgid "Opaque Move" msgstr "Obsah pri presune" #: ../../WPrefs.app/WindowHandling.c:322 msgid "" "Whether the window contents should be moved\n" "when dragging windows aroung or if only a\n" "frame should be displayed.\n" msgstr "" "Zobrazovať pri presúvaní okna\n" "jeho obsah alebo len rámček.\n" #: ../../WPrefs.app/WindowHandling.c:361 msgid "When maximizing..." msgstr "Pri maximalizácii..." #: ../../WPrefs.app/WindowHandling.c:366 msgid "...do not cover icons" msgstr "...neprekrývať ikony" #: ../../WPrefs.app/WindowHandling.c:372 msgid "...do not cover dock" msgstr "...neprekrývať Dok" #: ../../WPrefs.app/WindowHandling.c:381 msgid "Edge Resistance" msgstr "Odpor okrajov" #: ../../WPrefs.app/WindowHandling.c:383 msgid "" "Edge resistance will make windows `resist'\n" "being moved further for the defined threshold\n" "when moved against other windows or the edges\n" "of the screen." msgstr "" "Nastavenie odporu okrajov umožní\n" "oknám klásť odpor alebo priťahovať\n" "pri presúvaní proti inému oknu\n" "alebo mimo obrazovky." #: ../../WPrefs.app/WindowHandling.c:402 msgid "Resist" msgstr "Odpor" # info: sem sa vmestí najviac nejakých 8 znakov a nedá sa to zmeniť #: ../../WPrefs.app/WindowHandling.c:407 msgid "Attract" msgstr "Priťah." #: ../../WPrefs.app/WindowHandling.c:423 msgid "Open dialogs in same workspace as their owners" msgstr "Otvárať dialógy na ploche vlastníka" #: ../../WPrefs.app/WindowHandling.c:450 msgid "Window Handling Preferences" msgstr "Nastavenia práce s oknami" #: ../../WPrefs.app/WindowHandling.c:452 msgid "" "Window handling options. Initial placement style\n" "edge resistance, opaque move etc." msgstr "" "Nastavenia pre okná. Štýl počiatočného umiestnenia,\n" "odpor okrajov, zobrazovanie obsahu pri presune atď." # info: nechajme my navigáciu napokoji #: ../../WPrefs.app/Workspace.c:176 msgid "Workspace Navigation" msgstr "Pracovné plochy" #: ../../WPrefs.app/Workspace.c:183 msgid "Wrap to the first workspace from the last workspace" msgstr "Za poslednou pracovnou plochou nasleduje prvá a naopak" #: ../../WPrefs.app/Workspace.c:205 msgid "Switch workspaces while dragging windows" msgstr "ťahanie okien medzi pracovnými plochami" #: ../../WPrefs.app/Workspace.c:227 msgid "Automatically create new workspaces" msgstr "Automaticky vytvárať nové pracovné plochy" #: ../../WPrefs.app/Workspace.c:250 msgid "Position of workspace name display" msgstr "Umiestnenie názvu pracovnej plochy" #: ../../WPrefs.app/Workspace.c:269 msgid "Disable" msgstr "Zakázať" #: ../../WPrefs.app/Workspace.c:271 msgid "Top" msgstr "Navrchu" #: ../../WPrefs.app/Workspace.c:272 msgid "Bottom" msgstr "Naspodu" # info: lomky si môžme odpustiť - máme na to #: ../../WPrefs.app/Workspace.c:273 msgid "Top/Left" msgstr "Navrchu vľavo" #: ../../WPrefs.app/Workspace.c:274 msgid "Top/Right" msgstr "Navrchu vpravo" #: ../../WPrefs.app/Workspace.c:275 msgid "Bottom/Left" msgstr "Naspodu vľavo" #: ../../WPrefs.app/Workspace.c:276 msgid "Bottom/Right" msgstr "Naspodu vpravo" #: ../../WPrefs.app/Workspace.c:284 msgid "Dock/Clip" msgstr "Dok/Spinka" #: ../../WPrefs.app/Workspace.c:303 msgid "" "Disable/enable the application Dock (the\n" "vertical icon bar in the side of the screen)." msgstr "" "Zakázať/povoliť Dok aplikácií (vertikálny\n" "stĺpec ikon na kraji obrazovky)." #: ../../WPrefs.app/Workspace.c:324 msgid "" "Disable/enable the Clip (that thing with\n" "a paper clip icon)." msgstr "" "Zakázať/povoliť Spinku (to je tá\n" "vec s ikonou spinky na papier)." #: ../../WPrefs.app/Workspace.c:364 msgid "Workspace Preferences" msgstr "Nastavenia pracovných plôch" #: ../../WPrefs.app/Workspace.c:366 msgid "" "Workspace navigation features.\n" "You can also enable/disable the Dock and Clip here." msgstr "" "Vlastnosti navigácie v pracovných plochách.\n" "Tu tiež možno povoliť/zakázať Dok a Spinku." #: ../../WPrefs.app/imagebrowser.c:95 msgid "View" msgstr "Prezerať" #: ../../WPrefs.app/main.c:59 #, c-format msgid "usage: %s [options]\n" msgstr "použitie: %s [voľby]\n" #: ../../WPrefs.app/main.c:60 msgid "options:" msgstr "voľby:" #: ../../WPrefs.app/main.c:61 msgid " -display <display>\tdisplay to be used" msgstr " -display <display>\tpoužiť daný display" #: ../../WPrefs.app/main.c:62 msgid " --version\t\tprint version number and exit" msgstr " --version\t\tvypísať verziu a ukončiť" #: ../../WPrefs.app/main.c:63 msgid " --help\t\tprint this message and exit" msgstr " --help\t\tvypísať tento text a ukončiť" #: ../../WPrefs.app/main.c:122 #, c-format msgid "too few arguments for %s" msgstr "málo argumentov pre voľbu %s" #: ../../WPrefs.app/main.c:144 msgid "X server does not support locale" msgstr "X server nepodporuje miestne nastavenia" #: ../../WPrefs.app/main.c:147 msgid "cannot set locale modifiers" msgstr "nemožno nastaviť modifikátory miestnych nastavení" #: ../../WPrefs.app/main.c:153 #, c-format msgid "could not open display %s" msgstr "nemožno otvoriť display %s" #: ../../WPrefs.app/main.c:161 msgid "could not initialize application" msgstr "nemožno inicializovať aplikáciu" ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/po/ru.po��������������������������������������������������������������0000644�0001750�0001750�00000205303�13431646201�014362� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Igor P. Roboul <igorr@russia.crosswinds.net> # Andrew W. Nosenko <awn@bcs.zp.ua> # # Краткий словарь: # options параметры # preferences ??? (не устоялось) # settings установки msgid "" msgstr "" "Project-Id-Version: WPrefs.app 0.45\n" "POT-Creation-Date: 2002-09-12 16:18+0300\n" "PO-Revision-Date: 2002-09-12 17:45+0300\n" "Last-Translator: awn@bcs.zp.ua\n" "Language-Team: Russian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../../WPrefs.app/Appearance.c:1131 msgid "Select File" msgstr "Укажите файл" #: ../../WPrefs.app/Appearance.c:1533 msgid "Focused Window" msgstr "Активное окно" #: ../../WPrefs.app/Appearance.c:1537 msgid "Unfocused Window" msgstr "Неактивное окно" #: ../../WPrefs.app/Appearance.c:1541 msgid "Owner of Focused Window" msgstr "Владелец активного окна" # awn: если перевести, то не помещается в картинку #: ../../WPrefs.app/Appearance.c:1545 ../../WPrefs.app/Appearance.c:1862 msgid "Menu Title" msgstr "" #: ../../WPrefs.app/Appearance.c:1549 ../../WPrefs.app/Appearance.c:1551 msgid "Normal Item" msgstr "Нормальный" #: ../../WPrefs.app/Appearance.c:1555 msgid "Disabled Item" msgstr "Запрещенный" #: ../../WPrefs.app/Appearance.c:1564 msgid "Highlighted" msgstr "Подсвеченный" #: ../../WPrefs.app/Appearance.c:1755 msgid "Texture" msgstr "Текстура" #: ../../WPrefs.app/Appearance.c:1763 msgid "Titlebar of Focused Window" msgstr "Заголовок активного окна" #: ../../WPrefs.app/Appearance.c:1764 msgid "Titlebar of Unfocused Windows" msgstr "Заголовок неактивных окон" #: ../../WPrefs.app/Appearance.c:1765 msgid "Titlebar of Focused Window's Owner" msgstr "Заголовок владельца активного окна" #: ../../WPrefs.app/Appearance.c:1766 msgid "Window Resizebar" msgstr "Рамка изменения размера окна" #: ../../WPrefs.app/Appearance.c:1767 msgid "Titlebar of Menus" msgstr "Заголовок меню" #: ../../WPrefs.app/Appearance.c:1768 msgid "Menu Items" msgstr "Элементы меню" #: ../../WPrefs.app/Appearance.c:1769 msgid "Icon Background" msgstr "Фон иконки" #: ../../WPrefs.app/Appearance.c:1784 msgid "" "Double click in the texture you want to use\n" "for the selected item." msgstr "" "Щелкните дважды на текстуре, которую вы хотите\n" "использовать для выбранного элемента." #: ../../WPrefs.app/Appearance.c:1798 msgid "New" msgstr "Новый" #: ../../WPrefs.app/Appearance.c:1802 msgid "Create a new texture." msgstr "Создать новую текстуру." #: ../../WPrefs.app/Appearance.c:1810 msgid "Extract..." msgstr "Извлечь..." #: ../../WPrefs.app/Appearance.c:1814 msgid "Extract texture(s) from a theme or a style file." msgstr "Извлечь текстуру (текстуры) из темы или файла стиля." #: ../../WPrefs.app/Appearance.c:1824 msgid "Edit" msgstr "Редактировать" #: ../../WPrefs.app/Appearance.c:1827 msgid "Edit the highlighted texture." msgstr "Редактировать выбранную текстуру." #: ../../WPrefs.app/Appearance.c:1835 ../../WPrefs.app/TexturePanel.c:1316 msgid "Delete" msgstr "Стереть" #: ../../WPrefs.app/Appearance.c:1839 msgid "Delete the highlighted texture." msgstr "Удалить выбранную текстуру." #: ../../WPrefs.app/Appearance.c:1852 msgid "Color" msgstr "Цвет" #: ../../WPrefs.app/Appearance.c:1859 msgid "Focused Window Title" msgstr "Заголовок активного окна" #: ../../WPrefs.app/Appearance.c:1860 msgid "Unfocused Window Title" msgstr "Заголовок неактивного окна" #: ../../WPrefs.app/Appearance.c:1861 msgid "Owner of Focused Window Title" msgstr "Владелец активного окна" #: ../../WPrefs.app/Appearance.c:1863 msgid "Menu Item Text" msgstr "Текст элемента меню" #: ../../WPrefs.app/Appearance.c:1864 msgid "Disabled Menu Item Text" msgstr "Текст запрещенного элемента меню" #: ../../WPrefs.app/Appearance.c:1865 msgid "Menu Highlight Color" msgstr "Фон подсвеченного элемента меню" #: ../../WPrefs.app/Appearance.c:1866 msgid "Highlighted Menu Text Color" msgstr "Текст подсвеченного элемента меню" #: ../../WPrefs.app/Appearance.c:1905 msgid "Background" msgstr "Фон" #: ../../WPrefs.app/Appearance.c:1917 ../../WPrefs.app/TexturePanel.c:1503 msgid "Browse..." msgstr "Выбрать" #: ../../WPrefs.app/Appearance.c:1930 msgid "Options" msgstr "Параметры" #: ../../WPrefs.app/Appearance.c:1937 msgid "Menu Style" msgstr "Стиль меню" #: ../../WPrefs.app/Appearance.c:1965 ../../WPrefs.app/Configurations.c:242 #: ../../WPrefs.app/Configurations.c:254 ../../WPrefs.app/Focus.c:288 #: ../../WPrefs.app/Focus.c:299 ../../WPrefs.app/MenuPreferences.c:134 #: ../../WPrefs.app/MenuPreferences.c:145 #: ../../WPrefs.app/MenuPreferences.c:173 #: ../../WPrefs.app/MenuPreferences.c:188 ../../WPrefs.app/MouseSettings.c:560 #: ../../WPrefs.app/MouseSettings.c:571 ../../WPrefs.app/WPrefs.c:558 #: ../../WPrefs.app/WPrefs.c:583 #, c-format msgid "could not load icon file %s" msgstr "не могу загрузить иконку %s" # awn: правильно -- "Выравнивание заголовка", но места нет. #: ../../WPrefs.app/Appearance.c:1979 msgid "Title Alignment" msgstr "Заголовок" #: ../../WPrefs.app/Appearance.c:1986 msgid "Left" msgstr "Влево" #: ../../WPrefs.app/Appearance.c:1989 ../../WPrefs.app/TexturePanel.c:1517 #: ../../WPrefs.app/Workspace.c:270 msgid "Center" msgstr "По центру" #: ../../WPrefs.app/Appearance.c:1992 msgid "Right" msgstr "Вправо" #: ../../WPrefs.app/Appearance.c:2216 msgid "Appearance Preferences" msgstr "Внешний вид" #: ../../WPrefs.app/Appearance.c:2218 msgid "" "Background texture configuration for windows,\n" "menus and icons." msgstr "" "Конфигурация фоновых текстур для окон,\n" "меню и иконок." #: ../../WPrefs.app/Appearance.c:2263 msgid "Extract Texture" msgstr "Извлечь текстуру" #: ../../WPrefs.app/Appearance.c:2283 msgid "Textures" msgstr "Текстуры" #: ../../WPrefs.app/Appearance.c:2294 ../../WPrefs.app/WPrefs.c:302 msgid "Close" msgstr "Закрыть" #: ../../WPrefs.app/Appearance.c:2299 msgid "Extract" msgstr "Извлечь" #: ../../WPrefs.app/Configurations.c:150 ../../WPrefs.app/Configurations.c:156 #: ../../WPrefs.app/MouseSettings.c:490 ../../WPrefs.app/WindowHandling.c:339 #: ../../WPrefs.app/WindowHandling.c:351 ../../WPrefs.app/Workspace.c:90 #: ../../WPrefs.app/Workspace.c:101 #, c-format msgid "could not load icon %s" msgstr "не могу загрузить иконку %s" #: ../../WPrefs.app/Configurations.c:164 ../../WPrefs.app/Workspace.c:109 #, c-format msgid "could not process icon %s: %s" msgstr "не могу обработать иконку %s: %s" #: ../../WPrefs.app/Configurations.c:189 ../../WPrefs.app/Workspace.c:164 #, c-format msgid "could not load image file %s" msgstr "не могу загрузить файл изображения %s" #: ../../WPrefs.app/Configurations.c:203 msgid "Icon Slide Speed" msgstr "Скорость сдвига иконки" #: ../../WPrefs.app/Configurations.c:209 msgid "Shade Animation Speed" msgstr "Скорость сворачивания" # awn: как это нормально перевести, да так, чтобы поместилось? #: ../../WPrefs.app/Configurations.c:271 msgid "Smooth Scaling" msgstr "Гладкое масштабирование" #: ../../WPrefs.app/Configurations.c:272 msgid "" "Smooth scaled background images, neutralizing\n" "the `pixelization' effect. This will slow\n" "down loading of background images considerably." msgstr "" "Сглаживать (нажато) или нет (отпущено) масштабированные\n" "фоновые изображения. С одной стороны, это делает\n" "изображение более \"гладкими\", скрывая отдельные,\n" "увеличившиеся в размерах точки, но с другой стороны,\n" "увеличивает время, необходимое для загрузки фонового\n" "изображения." #: ../../WPrefs.app/Configurations.c:313 msgid "Titlebar Style" msgstr "Стиль заголовка" #: ../../WPrefs.app/Configurations.c:351 msgid "Animations and Sound" msgstr "Анимация и звук" #: ../../WPrefs.app/Configurations.c:357 msgid "Animations" msgstr "Анимация" #: ../../WPrefs.app/Configurations.c:368 msgid "" "Disable/enable animations such as those shown\n" "for window miniaturization, shading etc." msgstr "" "Запрещает/разрешает анимацию при сворачивании\n" "окон в иконку, линейку и т.п." #: ../../WPrefs.app/Configurations.c:376 msgid "Superfluous" msgstr "Излишества" #: ../../WPrefs.app/Configurations.c:387 msgid "" "Disable/enable `superfluous' features and\n" "animations. These include the `ghosting' of the\n" "dock when it's being moved to another side and\n" "the explosion animation when undocking icons." msgstr "" "Запрещает/разрешает различные `излишества'.\n" "Например, анимированный `взрыв' иконки при\n" "удалении ее из Дока." #: ../../WPrefs.app/Configurations.c:397 msgid "Sounds" msgstr "Звуки" #: ../../WPrefs.app/Configurations.c:408 msgid "" "Disable/enable support for sound effects played\n" "for actions like shading and closing a window.\n" "You will need a module distributed separately\n" "for this. You can get it at:\n" "http://shadowmere.student.utwente.nl/" msgstr "" "Запретить/разрешить звуковые эффекты для действий,\n" "наподобие свертки или закрытия окна. Для этого\n" "вам понадобится модуль, поставляемый отдельно.\n" "Вы можете загрузить его с:\n" "http://shadowmere.student.utwente.nl/" #: ../../WPrefs.app/Configurations.c:419 msgid "" "Note: sound requires a module distributed\n" "separately" msgstr "" "Замечание: для звука требуется отдельно\n" "поставляемый модуль" #: ../../WPrefs.app/Configurations.c:429 msgid "Dithering colormap for 8bpp" msgstr "Приведение палитры для 8bpp" #: ../../WPrefs.app/Configurations.c:431 msgid "" "Number of colors to reserve for Window Maker\n" "on displays that support only 8bpp (PseudoColor)." msgstr "" "Количество цветов, которое будет зарезервировано\n" "за Window Maker'ом в режиме 8bpp (PseudoColor)." #: ../../WPrefs.app/Configurations.c:438 msgid "Disable dithering in any visual/depth" msgstr "Запретить приведение палитры вообще" #: ../../WPrefs.app/Configurations.c:459 msgid "" "More colors for\n" "applications" msgstr "" "Больше цветов\n" "для\n" "приложений" #: ../../WPrefs.app/Configurations.c:466 msgid "" "More colors for\n" "Window Maker" msgstr "" "Больше цветов\n" "для\n" "Window Maker'а" #: ../../WPrefs.app/Configurations.c:521 msgid "Other Configurations" msgstr "Другие настройки" #: ../../WPrefs.app/Configurations.c:523 msgid "" "Animation speeds, titlebar styles, various option\n" "toggling and number of colors to reserve for\n" "Window Maker on 8bit displays." msgstr "" "Скорость анимации, стили заголовков, переключение различных\n" "параметров и количества цветов для резервирования за\n" "Window Maker'ом при работе с 8bit'ным цветом (8bpp)." #: ../../WPrefs.app/Expert.c:75 msgid "" "Disable miniwindows (icons for miniaturized windows). For use with KDE/GNOME." msgstr "" "Запретить миниокна (иконки для минимизированных окон). Для использования с " "KDE/GNOME." #: ../../WPrefs.app/Expert.c:76 msgid "Do not set non-WindowMaker specific parameters (do not use xset)." msgstr "" "Не устанавливать параметры, не относящиеся непосредственно к\n" "Window Maker'у (не использовать xset)." #: ../../WPrefs.app/Expert.c:77 msgid "Automatically save session when exiting Window Maker." msgstr "Автоматически сохранять сессию при выходе из Window Maker'а." #: ../../WPrefs.app/Expert.c:78 msgid "Use SaveUnder in window frames, icons, menus and other objects." msgstr "Использовать SaveUnder для окон, иконок, меню и других объектов." #: ../../WPrefs.app/Expert.c:79 msgid "Use Windoze style cycling." msgstr "Переключение окон в стиле Windows" #: ../../WPrefs.app/Expert.c:80 msgid "Disable confirmation panel for the Kill command." msgstr "Запретить диалог подтверждения для команды `Убить'." # awn: FIXME: что это вообще значит? #: ../../WPrefs.app/Expert.c:81 msgid "Disable selection animation for selected icons." msgstr "Запретить анимацию выбора для выбранных иконок." #: ../../WPrefs.app/Expert.c:115 msgid "Expert User Preferences" msgstr "Установки для опытного пользователя" #: ../../WPrefs.app/Expert.c:117 msgid "" "Options for people who know what they're doing...\n" "Also have some other misc. options." msgstr "" "Параметры, предназначенные для людей,\n" "которые знают, что делают...\n" "Также содержит некоторые другие,\n" "редко используемые параметры." #: ../../WPrefs.app/Focus.c:80 #, c-format msgid "bad option value %s for option FocusMode. Using default Manual" msgstr "неверное значение %s для FocusMode. Используем Manual" #: ../../WPrefs.app/Focus.c:94 #, c-format msgid "bad option value %s for option ColormapMode. Using default Auto" msgstr "неверное значение %s для ColormapMode. Используем Auto" #: ../../WPrefs.app/Focus.c:214 msgid "Input Focus Mode" msgstr "Режим фокуса ввода" #: ../../WPrefs.app/Focus.c:222 msgid "Manual: Click on the window to set keyboard input focus" msgstr "Вручную: Щелкните на окне, для передачи ему фокуса ввода" #: ../../WPrefs.app/Focus.c:229 msgid "Auto: Set keyboard input focus to the window under the mouse pointer" msgstr "Автоматически: Фокус клавиатурного ввода передается окну, находящемуся под курсором мыши" #: ../../WPrefs.app/Focus.c:243 msgid "Install colormap from the window..." msgstr "Устанавливать палитру окна..." #: ../../WPrefs.app/Focus.c:248 msgid "...that has the input focus" msgstr "...имеющего фокус ввода" #: ../../WPrefs.app/Focus.c:253 msgid "...that's under the mouse pointer" msgstr "...находящегося под курсором мыши" #: ../../WPrefs.app/Focus.c:262 msgid "Automatic Window Raise Delay" msgstr "Всплывать через..." #: ../../WPrefs.app/Focus.c:319 ../../WPrefs.app/MouseSettings.c:601 msgid "ms" msgstr "Мсек" #: ../../WPrefs.app/Focus.c:336 msgid "Do not let applications receive the click used to focus windows" msgstr "Не передавать приложениям щелчок мыши,сделанный для фокусировки" #: ../../WPrefs.app/Focus.c:342 msgid "Automatically focus new windows" msgstr "Автоматически передавать фокус новым окнам" #: ../../WPrefs.app/Focus.c:363 msgid "Window Focus Preferences" msgstr "Параметры для фокусировки окна" #: ../../WPrefs.app/Focus.c:365 msgid "" "Keyboard focus switching policy, colormap switching\n" "policy for 8bpp displays and other related options." msgstr "" "Политика переключения фокуса клавиатуры,\n" "политика переключения цветовой палитры для 8bpp\n" "и тому подобные параметры." #: ../../WPrefs.app/Font.c:276 msgid "Could not locate font information file WPrefs.app/font.data" msgstr "" #: ../../WPrefs.app/Font.c:282 msgid "Could not read font information file WPrefs.app/font.data" msgstr "" #: ../../WPrefs.app/Font.c:293 msgid "" "Invalid data in font information file WPrefs.app/font.data.\n" "Encodings data not found." msgstr "" #: ../../WPrefs.app/Font.c:298 msgid "- Custom -" msgstr "" #: ../../WPrefs.app/Font.c:329 ../../WPrefs.app/Menu.c:1594 #: ../../WPrefs.app/MouseSettings.c:140 ../../WPrefs.app/MouseSettings.c:160 #: ../../WPrefs.app/TexturePanel.c:613 ../../WPrefs.app/TexturePanel.c:693 #: ../../WPrefs.app/Themes.c:96 ../../WPrefs.app/WPrefs.c:758 #: ../../WPrefs.app/WPrefs.c:763 ../../WPrefs.app/WPrefs.c:780 #: ../../WPrefs.app/WPrefs.c:790 ../../WPrefs.app/WPrefs.c:800 #: ../../WPrefs.app/WPrefs.c:838 ../../WPrefs.app/WPrefs.c:843 msgid "Error" msgstr "Ошибка" #: ../../WPrefs.app/Font.c:329 ../../WPrefs.app/Menu.c:1594 #: ../../WPrefs.app/MouseSettings.c:142 ../../WPrefs.app/MouseSettings.c:162 #: ../../WPrefs.app/TexturePanel.c:614 ../../WPrefs.app/TexturePanel.c:695 #: ../../WPrefs.app/TexturePanel.c:1528 ../../WPrefs.app/Themes.c:98 #: ../../WPrefs.app/WPrefs.c:758 ../../WPrefs.app/WPrefs.c:763 #: ../../WPrefs.app/WPrefs.c:782 ../../WPrefs.app/WPrefs.c:794 #: ../../WPrefs.app/WPrefs.c:800 ../../WPrefs.app/WPrefs.c:807 #: ../../WPrefs.app/WPrefs.c:838 ../../WPrefs.app/WPrefs.c:843 #: ../../WPrefs.app/imagebrowser.c:105 msgid "OK" msgstr "OK" #: ../../WPrefs.app/Font.c:376 msgid "Default Font Sets" msgstr "" #: ../../WPrefs.app/Font.c:389 msgid "Font Set" msgstr "" #: ../../WPrefs.app/Font.c:418 msgid "Add..." msgstr "Добавить..." #: ../../WPrefs.app/Font.c:423 ../../WPrefs.app/Font.c:438 msgid "Change..." msgstr "Изменить..." #: ../../WPrefs.app/Font.c:428 ../../WPrefs.app/Paths.c:288 #: ../../WPrefs.app/Paths.c:319 msgid "Remove" msgstr "Удалить" #: ../../WPrefs.app/Font.c:477 msgid "Font Preferences" msgstr "Установки для шрифтов" #: ../../WPrefs.app/Font.c:478 msgid "Font Configurations for Windows, Menus etc" msgstr "Конфигурация Шрифтов для Окон, Меню и т.п." #: ../../WPrefs.app/Icons.c:180 msgid "Icon Positioning" msgstr "Расположение иконок" #: ../../WPrefs.app/Icons.c:227 msgid "Iconification Animation" msgstr "Анимирование сворачивания" #: ../../WPrefs.app/Icons.c:238 msgid "Shrinking/Zooming" msgstr "Сжатие/Распахивание" #: ../../WPrefs.app/Icons.c:239 msgid "Spinning/Twisting" msgstr "Вращение в плоскости" #: ../../WPrefs.app/Icons.c:240 msgid "3D-flipping" msgstr "Трехмерное вращение" #: ../../WPrefs.app/Icons.c:241 ../../WPrefs.app/MouseSettings.c:838 #: ../../WPrefs.app/MouseSettings.c:843 msgid "None" msgstr "Без оного" #: ../../WPrefs.app/Icons.c:254 msgid "Auto-arrange icons" msgstr "Автоматически выравнивать иконки" #: ../../WPrefs.app/Icons.c:256 msgid "Keep icons and miniwindows arranged all the time." msgstr "Поддерживать иконки и миниокна постоянно выровненными." #: ../../WPrefs.app/Icons.c:262 msgid "Omnipresent miniwindows" msgstr "Миниокна присутствуют везде" #: ../../WPrefs.app/Icons.c:264 msgid "Make miniwindows be present in all workspaces." msgstr "" "Сделать миниокна присутствующими сразу на всех\n" "рабочих пространствах." #: ../../WPrefs.app/Icons.c:273 msgid "Icon Size" msgstr "Размер иконок" #: ../../WPrefs.app/Icons.c:275 msgid "The size of the dock/application icon and miniwindows" msgstr "Размер миниокон и иконок приложений/дока" #: ../../WPrefs.app/Icons.c:345 msgid "Icon Preferences" msgstr "Установки для иконок" #: ../../WPrefs.app/Icons.c:347 msgid "" "Icon/Miniwindow handling options. Icon positioning\n" "area, sizes of icons, miniaturization animation style." msgstr "" "Параметры обработки иконок и миниокон. Размещение иконок,\n" "размер иконок, в каком стиле анимировать сворачивание." #: ../../WPrefs.app/imagebrowser.c:95 msgid "View" msgstr "" #: ../../WPrefs.app/KeyboardShortcuts.c:306 ../../WPrefs.app/Menu.c:360 #: ../../WPrefs.app/TexturePanel.c:1534 ../../WPrefs.app/imagebrowser.c:100 msgid "Cancel" msgstr "Отмена" #: ../../WPrefs.app/KeyboardSettings.c:73 msgid "Initial Key Repeat" msgstr "" #: ../../WPrefs.app/KeyboardSettings.c:114 msgid "Key Repeat Rate" msgstr "Скорость повторения клавиши" #: ../../WPrefs.app/KeyboardSettings.c:154 msgid "Type here to test" msgstr "Для теста пишите сюда" #: ../../WPrefs.app/KeyboardSettings.c:173 msgid "Keyboard Preferences" msgstr "Установки для клавиатуры" #: ../../WPrefs.app/KeyboardSettings.c:175 msgid "Not done" msgstr "Не закончено" #: ../../WPrefs.app/KeyboardShortcuts.c:307 msgid "Press the desired shortcut key(s) or click Cancel to stop capturing." msgstr "Нажмите клавишу(ы) или нажмите Отмена для остановки." #: ../../WPrefs.app/KeyboardShortcuts.c:327 #: ../../WPrefs.app/KeyboardShortcuts.c:577 ../../WPrefs.app/Menu.c:371 #: ../../WPrefs.app/Menu.c:830 msgid "Capture" msgstr "Захват" #: ../../WPrefs.app/KeyboardShortcuts.c:328 #: ../../WPrefs.app/KeyboardShortcuts.c:585 msgid "Click Capture to interactively define the shortcut key." msgstr "Нажмите \"Захват\" чтобы определить горячую клавишу(ы)." #: ../../WPrefs.app/KeyboardShortcuts.c:483 msgid "Actions" msgstr "Действия" #: ../../WPrefs.app/KeyboardShortcuts.c:499 msgid "Open applications menu" msgstr "Открыть меню приложений" #: ../../WPrefs.app/KeyboardShortcuts.c:500 msgid "Open window list menu" msgstr "Список окон" #: ../../WPrefs.app/KeyboardShortcuts.c:501 msgid "Open window commands menu" msgstr "Команды для окна" #: ../../WPrefs.app/KeyboardShortcuts.c:502 msgid "Hide active application" msgstr "Скрыть активное приложение" #: ../../WPrefs.app/KeyboardShortcuts.c:503 msgid "Hide other applications" msgstr "Скрыть другие приложения" #: ../../WPrefs.app/KeyboardShortcuts.c:504 msgid "Miniaturize active window" msgstr "Свернуть активное окно" #: ../../WPrefs.app/KeyboardShortcuts.c:505 msgid "Close active window" msgstr "Закрыть активное окно" #: ../../WPrefs.app/KeyboardShortcuts.c:506 msgid "Maximize active window" msgstr "Распахнуть активное окно" #: ../../WPrefs.app/KeyboardShortcuts.c:507 msgid "Maximize active window vertically" msgstr "Распахнуть активное окно по вертикали" #: ../../WPrefs.app/KeyboardShortcuts.c:508 msgid "Maximize active window horizontally" msgstr "Распахнуть активное окно по вертикали" #: ../../WPrefs.app/KeyboardShortcuts.c:509 msgid "Raise active window" msgstr "Активное окно наверх" #: ../../WPrefs.app/KeyboardShortcuts.c:510 msgid "Lower active window" msgstr "Активное окно вниз" #: ../../WPrefs.app/KeyboardShortcuts.c:511 msgid "Raise/Lower window under mouse pointer" msgstr "Вверх/Вниз активное окно" #: ../../WPrefs.app/KeyboardShortcuts.c:512 msgid "Shade active window" msgstr "Втянуть активное окно" #: ../../WPrefs.app/KeyboardShortcuts.c:513 msgid "Move/Resize active window" msgstr "Переместить/изменить размер" #: ../../WPrefs.app/KeyboardShortcuts.c:514 msgid "Select active window" msgstr "Пометить активное окно" #: ../../WPrefs.app/KeyboardShortcuts.c:515 msgid "Focus next window" msgstr "Следующее окно" #: ../../WPrefs.app/KeyboardShortcuts.c:516 msgid "Focus previous window" msgstr "Предыдущее окно" #: ../../WPrefs.app/KeyboardShortcuts.c:517 msgid "Switch to next workspace" msgstr "Следующее рабочее пространство" #: ../../WPrefs.app/KeyboardShortcuts.c:518 msgid "Switch to previous workspace" msgstr "Предыдущее рабочее пространство" #: ../../WPrefs.app/KeyboardShortcuts.c:519 msgid "Switch to next ten workspaces" msgstr "Следующие 10 рабочих пространств" #: ../../WPrefs.app/KeyboardShortcuts.c:520 msgid "Switch to previous ten workspaces" msgstr "Предыдущие 10 рабочих пространств" #: ../../WPrefs.app/KeyboardShortcuts.c:521 msgid "Switch to workspace 1" msgstr "Рабочее пространство 1" #: ../../WPrefs.app/KeyboardShortcuts.c:522 msgid "Switch to workspace 2" msgstr "Рабочее пространство 2" #: ../../WPrefs.app/KeyboardShortcuts.c:523 msgid "Switch to workspace 3" msgstr "Рабочее пространство 3" #: ../../WPrefs.app/KeyboardShortcuts.c:524 msgid "Switch to workspace 4" msgstr "Рабочее пространство 4" #: ../../WPrefs.app/KeyboardShortcuts.c:525 msgid "Switch to workspace 5" msgstr "Рабочее пространство 5" #: ../../WPrefs.app/KeyboardShortcuts.c:526 msgid "Switch to workspace 6" msgstr "Рабочее пространство 6" #: ../../WPrefs.app/KeyboardShortcuts.c:527 msgid "Switch to workspace 7" msgstr "Рабочее пространство 7" #: ../../WPrefs.app/KeyboardShortcuts.c:528 msgid "Switch to workspace 8" msgstr "Рабочее пространство 8" #: ../../WPrefs.app/KeyboardShortcuts.c:529 msgid "Switch to workspace 9" msgstr "Рабочее пространство 9" #: ../../WPrefs.app/KeyboardShortcuts.c:530 msgid "Switch to workspace 10" msgstr "Рабочее пространство 10" #: ../../WPrefs.app/KeyboardShortcuts.c:531 msgid "Shortcut for window 1" msgstr "Горячая клавиша 1" #: ../../WPrefs.app/KeyboardShortcuts.c:532 msgid "Shortcut for window 2" msgstr "Горячая клавиша 2" #: ../../WPrefs.app/KeyboardShortcuts.c:533 msgid "Shortcut for window 3" msgstr "Горячая клавиша 3" #: ../../WPrefs.app/KeyboardShortcuts.c:534 msgid "Shortcut for window 4" msgstr "Горячая клавиша 4" #: ../../WPrefs.app/KeyboardShortcuts.c:535 msgid "Shortcut for window 5" msgstr "Горячая клавиша 5" #: ../../WPrefs.app/KeyboardShortcuts.c:536 msgid "Shortcut for window 6" msgstr "Горячая клавиша 6" #: ../../WPrefs.app/KeyboardShortcuts.c:537 msgid "Shortcut for window 7" msgstr "Горячая клавиша 7" #: ../../WPrefs.app/KeyboardShortcuts.c:538 msgid "Shortcut for window 8" msgstr "Горячая клавиша 8" #: ../../WPrefs.app/KeyboardShortcuts.c:539 msgid "Shortcut for window 9" msgstr "Горячая клавиша 9" #: ../../WPrefs.app/KeyboardShortcuts.c:540 msgid "Shortcut for window 10" msgstr "Горячая клавиша 10" #: ../../WPrefs.app/KeyboardShortcuts.c:541 msgid "Switch to Next Screen/Monitor" msgstr "Следующий экран/монитор" #: ../../WPrefs.app/KeyboardShortcuts.c:542 msgid "Raise Clip" msgstr "Поднять Скрепку" #: ../../WPrefs.app/KeyboardShortcuts.c:543 msgid "Lower Clip" msgstr "Опустить Скрепку" #: ../../WPrefs.app/KeyboardShortcuts.c:544 msgid "Raise/Lower Clip" msgstr "Поднять/Опустить Скрепку" #: ../../WPrefs.app/KeyboardShortcuts.c:546 msgid "Toggle keyboard language" msgstr "Переключить язык клавиатуры" #: ../../WPrefs.app/KeyboardShortcuts.c:560 msgid "Shortcut" msgstr "Горячая клавиша" #: ../../WPrefs.app/KeyboardShortcuts.c:571 ../../WPrefs.app/Menu.c:836 msgid "Clear" msgstr "Очистить" #: ../../WPrefs.app/KeyboardShortcuts.c:633 msgid "Keyboard Shortcut Preferences" msgstr "Горячие клавиши" #: ../../WPrefs.app/KeyboardShortcuts.c:635 msgid "" "Change the keyboard shortcuts for actions such\n" "as changing workspaces and opening menus." msgstr "" "Изменить привязку клавиш для функций наподобие\n" "`переключить рабочее пространство' и `открыть меню'." #: ../../WPrefs.app/main.c:59 #, c-format msgid "usage: %s [options]\n" msgstr "Запуск: %s [параметры]\n" #: ../../WPrefs.app/main.c:60 msgid "options:" msgstr "Параметры:" #: ../../WPrefs.app/main.c:61 msgid " -display <display>\tdisplay to be used" msgstr " -display <дисплей>\tX дисплей для использования" #: ../../WPrefs.app/main.c:62 msgid " --version\t\tprint version number and exit" msgstr " --version\t\tпоказать номер версии и выйти" #: ../../WPrefs.app/main.c:63 msgid " --help\t\tprint this message and exit" msgstr " --help\t\tпоказать это сообщение и выйти" #: ../../WPrefs.app/main.c:122 #, c-format msgid "too few arguments for %s" msgstr "слишком мало аргументов для %s" #: ../../WPrefs.app/main.c:144 msgid "X server does not support locale" msgstr "X сервер не поддерживает locale" #: ../../WPrefs.app/main.c:147 msgid "cannot set locale modifiers" msgstr "не получается установить модификаторы локализации" #: ../../WPrefs.app/main.c:153 #, c-format msgid "could not open display %s" msgstr "не могу открыть дисплей %s" #: ../../WPrefs.app/main.c:161 msgid "could not initialize application" msgstr "не получается инициализировать приложение" #: ../../WPrefs.app/Menu.c:278 msgid "Select Program" msgstr "Выберите программу" #: ../../WPrefs.app/Menu.c:510 msgid "New Items" msgstr "Новые элементы" #: ../../WPrefs.app/Menu.c:511 msgid "Sample Commands" msgstr "Примеры команд" #: ../../WPrefs.app/Menu.c:512 msgid "Sample Submenus" msgstr "Примеры подменю" #: ../../WPrefs.app/Menu.c:526 msgid "Run Program" msgstr "Запуск программы" #: ../../WPrefs.app/Menu.c:527 msgid "Internal Command" msgstr "Внутренняя команда" #: ../../WPrefs.app/Menu.c:528 msgid "Submenu" msgstr "Подменю" #: ../../WPrefs.app/Menu.c:529 msgid "External Submenu" msgstr "Внешнее подменю" #: ../../WPrefs.app/Menu.c:530 msgid "Generated Submenu" msgstr "Сгенерированное подменю" #: ../../WPrefs.app/Menu.c:531 msgid "Directory Contents" msgstr "Содержание каталога" #: ../../WPrefs.app/Menu.c:532 msgid "Workspace Menu" msgstr "Меню рабочих пространств" #: ../../WPrefs.app/Menu.c:533 ../../WPrefs.app/MouseSettings.c:840 msgid "Window List Menu" msgstr "Меню списка окон" #: ../../WPrefs.app/Menu.c:552 msgid "XTerm" msgstr "XTerm" #: ../../WPrefs.app/Menu.c:555 msgid "rxvt" msgstr "rxvt" #: ../../WPrefs.app/Menu.c:558 msgid "ETerm" msgstr "ETerm" #: ../../WPrefs.app/Menu.c:561 msgid "Run..." msgstr "" #: ../../WPrefs.app/Menu.c:562 msgid "%a(Run,Type command to run)" msgstr "" #: ../../WPrefs.app/Menu.c:564 msgid "Netscape" msgstr "Netscape" #: ../../WPrefs.app/Menu.c:567 msgid "gimp" msgstr "gimp" #: ../../WPrefs.app/Menu.c:570 msgid "epic" msgstr "epic" #: ../../WPrefs.app/Menu.c:573 msgid "ee" msgstr "ee" #: ../../WPrefs.app/Menu.c:576 msgid "xv" msgstr "xv" #: ../../WPrefs.app/Menu.c:579 msgid "Acrobat Reader" msgstr "Acrobat Reader" #: ../../WPrefs.app/Menu.c:582 msgid "ghostview" msgstr "ghostview" #: ../../WPrefs.app/Menu.c:585 ../../WPrefs.app/Menu.c:857 msgid "Exit Window Maker" msgstr "Выйти из Window Maker'а" #: ../../WPrefs.app/Menu.c:608 msgid "Debian Menu" msgstr "" #: ../../WPrefs.app/Menu.c:611 msgid "RedHat Menu" msgstr "" #: ../../WPrefs.app/Menu.c:614 msgid "Menu Conectiva" msgstr "" #: ../../WPrefs.app/Menu.c:617 ../../WPrefs.app/Themes.c:250 msgid "Themes" msgstr "Темы" #: ../../WPrefs.app/Menu.c:622 msgid "Bg Images (scale)" msgstr "" #: ../../WPrefs.app/Menu.c:627 msgid "Bg Images (tile)" msgstr "" #: ../../WPrefs.app/Menu.c:632 msgid "Assorted XTerms" msgstr "Различные XTerm'ы" #: ../../WPrefs.app/Menu.c:634 msgid "XTerm Yellow on Blue" msgstr "XTerm (желтое на синем)" #: ../../WPrefs.app/Menu.c:637 msgid "XTerm White on Black" msgstr "XTerm (белое на черном)" #: ../../WPrefs.app/Menu.c:640 msgid "XTerm Black on White" msgstr "XTerm (черное на белом)" #: ../../WPrefs.app/Menu.c:643 msgid "XTerm Black on Beige" msgstr "XTerm (черное на серо-зеленом)" #: ../../WPrefs.app/Menu.c:646 msgid "XTerm White on Green" msgstr "XTerm (белое на зеленом)" #: ../../WPrefs.app/Menu.c:649 msgid "XTerm White on Olive" msgstr "XTerm (белое на темно-оливковом)" #: ../../WPrefs.app/Menu.c:652 msgid "XTerm Blue on Blue" msgstr "XTerm (серо-синее на темно-серо-синем)" #: ../../WPrefs.app/Menu.c:655 msgid "XTerm BIG FONTS" msgstr "XTerm (шрифт 10x20)" #: ../../WPrefs.app/Menu.c:677 msgid "Program to Run" msgstr "Программа" #: ../../WPrefs.app/Menu.c:687 msgid "Browse" msgstr "Выбрать" #: ../../WPrefs.app/Menu.c:698 msgid "Run the program inside a Xterm" msgstr "Запускать в XTerm'е" #: ../../WPrefs.app/Menu.c:708 msgid "Path for Menu" msgstr "Путь к меню" #: ../../WPrefs.app/Menu.c:721 msgid "" "Enter the path for a file containing a menu\n" "or a list of directories with the programs you\n" "want to have listed in the menu. Ex:\n" "~/GNUstep/Library/WindowMaker/menu\n" "or\n" "/usr/bin ~/xbin" msgstr "" "Введите путь к файлу, содержащему меню,\n" "или список с программами, которые вы хотите\n" "видеть перечисленными в меню, Например:\n" " ~/GNUstep/Library/WindowMaker/menu\n" "или\n" " /usr/bin ~/xbin" #: ../../WPrefs.app/Menu.c:736 msgid "Command" msgstr "Команда" #: ../../WPrefs.app/Menu.c:750 msgid "" "Enter a command that outputs a menu\n" "definition to stdout when invoked." msgstr "" "Введите команду, которая, будучи исполненной,\n" "выводит на stdout определение меню." #: ../../WPrefs.app/Menu.c:758 msgid "" "Cache menu contents after opening for\n" "the first time" msgstr "Кэшировать содержимое меню" #: ../../WPrefs.app/Menu.c:769 msgid "Command to Open Files" msgstr "Команда для открытия файлов" #: ../../WPrefs.app/Menu.c:783 msgid "" "Enter the command you want to use to open the\n" "files in the directories listed below." msgstr "" "Введите команду, которую вы хотите использовать для\n" "открытия файлов в каталогах, перечисленных ниже." #: ../../WPrefs.app/Menu.c:792 msgid "Directories with Files" msgstr "Каталоги с файлами" #: ../../WPrefs.app/Menu.c:805 msgid "Strip extensions from file names" msgstr "Скрыть расширения файлов" #: ../../WPrefs.app/Menu.c:817 msgid "Keyboard Shortcut" msgstr "Горячая клавиша" #: ../../WPrefs.app/Menu.c:853 msgid "Arrange Icons" msgstr "Выровнять иконки" #: ../../WPrefs.app/Menu.c:854 msgid "Hide All Windows Except For The Focused One" msgstr "Скрыть все окна, кроме активного" #: ../../WPrefs.app/Menu.c:855 msgid "Show All Windows" msgstr "Показать все окна" #: ../../WPrefs.app/Menu.c:858 msgid "Exit X Session" msgstr "Завершить X сессию" #: ../../WPrefs.app/Menu.c:859 msgid "Restart Window Maker" msgstr "Перезапустить Window Maker" #: ../../WPrefs.app/Menu.c:860 msgid "Start Another Window Manager : (" msgstr "Запустить другой менеджер окон : (" #: ../../WPrefs.app/Menu.c:862 msgid "Save Current Session" msgstr "Сохранить текущую сессию" #: ../../WPrefs.app/Menu.c:863 msgid "Clear Saved Session" msgstr "Очистить сохраненную сессию" #: ../../WPrefs.app/Menu.c:864 msgid "Refresh Screen" msgstr "Обновить экран" #: ../../WPrefs.app/Menu.c:865 msgid "Open Info Panel" msgstr "Открыть панель `Информация'" #: ../../WPrefs.app/Menu.c:866 msgid "Open Copyright Panel" msgstr "Открыть панель `Copyright'" #: ../../WPrefs.app/Menu.c:872 msgid "Window Manager to Start" msgstr "Какой оконный менеджер запускать" #: ../../WPrefs.app/Menu.c:888 msgid "Do not confirm action." msgstr "Без предупреждения" #: ../../WPrefs.app/Menu.c:898 msgid "" "Instructions:\n" "\n" " - drag items from the left to the menu to add new items\n" " - drag items out of the menu to remove items\n" " - drag items in menu to change their position\n" " - drag items with Control pressed to copy them\n" " - double click in a menu item to change the label\n" " - click on a menu item to change related information" msgstr "" "Инструкции:\n" "\n" " - чтобы добавить новый элемент: перетащите элемент\n" " из набора слева на меню\n" " - чтобы удалить элемент: перетащите элемент из\n" " меню за его (меню) пределы\n" " - чтобы переместить элемент: просто перетащите\n" " его на новое место\n" " - чтобы скопировать элемент: перетащите его на\n" " новое место удерживая при этом клавишу Control\n" " - чтобы переименовать элемент: щелкните на нем\n" " дважды\n" " - чтобы изменить сопутствующую информацию:\n" " одинарный щелчок на соответствующем элементе" #: ../../WPrefs.app/Menu.c:1122 #, c-format msgid "unknown command '%s' in menu" msgstr "неизвестная команда '%s' в меню" #: ../../WPrefs.app/Menu.c:1154 msgid ": Execute Program" msgstr ": Запустить программу" #: ../../WPrefs.app/Menu.c:1158 msgid ": Perform Internal Command" msgstr ": Исполнить внутреннюю команду" #: ../../WPrefs.app/Menu.c:1162 msgid ": Open a Submenu" msgstr ": Открыть подменю" #: ../../WPrefs.app/Menu.c:1166 msgid ": Program Generated Submenu" msgstr ": Сгенерированное подменю" #: ../../WPrefs.app/Menu.c:1170 msgid ": Directory Contents Menu" msgstr ": Меню содержания каталога" #: ../../WPrefs.app/Menu.c:1174 msgid ": Open Workspaces Submenu" msgstr ": Подменю рабочих пространств" #: ../../WPrefs.app/Menu.c:1178 msgid ": Open Window List Submenu" msgstr ": Подменю со списком окон" #: ../../WPrefs.app/Menu.c:1403 msgid "Remove Submenu" msgstr "Удалить подменю" #: ../../WPrefs.app/Menu.c:1404 msgid "" "Removing this item will destroy all items inside\n" "the submenu. Do you really want to do that?" msgstr "" "Удаление этого элемента удалит все элементы в подменю.\n" "Вы действительно хотите это сделать?" #: ../../WPrefs.app/Menu.c:1406 msgid "Yes" msgstr "Да" #: ../../WPrefs.app/Menu.c:1406 msgid "No" msgstr "Нет" #: ../../WPrefs.app/Menu.c:1407 msgid "Yes, don't ask again" msgstr "Да, и больше об этом не спрашивать" #. if there is a localized plmenu for the tongue put it's filename here #: ../../WPrefs.app/Menu.c:1575 ../../WPrefs.app/Menu.c:1582 #, c-format msgid "%s/Library/WindowMaker/plmenu" msgstr "%s/Library/WindowMaker/plmenu.ru" #: ../../WPrefs.app/Menu.c:1591 #, c-format msgid "Could not open default menu from '%s'" msgstr "Не могу открыть меню по умолчанию '%s'" #: ../../WPrefs.app/Menu.c:1629 ../../WPrefs.app/WPrefs.c:807 msgid "Warning" msgstr "Предупреждение" #: ../../WPrefs.app/Menu.c:1630 msgid "" "The menu file format currently in use is not supported\n" "by this tool. Do you want to discard the current menu\n" "to use this tool?" msgstr "" "Формат файла меню, которое (меню) используется в данный\n" "момент, не поддерживается сиим инструментом. Вы хотите\n" "сбросить текущее меню, чтобы можно было использовать этот\n" "инструмент?" #: ../../WPrefs.app/Menu.c:1633 msgid "Yes, Discard and Update" msgstr "Да, сбросить и обновить" #: ../../WPrefs.app/Menu.c:1634 msgid "No, Keep Current Menu" msgstr "Нет, оставить текущее меню" #: ../../WPrefs.app/Menu.c:1897 msgid "Applications Menu Definition" msgstr "Меню приложений" #: ../../WPrefs.app/Menu.c:1899 msgid "Edit the menu for launching applications." msgstr "Редактировать меню запуска приложений." #: ../../WPrefs.app/MenuPreferences.c:111 msgid "Menu Scrolling Speed" msgstr "Скорость прокрутки меню" #: ../../WPrefs.app/MenuPreferences.c:160 msgid "Submenu Alignment" msgstr "Выравнивание подменю" #: ../../WPrefs.app/MenuPreferences.c:204 msgid "" "Always open submenus inside the screen, instead of scrolling." msgstr "" "Всегда открывать подменю внутри экрана, вместо прокрутки." #: ../../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/MenuPreferences.c:231 msgid "" "Menu usability related options. Scrolling speed,\n" "alignment of submenus etc." msgstr "" "Меню параметров, относящихся к удобству использования.\n" "Скорость прокрутки, выравнивание подменю и т.п." #: ../../WPrefs.app/MouseSettings.c:141 msgid "Invalid mouse acceleration value. Must be a positive real value." msgstr "Неправильное значение. Должно быть положительное число" #: ../../WPrefs.app/MouseSettings.c:161 msgid "" "Invalid mouse acceleration threshold value. Must be the number of pixels to " "travel before accelerating." msgstr "" "Неправильное значение порога ускорения для мыши. Должно быть количеством " "точек, пройденных мышью за одно перемещение, перед началом ускорения." #: ../../WPrefs.app/MouseSettings.c:262 ../../WPrefs.app/MouseSettings.c:274 #: ../../WPrefs.app/MouseSettings.c:286 ../../WPrefs.app/MouseSettings.c:298 #, c-format msgid "bad value %s for option %s" msgstr "неверное значение %s для параметра %s" #: ../../WPrefs.app/MouseSettings.c:357 #, c-format msgid "" "modifier key %s for option ModifierKey was not recognized. Using %s as " "default" msgstr "" "клавиша-модификатор %s в параметре ModifierKey не распознана. Используется %" "s (по умолчанию)" #: ../../WPrefs.app/MouseSettings.c:382 msgid "could not retrieve keyboard modifier mapping" msgstr "" #: ../../WPrefs.app/MouseSettings.c:477 msgid "Mouse Speed" msgstr "Скорость мыши" #: ../../WPrefs.app/MouseSettings.c:507 msgid "Accel.:" msgstr "Ускор.:" #: ../../WPrefs.app/MouseSettings.c:520 msgid "Threshold:" msgstr "Чувствит:" #: ../../WPrefs.app/MouseSettings.c:535 msgid "Double-Click Delay" msgstr "Задержка двойного щелчка" #: ../../WPrefs.app/MouseSettings.c:579 msgid "Test" msgstr "Тест" #: ../../WPrefs.app/MouseSettings.c:609 msgid "Workspace Mouse Actions" msgstr "Действия мыши на р/столе" #: ../../WPrefs.app/MouseSettings.c:614 msgid "Disable mouse actions" msgstr "Отключить мышь" #: ../../WPrefs.app/MouseSettings.c:620 msgid "Left Button" msgstr "Левая кнопка" #: ../../WPrefs.app/MouseSettings.c:630 msgid "Middle Button" msgstr "Средняя кнопка" #: ../../WPrefs.app/MouseSettings.c:640 msgid "Right Button" msgstr "Правая кнопка" #: ../../WPrefs.app/MouseSettings.c:650 msgid "Mouse Wheel" msgstr "Колесико мыши" #: ../../WPrefs.app/MouseSettings.c:672 msgid "Mouse Grab Modifier" msgstr "Модификатор захвата мыши" #: ../../WPrefs.app/MouseSettings.c:674 msgid "" "Keyboard modifier to use for actions that\n" "involve dragging windows with the mouse,\n" "clicking inside the window." msgstr "" #: ../../WPrefs.app/MouseSettings.c:708 #, c-format msgid "could not create %s" msgstr "не могу создать %s" #: ../../WPrefs.app/MouseSettings.c:724 #, c-format msgid "could not create temporary file %s" msgstr "не могу создать временный файл %s" #: ../../WPrefs.app/MouseSettings.c:756 #, c-format msgid "could not rename file %s to %s\n" msgstr "не получается переименовать %s в %s\n" #: ../../WPrefs.app/MouseSettings.c:829 msgid "Shift" msgstr "Shift" #: ../../WPrefs.app/MouseSettings.c:830 msgid "Lock" msgstr "" #: ../../WPrefs.app/MouseSettings.c:831 msgid "Control" msgstr "Control" #: ../../WPrefs.app/MouseSettings.c:832 msgid "Mod1" msgstr "Mod1" #: ../../WPrefs.app/MouseSettings.c:833 msgid "Mod2" msgstr "Mod2" #: ../../WPrefs.app/MouseSettings.c:834 msgid "Mod3" msgstr "Mod3" #: ../../WPrefs.app/MouseSettings.c:835 msgid "Mod4" msgstr "Mod4" #: ../../WPrefs.app/MouseSettings.c:836 msgid "Mod5" msgstr "Mod5" #: ../../WPrefs.app/MouseSettings.c:839 msgid "Applications Menu" msgstr "Меню приложений" #: ../../WPrefs.app/MouseSettings.c:841 msgid "Select Windows" msgstr "Выделение окон" # awn: "Переключение рабочих пространств" не помещается #: ../../WPrefs.app/MouseSettings.c:844 msgid "Switch Workspaces" msgstr "" #: ../../WPrefs.app/MouseSettings.c:849 msgid "Mouse Preferences" msgstr "Свойства для мыши" #: ../../WPrefs.app/MouseSettings.c:851 msgid "" "Mouse speed/acceleration, double click delay,\n" "mouse button bindings etc." msgstr "" "Скорость и ускорение мыши, задержка двойного щелчка,\n" "функции, привязанные к кнопкам мыши и т.п." #: ../../WPrefs.app/Paths.c:84 msgid "bad value in option IconPath. Using default path list" msgstr "неправильное значение в IconPath. Используем пути по умолчанию" #: ../../WPrefs.app/Paths.c:101 msgid "bad value in option PixmapPath. Using default path list" msgstr "неправильное значение в PixmapPath. Используем пути по умолчанию" #: ../../WPrefs.app/Paths.c:149 msgid "Select directory" msgstr "Укажите каталог" #: ../../WPrefs.app/Paths.c:270 msgid "Icon Search Paths" msgstr "Пути поиска иконок" #: ../../WPrefs.app/Paths.c:281 ../../WPrefs.app/Paths.c:312 #: ../../WPrefs.app/TexturePanel.c:1310 msgid "Add" msgstr "Добавить" #: ../../WPrefs.app/Paths.c:301 msgid "Pixmap Search Paths" msgstr "Пути поиска Pixmap" #: ../../WPrefs.app/Paths.c:341 msgid "Search Path Configuration" msgstr "Конфигурация путей поиска" #: ../../WPrefs.app/Paths.c:343 msgid "" "Search paths to use when looking for pixmaps\n" "and icons." msgstr "" "Пути, используемые для поиска pixmap'ов\n" "и иконок." #: ../../WPrefs.app/Preferences.c:75 msgid "OFF" msgstr "Выключено" #: ../../WPrefs.app/Preferences.c:77 msgid "1 pixel" msgstr "1 точка" #. 2-4 #: ../../WPrefs.app/Preferences.c:80 #, c-format msgid "%i pixels" msgstr "%i точки" #. >4 #: ../../WPrefs.app/Preferences.c:83 #, c-format msgid "%i pixels " msgstr "%i точек" #: ../../WPrefs.app/Preferences.c:229 msgid "Size Display" msgstr "Отображение размера" #: ../../WPrefs.app/Preferences.c:231 msgid "" "The position or style of the window size\n" "display that's shown when a window is resized." msgstr "" "Где и/или в каком стиле отображать размеры окна\n" "при их изменении." #: ../../WPrefs.app/Preferences.c:238 ../../WPrefs.app/Preferences.c:259 msgid "Corner of screen" msgstr "В углу экрана" #: ../../WPrefs.app/Preferences.c:239 ../../WPrefs.app/Preferences.c:260 msgid "Center of screen" msgstr "В центре экрана" #: ../../WPrefs.app/Preferences.c:240 ../../WPrefs.app/Preferences.c:261 msgid "Center of resized window" msgstr "В центре изменяемого окна" #: ../../WPrefs.app/Preferences.c:241 msgid "Technical drawing-like" msgstr "В чертежном стиле" #: ../../WPrefs.app/Preferences.c:242 ../../WPrefs.app/Preferences.c:262 msgid "Disabled" msgstr "Запрещено" #: ../../WPrefs.app/Preferences.c:250 msgid "Position Display" msgstr "Отображение положения" #: ../../WPrefs.app/Preferences.c:252 msgid "" "The position or style of the window position\n" "display that's shown when a window is moved." msgstr "" "Где и/или в каком стиле отображать положение окна\n" "при его перемещении." #: ../../WPrefs.app/Preferences.c:270 msgid "Show balloon text for..." msgstr "Показывать всплывающую подсказку для..." #: ../../WPrefs.app/Preferences.c:277 msgid "incomplete window titles" msgstr "неполных заголовков окон" #: ../../WPrefs.app/Preferences.c:278 msgid "miniwindow titles" msgstr "заголовков миниокон" #: ../../WPrefs.app/Preferences.c:279 msgid "application/dock icons" msgstr "иконок в доке/скрепке" #: ../../WPrefs.app/Preferences.c:280 msgid "internal help" msgstr "внутренней помощи" #: ../../WPrefs.app/Preferences.c:292 msgid "Raise window when switching focus with keyboard" msgstr "Поднимать окно при переключениифокуса с клавиатуры" #: ../../WPrefs.app/Preferences.c:298 #, fuzzy msgid "" "Enable keyboard language\n" "switch button in window titlebars." msgstr "Сохранять язык клавиатуры для каждого окна" #: ../../WPrefs.app/Preferences.c:307 msgid "Workspace border" msgstr "Границы рабочего пространства" #: ../../WPrefs.app/Preferences.c:323 msgid "Left/Right" msgstr "Слева/Справа" #: ../../WPrefs.app/Preferences.c:328 msgid "Top/Bottom" msgstr "Сверху/Снизу" #: ../../WPrefs.app/Preferences.c:349 msgid "Miscellaneous Ergonomic Preferences" msgstr "Всякие эргономические установки" #: ../../WPrefs.app/Preferences.c:350 msgid "" "Various settings like balloon text, geometry\n" "displays etc." msgstr "" "Различные установки, наподобие\n" "\"когда показывать всплывающие подсказки?\",\n" "\"как отображать изменение геометрии?\" и т.п." #: ../../WPrefs.app/TexturePanel.c:323 msgid "Saturation" msgstr "Насыщенность" #: ../../WPrefs.app/TexturePanel.c:325 msgid "Brightness" msgstr "Яркость" #: ../../WPrefs.app/TexturePanel.c:373 ../../WPrefs.app/TexturePanel.c:380 msgid "Hue" msgstr "Тон" #: ../../WPrefs.app/TexturePanel.c:610 msgid "Could not load the selected file: " msgstr "Не могу загрузить выбранный файл" #: ../../WPrefs.app/TexturePanel.c:664 msgid "Open Image" msgstr "Открыть изображение" #: ../../WPrefs.app/TexturePanel.c:694 msgid "The selected file does not contain a supported image." msgstr "Выбранный файл не содержит изображения в поддерживаемом формате." #: ../../WPrefs.app/TexturePanel.c:945 #, c-format msgid "could not load file '%s': %s" msgstr "не могу загрузить файл '%s': %s" #: ../../WPrefs.app/TexturePanel.c:1064 #, c-format msgid "error creating texture %s" msgstr "ошибка создания текстуры %s" #: ../../WPrefs.app/TexturePanel.c:1254 msgid "Texture Panel" msgstr "Панель текстур" #: ../../WPrefs.app/TexturePanel.c:1262 msgid "Texture Name" msgstr "Название текстуры" #: ../../WPrefs.app/TexturePanel.c:1274 msgid "Solid Color" msgstr "Равномерный цвет" #: ../../WPrefs.app/TexturePanel.c:1275 msgid "Gradient Texture" msgstr "Градиент" #: ../../WPrefs.app/TexturePanel.c:1276 msgid "Simple Gradient Texture" msgstr "Простой градиент" #: ../../WPrefs.app/TexturePanel.c:1277 msgid "Textured Gradient" msgstr "Текстурный градиент" #: ../../WPrefs.app/TexturePanel.c:1278 msgid "Image Texture" msgstr "Текстура изображения" #: ../../WPrefs.app/TexturePanel.c:1286 msgid "Default Color" msgstr "Цвет по умолчанию" #: ../../WPrefs.app/TexturePanel.c:1298 msgid "Gradient Colors" msgstr "Градиентные цвета" #: ../../WPrefs.app/TexturePanel.c:1394 msgid "Direction" msgstr "Направление" #: ../../WPrefs.app/TexturePanel.c:1422 msgid "Gradient" msgstr "Градиент" #: ../../WPrefs.app/TexturePanel.c:1440 msgid "Gradient Opacity" msgstr "Непрозрачность градиента" #: ../../WPrefs.app/TexturePanel.c:1483 msgid "Image" msgstr "Изображение" #: ../../WPrefs.app/TexturePanel.c:1515 msgid "Tile" msgstr "Мозаика" #: ../../WPrefs.app/TexturePanel.c:1516 msgid "Scale" msgstr "Масштабировать" #: ../../WPrefs.app/TexturePanel.c:1518 msgid "Maximize" 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:203 #: ../../WPrefs.app/Themes.c:223 msgid "Download" msgstr "Загрузить из Internet" #: ../../WPrefs.app/Themes.c:171 msgid "Save Current Theme" msgstr "Сохранить текущую тему" #: ../../WPrefs.app/Themes.c:180 msgid "Load" msgstr "Загрузить" #: ../../WPrefs.app/Themes.c:185 msgid "Install" msgstr "Инсталировать" #: ../../WPrefs.app/Themes.c:193 msgid "Tile of The Day" msgstr "" #: ../../WPrefs.app/Themes.c:213 msgid "Bar of The Day" msgstr "" #: ../../WPrefs.app/WindowHandling.c:141 #, c-format msgid "bad option value %s in WindowPlacement. Using default value" msgstr "" "неверное значение %s в параметре WindowPlacement. Используется значение по " "умолчанию" #: ../../WPrefs.app/WindowHandling.c:163 msgid "invalid data in option WindowPlaceOrigin. Using default (0,0)" msgstr "" "неправильные данные в параметре WindowPlaceOrigin. Используется значение по " "умолчанию (0,0)" #: ../../WPrefs.app/WindowHandling.c:243 msgid "Window Placement" msgstr "Размещение окон" #: ../../WPrefs.app/WindowHandling.c:244 msgid "" "How to place windows when they are first put\n" "on screen." msgstr "" "Как размещать окна, когда они впервые\n" "появляются на экране." #: ../../WPrefs.app/WindowHandling.c:250 msgid "Automatic" msgstr "Автоматическое" #: ../../WPrefs.app/WindowHandling.c:251 msgid "Random" msgstr "Случайное" #: ../../WPrefs.app/WindowHandling.c:252 msgid "Manual" msgstr "Ручное" #: ../../WPrefs.app/WindowHandling.c:253 msgid "Cascade" msgstr "Каскадное" #: ../../WPrefs.app/WindowHandling.c:254 msgid "Smart" msgstr "\"Умное\"" #: ../../WPrefs.app/WindowHandling.c:260 msgid "Placement Origin" msgstr "Исходное положение" #: ../../WPrefs.app/WindowHandling.c:321 msgid "Opaque Move" msgstr "Двигать целиком" #: ../../WPrefs.app/WindowHandling.c:322 msgid "" "Whether the window contents should be moved\n" "when dragging windows aroung or if only a\n" "frame should be displayed.\n" msgstr "" "Во время перемещения окна, должно ли оно\n" "перемещаться целиком, вместе со своим\n" "содержимым (нажато), или только его\n" "каркас (отпущено)\n" #: ../../WPrefs.app/WindowHandling.c:361 msgid "When maximizing..." msgstr "Когда распахивается окно..." #: ../../WPrefs.app/WindowHandling.c:366 msgid "...do not cover icons" msgstr "...не перекрывать иконки" #: ../../WPrefs.app/WindowHandling.c:372 msgid "...do not cover dock" msgstr "...не перекрывать Док" #: ../../WPrefs.app/WindowHandling.c:381 msgid "Edge Resistance" msgstr "Сопротивляемость краев" #: ../../WPrefs.app/WindowHandling.c:383 msgid "" "Edge resistance will make windows `resist'\n" "being moved further for the defined threshold\n" "when moved against other windows or the edges\n" "of the screen." msgstr "" #: ../../WPrefs.app/WindowHandling.c:402 msgid "Resist" msgstr "Упираться" #: ../../WPrefs.app/WindowHandling.c:407 msgid "Attract" msgstr "Притягиваться" #: ../../WPrefs.app/WindowHandling.c:423 msgid "Open dialogs in same workspace as their owners" msgstr "" "Открывать диалоги в одном рабочем " "пространстве с их родителями" #: ../../WPrefs.app/WindowHandling.c:450 msgid "Window Handling Preferences" msgstr "Параметры окон" #: ../../WPrefs.app/WindowHandling.c:452 msgid "" "Window handling options. Initial placement style\n" "edge resistance, opaque move etc." msgstr "" "Как обращаться с окнами. Начальное расположение окон.\n" "Сопротивляемость границ. Сплошное/каркасное перемещение, и т.п." #: ../../WPrefs.app/Workspace.c:176 msgid "Workspace Navigation" msgstr "Навигация по рабочим пространствам" #: ../../WPrefs.app/Workspace.c:183 msgid "Wrap to the first workspace from the last workspace" msgstr "создавать новое рабочее пространство когда переключаемся за последнее" #: ../../WPrefs.app/Workspace.c:205 msgid "Switch workspaces while dragging windows" msgstr "переключать рабочие пространства при перетаскивании окон" #: ../../WPrefs.app/Workspace.c:227 msgid "Automatically create new workspaces" msgstr "автоматически создавать новые рабочие пространства" #: ../../WPrefs.app/Workspace.c:250 msgid "Position of workspace name display" msgstr "Отображение имени рабочего пространства" #: ../../WPrefs.app/Workspace.c:269 msgid "Disable" msgstr "Запретить" #: ../../WPrefs.app/Workspace.c:271 msgid "Top" msgstr "Вверху" #: ../../WPrefs.app/Workspace.c:272 msgid "Bottom" msgstr "Внизу" #: ../../WPrefs.app/Workspace.c:273 msgid "Top/Left" msgstr "Вверху слева" #: ../../WPrefs.app/Workspace.c:274 msgid "Top/Right" msgstr "Вверху справа" #: ../../WPrefs.app/Workspace.c:275 msgid "Bottom/Left" msgstr "Внизу слева" #: ../../WPrefs.app/Workspace.c:276 msgid "Bottom/Right" msgstr "Внизу справа" #: ../../WPrefs.app/Workspace.c:284 msgid "Dock/Clip" msgstr "Док/Скрепка" #: ../../WPrefs.app/Workspace.c:303 msgid "" "Disable/enable the application Dock (the\n" "vertical icon bar in the side of the screen)." msgstr "" "Запретить/разрешить Док приложений (вертикальную\n" "стопку иконок на одной из границ экрана)." #: ../../WPrefs.app/Workspace.c:324 msgid "" "Disable/enable the Clip (that thing with\n" "a paper clip icon)." msgstr "" "Запретить/разрешить Скрепку (вы ее узнаете по иконке\n" "с изображением скрепки для бумаги)." #: ../../WPrefs.app/Workspace.c:364 msgid "Workspace Preferences" msgstr "Установки для рабочего пространства" #: ../../WPrefs.app/Workspace.c:366 msgid "" "Workspace navigation features.\n" "You can also enable/disable the Dock and Clip here." msgstr "" "Особенности навигации по рабочим пространствам.\n" "Здесь вы также можете разрешить/запретить Док и Скрепку." #: ../../WPrefs.app/WPrefs.c:260 msgid "Window Maker Preferences" msgstr "Свойства Window Maker" #: ../../WPrefs.app/WPrefs.c:284 msgid "Revert Page" msgstr "Вернуть страницу" #: ../../WPrefs.app/WPrefs.c:290 msgid "Revert All" msgstr "Вернуть все" #: ../../WPrefs.app/WPrefs.c:296 msgid "Save" msgstr "Сохранить" #: ../../WPrefs.app/WPrefs.c:309 msgid "Balloon Help" msgstr "Всплывающие подсказки" # awn: оставлено без перевода из-за проблемы со шрифтами. #: ../../WPrefs.app/WPrefs.c:334 msgid "Window Maker Preferences Utility" msgstr "" #: ../../WPrefs.app/WPrefs.c:341 #, c-format msgid "Version %s for Window Maker %s or newer" msgstr "Версия %s для Window Maker %s или новее" #: ../../WPrefs.app/WPrefs.c:349 msgid "Starting..." msgstr "Стартую..." #: ../../WPrefs.app/WPrefs.c:355 msgid "" "Programming/Design: Alfredo K. Kojima\n" "Artwork: Marco van Hylckama Vlieg, Largo et al\n" "More Programming: James Thompson et al" msgstr "" "Программирование/Дизайн: Alfredo K. Kojima\n" "Оформление: Marco van Hylckama Vlieg, Largo et al\n" "Программирование: James Thomson et al" #: ../../WPrefs.app/WPrefs.c:455 #, c-format msgid "could not locate image file %s\n" msgstr "не могу найти файл с изображением %s\n" #: ../../WPrefs.app/WPrefs.c:670 #, c-format msgid "could not load image file %s:%s" msgstr "не могу загрузить файл изображения %s:%s" #: ../../WPrefs.app/WPrefs.c:689 msgid "Loading Window Maker configuration files..." msgstr "Загружаю файлы конфигурации Window Maker..." #: ../../WPrefs.app/WPrefs.c:693 msgid "Initializing configuration panels..." msgstr "Инициализирую конфигурационные панели..." #: ../../WPrefs.app/WPrefs.c:727 msgid "" "WPrefs is free software and is distributed WITHOUT ANY\n" "WARRANTY under the terms of the GNU General Public License." msgstr "" "WPrefs является свободным ПО и распространяется БЕЗ КАКИХ-ЛИБО\n" "ГАРАНТИЙ в соответствии с терминами GNU General Public License." #: ../../WPrefs.app/WPrefs.c:757 ../../WPrefs.app/WPrefs.c:837 #, c-format msgid "Window Maker domain (%s) is corrupted!" msgstr "Window Maker домен (%s) поврежден!" #: ../../WPrefs.app/WPrefs.c:761 #, c-format msgid "Could not load Window Maker domain (%s) from defaults database." msgstr "Не могу загрузить домен Window MAker (%s) из базы данных по умолчанию." #: ../../WPrefs.app/WPrefs.c:777 msgid "could not extract version information from Window Maker" msgstr "не могу получить номер версии Window Maker" #: ../../WPrefs.app/WPrefs.c:778 msgid "Make sure wmaker is in your search path." msgstr "Убедитесь что путь к wmaker определен." #: ../../WPrefs.app/WPrefs.c:781 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:791 msgid "" "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." msgstr "" "Не могу получить версию Window Maker. Убедитесь что он установлен корректно " "и путь к месту где он установлен есть в PATH." #: ../../WPrefs.app/WPrefs.c:798 #, 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:805 #, 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:818 #, c-format msgid "could not run \"%s --global_defaults_path\"." msgstr "не могу запустить \"%s --global_defaults_path\"." #: ../../WPrefs.app/WPrefs.c:841 #, c-format msgid "Could not load global Window Maker domain (%s)." msgstr "Не могу загрузить глобальный домен Window Maker (%s)." #: ../../WPrefs.app/WPrefs.c:1090 #, c-format msgid "" "bad speed value for option %s\n" ". Using default Medium" msgstr "" "неправильное значение скорости для %s\n" ". Используем по-умолчанию \"Среднее\"" �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/po/cs.po��������������������������������������������������������������0000644�0001750�0001750�00000136775�13431646201�014361� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Message catalog for WindowMaker WPrefs.app # Copyright (C) 1998 Free Software Foundation, Inc. # David Sauer <xsauer@fel.cvut.cz>, 1998. # Lukas Tinkl <caybro@seznam.cz>, 1999. # Jiří Hnídek <jiri.hnidek@vslib.cz>, 2001. # WPrefs for WindowMaker 0.70.0 # Čt pro 3 20:38:36 CET 1998 David Sauer # Pá dub 23 09:14:20 CEST 1999 David Šauer # St čec 14 10:30:00 CEST 1999 Lukáš Tinkl # Ne říj 14 21:07:53 CEST 2001 Jiří Hnídek # msgid "" msgstr "" "Project-Id-Version: WPrefs for WindowMaker 0.70.0\n" "POT-Creation-Date: 2001-10-14 20:30+0200\n" "PO-Revision-Date: 2001-10-14 21:07+0000\n" "Last-Translator: Jiří Hnídek <jiri.hnidek@vslib.cz>\n" "Language-Team: czech <cs@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: unknown\n" #: ../Appearance.c:1131 msgid "Select File" msgstr "Vyberte soubor" #: ../Appearance.c:1533 msgid "Focused Window" msgstr "Zaměřené okno" #: ../Appearance.c:1537 msgid "Unfocused Window" msgstr "Nezaměřené okno" #: ../Appearance.c:1541 msgid "Owner of Focused Window" msgstr "Vlastník zaměřeného okna" #: ../Appearance.c:1545 ../Appearance.c:1862 msgid "Menu Title" msgstr "Titulek menu" #: ../Appearance.c:1549 ../Appearance.c:1551 msgid "Normal Item" msgstr "Normální" #: ../Appearance.c:1555 msgid "Disabled Item" msgstr "Nepřístupná" #: ../Appearance.c:1564 msgid "Highlighted" msgstr "Vysvícená" #: ../Appearance.c:1755 msgid "Texture" msgstr "Textura" #: ../Appearance.c:1763 msgid "Titlebar of Focused Window" msgstr "Titulek zaměřeného okna" #: ../Appearance.c:1764 msgid "Titlebar of Unfocused Windows" msgstr "Titulek nezaměřeného okna" #: ../Appearance.c:1765 msgid "Titlebar of Focused Window's Owner" msgstr "Titulek zaměřeného vlastníka okna" #: ../Appearance.c:1766 msgid "Window Resizebar" msgstr "Zvětšovací rámeček okna" #: ../Appearance.c:1767 msgid "Titlebar of Menus" msgstr "Titulek menu" #: ../Appearance.c:1768 msgid "Menu Items" msgstr "Položky menu" #: ../Appearance.c:1769 msgid "Icon Background" msgstr "Pozadí ikon" #: ../Appearance.c:1784 msgid "" "Double click in the texture you want to use\n" "for the selected item." msgstr "" "Dvojklikněte na texturu, kterou chcete použít\n" "pro vybranou položku." #: ../Appearance.c:1798 msgid "New" msgstr "Nová" #: ../Appearance.c:1802 msgid "Create a new texture." msgstr "Vytvořit novou texturu." #: ../Appearance.c:1810 msgid "Extract..." msgstr "Převzít..." #: ../Appearance.c:1814 msgid "Extract texture(s) from a theme or a style file." msgstr "Převzít texturu(y) ze souboru témat nebo stylů." #: ../Appearance.c:1824 msgid "Edit" msgstr "Upravit" #: ../Appearance.c:1827 msgid "Edit the highlighted texture." msgstr "Upravit vybranou texturu." #: ../Appearance.c:1835 ../TexturePanel.c:1316 msgid "Delete" msgstr "Vymazat" #: ../Appearance.c:1839 msgid "Delete the highlighted texture." msgstr "Vymazat vybranou texturu." #: ../Appearance.c:1852 msgid "Color" msgstr "Barva" #: ../Appearance.c:1859 msgid "Focused Window Title" msgstr "Titulek zaměřeného okna" #: ../Appearance.c:1860 msgid "Unfocused Window Title" msgstr "Titulek nezaměřeného okna" #: ../Appearance.c:1861 msgid "Owner of Focused Window Title" msgstr "Titulek vlastníka zaměřeného okna" #: ../Appearance.c:1863 msgid "Menu Item Text" msgstr "Text položky menu" #: ../Appearance.c:1864 msgid "Disabled Menu Item Text" msgstr "Text nepřístupné položky menu" #: ../Appearance.c:1865 msgid "Menu Highlight Color" msgstr "Barva pro vysvícení menu" #: ../Appearance.c:1866 msgid "Highlighted Menu Text Color" msgstr "Barva textu vybraného menu" #: ../Appearance.c:1905 msgid "Background" msgstr "Pozadí" #: ../Appearance.c:1917 ../TexturePanel.c:1503 msgid "Browse..." msgstr "Hledat..." #: ../Appearance.c:1930 msgid "Options" msgstr "Volby" #: ../Appearance.c:1937 msgid "Menu Style" msgstr "Styl menu" #: ../Appearance.c:1965 ../Configurations.c:242 ../Configurations.c:254 #: ../Focus.c:288 ../Focus.c:299 ../MenuPreferences.c:134 #: ../MenuPreferences.c:145 ../MenuPreferences.c:173 ../MenuPreferences.c:188 #: ../MouseSettings.c:560 ../MouseSettings.c:571 ../WPrefs.c:558 #: ../WPrefs.c:583 #, c-format msgid "could not load icon file %s" msgstr "nelze načíst soubor s ikonou %s" #: ../Appearance.c:1979 msgid "Title Alignment" msgstr "Zarovnání titulku" #: ../Appearance.c:1986 msgid "Left" msgstr "Vlevo" #: ../Appearance.c:1989 ../TexturePanel.c:1517 ../Workspace.c:270 msgid "Center" msgstr "Uprostřed" #: ../Appearance.c:1992 msgid "Right" msgstr "Vpravo" #: ../Appearance.c:2216 msgid "Appearance Preferences" msgstr "Nastavení vzhledu" #: ../Appearance.c:2218 msgid "" "Background texture configuration for windows,\n" "menus and icons." msgstr "" "Nastavení textury na pozadí pro okna, menu a\n" "ikony." #: ../Appearance.c:2263 msgid "Extract Texture" msgstr "Vyjmutí textury" #: ../Appearance.c:2283 msgid "Textures" msgstr "Textury" #: ../Appearance.c:2294 ../WPrefs.c:302 msgid "Close" msgstr "Uzavřít" #: ../Appearance.c:2299 msgid "Extract" msgstr "Převzít" #: ../Configurations.c:150 ../Configurations.c:156 ../MouseSettings.c:490 #: ../WindowHandling.c:339 ../WindowHandling.c:351 ../Workspace.c:90 #: ../Workspace.c:101 #, c-format msgid "could not load icon %s" msgstr "nelze načíst ikonu %s" #: ../Configurations.c:164 ../Workspace.c:109 #, c-format msgid "could not process icon %s: %s" msgstr "nelze zpracovat ikonu %s: %s" #: ../Configurations.c:189 ../Workspace.c:164 #, c-format msgid "could not load image file %s" msgstr "ze souboru %s nelze načíst obrázek" #: ../Configurations.c:203 msgid "Icon Slide Speed" msgstr "Rychlost klouzání ikony" #: ../Configurations.c:209 msgid "Shade Animation Speed" msgstr "Rychlost změny okna na titulek" #: ../Configurations.c:271 msgid "Smooth Scaling" msgstr "Jemné přechody" #: ../Configurations.c:272 msgid "" "Smooth scaled background images, neutralizing\n" "the `pixelization' effect. This will slow\n" "down loading of background images considerably." msgstr "" "Obrázky na pozadí budou 'hladší' a zmizí tak\n" "efekt 'pixelizace'. Nahrávání obrázků se však\n" "značně zpomalí." #: ../Configurations.c:313 msgid "Titlebar Style" msgstr "Styl titulku" #: ../Configurations.c:351 msgid "Animations and Sound" msgstr "Animace a Zvuky" #: ../Configurations.c:357 msgid "Animations" msgstr "Animace" #: ../Configurations.c:368 msgid "" "Disable/enable animations such as those shown\n" "for window miniaturization, shading etc." msgstr "" "Zapnout/Vypnout animace jako např.\n" "minimalizace okna, srolování atd." #: ../Configurations.c:376 msgid "Superfluous" msgstr "Animace++" #: ../Configurations.c:387 msgid "" "Disable/enable `superfluous' features and\n" "animations. These include the `ghosting' of the\n" "dock when it's being moved to another side and\n" "the explosion animation when undocking icons." msgstr "" "Zapnout/Vypnout extra animace jako např.\n" "poloprůhlednost doku při přesouvání na\n" "druhou stranu nebo efekt exploze pro odkotvené\n" "ikony." #: ../Configurations.c:397 msgid "Sounds" msgstr "Zvuky" #: ../Configurations.c:408 msgid "" "Disable/enable support for sound effects played\n" "for actions like shading and closing a window.\n" "You will need a module distributed separately\n" "for this. You can get it at:\n" "http://shadowmere.student.utwente.nl/" msgstr "" "Zapnout/Vypnout podporu zvuku, přehrávaných\n" "např. během zarolování nebo zavírání okna.\n" "K tomu ale budete potřebovat modul, který\n" "je distribuován odděleně. Můžete ho získat na:\n" "http://shadowmere.student.utwente.nl" #: ../Configurations.c:419 msgid "" "Note: sound requires a module distributed\n" "separately" msgstr "Poznámka: zvuk vyžaduje samostatný modul" #: ../Configurations.c:429 msgid "Dithering colormap for 8bpp" msgstr "Ditherovat na 8bpp" #: ../Configurations.c:431 msgid "" "Number of colors to reserve for Window Maker\n" "on displays that support only 8bpp (PseudoColor)." msgstr "" "Počet barev, které je třeba rezervovat pro Window Maker\n" "pro obrazovky, které podporují pouze 8bpp (PseudoBarvy)." #: ../Configurations.c:438 msgid "Disable dithering in any visual/depth" msgstr "Zakázat jakékoli ditherování" #: ../Configurations.c:459 msgid "" "More colors for\n" "applications" msgstr "Barvy aplikacím" #: ../Configurations.c:466 msgid "" "More colors for\n" "Window Maker" msgstr "" "Barvy Window\n" "Makeru" #: ../Configurations.c:521 msgid "Other Configurations" msgstr "Další konfigurace" #: ../Configurations.c:523 msgid "" "Animation speeds, titlebar styles, various option\n" "toggling and number of colors to reserve for\n" "Window Maker on 8bit displays." msgstr "" "Rychlost animace, styly titulku, různá nastavení\n" "a počet barev, který je třeba rezervovat pro \n" "Window Maker na 8bitových obrazovkách." #: ../Expert.c:75 msgid "" "Disable miniwindows (icons for miniaturized windows). For use with KDE/GNOME." msgstr "" "Zakázat miniokna (ikony pro miniaturizovaná okna). Použitelné pro KDE/GNOME." #: ../Expert.c:76 msgid "Do not set non-WindowMaker specific parameters (do not use xset)." msgstr "Nenastavovat parametry mimo WindowMaker (nepoužívat xset)" #: ../Expert.c:77 msgid "Automatically save session when exiting Window Maker." msgstr "Při ukončení Window Makeru automaticky uložit sezení" #: ../Expert.c:78 msgid "Use SaveUnder in window frames, icons, menus and other objects." msgstr "Používat SaveUnder při vykreslení rámečků, menu, ikon apod." #: ../Expert.c:79 msgid "Use Windoze style cycling." msgstr "Používat Windousoidní styl opakování přepínání oken." #: ../Expert.c:80 msgid "Disable confirmation panel for the Kill command." msgstr "Zakázat potvrzovací panel po zabití aplikace." #: ../Expert.c:81 msgid "Disable selection animation for selected icons." msgstr "Zakázat animace pro vybrané ikony." #: ../Expert.c:115 msgid "Expert User Preferences" msgstr "Nastavení pro experty" #: ../Expert.c:117 msgid "" "Options for people who know what they're doing...\n" "Also have some other misc. options." msgstr "" "Nastavení pro lidi, kteří vědí, co dělají...\n" "A různá další nastavení." #: ../Focus.c:80 #, c-format msgid "bad option value %s for option FocusMode. Using default Manual" msgstr "chybná hodnota %s pro FocusMode. Používám Manual" #: ../Focus.c:94 #, c-format msgid "bad option value %s for option ColormapMode. Using default Auto" msgstr "chybná hodnota %s pro ColormapMode. Používám standardní Auto" #: ../Focus.c:214 msgid "Input Focus Mode" msgstr "Způsob zaměření okna" #: ../Focus.c:222 msgid "Manual: Click on the window to set keyboard input focus" msgstr "Ručně: Ťuk myši zaměří okno" #: ../Focus.c:229 msgid "Auto: Set keyboard input focus to the window under the mouse pointer" msgstr "Automaticky: Nastaví zaměření vstupu na okno pod ukazatelem myši" #: ../Focus.c:243 msgid "Install colormap from the window..." msgstr "Nastavit mapu barev v okně," #: ../Focus.c:248 msgid "...that has the input focus" msgstr "které má zaměření" #: ../Focus.c:253 msgid "...that's under the mouse pointer" msgstr "které je pod myší" #: ../Focus.c:262 msgid "Automatic Window Raise Delay" msgstr "Prodleva při vyzdvihnutí oken" #: ../Focus.c:319 ../MouseSettings.c:601 msgid "ms" msgstr "ms" #: ../Focus.c:336 msgid "Do not let applications receive the click used to focus windows" msgstr "Nenechat aplikaci přijmout ťuk myši k zaměření oken" #: ../Focus.c:342 msgid "Automatically focus new windows" msgstr "Automaticky zaměřit nová okna" #: ../Focus.c:363 msgid "Window Focus Preferences" msgstr "Nastavení zaměření oken" #: ../Focus.c:365 msgid "" "Keyboard focus switching policy, colormap switching\n" "policy for 8bpp displays and other related options." msgstr "" "Styl zaměření z klávesnice, styl přepínání\n" "mapy barev pro 8bpp obrazovky apod." #: ../Font.c:276 msgid "Could not locate font information file WPrefs.app/font.data" msgstr "Nemohu najít soubor s informacemi o fontech WPrefs.app/font.data" #: ../Font.c:282 msgid "Could not read font information file WPrefs.app/font.data" msgstr "Nemohu načíst soubor s informacemi o fontech WPrefs.app/font.data" #: ../Font.c:293 msgid "" "Invalid data in font information file WPrefs.app/font.data.\n" "Encodings data not found." msgstr "" "Chybná data v souboru s informacemi o fontech WPrefs.app/font.data.\n" "Zakódovaná data nebyla nalezena." #: ../Font.c:298 msgid "- Custom -" msgstr "- Zvyk -" #: ../Font.c:329 ../Menu.c:1533 ../MouseSettings.c:140 ../MouseSettings.c:160 #: ../TexturePanel.c:613 ../TexturePanel.c:693 ../Themes.c:96 ../WPrefs.c:758 #: ../WPrefs.c:763 ../WPrefs.c:780 ../WPrefs.c:790 ../WPrefs.c:800 #: ../WPrefs.c:838 ../WPrefs.c:843 msgid "Error" msgstr "Chyba" #: ../Font.c:329 ../Menu.c:1533 ../MouseSettings.c:142 ../MouseSettings.c:162 #: ../TexturePanel.c:614 ../TexturePanel.c:695 ../TexturePanel.c:1528 #: ../Themes.c:98 ../WPrefs.c:758 ../WPrefs.c:763 ../WPrefs.c:782 #: ../WPrefs.c:794 ../WPrefs.c:800 ../WPrefs.c:807 ../WPrefs.c:838 #: ../WPrefs.c:843 ../imagebrowser.c:105 msgid "OK" msgstr "OK" #: ../Font.c:376 msgid "Default Font Sets" msgstr "Standardní nastavení fontů" #: ../Font.c:389 msgid "Font Set" msgstr "Sada fontů" #: ../Font.c:418 msgid "Add..." msgstr "Přidat..." #: ../Font.c:423 ../Font.c:438 msgid "Change..." msgstr "Změnit..." #: ../Font.c:428 ../Paths.c:288 ../Paths.c:319 msgid "Remove" msgstr "Odstranit" #: ../Font.c:477 msgid "Font Preferences" msgstr "Nastavení ikon" #: ../Font.c:478 msgid "Font Configurations for Windows, Menus etc" msgstr "" "Nastavení textury na pozadí pro okna, menu a\n" "ikony." #: ../Icons.c:180 msgid "Icon Positioning" msgstr "Umísťování minimalizovaných aplikací" #: ../Icons.c:227 msgid "Iconification Animation" msgstr "Animace ikonifikace" #: ../Icons.c:238 msgid "Shrinking/Zooming" msgstr "Zmenšení/Zvětšení" #: ../Icons.c:239 msgid "Spinning/Twisting" msgstr "Víření/Kroucení" #: ../Icons.c:240 msgid "3D-flipping" msgstr "3D salta" #: ../Icons.c:241 ../MouseSettings.c:838 ../MouseSettings.c:843 msgid "None" msgstr "Žádná" #: ../Icons.c:254 msgid "Auto-arrange icons" msgstr "Automaticky rovnat ikony" #: ../Icons.c:256 msgid "Keep icons and miniwindows arranged all the time." msgstr "Vždy udržovat ikony a miniokna uspořádaná." #: ../Icons.c:262 msgid "Omnipresent miniwindows" msgstr "Miniokna na všech plochách" #: ../Icons.c:264 msgid "Make miniwindows be present in all workspaces." msgstr "Povolit oknům přítomnost na všech plochách." #: ../Icons.c:273 msgid "Icon Size" msgstr "Velikost ikony" #: ../Icons.c:275 msgid "The size of the dock/application icon and miniwindows" msgstr "Velikost dokované aplikace a minioken" #: ../Icons.c:345 msgid "Icon Preferences" msgstr "Nastavení ikon" #: ../Icons.c:347 msgid "" "Icon/Miniwindow handling options. Icon positioning\n" "area, sizes of icons, miniaturization animation style." msgstr "" "Způsob zacházení s ikonami. Umísťování\n" "ikon, velikost ikon, animace pro miniaturizaci." #: ../KeyboardSettings.c:73 msgid "Initial Key Repeat" msgstr "Začít opakovat po ..." #: ../KeyboardSettings.c:114 msgid "Key Repeat Rate" msgstr "Rychlost opakování kláves" #: ../KeyboardSettings.c:154 msgid "Type here to test" msgstr "Zkuste zde" #: ../KeyboardSettings.c:173 msgid "Keyboard Preferences" msgstr "Nastavení klávesnice" #: ../KeyboardSettings.c:175 msgid "Not done" msgstr "Ještě ne..." #: ../KeyboardShortcuts.c:186 ../Menu.c:327 ../TexturePanel.c:1534 #: ../imagebrowser.c:100 msgid "Cancel" msgstr "Zrušit" #: ../KeyboardShortcuts.c:187 msgid "Press the desired shortcut key(s) or click Cancel to stop capturing." msgstr "Stiskněte požadované klávesy nebo použijete \"Zrušit\"." #: ../KeyboardShortcuts.c:207 ../KeyboardShortcuts.c:456 ../Menu.c:338 #: ../Menu.c:782 msgid "Capture" msgstr "Snímat" #: ../KeyboardShortcuts.c:208 ../KeyboardShortcuts.c:464 msgid "Click Capture to interactively define the shortcut key." msgstr "Použijte \"Snímat\" k definici klávesy." #: ../KeyboardShortcuts.c:363 msgid "Actions" msgstr "Akce" #: ../KeyboardShortcuts.c:379 msgid "Open applications menu" msgstr "Otevřít menu aplikací" #: ../KeyboardShortcuts.c:380 msgid "Open window list menu" msgstr "Otevřít menu s okny" #: ../KeyboardShortcuts.c:381 msgid "Open window commands menu" msgstr "Otevřít menu s přikazy pro okno" #: ../KeyboardShortcuts.c:382 msgid "Hide active application" msgstr "Skrýt aplikaci" #: ../KeyboardShortcuts.c:383 msgid "Miniaturize active window" msgstr "Miniaturizace" #: ../KeyboardShortcuts.c:384 msgid "Close active window" msgstr "Uzavřít okno" #: ../KeyboardShortcuts.c:385 msgid "Maximize active window" msgstr "Maximalizace okna" #: ../KeyboardShortcuts.c:386 msgid "Maximize active window vertically" msgstr "Vertikální maximalizace" #: ../KeyboardShortcuts.c:387 msgid "Maximize active window horizontally" msgstr "Horizontální maximalizace" #: ../KeyboardShortcuts.c:388 msgid "Raise active window" msgstr "Aktivní okno výše" #: ../KeyboardShortcuts.c:389 msgid "Lower active window" msgstr "Aktivní okno níže" #: ../KeyboardShortcuts.c:390 msgid "Raise/Lower window under mouse pointer" msgstr "Okno pod ukazatelem myši výše/níže" #: ../KeyboardShortcuts.c:391 msgid "Shade active window" msgstr "Z okna jen titulek" #: ../KeyboardShortcuts.c:392 msgid "Move/Resize active window" msgstr "Přesunout/zvětšit aktivní okno" #: ../KeyboardShortcuts.c:393 msgid "Select active window" msgstr "Vybrat okno" #: ../KeyboardShortcuts.c:394 msgid "Focus next window" msgstr "Zaměřit další okno" #: ../KeyboardShortcuts.c:395 msgid "Focus previous window" msgstr "Zaměřit předchozí okno" #: ../KeyboardShortcuts.c:396 msgid "Switch to next workspace" msgstr "Přepnout na další plocha" #: ../KeyboardShortcuts.c:397 msgid "Switch to previous workspace" msgstr "Přepnout na předchozí plochu" #: ../KeyboardShortcuts.c:398 msgid "Switch to next ten workspaces" msgstr "Přepnout na dalších 10 ploch" #: ../KeyboardShortcuts.c:399 msgid "Switch to previous ten workspaces" msgstr "Přepnout na předchozích 10 ploch" #: ../KeyboardShortcuts.c:400 msgid "Switch to workspace 1" msgstr "Přepnout na plochu 1" #: ../KeyboardShortcuts.c:401 msgid "Switch to workspace 2" msgstr "Přepnout na plochu 2" #: ../KeyboardShortcuts.c:402 msgid "Switch to workspace 3" msgstr "Přepnout na plochu 3" #: ../KeyboardShortcuts.c:403 msgid "Switch to workspace 4" msgstr "Přepnout na plochu 4" #: ../KeyboardShortcuts.c:404 msgid "Switch to workspace 5" msgstr "Přepnout na plochu 5" #: ../KeyboardShortcuts.c:405 msgid "Switch to workspace 6" msgstr "Přepnout na plochu 6" #: ../KeyboardShortcuts.c:406 msgid "Switch to workspace 7" msgstr "Přepnout na plochu 7" #: ../KeyboardShortcuts.c:407 msgid "Switch to workspace 8" msgstr "Přepnout na plochu 8" #: ../KeyboardShortcuts.c:408 msgid "Switch to workspace 9" msgstr "Přepnout na plochu 9" #: ../KeyboardShortcuts.c:409 msgid "Switch to workspace 10" msgstr "Přepnout na plochu 10" #: ../KeyboardShortcuts.c:410 msgid "Shortcut for window 1" msgstr "Zkratka pro okno 1" #: ../KeyboardShortcuts.c:411 msgid "Shortcut for window 2" msgstr "Zkratka pro okno 2" #: ../KeyboardShortcuts.c:412 msgid "Shortcut for window 3" msgstr "Zkratka pro okno 3" #: ../KeyboardShortcuts.c:413 msgid "Shortcut for window 4" msgstr "Zkratka pro okno 4" #: ../KeyboardShortcuts.c:414 msgid "Shortcut for window 5" msgstr "Zkratka pro okno 5" #: ../KeyboardShortcuts.c:415 msgid "Shortcut for window 6" msgstr "Zkratka pro okno 6" #: ../KeyboardShortcuts.c:416 msgid "Shortcut for window 7" msgstr "Zkratka pro okno 7" #: ../KeyboardShortcuts.c:417 msgid "Shortcut for window 8" msgstr "Zkratka pro okno 8" #: ../KeyboardShortcuts.c:418 msgid "Shortcut for window 9" msgstr "Zkratka pro okno 9" #: ../KeyboardShortcuts.c:419 msgid "Shortcut for window 10" msgstr "Zkratka pro okno 10" #: ../KeyboardShortcuts.c:420 msgid "Switch to Next Screen/Monitor" msgstr "Přepnout na dalších 10 ploch" #: ../KeyboardShortcuts.c:421 msgid "Raise Clip" msgstr "Sponku výše" #: ../KeyboardShortcuts.c:422 msgid "Lower Clip" msgstr "Sponku níže" #: ../KeyboardShortcuts.c:423 msgid "Raise/Lower Clip" msgstr "Sponku výše/níže" #: ../KeyboardShortcuts.c:425 msgid "Toggle keyboard language" msgstr "Změnit jazyk klávesnice" #: ../KeyboardShortcuts.c:439 msgid "Shortcut" msgstr "Zkratka" #: ../KeyboardShortcuts.c:450 ../Menu.c:788 msgid "Clear" msgstr "Vymazat" #: ../KeyboardShortcuts.c:512 msgid "Keyboard Shortcut Preferences" msgstr "Nastavení klávesových zkratek" #: ../KeyboardShortcuts.c:514 msgid "" "Change the keyboard shortcuts for actions such\n" "as changing workspaces and opening menus." msgstr "" "Změnit klávesové zkratky pro akce jako\n" "změna plochy a otevírání menu." #: ../Menu.c:477 msgid "New Items" msgstr "Nová Položka" #: ../Menu.c:478 msgid "Sample Commands" msgstr "Příklad Příkazu" #: ../Menu.c:479 msgid "Sample Submenus" msgstr "Příklad Submenu" #: ../Menu.c:493 msgid "Run Program" msgstr "Spustiti program" #: ../Menu.c:494 msgid "Internal Command" msgstr "Vnitřní příkaz" #: ../Menu.c:495 msgid "Submenu" msgstr "" #: ../Menu.c:496 msgid "External Submenu" msgstr "Vnější Submenu" #: ../Menu.c:497 msgid "Generated Submenu" msgstr "Generované Submenu" #: ../Menu.c:498 msgid "Directory Contents" msgstr "Obasah adresáře" #: ../Menu.c:499 msgid "Workspace Menu" msgstr "Pracovní plocha" #: ../Menu.c:500 ../MouseSettings.c:840 msgid "Window List Menu" msgstr "Seznam oken" #: ../Menu.c:519 msgid "XTerm" msgstr "" #: ../Menu.c:522 msgid "rxvt" msgstr "" #: ../Menu.c:525 msgid "ETerm" msgstr "" #: ../Menu.c:528 msgid "Run..." msgstr "Spustit..." #: ../Menu.c:531 msgid "Netscape" msgstr "" #: ../Menu.c:534 msgid "gimp" msgstr "" #: ../Menu.c:537 msgid "epic" msgstr "" #: ../Menu.c:540 msgid "ee" msgstr "" #: ../Menu.c:543 msgid "xv" msgstr "" #: ../Menu.c:546 msgid "Acrobat Reader" msgstr "" #: ../Menu.c:549 msgid "ghostview" msgstr "" #: ../Menu.c:552 ../Menu.c:809 msgid "Exit Window Maker" msgstr "Ukončí Window maker" #: ../Menu.c:575 msgid "Debian Menu" msgstr "" #: ../Menu.c:578 msgid "RedHat Menu" msgstr "" #: ../Menu.c:581 msgid "Menu Conectiva" msgstr "" #: ../Menu.c:584 ../Themes.c:250 msgid "Themes" msgstr "Témata" #: ../Menu.c:589 msgid "Bg Images (scale)" msgstr "Pozadí (uprostřed)" #: ../Menu.c:594 msgid "Bg Images (tile)" msgstr "Pozadí (dlaždice)" #: ../Menu.c:599 msgid "Assorted XTerms" msgstr "Různé Xtermy" #: ../Menu.c:601 msgid "XTerm Yellow on Blue" msgstr "Xterm žlutá na modré" #: ../Menu.c:604 msgid "XTerm White on Black" msgstr "Xterm bílá na černé" #: ../Menu.c:607 msgid "XTerm Black on White" msgstr "Xterm černá na bílé" #: ../Menu.c:610 msgid "XTerm Black on Beige" msgstr "Xterm řerná na žluté" #: ../Menu.c:613 msgid "XTerm White on Green" msgstr "Xterm Bílá na zelené" #: ../Menu.c:616 msgid "XTerm White on Olive" msgstr "Xterm bílá na olivové" #: ../Menu.c:619 msgid "XTerm Blue on Blue" msgstr "Xterm modrá na tmavěmodré" #: ../Menu.c:622 msgid "XTerm BIG FONTS" msgstr "Xterm VELKÉ FONTY" #: ../Menu.c:644 msgid "Program to Run" msgstr "Program ke spuštění" #: ../Menu.c:658 msgid "Run the program inside a Xterm" msgstr "Spustit program uvnitř Xtermu" #: ../Menu.c:668 msgid "Path for Menu" msgstr "Cesta pro Menu" #: ../Menu.c:681 msgid "" "Enter the path for a file containing a menu\n" "or a list of directories with the programs you\n" "want to have listed in the menu. Ex:\n" "~/GNUstep/Library/WindowMaker/menu\n" "or\n" "/usr/bin ~/xbin" msgstr "" "Vlož cestu pro soubor obsahující menu\n" "nebo seznam adresářů s programy, které\n" "chete zobrazit v menu. Př:\n" "~/GNUstep/Library/WindowMaker/menu\n" "nebo\n" "/usr/bin ~/xbin" #: ../Menu.c:696 msgid "Command" msgstr "Příkaz" #: ../Menu.c:710 msgid "" "Enter a command that outputs a menu\n" "definition to stdout when invoked." msgstr "" "Vlož příkaz, který vytvoří obsah\n" "menu s funkčními položkami." #: ../Menu.c:721 msgid "Command to Open Files" msgstr "Příkaz k otevření souboru" #: ../Menu.c:735 msgid "" "Enter the command you want to use to open the\n" "files in the directories listed below." msgstr "" "Vlož příkaz, který chcete použít k otevření\n" "souborů v níže zobrazených adresářích." #: ../Menu.c:744 msgid "Directories with Files" msgstr "Adresáře se soubory" #: ../Menu.c:757 msgid "Strip extensions from file names" msgstr "Vynech přípony souborů" #: ../Menu.c:769 msgid "Keyboard Shortcut" msgstr "Klávesové zkratky" #: ../Menu.c:805 msgid "Arrange Icons" msgstr "Uspořádat ikony" #: ../Menu.c:806 msgid "Hide All Windows Except For The Focused One" msgstr "Skryj všechny okna kromě zaměřeného" #: ../Menu.c:807 msgid "Show All Windows" msgstr "Zobraz všechny okna" #: ../Menu.c:810 msgid "Exit X Session" msgstr "Ukonči sezení" #: ../Menu.c:811 msgid "Restart Window Maker" msgstr "Restartuj Window Maker" #: ../Menu.c:812 msgid "Start Another Window Manager : (" msgstr "Zapni jiný okení manažer :-(" #: ../Menu.c:814 msgid "Save Current Session" msgstr "Ulož aktuální sezení" #: ../Menu.c:815 msgid "Clear Saved Session" msgstr "Vučisti uložené sezení" #: ../Menu.c:816 msgid "Refresh Screen" msgstr "Obnov obrazovku" #: ../Menu.c:817 msgid "Open Info Panel" msgstr "Otevři informační panel" #: ../Menu.c:818 msgid "Open Copyright Panel" msgstr "Otevři Copyright panel" #: ../Menu.c:824 msgid "Window Manager to Start" msgstr "Příkaz jiného okeního manažer" #: ../Menu.c:840 msgid "Do not confirm action." msgstr "Bez potvrzení akce" #: ../Menu.c:850 msgid "" "Instructions:\n" "\n" " - drag items from the left to the menu to add new items\n" " - drag items out of the menu to remove items\n" " - drag items in menu to change their position\n" " - drag items with Control pressed to copy them\n" " - double click in a menu item to change the label\n" " - click on a menu item to change related information" msgstr "" "Instrukce:\n" "\n" " - přetáhni položku z leva na panel k přidání nové položky\n" " - odtstraň položku přetažením z menu zpět na aplikaci\n" " - přetáhni položku v menu ke změně její pozice\n" " - kopíruj položku pomocí zmáčknutého Controlu\n" " - změň jméno položky dvojklikem\n" " - klikni na položku ke změně souvisejícíh informací" #: ../Menu.c:1067 #, c-format msgid "unknown command '%s' in menu" msgstr "neznámý příkaz '%s' v menu" #: ../Menu.c:1099 msgid ": Execute Program" msgstr ": Spustit program" #: ../Menu.c:1103 msgid ": Perform Internal Command" msgstr ": Vytvoř vnitřní příkaz" #: ../Menu.c:1107 msgid ": Open a Submenu" msgstr ": Otevři submenu" #: ../Menu.c:1111 msgid ": Program Generated Submenu" msgstr ": Programem generované submenu" #: ../Menu.c:1115 msgid ": Directory Contents Menu" msgstr ": Obsah adresáře" #: ../Menu.c:1119 msgid ": Open Workspaces Submenu" msgstr ": Pracovní plocha" #: ../Menu.c:1123 msgid ": Open Window List Submenu" msgstr ": Otevřít menu s okny" #: ../Menu.c:1343 msgid "Remove Submenu" msgstr "Odstraň submenu" #: ../Menu.c:1344 msgid "" "Removing this item will destroy all items inside\n" "the submenu. Do you really want to do that?" msgstr "" "Odstraněním této položky ztratíte všechny položky uvnitř\n" "submenu. Skutečně ji chcete smazat?" #: ../Menu.c:1346 msgid "Yes" msgstr "Ano" #: ../Menu.c:1346 msgid "No" msgstr "Ne" #: ../Menu.c:1347 msgid "Yes, don't ask again" msgstr "Ano, neptejte se víc" #: ../Menu.c:1514 ../Menu.c:1521 #, c-format msgid "%s/Library/WindowMaker/plmenu" msgstr "" #: ../Menu.c:1530 #, c-format msgid "Could not open default menu from '%s'" msgstr "Nemohu otevřít standardní menu z '%s'" #: ../Menu.c:1568 ../WPrefs.c:807 msgid "Warning" msgstr "Varování" #: ../Menu.c:1569 msgid "" "The menu file format currently in use is not supported\n" "by this tool. Do you want to discard the current menu\n" "to use this tool?" msgstr "" "Formát soubor menu není už podporován touto verzí\n" "programu. Přejete si ho vyřadit a nahradit novým\n" "pužitelným tímto programem?" #: ../Menu.c:1572 msgid "Yes, Discard and Update" msgstr "Ano, Vyřadit a aktualizovat" #: ../Menu.c:1573 msgid "No, Keep Current Menu" msgstr "Ne, zachovat stávající" #: ../Menu.c:1831 msgid "Applications Menu Definition" msgstr "Nastavení aplikačního menu" #: ../Menu.c:1833 msgid "Edit the menu for launching applications." msgstr "Upravit menu ke spoustění aplikací" #: ../MenuPreferences.c:111 msgid "Menu Scrolling Speed" msgstr "Rychlost rolování menu" #: ../MenuPreferences.c:160 msgid "Submenu Alignment" msgstr "Zarovnání submenu" #: ../MenuPreferences.c:204 msgid "" "Always open submenus inside the screen, instead of scrolling." msgstr "" "Menu otevřít vždy na ploše obrazovky (neposouvat)." #: ../MenuPreferences.c:209 msgid "Scroll off-screen menus when pointer is moved over them." msgstr "Posouvat menu při pohybu ukazatele nad tímto menu." #: ../MenuPreferences.c:229 msgid "Menu Preferences" msgstr "Nastavení menu" #: ../MenuPreferences.c:231 msgid "" "Menu usability related options. Scrolling speed,\n" "alignment of submenus etc." msgstr "" "Nastavení aplikačního menu. Rychlost\n" "rolování, způsob zarovnání submenu atd." #: ../MouseSettings.c:141 msgid "Invalid mouse acceleration value. Must be a positive real value." msgstr "Chybná hodnota pro zrychlení myši. Musí být kladné reálné číslo." #: ../MouseSettings.c:161 msgid "" "Invalid mouse acceleration threshold value. Must be the number of pixels to " "travel before accelerating." msgstr "" "Chybná hodnota pro práh zrychlení myši. Zadejte číslo označující počet " "pixelů před akcelarecí." #: ../MouseSettings.c:262 ../MouseSettings.c:274 ../MouseSettings.c:286 #: ../MouseSettings.c:298 #, c-format msgid "bad value %s for option %s" msgstr "chybná hodnota %s pro volbu %s" #: ../MouseSettings.c:357 #, c-format msgid "" "modifier key %s for option ModifierKey was not recognized. Using %s as " "default" msgstr "" "modifikátor klávesy %s pro volbu \"ModifierKey\" není znám. Používám %s." #: ../MouseSettings.c:382 msgid "could not retrieve keyboard modifier mapping" msgstr "nelze převzít mapování modifikátorů kláves" #: ../MouseSettings.c:477 msgid "Mouse Speed" msgstr "Rychlost myši" #: ../MouseSettings.c:507 msgid "Accel.:" msgstr "Zrychl.:" #: ../MouseSettings.c:520 msgid "Threshold:" msgstr "Mez:" #: ../MouseSettings.c:535 msgid "Double-Click Delay" msgstr "Prodleva pro dvojklik" #: ../MouseSettings.c:579 msgid "Test" msgstr "Test" #: ../MouseSettings.c:609 msgid "Workspace Mouse Actions" msgstr "Akce myši na ploše" #: ../MouseSettings.c:614 msgid "Disable mouse actions" msgstr "Zakaž akce myši" #: ../MouseSettings.c:620 msgid "Left Button" msgstr "Levé tlačítko" #: ../MouseSettings.c:630 msgid "Middle Button" msgstr "Prostřední tl." #: ../MouseSettings.c:640 msgid "Right Button" msgstr "Pravé tlačítko" #: ../MouseSettings.c:650 msgid "Mouse Wheel" msgstr "Kolečko myši" #: ../MouseSettings.c:672 msgid "Mouse Grab Modifier" msgstr "Modifikátor pro myš" #: ../MouseSettings.c:674 msgid "" "Keyboard modifier to use for actions that\n" "involve dragging windows with the mouse,\n" "clicking inside the window." msgstr "" "Modifikátor klávesnice, který bude použit\n" "pro táhnutí okna myši, kliknete-li\n" "uvnitř okna." #: ../MouseSettings.c:708 #, c-format msgid "could not create %s" msgstr "nelze vytvořit \"%s\"" #: ../MouseSettings.c:724 #, c-format msgid "could not create temporary file %s" msgstr "nelze vytvořit dočasný soubor %s" #: ../MouseSettings.c:756 #, c-format msgid "could not rename file %s to %s\n" msgstr "soubor %s nelze přejmenovat na %s\n" #: ../MouseSettings.c:829 msgid "Shift" msgstr "" #: ../MouseSettings.c:830 msgid "Lock" msgstr "" #: ../MouseSettings.c:831 msgid "Control" msgstr "Ctrl" #: ../MouseSettings.c:832 msgid "Mod1" msgstr "" #: ../MouseSettings.c:833 msgid "Mod2" msgstr "" #: ../MouseSettings.c:834 msgid "Mod3" msgstr "" #: ../MouseSettings.c:835 msgid "Mod4" msgstr "" #: ../MouseSettings.c:836 msgid "Mod5" msgstr "" #: ../MouseSettings.c:839 msgid "Applications Menu" msgstr "Aplikační menu" #: ../MouseSettings.c:841 msgid "Select Windows" msgstr "Vybrat okna" #: ../MouseSettings.c:844 msgid "Switch Workspaces" msgstr "Přepínat plochy" #: ../MouseSettings.c:849 msgid "Mouse Preferences" msgstr "Nastavení myši" #: ../MouseSettings.c:851 msgid "" "Mouse speed/acceleration, double click delay,\n" "mouse button bindings etc." msgstr "" "Rychlost/Zrychlení myši, prodleva při dvojkliku,\n" "vazby tlačítek myši atd." #: ../Paths.c:84 msgid "bad value in option IconPath. Using default path list" msgstr "ve volbě IconPath je nesprávná hodnota. Používám standardní nastavení" #: ../Paths.c:101 msgid "bad value in option PixmapPath. Using default path list" msgstr "ve volbě PixmapPath je chybná hodnota. Používám standard." #: ../Paths.c:149 msgid "Select directory" msgstr "Vyberte adresář" #: ../Paths.c:270 msgid "Icon Search Paths" msgstr "Adresáře s ikonami" #: ../Paths.c:281 ../Paths.c:312 ../TexturePanel.c:1310 msgid "Add" msgstr "Přidat" #: ../Paths.c:301 msgid "Pixmap Search Paths" msgstr "Adresáře s obrázky" #: ../Paths.c:341 msgid "Search Path Configuration" msgstr "Konfigurace prohledávaných cest" #: ../Paths.c:343 msgid "" "Search paths to use when looking for pixmaps\n" "and icons." msgstr "" "Při vyhledávání obrázků a ikon prohledávat\n" "tyto adresáře." #: ../Preferences.c:75 msgid "OFF" msgstr "Vypnuté" #: ../Preferences.c:77 msgid "1 pixel" msgstr "" #: ../Preferences.c:80 #, c-format msgid "%i pixels" msgstr "%i pixely" #: ../Preferences.c:83 #, c-format msgid "%i pixels " msgstr "%i pixelů" #: ../Preferences.c:229 msgid "Size Display" msgstr "Zobrazení velikosti" #: ../Preferences.c:231 msgid "" "The position or style of the window size\n" "display that's shown when a window is resized." msgstr "Pozice a styl okna, které mění velikost." #: ../Preferences.c:238 ../Preferences.c:259 msgid "Corner of screen" msgstr "Roh obrazovky" #: ../Preferences.c:239 ../Preferences.c:260 msgid "Center of screen" msgstr "Střed obrazovky" #: ../Preferences.c:240 ../Preferences.c:261 msgid "Center of resized window" msgstr "Střed okna" #: ../Preferences.c:241 msgid "Technical drawing-like" msgstr "Jako kóty výkresů" #: ../Preferences.c:242 ../Preferences.c:262 msgid "Disabled" msgstr "Vypnuté" #: ../Preferences.c:250 msgid "Position Display" msgstr "Zobrazení pozice" #: ../Preferences.c:252 msgid "" "The position or style of the window position\n" "display that's shown when a window is moved." msgstr "Pozice a styl okna, které je přesouváno." #: ../Preferences.c:270 msgid "Show balloon text for..." msgstr "Bublinová nápověda pro..." #: ../Preferences.c:277 msgid "incomplete window titles" msgstr "nekompletní titulky oken" #: ../Preferences.c:278 msgid "miniwindow titles" msgstr "titulky minioken" #: ../Preferences.c:279 msgid "application/dock icons" msgstr "aplikační/ukotvené ikony" #: ../Preferences.c:280 msgid "internal help" msgstr "interní nápovědu" #: ../Preferences.c:292 msgid "Raise window when switching focus with keyboard" msgstr "Při změně zaměření přes klávesnici zdvihnout okno" #: ../Preferences.c:298 msgid "" "Enable keyboard language\n" "switch button in window titlebars." msgstr "Pro každé okno pamatovat nastavení klávesnice." #: ../Preferences.c:307 msgid "Workspace border" msgstr "Okraje pracovní plochy" #: ../Preferences.c:323 msgid "Left/Right" msgstr "Levé/Pravé" #: ../Preferences.c:328 msgid "Top/Bottom" msgstr "Horní/Dolní" #: ../Preferences.c:349 msgid "Miscellaneous Ergonomic Preferences" msgstr "Různá nastavení ergonomie" #: ../Preferences.c:350 msgid "" "Various settings like balloon text, geometry\n" "displays etc." msgstr "" "Bublinová nápověda, zobrazení geometrie,\n" "oken, okraje pracovní plochy atd." #: ../TexturePanel.c:323 msgid "Saturation" msgstr "Sytost" #: ../TexturePanel.c:325 msgid "Brightness" msgstr "Světlost" #: ../TexturePanel.c:373 ../TexturePanel.c:380 msgid "Hue" msgstr "Odstín" #: ../TexturePanel.c:610 msgid "Could not load the selected file: " msgstr "Nelze načíst vybraný soubor: " #: ../TexturePanel.c:664 msgid "Open Image" msgstr "Otevřít obrázek" #: ../TexturePanel.c:694 msgid "The selected file does not contain a supported image." msgstr "Vybraný soubor neobsahuje podporovaný typ obrázku." #: ../TexturePanel.c:945 #, c-format msgid "could not load file '%s': %s" msgstr "nelze načíst soubor ' %s': %s" #: ../TexturePanel.c:1064 #, c-format msgid "error creating texture %s" msgstr "chyba při vytváření textury %s" #: ../TexturePanel.c:1254 msgid "Texture Panel" msgstr "Panel textur" #: ../TexturePanel.c:1262 msgid "Texture Name" msgstr "Jméno textury" #: ../TexturePanel.c:1274 msgid "Solid Color" msgstr "Barva" #: ../TexturePanel.c:1275 msgid "Gradient Texture" msgstr "Gradient textury" #: ../TexturePanel.c:1276 msgid "Simple Gradient Texture" msgstr "Obyčejná textura s přechodem" #: ../TexturePanel.c:1277 msgid "Textured Gradient" msgstr "Texturovaný přechod" #: ../TexturePanel.c:1278 msgid "Image Texture" msgstr "Obrázek textury" #: ../TexturePanel.c:1286 msgid "Default Color" msgstr "Standardní barva" #: ../TexturePanel.c:1298 msgid "Gradient Colors" msgstr "Barvy přechodu" #: ../TexturePanel.c:1394 msgid "Direction" msgstr "Směr" #: ../TexturePanel.c:1422 msgid "Gradient" msgstr "Přechod" #: ../TexturePanel.c:1440 msgid "Gradient Opacity" msgstr "Neprůhlednost přechodu" #: ../TexturePanel.c:1483 msgid "Image" msgstr "Obrázek" #: ../TexturePanel.c:1515 msgid "Tile" msgstr "Dlaždice" #: ../TexturePanel.c:1516 msgid "Scale" msgstr "Zvětšit" #: ../TexturePanel.c:1518 msgid "Maximize" msgstr "Maximalizovat" #: ../Themes.c:71 ../Themes.c:82 msgid "Set" msgstr "Nastavit" #: ../Themes.c:132 msgid "Stop" msgstr "Stop" #: ../Themes.c:143 ../Themes.c:203 ../Themes.c:223 msgid "Download" msgstr "Downloadovat" #: ../Themes.c:171 msgid "Save Current Theme" msgstr "Uložit aktuální téma" #: ../Themes.c:180 msgid "Load" msgstr "Načíst" #: ../Themes.c:185 msgid "Install" msgstr "Instalovat" #: ../Themes.c:193 msgid "Tile of The Day" msgstr "Obrázek dne" #: ../Themes.c:213 msgid "Bar of The Day" msgstr "Titulek dne" #: ../WPrefs.c:260 msgid "Window Maker Preferences" msgstr "Nastavení Window Makeru" #: ../WPrefs.c:284 msgid "Revert Page" msgstr "Stránku zpět" #: ../WPrefs.c:290 msgid "Revert All" msgstr "Vše zpět" #: ../WPrefs.c:296 msgid "Save" msgstr "Uložit" #: ../WPrefs.c:309 msgid "Balloon Help" msgstr "Balónová nápověda" #: ../WPrefs.c:334 msgid "Window Maker Preferences Utility" msgstr "Konfigurační program Window Makeru" #: ../WPrefs.c:341 #, c-format msgid "Version %s for Window Maker %s or newer" msgstr "Verze %s pro Window Maker %s nebo novější" #: ../WPrefs.c:349 msgid "Starting..." msgstr "Startuji..." #: ../WPrefs.c:355 msgid "" "Programming/Design: Alfredo K. Kojima\n" "Artwork: Marco van Hylckama Vlieg, Largo et al\n" "More Programming: James Thompson et al" msgstr "" "Programoval/Návrh: Alfredo K. Kojima\n" "Předloha: Marco van Hylckama Vlieg\n" "Spolupracoval: James Thompson\n" "Do češtiny přeložil: Jiří Hnídek (jiri.hnidek@vslib.cz)" #: ../WPrefs.c:455 #, c-format msgid "could not locate image file %s\n" msgstr "nelze najít soubor %s s obrázkem\n" #: ../WPrefs.c:670 #, c-format msgid "could not load image file %s:%s" msgstr "nelze načíst soubor s obrázkem %s:%s" #: ../WPrefs.c:689 msgid "Loading Window Maker configuration files..." msgstr "Konfigurační soubory Window Makeru se načítají..." #: ../WPrefs.c:693 msgid "Initializing configuration panels..." msgstr "Inicializace konfiguračních panelů..." #: ../WPrefs.c:727 msgid "" "WPrefs is free software and is distributed WITHOUT ANY\n" "WARRANTY under the terms of the GNU General Public License." msgstr "" "Program WPrefs je volně šiřitelný software, který je distribuován \n" "BEZ JAKÉKOLI ZÁRUKY pod GNU licencí." #: ../WPrefs.c:757 ../WPrefs.c:837 #, c-format msgid "Window Maker domain (%s) is corrupted!" msgstr "Doména Window Makeru (%s) je poškozena!" #: ../WPrefs.c:761 #, c-format msgid "Could not load Window Maker domain (%s) from defaults database." msgstr "z databáze standardů nelze načíst doménu Window Makeru (%s)." #: ../WPrefs.c:777 msgid "could not extract version information from Window Maker" msgstr "od Window Makeru nelze získat číslo verze" #: ../WPrefs.c:778 msgid "Make sure wmaker is in your search path." msgstr "Zajistěte, aby byl Window Maker v prohledávané cestě." #: ../WPrefs.c:781 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." #: ../WPrefs.c:791 msgid "" "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." 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.c:798 #, c-format msgid "" "WPrefs only supports Window Maker 0.18.0 or newer.\n" "The version installed is %i.%i.%i\n" msgstr "" "Program WPrefs podporuje Window Maker 0.18.0 a vyšší.\n" "Instalovaná verze je %i.%i.%i\n" #: ../WPrefs.c:805 #, c-format msgid "" "Window Maker %i.%i.%i, which is installed in your system, is not fully " "supported by this version of WPrefs." msgstr "" "Instalovaný Window Maker %i.%i.%i není plně touto verzí programu WPrefs " "podporován." #: ../WPrefs.c:818 #, c-format msgid "could not run \"%s --global_defaults_path\"." msgstr "nelze provést \"%s --global_defaults_path\"" #: ../WPrefs.c:841 #, c-format msgid "Could not load global Window Maker domain (%s)." msgstr "Nelze načíst globální doménu pro Window Maker (%s)." #: ../WPrefs.c:1090 #, c-format msgid "" "bad speed value for option %s\n" ". Using default Medium" msgstr "" "pro volbu %s je chybně určená\n" "rychlost. Použita 'Medium'" #: ../WindowHandling.c:141 #, c-format msgid "bad option value %s in WindowPlacement. Using default value" msgstr "chybná hodnota volby %s ve WindowPlacement. Používám standardní" #: ../WindowHandling.c:163 msgid "invalid data in option WindowPlaceOrigin. Using default (0,0)" msgstr "chybná data pro WindowPlaceOrigin. Používám (0,0)" #: ../WindowHandling.c:243 msgid "Window Placement" msgstr "Umísťování oken" #: ../WindowHandling.c:244 msgid "" "How to place windows when they are first put\n" "on screen." msgstr "" "Jak umísťovat okna, když jsou poprvé zobrazena\n" "na obrazovce." #: ../WindowHandling.c:250 msgid "Automatic" msgstr "Automatické" #: ../WindowHandling.c:251 msgid "Random" msgstr "Náhodné" #: ../WindowHandling.c:252 msgid "Manual" msgstr "Ruční" #: ../WindowHandling.c:253 msgid "Cascade" msgstr "Kaskádové" #: ../WindowHandling.c:254 msgid "Smart" msgstr "Chytré" #: ../WindowHandling.c:260 msgid "Placement Origin" msgstr "Počáteční poloha" #: ../WindowHandling.c:321 msgid "Opaque Move" msgstr "Plynulost posunu" #: ../WindowHandling.c:322 msgid "" "Whether the window contents should be moved\n" "when dragging windows aroung or if only a\n" "frame should be displayed.\n" msgstr "" "Zda se má zobrazovat obsah oken při přesouvání\n" "okna nebo má být zobrazen pouze rám okna.\n" #: ../WindowHandling.c:361 msgid "When maximizing..." msgstr "Při maximalizaci..." #: ../WindowHandling.c:366 msgid "...do not cover icons" msgstr "...nezakrývat ikony" #: ../WindowHandling.c:372 msgid "...do not cover dock" msgstr "...nezakrývat dok" #: ../WindowHandling.c:381 msgid "Edge Resistance" msgstr "Odolnost hran" #: ../WindowHandling.c:383 msgid "" "Edge resistance will make windows `resist'\n" "being moved further for the defined threshold\n" "when moved against other windows or the edges\n" "of the screen." msgstr "" "'Odolnost hran' zajistí, že se okna 'budou bránit'\n" "při přesunu dál přes ostatní okna nebo hrany obrazovky." #: ../WindowHandling.c:402 msgid "Resist" msgstr "Ano" #: ../WindowHandling.c:407 msgid "Attract" msgstr "Ne" #: ../WindowHandling.c:423 msgid "Open dialogs in same workspace as their owners" msgstr "Otevřít dialogy na stejné ploše jako je vlastník" #: ../WindowHandling.c:450 msgid "Window Handling Preferences" msgstr "Nastavení práce s okny" #: ../WindowHandling.c:452 msgid "" "Window handling options. Initial placement style\n" "edge resistance, opaque move etc." msgstr "" "Zacházení s okny. Způsob počátečního umísťování,\n" "odolnost hran proti přesunu mimo obrazovku atd." #: ../Workspace.c:176 msgid "Workspace Navigation" msgstr "Orientace v plochách" #: ../Workspace.c:183 msgid "Wrap to the first workspace from the last workspace" msgstr "Za poslední pracovní plochou přepnout na první a opačně" #: ../Workspace.c:205 msgid "Switch workspaces while dragging windows" msgstr "Automaticky se přepnout na další plochu při přetažení aplikace přes hranu plochy" #: ../Workspace.c:227 msgid "Automatically create new workspaces" msgstr "Automaticky vytvářet nové pracovní plochy" #: ../Workspace.c:250 msgid "Position of workspace name display" msgstr "Pozice názvu indikátoru pracovní plochy:" #: ../Workspace.c:269 msgid "Disable" msgstr "Žádná" #: ../Workspace.c:271 msgid "Top" msgstr "Nahoře" #: ../Workspace.c:272 msgid "Bottom" msgstr "Dole" #: ../Workspace.c:273 msgid "Top/Left" msgstr "Nahoře vlevo" #: ../Workspace.c:274 msgid "Top/Right" msgstr "Nahoře vpravo" #: ../Workspace.c:275 msgid "Bottom/Left" msgstr "Dole vlevo" #: ../Workspace.c:276 msgid "Bottom/Right" msgstr "Dole vpravo" #: ../Workspace.c:284 msgid "Dock/Clip" msgstr "Dok/Sponka" #: ../Workspace.c:303 msgid "" "Disable/enable the application Dock (the\n" "vertical icon bar in the side of the screen)." msgstr "" "Vypnout/Zapnout aplikační Dok (ta svislá\n" "posuvná lišta s ikonami na boku obrazovky)." #: ../Workspace.c:324 msgid "" "Disable/enable the Clip (that thing with\n" "a paper clip icon)." msgstr "" "Zapnout/Vypnout Sponku (ta věc, která \n" "má na sobě sponku na papír)." #: ../Workspace.c:364 msgid "Workspace Preferences" msgstr "Nastavení pracovní plochy" #: ../Workspace.c:366 msgid "" "Workspace navigation features.\n" "You can also enable/disable the Dock and Clip here." msgstr "" "Nastavení práce s virtuálnímy obrazovkami,\n" "zapnutí/vypnoutí Doku nebo Sponky." #: ../imagebrowser.c:95 msgid "View" msgstr "Přehled" #: ../main.c:59 #, c-format msgid "usage: %s [options]\n" msgstr "použití: %s [volby]\n" #: ../main.c:60 msgid "options:" msgstr "volby:" #: ../main.c:61 msgid " -display <display>\tdisplay to be used" msgstr " -display <display>\tkterý display použít" #: ../main.c:62 msgid " --version\t\tprint version number and exit" msgstr " --version\t\tzobraz verzi a konec" #: ../main.c:63 msgid " --help\t\tprint this message and exit" msgstr " --help\t\tzobraz nápovědu a konec" #: ../main.c:122 #, c-format msgid "too few arguments for %s" msgstr "nedostatek argumentů pro %s" #: ../main.c:144 msgid "X server does not support locale" msgstr "X server nepodporuje nastavení místních zvyklostí" #: ../main.c:147 msgid "cannot set locale modifiers" msgstr "nelze nastavit modifikátory místních zvyklostí" #: ../main.c:153 #, c-format msgid "could not open display %s" msgstr "nelze otevřít displej %s" #: ../main.c:161 msgid "could not initialize application" msgstr "nelze inicializovat aplikaci" ���WindowMaker-0.95.9/WPrefs.app/po/hu.po��������������������������������������������������������������0000644�0001750�0001750�00000217462�13431646201�014361� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Hungarian translation of WPrefs # Copyright (C) 1998-2000 Free Software Foundation, Inc. # Horvath Szabolcs <horvathsz@penguinpowered.com> # thanks to magyar@lists.linux.hu. # msgid "" msgstr "" "Project-Id-Version: Window Maker 0.95.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-02-18 00:14+0100\n" "PO-Revision-Date: 2014-02-18 00:33+0100\n" "Last-Translator: BALATON Zoltán <balaton@eik.bme.hu>\n" "Language-Team: Hungarian\n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:300 msgid "[Focused]" msgstr "Fókuszált ablak" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:301 msgid "[Unfocused]" msgstr "Nem fókuszált ablak" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:302 msgid "[Owner of Focused]" msgstr "A fókuszált ablak szülője" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:303 msgid "[Resizebar]" msgstr "Átméretezősáv" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:304 msgid "[Menu Title]" msgstr "Címsor" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:305 msgid "[Menu Item]" msgstr "Menüpontok" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:306 msgid "[Icon]" msgstr "Ikon" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:1067 msgid "Select File" msgstr "Válassz fájlt" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:1431 msgid "Focused Window" msgstr "Fókuszált ablak" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:1436 msgid "Unfocused Window" msgstr "Nem fókuszált ablak" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:1441 msgid "Owner of Focused Window" msgstr "A fókuszált ablak szülője" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:1445 #: ../../../wmaker-crm/WPrefs.app/Appearance.c:1749 #: ../../../wmaker-crm/WPrefs.app/FontSimple.c:100 msgid "Menu Title" msgstr "Menü cím" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:1449 #: ../../../wmaker-crm/WPrefs.app/Appearance.c:1451 msgid "Normal Item" msgstr "Normál" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:1456 msgid "Disabled Item" msgstr "Letiltott" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:1465 msgid "Highlighted" msgstr "Kiemelt" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:1649 msgid "Texture" msgstr "Minta" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:1656 msgid "Titlebar of Focused Window" msgstr "A fókuszált ablak címsora" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:1657 msgid "Titlebar of Unfocused Windows" msgstr "A nem fókuszált ablak címsora" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:1658 msgid "Titlebar of Focused Window's Owner" msgstr "A fókuszált ablak szülőjének címsora" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:1659 msgid "Window Resizebar" msgstr "Átméretezősáv" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:1660 msgid "Titlebar of Menus" msgstr "Menü címsor" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:1661 msgid "Menu Items" msgstr "Menüpontok" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:1662 msgid "Icon Background" msgstr "Ikonháttér" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:1677 msgid "" "Double click in the texture you want to use\n" "for the selected item." msgstr "" "Kattints duplán azon a mintázaton, amit\n" "használni szeretnél a kiválasztott típusnál." #: ../../../wmaker-crm/WPrefs.app/Appearance.c:1689 msgid "New" msgstr "Új" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:1693 msgid "Create a new texture." msgstr "Új mintázat készítése" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:1700 msgid "Extract..." msgstr "Kibont" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:1704 msgid "Extract texture(s) from a theme or a style file." msgstr "Mintázat(ok) kicsomagolása téma vagy stílus fájlból." #: ../../../wmaker-crm/WPrefs.app/Appearance.c:1713 msgid "Edit" msgstr "Szerkeszt" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:1716 msgid "Edit the highlighted texture." msgstr "A kiválasztott mintázat szerkesztése" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:1723 #: ../../../wmaker-crm/WPrefs.app/TexturePanel.c:1202 msgid "Delete" msgstr "Töröl" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:1727 msgid "Delete the highlighted texture." msgstr "A kiválasztott mintázat törlése" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:1739 msgid "Color" msgstr "Szín" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:1746 msgid "Focused Window Title" msgstr "A fókuszált ablak címsora" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:1747 msgid "Unfocused Window Title" msgstr "A nem fókuszált ablak címsora" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:1748 msgid "Owner of Focused Window Title" msgstr "A fókuszált ablak szülőjének címsora" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:1750 msgid "Menu Item Text" msgstr "Menüpont szöveg" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:1751 msgid "Disabled Menu Item Text" msgstr "Letiltott menüpont" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:1752 msgid "Menu Highlight Color" msgstr "Menü kiválasztás színe" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:1753 msgid "Highlighted Menu Text Color" msgstr "Kiválasztott menüpont szöveg színe" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:1790 msgid "Background" msgstr "Ikonháttér" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:1802 #: ../../../wmaker-crm/WPrefs.app/TexturePanel.c:1377 msgid "Browse..." msgstr "Választ..." #: ../../../wmaker-crm/WPrefs.app/Appearance.c:1812 msgid "Options" msgstr "Beállítások" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:1819 msgid "Menu Style" msgstr "Menü stílus" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:1847 #: ../../../wmaker-crm/WPrefs.app/Configurations.c:179 #: ../../../wmaker-crm/WPrefs.app/Configurations.c:191 #: ../../../wmaker-crm/WPrefs.app/Docks.c:206 #: ../../../wmaker-crm/WPrefs.app/Docks.c:214 #: ../../../wmaker-crm/WPrefs.app/Focus.c:269 #: ../../../wmaker-crm/WPrefs.app/Focus.c:280 #: ../../../wmaker-crm/WPrefs.app/MenuPreferences.c:127 #: ../../../wmaker-crm/WPrefs.app/MenuPreferences.c:138 #: ../../../wmaker-crm/WPrefs.app/MenuPreferences.c:166 #: ../../../wmaker-crm/WPrefs.app/MenuPreferences.c:181 #: ../../../wmaker-crm/WPrefs.app/MouseSettings.c:520 #: ../../../wmaker-crm/WPrefs.app/MouseSettings.c:531 #: ../../../wmaker-crm/WPrefs.app/WPrefs.c:467 #: ../../../wmaker-crm/WPrefs.app/WPrefs.c:492 #, c-format msgid "could not load icon file %s" msgstr "nem tudom betölteni ezt az ikon fájlt: %s" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:1860 msgid "Title Alignment" msgstr "Címsor igazítás" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:1867 msgid "Left" msgstr "Balra" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:1870 #: ../../../wmaker-crm/WPrefs.app/TexturePanel.c:1391 #: ../../../wmaker-crm/WPrefs.app/WindowHandling.c:287 #: ../../../wmaker-crm/WPrefs.app/Workspace.c:189 msgid "Center" msgstr "Középre" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:1873 msgid "Right" msgstr "Jobbra" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:2076 msgid "Appearance Preferences" msgstr "Megjelenés beállítása" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:2078 msgid "" "Background texture configuration for windows,\n" "menus and icons." msgstr "Ablakok, menük és ikonok háttérmintázata." #: ../../../wmaker-crm/WPrefs.app/Appearance.c:2114 msgid "Extract Texture" msgstr "Mintázatok kicsomagolása" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:2134 msgid "Textures" msgstr "Mintázatok" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:2143 #: ../../../wmaker-crm/WPrefs.app/WPrefs.c:255 msgid "Close" msgstr "Bezár" #: ../../../wmaker-crm/WPrefs.app/Appearance.c:2148 msgid "Extract" msgstr "Kicsomagol" #: ../../../wmaker-crm/WPrefs.app/Configurations.c:130 #: ../../../wmaker-crm/WPrefs.app/Docks.c:160 #: ../../../wmaker-crm/WPrefs.app/Workspace.c:106 #, c-format msgid "could not load image file %s" msgstr "a %s képet nem tudom betölteni" #: ../../../wmaker-crm/WPrefs.app/Configurations.c:141 msgid "Icon Slide Speed" msgstr "Ikon mozgás sebessége" #: ../../../wmaker-crm/WPrefs.app/Configurations.c:147 msgid "Shade Animation Speed" msgstr "Ablak felhúzás/leeresztés sebessége" #: ../../../wmaker-crm/WPrefs.app/Configurations.c:206 msgid "Smooth Scaling" msgstr "Kép simítás" #: ../../../wmaker-crm/WPrefs.app/Configurations.c:237 msgid "" "Smooth scaled background images, neutralizing\n" "the `pixelization' effect. This will slow\n" "down loading of background images considerably." msgstr "" "Simítás háttérképek nagyításánál, ami csökkenti\n" "a kockásodást. Ez jelentősen lelassítja a\n" "háttérképek betöltését." #: ../../../wmaker-crm/WPrefs.app/Configurations.c:247 msgid "Titlebar Style" msgstr "Címsor stílusa" #: ../../../wmaker-crm/WPrefs.app/Configurations.c:300 #: ../../../wmaker-crm/WPrefs.app/Configurations.c:306 msgid "Animations" msgstr "Animációk" #: ../../../wmaker-crm/WPrefs.app/Configurations.c:317 msgid "" "Disable/enable animations such as those shown\n" "for window miniaturization, shading etc." msgstr "" "Animációk ki/be kapcsolása (pl. ablak ikonná\n" "kicsinyítésnél, felhúzásnál, stb.)" #: ../../../wmaker-crm/WPrefs.app/Configurations.c:324 msgid "Superfluous" msgstr "Haszontalan" #: ../../../wmaker-crm/WPrefs.app/Configurations.c:335 msgid "" "Disable/enable `superfluous' features and\n" "animations. These include the `ghosting' of the\n" "dock when it's being moved to another side and\n" "the explosion animation when undocking icons." msgstr "" "További haszontalan jellemzők és animációk\n" "ki/bekapcsolása (pl. a dokk árnyképe mozgatáskor\n" "vagy az ikonok felrobbanása törléskor)" #: ../../../wmaker-crm/WPrefs.app/Configurations.c:348 msgid "Dithering colormap for 8bpp" msgstr "Színtérkép 256 színű megjelenítőknél" #: ../../../wmaker-crm/WPrefs.app/Configurations.c:350 msgid "" "Number of colors to reserve for Window Maker\n" "on displays that support only 8bpp (PseudoColor)." msgstr "" "A WindowMaker által fenntartott színek száma azokon\n" "a megjelenítőkön, amik csak 8 bites színmélységet támogatnak." #: ../../../wmaker-crm/WPrefs.app/Configurations.c:357 msgid "Disable dithering in any visual/depth" msgstr "Árnyalás tiltása minden visual/színmélység esetén" #: ../../../wmaker-crm/WPrefs.app/Configurations.c:378 msgid "" "More colors for\n" "applications" msgstr "" "Több szín az\n" "alkalmazásoknak" #: ../../../wmaker-crm/WPrefs.app/Configurations.c:385 msgid "" "More colors for\n" "Window Maker" msgstr "" "Több szín a\n" "Window\n" "Makernek" #: ../../../wmaker-crm/WPrefs.app/Configurations.c:434 msgid "Other Configurations" msgstr "Egyéb beállítások" #: ../../../wmaker-crm/WPrefs.app/Configurations.c:435 msgid "" "Animation speeds, titlebar styles, various option\n" "toggling and number of colors to reserve for\n" "Window Maker on 8bit displays." msgstr "" "Animáció sebessége, címsor stílusa, más opciók ki/be\n" "kapcsolása és a Window Maker által fenntartott színek\n" "száma 8 bites megjelenítőknél" #: ../../../wmaker-crm/WPrefs.app/Docks.c:55 msgid "Before auto-expansion" msgstr "Szétnyitás előtt" #: ../../../wmaker-crm/WPrefs.app/Docks.c:56 msgid "Before auto-collapsing" msgstr "Összecsukás előtt" #: ../../../wmaker-crm/WPrefs.app/Docks.c:57 msgid "Before auto-raising" msgstr "Előrehozás előtt" #: ../../../wmaker-crm/WPrefs.app/Docks.c:58 msgid "Before auto-lowering" msgstr "Hátravivés előtt" #: ../../../wmaker-crm/WPrefs.app/Docks.c:178 msgid "Clip autocollapsing delays" msgstr "Kapocs automatikus ikon elrejtés késleltetései" #: ../../../wmaker-crm/WPrefs.app/Docks.c:180 msgid "Clip autoraising delays" msgstr "Kapocs automatikus előre ugrás késleltetései" #: ../../../wmaker-crm/WPrefs.app/Docks.c:228 #: ../../../wmaker-crm/WPrefs.app/Focus.c:299 #: ../../../wmaker-crm/WPrefs.app/MouseSettings.c:561 msgid "ms" msgstr "ms" #: ../../../wmaker-crm/WPrefs.app/Docks.c:244 msgid "Dock/Clip/Drawer" msgstr "Dokk/Kapocs/Fiók" #: ../../../wmaker-crm/WPrefs.app/Docks.c:264 msgid "" "Disable/enable the application Dock (the\n" "vertical icon bar in the side of the screen)." msgstr "" "Alkalmazás dokk ki/bekapcsolása (a képernyő\n" "oldalán látható függőleges ikon sáv)." #: ../../../wmaker-crm/WPrefs.app/Docks.c:268 msgid "" "Disable/enable the Clip (that thing with\n" "a paper clip icon)." msgstr "" "A munkafelület Kapocs ki/bekapcsolása (az\n" "amin egy iratkapocs látható)" #: ../../../wmaker-crm/WPrefs.app/Docks.c:272 msgid "" "Disable/enable Drawers (a dock that stores\n" "application icons horizontally). The dock is required." msgstr "" "Fiókok ki/bekapcsolása (olyan dokk ami vízszintes\n" "irányban rendszerezi az ikonokat). A dokk kell hozzá." #: ../../../wmaker-crm/WPrefs.app/Docks.c:326 msgid "Dock Preferences" msgstr "Dokk beállítások" #: ../../../wmaker-crm/WPrefs.app/Docks.c:328 msgid "" "Dock and clip features.\n" "Enable/disable the Dock and Clip, and tune some delays." msgstr "" "A dokk és munkafelület Kapocs beállításai. Ki/bekapcsolás\n" "és késleltetések hangolása." #: ../../../wmaker-crm/WPrefs.app/Expert.c:41 msgid "Disable miniwindows (icons for minimized windows). For use with KDE/GNOME." msgstr "Miniablakok (ikonállapotú ablakok) letiltása. KDE/GNOME-hoz." #. default: #: ../../../wmaker-crm/WPrefs.app/Expert.c:44 msgid "Do not set non-WindowMaker specific parameters (do not use xset)." msgstr "Window Makertől független beállítások tiltása (ne használjon xset-et)." #. default: #: ../../../wmaker-crm/WPrefs.app/Expert.c:47 msgid "Automatically save session when exiting Window Maker." msgstr "Munkafelület állapot (session) automatikus mentése kilépéskor." #. default: #: ../../../wmaker-crm/WPrefs.app/Expert.c:50 msgid "Use SaveUnder in window frames, icons, menus and other objects." msgstr "\"SaveUnder\" használata keretek, ikonok, menük és más objektumok alatt." #. default: #: ../../../wmaker-crm/WPrefs.app/Expert.c:53 msgid "Disable confirmation panel for the Kill command." msgstr "Kilövés parancs végrehajtása megerősítés nélkül." #. default: #: ../../../wmaker-crm/WPrefs.app/Expert.c:56 msgid "Disable selection animation for selected icons." msgstr "Az ikon kiválasztás animáció letiltása." #. default: #: ../../../wmaker-crm/WPrefs.app/Expert.c:59 msgid "Smooth font edges (needs restart)." msgstr "Betűk élsimítása (újraindítás szükséges)." #. default: #: ../../../wmaker-crm/WPrefs.app/Expert.c:62 msgid "Cycle windows only on the active head." msgstr "Ablakok közötti váltás csak az aktív képernyőn belül." #. default: #: ../../../wmaker-crm/WPrefs.app/Expert.c:65 msgid "Ignore minimized windows when cycling." msgstr "Ikonállapotú ablakok kihagyása ablak váltás közben." #. default: #: ../../../wmaker-crm/WPrefs.app/Expert.c:68 msgid "Show workspace title on Clip." msgstr "A munkafelület neve megjelenik a Kapcson." #. default: #: ../../../wmaker-crm/WPrefs.app/Expert.c:71 msgid "Highlight the icon of the application when it has the focus." msgstr "A fókuszban levő alkalmazás ikonjának kivilágítása." #: ../../../wmaker-crm/WPrefs.app/Expert.c:75 msgid "Enable keyboard language switch button in window titlebars." msgstr "Ablakonként megadható billentyűzetkiosztás." #: ../../../wmaker-crm/WPrefs.app/Expert.c:181 msgid "Expert User Preferences" msgstr "Haladó beállítások" #: ../../../wmaker-crm/WPrefs.app/Expert.c:183 msgid "" "Options for people who know what they're doing...\n" "Also has some other misc. options." msgstr "" "Beállítási lehetőségek azoknak, akik tudják mit csinálnak...\n" "Illetve néhány, más kategóriába nem illő beállítás is található itt." #: ../../../wmaker-crm/WPrefs.app/Focus.c:75 #, c-format msgid "bad option value %s for option FocusMode. Using default Manual" msgstr "rossz érték a FocusMode-nál: \"%s\". Az alapértelmezett manuális módot használom." #: ../../../wmaker-crm/WPrefs.app/Focus.c:87 #, c-format msgid "bad option value %s for option ColormapMode. Using default Auto" msgstr "rossz érték a ColorMapMode-nál: \"%s\". Az alapértelmezett automatikus módot használom." #: ../../../wmaker-crm/WPrefs.app/Focus.c:153 #: ../../../wmaker-crm/WPrefs.app/Preferences.c:71 #: ../../../wmaker-crm/WPrefs.app/WindowHandling.c:123 #: ../../../wmaker-crm/WPrefs.app/WindowHandling.c:142 #, c-format msgid "OFF" msgstr "KI" #: ../../../wmaker-crm/WPrefs.app/Focus.c:198 msgid "Input Focus Mode" msgstr "Beviteli fókusz mód" #: ../../../wmaker-crm/WPrefs.app/Focus.c:206 msgid "Manual: Click on the window to set keyboard input focus" msgstr "Manuális: Fókusz váltáshoz az ablakra kell kattintani" #: ../../../wmaker-crm/WPrefs.app/Focus.c:212 msgid "Auto: Set keyboard input focus to the window under the mouse pointer" msgstr "Automatikus: A fókusz mindig azé az ablaké lesz, amely felett az egér mutató áll" #: ../../../wmaker-crm/WPrefs.app/Focus.c:225 msgid "Install colormap from the window..." msgstr "Színtérkép ahhoz az ablakhoz..." #: ../../../wmaker-crm/WPrefs.app/Focus.c:230 msgid "...that has the input focus" msgstr "...amelyiké a beviteli fókusz" #: ../../../wmaker-crm/WPrefs.app/Focus.c:235 msgid "...that's under the mouse pointer" msgstr "...amelyikre az egér mutat" #: ../../../wmaker-crm/WPrefs.app/Focus.c:244 msgid "Automatic Window Raise Delay" msgstr "Automatikus ablak előrerakás késleltetése" #: ../../../wmaker-crm/WPrefs.app/Focus.c:316 msgid "Do not let applications receive the click used to focus windows" msgstr "A fókuszálásra használt egérkattintást ne kapja meg az alkalmazás" #: ../../../wmaker-crm/WPrefs.app/Focus.c:321 msgid "Automatically focus new windows" msgstr "Új ablakok automatikusan fókuszba kerülnek" #: ../../../wmaker-crm/WPrefs.app/Focus.c:326 msgid "Raise window when switching focus with keyboard" msgstr "Billentyűvel váltott fókusznál az aktív ablak előtérbe is kerül" #: ../../../wmaker-crm/WPrefs.app/Focus.c:342 msgid "Window Focus Preferences" msgstr "Fókusz beállítások" #: ../../../wmaker-crm/WPrefs.app/Focus.c:343 msgid "Keyboard focus switching policy and related options." msgstr "" "Billentyűzet fókuszának és 8 bites megjelenítőkön a színtérkép\n" "váltásának beállításai és más kapcsolódó opciók." #: ../../../wmaker-crm/WPrefs.app/FontSimple.c:99 msgid "Window Title" msgstr "Ablak címsor felirat" #: ../../../wmaker-crm/WPrefs.app/FontSimple.c:101 msgid "Menu Text" msgstr "Menüpont szöveg" #: ../../../wmaker-crm/WPrefs.app/FontSimple.c:102 msgid "Icon Title" msgstr "Ikon címe" #: ../../../wmaker-crm/WPrefs.app/FontSimple.c:103 msgid "Clip Title" msgstr "Kapocs felirata" #: ../../../wmaker-crm/WPrefs.app/FontSimple.c:104 msgid "Desktop Caption" msgstr "Munkafelület neve" #: ../../../wmaker-crm/WPrefs.app/FontSimple.c:647 msgid "Sample Text" msgstr "Példa:" #: ../../../wmaker-crm/WPrefs.app/FontSimple.c:664 msgid "Family" msgstr "Típuscsalád" #: ../../../wmaker-crm/WPrefs.app/FontSimple.c:690 msgid "Style" msgstr "Stílus" #: ../../../wmaker-crm/WPrefs.app/FontSimple.c:693 msgid "Size" msgstr "Méret" #: ../../../wmaker-crm/WPrefs.app/FontSimple.c:725 msgid "Font Configuration" msgstr "Betűtípus beállítások" #: ../../../wmaker-crm/WPrefs.app/FontSimple.c:727 msgid "Configure fonts for Window Maker titlebars, menus etc." msgstr "A Window Maker címsorok, menük, stb. betűtípusainak beállításai." #: ../../../wmaker-crm/WPrefs.app/Icons.c:166 msgid "Icon Positioning" msgstr "Ikonok elhelyezése" #: ../../../wmaker-crm/WPrefs.app/Icons.c:212 msgid "Icon Size" msgstr "Ikonméret" #: ../../../wmaker-crm/WPrefs.app/Icons.c:214 msgid "The size of the dock/application icon and miniwindows" msgstr "A dokk/alkalmazás ikonok és miniablakok mérete" #: ../../../wmaker-crm/WPrefs.app/Icons.c:231 msgid "Iconification Animation" msgstr "Animáció ikonállapotba tételnél" #: ../../../wmaker-crm/WPrefs.app/Icons.c:242 msgid "Shrinking/Zooming" msgstr "Zsugorodás/Nagyítás" #: ../../../wmaker-crm/WPrefs.app/Icons.c:243 msgid "Spinning/Twisting" msgstr "Pörgés/Forgás" #: ../../../wmaker-crm/WPrefs.app/Icons.c:244 msgid "3D-flipping" msgstr "3D-átfordulás" #: ../../../wmaker-crm/WPrefs.app/Icons.c:245 #: ../../../wmaker-crm/WPrefs.app/MouseSettings.c:790 #: ../../../wmaker-crm/WPrefs.app/MouseSettings.c:795 msgid "None" msgstr "Nincs" #: ../../../wmaker-crm/WPrefs.app/Icons.c:258 msgid "Auto-arrange icons" msgstr "Ikonok automatikus elrendezése" #: ../../../wmaker-crm/WPrefs.app/Icons.c:260 msgid "Keep icons and miniwindows arranged all the time." msgstr "Ikonok és miniablakok szétválogatása." #: ../../../wmaker-crm/WPrefs.app/Icons.c:265 msgid "Omnipresent miniwindows" msgstr "Miniablakok mindenütt láthatóak" #: ../../../wmaker-crm/WPrefs.app/Icons.c:267 msgid "Make miniwindows be present in all workspaces." msgstr "A miniablakok minden munkafelületen jelenjenek meg." #: ../../../wmaker-crm/WPrefs.app/Icons.c:272 msgid "Single click activation" msgstr "Aktiválás egy kattintással" #: ../../../wmaker-crm/WPrefs.app/Icons.c:274 msgid "Launch applications and restore windows with a single click." msgstr "Alkalmazások indítása és miniablakok visszaállítása egy kattintással." #: ../../../wmaker-crm/WPrefs.app/Icons.c:329 msgid "Icon Preferences" msgstr "Ikonjellemzők" #: ../../../wmaker-crm/WPrefs.app/Icons.c:331 msgid "" "Icon/Miniwindow handling options. Icon positioning\n" "area, sizes of icons, miniaturization animation style." msgstr "" "Ikonok/miniablakok kezelésének beállítása. Ikonok\n" "elhelyezése, mérete, lekicsinyítés animációja." #: ../../../wmaker-crm/WPrefs.app/KeyboardSettings.c:68 msgid "Initial Key Repeat" msgstr "Kezdeti billentyű-ismétlés" #: ../../../wmaker-crm/WPrefs.app/KeyboardSettings.c:109 msgid "Key Repeat Rate" msgstr "Billentyű-ismétlés sebessége" #: ../../../wmaker-crm/WPrefs.app/KeyboardSettings.c:149 msgid "Type here to test" msgstr "Itt tesztelheted:" #: ../../../wmaker-crm/WPrefs.app/KeyboardSettings.c:164 msgid "Keyboard Preferences" msgstr "Billentyűzet beállítások" #: ../../../wmaker-crm/WPrefs.app/KeyboardSettings.c:166 msgid "Not done" msgstr "Nincs kész" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:72 msgid "Open applications menu" msgstr "Alkalmazások menü megnyitása" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:73 msgid "Open window list menu" msgstr "Ablakok menü megnyitása" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:74 msgid "Open window commands menu" msgstr "Ablak-parancsok menü megnyitása" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:75 msgid "Hide active application" msgstr "Aktuális alkalmazás elrejtése" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:76 msgid "Hide other applications" msgstr "Többi alkalmazás elrejtése" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:77 msgid "Miniaturize active window" msgstr "Aktuális ablak ikonállapotba tétele" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:78 msgid "Miniaturize all windows" msgstr "Az összes ablak ikonállapotba tétele" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:79 msgid "Close active window" msgstr "Aktuális ablak bezárása" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:80 msgid "Maximize active window" msgstr "Aktuális ablak teljes méretűre" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:81 msgid "Maximize active window vertically" msgstr "Aktuális ablak fűggölegesen teljes méretűre" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:82 msgid "Maximize active window horizontally" msgstr "Aktuális ablak vízszintesen teljes méretűre" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:83 msgid "Maximize active window left half" msgstr "Aktuális ablak balra teljes méretűre" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:84 msgid "Maximize active window right half" msgstr "Aktuális ablak jobbra teljes méretűre" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:85 msgid "Maximize active window top half" msgstr "Aktuális ablak felül teljes méretűre" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:86 msgid "Maximize active window bottom half" msgstr "Aktuális ablak alul teljes méretűre" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:87 msgid "Maximize active window left top corner" msgstr "Aktuális ablak bal felül teljes méretűre" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:88 msgid "Maximize active window right top corner" msgstr "Aktuális ablak jobb felül teljes méretűre" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:89 msgid "Maximize active window left bottom corner" msgstr "Aktuális ablak balra alul teljes méretűre" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:90 msgid "Maximize active window right bottom corner" msgstr "Aktuális ablak jobbra alul teljes méretűre" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:91 msgid "Maximus: Tiled maximization " msgstr "Csempézve teljes méretűre" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:92 msgid "Raise active window" msgstr "Aktuális ablak előtérbe" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:93 msgid "Lower active window" msgstr "Aktuális ablak háttérbe" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:94 msgid "Raise/Lower window under mouse pointer" msgstr "Egér mutató alatti ablak előtérbe/háttérbe" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:95 msgid "Shade active window" msgstr "Aktuális ablak felhúzása" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:96 msgid "Move/Resize active window" msgstr "Aktuális ablak mozgatása/átméretezése" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:97 msgid "Select active window" msgstr "Aktuális ablak kijelölése" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:98 msgid "Focus next window" msgstr "Fókusz a következő ablakra" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:99 msgid "Focus previous window" msgstr "Fókusz az előző ablakra" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:100 msgid "Focus next group window" msgstr "Fókusz a következő ablakra csoporton belül" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:101 msgid "Focus previous group window" msgstr "Fókusz az előző ablakra csoporton belül" #. Workspace Related #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:104 msgid "Switch to next workspace" msgstr "Váltás a következő munkafelületre" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:105 msgid "Switch to previous workspace" msgstr "Váltás az előző munkafelületre" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:106 msgid "Switch to last used workspace" msgstr "Váltás az utolsó munkafelületre" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:107 msgid "Switch to next ten workspaces" msgstr "Váltás a következő tíz munkafelületre" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:108 msgid "Switch to previous ten workspaces" msgstr "Váltás az előző tíz munkafelületre" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:109 msgid "Switch to workspace 1" msgstr "Váltás az első munkafelületre" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:110 msgid "Switch to workspace 2" msgstr "Váltás a második munkafelületre" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:111 msgid "Switch to workspace 3" msgstr "Váltás a harmadik munkafelületre" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:112 msgid "Switch to workspace 4" msgstr "Váltás a negyedik munkafelületre" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:113 msgid "Switch to workspace 5" msgstr "Váltás az ötödik munkafelületre" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:114 msgid "Switch to workspace 6" msgstr "Váltás a hatodik munkafelületre" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:115 msgid "Switch to workspace 7" msgstr "Váltás a hetedik munkafelületre" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:116 msgid "Switch to workspace 8" msgstr "Váltás a nyolcadik munkafelületre" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:117 msgid "Switch to workspace 9" msgstr "Váltás a kilencedik munkafelületre" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:118 msgid "Switch to workspace 10" msgstr "Váltás a tizedik munkafelületre" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:119 msgid "Move window to next workspace" msgstr "Ablak a következő munkafelületre" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:120 msgid "Move window to previous workspace" msgstr "Ablak az előző munkafelületre" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:121 msgid "Move window to last used workspace" msgstr "Ablak az utolsó munkafelületre" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:122 msgid "Move window to next ten workspaces" msgstr "Ablak a következő tíz munkafelületre" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:123 msgid "Move window to previous ten workspaces" msgstr "Ablak az előző tíz munkafelületre" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:124 msgid "Move window to workspace 1" msgstr "Ablak az első munkafelületre" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:125 msgid "Move window to workspace 2" msgstr "Ablak a második munkafelületre" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:126 msgid "Move window to workspace 3" msgstr "Ablak a harmadik munkafelületre" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:127 msgid "Move window to workspace 4" msgstr "Ablak a negyedik munkafelületre" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:128 msgid "Move window to workspace 5" msgstr "Ablak az ötödik munkafelületre" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:129 msgid "Move window to workspace 6" msgstr "Ablak a hatodik munkafelületre" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:130 msgid "Move window to workspace 7" msgstr "Ablak a hetedik munkafelületre" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:131 msgid "Move window to workspace 8" msgstr "Ablak a nyolcadik munkafelületre" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:132 msgid "Move window to workspace 9" msgstr "Ablak a kilencedik munkafelületre" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:133 msgid "Move window to workspace 10" msgstr "Ablak a tizedik munkafelületre" #. Window Selection #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:136 msgid "Shortcut for window 1" msgstr "Gyorsbillentyű az első ablakra" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:137 msgid "Shortcut for window 2" msgstr "Gyorsbillentyű a második ablakra" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:138 msgid "Shortcut for window 3" msgstr "Gyorsbillentyű a harmadik ablakra" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:139 msgid "Shortcut for window 4" msgstr "Gyorsbillentyű a negyedik ablakra" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:140 msgid "Shortcut for window 5" msgstr "Gyorsbillentyű az ötödik ablakra" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:141 msgid "Shortcut for window 6" msgstr "Gyorsbillentyű a hatodik ablakra" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:142 msgid "Shortcut for window 7" msgstr "Gyorsbillentyű a hetedik ablakra" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:143 msgid "Shortcut for window 8" msgstr "Gyorsbillentyű a nyolcadik ablakra" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:144 msgid "Shortcut for window 9" msgstr "Gyorsbillentyű a kilencedik ablakra" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:145 msgid "Shortcut for window 10" msgstr "Gyorsbillentyű a tizedik ablakra" #. Misc. #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:148 msgid "Launch new instance of application" msgstr "Alkalmazás új példányának indítása" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:149 msgid "Switch to Next Screen/Monitor" msgstr "Következő képernyőre/monitorra vált" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:150 msgid "Raise/Lower Dock" msgstr "Dokk előtérbe/háttérbe" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:151 msgid "Raise/Lower Clip" msgstr "Kapocs előtérbe/háttérbe" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:153 msgid "Toggle keyboard language" msgstr "Billentyűzet-kiosztás váltása" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:350 #: ../../../wmaker-crm/WPrefs.app/Menu.c:275 #: ../../../wmaker-crm/WPrefs.app/TexturePanel.c:1408 msgid "Cancel" msgstr "Mégsem" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:352 msgid "Press the desired shortcut key(s) or click Cancel to stop capturing." msgstr "Nyomd le a kívánt billentyű kombinációt vagy kattints a Mégsem gombra a tanulás leállításához" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:371 #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:541 #: ../../../wmaker-crm/WPrefs.app/Menu.c:285 #: ../../../wmaker-crm/WPrefs.app/Menu.c:733 msgid "Capture" msgstr "Megtanul" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:372 #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:549 msgid "Click on Capture to interactively define the shortcut key." msgstr "Kattints a \"Megtanul\" gombra ha interaktívan akarod megadni a gyorsbillentyű kombinációt." #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:498 msgid "Actions" msgstr "Műveletek" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:525 msgid "Shortcut" msgstr "Gyorsbillentyű" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:535 #: ../../../wmaker-crm/WPrefs.app/Menu.c:739 msgid "Clear" msgstr "Töröl" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:590 msgid "Keyboard Shortcut Preferences" msgstr "Gyorsbillentyű beállítások" #: ../../../wmaker-crm/WPrefs.app/KeyboardShortcuts.c:592 msgid "" "Change the keyboard shortcuts for actions such\n" "as changing workspaces and opening menus." msgstr "" "Gyorsbillentyű kombinációk hozzárendelése műveletekhez,\n" "mint például munkafelület váltás, menük megnyitása, stb." #: ../../../wmaker-crm/WPrefs.app/Menu.c:251 msgid "Select Program" msgstr "Válassz programot" #: ../../../wmaker-crm/WPrefs.app/Menu.c:413 msgid "New Items" msgstr "Új menüpontok" #: ../../../wmaker-crm/WPrefs.app/Menu.c:414 msgid "Sample Commands" msgstr "Minta parancsok" #: ../../../wmaker-crm/WPrefs.app/Menu.c:415 msgid "Sample Submenus" msgstr "Minta almenük" #: ../../../wmaker-crm/WPrefs.app/Menu.c:427 msgid "Run Program" msgstr "Program futtatása" #: ../../../wmaker-crm/WPrefs.app/Menu.c:428 msgid "Internal Command" msgstr "Beépített parancs" #: ../../../wmaker-crm/WPrefs.app/Menu.c:429 msgid "Submenu" msgstr "Almenü" #: ../../../wmaker-crm/WPrefs.app/Menu.c:430 msgid "External Submenu" msgstr "Külső almenü" #: ../../../wmaker-crm/WPrefs.app/Menu.c:431 msgid "Generated Submenu" msgstr "Generált almenü" #: ../../../wmaker-crm/WPrefs.app/Menu.c:432 msgid "Generated PL Menu" msgstr "Generált PL menü" #: ../../../wmaker-crm/WPrefs.app/Menu.c:433 msgid "Directory Contents" msgstr "Könyvtár tartalma" #: ../../../wmaker-crm/WPrefs.app/Menu.c:434 msgid "Workspace Menu" msgstr "Munkafelület menü" #: ../../../wmaker-crm/WPrefs.app/Menu.c:435 #: ../../../wmaker-crm/WPrefs.app/MouseSettings.c:792 msgid "Window List Menu" msgstr "Ablakok menü" #: ../../../wmaker-crm/WPrefs.app/Menu.c:454 msgid "XTerm" msgstr "XTerm" #: ../../../wmaker-crm/WPrefs.app/Menu.c:457 msgid "rxvt" msgstr "rxvt" #: ../../../wmaker-crm/WPrefs.app/Menu.c:460 msgid "ETerm" msgstr "ETerm" #: ../../../wmaker-crm/WPrefs.app/Menu.c:463 msgid "Run..." msgstr "Futtatás..." #: ../../../wmaker-crm/WPrefs.app/Menu.c:464 #, c-format msgid "%A(Run,Type command to run)" msgstr "%A(Futtatás,Adj meg egy parancsot)" #: ../../../wmaker-crm/WPrefs.app/Menu.c:466 msgid "Firefox" msgstr "Firefox" #: ../../../wmaker-crm/WPrefs.app/Menu.c:469 msgid "gimp" msgstr "gimp" #: ../../../wmaker-crm/WPrefs.app/Menu.c:472 msgid "epic" msgstr "epic" #: ../../../wmaker-crm/WPrefs.app/Menu.c:475 msgid "ee" msgstr "ee" #: ../../../wmaker-crm/WPrefs.app/Menu.c:478 msgid "xv" msgstr "xv" #: ../../../wmaker-crm/WPrefs.app/Menu.c:481 msgid "Evince" msgstr "Evince" #: ../../../wmaker-crm/WPrefs.app/Menu.c:484 msgid "ghostview" msgstr "ghostview" #: ../../../wmaker-crm/WPrefs.app/Menu.c:487 #: ../../../wmaker-crm/WPrefs.app/Menu.c:758 msgid "Exit Window Maker" msgstr "Kilépés" #: ../../../wmaker-crm/WPrefs.app/Menu.c:509 msgid "Debian Menu" msgstr "Debian menü" #: ../../../wmaker-crm/WPrefs.app/Menu.c:512 msgid "RedHat Menu" msgstr "RedHat menü" #: ../../../wmaker-crm/WPrefs.app/Menu.c:515 msgid "Menu Conectiva" msgstr "Conectiva menü" #: ../../../wmaker-crm/WPrefs.app/Menu.c:518 #: ../../../wmaker-crm/WPrefs.app/Themes.c:211 msgid "Themes" msgstr "Témák" #: ../../../wmaker-crm/WPrefs.app/Menu.c:524 msgid "Bg Images (scale)" msgstr "Hátterek (nagyít)" #: ../../../wmaker-crm/WPrefs.app/Menu.c:530 msgid "Bg Images (tile)" msgstr "Hátterek (csempéz)" #: ../../../wmaker-crm/WPrefs.app/Menu.c:536 msgid "Assorted XTerms" msgstr "Mindenféle XTerm" #: ../../../wmaker-crm/WPrefs.app/Menu.c:538 msgid "XTerm Yellow on Blue" msgstr "XTerm kék-sárga" #: ../../../wmaker-crm/WPrefs.app/Menu.c:541 msgid "XTerm White on Black" msgstr "XTerm fekete-fehér" #: ../../../wmaker-crm/WPrefs.app/Menu.c:544 msgid "XTerm Black on White" msgstr "XTerm fehér-fekete" #: ../../../wmaker-crm/WPrefs.app/Menu.c:547 msgid "XTerm Black on Beige" msgstr "XTerm bézs-fekete" #: ../../../wmaker-crm/WPrefs.app/Menu.c:550 msgid "XTerm White on Green" msgstr "XTerm zöld-fehér" #: ../../../wmaker-crm/WPrefs.app/Menu.c:553 msgid "XTerm White on Olive" msgstr "XTerm oliva-fehér" #: ../../../wmaker-crm/WPrefs.app/Menu.c:556 msgid "XTerm Blue on Blue" msgstr "XTerm kék-kékkel" #: ../../../wmaker-crm/WPrefs.app/Menu.c:559 msgid "XTerm BIG FONTS" msgstr "XTerm NAGY BETŰ" #: ../../../wmaker-crm/WPrefs.app/Menu.c:580 msgid "Program to Run" msgstr "Futtatandó program" #: ../../../wmaker-crm/WPrefs.app/Menu.c:590 msgid "Browse" msgstr "Választ" #: ../../../wmaker-crm/WPrefs.app/Menu.c:599 msgid "Run the program inside a Xterm" msgstr "Program futtatása Xterm-ben" #: ../../../wmaker-crm/WPrefs.app/Menu.c:608 msgid "Path for Menu" msgstr "Menü útvonal" #: ../../../wmaker-crm/WPrefs.app/Menu.c:619 msgid "" "Enter the path for a file containing a menu\n" "or a list of directories with the programs you\n" "want to have listed in the menu. Ex:\n" "~/GNUstep/Library/WindowMaker/menu\n" "or\n" "/usr/bin ~/xbin" msgstr "" "Add meg egy menü-fájl útvonalát vagy könyvtárak\n" "listáját amelyekben található programokból fog\n" "állni a menü. Pl.\n" "~/GNUstep/Library/WindowMaker/menu\n" "vagy\n" "/usr/bin ~/bin" #: ../../../wmaker-crm/WPrefs.app/Menu.c:631 #: ../../../wmaker-crm/WPrefs.app/Menu.c:656 msgid "Command" msgstr "Parancs" #: ../../../wmaker-crm/WPrefs.app/Menu.c:642 msgid "" "Enter a command that outputs a menu\n" "definition to stdout when invoked." msgstr "" "Adj meg egy olyan parancsot ami egy menü\n" "definíciót ad a szabványos kimenetén." #: ../../../wmaker-crm/WPrefs.app/Menu.c:647 #: ../../../wmaker-crm/WPrefs.app/Menu.c:672 msgid "" "Cache menu contents after opening for\n" "the first time" msgstr "" "Menütartalom újrahasználata további\n" "megnyitásokkor (cache)" #: ../../../wmaker-crm/WPrefs.app/Menu.c:667 msgid "" "Enter a command that outputs a proplist menu\n" "definition to stdout when invoked." msgstr "" "Adj meg egy olyan parancsot ami egy proplist\n" "menü definíciót ad a standard kimenetén." #: ../../../wmaker-crm/WPrefs.app/Menu.c:681 msgid "Command to Open Files" msgstr "Parancs a fájlok megnyitásához" #: ../../../wmaker-crm/WPrefs.app/Menu.c:692 msgid "" "Enter the command you want to use to open the\n" "files in the directories listed below." msgstr "" "A lent felsorolt könyvtárakban található fájlok\n" "megnyitása az itt megadott paranccsal." #: ../../../wmaker-crm/WPrefs.app/Menu.c:700 msgid "Directories with Files" msgstr "Fájlok könyvtárai" #: ../../../wmaker-crm/WPrefs.app/Menu.c:711 msgid "Strip extensions from file names" msgstr "Fájlnév kiterjesztések levágása" #: ../../../wmaker-crm/WPrefs.app/Menu.c:722 msgid "Keyboard Shortcut" msgstr "Gyorsbillentyű" #: ../../../wmaker-crm/WPrefs.app/Menu.c:754 msgid "Arrange Icons" msgstr "Ikonok elrendezése" #: ../../../wmaker-crm/WPrefs.app/Menu.c:755 msgid "Hide All Windows Except For The Focused One" msgstr "Az aktív ablakon kívül a többi elrejtése" #: ../../../wmaker-crm/WPrefs.app/Menu.c:756 msgid "Show All Windows" msgstr "Minden ablak mutatása" #: ../../../wmaker-crm/WPrefs.app/Menu.c:759 msgid "Exit X Session" msgstr "Kilépés az X Sessionból" #: ../../../wmaker-crm/WPrefs.app/Menu.c:760 msgid "Restart Window Maker" msgstr "Window Maker újraindítása" #: ../../../wmaker-crm/WPrefs.app/Menu.c:761 msgid "Start Another Window Manager : (" msgstr "Másik ablakkezelő indítása : (" #: ../../../wmaker-crm/WPrefs.app/Menu.c:763 msgid "Save Current Session" msgstr "Session mentése" #: ../../../wmaker-crm/WPrefs.app/Menu.c:764 msgid "Clear Saved Session" msgstr "Session törlése" #: ../../../wmaker-crm/WPrefs.app/Menu.c:765 msgid "Refresh Screen" msgstr "Képernyő frissítése" #: ../../../wmaker-crm/WPrefs.app/Menu.c:766 msgid "Open Info Panel" msgstr "Információs panel" #: ../../../wmaker-crm/WPrefs.app/Menu.c:767 msgid "Open Copyright Panel" msgstr "Szerzői jogok panel" #: ../../../wmaker-crm/WPrefs.app/Menu.c:772 msgid "Window Manager to Start" msgstr "Indítandó ablakkezelő" #: ../../../wmaker-crm/WPrefs.app/Menu.c:785 msgid "Do not confirm action." msgstr "Nem kér megerősítést" #: ../../../wmaker-crm/WPrefs.app/Menu.c:792 msgid "" "Instructions:\n" "\n" " - drag items from the left to the menu to add new items\n" " - drag items out of the menu to remove items\n" " - drag items in menu to change their position\n" " - drag items with Control pressed to copy them\n" " - double click in a menu item to change the label\n" " - click on a menu item to change related information" msgstr "" "Használati útmutató:\n" "\n" " - új elem hozzáadása: húzd át a bal oldali oszlopból a\n" " menübe\n" " - elem eltávolítása: húzd ki a menüből\n" " - elemek sorrendjének változtatása: húzd át máshova a\n" " menüben\n" " - menüpont lemásolása: húzd a Control gombot lenyomva\n" " tartva\n" " - szöveg megváltoztatása: kattins rá duplán\n" " - menüpont szerkesztése: kattints rá egyszer" #: ../../../wmaker-crm/WPrefs.app/Menu.c:1031 #, c-format msgid "unknown command '%s' in menu" msgstr "ismeretlen parancs ('%s') a menüben" #: ../../../wmaker-crm/WPrefs.app/Menu.c:1055 msgid ": Execute Program" msgstr ": Program futtatás" #: ../../../wmaker-crm/WPrefs.app/Menu.c:1059 msgid ": Perform Internal Command" msgstr ": Belső parancs végrehajtás" #: ../../../wmaker-crm/WPrefs.app/Menu.c:1063 msgid ": Open a Submenu" msgstr ": Almenü megnyitás" #: ../../../wmaker-crm/WPrefs.app/Menu.c:1067 msgid ": Program Generated Submenu" msgstr ": Program által generált almenü" #: ../../../wmaker-crm/WPrefs.app/Menu.c:1071 msgid ": Program Generated Proplist Submenu" msgstr ": Program által generált proplist almenü" #: ../../../wmaker-crm/WPrefs.app/Menu.c:1075 msgid ": Directory Contents Menu" msgstr ": almenü könyvtár tartalmából" #: ../../../wmaker-crm/WPrefs.app/Menu.c:1079 msgid ": Open Workspaces Submenu" msgstr ": Munkafelületek almenü megnyitása" #: ../../../wmaker-crm/WPrefs.app/Menu.c:1083 msgid ": Open Window List Submenu" msgstr ": Ablakok almenü megnyitása" #: ../../../wmaker-crm/WPrefs.app/Menu.c:1299 msgid "Remove Submenu" msgstr "Almenü törlése" #: ../../../wmaker-crm/WPrefs.app/Menu.c:1300 msgid "" "Removing this item will destroy all items inside\n" "the submenu. Do you really want to do that?" msgstr "" "Ennek az elemnek az eltávolítása törli az almenüben\n" "levő összes elemet is. Biztos ezt akarod?" #: ../../../wmaker-crm/WPrefs.app/Menu.c:1302 msgid "Yes" msgstr "Igen" #: ../../../wmaker-crm/WPrefs.app/Menu.c:1302 msgid "No" msgstr "Nem" #: ../../../wmaker-crm/WPrefs.app/Menu.c:1302 msgid "Yes, don't ask again" msgstr "Igen, a többire is" #: ../../../wmaker-crm/WPrefs.app/Menu.c:1440 #, c-format msgid "Invalid menu command \"%s\" with label \"%s\" cleared" msgstr "Törölve: érvénytelen menü parancs \"%s\", címke: \"%s\"" #: ../../../wmaker-crm/WPrefs.app/Menu.c:1443 #: ../../../wmaker-crm/WPrefs.app/Menu.c:1501 #: ../../../wmaker-crm/WPrefs.app/WPrefs.c:687 msgid "Warning" msgstr "Figyelmeztetés" #: ../../../wmaker-crm/WPrefs.app/Menu.c:1443 #: ../../../wmaker-crm/WPrefs.app/Menu.c:1476 #: ../../../wmaker-crm/WPrefs.app/MouseSettings.c:123 #: ../../../wmaker-crm/WPrefs.app/MouseSettings.c:143 #: ../../../wmaker-crm/WPrefs.app/TexturePanel.c:566 #: ../../../wmaker-crm/WPrefs.app/TexturePanel.c:644 #: ../../../wmaker-crm/WPrefs.app/TexturePanel.c:1402 #: ../../../wmaker-crm/WPrefs.app/Themes.c:84 #: ../../../wmaker-crm/WPrefs.app/WPrefs.c:636 #: ../../../wmaker-crm/WPrefs.app/WPrefs.c:640 #: ../../../wmaker-crm/WPrefs.app/WPrefs.c:660 #: ../../../wmaker-crm/WPrefs.app/WPrefs.c:672 #: ../../../wmaker-crm/WPrefs.app/WPrefs.c:678 #: ../../../wmaker-crm/WPrefs.app/WPrefs.c:687 #: ../../../wmaker-crm/WPrefs.app/WPrefs.c:718 #: ../../../wmaker-crm/WPrefs.app/WPrefs.c:722 msgid "OK" msgstr "OK" #: ../../../wmaker-crm/WPrefs.app/Menu.c:1472 #, c-format msgid "Could not open default menu from '%s'" msgstr "Nem tudom megnyitni az alapértelmezett menüt innen: %s" #: ../../../wmaker-crm/WPrefs.app/Menu.c:1476 #: ../../../wmaker-crm/WPrefs.app/MouseSettings.c:121 #: ../../../wmaker-crm/WPrefs.app/MouseSettings.c:140 #: ../../../wmaker-crm/WPrefs.app/TexturePanel.c:566 #: ../../../wmaker-crm/WPrefs.app/TexturePanel.c:642 #: ../../../wmaker-crm/WPrefs.app/Themes.c:83 #: ../../../wmaker-crm/WPrefs.app/WPrefs.c:636 #: ../../../wmaker-crm/WPrefs.app/WPrefs.c:640 #: ../../../wmaker-crm/WPrefs.app/WPrefs.c:657 #: ../../../wmaker-crm/WPrefs.app/WPrefs.c:668 #: ../../../wmaker-crm/WPrefs.app/WPrefs.c:678 #: ../../../wmaker-crm/WPrefs.app/WPrefs.c:718 #: ../../../wmaker-crm/WPrefs.app/WPrefs.c:722 msgid "Error" msgstr "Hiba" #: ../../../wmaker-crm/WPrefs.app/Menu.c:1502 msgid "" "The menu file format currently in use is not supported\n" "by this tool. Do you want to discard the current menu\n" "to use this tool?" msgstr "" "A menü formátumot amit jelenleg használsz ez a program\n" "nem támogatja. Akarod törölni a jelenlegi menüdet és újat\n" "készíteni ezzel a programmal?" #: ../../../wmaker-crm/WPrefs.app/Menu.c:1505 msgid "Yes, Discard and Update" msgstr "Igen, töröld és frissítsd" #: ../../../wmaker-crm/WPrefs.app/Menu.c:1505 msgid "No, Keep Current Menu" msgstr "Nem, tartsd meg a mostani menüt" #: ../../../wmaker-crm/WPrefs.app/Menu.c:1746 msgid "Applications Menu Definition" msgstr "Alkalmazások menü" #: ../../../wmaker-crm/WPrefs.app/Menu.c:1748 msgid "Edit the menu for launching applications." msgstr "Az indítható alkalmazások menüjének szerkesztése" #: ../../../wmaker-crm/WPrefs.app/MenuPreferences.c:105 msgid "Menu Scrolling Speed" msgstr "Menügörgetés sebessége" #: ../../../wmaker-crm/WPrefs.app/MenuPreferences.c:153 msgid "Submenu Alignment" msgstr "Almenü elrendezés" #: ../../../wmaker-crm/WPrefs.app/MenuPreferences.c:197 msgid "Always open submenus inside the screen, instead of scrolling." msgstr "Az almenük görgetés helyett mindig a képernyőn belül nyílnak meg." #: ../../../wmaker-crm/WPrefs.app/MenuPreferences.c:202 msgid "Scroll off-screen menus when pointer is moved over them." msgstr "A képernyőn kívüli menük görgetése ha az egér mutató odaér." #: ../../../wmaker-crm/WPrefs.app/MenuPreferences.c:206 msgid "Use h/j/k/l keys to select menu options." msgstr "Mozgás a menükben a h/j/k/l billentyűkkel." #: ../../../wmaker-crm/WPrefs.app/MenuPreferences.c:222 msgid "Menu Preferences" msgstr "Menü beállítások" #: ../../../wmaker-crm/WPrefs.app/MenuPreferences.c:224 msgid "" "Menu usability related options. Scrolling speed,\n" "alignment of submenus etc." msgstr "" "Menük használati beállításai. Görgetés sebessége,\n" "almenük elrendezése, stb." #: ../../../wmaker-crm/WPrefs.app/MouseSettings.c:122 msgid "Invalid mouse acceleration value. Must be a positive real value." msgstr "Érvénytelen egérgyorsulási érték. Pozitív valós számot adj meg." #: ../../../wmaker-crm/WPrefs.app/MouseSettings.c:142 msgid "Invalid mouse acceleration threshold value. Must be the number of pixels to travel before accelerating." msgstr "Érvénytelen egérgyorsulási küszöbérték. Add meg hány pixelt lehet odébb vinni, mielőtt gyorsulna." #: ../../../wmaker-crm/WPrefs.app/MouseSettings.c:231 #: ../../../wmaker-crm/WPrefs.app/MouseSettings.c:243 #: ../../../wmaker-crm/WPrefs.app/MouseSettings.c:255 #: ../../../wmaker-crm/WPrefs.app/MouseSettings.c:267 #, c-format msgid "bad value %s for option %s" msgstr "hibás érték (%s) a \"%s\" opciónál" #: ../../../wmaker-crm/WPrefs.app/MouseSettings.c:326 #, c-format msgid "modifier key %s for option ModifierKey was not recognized. Using %s as default" msgstr "a (%s) módosító billentyűt (ModifierKey) nem ismerem. Az \"%s\" alapbeállítást használom." #: ../../../wmaker-crm/WPrefs.app/MouseSettings.c:347 msgid "could not retrieve keyboard modifier mapping" msgstr "Nem tudom visszakeresni a billentyűzet-módosítót" #: ../../../wmaker-crm/WPrefs.app/MouseSettings.c:441 msgid "Mouse Speed" msgstr "Egér sebessége" #: ../../../wmaker-crm/WPrefs.app/MouseSettings.c:454 #: ../../../wmaker-crm/WPrefs.app/WPrefs.c:410 #: ../../../wmaker-crm/WPrefs.app/WPrefs.c:426 #: ../../../wmaker-crm/WPrefs.app/WindowHandling.c:368 #: ../../../wmaker-crm/WPrefs.app/WindowHandling.c:380 #: ../../../wmaker-crm/WPrefs.app/WindowHandling.c:399 #: ../../../wmaker-crm/WPrefs.app/WindowHandling.c:411 #, c-format msgid "could not load icon %s" msgstr "nem tudom betölteni ezt az ikont: %s" #: ../../../wmaker-crm/WPrefs.app/MouseSettings.c:471 msgid "Accel.:" msgstr "Gyorsulás:" #: ../../../wmaker-crm/WPrefs.app/MouseSettings.c:482 msgid "Threshold:" msgstr "Küszöbszint:" #: ../../../wmaker-crm/WPrefs.app/MouseSettings.c:496 msgid "Double-Click Delay" msgstr "Dupla kattintás késleltetése" #: ../../../wmaker-crm/WPrefs.app/MouseSettings.c:539 msgid "Test" msgstr "Kipróbál" #: ../../../wmaker-crm/WPrefs.app/MouseSettings.c:569 msgid "Workspace Mouse Actions" msgstr "Egérgombok a munkafelületen" #: ../../../wmaker-crm/WPrefs.app/MouseSettings.c:574 msgid "Disable mouse actions" msgstr "Egérműveletek letiltása" #: ../../../wmaker-crm/WPrefs.app/MouseSettings.c:580 msgid "Left Button" msgstr "Bal" #: ../../../wmaker-crm/WPrefs.app/MouseSettings.c:590 msgid "Middle Button" msgstr "Középső" #: ../../../wmaker-crm/WPrefs.app/MouseSettings.c:600 msgid "Right Button" msgstr "Jobb" #: ../../../wmaker-crm/WPrefs.app/MouseSettings.c:610 msgid "Mouse Wheel" msgstr "Kerék" #: ../../../wmaker-crm/WPrefs.app/MouseSettings.c:632 msgid "Mouse Grab Modifier" msgstr "Egérműveletek billentyű-módosítója" #: ../../../wmaker-crm/WPrefs.app/MouseSettings.c:634 msgid "" "Keyboard modifier to use for actions that\n" "involve dragging windows with the mouse,\n" "clicking inside the window." msgstr "" "A billentyű-módosító gombot olyan egérműveleteknél\n" "tudod használni, amikor az ablak területén belülre kattintasz.\n" "(pl.: Alt+Bal gomb: ablak mozgatása)" #: ../../../wmaker-crm/WPrefs.app/MouseSettings.c:664 #, c-format msgid "could not create %s" msgstr "nem tudom létrehozni ezt: %s" #: ../../../wmaker-crm/WPrefs.app/MouseSettings.c:679 #, c-format msgid "could not create temporary file %s" msgstr "nem tudom létrehozni a következő ideiglenes fájlt: %s" #: ../../../wmaker-crm/WPrefs.app/MouseSettings.c:712 #, c-format msgid "could not rename file %s to %s" msgstr "nem tudom átnevezni ezt a fájlt: \"%s\" erre: \"%s\"" #: ../../../wmaker-crm/WPrefs.app/MouseSettings.c:781 msgid "Shift" msgstr "Shift" #: ../../../wmaker-crm/WPrefs.app/MouseSettings.c:782 msgid "Lock" msgstr "Lock" #: ../../../wmaker-crm/WPrefs.app/MouseSettings.c:783 msgid "Control" msgstr "Control" #: ../../../wmaker-crm/WPrefs.app/MouseSettings.c:784 msgid "Mod1" msgstr "Mod1" #: ../../../wmaker-crm/WPrefs.app/MouseSettings.c:785 msgid "Mod2" msgstr "Mod2" #: ../../../wmaker-crm/WPrefs.app/MouseSettings.c:786 msgid "Mod3" msgstr "Mod3" #: ../../../wmaker-crm/WPrefs.app/MouseSettings.c:787 msgid "Mod4" msgstr "Mod4" #: ../../../wmaker-crm/WPrefs.app/MouseSettings.c:788 msgid "Mod5" msgstr "Mod5" #: ../../../wmaker-crm/WPrefs.app/MouseSettings.c:791 msgid "Applications Menu" msgstr "Alkalmazások menü" #: ../../../wmaker-crm/WPrefs.app/MouseSettings.c:793 msgid "Select Windows" msgstr "Ablakok kiválasztása" #: ../../../wmaker-crm/WPrefs.app/MouseSettings.c:796 msgid "Switch Workspaces" msgstr "Munkafelület váltás" #: ../../../wmaker-crm/WPrefs.app/MouseSettings.c:800 msgid "Mouse Preferences" msgstr "Egér beállítások" #: ../../../wmaker-crm/WPrefs.app/MouseSettings.c:802 msgid "" "Mouse speed/acceleration, double click delay,\n" "mouse button bindings etc." msgstr "" "Egér sebessége, dupla kattintás késleltetése,\n" "egér gombjainak funkciója, stb." #: ../../../wmaker-crm/WPrefs.app/Paths.c:78 msgid "bad value in option IconPath. Using default path list" msgstr "rossz érték az IconPath értékénél. Az alapértelmezett útvonal listát használom." #: ../../../wmaker-crm/WPrefs.app/Paths.c:95 msgid "bad value in option PixmapPath. Using default path list" msgstr "rossz érték a PixmapPath értékénél. Az alapértelmezett útvonal listát használom." #: ../../../wmaker-crm/WPrefs.app/Paths.c:140 msgid "Select directory" msgstr "Válassz könyvtárat" #: ../../../wmaker-crm/WPrefs.app/Paths.c:248 msgid "Icon Search Paths" msgstr "Ikonok keresési útjai" #: ../../../wmaker-crm/WPrefs.app/Paths.c:259 #: ../../../wmaker-crm/WPrefs.app/Paths.c:290 #: ../../../wmaker-crm/WPrefs.app/TexturePanel.c:1196 msgid "Add" msgstr "Hozzáad" #: ../../../wmaker-crm/WPrefs.app/Paths.c:266 #: ../../../wmaker-crm/WPrefs.app/Paths.c:297 msgid "Remove" msgstr "Töröl" #: ../../../wmaker-crm/WPrefs.app/Paths.c:279 msgid "Pixmap Search Paths" msgstr "Képek keresési újai" #: ../../../wmaker-crm/WPrefs.app/Paths.c:314 msgid "Search Path Configuration" msgstr "Keresési útvonal beállítások" #: ../../../wmaker-crm/WPrefs.app/Paths.c:316 msgid "" "Search paths to use when looking for pixmaps\n" "and icons." msgstr "Ikonok és bitképek elérési útja" #: ../../../wmaker-crm/WPrefs.app/Preferences.c:73 #, c-format msgid "1 pixel" msgstr "1 pixel" #. 2-4 #: ../../../wmaker-crm/WPrefs.app/Preferences.c:76 #, c-format msgid "%i pixels" msgstr "%i pixel" #. >4 #: ../../../wmaker-crm/WPrefs.app/Preferences.c:79 #, c-format msgid "%i pixels " msgstr "%i pixel " #: ../../../wmaker-crm/WPrefs.app/Preferences.c:217 msgid "Size Display" msgstr "Méret megjelenítés" #: ../../../wmaker-crm/WPrefs.app/Preferences.c:219 msgid "" "The position or style of the window size\n" "display that's shown when a window is resized." msgstr "" "Az ablakméret megjelenésének helye vagy\n" "stílusa (akkor jelenik meg, amikor átméretezed)" #: ../../../wmaker-crm/WPrefs.app/Preferences.c:225 #: ../../../wmaker-crm/WPrefs.app/Preferences.c:245 msgid "Corner of screen" msgstr "A képernyő sarkában" #: ../../../wmaker-crm/WPrefs.app/Preferences.c:226 #: ../../../wmaker-crm/WPrefs.app/Preferences.c:246 msgid "Center of screen" msgstr "A képernyő közepén" #: ../../../wmaker-crm/WPrefs.app/Preferences.c:227 #: ../../../wmaker-crm/WPrefs.app/Preferences.c:247 msgid "Center of resized window" msgstr "Az ablak közepén" #: ../../../wmaker-crm/WPrefs.app/Preferences.c:228 msgid "Technical drawing-like" msgstr "Méretnyilakkal" #: ../../../wmaker-crm/WPrefs.app/Preferences.c:229 #: ../../../wmaker-crm/WPrefs.app/Preferences.c:248 msgid "Disabled" msgstr "Sehol" #: ../../../wmaker-crm/WPrefs.app/Preferences.c:237 msgid "Position Display" msgstr "Helyzet megjelenítés" #: ../../../wmaker-crm/WPrefs.app/Preferences.c:239 msgid "" "The position or style of the window position\n" "display that's shown when a window is moved." msgstr "" "Az ablakhelyzet megjelenésének helye vagy stílusa\n" "(akkor jelenik meg, amikor mozgatod az ablakot)" #: ../../../wmaker-crm/WPrefs.app/Preferences.c:256 msgid "Show balloon text for..." msgstr "Felugró súgó megjelenik..." #: ../../../wmaker-crm/WPrefs.app/Preferences.c:263 msgid "incomplete window titles" msgstr "ha az ablak címsora hiányos" #: ../../../wmaker-crm/WPrefs.app/Preferences.c:264 msgid "miniwindow titles" msgstr "miniablak címsoránál" #: ../../../wmaker-crm/WPrefs.app/Preferences.c:265 msgid "application/dock icons" msgstr "alkalmazás/dokkolt ikonoknál" #: ../../../wmaker-crm/WPrefs.app/Preferences.c:266 msgid "internal help" msgstr "beépített segítségnél" #: ../../../wmaker-crm/WPrefs.app/Preferences.c:274 msgid "AppIcon bouncing" msgstr "Appikon pattogás" #: ../../../wmaker-crm/WPrefs.app/Preferences.c:279 msgid "Disable AppIcon bounce" msgstr "Patogás letiltása" #: ../../../wmaker-crm/WPrefs.app/Preferences.c:284 msgid "Bounce when the application wants attention" msgstr "Az appikon pattog ha az alkalmazás figyelmet kér" #: ../../../wmaker-crm/WPrefs.app/Preferences.c:290 msgid "Raise AppIcon when bouncing" msgstr "Ikonok előre hozása pattogáskor" #: ../../../wmaker-crm/WPrefs.app/Preferences.c:298 msgid "Workspace border" msgstr "Munkafelület keret" #: ../../../wmaker-crm/WPrefs.app/Preferences.c:314 msgid "Left/Right" msgstr "Bal/Jobb" #: ../../../wmaker-crm/WPrefs.app/Preferences.c:319 msgid "Top/Bottom" msgstr "Felül/Alul" #: ../../../wmaker-crm/WPrefs.app/Preferences.c:335 msgid "Miscellaneous Ergonomic Preferences" msgstr "Egyéb kényelmi beállítások" #: ../../../wmaker-crm/WPrefs.app/Preferences.c:336 msgid "" "Various settings like balloon text, geometry\n" "displays etc." msgstr "" "Különböző beállítások, pl. felugró súgó,\n" "méret megjelenítés, stb." #: ../../../wmaker-crm/WPrefs.app/TexturePanel.c:293 msgid "Saturation" msgstr "Telítettség" #: ../../../wmaker-crm/WPrefs.app/TexturePanel.c:295 msgid "Brightness" msgstr "Világosság" #: ../../../wmaker-crm/WPrefs.app/TexturePanel.c:340 #: ../../../wmaker-crm/WPrefs.app/TexturePanel.c:346 msgid "Hue" msgstr "Árnyalat" #: ../../../wmaker-crm/WPrefs.app/TexturePanel.c:563 msgid "Could not load the selected file: " msgstr "A kiválasztott fájlt nem tudom betölteni: " #: ../../../wmaker-crm/WPrefs.app/TexturePanel.c:613 msgid "Open Image" msgstr "Kép megnyitás" #: ../../../wmaker-crm/WPrefs.app/TexturePanel.c:643 msgid "The selected file does not contain a supported image." msgstr "A kiválasztott fájl nem tartalmaz támogatott képformátumot." #: ../../../wmaker-crm/WPrefs.app/TexturePanel.c:868 #, c-format msgid "could not load file '%s': %s" msgstr "nem tudom betölteni '%s': %s" #: ../../../wmaker-crm/WPrefs.app/TexturePanel.c:982 #, c-format msgid "error creating texture %s" msgstr "hiba a %s mintázat létrehozásakor" #: ../../../wmaker-crm/WPrefs.app/TexturePanel.c:1141 msgid "Texture Panel" msgstr "Mintázat" #: ../../../wmaker-crm/WPrefs.app/TexturePanel.c:1148 msgid "Texture Name" msgstr "Mintanév" #: ../../../wmaker-crm/WPrefs.app/TexturePanel.c:1160 msgid "Solid Color" msgstr "Egyszínű" #: ../../../wmaker-crm/WPrefs.app/TexturePanel.c:1161 msgid "Gradient Texture" msgstr "Színátmenet-minta" #: ../../../wmaker-crm/WPrefs.app/TexturePanel.c:1162 msgid "Simple Gradient Texture" msgstr "Egyszerű színátmenet-minta" #: ../../../wmaker-crm/WPrefs.app/TexturePanel.c:1163 msgid "Textured Gradient" msgstr "Mintázott színátmenet" #: ../../../wmaker-crm/WPrefs.app/TexturePanel.c:1164 msgid "Image Texture" msgstr "Kép" #: ../../../wmaker-crm/WPrefs.app/TexturePanel.c:1172 msgid "Default Color" msgstr "Alap szín" #: ../../../wmaker-crm/WPrefs.app/TexturePanel.c:1184 msgid "Gradient Colors" msgstr "Átmenet színei" #: ../../../wmaker-crm/WPrefs.app/TexturePanel.c:1273 msgid "Direction" msgstr "Irány" #: ../../../wmaker-crm/WPrefs.app/TexturePanel.c:1301 msgid "Gradient" msgstr "Átmenet" #: ../../../wmaker-crm/WPrefs.app/TexturePanel.c:1317 msgid "Gradient Opacity" msgstr "Színátmenet áttetszőség" #: ../../../wmaker-crm/WPrefs.app/TexturePanel.c:1357 msgid "Image" msgstr "Kép" #: ../../../wmaker-crm/WPrefs.app/TexturePanel.c:1389 msgid "Tile" msgstr "Csempéz" #: ../../../wmaker-crm/WPrefs.app/TexturePanel.c:1390 msgid "Scale" msgstr "Illeszt" #: ../../../wmaker-crm/WPrefs.app/TexturePanel.c:1392 msgid "Maximize" msgstr "Nagyít" #: ../../../wmaker-crm/WPrefs.app/Themes.c:63 #: ../../../wmaker-crm/WPrefs.app/Themes.c:71 msgid "Set" msgstr "Beállít" #: ../../../wmaker-crm/WPrefs.app/Themes.c:114 msgid "Stop" msgstr "Stop" #: ../../../wmaker-crm/WPrefs.app/Themes.c:125 #: ../../../wmaker-crm/WPrefs.app/Themes.c:170 #: ../../../wmaker-crm/WPrefs.app/Themes.c:190 msgid "Download" msgstr "Letöltés" #: ../../../wmaker-crm/WPrefs.app/Themes.c:139 msgid "Save Current Theme" msgstr "Aktuális téma elmentése" #: ../../../wmaker-crm/WPrefs.app/Themes.c:148 msgid "Load" msgstr "Betölt" #: ../../../wmaker-crm/WPrefs.app/Themes.c:153 msgid "Install" msgstr "Telepít" #: ../../../wmaker-crm/WPrefs.app/Themes.c:160 msgid "Tile of The Day" msgstr "A nap csempéje" #: ../../../wmaker-crm/WPrefs.app/Themes.c:180 msgid "Bar of The Day" msgstr "A nap sávja" #: ../../../wmaker-crm/WPrefs.app/WPrefs.c:214 #: ../../../wmaker-crm/WPrefs.app/WPrefs.c:284 msgid "Window Maker Preferences" msgstr "Window Maker beállítások" #: ../../../wmaker-crm/WPrefs.app/WPrefs.c:237 msgid "Revert Page" msgstr "Visszavon egy oldalt" #: ../../../wmaker-crm/WPrefs.app/WPrefs.c:243 msgid "Revert All" msgstr "Visszavon mindent" #: ../../../wmaker-crm/WPrefs.app/WPrefs.c:249 msgid "Save" msgstr "Ment" #: ../../../wmaker-crm/WPrefs.app/WPrefs.c:261 msgid "Balloon Help" msgstr "Felugró súgó" #: ../../../wmaker-crm/WPrefs.app/WPrefs.c:291 #, c-format msgid "Version %s" msgstr "%s verzió" #: ../../../wmaker-crm/WPrefs.app/WPrefs.c:298 msgid "Starting..." msgstr "Indul..." #: ../../../wmaker-crm/WPrefs.app/WPrefs.c:385 #, c-format msgid "could not locate image file %s" msgstr "a képfájl (%s) helyét nem találom" #: ../../../wmaker-crm/WPrefs.app/WPrefs.c:439 #, c-format msgid "could not process icon %s: %s" msgstr "a %s ikont nem tudom feldolgozni: %s" #: ../../../wmaker-crm/WPrefs.app/WPrefs.c:556 #, c-format msgid "could not load image file %s:%s" msgstr "a képfájlt nem tudom betölteni %s:%s" #: ../../../wmaker-crm/WPrefs.app/WPrefs.c:573 msgid "Loading Window Maker configuration files..." msgstr "Window Maker konfigurációs fájlok betöltése..." #: ../../../wmaker-crm/WPrefs.app/WPrefs.c:577 msgid "Initializing configuration panels..." msgstr "Beállító panelek inicializálása..." #: ../../../wmaker-crm/WPrefs.app/WPrefs.c:635 #: ../../../wmaker-crm/WPrefs.app/WPrefs.c:717 #, c-format msgid "Window Maker domain (%s) is corrupted!" msgstr "Window Maker domain (%s) megsérült!" #: ../../../wmaker-crm/WPrefs.app/WPrefs.c:639 #, c-format msgid "Could not load Window Maker domain (%s) from defaults database." msgstr "A Window Maker domaint (%s) nem tudtam betölteni a beállítás adatbázisból." #: ../../../wmaker-crm/WPrefs.app/WPrefs.c:654 msgid "could not extract version information from Window Maker" msgstr "nem tudom kideríteni a Window Maker verziószámát" #: ../../../wmaker-crm/WPrefs.app/WPrefs.c:655 msgid "Make sure wmaker is in your search path." msgstr "Győzödj meg róla, hogy a wmaker benne van-e a keresési útvonalban." #: ../../../wmaker-crm/WPrefs.app/WPrefs.c:659 msgid "Could not extract version from Window Maker. Make sure it is correctly installed and is in your PATH environment variable." msgstr "Nem tudom kideríteni a Window Maker verziószámát. Győzödj meg róla, hogy jól van-e felinstallálva és benne van-e a keresési útvonalban (PATH)" #: ../../../wmaker-crm/WPrefs.app/WPrefs.c:669 msgid "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." msgstr "Nem tudom kideríteni a Window Maker verziószámát. Győzödj meg róla, hogy jól van-e felinstallálva és a hely, ahova telepítetted, benne van-e a keresési útvonalban (PATH)" #: ../../../wmaker-crm/WPrefs.app/WPrefs.c:676 #, c-format msgid "" "WPrefs only supports Window Maker 0.18.0 or newer.\n" "The version installed is %i.%i.%i\n" msgstr "" "A WPrefs csak 0.18.0 vagy nagyobb verziószámú Window Makert\n" "támogat. A jelenlegi verzió: %i.%i.%i\n" #: ../../../wmaker-crm/WPrefs.app/WPrefs.c:685 #, c-format msgid "Window Maker %i.%i.%i, which is installed in your system, is not fully supported by this version of WPrefs." msgstr "A jelenleg telepített Window Makert (%i.%i.%i) nem támogatja teljesen ez a WPrefs verzió." #: ../../../wmaker-crm/WPrefs.app/WPrefs.c:698 #, c-format msgid "could not run \"%s --global_defaults_path\"." msgstr "nem tudom futtatni a \"%s -global_defaults_path\" parancsot." #: ../../../wmaker-crm/WPrefs.app/WPrefs.c:721 #, c-format msgid "Could not load global Window Maker domain (%s)." msgstr "a globális Window Maker domaint (%s) nem tudom betölteni." #: ../../../wmaker-crm/WPrefs.app/WPrefs.c:941 #, c-format msgid "bad speed value for option %s; using default Medium" msgstr "Rossz sebesség-érték a %s kulcshoz; az alapértelmezett \"Közepes\"-t használom" #: ../../../wmaker-crm/WPrefs.app/WindowHandling.c:167 #, c-format msgid "bad option value %s in WindowPlacement. Using default value" msgstr "rossz érték (%s) a WindowPlacement opciónál. Az alapértelmezett értéket használom." #: ../../../wmaker-crm/WPrefs.app/WindowHandling.c:186 msgid "invalid data in option WindowPlaceOrigin. Using default (0,0)" msgstr "érvénytelen adat a WindowPlaceOrigin beállításánál. (0,0)-t használok helyette." #: ../../../wmaker-crm/WPrefs.app/WindowHandling.c:275 msgid "Window Placement" msgstr "Ablak lehelyezés" #: ../../../wmaker-crm/WPrefs.app/WindowHandling.c:276 msgid "" "How to place windows when they are first put\n" "on screen." msgstr "" "Hova kerüljön az ablak amikor először megjelenik\n" "a képernyőn." #: ../../../wmaker-crm/WPrefs.app/WindowHandling.c:282 msgid "Automatic" msgstr "Automatikus" #: ../../../wmaker-crm/WPrefs.app/WindowHandling.c:283 msgid "Random" msgstr "Véletlenszerű" #: ../../../wmaker-crm/WPrefs.app/WindowHandling.c:284 msgid "Manual" msgstr "Kézi" #: ../../../wmaker-crm/WPrefs.app/WindowHandling.c:285 msgid "Cascade" msgstr "Lépcsőzetes" #: ../../../wmaker-crm/WPrefs.app/WindowHandling.c:286 msgid "Smart" msgstr "Ügyes" #: ../../../wmaker-crm/WPrefs.app/WindowHandling.c:293 msgid "Placement Origin" msgstr "Kiindulási hely" #: ../../../wmaker-crm/WPrefs.app/WindowHandling.c:351 msgid "Opaque Move/Resize" msgstr "Teli mozgatás/méretezés" #: ../../../wmaker-crm/WPrefs.app/WindowHandling.c:352 msgid "" "Whether the window contents or only a frame should\n" "be displayed during a move or resize.\n" msgstr "" "Az ablak mozgatása vagy átméretezése közben látszódjon-e\n" "az ablak tartalma vagy csak a kerete.\n" #: ../../../wmaker-crm/WPrefs.app/WindowHandling.c:419 msgid "by keyboard" msgstr "billentyűkkel" #: ../../../wmaker-crm/WPrefs.app/WindowHandling.c:428 msgid "When maximizing..." msgstr "Teljes méretűre állításkor..." #: ../../../wmaker-crm/WPrefs.app/WindowHandling.c:433 msgid "...do not cover icons" msgstr "...ne fedje le az ikonokat" #: ../../../wmaker-crm/WPrefs.app/WindowHandling.c:439 msgid "...do not cover dock" msgstr "...ne fedje le a dokkokat" #: ../../../wmaker-crm/WPrefs.app/WindowHandling.c:453 msgid "" "Mod+Wheel\n" "resize increment" msgstr "" "Egér kerekes mére-\n" "tezés növekménye" #: ../../../wmaker-crm/WPrefs.app/WindowHandling.c:463 msgid "Edge Resistance" msgstr "Szegélyek vonzása" #: ../../../wmaker-crm/WPrefs.app/WindowHandling.c:465 msgid "" "Edge resistance will make windows `resist'\n" "being moved further for the defined threshold\n" "when moved against other windows or the edges\n" "of the screen." msgstr "" "A szegélyek vonzása megadja, hogy az ablak hogyan\n" "viselkedjen (taszítás vagy vonzás) egy másik\n" "objektum közelében (másik ablak vagy a képernyő\n" "széle mellett)." #: ../../../wmaker-crm/WPrefs.app/WindowHandling.c:484 msgid "Resist" msgstr "Taszít" #: ../../../wmaker-crm/WPrefs.app/WindowHandling.c:489 msgid "Attract" msgstr "Vonz" #: ../../../wmaker-crm/WPrefs.app/WindowHandling.c:502 msgid "Open dialogs in the same workspace as their owners" msgstr "A dialógus ablakok szülőikkel azonos munkafelületen jelenjenek meg" #: ../../../wmaker-crm/WPrefs.app/WindowHandling.c:524 msgid "Window Handling Preferences" msgstr "Ablakok kezelésének jellemzői" #: ../../../wmaker-crm/WPrefs.app/WindowHandling.c:526 msgid "" "Window handling options. Initial placement style\n" "edge resistance, opaque move etc." msgstr "" "Ablakok kezelésének tulajdonságai: kezdő hely meghatározása,\n" "szegély vonzása, tartalom mutatása mozgatáskor, stb." #: ../../../wmaker-crm/WPrefs.app/Workspace.c:118 msgid "Workspace Navigation" msgstr "Munkafelület-navigálás" #: ../../../wmaker-crm/WPrefs.app/Workspace.c:123 msgid "Wrap to the first workspace from the last workspace" msgstr "Az utolsó munkafelületről visszalép az elsőre" #: ../../../wmaker-crm/WPrefs.app/Workspace.c:139 msgid "Switch workspaces while dragging windows" msgstr "Munkafelület váltás ablakok mozgatásakor" #: ../../../wmaker-crm/WPrefs.app/Workspace.c:155 msgid "Automatically create new workspaces" msgstr "Új munkafelületek automatikus létrehozása" #. WMSetLabelTextAlignment(panel->posL, WARight); #: ../../../wmaker-crm/WPrefs.app/Workspace.c:172 msgid "Position of workspace name display" msgstr "Ide írja a munkafelület nevét:" #: ../../../wmaker-crm/WPrefs.app/Workspace.c:188 msgid "Disable" msgstr "Sehova" #: ../../../wmaker-crm/WPrefs.app/Workspace.c:190 msgid "Top" msgstr "Felülre" #: ../../../wmaker-crm/WPrefs.app/Workspace.c:191 msgid "Bottom" msgstr "Alulra" #: ../../../wmaker-crm/WPrefs.app/Workspace.c:192 msgid "Top/Left" msgstr "Balra felülre" #: ../../../wmaker-crm/WPrefs.app/Workspace.c:193 msgid "Top/Right" msgstr "Jobbra felülre" #: ../../../wmaker-crm/WPrefs.app/Workspace.c:194 msgid "Bottom/Left" msgstr "Balra alulra" #: ../../../wmaker-crm/WPrefs.app/Workspace.c:195 msgid "Bottom/Right" msgstr "Jobbra alulra" #: ../../../wmaker-crm/WPrefs.app/Workspace.c:224 msgid "Workspace Preferences" msgstr "Munkafelület jellemzők" #: ../../../wmaker-crm/WPrefs.app/Workspace.c:226 msgid "" "Workspace navigation features\n" "and workspace name display settings." msgstr "" "Munkafelületek közötti mozgással és a munkafelület\n" "nevének megjelenítésével kapcsolatos beállítások." #: ../../../wmaker-crm/WPrefs.app/main.c:62 #, c-format msgid "usage: %s [options]\n" msgstr "használat: %s [opciók]\n" #: ../../../wmaker-crm/WPrefs.app/main.c:63 msgid "options:" msgstr "opciók:" #: ../../../wmaker-crm/WPrefs.app/main.c:64 msgid " -display <display>\tdisplay to be used" msgstr "-display <megjelenítő>\tmelyik megjelenítőt használja" #: ../../../wmaker-crm/WPrefs.app/main.c:65 msgid " --version\t\tprint version number and exit" msgstr "--version\t\tkiírja a verziószámot és kilép" #: ../../../wmaker-crm/WPrefs.app/main.c:66 msgid " --help\t\tprint this message and exit" msgstr "--help\t\tkiírja ezt a szöveget és kilép" #: ../../../wmaker-crm/WPrefs.app/main.c:133 #, c-format msgid "too few arguments for %s" msgstr "túl kevés paraméter a következőhöz: %s" #: ../../../wmaker-crm/WPrefs.app/main.c:155 msgid "X server does not support locale" msgstr "Az X server nem támogatja a fordítások használatát" #: ../../../wmaker-crm/WPrefs.app/main.c:158 msgid "cannot set locale modifiers" msgstr "a helyi módosításokat nem tudom beállítani" #: ../../../wmaker-crm/WPrefs.app/main.c:164 #, c-format msgid "could not open display %s" msgstr "nem tudom a %s megjelenítőt megnyitni" #: ../../../wmaker-crm/WPrefs.app/main.c:172 msgid "could not initialize application" msgstr "az alkalmazást nem tudom inicializálni" ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/po/ko.po��������������������������������������������������������������0000644�0001750�0001750�00000215346�13431646201�014355� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# WPrefs.app po file for Korean. # Copyright (C) 1998 Free Software Foundation, Inc. # Byeong-Chan Kim <redhands@linux.sarang.net>, 1999. # Update: CHOI Junho <cjh@kr.freebsd.org>, 1998/12. # Update: Lee, Seong-Gu <sgleehd@gmail.com>, 2013/08 # msgid "" msgstr "" "Project-Id-Version: 0.95.4\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-08-13 19:07+0900\n" "PO-Revision-Date: 2013-08-13 19:26+0900\n" "Last-Translator: \n" "Language-Team: Korean\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 1.5.4\n" #: ../../WPrefs.app/Appearance.c:1051 msgid "Select File" msgstr "파일 선택" #: ../../WPrefs.app/Appearance.c:1406 msgid "Focused Window" msgstr "활성화 창" #: ../../WPrefs.app/Appearance.c:1411 msgid "Unfocused Window" msgstr "비활성 창" #: ../../WPrefs.app/Appearance.c:1416 msgid "Owner of Focused Window" msgstr "활성 창의 부모창" #: ../../WPrefs.app/Appearance.c:1420 ../../WPrefs.app/Appearance.c:1718 #: ../../WPrefs.app/FontSimple.c:100 msgid "Menu Title" msgstr "메뉴 타이틀" #: ../../WPrefs.app/Appearance.c:1424 ../../WPrefs.app/Appearance.c:1426 msgid "Normal Item" msgstr "일반 항목" #: ../../WPrefs.app/Appearance.c:1431 msgid "Disabled Item" msgstr "안 쓰는 항목" #: ../../WPrefs.app/Appearance.c:1440 msgid "Highlighted" msgstr "선택됨" #: ../../WPrefs.app/Appearance.c:1618 msgid "Texture" msgstr "텍스처" #: ../../WPrefs.app/Appearance.c:1625 msgid "Titlebar of Focused Window" msgstr "활성 창 타이틀바" #: ../../WPrefs.app/Appearance.c:1626 msgid "Titlebar of Unfocused Windows" msgstr "비활성 창 타이틀바" #: ../../WPrefs.app/Appearance.c:1627 msgid "Titlebar of Focused Window's Owner" msgstr "활성 창의 부모창 타이틀바" #: ../../WPrefs.app/Appearance.c:1628 msgid "Window Resizebar" msgstr "창 크기조정 바" #: ../../WPrefs.app/Appearance.c:1629 msgid "Titlebar of Menus" msgstr "메뉴 타이틀바" #: ../../WPrefs.app/Appearance.c:1630 msgid "Menu Items" msgstr "메뉴 항목" #: ../../WPrefs.app/Appearance.c:1631 msgid "Icon Background" msgstr "아이콘 배경" #: ../../WPrefs.app/Appearance.c:1646 msgid "" "Double click in the texture you want to use\n" "for the selected item." msgstr "" "선택한 아이템에서 사용하고자 하는\n" "텍스쳐를 더블 클릭하십시오." #: ../../WPrefs.app/Appearance.c:1658 msgid "New" msgstr "생성" #: ../../WPrefs.app/Appearance.c:1662 msgid "Create a new texture." msgstr "새로운 텍스쳐를 생성합니다." #: ../../WPrefs.app/Appearance.c:1669 msgid "Extract..." msgstr "추출..." #: ../../WPrefs.app/Appearance.c:1673 msgid "Extract texture(s) from a theme or a style file." msgstr "테마나 스타일 파일에서 텍스쳐를 추출합니다." #: ../../WPrefs.app/Appearance.c:1682 msgid "Edit" msgstr "편집" #: ../../WPrefs.app/Appearance.c:1685 msgid "Edit the highlighted texture." msgstr "선택된 텍스쳐를 편집합니다." #: ../../WPrefs.app/Appearance.c:1692 ../../WPrefs.app/TexturePanel.c:1195 msgid "Delete" msgstr "지움" #: ../../WPrefs.app/Appearance.c:1696 msgid "Delete the highlighted texture." msgstr "선택된 텍스쳐를 삭제합니다." #: ../../WPrefs.app/Appearance.c:1708 msgid "Color" msgstr "색상" #: ../../WPrefs.app/Appearance.c:1715 msgid "Focused Window Title" msgstr "활성 창 제목" #: ../../WPrefs.app/Appearance.c:1716 msgid "Unfocused Window Title" msgstr "비활성 창 제목" #: ../../WPrefs.app/Appearance.c:1717 msgid "Owner of Focused Window Title" msgstr "활성 창 제목의 소유자" #: ../../WPrefs.app/Appearance.c:1719 msgid "Menu Item Text" msgstr "메뉴 항목 글자" #: ../../WPrefs.app/Appearance.c:1720 msgid "Disabled Menu Item Text" msgstr "꺼진 메뉴 항목 글자" #: ../../WPrefs.app/Appearance.c:1721 msgid "Menu Highlight Color" msgstr "선택된 메뉴 색상" #: ../../WPrefs.app/Appearance.c:1722 msgid "Highlighted Menu Text Color" msgstr "선택된 메뉴의 글자 색상" #: ../../WPrefs.app/Appearance.c:1759 msgid "Background" msgstr "배경" #: ../../WPrefs.app/Appearance.c:1771 ../../WPrefs.app/TexturePanel.c:1370 msgid "Browse..." msgstr "보기..." #: ../../WPrefs.app/Appearance.c:1781 msgid "Options" msgstr "옵션" #: ../../WPrefs.app/Appearance.c:1788 msgid "Menu Style" msgstr "메뉴 스타일" #: ../../WPrefs.app/Appearance.c:1816 ../../WPrefs.app/Configurations.c:179 #: ../../WPrefs.app/Configurations.c:191 ../../WPrefs.app/Docks.c:187 #: ../../WPrefs.app/Docks.c:195 ../../WPrefs.app/Focus.c:266 #: ../../WPrefs.app/Focus.c:277 ../../WPrefs.app/MenuPreferences.c:127 #: ../../WPrefs.app/MenuPreferences.c:138 #: ../../WPrefs.app/MenuPreferences.c:166 #: ../../WPrefs.app/MenuPreferences.c:181 ../../WPrefs.app/MouseSettings.c:517 #: ../../WPrefs.app/MouseSettings.c:528 ../../WPrefs.app/WPrefs.c:501 #: ../../WPrefs.app/WPrefs.c:526 #, c-format msgid "could not load icon file %s" msgstr "아이콘 파일 %s를 읽을 수 없음" #: ../../WPrefs.app/Appearance.c:1829 msgid "Title Alignment" msgstr "제목 정렬" #: ../../WPrefs.app/Appearance.c:1836 msgid "Left" msgstr "왼쪽" #: ../../WPrefs.app/Appearance.c:1839 ../../WPrefs.app/TexturePanel.c:1384 #: ../../WPrefs.app/WindowHandling.c:278 ../../WPrefs.app/Workspace.c:189 msgid "Center" msgstr "가운데" #: ../../WPrefs.app/Appearance.c:1842 msgid "Right" msgstr "오른쪽" #: ../../WPrefs.app/Appearance.c:2045 msgid "Appearance Preferences" msgstr "모양 설정" #: ../../WPrefs.app/Appearance.c:2047 msgid "" "Background texture configuration for windows,\n" "menus and icons." msgstr "" "창, 메뉴, 아이콘에 사용할\n" "배경 텍스쳐를 설정합니다." #: ../../WPrefs.app/Appearance.c:2083 msgid "Extract Texture" msgstr "텍스처 추출하기" #: ../../WPrefs.app/Appearance.c:2103 msgid "Textures" msgstr "텍스처" #: ../../WPrefs.app/Appearance.c:2112 ../../WPrefs.app/WPrefs.c:230 msgid "Close" msgstr "닫기" #: ../../WPrefs.app/Appearance.c:2117 msgid "Extract" msgstr "추출" #: ../../WPrefs.app/Configurations.c:130 ../../WPrefs.app/Docks.c:141 #: ../../WPrefs.app/Workspace.c:106 #, c-format msgid "could not load image file %s" msgstr "이미지 파일 %s를 읽을 수 없음" #: ../../WPrefs.app/Configurations.c:141 msgid "Icon Slide Speed" msgstr "아이콘 슬라이드 속도" #: ../../WPrefs.app/Configurations.c:147 msgid "Shade Animation Speed" msgstr "그림자 애니메이션 속도" #: ../../WPrefs.app/Configurations.c:206 msgid "Smooth Scaling" msgstr "부드러운 스케일링" #: ../../WPrefs.app/Configurations.c:207 msgid "" "Smooth scaled background images, neutralizing\n" "the `pixelization' effect. This will slow\n" "down loading of background images considerably." msgstr "" "배경 그림의 부드러운 스케일링, `pixelization'\n" "효과를 중화시킵니다. 배경 이미지를 읽어 들이는\n" "속도가 상당히 느려집니다." #: ../../WPrefs.app/Configurations.c:247 msgid "Titlebar Style" msgstr "타이틀바 스타일" #: ../../WPrefs.app/Configurations.c:300 ../../WPrefs.app/Configurations.c:306 msgid "Animations" msgstr "애니메이션" #: ../../WPrefs.app/Configurations.c:317 msgid "" "Disable/enable animations such as those shown\n" "for window miniaturization, shading etc." msgstr "" "윈도우 최소화시, 쉐이딩 기능등에서 애니메이션을\n" "켜고 끄는 것을 설정합니다." #: ../../WPrefs.app/Configurations.c:324 msgid "Superfluous" msgstr "추가 설정" #: ../../WPrefs.app/Configurations.c:335 msgid "" "Disable/enable `superfluous' features and\n" "animations. These include the `ghosting' of the\n" "dock when it's being moved to another side and\n" "the explosion animation when undocking icons." msgstr "" "`추가설정' 기능과 애니메이션을 끄고 켭니다.\n" "이 기능은 다른 쪽으로 독을 이동할 때\n" "끌리는 효과나 독에서 아이콘을 버릴 때\n" "폭파되는 효과를 포함합니다." #: ../../WPrefs.app/Configurations.c:348 msgid "Dithering colormap for 8bpp" msgstr "8bpp(256색)용 컬러맵 디더링" #: ../../WPrefs.app/Configurations.c:350 msgid "" "Number of colors to reserve for Window Maker\n" "on displays that support only 8bpp (PseudoColor)." msgstr "" "8bpp(가상 색) 만 지원하는 화면에서\n" " 윈도우 메이커가 사용할 색 수를 정합니다." #: ../../WPrefs.app/Configurations.c:357 msgid "Disable dithering in any visual/depth" msgstr "모든 비주얼/색상 깊이에서 디더링 사용하지 않음" #: ../../WPrefs.app/Configurations.c:378 msgid "" "More colors for\n" "applications" msgstr "" "응용프로그램이\n" " 더 많은 색 사용" #: ../../WPrefs.app/Configurations.c:385 msgid "" "More colors for\n" "Window Maker" msgstr "" "윈도우 메이커가\n" " 더 많은 색 사용" #: ../../WPrefs.app/Configurations.c:434 msgid "Other Configurations" msgstr "기타 설정" #: ../../WPrefs.app/Configurations.c:435 msgid "" "Animation speeds, titlebar styles, various option\n" "toggling and number of colors to reserve for\n" "Window Maker on 8bit displays." msgstr "" "애니메이션 속도, 타이틀바 스타일, 그 외 옵션 설정과\n" "8bit 화면에서 윈도우 메이커가 사용할 \n" "색상의 수를 설정합니다." #: ../../WPrefs.app/Docks.c:159 msgid "Delays in milliseconds for autocollapsing clips" msgstr "밀리세컨드로 표시된 클립 자동 축소 지연 시간" #: ../../WPrefs.app/Docks.c:161 msgid "Delays in milliseconds for autoraising clips" msgstr "밀리세컨드로 표시된 클립 자동 올림 지연 시간" #: ../../WPrefs.app/Docks.c:214 msgid "Dock/Clip/Drawer" msgstr "독/클립/서랍" #: ../../WPrefs.app/Docks.c:234 msgid "" "Disable/enable the application Dock (the\n" "vertical icon bar in the side of the screen)." msgstr "" "애플리케이션 Dock을 사용할 것인지 설정합니다.\n" "(스크린 구석의 수직 아이콘 바)" #: ../../WPrefs.app/Docks.c:238 msgid "" "Disable/enable the Clip (that thing with\n" "a paper clip icon)." msgstr "" "클립을 사용할 것인지 설정합니다.\n" "(클립 모양의 아이콘이 있는 것)" #: ../../WPrefs.app/Docks.c:242 msgid "" "Disable/enable Drawers (a dock that stores\n" "application icons horizontally). The dock is required." msgstr "" "서랍 사용/끄기 (응용프로그램 아이콘을\n" " 세로로 저장하는 독). 독이 필요합니다." #: ../../WPrefs.app/Docks.c:293 msgid "Delay before auto-expansion" msgstr "자동 확장 전 지연 시간" #: ../../WPrefs.app/Docks.c:294 msgid "Delay before auto-collapsing" msgstr "자동 축소 전 지연 시간" #: ../../WPrefs.app/Docks.c:295 msgid "Delay before auto-raising" msgstr "자동 올림 전 지연 시간" #: ../../WPrefs.app/Docks.c:296 msgid "Delay before auto-lowering" msgstr "자동 내림 전 지연 시간" #: ../../WPrefs.app/Docks.c:301 msgid "Dock Preferences" msgstr "독 설정" #: ../../WPrefs.app/Docks.c:303 msgid "" "Dock and clip features.\n" "Enable/disable the Dock and Clip, and tune some delays." msgstr "" "독과 클립의 기능 설정.\n" "독과 클립을 사용 여부 및 활성화 지연 시간을 조정합니다." #: ../../WPrefs.app/Expert.c:41 msgid "" "Disable miniwindows (icons for minimized windows). For use with KDE/GNOME." msgstr "최소화창 (최소화된 창의 아이콘)을 사용하지 않습니다. KDE/GNOME 사용시." #. default: #: ../../WPrefs.app/Expert.c:44 msgid "Do not set non-WindowMaker specific parameters (do not use xset)." msgstr "" "윈도우 메이커 고유 설정 이외는 지정하지 않습니다 (xset을 사용하지 않음)." #. default: #: ../../WPrefs.app/Expert.c:47 msgid "Automatically save session when exiting Window Maker." msgstr "윈도우 메이커 종료시 세션을 자동으로 저장합니다." #. default: #: ../../WPrefs.app/Expert.c:50 msgid "Use SaveUnder in window frames, icons, menus and other objects." msgstr "창 프레임, 아이콘, 메뉴 등에서 SaveUnder를 사용합니다." #. default: #: ../../WPrefs.app/Expert.c:53 msgid "Disable confirmation panel for the Kill command." msgstr "강제 종료 명령시 확인 패널을 사용치 않음." #. default: #: ../../WPrefs.app/Expert.c:56 msgid "Disable selection animation for selected icons." msgstr "선택된 아이콘에 선택 애니메이션을 사용하지 않습니다." #. default: #: ../../WPrefs.app/Expert.c:59 msgid "Smooth font edges (needs restart)." msgstr "글꼴 가장자리를 부드럽게 (재시작 필요)." #. default: #: ../../WPrefs.app/Expert.c:62 msgid "Cycle windows only on the active head." msgstr "활성화된 창에서만 순환합니다." #. default: #: ../../WPrefs.app/Expert.c:65 msgid "Ignore minimized windows when cycling." msgstr "순환할 때 최소화된 창을 무시합니다." #. default: #: ../../WPrefs.app/Expert.c:68 msgid "Show workspace title on Clip." msgstr "클립에 작업공간 제목을 보여줍니다." #. default: #: ../../WPrefs.app/Expert.c:71 msgid "Highlight the icon of the application when it has the focus." msgstr "활성화된 응용프로그램의 아이콘을 강조합니다." #: ../../WPrefs.app/Expert.c:75 msgid "Enable keyboard language switch button in window titlebars." msgstr "창 타이틀바에 키보드 언어 전환 버튼을 표시합니다." #: ../../WPrefs.app/Expert.c:174 msgid "Expert User Preferences" msgstr "고급 사용자용 설정" #: ../../WPrefs.app/Expert.c:176 msgid "" "Options for people who know what they're doing...\n" "Also has some other misc. options." msgstr "" "자신이 무엇을 하고 있는지 아는 사람들을 위한 옵션...\n" "또한 기타 기능들의 설정을 합니다." #: ../../WPrefs.app/Focus.c:75 #, c-format msgid "bad option value %s for option FocusMode. Using default Manual" msgstr "FocusMode 옵션에 잘못된 값 %s. 기본값인 Manual을 사용" #: ../../WPrefs.app/Focus.c:87 #, c-format msgid "bad option value %s for option ColormapMode. Using default Auto" msgstr "ColormapMode 옵션에 잘못된 값 %s. 기본값인 Auto를 사용" #: ../../WPrefs.app/Focus.c:195 msgid "Input Focus Mode" msgstr "입력 활성화 모드" #: ../../WPrefs.app/Focus.c:203 msgid "Manual: Click on the window to set keyboard input focus" msgstr "수동: 키보드 입력을 활성화하려면 창을 클릭합니다" #: ../../WPrefs.app/Focus.c:209 msgid "Auto: Set keyboard input focus to the window under the mouse pointer" msgstr "자동: 마우스 포인터 아래에 있는 창으로 키보드 입력을 활성화합니다" #: ../../WPrefs.app/Focus.c:222 msgid "Install colormap from the window..." msgstr "컬러맵의 설치는" #: ../../WPrefs.app/Focus.c:227 msgid "...that has the input focus" msgstr "입력 활성화가 된 창" #: ../../WPrefs.app/Focus.c:232 msgid "...that's under the mouse pointer" msgstr "...마우스 포인터 아래입니다" #: ../../WPrefs.app/Focus.c:241 msgid "Automatic Window Raise Delay" msgstr "자동 창 올림 지연 시간" #: ../../WPrefs.app/Focus.c:296 ../../WPrefs.app/MouseSettings.c:558 msgid "ms" msgstr "ms" #: ../../WPrefs.app/Focus.c:313 msgid "Do not let applications receive the click used to focus windows" msgstr "응용프로그램이 창을 활성화하는 클릭을 받지 못하도록 합니다" #: ../../WPrefs.app/Focus.c:318 msgid "Automatically focus new windows" msgstr "새로운 창을 자동 활성화합니다" #: ../../WPrefs.app/Focus.c:323 msgid "Raise window when switching focus with keyboard" msgstr "키보드로 활성화 전환시 창을 올립니다" #: ../../WPrefs.app/Focus.c:339 msgid "Window Focus Preferences" msgstr "창 활성화 설정" #: ../../WPrefs.app/Focus.c:340 msgid "Keyboard focus switching policy and related options." msgstr "키보드 활성화 전환 방법 및 관련된 옵션을 설정합니다." #: ../../WPrefs.app/FontSimple.c:99 msgid "Window Title" msgstr "창 제목" #: ../../WPrefs.app/FontSimple.c:101 msgid "Menu Text" msgstr "메뉴 글자" #: ../../WPrefs.app/FontSimple.c:102 msgid "Icon Title" msgstr "아이콘 제목" #: ../../WPrefs.app/FontSimple.c:103 msgid "Clip Title" msgstr "클립 제목" #: ../../WPrefs.app/FontSimple.c:104 msgid "Desktop Caption" msgstr "바탕화면 제목" #: ../../WPrefs.app/FontSimple.c:638 msgid "Sample Text" msgstr "글자 예제" #: ../../WPrefs.app/FontSimple.c:655 msgid "Family" msgstr "글꼴" #: ../../WPrefs.app/FontSimple.c:681 msgid "Style" msgstr "글꼴 스타일" #: ../../WPrefs.app/FontSimple.c:684 msgid "Size" msgstr "크기" #: ../../WPrefs.app/FontSimple.c:716 msgid "Font Configuration" msgstr "글꼴 설정" #: ../../WPrefs.app/FontSimple.c:718 msgid "Configure fonts for Window Maker titlebars, menus etc." msgstr "윈도우 메이커의 제목이나 메뉴 등의 글꼴을 설정합니다." #: ../../WPrefs.app/Icons.c:166 msgid "Icon Positioning" msgstr "아이콘 위치" #: ../../WPrefs.app/Icons.c:212 msgid "Icon Size" msgstr "아이콘 크기" #: ../../WPrefs.app/Icons.c:214 msgid "The size of the dock/application icon and miniwindows" msgstr "독/응용프로그램 아이콘, 최소화창의 크기" #: ../../WPrefs.app/Icons.c:231 msgid "Iconification Animation" msgstr "아이콘화시 애니메이션" #: ../../WPrefs.app/Icons.c:242 msgid "Shrinking/Zooming" msgstr "축소/확대" #: ../../WPrefs.app/Icons.c:243 msgid "Spinning/Twisting" msgstr "회전/트위스트" #: ../../WPrefs.app/Icons.c:244 msgid "3D-flipping" msgstr "3차원 회전" #: ../../WPrefs.app/Icons.c:245 ../../WPrefs.app/MouseSettings.c:787 #: ../../WPrefs.app/MouseSettings.c:792 msgid "None" msgstr "없음" #: ../../WPrefs.app/Icons.c:258 msgid "Auto-arrange icons" msgstr "아이콘 자동 정렬" #: ../../WPrefs.app/Icons.c:260 msgid "Keep icons and miniwindows arranged all the time." msgstr "언제나 아이콘과 최소화창을 정렬하도록 합니다." #: ../../WPrefs.app/Icons.c:265 msgid "Omnipresent miniwindows" msgstr "최소화창 항상 보임" #: ../../WPrefs.app/Icons.c:267 msgid "Make miniwindows be present in all workspaces." msgstr "최소화창들이 모든 작업 공간에서 보이게 합니다." #: ../../WPrefs.app/Icons.c:272 msgid "Single click activation" msgstr "한번 눌러 활성화" #: ../../WPrefs.app/Icons.c:274 msgid "Launch applications and restore windows with a single click." msgstr "마우스를 한번 눌러 응용프로그램을 실행하고 창을 복원합니다." #: ../../WPrefs.app/Icons.c:329 msgid "Icon Preferences" msgstr "아이콘 설정" #: ../../WPrefs.app/Icons.c:331 msgid "" "Icon/Miniwindow handling options. Icon positioning\n" "area, sizes of icons, miniaturization animation style." msgstr "" "아이콘/최소화창의 제어 옵션. 아이콘의 위치\n" "크기, 최소화시의 애니메이션 스타일을 지정합니다." #: ../../WPrefs.app/KeyboardSettings.c:68 msgid "Initial Key Repeat" msgstr "초기 키 반복 속도" #: ../../WPrefs.app/KeyboardSettings.c:109 msgid "Key Repeat Rate" msgstr "키 반복율" #: ../../WPrefs.app/KeyboardSettings.c:149 msgid "Type here to test" msgstr "여기서 시험하세요" #: ../../WPrefs.app/KeyboardSettings.c:164 msgid "Keyboard Preferences" msgstr "키보드 설정" #: ../../WPrefs.app/KeyboardSettings.c:166 msgid "Not done" msgstr "완료 안됨" #: ../../WPrefs.app/KeyboardShortcuts.c:72 msgid "Open applications menu" msgstr "응용프로그램 메뉴 열기" #: ../../WPrefs.app/KeyboardShortcuts.c:73 msgid "Open window list menu" msgstr "창 목록 메뉴 열기" #: ../../WPrefs.app/KeyboardShortcuts.c:74 msgid "Open window commands menu" msgstr "창 명령 메뉴 열기" #: ../../WPrefs.app/KeyboardShortcuts.c:75 msgid "Hide active application" msgstr "활성화된 응용프로그램 숨김" #: ../../WPrefs.app/KeyboardShortcuts.c:76 msgid "Hide other applications" msgstr "다른 응용프로그램 숨김" #: ../../WPrefs.app/KeyboardShortcuts.c:77 msgid "Miniaturize active window" msgstr "활성화된 창 최소화" #: ../../WPrefs.app/KeyboardShortcuts.c:78 msgid "Miniaturize all windows" msgstr "모든 창 최소화" #: ../../WPrefs.app/KeyboardShortcuts.c:79 msgid "Close active window" msgstr "활성화된 창 닫기" #: ../../WPrefs.app/KeyboardShortcuts.c:80 msgid "Maximize active window" msgstr "활성화된 창 최대화" #: ../../WPrefs.app/KeyboardShortcuts.c:81 msgid "Maximize active window vertically" msgstr "창을 세로로 최대화" #: ../../WPrefs.app/KeyboardShortcuts.c:82 msgid "Maximize active window horizontally" msgstr "활성 창을 세로로 최대화" #: ../../WPrefs.app/KeyboardShortcuts.c:83 msgid "Maximize active window left half" msgstr "활성 창을 왼쪽 가운데로 최대화" #: ../../WPrefs.app/KeyboardShortcuts.c:84 msgid "Maximize active window right half" msgstr "활성 창을 오른쪽 가운데로 최대화" #: ../../WPrefs.app/KeyboardShortcuts.c:85 msgid "Maximize active window top half" msgstr "활성 창을 위 가운데로 최대화" #: ../../WPrefs.app/KeyboardShortcuts.c:86 msgid "Maximize active window bottom half" msgstr "활성 창을 바닥 가운데로 최대화" #: ../../WPrefs.app/KeyboardShortcuts.c:87 msgid "Maximize active window left top corner" msgstr "활성 창을 왼쪽 위 구석으로 최대화" #: ../../WPrefs.app/KeyboardShortcuts.c:88 msgid "Maximize active window right top corner" msgstr "활성 창을 오른쪽 위 구석으로 최대화" #: ../../WPrefs.app/KeyboardShortcuts.c:89 msgid "Maximize active window left bottom corner" msgstr "창을 세활성 창을 왼쪽바닥 구석으로 최대화" #: ../../WPrefs.app/KeyboardShortcuts.c:90 msgid "Maximize active window right bottom corner" msgstr "활성 창을 오른쪽 바닥 구석으로 최대화" #: ../../WPrefs.app/KeyboardShortcuts.c:91 msgid "Maximus: Tiled maximization " msgstr "" #: ../../WPrefs.app/KeyboardShortcuts.c:92 msgid "Raise active window" msgstr "활성화된 창을 위로" #: ../../WPrefs.app/KeyboardShortcuts.c:93 msgid "Lower active window" msgstr "활성화된 창을 아래로" #: ../../WPrefs.app/KeyboardShortcuts.c:94 msgid "Raise/Lower window under mouse pointer" msgstr "마우스가 위치한 창 올림/내림" #: ../../WPrefs.app/KeyboardShortcuts.c:95 msgid "Shade active window" msgstr "활성화된 창에 그림자 표시" #: ../../WPrefs.app/KeyboardShortcuts.c:96 msgid "Move/Resize active window" msgstr "활성화된 창 이동/크기바꿈" #: ../../WPrefs.app/KeyboardShortcuts.c:97 msgid "Select active window" msgstr "활성화 창 선택" #: ../../WPrefs.app/KeyboardShortcuts.c:98 msgid "Focus next window" msgstr "다음 창 활성화" #: ../../WPrefs.app/KeyboardShortcuts.c:99 msgid "Focus previous window" msgstr "이전 창 활성화" #: ../../WPrefs.app/KeyboardShortcuts.c:100 msgid "Focus next group window" msgstr "다음 창 그룹 활성화" #: ../../WPrefs.app/KeyboardShortcuts.c:101 msgid "Focus previous group window" msgstr "이전 창 그룹 활성화" #. Workspace Related #: ../../WPrefs.app/KeyboardShortcuts.c:104 msgid "Switch to next workspace" msgstr "다음 작업공간으로 전환" #: ../../WPrefs.app/KeyboardShortcuts.c:105 msgid "Switch to previous workspace" msgstr "이전 작업공간으로 전환" #: ../../WPrefs.app/KeyboardShortcuts.c:106 msgid "Switch to last used workspace" msgstr "마지막으로 사용된 작업공간으로 전환" #: ../../WPrefs.app/KeyboardShortcuts.c:107 msgid "Switch to next ten workspaces" msgstr "10개 뒤 작업공간으로 전환" #: ../../WPrefs.app/KeyboardShortcuts.c:108 msgid "Switch to previous ten workspaces" msgstr "10개 앞 작업공간으로 전환" #: ../../WPrefs.app/KeyboardShortcuts.c:109 msgid "Switch to workspace 1" msgstr "작업공간 1로 전환" #: ../../WPrefs.app/KeyboardShortcuts.c:110 msgid "Switch to workspace 2" msgstr "작업공간 2로 전환" #: ../../WPrefs.app/KeyboardShortcuts.c:111 msgid "Switch to workspace 3" msgstr "작업공간 3으로 전환" #: ../../WPrefs.app/KeyboardShortcuts.c:112 msgid "Switch to workspace 4" msgstr "작업공간 4로 전환" #: ../../WPrefs.app/KeyboardShortcuts.c:113 msgid "Switch to workspace 5" msgstr "작업공간 5로 전환" #: ../../WPrefs.app/KeyboardShortcuts.c:114 msgid "Switch to workspace 6" msgstr "작업공간 6으로 전환" #: ../../WPrefs.app/KeyboardShortcuts.c:115 msgid "Switch to workspace 7" msgstr "작업공간 7로 전환" #: ../../WPrefs.app/KeyboardShortcuts.c:116 msgid "Switch to workspace 8" msgstr "작업공간 8로 전환" #: ../../WPrefs.app/KeyboardShortcuts.c:117 msgid "Switch to workspace 9" msgstr "작업공간 9로 전환" #: ../../WPrefs.app/KeyboardShortcuts.c:118 msgid "Switch to workspace 10" msgstr "작업공간 10으로 전환" #: ../../WPrefs.app/KeyboardShortcuts.c:119 msgid "Move window to next workspace" msgstr "창을 다음 작업공간으로 이동" #: ../../WPrefs.app/KeyboardShortcuts.c:120 msgid "Move window to previous workspace" msgstr "창을 이전 작업공간으로 이동" #: ../../WPrefs.app/KeyboardShortcuts.c:121 msgid "Move window to last used workspace" msgstr "창을 마지막에 사용된 작업공간으로 이동" #: ../../WPrefs.app/KeyboardShortcuts.c:122 msgid "Move window to next ten workspaces" msgstr "창을 10개 뒤 작업공간으로 이동" #: ../../WPrefs.app/KeyboardShortcuts.c:123 msgid "Move window to previous ten workspaces" msgstr "창을 10개 앞 작업공간으로 이동" #: ../../WPrefs.app/KeyboardShortcuts.c:124 msgid "Move window to workspace 1" msgstr "창을 작업공간 1로 이동" #: ../../WPrefs.app/KeyboardShortcuts.c:125 msgid "Move window to workspace 2" msgstr "창을 작업공간 2로 이동" #: ../../WPrefs.app/KeyboardShortcuts.c:126 msgid "Move window to workspace 3" msgstr "창을 작업공간 3으로 이동" #: ../../WPrefs.app/KeyboardShortcuts.c:127 msgid "Move window to workspace 4" msgstr "창을 작업공간 4로 이동" #: ../../WPrefs.app/KeyboardShortcuts.c:128 msgid "Move window to workspace 5" msgstr "창을 작업공간 5로 이동" #: ../../WPrefs.app/KeyboardShortcuts.c:129 msgid "Move window to workspace 6" msgstr "창을 작업공간 6으로 이동" #: ../../WPrefs.app/KeyboardShortcuts.c:130 msgid "Move window to workspace 7" msgstr "창을 작업공간 7로 이동" #: ../../WPrefs.app/KeyboardShortcuts.c:131 msgid "Move window to workspace 8" msgstr "창을 작업공간 8로 이동" #: ../../WPrefs.app/KeyboardShortcuts.c:132 msgid "Move window to workspace 9" msgstr "창을 작업공간 9로 이동" #: ../../WPrefs.app/KeyboardShortcuts.c:133 msgid "Move window to workspace 10" msgstr "창을 작업공간 10으로 이동" #. Window Selection #: ../../WPrefs.app/KeyboardShortcuts.c:136 msgid "Shortcut for window 1" msgstr "1번 창 단축키" #: ../../WPrefs.app/KeyboardShortcuts.c:137 msgid "Shortcut for window 2" msgstr "2번 창 단축키" #: ../../WPrefs.app/KeyboardShortcuts.c:138 msgid "Shortcut for window 3" msgstr "3번 창 단축키" #: ../../WPrefs.app/KeyboardShortcuts.c:139 msgid "Shortcut for window 4" msgstr "4번 창 단축키" #: ../../WPrefs.app/KeyboardShortcuts.c:140 msgid "Shortcut for window 5" msgstr "5번 창 단축키" #: ../../WPrefs.app/KeyboardShortcuts.c:141 msgid "Shortcut for window 6" msgstr "6번 창 단축키" #: ../../WPrefs.app/KeyboardShortcuts.c:142 msgid "Shortcut for window 7" msgstr "7번 창 단축키" #: ../../WPrefs.app/KeyboardShortcuts.c:143 msgid "Shortcut for window 8" msgstr "8번 창 단축키" #: ../../WPrefs.app/KeyboardShortcuts.c:144 msgid "Shortcut for window 9" msgstr "9번 창 단축키" #: ../../WPrefs.app/KeyboardShortcuts.c:145 msgid "Shortcut for window 10" msgstr "10번 창 단축키" #. Misc. #: ../../WPrefs.app/KeyboardShortcuts.c:148 msgid "Launch new instance of application" msgstr "응용프로그램을 새로 실행" #: ../../WPrefs.app/KeyboardShortcuts.c:149 msgid "Switch to Next Screen/Monitor" msgstr "다음 작업 화면/모니터로 전환" #: ../../WPrefs.app/KeyboardShortcuts.c:150 msgid "Raise/Lower Dock" msgstr "독 올림/내림" #: ../../WPrefs.app/KeyboardShortcuts.c:151 msgid "Raise/Lower Clip" msgstr "클립 올림/내림" #: ../../WPrefs.app/KeyboardShortcuts.c:153 msgid "Toggle keyboard language" msgstr "키보드 언어 선택" #: ../../WPrefs.app/KeyboardShortcuts.c:334 ../../WPrefs.app/Menu.c:275 #: ../../WPrefs.app/TexturePanel.c:1401 msgid "Cancel" msgstr "취소" #: ../../WPrefs.app/KeyboardShortcuts.c:336 msgid "Press the desired shortcut key(s) or click Cancel to stop capturing." msgstr "원하는 단축키를 누르십시오. 취소를 누르면 캡쳐가 중단됩니다." #: ../../WPrefs.app/KeyboardShortcuts.c:355 #: ../../WPrefs.app/KeyboardShortcuts.c:519 ../../WPrefs.app/Menu.c:285 #: ../../WPrefs.app/Menu.c:733 msgid "Capture" msgstr "캡쳐" #: ../../WPrefs.app/KeyboardShortcuts.c:356 #: ../../WPrefs.app/KeyboardShortcuts.c:527 msgid "Click on Capture to interactively define the shortcut key." msgstr "캡쳐 버튼을 눌러 단축키를 쉽게 지정합니다." #: ../../WPrefs.app/KeyboardShortcuts.c:476 msgid "Actions" msgstr "동작" #: ../../WPrefs.app/KeyboardShortcuts.c:503 msgid "Shortcut" msgstr "단축키" #: ../../WPrefs.app/KeyboardShortcuts.c:513 ../../WPrefs.app/Menu.c:739 msgid "Clear" msgstr "지움" #: ../../WPrefs.app/KeyboardShortcuts.c:568 msgid "Keyboard Shortcut Preferences" msgstr "키보드 단축키 설정" #: ../../WPrefs.app/KeyboardShortcuts.c:570 msgid "" "Change the keyboard shortcuts for actions such\n" "as changing workspaces and opening menus." msgstr "" "메뉴 열기, 작업 공간 전환 같은 동작을 하는 키보드\n" "단축키를 설정합니다." #: ../../WPrefs.app/Menu.c:251 msgid "Select Program" msgstr "프로그램 선택" #: ../../WPrefs.app/Menu.c:413 msgid "New Items" msgstr "새 항목" #: ../../WPrefs.app/Menu.c:414 msgid "Sample Commands" msgstr "명령 예시" #: ../../WPrefs.app/Menu.c:415 msgid "Sample Submenus" msgstr "하부메뉴 예시" #: ../../WPrefs.app/Menu.c:427 msgid "Run Program" msgstr "프로그램 실행" #: ../../WPrefs.app/Menu.c:428 msgid "Internal Command" msgstr "내부 명령" #: ../../WPrefs.app/Menu.c:429 msgid "Submenu" msgstr "하부메뉴" #: ../../WPrefs.app/Menu.c:430 msgid "External Submenu" msgstr "외부 하부메뉴" #: ../../WPrefs.app/Menu.c:431 msgid "Generated Submenu" msgstr "생성된 하부메뉴" #: ../../WPrefs.app/Menu.c:432 msgid "Generated PL Menu" msgstr "생성된 PL 메뉴" #: ../../WPrefs.app/Menu.c:433 msgid "Directory Contents" msgstr "디렉터리 내용" #: ../../WPrefs.app/Menu.c:434 msgid "Workspace Menu" msgstr "작업공간 메뉴" #: ../../WPrefs.app/Menu.c:435 ../../WPrefs.app/MouseSettings.c:789 msgid "Window List Menu" msgstr "창 목록 메뉴" #: ../../WPrefs.app/Menu.c:454 msgid "XTerm" msgstr "" #: ../../WPrefs.app/Menu.c:457 msgid "rxvt" msgstr "" #: ../../WPrefs.app/Menu.c:460 msgid "ETerm" msgstr "" #: ../../WPrefs.app/Menu.c:463 msgid "Run..." msgstr "실행..." #: ../../WPrefs.app/Menu.c:464 #, c-format msgid "%A(Run,Type command to run)" msgstr "" #: ../../WPrefs.app/Menu.c:466 msgid "Firefox" msgstr "파이어폭스" #: ../../WPrefs.app/Menu.c:469 msgid "gimp" msgstr "김프" #: ../../WPrefs.app/Menu.c:472 msgid "epic" msgstr "" #: ../../WPrefs.app/Menu.c:475 msgid "ee" msgstr "" #: ../../WPrefs.app/Menu.c:478 msgid "xv" msgstr "" #: ../../WPrefs.app/Menu.c:481 msgid "Evince" msgstr "" #: ../../WPrefs.app/Menu.c:484 msgid "ghostview" msgstr "고스트뷰" #: ../../WPrefs.app/Menu.c:487 ../../WPrefs.app/Menu.c:758 msgid "Exit Window Maker" msgstr "윈도우 메이커 종료" #: ../../WPrefs.app/Menu.c:509 msgid "Debian Menu" msgstr "데비안 메뉴" #: ../../WPrefs.app/Menu.c:512 msgid "RedHat Menu" msgstr "레드햇 메뉴" #: ../../WPrefs.app/Menu.c:515 msgid "Menu Conectiva" msgstr "" #: ../../WPrefs.app/Menu.c:518 ../../WPrefs.app/Themes.c:211 msgid "Themes" msgstr "테마" #: ../../WPrefs.app/Menu.c:524 msgid "Bg Images (scale)" msgstr "" #: ../../WPrefs.app/Menu.c:530 msgid "Bg Images (tile)" msgstr "" #: ../../WPrefs.app/Menu.c:536 msgid "Assorted XTerms" msgstr "" #: ../../WPrefs.app/Menu.c:538 msgid "XTerm Yellow on Blue" msgstr "" #: ../../WPrefs.app/Menu.c:541 msgid "XTerm White on Black" msgstr "" #: ../../WPrefs.app/Menu.c:544 msgid "XTerm Black on White" msgstr "" #: ../../WPrefs.app/Menu.c:547 msgid "XTerm Black on Beige" msgstr "" #: ../../WPrefs.app/Menu.c:550 msgid "XTerm White on Green" msgstr "" #: ../../WPrefs.app/Menu.c:553 msgid "XTerm White on Olive" msgstr "" #: ../../WPrefs.app/Menu.c:556 msgid "XTerm Blue on Blue" msgstr "" #: ../../WPrefs.app/Menu.c:559 msgid "XTerm BIG FONTS" msgstr "XTerm 큰 글꼴" #: ../../WPrefs.app/Menu.c:580 msgid "Program to Run" msgstr "실행할 프로그램" #: ../../WPrefs.app/Menu.c:590 msgid "Browse" msgstr "찾기" #: ../../WPrefs.app/Menu.c:599 msgid "Run the program inside a Xterm" msgstr "Xterm 안에서 프로그램 실행하기" #: ../../WPrefs.app/Menu.c:608 msgid "Path for Menu" msgstr "메뉴 경로" #: ../../WPrefs.app/Menu.c:619 msgid "" "Enter the path for a file containing a menu\n" "or a list of directories with the programs you\n" "want to have listed in the menu. Ex:\n" "~/GNUstep/Library/WindowMaker/menu\n" "or\n" "/usr/bin ~/xbin" msgstr "" "메뉴를 포함하는 파일 경로나\n" "메뉴에 등록하려는 프로그램의\n" "디렉터리 목록을 입력합니다. 예:\n" "~/GNUstep/Library/WindowMaker/menu\n" "또는\n" "/usr/bin ~/xbin" #: ../../WPrefs.app/Menu.c:631 ../../WPrefs.app/Menu.c:656 msgid "Command" msgstr "명령" #: ../../WPrefs.app/Menu.c:642 msgid "" "Enter a command that outputs a menu\n" "definition to stdout when invoked." msgstr "" "실행되었을 때 메뉴 정의를 표준출력으로\n" "내보내는 명령을 입력합니다." #: ../../WPrefs.app/Menu.c:647 ../../WPrefs.app/Menu.c:672 msgid "" "Cache menu contents after opening for\n" "the first time" msgstr "처음 실행 후에 메뉴 내용을 캐싱합니다." #: ../../WPrefs.app/Menu.c:667 msgid "" "Enter a command that outputs a proplist menu\n" "definition to stdout when invoked." msgstr "" "실행되었을 때 속성목록 메뉴 정의를 표준출력으로\n" "내보내는 명령을 입력합니다." #: ../../WPrefs.app/Menu.c:681 msgid "Command to Open Files" msgstr "파일을 여는 명령" #: ../../WPrefs.app/Menu.c:692 msgid "" "Enter the command you want to use to open the\n" "files in the directories listed below." msgstr "" "아래에 표시된 디렉터리 안의 파일을\n" " 여는데 필요한 명령을 입력합니다." #: ../../WPrefs.app/Menu.c:700 msgid "Directories with Files" msgstr "파일을 포함한 디렉터리" #: ../../WPrefs.app/Menu.c:711 msgid "Strip extensions from file names" msgstr "파일 이름에서 확장자 제거하기" #: ../../WPrefs.app/Menu.c:722 msgid "Keyboard Shortcut" msgstr "키보드 단축키" #: ../../WPrefs.app/Menu.c:754 msgid "Arrange Icons" msgstr "아이콘 정렬" #: ../../WPrefs.app/Menu.c:755 msgid "Hide All Windows Except For The Focused One" msgstr "활성화된 창을 제외한 모든 창 숨기기" #: ../../WPrefs.app/Menu.c:756 msgid "Show All Windows" msgstr "모든 창 보이기" #: ../../WPrefs.app/Menu.c:759 msgid "Exit X Session" msgstr "X 세션 종료" #: ../../WPrefs.app/Menu.c:760 msgid "Restart Window Maker" msgstr "윈도우 메이커 재시작" #: ../../WPrefs.app/Menu.c:761 msgid "Start Another Window Manager : (" msgstr "다른 창 관리자 시작 :(" #: ../../WPrefs.app/Menu.c:763 msgid "Save Current Session" msgstr "현재 세션 저장" #: ../../WPrefs.app/Menu.c:764 msgid "Clear Saved Session" msgstr "저장된 세션 지우기" #: ../../WPrefs.app/Menu.c:765 msgid "Refresh Screen" msgstr "다시 그리기" #: ../../WPrefs.app/Menu.c:766 msgid "Open Info Panel" msgstr "정보 패널 열기" #: ../../WPrefs.app/Menu.c:767 msgid "Open Copyright Panel" msgstr "저작권 패널 열기" #: ../../WPrefs.app/Menu.c:772 msgid "Window Manager to Start" msgstr "시작할 창 관리자" #: ../../WPrefs.app/Menu.c:785 msgid "Do not confirm action." msgstr "동작을 확인하지 않습니다." #: ../../WPrefs.app/Menu.c:792 msgid "" "Instructions:\n" "\n" " - drag items from the left to the menu to add new items\n" " - drag items out of the menu to remove items\n" " - drag items in menu to change their position\n" " - drag items with Control pressed to copy them\n" " - double click in a menu item to change the label\n" " - click on a menu item to change related information" msgstr "" "사용밥법:\n" "\n" "- 새 항목을 메뉴에 더하려면 왼쪽에서 항목을 끌어다 놓습니다\n" "- 항목을 지우려면 메뉴 밖으로 항목을 끌어다 놓습니다\n" "- 항목의 위치를 바꾸려면 메뉴 안에서 항목을 끌어다 놓습니다\n" "- 항목을 복사하려면 컨트롤 키와 동시에 끌어다 놓습니다\n" "- 제목을 바꾸려면 메뉴 항목에서 두 번 누릅니다\n" "- 관련된 정보를 바꾸려면 메뉴 항목 위에서 한번 누릅니다" #: ../../WPrefs.app/Menu.c:1031 #, c-format msgid "unknown command '%s' in menu" msgstr "메뉴에 알려지지 않은 명령 '%s' 입니다" #: ../../WPrefs.app/Menu.c:1055 msgid ": Execute Program" msgstr ": 프로그램 실행" #: ../../WPrefs.app/Menu.c:1059 msgid ": Perform Internal Command" msgstr ": 내부 명령 실행하기" #: ../../WPrefs.app/Menu.c:1063 msgid ": Open a Submenu" msgstr ": 새 하부메뉴 열기" #: ../../WPrefs.app/Menu.c:1067 msgid ": Program Generated Submenu" msgstr ": 프로그램이 만든 하위메뉴" #: ../../WPrefs.app/Menu.c:1071 msgid ": Program Generated Proplist Submenu" msgstr ": 프로그램이 만든 속성목록 하위메뉴" #: ../../WPrefs.app/Menu.c:1075 msgid ": Directory Contents Menu" msgstr ": 디렉터리 내용 메뉴" #: ../../WPrefs.app/Menu.c:1079 msgid ": Open Workspaces Submenu" msgstr ": 작업공간 하부메뉴 열기" #: ../../WPrefs.app/Menu.c:1083 msgid ": Open Window List Submenu" msgstr ": 창 목록 하부메뉴 열기" #: ../../WPrefs.app/Menu.c:1292 msgid "Remove Submenu" msgstr "하부메뉴 지우기" #: ../../WPrefs.app/Menu.c:1293 msgid "" "Removing this item will destroy all items inside\n" "the submenu. Do you really want to do that?" msgstr "이 항목을 제거하면 하위메뉴 안의 모든 항목이 지워집니다.제거합니까?" #: ../../WPrefs.app/Menu.c:1295 msgid "Yes" msgstr "예" #: ../../WPrefs.app/Menu.c:1295 msgid "No" msgstr "아니오" #: ../../WPrefs.app/Menu.c:1295 msgid "Yes, don't ask again" msgstr "예, 다시 묻지 않습니다" #: ../../WPrefs.app/Menu.c:1426 #, c-format msgid "Invalid menu command \"%s\" with label \"%s\" cleared" msgstr "잘못된 메뉴 명령 \"%s\" 과 레이블 \"%s\" 이 지워졌습니다" #: ../../WPrefs.app/Menu.c:1429 ../../WPrefs.app/Menu.c:1487 #: ../../WPrefs.app/WPrefs.c:734 msgid "Warning" msgstr "경고" #: ../../WPrefs.app/Menu.c:1429 ../../WPrefs.app/Menu.c:1462 #: ../../WPrefs.app/MouseSettings.c:123 ../../WPrefs.app/MouseSettings.c:143 #: ../../WPrefs.app/TexturePanel.c:554 ../../WPrefs.app/TexturePanel.c:632 #: ../../WPrefs.app/TexturePanel.c:1395 ../../WPrefs.app/Themes.c:84 #: ../../WPrefs.app/WPrefs.c:683 ../../WPrefs.app/WPrefs.c:687 #: ../../WPrefs.app/WPrefs.c:707 ../../WPrefs.app/WPrefs.c:719 #: ../../WPrefs.app/WPrefs.c:725 ../../WPrefs.app/WPrefs.c:734 #: ../../WPrefs.app/WPrefs.c:765 ../../WPrefs.app/WPrefs.c:769 msgid "OK" msgstr "확인" #: ../../WPrefs.app/Menu.c:1458 #, c-format msgid "Could not open default menu from '%s'" msgstr "'%s'로 부터 기본 메뉴를 열 수 없음" #: ../../WPrefs.app/Menu.c:1462 ../../WPrefs.app/MouseSettings.c:121 #: ../../WPrefs.app/MouseSettings.c:140 ../../WPrefs.app/TexturePanel.c:554 #: ../../WPrefs.app/TexturePanel.c:630 ../../WPrefs.app/Themes.c:83 #: ../../WPrefs.app/WPrefs.c:683 ../../WPrefs.app/WPrefs.c:687 #: ../../WPrefs.app/WPrefs.c:704 ../../WPrefs.app/WPrefs.c:715 #: ../../WPrefs.app/WPrefs.c:725 ../../WPrefs.app/WPrefs.c:765 #: ../../WPrefs.app/WPrefs.c:769 msgid "Error" msgstr "오류" #: ../../WPrefs.app/Menu.c:1488 msgid "" "The menu file format currently in use is not supported\n" "by this tool. Do you want to discard the current menu\n" "to use this tool?" msgstr "" "이 도구는 현재 사용중인 파일 형식을 지원하지 않습니다.\n" "이 도구를 사용하기 위해 현재 메뉴를 버립니까?" #: ../../WPrefs.app/Menu.c:1491 msgid "Yes, Discard and Update" msgstr "예, 버리고 새로 만듭니다." #: ../../WPrefs.app/Menu.c:1491 msgid "No, Keep Current Menu" msgstr "아니오, 현재 메뉴를 유지합니다" #: ../../WPrefs.app/Menu.c:1732 msgid "Applications Menu Definition" msgstr "응용프로그램 메뉴 정의" #: ../../WPrefs.app/Menu.c:1734 msgid "Edit the menu for launching applications." msgstr "응용프로그램 실행을 위한 메뉴를 편집합니다." #: ../../WPrefs.app/MenuPreferences.c:105 msgid "Menu Scrolling Speed" msgstr "메뉴 스크롤 속도" #: ../../WPrefs.app/MenuPreferences.c:153 msgid "Submenu Alignment" msgstr "하부 메뉴 정렬" #: ../../WPrefs.app/MenuPreferences.c:197 msgid "Always open submenus inside the screen, instead of scrolling." msgstr "스크롤하는 대신 항상 화면 내에 하부 메뉴를 엽니다." #: ../../WPrefs.app/MenuPreferences.c:202 msgid "Scroll off-screen menus when pointer is moved over them." msgstr "화면 밖으로 나간 메뉴 쪽으로 마우스를 움직이면 스크롤합니다." #: ../../WPrefs.app/MenuPreferences.c:206 msgid "Use h/j/k/l keys to select menu options." msgstr "메뉴 옵션을 고르는데 h/j/k/l 키를 사용합니다." #: ../../WPrefs.app/MenuPreferences.c:222 msgid "Menu Preferences" msgstr "메뉴 설정" #: ../../WPrefs.app/MenuPreferences.c:224 msgid "" "Menu usability related options. Scrolling speed,\n" "alignment of submenus etc." msgstr "" "메뉴와 관련된 유용한 옵션들. 스크롤 속도, 하부\n" "메뉴의 정렬 방법등을 설정합니다." #: ../../WPrefs.app/MouseSettings.c:122 msgid "Invalid mouse acceleration value. Must be a positive real value." msgstr "잘못된 마우스 가속 임계치 값. 가속 전에 움직일 픽셀의 수여야 함." #: ../../WPrefs.app/MouseSettings.c:142 msgid "" "Invalid mouse acceleration threshold value. Must be the number of pixels to " "travel before accelerating." msgstr "" "잘못된 마우스 가속 임계치 값입니다. 가속 전에 움직일 픽셀의 수가 되어야 합니" "다." #: ../../WPrefs.app/MouseSettings.c:228 ../../WPrefs.app/MouseSettings.c:240 #: ../../WPrefs.app/MouseSettings.c:252 ../../WPrefs.app/MouseSettings.c:264 #, c-format msgid "bad value %s for option %s" msgstr "%s 옵션에 잘못된 값 %s" #: ../../WPrefs.app/MouseSettings.c:323 #, c-format msgid "" "modifier key %s for option ModifierKey was not recognized. Using %s as " "default" msgstr "" "ModifierKey의 수정자 키 값 %s 를 인식할 수 없습니다. 기본값인 %s를 사용합니" "다." #: ../../WPrefs.app/MouseSettings.c:344 msgid "could not retrieve keyboard modifier mapping" msgstr "키보드 수정자 매핑을 얻을 수 없습니다" #: ../../WPrefs.app/MouseSettings.c:438 msgid "Mouse Speed" msgstr "마우스 속도" #: ../../WPrefs.app/MouseSettings.c:451 ../../WPrefs.app/WPrefs.c:382 #: ../../WPrefs.app/WPrefs.c:398 ../../WPrefs.app/WindowHandling.c:359 #: ../../WPrefs.app/WindowHandling.c:371 ../../WPrefs.app/WindowHandling.c:390 #: ../../WPrefs.app/WindowHandling.c:402 #, c-format msgid "could not load icon %s" msgstr "아이콘 %s를 읽어들일 수 없음" #: ../../WPrefs.app/MouseSettings.c:468 msgid "Accel.:" msgstr "가속.:" #: ../../WPrefs.app/MouseSettings.c:479 msgid "Threshold:" msgstr "임계치:" #: ../../WPrefs.app/MouseSettings.c:493 msgid "Double-Click Delay" msgstr "더블 클릭 지연 시간" #: ../../WPrefs.app/MouseSettings.c:536 msgid "Test" msgstr "시험" #: ../../WPrefs.app/MouseSettings.c:566 msgid "Workspace Mouse Actions" msgstr "작업공간 마우스 동작" #: ../../WPrefs.app/MouseSettings.c:571 msgid "Disable mouse actions" msgstr "마우스 동작 사용 안함" #: ../../WPrefs.app/MouseSettings.c:577 msgid "Left Button" msgstr "왼쪽 버튼" #: ../../WPrefs.app/MouseSettings.c:587 msgid "Middle Button" msgstr "가운데 버튼" #: ../../WPrefs.app/MouseSettings.c:597 msgid "Right Button" msgstr "오른쪽 버튼" #: ../../WPrefs.app/MouseSettings.c:607 msgid "Mouse Wheel" msgstr "마우스 휠" #: ../../WPrefs.app/MouseSettings.c:629 msgid "Mouse Grab Modifier" msgstr "마우스 잡기 수정자" #: ../../WPrefs.app/MouseSettings.c:631 msgid "" "Keyboard modifier to use for actions that\n" "involve dragging windows with the mouse,\n" "clicking inside the window." msgstr "" "창 안에서 눌러, 마우스로 창을 끌어다 놓는\n" "동작과 연관된 키보드 수정자입니다." #: ../../WPrefs.app/MouseSettings.c:661 #, c-format msgid "could not create %s" msgstr "%s를 만들 수 없음" #: ../../WPrefs.app/MouseSettings.c:676 #, c-format msgid "could not create temporary file %s" msgstr "임시 파일 %s를 만들 수 없음" #: ../../WPrefs.app/MouseSettings.c:709 #, c-format msgid "could not rename file %s to %s" msgstr "%s 파일을 %s로 바꿀 수 없음" #: ../../WPrefs.app/MouseSettings.c:778 msgid "Shift" msgstr "시프트" #: ../../WPrefs.app/MouseSettings.c:779 msgid "Lock" msgstr "고정" #: ../../WPrefs.app/MouseSettings.c:780 msgid "Control" msgstr "컨트롤" #: ../../WPrefs.app/MouseSettings.c:781 msgid "Mod1" msgstr "" #: ../../WPrefs.app/MouseSettings.c:782 msgid "Mod2" msgstr "" #: ../../WPrefs.app/MouseSettings.c:783 msgid "Mod3" msgstr "" #: ../../WPrefs.app/MouseSettings.c:784 msgid "Mod4" msgstr "" #: ../../WPrefs.app/MouseSettings.c:785 msgid "Mod5" msgstr "" #: ../../WPrefs.app/MouseSettings.c:788 msgid "Applications Menu" msgstr "응용프로그램 메뉴" #: ../../WPrefs.app/MouseSettings.c:790 msgid "Select Windows" msgstr "창 선택하기" #: ../../WPrefs.app/MouseSettings.c:793 msgid "Switch Workspaces" msgstr "작업공간 전환" #: ../../WPrefs.app/MouseSettings.c:797 msgid "Mouse Preferences" msgstr "마우스 설정" #: ../../WPrefs.app/MouseSettings.c:799 msgid "" "Mouse speed/acceleration, double click delay,\n" "mouse button bindings etc." msgstr "" "마우스 속도/가속 기능, 더블 클릭 지연 시간,\n" "마우스 버튼 정의 등" #: ../../WPrefs.app/Paths.c:78 msgid "bad value in option IconPath. Using default path list" msgstr "IconPath 에 잘못된 값. 기본 경로 목록 사용" #: ../../WPrefs.app/Paths.c:95 msgid "bad value in option PixmapPath. Using default path list" msgstr "PixmapPath 에 잘못된 값. 기본 경로 목록 사용" #: ../../WPrefs.app/Paths.c:140 msgid "Select directory" msgstr "디렉터리 선택" #: ../../WPrefs.app/Paths.c:245 msgid "Icon Search Paths" msgstr "아이콘을 찾을 경로" #: ../../WPrefs.app/Paths.c:256 ../../WPrefs.app/Paths.c:287 #: ../../WPrefs.app/TexturePanel.c:1189 msgid "Add" msgstr "추가" #: ../../WPrefs.app/Paths.c:263 ../../WPrefs.app/Paths.c:294 msgid "Remove" msgstr "삭제" #: ../../WPrefs.app/Paths.c:276 msgid "Pixmap Search Paths" msgstr "픽스맵을 찾을 경로" #: ../../WPrefs.app/Paths.c:311 msgid "Search Path Configuration" msgstr "찾을 경로 설정" #: ../../WPrefs.app/Paths.c:313 msgid "" "Search paths to use when looking for pixmaps\n" "and icons." msgstr "픽스맵과 아이콘을 찾을 경로를 지정합니다." #: ../../WPrefs.app/Preferences.c:68 #, c-format msgid "OFF" msgstr "끄기" #: ../../WPrefs.app/Preferences.c:70 #, c-format msgid "1 pixel" msgstr "1 픽셀" #. 2-4 #: ../../WPrefs.app/Preferences.c:73 #, c-format msgid "%i pixels" msgstr "%i 픽셀" #. >4 #: ../../WPrefs.app/Preferences.c:76 #, c-format msgid "%i pixels " msgstr "%i 픽셀" #: ../../WPrefs.app/Preferences.c:214 msgid "Size Display" msgstr "크기 표시" #: ../../WPrefs.app/Preferences.c:216 msgid "" "The position or style of the window size\n" "display that's shown when a window is resized." msgstr "" "창 크기를 변경할 때에 그 크기의 변경 사항을\n" "보여주는 스타일과 위치를 설정합니다." #: ../../WPrefs.app/Preferences.c:222 ../../WPrefs.app/Preferences.c:242 msgid "Corner of screen" msgstr "화면 구석" #: ../../WPrefs.app/Preferences.c:223 ../../WPrefs.app/Preferences.c:243 msgid "Center of screen" msgstr "화면 가운데" #: ../../WPrefs.app/Preferences.c:224 ../../WPrefs.app/Preferences.c:244 msgid "Center of resized window" msgstr "현재 창 가운데" #: ../../WPrefs.app/Preferences.c:225 msgid "Technical drawing-like" msgstr "제도 크기 표시 방법 사용" #: ../../WPrefs.app/Preferences.c:226 ../../WPrefs.app/Preferences.c:245 msgid "Disabled" msgstr "사용 안함" #: ../../WPrefs.app/Preferences.c:234 msgid "Position Display" msgstr "위치 표시" #: ../../WPrefs.app/Preferences.c:236 msgid "" "The position or style of the window position\n" "display that's shown when a window is moved." msgstr "" "창을 이동할 때 그 창의 위치를 출력할 스타일과\n" "보여줄 위치를 설정합니다." #: ../../WPrefs.app/Preferences.c:253 msgid "Show balloon text for..." msgstr "다음에 대해 풍선 도움말을 보기..." #: ../../WPrefs.app/Preferences.c:260 msgid "incomplete window titles" msgstr "불완전한 창 제목" #: ../../WPrefs.app/Preferences.c:261 msgid "miniwindow titles" msgstr "작은 창 제목" #: ../../WPrefs.app/Preferences.c:262 msgid "application/dock icons" msgstr "응용프로그램/독 아이콘" #: ../../WPrefs.app/Preferences.c:263 msgid "internal help" msgstr "내부 도움말" #: ../../WPrefs.app/Preferences.c:271 msgid "AppIcon bouncing" msgstr "앱 아이콘 튕김" #: ../../WPrefs.app/Preferences.c:276 msgid "Disable AppIcon bounce" msgstr "앱 아이콘 튕김 효과 끄기" #: ../../WPrefs.app/Preferences.c:281 msgid "Bounce when the application wants attention" msgstr "응용프로그램에서 메시지가 있으면 앱 아이콘을 튕깁니다" #: ../../WPrefs.app/Preferences.c:287 msgid "Raise AppIcon when bouncing" msgstr "튕기는 앱 아아콘을 엽니다" #: ../../WPrefs.app/Preferences.c:295 msgid "Workspace border" msgstr "작업공간 테두리" #: ../../WPrefs.app/Preferences.c:311 msgid "Left/Right" msgstr "왼쪽/오른쪽" #: ../../WPrefs.app/Preferences.c:316 msgid "Top/Bottom" msgstr "위/아래" #: ../../WPrefs.app/Preferences.c:332 msgid "Miscellaneous Ergonomic Preferences" msgstr "기타 인간 환경 공학적 설정" #: ../../WPrefs.app/Preferences.c:333 msgid "" "Various settings like balloon text, geometry\n" "displays etc." msgstr "" "풍선 도움말, 크기 조정 표시 방법, 창 위치 표시\n" "방법등 다양한 설정을 합니다." #: ../../WPrefs.app/TexturePanel.c:293 msgid "Saturation" msgstr "채도" #: ../../WPrefs.app/TexturePanel.c:295 msgid "Brightness" msgstr "명도" #: ../../WPrefs.app/TexturePanel.c:340 ../../WPrefs.app/TexturePanel.c:346 msgid "Hue" msgstr "색상" #: ../../WPrefs.app/TexturePanel.c:551 msgid "Could not load the selected file: " msgstr "선택한 파일을 읽을 수 없음: " #: ../../WPrefs.app/TexturePanel.c:601 msgid "Open Image" msgstr "이미지 열기" #: ../../WPrefs.app/TexturePanel.c:631 msgid "The selected file does not contain a supported image." msgstr "선택한 이미지 파일의 형식을 지원하지 않습니다." #: ../../WPrefs.app/TexturePanel.c:861 #, c-format msgid "could not load file '%s': %s" msgstr "%s 파일을 읽을 수 없음: %s" #: ../../WPrefs.app/TexturePanel.c:975 #, c-format msgid "error creating texture %s" msgstr "텍스쳐 %s 생성하는 데 오류 발생" #: ../../WPrefs.app/TexturePanel.c:1134 msgid "Texture Panel" msgstr "텍스처 패널" #: ../../WPrefs.app/TexturePanel.c:1141 msgid "Texture Name" msgstr "텍스처 이름" #: ../../WPrefs.app/TexturePanel.c:1153 msgid "Solid Color" msgstr "단색" #: ../../WPrefs.app/TexturePanel.c:1154 msgid "Gradient Texture" msgstr "그래디언트 텍스처" #: ../../WPrefs.app/TexturePanel.c:1155 msgid "Simple Gradient Texture" msgstr "간결한 그래디언트 텍스쳐" #: ../../WPrefs.app/TexturePanel.c:1156 msgid "Textured Gradient" msgstr "텍스쳐 그래디언트" #: ../../WPrefs.app/TexturePanel.c:1157 msgid "Image Texture" msgstr "이미지 텍스처" #: ../../WPrefs.app/TexturePanel.c:1165 msgid "Default Color" msgstr "기본색" #: ../../WPrefs.app/TexturePanel.c:1177 msgid "Gradient Colors" msgstr "그래디언트 색" #: ../../WPrefs.app/TexturePanel.c:1266 msgid "Direction" msgstr "방향" #: ../../WPrefs.app/TexturePanel.c:1294 msgid "Gradient" msgstr "그래디언트" #: ../../WPrefs.app/TexturePanel.c:1310 msgid "Gradient Opacity" msgstr "그래디언트 불투명도" #: ../../WPrefs.app/TexturePanel.c:1350 msgid "Image" msgstr "이미지" #: ../../WPrefs.app/TexturePanel.c:1382 msgid "Tile" msgstr "타일" #: ../../WPrefs.app/TexturePanel.c:1383 msgid "Scale" msgstr "스케일" #: ../../WPrefs.app/TexturePanel.c:1385 msgid "Maximize" msgstr "최대화" #: ../../WPrefs.app/Themes.c:63 ../../WPrefs.app/Themes.c:71 msgid "Set" msgstr "지정" #: ../../WPrefs.app/Themes.c:114 msgid "Stop" msgstr "중지" #: ../../WPrefs.app/Themes.c:125 ../../WPrefs.app/Themes.c:170 #: ../../WPrefs.app/Themes.c:190 msgid "Download" msgstr "다운로드" #: ../../WPrefs.app/Themes.c:139 msgid "Save Current Theme" msgstr "현재 테마 저장" #: ../../WPrefs.app/Themes.c:148 msgid "Load" msgstr "불러오기" #: ../../WPrefs.app/Themes.c:153 msgid "Install" msgstr "설치" #: ../../WPrefs.app/Themes.c:160 msgid "Tile of The Day" msgstr "오늘의 타일(Tile)" #: ../../WPrefs.app/Themes.c:180 msgid "Bar of The Day" msgstr "오늘의 바(Bar)" #: ../../WPrefs.app/WPrefs.c:189 ../../WPrefs.app/WPrefs.c:259 msgid "Window Maker Preferences" msgstr "윈도우 메이커 설정" #: ../../WPrefs.app/WPrefs.c:212 msgid "Revert Page" msgstr "페이지 복구" #: ../../WPrefs.app/WPrefs.c:218 msgid "Revert All" msgstr "모두 복구" #: ../../WPrefs.app/WPrefs.c:224 msgid "Save" msgstr "저장" #: ../../WPrefs.app/WPrefs.c:236 msgid "Balloon Help" msgstr "풍선 도움말" #: ../../WPrefs.app/WPrefs.c:266 #, c-format msgid "Version %s" msgstr "버전 %s" #: ../../WPrefs.app/WPrefs.c:273 msgid "Starting..." msgstr "시작합니다..." #: ../../WPrefs.app/WPrefs.c:357 #, c-format msgid "could not locate image file %s" msgstr "이미지 %s 파일을 찾을 수 없음" #: ../../WPrefs.app/WPrefs.c:411 #, c-format msgid "could not process icon %s: %s" msgstr "아이콘 %s를 처리할 수 없음: %s" #: ../../WPrefs.app/WPrefs.c:603 #, c-format msgid "could not load image file %s:%s" msgstr "이미지 파일 %s를 읽을 수 없음:%s" #: ../../WPrefs.app/WPrefs.c:620 msgid "Loading Window Maker configuration files..." msgstr "윈도우 메이커 설정 파일을 읽는 중..." #: ../../WPrefs.app/WPrefs.c:624 msgid "Initializing configuration panels..." msgstr "설정 패널 초기화 중..." #: ../../WPrefs.app/WPrefs.c:682 ../../WPrefs.app/WPrefs.c:764 #, c-format msgid "Window Maker domain (%s) is corrupted!" msgstr "윈도우 메이커 도메인(%s)이 깨졌습니다!" #: ../../WPrefs.app/WPrefs.c:686 #, c-format msgid "Could not load Window Maker domain (%s) from defaults database." msgstr "기본 데이터베이스에서 윈도우 메이커 도메인(%s)을 읽을 수 없습니다." #: ../../WPrefs.app/WPrefs.c:701 msgid "could not extract version information from Window Maker" msgstr "윈도우 메이커에서 버전 정보를 얻을 수 없습니다" #: ../../WPrefs.app/WPrefs.c:702 msgid "Make sure wmaker is in your search path." msgstr "wmaker가 검색 경로에 있는지 확인하세요." #: ../../WPrefs.app/WPrefs.c:706 msgid "" "Could not extract version from Window Maker. Make sure it is correctly " "installed and is in your PATH environment variable." msgstr "" "윈도우 메이커에서 버전 정보를 얻을 수 없습니다. PATH 환경 변수에 지정된 곳에 " "제대로 설치되었는지 확인하세요." #: ../../WPrefs.app/WPrefs.c:716 msgid "" "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." msgstr "" "윈도우 메이커에서 버전 정보를 얻을 수 없습니다. PATH 환경 변수에 지정된 곳에 " "제대로 설치되었는지 확인하세요." #: ../../WPrefs.app/WPrefs.c:723 #, c-format msgid "" "WPrefs only supports Window Maker 0.18.0 or newer.\n" "The version installed is %i.%i.%i\n" msgstr "" "WPrefs는 윈도우 메이커 0.18.0 이상만을 지원합니다.\n" "설치된 버젼은 %i.%i.%i 입니다.\n" #: ../../WPrefs.app/WPrefs.c:732 #, c-format msgid "" "Window Maker %i.%i.%i, which is installed in your system, is not fully " "supported by this version of WPrefs." msgstr "" "시스템에 설치된 윈도우 메이커 %i.%i.%i는 WPrefs에서 제대로 지원하는 버전이 아" "닙니다." #: ../../WPrefs.app/WPrefs.c:745 #, c-format msgid "could not run \"%s --global_defaults_path\"." msgstr " \"%s --global_defaults_path\" 을 실행할 수 없습니다." #: ../../WPrefs.app/WPrefs.c:768 #, c-format msgid "Could not load global Window Maker domain (%s)." msgstr "전역 윈도우 메이커 도메인 (%s)를 읽어들일 수 없습니다." #: ../../WPrefs.app/WPrefs.c:988 #, c-format msgid "bad speed value for option %s; using default Medium" msgstr "옵션 %s에 잘못된 속도 값을 주었습니다;기본값 Medium을 사용합니다" #: ../../WPrefs.app/WindowHandling.c:158 #, c-format msgid "bad option value %s in WindowPlacement. Using default value" msgstr "WindowPlacement에 잘못된 옵션 값 %s입니다. 기본값을 사용합니다" #: ../../WPrefs.app/WindowHandling.c:177 msgid "invalid data in option WindowPlaceOrigin. Using default (0,0)" msgstr "" "WindowPlaceOrigin 옵션에 잘못된 데이터입니다. 기본값 (0,0)을 사용합니다" #: ../../WPrefs.app/WindowHandling.c:266 msgid "Window Placement" msgstr "창 배치" #: ../../WPrefs.app/WindowHandling.c:267 msgid "" "How to place windows when they are first put\n" "on screen." msgstr "" "스크린에 창을 놓을 때에 어느 곳을 부터 놓을\n" "것인지 설정합니다." #: ../../WPrefs.app/WindowHandling.c:273 msgid "Automatic" msgstr "자동" #: ../../WPrefs.app/WindowHandling.c:274 msgid "Random" msgstr "임의" #: ../../WPrefs.app/WindowHandling.c:275 msgid "Manual" msgstr "수동" #: ../../WPrefs.app/WindowHandling.c:276 msgid "Cascade" msgstr "계단식" #: ../../WPrefs.app/WindowHandling.c:277 msgid "Smart" msgstr "스마트" #: ../../WPrefs.app/WindowHandling.c:284 msgid "Placement Origin" msgstr "기본 위치" #: ../../WPrefs.app/WindowHandling.c:342 msgid "Opaque Move/Resize" msgstr "창 이동/크기 조절할 때 창을 불투명하게" #: ../../WPrefs.app/WindowHandling.c:343 msgid "" "Whether the window contents or only a frame should\n" "be displayed during a move or resize.\n" msgstr "" "창을 이동하거나 크기를 바꾸는 동안\n" "창의 내용 또는 한 장면만 보여줄지 정합니다.\n" #: ../../WPrefs.app/WindowHandling.c:410 msgid "by keyboard" msgstr "키보드 사용" #: ../../WPrefs.app/WindowHandling.c:419 msgid "When maximizing..." msgstr "최대화시에는" #: ../../WPrefs.app/WindowHandling.c:424 msgid "...do not cover icons" msgstr "아이콘을 덮지 않음" #: ../../WPrefs.app/WindowHandling.c:430 msgid "...do not cover dock" msgstr "독을 덮지 않음" #: ../../WPrefs.app/WindowHandling.c:454 msgid "Edge Resistance" msgstr "가장자리 걸림" #: ../../WPrefs.app/WindowHandling.c:456 msgid "" "Edge resistance will make windows `resist'\n" "being moved further for the defined threshold\n" "when moved against other windows or the edges\n" "of the screen." msgstr "" "가장자리 걸림은 창을 이동할 때에 다른 창의\n" "경계나 화면의 가장자리에서 서로 겹쳐지지 않기\n" "위해 약간의 걸림 현상을 주는 것입니다." #: ../../WPrefs.app/WindowHandling.c:475 msgid "Resist" msgstr "밀기" #: ../../WPrefs.app/WindowHandling.c:480 msgid "Attract" msgstr "당김" #: ../../WPrefs.app/WindowHandling.c:493 msgid "Open dialogs in the same workspace as their owners" msgstr "같은 작업 공간에서 소유자로서 대화창 열기" #: ../../WPrefs.app/WindowHandling.c:515 msgid "Window Handling Preferences" msgstr "창 처리 설정" #: ../../WPrefs.app/WindowHandling.c:517 msgid "" "Window handling options. Initial placement style\n" "edge resistance, opaque move etc." msgstr "" "창 제어 옵션. 초기 창 배치 스타일, 가장 자리 걸림\n" "이동시 창 내용 보이기등을 설정합니다." #: ../../WPrefs.app/Workspace.c:118 msgid "Workspace Navigation" msgstr "작업공간 탐색" #: ../../WPrefs.app/Workspace.c:123 msgid "Wrap to the first workspace from the last workspace" msgstr "마지막 작업공간에서 처음 작업공간으로 이동합니다" #: ../../WPrefs.app/Workspace.c:139 msgid "Switch workspaces while dragging windows" msgstr "창을 끄는 동안 작업공간을 전환합니다" #: ../../WPrefs.app/Workspace.c:155 msgid "Automatically create new workspaces" msgstr "자동으로 새 작업공간을 만듭니다" #. WMSetLabelTextAlignment(panel->posL, WARight); #: ../../WPrefs.app/Workspace.c:172 msgid "Position of workspace name display" msgstr "작업공간 이름 표시 위치" #: ../../WPrefs.app/Workspace.c:188 msgid "Disable" msgstr "사용 안함" #: ../../WPrefs.app/Workspace.c:190 msgid "Top" msgstr "위" #: ../../WPrefs.app/Workspace.c:191 msgid "Bottom" msgstr "아래" #: ../../WPrefs.app/Workspace.c:192 msgid "Top/Left" msgstr "위/왼쪽" #: ../../WPrefs.app/Workspace.c:193 msgid "Top/Right" msgstr "위/오른쪽" #: ../../WPrefs.app/Workspace.c:194 msgid "Bottom/Left" msgstr "아래/왼쪽" #: ../../WPrefs.app/Workspace.c:195 msgid "Bottom/Right" msgstr "아래/오른쪽" #: ../../WPrefs.app/Workspace.c:224 msgid "Workspace Preferences" msgstr "작업공간 설정" #: ../../WPrefs.app/Workspace.c:226 msgid "" "Workspace navigation features.\n" "You can also enable/disable the Dock and Clip here." msgstr "" "작업공간 탐색 기능. 독과 클립을\n" "사용할 것인지 설정할 수도 있습니다." #: ../../WPrefs.app/main.c:53 #, c-format msgid "usage: %s [options]\n" msgstr "사용법: %s [옵션]\n" #: ../../WPrefs.app/main.c:54 msgid "options:" msgstr "옵션:" #: ../../WPrefs.app/main.c:55 msgid " -display <display>\tdisplay to be used" msgstr "-display <display>\t사용할 디스플레이" #: ../../WPrefs.app/main.c:56 msgid " --version\t\tprint version number and exit" msgstr "--version\t\t버젼 출력후 종료" #: ../../WPrefs.app/main.c:57 msgid " --help\t\tprint this message and exit" msgstr "--help\t\t현재 메시지 출력 후 종료" #: ../../WPrefs.app/main.c:124 #, c-format msgid "too few arguments for %s" msgstr "%s 의 인수 개수가 너무 적음" #: ../../WPrefs.app/main.c:146 msgid "X server does not support locale" msgstr "X 서버가 로케일을 지원하지 않음" #: ../../WPrefs.app/main.c:149 msgid "cannot set locale modifiers" msgstr "로케일 수정자를 설정할 수 없음" #: ../../WPrefs.app/main.c:155 #, c-format msgid "could not open display %s" msgstr "디스플레이 %s를 열 수 없음" #: ../../WPrefs.app/main.c:163 msgid "could not initialize application" msgstr "응용프로그램을 초기화 할 수 없음" #~ msgid "Window Maker Preferences Utility" #~ msgstr "윈도우 메이커 설정 유틸리티" #~ msgid "Version %s for Window Maker %s or newer" #~ msgstr "버전 %s - 윈도우 메이커 %s 또는 그 이상" #~ 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" #~ msgid "" #~ "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." #~ msgstr "" #~ "WPrefs는 공개 소프트웨어이며 GNU General Public\n" #~ "License에 따라 배포에 대한 어떠한 책임도 가지지\n" #~ "않습니다. 아이콘은 OpenContent License를 따릅니다." #~ msgid "Animations and Sound" #~ msgstr "애니메이션과 음향효과" #~ msgid "Sounds" #~ msgstr "음향 효과" #~ msgid "" #~ "Disable/enable support for sound effects played\n" #~ "for actions like shading and closing a window.\n" #~ "You will need a module distributed separately\n" #~ "for this. You can get it at:\n" #~ "http://www.frontiernet.net/~southgat/wmsound" #~ msgstr "" #~ "쉐이딩, 창 닫기 같은 동작에서 음향 효과를 사용할\n" #~ "것인지의 여부를 설정합니다. 이를 위해서는 따로이\n" #~ "배포되는 모듈이 필요합니다. 이 모듈은 아래에서\n" #~ "구할 수 있습니다:\n" #~ "http://www.frontiernet.net/~southgat/wmsound" #~ msgid "Note: sound requires a module distributed separately" #~ msgstr "주의: 음향 효과는 따로이 배포되는 모듈이 필요함" #~ msgid "Disable cycling color highlighting of icons." #~ msgstr "아이콘에 색상 하이라이팅 순환 사용 않음." #~ msgid "Click window to focus" #~ msgstr "활성화하기 위해 창을 클릭" #~ msgid "Focus follows mouse" #~ msgstr "마우스를 따르는 활성화 모드" #~ msgid "\"Sloppy\" focus" #~ msgstr "\"느슨한\" 활성화 모드" #~ msgid "Raise Clip" #~ msgstr "클립 올림" #~ msgid "Lower Clip" #~ msgstr "클립 내림" #~ msgid "Command to Execute" #~ msgstr "실행할 명령" #~ msgid "New Command %i" #~ msgstr "새 명령 %i" #~ msgid "Workspaces" #~ msgstr "작업 공간" #~ msgid "Add Command" #~ msgstr "명령 추가" #~ msgid "Add External Menu" #~ msgstr "외부 메뉴 추가" #~ msgid "Remove Item" #~ msgstr "항목 삭제" #~ msgid "Cut Item" #~ msgstr "항목 잘라내기" #~ msgid "Copy Item" #~ msgstr "항목 복사" #~ msgid "Paste Item" #~ msgstr "항목 붙이기" #~ msgid "Label" #~ msgstr "레이블" #~ msgid "Execute Shell Command" #~ msgstr "쉘 명령 실행" #~ msgid "Hide Others" #~ msgstr "다른 창 숨기기" #~ msgid "Legal Panel" #~ msgstr "법적인 정보 패널" #~ msgid "Menu Path/Directory List" #~ msgstr "메뉴 경로/디렉토리 목록" #~ msgid "Ask help to the Guru" #~ msgstr "Guru에게 도움 요청" #~ msgid "%s/Library/WindowMaker/plmenu" #~ msgstr "%s/Library/WindowMaker/plmenu.ko" #~ msgid "Copy Default Menu" #~ msgstr "기본 메뉴 복사" #~ msgid "Menu Guru - Select Type" #~ msgstr "메뉴 Guru - 형태를 선택하세요" #~ msgid "Next" #~ msgstr "다음" #~ msgid "Menu Guru - Select Menu File" #~ msgstr "메뉴 Guru - 메뉴 파일을 선택하세요" #~ msgid "Menu Guru - Select Pipe Command" #~ msgstr "메뉴 Guru - 파이프 명령을 선택하세요" #~ msgid "Menu Guru - Select Directories" #~ msgstr "메뉴 Guru - 디렉토리를 선택하세요" #~ msgid "Menu Guru - Select Command" #~ msgstr "메뉴 Guru - 명령을 선택하세요" #~ msgid "Back" #~ msgstr "앞으로" #~ 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" #~ "부메뉴의 내용으로 어떤 것을 사용하고 싶습니까?" #~ msgid "" #~ "A file containing the menu definition in the plain text (non-property " #~ "list) menu format." #~ msgstr "메뉴 정의를 보통 텍스트로(특성 없는 목록) 쓴 파일." #~ msgid "" #~ "The menu definition generated by a script/program read through a pipe." #~ msgstr "스크립트/프로그램으로 생성하여 파이프로 읽어들이는 메뉴 정의." #~ msgid "The files in one or more directories." #~ msgstr "하나 이상의 디렉토리의 파일." #~ msgid "Type the path for the menu file:" #~ msgstr "메뉴 파일의 경로를 적으세요:" #~ 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입니다." #~ msgid "Type the command that will generate the menu definition:" #~ msgstr "메뉴 정의를 만들어낼 명령을 입력하세요:" #~ 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 입" #~ "니다" #~ msgid "" #~ "Type the path for the directory. You can type more than one path by " #~ "separating them with spaces." #~ msgstr "" #~ "디렉토리의 경로를 입력하세요. 빈칸으로 분리해서 하나 이상의 경로를 쓸 수 " #~ "있습니다." #~ 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 이미지 같은 것들)" #~ msgid "" #~ "If the directory contain data files, type the command used to open these " #~ "files. Otherwise, leave it in blank." #~ msgstr "" #~ "디렉토리에 데이터 파일이 있는 경우, 이 파일을 열기 위해 사용할 명령을 입력" #~ "하세요. 그렇지 않으면 빈칸으로 두세요." #~ 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 이미지파일\"과 같은 메뉴 항목을 갖습니다." #~ msgid "Invalid font %s." #~ msgstr "잘못된 글꼴 %s" #~ msgid "Set Font..." #~ msgstr "글꼴 지정..." #~ msgid "Menu Title Font" #~ msgstr "메뉴 제목 글꼴" #~ msgid "Menu Item Font" #~ msgstr "메뉴 항목 글꼴" #~ msgid "Geometry Display Font" #~ msgstr "위치/크기 표시 글꼴" #~ msgid "" #~ "Sample Text\n" #~ "abcdefghijklmnopqrstuvxywz\n" #~ "ABCDEFGHIJKLMNOPQRSTUVXYWZ\n" #~ "0123456789" #~ msgstr "" #~ "Sample Text\n" #~ "abcdefghijklmnopqrstuvxywz\n" #~ "ABCDEFGHIJKLMNOPQRSTUVXYWZ\n" #~ "가나다라마바사\n" #~ "0123456789" #~ msgid "Alignment" #~ msgstr "정렬" #~ msgid "Text Preferences" #~ msgstr "텍스트 설정" ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/po/pt.po��������������������������������������������������������������0000644�0001750�0001750�00000157557�13431646201�014400� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # Mensagens do WPrefs.app traduzidas p/ Português # # Update History: # Alfredo K. Kojima # Eliphas Levy Theodoro <eliphas@conectiva.com.br> # msgid "" msgstr "" "Project-Id-Version: 0.62.1\n" "POT-Creation-Date: 2000-06-06 14:38-0300\n" "PO-Revision-Date: 2000-01-04 18:25-0300\n" "Last-Translator: Eliphas Levy Theodoro <eliphas@conectiva.com.br>\n" "Language-Team: Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "Date: 1998-08-24 03:51:26-0300\n" "From: Eliphas Levy Theodoro <eliphas@conectiva.com.br>\n" "Xgettext-Options: --default-domain=WPrefs --add-comments --keyword=_\n" "Files: ../../WPrefs/Configurations.c ../../WPrefs/Expert.c " "../../WPrefs/Focus.c ../../WPrefs/KeyboardSettings.c " "../../WPrefs/KeyboardShortcuts.c ../../WPrefs/Menu.c ../../WPrefs/MenuGuru.c " "../../WPrefs/MenuPreferences.c ../../WPrefs/MouseSettings.c " "../../WPrefs/Paths.c ../../WPrefs/Preferences.c ../../WPrefs/Text.c " "../../WPrefs/TextureAndColor.c ../../WPrefs/WPrefs.c " "../../WPrefs/WindowHandling.c ../../WPrefs/Workspace.c ../../WPrefs/main.c " "../../WPrefs/xmodifier.c\n" #: ../../WPrefs.app/main.c:74 #, c-format msgid "usage: %s [options]\n" msgstr "uso: %s [opções]\n" #: ../../WPrefs.app/main.c:75 msgid "options:" msgstr "opções:" #: ../../WPrefs.app/main.c:76 msgid " -display <display>\tdisplay to be used" msgstr " -display <display>\tdisplay a ser usado" #: ../../WPrefs.app/main.c:77 msgid " --version\t\tprint version number and exit" msgstr " -version\t\tmostra a versão e sai" #: ../../WPrefs.app/main.c:78 msgid " --help\t\tprint this message and exit" msgstr " -version\t\tmostra a versão e sai" #: ../../WPrefs.app/main.c:137 #, c-format msgid "too few arguments for %s" msgstr "falta de argumentos para %s" #: ../../WPrefs.app/main.c:159 msgid "X server does not support locale" msgstr "Servidor X não suporta locales" #: ../../WPrefs.app/main.c:162 msgid "cannot set locale modifiers" msgstr "Impossível configurar modificadores de locale" #: ../../WPrefs.app/main.c:168 #, c-format msgid "could not open display %s" msgstr "display %s não pôde ser aberto" #: ../../WPrefs.app/main.c:176 msgid "could not initialize application" msgstr "impossível inicializar aplicação" #: ../../WPrefs.app/WPrefs.c:259 msgid "Window Maker Preferences" msgstr "Preferências do WindowMaker" #: ../../WPrefs.app/WPrefs.c:283 msgid "Revert Page" msgstr "Reverter Página" #: ../../WPrefs.app/WPrefs.c:289 msgid "Revert All" msgstr "Reverter Tudo" #: ../../WPrefs.app/WPrefs.c:295 msgid "Save" msgstr "Salvar" #: ../../WPrefs.app/Appearance.c:2245 ../../WPrefs.app/WPrefs.c:301 msgid "Close" msgstr "Fechar" #: ../../WPrefs.app/WPrefs.c:308 msgid "Balloon Help" msgstr "Ajuda em balões" #: ../../WPrefs.app/WPrefs.c:333 msgid "Window Maker Preferences Utility" msgstr "Preferências do WindowMaker" #: ../../WPrefs.app/WPrefs.c:340 #, c-format msgid "Version %s for Window Maker %s or newer" msgstr "Versão %s para WindowMaker %s ou superior" #: ../../WPrefs.app/WPrefs.c:348 msgid "Starting..." msgstr "Iniciando..." #: ../../WPrefs.app/WPrefs.c:354 msgid "" "Programming/Design: Alfredo K. Kojima\n" "Artwork: Marco van Hylckama Vlieg and Largo\n" "More Programming: James Thompson" msgstr "" "Programação/Projeto: Alfredo K. Kojima\n" "Arte: Marco van Hylckama Vlieg e Largo\n" "Mais programação: James Thompson" #: ../../WPrefs.app/WPrefs.c:442 #, c-format msgid "could not locate image file %s\n" msgstr "arquivo de imagem %s não encontrado\n" #: ../../WPrefs.app/Appearance.c:1912 ../../WPrefs.app/Configurations.c:242 #: ../../WPrefs.app/Configurations.c:254 ../../WPrefs.app/Focus.c:316 #: ../../WPrefs.app/Focus.c:327 ../../WPrefs.app/MenuPreferences.c:137 #: ../../WPrefs.app/MenuPreferences.c:148 #: ../../WPrefs.app/MenuPreferences.c:176 #: ../../WPrefs.app/MenuPreferences.c:191 ../../WPrefs.app/MouseSettings.c:561 #: ../../WPrefs.app/MouseSettings.c:572 ../../WPrefs.app/WPrefs.c:545 #: ../../WPrefs.app/WPrefs.c:570 #, c-format msgid "could not load icon file %s" msgstr "arquivo de ícone %s não pôde ser carregado" #: ../../WPrefs.app/WPrefs.c:657 #, c-format msgid "could not load image file %s:%s" msgstr "arquivo de imagem %s não pôde ser carregado:%s" #: ../../WPrefs.app/WPrefs.c:676 msgid "Loading Window Maker configuration files..." msgstr "Carregando arquivos de configuração do WindowMaker..." #: ../../WPrefs.app/WPrefs.c:680 msgid "Initializing configuration panels..." msgstr "Inicializando painéis de configuração..." #: ../../WPrefs.app/WPrefs.c:713 msgid "" "WPrefs is free software and is distributed WITHOUT ANY\n" "WARRANTY under the terms of the GNU General Public License." msgstr "" "O WPrefs é software livre e distribuído SEM NENHUMA\n" "GARANTIA pelos termos da GNU General Public License." #: ../../WPrefs.app/WPrefs.c:742 ../../WPrefs.app/WPrefs.c:812 #, c-format msgid "Window Maker domain (%s) is corrupted!" msgstr "Domínio WindowMaker (%s) corrompido!" #: ../../WPrefs.app/Font.c:330 ../../WPrefs.app/Menu.c:1401 #: ../../WPrefs.app/MouseSettings.c:152 ../../WPrefs.app/MouseSettings.c:172 #: ../../WPrefs.app/TexturePanel.c:608 ../../WPrefs.app/TexturePanel.c:686 #: ../../WPrefs.app/Themes.c:96 ../../WPrefs.app/WPrefs.c:743 #: ../../WPrefs.app/WPrefs.c:748 ../../WPrefs.app/WPrefs.c:762 #: ../../WPrefs.app/WPrefs.c:772 ../../WPrefs.app/WPrefs.c:782 #: ../../WPrefs.app/WPrefs.c:813 ../../WPrefs.app/WPrefs.c:818 msgid "Error" msgstr "Erro" #: ../../WPrefs.app/Font.c:330 ../../WPrefs.app/Menu.c:1401 #: ../../WPrefs.app/MenuGuru.c:119 ../../WPrefs.app/MenuGuru.c:126 #: ../../WPrefs.app/MenuGuru.c:140 ../../WPrefs.app/MouseSettings.c:154 #: ../../WPrefs.app/MouseSettings.c:174 ../../WPrefs.app/TexturePanel.c:609 #: ../../WPrefs.app/TexturePanel.c:688 ../../WPrefs.app/TexturePanel.c:1522 #: ../../WPrefs.app/Themes.c:98 ../../WPrefs.app/WPrefs.c:743 #: ../../WPrefs.app/WPrefs.c:748 ../../WPrefs.app/WPrefs.c:764 #: ../../WPrefs.app/WPrefs.c:776 ../../WPrefs.app/WPrefs.c:782 #: ../../WPrefs.app/WPrefs.c:789 ../../WPrefs.app/WPrefs.c:813 #: ../../WPrefs.app/WPrefs.c:818 msgid "OK" msgstr "OK" #: ../../WPrefs.app/WPrefs.c:746 #, c-format msgid "Could not load Window Maker domain (%s) from defaults database." msgstr "Domínio WindowMaker (%s) não pôde ser carregado do BD de defaults." #: ../../WPrefs.app/WPrefs.c:759 msgid "could not extract version information from Window Maker" msgstr "erro extraindo versão do WindowMaker" #: ../../WPrefs.app/WPrefs.c:760 msgid "Make sure wmaker is in your search path." msgstr "Certifique-se que o WindowMaker está no seu PATH." #: ../../WPrefs.app/WPrefs.c:763 msgid "" "Could not extract version from Window Maker. Make sure it is correctly " "installed and is in your PATH environment variable." msgstr "" "Erro extraindo versão do WindowMaker. Certifique-se que ele está instalado " "corretamente e está em seu PATH." #: ../../WPrefs.app/WPrefs.c:773 msgid "" "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." msgstr "" "Erro extraindo versão do WindowMaker. Certifique-se que ele está instalado " "corretamente e está em seu PATH." #: ../../WPrefs.app/WPrefs.c:780 #, c-format msgid "" "WPrefs only supports Window Maker 0.18.0 or newer.\n" "The version installed is %i.%i.%i\n" msgstr "" "WPrefs só suporta WindowMaker 0.18.0 or mais recente.\n" "A versão instalada é %i.%i.%i\n" #: ../../WPrefs.app/WPrefs.c:787 #, c-format msgid "" "Window Maker %i.%i.%i, which is installed in your system, is not fully " "supported by this version of WPrefs." msgstr "" "O WindowMaker %i.%i.%i, que está instalado em seu sistema, não é totalmente " "suportado por esta versão do WPrefs." #: ../../WPrefs.app/WPrefs.c:789 msgid "Warning" msgstr "Aviso" #: ../../WPrefs.app/WPrefs.c:794 msgid "could not run \"wmaker --global_defaults_path\"." msgstr "não foi possível executar \"wmaker --global_defaults_path\"." #: ../../WPrefs.app/WPrefs.c:816 #, c-format msgid "Could not load global Window Maker domain (%s)." msgstr "Domínio WindowMaker global (%s) não pôde ser carregado." #: ../../WPrefs.app/WPrefs.c:1065 #, c-format msgid "" "bad speed value for option %s\n" ". Using default Medium" msgstr "" "valor de velocidade inválido para opção %s\n" "Usando padrão Medium" #: ../../WPrefs.app/Appearance.c:1104 msgid "Select File" msgstr "Selecionar Arquivo" #: ../../WPrefs.app/Appearance.c:1506 msgid "Focused Window" msgstr "Janela Ativa" #: ../../WPrefs.app/Appearance.c:1510 msgid "Unfocused Window" msgstr "Janela Inativa" #: ../../WPrefs.app/Appearance.c:1514 msgid "Owner of Focused Window" msgstr "Dono da janela ativa" #: ../../WPrefs.app/Appearance.c:1518 ../../WPrefs.app/Appearance.c:1836 msgid "Menu Title" msgstr "Título de Menu" #: ../../WPrefs.app/Appearance.c:1522 ../../WPrefs.app/Appearance.c:1524 msgid "Normal Item" msgstr "Ítem Normal" #: ../../WPrefs.app/Appearance.c:1528 msgid "Disabled Item" msgstr "Ítem Desabilitado" #: ../../WPrefs.app/Appearance.c:1537 msgid "Highlighted" msgstr "Selecionado" #: ../../WPrefs.app/Appearance.c:1729 msgid "Texture" msgstr "Textura" #: ../../WPrefs.app/Appearance.c:1737 msgid "Titlebar of Focused Window" msgstr "Barra de Título da Janela Ativa" #: ../../WPrefs.app/Appearance.c:1738 msgid "Titlebar of Unfocused Windows" msgstr "Barra de Título das Janelas Inativas" #: ../../WPrefs.app/Appearance.c:1739 msgid "Titlebar of Focused Window's Owner" msgstr "Barra de Título do dono da Janela Ativa" #: ../../WPrefs.app/Appearance.c:1740 msgid "Window Resizebar" msgstr "Barra de tamanho" #: ../../WPrefs.app/Appearance.c:1741 msgid "Titlebar of Menus" msgstr "Barra de Título dos Menus" #: ../../WPrefs.app/Appearance.c:1742 msgid "Menu Items" msgstr "Itens de Menu" #: ../../WPrefs.app/Appearance.c:1743 msgid "Icon Background" msgstr "Fundo de Ícone" #: ../../WPrefs.app/Appearance.c:1758 msgid "" "Double click in the texture you want to use\n" "for the selected item." msgstr "" "Dê um duplo clique na textura que você deseja\n" "usar para o item selecionado." #: ../../WPrefs.app/Appearance.c:1772 msgid "New" msgstr "Novo" #: ../../WPrefs.app/Appearance.c:1776 msgid "Create a new texture." msgstr "Cria uma nova textura." #: ../../WPrefs.app/Appearance.c:1784 msgid "Extract..." msgstr "Extrair..." #: ../../WPrefs.app/Appearance.c:1788 msgid "Extract texture(s) from a theme or a style file." msgstr "Extrai texturas de um tema ou arquivo de estilos." #: ../../WPrefs.app/Appearance.c:1798 msgid "Edit" msgstr "Editar" #: ../../WPrefs.app/Appearance.c:1801 msgid "Edit the highlighted texture." msgstr "Edita a textura selecionada." #: ../../WPrefs.app/Appearance.c:1809 ../../WPrefs.app/TexturePanel.c:1310 msgid "Delete" msgstr "Apagar" #: ../../WPrefs.app/Appearance.c:1813 msgid "Delete the highlighted texture." msgstr "Apaga a textura selecionada." #: ../../WPrefs.app/Appearance.c:1826 msgid "Color" msgstr "Cor" #: ../../WPrefs.app/Appearance.c:1833 msgid "Focused Window Title" msgstr "Título da Janela Ativa" #: ../../WPrefs.app/Appearance.c:1834 msgid "Unfocused Window Title" msgstr "Título da Janela Inativa" #: ../../WPrefs.app/Appearance.c:1835 msgid "Owner of Focused Window Title" msgstr "Título do dono da Janela Ativa" #: ../../WPrefs.app/Appearance.c:1837 msgid "Menu Item Text" msgstr "Texto do Item de Menu" #: ../../WPrefs.app/Appearance.c:1838 msgid "Disabled Menu Item Text" msgstr "Texto de item desabilitado" #: ../../WPrefs.app/Appearance.c:1839 msgid "Menu Highlight Color" msgstr "Cor de seleção do Menu" #: ../../WPrefs.app/Appearance.c:1840 msgid "Highlighted Menu Text Color" msgstr "Cor de Texto selecionado" #: ../../WPrefs.app/Appearance.c:1877 msgid "Options" msgstr "Opções:" #: ../../WPrefs.app/Appearance.c:1884 msgid "Menu Style" msgstr "Estilo do Menu" #: ../../WPrefs.app/Appearance.c:1926 msgid "Title Alignment" msgstr "Alinhamento do Título" #: ../../WPrefs.app/Appearance.c:1933 msgid "Left" msgstr "Esquerdo" #: ../../WPrefs.app/Appearance.c:1936 ../../WPrefs.app/TexturePanel.c:1511 #: ../../WPrefs.app/Workspace.c:271 msgid "Center" msgstr "Centro" #: ../../WPrefs.app/Appearance.c:1939 msgid "Right" msgstr "Direita" #: ../../WPrefs.app/Appearance.c:2167 msgid "Appearance Preferences" msgstr "Preferências de Aparência" #: ../../WPrefs.app/Appearance.c:2169 msgid "" "Background texture configuration for windows,\n" "menus and icons." msgstr "" "Configuração da textura de fundo para as janelas,\n" "menus e ícones." #: ../../WPrefs.app/Appearance.c:2214 msgid "Extract Texture" msgstr "Extrair Textura" #: ../../WPrefs.app/Appearance.c:2234 msgid "Textures" msgstr "Texturas" #: ../../WPrefs.app/Appearance.c:2250 msgid "Extract" msgstr "Extrair" #: ../../WPrefs.app/Configurations.c:150 ../../WPrefs.app/Configurations.c:156 #: ../../WPrefs.app/MouseSettings.c:491 ../../WPrefs.app/WindowHandling.c:331 #: ../../WPrefs.app/WindowHandling.c:343 ../../WPrefs.app/Workspace.c:90 #: ../../WPrefs.app/Workspace.c:101 #, c-format msgid "could not load icon %s" msgstr "ícone %s não pôde ser carregado" #: ../../WPrefs.app/Configurations.c:164 ../../WPrefs.app/Workspace.c:109 #, c-format msgid "could not process icon %s: %s" msgstr "ícone %s não pôde ser processado: %s" #: ../../WPrefs.app/Configurations.c:189 ../../WPrefs.app/Workspace.c:164 #, c-format msgid "could not load image file %s" msgstr "arquivo de imagem %s não pôde ser carregado" #: ../../WPrefs.app/Configurations.c:203 msgid "Icon Slide Speed" msgstr "Velocidade dos Ícones " #: ../../WPrefs.app/Configurations.c:209 msgid "Shade Animation Speed" msgstr "Velocidade da Animação do Shade" #: ../../WPrefs.app/Configurations.c:271 msgid "Smooth Scaling" msgstr "Escalonamento suave" #: ../../WPrefs.app/Configurations.c:272 msgid "" "Smooth scaled background images, neutralizing\n" "the `pixelization' effect. This will slow\n" "down loading of background images considerably." msgstr "" "Suaviza imagens escalonadas, neutralizando\n" "o efeito `pixelização'. Isto irá aumentar o\n" "tempo de carga das imagens de fundo consideravelmente." #: ../../WPrefs.app/Configurations.c:313 msgid "Titlebar Style" msgstr "Estilo da Barra de Título" #: ../../WPrefs.app/Configurations.c:351 msgid "Animations and Sound" msgstr "Som e Animações" #: ../../WPrefs.app/Configurations.c:357 msgid "Animations" msgstr "Animações" #: ../../WPrefs.app/Configurations.c:368 msgid "" "Disable/enable animations such as those shown\n" "for window miniaturization, shading etc." msgstr "" "Liga/Desliga animações como miniaturização,\n" "maximização, etc." #: ../../WPrefs.app/Configurations.c:376 msgid "Superfluous" msgstr "Enfeite" #: ../../WPrefs.app/Configurations.c:387 msgid "" "Disable/enable `superfluous' features and\n" "animations. These include the `ghosting' of the\n" "dock when it's being moved to the another side\n" "and the explosion animation for undocked icons." msgstr "" "Liga/Desliga características `supérfluas' e\n" "animações. Isto inclui o `ghosting' do dock\n" "quando está sendo movido para o outro lado\n" "e a explosão para ícones retirados do dock." #: ../../WPrefs.app/Configurations.c:397 msgid "Sounds" msgstr "Sons" #: ../../WPrefs.app/Configurations.c:408 msgid "" "Disable/enable support for sound effects played\n" "for actions like shading and closing a window.\n" "You will need a module distributed separately\n" "for this. You can get it at:\n" "http://www.frontiernet.net/~southgat/wmsound" msgstr "" "Liga/desliga suporte para efeitos de som em ações\n" "como sombreamento e fechar janelas.\n" "Você irá precisar de um módulo distribuído separadamente\n" "para isso. Você pode pegá-lo em:\n" "http://www.frontiernet.net/~southgat/wmsound" #: ../../WPrefs.app/Configurations.c:419 msgid "Note: sound requires a module distributed separately" msgstr "" "Nota: é necessário um módulo distribuído separadamante para se ter sons" #: ../../WPrefs.app/Configurations.c:429 msgid "Dithering colormap for 8bpp" msgstr "No.de cores para dithering em 8bpp" #: ../../WPrefs.app/Configurations.c:431 msgid "" "Number of colors to reserve for Window Maker\n" "on displays that support only 8bpp (PseudoColor)." msgstr "" "Número de cores que o Window Maker reservará\n" "em displays que suportam somente 8bpp (PseudoColor)." #: ../../WPrefs.app/Configurations.c:438 msgid "Disable dithering in any visual/depth" msgstr "Desabilitar dithering" #: ../../WPrefs.app/Configurations.c:459 msgid "More colors for applications" msgstr "Mais cores para applicações" #: ../../WPrefs.app/Configurations.c:466 msgid "More colors for WindowMaker" msgstr "Mais cores para o WindowMaker" #: ../../WPrefs.app/Configurations.c:521 msgid "Other Configurations" msgstr "Outras Configurações" #: ../../WPrefs.app/Configurations.c:523 msgid "" "Animation speeds, titlebar styles, various option\n" "toggling and number of colors to reserve for\n" "Window Maker in 8bit displays." msgstr "" "Velocidade das animações, estilos de barras de título,\n" "várias opções e número de cores para reservar\n" "para o WindowMaker em displays 8 bits." #: ../../WPrefs.app/Expert.c:75 msgid "" "Disable miniwindows (icons for miniaturized windows). For use with KDE/GNOME." msgstr "Desabilita minijanelas (ícones para janelas minimizadas)." #: ../../WPrefs.app/Expert.c:76 msgid "Do not set non-WindowMaker specific parameters (do not use xset)" msgstr "" "Não configurar parâmetros não pertencentes ao WindowMaker (não usar xset)" #: ../../WPrefs.app/Expert.c:77 msgid "Automatically save session when exiting WindowMaker" msgstr "Salvar sessão automaticamente ao sair do WindowMaker" #: ../../WPrefs.app/Expert.c:78 msgid "Use SaveUnder in window frames, icons, menus and other objects" msgstr "Usar SaveUnder nos ícones, menus e outros objetos" #: ../../WPrefs.app/Expert.c:79 msgid "Disable cycling color highlighting of icons." msgstr "Desabilitar ciclagem de cores nos ícones." #: ../../WPrefs.app/Expert.c:80 msgid "Disable confirmation panel for the Kill command." msgstr "Desabilitar confirmação para o comando Terminar." #: ../../WPrefs.app/Expert.c:113 msgid "Expert User Preferences" msgstr "Preferências para Usuários Avançados" #: ../../WPrefs.app/Expert.c:115 msgid "" "Options for people who know what they're doing...\n" "Also have some other misc. options." msgstr "" "Opções para pessoas que sabem o que estão fazendo...\n" "Há também outras opções diversas." #: ../../WPrefs.app/Focus.c:83 #, c-format msgid "bad option value %s for option FocusMode. Using default Manual" msgstr "valor %s inválido para opção FocusMode. Usando default Manual" #: ../../WPrefs.app/Focus.c:98 #, c-format msgid "bad option value %s for option ColormapMode. Using default Auto" msgstr "valor %s inválido para opção ColormapMode. Usando default Auto" #: ../../WPrefs.app/Focus.c:196 msgid "Manual: Click on the window to set keyboard input focus" msgstr "Clicar na janelar para mudar o foco do teclado" #: ../../WPrefs.app/Focus.c:200 msgid "Auto: Set keyboard input focus to the window under the mouse pointer" msgstr "Mudar foco do teclado para a janela sob o cursor do mouse" #: ../../WPrefs.app/Focus.c:249 msgid "Input Focus Mode" msgstr "Modo de Foco do Teclado" #: ../../WPrefs.app/Focus.c:254 msgid "Click window to focus" msgstr "Clicar na janela para focar" #: ../../WPrefs.app/Focus.c:255 msgid "Focus follows mouse" msgstr "\"Focus follows mouse\"" #: ../../WPrefs.app/Focus.c:256 msgid "\"Sloppy\" focus" msgstr "\"Sloppy focus\"" #: ../../WPrefs.app/Focus.c:271 msgid "Install colormap from the window..." msgstr "Instalar colormap na janela..." #: ../../WPrefs.app/Focus.c:276 msgid "...that has the input focus" msgstr "...que tem o foco do teclado" #: ../../WPrefs.app/Focus.c:281 msgid "...that's under the mouse pointer" msgstr "...que está sob o cursor do mouse" #: ../../WPrefs.app/Focus.c:290 msgid "Automatic Window Raise Delay" msgstr "Levantar Janela Depois de..." #: ../../WPrefs.app/Focus.c:347 msgid "ms" msgstr "ms" #: ../../WPrefs.app/Focus.c:364 msgid "Do not let applications receive the click used to focus windows" msgstr "Não deixar aplicação receber o clique usado para focar janelas" #: ../../WPrefs.app/Focus.c:370 msgid "Automatically focus new windows" msgstr "Focar janelas novas automaticamente" #: ../../WPrefs.app/Focus.c:391 msgid "Window Focus Preferences" msgstr "Preferências sobre Foco de Janela" #: ../../WPrefs.app/Focus.c:393 msgid "" "Keyboard focus switching policy, colormap switching\n" "policy for 8bpp displays and other related options." msgstr "" "Política de mudança de foco de teclado, mapa de cores\n" "para displays de 8bpp e outras opções relacionadas." #: ../../WPrefs.app/Font.c:277 msgid "Could not locate font information file WPrefs.app/font.data" msgstr "" "Não foi possível encontrar arquivo de informação de fonte " "WPrefs.app/font.data" #: ../../WPrefs.app/Font.c:283 msgid "Could not read font information file WPrefs.app/font.data" msgstr "" "Não foi possível ler arquivo de informação de fonte WPrefs.app/font.data" #: ../../WPrefs.app/Font.c:294 msgid "" "Invalid data in font information file WPrefs.app/font.data.\n" "Encodings data not found." msgstr "" "Dados inválidos no arquivo de informação de fonte WPrefs.app/font.data.\n" "Dados de codificação não encontrados." #: ../../WPrefs.app/Font.c:299 msgid "- Custom -" msgstr "- Customizar -" #: ../../WPrefs.app/Font.c:377 msgid "Default Font Sets" msgstr "Estilos de Fonte Padrão" #: ../../WPrefs.app/Font.c:390 msgid "Font Set" msgstr "Estilo de Fonte" #: ../../WPrefs.app/Font.c:419 msgid "Add..." msgstr "Adicionar..." #: ../../WPrefs.app/Font.c:424 ../../WPrefs.app/Font.c:439 msgid "Change..." msgstr "Mudar..." #: ../../WPrefs.app/Font.c:429 ../../WPrefs.app/Paths.c:288 #: ../../WPrefs.app/Paths.c:319 msgid "Remove" msgstr "Remover" #: ../../WPrefs.app/Font.c:478 msgid "Font Preferences" msgstr "Preferências de Fonte" #: ../../WPrefs.app/Font.c:479 msgid "Font Configurations for Windows, Menus etc" msgstr "Configuração das fontes para as Janelas, Menus etc" #: ../../WPrefs.app/Icons.c:182 msgid "Icon Positioning" msgstr "Posicionamento de ícones" #: ../../WPrefs.app/Icons.c:229 msgid "Iconification Animation" msgstr "Animação de ícones" #: ../../WPrefs.app/Icons.c:240 msgid "Shrinking/Zooming" msgstr "Zoom" #: ../../WPrefs.app/Icons.c:241 msgid "Spinning/Twisting" msgstr "Girar" #: ../../WPrefs.app/Icons.c:242 msgid "3D-flipping" msgstr "Giro 3D" #: ../../WPrefs.app/Icons.c:243 msgid "None" msgstr "Nenhum" #: ../../WPrefs.app/Icons.c:256 msgid "Auto-arrange icons" msgstr "Auto-alinhar ícones" #: ../../WPrefs.app/Icons.c:258 msgid "Keep icons and miniwindows arranged all the time." msgstr "Mantém ícones e minijanelas alinhados todo o tempo." #: ../../WPrefs.app/Icons.c:264 msgid "Omnipresent miniwindows" msgstr "Minijanelas onipresentes" #: ../../WPrefs.app/Icons.c:266 msgid "Make miniwindows be present in all workspaces." msgstr "Faça as minijanelas presentes em todas as áreas de trabalho." #: ../../WPrefs.app/Icons.c:275 msgid "Icon Size" msgstr "Tamanho do Ícone" #: ../../WPrefs.app/Icons.c:277 msgid "The size of the dock/application icon and miniwindows" msgstr "O tamanho do dock, ícones de aplicação e minijanelas" #: ../../WPrefs.app/Icons.c:347 msgid "Icon Preferences" msgstr "Preferências de ícones" #: ../../WPrefs.app/Icons.c:349 msgid "" "Icon/Miniwindow handling options. Icon positioning\n" "area, sizes of icons, miniaturization animation style." msgstr "" "Opções de manuseio de ícones e minijanelas. Área de\n" "posicionamento, tamanho dos ícones, estilo de animação." #: ../../WPrefs.app/KeyboardSettings.c:74 msgid "Initial Key Repeat" msgstr "Repetição de teclas" #: ../../WPrefs.app/KeyboardSettings.c:115 msgid "Key Repeat Rate" msgstr "Taxa de repetição do teclado" #: ../../WPrefs.app/KeyboardSettings.c:155 msgid "Type here to test" msgstr "Tecle aqui para testar" #: ../../WPrefs.app/KeyboardSettings.c:174 msgid "Keyboard Preferences" msgstr "Preferências de teclado" #: ../../WPrefs.app/KeyboardSettings.c:176 msgid "Not done" msgstr "Não pronto" #: ../../WPrefs.app/KeyboardShortcuts.c:185 ../../WPrefs.app/Menu.c:1027 #: ../../WPrefs.app/MenuGuru.c:263 ../../WPrefs.app/TexturePanel.c:1528 msgid "Cancel" msgstr "Cancelar" #: ../../WPrefs.app/KeyboardShortcuts.c:186 msgid "Press the desired shortcut key(s) or click Cancel to stop capturing." msgstr "" "Tecle a(s) tecla(s) de atalho desejada(s) ou clique Cancelar para parar a " "captura." #: ../../WPrefs.app/KeyboardShortcuts.c:206 #: ../../WPrefs.app/KeyboardShortcuts.c:454 ../../WPrefs.app/Menu.c:1039 #: ../../WPrefs.app/Menu.c:1262 msgid "Capture" msgstr "Capturar" #: ../../WPrefs.app/KeyboardShortcuts.c:207 #: ../../WPrefs.app/KeyboardShortcuts.c:461 msgid "Click Capture to interactively define the shortcut key." msgstr "Clique Capturar para definir a(s) tecla(s) de atalho interativamente." #: ../../WPrefs.app/KeyboardShortcuts.c:361 msgid "Actions" msgstr "Ações" #: ../../WPrefs.app/KeyboardShortcuts.c:377 msgid "Open applications menu" msgstr "Abrir menu de aplicações" #: ../../WPrefs.app/KeyboardShortcuts.c:378 msgid "Open window list menu" msgstr "Abrir lista de janelas" #: ../../WPrefs.app/KeyboardShortcuts.c:379 msgid "Open window commands menu" msgstr "Abrir menu de comandos para janelas" #: ../../WPrefs.app/KeyboardShortcuts.c:380 msgid "Hide active application" msgstr "Esconder (hide) aplicação ativa" #: ../../WPrefs.app/KeyboardShortcuts.c:381 msgid "Miniaturize active window" msgstr "Miniaturizar janela ativa" #: ../../WPrefs.app/KeyboardShortcuts.c:382 msgid "Close active window" msgstr "Fechar janela ativa" #: ../../WPrefs.app/KeyboardShortcuts.c:383 msgid "Maximize active window" msgstr "Maximizar janela ativa" #: ../../WPrefs.app/KeyboardShortcuts.c:384 msgid "Maximize active window vertically" msgstr "Maximizar janela ativa verticalmente" #: ../../WPrefs.app/KeyboardShortcuts.c:385 msgid "Raise active window" msgstr "Levantar janela ativa" #: ../../WPrefs.app/KeyboardShortcuts.c:386 msgid "Lower active window" msgstr "Rebaixar janela ativa" #: ../../WPrefs.app/KeyboardShortcuts.c:387 msgid "Raise/Lower window under mouse pointer" msgstr "Levantar/Rebaixar janela sob cursor" #: ../../WPrefs.app/KeyboardShortcuts.c:388 msgid "Shade active window" msgstr "Shadear janela ativa" #: ../../WPrefs.app/KeyboardShortcuts.c:389 msgid "Move/Resize active window" msgstr "Mover/Redimensionar janela ativa" #: ../../WPrefs.app/KeyboardShortcuts.c:390 msgid "Select active window" msgstr "Selectionar janela ativa" #: ../../WPrefs.app/KeyboardShortcuts.c:391 msgid "Focus next window" msgstr "Focar/ativar próxima janela" #: ../../WPrefs.app/KeyboardShortcuts.c:392 msgid "Focus previous window" msgstr "Focar/ativar janela anterior" #: ../../WPrefs.app/KeyboardShortcuts.c:393 msgid "Switch to next workspace" msgstr "Ir para próxima área de trabalho" #: ../../WPrefs.app/KeyboardShortcuts.c:394 msgid "Switch to previous workspace" msgstr "Ir para área de trabalho anterior" #: ../../WPrefs.app/KeyboardShortcuts.c:395 msgid "Switch to next ten workspaces" msgstr "Ir para as próximas 10 áreas de trabalho" #: ../../WPrefs.app/KeyboardShortcuts.c:396 msgid "Switch to previous ten workspaces" msgstr "Ir para as 10 áreas de trabalho anteriores" #: ../../WPrefs.app/KeyboardShortcuts.c:397 msgid "Switch to workspace 1" msgstr "Ir para área de trabalho 1" #: ../../WPrefs.app/KeyboardShortcuts.c:398 msgid "Switch to workspace 2" msgstr "Ir para área de trabalho 2" #: ../../WPrefs.app/KeyboardShortcuts.c:399 msgid "Switch to workspace 3" msgstr "Ir para área de trabalho 3" #: ../../WPrefs.app/KeyboardShortcuts.c:400 msgid "Switch to workspace 4" msgstr "Ir para área de trabalho 4" #: ../../WPrefs.app/KeyboardShortcuts.c:401 msgid "Switch to workspace 5" msgstr "Ir para área de trabalho 5" #: ../../WPrefs.app/KeyboardShortcuts.c:402 msgid "Switch to workspace 6" msgstr "Ir para área de trabalho 6" #: ../../WPrefs.app/KeyboardShortcuts.c:403 msgid "Switch to workspace 7" msgstr "Ir para área de trabalho 7" #: ../../WPrefs.app/KeyboardShortcuts.c:404 msgid "Switch to workspace 8" msgstr "Ir para área de trabalho 8" #: ../../WPrefs.app/KeyboardShortcuts.c:405 msgid "Switch to workspace 9" msgstr "Ir para área de trabalho 9" #: ../../WPrefs.app/KeyboardShortcuts.c:406 msgid "Switch to workspace 10" msgstr "Ir para área de trabalho 10" #: ../../WPrefs.app/KeyboardShortcuts.c:407 msgid "Shortcut for window 1" msgstr "Atalho para janela 1" #: ../../WPrefs.app/KeyboardShortcuts.c:408 msgid "Shortcut for window 2" msgstr "Atalho para janela 2" #: ../../WPrefs.app/KeyboardShortcuts.c:409 msgid "Shortcut for window 3" msgstr "Atalho para janela 3" #: ../../WPrefs.app/KeyboardShortcuts.c:410 msgid "Shortcut for window 4" msgstr "Atalho para janela 4" #: ../../WPrefs.app/KeyboardShortcuts.c:412 msgid "Shortcut for window 5" msgstr "Atalho para janela 5" #: ../../WPrefs.app/KeyboardShortcuts.c:413 msgid "Shortcut for window 6" msgstr "Atalho para janela 6" #: ../../WPrefs.app/KeyboardShortcuts.c:414 msgid "Shortcut for window 7" msgstr "Atalho para janela 7" #: ../../WPrefs.app/KeyboardShortcuts.c:415 msgid "Shortcut for window 8" msgstr "Atalho para janela 8" #: ../../WPrefs.app/KeyboardShortcuts.c:416 msgid "Shortcut for window 9" msgstr "Atalho para janela 9" #: ../../WPrefs.app/KeyboardShortcuts.c:417 msgid "Shortcut for window 10" msgstr "Atalho para janela 10" #: ../../WPrefs.app/KeyboardShortcuts.c:419 msgid "Raise Clip" msgstr "Levantar Clip" #: ../../WPrefs.app/KeyboardShortcuts.c:420 msgid "Lower Clip" msgstr "Rebaixar Clip" #: ../../WPrefs.app/KeyboardShortcuts.c:421 msgid "Raise/Lower Clip" msgstr "Levantar/Rebaixar Clip" #: ../../WPrefs.app/KeyboardShortcuts.c:423 msgid "Toggle keyboard language" msgstr "Mudar mapa de teclado" #: ../../WPrefs.app/KeyboardShortcuts.c:437 ../../WPrefs.app/Menu.c:1251 msgid "Shortcut" msgstr "Tecla de Atalho" #: ../../WPrefs.app/KeyboardShortcuts.c:448 msgid "Clear" msgstr "Limpar" #: ../../WPrefs.app/KeyboardShortcuts.c:509 msgid "Keyboard Shortcut Preferences" msgstr "Preferências de Teclas de Atalho" #: ../../WPrefs.app/KeyboardShortcuts.c:511 msgid "" "Change the keyboard shortcuts for actions such\n" "as changing workspaces and opening menus." msgstr "" "Muda as teclas de atalho para ações como mudança\n" "de áreas de trabalho e abrir menus." #: ../../WPrefs.app/Menu.c:422 msgid "Window Manager" msgstr "Gerenciador de Janelas" #: ../../WPrefs.app/Menu.c:424 msgid "Program to Open Files" msgstr "Abrir arquivos com programa" #: ../../WPrefs.app/Menu.c:426 msgid "Command to Execute" msgstr "Comando a executar" #: ../../WPrefs.app/Menu.c:428 ../../WPrefs.app/Menu.c:1238 msgid "Program to Run" msgstr "Programa a Executar" #: ../../WPrefs.app/Menu.c:477 ../../WPrefs.app/Menu.c:478 #, c-format msgid "New Command %i" msgstr "Comando %i" #: ../../WPrefs.app/Menu.c:485 msgid "New Submenu" msgstr "Submenu" #: ../../WPrefs.app/Menu.c:490 msgid "External Menu" msgstr "Menu Externo" #: ../../WPrefs.app/Menu.c:497 msgid "Workspaces" msgstr "Áreas de Trabalho" #: ../../WPrefs.app/Menu.c:1119 ../../WPrefs.app/Menu.c:1134 msgid "Commands" msgstr "Comandos" #: ../../WPrefs.app/Menu.c:1120 ../../WPrefs.app/Menu.c:1135 msgid "Add Command" msgstr "Novo Comando" #: ../../WPrefs.app/Menu.c:1121 ../../WPrefs.app/Menu.c:1136 msgid "Add Submenu" msgstr "Novo Submenu" #: ../../WPrefs.app/Menu.c:1122 ../../WPrefs.app/Menu.c:1137 msgid "Add External Menu" msgstr "Menu Externo" #: ../../WPrefs.app/Menu.c:1123 ../../WPrefs.app/Menu.c:1138 msgid "Add Workspace Menu" msgstr "Menu de Áreas de Trab." #: ../../WPrefs.app/Menu.c:1124 ../../WPrefs.app/Menu.c:1139 msgid "Remove Item" msgstr "Remover Item" #: ../../WPrefs.app/Menu.c:1125 ../../WPrefs.app/Menu.c:1140 msgid "Cut Item" msgstr "Cortar Item" #: ../../WPrefs.app/Menu.c:1126 ../../WPrefs.app/Menu.c:1141 msgid "Copy Item" msgstr "Copiar Item" #: ../../WPrefs.app/Menu.c:1127 ../../WPrefs.app/Menu.c:1142 msgid "Paste Item" msgstr "Colar Item" #: ../../WPrefs.app/Menu.c:1173 msgid "Label" msgstr "Título" #: ../../WPrefs.app/Menu.c:1186 msgid "Command" msgstr "Comando" #: ../../WPrefs.app/Menu.c:1191 msgid "Run Program" msgstr "Executar Programa" #: ../../WPrefs.app/Menu.c:1192 msgid "Execute Shell Command" msgstr "Executa um comando do shell" #: ../../WPrefs.app/Menu.c:1193 msgid "Arrange Icons" msgstr "Alinhar Ícones" #: ../../WPrefs.app/Menu.c:1194 msgid "Hide Others" msgstr "Esconder (hide) Outros" #: ../../WPrefs.app/Menu.c:1195 msgid "Show All Windows" msgstr "Mostrar Todas as Janelas" #: ../../WPrefs.app/Menu.c:1196 msgid "Exit WindowMaker" msgstr "Sair do WindowMaker" #: ../../WPrefs.app/Menu.c:1197 msgid "Exit X Session" msgstr "Sair da Sessão do X" #: ../../WPrefs.app/Menu.c:1198 msgid "Start Window Manager" msgstr "Iniciar gerente de janelas" #: ../../WPrefs.app/Menu.c:1199 msgid "Restart WindowMaker" msgstr "Reiniciar WindowMaker" #: ../../WPrefs.app/Menu.c:1200 msgid "Save Session" msgstr "Salvar Sessão" #: ../../WPrefs.app/Menu.c:1201 msgid "Clear Session" msgstr "Limpar Sessão" #: ../../WPrefs.app/Menu.c:1202 msgid "Refresh Screen" msgstr "Refresh da Tela" #: ../../WPrefs.app/Menu.c:1203 msgid "Info Panel" msgstr "Janela de Informações" #: ../../WPrefs.app/Menu.c:1204 msgid "Legal Panel" msgstr "Janela de Inform.Legais" #: ../../WPrefs.app/Menu.c:1212 msgid "Open workspace menu" msgstr "Abrir menu de áreas de trabalho" #: ../../WPrefs.app/Menu.c:1219 msgid "No confirmation panel" msgstr "Sem janela de confirmação" #: ../../WPrefs.app/Menu.c:1225 msgid "Menu Path/Directory List" msgstr "Path do menu/Lista de dirs." #: ../../WPrefs.app/Menu.c:1270 msgid "Ask help to the Guru" msgstr "Pedir ajuda ao Guru" #. if there is a localized plmenu for the tongue put it's filename here #: ../../WPrefs.app/Menu.c:1382 ../../WPrefs.app/Menu.c:1389 #, c-format msgid "%s/Library/WindowMaker/plmenu" msgstr "%s/Library/WindowMaker/plmenu.pt" #: ../../WPrefs.app/Menu.c:1398 #, c-format msgid "Could not open default menu from '%s'" msgstr "Menu padrão %s não pôde ser aberto" #: ../../WPrefs.app/Menu.c:1508 msgid "Applications Menu Definition" msgstr "Definição do Menu de Aplicações" #: ../../WPrefs.app/Menu.c:1510 msgid "Edit the menu for launching applications." msgstr "Edita o menu para a execução de aplicações." #: ../../WPrefs.app/MenuPreferences.c:114 msgid "Menu Scrolling Speed" msgstr "Velocidade de Rolagem do Menu" #: ../../WPrefs.app/MenuPreferences.c:163 msgid "Submenu Alignment" msgstr "Alinhamento de Submenus" #: ../../WPrefs.app/MenuPreferences.c:207 msgid "" "Always open submenus inside the screen, instead of scrolling." msgstr "" "Sempre abrir submenus dentro da tela, ao invés de rolar." #: ../../WPrefs.app/MenuPreferences.c:212 msgid "Scroll off-screen menus when pointer is moved over them." msgstr "Rolar menus para dentro da tela quando o mouse estiver sobre eles." #: ../../WPrefs.app/MenuPreferences.c:232 msgid "Menu Preferences" msgstr "Preferências de Menu" #: ../../WPrefs.app/MenuPreferences.c:234 msgid "" "Menu usability related options. Scrolling speed,\n" "alignment of submenus etc." msgstr "" "Opções de uso de menu. Velocidade de rolagem,\n" "alinhamento de submenus, etc." #: ../../WPrefs.app/MouseSettings.c:153 msgid "Invalid mouse acceleration value. Must be a positive real value." msgstr "Valor de aceleração inválido. Deve ser um valor positivo real." #: ../../WPrefs.app/MouseSettings.c:173 msgid "" "Invalid mouse acceleration threshold value. Must be the number of pixels to " "travel before accelerating." msgstr "" "Valor de distância inválida. Deve ser o número de pixels a percorrer antes " "de acelerar o mouse." #: ../../WPrefs.app/MouseSettings.c:269 ../../WPrefs.app/MouseSettings.c:283 #: ../../WPrefs.app/MouseSettings.c:297 #, c-format msgid "bad value %s for option %s" msgstr "valor %s não é válido para opção %s" #: ../../WPrefs.app/MouseSettings.c:358 #, c-format msgid "" "modifier key %s for option ModifierKey was not recognized. Using %s as " "default" msgstr "" "tecla modificadora %s da opção ModifierKey não foi reconhecida. Usando " "default %s" #: ../../WPrefs.app/MouseSettings.c:383 msgid "could not retrieve keyboard modifier mapping" msgstr "o mapa de modificadores de teclado não pôde ser determinado" #: ../../WPrefs.app/MouseSettings.c:478 msgid "Mouse Speed" msgstr "Velocidade do Mouse" #: ../../WPrefs.app/MouseSettings.c:508 msgid "Accel.:" msgstr "Aceler.:" #: ../../WPrefs.app/MouseSettings.c:521 msgid "Threshold:" msgstr "Distância:" #: ../../WPrefs.app/MouseSettings.c:536 msgid "Double-Click Delay" msgstr "Tempo Para Duplo-Clique" #: ../../WPrefs.app/MouseSettings.c:580 msgid "Test" msgstr "Teste" #: ../../WPrefs.app/MouseSettings.c:610 msgid "Workspace Mouse Actions" msgstr "Ações de Mouse na Área de Trabalho" #: ../../WPrefs.app/MouseSettings.c:615 msgid "Disable mouse actions" msgstr "Desabilitar ações de mouse" #: ../../WPrefs.app/MouseSettings.c:622 msgid "Applications menu" msgstr "Menu de Aplicações" #: ../../WPrefs.app/MouseSettings.c:632 msgid "Window list menu" msgstr "Lista de Janelas" #: ../../WPrefs.app/MouseSettings.c:643 msgid "Select windows" msgstr "Selecionar Janelas" #: ../../WPrefs.app/MouseSettings.c:661 msgid "Mouse Grab Modifier" msgstr "Modificador para Grab de Mouse" #: ../../WPrefs.app/MouseSettings.c:663 msgid "" "Keyboard modifier to use for actions that\n" "involve dragging windows with the mouse,\n" "clicking inside the window." msgstr "" "Modificador de teclado para uso em ações\n" "que involvem arrasto de janelas com o mouse,\n" "clicando dentro da janela." #: ../../WPrefs.app/MouseSettings.c:697 #, c-format msgid "could not create %s" msgstr "%s não pôde ser criado" #: ../../WPrefs.app/MouseSettings.c:713 #, c-format msgid "could not create temporary file %s" msgstr "arquivo temporário %s não pôde ser criado" #: ../../WPrefs.app/MouseSettings.c:744 #, c-format msgid "could not rename file %s to %s\n" msgstr "arquivo %s não pôde ser renomeado para %s\n" #: ../../WPrefs.app/MouseSettings.c:816 msgid "Mouse Preferences" msgstr "Preferências de Mouse" #: ../../WPrefs.app/MouseSettings.c:818 msgid "" "Mouse speed/acceleration, double click delay,\n" "mouse button bindings etc." msgstr "" "Velocidade de aceleração do mouse, velocidade\n" "do duplo clique, atalhos nas teclas do mouse etc." #: ../../WPrefs.app/NoMenuAlert.c:94 #, c-format msgid "" " 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 keep using the current menu, please read the '%s/%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. Window " "Maker supports both formats." msgstr "" " O menu que está sendo usado agora não pode ser aberto. Isso significa também que há um erro de sintaxe nele ou que o menu está em um formato não suportado pelo WPrefs (o WPrefs suporta apenas a lista de menus proprietária).\n" " Se quiser continuar usando o menu atual, ler o arquivo '%s/%s', pressione 'Manter menu atual' e o edite como um editor de textos.\n" " Se quiser usar um editor, pressione 'Copiar menu padrão'. Isso copiará o menu padrão e instruirá o Window Maker a usá-lo em vez do atual.\n" " Se quiser mais flexibilidade, continue a usar o menu atual porque ele permite o uso de macros de pré-processador C (cpp), além de ser fácil de se editar. O Window Maker suporta ambos os formatos." #: ../../WPrefs.app/NoMenuAlert.c:113 msgid "Copy Default Menu" msgstr "Copiar menu padrão" #: ../../WPrefs.app/NoMenuAlert.c:119 msgid "Keep Current Menu" msgstr "Manter menu atual" #: ../../WPrefs.app/Paths.c:84 msgid "bad value in option IconPath. Using default path list" msgstr "valor inválido em IconPath. Usando valor default" #: ../../WPrefs.app/Paths.c:101 msgid "bad value in option PixmapPath. Using default path list" msgstr "valor inválido em PixmapPath. Usando valor default" #: ../../WPrefs.app/Paths.c:149 msgid "Select directory" msgstr "Selecionar Diretório" #: ../../WPrefs.app/Paths.c:270 msgid "Icon Search Paths" msgstr "Caminhos de Procura de Ícones" #: ../../WPrefs.app/Paths.c:281 ../../WPrefs.app/Paths.c:312 #: ../../WPrefs.app/TexturePanel.c:1304 msgid "Add" msgstr "Adicionar" #: ../../WPrefs.app/Paths.c:301 msgid "Pixmap Search Paths" msgstr "Caminho de Procura de Imagens" #: ../../WPrefs.app/Paths.c:341 msgid "Search Path Configuration" msgstr "Configuração de Diretórios de Procura" #: ../../WPrefs.app/Paths.c:343 msgid "" "Search paths to use when looking for pixmaps\n" "and icons." msgstr "" "Caminhos de procura quando abrir pixmaps e\n" "ícones." #: ../../WPrefs.app/Preferences.c:159 msgid "Size Display" msgstr "Display de Tamanho" #: ../../WPrefs.app/Preferences.c:161 msgid "" "The position or style of the window size\n" "display that's shown when a window is resized." msgstr "" "A posição ou estilo da janela sendo\n" "redimensionada." #: ../../WPrefs.app/Preferences.c:168 ../../WPrefs.app/Preferences.c:188 msgid "Corner of screen" msgstr "Canto da tela" #: ../../WPrefs.app/Preferences.c:169 ../../WPrefs.app/Preferences.c:189 msgid "Center of screen" msgstr "Meio da tela" #: ../../WPrefs.app/Preferences.c:170 ../../WPrefs.app/Preferences.c:190 msgid "Center of resized window" msgstr "Meio da janela" #: ../../WPrefs.app/Preferences.c:171 msgid "Technical drawing-like" msgstr "Desenho Técnico" #: ../../WPrefs.app/Preferences.c:179 msgid "Position Display" msgstr "Display de Posição" #: ../../WPrefs.app/Preferences.c:181 msgid "" "The position or style of the window position\n" "display that's shown when a window is moved." msgstr "" "A posição ou estilo do mostrador de posição\n" "da janela quando ela estiver sendo movida." #: ../../WPrefs.app/Preferences.c:198 msgid "Show balloon text for..." msgstr "Mostrar texto em balão para..." #: ../../WPrefs.app/Preferences.c:205 msgid "incomplete window titles" msgstr "títulos de janela incompletos" #: ../../WPrefs.app/Preferences.c:206 msgid "miniwindow titles" msgstr "título de minijanelas" #: ../../WPrefs.app/Preferences.c:207 msgid "application/dock icons" msgstr "ícones de aplicação/dock" #: ../../WPrefs.app/Preferences.c:208 msgid "internal help" msgstr "ajuda interna" #: ../../WPrefs.app/Preferences.c:220 msgid "Raise window when switching focus with keyboard" msgstr "Levantar janela ao mudar de foco com teclado" #: ../../WPrefs.app/Preferences.c:226 msgid "Keep keyboard language status for each window." msgstr "Manter mapa de teclado para cada janela." #: ../../WPrefs.app/Preferences.c:247 msgid "Miscellaneous Ergonomic Preferences" msgstr "Preferências Ergonômicas Diversas" #: ../../WPrefs.app/Preferences.c:248 msgid "" "Various settings like balloon text, geometry\n" "displays etc." msgstr "" "Várias opções como texto em balões, geometria,\n" "etc." #: ../../WPrefs.app/TexturePanel.c:605 msgid "Could not load the selected file: " msgstr "Não foi possível carregar o arquivo selecionado: " #: ../../WPrefs.app/TexturePanel.c:687 msgid "The selected file does not contain a supported image." msgstr "O arquivo selecionado não contém uma imagem suportada." #: ../../WPrefs.app/TexturePanel.c:1248 msgid "Texture Panel" msgstr "Painel de texturas" #: ../../WPrefs.app/TexturePanel.c:1256 msgid "Texture Name" msgstr "Nome da textura" #: ../../WPrefs.app/TexturePanel.c:1268 msgid "Solid Color" msgstr "Cor sólida" #: ../../WPrefs.app/TexturePanel.c:1269 msgid "Gradient Texture" msgstr "Textura gradiente" #: ../../WPrefs.app/TexturePanel.c:1270 msgid "Simple Gradient Texture" msgstr "Textura gradiente simples" #: ../../WPrefs.app/TexturePanel.c:1271 msgid "Textured Gradient" msgstr "Gradiente texturizado" #: ../../WPrefs.app/TexturePanel.c:1272 msgid "Image Texture" msgstr "Imagem de textura" #: ../../WPrefs.app/TexturePanel.c:1280 msgid "Default Color" msgstr "Cor padrão" #: ../../WPrefs.app/TexturePanel.c:1292 msgid "Gradient Colors" msgstr "Cores gradientes" #: ../../WPrefs.app/TexturePanel.c:1388 msgid "Direction" msgstr "Direção" #: ../../WPrefs.app/TexturePanel.c:1416 msgid "Gradient" msgstr "Gradiente" #: ../../WPrefs.app/TexturePanel.c:1434 msgid "Gradient Opacity" msgstr "Opacidade do gradiente" #: ../../WPrefs.app/TexturePanel.c:1477 msgid "Image" msgstr "Imagem" #: ../../WPrefs.app/TexturePanel.c:1497 msgid "Browse..." msgstr "Explorar..." #: ../../WPrefs.app/TexturePanel.c:1509 msgid "Tile" msgstr "Lado a lado" #: ../../WPrefs.app/TexturePanel.c:1510 msgid "Scale" msgstr "Escalonar" #: ../../WPrefs.app/TexturePanel.c:1512 msgid "Maximize" msgstr "Maximizar" #: ../../WPrefs.app/Themes.c:71 ../../WPrefs.app/Themes.c:82 msgid "Set" msgstr "Mudar" #: ../../WPrefs.app/Themes.c:132 msgid "Stop" msgstr "Parar" #: ../../WPrefs.app/Themes.c:143 ../../WPrefs.app/Themes.c:204 #: ../../WPrefs.app/Themes.c:224 msgid "Download" msgstr "Download" #: ../../WPrefs.app/Themes.c:172 msgid "Save Current Theme" msgstr "Salvar tema atual" #: ../../WPrefs.app/Themes.c:181 msgid "Load" msgstr "Carregar" #: ../../WPrefs.app/Themes.c:186 msgid "Install" msgstr "Instalar" #: ../../WPrefs.app/Themes.c:194 msgid "Tile of The Day" msgstr "Azulejo do Dia" #: ../../WPrefs.app/Themes.c:214 msgid "Bar of The Day" msgstr "Barra de título do dia" #: ../../WPrefs.app/Themes.c:251 msgid "Themes" msgstr "Temas" #: ../../WPrefs.app/WindowHandling.c:141 #, c-format msgid "bad option value %s in WindowPlacement. Using default value" msgstr "%s não é valor de WindowPlacement. Usando valor default" #: ../../WPrefs.app/WindowHandling.c:163 msgid "invalid data in option WindowPlaceOrigin. Using default (0,0)" msgstr "Dado inválido na opção WindowPlaceOrigin. Usando padrão (0,0)" #: ../../WPrefs.app/WindowHandling.c:236 msgid "Window Placement" msgstr "Colocação de Janelas" #: ../../WPrefs.app/WindowHandling.c:237 msgid "" "How to place windows when they are first put\n" "on screen." msgstr "" "Como colocar janelas quando da primeira execução\n" "na tela." #: ../../WPrefs.app/WindowHandling.c:243 msgid "Automatic" msgstr "Automático" #: ../../WPrefs.app/WindowHandling.c:244 msgid "Random" msgstr "Randômico" #: ../../WPrefs.app/WindowHandling.c:245 msgid "Manual" msgstr "Manual" #: ../../WPrefs.app/WindowHandling.c:246 msgid "Cascade" msgstr "Cascata" #: ../../WPrefs.app/WindowHandling.c:247 msgid "Smart" msgstr "Inteligente" #: ../../WPrefs.app/WindowHandling.c:253 msgid "Placement Origin" msgstr "Origem da Colocação" #: ../../WPrefs.app/WindowHandling.c:313 msgid "Opaque Move" msgstr "Movimento opaco" #: ../../WPrefs.app/WindowHandling.c:314 msgid "" "Whether the window contents should be moved\n" "when dragging windows aroung or if only a\n" "frame should be displayed.\n" msgstr "" "Se o conteúdo da janela deve ser movido\n" "quando arrastada a janela ou somente um\n" "quadro deve ser mostrado.\n" #: ../../WPrefs.app/WindowHandling.c:353 msgid "When maximizing..." msgstr "Ao maximizar..." #: ../../WPrefs.app/WindowHandling.c:358 msgid "...do not cover icons" msgstr "...não sobrepor ícones" #: ../../WPrefs.app/WindowHandling.c:364 msgid "...do not cover dock" msgstr "...não sobrepor o dock" #: ../../WPrefs.app/WindowHandling.c:373 msgid "Edge Resistance" msgstr "Borda Resistente" #: ../../WPrefs.app/WindowHandling.c:375 msgid "" "Edge resistance will make windows `resist'\n" "being moved further for the defined threshold\n" "when moved against other windows or the edges\n" "of the screen." msgstr "" "A borda resistente fará com que as janelas\n" "`resistam' a ser movidas acima de outras\n" "ou nas bordas da tela." #: ../../WPrefs.app/WindowHandling.c:394 msgid "Resist" msgstr "Resistência" #: ../../WPrefs.app/WindowHandling.c:399 msgid "Attract" msgstr "Atrair" #: ../../WPrefs.app/WindowHandling.c:415 msgid "Open dialogs in same workspace as their owners" msgstr "Abrir diálogos na mesma área de trabalho que seus donos" #: ../../WPrefs.app/WindowHandling.c:442 msgid "Window Handling Preferences" msgstr "Preferências de Manipulação de Janelas" #: ../../WPrefs.app/WindowHandling.c:444 msgid "" "Window handling options. Initial placement style\n" "edge resistance, opaque move etc." msgstr "" "Opções de manuseio de janelas. Posicionamento\n" "inicial, borda resistente, movimento opaco, etc." #: ../../WPrefs.app/Workspace.c:177 msgid "Workspace Navigation" msgstr "Navegação de Áreas de Trabalho" #: ../../WPrefs.app/Workspace.c:184 msgid "Wrap to the first workspace from the last workspace" msgstr "Ir para a primeira área de trabalho quando passar a última" #: ../../WPrefs.app/Workspace.c:206 msgid "Switch workspaces while dragging windows" msgstr "Mover janelas entre áreas de trabalho" #: ../../WPrefs.app/Workspace.c:228 msgid "Automatically create new workspaces" msgstr "criar áreas de trabalho novas automaticamente" #: ../../WPrefs.app/Workspace.c:251 msgid "Position of workspace name display" msgstr "Posição do nome da área de trabalho" #: ../../WPrefs.app/Workspace.c:270 msgid "Disable" msgstr "Desabilitar" #: ../../WPrefs.app/Workspace.c:272 msgid "Top" msgstr "Cima" #: ../../WPrefs.app/Workspace.c:273 msgid "Bottom" msgstr "Baixo" #: ../../WPrefs.app/Workspace.c:274 msgid "Top/left" msgstr "Cima/esquerda" #: ../../WPrefs.app/Workspace.c:275 msgid "Top/right" msgstr "Cima/direita" #: ../../WPrefs.app/Workspace.c:276 msgid "Bottom/left" msgstr "Baixo/esquerda" #: ../../WPrefs.app/Workspace.c:277 msgid "Bottom/right" msgstr "Baixo/direita" #: ../../WPrefs.app/Workspace.c:285 msgid "Dock/Clip" msgstr "Dock/Clip" #: ../../WPrefs.app/Workspace.c:304 msgid "" "Disable/enable the application Dock (the\n" "vertical icon bar in the side of the screen)." msgstr "" "Liga/Desliga o Dock (a barra de ícones vertical\n" "no lado da tela)." #: ../../WPrefs.app/Workspace.c:325 msgid "" "Disable/enable the Clip (that thing with\n" "a paper clip icon)." msgstr "" "Liga/Desliga o Clip (aquela coisa com um\n" "ícone de clip de papel)." #: ../../WPrefs.app/Workspace.c:365 msgid "Workspace Preferences" msgstr "Preferências da Área de Trabalho" #: ../../WPrefs.app/Workspace.c:367 msgid "" "Workspace navigation features.\n" "You can also enable/disable the Dock and Clip here." msgstr "" "Aspectos de navegação de Áreas de trabalho.\n" "Aqui você pode também ativar/desativar o Dock e o Clip." #: ../../WPrefs.app/MenuGuru.c:106 msgid "Menu Guru - Select Type" msgstr "Guru de Menu - Tipo" #: ../../WPrefs.app/MenuGuru.c:111 ../../WPrefs.app/MenuGuru.c:133 #: ../../WPrefs.app/MenuGuru.c:251 msgid "Next" msgstr "Próximo" #: ../../WPrefs.app/MenuGuru.c:114 msgid "Menu Guru - Select Menu File" msgstr "Guru de Menu - Arquivo de Menu" #: ../../WPrefs.app/MenuGuru.c:122 msgid "Menu Guru - Select Pipe Command" msgstr "Guru de Menu - Comando Para Pipe" #: ../../WPrefs.app/MenuGuru.c:129 msgid "Menu Guru - Select Directories" msgstr "Guru de Menu - Diretórios" #: ../../WPrefs.app/MenuGuru.c:136 msgid "Menu Guru - Select Command" msgstr "Guru de Menu - Comando" #: ../../WPrefs.app/MenuGuru.c:257 msgid "Back" msgstr "Voltar" #: ../../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 "" "Este processo irá ajudá-lo a criar um submenu cuja definição é criada " "dinamicamente ou localizada em um outro arquivo.\n" "O que deseja usar como o conteúdo do submenu?" #: ../../WPrefs.app/MenuGuru.c:279 msgid "" "A file containing the menu definition in the plain text (non-property list) " "menu format." msgstr "" "Um arquivo contendo a definição do menu em formato de texto puro (não é " "property list)." #: ../../WPrefs.app/MenuGuru.c:285 msgid "The menu definition generated by a script/program read through a pipe." msgstr "A definição de um menu gerado por um script/programa lido por um pipe." #: ../../WPrefs.app/MenuGuru.c:291 msgid "The files in one or more directories." msgstr "Os arquivos em um ou mais diretórios." #: ../../WPrefs.app/MenuGuru.c:303 msgid "Type the path for the menu file:" msgstr "Digite o caminho para o arquivo de menu:" #: ../../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 "" "O arquivo de menu deve conter um menu em formato texto puro. Esse formato é " "descrito no menu incluído no WindowMaker, provavelmente em " "~/GNUstep/Library/WindowMaker/menu." #: ../../WPrefs.app/MenuGuru.c:328 msgid "Type the command that will generate the menu definition:" msgstr "Digite o comando que irá gerar a definição do menu:" #: ../../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 "" "O comando deverá gerar uma definição de menu válida e mandá-lo para o " "stdout. Esta definição deve estar no formato descrito em " "~/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 "" "Digite o caminho para o diretório. Você pode digitar mais de um caminho, " "separando-os com um espaço." #: ../../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 "" "O menu gerado terá um item para cada arquivo no diretório. Os diretórios " "podem conter programas ou arquivos de dados (como imagens jpeg, por exemplo)" #: ../../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 "" "Se o diretório contém arquivos de dados, digite o comando que deve ser usado " "para abri-los. Senão, deixe em branco." #: ../../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 "" "Cada arquivo no diretório terá um item que executará o programa com o " "arquivo como parâmetro." #~ msgid "mouse button %s not supported by WPrefs." #~ msgstr "botão de mouse %s não é suportado pelo WPrefs." #~ msgid "Invalid font %s." #~ msgstr "Fonte inválida %s." #~ msgid "Set Font..." #~ msgstr "Mudar Fonte..." #~ msgid "Window Title Font" #~ msgstr "Fonte de Título de Janela" #~ msgid "Menu Title Font" #~ msgstr "Fonte de Título de Menu" #~ msgid "Menu Item Font" #~ msgstr "Fonte de Item de Menu" #~ msgid "Icon Title Font" #~ msgstr "Fonte de Título de Ícone" #~ msgid "Clip Title Font" #~ msgstr "Fonte do Título do Clip" #~ msgid "Geometry Display Font" #~ msgstr "Fonte do display de tam/pos" #~ msgid "" #~ "Sample Text\n" #~ "abcdefghijklmnopqrstuvxywz\n" #~ "ABCDEFGHIJKLMNOPQRSTUVXYWZ\n" #~ "0123456789" #~ msgstr "" #~ "Texto de Teste\n" #~ "abcdefghijklmnopqrstuvxywz\n" #~ "ABCDEFGHIJKLMNOPQRSTUVXYWZ\n" #~ "áéíóúÁÉÍÓÚâêîôûãõ\n" #~ "0123456789" #~ msgid "Alignment" #~ msgstr "Alinhamento" #~ msgid "Text Preferences" #~ msgstr "Preferências Texto" #~ msgid "drag windows between workspaces." #~ msgstr "Mover janelas pelas áreas de trabalho." #~ msgid "" #~ "switch to first workspace when switching past the last workspace and " #~ "vice-versa" #~ msgstr "" #~ "Ir para a primeira área de trabalho quando passar da última evice-versa" �������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/po/ja.po��������������������������������������������������������������0000644�0001750�0001750�00000167356�13431646201�014345� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# modified by Yasuyuki Furukawa <yasu@on.cs.keio.ac.jp> # Jun Nishii <nishii@postman.riken.go.jp> # MANOME Tomonori <manome@itlb.te.noda.sut.ac.jp> # Takeo Hashimoto <hashimototakeo@mac.com> # collaborated with members in wmaker-jp ML and Project Vine # # Last Update: for WindowMaker 0.95.2 # msgid "" msgstr "" "Project-Id-Version: WPrefs.app \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-02-20 12:47+0900\n" "PO-Revision-Date: 2012-03-01 09:52+ZONE\n" "Last-Translator: Takeo Hashimoto <hashimototakeo@mac.com>\n" "Language-Team: Japanese \n" "Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../../WPrefs.app/Appearance.c:1052 msgid "Select File" msgstr "ファイルの選択" #: ../../WPrefs.app/Appearance.c:1408 msgid "Focused Window" msgstr "フォーカスウィンドウ" #: ../../WPrefs.app/Appearance.c:1413 msgid "Unfocused Window" msgstr "フォーカスされてないウィンドウ" #: ../../WPrefs.app/Appearance.c:1418 msgid "Owner of Focused Window" msgstr "フォーカスウィンドウのオーナー" #: ../../WPrefs.app/Appearance.c:1422 ../../WPrefs.app/Appearance.c:1720 #: ../../WPrefs.app/FontSimple.c:100 msgid "Menu Title" msgstr "メニュータイトル" #: ../../WPrefs.app/Appearance.c:1426 ../../WPrefs.app/Appearance.c:1428 msgid "Normal Item" msgstr "普通の項目" #: ../../WPrefs.app/Appearance.c:1433 msgid "Disabled Item" msgstr "無効な項目" #: ../../WPrefs.app/Appearance.c:1442 msgid "Highlighted" msgstr "ハイライト" #: ../../WPrefs.app/Appearance.c:1620 msgid "Texture" msgstr "テクスチャ" #: ../../WPrefs.app/Appearance.c:1627 msgid "Titlebar of Focused Window" msgstr "フォーカスウィンドウのタイトルバー" #: ../../WPrefs.app/Appearance.c:1628 msgid "Titlebar of Unfocused Windows" msgstr "フォーカスのないウィンドウのタイトルバー" #: ../../WPrefs.app/Appearance.c:1629 msgid "Titlebar of Focused Window's Owner" msgstr "フォーカスウィンドウのオーナーのタイトルバー" #: ../../WPrefs.app/Appearance.c:1630 msgid "Window Resizebar" msgstr "リサイズバー" #: ../../WPrefs.app/Appearance.c:1631 msgid "Titlebar of Menus" msgstr "メニューのタイトルバー" #: ../../WPrefs.app/Appearance.c:1632 msgid "Menu Items" msgstr "メニュー項目" #: ../../WPrefs.app/Appearance.c:1633 msgid "Icon Background" msgstr "アイコンの背景" #: ../../WPrefs.app/Appearance.c:1648 msgid "" "Double click in the texture you want to use\n" "for the selected item." msgstr "" "選択した項目に使用したいテクスチャを\n" "ダブルクリックしてください" #: ../../WPrefs.app/Appearance.c:1660 msgid "New" msgstr "新規" #: ../../WPrefs.app/Appearance.c:1664 msgid "Create a new texture." msgstr "新規テクスチャの作成" #: ../../WPrefs.app/Appearance.c:1671 msgid "Extract..." msgstr "抽出..." #: ../../WPrefs.app/Appearance.c:1675 msgid "Extract texture(s) from a theme or a style file." msgstr "テーマやスタイルからテクスチャを抽出します." #: ../../WPrefs.app/Appearance.c:1684 msgid "Edit" msgstr "編集" #: ../../WPrefs.app/Appearance.c:1687 msgid "Edit the highlighted texture." msgstr "ハイライトされているテクスチャを編集します." #: ../../WPrefs.app/Appearance.c:1694 ../../WPrefs.app/TexturePanel.c:1197 msgid "Delete" msgstr "削除" #: ../../WPrefs.app/Appearance.c:1698 msgid "Delete the highlighted texture." msgstr "ハイライトされているテクスチャを削除します." #: ../../WPrefs.app/Appearance.c:1710 msgid "Color" msgstr "色..." #: ../../WPrefs.app/Appearance.c:1717 msgid "Focused Window Title" msgstr "フォーカスウィンドウのタイトル" #: ../../WPrefs.app/Appearance.c:1718 msgid "Unfocused Window Title" msgstr "フォーカスされていないウィンドウのタイトル" #: ../../WPrefs.app/Appearance.c:1719 msgid "Owner of Focused Window Title" msgstr "フォーカスウィンドウのオーナーのタイトル" #: ../../WPrefs.app/Appearance.c:1721 msgid "Menu Item Text" msgstr "メニュー項目の文字" #: ../../WPrefs.app/Appearance.c:1722 msgid "Disabled Menu Item Text" msgstr "無効なメニュー項目の文字" #: ../../WPrefs.app/Appearance.c:1723 msgid "Menu Highlight Color" msgstr "ハイライトされたメニュー項目" #: ../../WPrefs.app/Appearance.c:1724 msgid "Highlighted Menu Text Color" msgstr "ハイライトされたメニューの文字" #: ../../WPrefs.app/Appearance.c:1761 msgid "Background" msgstr "背景" #: ../../WPrefs.app/Appearance.c:1773 ../../WPrefs.app/TexturePanel.c:1372 msgid "Browse..." msgstr "参照..." #: ../../WPrefs.app/Appearance.c:1783 msgid "Options" msgstr "オプション" #: ../../WPrefs.app/Appearance.c:1790 msgid "Menu Style" msgstr "メニューのスタイル" #: ../../WPrefs.app/Appearance.c:1818 ../../WPrefs.app/Configurations.c:216 #: ../../WPrefs.app/Configurations.c:228 ../../WPrefs.app/Focus.c:263 #: ../../WPrefs.app/Focus.c:274 ../../WPrefs.app/MenuPreferences.c:127 #: ../../WPrefs.app/MenuPreferences.c:138 #: ../../WPrefs.app/MenuPreferences.c:166 #: ../../WPrefs.app/MenuPreferences.c:181 ../../WPrefs.app/MouseSettings.c:514 #: ../../WPrefs.app/MouseSettings.c:525 ../../WPrefs.app/WPrefs.c:478 #: ../../WPrefs.app/WPrefs.c:503 #, c-format msgid "could not load icon file %s" msgstr "アイコン %s がロードできません" #: ../../WPrefs.app/Appearance.c:1831 msgid "Title Alignment" msgstr "タイトルの配置" #: ../../WPrefs.app/Appearance.c:1838 msgid "Left" msgstr "左" #: ../../WPrefs.app/Appearance.c:1841 ../../WPrefs.app/TexturePanel.c:1386 #: ../../WPrefs.app/Workspace.c:245 msgid "Center" msgstr "中央" #: ../../WPrefs.app/Appearance.c:1844 msgid "Right" msgstr "右" #: ../../WPrefs.app/Appearance.c:2049 msgid "Appearance Preferences" msgstr "外観の設定 " #: ../../WPrefs.app/Appearance.c:2051 msgid "" "Background texture configuration for windows,\n" "menus and icons." msgstr "" "ウィンドウ・メニュー・アイコンの\n" "背景やテクスチャを設定します." #: ../../WPrefs.app/Appearance.c:2087 msgid "Extract Texture" msgstr "テクスチャの抽出" #: ../../WPrefs.app/Appearance.c:2107 msgid "Textures" msgstr "テクスチャ" #: ../../WPrefs.app/Appearance.c:2116 ../../WPrefs.app/WPrefs.c:262 msgid "Close" msgstr "閉じる" #: ../../WPrefs.app/Appearance.c:2121 msgid "Extract" msgstr "抽出" #: ../../WPrefs.app/Configurations.c:131 ../../WPrefs.app/Configurations.c:137 #: ../../WPrefs.app/MouseSettings.c:448 ../../WPrefs.app/WindowHandling.c:351 #: ../../WPrefs.app/WindowHandling.c:363 ../../WPrefs.app/WindowHandling.c:382 #: ../../WPrefs.app/WindowHandling.c:394 ../../WPrefs.app/Workspace.c:82 #: ../../WPrefs.app/Workspace.c:93 #, c-format msgid "could not load icon %s" msgstr "アイコン %s がロードできません" #: ../../WPrefs.app/Configurations.c:145 ../../WPrefs.app/Workspace.c:101 #, c-format msgid "could not process icon %s: %s" msgstr "アイコン %s を処理できません: %s" #: ../../WPrefs.app/Configurations.c:167 ../../WPrefs.app/Workspace.c:150 #, c-format msgid "could not load image file %s" msgstr "画像ファイル %s がロードできません" #: ../../WPrefs.app/Configurations.c:178 msgid "Icon Slide Speed" msgstr "アイコン移動速度" #: ../../WPrefs.app/Configurations.c:184 msgid "Shade Animation Speed" msgstr "シェードアニメーション速度" #: ../../WPrefs.app/Configurations.c:243 msgid "Smooth Scaling" msgstr "滑らかな表示" #: ../../WPrefs.app/Configurations.c:244 msgid "" "Smooth scaled background images, neutralizing\n" "the `pixelization' effect. This will slow\n" "down loading of background images considerably." msgstr "" "背景を滑らかにしてピクセルを目立たなくします.\n" "画像の読み込みがいささか遅くなるかもしれません" #: ../../WPrefs.app/Configurations.c:284 msgid "Titlebar Style" msgstr "タイトルバー" #: ../../WPrefs.app/Configurations.c:337 ../../WPrefs.app/Configurations.c:343 msgid "Animations" msgstr "アニメ" #: ../../WPrefs.app/Configurations.c:354 msgid "" "Disable/enable animations such as those shown\n" "for window miniaturization, shading etc." msgstr "" "ウィンドウの最小化やシェードのときのアニメ表示\n" "を有効化/無効化します." #: ../../WPrefs.app/Configurations.c:361 msgid "Superfluous" msgstr "特殊効果" #: ../../WPrefs.app/Configurations.c:372 msgid "" "Disable/enable `superfluous' features and\n" "animations. These include the `ghosting' of the\n" "dock when it's being moved to another side and\n" "the explosion animation when undocking icons." msgstr "" "`おおげさな'表示とアニメを有効化/無効化\n" "します. ドックアイコンの移動時の影表示や\n" "ドック解除のときの爆発などがこれです." #: ../../WPrefs.app/Configurations.c:385 msgid "Dithering colormap for 8bpp" msgstr "8bpp に合わせた減色" #: ../../WPrefs.app/Configurations.c:387 msgid "" "Number of colors to reserve for Window Maker\n" "on displays that support only 8bpp (PseudoColor)." msgstr "" "8bpp しか対応していないディスプレイのときに\n" "Window Maker に予約する色の数." #: ../../WPrefs.app/Configurations.c:394 msgid "Disable dithering in any visual/depth" msgstr "全ての色深度で減色を行わない" #: ../../WPrefs.app/Configurations.c:415 msgid "" "More colors for\n" "applications" msgstr "" "アプリ\n" "優先" #: ../../WPrefs.app/Configurations.c:422 msgid "" "More colors for\n" "Window Maker" msgstr "" "Window Maker\n" "優先" #: ../../WPrefs.app/Configurations.c:472 msgid "Other Configurations" msgstr "その他の設定 " #: ../../WPrefs.app/Configurations.c:473 msgid "" "Animation speeds, titlebar styles, various option\n" "toggling and number of colors to reserve for\n" "Window Maker on 8bit displays." msgstr "" "アニメの速度, タイトルバーのスタイル, 特殊効果,\n" "8bit 画面のために予約する色数などを設定します." #: ../../WPrefs.app/Expert.c:87 msgid "" "Disable miniwindows (icons for minimized windows). For use with KDE/GNOME." msgstr "ミニウィンドウ(最小化時のアイコン表示)の無効化. KDE/GNOME 向け." #: ../../WPrefs.app/Expert.c:88 msgid "Do not set non-WindowMaker specific parameters (do not use xset)." msgstr "WindowMaker以外のパラメータを与えない (xsetを使わない)" #: ../../WPrefs.app/Expert.c:89 msgid "Automatically save session when exiting Window Maker." msgstr "Window Maker終了時に自動的にセッションを保存する" #: ../../WPrefs.app/Expert.c:90 msgid "Use SaveUnder in window frames, icons, menus and other objects." msgstr "各ウィンドウ, アイコン, メニュー等の画像をメモリーに保持する" #: ../../WPrefs.app/Expert.c:91 msgid "Disable confirmation panel for the Kill command." msgstr "強制終了時の確認パネルを表示しない" #: ../../WPrefs.app/Expert.c:92 msgid "Disable selection animation for selected icons." msgstr "選択されたアイコンのアニメーションによる強調をしない" #: ../../WPrefs.app/Expert.c:93 msgid "Smooth font edges (needs restart)." msgstr "フォントのふちを滑らかにする (要 再起動)" #: ../../WPrefs.app/Expert.c:94 msgid "Launch applications and restore windows with a single click." msgstr "アプリの起動やウィンドウの復元をシングルクリックで行う" #: ../../WPrefs.app/Expert.c:95 msgid "Cycle windows only on the active head." msgstr "ウィンドウ切替を現在アクティブなモニタに限定する (Xinerama用)" #: ../../WPrefs.app/Expert.c:96 msgid "Show workspace title on Clip." msgstr "ワークスペースのタイトルをクリップに表示する" #: ../../WPrefs.app/Expert.c:97 msgid "Bounce when the application wants attention" msgstr "注意喚起のためにアイコンが飛び跳ねるようにする" #: ../../WPrefs.app/Expert.c:98 msgid "Raise AppIcon when bouncing" msgstr "アイコンが飛び跳ねる時に前面表示にする" #: ../../WPrefs.app/Expert.c:99 msgid "Opaque Move,Resize with keyboard." msgstr "ウィンドウ内容を表示しての移動/サイズ変更をキーボードで行う" #: ../../WPrefs.app/Expert.c:141 msgid "Expert User Preferences" msgstr "エキスパート設定 " #: ../../WPrefs.app/Expert.c:143 msgid "" "Options for people who know what they're doing...\n" "Also have some other misc. options." msgstr "" "何をやってるかわかってる人のためのオプション設定です...\n" "雑多なオプションも含みます." #: ../../WPrefs.app/Focus.c:74 #, c-format msgid "bad option value %s for option FocusMode. Using default Manual" msgstr "フォーカスモードオプション %s が不適切です. デフォルト値 手動 を使います" #: ../../WPrefs.app/Focus.c:86 #, c-format msgid "bad option value %s for option ColormapMode. Using default Auto" msgstr "カラーマップオプション %s が不適切です. デフォルト値 自動 を使います" #: ../../WPrefs.app/Focus.c:192 msgid "Input Focus Mode" msgstr "インプット・フォーカスの設定" #: ../../WPrefs.app/Focus.c:200 msgid "Manual: Click on the window to set keyboard input focus" msgstr "手動:フォーカスする ウィンドウ上でクリックする" #: ../../WPrefs.app/Focus.c:206 msgid "Auto: Set keyboard input focus to the window under the mouse pointer" msgstr "自動:マウスポインタで 自動的にフォーカスを取得" #: ../../WPrefs.app/Focus.c:219 msgid "Install colormap from the window..." msgstr "カラーマップのウィンドウへの設定は..." #: ../../WPrefs.app/Focus.c:224 msgid "...that has the input focus" msgstr "...フォーカスが移動した時に" #: ../../WPrefs.app/Focus.c:229 msgid "...that's under the mouse pointer" msgstr "...マウスポインタがある時に" #: ../../WPrefs.app/Focus.c:238 msgid "Automatic Window Raise Delay" msgstr "自動的に前面へ出すまでに" #: ../../WPrefs.app/Focus.c:293 ../../WPrefs.app/MouseSettings.c:555 msgid "ms" msgstr "ms" #: ../../WPrefs.app/Focus.c:310 msgid "Do not let applications receive the click used to focus windows" msgstr "フォーカス移動のためのマウスクリックを アプリケーションに渡さない" #: ../../WPrefs.app/Focus.c:315 msgid "Automatically focus new windows" msgstr "新しいウィンドウに フォーカスを自動的に当てる" #: ../../WPrefs.app/Focus.c:332 msgid "Window Focus Preferences" msgstr "ウィンドウフォーカスの設定 " #: ../../WPrefs.app/Focus.c:333 msgid "Keyboard focus switching policy and related options." msgstr "" "ウィンドウフォーカスの切り替えポリシー, \n" "カラーマップの設定ポリシーなどを設定します." #: ../../WPrefs.app/FontSimple.c:99 msgid "Window Title" msgstr "ウィンドウタイトル" #: ../../WPrefs.app/FontSimple.c:101 msgid "Menu Text" msgstr "メニュー項目" #: ../../WPrefs.app/FontSimple.c:102 msgid "Icon Title" msgstr "アイコンタイトル" #: ../../WPrefs.app/FontSimple.c:103 msgid "Clip Title" msgstr "クリップタイトル" #: ../../WPrefs.app/FontSimple.c:104 msgid "Desktop Caption" msgstr "デスクトップ名" #: ../../WPrefs.app/FontSimple.c:638 msgid "Sample Text" msgstr "サンプル" #: ../../WPrefs.app/FontSimple.c:655 msgid "Family" msgstr "フォント名" #: ../../WPrefs.app/FontSimple.c:681 msgid "Style" msgstr "スタイル" #: ../../WPrefs.app/FontSimple.c:684 msgid "Size" msgstr "サイズ" #: ../../WPrefs.app/FontSimple.c:717 msgid "Font Configuration" msgstr "フォントの設定 " #: ../../WPrefs.app/FontSimple.c:719 msgid "Configure fonts for Window Maker titlebars, menus etc." msgstr "タイトルバーやメニューに使うフォントを設定します." #: ../../WPrefs.app/Icons.c:165 msgid "Icon Positioning" msgstr "アイコンの表示位置" #: ../../WPrefs.app/Icons.c:211 msgid "Iconification Animation" msgstr "アイコン化のアニメーション" #: ../../WPrefs.app/Icons.c:222 msgid "Shrinking/Zooming" msgstr "縮小/拡大" #: ../../WPrefs.app/Icons.c:223 msgid "Spinning/Twisting" msgstr "回転/ひねり" #: ../../WPrefs.app/Icons.c:224 msgid "3D-flipping" msgstr "3D回転" #: ../../WPrefs.app/Icons.c:225 ../../WPrefs.app/MouseSettings.c:784 #: ../../WPrefs.app/MouseSettings.c:789 msgid "None" msgstr "なし" #: ../../WPrefs.app/Icons.c:238 msgid "Auto-arrange icons" msgstr "自動整列" #: ../../WPrefs.app/Icons.c:240 msgid "Keep icons and miniwindows arranged all the time." msgstr "アイコンやミニウィンドウを常に整列された状態にします" #: ../../WPrefs.app/Icons.c:245 msgid "Omnipresent miniwindows" msgstr "全てのワークスペースに表示" #: ../../WPrefs.app/Icons.c:247 msgid "Make miniwindows be present in all workspaces." msgstr "ミニウィンドウが全てのワークスペースで表示されるようにします" #: ../../WPrefs.app/Icons.c:255 msgid "Icon Size" msgstr "アイコンの大きさ" #: ../../WPrefs.app/Icons.c:257 msgid "The size of the dock/application icon and miniwindows" msgstr "ドック,アイコン,ミニウィンドウの大きさ" #: ../../WPrefs.app/Icons.c:321 msgid "Icon Preferences" msgstr "アイコンの設定 " #: ../../WPrefs.app/Icons.c:323 msgid "" "Icon/Miniwindow handling options. Icon positioning\n" "area, sizes of icons, miniaturization animation style." msgstr "" "アイコン/ミニウィンドウの設定. アイコンの配置場所,\n" "アイコンの大きさ, 最小化のときのアニメ表示などを設定します." #: ../../WPrefs.app/KeyboardSettings.c:68 msgid "Initial Key Repeat" msgstr "キーリピートの初期値" #: ../../WPrefs.app/KeyboardSettings.c:109 msgid "Key Repeat Rate" msgstr "リピートの速度" #: ../../WPrefs.app/KeyboardSettings.c:149 msgid "Type here to test" msgstr "ここでテスト出来ます" #: ../../WPrefs.app/KeyboardSettings.c:165 msgid "Keyboard Preferences" msgstr "キーボードの設定" #: ../../WPrefs.app/KeyboardSettings.c:167 msgid "Not done" msgstr "まだ" #: ../../WPrefs.app/KeyboardShortcuts.c:299 ../../WPrefs.app/Menu.c:273 #: ../../WPrefs.app/TexturePanel.c:1403 msgid "Cancel" msgstr "キャンセル" #: ../../WPrefs.app/KeyboardShortcuts.c:301 msgid "Press the desired shortcut key(s) or click Cancel to stop capturing." msgstr "設定したいショートカットキーを押してください. (キャンセルボタンで中止)" #: ../../WPrefs.app/KeyboardShortcuts.c:320 #: ../../WPrefs.app/KeyboardShortcuts.c:536 ../../WPrefs.app/Menu.c:283 #: ../../WPrefs.app/Menu.c:704 msgid "Capture" msgstr "取り込み" #: ../../WPrefs.app/KeyboardShortcuts.c:321 #: ../../WPrefs.app/KeyboardShortcuts.c:544 msgid "Click on Capture to interactively define the shortcut key." msgstr "" "ショートカットを対話的\n" "に定義するには取り込み\n" "をクリックして下さい" #: ../../WPrefs.app/KeyboardShortcuts.c:440 msgid "Actions" msgstr "アクション" #: ../../WPrefs.app/KeyboardShortcuts.c:454 msgid "Open applications menu" msgstr "アプリケーション・メニューを開く" #: ../../WPrefs.app/KeyboardShortcuts.c:455 msgid "Open window list menu" msgstr "ウィンドウ一覧メニューを開く" #: ../../WPrefs.app/KeyboardShortcuts.c:456 msgid "Open window commands menu" msgstr "ウィンドウコマンド・メニューを開く" #: ../../WPrefs.app/KeyboardShortcuts.c:457 msgid "Hide active application" msgstr "アクティブ・アプリケーションを隠す" #: ../../WPrefs.app/KeyboardShortcuts.c:458 msgid "Hide other applications" msgstr "他のアプリケーションを隠す" #: ../../WPrefs.app/KeyboardShortcuts.c:459 msgid "Miniaturize active window" msgstr "アクティブ・ウィンドウを最小化" #: ../../WPrefs.app/KeyboardShortcuts.c:460 msgid "Miniaturize all windows" msgstr "全てのウィンドウを最小化" #: ../../WPrefs.app/KeyboardShortcuts.c:461 msgid "Close active window" msgstr "アクティブ・ウィンドウを閉じる" #: ../../WPrefs.app/KeyboardShortcuts.c:462 msgid "Maximize active window" msgstr "アクティブ・ウィンドウを最大化" #: ../../WPrefs.app/KeyboardShortcuts.c:463 msgid "Maximize active window vertically" msgstr "ウィンドウを縦方向に最大化" #: ../../WPrefs.app/KeyboardShortcuts.c:464 msgid "Maximize active window horizontally" msgstr "ウィンドウを横方向に最大化" #: ../../WPrefs.app/KeyboardShortcuts.c:465 msgid "Maximize active window left half" msgstr "アクティブ・ウィンドウを画面左半分で最大化" #: ../../WPrefs.app/KeyboardShortcuts.c:466 msgid "Maximize active window right half" msgstr "アクティブ・ウィンドウを画面右半分で最大化" #: ../../WPrefs.app/KeyboardShortcuts.c:467 msgid "Maximus: Tiled maximization " msgstr "空きエリア充填式最大化" #: ../../WPrefs.app/KeyboardShortcuts.c:468 msgid "Raise active window" msgstr "アクティブ・ウィンドウを前面に" #: ../../WPrefs.app/KeyboardShortcuts.c:469 msgid "Lower active window" msgstr "アクティブ・ウィンドウを背面に" #: ../../WPrefs.app/KeyboardShortcuts.c:470 msgid "Raise/Lower window under mouse pointer" msgstr "マウスポインタ下のウィンドウを前面/背面に" #: ../../WPrefs.app/KeyboardShortcuts.c:471 msgid "Shade active window" msgstr "アクティブ・ウィンドウを畳む" #: ../../WPrefs.app/KeyboardShortcuts.c:472 msgid "Move/Resize active window" msgstr "アクティブ・ウィンドウの移動/拡大縮小" #: ../../WPrefs.app/KeyboardShortcuts.c:473 msgid "Select active window" msgstr "アクティブ・ウィンドウの選択" #: ../../WPrefs.app/KeyboardShortcuts.c:474 msgid "Focus next window" msgstr "フォーカスを次のウィンドウへ" #: ../../WPrefs.app/KeyboardShortcuts.c:475 msgid "Focus previous window" msgstr "フォーカスを前のウィンドウへ" #: ../../WPrefs.app/KeyboardShortcuts.c:476 msgid "Focus next group window" msgstr "" #: ../../WPrefs.app/KeyboardShortcuts.c:477 msgid "Focus previous group window" msgstr "" #: ../../WPrefs.app/KeyboardShortcuts.c:478 msgid "Switch to next workspace" msgstr "次のワークスペースへ移動" #: ../../WPrefs.app/KeyboardShortcuts.c:479 msgid "Switch to previous workspace" msgstr "前のワークスペースへ移動" #: ../../WPrefs.app/KeyboardShortcuts.c:480 msgid "Switch to next ten workspaces" msgstr "10個先のワークスペースへ移動" #: ../../WPrefs.app/KeyboardShortcuts.c:481 msgid "Switch to previous ten workspaces" msgstr "10個前のワークスペースへ移動" #: ../../WPrefs.app/KeyboardShortcuts.c:482 msgid "Switch to workspace 1" msgstr "ワークスペース1へ移動" #: ../../WPrefs.app/KeyboardShortcuts.c:483 msgid "Switch to workspace 2" msgstr "ワークスペース2へ移動" #: ../../WPrefs.app/KeyboardShortcuts.c:484 msgid "Switch to workspace 3" msgstr "ワークスペース3へ移動" #: ../../WPrefs.app/KeyboardShortcuts.c:485 msgid "Switch to workspace 4" msgstr "ワークスペース4へ移動" #: ../../WPrefs.app/KeyboardShortcuts.c:486 msgid "Switch to workspace 5" msgstr "ワークスペース5へ移動" #: ../../WPrefs.app/KeyboardShortcuts.c:487 msgid "Switch to workspace 6" msgstr "ワークスペース6へ移動" #: ../../WPrefs.app/KeyboardShortcuts.c:488 msgid "Switch to workspace 7" msgstr "ワークスペース7へ移動" #: ../../WPrefs.app/KeyboardShortcuts.c:489 msgid "Switch to workspace 8" msgstr "ワークスペース8へ移動" #: ../../WPrefs.app/KeyboardShortcuts.c:490 msgid "Switch to workspace 9" msgstr "ワークスペース9へ移動" #: ../../WPrefs.app/KeyboardShortcuts.c:491 msgid "Switch to workspace 10" msgstr "ワークスペース10へ移動" #: ../../WPrefs.app/KeyboardShortcuts.c:492 msgid "Shortcut for window 1" msgstr "ウィンドウ1へのショートカット" #: ../../WPrefs.app/KeyboardShortcuts.c:493 msgid "Shortcut for window 2" msgstr "ウィンドウ2へのショートカット" #: ../../WPrefs.app/KeyboardShortcuts.c:494 msgid "Shortcut for window 3" msgstr "ウィンドウ3へのショートカット" #: ../../WPrefs.app/KeyboardShortcuts.c:495 msgid "Shortcut for window 4" msgstr "ウィンドウ4へのショートカット" #: ../../WPrefs.app/KeyboardShortcuts.c:496 msgid "Shortcut for window 5" msgstr "ウィンドウ5へのショートカット" #: ../../WPrefs.app/KeyboardShortcuts.c:497 msgid "Shortcut for window 6" msgstr "ウィンドウ6へのショートカット" #: ../../WPrefs.app/KeyboardShortcuts.c:498 msgid "Shortcut for window 7" msgstr "ウィンドウ7へのショートカット" #: ../../WPrefs.app/KeyboardShortcuts.c:499 msgid "Shortcut for window 8" msgstr "ウィンドウ8へのショートカット" #: ../../WPrefs.app/KeyboardShortcuts.c:500 msgid "Shortcut for window 9" msgstr "ウィンドウ9へのショートカット" #: ../../WPrefs.app/KeyboardShortcuts.c:501 msgid "Shortcut for window 10" msgstr "ウィンドウ10へのショートカット" #: ../../WPrefs.app/KeyboardShortcuts.c:502 msgid "Switch to Next Screen/Monitor" msgstr "次のスクリーン/モニタへ" #: ../../WPrefs.app/KeyboardShortcuts.c:503 msgid "Raise/Lower Dock" msgstr "ドックを前面/背面に" #: ../../WPrefs.app/KeyboardShortcuts.c:504 msgid "Raise/Lower Clip" msgstr "クリップを前面/背面に" #: ../../WPrefs.app/KeyboardShortcuts.c:506 msgid "Toggle keyboard language" msgstr "キーボードの言語切替え" #: ../../WPrefs.app/KeyboardShortcuts.c:520 msgid "Shortcut" msgstr "ショートカット" #: ../../WPrefs.app/KeyboardShortcuts.c:530 ../../WPrefs.app/Menu.c:710 msgid "Clear" msgstr "クリア" #: ../../WPrefs.app/KeyboardShortcuts.c:586 msgid "Keyboard Shortcut Preferences" msgstr "キーボードショートカットの設定 " #: ../../WPrefs.app/KeyboardShortcuts.c:588 msgid "" "Change the keyboard shortcuts for actions such\n" "as changing workspaces and opening menus." msgstr "" "ワークスペースの変更やメニュー操作の時に使うの\n" "キーボードショートカットの割り当てを設定します." #: ../../WPrefs.app/Menu.c:249 msgid "Select Program" msgstr "プログラム選択" #: ../../WPrefs.app/Menu.c:410 msgid "New Items" msgstr "新規" #: ../../WPrefs.app/Menu.c:411 msgid "Sample Commands" msgstr "サンプルコマンド" #: ../../WPrefs.app/Menu.c:412 msgid "Sample Submenus" msgstr "サンプルサブメニュー" #: ../../WPrefs.app/Menu.c:424 msgid "Run Program" msgstr "プログラム実行" #: ../../WPrefs.app/Menu.c:425 msgid "Internal Command" msgstr "内部コマンド" #: ../../WPrefs.app/Menu.c:426 msgid "Submenu" msgstr "サブメニュー" #: ../../WPrefs.app/Menu.c:427 msgid "External Submenu" msgstr "外部サブメニュー" #: ../../WPrefs.app/Menu.c:428 msgid "Generated Submenu" msgstr "自動生成のサブメニュー" #: ../../WPrefs.app/Menu.c:429 msgid "Directory Contents" msgstr "ディレクトリの内容" #: ../../WPrefs.app/Menu.c:430 msgid "Workspace Menu" msgstr "ワークスペースメニュー" #: ../../WPrefs.app/Menu.c:431 ../../WPrefs.app/MouseSettings.c:786 msgid "Window List Menu" msgstr "ウィンドウ一覧メニュー" #: ../../WPrefs.app/Menu.c:450 msgid "XTerm" msgstr "" #: ../../WPrefs.app/Menu.c:453 msgid "rxvt" msgstr "" #: ../../WPrefs.app/Menu.c:456 msgid "ETerm" msgstr "" #: ../../WPrefs.app/Menu.c:459 msgid "Run..." msgstr "実行..." #: ../../WPrefs.app/Menu.c:460 #, c-format msgid "%A(Run,Type command to run)" msgstr "%A (実行するコマンドを入力)" #: ../../WPrefs.app/Menu.c:462 msgid "Firefox" msgstr "" #: ../../WPrefs.app/Menu.c:465 msgid "gimp" msgstr "" #: ../../WPrefs.app/Menu.c:468 msgid "epic" msgstr "" #: ../../WPrefs.app/Menu.c:471 msgid "ee" msgstr "" #: ../../WPrefs.app/Menu.c:474 msgid "xv" msgstr "" #: ../../WPrefs.app/Menu.c:477 msgid "Evince" msgstr "" #: ../../WPrefs.app/Menu.c:480 msgid "ghostview" msgstr "" #: ../../WPrefs.app/Menu.c:483 ../../WPrefs.app/Menu.c:729 msgid "Exit Window Maker" msgstr "Window Maker を終了" #: ../../WPrefs.app/Menu.c:505 msgid "Debian Menu" msgstr "" #: ../../WPrefs.app/Menu.c:508 msgid "RedHat Menu" msgstr "" #: ../../WPrefs.app/Menu.c:511 msgid "Menu Conectiva" msgstr "" #: ../../WPrefs.app/Menu.c:514 ../../WPrefs.app/Themes.c:212 msgid "Themes" msgstr "テーマ" #: ../../WPrefs.app/Menu.c:520 msgid "Bg Images (scale)" msgstr "背景(拡大/縮小)" #: ../../WPrefs.app/Menu.c:526 msgid "Bg Images (tile)" msgstr "背景(しきつめる)" #: ../../WPrefs.app/Menu.c:532 msgid "Assorted XTerms" msgstr "" #: ../../WPrefs.app/Menu.c:534 msgid "XTerm Yellow on Blue" msgstr "" #: ../../WPrefs.app/Menu.c:537 msgid "XTerm White on Black" msgstr "" #: ../../WPrefs.app/Menu.c:540 msgid "XTerm Black on White" msgstr "" #: ../../WPrefs.app/Menu.c:543 msgid "XTerm Black on Beige" msgstr "" #: ../../WPrefs.app/Menu.c:546 msgid "XTerm White on Green" msgstr "" #: ../../WPrefs.app/Menu.c:549 msgid "XTerm White on Olive" msgstr "" #: ../../WPrefs.app/Menu.c:552 msgid "XTerm Blue on Blue" msgstr "" #: ../../WPrefs.app/Menu.c:555 msgid "XTerm BIG FONTS" msgstr "" #: ../../WPrefs.app/Menu.c:576 msgid "Program to Run" msgstr "実行するプログラム" #: ../../WPrefs.app/Menu.c:586 msgid "Browse" msgstr "参照" #: ../../WPrefs.app/Menu.c:595 msgid "Run the program inside a Xterm" msgstr "" #: ../../WPrefs.app/Menu.c:604 msgid "Path for Menu" msgstr "メニューのパス" #: ../../WPrefs.app/Menu.c:615 msgid "" "Enter the path for a file containing a menu\n" "or a list of directories with the programs you\n" "want to have listed in the menu. Ex:\n" "~/GNUstep/Library/WindowMaker/menu\n" "or\n" "/usr/X11R6/bin ~/xbin" msgstr "" "メニューを含むファイルへのパス, ないしは \n" "メニューに表示してほしいプログラムのある \n" "ディレクトリ. 例:\n" "~/GNUstep/Library/WindowMaker/menu\n" "とか, \n" "/usr/bin ~/xbin" #: ../../WPrefs.app/Menu.c:627 msgid "Command" msgstr "コマンド" #: ../../WPrefs.app/Menu.c:638 msgid "" "Enter a command that outputs a menu\n" "definition to stdout when invoked." msgstr "" "メニュー定義を出力するコマンドを\n" "入力してください" #: ../../WPrefs.app/Menu.c:643 msgid "" "Cache menu contents after opening for\n" "the first time" msgstr "" "初回ロード時にメニューの内容を\n" "キャッシュする" #: ../../WPrefs.app/Menu.c:652 msgid "Command to Open Files" msgstr "ファイルを開くコマンド" #: ../../WPrefs.app/Menu.c:663 msgid "" "Enter the command you want to use to open the\n" "files in the directories listed below." msgstr "" "これらのディレクトリにあるファイルを開くときに\n" "使用するコマンドを入力してください" #: ../../WPrefs.app/Menu.c:671 msgid "Directories with Files" msgstr "ファイルのあるディレクトリ" #: ../../WPrefs.app/Menu.c:682 msgid "Strip extensions from file names" msgstr "拡張子を除去する" #: ../../WPrefs.app/Menu.c:693 msgid "Keyboard Shortcut" msgstr "キーボードショートカット" #: ../../WPrefs.app/Menu.c:725 msgid "Arrange Icons" msgstr "アイコンを整列" #: ../../WPrefs.app/Menu.c:726 msgid "Hide All Windows Except For The Focused One" msgstr "フォーカスウィンドウ以外を隠す" #: ../../WPrefs.app/Menu.c:727 msgid "Show All Windows" msgstr "全てのウィンドウを表示" #: ../../WPrefs.app/Menu.c:730 msgid "Exit X Session" msgstr "X セッションを終了" #: ../../WPrefs.app/Menu.c:731 msgid "Restart Window Maker" msgstr "Window Makerを再起動" #: ../../WPrefs.app/Menu.c:732 msgid "Start Another Window Manager : (" msgstr "ちがうウィンドウマネージャを起動 (-_-#" #: ../../WPrefs.app/Menu.c:734 msgid "Save Current Session" msgstr "セッションを保存" #: ../../WPrefs.app/Menu.c:735 msgid "Clear Saved Session" msgstr "セッションをクリア" #: ../../WPrefs.app/Menu.c:736 msgid "Refresh Screen" msgstr "画面の再描画" #: ../../WPrefs.app/Menu.c:737 msgid "Open Info Panel" msgstr "情報パネル" #: ../../WPrefs.app/Menu.c:738 msgid "Open Copyright Panel" msgstr "著作権表示" #: ../../WPrefs.app/Menu.c:743 msgid "Window Manager to Start" msgstr "起動するウィンドウマネージャ" #: ../../WPrefs.app/Menu.c:756 msgid "Do not confirm action." msgstr "動作をいちいち確認しない" #: ../../WPrefs.app/Menu.c:763 msgid "" "Instructions:\n" "\n" " - drag items from the left to the menu to add new items\n" " - drag items out of the menu to remove items\n" " - drag items in menu to change their position\n" " - drag items with Control pressed to copy them\n" " - double click in a menu item to change the label\n" " - click on a menu item to change related information" msgstr "" "編集方法:\n" "\n" " - 左から項目をメニューにドラッグして新しい項目を追加\n" " - メニューから項目をドラッグして削除\n" " - メニューの中で項目をドラッグして順番を入れ換える\n" " - コントロールキー+ドラッグで項目を複製\n" " - 項目でダブルクリックしてラベルを編集\n" " - 項目をクリックして関連情報を編集" #: ../../WPrefs.app/Menu.c:980 #, c-format msgid "unknown command '%s' in menu" msgstr "メニュー内のコマンド '%s' は知りません" #: ../../WPrefs.app/Menu.c:1004 msgid ": Execute Program" msgstr ": プログラムの実行" #: ../../WPrefs.app/Menu.c:1008 msgid ": Perform Internal Command" msgstr ": 内部コマンドの呼び出し" #: ../../WPrefs.app/Menu.c:1012 msgid ": Open a Submenu" msgstr ": サブメニューを開く" #: ../../WPrefs.app/Menu.c:1016 msgid ": Program Generated Submenu" msgstr ": サブメニューを自動生成" #: ../../WPrefs.app/Menu.c:1020 msgid ": Directory Contents Menu" msgstr ": メニューを含むディレクトリ" #: ../../WPrefs.app/Menu.c:1024 msgid ": Open Workspaces Submenu" msgstr ": ワークスペースサブメニューを開く" #: ../../WPrefs.app/Menu.c:1028 msgid ": Open Window List Submenu" msgstr ": ウィンドウ一覧サブメニューを開く" #: ../../WPrefs.app/Menu.c:1223 msgid "Remove Submenu" msgstr "サブメニューの削除" #: ../../WPrefs.app/Menu.c:1224 msgid "" "Removing this item will destroy all items inside\n" "the submenu. Do you really want to do that?" msgstr "" "この項目を削除するとサブメニューの中身も\n" "みんな破壊します. 本当に実行しますか? " #: ../../WPrefs.app/Menu.c:1226 msgid "Yes" msgstr "はい" #: ../../WPrefs.app/Menu.c:1226 msgid "No" msgstr "いいえ" #: ../../WPrefs.app/Menu.c:1226 msgid "Yes, don't ask again" msgstr "はい, 以後確認しない" #: ../../WPrefs.app/Menu.c:1352 #, c-format msgid "Invalid menu command \"%s\" with label \"%s\" cleared" msgstr "不正なメニューコマンド \"%s\" (\"%s\") は消されました" #: ../../WPrefs.app/Menu.c:1355 ../../WPrefs.app/Menu.c:1422 #: ../../WPrefs.app/WPrefs.c:710 msgid "Warning" msgstr "警告" #: ../../WPrefs.app/Menu.c:1355 ../../WPrefs.app/Menu.c:1394 #: ../../WPrefs.app/MouseSettings.c:125 ../../WPrefs.app/MouseSettings.c:145 #: ../../WPrefs.app/TexturePanel.c:555 ../../WPrefs.app/TexturePanel.c:633 #: ../../WPrefs.app/TexturePanel.c:1397 ../../WPrefs.app/Themes.c:84 #: ../../WPrefs.app/WPrefs.c:659 ../../WPrefs.app/WPrefs.c:663 #: ../../WPrefs.app/WPrefs.c:683 ../../WPrefs.app/WPrefs.c:695 #: ../../WPrefs.app/WPrefs.c:701 ../../WPrefs.app/WPrefs.c:710 #: ../../WPrefs.app/WPrefs.c:741 ../../WPrefs.app/WPrefs.c:745 msgid "OK" msgstr "了解" #: ../../WPrefs.app/Menu.c:1390 #, c-format msgid "Could not open default menu from '%s'" msgstr "標準のメニューを '%s' から開けませんでした" #: ../../WPrefs.app/Menu.c:1394 ../../WPrefs.app/MouseSettings.c:123 #: ../../WPrefs.app/MouseSettings.c:142 ../../WPrefs.app/TexturePanel.c:555 #: ../../WPrefs.app/TexturePanel.c:631 ../../WPrefs.app/Themes.c:83 #: ../../WPrefs.app/WPrefs.c:659 ../../WPrefs.app/WPrefs.c:663 #: ../../WPrefs.app/WPrefs.c:680 ../../WPrefs.app/WPrefs.c:691 #: ../../WPrefs.app/WPrefs.c:701 ../../WPrefs.app/WPrefs.c:741 #: ../../WPrefs.app/WPrefs.c:745 msgid "Error" msgstr "エラー" #: ../../WPrefs.app/Menu.c:1423 msgid "" "The menu file format currently in use is not supported\n" "by this tool. Do you want to discard the current menu\n" "to use this tool?" msgstr "" "現在使われているメニューファイルの書式はこのツールでは\n" "サポートしていません. このツールを使うために,\n" "現在のメニューを破棄してしまってもいいですか?" #: ../../WPrefs.app/Menu.c:1426 msgid "Yes, Discard and Update" msgstr "はい, 破棄して更新" #: ../../WPrefs.app/Menu.c:1426 msgid "No, Keep Current Menu" msgstr "いいえ, 現状を維持" #: ../../WPrefs.app/Menu.c:1661 msgid "Applications Menu Definition" msgstr "アプリケーション・メニューの定義" #: ../../WPrefs.app/Menu.c:1663 msgid "Edit the menu for launching applications." msgstr "アプリを起動するためのメニューを設定します." #: ../../WPrefs.app/MenuPreferences.c:105 msgid "Menu Scrolling Speed" msgstr "メニューのスクロール速度" #: ../../WPrefs.app/MenuPreferences.c:153 msgid "Submenu Alignment" msgstr "サブメニューの並び" #: ../../WPrefs.app/MenuPreferences.c:199 msgid "" "Always open submenus inside the screen, instead of scrolling." msgstr "" "スクロールしないでサブメニューを常に画面内に表示する." #: ../../WPrefs.app/MenuPreferences.c:204 msgid "Scroll off-screen menus when pointer is moved over them." msgstr "画面からはみ出たメニューをポインタの移動に合わせてスクロールする" #: ../../WPrefs.app/MenuPreferences.c:208 msgid "Use h/j/k/l keys to select menu options." msgstr "メニュー項目の選択に hjkl キーを使用する" #: ../../WPrefs.app/MenuPreferences.c:225 msgid "Menu Preferences" msgstr "メニューの設定 " #: ../../WPrefs.app/MenuPreferences.c:227 msgid "" "Menu usability related options. Scrolling speed,\n" "alignment of submenus etc." msgstr "" "メニューの使い心地関連のオプション.\n" "スクロール速度, サブメニューの配置方法などを設定します." #: ../../WPrefs.app/MouseSettings.c:124 msgid "Invalid mouse acceleration value. Must be a positive real value." msgstr "マウス加速のパラメーターが不正です. 正の数値で指定します." #: ../../WPrefs.app/MouseSettings.c:144 msgid "" "Invalid mouse acceleration threshold value. Must be the number of pixels to " "travel before accelerating." msgstr "" "マウス加速のパラメーターが不正です. 加速を開始するまでの移動量を" "ピクセルで指定します." #: ../../WPrefs.app/MouseSettings.c:231 ../../WPrefs.app/MouseSettings.c:243 #: ../../WPrefs.app/MouseSettings.c:255 ../../WPrefs.app/MouseSettings.c:267 #, c-format msgid "bad value %s for option %s" msgstr "値 %s はオプション %s の値として不正です" #: ../../WPrefs.app/MouseSettings.c:323 #, c-format msgid "" "modifier key %s for option ModifierKey was not recognized. Using %s as " "default" msgstr "値 %s はModifierKeyとして解釈できません. 値 %s をデフォルトとして使います" #: ../../WPrefs.app/MouseSettings.c:344 msgid "could not retrieve keyboard modifier mapping" msgstr "keyboard modifierマッピングを取得できませんでした" #: ../../WPrefs.app/MouseSettings.c:435 msgid "Mouse Speed" msgstr "マウスの速度" #: ../../WPrefs.app/MouseSettings.c:465 msgid "Accel.:" msgstr "加速度.:" #: ../../WPrefs.app/MouseSettings.c:476 msgid "Threshold:" msgstr "しきい値:" #: ../../WPrefs.app/MouseSettings.c:490 msgid "Double-Click Delay" msgstr "ダブルクリックの遅延" #: ../../WPrefs.app/MouseSettings.c:533 msgid "Test" msgstr "テスト" #: ../../WPrefs.app/MouseSettings.c:563 msgid "Workspace Mouse Actions" msgstr "ワークスペースでの動作" #: ../../WPrefs.app/MouseSettings.c:568 msgid "Disable mouse actions" msgstr "マウス動作の使用停止" #: ../../WPrefs.app/MouseSettings.c:574 msgid "Left Button" msgstr "左ボタン" #: ../../WPrefs.app/MouseSettings.c:584 msgid "Middle Button" msgstr "中ボタン" #: ../../WPrefs.app/MouseSettings.c:594 msgid "Right Button" msgstr "右ボタン" #: ../../WPrefs.app/MouseSettings.c:604 msgid "Mouse Wheel" msgstr "ホイール" #: ../../WPrefs.app/MouseSettings.c:626 msgid "Mouse Grab Modifier" msgstr "ウィンドウ操作するための修飾キー" #: ../../WPrefs.app/MouseSettings.c:628 msgid "" "Keyboard modifier to use for actions that\n" "involve dragging windows with the mouse,\n" "clicking inside the window." msgstr "" "ここで設定するキーを押しながらウィンドウの\n" "内側からドラッグすることでウィンドウ自身を\n" "ドラッグすることができます." #: ../../WPrefs.app/MouseSettings.c:658 #, c-format msgid "could not create %s" msgstr "%s を作成できません" #: ../../WPrefs.app/MouseSettings.c:673 #, c-format msgid "could not create temporary file %s" msgstr "一時ファイル %s を作成できません" #: ../../WPrefs.app/MouseSettings.c:706 #, c-format msgid "could not rename file %s to %s" msgstr "ファイル %s を %s に変更出来ません" #: ../../WPrefs.app/MouseSettings.c:775 msgid "Shift" msgstr "シフト" #: ../../WPrefs.app/MouseSettings.c:776 msgid "Lock" msgstr "ロック" #: ../../WPrefs.app/MouseSettings.c:777 msgid "Control" msgstr "コントロール" #: ../../WPrefs.app/MouseSettings.c:778 msgid "Mod1" msgstr "" #: ../../WPrefs.app/MouseSettings.c:779 msgid "Mod2" msgstr "" #: ../../WPrefs.app/MouseSettings.c:780 msgid "Mod3" msgstr "" #: ../../WPrefs.app/MouseSettings.c:781 msgid "Mod4" msgstr "" #: ../../WPrefs.app/MouseSettings.c:782 msgid "Mod5" msgstr "" #: ../../WPrefs.app/MouseSettings.c:785 msgid "Applications Menu" msgstr "アプリケーションメニュー" #: ../../WPrefs.app/MouseSettings.c:787 msgid "Select Windows" msgstr "ウィンドウの選択" #: ../../WPrefs.app/MouseSettings.c:790 msgid "Switch Workspaces" msgstr "ワークスペースの切り替え" #: ../../WPrefs.app/MouseSettings.c:795 msgid "Mouse Preferences" msgstr "マウスの設定 " #: ../../WPrefs.app/MouseSettings.c:797 msgid "" "Mouse speed/acceleration, double click delay,\n" "mouse button bindings etc." msgstr "" "マウスの速度や加速度, ダブルクリックの遅延,\n" "ボタン配置の編集などを設定します." #: ../../WPrefs.app/Paths.c:78 msgid "bad value in option IconPath. Using default path list" msgstr "アイコンのパスが不正です. デフォルトのパスを使用します" #: ../../WPrefs.app/Paths.c:95 msgid "bad value in option PixmapPath. Using default path list" msgstr "Pixmapのパスが不正です. デフォルトのパスを使用します" #: ../../WPrefs.app/Paths.c:140 msgid "Select directory" msgstr "ディレクトリの選択" #: ../../WPrefs.app/Paths.c:245 msgid "Icon Search Paths" msgstr "アイコン検索パス" #: ../../WPrefs.app/Paths.c:256 ../../WPrefs.app/Paths.c:287 #: ../../WPrefs.app/TexturePanel.c:1191 msgid "Add" msgstr "追加" #: ../../WPrefs.app/Paths.c:263 ../../WPrefs.app/Paths.c:294 msgid "Remove" msgstr "除去" #: ../../WPrefs.app/Paths.c:276 msgid "Pixmap Search Paths" msgstr "Pixmap検索パス" #: ../../WPrefs.app/Paths.c:312 msgid "Search Path Configuration" msgstr "検索パスの設定 " #: ../../WPrefs.app/Paths.c:314 msgid "" "Search paths to use when looking for pixmaps\n" "and icons." msgstr "" "pixmap ファイルや アイコンファイルを探すための\n" "探索パスを設定します." #: ../../WPrefs.app/Preferences.c:69 #, c-format msgid "OFF" msgstr "OFF" #: ../../WPrefs.app/Preferences.c:71 #, c-format msgid "1 pixel" msgstr "1 ピクセル" #. 2-4 #: ../../WPrefs.app/Preferences.c:74 #, c-format msgid "%i pixels" msgstr "%i ピクセル" #. >4 #: ../../WPrefs.app/Preferences.c:77 #, c-format msgid "%i pixels " msgstr "%i ピクセル " #: ../../WPrefs.app/Preferences.c:216 msgid "Size Display" msgstr "ウィンドウのサイズ表示" #: ../../WPrefs.app/Preferences.c:218 msgid "" "The position or style of the window size\n" "display that's shown when a window is resized." msgstr "" "ウィンドウサイズが変更されるときのサイズ\n" "表示の場所やスタイル" #: ../../WPrefs.app/Preferences.c:224 ../../WPrefs.app/Preferences.c:244 msgid "Corner of screen" msgstr "画面のコーナー" #: ../../WPrefs.app/Preferences.c:225 ../../WPrefs.app/Preferences.c:245 msgid "Center of screen" msgstr "画面の中央" #: ../../WPrefs.app/Preferences.c:226 ../../WPrefs.app/Preferences.c:246 msgid "Center of resized window" msgstr "ウィンドウの中央" #: ../../WPrefs.app/Preferences.c:227 msgid "Technical drawing-like" msgstr "図面っぽく" #: ../../WPrefs.app/Preferences.c:228 ../../WPrefs.app/Preferences.c:247 msgid "Disabled" msgstr "無効" #: ../../WPrefs.app/Preferences.c:236 msgid "Position Display" msgstr "ウィンドウの位置表示" #: ../../WPrefs.app/Preferences.c:238 msgid "" "The position or style of the window position\n" "display that's shown when a window is moved." msgstr "" "ウィンドウが移動したときのウィンドウの位置\n" "表示の場所やスタイル" #: ../../WPrefs.app/Preferences.c:255 msgid "Show balloon text for..." msgstr "バルーンヘルプの表示は..." #: ../../WPrefs.app/Preferences.c:262 msgid "incomplete window titles" msgstr "長いウィンドウのタイトル" #: ../../WPrefs.app/Preferences.c:263 msgid "miniwindow titles" msgstr "ミニウィンドウのタイトル" #: ../../WPrefs.app/Preferences.c:264 msgid "application/dock icons" msgstr "アイコン" #: ../../WPrefs.app/Preferences.c:265 msgid "internal help" msgstr "内部ヘルプ" #: ../../WPrefs.app/Preferences.c:277 msgid "Raise window when switching focus with keyboard" msgstr "キーボードによりフォーカスされたときウィンドウを前面に" #: ../../WPrefs.app/Preferences.c:283 msgid "" "Enable keyboard language\n" "switch button in window titlebars." msgstr "" "ウィンドウのタイトルバーでキーボード\n" "による言語切り替えを有効化" #: ../../WPrefs.app/Preferences.c:292 msgid "Workspace border" msgstr "ワークスペースの境界線" #: ../../WPrefs.app/Preferences.c:308 msgid "Left/Right" msgstr "左/右" #: ../../WPrefs.app/Preferences.c:313 msgid "Top/Bottom" msgstr "上/下" #: ../../WPrefs.app/Preferences.c:330 msgid "Miscellaneous Ergonomic Preferences" msgstr "その他の操作性の設定 " #: ../../WPrefs.app/Preferences.c:331 msgid "" "Various settings like balloon text, geometry\n" "displays etc." msgstr "" "バルーンヘルプやウィンドウサイズ変更時の表示方法など\n" "さまざまな項目を設定します." #: ../../WPrefs.app/TexturePanel.c:293 msgid "Saturation" msgstr "彩度" #: ../../WPrefs.app/TexturePanel.c:295 msgid "Brightness" msgstr "輝度" #: ../../WPrefs.app/TexturePanel.c:340 ../../WPrefs.app/TexturePanel.c:346 msgid "Hue" msgstr "色相" #: ../../WPrefs.app/TexturePanel.c:552 msgid "Could not load the selected file: " msgstr "選択したファイルが開けません: " #: ../../WPrefs.app/TexturePanel.c:602 msgid "Open Image" msgstr "画像を開く" #: ../../WPrefs.app/TexturePanel.c:632 msgid "The selected file does not contain a supported image." msgstr "選択したファイルには表示可能な画像が含まれていません." #: ../../WPrefs.app/TexturePanel.c:862 #, c-format msgid "could not load file '%s': %s" msgstr "ファイルを読み込めません '%s': %s" #: ../../WPrefs.app/TexturePanel.c:976 #, c-format msgid "error creating texture %s" msgstr "テクスチャの作成に失敗 %s" #: ../../WPrefs.app/TexturePanel.c:1136 msgid "Texture Panel" msgstr "テクスチャパネル" #: ../../WPrefs.app/TexturePanel.c:1143 msgid "Texture Name" msgstr "テクスチャの名前" #: ../../WPrefs.app/TexturePanel.c:1155 msgid "Solid Color" msgstr "ベタ塗り" #: ../../WPrefs.app/TexturePanel.c:1156 msgid "Gradient Texture" msgstr "グラデーション表示" #: ../../WPrefs.app/TexturePanel.c:1157 msgid "Simple Gradient Texture" msgstr "単純なグラデージョン" #: ../../WPrefs.app/TexturePanel.c:1158 msgid "Textured Gradient" msgstr "テクスチャでグラデーション" #: ../../WPrefs.app/TexturePanel.c:1159 msgid "Image Texture" msgstr "テクスチャ画像" #: ../../WPrefs.app/TexturePanel.c:1167 msgid "Default Color" msgstr "デフォルトの色" #: ../../WPrefs.app/TexturePanel.c:1179 msgid "Gradient Colors" msgstr "グラデーションの色" #: ../../WPrefs.app/TexturePanel.c:1268 msgid "Direction" msgstr "方向" #: ../../WPrefs.app/TexturePanel.c:1296 msgid "Gradient" msgstr "変化度" #: ../../WPrefs.app/TexturePanel.c:1312 msgid "Gradient Opacity" msgstr "不透明度" #: ../../WPrefs.app/TexturePanel.c:1352 msgid "Image" msgstr "画像" #: ../../WPrefs.app/TexturePanel.c:1384 msgid "Tile" msgstr "しきつめる" #: ../../WPrefs.app/TexturePanel.c:1385 msgid "Scale" msgstr "拡大/縮小" #: ../../WPrefs.app/TexturePanel.c:1387 msgid "Maximize" msgstr "最大化" #: ../../WPrefs.app/Themes.c:63 ../../WPrefs.app/Themes.c:71 msgid "Set" msgstr "設定..." #: ../../WPrefs.app/Themes.c:114 msgid "Stop" msgstr "停止" #: ../../WPrefs.app/Themes.c:125 ../../WPrefs.app/Themes.c:170 #: ../../WPrefs.app/Themes.c:190 msgid "Download" msgstr "ダウンロード" #: ../../WPrefs.app/Themes.c:139 msgid "Save Current Theme" msgstr "現在のテーマを保存" #: ../../WPrefs.app/Themes.c:148 msgid "Load" msgstr "読み込み" #: ../../WPrefs.app/Themes.c:153 msgid "Install" msgstr "インストール" #: ../../WPrefs.app/Themes.c:160 msgid "Tile of The Day" msgstr "今日のタイル" #: ../../WPrefs.app/Themes.c:180 msgid "Bar of The Day" msgstr "今日のバー" #: ../../WPrefs.app/WPrefs.c:221 ../../WPrefs.app/WPrefs.c:291 msgid "Window Maker Preferences" msgstr "" #: ../../WPrefs.app/WPrefs.c:244 msgid "Revert Page" msgstr "ページを復帰" #: ../../WPrefs.app/WPrefs.c:250 msgid "Revert All" msgstr "全てを復帰" #: ../../WPrefs.app/WPrefs.c:256 msgid "Save" msgstr "保存" #: ../../WPrefs.app/WPrefs.c:268 msgid "Balloon Help" msgstr "バルーンヘルプ" #: ../../WPrefs.app/WPrefs.c:298 #, c-format msgid "Version %s" msgstr "" #: ../../WPrefs.app/WPrefs.c:305 msgid "Starting..." msgstr "起動中..." #: ../../WPrefs.app/WPrefs.c:389 #, c-format msgid "could not locate image file %s" msgstr "イメージファイル %s が見付かりません" #: ../../WPrefs.app/WPrefs.c:580 #, c-format msgid "could not load image file %s:%s" msgstr "画像ファイル %s:%s を開けません" #: ../../WPrefs.app/WPrefs.c:597 msgid "Loading Window Maker configuration files..." msgstr "Window Maker の設定ファイルを読み込み中..." #: ../../WPrefs.app/WPrefs.c:601 msgid "Initializing configuration panels..." msgstr "設定パネルを初期化中..." #: ../../WPrefs.app/WPrefs.c:658 ../../WPrefs.app/WPrefs.c:740 #, c-format msgid "Window Maker domain (%s) is corrupted!" msgstr "Maker のドメイン (%s) に障害!" #: ../../WPrefs.app/WPrefs.c:662 #, c-format msgid "Could not load Window Maker domain (%s) from defaults database." msgstr "Window Maker domain (%s) をデフォルトデータベースから読み込めません." #: ../../WPrefs.app/WPrefs.c:677 msgid "could not extract version information from Window Maker" msgstr "Window Maker からバージョン情報を取得できません" #: ../../WPrefs.app/WPrefs.c:678 msgid "Make sure wmaker is in your search path." msgstr "wmaker がサーチパスに含まれているか確認して下さい" #: ../../WPrefs.app/WPrefs.c:682 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:692 msgid "" "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." msgstr "" "Window Maker のバージョン情報を読み取れません. 適切にインストールされ, " "そこに PATH を通してあることを確認してください." #: ../../WPrefs.app/WPrefs.c:699 #, 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:708 #, 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:721 #, c-format msgid "could not run \"%s --global_defaults_path\"." msgstr "\"%s -global_defaults_path\" を実行できません." #: ../../WPrefs.app/WPrefs.c:744 #, c-format msgid "Could not load global Window Maker domain (%s)." msgstr "Window Makerのグローバル・ドメイン(%s)を読み込めません." #: ../../WPrefs.app/WPrefs.c:964 #, c-format msgid "bad speed value for option %s; using default Medium" msgstr "オプション %s のspeed値は不正です. デフォルト値を使用します." #: ../../WPrefs.app/WindowHandling.c:155 #, c-format msgid "bad option value %s in WindowPlacement. Using default value" msgstr "ウインドウ配置オプション %s は不正です. デフォルト値を使用します." #: ../../WPrefs.app/WindowHandling.c:174 msgid "invalid data in option WindowPlaceOrigin. Using default (0,0)" msgstr "配置の基準値が不正です. デフォルトの(0,0)を使用します." #: ../../WPrefs.app/WindowHandling.c:257 msgid "Window Placement" msgstr "ウインドウの配置 " #: ../../WPrefs.app/WindowHandling.c:258 msgid "" "How to place windows when they are first put\n" "on screen." msgstr "" "ウィンドウの初期表示を\n" "どう配置するか" #: ../../WPrefs.app/WindowHandling.c:264 msgid "Automatic" msgstr "自動" #: ../../WPrefs.app/WindowHandling.c:265 msgid "Random" msgstr "ランダム" #: ../../WPrefs.app/WindowHandling.c:266 msgid "Manual" msgstr "手動" #: ../../WPrefs.app/WindowHandling.c:267 msgid "Cascade" msgstr "ずらして重ねる" #: ../../WPrefs.app/WindowHandling.c:268 msgid "Smart" msgstr "スマート" #: ../../WPrefs.app/WindowHandling.c:274 msgid "Placement Origin" msgstr "配置の基準点" #: ../../WPrefs.app/WindowHandling.c:334 msgid "Opaque Move/Resize" msgstr "表示しながら 移動/サイズ変更" #: ../../WPrefs.app/WindowHandling.c:335 msgid "" "Whether the window contents or only a frame should\n" "be displayed during a move or resize.\n" msgstr "" "ウィンドウを移動したりサイズ変更したりする時に\n" "中身を表示したままにするか 枠線だけにするか を\n" "指定します\n" #: ../../WPrefs.app/WindowHandling.c:406 msgid "When maximizing..." msgstr "最大化のときに..." #: ../../WPrefs.app/WindowHandling.c:411 msgid "...do not cover icons" msgstr "...アイコンを覆わない" #: ../../WPrefs.app/WindowHandling.c:417 msgid "...do not cover dock" msgstr "...ドックを覆わない" #: ../../WPrefs.app/WindowHandling.c:442 msgid "Edge Resistance" msgstr "ふちでの抵抗" #: ../../WPrefs.app/WindowHandling.c:444 msgid "" "Edge resistance will make windows `resist'\n" "being moved further for the defined threshold\n" "when moved against other windows or the edges\n" "of the screen." msgstr "" "他のウィンドウや画面のふちに向かって移動する時に\n" "ここで指定したしきい値まで '抵抗' して\n" "重なったり はみだしたりするのを防ぎます" #: ../../WPrefs.app/WindowHandling.c:463 msgid "Resist" msgstr "抵抗する" #: ../../WPrefs.app/WindowHandling.c:468 msgid "Attract" msgstr "ひっつく" #: ../../WPrefs.app/WindowHandling.c:482 msgid "Open dialogs in the same workspace as their owners" msgstr "" "ダイアログはオーナーと同じ ワークスペースに表示する" #: ../../WPrefs.app/WindowHandling.c:505 msgid "Window Handling Preferences" msgstr "ウィンドウ操作の設定 " #: ../../WPrefs.app/WindowHandling.c:507 msgid "" "Window handling options. Initial placement style\n" "edge resistance, opaque move etc." msgstr "" "ウィンドウ操作のオプション. 初期表示のスタイルや\n" "移動/リサイズ時の表示のしかたなどを設定します." #: ../../WPrefs.app/Workspace.c:162 msgid "Workspace Navigation" msgstr "ワークスペースの操作" #: ../../WPrefs.app/Workspace.c:167 msgid "Wrap to the first workspace from the last workspace" msgstr "最後のワークスペースから 最初のワークスペースに" #: ../../WPrefs.app/Workspace.c:186 msgid "Switch workspaces while dragging windows" msgstr "ドラッグ中にワークスペースの切り替え" #: ../../WPrefs.app/Workspace.c:205 msgid "Automatically create new workspaces" msgstr "自動的に新しいワークスペースを作成" #: ../../WPrefs.app/Workspace.c:225 msgid "Position of workspace name display" msgstr "ワークスペースの名前の表示位置" #: ../../WPrefs.app/Workspace.c:244 msgid "Disable" msgstr "無効" #: ../../WPrefs.app/Workspace.c:246 msgid "Top" msgstr "上" #: ../../WPrefs.app/Workspace.c:247 msgid "Bottom" msgstr "下" #: ../../WPrefs.app/Workspace.c:248 msgid "Top/Left" msgstr "左上" #: ../../WPrefs.app/Workspace.c:249 msgid "Top/Right" msgstr "右上" #: ../../WPrefs.app/Workspace.c:250 msgid "Bottom/Left" msgstr "左下" #: ../../WPrefs.app/Workspace.c:251 msgid "Bottom/Right" msgstr "右下" #: ../../WPrefs.app/Workspace.c:259 msgid "Dock/Clip" msgstr "ドック/クリップ" #: ../../WPrefs.app/Workspace.c:278 msgid "" "Disable/enable the application Dock (the\n" "vertical icon bar in the side of the screen)." msgstr "" "ドック(画面右端のアイコンバー)の\n" "有効化/無効化" #: ../../WPrefs.app/Workspace.c:298 msgid "" "Disable/enable the Clip (that thing with\n" "a paper clip icon)." msgstr "" "クリップ(紙クリップみたいなアイコンのアレ)\n" "の有効化/無効化" #: ../../WPrefs.app/Workspace.c:332 msgid "Workspace Preferences" msgstr "ワークスペースの設定 " #: ../../WPrefs.app/Workspace.c:334 msgid "" "Workspace navigation features.\n" "You can also enable/disable the Dock and Clip here." msgstr "" "ワークスペースの操作方法を設定します.\n" "ドック/クリップの有効化/無効化も設定できます." #: ../../WPrefs.app/main.c:52 #, c-format msgid "usage: %s [options]\n" msgstr "使用方法: %s [オプション]\n" #: ../../WPrefs.app/main.c:53 msgid "options:" msgstr "オプション:" #: ../../WPrefs.app/main.c:54 msgid " -display <display>\tdisplay to be used" msgstr " -display <display>\tディスプレイの指定" #: ../../WPrefs.app/main.c:55 msgid " --version\t\tprint version number and exit" msgstr " --version\t\tバージョンを表示してすぐ終了する" #: ../../WPrefs.app/main.c:56 msgid " --help\t\tprint this message and exit" msgstr " --help\t\tこのメッセージを表示してすぐ終了する" #: ../../WPrefs.app/main.c:123 #, c-format msgid "too few arguments for %s" msgstr "%sに対する引数が足りません" #: ../../WPrefs.app/main.c:145 msgid "X server does not support locale" msgstr "Xサーバがロケール機能をサポートしていません" #: ../../WPrefs.app/main.c:148 msgid "cannot set locale modifiers" msgstr "ロケールを設定できません" #: ../../WPrefs.app/main.c:154 #, c-format msgid "could not open display %s" msgstr "ディスプレイ`%s'を開けません" #: ../../WPrefs.app/main.c:162 msgid "could not initialize application" msgstr "アプリケーションの初期化に失敗" ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/po/et.po��������������������������������������������������������������0000644�0001750�0001750�00000153544�13431646201�014355� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Estonian translation of Window Maker # Copyright (C) 2000, 2001 Free Software Foundation, Inc. # Ivar Smolin <okul@linux.ee>, 2000, 2001 msgid "" msgstr "" "Project-Id-Version: Window Maker 0.65.1\n" "POT-Creation-Date: 2001-09-05 09:12+0200\n" "PO-Revision-Date: 2001-09-05 09:40+0200\n" "Last-Translator: Ivar Smolin <okul@linux.ee>\n" "Language-Team: Estonian <linux-ee@eenet.ee>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../src/appicon.c:542 ../src/dialog.c:224 ../src/dock.c:3276 #: ../src/dockedapp.c:230 ../src/main.c:256 ../src/rootmenu.c:1815 #: ../src/winspector.c:388 ../src/winspector.c:405 msgid "Error" msgstr "Viga" #: ../src/appicon.c:543 msgid "Could not open specified icon file" msgstr "Ei őnnestu avada kirjeldatud ikoonifaili" #: ../src/appicon.c:544 ../src/dialog.c:121 ../src/dialog.c:224 #: ../src/dialog.c:672 ../src/dialog.c:1735 ../src/dock.c:493 #: ../src/dock.c:501 ../src/dock.c:525 ../src/dock.c:3277 #: ../src/dockedapp.c:231 ../src/dockedapp.c:426 ../src/main.c:256 #: ../src/rootmenu.c:1819 ../src/winspector.c:389 ../src/winspector.c:406 msgid "OK" msgstr "OK" #: ../src/appicon.c:571 ../src/dock.c:256 msgid "" " will be forcibly closed.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" " suletakse jőuga.\n" "Kőik salvestamata andmed lähevad kaotsi.\n" "Kas soovite seda teha?" #: ../src/appicon.c:577 ../src/dock.c:261 ../src/winmenu.c:128 msgid "Kill Application" msgstr "Programmi kőrvaldamine" #: ../src/appicon.c:578 ../src/dock.c:262 ../src/winmenu.c:130 msgid "Yes" msgstr "Jah" #: ../src/appicon.c:578 ../src/dock.c:262 ../src/winmenu.c:130 msgid "No" msgstr "Ei" #: ../src/appicon.c:596 ../src/dock.c:1144 ../src/dock.c:3442 msgid "Unhide Here" msgstr "Too siia töölauale" #: ../src/appicon.c:597 ../src/appicon.c:623 ../src/dock.c:1146 #: ../src/dock.c:1148 ../src/dock.c:3454 ../src/winmenu.c:465 msgid "Hide" msgstr "Peida" #: ../src/appicon.c:598 ../src/appicon.c:629 msgid "Collapse" msgstr "Ahenda" #: ../src/appicon.c:599 msgid "Set Icon..." msgstr "Vali ikoon..." #: ../src/appicon.c:600 ../src/dock.c:1152 ../src/rootmenu.c:223 #: ../src/rootmenu.c:237 ../src/winmenu.c:512 msgid "Kill" msgstr "Kőrvalda" #: ../src/appicon.c:621 ../src/dock.c:3452 msgid "Unhide" msgstr "Too nähtavale" #: ../src/appicon.c:627 msgid "Uncollapse" msgstr "Tühista ahendamine" #: ../src/defaults.c:917 ../src/startup.c:889 ../src/startup.c:907 #: ../src/startup.c:913 #, c-format msgid "could not read domain \"%s\" from defaults database" msgstr "ei őnnestu lugeda domeeni \"%s\" vaikeväärtuste andmebaasist" #: ../src/defaults.c:963 ../src/defaults.c:1088 ../src/defaults.c:1127 #: ../src/defaults.c:1173 #, c-format msgid "Domain %s (%s) of defaults database is corrupted!" msgstr "Domeen %s (%s) vaikeväärtuste andmebaasis on katki!" #: ../src/defaults.c:968 ../src/defaults.c:1109 ../src/defaults.c:1156 #: ../src/defaults.c:1182 #, c-format msgid "could not load domain %s from user defaults database" msgstr "ei őnnestu lugeda domeeni %s kasutaja vaikeväärtuste andmebaasist" #: ../src/defaults.c:979 ../src/defaults.c:1073 #, c-format msgid "Domain %s (%s) of global defaults database is corrupted!" msgstr "Üldise vaikeväärtuste andmebaasi domeen %s (%s) on katki!" #: ../src/defaults.c:998 #, c-format msgid "could not load domain %s from global defaults database (%s)" msgstr "" "ei őnnestu laadida domeeni %s üldisest vaikeväärtuste andmebaasist (%s)" #: ../src/defaults.c:1078 #, c-format msgid "could not load domain %s from global defaults database" msgstr "ei őnnestu laadida domeeni %s globaalsete vaikeväärtuste andmebaasist" #: ../src/defaults.c:1146 ../src/screen.c:458 #, c-format msgid "could not load logo image for panels: %s" msgstr "ei őnnestu laadida paneelide logopilti: %s" #. --------------------------- Local ----------------------- #: ../src/defaults.c:1391 ../src/defaults.c:1533 ../src/defaults.c:1645 #: ../src/defaults.c:2124 ../src/defaults.c:2141 ../src/defaults.c:2186 #: ../src/defaults.c:2233 ../src/defaults.c:2708 ../src/wdefaults.c:570 #: ../src/wdefaults.c:606 #, c-format msgid "Wrong option format for key \"%s\". Should be %s." msgstr "Vigane formaat vőtmele \"%s\". Peaks olema %s." #: ../src/defaults.c:1393 ../src/defaults.c:1474 ../src/defaults.c:1506 #: ../src/defaults.c:1538 ../src/defaults.c:1551 ../src/defaults.c:1566 #: ../src/defaults.c:1580 ../src/defaults.c:1650 ../src/defaults.c:1662 #: ../src/defaults.c:2129 ../src/defaults.c:2146 ../src/defaults.c:2159 #: ../src/defaults.c:2191 ../src/defaults.c:2207 ../src/defaults.c:2238 #: ../src/defaults.c:2325 ../src/defaults.c:2713 ../src/defaults.c:2724 #, c-format msgid "using default \"%s\" instead" msgstr "selle asemel kasutan vaikimisi \"%s\"" #: ../src/defaults.c:1424 #, c-format msgid "wrong option value for key \"%s\". Should be one of %s" msgstr "vigane valikuväärtus vőtmele \"%s\". Peab olema üks %s väärtustest" #: ../src/defaults.c:1469 #, c-format msgid "can't convert \"%s\" to boolean for key \"%s\"" msgstr "ei őnnestu teisendada \"%s\" vőtme \"%s\" loogikaväärtuseks" #: ../src/defaults.c:1503 #, c-format msgid "can't convert \"%s\" to integer for key \"%s\"" msgstr "ei őnnestu teisendada \"%s\" täisarvuks vőtmele \"%s\"" #: ../src/defaults.c:1546 #, c-format msgid "Incorrect number of elements in array for key \"%s\"." msgstr "Ebatäpne massiivi elementide arv vőtmele \"%s\"." #: ../src/defaults.c:1561 #, c-format msgid "Wrong value for key \"%s\". Should be Coordinate." msgstr "Vale vőtme \"%s\" väärtus. Peaksid olemad koordinaadid." #: ../src/defaults.c:1576 #, c-format msgid "can't convert array to integers for \"%s\"." msgstr "ei őnnestu teisendada massiivi täisarvudeks \"%s\" jaoks." #: ../src/defaults.c:1774 ../src/defaults.c:1806 ../src/defaults.c:1822 #: ../src/defaults.c:1851 ../src/defaults.c:1874 ../src/defaults.c:1927 #: ../src/defaults.c:1967 ../src/defaults.c:2005 ../src/defaults.c:2021 #, c-format msgid "\"%s\" is not a valid color name" msgstr "\"%s\" ei ole korrektne värvi nimetus" #: ../src/defaults.c:1787 ../src/defaults.c:1839 msgid "bad number of arguments in gradient specification" msgstr "vigane argumentide arv hajusülemineku kirjelduses" #: ../src/defaults.c:1900 msgid "too few arguments in multicolor gradient specification" msgstr "liiga vähe argumente mitmevärvilise hajusülemineku kirjelduses" #: ../src/defaults.c:1994 msgid "bad number of arguments in textured gradient specification" msgstr "vigane argumentide arv tekstuuriga hajusülemineku kirjelduses" #: ../src/defaults.c:2037 #, c-format msgid "bad opacity value for tgradient texture \"%s\". Should be [0..255]" msgstr "" "vigane tumeduse väärtus tgradient tekstuurile \"%s\". Peaks olema [0..255]" #: ../src/defaults.c:2097 #, c-format msgid "could not initialize library %s" msgstr "ei őnnestu lähtestada teeki %s" #: ../src/defaults.c:2100 #, c-format msgid "could not find function %s::%s" msgstr "ei őnnestu leida funktsiooni %s::%s" #: ../src/defaults.c:2107 #, c-format msgid "invalid texture type %s" msgstr "vigane tekstuuri tüüp %s" #: ../src/defaults.c:2154 #, c-format msgid "Error in texture specification for key \"%s\"" msgstr "Viga vőtme \"%s\" tekstuuri kirjelduses" #: ../src/defaults.c:2203 msgid "Wrong type for workspace background. Should be a texture type." msgstr "Vigane töölaua tausta tüüp. Peaks olema tekstuur-tüüpi." #: ../src/defaults.c:2251 #, c-format msgid "Wrong type for background of workspace %i. Should be a texture." msgstr "Vigane töölaua %i tausta tüüp. Peaks olema tekstuur-tüüpi." #: ../src/defaults.c:2293 msgid "could not load any usable font!!!" msgstr "ei őnnestu laadid ühtki kasutuskőlblikku shrifti!!!" #: ../src/defaults.c:2320 #, c-format msgid "could not get color for key \"%s\"" msgstr "ei őnnestu leida värvi vőtmele \"%s\"" #: ../src/defaults.c:2378 ../src/rootmenu.c:491 #, c-format msgid "%s:invalid key modifier \"%s\"" msgstr "%s: vigane vőtme muutja \"%s\"" #: ../src/defaults.c:2390 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\"" msgstr "%s: vigane kiirklahvi kirjeldus \"%s\"" #: ../src/defaults.c:2397 #, c-format msgid "%s:invalid key in shortcut \"%s\"" msgstr "%s: vigane vőti kiirklahvil \"%s\"" #: ../src/defaults.c:2422 #, c-format msgid "%s: modifier key %s is not valid" msgstr "%s: muutmisklahv %s on vigane" #: ../src/defaults.c:2454 #, c-format msgid "could not load image in option %s: %s" msgstr "ei őnnestu pildi laadimine valikus %s: %s" #: ../src/defaults.c:2573 #, c-format msgid "failed to open bitmap file \"%s\"" msgstr "ei őnnestu avada pildifaili \"%s\"" #: ../src/defaults.c:2576 #, c-format msgid "\"%s\" is not a valid bitmap file" msgstr "\"%s\" ei ole korrektne pildifail" #: ../src/defaults.c:2579 #, c-format msgid "out of memory reading bitmap file \"%s\"" msgstr "mälu lőppes pildifaili \"%s\" lugemisel" #: ../src/defaults.c:2618 ../src/defaults.c:2651 msgid "bad number of arguments in cursor specification" msgstr "vigane argumentide arv kursori kirjelduses" #: ../src/defaults.c:2634 #, c-format msgid "unknown builtin cursor name \"%s\"" msgstr "tundmatu sisseehitatud kursori nimi: \"%s\"" #: ../src/defaults.c:2661 ../src/defaults.c:2673 #, c-format msgid "could not find cursor bitmap file \"%s\"" msgstr "ei őnnestu leida kursori pildifaili \"%s\"" #: ../src/defaults.c:2720 #, c-format msgid "Error in cursor specification for key \"%s\"" msgstr "Viga vőtme \"%s\" kursori kirjelduses" #: ../src/defaults.c:2807 msgid "could not render texture for icon background" msgstr "tekstuuri renderdamine ikooni taustapildiks ei őnnestu" #: ../src/dialog.c:121 ../src/dialog.c:679 ../src/dock.c:525 #: ../src/dockedapp.c:431 ../src/rootmenu.c:185 ../src/rootmenu.c:223 #: ../src/rootmenu.c:237 msgid "Cancel" msgstr "Tühistan" #: ../src/dialog.c:219 msgid "Could not open directory " msgstr "Ei őnnestu avada kataloogi " #: ../src/dialog.c:274 msgid "Could not load image file " msgstr "Ei őnnestu avada pildifaili " #: ../src/dialog.c:606 msgid "Directories" msgstr "Kataloogid" #: ../src/dialog.c:615 msgid "Icons" msgstr "Ikoonid" #: ../src/dialog.c:648 msgid "Preview" msgstr "Eelvaade" #: ../src/dialog.c:661 msgid "File Name:" msgstr "Faili nimi:" #: ../src/dialog.c:685 msgid "Choose File" msgstr "Vali fail" #: ../src/dialog.c:703 ../src/dialog.c:705 msgid "Icon Chooser" msgstr "Ikooni valija" #: ../src/dialog.c:1162 ../src/dialog.c:1272 #, c-format msgid "Version %s" msgstr "Versioon %s" #: ../src/dialog.c:1269 msgid "Window Manager for X" msgstr "X'i aknahaldur" #: ../src/dialog.c:1292 #, c-format msgid "Using visual 0x%x: %s %ibpp " msgstr "Kasutan visuaali 0x%x: %s %ibpp " #: ../src/dialog.c:1300 msgid "(32 thousand colors)\n" msgstr "(32 tuhat värvi)\n" #: ../src/dialog.c:1303 msgid "(64 thousand colors)\n" msgstr "(64 tuhat värvi)\n" #: ../src/dialog.c:1307 msgid "(16 million colors)\n" msgstr "(16 miljonit värvi)\n" #: ../src/dialog.c:1310 #, c-format msgid "(%d colors)\n" msgstr "(%d värvi)\n" #: ../src/dialog.c:1320 #, c-format msgid "Total allocated memory: %i kB. Total memory in use: %i kB.\n" msgstr "Eraldatud mälu kokku: %i kB. Mälu kasutuses: %i kB.\n" #: ../src/dialog.c:1327 msgid "Supported image formats: " msgstr "Toetatud pildivormingud: " #: ../src/dialog.c:1334 msgid "" "\n" "Additional support for: " msgstr "" "\n" "Lisaks on toetatud: " #: ../src/dialog.c:1357 msgid " and " msgstr " ja " #: ../src/dialog.c:1367 msgid "" "\n" "Sound disabled" msgstr "" "\n" "Heli on keelatud" #: ../src/dialog.c:1369 msgid "" "\n" "Sound enabled" msgstr "" "\n" "Heli on lubatud" #: ../src/dialog.c:1393 msgid "Info" msgstr "Info" #: ../src/dialog.c:1416 msgid "Merry X'mas!" msgstr "Häid jőule!" #: ../src/dialog.c:1486 msgid "" " Window Maker is free software; you can redistribute it and/or\n" "modify it under the terms of the GNU General Public License as\n" "published by the Free Software Foundation; either version 2 of the\n" "License, or (at your option) any later version.\n" "\n" "\n" " Window Maker is distributed in the hope that it will be useful,\n" "but WITHOUT ANY WARRANTY; without even the implied warranty\n" "of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" "See the GNU General Public License for more details.\n" "\n" "\n" " You should have received a copy of the GNU General Public\n" "License along with this program; if not, write to the Free Software\n" "Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA\n" "02110-1301, USA." msgstr "" " Window Maker on vaba tarkvara. Te vőite seda edasi\n" "levitada ja/vői muuta vastavalt GNU Üldise Avaliku Litsentsi\n" "tingimustele, nagu need on Vaba Tarkvara Fondi poolt\n" "avaldatud; kas Litsentsi versioon number 2 vői (vastavalt\n" "Teie valikule) ükskőik milline hilisem versioon.\n" "\n" "\n" "Seda programmi levitatakse lootuses, et see on kasulik, kuid\n" "ILMA IGASUGUSE GARANTIITA; isegi KESKMISE/TAVALISE KVALITEEDI\n" "GARANTIITA vői SOBIVUSELE TEATUD KINDLAKS EESMÄRGIKS.\n" "Üksikasjade suhtes vaata GNU Üldist Avalikku Litsentsi.\n" "\n" "\n" "Te peaks olema saanud GNU Üldise Avaliku Litsentsi koopia\n" "koos selle programmiga, kui ei, siis kontakteeruge Free\n" "Software Foundation'iga, 51 Franklin St, Fifth Floor,\n" "Boston, MA 02110-1301, USA." #: ../src/dialog.c:1507 msgid "Legal" msgstr "Litsentsiinfo" #: ../src/dialog.c:1658 ../src/startup.c:395 msgid "cannot open connection for crashing dialog panel. Aborting." msgstr "ei őnnestu luua ühendust avariipaneeliga. Annan alla." #: ../src/dialog.c:1684 msgid "Fatal error" msgstr "Fataalviga" #: ../src/dialog.c:1695 #, c-format msgid "" "Window Maker received signal %i\n" "(%s)." msgstr "" "Window Maker vőttis vastu signaali %i\n" "(%s)." #: ../src/dialog.c:1698 #, c-format msgid "Window Maker received signal %i." msgstr "Window Maker vőttis vastu signaali %i." #: ../src/dialog.c:1707 msgid "" " This fatal error occured probably due to a bug. Please fill the included " "BUGFORM and report it to bugs@windowmaker.info." msgstr "" " See fataalviga on arvatavasti pőhjustatud programmi veast. Palun täitke " "kaasasolev vigadest teatamise vorm (BUGFORM) ja saatke see aadressil " "bugs@windowmaker.info." #: ../src/dialog.c:1716 msgid "What do you want to do now?" msgstr "Mida sa nüüd soovid teha?" #: ../src/dialog.c:1722 msgid "Select action" msgstr "Vali tegevus" #: ../src/dialog.c:1723 msgid "Abort and leave a core file" msgstr "Lőpetan töö ja salvestan mälutőmmise" #: ../src/dialog.c:1724 msgid "Restart Window Maker" msgstr "Taaskäivitan Window Makeri" #: ../src/dialog.c:1725 msgid "Start alternate window manager" msgstr "Käivitan alternatiivse aknahalduri" #: ../src/dialog.c:1903 msgid "" "Window Maker is part of the GNUstep project.\n" "The GNUstep project aims to create a free\n" "implementation of the OpenStep(tm) specification\n" "which is a object-oriented framework for\n" "creating advanced graphical, multi-platform\n" "applications. Additionally, a development and\n" "user desktop environment will be created on top\n" "of the framework. For more information about\n" "GNUstep, please visit: www.gnustep.org" msgstr "" "Window Maker on osa GNUstep projektist. GNUstep\n" "projekti eesmärgiks on OpenStep(tm) kirjelduse\n" "(objektorienteeritud framework graafiliste\n" "multiplatvorm rakenduste jaoks) vaba\n" "implementatsiooni loomine. Lisaeesmärgiks on \n" "ka sellel baseeruva ka arenduskeskkonna ja\n" "kasutaja töölauakeskkonna loomine. Lisateabe\n" "saamiseks palun külasada saidi www.gnustep.org" #: ../src/dialog.c:1923 msgid "About GNUstep" msgstr "GNUstep'ist lähemalt" #: ../src/dock.c:213 #, c-format msgid "Type the name for workspace %i:" msgstr "Sisesta töölaua %i nimi:" #: ../src/dock.c:214 ../src/dock.c:1108 ../src/dock.c:1111 ../src/dock.c:3360 msgid "Rename Workspace" msgstr "Töölaua ümbernimetamine" #: ../src/dock.c:487 ../src/dock.c:495 msgid "Warning" msgstr "Hoiatus" #: ../src/dock.c:488 msgid "" "Some icons cannot be made omnipresent. Please make sure that no other icon " "is docked in the same positions on the other workspaces and the Clip is not " "full in some workspace." msgstr "" "Mőningaid ikoone ei ole vőimalik kőikidel töölaudadel nähtavaks teha. " "Veenduge, et teistel töölaudadel ei ole ükski ikoon dokitud samale " "positsioonile ja Klamber ei ole mőnel töölaual täis." #: ../src/dock.c:496 msgid "" "Icon cannot be made omnipresent. Please make sure that no other icon is " "docked in the same position on the other workspaces and the Clip is not full " "in some workspace." msgstr "" "Ikooni ei ole vőimalik kőikidel töölaudadel nähtavaks teha. Veenduge, et " "teistel töölaudadel ei ole ükski ikoon dokitud samale positsioonile ja " "Klamber ei ole mőnel töölaual täis." #: ../src/dock.c:523 msgid "Workspace Clip" msgstr "Töölaua Klamber" #: ../src/dock.c:524 msgid "All selected icons will be removed!" msgstr "Kőik valitud ikoonid eemaldatakse!" #: ../src/dock.c:575 ../src/dock.c:1123 ../src/dock.c:1125 ../src/dock.c:3396 msgid "Keep Icon" msgstr "Hoia ikooni" #: ../src/dock.c:576 ../src/dock.c:2104 ../src/dock.c:2245 msgid "Type the command used to launch the application" msgstr "Tipi korraldus, mida kasutada rakenduse käivitamiseks" #: ../src/dock.c:932 #, c-format msgid "could not launch application %s\n" msgstr "ei őnnestu käivitada rakendust %s\n" #: ../src/dock.c:987 msgid "could not create workspace submenu for Clip menu" msgstr "ei őnnestu luua klambrimenüüle töölaua alammenüüd" #: ../src/dock.c:1045 msgid "could not create options submenu for Clip menu" msgstr "ei őnnestu luua klambrimenüüle valikute alammenüüd" #: ../src/dock.c:1049 ../src/dock.c:1097 msgid "Keep on Top" msgstr "Hoia esiplaanil" #: ../src/dock.c:1055 msgid "Collapsed" msgstr "Ahendatud" #: ../src/dock.c:1061 msgid "Autocollapse" msgstr "Automaatselt ahenev" #: ../src/dock.c:1067 msgid "Autoraise" msgstr "Automaatselt esile tőusev" #: ../src/dock.c:1073 msgid "Autoattract Icons" msgstr "Ikoonide automaatne külgehaakimine" #: ../src/dock.c:1103 msgid "Clip Options" msgstr "Klambri valikud" #: ../src/dock.c:1113 msgid "Selected" msgstr "Valitud" #: ../src/dock.c:1118 ../src/dock.c:1121 ../src/dock.c:3387 msgid "Select All Icons" msgstr "Vali kőik ikoonid" #: ../src/dock.c:1127 ../src/dock.c:1129 ../src/dock.c:3404 msgid "Move Icon To" msgstr "Teisalda ikoon->" #: ../src/dock.c:1134 ../src/dock.c:1137 ../src/dock.c:3415 msgid "Remove Icon" msgstr "Eemalda ikoon" #: ../src/dock.c:1139 msgid "Attract Icons" msgstr "Haagi ikoonid külge" #: ../src/dock.c:1142 msgid "Launch" msgstr "Käivita" #: ../src/dock.c:1150 msgid "Settings..." msgstr "Määrangud..." #: ../src/dock.c:1515 ../src/dock.c:1622 #, c-format msgid "bad value in docked icon state info %s" msgstr "vigane väärtus dokitud ikooni olekuinfos %s " #: ../src/dock.c:1630 #, c-format msgid "bad value in docked icon position %i,%i" msgstr "vigane väärtus dokitud ikooni asukohal %i,%i" #: ../src/dock.c:1650 #, c-format msgid "bad value in dock state info:%s" msgstr "vigane väärtus doki olekuinfos:%s" #: ../src/dock.c:1886 msgid "there are too many icons stored in dock. Ignoring what doesn't fit" msgstr "" "dokki on salvestatud liiga palju ikoone. Eiran neid, mida ei suuda hallata" #. icon->forced_dock = 1; #: ../src/dock.c:2103 ../src/dock.c:2244 msgid "Dock Icon" msgstr "Dokin ikooni" #: ../src/dock.c:3267 ../src/dock.c:3270 ../src/dock.c:3273 #, c-format msgid "Could not execute command \"%s\"" msgstr "Ei őnnestu täita korraldust \"%s\"" #: ../src/dock.c:3366 msgid "Toggle Omnipresent" msgstr "Näita/ära näita kőigil töölaudadel" #: ../src/dock.c:3371 ../src/winmenu.c:417 ../src/winspector.c:1395 msgid "Omnipresent" msgstr "Näita kőigil töölaudadel" #: ../src/dock.c:3385 msgid "Unselect All Icons" msgstr "Tühista ikoonivalik" #: ../src/dock.c:3394 msgid "Keep Icons" msgstr "Hoia ikoone" #: ../src/dock.c:3402 msgid "Move Icons To" msgstr "Teisalda ikoonid->" #: ../src/dock.c:3413 msgid "Remove Icons" msgstr "Eemalda ikoonid" #: ../src/dock.c:3444 msgid "Bring Here" msgstr "Too siia" #: ../src/dockedapp.c:149 #, c-format msgid "could not find icon %s, used in a docked application" msgstr "ei leia dokitud rakenduses kasutatavat ikooni %s" #: ../src/dockedapp.c:229 #, c-format msgid "Could not open specified icon file: %s" msgstr "Ei őnnestu avada määratud ikoonifaili: %s" #: ../src/dockedapp.c:231 msgid "Ignore" msgstr "Eira" #: ../src/dockedapp.c:333 msgid "Start when Window Maker is started" msgstr "Käivita koos Window Maker'iga" #: ../src/dockedapp.c:340 msgid "Lock (prevent accidental removal)" msgstr "Lukustatud (ei saa kogemata kustutada)" #: ../src/dockedapp.c:344 msgid "Application path and arguments" msgstr "Rakenduse tee ja argumendid" #: ../src/dockedapp.c:357 msgid "Command for middle-click launch" msgstr "Korraldus, mis käivitatakse keskmise nupu vajutamisel" #: ../src/dockedapp.c:371 #, c-format msgid "%s will be replaced with current selection" msgstr "%s asendatakse antud valikuga" #: ../src/dockedapp.c:376 msgid "Command for files dropped with DND" msgstr "Korraldus DND abil saadetud failidele" #: ../src/dockedapp.c:390 #, c-format msgid "%d will be replaced with the file name" msgstr "%d asendatakse failinimega" #: ../src/dockedapp.c:394 msgid "DND support was not compiled in" msgstr "DND toetus ei ole sisse kompileeritud" #: ../src/dockedapp.c:399 msgid "Icon Image" msgstr "Ikooni pilt" #: ../src/dockedapp.c:413 ../src/winspector.c:1533 msgid "Browse..." msgstr "Kuva..." #: ../src/dockedapp.c:466 msgid "Docked Application Settings" msgstr "Dokitud rakenduse määrangud" #: ../src/framewin.c:649 ../src/framewin.c:744 ../src/menu.c:456 #: ../src/texture.c:594 #, c-format msgid "could not render texture: %s" msgstr "ei őnnestu renderdada tekstuuri %s" #: ../src/framewin.c:672 ../src/framewin.c:683 ../src/framewin.c:699 #: ../src/framewin.c:710 ../src/framewin.c:717 ../src/framewin.c:724 #: ../src/icon.c:350 ../src/menu.c:485 #, c-format msgid "error rendering image:%s" msgstr "viga pildi renderdamisel:%s" #: ../src/framewin.c:777 #, c-format msgid "error rendering image: %s" msgstr "viga pildi renderdamisel: %s" #: ../src/icon.c:229 ../src/wdefaults.c:440 #, c-format msgid "error loading image file \"%s\"" msgstr "viga pildifaili \"%s\" laadimisel" #: ../src/icon.c:491 ../src/icon.c:500 #, c-format msgid "could not create directory %s" msgstr "ei őnnestu luua kataloogi %s" #: ../src/icon.c:767 #, c-format msgid "could not find default icon \"%s\"" msgstr "ei őnnestu leida vaikimisi kasutatavat ikooni \"%s\"" #: ../src/icon.c:773 #, c-format msgid "could not load default icon \"%s\":%s" msgstr "Ei őnnestu laadida vaikimisi kasutatavat ikooni \"%s\":%s" #: ../src/main.c:205 msgid "failed to restart Window Maker." msgstr "Window Makeri taaskäivitamine ebaőnnestus." #: ../src/main.c:208 #, c-format msgid "could not exec %s" msgstr "ei őnnestu käivitada %s" #: ../src/main.c:254 msgid "Could not execute command: " msgstr "Ei őnnestu käivitada korraldust: " #: ../src/main.c:411 #, c-format msgid "%s aborted.\n" msgstr "%s katkestatud.\n" #: ../src/main.c:422 #, c-format msgid "Usage: %s [options]\n" msgstr "Kasuta: %s [valikud]\n" #: ../src/main.c:423 msgid "The Window Maker window manager for the X window system" msgstr "Window Maker on aknahaldur X window system'ile" #: ../src/main.c:425 msgid " -display host:dpy\tdisplay to use" msgstr " -display host:dpy\tmäärab, millist kuva kasutada" #: ../src/main.c:427 msgid " --no-cpp \t\tdisable preprocessing of configuration files" msgstr " --no-cpp \t\tkeelab häälestusfailide eeltöötluse" #: ../src/main.c:429 msgid " --no-dock\t\tdo not open the application Dock" msgstr " --no-dock\t\tkeelab rakenduste doki avamise" #: ../src/main.c:430 msgid " --no-clip\t\tdo not open the workspace Clip" msgstr " --no-clip\t\tkeelab töölaua klambri avamise" #: ../src/main.c:431 msgid " --no-autolaunch\tdo not autolaunch applications" msgstr " --no-autolaunch\tkeelab rakenduste automaatse käivitamise" #: ../src/main.c:432 msgid " --dont-restore\t\tdo not restore saved session" msgstr " --dont-restore\tei taasta salvestatud seanssi" #: ../src/main.c:434 msgid " --locale locale\tlocale to use" msgstr " --locale locale\t\tmillist locale't kasutada" #: ../src/main.c:436 msgid "" " --create-stdcmap\tcreate the standard colormap hint in PseudoColor visuals" msgstr "" #: ../src/main.c:437 msgid " --visual-id visualid\tvisual id of visual to use" msgstr " --visual-id visualid\tkasutatava visuaali id" #: ../src/main.c:438 msgid " --static\t\tdo not update or save configurations" msgstr " --static\t\thäälestusi ei salvestata ega uuendata" #: ../src/main.c:439 msgid " --no-polling\t\tdo not periodically check for configuration updates" msgstr " --no-polling\t\tkeelab ümberhäälestustuste regulaarse kontrolli" #: ../src/main.c:441 msgid " --synchronous\t\tturn on synchronous display mode" msgstr " --synchronous\t\tlülitab sisse sünkroonse ekraanirezhiimi" #: ../src/main.c:443 msgid " --version\t\tprint version and exit" msgstr " --version\t\tväljastab versiooninumbri ja lőpetab programmi töö" #: ../src/main.c:444 msgid " --help\t\t\tshow this message" msgstr " --help\t\t\tnäitab seda teadet" #: ../src/main.c:457 #, c-format msgid "" "could not find user GNUstep directory (%s).\n" "Make sure you have installed Window Maker correctly and run wmaker.inst" msgstr "" "ei őnnestu leida kasutaja GNUstep kataloogi (%s).\n" "Veendu, et Window Maker on korrektselt paigaldatud ja käivita wmaker.inst" #: ../src/main.c:462 #, c-format msgid "could not find user GNUstep directory (%s)." msgstr "ei őnnestu leida kasutaja GNUstep kataloogi (%s)" #: ../src/main.c:465 msgid "" "There was an error while creating GNUstep directory, please make sure you " "have installed Window Maker correctly and run wmaker.inst" msgstr "" "Viga GNUstep kataloogi loomise käigus. Palun veendu, et Window Maker on " "korrektselt paigaldatud ja käivita wmaker.inst" #: ../src/main.c:468 #, c-format msgid "%s directory created with default configuration." msgstr "%s kataloog loodi vaikimisi häälestusega" #: ../src/main.c:488 ../src/main.c:493 #, c-format msgid "%s:could not execute initialization script" msgstr "%s:ei őnnestu käivitada lähtestamisskripti" #: ../src/main.c:513 ../src/main.c:518 #, c-format msgid "%s:could not execute exit script" msgstr "%s:ei őnnestu käivitada lőpetamisskripti" #: ../src/main.c:634 ../src/main.c:642 ../src/main.c:650 ../src/main.c:670 #, c-format msgid "too few arguments for %s" msgstr "liiga vähe argumente %s jaoks" #: ../src/main.c:654 #, c-format msgid "bad value for visualid: \"%s\"" msgstr "vigane visualid väärtus: \"%s\"" #: ../src/main.c:678 #, c-format msgid "%s: invalid argument '%s'\n" msgstr "%s: vigane argument '%s'\n" #: ../src/main.c:679 #, c-format msgid "Try '%s --help' for more information\n" msgstr "Et saada rohkem informatsiooni, proovi '%s --help'\n" #: ../src/main.c:710 msgid "X server does not support locale" msgstr "X server ei toeta lokaliseerimist" #: ../src/main.c:714 msgid "cannot set locale modifiers" msgstr "" #: ../src/main.c:730 #, c-format msgid "could not open display \"%s\"" msgstr "ei őnnestu avada kuva \"%s\"" #: ../src/menu.c:1255 msgid "could not grab keyboard" msgstr "ei suuda klaviatuuriga ühendust saada" #: ../src/menu.c:2569 #, c-format msgid "bad value in menus state info:%s" msgstr "vigane väärtus menüüde olekuinfos:%s" #: ../src/misc.c:71 #, c-format msgid "could not define value for %s for cpp" msgstr "ei őnnestu defineerida %s väärtust cpp jaoks" #: ../src/misc.c:101 #, c-format msgid "could not get password entry for UID %i" msgstr "ei őnnestu leida UID %i paroolikirjet" #: ../src/misc.c:126 #, c-format msgid "your machine is misconfigured. HOSTNAME is set to %s" msgstr "Teie masin on häälestamata. HOSTNAME väärtus on %s" #: ../src/misc.c:132 #, c-format msgid "your machine is misconfigured. HOST is set to %s" msgstr "Teie masin on häälestamata. HOST väärtus on %s" #: ../src/misc.c:628 msgid "Program Arguments" msgstr "Programmi argumendid" #: ../src/misc.c:629 msgid "Enter command arguments:" msgstr "Sisesta käsu argumendid:" #: ../src/misc.c:722 msgid "unable to get dropped data from DND drop" msgstr "ei őnnestu vastu vőtta DND saadetud andmeid" #: ../src/misc.c:730 msgid "error getting dropped data from DND drop" msgstr "viga DND saadetud andmete vastuvőtmisel" #: ../src/misc.c:736 msgid "out of memory while getting data from DND drop" msgstr "mälu lőppes DND saadetud andmete vastuvőtmisel " #: ../src/misc.c:781 ../src/misc.c:921 #, c-format msgid "out of memory during expansion of \"%s\"" msgstr "mälu lőppes \"%s\" laiendamise käigus" #: ../src/misc.c:835 msgid "out of memory during expansion of \"%w\"" msgstr "mälu lőppes \"%w\" laiendamise käigus" #: ../src/misc.c:853 msgid "out of memory during expansion of \"%W\"" msgstr "mälu lőppes \"%W\" laiendamise käigus" #: ../src/misc.c:869 msgid "out of memory during expansion of \"%a\"" msgstr "mälu lőppes \"%a\" laiendamise käigus" #: ../src/misc.c:900 #, c-format msgid "out of memory during expansion of \"%d\"" msgstr "mälu lőppes \"%d\" laiendamise käigus" #: ../src/misc.c:914 msgid "selection not available" msgstr "valik ei ole kättesaadav" #: ../src/misc.c:987 ../src/misc.c:993 #, c-format msgid "bad window name value in %s state info" msgstr "vigane akna nimi %s olekuinfos" #: ../src/misc.c:1250 msgid "could not send message to background image helper" msgstr "ei őnnestu saata teadet taustapildiprogrammile" #: ../src/pixmap.c:235 #, c-format msgid "could not load mask bitmap file \"%s\". Won't use mask" msgstr "ei őnnestu laadida bitmap maskifaili \"%s\". Maski ei saa kasutada" #: ../src/proplist.c:151 #, c-format msgid "syntax error in %s, line %i:%s" msgstr "süntaksi viga failis %s, rida %i:%s" #: ../src/proplist.c:180 msgid "unterminated string" msgstr "lőpetamata string" #: ../src/proplist.c:247 msgid "unterminated array" msgstr "lőpetamata massiiv" #: ../src/proplist.c:256 msgid "missing , in array or unterminated array" msgstr "puudub, on massiivis vői on massiv lőpetamata" #: ../src/proplist.c:267 msgid "could not get array element" msgstr "ei saa massiivi elementi kätte" #: ../src/proplist.c:297 msgid "unterminated dictionary" msgstr "lőpetamata sőnastik" #: ../src/proplist.c:315 msgid "missing dictionary key" msgstr "puudub sőnastiku vőti" #: ../src/proplist.c:317 msgid "missing dictionary entry key or unterminated dictionary" msgstr "sőnastiku vőtmekirje puudub vői on sőnastik ilma lőputunnuseta" #: ../src/proplist.c:323 msgid "error parsing dictionary key" msgstr "viga sőnastiku vőtme sőelumisel" #: ../src/proplist.c:332 msgid "missing = in dictionary entry" msgstr "puudub = sőnastiku kirjes" #: ../src/proplist.c:351 msgid "missing ; in dictionary entry" msgstr "puudub ; sőnastiku kirjes" #: ../src/proplist.c:432 msgid "" "was expecting a string, dictionary, data or array. If it's a string, try " "enclosing it with \"." msgstr "" "on arvatavasti string, sőnastik, andmehulk vői massiiv. Kui see on string, " "proovi see sulgeda märgiga \"." #: ../src/proplist.c:434 msgid "Comments are not allowed inside WindowMaker owned domain files." msgstr "Window Makeri domeenifailides ei ole kommentaarid lubatud." #: ../src/proplist.c:453 #, c-format msgid "could not open domain file %s" msgstr "ei őnnestu avada domeenifaili %s" #: ../src/proplist.c:466 msgid "extra data after end of file" msgstr "ülearused andmed peale faili lőputunnust" #: ../src/resources.c:44 #, c-format msgid "could not parse color \"%s\"" msgstr "ei őnnestu sőeluda värvi \"%s\"" #: ../src/resources.c:48 #, c-format msgid "could not allocate color \"%s\"" msgstr "ei őnnestu eraldada värvi \"%s\"" #: ../src/rootmenu.c:183 ../src/rootmenu.c:185 msgid "Exit" msgstr "Lőpetan töö" #: ../src/rootmenu.c:184 msgid "Exit window manager?" msgstr "Kas lőpetan aknahalduri töö?" #: ../src/rootmenu.c:220 msgid "Close X session" msgstr "X seansi sulgemine" #: ../src/rootmenu.c:221 msgid "" "Close Window System session?\n" "Kill might close applications with unsaved data." msgstr "" "Kas sulgeme X seansi.\n" "On vőimalik, et suletakse ka mőned rakendused, mis sisaldavad salvestamata " "andmeid." #. #. entry = wMenuAddCallback(menu, _("Select Shortcut"), NULL, NULL); #. wMenuEntrySetCascade(menu, entry, makeMakeShortcutMenu(scr)); #. #: ../src/rootmenu.c:223 ../src/winmenu.c:505 msgid "Close" msgstr "Sulge" #: ../src/rootmenu.c:234 msgid "Kill X session" msgstr "X seansi kőrvaldamine" #: ../src/rootmenu.c:235 msgid "" "Kill Window System session?\n" "(all applications will be closed)" msgstr "" "Kas kőrvaldame X seansi?\n" "(kőik rakendused suletakse)" #: ../src/rootmenu.c:504 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\" for entry %s" msgstr "%s:vigane kiirklahvi kirjeldus \"%s\" kirjele %s" #: ../src/rootmenu.c:512 #, c-format msgid "%s:invalid key in shortcut \"%s\" for entry %s" msgstr "%s: vigane klahv kiirkorralduses \"%s\" kirjele %s" #: ../src/rootmenu.c:565 #, c-format msgid "%s: unmatched '\"' in menu file" msgstr "%s: ebamäärane '\"' menüüfailis" #: ../src/rootmenu.c:615 #, c-format msgid "%s: missing command" msgstr "%s: puuduv korraldus" #: ../src/rootmenu.c:647 #, c-format msgid "invalid OPEN_MENU specification: %s" msgstr "vigane OPEN_MENU kirjeldus: %s" #: ../src/rootmenu.c:695 #, c-format msgid "%s:could not stat menu" msgstr "" #: ../src/rootmenu.c:703 #, c-format msgid "%s:could not stat menu:%s" msgstr "" #: ../src/rootmenu.c:721 #, c-format msgid "too many parameters in OPEN_MENU: %s" msgstr "liiga palju parameetreid OPEN_MENU's: %s" #: ../src/rootmenu.c:765 msgid "" "There are more than one WORKSPACE_MENU commands in the applications menu. " "Only one is allowed." msgstr "" "Rakenduste menüüs on rohkem kui üks WORKSPACE_MENU korraldus. Lubatud on " "ainult üks." #: ../src/rootmenu.c:799 msgid "" "There are more than one WINDOWS_MENU commands in the applications menu. Only " "one is allowed." msgstr "" "Rakenduste menüüs on rohkem kui üks WINDOWS_MENU korraldus. Lubatud on " "ainult üks." #: ../src/rootmenu.c:804 msgid "Window List" msgstr "Akende nimekiri" #: ../src/rootmenu.c:833 ../src/rootmenu.c:851 ../src/rootmenu.c:861 #, c-format msgid "%s:missing parameter for menu command \"%s\"" msgstr "%s:puuduvad parameetrid menüükorraldusele \"%s\"" #: ../src/rootmenu.c:929 #, c-format msgid "%s:unknown command \"%s\" in menu config." msgstr "%s:tundmatu käsk menüü seadistuses: \"%s\"." #: ../src/rootmenu.c:937 #, c-format msgid "%s:can't add shortcut for entry \"%s\"" msgstr "%s:ei őnnestu lisada kiirkorraldust kirjele \"%s\"" #: ../src/rootmenu.c:1074 #, c-format msgid "%s:maximal line size exceeded in menu config: %s" msgstr "%s:maksimaalne rea pikkus ületatud menüü seadistuses: %s" #: ../src/rootmenu.c:1096 ../src/rootmenu.c:1189 ../src/rootmenu.c:1291 #, c-format msgid "%s:missing command in menu config: %s" msgstr "%s:puudub korraldus menüü seadistuses: %s" #: ../src/rootmenu.c:1126 #, c-format msgid "%s:syntax error in menu file:END declaration missing" msgstr "%s:süntaksi viga menüüfaili: puudub lőputunnus END" #: ../src/rootmenu.c:1155 ../src/rootmenu.c:1255 msgid "could not make arguments for menu file preprocessor" msgstr "ei suuda luua argumente menüüfaili eeltöötlejale" #: ../src/rootmenu.c:1162 ../src/rootmenu.c:1263 #, c-format msgid "%s:could not open/preprocess menu file" msgstr "%s:ei suuda avada/eeltöödelda menüüfaili" #: ../src/rootmenu.c:1174 ../src/rootmenu.c:1276 #, c-format msgid "%s:could not open menu file" msgstr "%s:menüüfaili avamine ebaőnnestus" #: ../src/rootmenu.c:1201 #, c-format msgid "%s:invalid menu file. MENU command is missing" msgstr "%s:vigane menüüfail. Puudub MENU käsk" #: ../src/rootmenu.c:1210 msgid "error reading preprocessed menu data" msgstr "viga eelnevalt töödeldud menüüandmete lugemisel" #: ../src/rootmenu.c:1303 #, c-format msgid "%s:no title given for the root menu" msgstr "%s:juurmenüü pealkiri on puudu" #: ../src/rootmenu.c:1394 ../src/rootmenu.c:1467 ../src/rootmenu.c:1508 #, c-format msgid "out of memory while constructing directory menu %s" msgstr "mälu lőppes menüü %s loomise käigus" #: ../src/rootmenu.c:1404 #, c-format msgid "%s:could not stat file \"%s\" in menu directory" msgstr "" #: ../src/rootmenu.c:1562 msgid "Commands" msgstr "Korraldused" #: ../src/rootmenu.c:1565 msgid "Restart" msgstr "Taaskäivitamine" #: ../src/rootmenu.c:1566 msgid "Exit..." msgstr "Lőpetamine..." #: ../src/rootmenu.c:1611 #, c-format msgid "could not find menu file \"%s\" referenced in WMRootMenu" msgstr "ei őnnestu leida menüüfaili \"%s\", millele viitab WMRootMenu" #: ../src/rootmenu.c:1618 #, c-format msgid "could not access menu \"%s\" referenced in WMRootMenu" msgstr "ei őnnestu ligi pääseda menüüle \"%s\", millele viitab WMRootMenu" #: ../src/rootmenu.c:1629 #, c-format msgid "" "using default menu file \"%s\" as the menu referenced in WMRootMenu could " "not be found " msgstr "" "ei őnnestu leida vaikimisi kasutatavat menüüfaili \"%s\", millele viitab " "WMRootMenu" #: ../src/rootmenu.c:1652 ../src/rootmenu.c:1728 #, c-format msgid "%s:format error in root menu configuration \"%s\"" msgstr "%s:vormingu viga juurmenüü häälestuses \"%s\"" #: ../src/rootmenu.c:1816 msgid "" "The applications menu could not be loaded. Look at the console output for a " "detailed description of the errors." msgstr "" "Ei őnnestu lugeda rakenduste menüüd. Pőhjalikuma vigade kirjelduse " "lugemiseks vaata konsooliväljundit." #: ../src/screen.c:740 #, c-format msgid "could not initialize graphics library context: %s" msgstr "ei őnnesta lähtestada graafikateegi konteksti: %s" #: ../src/screen.c:771 msgid "could not do initialization of WINGs widget set" msgstr "" #: ../src/screen.c:1135 #, c-format msgid "could not save session state in %s" msgstr "ei őnnestu salvestada seansi olekut %s" #: ../src/session.c:183 ../src/wdefaults.c:588 ../src/winspector.c:453 #, c-format msgid "can't convert \"%s\" to boolean" msgstr "ei őnnestu \"%s\" teisendamine boolean väärtuseks" #: ../src/session.c:1021 msgid "out of memory while saving session state" msgstr "mälu lőppes seansi oleku salvestamise käigus" #: ../src/session.c:1112 msgid "end of memory while saving session state" msgstr "mälu lőpp seansi oleku salvestamise käigus" #. 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:1250 msgid "connection to the session manager was lost" msgstr "ühendus seansihalduriga on katkenud" #: ../src/stacking.c:73 msgid "could not get window list!!" msgstr "ei őnnestu saada akende nimekirja!!" #: ../src/startup.c:202 #, c-format msgid "internal X error: %s\n" msgstr "X'i sisemine viga: %s\n" #: ../src/startup.c:260 #, c-format msgid "got signal %i (%s) - restarting\n" msgstr "sain signaali %i (%s) - stardin uuesti\n" #: ../src/startup.c:262 #, c-format msgid "got signal %i - restarting\n" msgstr "sain signaali %i - stardin uuesti\n" #: ../src/startup.c:272 #, c-format msgid "got signal %i (%s) - rereading defaults\n" msgstr "sain signaali %i (%s) - loen vaikeväärtused uuesti\n" #: ../src/startup.c:274 #, c-format msgid "got signal %i - rereading defaults\n" msgstr "sain signaali %i - loen vaikeväärtused uuesti\n" #: ../src/startup.c:284 #, c-format msgid "got signal %i (%s) - exiting...\n" msgstr "sain signaali %i (%s) - lőpetan...\n" #: ../src/startup.c:286 #, c-format msgid "got signal %i - exiting...\n" msgstr "sain signaali %i - lőpetan...\n" #: ../src/startup.c:329 #, c-format msgid "got signal %i (%s)\n" msgstr "sain signaali %i (%s)\n" #: ../src/startup.c:331 #, c-format msgid "got signal %i\n" msgstr "sain signaali %i\n" #: ../src/startup.c:342 msgid "" "crashed while trying to do some post-crash cleanup. Aborting immediatelly." msgstr "" "järjekordne avarii ajal, mil tehti avariijärgseid puhastusi. Katkestan " "viivitamatult." #. we try to restart Window Maker #: ../src/startup.c:407 msgid "trying to restart Window Maker..." msgstr "proovin taaskäivitada Window Maker'it..." #: ../src/startup.c:412 msgid "trying to start alternate window manager..." msgstr "proovin käivitada alternatiivset aknahaldurit" #: ../src/startup.c:417 msgid "failed to start alternate window manager. Aborting." msgstr "ei őnnestu käivitada alternatiivset aknahaldurit. Annan alla." #: ../src/startup.c:419 msgid "" "a fatal error has occured, probably due to a bug. Please fill the included " "BUGFORM and report it." msgstr "" "aset on leidnud fataalne viga, arvatavasti programmi viga. Palun täida " "programmiga kaasa tulnud vearaport (BUGFORM) ja saada see programmi " "autoritele." #: ../src/startup.c:899 #, c-format msgid "icon size is configured to %i, but it's too small. Using 16, instead\n" msgstr "" "ikooni suuruseks on määratud %i, kuid see on liiga väike. Kasutan suurust " "16\n" #: ../src/startup.c:927 msgid "XKB is not supported. KbdModeLock is automatically disabled." msgstr "Puudub XKB tugi. KbdModeLock on automaatselt keelatud." #: ../src/startup.c:946 msgid "it seems that there is already a window manager running" msgstr "paistab, et mingi aknahaldur juba töötab" #: ../src/startup.c:952 #, c-format msgid "could not manage screen %i" msgstr "ei őnnestu hallata ekraani %i" #: ../src/startup.c:1020 msgid "could not manage any screen" msgstr "ei őnnestu hallata ühtegi ekraani" #: ../src/switchmenu.c:114 msgid "Windows" msgstr "Aknad" #: ../src/texture.c:329 ../src/texture.c:371 #, c-format msgid "image file \"%s\" used as texture could not be found." msgstr "ei őnnestu leida tekstuuriks kasutatavat pildifaili \"%s\"." #: ../src/texture.c:335 ../src/texture.c:377 #, c-format msgid "could not load texture pixmap \"%s\":%s" msgstr "ei őnnestu laadida tekstuuri pixmap faili \"%s\":%s" #: ../src/texture.c:437 #, c-format msgid "library \"%s\" cound not be opened." msgstr "ei őnnestu avada teeki \"%s\"" #: ../src/texture.c:446 #, c-format msgid "function \"%s\" not found in library \"%s\"" msgstr "ei leia funktsiooni \"%s\" teegist \"%s\"" #: ../src/texture.c:453 msgid "function textures not supported on this system, sorry." msgstr "tekstuurifunktsioon ei ole selles süsteemis toetatud." #: ../src/texture.c:598 msgid "could not allocate image buffer" msgstr "ei őnnestu eraldada pildi puhvrit" #: ../src/wdefaults.c:434 #, c-format msgid "could not find icon file \"%s\"" msgstr "ei őnnestu leida ikoonifaili \"%s\"" #: ../src/window.c:2825 ../src/window.c:2960 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 "" "klahvid NumLock, ScrollLock (vői sarnased) näivad olevat sisse lülitatud.\n" "Lülita need välja vői muidu ei tööta mőned hiire toimingud ja klaviatuuri\n" "kiirkorraldused." #: ../src/winmenu.c:129 msgid "" "This will kill the application.\n" "Any unsaved changes will be lost.\n" "Please confirm." msgstr "" "Programm suletakse jőuga.\n" "Kőik salvestamata andmed lähevad kaotsi.\n" "Kas soovite seda teha?" #: ../src/winmenu.c:271 ../src/winmenu.c:280 msgid "Set Shortcut" msgstr "Määra kiirkorraldus" #: ../src/winmenu.c:358 ../src/winmenu.c:403 msgid "could not create submenu for window menu" msgstr "ei őnnestu luua aknamenüü alammenüüd" #: ../src/winmenu.c:407 msgid "Keep on top" msgstr "Hoia esiplaanil" #: ../src/winmenu.c:412 msgid "Keep at bottom" msgstr "Hoia tagaplaanil" #. #. * 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:440 ../src/winmenu.c:575 msgid "Maximize" msgstr "Maksimeeri" #: ../src/winmenu.c:448 ../src/winmenu.c:561 msgid "Miniaturize" msgstr "Minimeeri" #: ../src/winmenu.c:457 ../src/winmenu.c:592 msgid "Shade" msgstr "Keri kokku" #: ../src/winmenu.c:473 msgid "Resize/Move" msgstr "Muuda suurust/liiguta" #: ../src/winmenu.c:481 msgid "Select" msgstr "Vali" #: ../src/winmenu.c:489 msgid "Move To" msgstr "Teisalda" #: ../src/winmenu.c:494 msgid "Attributes..." msgstr "Rekvisiidid..." #: ../src/winmenu.c:496 msgid "Options" msgstr "Valikud" #: ../src/winmenu.c:556 msgid "Deminiaturize" msgstr "Ava aken" #: ../src/winmenu.c:570 msgid "Unmaximize" msgstr "Taasta suurus" #: ../src/winmenu.c:587 msgid "Unshade" msgstr "Keri lahti" #: ../src/winspector.c:386 #, c-format msgid "Could not find icon \"%s\" specified for this window" msgstr "Ei őnnestu leida selle akna jaoks määratud ikooni \"%s\"" #: ../src/winspector.c:403 #, c-format msgid "Could not open specified icon \"%s\":%s" msgstr "Ei őnnestu avada kirjeldatud ikooni \"%s\":%s" #: ../src/winspector.c:1141 #, c-format msgid "Inspecting %s.%s" msgstr "Vaatlen %s.%s" #: ../src/winspector.c:1167 msgid "Click in the window you wish to inspect." msgstr "Kliki aknale, mida soovid vaadelda." #: ../src/winspector.c:1206 msgid "" "The configuration will apply to all\n" "windows that have their WM_CLASS\n" "property set to the above selected\n" "name, when saved." msgstr "" "Häälestuse salvestamisel laieneb see\n" "kőigile akendele, mille WM_CLASS\n" "omadus on üks ülalloetletud nimedest." #: ../src/winspector.c:1235 msgid "Save" msgstr "Salvesta" #: ../src/winspector.c:1243 msgid "Apply" msgstr "Rakenda" #: ../src/winspector.c:1249 msgid "Reload" msgstr "Taasta" #: ../src/winspector.c:1258 ../src/winspector.c:1268 msgid "Window Specification" msgstr "Akna kirjeldus" #: ../src/winspector.c:1259 msgid "Window Attributes" msgstr "Akna rekvisiidid" #: ../src/winspector.c:1260 msgid "Advanced Options" msgstr "Laiendatud valikud" #: ../src/winspector.c:1261 msgid "Icon and Initial Workspace" msgstr "Ikoon ja töölaud" #: ../src/winspector.c:1262 msgid "Application Specific" msgstr "Rakendusele omane" #: ../src/winspector.c:1276 msgid "Defaults for all windows" msgstr "Vaikimisi kőigile akendele" #: ../src/winspector.c:1330 msgid "Select window" msgstr "Vali aken" #: ../src/winspector.c:1344 msgid "Attributes" msgstr "Rekvisiidid" #: ../src/winspector.c:1355 msgid "Disable titlebar" msgstr "Keela tiitliriba" #: ../src/winspector.c:1357 msgid "" "Remove the titlebar of this window.\n" "To access the window commands menu of a window\n" "without it's titlebar, press Control+Esc (or the\n" "equivalent shortcut, if you changed the default\n" "settings)." msgstr "" "Keelab akna tiitelriba. Ilma tiitelribata\n" "akna parameetreid saab muuta, kui vajutada\n" "Control+Esc (vői kui kontrollklahve muudetud,\n" "siis sellele vastavat klahvikombinatsiooni)." #: ../src/winspector.c:1364 msgid "Disable resizebar" msgstr "Keela suuruse muutmise riba" #: ../src/winspector.c:1366 msgid "Remove the resizebar of this window." msgstr "Keelab riba, mille abil saab muuta akna suurust." #: ../src/winspector.c:1369 msgid "Disable close button" msgstr "Keela sulgemisnupp" #: ../src/winspector.c:1371 msgid "Remove the `close window' button of this window." msgstr "Eemaldab sulgemisnupu akna tiitelribalt." #: ../src/winspector.c:1374 msgid "Disable miniaturize button" msgstr "Keela minimeerimisnupp" #: ../src/winspector.c:1376 msgid "Remove the `miniaturize window' button of the window." msgstr "Eemaldab minimeerimisnupu akna tiitliribalt." #: ../src/winspector.c:1379 msgid "Disable border" msgstr "Keela raam" #: ../src/winspector.c:1381 msgid "Remove the 1 pixel black border around the window." msgstr "Keelab akna ümbert ühepikslise musta raami." #: ../src/winspector.c:1384 msgid "Keep on top (floating)" msgstr "Hoia esiplaanil" #: ../src/winspector.c:1386 msgid "" "Keep the window over other windows, not allowing\n" "them to cover it." msgstr "Hoiab akent teiste akende suhtes esiplaanil." #: ../src/winspector.c:1390 msgid "Keep at bottom (sunken)" msgstr "Hoia tagaplaanil" #: ../src/winspector.c:1392 msgid "Keep the window under all other windows." msgstr "Hoia akent kőigi teiste akende taga." #: ../src/winspector.c:1397 msgid "Make window present in all workspaces." msgstr "Näita akent kőigil töölaudadel." #: ../src/winspector.c:1400 msgid "Start miniaturized" msgstr "Käivita minimeerituna" #: ../src/winspector.c:1402 msgid "" "Make the window be automatically miniaturized when it's\n" "first shown." msgstr "Programmi käivitamise hetkel minimeeri aken." #: ../src/winspector.c:1406 msgid "Start maximized" msgstr "Käivita maksimeerituna" #: ../src/winspector.c:1408 msgid "" "Make the window be automatically maximized when it's\n" "first shown." msgstr "Programmi käivitamise hetkel maksimeeri aken." #: ../src/winspector.c:1412 msgid "Full screen maximization" msgstr "Maksimeeri üle kogu ekraani" #: ../src/winspector.c:1414 msgid "" "Make the window use the whole screen space when it's\n" "maximized. The titlebar and resizebar will be moved\n" "to outside the screen." msgstr "" "Lubab akent maksimeerida kogu ekraani ulatuses.\n" "Kui lubatud, siis akna maksimeerimise korral\n" "jäävad akna tiitelriba ja suuruse muutmise riba\n" "väljapoole ekraani ulatust." #: ../src/winspector.c:1431 msgid "Advanced" msgstr "Laiendatud vőimalused" #: ../src/winspector.c:1448 msgid "Do not bind keyboard shortcuts" msgstr "Keela reageerimast kiirklahvidele" #: ../src/winspector.c:1450 msgid "" "Do not bind keyboard shortcuts from Window Maker\n" "when this window is focused. This will allow the\n" "window to receive all key combinations regardless\n" "of your shortcut configuration." msgstr "" "Keelab fookuses oleval aknal reageerimast\n" "Window Maker'i kiirklahvidele. See vőimaldab\n" "aknal vastu vőtta kőiki klaviatuurilt tulevaid\n" "koode." #: ../src/winspector.c:1456 msgid "Do not bind mouse clicks" msgstr "Keela reageerimast hiirevajutustele" #: ../src/winspector.c:1458 msgid "" "Do not bind mouse actions, such as `Alt'+drag\n" "in the window (when alt is the modifier you haveconfigured)." msgstr "" "Keelab aknal reageerimast hiiretoimingutele.\n" "Näiteks `Alt'+lohistamine (kui alt on määratud\n" "muuteklahviks)." #: ../src/winspector.c:1463 msgid "Do not show in the window list" msgstr "Keela näitamine akende nimekirjas" #: ../src/winspector.c:1465 msgid "Do not list the window in the window list menu." msgstr "Keelab akna nime näitamise akende nimekirjas." #: ../src/winspector.c:1468 msgid "Do not let it take focus" msgstr "Keela akna fokuseerimine" #: ../src/winspector.c:1470 msgid "" "Do not let the window take keyboard focus when you\n" "click on it." msgstr "" "Keelab akna fokuseerimise. Aknale ei\n" "mőju klaviatuurilt saabuvad vajutused." #: ../src/winspector.c:1474 msgid "Keep inside screen" msgstr "Hoia ekraani sees" #: ../src/winspector.c:1476 msgid "" "Do not allow the window to move itself completely\n" "outside the screen. For bug compatibility.\n" msgstr "" "Keelab akna liigutamise\n" "väljapoole ekraani pinda.\n" #: ../src/winspector.c:1480 msgid "Ignore 'Hide Others'" msgstr "Eira käsku 'Peida teised aknad'" #: ../src/winspector.c:1482 msgid "" "Do not hide the window when issuing the\n" "`HideOthers' command." msgstr "" "Keelab reageerimise käsule\n" "\"Peida teised aknad\"." #: ../src/winspector.c:1486 msgid "Ignore 'Save Session'" msgstr "Keela seansi salvestamine" #: ../src/winspector.c:1488 msgid "" "Do not save the associated application in the\n" "session's state, so that it won't be restarted\n" "together with other applications when Window Maker\n" "starts." msgstr "" "Keelab akna andmete salvestamise seansi\n" "andmetesse. Rakendust ei käivitata koos\n" "seansi koosseisu kuuluvate akendega." #: ../src/winspector.c:1494 msgid "Emulate application icon" msgstr "Emuleeri rakenduse ikooni" #: ../src/winspector.c:1496 msgid "" "Make this window act as an application that provides\n" "enough information to Window Maker for a dockable\n" "application icon to be created." msgstr "Loob aknale dokitava rakenduse ikooni." #: ../src/winspector.c:1502 msgid "Disable language button" msgstr "Keela keelenupp" #: ../src/winspector.c:1504 msgid "Remove the `toggle language' button of the window." msgstr "Eemaldab keele sisse/väljalülitamise nupu akna tiitliribalt." #: ../src/winspector.c:1521 msgid "Miniwindow Image" msgstr "Pisiakna pilt" #: ../src/winspector.c:1548 msgid "Icon filename:" msgstr "Ikoonifaili nimi:" #: ../src/winspector.c:1561 msgid "Ignore client supplied icon" msgstr "Eira kliendi enda ikooni" #: ../src/winspector.c:1568 msgid "Initial Workspace" msgstr "Töölaud, millel käivitatakse" #: ../src/winspector.c:1570 msgid "The workspace to place the window when it'sfirst shown." msgstr "Töölaua nimi, mille peal akent esimest korda näidatakse." #: ../src/winspector.c:1576 msgid "Nowhere in particular" msgstr "Ei oma tähtsust" #: ../src/winspector.c:1594 msgid "Application Attributes" msgstr "Rakenduse rekvisiidid" #: ../src/winspector.c:1605 msgid "Start hidden" msgstr "Käivita peidetuna" #: ../src/winspector.c:1607 msgid "Automatically hide application when it's started." msgstr "Peidab akna programmi käivitamise hetkel." #: ../src/winspector.c:1610 msgid "No application icon" msgstr "Keela rakenduse ikoon" #: ../src/winspector.c:1612 msgid "" "Disable the application icon for the application.\n" "Note that you won't be able to dock it anymore,\n" "and any icons that are already docked will stop\n" "working correctly." msgstr "" "Keelab rakenduse ikooni. Keelamise korral ei ole\n" "vőimalik rakendust dokkida ja kőik selle rakenduse\n" "juba dokitud ikoonid ei toimi enam korrektselt." #: ../src/winspector.c:1618 msgid "Collapse application icons" msgstr "Ahenda rakenduse ikoonid" #: ../src/winspector.c:1620 msgid "" "Collapse application icons from other instances\n" "of this application into one.\n" msgstr "" "Ahendab rakenduse teiste\n" "ekseplaride ikoonid üheks.\n" #: ../src/workspace.c:110 ../src/workspace.c:111 ../src/workspace.c:897 #, c-format msgid "Workspace %i" msgstr "Töölaud %i" #: ../src/workspace.c:954 msgid "Workspaces" msgstr "Töölauad" #: ../src/workspace.c:956 msgid "could not create Workspace menu" msgstr "ei őnnestu luua töölaua menüüd" #: ../src/workspace.c:963 msgid "New" msgstr "Uus" #: ../src/workspace.c:964 msgid "Destroy Last" msgstr "Eemalda viimane" ������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/po/Makefile.am��������������������������������������������������������0000644�0001750�0001750�00000005332�13431646201�015430� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������DOMAIN = WPrefs CATALOGS = @WPREFSMOFILES@ CLEANFILES = $(DOMAIN).pot $(CATALOGS) EXTRA_DIST = bg.po ca.po cs.po de.po es.po et.po fi.po fr.po fy.po hr.po hu.po \ it.po ja.po ko.po nl.po pt.po ru.po sk.po uk.po zh_CN.po zh_TW.po POTFILES = \ $(top_srcdir)/WPrefs.app/Appearance.c \ $(top_srcdir)/WPrefs.app/Configurations.c \ $(top_srcdir)/WPrefs.app/Docks.c \ $(top_srcdir)/WPrefs.app/Expert.c \ $(top_srcdir)/WPrefs.app/Focus.c \ $(top_srcdir)/WPrefs.app/FontSimple.c \ $(top_srcdir)/WPrefs.app/Icons.c \ $(top_srcdir)/WPrefs.app/KeyboardShortcuts.c \ $(top_srcdir)/WPrefs.app/Menu.c \ $(top_srcdir)/WPrefs.app/MenuPreferences.c \ $(top_srcdir)/WPrefs.app/MouseSettings.c \ $(top_srcdir)/WPrefs.app/Paths.c \ $(top_srcdir)/WPrefs.app/Preferences.c \ $(top_srcdir)/WPrefs.app/TexturePanel.c \ $(top_srcdir)/WPrefs.app/WPrefs.c \ $(top_srcdir)/WPrefs.app/WindowHandling.c \ $(top_srcdir)/WPrefs.app/Workspace.c \ $(top_srcdir)/WPrefs.app/double.c \ $(top_srcdir)/WPrefs.app/editmenu.c \ $(top_srcdir)/WPrefs.app/main.c \ $(top_srcdir)/WPrefs.app/xmodifier.c # not_yet_fully_implemented # $(top_srcdir)/WPrefs.app/KeyboardSettings.c \ # $(top_srcdir)/WPrefs.app/Themes.c \ # SUFFIXES = .po .mo .po.mo: $(AM_V_GEN)$(MSGFMT) -c -o $@ $< all-local: $(CATALOGS) .PHONY: update-lang if HAVE_XGETTEXT update-lang: $(DOMAIN).pot $(AM_V_GEN)$(top_srcdir)/script/generate-po-from-template.sh \ -n "$(PACKAGE_NAME)" -v "$(PACKAGE_VERSION)" -b "$(PACKAGE_BUGREPORT)" \ -t "$(DOMAIN).pot" "$(srcdir)/$(PO).po" $(DOMAIN).pot: $(POTFILES) $(AM_V_GEN)$(XGETTEXT) --default-domain=$(DOMAIN) \ --add-comments --keyword=_ --keyword=N_ $(POTFILES) @if cmp -s $(DOMAIN).po $(DOMAIN).pot; then \ rm -f $(DOMAIN).po; \ else \ mv -f $(DOMAIN).po $(DOMAIN).pot; \ fi endif install-data-local: $(CATALOGS) $(mkinstalldirs) $(DESTDIR)$(localedir) for n in $(CATALOGS) __DuMmY ; do \ if test "$$n" -a "$$n" != "__DuMmY" ; then \ l=`basename $$n .mo`; \ $(mkinstalldirs) $(DESTDIR)$(localedir)/$$l/LC_MESSAGES; \ $(INSTALL_DATA) -m 644 $$n $(DESTDIR)$(localedir)/$$l/LC_MESSAGES/$(DOMAIN).mo; \ fi; \ done uninstall-local: for n in $(CATALOGS) ; do \ l=`basename $$n .mo`; \ rm -f $(DESTDIR)$(localedir)/$$l/LC_MESSAGES/$(DOMAIN).mo; \ done # Create a 'silent rule' for our make check the same way automake does AM_V_CHKTRANS = $(am__v_CHKTRANS_$(V)) am__v_CHKTRANS_ = $(am__v_CHKTRANS_$(AM_DEFAULT_VERBOSITY)) am__v_CHKTRANS_0 = @echo " CHK translations" ; am__v_CHKTRANS_1 = # 'make check' will make sure the tranlation sources are in line with the compiled source check-local: $(AM_V_CHKTRANS)$(top_srcdir)/script/check-translation-sources.sh \ "$(srcdir)" -s "$(top_srcdir)/WPrefs.app/Makefile.am" ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/po/de.po��������������������������������������������������������������0000644�0001750�0001750�00000157010�13431646201�014325� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# translation of wprefsneu.po to # # German Message Catalog for WPrefs.app # # Initial translation # Gudio Scholz <guido.scholz@bayernline.de> # Bernd Eggert <Bernd.Eggert@t-online.de> # # Fully retranslated and updated for newer versions # Torsten Marek <shlomme@gmx.net> # # Carlos R. Mafra <crmafra@gmail.com>, 2010. msgid "" msgstr "" "Project-Id-Version: wprefsneu\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-02-02 10:34+0100\n" "PO-Revision-Date: 2010-02-02 10:49+0100\n" "Last-Translator: Carlos R. Mafra <crmafra@gmail.com>\n" "Language-Team: German <>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 1.0\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #: ../../WPrefs.app/Appearance.c:1051 msgid "Select File" msgstr "Datei auswählen" #: ../../WPrefs.app/Appearance.c:1413 msgid "Focused Window" msgstr "Aktives Fenster" #: ../../WPrefs.app/Appearance.c:1418 msgid "Unfocused Window" msgstr "Inaktives Fenster" #: ../../WPrefs.app/Appearance.c:1423 msgid "Owner of Focused Window" msgstr "Eigentümer des aktiven Fensters" #: ../../WPrefs.app/Appearance.c:1427 ../../WPrefs.app/Appearance.c:1725 #: ../../WPrefs.app/FontSimple.c:101 msgid "Menu Title" msgstr "Menütitel" #: ../../WPrefs.app/Appearance.c:1431 ../../WPrefs.app/Appearance.c:1433 msgid "Normal Item" msgstr "Normaler Eintrag" #: ../../WPrefs.app/Appearance.c:1438 msgid "Disabled Item" msgstr "Ausgeschalteter Eintrag" #: ../../WPrefs.app/Appearance.c:1447 msgid "Highlighted" msgstr "Ausgewählt" #: ../../WPrefs.app/Appearance.c:1625 msgid "Texture" msgstr "Textur" #: ../../WPrefs.app/Appearance.c:1632 msgid "Titlebar of Focused Window" msgstr "Titelleiste des aktiven Fensters" #: ../../WPrefs.app/Appearance.c:1633 msgid "Titlebar of Unfocused Windows" msgstr "Titelleiste des inaktiven Fensters" #: ../../WPrefs.app/Appearance.c:1634 msgid "Titlebar of Focused Window's Owner" msgstr "Titelleiste des Eigentümers des aktiven Fensters" #: ../../WPrefs.app/Appearance.c:1635 msgid "Window Resizebar" msgstr "Größenänderungsleiste" #: ../../WPrefs.app/Appearance.c:1636 msgid "Titlebar of Menus" msgstr "Menü-Titelzeile" #: ../../WPrefs.app/Appearance.c:1637 msgid "Menu Items" msgstr "Menüeinträge" #: ../../WPrefs.app/Appearance.c:1638 msgid "Icon Background" msgstr "Symbolhintergrund" #: ../../WPrefs.app/Appearance.c:1653 msgid "" "Double click in the texture you want to use\n" "for the selected item." msgstr "" "Doppelklicken Sie auf die Textur, die sie für das\n" "ausgewählte Element verwenden wollen." #: ../../WPrefs.app/Appearance.c:1665 msgid "New" msgstr "Neu" #: ../../WPrefs.app/Appearance.c:1669 msgid "Create a new texture." msgstr "Neue Textur erstellen." #: ../../WPrefs.app/Appearance.c:1676 msgid "Extract..." msgstr "Holen" #: ../../WPrefs.app/Appearance.c:1680 msgid "Extract texture(s) from a theme or a style file." msgstr "Textur(en) aus einer Themen- oder Stildatei holen." #: ../../WPrefs.app/Appearance.c:1689 msgid "Edit" msgstr "Ändern" #: ../../WPrefs.app/Appearance.c:1692 msgid "Edit the highlighted texture." msgstr "Ausgewählte Textur bearbeiten." #: ../../WPrefs.app/Appearance.c:1699 ../../WPrefs.app/TexturePanel.c:1202 msgid "Delete" msgstr "Löschen" #: ../../WPrefs.app/Appearance.c:1703 msgid "Delete the highlighted texture." msgstr "Ausgewählte Textur löschen." #: ../../WPrefs.app/Appearance.c:1715 msgid "Color" msgstr "Farbe" #: ../../WPrefs.app/Appearance.c:1722 msgid "Focused Window Title" msgstr "Titel des aktiven Fensters" #: ../../WPrefs.app/Appearance.c:1723 msgid "Unfocused Window Title" msgstr "Titel eines inaktiven Fensters" #: ../../WPrefs.app/Appearance.c:1724 msgid "Owner of Focused Window Title" msgstr "Titel des Eigentümers des aktiven Fensters" #: ../../WPrefs.app/Appearance.c:1726 msgid "Menu Item Text" msgstr "Text eines Menüeintrages" #: ../../WPrefs.app/Appearance.c:1727 msgid "Disabled Menu Item Text" msgstr "Text eines ausgeschalteten Menüeintrages" #: ../../WPrefs.app/Appearance.c:1728 msgid "Menu Highlight Color" msgstr "Menü-Auswahlfarbe" #: ../../WPrefs.app/Appearance.c:1729 msgid "Highlighted Menu Text Color" msgstr "Text des ausgewählten Menüeintrages" #: ../../WPrefs.app/Appearance.c:1766 msgid "Background" msgstr "Hintergrund" #: ../../WPrefs.app/Appearance.c:1778 ../../WPrefs.app/TexturePanel.c:1377 msgid "Browse..." msgstr "Suchen..." #: ../../WPrefs.app/Appearance.c:1788 msgid "Options" msgstr "Optionen" #: ../../WPrefs.app/Appearance.c:1795 msgid "Menu Style" msgstr "Menü-Stil" #: ../../WPrefs.app/Appearance.c:1823 ../../WPrefs.app/Configurations.c:209 #: ../../WPrefs.app/Configurations.c:221 ../../WPrefs.app/Focus.c:264 #: ../../WPrefs.app/Focus.c:275 ../../WPrefs.app/MenuPreferences.c:124 #: ../../WPrefs.app/MenuPreferences.c:135 #: ../../WPrefs.app/MenuPreferences.c:163 #: ../../WPrefs.app/MenuPreferences.c:178 ../../WPrefs.app/MouseSettings.c:514 #: ../../WPrefs.app/MouseSettings.c:525 ../../WPrefs.app/WPrefs.c:482 #: ../../WPrefs.app/WPrefs.c:507 #, c-format msgid "could not load icon file %s" msgstr "Symboldatei %s konnte nicht geöffnet werden" #: ../../WPrefs.app/Appearance.c:1836 msgid "Title Alignment" msgstr "Titel-Ausrichtung" #: ../../WPrefs.app/Appearance.c:1843 msgid "Left" msgstr "Links" #: ../../WPrefs.app/Appearance.c:1846 ../../WPrefs.app/TexturePanel.c:1391 #: ../../WPrefs.app/Workspace.c:246 msgid "Center" msgstr "Mittig" #: ../../WPrefs.app/Appearance.c:1849 msgid "Right" msgstr "Rechts" #: ../../WPrefs.app/Appearance.c:2054 msgid "Appearance Preferences" msgstr "Einstellungen zum Aussehen" #: ../../WPrefs.app/Appearance.c:2056 msgid "" "Background texture configuration for windows,\n" "menus and icons." msgstr "" "Konfiguration der Hintergrundtexturen für Fenster,\n" "Menüs und Symbole." #: ../../WPrefs.app/Appearance.c:2092 msgid "Extract Texture" msgstr "Textur extrahieren" #: ../../WPrefs.app/Appearance.c:2112 msgid "Textures" msgstr "Texturen" #: ../../WPrefs.app/Appearance.c:2121 ../../WPrefs.app/WPrefs.c:266 msgid "Close" msgstr "Schließen" #: ../../WPrefs.app/Appearance.c:2126 msgid "Extract" msgstr "Holen" #: ../../WPrefs.app/Configurations.c:124 ../../WPrefs.app/Configurations.c:130 #: ../../WPrefs.app/MouseSettings.c:448 ../../WPrefs.app/WindowHandling.c:343 #: ../../WPrefs.app/WindowHandling.c:355 ../../WPrefs.app/Workspace.c:83 #: ../../WPrefs.app/Workspace.c:94 #, c-format msgid "could not load icon %s" msgstr "Symboldatei %s konnte nicht geöffnet werden" #: ../../WPrefs.app/Configurations.c:138 ../../WPrefs.app/Workspace.c:102 #, c-format msgid "could not process icon %s: %s" msgstr "Symboldatei %s konnte nicht verarbeitet werden: %s" #: ../../WPrefs.app/Configurations.c:160 ../../WPrefs.app/Workspace.c:151 #, c-format msgid "could not load image file %s" msgstr "Bilddatei %s konnte nicht geladen werden" #: ../../WPrefs.app/Configurations.c:171 msgid "Icon Slide Speed" msgstr "Symbol-Bewegungsgeschwindigkeit" #: ../../WPrefs.app/Configurations.c:177 msgid "Shade Animation Speed" msgstr "Roll-Animationsgeschwindigkeit" #: ../../WPrefs.app/Configurations.c:236 msgid "Smooth Scaling" msgstr "Weiche Skalierung" #: ../../WPrefs.app/Configurations.c:237 msgid "" "Smooth scaled background images, neutralizing\n" "the `pixelization' effect. This will slow\n" "down loading of background images considerably." msgstr "" "Weiche Skalierung von Hintergrundbilderverhindert\n" "Verpixelungen, aber führt zu einem deutlich\n" "längeren Ladeprozess." #: ../../WPrefs.app/Configurations.c:277 msgid "Titlebar Style" msgstr "Titelleisten-Stil" #: ../../WPrefs.app/Configurations.c:314 ../../WPrefs.app/Configurations.c:320 msgid "Animations" msgstr "Animationen" #: ../../WPrefs.app/Configurations.c:331 msgid "" "Disable/enable animations such as those shown\n" "for window miniaturization, shading etc." msgstr "" "Animationen wie Fenster-Minimierung, Rollen usw. \n" "ein-/ausschalten" #: ../../WPrefs.app/Configurations.c:338 msgid "Superfluous" msgstr "Zusätzliche Effekte" #: ../../WPrefs.app/Configurations.c:349 msgid "" "Disable/enable `superfluous' features and\n" "animations. These include the `ghosting' of the\n" "dock when it's being moved to another side and\n" "the explosion animation when undocking icons." msgstr "" "Zusätzliche Effekte ein-/ausschalten. Dazu gehören\n" "das transparente Bild des Dock, wenn es auf die\n" "andere Seite verschoben wird und die Explosion\n" "der aus dem Dock entfernten Symbole." #: ../../WPrefs.app/Configurations.c:362 msgid "Dithering colormap for 8bpp" msgstr "Dithering für 8bpp-Farbpalette" #: ../../WPrefs.app/Configurations.c:364 msgid "" "Number of colors to reserve for Window Maker\n" "on displays that support only 8bpp (PseudoColor)." msgstr "" "Anzahl der Farben, die für Window Maker auf\n" "Display mit nur 8bpp reserviert werden sollen (PseudoColor)." #: ../../WPrefs.app/Configurations.c:371 msgid "Disable dithering in any visual/depth" msgstr "Dithering in jedem Visual und jeder Farbtiefe ausschalten." #: ../../WPrefs.app/Configurations.c:392 msgid "" "More colors for\n" "applications" msgstr "" "Mehr Farben für\n" "Anwendungen" #: ../../WPrefs.app/Configurations.c:399 msgid "" "More colors for\n" "Window Maker" msgstr "" "Mehr Farben für\n" "Window Maker" #: ../../WPrefs.app/Configurations.c:443 msgid "Other Configurations" msgstr "Verschiedene Einstellungen" #: ../../WPrefs.app/Configurations.c:444 msgid "" "Animation speeds, titlebar styles, various option\n" "toggling and number of colors to reserve for\n" "Window Maker on 8bit displays." msgstr "" "Animationsgeschwindigkeiten, Titelleisten-Stil,\n" "Einstellen der für Window Maker reservierten\n" "Farben auf 8bpp-Displays." #: ../../WPrefs.app/Expert.c:70 msgid "" "Disable miniwindows (icons for minimized windows). For use with KDE/GNOME." msgstr "Keine Minifenster (Symbole für minimierte Fenster). Für KDE/GNOME." #: ../../WPrefs.app/Expert.c:71 msgid "Do not set non-WindowMaker specific parameters (do not use xset)." msgstr "" "Keine Window Maker-spezifischen Parameter setzen (xset nicht benutzen)." #: ../../WPrefs.app/Expert.c:72 msgid "Automatically save session when exiting Window Maker." msgstr "Automatischens Abspeichern der Sitzung beim Beenden." #: ../../WPrefs.app/Expert.c:73 msgid "Use SaveUnder in window frames, icons, menus and other objects." msgstr "SaveUnder für Fensterrahmen, Symbole, Menü u. a. benutzen" #: ../../WPrefs.app/Expert.c:74 msgid "Disable confirmation panel for the Kill command." msgstr "Kein Bestätigungsdialog für den Töten-Befehl" #: ../../WPrefs.app/Expert.c:75 msgid "Disable selection animation for selected icons." msgstr "Keine Auswahlanimation für ausgewählte Symbole" #: ../../WPrefs.app/Expert.c:76 msgid "Smooth font edges (needs restart)." msgstr "Geglättete Schriftarten (Neustart erforderlich)." #: ../../WPrefs.app/Expert.c:77 msgid "Launch applications and restore windows with a single click." msgstr "" "Mit einem einzelnen Mausklick Anwendungen ausführen und " "Fenster wiederherstellen." #: ../../WPrefs.app/Expert.c:110 msgid "Expert User Preferences" msgstr "Einstellungen für Experten" #: ../../WPrefs.app/Expert.c:112 msgid "" "Options for people who know what they're doing...\n" "Also have some other misc. options." msgstr "" "Einstellungen für Leute, die wissen, was sie tun...\n" "Und einige andere Einstellungen." #: ../../WPrefs.app/Focus.c:75 #, c-format msgid "bad option value %s for option FocusMode. Using default Manual" msgstr "" "falscher Eigenschaftswert %s für FocusMode. Standardwert 'Manuell' wird " "benutzt." #: ../../WPrefs.app/Focus.c:87 #, c-format msgid "bad option value %s for option ColormapMode. Using default Auto" msgstr "" "falscher Eigenschaftswert %s für ColormapMode. Standardwert 'Auto' wird " "benutzt." #: ../../WPrefs.app/Focus.c:193 msgid "Input Focus Mode" msgstr "Eingabefokus-Modus" #: ../../WPrefs.app/Focus.c:201 msgid "Manual: Click on the window to set keyboard input focus" msgstr "Manuell: Tastaturfokus durch Anklicken des Fensters setzen" #: ../../WPrefs.app/Focus.c:207 msgid "Auto: Set keyboard input focus to the window under the mouse pointer" msgstr "Auto: Tastaturfokus immer auf das Fenster unter dem Mauszeiger setzen" #: ../../WPrefs.app/Focus.c:220 msgid "Install colormap from the window..." msgstr "Farbtabelle im Fenster setzen, das..." #: ../../WPrefs.app/Focus.c:225 msgid "...that has the input focus" msgstr "...den Eingabefokus hat" #: ../../WPrefs.app/Focus.c:230 msgid "...that's under the mouse pointer" msgstr "...unter dem Mauszeiger ist" #: ../../WPrefs.app/Focus.c:239 msgid "Automatic Window Raise Delay" msgstr "Verzögerung für Auto-Fensterheber" #: ../../WPrefs.app/Focus.c:294 ../../WPrefs.app/MouseSettings.c:555 msgid "ms" msgstr "ms" #: ../../WPrefs.app/Focus.c:311 msgid "Do not let applications receive the click used to focus windows" msgstr "Mausklicks, die ein Fenster fokussiert haben, nicht an die Anwendung senden" #: ../../WPrefs.app/Focus.c:316 msgid "Automatically focus new windows" msgstr "Neue Fenster automatisch auswählen" #: ../../WPrefs.app/Focus.c:333 msgid "Window Focus Preferences" msgstr "Einstellungen zum Fokusverhalten" #: ../../WPrefs.app/Focus.c:335 msgid "" "Keyboard focus switching policy, colormap switching\n" "policy for 8bpp displays and other related options." msgstr "" "Tastaturfokuswechsel, Farbtabellenwechsel für\n" "8bpp-Display und weitere verwandte Eigenschaften." #: ../../WPrefs.app/FontSimple.c:100 msgid "Window Title" msgstr "Titel des aktiven Fensters" #: ../../WPrefs.app/FontSimple.c:102 msgid "Menu Text" msgstr "Text eines Menüeintrages" #: ../../WPrefs.app/FontSimple.c:103 msgid "Icon Title" msgstr "Symboltitel" #: ../../WPrefs.app/FontSimple.c:104 msgid "Clip Title" msgstr "Clip-Titel" #: ../../WPrefs.app/FontSimple.c:105 msgid "Desktop Caption" msgstr "Arbeitsflächentitel" #: ../../WPrefs.app/FontSimple.c:639 msgid "Sample Text" msgstr "Beispieltext" #: ../../WPrefs.app/FontSimple.c:656 msgid "Family" msgstr "Familie" #: ../../WPrefs.app/FontSimple.c:682 msgid "Style" msgstr "Stil" #: ../../WPrefs.app/FontSimple.c:685 msgid "Size" msgstr "Größe" #: ../../WPrefs.app/FontSimple.c:718 msgid "Font Configuration" msgstr "Schrifteinstellungen" #: ../../WPrefs.app/FontSimple.c:720 msgid "Configure fonts for Window Maker titlebars, menus etc." msgstr "Schrifteinstellungen für Fenster, Menüs usw." #: ../../WPrefs.app/Icons.c:166 msgid "Icon Positioning" msgstr "Symbolpositionierung" #: ../../WPrefs.app/Icons.c:212 msgid "Iconification Animation" msgstr "Animation bei Minimierung" #: ../../WPrefs.app/Icons.c:223 msgid "Shrinking/Zooming" msgstr "Schrumpfen/Vergrößern" #: ../../WPrefs.app/Icons.c:224 msgid "Spinning/Twisting" msgstr "Drehen" #: ../../WPrefs.app/Icons.c:225 msgid "3D-flipping" msgstr "3D-Rotation" #: ../../WPrefs.app/Icons.c:226 ../../WPrefs.app/MouseSettings.c:781 #: ../../WPrefs.app/MouseSettings.c:786 msgid "None" msgstr "Keine" #: ../../WPrefs.app/Icons.c:239 msgid "Auto-arrange icons" msgstr "Automatische Symbolanordnung" #: ../../WPrefs.app/Icons.c:241 msgid "Keep icons and miniwindows arranged all the time." msgstr "Symbole und Minifenster immer anordnen" #: ../../WPrefs.app/Icons.c:246 msgid "Omnipresent miniwindows" msgstr "Haftende Minifenster" #: ../../WPrefs.app/Icons.c:248 msgid "Make miniwindows be present in all workspaces." msgstr "Minifenster sind auf allen Arbeitsflächen sichtbar" #: ../../WPrefs.app/Icons.c:256 msgid "Icon Size" msgstr "Symbolgröße" #: ../../WPrefs.app/Icons.c:258 msgid "The size of the dock/application icon and miniwindows" msgstr "Größe der Dock-, Minifenster- und Anwendungssymbole" #: ../../WPrefs.app/Icons.c:322 msgid "Icon Preferences" msgstr "Symboleinstellungen" #: ../../WPrefs.app/Icons.c:324 msgid "" "Icon/Miniwindow handling options. Icon positioning\n" "area, sizes of icons, miniaturization animation style." msgstr "" "Symbol-/Minifenster-Verhalten, Symbolpositionierung,\n" "Größe der Symbole, Minimierungs- und Animationsstil." #: ../../WPrefs.app/KeyboardSettings.c:69 msgid "Initial Key Repeat" msgstr "Verzögerungsrate" #: ../../WPrefs.app/KeyboardSettings.c:110 msgid "Key Repeat Rate" msgstr "Wiederholrate" #: ../../WPrefs.app/KeyboardSettings.c:150 msgid "Type here to test" msgstr "Zum Testen hier Tippen" #: ../../WPrefs.app/KeyboardSettings.c:166 msgid "Keyboard Preferences" msgstr "Tastatureinstellungen" #: ../../WPrefs.app/KeyboardSettings.c:168 msgid "Not done" msgstr "Noch nicht erstellt" #: ../../WPrefs.app/KeyboardShortcuts.c:295 ../../WPrefs.app/Menu.c:323 #: ../../WPrefs.app/TexturePanel.c:1408 ../../WPrefs.app/imagebrowser.c:89 msgid "Cancel" msgstr "Abbrechen" #: ../../WPrefs.app/KeyboardShortcuts.c:297 msgid "Press the desired shortcut key(s) or click Cancel to stop capturing." msgstr "" "Drücken Sie die gewünschte Tastenkombination oder klicken Sie auf Abbrechen " "zum Stoppen der Aufzeichnung." #: ../../WPrefs.app/KeyboardShortcuts.c:316 #: ../../WPrefs.app/KeyboardShortcuts.c:548 ../../WPrefs.app/Menu.c:333 #: ../../WPrefs.app/Menu.c:756 msgid "Capture" msgstr "Aufzeichnen" #: ../../WPrefs.app/KeyboardShortcuts.c:317 #: ../../WPrefs.app/KeyboardShortcuts.c:556 msgid "Click on Capture to interactively define the shortcut key." msgstr "Zum Erstellen eines Tastenkürzels auf \"Aufzeichnen\" klicken." #: ../../WPrefs.app/KeyboardShortcuts.c:453 msgid "Actions" msgstr "Aktionen" #: ../../WPrefs.app/KeyboardShortcuts.c:467 msgid "Open applications menu" msgstr "Anwendungmenü öffnen" #: ../../WPrefs.app/KeyboardShortcuts.c:468 msgid "Open window list menu" msgstr "Fensterliste öffnen" #: ../../WPrefs.app/KeyboardShortcuts.c:469 msgid "Open window commands menu" msgstr "Fenstermenü öffnen" #: ../../WPrefs.app/KeyboardShortcuts.c:470 msgid "Hide active application" msgstr "Aktive Anwendung verstecken" #: ../../WPrefs.app/KeyboardShortcuts.c:471 msgid "Hide other applications" msgstr "Alle anderen Anwendung verstecken" #: ../../WPrefs.app/KeyboardShortcuts.c:472 msgid "Miniaturize active window" msgstr "Aktives Fenster minimieren" #: ../../WPrefs.app/KeyboardShortcuts.c:473 msgid "Close active window" msgstr "Aktives Fenster schließen" #: ../../WPrefs.app/KeyboardShortcuts.c:474 msgid "Maximize active window" msgstr "Aktives Fenster maximieren" #: ../../WPrefs.app/KeyboardShortcuts.c:475 msgid "Maximize active window vertically" msgstr "Aktives Fenster vertikal maximieren" #: ../../WPrefs.app/KeyboardShortcuts.c:476 msgid "Maximize active window horizontally" msgstr "Aktives Fenster horizontal maximieren" #: ../../WPrefs.app/KeyboardShortcuts.c:477 msgid "Maximize active window left half" msgstr "Aktives Fenster zur linken Hälfte maximieren" #: ../../WPrefs.app/KeyboardShortcuts.c:478 msgid "Maximize active window right half" msgstr "Aktives Fenster zur rechten Hälfte maximieren" #: ../../WPrefs.app/KeyboardShortcuts.c:479 msgid "Maximus: Tiled maximization " msgstr "Maximus: Kachel-Maximierung" #: ../../WPrefs.app/KeyboardShortcuts.c:480 msgid "Raise active window" msgstr "Aktives Fenster in den Vordergrund" #: ../../WPrefs.app/KeyboardShortcuts.c:481 msgid "Lower active window" msgstr "Aktives Fenster in den Hintergrund" #: ../../WPrefs.app/KeyboardShortcuts.c:482 msgid "Raise/Lower window under mouse pointer" msgstr "Fenster unter dem Mauszeiger in den Vor-/Hintergrund" #: ../../WPrefs.app/KeyboardShortcuts.c:483 msgid "Shade active window" msgstr "Aktives Fenster aufrollen" #: ../../WPrefs.app/KeyboardShortcuts.c:484 msgid "Move/Resize active window" msgstr "Aktives Fenster bewegen/verändern" #: ../../WPrefs.app/KeyboardShortcuts.c:485 msgid "Select active window" msgstr "Aktives Fenster auswählen" #: ../../WPrefs.app/KeyboardShortcuts.c:486 msgid "Focus next window" msgstr "Nächstes Fenster" #: ../../WPrefs.app/KeyboardShortcuts.c:487 msgid "Focus previous window" msgstr "Vorheriges Fenster" #: ../../WPrefs.app/KeyboardShortcuts.c:488 msgid "Focus next group window" msgstr "" #: ../../WPrefs.app/KeyboardShortcuts.c:489 msgid "Focus previous group window" msgstr "" #: ../../WPrefs.app/KeyboardShortcuts.c:490 msgid "Switch to next workspace" msgstr "Zur nächsten Arbeitsfläche" #: ../../WPrefs.app/KeyboardShortcuts.c:491 msgid "Switch to previous workspace" msgstr "Zur vorherigen Arbeitsfläche" #: ../../WPrefs.app/KeyboardShortcuts.c:492 msgid "Switch to next ten workspaces" msgstr "Springe 10 Arbeitsflächen vorwärts" #: ../../WPrefs.app/KeyboardShortcuts.c:493 msgid "Switch to previous ten workspaces" msgstr "Springe 10 Arbeitsflächen rückwärts" #: ../../WPrefs.app/KeyboardShortcuts.c:494 msgid "Switch to workspace 1" msgstr "Springe zu Arbeitsfläche 1" #: ../../WPrefs.app/KeyboardShortcuts.c:495 msgid "Switch to workspace 2" msgstr "Springe zu Arbeitsfläche 2" #: ../../WPrefs.app/KeyboardShortcuts.c:496 msgid "Switch to workspace 3" msgstr "Springe zu Arbeitsfläche 3" #: ../../WPrefs.app/KeyboardShortcuts.c:497 msgid "Switch to workspace 4" msgstr "Springe zu Arbeitsfläche 4" #: ../../WPrefs.app/KeyboardShortcuts.c:498 msgid "Switch to workspace 5" msgstr "Springe zu Arbeitsfläche 5" #: ../../WPrefs.app/KeyboardShortcuts.c:499 msgid "Switch to workspace 6" msgstr "Springe zu Arbeitsfläche 6" #: ../../WPrefs.app/KeyboardShortcuts.c:500 msgid "Switch to workspace 7" msgstr "Springe zu Arbeitsfläche 7" #: ../../WPrefs.app/KeyboardShortcuts.c:501 msgid "Switch to workspace 8" msgstr "Springe zu Arbeitsfläche 8" #: ../../WPrefs.app/KeyboardShortcuts.c:502 msgid "Switch to workspace 9" msgstr "Springe zu Arbeitsfläche 9" #: ../../WPrefs.app/KeyboardShortcuts.c:503 msgid "Switch to workspace 10" msgstr "Springe zu Arbeitsfläche 10" #: ../../WPrefs.app/KeyboardShortcuts.c:504 msgid "Shortcut for window 1" msgstr "Tastenkürzel für Fenster 1" #: ../../WPrefs.app/KeyboardShortcuts.c:505 msgid "Shortcut for window 2" msgstr "Tastenkürzel für Fenster 2" #: ../../WPrefs.app/KeyboardShortcuts.c:506 msgid "Shortcut for window 3" msgstr "Tastenkürzel für Fenster 3" #: ../../WPrefs.app/KeyboardShortcuts.c:507 msgid "Shortcut for window 4" msgstr "Tastenkürzel für Fenster 4" #: ../../WPrefs.app/KeyboardShortcuts.c:508 msgid "Shortcut for window 5" msgstr "Tastenkürzel für Fenster 5" #: ../../WPrefs.app/KeyboardShortcuts.c:509 msgid "Shortcut for window 6" msgstr "Tastenkürzel für Fenster 6" #: ../../WPrefs.app/KeyboardShortcuts.c:510 msgid "Shortcut for window 7" msgstr "Tastenkürzel für Fenster 7" #: ../../WPrefs.app/KeyboardShortcuts.c:511 msgid "Shortcut for window 8" msgstr "Tastenkürzel für Fenster 8" #: ../../WPrefs.app/KeyboardShortcuts.c:512 msgid "Shortcut for window 9" msgstr "Tastenkürzel für Fenster 9" #: ../../WPrefs.app/KeyboardShortcuts.c:513 msgid "Shortcut for window 10" msgstr "Tastenkürzel für Fenster 10" #: ../../WPrefs.app/KeyboardShortcuts.c:514 msgid "Switch to Next Screen/Monitor" msgstr "Springe zu nächstem Bildschirm" #: ../../WPrefs.app/KeyboardShortcuts.c:515 msgid "Raise/Lower Dock" msgstr "Dock in den Vor-/Hintergrund" #: ../../WPrefs.app/KeyboardShortcuts.c:516 msgid "Raise/Lower Clip" msgstr "Clip in den Vor-/Hintergrund" #: ../../WPrefs.app/KeyboardShortcuts.c:518 msgid "Toggle keyboard language" msgstr "Tastatursbelegung ändern" #: ../../WPrefs.app/KeyboardShortcuts.c:532 msgid "Shortcut" msgstr "Kürzel" #: ../../WPrefs.app/KeyboardShortcuts.c:542 ../../WPrefs.app/Menu.c:762 msgid "Clear" msgstr "Löschen" #: ../../WPrefs.app/KeyboardShortcuts.c:598 msgid "Keyboard Shortcut Preferences" msgstr "Tastenkürzel-Einstellungen" #: ../../WPrefs.app/KeyboardShortcuts.c:600 msgid "" "Change the keyboard shortcuts for actions such\n" "as changing workspaces and opening menus." msgstr "" "Ändern der Tastenkürzel für Aktionen wie das\n" "Wechseln der Arbeitsflächen und das Öffnen von Menüs." #: ../../WPrefs.app/Menu.c:247 msgid "Select Program" msgstr "Programm auswählen" #: ../../WPrefs.app/Menu.c:460 msgid "New Items" msgstr "Neue Einträge" #: ../../WPrefs.app/Menu.c:461 msgid "Sample Commands" msgstr "Beispielbefehle" #: ../../WPrefs.app/Menu.c:462 msgid "Sample Submenus" msgstr "Beispieluntermenüs" #: ../../WPrefs.app/Menu.c:476 msgid "Run Program" msgstr "Programm ausführen" #: ../../WPrefs.app/Menu.c:477 msgid "Internal Command" msgstr "interner Befehl" #: ../../WPrefs.app/Menu.c:478 msgid "Submenu" msgstr "Untermenü" #: ../../WPrefs.app/Menu.c:479 msgid "External Submenu" msgstr "externes Untermenü" #: ../../WPrefs.app/Menu.c:480 msgid "Generated Submenu" msgstr "erstelltes Untermenü" #: ../../WPrefs.app/Menu.c:481 msgid "Directory Contents" msgstr "Verzeichnisinhalt" #: ../../WPrefs.app/Menu.c:482 msgid "Workspace Menu" msgstr "Arbeitsflächenmenü" #: ../../WPrefs.app/Menu.c:483 ../../WPrefs.app/MouseSettings.c:783 msgid "Window List Menu" msgstr "Fensterliste" #: ../../WPrefs.app/Menu.c:502 msgid "XTerm" msgstr "" #: ../../WPrefs.app/Menu.c:505 msgid "rxvt" msgstr "" #: ../../WPrefs.app/Menu.c:508 msgid "ETerm" msgstr "" #: ../../WPrefs.app/Menu.c:511 msgid "Run..." msgstr "Ausführen..." #: ../../WPrefs.app/Menu.c:512 #, c-format msgid "%a(Run,Type command to run)" msgstr "%a(Befehl zum Ausführen eingeben)" #: ../../WPrefs.app/Menu.c:514 msgid "Netscape" msgstr "" #: ../../WPrefs.app/Menu.c:517 msgid "gimp" msgstr "" #: ../../WPrefs.app/Menu.c:520 msgid "epic" msgstr "" #: ../../WPrefs.app/Menu.c:523 msgid "ee" msgstr "" #: ../../WPrefs.app/Menu.c:526 msgid "xv" msgstr "" #: ../../WPrefs.app/Menu.c:529 msgid "Acrobat Reader" msgstr "" #: ../../WPrefs.app/Menu.c:532 msgid "ghostview" msgstr "" #: ../../WPrefs.app/Menu.c:535 ../../WPrefs.app/Menu.c:781 msgid "Exit Window Maker" msgstr "Window Maker beenden" #: ../../WPrefs.app/Menu.c:557 msgid "Debian Menu" msgstr "Debian-Menü" #: ../../WPrefs.app/Menu.c:560 msgid "RedHat Menu" msgstr "RedHat-Menü" #: ../../WPrefs.app/Menu.c:563 msgid "Menu Conectiva" msgstr "Conectiva-Menü" #: ../../WPrefs.app/Menu.c:566 ../../WPrefs.app/Themes.c:213 msgid "Themes" msgstr "Themen" #: ../../WPrefs.app/Menu.c:572 msgid "Bg Images (scale)" msgstr "Hintergrundbilder (skaliert)" #: ../../WPrefs.app/Menu.c:578 msgid "Bg Images (tile)" msgstr "Hintergrundbilder (Kacheln)" #: ../../WPrefs.app/Menu.c:584 msgid "Assorted XTerms" msgstr "sortierte XTerms" #: ../../WPrefs.app/Menu.c:586 msgid "XTerm Yellow on Blue" msgstr "XTerm Gelb auf Blau" #: ../../WPrefs.app/Menu.c:589 msgid "XTerm White on Black" msgstr "XTerm Weiß auf Schwarz" #: ../../WPrefs.app/Menu.c:592 msgid "XTerm Black on White" msgstr "XTerm Schwarz auf Weiß" #: ../../WPrefs.app/Menu.c:595 msgid "XTerm Black on Beige" msgstr "XTerm Schwarz auf Beige" #: ../../WPrefs.app/Menu.c:598 msgid "XTerm White on Green" msgstr "XTerm Weiß auf Grün" #: ../../WPrefs.app/Menu.c:601 msgid "XTerm White on Olive" msgstr "XTerm Weiß auf Oliv" #: ../../WPrefs.app/Menu.c:604 msgid "XTerm Blue on Blue" msgstr "XTerm Blau auf Blau" #: ../../WPrefs.app/Menu.c:607 msgid "XTerm BIG FONTS" msgstr "XTerm Große Schriften" #: ../../WPrefs.app/Menu.c:628 msgid "Program to Run" msgstr "auszuführendes Programm" #: ../../WPrefs.app/Menu.c:638 msgid "Browse" msgstr "Suchen..." #: ../../WPrefs.app/Menu.c:647 msgid "Run the program inside a Xterm" msgstr "Programm in einem XTerm ausführen" #: ../../WPrefs.app/Menu.c:656 msgid "Path for Menu" msgstr "Menüpfad" #: ../../WPrefs.app/Menu.c:667 msgid "" "Enter the path for a file containing a menu\n" "or a list of directories with the programs you\n" "want to have listed in the menu. Ex:\n" "~/GNUstep/Library/WindowMaker/menu\n" "or\n" "/usr/bin ~/xbin" msgstr "" "Geben Sie den Pfad einer Datei, die ein Menü\n" "enthält, oder eine Liste von Verzeichnissen\n" "mit den gewüschten Anwendungen ein. Bespiel:\n" "~/GNUstep/Library/WindowMaker/menu\n" "oder\n" "/usr/bin ~/xbin" #: ../../WPrefs.app/Menu.c:679 msgid "Command" msgstr "Befehl" #: ../../WPrefs.app/Menu.c:690 msgid "" "Enter a command that outputs a menu\n" "definition to stdout when invoked." msgstr "" "Geben Sie einen Befehl ein, der bei Aufruf\n" "ein Menü auf der Standardausgabe zurückgibt." #: ../../WPrefs.app/Menu.c:695 msgid "" "Cache menu contents after opening for\n" "the first time" msgstr "" "Menüinhalt nach erstem Laden\n" "zwischenspeichern" #: ../../WPrefs.app/Menu.c:704 msgid "Command to Open Files" msgstr "Befehl zum Öffnen der Dateien" #: ../../WPrefs.app/Menu.c:715 msgid "" "Enter the command you want to use to open the\n" "files in the directories listed below." msgstr "" "Geben Sie den Befehl zum Öffnen der Dateien\n" "in den augelisteten Verzeichnissen ein." #: ../../WPrefs.app/Menu.c:723 msgid "Directories with Files" msgstr "Verzeichnis mit Dateien" #: ../../WPrefs.app/Menu.c:734 msgid "Strip extensions from file names" msgstr "Erweiterungen von den Dateinamen entfernen" #: ../../WPrefs.app/Menu.c:745 msgid "Keyboard Shortcut" msgstr "Tastenkürzel" #: ../../WPrefs.app/Menu.c:777 msgid "Arrange Icons" msgstr "Symbole anordnen" #: ../../WPrefs.app/Menu.c:778 msgid "Hide All Windows Except For The Focused One" msgstr "Alle Fenster bis auf das aktive verstecken" #: ../../WPrefs.app/Menu.c:779 msgid "Show All Windows" msgstr "Alle Fenster anzeigen" #: ../../WPrefs.app/Menu.c:782 msgid "Exit X Session" msgstr "X-Sitzung beenden" #: ../../WPrefs.app/Menu.c:783 msgid "Restart Window Maker" msgstr "Window Maker neustarten" #: ../../WPrefs.app/Menu.c:784 msgid "Start Another Window Manager : (" msgstr "anderen Windowmanager starten : (" #: ../../WPrefs.app/Menu.c:786 msgid "Save Current Session" msgstr "aktuelle Sitzung speichern" #: ../../WPrefs.app/Menu.c:787 msgid "Clear Saved Session" msgstr "gespeicherte Sitzung löschen" #: ../../WPrefs.app/Menu.c:788 msgid "Refresh Screen" msgstr "Bildschirm auffrischen" #: ../../WPrefs.app/Menu.c:789 msgid "Open Info Panel" msgstr "Infodialog anzeigen" #: ../../WPrefs.app/Menu.c:790 msgid "Open Copyright Panel" msgstr "Copyrightinformationen anzeigen" #: ../../WPrefs.app/Menu.c:795 msgid "Window Manager to Start" msgstr "zu startender Windowmanager" #: ../../WPrefs.app/Menu.c:808 msgid "Do not confirm action." msgstr "Aktion nicht bestätigen" #: ../../WPrefs.app/Menu.c:815 msgid "" "Instructions:\n" "\n" " - drag items from the left to the menu to add new items\n" " - drag items out of the menu to remove items\n" " - drag items in menu to change their position\n" " - drag items with Control pressed to copy them\n" " - double click in a menu item to change the label\n" " - click on a menu item to change related information" msgstr "" "Hilfe:\n" "\n" " - ziehen Sie Einträge von links in das Menü, um neue Einträge zu erstellen\n" " - ziehen Sie Einträge aus dem Menu, um sie zu entfernen\n" " - ziehen Sie Einträge innerhalb des Menüs, um sie zu verschieben\n" " - ziehen Sie Einträge bei gedrückter Strg-Taste, um sie zu kopieren\n" " - doppelklicken Sie auf Einträge, um den Text zu verändern\n" " - klicken Sie auf die Einträge, um diese zu konfigurieren " #: ../../WPrefs.app/Menu.c:1032 #, c-format msgid "unknown command '%s' in menu" msgstr "unbekannter Menübefehl '%s'" #: ../../WPrefs.app/Menu.c:1060 msgid ": Execute Program" msgstr ": Programm ausführen" #: ../../WPrefs.app/Menu.c:1064 msgid ": Perform Internal Command" msgstr ": internen Befehl ausführen" #: ../../WPrefs.app/Menu.c:1068 msgid ": Open a Submenu" msgstr ": Untermenü öffnen" #: ../../WPrefs.app/Menu.c:1072 msgid ": Program Generated Submenu" msgstr ": programmgeneriertes Unternmenü" #: ../../WPrefs.app/Menu.c:1076 msgid ": Directory Contents Menu" msgstr ": Menü mit Verzeichnisinhalt" #: ../../WPrefs.app/Menu.c:1080 msgid ": Open Workspaces Submenu" msgstr ": Arbeitsflächen-Untermenü" #: ../../WPrefs.app/Menu.c:1084 msgid ": Open Window List Submenu" msgstr ": Fensterlisten-Untermenü" #: ../../WPrefs.app/Menu.c:1279 msgid "Remove Submenu" msgstr "Untermenü entfernen" #: ../../WPrefs.app/Menu.c:1280 msgid "" "Removing this item will destroy all items inside\n" "the submenu. Do you really want to do that?" msgstr "" "Das Entfernen dieses Eintrages löscht alle Einträge\n" "im Untermenü. Wollen Sie das wirklich tun?" #: ../../WPrefs.app/Menu.c:1282 msgid "Yes" msgstr "Ja" #: ../../WPrefs.app/Menu.c:1282 msgid "No" msgstr "Nein" #: ../../WPrefs.app/Menu.c:1282 msgid "Yes, don't ask again" msgstr "Ja, alle" #: ../../WPrefs.app/Menu.c:1437 #, c-format msgid "Could not open default menu from '%s'" msgstr "Standardmenü aus '%s' konnte nicht geöffnet werden" #: ../../WPrefs.app/Menu.c:1441 ../../WPrefs.app/MouseSettings.c:123 #: ../../WPrefs.app/MouseSettings.c:142 ../../WPrefs.app/TexturePanel.c:560 #: ../../WPrefs.app/TexturePanel.c:636 ../../WPrefs.app/Themes.c:84 #: ../../WPrefs.app/WPrefs.c:663 ../../WPrefs.app/WPrefs.c:667 #: ../../WPrefs.app/WPrefs.c:684 ../../WPrefs.app/WPrefs.c:695 #: ../../WPrefs.app/WPrefs.c:705 ../../WPrefs.app/WPrefs.c:745 #: ../../WPrefs.app/WPrefs.c:749 msgid "Error" msgstr "Fehler" #: ../../WPrefs.app/Menu.c:1441 ../../WPrefs.app/MouseSettings.c:125 #: ../../WPrefs.app/MouseSettings.c:145 ../../WPrefs.app/TexturePanel.c:560 #: ../../WPrefs.app/TexturePanel.c:638 ../../WPrefs.app/TexturePanel.c:1402 #: ../../WPrefs.app/Themes.c:85 ../../WPrefs.app/WPrefs.c:663 #: ../../WPrefs.app/WPrefs.c:667 ../../WPrefs.app/WPrefs.c:687 #: ../../WPrefs.app/WPrefs.c:699 ../../WPrefs.app/WPrefs.c:705 #: ../../WPrefs.app/WPrefs.c:714 ../../WPrefs.app/WPrefs.c:745 #: ../../WPrefs.app/WPrefs.c:749 ../../WPrefs.app/imagebrowser.c:94 msgid "OK" msgstr "OK" #: ../../WPrefs.app/Menu.c:1468 ../../WPrefs.app/WPrefs.c:714 msgid "Warning" msgstr "Warnung" #: ../../WPrefs.app/Menu.c:1469 msgid "" "The menu file format currently in use is not supported\n" "by this tool. Do you want to discard the current menu\n" "to use this tool?" msgstr "" "Das momentan verwendete Menüdateiformat wird von\n" "diesem Programm nicht unterstützt. Wollen Sie das aktuelle\n" "Menü verwerfen, um dieses Programm verwenden zu können?" #: ../../WPrefs.app/Menu.c:1472 msgid "Yes, Discard and Update" msgstr "Ja, Verwerfen und Erneuern" #: ../../WPrefs.app/Menu.c:1472 msgid "No, Keep Current Menu" msgstr "Nein, aktuelles Menü behalten" #: ../../WPrefs.app/Menu.c:1704 msgid "Applications Menu Definition" msgstr "Anwendungsmenü-Definition" #: ../../WPrefs.app/Menu.c:1706 msgid "Edit the menu for launching applications." msgstr "Editieren des Menüs zum Starten von Anwendungen" #: ../../WPrefs.app/MenuPreferences.c:102 msgid "Menu Scrolling Speed" msgstr "Menü-Scrollgeschwindigkeit" #: ../../WPrefs.app/MenuPreferences.c:150 msgid "Submenu Alignment" msgstr "Untermenü-Ausrichtung" #: ../../WPrefs.app/MenuPreferences.c:196 msgid "" "Always open submenus inside the screen, instead of scrolling." msgstr "" "Untermenüs immer im Bildschirm öffnen anstatt zu Scrollen." #: ../../WPrefs.app/MenuPreferences.c:201 msgid "Scroll off-screen menus when pointer is moved over them." msgstr "" "Menüs außerhalb des Bildschirms scrollen, wenn der Mauszeiger über ihnen ist." #: ../../WPrefs.app/MenuPreferences.c:218 msgid "Menu Preferences" msgstr "Menüeinstellungen" #: ../../WPrefs.app/MenuPreferences.c:220 msgid "" "Menu usability related options. Scrolling speed,\n" "alignment of submenus etc." msgstr "" "Menüverhalten und verwandte Einstellungen. Scrollgeschwindigkeit,\n" "Ausrichtung von Untermenüs usw." #: ../../WPrefs.app/MouseSettings.c:124 msgid "Invalid mouse acceleration value. Must be a positive real value." msgstr "Ungültiger Wert für Mausy^: positive Kommazahl erwartet." #: ../../WPrefs.app/MouseSettings.c:144 msgid "" "Invalid mouse acceleration threshold value. Must be the number of pixels to " "travel before accelerating." msgstr "" "Ungültiger Schwellenwert für Mausbeuschleunigung: Anzahl der zurückgelegten " "Pixel erwartet." #: ../../WPrefs.app/MouseSettings.c:231 ../../WPrefs.app/MouseSettings.c:243 #: ../../WPrefs.app/MouseSettings.c:255 ../../WPrefs.app/MouseSettings.c:267 #, c-format msgid "bad value %s for option %s" msgstr "ungültiger Wert %s für Option %s" #: ../../WPrefs.app/MouseSettings.c:323 #, c-format msgid "" "modifier key %s for option ModifierKey was not recognized. Using %s as " "default" msgstr "" "Tastenmodifikator %s für die Option ModifierKey wurde nicht erkannt. " "Standardwert %s wird benutzt" #: ../../WPrefs.app/MouseSettings.c:344 msgid "could not retrieve keyboard modifier mapping" msgstr "Tastenmodifikator-Zuordnung konnte nicht zurückverfolgt werden" #: ../../WPrefs.app/MouseSettings.c:435 msgid "Mouse Speed" msgstr "Mausgeschwindigkeit" #: ../../WPrefs.app/MouseSettings.c:465 msgid "Accel.:" msgstr "Beschl.:" #: ../../WPrefs.app/MouseSettings.c:476 msgid "Threshold:" msgstr "Schwelle:" #: ../../WPrefs.app/MouseSettings.c:490 msgid "Double-Click Delay" msgstr "Doppelklickverzögerung" #: ../../WPrefs.app/MouseSettings.c:533 msgid "Test" msgstr "" #: ../../WPrefs.app/MouseSettings.c:563 msgid "Workspace Mouse Actions" msgstr "Arbeitsflächen-Mausaktionen" #: ../../WPrefs.app/MouseSettings.c:568 msgid "Disable mouse actions" msgstr "Keine Mausaktionen" #: ../../WPrefs.app/MouseSettings.c:574 msgid "Left Button" msgstr "Links" #: ../../WPrefs.app/MouseSettings.c:584 msgid "Middle Button" msgstr "Mitte" #: ../../WPrefs.app/MouseSettings.c:594 msgid "Right Button" msgstr "Rechts" #: ../../WPrefs.app/MouseSettings.c:604 msgid "Mouse Wheel" msgstr "Mausrad" #: ../../WPrefs.app/MouseSettings.c:626 msgid "Mouse Grab Modifier" msgstr "Taste zum Aufnehmen" #: ../../WPrefs.app/MouseSettings.c:628 msgid "" "Keyboard modifier to use for actions that\n" "involve dragging windows with the mouse,\n" "clicking inside the window." msgstr "" "Die Modifikatortaste, die den Verschiebe- oder\n" "Größenänderungsmodus aktiviert, wenn auf\n" "das Fenster geklickt wurde." #: ../../WPrefs.app/MouseSettings.c:658 #, c-format msgid "could not create %s" msgstr "%s konnte nicht erstellt werden" #: ../../WPrefs.app/MouseSettings.c:673 #, c-format msgid "could not create temporary file %s" msgstr "temporäre Datei %s konnte nicht erstellt werden" #: ../../WPrefs.app/MouseSettings.c:705 #, c-format msgid "could not rename file %s to %s\n" msgstr "Datei %s konnte nicht nach %s umbenannt werden\n" #: ../../WPrefs.app/MouseSettings.c:772 msgid "Shift" msgstr "" #: ../../WPrefs.app/MouseSettings.c:773 msgid "Lock" msgstr "" #: ../../WPrefs.app/MouseSettings.c:774 msgid "Control" msgstr "" #: ../../WPrefs.app/MouseSettings.c:775 msgid "Mod1" msgstr "" #: ../../WPrefs.app/MouseSettings.c:776 msgid "Mod2" msgstr "" #: ../../WPrefs.app/MouseSettings.c:777 msgid "Mod3" msgstr "" #: ../../WPrefs.app/MouseSettings.c:778 msgid "Mod4" msgstr "" #: ../../WPrefs.app/MouseSettings.c:779 msgid "Mod5" msgstr "" #: ../../WPrefs.app/MouseSettings.c:782 msgid "Applications Menu" msgstr "Anwendungsmenü" #: ../../WPrefs.app/MouseSettings.c:784 msgid "Select Windows" msgstr "Fenster auswählen" #: ../../WPrefs.app/MouseSettings.c:787 msgid "Switch Workspaces" msgstr "Arbeitsfläche wechseln" #: ../../WPrefs.app/MouseSettings.c:792 msgid "Mouse Preferences" msgstr "Mauseinstellungen" #: ../../WPrefs.app/MouseSettings.c:794 msgid "" "Mouse speed/acceleration, double click delay,\n" "mouse button bindings etc." msgstr "" "Mausgeschwindigkeit/-beschleunigung, Doppelklickverzögerung,\n" "Maustastenaktionen" #: ../../WPrefs.app/Paths.c:78 msgid "bad value in option IconPath. Using default path list" msgstr "ungültiger Wert in Eigenschaft IconPath. Standardliste wird verwendet." #: ../../WPrefs.app/Paths.c:95 msgid "bad value in option PixmapPath. Using default path list" msgstr "" "ungültiger Wert in Eigenschaft PixmapPath. Standardliste wird verwendet." #: ../../WPrefs.app/Paths.c:138 msgid "Select directory" msgstr "Verzeichnis auswählen" #: ../../WPrefs.app/Paths.c:243 msgid "Icon Search Paths" msgstr "Symbol-Suchpfade" #: ../../WPrefs.app/Paths.c:254 ../../WPrefs.app/Paths.c:285 #: ../../WPrefs.app/TexturePanel.c:1196 msgid "Add" msgstr "Hinzufügen" #: ../../WPrefs.app/Paths.c:261 ../../WPrefs.app/Paths.c:292 msgid "Remove" msgstr "Entfernen" #: ../../WPrefs.app/Paths.c:274 msgid "Pixmap Search Paths" msgstr "Pixmap-Suchpfade" #: ../../WPrefs.app/Paths.c:310 msgid "Search Path Configuration" msgstr "Suchpfadeinstellungen" #: ../../WPrefs.app/Paths.c:312 msgid "" "Search paths to use when looking for pixmaps\n" "and icons." msgstr "Suchpfade für Pixmaps und Symbole" #: ../../WPrefs.app/Preferences.c:70 #, c-format msgid "OFF" msgstr "AUS" #: ../../WPrefs.app/Preferences.c:72 #, c-format msgid "1 pixel" msgstr "1 Pixel" #. 2-4 #: ../../WPrefs.app/Preferences.c:75 #, c-format msgid "%i pixels" msgstr "%i Pixel" #. >4 #: ../../WPrefs.app/Preferences.c:78 #, c-format msgid "%i pixels " msgstr "%i Pixel " #: ../../WPrefs.app/Preferences.c:217 msgid "Size Display" msgstr "Größenanzeige" #: ../../WPrefs.app/Preferences.c:219 msgid "" "The position or style of the window size\n" "display that's shown when a window is resized." msgstr "" "Die Position und Art der Anzeige die bei der\n" "Größenänderung der Fensters benutzt wird." #: ../../WPrefs.app/Preferences.c:225 ../../WPrefs.app/Preferences.c:245 msgid "Corner of screen" msgstr "Bildschirmecke" #: ../../WPrefs.app/Preferences.c:226 ../../WPrefs.app/Preferences.c:246 msgid "Center of screen" msgstr "Bildschirmmitte" #: ../../WPrefs.app/Preferences.c:227 ../../WPrefs.app/Preferences.c:247 msgid "Center of resized window" msgstr "Fenstermitte" #: ../../WPrefs.app/Preferences.c:228 msgid "Technical drawing-like" msgstr "wie technische Zeichnung" #: ../../WPrefs.app/Preferences.c:229 ../../WPrefs.app/Preferences.c:248 msgid "Disabled" msgstr "Keine" #: ../../WPrefs.app/Preferences.c:237 msgid "Position Display" msgstr "Positionsanzeige" #: ../../WPrefs.app/Preferences.c:239 msgid "" "The position or style of the window position\n" "display that's shown when a window is moved." msgstr "" "Die Position und Art der Anzeige\n" "beim Verschieben eines Fensters" #: ../../WPrefs.app/Preferences.c:256 msgid "Show balloon text for..." msgstr "Zeige Ballontext für..." #: ../../WPrefs.app/Preferences.c:263 msgid "incomplete window titles" msgstr "unvollständige Fenstertitel" #: ../../WPrefs.app/Preferences.c:264 msgid "miniwindow titles" msgstr "Minifenster-Titel" #: ../../WPrefs.app/Preferences.c:265 msgid "application/dock icons" msgstr "Anwendungs-/Docksymbole" #: ../../WPrefs.app/Preferences.c:266 msgid "internal help" msgstr "interne Hilfe" #: ../../WPrefs.app/Preferences.c:278 msgid "Raise window when switching focus with keyboard" msgstr "Aktives Fenster nach Tastatur-Fokuswechsel oben" #: ../../WPrefs.app/Preferences.c:284 msgid "" "Enable keyboard language\n" "switch button in window titlebars." msgstr "" "Schaltfläche zum Ändern der\n" "Tastaturbelegung in Fenstertitelleisten." #: ../../WPrefs.app/Preferences.c:293 msgid "Workspace border" msgstr "Arbeitsflächenkante" #: ../../WPrefs.app/Preferences.c:309 msgid "Left/Right" msgstr "Links/Rechts" #: ../../WPrefs.app/Preferences.c:314 msgid "Top/Bottom" msgstr "Oben/Unten" #: ../../WPrefs.app/Preferences.c:331 msgid "Miscellaneous Ergonomic Preferences" msgstr "Verschiedene Einstellungen zur Ergonomie" #: ../../WPrefs.app/Preferences.c:332 msgid "" "Various settings like balloon text, geometry\n" "displays etc." msgstr "" "Verschiedene Einstellungen wie Ballontexte,\n" "Geometrieanzeigen usw." #: ../../WPrefs.app/TexturePanel.c:295 msgid "Saturation" msgstr "Sättigung" #: ../../WPrefs.app/TexturePanel.c:297 msgid "Brightness" msgstr "Helligkeit" #: ../../WPrefs.app/TexturePanel.c:342 ../../WPrefs.app/TexturePanel.c:348 msgid "Hue" msgstr "Farbton" #: ../../WPrefs.app/TexturePanel.c:557 msgid "Could not load the selected file: " msgstr "Ausgewählte Datei konnte nicht geladen werden: " #: ../../WPrefs.app/TexturePanel.c:607 msgid "Open Image" msgstr "Bild öffnen" #: ../../WPrefs.app/TexturePanel.c:637 msgid "The selected file does not contain a supported image." msgstr "Die ausgewählte Datei enthält kein unterstütztes Bildformat" #: ../../WPrefs.app/TexturePanel.c:867 #, c-format msgid "could not load file '%s': %s" msgstr "Datei %s konnte nicht geladen werden: %s" #: ../../WPrefs.app/TexturePanel.c:981 #, c-format msgid "error creating texture %s" msgstr "Fehler beim Erstellen der Textur %s" #: ../../WPrefs.app/TexturePanel.c:1141 msgid "Texture Panel" msgstr "Texturanzeige" #: ../../WPrefs.app/TexturePanel.c:1148 msgid "Texture Name" msgstr "Texturname" #: ../../WPrefs.app/TexturePanel.c:1160 msgid "Solid Color" msgstr "Einfarbig" #: ../../WPrefs.app/TexturePanel.c:1161 msgid "Gradient Texture" msgstr "Farbverlauf" #: ../../WPrefs.app/TexturePanel.c:1162 msgid "Simple Gradient Texture" msgstr "Einfacher Farbverlauf" #: ../../WPrefs.app/TexturePanel.c:1163 msgid "Textured Gradient" msgstr "Texturierter Farbverlauf" #: ../../WPrefs.app/TexturePanel.c:1164 msgid "Image Texture" msgstr "Bildtextur" #: ../../WPrefs.app/TexturePanel.c:1172 msgid "Default Color" msgstr "Standardfarbe" #: ../../WPrefs.app/TexturePanel.c:1184 msgid "Gradient Colors" msgstr "Verlaufsfarben" #: ../../WPrefs.app/TexturePanel.c:1273 msgid "Direction" msgstr "Richtung" #: ../../WPrefs.app/TexturePanel.c:1301 msgid "Gradient" msgstr "Farbverlauf" #: ../../WPrefs.app/TexturePanel.c:1317 msgid "Gradient Opacity" msgstr "Farbverlaufsdeckung" #: ../../WPrefs.app/TexturePanel.c:1357 msgid "Image" msgstr "Bild" #: ../../WPrefs.app/TexturePanel.c:1389 msgid "Tile" msgstr "Kachel" #: ../../WPrefs.app/TexturePanel.c:1390 msgid "Scale" msgstr "Vollbild" #: ../../WPrefs.app/TexturePanel.c:1392 msgid "Maximize" msgstr "Maximieren" #: ../../WPrefs.app/Themes.c:64 ../../WPrefs.app/Themes.c:72 msgid "Set" msgstr "Setzen" #: ../../WPrefs.app/Themes.c:115 msgid "Stop" msgstr "" #: ../../WPrefs.app/Themes.c:126 ../../WPrefs.app/Themes.c:171 #: ../../WPrefs.app/Themes.c:191 msgid "Download" msgstr "" #: ../../WPrefs.app/Themes.c:140 msgid "Save Current Theme" msgstr "Aktuelles Thema speichern" #: ../../WPrefs.app/Themes.c:149 msgid "Load" msgstr "Laden" #: ../../WPrefs.app/Themes.c:154 msgid "Install" msgstr "Installieren" #: ../../WPrefs.app/Themes.c:161 msgid "Tile of The Day" msgstr "Kachel des Tages" #: ../../WPrefs.app/Themes.c:181 msgid "Bar of The Day" msgstr "Leiste des Tages" #: ../../WPrefs.app/WPrefs.c:225 ../../WPrefs.app/WPrefs.c:295 msgid "Window Maker Preferences" msgstr "Window Maker Einstellungen" #: ../../WPrefs.app/WPrefs.c:248 msgid "Revert Page" msgstr "Seite zurücknehmen" #: ../../WPrefs.app/WPrefs.c:254 msgid "Revert All" msgstr "Alles zurücknehmen" #: ../../WPrefs.app/WPrefs.c:260 msgid "Save" msgstr "Speichern" #: ../../WPrefs.app/WPrefs.c:272 msgid "Balloon Help" msgstr "Ballon-Hilfe" #: ../../WPrefs.app/WPrefs.c:302 #, c-format msgid "Version %s" msgstr "" #: ../../WPrefs.app/WPrefs.c:309 msgid "Starting..." msgstr "Starte..." #: ../../WPrefs.app/WPrefs.c:393 #, c-format msgid "could not locate image file %s\n" msgstr "Bilddatei %s konnte nicht gefunden werden\n" #: ../../WPrefs.app/WPrefs.c:584 #, c-format msgid "could not load image file %s:%s" msgstr "Bilddatei %s konnte nicht geladen werden: %s" #: ../../WPrefs.app/WPrefs.c:601 msgid "Loading Window Maker configuration files..." msgstr "Window Maker-Konfigurationsdateien werden geladen..." #: ../../WPrefs.app/WPrefs.c:605 msgid "Initializing configuration panels..." msgstr "Einstellungsseiten werden vorbereitet..." #: ../../WPrefs.app/WPrefs.c:662 ../../WPrefs.app/WPrefs.c:744 #, c-format msgid "Window Maker domain (%s) is corrupted!" msgstr "Window Maker-Domäne (%s) ist fehlerhaft!" #: ../../WPrefs.app/WPrefs.c:666 #, c-format msgid "Could not load Window Maker domain (%s) from defaults database." msgstr "" "Window Maker-Domäne (%s) konnte nicht aus Standarddatenbank geladen werden." #: ../../WPrefs.app/WPrefs.c:681 msgid "could not extract version information from Window Maker" msgstr "Window Maker-Versionsinformationen konnten nicht festgestellt werden" #: ../../WPrefs.app/WPrefs.c:682 msgid "Make sure wmaker is in your search path." msgstr "Stellen Sie sicher, das \"wmaker\" in Ihrem Suchpfad enhalten ist." #: ../../WPrefs.app/WPrefs.c:686 msgid "" "Could not extract version from Window Maker. Make sure it is correctly " "installed and is in your PATH environment variable." msgstr "" "Window Maker-Versionsinformationen konnten nicht festgestellt werden. " "Stellen Sie sicher, dass Window Maker korrekt installiert und in der PATH-" "Umgebungsvariable enthalten ist." #: ../../WPrefs.app/WPrefs.c:696 msgid "" "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." msgstr "" "Window Maker-Versionsinformationen konnten nicht festgestellt werden. " "Stellen Sie sicher, dass Window Maker korrekt installiert und der " "Installationspfad in der PATH-Umgebungsvariable enthalten ist." #: ../../WPrefs.app/WPrefs.c:703 #, c-format msgid "" "WPrefs only supports Window Maker 0.18.0 or newer.\n" "The version installed is %i.%i.%i\n" msgstr "" "WPrefs unterstützt nur Window Maker 0.18.0 oder neuer.\n" "Die installierte Version ist %i.%i.%i\n" #: ../../WPrefs.app/WPrefs.c:712 #, c-format msgid "" "Window Maker %i.%i.%i, which is installed in your system, is not fully " "supported by this version of WPrefs." msgstr "" "Der auf Ihrem System installierte Window Maker %i.%i.%i wird von dieser " "WPrefs-Version nicht komplett unterstützt." #: ../../WPrefs.app/WPrefs.c:725 #, c-format msgid "could not run \"%s --global_defaults_path\"." msgstr "\"%s --global_defaults_path\" konnte nicht ausgeführt werden." #: ../../WPrefs.app/WPrefs.c:748 #, c-format msgid "Could not load global Window Maker domain (%s)." msgstr "Globale Window Maker-Domäne (%s) konnte nicht geladen werden." #: ../../WPrefs.app/WPrefs.c:968 #, c-format msgid "" "bad speed value for option %s\n" ". Using default Medium" msgstr "" "Falscher Geschwindigkeitswert für Eigenschaft %s.\n" "Standardwert 'Mittel' wird benutzt." #: ../../WPrefs.app/WindowHandling.c:150 #, c-format msgid "bad option value %s in WindowPlacement. Using default value" msgstr "Ungültiger Wert %s in Fensterplatzierung. Standardwert wird benutzt." #: ../../WPrefs.app/WindowHandling.c:169 msgid "invalid data in option WindowPlaceOrigin. Using default (0,0)" msgstr "" "Ungültige Daten in Option WindowPlaceOrigin. Standardwert (0,0) wird benutzt." #: ../../WPrefs.app/WindowHandling.c:249 msgid "Window Placement" msgstr "Fensterplatzierung" #: ../../WPrefs.app/WindowHandling.c:250 msgid "" "How to place windows when they are first put\n" "on screen." msgstr "Wahl der Fensterplatzierung beim ersten Anzeigen." #: ../../WPrefs.app/WindowHandling.c:256 msgid "Automatic" msgstr "Automatisch" #: ../../WPrefs.app/WindowHandling.c:257 msgid "Random" msgstr "Zufällig" #: ../../WPrefs.app/WindowHandling.c:258 msgid "Manual" msgstr "Manuell" #: ../../WPrefs.app/WindowHandling.c:259 msgid "Cascade" msgstr "Kaskadieren" #: ../../WPrefs.app/WindowHandling.c:260 msgid "Smart" msgstr "Schlau" #: ../../WPrefs.app/WindowHandling.c:266 msgid "Placement Origin" msgstr "Startplatzierung" #: ../../WPrefs.app/WindowHandling.c:326 msgid "Opaque Move" msgstr "Verschiebeart" #: ../../WPrefs.app/WindowHandling.c:327 msgid "" "Whether the window contents should be moved\n" "when dragging windows aroung or if only a\n" "frame should be displayed.\n" msgstr "" "Legt fest, ob beim Verschieben der Fensterinhalt\n" "oder nur ein Rechteck in Fenstergröße angezeigt \n" "werden soll.\n" #: ../../WPrefs.app/WindowHandling.c:365 msgid "When maximizing..." msgstr "Beim Maximieren..." #: ../../WPrefs.app/WindowHandling.c:370 msgid "...do not cover icons" msgstr "...Symbole nicht verdecken" #: ../../WPrefs.app/WindowHandling.c:376 msgid "...do not cover dock" msgstr "...Dock nicht verdecken" #: ../../WPrefs.app/WindowHandling.c:401 msgid "Edge Resistance" msgstr "Kantenwiderstand" #: ../../WPrefs.app/WindowHandling.c:403 msgid "" "Edge resistance will make windows `resist'\n" "being moved further for the defined threshold\n" "when moved against other windows or the edges\n" "of the screen." msgstr "" "Der Kantenwiderstand bewirkt, dass Fenster\n" "bis zur eingestellten Schwelle weiterer Bewegung\n" "widerstehen, wenn sie auf andere Fenster oder die\n" "Bildschirmkante treffen." #: ../../WPrefs.app/WindowHandling.c:422 msgid "Resist" msgstr "Druck" #: ../../WPrefs.app/WindowHandling.c:427 msgid "Attract" msgstr "Zug" #: ../../WPrefs.app/WindowHandling.c:441 msgid "Open dialogs in the same workspace as their owners" msgstr "Dialoge auf Arbeitsfläche des Eigentümers öffnen" #: ../../WPrefs.app/WindowHandling.c:464 msgid "Window Handling Preferences" msgstr "Einstellungen zum Fensterverhalten" #: ../../WPrefs.app/WindowHandling.c:466 msgid "" "Window handling options. Initial placement style\n" "edge resistance, opaque move etc." msgstr "" "Einstellungen zum Fensterverhalten: Anfangsplatzierung,\n" "Kantenwiderstand, Verschiebeart usw." #: ../../WPrefs.app/Workspace.c:163 msgid "Workspace Navigation" msgstr "Arbeitsflächennavigation" #: ../../WPrefs.app/Workspace.c:168 msgid "Wrap to the first workspace from the last workspace" msgstr "Auf die letzte Arbeitsfläche folgt wieder die erste" #: ../../WPrefs.app/Workspace.c:187 msgid "Switch workspaces while dragging windows" msgstr "Beim Bewegen von Fenstern Arbeitsfläche wechseln" #: ../../WPrefs.app/Workspace.c:206 msgid "Automatically create new workspaces" msgstr "Automatisch neue Arbeitsflächen erstellen" #: ../../WPrefs.app/Workspace.c:226 msgid "Position of workspace name display" msgstr "Position des Namens der Arbeitsfläche" #: ../../WPrefs.app/Workspace.c:245 msgid "Disable" msgstr "Keiner" #: ../../WPrefs.app/Workspace.c:247 msgid "Top" msgstr "Oben" #: ../../WPrefs.app/Workspace.c:248 msgid "Bottom" msgstr "Unten" #: ../../WPrefs.app/Workspace.c:249 msgid "Top/Left" msgstr "Oben links" #: ../../WPrefs.app/Workspace.c:250 msgid "Top/Right" msgstr "Oben rechts" #: ../../WPrefs.app/Workspace.c:251 msgid "Bottom/Left" msgstr "Unten links" #: ../../WPrefs.app/Workspace.c:252 msgid "Bottom/Right" msgstr "Unten rechts" #: ../../WPrefs.app/Workspace.c:260 msgid "Dock/Clip" msgstr "Dock/Clip" #: ../../WPrefs.app/Workspace.c:279 msgid "" "Disable/enable the application Dock (the\n" "vertical icon bar in the side of the screen)." msgstr "" "Anwendungsdock ein-/ausschalten (die\n" "vertikale Symbolleiste am Rande des Bildschirmes)." #: ../../WPrefs.app/Workspace.c:299 msgid "" "Disable/enable the Clip (that thing with\n" "a paper clip icon)." msgstr "" "Clip ein-/ausschalten (das Ding mit der\n" "Büroklammer)." #: ../../WPrefs.app/Workspace.c:333 msgid "Workspace Preferences" msgstr "Arbeitsflächeneinstellungen" #: ../../WPrefs.app/Workspace.c:335 msgid "" "Workspace navigation features.\n" "You can also enable/disable the Dock and Clip here." msgstr "" "Einstellungen zur Arbeitsflächennavigation.\n" "Auch Dock und Clip können hier ein-/ausgeschaltet werden." #: ../../WPrefs.app/imagebrowser.c:84 msgid "View" msgstr "Ansicht" #: ../../WPrefs.app/main.c:53 #, c-format msgid "usage: %s [options]\n" msgstr "Benutzung: %s [Optionen]\n" #: ../../WPrefs.app/main.c:54 msgid "options:" msgstr "Optionen:" #: ../../WPrefs.app/main.c:55 msgid " -display <display>\tdisplay to be used" msgstr " -display <display>\tverwendetes Display" #: ../../WPrefs.app/main.c:56 msgid " --version\t\tprint version number and exit" msgstr " --version\t\tVersionsnummer ausgeben und beenden" #: ../../WPrefs.app/main.c:57 msgid " --help\t\tprint this message and exit" msgstr " --help\t\tdiese Meldung ausgeben und beenden" #: ../../WPrefs.app/main.c:124 #, c-format msgid "too few arguments for %s" msgstr "zu wenig Argumente für %s" #: ../../WPrefs.app/main.c:147 msgid "X server does not support locale" msgstr "X-Server unterstützt keine Lokalisierungen" #: ../../WPrefs.app/main.c:150 msgid "cannot set locale modifiers" msgstr "Lokalisierung kann nicht gesetzt werden" #: ../../WPrefs.app/main.c:156 #, c-format msgid "could not open display %s" msgstr "Display %s kann nicht geöffnet werden" #: ../../WPrefs.app/main.c:164 msgid "could not initialize application" msgstr "Anwendung konnte nicht initialisiert werden" ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/po/uk.po��������������������������������������������������������������0000644�0001750�0001750�00000202316�13431646201�014354� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������msgid "" msgstr "" "Project-Id-Version: WPrefs.app 0.80.1\n" "POT-Creation-Date: 2002-02-18 10:15+0200\n" "PO-Revision-Date: 2004-09-06 21:42+4000\n" "Last-Translator: Victor Forsyuk <victor@ksi-linux.com>\n" "Language-Team: KSI Linux Ukrainian <uk@ksi-linux.com>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Date: 1999-05-31 19:29:53+0400\n" "From: Victor Forsyuk,,,<victor@ksi-linux.com>\n" "Xgettext-Options: --default-domain=WPrefs --add-comments --keyword=_\n" "Files: ../../WPrefs.app/main.c ../../WPrefs.app/WPrefs.c " "../../WPrefs.app/Appearance.c ../../WPrefs.app/Configurations.c " "../../WPrefs.app/Expert.c ../../WPrefs.app/Focus.c ../../WPrefs.app/Icons.c " "../../WPrefs.app/KeyboardSettings.c ../../WPrefs.app/KeyboardShortcuts.c " "../../WPrefs.app/Menu.c ../../WPrefs.app/MenuPreferences.c " "../../WPrefs.app/MouseSettings.c ../../WPrefs.app/NoMenuAlert.c " "../../WPrefs.app/Paths.c ../../WPrefs.app/Preferences.c " "../../WPrefs.app/Text.c ../../WPrefs.app/TexturePanel.c " "../../WPrefs.app/Themes.c ../../WPrefs.app/WindowHandling.c " "../../WPrefs.app/Workspace.c ../../WPrefs.app/double.c " "../../WPrefs.app/editmenu.c ../../WPrefs.app/MenuGuru.c " "../../WPrefs.app/xmodifier.c\n" #: ../../WPrefs.app/Appearance.c:1131 msgid "Select File" msgstr "Виберіть файл" #: ../../WPrefs.app/Appearance.c:1533 msgid "Focused Window" msgstr "Активне вікно" #: ../../WPrefs.app/Appearance.c:1537 msgid "Unfocused Window" msgstr "Неактивне вікно" #: ../../WPrefs.app/Appearance.c:1541 msgid "Owner of Focused Window" msgstr "Власник активного вікна" #: ../../WPrefs.app/Appearance.c:1545 ../../WPrefs.app/Appearance.c:1862 msgid "Menu Title" msgstr "Шапка меню" #: ../../WPrefs.app/Appearance.c:1549 ../../WPrefs.app/Appearance.c:1551 msgid "Normal Item" msgstr "Норм. пункт" #: ../../WPrefs.app/Appearance.c:1555 msgid "Disabled Item" msgstr "Недоступний" #: ../../WPrefs.app/Appearance.c:1564 msgid "Highlighted" msgstr "Підсвічений" #: ../../WPrefs.app/Appearance.c:1755 msgid "Texture" msgstr "Текстура" #: ../../WPrefs.app/Appearance.c:1763 msgid "Titlebar of Focused Window" msgstr "Заголовок активного вікна" #: ../../WPrefs.app/Appearance.c:1764 msgid "Titlebar of Unfocused Windows" msgstr "Заголовок неактивних вікон" #: ../../WPrefs.app/Appearance.c:1765 msgid "Titlebar of Focused Window's Owner" msgstr "Заголовок власника активного вікна" #: ../../WPrefs.app/Appearance.c:1766 msgid "Window Resizebar" msgstr "Смужка зміни розміру вікна" #: ../../WPrefs.app/Appearance.c:1767 msgid "Titlebar of Menus" msgstr "Заголовок меню" #: ../../WPrefs.app/Appearance.c:1768 msgid "Menu Items" msgstr "Пункти меню" #: ../../WPrefs.app/Appearance.c:1769 msgid "Icon Background" msgstr "Фон іконки" #: ../../WPrefs.app/Appearance.c:1784 msgid "" "Double click in the texture you want to use\n" "for the selected item." msgstr "" "Зробіть подвійний клік на текстурі, котру хочете\n" "використати для вибраного елементу." #: ../../WPrefs.app/Appearance.c:1798 msgid "New" msgstr "Нова" #: ../../WPrefs.app/Appearance.c:1802 msgid "Create a new texture." msgstr "Створення нової текстури." #: ../../WPrefs.app/Appearance.c:1810 msgid "Extract..." msgstr "Дістати..." #: ../../WPrefs.app/Appearance.c:1814 msgid "Extract texture(s) from a theme or a style file." msgstr "Отримання текстур(и) з Теми чи стильового файлу." #: ../../WPrefs.app/Appearance.c:1824 msgid "Edit" msgstr "Змінити" #: ../../WPrefs.app/Appearance.c:1827 msgid "Edit the highlighted texture." msgstr "Редагування підсвіченої текстури." #: ../../WPrefs.app/Appearance.c:1835 ../../WPrefs.app/TexturePanel.c:1316 msgid "Delete" msgstr "Видалити" #: ../../WPrefs.app/Appearance.c:1839 msgid "Delete the highlighted texture." msgstr "Видалення підсвіченої текстури." #: ../../WPrefs.app/Appearance.c:1852 msgid "Color" msgstr "Колір" #: ../../WPrefs.app/Appearance.c:1859 msgid "Focused Window Title" msgstr "Заголовок активного вікна" #: ../../WPrefs.app/Appearance.c:1860 msgid "Unfocused Window Title" msgstr "Заголовок неактивних вікон" #: ../../WPrefs.app/Appearance.c:1861 msgid "Owner of Focused Window Title" msgstr "Заголовок власника активного вікна" #: ../../WPrefs.app/Appearance.c:1863 msgid "Menu Item Text" msgstr "Текст пункта меню" #: ../../WPrefs.app/Appearance.c:1864 msgid "Disabled Menu Item Text" msgstr "Текст недоступного пункта меню" #: ../../WPrefs.app/Appearance.c:1865 msgid "Menu Highlight Color" msgstr "Колір підсвітки пункта меню" #: ../../WPrefs.app/Appearance.c:1866 msgid "Highlighted Menu Text Color" msgstr "Колір тексту підсвіченого пункту" #: ../../WPrefs.app/Appearance.c:1905 msgid "Background" msgstr "Фон" #: ../../WPrefs.app/Appearance.c:1917 ../../WPrefs.app/TexturePanel.c:1503 msgid "Browse..." msgstr "Вибрати..." #: ../../WPrefs.app/Appearance.c:1930 msgid "Options" msgstr "Опції:" #: ../../WPrefs.app/Appearance.c:1937 msgid "Menu Style" msgstr "Стиль меню" #: ../../WPrefs.app/Appearance.c:1965 ../../WPrefs.app/Configurations.c:242 #: ../../WPrefs.app/Configurations.c:254 ../../WPrefs.app/Focus.c:288 #: ../../WPrefs.app/Focus.c:299 ../../WPrefs.app/MenuPreferences.c:134 #: ../../WPrefs.app/MenuPreferences.c:145 #: ../../WPrefs.app/MenuPreferences.c:173 #: ../../WPrefs.app/MenuPreferences.c:188 ../../WPrefs.app/MouseSettings.c:560 #: ../../WPrefs.app/MouseSettings.c:571 ../../WPrefs.app/WPrefs.c:558 #: ../../WPrefs.app/WPrefs.c:583 #, c-format msgid "could not load icon file %s" msgstr "не вдається завантажити файл іконки %s" #: ../../WPrefs.app/Appearance.c:1979 msgid "Title Alignment" msgstr "Заголовок" #: ../../WPrefs.app/Appearance.c:1986 msgid "Left" msgstr "Ліворуч" #: ../../WPrefs.app/Appearance.c:1989 ../../WPrefs.app/TexturePanel.c:1517 #: ../../WPrefs.app/Workspace.c:270 msgid "Center" msgstr "По центру" #: ../../WPrefs.app/Appearance.c:1992 msgid "Right" msgstr "Праворуч" #: ../../WPrefs.app/Appearance.c:2216 msgid "Appearance Preferences" msgstr "Зовнішній вигляд" #: ../../WPrefs.app/Appearance.c:2218 msgid "" "Background texture configuration for windows,\n" "menus and icons." msgstr "" "Конфігурація фонових текстур для вікон,\n" "меню та іконок." #: ../../WPrefs.app/Appearance.c:2263 msgid "Extract Texture" msgstr "Отримати текстуру" #: ../../WPrefs.app/Appearance.c:2283 msgid "Textures" msgstr "Текстури" #: ../../WPrefs.app/Appearance.c:2294 ../../WPrefs.app/WPrefs.c:302 msgid "Close" msgstr "Закрити" #: ../../WPrefs.app/Appearance.c:2299 msgid "Extract" msgstr "Витягти" #: ../../WPrefs.app/Configurations.c:150 ../../WPrefs.app/Configurations.c:156 #: ../../WPrefs.app/MouseSettings.c:490 ../../WPrefs.app/WindowHandling.c:339 #: ../../WPrefs.app/WindowHandling.c:351 ../../WPrefs.app/Workspace.c:90 #: ../../WPrefs.app/Workspace.c:101 #, c-format msgid "could not load icon %s" msgstr "не вдається завантажити іконку %s" #: ../../WPrefs.app/Configurations.c:164 ../../WPrefs.app/Workspace.c:109 #, c-format msgid "could not process icon %s:" msgstr "не вдається обробити іконку %s:" #: ../../WPrefs.app/Configurations.c:189 ../../WPrefs.app/Workspace.c:164 #, c-format msgid "could not load image file %s" msgstr "не вдається завантажити файл зображення %s" #: ../../WPrefs.app/Configurations.c:203 msgid "Icon Slide Speed" msgstr "Швидкість зсуву іконки" #: ../../WPrefs.app/Configurations.c:209 msgid "Shade Animation Speed" msgstr "Швидкість стискання вікна" #: ../../WPrefs.app/Configurations.c:271 msgid "Smooth Scaling" msgstr "Зглажування" #: ../../WPrefs.app/Configurations.c:272 msgid "" "Smooth scaled background images, neutralizing\n" "the `pixelization' effect. This will slow\n" "down loading of background images considerably." msgstr "" "Зглажування масштабованих фонових зображень,\n" "нейтралізуючи ефект `пікселізації'. Це значно\n" "уповільнить завантаження фонових зображень." #: ../../WPrefs.app/Configurations.c:313 msgid "Titlebar Style" msgstr "Стиль шапки" #: ../../WPrefs.app/Configurations.c:351 msgid "Animations and Sound" msgstr "Анімація та Звук" #: ../../WPrefs.app/Configurations.c:357 msgid "Animations" msgstr "Анімація" #: ../../WPrefs.app/Configurations.c:368 msgid "" "Disable/enable animations such as those shown\n" "for window miniaturization, shading etc." msgstr "" "Заборонити/дозволити анімаційні ефекти типу анімації\n" "мінімізації вікна, стискання вікна в смужку і т.п." #: ../../WPrefs.app/Configurations.c:376 msgid "Superfluous" msgstr "Красивості" #: ../../WPrefs.app/Configurations.c:387 msgid "" "Disable/enable `superfluous' features and\n" "animations. These include the `ghosting' of the\n" "dock when it's being moved to another side and\n" "the explosion animation when undocking icons." msgstr "" "Заборонити/дозволити `фєнєчки' :) та додаткову\n" "анімацію. Це включає створення `привида' Доку\n" "при переміщенні його на іншу сторону робочого столу\n" "та `вибухову' анімацію виведення іконок з доку." #: ../../WPrefs.app/Configurations.c:397 msgid "Sounds" msgstr "Звуки" #: ../../WPrefs.app/Configurations.c:408 msgid "" "Disable/enable support for sound effects played\n" "for actions like shading and closing a window.\n" "You will need a module distributed separately\n" "for this. You can get it at:\n" "http://shadowmere.student.utwente.nl/" msgstr "" "Заборонити/дозволити підтримку звукових ефектів,\n" "супроводжуючих дії типу стискання та закриття вікна.\n" "Для цієї підтримки необхідний окремо встановлюваний\n" "модуль. Домашня сторінка цього модуля:\n" "http://shadowmere.student.utwente.nl/" #: ../../WPrefs.app/Configurations.c:419 msgid "" "Note: sound requires a module distributed\n" "separately" msgstr "Зауваження: озвучування потребує окремого модуля" #: ../../WPrefs.app/Configurations.c:429 msgid "Dithering colormap for 8bpp" msgstr "Дизерінг для режиму 256 кольорів (8bpp)" #: ../../WPrefs.app/Configurations.c:431 msgid "" "Number of colors to reserve for Window Maker\n" "on displays that support only 8bpp (PseudoColor)." msgstr "" "Кількість кольорів, що резервується для Window Maker\n" "в екранних режимах з 8 бітами на піксел (PseudoColor)." #: ../../WPrefs.app/Configurations.c:438 msgid "Disable dithering in any visual/depth" msgstr "Заборонити дизерінг в будь-яких режимах" #: ../../WPrefs.app/Configurations.c:459 msgid "" "More colors for\n" "applications" msgstr "" "Більше кольорів\n" "програмам" #: ../../WPrefs.app/Configurations.c:466 msgid "" "More colors for\n" "Window Maker" msgstr "" "Більше кольорів\n" "WindowMaker'у" #: ../../WPrefs.app/Configurations.c:521 msgid "Other Configurations" msgstr "Інші настройки" #: ../../WPrefs.app/Configurations.c:523 msgid "" "Animation speeds, titlebar styles, various option\n" "toggling and number of colors to reserve for\n" "Window Maker on 8bit displays." msgstr "" "Швидкість анімацій, стилі шапки вікна, різноманітні\n" "опції та кількість кольорів, що резервується для\n" "WindowMaker у 8бітних екранних режимах." #: ../../WPrefs.app/Expert.c:75 msgid "" "Disable miniwindows (icons for miniaturized windows). For use with KDE/GNOME." msgstr "" "Заборонити іконки для мінімізованих вікон. Для використання з KDE/GNOME." #: ../../WPrefs.app/Expert.c:76 msgid "Do not set non-WindowMaker specific parameters (do not use xset)." msgstr "Не встановлювати не-WindowMaker параметри (не використовувати xset)" #: ../../WPrefs.app/Expert.c:77 msgid "Automatically save session when exiting Window Maker." msgstr "Автоматично зберігати сеанс при виході з WindowMaker." #: ../../WPrefs.app/Expert.c:78 msgid "Use SaveUnder in window frames, icons, menus and other objects." msgstr "" "Використовувати SaveUnder для меж вікон, іконок, меню та інших об'єктів." #: ../../WPrefs.app/Expert.c:79 msgid "Use Windoze style cycling." msgstr "Використовувати перехід між вікнами в стилі Windows." #: ../../WPrefs.app/Expert.c:80 msgid "Disable confirmation panel for the Kill command." msgstr "Відключити панель підтвердження для команди `Вбити'" #: ../../WPrefs.app/Expert.c:81 msgid "Disable selection animation for selected icons." msgstr "Заборонити анімацію вибору для вибраних іконок." #: ../../WPrefs.app/Expert.c:115 msgid "Expert User Preferences" msgstr "Настройки вподобань для досвідченого користувача" #: ../../WPrefs.app/Expert.c:117 msgid "" "Options for people who know what they're doing...\n" "Also have some other misc. options." msgstr "" "Параметри для тих, хто знає, що робить ;)...\n" "Також опції, що не попали в інші категорії." #: ../../WPrefs.app/Focus.c:80 #, c-format msgid "bad option value %s for option FocusMode. Using default Manual" msgstr "неправильне значення %s для FocusMode. Використовуєм Manual" #: ../../WPrefs.app/Focus.c:94 #, c-format msgid "bad option value %s for option ColormapMode. Using default Auto" msgstr "неправильне значення %s для ColormapMode. Використовуєм Auto" #: ../../WPrefs.app/Focus.c:214 msgid "Input Focus Mode" msgstr "Режим фокусу вводу" #: ../../WPrefs.app/Focus.c:222 msgid "Manual: Click on the window to set keyboard input focus" msgstr "Ручний: Фокус вводу з клавіатури встановлюється кліком миші на вікні" #: ../../WPrefs.app/Focus.c:229 msgid "Auto: Set keyboard input focus to the window under the mouse pointer" msgstr "Автоматичний: Фокус вводу з клавіатури у вікна під указкою миші" #: ../../WPrefs.app/Focus.c:243 msgid "Install colormap in the window..." msgstr "Встановити colormap у вікні..." #: ../../WPrefs.app/Focus.c:248 msgid "...that has the input focus." msgstr "...що має фокус вводу." #: ../../WPrefs.app/Focus.c:253 msgid "...that is under the mouse pointer." msgstr "...під указкою миші." #: ../../WPrefs.app/Focus.c:262 msgid "Automatic Window Raise Delay" msgstr "Піднімати вікно через..." #: ../../WPrefs.app/Focus.c:319 ../../WPrefs.app/MouseSettings.c:601 msgid "msec" msgstr "" #: ../../WPrefs.app/Focus.c:336 msgid "" "Do not let applications receive\n" "the click used to focus windows." msgstr "" "Не передавати програмам клік\n" "установки фокуса." #: ../../WPrefs.app/Focus.c:342 msgid "" "Automatically focus new\n" "windows." msgstr "" "Робити нові вікна активними\n" "автоматично." #: ../../WPrefs.app/Focus.c:363 msgid "Window Focus Preferences" msgstr "Параметри фокусування вікна" #: ../../WPrefs.app/Focus.c:365 msgid "" "Keyboard focus switching policy, colormap switching\n" "policy for 8bpp displays and other related options." msgstr "" "Правила перемикання фокусу клавіатурного вводу,\n" "перемикання палітр для 8-бітних режимів." #: ../../WPrefs.app/Font.c:276 msgid "Could not locate font information file WPrefs.app/font.data" msgstr "" #: ../../WPrefs.app/Font.c:282 msgid "Could not read font information file WPrefs.app/font.data" msgstr "" #: ../../WPrefs.app/Font.c:293 msgid "" "Invalid data in font information file WPrefs.app/font.data.\n" "Encodings data not found." msgstr "" #: ../../WPrefs.app/Font.c:298 msgid "- Custom -" msgstr "" #: ../../WPrefs.app/Font.c:329 ../../WPrefs.app/Menu.c:1534 #: ../../WPrefs.app/MouseSettings.c:140 ../../WPrefs.app/MouseSettings.c:160 #: ../../WPrefs.app/TexturePanel.c:613 ../../WPrefs.app/TexturePanel.c:693 #: ../../WPrefs.app/Themes.c:96 ../../WPrefs.app/WPrefs.c:758 #: ../../WPrefs.app/WPrefs.c:763 ../../WPrefs.app/WPrefs.c:780 #: ../../WPrefs.app/WPrefs.c:790 ../../WPrefs.app/WPrefs.c:800 #: ../../WPrefs.app/WPrefs.c:838 ../../WPrefs.app/WPrefs.c:843 msgid "Error" msgstr "Помилка" #: ../../WPrefs.app/Font.c:329 ../../WPrefs.app/Menu.c:1534 #: ../../WPrefs.app/MouseSettings.c:142 ../../WPrefs.app/MouseSettings.c:162 #: ../../WPrefs.app/TexturePanel.c:614 ../../WPrefs.app/TexturePanel.c:695 #: ../../WPrefs.app/TexturePanel.c:1528 ../../WPrefs.app/Themes.c:98 #: ../../WPrefs.app/WPrefs.c:758 ../../WPrefs.app/WPrefs.c:763 #: ../../WPrefs.app/WPrefs.c:782 ../../WPrefs.app/WPrefs.c:794 #: ../../WPrefs.app/WPrefs.c:800 ../../WPrefs.app/WPrefs.c:807 #: ../../WPrefs.app/WPrefs.c:838 ../../WPrefs.app/WPrefs.c:843 #: ../../WPrefs.app/imagebrowser.c:105 msgid "OK" msgstr "" #: ../../WPrefs.app/Font.c:376 #, fuzzy msgid "Default Font Sets" msgstr "Умовчання" #: ../../WPrefs.app/Font.c:389 msgid "Font Set" msgstr "" #: ../../WPrefs.app/Font.c:418 msgid "Add..." msgstr "Додати" #: ../../WPrefs.app/Font.c:423 ../../WPrefs.app/Font.c:438 msgid "Change..." msgstr "Змінити" #: ../../WPrefs.app/Font.c:428 ../../WPrefs.app/Paths.c:288 #: ../../WPrefs.app/Paths.c:319 msgid "Remove" msgstr "Видалити" #: ../../WPrefs.app/Font.c:477 msgid "Font Preferences" msgstr "Настройки вподобань для шрифтів" #: ../../WPrefs.app/Font.c:478 msgid "Font Configurations for Windows, Menus etc" msgstr "Конфігурація шрифтів для вікон, меню і т.п." #: ../../WPrefs.app/Icons.c:180 msgid "Icon Positioning" msgstr "Розташування іконок" #: ../../WPrefs.app/Icons.c:227 msgid "Iconification Animation" msgstr "Анімація іконок" #: ../../WPrefs.app/Icons.c:238 msgid "Shrinking/Zooming" msgstr "Зменшення/Збільшення" #: ../../WPrefs.app/Icons.c:239 msgid "Spinning/Twisting" msgstr "Обертання/Кручення" #: ../../WPrefs.app/Icons.c:240 msgid "3D-flipping" msgstr "3D-обертання" #: ../../WPrefs.app/Icons.c:241 ../../WPrefs.app/MouseSettings.c:838 #: ../../WPrefs.app/MouseSettings.c:843 msgid "None" msgstr "Немає" #: ../../WPrefs.app/Icons.c:254 msgid "Auto-arrange icons" msgstr "Автоматично вирівнювати іконки" #: ../../WPrefs.app/Icons.c:256 msgid "Keep icons and miniwindows arranged all the time." msgstr "Завжди вирівнювати розташування іконок і мінівікон." #: ../../WPrefs.app/Icons.c:262 msgid "Omnipresent miniwindows" msgstr "Мінівікна присутні всюду" #: ../../WPrefs.app/Icons.c:264 msgid "Make miniwindows be present in all workspaces." msgstr "Робити мінівікна присутніми на всіх робочих столах." #: ../../WPrefs.app/Icons.c:273 msgid "Icon Size" msgstr "Розмір іконок" #: ../../WPrefs.app/Icons.c:275 msgid "The size of the dock/application icon and miniwindows" msgstr "Розмір іконок дока/програм і мінівікон" #: ../../WPrefs.app/Icons.c:345 msgid "Icon Preferences" msgstr "Настройки для іконок" #: ../../WPrefs.app/Icons.c:347 msgid "" "Icon/Miniwindow handling options. Icon positioning\n" "area, sizes of icons, miniaturization animation style." msgstr "" "Опції обробки іконок/мінівікон. Область розміщення\n" "іконок, розміри іконок, стиль анімування мінімізації." #: ../../WPrefs.app/KeyboardSettings.c:73 msgid "Initial Key Repeat" msgstr "" #: ../../WPrefs.app/KeyboardSettings.c:114 msgid "Key Repeat Rate" msgstr "" #: ../../WPrefs.app/KeyboardSettings.c:154 msgid "Type here to test" msgstr "Для тестування пишіть сюди" #: ../../WPrefs.app/KeyboardSettings.c:173 msgid "Keyboard Preferences" msgstr "Настройки для клавіатури" #: ../../WPrefs.app/KeyboardSettings.c:175 msgid "Not done" msgstr "Не зроблено" #: ../../WPrefs.app/KeyboardShortcuts.c:187 ../../WPrefs.app/Menu.c:327 #: ../../WPrefs.app/TexturePanel.c:1534 ../../WPrefs.app/imagebrowser.c:100 msgid "Cancel" msgstr "Відміна" #: ../../WPrefs.app/KeyboardShortcuts.c:188 msgid "Press the desired shortcut key(s) or click Cancel to stop capturing." msgstr "Натисніть клавішу(і) або ж кнопку Відміна для зупинки." #: ../../WPrefs.app/KeyboardShortcuts.c:208 #: ../../WPrefs.app/KeyboardShortcuts.c:458 ../../WPrefs.app/Menu.c:338 #: ../../WPrefs.app/Menu.c:782 msgid "Capture" msgstr "Захват" #: ../../WPrefs.app/KeyboardShortcuts.c:209 #: ../../WPrefs.app/KeyboardShortcuts.c:466 msgid "Click Capture to interactively define the shortcut key." msgstr "Натисніть Захват для інтерактивного задання прискорювача." #: ../../WPrefs.app/KeyboardShortcuts.c:364 msgid "Actions" msgstr "Дії" #: ../../WPrefs.app/KeyboardShortcuts.c:380 msgid "Open applications menu" msgstr "Відкрити меню програм" #: ../../WPrefs.app/KeyboardShortcuts.c:381 msgid "Open window list menu" msgstr "Відкрити список вікон" #: ../../WPrefs.app/KeyboardShortcuts.c:382 msgid "Open window commands menu" msgstr "Відкрити меню команд для вікна" #: ../../WPrefs.app/KeyboardShortcuts.c:383 msgid "Hide active application" msgstr "Сховати активну програму" #: ../../WPrefs.app/KeyboardShortcuts.c:384 msgid "Hide other applications" msgstr "Сховати інші програми" #: ../../WPrefs.app/KeyboardShortcuts.c:385 msgid "Miniaturize active window" msgstr "Мінімізувати активне вікно" #: ../../WPrefs.app/KeyboardShortcuts.c:386 msgid "Close active window" msgstr "Закрити активне вікно" #: ../../WPrefs.app/KeyboardShortcuts.c:387 msgid "Maximize active window" msgstr "Максимізувати активне вікно" #: ../../WPrefs.app/KeyboardShortcuts.c:388 msgid "Maximize active window vertically" msgstr "Максимізувати активне вікно по вертикалі" #: ../../WPrefs.app/KeyboardShortcuts.c:389 msgid "Maximize active window horizontally" msgstr "Максимізувати активне вікно по горизонталі" #: ../../WPrefs.app/KeyboardShortcuts.c:390 msgid "Raise active window" msgstr "Активне вікно - на передній план" #: ../../WPrefs.app/KeyboardShortcuts.c:391 msgid "Lower active window" msgstr "Активне вікно - на задній план" #: ../../WPrefs.app/KeyboardShortcuts.c:392 msgid "Raise/Lower window under mouse pointer" msgstr "Підняти/Втопити вікно под указкою миші" #: ../../WPrefs.app/KeyboardShortcuts.c:393 msgid "Shade active window" msgstr "Стиснути активне вікно" #: ../../WPrefs.app/KeyboardShortcuts.c:394 msgid "Move/Resize active window" msgstr "Перемістити/Змінити розмір активного вікна" #: ../../WPrefs.app/KeyboardShortcuts.c:395 msgid "Select active window" msgstr "Вибрати активне вікно" #: ../../WPrefs.app/KeyboardShortcuts.c:396 msgid "Focus next window" msgstr "Фокус - в наступне вікно" #: ../../WPrefs.app/KeyboardShortcuts.c:397 msgid "Focus previous window" msgstr "Фокус - в попереднє вікно" #: ../../WPrefs.app/KeyboardShortcuts.c:398 msgid "Switch to next workspace" msgstr "На наступний робочий стіл" #: ../../WPrefs.app/KeyboardShortcuts.c:399 msgid "Switch to previous workspace" msgstr "На попередній робочий стіл" #: ../../WPrefs.app/KeyboardShortcuts.c:400 msgid "Switch to next ten workspaces" msgstr "Наступні 10 робочих столів" #: ../../WPrefs.app/KeyboardShortcuts.c:401 msgid "Switch to previous ten workspaces" msgstr "Попередні 10 робочих столів" #: ../../WPrefs.app/KeyboardShortcuts.c:402 msgid "Switch to workspace 1" msgstr "На робочий стіл 1" #: ../../WPrefs.app/KeyboardShortcuts.c:403 msgid "Switch to workspace 2" msgstr "На робочий стіл 2" #: ../../WPrefs.app/KeyboardShortcuts.c:404 msgid "Switch to workspace 3" msgstr "На робочий стіл 3" #: ../../WPrefs.app/KeyboardShortcuts.c:405 msgid "Switch to workspace 4" msgstr "На робочий стіл 4" #: ../../WPrefs.app/KeyboardShortcuts.c:406 msgid "Switch to workspace 5" msgstr "На робочий стіл 5" #: ../../WPrefs.app/KeyboardShortcuts.c:407 msgid "Switch to workspace 6" msgstr "На робочий стіл 6" #: ../../WPrefs.app/KeyboardShortcuts.c:408 msgid "Switch to workspace 7" msgstr "На робочий стіл 7" #: ../../WPrefs.app/KeyboardShortcuts.c:409 msgid "Switch to workspace 8" msgstr "На робочий стіл 8" #: ../../WPrefs.app/KeyboardShortcuts.c:410 msgid "Switch to workspace 9" msgstr "На робочий стіл 9" #: ../../WPrefs.app/KeyboardShortcuts.c:411 msgid "Switch to workspace 10" msgstr "На робочий стіл 10" #: ../../WPrefs.app/KeyboardShortcuts.c:412 msgid "Shortcut for window 1" msgstr "Прискорювач для вікна 1" #: ../../WPrefs.app/KeyboardShortcuts.c:413 msgid "Shortcut for window 2" msgstr "Прискорювач для вікна 2" #: ../../WPrefs.app/KeyboardShortcuts.c:414 msgid "Shortcut for window 3" msgstr "Прискорювач для вікна 3" #: ../../WPrefs.app/KeyboardShortcuts.c:415 msgid "Shortcut for window 4" msgstr "Прискорювач для вікна 4" #: ../../WPrefs.app/KeyboardShortcuts.c:416 msgid "Shortcut for window 5" msgstr "Прискорювач для вікна 5" #: ../../WPrefs.app/KeyboardShortcuts.c:417 msgid "Shortcut for window 6" msgstr "Прискорювач для вікна 6" #: ../../WPrefs.app/KeyboardShortcuts.c:418 msgid "Shortcut for window 7" msgstr "Прискорювач для вікна 7" #: ../../WPrefs.app/KeyboardShortcuts.c:419 msgid "Shortcut for window 8" msgstr "Прискорювач для вікна 8" #: ../../WPrefs.app/KeyboardShortcuts.c:420 msgid "Shortcut for window 9" msgstr "Прискорювач для вікна 9" #: ../../WPrefs.app/KeyboardShortcuts.c:421 msgid "Shortcut for window 10" msgstr "Прискорювач для вікна 10" #: ../../WPrefs.app/KeyboardShortcuts.c:422 msgid "Switch to Next Screen/Monitor" msgstr "Перейти на наступний екран/монітор" #: ../../WPrefs.app/KeyboardShortcuts.c:423 msgid "Raise Clip" msgstr "\"Скріпку\" - наверх" #: ../../WPrefs.app/KeyboardShortcuts.c:424 msgid "Lower Clip" msgstr "\"Скріпку\" - під вікна" #: ../../WPrefs.app/KeyboardShortcuts.c:425 msgid "Raise/Lower Clip" msgstr "\"Скріпку\" - вверх/вниз" #: ../../WPrefs.app/KeyboardShortcuts.c:427 msgid "Toggle keyboard language" msgstr "Перемикання мови клавіатури" #: ../../WPrefs.app/KeyboardShortcuts.c:441 msgid "Shortcut" msgstr "Прискорювач" #: ../../WPrefs.app/KeyboardShortcuts.c:452 ../../WPrefs.app/Menu.c:788 msgid "Clear" msgstr "Очистити" #: ../../WPrefs.app/KeyboardShortcuts.c:514 msgid "Keyboard Shortcut Preferences" msgstr "Клавіатурні прискорювачі" #: ../../WPrefs.app/KeyboardShortcuts.c:516 msgid "" "Change the keyboard shortcuts for actions such\n" "as changing workspaces and opening menus." msgstr "" "Змінити клавіатурні прискорювачі для дій\n" "типу зміни робочих столів і відкриття меню." #: ../../WPrefs.app/Menu.c:477 msgid "New Items" msgstr "Нові пункти" #: ../../WPrefs.app/Menu.c:478 msgid "Sample Commands" msgstr "Зразки команд" #: ../../WPrefs.app/Menu.c:479 msgid "Sample Submenus" msgstr "Зразки підменю" #: ../../WPrefs.app/Menu.c:493 msgid "Run Program" msgstr "Запуск програми" #: ../../WPrefs.app/Menu.c:494 msgid "Internal Command" msgstr "Внутрішня команда" #: ../../WPrefs.app/Menu.c:495 msgid "Submenu" msgstr "Підменю" #: ../../WPrefs.app/Menu.c:496 msgid "External Submenu" msgstr "Зовнішнє підменю" #: ../../WPrefs.app/Menu.c:497 msgid "Generated Submenu" msgstr "Побудоване підменю" #: ../../WPrefs.app/Menu.c:498 msgid "Directory Contents" msgstr "Вміст каталогу" #: ../../WPrefs.app/Menu.c:499 msgid "Workspace Menu" msgstr "Меню робочих столів" #: ../../WPrefs.app/Menu.c:500 ../../WPrefs.app/MouseSettings.c:840 msgid "Window List Menu" msgstr "Меню списку вікон" #: ../../WPrefs.app/Menu.c:519 msgid "XTerm" msgstr "" #: ../../WPrefs.app/Menu.c:522 msgid "rxvt" msgstr "" #: ../../WPrefs.app/Menu.c:525 msgid "ETerm" msgstr "" #: ../../WPrefs.app/Menu.c:528 msgid "Run..." msgstr "" #: ../../WPrefs.app/Menu.c:529 msgid "%a(Run,Type command to run)" msgstr "%a(Запуск,Введіть команду для запуску)" #: ../../WPrefs.app/Menu.c:531 msgid "Netscape" msgstr "" #: ../../WPrefs.app/Menu.c:534 msgid "gimp" msgstr "" #: ../../WPrefs.app/Menu.c:537 msgid "epic" msgstr "" #: ../../WPrefs.app/Menu.c:540 msgid "ee" msgstr "" #: ../../WPrefs.app/Menu.c:543 msgid "xv" msgstr "" #: ../../WPrefs.app/Menu.c:546 msgid "Acrobat Reader" msgstr "" #: ../../WPrefs.app/Menu.c:549 msgid "ghostview" msgstr "" #: ../../WPrefs.app/Menu.c:552 ../../WPrefs.app/Menu.c:809 msgid "Exit Window Maker" msgstr "Вийти з WindowMaker" #: ../../WPrefs.app/Menu.c:575 msgid "Debian Menu" msgstr "" #: ../../WPrefs.app/Menu.c:578 msgid "RedHat Menu" msgstr "" #: ../../WPrefs.app/Menu.c:581 msgid "Menu Conectiva" msgstr "" #: ../../WPrefs.app/Menu.c:584 ../../WPrefs.app/Themes.c:250 msgid "Themes" msgstr "" #: ../../WPrefs.app/Menu.c:589 msgid "Bg Images (scale)" msgstr "" #: ../../WPrefs.app/Menu.c:594 msgid "Bg Images (tile)" msgstr "" #: ../../WPrefs.app/Menu.c:599 msgid "Assorted XTerms" msgstr "" #: ../../WPrefs.app/Menu.c:601 msgid "XTerm Yellow on Blue" msgstr "" #: ../../WPrefs.app/Menu.c:604 msgid "XTerm White on Black" msgstr "" #: ../../WPrefs.app/Menu.c:607 msgid "XTerm Black on White" msgstr "" #: ../../WPrefs.app/Menu.c:610 msgid "XTerm Black on Beige" msgstr "" #: ../../WPrefs.app/Menu.c:613 msgid "XTerm White on Green" msgstr "" #: ../../WPrefs.app/Menu.c:616 msgid "XTerm White on Olive" msgstr "" #: ../../WPrefs.app/Menu.c:619 msgid "XTerm Blue on Blue" msgstr "" #: ../../WPrefs.app/Menu.c:622 msgid "XTerm BIG FONTS" msgstr "" #: ../../WPrefs.app/Menu.c:644 msgid "Program to Run" msgstr "Запускаєтся програма:" #: ../../WPrefs.app/Menu.c:658 msgid "Run the program inside a Xterm" msgstr "" #: ../../WPrefs.app/Menu.c:668 msgid "Path for Menu" msgstr "Шлях для меню" #: ../../WPrefs.app/Menu.c:681 msgid "" "Enter the path for a file containing a menu\n" "or a list of directories with the programs you\n" "want to have listed in the menu. Ex:\n" "~/GNUstep/Library/WindowMaker/menu\n" "or\n" "/usr/X11R6/bin ~/xbin" msgstr "" "Введіть шлях до файлу меню чи список каталогів з\n" "програмами, які Ви хочете бачити в меню. Наприклад:\n" "~/GNUstep/Library/WindowMaker/menu\n" "чи\n" "/usr/X11R6/bin ~/xbin" #: ../../WPrefs.app/Menu.c:696 msgid "Command" msgstr "Команда" #: ../../WPrefs.app/Menu.c:710 msgid "" "Enter a command that outputs a menu\n" "definition to stdout when invoked." msgstr "" "Введіть команду, яка при запуску видає\n" "визначення меню в stdout." #: ../../WPrefs.app/Menu.c:721 msgid "Command to Open Files" msgstr "Відкривати файли програмою" #: ../../WPrefs.app/Menu.c:735 msgid "" "Enter the command you want to use to open the\n" "files in the directories listed below." msgstr "" "Введіть команду, якою Ви хочете відкривати файли\n" "в каталогах вказаних нижче." #: ../../WPrefs.app/Menu.c:744 msgid "Directories with Files" msgstr "Каталоги з файлами" #: ../../WPrefs.app/Menu.c:757 msgid "Strip extensions from file names" msgstr "Видаляти розширення імен файлів" #: ../../WPrefs.app/Menu.c:769 msgid "Keyboard Shortcut" msgstr "Клавіатурний прискорювач" #: ../../WPrefs.app/Menu.c:805 msgid "Arrange Icons" msgstr "Вирівняти іконки" #: ../../WPrefs.app/Menu.c:806 msgid "Hide All Windows Except For The Focused One" msgstr "Приховати всі вікна за виключенням зфокусованого" #: ../../WPrefs.app/Menu.c:807 msgid "Show All Windows" msgstr "Показати всі вікна" #: ../../WPrefs.app/Menu.c:810 msgid "Exit X Session" msgstr "Завершити X сеанс" #: ../../WPrefs.app/Menu.c:811 msgid "Restart Window Maker" msgstr "Перезапустити WindowMaker" #: ../../WPrefs.app/Menu.c:812 msgid "Start Another Window Manager : (" msgstr "Запустити інший менеджер вікон : (" #: ../../WPrefs.app/Menu.c:814 msgid "Save Current Session" msgstr "Зберегти поточний сеанс" #: ../../WPrefs.app/Menu.c:815 msgid "Clear Saved Session" msgstr "Очистити збережений сеанс" #: ../../WPrefs.app/Menu.c:816 msgid "Refresh Screen" msgstr "Оновити екран" #: ../../WPrefs.app/Menu.c:817 msgid "Open Info Panel" msgstr "Відкрити панель Інформація" #: ../../WPrefs.app/Menu.c:818 msgid "Open Copyright Panel" msgstr "Відкрити панель Copyright" #: ../../WPrefs.app/Menu.c:824 msgid "Window Manager to Start" msgstr "Запускати менеджер вікон:" #: ../../WPrefs.app/Menu.c:840 msgid "Do not confirm action." msgstr "Без підтвердження." #: ../../WPrefs.app/Menu.c:850 msgid "" "Instructions:\n" "\n" " - drag items from the left to the menu to add new items\n" " - drag items out of the menu to remove items\n" " - drag items in menu to change their position\n" " - drag items with Control pressed to copy them\n" " - double click in a menu item to change the label\n" " - click on a menu item to change related information" msgstr "" "Інструкції:\n" "\n" " - додати нові пункти - тягніть їх з тексту ліворуч до меню\n" " - витягнення пунктів з меню - видаляє ці пункти\n" " - переміщення мишою пунктів в меню - змінює їх позицію\n" " - переміщення з натиснутою Control - створює їх копію\n" " - подвійний клік на пункті меню - змінити його назву\n" " - одиночний клік - змінити пов'язані з цим пунктом дії" #: ../../WPrefs.app/Menu.c:1068 #, c-format msgid "unknown command '%s' in menu" msgstr "невідома команда '%s' в меню" #: ../../WPrefs.app/Menu.c:1100 msgid ": Execute Program" msgstr ": Запуск програми" #: ../../WPrefs.app/Menu.c:1104 msgid ": Perform Internal Command" msgstr ": Виконання внутрішньої команди" #: ../../WPrefs.app/Menu.c:1108 msgid ": Open a Submenu" msgstr ": Нове підменю" #: ../../WPrefs.app/Menu.c:1112 msgid ": Program Generated Submenu" msgstr ": Програмно побудоване підменю" #: ../../WPrefs.app/Menu.c:1116 msgid ": Directory Contents Menu" msgstr ": Меню вмісту каталога" #: ../../WPrefs.app/Menu.c:1120 msgid ": Open Workspaces Submenu" msgstr ": Відкриває підменю робочих столів" #: ../../WPrefs.app/Menu.c:1124 msgid ": Open Window List Submenu" msgstr ": Відкриває підменю списку вікон" #: ../../WPrefs.app/Menu.c:1344 msgid "Remove Submenu" msgstr "Видалити підменю" #: ../../WPrefs.app/Menu.c:1345 msgid "" "Removing this item will destroy all items inside\n" "the submenu. Do you really want to do that?" msgstr "" "Видалення цього пункту знищить всі пункти всередині\n" "підменю. Ви дійсно цього хочете?" #: ../../WPrefs.app/Menu.c:1347 msgid "Yes" msgstr "Так" #: ../../WPrefs.app/Menu.c:1347 msgid "No" msgstr "Ні" #: ../../WPrefs.app/Menu.c:1348 msgid "Yes, don't ask again." msgstr "Так - зараз і надалі." #. if there is a localized plmenu for the tongue put it's filename here #: ../../WPrefs.app/Menu.c:1515 ../../WPrefs.app/Menu.c:1522 #, c-format msgid "%s/Library/WindowMaker/plmenu" msgstr "%s/Library/WindowMaker/plmenu.uk" #: ../../WPrefs.app/Menu.c:1531 #, c-format msgid "Could not open default menu from '%s'" msgstr "не вдається відкрити стандартне меню '%s'" #: ../../WPrefs.app/Menu.c:1569 ../../WPrefs.app/WPrefs.c:807 msgid "Warning" msgstr "Попередження" #: ../../WPrefs.app/Menu.c:1570 msgid "" "The menu file format currently in use is not supported\n" "by this tool. Do you want to discard the current menu\n" "to use this tool?" msgstr "" "The menu file format currently in use is not supported\n" "by this tool. Do you want to discard the current menu\n" "to use this tool?" #: ../../WPrefs.app/Menu.c:1573 msgid "Yes, Discard and Update" msgstr "" #: ../../WPrefs.app/Menu.c:1574 msgid "No, Keep Current Menu" msgstr "Ні, залишити поточне меню" #: ../../WPrefs.app/Menu.c:1834 msgid "Applications Menu Definition" msgstr "Визначення меню програм" #: ../../WPrefs.app/Menu.c:1836 msgid "Edit the menu for launching applications." msgstr "Редагування меню запуску програм." #: ../../WPrefs.app/MenuPreferences.c:111 msgid "Menu Scrolling Speed" msgstr "Швидкість прокрутки меню" #: ../../WPrefs.app/MenuPreferences.c:160 msgid "Submenu Alignment" msgstr "Вирівнювання підменю" #: ../../WPrefs.app/MenuPreferences.c:204 msgid "" "Always open submenus inside the screen, instead of scrolling.\n" "Note: this is annoying." 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/MenuPreferences.c:231 msgid "" "Menu usability related options. Scrolling speed,\n" "alignment of submenus etc." msgstr "" "Опції, що стосуються меню. Щвидкість прокрутки,\n" "вирівнювання підменю і тому подібне." #: ../../WPrefs.app/MouseSettings.c:141 msgid "Invalid mouse acceleration value. Must be a positive real value." msgstr "Неправильне значення. Має бути додатнім числом." #: ../../WPrefs.app/MouseSettings.c:161 msgid "" "Invalid mouse acceleration threshold value. Must be the number of pixels to " "travel before accelerating." msgstr "" "Неправильне значення. Має бути числом пройдених пікселів до початку " "прискорення." #: ../../WPrefs.app/MouseSettings.c:262 ../../WPrefs.app/MouseSettings.c:274 #: ../../WPrefs.app/MouseSettings.c:286 ../../WPrefs.app/MouseSettings.c:298 #, c-format msgid "bad value %s for option %s" msgstr "неправильне значення %s для %s" #: ../../WPrefs.app/MouseSettings.c:357 #, c-format msgid "" "modifier key %s for option ModifierKey was not recognized. Using %s as " "default" msgstr "модифікатор %s для опції ModifierKey нерозпізнаний. За умовчанням - %s" #: ../../WPrefs.app/MouseSettings.c:382 msgid "could not retrieve keyboard modifier mapping" msgstr "не вдається добути карту модифікаторів" #: ../../WPrefs.app/MouseSettings.c:477 msgid "Mouse Speed" msgstr "Швидкість миші" #: ../../WPrefs.app/MouseSettings.c:507 msgid "Acceler.:" msgstr "Прискор.:" #: ../../WPrefs.app/MouseSettings.c:520 msgid "Threshold:" msgstr "Поріг:" #: ../../WPrefs.app/MouseSettings.c:535 msgid "Double-Click Delay" msgstr "Таймаут подвійного кліку" #: ../../WPrefs.app/MouseSettings.c:579 msgid "Test" msgstr "Тест" #: ../../WPrefs.app/MouseSettings.c:609 msgid "Workspace Mouse Actions" msgstr "Дії миші на десктопі" #: ../../WPrefs.app/MouseSettings.c:614 msgid "Disable mouse actions" msgstr "Відмінити дії миші" #: ../../WPrefs.app/MouseSettings.c:620 msgid "Left Button" msgstr "Ліва кнопка" #: ../../WPrefs.app/MouseSettings.c:630 msgid "Middle Button" msgstr "Середня кнопка" #: ../../WPrefs.app/MouseSettings.c:640 msgid "Right Button" msgstr "Права кнопка" #: ../../WPrefs.app/MouseSettings.c:650 msgid "Mouse Wheel" msgstr "Коліщатко" #: ../../WPrefs.app/MouseSettings.c:672 msgid "Mouse Grab Modifier" msgstr "Модифікатор захвату миші" #: ../../WPrefs.app/MouseSettings.c:674 msgid "" "Keyboard modifier to use for actions that\n" "involve dragging windows with the mouse,\n" "clicking inside the window." msgstr "" "Модифікатор для використання з діями,\n" "що включають буксування вікон мишою,\n" "кліки миші всередині вікна." #: ../../WPrefs.app/MouseSettings.c:708 #, c-format msgid "could not create %s" msgstr "не вдається створити %s" #: ../../WPrefs.app/MouseSettings.c:724 #, c-format msgid "could not create temporary file %s" msgstr "не вдається створити тимчасовий файл %s" #: ../../WPrefs.app/MouseSettings.c:756 #, c-format msgid "could not rename file %s to %s\n" msgstr "не вдається перейменувати %s в %s\n" #: ../../WPrefs.app/MouseSettings.c:829 msgid "Shift" msgstr "" #: ../../WPrefs.app/MouseSettings.c:830 msgid "Lock" msgstr "" #: ../../WPrefs.app/MouseSettings.c:831 msgid "Control" msgstr "" #: ../../WPrefs.app/MouseSettings.c:832 msgid "Mod1" msgstr "" #: ../../WPrefs.app/MouseSettings.c:833 msgid "Mod2" msgstr "" #: ../../WPrefs.app/MouseSettings.c:834 msgid "Mod3" msgstr "" #: ../../WPrefs.app/MouseSettings.c:835 msgid "Mod4" msgstr "" #: ../../WPrefs.app/MouseSettings.c:836 msgid "Mod5" msgstr "" #: ../../WPrefs.app/MouseSettings.c:839 msgid "Applications Menu" msgstr "Меню програм" #: ../../WPrefs.app/MouseSettings.c:841 msgid "Select Windows" msgstr "Вибір вікон" #: ../../WPrefs.app/MouseSettings.c:844 msgid "Switch Workspaces" msgstr "Перехід між столами" #: ../../WPrefs.app/MouseSettings.c:849 msgid "Mouse Preferences" msgstr "Настройки вподобань для миші" #: ../../WPrefs.app/MouseSettings.c:851 msgid "" "Mouse speed/acceleration, double click delay,\n" "mouse button bindings etc." msgstr "" "Швидкість/прискорення миші, таймаут подвійного кліку,\n" "прив'язки кнопок миші і т.п." #: ../../WPrefs.app/Paths.c:84 msgid "bad value in option IconPath. Using default path list" msgstr "неправильне значення в IconPath. Використовуємо шляхи за умовчанням" #: ../../WPrefs.app/Paths.c:101 msgid "bad value in option PixmapPath. Using default path list" msgstr "неправильне значення в PixmapPath. Використовуємо шляхи за умовчанням" #: ../../WPrefs.app/Paths.c:149 msgid "Select directory" msgstr "Вкажіть каталог" #: ../../WPrefs.app/Paths.c:270 msgid "Icon Search Paths" msgstr "Шляхи пошуку іконок" #: ../../WPrefs.app/Paths.c:281 ../../WPrefs.app/Paths.c:312 #: ../../WPrefs.app/TexturePanel.c:1310 msgid "Add" msgstr "Додати" #: ../../WPrefs.app/Paths.c:301 msgid "Pixmap Search Paths" msgstr "Шляхи пошуку піктограм" #: ../../WPrefs.app/Paths.c:341 msgid "Search Path Configuration" msgstr "Конфігурація шляхів пошуку" #: ../../WPrefs.app/Paths.c:343 msgid "" "Search paths to use when looking for pixmaps\n" "and icons." msgstr "Шляхи пошуку для піктограм та іконок." #: ../../WPrefs.app/Preferences.c:75 msgid "OFF" msgstr "" #: ../../WPrefs.app/Preferences.c:77 msgid "1 pixel" msgstr "1 піксел" #. 2-4 #: ../../WPrefs.app/Preferences.c:80 #, c-format msgid "%i pixels" msgstr "%i піксели" #. >4 #: ../../WPrefs.app/Preferences.c:83 #, c-format msgid "%i pixels " msgstr "%i пікселів " #: ../../WPrefs.app/Preferences.c:229 msgid "Size Display" msgstr "Показ розміру" #: ../../WPrefs.app/Preferences.c:231 msgid "" "The position or style of the window size\n" "display that's shown when a window is resized." msgstr "" "Позиція чи стиль показу розміру вікна\n" "в процесі зміни його розміру." #: ../../WPrefs.app/Preferences.c:238 ../../WPrefs.app/Preferences.c:259 msgid "Corner of screen" msgstr "Кут екрану" #: ../../WPrefs.app/Preferences.c:239 ../../WPrefs.app/Preferences.c:260 msgid "Center of screen" msgstr "Центр екрану" #: ../../WPrefs.app/Preferences.c:240 ../../WPrefs.app/Preferences.c:261 msgid "Center of resized window" msgstr "Центр вікна" #: ../../WPrefs.app/Preferences.c:241 msgid "Technical drawing-like" msgstr "Як на кресленнях" #: ../../WPrefs.app/Preferences.c:242 ../../WPrefs.app/Preferences.c:262 msgid "Disabled" msgstr "Не показувати" #: ../../WPrefs.app/Preferences.c:250 msgid "Position Display" msgstr "Показ позиції" #: ../../WPrefs.app/Preferences.c:252 msgid "" "The position or style of the window position\n" "display that's shown when a window is moved." msgstr "" "Позиція чи стиль показу позиції вікна\n" "в процесі його переміщення." #: ../../WPrefs.app/Preferences.c:270 msgid "Show balloon text for..." msgstr "Показувати підказку для..." #: ../../WPrefs.app/Preferences.c:277 msgid "incomplete window titles" msgstr "неповних заголовків вікон" #: ../../WPrefs.app/Preferences.c:278 msgid "miniwindow titles" msgstr "заголовків мінівікон" #: ../../WPrefs.app/Preferences.c:279 msgid "application/dock icons" msgstr "іконок програм/Доку" #: ../../WPrefs.app/Preferences.c:280 msgid "internal help" msgstr "внутрішньої допомоги" #: ../../WPrefs.app/Preferences.c:292 msgid "" "Raise window when switching\n" "focus with keyboard." msgstr "" "Вікно наверх при перемиканні\n" "фокусу з клавіатури." #: ../../WPrefs.app/Preferences.c:298 msgid "" "Enable keyboard language\n" "switch button in window titlebars." msgstr "" "Кнопка перемикання мови\n" "клавіатури в шапках вікон." #: ../../WPrefs.app/Preferences.c:307 msgid "Workspace border" msgstr "Бордюр робочого столу" #: ../../WPrefs.app/Preferences.c:323 msgid "Left/Right" msgstr "Лівий/Правий" #: ../../WPrefs.app/Preferences.c:328 msgid "Top/Bottom" msgstr "Зверху/Знизу" #: ../../WPrefs.app/Preferences.c:349 msgid "Miscellaneous Ergonomic Preferences" msgstr "Різні настройки ергономіки" #: ../../WPrefs.app/Preferences.c:350 msgid "" "Various settings like balloon text, geometry\n" "displays etc." msgstr "" "Різні настройки типу вмикання `кульок' з підказками,\n" "показу геометрії і т.п." #: ../../WPrefs.app/TexturePanel.c:323 msgid "Saturation" msgstr "Насиченість" #: ../../WPrefs.app/TexturePanel.c:325 msgid "Brightness" msgstr "Яскравість" #: ../../WPrefs.app/TexturePanel.c:373 ../../WPrefs.app/TexturePanel.c:380 msgid "Hue" msgstr "Відтінок" #: ../../WPrefs.app/TexturePanel.c:610 msgid "Could not load the selected file: " msgstr "Не вдається завантажити файл:" #: ../../WPrefs.app/TexturePanel.c:664 msgid "Open Image" msgstr "Відкрити зображення" #: ../../WPrefs.app/TexturePanel.c:694 msgid "The selected file does not contain a supported image." msgstr "Цей файл не містить зображення в підтримуваному форматі." #: ../../WPrefs.app/TexturePanel.c:945 #, c-format msgid "could not load file '%s': %s" msgstr "не вдається завантажити файл '%s': %s" #: ../../WPrefs.app/TexturePanel.c:1064 #, c-format msgid "error creating texture %s" msgstr "помилка створення текстури %s" #: ../../WPrefs.app/TexturePanel.c:1254 msgid "Texture Panel" msgstr "Панель створення текстури" #: ../../WPrefs.app/TexturePanel.c:1262 msgid "Texture Name" msgstr "Назва текстури" #: ../../WPrefs.app/TexturePanel.c:1274 msgid "Solid Color" msgstr "Суцільний колір" #: ../../WPrefs.app/TexturePanel.c:1275 msgid "Gradient Texture" msgstr "Градієнт" #: ../../WPrefs.app/TexturePanel.c:1276 msgid "Simple Gradient Texture" msgstr "Простий градієнт" #: ../../WPrefs.app/TexturePanel.c:1277 msgid "Textured Gradient" msgstr "Текстурований градієнт" #: ../../WPrefs.app/TexturePanel.c:1278 msgid "Image Texture" msgstr "Текстура-зображення" #: ../../WPrefs.app/TexturePanel.c:1286 msgid "Default Color" msgstr "Умовчання" #: ../../WPrefs.app/TexturePanel.c:1298 msgid "Gradient Colors" msgstr "Кольори градієнту" #: ../../WPrefs.app/TexturePanel.c:1394 msgid "Direction" msgstr "Напрямок" #: ../../WPrefs.app/TexturePanel.c:1422 msgid "Gradient" msgstr "Градієнт" #: ../../WPrefs.app/TexturePanel.c:1440 msgid "Gradient Opacity" msgstr "Прозорість градієнту" #: ../../WPrefs.app/TexturePanel.c:1483 msgid "Image" msgstr "Зображення" #: ../../WPrefs.app/TexturePanel.c:1515 msgid "Tile" msgstr "Черепицею" #: ../../WPrefs.app/TexturePanel.c:1516 msgid "Scale" msgstr "Розтяжка" #: ../../WPrefs.app/TexturePanel.c:1518 msgid "Maximize" 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:203 #: ../../WPrefs.app/Themes.c:223 msgid "Download" msgstr "" #: ../../WPrefs.app/Themes.c:171 msgid "Save Current Theme" msgstr "" #: ../../WPrefs.app/Themes.c:180 msgid "Load" msgstr "" #: ../../WPrefs.app/Themes.c:185 msgid "Install" msgstr "" #: ../../WPrefs.app/Themes.c:193 msgid "Tile of The Day" msgstr "" #: ../../WPrefs.app/Themes.c:213 msgid "Bar of The Day" msgstr "" #: ../../WPrefs.app/WPrefs.c:260 msgid "Window Maker Preferences" msgstr "Настройки вподобань для Window Maker" #: ../../WPrefs.app/WPrefs.c:284 msgid "Revert Page" msgstr "Повернути сторінку" #: ../../WPrefs.app/WPrefs.c:290 msgid "Revert All" msgstr "Повернути все" #: ../../WPrefs.app/WPrefs.c:296 msgid "Save" msgstr "Зберегти" #: ../../WPrefs.app/WPrefs.c:309 msgid "Balloon Help" msgstr "Підказка в кульці" #: ../../WPrefs.app/WPrefs.c:334 msgid "Window Maker Preferences Utility" msgstr "Утиліта настройки Window Maker" #: ../../WPrefs.app/WPrefs.c:341 #, c-format msgid "Version %s for Window Maker %s or newer" msgstr "Версія %s для Window Maker %s чи новішого" #: ../../WPrefs.app/WPrefs.c:349 msgid "Starting..." msgstr "Стартую..." #: ../../WPrefs.app/WPrefs.c:355 msgid "" "Programming/Design: Alfredo K. Kojima\n" "Artwork: Marco van Hylckama Vlieg, Largo et al\n" "More Programming: James Thompson et al" msgstr "" "Програмування/дизайн: Alfredo K. Kojima\n" "Оформлення: Marco van Hylckama Vlieg, Largo та інші\n" "Програмування також: James Thomson та інші" #: ../../WPrefs.app/WPrefs.c:455 #, c-format msgid "could not locate image file %s\n" msgstr "не вдається знайти файл із зображенням %s\n" #: ../../WPrefs.app/WPrefs.c:670 #, c-format msgid "could not load image file %s:%s" msgstr "не вдається завантажити файл зображення %s:%s" #: ../../WPrefs.app/WPrefs.c:689 msgid "Loading Window Maker configuration files..." msgstr "Завантажую файли конфігурації Window Maker..." #: ../../WPrefs.app/WPrefs.c:693 msgid "Initializing configuration panels..." msgstr "Ініціалізую конфігураційні панелі..." #: ../../WPrefs.app/WPrefs.c:727 msgid "" "WPrefs is free software and is distributed WITHOUT ANY\n" "WARRANTY under the terms of the GNU General Public License." msgstr "" "WPrefs є вільним програмним забезпеченням і розповсюджується\n" "БЕЗ БУДЬ-ЯКОЇ ГАРАНТІЇ за умовами GNU General Public License." #: ../../WPrefs.app/WPrefs.c:757 ../../WPrefs.app/WPrefs.c:837 #, c-format msgid "Window Maker domain (%s) is corrupted!" msgstr "Домен Window Maker (%s) зіпсований!" #: ../../WPrefs.app/WPrefs.c:761 #, c-format msgid "Could not load Window Maker domain (%s) from defaults database." msgstr "Не вдається завантажити домен Window Maker (%s) з бази даних умовчань." #: ../../WPrefs.app/WPrefs.c:777 msgid "could not extract version information from Window Maker" msgstr "не вдається отримати номер версії Window Maker" #: ../../WPrefs.app/WPrefs.c:778 msgid "Make sure wmaker is in your search path." msgstr "Впевніться, що wmaker є в шляху пошуку." #: ../../WPrefs.app/WPrefs.c:781 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:791 msgid "" "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." msgstr "" "Не можу отримати версію Window Maker. Впевніться, що він встановлений " "коректно і шлях до його виконуваного файлу є в PATH." #: ../../WPrefs.app/WPrefs.c:798 #, 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:805 #, 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:818 #, c-format msgid "could not run \"%s --global_defaults_path\"." msgstr "не вдається запустити \"%s --global_defaults_path\"." #: ../../WPrefs.app/WPrefs.c:841 #, c-format msgid "Could not load global Window Maker domain (%s)." msgstr "Не вдається завантажити глобальний домен Window Maker (%s)." #: ../../WPrefs.app/WPrefs.c:1090 #, c-format msgid "" "bad speed value for option %s\n" ". Using default Medium" msgstr "" "неправильне значення швидкості для %s\n" ". Використовуєм за умовчанням Середня" #: ../../WPrefs.app/WindowHandling.c:141 #, c-format msgid "bad option value %s in WindowPlacement. Using default value" msgstr "" "неправильне значення %s в опції WindowPlacement. Використовується умовчання" #: ../../WPrefs.app/WindowHandling.c:163 msgid "invalid data in option WindowPlaceOrigin. Using default (0,0)" msgstr "" "неправильні дані в опції WindowPlaceOrigin. Використовується умовчання (0,0)" #: ../../WPrefs.app/WindowHandling.c:243 msgid "Window Placement" msgstr "Розміщення вікон" #: ../../WPrefs.app/WindowHandling.c:244 msgid "" "How to place windows when they are first put\n" "on screen." msgstr "Як розміщувати вікна при їх початковій появі на екрані." #: ../../WPrefs.app/WindowHandling.c:250 msgid "Automatic" msgstr "Автоматичне" #: ../../WPrefs.app/WindowHandling.c:251 msgid "Random" msgstr "Випадкове" #: ../../WPrefs.app/WindowHandling.c:252 msgid "Manual" msgstr "Вручну" #: ../../WPrefs.app/WindowHandling.c:253 msgid "Cascade" msgstr "Каскадом" #: ../../WPrefs.app/WindowHandling.c:254 msgid "Smart" msgstr "\"Розумне\"" #: ../../WPrefs.app/WindowHandling.c:260 msgid "Placement Origin" msgstr "Початкове положення" #: ../../WPrefs.app/WindowHandling.c:321 msgid "Opaque Move" msgstr "Прозорість руху" #: ../../WPrefs.app/WindowHandling.c:322 msgid "" "Whether the window contents should be moved\n" "when dragging windows aroung or if only a\n" "frame should be displayed.\n" msgstr "" "Переміщати вміст вікна при буксуванні\n" "вікон чи показувати тільки рамку.\n" #: ../../WPrefs.app/WindowHandling.c:361 msgid "When maximizing..." msgstr "При максимізації..." #: ../../WPrefs.app/WindowHandling.c:366 msgid "...do not cover icons" msgstr "...не покривати іконки" #: ../../WPrefs.app/WindowHandling.c:372 msgid "...do not cover dock" msgstr "...не покривати Док" #: ../../WPrefs.app/WindowHandling.c:381 msgid "Edge Resistance" msgstr "Опір країв" #: ../../WPrefs.app/WindowHandling.c:383 msgid "" "Edge resistance will make windows `resist'\n" "being moved further for the defined threshold\n" "when moved against other windows or the edges\n" "of the screen." msgstr "" "Це включає `опір' вікон переміщенню\n" "за певний поріг при переміщенні поверх\n" "інших вікон чи за межі екрану." #: ../../WPrefs.app/WindowHandling.c:402 msgid "Resist" msgstr "Опір" #: ../../WPrefs.app/WindowHandling.c:407 msgid "Attract" msgstr "Притяг" #: ../../WPrefs.app/WindowHandling.c:423 msgid "" "Open dialogs in same workspace\n" "as their owners" msgstr "" "Відкривати діалоги на одному робочому столі з їх \"батьківським\" вікном" #: ../../WPrefs.app/WindowHandling.c:450 msgid "Window Handling Preferences" msgstr "Настройки вподобань роботи з вікнами" #: ../../WPrefs.app/WindowHandling.c:452 msgid "" "Window handling options. Initial placement style\n" "edge resistance, opaque move etc." msgstr "" "Опції роботи з вікнами. Стиль початкового розміщення,\n" "опір країв, прозорість переміщення і тому подібне." #: ../../WPrefs.app/Workspace.c:176 msgid "Workspace Navigation" msgstr "Навігація по робочим столам" #: ../../WPrefs.app/Workspace.c:183 msgid "" "wrap to the first workspace after the\n" "last workspace." msgstr "" "переходити на перший робочий стіл при\n" "перемиканні за останній." #: ../../WPrefs.app/Workspace.c:205 msgid "switch workspaces while dragging windows." msgstr "" "перемикати робочі столи при перетягуванні\n" "між ними вікон." #: ../../WPrefs.app/Workspace.c:227 msgid "automatically create new workspaces." msgstr "автоматично створювати нові робочі столи." #: ../../WPrefs.app/Workspace.c:250 msgid "" "Position of workspace\n" "name display" msgstr "" "Позиція показу назви\n" "робочого столу" #: ../../WPrefs.app/Workspace.c:269 msgid "Disable" msgstr "Не показувати" #: ../../WPrefs.app/Workspace.c:271 msgid "Top" msgstr "Зверху" #: ../../WPrefs.app/Workspace.c:272 msgid "Bottom" msgstr "Знизу" #: ../../WPrefs.app/Workspace.c:273 msgid "Top/Left" msgstr "Зверху/Ліворуч" #: ../../WPrefs.app/Workspace.c:274 msgid "Top/Right" msgstr "Зверху/Праворуч" #: ../../WPrefs.app/Workspace.c:275 msgid "Bottom/Left" msgstr "Знизу/Ліворуч" #: ../../WPrefs.app/Workspace.c:276 msgid "Bottom/Right" msgstr "Зниз/уПраворуч" #: ../../WPrefs.app/Workspace.c:284 msgid "Dock/Clip" msgstr "Док/Скріпка" #: ../../WPrefs.app/Workspace.c:303 msgid "" "Disable/enable the application Dock (the\n" "vertical icon bar in the side of the screen)." msgstr "" "Заборонити/дозволити Док для програм\n" "(вертикальна смужка іконок збоку екрану)." #: ../../WPrefs.app/Workspace.c:324 msgid "" "Disable/enable the Clip (that thing with\n" "a paper clip icon)." msgstr "" "Заборонити/дозволити Скріпку (квадратик з іконкою\n" "скріпки для паперів ;)." #: ../../WPrefs.app/Workspace.c:364 msgid "Workspace Preferences" msgstr "Настройки вподобань для робочого столу" #: ../../WPrefs.app/Workspace.c:366 msgid "" "Workspace navigation features.\n" "You can also enable/disable the Dock and Clip here." msgstr "" "Навігація по робочим столам.\n" "Тут також можна дозволити/заборонити Док та Скріпку." #: ../../WPrefs.app/imagebrowser.c:95 msgid "View" msgstr "" #: ../../WPrefs.app/main.c:59 #, c-format msgid "usage: %s [options]\n" msgstr "Запуск: %s [параметри]\n" #: ../../WPrefs.app/main.c:60 msgid "options:" msgstr "параметри:" #: ../../WPrefs.app/main.c:61 msgid " -display <display>\tdisplay to be used" msgstr " -display <дисплей>\tX дисплей для використання" #: ../../WPrefs.app/main.c:62 msgid " --version\t\tprint version number and exit" msgstr " --version\t\tпоказати номер версії та вийти" #: ../../WPrefs.app/main.c:63 msgid " --help\t\tprint this message and exit" msgstr " --help\t\tпоказати це повідомлення та вийти" #: ../../WPrefs.app/main.c:122 #, c-format msgid "too few arguments for %s" msgstr "надто мало аргументів для %s" #: ../../WPrefs.app/main.c:141 msgid "X server does not support locale" msgstr "X сервер не підтримує locale" #: ../../WPrefs.app/main.c:144 msgid "cannot set locale modifiers" msgstr "не вдається встановити модифікатори локалізації" #: ../../WPrefs.app/main.c:150 #, c-format msgid "could not open display %s" msgstr "не вдається відкрити дисплей %s" #: ../../WPrefs.app/main.c:158 msgid "could not initialize application" msgstr "не вдається ініціалізувати програму" ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/po/zh_TW.po�����������������������������������������������������������0000644�0001750�0001750�00000172775�13431646201�015007� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# WPrefs PO file for Traditional Chinese. # Copyright (C) 1999 Free Software Foundation, Inc. # Li Wei Jih <lwj83@cs.ccu.edu.tw>, 1999, 2005. # msgid "" msgstr "" "Project-Id-Version: Window Maker-0.91.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2005-01-10 10:51+0800\n" "PO-Revision-Date: 2005-01-11 17:46+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=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" #: ../../WPrefs.app/Appearance.c:1154 msgid "Select File" msgstr "選取檔案" #: ../../WPrefs.app/Appearance.c:1555 msgid "Focused Window" msgstr "焦點視窗" #: ../../WPrefs.app/Appearance.c:1560 msgid "Unfocused Window" msgstr "非焦點視窗" #: ../../WPrefs.app/Appearance.c:1565 msgid "Owner of Focused Window" msgstr "焦點視窗擁有者" #: ../../WPrefs.app/Appearance.c:1570 ../../WPrefs.app/Appearance.c:1893 msgid "Menu Title" msgstr "選單標題" #: ../../WPrefs.app/Appearance.c:1575 ../../WPrefs.app/Appearance.c:1578 msgid "Normal Item" msgstr "正常項目" #: ../../WPrefs.app/Appearance.c:1583 msgid "Disabled Item" msgstr "失效項目" #: ../../WPrefs.app/Appearance.c:1595 msgid "Highlighted" msgstr "加強標示" #: ../../WPrefs.app/Appearance.c:1786 msgid "Texture" msgstr "材質" #: ../../WPrefs.app/Appearance.c:1794 msgid "Titlebar of Focused Window" msgstr "焦點視窗標題列" #: ../../WPrefs.app/Appearance.c:1795 msgid "Titlebar of Unfocused Windows" msgstr "非焦點視窗標題列" #: ../../WPrefs.app/Appearance.c:1796 msgid "Titlebar of Focused Window's Owner" msgstr "焦點視窗擁有者標題列" #: ../../WPrefs.app/Appearance.c:1797 msgid "Window Resizebar" msgstr "視窗大小變更列" #: ../../WPrefs.app/Appearance.c:1798 msgid "Titlebar of Menus" msgstr "選單標題列" #: ../../WPrefs.app/Appearance.c:1799 msgid "Menu Items" msgstr "選單項目" #: ../../WPrefs.app/Appearance.c:1800 msgid "Icon Background" msgstr "圖示背景" #: ../../WPrefs.app/Appearance.c:1815 msgid "" "Double click in the texture you want to use\n" "for the selected item." msgstr "在你要用於選取項目的材質點兩下。" #: ../../WPrefs.app/Appearance.c:1829 msgid "New" msgstr "新增" #: ../../WPrefs.app/Appearance.c:1833 msgid "Create a new texture." msgstr "建立新材質。" #: ../../WPrefs.app/Appearance.c:1841 msgid "Extract..." msgstr "提取..." #: ../../WPrefs.app/Appearance.c:1845 msgid "Extract texture(s) from a theme or a style file." msgstr "從主題或風格檔案提取材質。" #: ../../WPrefs.app/Appearance.c:1855 msgid "Edit" msgstr "編輯" #: ../../WPrefs.app/Appearance.c:1858 msgid "Edit the highlighted texture." msgstr "編輯加強標示的材質。" #: ../../WPrefs.app/Appearance.c:1866 ../../WPrefs.app/TexturePanel.c:1318 msgid "Delete" msgstr "刪除" #: ../../WPrefs.app/Appearance.c:1870 msgid "Delete the highlighted texture." msgstr "編輯加強標示的材質。" #: ../../WPrefs.app/Appearance.c:1883 msgid "Color" msgstr "色彩" #: ../../WPrefs.app/Appearance.c:1890 msgid "Focused Window Title" msgstr "焦點視窗標題列" #: ../../WPrefs.app/Appearance.c:1891 msgid "Unfocused Window Title" msgstr "非焦點視窗標題列" #: ../../WPrefs.app/Appearance.c:1892 msgid "Owner of Focused Window Title" msgstr "焦點視窗標題擁有者" #: ../../WPrefs.app/Appearance.c:1894 msgid "Menu Item Text" msgstr "選單項目文字" #: ../../WPrefs.app/Appearance.c:1895 msgid "Disabled Menu Item Text" msgstr "失效的選單項目文字" #: ../../WPrefs.app/Appearance.c:1896 msgid "Menu Highlight Color" msgstr "選單加強標示色彩" #: ../../WPrefs.app/Appearance.c:1897 msgid "Highlighted Menu Text Color" msgstr "加強標示的選單文字色彩" #: ../../WPrefs.app/Appearance.c:1936 msgid "Background" msgstr "背景" #: ../../WPrefs.app/Appearance.c:1948 ../../WPrefs.app/TexturePanel.c:1504 msgid "Browse..." msgstr "瀏覽..." #: ../../WPrefs.app/Appearance.c:1961 msgid "Options" msgstr "選項" #: ../../WPrefs.app/Appearance.c:1968 msgid "Menu Style" msgstr "選單風格" #: ../../WPrefs.app/Appearance.c:1996 ../../WPrefs.app/Configurations.c:241 #: ../../WPrefs.app/Configurations.c:253 ../../WPrefs.app/Focus.c:288 #: ../../WPrefs.app/Focus.c:299 ../../WPrefs.app/MenuPreferences.c:134 #: ../../WPrefs.app/MenuPreferences.c:145 #: ../../WPrefs.app/MenuPreferences.c:173 #: ../../WPrefs.app/MenuPreferences.c:188 ../../WPrefs.app/MouseSettings.c:560 #: ../../WPrefs.app/MouseSettings.c:571 ../../WPrefs.app/WPrefs.c:546 #: ../../WPrefs.app/WPrefs.c:571 #, c-format msgid "could not load icon file %s" msgstr "無法載入圖示檔 %s" #: ../../WPrefs.app/Appearance.c:2010 msgid "Title Alignment" msgstr "標題對齊" #: ../../WPrefs.app/Appearance.c:2017 msgid "Left" msgstr "靠左" #: ../../WPrefs.app/Appearance.c:2020 ../../WPrefs.app/TexturePanel.c:1518 #: ../../WPrefs.app/Workspace.c:270 msgid "Center" msgstr "置中" #: ../../WPrefs.app/Appearance.c:2023 msgid "Right" msgstr "靠右" #: ../../WPrefs.app/Appearance.c:2247 msgid "Appearance Preferences" msgstr "外觀設定" #: ../../WPrefs.app/Appearance.c:2249 msgid "" "Background texture configuration for windows,\n" "menus and icons." msgstr "" "視窗、選單與圖示的背景材質設定。" #: ../../WPrefs.app/Appearance.c:2294 msgid "Extract Texture" msgstr "提取材質" #: ../../WPrefs.app/Appearance.c:2314 msgid "Textures" msgstr "材質" #: ../../WPrefs.app/Appearance.c:2325 ../../WPrefs.app/WPrefs.c:301 msgid "Close" msgstr "關閉" #: ../../WPrefs.app/Appearance.c:2330 msgid "Extract" msgstr "提取" #: ../../WPrefs.app/Configurations.c:150 ../../WPrefs.app/Configurations.c:156 #: ../../WPrefs.app/MouseSettings.c:490 ../../WPrefs.app/WindowHandling.c:339 #: ../../WPrefs.app/WindowHandling.c:351 ../../WPrefs.app/Workspace.c:90 #: ../../WPrefs.app/Workspace.c:101 #, c-format msgid "could not load icon %s" msgstr "無法載入圖示 %s" #: ../../WPrefs.app/Configurations.c:164 ../../WPrefs.app/Workspace.c:109 #, c-format msgid "could not process icon %s: %s" msgstr "無法處理圖示 %s: %s" #: ../../WPrefs.app/Configurations.c:188 ../../WPrefs.app/Workspace.c:164 #, c-format msgid "could not load image file %s" msgstr "無法載入影像檔 %s" #: ../../WPrefs.app/Configurations.c:202 msgid "Icon Slide Speed" msgstr "圖示移動速度" #: ../../WPrefs.app/Configurations.c:208 msgid "Shade Animation Speed" msgstr "遮蔽動畫速度" #: ../../WPrefs.app/Configurations.c:270 msgid "Smooth Scaling" msgstr "平滑縮放" #: ../../WPrefs.app/Configurations.c:271 msgid "" "Smooth scaled background images, neutralizing\n" "the `pixelization' effect. This will slow\n" "down loading of background images considerably." msgstr "" "平滑縮放背景圖,抵消「格柵化」效果。\n" "這會使背景圖載入變得相當慢。" #: ../../WPrefs.app/Configurations.c:312 msgid "Titlebar Style" msgstr "標題列風格" #: ../../WPrefs.app/Configurations.c:350 msgid "Animations and Sound" msgstr "動畫與音效" #: ../../WPrefs.app/Configurations.c:356 msgid "Animations" msgstr "動畫" #: ../../WPrefs.app/Configurations.c:367 msgid "" "Disable/enable animations such as those shown\n" "for window miniaturization, shading etc." msgstr "" "停用/啟用動畫,例如視窗最小化、遮蔽等的顯示。" #: ../../WPrefs.app/Configurations.c:375 msgid "Superfluous" msgstr "多餘的" #: ../../WPrefs.app/Configurations.c:386 msgid "" "Disable/enable `superfluous' features and\n" "animations. These include the `ghosting' of the\n" "dock when it's being moved to another side and\n" "the explosion animation when undocking icons." msgstr "" "停用/啟用「多餘的」特色與動畫。\n" "這包括停靠區被移到另一邊時的「鬼影」\n" "與脫離圖示時的爆炸動畫。" #: ../../WPrefs.app/Configurations.c:396 msgid "Sounds" msgstr "音效" #: ../../WPrefs.app/Configurations.c:407 msgid "" "Disable/enable support for sound effects played\n" "for actions like shading and closing a window.\n" "You will need a module distributed separately\n" "for this. You can get it at:\n" "http://largo.windowmaker.info/files.php#WSoundServer" msgstr "" "停用/啟用遮蔽與關閉視窗動作時播放的音效支援。\n" "你需要分開發送的模組。你可以在這裡取得:\n" "http://largo.windowmaker.info/files.php#WSoundServer" #: ../../WPrefs.app/Configurations.c:418 msgid "" "Note: sound requires a module distributed\n" "separately" msgstr "註:音效需要分開發送的模組" #: ../../WPrefs.app/Configurations.c:428 msgid "Dithering colormap for 8bpp" msgstr "為 8bpp 色盤減色" #: ../../WPrefs.app/Configurations.c:430 msgid "" "Number of colors to reserve for Window Maker\n" "on displays that support only 8bpp (PseudoColor)." msgstr "" "在只支援 8bpp (虛擬色彩) 的螢幕上\n" "保留給 Window Maker 的色彩數。" #: ../../WPrefs.app/Configurations.c:437 msgid "Disable dithering in any visual/depth" msgstr "使任何視覺/深度中的減色失效" #: ../../WPrefs.app/Configurations.c:458 msgid "" "More colors for\n" "applications" msgstr "" "應用程式\n" "使用更多色彩" #: ../../WPrefs.app/Configurations.c:465 msgid "" "More colors for\n" "Window Maker" msgstr "" "Window Maker\n" "使用更多色彩" #: ../../WPrefs.app/Configurations.c:520 msgid "Other Configurations" msgstr "其他設定" #: ../../WPrefs.app/Configurations.c:522 msgid "" "Animation speeds, titlebar styles, various option\n" "toggling and number of colors to reserve for\n" "Window Maker on 8bit displays." msgstr "" "動畫速度、標題列風格、各種選項切換\n" "與在 8bit 螢幕上保留給 Window Maker 的色彩數。" #: ../../WPrefs.app/Expert.c:75 msgid "" "Disable miniwindows (icons for minimized windows). For use with KDE/GNOME." msgstr "" "停用迷你視窗 (最小化視窗的圖示)。用於 KDE/GNOME。" #: ../../WPrefs.app/Expert.c:76 msgid "Do not set non-WindowMaker specific parameters (do not use xset)." msgstr "不要設非 WindowMaker 指定參數(不要使用 xset)。" #: ../../WPrefs.app/Expert.c:77 msgid "Automatically save session when exiting Window Maker." msgstr "離開 Window Maker 時自動儲存時段。" #: ../../WPrefs.app/Expert.c:78 msgid "Use SaveUnder in window frames, icons, menus and other objects." msgstr "在視窗框架、圖示、選單與其他物件使用 SaveUnder。" #: ../../WPrefs.app/Expert.c:79 msgid "Disable confirmation panel for the Kill command." msgstr "停用 Kill 命令的確認面板。" #: ../../WPrefs.app/Expert.c:80 msgid "Disable selection animation for selected icons." msgstr "停用已選取圖示的選取動畫。" #: ../../WPrefs.app/Expert.c:81 msgid "Smooth font edges (needs restart)." msgstr "平滑字型邊緣 (需要重新啟動)。" #: ../../WPrefs.app/Expert.c:117 msgid "Expert User Preferences" msgstr "熟練使用者設定" #: ../../WPrefs.app/Expert.c:119 msgid "" "Options for people who know what they're doing...\n" "Also have some other misc. options." msgstr "" "給知道他們正在做什麼的人的選項...\n" "也有一些其他各式各樣的選項。" #: ../../WPrefs.app/Focus.c:80 #, c-format msgid "bad option value %s for option FocusMode. Using default Manual" msgstr "選項 FocusMode 的選項值 %s 錯誤。使用預設值「手動」" #: ../../WPrefs.app/Focus.c:94 #, c-format msgid "bad option value %s for option ColormapMode. Using default Auto" msgstr "選項 ColormapMode 的選項值 %s 錯誤。使用預設值「自動」" #: ../../WPrefs.app/Focus.c:214 msgid "Input Focus Mode" msgstr "輸入焦點模式" #: ../../WPrefs.app/Focus.c:222 msgid "Manual: Click on the window to set keyboard input focus" msgstr "手動: 在視窗上按一下設定鍵盤輸入焦點。" #: ../../WPrefs.app/Focus.c:229 msgid "Auto: Set keyboard input focus to the window under the mouse pointer" msgstr "自動: 設定鍵盤輸入焦點至滑鼠指標下面的視窗。" #: ../../WPrefs.app/Focus.c:243 msgid "Install colormap from the window..." msgstr "安裝色盤..." #: ../../WPrefs.app/Focus.c:248 msgid "...that has the input focus" msgstr "...輸入焦點所在視窗。" #: ../../WPrefs.app/Focus.c:253 msgid "...that's under the mouse pointer" msgstr "...滑鼠指標下面的視窗。" #: ../../WPrefs.app/Focus.c:262 msgid "Automatic Window Raise Delay" msgstr "自動升起視窗延遲" #: ../../WPrefs.app/Focus.c:319 ../../WPrefs.app/MouseSettings.c:601 msgid "ms" msgstr "毫秒" #: ../../WPrefs.app/Focus.c:336 msgid "Do not let applications receive the click used to focus windows" msgstr "不要讓應用程式得到用來設定視窗焦點的滑鼠按鍵動作。" #: ../../WPrefs.app/Focus.c:342 msgid "Automatically focus new windows" msgstr "新視窗自動得到焦點。" #: ../../WPrefs.app/Focus.c:363 msgid "Window Focus Preferences" msgstr "視窗焦點設定" #: ../../WPrefs.app/Focus.c:365 msgid "" "Keyboard focus switching policy, colormap switching\n" "policy for 8bpp displays and other related options." msgstr "" "鍵盤焦點切換政策、8bpp 螢幕的色盤切換政策與其他相關選項。" #: ../../WPrefs.app/FontSimple.c:689 msgid "Sample Text" msgstr "範例文字" #: ../../WPrefs.app/FontSimple.c:707 msgid "Family" msgstr "種類" #: ../../WPrefs.app/FontSimple.c:736 msgid "Style" msgstr "風格" #: ../../WPrefs.app/FontSimple.c:739 msgid "Size" msgstr "大小" #: ../../WPrefs.app/FontSimple.c:777 msgid "Font Configuration" msgstr "字型設定" #: ../../WPrefs.app/FontSimple.c:779 msgid "Configure fonts for Window Maker titlebars, menus etc." msgstr "設定 Window Maker 標題列、選單等的字型。" #: ../../WPrefs.app/Icons.c:180 msgid "Icon Positioning" msgstr "圖示位置" #: ../../WPrefs.app/Icons.c:227 msgid "Iconification Animation" msgstr "縮成圖示動畫" #: ../../WPrefs.app/Icons.c:238 msgid "Shrinking/Zooming" msgstr "縮小/放大" #: ../../WPrefs.app/Icons.c:239 msgid "Spinning/Twisting" msgstr "迴轉/轉向" #: ../../WPrefs.app/Icons.c:240 msgid "3D-flipping" msgstr "立體翻轉" #: ../../WPrefs.app/Icons.c:241 ../../WPrefs.app/MouseSettings.c:838 #: ../../WPrefs.app/MouseSettings.c:843 msgid "None" msgstr "無" #: ../../WPrefs.app/Icons.c:254 msgid "Auto-arrange icons" msgstr "自動排列圖示" #: ../../WPrefs.app/Icons.c:256 msgid "Keep icons and miniwindows arranged all the time." msgstr "隨時保持圖示與最小視窗的排列" #: ../../WPrefs.app/Icons.c:262 msgid "Omnipresent miniwindows" msgstr "最小視窗無所不在" #: ../../WPrefs.app/Icons.c:264 msgid "Make miniwindows be present in all workspaces." msgstr "使最小視窗出現在所有工作區。" #: ../../WPrefs.app/Icons.c:273 msgid "Icon Size" msgstr "圖示大小" #: ../../WPrefs.app/Icons.c:275 msgid "The size of the dock/application icon and miniwindows" msgstr "停靠區/應用程式圖示和最小視窗的大小" #: ../../WPrefs.app/Icons.c:345 msgid "Icon Preferences" msgstr "圖示設定" #: ../../WPrefs.app/Icons.c:347 msgid "" "Icon/Miniwindow handling options. Icon positioning\n" "area, sizes of icons, miniaturization animation style." msgstr "" "圖示/最小視窗處理選項。\n" "圖示放置區域、圖示大小、最小化動畫風格。" #: ../../WPrefs.app/KeyboardSettings.c:73 msgid "Initial Key Repeat" msgstr "啟始按鍵重複" #: ../../WPrefs.app/KeyboardSettings.c:114 msgid "Key Repeat Rate" msgstr "按鍵重複速率" #: ../../WPrefs.app/KeyboardSettings.c:154 msgid "Type here to test" msgstr "在此打字測試" #: ../../WPrefs.app/KeyboardSettings.c:173 msgid "Keyboard Preferences" msgstr "鍵盤設定" #: ../../WPrefs.app/KeyboardSettings.c:175 msgid "Not done" msgstr "未完成" #: ../../WPrefs.app/KeyboardShortcuts.c:310 ../../WPrefs.app/Menu.c:360 #: ../../WPrefs.app/TexturePanel.c:1535 ../../WPrefs.app/imagebrowser.c:100 msgid "Cancel" msgstr "取消" #: ../../WPrefs.app/KeyboardShortcuts.c:311 msgid "Press the desired shortcut key(s) or click Cancel to stop capturing." msgstr "按下想要的捷徑鍵或按下取消停止抓取。" #: ../../WPrefs.app/KeyboardShortcuts.c:331 #: ../../WPrefs.app/KeyboardShortcuts.c:584 ../../WPrefs.app/Menu.c:371 #: ../../WPrefs.app/Menu.c:830 msgid "Capture" msgstr "抓取" #: ../../WPrefs.app/KeyboardShortcuts.c:332 #: ../../WPrefs.app/KeyboardShortcuts.c:592 msgid "Click on Capture to interactively define the shortcut key." msgstr "按下抓取可互動式定義捷徑鍵。" #: ../../WPrefs.app/KeyboardShortcuts.c:486 msgid "Actions" msgstr "動作" #: ../../WPrefs.app/KeyboardShortcuts.c:500 msgid "Open applications menu" msgstr "開啟應用程式選單" #: ../../WPrefs.app/KeyboardShortcuts.c:501 msgid "Open window list menu" msgstr "開啟視窗清單選單" #: ../../WPrefs.app/KeyboardShortcuts.c:502 msgid "Open window commands menu" msgstr "開啟視窗命令選單" #: ../../WPrefs.app/KeyboardShortcuts.c:503 msgid "Hide active application" msgstr "隱藏活動中的應用程式" #: ../../WPrefs.app/KeyboardShortcuts.c:504 msgid "Hide other applications" msgstr "隱藏其他的應用程式" #: ../../WPrefs.app/KeyboardShortcuts.c:505 msgid "Miniaturize active window" msgstr "最小化活動中的視窗" #: ../../WPrefs.app/KeyboardShortcuts.c:506 msgid "Close active window" msgstr "關閉活動中的視窗" #: ../../WPrefs.app/KeyboardShortcuts.c:507 msgid "Maximize active window" msgstr "最大化活動中的視窗" #: ../../WPrefs.app/KeyboardShortcuts.c:508 msgid "Maximize active window vertically" msgstr "垂直最大化活動中的視窗" #: ../../WPrefs.app/KeyboardShortcuts.c:509 msgid "Maximize active window horizontally" msgstr "水平最大化活動中的視窗" #: ../../WPrefs.app/KeyboardShortcuts.c:510 msgid "Raise active window" msgstr "升起活動中的視窗" #: ../../WPrefs.app/KeyboardShortcuts.c:511 msgid "Lower active window" msgstr "降下活動中的視窗" #: ../../WPrefs.app/KeyboardShortcuts.c:512 msgid "Raise/Lower window under mouse pointer" msgstr "升起/降下滑鼠指標下面的視窗" #: ../../WPrefs.app/KeyboardShortcuts.c:513 msgid "Shade active window" msgstr "遮蔽活動中的視窗" #: ../../WPrefs.app/KeyboardShortcuts.c:514 msgid "Move/Resize active window" msgstr "活動中的視窗移動/大小變更" #: ../../WPrefs.app/KeyboardShortcuts.c:515 msgid "Select active window" msgstr "選取活動中的視窗" #: ../../WPrefs.app/KeyboardShortcuts.c:516 msgid "Focus next window" msgstr "焦點移至下一個視窗" #: ../../WPrefs.app/KeyboardShortcuts.c:517 msgid "Focus previous window" msgstr "焦點移至上一個視窗" #: ../../WPrefs.app/KeyboardShortcuts.c:518 msgid "Switch to next workspace" msgstr "切換至下一個工作區" #: ../../WPrefs.app/KeyboardShortcuts.c:519 msgid "Switch to previous workspace" msgstr "切換至上一個工作區" #: ../../WPrefs.app/KeyboardShortcuts.c:520 msgid "Switch to next ten workspaces" msgstr "切換至後十個工作區" #: ../../WPrefs.app/KeyboardShortcuts.c:521 msgid "Switch to previous ten workspaces" msgstr "切換至前十個工作區" #: ../../WPrefs.app/KeyboardShortcuts.c:522 msgid "Switch to workspace 1" msgstr "切換至工作區 1" #: ../../WPrefs.app/KeyboardShortcuts.c:523 msgid "Switch to workspace 2" msgstr "切換至工作區 2" #: ../../WPrefs.app/KeyboardShortcuts.c:524 msgid "Switch to workspace 3" msgstr "切換至工作區 3" #: ../../WPrefs.app/KeyboardShortcuts.c:525 msgid "Switch to workspace 4" msgstr "切換至工作區 4" #: ../../WPrefs.app/KeyboardShortcuts.c:526 msgid "Switch to workspace 5" msgstr "切換至工作區 5" #: ../../WPrefs.app/KeyboardShortcuts.c:527 msgid "Switch to workspace 6" msgstr "切換至工作區 6" #: ../../WPrefs.app/KeyboardShortcuts.c:528 msgid "Switch to workspace 7" msgstr "切換至工作區 7" #: ../../WPrefs.app/KeyboardShortcuts.c:529 msgid "Switch to workspace 8" msgstr "切換至工作區 8" #: ../../WPrefs.app/KeyboardShortcuts.c:530 msgid "Switch to workspace 9" msgstr "切換至工作區 9" #: ../../WPrefs.app/KeyboardShortcuts.c:531 msgid "Switch to workspace 10" msgstr "切換至工作區 10" #: ../../WPrefs.app/KeyboardShortcuts.c:532 msgid "Shortcut for window 1" msgstr "視窗 1 的捷徑" #: ../../WPrefs.app/KeyboardShortcuts.c:533 msgid "Shortcut for window 2" msgstr "視窗 2 的捷徑" #: ../../WPrefs.app/KeyboardShortcuts.c:534 msgid "Shortcut for window 3" msgstr "視窗 3 的捷徑" #: ../../WPrefs.app/KeyboardShortcuts.c:535 msgid "Shortcut for window 4" msgstr "視窗 4 的捷徑" #: ../../WPrefs.app/KeyboardShortcuts.c:536 msgid "Shortcut for window 5" msgstr "視窗 5 的捷徑" #: ../../WPrefs.app/KeyboardShortcuts.c:537 msgid "Shortcut for window 6" msgstr "視窗 6 的捷徑" #: ../../WPrefs.app/KeyboardShortcuts.c:538 msgid "Shortcut for window 7" msgstr "視窗 7 的捷徑" #: ../../WPrefs.app/KeyboardShortcuts.c:539 msgid "Shortcut for window 8" msgstr "視窗 8 的捷徑" #: ../../WPrefs.app/KeyboardShortcuts.c:540 msgid "Shortcut for window 9" msgstr "視窗 9 的捷徑" #: ../../WPrefs.app/KeyboardShortcuts.c:541 msgid "Shortcut for window 10" msgstr "視窗 10 的捷徑" #: ../../WPrefs.app/KeyboardShortcuts.c:542 msgid "Switch to Next Screen/Monitor" msgstr "切換至後十個螢幕" #: ../../WPrefs.app/KeyboardShortcuts.c:544 msgid "Move VirtualDesktop to next left edge" msgstr "移動虛擬桌面至下一個左邊" #: ../../WPrefs.app/KeyboardShortcuts.c:545 msgid "Move VirtualDesktop to next right edge" msgstr "移動虛擬桌面至下一個右邊" #: ../../WPrefs.app/KeyboardShortcuts.c:546 msgid "Move VirtualDesktop to next top edge" msgstr "移動虛擬桌面至下一個上邊" #: ../../WPrefs.app/KeyboardShortcuts.c:547 msgid "Move VirtualDesktop to next bottom edge" msgstr "移動虛擬桌面至下一個下邊" #: ../../WPrefs.app/KeyboardShortcuts.c:549 msgid "Raise Clip" msgstr "升起迴紋針" #: ../../WPrefs.app/KeyboardShortcuts.c:550 msgid "Lower Clip" msgstr "降下迴紋針" #: ../../WPrefs.app/KeyboardShortcuts.c:551 msgid "Raise/Lower Clip" msgstr "升起/降下迴紋針" #: ../../WPrefs.app/KeyboardShortcuts.c:553 msgid "Toggle keyboard language" msgstr "切換鍵盤語言" #: ../../WPrefs.app/KeyboardShortcuts.c:567 msgid "Shortcut" msgstr "捷徑" #: ../../WPrefs.app/KeyboardShortcuts.c:578 ../../WPrefs.app/Menu.c:836 msgid "Clear" msgstr "清除" #: ../../WPrefs.app/KeyboardShortcuts.c:640 msgid "Keyboard Shortcut Preferences" msgstr "鍵盤捷徑設定" #: ../../WPrefs.app/KeyboardShortcuts.c:642 msgid "" "Change the keyboard shortcuts for actions such\n" "as changing workspaces and opening menus." msgstr "" "改變變更工作區與開啟選單動作的鍵盤捷徑。" #: ../../WPrefs.app/Menu.c:278 msgid "Select Program" msgstr "選取程式" #: ../../WPrefs.app/Menu.c:510 msgid "New Items" msgstr "新增項目" #: ../../WPrefs.app/Menu.c:511 msgid "Sample Commands" msgstr "範例命令" #: ../../WPrefs.app/Menu.c:512 msgid "Sample Submenus" msgstr "範例副選單" #: ../../WPrefs.app/Menu.c:526 msgid "Run Program" msgstr "執行程式" #: ../../WPrefs.app/Menu.c:527 msgid "Internal Command" msgstr "內部命令" #: ../../WPrefs.app/Menu.c:528 msgid "Submenu" msgstr "副選單" #: ../../WPrefs.app/Menu.c:529 msgid "External Submenu" msgstr "外部副選單" #: ../../WPrefs.app/Menu.c:530 msgid "Generated Submenu" msgstr "產生的副選單" #: ../../WPrefs.app/Menu.c:531 msgid "Directory Contents" msgstr "目錄內容" #: ../../WPrefs.app/Menu.c:532 msgid "Workspace Menu" msgstr "工作區選單" #: ../../WPrefs.app/Menu.c:533 ../../WPrefs.app/MouseSettings.c:840 msgid "Window List Menu" msgstr "視窗清單選單" #: ../../WPrefs.app/Menu.c:552 msgid "XTerm" msgstr "XTerm" #: ../../WPrefs.app/Menu.c:555 msgid "rxvt" msgstr "rxvt" #: ../../WPrefs.app/Menu.c:558 msgid "ETerm" msgstr "ETerm" #: ../../WPrefs.app/Menu.c:561 msgid "Run..." msgstr "執行..." #: ../../WPrefs.app/Menu.c:562 #, c-format msgid "%a(Run,Type command to run)" msgstr "%a(執行,輸入要執行的命令)" #: ../../WPrefs.app/Menu.c:564 msgid "Netscape" msgstr "Netscape" #: ../../WPrefs.app/Menu.c:567 msgid "gimp" msgstr "gimp" #: ../../WPrefs.app/Menu.c:570 msgid "epic" msgstr "epic" #: ../../WPrefs.app/Menu.c:573 msgid "ee" msgstr "ee" #: ../../WPrefs.app/Menu.c:576 msgid "xv" msgstr "xv" #: ../../WPrefs.app/Menu.c:579 msgid "Acrobat Reader" msgstr "Acrobat Reader" #: ../../WPrefs.app/Menu.c:582 msgid "ghostview" msgstr "ghostview" #: ../../WPrefs.app/Menu.c:585 ../../WPrefs.app/Menu.c:857 msgid "Exit Window Maker" msgstr "離開 Window Maker" #: ../../WPrefs.app/Menu.c:608 msgid "Debian Menu" msgstr "Debian 選單" #: ../../WPrefs.app/Menu.c:611 msgid "RedHat Menu" msgstr "RedHat 選單" #: ../../WPrefs.app/Menu.c:614 msgid "Menu Conectiva" msgstr "Conectiva 選單" #: ../../WPrefs.app/Menu.c:617 ../../WPrefs.app/Themes.c:250 msgid "Themes" msgstr "主題" #: ../../WPrefs.app/Menu.c:622 msgid "Bg Images (scale)" msgstr "背景圖 (縮放)" #: ../../WPrefs.app/Menu.c:627 msgid "Bg Images (tile)" msgstr "背景圖 (並排)" #: ../../WPrefs.app/Menu.c:632 msgid "Assorted XTerms" msgstr "各式各樣的 XTerm" #: ../../WPrefs.app/Menu.c:634 msgid "XTerm Yellow on Blue" msgstr "XTerm 藍底黃字" #: ../../WPrefs.app/Menu.c:637 msgid "XTerm White on Black" msgstr "XTerm 黑底白字" #: ../../WPrefs.app/Menu.c:640 msgid "XTerm Black on White" msgstr "XTerm 白底黑字" #: ../../WPrefs.app/Menu.c:643 msgid "XTerm Black on Beige" msgstr "XTerm 米底黑字" #: ../../WPrefs.app/Menu.c:646 msgid "XTerm White on Green" msgstr "XTerm 綠底白字" #: ../../WPrefs.app/Menu.c:649 msgid "XTerm White on Olive" msgstr "XTerm 褐底白字" #: ../../WPrefs.app/Menu.c:652 msgid "XTerm Blue on Blue" msgstr "XTerm 藍底藍字" #: ../../WPrefs.app/Menu.c:655 msgid "XTerm BIG FONTS" msgstr "XTerm 大字型" #: ../../WPrefs.app/Menu.c:677 msgid "Program to Run" msgstr "執行之程式" #: ../../WPrefs.app/Menu.c:687 msgid "Browse" msgstr "瀏覽" #: ../../WPrefs.app/Menu.c:698 msgid "Run the program inside a Xterm" msgstr "在 Xterm 內執行程式" #: ../../WPrefs.app/Menu.c:708 msgid "Path for Menu" msgstr "選單路徑" #: ../../WPrefs.app/Menu.c:721 msgid "" "Enter the path for a file containing a menu\n" "or a list of directories with the programs you\n" "want to have listed in the menu. Ex:\n" "~/GNUstep/Library/WindowMaker/menu\n" "or\n" "/usr/bin ~/xbin" msgstr "" "輸入含有選單的檔案或你要列在選單的程式目錄清單\n" "的路徑。例如:\n" "~/GNUstep/Library/WindowMaker/menu\n" "或\n" "/usr/bin ~/xbin" #: ../../WPrefs.app/Menu.c:736 msgid "Command" msgstr "命令" #: ../../WPrefs.app/Menu.c:750 msgid "" "Enter a command that outputs a menu\n" "definition to stdout when invoked." msgstr "" "輸入用來輸出選單定義到標準輸出的命令。" #: ../../WPrefs.app/Menu.c:758 msgid "" "Cache menu contents after opening for\n" "the first time" msgstr "" "第一次開啟後快取選單內容" #: ../../WPrefs.app/Menu.c:769 msgid "Command to Open Files" msgstr "開啟檔案之程式" #: ../../WPrefs.app/Menu.c:783 msgid "" "Enter the command you want to use to open the\n" "files in the directories listed below." msgstr "" "輸入你要用來開啟下列目錄中檔案的命令。" #: ../../WPrefs.app/Menu.c:792 msgid "Directories with Files" msgstr "含有檔案的目錄" #: ../../WPrefs.app/Menu.c:805 msgid "Strip extensions from file names" msgstr "刪除檔名的副檔名" #: ../../WPrefs.app/Menu.c:817 msgid "Keyboard Shortcut" msgstr "鍵盤捷徑" #: ../../WPrefs.app/Menu.c:853 msgid "Arrange Icons" msgstr "排列圖示" #: ../../WPrefs.app/Menu.c:854 msgid "Hide All Windows Except For The Focused One" msgstr "除了焦點視窗外隱藏所有視窗" #: ../../WPrefs.app/Menu.c:855 msgid "Show All Windows" msgstr "顯示所有視窗" #: ../../WPrefs.app/Menu.c:858 msgid "Exit X Session" msgstr "離開 X 視窗系統" #: ../../WPrefs.app/Menu.c:859 msgid "Restart Window Maker" msgstr "重新啟動 Window Maker" #: ../../WPrefs.app/Menu.c:860 msgid "Start Another Window Manager : (" msgstr "啟動其他的視窗管理員:(" #: ../../WPrefs.app/Menu.c:862 msgid "Save Current Session" msgstr "儲存目前時段" #: ../../WPrefs.app/Menu.c:863 msgid "Clear Saved Session" msgstr "清除已儲存時段" #: ../../WPrefs.app/Menu.c:864 msgid "Refresh Screen" msgstr "更新螢幕" #: ../../WPrefs.app/Menu.c:865 msgid "Open Info Panel" msgstr "開啟資訊面板" #: ../../WPrefs.app/Menu.c:866 msgid "Open Copyright Panel" msgstr "開啟版權面板" #: ../../WPrefs.app/Menu.c:872 msgid "Window Manager to Start" msgstr "要啟動的視窗管理員" #: ../../WPrefs.app/Menu.c:888 msgid "Do not confirm action." msgstr "不確認動作。" #: ../../WPrefs.app/Menu.c:896 msgid "" "Instructions:\n" "\n" " - drag items from the left to the menu to add new items\n" " - drag items out of the menu to remove items\n" " - drag items in menu to change their position\n" " - drag items with Control pressed to copy them\n" " - double click in a menu item to change the label\n" " - click on a menu item to change related information" msgstr "" "說明:\n" "\n" " - 從左邊拖曳項目到選單可增加新項目\n" " - 從選單拖出項目可刪除項目\n" " - 在選單中拖曳項目可變更其位置\n" " - 按 Control 鍵拖曳項目可複製它們\n" " - 在選單項目點兩下可變更標籤\n" " - 在選單項目點一下可變更相關資訊" #: ../../WPrefs.app/Menu.c:1120 #, c-format msgid "unknown command '%s' in menu" msgstr "選單中有不明的命令 '%s'" #: ../../WPrefs.app/Menu.c:1152 msgid ": Execute Program" msgstr ": 執行程式" #: ../../WPrefs.app/Menu.c:1156 msgid ": Perform Internal Command" msgstr ": 執行內部命令" #: ../../WPrefs.app/Menu.c:1160 msgid ": Open a Submenu" msgstr ": 開啟副選單" #: ../../WPrefs.app/Menu.c:1164 msgid ": Program Generated Submenu" msgstr ": 程式產生之副選單" #: ../../WPrefs.app/Menu.c:1168 msgid ": Directory Contents Menu" msgstr ": 目錄內容選單" #: ../../WPrefs.app/Menu.c:1172 msgid ": Open Workspaces Submenu" msgstr ": 開啟工作區副選單" #: ../../WPrefs.app/Menu.c:1176 msgid ": Open Window List Submenu" msgstr ": 開啟視窗清單選單" #: ../../WPrefs.app/Menu.c:1401 msgid "Remove Submenu" msgstr "刪除副選單" #: ../../WPrefs.app/Menu.c:1402 msgid "" "Removing this item will destroy all items inside\n" "the submenu. Do you really want to do that?" msgstr "" "刪除此項目會破壞副選單中所有項目。\n" "你真的要這樣做?" #: ../../WPrefs.app/Menu.c:1404 msgid "Yes" msgstr "是" #: ../../WPrefs.app/Menu.c:1404 msgid "No" msgstr "否" #: ../../WPrefs.app/Menu.c:1405 msgid "Yes, don't ask again" msgstr "是,不要再問" #: ../../WPrefs.app/Menu.c:1579 #, c-format msgid "Could not open default menu from '%s'" msgstr "無法從 '%s' 開啟預設選單" #: ../../WPrefs.app/Menu.c:1583 ../../WPrefs.app/MouseSettings.c:140 #: ../../WPrefs.app/MouseSettings.c:160 ../../WPrefs.app/TexturePanel.c:615 #: ../../WPrefs.app/TexturePanel.c:695 ../../WPrefs.app/Themes.c:96 #: ../../WPrefs.app/WPrefs.c:740 ../../WPrefs.app/WPrefs.c:745 #: ../../WPrefs.app/WPrefs.c:762 ../../WPrefs.app/WPrefs.c:772 #: ../../WPrefs.app/WPrefs.c:782 ../../WPrefs.app/WPrefs.c:820 #: ../../WPrefs.app/WPrefs.c:825 msgid "Error" msgstr "錯誤" #: ../../WPrefs.app/Menu.c:1583 ../../WPrefs.app/MouseSettings.c:142 #: ../../WPrefs.app/MouseSettings.c:162 ../../WPrefs.app/TexturePanel.c:616 #: ../../WPrefs.app/TexturePanel.c:697 ../../WPrefs.app/TexturePanel.c:1529 #: ../../WPrefs.app/Themes.c:98 ../../WPrefs.app/WPrefs.c:740 #: ../../WPrefs.app/WPrefs.c:745 ../../WPrefs.app/WPrefs.c:764 #: ../../WPrefs.app/WPrefs.c:776 ../../WPrefs.app/WPrefs.c:782 #: ../../WPrefs.app/WPrefs.c:789 ../../WPrefs.app/WPrefs.c:820 #: ../../WPrefs.app/WPrefs.c:825 ../../WPrefs.app/imagebrowser.c:105 msgid "OK" msgstr "確定" #: ../../WPrefs.app/Menu.c:1612 ../../WPrefs.app/WPrefs.c:789 msgid "Warning" msgstr "注意" #: ../../WPrefs.app/Menu.c:1613 msgid "" "The menu file format currently in use is not supported\n" "by this tool. Do you want to discard the current menu\n" "to use this tool?" msgstr "" "目前使用的選單檔案格式未被此工具支援。\n" "你要拋棄目前選單以便使用此工具?" #: ../../WPrefs.app/Menu.c:1616 msgid "Yes, Discard and Update" msgstr "是,拋棄並更新" #: ../../WPrefs.app/Menu.c:1617 msgid "No, Keep Current Menu" msgstr "否,保留目前選單" #: ../../WPrefs.app/Menu.c:1880 msgid "Applications Menu Definition" msgstr "應用程式選單定義" #: ../../WPrefs.app/Menu.c:1882 msgid "Edit the menu for launching applications." msgstr "編輯啟動應用程式的選單。" #: ../../WPrefs.app/MenuPreferences.c:111 msgid "Menu Scrolling Speed" msgstr "選單捲動速度" #: ../../WPrefs.app/MenuPreferences.c:160 msgid "Submenu Alignment" msgstr "副選單對齊" #: ../../WPrefs.app/MenuPreferences.c:204 msgid "" "Always open submenus inside the screen, instead of scrolling." msgstr "" "每次都在螢幕內開啟副選單,而不是捲動。" #: ../../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/MenuPreferences.c:231 msgid "" "Menu usability related options. Scrolling speed,\n" "alignment of submenus etc." msgstr "" "選單可用性相關選項。\n" "捲動速度、副選單對齊等。" #: ../../WPrefs.app/MouseSettings.c:141 msgid "Invalid mouse acceleration value. Must be a positive real value." msgstr "滑鼠加速限度值無效。必須是一正實數值。" #: ../../WPrefs.app/MouseSettings.c:161 msgid "" "Invalid mouse acceleration threshold value. Must be the number of pixels to " "travel before accelerating." msgstr "滑鼠加速限度值無效。必須是加速前移動的像素數目。" #: ../../WPrefs.app/MouseSettings.c:262 ../../WPrefs.app/MouseSettings.c:274 #: ../../WPrefs.app/MouseSettings.c:286 ../../WPrefs.app/MouseSettings.c:298 #, c-format msgid "bad value %s for option %s" msgstr "選項 %s 的值 %s 錯誤" #: ../../WPrefs.app/MouseSettings.c:357 #, c-format msgid "" "modifier key %s for option ModifierKey was not recognized. Using %s as " "default" msgstr "ModifierKey 選項的修正鍵 %s 無法辨認。使用 %s 為預設值" #: ../../WPrefs.app/MouseSettings.c:382 msgid "could not retrieve keyboard modifier mapping" msgstr "無法取回鍵盤修正對應" #: ../../WPrefs.app/MouseSettings.c:477 msgid "Mouse Speed" msgstr "滑鼠速度" #: ../../WPrefs.app/MouseSettings.c:507 msgid "Accel.:" msgstr "加速值:" #: ../../WPrefs.app/MouseSettings.c:520 msgid "Threshold:" msgstr "限度:" #: ../../WPrefs.app/MouseSettings.c:535 msgid "Double-Click Delay" msgstr "連按兩下延遲" #: ../../WPrefs.app/MouseSettings.c:579 msgid "Test" msgstr "測試" #: ../../WPrefs.app/MouseSettings.c:609 msgid "Workspace Mouse Actions" msgstr "工作區滑鼠動作" #: ../../WPrefs.app/MouseSettings.c:614 msgid "Disable mouse actions" msgstr "使滑鼠動作失效" #: ../../WPrefs.app/MouseSettings.c:620 msgid "Left Button" msgstr "左按鈕" #: ../../WPrefs.app/MouseSettings.c:630 msgid "Middle Button" msgstr "中間鈕" #: ../../WPrefs.app/MouseSettings.c:640 msgid "Right Button" msgstr "右按鈕" #: ../../WPrefs.app/MouseSettings.c:650 msgid "Mouse Wheel" msgstr "滑鼠滾輪" #: ../../WPrefs.app/MouseSettings.c:672 msgid "Mouse Grab Modifier" msgstr "滑鼠抓取修飾" #: ../../WPrefs.app/MouseSettings.c:674 msgid "" "Keyboard modifier to use for actions that\n" "involve dragging windows with the mouse,\n" "clicking inside the window." msgstr "" "用來連同以滑鼠拖曳視窗、在視窗中點選使用的鍵盤修飾。" #: ../../WPrefs.app/MouseSettings.c:708 #, c-format msgid "could not create %s" msgstr "無法建立 %s" #: ../../WPrefs.app/MouseSettings.c:724 #, c-format msgid "could not create temporary file %s" msgstr "無法建立暫存檔 %s" #: ../../WPrefs.app/MouseSettings.c:756 #, c-format msgid "could not rename file %s to %s\n" msgstr "無法變更檔名 %s 至 %s\n" #: ../../WPrefs.app/MouseSettings.c:829 msgid "Shift" msgstr "Shift" #: ../../WPrefs.app/MouseSettings.c:830 msgid "Lock" msgstr "Lock" #: ../../WPrefs.app/MouseSettings.c:831 msgid "Control" msgstr "Control" #: ../../WPrefs.app/MouseSettings.c:832 msgid "Mod1" msgstr "Mod1" #: ../../WPrefs.app/MouseSettings.c:833 msgid "Mod2" msgstr "Mod2" #: ../../WPrefs.app/MouseSettings.c:834 msgid "Mod3" msgstr "Mod3" #: ../../WPrefs.app/MouseSettings.c:835 msgid "Mod4" msgstr "Mod4" #: ../../WPrefs.app/MouseSettings.c:836 msgid "Mod5" msgstr "Mod5" #: ../../WPrefs.app/MouseSettings.c:839 msgid "Applications Menu" msgstr "應用程式選單" #: ../../WPrefs.app/MouseSettings.c:841 msgid "Select Windows" msgstr "選取視窗" #: ../../WPrefs.app/MouseSettings.c:844 msgid "Switch Workspaces" msgstr "切換至工作區" #: ../../WPrefs.app/MouseSettings.c:849 msgid "Mouse Preferences" msgstr "滑鼠設定" #: ../../WPrefs.app/MouseSettings.c:851 msgid "" "Mouse speed/acceleration, double click delay,\n" "mouse button bindings etc." msgstr "" "滑鼠速度/加速、連按兩下之延遲、滑鼠按鈕結合等。" #: ../../WPrefs.app/Paths.c:85 msgid "bad value in option IconPath. Using default path list" msgstr "IconPath 選項的值錯誤。使用預設路徑清單" #: ../../WPrefs.app/Paths.c:102 msgid "bad value in option PixmapPath. Using default path list" msgstr "PixmapPath 選項的值錯誤。使用預設路徑清單" #: ../../WPrefs.app/Paths.c:150 msgid "Select directory" msgstr "選取目錄" #: ../../WPrefs.app/Paths.c:266 msgid "Icon Search Paths" msgstr "圖示搜尋路徑" #: ../../WPrefs.app/Paths.c:277 ../../WPrefs.app/Paths.c:308 #: ../../WPrefs.app/TexturePanel.c:1312 msgid "Add" msgstr "新增" #: ../../WPrefs.app/Paths.c:284 ../../WPrefs.app/Paths.c:315 msgid "Remove" msgstr "刪除" #: ../../WPrefs.app/Paths.c:297 msgid "Pixmap Search Paths" msgstr "Pixmap 搜尋路徑" #: ../../WPrefs.app/Paths.c:337 msgid "Search Path Configuration" msgstr "搜尋路徑設定" #: ../../WPrefs.app/Paths.c:339 msgid "" "Search paths to use when looking for pixmaps\n" "and icons." msgstr "" "當尋找 pixmap 或圖示時使用的搜尋路徑。" #: ../../WPrefs.app/Preferences.c:75 #, c-format msgid "OFF" msgstr "關閉" #: ../../WPrefs.app/Preferences.c:77 #, c-format msgid "1 pixel" msgstr "一個像素" #. 2-4 #: ../../WPrefs.app/Preferences.c:80 #, c-format msgid "%i pixels" msgstr "%i 個像素" #. >4 #: ../../WPrefs.app/Preferences.c:83 #, c-format msgid "%i pixels " msgstr "%i 個像素 " #: ../../WPrefs.app/Preferences.c:229 msgid "Size Display" msgstr "視窗大小顯示" #: ../../WPrefs.app/Preferences.c:231 msgid "" "The position or style of the window size\n" "display that's shown when a window is resized." msgstr "" "當視窗大小變更時所顯示之視窗大小顯示裝置的位置或風格。" #: ../../WPrefs.app/Preferences.c:238 ../../WPrefs.app/Preferences.c:259 msgid "Corner of screen" msgstr "螢幕角落" #: ../../WPrefs.app/Preferences.c:239 ../../WPrefs.app/Preferences.c:260 msgid "Center of screen" msgstr "螢幕中央" #: ../../WPrefs.app/Preferences.c:240 ../../WPrefs.app/Preferences.c:261 msgid "Center of resized window" msgstr "視窗中央" #: ../../WPrefs.app/Preferences.c:241 msgid "Technical drawing-like" msgstr "科學繪圖方式" #: ../../WPrefs.app/Preferences.c:242 ../../WPrefs.app/Preferences.c:262 msgid "Disabled" msgstr "已失效" #: ../../WPrefs.app/Preferences.c:250 msgid "Position Display" msgstr "位置顯示" #: ../../WPrefs.app/Preferences.c:252 msgid "" "The position or style of the window position\n" "display that's shown when a window is moved." msgstr "" "當視窗移動時所顯示之視窗位置顯示裝置的位置或風格。" #: ../../WPrefs.app/Preferences.c:270 msgid "Show balloon text for..." msgstr "顯示氣球文字..." #: ../../WPrefs.app/Preferences.c:277 msgid "incomplete window titles" msgstr "不完整視窗標題" #: ../../WPrefs.app/Preferences.c:278 msgid "miniwindow titles" msgstr "小視窗標題" #: ../../WPrefs.app/Preferences.c:279 msgid "application/dock icons" msgstr "應用程式/停靠區圖示" #: ../../WPrefs.app/Preferences.c:280 msgid "internal help" msgstr "內部說明" #: ../../WPrefs.app/Preferences.c:292 msgid "Raise window when switching focus with keyboard" msgstr "當使用鍵盤切換焦點時升起視窗。" #: ../../WPrefs.app/Preferences.c:298 msgid "" "Enable keyboard language\n" "switch button in window titlebars." msgstr "在視窗標題列啟用語言切換鈕。" #: ../../WPrefs.app/Preferences.c:307 msgid "Workspace border" msgstr "工作區邊框" #: ../../WPrefs.app/Preferences.c:323 msgid "Left/Right" msgstr "左/右" #: ../../WPrefs.app/Preferences.c:328 msgid "Top/Bottom" msgstr "上/下" #: ../../WPrefs.app/Preferences.c:349 msgid "Miscellaneous Ergonomic Preferences" msgstr "其他操作性設定" #: ../../WPrefs.app/Preferences.c:350 msgid "" "Various settings like balloon text, geometry\n" "displays etc." msgstr "" "各種設定像是氣球文字、位置顯示等。" #: ../../WPrefs.app/TexturePanel.c:323 msgid "Saturation" msgstr "濃度" #: ../../WPrefs.app/TexturePanel.c:325 msgid "Brightness" msgstr "亮度" #: ../../WPrefs.app/TexturePanel.c:373 ../../WPrefs.app/TexturePanel.c:380 msgid "Hue" msgstr "色調" #: ../../WPrefs.app/TexturePanel.c:612 msgid "Could not load the selected file: " msgstr "無法載入選取的檔案: " #: ../../WPrefs.app/TexturePanel.c:666 msgid "Open Image" msgstr "開啟影像" #: ../../WPrefs.app/TexturePanel.c:696 msgid "The selected file does not contain a supported image." msgstr "選取的檔案未含有支援的影像。" #: ../../WPrefs.app/TexturePanel.c:947 #, c-format msgid "could not load file '%s': %s" msgstr "無法載入檔案 '%s': %s" #: ../../WPrefs.app/TexturePanel.c:1066 #, c-format msgid "error creating texture %s" msgstr "建立材質 %s 錯誤" #: ../../WPrefs.app/TexturePanel.c:1256 msgid "Texture Panel" msgstr "材質面板" #: ../../WPrefs.app/TexturePanel.c:1264 msgid "Texture Name" msgstr "材質名稱" #: ../../WPrefs.app/TexturePanel.c:1276 msgid "Solid Color" msgstr "純色彩" #: ../../WPrefs.app/TexturePanel.c:1277 msgid "Gradient Texture" msgstr "漸層材質" #: ../../WPrefs.app/TexturePanel.c:1278 msgid "Simple Gradient Texture" msgstr "簡單 漸層材質" #: ../../WPrefs.app/TexturePanel.c:1279 msgid "Textured Gradient" msgstr "材質漸層" #: ../../WPrefs.app/TexturePanel.c:1280 msgid "Image Texture" msgstr "影像材質" #: ../../WPrefs.app/TexturePanel.c:1288 msgid "Default Color" msgstr "預設色彩" #: ../../WPrefs.app/TexturePanel.c:1300 msgid "Gradient Colors" msgstr "漸層色彩" #: ../../WPrefs.app/TexturePanel.c:1396 msgid "Direction" msgstr "方向" #: ../../WPrefs.app/TexturePanel.c:1424 msgid "Gradient" msgstr "漸層" #: ../../WPrefs.app/TexturePanel.c:1442 msgid "Gradient Opacity" msgstr "漸層不透明度" #: ../../WPrefs.app/TexturePanel.c:1484 msgid "Image" msgstr "影像" #: ../../WPrefs.app/TexturePanel.c:1516 msgid "Tile" msgstr "並排" #: ../../WPrefs.app/TexturePanel.c:1517 msgid "Scale" msgstr "縮放" #: ../../WPrefs.app/TexturePanel.c:1519 msgid "Maximize" 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:203 #: ../../WPrefs.app/Themes.c:223 msgid "Download" msgstr "下載" #: ../../WPrefs.app/Themes.c:171 msgid "Save Current Theme" msgstr "儲存目前主題" #: ../../WPrefs.app/Themes.c:180 msgid "Load" msgstr "載入" #: ../../WPrefs.app/Themes.c:185 msgid "Install" msgstr "安裝" #: ../../WPrefs.app/Themes.c:193 msgid "Tile of The Day" msgstr "本日標題" #: ../../WPrefs.app/Themes.c:213 msgid "Bar of The Day" msgstr "本日標題列" #: ../../WPrefs.app/WPrefs.c:260 ../../WPrefs.app/WPrefs.c:331 msgid "Window Maker Preferences" msgstr "Window Maker 設定" #: ../../WPrefs.app/WPrefs.c:283 msgid "Revert Page" msgstr "還原" #: ../../WPrefs.app/WPrefs.c:289 msgid "Revert All" msgstr "全部還原" #: ../../WPrefs.app/WPrefs.c:295 msgid "Save" msgstr "儲存" #: ../../WPrefs.app/WPrefs.c:308 msgid "Balloon Help" msgstr "氣球說明" #: ../../WPrefs.app/WPrefs.c:338 #, c-format msgid "Version %s" msgstr "版本 %s" #: ../../WPrefs.app/WPrefs.c:345 msgid "Starting..." msgstr "啟動中..." #: ../../WPrefs.app/WPrefs.c:443 #, c-format msgid "could not locate image file %s\n" msgstr "無法找出影像檔 %s\n" #: ../../WPrefs.app/WPrefs.c:656 #, c-format msgid "could not load image file %s:%s" msgstr "無法載入影像檔 %s:%s" #: ../../WPrefs.app/WPrefs.c:674 msgid "Loading Window Maker configuration files..." msgstr "載入 Window Maker 設定檔..." #: ../../WPrefs.app/WPrefs.c:678 msgid "Initializing configuration panels..." msgstr "啟始設定面板..." #: ../../WPrefs.app/WPrefs.c:739 ../../WPrefs.app/WPrefs.c:819 #, c-format msgid "Window Maker domain (%s) is corrupted!" msgstr "Window Maker 定義域 (%s) 已損壞!" #: ../../WPrefs.app/WPrefs.c:743 #, c-format msgid "Could not load Window Maker domain (%s) from defaults database." msgstr "無法從預設資料庫載入 Window Maker 定義域 (%s)" #: ../../WPrefs.app/WPrefs.c:759 msgid "could not extract version information from Window Maker" msgstr "無法得知 Window Maker 的版本資訊" #: ../../WPrefs.app/WPrefs.c:760 msgid "Make sure wmaker is in your search path." msgstr "確定 wmaker 在你的搜尋路徑中。" #: ../../WPrefs.app/WPrefs.c:763 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:773 msgid "" "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." msgstr "" "無法從 Window Maker 取得版本。" "確定它安裝正確且它的安裝路徑在PATH 環境變數中。" #: ../../WPrefs.app/WPrefs.c:780 #, 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:787 #, 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:800 #, c-format msgid "could not run \"%s --global_defaults_path\"." msgstr "無法執行 \"%s --global_defaults_path\"。" #: ../../WPrefs.app/WPrefs.c:823 #, c-format msgid "Could not load global Window Maker domain (%s)." msgstr "無法載入整體 Window Maker 定義域 (%s)。" #: ../../WPrefs.app/WPrefs.c:1072 #, c-format msgid "" "bad speed value for option %s\n" ". Using default Medium" msgstr "" "%s 選項速度值錯誤。\n" "使用預設值" #: ../../WPrefs.app/WindowHandling.c:141 #, c-format msgid "bad option value %s in WindowPlacement. Using default value" msgstr "WindowPlacement 選項 %s 資料錯誤。使用預設值" #: ../../WPrefs.app/WindowHandling.c:163 msgid "invalid data in option WindowPlaceOrigin. Using default (0,0)" msgstr "WindowPlaceOrigin 選項中資料無效。使用預設之 (0,0)" #: ../../WPrefs.app/WindowHandling.c:243 msgid "Window Placement" msgstr "視窗放置" #: ../../WPrefs.app/WindowHandling.c:244 msgid "" "How to place windows when they are first put\n" "on screen." msgstr "" "當第一次放到螢幕上時如何放置視窗。" #: ../../WPrefs.app/WindowHandling.c:250 msgid "Automatic" msgstr "自動" #: ../../WPrefs.app/WindowHandling.c:251 msgid "Random" msgstr "隨意" #: ../../WPrefs.app/WindowHandling.c:252 msgid "Manual" msgstr "手動" #: ../../WPrefs.app/WindowHandling.c:253 msgid "Cascade" msgstr "重疊" #: ../../WPrefs.app/WindowHandling.c:254 msgid "Smart" msgstr "精明" #: ../../WPrefs.app/WindowHandling.c:260 msgid "Placement Origin" msgstr "放置基準點" #: ../../WPrefs.app/WindowHandling.c:321 msgid "Opaque Move" msgstr "不透明移動" #: ../../WPrefs.app/WindowHandling.c:322 msgid "" "Whether the window contents should be moved\n" "when dragging windows aroung or if only a\n" "frame should be displayed.\n" msgstr "" "當到處拖曳視窗時\n" "視窗內容是否該被移動\n" "或只有框線被顯示。\n" #: ../../WPrefs.app/WindowHandling.c:361 msgid "When maximizing..." msgstr "當最大化時..." #: ../../WPrefs.app/WindowHandling.c:366 msgid "...do not cover icons" msgstr "...不要覆蓋圖示區" #: ../../WPrefs.app/WindowHandling.c:372 msgid "...do not cover dock" msgstr "...不要覆蓋停靠區" #: ../../WPrefs.app/WindowHandling.c:381 msgid "Edge Resistance" msgstr "邊緣抵抗" #: ../../WPrefs.app/WindowHandling.c:383 msgid "" "Edge resistance will make windows `resist'\n" "being moved further for the defined threshold\n" "when moved against other windows or the edges\n" "of the screen." msgstr "" "當朝著其他視窗或螢幕邊緣移動時,\n" "邊緣抵抗會使視窗「抵抗」\n" "被進一步移動超過定義的限度。" #: ../../WPrefs.app/WindowHandling.c:402 msgid "Resist" msgstr "抵抗" #: ../../WPrefs.app/WindowHandling.c:407 msgid "Attract" msgstr "吸引" #: ../../WPrefs.app/WindowHandling.c:421 msgid "Open dialogs in the same workspace as their owners" msgstr "開啟對話視窗在其擁有者之相同工作區" #: ../../WPrefs.app/WindowHandling.c:448 msgid "Window Handling Preferences" msgstr "視窗操作設定" #: ../../WPrefs.app/WindowHandling.c:450 msgid "" "Window handling options. Initial placement style\n" "edge resistance, opaque move etc." msgstr "" "視窗處理選項。起始放置風格\n" "邊緣抵抗、不透明移動等。" #: ../../WPrefs.app/Workspace.c:176 msgid "Workspace Navigation" msgstr "工作區之操作" #: ../../WPrefs.app/Workspace.c:183 msgid "Wrap to the first workspace from the last workspace" msgstr "從最後一個工作區跳至第一個工作區" #: ../../WPrefs.app/Workspace.c:205 msgid "Switch workspaces while dragging windows" msgstr "當拖曳視窗時切換工作區" #: ../../WPrefs.app/Workspace.c:227 msgid "Automatically create new workspaces" msgstr "自動建立新工作區" #: ../../WPrefs.app/Workspace.c:250 msgid "Position of workspace name display" msgstr "工作區名稱顯示的位置" #: ../../WPrefs.app/Workspace.c:269 msgid "Disable" msgstr "停用" #: ../../WPrefs.app/Workspace.c:271 msgid "Top" msgstr "上" #: ../../WPrefs.app/Workspace.c:272 msgid "Bottom" msgstr "下" #: ../../WPrefs.app/Workspace.c:273 msgid "Top/Left" msgstr "上/左" #: ../../WPrefs.app/Workspace.c:274 msgid "Top/Right" msgstr "上/右" #: ../../WPrefs.app/Workspace.c:275 msgid "Bottom/Left" msgstr "下/左" #: ../../WPrefs.app/Workspace.c:276 msgid "Bottom/Right" msgstr "下/右" #: ../../WPrefs.app/Workspace.c:284 msgid "Dock/Clip" msgstr "停靠區/迴紋針" #: ../../WPrefs.app/Workspace.c:303 msgid "" "Disable/enable the application Dock (the\n" "vertical icon bar in the side of the screen)." msgstr "" "停用/啟用應用程式停靠區\n" "(螢幕邊的垂直圖示列)。" #: ../../WPrefs.app/Workspace.c:324 msgid "" "Disable/enable the Clip (that thing with\n" "a paper clip icon)." msgstr "" "停用/啟用迴紋針 (有迴紋針圖示的那個東西)。" #: ../../WPrefs.app/Workspace.c:364 msgid "Workspace Preferences" msgstr "工作區設定" #: ../../WPrefs.app/Workspace.c:366 msgid "" "Workspace navigation features.\n" "You can also enable/disable the Dock and Clip here." msgstr "" "工作區導航特色。\n" "你也可以在此啟用/停用停靠區與迴紋針。" #: ../../WPrefs.app/imagebrowser.c:95 msgid "View" msgstr "檢視" #: ../../WPrefs.app/main.c:59 #, c-format msgid "usage: %s [options]\n" msgstr "使用法: %s [選項]\n" #: ../../WPrefs.app/main.c:60 msgid "options:" msgstr "選項:" #: ../../WPrefs.app/main.c:61 msgid " -display <display>\tdisplay to be used" msgstr " -display <display>\t要使用的 display" #: ../../WPrefs.app/main.c:62 msgid " --version\t\tprint version number and exit" msgstr " --version\t\t印出版本編號並離開" #: ../../WPrefs.app/main.c:63 msgid " --help\t\tprint this message and exit" msgstr " --help\t\t顯示本說明訊息" #: ../../WPrefs.app/main.c:122 #, c-format msgid "too few arguments for %s" msgstr "%s 的參數太少" #: ../../WPrefs.app/main.c:145 msgid "X server does not support locale" msgstr "X 伺服器並不支援當地化 (locale)" #: ../../WPrefs.app/main.c:148 msgid "cannot set locale modifiers" msgstr "無法設定 locale modifiers" #: ../../WPrefs.app/main.c:154 #, c-format msgid "could not open display %s" msgstr "無法開啟 display %s" #: ../../WPrefs.app/main.c:162 msgid "could not initialize application" msgstr "無法啟始應用程式" msgid "Window Title" msgstr "視窗標題" msgid "Menu Text" msgstr "選單文字" msgid "Icon Title" msgstr "圖示標題" msgid "Clip Title" msgstr "迴紋針標題" msgid "Desktop Caption" msgstr "桌面標題" #~ msgid "Disable cycling color highlighting of icons." #~ msgstr "使圖示的循環色彩強調失效" #~ msgid "Click window to focus" #~ msgstr "按視窗取得焦點" #~ msgid "Focus follows mouse" #~ msgstr "焦點跟著滑鼠" #~ msgid "\"Sloppy\" focus" #~ msgstr "\"Sloppy\" 焦點" #~ msgid "Icon Display" #~ msgstr "圖示顯示" #~ msgid "New Command %i" #~ msgstr "新增命令 %i" #~ msgid "Workspaces" #~ msgstr "工作區" #~ msgid "Add Command" #~ msgstr "新增命令" #~ msgid "Add Submenu" #~ msgstr "增加副選單" #~ msgid "Add External Menu" #~ msgstr "增加外部選單" #~ msgid "Remove Item" #~ msgstr "刪除項目" #~ msgid "Cut Item" #~ msgstr "剪下項目" #~ msgid "Copy Item" #~ msgstr "複製項目" #~ msgid "Paste Item" #~ msgstr "貼上項目" #~ msgid "Label" #~ msgstr "標籤" #~ msgid "Hide Others" #~ msgstr "隱藏其他" #~ msgid "Legal Panel" #~ msgstr "法律面板" #~ msgid "Menu Path/Directory List" #~ msgstr "選單路徑/目錄清單" #~ msgid "Ask help to the Guru" #~ msgstr "向專家求助" #~ msgid "%s/Library/WindowMaker/plmenu" #~ msgstr "%s/Library/WindowMaker/plmenu" #~ msgid "" #~ "Could not copy default plmenu file from ~/GNUstep/Library/WindowMaker" #~ msgstr "在 ~/GNUstep/Library/WindowMaker 底下找不到預設的 plmenu 檔案" #~ 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 無法辨認 ~/G/D/WMRootMenu 的選單格式,原有的選單可能是 WPrefs 不支" #~ "援的格式,也可能是選單定義有語法錯誤;你希望繼續使用目前的選單並且在以後都" #~ "以手動編輯,還是讓 WPrefs 為你換上一個新的預設選單? " #~ msgid "Install default menu" #~ msgstr "安裝預設選單" #~ msgid "Any changes made in this section will not be saved" #~ msgstr "在這部份的任何改變不會被儲存" #~ msgid "Menu Guru - Select Type" #~ msgstr "選單專家 - 選取型態" #~ msgid "Next" #~ msgstr "下一步" #~ msgid "Menu Guru - Select Menu File" #~ msgstr "選單專家 - 選取選單檔" #~ msgid "Menu Guru - Select Pipe Command" #~ msgstr "選單專家 - 選取 Pipe 命令" #~ msgid "Menu Guru - Select Command" #~ msgstr "選單專家 - 選取命令" #~ msgid "Back" #~ msgstr "上一步" #~ 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" #~ "你要用什麼當作副目錄的內容?" #~ msgid "" #~ "A file containing the menu definition in the plain text (non-property " #~ "list) menu format." #~ msgstr "含有純文字(無特質清單)選單格式選單定義的檔案。" #~ msgid "" #~ "The menu definition generated by a script/program read through a pipe." #~ msgstr "由手稿/程式經過 pipe 讀入產生選單定義" #~ msgid "The files in one or more directories." #~ msgstr "檔案在一個或多個目錄中" #~ msgid "Type the path for the menu file:" #~ msgstr "輸入選單檔路徑:" #~ 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" #~ msgid "Type the command that will generate the menu definition:" #~ msgstr "輸入會產生選單定義的命令:" #~ 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 "" #~ "提供的命令必須產生且輸出有效的選單定義至標準輸出。這定義應該是純文字選單檔" #~ "格﹛A在 WindowMaker 包含的選單檔中有描述,通常在 ~/GNUstep/Library/" #~ "WindowMaker/menu" #~ msgid "" #~ "Type the path for the directory. You can type more than one path by " #~ "separating them with spaces." #~ msgstr "輸入目錄的路徑。你可以利用空白分隔輸入超過一個路徑。" #~ 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 影像)。" #~ msgid "" #~ "If the directory contain data files, type the command used to open these " #~ "files. Otherwise, leave it in blank." #~ msgstr "如果目錄含有資料檔,輸入用來開啟這些檔案的命令。否則,留空白。" #~ 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 "" #~ "目錄中的每一個檔案會有一個項目且會以提供的命令開啟。舉例來說,如果目錄含有" #~ "影鹿犮B命令是 \"xv -root\",目錄中的每一個檔案會有一個像 \"xv -root " #~ "imagefile\" 的項目。" #~ msgid "mouse button %s not supported by WPrefs." #~ msgstr "滑鼠按鈕 %s 未被 WPrefs 支援" #~ msgid "Invalid font %s." #~ msgstr "無效的字型 %s。" #~ msgid "Set Font..." #~ msgstr "設定字型..." #~ msgid "Menu Title Font" #~ msgstr "選單標題字型" #~ msgid "Menu Item Font" #~ msgstr "選單項目字型" #~ msgid "Icon Title Font" #~ msgstr "圖示標題字型" #~ msgid "Clip Title Font" #~ msgstr "迴紋針標題字型" #~ msgid "Geometry Display Font" #~ msgstr "位置表示字型" #~ msgid "" #~ "Sample Text\n" #~ "abcdefghijklmnopqrstuvxywz\n" #~ "ABCDEFGHIJKLMNOPQRSTUVXYWZ\n" #~ "0123456789" #~ msgstr "" #~ "範例文字\n" #~ "abcdefghijklmn...ㄅㄆㄇㄈㄉ\n" #~ "ABCDEFGHIJKLMN...視窗管理員\n" #~ "123...一二三" #~ msgid "Text Preferences" #~ msgstr "文字設定" #~ msgid "Workspace/Clip" #~ msgstr "工作區/迴紋真" #~ msgid "Icons" #~ msgstr "圖示" #~ msgid "Set..." #~ msgstr "設定..." #~ msgid "Unselected Items" #~ msgstr "未選取項目" #~ msgid "Selected Items" #~ msgstr "選取項目" #~ msgid "Text" #~ msgstr "文字" #~ msgid "Menu Title Background" #~ msgstr "選單標題背景" #~ msgid "Workspace Background" #~ msgstr "工作區背景" #~ msgid "Change" #~ msgstr "改變" #~ msgid "Clip Title Text" #~ msgstr "迴文針標題文字" #~ msgid "Normal" #~ msgstr "正常" #~ msgid "Collapsed" #~ msgstr "折疊" #~ msgid "Texture and Color Preferences" #~ msgstr "材質與色彩設定" #~ msgid "Window Maker Preferences Utility" #~ msgstr "Window Maker 設定公用程式" #~ msgid "Version %s for Window Maker %s" #~ msgstr "Window Maker %s 用版本 %s" #~ msgid "" #~ "Programming/Design: Alfredo K. Kojima\n" #~ "Artwork: Marco van Hylckama Vlieg\n" #~ "More Programming: James Thompson" #~ msgstr "" #~ "程式/設計:Alfredo K. Kojima\n" #~ "美術:Marco van Hylckama Vlieg\n" #~ "程式:James Thompson" #~ 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 條款下無任何保証地發送。" #~ "禁止單獨重新發送這程式中的圖示" #~ msgid "" #~ "Could not extract version from Window Maker. Make sure it is correctly " #~ "installed." #~ msgstr "無法得知 Window Maker 的版本。確定它安裝正確。" #~ msgid "" #~ "switch to first workspace when switching past the last workspace and vice-" #~ "versa" #~ msgstr "當切換超過最後一個工作區時切換至第一個工作區,反之亦然。" #~ 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 "" #~ "目前在 ~/G/D/WMRootMenu 的選單格式未被 WPrefs 支援。新選單會被建立。\n" #~ "你也可以用把 ~/G/D/WMRootMenu 換成 ~/G/L/W/plmenu 來得到預設選單。" ���WindowMaker-0.95.9/WPrefs.app/po/es.po��������������������������������������������������������������0000644�0001750�0001750�00000200264�13431646201�014344� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Spanish Pot file for WPrefs.app # # msgid "" msgstr "" "Project-Id-Version: 0.01\n" "POT-Creation-Date: 2003-09-18 13:47+0200\n" "PO-Revision-Date: 2003-09-19 03:05-0400\n" "Last-Translator: Alberto Giménez <algibe@teleline.es>\n" "Language-Team: Spanish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: unknown\n" #: ../../WPrefs.app/Appearance.c:1131 msgid "Select File" msgstr "Escoger Archivo" #: ../../WPrefs.app/Appearance.c:1533 msgid "Focused Window" msgstr "Ventana enfocada" #: ../../WPrefs.app/Appearance.c:1537 msgid "Unfocused Window" msgstr "Ventana desenfocada" #: ../../WPrefs.app/Appearance.c:1541 msgid "Owner of Focused Window" msgstr "Padre de Ventana Enfocada" #: ../../WPrefs.app/Appearance.c:1545 ../../WPrefs.app/Appearance.c:1862 msgid "Menu Title" msgstr "Título de Menú" #: ../../WPrefs.app/Appearance.c:1549 ../../WPrefs.app/Appearance.c:1551 msgid "Normal Item" msgstr "Ítem Normal" #: ../../WPrefs.app/Appearance.c:1555 msgid "Disabled Item" msgstr "Deshabilitado" #: ../../WPrefs.app/Appearance.c:1564 msgid "Highlighted" msgstr "Seleccionado" #: ../../WPrefs.app/Appearance.c:1755 msgid "Texture" msgstr "Textura" #: ../../WPrefs.app/Appearance.c:1763 msgid "Titlebar of Focused Window" msgstr "Título de Ventana Enfocada" #: ../../WPrefs.app/Appearance.c:1764 msgid "Titlebar of Unfocused Windows" msgstr "Título de Ventana no Enfocada" #: ../../WPrefs.app/Appearance.c:1765 msgid "Titlebar of Focused Window's Owner" msgstr "Título del padre de Vent. Enfocada" #: ../../WPrefs.app/Appearance.c:1766 msgid "Window Resizebar" msgstr "Barra de Redimensionado" #: ../../WPrefs.app/Appearance.c:1767 msgid "Titlebar of Menus" msgstr "Título de Menú" #: ../../WPrefs.app/Appearance.c:1768 msgid "Menu Items" msgstr "Ítems de Menú" #: ../../WPrefs.app/Appearance.c:1769 msgid "Icon Background" msgstr "Fondo de Icono" #: ../../WPrefs.app/Appearance.c:1784 msgid "" "Double click in the texture you want to use\n" "for the selected item." msgstr "" "Haga doble-click en la textura que desea\n" "usar para el ítem seleccionado." #: ../../WPrefs.app/Appearance.c:1798 msgid "New" msgstr "Nueva" #: ../../WPrefs.app/Appearance.c:1802 msgid "Create a new texture." msgstr "Crear una textura nueva." #: ../../WPrefs.app/Appearance.c:1810 msgid "Extract..." msgstr "Extraer..." #: ../../WPrefs.app/Appearance.c:1814 msgid "Extract texture(s) from a theme or a style file." msgstr "Extraer textura(s) de un tema o archivo de estilo" #: ../../WPrefs.app/Appearance.c:1824 msgid "Edit" msgstr "Editar" #: ../../WPrefs.app/Appearance.c:1827 msgid "Edit the highlighted texture." msgstr "Editar la textura seleccionada" #: ../../WPrefs.app/Appearance.c:1835 ../../WPrefs.app/TexturePanel.c:1316 msgid "Delete" msgstr "Eliminar" #: ../../WPrefs.app/Appearance.c:1839 msgid "Delete the highlighted texture." msgstr "Eliminar la textura seleccionada" #: ../../WPrefs.app/Appearance.c:1852 msgid "Color" msgstr "Color" #: ../../WPrefs.app/Appearance.c:1859 msgid "Focused Window Title" msgstr "Título de Ventana enfocada" #: ../../WPrefs.app/Appearance.c:1860 msgid "Unfocused Window Title" msgstr "Título de Ventana no Enfocada" #: ../../WPrefs.app/Appearance.c:1861 msgid "Owner of Focused Window Title" msgstr "Título de Padre de Ventana Enfocada" #: ../../WPrefs.app/Appearance.c:1863 msgid "Menu Item Text" msgstr "Texto de Ítem de Menú" #: ../../WPrefs.app/Appearance.c:1864 msgid "Disabled Menu Item Text" msgstr "Texto de Ítem Deshabilitado" #: ../../WPrefs.app/Appearance.c:1865 msgid "Menu Highlight Color" msgstr "Color de Selección de Menú" #: ../../WPrefs.app/Appearance.c:1866 msgid "Highlighted Menu Text Color" msgstr "Color de Texto de Selección" #: ../../WPrefs.app/Appearance.c:1905 msgid "Background" msgstr "Fondo" #: ../../WPrefs.app/Appearance.c:1917 ../../WPrefs.app/TexturePanel.c:1503 msgid "Browse..." msgstr "Buscar..." #: ../../WPrefs.app/Appearance.c:1930 msgid "Options" msgstr "Opciones" #: ../../WPrefs.app/Appearance.c:1937 msgid "Menu Style" msgstr "Estilo de Menú" #: ../../WPrefs.app/Appearance.c:1965 ../../WPrefs.app/Configurations.c:242 #: ../../WPrefs.app/Configurations.c:254 ../../WPrefs.app/Focus.c:288 #: ../../WPrefs.app/Focus.c:299 ../../WPrefs.app/MenuPreferences.c:134 #: ../../WPrefs.app/MenuPreferences.c:145 #: ../../WPrefs.app/MenuPreferences.c:173 #: ../../WPrefs.app/MenuPreferences.c:188 ../../WPrefs.app/MouseSettings.c:560 #: ../../WPrefs.app/MouseSettings.c:571 ../../WPrefs.app/WPrefs.c:558 #: ../../WPrefs.app/WPrefs.c:583 #, c-format msgid "could not load icon file %s" msgstr "no puedo cargar el archivo de icono %s" #: ../../WPrefs.app/Appearance.c:1979 msgid "Title Alignment" msgstr "Alineación de Título" #: ../../WPrefs.app/Appearance.c:1986 msgid "Left" msgstr "Izquierda" #: ../../WPrefs.app/Appearance.c:1989 ../../WPrefs.app/TexturePanel.c:1517 #: ../../WPrefs.app/Workspace.c:270 msgid "Center" msgstr "Centro" #: ../../WPrefs.app/Appearance.c:1992 msgid "Right" msgstr "Derecha" #: ../../WPrefs.app/Appearance.c:2216 msgid "Appearance Preferences" msgstr "Preferencias de Apariencia" #: ../../WPrefs.app/Appearance.c:2218 msgid "" "Background texture configuration for windows,\n" "menus and icons." msgstr "" "Configuración de texturas para\n" "ventanas, menús e iconos." #: ../../WPrefs.app/Appearance.c:2263 msgid "Extract Texture" msgstr "Extraer Textura" #: ../../WPrefs.app/Appearance.c:2283 msgid "Textures" msgstr "Texturas" #: ../../WPrefs.app/Appearance.c:2294 ../../WPrefs.app/WPrefs.c:302 msgid "Close" msgstr "Cerrar" #: ../../WPrefs.app/Appearance.c:2299 msgid "Extract" msgstr "Extraer" #: ../../WPrefs.app/Configurations.c:150 ../../WPrefs.app/Configurations.c:156 #: ../../WPrefs.app/MouseSettings.c:490 ../../WPrefs.app/WindowHandling.c:339 #: ../../WPrefs.app/WindowHandling.c:351 ../../WPrefs.app/Workspace.c:90 #: ../../WPrefs.app/Workspace.c:101 #, c-format msgid "could not load icon %s" msgstr "no puedo cargar el icono %s" #: ../../WPrefs.app/Configurations.c:164 ../../WPrefs.app/Workspace.c:109 #, c-format msgid "could not process icon %s: %s" msgstr "no puedo procesar el icono %s: %s" #: ../../WPrefs.app/Configurations.c:189 ../../WPrefs.app/Workspace.c:164 #, c-format msgid "could not load image file %s" msgstr "no puedo cargar la imagen %s" #: ../../WPrefs.app/Configurations.c:203 msgid "Icon Slide Speed" msgstr "Velocidad de Desplazamiento de Iconos" #: ../../WPrefs.app/Configurations.c:209 msgid "Shade Animation Speed" msgstr "Velocidad de Animación del Sombreado" #: ../../WPrefs.app/Configurations.c:271 msgid "Smooth Scaling" msgstr "Suavizar" #: ../../WPrefs.app/Configurations.c:272 msgid "" "Smooth scaled background images, neutralizing\n" "the `pixelization' effect. This will slow\n" "down loading of background images considerably." msgstr "" "Suavizar las imágenes de fondo que cambien de tamaño,\n" "neutralizando efectos de pixelación. Esto ralentizará\n" "considerablemente el despliegue de imágenes de fondo." #: ../../WPrefs.app/Configurations.c:313 msgid "Titlebar Style" msgstr "Botón de cerrado" #: ../../WPrefs.app/Configurations.c:351 msgid "Animations and Sound" msgstr "Sonido y Animaciones" #: ../../WPrefs.app/Configurations.c:357 msgid "Animations" msgstr "Animación" #: ../../WPrefs.app/Configurations.c:368 msgid "" "Disable/enable animations such as those shown\n" "for window miniaturization, shading etc." msgstr "" "Activar/desactivar animaciones como las usadas\n" "en miniaturización de ventanas, sombreado, etc." #: ../../WPrefs.app/Configurations.c:376 msgid "Superfluous" msgstr "Superfluo" #: ../../WPrefs.app/Configurations.c:387 msgid "" "Disable/enable `superfluous' features and\n" "animations. These include the `ghosting' of the\n" "dock when it's being moved to another side and\n" "the explosion animation when undocking icons." msgstr "" "Activar/desactivar capacidades 'superfluas' y\n" "animaciones. Esto incluye la transparencia del Dock\n" "cuando se mueve al lado opuesto y la animación de\n" "explosión de los íconos que se quitan del Dock." #: ../../WPrefs.app/Configurations.c:397 msgid "Sounds" msgstr "Sonidos" #: ../../WPrefs.app/Configurations.c:408 msgid "" "Disable/enable support for sound effects played\n" "for actions like shading and closing a window.\n" "You will need a module distributed separately\n" "for this. You can get it at:\n" "http://shadowmere.student.utwente.nl/" msgstr "" "Activar/desactivar el soporte para efectos sonoros para\n" "acciones como el sombreado y cerrar ventanas. Se necesita\n" "un módulo distribuido separadamente para esto. Puede\n" "obtenerse de http://www.frontiernet.net/~southgat/wmsound" #: ../../WPrefs.app/Configurations.c:419 msgid "" "Note: sound requires a module distributed\n" "separately" msgstr "Nota: el sonido requiere un módulo distribuido por separado" #: ../../WPrefs.app/Configurations.c:429 msgid "Dithering colormap for 8bpp" msgstr "Difuminado del mapa de colores para 8bpp" #: ../../WPrefs.app/Configurations.c:431 msgid "" "Number of colors to reserve for Window Maker\n" "on displays that support only 8bpp (PseudoColor)." msgstr "" "Número de colores a reservar para Window Maker\n" "en displays que soportan sólo 8bpp (PseudoColor)." #: ../../WPrefs.app/Configurations.c:438 msgid "Disable dithering in any visual/depth" msgstr "Deshabilitar el difuminado en cualquier profundidad de color" #: ../../WPrefs.app/Configurations.c:459 msgid "" "More colors for\n" "applications" msgstr "Más colores para\n" "las aplicaciones" #: ../../WPrefs.app/Configurations.c:466 msgid "" "More colors for\n" "Window Maker" msgstr "Más colores para\n" "Window Maker" #: ../../WPrefs.app/Configurations.c:521 msgid "Other Configurations" msgstr "Otras Configuraciones" #: ../../WPrefs.app/Configurations.c:523 msgid "" "Animation speeds, titlebar styles, various option\n" "toggling and number of colors to reserve for\n" "Window Maker on 8bit displays." msgstr "" "Velocidad de animación, estilos de barras de títulos,\n" "número de colores a reservar a Window Maker en displays\n" "de 8bpp (256 colores) y otras opciones misceláneas." #: ../../WPrefs.app/Expert.c:75 msgid "" "Disable miniwindows (icons for miniaturized windows). For use with KDE/GNOME." msgstr "" "Deshabilitar miniventanas (iconos de ventanas miniaturizadas). Para usar con " "Gnome/KDE." #: ../../WPrefs.app/Expert.c:76 msgid "Do not set non-WindowMaker specific parameters (do not use xset)." msgstr "No establecer parámetros no específicos de Window Maker (no usar xset)" #: ../../WPrefs.app/Expert.c:77 msgid "Automatically save session when exiting Window Maker." msgstr "Guardar automáticamente la sesión al salir de Window Maker" #: ../../WPrefs.app/Expert.c:78 msgid "Use SaveUnder in window frames, icons, menus and other objects." msgstr "Usar SaveUnder en marcos de ventanas, iconos, menús y otros objetos" #: ../../WPrefs.app/Expert.c:79 msgid "Use Windoze style cycling." msgstr "Usar el estilo de Windows para cambiar entre ventanas." #: ../../WPrefs.app/Expert.c:80 msgid "Disable confirmation panel for the Kill command." msgstr "Deshabilitar panel de confirmación para el comando Matar." #: ../../WPrefs.app/Expert.c:81 msgid "Disable selection animation for selected icons." msgstr "Desactivar animación de selección para los iconos seleccionados." #: ../../WPrefs.app/Expert.c:115 msgid "Expert User Preferences" msgstr "Preferencias Avanzadas" #: ../../WPrefs.app/Expert.c:117 msgid "" "Options for people who know what they're doing...\n" "Also have some other misc. options." msgstr "" "Opciones para gente que sabe lo que hace...\n" "También algunas opciones misceláneas." #: ../../WPrefs.app/Focus.c:80 #, c-format msgid "bad option value %s for option FocusMode. Using default Manual" msgstr "" "valor incorrecto (%s) para la opción FocusMode. Usando el valor por defecto " "(Manual)" #: ../../WPrefs.app/Focus.c:94 #, c-format msgid "bad option value %s for option ColormapMode. Using default Auto" msgstr "" "valor incorrecto (%s) para la opción ColormapMode. Usando el valor por " "defecto (Manual)" #: ../../WPrefs.app/Focus.c:214 msgid "Input Focus Mode" msgstr "Modo de Foco de Teclado" #: ../../WPrefs.app/Focus.c:222 msgid "Manual: Click on the window to set keyboard input focus" msgstr "Manual: Pinchar en la ventana para enfocar" #: ../../WPrefs.app/Focus.c:229 msgid "Auto: Set keyboard input focus to the window under the mouse pointer" msgstr "" "Auto: Dar foco a la ventana bajo el puntero del ratón" #: ../../WPrefs.app/Focus.c:243 msgid "Install colormap from the window..." msgstr "Instalar el mapa de colores de la ventana..." #: ../../WPrefs.app/Focus.c:248 msgid "...that has the input focus" msgstr "...que tiene el foco de teclado" #: ../../WPrefs.app/Focus.c:253 msgid "...that's under the mouse pointer" msgstr "...que está bajo el ratón" #: ../../WPrefs.app/Focus.c:262 msgid "Automatic Window Raise Delay" msgstr "Retraso en el Alzado de Ventanas" #: ../../WPrefs.app/Focus.c:319 ../../WPrefs.app/MouseSettings.c:601 msgid "ms" msgstr "ms" #: ../../WPrefs.app/Focus.c:336 msgid "Do not let applications receive the click used to focus windows" msgstr "No permitir a las aplicaciones recibir el click usado para darle foco" #: ../../WPrefs.app/Focus.c:342 msgid "Automatically focus new windows" msgstr "Dar foco automáticamente a las ventanas nuevas" #: ../../WPrefs.app/Focus.c:363 msgid "Window Focus Preferences" msgstr "Preferencias de Foco de Ventanas" #: ../../WPrefs.app/Focus.c:365 msgid "" "Keyboard focus switching policy, colormap switching\n" "policy for 8bpp displays and other related options." msgstr "" "Política de cambio de foco, política de cambio de\n" "mapa de colores para displays de 8bpp (256 colores)\n" "y otras opciones relacionadas." #: ../../WPrefs.app/Font.c:276 msgid "Could not locate font information file WPrefs.app/font.data" msgstr "" "No fue posible encontrar archivo de información de fuente\"\n" "\"WPrefs.app/font.data\"" #: ../../WPrefs.app/Font.c:282 msgid "Could not read font information file WPrefs.app/font.data" msgstr "" "No fue posible leer archivo de información de fuente WPrefs.app/font.data" #: ../../WPrefs.app/Font.c:293 msgid "" "Invalid data in font information file WPrefs.app/font.data.\n" "Encodings data not found." msgstr "" "Datos no válidos en el archivo de información de fuente WPrefs.app/font." "data.\n" "Datos de codificación no encontrados." #: ../../WPrefs.app/Font.c:298 msgid "- Custom -" msgstr "Personalizar" #: ../../WPrefs.app/Font.c:329 ../../WPrefs.app/Menu.c:1594 #: ../../WPrefs.app/MouseSettings.c:140 ../../WPrefs.app/MouseSettings.c:160 #: ../../WPrefs.app/TexturePanel.c:613 ../../WPrefs.app/TexturePanel.c:693 #: ../../WPrefs.app/Themes.c:96 ../../WPrefs.app/WPrefs.c:758 #: ../../WPrefs.app/WPrefs.c:763 ../../WPrefs.app/WPrefs.c:780 #: ../../WPrefs.app/WPrefs.c:790 ../../WPrefs.app/WPrefs.c:800 #: ../../WPrefs.app/WPrefs.c:838 ../../WPrefs.app/WPrefs.c:843 msgid "Error" msgstr "Error" #: ../../WPrefs.app/Font.c:329 ../../WPrefs.app/Menu.c:1594 #: ../../WPrefs.app/MouseSettings.c:142 ../../WPrefs.app/MouseSettings.c:162 #: ../../WPrefs.app/TexturePanel.c:614 ../../WPrefs.app/TexturePanel.c:695 #: ../../WPrefs.app/TexturePanel.c:1528 ../../WPrefs.app/Themes.c:98 #: ../../WPrefs.app/WPrefs.c:758 ../../WPrefs.app/WPrefs.c:763 #: ../../WPrefs.app/WPrefs.c:782 ../../WPrefs.app/WPrefs.c:794 #: ../../WPrefs.app/WPrefs.c:800 ../../WPrefs.app/WPrefs.c:807 #: ../../WPrefs.app/WPrefs.c:838 ../../WPrefs.app/WPrefs.c:843 #: ../../WPrefs.app/imagebrowser.c:105 msgid "OK" msgstr "Ok" #: ../../WPrefs.app/Font.c:376 msgid "Default Font Sets" msgstr "Estilos de fuente estándar" #: ../../WPrefs.app/Font.c:389 msgid "Font Set" msgstr "Estilo de Fuente" #: ../../WPrefs.app/Font.c:418 msgid "Add..." msgstr "Agregar..." #: ../../WPrefs.app/Font.c:423 ../../WPrefs.app/Font.c:438 msgid "Change..." msgstr "Cambiar..." #: ../../WPrefs.app/Font.c:428 ../../WPrefs.app/Paths.c:288 #: ../../WPrefs.app/Paths.c:319 msgid "Remove" msgstr "Eliminar" #: ../../WPrefs.app/Font.c:477 msgid "Font Preferences" msgstr "Preferencias de Fuente" #: ../../WPrefs.app/Font.c:478 msgid "Font Configurations for Windows, Menus etc" msgstr "Configuración de fuentes para las Ventanas, Menús, etc." #: ../../WPrefs.app/Icons.c:180 msgid "Icon Positioning" msgstr "Posicionamiento de Iconos" #: ../../WPrefs.app/Icons.c:227 msgid "Iconification Animation" msgstr "Animación de la iconificación" #: ../../WPrefs.app/Icons.c:238 msgid "Shrinking/Zooming" msgstr "Encogiendo/Acercando" #: ../../WPrefs.app/Icons.c:239 msgid "Spinning/Twisting" msgstr "Girando/Torciendo" #: ../../WPrefs.app/Icons.c:240 msgid "3D-flipping" msgstr "Rotando 3D" #: ../../WPrefs.app/Icons.c:241 ../../WPrefs.app/MouseSettings.c:838 #: ../../WPrefs.app/MouseSettings.c:843 msgid "None" msgstr "Ninguna" #: ../../WPrefs.app/Icons.c:254 msgid "Auto-arrange icons" msgstr "Auto-ordenar iconos" #: ../../WPrefs.app/Icons.c:256 msgid "Keep icons and miniwindows arranged all the time." msgstr "Mantener iconos y miniventanas ordenados todo el tiempo." #: ../../WPrefs.app/Icons.c:262 msgid "Omnipresent miniwindows" msgstr "Miniventanas omnipresentes" #: ../../WPrefs.app/Icons.c:264 msgid "Make miniwindows be present in all workspaces." msgstr "Hacer que las miniventanas estén presentes en todas las áreas." #: ../../WPrefs.app/Icons.c:273 msgid "Icon Size" msgstr "Tamaño de Iconos" #: ../../WPrefs.app/Icons.c:275 msgid "The size of the dock/application icon and miniwindows" msgstr "El tamaño del dock e iconos de aplicaciones y miniventanas." #: ../../WPrefs.app/Icons.c:345 msgid "Icon Preferences" msgstr "Preferencias de Iconos" #: ../../WPrefs.app/Icons.c:347 msgid "" "Icon/Miniwindow handling options. Icon positioning\n" "area, sizes of icons, miniaturization animation style." msgstr "" "Opciones de manejo de iconos y miniventanas. Área de\n" "posicionamiento de iconos, tamaño de iconos, estilo de\n" "animación de miniaturización." #: ../../WPrefs.app/KeyboardSettings.c:73 msgid "Initial Key Repeat" msgstr "Repetición inicial" #: ../../WPrefs.app/KeyboardSettings.c:114 msgid "Key Repeat Rate" msgstr "Tasa de Repetición de Teclas" #: ../../WPrefs.app/KeyboardSettings.c:154 msgid "Type here to test" msgstr "Escriba aquí para probar" #: ../../WPrefs.app/KeyboardSettings.c:173 msgid "Keyboard Preferences" msgstr "Preferencias de Teclado" #: ../../WPrefs.app/KeyboardSettings.c:175 msgid "Not done" msgstr "No hecho" #: ../../WPrefs.app/KeyboardShortcuts.c:306 ../../WPrefs.app/Menu.c:360 #: ../../WPrefs.app/TexturePanel.c:1534 ../../WPrefs.app/imagebrowser.c:100 msgid "Cancel" msgstr "Cancelar" #: ../../WPrefs.app/KeyboardShortcuts.c:307 msgid "Press the desired shortcut key(s) or click Cancel to stop capturing." msgstr "" "Presione la secuencia deseada o pinche Cancelar para abortar la captura." #: ../../WPrefs.app/KeyboardShortcuts.c:327 #: ../../WPrefs.app/KeyboardShortcuts.c:577 ../../WPrefs.app/Menu.c:371 #: ../../WPrefs.app/Menu.c:830 msgid "Capture" msgstr "Capturar" #: ../../WPrefs.app/KeyboardShortcuts.c:328 #: ../../WPrefs.app/KeyboardShortcuts.c:585 msgid "Click Capture to interactively define the shortcut key." msgstr "Pinche Capturar para definir la secuencia." #: ../../WPrefs.app/KeyboardShortcuts.c:483 msgid "Actions" msgstr "Acciones" #: ../../WPrefs.app/KeyboardShortcuts.c:499 msgid "Open applications menu" msgstr "Abrir menú de aplicaciones" #: ../../WPrefs.app/KeyboardShortcuts.c:500 msgid "Open window list menu" msgstr "Abrir menú de lista de ventanas" #: ../../WPrefs.app/KeyboardShortcuts.c:501 msgid "Open window commands menu" msgstr "Abrir menú de acciones de ventana" #: ../../WPrefs.app/KeyboardShortcuts.c:502 msgid "Hide active application" msgstr "Esconder aplicación activa" #: ../../WPrefs.app/KeyboardShortcuts.c:503 msgid "Hide other applications" msgstr "Esconder otras aplicaciones" #: ../../WPrefs.app/KeyboardShortcuts.c:504 msgid "Miniaturize active window" msgstr "Miniaturizar la ventana activa" #: ../../WPrefs.app/KeyboardShortcuts.c:505 msgid "Close active window" msgstr "Cerrar la ventana activa" #: ../../WPrefs.app/KeyboardShortcuts.c:506 msgid "Maximize active window" msgstr "Maximizar la ventana activa" #: ../../WPrefs.app/KeyboardShortcuts.c:507 msgid "Maximize active window vertically" msgstr "Maximizar la ventana activa verticalmente" #: ../../WPrefs.app/KeyboardShortcuts.c:508 msgid "Maximize active window horizontally" msgstr "Maximizar la ventana activa horizontalmente" #: ../../WPrefs.app/KeyboardShortcuts.c:509 msgid "Raise active window" msgstr "Alzar la ventana activa" #: ../../WPrefs.app/KeyboardShortcuts.c:510 msgid "Lower active window" msgstr "Bajar la ventana activa" #: ../../WPrefs.app/KeyboardShortcuts.c:511 msgid "Raise/Lower window under mouse pointer" msgstr "Alzar/bajar la ventana bajo el ratón" #: ../../WPrefs.app/KeyboardShortcuts.c:512 msgid "Shade active window" msgstr "Sombrear la ventana activa" #: ../../WPrefs.app/KeyboardShortcuts.c:513 msgid "Move/Resize active window" msgstr "Mover/redimensionar ventana activa" #: ../../WPrefs.app/KeyboardShortcuts.c:514 msgid "Select active window" msgstr "Seleccionar ventana activa" #: ../../WPrefs.app/KeyboardShortcuts.c:515 msgid "Focus next window" msgstr "Enfocar la siguiente ventana" #: ../../WPrefs.app/KeyboardShortcuts.c:516 msgid "Focus previous window" msgstr "Enfocar la ventana anterior" #: ../../WPrefs.app/KeyboardShortcuts.c:517 msgid "Switch to next workspace" msgstr "Cambiar a la siguiente área de trabajo" #: ../../WPrefs.app/KeyboardShortcuts.c:518 msgid "Switch to previous workspace" msgstr "Cambiar al área de trabajo anterior" #: ../../WPrefs.app/KeyboardShortcuts.c:519 msgid "Switch to next ten workspaces" msgstr "Cambiar diez áreas más adelante" #: ../../WPrefs.app/KeyboardShortcuts.c:520 msgid "Switch to previous ten workspaces" msgstr "Cambiar diez áreas más atrás" #: ../../WPrefs.app/KeyboardShortcuts.c:521 msgid "Switch to workspace 1" msgstr "Cambiar al área de trabajo 1" #: ../../WPrefs.app/KeyboardShortcuts.c:522 msgid "Switch to workspace 2" msgstr "Cambiar al área de trabajo 2" #: ../../WPrefs.app/KeyboardShortcuts.c:523 msgid "Switch to workspace 3" msgstr "Cambiar al área de trabajo 3" #: ../../WPrefs.app/KeyboardShortcuts.c:524 msgid "Switch to workspace 4" msgstr "Cambiar al área de trabajo 4" #: ../../WPrefs.app/KeyboardShortcuts.c:525 msgid "Switch to workspace 5" msgstr "Cambiar al área de trabajo 5" #: ../../WPrefs.app/KeyboardShortcuts.c:526 msgid "Switch to workspace 6" msgstr "Cambiar al área de trabajo 6" #: ../../WPrefs.app/KeyboardShortcuts.c:527 msgid "Switch to workspace 7" msgstr "Cambiar al área de trabajo 7" #: ../../WPrefs.app/KeyboardShortcuts.c:528 msgid "Switch to workspace 8" msgstr "Cambiar al área de trabajo 8" #: ../../WPrefs.app/KeyboardShortcuts.c:529 msgid "Switch to workspace 9" msgstr "Cambiar al área de trabajo 9" #: ../../WPrefs.app/KeyboardShortcuts.c:530 msgid "Switch to workspace 10" msgstr "Cambiar al área de trabajo 10" #: ../../WPrefs.app/KeyboardShortcuts.c:531 msgid "Shortcut for window 1" msgstr "Secuencia para ventana 1" #: ../../WPrefs.app/KeyboardShortcuts.c:532 msgid "Shortcut for window 2" msgstr "Secuencia para ventana 2" #: ../../WPrefs.app/KeyboardShortcuts.c:533 msgid "Shortcut for window 3" msgstr "Secuencia para ventana 3" #: ../../WPrefs.app/KeyboardShortcuts.c:534 msgid "Shortcut for window 4" msgstr "Secuencia para ventana 4" #: ../../WPrefs.app/KeyboardShortcuts.c:535 msgid "Shortcut for window 5" msgstr "Secuencia para ventana 5" #: ../../WPrefs.app/KeyboardShortcuts.c:536 msgid "Shortcut for window 6" msgstr "Secuencia para ventana 6" #: ../../WPrefs.app/KeyboardShortcuts.c:537 msgid "Shortcut for window 7" msgstr "Secuencia para ventana 7" #: ../../WPrefs.app/KeyboardShortcuts.c:538 msgid "Shortcut for window 8" msgstr "Secuencia para ventana 8" #: ../../WPrefs.app/KeyboardShortcuts.c:539 msgid "Shortcut for window 9" msgstr "Secuencia para ventana 9" #: ../../WPrefs.app/KeyboardShortcuts.c:540 msgid "Shortcut for window 10" msgstr "Secuencia para ventana 10" #: ../../WPrefs.app/KeyboardShortcuts.c:541 msgid "Switch to Next Screen/Monitor" msgstr "Cambiar a la siguiente Pantalla/Monitor" #: ../../WPrefs.app/KeyboardShortcuts.c:542 msgid "Raise Clip" msgstr "Alzar Clip" #: ../../WPrefs.app/KeyboardShortcuts.c:543 msgid "Lower Clip" msgstr "Bajar Clip" #: ../../WPrefs.app/KeyboardShortcuts.c:544 msgid "Raise/Lower Clip" msgstr "Alzar/Bajar Clip" #: ../../WPrefs.app/KeyboardShortcuts.c:546 msgid "Toggle keyboard language" msgstr "Cambiar idioma del teclado" #: ../../WPrefs.app/KeyboardShortcuts.c:560 msgid "Shortcut" msgstr "Secuencia" #: ../../WPrefs.app/KeyboardShortcuts.c:571 ../../WPrefs.app/Menu.c:836 msgid "Clear" msgstr "Limpiar" #: ../../WPrefs.app/KeyboardShortcuts.c:633 msgid "Keyboard Shortcut Preferences" msgstr "Secuencias de Teclado" #: ../../WPrefs.app/KeyboardShortcuts.c:635 msgid "" "Change the keyboard shortcuts for actions such\n" "as changing workspaces and opening menus." msgstr "" "Cambiar las secuencias de teclado para acciones como\n" "cambiar de áreas y abrir menús." #: ../../WPrefs.app/Menu.c:278 msgid "Select Program" msgstr "Escoja Programa" #: ../../WPrefs.app/Menu.c:510 msgid "New Items" msgstr "Nuevas entradas" #: ../../WPrefs.app/Menu.c:511 msgid "Sample Commands" msgstr "Comandos de ejemplo" #: ../../WPrefs.app/Menu.c:512 msgid "Sample Submenus" msgstr "Submenus de ejemplo" #: ../../WPrefs.app/Menu.c:526 msgid "Run Program" msgstr "Ejecutar Programa" #: ../../WPrefs.app/Menu.c:527 msgid "Internal Command" msgstr "Comando Interno" #: ../../WPrefs.app/Menu.c:528 msgid "Submenu" msgstr "Submenú" #: ../../WPrefs.app/Menu.c:529 msgid "External Submenu" msgstr "Submenú Externo" #: ../../WPrefs.app/Menu.c:530 msgid "Generated Submenu" msgstr "Submenú Generado" #: ../../WPrefs.app/Menu.c:531 msgid "Directory Contents" msgstr "Contenido de Directorio" #: ../../WPrefs.app/Menu.c:532 msgid "Workspace Menu" msgstr "Menú de Areas" #: ../../WPrefs.app/Menu.c:533 ../../WPrefs.app/MouseSettings.c:840 msgid "Window List Menu" msgstr "Lista de ventanas" #: ../../WPrefs.app/Menu.c:552 msgid "XTerm" msgstr "XTerm" #: ../../WPrefs.app/Menu.c:555 msgid "rxvt" msgstr "rxvt" #: ../../WPrefs.app/Menu.c:558 msgid "ETerm" msgstr "ETerm" #: ../../WPrefs.app/Menu.c:561 msgid "Run..." msgstr "Ejecutar..." #: ../../WPrefs.app/Menu.c:562 msgid "%a(Run,Type command to run)" msgstr "%a(Run,Entre comando a ejecutar)" #: ../../WPrefs.app/Menu.c:564 msgid "Netscape" msgstr "Netscape" #: ../../WPrefs.app/Menu.c:567 msgid "gimp" msgstr "gimp" #: ../../WPrefs.app/Menu.c:570 msgid "epic" msgstr "epic" #: ../../WPrefs.app/Menu.c:573 msgid "ee" msgstr "ee" #: ../../WPrefs.app/Menu.c:576 msgid "xv" msgstr "xv" #: ../../WPrefs.app/Menu.c:579 msgid "Acrobat Reader" msgstr "Acrobat Reader" #: ../../WPrefs.app/Menu.c:582 msgid "ghostview" msgstr "ghostview" #: ../../WPrefs.app/Menu.c:585 ../../WPrefs.app/Menu.c:857 msgid "Exit Window Maker" msgstr "Salir de Window Maker" #: ../../WPrefs.app/Menu.c:608 msgid "Debian Menu" msgstr "Menú Debian" #: ../../WPrefs.app/Menu.c:611 msgid "RedHat Menu" msgstr "Menú RedHat" #: ../../WPrefs.app/Menu.c:614 msgid "Menu Conectiva" msgstr "Menú Conectiva" #: ../../WPrefs.app/Menu.c:617 ../../WPrefs.app/Themes.c:250 msgid "Themes" msgstr "Temas" #: ../../WPrefs.app/Menu.c:622 msgid "Bg Images (scale)" msgstr "Imágenes de fondo (escaladas)" #: ../../WPrefs.app/Menu.c:627 msgid "Bg Images (tile)" msgstr "Imágenes de fondo (mosaico)" #: ../../WPrefs.app/Menu.c:632 msgid "Assorted XTerms" msgstr "XTerms variadas" #: ../../WPrefs.app/Menu.c:634 msgid "XTerm Yellow on Blue" msgstr "XTerm Amarilla sobre Azul" #: ../../WPrefs.app/Menu.c:637 msgid "XTerm White on Black" msgstr "XTerm Blanco sobre Negro" #: ../../WPrefs.app/Menu.c:640 msgid "XTerm Black on White" msgstr "XTerm Negro sobre Blanco" #: ../../WPrefs.app/Menu.c:643 msgid "XTerm Black on Beige" msgstr "XTerm Negro sobre Beige" #: ../../WPrefs.app/Menu.c:646 msgid "XTerm White on Green" msgstr "XTerm Blanco sobre Verde" #: ../../WPrefs.app/Menu.c:649 msgid "XTerm White on Olive" msgstr "XTerm Blanco sobre Oliva" #: ../../WPrefs.app/Menu.c:652 msgid "XTerm Blue on Blue" msgstr "XTerm Azul sobre Azul" #: ../../WPrefs.app/Menu.c:655 msgid "XTerm BIG FONTS" msgstr "XTerm FUENTES GRANDES" #: ../../WPrefs.app/Menu.c:677 msgid "Program to Run" msgstr "Programa a Ejecutar" #: ../../WPrefs.app/Menu.c:687 msgid "Browse" msgstr "Buscar..." #: ../../WPrefs.app/Menu.c:698 msgid "Run the program inside a Xterm" msgstr "Ejecutar el programa dentro de una Xterm" #: ../../WPrefs.app/Menu.c:708 msgid "Path for Menu" msgstr "Path para el menú" #: ../../WPrefs.app/Menu.c:721 msgid "" "Enter the path for a file containing a menu\n" "or a list of directories with the programs you\n" "want to have listed in the menu. Ex:\n" "~/GNUstep/Library/WindowMaker/menu\n" "or\n" "/usr/bin ~/xbin" msgstr "" "Introduzca el path de un archivo que contenga\n" "un menú o una lista de directorios con los\n" "programas que quiere listados en el menú.\n" "Ej: ~/GNUstep/Library/WindowMaker/menu o \n" "/usr/bin ~/xbin" #: ../../WPrefs.app/Menu.c:736 msgid "Command" msgstr "Comando" #: ../../WPrefs.app/Menu.c:750 msgid "" "Enter a command that outputs a menu\n" "definition to stdout when invoked." msgstr "" "Introduzca un programa que como salida\n" "tenga una definición de menú." #: ../../WPrefs.app/Menu.c:758 msgid "" "Cache menu contents after opening for\n" "the first time" msgstr "" "Cachear los contenidos del menú después\n" "de abrirlo por primera vez" #: ../../WPrefs.app/Menu.c:769 msgid "Command to Open Files" msgstr "Programa para abrir archivos" #: ../../WPrefs.app/Menu.c:783 msgid "" "Enter the command you want to use to open the\n" "files in the directories listed below." msgstr "" "Introduzca el programa a usar para abrir los\n" "archivos en los directorios listados abajo." #: ../../WPrefs.app/Menu.c:792 msgid "Directories with Files" msgstr "Direcotrios con Archivos" #: ../../WPrefs.app/Menu.c:805 msgid "Strip extensions from file names" msgstr "Quitar extensiones de los nombres de archivo" #: ../../WPrefs.app/Menu.c:817 msgid "Keyboard Shortcut" msgstr "Secuencias de Teclado" #: ../../WPrefs.app/Menu.c:853 msgid "Arrange Icons" msgstr "Ordenar Iconos" #: ../../WPrefs.app/Menu.c:854 msgid "Hide All Windows Except For The Focused One" msgstr "Esconder todas las ventanas excepto la que tiene foco" #: ../../WPrefs.app/Menu.c:855 msgid "Show All Windows" msgstr "Mostrar Todos" #: ../../WPrefs.app/Menu.c:858 msgid "Exit X Session" msgstr "Salir de la sesión X" #: ../../WPrefs.app/Menu.c:859 msgid "Restart Window Maker" msgstr "Reiniciar Window Maker" #: ../../WPrefs.app/Menu.c:860 msgid "Start Another Window Manager : (" msgstr "Arrancar otro administrador de ventanas" #: ../../WPrefs.app/Menu.c:862 msgid "Save Current Session" msgstr "Guardar la sesión" #: ../../WPrefs.app/Menu.c:863 msgid "Clear Saved Session" msgstr "Limpiar la sesión" #: ../../WPrefs.app/Menu.c:864 msgid "Refresh Screen" msgstr "Redibujar la pantalla" #: ../../WPrefs.app/Menu.c:865 msgid "Open Info Panel" msgstr "Panel de Información" #: ../../WPrefs.app/Menu.c:866 msgid "Open Copyright Panel" msgstr "Panel de Copyright" #: ../../WPrefs.app/Menu.c:872 msgid "Window Manager to Start" msgstr "Administrador de Ventanas" #: ../../WPrefs.app/Menu.c:888 msgid "Do not confirm action." msgstr "Sin panel de confirmación" #: ../../WPrefs.app/Menu.c:898 msgid "" "Instructions:\n" "\n" " - drag items from the left to the menu to add new items\n" " - drag items out of the menu to remove items\n" " - drag items in menu to change their position\n" " - drag items with Control pressed to copy them\n" " - double click in a menu item to change the label\n" " - click on a menu item to change related information" msgstr "" "Instrucciones:\n" "\n" " - Arrastre ítems de la izquierda al menú para añadirlos\n" " - Arrastre ítems fuera del menú para eliminarlos\n" " - Arrastre ítems dentro del menú para cambiar su posición\n" " - Arrastre ítems con Control presionado para copiarlos\n" " - Doble clic en una entrada del menú para cambiar la etiqueta\n" " - Clic en una entrada deel menú para cambiar la información" #: ../../WPrefs.app/Menu.c:1122 #, c-format msgid "unknown command '%s' in menu" msgstr "Orden desconocida '%s' en el menu" #: ../../WPrefs.app/Menu.c:1154 msgid ": Execute Program" msgstr ": Ejecutar Programa" #: ../../WPrefs.app/Menu.c:1158 msgid ": Perform Internal Command" msgstr ": Ejecutar una orden interna" #: ../../WPrefs.app/Menu.c:1162 msgid ": Open a Submenu" msgstr ": Abrir Submenú" #: ../../WPrefs.app/Menu.c:1166 msgid ": Program Generated Submenu" msgstr ": Submenú generado por programa" #: ../../WPrefs.app/Menu.c:1170 msgid ": Directory Contents Menu" msgstr ": Menú de contenido de directorio" #: ../../WPrefs.app/Menu.c:1174 msgid ": Open Workspaces Submenu" msgstr ": Abrir menú de Areas" #: ../../WPrefs.app/Menu.c:1178 msgid ": Open Window List Submenu" msgstr ": Abrir menú de lista de ventanas" #: ../../WPrefs.app/Menu.c:1403 msgid "Remove Submenu" msgstr "Eliminar Submenú" #: ../../WPrefs.app/Menu.c:1404 msgid "" "Removing this item will destroy all items inside\n" "the submenu. Do you really want to do that?" msgstr "" "Eliminar esta entrada eliminará todas las entradas\n" "dentro del submenú. ¿Realmente desea hacerlo?" #: ../../WPrefs.app/Menu.c:1406 msgid "Yes" msgstr "Sí" #: ../../WPrefs.app/Menu.c:1406 msgid "No" msgstr "No" #: ../../WPrefs.app/Menu.c:1407 msgid "Yes, don't ask again" msgstr "Sí, no preguntarme más" #. if there is a localized plmenu for the tongue put it's filename here #: ../../WPrefs.app/Menu.c:1575 ../../WPrefs.app/Menu.c:1582 #, c-format msgid "%s/Library/WindowMaker/plmenu" msgstr "%s/Library/WindowMaker/plmenu" #: ../../WPrefs.app/Menu.c:1591 #, c-format msgid "Could not open default menu from '%s'" msgstr "no se pudo abrir el menú por defecto de '%s'" #: ../../WPrefs.app/Menu.c:1629 ../../WPrefs.app/WPrefs.c:807 msgid "Warning" msgstr "Atención" #: ../../WPrefs.app/Menu.c:1630 msgid "" "The menu file format currently in use is not supported\n" "by this tool. Do you want to discard the current menu\n" "to use this tool?" msgstr "" "El formato del fichero de menú actualmente en uso no\n" "está soportado por esta herramienta. ¿Quiere desechar\n" "el menú actual para usar esta herramienta?" #: ../../WPrefs.app/Menu.c:1633 msgid "Yes, Discard and Update" msgstr "Sí, desechar y actualizar" #: ../../WPrefs.app/Menu.c:1634 msgid "No, Keep Current Menu" msgstr "Mantener el menú actual" #: ../../WPrefs.app/Menu.c:1897 msgid "Applications Menu Definition" msgstr "Definición de Menú de Aplicaciones" #: ../../WPrefs.app/Menu.c:1899 msgid "Edit the menu for launching applications." msgstr "Editar el menú para lanzar aplicaciones" #: ../../WPrefs.app/MenuPreferences.c:111 msgid "Menu Scrolling Speed" msgstr "Velocidad de desplazamiento del menú" #: ../../WPrefs.app/MenuPreferences.c:160 msgid "Submenu Alignment" msgstr "Alineamiento de submenús" #: ../../WPrefs.app/MenuPreferences.c:204 msgid "" "Always open submenus inside the screen, instead of scrolling." msgstr "" "Siempre abrir submenús dentro de la pantalla en vez de desplazarlos." #: ../../WPrefs.app/MenuPreferences.c:209 msgid "Scroll off-screen menus when pointer is moved over them." msgstr "Desplazar los menús cuando el puntero del ratón se mueva sobre ellos." #: ../../WPrefs.app/MenuPreferences.c:229 msgid "Menu Preferences" msgstr "Preferencias de menú" #: ../../WPrefs.app/MenuPreferences.c:231 msgid "" "Menu usability related options. Scrolling speed,\n" "alignment of submenus etc." msgstr "" "Opciones relacionadas al uso de menús. Velocidad\n" "de desplazamiento, alineación de submenús, etc." #: ../../WPrefs.app/MouseSettings.c:141 msgid "Invalid mouse acceleration value. Must be a positive real value." msgstr "Valor de aceleración incorrecto. Debe ser un valor real positivo." #: ../../WPrefs.app/MouseSettings.c:161 msgid "" "Invalid mouse acceleration threshold value. Must be the number of pixels to " "travel before accelerating." msgstr "" "Valor de umbral de aceleración incorrecto. Debe ser el número de pixels a " "viajar antes de acelerar." #: ../../WPrefs.app/MouseSettings.c:262 ../../WPrefs.app/MouseSettings.c:274 #: ../../WPrefs.app/MouseSettings.c:286 ../../WPrefs.app/MouseSettings.c:298 #, c-format msgid "bad value %s for option %s" msgstr "valor erróneo (%s) para la opcion %s" #: ../../WPrefs.app/MouseSettings.c:357 #, c-format msgid "" "modifier key %s for option ModifierKey was not recognized. Using %s as " "default" msgstr "" "la tecla modificadora %s para la opción ModifierKey no fue reconocida. " "Usando %s como valor por defecto." #: ../../WPrefs.app/MouseSettings.c:382 msgid "could not retrieve keyboard modifier mapping" msgstr "no se pudo obtener el mapa de modificadores de teclado" #: ../../WPrefs.app/MouseSettings.c:477 msgid "Mouse Speed" msgstr "Velocidad del Ratón" #: ../../WPrefs.app/MouseSettings.c:507 msgid "Accel.:" msgstr "Aceleración" #: ../../WPrefs.app/MouseSettings.c:520 msgid "Threshold:" msgstr "Umbral:" #: ../../WPrefs.app/MouseSettings.c:535 msgid "Double-Click Delay" msgstr "Retraso Doble-Click" #: ../../WPrefs.app/MouseSettings.c:579 msgid "Test" msgstr "Prueba" #: ../../WPrefs.app/MouseSettings.c:609 msgid "Workspace Mouse Actions" msgstr "Acciones de ratón para Áreas" #: ../../WPrefs.app/MouseSettings.c:614 msgid "Disable mouse actions" msgstr "Deshabilitar acciones de ratón" #: ../../WPrefs.app/MouseSettings.c:620 msgid "Left Button" msgstr "Botón izquierdo" #: ../../WPrefs.app/MouseSettings.c:630 msgid "Middle Button" msgstr "Botón central" #: ../../WPrefs.app/MouseSettings.c:640 msgid "Right Button" msgstr "Botón derecho" #: ../../WPrefs.app/MouseSettings.c:650 msgid "Mouse Wheel" msgstr "Rueda del Ratón" #: ../../WPrefs.app/MouseSettings.c:672 msgid "Mouse Grab Modifier" msgstr "Modificador de agarre del ratón" #: ../../WPrefs.app/MouseSettings.c:674 msgid "" "Keyboard modifier to use for actions that\n" "involve dragging windows with the mouse,\n" "clicking inside the window." msgstr "" "Modificador de teclado para acciones que\n" "involucren arrastrar ventanas con el ratón,\n" "pinchar dentro de la ventana." #: ../../WPrefs.app/MouseSettings.c:708 #, c-format msgid "could not create %s" msgstr "no se pudo crear %s" #: ../../WPrefs.app/MouseSettings.c:724 #, c-format msgid "could not create temporary file %s" msgstr "no se pudo crear el archivo temporal %s" #: ../../WPrefs.app/MouseSettings.c:756 #, c-format msgid "could not rename file %s to %s\n" msgstr "no se pudo renombrar %s a %s\n" #: ../../WPrefs.app/MouseSettings.c:829 msgid "Shift" msgstr "Mayúsculas" #: ../../WPrefs.app/MouseSettings.c:830 msgid "Lock" msgstr "Lock" #: ../../WPrefs.app/MouseSettings.c:831 msgid "Control" msgstr "Centro" #: ../../WPrefs.app/MouseSettings.c:832 msgid "Mod1" msgstr "Mod1" #: ../../WPrefs.app/MouseSettings.c:833 msgid "Mod2" msgstr "Mod2" #: ../../WPrefs.app/MouseSettings.c:834 msgid "Mod3" msgstr "Mod3" #: ../../WPrefs.app/MouseSettings.c:835 msgid "Mod4" msgstr "Mod4" #: ../../WPrefs.app/MouseSettings.c:836 msgid "Mod5" msgstr "Mod5" #: ../../WPrefs.app/MouseSettings.c:839 msgid "Applications Menu" msgstr "Menú Aplicaciones" #: ../../WPrefs.app/MouseSettings.c:841 msgid "Select Windows" msgstr "Enfocar ventanas" #: ../../WPrefs.app/MouseSettings.c:844 msgid "Switch Workspaces" msgstr "Cambiar al área de trabajo 1" #: ../../WPrefs.app/MouseSettings.c:849 msgid "Mouse Preferences" msgstr "Preferencias de Ratón" #: ../../WPrefs.app/MouseSettings.c:851 msgid "" "Mouse speed/acceleration, double click delay,\n" "mouse button bindings etc." msgstr "" "Velocidad y aceleración del ratón, retardo de\n" "\"doble-click\", acciones de cada botón, etc" #: ../../WPrefs.app/Paths.c:84 msgid "bad value in option IconPath. Using default path list" msgstr "valor erróneo en IconPath. Usando la lista de rutas por defecto" #: ../../WPrefs.app/Paths.c:101 msgid "bad value in option PixmapPath. Using default path list" msgstr "valor erróneo en PixmapPath. Usando la lista de rutas por defecto" #: ../../WPrefs.app/Paths.c:149 msgid "Select directory" msgstr "Escoja Directorio" #: ../../WPrefs.app/Paths.c:270 msgid "Icon Search Paths" msgstr "Rutas de Búsqueda de Iconos" #: ../../WPrefs.app/Paths.c:281 ../../WPrefs.app/Paths.c:312 #: ../../WPrefs.app/TexturePanel.c:1310 msgid "Add" msgstr "Agregar" #: ../../WPrefs.app/Paths.c:301 msgid "Pixmap Search Paths" msgstr "Rutas de búsqueda de Pixmaps" #: ../../WPrefs.app/Paths.c:341 msgid "Search Path Configuration" msgstr "Configuración de Rutas de Búsqueda" #: ../../WPrefs.app/Paths.c:343 msgid "" "Search paths to use when looking for pixmaps\n" "and icons." msgstr "Rutas donde buscar imágenes e iconos." #: ../../WPrefs.app/Preferences.c:75 msgid "OFF" msgstr "OFF" #: ../../WPrefs.app/Preferences.c:77 msgid "1 pixel" msgstr "1 pixel" #. 2-4 #: ../../WPrefs.app/Preferences.c:80 #, c-format msgid "%i pixels" msgstr "%i píxels" #. >4 #: ../../WPrefs.app/Preferences.c:83 #, c-format msgid "%i pixels " msgstr "%i píxels" #: ../../WPrefs.app/Preferences.c:229 msgid "Size Display" msgstr "Indicador de Tamaño" #: ../../WPrefs.app/Preferences.c:231 msgid "" "The position or style of the window size\n" "display that's shown when a window is resized." msgstr "" "Posición o estilo del indicador de tamaño\n" "que se muetra cuando una ventana es\n" "redimensionada." #: ../../WPrefs.app/Preferences.c:238 ../../WPrefs.app/Preferences.c:259 msgid "Corner of screen" msgstr "Esquina de la pantalla" #: ../../WPrefs.app/Preferences.c:239 ../../WPrefs.app/Preferences.c:260 msgid "Center of screen" msgstr "Centro de la pantalla" #: ../../WPrefs.app/Preferences.c:240 ../../WPrefs.app/Preferences.c:261 msgid "Center of resized window" msgstr "Centro de la ventana" #: ../../WPrefs.app/Preferences.c:241 msgid "Technical drawing-like" msgstr "Como dibujo técnico" #: ../../WPrefs.app/Preferences.c:242 ../../WPrefs.app/Preferences.c:262 msgid "Disabled" msgstr "Deshabilitar" #: ../../WPrefs.app/Preferences.c:250 msgid "Position Display" msgstr "Indicador de Posición" #: ../../WPrefs.app/Preferences.c:252 msgid "" "The position or style of the window position\n" "display that's shown when a window is moved." msgstr "" "Posición o estilo del indicador de posición\n" "que se muestra cuando se mueve una ventana." #: ../../WPrefs.app/Preferences.c:270 msgid "Show balloon text for..." msgstr "Mostrar bocallidos para..." #: ../../WPrefs.app/Preferences.c:277 msgid "incomplete window titles" msgstr "títulos incompletos de ventanas" #: ../../WPrefs.app/Preferences.c:278 msgid "miniwindow titles" msgstr "títulos de miniventanas" #: ../../WPrefs.app/Preferences.c:279 msgid "application/dock icons" msgstr "iconos de aplicaciones/dock" #: ../../WPrefs.app/Preferences.c:280 msgid "internal help" msgstr "ayuda interna" #: ../../WPrefs.app/Preferences.c:292 msgid "Raise window when switching focus with keyboard" msgstr "Alzar ventana cuando se cambia el foco con teclado" #: ../../WPrefs.app/Preferences.c:298 msgid "" "Enable keyboard language\n" "switch button in window titlebars." msgstr "" "Activar botón de selección\n" "de lenguaje en el título de las ventanas.." #: ../../WPrefs.app/Preferences.c:307 msgid "Workspace border" msgstr "Borde del Área" #: ../../WPrefs.app/Preferences.c:323 msgid "Left/Right" msgstr "Izquierda/Derecha" #: ../../WPrefs.app/Preferences.c:328 msgid "Top/Bottom" msgstr "Arriba/Abajo" #: ../../WPrefs.app/Preferences.c:349 msgid "Miscellaneous Ergonomic Preferences" msgstr "Preferencias Ergonométricas" #: ../../WPrefs.app/Preferences.c:350 msgid "" "Various settings like balloon text, geometry\n" "displays etc." msgstr "" "Varias opciones como texto de bocadillos,\n" "indicadores de geometría, etc." #: ../../WPrefs.app/TexturePanel.c:323 msgid "Saturation" msgstr "Saturación" #: ../../WPrefs.app/TexturePanel.c:325 msgid "Brightness" msgstr "Brillo" #: ../../WPrefs.app/TexturePanel.c:373 ../../WPrefs.app/TexturePanel.c:380 msgid "Hue" msgstr "Tinte" #: ../../WPrefs.app/TexturePanel.c:610 msgid "Could not load the selected file: " msgstr "No puedo cargar el archivo seleccionado: " #: ../../WPrefs.app/TexturePanel.c:664 msgid "Open Image" msgstr "Abrir Imagen" #: ../../WPrefs.app/TexturePanel.c:694 msgid "The selected file does not contain a supported image." msgstr "" "El archivo seleccionado no contiene una imagen en un formato soportado." #: ../../WPrefs.app/TexturePanel.c:945 #, c-format msgid "could not load file '%s': %s" msgstr "no se pudo cargar el archivo '%s': %s" #: ../../WPrefs.app/TexturePanel.c:1064 #, c-format msgid "error creating texture %s" msgstr "error creando la textura %s" #: ../../WPrefs.app/TexturePanel.c:1254 msgid "Texture Panel" msgstr "Panel de Texturas" #: ../../WPrefs.app/TexturePanel.c:1262 msgid "Texture Name" msgstr "Nombre de Textura" #: ../../WPrefs.app/TexturePanel.c:1274 msgid "Solid Color" msgstr "Color Sólido" #: ../../WPrefs.app/TexturePanel.c:1275 msgid "Gradient Texture" msgstr "Textura en gradiente" #: ../../WPrefs.app/TexturePanel.c:1276 msgid "Simple Gradient Texture" msgstr "Textura en gradiente simple" #: ../../WPrefs.app/TexturePanel.c:1277 msgid "Textured Gradient" msgstr "Grandiente texturado" #: ../../WPrefs.app/TexturePanel.c:1278 msgid "Image Texture" msgstr "Textura de imagen" #: ../../WPrefs.app/TexturePanel.c:1286 msgid "Default Color" msgstr "Color por defecto" #: ../../WPrefs.app/TexturePanel.c:1298 msgid "Gradient Colors" msgstr "Gradiente de colores" #: ../../WPrefs.app/TexturePanel.c:1394 msgid "Direction" msgstr "Dirección" #: ../../WPrefs.app/TexturePanel.c:1422 msgid "Gradient" msgstr "Gradiente" #: ../../WPrefs.app/TexturePanel.c:1440 msgid "Gradient Opacity" msgstr "Opacidad de gradiente" #: ../../WPrefs.app/TexturePanel.c:1483 msgid "Image" msgstr "Imagen" #: ../../WPrefs.app/TexturePanel.c:1515 msgid "Tile" msgstr "Azulejo" #: ../../WPrefs.app/TexturePanel.c:1516 msgid "Scale" msgstr "Escalar" #: ../../WPrefs.app/TexturePanel.c:1518 msgid "Maximize" msgstr "Maximizar" #: ../../WPrefs.app/Themes.c:71 ../../WPrefs.app/Themes.c:82 msgid "Set" msgstr "Establecer" #: ../../WPrefs.app/Themes.c:132 msgid "Stop" msgstr "Detener" #: ../../WPrefs.app/Themes.c:143 ../../WPrefs.app/Themes.c:203 #: ../../WPrefs.app/Themes.c:223 msgid "Download" msgstr "Descargar" #: ../../WPrefs.app/Themes.c:171 msgid "Save Current Theme" msgstr "Guardar Tema Actual" #: ../../WPrefs.app/Themes.c:180 msgid "Load" msgstr "Cargar" #: ../../WPrefs.app/Themes.c:185 msgid "Install" msgstr "Instalar" #: ../../WPrefs.app/Themes.c:193 msgid "Tile of The Day" msgstr "Azulejo de Hoy" #: ../../WPrefs.app/Themes.c:213 msgid "Bar of The Day" msgstr "Barra de Hoy" #: ../../WPrefs.app/WPrefs.c:260 msgid "Window Maker Preferences" msgstr "Preferencias de Window Maker" #: ../../WPrefs.app/WPrefs.c:284 msgid "Revert Page" msgstr "Revertir Hoja" #: ../../WPrefs.app/WPrefs.c:290 msgid "Revert All" msgstr "Revertir Todo" #: ../../WPrefs.app/WPrefs.c:296 msgid "Save" msgstr "Guardar" #: ../../WPrefs.app/WPrefs.c:309 msgid "Balloon Help" msgstr "Bocadillos de Ayuda" #: ../../WPrefs.app/WPrefs.c:334 msgid "Window Maker Preferences Utility" msgstr "Editor de Preferencias de Window Maker" #: ../../WPrefs.app/WPrefs.c:341 #, c-format msgid "Version %s for Window Maker %s or newer" msgstr "Versión %s para Window Maker %s o superior" #: ../../WPrefs.app/WPrefs.c:349 msgid "Starting..." msgstr "Comenzando..." #: ../../WPrefs.app/WPrefs.c:355 msgid "" "Programming/Design: Alfredo K. Kojima\n" "Artwork: Marco van Hylckama Vlieg, Largo et al\n" "More Programming: James Thompson et al" msgstr "" "Programación/Diseño: Alfredo K. Kojima\n" "Arte: Marco van Hylckama Vlieg y Largo\n" "Más Programación: James Thompson" #: ../../WPrefs.app/WPrefs.c:455 #, c-format msgid "could not locate image file %s\n" msgstr "no se pudo encontrar archivo de imagen %s\n" #: ../../WPrefs.app/WPrefs.c:670 #, c-format msgid "could not load image file %s:%s" msgstr "no se pudo cargar archivo de imagen %s:%s" #: ../../WPrefs.app/WPrefs.c:689 msgid "Loading Window Maker configuration files..." msgstr "Cargando archivos de configuración de Window Maker..." #: ../../WPrefs.app/WPrefs.c:693 msgid "Initializing configuration panels..." msgstr "Inicializando paneles de configuración..." #: ../../WPrefs.app/WPrefs.c:727 msgid "" "WPrefs is free software and is distributed WITHOUT ANY\n" "WARRANTY under the terms of the GNU General Public License." msgstr "" "WPrefs es software libre y es distribuido SIN NINGUNA GARANTÍA\n" " bajo los términos de la GNU General Public License." #: ../../WPrefs.app/WPrefs.c:757 ../../WPrefs.app/WPrefs.c:837 #, c-format msgid "Window Maker domain (%s) is corrupted!" msgstr "Dominio de Window Maker (%s) esta corrupto!" #: ../../WPrefs.app/WPrefs.c:761 #, c-format msgid "Could not load Window Maker domain (%s) from defaults database." msgstr "No se pudo cargar dominio de Window Maker (%s) de la base de datos." #: ../../WPrefs.app/WPrefs.c:777 msgid "could not extract version information from Window Maker" msgstr "No se pudo extraer información de versión de Window Maker" #: ../../WPrefs.app/WPrefs.c:778 msgid "Make sure wmaker is in your search path." msgstr "Asegúrese que wmaker esté en su ruta de busqueda (path)." #: ../../WPrefs.app/WPrefs.c:781 msgid "" "Could not extract version from Window Maker. Make sure it is correctly " "installed and is in your PATH environment variable." msgstr "" "No se pudo extraer la versión de Window Maker. Asegúrese de que esté " "correctamente instalado y en su variable de ambiente PATH." #: ../../WPrefs.app/WPrefs.c:791 msgid "" "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." msgstr "" "No se pudo extraer la versión de Window Maker. Asegúrese de que esté " "correctamente instalado y en su variable de ambiente PATH." #: ../../WPrefs.app/WPrefs.c:798 #, c-format msgid "" "WPrefs only supports Window Maker 0.18.0 or newer.\n" "The version installed is %i.%i.%i\n" msgstr "" "WPrefs sólo soporta Window Maker 0.18.0 o superior.\n" "La versión instalada es %i.%i.%i\n" #: ../../WPrefs.app/WPrefs.c:805 #, c-format msgid "" "Window Maker %i.%i.%i, which is installed in your system, is not fully " "supported by this version of WPrefs." msgstr "" "La versión %i.%i.%i de Window Maker, que está instalada en su sistema, no " "está completamente soportada por esta versión de WPrefs." #: ../../WPrefs.app/WPrefs.c:818 #, c-format msgid "could not run \"%s --global_defaults_path\"." msgstr "no se pudo ejecutar \"%s --global_defaults_path\"." #: ../../WPrefs.app/WPrefs.c:841 #, c-format msgid "Could not load global Window Maker domain (%s)." msgstr "No se pudo cargar dominio global de Window Maker (%s)." #: ../../WPrefs.app/WPrefs.c:1090 #, c-format msgid "" "bad speed value for option %s\n" ". Using default Medium" msgstr "" "valor erróneo para la opcion %s.\n" "Usando el valor por defecto (Medium)" #: ../../WPrefs.app/WindowHandling.c:141 #, c-format msgid "bad option value %s in WindowPlacement. Using default value" msgstr "valor erróneo (%s) en WindowPlacement. Usando el valor por defecto" #: ../../WPrefs.app/WindowHandling.c:163 msgid "invalid data in option WindowPlaceOrigin. Using default (0,0)" msgstr "datos erróneos en WindowPlaceOrigin. Usando el valor por defecto (0,0)" #: ../../WPrefs.app/WindowHandling.c:243 msgid "Window Placement" msgstr "Posicionamiento de Ventanas" #: ../../WPrefs.app/WindowHandling.c:244 msgid "" "How to place windows when they are first put\n" "on screen." msgstr "Cómo poner ventanas cuando aparecen en pantalla" #: ../../WPrefs.app/WindowHandling.c:250 msgid "Automatic" msgstr "Automático" #: ../../WPrefs.app/WindowHandling.c:251 msgid "Random" msgstr "Aleatorio" #: ../../WPrefs.app/WindowHandling.c:252 msgid "Manual" msgstr "Manual" #: ../../WPrefs.app/WindowHandling.c:253 msgid "Cascade" msgstr "Cascada" #: ../../WPrefs.app/WindowHandling.c:254 msgid "Smart" msgstr "Inteligente" #: ../../WPrefs.app/WindowHandling.c:260 msgid "Placement Origin" msgstr "Origen del posicionamiento" #: ../../WPrefs.app/WindowHandling.c:321 msgid "Opaque Move" msgstr "Mostrar contenido al desplazar" #: ../../WPrefs.app/WindowHandling.c:322 msgid "" "Whether the window contents should be moved\n" "when dragging windows aroung or if only a\n" "frame should be displayed.\n" msgstr "" "Si el contenido de las ventanas debe ser movido\n" "cuando se arrastran ventanas o si sólo debe\n" "mostrarse un marco.\n" #: ../../WPrefs.app/WindowHandling.c:361 msgid "When maximizing..." msgstr "Al maximizar..." #: ../../WPrefs.app/WindowHandling.c:366 msgid "...do not cover icons" msgstr "...no cubrir los iconos" #: ../../WPrefs.app/WindowHandling.c:372 msgid "...do not cover dock" msgstr "...no cubrir el Dock" #: ../../WPrefs.app/WindowHandling.c:381 msgid "Edge Resistance" msgstr "Resistencia de bordes" #: ../../WPrefs.app/WindowHandling.c:383 msgid "" "Edge resistance will make windows `resist'\n" "being moved further for the defined threshold\n" "when moved against other windows or the edges\n" "of the screen." msgstr "" "La resistencia de los bordes hará que las ventanas\n" "\"resistan\" ser movidas en el valor del umbral\n" "cuando se muevan contra otras ventanas o los bordes\n" "de la pantalla." #: ../../WPrefs.app/WindowHandling.c:402 msgid "Resist" msgstr "Resistir" #: ../../WPrefs.app/WindowHandling.c:407 msgid "Attract" msgstr "Atraer" #: ../../WPrefs.app/WindowHandling.c:423 msgid "Open dialogs in same workspace as their owners" msgstr "Abrir diálogos en la misma área que sus padres" #: ../../WPrefs.app/WindowHandling.c:450 msgid "Window Handling Preferences" msgstr "Preferencias de Manejo de Ventanas" #: ../../WPrefs.app/WindowHandling.c:452 msgid "" "Window handling options. Initial placement style\n" "edge resistance, opaque move etc." msgstr "" "Opciones de manejo de ventanas. Posición inicial,\n" "resistencia de bordes, opacidad de movimiento, etc." #: ../../WPrefs.app/Workspace.c:176 msgid "Workspace Navigation" msgstr "Navegación de Áreas" #: ../../WPrefs.app/Workspace.c:183 msgid "Wrap to the first workspace from the last workspace" msgstr "Ir para la primera área de trabajo después de la última" #: ../../WPrefs.app/Workspace.c:205 msgid "Switch workspaces while dragging windows" msgstr "Mover ventanas entre áreas de trabajo" #: ../../WPrefs.app/Workspace.c:227 msgid "Automatically create new workspaces" msgstr "Crear nuevas áreas de trabajo automáticamente" #: ../../WPrefs.app/Workspace.c:250 msgid "Position of workspace name display" msgstr "Posición del nombre del área de trabajo" #: ../../WPrefs.app/Workspace.c:269 msgid "Disable" msgstr "Deshabilitar" #: ../../WPrefs.app/Workspace.c:271 msgid "Top" msgstr "Arriba" #: ../../WPrefs.app/Workspace.c:272 msgid "Bottom" msgstr "Abajo" #: ../../WPrefs.app/Workspace.c:273 msgid "Top/Left" msgstr "Arriba/izquierda" #: ../../WPrefs.app/Workspace.c:274 msgid "Top/Right" msgstr "Arriba/derecha" #: ../../WPrefs.app/Workspace.c:275 msgid "Bottom/Left" msgstr "Abajo/izquierda" #: ../../WPrefs.app/Workspace.c:276 msgid "Bottom/Right" msgstr "Abajo/derecha" #: ../../WPrefs.app/Workspace.c:284 msgid "Dock/Clip" msgstr "Dock/Clip" #: ../../WPrefs.app/Workspace.c:303 msgid "" "Disable/enable the application Dock (the\n" "vertical icon bar in the side of the screen)." msgstr "" "Activar/desactivar el Dock (la barra de iconos\n" "vertical al costado de la pantalla)." #: ../../WPrefs.app/Workspace.c:324 msgid "" "Disable/enable the Clip (that thing with\n" "a paper clip icon)." msgstr "" "Activar/desactivar el Clip (la cosa con el\n" "icono de clip de papel)." #: ../../WPrefs.app/Workspace.c:364 msgid "Workspace Preferences" msgstr "Preferencias de Área" #: ../../WPrefs.app/Workspace.c:366 msgid "" "Workspace navigation features.\n" "You can also enable/disable the Dock and Clip here." msgstr "" "Características de navegación de áreas.\n" "También se pueden habilitar/deshabilitar\n" "el Dock y el Clip." #: ../../WPrefs.app/imagebrowser.c:95 msgid "View" msgstr "Ver" #: ../../WPrefs.app/main.c:59 #, c-format msgid "usage: %s [options]\n" msgstr "uso: %s [opciones]\n" #: ../../WPrefs.app/main.c:60 msgid "options:" msgstr "opciones:" #: ../../WPrefs.app/main.c:61 msgid " -display <display>\tdisplay to be used" msgstr " -display <display>\tdisplay a usar" #: ../../WPrefs.app/main.c:62 msgid " --version\t\tprint version number and exit" msgstr " --version\t\tmostrar número de versión y salir" #: ../../WPrefs.app/main.c:63 msgid " --help\t\tprint this message and exit" msgstr " --help\t\timprimir este mensaje y salir" #: ../../WPrefs.app/main.c:122 #, c-format msgid "too few arguments for %s" msgstr "faltan argumentos para %s" #: ../../WPrefs.app/main.c:144 msgid "X server does not support locale" msgstr "El Servidor X no soporta locale" #: ../../WPrefs.app/main.c:147 msgid "cannot set locale modifiers" msgstr "no se pudo establecer modificadores de locale" #: ../../WPrefs.app/main.c:153 #, c-format msgid "could not open display %s" msgstr "no se pudo abrir display %s" #: ../../WPrefs.app/main.c:161 msgid "could not initialize application" msgstr "no se pudo iniicalizar la aplicación" msgid "Disable cycling color highlighting of icons." msgstr "Deshabilitar cambio de color cíclico de los iconos." msgid "Click window to focus" msgstr "Pinchar la ventana" msgid "Focus follows mouse" msgstr "Foco sigue el puntero del ratón." msgid "\"Sloppy\" focus" msgstr "Foco \"Sloppy\"" msgid "Command to Execute" msgstr "Comando a ejecutar" msgid "New Command %i" msgstr "Nuevo Comando %i" msgid "Workspaces" msgstr "Áreas de Trabajo" msgid "Add Command" msgstr "Agregar Comando" msgid "Add Submenu" msgstr "Agregar Submenu" msgid "Add External Menu" msgstr "Agregar Menú Externo" msgid "Remove Item" msgstr "Eliminar Ítem" msgid "Cut Item" msgstr "Cortar Ítem" msgid "Copy Item" msgstr "Copiar Ítem" msgid "Paste Item" msgstr "Pegar Ítem" msgid "Label" msgstr "Etiqueta" msgid "Execute Shell Command" msgstr "Ejecutar comando de shell" msgid "Hide Others" msgstr "Esconder Otros" msgid "Legal Panel" msgstr "Panel \"Legal\"" msgid "Menu Path/Directory List" msgstr "Menu Lista de Ruta/Directorio" msgid "Ask help to the Guru" msgstr "Pedir ayuda al gurú" msgid "" " 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 keep using the current menu, please read the '%s/%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. Window " "Maker supports both formats." msgstr "" "El menú que se está usando ahora no puede abrirse. Eso significa incluso que " "contiene un error de sintaxis o que está en un formato no soportado por " "WPrefs (WPrefs soporta solamente la lista de menús propietaria).\n" "Si quiere continuar usando el menú actual, lea el archivo '%s/%s', pulse " "'Mantener menú actual' y edítelo como un editor de textos.\n" "Si quiere usar un editor, pulse 'Copiar menú estándar'. Esto copiará el menú " "estándar e instruirá a Window Maker a usarlo en vez del actual.\n" "Si quiere más flexibilidad, continúe usando el menú actual porque le permite " "el uso de macros de preprocesador C (cpp), además de ser fácil de editar. " "Window Maker soporta soporta ambos formatos." msgid "Copy Default Menu" msgstr "Copiar menú por defecto" msgid "Menu Guru - Select Type" msgstr "Gurú de Menú - Escoja Tipo" msgid "Next" msgstr "Siguiente" msgid "Menu Guru - Select Menu File" msgstr "Gurú de Menú - Escoja Archivo" msgid "Menu Guru - Select Pipe Command" msgstr "Gurú de Menú - Escoja Orden Pipe" msgid "Menu Guru - Select Directories" msgstr "Gurú de Menú - Escoja Directorios" msgid "Menu Guru - Select Command" msgstr "Gurú de Menú - Escoja Comando" msgid "Back" msgstr "Atrás" 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 "" "Este proceso le ayudará a crear un submenú cuya definición está en otro " "archivo o es creada dinámicamente.\n" "¿Qué desea usar como contenido del submenú?" msgid "" "A file containing the menu definition in the plain text (non-property list) " "menu format." msgstr "" "Un archivo que contiene la definición en el formato de texto plano (no lista " "de propiedades)" msgid "The menu definition generated by a script/program read through a pipe." msgstr "" "La definición generada por un script/programa leída a traves de un pipe." msgid "The files in one or more directories." msgstr "Archivos en uno o más directorios." msgid "Type the path for the menu file:" msgstr "Ingrese la ruta para el archivo:" 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 "" "El archivo de menú debe contener un menú en el formato de texto plano. Este " "formato esta descrito en los archivos distribuidos con Window Maker, " "probablemente en ~/GNUstep/Library/WindowMaker/menu" msgid "Type the command that will generate the menu definition:" msgstr "Escriba el comando que generará la definición de menú:" 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 "" "El comando dado debe generar una definición de menú valida a stdout. Esta " "definición debe estar en el formato de texto plano, descrito en los archivos " "incluidos con WindowMaker, normalmente en ~/GNUstep/Library/WindowMaker/menu" msgid "" "Type the path for the directory. You can type more than one path by " "separating them with spaces." msgstr "" "Ingrese la ruta del directorio. Puede especificar más de uno separándolos " "con espacios." 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 "" "El menú generado tendrá un ítem por cada archivo en el directorio. Los " "directorios pueden contener programas ejecutables o archivos de datos (como " "imágenes jpeg)." msgid "" "If the directory contain data files, type the command used to open these " "files. Otherwise, leave it in blank." msgstr "" "Si el directorio contiene archivos de datos, escriba el comando usado para " "abrir tales archivos. En otro caso, deje el campo en blanco." 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 "" "Cada archivo en el directorio tendrá un item y será abierto con el comando " "entregado. Por ejemplo, si el directorio contiene imágenes y el comando es " "\"xv -root\", cada archivo en el directorio tendrá un ítem \"xv -root imagen" "\"." msgid "Invalid font %s." msgstr "Fuente %s errónea." msgid "Set Font..." msgstr "Establecer Fuente..." msgid "Window Title Font" msgstr "Fuente de título de ventana" msgid "Menu Title Font" msgstr "Fuente de Título de Menú" msgid "Menu Item Font" msgstr "Fuente de Ítem de Menú" msgid "Icon Title Font" msgstr "Fuente de Título de Iconos" msgid "Clip Title Font" msgstr "Fuente de Título de Clip" msgid "Geometry Display Font" msgstr "Fuente de Geometría" msgid "" "Sample Text\n" "abcdefghijklmnopqrstuvxywz\n" "ABCDEFGHIJKLMNOPQRSTUVXYWZ\n" "0123456789" msgstr "" "Texto de ejemplo\n" "abcdefghijklmnñopqrstuvwxyz\n" "ABCDEFGHIJKLMNÑOPQRSTUVWXYZ\n" "0123456789" msgid "Alignment" msgstr "Alineación" msgid "Text Preferences" msgstr "Preferencias de Textos" msgid "drag windows between workspaces." msgstr "Arrastrar ventanas entre áreas." msgid "" "switch to first workspace when switching past the last workspace and vice-" "versa" msgstr "Cambiar al primer área cuando se pasa la última y viceversa." ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/po/bg.po��������������������������������������������������������������0000644�0001750�0001750�00000301652�13431646201�014330� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Message catalog for WPrefs.app # Copyright (C) 2000,2003 Free Software Foundation, Inc. # Anton Zinoviev <zinoviev@debian.org>, 2000,2003 msgid "" msgstr "" "Project-Id-Version: WPrefs for WindowMaker 0.80.2\n" "POT-Creation-Date: 2003-02-08 21:44+0200\n" "PO-Revision-Date: 2001-04-18 23:22+03:00\n" "Last-Translator: Anton Zinoviev <zinoviev@debian.org>\n" "Language-Team: Bulgarian <dict@linux.zonebg.com>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" # ../../WPrefs.app/Appearance.c:1104 #: ../../WPrefs.app/Appearance.c:1131 msgid "Select File" msgstr "Избор на файл" # ../../WPrefs.app/Appearance.c:1506 #: ../../WPrefs.app/Appearance.c:1533 msgid "Focused Window" msgstr "Фокусиран прозорец" # ../../WPrefs.app/Appearance.c:1510 #: ../../WPrefs.app/Appearance.c:1537 msgid "Unfocused Window" msgstr "Нефокусиран прозорец" # ../../WPrefs.app/Appearance.c:1514 #: ../../WPrefs.app/Appearance.c:1541 msgid "Owner of Focused Window" msgstr "Собственик на нефокусиран" # Изненада: използва се на две места, трябва ни "Име на меню", но на # едното място не се побира. # ../../WPrefs.app/Appearance.c:1518 ../../WPrefs.app/Appearance.c:1836 #: ../../WPrefs.app/Appearance.c:1545 ../../WPrefs.app/Appearance.c:1862 msgid "Menu Title" msgstr "Меню (име)" # ../../WPrefs.app/Appearance.c:1522 ../../WPrefs.app/Appearance.c:1524 #: ../../WPrefs.app/Appearance.c:1549 ../../WPrefs.app/Appearance.c:1551 msgid "Normal Item" msgstr "Нормално" # ../../WPrefs.app/Appearance.c:1528 #: ../../WPrefs.app/Appearance.c:1555 msgid "Disabled Item" msgstr "Забранено" # ../../WPrefs.app/Appearance.c:1537 #: ../../WPrefs.app/Appearance.c:1564 msgid "Highlighted" msgstr "Маркирано" # ../../WPrefs.app/Appearance.c:1729 #: ../../WPrefs.app/Appearance.c:1755 msgid "Texture" msgstr "Текстура" # ../../WPrefs.app/Appearance.c:1737 #: ../../WPrefs.app/Appearance.c:1763 msgid "Titlebar of Focused Window" msgstr "Заглавна ивица на фокусиран" # ../../WPrefs.app/Appearance.c:1738 #: ../../WPrefs.app/Appearance.c:1764 msgid "Titlebar of Unfocused Windows" msgstr "Заглавна ивица на нефокусиран" # Загл. ив. на собств. на фокусиран # Заглавна ивица на собственик на ф. # ../../WPrefs.app/Appearance.c:1739 #: ../../WPrefs.app/Appearance.c:1765 msgid "Titlebar of Focused Window's Owner" msgstr "Загл. на собственик на фокусиран" # ../../WPrefs.app/Appearance.c:1740 #: ../../WPrefs.app/Appearance.c:1766 msgid "Window Resizebar" msgstr "Ивица за оразмеряване" # ../../WPrefs.app/Appearance.c:1741 #: ../../WPrefs.app/Appearance.c:1767 msgid "Titlebar of Menus" msgstr "Заглавие на меню" # ../../WPrefs.app/Appearance.c:1742 #: ../../WPrefs.app/Appearance.c:1768 msgid "Menu Items" msgstr "Елементи на меню" # ../../WPrefs.app/Appearance.c:1743 #: ../../WPrefs.app/Appearance.c:1769 msgid "Icon Background" msgstr "Фон за иконките" # ../../WPrefs.app/Appearance.c:1758 #: ../../WPrefs.app/Appearance.c:1784 msgid "" "Double click in the texture you want to use\n" "for the selected item." msgstr "" "Щракнете двукратно по текстурата, която желаете да\n" "се използва на маркираното място." # ../../WPrefs.app/Appearance.c:1772 #: ../../WPrefs.app/Appearance.c:1798 msgid "New" msgstr "Нова" # ../../WPrefs.app/Appearance.c:1776 #: ../../WPrefs.app/Appearance.c:1802 msgid "Create a new texture." msgstr "За да се направи нова текстура." # ../../WPrefs.app/Appearance.c:1784 #: ../../WPrefs.app/Appearance.c:1810 msgid "Extract..." msgstr "Извлечи" # ../../WPrefs.app/Appearance.c:1788 #: ../../WPrefs.app/Appearance.c:1814 msgid "Extract texture(s) from a theme or a style file." msgstr "" "Извлича текстура(и) от тема\n" "или файл със стил." # ../../WPrefs.app/Appearance.c:1798 #: ../../WPrefs.app/Appearance.c:1824 msgid "Edit" msgstr "Редакт." # ../../WPrefs.app/Appearance.c:1801 #: ../../WPrefs.app/Appearance.c:1827 msgid "Edit the highlighted texture." msgstr "Редактиране на маркираната текстура." # ../../WPrefs.app/Appearance.c:1809 ../../WPrefs.app/TexturePanel.c:1310 #: ../../WPrefs.app/Appearance.c:1835 ../../WPrefs.app/TexturePanel.c:1316 msgid "Delete" msgstr "Изтрий" # ../../WPrefs.app/Appearance.c:1813 #: ../../WPrefs.app/Appearance.c:1839 msgid "Delete the highlighted texture." msgstr "Изтрива маркираната текстура." # ../../WPrefs.app/Appearance.c:1826 #: ../../WPrefs.app/Appearance.c:1852 msgid "Color" msgstr "Цветове" # ../../WPrefs.app/Appearance.c:1833 #: ../../WPrefs.app/Appearance.c:1859 msgid "Focused Window Title" msgstr "Име на фокусиран прозорец" # ../../WPrefs.app/Appearance.c:1834 #: ../../WPrefs.app/Appearance.c:1860 msgid "Unfocused Window Title" msgstr "Име на нефокусиран прозорец" # ../../WPrefs.app/Appearance.c:1835 #: ../../WPrefs.app/Appearance.c:1861 msgid "Owner of Focused Window Title" msgstr "Име на собственик на фокусиран" # ../../WPrefs.app/Appearance.c:1837 #: ../../WPrefs.app/Appearance.c:1863 msgid "Menu Item Text" msgstr "Текст на елемент на меню" # ../../WPrefs.app/Appearance.c:1838 #: ../../WPrefs.app/Appearance.c:1864 msgid "Disabled Menu Item Text" msgstr "Текст на забранен елемент" # ../../WPrefs.app/Appearance.c:1839 #: ../../WPrefs.app/Appearance.c:1865 msgid "Menu Highlight Color" msgstr "Цвят на маркиран елемент" # ../../WPrefs.app/Appearance.c:1840 #: ../../WPrefs.app/Appearance.c:1866 msgid "Highlighted Menu Text Color" msgstr "Цвят на текст на маркиран" # ../../WPrefs.app/Appearance.c:1743 #: ../../WPrefs.app/Appearance.c:1905 msgid "Background" msgstr "Фон" # ../../WPrefs.app/TexturePanel.c:1497 #: ../../WPrefs.app/Appearance.c:1917 ../../WPrefs.app/TexturePanel.c:1503 msgid "Browse..." msgstr "Браузър..." # ../../WPrefs.app/Appearance.c:1877 #: ../../WPrefs.app/Appearance.c:1930 msgid "Options" msgstr "Варианти" # ../../WPrefs.app/Appearance.c:1884 #: ../../WPrefs.app/Appearance.c:1937 msgid "Menu Style" msgstr "Стил на менютата" # ../../WPrefs.app/Appearance.c:1912 ../../WPrefs.app/Configurations.c:242 # ../../WPrefs.app/Configurations.c:254 ../../WPrefs.app/Focus.c:316 # ../../WPrefs.app/Focus.c:327 ../../WPrefs.app/MenuPreferences.c:137 # ../../WPrefs.app/MenuPreferences.c:148 # ../../WPrefs.app/MenuPreferences.c:176 # ../../WPrefs.app/MenuPreferences.c:191 ../../WPrefs.app/MouseSettings.c:561 # ../../WPrefs.app/MouseSettings.c:572 ../../WPrefs.app/WPrefs.c:545 # ../../WPrefs.app/WPrefs.c:570 #: ../../WPrefs.app/Appearance.c:1965 ../../WPrefs.app/Configurations.c:242 #: ../../WPrefs.app/Configurations.c:254 ../../WPrefs.app/Focus.c:288 #: ../../WPrefs.app/Focus.c:299 ../../WPrefs.app/MenuPreferences.c:134 #: ../../WPrefs.app/MenuPreferences.c:145 #: ../../WPrefs.app/MenuPreferences.c:173 #: ../../WPrefs.app/MenuPreferences.c:188 ../../WPrefs.app/MouseSettings.c:560 #: ../../WPrefs.app/MouseSettings.c:571 ../../WPrefs.app/WPrefs.c:558 #: ../../WPrefs.app/WPrefs.c:583 #, c-format msgid "could not load icon file %s" msgstr "Не може да се зареди файлът с иконка %s" # ../../WPrefs.app/Appearance.c:1926 #: ../../WPrefs.app/Appearance.c:1979 msgid "Title Alignment" msgstr "Заглавия" # ../../WPrefs.app/Appearance.c:1933 #: ../../WPrefs.app/Appearance.c:1986 msgid "Left" msgstr "Отляво" # Няма място за "Центрирано" # ../../WPrefs.app/Appearance.c:1936 ../../WPrefs.app/TexturePanel.c:1511 # ../../WPrefs.app/Workspace.c:271 #: ../../WPrefs.app/Appearance.c:1989 ../../WPrefs.app/TexturePanel.c:1517 #: ../../WPrefs.app/Workspace.c:270 msgid "Center" msgstr "Централно" # ../../WPrefs.app/Appearance.c:1939 #: ../../WPrefs.app/Appearance.c:1992 msgid "Right" msgstr "Отдясно" # ../../WPrefs.app/Appearance.c:2167 #: ../../WPrefs.app/Appearance.c:2216 msgid "Appearance Preferences" msgstr "Предпочитания за изгледа" # ../../WPrefs.app/Appearance.c:2169 #: ../../WPrefs.app/Appearance.c:2218 msgid "" "Background texture configuration for windows,\n" "menus and icons." msgstr "" "Настройка на цветове и текстури\n" "за прозорците, менютата\n" "и иконките." # ../../WPrefs.app/Appearance.c:2214 #: ../../WPrefs.app/Appearance.c:2263 msgid "Extract Texture" msgstr "Извлечи текстура" # ../../WPrefs.app/Appearance.c:2234 #: ../../WPrefs.app/Appearance.c:2283 msgid "Textures" msgstr "Текстури" # ../../WPrefs.app/Appearance.c:2245 ../../WPrefs.app/WPrefs.c:301 #: ../../WPrefs.app/Appearance.c:2294 ../../WPrefs.app/WPrefs.c:302 msgid "Close" msgstr "Затвори" # ../../WPrefs.app/Appearance.c:2250 #: ../../WPrefs.app/Appearance.c:2299 msgid "Extract" msgstr "Извлечи" # ../../WPrefs.app/Configurations.c:150 ../../WPrefs.app/Configurations.c:156 # ../../WPrefs.app/MouseSettings.c:491 ../../WPrefs.app/WindowHandling.c:331 # ../../WPrefs.app/WindowHandling.c:343 ../../WPrefs.app/Workspace.c:90 # ../../WPrefs.app/Workspace.c:101 #: ../../WPrefs.app/Configurations.c:150 ../../WPrefs.app/Configurations.c:156 #: ../../WPrefs.app/MouseSettings.c:490 ../../WPrefs.app/WindowHandling.c:339 #: ../../WPrefs.app/WindowHandling.c:351 ../../WPrefs.app/Workspace.c:90 #: ../../WPrefs.app/Workspace.c:101 #, c-format msgid "could not load icon %s" msgstr "не може да се зареди иконката %s" # ../../WPrefs.app/Configurations.c:164 ../../WPrefs.app/Workspace.c:109 #: ../../WPrefs.app/Configurations.c:164 ../../WPrefs.app/Workspace.c:109 #, c-format msgid "could not process icon %s: %s" msgstr "не може да се обработи иконката %s: %s" # ../../WPrefs.app/Configurations.c:189 ../../WPrefs.app/Workspace.c:164 #: ../../WPrefs.app/Configurations.c:189 ../../WPrefs.app/Workspace.c:164 #, c-format msgid "could not load image file %s" msgstr "не може да се зареди файл с изображение %s" # ../../WPrefs.app/Configurations.c:203 #: ../../WPrefs.app/Configurations.c:203 msgid "Icon Slide Speed" msgstr "Скорост на плъзгане на иконките" # ../../WPrefs.app/Configurations.c:209 #: ../../WPrefs.app/Configurations.c:209 msgid "Shade Animation Speed" msgstr "Скорост на свиването" # ../../WPrefs.app/Configurations.c:271 #: ../../WPrefs.app/Configurations.c:271 msgid "Smooth Scaling" msgstr "Изглаждане" # ../../WPrefs.app/Configurations.c:272 #: ../../WPrefs.app/Configurations.c:272 msgid "" "Smooth scaled background images, neutralizing\n" "the `pixelization' effect. This will slow\n" "down loading of background images considerably." msgstr "" "Гладко мащабиране на изображенията за фон, при\n" "което се неутрализира ефекта на „пикселизация“.\n" "Във връзка с това е възможно значително да се\n" "забави зареждането на изображения за фон." # ../../WPrefs.app/Configurations.c:313 #: ../../WPrefs.app/Configurations.c:313 msgid "Titlebar Style" msgstr "Заглавна ивица" # ../../WPrefs.app/Configurations.c:351 #: ../../WPrefs.app/Configurations.c:351 msgid "Animations and Sound" msgstr "Анимации и звук" # ../../WPrefs.app/Configurations.c:357 #: ../../WPrefs.app/Configurations.c:357 msgid "Animations" msgstr "Анимации" # ../../WPrefs.app/Configurations.c:368 #: ../../WPrefs.app/Configurations.c:368 msgid "" "Disable/enable animations such as those shown\n" "for window miniaturization, shading etc." msgstr "" "Забранява/позволява анимации като например\n" "за минимизация на прозорците, свиване и др." # ../../WPrefs.app/Configurations.c:376 #: ../../WPrefs.app/Configurations.c:376 msgid "Superfluous" msgstr "Излишни" # ../../WPrefs.app/Configurations.c:387 #: ../../WPrefs.app/Configurations.c:387 msgid "" "Disable/enable `superfluous' features and\n" "animations. These include the `ghosting' of the\n" "dock when it's being moved to another side and\n" "the explosion animation when undocking icons." msgstr "" "Забранява/позволява „излишните“ възможности и\n" "анимации. Това включва „привиждането“ на дока\n" "при преместването му от другата страна, както\n" "и анимацията на експлозия за откачените от\n" "дока иконки." # ../../WPrefs.app/Configurations.c:397 #: ../../WPrefs.app/Configurations.c:397 msgid "Sounds" msgstr "Звукове" # ../../WPrefs.app/Configurations.c:408 #: ../../WPrefs.app/Configurations.c:408 msgid "" "Disable/enable support for sound effects played\n" "for actions like shading and closing a window.\n" "You will need a module distributed separately\n" "for this. You can get it at:\n" "http://shadowmere.student.utwente.nl/" msgstr "" "Забранява/позволява поддръжката на звукови\n" "ефекти, проигравани при действия като за-\n" "сенчване и затваряне на прозорец. Ще е не-\n" "обходим модул, разпространяван отделно.\n" "Може да го получите от адрес\n" "http://shadowmere.student.utwente.nl/" # ../../WPrefs.app/Configurations.c:419 #: ../../WPrefs.app/Configurations.c:419 msgid "" "Note: sound requires a module distributed\n" "separately" msgstr "" "Забележете, че за звук е необходим модул,\n" "който се разпространява отделно." # ../../WPrefs.app/Configurations.c:429 #: ../../WPrefs.app/Configurations.c:429 msgid "Dithering colormap for 8bpp" msgstr "Палитра за дифузия при 8 бита/пиксел" # ../../WPrefs.app/Configurations.c:431 #: ../../WPrefs.app/Configurations.c:431 msgid "" "Number of colors to reserve for Window Maker\n" "on displays that support only 8bpp (PseudoColor)." msgstr "" "Брой на цветове, които да се запазят за\n" "Уиндоу Мейкър, при дисплеи, поддържащи само\n" "8 бита/пиксел (т.н. PseudoColor)." # ../../WPrefs.app/Configurations.c:438 #: ../../WPrefs.app/Configurations.c:438 msgid "Disable dithering in any visual/depth" msgstr "Без никакво точкуване" # ../../WPrefs.app/Configurations.c:459 #: ../../WPrefs.app/Configurations.c:459 msgid "" "More colors for\n" "applications" msgstr "" "Повече цветове\n" "за приложe-\n" "нията" # ../../WPrefs.app/Configurations.c:466 #: ../../WPrefs.app/Configurations.c:466 msgid "" "More colors for\n" "Window Maker" msgstr "" "Повече\n" "цветове за\n" "Уиндоу Мейкър" # ../../WPrefs.app/Configurations.c:521 #: ../../WPrefs.app/Configurations.c:521 msgid "Other Configurations" msgstr "Други настройки" # ../../WPrefs.app/Configurations.c:523 #: ../../WPrefs.app/Configurations.c:523 msgid "" "Animation speeds, titlebar styles, various option\n" "toggling and number of colors to reserve for\n" "Window Maker on 8bit displays." msgstr "" "Скорост на анимациите, стил на заглавните ивици,\n" "избор на разни опции и брой цветове за Уиндоу\n" "Мейкър при дисплеи с 8 бита/пиксел." # ../../WPrefs.app/Expert.c:75 #: ../../WPrefs.app/Expert.c:75 msgid "" "Disable miniwindows (icons for miniaturized windows). For use with KDE/GNOME." msgstr "Без минипрозорчета (минимизирани прозорци). Полезно при Гном и КДЕ." # ../../WPrefs.app/Expert.c:76 #: ../../WPrefs.app/Expert.c:76 msgid "Do not set non-WindowMaker specific parameters (do not use xset)." msgstr "Без неспецифични за Уиндоу Мейкър параметри (да не се ползва xset)." # ../../WPrefs.app/Expert.c:77 #: ../../WPrefs.app/Expert.c:77 msgid "Automatically save session when exiting Window Maker." msgstr "Автоматично да се запазва сесията при изход от Уиндоу Мейкър." # ../../WPrefs.app/Expert.c:78 #: ../../WPrefs.app/Expert.c:78 msgid "Use SaveUnder in window frames, icons, menus and other objects." msgstr "Атрибут „SaveUnder“ за рамките на прозорци, за иконки, менюта и др." #: ../../WPrefs.app/Expert.c:79 msgid "Use Windoze style cycling." msgstr "Циклично преминаване през прозорците в стил „Уиндоус“." # ../../WPrefs.app/Expert.c:80 #: ../../WPrefs.app/Expert.c:80 msgid "Disable confirmation panel for the Kill command." msgstr "Без диалог за потвърждение при команда за убиване." # ../../WPrefs.app/Expert.c:80 #: ../../WPrefs.app/Expert.c:81 msgid "Disable selection animation for selected icons." msgstr "Без анимация на маркирането за маркирани иконки." # ../../WPrefs.app/Expert.c:113 #: ../../WPrefs.app/Expert.c:115 msgid "Expert User Preferences" msgstr "Настройки за напреднали потребители" # ../../WPrefs.app/Expert.c:115 #: ../../WPrefs.app/Expert.c:117 msgid "" "Options for people who know what they're doing...\n" "Also have some other misc. options." msgstr "" "Настройки за хора, които знаят какво правят...\n" "Също и разни други настройки." # ../../WPrefs.app/Focus.c:83 #: ../../WPrefs.app/Focus.c:80 #, c-format msgid "bad option value %s for option FocusMode. Using default Manual" msgstr "" "неправилна стойност %s на опцията FocusMode. По подразбиране се ползва Manual" # ../../WPrefs.app/Focus.c:98 #: ../../WPrefs.app/Focus.c:94 #, c-format msgid "bad option value %s for option ColormapMode. Using default Auto" msgstr "" "неправилна стойност %s на опцията ColormapMode. По подразбиране се ползва " "Auto" # ../../WPrefs.app/Focus.c:249 #: ../../WPrefs.app/Focus.c:214 msgid "Input Focus Mode" msgstr "Правило за фокусиране" # ../../WPrefs.app/Focus.c:196 #: ../../WPrefs.app/Focus.c:222 msgid "Manual: Click on the window to set keyboard input focus" msgstr "Ръчно: щракане върху прозореца, за да му се даде клавиатурния фокус" # ../../WPrefs.app/Focus.c:205 #: ../../WPrefs.app/Focus.c:229 msgid "Auto: Set keyboard input focus to the window under the mouse pointer" msgstr "Автоматично: клавиатурният фокус се получава от прозореца, върху който е мишката" # ../../WPrefs.app/Focus.c:271 #: ../../WPrefs.app/Focus.c:243 msgid "Install colormap from the window..." msgstr "Цветовата палитра е за прозореца,... " # ../../WPrefs.app/Focus.c:276 #: ../../WPrefs.app/Focus.c:248 msgid "...that has the input focus" msgstr "... който е фокусиран" # ../../WPrefs.app/Focus.c:281 #: ../../WPrefs.app/Focus.c:253 msgid "...that's under the mouse pointer" msgstr "... който е под мишката" # ../../WPrefs.app/Focus.c:290 #: ../../WPrefs.app/Focus.c:262 msgid "Automatic Window Raise Delay" msgstr "Забавяне на автоматичното повдигане" # ../../WPrefs.app/Focus.c:347 #: ../../WPrefs.app/Focus.c:319 ../../WPrefs.app/MouseSettings.c:601 msgid "ms" msgstr "ms" # ../../WPrefs.app/Focus.c:364 #: ../../WPrefs.app/Focus.c:336 msgid "Do not let applications receive the click used to focus windows" msgstr "Приложенията да не получават щракания, използвани за фокусиране на прозорец" # ../../WPrefs.app/Focus.c:370 #: ../../WPrefs.app/Focus.c:342 msgid "Automatically focus new windows" msgstr "Автоматично да се фокусират новите прозорци" # ../../WPrefs.app/Focus.c:391 #: ../../WPrefs.app/Focus.c:363 msgid "Window Focus Preferences" msgstr "Предпочитания за фокусирането на прозорците" # ../../WPrefs.app/Focus.c:393 #: ../../WPrefs.app/Focus.c:365 msgid "" "Keyboard focus switching policy, colormap switching\n" "policy for 8bpp displays and other related options." msgstr "" "Правило за предаване на клавиатурния фокус,\n" "предаване на цветовата палитра при дисплеи\n" "с 8 бита/пиксел и други подобни опции." # ../../WPrefs.app/Font.c:277 #: ../../WPrefs.app/Font.c:276 msgid "Could not locate font information file WPrefs.app/font.data" msgstr "Не може да бъде открит информационният файл за шрифтовете WPrefs.app/font.data" # ../../WPrefs.app/Font.c:283 #: ../../WPrefs.app/Font.c:282 msgid "Could not read font information file WPrefs.app/font.data" msgstr "" "Не може да се чете информационният файл за шрифтовете WPrefs.app/font.data" # ../../WPrefs.app/Font.c:294 #: ../../WPrefs.app/Font.c:293 msgid "" "Invalid data in font information file WPrefs.app/font.data.\n" "Encodings data not found." msgstr "" "Неправилни данни във информационният файл за шрифтовете WPrefs.app/font." "data\n" "Няма данни за кодовата таблица." # ../../WPrefs.app/Font.c:299 #: ../../WPrefs.app/Font.c:298 msgid "- Custom -" msgstr "- Нагласен -" # ../../WPrefs.app/Font.c:330 ../../WPrefs.app/Menu.c:1401 # ../../WPrefs.app/MouseSettings.c:152 ../../WPrefs.app/MouseSettings.c:172 # ../../WPrefs.app/TexturePanel.c:608 ../../WPrefs.app/TexturePanel.c:686 # ../../WPrefs.app/Themes.c:96 ../../WPrefs.app/WPrefs.c:743 # ../../WPrefs.app/WPrefs.c:748 ../../WPrefs.app/WPrefs.c:762 # ../../WPrefs.app/WPrefs.c:772 ../../WPrefs.app/WPrefs.c:782 # ../../WPrefs.app/WPrefs.c:813 ../../WPrefs.app/WPrefs.c:818 #: ../../WPrefs.app/Font.c:329 ../../WPrefs.app/Menu.c:1594 #: ../../WPrefs.app/MouseSettings.c:140 ../../WPrefs.app/MouseSettings.c:160 #: ../../WPrefs.app/TexturePanel.c:613 ../../WPrefs.app/TexturePanel.c:693 #: ../../WPrefs.app/Themes.c:96 ../../WPrefs.app/WPrefs.c:758 #: ../../WPrefs.app/WPrefs.c:763 ../../WPrefs.app/WPrefs.c:780 #: ../../WPrefs.app/WPrefs.c:790 ../../WPrefs.app/WPrefs.c:800 #: ../../WPrefs.app/WPrefs.c:838 ../../WPrefs.app/WPrefs.c:843 msgid "Error" msgstr "Грешка" # ../../WPrefs.app/Font.c:330 ../../WPrefs.app/Menu.c:1401 # ../../WPrefs.app/MenuGuru.c:119 ../../WPrefs.app/MenuGuru.c:126 # ../../WPrefs.app/MenuGuru.c:140 ../../WPrefs.app/MouseSettings.c:154 # ../../WPrefs.app/MouseSettings.c:174 ../../WPrefs.app/TexturePanel.c:609 # ../../WPrefs.app/TexturePanel.c:688 ../../WPrefs.app/TexturePanel.c:1522 # ../../WPrefs.app/Themes.c:98 ../../WPrefs.app/WPrefs.c:743 # ../../WPrefs.app/WPrefs.c:748 ../../WPrefs.app/WPrefs.c:764 # ../../WPrefs.app/WPrefs.c:776 ../../WPrefs.app/WPrefs.c:782 # ../../WPrefs.app/WPrefs.c:789 ../../WPrefs.app/WPrefs.c:813 # ../../WPrefs.app/WPrefs.c:818 #: ../../WPrefs.app/Font.c:329 ../../WPrefs.app/Menu.c:1594 #: ../../WPrefs.app/MouseSettings.c:142 ../../WPrefs.app/MouseSettings.c:162 #: ../../WPrefs.app/TexturePanel.c:614 ../../WPrefs.app/TexturePanel.c:695 #: ../../WPrefs.app/TexturePanel.c:1528 ../../WPrefs.app/Themes.c:98 #: ../../WPrefs.app/WPrefs.c:758 ../../WPrefs.app/WPrefs.c:763 #: ../../WPrefs.app/WPrefs.c:782 ../../WPrefs.app/WPrefs.c:794 #: ../../WPrefs.app/WPrefs.c:800 ../../WPrefs.app/WPrefs.c:807 #: ../../WPrefs.app/WPrefs.c:838 ../../WPrefs.app/WPrefs.c:843 #: ../../WPrefs.app/imagebrowser.c:105 msgid "OK" msgstr "Приемам" # ../../WPrefs.app/Font.c:377 #: ../../WPrefs.app/Font.c:376 msgid "Default Font Sets" msgstr "Стандартни шрифтове" # ../../WPrefs.app/Font.c:390 #: ../../WPrefs.app/Font.c:389 msgid "Font Set" msgstr "Гарнитура" # ../../WPrefs.app/Font.c:419 #: ../../WPrefs.app/Font.c:418 msgid "Add..." msgstr "Добави" # ../../WPrefs.app/Font.c:424 ../../WPrefs.app/Font.c:439 #: ../../WPrefs.app/Font.c:423 ../../WPrefs.app/Font.c:438 msgid "Change..." msgstr "Смени..." # ../../WPrefs.app/Font.c:429 ../../WPrefs.app/Paths.c:288 # ../../WPrefs.app/Paths.c:319 #: ../../WPrefs.app/Font.c:428 ../../WPrefs.app/Paths.c:288 #: ../../WPrefs.app/Paths.c:319 msgid "Remove" msgstr "Премахни" # ../../WPrefs.app/Font.c:478 #: ../../WPrefs.app/Font.c:477 msgid "Font Preferences" msgstr "Предпочитания за шрифтовете" # ../../WPrefs.app/Font.c:479 #: ../../WPrefs.app/Font.c:478 msgid "Font Configurations for Windows, Menus etc" msgstr "" "Настройка на шрифтовете за\n" "прозорците, менютата и др." # ../../WPrefs.app/Icons.c:182 #: ../../WPrefs.app/Icons.c:180 msgid "Icon Positioning" msgstr "Нареждане на иконките" # ../../WPrefs.app/Icons.c:229 #: ../../WPrefs.app/Icons.c:227 msgid "Iconification Animation" msgstr "Анимация при минимизиране" # ../../WPrefs.app/Icons.c:240 #: ../../WPrefs.app/Icons.c:238 msgid "Shrinking/Zooming" msgstr "Свиване/разширяване" # ../../WPrefs.app/Icons.c:241 #: ../../WPrefs.app/Icons.c:239 msgid "Spinning/Twisting" msgstr "Увиване/развиване" # ../../WPrefs.app/Icons.c:242 #: ../../WPrefs.app/Icons.c:240 msgid "3D-flipping" msgstr "Тримерно преобръщане" # ../../WPrefs.app/Icons.c:243 #: ../../WPrefs.app/Icons.c:241 ../../WPrefs.app/MouseSettings.c:838 #: ../../WPrefs.app/MouseSettings.c:843 msgid "None" msgstr "Никаква" # ../../WPrefs.app/Icons.c:256 #: ../../WPrefs.app/Icons.c:254 msgid "Auto-arrange icons" msgstr "Автомат. подреждане на иконките" # ../../WPrefs.app/Icons.c:258 #: ../../WPrefs.app/Icons.c:256 msgid "Keep icons and miniwindows arranged all the time." msgstr "" "Иконките и минипрозорчетата да се поддържат\n" "подредени през цялото време." # ../../WPrefs.app/Icons.c:264 #: ../../WPrefs.app/Icons.c:262 msgid "Omnipresent miniwindows" msgstr "Вездесъщни минипрозорчета" # ../../WPrefs.app/Icons.c:266 #: ../../WPrefs.app/Icons.c:264 msgid "Make miniwindows be present in all workspaces." msgstr "" "Минипрозорчетата да присъстват на\n" "всички работни места." # ../../WPrefs.app/Icons.c:275 #: ../../WPrefs.app/Icons.c:273 msgid "Icon Size" msgstr "Размер на иконките" # ../../WPrefs.app/Icons.c:277 #: ../../WPrefs.app/Icons.c:275 msgid "The size of the dock/application icon and miniwindows" msgstr "" "Размерът на иконките и минипрозорчетата\n" "от дока и на приложенията." # ../../WPrefs.app/Icons.c:347 #: ../../WPrefs.app/Icons.c:345 msgid "Icon Preferences" msgstr "Предпочитания за иконките" # ../../WPrefs.app/Icons.c:349 #: ../../WPrefs.app/Icons.c:347 msgid "" "Icon/Miniwindow handling options. Icon positioning\n" "area, sizes of icons, miniaturization animation style." msgstr "" "Опции за поддържането на иконките и минипрозорчетата.\n" "Място, където да се подреждат иконките, техният\n" "размер, вид анимация при минимизиране." # ../../WPrefs.app/KeyboardSettings.c:74 #: ../../WPrefs.app/KeyboardSettings.c:73 msgid "Initial Key Repeat" msgstr "" # ../../WPrefs.app/KeyboardSettings.c:115 #: ../../WPrefs.app/KeyboardSettings.c:114 msgid "Key Repeat Rate" msgstr "" # ../../WPrefs.app/KeyboardSettings.c:155 #: ../../WPrefs.app/KeyboardSettings.c:154 msgid "Type here to test" msgstr "Пишете тук за проба" # ../../WPrefs.app/KeyboardSettings.c:174 #: ../../WPrefs.app/KeyboardSettings.c:173 msgid "Keyboard Preferences" msgstr "Предпочитания за клавиатурата" # ../../WPrefs.app/KeyboardSettings.c:176 #: ../../WPrefs.app/KeyboardSettings.c:175 msgid "Not done" msgstr "Не е готово" # ../../WPrefs.app/KeyboardShortcuts.c:185 ../../WPrefs.app/Menu.c:1027 # ../../WPrefs.app/MenuGuru.c:263 ../../WPrefs.app/TexturePanel.c:1528 #: ../../WPrefs.app/KeyboardShortcuts.c:306 ../../WPrefs.app/Menu.c:360 #: ../../WPrefs.app/TexturePanel.c:1534 ../../WPrefs.app/imagebrowser.c:100 msgid "Cancel" msgstr "Отменям" # ../../WPrefs.app/KeyboardShortcuts.c:186 #: ../../WPrefs.app/KeyboardShortcuts.c:307 msgid "Press the desired shortcut key(s) or click Cancel to stop capturing." msgstr "" "Наберете клавишната\n" "комбинация или натис-\n" "нете „Отменям“ за да се\n" "освободи клавиатурата." # ../../WPrefs.app/KeyboardShortcuts.c:206 # ../../WPrefs.app/KeyboardShortcuts.c:454 ../../WPrefs.app/Menu.c:1039 # ../../WPrefs.app/Menu.c:1262 #: ../../WPrefs.app/KeyboardShortcuts.c:327 #: ../../WPrefs.app/KeyboardShortcuts.c:577 ../../WPrefs.app/Menu.c:371 #: ../../WPrefs.app/Menu.c:830 msgid "Capture" msgstr "Прихвани" # ../../WPrefs.app/KeyboardShortcuts.c:207 # ../../WPrefs.app/KeyboardShortcuts.c:461 #: ../../WPrefs.app/KeyboardShortcuts.c:328 #: ../../WPrefs.app/KeyboardShortcuts.c:585 msgid "Click Capture to interactively define the shortcut key." msgstr "" "Натиснете „Прихвани“ за да определите диалогово клавишната комбинация." # ../../WPrefs.app/KeyboardShortcuts.c:361 #: ../../WPrefs.app/KeyboardShortcuts.c:483 msgid "Actions" msgstr "Действия" # ../../WPrefs.app/KeyboardShortcuts.c:377 #: ../../WPrefs.app/KeyboardShortcuts.c:499 msgid "Open applications menu" msgstr "Менюто на приложенията" # ../../WPrefs.app/KeyboardShortcuts.c:378 #: ../../WPrefs.app/KeyboardShortcuts.c:500 msgid "Open window list menu" msgstr "Менюто на списъка с прозорците" # ../../WPrefs.app/KeyboardShortcuts.c:379 #: ../../WPrefs.app/KeyboardShortcuts.c:501 msgid "Open window commands menu" msgstr "Менюто с прозоречните команди" # ../../WPrefs.app/KeyboardShortcuts.c:380 #: ../../WPrefs.app/KeyboardShortcuts.c:502 msgid "Hide active application" msgstr "Скриване на активното приложение" # ../../WPrefs.app/KeyboardShortcuts.c:380 #: ../../WPrefs.app/KeyboardShortcuts.c:503 msgid "Hide other applications" msgstr "Скриване на другите приложения" # ../../WPrefs.app/KeyboardShortcuts.c:381 #: ../../WPrefs.app/KeyboardShortcuts.c:504 msgid "Miniaturize active window" msgstr "Минимизиране на активния прозорец" # ../../WPrefs.app/KeyboardShortcuts.c:382 #: ../../WPrefs.app/KeyboardShortcuts.c:505 msgid "Close active window" msgstr "Затваряне на активния прозорец" # ../../WPrefs.app/KeyboardShortcuts.c:383 #: ../../WPrefs.app/KeyboardShortcuts.c:506 msgid "Maximize active window" msgstr "Максимизиране на активния прозорец" # ../../WPrefs.app/KeyboardShortcuts.c:384 #: ../../WPrefs.app/KeyboardShortcuts.c:507 msgid "Maximize active window vertically" msgstr "Вертикално максимизиране на активния" # ../../WPrefs.app/KeyboardShortcuts.c:384 #: ../../WPrefs.app/KeyboardShortcuts.c:508 msgid "Maximize active window horizontally" msgstr "Хоризонтално максимизиране на активния" # ../../WPrefs.app/KeyboardShortcuts.c:385 #: ../../WPrefs.app/KeyboardShortcuts.c:509 msgid "Raise active window" msgstr "Повдигане на активния прозорец" # ../../WPrefs.app/KeyboardShortcuts.c:386 #: ../../WPrefs.app/KeyboardShortcuts.c:510 msgid "Lower active window" msgstr "Спускане на активния прозорец" # ../../WPrefs.app/KeyboardShortcuts.c:387 #: ../../WPrefs.app/KeyboardShortcuts.c:511 msgid "Raise/Lower window under mouse pointer" msgstr "Вдигане/спускане на прозореца под мишката" # ../../WPrefs.app/KeyboardShortcuts.c:388 #: ../../WPrefs.app/KeyboardShortcuts.c:512 msgid "Shade active window" msgstr "Свиване на активния прозорец" # ../../WPrefs.app/KeyboardShortcuts.c:389 #: ../../WPrefs.app/KeyboardShortcuts.c:513 msgid "Move/Resize active window" msgstr "Местене/оразмеряване на активния прозорец" # ../../WPrefs.app/KeyboardShortcuts.c:390 #: ../../WPrefs.app/KeyboardShortcuts.c:514 msgid "Select active window" msgstr "Маркиране на активния прозорец" # ../../WPrefs.app/KeyboardShortcuts.c:391 #: ../../WPrefs.app/KeyboardShortcuts.c:515 msgid "Focus next window" msgstr "Фокусиране на следващия прозорец" # ../../WPrefs.app/KeyboardShortcuts.c:392 #: ../../WPrefs.app/KeyboardShortcuts.c:516 msgid "Focus previous window" msgstr "Фокусиране на предходния прозорец" # ../../WPrefs.app/KeyboardShortcuts.c:393 #: ../../WPrefs.app/KeyboardShortcuts.c:517 msgid "Switch to next workspace" msgstr "Преминаване към следващото работно място" # ../../WPrefs.app/KeyboardShortcuts.c:394 #: ../../WPrefs.app/KeyboardShortcuts.c:518 msgid "Switch to previous workspace" msgstr "Преминаване към предходното работно място" # ../../WPrefs.app/KeyboardShortcuts.c:395 #: ../../WPrefs.app/KeyboardShortcuts.c:519 msgid "Switch to next ten workspaces" msgstr "Напред през десет работни мeста" # ../../WPrefs.app/KeyboardShortcuts.c:396 #: ../../WPrefs.app/KeyboardShortcuts.c:520 msgid "Switch to previous ten workspaces" msgstr "Назад през десет работни места" # ../../WPrefs.app/KeyboardShortcuts.c:397 #: ../../WPrefs.app/KeyboardShortcuts.c:521 msgid "Switch to workspace 1" msgstr "Преминаване към работно място 1" # ../../WPrefs.app/KeyboardShortcuts.c:398 #: ../../WPrefs.app/KeyboardShortcuts.c:522 msgid "Switch to workspace 2" msgstr "Преминаване към работно място 2" # ../../WPrefs.app/KeyboardShortcuts.c:399 #: ../../WPrefs.app/KeyboardShortcuts.c:523 msgid "Switch to workspace 3" msgstr "Преминаване към работно място 3" # ../../WPrefs.app/KeyboardShortcuts.c:400 #: ../../WPrefs.app/KeyboardShortcuts.c:524 msgid "Switch to workspace 4" msgstr "Преминаване към работно място 4" # ../../WPrefs.app/KeyboardShortcuts.c:401 #: ../../WPrefs.app/KeyboardShortcuts.c:525 msgid "Switch to workspace 5" msgstr "Преминаване към работно място 5" # ../../WPrefs.app/KeyboardShortcuts.c:402 #: ../../WPrefs.app/KeyboardShortcuts.c:526 msgid "Switch to workspace 6" msgstr "Преминаване към работно място 6" # ../../WPrefs.app/KeyboardShortcuts.c:403 #: ../../WPrefs.app/KeyboardShortcuts.c:527 msgid "Switch to workspace 7" msgstr "Преминаване към работно място 7" # ../../WPrefs.app/KeyboardShortcuts.c:404 #: ../../WPrefs.app/KeyboardShortcuts.c:528 msgid "Switch to workspace 8" msgstr "Преминаване към работно място 8" # ../../WPrefs.app/KeyboardShortcuts.c:405 #: ../../WPrefs.app/KeyboardShortcuts.c:529 msgid "Switch to workspace 9" msgstr "Преминаване към работно място 9" # ../../WPrefs.app/KeyboardShortcuts.c:406 #: ../../WPrefs.app/KeyboardShortcuts.c:530 msgid "Switch to workspace 10" msgstr "Преминаване към работно място 10" # ../../WPrefs.app/KeyboardShortcuts.c:407 #: ../../WPrefs.app/KeyboardShortcuts.c:531 msgid "Shortcut for window 1" msgstr "Бърз клавиш за прозорец 1" # ../../WPrefs.app/KeyboardShortcuts.c:408 #: ../../WPrefs.app/KeyboardShortcuts.c:532 msgid "Shortcut for window 2" msgstr "Бърз клавиш за прозорец 2" # ../../WPrefs.app/KeyboardShortcuts.c:409 #: ../../WPrefs.app/KeyboardShortcuts.c:533 msgid "Shortcut for window 3" msgstr "Бърз клавиш за прозорец 3" # ../../WPrefs.app/KeyboardShortcuts.c:410 #: ../../WPrefs.app/KeyboardShortcuts.c:534 msgid "Shortcut for window 4" msgstr "Бърз клавиш за прозорец 4" # ../../WPrefs.app/KeyboardShortcuts.c:412 #: ../../WPrefs.app/KeyboardShortcuts.c:535 msgid "Shortcut for window 5" msgstr "Бърз клавиш за прозорец 5" # ../../WPrefs.app/KeyboardShortcuts.c:413 #: ../../WPrefs.app/KeyboardShortcuts.c:536 msgid "Shortcut for window 6" msgstr "Бърз клавиш за прозорец 6" # ../../WPrefs.app/KeyboardShortcuts.c:414 #: ../../WPrefs.app/KeyboardShortcuts.c:537 msgid "Shortcut for window 7" msgstr "Бърз клавиш за прозорец 7" # ../../WPrefs.app/KeyboardShortcuts.c:415 #: ../../WPrefs.app/KeyboardShortcuts.c:538 msgid "Shortcut for window 8" msgstr "Бърз клавиш за прозорец 8" # ../../WPrefs.app/KeyboardShortcuts.c:416 #: ../../WPrefs.app/KeyboardShortcuts.c:539 msgid "Shortcut for window 9" msgstr "Бърз клавиш за прозорец 9" # ../../WPrefs.app/KeyboardShortcuts.c:417 #: ../../WPrefs.app/KeyboardShortcuts.c:540 msgid "Shortcut for window 10" msgstr "Бърз клавиш за прозорец 10" # ../../WPrefs.app/KeyboardShortcuts.c:395 #: ../../WPrefs.app/KeyboardShortcuts.c:541 msgid "Switch to Next Screen/Monitor" msgstr "Напред през десет екрана/монитора" # ../../WPrefs.app/KeyboardShortcuts.c:419 #: ../../WPrefs.app/KeyboardShortcuts.c:542 msgid "Raise Clip" msgstr "Повдигане на Кламер" # ../../WPrefs.app/KeyboardShortcuts.c:420 #: ../../WPrefs.app/KeyboardShortcuts.c:543 msgid "Lower Clip" msgstr "Спускане на Кламер" # ../../WPrefs.app/KeyboardShortcuts.c:421 #: ../../WPrefs.app/KeyboardShortcuts.c:544 msgid "Raise/Lower Clip" msgstr "Повдигане/спускане на Кламер" # ../../WPrefs.app/KeyboardShortcuts.c:423 #: ../../WPrefs.app/KeyboardShortcuts.c:546 msgid "Toggle keyboard language" msgstr "Превключвател КИР/ЛАТ" # ../../WPrefs.app/KeyboardShortcuts.c:437 ../../WPrefs.app/Menu.c:1251 #: ../../WPrefs.app/KeyboardShortcuts.c:560 msgid "Shortcut" msgstr "Бърз клавиш" # ../../WPrefs.app/KeyboardShortcuts.c:448 #: ../../WPrefs.app/KeyboardShortcuts.c:571 ../../WPrefs.app/Menu.c:836 msgid "Clear" msgstr "Изчисти" # ../../WPrefs.app/KeyboardShortcuts.c:509 #: ../../WPrefs.app/KeyboardShortcuts.c:633 msgid "Keyboard Shortcut Preferences" msgstr "Предпочитания за „бързи клавиши“" # ../../WPrefs.app/KeyboardShortcuts.c:511 #: ../../WPrefs.app/KeyboardShortcuts.c:635 msgid "" "Change the keyboard shortcuts for actions such\n" "as changing workspaces and opening menus." msgstr "" "Промяна на „бързи клавиши“ за действия като\n" "смяна на работното пространство и\n" "показване на менюта." #: ../../WPrefs.app/Menu.c:278 msgid "Select Program" msgstr "Посочете програмата" #: ../../WPrefs.app/Menu.c:510 msgid "New Items" msgstr "Нови елементи" #: ../../WPrefs.app/Menu.c:511 msgid "Sample Commands" msgstr "Примерни действия" # ../../WPrefs.app/Menu.c:485 #: ../../WPrefs.app/Menu.c:512 msgid "Sample Submenus" msgstr "Примерни подменюта" # ../../WPrefs.app/Menu.c:1191 #: ../../WPrefs.app/Menu.c:526 msgid "Run Program" msgstr "Стартиране на програма" # ../../WPrefs.app/Menu.c:1186 #: ../../WPrefs.app/Menu.c:527 msgid "Internal Command" msgstr "Вътрешна команда" # ../../WPrefs.app/Menu.c:485 #: ../../WPrefs.app/Menu.c:528 msgid "Submenu" msgstr "Подменю" # ../../WPrefs.app/Menu.c:490 #: ../../WPrefs.app/Menu.c:529 msgid "External Submenu" msgstr "Външно подменю" # ../../WPrefs.app/Menu.c:485 #: ../../WPrefs.app/Menu.c:530 msgid "Generated Submenu" msgstr "Генерирано подменю" #: ../../WPrefs.app/Menu.c:531 msgid "Directory Contents" msgstr "Файлове от директория" #: ../../WPrefs.app/Menu.c:532 msgid "Workspace Menu" msgstr "Работни места" # ../../WPrefs.app/MouseSettings.c:632 #: ../../WPrefs.app/Menu.c:533 ../../WPrefs.app/MouseSettings.c:840 msgid "Window List Menu" msgstr "Списъка с прозорците" #: ../../WPrefs.app/Menu.c:552 msgid "XTerm" msgstr "Терминал XTerm" #: ../../WPrefs.app/Menu.c:555 msgid "rxvt" msgstr "Терминал rxvt" #: ../../WPrefs.app/Menu.c:558 msgid "ETerm" msgstr "Терминал ETerm" #: ../../WPrefs.app/Menu.c:561 msgid "Run..." msgstr "Стартирай..." #: ../../WPrefs.app/Menu.c:562 msgid "%a(Run,Type command to run)" msgstr "%a(Команда,Въведете командата, която да се изпълни)" #: ../../WPrefs.app/Menu.c:564 msgid "Netscape" msgstr "Браузър Netscape" #: ../../WPrefs.app/Menu.c:567 msgid "gimp" msgstr "Растерна графика Gimp" #: ../../WPrefs.app/Menu.c:570 msgid "epic" msgstr "IRCII клиент epic" #: ../../WPrefs.app/Menu.c:573 msgid "ee" msgstr "Редактор ee" #: ../../WPrefs.app/Menu.c:576 msgid "xv" msgstr "Визуализатор xv" #: ../../WPrefs.app/Menu.c:579 msgid "Acrobat Reader" msgstr "Acrobat Reader (PDF)" #: ../../WPrefs.app/Menu.c:582 msgid "ghostview" msgstr "ghostview (PS)" #: ../../WPrefs.app/Menu.c:585 ../../WPrefs.app/Menu.c:857 msgid "Exit Window Maker" msgstr "Изход от УиндоуМейкър" #: ../../WPrefs.app/Menu.c:608 msgid "Debian Menu" msgstr "Меню на Дебиан" #: ../../WPrefs.app/Menu.c:611 msgid "RedHat Menu" msgstr "Меню на RedHat" #: ../../WPrefs.app/Menu.c:614 msgid "Menu Conectiva" msgstr "Генерирано меню" # ../../WPrefs.app/Themes.c:251 #: ../../WPrefs.app/Menu.c:617 ../../WPrefs.app/Themes.c:250 msgid "Themes" msgstr "Теми" #: ../../WPrefs.app/Menu.c:622 msgid "Bg Images (scale)" msgstr "Фон (мащабиран)" #: ../../WPrefs.app/Menu.c:627 msgid "Bg Images (tile)" msgstr "Фон (мозайка)" #: ../../WPrefs.app/Menu.c:632 msgid "Assorted XTerms" msgstr "Разни XTerm-ове" #: ../../WPrefs.app/Menu.c:634 msgid "XTerm Yellow on Blue" msgstr "XTerm: жълто в/у синьо" #: ../../WPrefs.app/Menu.c:637 msgid "XTerm White on Black" msgstr "XTerm: бяло в/у черно" #: ../../WPrefs.app/Menu.c:640 msgid "XTerm Black on White" msgstr "XTerm: черно в/у бяло" #: ../../WPrefs.app/Menu.c:643 msgid "XTerm Black on Beige" msgstr "XTerm: черно в/у резеда" #: ../../WPrefs.app/Menu.c:646 msgid "XTerm White on Green" msgstr "XTerm: бяло в/у зелено" #: ../../WPrefs.app/Menu.c:649 msgid "XTerm White on Olive" msgstr "XTerm: бяло в/у жабешко" #: ../../WPrefs.app/Menu.c:652 msgid "XTerm Blue on Blue" msgstr "XTerm: синьо в/у бяло" #: ../../WPrefs.app/Menu.c:655 msgid "XTerm BIG FONTS" msgstr "XTerm: ГОЛЯМ ШРИФТ" # ../../WPrefs.app/Menu.c:428 ../../WPrefs.app/Menu.c:1238 #: ../../WPrefs.app/Menu.c:677 msgid "Program to Run" msgstr "Да се стартира програмата" # ../../WPrefs.app/TexturePanel.c:1497 #: ../../WPrefs.app/Menu.c:687 msgid "Browse" msgstr "Браузър" #: ../../WPrefs.app/Menu.c:698 msgid "Run the program inside a Xterm" msgstr "Изпълнявай програмата в Xterm" #: ../../WPrefs.app/Menu.c:708 msgid "Path for Menu" msgstr "Път за менюто" #: ../../WPrefs.app/Menu.c:721 msgid "" "Enter the path for a file containing a menu\n" "or a list of directories with the programs you\n" "want to have listed in the menu. Ex:\n" "~/GNUstep/Library/WindowMaker/menu\n" "or\n" "/usr/bin ~/xbin" msgstr "" "Въведете пътя на файл, съдържащ меню или\n" "списък от директории с програмите, които\n" "желаете да бъдат включени в менюто. Напр.:\n" "~/GNUstep/Library/WindowMaker/menu\n" "или /usr/bin ~/xbin" # ../../WPrefs.app/Menu.c:1186 #: ../../WPrefs.app/Menu.c:736 msgid "Command" msgstr "Команда" #: ../../WPrefs.app/Menu.c:750 msgid "" "Enter a command that outputs a menu\n" "definition to stdout when invoked." msgstr "" "Въведете команда, извеждаща на стандартния\n" "си изход дефиниция на меню." #: ../../WPrefs.app/Menu.c:758 msgid "" "Cache menu contents after opening for\n" "the first time" msgstr "" #: ../../WPrefs.app/Menu.c:769 msgid "Command to Open Files" msgstr "Прог. за отваряне файловете" #: ../../WPrefs.app/Menu.c:783 msgid "" "Enter the command you want to use to open the\n" "files in the directories listed below." msgstr "" "Въведете командата, която желаете да се използва\n" "за отваряне на посочените по-долу файлове." #: ../../WPrefs.app/Menu.c:792 msgid "Directories with Files" msgstr "Директории с файлове" #: ../../WPrefs.app/Menu.c:805 msgid "Strip extensions from file names" msgstr "Съкращавай файловите разширения" #: ../../WPrefs.app/Menu.c:817 msgid "Keyboard Shortcut" msgstr "Предпочитания за „бързи клавиши“" # ../../WPrefs.app/Menu.c:1193 #: ../../WPrefs.app/Menu.c:853 msgid "Arrange Icons" msgstr "Подреждане на иконките" #: ../../WPrefs.app/Menu.c:854 msgid "Hide All Windows Except For The Focused One" msgstr "Скриване на всички прозорци, освен фокусирания" # ../../WPrefs.app/Menu.c:1195 #: ../../WPrefs.app/Menu.c:855 msgid "Show All Windows" msgstr "Показване на всички прозорци" # ../../WPrefs.app/Menu.c:1197 #: ../../WPrefs.app/Menu.c:858 msgid "Exit X Session" msgstr "Край на X-сесията" #: ../../WPrefs.app/Menu.c:859 msgid "Restart Window Maker" msgstr "Рестартиране на Уиндоу Мейкър" #: ../../WPrefs.app/Menu.c:860 msgid "Start Another Window Manager : (" msgstr "Стартиране на друг администратор : (" #: ../../WPrefs.app/Menu.c:862 msgid "Save Current Session" msgstr "Запазване на текущата сесия" #: ../../WPrefs.app/Menu.c:863 msgid "Clear Saved Session" msgstr "Изчистване на запазената сесията" # ../../WPrefs.app/Menu.c:1202 #: ../../WPrefs.app/Menu.c:864 msgid "Refresh Screen" msgstr "Опресняване на сесията" #: ../../WPrefs.app/Menu.c:865 msgid "Open Info Panel" msgstr "Информационен панел" #: ../../WPrefs.app/Menu.c:866 msgid "Open Copyright Panel" msgstr "Панел „Авторски права“" #: ../../WPrefs.app/Menu.c:872 msgid "Window Manager to Start" msgstr "Администратор на прозорците" #: ../../WPrefs.app/Menu.c:888 msgid "Do not confirm action." msgstr "Да не се потвърждава действието." #: ../../WPrefs.app/Menu.c:898 msgid "" "Instructions:\n" "\n" " - drag items from the left to the menu to add new items\n" " - drag items out of the menu to remove items\n" " - drag items in menu to change their position\n" " - drag items with Control pressed to copy them\n" " - double click in a menu item to change the label\n" " - click on a menu item to change related information" msgstr "" "Упътване:\n" "\n" " - влачете елементите отляво поставяйки ги върху менюто;\n" " - влачете елементите извън менюто, за да ги махнете;\n" " - влачете елементите в менюто, за пренареждане;\n" " - влачете елементите с натиснат Control за копиране;\n" " - двукратно щракане за промяна на заглавието и\n" " - щракане за промяна на информация на елемент." #: ../../WPrefs.app/Menu.c:1122 #, c-format msgid "unknown command '%s' in menu" msgstr "Непозната команда \"%s\" в менюто." #: ../../WPrefs.app/Menu.c:1154 msgid ": Execute Program" msgstr " (изпълнява програма)" #: ../../WPrefs.app/Menu.c:1158 msgid ": Perform Internal Command" msgstr " (изпълнява вътрешна команда)" #: ../../WPrefs.app/Menu.c:1162 msgid ": Open a Submenu" msgstr " (отваря подменю)" #: ../../WPrefs.app/Menu.c:1166 msgid ": Program Generated Submenu" msgstr " (програмно генерирано подменю)" #: ../../WPrefs.app/Menu.c:1170 msgid ": Directory Contents Menu" msgstr " (съдържание на директория)" #: ../../WPrefs.app/Menu.c:1174 msgid ": Open Workspaces Submenu" msgstr " (менюто с работните места)" # ../../WPrefs.app/KeyboardShortcuts.c:378 #: ../../WPrefs.app/Menu.c:1178 msgid ": Open Window List Submenu" msgstr " (менюто със списъка на прозорците)" # ../../WPrefs.app/Menu.c:485 #: ../../WPrefs.app/Menu.c:1403 msgid "Remove Submenu" msgstr "Отстрани подменюто" #: ../../WPrefs.app/Menu.c:1404 msgid "" "Removing this item will destroy all items inside\n" "the submenu. Do you really want to do that?" msgstr "" "Махането на този елемент би унищожило всички\n" "поделементи на подменюто. Желаете ли наистина това?" #: ../../WPrefs.app/Menu.c:1406 msgid "Yes" msgstr "Да" #: ../../WPrefs.app/Menu.c:1406 msgid "No" msgstr "Не" #: ../../WPrefs.app/Menu.c:1407 msgid "Yes, don't ask again" msgstr "Да, не ме питай пак" # ../../WPrefs.app/Menu.c:1382 ../../WPrefs.app/Menu.c:1389 #. if there is a localized plmenu for the tongue put it's filename here #: ../../WPrefs.app/Menu.c:1575 ../../WPrefs.app/Menu.c:1582 #, c-format msgid "%s/Library/WindowMaker/plmenu" msgstr "%s/Library/WindowMaker/plmenu.bg" # ../../WPrefs.app/Menu.c:1398 #: ../../WPrefs.app/Menu.c:1591 #, c-format msgid "Could not open default menu from '%s'" msgstr "Не може да се отвори подразбиращото се меню от \"%s\"" # ../../WPrefs.app/WPrefs.c:789 #: ../../WPrefs.app/Menu.c:1629 ../../WPrefs.app/WPrefs.c:807 msgid "Warning" msgstr "Внимание!" #: ../../WPrefs.app/Menu.c:1630 msgid "" "The menu file format currently in use is not supported\n" "by this tool. Do you want to discard the current menu\n" "to use this tool?" msgstr "" "Използваният в момента формат на менюто не се поддържа от\n" "този инструмент. Ще се откажете ли от настоящото меню,\n" "за да използвате този инструмент?" #: ../../WPrefs.app/Menu.c:1633 msgid "Yes, Discard and Update" msgstr "Да, отказвам се, обнови го" # ../../WPrefs.app/NoMenuAlert.c:119 #: ../../WPrefs.app/Menu.c:1634 msgid "No, Keep Current Menu" msgstr "Не, запази сегашното" # ../../WPrefs.app/Menu.c:1508 #: ../../WPrefs.app/Menu.c:1897 msgid "Applications Menu Definition" msgstr "Нагласяване на менюто с приложения" # ../../WPrefs.app/Menu.c:1510 #: ../../WPrefs.app/Menu.c:1899 msgid "Edit the menu for launching applications." msgstr "" "Редактиране на менюто за\n" "стартиране на приложения" # ../../WPrefs.app/MenuPreferences.c:114 #: ../../WPrefs.app/MenuPreferences.c:111 msgid "Menu Scrolling Speed" msgstr "Скорост за плъзгане на менютата" # ../../WPrefs.app/MenuPreferences.c:163 #: ../../WPrefs.app/MenuPreferences.c:160 msgid "Submenu Alignment" msgstr "Подравняване на менютата" # ../../WPrefs.app/MenuPreferences.c:207 #: ../../WPrefs.app/MenuPreferences.c:204 msgid "" "Always open submenus inside the screen, instead of scrolling." msgstr "" "Подменютата винаги да се изобразяват в рамките на екрана,\n" "вместо да се плъзгат." # ../../WPrefs.app/MenuPreferences.c:212 #: ../../WPrefs.app/MenuPreferences.c:209 msgid "Scroll off-screen menus when pointer is moved over them." msgstr "Плъзгане на менютата извън екрана, когато мишката е върху тях." # ../../WPrefs.app/MenuPreferences.c:232 #: ../../WPrefs.app/MenuPreferences.c:229 msgid "Menu Preferences" msgstr "Предпочитания за менютата" # ../../WPrefs.app/MenuPreferences.c:234 #: ../../WPrefs.app/MenuPreferences.c:231 msgid "" "Menu usability related options. Scrolling speed,\n" "alignment of submenus etc." msgstr "" "Опции, касаещи използването на менютата.\n" "Скорост на плъзгане, подравняване на \n" "подменютата и други подобни." # ../../WPrefs.app/MouseSettings.c:153 #: ../../WPrefs.app/MouseSettings.c:141 msgid "Invalid mouse acceleration value. Must be a positive real value." msgstr "" "Недопустима стойност за ускорение на мишката. Трябва да бъде положително " "реално число." # ../../WPrefs.app/MouseSettings.c:173 #: ../../WPrefs.app/MouseSettings.c:161 msgid "" "Invalid mouse acceleration threshold value. Must be the number of pixels to " "travel before accelerating." msgstr "" "Недопустим начален праг за ускорение на мишката. Трябва да бъде брой " "изминати пиксели, преди да започне ускорението." # ../../WPrefs.app/MouseSettings.c:269 ../../WPrefs.app/MouseSettings.c:283 # ../../WPrefs.app/MouseSettings.c:297 #: ../../WPrefs.app/MouseSettings.c:262 ../../WPrefs.app/MouseSettings.c:274 #: ../../WPrefs.app/MouseSettings.c:286 ../../WPrefs.app/MouseSettings.c:298 #, c-format msgid "bad value %s for option %s" msgstr "неправилна стойност %s за опцията %s" # ../../WPrefs.app/MouseSettings.c:358 #: ../../WPrefs.app/MouseSettings.c:357 #, c-format msgid "" "modifier key %s for option ModifierKey was not recognized. Using %s as " "default" msgstr "" "клавишът модификатор %s за опцията \"ModifierKey\" е непознат. По " "подразбиране се използва %s" # ../../WPrefs.app/MouseSettings.c:383 #: ../../WPrefs.app/MouseSettings.c:382 msgid "could not retrieve keyboard modifier mapping" msgstr "не може да се разбере на кои клавиши са модификаторите" # ../../WPrefs.app/MouseSettings.c:478 #: ../../WPrefs.app/MouseSettings.c:477 msgid "Mouse Speed" msgstr "Скорост на мишката" # ../../WPrefs.app/MouseSettings.c:508 #: ../../WPrefs.app/MouseSettings.c:507 msgid "Accel.:" msgstr "Ускорение" # ../../WPrefs.app/MouseSettings.c:521 #: ../../WPrefs.app/MouseSettings.c:520 msgid "Threshold:" msgstr "Нач. праг" # ../../WPrefs.app/MouseSettings.c:536 #: ../../WPrefs.app/MouseSettings.c:535 msgid "Double-Click Delay" msgstr "Бързина при двукратно щракане" # ../../WPrefs.app/MouseSettings.c:580 #: ../../WPrefs.app/MouseSettings.c:579 msgid "Test" msgstr "Проба" # ../../WPrefs.app/MouseSettings.c:610 #: ../../WPrefs.app/MouseSettings.c:609 msgid "Workspace Mouse Actions" msgstr "Специални действия с мишката" # ../../WPrefs.app/MouseSettings.c:615 #: ../../WPrefs.app/MouseSettings.c:614 msgid "Disable mouse actions" msgstr "Без спец. действия с мишката" #: ../../WPrefs.app/MouseSettings.c:620 msgid "Left Button" msgstr "Ляв бутон" #: ../../WPrefs.app/MouseSettings.c:630 msgid "Middle Button" msgstr "Среден бутон" #: ../../WPrefs.app/MouseSettings.c:640 msgid "Right Button" msgstr "Десен бутон" # ../../WPrefs.app/MouseSettings.c:478 #: ../../WPrefs.app/MouseSettings.c:650 msgid "Mouse Wheel" msgstr "Колелце" # ../../WPrefs.app/MouseSettings.c:661 #: ../../WPrefs.app/MouseSettings.c:672 msgid "Mouse Grab Modifier" msgstr "Модификатор, прихващащ мишката" # ../../WPrefs.app/MouseSettings.c:663 #: ../../WPrefs.app/MouseSettings.c:674 msgid "" "Keyboard modifier to use for actions that\n" "involve dragging windows with the mouse,\n" "clicking inside the window." msgstr "" "Кой модификатор да се използва за действия , които\n" "изискват влачене на прозорците с мишка или\n" "щракане в рамките на прозореца." # ../../WPrefs.app/MouseSettings.c:697 #: ../../WPrefs.app/MouseSettings.c:708 #, c-format msgid "could not create %s" msgstr "не може да се направи %s" # ../../WPrefs.app/MouseSettings.c:713 #: ../../WPrefs.app/MouseSettings.c:724 #, c-format msgid "could not create temporary file %s" msgstr "не може да се направи временен файл %s" # ../../WPrefs.app/MouseSettings.c:744 #: ../../WPrefs.app/MouseSettings.c:756 #, c-format msgid "could not rename file %s to %s\n" msgstr "не може да се преименува файлът %s на %s\n" #: ../../WPrefs.app/MouseSettings.c:829 msgid "Shift" msgstr "Shift" #: ../../WPrefs.app/MouseSettings.c:830 msgid "Lock" msgstr "Lock" # Няма място за "Центрирано" # ../../WPrefs.app/Appearance.c:1936 ../../WPrefs.app/TexturePanel.c:1511 # ../../WPrefs.app/Workspace.c:271 #: ../../WPrefs.app/MouseSettings.c:831 msgid "Control" msgstr "Control" #: ../../WPrefs.app/MouseSettings.c:832 msgid "Mod1" msgstr "Mod1" #: ../../WPrefs.app/MouseSettings.c:833 msgid "Mod2" msgstr "Mod2" #: ../../WPrefs.app/MouseSettings.c:834 msgid "Mod3" msgstr "Mod3" #: ../../WPrefs.app/MouseSettings.c:835 msgid "Mod4" msgstr "Mod4" #: ../../WPrefs.app/MouseSettings.c:836 msgid "Mod5" msgstr "Mod5" # ../../WPrefs.app/MouseSettings.c:622 #: ../../WPrefs.app/MouseSettings.c:839 msgid "Applications Menu" msgstr "Меню на прилож." # ../../WPrefs.app/MouseSettings.c:643 #: ../../WPrefs.app/MouseSettings.c:841 msgid "Select Windows" msgstr "Маркиране прозорец" # ../../WPrefs.app/KeyboardShortcuts.c:397 #: ../../WPrefs.app/MouseSettings.c:844 msgid "Switch Workspaces" msgstr "Сменяне на работното място" # ../../WPrefs.app/MouseSettings.c:816 #: ../../WPrefs.app/MouseSettings.c:849 msgid "Mouse Preferences" msgstr "Предпочитания за мишката" # ../../WPrefs.app/MouseSettings.c:818 #: ../../WPrefs.app/MouseSettings.c:851 msgid "" "Mouse speed/acceleration, double click delay,\n" "mouse button bindings etc." msgstr "" "Скорост/ускорение на мишката, време на\n" "двойното щракане, присвояване на \n" "действия на мишката и др." # ../../WPrefs.app/Paths.c:84 #: ../../WPrefs.app/Paths.c:84 msgid "bad value in option IconPath. Using default path list" msgstr "" "недопустима стойност в опцията \"IconPath\". Ползва се подразбиращият се " "списък пътеки" # ../../WPrefs.app/Paths.c:101 #: ../../WPrefs.app/Paths.c:101 msgid "bad value in option PixmapPath. Using default path list" msgstr "" "недопустима стойност за опцията \"PixmapPath. Ползва се подразбиращият се " "списък пътеки." # ../../WPrefs.app/Paths.c:149 #: ../../WPrefs.app/Paths.c:149 msgid "Select directory" msgstr "Посочете директория" # ../../WPrefs.app/Paths.c:270 #: ../../WPrefs.app/Paths.c:270 msgid "Icon Search Paths" msgstr "Пътеки за търсене на иконките" # ../../WPrefs.app/Paths.c:281 ../../WPrefs.app/Paths.c:312 # ../../WPrefs.app/TexturePanel.c:1304 #: ../../WPrefs.app/Paths.c:281 ../../WPrefs.app/Paths.c:312 #: ../../WPrefs.app/TexturePanel.c:1310 msgid "Add" msgstr "Добави" # ../../WPrefs.app/Paths.c:301 #: ../../WPrefs.app/Paths.c:301 msgid "Pixmap Search Paths" msgstr "Пътеки за търсене на картинки" # ../../WPrefs.app/Paths.c:341 #: ../../WPrefs.app/Paths.c:341 msgid "Search Path Configuration" msgstr "Настройка на пътеките за търсенe" # ../../WPrefs.app/Paths.c:343 #: ../../WPrefs.app/Paths.c:343 msgid "" "Search paths to use when looking for pixmaps\n" "and icons." msgstr "" "Директорни пътеки, в които да се\n" "търсят картинки и иконки." #: ../../WPrefs.app/Preferences.c:75 msgid "OFF" msgstr "БЕЗ" #: ../../WPrefs.app/Preferences.c:77 msgid "1 pixel" msgstr "1 пиксел" #. 2-4 #: ../../WPrefs.app/Preferences.c:80 #, c-format msgid "%i pixels" msgstr "%i пиксела" #. >4 #: ../../WPrefs.app/Preferences.c:83 #, c-format msgid "%i pixels " msgstr "%i пиксела" # ../../WPrefs.app/Preferences.c:159 #: ../../WPrefs.app/Preferences.c:229 msgid "Size Display" msgstr "Изобразяване на размера" # ../../WPrefs.app/Preferences.c:161 #: ../../WPrefs.app/Preferences.c:231 msgid "" "The position or style of the window size\n" "display that's shown when a window is resized." msgstr "" "Положението или стилът на размера на про-\n" "зорцеца при променяне на размера му." # ../../WPrefs.app/Preferences.c:168 ../../WPrefs.app/Preferences.c:188 #: ../../WPrefs.app/Preferences.c:238 ../../WPrefs.app/Preferences.c:259 msgid "Corner of screen" msgstr "В ъгъла на екрана" # ../../WPrefs.app/Preferences.c:169 ../../WPrefs.app/Preferences.c:189 #: ../../WPrefs.app/Preferences.c:239 ../../WPrefs.app/Preferences.c:260 msgid "Center of screen" msgstr "В средата на екрана" # ../../WPrefs.app/Preferences.c:170 ../../WPrefs.app/Preferences.c:190 #: ../../WPrefs.app/Preferences.c:240 ../../WPrefs.app/Preferences.c:261 msgid "Center of resized window" msgstr "В средата на прозореца" # ../../WPrefs.app/Preferences.c:171 #: ../../WPrefs.app/Preferences.c:241 msgid "Technical drawing-like" msgstr "Като в технически чертеж" # ../../WPrefs.app/Workspace.c:270 #: ../../WPrefs.app/Preferences.c:242 ../../WPrefs.app/Preferences.c:262 msgid "Disabled" msgstr "Без изобразяване" # ../../WPrefs.app/Preferences.c:179 #: ../../WPrefs.app/Preferences.c:250 msgid "Position Display" msgstr "Изобразяване на положението" # ../../WPrefs.app/Preferences.c:181 #: ../../WPrefs.app/Preferences.c:252 msgid "" "The position or style of the window position\n" "display that's shown when a window is moved." msgstr "" "Положението или стилът за изобразяване на\n" "положението на прозореца при преместване." # ../../WPrefs.app/Preferences.c:198 #: ../../WPrefs.app/Preferences.c:270 msgid "Show balloon text for..." msgstr "Да се показва текст в балони за ..." # ../../WPrefs.app/Preferences.c:205 #: ../../WPrefs.app/Preferences.c:277 msgid "incomplete window titles" msgstr "съкратените имена на прозорци" # ../../WPrefs.app/Preferences.c:206 #: ../../WPrefs.app/Preferences.c:278 msgid "miniwindow titles" msgstr "имената на минипрозорчетата" # ../../WPrefs.app/Preferences.c:207 #: ../../WPrefs.app/Preferences.c:279 msgid "application/dock icons" msgstr "иконките на дока и приложенията" # ../../WPrefs.app/Preferences.c:208 #: ../../WPrefs.app/Preferences.c:280 msgid "internal help" msgstr "вътрешна справка" #: ../../WPrefs.app/Preferences.c:292 msgid "Raise window when switching focus with keyboard" msgstr "Да се повдига прозорецът при про-мяна на фокуса с клавиатурата" #: ../../WPrefs.app/Preferences.c:298 msgid "" "Enable keyboard language\n" "switch button in window titlebars." msgstr "" "Бутон КИР/ЛАТ върху заглавна-\n" "та ивица на всеки прозорец." #: ../../WPrefs.app/Preferences.c:307 msgid "Workspace border" msgstr "Граница между работните места" #: ../../WPrefs.app/Preferences.c:323 msgid "Left/Right" msgstr "Ляво/дясно" #: ../../WPrefs.app/Preferences.c:328 msgid "Top/Bottom" msgstr "Горе/долу" # ../../WPrefs.app/Preferences.c:247 #: ../../WPrefs.app/Preferences.c:349 msgid "Miscellaneous Ergonomic Preferences" msgstr "Разни предпочитания касаещи ергономичността" # ../../WPrefs.app/Preferences.c:248 #: ../../WPrefs.app/Preferences.c:350 msgid "" "Various settings like balloon text, geometry\n" "displays etc." msgstr "" "Различни настройки като за текст в балони,\n" "състояние КИР/ЛАТ и др." #: ../../WPrefs.app/TexturePanel.c:323 msgid "Saturation" msgstr "Наситеност" #: ../../WPrefs.app/TexturePanel.c:325 msgid "Brightness" msgstr "Яркост" #: ../../WPrefs.app/TexturePanel.c:373 ../../WPrefs.app/TexturePanel.c:380 msgid "Hue" msgstr "Цвят" # ../../WPrefs.app/TexturePanel.c:605 #: ../../WPrefs.app/TexturePanel.c:610 msgid "Could not load the selected file: " msgstr "Не може да се зареди избраният файл: " # ../../WPrefs.app/TexturePanel.c:1477 #: ../../WPrefs.app/TexturePanel.c:664 msgid "Open Image" msgstr "Отвори изображение" # ../../WPrefs.app/TexturePanel.c:687 #: ../../WPrefs.app/TexturePanel.c:694 msgid "The selected file does not contain a supported image." msgstr "Избраният файл не съдържа поддържано изображение." #: ../../WPrefs.app/TexturePanel.c:945 #, c-format msgid "could not load file '%s': %s" msgstr "не може да се зареди файлът \"%s\": %s" #: ../../WPrefs.app/TexturePanel.c:1064 #, c-format msgid "error creating texture %s" msgstr "грешка при създаване на текстура %s" # ../../WPrefs.app/TexturePanel.c:1248 #: ../../WPrefs.app/TexturePanel.c:1254 msgid "Texture Panel" msgstr "Панел за текстури" # ../../WPrefs.app/TexturePanel.c:1256 #: ../../WPrefs.app/TexturePanel.c:1262 msgid "Texture Name" msgstr "Име на текстурата" # ../../WPrefs.app/TexturePanel.c:1268 #: ../../WPrefs.app/TexturePanel.c:1274 msgid "Solid Color" msgstr "Плътен цвят" # ../../WPrefs.app/TexturePanel.c:1269 #: ../../WPrefs.app/TexturePanel.c:1275 msgid "Gradient Texture" msgstr "Градиентна текстура" # ../../WPrefs.app/TexturePanel.c:1270 #: ../../WPrefs.app/TexturePanel.c:1276 msgid "Simple Gradient Texture" msgstr "Проста градиентна текстура" # ../../WPrefs.app/TexturePanel.c:1271 #: ../../WPrefs.app/TexturePanel.c:1277 msgid "Textured Gradient" msgstr "Текстуриран градиент" # ../../WPrefs.app/TexturePanel.c:1272 #: ../../WPrefs.app/TexturePanel.c:1278 msgid "Image Texture" msgstr "Текстура за изображение" # ../../WPrefs.app/TexturePanel.c:1280 #: ../../WPrefs.app/TexturePanel.c:1286 msgid "Default Color" msgstr "Основен цвят" # ../../WPrefs.app/TexturePanel.c:1292 #: ../../WPrefs.app/TexturePanel.c:1298 msgid "Gradient Colors" msgstr "Цветове на градиента" # ../../WPrefs.app/TexturePanel.c:1388 #: ../../WPrefs.app/TexturePanel.c:1394 msgid "Direction" msgstr "Посока" # ../../WPrefs.app/TexturePanel.c:1416 #: ../../WPrefs.app/TexturePanel.c:1422 msgid "Gradient" msgstr "Градиент" # ../../WPrefs.app/TexturePanel.c:1434 #: ../../WPrefs.app/TexturePanel.c:1440 msgid "Gradient Opacity" msgstr "Прозрачност на градиента" # ../../WPrefs.app/TexturePanel.c:1477 #: ../../WPrefs.app/TexturePanel.c:1483 msgid "Image" msgstr "Изображение" # ../../WPrefs.app/TexturePanel.c:1509 #: ../../WPrefs.app/TexturePanel.c:1515 msgid "Tile" msgstr "Мозайка" # ../../WPrefs.app/TexturePanel.c:1510 #: ../../WPrefs.app/TexturePanel.c:1516 msgid "Scale" msgstr "Уголемено" # ../../WPrefs.app/TexturePanel.c:1512 #: ../../WPrefs.app/TexturePanel.c:1518 msgid "Maximize" msgstr "Максималн." # ../../WPrefs.app/Themes.c:71 ../../WPrefs.app/Themes.c:82 #: ../../WPrefs.app/Themes.c:71 ../../WPrefs.app/Themes.c:82 msgid "Set" msgstr "" # ../../WPrefs.app/Themes.c:132 #: ../../WPrefs.app/Themes.c:132 msgid "Stop" msgstr "" # ../../WPrefs.app/Themes.c:143 ../../WPrefs.app/Themes.c:204 # ../../WPrefs.app/Themes.c:224 #: ../../WPrefs.app/Themes.c:143 ../../WPrefs.app/Themes.c:203 #: ../../WPrefs.app/Themes.c:223 msgid "Download" msgstr "" # ../../WPrefs.app/Themes.c:172 #: ../../WPrefs.app/Themes.c:171 msgid "Save Current Theme" msgstr "" # ../../WPrefs.app/Themes.c:181 #: ../../WPrefs.app/Themes.c:180 msgid "Load" msgstr "" # ../../WPrefs.app/Themes.c:186 #: ../../WPrefs.app/Themes.c:185 msgid "Install" msgstr "" # ../../WPrefs.app/Themes.c:194 #: ../../WPrefs.app/Themes.c:193 msgid "Tile of The Day" msgstr "" # ../../WPrefs.app/Themes.c:214 #: ../../WPrefs.app/Themes.c:213 msgid "Bar of The Day" msgstr "" # ../../WPrefs.app/WPrefs.c:259 #: ../../WPrefs.app/WPrefs.c:260 msgid "Window Maker Preferences" msgstr "Настройки на Уиндоу Мейкър" # ../../WPrefs.app/WPrefs.c:283 #: ../../WPrefs.app/WPrefs.c:284 msgid "Revert Page" msgstr "Върни страница" # ../../WPrefs.app/WPrefs.c:289 #: ../../WPrefs.app/WPrefs.c:290 msgid "Revert All" msgstr "Върни всички" # ../../WPrefs.app/WPrefs.c:295 #: ../../WPrefs.app/WPrefs.c:296 msgid "Save" msgstr "Запази" # ../../WPrefs.app/WPrefs.c:308 #: ../../WPrefs.app/WPrefs.c:309 msgid "Balloon Help" msgstr "Помощ с балони" # ../../WPrefs.app/WPrefs.c:333 #: ../../WPrefs.app/WPrefs.c:334 msgid "Window Maker Preferences Utility" msgstr "Инструмент за настройване на Уиндоу Мейкър" # ../../WPrefs.app/WPrefs.c:340 #: ../../WPrefs.app/WPrefs.c:341 #, c-format msgid "Version %s for Window Maker %s or newer" msgstr "Версия %s за Уиндоу Мейкър %s или по-нов" # ../../WPrefs.app/WPrefs.c:348 #: ../../WPrefs.app/WPrefs.c:349 msgid "Starting..." msgstr "Стартиране..." # ../../WPrefs.app/WPrefs.c:354 #: ../../WPrefs.app/WPrefs.c:355 msgid "" "Programming/Design: Alfredo K. Kojima\n" "Artwork: Marco van Hylckama Vlieg, Largo et al\n" "More Programming: James Thompson et al" msgstr "" "Програмист и дизайнер: Алфреду К. Кожима\n" "Художник: Марко ван Хилцкама Влийг, Ларго и др.\n" "Помощник-програмист: Джеймс Томпсън и др." # ../../WPrefs.app/WPrefs.c:442 #: ../../WPrefs.app/WPrefs.c:455 #, c-format msgid "could not locate image file %s\n" msgstr "не може да се открие файла с изображение %s\n" # ../../WPrefs.app/WPrefs.c:657 #: ../../WPrefs.app/WPrefs.c:670 #, c-format msgid "could not load image file %s:%s" msgstr "не може да се зареди файлът с изображение %s:%s" # ../../WPrefs.app/WPrefs.c:676 #: ../../WPrefs.app/WPrefs.c:689 msgid "Loading Window Maker configuration files..." msgstr "Зареждат се конфигурационните файлове на Уиндоу Мейкър..." # ../../WPrefs.app/WPrefs.c:680 #: ../../WPrefs.app/WPrefs.c:693 msgid "Initializing configuration panels..." msgstr "Инициализират се конфигурационните панели..." # ../../WPrefs.app/WPrefs.c:713 #: ../../WPrefs.app/WPrefs.c:727 msgid "" "WPrefs is free software and is distributed WITHOUT ANY\n" "WARRANTY under the terms of the GNU General Public License." msgstr "" "WPrefs е свободен софтуер и се разпространява БЕЗ НИКАКВА ГАРАНЦИЯ\n" "според условията на Основната общодостъпна лицензия ГНУ." # ../../WPrefs.app/WPrefs.c:742 ../../WPrefs.app/WPrefs.c:812 #: ../../WPrefs.app/WPrefs.c:757 ../../WPrefs.app/WPrefs.c:837 #, c-format msgid "Window Maker domain (%s) is corrupted!" msgstr "Областта %s на Уиндоу Мейкър е повредена!" # ../../WPrefs.app/WPrefs.c:746 #: ../../WPrefs.app/WPrefs.c:761 #, c-format msgid "Could not load Window Maker domain (%s) from defaults database." msgstr "Не може да се зареди областта %s на Уиндоу Мейкър от базата-данни с предпочитания." # ../../WPrefs.app/WPrefs.c:759 #: ../../WPrefs.app/WPrefs.c:777 msgid "could not extract version information from Window Maker" msgstr "не може да се извлече информация за версията на Уиндоу Мейкър" # ../../WPrefs.app/WPrefs.c:760 #: ../../WPrefs.app/WPrefs.c:778 msgid "Make sure wmaker is in your search path." msgstr "Убедете се, че wmaker се намира в пътеката за търсене ($PATH)." # ../../WPrefs.app/WPrefs.c:763 #: ../../WPrefs.app/WPrefs.c:781 msgid "" "Could not extract version from Window Maker. Make sure it is correctly " "installed and is in your PATH environment variable." msgstr "" "Не може да се извлече информация за версията на Уиндоу Мейкър. Убедете се,\n" "че той е инсталиран правилно и е включен в променливата PATH на обкръжението." # ../../WPrefs.app/WPrefs.c:773 #: ../../WPrefs.app/WPrefs.c:791 msgid "" "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." msgstr "" "Не може да се извлече информация за версията на Уиндоу Мейкър. Убедете се,\n" "че той е инсталиран правилно и че каталогът, в който той е инсталиран, е\n" "включен в променливата от обкръжението PATH." # ../../WPrefs.app/WPrefs.c:780 #: ../../WPrefs.app/WPrefs.c:798 #, c-format msgid "" "WPrefs only supports Window Maker 0.18.0 or newer.\n" "The version installed is %i.%i.%i\n" msgstr "" "WPrefs поддържа само Уиндоу Мейкър версия 0.18.0 или следваща.\n" "Инсталираната версия е %i.%i.%i.\n" # ../../WPrefs.app/WPrefs.c:787 #: ../../WPrefs.app/WPrefs.c:805 #, c-format msgid "" "Window Maker %i.%i.%i, which is installed in your system, is not fully " "supported by this version of WPrefs." msgstr "" "Уиндоу Мейкър %i.%i.%i, който е инсталиран във Вашата система, не се\n" "поддържа напълно от тази версия на WPrefs." # ../../WPrefs.app/WPrefs.c:794 #: ../../WPrefs.app/WPrefs.c:818 #, c-format msgid "could not run \"%s --global_defaults_path\"." msgstr "Не може да се стартира \"%s --global_defaults_path\"." # ../../WPrefs.app/WPrefs.c:816 #: ../../WPrefs.app/WPrefs.c:841 #, c-format msgid "Could not load global Window Maker domain (%s)." msgstr "Не може да се зареди глобална област на Уиндоу Мейкър (%s)." # ../../WPrefs.app/WPrefs.c:1065 #: ../../WPrefs.app/WPrefs.c:1090 #, c-format msgid "" "bad speed value for option %s\n" ". Using default Medium" msgstr "" "неправилна стойност за бързина на ключа %s\n" "По подразбиране се използва \"Средна\"" # ../../WPrefs.app/WindowHandling.c:141 #: ../../WPrefs.app/WindowHandling.c:141 #, c-format msgid "bad option value %s in WindowPlacement. Using default value" msgstr "неправилна стойност %s на опция при WindowPlacement. Ползва се стойността по подразбиране" # ../../WPrefs.app/WindowHandling.c:163 #: ../../WPrefs.app/WindowHandling.c:163 msgid "invalid data in option WindowPlaceOrigin. Using default (0,0)" msgstr "недопустими данни при опцията WindowPlaceOrigin. Ползва се стойността по подразбиране (0,0)" # ../../WPrefs.app/WindowHandling.c:236 #: ../../WPrefs.app/WindowHandling.c:243 msgid "Window Placement" msgstr "Разполагане на прозорците" # ../../WPrefs.app/WindowHandling.c:237 #: ../../WPrefs.app/WindowHandling.c:244 msgid "" "How to place windows when they are first put\n" "on screen." msgstr "" "Как да се разполагат прозорците при първата\n" "им поява на екрана." # ../../WPrefs.app/WindowHandling.c:243 #: ../../WPrefs.app/WindowHandling.c:250 msgid "Automatic" msgstr "Автоматично" # ../../WPrefs.app/WindowHandling.c:244 #: ../../WPrefs.app/WindowHandling.c:251 msgid "Random" msgstr "Случайно" # ../../WPrefs.app/WindowHandling.c:245 #: ../../WPrefs.app/WindowHandling.c:252 msgid "Manual" msgstr "Ръчно" # ../../WPrefs.app/WindowHandling.c:246 #: ../../WPrefs.app/WindowHandling.c:253 msgid "Cascade" msgstr "Каскадно" # ../../WPrefs.app/WindowHandling.c:247 #: ../../WPrefs.app/WindowHandling.c:254 msgid "Smart" msgstr "Хитро" # ../../WPrefs.app/WindowHandling.c:253 #: ../../WPrefs.app/WindowHandling.c:260 msgid "Placement Origin" msgstr "Начално място" # ../../WPrefs.app/WindowHandling.c:313 #: ../../WPrefs.app/WindowHandling.c:321 msgid "Opaque Move" msgstr "Цялостно местене" # ../../WPrefs.app/WindowHandling.c:314 #: ../../WPrefs.app/WindowHandling.c:322 msgid "" "Whether the window contents should be moved\n" "when dragging windows aroung or if only a\n" "frame should be displayed.\n" msgstr "" "Дали съдържанието на прозореца трябва\n" "да се премества при влачене с мишката,\n" "или само рамката на прозореца трябва\n" "да се изобразява.\n" # ../../WPrefs.app/WindowHandling.c:353 #: ../../WPrefs.app/WindowHandling.c:361 msgid "When maximizing..." msgstr "При максимизиране ..." # ../../WPrefs.app/WindowHandling.c:358 #: ../../WPrefs.app/WindowHandling.c:366 msgid "...do not cover icons" msgstr "... да не се закриват иконките" # ../../WPrefs.app/WindowHandling.c:364 #: ../../WPrefs.app/WindowHandling.c:372 msgid "...do not cover dock" msgstr "... да не се закрива докът" # ../../WPrefs.app/WindowHandling.c:373 #: ../../WPrefs.app/WindowHandling.c:381 msgid "Edge Resistance" msgstr "Съпротивление по ръбовете" # ../../WPrefs.app/WindowHandling.c:375 #: ../../WPrefs.app/WindowHandling.c:383 msgid "" "Edge resistance will make windows `resist'\n" "being moved further for the defined threshold\n" "when moved against other windows or the edges\n" "of the screen." msgstr "" "„Съпротивление по ръбовете“ означава прозореца\n" "да се съпротивлява до определен праг при\n" "застъпване на друг прозорец или напускане\n" "на екрана." # ../../WPrefs.app/WindowHandling.c:394 #: ../../WPrefs.app/WindowHandling.c:402 msgid "Resist" msgstr "" "Съпро-\n" "тива" # ../../WPrefs.app/WindowHandling.c:399 #: ../../WPrefs.app/WindowHandling.c:407 msgid "Attract" msgstr "" "Прив-\n" "личане" #: ../../WPrefs.app/WindowHandling.c:423 msgid "Open dialogs in same workspace as their owners" msgstr "" "Диалоговите прозорци да са на работното " "място, на владеещия ги прозорец." # ../../WPrefs.app/WindowHandling.c:442 #: ../../WPrefs.app/WindowHandling.c:450 msgid "Window Handling Preferences" msgstr "Предпочитания за управление на прозорците" # ../../WPrefs.app/WindowHandling.c:444 #: ../../WPrefs.app/WindowHandling.c:452 msgid "" "Window handling options. Initial placement style\n" "edge resistance, opaque move etc." msgstr "" "Опции за управление на прозорците. Начин\n" "за определяне на началното местоположение,\n" "съпротивление по ръбовете, стил на\n" "преместване и др." # ../../WPrefs.app/Workspace.c:177 #: ../../WPrefs.app/Workspace.c:176 msgid "Workspace Navigation" msgstr "Навигация по работните места" #: ../../WPrefs.app/Workspace.c:183 msgid "Wrap to the first workspace from the last workspace" msgstr "да се минава към първото работно място след задминаване на последното" # ../../WPrefs.app/Workspace.c:206 #: ../../WPrefs.app/Workspace.c:205 msgid "Switch workspaces while dragging windows" msgstr "да се сменя работното място при влачене на прозорец" # ../../WPrefs.app/Workspace.c:228 #: ../../WPrefs.app/Workspace.c:227 msgid "Automatically create new workspaces" msgstr "автоматично да се създават нови работни места" # ../../WPrefs.app/Workspace.c:251 #: ../../WPrefs.app/Workspace.c:250 msgid "Position of workspace name display" msgstr "Място на името на работното място" # ../../WPrefs.app/Workspace.c:270 #: ../../WPrefs.app/Workspace.c:269 msgid "Disable" msgstr "Без показване" # ../../WPrefs.app/Workspace.c:272 #: ../../WPrefs.app/Workspace.c:271 msgid "Top" msgstr "Горе" # ../../WPrefs.app/Workspace.c:273 #: ../../WPrefs.app/Workspace.c:272 msgid "Bottom" msgstr "Долу" # ../../WPrefs.app/Workspace.c:274 #: ../../WPrefs.app/Workspace.c:273 msgid "Top/Left" msgstr "Горе вляво" # ../../WPrefs.app/Workspace.c:275 #: ../../WPrefs.app/Workspace.c:274 msgid "Top/Right" msgstr "Горе вдясно" # ../../WPrefs.app/Workspace.c:276 #: ../../WPrefs.app/Workspace.c:275 msgid "Bottom/Left" msgstr "Долу вляво" # ../../WPrefs.app/Workspace.c:277 #: ../../WPrefs.app/Workspace.c:276 msgid "Bottom/Right" msgstr "Долу вдясно" # ../../WPrefs.app/Workspace.c:285 #: ../../WPrefs.app/Workspace.c:284 msgid "Dock/Clip" msgstr "Док и Кламер" # ../../WPrefs.app/Workspace.c:304 #: ../../WPrefs.app/Workspace.c:303 msgid "" "Disable/enable the application Dock (the\n" "vertical icon bar in the side of the screen)." msgstr "" "Забранява/разрешава Дока на приложенията\n" "(вертикалната ивица с иконки, странично\n" "от екрана)." # ../../WPrefs.app/Workspace.c:325 #: ../../WPrefs.app/Workspace.c:324 msgid "" "Disable/enable the Clip (that thing with\n" "a paper clip icon)." msgstr "" "Забранява/позволява Кламера\n" "(нещото, имащо иконка с кламер)." # ../../WPrefs.app/Workspace.c:365 #: ../../WPrefs.app/Workspace.c:364 msgid "Workspace Preferences" msgstr "Предпочитания за работните места" # ../../WPrefs.app/Workspace.c:367 #: ../../WPrefs.app/Workspace.c:366 msgid "" "Workspace navigation features.\n" "You can also enable/disable the Dock and Clip here." msgstr "" "Свойства на навигацията през работните места.\n" "От тук може да се забрани/ползволи и Докът\n" "и Кламерът." #: ../../WPrefs.app/imagebrowser.c:95 msgid "View" msgstr "" # ../../WPrefs.app/main.c:74 #: ../../WPrefs.app/main.c:59 #, c-format msgid "usage: %s [options]\n" msgstr "използване: %s [параметри]\n" # ../../WPrefs.app/main.c:75 #: ../../WPrefs.app/main.c:60 msgid "options:" msgstr "параметри:" # ../../WPrefs.app/main.c:76 #: ../../WPrefs.app/main.c:61 msgid " -display <display>\tdisplay to be used" msgstr " -display <дисплей>\tдисплей да се използва" # ../../WPrefs.app/main.c:77 #: ../../WPrefs.app/main.c:62 msgid " --version\t\tprint version number and exit" msgstr " --version\t\tизвежда номер на версия и изход" # ../../WPrefs.app/main.c:78 #: ../../WPrefs.app/main.c:63 msgid " --help\t\tprint this message and exit" msgstr " --help\t\tизвежда тази справка и изход" # ../../WPrefs.app/main.c:137 #: ../../WPrefs.app/main.c:122 #, c-format msgid "too few arguments for %s" msgstr "недостатъчно аргументи за %s" # ../../WPrefs.app/main.c:159 #: ../../WPrefs.app/main.c:144 msgid "X server does not support locale" msgstr "X-сървърът не поддържа локализация" # ../../WPrefs.app/main.c:162 #: ../../WPrefs.app/main.c:147 msgid "cannot set locale modifiers" msgstr "не могат да се установят модификаторите на локализацията" # ../../WPrefs.app/main.c:168 #: ../../WPrefs.app/main.c:153 #, c-format msgid "could not open display %s" msgstr "не може да се отвори дисплеят %s" # ../../WPrefs.app/main.c:176 #: ../../WPrefs.app/main.c:161 msgid "could not initialize application" msgstr "приложението не може да бъде инициализирано" # ../../WPrefs.app/Expert.c:79 #~ msgid "Disable cycling color highlighting of icons" #~ msgstr "Без въртене на пунктир около маркираните иконки." # ../../WPrefs.app/Focus.c:254 #~ msgid "Click window to focus" #~ msgstr "Щракни за фокус" # ../../WPrefs.app/Focus.c:255 #~ msgid "Focus follows mouse" #~ msgstr "Фокусът следва мишката" # ../../WPrefs.app/Focus.c:256 #~ msgid "\"Sloppy\" focus" #~ msgstr "Преливащ (т.н. sloppy) фокус" #~ msgid "Btn1 (left)" #~ msgstr "Бут.1 (ляв)" #~ msgid "Btn2 (middle)" #~ msgstr "Бут.2 (среден)" #~ msgid "Btn3 (right)" #~ msgstr "Бут.3 (десен)" #~ msgid "Btn4" #~ msgstr "Бут.4" #~ msgid "Btn5" #~ msgstr "Бут.5" # ../../WPrefs.app/Menu.c:426 #~ msgid "Command to Execute" #~ msgstr "Да се изпълни командата" # ../../WPrefs.app/Menu.c:477 ../../WPrefs.app/Menu.c:478 #~ msgid "New Command %i" #~ msgstr "Нова команда %i" # ../../WPrefs.app/Menu.c:497 #~ msgid "Workspaces" #~ msgstr "Работни места" # ../../WPrefs.app/Menu.c:1120 ../../WPrefs.app/Menu.c:1135 #~ msgid "Add Command" #~ msgstr "Добави команда" # ../../WPrefs.app/Menu.c:1121 ../../WPrefs.app/Menu.c:1136 #~ msgid "Add Submenu" #~ msgstr "Добави подменю" # ../../WPrefs.app/Menu.c:1122 ../../WPrefs.app/Menu.c:1137 #~ msgid "Add External Menu" #~ msgstr "Добави външно меню" # ../../WPrefs.app/Menu.c:1124 ../../WPrefs.app/Menu.c:1139 #~ msgid "Remove Item" #~ msgstr "Махни елемента" # ../../WPrefs.app/Menu.c:1125 ../../WPrefs.app/Menu.c:1140 #~ msgid "Cut Item" #~ msgstr "Отрежи елемента" # ../../WPrefs.app/Menu.c:1126 ../../WPrefs.app/Menu.c:1141 #~ msgid "Copy Item" #~ msgstr "Копирай елемента" # ../../WPrefs.app/Menu.c:1127 ../../WPrefs.app/Menu.c:1142 #~ msgid "Paste Item" #~ msgstr "Вмъкни елемента" # ../../WPrefs.app/Menu.c:1173 #~ msgid "Label" #~ msgstr "Етикет" # ../../WPrefs.app/Menu.c:1192 #~ msgid "Execute Shell Command" #~ msgstr "Команда на обвивката" # ../../WPrefs.app/Menu.c:1194 #~ msgid "Hide Others" #~ msgstr "Скрий другите" # ../../WPrefs.app/Menu.c:1204 #~ msgid "Legal Panel" #~ msgstr "Лицензионен панел" # ../../WPrefs.app/Menu.c:1225 #~ msgid "Menu Path/Directory List" #~ msgstr "Списък файлове с менюта" # ../../WPrefs.app/Menu.c:1270 #~ msgid "Ask help to the Guru" #~ msgstr "Искам помощ от факира." # ../../WPrefs.app/NoMenuAlert.c:94 #~ msgid "" #~ " 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 keep using the current menu, please read the '%s/%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. " #~ "Window Maker supports both formats." #~ msgstr "" #~ " Използваното в момента меню не може да бъде отворено. Това означава, " #~ "че в него има синтактична грешка или че менюто е във формат, който не се " #~ "поддържа от WPrefs (WPrefs поддържа само обикновените менюта \"списък от " #~ "свойства\".)\n" #~ " Ако желаете да запазите използването на текущото меню, моля прочетете " #~ "файла \"%s/%s\", натиснете бутона <Запази сегашното меню> и го " #~ "редактирайте с текстов редактор.\n" #~ " Ако желаете да използвате този редактор на менюта, натиснете <Копирай " #~ "стандартното меню>. Това ще накара Уиндоу Мейкър да използва стандартното " #~ "меню вместо текущото.\n" #~ " Ако желаети повече гъвкавост, запазете използването на текущото меню, " #~ "защото то дава възможност да се използва предпроцесорни макроси (като за " #~ "cpp), а същевременно е лесно за редактиране. Уиндоу Мейкър поддържа и " #~ "двата формата." # ../../WPrefs.app/NoMenuAlert.c:113 #~ msgid "Copy Default Menu" #~ msgstr "Копирай стандартното меню" # ../../WPrefs.app/MenuGuru.c:106 #~ msgid "Menu Guru - Select Type" #~ msgstr "Факир за менюта - какъв вид" # ../../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 "Факир за менюта - кой файл меню" # ../../WPrefs.app/MenuGuru.c:122 #~ msgid "Menu Guru - Select Pipe Command" #~ msgstr "Факир за менюта - какъв програмен канал" # ../../WPrefs.app/MenuGuru.c:129 #~ msgid "Menu Guru - Select Directories" #~ msgstr "Факир за менюта - кои директории" # ../../WPrefs.app/MenuGuru.c:136 #~ msgid "Menu Guru - Select Command" #~ msgstr "Факир за менюта - коя команда" # ../../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 "" #~ "Файлът с меню трябва да бъде в прост текстов формат. Този формат е описан " #~ "във файловете менюта, съпровождащи Уиндоу Мейкър, вероятно в ~/GNUstep/" #~ "Library/WindowMaker/menu" # ../../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 "" #~ "Зададената команда трябва да генерира и изведе валидна дефиниция на меню " #~ "на стандартния си изход. Тази дефиниция трябва да бъде в простия текстов " #~ "формат, описан във файловете менюта, съпровождащи Уиндоу Мейкър, " #~ "обикновено в ~/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 "" #~ "Въведете пътя до директорията. Може да въведете повече от един път, ако " #~ "го отделите с интервали." # ../../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 файл\"." #~ msgid "drag windows between workspaces." #~ msgstr "прозорците да се влачат през работни места" #~ msgid "" #~ "switch to first workspace when switching past the last workspace and vice-" #~ "versa" #~ msgstr "" #~ "да се мине към първото работно място след задминаване на последното и " #~ "обратно" ��������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/po/hr.po��������������������������������������������������������������0000644�0001750�0001750�00000113665�13431646201�014356� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # msgid "" msgstr "" "Project-Id-Version: WindowMaker 0.80.2\n" "POT-Creation-Date: 1998-08-24 14:36:41-0300\n" "PO-Revision-Date: 1998-08-24 14:36:41-0300\n" "Last-Translator: Toni Bilić tbilic@oliver.efos.hr \n" "Language-Team: Croatian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../../WPrefs/Configurations.c:142 ../../WPrefs/Configurations.c:148 ../../WPrefs/MouseSettings.c:510 ../../WPrefs/WindowHandling.c:270 ../../WPrefs/WindowHandling.c:282 ../../WPrefs/Workspace.c:71 ../../WPrefs/Workspace.c:77 msgid "could not load icon %s" msgstr "ne mogu učitati ikonu %s" #: ../../WPrefs/Configurations.c:156 ../../WPrefs/Workspace.c:85 msgid "could not process icon %s: %s" msgstr "ne mogu procesirati ikonu %s: %s" #: ../../WPrefs/Configurations.c:181 ../../WPrefs/Workspace.c:124 msgid "could not load image file %s" msgstr "ne mogu učitati image datoteku %s" #: ../../WPrefs/Configurations.c:195 msgid "Icon Slide Speed" msgstr "Brzina klizanja ikone" #: ../../WPrefs/Configurations.c:201 msgid "Shade Animation Speed" msgstr "Brzina Shade animacije" #: ../../WPrefs/Configurations.c:234 ../../WPrefs/Configurations.c:246 ../../WPrefs/Focus.c:310 ../../WPrefs/Focus.c:321 ../../WPrefs/MenuPreferences.c:135 ../../WPrefs/MenuPreferences.c:146 ../../WPrefs/MenuPreferences.c:174 ../../WPrefs/MenuPreferences.c:189 ../../WPrefs/MouseSettings.c:538 ../../WPrefs/MouseSettings.c:549 ../../WPrefs/MouseSettings.c:604 ../../WPrefs/MouseSettings.c:615 ../../WPrefs/MouseSettings.c:651 ../../WPrefs/MouseSettings.c:666 ../../WPrefs/MouseSettings.c:682 ../../WPrefs/WPrefs.c:398 ../../WPrefs/WPrefs.c:416 msgid "could not load icon file %s" msgstr "ne mogu učitati ikonu %s" #: ../../WPrefs/Configurations.c:262 msgid "Titlebar Style" msgstr "Stil Titlebar-a" #: ../../WPrefs/Configurations.c:299 msgid "Animations and Sound" msgstr "Animacije i zvuk" #: ../../WPrefs/Configurations.c:305 msgid "Animations" msgstr "Animacije" #: ../../WPrefs/Configurations.c:321 msgid "Superfluous" msgstr "Superfluous" #: ../../WPrefs/Configurations.c:337 msgid "Sounds" msgstr "Zvukovi" #: ../../WPrefs/Configurations.c:354 msgid "Note: sound requires a module distributed separately" msgstr "Upozorenje: zvuk ovisi o zasebnom modulu" #: ../../WPrefs/Configurations.c:364 msgid "Dithering colormap for 8bpp" msgstr "Dithering colormap for 8bpp" #: ../../WPrefs/Configurations.c:369 msgid "Disable dithering in any visual/depth" msgstr "Onemogući dithering za bilo koji visual/dubinu" #: ../../WPrefs/Configurations.c:390 msgid "More colors for applications" msgstr "Još boja za aplikacije" #: ../../WPrefs/Configurations.c:397 msgid "More colors for WindowMaker" msgstr "Još boja za WindowMaker" #: ../../WPrefs/Configurations.c:450 msgid "Other Configurations" msgstr "Ostale konfiguracije" #: ../../WPrefs/Expert.c:70 msgid "Do not set non-WindowMaker specific parameters (do not use xset)" msgstr "Ne postavljaj ne-WindowMaker parametre (ne koristi xset)" #: ../../WPrefs/Expert.c:71 msgid "Automatically save session when exiting WindowMaker" msgstr "Automatski snimi sessoin pri izlazu iz WindowMakera" #: ../../WPrefs/Expert.c:72 msgid "Use SaveUnder in window frames, icons, menus and other objects" msgstr "Koristi SaveUnder u okvirima prozora, ikona, izbornika i drugih objekata" #: ../../WPrefs/Expert.c:73 msgid "Disable cycling color highlighting of icons." msgstr "Onemugući cycling color highlighting of icons." #: ../../WPrefs/Expert.c:103 msgid "Expert User Preferences" msgstr "Stručne postavke" #: ../../WPrefs/Focus.c:79 msgid "bad option value %s for option FocusMode. Using default Manual" msgstr "kriva vrijednost opcije %s za FokusMod. Koristim Manual" #: ../../WPrefs/Focus.c:92 msgid "bad option value %s for option ColormapMode. Using default Manual" msgstr "kriva vrijednost opcije %s za ColormapMod. Koristim Manual" #: ../../WPrefs/Focus.c:190 msgid "Manual: Click on the window to set keyboard input focus" msgstr "Kliknite na prozor da postavite fokus" #: ../../WPrefs/Focus.c:194 msgid "Auto: Set keyboard input focus to the window under the mouse pointer" msgstr "Postavljanje fokusa na prozor ispod pokazivača miša" #: ../../WPrefs/Focus.c:243 msgid "Input Focus Mode" msgstr "Način fokusiranja" #: ../../WPrefs/Focus.c:248 msgid "Click window to focus" msgstr "Klikni prozor za fokus" #: ../../WPrefs/Focus.c:249 msgid "Focus follows mouse" msgstr "Fokus prati miša" #: ../../WPrefs/Focus.c:250 msgid "\"Sloppy\" focus" msgstr "\"Sloppy\" fokus" #: ../../WPrefs/Focus.c:265 msgid "Install colormap from the window..." msgstr "Instaliraj colormap u prozor..." #: ../../WPrefs/Focus.c:270 msgid "...that has the input focus" msgstr "što ima fokus" #: ../../WPrefs/Focus.c:275 msgid "...that's under the mouse pointer" msgstr "što je ispod kursora" #: ../../WPrefs/Focus.c:284 msgid "Automatic Window Raise Delay" msgstr "Automatsko zadržavanje podizanja prozora" #: ../../WPrefs/Focus.c:341 msgid "ms" msgstr "ms" #: ../../WPrefs/Focus.c:358 msgid "Do not let aplications receive the click used to focus windows." msgstr "Ne daj da aplikacije prime klik za fokusiranje prozora." #: ../../WPrefs/Focus.c:364 msgid "Automatically focus new windows" msgstr "Automatski fokusiraj nove prozore" #: ../../WPrefs/Focus.c:385 msgid "Window Focus Preferences" msgstr "Postavke fokusiranja prozora" #: ../../WPrefs/KeyboardSettings.c:72 msgid "Initial Key Repeat" msgstr "Prvotno ponavljanje ključa" #: ../../WPrefs/KeyboardSettings.c:113 msgid "Key Repeat Rate" msgstr "Razmak između ponavljanja ključa" #: ../../WPrefs/KeyboardSettings.c:153 msgid "Type here to test" msgstr "Ukucajte ovdje da testirate" #: ../../WPrefs/KeyboardSettings.c:172 msgid "Keyboard Preferences" msgstr "Postavke tastature" #: ../../WPrefs/KeyboardShortcuts.c:170 ../../WPrefs/Menu.c:923 ../../WPrefs/Menu.c:1290 ../../WPrefs/MenuGuru.c:263 msgid "Cancel" msgstr "Otkaži" #: ../../WPrefs/KeyboardShortcuts.c:171 msgid "Press the desired shortcut key(s) or click Cancel to stop capturing." msgstr "Pritisnite željenu kraticu ili kliknite Otkaži za prekid hvatanja." #: ../../WPrefs/KeyboardShortcuts.c:189 ../../WPrefs/KeyboardShortcuts.c:390 ../../WPrefs/Menu.c:935 ../../WPrefs/Menu.c:1157 msgid "Capture" msgstr "Uhvati" #: ../../WPrefs/KeyboardShortcuts.c:190 ../../WPrefs/KeyboardShortcuts.c:397 msgid "Click Capture to interactively define the shortcut key." msgstr "Kliknite \"Uhvati\" da interaktivno definirate kraticu." #: ../../WPrefs/KeyboardShortcuts.c:308 msgid "Actions" msgstr "Akcije" #: ../../WPrefs/KeyboardShortcuts.c:322 msgid "Open applications menu" msgstr "Otvori izbornik aplikacija" #: ../../WPrefs/KeyboardShortcuts.c:323 msgid "Open window list menu" msgstr "Otvori izbornik liste prozora" #: ../../WPrefs/KeyboardShortcuts.c:324 msgid "Open window commands menu" msgstr "Otvori izbornik prozorskih naredbi" #: ../../WPrefs/KeyboardShortcuts.c:325 msgid "Hide active application" msgstr "Sakrij aktivnu aplikaciju" #: ../../WPrefs/KeyboardShortcuts.c:326 msgid "Miniaturize active window" msgstr "Minimiziraj aktivni prozor" #: ../../WPrefs/KeyboardShortcuts.c:327 msgid "Close active window" msgstr "Zatvori aktivni prozor" #: ../../WPrefs/KeyboardShortcuts.c:328 msgid "Maximize active window" msgstr "Maksimiziraj aktivni prozor" #: ../../WPrefs/KeyboardShortcuts.c:329 msgid "Maximize active window vertically" msgstr "Maksimiziraj aktivni prozor vertikalno" #: ../../WPrefs/KeyboardShortcuts.c:330 msgid "Raise active window" msgstr "Podigni aktivni prozor" #: ../../WPrefs/KeyboardShortcuts.c:331 msgid "Lower active window" msgstr "Spusti aktivni prozor" #: ../../WPrefs/KeyboardShortcuts.c:332 msgid "Raise/Lower window under mouse pointer" msgstr "Podigni/Spusti prozor ispod pokazivača miša" #: ../../WPrefs/KeyboardShortcuts.c:333 msgid "Shade active window" msgstr "Shade-iraj aktivni prozor" #: ../../WPrefs/KeyboardShortcuts.c:334 msgid "Select active window" msgstr "Selektiraj aktivni prozor" #: ../../WPrefs/KeyboardShortcuts.c:335 msgid "Focus next window" msgstr "Fokusiraj sljedeći prozor" #: ../../WPrefs/KeyboardShortcuts.c:336 msgid "Focus previous window" msgstr "Fokusiraj prethodni prozor" #: ../../WPrefs/KeyboardShortcuts.c:337 msgid "Switch to next workspace" msgstr "Prebacivanje na sljedeći radni prostor" #: ../../WPrefs/KeyboardShortcuts.c:338 msgid "Switch to previous workspace" msgstr "Prebacivanje na prethodni radni prostor" #: ../../WPrefs/KeyboardShortcuts.c:339 msgid "Switch to next ten workspaces" msgstr "Prebacivanje na sljedećih 10 radnih prostora" #: ../../WPrefs/KeyboardShortcuts.c:340 msgid "Switch to previous ten workspaces" msgstr "Prebacivanje na predhodnih 10 radnih prostora" #: ../../WPrefs/KeyboardShortcuts.c:341 msgid "Switch to workspace 1" msgstr "Prebacivanje na radni prostor 1" #: ../../WPrefs/KeyboardShortcuts.c:342 msgid "Switch to workspace 2" msgstr "Prebacivanje na radni prostor 2" #: ../../WPrefs/KeyboardShortcuts.c:343 msgid "Switch to workspace 3" msgstr "Prebacivanje na radni prostor 3" #: ../../WPrefs/KeyboardShortcuts.c:344 msgid "Switch to workspace 4" msgstr "Prebacivanje na radni prostor 4" #: ../../WPrefs/KeyboardShortcuts.c:345 msgid "Switch to workspace 5" msgstr "Prebacivanje na radni prostor 5" #: ../../WPrefs/KeyboardShortcuts.c:346 msgid "Switch to workspace 6" msgstr "Prebacivanje na radni prostor 6" #: ../../WPrefs/KeyboardShortcuts.c:347 msgid "Switch to workspace 7" msgstr "Prebacivanje na radni prostor 7" #: ../../WPrefs/KeyboardShortcuts.c:348 msgid "Switch to workspace 8" msgstr "Prebacivanje na radni prostor 8" #: ../../WPrefs/KeyboardShortcuts.c:349 msgid "Switch to workspace 9" msgstr "Prebacivanje na radni prostor 9" #: ../../WPrefs/KeyboardShortcuts.c:350 msgid "Switch to workspace 10" msgstr "Prebacivanje na radni prostor 10" #: ../../WPrefs/KeyboardShortcuts.c:351 msgid "Shortcut for window 1" msgstr "Kratica za prozor 1" #: ../../WPrefs/KeyboardShortcuts.c:352 msgid "Shortcut for window 2" msgstr "Kratica za prozor 2" #: ../../WPrefs/KeyboardShortcuts.c:353 msgid "Shortcut for window 3" msgstr "Kratica za prozor 3" #: ../../WPrefs/KeyboardShortcuts.c:354 msgid "Shortcut for window 4" msgstr "Kratica za prozor 4" #: ../../WPrefs/KeyboardShortcuts.c:355 msgid "Raise Clip" msgstr "Podigni Clip" #: ../../WPrefs/KeyboardShortcuts.c:356 msgid "Lower Clip" msgstr "Spusti Clip" #: ../../WPrefs/KeyboardShortcuts.c:357 msgid "Raise/Lower Clip" msgstr "Podigni/Spusti Clip" #: ../../WPrefs/KeyboardShortcuts.c:359 msgid "Toggle keyboard language" msgstr "Promjeni raspored tastature" #: ../../WPrefs/KeyboardShortcuts.c:373 ../../WPrefs/Menu.c:1146 msgid "Shortcut" msgstr "Kratica" #: ../../WPrefs/KeyboardShortcuts.c:384 msgid "Clear" msgstr "Očisti" #: ../../WPrefs/KeyboardShortcuts.c:445 msgid "Keyboard Shortcut Preferences" msgstr "Postavke tastaturnih kratica" #: ../../WPrefs/Menu.c:373 msgid "Window Manager" msgstr "Window Manager" #: ../../WPrefs/Menu.c:375 msgid "Program to open files" msgstr "Program za otvaranje datoteka" #: ../../WPrefs/Menu.c:377 ../../WPrefs/Menu.c:1133 msgid "Program to Run" msgstr "Program za pokrenuti" #: ../../WPrefs/Menu.c:427 ../../WPrefs/Menu.c:428 msgid "New Command %i" msgstr "Nova naredba %i" #: ../../WPrefs/Menu.c:435 msgid "New Submenu" msgstr "Novi podizbornik" #: ../../WPrefs/Menu.c:440 msgid "External Menu" msgstr "Eksterni izbornik" #: ../../WPrefs/Menu.c:447 msgid "Workspaces" msgstr "Radni prostori" #: ../../WPrefs/Menu.c:1017 ../../WPrefs/Menu.c:1032 msgid "Commands" msgstr "Naredbe" #: ../../WPrefs/Menu.c:1018 ../../WPrefs/Menu.c:1033 msgid "Add Command" msgstr "Naredba" #: ../../WPrefs/Menu.c:1019 ../../WPrefs/Menu.c:1034 msgid "Add Submenu" msgstr "Podizbornik" #: ../../WPrefs/Menu.c:1020 ../../WPrefs/Menu.c:1035 msgid "Add External Menu" msgstr "Eksterni izbornik" #: ../../WPrefs/Menu.c:1021 ../../WPrefs/Menu.c:1036 msgid "Add Workspace Menu" msgstr "Izbornih r. prostora" #: ../../WPrefs/Menu.c:1022 ../../WPrefs/Menu.c:1037 msgid "Remove Item" msgstr "Obrisati stavku" #: ../../WPrefs/Menu.c:1023 ../../WPrefs/Menu.c:1038 msgid "Cut Item" msgstr "Izrezati stavku" #: ../../WPrefs/Menu.c:1024 ../../WPrefs/Menu.c:1039 msgid "Copy Item" msgstr "Kopirati stavku" #: ../../WPrefs/Menu.c:1025 ../../WPrefs/Menu.c:1040 msgid "Paste Item" msgstr "Naljepiti stavku" #: ../../WPrefs/Menu.c:1069 msgid "Label" msgstr "Oznaka" #: ../../WPrefs/Menu.c:1082 msgid "Command" msgstr "Naredba" #: ../../WPrefs/Menu.c:1087 msgid "Run Program" msgstr "Pokrenuti program" #: ../../WPrefs/Menu.c:1088 msgid "Arrange Icons" msgstr "Pospremiti ikone" #: ../../WPrefs/Menu.c:1089 msgid "Hide Others" msgstr "Sakriti ostale" #: ../../WPrefs/Menu.c:1090 msgid "Show All Windows" msgstr "Pokaži sve prozore" #: ../../WPrefs/Menu.c:1091 msgid "Exit WindowMaker" msgstr "Izaći iz Window Maker-a" #: ../../WPrefs/Menu.c:1092 msgid "Exit X Session" msgstr "Izaći is X sessiona" #: ../../WPrefs/Menu.c:1093 msgid "Start window manager" msgstr "Pokrenuti window manager" #: ../../WPrefs/Menu.c:1094 msgid "Restart WindowMaker" msgstr "Restartati Window Maker" #: ../../WPrefs/Menu.c:1095 msgid "Save Session" msgstr "Snimiti session" #: ../../WPrefs/Menu.c:1096 msgid "Clear Session" msgstr "Očistiti session" #: ../../WPrefs/Menu.c:1097 msgid "Refresh Screen" msgstr "Osvježiti ekran" #: ../../WPrefs/Menu.c:1098 msgid "Info Panel" msgstr "Info panel" #: ../../WPrefs/Menu.c:1099 msgid "Legal Panel" msgstr "Legal panel" #: ../../WPrefs/Menu.c:1107 msgid "Open workspace menu" msgstr "Otvoriti izbornik radnih prostora" #: ../../WPrefs/Menu.c:1114 msgid "No confirmation panel" msgstr "Nema panela potvrde" #: ../../WPrefs/Menu.c:1120 msgid "Menu Path/Directory List" msgstr "Menu lista Staza/Direktorij" #: ../../WPrefs/Menu.c:1165 msgid "Ask help to the Guru" msgstr "Traži pomoć od Gurua" #: ../../WPrefs/Menu.c:1285 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 "" "Format trenutnog izbornika u ~/G/D/WMRootMenu nije podržan od WPrefs-a. Napravit ću novi izbornik.\n" "Možete zamjeniti ~/G/D/WMRootMenu da ~/G/L/W/plmenu da dobijete početni izbornik." #: ../../WPrefs/Menu.c:1290 ../../WPrefs/Menu.c:1295 ../../WPrefs/WPrefs.c:585 msgid "Warning" msgstr "Upozorenje" #. WMMapWidget(panel->pathB); #: ../../WPrefs/Menu.c:1290 ../../WPrefs/Menu.c:1296 ../../WPrefs/MenuGuru.c:119 ../../WPrefs/MenuGuru.c:126 ../../WPrefs/MenuGuru.c:140 ../../WPrefs/MouseSettings.c:156 ../../WPrefs/Text.c:181 ../../WPrefs/WPrefs.c:546 ../../WPrefs/WPrefs.c:551 ../../WPrefs/WPrefs.c:562 ../../WPrefs/WPrefs.c:572 ../../WPrefs/WPrefs.c:578 ../../WPrefs/WPrefs.c:585 ../../WPrefs/WPrefs.c:602 ../../WPrefs/WPrefs.c:607 msgid "OK" msgstr "U redu" #: ../../WPrefs/Menu.c:1295 msgid "Any changes made in this section will not be saved" msgstr "Promjene učinjene u ovom dijelu neće biti snimljene" #: ../../WPrefs/Menu.c:1360 msgid "Applications Menu Definition" msgstr "Defincija izbornika aplikacija" #: ../../WPrefs/MenuGuru.c:106 msgid "Menu Guru - Select Type" msgstr "Izbornik guru - odabrati tip" #: ../../WPrefs/MenuGuru.c:111 ../../WPrefs/MenuGuru.c:133 ../../WPrefs/MenuGuru.c:251 msgid "Next" msgstr "Sljedeći" #: ../../WPrefs/MenuGuru.c:114 msgid "Menu Guru - Select Menu File" msgstr "Izbornik guru - Odabrati izbornik datoteku" #: ../../WPrefs/MenuGuru.c:122 msgid "Menu Guru - Select Pipe Command" msgstr "Izbornik guru - Odabrati pipe naredbu" #: ../../WPrefs/MenuGuru.c:129 msgid "Menu Guru - Select Directories" msgstr "Izbornik guru- Odabrati direktorije" #: ../../WPrefs/MenuGuru.c:136 msgid "Menu Guru - Select Command" msgstr "Izbornik guru - Odabrati naredbu" #: ../../WPrefs/MenuGuru.c:257 msgid "Back" msgstr "Natrag" #: ../../WPrefs/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 "" "Ovaj postupak će vam pomoći u kreiranju podizbornika čija se definicija nalazi u drugoj datoteci ili se stvara dinamički.\n" "Što želite koristiti kao sadržaj podizbornika?" #: ../../WPrefs/MenuGuru.c:279 msgid "A file containing the menu definition in the plain text (non-property list) menu format." msgstr "Datoteka koja sadrži definiciju izbornika u čistom tekst formatu." #: ../../WPrefs/MenuGuru.c:285 msgid "The menu definition generated by a script/program read through a pipe." msgstr "Definicja izbornika generirana pomoću skripte/programa pročitanog kroz pipe." #: ../../WPrefs/MenuGuru.c:291 msgid "The files in one or more directories." msgstr "Datoteke u jednom ili više direktorija." #: ../../WPrefs/MenuGuru.c:303 msgid "Type the path for the menu file:" msgstr "Upiši stazu za izbornik datoteku:" #: ../../WPrefs/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 "Menu datoteka mora sadržavati izbornik u čistom tekst formatu. Ovaj format je opisan u menu datotekama u distribuciji, vjerojatno u ~/GNUstep/Library/WindowMaker/menu" #: ../../WPrefs/MenuGuru.c:328 msgid "Type the command that will generate the menu definition:" msgstr "Upiši naredbu koja će generirati definiciju izbornika:" #: ../../WPrefs/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 "Navedana naredba mora stvoriti i ispisati važeću definiciju izbornika na stdout. Ova definicija mora biti u formatu opisanom u ~/GNUstep/Library/WindowMaker/menu" #: ../../WPrefs/MenuGuru.c:350 ../../WPrefs/MenuGuru.c:372 ../../WPrefs/MenuGuru.c:394 msgid "Type the path for the directory. You can type more than one path by separating them with spaces." msgstr "Upišite stazu za direktorij. Možete upisati više od jedne staze odvajajući ih razmacima." #: ../../WPrefs/MenuGuru.c:361 ../../WPrefs/MenuGuru.c:383 ../../WPrefs/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 "Generirani izbornik će imati stavku za svaku datoteku u direktoriju. Direktoriji mogu sadržavati izvršne programe ili podatke (kao jpeg slike)." #: ../../WPrefs/MenuGuru.c:415 msgid "If the directory contain data files, type the command used to open these files. Otherwise, leave it in blank." msgstr "Ako direktorij sadrži podatkovne datoteke, upišite naredbu korištenu za otvaranje tih datoteka, ili ostavit prazno." #: ../../WPrefs/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 "Svaka datoteka u direktoriju će imati stavku i bit će otvorene sa navedenom naredbom. Na primjer ako direktorij sadrži image datoteke i naredba je \"xv -root\", svaka datoteka u direktoriju će imati stavku \"xv -root image_datoteka\"." #: ../../WPrefs/MenuPreferences.c:112 msgid "Menu Scrolling Speed" msgstr "Brzina pomicanja izbornika" #: ../../WPrefs/MenuPreferences.c:161 msgid "Submenu Alignment" msgstr "Poravnanje podizbornika" #: ../../WPrefs/MenuPreferences.c:204 msgid "" "Always open submenus inside the screen, instead of scrolling." msgstr "" "Uvijek otvori podizbornik unutar ekrana umjesto pomicanja." #: ../../WPrefs/MenuPreferences.c:209 msgid "Scroll off-screen menus when pointer is moved over them." msgstr "Izbornike izvan ekrana pomakni unutra kada se pokazivač miče iznad njih" #: ../../WPrefs/MenuPreferences.c:229 msgid "Menu Preferences" msgstr "Postavke izbornika" #: ../../WPrefs/MouseSettings.c:154 ../../WPrefs/Text.c:181 ../../WPrefs/WPrefs.c:546 ../../WPrefs/WPrefs.c:551 ../../WPrefs/WPrefs.c:560 ../../WPrefs/WPrefs.c:570 ../../WPrefs/WPrefs.c:578 ../../WPrefs/WPrefs.c:602 ../../WPrefs/WPrefs.c:607 msgid "Error" msgstr "Greška" #: ../../WPrefs/MouseSettings.c:155 msgid "Invalid mouse acceleration threshold value. Must be the number of pixels to travel before accelerating." msgstr "Kriva vrijednost ubrzavanja miša. Mora biti broj pixela putovanja prije ubrzavanja." #: ../../WPrefs/MouseSettings.c:209 msgid "mouse button %s not supported by WPrefs." msgstr "tipka miše %s nije podržana od WPrefs-a." #: ../../WPrefs/MouseSettings.c:243 ../../WPrefs/MouseSettings.c:254 ../../WPrefs/MouseSettings.c:265 msgid "bad value %s for option %s" msgstr "kriva vrijednost %s za opciju %s" #: ../../WPrefs/MouseSettings.c:325 msgid "modifier key %s for option ModifierKey was not recognized. Using %s as default" msgstr "modifier ključ %s za opciju ModifierKey nije prepoznat. Koristim %s." #: ../../WPrefs/MouseSettings.c:350 msgid "could not retrieve keyboard modifier mapping" msgstr "ne mogu povući keyboard modifier mapping" #: ../../WPrefs/MouseSettings.c:497 msgid "Mouse Speed" msgstr "Brzina miša" #: ../../WPrefs/MouseSettings.c:564 msgid "Threshold:" msgstr "Prag:" #: ../../WPrefs/MouseSettings.c:579 msgid "Double-Click Delay" msgstr "Razmak između dvostrukog klika" #: ../../WPrefs/MouseSettings.c:623 msgid "Test" msgstr "Test" #: ../../WPrefs/MouseSettings.c:633 msgid "Workspace Mouse Actions" msgstr "Akcije miša na radnom prostoru" #: ../../WPrefs/MouseSettings.c:638 msgid "Disable mouse actions" msgstr "Onemogući akcije miša" #: ../../WPrefs/MouseSettings.c:691 msgid "Applications menu" msgstr "Izbornik Aplikacija" #: ../../WPrefs/MouseSettings.c:697 msgid "Window list menu" msgstr "Izbornik Liste prozora" #: ../../WPrefs/MouseSettings.c:703 msgid "Select windows" msgstr "Odaberi prozore" #: ../../WPrefs/MouseSettings.c:738 msgid "Mouse Grab Modifier" msgstr "Modifier za \"hvatanje\" prozora mišom" #: ../../WPrefs/MouseSettings.c:772 msgid "could not create %s" msgstr "ne mogu kreirati %s" #: ../../WPrefs/MouseSettings.c:788 msgid "could not create temporary file %s" msgstr "ne mogu kreirati privremenu datoteku %s" #: ../../WPrefs/MouseSettings.c:813 msgid "could not rename file %s to %s\n" msgstr "ne mogu preimenovati datoteku %s u %s\n" #: ../../WPrefs/MouseSettings.c:896 msgid "Mouse Preferences" msgstr "Postavke miša" #: ../../WPrefs/Paths.c:82 msgid "bad value in option IconPath. Using default path list" msgstr "kriva vrijednost IconPath opciji. Koristim početnu listu staza" #: ../../WPrefs/Paths.c:99 msgid "bad value in option PixmapPath. Using default path list" msgstr "kriva vrijednost u PixmapPath opciji. Koristim početnu listu staza" #: ../../WPrefs/Paths.c:301 msgid "Icon Search Paths" msgstr "Staze za ikone" #: ../../WPrefs/Paths.c:313 ../../WPrefs/Paths.c:349 msgid "Add" msgstr "Dodaj" #: ../../WPrefs/Paths.c:320 ../../WPrefs/Paths.c:356 msgid "Remove" msgstr "Obriši" #: ../../WPrefs/Paths.c:337 msgid "Pixmap Search Paths" msgstr "Staze za pixmape" #: ../../WPrefs/Paths.c:385 msgid "Search Path Configuration" msgstr "Konfiguracija staza" #: ../../WPrefs/Preferences.c:151 msgid "Size Display" msgstr "Prikaz veličine" #: ../../WPrefs/Preferences.c:156 ../../WPrefs/Preferences.c:172 msgid "Corner of screen" msgstr "Kut ekrana" #: ../../WPrefs/Preferences.c:157 ../../WPrefs/Preferences.c:173 msgid "Center of screen" msgstr "Središte ekrana" #: ../../WPrefs/Preferences.c:158 ../../WPrefs/Preferences.c:174 msgid "Center of resized window" msgstr "Središte prozora" #: ../../WPrefs/Preferences.c:159 msgid "Technical drawing-like" msgstr "Poput tehničkog crtanja" #: ../../WPrefs/Preferences.c:167 msgid "Position Display" msgstr "Prikaz pozicije" #: ../../WPrefs/Preferences.c:182 msgid "Show balloon text for..." msgstr "Pokaži tekst u balonu za..." #: ../../WPrefs/Preferences.c:189 msgid "incomplete window titles" msgstr "nepotpune naslove prozora" #: ../../WPrefs/Preferences.c:190 msgid "miniwindow titles" msgstr "nalsove miniprozora" #: ../../WPrefs/Preferences.c:191 msgid "application/dock icons" msgstr "aplikacijske/dock ikone" #: ../../WPrefs/Preferences.c:204 msgid "Raise window when switching focus with keyboard" msgstr "Podići prozor pri mjenjanju fokusa tastaturom" #: ../../WPrefs/Preferences.c:210 msgid "Keep keyboard language status for each window." msgstr "Zadrži raspored tastature za svaki prozor" #: ../../WPrefs/Preferences.c:231 msgid "Miscellaneous Ergonomic Preferences" msgstr "Razne ergonomske postavke" #: ../../WPrefs/Text.c:179 msgid "Invalid font %s." msgstr "Krivi font %s." #: ../../WPrefs/Text.c:256 msgid "Set Font..." msgstr "Postavi font..." #: ../../WPrefs/Text.c:262 msgid "Window Title Font" msgstr "Font naslova prozora" #: ../../WPrefs/Text.c:263 msgid "Menu Title Font" msgstr "Font naslova izbornika" #: ../../WPrefs/Text.c:264 msgid "Menu Item Font" msgstr "Font stavke u izborniku" #: ../../WPrefs/Text.c:265 msgid "Icon Title Font" msgstr "Font naslova ikone" #: ../../WPrefs/Text.c:266 msgid "Clip Title Font" msgstr "Font naslova clipa" #: ../../WPrefs/Text.c:267 msgid "Geometry Display Font" msgstr "Font prikaza geometry" #: ../../WPrefs/Text.c:280 msgid "" "Sample Text\n" "abcdefghijklmnopqrstuvxywz\n" "ABCDEFGHIJKLMNOPQRSTUVXYWZ\n" "0123456789" msgstr "" "Primjer texta\n" "abcdefghijklmnopqrstuvxywz\n" "ABCDEFGHIJKLMNOPQRSTUVXYWZ\n" "0123456789" #: ../../WPrefs/Text.c:285 msgid "Alignment" msgstr "Poravnanje" #: ../../WPrefs/Text.c:290 msgid "Left" msgstr "Lijevo" #: ../../WPrefs/Text.c:296 msgid "Center" msgstr "Sredina" #: ../../WPrefs/Text.c:303 msgid "Right" msgstr "Desno" #: ../../WPrefs/Text.c:325 msgid "Text Preferences" msgstr "Postavke teksta" #: ../../WPrefs/TextureAndColor.c:384 msgid "Window Title Bar" msgstr "Title Bar prozora" #: ../../WPrefs/TextureAndColor.c:385 msgid "Menu Title Bar" msgstr "Title Bar izbornika" #: ../../WPrefs/TextureAndColor.c:386 msgid "Menu Items" msgstr "Stavke izbornika" #: ../../WPrefs/TextureAndColor.c:387 msgid "Workspace/Clip" msgstr "Radni prostor/Clip" #: ../../WPrefs/TextureAndColor.c:388 msgid "Icons" msgstr "Ikone" #: ../../WPrefs/TextureAndColor.c:399 msgid "Focused Window" msgstr "Fokusirani prozor" #: ../../WPrefs/TextureAndColor.c:412 ../../WPrefs/TextureAndColor.c:443 ../../WPrefs/TextureAndColor.c:474 msgid "Texture" msgstr "Tekstura" #: ../../WPrefs/TextureAndColor.c:418 ../../WPrefs/TextureAndColor.c:449 ../../WPrefs/TextureAndColor.c:480 msgid "Text Color" msgstr "Boja teksta" #: ../../WPrefs/TextureAndColor.c:423 ../../WPrefs/TextureAndColor.c:454 ../../WPrefs/TextureAndColor.c:485 ../../WPrefs/TextureAndColor.c:509 ../../WPrefs/TextureAndColor.c:575 ../../WPrefs/TextureAndColor.c:652 msgid "Set..." msgstr "Postavi..." #: ../../WPrefs/TextureAndColor.c:430 msgid "Unfocused Window" msgstr "Nefokusirani prozor" #: ../../WPrefs/TextureAndColor.c:461 msgid "Owner of Focused Window" msgstr "Vlasnik fokusiranog prozora" #: ../../WPrefs/TextureAndColor.c:494 msgid "Unselected Items" msgstr "Neselktirne stvari" #: ../../WPrefs/TextureAndColor.c:504 ../../WPrefs/TextureAndColor.c:558 msgid "Background" msgstr "Pozadina" #: ../../WPrefs/TextureAndColor.c:519 msgid "Normal Text" msgstr "Normalni tekst" #: ../../WPrefs/TextureAndColor.c:529 msgid "Disabled Text" msgstr "Onemogućeni tekst" #: ../../WPrefs/TextureAndColor.c:538 msgid "Selected Items" msgstr "Selektirani tekst" #: ../../WPrefs/TextureAndColor.c:548 msgid "Text" msgstr "Tekst" #: ../../WPrefs/TextureAndColor.c:566 msgid "Menu Title Background" msgstr "Pozadina naslova izbornika" #: ../../WPrefs/TextureAndColor.c:584 msgid "Menu Title Text" msgstr "Tekst naslova izbornika" #: ../../WPrefs/TextureAndColor.c:596 msgid "Workspace Background" msgstr "Pozadina radnog prostora" #: ../../WPrefs/TextureAndColor.c:605 msgid "Change" msgstr "Promjeni" #: ../../WPrefs/TextureAndColor.c:611 msgid "Clip Title Text" msgstr "Tekst naslova clipa" #: ../../WPrefs/TextureAndColor.c:621 msgid "Normal" msgstr "Normalan" #: ../../WPrefs/TextureAndColor.c:631 msgid "Collapsed" msgstr "Srušen" #: ../../WPrefs/TextureAndColor.c:643 msgid "Icon Background" msgstr "Pozadina ikone" #: ../../WPrefs/TextureAndColor.c:677 msgid "Texture and Color Preferences" msgstr "Postavke tekstura i boja" #: ../../WPrefs/WPrefs.c:196 msgid "Window Maker Preferences" msgstr "Postavke Window Maker-a" #: ../../WPrefs/WPrefs.c:220 msgid "Revert Page" msgstr "Povrati stranicu" #: ../../WPrefs/WPrefs.c:226 msgid "Revert All" msgstr "Povrati sve" #: ../../WPrefs/WPrefs.c:232 msgid "Save" msgstr "Snimi" #: ../../WPrefs/WPrefs.c:238 msgid "Close" msgstr "Zatvori" #: ../../WPrefs/WPrefs.c:262 msgid "Version %s for Window Maker %s" msgstr "Verzija %s za Window Maker %s" #: ../../WPrefs/WPrefs.c:269 msgid "Starting..." msgstr "Pokrećem..." #: ../../WPrefs/WPrefs.c:275 msgid "" "Programming/Design: Alfredo K. Kojima\n" "Artwork: Marco van Hylckama Vlieg\n" "More Programming: James Thompson" msgstr "" #: ../../WPrefs/WPrefs.c:363 msgid "could not locate image file %s\n" msgstr "ne mogu naći image daoteku %s\n" #: ../../WPrefs/WPrefs.c:488 msgid "Loading Window Maker configuration files..." msgstr "Učitavam konfiguracijske datoteke..." #: ../../WPrefs/WPrefs.c:492 msgid "Initializing configuration panels..." msgstr "Inicijaliziram konfiguracijske panele..." #: ../../WPrefs/WPrefs.c:545 ../../WPrefs/WPrefs.c:601 msgid "Window Maker domain (%s) is corrupted!" msgstr "Window Maker domena (%s) je oštećena!" #: ../../WPrefs/WPrefs.c:549 msgid "Could not load Window Maker domain (%s) from defaults database." msgstr "Ne mogu učitati Window Maker domenu (%s) iz baze postavki." #: ../../WPrefs/WPrefs.c:557 msgid "could not extract version information from Window Maker" msgstr "ne mogu naći informaciju o verziji Window Maker-a" #: ../../WPrefs/WPrefs.c:558 msgid "Make sure Window Maker is in your search path." msgstr "Provjerite da li je Window Maker u vašem PATH-u." #: ../../WPrefs/WPrefs.c:561 msgid "Could not extract version from Window Maker. Make sure it is correctly installed and is in your PATH environment variable." msgstr "Ne mogu utvrditi verziju Window Makera. Provjerite da li je pravilno i da li je u PATH-u." #: ../../WPrefs/WPrefs.c:571 msgid "Could not extract version from Window Maker. Make sure it is correctly installed." msgstr "Ne mogu utvrditi verziju Window Maker-a. Provjerite da li pravlno instaliran." #: ../../WPrefs/WPrefs.c:576 msgid "" "WPrefs only supports Window Maker 0.18.0 or newer.\n" "The version installed is %i.%i.%i\n" msgstr "" "WPrefs podržava Window Maker 0.18.0 ili noviji.\n" "Instalirana verzija je %i.%i.%i\n" #: ../../WPrefs/WPrefs.c:583 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, koji je instaliran, nije potpuno podržan ovom verzijom WPrefs-a." #: ../../WPrefs/WPrefs.c:590 msgid "could not run \"wmaker -global_defaults_path\"." msgstr "ne mogu pokrenuti \"wmaker -global_defaults_path\"." #: ../../WPrefs/WPrefs.c:605 msgid "Could not load global Window Maker domain (%s)." msgstr "Ne mogu učitati Window Maker globalnu domenu (%s)." #: ../../WPrefs/WPrefs.c:851 msgid "" "bad speed value for option %s\n" ". Using default Medium" msgstr "" "Kriva brzina za opciju %s\n" ". Koristim Medium" #: ../../WPrefs/WindowHandling.c:107 msgid "bad option value %s in WindowPlacement. Using default value" msgstr "kriva vrijednost opcije %s za WindowPlacement. Koristim početnu vrijednost" #: ../../WPrefs/WindowHandling.c:129 msgid "invalid data in option WindowPlaceOrigin. Using default (0,0)" msgstr "krivi podaci u opciji WindowPlaceOrigin. Koristim početno (0,0)" #: ../../WPrefs/WindowHandling.c:188 msgid "Window Placement" msgstr "Položaj prozora" #: ../../WPrefs/WindowHandling.c:193 msgid "Automatic" msgstr "Automatski" #: ../../WPrefs/WindowHandling.c:194 msgid "Random" msgstr "Slučajno" #: ../../WPrefs/WindowHandling.c:195 msgid "Manual" msgstr "Ručno" #: ../../WPrefs/WindowHandling.c:196 msgid "Cascade" msgstr "Cascade" #: ../../WPrefs/WindowHandling.c:202 msgid "Placement Origin" msgstr "Početni položaj" #: ../../WPrefs/WindowHandling.c:256 msgid "Opaque Move" msgstr "Micanje punog prozora" #: ../../WPrefs/WindowHandling.c:292 msgid "When maximizing..." msgstr "Pri maksimiziranju..." #: ../../WPrefs/WindowHandling.c:297 msgid "...do not resize over icons" msgstr "ne pokrivati ikone" #: ../../WPrefs/WindowHandling.c:310 msgid "Keep transients above their owners" msgstr "Transient-i iznad svojih vlasnika" #: ../../WPrefs/WindowHandling.c:337 msgid "Window Handling Preferences" msgstr "Postavke postupanja prozorima" #: ../../WPrefs/Workspace.c:137 msgid "Workspace Navigation" msgstr "Navigacija radnim prostorima" #: ../../WPrefs/Workspace.c:161 msgid "drag windows between workspaces." msgstr "povlačenje prozora između radnih prostora." #: ../../WPrefs/Workspace.c:186 msgid "switch to first workspace when switching past the last workspace and vice-versa" msgstr "prebacivanje na prvi radni prostor pri prelaženju sa zadnjeg i obrnuto." #: ../../WPrefs/Workspace.c:210 msgid "create a new workspace when switching past the last workspace." msgstr "stvaranje novog radnog prostora pri prelaženju sa zadnjeg." #: ../../WPrefs/Workspace.c:218 msgid "Dock/Clip" msgstr "Dock/Clip" #: ../../WPrefs/Workspace.c:287 msgid "Workspace Preferences" msgstr "Postavke radnog prostora" #: ../../WPrefs/main.c:56 msgid "usage: %s [options]\n" msgstr "uporaba: %s [opcije]\n" #: ../../WPrefs/main.c:57 msgid "options:" msgstr "opcije:" #: ../../WPrefs/main.c:58 msgid " -display <display>\tdisplay to be used" msgstr " -display <disply>\tdisplay za korištenje" #: ../../WPrefs/main.c:59 msgid " -version\t\tprint version number and exit" msgstr " -version\t\tispiši verziju u izađi" #: ../../WPrefs/main.c:82 msgid "too few arguments for %s" msgstr "premalo argumenata za %s" #: ../../WPrefs/main.c:104 msgid "X server does not support locale" msgstr "X server ne podržava locale" #: ../../WPrefs/main.c:107 msgid "cannot set locale modifiers" msgstr "ne mogu postaviti locale modifiere" #: ../../WPrefs/main.c:113 msgid "could not open display %s" msgstr "ne mogu otvoriti display %s" #: ../../WPrefs/main.c:121 msgid "could not initialize application" msgstr "ne mogu inicijalizirati aplikaciju" # msgid "could not extract version information from WindowMaker" # msgstr "ne mogu izvuči informaciju o verziji WindowMaker-a" # # msgid "Could not load WindowMaker domain (%s) from defaults database." # msgstr "Ne mogu učitati WindowMaker domenu (%s) iz početne baze." # # msgid "Version %s for WindowMaker %s" # msgstr "Verzija %s za WindowMaker %s" # # msgid "Could not extract version from WindowMaker. Make sure it is correctly installed." # msgstr "Ne mogu izvuči verziju WindowMakera. Provjerite da je ispravno instaliran." # # msgid "" # "Programming/Design: Alfredo K. Kojima\n" # "Artwork: Marco van Hylckama Vlieg" # msgstr "" # "Programiranje/Dizajn: Alfredo K. Kojima\n" # "Artwork: Marco van Hylckama Vlieg" # # msgid "WindowMaker domain (%s) is corrupted!" # msgstr "WindowMaker domena (%s) je oštećena!" # # msgid "WindowMaker %i.%i.%i, which is installed in your system, is not fully supported by this version of WPrefs." # msgstr "WindowMaker %i.%i.%i, koji je instaliran na vašem sistemu, nije potpuno podržan ovom verzijom WPrefs-a." # # msgid "WindowMaker Preferences" # msgstr "Postavke WindowMaker-a" # # msgid "Make sure WindowMaker is in your search path." # msgstr "Provjerite da je WindowMaker u vašoj search stazi." # # msgid "...do not resize over dock" # msgstr "ne pokrivati dock" # # msgid "" # "WPrefs only supports WindowMaker 0.18.0 or newer.\n" # "The version installed is %i.%i.%i\n" # msgstr "" # "WPrefs podržava samo WindowMaker 0.18.0 ili noviji.\n" # "Instalirana je verzija %i.%i.%i\n" # # msgid "Could not load global WindowMaker domain (%s)." # msgstr "Ne mogu učitati globlanu WindowMaker domenu (%s)." # # msgid "Loading WindowMaker configuration files..." # msgstr "Učitavam WindowMaker konfiguracijske datoteke..." # # msgid "Aplications Menu Definition" # msgstr "Definiranje izbornika Aplikacije" # # 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, probably at ~/GNUstep/Library/WindowMaker/menu" # msgstr "Ponuđena naredba mora generirati i ispisati važeću definicuju izbornika na stdout. Ova bi definicja trebala biti u čistom tekst menu formatu koji je opisan u menu datotekama iz distribucije, vjerojatno u ~/GNUstep/Library/WindowMaker/menu" # # msgid "" # "bad speed value for option %s.\n" # "Using default Medium" # msgstr "" # "kriva vrijednost za brzinu za opciju %s.\n" # "Koristm Medium" # # msgid "The format of the current menu file (%s) is not supported by WPrefs. A new menu will be created." # msgstr "Format trenutne datoteke izbornika (%s) nije podržan od strane WPrefs-a. Kreirat ću novi izbornik." # # msgid "Omnipresent miniwindows" # msgstr "SvugdjePrisutni mini prozori" # # msgid "Error extracting version from WindowMaker. Make sure it is correctly installed." # msgstr "Greška pri izvlačenju verzije WindowMakera. Provjerite da je ispravno instaliran." # # msgid "Auto-arrange icons" # msgstr "Auto-pospremanje ikona" # # msgid "Open submenus to the left if they don't fit inside the screen." # msgstr "Otvoriti podizbornike na lijevo ako ne stanu unutar ekrana." # # msgid "Use SaveUnders in icons, menus and other objects" # msgstr "Koristi SnimiIspod u ikonama, izbornicima i drugim objektima" # # msgid "Type the path for the directory. You can type more than one path by separating them with spaces." # msgstr "Upišite stazu za direktorij. Možete upisati više od jedne staze odvajajući ih razmacima." # # msgid "invalid data in option WindowPlacementOrigin. Using default (0,0)" # msgstr "krivi podaci u opciji WindowPlacementOrigin. Koristim (0,0)" # # msgid "Icon Size" # msgstr "Veličina ikone" # ���������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/po/nl.po��������������������������������������������������������������0000644�0001750�0001750�00000216567�13642357774�014405� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# New translation into Dutch for Window Maker # Copyright (C) 2014-2017 Window Maker Developers Team # This file is distributed under the same license as the windowmaker package. # Original by Alwin <translations@ziggo.nl>, 2014. # msgid "" msgstr "" "Project-Id-Version: wmaker-0.95.8+\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-09-14 19:36+0200\n" "PO-Revision-Date: 2017-09-14 00:00+0000\n" "Last-Translator: Alwin <translations@ziggo.nl>\n" "Language-Team: Dutch\n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. Related to Window titles #: ../../WPrefs.app/Appearance.c:44 msgid "Focused Window Title" msgstr "Titel van gefocust venster" #: ../../WPrefs.app/Appearance.c:46 msgid "Unfocused Window Title" msgstr "Titel van ongefocust venster" #: ../../WPrefs.app/Appearance.c:48 msgid "Owner of Focused Window Title" msgstr "Titel van eigenaar gefocust venster" #. Related to Menus #: ../../WPrefs.app/Appearance.c:52 ../../WPrefs.app/Appearance.c:1501 #: ../../WPrefs.app/FontSimple.c:99 msgid "Menu Title" msgstr "Menutitel" #: ../../WPrefs.app/Appearance.c:54 msgid "Menu Item Text" msgstr "Tekst van menu-ingang" #: ../../WPrefs.app/Appearance.c:56 msgid "Disabled Menu Item Text" msgstr "Tekst uitgeschakelde menu-ingang" #: ../../WPrefs.app/Appearance.c:58 msgid "Menu Highlight Color" msgstr "Kleur van uitgelicht menu" #: ../../WPrefs.app/Appearance.c:60 msgid "Highlighted Menu Text Color" msgstr "Tekstkleur van uitgelicht menu" #. #. * yuck kluge: the coordinate for HighlightTextColor are actually those of the last "Normal item" #. * at the bottom when user clicks it, the "yuck kluge" in the function 'previewClick' will swap it #. * for the MenuTextColor selection as user would expect #. * #. * Note that the entries are reffered by their index for performance #. #. Related to Window's border #: ../../WPrefs.app/Appearance.c:71 msgid "Focused Window Border Color" msgstr "Kleur van vensterrand, gefocust" #: ../../WPrefs.app/Appearance.c:73 msgid "Window Border Color" msgstr "Kleur van vensterrand" #: ../../WPrefs.app/Appearance.c:75 msgid "Selected Window Border Color" msgstr "Kleur van vensterrand, geselecteerd" #. Related to Icons and Clip #: ../../WPrefs.app/Appearance.c:79 msgid "Miniwindow Title" msgstr "Titel van minivenster" #: ../../WPrefs.app/Appearance.c:81 msgid "Miniwindow Title Back" msgstr "Titelachtergrond van minivenster" #: ../../WPrefs.app/Appearance.c:83 ../../WPrefs.app/FontSimple.c:102 msgid "Clip Title" msgstr "Cliptitel" #: ../../WPrefs.app/Appearance.c:85 msgid "Collapsed Clip Title" msgstr "Cliptitel, ingeschoven" #: ../../WPrefs.app/Appearance.c:110 msgid "Left" msgstr "Links" #: ../../WPrefs.app/Appearance.c:111 ../../WPrefs.app/TexturePanel.c:1407 #: ../../WPrefs.app/WindowHandling.c:93 ../../WPrefs.app/Workspace.c:189 msgid "Center" msgstr "Centreren" #: ../../WPrefs.app/Appearance.c:112 msgid "Right" msgstr "Rechts" #: ../../WPrefs.app/Appearance.c:382 msgid "[Focused]" msgstr "[Gefocust]" #: ../../WPrefs.app/Appearance.c:383 msgid "Titlebar of Focused Window" msgstr "Titelbalk van gefocust venster" #: ../../WPrefs.app/Appearance.c:386 msgid "[Unfocused]" msgstr "[Ongefocust]" #: ../../WPrefs.app/Appearance.c:387 msgid "Titlebar of Unfocused Windows" msgstr "Titelbalk van ongefocust venster" #: ../../WPrefs.app/Appearance.c:390 msgid "[Owner of Focused]" msgstr "[Eigenaar van gefocust]" #: ../../WPrefs.app/Appearance.c:391 msgid "Titlebar of Focused Window's Owner" msgstr "Titelbalk eigenaar gefocust venster" #: ../../WPrefs.app/Appearance.c:394 msgid "[Resizebar]" msgstr "[Vergrootbalk]" #: ../../WPrefs.app/Appearance.c:395 msgid "Window Resizebar" msgstr "Venstervergrootbalk" #: ../../WPrefs.app/Appearance.c:398 msgid "[Menu Title]" msgstr "[Menutitel]" #: ../../WPrefs.app/Appearance.c:399 msgid "Titlebar of Menus" msgstr "Titelbalk van menu's" #: ../../WPrefs.app/Appearance.c:402 msgid "[Menu Item]" msgstr "[Menu-ingang]" #: ../../WPrefs.app/Appearance.c:403 msgid "Menu Items" msgstr "Menu-ingangen" #: ../../WPrefs.app/Appearance.c:406 msgid "[Icon]" msgstr "[Icoon]" #: ../../WPrefs.app/Appearance.c:407 msgid "Icon Background" msgstr "Icoonachtergrond" #: ../../WPrefs.app/Appearance.c:410 msgid "[Background]" msgstr "[Achtergrond]" #: ../../WPrefs.app/Appearance.c:411 msgid "Workspace Background" msgstr "Werkruimteachtergrond" #: ../../WPrefs.app/Appearance.c:562 ../../WPrefs.app/TexturePanel.c:880 #, c-format msgid "could not load file '%s': %s" msgstr "kon bestand '%s' niet laden: %s" #: ../../WPrefs.app/Appearance.c:565 #, c-format msgid "could not find file '%s' for texture type %s" msgstr "kon bestand '%s' niet vinden voor textuurtype %s" #: ../../WPrefs.app/Appearance.c:613 ../../WPrefs.app/Appearance.c:639 #: ../../WPrefs.app/Appearance.c:673 #, c-format msgid "unknown direction in '%s', falling back to diagonal" msgstr "onbekende richting in '%s', valt terug op diagonaal" #: ../../WPrefs.app/Appearance.c:720 #, c-format msgid "type '%s' is not a supported type for a texture" msgstr "type '%s' is geen ondersteund type voor 'n textuur" #: ../../WPrefs.app/Appearance.c:1088 #, c-format msgid "could not remove file %s" msgstr "kon bestand %s niet verwijderen" #: ../../WPrefs.app/Appearance.c:1110 msgid "Select File" msgstr "Kies bestand" #: ../../WPrefs.app/Appearance.c:1313 #, c-format msgid "could not read size of image from '%s', ignoring" msgstr "kon afbeeldingsgrootte niet inlezen uit '%s', genegeerd" #: ../../WPrefs.app/Appearance.c:1318 #, c-format msgid "image \"%s\" has an invalid depth of %d, ignoring" msgstr "afbeelding \"%s\" heeft 'n ongeldige kleurdiepte van %d, genegeerd" #: ../../WPrefs.app/Appearance.c:1324 #, c-format msgid "could not create RImage for \"%s\": %s" msgstr "kon RImage niet aanmaken voor \"%s\": %s" #: ../../WPrefs.app/Appearance.c:1481 msgid "Focused Window" msgstr "Gefocust venster" #: ../../WPrefs.app/Appearance.c:1488 msgid "Unfocused Window" msgstr "Ongefocust venster" #: ../../WPrefs.app/Appearance.c:1495 msgid "Owner of Focused Window" msgstr "Eigenaar gefocust venster" #: ../../WPrefs.app/Appearance.c:1507 ../../WPrefs.app/Appearance.c:1511 msgid "Normal Item" msgstr "Normaal item" #: ../../WPrefs.app/Appearance.c:1517 msgid "Disabled Item" msgstr "Uitgeschakeld" #: ../../WPrefs.app/Appearance.c:1532 msgid "Highlighted" msgstr "Uitgelicht" #: ../../WPrefs.app/Appearance.c:1625 msgid "Icon Text" msgstr "Icoontekst" #: ../../WPrefs.app/Appearance.c:1709 ../../WPrefs.app/Appearance.c:1716 msgid "Clip" msgstr "Clip" #: ../../WPrefs.app/Appearance.c:1713 msgid "Coll." msgstr "Ing." #: ../../WPrefs.app/Appearance.c:1877 msgid "Texture" msgstr "Textuur" #: ../../WPrefs.app/Appearance.c:1900 msgid "" "Double click in the texture you want to use\n" "for the selected item." msgstr "" "Dubbelklik in de textuur die u wilt gebruiken\n" "voor 't geselecteerde onderdeel." #: ../../WPrefs.app/Appearance.c:1912 msgid "New" msgstr "Nieuw" #: ../../WPrefs.app/Appearance.c:1916 msgid "Create a new texture." msgstr "Maak 'n nieuwe textuur aan." #: ../../WPrefs.app/Appearance.c:1923 msgid "Extract..." msgstr "Uitpakken..." #: ../../WPrefs.app/Appearance.c:1927 msgid "Extract texture(s) from a theme or a style file." msgstr "" "Pak textu(u)r(en) van 'n thema- of\n" "stijlbestand uit." #: ../../WPrefs.app/Appearance.c:1936 msgid "Edit" msgstr "Bewerken" #: ../../WPrefs.app/Appearance.c:1939 msgid "Edit the highlighted texture." msgstr "Bewerk de uitgelichte textuur." #: ../../WPrefs.app/Appearance.c:1946 ../../WPrefs.app/TexturePanel.c:1218 msgid "Delete" msgstr "Wissen" #: ../../WPrefs.app/Appearance.c:1950 msgid "Delete the highlighted texture." msgstr "Wis de uitgelichte textuur." #: ../../WPrefs.app/Appearance.c:1962 msgid "Color" msgstr "Kleur" #: ../../WPrefs.app/Appearance.c:2018 msgid "Options" msgstr "Opties" #: ../../WPrefs.app/Appearance.c:2025 msgid "Menu Style" msgstr "Menustijl" #: ../../WPrefs.app/Appearance.c:2043 ../../WPrefs.app/Configurations.c:179 #: ../../WPrefs.app/Configurations.c:191 ../../WPrefs.app/Docks.c:212 #: ../../WPrefs.app/Docks.c:220 ../../WPrefs.app/Focus.c:279 #: ../../WPrefs.app/Focus.c:290 ../../WPrefs.app/MenuPreferences.c:127 #: ../../WPrefs.app/MenuPreferences.c:138 #: ../../WPrefs.app/MenuPreferences.c:166 #: ../../WPrefs.app/MenuPreferences.c:181 ../../WPrefs.app/MouseSettings.c:554 #: ../../WPrefs.app/MouseSettings.c:565 ../../WPrefs.app/WPrefs.c:459 #: ../../WPrefs.app/WPrefs.c:473 #, c-format msgid "could not load icon file %s" msgstr "kon icoonbestand %s niet laden" #: ../../WPrefs.app/Appearance.c:2056 msgid "Title Alignment" msgstr "Titeluitlijning" #: ../../WPrefs.app/Appearance.c:2254 msgid "Appearance Preferences" msgstr "Uiterlijkvoorkeuren" #: ../../WPrefs.app/Appearance.c:2256 msgid "" "Background texture configuration for windows,\n" "menus and icons." msgstr "" "Achtergrondtextuurinstellingen voor vensters,\n" "menu's en iconen." #: ../../WPrefs.app/Appearance.c:2292 msgid "Extract Texture" msgstr "Textuur uitpakken" #: ../../WPrefs.app/Appearance.c:2312 msgid "Textures" msgstr "Texturen" #: ../../WPrefs.app/Appearance.c:2321 ../../WPrefs.app/WPrefs.c:253 msgid "Close" msgstr "Sluiten" #: ../../WPrefs.app/Appearance.c:2326 msgid "Extract" msgstr "Uitpakken" #: ../../WPrefs.app/Configurations.c:130 ../../WPrefs.app/Docks.c:170 #: ../../WPrefs.app/Workspace.c:106 #, c-format msgid "could not load image file %s" msgstr "kon afbeeldingsbestand %s niet laden" #: ../../WPrefs.app/Configurations.c:141 msgid "Icon Slide Speed" msgstr "Icoonschuifsnelheid" #: ../../WPrefs.app/Configurations.c:147 msgid "Shade Animation Speed" msgstr "Animatiesnelheid van oprollen" #: ../../WPrefs.app/Configurations.c:206 msgid "Smooth Scaling" msgstr "Gladschalen" #: ../../WPrefs.app/Configurations.c:237 msgid "" "Smooth scaled background images, neutralizing\n" "the `pixelization' effect. This will slow\n" "down loading of background images considerably." msgstr "" "Gladgeschaalde achtergrondafbeeldingen\n" "neutraliseren 't 'pixeleffect'. Dit zal 't laden van\n" "achtergrondafbeeldingen aanzienlijk vertragen." #: ../../WPrefs.app/Configurations.c:247 msgid "Titlebar Style" msgstr "Titelbalkstijl" #: ../../WPrefs.app/Configurations.c:300 ../../WPrefs.app/Configurations.c:306 msgid "Animations" msgstr "Animaties" #: ../../WPrefs.app/Configurations.c:317 msgid "" "Disable/enable animations such as those shown\n" "for window miniaturization, shading etc." msgstr "" "Schakel animaties in/uit, zoals die getoond\n" "voor venster miniaturiseren, oprollen enz." #: ../../WPrefs.app/Configurations.c:324 msgid "Superfluous" msgstr "Overvloed" #: ../../WPrefs.app/Configurations.c:335 msgid "" "Disable/enable `superfluous' features and\n" "animations. These include the `ghosting' of the\n" "dock when it's being moved to another side and\n" "the explosion animation when undocking icons." msgstr "" "Schakel 'overvloedige' kenmerken en animaties\n" "in/uit. Daartoe behoren 't 'rondwaren' van 't\n" "Dok bij verplaatsen naar de andere kant, en de\n" "explosieanimatie bij ontdokken van iconen." #: ../../WPrefs.app/Configurations.c:348 msgid "Dithering colormap for 8bpp" msgstr "Rasterkleurenkaart voor 8 bpp" #: ../../WPrefs.app/Configurations.c:350 msgid "" "Number of colors to reserve for Window Maker\n" "on displays that support only 8bpp (PseudoColor)." msgstr "" "Aantal kleuren te reserveren voor Window Maker, op\n" "schermen die alleen 8 bpp (PseudoColor) ondersteunen." #: ../../WPrefs.app/Configurations.c:357 msgid "Disable dithering in any visual/depth" msgstr "Schakel rasteren uit in elke 'visual'/kleurdiepte" #: ../../WPrefs.app/Configurations.c:378 msgid "" "More colors for\n" "applications" msgstr "" "Meer\n" "kleuren voor\n" "programma's" #: ../../WPrefs.app/Configurations.c:385 msgid "" "More colors for\n" "Window Maker" msgstr "" "Meer\n" "kleuren voor\n" "Window Maker" #: ../../WPrefs.app/Configurations.c:434 msgid "Other Configurations" msgstr "Andere instellingen" #: ../../WPrefs.app/Configurations.c:435 msgid "" "Animation speeds, titlebar styles, various option\n" "toggling and number of colors to reserve for\n" "Window Maker on 8bit displays." msgstr "" "Animatiesnelheden, titelbalkstijlen, verschillende\n" "opties inschakelen, en 't aantal kleuren te reserveren\n" "voor Window Maker op 8-bitschermen." #: ../../WPrefs.app/Docks.c:26 msgid "Clip autocollapsing delays" msgstr "Vertraging vanzelf schuiven Clip" #: ../../WPrefs.app/Docks.c:27 msgid "Clip autoraising delays" msgstr "Vertraging vanzelf verhogen Clip" #: ../../WPrefs.app/Docks.c:34 msgid "Before auto-expansion" msgstr "Vanzelf uitschuiven na" #: ../../WPrefs.app/Docks.c:35 msgid "Before auto-collapsing" msgstr "Vanzelf inschuiven na" #: ../../WPrefs.app/Docks.c:36 msgid "Before auto-raising" msgstr "Vanzelf verhogen na" #: ../../WPrefs.app/Docks.c:37 msgid "Before auto-lowering" msgstr "Vanzelf verlagen na" #: ../../WPrefs.app/Docks.c:48 msgid "" "Disable/enable the application Dock (the\n" "vertical icon bar in the side of the screen)." msgstr "" "Schakel 't programmadok (de verticale iconenbalk\n" "aan de zijkant van 't scherm) in/uit." #: ../../WPrefs.app/Docks.c:50 msgid "" "Disable/enable the Clip (that thing with\n" "a paper clip icon)." msgstr "" "Schakel de Clip (dat ding met 'n paperclipicoon)\n" "in/uit." #: ../../WPrefs.app/Docks.c:52 msgid "" "Disable/enable Drawers (a dock that stores\n" "application icons horizontally). The dock is required." msgstr "" "Schakel de laden ('n dok dat programma-iconen\n" "horizontaal opslaat) in/uit. 't Dok is vereist." #: ../../WPrefs.app/Docks.c:234 ../../WPrefs.app/Focus.c:309 #: ../../WPrefs.app/MouseSettings.c:595 msgid "ms" msgstr "ms" #: ../../WPrefs.app/Docks.c:250 msgid "Dock/Clip/Drawer" msgstr "Dok/Clip/Lade" #: ../../WPrefs.app/Docks.c:322 msgid "Dock Preferences" msgstr "Dokvoorkeuren" #: ../../WPrefs.app/Docks.c:324 msgid "" "Dock and clip features.\n" "Enable/disable the Dock and Clip, and tune some delays." msgstr "" "Dok- en clipkenmerken. Schakel 't Dok en de Clip in/uit,\n" "en pas vertragingen aan." #: ../../WPrefs.app/Expert.c:44 msgid "" "Disable miniwindows (icons for minimized windows). For use with KDE/GNOME." msgstr "" "Schakel minivensters (iconen voor geminiaturiseerde vensters) uit. Voor ge-\n" "bruik met KDE/GNOME." #. default: #: ../../WPrefs.app/Expert.c:47 msgid "Ignore decoration hints for GTK applications." msgstr "Negeer decoratiehints voor GTK-programma's." #. default: #: ../../WPrefs.app/Expert.c:50 msgid "Enable workspace pager." msgstr "Schakel werkruimtevolger in." #. default: #: ../../WPrefs.app/Expert.c:53 msgid "Do not set non-WindowMaker specific parameters (do not use xset)." msgstr "" "Stel geen niet-WindowMaker-specifieke parameters in (gebruik 'xset' niet)." #. default: #: ../../WPrefs.app/Expert.c:56 msgid "Automatically save session when exiting Window Maker." msgstr "Sla sessie vanzelf op bij afsluiten van Window Maker." #. default: #: ../../WPrefs.app/Expert.c:59 msgid "Use SaveUnder in window frames, icons, menus and other objects." msgstr "" "Gebruik SaveUnder in vensteromlijsting, iconen, menu's en andere objecten." #. default: #: ../../WPrefs.app/Expert.c:62 msgid "Disable confirmation panel for the Kill command." msgstr "Schakel bevestigingspaneel voor 't commando 'Doden' uit." #. default: #: ../../WPrefs.app/Expert.c:65 msgid "Disable selection animation for selected icons." msgstr "Schakel selectieanimatie voor geselecteerde iconen uit." #. default: #: ../../WPrefs.app/Expert.c:68 msgid "Smooth font edges (needs restart)." msgstr "Vlak letterranden af (herstart nodig)." #. default: #: ../../WPrefs.app/Expert.c:71 msgid "Cycle windows only on the active head." msgstr "Wissel vensters alleen op de actieve kop." #. default: #: ../../WPrefs.app/Expert.c:74 msgid "Ignore minimized windows when cycling." msgstr "Negeer geminiaturiseerde vensters bij wisselen." #. default: #: ../../WPrefs.app/Expert.c:77 msgid "Show switch panel when cycling windows." msgstr "Toon schakelpaneel bij vensters wisselen." #. default: #: ../../WPrefs.app/Expert.c:80 msgid "Show workspace title on Clip." msgstr "Toon werkruimtetitel op Clip." #. default: #: ../../WPrefs.app/Expert.c:83 msgid "Highlight the icon of the application when it has the focus." msgstr "Accentueer 't programma-icoon, wanneer 't focus heeft." #: ../../WPrefs.app/Expert.c:87 msgid "Enable keyboard language switch button in window titlebars." msgstr "Schakel toetsenbordtaalknop op venstertitelbalken in." #: ../../WPrefs.app/Expert.c:91 msgid "Maximize (snap) a window to edge or corner by dragging." msgstr "Maximaliseer (duw) 'n venster tegen kant of hoek door verslepen." #. default: #: ../../WPrefs.app/Expert.c:94 msgid "Distance from edge to begin window snap." msgstr "Afstand vanaf kant waar venster opduwen begint." #. default: #: ../../WPrefs.app/Expert.c:97 msgid "Distance from corner to begin window snap." msgstr "Afstand vanaf hoek waar venster opduwen begint." #. default: #: ../../WPrefs.app/Expert.c:100 msgid "Snapping a window to the top maximizes it to the full screen." msgstr "Venster duwen tegen de bovenkant, maximaliseert 't schermvullend." #. default: #: ../../WPrefs.app/Expert.c:103 msgid "Allow move half-maximized windows between multiple screens." msgstr "Sta verplaatsen halfgemaximaliseerde vensters toe tussen schermen." #. default: #: ../../WPrefs.app/Expert.c:106 msgid "Alternative transitions between states for half maximized windows." msgstr "Andere staten van overgang voor halfgemaximaliseerde vensters." #. default: #: ../../WPrefs.app/Expert.c:109 msgid "Move mouse pointer with half maximized windows." msgstr "Verplaats muispijl met halfgemaximaliseerde vensters." #. default: #: ../../WPrefs.app/Expert.c:112 msgid "Open dialogs in the same workspace as their owners." msgstr "Open dialogen in dezelfde werkruimte als hun eigenaren." #: ../../WPrefs.app/Expert.c:322 msgid "Expert User Preferences" msgstr "Voorkeuren voor ervaren gebruikers" #: ../../WPrefs.app/Expert.c:324 msgid "" "Options for people who know what they're doing...\n" "Also has some other misc. options." msgstr "" "Opties voor hen die weten wat ze doen...\n" "Heeft tevens allerlei andere opties." #: ../../WPrefs.app/Focus.c:75 #, c-format msgid "bad option value %s for option FocusMode. Using default Manual" msgstr "" "verkeerde optiewaarde %s voor optie FocusMode. Gebruikt standaard Manual" #: ../../WPrefs.app/Focus.c:87 #, c-format msgid "bad option value %s for option ColormapMode. Using default Auto" msgstr "" "verkeerde optiewaarde %s voor optie ColormapMode. Gebruikt standaard Auto" #: ../../WPrefs.app/Focus.c:154 ../../WPrefs.app/Icons.c:160 #: ../../WPrefs.app/Icons.c:367 ../../WPrefs.app/Preferences.c:120 #: ../../WPrefs.app/WindowHandling.c:140 ../../WPrefs.app/WindowHandling.c:159 #, c-format msgid "OFF" msgstr "UIT" #: ../../WPrefs.app/Focus.c:199 msgid "Input Focus Mode" msgstr "Invoerfocusmodus" #: ../../WPrefs.app/Focus.c:207 msgid "Manual: Click on the window to set keyboard input focus" msgstr "Handmatig: Klik op 't venster om toetsenbordinvoerfocus te geven" #: ../../WPrefs.app/Focus.c:213 msgid "Auto: Set keyboard input focus to the window under the mouse pointer" msgstr "" "Vanzelf: Geef toetsenbord-\n" "invoerfocus aan 't venster onder de muispijl" #: ../../WPrefs.app/Focus.c:226 msgid "Install colormap from the window..." msgstr "Installeer kleurenkaart uit 't venster..." #: ../../WPrefs.app/Focus.c:228 msgid "" "This option is for screens that can display only a limited number\n" "of colors at a time, so they use an indexed table of colors (called\n" "a ColorMap) that each application customizes for its needs, and\n" "WindowMaker will set the global ColorMap dynamically from the\n" "active application.\n" "You can know the capability of your screen in WindowMaker's info\n" "panel as the 'visual'." msgstr "" "Deze optie is voor schermen die slechts 'n beperkt aantal kleuren\n" "tegelijk kunnen weergeven. Ze gebruiken 'n geïndexeerde kleurentabel\n" "(ColorMap genaamd), die door elk programma wordt aangepast naar\n" "behoefte, en WindowMaker zal de algemene kleurenkaart dynamisch\n" "instellen uit 't actieve programma.\n" "U kunt de mogelijkheden van uw scherm herkennen aan de 'visual'\n" "in WindowMakers Infopaneel." #: ../../WPrefs.app/Focus.c:240 msgid "...that has the input focus" msgstr "...dat de invoerfocus heeft" #: ../../WPrefs.app/Focus.c:245 msgid "...that's under the mouse pointer" msgstr "...dat onder de muispijl zit" #: ../../WPrefs.app/Focus.c:254 msgid "Automatic Window Raise Delay" msgstr "Vertraging vanzelf vensters verhogen" #: ../../WPrefs.app/Focus.c:326 msgid "Do not let applications receive the click used to focus windows" msgstr "Laat programma's niet de vensterfocusklik ontvangen" #: ../../WPrefs.app/Focus.c:331 msgid "Automatically focus new windows" msgstr "Focus nieuwe vensters vanzelf" #: ../../WPrefs.app/Focus.c:336 msgid "Raise window when switching focus with keyboard" msgstr "Verhoog venster bij focus wisselen met toetsenbord" #: ../../WPrefs.app/Focus.c:352 msgid "Window Focus Preferences" msgstr "Vensterfocusvoorkeuren" #: ../../WPrefs.app/Focus.c:353 msgid "Keyboard focus switching policy and related options." msgstr "" "Beleid voor toetsenbordfocus wisselen, en\n" "gerelateerde opties." #: ../../WPrefs.app/FontSimple.c:98 msgid "Window Title" msgstr "Venstertitel" #: ../../WPrefs.app/FontSimple.c:100 msgid "Menu Text" msgstr "Menutekst" #: ../../WPrefs.app/FontSimple.c:101 msgid "Icon Title" msgstr "Icoontitel" #: ../../WPrefs.app/FontSimple.c:103 msgid "Desktop Caption" msgstr "Bureaubladopschrift" #: ../../WPrefs.app/FontSimple.c:104 msgid "System Font" msgstr "Systeemletter" #: ../../WPrefs.app/FontSimple.c:105 msgid "Bold System Font" msgstr "Systeemletter, vet" #: ../../WPrefs.app/FontSimple.c:660 msgid "Sample Text" msgstr "Voorbeeld" #: ../../WPrefs.app/FontSimple.c:677 msgid "Family" msgstr "Familie" #: ../../WPrefs.app/FontSimple.c:703 msgid "Style" msgstr "Stijl" #: ../../WPrefs.app/FontSimple.c:706 msgid "Size" msgstr "Grootte" #: ../../WPrefs.app/FontSimple.c:738 msgid "Font Configuration" msgstr "Lettertypenconfiguratie" #: ../../WPrefs.app/FontSimple.c:740 msgid "Configure fonts for Window Maker titlebars, menus etc." msgstr "" "Stel lettertypen in voor Window Maker-titelbalken,\n" "menu's enz." #: ../../WPrefs.app/Icons.c:29 msgid "Shrinking/Zooming" msgstr "Krimpen/zoomen" #: ../../WPrefs.app/Icons.c:30 msgid "Spinning/Twisting" msgstr "Spinnen/draaien" #: ../../WPrefs.app/Icons.c:31 msgid "3D-flipping" msgstr "3D wentelen" #: ../../WPrefs.app/Icons.c:32 ../../WPrefs.app/MouseSettings.c:56 #: ../../WPrefs.app/MouseSettings.c:70 msgid "None" msgstr "Geen" #: ../../WPrefs.app/Icons.c:184 ../../WPrefs.app/Preferences.c:145 #: ../../WPrefs.app/Preferences.c:159 #, c-format msgid "bad value \"%s\" for option %s, using default \"%s\"" msgstr "verkeerde waarde \"%s\" voor optie %s, gebruikt standaard \"%s\"" #: ../../WPrefs.app/Icons.c:226 #, c-format msgid "animation style \"%s\" is unknown, resetting to \"%s\"" msgstr "animatiestijl \"%s\" is onbekend, teruggezet op \"%s\"" #: ../../WPrefs.app/Icons.c:253 msgid "Icon Positioning" msgstr "Icoonplaatsing" #: ../../WPrefs.app/Icons.c:332 msgid "Icon Size" msgstr "Icoongrootte" #: ../../WPrefs.app/Icons.c:334 msgid "The size of the dock/application icon and miniwindows" msgstr "" "De afmetingen van 't dok-/programma-icoon\n" "en minivensters" #: ../../WPrefs.app/Icons.c:351 msgid "Mini-Previews for Icons" msgstr "Miniaturen voor iconen" #: ../../WPrefs.app/Icons.c:353 msgid "" "The Mini-Preview provides a small view of the content of the\n" "window when the mouse is placed over the icon." msgstr "" "De miniatuur biedt 'n kleine blik op de inhoud van 't\n" "venster, als de muis op 't icoon wordt geplaatst." #: ../../WPrefs.app/Icons.c:375 msgid "Iconification Animation" msgstr "Iconificeringsanimatie" #: ../../WPrefs.app/Icons.c:399 msgid "Auto-arrange icons" msgstr "Iconen vanzelf schikken" #: ../../WPrefs.app/Icons.c:401 msgid "Keep icons and miniwindows arranged all the time." msgstr "Houd iconen en minivensters altijd geschikt." #: ../../WPrefs.app/Icons.c:406 msgid "Omnipresent miniwindows" msgstr "Alomtegenwoordige minivensters" #: ../../WPrefs.app/Icons.c:408 msgid "Make miniwindows be present in all workspaces." msgstr "Maak minivensters aanwezig in alle werkruimten." #: ../../WPrefs.app/Icons.c:413 msgid "Single click activation" msgstr "Enkelkliksactivering" #: ../../WPrefs.app/Icons.c:415 msgid "Launch applications and restore windows with a single click." msgstr "" "Start programma's op, en herstel vensters met\n" "'n enkele klik." #: ../../WPrefs.app/Icons.c:467 msgid "Icon Preferences" msgstr "Icoonvoorkeuren" #: ../../WPrefs.app/Icons.c:469 msgid "" "Icon/Miniwindow handling options. Icon positioning\n" "area, sizes of icons, miniaturization animation style." msgstr "" "Icoon-/minivenster-behandelingsopties. Plaatsingsgebied\n" "en afmetingen van iconen, animatiestijl bij miniaturiseren." #: ../../WPrefs.app/KeyboardShortcuts.c:72 msgid "Open applications menu" msgstr "Open programmamenu" #: ../../WPrefs.app/KeyboardShortcuts.c:73 msgid "Open window list menu" msgstr "Open vensterlijstmenu" #: ../../WPrefs.app/KeyboardShortcuts.c:74 msgid "Open window commands menu" msgstr "Open venstercommandomenu" #: ../../WPrefs.app/KeyboardShortcuts.c:75 msgid "Hide active application" msgstr "Verberg actief programma" #: ../../WPrefs.app/KeyboardShortcuts.c:76 msgid "Hide other applications" msgstr "Verberg andere programma's" #: ../../WPrefs.app/KeyboardShortcuts.c:77 msgid "Miniaturize active window" msgstr "Miniaturiseer actief venster" #: ../../WPrefs.app/KeyboardShortcuts.c:78 msgid "Miniaturize all windows" msgstr "Miniaturiseer alle vensters" #: ../../WPrefs.app/KeyboardShortcuts.c:79 msgid "Close active window" msgstr "Sluit actief venster" #: ../../WPrefs.app/KeyboardShortcuts.c:80 msgid "Maximize active window" msgstr "Maximaliseer actief venster" #: ../../WPrefs.app/KeyboardShortcuts.c:81 msgid "Maximize active window vertically" msgstr "Maximaliseer act. venster verticaal" #: ../../WPrefs.app/KeyboardShortcuts.c:82 msgid "Maximize active window horizontally" msgstr "Maximaliseer act. venster horizontaal" #: ../../WPrefs.app/KeyboardShortcuts.c:83 msgid "Maximize active window left half" msgstr "Maximaliseer act. venster linkerhelft" #: ../../WPrefs.app/KeyboardShortcuts.c:84 msgid "Maximize active window right half" msgstr "Maximaliseer act. venster rechterhelft" #: ../../WPrefs.app/KeyboardShortcuts.c:85 msgid "Maximize active window top half" msgstr "Maximaliseer act. venster bovenhelft" #: ../../WPrefs.app/KeyboardShortcuts.c:86 msgid "Maximize active window bottom half" msgstr "Maximaliseer act. venster onderhelft" #: ../../WPrefs.app/KeyboardShortcuts.c:87 msgid "Maximize active window left top corner" msgstr "Maximal. act. venster linkerbovenhoek" #: ../../WPrefs.app/KeyboardShortcuts.c:88 msgid "Maximize active window right top corner" msgstr "Maximal. act. venster rechterbovenhoek" #: ../../WPrefs.app/KeyboardShortcuts.c:89 msgid "Maximize active window left bottom corner" msgstr "Maximal. act. venster linkeronderhoek" #: ../../WPrefs.app/KeyboardShortcuts.c:90 msgid "Maximize active window right bottom corner" msgstr "Maximal. act. venster rechteronderhoek" #: ../../WPrefs.app/KeyboardShortcuts.c:91 msgid "Maximus: Tiled maximization " msgstr "Maximus: tegelmaximalisering " #: ../../WPrefs.app/KeyboardShortcuts.c:92 msgid "Toggle window on top status" msgstr "Schakel 'venster bovenop houden' in/uit" #: ../../WPrefs.app/KeyboardShortcuts.c:93 msgid "Toggle window at bottom status" msgstr "Schakel 'venster onderop houden' in/uit" #: ../../WPrefs.app/KeyboardShortcuts.c:94 msgid "Toggle window omnipresent status" msgstr "Schakel 'venster alomtegenwoordig' in/uit" #: ../../WPrefs.app/KeyboardShortcuts.c:95 msgid "Raise active window" msgstr "Verhoog actief venster" #: ../../WPrefs.app/KeyboardShortcuts.c:96 msgid "Lower active window" msgstr "Verlaag actief venster" #: ../../WPrefs.app/KeyboardShortcuts.c:97 msgid "Raise/Lower window under mouse pointer" msgstr "Verhoog/verlaag venster onder muispijl" #: ../../WPrefs.app/KeyboardShortcuts.c:98 msgid "Shade active window" msgstr "Rol actief venster op" #: ../../WPrefs.app/KeyboardShortcuts.c:99 msgid "Move/Resize active window" msgstr "Verplaats/vergroot actief venster" #: ../../WPrefs.app/KeyboardShortcuts.c:100 msgid "Select active window" msgstr "Selecteer actief venster" #: ../../WPrefs.app/KeyboardShortcuts.c:101 msgid "Focus next window" msgstr "Focus volgend venster" #: ../../WPrefs.app/KeyboardShortcuts.c:102 msgid "Focus previous window" msgstr "Focus vorig venster" #: ../../WPrefs.app/KeyboardShortcuts.c:103 msgid "Focus next group window" msgstr "Focus volgend groepsvenster" #: ../../WPrefs.app/KeyboardShortcuts.c:104 msgid "Focus previous group window" msgstr "Focus vorig groepsvenster" #. Workspace Related #: ../../WPrefs.app/KeyboardShortcuts.c:107 msgid "Open workspace pager" msgstr "Open werkruimtevolger" #: ../../WPrefs.app/KeyboardShortcuts.c:108 msgid "Switch to next workspace" msgstr "Schakel naar volgende werkruimte" #: ../../WPrefs.app/KeyboardShortcuts.c:109 msgid "Switch to previous workspace" msgstr "Schakel naar vorige werkruimte" #: ../../WPrefs.app/KeyboardShortcuts.c:110 msgid "Switch to last used workspace" msgstr "Schakel n. laatst gebruikte werkruimte" #: ../../WPrefs.app/KeyboardShortcuts.c:111 msgid "Switch to next ten workspaces" msgstr "Schakel 10 werkruimten verder" #: ../../WPrefs.app/KeyboardShortcuts.c:112 msgid "Switch to previous ten workspaces" msgstr "Schakel 10 werkruimten terug" #: ../../WPrefs.app/KeyboardShortcuts.c:113 msgid "Switch to workspace 1" msgstr "Schakel naar werkruimte 1" #: ../../WPrefs.app/KeyboardShortcuts.c:114 msgid "Switch to workspace 2" msgstr "Schakel naar werkruimte 2" #: ../../WPrefs.app/KeyboardShortcuts.c:115 msgid "Switch to workspace 3" msgstr "Schakel naar werkruimte 3" #: ../../WPrefs.app/KeyboardShortcuts.c:116 msgid "Switch to workspace 4" msgstr "Schakel naar werkruimte 4" #: ../../WPrefs.app/KeyboardShortcuts.c:117 msgid "Switch to workspace 5" msgstr "Schakel naar werkruimte 5" #: ../../WPrefs.app/KeyboardShortcuts.c:118 msgid "Switch to workspace 6" msgstr "Schakel naar werkruimte 6" #: ../../WPrefs.app/KeyboardShortcuts.c:119 msgid "Switch to workspace 7" msgstr "Schakel naar werkruimte 7" #: ../../WPrefs.app/KeyboardShortcuts.c:120 msgid "Switch to workspace 8" msgstr "Schakel naar werkruimte 8" #: ../../WPrefs.app/KeyboardShortcuts.c:121 msgid "Switch to workspace 9" msgstr "Schakel naar werkruimte 9" #: ../../WPrefs.app/KeyboardShortcuts.c:122 msgid "Switch to workspace 10" msgstr "Schakel naar werkruimte 10" #: ../../WPrefs.app/KeyboardShortcuts.c:123 msgid "Move window to next workspace" msgstr "Verpl. venster n. volgende werkruimte" #: ../../WPrefs.app/KeyboardShortcuts.c:124 msgid "Move window to previous workspace" msgstr "Verpl. venster n. vorige werkruimte" #: ../../WPrefs.app/KeyboardShortcuts.c:125 msgid "Move window to last used workspace" msgstr "Verpl. venster n. laatst gebruikte werkr." #: ../../WPrefs.app/KeyboardShortcuts.c:126 msgid "Move window to next ten workspaces" msgstr "Verpl. venster 10 werkruimten verder" #: ../../WPrefs.app/KeyboardShortcuts.c:127 msgid "Move window to previous ten workspaces" msgstr "Verpl. venster 10 werkruimten terug" #: ../../WPrefs.app/KeyboardShortcuts.c:128 msgid "Move window to workspace 1" msgstr "Verplaats venster naar werkruimte 1" #: ../../WPrefs.app/KeyboardShortcuts.c:129 msgid "Move window to workspace 2" msgstr "Verplaats venster naar werkruimte 2" #: ../../WPrefs.app/KeyboardShortcuts.c:130 msgid "Move window to workspace 3" msgstr "Verplaats venster naar werkruimte 3" #: ../../WPrefs.app/KeyboardShortcuts.c:131 msgid "Move window to workspace 4" msgstr "Verplaats venster naar werkruimte 4" #: ../../WPrefs.app/KeyboardShortcuts.c:132 msgid "Move window to workspace 5" msgstr "Verplaats venster naar werkruimte 5" #: ../../WPrefs.app/KeyboardShortcuts.c:133 msgid "Move window to workspace 6" msgstr "Verplaats venster naar werkruimte 6" #: ../../WPrefs.app/KeyboardShortcuts.c:134 msgid "Move window to workspace 7" msgstr "Verplaats venster naar werkruimte 7" #: ../../WPrefs.app/KeyboardShortcuts.c:135 msgid "Move window to workspace 8" msgstr "Verplaats venster naar werkruimte 8" #: ../../WPrefs.app/KeyboardShortcuts.c:136 msgid "Move window to workspace 9" msgstr "Verplaats venster naar werkruimte 9" #: ../../WPrefs.app/KeyboardShortcuts.c:137 msgid "Move window to workspace 10" msgstr "Verplaats venster naar werkruimte 10" #. Window Selection #: ../../WPrefs.app/KeyboardShortcuts.c:140 msgid "Shortcut for window 1" msgstr "Sneltoets voor venster 1" #: ../../WPrefs.app/KeyboardShortcuts.c:141 msgid "Shortcut for window 2" msgstr "Sneltoets voor venster 2" #: ../../WPrefs.app/KeyboardShortcuts.c:142 msgid "Shortcut for window 3" msgstr "Sneltoets voor venster 3" #: ../../WPrefs.app/KeyboardShortcuts.c:143 msgid "Shortcut for window 4" msgstr "Sneltoets voor venster 4" #: ../../WPrefs.app/KeyboardShortcuts.c:144 msgid "Shortcut for window 5" msgstr "Sneltoets voor venster 5" #: ../../WPrefs.app/KeyboardShortcuts.c:145 msgid "Shortcut for window 6" msgstr "Sneltoets voor venster 6" #: ../../WPrefs.app/KeyboardShortcuts.c:146 msgid "Shortcut for window 7" msgstr "Sneltoets voor venster 7" #: ../../WPrefs.app/KeyboardShortcuts.c:147 msgid "Shortcut for window 8" msgstr "Sneltoets voor venster 8" #: ../../WPrefs.app/KeyboardShortcuts.c:148 msgid "Shortcut for window 9" msgstr "Sneltoets voor venster 9" #: ../../WPrefs.app/KeyboardShortcuts.c:149 msgid "Shortcut for window 10" msgstr "Sneltoets voor venster 10" #. Misc. #: ../../WPrefs.app/KeyboardShortcuts.c:152 msgid "Launch new instance of application" msgstr "Start nieuw exemplaar van programma op" #: ../../WPrefs.app/KeyboardShortcuts.c:153 msgid "Switch to Next Screen/Monitor" msgstr "Schakel naar volgend scherm/monitor" #: ../../WPrefs.app/KeyboardShortcuts.c:154 msgid "Run application" msgstr "Voer programma uit" #: ../../WPrefs.app/KeyboardShortcuts.c:155 msgid "Raise/Lower Dock" msgstr "Verhoog/verlaag Dok" #: ../../WPrefs.app/KeyboardShortcuts.c:156 msgid "Raise/Lower Clip" msgstr "Verhoog/verlaag Clip" #: ../../WPrefs.app/KeyboardShortcuts.c:158 msgid "Toggle keyboard language" msgstr "Wissel toetsenbordtaal" #: ../../WPrefs.app/KeyboardShortcuts.c:375 ../../WPrefs.app/Menu.c:275 #: ../../WPrefs.app/TexturePanel.c:1425 msgid "Cancel" msgstr "Annuleren" #: ../../WPrefs.app/KeyboardShortcuts.c:377 msgid "Press the desired shortcut key(s) or click Cancel to stop capturing." msgstr "" "Druk op de verlangde sneltoets(en), of klik Annuleren om opnemen te stoppen." #: ../../WPrefs.app/KeyboardShortcuts.c:396 #: ../../WPrefs.app/KeyboardShortcuts.c:566 ../../WPrefs.app/Menu.c:285 #: ../../WPrefs.app/Menu.c:733 msgid "Capture" msgstr "Opnemen" #: ../../WPrefs.app/KeyboardShortcuts.c:397 #: ../../WPrefs.app/KeyboardShortcuts.c:574 msgid "Click on Capture to interactively define the shortcut key." msgstr "Klik op Opnemen om interactief de sneltoets te bepalen." #: ../../WPrefs.app/KeyboardShortcuts.c:523 msgid "Actions" msgstr "Acties" #: ../../WPrefs.app/KeyboardShortcuts.c:550 msgid "Shortcut" msgstr "Sneltoets" #: ../../WPrefs.app/KeyboardShortcuts.c:560 ../../WPrefs.app/Menu.c:739 msgid "Clear" msgstr "Wissen" #: ../../WPrefs.app/KeyboardShortcuts.c:615 msgid "Keyboard Shortcut Preferences" msgstr "Sneltoetsvoorkeuren" #: ../../WPrefs.app/KeyboardShortcuts.c:617 msgid "" "Change the keyboard shortcuts for actions such\n" "as changing workspaces and opening menus." msgstr "" "Wijzig de sneltoetsen voor acties, zoals van\n" "werkruimte wisselen en menu's openen." #: ../../WPrefs.app/Menu.c:251 msgid "Select Program" msgstr "Kies programma" #: ../../WPrefs.app/Menu.c:413 msgid "New Items" msgstr "Nieuwe onderdelen" #: ../../WPrefs.app/Menu.c:414 msgid "Sample Commands" msgstr "Voorbeeldcommando's" #: ../../WPrefs.app/Menu.c:415 msgid "Sample Submenus" msgstr "Voorbeeldmenu's" #: ../../WPrefs.app/Menu.c:427 msgid "Run Program" msgstr "Programma uitvoeren" #: ../../WPrefs.app/Menu.c:428 msgid "Internal Command" msgstr "Intern commando" #: ../../WPrefs.app/Menu.c:429 msgid "Submenu" msgstr "Submenu" #: ../../WPrefs.app/Menu.c:430 msgid "External Submenu" msgstr "Extern submenu" #: ../../WPrefs.app/Menu.c:431 msgid "Generated Submenu" msgstr "Aangemaakt submenu" #: ../../WPrefs.app/Menu.c:432 msgid "Generated PL Menu" msgstr "Aangemaakt PL-menu" #: ../../WPrefs.app/Menu.c:433 msgid "Directory Contents" msgstr "Mapinhoud" #: ../../WPrefs.app/Menu.c:434 msgid "Workspace Menu" msgstr "Werkruimtenmenu" #: ../../WPrefs.app/Menu.c:435 ../../WPrefs.app/MouseSettings.c:58 msgid "Window List Menu" msgstr "Vensterlijstmenu" #: ../../WPrefs.app/Menu.c:454 msgid "XTerm" msgstr "" #: ../../WPrefs.app/Menu.c:457 msgid "rxvt" msgstr "" #: ../../WPrefs.app/Menu.c:460 msgid "ETerm" msgstr "" #: ../../WPrefs.app/Menu.c:463 msgid "Run..." msgstr "Uitvoeren..." #: ../../WPrefs.app/Menu.c:464 #, c-format msgid "%A(Run,Type command to run)" msgstr "%A(Uitvoeren,Typ uit te voeren commando)" #: ../../WPrefs.app/Menu.c:466 msgid "Firefox" msgstr "" #: ../../WPrefs.app/Menu.c:469 msgid "gimp" msgstr "" #: ../../WPrefs.app/Menu.c:472 msgid "epic" msgstr "" #: ../../WPrefs.app/Menu.c:475 msgid "ee" msgstr "" #: ../../WPrefs.app/Menu.c:478 msgid "xv" msgstr "" #: ../../WPrefs.app/Menu.c:481 msgid "Evince" msgstr "" #: ../../WPrefs.app/Menu.c:484 msgid "ghostview" msgstr "" #: ../../WPrefs.app/Menu.c:487 ../../WPrefs.app/Menu.c:758 msgid "Exit Window Maker" msgstr "Window Maker afsluiten" #: ../../WPrefs.app/Menu.c:509 msgid "Debian Menu" msgstr "Debian-menu" #: ../../WPrefs.app/Menu.c:512 msgid "RedHat Menu" msgstr "RedHat-menu" #: ../../WPrefs.app/Menu.c:515 msgid "Menu Conectiva" msgstr "Conectiva-menu" #: ../../WPrefs.app/Menu.c:518 msgid "Themes" msgstr "Thema's" #: ../../WPrefs.app/Menu.c:524 msgid "Bg Images (scale)" msgstr "Achtergr. (schaal)" #: ../../WPrefs.app/Menu.c:530 msgid "Bg Images (tile)" msgstr "Achtergr. (tegel)" #: ../../WPrefs.app/Menu.c:536 msgid "Assorted XTerms" msgstr "Allerlei XTerms" #: ../../WPrefs.app/Menu.c:538 msgid "XTerm Yellow on Blue" msgstr "XTerm geel op blauw" #: ../../WPrefs.app/Menu.c:541 msgid "XTerm White on Black" msgstr "XTerm wit op zwart" #: ../../WPrefs.app/Menu.c:544 msgid "XTerm Black on White" msgstr "XTerm zwart op wit" #: ../../WPrefs.app/Menu.c:547 msgid "XTerm Black on Beige" msgstr "XTerm zwart op beige" #: ../../WPrefs.app/Menu.c:550 msgid "XTerm White on Green" msgstr "XTerm wit op groen" #: ../../WPrefs.app/Menu.c:553 msgid "XTerm White on Olive" msgstr "XTerm wit op olijfgroen" #: ../../WPrefs.app/Menu.c:556 msgid "XTerm Blue on Blue" msgstr "XTerm blauw op blauw" #: ../../WPrefs.app/Menu.c:559 msgid "XTerm BIG FONTS" msgstr "XTerm GROTE LETTERS" #: ../../WPrefs.app/Menu.c:580 msgid "Program to Run" msgstr "Uit te voeren programma" #: ../../WPrefs.app/Menu.c:590 msgid "Browse" msgstr "Bladeren" #: ../../WPrefs.app/Menu.c:599 msgid "Run the program inside a Xterm" msgstr "Voer 't programma uit in 'n XTerm" #: ../../WPrefs.app/Menu.c:608 msgid "Path for Menu" msgstr "Pad naar menu" #: ../../WPrefs.app/Menu.c:619 msgid "" "Enter the path for a file containing a menu\n" "or a list of directories with the programs you\n" "want to have listed in the menu. Ex:\n" "~/GNUstep/Library/WindowMaker/menu\n" "or\n" "/usr/bin ~/xbin" msgstr "" "Voer 't pad in naar 'n bestand dat 'n menu bevat,\n" "of 'n lijst van mappen met de programma's die u\n" "vermeld wilt hebben in 't menu. Vb.:\n" "~/GNUstep/Library/WindowMaker/menu\n" "of\n" "/usr/bin ~/xbin" #: ../../WPrefs.app/Menu.c:631 ../../WPrefs.app/Menu.c:656 msgid "Command" msgstr "Commando" #: ../../WPrefs.app/Menu.c:642 msgid "" "Enter a command that outputs a menu\n" "definition to stdout when invoked." msgstr "" "Voer 'n commando in, dat bij aanroepen\n" "'n uitgewerkt menu geeft naar 'stdout'." #: ../../WPrefs.app/Menu.c:647 ../../WPrefs.app/Menu.c:672 msgid "" "Cache menu contents after opening for\n" "the first time" msgstr "" "Bewaar menu-inhoud na de eerste keer\n" "openen" #: ../../WPrefs.app/Menu.c:667 msgid "" "Enter a command that outputs a proplist menu\n" "definition to stdout when invoked." msgstr "" "Voer 'n commando in, dat bij aanroepen\n" "'n uitgewerkt 'property list'-menu geeft\n" "naar 'stdout'." #: ../../WPrefs.app/Menu.c:681 msgid "Command to Open Files" msgstr "Commando om bestanden te openen" #: ../../WPrefs.app/Menu.c:692 msgid "" "Enter the command you want to use to open the\n" "files in the directories listed below." msgstr "" "Voer 't te gebruiken commando in, om de\n" "bestanden in onderstaande mappen te openen." #: ../../WPrefs.app/Menu.c:700 msgid "Directories with Files" msgstr "Mappen met bestanden" #: ../../WPrefs.app/Menu.c:711 msgid "Strip extensions from file names" msgstr "Extensies van bestandsnamen af halen" #: ../../WPrefs.app/Menu.c:722 msgid "Keyboard Shortcut" msgstr "Sneltoets" #: ../../WPrefs.app/Menu.c:754 msgid "Arrange Icons" msgstr "Iconen schikken" #: ../../WPrefs.app/Menu.c:755 msgid "Hide All Windows Except For The Focused One" msgstr "Alle vensters verbergen, behalve die focus heeft" #: ../../WPrefs.app/Menu.c:756 msgid "Show All Windows" msgstr "Alle vensters tonen" #: ../../WPrefs.app/Menu.c:759 msgid "Exit X Session" msgstr "X-sessie afsluiten" #: ../../WPrefs.app/Menu.c:760 msgid "Restart Window Maker" msgstr "Window Maker herstarten" #: ../../WPrefs.app/Menu.c:761 msgid "Start Another Window Manager : (" msgstr "Andere vensterbeheerder starten : (" #: ../../WPrefs.app/Menu.c:763 msgid "Save Current Session" msgstr "Huidige sessie opslaan" #: ../../WPrefs.app/Menu.c:764 msgid "Clear Saved Session" msgstr "Opgeslagen sessie wissen" #: ../../WPrefs.app/Menu.c:765 msgid "Refresh Screen" msgstr "Scherm vernieuwen" #: ../../WPrefs.app/Menu.c:766 msgid "Open Info Panel" msgstr "Infopaneel openen" #: ../../WPrefs.app/Menu.c:767 msgid "Open Copyright Panel" msgstr "Auteursrechtenpaneel openen" #: ../../WPrefs.app/Menu.c:772 msgid "Window Manager to Start" msgstr "Te starten vensterbeheerder" #: ../../WPrefs.app/Menu.c:785 msgid "Do not confirm action." msgstr "Actie niet bevestigen." #: ../../WPrefs.app/Menu.c:792 msgid "" "Instructions:\n" "\n" " - drag items from the left to the menu to add new items\n" " - drag items out of the menu to remove items\n" " - drag items in menu to change their position\n" " - drag items with Control pressed to copy them\n" " - double click in a menu item to change the label\n" " - click on a menu item to change related information" msgstr "" "Instructies:\n" "\n" "Versleep onderdelen...\n" " ...van links naar 't menu, om ingangen toe te voegen.\n" " ...uit 't menu, om ze te verwijderen.\n" " ...binnen 't menu, om hun plaats te veranderen.\n" " ...met Control ingedrukt, om ze te kopiëren.\n" "(Dubbel)klik op 'n menu-ingang, om...\n" " ...de benaming te wijzigen.\n" " ...gerelateerde informatie te wijzigen." #: ../../WPrefs.app/Menu.c:1031 #, c-format msgid "unknown command '%s' in menu" msgstr "onbekend commando '%s' in menu" #: ../../WPrefs.app/Menu.c:1055 msgid ": Execute Program" msgstr ": start programma" #: ../../WPrefs.app/Menu.c:1059 msgid ": Perform Internal Command" msgstr ": voer intern commando uit" #: ../../WPrefs.app/Menu.c:1063 msgid ": Open a Submenu" msgstr ": open 'n submenu" #: ../../WPrefs.app/Menu.c:1067 msgid ": Program Generated Submenu" msgstr ": submenu uit programma" #: ../../WPrefs.app/Menu.c:1071 msgid ": Program Generated Proplist Submenu" msgstr ": PropList-submenu uit programma" #: ../../WPrefs.app/Menu.c:1075 msgid ": Directory Contents Menu" msgstr ": menu met mapinhoud" #: ../../WPrefs.app/Menu.c:1079 msgid ": Open Workspaces Submenu" msgstr ": open werkruimtensubmenu" #: ../../WPrefs.app/Menu.c:1083 msgid ": Open Window List Submenu" msgstr ": open vensterlijstsubmenu" #: ../../WPrefs.app/Menu.c:1299 msgid "Remove Submenu" msgstr "Submenu verwijderen" #: ../../WPrefs.app/Menu.c:1300 msgid "" "Removing this item will destroy all items inside\n" "the submenu. Do you really want to do that?" msgstr "" "Dit onderdeel verwijderen, zal alle ingangen in 't\n" "submenu vernietigen. Wilt u dat echt doen?" #: ../../WPrefs.app/Menu.c:1302 msgid "Yes" msgstr "Ja" #: ../../WPrefs.app/Menu.c:1302 msgid "No" msgstr "Nee" #: ../../WPrefs.app/Menu.c:1302 msgid "Yes, don't ask again" msgstr "Ja, vraag niet weer" #: ../../WPrefs.app/Menu.c:1440 #, c-format msgid "Invalid menu command \"%s\" with label \"%s\" cleared" msgstr "Ongeldig menucommando \"%s\" met label \"%s\" leeg" #: ../../WPrefs.app/Menu.c:1443 ../../WPrefs.app/Menu.c:1522 #: ../../WPrefs.app/Menu.c:1537 ../../WPrefs.app/WPrefs.c:668 msgid "Warning" msgstr "Waarschuwing" #: ../../WPrefs.app/Menu.c:1443 ../../WPrefs.app/Menu.c:1476 #: ../../WPrefs.app/Menu.c:1523 ../../WPrefs.app/MouseSettings.c:156 #: ../../WPrefs.app/MouseSettings.c:176 ../../WPrefs.app/TexturePanel.c:585 #: ../../WPrefs.app/TexturePanel.c:663 ../../WPrefs.app/TexturePanel.c:1419 #: ../../WPrefs.app/WPrefs.c:617 ../../WPrefs.app/WPrefs.c:621 #: ../../WPrefs.app/WPrefs.c:641 ../../WPrefs.app/WPrefs.c:653 #: ../../WPrefs.app/WPrefs.c:659 ../../WPrefs.app/WPrefs.c:668 #: ../../WPrefs.app/WPrefs.c:699 ../../WPrefs.app/WPrefs.c:703 msgid "OK" msgstr "OK" #: ../../WPrefs.app/Menu.c:1472 #, c-format msgid "Could not open default menu from '%s'" msgstr "Kon standaardmenu niet openen uit '%s'" #: ../../WPrefs.app/Menu.c:1476 ../../WPrefs.app/MouseSettings.c:154 #: ../../WPrefs.app/MouseSettings.c:173 ../../WPrefs.app/TexturePanel.c:585 #: ../../WPrefs.app/TexturePanel.c:661 ../../WPrefs.app/WPrefs.c:617 #: ../../WPrefs.app/WPrefs.c:621 ../../WPrefs.app/WPrefs.c:638 #: ../../WPrefs.app/WPrefs.c:649 ../../WPrefs.app/WPrefs.c:659 #: ../../WPrefs.app/WPrefs.c:699 ../../WPrefs.app/WPrefs.c:703 msgid "Error" msgstr "Fout" #: ../../WPrefs.app/Menu.c:1516 #, c-format msgid "" "The menu file \"%s\" referenced by WMRootMenu is read-only.\n" "You cannot use WPrefs to modify it." msgstr "" "Menubestand \"%s\" verwezen door WMRootMenu is alleen-lezen.\n" "U kunt WPrefs niet gebruiken om 't te wijzigen." #: ../../WPrefs.app/Menu.c:1538 msgid "" "The menu file format currently in use is not supported\n" "by this tool. Do you want to discard the current menu\n" "to use this tool?" msgstr "" "De nu gebruikte menubestandsvorm wordt niet ondersteund\n" "door dit hulpmiddel. Wilt u 't huidige menu verwerpen,\n" "om dit hulpmiddel te gebruiken?" #: ../../WPrefs.app/Menu.c:1541 msgid "Yes, Discard and Update" msgstr "Ja, verwerp en werk bij" #: ../../WPrefs.app/Menu.c:1541 msgid "No, Keep Current Menu" msgstr "Nee, behoud huidig menu" #: ../../WPrefs.app/Menu.c:1558 #, c-format msgid "" "\n" "\n" "When saved, the menu will be written to the file\n" "\"%s\"." msgstr "" "\n" "\n" "Bij opslaan wordt 't menu geschreven naar 't bestand\n" "\"%s\"." #: ../../WPrefs.app/Menu.c:1795 msgid "Applications Menu Definition" msgstr "Programmamenu bepalen" #: ../../WPrefs.app/Menu.c:1797 msgid "Edit the menu for launching applications." msgstr "Bewerk 't menu voor programma's opstarten." #: ../../WPrefs.app/MenuPreferences.c:105 msgid "Menu Scrolling Speed" msgstr "Menuschuifsnelheid" #: ../../WPrefs.app/MenuPreferences.c:153 msgid "Submenu Alignment" msgstr "Submenu-uitlijning" #: ../../WPrefs.app/MenuPreferences.c:197 msgid "Always open submenus inside the screen, instead of scrolling." msgstr "Open submenu's altijd binnen 't scherm, in plaats van verschuiven." #: ../../WPrefs.app/MenuPreferences.c:202 msgid "Scroll off-screen menus when pointer is moved over them." msgstr "Verschuif menu's van buiten 't scherm, als muispijl erover beweegt." #: ../../WPrefs.app/MenuPreferences.c:206 msgid "Use h/j/k/l keys to select menu options." msgstr "Gebruik h/j/k/l-toetsen om menuopties te selecteren." #: ../../WPrefs.app/MenuPreferences.c:222 msgid "Menu Preferences" msgstr "Menuvoorkeuren" #: ../../WPrefs.app/MenuPreferences.c:224 msgid "" "Menu usability related options. Scrolling speed,\n" "alignment of submenus etc." msgstr "" "Menugebruikgerelateerde opties. Schuifsnelheid,\n" "uitlijning van submenu's enz." #: ../../WPrefs.app/MouseSettings.c:43 msgid "Left Button" msgstr "Linkerknop" #: ../../WPrefs.app/MouseSettings.c:44 msgid "Middle Button" msgstr "Middenknop" #: ../../WPrefs.app/MouseSettings.c:45 msgid "Right Button" msgstr "Rechterknop" #: ../../WPrefs.app/MouseSettings.c:46 msgid "Back Button" msgstr "Achteruitknop" #: ../../WPrefs.app/MouseSettings.c:47 msgid "Forward Button" msgstr "Vooruitknop" #: ../../WPrefs.app/MouseSettings.c:48 msgid "Mouse Wheel" msgstr "Muiswiel" #: ../../WPrefs.app/MouseSettings.c:49 msgid "Mouse Wheel Tilt" msgstr "Muiswielkanteling" #: ../../WPrefs.app/MouseSettings.c:57 msgid "Applications Menu" msgstr "Programmamenu" #: ../../WPrefs.app/MouseSettings.c:59 msgid "Select Windows" msgstr "Vensters selecteren" #: ../../WPrefs.app/MouseSettings.c:60 msgid "Previous Workspace" msgstr "Vorige werkruimte" #: ../../WPrefs.app/MouseSettings.c:61 msgid "Next Workspace" msgstr "Volgende werkruimte" #: ../../WPrefs.app/MouseSettings.c:62 msgid "Previous Window" msgstr "Vorig venster" #: ../../WPrefs.app/MouseSettings.c:63 msgid "Next Window" msgstr "Volgend venster" #: ../../WPrefs.app/MouseSettings.c:71 msgid "Switch Workspaces" msgstr "Werkruimte wisselen" #: ../../WPrefs.app/MouseSettings.c:72 msgid "Switch Windows" msgstr "Venster wisselen" #: ../../WPrefs.app/MouseSettings.c:155 msgid "Invalid mouse acceleration value. Must be a positive real value." msgstr "Ongeldige muisversnellingswaarde. Moet 'n positieve reële waarde zijn." #: ../../WPrefs.app/MouseSettings.c:175 msgid "" "Invalid mouse acceleration threshold value. Must be the number of pixels to " "travel before accelerating." msgstr "" "Ongeldige drempelwaarde muisversnelling. Moet 't aantal pixels om te " "verplaatsen zijn, alvorens te versnellen." #: ../../WPrefs.app/MouseSettings.c:284 #, c-format msgid "bad value %s for option %s" msgstr "verkeerde waarde %s voor optie %s" #: ../../WPrefs.app/MouseSettings.c:343 #, c-format msgid "" "modifier key %s for option ModifierKey was not recognized. Using %s as " "default" msgstr "" "modificatortoets %s voor optie ModifierKey werd niet herkend. Gebruikt %s " "als standaard" #: ../../WPrefs.app/MouseSettings.c:364 msgid "could not retrieve keyboard modifier mapping" msgstr "kon beschrijving modificatortoets niet ophalen" #: ../../WPrefs.app/MouseSettings.c:458 msgid "Mouse Speed" msgstr "Muissnelheid" #: ../../WPrefs.app/MouseSettings.c:471 ../../WPrefs.app/WPrefs.c:408 #: ../../WPrefs.app/WPrefs.c:424 ../../WPrefs.app/WindowHandling.c:372 #: ../../WPrefs.app/WindowHandling.c:423 ../../WPrefs.app/WindowHandling.c:435 #: ../../WPrefs.app/WindowHandling.c:454 ../../WPrefs.app/WindowHandling.c:466 #, c-format msgid "could not load icon %s" msgstr "kon icoon %s niet laden" #: ../../WPrefs.app/MouseSettings.c:488 msgid "Accel.:" msgstr "Versnl.:" #: ../../WPrefs.app/MouseSettings.c:499 msgid "Threshold:" msgstr "Drempel:" #: ../../WPrefs.app/MouseSettings.c:512 msgid "Mouse Grab Modifier" msgstr "Grijpmodificator voor muis" #: ../../WPrefs.app/MouseSettings.c:514 msgid "" "Keyboard modifier to use for actions that\n" "involve dragging windows with the mouse,\n" "clicking inside the window." msgstr "" "Te gebruiken modificatortoets, voor acties\n" "met betrekking tot vensters verslepen met\n" "de muis, en klikken binnen 't venster." #: ../../WPrefs.app/MouseSettings.c:530 msgid "Double-Click Delay" msgstr "Dubbelklikvertraging" #: ../../WPrefs.app/MouseSettings.c:573 msgid "Test" msgstr "Test" #: ../../WPrefs.app/MouseSettings.c:604 msgid "Workspace Mouse Actions" msgstr "Muisacties in werkruimte" #: ../../WPrefs.app/MouseSettings.c:609 msgid "Disable mouse actions" msgstr "Muisacties uitschakelen" #: ../../WPrefs.app/MouseSettings.c:659 #, c-format msgid "could not create %s" msgstr "kon %s niet aanmaken" #: ../../WPrefs.app/MouseSettings.c:674 #, c-format msgid "could not create temporary file %s" msgstr "kon tijdelijk bestand %s niet aanmaken" #: ../../WPrefs.app/MouseSettings.c:707 #, c-format msgid "could not rename file %s to %s" msgstr "kon bestand %s niet hernoemen naar %s" #: ../../WPrefs.app/MouseSettings.c:712 #, c-format msgid "could not set permission 0%03o on file \"%s\"" msgstr "kon toestemming 0%03o niet instellen op bestand \"%s\"" #: ../../WPrefs.app/MouseSettings.c:776 msgid "Shift" msgstr "Shift" #: ../../WPrefs.app/MouseSettings.c:777 msgid "Lock" msgstr "Lock" #: ../../WPrefs.app/MouseSettings.c:778 msgid "Control" msgstr "Control" #: ../../WPrefs.app/MouseSettings.c:779 msgid "Mod1" msgstr "Mod1" #: ../../WPrefs.app/MouseSettings.c:780 msgid "Mod2" msgstr "Mod2" #: ../../WPrefs.app/MouseSettings.c:781 msgid "Mod3" msgstr "Mod3" #: ../../WPrefs.app/MouseSettings.c:782 msgid "Mod4" msgstr "Mod4" #: ../../WPrefs.app/MouseSettings.c:783 msgid "Mod5" msgstr "Mod5" #: ../../WPrefs.app/MouseSettings.c:787 msgid "Mouse Preferences" msgstr "Muisvoorkeuren" #: ../../WPrefs.app/MouseSettings.c:789 msgid "" "Mouse speed/acceleration, double click delay,\n" "mouse button bindings etc." msgstr "" "Muissnelheid/-versnelling, dubbelklikvertraging,\n" "muisknopbindingen enz." #: ../../WPrefs.app/Paths.c:78 msgid "bad value in option IconPath. Using default path list" msgstr "verkeerde waarde in optie IconPath. Gebruikt standaardpadenlijst" #: ../../WPrefs.app/Paths.c:95 msgid "bad value in option PixmapPath. Using default path list" msgstr "verkeerde waarde in optie PixmapPath. Gebruikt standaardpadenlijst" #: ../../WPrefs.app/Paths.c:140 msgid "Select directory" msgstr "Kies map" #: ../../WPrefs.app/Paths.c:250 msgid "Icon Search Paths" msgstr "Icoonzoekpaden" #: ../../WPrefs.app/Paths.c:261 ../../WPrefs.app/Paths.c:292 #: ../../WPrefs.app/TexturePanel.c:1212 msgid "Add" msgstr "Toevoegen" #: ../../WPrefs.app/Paths.c:268 ../../WPrefs.app/Paths.c:299 msgid "Remove" msgstr "Verwijderen" #: ../../WPrefs.app/Paths.c:281 msgid "Pixmap Search Paths" msgstr "Pixmapzoekpaden" #: ../../WPrefs.app/Paths.c:316 msgid "Search Path Configuration" msgstr "Zoekpadenconfiguratie" #: ../../WPrefs.app/Paths.c:318 msgid "" "Search paths to use when looking for pixmaps\n" "and icons." msgstr "" "Te gebruiken zoekpaden bij zoeken naar 'pixmaps'\n" "en iconen." #: ../../WPrefs.app/Preferences.c:30 ../../WPrefs.app/Preferences.c:42 msgid "Corner of screen" msgstr "Schermhoek" #: ../../WPrefs.app/Preferences.c:31 ../../WPrefs.app/Preferences.c:43 msgid "Center of screen" msgstr "Schermmidden" #: ../../WPrefs.app/Preferences.c:32 ../../WPrefs.app/Preferences.c:44 msgid "Center of resized window" msgstr "Midden van vergroot venster" #: ../../WPrefs.app/Preferences.c:33 msgid "Technical drawing-like" msgstr "Technischetekeningachtig" #: ../../WPrefs.app/Preferences.c:34 ../../WPrefs.app/Preferences.c:45 msgid "Disabled" msgstr "Uitgeschakeld" #: ../../WPrefs.app/Preferences.c:53 msgid "incomplete window titles" msgstr "onvolledige venstertitels" #: ../../WPrefs.app/Preferences.c:54 msgid "miniwindow titles" msgstr "minivenster-titels" #: ../../WPrefs.app/Preferences.c:55 msgid "application/dock icons" msgstr "programma-/dokiconen" #: ../../WPrefs.app/Preferences.c:56 msgid "internal help" msgstr "interne hulp" #: ../../WPrefs.app/Preferences.c:65 msgid "Disable AppIcon bounce" msgstr "Schakel stuiteren icoon uit" #: ../../WPrefs.app/Preferences.c:66 msgid "By default, the AppIcon bounces when the application is launched" msgstr "" "Standaard stuitert 't programma-icoon,\n" "wanneer 't programma wordt opgestart." #: ../../WPrefs.app/Preferences.c:68 msgid "Bounce when the application wants attention" msgstr "Stuiter als 't programma aandacht wil" #: ../../WPrefs.app/Preferences.c:71 msgid "Raise AppIcon when bouncing" msgstr "Verhoog icoon bij stuiteren" #: ../../WPrefs.app/Preferences.c:72 msgid "" "Otherwise you will not see it bouncing if\n" "there is a window in front of the AppIcon" msgstr "" "Anders zult u 't niet zien stuiteren, als er\n" "'n venster voor 't programma-icoon zit." #: ../../WPrefs.app/Preferences.c:122 #, c-format msgid "1 pixel" msgstr "1 pixel" #. 2-4 #: ../../WPrefs.app/Preferences.c:125 #, c-format msgid "%i pixels" msgstr "%i pixels" #. >4 #: ../../WPrefs.app/Preferences.c:128 #, c-format msgid "%i pixels " msgstr "%i pixels " #: ../../WPrefs.app/Preferences.c:236 msgid "Size Display" msgstr "Afmetingenweergave" #: ../../WPrefs.app/Preferences.c:238 msgid "" "The position or style of the window size\n" "display that's shown when a window is resized." msgstr "" "De plaats of stijl van de vensterafmetingenweergave,\n" "die wordt getoond als 'n venster wordt vergroot." #: ../../WPrefs.app/Preferences.c:253 msgid "Position Display" msgstr "Positieweergave" #: ../../WPrefs.app/Preferences.c:255 msgid "" "The position or style of the window position\n" "display that's shown when a window is moved." msgstr "" "De plaats of stijl van de vensterpositieweergave,\n" "die wordt getoond als 'n venster wordt verplaatst." #: ../../WPrefs.app/Preferences.c:270 msgid "Show balloon for..." msgstr "Toon ballon voor..." #: ../../WPrefs.app/Preferences.c:285 msgid "AppIcon bouncing" msgstr "Stuiteren van programma-icoon" #: ../../WPrefs.app/Preferences.c:307 msgid "Workspace border" msgstr "Werkruimterand" #: ../../WPrefs.app/Preferences.c:323 msgid "Left/Right" msgstr "Links/rechts" #: ../../WPrefs.app/Preferences.c:328 msgid "Top/Bottom" msgstr "Boven/onder" #: ../../WPrefs.app/Preferences.c:344 msgid "Miscellaneous Ergonomic Preferences" msgstr "Allerlei gebruiksvriendelijke voorkeuren" #: ../../WPrefs.app/Preferences.c:345 msgid "" "Various settings like balloon text, geometry\n" "displays etc." msgstr "" "Verschillende instellingen zoals ballontekst,\n" "verhouding van weergaven enz." #: ../../WPrefs.app/TexturePanel.c:296 msgid "Saturation" msgstr "Verzadiging" #: ../../WPrefs.app/TexturePanel.c:298 msgid "Brightness" msgstr "Helderheid" #: ../../WPrefs.app/TexturePanel.c:343 ../../WPrefs.app/TexturePanel.c:349 msgid "Hue" msgstr "Tint" #: ../../WPrefs.app/TexturePanel.c:582 msgid "Could not load the selected file: " msgstr "Kon 't geselecteerde bestand niet laden: " #: ../../WPrefs.app/TexturePanel.c:632 msgid "Open Image" msgstr "Open afbeelding" #: ../../WPrefs.app/TexturePanel.c:662 msgid "The selected file does not contain a supported image." msgstr "'t Geselecteerde bestand bevat geen ondersteunde afbeelding." #: ../../WPrefs.app/TexturePanel.c:995 #, c-format msgid "error creating texture %s" msgstr "fout bij aanmaken textuur %s" #: ../../WPrefs.app/TexturePanel.c:1157 msgid "Texture Panel" msgstr "Texturen" #: ../../WPrefs.app/TexturePanel.c:1164 msgid "Texture Name" msgstr "Textuurnaam" #: ../../WPrefs.app/TexturePanel.c:1176 msgid "Solid Color" msgstr "Effenkleur" #: ../../WPrefs.app/TexturePanel.c:1177 msgid "Gradient Texture" msgstr "Kleurverloop" #: ../../WPrefs.app/TexturePanel.c:1178 msgid "Simple Gradient Texture" msgstr "Eenvoudig kleurverloop" #: ../../WPrefs.app/TexturePanel.c:1179 msgid "Textured Gradient" msgstr "Getextureerd kleurverloop" #: ../../WPrefs.app/TexturePanel.c:1180 msgid "Image Texture" msgstr "Afbeeldingstextuur" #: ../../WPrefs.app/TexturePanel.c:1188 msgid "Default Color" msgstr "Standaardkleur" #: ../../WPrefs.app/TexturePanel.c:1200 msgid "Gradient Colors" msgstr "Kleurverloop" #: ../../WPrefs.app/TexturePanel.c:1289 msgid "Direction" msgstr "Richting" #: ../../WPrefs.app/TexturePanel.c:1317 msgid "Gradient" msgstr "Verloop" #: ../../WPrefs.app/TexturePanel.c:1333 msgid "Gradient Opacity" msgstr "Doorzichtigheidsverloop" #: ../../WPrefs.app/TexturePanel.c:1373 msgid "Image" msgstr "Afbeelding" #: ../../WPrefs.app/TexturePanel.c:1393 msgid "Browse..." msgstr "Bladeren..." #: ../../WPrefs.app/TexturePanel.c:1405 msgid "Tile" msgstr "Tegelen" #: ../../WPrefs.app/TexturePanel.c:1406 msgid "Scale" msgstr "Schalen" #: ../../WPrefs.app/TexturePanel.c:1408 msgid "Maximize" msgstr "Maximaliseren" #: ../../WPrefs.app/TexturePanel.c:1409 msgid "Fill" msgstr "Vullen" #: ../../WPrefs.app/WPrefs.c:212 ../../WPrefs.app/WPrefs.c:282 msgid "Window Maker Preferences" msgstr "Window Maker-voorkeuren" #: ../../WPrefs.app/WPrefs.c:216 msgid "Preferences" msgstr "Voorkeuren" #: ../../WPrefs.app/WPrefs.c:235 msgid "Revert Page" msgstr "Pagina herstellen" #: ../../WPrefs.app/WPrefs.c:241 msgid "Revert All" msgstr "Alles herstellen" #: ../../WPrefs.app/WPrefs.c:247 msgid "Save" msgstr "Opslaan" #: ../../WPrefs.app/WPrefs.c:259 msgid "Balloon Help" msgstr "Ballonhulp" #: ../../WPrefs.app/WPrefs.c:289 #, c-format msgid "Version %s" msgstr "Versie %s" #: ../../WPrefs.app/WPrefs.c:296 msgid "Starting..." msgstr "Starten..." #: ../../WPrefs.app/WPrefs.c:383 #, c-format msgid "could not locate image file %s" msgstr "kon afbeeldingsbestand %s niet lokaliseren" #: ../../WPrefs.app/WPrefs.c:437 #, c-format msgid "could not process icon %s: %s" msgstr "kon icoon %s niet verwerken: %s" #: ../../WPrefs.app/WPrefs.c:537 #, c-format msgid "could not load image file %s:%s" msgstr "kon afbeeldingsbestand %s niet laden:%s" #: ../../WPrefs.app/WPrefs.c:554 msgid "Loading Window Maker configuration files..." msgstr "Laden Window Maker-configuratiebestanden..." #: ../../WPrefs.app/WPrefs.c:558 msgid "Initializing configuration panels..." msgstr "Initialiseren configuratiepanelen..." #: ../../WPrefs.app/WPrefs.c:616 ../../WPrefs.app/WPrefs.c:698 #, c-format msgid "Window Maker domain (%s) is corrupted!" msgstr "Window Maker-domein (%s) is beschadigd!" #: ../../WPrefs.app/WPrefs.c:620 #, c-format msgid "Could not load Window Maker domain (%s) from defaults database." msgstr "Kon Window Maker-domein (%s) niet laden uit instellingendatabase." #: ../../WPrefs.app/WPrefs.c:635 msgid "could not extract version information from Window Maker" msgstr "kon versie-informatie niet afleiden uit Window Maker" #: ../../WPrefs.app/WPrefs.c:636 msgid "Make sure wmaker is in your search path." msgstr "Zorg ervoor dat 'wmaker' in uw zoekpad zit." #: ../../WPrefs.app/WPrefs.c:640 msgid "" "Could not extract version from Window Maker. Make sure it is correctly " "installed and is in your PATH environment variable." msgstr "" "Kon versie niet afleiden uit Window Maker. Zorg ervoor dat 't correct is " "geïnstalleerd, en in uw PATH-omgevingsvariabele zit." #: ../../WPrefs.app/WPrefs.c:650 msgid "" "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." msgstr "" "Kon versie niet afleiden uit Window Maker. Zorg ervoor dat 't correct is " "geïnstalleerd, en 't pad waar 't is geïnstalleerd in de PATH-" "omgevingsvariabele zit." #: ../../WPrefs.app/WPrefs.c:657 #, c-format msgid "" "WPrefs only supports Window Maker 0.18.0 or newer.\n" "The version installed is %i.%i.%i\n" msgstr "" "WPrefs ondersteunt alleen Window Maker 0.18.0 of nieuwer.\n" "De geïnstalleerde versie is %i.%i.%i\n" #: ../../WPrefs.app/WPrefs.c:666 #, 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, die op uw systeem is geïnstalleerd, wordt niet " "volledig ondersteund door deze versie van WPrefs." #: ../../WPrefs.app/WPrefs.c:679 #, c-format msgid "could not run \"%s --global_defaults_path\"." msgstr "kon \"%s --global_defaults_path\" niet uitvoeren." #: ../../WPrefs.app/WPrefs.c:702 #, c-format msgid "Could not load global Window Maker domain (%s)." msgstr "Kon algemeen Window Maker-domein (%s) niet laden." #: ../../WPrefs.app/WPrefs.c:922 #, c-format msgid "bad speed value for option %s; using default Medium" msgstr "verkeerde snelheidswaarde voor optie %s; gebruikt standaard Medium" #: ../../WPrefs.app/WindowHandling.c:88 msgid "Automatic" msgstr "Automatisch" #: ../../WPrefs.app/WindowHandling.c:89 msgid "Random" msgstr "Willekeurig" #: ../../WPrefs.app/WindowHandling.c:90 msgid "Manual" msgstr "Handmatig" #: ../../WPrefs.app/WindowHandling.c:91 msgid "Cascade" msgstr "Trapsgewijs" #: ../../WPrefs.app/WindowHandling.c:92 msgid "Smart" msgstr "Slim" #: ../../WPrefs.app/WindowHandling.c:100 msgid "...changes its position (normal behavior)" msgstr "...verandert z'n plaats (normaal gedrag)" #: ../../WPrefs.app/WindowHandling.c:101 msgid "...restores its unmaximized geometry" msgstr "...herstelt z'n gedemaximaliseerde grootte" #: ../../WPrefs.app/WindowHandling.c:102 msgid "...considers the window now unmaximized" msgstr "...beschouwt 't venster nú gedemaximaliseerd" #: ../../WPrefs.app/WindowHandling.c:103 msgid "...does not move the window" msgstr "...verplaatst 't venster niet" #: ../../WPrefs.app/WindowHandling.c:178 ../../WPrefs.app/WindowHandling.c:194 #, c-format msgid "bad option value %s in WindowPlacement. Using default value" msgstr "verkeerde optiewaarde %s in WindowPlacement. Gebruikt standaardwaarde" #: ../../WPrefs.app/WindowHandling.c:214 msgid "invalid data in option WindowPlaceOrigin. Using default (0,0)" msgstr "ongeldige data in optie WindowPlaceOrigin. Gebruikt standaard (0,0)" #: ../../WPrefs.app/WindowHandling.c:310 msgid "Window Placement" msgstr "Vensterplaatsing" #: ../../WPrefs.app/WindowHandling.c:311 msgid "" "How to place windows when they are first put\n" "on screen." msgstr "" "Hoe vensters te plaatsen, wanneer ze voor 't\n" "eerst op 't scherm worden gezet." #: ../../WPrefs.app/WindowHandling.c:325 msgid "Origin:" msgstr "Begin:" #: ../../WPrefs.app/WindowHandling.c:406 msgid "Opaque Move/Resize" msgstr "Ondoorzichtig verpl./gr." #: ../../WPrefs.app/WindowHandling.c:407 msgid "" "Whether the window contents or only a frame should\n" "be displayed during a move or resize.\n" msgstr "" "Of de vensterinhoud, of alleen 'n kader moet worden\n" "weergegeven tijdens verplaatsen of vergroten.\n" #: ../../WPrefs.app/WindowHandling.c:474 msgid "by keyboard" msgstr "met toetsenbord" #: ../../WPrefs.app/WindowHandling.c:476 msgid "" "When selected, moving or resizing windows\n" "using keyboard shortcuts will also display its\n" "content instead of just a frame." msgstr "" "Indien aangevinkt, zal vensters verplaatsen\n" "of vergroten met sneltoetsen ook de inhoud\n" "weergeven, in plaats van alleen 'n kader." #: ../../WPrefs.app/WindowHandling.c:487 msgid "When maximizing..." msgstr "Bij maximaliseren..." #: ../../WPrefs.app/WindowHandling.c:490 msgid "...do not cover:" msgstr "...niet bedekken:" #: ../../WPrefs.app/WindowHandling.c:497 msgid "Icons" msgstr "iconen" #: ../../WPrefs.app/WindowHandling.c:502 msgid "The dock" msgstr "'t Dok" #: ../../WPrefs.app/WindowHandling.c:510 msgid "Mod+Wheel" msgstr "'Mod'+wiel" #: ../../WPrefs.app/WindowHandling.c:513 msgid "Resize increment:" msgstr "Vergrootstap:" #: ../../WPrefs.app/WindowHandling.c:534 msgid "Edge Resistance" msgstr "Kantweerstand" #: ../../WPrefs.app/WindowHandling.c:536 msgid "" "Edge resistance will make windows `resist'\n" "being moved further for the defined threshold\n" "when moved against other windows or the edges\n" "of the screen." msgstr "" "Kantweerstand laat vensters 'weerstand' bieden om\n" "verder verplaatst te worden, tot de drempelwaarde,\n" "indien geplaatst tegen andere vensters of de\n" "kanten van 't scherm." #: ../../WPrefs.app/WindowHandling.c:555 msgid "Resist" msgstr "Stoot af" #: ../../WPrefs.app/WindowHandling.c:560 msgid "Attract" msgstr "Trek aan" #: ../../WPrefs.app/WindowHandling.c:569 msgid "Dragging a maximized window..." msgstr "Verslepen van 'n gemaximaliseerd venster..." #: ../../WPrefs.app/WindowHandling.c:598 msgid "Window Handling Preferences" msgstr "Vensterbehandelingsvoorkeuren" #: ../../WPrefs.app/WindowHandling.c:600 msgid "" "Window handling options. Initial placement style\n" "edge resistance, opaque move etc." msgstr "" "Vensterbehandelingsopties. Initiële plaatsingsstijl,\n" "kantweerstand, ondoorzichtig verplaatsen enz." #: ../../WPrefs.app/Workspace.c:118 msgid "Workspace Navigation" msgstr "Werkruimtenavigatie" #: ../../WPrefs.app/Workspace.c:123 msgid "Wrap to the first workspace from the last workspace" msgstr "Omslaan naar de eerste werkruimte, vanaf de laatste werkruimte" #: ../../WPrefs.app/Workspace.c:139 msgid "Switch workspaces while dragging windows" msgstr "Van werkruimte wisselen bij vensters verslepen" #: ../../WPrefs.app/Workspace.c:155 msgid "Automatically create new workspaces" msgstr "Vanzelf nieuwe werkruimten aanmaken" #. WMSetLabelTextAlignment(panel->posL, WARight); #: ../../WPrefs.app/Workspace.c:172 msgid "Position of workspace name display" msgstr "Plaats van werkruimtenaamweergave" #: ../../WPrefs.app/Workspace.c:188 msgid "Disable" msgstr "Uitschakelen" #: ../../WPrefs.app/Workspace.c:190 msgid "Top" msgstr "Boven" #: ../../WPrefs.app/Workspace.c:191 msgid "Bottom" msgstr "Onder" #: ../../WPrefs.app/Workspace.c:192 msgid "Top/Left" msgstr "Linksboven" #: ../../WPrefs.app/Workspace.c:193 msgid "Top/Right" msgstr "Rechtsboven" #: ../../WPrefs.app/Workspace.c:194 msgid "Bottom/Left" msgstr "Linksonder" #: ../../WPrefs.app/Workspace.c:195 msgid "Bottom/Right" msgstr "Rechtsonder" #: ../../WPrefs.app/Workspace.c:224 msgid "Workspace Preferences" msgstr "Werkruimtevoorkeuren" #: ../../WPrefs.app/Workspace.c:226 msgid "" "Workspace navigation features\n" "and workspace name display settings." msgstr "" "Navigatiekenmerken en naamweergave-\n" "instellingen van de werkruimte." #: ../../WPrefs.app/main.c:62 #, c-format msgid "usage: %s [options]\n" msgstr "gebruik: %s [opties]\n" #: ../../WPrefs.app/main.c:63 msgid "options:" msgstr "opties:" #: ../../WPrefs.app/main.c:64 msgid " -display <display>\tdisplay to be used" msgstr " -display <display>\tte gebruiken scherm" #: ../../WPrefs.app/main.c:65 msgid " --version\t\tprint version number and exit" msgstr " --version\t\tversienummer afdrukken, en afsluiten" #: ../../WPrefs.app/main.c:66 msgid " --help\t\tprint this message and exit" msgstr " --help\t\tdeze boodschap afdrukken, en afsluiten" #: ../../WPrefs.app/main.c:133 #, c-format msgid "too few arguments for %s" msgstr "te weinig argumenten voor %s" #: ../../WPrefs.app/main.c:155 msgid "X server does not support locale" msgstr "X-server ondersteunt lokalisatie niet" #: ../../WPrefs.app/main.c:158 msgid "cannot set locale modifiers" msgstr "kan lokalisatiemodificators niet instellen" #: ../../WPrefs.app/main.c:164 #, c-format msgid "could not open display %s" msgstr "kon scherm %s niet openen" #: ../../WPrefs.app/main.c:172 msgid "could not initialize application" msgstr "kon programma niet initialiseren" #: ../../WPrefs.app/xmodifier.c:125 #, c-format msgid "%s (0x%x) generates %s which is generated by %s" msgstr "%s (0x%x) genereert %s die door %s wordt gegenereerd" #: ../../WPrefs.app/xmodifier.c:129 ../../WPrefs.app/xmodifier.c:134 #, c-format msgid "%s (0x%x) generates %s which is nonsensical" msgstr "%s (0x%x) genereert %s, wat onzinnig is" #: ../../WPrefs.app/xmodifier.c:139 #, c-format msgid "%s (0x%x) generates both %s and %s which is nonsensical" msgstr "%s (0x%x) genereert zowel %s als %s, wat onzinnig is" #: ../../WPrefs.app/xmodifier.c:160 msgid "XGetModifierMapping returned NULL, there is no modifier or no memory" msgstr "" #: ../../WPrefs.app/xmodifier.c:268 #, c-format msgid "%s is being used for both %s and %s" msgstr "%s wordt voor zowel %s als %s gebruikt" # Keep next entries for KeyboardSettings.c #~ msgid "Initial Key Repeat" #~ msgstr "Initiële toetsherhaling" #~ msgid "Key Repeat Rate" #~ msgstr "Toetsherhaalsnelheid" #~ msgid "Type here to test" #~ msgstr "Typ hier om te testen" #~ msgid "Keyboard Preferences" #~ msgstr "Toetsenbordvoorkeuren" #~ msgid "Not done" #~ msgstr "Niet klaar" # Keep next entries for Themes.c #~ msgid "Set" #~ msgstr "Instellen" #~ msgid "Stop" #~ msgstr "Stop" #~ msgid "Download" #~ msgstr "Downloaden" #~ msgid "Save Current Theme" #~ msgstr "Huidig thema opslaan" #~ msgid "Load" #~ msgstr "Laden" #~ msgid "Install" #~ msgstr "Installeren" #~ msgid "Tile of The Day" #~ msgstr "Tegel van de dag" #~ msgid "Bar of The Day" #~ msgstr "Balk van de dag" �����������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/Makefile.in�����������������������������������������������������������0000644�0001750�0001750�00000100627�13642360054�015031� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ wpexecbin_PROGRAMS = WPrefs$(EXEEXT) subdir = WPrefs.app ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ $(top_srcdir)/m4/ax_pthread.m4 \ $(top_srcdir)/m4/ld-version-script.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/windowmaker.m4 \ $(top_srcdir)/m4/wm_attributes.m4 \ $(top_srcdir)/m4/wm_cflags_check.m4 \ $(top_srcdir)/m4/wm_i18n.m4 \ $(top_srcdir)/m4/wm_imgfmt_check.m4 \ $(top_srcdir)/m4/wm_libexif.m4 $(top_srcdir)/m4/wm_libmath.m4 \ $(top_srcdir)/m4/wm_prog_cc_c11.m4 \ $(top_srcdir)/m4/wm_xext_check.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(wpexecbindir)" "$(DESTDIR)$(wpdatadir)" PROGRAMS = $(wpexecbin_PROGRAMS) am_WPrefs_OBJECTS = main.$(OBJEXT) WPrefs.$(OBJEXT) \ Appearance.$(OBJEXT) Configurations.$(OBJEXT) Docks.$(OBJEXT) \ Expert.$(OBJEXT) Focus.$(OBJEXT) FontSimple.$(OBJEXT) \ Icons.$(OBJEXT) KeyboardShortcuts.$(OBJEXT) Menu.$(OBJEXT) \ MenuPreferences.$(OBJEXT) MouseSettings.$(OBJEXT) \ Paths.$(OBJEXT) Preferences.$(OBJEXT) TexturePanel.$(OBJEXT) \ WindowHandling.$(OBJEXT) Workspace.$(OBJEXT) double.$(OBJEXT) \ editmenu.$(OBJEXT) xmodifier.$(OBJEXT) WPrefs_OBJECTS = $(am_WPrefs_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/Appearance.Po \ ./$(DEPDIR)/Configurations.Po ./$(DEPDIR)/Docks.Po \ ./$(DEPDIR)/Expert.Po ./$(DEPDIR)/Focus.Po \ ./$(DEPDIR)/FontSimple.Po ./$(DEPDIR)/Icons.Po \ ./$(DEPDIR)/KeyboardShortcuts.Po ./$(DEPDIR)/Menu.Po \ ./$(DEPDIR)/MenuPreferences.Po ./$(DEPDIR)/MouseSettings.Po \ ./$(DEPDIR)/Paths.Po ./$(DEPDIR)/Preferences.Po \ ./$(DEPDIR)/TexturePanel.Po ./$(DEPDIR)/WPrefs.Po \ ./$(DEPDIR)/WindowHandling.Po ./$(DEPDIR)/Workspace.Po \ ./$(DEPDIR)/double.Po ./$(DEPDIR)/editmenu.Po \ ./$(DEPDIR)/main.Po ./$(DEPDIR)/xmodifier.Po am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(WPrefs_SOURCES) DIST_SOURCES = $(WPrefs_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } DATA = $(wpdata_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir distdir-am am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp README DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ GFXLIBS = @GFXLIBS@ GREP = @GREP@ HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLIBS = @INTLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBBSD = @LIBBSD@ LIBEXIF = @LIBEXIF@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXINERAMA = @LIBXINERAMA@ LIBXMU = @LIBXMU@ LIBXRANDR = @LIBXRANDR@ LINGUAS = @LINGUAS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAGICKFLAGS = @MAGICKFLAGS@ MAGICKLIBS = @MAGICKLIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MANLANGDIRS = @MANLANGDIRS@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOLIBS = @PANGOLIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILMOFILES = @UTILMOFILES@ VERSION = @VERSION@ WINGSMOFILES = @WINGSMOFILES@ WINGS_VERSION = @WINGS_VERSION@ WMAKERMOFILES = @WMAKERMOFILES@ WPREFSMOFILES = @WPREFSMOFILES@ WRASTER_VERSION = @WRASTER_VERSION@ WUTIL_VERSION = @WUTIL_VERSION@ XCFLAGS = @XCFLAGS@ XFTCONFIG = @XFTCONFIG@ XFTFLAGS = @XFTFLAGS@ XFTLIBS = @XFTLIBS@ XGETTEXT = @XGETTEXT@ XLFLAGS = @XLFLAGS@ XLIBS = @XLIBS@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBRARY_PATH = @X_LIBRARY_PATH@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ defsdatadir = @defsdatadir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ inc_search_path = @inc_search_path@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lcov_output_directory = @lcov_output_directory@ lib_search_path = @lib_search_path@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pixmapdir = @pixmapdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ wprefs_bindir = @wprefs_bindir@ wprefs_datadir = @wprefs_datadir@ SUBDIRS = xpm tiff po AUTOMAKE_OPTIONS = wpexecbindir = @wprefs_bindir@ wpdatadir = @wprefs_datadir@ wpdata_DATA = WPrefs.tiff WPrefs.xpm EXTRA_DIST = $(wpdata_DATA) \ KeyboardSettings.c \ Themes.c WPrefs_SOURCES = \ main.c \ WPrefs.c \ WPrefs.h \ Appearance.c \ Configurations.c \ Docks.c \ Expert.c \ Focus.c \ FontSimple.c \ Icons.c \ KeyboardShortcuts.c \ Menu.c \ MenuPreferences.c \ MouseSettings.c \ Paths.c \ Preferences.c \ TexturePanel.c \ TexturePanel.h \ WindowHandling.c \ Workspace.c \ double.c \ editmenu.c \ editmenu.h \ xmodifier.c # not_yet_fully_implemented #WPrefs_SOURCES += \ # KeyboardSettings.c \ # Themes.c AM_CFLAGS = AM_CPPFLAGS = -DRESOURCE_PATH=\"$(wpdatadir)\" -DWMAKER_RESOURCE_PATH=\"$(pkgdatadir)\" \ -I$(top_srcdir)/wrlib -I$(top_srcdir)/WINGs @HEADER_SEARCH_PATH@ WPrefs_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.la WPrefs_LDADD = \ $(top_builddir)/WINGs/libWINGs.la\ $(top_builddir)/WINGs/libWUtil.la\ $(top_builddir)/wrlib/libwraster.la \ @XLFLAGS@ @XLIBS@ \ @LIBM@ \ @FCLIBS@ \ @INTLIBS@ all: all-recursive .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu WPrefs.app/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu WPrefs.app/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-wpexecbinPROGRAMS: $(wpexecbin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(wpexecbin_PROGRAMS)'; test -n "$(wpexecbindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(wpexecbindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(wpexecbindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ || test -f $$p1 \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(wpexecbindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(wpexecbindir)$$dir" || exit $$?; \ } \ ; done uninstall-wpexecbinPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(wpexecbin_PROGRAMS)'; test -n "$(wpexecbindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(wpexecbindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(wpexecbindir)" && rm -f $$files clean-wpexecbinPROGRAMS: @list='$(wpexecbin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list WPrefs$(EXEEXT): $(WPrefs_OBJECTS) $(WPrefs_DEPENDENCIES) $(EXTRA_WPrefs_DEPENDENCIES) @rm -f WPrefs$(EXEEXT) $(AM_V_CCLD)$(LINK) $(WPrefs_OBJECTS) $(WPrefs_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Appearance.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Configurations.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Docks.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Expert.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Focus.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FontSimple.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Icons.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/KeyboardShortcuts.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Menu.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MenuPreferences.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MouseSettings.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Paths.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Preferences.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TexturePanel.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/WPrefs.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/WindowHandling.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Workspace.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/double.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/editmenu.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmodifier.Po@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @echo '# dummy' >$@-t && $(am__mv) $@-t $@ am--depfiles: $(am__depfiles_remade) .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-wpdataDATA: $(wpdata_DATA) @$(NORMAL_INSTALL) @list='$(wpdata_DATA)'; test -n "$(wpdatadir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(wpdatadir)'"; \ $(MKDIR_P) "$(DESTDIR)$(wpdatadir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(wpdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(wpdatadir)" || exit $$?; \ done uninstall-wpdataDATA: @$(NORMAL_UNINSTALL) @list='$(wpdata_DATA)'; test -n "$(wpdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(wpdatadir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(PROGRAMS) $(DATA) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(wpexecbindir)" "$(DESTDIR)$(wpdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool clean-wpexecbinPROGRAMS \ mostlyclean-am distclean: distclean-recursive -rm -f ./$(DEPDIR)/Appearance.Po -rm -f ./$(DEPDIR)/Configurations.Po -rm -f ./$(DEPDIR)/Docks.Po -rm -f ./$(DEPDIR)/Expert.Po -rm -f ./$(DEPDIR)/Focus.Po -rm -f ./$(DEPDIR)/FontSimple.Po -rm -f ./$(DEPDIR)/Icons.Po -rm -f ./$(DEPDIR)/KeyboardShortcuts.Po -rm -f ./$(DEPDIR)/Menu.Po -rm -f ./$(DEPDIR)/MenuPreferences.Po -rm -f ./$(DEPDIR)/MouseSettings.Po -rm -f ./$(DEPDIR)/Paths.Po -rm -f ./$(DEPDIR)/Preferences.Po -rm -f ./$(DEPDIR)/TexturePanel.Po -rm -f ./$(DEPDIR)/WPrefs.Po -rm -f ./$(DEPDIR)/WindowHandling.Po -rm -f ./$(DEPDIR)/Workspace.Po -rm -f ./$(DEPDIR)/double.Po -rm -f ./$(DEPDIR)/editmenu.Po -rm -f ./$(DEPDIR)/main.Po -rm -f ./$(DEPDIR)/xmodifier.Po -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-wpdataDATA install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-wpexecbinPROGRAMS install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f ./$(DEPDIR)/Appearance.Po -rm -f ./$(DEPDIR)/Configurations.Po -rm -f ./$(DEPDIR)/Docks.Po -rm -f ./$(DEPDIR)/Expert.Po -rm -f ./$(DEPDIR)/Focus.Po -rm -f ./$(DEPDIR)/FontSimple.Po -rm -f ./$(DEPDIR)/Icons.Po -rm -f ./$(DEPDIR)/KeyboardShortcuts.Po -rm -f ./$(DEPDIR)/Menu.Po -rm -f ./$(DEPDIR)/MenuPreferences.Po -rm -f ./$(DEPDIR)/MouseSettings.Po -rm -f ./$(DEPDIR)/Paths.Po -rm -f ./$(DEPDIR)/Preferences.Po -rm -f ./$(DEPDIR)/TexturePanel.Po -rm -f ./$(DEPDIR)/WPrefs.Po -rm -f ./$(DEPDIR)/WindowHandling.Po -rm -f ./$(DEPDIR)/Workspace.Po -rm -f ./$(DEPDIR)/double.Po -rm -f ./$(DEPDIR)/editmenu.Po -rm -f ./$(DEPDIR)/main.Po -rm -f ./$(DEPDIR)/xmodifier.Po -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-wpdataDATA uninstall-wpexecbinPROGRAMS .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--depfiles check check-am clean clean-generic clean-libtool \ clean-wpexecbinPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip install-wpdataDATA install-wpexecbinPROGRAMS \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ uninstall-wpdataDATA uninstall-wpexecbinPROGRAMS .PRECIOUS: Makefile # 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. .NOEXPORT: ���������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/MenuPreferences.c�����������������������������������������������������0000644�0001750�0001750�00000014516�13431646201�016214� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* MenuPreferences.c- menu related preferences * * WPrefs - Window Maker Preferences Program * * Copyright (c) 1998-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "WPrefs.h" typedef struct _Panel { WMBox *box; char *sectionName; char *description; CallbackRec callbacks; WMWidget *parent; WMFrame *scrF; WMButton *scrB[5]; WMFrame *aliF; WMButton *aliyB; WMButton *alinB; WMFrame *optF; WMButton *autoB; WMButton *autoC; WMButton *wrapB; } _Panel; #define ICON_FILE "menuprefs" #define SPEED_IMAGE "speed%i" #define SPEED_IMAGE_S "speed%is" #define MENU_ALIGN1 "menualign1" #define MENU_ALIGN2 "menualign2" static void showData(_Panel * panel) { WMPerformButtonClick(panel->scrB[GetSpeedForKey("MenuScrollSpeed")]); if (GetBoolForKey("AlignSubmenus")) WMPerformButtonClick(panel->aliyB); else WMPerformButtonClick(panel->alinB); WMSetButtonSelected(panel->wrapB, GetBoolForKey("WrapMenus")); WMSetButtonSelected(panel->autoB, GetBoolForKey("ScrollableMenus")); WMSetButtonSelected(panel->autoC, GetBoolForKey("ViKeyMenus")); } static void storeData(_Panel * panel) { int i; for (i = 0; i < wlengthof(panel->scrB); i++) { if (WMGetButtonSelected(panel->scrB[i])) break; } SetSpeedForKey(i, "MenuScrollSpeed"); SetBoolForKey(WMGetButtonSelected(panel->aliyB), "AlignSubmenus"); SetBoolForKey(WMGetButtonSelected(panel->wrapB), "WrapMenus"); SetBoolForKey(WMGetButtonSelected(panel->autoB), "ScrollableMenus"); SetBoolForKey(WMGetButtonSelected(panel->autoC), "ViKeyMenus"); } static void createPanel(Panel * p) { _Panel *panel = (_Panel *) p; WMScreen *scr = WMWidgetScreen(panel->parent); WMPixmap *icon; int i; char *buf1, *buf2; char *path; panel->box = WMCreateBox(panel->parent); WMSetViewExpandsToParent(WMWidgetView(panel->box), 2, 2, 2, 2); /***************** Menu Scroll Speed ****************/ panel->scrF = WMCreateFrame(panel->box); WMResizeWidget(panel->scrF, 235, 90); WMMoveWidget(panel->scrF, 25, 20); WMSetFrameTitle(panel->scrF, _("Menu Scrolling Speed")); buf1 = wmalloc(strlen(SPEED_IMAGE) + 1); buf2 = wmalloc(strlen(SPEED_IMAGE_S) + 1); for (i = 0; i < wlengthof(panel->scrB); i++) { panel->scrB[i] = WMCreateCustomButton(panel->scrF, WBBStateChangeMask); WMResizeWidget(panel->scrB[i], 40, 40); WMMoveWidget(panel->scrB[i], 15 + (40 * i), 30); WMSetButtonBordered(panel->scrB[i], False); WMSetButtonImagePosition(panel->scrB[i], WIPImageOnly); if (i > 0) { WMGroupButtons(panel->scrB[0], panel->scrB[i]); } sprintf(buf1, SPEED_IMAGE, i); sprintf(buf2, SPEED_IMAGE_S, i); path = LocateImage(buf1); if (path) { icon = WMCreatePixmapFromFile(scr, path); if (icon) { WMSetButtonImage(panel->scrB[i], icon); WMReleasePixmap(icon); } else { wwarning(_("could not load icon file %s"), path); } wfree(path); } path = LocateImage(buf2); if (path) { icon = WMCreatePixmapFromFile(scr, path); if (icon) { WMSetButtonAltImage(panel->scrB[i], icon); WMReleasePixmap(icon); } else { wwarning(_("could not load icon file %s"), path); } wfree(path); } } wfree(buf1); wfree(buf2); WMMapSubwidgets(panel->scrF); /***************** Submenu Alignment ****************/ panel->aliF = WMCreateFrame(panel->box); WMResizeWidget(panel->aliF, 220, 90); WMMoveWidget(panel->aliF, 280, 20); WMSetFrameTitle(panel->aliF, _("Submenu Alignment")); panel->alinB = WMCreateButton(panel->aliF, WBTOnOff); WMResizeWidget(panel->alinB, 48, 48); WMMoveWidget(panel->alinB, 56, 25); WMSetButtonImagePosition(panel->alinB, WIPImageOnly); path = LocateImage(MENU_ALIGN1); if (path) { icon = WMCreatePixmapFromFile(scr, path); if (icon) { WMSetButtonImage(panel->alinB, icon); WMReleasePixmap(icon); } else { wwarning(_("could not load icon file %s"), path); } wfree(path); } panel->aliyB = WMCreateButton(panel->aliF, WBTOnOff); WMResizeWidget(panel->aliyB, 48, 48); WMMoveWidget(panel->aliyB, 120, 25); WMSetButtonImagePosition(panel->aliyB, WIPImageOnly); path = LocateImage(MENU_ALIGN2); if (path) { icon = WMCreatePixmapFromFile(scr, path); if (icon) { WMSetButtonImage(panel->aliyB, icon); WMReleasePixmap(icon); } else { wwarning(_("could not load icon file %s"), path); } wfree(path); } WMGroupButtons(panel->alinB, panel->aliyB); WMMapSubwidgets(panel->aliF); /***************** Options ****************/ panel->optF = WMCreateFrame(panel->box); WMResizeWidget(panel->optF, 475, 96); WMMoveWidget(panel->optF, 25, 120); panel->wrapB = WMCreateSwitchButton(panel->optF); WMResizeWidget(panel->wrapB, 440, 32); WMMoveWidget(panel->wrapB, 25, 8); WMSetButtonText(panel->wrapB, _("Always open submenus inside the screen, instead of scrolling.")); panel->autoB = WMCreateSwitchButton(panel->optF); WMResizeWidget(panel->autoB, 440, 32); WMMoveWidget(panel->autoB, 25, 34); WMSetButtonText(panel->autoB, _("Scroll off-screen menus when pointer is moved over them.")); panel->autoC = WMCreateSwitchButton(panel->optF); WMResizeWidget(panel->autoC, 440, 32); WMMoveWidget(panel->autoC, 25, 58); WMSetButtonText(panel->autoC, _("Use h/j/k/l keys to select menu options.")); WMMapSubwidgets(panel->optF); WMRealizeWidget(panel->box); WMMapSubwidgets(panel->box); showData(panel); } Panel *InitMenuPreferences(WMWidget *parent) { _Panel *panel; panel = wmalloc(sizeof(_Panel)); panel->sectionName = _("Menu Preferences"); panel->description = _("Menu usability related options. Scrolling speed,\n" "alignment of submenus etc."); panel->parent = parent; panel->callbacks.createWidgets = createPanel; panel->callbacks.updateDomain = storeData; AddSection(panel, ICON_FILE); return panel; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/README����������������������������������������������������������������0000644�0001750�0001750�00000007512�13431646201�013640� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ WPrefs.app ========== The WindowMaker Prerefences Application WPrefs.app is the preferences "editor" for the WindowMaker window manager. It can be used to set most of the preference options of WindowMaker and define it's applications menu. It also can change some settings that do not belong to WindowMaker. Although WPrefs.app is designed to be easy to use, you should read the user guide to be fully aware of all available options and other features of WindowMaker that are not related to configuration. To run WPrefs, do not put it in your search path. Instead, run it with the full path, like /usr/local/GNUstep/Applications/WPrefs.app/WPrefs Then, dock it's application icon. The dock will automatically detect it's icon and use it. If you change configuration often, you might want to leave WPrefs always running, leaving it hidden while not in use. You can also make it be automatically started with WindowMaker and toggle the Start Hidden option in the attributes panel for the WPrefs window. Of course, it will use some memory, but by leaving it hidden it'll probably be swapped out and stay there until you unhide it. WPrefs is still under development. Some of the configuration options are not yet configurable from WPrefs, notably the appearance related options. It might contain bugs that can corrupt your configuration files, so backup the contents of the ~/GNUstep/Defaults directory before using it. License ------- Like Window Maker, WPrefs is distributed with through the General Public License (as stated in the file COPYING). Notes ----- The mouse speed configuration is saved as a call for xset in ~/G/D/L/W/autostart. WindowMaker calls this file when it is started. If you don't want or can't use the menu definition section, do not open it's section (or if you do open it, do not Save), or WPrefs will overwrite your ~/G/D/WMRootMenu file. Only options that have different values than what is found in the system-wide configuration file is saved. WPrefs only supports property list menus. If you have a plain text file menu, it will not be read by WPrefs. You can either recreate the menu from scratch or not use WPrefs for menu definition. The old menu will not be overwritten if you recreate it. Build ----- WPrefs will be built automatically and installed with the rest of WindowMaker. Customized Installation ----------------------- By default, WPrefs.app will be installed in the GNUstep applications directory, which is /usr/local/GNUstep/Applications. If you want to install it somewhere else, like in /some_weird_path/Applications, set the GNUSTEP_LOCAL_ROOT environment variable to some_weird_path before running configure for WindowMaker. You can also configure Window Maker supplying the --with-gnustepdir option to configure, like ./configure --with-gnustepdir=/usr/GNUstep/Applications If you change your mind after installing, you can move the .app directory to one of the following GNUstep/Applications directories: /usr/GNUstep/Applications OR /usr/local/GNUstep/Applications OR ~/GNUstep/Applications Credits ------- User interface design, programming and a few icons: Alfredo K. Kojima <kojima@windowmaker.info> Additional programming: James Thompson <jamest@math.ksu.edu> Dan Pascu <dan@windowmaker.info> ]d <id@windowmaker.info> Icon and image artwork: Jesse Kaufman <glandix@linuxfreak.com> Marco van Hylckama Vlieg <marco@windowmaker.info> See details in README in tiff/ directory WindowMaker ----------- If for some weird reason you end up with this preferences program and don't have Window Maker yet, you can get more information about it at http://windowmaker.info and download it at ftp://ftp.windowmaker.info Contact ------- Send comments and bug reports to kojima@windowmaker.info Use the WindowMaker BUGFORM to report bugs. ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/double.c��������������������������������������������������������������0000644�0001750�0001750�00000006673�13431646201�014405� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ /* * Widget for testing double-clicks * */ #include <WINGs/WINGsP.h> #include "WPrefs.h" typedef struct W_DoubleTest { W_Class widgetClass; WMView *view; WMHandlerID timer; char on; char active; char *text; } _DoubleTest; /* some forward declarations */ static void destroyDoubleTest(_DoubleTest * dPtr); static void paintDoubleTest(_DoubleTest * dPtr); static void handleEvents(XEvent * event, void *data); static void handleActionEvents(XEvent * event, void *data); /* our widget class ID */ static W_Class DoubleTestClass = 0; /* * Initializer for our widget. Must be called before creating any * instances of the widget. */ W_Class InitDoubleTest(void) { /* register our widget with WINGs and get our widget class ID */ if (!DoubleTestClass) { DoubleTestClass = W_RegisterUserWidget(); } return DoubleTestClass; } /* * Our widget fabrication plant. */ DoubleTest *CreateDoubleTest(WMWidget * parent, const char *text) { DoubleTest *dPtr; if (!DoubleTestClass) InitDoubleTest(); /* allocate some storage for our new widget instance */ dPtr = wmalloc(sizeof(DoubleTest)); /* set the class ID */ dPtr->widgetClass = DoubleTestClass; dPtr->view = W_CreateView(W_VIEW(parent)); if (!dPtr->view) { wfree(dPtr); return NULL; } /* always do this */ dPtr->view->self = dPtr; dPtr->text = wstrdup(text); WMCreateEventHandler(dPtr->view, ExposureMask /* this allows us to know when we should paint */ | StructureNotifyMask, /* this allows us to know things like when we are destroyed */ handleEvents, dPtr); WMCreateEventHandler(dPtr->view, ButtonPressMask, handleActionEvents, dPtr); return dPtr; } static void paintDoubleTest(_DoubleTest * dPtr) { W_Screen *scr = dPtr->view->screen; if (dPtr->active) { XFillRectangle(scr->display, dPtr->view->window, WMColorGC(scr->white), 0, 0, dPtr->view->size.width, dPtr->view->size.height); } else { XClearWindow(scr->display, dPtr->view->window); } W_DrawRelief(scr, dPtr->view->window, 0, 0, dPtr->view->size.width, dPtr->view->size.height, dPtr->on ? WRSunken : WRRaised); if (dPtr->text) { int y; y = (dPtr->view->size.height - scr->normalFont->height) / 2; W_PaintText(dPtr->view, dPtr->view->window, scr->normalFont, dPtr->on, dPtr->on + y, dPtr->view->size.width, WACenter, scr->black, False, dPtr->text, strlen(dPtr->text)); } } static void handleEvents(XEvent * event, void *data) { _DoubleTest *dPtr = (_DoubleTest *) data; switch (event->type) { case Expose: if (event->xexpose.count != 0) break; paintDoubleTest(dPtr); break; case DestroyNotify: destroyDoubleTest(dPtr); break; } } static void deactivate(void *data) { _DoubleTest *dPtr = (_DoubleTest *) data; if (dPtr->active) dPtr->active = 0; paintDoubleTest(dPtr); dPtr->timer = NULL; } static void handleActionEvents(XEvent * event, void *data) { _DoubleTest *dPtr = (_DoubleTest *) data; switch (event->type) { case ButtonPress: if (WMIsDoubleClick(event)) { if (dPtr->timer) WMDeleteTimerHandler(dPtr->timer); dPtr->timer = NULL; dPtr->on = !dPtr->on; dPtr->active = 0; paintDoubleTest(dPtr); } else { dPtr->timer = WMAddTimerHandler(WINGsConfiguration.doubleClickDelay, deactivate, dPtr); dPtr->active = 1; paintDoubleTest(dPtr); } break; } } static void destroyDoubleTest(_DoubleTest * dPtr) { if (dPtr->timer) WMDeleteTimerHandler(dPtr->timer); if (dPtr->text) wfree(dPtr->text); wfree(dPtr); } ���������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/Focus.c���������������������������������������������������������������0000644�0001750�0001750�00000024632�13431646201�014205� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Focus.c- input and colormap focus stuff * * WPrefs - Window Maker Preferences Program * * Copyright (c) 1998-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "WPrefs.h" typedef struct _Panel { WMBox *box; char *sectionName; char *description; CallbackRec callbacks; WMWidget *parent; WMFrame *kfocF; WMButton *kfocB[2]; WMFrame *cfocF; WMButton *autB; WMButton *manB; WMFrame *raisF; WMButton *raisB[5]; WMTextField *raisT; WMLabel *raisL; WMFrame *optF; WMButton *ignB; WMButton *newB; WMButton *craisB; char raiseDelaySelected; } _Panel; #define ICON_FILE "windowfocus" #define DELAY_ICON "timer%i" #define DELAY_ICON_S "timer%is" static void showData(_Panel * panel) { char *str; int i; char buffer[32]; str = GetStringForKey("FocusMode"); if (!str) str = "manual"; if (strcasecmp(str, "manual") == 0 || strcasecmp(str, "clicktofocus") == 0) WMSetButtonSelected(panel->kfocB[0], 1); else if (strcasecmp(str, "auto") == 0 || strcasecmp(str, "semiauto") == 0 || strcasecmp(str, "sloppy") == 0) WMSetButtonSelected(panel->kfocB[1], 1); else { wwarning(_("bad option value %s for option FocusMode. Using default Manual"), str); WMSetButtonSelected(panel->kfocB[0], 1); } /**/ 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 Auto"), str); WMPerformButtonClick(panel->manB); } /**/ i = GetIntegerForKey("RaiseDelay"); sprintf(buffer, "%i", i); WMSetTextFieldText(panel->raisT, buffer); switch (i) { case 0: WMPerformButtonClick(panel->raisB[0]); break; case 10: WMPerformButtonClick(panel->raisB[1]); break; case 100: WMPerformButtonClick(panel->raisB[2]); break; case 350: WMPerformButtonClick(panel->raisB[3]); break; case 800: WMPerformButtonClick(panel->raisB[4]); break; } /**/ WMSetButtonSelected(panel->ignB, GetBoolForKey("IgnoreFocusClick")); WMSetButtonSelected(panel->newB, GetBoolForKey("AutoFocus")); WMSetButtonSelected(panel->craisB, GetBoolForKey("CirculateRaise")); } static void storeData(_Panel * panel) { char *str; int i; if (WMGetButtonSelected(panel->kfocB[1])) str = "sloppy"; else str = "manual"; SetStringForKey(str, "FocusMode"); if (WMGetButtonSelected(panel->manB)) { SetStringForKey("manual", "ColormapMode"); } else { SetStringForKey("auto", "ColormapMode"); } str = WMGetTextFieldText(panel->raisT); if (sscanf(str, "%i", &i) != 1) i = 0; SetIntegerForKey(i, "RaiseDelay"); free(str); SetBoolForKey(WMGetButtonSelected(panel->ignB), "IgnoreFocusClick"); SetBoolForKey(WMGetButtonSelected(panel->newB), "AutoFocus"); SetBoolForKey(WMGetButtonSelected(panel->craisB), "CirculateRaise"); } static void pushDelayButton(WMWidget * w, void *data) { _Panel *panel = (_Panel *) data; panel->raiseDelaySelected = 1; if (w == panel->raisB[0]) { WMSetTextFieldText(panel->raisT, _("OFF")); } else if (w == panel->raisB[1]) { WMSetTextFieldText(panel->raisT, "10"); } else if (w == panel->raisB[2]) { WMSetTextFieldText(panel->raisT, "100"); } else if (w == panel->raisB[3]) { WMSetTextFieldText(panel->raisT, "350"); } else if (w == panel->raisB[4]) { WMSetTextFieldText(panel->raisT, "800"); } } static void raiseTextChanged(void *observerData, WMNotification * notification) { _Panel *panel = (_Panel *) observerData; int i; /* Parameter not used, but tell the compiler that it is ok */ (void) notification; if (panel->raiseDelaySelected) { for (i = 0; i < 5; i++) { WMSetButtonSelected(panel->raisB[i], False); } panel->raiseDelaySelected = 0; } } static void createPanel(Panel * p) { _Panel *panel = (_Panel *) p; WMScreen *scr = WMWidgetScreen(panel->parent); int i; char *buf1, *buf2; WMPixmap *icon; WMColor *color; WMFont *font; panel->box = WMCreateBox(panel->parent); WMSetViewExpandsToParent(WMWidgetView(panel->box), 2, 2, 2, 2); /***************** Input Focus Mode *****************/ panel->kfocF = WMCreateFrame(panel->box); WMResizeWidget(panel->kfocF, 240, 125); WMMoveWidget(panel->kfocF, 15, 10); WMSetFrameTitle(panel->kfocF, _("Input Focus Mode")); { WMBox *box = WMCreateBox(panel->kfocF); WMSetViewExpandsToParent(WMWidgetView(box), 10, 15, 10, 10); WMSetBoxHorizontal(box, False); panel->kfocB[0] = WMCreateRadioButton(box); WMSetButtonText(panel->kfocB[0], _("Manual: Click on the window to set " "keyboard input focus")); WMAddBoxSubview(box, WMWidgetView(panel->kfocB[0]), True, True, 20, 0, 0); panel->kfocB[1] = WMCreateRadioButton(box); WMGroupButtons(panel->kfocB[0], panel->kfocB[1]); WMSetButtonText(panel->kfocB[1], _("Auto: Set keyboard input focus to " "the window under the mouse pointer")); WMAddBoxSubview(box, WMWidgetView(panel->kfocB[1]), True, True, 20, 0, 0); WMMapSubwidgets(box); WMMapWidget(box); } /***************** Colormap Installation Mode ****************/ panel->cfocF = WMCreateFrame(panel->box); WMResizeWidget(panel->cfocF, 240, 77); WMMoveWidget(panel->cfocF, 15, 143); WMSetFrameTitle(panel->cfocF, _("Install colormap from the window...")); WMSetBalloonTextForView(_("This option is for screens that can display only a limited number\n" "of colors at a time, so they use an indexed table of colors (called\n" "a ColorMap) that each application customizes for its needs, and\n" "WindowMaker will set the global ColorMap dynamically from the\n" "active application.\n" "You can know the capability of your screen in WindowMaker's info\n" "panel as the 'visual'."), WMWidgetView(panel->cfocF)); panel->manB = WMCreateRadioButton(panel->cfocF); WMResizeWidget(panel->manB, 226, 24); WMMoveWidget(panel->manB, 9, 18); WMSetButtonText(panel->manB, _("...that has the input focus")); panel->autB = WMCreateRadioButton(panel->cfocF); WMResizeWidget(panel->autB, 226, 24); WMMoveWidget(panel->autB, 9, 43); WMSetButtonText(panel->autB, _("...that's under the mouse pointer")); WMGroupButtons(panel->manB, panel->autB); WMMapSubwidgets(panel->cfocF); /***************** Automatic window raise delay *****************/ panel->raisF = WMCreateFrame(panel->box); WMResizeWidget(panel->raisF, 245, 68); WMMoveWidget(panel->raisF, 265, 10); WMSetFrameTitle(panel->raisF, _("Automatic Window Raise Delay")); buf1 = wmalloc(strlen(DELAY_ICON) + 1); buf2 = wmalloc(strlen(DELAY_ICON_S) + 1); for (i = 0; i < 5; i++) { char *path; panel->raisB[i] = WMCreateCustomButton(panel->raisF, WBBStateChangeMask); WMResizeWidget(panel->raisB[i], 25, 25); WMMoveWidget(panel->raisB[i], 12 + (30 * i), 25); WMSetButtonBordered(panel->raisB[i], False); WMSetButtonImagePosition(panel->raisB[i], WIPImageOnly); WMSetButtonAction(panel->raisB[i], pushDelayButton, panel); if (i > 0) WMGroupButtons(panel->raisB[0], panel->raisB[i]); sprintf(buf1, DELAY_ICON, i); sprintf(buf2, DELAY_ICON_S, i); path = LocateImage(buf1); if (path) { icon = WMCreatePixmapFromFile(scr, path); if (icon) { WMSetButtonImage(panel->raisB[i], icon); WMReleasePixmap(icon); } else { wwarning(_("could not load icon file %s"), path); } wfree(path); } path = LocateImage(buf2); if (path) { icon = WMCreatePixmapFromFile(scr, path); if (icon) { WMSetButtonAltImage(panel->raisB[i], icon); WMReleasePixmap(icon); } else { wwarning(_("could not load icon file %s"), path); } wfree(path); } } wfree(buf1); wfree(buf2); panel->raisT = WMCreateTextField(panel->raisF); WMResizeWidget(panel->raisT, 36, 20); WMMoveWidget(panel->raisT, 165, 28); WMAddNotificationObserver(raiseTextChanged, panel, WMTextDidChangeNotification, panel->raisT); color = WMDarkGrayColor(scr); font = WMSystemFontOfSize(scr, 10); panel->raisL = WMCreateLabel(panel->raisF); WMResizeWidget(panel->raisL, 36, 16); WMMoveWidget(panel->raisL, 205, 32); WMSetLabelText(panel->raisL, _("ms")); WMSetLabelTextColor(panel->raisL, color); WMSetLabelFont(panel->raisL, font); WMReleaseColor(color); WMReleaseFont(font); WMMapSubwidgets(panel->raisF); /***************** Options ****************/ panel->optF = WMCreateFrame(panel->box); WMResizeWidget(panel->optF, 245, 132); WMMoveWidget(panel->optF, 265, 88); panel->ignB = WMCreateSwitchButton(panel->optF); WMResizeWidget(panel->ignB, 228, 50-2); WMMoveWidget(panel->ignB, 10, 4); WMSetButtonText(panel->ignB, _("Do not let applications receive the click used to focus windows")); panel->newB = WMCreateSwitchButton(panel->optF); WMResizeWidget(panel->newB, 228, 35); WMMoveWidget(panel->newB, 10, 52); WMSetButtonText(panel->newB, _("Automatically focus new windows")); panel->craisB = WMCreateSwitchButton(panel->optF); WMResizeWidget(panel->craisB, 228, 36); WMMoveWidget(panel->craisB, 10, 87); WMSetButtonText(panel->craisB, _("Raise window when switching focus with keyboard")); WMMapSubwidgets(panel->optF); WMRealizeWidget(panel->box); WMMapSubwidgets(panel->box); showData(panel); } Panel *InitFocus(WMWidget *parent) { _Panel *panel; panel = wmalloc(sizeof(_Panel)); panel->sectionName = _("Window Focus Preferences"); panel->description = _("Keyboard focus switching policy and related options."); panel->parent = parent; panel->callbacks.createWidgets = createPanel; panel->callbacks.updateDomain = storeData; AddSection(panel, ICON_FILE); return panel; } ������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/Paths.c���������������������������������������������������������������0000644�0001750�0001750�00000021221�13431646201�014174� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Paths.c- pixmap/icon paths * * WPrefs - Window Maker Preferences Program * * Copyright (c) 1998-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "WPrefs.h" #include <unistd.h> #include <assert.h> typedef struct _Panel { WMBox *box; char *sectionName; char *description; CallbackRec callbacks; WMWidget *parent; WMTabView *tabv; WMFrame *pixF; WMList *pixL; WMButton *pixaB; WMButton *pixrB; WMFrame *icoF; WMList *icoL; WMButton *icoaB; WMButton *icorB; WMColor *red; WMColor *black; WMColor *white; WMColor *gray; WMFont *font; } _Panel; #define ICON_FILE "paths" static void addPathToList(WMList * list, int index, const char *path) { char *fpath = wexpandpath(path); WMListItem *item; item = WMInsertListItem(list, index, path); if (access(fpath, X_OK) != 0) { item->uflags = 1; } wfree(fpath); } static void showData(_Panel * panel) { WMPropList *array, *val; int i; array = GetObjectForKey("IconPath"); if (!array || !WMIsPLArray(array)) { if (array) wwarning(_("bad value in option IconPath. Using default path list")); addPathToList(panel->icoL, -1, "~/pixmaps"); addPathToList(panel->icoL, -1, "~/GNUstep/Library/Icons"); addPathToList(panel->icoL, -1, "/usr/include/X11/pixmaps"); addPathToList(panel->icoL, -1, "/usr/local/share/WindowMaker/Icons"); addPathToList(panel->icoL, -1, "/usr/local/share/WindowMaker/Pixmaps"); addPathToList(panel->icoL, -1, "/usr/share/WindowMaker/Icons"); } else { for (i = 0; i < WMGetPropListItemCount(array); i++) { val = WMGetFromPLArray(array, i); addPathToList(panel->icoL, -1, WMGetFromPLString(val)); } } array = GetObjectForKey("PixmapPath"); if (!array || !WMIsPLArray(array)) { if (array) wwarning(_("bad value in option PixmapPath. Using default path list")); addPathToList(panel->pixL, -1, "~/pixmaps"); addPathToList(panel->pixL, -1, "~/GNUstep/Library/WindowMaker/Pixmaps"); addPathToList(panel->pixL, -1, "/usr/local/share/WindowMaker/Pixmaps"); } else { for (i = 0; i < WMGetPropListItemCount(array); i++) { val = WMGetFromPLArray(array, i); addPathToList(panel->pixL, -1, WMGetFromPLString(val)); } } } static void pushButton(WMWidget * w, void *data) { _Panel *panel = (_Panel *) data; int i; /* icon paths */ if (w == panel->icorB) { i = WMGetListSelectedItemRow(panel->icoL); if (i >= 0) WMRemoveListItem(panel->icoL, i); } /* pixmap paths */ if (w == panel->pixrB) { i = WMGetListSelectedItemRow(panel->pixL); if (i >= 0) WMRemoveListItem(panel->pixL, i); } } static void browseForFile(WMWidget * w, void *data) { _Panel *panel = (_Panel *) data; WMFilePanel *filePanel; assert(w == panel->icoaB || w == panel->pixaB); filePanel = WMGetOpenPanel(WMWidgetScreen(w)); WMSetFilePanelCanChooseFiles(filePanel, False); if (WMRunModalFilePanelForDirectory(filePanel, panel->parent, "/", _("Select directory"), NULL) == True) { char *str = WMGetFilePanelFileName(filePanel); if (str) { int len = strlen(str); /* Remove the trailing '/' except if the path is exactly / */ if (len > 1 && str[len - 1] == '/') { str[len - 1] = '\0'; len--; } if (len > 0) { WMList *lPtr; int i; if (w == panel->icoaB) lPtr = panel->icoL; else if (w == panel->pixaB) lPtr = panel->pixL; else goto error_unknown_widget; i = WMGetListSelectedItemRow(lPtr); if (i >= 0) i++; addPathToList(lPtr, i, str); WMSetListBottomPosition(lPtr, WMGetListNumberOfRows(lPtr)); } error_unknown_widget: wfree(str); } } } static void paintItem(WMList * lPtr, int index, Drawable d, char *text, int state, WMRect * rect) { int width, height, x, y; _Panel *panel = (_Panel *) WMGetHangedData(lPtr); WMScreen *scr = WMWidgetScreen(lPtr); Display *dpy = WMScreenDisplay(scr); WMColor *backColor = (state & WLDSSelected) ? panel->white : panel->gray; /* Parameter not used, but tell the compiler that it is ok */ (void) index; width = rect->size.width; height = rect->size.height; x = rect->pos.x; y = rect->pos.y; XFillRectangle(dpy, d, WMColorGC(backColor), x, y, width, height); if (state & 1) { WMDrawString(scr, d, panel->red, panel->font, x + 4, y, text, strlen(text)); } else { WMDrawString(scr, d, panel->black, panel->font, x + 4, y, text, strlen(text)); } } static void storeData(_Panel * panel) { WMPropList *list; WMPropList *tmp; int i; char *p; list = WMCreatePLArray(NULL, NULL); for (i = 0; i < WMGetListNumberOfRows(panel->icoL); i++) { p = WMGetListItem(panel->icoL, i)->text; tmp = WMCreatePLString(p); WMAddToPLArray(list, tmp); } SetObjectForKey(list, "IconPath"); list = WMCreatePLArray(NULL, NULL); for (i = 0; i < WMGetListNumberOfRows(panel->pixL); i++) { p = WMGetListItem(panel->pixL, i)->text; tmp = WMCreatePLString(p); WMAddToPLArray(list, tmp); } SetObjectForKey(list, "PixmapPath"); } static void createPanel(Panel * p) { _Panel *panel = (_Panel *) p; WMScreen *scr = WMWidgetScreen(panel->parent); WMTabViewItem *tab; panel->white = WMWhiteColor(scr); panel->black = WMBlackColor(scr); panel->gray = WMGrayColor(scr); panel->red = WMCreateRGBColor(scr, 0xffff, 0, 0, True); panel->font = WMSystemFontOfSize(scr, 12); panel->box = WMCreateBox(panel->parent); WMSetViewExpandsToParent(WMWidgetView(panel->box), 2, 2, 2, 2); panel->tabv = WMCreateTabView(panel->box); WMMoveWidget(panel->tabv, 12, 10); WMResizeWidget(panel->tabv, 500, 215); /* icon path */ panel->icoF = WMCreateFrame(panel->box); WMSetFrameRelief(panel->icoF, WRFlat); WMResizeWidget(panel->icoF, 230, 210); tab = WMCreateTabViewItemWithIdentifier(0); WMSetTabViewItemView(tab, WMWidgetView(panel->icoF)); WMAddItemInTabView(panel->tabv, tab); WMSetTabViewItemLabel(tab, _("Icon Search Paths")); panel->icoL = WMCreateList(panel->icoF); WMResizeWidget(panel->icoL, 480, 147); WMMoveWidget(panel->icoL, 10, 10); WMSetListUserDrawProc(panel->icoL, paintItem); WMHangData(panel->icoL, panel); panel->icoaB = WMCreateCommandButton(panel->icoF); WMResizeWidget(panel->icoaB, 95, 24); WMMoveWidget(panel->icoaB, 293, 165); WMSetButtonText(panel->icoaB, _("Add")); WMSetButtonAction(panel->icoaB, browseForFile, panel); WMSetButtonImagePosition(panel->icoaB, WIPRight); panel->icorB = WMCreateCommandButton(panel->icoF); WMResizeWidget(panel->icorB, 95, 24); WMMoveWidget(panel->icorB, 395, 165); WMSetButtonText(panel->icorB, _("Remove")); WMSetButtonAction(panel->icorB, pushButton, panel); WMMapSubwidgets(panel->icoF); /* pixmap path */ panel->pixF = WMCreateFrame(panel->box); WMSetFrameRelief(panel->pixF, WRFlat); WMResizeWidget(panel->pixF, 230, 210); tab = WMCreateTabViewItemWithIdentifier(0); WMSetTabViewItemView(tab, WMWidgetView(panel->pixF)); WMAddItemInTabView(panel->tabv, tab); WMSetTabViewItemLabel(tab, _("Pixmap Search Paths")); panel->pixL = WMCreateList(panel->pixF); WMResizeWidget(panel->pixL, 480, 147); WMMoveWidget(panel->pixL, 10, 10); WMSetListUserDrawProc(panel->pixL, paintItem); WMHangData(panel->pixL, panel); panel->pixaB = WMCreateCommandButton(panel->pixF); WMResizeWidget(panel->pixaB, 95, 24); WMMoveWidget(panel->pixaB, 293, 165); WMSetButtonText(panel->pixaB, _("Add")); WMSetButtonAction(panel->pixaB, browseForFile, panel); WMSetButtonImagePosition(panel->pixaB, WIPRight); panel->pixrB = WMCreateCommandButton(panel->pixF); WMResizeWidget(panel->pixrB, 95, 24); WMMoveWidget(panel->pixrB, 395, 165); WMSetButtonText(panel->pixrB, _("Remove")); WMSetButtonAction(panel->pixrB, pushButton, panel); WMMapSubwidgets(panel->pixF); WMRealizeWidget(panel->box); WMMapSubwidgets(panel->box); showData(panel); } Panel *InitPaths(WMWidget *parent) { _Panel *panel; panel = wmalloc(sizeof(_Panel)); panel->sectionName = _("Search Path Configuration"); panel->description = _("Search paths to use when looking for pixmaps\n" "and icons."); panel->parent = parent; panel->callbacks.createWidgets = createPanel; panel->callbacks.updateDomain = storeData; AddSection(panel, ICON_FILE); return panel; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/Expert.c��������������������������������������������������������������0000644�0001750�0001750�00000023571�13642357773�014417� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Expert.c- expert user options * * WPrefs - Window Maker Preferences Program * * Copyright (c) 2014 Window Maker Team * Copyright (c) 1998-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "WPrefs.h" /* This structure containts the list of all the check-buttons to display in the * expert tab of the window with the corresponding information for effect */ static const struct { const char *label; /* Text displayed to user */ int def_state; /* True/False: the default value, if not defined in current config */ enum { OPTION_WMAKER, OPTION_WMAKER_ARRAY, OPTION_USERDEF, OPTION_WMAKER_INT } class; const char *op_name; /* The identifier for the option in the config file */ } expert_options[] = { { N_("Disable miniwindows (icons for minimized windows). For use with KDE/GNOME."), /* default: */ False, OPTION_WMAKER, "DisableMiniwindows" }, { N_("Ignore decoration hints for GTK applications."), /* default: */ False, OPTION_WMAKER, "IgnoreGtkHints" }, { N_("Enable workspace pager."), /* default: */ False, OPTION_WMAKER, "EnableWorkspacePager" }, { N_("Do not set non-WindowMaker specific parameters (do not use xset)."), /* default: */ False, OPTION_USERDEF, "NoXSetStuff" }, { N_("Automatically save session when exiting Window Maker."), /* default: */ False, OPTION_WMAKER, "SaveSessionOnExit" }, { N_("Use SaveUnder in window frames, icons, menus and other objects."), /* default: */ False, OPTION_WMAKER, "UseSaveUnders" }, { N_("Disable confirmation panel for the Kill command."), /* default: */ False, OPTION_WMAKER, "DontConfirmKill" }, { N_("Disable selection animation for selected icons."), /* default: */ False, OPTION_WMAKER, "DisableBlinking" }, { N_("Smooth font edges (needs restart)."), /* default: */ True, OPTION_WMAKER, "AntialiasedText" }, { N_("Cycle windows only on the active head."), /* default: */ False, OPTION_WMAKER, "CycleActiveHeadOnly" }, { N_("Ignore minimized windows when cycling."), /* default: */ False, OPTION_WMAKER, "CycleIgnoreMinimized" }, { N_("Show switch panel when cycling windows."), /* default: */ True, OPTION_WMAKER_ARRAY, "SwitchPanelImages" }, { N_("Show workspace title on Clip."), /* default: */ True, OPTION_WMAKER, "ShowClipTitle" }, { N_("Highlight the icon of the application when it has the focus."), /* default: */ True, OPTION_WMAKER, "HighlightActiveApp" }, #ifdef XKB_MODELOCK { N_("Enable keyboard language switch button in window titlebars."), /* default: */ False, OPTION_WMAKER, "KbdModeLock" }, #endif /* XKB_MODELOCK */ { N_("Maximize (snap) a window to edge or corner by dragging."), /* default: */ False, OPTION_WMAKER, "WindowSnapping" }, { N_("Distance from edge to begin window snap."), /* default: */ 1, OPTION_WMAKER_INT, "SnapEdgeDetect" }, { N_("Distance from corner to begin window snap."), /* default: */ 10, OPTION_WMAKER_INT, "SnapCornerDetect" }, { N_("Snapping a window to the top maximizes it to the full screen."), /* default: */ False, OPTION_WMAKER, "SnapToTopMaximizesFullscreen" }, { N_("Allow move half-maximized windows between multiple screens."), /* default: */ False, OPTION_WMAKER, "MoveHalfMaximizedWindowsBetweenScreens" }, { N_("Alternative transitions between states for half maximized windows."), /* default: */ False, OPTION_WMAKER, "AlternativeHalfMaximized" }, { N_("Move mouse pointer with half maximized windows."), /* default: */ False, OPTION_WMAKER, "PointerWithHalfMaxWindows" }, { N_("Open dialogs in the same workspace as their owners."), /* default: */ False, OPTION_WMAKER, "OpenTransientOnOwnerWorkspace" }, { N_("Wrap dock-attached icons around the screen edges."), /* default: */ True, OPTION_WMAKER, "WrapAppiconsInDock" } }; typedef struct _Panel { WMBox *box; char *sectionName; char *description; CallbackRec callbacks; WMWidget *parent; WMButton *swi[wlengthof_nocheck(expert_options)]; WMTextField *textfield[wlengthof_nocheck(expert_options)]; } _Panel; #define ICON_FILE "expert" static void changeIntTextfield(void *data, int delta) { WMTextField *textfield; char *text; int value; textfield = (WMTextField *)data; text = WMGetTextFieldText(textfield); value = atoi(text); value += delta; sprintf(text, "%d", value); WMSetTextFieldText(textfield, text); } static void downButtonCallback(WMWidget *self, void *data) { (void) self; changeIntTextfield(data, -1); } static void upButtonCallback(WMWidget *self, void *data) { (void) self; changeIntTextfield(data, 1); } static void createPanel(Panel *p) { _Panel *panel = (_Panel *) p; WMScrollView *sv; WMFrame *f; WMUserDefaults *udb; int i, state; panel->box = WMCreateBox(panel->parent); WMSetViewExpandsToParent(WMWidgetView(panel->box), 2, 2, 2, 2); sv = WMCreateScrollView(panel->box); WMResizeWidget(sv, 500, 215); WMMoveWidget(sv, 12, 10); WMSetScrollViewRelief(sv, WRSunken); WMSetScrollViewHasVerticalScroller(sv, True); WMSetScrollViewHasHorizontalScroller(sv, False); f = WMCreateFrame(panel->box); WMResizeWidget(f, 495, wlengthof(expert_options) * 25 + 8); WMSetFrameRelief(f, WRFlat); udb = WMGetStandardUserDefaults(); for (i = 0; i < wlengthof(expert_options); i++) { if (expert_options[i].class != OPTION_WMAKER_INT) { panel->swi[i] = WMCreateSwitchButton(f); WMResizeWidget(panel->swi[i], FRAME_WIDTH - 40, 25); WMMoveWidget(panel->swi[i], 5, 5 + i * 25); WMSetButtonText(panel->swi[i], _(expert_options[i].label)); } switch (expert_options[i].class) { case OPTION_WMAKER: if (GetStringForKey(expert_options[i].op_name)) state = GetBoolForKey(expert_options[i].op_name); else state = expert_options[i].def_state; break; case OPTION_WMAKER_ARRAY: { char *str = GetStringForKey(expert_options[i].op_name); state = expert_options[i].def_state; if (str && strcasecmp(str, "None") == 0) state = False; } break; case OPTION_USERDEF: state = WMGetUDBoolForKey(udb, expert_options[i].op_name); break; case OPTION_WMAKER_INT: { char tmp[10]; WMButton *up, *down; WMLabel *label; panel->textfield[i] = WMCreateTextField(f); WMResizeWidget(panel->textfield[i], 41, 20); WMMoveWidget(panel->textfield[i], 22, 7 + i * 25); down = WMCreateCommandButton(f); WMSetButtonImage(down, WMGetSystemPixmap(WMWidgetScreen(down), WSIArrowDown)); WMSetButtonAltImage(down, WMGetSystemPixmap(WMWidgetScreen(down), WSIHighlightedArrowDown)); WMSetButtonImagePosition(down, WIPImageOnly); WMSetButtonAction(down, downButtonCallback, panel->textfield[i]); WMResizeWidget(down, 16, 16); WMMoveWidget(down, 5, 9 + i * 25); up = WMCreateCommandButton(f); WMSetButtonImage(up, WMGetSystemPixmap(WMWidgetScreen(up), WSIArrowUp)); WMSetButtonAltImage(up, WMGetSystemPixmap(WMWidgetScreen(up), WSIHighlightedArrowUp)); WMSetButtonImagePosition(up, WIPImageOnly); WMSetButtonAction(up, upButtonCallback, panel->textfield[i]); WMResizeWidget(up, 16, 16); WMMoveWidget(up, 64, 9 + i * 25); label = WMCreateLabel(f); WMSetLabelText(label, _(expert_options[i].label)); WMResizeWidget(label, FRAME_WIDTH - 99, 25); WMMoveWidget(label, 85, 5 + i * 25); if (GetStringForKey(expert_options[i].op_name)) state = GetIntegerForKey(expert_options[i].op_name); else state = expert_options[i].def_state; sprintf(tmp, "%d", state); WMSetTextFieldText(panel->textfield[i], tmp); break; } default: #ifdef DEBUG wwarning("export_options[%d].class = %d, this should not happen\n", i, expert_options[i].class); #endif state = expert_options[i].def_state; break; } if (expert_options[i].class != OPTION_WMAKER_INT) WMSetButtonSelected(panel->swi[i], state); } WMMapSubwidgets(panel->box); WMSetScrollViewContentView(sv, WMWidgetView(f)); WMRealizeWidget(panel->box); } static void storeDefaults(_Panel *panel) { WMUserDefaults *udb = WMGetStandardUserDefaults(); int i; for (i = 0; i < wlengthof(expert_options); i++) { switch (expert_options[i].class) { case OPTION_WMAKER: SetBoolForKey(WMGetButtonSelected(panel->swi[i]), expert_options[i].op_name); break; case OPTION_WMAKER_ARRAY: if (WMGetButtonSelected(panel->swi[i])) { /* check if the array was not manually modified */ char *str = GetStringForKey(expert_options[i].op_name); if (str && strcasecmp(str, "None") == 0) RemoveObjectForKey(expert_options[i].op_name); } else SetStringForKey("None", expert_options[i].op_name); break; case OPTION_USERDEF: WMSetUDBoolForKey(udb, WMGetButtonSelected(panel->swi[i]), expert_options[i].op_name); break; case OPTION_WMAKER_INT: { char *text; int value; text = WMGetTextFieldText(panel->textfield[i]); value = atoi(text); SetIntegerForKey(value, expert_options[i].op_name); break; } } } } Panel *InitExpert(WMWidget *parent) { _Panel *panel; panel = wmalloc(sizeof(_Panel)); panel->sectionName = _("Expert User Preferences"); panel->description = _("Options for people who know what they're doing...\n" "Also has some other misc. options."); panel->parent = parent; panel->callbacks.createWidgets = createPanel; panel->callbacks.updateDomain = storeDefaults; AddSection(panel, ICON_FILE); return panel; } ���������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/KeyboardSettings.c����������������������������������������������������0000644�0001750�0001750�00000011007�13431646201�016377� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* KeyboardSettings.c- keyboard options (equivalent to xset) * * WPrefs - Window Maker Preferences Program * * Copyright (c) 1998-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "WPrefs.h" typedef struct _Panel { WMBox *box; char *sectionName; char *description; CallbackRec callbacks; WMWidget *parent; WMFrame *delaF; WMButton *delaB[4]; WMLabel *dmsL; WMTextField *dmsT; WMFrame *rateF; WMButton *rateB[4]; WMLabel *rmsL; WMTextField *rmsT; WMTextField *testT; } _Panel; #define ICON_FILE "keyboard" static void createPanel(Panel * p) { _Panel *panel = (_Panel *) p; WMScreen *scr = WMWidgetScreen(panel->parent); int i; WMColor *color; WMFont *font; color = WMDarkGrayColor(scr); font = WMSystemFontOfSize(scr, 10); panel->box = WMCreateBox(panel->parent); WMSetViewExpandsToParent(WMWidgetView(panel->box), 2, 2, 2, 2); /**************** Initial Key Repeat ***************/ panel->delaF = WMCreateFrame(panel->box); WMResizeWidget(panel->delaF, 495, 60); WMMoveWidget(panel->delaF, 15, 10); WMSetFrameTitle(panel->delaF, _("Initial Key Repeat")); for (i = 0; i < 4; i++) { panel->delaB[i] = WMCreateButton(panel->delaF, WBTOnOff); WMResizeWidget(panel->delaB[i], 60, 20); WMMoveWidget(panel->delaB[i], 70 + i * 60, 25); if (i > 0) WMGroupButtons(panel->delaB[0], panel->delaB[i]); switch (i) { case 0: WMSetButtonText(panel->delaB[i], "....a"); break; case 1: WMSetButtonText(panel->delaB[i], "...a"); break; case 2: WMSetButtonText(panel->delaB[i], "..a"); break; case 3: WMSetButtonText(panel->delaB[i], ".a"); break; } } panel->dmsT = WMCreateTextField(panel->delaF); WMResizeWidget(panel->dmsT, 50, 20); WMMoveWidget(panel->dmsT, 345, 25); /* WMSetTextFieldAlignment(panel->dmsT, WARight); */ panel->dmsL = WMCreateLabel(panel->delaF); WMResizeWidget(panel->dmsL, 30, 16); WMMoveWidget(panel->dmsL, 400, 30); WMSetLabelTextColor(panel->dmsL, color); WMSetLabelFont(panel->dmsL, font); WMSetLabelText(panel->dmsL, "msec"); WMMapSubwidgets(panel->delaF); /**************** Key Repeat Rate ***************/ panel->rateF = WMCreateFrame(panel->box); WMResizeWidget(panel->rateF, 495, 60); WMMoveWidget(panel->rateF, 15, 95); WMSetFrameTitle(panel->rateF, _("Key Repeat Rate")); for (i = 0; i < 4; i++) { panel->rateB[i] = WMCreateButton(panel->rateF, WBTOnOff); WMResizeWidget(panel->rateB[i], 60, 20); WMMoveWidget(panel->rateB[i], 70 + i * 60, 25); if (i > 0) WMGroupButtons(panel->rateB[0], panel->rateB[i]); switch (i) { case 0: WMSetButtonText(panel->rateB[i], "a....a"); break; case 1: WMSetButtonText(panel->rateB[i], "a...a"); break; case 2: WMSetButtonText(panel->rateB[i], "a..a"); break; case 3: WMSetButtonText(panel->rateB[i], "a.a"); break; } } panel->rmsT = WMCreateTextField(panel->rateF); WMResizeWidget(panel->rmsT, 50, 20); WMMoveWidget(panel->rmsT, 345, 25); /* WMSetTextFieldAlignment(panel->rmsT, WARight); */ panel->rmsL = WMCreateLabel(panel->rateF); WMResizeWidget(panel->rmsL, 30, 16); WMMoveWidget(panel->rmsL, 400, 30); WMSetLabelTextColor(panel->rmsL, color); WMSetLabelFont(panel->rmsL, font); WMSetLabelText(panel->rmsL, "msec"); WMMapSubwidgets(panel->rateF); panel->testT = WMCreateTextField(panel->box); WMResizeWidget(panel->testT, 480, 20); WMMoveWidget(panel->testT, 20, 180); WMSetTextFieldText(panel->testT, _("Type here to test")); WMReleaseColor(color); WMReleaseFont(font); WMRealizeWidget(panel->box); WMMapSubwidgets(panel->box); } Panel *InitKeyboardSettings(WMWidget *parent) { _Panel *panel; panel = wmalloc(sizeof(_Panel)); panel->sectionName = _("Keyboard Preferences"); panel->description = _("Not done"); panel->parent = parent; panel->callbacks.createWidgets = createPanel; AddSection(panel, ICON_FILE); return panel; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/Appearance.c����������������������������������������������������������0000644�0001750�0001750�00000174434�13642357773�015214� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Apperance.c- color/texture for titlebar etc. * * WPrefs - Window Maker Preferences Program * * Copyright (c) 1999-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "WPrefs.h" #include <unistd.h> #include <errno.h> #include <ctype.h> #include <time.h> #include <sys/stat.h> #include <sys/types.h> #include <fcntl.h> #include <math.h> #include "TexturePanel.h" static const struct { const char *key; const char *default_value; const char *label; WMRect preview; /* The rectangle where the corresponding object is displayed */ WMPoint hand; /* The coordinate where the hand is drawn when pointing this item */ } colorOptions[] = { /* Related to Window titles */ { "FTitleColor", "white", N_("Focused Window Title"), { { 30, 10 }, { 190, 20 } }, { 5, 10 } }, { "UTitleColor", "black", N_("Unfocused Window Title"), { { 30, 40 }, { 190, 20 } }, { 5, 40 } }, { "PTitleColor", "white", N_("Owner of Focused Window Title"), { { 30, 70 }, { 190, 20 } }, { 5, 70 } }, /* Related to Menus */ { "MenuTitleColor", "white", N_("Menu Title") , { { 30, 120 }, { 90, 20 } }, { 5, 120 } }, { "MenuTextColor", "black", N_("Menu Item Text") , { { 30, 140 }, { 90, 20 } }, { 5, 140 } }, { "MenuDisabledColor", "#616161", N_("Disabled Menu Item Text") , { { 30, 160 }, { 90, 20 } }, { 5, 160 } }, { "HighlightColor", "white", N_("Menu Highlight Color") , { { 30, 180 }, { 90, 20 } }, { 5, 180 } }, { "HighlightTextColor", "black", N_("Highlighted Menu Text Color") , { { 30, 200 }, { 90, 20 } }, { 5, 180 } }, /* * yuck kluge: the coordinate for HighlightTextColor are actually those of the last "Normal item" * at the bottom when user clicks it, the "yuck kluge" in the function 'previewClick' will swap it * for the MenuTextColor selection as user would expect * * Note that the entries are reffered by their index for performance */ /* Related to Window's border */ { "FrameFocusedBorderColor", "black", N_("Focused Window Border Color") , { { 0, 0 }, { 0, 0 } }, { -22, -21 } }, { "FrameBorderColor", "black", N_("Window Border Color") , { { 0, 0 }, { 0, 0 } }, { -22, -21 } }, { "FrameSelectedBorderColor", "white", N_("Selected Window Border Color") , { { 0, 0 }, { 0, 0 } }, { -22, -21 } }, /* Related to Icons and Clip */ { "IconTitleColor", "white", N_("Miniwindow Title") , { { 155, 130 }, { 64, 64 } }, { 130, 132 } }, { "IconTitleBack", "black", N_("Miniwindow Title Back") , { { 155, 130 }, { 64, 64 } }, { 130, 132 } }, { "ClipTitleColor", "black", N_("Clip Title") , { { 155, 130 }, { 64, 64 } }, { 130, 132 } }, { "CClipTitleColor", "#454045", N_("Collapsed Clip Title") , { { 155, 130 }, { 64, 64 } }, { 130, 132 } } }; /********************************************************************/ typedef enum { MSTYLE_NORMAL = 0, MSTYLE_SINGLE = 1, MSTYLE_FLAT = 2 } menu_style_index; static const struct { const char *db_value; const char *file_name; } menu_style[] = { [MSTYLE_NORMAL] = { "normal", "msty1" }, [MSTYLE_SINGLE] = { "singletexture", "msty2" }, [MSTYLE_FLAT] = { "flat", "msty3" } }; /********************************************************************/ static const struct { const char *label; const char *db_value; } wintitle_align[] = { [WALeft] = { N_("Left"), "left" }, [WACenter] = { N_("Center"), "center" }, [WARight] = { N_("Right"), "right" } }; /********************************************************************/ static const char *const sample_colors[] = { "black", "#292929", "#525252", "#848484", "#adadad", "#d6d6d6", "white", "#d6d68c", "#d6a57b", "#8cd68c", "#8cd6ce", "#d68c8c", "#8c9cd6", "#bd86d6", "#d68cbd", "#d64a4a", "#4a5ad6", "#4ad6ce", "#4ad65a", "#ced64a", "#d6844a", "#8ad631", "#ce29c6", "#ce2973" }; /********************************************************************/ typedef struct _Panel { WMBox *box; char *sectionName; char *description; CallbackRec callbacks; WMWidget *parent; WMLabel *prevL; WMTabView *tabv; /* texture list */ WMFrame *texF; WMList *texLs; WMPopUpButton *secP; WMButton *newB; WMButton *editB; WMButton *ripB; WMButton *delB; /* text color */ WMFrame *colF; WMPopUpButton *colP; WMColor *colors[wlengthof_nocheck(colorOptions)]; WMColorWell *colW; WMColorWell *sampW[wlengthof_nocheck(sample_colors)]; /* options */ WMFrame *optF; WMFrame *mstyF; WMButton *mstyB[wlengthof_nocheck(menu_style)]; WMFrame *taliF; WMButton *taliB[wlengthof_nocheck(wintitle_align)]; /* */ int textureIndex[8]; WMFont *smallFont; WMFont *normalFont; WMFont *boldFont; TexturePanel *texturePanel; WMPixmap *onLed; WMPixmap *offLed; WMPixmap *hand; int oldsection; int oldcsection; char oldTabItem; menu_style_index menuStyle; WMAlignment titleAlignment; Pixmap preview; Pixmap previewNoText; Pixmap previewBack; char *fprefix; } _Panel; typedef struct { char *title; char *texture; WMPropList *prop; Pixmap preview; char *path; char selectedFor; unsigned current:1; unsigned ispixmap:1; } TextureListItem; enum { TAB_TEXTURE, TAB_COLOR, TAB_OPTIONS }; static void updateColorPreviewBox(_Panel * panel, int elements); static void showData(_Panel * panel); static void changePage(WMWidget * w, void *data); static void changeColorPage(WMWidget * w, void *data); static void OpenExtractPanelFor(_Panel *panel); static void changedTabItem(struct WMTabViewDelegate *self, WMTabView * tabView, WMTabViewItem * item); static WMTabViewDelegate tabviewDelegate = { NULL, NULL, /* didChangeNumberOfItems */ changedTabItem, /* didSelectItem */ NULL, /* shouldSelectItem */ NULL /* willSelectItem */ }; #define ICON_FILE "appearance" #define TNEW_FILE "tnew" #define TDEL_FILE "tdel" #define TEDIT_FILE "tedit" #define TEXTR_FILE "textr" /* XPM */ static char *blueled_xpm[] = { "8 8 17 1", " c None", ". c #020204", "+ c #16B6FC", "@ c #176AFC", "# c #163AFC", "$ c #72D2FC", "% c #224CF4", "& c #76D6FC", "* c #16AAFC", "= c #CEE9FC", "- c #229EFC", "; c #164CFC", "> c #FAFEFC", ", c #2482FC", "' c #1652FC", ") c #1E76FC", "! c #1A60FC", " .... ", " .=>-@. ", ".=>$@@'.", ".=$@!;;.", ".!@*+!#.", ".#'*+*,.", " .@)@,. ", " .... " }; /* XPM */ static char *blueled2_xpm[] = { /* width height num_colors chars_per_pixel */ " 8 8 17 1", /* colors */ ". c None", "# c #090909", "a c #4b63a4", "b c #011578", "c c #264194", "d c #04338c", "e c #989dac", "f c #011a7c", "g c #465c9c", "h c #03278a", "i c #6175ac", "j c #011e74", "k c #043a90", "l c #042f94", "m c #0933a4", "n c #022184", "o c #012998", /* pixels */ "..####..", ".#aimn#.", "#aechnf#", "#gchnjf#", "#jndknb#", "#bjdddl#", ".#nono#.", "..####.." }; /* XPM */ static char *hand_xpm[] = { "22 21 19 1", " c None", ". c #030305", "+ c #7F7F7E", "@ c #B5B5B6", "# c #C5C5C6", "$ c #969697", "% c #FDFDFB", "& c #F2F2F4", "* c #E5E5E4", "= c #ECECEC", "- c #DCDCDC", "; c #D2D2D0", "> c #101010", ", c #767674", "' c #676767", ") c #535355", "! c #323234", "~ c #3E3C56", "{ c #333147", " ", " ..... ", " ..+@##$. ", " .%%%&@.......... ", " .%*%%&#%%%%%%%%%$. ", " .*#%%%%%%%%%&&&&==. ", " .-%%%%%%%%%=*-;;;#$. ", " .-%%%%%%%%&..>..... ", " >-%%%%%%%%%*#+. ", " >-%%%%%%%%%*@,. ", " >#%%%%%%%%%*@'. ", " >$&&%%%%%%=... ", " .+@@;=&%%&;$,> ", " .',$@####$+). ", " .!',+$++,'. ", " ..>>>>>. ", " ", " ~~{{{~~ ", " {{{{{{{{{{{ ", " ~~{{{~~ ", " " }; static const struct { const char *key; const char *default_value; const char *texture_label; /* text used when displaying the list of textures */ WMRect preview; /* The rectangle where the corresponding object is displayed */ WMPoint hand; /* The coordinate where the hand is drawn when pointing this item */ const char *popup_label; /* text used for the popup button with the list of editable items */ } textureOptions[] = { #define PFOCUSED 0 { "FTitleBack", "(solid, black)", N_("[Focused]"), { { 30, 10 }, { 190, 20 } }, { 5, 10 }, N_("Titlebar of Focused Window") }, #define PUNFOCUSED 1 { "UTitleBack", "(solid, gray)", N_("[Unfocused]"), { { 30, 40 }, { 190, 20 } }, { 5, 40 }, N_("Titlebar of Unfocused Windows") }, #define POWNER 2 { "PTitleBack", "(solid, \"#616161\")", N_("[Owner of Focused]"), { { 30, 70 }, { 190, 20 } }, { 5, 70 }, N_("Titlebar of Focused Window's Owner") }, #define PRESIZEBAR 3 { "ResizebarBack", "(solid, gray)", N_("[Resizebar]"), { { 30, 100 }, { 190, 9 } }, { 5, 100 }, N_("Window Resizebar") }, #define PMTITLE 4 { "MenuTitleBack", "(solid, black)", N_("[Menu Title]"), { { 30, 120 }, { 90, 20 } }, { 5, 120 }, N_("Titlebar of Menus") }, #define PMITEM 5 { "MenuTextBack", "(solid, gray)", N_("[Menu Item]"), { { 30, 140 }, { 90, 20 * 4 } }, { 5, 160 }, N_("Menu Items") }, #define PICON 6 { "IconBack", "(solid, gray)", N_("[Icon]"), { { 155, 130 }, { 64, 64 } }, { 130, 150 }, N_("Icon Background") }, #define PBACKGROUND 7 { "WorkspaceBack", "(solid, black)", N_("[Background]"), { { -1, -1}, { 0, 0 } }, { -22, -21 }, N_("Workspace Background") } }; #define EVERYTHING 0xff enum { RESIZEBAR_BEVEL = -1, MENU_BEVEL = -2 }; enum { TEXPREV_WIDTH = 40, TEXPREV_HEIGHT = 24 }; enum { FTITLE_COL, UTITLE_COL, OTITLE_COL, MTITLE_COL, MITEM_COL, MDISAB_COL, MHIGH_COL, MHIGHT_COL, FFBORDER_COL, FBORDER_COL, FSBORDER_COL, ICONT_COL, ICONB_COL, CLIP_COL, CCLIP_COL }; static void str2rcolor(RContext * rc, const char *name, RColor * color) { XColor xcolor; XParseColor(rc->dpy, rc->cmap, name, &xcolor); color->alpha = 255; color->red = xcolor.red >> 8; color->green = xcolor.green >> 8; color->blue = xcolor.blue >> 8; } static void dumpRImage(const char *path, RImage * image) { FILE *f; int channels = (image->format == RRGBAFormat ? 4 : 3); f = fopen(path, "wb"); if (!f) { werror("%s", path); return; } fprintf(f, "%02x%02x%1x", image->width, image->height, channels); fwrite(image->data, 1, image->width * image->height * channels, f); fsync(fileno(f)); if (fclose(f) < 0) { werror("%s", path); } } static int isPixmap(WMPropList * prop) { WMPropList *p; char *s; p = WMGetFromPLArray(prop, 0); s = WMGetFromPLString(p); if (strcasecmp(&s[1], "pixmap") == 0) return 1; else return 0; } /**********************************************************************/ static void drawResizebarBevel(RImage * img) { RColor light; RColor dark; int width = img->width; int height = img->height; int cwidth = 28; light.alpha = 0; light.red = light.green = light.blue = 80; dark.alpha = 0; dark.red = dark.green = dark.blue = 40; ROperateLine(img, RSubtractOperation, 0, 0, width - 1, 0, &dark); ROperateLine(img, RAddOperation, 0, 1, width - 1, 1, &light); ROperateLine(img, RSubtractOperation, cwidth, 2, cwidth, height - 1, &dark); ROperateLine(img, RAddOperation, cwidth + 1, 2, cwidth + 1, height - 1, &light); ROperateLine(img, RSubtractOperation, width - cwidth - 2, 2, width - cwidth - 2, height - 1, &dark); ROperateLine(img, RAddOperation, width - cwidth - 1, 2, width - cwidth - 1, height - 1, &light); } static void drawMenuBevel(RImage * img) { RColor light, dark, mid; int i; int iheight = img->height / 4; light.alpha = 0; light.red = light.green = light.blue = 80; dark.alpha = 255; dark.red = dark.green = dark.blue = 0; mid.alpha = 0; mid.red = mid.green = mid.blue = 40; for (i = 1; i < 4; i++) { ROperateLine(img, RSubtractOperation, 0, i * iheight - 2, img->width - 1, i * iheight - 2, &mid); RDrawLine(img, 0, i * iheight - 1, img->width - 1, i * iheight - 1, &dark); ROperateLine(img, RAddOperation, 1, i * iheight, img->width - 2, i * iheight, &light); } } static Pixmap renderTexture(WMScreen * scr, WMPropList * texture, int width, int height, const char *path, int border) { char *type; RImage *image = NULL; RImage *timage = NULL; Pixmap pixmap; RContext *rc = WMScreenRContext(scr); char *str; RColor rcolor; type = WMGetFromPLString(WMGetFromPLArray(texture, 0)); if (strcasecmp(&type[1], "pixmap") == 0 || (strcasecmp(&type[2], "gradient") == 0 && toupper(type[0]) == 'T')) { char *path; str = WMGetFromPLString(WMGetFromPLArray(texture, 1)); path = wfindfileinarray(GetObjectForKey("PixmapPath"), str); if (path) { timage = RLoadImage(rc, path, 0); if (!timage) wwarning(_("could not load file '%s': %s"), path, RMessageForError(RErrorCode)); wfree(path); } else { wwarning(_("could not find file '%s' for texture type %s"), str, type); timage = NULL; } if (!timage) { texture = WMCreatePropListFromDescription("(solid, black)"); type = "solid"; } } if (strcasecmp(type, "solid") == 0) { str = WMGetFromPLString(WMGetFromPLArray(texture, 1)); str2rcolor(rc, str, &rcolor); image = RCreateImage(width, height, False); RClearImage(image, &rcolor); } else if (strcasecmp(type, "igradient") == 0) { int t1, t2; RColor c1[2], c2[2]; str = WMGetFromPLString(WMGetFromPLArray(texture, 1)); str2rcolor(rc, str, &c1[0]); str = WMGetFromPLString(WMGetFromPLArray(texture, 2)); str2rcolor(rc, str, &c1[1]); str = WMGetFromPLString(WMGetFromPLArray(texture, 3)); t1 = atoi(str); str = WMGetFromPLString(WMGetFromPLArray(texture, 4)); str2rcolor(rc, str, &c2[0]); str = WMGetFromPLString(WMGetFromPLArray(texture, 5)); str2rcolor(rc, str, &c2[1]); str = WMGetFromPLString(WMGetFromPLArray(texture, 6)); t2 = atoi(str); image = RRenderInterwovenGradient(width, height, c1, t1, c2, t2); } else if (strcasecmp(&type[1], "gradient") == 0) { RGradientStyle style; RColor rcolor2; switch (toupper(type[0])) { case 'V': style = RVerticalGradient; break; case 'H': style = RHorizontalGradient; break; default: wwarning(_("unknown direction in '%s', falling back to diagonal"), type); /* FALLTHRU */ case 'D': style = RDiagonalGradient; break; } str = WMGetFromPLString(WMGetFromPLArray(texture, 1)); str2rcolor(rc, str, &rcolor); str = WMGetFromPLString(WMGetFromPLArray(texture, 2)); str2rcolor(rc, str, &rcolor2); image = RRenderGradient(width, height, &rcolor, &rcolor2, style); } else if (strcasecmp(&type[2], "gradient") == 0 && toupper(type[0]) == 'T') { RGradientStyle style; RColor rcolor2; int i; RImage *grad = NULL; switch (toupper(type[1])) { case 'V': style = RVerticalGradient; break; case 'H': style = RHorizontalGradient; break; default: wwarning(_("unknown direction in '%s', falling back to diagonal"), type); /* FALLTHRU */ case 'D': style = RDiagonalGradient; break; } str = WMGetFromPLString(WMGetFromPLArray(texture, 3)); str2rcolor(rc, str, &rcolor); str = WMGetFromPLString(WMGetFromPLArray(texture, 4)); str2rcolor(rc, str, &rcolor2); grad = RRenderGradient(width, height, &rcolor, &rcolor2, style); image = RMakeTiledImage(timage, width, height); RReleaseImage(timage); i = atoi(WMGetFromPLString(WMGetFromPLArray(texture, 2))); RCombineImagesWithOpaqueness(image, grad, i); RReleaseImage(grad); } else if (strcasecmp(&type[2], "gradient") == 0 && toupper(type[0]) == 'M') { RGradientStyle style; RColor **colors; int i, j; switch (toupper(type[1])) { case 'V': style = RVerticalGradient; break; case 'H': style = RHorizontalGradient; break; default: wwarning(_("unknown direction in '%s', falling back to diagonal"), type); /* FALLTHRU */ case 'D': style = RDiagonalGradient; break; } j = WMGetPropListItemCount(texture); if (j > 0) { colors = wmalloc(j * sizeof(RColor *)); for (i = 2; i < j; i++) { str = WMGetFromPLString(WMGetFromPLArray(texture, i)); colors[i - 2] = wmalloc(sizeof(RColor)); str2rcolor(rc, str, colors[i - 2]); } colors[i - 2] = NULL; image = RRenderMultiGradient(width, height, colors, style); for (i = 0; colors[i] != NULL; i++) wfree(colors[i]); wfree(colors); } } else if (strcasecmp(&type[1], "pixmap") == 0) { RColor color; str = WMGetFromPLString(WMGetFromPLArray(texture, 2)); str2rcolor(rc, str, &color); switch (toupper(type[0])) { case 'T': image = RMakeTiledImage(timage, width, height); RReleaseImage(timage); break; case 'C': image = RMakeCenteredImage(timage, width, height, &color); RReleaseImage(timage); break; case 'F': case 'S': case 'M': image = RScaleImage(timage, width, height); RReleaseImage(timage); break; default: wwarning(_("type '%s' is not a supported type for a texture"), type); RReleaseImage(timage); return None; } } if (!image) return None; if (path) { dumpRImage(path, image); } if (border < 0) { if (border == RESIZEBAR_BEVEL) { drawResizebarBevel(image); } else if (border == MENU_BEVEL) { drawMenuBevel(image); RBevelImage(image, RBEV_RAISED2); } } else if (border) { RBevelImage(image, border); } RConvertImage(rc, image, &pixmap); RReleaseImage(image); return pixmap; } static Pixmap renderMenu(_Panel * panel, WMPropList * texture, int width, int iheight) { WMScreen *scr = WMWidgetScreen(panel->parent); Display *dpy = WMScreenDisplay(scr); Pixmap pix, tmp; GC gc = XCreateGC(dpy, WMWidgetXID(panel->parent), 0, NULL); int i; switch (panel->menuStyle) { case MSTYLE_NORMAL: tmp = renderTexture(scr, texture, width, iheight, NULL, RBEV_RAISED2); pix = XCreatePixmap(dpy, tmp, width, iheight * 4, WMScreenDepth(scr)); for (i = 0; i < 4; i++) { XCopyArea(dpy, tmp, pix, gc, 0, 0, width, iheight, 0, iheight * i); } XFreePixmap(dpy, tmp); break; case MSTYLE_SINGLE: pix = renderTexture(scr, texture, width, iheight * 4, NULL, MENU_BEVEL); break; case MSTYLE_FLAT: pix = renderTexture(scr, texture, width, iheight * 4, NULL, RBEV_RAISED2); break; default: pix = None; } XFreeGC(dpy, gc); return pix; } static void renderPreview(_Panel * panel, GC gc, int part, int relief) { WMListItem *item; TextureListItem *titem; Pixmap pix; WMScreen *scr = WMWidgetScreen(panel->box); item = WMGetListItem(panel->texLs, panel->textureIndex[part]); titem = (TextureListItem *) item->clientData; pix = renderTexture(scr, titem->prop, textureOptions[part].preview.size.width, textureOptions[part].preview.size.height, NULL, relief); XCopyArea(WMScreenDisplay(scr), pix, panel->preview, gc, 0, 0, textureOptions[part].preview.size.width, textureOptions[part].preview.size.height, textureOptions[part].preview.pos.x, textureOptions[part].preview.pos.y); XCopyArea(WMScreenDisplay(scr), pix, panel->previewNoText, gc, 0, 0, textureOptions[part].preview.size.width, textureOptions[part].preview.size.height, textureOptions[part].preview.pos.x, textureOptions[part].preview.pos.y); XFreePixmap(WMScreenDisplay(scr), pix); } static void updatePreviewBox(_Panel * panel, int elements) { WMScreen *scr = WMWidgetScreen(panel->parent); Display *dpy = WMScreenDisplay(scr); Pixmap pix; GC gc; int colorUpdate = 0; gc = XCreateGC(dpy, WMWidgetXID(panel->parent), 0, NULL); if (panel->preview == None) { WMPixmap *p; panel->previewNoText = XCreatePixmap(dpy, WMWidgetXID(panel->parent), 240 - 4, 215 - 4, WMScreenDepth(scr)); panel->previewBack = XCreatePixmap(dpy, WMWidgetXID(panel->parent), 240 - 4, 215 - 4, WMScreenDepth(scr)); p = WMCreatePixmap(scr, 240 - 4, 215 - 4, WMScreenDepth(scr), False); panel->preview = WMGetPixmapXID(p); WMSetLabelImage(panel->prevL, p); WMReleasePixmap(p); } if (elements & (1 << PBACKGROUND)) { Pixmap tmp; TextureListItem *titem; WMListItem *item; item = WMGetListItem(panel->texLs, panel->textureIndex[PBACKGROUND]); titem = (TextureListItem *) item->clientData; tmp = renderTexture(scr, titem->prop, 240 - 4, 215 - 4, NULL, 0); XCopyArea(dpy, tmp, panel->preview, gc, 0, 0, 240 - 4, 215 -4 , 0, 0); XCopyArea(dpy, tmp, panel->previewNoText, gc, 0, 0, 240 - 4, 215 -4 , 0, 0); XCopyArea(dpy, tmp, panel->previewBack, gc, 0, 0, 240 - 4, 215 -4 , 0, 0); XFreePixmap(dpy, tmp); } if (elements & (1 << PFOCUSED)) { renderPreview(panel, gc, PFOCUSED, RBEV_RAISED2); colorUpdate |= 1 << FTITLE_COL | 1 << FFBORDER_COL; } if (elements & (1 << PUNFOCUSED)) { renderPreview(panel, gc, PUNFOCUSED, RBEV_RAISED2); colorUpdate |= 1 << UTITLE_COL | 1 << FBORDER_COL; } if (elements & (1 << POWNER)) { renderPreview(panel, gc, POWNER, RBEV_RAISED2); colorUpdate |= 1 << OTITLE_COL | 1 << FBORDER_COL; } if (elements & (1 << PRESIZEBAR)) { renderPreview(panel, gc, PRESIZEBAR, RESIZEBAR_BEVEL); colorUpdate |= 1 << FBORDER_COL; } if (elements & (1 << PMTITLE)) { renderPreview(panel, gc, PMTITLE, RBEV_RAISED2); colorUpdate |= 1 << MTITLE_COL | 1 << FBORDER_COL; } if (elements & (1 << PMITEM)) { WMListItem *item; TextureListItem *titem; item = WMGetListItem(panel->texLs, panel->textureIndex[5]); titem = (TextureListItem *) item->clientData; pix = renderMenu(panel, titem->prop, textureOptions[PMITEM].preview.size.width, textureOptions[PMITEM].preview.size.height / 4); XCopyArea(dpy, pix, panel->preview, gc, 0, 0, textureOptions[PMITEM].preview.size.width, textureOptions[PMITEM].preview.size.height, textureOptions[PMITEM].preview.pos.x, textureOptions[PMITEM].preview.pos.y); XCopyArea(dpy, pix, panel->previewNoText, gc, 0, 0, textureOptions[PMITEM].preview.size.width, textureOptions[PMITEM].preview.size.height, textureOptions[PMITEM].preview.pos.x, textureOptions[PMITEM].preview.pos.y); XFreePixmap(dpy, pix); colorUpdate |= 1 << MITEM_COL | 1 << MDISAB_COL | 1 << MHIGH_COL | 1 << MHIGHT_COL | 1 << FBORDER_COL; } if (elements & (1 << PICON)) { WMListItem *item; TextureListItem *titem; item = WMGetListItem(panel->texLs, panel->textureIndex[6]); titem = (TextureListItem *) item->clientData; renderPreview(panel, gc, PICON, titem->ispixmap ? 0 : RBEV_RAISED3); } if (colorUpdate) updateColorPreviewBox(panel, colorUpdate); else WMRedisplayWidget(panel->prevL); XFreeGC(dpy, gc); } static void cancelNewTexture(void *data) { _Panel *panel = (_Panel *) data; HideTexturePanel(panel->texturePanel); } static char *makeFileName(const char *prefix) { char *fname; fname = wstrdup(prefix); while (access(fname, F_OK) == 0) { char buf[30]; wfree(fname); sprintf(buf, "%08lx.cache", time(NULL)); fname = wstrconcat(prefix, buf); } return fname; } static void okNewTexture(void *data) { _Panel *panel = (_Panel *) data; WMListItem *item; char *name; char *str; WMPropList *prop; TextureListItem *titem; WMScreen *scr = WMWidgetScreen(panel->parent); titem = wmalloc(sizeof(TextureListItem)); HideTexturePanel(panel->texturePanel); name = GetTexturePanelTextureName(panel->texturePanel); prop = GetTexturePanelTexture(panel->texturePanel); str = WMGetPropListDescription(prop, False); titem->title = name; titem->prop = prop; titem->texture = str; titem->selectedFor = 0; titem->ispixmap = isPixmap(prop); titem->path = makeFileName(panel->fprefix); titem->preview = renderTexture(scr, prop, TEXPREV_WIDTH, TEXPREV_HEIGHT, titem->path, 0); item = WMAddListItem(panel->texLs, ""); item->clientData = titem; WMSetListPosition(panel->texLs, WMGetListNumberOfRows(panel->texLs)); } static void okEditTexture(void *data) { _Panel *panel = (_Panel *) data; WMListItem *item; char *name; char *str; WMPropList *prop; TextureListItem *titem; item = WMGetListItem(panel->texLs, WMGetListSelectedItemRow(panel->texLs)); titem = (TextureListItem *) item->clientData; HideTexturePanel(panel->texturePanel); if (titem->current) { name = GetTexturePanelTextureName(panel->texturePanel); wfree(titem->title); titem->title = name; } prop = GetTexturePanelTexture(panel->texturePanel); str = WMGetPropListDescription(prop, False); WMReleasePropList(titem->prop); titem->prop = prop; titem->ispixmap = isPixmap(prop); wfree(titem->texture); titem->texture = str; XFreePixmap(WMScreenDisplay(WMWidgetScreen(panel->texLs)), titem->preview); titem->preview = renderTexture(WMWidgetScreen(panel->texLs), titem->prop, TEXPREV_WIDTH, TEXPREV_HEIGHT, titem->path, 0); WMRedisplayWidget(panel->texLs); if (titem->selectedFor) { if (titem->selectedFor & (1 << PBACKGROUND)) updatePreviewBox(panel, EVERYTHING); else updatePreviewBox(panel, titem->selectedFor); } changePage(panel->secP, panel); } static void editTexture(WMWidget * w, void *data) { _Panel *panel = (_Panel *) data; WMListItem *item; TextureListItem *titem; /* Parameter not used, but tell the compiler that it is ok */ (void) w; item = WMGetListItem(panel->texLs, WMGetListSelectedItemRow(panel->texLs)); titem = (TextureListItem *) item->clientData; SetTexturePanelPixmapPath(panel->texturePanel, GetObjectForKey("PixmapPath")); SetTexturePanelTexture(panel->texturePanel, titem->title, titem->prop); SetTexturePanelCancelAction(panel->texturePanel, cancelNewTexture, panel); SetTexturePanelOkAction(panel->texturePanel, okEditTexture, panel); ShowTexturePanel(panel->texturePanel); } static void newTexture(WMWidget * w, void *data) { _Panel *panel = (_Panel *) data; /* Parameter not used, but tell the compiler that it is ok */ (void) w; SetTexturePanelPixmapPath(panel->texturePanel, GetObjectForKey("PixmapPath")); SetTexturePanelTexture(panel->texturePanel, "New Texture", NULL); SetTexturePanelCancelAction(panel->texturePanel, cancelNewTexture, panel); SetTexturePanelOkAction(panel->texturePanel, okNewTexture, panel); ShowTexturePanel(panel->texturePanel); } static void deleteTexture(WMWidget * w, void *data) { _Panel *panel = (_Panel *) data; WMListItem *item; TextureListItem *titem; int row; int section; /* Parameter not used, but tell the compiler that it is ok */ (void) w; section = WMGetPopUpButtonSelectedItem(panel->secP); row = WMGetListSelectedItemRow(panel->texLs); item = WMGetListItem(panel->texLs, row); titem = (TextureListItem *) item->clientData; if (titem->selectedFor & (1 << section)) { TextureListItem *titem2; panel->textureIndex[section] = section; item = WMGetListItem(panel->texLs, section); titem2 = (TextureListItem *) item->clientData; titem2->selectedFor |= 1 << section; } wfree(titem->title); wfree(titem->texture); WMReleasePropList(titem->prop); if (titem->path) { if (remove(titem->path) < 0 && errno != ENOENT) { werror(_("could not remove file %s"), titem->path); } wfree(titem->path); } wfree(titem); WMRemoveListItem(panel->texLs, row); WMSetButtonEnabled(panel->delB, False); } static void extractTexture(WMWidget * w, void *data) { _Panel *panel = (_Panel *) data; char *path; WMOpenPanel *opanel; WMScreen *scr = WMWidgetScreen(w); opanel = WMGetOpenPanel(scr); WMSetFilePanelCanChooseDirectories(opanel, False); WMSetFilePanelCanChooseFiles(opanel, True); if (WMRunModalFilePanelForDirectory(opanel, panel->parent, wgethomedir(), _("Select File"), NULL)) { path = WMGetFilePanelFileName(opanel); OpenExtractPanelFor(panel); wfree(path); } } static void changePage(WMWidget * w, void *data) { _Panel *panel = (_Panel *) data; int section; WMScreen *scr = WMWidgetScreen(panel->box); RContext *rc = WMScreenRContext(scr); if (w) { section = WMGetPopUpButtonSelectedItem(panel->secP); WMSelectListItem(panel->texLs, panel->textureIndex[section]); WMSetListPosition(panel->texLs, panel->textureIndex[section] - 2); } { GC gc; gc = XCreateGC(rc->dpy, WMWidgetXID(panel->parent), 0, NULL); XCopyArea(rc->dpy, panel->previewBack, panel->preview, gc, textureOptions[panel->oldsection].hand.x, textureOptions[panel->oldsection].hand.y, 22, 22, textureOptions[panel->oldsection].hand.x, textureOptions[panel->oldsection].hand.y); } if (w) { panel->oldsection = section; WMDrawPixmap(panel->hand, panel->preview, textureOptions[section].hand.x, textureOptions[section].hand.y); } WMRedisplayWidget(panel->prevL); } static void previewClick(XEvent * event, void *clientData) { _Panel *panel = (_Panel *) clientData; int i; switch (panel->oldTabItem) { case 0: for (i = 0; i < wlengthof(textureOptions); i++) { if (event->xbutton.x >= textureOptions[i].preview.pos.x && event->xbutton.y >= textureOptions[i].preview.pos.y && event->xbutton.x < textureOptions[i].preview.pos.x + textureOptions[i].preview.size.width && event->xbutton.y < textureOptions[i].preview.pos.y + textureOptions[i].preview.size.height) { WMSetPopUpButtonSelectedItem(panel->secP, i); changePage(panel->secP, panel); return; } } break; case 1: for (i = 0; i < WMGetPopUpButtonNumberOfItems(panel->colP); i++) { if (event->xbutton.x >= colorOptions[i].preview.pos.x && event->xbutton.y >= colorOptions[i].preview.pos.y && event->xbutton.x < colorOptions[i].preview.pos.x + colorOptions[i].preview.size.width && event->xbutton.y < colorOptions[i].preview.pos.y + colorOptions[i].preview.size.height) { /* * yuck kluge: the entry #7 is HighlightTextColor which does not have actually a * display area, but are reused to make the last "Normal Item" menu entry actually * pick the same color item as the other similar item displayed, which corresponds * to MenuTextColor */ if (i == 7) i = 4; WMSetPopUpButtonSelectedItem(panel->colP, i); changeColorPage(panel->colP, panel); return; } } break; } } static void textureClick(WMWidget * w, void *data) { _Panel *panel = (_Panel *) data; int i; WMListItem *item; TextureListItem *titem; /* Parameter not used, but tell the compiler that it is ok */ (void) w; i = WMGetListSelectedItemRow(panel->texLs); item = WMGetListItem(panel->texLs, i); titem = (TextureListItem *) item->clientData; if (titem->current) { WMSetButtonEnabled(panel->delB, False); } else { WMSetButtonEnabled(panel->delB, True); } } static void textureDoubleClick(WMWidget * w, void *data) { _Panel *panel = (_Panel *) data; int i, section; WMListItem *item; TextureListItem *titem; /* Parameter not used, but tell the compiler that it is ok */ (void) w; /* unselect old texture */ section = WMGetPopUpButtonSelectedItem(panel->secP); item = WMGetListItem(panel->texLs, panel->textureIndex[section]); titem = (TextureListItem *) item->clientData; titem->selectedFor &= ~(1 << section); /* select new texture */ i = WMGetListSelectedItemRow(panel->texLs); item = WMGetListItem(panel->texLs, i); titem = (TextureListItem *) item->clientData; titem->selectedFor |= 1 << section; panel->textureIndex[section] = i; WMRedisplayWidget(panel->texLs); if (section == PBACKGROUND) updatePreviewBox(panel, EVERYTHING); else updatePreviewBox(panel, 1 << section); } static void paintListItem(WMList * lPtr, int index, Drawable d, char *text, int state, WMRect * rect) { _Panel *panel = (_Panel *) WMGetHangedData(lPtr); WMScreen *scr = WMWidgetScreen(lPtr); int width, height, x, y; Display *dpy = WMScreenDisplay(scr); WMColor *back = (state & WLDSSelected) ? WMWhiteColor(scr) : WMGrayColor(scr); WMListItem *item; WMColor *black = WMBlackColor(scr); TextureListItem *titem; /* Parameter not used, but tell the compiler that it is ok */ (void) text; item = WMGetListItem(lPtr, index); titem = (TextureListItem *) item->clientData; if (!titem) { WMReleaseColor(back); WMReleaseColor(black); return; } width = rect->size.width; height = rect->size.height; x = rect->pos.x; y = rect->pos.y; XFillRectangle(dpy, d, WMColorGC(back), x, y, width, height); if (titem->preview) XCopyArea(dpy, titem->preview, d, WMColorGC(black), 0, 0, TEXPREV_WIDTH, TEXPREV_HEIGHT, x + 5, y + 5); if ((1 << WMGetPopUpButtonSelectedItem(panel->secP)) & titem->selectedFor) WMDrawPixmap(panel->onLed, d, x + TEXPREV_WIDTH + 10, y + 6); else if (titem->selectedFor) WMDrawPixmap(panel->offLed, d, x + TEXPREV_WIDTH + 10, y + 6); WMDrawString(scr, d, black, panel->boldFont, x + TEXPREV_WIDTH + 22, y + 2, titem->title, strlen(titem->title)); WMDrawString(scr, d, black, panel->smallFont, x + TEXPREV_WIDTH + 14, y + 18, titem->texture, strlen(titem->texture)); WMReleaseColor(back); WMReleaseColor(black); } static Pixmap loadRImage(WMScreen * scr, const char *path) { FILE *f; RImage *image; int w, h, d, cnt; size_t read_size; Pixmap pixmap; f = fopen(path, "rb"); if (!f) return None; cnt = fscanf(f, "%02x%02x%1x", &w, &h, &d); if (cnt != 3) { wwarning(_("could not read size of image from '%s', ignoring"), path); fclose(f); return None; } if (d < 3 || d > 4) { wwarning(_("image \"%s\" has an invalid depth of %d, ignoring"), path, d); fclose(f); return None; } image = RCreateImage(w, h, d == 4); if (image == NULL) { wwarning(_("could not create RImage for \"%s\": %s"), path, RMessageForError(RErrorCode)); fclose(f); return None; } read_size = w * h * d; if (fread(image->data, 1, read_size, f) == read_size) RConvertImage(WMScreenRContext(scr), image, &pixmap); else pixmap = None; fclose(f); RReleaseImage(image); return pixmap; } static void fillTextureList(WMList * lPtr) { WMPropList *textureList; WMPropList *texture; WMUserDefaults *udb = WMGetStandardUserDefaults(); TextureListItem *titem; WMScreen *scr = WMWidgetScreen(lPtr); int i; textureList = WMGetUDObjectForKey(udb, "TextureList"); if (!textureList) return; for (i = 0; i < WMGetPropListItemCount(textureList); i++) { WMListItem *item; texture = WMGetFromPLArray(textureList, i); titem = wmalloc(sizeof(TextureListItem)); titem->title = wstrdup(WMGetFromPLString(WMGetFromPLArray(texture, 0))); titem->prop = WMRetainPropList(WMGetFromPLArray(texture, 1)); titem->texture = WMGetPropListDescription(titem->prop, False); titem->selectedFor = 0; titem->path = wstrdup(WMGetFromPLString(WMGetFromPLArray(texture, 2))); titem->preview = loadRImage(scr, titem->path); if (!titem->preview) { titem->preview = renderTexture(scr, titem->prop, TEXPREV_WIDTH, TEXPREV_HEIGHT, NULL, 0); } item = WMAddListItem(lPtr, ""); item->clientData = titem; } } static void fillColorList(_Panel * panel) { WMColor *color; WMPropList *list; WMUserDefaults *udb = WMGetStandardUserDefaults(); WMScreen *scr = WMWidgetScreen(panel->box); int i; list = WMGetUDObjectForKey(udb, "ColorList"); if (!list) { for (i = 0; i < wlengthof(sample_colors); i++) { color = WMCreateNamedColor(scr, sample_colors[i], False); if (!color) continue; WMSetColorWellColor(panel->sampW[i], color); WMReleaseColor(color); } } else { WMPropList *c; for (i = 0; i < WMIN(wlengthof(sample_colors), WMGetPropListItemCount(list)); i++) { c = WMGetFromPLArray(list, i); if (!c || !WMIsPLString(c)) continue; color = WMCreateNamedColor(scr, WMGetFromPLString(c), False); if (!color) continue; WMSetColorWellColor(panel->sampW[i], color); WMReleaseColor(color); } } } /*************************************************************************/ static void changeColorPage(WMWidget * w, void *data) { _Panel *panel = (_Panel *) data; int section; WMScreen *scr = WMWidgetScreen(panel->box); RContext *rc = WMScreenRContext(scr); if (panel->preview) { GC gc; gc = XCreateGC(rc->dpy, WMWidgetXID(panel->parent), 0, NULL); XCopyArea(rc->dpy, panel->previewBack, panel->preview, gc, colorOptions[panel->oldcsection].hand.x, colorOptions[panel->oldcsection].hand.y, 22, 22 , colorOptions[panel->oldcsection].hand.x, colorOptions[panel->oldcsection].hand.y); } if (w) { section = WMGetPopUpButtonSelectedItem(panel->colP); panel->oldcsection = section; if (panel->preview) WMDrawPixmap(panel->hand, panel->preview, colorOptions[section].hand.x, colorOptions[section].hand.y); if (section >= ICONT_COL) updateColorPreviewBox(panel, 1 << section); WMSetColorWellColor(panel->colW, panel->colors[section]); } WMRedisplayWidget(panel->prevL); } static void paintText(WMScreen * scr, Drawable d, WMColor * color, WMFont * font, int x, int y, int w, int h, WMAlignment align, char *text) { int l = strlen(text); switch (align) { case WALeft: x += 5; break; case WARight: x += w - 5 - WMWidthOfString(font, text, l); break; default: case WACenter: x += (w - WMWidthOfString(font, text, l)) / 2; break; } WMDrawString(scr, d, color, font, x, y + (h - WMFontHeight(font)) / 2, text, l); } static void updateColorPreviewBox(_Panel * panel, int elements) { WMScreen *scr = WMWidgetScreen(panel->box); Display *dpy = WMScreenDisplay(scr); Pixmap d, pnot; GC gc; d = panel->preview; pnot = panel->previewNoText; gc = WMColorGC(panel->colors[FTITLE_COL]); if (elements & (1 << FTITLE_COL)) { XCopyArea(dpy, pnot, d, gc, 30, 10, 190, 20, 30, 10); paintText(scr, d, panel->colors[FTITLE_COL], panel->boldFont, 30, 10, 190, 20, panel->titleAlignment, _("Focused Window")); } if (elements & (1 << UTITLE_COL)) { XCopyArea(dpy, pnot, d, gc, 30, 40, 190, 20, 30, 40); paintText(scr, d, panel->colors[UTITLE_COL], panel->boldFont, 30, 40, 190, 20, panel->titleAlignment, _("Unfocused Window")); } if (elements & (1 << OTITLE_COL)) { XCopyArea(dpy, pnot, d, gc, 30, 70, 190, 20, 30, 70); paintText(scr, d, panel->colors[OTITLE_COL], panel->boldFont, 30, 70, 190, 20, panel->titleAlignment, _("Owner of Focused Window")); } if (elements & (1 << MTITLE_COL)) { XCopyArea(dpy, pnot, d, gc, 30, 120, 90, 20, 30, 120); paintText(scr, d, panel->colors[MTITLE_COL], panel->boldFont, 30, 120, 90, 20, WALeft, _("Menu Title")); } if (elements & (1 << MITEM_COL)) { XCopyArea(dpy, pnot, d, gc, 30, 140, 90, 20, 30, 140); paintText(scr, d, panel->colors[MITEM_COL], panel->normalFont, 30, 140, 90, 20, WALeft, _("Normal Item")); XCopyArea(dpy, pnot, d, gc, 30, 200, 90, 20, 30, 200); paintText(scr, d, panel->colors[MITEM_COL], panel->normalFont, 30, 200, 90, 20, WALeft, _("Normal Item")); } if (elements & (1 << MDISAB_COL)) { XCopyArea(dpy, pnot, d, gc, 30, 160, 90, 20, 30, 160); paintText(scr, d, panel->colors[MDISAB_COL], panel->normalFont, 30, 160, 90, 20, WALeft, _("Disabled Item")); } if (elements & (1 << MHIGH_COL)) { XFillRectangle(WMScreenDisplay(scr), d, WMColorGC(panel->colors[MHIGH_COL]), 31, 181, 87, 17); XFillRectangle(WMScreenDisplay(scr), pnot, WMColorGC(panel->colors[MHIGH_COL]), 31, 181, 87, 17); elements |= 1 << MHIGHT_COL; } if (elements & (1 << MHIGHT_COL)) { XCopyArea(dpy, pnot, d, gc, 30, 180, 90, 20, 30, 180); paintText(scr, d, panel->colors[MHIGHT_COL], panel->normalFont, 30, 180, 90, 20, WALeft, _("Highlighted")); } if (elements & (1 << FBORDER_COL)) { XDrawRectangle(dpy, pnot, WMColorGC(panel->colors[FBORDER_COL]), 29, 39, 190, 20); XDrawRectangle(dpy, d, WMColorGC(panel->colors[FBORDER_COL]), 29, 39, 190, 20); XDrawRectangle(dpy, pnot, WMColorGC(panel->colors[FBORDER_COL]), 29, 69, 190, 20); XDrawRectangle(dpy, d, WMColorGC(panel->colors[FBORDER_COL]), 29, 69, 190, 20); XDrawLine(dpy, pnot, WMColorGC(panel->colors[FBORDER_COL]), 30, 100, 30, 109); XDrawLine(dpy, d, WMColorGC(panel->colors[FBORDER_COL]), 30, 100, 30, 109); XDrawLine(dpy, pnot, WMColorGC(panel->colors[FBORDER_COL]), 31, 109, 219, 109); XDrawLine(dpy, d, WMColorGC(panel->colors[FBORDER_COL]), 31, 109, 219, 109); XDrawLine(dpy, pnot, WMColorGC(panel->colors[FBORDER_COL]), 220, 100, 220, 109); XDrawLine(dpy, d, WMColorGC(panel->colors[FBORDER_COL]), 220, 100, 220, 109); XDrawLine(dpy, pnot, WMColorGC(panel->colors[FBORDER_COL]), 29, 120, 29, 220); XDrawLine(dpy, d, WMColorGC(panel->colors[FBORDER_COL]), 29, 120, 29, 220); XDrawLine(dpy, pnot, WMColorGC(panel->colors[FBORDER_COL]), 29, 119, 119, 119); XDrawLine(dpy, d, WMColorGC(panel->colors[FBORDER_COL]), 29, 119, 119, 119); XDrawLine(dpy, pnot, WMColorGC(panel->colors[FBORDER_COL]), 119, 120, 119, 220); XDrawLine(dpy, d, WMColorGC(panel->colors[FBORDER_COL]), 119, 120, 119, 220); } if (elements & (1 << FFBORDER_COL)) { XDrawRectangle(dpy, pnot, WMColorGC(panel->colors[FFBORDER_COL]), 29, 9, 190, 20); XDrawRectangle(dpy, d, WMColorGC(panel->colors[FFBORDER_COL]), 29, 9, 190, 20); } if (elements & (1 << ICONT_COL) || elements & (1 << ICONB_COL)) { RColor rgb; RHSVColor hsv, hsv2; int v; WMColor *light, *dim; updatePreviewBox(panel, 1 << PICON); rgb.red = WMRedComponentOfColor(panel->colors[ICONB_COL]) >> 8; rgb.green = WMGreenComponentOfColor(panel->colors[ICONB_COL]) >> 8; rgb.blue = WMBlueComponentOfColor(panel->colors[ICONB_COL]) >> 8; RRGBtoHSV(&rgb, &hsv); RHSVtoRGB(&hsv, &rgb); hsv2 = hsv; v = hsv.value * 16 / 10; hsv.value = (v > 255 ? 255 : v); RHSVtoRGB(&hsv, &rgb); light = WMCreateRGBColor(scr, rgb.red << 8, rgb.green << 8, rgb.blue << 8, False); hsv2.value = hsv2.value / 2; RHSVtoRGB(&hsv2, &rgb); dim = WMCreateRGBColor(scr, rgb.red << 8, rgb.green << 8, rgb.blue << 8, False); XFillRectangle(dpy, d, WMColorGC(panel->colors[ICONB_COL]), 156, 131, 62, 11); XDrawLine(dpy, d, WMColorGC(light), 155, 130, 155, 142); XDrawLine(dpy, d, WMColorGC(light), 156, 130, 217, 130); XDrawLine(dpy, d, WMColorGC(dim), 218, 130, 218, 142); paintText(scr, d, panel->colors[ICONT_COL], panel->smallFont, 155, 130, 64, 13, WALeft, _("Icon Text")); WMReleaseColor(light); WMReleaseColor(dim); } if (elements & (1 << CLIP_COL) || elements & (1 << CCLIP_COL)) { Pixmap pix; RColor black; RColor dark; RColor light; RImage *tile; TextureListItem *titem; WMListItem *item; XPoint p[4]; item = WMGetListItem(panel->texLs, panel->textureIndex[PICON]); titem = (TextureListItem *) item->clientData; pix = renderTexture(scr, titem->prop, 64, 64, NULL, titem->ispixmap ? 0 : RBEV_RAISED3); tile = RCreateImageFromDrawable(WMScreenRContext(scr), pix, None); black.alpha = 255; black.red = black.green = black.blue = 0; dark.alpha = 0; dark.red = dark.green = dark.blue = 60; light.alpha = 0; light.red = light.green = light.blue = 80; /* top right */ ROperateLine(tile, RSubtractOperation, 64 - 1 - 23, 0, 64 - 2, 23 - 1, &dark); RDrawLine(tile, 64 - 1 - 23 - 1, 0, 64 - 1, 23 + 1, &black); ROperateLine(tile, RAddOperation, 64 - 1 - 23, 2, 64 - 3, 23, &light); /* arrow bevel */ ROperateLine(tile, RSubtractOperation, 64 - 7 - (23 - 15), 4, 64 - 5, 4, &dark); ROperateLine(tile, RSubtractOperation, 64 - 6 - (23 - 15), 5, 64 - 5, 6 + 23 - 15, &dark); ROperateLine(tile, RAddOperation, 64 - 5, 4, 64 - 5, 6 + 23 - 15, &light); /* bottom left */ ROperateLine(tile, RAddOperation, 2, 64 - 1 - 23 + 2, 23 - 2, 64 - 3, &dark); RDrawLine(tile, 0, 64 - 1 - 23 - 1, 23 + 1, 64 - 1, &black); ROperateLine(tile, RSubtractOperation, 0, 64 - 1 - 23 - 2, 23 + 1, 64 - 2, &light); /* arrow bevel */ ROperateLine(tile, RSubtractOperation, 4, 64 - 7 - (23 - 15), 4, 64 - 5, &dark); ROperateLine(tile, RSubtractOperation, 5, 64 - 6 - (23 - 15), 6 + 23 - 15, 64 - 5, &dark); ROperateLine(tile, RAddOperation, 4, 64 - 5, 6 + 23 - 15, 64 - 5, &light); RConvertImage(WMScreenRContext(scr), tile, &pix); RReleaseImage(tile); XCopyArea(dpy, pix, d, gc, 0, 0, 64, 64, 155, 130); XFreePixmap(dpy, pix); /* top right arrow */ p[0].x = p[3].x = 155 + 64 - 5 - (23 - 15); p[0].y = p[3].y = 130 + 5; p[1].x = 155 + 64 - 6; p[1].y = 130 + 5; p[2].x = 155 + 64 - 6; p[2].y = 130 + 4 + 23 - 15; XFillPolygon(dpy, d, WMColorGC(panel->colors[CLIP_COL]), p, 3, Convex, CoordModeOrigin); XDrawLines(dpy, d, WMColorGC(panel->colors[CLIP_COL]), p, 4, CoordModeOrigin); /* bottom left arrow */ p[0].x = p[3].x = 155 + 5; p[0].y = p[3].y = 130 + 64 - 5 - (23 - 15); p[1].x = 155 + 5; p[1].y = 130 + 64 - 6; p[2].x = 155 + 4 + 23 - 15; p[2].y = 130 + 64 - 6; XFillPolygon(dpy, d, WMColorGC(panel->colors[CLIP_COL]), p, 3, Convex, CoordModeOrigin); XDrawLines(dpy, d, WMColorGC(panel->colors[CLIP_COL]), p, 4, CoordModeOrigin); } if (elements & (1 << CLIP_COL)) paintText(scr, d, panel->colors[CLIP_COL], panel->boldFont, 155 + 23, 130 + 64 - 15 - 3, 22, 15, WALeft, _("Clip")); if (elements & (1 << CCLIP_COL)) { paintText(scr, d, panel->colors[CCLIP_COL], panel->boldFont, 155+2, 130 + 2, 26, 15, WALeft, _("Coll.")); paintText(scr, d, panel->colors[CCLIP_COL], panel->boldFont, 155 + 23, 130 + 64 - 15 - 3, 22, 15, WALeft, _("Clip")); } WMRedisplayWidget(panel->prevL); } static void colorWellObserver(void *self, WMNotification * n) { _Panel *panel = (_Panel *) self; int p; /* Parameter not used, but tell the compiler that it is ok */ (void) n; p = WMGetPopUpButtonSelectedItem(panel->colP); WMReleaseColor(panel->colors[p]); panel->colors[p] = WMRetainColor(WMGetColorWellColor(panel->colW)); updateColorPreviewBox(panel, 1 << p); } static void changedTabItem(struct WMTabViewDelegate *self, WMTabView * tabView, WMTabViewItem * item) { _Panel *panel = self->data; int i; /* Parameter not used, but tell the compiler that it is ok */ (void) tabView; i = WMGetTabViewItemIdentifier(item); switch (i) { case TAB_TEXTURE: switch (panel->oldTabItem) { case TAB_COLOR: changeColorPage(NULL, panel); break; } changePage(panel->secP, panel); break; case TAB_COLOR: switch (panel->oldTabItem) { case TAB_TEXTURE: changePage(NULL, panel); break; } changeColorPage(panel->colP, panel); break; case TAB_OPTIONS: switch (panel->oldTabItem) { case TAB_TEXTURE: changePage(NULL, panel); break; case TAB_COLOR: changeColorPage(NULL, panel); break; } break; } panel->oldTabItem = i; } /*************************************************************************/ static void menuStyleCallback(WMWidget * self, void *data) { _Panel *panel = (_Panel *) data; menu_style_index i; for (i = 0; i < wlengthof(menu_style); i++) { if (self == panel->mstyB[i]) { panel->menuStyle = i; break; } } updatePreviewBox(panel, 1 << PMITEM); } static void titleAlignCallback(WMWidget * self, void *data) { _Panel *panel = (_Panel *) data; WMAlignment align; for (align = 0; align < wlengthof(wintitle_align); align++) { if (self == panel->taliB[align]) { panel->titleAlignment = align; break; } } updatePreviewBox(panel, 1 << PFOCUSED | 1 << PUNFOCUSED | 1 << POWNER); } static void createPanel(Panel * p) { _Panel *panel = (_Panel *) p; WMFont *font; WMScreen *scr = WMWidgetScreen(panel->parent); WMTabViewItem *item; int i; char *tmp; Bool ok = True; panel->fprefix = wstrconcat(wusergnusteppath(), "/Library/WindowMaker"); if (access(panel->fprefix, F_OK) != 0) { if (mkdir(panel->fprefix, 0755) < 0) { werror("%s", panel->fprefix); ok = False; } } if (ok) { tmp = wstrconcat(panel->fprefix, "/WPrefs/"); wfree(panel->fprefix); panel->fprefix = tmp; if (access(panel->fprefix, F_OK) != 0) { if (mkdir(panel->fprefix, 0755) < 0) { werror("%s", panel->fprefix); } } } panel->smallFont = WMSystemFontOfSize(scr, 10); panel->normalFont = WMSystemFontOfSize(scr, 12); panel->boldFont = WMBoldSystemFontOfSize(scr, 12); panel->onLed = WMCreatePixmapFromXPMData(scr, blueled_xpm); panel->offLed = WMCreatePixmapFromXPMData(scr, blueled2_xpm); panel->hand = WMCreatePixmapFromXPMData(scr, hand_xpm); panel->box = WMCreateBox(panel->parent); WMSetViewExpandsToParent(WMWidgetView(panel->box), 2, 2, 2, 2); /* preview box */ panel->prevL = WMCreateLabel(panel->box); WMResizeWidget(panel->prevL, 240, FRAME_HEIGHT - 20); WMMoveWidget(panel->prevL, 15, 10); WMSetLabelRelief(panel->prevL, WRSunken); WMSetLabelImagePosition(panel->prevL, WIPImageOnly); WMCreateEventHandler(WMWidgetView(panel->prevL), ButtonPressMask, previewClick, panel); /* tabview */ tabviewDelegate.data = panel; panel->tabv = WMCreateTabView(panel->box); WMResizeWidget(panel->tabv, 245, FRAME_HEIGHT - 20); WMMoveWidget(panel->tabv, 265, 10); WMSetTabViewDelegate(panel->tabv, &tabviewDelegate); /*** texture list ***/ panel->texF = WMCreateFrame(panel->box); WMSetFrameRelief(panel->texF, WRFlat); item = WMCreateTabViewItemWithIdentifier(TAB_TEXTURE); WMSetTabViewItemView(item, WMWidgetView(panel->texF)); WMSetTabViewItemLabel(item, _("Texture")); WMAddItemInTabView(panel->tabv, item); panel->secP = WMCreatePopUpButton(panel->texF); WMResizeWidget(panel->secP, 228, 20); WMMoveWidget(panel->secP, 7, 7); for (i = 0; i < wlengthof(textureOptions); i++) WMAddPopUpButtonItem(panel->secP, _(textureOptions[i].popup_label)); WMSetPopUpButtonSelectedItem(panel->secP, 0); WMSetPopUpButtonAction(panel->secP, changePage, panel); panel->texLs = WMCreateList(panel->texF); WMResizeWidget(panel->texLs, 165, 155); WMMoveWidget(panel->texLs, 70, 33); WMSetListUserDrawItemHeight(panel->texLs, 35); WMSetListUserDrawProc(panel->texLs, paintListItem); WMHangData(panel->texLs, panel); WMSetListAction(panel->texLs, textureClick, panel); WMSetListDoubleAction(panel->texLs, textureDoubleClick, panel); WMSetBalloonTextForView(_("Double click in the texture you want to use\n" "for the selected item."), WMWidgetView(panel->texLs)); /* command buttons */ font = WMSystemFontOfSize(scr, 10); panel->newB = WMCreateCommandButton(panel->texF); WMResizeWidget(panel->newB, 57, 39); WMMoveWidget(panel->newB, 7, 33); WMSetButtonFont(panel->newB, font); WMSetButtonImagePosition(panel->newB, WIPAbove); WMSetButtonText(panel->newB, _("New")); WMSetButtonAction(panel->newB, newTexture, panel); SetButtonAlphaImage(scr, panel->newB, TNEW_FILE); WMSetBalloonTextForView(_("Create a new texture."), WMWidgetView(panel->newB)); panel->ripB = WMCreateCommandButton(panel->texF); WMResizeWidget(panel->ripB, 57, 39); WMMoveWidget(panel->ripB, 7, 72); WMSetButtonFont(panel->ripB, font); WMSetButtonImagePosition(panel->ripB, WIPAbove); WMSetButtonText(panel->ripB, _("Extract...")); WMSetButtonAction(panel->ripB, extractTexture, panel); SetButtonAlphaImage(scr, panel->ripB, TEXTR_FILE); WMSetBalloonTextForView(_("Extract texture(s) from a theme or a style file."), WMWidgetView(panel->ripB)); WMSetButtonEnabled(panel->ripB, False); panel->editB = WMCreateCommandButton(panel->texF); WMResizeWidget(panel->editB, 57, 39); WMMoveWidget(panel->editB, 7, 111); WMSetButtonFont(panel->editB, font); WMSetButtonImagePosition(panel->editB, WIPAbove); WMSetButtonText(panel->editB, _("Edit")); SetButtonAlphaImage(scr, panel->editB, TEDIT_FILE); WMSetButtonAction(panel->editB, editTexture, panel); WMSetBalloonTextForView(_("Edit the highlighted texture."), WMWidgetView(panel->editB)); panel->delB = WMCreateCommandButton(panel->texF); WMResizeWidget(panel->delB, 57, 38); WMMoveWidget(panel->delB, 7, 150); WMSetButtonFont(panel->delB, font); WMSetButtonImagePosition(panel->delB, WIPAbove); WMSetButtonText(panel->delB, _("Delete")); SetButtonAlphaImage(scr, panel->delB, TDEL_FILE); WMSetButtonEnabled(panel->delB, False); WMSetButtonAction(panel->delB, deleteTexture, panel); WMSetBalloonTextForView(_("Delete the highlighted texture."), WMWidgetView(panel->delB)); WMReleaseFont(font); WMMapSubwidgets(panel->texF); /*** colors ***/ panel->colF = WMCreateFrame(panel->box); WMSetFrameRelief(panel->colF, WRFlat); item = WMCreateTabViewItemWithIdentifier(TAB_COLOR); WMSetTabViewItemView(item, WMWidgetView(panel->colF)); WMSetTabViewItemLabel(item, _("Color")); WMAddItemInTabView(panel->tabv, item); panel->colP = WMCreatePopUpButton(panel->colF); WMResizeWidget(panel->colP, 228, 20); WMMoveWidget(panel->colP, 7, 7); for (i = 0; i < wlengthof(colorOptions); i++) WMAddPopUpButtonItem(panel->colP, _(colorOptions[i].label)); WMSetPopUpButtonSelectedItem(panel->colP, 0); WMSetPopUpButtonAction(panel->colP, changeColorPage, panel); panel->colW = WMCreateColorWell(panel->colF); WMResizeWidget(panel->colW, 65, 50); WMMoveWidget(panel->colW, 30, 75); WMAddNotificationObserver(colorWellObserver, panel, WMColorWellDidChangeNotification, panel->colW); { /* Distribute the color samples regularly in the right half */ const int parent_width = 242; const int parent_height = 195; const int available_width = (parent_width / 2) - 7; const int available_height = parent_height - 7 - 20 - 7 - 7; const int widget_size = 22; const int nb_x = (int) round(sqrt(wlengthof(sample_colors) * available_width / available_height)); const int nb_y = (wlengthof(sample_colors) + nb_x - 1) / nb_x; const int offset_x = (parent_width / 2) + (available_width - nb_x * widget_size) / 2; const int offset_y = (7 + 20 + 7) + (available_height - nb_y * widget_size) / 2; int x, y; x = 0; y = 0; for (i = 0; i < wlengthof(sample_colors); i++) { panel->sampW[i] = WMCreateColorWell(panel->colF); WMResizeWidget(panel->sampW[i], widget_size, widget_size); WMMoveWidget(panel->sampW[i], offset_x + x * widget_size, offset_y + y * widget_size); WSetColorWellBordered(panel->sampW[i], False); if (++x >= nb_x) { y++; x = 0; } } } WMMapSubwidgets(panel->colF); /*** options ***/ panel->optF = WMCreateFrame(panel->box); WMSetFrameRelief(panel->optF, WRFlat); item = WMCreateTabViewItemWithIdentifier(TAB_OPTIONS); WMSetTabViewItemView(item, WMWidgetView(panel->optF)); WMSetTabViewItemLabel(item, _("Options")); WMAddItemInTabView(panel->tabv, item); panel->mstyF = WMCreateFrame(panel->optF); WMResizeWidget(panel->mstyF, 215, 85); WMMoveWidget(panel->mstyF, 15, 10); WMSetFrameTitle(panel->mstyF, _("Menu Style")); for (i = 0; i < wlengthof(menu_style); i++) { WMPixmap *icon; char *path; panel->mstyB[i] = WMCreateButton(panel->mstyF, WBTOnOff); WMResizeWidget(panel->mstyB[i], 54, 54); WMMoveWidget(panel->mstyB[i], 15 + i * 65, 20); WMSetButtonImagePosition(panel->mstyB[i], WIPImageOnly); WMSetButtonAction(panel->mstyB[i], menuStyleCallback, panel); path = LocateImage(menu_style[i].file_name); if (path) { icon = WMCreatePixmapFromFile(scr, path); if (icon) { WMSetButtonImage(panel->mstyB[i], icon); WMReleasePixmap(icon); } else { wwarning(_("could not load icon file %s"), path); } wfree(path); } } WMGroupButtons(panel->mstyB[0], panel->mstyB[1]); WMGroupButtons(panel->mstyB[0], panel->mstyB[2]); WMMapSubwidgets(panel->mstyF); panel->taliF = WMCreateFrame(panel->optF); WMResizeWidget(panel->taliF, 110, 80); WMMoveWidget(panel->taliF, 15, 100); WMSetFrameTitle(panel->taliF, _("Title Alignment")); for (i = 0; i < wlengthof(wintitle_align); i++) { panel->taliB[i] = WMCreateRadioButton(panel->taliF); WMSetButtonAction(panel->taliB[i], titleAlignCallback, panel); WMSetButtonText(panel->taliB[i], _(wintitle_align[i].label)); WMResizeWidget(panel->taliB[i], 90, 18); WMMoveWidget(panel->taliB[i], 10, 15 + 20 * i); } WMGroupButtons(panel->taliB[0], panel->taliB[1]); WMGroupButtons(panel->taliB[0], panel->taliB[2]); WMMapSubwidgets(panel->taliF); WMMapSubwidgets(panel->optF); /**/ WMRealizeWidget(panel->box); WMMapSubwidgets(panel->box); WMSetPopUpButtonSelectedItem(panel->secP, 0); showData(panel); changePage(panel->secP, panel); fillTextureList(panel->texLs); fillColorList(panel); panel->texturePanel = CreateTexturePanel(panel->parent); } static void setupTextureFor(WMList *list, const char *key, const char *defValue, const char *title, int index) { WMListItem *item; TextureListItem *titem; titem = wmalloc(sizeof(TextureListItem)); titem->title = wstrdup(title); titem->prop = GetObjectForKey(key); if (!titem->prop || !WMIsPLArray(titem->prop)) { /* Maybe also give a error message to stderr that the entry is bad? */ titem->prop = WMCreatePropListFromDescription(defValue); } else { WMRetainPropList(titem->prop); } titem->texture = WMGetPropListDescription((WMPropList *) titem->prop, False); titem->current = 1; titem->selectedFor = 1 << index; titem->ispixmap = isPixmap(titem->prop); titem->preview = renderTexture(WMWidgetScreen(list), titem->prop, TEXPREV_WIDTH, TEXPREV_HEIGHT, NULL, 0); item = WMAddListItem(list, ""); item->clientData = titem; } static void showData(_Panel * panel) { int i; const char *str; str = GetStringForKey("MenuStyle"); panel->menuStyle = MSTYLE_NORMAL; if (str != NULL) { for (i = 0; i < wlengthof(menu_style); i++) { if (strcasecmp(str, menu_style[i].db_value) == 0) { panel->menuStyle = i; break; } } } str = GetStringForKey("TitleJustify"); panel->titleAlignment = WACenter; if (str != NULL) { WMAlignment align; for (align = 0; align < wlengthof(wintitle_align); align++) { if (strcasecmp(str, wintitle_align[align].db_value) == 0) { panel->titleAlignment = align; break; } } } for (i = 0; i < wlengthof(colorOptions); i++) { WMColor *color; str = GetStringForKey(colorOptions[i].key); if (!str) str = colorOptions[i].default_value; if (!(color = WMCreateNamedColor(WMWidgetScreen(panel->box), str, False))) { color = WMCreateNamedColor(WMWidgetScreen(panel->box), "#000000", False); } panel->colors[i] = color; } changeColorPage(panel->colP, panel); for (i = 0; i < wlengthof(textureOptions); i++) { setupTextureFor(panel->texLs, textureOptions[i].key, textureOptions[i].default_value, _(textureOptions[i].texture_label), i); panel->textureIndex[i] = i; } updatePreviewBox(panel, EVERYTHING); WMSetButtonSelected(panel->mstyB[panel->menuStyle], True); WMSetButtonSelected(panel->taliB[panel->titleAlignment], True); } static void storeData(_Panel * panel) { TextureListItem *titem; WMListItem *item; int i; for (i = 0; i < wlengthof(textureOptions); i++) { item = WMGetListItem(panel->texLs, panel->textureIndex[i]); titem = (TextureListItem *) item->clientData; SetObjectForKey(titem->prop, textureOptions[i].key); } for (i = 0; i < wlengthof(colorOptions); i++) { char *str; str = WMGetColorRGBDescription(panel->colors[i]); if (str) { SetStringForKey(str, colorOptions[i].key); wfree(str); } } SetStringForKey(menu_style[panel->menuStyle].db_value, "MenuStyle"); SetStringForKey(wintitle_align[panel->titleAlignment].db_value, "TitleJustify"); } static void prepareForClose(_Panel * panel) { WMPropList *textureList; WMPropList *texture; TextureListItem *titem; WMListItem *item; WMUserDefaults *udb = WMGetStandardUserDefaults(); int i; textureList = WMCreatePLArray(NULL, NULL); /* store list of textures */ for (i = 8; i < WMGetListNumberOfRows(panel->texLs); i++) { WMPropList *pl_title, *pl_path; item = WMGetListItem(panel->texLs, i); titem = (TextureListItem *) item->clientData; pl_title = WMCreatePLString(titem->title); pl_path = WMCreatePLString(titem->path); texture = WMCreatePLArray(pl_title, titem->prop, pl_path, NULL); WMReleasePropList(pl_title); WMReleasePropList(pl_path); WMAddToPLArray(textureList, texture); } WMSetUDObjectForKey(udb, textureList, "TextureList"); WMReleasePropList(textureList); /* store list of colors */ textureList = WMCreatePLArray(NULL, NULL); for (i = 0; i < wlengthof(sample_colors); i++) { WMColor *color; char *str; WMPropList *pl_color; color = WMGetColorWellColor(panel->sampW[i]); str = WMGetColorRGBDescription(color); pl_color = WMCreatePLString(str); WMAddToPLArray(textureList, pl_color); WMReleasePropList(pl_color); wfree(str); } WMSetUDObjectForKey(udb, textureList, "ColorList"); WMReleasePropList(textureList); WMSynchronizeUserDefaults(udb); } Panel *InitAppearance(WMWidget *parent) { _Panel *panel; panel = wmalloc(sizeof(_Panel)); panel->sectionName = _("Appearance Preferences"); panel->description = _("Background texture configuration for windows,\n" "menus and icons."); panel->parent = parent; panel->callbacks.createWidgets = createPanel; panel->callbacks.updateDomain = storeData; panel->callbacks.prepareForClose = prepareForClose; AddSection(panel, ICON_FILE); return panel; } /****************************************************************************/ typedef struct ExtractPanel { WMWindow *win; WMLabel *label; WMList *list; WMButton *closeB; WMButton *extrB; } ExtractPanel; static void OpenExtractPanelFor(_Panel *panel) { ExtractPanel *epanel; WMColor *color; WMFont *font; WMScreen *scr = WMWidgetScreen(panel->parent); epanel = wmalloc(sizeof(ExtractPanel)); epanel->win = WMCreatePanelWithStyleForWindow(panel->parent, "extract", WMTitledWindowMask | WMClosableWindowMask); WMResizeWidget(epanel->win, 245, 250); WMSetWindowTitle(epanel->win, _("Extract Texture")); epanel->label = WMCreateLabel(epanel->win); WMResizeWidget(epanel->label, 225, 18); WMMoveWidget(epanel->label, 10, 10); WMSetLabelTextAlignment(epanel->label, WACenter); WMSetLabelRelief(epanel->label, WRSunken); color = WMDarkGrayColor(scr); WMSetWidgetBackgroundColor(epanel->label, color); WMReleaseColor(color); color = WMWhiteColor(scr); WMSetLabelTextColor(epanel->label, color); WMReleaseColor(color); font = WMBoldSystemFontOfSize(scr, 12); WMSetLabelFont(epanel->label, font); WMReleaseFont(font); WMSetLabelText(epanel->label, _("Textures")); epanel->list = WMCreateList(epanel->win); WMResizeWidget(epanel->list, 225, 165); WMMoveWidget(epanel->list, 10, 30); epanel->closeB = WMCreateCommandButton(epanel->win); WMResizeWidget(epanel->closeB, 74, 24); WMMoveWidget(epanel->closeB, 165, 215); WMSetButtonText(epanel->closeB, _("Close")); epanel->extrB = WMCreateCommandButton(epanel->win); WMResizeWidget(epanel->extrB, 74, 24); WMMoveWidget(epanel->extrB, 80, 215); WMSetButtonText(epanel->extrB, _("Extract")); WMMapSubwidgets(epanel->win); /* take textures from file */ WMRealizeWidget(epanel->win); WMMapWidget(epanel->win); } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/WPrefs.xpm������������������������������������������������������������0000644�0001750�0001750�00000021146�13431646201�014713� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * WPrefs_xpm[] = { "48 48 247 2", " c None", ". c #07C500", "+ c #07C400", "@ c #09C400", "# c #09C300", "$ c #0AC300", "% c #0BC100", "& c #0DC100", "* c #0EC000", "= c #0FBF00", "- c #11BD00", "; c #12BD00", "> c #13BD00", ", c #13BC00", "' c #15BB00", ") c #16BB00", "! c #16B900", "~ c #17B900", "{ c #19B900", "] c #19B800", "^ c #1AB800", "/ c #1AB700", "( c #1BB700", "_ c #1BB500", ": c #1DB500", "< c #1EB500", "[ c #1FB400", "} c #1FB300", "| c #21B300", "1 c #22B100", "2 c #23B100", "3 c #050505", "4 c #000000", "5 c #323232", "6 c #404040", "7 c #BFBFBF", "8 c #1F1F1F", "9 c #C1C1C1", "0 c #C5C5C5", "a c #C7C7C7", "b c #FFFFFF", "c c #F9F9F9", "d c #656565", "e c #030303", "f c #C9C9C9", "g c #E6E6E6", "h c #E2E2E2", "i c #DCDCDC", "j c #E8E8E8", "k c #D4D4D4", "l c #25B000", "m c #262626", "n c #B3B3B3", "o c #C8C8C8", "p c #E4E4E4", "q c #D3D3D3", "r c #D9D9D9", "s c #DDDDDD", "t c #D1D1D1", "u c #AEAEAE", "v c #F3F3F3", "w c #E0E0E0", "x c #CECECE", "y c #29AD0E", "z c #26B000", "A c #070707", "B c #E5E5E5", "C c #F0F0F0", "D c #A9A9A9", "E c #010101", "F c #C0C0C0", "G c #9D9D9D", "H c #CDCDCD", "I c #26AF00", "J c #0A0A0A", "K c #A7A7A7", "L c #040404", "M c #7DD371", "N c #D7D7D7", "O c #1D1D1D", "P c #939393", "Q c #CACACA", "R c #27AF00", "S c #0E0E0E", "T c #E7E7E7", "U c #969696", "V c #020202", "W c #0D0D0D", "X c #677964", "Y c #3A3A3A", "Z c #DFDFDF", "` c #27AD00", " . c #0C0C0C", ".. c #8E8E8E", "+. c #818181", "@. c #DEDEDE", "#. c #E3E3E3", "$. c #C4C4C4", "%. c #B4B4B4", "&. c #D6D6D6", "*. c #0F0F0F", "=. c #898989", "-. c #29AD00", ";. c #C6C6C6", ">. c #242424", ",. c #141414", "'. c #7D7D7D", "). c #BDBDBD", "!. c #D2D2D2", "~. c #ABABAB", "{. c #131313", "]. c #EAEAEA", "^. c #808080", "/. c #E1E1E1", "(. c #2AAD00", "_. c #959595", ":. c #F1F1F1", "<. c #7C7C7C", "[. c #D5D5D5", "}. c #2AAC00", "|. c #24B814", "1. c #7CD472", "2. c #8FA98C", "3. c #171717", "4. c #EDEDED", "5. c #090909", "6. c #86A07E", "7. c #7CC463", "8. c #2BAC00", "9. c #B5B5B5", "0. c #1B1B1B", "a. c #EFEFEF", "b. c #787878", "c. c #494949", "d. c #1E1E1E", "e. c #6F6F6F", "f. c #080808", "g. c #393939", "h. c #2BAB00", "i. c #C3C3C3", "j. c #9A9A9A", "k. c #F4F4F4", "l. c #676767", "m. c #2C2C2C", "n. c #CCCCCC", "o. c #2DAB00", "p. c #F6F6F6", "q. c #5E5E5E", "r. c #060606", "s. c #212121", "t. c #626262", "u. c #2DAA00", "v. c #BABABA", "w. c #F5F5F5", "x. c #606060", "y. c #CFCFCF", "z. c #9E9E9E", "A. c #181818", "B. c #646464", "C. c #2EAA00", "D. c #878787", "E. c #292929", "F. c #FDFDFD", "G. c #5A5A5A", "H. c #383838", "I. c #121212", "J. c #919191", "K. c #2F2F2F", "L. c #FCFCFC", "M. c #4C4C4C", "N. c #8F8F8F", "O. c #7E7E7E", "P. c #2FAA00", "Q. c #6E6E6E", "R. c #282828", "S. c #6D6D6D", "T. c #BCBCBC", "U. c #5D5D5D", "V. c #2FA800", "W. c #333333", "X. c #31A800", "Y. c #C2C2C2", "Z. c #868686", "`. c #DADADA", " + c #B9B9B9", ".+ c #D8D8D8", "++ c #BBBBBB", "@+ c #32A700", "#+ c #0B0B0B", "$+ c #989898", "%+ c #111111", "&+ c #717171", "*+ c #D0D0D0", "=+ c #B2B2B2", "-+ c #949494", ";+ c #BEBEBE", ">+ c #101010", ",+ c #848484", "'+ c #33A600", ")+ c #707070", "!+ c #CBCBCB", "~+ c #ADADAD", "{+ c #D8D9DB", "]+ c #7A7A7A", "^+ c #737373", "/+ c #2AB111", "(+ c #82D073", "_+ c #8DA488", ":+ c #565656", "<+ c #6A6A6A", "[+ c #2A2A2A", "}+ c #A9D098", "|+ c #4AA620", "1+ c #35A400", "2+ c #484848", "3+ c #666666", "4+ c #777777", "5+ c #363636", "6+ c #585858", "7+ c #797979", "8+ c #36A400", "9+ c #888888", "0+ c #37A400", "a+ c #6C6C6C", "b+ c #37A300", "c+ c #B7B7B7", "d+ c #667461", "e+ c #4B4B4B", "f+ c #84CB70", "g+ c #B0B0B0", "h+ c #979797", "i+ c #72BC55", "j+ c #999999", "k+ c #39A200", "l+ c #A0A0A0", "m+ c #A2A2A2", "n+ c #A4A4A4", "o+ c #3AA200", "p+ c #B6B6B6", "q+ c #A3A3A3", "r+ c #A8A8A8", "s+ c #3AA000", "t+ c #929292", "u+ c #8A8A8A", "v+ c #3BA000", "w+ c #3DA000", "x+ c #3D9F00", ". + @ # $ $ % % % & & * * = = = - - ; ; > , , ' ' ) ! ~ ~ ~ { ] ^ / ( ( _ : : < < [ [ } | | 1 1 ", "+ - / 2 ", "@ 3 4 4 5 - ( 2 ", "# 3 6 7 8 4 4 ; 9 0 ( 2 ", "$ 4 a b c d e 4 ; f g h i j k _ l ", "$ 4 m b b b n 4 > o g p q r r r s j t : l ", "% 5 4 u b b v e 4 , w p q r r r r r r r s g x y z ", "% 4 A B C b D E E , F G r r r r r r r r r r r s g H I ", "% 4 4 J b b K L e M N q 4 O P r r r r r r r r r r r i g Q R ", "& 4 S T b U V W X 3 4 4 4 V Y r r r r r r r r r r r r Z B a ` ", "& 4 .j b ..V 4 4 4 4 4 4 4 J +.r r r r r r r r r r r r @.#.$. ` ", "* %.&.4 *.j b =.4 4 4 4 4 4 4 r r r r r r r r r r r r r r r @.#.9 -.", "* a ;.>.4 4 ,.T b '.V 4 4 4 O r r r r r r r r r r r r r r r r r r t Z h ). -.", "= !.~.3 4 4 4 4 {.].b ^.4 4 r r r r r r r r r r r r r r r r r r r r r r !.Z /.). (.", "= t _.4 4 4 4 4 4 4 {.:.b <.4 r r r r r r r r r r r r r r r r r r r r r r r r [.s N }.", "= - - |.1.2.4 4 4 4 4 4 4 4 4 3.4.b +.5.r r r r r r r r r r r r r r r r r r r r r r r r r 6.7.8.", "- 9.9 V 4 4 4 4 4 4 4 4 4 4 0.a.b b.5.r r r r r r r r r r r r r r r r r r r r r r /.c.G ~.8.", "- [.d.4 4 4 4 4 4 4 4 4 4 4 4 8 :.b e.f.r r r r r r r r r r r r r r r r r r r r t g.4 9 h.", "; i.j.4 4 4 4 4 4 4 4 4 4 4 4 4 4 O k.b l.S r r r r r r r r r r r r r r r r r r r m.4 3 n. o.", "; k S 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 8 p.b q.r.r r r r r r r r r r r r r r r r [.s.4 4 t.i. u.", "> v.4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 s.w.b x.L 4 8 d.r.y.r r r r r r r r r z.A.4 4 4 B.F C.", ", $.D.4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 E.F.b G.H.b b Z I.r r r r r r r r J.{.4 4 4 4 3 f C.", ", y.c.4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 K.L.b b b b b M.N.r r r r r r O.*.4 4 4 4 4 4 9 P.", "' q I.4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 r r a 4 Q.b b b b b p R.A G r r r S.5.4 4 4 4 4 4 4 T. P.", "' q I.4 4 4 4 4 4 4 4 4 4 4 4 4 4 r r r 4 5 b b b b b b b b j 0.G /.U.3 4 4 4 4 4 4 4 4 T. V.", ") n.c.4 4 4 4 4 4 4 4 4 4 4 4 4 r r r r 4 b b b b b b b b b b T A.W.V 4 4 4 4 4 4 4 4 4 9 X.", "! Y.Z.4 4 4 4 4 4 4 4 4 4 4 4 r r r r r 4 b b b b b b b b b b b `.{.4 4 4 4 4 4 4 4 4 3 o X.", "~ +4 4 4 4 4 4 4 4 4 4 4 4 s.t r r r r 4 B.b b b b b b b b b b b .+I.4 4 4 4 4 4 4 4 U.++ @+", "~ !.#+4 4 4 4 4 4 4 4 4 4 4 4 A.$+r r r r 4 %+&+b b b b b b b b b b *+%+4 4 4 4 4 4 4 =+-+ @+", "~ ;+_.4 4 4 4 4 4 4 4 4 4 4 4 4 >+,+r r r r a 4 b b b b b b b b b b b x >+4 4 4 4 4 m o '+", "{ !.O 4 4 4 4 4 4 4 4 4 4 4 4 4 J )+r r r r 4 )+b b b b b b b b b b b !+W 4 4 4 4 %.j. '+", "] ~+F V 4 4 4 4 4 4 4 4 4 4 4 4 4 3 x.{+r r r 4 ]+b b b b b b b b b b b o .4 4 ^+F '+", "^ / ( /+(+_+4 4 4 4 4 4 4 4 4 4 4 4 4 4 e :+@.r r !.4 <+b b b b b b b b b b b $.J [+}+|+'+'+'+1+", "/ x _.4 4 4 4 4 4 4 4 4 4 4 4 4 4 E 2+x r 3+J E 4+b b b b b b b b b b b %.5.5+ 1+", "( !+D 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 Y 6+r.4 4 4 7+b b b b b b b b b b b ).5.S 8+", "( ;+0 >.4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 ,+b b b b b b b b b b b 0 A %+ 8+", "_ t U 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 E 9+b b b b b b b b b b b !+3 0+", ": v.y.$+%+4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 =.b b b b b b b b b b b a+4 b+", ": 9.y.c+d+S 4 4 4 4 4 4 4 4 4 4 4 4 4 4 e+V G b b b b b b b b b b .+4 b+", "< f+Q Y.g+h+#+4 4 4 4 4 4 V G ;+f F i+V j+b b b b b b b b b L.4 k+", "< R l+0 i.3 4 4 4 4 V g+i. X. L m+b b b b b b b b h 4 k+", "[ ` %.v.V 4 4 4 n+T. X. 3 m+b b b b b b b ]+4 o+", "[ ` p+p+V 4 q+F @+ L r+b b b b b Z f.4 s+", "} -. c+K t+F @+ e a+k b :.u+#+4 v+", "| -. '+ 4 4 4 4 4 4 v+", "| (. '+ v+", "1 }. '+ w+", "1 2 2 2 l l z I R ` ` -.-.(.}.8.8.h.o.u.C.C.P.P.V.X.X.@+@+'+'+'+1+1+8+8+0+b+b+k+k+o+s+v+v+v+w+x+"}; ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/WPrefs.tiff�����������������������������������������������������������0000644�0001750�0001750�00000022522�13431646201�015036� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*�$�������� � � � � � � � � � � � ��������������������������������---W---W---W,,,W,,,W+++W+++W***W***W***W)))W)))W(((W(((W �'''W'''W'''W&&&W&&&W&&&W%%%W%%%W$$$W$$$W$$$W###W###W###W"""W"""W�!!!W!!!W W W WWWWWWWWWW��---W---W,,,W,,,W������***W)))W)))W(((W(((W(((W �'''W'''W&&&W&&&W&&&W%%%W%%%W$$$W$$$W$$$W###W###W###W"""W"""W"""W�!!!W W W WWWWWWWWWWW��---W,,,W,,,W===󓓓������)))W(((W(((W(((W'''W�'''W&&&W&&&W&&&W%%%W'''YDDDolllrrrOOOy+++]###W"""W"""W"""W!!!W� W W WWWWWWWWWWWW��,,,W,,,W+++W���]]]���(((W(((W'''W'''W�&&&W&&&W&&&W(((Y@@@lxxxħȋNNNy)))]"""W!!!W!!!W� W WWWWWWWWWWWWW��,,,W+++W+++W���$$$ș���(((W'''W'''W'''W�&&&W(((Y>>>juuuìttttttttttttȆKKKw&&&[ W� WWWWWWWWWWWWWW� �+++W+++W***W���jjjȺ���'''W'''W&&&W�(((YQQQy‰ttttttttttttttttttttttttttttȄJJJw# WWWWWWWWWWWWWW� �+++W***W***W***W���ȅ&&&W&&&W�@@@lsss}ttttttttttttttttttttttttttttttttttttttttȂFFFu$$$[WWWWWWWWWWWW� �***W***W***W)))W)))W������ ȄWWW}qf圜���[[[sssutttttttttttttttttttttttttttttttttttttttt~~~AAAq"""[WWWWWWWWWW� �***W***W)))W)))W(((W(((W(((W���ȅ ewb���������111mmmtttttttttttttttttttttttttttttttttttttttttttt{{{@@@q!!![WWWWWWWW� �***W)))W)))W(((W(((W(((W'''W'''W��� ȃ��������������������� IIIttttttttttttttttttttttttttttttttttttttttttttttttxxx<<<o [WWWWWW� �)))W)))W(((W(((W(((W'''W///]ZZZ���yyy���������������������$$$ceeeettttttttttttttttttttttttttttttttttttttttttttttttttttttttttt888mYWWWW� �)))W(((W(((W(((W'''W444asss###������qqq���������TTTXttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttqqq777mYWW� �(((W(((W(((W'''W666c������������sss������<<<Poooottttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttqqq777mY � �(((W(((W'''W444a���������������������lll���tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt;;;q � � � �pg勤���������������������������qqq ttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttsss{zoY!� �'''W'''W\\\������������������������������kkk ttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttsssCCC犊]]]!� �'''W===h������������������������������������fffttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttrrr444���???u!��'''Wlll������������������������������������������```ttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttqqq***���###a"��555c���������������������������������������������YYYttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttnnn ������[[[zzzW"��TTT{���������������������������������������������������!!!WWW���iiittttttttttttttttttttttttttttttttttttiii���������\\\xxxW#��oooyyy������������������������������������������������������)))TTT666ȭttttttttttttttttttttttttttttttttggg������������ _#��EEE���������������������������������������������������W���...HHHUUUttttttttttttttttttttsssvaaa������������������///j$��������������������������������������������������...?oooo___���^^^Ȱ(((ZZZttttttttsss{ZZZ ���������������������;;;s$�������������������������������������������� cQQQQtttttttt���000ȲZZZsssQQQ������������������������:::s$��~~~EEE���������������������������������������!!!<iiiitttttttttttt���ȱ000���������������������������111l%��nnnxxx������������������������������������@@@nsssstttttttttttttttt���ȭ���������������������������_%��RRR{������������������������������������!!!nnntttttttttttttttt���[[[ȫ������������������������VVVqqqW&~��555e ������������������������������������iiitttttttttttttttt���eeeȥ���������������������JJJW&~��###Wjjj���������������������������������������cccsssvtttttttttttt___���ȣ���������������%%%"""cW'}��"""W888h��������������������������������������� [[[sssytttttttttttt���eeeȡ ������������OOOWW'}��"""W"""WXXX���������������������������������������RRRsss}tttttttttttt���lllȠ ������hhh|||_WW'}����$uh剟������������������������������������������MMMsssttttttttmmm���cccȝ )))Î?'}�'}�'}�(|��!!!W!!!W W---a������������������������������������������CCCssssss\\\ lllȞ ###WWWW(|��!!!W W W W///c������������������������������������������888SSS���������nnnȟ WWW)|�� W W WWW,,,annn###������������������������������������������������������������uuuȓ WW)|�� W WWWWW&&&]PPP}������������������������������������������������������xxxșWW*|�� WWWWWWWW222gkkkdž������������������������������������������������������yyybbb���W*{��WWWWWWWWWY555jeeedr_������������������������������������������FFFȤ���W*{��WWWWWWWWWWWW(((aKKK{we吐Ηڇ ������������������⟟՘xxxeK���W+z��WWWWWWWWWWWWWW�###_999oQQQ{{{������������}}}CCCy'''eY%�fȬ��� W+z��WWWWWWWWWWWWWW�WWW]fff���������rrr_WWW%�WWlll��� W,z��WWWWWWWWWWWWWW�WWWW]iii���xxx"""aWWWW&~�WWWȩ��� W,y��WWWWWWWWWWWWWW�WWWWW!!!_kkk}}}xxx"""aWWWWW&~�WWWWbbb糳Ǻxxx ��� W W-y��WWWWWWWWWWWWWW�WWWWWW _CCCyJJJ}"""aWWWWWW'}�WWWWW������������������ _ W W-y��WWWWWWWWWWWWWW �WWWWWWWWWWWWWWWW'}�WWWWWWWW W W W W W W-y��WWWWWWWWWWWWWW �WWWWWWWWWWWWWWWW'}�WWWWWWW W W W W W W W.y�������������� � �!�!�!�"�"�#�#�$�$�$�%�%�&~�&~�'}�'}�'}�(|�(|�)|�)|�*|�*{�*{�+z�+z�,z�,y�-y�-y�-y�.y�.x����������������0�������0�������$���������������� �/���$���#���%���������������������������@��������$������B%������J%���������(�������R���������������/home/largo/newicons/new/GNUstep-glow17-21.tif��by largo for Window Maker 20030413���a0X����a0X���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/Docks.c���������������������������������������������������������������0000644�0001750�0001750�00000023307�13431646201�014167� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Workspace.c- workspace options * * WPrefs - Window Maker Preferences Program * * Copyright (c) 2012 Daniel Déchelotte (heavily inspired from file (c) 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "WPrefs.h" static const char *const clip_delay_frame_titles[] = { N_("Clip autocollapsing delays"), N_("Clip autoraising delays") }; static const struct { const char *key; const char *string; } auto_delay[] = { { "ClipAutoexpandDelay", N_("Before auto-expansion") }, { "ClipAutocollapseDelay", N_("Before auto-collapsing") }, { "ClipAutoraiseDelay", N_("Before auto-raising") }, { "ClipAutolowerDelay", N_("Before auto-lowering") } }; static char *autoDelayPresetValues[5] = { "0", "100", "250", "600", "1000" }; static const struct { const char *disable_key; const char *icon_file; const char *balloon_text; } dock_config[] = { { "DisableDock", "dock", N_("Disable/enable the application Dock (the\nvertical icon bar in the side of the screen).") }, { "DisableClip", "clip", N_("Disable/enable the Clip (that thing with\na paper clip icon).") }, { "DisableDrawers", "drawer", N_("Disable/enable Drawers (a dock that stores\napplication icons horizontally). The dock is required.") } }; typedef struct _Panel { WMBox *box; char *sectionName; char *description; CallbackRec callbacks; WMWidget *parent; WMFrame *autoDelayF[wlengthof_nocheck(clip_delay_frame_titles)]; WMLabel *autoDelayL[wlengthof_nocheck(auto_delay)]; WMButton *autoDelayB[wlengthof_nocheck(auto_delay)][wlengthof_nocheck(autoDelayPresetValues)]; WMTextField *autoDelayT[wlengthof_nocheck(auto_delay)]; WMLabel *autoDelayMsL[wlengthof_nocheck(auto_delay)]; WMFrame *dockF; WMButton *docksB[wlengthof_nocheck(dock_config)]; } _Panel; #define ICON_FILE "dockclipdrawersection" #define ARQUIVO_XIS "xis" #define DELAY_ICON "timer%i" #define DELAY_ICON_S "timer%is" static void showData(_Panel *panel); static void storeData(_Panel *panel); static void pushAutoDelayButton(WMWidget *w, void *data) { _Panel *panel = (_Panel *) data; int i, j; for (i = 0; i < wlengthof(auto_delay); i++) { for (j = 0; j < wlengthof(autoDelayPresetValues); j++) { if (w == panel->autoDelayB[i][j]) { WMSetTextFieldText(panel->autoDelayT[i], autoDelayPresetValues[j]); return; } } } } static void adjustButtonSelectionBasedOnValue(_Panel *panel, int row, const char *value) { int j; if (!value) return; for (j = 0; j < wlengthof(autoDelayPresetValues); j++) { int isThatOne = !strcmp(autoDelayPresetValues[j], value); WMSetButtonSelected(panel->autoDelayB[row][j], isThatOne); if (isThatOne) return; } } static void autoDelayChanged(void *observerData, WMNotification *notification) { _Panel *panel = (_Panel *) observerData; int row; WMTextField *anAutoDelayT = (WMTextField *) WMGetNotificationObject(notification); for (row = 0; row < wlengthof(panel->autoDelayT); row++) { if (anAutoDelayT != panel->autoDelayT[row]) { continue; } char *value = WMGetTextFieldText(anAutoDelayT); adjustButtonSelectionBasedOnValue(panel, row, value); free(value); return; } } static void pushDockButton(WMWidget *w, void *data) { _Panel *panel = (_Panel *) data; WMButton *button = (WMButton *) w; if (button == panel->docksB[0] && !WMGetButtonSelected(panel->docksB[0])) { WMSetButtonSelected(panel->docksB[2], False); } if (button == panel->docksB[2] && WMGetButtonSelected(panel->docksB[2])) { WMSetButtonSelected(panel->docksB[0], True); } } static void createPanel(Panel *p) { _Panel *panel = (_Panel *) p; WMScreen *scr = WMWidgetScreen(panel->parent); WMPixmap *icon1, *icon2; RImage *xis = NULL; RContext *rc = WMScreenRContext(scr); char *path; int i, j, k; char *buf1, *buf2; WMColor *color; WMFont *font; path = LocateImage(ARQUIVO_XIS); if (path) { xis = RLoadImage(rc, path, 0); if (!xis) { wwarning(_("could not load image file %s"), path); } wfree(path); } panel->box = WMCreateBox(panel->parent); WMSetViewExpandsToParent(WMWidgetView(panel->box), 2, 2, 2, 2); /***************** Auto-delays *****************/ buf1 = wmalloc(strlen(DELAY_ICON) + 1); buf2 = wmalloc(strlen(DELAY_ICON_S) + 1); for (k = 0; k < wlengthof(clip_delay_frame_titles); k++) { panel->autoDelayF[k] = WMCreateFrame(panel->box); WMResizeWidget(panel->autoDelayF[k], 372, 100); WMMoveWidget(panel->autoDelayF[k], 11, 10 + k * 110); WMSetFrameTitle(panel->autoDelayF[k], _(clip_delay_frame_titles[k])); for (i = 0; i < 2; i++) { panel->autoDelayL[i + k * 2] = WMCreateLabel(panel->autoDelayF[k]); WMResizeWidget(panel->autoDelayL[i + k * 2], 152, 20); WMMoveWidget(panel->autoDelayL[i + k * 2], 8, 27 + 40 * i); WMSetLabelText(panel->autoDelayL[i + k * 2], _(auto_delay[i + k * 2].string)); for (j = 0; j < wlengthof(autoDelayPresetValues); j++) { panel->autoDelayB[i + k * 2][j] = WMCreateCustomButton(panel->autoDelayF[k], WBBStateChangeMask); WMResizeWidget(panel->autoDelayB[i + k * 2][j], 25, 25); WMMoveWidget(panel->autoDelayB[i + k * 2][j], 160 + (26 * j), 25 + 40 * i); WMSetButtonBordered(panel->autoDelayB[i + k * 2][j], False); WMSetButtonImagePosition(panel->autoDelayB[i + k * 2][j], WIPImageOnly); WMSetButtonAction(panel->autoDelayB[i + k * 2][j], pushAutoDelayButton, panel); if (j > 0) WMGroupButtons(panel->autoDelayB[i + k * 2][0], panel->autoDelayB[i + k * 2][j]); sprintf(buf1, DELAY_ICON, j); CreateImages(scr, rc, NULL, buf1, &icon1, NULL); if (icon1) { WMSetButtonImage(panel->autoDelayB[i + k * 2][j], icon1); WMReleasePixmap(icon1); } else { wwarning(_("could not load icon file %s"), buf1); } sprintf(buf2, DELAY_ICON_S, j); CreateImages(scr, rc, NULL, buf2, &icon2, NULL); if (icon2) { WMSetButtonAltImage(panel->autoDelayB[i + k * 2][j], icon2); WMReleasePixmap(icon2); } else { wwarning(_("could not load icon file %s"), buf2); } } panel->autoDelayT[i + k * 2] = WMCreateTextField(panel->autoDelayF[k]); WMResizeWidget(panel->autoDelayT[i + k * 2], 41, 20); WMMoveWidget(panel->autoDelayT[i + k * 2], 293, 27 + 40 * i); WMAddNotificationObserver(autoDelayChanged, panel, WMTextDidChangeNotification, panel->autoDelayT[i + k * 2]); color = WMDarkGrayColor(scr); font = WMSystemFontOfSize(scr, 10); panel->autoDelayMsL[i + k * 2] = WMCreateLabel(panel->autoDelayF[k]); WMResizeWidget(panel->autoDelayMsL[i + k * 2], 26, 16); WMMoveWidget(panel->autoDelayMsL[i + k * 2], 337, 30 + 40 * i); WMSetLabelText(panel->autoDelayMsL[i + k * 2], _("ms")); WMSetLabelTextColor(panel->autoDelayMsL[i + k * 2], color); WMSetLabelFont(panel->autoDelayMsL[i + k * 2], font); WMReleaseColor(color); WMReleaseFont(font); } WMMapSubwidgets(panel->autoDelayF[k]); } wfree(buf1); wfree(buf2); /***************** Enable/disable clip/dock/drawers *****************/ panel->dockF = WMCreateFrame(panel->box); WMResizeWidget(panel->dockF, 115, 210); WMMoveWidget(panel->dockF, 394, 10); WMSetFrameTitle(panel->dockF, _("Dock/Clip/Drawer")); for (i = 0; i < wlengthof(dock_config); i++) { panel->docksB[i] = WMCreateButton(panel->dockF, WBTToggle); WMResizeWidget(panel->docksB[i], 56, 56); WMMoveWidget(panel->docksB[i], 30, 20 + 62 * i); WMSetButtonImagePosition(panel->docksB[i], WIPImageOnly); CreateImages(scr, rc, xis, dock_config[i].icon_file, &icon1, &icon2); if (icon2) { WMSetButtonImage(panel->docksB[i], icon2); WMReleasePixmap(icon2); } if (icon1) { WMSetButtonAltImage(panel->docksB[i], icon1); WMReleasePixmap(icon1); } WMSetBalloonTextForView(_(dock_config[i].balloon_text), WMWidgetView(panel->docksB[i])); WMSetButtonAction(panel->docksB[i], pushDockButton, panel); } WMMapSubwidgets(panel->dockF); if (xis) RReleaseImage(xis); WMRealizeWidget(panel->box); WMMapSubwidgets(panel->box); showData(panel); } static void storeData(_Panel *panel) { int i; for (i = 0; i < wlengthof(auto_delay); i++) { char *str; str = WMGetTextFieldText(panel->autoDelayT[i]); SetStringForKey(str, auto_delay[i].key); wfree(str); } for (i = 0; i < wlengthof(dock_config); i++) { SetBoolForKey(!WMGetButtonSelected(panel->docksB[i]), dock_config[i].disable_key); } } static void showData(_Panel *panel) { char *value; int i; for (i = 0; i < wlengthof(auto_delay); i++) { value = GetStringForKey(auto_delay[i].key); WMSetTextFieldText(panel->autoDelayT[i], value); adjustButtonSelectionBasedOnValue(panel, i, value); } for (i = 0; i < wlengthof(dock_config); i++) { WMSetButtonSelected(panel->docksB[i], !GetBoolForKey(dock_config[i].disable_key)); } } Panel *InitDocks(WMWidget *parent) { _Panel *panel; panel = wmalloc(sizeof(_Panel)); memset(panel, 0, sizeof(_Panel)); panel->sectionName = _("Dock Preferences"); panel->description = _("Dock and clip features.\n" "Enable/disable the Dock and Clip, and tune some delays."); panel->parent = parent; panel->callbacks.createWidgets = createPanel; panel->callbacks.updateDomain = storeData; AddSection(panel, ICON_FILE); return panel; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/editmenu.c������������������������������������������������������������0000644�0001750�0001750�00000072774�13431646201�014752� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* editmenu.c - editable menus * * WPrefs - Window Maker Preferences Program * * Copyright (c) 2000-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include <WINGs/WINGsP.h> #include <WINGs/WUtil.h> #include <stdlib.h> #include <stdint.h> #include <assert.h> #include <ctype.h> #include "editmenu.h" typedef struct W_EditMenuItem { W_Class widgetClass; WMView *view; struct W_EditMenu *parent; char *label; WMPixmap *pixmap; /* pixmap to show at left */ void *data; WMCallback *destroyData; struct W_EditMenu *submenu; /* if it's a cascade, NULL otherwise */ struct { unsigned isTitle:1; unsigned isHighlighted:1; } flags; } EditMenuItem; typedef struct W_EditMenu { W_Class widgetClass; WMView *view; struct W_EditMenu *parent; WMArray *items; /* EditMenuItem */ EditMenuItem *selectedItem; WMTextField *tfield; WMButton *closeB; int titleHeight; int itemHeight; WEditMenuDelegate *delegate; WMTextFieldDelegate *tdelegate; /* item dragging */ int draggedItem; int dragX, dragY; /* only for non-standalone menu */ WMSize maxSize; WMSize minSize; struct { unsigned standalone:1; unsigned isTitled:1; unsigned acceptsDrop:1; unsigned isFactory:1; unsigned isSelectable:1; unsigned isEditable:1; unsigned isTornOff:1; unsigned isDragging:1; unsigned isEditing:1; unsigned wasMapped:1; } flags; } EditMenu; /******************** WEditMenuItem ********************/ static void destroyEditMenuItem(WEditMenuItem * iPtr); static void paintEditMenuItem(WEditMenuItem * iPtr); static void handleItemEvents(XEvent * event, void *data); static void handleItemClick(XEvent * event, void *data); static W_Class EditMenuItemClass = 0; W_Class InitEditMenuItem(void) { /* register our widget with WINGs and get our widget class ID */ if (!EditMenuItemClass) { EditMenuItemClass = W_RegisterUserWidget(); } return EditMenuItemClass; } WEditMenuItem *WCreateEditMenuItem(WMWidget * parent, const char *title, Bool isTitle) { WEditMenuItem *iPtr; WMScreen *scr = WMWidgetScreen(parent); if (!EditMenuItemClass) InitEditMenuItem(); iPtr = wmalloc(sizeof(WEditMenuItem)); iPtr->widgetClass = EditMenuItemClass; iPtr->view = W_CreateView(W_VIEW(parent)); if (!iPtr->view) { wfree(iPtr); return NULL; } iPtr->view->self = iPtr; iPtr->parent = parent; iPtr->label = wstrdup(title); iPtr->flags.isTitle = isTitle; if (isTitle) { WMSetWidgetBackgroundColor(iPtr, WMBlackColor(scr)); } WMCreateEventHandler(iPtr->view, ExposureMask | StructureNotifyMask, handleItemEvents, iPtr); WMCreateEventHandler(iPtr->view, ButtonPressMask | ButtonReleaseMask | ButtonMotionMask, handleItemClick, iPtr); return iPtr; } char *WGetEditMenuItemTitle(WEditMenuItem * item) { return item->label; } void *WGetEditMenuItemData(WEditMenuItem * item) { return item->data; } void WSetEditMenuItemData(WEditMenuItem * item, void *data, WMCallback * destroyer) { item->data = data; item->destroyData = destroyer; } void WSetEditMenuItemImage(WEditMenuItem * item, WMPixmap * pixmap) { if (item->pixmap) WMReleasePixmap(item->pixmap); item->pixmap = WMRetainPixmap(pixmap); } static void paintEditMenuItem(WEditMenuItem * iPtr) { WMScreen *scr = WMWidgetScreen(iPtr); WMColor *color; Window win = W_VIEW(iPtr)->window; int w = W_VIEW(iPtr)->size.width; int h = W_VIEW(iPtr)->size.height; WMFont *font = (iPtr->flags.isTitle ? scr->boldFont : scr->normalFont); if (!iPtr->view->flags.realized) return; color = scr->black; if (iPtr->flags.isTitle && !iPtr->flags.isHighlighted) { color = scr->white; } XClearWindow(scr->display, win); W_DrawRelief(scr, win, 0, 0, w + 1, h, WRRaised); WMDrawString(scr, win, color, font, 5, 3, iPtr->label, strlen(iPtr->label)); if (iPtr->pixmap) { WMSize size = WMGetPixmapSize(iPtr->pixmap); WMDrawPixmap(iPtr->pixmap, win, w - size.width - 5, (h - size.height) / 2); } else if (iPtr->submenu) { /* draw the cascade indicator */ XDrawLine(scr->display, win, WMColorGC(scr->darkGray), w - 11, 6, w - 6, h / 2 - 1); XDrawLine(scr->display, win, WMColorGC(scr->white), w - 11, h - 8, w - 6, h / 2 - 1); XDrawLine(scr->display, win, WMColorGC(scr->black), w - 12, 6, w - 12, h - 8); } } static void highlightItem(WEditMenuItem * iPtr, Bool high) { if (iPtr->flags.isTitle) return; iPtr->flags.isHighlighted = high; if (high) { WMSetWidgetBackgroundColor(iPtr, WMWhiteColor(WMWidgetScreen(iPtr))); } else { if (!iPtr->flags.isTitle) { WMSetWidgetBackgroundColor(iPtr, WMGrayColor(WMWidgetScreen(iPtr))); } else { WMSetWidgetBackgroundColor(iPtr, WMBlackColor(WMWidgetScreen(iPtr))); } } } static int getItemTextWidth(WEditMenuItem * iPtr) { WMScreen *scr = WMWidgetScreen(iPtr); if (iPtr->flags.isTitle) { return WMWidthOfString(scr->boldFont, iPtr->label, strlen(iPtr->label)); } else { return WMWidthOfString(scr->normalFont, 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 destroyEditMenuItem(WEditMenuItem * iPtr) { if (iPtr->label) wfree(iPtr->label); if (iPtr->data && iPtr->destroyData) (*iPtr->destroyData) (iPtr->data); if (iPtr->submenu) WMDestroyWidget(iPtr->submenu); wfree(iPtr); } /******************** WEditMenu *******************/ static void destroyEditMenu(WEditMenu * mPtr); static void updateMenuContents(WEditMenu * mPtr); static void handleEvents(XEvent * event, void *data); static void editItemLabel(WEditMenuItem * item); static void stopEditItem(WEditMenu * menu, Bool apply); static void deselectItem(WEditMenu * menu); static W_Class EditMenuClass = 0; W_Class InitEditMenu(void) { /* register our widget with WINGs and get our widget class ID */ if (!EditMenuClass) { EditMenuClass = W_RegisterUserWidget(); } 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; /* Parameter not used, but tell the compiler that it is ok */ (void) not; memset(&attribs, 0, sizeof(GNUstepWMAttributes)); attribs.flags = GSWindowStyleAttr | GSWindowLevelAttr; attribs.window_style = WMBorderlessWindowMask; attribs.window_level = WMSubmenuWindowLevel; writeGNUstepWMAttr(WMWidgetScreen(menu), menu->view->window, &attribs); } static void itemSelectObserver(void *self, WMNotification * notif) { WEditMenu *menu = (WEditMenu *) self; WEditMenu *rmenu; rmenu = (WEditMenu *) WMGetNotificationObject(notif); /* check whether rmenu is from the same hierarchy of menu? */ if (rmenu == menu) { return; } if (menu->selectedItem) { if (!menu->selectedItem->submenu) deselectItem(menu); if (menu->flags.isEditing) stopEditItem(menu, False); } } static WEditMenu *makeEditMenu(WMScreen * scr, WMWidget * parent, const char *title) { WEditMenu *mPtr; WEditMenuItem *item; if (!EditMenuClass) InitEditMenu(); mPtr = wmalloc(sizeof(WEditMenu)); mPtr->widgetClass = EditMenuClass; if (parent) { mPtr->view = W_CreateView(W_VIEW(parent)); mPtr->flags.standalone = 0; } else { mPtr->view = W_CreateTopView(scr); mPtr->flags.standalone = 1; } if (!mPtr->view) { wfree(mPtr); return NULL; } mPtr->view->self = mPtr; mPtr->flags.isSelectable = 1; mPtr->flags.isEditable = 1; W_SetViewBackgroundColor(mPtr->view, scr->darkGray); WMAddNotificationObserver(realizeObserver, mPtr, WMViewRealizedNotification, mPtr->view); WMAddNotificationObserver(itemSelectObserver, mPtr, "EditMenuItemSelected", NULL); mPtr->items = WMCreateArray(4); WMCreateEventHandler(mPtr->view, ExposureMask | StructureNotifyMask, handleEvents, mPtr); if (title != NULL) { item = WCreateEditMenuItem(mPtr, title, True); WMMapWidget(item); WMAddToArray(mPtr->items, item); mPtr->flags.isTitled = 1; } mPtr->itemHeight = WMFontHeight(scr->normalFont) + 6; mPtr->titleHeight = WMFontHeight(scr->boldFont) + 8; updateMenuContents(mPtr); return mPtr; } WEditMenu *WCreateEditMenu(WMScreen * scr, const char *title) { return makeEditMenu(scr, NULL, title); } WEditMenu *WCreateEditMenuPad(WMWidget * parent) { return makeEditMenu(WMWidgetScreen(parent), parent, NULL); } void WSetEditMenuDelegate(WEditMenu * mPtr, WEditMenuDelegate * delegate) { mPtr->delegate = delegate; } WEditMenuItem *WInsertMenuItemWithTitle(WEditMenu * mPtr, int index, const char *title) { WEditMenuItem *item; item = WCreateEditMenuItem(mPtr, title, False); WMMapWidget(item); if (index >= WMGetArrayItemCount(mPtr->items)) { WMAddToArray(mPtr->items, item); } else { if (index < 0) index = 0; if (mPtr->flags.isTitled) index++; WMInsertInArray(mPtr->items, index, item); } updateMenuContents(mPtr); return item; } WEditMenuItem *WGetEditMenuItem(WEditMenu * mPtr, int index) { if (index >= WMGetArrayItemCount(mPtr->items)) return NULL; return WMGetFromArray(mPtr->items, index + (mPtr->flags.isTitled ? 1 : 0)); } WEditMenuItem *WAddMenuItemWithTitle(WEditMenu * mPtr, const char *title) { return WInsertMenuItemWithTitle(mPtr, WMGetArrayItemCount(mPtr->items), title); } void WSetEditMenuTitle(WEditMenu * mPtr, const char *title) { WEditMenuItem *item; item = WMGetFromArray(mPtr->items, 0); wfree(item->label); item->label = wstrdup(title); updateMenuContents(mPtr); WMRedisplayWidget(item); } char *WGetEditMenuTitle(WEditMenu * mPtr) { WEditMenuItem *item; item = WMGetFromArray(mPtr->items, 0); return item->label; } void WSetEditMenuAcceptsDrop(WEditMenu * mPtr, Bool flag) { mPtr->flags.acceptsDrop = flag; } void WSetEditMenuSubmenu(WEditMenu * mPtr, WEditMenuItem * item, WEditMenu * submenu) { item->submenu = submenu; submenu->parent = mPtr; paintEditMenuItem(item); } WEditMenu *WGetEditMenuSubmenu(WEditMenuItem *item) { return item->submenu; } void WRemoveEditMenuItem(WEditMenu * mPtr, WEditMenuItem * item) { if (WMRemoveFromArray(mPtr->items, item) != 0) { updateMenuContents(mPtr); } } void WSetEditMenuSelectable(WEditMenu * mPtr, Bool flag) { mPtr->flags.isSelectable = flag; } void WSetEditMenuEditable(WEditMenu * mPtr, Bool flag) { mPtr->flags.isEditable = flag; } void WSetEditMenuIsFactory(WEditMenu * mPtr, Bool flag) { mPtr->flags.isFactory = flag; } void WSetEditMenuMinSize(WEditMenu * mPtr, WMSize size) { mPtr->minSize.width = size.width; mPtr->minSize.height = size.height; } void WSetEditMenuMaxSize(WEditMenu * mPtr, WMSize size) { mPtr->maxSize.width = size.width; mPtr->maxSize.height = size.height; } WMPoint WGetEditMenuLocationForSubmenu(WEditMenu * mPtr, WEditMenu * submenu) { WMArrayIterator iter; WEditMenuItem *item; int y; if (mPtr->flags.isTitled) y = -mPtr->titleHeight; else y = 0; WM_ITERATE_ARRAY(mPtr->items, item, iter) { if (item->submenu == submenu) { WMPoint pt = WMGetViewScreenPosition(mPtr->view); return wmkpoint(pt.x + mPtr->view->size.width, pt.y + y); } y += W_VIEW_HEIGHT(item->view); } puts("invalid submenu passed to WGetEditMenuLocationForSubmenu()"); return wmkpoint(0, 0); } static void closeMenuAction(WMWidget * w, void *data) { WEditMenu *menu = (WEditMenu *) data; /* Parameter not used, but tell the compiler that it is ok */ (void) w; WMAddIdleHandler(WMDestroyWidget, menu->closeB); menu->closeB = NULL; WEditMenuHide(menu); } void WTearOffEditMenu(WEditMenu * menu, WEditMenu * submenu) { WEditMenuItem *item; submenu->flags.isTornOff = 1; item = (WEditMenuItem *) WMGetFromArray(submenu->items, 0); submenu->closeB = WMCreateCommandButton(item); WMResizeWidget(submenu->closeB, 15, 15); WMMoveWidget(submenu->closeB, W_VIEW(submenu)->size.width - 20, 3); WMRealizeWidget(submenu->closeB); WMSetButtonText(submenu->closeB, "X"); WMSetButtonAction(submenu->closeB, closeMenuAction, submenu); WMMapWidget(submenu->closeB); if (menu->selectedItem && menu->selectedItem->submenu == submenu) deselectItem(menu); } Bool WEditMenuIsTornOff(WEditMenu * mPtr) { return mPtr->flags.isTornOff; } void WEditMenuHide(WEditMenu * mPtr) { WEditMenuItem *item; int i = 0; if (WMWidgetIsMapped(mPtr)) { WMUnmapWidget(mPtr); mPtr->flags.wasMapped = 1; } else { mPtr->flags.wasMapped = 0; } while ((item = WGetEditMenuItem(mPtr, i++))) { WEditMenu *submenu; submenu = WGetEditMenuSubmenu(item); if (submenu) { WEditMenuHide(submenu); } } } void WEditMenuUnhide(WEditMenu * mPtr) { WEditMenuItem *item; int i = 0; if (mPtr->flags.wasMapped) { WMMapWidget(mPtr); } while ((item = WGetEditMenuItem(mPtr, i++))) { WEditMenu *submenu; submenu = WGetEditMenuSubmenu(item); if (submenu) { WEditMenuUnhide(submenu); } } } void WEditMenuShowAt(WEditMenu * menu, int x, int y) { XSizeHints *hints; hints = XAllocSizeHints(); hints->flags = USPosition; hints->x = x; hints->y = y; WMMoveWidget(menu, x, y); XSetWMNormalHints(W_VIEW_DISPLAY(menu->view), W_VIEW_DRAWABLE(menu->view), hints); XFree(hints); WMMapWidget(menu); } static void updateMenuContents(WEditMenu * mPtr) { int newW, newH; int w; int i; int iheight = mPtr->itemHeight; int offs = 1; WMArrayIterator iter; WEditMenuItem *item; newW = 0; newH = offs; i = 0; WM_ITERATE_ARRAY(mPtr->items, item, iter) { w = getItemTextWidth(item); newW = WMAX(w, newW); WMMoveWidget(item, offs, newH); if (i == 0 && mPtr->flags.isTitled) { newH += mPtr->titleHeight; } else { newH += iheight; } i = 1; } newW += iheight + 10; newH--; if (mPtr->minSize.width) newW = WMAX(newW, mPtr->minSize.width); if (mPtr->maxSize.width) newW = WMIN(newW, mPtr->maxSize.width); if (mPtr->minSize.height) newH = WMAX(newH, mPtr->minSize.height); if (mPtr->maxSize.height) newH = WMIN(newH, mPtr->maxSize.height); if (W_VIEW(mPtr)->size.width == newW && mPtr->view->size.height == newH + 1) return; W_ResizeView(mPtr->view, newW, newH + 1); if (mPtr->closeB) WMMoveWidget(mPtr->closeB, newW - 20, 3); newW -= 2 * offs; i = 0; WM_ITERATE_ARRAY(mPtr->items, item, iter) { if (i == 0 && mPtr->flags.isTitled) { WMResizeWidget(item, newW, mPtr->titleHeight); } else { WMResizeWidget(item, newW, iheight); } i = 1; } } static void deselectItem(WEditMenu * menu) { WEditMenu *submenu; WEditMenuItem *item = menu->selectedItem; highlightItem(item, False); if (menu->delegate && menu->delegate->itemDeselected) { (*menu->delegate->itemDeselected) (menu->delegate, menu, item); } submenu = item->submenu; if (submenu && !WEditMenuIsTornOff(submenu)) { WEditMenuHide(submenu); } menu->selectedItem = NULL; } static void selectItem(WEditMenu * menu, WEditMenuItem * item) { if (!menu->flags.isSelectable || menu->selectedItem == item) { return; } if (menu->selectedItem) { deselectItem(menu); } if (menu->flags.isEditing) { stopEditItem(menu, False); } if (item && !item->flags.isTitle) { highlightItem(item, True); if (item->submenu && !W_VIEW_MAPPED(item->submenu->view)) { WMPoint pt; pt = WGetEditMenuLocationForSubmenu(menu, item->submenu); WEditMenuShowAt(item->submenu, pt.x, pt.y); item->submenu->flags.isTornOff = 0; } WMPostNotificationName("EditMenuItemSelected", menu, NULL); if (menu->delegate && menu->delegate->itemSelected) { (*menu->delegate->itemSelected) (menu->delegate, menu, item); } } menu->selectedItem = item; } static void paintMenu(WEditMenu * mPtr) { W_View *view = mPtr->view; W_DrawRelief(W_VIEW_SCREEN(view), W_VIEW_DRAWABLE(view), 0, 0, W_VIEW_WIDTH(view), W_VIEW_HEIGHT(view), WRSimple); } static void handleEvents(XEvent * event, void *data) { WEditMenu *mPtr = (WEditMenu *) data; switch (event->type) { case DestroyNotify: destroyEditMenu(mPtr); break; case Expose: if (event->xexpose.count == 0) paintMenu(mPtr); break; } } /* -------------------------- Menu Label Editing ------------------------ */ static void stopEditItem(WEditMenu * menu, Bool apply) { if (apply) { wfree(menu->selectedItem->label); menu->selectedItem->label = WMGetTextFieldText(menu->tfield); updateMenuContents(menu); if (menu->delegate && menu->delegate->itemEdited) { (*menu->delegate->itemEdited) (menu->delegate, menu, menu->selectedItem); } } WMUnmapWidget(menu->tfield); menu->flags.isEditing = 0; } static void textEndedEditing(struct WMTextFieldDelegate *self, WMNotification * notif) { WEditMenu *menu = (WEditMenu *) self->data; uintptr_t reason; int i; WEditMenuItem *item; if (!menu->flags.isEditing) return; reason = (uintptr_t)WMGetNotificationClientData(notif); switch (reason) { case WMEscapeTextMovement: stopEditItem(menu, False); break; case WMReturnTextMovement: stopEditItem(menu, True); break; case WMTabTextMovement: stopEditItem(menu, True); i = WMGetFirstInArray(menu->items, menu->selectedItem); item = WMGetFromArray(menu->items, i + 1); if (item != NULL) { selectItem(menu, item); editItemLabel(item); } break; case WMBacktabTextMovement: stopEditItem(menu, True); i = WMGetFirstInArray(menu->items, menu->selectedItem); item = WMGetFromArray(menu->items, i - 1); if (item != NULL) { selectItem(menu, item); editItemLabel(item); } break; } } static WMTextFieldDelegate textFieldDelegate = { NULL, NULL, NULL, textEndedEditing, NULL, NULL }; static void editItemLabel(WEditMenuItem * item) { WEditMenu *mPtr = item->parent; WMTextField *tf; if (!mPtr->flags.isEditable) { return; } if (!mPtr->tfield) { mPtr->tfield = WMCreateTextField(mPtr); WMSetTextFieldBeveled(mPtr->tfield, False); WMRealizeWidget(mPtr->tfield); mPtr->tdelegate = wmalloc(sizeof(WMTextFieldDelegate)); memcpy(mPtr->tdelegate, &textFieldDelegate, sizeof(WMTextFieldDelegate)); mPtr->tdelegate->data = mPtr; WMSetTextFieldDelegate(mPtr->tfield, mPtr->tdelegate); } tf = mPtr->tfield; WMSetTextFieldText(tf, item->label); WMSelectTextFieldRange(tf, wmkrange(0, strlen(item->label))); WMResizeWidget(tf, mPtr->view->size.width, mPtr->itemHeight); WMMoveWidget(tf, 0, item->view->pos.y); WMMapWidget(tf); WMSetFocusToWidget(tf); mPtr->flags.isEditing = 1; } /* -------------------------------------------------- */ static void slideWindow(Display * dpy, Window win, int srcX, int srcY, int dstX, int dstY) { double x, y, dx, dy; int i; int iterations; iterations = WMIN(25, WMAX(abs(dstX - srcX), abs(dstY - srcY))); x = srcX; y = srcY; dx = (double)(dstX - srcX) / iterations; dy = (double)(dstY - srcY) / iterations; for (i = 0; i <= iterations; i++) { XMoveWindow(dpy, win, x, y); XFlush(dpy); wusleep(800); x += dx; y += dy; } } static int errorHandler(Display * d, XErrorEvent * ev) { /* Parameter not used, but tell the compiler that it is ok */ (void) d; (void) ev; /* just ignore */ return 0; } static WEditMenu *findMenuInWindow(Display * dpy, Window toplevel, int x, int y) { Window foo, bar; Window *children; unsigned nchildren; int i; WEditMenu *menu; WMView *view; int (*oldHandler) (Display *, XErrorEvent *); view = W_GetViewForXWindow(dpy, toplevel); if (view && view->self && WMWidgetClass(view->self) == EditMenuClass) { menu = (WEditMenu *) view->self; if (menu->flags.acceptsDrop) { return menu; } } if (!XQueryTree(dpy, toplevel, &foo, &bar, &children, &nchildren) || children == NULL) { return NULL; } oldHandler = XSetErrorHandler(errorHandler); /* first window that contains the point is the one */ for (i = nchildren - 1; i >= 0; i--) { XWindowAttributes attr; if (XGetWindowAttributes(dpy, children[i], &attr) && attr.map_state == IsViewable && x >= attr.x && y >= attr.y && x < attr.x + attr.width && y < attr.y + attr.height) { Window tmp; tmp = children[i]; menu = findMenuInWindow(dpy, tmp, x - attr.x, y - attr.y); if (menu) { XFree(children); return menu; } } } XSetErrorHandler(oldHandler); XFree(children); return NULL; } static void handleDragOver(WEditMenu *menu, WMView *view, WEditMenuItem *item, int y) { WMScreen *scr = W_VIEW_SCREEN(menu->view); Window blaw; int mx, my; int offs; XTranslateCoordinates(scr->display, W_VIEW_DRAWABLE(menu->view), scr->rootWin, 0, 0, &mx, &my, &blaw); offs = menu->flags.standalone ? 0 : 1; W_MoveView(view, mx + offs, y); if (view->size.width != menu->view->size.width) { W_ResizeView(view, menu->view->size.width - 2 * offs, menu->itemHeight); W_ResizeView(item->view, menu->view->size.width - 2 * offs, menu->itemHeight); } } static void handleItemDrop(WEditMenu *menu, WEditMenuItem *item, int y) { WMScreen *scr = W_VIEW_SCREEN(menu->view); Window blaw; int mx, my; int index; XTranslateCoordinates(scr->display, W_VIEW_DRAWABLE(menu->view), scr->rootWin, 0, 0, &mx, &my, &blaw); index = y - my; if (menu->flags.isTitled) { index -= menu->titleHeight; } index = (index + menu->itemHeight / 2) / menu->itemHeight; if (index < 0) index = 0; if (menu->flags.isTitled) { index++; } if (index > WMGetArrayItemCount(menu->items)) { WMAddToArray(menu->items, item); } else { WMInsertInArray(menu->items, index, item); } W_ReparentView(item->view, menu->view, 0, index * menu->itemHeight); item->parent = menu; if (item->submenu) { item->submenu->parent = menu; } updateMenuContents(menu); } static void dragMenu(WEditMenu * menu) { WMScreen *scr = W_VIEW_SCREEN(menu->view); XEvent ev; Bool done = False; int dx, dy; unsigned blau; Window blaw; XGetGeometry(scr->display, W_VIEW_DRAWABLE(menu->view), &blaw, &dx, &dy, &blau, &blau, &blau, &blau); XTranslateCoordinates(scr->display, W_VIEW_DRAWABLE(menu->view), scr->rootWin, dx, dy, &dx, &dy, &blaw); dx = menu->dragX - dx; dy = menu->dragY - dy; XGrabPointer(scr->display, scr->rootWin, False, ButtonReleaseMask | ButtonMotionMask, GrabModeAsync, GrabModeAsync, None, scr->defaultCursor, CurrentTime); if (menu->parent) WTearOffEditMenu(menu->parent, menu); while (!done) { WMNextEvent(scr->display, &ev); switch (ev.type) { case ButtonRelease: done = True; break; case MotionNotify: while (XCheckMaskEvent(scr->display, ButtonMotionMask, &ev)) ; WMMoveWidget(menu, ev.xmotion.x_root - dx, ev.xmotion.y_root - dy); break; default: WMHandleEvent(&ev); break; } } XUngrabPointer(scr->display, CurrentTime); } static WEditMenuItem *duplicateItem(WEditMenuItem * item) { WEditMenuItem *nitem; nitem = WCreateEditMenuItem(item->parent, item->label, False); if (item->pixmap) nitem->pixmap = WMRetainPixmap(item->pixmap); return nitem; } static WEditMenu *duplicateMenu(WEditMenu * menu) { WEditMenu *nmenu; WEditMenuItem *item; WMArrayIterator iter; Bool first = menu->flags.isTitled; nmenu = WCreateEditMenu(WMWidgetScreen(menu), WGetEditMenuTitle(menu)); memcpy(&nmenu->flags, &menu->flags, sizeof(menu->flags)); nmenu->delegate = menu->delegate; WM_ITERATE_ARRAY(menu->items, item, iter) { WEditMenuItem *nitem; if (first) { first = False; continue; } nitem = WAddMenuItemWithTitle(nmenu, item->label); if (item->pixmap) WSetEditMenuItemImage(nitem, item->pixmap); if (menu->delegate && menu->delegate->itemCloned) { (*menu->delegate->itemCloned) (menu->delegate, menu, item, nitem); } } WMRealizeWidget(nmenu); return nmenu; } static void dragItem(WEditMenu * menu, WEditMenuItem * item, Bool copy) { static XColor black = { 0, 0, 0, 0, DoRed | DoGreen | DoBlue, 0 }; static XColor green = { 0x0045b045, 0x4500, 0xb000, 0x4500, DoRed | DoGreen | DoBlue, 0 }; static XColor back = { 0, 0xffff, 0xffff, 0xffff, DoRed | DoGreen | DoBlue, 0 }; Display *dpy = W_VIEW_DISPLAY(menu->view); WMScreen *scr = W_VIEW_SCREEN(menu->view); int x, y; int dx, dy; Bool done = False; Window blaw; int blai; unsigned blau; Window win; WMView *dview; int orix, oriy; Bool enteredMenu = False; WMSize oldSize = item->view->size; WEditMenuItem *dritem = item; WEditMenu *dmenu = NULL; if (item->flags.isTitle) { WMRaiseWidget(menu); dragMenu(menu); return; } selectItem(menu, NULL); win = scr->rootWin; XTranslateCoordinates(dpy, W_VIEW_DRAWABLE(item->view), win, 0, 0, &orix, &oriy, &blaw); dview = W_CreateUnmanagedTopView(scr); W_SetViewBackgroundColor(dview, scr->black); W_ResizeView(dview, W_VIEW_WIDTH(item->view), W_VIEW_HEIGHT(item->view)); W_MoveView(dview, orix, oriy); W_RealizeView(dview); if (menu->flags.isFactory || copy) { dritem = duplicateItem(item); W_ReparentView(dritem->view, dview, 0, 0); WMResizeWidget(dritem, oldSize.width, oldSize.height); WMRealizeWidget(dritem); WMMapWidget(dritem); } else { W_ReparentView(item->view, dview, 0, 0); } W_MapView(dview); dx = menu->dragX - orix; dy = menu->dragY - oriy; XGrabPointer(dpy, scr->rootWin, False, ButtonPressMask | ButtonReleaseMask | ButtonMotionMask, GrabModeAsync, GrabModeAsync, None, scr->defaultCursor, CurrentTime); if (menu->flags.acceptsDrop) XRecolorCursor(dpy, scr->defaultCursor, &green, &back); while (!done) { XEvent ev; WMNextEvent(dpy, &ev); switch (ev.type) { case MotionNotify: while (XCheckMaskEvent(dpy, ButtonMotionMask, &ev)) ; XQueryPointer(dpy, win, &blaw, &blaw, &blai, &blai, &x, &y, &blau); dmenu = findMenuInWindow(dpy, win, x, y); if (dmenu) { handleDragOver(dmenu, dview, dritem, y - dy); if (!enteredMenu) { enteredMenu = True; XRecolorCursor(dpy, scr->defaultCursor, &green, &back); } } else { if (enteredMenu) { W_ResizeView(dview, oldSize.width, oldSize.height); W_ResizeView(dritem->view, oldSize.width, oldSize.height); enteredMenu = False; XRecolorCursor(dpy, scr->defaultCursor, &black, &back); } W_MoveView(dview, x - dx, y - dy); } break; case ButtonRelease: done = True; break; default: WMHandleEvent(&ev); break; } } XRecolorCursor(dpy, scr->defaultCursor, &black, &back); XUngrabPointer(dpy, CurrentTime); if (!enteredMenu) { Bool rem = True; if (!menu->flags.isFactory && !copy) { W_UnmapView(dview); if (menu->delegate && menu->delegate->shouldRemoveItem) { rem = (*menu->delegate->shouldRemoveItem) (menu->delegate, menu, item); } W_MapView(dview); } if (!rem || menu->flags.isFactory || copy) { slideWindow(dpy, W_VIEW_DRAWABLE(dview), x - dx, y - dy, orix, oriy); if (!menu->flags.isFactory && !copy) { WRemoveEditMenuItem(menu, dritem); handleItemDrop(dmenu ? dmenu : menu, dritem, oriy); } } else { WRemoveEditMenuItem(menu, dritem); } } else { WRemoveEditMenuItem(menu, dritem); if (menu->delegate && menu->delegate->itemCloned && (menu->flags.isFactory || copy)) { (*menu->delegate->itemCloned) (menu->delegate, menu, item, dritem); } handleItemDrop(dmenu, dritem, y - dy); if (item->submenu && (menu->flags.isFactory || copy)) { WEditMenu *submenu; submenu = duplicateMenu(item->submenu); WSetEditMenuSubmenu(dmenu, dritem, submenu); } } /* can't destroy now because we're being called from * the event handler of the item. and destroying now, * would mean destroying the item too in some cases. */ WMAddIdleHandler((WMCallback *) W_DestroyView, dview); } static void handleItemClick(XEvent * event, void *data) { WEditMenuItem *item = (WEditMenuItem *) data; WEditMenu *menu = item->parent; switch (event->type) { case ButtonPress: selectItem(menu, item); if (WMIsDoubleClick(event)) { editItemLabel(item); } menu->flags.isDragging = 1; menu->dragX = event->xbutton.x_root; menu->dragY = event->xbutton.y_root; break; case ButtonRelease: menu->flags.isDragging = 0; break; case MotionNotify: if (menu->flags.isDragging) { if (abs(event->xbutton.x_root - menu->dragX) > 5 || abs(event->xbutton.y_root - menu->dragY) > 5) { menu->flags.isDragging = 0; dragItem(menu, item, event->xbutton.state & ControlMask); } } break; } } static void destroyEditMenu(WEditMenu * mPtr) { WMRemoveNotificationObserver(mPtr); WMFreeArray(mPtr->items); wfree(mPtr->tdelegate); wfree(mPtr); } ����WindowMaker-0.95.9/WPrefs.app/Menu.c����������������������������������������������������������������0000644�0001750�0001750�00000132245�13642357773�014053� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Menu.c- menu definition * * WPrefs - Window Maker Preferences Program * * Copyright (c) 2000-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "WPrefs.h" #include <assert.h> #include <ctype.h> #include <unistd.h> #include <X11/keysym.h> #include <X11/cursorfont.h> #include "editmenu.h" typedef enum { NoInfo, ExecInfo, CommandInfo, ExternalInfo, PipeInfo, PLPipeInfo, DirectoryInfo, WSMenuInfo, WWindowListInfo, LastInfo } InfoType; #define MAX_SECTION_SIZE 4 typedef struct _Panel { WMBox *box; char *sectionName; char *description; CallbackRec callbacks; WMWidget *parent; WMFont *boldFont; WMFont *normalFont; WMColor *white; WMColor *gray; WMColor *black; WMPixmap *markerPix[LastInfo]; WMPopUpButton *typeP; WMWidget *itemPad[3]; int currentPad; WEditMenu *menu; char *menuPath; WMFrame *optionsF; WMFrame *commandF; WMTextField *commandT; /* command to run */ WMButton *browseB; WMButton *xtermC; /* inside xterm? */ WMFrame *pathF; WMTextField *pathT; WMFrame *pipeF; WMTextField *pipeT; WMButton *pipeCacheB; WMFrame *plpipeF; WMTextField *plpipeT; WMButton *plpipeCacheB; WMFrame *dpathF; WMTextField *dpathT; WMFrame *dcommandF; WMTextField *dcommandT; WMButton *dstripB; WMFrame *shortF; WMTextField *shortT; WMButton *sgrabB; WMButton *sclearB; WMList *icommandL; WMFrame *paramF; WMTextField *paramT; WMButton *quickB; Bool dontAsk; /* whether to comfirm submenu remove */ Bool dontSave; Bool capturing; /* about the currently selected item */ WEditMenuItem *currentItem; InfoType currentType; WMWidget *sections[LastInfo][MAX_SECTION_SIZE]; } _Panel; typedef struct { InfoType type; union { struct { int command; char *parameter; char *shortcut; } command; struct { char *command; char *shortcut; } exec; struct { char *path; } external; struct { char *command; unsigned cached:1; } pipe; struct { char *directory; char *command; unsigned stripExt:1; } directory; } param; } ItemData; static char *commandNames[] = { "ARRANGE_ICONS", "HIDE_OTHERS", "SHOW_ALL", "EXIT", "SHUTDOWN", "RESTART", "RESTART", "SAVE_SESSION", "CLEAR_SESSION", "REFRESH", "INFO_PANEL", "LEGAL_PANEL" }; #define ICON_FILE "menus" static void showData(_Panel * panel); static void updateMenuItem(_Panel * panel, WEditMenuItem * item, WMWidget * changedWidget); static void menuItemSelected(struct WEditMenuDelegate *delegate, WEditMenu * menu, WEditMenuItem * item); static void menuItemDeselected(struct WEditMenuDelegate *delegate, WEditMenu * menu, WEditMenuItem * item); static void menuItemCloned(struct WEditMenuDelegate *delegate, WEditMenu * menu, WEditMenuItem * origItem, WEditMenuItem * newItem); static void menuItemEdited(struct WEditMenuDelegate *delegate, WEditMenu * menu, WEditMenuItem * item); static Bool shouldRemoveItem(struct WEditMenuDelegate *delegate, WEditMenu * menu, WEditMenuItem * item); static void freeItemData(ItemData * data); static WEditMenuDelegate menuDelegate = { NULL, menuItemCloned, menuItemEdited, menuItemSelected, menuItemDeselected, shouldRemoveItem }; static void dataChanged(void *self, WMNotification * notif) { _Panel *panel = (_Panel *) self; WEditMenuItem *item = panel->currentItem; WMWidget *w = (WMWidget *) WMGetNotificationObject(notif); updateMenuItem(panel, item, w); } static void buttonClicked(WMWidget * w, void *data) { _Panel *panel = (_Panel *) data; WEditMenuItem *item = panel->currentItem; updateMenuItem(panel, item, w); } static void icommandLClicked(WMWidget * w, void *data) { _Panel *panel = (_Panel *) data; int cmd; cmd = WMGetListSelectedItemRow(w); if (cmd == 3 || cmd == 4) { WMMapWidget(panel->quickB); } else { WMUnmapWidget(panel->quickB); } if (cmd == 6) { WMMapWidget(panel->paramF); } else { WMUnmapWidget(panel->paramF); } } static void browseForFile(WMWidget * self, void *clientData) { _Panel *panel = (_Panel *) clientData; WMFilePanel *filePanel; char *text, *oldprog, *newprog; filePanel = WMGetOpenPanel(WMWidgetScreen(self)); text = WMGetTextFieldText(panel->commandT); oldprog = wtrimspace(text); wfree(text); if (oldprog[0] == 0 || oldprog[0] != '/') { wfree(oldprog); oldprog = wstrdup("/"); } else { char *ptr = oldprog; while (*ptr && !isspace(*ptr)) ptr++; *ptr = 0; } WMSetFilePanelCanChooseDirectories(filePanel, False); if (WMRunModalFilePanelForDirectory(filePanel, panel->parent, oldprog, _("Select Program"), NULL) == True) { newprog = WMGetFilePanelFileName(filePanel); WMSetTextFieldText(panel->commandT, newprog); updateMenuItem(panel, panel->currentItem, panel->commandT); wfree(newprog); } wfree(oldprog); } static void sgrabClicked(WMWidget * w, void *data) { _Panel *panel = (_Panel *) data; Display *dpy = WMScreenDisplay(WMWidgetScreen(panel->parent)); char *shortcut; if (w == panel->sclearB) { WMSetTextFieldText(panel->shortT, ""); updateMenuItem(panel, panel->currentItem, panel->shortT); return; } if (!panel->capturing) { panel->capturing = 1; WMSetButtonText(w, _("Cancel")); XGrabKeyboard(dpy, WMWidgetXID(panel->parent), True, GrabModeAsync, GrabModeAsync, CurrentTime); shortcut = capture_shortcut(dpy, &panel->capturing, 0); if (shortcut) { WMSetTextFieldText(panel->shortT, shortcut); updateMenuItem(panel, panel->currentItem, panel->shortT); wfree(shortcut); } } panel->capturing = 0; WMSetButtonText(w, _("Capture")); XUngrabKeyboard(dpy, CurrentTime); } static void changedItemPad(WMWidget * w, void *data) { _Panel *panel = (_Panel *) data; int padn = WMGetPopUpButtonSelectedItem(w); WMUnmapWidget(panel->itemPad[panel->currentPad]); WMMapWidget(panel->itemPad[padn]); panel->currentPad = padn; } static WEditMenu *putNewSubmenu(WEditMenu * menu, const char *title) { WEditMenu *tmp; WEditMenuItem *item; item = WAddMenuItemWithTitle(menu, title); tmp = WCreateEditMenu(WMWidgetScreen(menu), title); WSetEditMenuAcceptsDrop(tmp, True); WSetEditMenuDelegate(tmp, &menuDelegate); WSetEditMenuSubmenu(menu, item, tmp); return tmp; } static ItemData *putNewItem(_Panel * panel, WEditMenu * menu, int type, const char *title) { WEditMenuItem *item; ItemData *data; item = WAddMenuItemWithTitle(menu, title); data = wmalloc(sizeof(ItemData)); data->type = type; WSetEditMenuItemData(item, data, (WMCallback *) freeItemData); WSetEditMenuItemImage(item, panel->markerPix[type]); return data; } static WEditMenu *makeFactoryMenu(WMWidget * parent, int width) { WEditMenu *pad; pad = WCreateEditMenuPad(parent); WMResizeWidget(pad, width, 10); WSetEditMenuMinSize(pad, wmksize(width, 0)); WSetEditMenuMaxSize(pad, wmksize(width, 0)); WSetEditMenuSelectable(pad, False); WSetEditMenuEditable(pad, False); WSetEditMenuIsFactory(pad, True); WSetEditMenuDelegate(pad, &menuDelegate); return pad; } static void createPanel(_Panel * p) { _Panel *panel = (_Panel *) p; WMScreen *scr = WMWidgetScreen(panel->parent); WMColor *black = WMBlackColor(scr); WMColor *white = WMWhiteColor(scr); WMColor *gray = WMGrayColor(scr); WMFont *bold = WMBoldSystemFontOfSize(scr, 12); WMFont *font = WMSystemFontOfSize(scr, 12); WMLabel *label; int width; menuDelegate.data = panel; panel->boldFont = bold; panel->normalFont = font; panel->black = black; panel->white = white; panel->gray = gray; { Pixmap pix; Display *dpy = WMScreenDisplay(scr); GC gc; WMPixmap *pixm; pixm = WMCreatePixmap(scr, 7, 7, WMScreenDepth(scr), True); pix = WMGetPixmapXID(pixm); XDrawLine(dpy, pix, WMColorGC(black), 0, 3, 6, 3); XDrawLine(dpy, pix, WMColorGC(black), 3, 0, 3, 6); /* XDrawLine(dpy, pix, WMColorGC(black), 1, 0, 3, 3); XDrawLine(dpy, pix, WMColorGC(black), 1, 6, 3, 3); XDrawLine(dpy, pix, WMColorGC(black), 0, 0, 0, 6); */ pix = WMGetPixmapMaskXID(pixm); gc = XCreateGC(dpy, pix, 0, NULL); XSetForeground(dpy, gc, 0); XFillRectangle(dpy, pix, gc, 0, 0, 7, 7); XSetForeground(dpy, gc, 1); XDrawLine(dpy, pix, gc, 0, 3, 6, 3); XDrawLine(dpy, pix, gc, 3, 0, 3, 6); panel->markerPix[ExternalInfo] = pixm; panel->markerPix[PipeInfo] = pixm; panel->markerPix[PLPipeInfo] = pixm; panel->markerPix[DirectoryInfo] = pixm; panel->markerPix[WSMenuInfo] = pixm; panel->markerPix[WWindowListInfo] = pixm; XFreeGC(dpy, gc); } panel->box = WMCreateBox(panel->parent); WMSetViewExpandsToParent(WMWidgetView(panel->box), 2, 2, 2, 2); panel->typeP = WMCreatePopUpButton(panel->box); WMResizeWidget(panel->typeP, 150, 20); WMMoveWidget(panel->typeP, 10, 10); WMAddPopUpButtonItem(panel->typeP, _("New Items")); WMAddPopUpButtonItem(panel->typeP, _("Sample Commands")); WMAddPopUpButtonItem(panel->typeP, _("Sample Submenus")); WMSetPopUpButtonAction(panel->typeP, changedItemPad, panel); WMSetPopUpButtonSelectedItem(panel->typeP, 0); { WEditMenu *pad; pad = makeFactoryMenu(panel->box, 150); WMMoveWidget(pad, 10, 40); putNewItem(panel, pad, ExecInfo, _("Run Program")); putNewItem(panel, pad, CommandInfo, _("Internal Command")); putNewSubmenu(pad, _("Submenu")); putNewItem(panel, pad, ExternalInfo, _("External Submenu")); putNewItem(panel, pad, PipeInfo, _("Generated Submenu")); putNewItem(panel, pad, PLPipeInfo, _("Generated PL Menu")); putNewItem(panel, pad, DirectoryInfo, _("Directory Contents")); putNewItem(panel, pad, WSMenuInfo, _("Workspace Menu")); putNewItem(panel, pad, WWindowListInfo, _("Window List Menu")); panel->itemPad[0] = pad; } { WEditMenu *pad; ItemData *data; WMScrollView *sview; sview = WMCreateScrollView(panel->box); WMResizeWidget(sview, 150, 180); WMMoveWidget(sview, 10, 40); WMSetScrollViewHasVerticalScroller(sview, True); pad = makeFactoryMenu(panel->box, 130); WMSetScrollViewContentView(sview, WMWidgetView(pad)); data = putNewItem(panel, pad, ExecInfo, _("XTerm")); data->param.exec.command = "xterm -sb -sl 2000 -bg black -fg white"; data = putNewItem(panel, pad, ExecInfo, _("rxvt")); data->param.exec.command = "rxvt"; data = putNewItem(panel, pad, ExecInfo, _("ETerm")); data->param.exec.command = "eterm"; data = putNewItem(panel, pad, ExecInfo, _("Run...")); data->param.exec.command = _("%A(Run,Type command to run)"); data = putNewItem(panel, pad, ExecInfo, _("Firefox")); data->param.exec.command = "firefox"; data = putNewItem(panel, pad, ExecInfo, _("gimp")); data->param.exec.command = "gimp"; data = putNewItem(panel, pad, ExecInfo, _("epic")); data->param.exec.command = "xterm -e epic"; data = putNewItem(panel, pad, ExecInfo, _("ee")); data->param.exec.command = "ee"; data = putNewItem(panel, pad, ExecInfo, _("xv")); data->param.exec.command = "xv"; data = putNewItem(panel, pad, ExecInfo, _("Evince")); data->param.exec.command = "evince"; data = putNewItem(panel, pad, ExecInfo, _("ghostview")); data->param.exec.command = "gv"; data = putNewItem(panel, pad, CommandInfo, _("Exit Window Maker")); data->param.command.command = 3; WMMapWidget(pad); panel->itemPad[1] = sview; } { WEditMenu *pad, *smenu; ItemData *data; WMScrollView *sview; sview = WMCreateScrollView(panel->box); WMResizeWidget(sview, 150, 180); WMMoveWidget(sview, 10, 40); WMSetScrollViewHasVerticalScroller(sview, True); pad = makeFactoryMenu(panel->box, 130); WMSetScrollViewContentView(sview, WMWidgetView(pad)); data = putNewItem(panel, pad, ExternalInfo, _("Debian Menu")); data->param.pipe.command = "/etc/GNUstep/Defaults/menu.hook"; data = putNewItem(panel, pad, PipeInfo, _("RedHat Menu")); data->param.pipe.command = "wmconfig --output wmaker"; data = putNewItem(panel, pad, PipeInfo, _("Menu Conectiva")); data->param.pipe.command = "wmconfig --output wmaker"; data = putNewItem(panel, pad, DirectoryInfo, _("Themes")); data->param.directory.command = "setstyle"; data->param.directory.directory = "/usr/share/WindowMaker/Themes /usr/local/share/WindowMaker/Themes $HOME/GNUstep/Library/WindowMaker/Themes"; data->param.directory.stripExt = 1; data = putNewItem(panel, pad, DirectoryInfo, _("Bg Images (scale)")); data->param.directory.command = "wmsetbg -u -s"; data->param.directory.directory = "/opt/kde2/share/wallpapers /usr/share/WindowMaker/Backgrounds $HOME/GNUstep/Library/WindowMaker/Backgrounds"; data->param.directory.stripExt = 1; data = putNewItem(panel, pad, DirectoryInfo, _("Bg Images (tile)")); data->param.directory.command = "wmsetbg -u -t"; data->param.directory.directory = "/opt/kde2/share/wallpapers /usr/share/WindowMaker/Backgrounds $HOME/GNUstep/Library/WindowMaker/Backgrounds"; data->param.directory.stripExt = 1; smenu = putNewSubmenu(pad, _("Assorted XTerms")); data = putNewItem(panel, smenu, ExecInfo, _("XTerm Yellow on Blue")); data->param.exec.command = "xterm -sb -sl 2000 -bg midnightblue -fg yellow"; data = putNewItem(panel, smenu, ExecInfo, _("XTerm White on Black")); data->param.exec.command = "xterm -sb -sl 2000 -bg black -fg white"; data = putNewItem(panel, smenu, ExecInfo, _("XTerm Black on White")); data->param.exec.command = "xterm -sb -sl 2000 -bg white -fg black"; data = putNewItem(panel, smenu, ExecInfo, _("XTerm Black on Beige")); data->param.exec.command = "xterm -sb -sl 2000 -bg '#bbbb99' -fg black"; data = putNewItem(panel, smenu, ExecInfo, _("XTerm White on Green")); data->param.exec.command = "xterm -sb -sl 2000 -bg '#228822' -fg white"; data = putNewItem(panel, smenu, ExecInfo, _("XTerm White on Olive")); data->param.exec.command = "xterm -sb -sl 2000 -bg '#335533' -fg white"; data = putNewItem(panel, smenu, ExecInfo, _("XTerm Blue on Blue")); data->param.exec.command = "xterm -sb -sl 2000 -bg '#112244' -fg '#88aabb'"; data = putNewItem(panel, smenu, ExecInfo, _("XTerm BIG FONTS")); data->param.exec.command = "xterm -sb -sl 2000 -bg black -fg white -fn 10x20"; WMMapWidget(pad); panel->itemPad[2] = sview; } width = FRAME_WIDTH - 20 - 150 - 10 - 2; panel->optionsF = WMCreateFrame(panel->box); WMResizeWidget(panel->optionsF, width, FRAME_HEIGHT - 15); WMMoveWidget(panel->optionsF, 10 + 150 + 10, 5); width -= 20; /* command */ panel->commandF = WMCreateFrame(panel->optionsF); WMResizeWidget(panel->commandF, width, 50); WMMoveWidget(panel->commandF, 10, 20); WMSetFrameTitle(panel->commandF, _("Program to Run")); WMSetFrameTitlePosition(panel->commandF, WTPAtTop); panel->commandT = WMCreateTextField(panel->commandF); WMResizeWidget(panel->commandT, width - 95, 20); WMMoveWidget(panel->commandT, 10, 20); panel->browseB = WMCreateCommandButton(panel->commandF); WMResizeWidget(panel->browseB, 70, 24); WMMoveWidget(panel->browseB, width - 80, 18); WMSetButtonText(panel->browseB, _("Browse")); WMSetButtonAction(panel->browseB, browseForFile, panel); WMAddNotificationObserver(dataChanged, panel, WMTextDidChangeNotification, panel->commandT); #if 0 panel->xtermC = WMCreateSwitchButton(panel->commandF); WMResizeWidget(panel->xtermC, width - 20, 20); WMMoveWidget(panel->xtermC, 10, 50); WMSetButtonText(panel->xtermC, _("Run the program inside a Xterm")); #endif WMMapSubwidgets(panel->commandF); /* path */ panel->pathF = WMCreateFrame(panel->optionsF); WMResizeWidget(panel->pathF, width, 150); WMMoveWidget(panel->pathF, 10, 40); WMSetFrameTitle(panel->pathF, _("Path for Menu")); panel->pathT = WMCreateTextField(panel->pathF); WMResizeWidget(panel->pathT, width - 20, 20); WMMoveWidget(panel->pathT, 10, 20); WMAddNotificationObserver(dataChanged, panel, WMTextDidChangeNotification, panel->pathT); label = WMCreateLabel(panel->pathF); WMResizeWidget(label, width - 20, 90); WMMoveWidget(label, 10, 50); WMSetLabelText(label, _("Enter the path for a file containing a menu\n" "or a list of directories with the programs you\n" "want to have listed in the menu. Ex:\n" "~/GNUstep/Library/WindowMaker/menu\n" "or\n" "/usr/bin ~/xbin")); WMMapSubwidgets(panel->pathF); /* pipe */ panel->pipeF = WMCreateFrame(panel->optionsF); WMResizeWidget(panel->pipeF, width, 155); WMMoveWidget(panel->pipeF, 10, 30); WMSetFrameTitle(panel->pipeF, _("Command")); panel->pipeT = WMCreateTextField(panel->pipeF); WMResizeWidget(panel->pipeT, width - 20, 20); WMMoveWidget(panel->pipeT, 10, 20); WMAddNotificationObserver(dataChanged, panel, WMTextDidChangeNotification, panel->pipeT); label = WMCreateLabel(panel->pipeF); WMResizeWidget(label, width - 20, 40); WMMoveWidget(label, 10, 50); WMSetLabelText(label, _("Enter a command that outputs a menu\n" "definition to stdout when invoked.")); panel->pipeCacheB = WMCreateSwitchButton(panel->pipeF); WMResizeWidget(panel->pipeCacheB, width - 20, 40); WMMoveWidget(panel->pipeCacheB, 10, 110); WMSetButtonText(panel->pipeCacheB, _("Cache menu contents after opening for\n" "the first time")); WMMapSubwidgets(panel->pipeF); /* proplist pipe */ panel->plpipeF = WMCreateFrame(panel->optionsF); WMResizeWidget(panel->plpipeF, width, 155); WMMoveWidget(panel->plpipeF, 10, 30); WMSetFrameTitle(panel->plpipeF, _("Command")); panel->plpipeT = WMCreateTextField(panel->plpipeF); WMResizeWidget(panel->plpipeT, width - 20, 20); WMMoveWidget(panel->plpipeT, 10, 20); WMAddNotificationObserver(dataChanged, panel, WMTextDidChangeNotification, panel->plpipeT); label = WMCreateLabel(panel->plpipeF); WMResizeWidget(label, width - 20, 40); WMMoveWidget(label, 10, 50); WMSetLabelText(label, _("Enter a command that outputs a proplist menu\n" "definition to stdout when invoked.")); panel->plpipeCacheB = WMCreateSwitchButton(panel->plpipeF); WMResizeWidget(panel->plpipeCacheB, width - 20, 40); WMMoveWidget(panel->plpipeCacheB, 10, 110); WMSetButtonText(panel->plpipeCacheB, _("Cache menu contents after opening for\n" "the first time")); WMMapSubwidgets(panel->plpipeF); /* directory menu */ panel->dcommandF = WMCreateFrame(panel->optionsF); WMResizeWidget(panel->dcommandF, width, 90); WMMoveWidget(panel->dcommandF, 10, 25); WMSetFrameTitle(panel->dcommandF, _("Command to Open Files")); panel->dcommandT = WMCreateTextField(panel->dcommandF); WMResizeWidget(panel->dcommandT, width - 20, 20); WMMoveWidget(panel->dcommandT, 10, 20); WMAddNotificationObserver(dataChanged, panel, WMTextDidChangeNotification, panel->dcommandT); label = WMCreateLabel(panel->dcommandF); WMResizeWidget(label, width - 20, 45); WMMoveWidget(label, 10, 40); WMSetLabelText(label, _("Enter the command you want to use to open the\n" "files in the directories listed below.")); WMMapSubwidgets(panel->dcommandF); panel->dpathF = WMCreateFrame(panel->optionsF); WMResizeWidget(panel->dpathF, width, 80); WMMoveWidget(panel->dpathF, 10, 125); WMSetFrameTitle(panel->dpathF, _("Directories with Files")); panel->dpathT = WMCreateTextField(panel->dpathF); WMResizeWidget(panel->dpathT, width - 20, 20); WMMoveWidget(panel->dpathT, 10, 20); WMAddNotificationObserver(dataChanged, panel, WMTextDidChangeNotification, panel->dpathT); panel->dstripB = WMCreateSwitchButton(panel->dpathF); WMResizeWidget(panel->dstripB, width - 20, 20); WMMoveWidget(panel->dstripB, 10, 50); WMSetButtonText(panel->dstripB, _("Strip extensions from file names")); WMSetButtonAction(panel->dstripB, buttonClicked, panel); WMMapSubwidgets(panel->dpathF); /* shortcut */ panel->shortF = WMCreateFrame(panel->optionsF); WMResizeWidget(panel->shortF, width, 50); WMMoveWidget(panel->shortF, 10, 160); WMSetFrameTitle(panel->shortF, _("Keyboard Shortcut")); panel->shortT = WMCreateTextField(panel->shortF); WMResizeWidget(panel->shortT, width - 20 - 150, 20); WMMoveWidget(panel->shortT, 10, 20); WMAddNotificationObserver(dataChanged, panel, WMTextDidChangeNotification, panel->shortT); panel->sgrabB = WMCreateCommandButton(panel->shortF); WMResizeWidget(panel->sgrabB, 70, 24); WMMoveWidget(panel->sgrabB, width - 80, 18); WMSetButtonText(panel->sgrabB, _("Capture")); WMSetButtonAction(panel->sgrabB, sgrabClicked, panel); panel->sclearB = WMCreateCommandButton(panel->shortF); WMResizeWidget(panel->sclearB, 70, 24); WMMoveWidget(panel->sclearB, width - 155, 18); WMSetButtonText(panel->sclearB, _("Clear")); WMSetButtonAction(panel->sclearB, sgrabClicked, panel); WMMapSubwidgets(panel->shortF); /* internal command */ panel->icommandL = WMCreateList(panel->optionsF); WMResizeWidget(panel->icommandL, width, 80); WMMoveWidget(panel->icommandL, 10, 20); WMSetListAction(panel->icommandL, icommandLClicked, panel); WMAddNotificationObserver(dataChanged, panel, WMListSelectionDidChangeNotification, panel->icommandL); WMInsertListItem(panel->icommandL, 0, _("Arrange Icons")); WMInsertListItem(panel->icommandL, 1, _("Hide All Windows Except For The Focused One")); WMInsertListItem(panel->icommandL, 2, _("Show All Windows")); WMInsertListItem(panel->icommandL, 3, _("Exit Window Maker")); WMInsertListItem(panel->icommandL, 4, _("Exit X Session")); WMInsertListItem(panel->icommandL, 5, _("Restart Window Maker")); WMInsertListItem(panel->icommandL, 6, _("Start Another Window Manager : (")); WMInsertListItem(panel->icommandL, 7, _("Save Current Session")); WMInsertListItem(panel->icommandL, 8, _("Clear Saved Session")); WMInsertListItem(panel->icommandL, 9, _("Refresh Screen")); WMInsertListItem(panel->icommandL, 10, _("Open Info Panel")); WMInsertListItem(panel->icommandL, 11, _("Open Copyright Panel")); panel->paramF = WMCreateFrame(panel->optionsF); WMResizeWidget(panel->paramF, width, 50); WMMoveWidget(panel->paramF, 10, 105); WMSetFrameTitle(panel->paramF, _("Window Manager to Start")); panel->paramT = WMCreateTextField(panel->paramF); WMResizeWidget(panel->paramT, width - 20, 20); WMMoveWidget(panel->paramT, 10, 20); WMAddNotificationObserver(dataChanged, panel, WMTextDidChangeNotification, panel->paramT); WMMapSubwidgets(panel->paramF); panel->quickB = WMCreateSwitchButton(panel->optionsF); WMResizeWidget(panel->quickB, width, 20); WMMoveWidget(panel->quickB, 10, 120); WMSetButtonText(panel->quickB, _("Do not confirm action.")); WMSetButtonAction(panel->quickB, buttonClicked, panel); label = WMCreateLabel(panel->optionsF); WMResizeWidget(label, width + 5, FRAME_HEIGHT - 50); WMMoveWidget(label, 7, 20); WMSetLabelText(label, _("Instructions:\n\n" " - drag items from the left to the menu to add new items\n" " - drag items out of the menu to remove items\n" " - drag items in menu to change their position\n" " - drag items with Control pressed to copy them\n" " - double click in a menu item to change the label\n" " - click on a menu item to change related information")); WMMapWidget(label); WMRealizeWidget(panel->box); WMMapSubwidgets(panel->box); WMMapWidget(panel->box); { int i; for (i = 0; i < wlengthof(panel->itemPad); i++) WMUnmapWidget(panel->itemPad[i]); } changedItemPad(panel->typeP, panel); panel->sections[NoInfo][0] = label; panel->sections[ExecInfo][0] = panel->commandF; panel->sections[ExecInfo][1] = panel->shortF; panel->sections[CommandInfo][0] = panel->icommandL; panel->sections[CommandInfo][1] = panel->shortF; panel->sections[ExternalInfo][0] = panel->pathF; panel->sections[PipeInfo][0] = panel->pipeF; panel->sections[PLPipeInfo][0] = panel->plpipeF; panel->sections[DirectoryInfo][0] = panel->dpathF; panel->sections[DirectoryInfo][1] = panel->dcommandF; panel->currentType = NoInfo; showData(panel); { WMPoint pos; pos = WMGetViewScreenPosition(WMWidgetView(panel->box)); if (pos.x < 200) { pos.x += FRAME_WIDTH + 20; } else { pos.x = 10; } pos.y = WMAX(pos.y - 100, 0); if (panel->menu) WEditMenuShowAt(panel->menu, pos.x, pos.y); } } static void freeItemData(ItemData * data) { #define CFREE(d) if (d) wfree(d) /* TODO */ switch (data->type) { case CommandInfo: CFREE(data->param.command.parameter); CFREE(data->param.command.shortcut); break; case ExecInfo: CFREE(data->param.exec.command); CFREE(data->param.exec.shortcut); break; case PipeInfo: CFREE(data->param.pipe.command); break; case PLPipeInfo: CFREE(data->param.pipe.command); break; case ExternalInfo: CFREE(data->param.external.path); break; case DirectoryInfo: CFREE(data->param.directory.command); CFREE(data->param.directory.directory); break; default: break; } wfree(data); #undef CFREE } static ItemData *parseCommand(WMPropList * item) { ItemData *data = wmalloc(sizeof(ItemData)); WMPropList *p; char *command = NULL; char *parameter = NULL; char *shortcut = NULL; int i = 1; p = WMGetFromPLArray(item, i++); command = WMGetFromPLString(p); if (strcmp(command, "SHORTCUT") == 0) { p = WMGetFromPLArray(item, i++); shortcut = WMGetFromPLString(p); p = WMGetFromPLArray(item, i++); command = WMGetFromPLString(p); } p = WMGetFromPLArray(item, i++); if (p) parameter = WMGetFromPLString(p); if (strcmp(command, "EXEC") == 0 || strcmp(command, "SHEXEC") == 0) { data->type = ExecInfo; data->param.exec.command = wstrdup(parameter); if (shortcut) data->param.exec.shortcut = wstrdup(shortcut); } else if (strcmp(command, "OPEN_MENU") == 0) { char *p; /* * dir menu, menu file * dir WITH * |pipe */ p = parameter; while (isspace(*p) && *p) p++; if (*p == '|') { if (*(p + 1) == '|') { p++; data->param.pipe.cached = 0; } else { data->param.pipe.cached = 1; } data->type = PipeInfo; data->param.pipe.command = wtrimspace(p + 1); } else { char *s; p = wstrdup(p); s = strstr(p, "WITH"); if (s) { char **tokens; char **ctokens; int tokn; int i, j; data->type = DirectoryInfo; *s = '\0'; s += 5; while (*s && isspace(*s)) s++; data->param.directory.command = wstrdup(s); wtokensplit(p, &tokens, &tokn); wfree(p); ctokens = wmalloc(sizeof(char *) * tokn); for (i = 0, j = 0; i < tokn; i++) { if (strcmp(tokens[i], "-noext") == 0) { data->param.directory.stripExt = 1; } else { ctokens[j++] = tokens[i]; } } data->param.directory.directory = wtokenjoin(ctokens, j); wfree(ctokens); wtokenfree(tokens, tokn); } else { data->type = ExternalInfo; data->param.external.path = p; } } } else if (strcmp(command, "OPEN_PLMENU") == 0) { char *p; p = parameter; while (isspace(*p) && *p) p++; if (*p == '|') { if (*(p + 1) == '|') { p++; data->param.pipe.cached = 0; } else { data->param.pipe.cached = 1; } data->type = PLPipeInfo; data->param.pipe.command = wtrimspace(p + 1); } } else if (strcmp(command, "WORKSPACE_MENU") == 0) { data->type = WSMenuInfo; } else if (strcmp(command, "WINDOWS_MENU") == 0) { data->type = WWindowListInfo; } else { int cmd; if (strcmp(command, "ARRANGE_ICONS") == 0) { cmd = 0; } else if (strcmp(command, "HIDE_OTHERS") == 0) { cmd = 1; } else if (strcmp(command, "SHOW_ALL") == 0) { cmd = 2; } else if (strcmp(command, "EXIT") == 0) { cmd = 3; } else if (strcmp(command, "SHUTDOWN") == 0) { cmd = 4; } else if (strcmp(command, "RESTART") == 0) { if (parameter) { cmd = 6; } else { cmd = 5; } } else if (strcmp(command, "SAVE_SESSION") == 0) { cmd = 7; } else if (strcmp(command, "CLEAR_SESSION") == 0) { cmd = 8; } else if (strcmp(command, "REFRESH") == 0) { cmd = 9; } else if (strcmp(command, "INFO_PANEL") == 0) { cmd = 10; } else if (strcmp(command, "LEGAL_PANEL") == 0) { cmd = 11; } else { wwarning(_("unknown command '%s' in menu"), command); wfree(data); return NULL; } data->type = CommandInfo; data->param.command.command = cmd; if (shortcut) data->param.command.shortcut = wstrdup(shortcut); if (parameter) data->param.command.parameter = wstrdup(parameter); } return data; } static void updateFrameTitle(_Panel * panel, const char *title, InfoType type) { if (type != NoInfo) { char *tmp; switch (type) { case ExecInfo: tmp = wstrconcat(title, _(": Execute Program")); break; case CommandInfo: tmp = wstrconcat(title, _(": Perform Internal Command")); break; case ExternalInfo: tmp = wstrconcat(title, _(": Open a Submenu")); break; case PipeInfo: tmp = wstrconcat(title, _(": Program Generated Submenu")); break; case PLPipeInfo: tmp = wstrconcat(title, _(": Program Generated Proplist Submenu")); break; case DirectoryInfo: tmp = wstrconcat(title, _(": Directory Contents Menu")); break; case WSMenuInfo: tmp = wstrconcat(title, _(": Open Workspaces Submenu")); break; case WWindowListInfo: tmp = wstrconcat(title, _(": Open Window List Submenu")); break; default: tmp = NULL; break; } WMSetFrameTitle(panel->optionsF, tmp); wfree(tmp); } else { WMSetFrameTitle(panel->optionsF, NULL); } } static void changeInfoType(_Panel * panel, const char *title, InfoType type) { WMWidget **w; if (panel->currentType != type) { w = panel->sections[panel->currentType]; while (*w) { WMUnmapWidget(*w); w++; } WMUnmapWidget(panel->paramF); WMUnmapWidget(panel->quickB); w = panel->sections[type]; while (*w) { WMMapWidget(*w); w++; } } updateFrameTitle(panel, title, type); panel->currentType = type; } static void updateMenuItem(_Panel * panel, WEditMenuItem * item, WMWidget * changedWidget) { ItemData *data = WGetEditMenuItemData(item); assert(data != NULL); #define REPLACE(v, d) if (v) wfree(v); v = d switch (data->type) { case ExecInfo: if (changedWidget == panel->commandT) { REPLACE(data->param.exec.command, WMGetTextFieldText(panel->commandT)); } if (changedWidget == panel->shortT) { REPLACE(data->param.exec.shortcut, WMGetTextFieldText(panel->shortT)); } break; case CommandInfo: if (changedWidget == panel->icommandL) { data->param.command.command = WMGetListSelectedItemRow(panel->icommandL); } switch (data->param.command.command) { case 3: case 4: if (changedWidget == panel->quickB) { REPLACE(data->param.command.parameter, WMGetButtonSelected(panel->quickB) ? wstrdup("QUICK") : NULL); } break; case 6: if (changedWidget == panel->paramT) { REPLACE(data->param.command.parameter, WMGetTextFieldText(panel->paramT)); } break; } if (changedWidget == panel->shortT) { REPLACE(data->param.command.shortcut, WMGetTextFieldText(panel->shortT)); } break; case PipeInfo: if (changedWidget == panel->pipeT) { REPLACE(data->param.pipe.command, WMGetTextFieldText(panel->pipeT)); } if (changedWidget == panel->pipeCacheB) { data->param.pipe.cached = WMGetButtonSelected(panel->pipeCacheB); } break; case PLPipeInfo: if (changedWidget == panel->plpipeT) { REPLACE(data->param.pipe.command, WMGetTextFieldText(panel->plpipeT)); } if (changedWidget == panel->plpipeCacheB) { data->param.pipe.cached = WMGetButtonSelected(panel->plpipeCacheB); } break; case ExternalInfo: if (changedWidget == panel->pathT) { REPLACE(data->param.external.path, WMGetTextFieldText(panel->pathT)); } break; case DirectoryInfo: if (changedWidget == panel->dpathT) { REPLACE(data->param.directory.directory, WMGetTextFieldText(panel->dpathT)); } if (changedWidget == panel->dcommandT) { REPLACE(data->param.directory.command, WMGetTextFieldText(panel->dcommandT)); } if (changedWidget == panel->dstripB) { data->param.directory.stripExt = WMGetButtonSelected(panel->dstripB); } break; default: assert(0); break; } #undef REPLACE } static void menuItemCloned(WEditMenuDelegate * delegate, WEditMenu * menu, WEditMenuItem * origItem, WEditMenuItem * newItem) { ItemData *data = WGetEditMenuItemData(origItem); ItemData *newData; /* Parameter not used, but tell the compiler that it is ok */ (void) delegate; (void) menu; if (!data) return; #define DUP(s) (s) ? wstrdup(s) : NULL newData = wmalloc(sizeof(ItemData)); newData->type = data->type; switch (data->type) { case ExecInfo: newData->param.exec.command = DUP(data->param.exec.command); newData->param.exec.shortcut = DUP(data->param.exec.shortcut); break; case CommandInfo: newData->param.command.command = data->param.command.command; newData->param.command.parameter = DUP(data->param.command.parameter); newData->param.command.shortcut = DUP(data->param.command.shortcut); break; case PipeInfo: newData->param.pipe.command = DUP(data->param.pipe.command); newData->param.pipe.cached = data->param.pipe.cached; break; case PLPipeInfo: newData->param.pipe.command = DUP(data->param.pipe.command); newData->param.pipe.cached = data->param.pipe.cached; break; case ExternalInfo: newData->param.external.path = DUP(data->param.external.path); break; case DirectoryInfo: newData->param.directory.directory = DUP(data->param.directory.directory); newData->param.directory.command = DUP(data->param.directory.command); newData->param.directory.stripExt = data->param.directory.stripExt; break; default: break; } #undef DUP WSetEditMenuItemData(newItem, newData, (WMCallback *) freeItemData); } static void menuItemEdited(struct WEditMenuDelegate *delegate, WEditMenu * menu, WEditMenuItem * item) { _Panel *panel = (_Panel *) delegate->data; WEditMenu *submenu; /* Parameter not used, but tell the compiler it is ok */ (void) menu; updateFrameTitle(panel, WGetEditMenuItemTitle(item), panel->currentType); submenu = WGetEditMenuSubmenu(item); if (submenu) { WSetEditMenuTitle(submenu, WGetEditMenuItemTitle(item)); } } static Bool shouldRemoveItem(struct WEditMenuDelegate *delegate, WEditMenu * menu, WEditMenuItem * item) { _Panel *panel = (_Panel *) delegate->data; if (panel->dontAsk) return True; if (WGetEditMenuSubmenu(item)) { int res; res = WMRunAlertPanel(WMWidgetScreen(menu), NULL, _("Remove Submenu"), _("Removing this item will destroy all items inside\n" "the submenu. Do you really want to do that?"), _("Yes"), _("No"), _("Yes, don't ask again")); switch (res) { case WAPRDefault: return True; case WAPRAlternate: return False; case WAPROther: panel->dontAsk = True; return True; } } return True; } static void menuItemDeselected(WEditMenuDelegate * delegate, WEditMenu * menu, WEditMenuItem * item) { _Panel *panel = (_Panel *) delegate->data; /* Parameter not used, but tell the compiler that it is ok */ (void) menu; (void) item; changeInfoType(panel, NULL, NoInfo); } static void menuItemSelected(WEditMenuDelegate * delegate, WEditMenu * menu, WEditMenuItem * item) { ItemData *data = WGetEditMenuItemData(item); _Panel *panel = (_Panel *) delegate->data; /* Parameter not used, but tell the compiler that it is ok */ (void) menu; panel->currentItem = item; if (data) { changeInfoType(panel, WGetEditMenuItemTitle(item), data->type); switch (data->type) { case NoInfo: break; case ExecInfo: WMSetTextFieldText(panel->commandT, data->param.exec.command); WMSetTextFieldText(panel->shortT, data->param.exec.shortcut); break; case CommandInfo: WMSelectListItem(panel->icommandL, data->param.command.command); WMSetListPosition(panel->icommandL, data->param.command.command - 2); WMSetTextFieldText(panel->shortT, data->param.command.shortcut); switch (data->param.command.command) { case 3: case 4: WMSetButtonSelected(panel->quickB, data->param.command.parameter != NULL); break; case 6: WMSetTextFieldText(panel->paramT, data->param.command.parameter); break; } icommandLClicked(panel->icommandL, panel); break; case PipeInfo: WMSetTextFieldText(panel->pipeT, data->param.pipe.command); WMSetButtonSelected(panel->pipeCacheB, data->param.pipe.cached); break; case PLPipeInfo: WMSetTextFieldText(panel->plpipeT, data->param.pipe.command); WMSetButtonSelected(panel->plpipeCacheB, data->param.pipe.cached); break; case ExternalInfo: WMSetTextFieldText(panel->pathT, data->param.external.path); break; case DirectoryInfo: WMSetTextFieldText(panel->dpathT, data->param.directory.directory); WMSetTextFieldText(panel->dcommandT, data->param.directory.command); WMSetButtonSelected(panel->dstripB, data->param.directory.stripExt); break; case WSMenuInfo: break; default: break; } } } static WEditMenu *buildSubmenu(_Panel * panel, WMPropList * pl) { WMScreen *scr = WMWidgetScreen(panel->parent); WEditMenu *menu; WEditMenuItem *item; char *title; WMPropList *tp, *bp; int i; tp = WMGetFromPLArray(pl, 0); title = WMGetFromPLString(tp); menu = WCreateEditMenu(scr, title); for (i = 1; i < WMGetPropListItemCount(pl); i++) { WMPropList *pi; pi = WMGetFromPLArray(pl, i); tp = WMGetFromPLArray(pi, 0); bp = WMGetFromPLArray(pi, 1); title = WMGetFromPLString(tp); if (!bp || WMIsPLArray(bp)) { /* it's a submenu */ WEditMenu *submenu; submenu = buildSubmenu(panel, pi); item = WAddMenuItemWithTitle(menu, title); WSetEditMenuSubmenu(menu, item, submenu); } else { ItemData *data; data = parseCommand(pi); if (data != NULL) { item = WAddMenuItemWithTitle(menu, title); if (panel->markerPix[data->type]) WSetEditMenuItemImage(item, panel->markerPix[data->type]); WSetEditMenuItemData(item, data, (WMCallback *) freeItemData); } else { char buf[256]; snprintf(buf, sizeof(buf), _("Invalid menu command \"%s\" with label \"%s\" cleared"), WMGetFromPLString(WMGetFromPLArray(pi, 1)), WMGetFromPLString(WMGetFromPLArray(pi, 0))); WMRunAlertPanel(scr, panel->parent, _("Warning"), buf, _("OK"), NULL, NULL); } } } WSetEditMenuAcceptsDrop(menu, True); WSetEditMenuDelegate(menu, &menuDelegate); WMRealizeWidget(menu); return menu; } static void buildMenuFromPL(_Panel * panel, WMPropList * pl) { panel->menu = buildSubmenu(panel, pl); } static WMPropList *getDefaultMenu(_Panel * panel) { WMPropList *menu; static const char menuPath[] = WMAKER_RESOURCE_PATH "/plmenu"; menu = WMReadPropListFromFile(menuPath); if (!menu) { char *buffer, *msg; msg = _("Could not open default menu from '%s'"); buffer = wmalloc(strlen(msg) + strlen(menuPath) + 10); sprintf(buffer, msg, menuPath); WMRunAlertPanel(WMWidgetScreen(panel->parent), panel->parent, _("Error"), buffer, _("OK"), NULL, NULL); wfree(buffer); } return menu; } static void showData(_Panel * panel) { const char *gspath; char *menuPath, *labelText; char buf[1024]; WMPropList *pmenu; gspath = wusergnusteppath(); menuPath = wmalloc(strlen(gspath) + 32); strcpy(menuPath, gspath); strcat(menuPath, "/Defaults/WMRootMenu"); pmenu = WMReadPropListFromFile(menuPath); /* check if WMRootMenu references another file, and if so, if that file is in proplist format */ while (WMIsPLString(pmenu)) { char *path = NULL; path = wexpandpath(WMGetFromPLString(pmenu)); if (access(path, F_OK) < 0) path = wfindfile(DEF_CONFIG_PATHS, path); /* TODO: if needed, concatenate locale suffix to path. See getLocalizedMenuFile() in src/rootmenu.c. */ if (!path) break; if (access(path, W_OK) < 0) { snprintf(buf, sizeof(buf), _("The menu file \"%s\" referenced by " "WMRootMenu is read-only.\n" "You cannot use WPrefs to modify it."), path); WMRunAlertPanel(WMWidgetScreen(panel->parent), panel->parent, _("Warning"), buf, _("OK"), NULL, NULL); panel->dontSave = True; wfree(path); return; } pmenu = WMReadPropListFromFile(path); menuPath = path; } if (!pmenu || !WMIsPLArray(pmenu)) { int res; res = WMRunAlertPanel(WMWidgetScreen(panel->parent), panel->parent, _("Warning"), _("The menu file format currently in use is not supported\n" "by this tool. Do you want to discard the current menu\n" "to use this tool?"), _("Yes, Discard and Update"), _("No, Keep Current Menu"), NULL); if (res == WAPRDefault) { pmenu = getDefaultMenu(panel); if (!pmenu) { pmenu = WMCreatePLArray(WMCreatePLString("Applications"), NULL); } } else { panel->dontSave = True; return; } } panel->menuPath = menuPath; snprintf(buf, sizeof(buf), _("\n\nWhen saved, the menu will be written to the file\n\"%s\"."), menuPath); labelText = WMGetLabelText(panel->sections[NoInfo][0]); labelText = wstrconcat(labelText, buf); WMSetLabelText(panel->sections[NoInfo][0], labelText); wfree(labelText); buildMenuFromPL(panel, pmenu); WMReleasePropList(pmenu); } static Bool notblank(const char *s) { if (s) { while (*s++) { if (!isspace(*s)) return True; } } return False; } static WMPropList *processData(const char *title, ItemData * data) { WMPropList *item; char *s1; static WMPropList *pscut = NULL; static WMPropList *pomenu = NULL; static WMPropList *poplmenu = NULL; int i; if (data == NULL) return NULL; if (!pscut) { pscut = WMCreatePLString("SHORTCUT"); pomenu = WMCreatePLString("OPEN_MENU"); poplmenu = WMCreatePLString("OPEN_PLMENU"); } item = WMCreatePLArray(WMCreatePLString(title), NULL); switch (data->type) { case ExecInfo: if (data->param.exec.command == NULL) goto return_null; if (strpbrk(data->param.exec.command, "&$*|><?`=;")) { s1 = "SHEXEC"; } else { s1 = "EXEC"; } if (notblank(data->param.exec.shortcut)) { WMAddToPLArray(item, pscut); WMAddToPLArray(item, WMCreatePLString(data->param.exec.shortcut)); } WMAddToPLArray(item, WMCreatePLString(s1)); WMAddToPLArray(item, WMCreatePLString(data->param.exec.command)); break; case CommandInfo: if (notblank(data->param.command.shortcut)) { WMAddToPLArray(item, pscut); WMAddToPLArray(item, WMCreatePLString(data->param.command.shortcut)); } i = data->param.command.command; WMAddToPLArray(item, WMCreatePLString(commandNames[i])); switch (i) { case 3: case 4: if (data->param.command.parameter) { WMAddToPLArray(item, WMCreatePLString(data->param.command.parameter)); } break; case 6: /* restart */ if (data->param.command.parameter) { WMAddToPLArray(item, WMCreatePLString(data->param.command.parameter)); } break; } break; case PipeInfo: case PLPipeInfo: if (!data->param.pipe.command) goto return_null; if (data->type == PLPipeInfo) WMAddToPLArray(item, poplmenu); else WMAddToPLArray(item, pomenu); if (data->param.pipe.cached) s1 = wstrconcat("| ", data->param.pipe.command); else s1 = wstrconcat("|| ", data->param.pipe.command); WMAddToPLArray(item, WMCreatePLString(s1)); wfree(s1); break; case ExternalInfo: if (!data->param.external.path) goto return_null; WMAddToPLArray(item, pomenu); WMAddToPLArray(item, WMCreatePLString(data->param.external.path)); break; case DirectoryInfo: { int l; char *tmp; if (!data->param.directory.directory || !data->param.directory.command) goto return_null; l = strlen(data->param.directory.directory); l += strlen(data->param.directory.command); l += 32; WMAddToPLArray(item, pomenu); tmp = wmalloc(l); sprintf(tmp, "%s%s WITH %s", data->param.directory.stripExt ? "-noext " : "", data->param.directory.directory, data->param.directory.command); WMAddToPLArray(item, WMCreatePLString(tmp)); wfree(tmp); } break; case WSMenuInfo: WMAddToPLArray(item, WMCreatePLString("WORKSPACE_MENU")); break; case WWindowListInfo: WMAddToPLArray(item, WMCreatePLString("WINDOWS_MENU")); break; default: assert(0); break; } return item; return_null: WMReleasePropList(item); return NULL; } static WMPropList *processSubmenu(WEditMenu * menu) { WEditMenuItem *item; WMPropList *pmenu; WMPropList *pl; char *s; int i; s = WGetEditMenuTitle(menu); pl = WMCreatePLString(s); pmenu = WMCreatePLArray(pl, NULL); i = 0; while ((item = WGetEditMenuItem(menu, i++))) { WEditMenu *submenu; s = WGetEditMenuItemTitle(item); submenu = WGetEditMenuSubmenu(item); if (submenu) { pl = processSubmenu(submenu); } else { pl = processData(s, WGetEditMenuItemData(item)); } if (!pl) continue; WMAddToPLArray(pmenu, pl); } return pmenu; } static WMPropList *buildPLFromMenu(_Panel * panel) { WMPropList *menu; menu = processSubmenu(panel->menu); return menu; } static void storeData(_Panel * panel) { WMPropList *menu; if (panel->dontSave) return; menu = buildPLFromMenu(panel); WMWritePropListToFile(menu, panel->menuPath); WMReleasePropList(menu); } static void showMenus(_Panel * panel) { if (panel->menu) WEditMenuUnhide(panel->menu); } static void hideMenus(_Panel * panel) { if (panel->menu) WEditMenuHide(panel->menu); } Panel *InitMenu(WMWidget *parent) { _Panel *panel; panel = wmalloc(sizeof(_Panel)); panel->sectionName = _("Applications Menu Definition"); panel->description = _("Edit the menu for launching applications."); panel->parent = parent; panel->callbacks.createWidgets = createPanel; panel->callbacks.updateDomain = storeData; panel->callbacks.showPanel = showMenus; panel->callbacks.hidePanel = hideMenus; AddSection(panel, ICON_FILE); return panel; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/MouseSettings.c�������������������������������������������������������0000644�0001750�0001750�00000050176�13431646201�015741� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ /* MouseSettings.c- mouse options (some are equivalent to xset) * * WPrefs - Window Maker Preferences Program * * Copyright (c) 1998-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "WPrefs.h" #include <X11/Xutil.h> #include <X11/XKBlib.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <math.h> #define XSET "xset" static const struct { const char *db_key; int default_action; enum { T_BUTTON, T_WHEEL } type; const char *display_label; } button_list[] = { { "MouseLeftButtonAction", 3, T_BUTTON, N_("Left Button") }, { "MouseMiddleButtonAction", 2, T_BUTTON, N_("Middle Button") }, { "MouseRightButtonAction", 1, T_BUTTON, N_("Right Button") }, { "MouseBackwardButtonAction", 0, T_BUTTON, N_("Back Button") }, { "MouseForwardButtonAction", 0, T_BUTTON, N_("Forward Button") }, { "MouseWheelAction", 0, T_WHEEL, N_("Mouse Wheel") }, { "MouseWheelTiltAction", 0, T_WHEEL, N_("Mouse Wheel Tilt") } }; static const struct { const char *db_value; const char *label; } button_actions[] = { { "None", N_("None") }, { "OpenApplicationsMenu", N_("Applications Menu") }, { "OpenWindowListMenu", N_("Window List Menu") }, { "SelectWindows", N_("Select Windows") }, { "MoveToPrevWorkspace", N_("Previous Workspace") }, { "MoveToNextWorkspace", N_("Next Workspace") }, { "MoveToPrevWindow", N_("Previous Window") }, { "MoveToNextWindow", N_("Next Window") } }; static const struct { const char *db_value; const char *label; } wheel_actions[] = { { "None", N_("None") }, { "SwitchWorkspaces", N_("Switch Workspaces") }, { "SwitchWindows", N_("Switch Windows") } }; typedef struct _Panel { WMBox *box; char *sectionName; char *description; CallbackRec callbacks; WMWidget *parent; WMFrame *speedF; WMLabel *speedL; WMSlider *speedS; WMLabel *acceL; WMTextField *acceT; WMLabel *threL; WMTextField *threT; WMFrame *ddelaF; WMButton *ddelaB[5]; WMTextField *ddelaT; WMLabel *ddelaL; DoubleTest *tester; WMFrame *menuF; struct { WMLabel *label; WMPopUpButton *popup; } mouse_action[wlengthof_nocheck(button_list)]; WMButton *disaB; WMFrame *grabF; WMPopUpButton *grabP; /**/ int maxThreshold; float acceleration; } _Panel; #define ICON_FILE "mousesettings" #define SPEED_ICON_FILE "mousespeed" #define DELAY_ICON "timer%i" #define DELAY_ICON_S "timer%is" /* need access to the double click variables */ #include <WINGs/WINGsP.h> static char *modifierNames[8]; #define DELAY(i) ((i)*75+170) static void setMouseAccel(WMScreen * scr, float accel, int threshold) { int n, d; d = 10; n = accel * d; XChangePointerControl(WMScreenDisplay(scr), True, True, n, d, threshold); } static void speedChange(WMWidget * w, void *data) { _Panel *panel = (_Panel *) data; int i; char buffer[64]; int threshold; char *tmp; if (w == NULL) { float accel; tmp = WMGetTextFieldText(panel->acceT); if (sscanf(tmp, "%f", &accel) != 1 || accel < 0) { WMRunAlertPanel(WMWidgetScreen(panel->acceT), GetWindow(), _("Error"), _("Invalid mouse acceleration value. Must be a positive real value."), _("OK"), NULL, NULL); wfree(tmp); return; } panel->acceleration = accel; wfree(tmp); } else { i = (int)WMGetSliderValue(panel->speedS); panel->acceleration = 0.25 + (i * 0.25); sprintf(buffer, "%.2f", 0.25 + (i * 0.25)); WMSetTextFieldText(panel->acceT, buffer); } tmp = WMGetTextFieldText(panel->threT); if (sscanf(tmp, "%i", &threshold) != 1 || threshold < 0 || threshold > panel->maxThreshold) { WMRunAlertPanel(WMWidgetScreen(panel->parent), GetWindow(), _("Error"), _ ("Invalid mouse acceleration threshold value. Must be the number of pixels to travel before accelerating."), _("OK"), NULL, NULL); } else { setMouseAccel(WMWidgetScreen(panel->parent), panel->acceleration, threshold); } wfree(tmp); } static void returnPressed(void *observerData, WMNotification * notification) { _Panel *panel = (_Panel *) observerData; /* Parameter not used, but tell the compiler that it is ok */ (void) notification; speedChange(NULL, panel); } static void toggle_disabling_of_mouse_actions(WMWidget *w, void *client_data) { WMButton *button = (WMButton *) w; Panel *panel = (Panel *) client_data; Bool do_enable; int i; if (WMGetButtonSelected(button)) do_enable = False; else do_enable = True; for (i = 0; i < wlengthof(panel->mouse_action); i++) WMSetPopUpButtonEnabled(panel->mouse_action[i].popup, do_enable); } static void doubleClick(WMWidget * w, void *data) { _Panel *panel = (_Panel *) data; int i; char buffer[32]; for (i = 0; i < wlengthof(panel->ddelaB); i++) { if (panel->ddelaB[i] == w) break; } WINGsConfiguration.doubleClickDelay = DELAY(i); sprintf(buffer, "%i", DELAY(i)); WMSetTextFieldText(panel->ddelaT, buffer); } static int getButtonAction(const char *str) { int i; if (!str) return -2; for (i = 0; i < wlengthof(button_actions); i++) { if (strcasecmp(str, button_actions[i].db_value) == 0) return i; } return -1; } static int getWheelAction(const char *str) { int i; if (!str) return -2; for (i = 0; i < wlengthof(wheel_actions); i++) { if (strcasecmp(str, wheel_actions[i].db_value) == 0) return i; } return -1; } static void getMouseParameters(Display * dpy, float *accel, int *thre) { int n, d; XGetPointerControl(dpy, &n, &d, thre); *accel = (float)n / (float)d; } static void showData(_Panel * panel) { char *str; int i; int a = -1, b = -1; float accel; char buffer[32]; Display *dpy = WMScreenDisplay(WMWidgetScreen(panel->parent)); for (i = 0; i < wlengthof(button_list); i++) { int action; str = GetStringForKey(button_list[i].db_key); if (button_list[i].type == T_BUTTON) action = getButtonAction(str); else action = getWheelAction(str); if (action < 0) { if (action == -1) wwarning(_("bad value %s for option %s"), str, button_list[i].db_key); action = button_list[i].default_action; } WMSetPopUpButtonSelectedItem(panel->mouse_action[i].popup, action); } WMSetButtonSelected(panel->disaB, GetBoolForKey("DisableWSMouseActions")); toggle_disabling_of_mouse_actions(panel->disaB, panel); /**/ getMouseParameters(dpy, &accel, &a); panel->maxThreshold = WidthOfScreen(DefaultScreenOfDisplay(dpy)); if (a > panel->maxThreshold) { panel->maxThreshold = a; } sprintf(buffer, "%i", a); WMSetTextFieldText(panel->threT, buffer); WMSetSliderValue(panel->speedS, (accel - 0.25F) / 0.25F); panel->acceleration = accel; sprintf(buffer, "%.2f", (double)accel); WMSetTextFieldText(panel->acceT, buffer); /**/ b = GetIntegerForKey("DoubleClickTime"); /* find best match */ a = -1; for (i = 0; i < wlengthof(panel->ddelaB); i++) { if (DELAY(i) == b) a = i; } if (a >= 0) WMPerformButtonClick(panel->ddelaB[a]); sprintf(buffer, "%i", b); WMSetTextFieldText(panel->ddelaT, buffer); /**/ str = GetStringForKey("ModifierKey"); if (!str) str = "mod1"; a = ModifierFromKey(dpy, str); if (a != -1) { str = modifierNames[a]; a = 0; for (i = 0; i < WMGetPopUpButtonNumberOfItems(panel->grabP); i++) { if (strstr(WMGetPopUpButtonItem(panel->grabP, i), str)) { WMSetPopUpButtonSelectedItem(panel->grabP, i); a = 1; break; } } } if (a < 1) { char *previous; previous = WMGetPopUpButtonItem(panel->grabP, 0); if (previous != NULL) WMSetPopUpButtonSelectedItem(panel->grabP, 0); wwarning(_("modifier key %s for option ModifierKey was not recognized. Using %s as default"), str, previous?previous:"(empty)"); } } static void fillModifierPopUp(WMPopUpButton * pop) { XModifierKeymap *mapping; Display *dpy = WMScreenDisplay(WMWidgetScreen(pop)); int i, j; char *str; char buffer[64]; mapping = XGetModifierMapping(dpy); if (!mapping || mapping->max_keypermod == 0) { WMAddPopUpButtonItem(pop, "Mod1"); WMAddPopUpButtonItem(pop, "Mod2"); WMAddPopUpButtonItem(pop, "Mod3"); WMAddPopUpButtonItem(pop, "Mod4"); WMAddPopUpButtonItem(pop, "Mod5"); wwarning(_("could not retrieve keyboard modifier mapping")); return; } for (j = 0; j < 8; j++) { int idx; char *array[8]; int a; KeySym ksym; int k; char *ptr; char *tmp; a = 0; memset(array, 0, sizeof(char *) * 8); for (i = 0; i < mapping->max_keypermod; i++) { idx = i + j * mapping->max_keypermod; if (mapping->modifiermap[idx] != 0) { int l; for (l = 0; l < 4; l++) { if (xext_xkb_supported) ksym = XkbKeycodeToKeysym(dpy, mapping->modifiermap[idx], 0, l); else ksym = XKeycodeToKeysym(dpy, mapping->modifiermap[idx], 0); if (ksym != NoSymbol) break; } if (ksym != NoSymbol) str = XKeysymToString(ksym); else str = NULL; if (str && !strstr(str, "_Lock") && !strstr(str, "Shift") && !strstr(str, "Control")) { array[a++] = wstrdup(str); } } } for (k = 0; k < a; k++) { if (array[k] == NULL) continue; tmp = wstrdup(array[k]); ptr = strstr(tmp, "_L"); if (ptr) *ptr = 0; ptr = strstr(tmp, "_R"); if (ptr) *ptr = 0; sprintf(buffer, "%s (%s)", modifierNames[j], tmp); /*sprintf(buffer, "%s", tmp); */ WMAddPopUpButtonItem(pop, buffer); for (i = k + 1; i < a; i++) { if (array[i] == NULL) continue; if (strstr(array[i], tmp)) { wfree(array[i]); array[i] = NULL; break; } } wfree(tmp); } while (--a > 0) { if (array[a]) wfree(array[a]); } } if (mapping) XFreeModifiermap(mapping); } static void createPanel(Panel * p) { _Panel *panel = (_Panel *) p; WMScreen *scr = WMWidgetScreen(panel->parent); WMPixmap *icon; char *buf1, *buf2; int i; RColor color; char *path; color.red = 0xae; color.green = 0xaa; color.blue = 0xae; panel->box = WMCreateBox(panel->parent); WMSetViewExpandsToParent(WMWidgetView(panel->box), 2, 2, 2, 2); /**************** Mouse Speed ****************/ panel->speedF = WMCreateFrame(panel->box); WMResizeWidget(panel->speedF, 219, 85); WMMoveWidget(panel->speedF, 9, 54); WMSetFrameTitle(panel->speedF, _("Mouse Speed")); panel->speedL = WMCreateLabel(panel->speedF); WMResizeWidget(panel->speedL, 40, 46); WMMoveWidget(panel->speedL, 8, 10); WMSetLabelImagePosition(panel->speedL, WIPImageOnly); path = LocateImage(SPEED_ICON_FILE); if (path) { icon = WMCreateBlendedPixmapFromFile(scr, path, &color); if (icon) { WMSetLabelImage(panel->speedL, icon); WMReleasePixmap(icon); } else { wwarning(_("could not load icon %s"), path); } wfree(path); } panel->speedS = WMCreateSlider(panel->speedF); WMResizeWidget(panel->speedS, 150, 15); WMMoveWidget(panel->speedS, 58, 30); WMSetSliderMinValue(panel->speedS, 0); WMSetSliderMaxValue(panel->speedS, 40); WMSetSliderContinuous(panel->speedS, False); WMSetSliderAction(panel->speedS, speedChange, panel); panel->acceL = WMCreateLabel(panel->speedF); WMResizeWidget(panel->acceL, 50, 16); WMMoveWidget(panel->acceL, 8, 58); WMSetLabelTextAlignment(panel->acceL, WARight); WMSetLabelText(panel->acceL, _("Accel.:")); panel->acceT = WMCreateTextField(panel->speedF); WMResizeWidget(panel->acceT, 40, 20); WMMoveWidget(panel->acceT, 58, 56); WMAddNotificationObserver(returnPressed, panel, WMTextDidEndEditingNotification, panel->acceT); panel->threL = WMCreateLabel(panel->speedF); WMResizeWidget(panel->threL, 80, 16); WMMoveWidget(panel->threL, 98, 58); WMSetLabelTextAlignment(panel->threL, WARight); WMSetLabelText(panel->threL, _("Threshold:")); panel->threT = WMCreateTextField(panel->speedF); WMResizeWidget(panel->threT, 30, 20); WMMoveWidget(panel->threT, 178, 56); WMAddNotificationObserver(returnPressed, panel, WMTextDidEndEditingNotification, panel->threT); WMMapSubwidgets(panel->speedF); /* ************** Grab Modifier **************** */ panel->grabF = WMCreateFrame(panel->box); WMResizeWidget(panel->grabF, 219, 46); WMMoveWidget(panel->grabF, 9, 5); WMSetFrameTitle(panel->grabF, _("Mouse Grab Modifier")); WMSetBalloonTextForView(_("Keyboard modifier to use for actions that\n" "involve dragging windows with the mouse,\n" "clicking inside the window."), WMWidgetView(panel->grabF)); panel->grabP = WMCreatePopUpButton(panel->grabF); WMResizeWidget(panel->grabP, 178, 20); WMMoveWidget(panel->grabP, 20, 17); fillModifierPopUp(panel->grabP); WMMapSubwidgets(panel->grabF); /***************** Doubleclick Delay ****************/ panel->ddelaF = WMCreateFrame(panel->box); WMResizeWidget(panel->ddelaF, 219, 80); WMMoveWidget(panel->ddelaF, 9, 142); WMSetFrameTitle(panel->ddelaF, _("Double-Click Delay")); buf1 = wmalloc(strlen(DELAY_ICON) + 2); buf2 = wmalloc(strlen(DELAY_ICON_S) + 2); for (i = 0; i < wlengthof(panel->ddelaB); i++) { panel->ddelaB[i] = WMCreateCustomButton(panel->ddelaF, WBBStateChangeMask); WMResizeWidget(panel->ddelaB[i], 25, 25); WMMoveWidget(panel->ddelaB[i], 18 + (40 * i), 18); WMSetButtonBordered(panel->ddelaB[i], False); WMSetButtonImagePosition(panel->ddelaB[i], WIPImageOnly); WMSetButtonAction(panel->ddelaB[i], doubleClick, panel); if (i > 0) { WMGroupButtons(panel->ddelaB[0], panel->ddelaB[i]); } sprintf(buf1, DELAY_ICON, i + 1); sprintf(buf2, DELAY_ICON_S, i + 1); path = LocateImage(buf1); if (path) { icon = WMCreatePixmapFromFile(scr, path); if (icon) { WMSetButtonImage(panel->ddelaB[i], icon); WMReleasePixmap(icon); } else { wwarning(_("could not load icon file %s"), path); } wfree(path); } path = LocateImage(buf2); if (path) { icon = WMCreatePixmapFromFile(scr, path); if (icon) { WMSetButtonAltImage(panel->ddelaB[i], icon); WMReleasePixmap(icon); } else { wwarning(_("could not load icon file %s"), path); } wfree(path); } } wfree(buf1); wfree(buf2); panel->tester = CreateDoubleTest(panel->ddelaF, _("Test")); WMResizeWidget(panel->tester, 84, 24); WMMoveWidget(panel->tester, 20, 48); panel->ddelaT = WMCreateTextField(panel->ddelaF); WMResizeWidget(panel->ddelaT, 40, 20); WMMoveWidget(panel->ddelaT, 130, 50); panel->ddelaL = WMCreateLabel(panel->ddelaF); WMResizeWidget(panel->ddelaL, 40, 16); WMMoveWidget(panel->ddelaL, 173, 54); { WMFont *font; WMColor *color; font = WMSystemFontOfSize(scr, 10); color = WMDarkGrayColor(scr); WMSetLabelTextColor(panel->ddelaL, color); WMSetLabelFont(panel->ddelaL, font); WMReleaseFont(font); WMReleaseColor(color); } WMSetLabelText(panel->ddelaL, _("ms")); WMMapSubwidgets(panel->ddelaF); /* ************** Workspace Action Buttons **************** */ panel->menuF = WMCreateFrame(panel->box); WMResizeWidget(panel->menuF, 276, 217); WMMoveWidget(panel->menuF, 236, 5); WMSetFrameTitle(panel->menuF, _("Workspace Mouse Actions")); panel->disaB = WMCreateSwitchButton(panel->menuF); WMResizeWidget(panel->disaB, 254, 18); WMMoveWidget(panel->disaB, 10, 15); WMSetButtonText(panel->disaB, _("Disable mouse actions")); WMSetButtonAction(panel->disaB, toggle_disabling_of_mouse_actions, panel); for (i = 0; i < wlengthof(button_list); i++) { int j; panel->mouse_action[i].label = WMCreateLabel(panel->menuF); WMResizeWidget(panel->mouse_action[i].label, 115, 20); WMMoveWidget(panel->mouse_action[i].label, 4, 37 + 25 * i); WMSetLabelTextAlignment(panel->mouse_action[i].label, WARight); WMSetLabelText(panel->mouse_action[i].label, _(button_list[i].display_label)); panel->mouse_action[i].popup = WMCreatePopUpButton(panel->menuF); WMResizeWidget(panel->mouse_action[i].popup, 145, 20); WMMoveWidget(panel->mouse_action[i].popup, 121, 37 + 25 * i); if (button_list[i].type == T_BUTTON) { for (j = 0; j < wlengthof(button_actions); j++) WMAddPopUpButtonItem(panel->mouse_action[i].popup, _(button_actions[j].label)); } else { for (j = 0; j < wlengthof(wheel_actions); j++) WMAddPopUpButtonItem(panel->mouse_action[i].popup, _(wheel_actions[j].label)); } } WMMapSubwidgets(panel->menuF); WMRealizeWidget(panel->box); WMMapSubwidgets(panel->box); showData(panel); } static void storeCommandInScript(const char *cmd, const char *line) { char *path; FILE *f; char buffer[128]; mode_t permissions; /* Calculate permission to be Executable but taking into account user's umask */ permissions = umask(0); umask(permissions); permissions = (S_IRWXU | S_IRWXG | S_IRWXO) & (~permissions); path = wstrconcat(wusergnusteppath(), "/Library/WindowMaker/autostart"); f = fopen(path, "rb"); if (!f) { f = fopen(path, "wb"); if (!f) { werror(_("could not create %s"), path); goto end; } fprintf(f, "#!/bin/sh\n"); fputs(line, f); fputs("\n", f); } else { int len = strlen(cmd); int ok = 0; char *tmppath; FILE *fo; tmppath = wstrconcat(wusergnusteppath(), "/Library/WindowMaker/autostart.tmp"); fo = fopen(tmppath, "wb"); if (!fo) { werror(_("could not create temporary file %s"), tmppath); wfree(tmppath); goto end; } while (!feof(f)) { if (!fgets(buffer, 127, f)) { break; } if (buffer[0] == '\n') { /* don't write empty lines, else the file will grow * indefinitely (one '\n' added at end of file on each save). */ continue; } if (strncmp(buffer, cmd, len) == 0) { if (!ok) { fputs(line, fo); fputs("\n", fo); ok = 1; } } else { fputs(buffer, fo); } } if (!ok) { fputs(line, fo); fputs("\n", fo); } fsync(fileno(fo)); fclose(fo); if (rename(tmppath, path) != 0) { werror(_("could not rename file %s to %s"), tmppath, path); } wfree(tmppath); } if (chmod(path, permissions) != 0) wwarning(_("could not set permission 0%03o on file \"%s\""), permissions, path); end: wfree(path); if (f) { fsync(fileno(f)); /* this may be rw */ fclose(f); } } static void storeData(_Panel * panel) { char buffer[64]; int i; char *tmp, *p; WMUserDefaults *udb = WMGetStandardUserDefaults(); if (!WMGetUDBoolForKey(udb, "NoXSetStuff")) { tmp = WMGetTextFieldText(panel->threT); if (strlen(tmp) == 0) { wfree(tmp); tmp = wstrdup("4"); } sprintf(buffer, XSET " m %i/%i %s\n", (int)(panel->acceleration * 10), 10, tmp); storeCommandInScript(XSET " m", buffer); wfree(tmp); } tmp = WMGetTextFieldText(panel->ddelaT); if (sscanf(tmp, "%i", &i) == 1 && i > 0) SetIntegerForKey(i, "DoubleClickTime"); wfree(tmp); SetBoolForKey(WMGetButtonSelected(panel->disaB), "DisableWSMouseActions"); for (i = 0; i < wlengthof(button_list); i++) { const char *db_value; int action; action = WMGetPopUpButtonSelectedItem(panel->mouse_action[i].popup); if (button_list[i].type == T_BUTTON) db_value = button_actions[action].db_value; else db_value = wheel_actions[action].db_value; SetStringForKey(db_value, button_list[i].db_key); } tmp = WMGetPopUpButtonItem(panel->grabP, WMGetPopUpButtonSelectedItem(panel->grabP)); tmp = wstrdup(tmp); p = strchr(tmp, ' '); if (p != NULL) *p = '\0'; SetStringForKey(tmp, "ModifierKey"); wfree(tmp); } Panel *InitMouseSettings(WMWidget *parent) { _Panel *panel; modifierNames[0] = wstrdup(_("Shift")); modifierNames[1] = wstrdup(_("Lock")); modifierNames[2] = wstrdup(_("Control")); modifierNames[3] = wstrdup(_("Mod1")); modifierNames[4] = wstrdup(_("Mod2")); modifierNames[5] = wstrdup(_("Mod3")); modifierNames[6] = wstrdup(_("Mod4")); modifierNames[7] = wstrdup(_("Mod5")); panel = wmalloc(sizeof(_Panel)); panel->sectionName = _("Mouse Preferences"); panel->description = _("Mouse speed/acceleration, double click delay,\n" "mouse button bindings etc."); panel->parent = parent; panel->callbacks.createWidgets = createPanel; panel->callbacks.updateDomain = storeData; AddSection(panel, ICON_FILE); return panel; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/Preferences.c���������������������������������������������������������0000644�0001750�0001750�00000024741�13431646201�015370� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Preferences.c- misc ergonomic preferences * * WPrefs - Window Maker Preferences Program * * Copyright (c) 1998-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "WPrefs.h" /* Possible choices to display window information during a resize */ static const struct { const char *db_value; const char *label; } resize_display[] = { { "corner", N_("Corner of screen") }, { "center", N_("Center of screen") }, { "floating", N_("Center of resized window") }, { "line", N_("Technical drawing-like") }, { "none", N_("Disabled") } }; /* Possible choices to display window information while a window is being moved */ static const struct { const char *db_value; const char *label; } move_display[] = { { "corner", N_("Corner of screen") }, { "center", N_("Center of screen") }, { "floating", N_("Center of resized window") }, { "none", N_("Disabled") } }; /* All the places where a balloon can be used to display more stuff to user */ static const struct { const char *db_key; const char *label; } balloon_choices[] = { { "WindowTitleBalloons", N_("incomplete window titles"), }, { "MiniwindowTitleBalloons", N_("miniwindow titles"), }, { "AppIconBalloons", N_("application/dock icons"), }, { "HelpBalloons", N_("internal help"), } }; static const struct { const char *db_key; int default_value; const char *label; const char *balloon_msg; } appicon_bouncing[] = { { "DoNotMakeAppIconsBounce", False, N_("Disable AppIcon bounce"), N_("By default, the AppIcon bounces when the application is launched") }, { "BounceAppIconsWhenUrgent", True, N_("Bounce when the application wants attention"), NULL }, { "RaiseAppIconsWhenBouncing", False, N_("Raise AppIcon when bouncing"), N_("Otherwise you will not see it bouncing if\nthere is a window in front of the AppIcon") } }; typedef struct _Panel { WMBox *box; char *sectionName; char *description; CallbackRec callbacks; WMWidget *parent; WMFrame *sizeF; WMPopUpButton *sizeP; WMFrame *posiF; WMPopUpButton *posiP; WMFrame *ballF; WMButton *ballB[wlengthof_nocheck(balloon_choices)]; WMFrame *optF; WMButton *bounceB[wlengthof_nocheck(appicon_bouncing)]; WMFrame *borderF; WMSlider *borderS; WMLabel *borderL; WMButton *lrB; WMButton *tbB; } _Panel; #define ICON_FILE "ergonomic" static void borderCallback(WMWidget * w, void *data) { _Panel *panel = (_Panel *) data; char buffer[64]; int i; /* Parameter not used, but tell the compiler that it is ok */ (void) w; i = WMGetSliderValue(panel->borderS); if (i == 0) sprintf(buffer, _("OFF")); else if (i == 1) sprintf(buffer, _("1 pixel")); else if (i <= 4) /* 2-4 */ sprintf(buffer, _("%i pixels"), i); else /* >4 */ sprintf(buffer, _("%i pixels "), i); /* note space! */ WMSetLabelText(panel->borderL, buffer); } static void showData(_Panel * panel) { char *str; int x; str = GetStringForKey("ResizeDisplay"); if (str != NULL) { for (x = 0; x < wlengthof(resize_display); x++) { if (strcasecmp(str, resize_display[x].db_value) == 0) { WMSetPopUpButtonSelectedItem(panel->sizeP, x); goto found_valid_resize_display; } } wwarning(_("bad value \"%s\" for option %s, using default \"%s\""), str, "ResizeDisplay", resize_display[0].db_value); } WMSetPopUpButtonSelectedItem(panel->sizeP, 0); found_valid_resize_display: str = GetStringForKey("MoveDisplay"); if (str != NULL) { for (x = 0; x < wlengthof(move_display); x++) { if (strcasecmp(str, move_display[x].db_value) == 0) { WMSetPopUpButtonSelectedItem(panel->posiP, x); goto found_valid_move_display; } } wwarning(_("bad value \"%s\" for option %s, using default \"%s\""), str, "MoveDisplay", move_display[0].db_value); } WMSetPopUpButtonSelectedItem(panel->posiP, 0); found_valid_move_display: x = GetIntegerForKey("WorkspaceBorderSize"); x = x < 0 ? 0 : x; x = x > 5 ? 5 : x; WMSetSliderValue(panel->borderS, x); borderCallback(NULL, panel); str = GetStringForKey("WorkspaceBorder"); if (!str) str = "none"; if (strcasecmp(str, "LeftRight") == 0) { WMSetButtonSelected(panel->lrB, True); } else if (strcasecmp(str, "TopBottom") == 0) { WMSetButtonSelected(panel->tbB, True); } else if (strcasecmp(str, "AllDirections") == 0) { WMSetButtonSelected(panel->tbB, True); WMSetButtonSelected(panel->lrB, True); } for (x = 0; x < wlengthof(appicon_bouncing); x++) { if (GetStringForKey(appicon_bouncing[x].db_key)) WMSetButtonSelected(panel->bounceB[x], GetBoolForKey(appicon_bouncing[x].db_key)); } for (x = 0; x < wlengthof(balloon_choices); x++) WMSetButtonSelected(panel->ballB[x], GetBoolForKey(balloon_choices[x].db_key)); } static void storeData(_Panel * panel) { char *str; Bool lr, tb; int i; i = WMGetPopUpButtonSelectedItem(panel->sizeP); SetStringForKey(resize_display[i].db_value, "ResizeDisplay"); i = WMGetPopUpButtonSelectedItem(panel->posiP); SetStringForKey(move_display[i].db_value, "MoveDisplay"); lr = WMGetButtonSelected(panel->lrB); tb = WMGetButtonSelected(panel->tbB); if (lr && tb) str = "AllDirections"; else if (lr) str = "LeftRight"; else if (tb) str = "TopBottom"; else str = "None"; SetStringForKey(str, "WorkspaceBorder"); SetIntegerForKey(WMGetSliderValue(panel->borderS), "WorkspaceBorderSize"); for (i = 0; i < wlengthof(appicon_bouncing); i++) SetBoolForKey(WMGetButtonSelected(panel->bounceB[i]), appicon_bouncing[i].db_key); for (i = 0; i < wlengthof(balloon_choices); i++) SetBoolForKey(WMGetButtonSelected(panel->ballB[i]), balloon_choices[i].db_key); } static void createPanel(Panel * p) { _Panel *panel = (_Panel *) p; int i; panel->box = WMCreateBox(panel->parent); WMSetViewExpandsToParent(WMWidgetView(panel->box), 2, 2, 2, 2); /***************** Size Display ****************/ panel->sizeF = WMCreateFrame(panel->box); WMResizeWidget(panel->sizeF, 255, 52); WMMoveWidget(panel->sizeF, 15, 7); WMSetFrameTitle(panel->sizeF, _("Size Display")); WMSetBalloonTextForView(_("The position or style of the window size\n" "display that's shown when a window is resized."), WMWidgetView(panel->sizeF)); panel->sizeP = WMCreatePopUpButton(panel->sizeF); WMResizeWidget(panel->sizeP, 227, 20); WMMoveWidget(panel->sizeP, 14, 20); for (i = 0; i < wlengthof(resize_display); i++) WMAddPopUpButtonItem(panel->sizeP, _(resize_display[i].label)); WMMapSubwidgets(panel->sizeF); /***************** Position Display ****************/ panel->posiF = WMCreateFrame(panel->box); WMResizeWidget(panel->posiF, 255, 52); WMMoveWidget(panel->posiF, 15, 66); WMSetFrameTitle(panel->posiF, _("Position Display")); WMSetBalloonTextForView(_("The position or style of the window position\n" "display that's shown when a window is moved."), WMWidgetView(panel->posiF)); panel->posiP = WMCreatePopUpButton(panel->posiF); WMResizeWidget(panel->posiP, 227, 20); WMMoveWidget(panel->posiP, 14, 20); for (i = 0; i < wlengthof(move_display); i++) WMAddPopUpButtonItem(panel->posiP, _(move_display[i].label)); WMMapSubwidgets(panel->posiF); /***************** Balloon Text ****************/ panel->ballF = WMCreateFrame(panel->box); WMResizeWidget(panel->ballF, 220, 130); WMMoveWidget(panel->ballF, 285, 7); WMSetFrameTitle(panel->ballF, _("Show balloon for...")); for (i = 0; i < wlengthof(balloon_choices); i++) { panel->ballB[i] = WMCreateSwitchButton(panel->ballF); WMResizeWidget(panel->ballB[i], 198, 20); WMMoveWidget(panel->ballB[i], 11, 20 + i * 26); WMSetButtonText(panel->ballB[i], _(balloon_choices[i].label)); } WMMapSubwidgets(panel->ballF); /***************** Options ****************/ panel->optF = WMCreateFrame(panel->box); WMResizeWidget(panel->optF, 255, 94); WMMoveWidget(panel->optF, 15, 125); WMSetFrameTitle(panel->optF, _("AppIcon bouncing")); for (i = 0; i < wlengthof(appicon_bouncing); i++) { panel->bounceB[i] = WMCreateSwitchButton(panel->optF); WMResizeWidget(panel->bounceB[i], 237, 26); WMMoveWidget(panel->bounceB[i], 9, 14 + i * 25); WMSetButtonText(panel->bounceB[i], _(appicon_bouncing[i].label)); if (appicon_bouncing[i].default_value) WMSetButtonSelected(panel->bounceB[i], True); if (appicon_bouncing[i].balloon_msg) WMSetBalloonTextForView(_(appicon_bouncing[i].balloon_msg), WMWidgetView(panel->bounceB[i])); } WMMapSubwidgets(panel->optF); /***************** Workspace border ****************/ panel->borderF = WMCreateFrame(panel->box); WMResizeWidget(panel->borderF, 220, 75); WMMoveWidget(panel->borderF, 285, 144); WMSetFrameTitle(panel->borderF, _("Workspace border")); panel->borderS = WMCreateSlider(panel->borderF); WMResizeWidget(panel->borderS, 80, 15); WMMoveWidget(panel->borderS, 11, 22); WMSetSliderMinValue(panel->borderS, 0); WMSetSliderMaxValue(panel->borderS, 5); WMSetSliderAction(panel->borderS, borderCallback, panel); panel->borderL = WMCreateLabel(panel->borderF); WMResizeWidget(panel->borderL, 100, 15); WMMoveWidget(panel->borderL, 105, 22); panel->lrB = WMCreateSwitchButton(panel->borderF); WMMoveWidget(panel->lrB, 11, 40); WMResizeWidget(panel->lrB, 95, 30); WMSetButtonText(panel->lrB, _("Left/Right")); panel->tbB = WMCreateSwitchButton(panel->borderF); WMMoveWidget(panel->tbB, 110, 40); WMResizeWidget(panel->tbB, 105, 30); WMSetButtonText(panel->tbB, _("Top/Bottom")); WMMapSubwidgets(panel->borderF); WMRealizeWidget(panel->box); WMMapSubwidgets(panel->box); showData(panel); } Panel *InitPreferences(WMWidget *parent) { _Panel *panel; panel = wmalloc(sizeof(_Panel)); panel->sectionName = _("Miscellaneous Ergonomic Preferences"); panel->description = _("Various settings like balloon text, geometry\n" "displays etc."); panel->parent = parent; panel->callbacks.createWidgets = createPanel; panel->callbacks.updateDomain = storeData; AddSection(panel, ICON_FILE); return panel; } �������������������������������WindowMaker-0.95.9/WPrefs.app/TexturePanel.c��������������������������������������������������������0000644�0001750�0001750�00000121456�13431646201�015550� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* TexturePanel.c- texture editting panel * * WPrefs - WindowMaker Preferences Program * * Copyright (c) 1998-2003 Alfredo K. Kojima * Copyright (c) 1998 James Thompson * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <ctype.h> #include <X11/Xlib.h> #include <WINGs/WINGs.h> #include "WPrefs.h" #include "TexturePanel.h" #define MAX_SECTION_PARTS 5 typedef struct _TexturePanel { WMWindow *win; /* texture name */ WMFrame *nameF; WMTextField *nameT; /* texture type */ WMPopUpButton *typeP; /* default color */ WMFrame *defcF; WMColorWell *defcW; WMFont *listFont; /*-- Gradient --*/ Pixmap gimage; /* colors */ WMFrame *gcolF; WMList *gcolL; WMButton *gcolaB; WMButton *gcoldB; WMSlider *ghueS; WMSlider *gsatS; WMSlider *gvalS; WMSlider *gbriS; WMSlider *gconS; /* direction (common) */ WMFrame *dirF; WMButton *dirhB; WMButton *dirvB; WMButton *dirdB; /*-- Simple Gradient --*/ /*-- Textured Gradient --*/ WMFrame *tcolF; WMColorWell *tcol1W; WMColorWell *tcol2W; WMFrame *topaF; WMSlider *topaS; /*-- Image --*/ WMFrame *imageF; WMScrollView *imageV; WMTextField *imageT; WMLabel *imageL; WMButton *browB; WMButton *dispB; WMPopUpButton *arrP; RImage *image; char *imageFile; /*****/ WMButton *okB; WMButton *cancelB; WMCallback *okAction; void *okData; WMCallback *cancelAction; void *cancelData; /****/ WMWidget *sectionParts[5][MAX_SECTION_PARTS]; int currentType; WMPropList *pathList; } _TexturePanel; enum { TYPE_SOLID, TYPE_GRADIENT, TYPE_SGRADIENT, TYPE_TGRADIENT, TYPE_PIXMAP }; enum { PTYPE_TILE, PTYPE_SCALE, PTYPE_CENTER, PTYPE_MAXIMIZE, PTYPE_FILL }; /* *-------------------------------------------------------------------------- * Private Functions *-------------------------------------------------------------------------- */ /************/ static void updateGradButtons(TexturePanel *panel) { RImage *image; WMPixmap *pixmap; int colorn; RColor **colors; colorn = WMGetListNumberOfRows(panel->gcolL); if (colorn < 1) { pixmap = NULL; } else { int i; WMListItem *item; colors = wmalloc(sizeof(RColor *) * (colorn + 1)); for (i = 0; i < colorn; i++) { item = WMGetListItem(panel->gcolL, i); colors[i] = (RColor *) item->clientData; } colors[i] = NULL; image = RRenderMultiGradient(80, 30, colors, RHorizontalGradient); pixmap = WMCreatePixmapFromRImage(WMWidgetScreen(panel->gcolL), image, 128); RReleaseImage(image); WMSetButtonImage(panel->dirhB, pixmap); WMReleasePixmap(pixmap); image = RRenderMultiGradient(80, 30, colors, RVerticalGradient); pixmap = WMCreatePixmapFromRImage(WMWidgetScreen(panel->gcolL), image, 128); RReleaseImage(image); WMSetButtonImage(panel->dirvB, pixmap); WMReleasePixmap(pixmap); image = RRenderMultiGradient(80, 30, colors, RDiagonalGradient); pixmap = WMCreatePixmapFromRImage(WMWidgetScreen(panel->gcolL), image, 128); RReleaseImage(image); WMSetButtonImage(panel->dirdB, pixmap); WMReleasePixmap(pixmap); wfree(colors); } } static void updateTGradImage(TexturePanel *panel) { RImage *image, *gradient; WMPixmap *pixmap; RColor from; RColor to; WMColor *color; if (!panel->image) return; color = WMGetColorWellColor(panel->tcol1W); from.red = WMRedComponentOfColor(color) >> 8; from.green = WMGreenComponentOfColor(color) >> 8; from.blue = WMBlueComponentOfColor(color) >> 8; color = WMGetColorWellColor(panel->tcol2W); to.red = WMRedComponentOfColor(color) >> 8; to.green = WMGreenComponentOfColor(color) >> 8; to.blue = WMBlueComponentOfColor(color) >> 8; if (panel->image->width < 141 || panel->image->height < 91) image = RMakeTiledImage(panel->image, 141, 91); else image = RCloneImage(panel->image); if (WMGetButtonSelected(panel->dirhB)) gradient = RRenderGradient(image->width, image->height, &from, &to, RHorizontalGradient); else if (WMGetButtonSelected(panel->dirvB)) gradient = RRenderGradient(image->width, image->height, &from, &to, RVerticalGradient); else gradient = RRenderGradient(image->width, image->height, &from, &to, RDiagonalGradient); RCombineImagesWithOpaqueness(image, gradient, WMGetSliderValue(panel->topaS)); RReleaseImage(gradient); pixmap = WMCreatePixmapFromRImage(WMWidgetScreen(panel->win), image, 128); WMSetLabelImage(panel->imageL, pixmap); WMReleasePixmap(pixmap); WMResizeWidget(panel->imageL, image->width, image->height); RReleaseImage(image); } static void updateSGradButtons(TexturePanel *panel) { RImage *image; WMPixmap *pixmap; RColor from; RColor to; WMColor *color; color = WMGetColorWellColor(panel->tcol1W); from.red = WMRedComponentOfColor(color) >> 8; from.green = WMGreenComponentOfColor(color) >> 8; from.blue = WMBlueComponentOfColor(color) >> 8; color = WMGetColorWellColor(panel->tcol2W); to.red = WMRedComponentOfColor(color) >> 8; to.green = WMGreenComponentOfColor(color) >> 8; to.blue = WMBlueComponentOfColor(color) >> 8; image = RRenderGradient(80, 30, &from, &to, RHorizontalGradient); pixmap = WMCreatePixmapFromRImage(WMWidgetScreen(panel->gcolL), image, 128); RReleaseImage(image); WMSetButtonImage(panel->dirhB, pixmap); WMReleasePixmap(pixmap); image = RRenderGradient(80, 30, &from, &to, RVerticalGradient); pixmap = WMCreatePixmapFromRImage(WMWidgetScreen(panel->gcolL), image, 128); RReleaseImage(image); WMSetButtonImage(panel->dirvB, pixmap); WMReleasePixmap(pixmap); image = RRenderGradient(80, 30, &from, &to, RDiagonalGradient); pixmap = WMCreatePixmapFromRImage(WMWidgetScreen(panel->gcolL), image, 128); RReleaseImage(image); WMSetButtonImage(panel->dirdB, pixmap); WMReleasePixmap(pixmap); } /*********** Gradient ************/ static void updateSVSlider(WMSlider *sPtr, Bool saturation, WMFont *font, RHSVColor *hsv) { RImage *image; WMPixmap *pixmap; WMScreen *scr = WMWidgetScreen(sPtr); RColor from, to; RHSVColor tmp; char *buffer; tmp = *hsv; if (saturation) { tmp.saturation = 0; RHSVtoRGB(&tmp, &from); tmp.saturation = 255; RHSVtoRGB(&tmp, &to); } else { tmp.value = 0; RHSVtoRGB(&tmp, &from); tmp.value = 255; RHSVtoRGB(&tmp, &to); } image = RRenderGradient(130, 16, &from, &to, RHorizontalGradient); pixmap = WMCreatePixmapFromRImage(scr, image, 128); RReleaseImage(image); if (saturation) buffer = wstrdup(_("Saturation")); else buffer = wstrdup(_("Brightness")); if (hsv->value < 128 || !saturation) { WMColor *col = WMWhiteColor(scr); WMDrawString(scr, WMGetPixmapXID(pixmap), col, font, 2, (16 - WMFontHeight(font)) / 2 - 1, buffer, strlen(buffer)); WMReleaseColor(col); } else { WMColor *col = WMBlackColor(scr); WMDrawString(scr, WMGetPixmapXID(pixmap), col, font, 2, (16 - WMFontHeight(font)) / 2 - 1, buffer, strlen(buffer)); WMReleaseColor(col); } wfree(buffer); WMSetSliderImage(sPtr, pixmap); WMReleasePixmap(pixmap); } static void updateHueSlider(WMSlider *sPtr, WMFont *font, RHSVColor *hsv) { RColor *colors[8]; RImage *image; WMPixmap *pixmap; WMScreen *scr = WMWidgetScreen(sPtr); RHSVColor thsv; int i; thsv = *hsv; for (i = 0; i <= 6; i++) { thsv.hue = (360 * i) / 6; colors[i] = wmalloc(sizeof(RColor)); RHSVtoRGB(&thsv, colors[i]); } colors[i] = NULL; image = RRenderMultiGradient(130, 16, colors, RGRD_HORIZONTAL); pixmap = WMCreatePixmapFromRImage(scr, image, 128); RReleaseImage(image); if (hsv->value < 128) { WMColor *col = WMWhiteColor(scr); WMDrawString(scr, WMGetPixmapXID(pixmap), col, font, 2, (16 - WMFontHeight(font)) / 2 - 1, _("Hue"), strlen(_("Hue"))); WMReleaseColor(col); } else { WMColor *col = WMBlackColor(scr); WMDrawString(scr, WMGetPixmapXID(pixmap), col, font, 2, (16 - WMFontHeight(font)) / 2 - 1, _("Hue"), strlen(_("Hue"))); WMReleaseColor(col); } WMSetSliderImage(sPtr, pixmap); WMReleasePixmap(pixmap); for (i = 0; i <= 6; i++) wfree(colors[i]); } static void sliderChangeCallback(WMWidget *w, void *data) { TexturePanel *panel = (TexturePanel *) data; RHSVColor hsv; int i, row, rows; WMListItem *item; RColor **colors; RImage *image; WMScreen *scr = WMWidgetScreen(w); hsv.hue = WMGetSliderValue(panel->ghueS); hsv.saturation = WMGetSliderValue(panel->gsatS); hsv.value = WMGetSliderValue(panel->gvalS); rows = WMGetListNumberOfRows(panel->gcolL); row = WMGetListSelectedItemRow(panel->gcolL); if (row < 0 && rows > 0) { row = 0; WMSelectListItem(panel->gcolL, row); item = WMGetListItem(panel->gcolL, row); RRGBtoHSV((RColor *) item->clientData, &hsv); WMSetSliderValue(panel->ghueS, hsv.hue); WMSetSliderValue(panel->gsatS, hsv.saturation); WMSetSliderValue(panel->gvalS, hsv.value); } if (row >= 0) { RColor *rgb; item = WMGetListItem(panel->gcolL, row); rgb = (RColor *) item->clientData; RHSVtoRGB(&hsv, rgb); sprintf(item->text, "%02x,%02x,%02x", rgb->red, rgb->green, rgb->blue); } if (w == panel->ghueS) { updateHueSlider(panel->ghueS, panel->listFont, &hsv); updateSVSlider(panel->gsatS, True, panel->listFont, &hsv); updateSVSlider(panel->gvalS, False, panel->listFont, &hsv); } else if (w == panel->gsatS) { updateHueSlider(panel->ghueS, panel->listFont, &hsv); updateSVSlider(panel->gvalS, False, panel->listFont, &hsv); } else { updateHueSlider(panel->ghueS, panel->listFont, &hsv); updateSVSlider(panel->gsatS, True, panel->listFont, &hsv); } if (rows == 0) return; colors = wmalloc(sizeof(RColor *) * (rows + 1)); for (i = 0; i < rows; i++) { item = WMGetListItem(panel->gcolL, i); colors[i] = (RColor *) item->clientData; } colors[i] = NULL; if (panel->gimage != None) XFreePixmap(WMScreenDisplay(scr), panel->gimage); image = RRenderMultiGradient(30, i * WMGetListItemHeight(panel->gcolL), colors, RVerticalGradient); RConvertImage(WMScreenRContext(scr), image, &panel->gimage); RReleaseImage(image); wfree(colors); WMRedisplayWidget(panel->gcolL); updateGradButtons(panel); } static void paintGradListItem(WMList *lPtr, int index, Drawable d, char *text, int state, WMRect *rect) { TexturePanel *panel = (TexturePanel *) WMGetHangedData(lPtr); WMScreen *scr = WMWidgetScreen(lPtr); WMColor *white = WMWhiteColor(scr); WMColor *black = WMBlackColor(scr); WMColor *gray = WMGrayColor(scr); int width, height, x, y; Display *dpy; dpy = WMScreenDisplay(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 XFillRectangle(dpy, d, WMColorGC(gray), x, y, width, height); if (panel->gimage) { XCopyArea(WMScreenDisplay(scr), panel->gimage, d, WMColorGC(white), 0, height * index, 30, height, x + 5, y); } WMDrawString(scr, d, black, panel->listFont, x + 40, y + 1, text, strlen(text)); WMReleaseColor(white); WMReleaseColor(black); WMReleaseColor(gray); } static void gradAddCallback(WMWidget *w, void *data) { TexturePanel *panel = (TexturePanel *) data; WMListItem *item; int row; RColor *rgb; /* Parameter not used, but tell the compiler that it is ok */ (void) w; row = WMGetListSelectedItemRow(panel->gcolL) + 1; item = WMInsertListItem(panel->gcolL, row, "00,00,00"); rgb = wmalloc(sizeof(RColor)); item->clientData = rgb; WMSelectListItem(panel->gcolL, row); updateGradButtons(panel); sliderChangeCallback(panel->ghueS, panel); WMSetButtonEnabled(panel->okB, WMGetListNumberOfRows(panel->gcolL) > 1); } static void gradClickCallback(WMWidget *w, void *data) { TexturePanel *panel = (TexturePanel *) data; WMListItem *item; int row; RHSVColor hsv; row = WMGetListSelectedItemRow(w); if (row < 0) return; item = WMGetListItem(panel->gcolL, row); RRGBtoHSV((RColor *) item->clientData, &hsv); WMSetSliderValue(panel->ghueS, hsv.hue); WMSetSliderValue(panel->gsatS, hsv.saturation); WMSetSliderValue(panel->gvalS, hsv.value); sliderChangeCallback(panel->ghueS, panel); sliderChangeCallback(panel->gsatS, panel); } static void gradDeleteCallback(WMWidget *w, void *data) { TexturePanel *panel = (TexturePanel *) data; WMListItem *item; int row, rows; /* Parameter not used, but tell the compiler that it is ok */ (void) w; row = WMGetListSelectedItemRow(panel->gcolL); if (row < 0) return; item = WMGetListItem(panel->gcolL, row); wfree(item->clientData); WMRemoveListItem(panel->gcolL, row); if (row > 0) WMSelectListItem(panel->gcolL, row - 1); else { rows = WMGetListNumberOfRows(panel->gcolL); if (rows > 0) WMSelectListItem(panel->gcolL, 0); } updateGradButtons(panel); gradClickCallback(panel->gcolL, panel); WMSetButtonEnabled(panel->okB, WMGetListNumberOfRows(panel->gcolL) > 1); } /*************** Simple Gradient ***************/ static void colorWellObserver(void *self, WMNotification *n) { /* Parameter not used, but tell the compiler that it is ok */ (void) n; updateSGradButtons(self); } static void opaqChangeCallback(WMWidget *w, void *data) { TexturePanel *panel = (TexturePanel *) data; /* Parameter not used, but tell the compiler that it is ok */ (void) w; updateTGradImage(panel); } /****************** Image ******************/ static void updateImage(TexturePanel *panel, const char *path) { WMScreen *scr = WMWidgetScreen(panel->win); RImage *image; WMPixmap *pixmap; WMSize size; if (path) { image = RLoadImage(WMScreenRContext(scr), path, 0); if (!image) { char *message; message = wstrconcat(_("Could not load the selected file: "), (char *)RMessageForError(RErrorCode)); WMRunAlertPanel(scr, panel->win, _("Error"), message, _("OK"), NULL, NULL); if (!panel->image) WMSetButtonEnabled(panel->okB, False); wfree(message); return; } WMSetButtonEnabled(panel->okB, True); if (panel->image) RReleaseImage(panel->image); panel->image = image; } else { image = panel->image; } if (WMGetPopUpButtonSelectedItem(panel->typeP) == TYPE_PIXMAP) { if (image) { pixmap = WMCreatePixmapFromRImage(scr, image, 128); size = WMGetPixmapSize(pixmap); WMSetLabelImage(panel->imageL, pixmap); WMResizeWidget(panel->imageL, size.width, size.height); WMReleasePixmap(pixmap); } } else { updateTGradImage(panel); } } static void browseImageCallback(WMWidget *w, void *data) { TexturePanel *panel = (TexturePanel *) data; WMOpenPanel *opanel; WMScreen *scr = WMWidgetScreen(w); static char *ipath; opanel = WMGetOpenPanel(scr); WMSetFilePanelCanChooseDirectories(opanel, False); WMSetFilePanelCanChooseFiles(opanel, True); if (!ipath) ipath = wstrdup(wgethomedir()); if (WMRunModalFilePanelForDirectory(opanel, panel->win, ipath, _("Open Image"), NULL)) { char *path, *fullpath; char *tmp, *tmp2; tmp = WMGetFilePanelFileName(opanel); if (!tmp) return; fullpath = tmp; wfree(ipath); ipath = fullpath; path = wstrdup(fullpath); tmp2 = strrchr(fullpath, '/'); if (tmp2) tmp2++; tmp = wfindfileinarray(panel->pathList, tmp2); if (tmp) { if (strcmp(fullpath, tmp) == 0) { wfree(path); path = tmp2; } wfree(tmp); } if (!RGetImageFileFormat(fullpath)) { WMRunAlertPanel(scr, panel->win, _("Error"), _("The selected file does not contain a supported image."), _("OK"), NULL, NULL); wfree(path); } else { updateImage(panel, fullpath); wfree(panel->imageFile); panel->imageFile = path; WMSetTextFieldText(panel->imageT, path); } } } static void buttonCallback(WMWidget *w, void *data) { TexturePanel *panel = (TexturePanel *) data; if (w == panel->okB) (*panel->okAction) (panel->okData); else (*panel->cancelAction) (panel->cancelData); } static void changeTypeCallback(WMWidget *w, void *data) { TexturePanel *panel = (TexturePanel *) data; int newType; int i; newType = WMGetPopUpButtonSelectedItem(w); if (newType == panel->currentType) return; if (panel->currentType >= 0) { for (i = 0; i < MAX_SECTION_PARTS; i++) { if (panel->sectionParts[panel->currentType][i] == NULL) break; WMUnmapWidget(panel->sectionParts[panel->currentType][i]); } } for (i = 0; i < MAX_SECTION_PARTS; i++) { if (panel->sectionParts[newType][i] == NULL) break; WMMapWidget(panel->sectionParts[newType][i]); } panel->currentType = newType; switch (newType) { case TYPE_SGRADIENT: updateSGradButtons(panel); WMSetButtonEnabled(panel->okB, True); break; case TYPE_GRADIENT: updateGradButtons(panel); WMSetButtonEnabled(panel->okB, WMGetListNumberOfRows(panel->gcolL) > 1); break; case TYPE_TGRADIENT: case TYPE_PIXMAP: updateImage(panel, NULL); WMSetButtonEnabled(panel->okB, panel->image != NULL); break; default: WMSetButtonEnabled(panel->okB, True); break; } } /* *-------------------------------------------------------------------------- * Public functions *-------------------------------------------------------------------------- */ void ShowTexturePanel(TexturePanel *panel) { Display *dpy = WMScreenDisplay(WMWidgetScreen(panel->win)); Screen *scr = DefaultScreenOfDisplay(dpy); WMSetWindowInitialPosition(panel->win, (WidthOfScreen(scr) - WMWidgetWidth(panel->win)) / 2, (HeightOfScreen(scr) - WMWidgetHeight(panel->win)) / 2); WMMapWidget(panel->win); } void HideTexturePanel(TexturePanel *panel) { WMUnmapWidget(panel->win); } void SetTexturePanelOkAction(TexturePanel *panel, WMCallback *action, void *clientData) { panel->okAction = action; panel->okData = clientData; } void SetTexturePanelCancelAction(TexturePanel *panel, WMCallback *action, void *clientData) { panel->cancelAction = action; panel->cancelData = clientData; } void SetTexturePanelTexture(TexturePanel *panel, const char *name, WMPropList *texture) { WMScreen *scr = WMWidgetScreen(panel->win); char *str, *type; WMPropList *p; WMColor *color; int i; char buffer[64]; int gradient = 0; WMSetTextFieldText(panel->nameT, name); if (!texture) return; p = WMGetFromPLArray(texture, 0); if (!p) goto bad_texture; type = WMGetFromPLString(p); /*............................................... */ if (strcasecmp(type, "solid") == 0) { WMSetPopUpButtonSelectedItem(panel->typeP, TYPE_SOLID); p = WMGetFromPLArray(texture, 1); if (!p) str = "black"; else str = WMGetFromPLString(p); color = WMCreateNamedColor(scr, str, False); WMSetColorWellColor(panel->defcW, color); WMReleaseColor(color); /*............................................... */ } else if (strcasecmp(type, "hgradient") == 0 || strcasecmp(type, "vgradient") == 0 || strcasecmp(type, "dgradient") == 0) { WMSetPopUpButtonSelectedItem(panel->typeP, TYPE_SGRADIENT); p = WMGetFromPLArray(texture, 1); if (!p) str = "black"; else str = WMGetFromPLString(p); color = WMCreateNamedColor(scr, str, False); WMSetColorWellColor(panel->tcol1W, color); WMReleaseColor(color); p = WMGetFromPLArray(texture, 2); if (!p) str = "black"; else str = WMGetFromPLString(p); color = WMCreateNamedColor(scr, str, False); WMSetColorWellColor(panel->tcol2W, color); WMReleaseColor(color); gradient = type[0]; /*............................................... */ } else if (strcasecmp(type, "thgradient") == 0 || strcasecmp(type, "tvgradient") == 0 || strcasecmp(type, "tdgradient") == 0) { int i; WMSetPopUpButtonSelectedItem(panel->typeP, TYPE_TGRADIENT); gradient = type[1]; WMSetTextFieldText(panel->imageT, WMGetFromPLString(WMGetFromPLArray(texture, 1))); if (panel->imageFile) wfree(panel->imageFile); panel->imageFile = wstrdup(WMGetFromPLString(WMGetFromPLArray(texture, 1))); if (sscanf(WMGetFromPLString(WMGetFromPLArray(texture, 2)), "%i", &i) != 1) i = 180; WMSetSliderValue(panel->topaS, i); p = WMGetFromPLArray(texture, 3); if (!p) str = "black"; else str = WMGetFromPLString(p); color = WMCreateNamedColor(scr, str, False); WMSetColorWellColor(panel->tcol1W, color); WMReleaseColor(color); p = WMGetFromPLArray(texture, 4); if (!p) str = "black"; else str = WMGetFromPLString(p); color = WMCreateNamedColor(scr, str, False); WMSetColorWellColor(panel->tcol2W, color); WMReleaseColor(color); WMSetTextFieldText(panel->imageT, WMGetFromPLString(WMGetFromPLArray(texture, 1))); if (panel->imageFile) wfree(panel->imageFile); panel->imageFile = wfindfileinarray(panel->pathList, WMGetFromPLString(WMGetFromPLArray(texture, 1))); if (panel->imageFile != NULL) { panel->image = RLoadImage(WMScreenRContext(scr), panel->imageFile, 0); updateTGradImage(panel); updateSGradButtons(panel); } else wwarning(_("could not load file '%s': %s"), panel->imageFile, RMessageForError(RErrorCode)); /*............................................... */ } else if (strcasecmp(type, "mhgradient") == 0 || strcasecmp(type, "mvgradient") == 0 || strcasecmp(type, "mdgradient") == 0) { WMListItem *item; for (i = 0; i < WMGetListNumberOfRows(panel->gcolL); i++) { item = WMGetListItem(panel->gcolL, i); wfree(item->clientData); } WMClearList(panel->gcolL); WMSetPopUpButtonSelectedItem(panel->typeP, TYPE_GRADIENT); p = WMGetFromPLArray(texture, 1); if (!p) str = "black"; else str = WMGetFromPLString(p); color = WMCreateNamedColor(scr, str, False); WMSetColorWellColor(panel->defcW, color); WMReleaseColor(color); for (i = 2; i < WMGetPropListItemCount(texture); i++) { RColor *rgb; XColor xcolor; p = WMGetFromPLArray(texture, i); if (!p) str = "black"; else str = WMGetFromPLString(p); XParseColor(WMScreenDisplay(scr), WMScreenRContext(scr)->cmap, str, &xcolor); rgb = wmalloc(sizeof(RColor)); rgb->red = xcolor.red >> 8; rgb->green = xcolor.green >> 8; rgb->blue = xcolor.blue >> 8; sprintf(buffer, "%02x,%02x,%02x", rgb->red, rgb->green, rgb->blue); item = WMAddListItem(panel->gcolL, buffer); item->clientData = rgb; } sliderChangeCallback(panel->ghueS, panel); gradient = type[1]; /*............................................... */ } else if (strcasecmp(type, "cpixmap") == 0 || strcasecmp(type, "spixmap") == 0 || strcasecmp(type, "mpixmap") == 0 || strcasecmp(type, "tpixmap") == 0) { WMSetPopUpButtonSelectedItem(panel->typeP, TYPE_PIXMAP); switch (toupper(type[0])) { case 'C': WMSetPopUpButtonSelectedItem(panel->arrP, PTYPE_CENTER); break; case 'S': WMSetPopUpButtonSelectedItem(panel->arrP, PTYPE_SCALE); break; case 'M': WMSetPopUpButtonSelectedItem(panel->arrP, PTYPE_MAXIMIZE); break; case 'F': WMSetPopUpButtonSelectedItem(panel->arrP, PTYPE_FILL); break; default: case 'T': WMSetPopUpButtonSelectedItem(panel->arrP, PTYPE_TILE); break; } WMSetTextFieldText(panel->imageT, WMGetFromPLString(WMGetFromPLArray(texture, 1))); if (panel->imageFile) wfree(panel->imageFile); panel->imageFile = wfindfileinarray(panel->pathList, WMGetFromPLString(WMGetFromPLArray(texture, 1))); color = WMCreateNamedColor(scr, WMGetFromPLString(WMGetFromPLArray(texture, 2)), False); WMSetColorWellColor(panel->defcW, color); WMReleaseColor(color); updateImage(panel, panel->imageFile); } changeTypeCallback(panel->typeP, panel); if (gradient > 0) { updateGradButtons(panel); switch (toupper(gradient)) { case 'H': WMPerformButtonClick(panel->dirhB); break; case 'V': WMPerformButtonClick(panel->dirvB); break; default: case 'D': WMPerformButtonClick(panel->dirdB); break; } } return; bad_texture: str = WMGetPropListDescription(texture, False); wwarning(_("error creating texture %s"), str); wfree(str); } char *GetTexturePanelTextureName(TexturePanel *panel) { return WMGetTextFieldText(panel->nameT); } WMPropList *GetTexturePanelTexture(TexturePanel *panel) { WMPropList *prop = NULL; WMColor *color; char *str, *str2; char buff[32]; int i; switch (WMGetPopUpButtonSelectedItem(panel->typeP)) { case TYPE_SOLID: color = WMGetColorWellColor(panel->defcW); str = WMGetColorRGBDescription(color); prop = WMCreatePLArray(WMCreatePLString("solid"), WMCreatePLString(str), NULL); wfree(str); break; case TYPE_PIXMAP: color = WMGetColorWellColor(panel->defcW); str = WMGetColorRGBDescription(color); switch (WMGetPopUpButtonSelectedItem(panel->arrP)) { case PTYPE_SCALE: prop = WMCreatePLArray(WMCreatePLString("spixmap"), WMCreatePLString(panel->imageFile), WMCreatePLString(str), NULL); break; case PTYPE_MAXIMIZE: prop = WMCreatePLArray(WMCreatePLString("mpixmap"), WMCreatePLString(panel->imageFile), WMCreatePLString(str), NULL); break; case PTYPE_FILL: prop = WMCreatePLArray(WMCreatePLString("fpixmap"), WMCreatePLString(panel->imageFile), WMCreatePLString(str), NULL); break; case PTYPE_CENTER: prop = WMCreatePLArray(WMCreatePLString("cpixmap"), WMCreatePLString(panel->imageFile), WMCreatePLString(str), NULL); break; case PTYPE_TILE: prop = WMCreatePLArray(WMCreatePLString("tpixmap"), WMCreatePLString(panel->imageFile), WMCreatePLString(str), NULL); break; } wfree(str); break; case TYPE_TGRADIENT: color = WMGetColorWellColor(panel->tcol1W); str = WMGetColorRGBDescription(color); color = WMGetColorWellColor(panel->tcol2W); str2 = WMGetColorRGBDescription(color); sprintf(buff, "%i", WMGetSliderValue(panel->topaS)); if (WMGetButtonSelected(panel->dirdB)) { prop = WMCreatePLArray(WMCreatePLString("tdgradient"), WMCreatePLString(panel->imageFile), WMCreatePLString(buff), WMCreatePLString(str), WMCreatePLString(str2), NULL); } else if (WMGetButtonSelected(panel->dirvB)) { prop = WMCreatePLArray(WMCreatePLString("tvgradient"), WMCreatePLString(panel->imageFile), WMCreatePLString(buff), WMCreatePLString(str), WMCreatePLString(str2), NULL); } else { prop = WMCreatePLArray(WMCreatePLString("thgradient"), WMCreatePLString(panel->imageFile), WMCreatePLString(buff), WMCreatePLString(str), WMCreatePLString(str2), NULL); } wfree(str); wfree(str2); break; case TYPE_SGRADIENT: color = WMGetColorWellColor(panel->tcol1W); str = WMGetColorRGBDescription(color); color = WMGetColorWellColor(panel->tcol2W); str2 = WMGetColorRGBDescription(color); if (WMGetButtonSelected(panel->dirdB)) { prop = WMCreatePLArray(WMCreatePLString("dgradient"), WMCreatePLString(str), WMCreatePLString(str2), NULL); } else if (WMGetButtonSelected(panel->dirvB)) { prop = WMCreatePLArray(WMCreatePLString("vgradient"), WMCreatePLString(str), WMCreatePLString(str2), NULL); } else { prop = WMCreatePLArray(WMCreatePLString("hgradient"), WMCreatePLString(str), WMCreatePLString(str2), NULL); } wfree(str); wfree(str2); break; case TYPE_GRADIENT: color = WMGetColorWellColor(panel->defcW); str = WMGetColorRGBDescription(color); if (WMGetButtonSelected(panel->dirdB)) prop = WMCreatePLArray(WMCreatePLString("mdgradient"), WMCreatePLString(str), NULL); else if (WMGetButtonSelected(panel->dirvB)) prop = WMCreatePLArray(WMCreatePLString("mvgradient"), WMCreatePLString(str), NULL); else prop = WMCreatePLArray(WMCreatePLString("mhgradient"), WMCreatePLString(str), NULL); wfree(str); for (i = 0; i < WMGetListNumberOfRows(panel->gcolL); i++) { RColor *rgb; WMListItem *item; item = WMGetListItem(panel->gcolL, i); rgb = (RColor *) item->clientData; sprintf(buff, "#%02x%02x%02x", rgb->red, rgb->green, rgb->blue); WMAddToPLArray(prop, WMCreatePLString(buff)); } break; } return prop; } void SetTexturePanelPixmapPath(TexturePanel *panel, WMPropList *array) { panel->pathList = array; } TexturePanel *CreateTexturePanel(WMWindow *keyWindow) /*CreateTexturePanel(WMScreen *scr)*/ { TexturePanel *panel; WMScreen *scr = WMWidgetScreen(keyWindow); panel = wmalloc(sizeof(TexturePanel)); panel->listFont = WMSystemFontOfSize(scr, 12); panel->win = WMCreatePanelWithStyleForWindow(keyWindow, "texturePanel", WMTitledWindowMask | WMClosableWindowMask); /* panel->win = WMCreateWindowWithStyle(scr, "texturePanel", WMTitledWindowMask |WMClosableWindowMask); */ WMResizeWidget(panel->win, 325, 423); WMSetWindowTitle(panel->win, _("Texture Panel")); WMSetWindowCloseAction(panel->win, buttonCallback, panel); /* texture name */ panel->nameF = WMCreateFrame(panel->win); WMResizeWidget(panel->nameF, 185, 50); WMMoveWidget(panel->nameF, 15, 10); WMSetFrameTitle(panel->nameF, _("Texture Name")); panel->nameT = WMCreateTextField(panel->nameF); WMResizeWidget(panel->nameT, 160, 20); WMMoveWidget(panel->nameT, 12, 18); WMMapSubwidgets(panel->nameF); /* texture types */ panel->typeP = WMCreatePopUpButton(panel->win); WMResizeWidget(panel->typeP, 185, 20); WMMoveWidget(panel->typeP, 15, 65); WMAddPopUpButtonItem(panel->typeP, _("Solid Color")); WMAddPopUpButtonItem(panel->typeP, _("Gradient Texture")); WMAddPopUpButtonItem(panel->typeP, _("Simple Gradient Texture")); WMAddPopUpButtonItem(panel->typeP, _("Textured Gradient")); WMAddPopUpButtonItem(panel->typeP, _("Image Texture")); WMSetPopUpButtonSelectedItem(panel->typeP, 0); WMSetPopUpButtonAction(panel->typeP, changeTypeCallback, panel); /* color */ panel->defcF = WMCreateFrame(panel->win); WMResizeWidget(panel->defcF, 100, 75); WMMoveWidget(panel->defcF, 210, 10); WMSetFrameTitle(panel->defcF, _("Default Color")); panel->defcW = WMCreateColorWell(panel->defcF); WMResizeWidget(panel->defcW, 60, 45); WMMoveWidget(panel->defcW, 20, 20); WMMapSubwidgets(panel->defcF); /****** Gradient ******/ panel->gcolF = WMCreateFrame(panel->win); WMResizeWidget(panel->gcolF, 295, 205); WMMoveWidget(panel->gcolF, 15, 95); WMSetFrameTitle(panel->gcolF, _("Gradient Colors")); panel->gcolL = WMCreateList(panel->gcolF); WMResizeWidget(panel->gcolL, 130, 140); WMMoveWidget(panel->gcolL, 10, 25); WMHangData(panel->gcolL, panel); WMSetListUserDrawProc(panel->gcolL, paintGradListItem); WMSetListAction(panel->gcolL, gradClickCallback, panel); panel->gcolaB = WMCreateCommandButton(panel->gcolF); WMResizeWidget(panel->gcolaB, 64, 24); WMMoveWidget(panel->gcolaB, 10, 170); WMSetButtonText(panel->gcolaB, _("Add")); WMSetButtonAction(panel->gcolaB, gradAddCallback, panel); panel->gcoldB = WMCreateCommandButton(panel->gcolF); WMResizeWidget(panel->gcoldB, 64, 24); WMMoveWidget(panel->gcoldB, 75, 170); WMSetButtonText(panel->gcoldB, _("Delete")); WMSetButtonAction(panel->gcoldB, gradDeleteCallback, panel); #if 0 panel->gbriS = WMCreateSlider(panel->gcolF); WMResizeWidget(panel->gbriS, 130, 16); WMMoveWidget(panel->gbriS, 150, 25); WMSetSliderKnobThickness(panel->gbriS, 8); WMSetSliderMaxValue(panel->gbriS, 100); WMSetSliderAction(panel->gbriS, sliderChangeCallback, panel); { WMPixmap *pixmap; WMColor *color; pixmap = WMCreatePixmap(scr, 130, 16, WMScreenDepth(scr), False); color = WMDarkGrayColor(scr); XFillRectangle(WMScreenDisplay(scr), WMGetPixmapXID(pixmap), WMColorGC(color), 0, 0, 130, 16); WMReleaseColor(color); color = WMWhiteColor(color); WMDrawString(scr, WMGetPixmapXID(pixmap), color, panel->listFont, 2, (16 - WMFontHeight(panel->listFont)) / 2 - 1, "Brightness", 10); WMSetSliderImage(panel->gbriS, pixmap); WMReleasePixmap(pixmap); } panel->gconS = WMCreateSlider(panel->gcolF); WMResizeWidget(panel->gconS, 130, 16); WMMoveWidget(panel->gconS, 150, 50); WMSetSliderKnobThickness(panel->gconS, 8); WMSetSliderMaxValue(panel->gconS, 100); WMSetSliderAction(panel->gconS, sliderChangeCallback, panel); { WMPixmap *pixmap; WMColor *color; pixmap = WMCreatePixmap(scr, 130, 16, WMScreenDepth(scr), False); color = WMDarkGrayColor(scr); XFillRectangle(WMScreenDisplay(scr), WMGetPixmapXID(pixmap), WMColorGC(color), 0, 0, 130, 16); WMReleaseColor(color); color = WMWhiteColor(scr); WMDrawString(scr, WMGetPixmapXID(pixmap), color, panel->listFont, 2, (16 - WMFontHeight(panel->listFont)) / 2 - 1, "Contrast", 8); WMSetSliderImage(panel->gconS, pixmap); WMReleasePixmap(pixmap); } #endif panel->ghueS = WMCreateSlider(panel->gcolF); WMResizeWidget(panel->ghueS, 130, 16); WMMoveWidget(panel->ghueS, 150, 100); WMSetSliderKnobThickness(panel->ghueS, 8); WMSetSliderMaxValue(panel->ghueS, 359); WMSetSliderAction(panel->ghueS, sliderChangeCallback, panel); panel->gsatS = WMCreateSlider(panel->gcolF); WMResizeWidget(panel->gsatS, 130, 16); WMMoveWidget(panel->gsatS, 150, 125); WMSetSliderKnobThickness(panel->gsatS, 8); WMSetSliderMaxValue(panel->gsatS, 255); WMSetSliderAction(panel->gsatS, sliderChangeCallback, panel); panel->gvalS = WMCreateSlider(panel->gcolF); WMResizeWidget(panel->gvalS, 130, 16); WMMoveWidget(panel->gvalS, 150, 150); WMSetSliderKnobThickness(panel->gvalS, 8); WMSetSliderMaxValue(panel->gvalS, 255); WMSetSliderAction(panel->gvalS, sliderChangeCallback, panel); WMMapSubwidgets(panel->gcolF); /** Direction **/ panel->dirF = WMCreateFrame(panel->win); WMSetFrameTitle(panel->dirF, _("Direction")); WMResizeWidget(panel->dirF, 295, 75); WMMoveWidget(panel->dirF, 15, 305); panel->dirvB = WMCreateButton(panel->dirF, WBTOnOff); WMSetButtonImagePosition(panel->dirvB, WIPImageOnly); WMResizeWidget(panel->dirvB, 90, 40); WMMoveWidget(panel->dirvB, 10, 20); panel->dirhB = WMCreateButton(panel->dirF, WBTOnOff); WMSetButtonImagePosition(panel->dirhB, WIPImageOnly); WMResizeWidget(panel->dirhB, 90, 40); WMMoveWidget(panel->dirhB, 102, 20); panel->dirdB = WMCreateButton(panel->dirF, WBTOnOff); WMSetButtonImagePosition(panel->dirdB, WIPImageOnly); WMResizeWidget(panel->dirdB, 90, 40); WMMoveWidget(panel->dirdB, 194, 20); WMGroupButtons(panel->dirvB, panel->dirhB); WMGroupButtons(panel->dirvB, panel->dirdB); WMMapSubwidgets(panel->dirF); /****************** Textured Gradient ******************/ panel->tcolF = WMCreateFrame(panel->win); WMResizeWidget(panel->tcolF, 100, 135); WMMoveWidget(panel->tcolF, 210, 10); WMSetFrameTitle(panel->tcolF, _("Gradient")); panel->tcol1W = WMCreateColorWell(panel->tcolF); WMResizeWidget(panel->tcol1W, 60, 45); WMMoveWidget(panel->tcol1W, 20, 25); WMAddNotificationObserver(colorWellObserver, panel, WMColorWellDidChangeNotification, panel->tcol1W); panel->tcol2W = WMCreateColorWell(panel->tcolF); WMResizeWidget(panel->tcol2W, 60, 45); WMMoveWidget(panel->tcol2W, 20, 75); WMAddNotificationObserver(colorWellObserver, panel, WMColorWellDidChangeNotification, panel->tcol2W); /** Opacity */ panel->topaF = WMCreateFrame(panel->win); WMResizeWidget(panel->topaF, 185, 50); WMMoveWidget(panel->topaF, 15, 95); WMSetFrameTitle(panel->topaF, _("Gradient Opacity")); panel->topaS = WMCreateSlider(panel->topaF); WMResizeWidget(panel->topaS, 155, 18); WMMoveWidget(panel->topaS, 15, 20); WMSetSliderMaxValue(panel->topaS, 255); WMSetSliderValue(panel->topaS, 200); WMSetSliderContinuous(panel->topaS, False); WMSetSliderAction(panel->topaS, opaqChangeCallback, panel); WMMapSubwidgets(panel->topaF); { WMPixmap *pixmap; Pixmap p; WMColor *color; pixmap = WMCreatePixmap(scr, 155, 18, WMScreenDepth(scr), False); p = WMGetPixmapXID(pixmap); color = WMDarkGrayColor(scr); XFillRectangle(WMScreenDisplay(scr), p, WMColorGC(color), 0, 0, 155, 18); WMReleaseColor(color); color = WMWhiteColor(scr); WMDrawString(scr, p, color, panel->listFont, 2, 1, "0%", 2); WMDrawString(scr, p, color, panel->listFont, 153 - WMWidthOfString(panel->listFont, "100%", 4), 1, "100%", 4); WMReleaseColor(color); WMSetSliderImage(panel->topaS, pixmap); WMReleasePixmap(pixmap); } WMMapSubwidgets(panel->tcolF); /****************** Image ******************/ panel->imageF = WMCreateFrame(panel->win); WMResizeWidget(panel->imageF, 295, 150); WMMoveWidget(panel->imageF, 15, 150); WMSetFrameTitle(panel->imageF, _("Image")); panel->imageL = WMCreateLabel(panel->imageF); WMSetLabelImagePosition(panel->imageL, WIPImageOnly); panel->imageT = WMCreateTextField(panel->imageF); WMResizeWidget(panel->imageT, 90, 20); WMMoveWidget(panel->imageT, 190, 25); panel->imageV = WMCreateScrollView(panel->imageF); WMResizeWidget(panel->imageV, 165, 115); WMMoveWidget(panel->imageV, 15, 20); WMSetScrollViewRelief(panel->imageV, WRSunken); WMSetScrollViewHasHorizontalScroller(panel->imageV, True); WMSetScrollViewHasVerticalScroller(panel->imageV, True); WMSetScrollViewContentView(panel->imageV, WMWidgetView(panel->imageL)); panel->browB = WMCreateCommandButton(panel->imageF); WMResizeWidget(panel->browB, 90, 24); WMMoveWidget(panel->browB, 190, 50); WMSetButtonText(panel->browB, _("Browse...")); WMSetButtonAction(panel->browB, browseImageCallback, panel); /* panel->dispB = WMCreateCommandButton(panel->imageF); WMResizeWidget(panel->dispB, 90, 24); WMMoveWidget(panel->dispB, 190, 80); WMSetButtonText(panel->dispB, _("Show")); */ panel->arrP = WMCreatePopUpButton(panel->imageF); WMResizeWidget(panel->arrP, 90, 20); WMMoveWidget(panel->arrP, 190, 120); WMAddPopUpButtonItem(panel->arrP, _("Tile")); WMAddPopUpButtonItem(panel->arrP, _("Scale")); WMAddPopUpButtonItem(panel->arrP, _("Center")); WMAddPopUpButtonItem(panel->arrP, _("Maximize")); WMAddPopUpButtonItem(panel->arrP, _("Fill")); WMSetPopUpButtonSelectedItem(panel->arrP, 0); WMMapSubwidgets(panel->imageF); /****/ panel->okB = WMCreateCommandButton(panel->win); WMResizeWidget(panel->okB, 84, 24); WMMoveWidget(panel->okB, 225, 390); WMSetButtonText(panel->okB, _("OK")); WMSetButtonAction(panel->okB, buttonCallback, panel); panel->cancelB = WMCreateCommandButton(panel->win); WMResizeWidget(panel->cancelB, 84, 24); WMMoveWidget(panel->cancelB, 130, 390); WMSetButtonText(panel->cancelB, _("Cancel")); WMSetButtonAction(panel->cancelB, buttonCallback, panel); WMMapWidget(panel->nameF); WMMapWidget(panel->typeP); WMMapWidget(panel->okB); WMMapWidget(panel->cancelB); WMUnmapWidget(panel->arrP); WMRealizeWidget(panel->win); panel->currentType = -1; panel->sectionParts[TYPE_SOLID][0] = panel->defcF; panel->sectionParts[TYPE_GRADIENT][0] = panel->defcF; panel->sectionParts[TYPE_GRADIENT][1] = panel->gcolF; panel->sectionParts[TYPE_GRADIENT][2] = panel->dirF; panel->sectionParts[TYPE_SGRADIENT][0] = panel->tcolF; panel->sectionParts[TYPE_SGRADIENT][1] = panel->dirF; panel->sectionParts[TYPE_TGRADIENT][0] = panel->tcolF; panel->sectionParts[TYPE_TGRADIENT][1] = panel->dirF; panel->sectionParts[TYPE_TGRADIENT][2] = panel->imageF; panel->sectionParts[TYPE_TGRADIENT][3] = panel->topaF; panel->sectionParts[TYPE_TGRADIENT][4] = panel->arrP; panel->sectionParts[TYPE_PIXMAP][0] = panel->defcF; panel->sectionParts[TYPE_PIXMAP][1] = panel->imageF; panel->sectionParts[TYPE_PIXMAP][2] = panel->arrP; /* setup for first time */ changeTypeCallback(panel->typeP, panel); sliderChangeCallback(panel->ghueS, panel); sliderChangeCallback(panel->gsatS, panel); return panel; } /* *-------------------------------------------------------------------------- * Test stuff *-------------------------------------------------------------------------- */ #if 0 char *ProgName = "test"; void testOKButton(WMWidget *self, void *data) { char *test; Display *dpy; Window win; Pixmap pix; RImage *image; TexturePanel *panel = (TexturePanel *) data; /* test = GetTexturePanelTextureString(panel); */ wwarning(test); dpy = WMScreenDisplay(WMWidgetScreen(panel->okB)); win = XCreateSimpleWindow(dpy, DefaultRootWindow(dpy), 10, 10, 250, 250, 0, 0, 0); XMapRaised(dpy, win); XFlush(dpy); /* image = RenderTexturePanelTexture(panel, 250, 250); */ RConvertImage(WMScreenRContext(WMWidgetScreen(panel->okB)), image, &pix); XCopyArea(dpy, pix, win, (WMScreenRContext(WMWidgetScreen(panel->okB)))->copy_gc, 0, 0, image->width, image->height, 0, 0); wfree(test); } void testCancelButton(WMWidget *self, void *data) { wwarning("Exiting test...."); exit(0); } void wAbort(void) { exit(1); } int main(int argc, char **argv) { TexturePanel *panel; Display *dpy = XOpenDisplay(""); WMScreen *scr; /* char *test; */ WMInitializeApplication("Test", &argc, argv); if (!dpy) { wfatal("could not open display"); exit(1); } scr = WMCreateSimpleApplicationScreen(dpy); panel = CreateTexturePanel(scr); SetTexturePanelOkAction(panel, (WMAction *) testOKButton, panel); SetTexturePanelCancelAction(panel, (WMAction *) testCancelButton, panel); SetTexturePanelTexture(panel, "pinky", WMCreatePropListFromDescription("(mdgradient, pink, red, blue, yellow)")); ShowTexturePanel(panel); WMScreenMainLoop(scr); return 0; } #endif ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/KeyboardShortcuts.c���������������������������������������������������0000644�0001750�0001750�00000047545�13642357773�016636� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* KeyboardShortcuts.c- keyboard shortcut bindings * * WPrefs - Window Maker Preferences Program * * Copyright (c) 1998-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "config.h" /* for HAVE_XCONVERTCASE */ #include "WPrefs.h" #include <ctype.h> #include <X11/keysym.h> #include <X11/XKBlib.h> typedef struct _Panel { WMBox *box; char *sectionName; char *description; CallbackRec callbacks; WMWidget *parent; WMLabel *actL; WMList *actLs; WMFrame *shoF; WMTextField *shoT; WMButton *cleB; WMButton *defB; WMLabel *instructionsL; WMColor *white; WMColor *black; WMColor *gray; WMFont *font; Bool capturing; char **shortcuts; int actionCount; } _Panel; #define ICON_FILE "keyshortcuts" /* * List of user definable shortcut keys * First parameter is the internal keyword known by WMaker * Second is the text displayed to the user */ static const struct { const char *key; const char *title; } keyOptions[] = { { "RootMenuKey", N_("Open applications menu") }, { "WindowListKey", N_("Open window list menu") }, { "WindowMenuKey", N_("Open window commands menu") }, { "HideKey", N_("Hide active application") }, { "HideOthersKey", N_("Hide other applications") }, { "MiniaturizeKey", N_("Miniaturize active window") }, { "MinimizeAllKey", N_("Miniaturize all windows") }, { "CloseKey", N_("Close active window") }, { "MaximizeKey", N_("Maximize active window") }, { "VMaximizeKey", N_("Maximize active window vertically") }, { "HMaximizeKey", N_("Maximize active window horizontally") }, { "LHMaximizeKey", N_("Maximize active window left half") }, { "RHMaximizeKey", N_("Maximize active window right half") }, { "THMaximizeKey", N_("Maximize active window top half") }, { "BHMaximizeKey", N_("Maximize active window bottom half") }, { "LTCMaximizeKey", N_("Maximize active window left top corner") }, { "RTCMaximizeKey", N_("Maximize active window right top corner") }, { "LBCMaximizeKey", N_("Maximize active window left bottom corner") }, { "RBCMaximizeKey", N_("Maximize active window right bottom corner") }, { "MaximusKey", N_("Maximus: Tiled maximization ") }, { "KeepOnTopKey", N_("Toggle window on top status") }, { "KeepAtBottomKey",N_("Toggle window at bottom status") }, { "OmnipresentKey", N_("Toggle window omnipresent status") }, { "RaiseKey", N_("Raise active window") }, { "LowerKey", N_("Lower active window") }, { "RaiseLowerKey", N_("Raise/Lower window under mouse pointer") }, { "ShadeKey", N_("Shade active window") }, { "MoveResizeKey", N_("Move/Resize active window") }, { "SelectKey", N_("Select active window") }, { "FocusNextKey", N_("Focus next window") }, { "FocusPrevKey", N_("Focus previous window") }, { "GroupNextKey", N_("Focus next group window") }, { "GroupPrevKey", N_("Focus previous group window") }, /* Workspace Related */ { "WorkspaceMapKey", N_("Open workspace pager") }, { "NextWorkspaceKey", N_("Switch to next workspace") }, { "PrevWorkspaceKey", N_("Switch to previous workspace") }, { "LastWorkspaceKey", N_("Switch to last used workspace") }, { "NextWorkspaceLayerKey", N_("Switch to next ten workspaces") }, { "PrevWorkspaceLayerKey", N_("Switch to previous ten workspaces") }, { "Workspace1Key", N_("Switch to workspace 1") }, { "Workspace2Key", N_("Switch to workspace 2") }, { "Workspace3Key", N_("Switch to workspace 3") }, { "Workspace4Key", N_("Switch to workspace 4") }, { "Workspace5Key", N_("Switch to workspace 5") }, { "Workspace6Key", N_("Switch to workspace 6") }, { "Workspace7Key", N_("Switch to workspace 7") }, { "Workspace8Key", N_("Switch to workspace 8") }, { "Workspace9Key", N_("Switch to workspace 9") }, { "Workspace10Key", N_("Switch to workspace 10") }, { "MoveToNextWorkspaceKey", N_("Move window to next workspace") }, { "MoveToPrevWorkspaceKey", N_("Move window to previous workspace") }, { "MoveToLastWorkspaceKey", N_("Move window to last used workspace") }, { "MoveToNextWorkspaceLayerKey", N_("Move window to next ten workspaces") }, { "MoveToPrevWorkspaceLayerKey", N_("Move window to previous ten workspaces") }, { "MoveToWorkspace1Key", N_("Move window to workspace 1") }, { "MoveToWorkspace2Key", N_("Move window to workspace 2") }, { "MoveToWorkspace3Key", N_("Move window to workspace 3") }, { "MoveToWorkspace4Key", N_("Move window to workspace 4") }, { "MoveToWorkspace5Key", N_("Move window to workspace 5") }, { "MoveToWorkspace6Key", N_("Move window to workspace 6") }, { "MoveToWorkspace7Key", N_("Move window to workspace 7") }, { "MoveToWorkspace8Key", N_("Move window to workspace 8") }, { "MoveToWorkspace9Key", N_("Move window to workspace 9") }, { "MoveToWorkspace10Key", N_("Move window to workspace 10") }, /* Window Selection */ { "WindowShortcut1Key", N_("Shortcut for window 1") }, { "WindowShortcut2Key", N_("Shortcut for window 2") }, { "WindowShortcut3Key", N_("Shortcut for window 3") }, { "WindowShortcut4Key", N_("Shortcut for window 4") }, { "WindowShortcut5Key", N_("Shortcut for window 5") }, { "WindowShortcut6Key", N_("Shortcut for window 6") }, { "WindowShortcut7Key", N_("Shortcut for window 7") }, { "WindowShortcut8Key", N_("Shortcut for window 8") }, { "WindowShortcut9Key", N_("Shortcut for window 9") }, { "WindowShortcut10Key", N_("Shortcut for window 10") }, /* Head Selection */ { "MoveTo12to6Head", N_("Move to right/bottom/left/top head") }, { "MoveTo6to12Head", N_("Move to left/top/right/bottom head") }, /* Misc. */ { "WindowRelaunchKey", N_("Launch new instance of application") }, { "ScreenSwitchKey", N_("Switch to Next Screen/Monitor") }, { "RunKey", N_("Run application") }, { "DockRaiseLowerKey", N_("Raise/Lower Dock") }, { "ClipRaiseLowerKey", N_("Raise/Lower Clip") } #ifdef XKB_MODELOCK ,{ "ToggleKbdModeKey", N_("Toggle keyboard language") } #endif /* XKB_MODELOCK */ }; #ifndef HAVE_XCONVERTCASE /* from Xlib */ static void XConvertCase(register KeySym sym, KeySym * lower, KeySym * upper) { *lower = sym; *upper = sym; switch (sym >> 8) { case 0: /* Latin 1 */ if ((sym >= XK_A) && (sym <= XK_Z)) *lower += (XK_a - XK_A); else if ((sym >= XK_a) && (sym <= XK_z)) *upper -= (XK_a - XK_A); else if ((sym >= XK_Agrave) && (sym <= XK_Odiaeresis)) *lower += (XK_agrave - XK_Agrave); else if ((sym >= XK_agrave) && (sym <= XK_odiaeresis)) *upper -= (XK_agrave - XK_Agrave); else if ((sym >= XK_Ooblique) && (sym <= XK_Thorn)) *lower += (XK_oslash - XK_Ooblique); else if ((sym >= XK_oslash) && (sym <= XK_thorn)) *upper -= (XK_oslash - XK_Ooblique); break; case 1: /* Latin 2 */ /* Assume the KeySym is a legal value (ignore discontinuities) */ if (sym == XK_Aogonek) *lower = XK_aogonek; else if (sym >= XK_Lstroke && sym <= XK_Sacute) *lower += (XK_lstroke - XK_Lstroke); else if (sym >= XK_Scaron && sym <= XK_Zacute) *lower += (XK_scaron - XK_Scaron); else if (sym >= XK_Zcaron && sym <= XK_Zabovedot) *lower += (XK_zcaron - XK_Zcaron); else if (sym == XK_aogonek) *upper = XK_Aogonek; else if (sym >= XK_lstroke && sym <= XK_sacute) *upper -= (XK_lstroke - XK_Lstroke); else if (sym >= XK_scaron && sym <= XK_zacute) *upper -= (XK_scaron - XK_Scaron); else if (sym >= XK_zcaron && sym <= XK_zabovedot) *upper -= (XK_zcaron - XK_Zcaron); else if (sym >= XK_Racute && sym <= XK_Tcedilla) *lower += (XK_racute - XK_Racute); else if (sym >= XK_racute && sym <= XK_tcedilla) *upper -= (XK_racute - XK_Racute); break; case 2: /* Latin 3 */ /* Assume the KeySym is a legal value (ignore discontinuities) */ if (sym >= XK_Hstroke && sym <= XK_Hcircumflex) *lower += (XK_hstroke - XK_Hstroke); else if (sym >= XK_Gbreve && sym <= XK_Jcircumflex) *lower += (XK_gbreve - XK_Gbreve); else if (sym >= XK_hstroke && sym <= XK_hcircumflex) *upper -= (XK_hstroke - XK_Hstroke); else if (sym >= XK_gbreve && sym <= XK_jcircumflex) *upper -= (XK_gbreve - XK_Gbreve); else if (sym >= XK_Cabovedot && sym <= XK_Scircumflex) *lower += (XK_cabovedot - XK_Cabovedot); else if (sym >= XK_cabovedot && sym <= XK_scircumflex) *upper -= (XK_cabovedot - XK_Cabovedot); break; case 3: /* Latin 4 */ /* Assume the KeySym is a legal value (ignore discontinuities) */ if (sym >= XK_Rcedilla && sym <= XK_Tslash) *lower += (XK_rcedilla - XK_Rcedilla); else if (sym >= XK_rcedilla && sym <= XK_tslash) *upper -= (XK_rcedilla - XK_Rcedilla); else if (sym == XK_ENG) *lower = XK_eng; else if (sym == XK_eng) *upper = XK_ENG; else if (sym >= XK_Amacron && sym <= XK_Umacron) *lower += (XK_amacron - XK_Amacron); else if (sym >= XK_amacron && sym <= XK_umacron) *upper -= (XK_amacron - XK_Amacron); break; case 6: /* Cyrillic */ /* Assume the KeySym is a legal value (ignore discontinuities) */ if (sym >= XK_Serbian_DJE && sym <= XK_Serbian_DZE) *lower -= (XK_Serbian_DJE - XK_Serbian_dje); else if (sym >= XK_Serbian_dje && sym <= XK_Serbian_dze) *upper += (XK_Serbian_DJE - XK_Serbian_dje); else if (sym >= XK_Cyrillic_YU && sym <= XK_Cyrillic_HARDSIGN) *lower -= (XK_Cyrillic_YU - XK_Cyrillic_yu); else if (sym >= XK_Cyrillic_yu && sym <= XK_Cyrillic_hardsign) *upper += (XK_Cyrillic_YU - XK_Cyrillic_yu); break; case 7: /* Greek */ /* Assume the KeySym is a legal value (ignore discontinuities) */ if (sym >= XK_Greek_ALPHAaccent && sym <= XK_Greek_OMEGAaccent) *lower += (XK_Greek_alphaaccent - XK_Greek_ALPHAaccent); else if (sym >= XK_Greek_alphaaccent && sym <= XK_Greek_omegaaccent && sym != XK_Greek_iotaaccentdieresis && sym != XK_Greek_upsilonaccentdieresis) *upper -= (XK_Greek_alphaaccent - XK_Greek_ALPHAaccent); else if (sym >= XK_Greek_ALPHA && sym <= XK_Greek_OMEGA) *lower += (XK_Greek_alpha - XK_Greek_ALPHA); else if (sym >= XK_Greek_alpha && sym <= XK_Greek_omega && sym != XK_Greek_finalsmallsigma) *upper -= (XK_Greek_alpha - XK_Greek_ALPHA); break; case 0x14: /* Armenian */ if (sym >= XK_Armenian_AYB && sym <= XK_Armenian_fe) { *lower = sym | 1; *upper = sym & ~1; } break; } } #endif static int NumLockMask(Display *dpy) { int i, mask; XModifierKeymap *map; static int mask_table[8] = { ShiftMask, LockMask, ControlMask, Mod1Mask, Mod2Mask, Mod3Mask, Mod4Mask, Mod5Mask }; KeyCode numlock_keycode = XKeysymToKeycode(dpy, XK_Num_Lock); if (numlock_keycode == NoSymbol) return 0; map = XGetModifierMapping(dpy); if (!map) return 0; mask = 0; for (i = 0; i < 8 * map->max_keypermod; i++) { if (map->modifiermap[i] == numlock_keycode && mask == 0) { mask = mask_table[i/map->max_keypermod]; break; } } if (map) XFreeModifiermap(map); return mask; } char *capture_shortcut(Display *dpy, Bool *capturing, Bool convert_case) { XEvent ev; KeySym ksym, lksym, uksym; char buffer[64]; char *key = NULL; unsigned int numlock_mask; while (*capturing) { XAllowEvents(dpy, AsyncKeyboard, CurrentTime); WMNextEvent(dpy, &ev); if (ev.type == KeyPress && ev.xkey.keycode != 0) { numlock_mask = NumLockMask(dpy); if (xext_xkb_supported) /* conditional mask check to get numeric keypad keys */ ksym = XkbKeycodeToKeysym(dpy, ev.xkey.keycode, 0, ev.xkey.state & numlock_mask?1:0); else ksym = XKeycodeToKeysym(dpy, ev.xkey.keycode, 0); if (!IsModifierKey(ksym)) { if (convert_case) { XConvertCase(ksym, &lksym, &uksym); key = XKeysymToString(uksym); } else { key = XKeysymToString(ksym); } *capturing = 0; break; } } WMHandleEvent(&ev); } if (!key) return NULL; buffer[0] = 0; if (ev.xkey.state & ControlMask) strcat(buffer, "Control+"); if (ev.xkey.state & ShiftMask) strcat(buffer, "Shift+"); if ((numlock_mask != Mod1Mask) && (ev.xkey.state & Mod1Mask)) strcat(buffer, "Mod1+"); if ((numlock_mask != Mod2Mask) && (ev.xkey.state & Mod2Mask)) strcat(buffer, "Mod2+"); if ((numlock_mask != Mod3Mask) && (ev.xkey.state & Mod3Mask)) strcat(buffer, "Mod3+"); if ((numlock_mask != Mod4Mask) && (ev.xkey.state & Mod4Mask)) strcat(buffer, "Mod4+"); if ((numlock_mask != Mod5Mask) && (ev.xkey.state & Mod5Mask)) strcat(buffer, "Mod5+"); wstrlcat(buffer, key, sizeof(buffer)); return wstrdup(buffer); } static void captureClick(WMWidget * w, void *data) { _Panel *panel = (_Panel *) data; Display *dpy = WMScreenDisplay(WMWidgetScreen(panel->parent)); char *shortcut; if (!panel->capturing) { panel->capturing = 1; WMSetButtonText(w, _("Cancel")); WMSetLabelText(panel->instructionsL, _("Press the desired shortcut key(s) or click Cancel to stop capturing.")); XGrabKeyboard(dpy, WMWidgetXID(panel->parent), True, GrabModeAsync, GrabModeAsync, CurrentTime); shortcut = capture_shortcut(dpy, &panel->capturing, 1); if (shortcut) { int row = WMGetListSelectedItemRow(panel->actLs); WMSetTextFieldText(panel->shoT, shortcut); if (row >= 0) { if (panel->shortcuts[row]) wfree(panel->shortcuts[row]); panel->shortcuts[row] = shortcut; WMRedisplayWidget(panel->actLs); } else { wfree(shortcut); } } } panel->capturing = 0; WMSetButtonText(w, _("Capture")); WMSetLabelText(panel->instructionsL, _("Click on Capture to interactively define the shortcut key.")); XUngrabKeyboard(dpy, CurrentTime); } static void clearShortcut(WMWidget * w, void *data) { _Panel *panel = (_Panel *) data; int row = WMGetListSelectedItemRow(panel->actLs); /* Parameter not used, but tell the compiler that it is ok */ (void) w; WMSetTextFieldText(panel->shoT, NULL); if (row >= 0) { if (panel->shortcuts[row]) wfree(panel->shortcuts[row]); panel->shortcuts[row] = NULL; WMRedisplayWidget(panel->actLs); } } static void typedKeys(void *observerData, WMNotification * notification) { _Panel *panel = (_Panel *) observerData; int row = WMGetListSelectedItemRow(panel->actLs); /* Parameter not used, but tell the compiler that it is ok */ (void) notification; if (row < 0) return; if (panel->shortcuts[row]) wfree(panel->shortcuts[row]); panel->shortcuts[row] = WMGetTextFieldText(panel->shoT); if (strlen(panel->shortcuts[row]) == 0) { wfree(panel->shortcuts[row]); panel->shortcuts[row] = NULL; } WMRedisplayWidget(panel->actLs); } static void listClick(WMWidget * w, void *data) { _Panel *panel = (_Panel *) data; int row = WMGetListSelectedItemRow(w); WMSetTextFieldText(panel->shoT, panel->shortcuts[row]); } static void showData(_Panel * panel) { char *str; int i; for (i = 0; i < panel->actionCount; i++) { str = GetStringForKey(keyOptions[i].key); if (panel->shortcuts[i]) wfree(panel->shortcuts[i]); if (str) panel->shortcuts[i] = wtrimspace(str); else panel->shortcuts[i] = NULL; if (panel->shortcuts[i] && (strcasecmp(panel->shortcuts[i], "none") == 0 || strlen(panel->shortcuts[i]) == 0)) { wfree(panel->shortcuts[i]); panel->shortcuts[i] = NULL; } } WMRedisplayWidget(panel->actLs); } static void paintItem(WMList * lPtr, int index, Drawable d, char *text, int state, WMRect * rect) { int width, height, x, y; _Panel *panel = (_Panel *) WMGetHangedData(lPtr); WMScreen *scr = WMWidgetScreen(lPtr); Display *dpy = WMScreenDisplay(scr); WMColor *backColor = (state & WLDSSelected) ? panel->white : panel->gray; width = rect->size.width; height = rect->size.height; x = rect->pos.x; y = rect->pos.y; XFillRectangle(dpy, d, WMColorGC(backColor), x, y, width, height); if (panel->shortcuts[index]) { WMPixmap *pix = WMGetSystemPixmap(scr, WSICheckMark); WMSize size = WMGetPixmapSize(pix); WMDrawPixmap(pix, d, x + (20 - size.width) / 2, (height - size.height) / 2 + y); WMReleasePixmap(pix); } WMDrawString(scr, d, panel->black, panel->font, x + 20, y, text, strlen(text)); } static void createPanel(Panel * p) { _Panel *panel = (_Panel *) p; WMScreen *scr = WMWidgetScreen(panel->parent); WMColor *color; WMFont *boldFont; int i; panel->capturing = 0; panel->white = WMWhiteColor(scr); panel->black = WMBlackColor(scr); panel->gray = WMGrayColor(scr); panel->font = WMSystemFontOfSize(scr, 12); panel->box = WMCreateBox(panel->parent); WMSetViewExpandsToParent(WMWidgetView(panel->box), 2, 2, 2, 2); boldFont = WMBoldSystemFontOfSize(scr, 12); /* **************** Actions **************** */ panel->actL = WMCreateLabel(panel->box); WMResizeWidget(panel->actL, 314, 20); WMMoveWidget(panel->actL, 9, 9); WMSetLabelFont(panel->actL, boldFont); WMSetLabelText(panel->actL, _("Actions")); WMSetLabelRelief(panel->actL, WRSunken); WMSetLabelTextAlignment(panel->actL, WACenter); color = WMDarkGrayColor(scr); WMSetWidgetBackgroundColor(panel->actL, color); WMReleaseColor(color); WMSetLabelTextColor(panel->actL, panel->white); panel->actLs = WMCreateList(panel->box); WMResizeWidget(panel->actLs, 314, 191); WMMoveWidget(panel->actLs, 9, 31); WMSetListUserDrawProc(panel->actLs, paintItem); WMHangData(panel->actLs, panel); for (i = 0; i < wlengthof(keyOptions); i++) { WMAddListItem(panel->actLs, _(keyOptions[i].title)); } WMSetListAction(panel->actLs, listClick, panel); panel->actionCount = WMGetListNumberOfRows(panel->actLs); panel->shortcuts = wmalloc(sizeof(char *) * panel->actionCount); /***************** Shortcut ****************/ panel->shoF = WMCreateFrame(panel->box); WMResizeWidget(panel->shoF, 178, 214); WMMoveWidget(panel->shoF, 333, 8); WMSetFrameTitle(panel->shoF, _("Shortcut")); panel->shoT = WMCreateTextField(panel->shoF); WMResizeWidget(panel->shoT, 160, 20); WMMoveWidget(panel->shoT, 9, 65); WMAddNotificationObserver(typedKeys, panel, WMTextDidChangeNotification, panel->shoT); panel->cleB = WMCreateCommandButton(panel->shoF); WMResizeWidget(panel->cleB, 75, 24); WMMoveWidget(panel->cleB, 9, 95); WMSetButtonText(panel->cleB, _("Clear")); WMSetButtonAction(panel->cleB, clearShortcut, panel); panel->defB = WMCreateCommandButton(panel->shoF); WMResizeWidget(panel->defB, 75, 24); WMMoveWidget(panel->defB, 94, 95); WMSetButtonText(panel->defB, _("Capture")); WMSetButtonAction(panel->defB, captureClick, panel); panel->instructionsL = WMCreateLabel(panel->shoF); WMResizeWidget(panel->instructionsL, 160, 55); WMMoveWidget(panel->instructionsL, 9, 140); WMSetLabelTextAlignment(panel->instructionsL, WACenter); WMSetLabelWraps(panel->instructionsL, True); WMSetLabelText(panel->instructionsL, _("Click on Capture to interactively define the shortcut key.")); WMMapSubwidgets(panel->shoF); WMReleaseFont(boldFont); WMRealizeWidget(panel->box); WMMapSubwidgets(panel->box); showData(panel); } static void storeData(_Panel * panel) { int i; char *str; for (i = 0; i < panel->actionCount; i++) { str = NULL; if (panel->shortcuts[i]) { str = wtrimspace(panel->shortcuts[i]); if (strlen(str) == 0) { wfree(str); str = NULL; } } if (str) { SetStringForKey(str, keyOptions[i].key); wfree(str); } else { SetStringForKey("None", keyOptions[i].key); } } } Panel *InitKeyboardShortcuts(WMWidget *parent) { _Panel *panel; panel = wmalloc(sizeof(_Panel)); panel->sectionName = _("Keyboard Shortcut Preferences"); panel->description = _("Change the keyboard shortcuts for actions such\n" "as changing workspaces and opening menus."); panel->parent = parent; panel->callbacks.createWidgets = createPanel; panel->callbacks.updateDomain = storeData; AddSection(panel, ICON_FILE); return panel; } �����������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xmodifier.c�����������������������������������������������������������0000644�0001750�0001750�00000023525�13431646201�015114� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Grok X modifier mappings for shortcuts. Most of this code was taken from src/event-Xt.c in XEmacs 20.3-b17. The copyright(s) from the original XEmacs code are included below. Perpetrator: Sudish Joseph <sj@eng.mindspring.net>, Sept. 1997. */ /* * More changes for WPrefs by Alfredo Kojima, Aug 1998 */ /* The event_stream interface for X11 with Xt, and/or tty frames. Copyright (C) 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc. Copyright (C) 1995 Sun Microsystems, Inc. Copyright (C) 1996 Ben Wing. This file is part of XEmacs. XEmacs is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. XEmacs 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 XEmacs; see the file COPYING. if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include <string.h> #include <strings.h> #include <X11/Xlib.h> #include <X11/keysym.h> #include <X11/XKBlib.h> #include <WINGs/WUtil.h> #include "WPrefs.h" /************************************************************************/ /* keymap handling */ /************************************************************************/ /* X bogusly doesn't define the interpretations of any bits besides ModControl, ModShift, and ModLock; so the Interclient Communication Conventions Manual says that we have to bend over backwards to figure out what the other modifier bits mean. According to ICCCM: - Any keycode which is assigned ModControl is a "control" key. - Any modifier bit which is assigned to a keycode which generates Meta_L or Meta_R is the modifier bit meaning "meta". Likewise for Super, Hyper, etc. - Any keypress event which contains ModControl in its state should be interpreted as a "control" character. - Any keypress event which contains a modifier bit in its state which is generated by a keycode whose corresponding keysym is Meta_L or Meta_R should be interpreted as a "meta" character. Likewise for Super, Hyper, etc. - It is illegal for a keysym to be associated with more than one modifier bit. This means that the only thing that emacs can reasonably interpret as a "meta" key is a key whose keysym is Meta_L or Meta_R, and which generates one of the modifier bits Mod1-Mod5. Unfortunately, many keyboards don't have Meta keys in their default configuration. So, if there are no Meta keys, but there are "Alt" keys, emacs will interpret Alt as Meta. If there are both Meta and Alt keys, then the Meta keys mean "Meta", and the Alt keys mean "Alt" (it used to mean "Symbol," but that just confused the hell out of way too many people). This works with the default configurations of the 19 keyboard-types I've checked. Emacs detects keyboard configurations which violate the above rules, and prints an error message on the standard-error-output. (Perhaps it should use a pop-up-window instead.) */ static int MetaIndex, HyperIndex, SuperIndex, AltIndex, ModeIndex; static const char *index_to_name(int indice) { switch (indice) { case ShiftMapIndex: return "ModShift"; case LockMapIndex: return "ModLock"; case ControlMapIndex: return "ModControl"; case Mod1MapIndex: return "Mod1"; case Mod2MapIndex: return "Mod2"; case Mod3MapIndex: return "Mod3"; case Mod4MapIndex: return "Mod4"; case Mod5MapIndex: return "Mod5"; default: return "???"; } } static void x_reset_modifier_mapping(Display * display) { int modifier_index, modifier_key, column, mkpm; int meta_bit = 0; int hyper_bit = 0; int super_bit = 0; int alt_bit = 0; int mode_bit = 0; XModifierKeymap *x_modifier_keymap; #define modwarn(name,old,other) \ wwarning(_("%s (0x%x) generates %s which is generated by %s"), \ name, code, index_to_name (old), other) #define modbarf(name,other) \ wwarning(_("%s (0x%x) generates %s which is nonsensical"), \ name, code, other) #define check_modifier(name,mask) \ if ((1<<modifier_index) != mask) \ wwarning(_("%s (0x%x) generates %s which is nonsensical"), \ name, code, index_to_name (modifier_index)) #define store_modifier(name,old) \ if (old && old != modifier_index) \ wwarning(_("%s (0x%x) generates both %s and %s which is nonsensical"), \ name, code, index_to_name (old), \ index_to_name (modifier_index)); \ if (modifier_index == ShiftMapIndex) modbarf (name,"ModShift"); \ else if (modifier_index == LockMapIndex) modbarf (name,"ModLock"); \ else if (modifier_index == ControlMapIndex) modbarf (name,"ModControl"); \ else if (sym == XK_Mode_switch) \ mode_bit = modifier_index; /* Mode_switch is special, see below... */ \ else if (modifier_index == meta_bit && old != meta_bit) \ modwarn (name, meta_bit, "Meta"); \ else if (modifier_index == super_bit && old != super_bit) \ modwarn (name, super_bit, "Super"); \ else if (modifier_index == hyper_bit && old != hyper_bit) \ modwarn (name, hyper_bit, "Hyper"); \ else if (modifier_index == alt_bit && old != alt_bit) \ modwarn (name, alt_bit, "Alt"); \ else \ old = modifier_index; x_modifier_keymap = XGetModifierMapping(display); if (x_modifier_keymap == NULL) { wwarning(_("XGetModifierMapping returned NULL, there is no modifier or no memory")); return; } mkpm = x_modifier_keymap->max_keypermod; for (modifier_index = 0; modifier_index < 8; modifier_index++) for (modifier_key = 0; modifier_key < mkpm; modifier_key++) { KeySym last_sym = 0; for (column = 0; column < 4; column += 2) { KeyCode code = x_modifier_keymap->modifiermap[modifier_index * mkpm + modifier_key]; KeySym sym; if (code) { if (xext_xkb_supported) sym = XkbKeycodeToKeysym(display, code, 0, column); else sym = XKeycodeToKeysym(display, code, column); } else { sym = NoSymbol; } if (sym == last_sym) continue; last_sym = sym; switch (sym) { case XK_Mode_switch: store_modifier("Mode_switch", mode_bit); break; case XK_Meta_L: store_modifier("Meta_L", meta_bit); break; case XK_Meta_R: store_modifier("Meta_R", meta_bit); break; case XK_Super_L: store_modifier("Super_L", super_bit); break; case XK_Super_R: store_modifier("Super_R", super_bit); break; case XK_Hyper_L: store_modifier("Hyper_L", hyper_bit); break; case XK_Hyper_R: store_modifier("Hyper_R", hyper_bit); break; case XK_Alt_L: store_modifier("Alt_L", alt_bit); break; case XK_Alt_R: store_modifier("Alt_R", alt_bit); break; case XK_Control_L: check_modifier("Control_L", ControlMask); break; case XK_Control_R: check_modifier("Control_R", ControlMask); break; case XK_Shift_L: check_modifier("Shift_L", ShiftMask); break; case XK_Shift_R: check_modifier("Shift_R", ShiftMask); break; case XK_Shift_Lock: check_modifier("Shift_Lock", LockMask); break; case XK_Caps_Lock: check_modifier("Caps_Lock", LockMask); break; /* It probably doesn't make any sense for a modifier bit to be assigned to a key that is not one of the above, but OpenWindows assigns modifier bits to a couple of random function keys for no reason that I can discern, so printing a warning here would be annoying. */ } } } #undef store_modifier #undef check_modifier #undef modwarn #undef modbarf /* If there was no Meta key, then try using the Alt key instead. If there is both a Meta key and an Alt key, then the Alt key is not disturbed and remains an Alt key. */ if (!meta_bit && alt_bit) meta_bit = alt_bit, alt_bit = 0; /* mode_bit overrides everything, since it's processed down inside of XLookupString() instead of by us. If Meta and Mode_switch both generate the same modifier bit (which is an error), then we don't interpret that bit as Meta, because we can't make XLookupString() not interpret it as Mode_switch; and interpreting it as both would be totally wrong. */ if (mode_bit) { const char *warn = 0; if (mode_bit == meta_bit) warn = "Meta", meta_bit = 0; else if (mode_bit == hyper_bit) warn = "Hyper", hyper_bit = 0; else if (mode_bit == super_bit) warn = "Super", super_bit = 0; else if (mode_bit == alt_bit) warn = "Alt", alt_bit = 0; if (warn) { wwarning(_("%s is being used for both %s and %s"), index_to_name(mode_bit), "Mode_switch", warn); } } MetaIndex = meta_bit; HyperIndex = hyper_bit; SuperIndex = super_bit; AltIndex = alt_bit; ModeIndex = mode_bit; XFreeModifiermap(x_modifier_keymap); } int ModifierFromKey(Display * dpy, const char *key) { static int eqw = 0; if (!eqw) x_reset_modifier_mapping(dpy); eqw = 1; if (strcasecmp(key, "SHIFT") == 0) return ShiftMapIndex; else if (strcasecmp(key, "CONTROL") == 0) return ControlMapIndex; else if (strcasecmp(key, "ALT") == 0) return AltIndex; else if (strcasecmp(key, "META") == 0) return MetaIndex; else if (strcasecmp(key, "SUPER") == 0) return SuperIndex; else if (strcasecmp(key, "HYPER") == 0) return HyperIndex; else if (strcasecmp(key, "MOD1") == 0) return Mod1MapIndex; else if (strcasecmp(key, "MOD2") == 0) return Mod2MapIndex; else if (strcasecmp(key, "MOD3") == 0) return Mod3MapIndex; else if (strcasecmp(key, "MOD4") == 0) return Mod4MapIndex; else if (strcasecmp(key, "MOD5") == 0) return Mod5MapIndex; else return -1; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/FontSimple.c����������������������������������������������������������0000644�0001750�0001750�00000047471�13642357773�015235� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* FontSimple.c- simplified font configuration panel * * WPrefs - Window Maker Preferences Program * * Copyright (c) 1998-2004 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "WPrefs.h" #include <unistd.h> #include <fontconfig/fontconfig.h> /* workaround for older fontconfig, that doesn't define these constants */ #ifndef FC_WEIGHT_NORMAL /* Weights */ # define FC_WEIGHT_THIN 10 # define FC_WEIGHT_EXTRALIGHT 40 # define FC_WEIGHT_ULTRALIGHT FC_WEIGHT_EXTRALIGHT # define FC_WEIGHT_REGULAR 80 # define FC_WEIGHT_NORMAL FC_WEIGHT_REGULAR # define FC_WEIGHT_SEMIBOLD FC_WEIGHT_DEMIBOLD # define FC_WEIGHT_EXTRABOLD 205 # define FC_WEIGHT_ULTRABOLD FC_WEIGHT_EXTRABOLD # define FC_WEIGHT_HEAVY FC_WEIGHT_BLACK /* Widths */ # define FC_WIDTH "width" # define FC_WIDTH_ULTRACONDENSED 50 # define FC_WIDTH_EXTRACONDENSED 63 # define FC_WIDTH_CONDENSED 75 # define FC_WIDTH_SEMICONDENSED 87 # define FC_WIDTH_NORMAL 100 # define FC_WIDTH_SEMIEXPANDED 113 # define FC_WIDTH_EXPANDED 125 # define FC_WIDTH_EXTRAEXPANDED 150 # define FC_WIDTH_ULTRAEXPANDED 200 #endif #define SAMPLE_TEXT "The Lazy Fox Jumped Ipsum Foobar 1234 - 56789" typedef struct { int weight; int width; int slant; } FontStyle; typedef struct { char *name; int stylen; FontStyle *styles; } FontFamily; typedef struct { int familyn; FontFamily *families; } FontList; typedef struct _Panel { WMBox *box; char *sectionName; char *description; CallbackRec callbacks; WMWidget *parent; WMPopUpButton *optionP; WMList *familyL; WMList *styleL; WMList *sizeL; WMTextField *sampleT; FontList *fonts; } _Panel; #define ICON_FILE "fonts" static const struct { const char *option; const char *label; } fontOptions[] = { { "WindowTitleFont", N_("Window Title") }, { "MenuTitleFont", N_("Menu Title") }, { "MenuTextFont", N_("Menu Text") }, { "IconTitleFont", N_("Icon Title") }, { "ClipTitleFont", N_("Clip Title") }, { "LargeDisplayFont", N_("Desktop Caption") }, { "SystemFont", N_("System Font") }, { "BoldSystemFont", N_("Bold System Font")} }; static const char *standardSizes[] = { "6", "8", "9", "10", "11", "12", "13", "14", "15", "16", "18", "20", "22", "24", "28", "32", "36", "48", "64", "72", NULL }; static const struct { int weight; const char *name; } fontWeights[] = { { FC_WEIGHT_THIN, "Thin" }, { FC_WEIGHT_EXTRALIGHT, "ExtraLight" }, { FC_WEIGHT_LIGHT, "Light" }, { FC_WEIGHT_NORMAL, "Normal" }, { FC_WEIGHT_MEDIUM, "" }, { FC_WEIGHT_DEMIBOLD, "DemiBold" }, { FC_WEIGHT_BOLD, "Bold" }, { FC_WEIGHT_EXTRABOLD, "ExtraBold" }, { FC_WEIGHT_BLACK, "Black" } }; static const struct { int slant; const char *name; } fontSlants[] = { { FC_SLANT_ROMAN, "" }, { FC_SLANT_ITALIC, "Italic" }, { FC_SLANT_OBLIQUE, "Oblique" } }; static const struct { int width; const char *name; } fontWidths[] = { { FC_WIDTH_ULTRACONDENSED, "UltraCondensed" }, { FC_WIDTH_EXTRACONDENSED, "ExtraCondensed" }, { FC_WIDTH_CONDENSED, "Condensed" }, { FC_WIDTH_SEMICONDENSED, "SemiCondensed" }, { FC_WIDTH_NORMAL, "" }, { FC_WIDTH_SEMIEXPANDED, "SemiExpanded" }, { FC_WIDTH_EXPANDED, "Expanded" }, { FC_WIDTH_EXTRAEXPANDED, "ExtraExpanded" }, { FC_WIDTH_ULTRAEXPANDED, "UltraExpanded" }, }; static int compare_family(const void *a, const void *b) { FontFamily *fa = (FontFamily *) a; FontFamily *fb = (FontFamily *) b; return strcmp(fa->name, fb->name); } static int compare_styles(const void *a, const void *b) { FontStyle *sa = (FontStyle *) a; FontStyle *sb = (FontStyle *) b; int compare; compare = sa->weight - sb->weight; if (compare != 0) return compare; compare = sa->slant - sb->slant; if (compare != 0) return compare; return (sa->width - sb->width); } static void lookup_available_fonts(_Panel * panel) { FcPattern *pat = FcPatternCreate(); FcObjectSet *os; FcFontSet *fonts; FontFamily *family; os = FcObjectSetBuild(FC_FAMILY, FC_WEIGHT, FC_WIDTH, FC_SLANT, NULL); fonts = FcFontList(0, pat, os); if (fonts) { int i; panel->fonts = wmalloc(sizeof(FontList)); panel->fonts->familyn = 0; panel->fonts->families = wmalloc(sizeof(FontFamily) * fonts->nfont); for (i = 0; i < fonts->nfont; i++) { char *name; int weight, slant, width; int j, found; if (FcPatternGetString(fonts->fonts[i], FC_FAMILY, 0, (FcChar8 **) & name) != FcResultMatch) continue; if (FcPatternGetInteger(fonts->fonts[i], FC_WEIGHT, 0, &weight) != FcResultMatch) weight = FC_WEIGHT_MEDIUM; if (FcPatternGetInteger(fonts->fonts[i], FC_WIDTH, 0, &width) != FcResultMatch) width = FC_WIDTH_NORMAL; if (FcPatternGetInteger(fonts->fonts[i], FC_SLANT, 0, &slant) != FcResultMatch) slant = FC_SLANT_ROMAN; found = -1; for (j = 0; j < panel->fonts->familyn && found < 0; j++) if (strcasecmp(panel->fonts->families[j].name, name) == 0) found = j; if (found < 0) { panel->fonts->families[panel->fonts->familyn++].name = wstrdup(name); family = panel->fonts->families + panel->fonts->familyn - 1; family->stylen = 0; family->styles = NULL; } else family = panel->fonts->families + found; family->stylen++; family->styles = wrealloc(family->styles, sizeof(FontStyle) * family->stylen); family->styles[family->stylen - 1].weight = weight; family->styles[family->stylen - 1].slant = slant; family->styles[family->stylen - 1].width = width; } qsort(panel->fonts->families, panel->fonts->familyn, sizeof(FontFamily), compare_family); for (i = 0; i < panel->fonts->familyn; i++) { qsort(panel->fonts->families[i].styles, panel->fonts->families[i].stylen, sizeof(FontStyle), compare_styles); } FcFontSetDestroy(fonts); } if (os) FcObjectSetDestroy(os); if (pat) FcPatternDestroy(pat); panel->fonts->families[panel->fonts->familyn++].name = wstrdup("sans serif"); family = panel->fonts->families + panel->fonts->familyn - 1; family->styles = wmalloc(sizeof(FontStyle) * 2); family->stylen = 2; family->styles[0].weight = FC_WEIGHT_MEDIUM; family->styles[0].slant = FC_SLANT_ROMAN; family->styles[0].width = FC_WIDTH_NORMAL; family->styles[1].weight = FC_WEIGHT_BOLD; family->styles[1].slant = FC_SLANT_ROMAN; family->styles[1].width = FC_WIDTH_NORMAL; panel->fonts->families[panel->fonts->familyn++].name = wstrdup("serif"); family = panel->fonts->families + panel->fonts->familyn - 1; family->styles = wmalloc(sizeof(FontStyle) * 2); family->stylen = 2; family->styles[0].weight = FC_WEIGHT_MEDIUM; family->styles[0].slant = FC_SLANT_ROMAN; family->styles[0].width = FC_WIDTH_NORMAL; family->styles[1].weight = FC_WEIGHT_BOLD; family->styles[1].slant = FC_SLANT_ROMAN; family->styles[1].width = FC_WIDTH_NORMAL; } static char *getSelectedFont(_Panel * panel, FcChar8 * curfont) { WMListItem *item; FcPattern *pat; char *name; if (curfont) pat = FcNameParse(curfont); else pat = FcPatternCreate(); item = WMGetListSelectedItem(panel->familyL); if (item) { FcPatternDel(pat, FC_FAMILY); FcPatternAddString(pat, FC_FAMILY, (FcChar8 *) item->text); } item = WMGetListSelectedItem(panel->styleL); if (item) { FontStyle *style = (FontStyle *) item->clientData; FcPatternDel(pat, FC_WEIGHT); FcPatternAddInteger(pat, FC_WEIGHT, style->weight); FcPatternDel(pat, FC_WIDTH); FcPatternAddInteger(pat, FC_WIDTH, style->width); FcPatternDel(pat, FC_SLANT); FcPatternAddInteger(pat, FC_SLANT, style->slant); } item = WMGetListSelectedItem(panel->sizeL); if (item) { FcPatternDel(pat, FC_PIXEL_SIZE); FcPatternAddDouble(pat, FC_PIXEL_SIZE, atoi(item->text)); } name = (char *)FcNameUnparse(pat); FcPatternDestroy(pat); return name; } static void updateSampleFont(_Panel * panel) { WMMenuItem *item = WMGetPopUpButtonMenuItem(panel->optionP, WMGetPopUpButtonSelectedItem(panel->optionP)); char *fn = WMGetMenuItemRepresentedObject(item); if (fn) { WMFont *font = WMCreateFont(WMWidgetScreen(panel->box), fn); if (font) { WMSetTextFieldFont(panel->sampleT, font); WMReleaseFont(font); } } } static void selectedFamily(WMWidget * w, void *data) { _Panel *panel = (_Panel *) data; WMListItem *item; FontStyle *oldStyle = NULL; char buffer[1024]; /* Parameter not used, but tell the compiler that it is ok */ (void) w; item = WMGetListSelectedItem(panel->styleL); if (item) oldStyle = (FontStyle *) item->clientData; item = WMGetListSelectedItem(panel->familyL); if (item) { FontFamily *family = (FontFamily *) item->clientData; int i, oldi = 0, oldscore = 0; WMClearList(panel->styleL); for (i = 0; i < family->stylen; i++) { int j; const char *weight = "", *slant = "", *width = ""; WMListItem *item; for (j = 0; j < wlengthof(fontWeights); j++) if (fontWeights[j].weight == family->styles[i].weight) { weight = fontWeights[j].name; break; } for (j = 0; j < wlengthof(fontWidths); j++) if (fontWidths[j].width == family->styles[i].width) { width = fontWidths[j].name; break; } for (j = 0; j < wlengthof(fontSlants); j++) if (fontSlants[j].slant == family->styles[i].slant) { slant = fontSlants[j].name; break; } sprintf(buffer, "%s%s%s%s%s", weight, *weight ? " " : "", slant, (*slant || *weight) ? " " : "", width); if (!buffer[0]) strcpy(buffer, "Roman"); item = WMAddListItem(panel->styleL, buffer); item->clientData = family->styles + i; if (oldStyle) { int score = 0; if (oldStyle->width == family->styles[i].width) score |= 1; if (oldStyle->weight == family->styles[i].weight) score |= 2; if (oldStyle->slant == family->styles[i].slant) score |= 4; if (score > oldscore) { oldi = i; oldscore = score; } } } WMSelectListItem(panel->styleL, oldi); { int index = WMGetPopUpButtonSelectedItem(panel->optionP); WMMenuItem *item = WMGetPopUpButtonMenuItem(panel->optionP, index); FcChar8 *ofont; char *nfont; ofont = (FcChar8 *) WMGetMenuItemRepresentedObject(item); nfont = getSelectedFont(panel, ofont); if (ofont) wfree(ofont); WMSetMenuItemRepresentedObject(item, nfont); } updateSampleFont(panel); } } static void selected(WMWidget * w, void *data) { _Panel *panel = (_Panel *) data; int index = WMGetPopUpButtonSelectedItem(panel->optionP); WMMenuItem *item = WMGetPopUpButtonMenuItem(panel->optionP, index); FcChar8 *ofont; char *nfont; /* Parameter not used, but tell the compiler that it is ok */ (void) w; ofont = (FcChar8 *) WMGetMenuItemRepresentedObject(item); nfont = getSelectedFont(panel, ofont); if (ofont) wfree(ofont); WMSetMenuItemRepresentedObject(item, nfont); updateSampleFont(panel); } static void selectedOption(WMWidget * w, void *data) { _Panel *panel = (_Panel *) data; int index = WMGetPopUpButtonSelectedItem(panel->optionP); WMMenuItem *item = WMGetPopUpButtonMenuItem(panel->optionP, index); char *font; /* Parameter not used, but tell the compiler that it is ok */ (void) w; font = (char *)WMGetMenuItemRepresentedObject(item); if (font) { FcPattern *pat; pat = FcNameParse((FcChar8 *) font); if (pat) { char *name; int weight, slant, width; double size; int distance, closest, found; int i; FcDefaultSubstitute(pat); if (FcPatternGetString(pat, FC_FAMILY, 0, (FcChar8 **) & name) != FcResultMatch) name = "sans serif"; found = 0; /* select family */ for (i = 0; i < WMGetListNumberOfRows(panel->familyL); i++) { WMListItem *item = WMGetListItem(panel->familyL, i); FontFamily *family = (FontFamily *) item->clientData; if (strcasecmp(family->name, name) == 0) { found = 1; WMSelectListItem(panel->familyL, i); WMSetListPosition(panel->familyL, i); break; } } if (!found) WMSelectListItem(panel->familyL, -1); selectedFamily(panel->familyL, panel); /* select style */ if (FcPatternGetInteger(pat, FC_WEIGHT, 0, &weight) != FcResultMatch) weight = FC_WEIGHT_NORMAL; if (FcPatternGetInteger(pat, FC_WIDTH, 0, &width) != FcResultMatch) width = FC_WIDTH_NORMAL; if (FcPatternGetInteger(pat, FC_SLANT, 0, &slant) != FcResultMatch) slant = FC_SLANT_ROMAN; if (FcPatternGetDouble(pat, FC_PIXEL_SIZE, 0, &size) != FcResultMatch) size = 10.0; for (i = 0, found = 0, closest = 0; i < WMGetListNumberOfRows(panel->styleL); i++) { WMListItem *item = WMGetListItem(panel->styleL, i); FontStyle *style = (FontStyle *) item->clientData; distance = ((abs(style->weight - weight) << 16) + (abs(style->slant - slant) << 8) + (abs(style->width - width))); if (i == 0 || distance < closest) { closest = distance; found = i; if (distance == 0) { break; /* perfect match */ } } } WMSelectListItem(panel->styleL, found); WMSetListPosition(panel->styleL, found); for (i = 0, found = 0, closest = 0; i < WMGetListNumberOfRows(panel->sizeL); i++) { WMListItem *item = WMGetListItem(panel->sizeL, i); int distance; distance = abs(size - atoi(item->text)); if (i == 0 || distance < closest) { closest = distance; found = i; if (distance == 0) { break; /* perfect match */ } } } WMSelectListItem(panel->sizeL, found); WMSetListPosition(panel->sizeL, found); selected(NULL, panel); } else wwarning("Can't parse font '%s'", font); } updateSampleFont(panel); } static WMLabel *createListLabel(WMScreen * scr, WMWidget * parent, const char *text) { WMLabel *label; WMColor *color; WMFont *boldFont = WMBoldSystemFontOfSize(scr, 12); label = WMCreateLabel(parent); WMSetLabelFont(label, boldFont); WMSetLabelText(label, text); WMSetLabelRelief(label, WRSunken); WMSetLabelTextAlignment(label, WACenter); color = WMDarkGrayColor(scr); WMSetWidgetBackgroundColor(label, color); WMReleaseColor(color); color = WMWhiteColor(scr); WMSetLabelTextColor(label, color); WMReleaseColor(color); WMReleaseFont(boldFont); return label; } static void showData(_Panel * panel) { int i; WMMenuItem *item; WMScreen *scr; scr = WMWidgetScreen(panel->parent); for (i = 0; i < WMGetPopUpButtonNumberOfItems(panel->optionP); i++) { char *ofont, *font; item = WMGetPopUpButtonMenuItem(panel->optionP, i); ofont = WMGetMenuItemRepresentedObject(item); if (ofont) wfree(ofont); if (strcmp(fontOptions[i].option, "SystemFont") == 0) font = WMGetFontName(WMDefaultSystemFont(scr)); else if (strcmp(fontOptions[i].option, "BoldSystemFont") == 0) font = WMGetFontName(WMDefaultBoldSystemFont(scr)); else font = GetStringForKey(fontOptions[i].option); if (font) font = wstrdup(font); WMSetMenuItemRepresentedObject(item, font); } WMSetPopUpButtonSelectedItem(panel->optionP, 0); selectedOption(panel->optionP, panel); } static void storeData(_Panel * panel) { int i; WMMenuItem *item; for (i = 0; i < WMGetPopUpButtonNumberOfItems(panel->optionP); i++) { char *font; item = WMGetPopUpButtonMenuItem(panel->optionP, i); font = WMGetMenuItemRepresentedObject(item); if (font && *font) { if (strcmp(fontOptions[i].option, "SystemFont") == 0 || strcmp(fontOptions[i].option, "BoldSystemFont") == 0) { char *path; WMUserDefaults *defaults; path = wdefaultspathfordomain("WMGLOBAL"); defaults = WMGetDefaultsFromPath(path); wfree(path); WMSetUDStringForKey(defaults, font, fontOptions[i].option); WMSaveUserDefaults(defaults); } else { SetStringForKey(font, fontOptions[i].option); } } } } static void createPanel(Panel * p) { _Panel *panel = (_Panel *) p; WMScreen *scr = WMWidgetScreen(panel->parent); WMLabel *label; WMBox *hbox, *vbox; int i; lookup_available_fonts(panel); panel->box = WMCreateBox(panel->parent); WMSetViewExpandsToParent(WMWidgetView(panel->box), 5, 2, 5, 5); WMSetBoxHorizontal(panel->box, False); WMSetBoxBorderWidth(panel->box, 8); WMMapWidget(panel->box); hbox = WMCreateBox(panel->box); WMSetBoxHorizontal(hbox, True); WMAddBoxSubview(panel->box, WMWidgetView(hbox), False, True, 40, 22, 8); vbox = WMCreateBox(hbox); WMAddBoxSubview(hbox, WMWidgetView(vbox), False, True, 130, 0, 10); WMSetBoxHorizontal(vbox, False); panel->optionP = WMCreatePopUpButton(vbox); WMAddBoxSubviewAtEnd(vbox, WMWidgetView(panel->optionP), False, True, 20, 0, 8); for (i = 0; i < wlengthof(fontOptions); i++) WMAddPopUpButtonItem(panel->optionP, _(fontOptions[i].label)); WMSetPopUpButtonAction(panel->optionP, selectedOption, panel); label = WMCreateLabel(hbox); WMSetLabelText(label, _("Sample Text")); WMSetLabelTextAlignment(label, WARight); WMAddBoxSubview(hbox, WMWidgetView(label), False, True, 80, 0, 2); panel->sampleT = WMCreateTextField(hbox); WMSetViewExpandsToParent(WMWidgetView(panel->sampleT), 10, 18, 10, 10); WMSetTextFieldText(panel->sampleT, SAMPLE_TEXT); WMAddBoxSubview(hbox, WMWidgetView(panel->sampleT), True, True, 60, 0, 0); hbox = WMCreateBox(panel->box); WMSetBoxHorizontal(hbox, True); WMAddBoxSubview(panel->box, WMWidgetView(hbox), True, True, 100, 0, 2); vbox = WMCreateBox(hbox); WMSetBoxHorizontal(vbox, False); WMAddBoxSubview(hbox, WMWidgetView(vbox), False, True, 240, 20, 4); label = createListLabel(scr, vbox, _("Family")); WMAddBoxSubview(vbox, WMWidgetView(label), False, True, 20, 0, 2); /* family */ panel->familyL = WMCreateList(vbox); WMAddBoxSubview(vbox, WMWidgetView(panel->familyL), True, True, 0, 0, 0); if (panel->fonts) { WMListItem *item; for (i = 0; i < panel->fonts->familyn; i++) { item = WMAddListItem(panel->familyL, panel->fonts->families[i].name); item->clientData = panel->fonts->families + i; } } else WMAddListItem(panel->familyL, "sans serif"); WMSetListAction(panel->familyL, selectedFamily, panel); vbox = WMCreateBox(hbox); WMSetBoxHorizontal(vbox, False); WMAddBoxSubview(hbox, WMWidgetView(vbox), True, True, 10, 0, 0); { WMBox *box = WMCreateBox(vbox); WMSetBoxHorizontal(box, True); WMAddBoxSubview(vbox, WMWidgetView(box), False, True, 20, 0, 2); label = createListLabel(scr, box, _("Style")); WMAddBoxSubview(box, WMWidgetView(label), True, True, 20, 0, 4); label = createListLabel(scr, box, _("Size")); WMAddBoxSubview(box, WMWidgetView(label), False, True, 60, 0, 0); box = WMCreateBox(vbox); WMSetBoxHorizontal(box, True); WMAddBoxSubview(vbox, WMWidgetView(box), True, True, 20, 0, 0); panel->styleL = WMCreateList(box); WMAddBoxSubview(box, WMWidgetView(panel->styleL), True, True, 0, 0, 4); WMSetListAction(panel->styleL, selected, panel); panel->sizeL = WMCreateList(box); WMAddBoxSubview(box, WMWidgetView(panel->sizeL), False, True, 60, 0, 0); for (i = 0; standardSizes[i]; i++) { WMAddListItem(panel->sizeL, standardSizes[i]); } WMSetListAction(panel->sizeL, selected, panel); } WMMapSubwidgets(panel->box); WMMapWidget(panel->box); WMRealizeWidget(panel->box); showData(panel); } Panel *InitFontSimple(WMWidget *parent) { _Panel *panel; panel = wmalloc(sizeof(_Panel)); panel->sectionName = _("Font Configuration"); panel->description = _("Configure fonts for Window Maker titlebars, menus etc."); panel->parent = parent; panel->callbacks.createWidgets = createPanel; panel->callbacks.updateDomain = storeData; AddSection(panel, ICON_FILE); return panel; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/Configurations.c������������������������������������������������������0000644�0001750�0001750�00000031557�13431646201�016124� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Configurations.c- misc. configurations * * WPrefs - Window Maker Preferences Program * * Copyright (c) 1998-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "WPrefs.h" typedef struct _Panel { WMBox *box; char *sectionName; char *description; CallbackRec callbacks; WMWidget *parent; WMFrame *icoF; WMButton *icoB[5]; WMFrame *shaF; WMButton *shaB[5]; WMFrame *titlF; WMButton *oldsB; WMButton *newsB; WMButton *nextB; WMFrame *animF; WMButton *animB; WMButton *supB; WMLabel *noteL; WMFrame *smoF; WMButton *smoB; WMFrame *dithF; WMButton *dithB; WMSlider *dithS; WMLabel *dithL; WMLabel *dith1L; WMLabel *dith2L; int cmapSize; } _Panel; #define ICON_FILE "configs" #define OLDS_IMAGE "oldstyle" #define NEWS_IMAGE "newstyle" #define NEXT_IMAGE "nextstyle" #define ANIM_IMAGE "animations" #define SUPERF_IMAGE "moreanim" #define SMOOTH_IMAGE "smooth" #define SPEED_IMAGE "speed%i" #define SPEED_IMAGE_S "speed%is" #define ARQUIVO_XIS "xis" static void updateLabel(WMWidget *self, void *data); static void showData(_Panel *panel) { char *str; WMPerformButtonClick(panel->icoB[GetSpeedForKey("IconSlideSpeed")]); WMPerformButtonClick(panel->shaB[GetSpeedForKey("ShadeSpeed")]); str = GetStringForKey("NewStyle"); if (str && strcasecmp(str, "next") == 0) { WMPerformButtonClick(panel->nextB); } else if (str && strcasecmp(str, "old") == 0) { WMPerformButtonClick(panel->oldsB); } else { WMPerformButtonClick(panel->newsB); } WMSetButtonSelected(panel->animB, !GetBoolForKey("DisableAnimations")); WMSetButtonSelected(panel->supB, GetBoolForKey("Superfluous")); WMSetButtonSelected(panel->smoB, GetBoolForKey("SmoothWorkspaceBack")); WMSetButtonSelected(panel->dithB, GetBoolForKey("DisableDithering")); WMSetSliderValue(panel->dithS, GetIntegerForKey("ColormapSize")); updateLabel(panel->dithS, panel); } static void updateLabel(WMWidget *self, void *data) { WMSlider *sPtr = (WMSlider *) self; _Panel *panel = (_Panel *) data; char buffer[64]; float fl; fl = WMGetSliderValue(sPtr); panel->cmapSize = (int)fl; sprintf(buffer, "%i", panel->cmapSize * panel->cmapSize * panel->cmapSize); WMSetLabelText(panel->dithL, buffer); } static void createPanel(Panel *p) { _Panel *panel = (_Panel *) p; WMScreen *scr = WMWidgetScreen(panel->parent); char *buf1, *buf2; WMPixmap *icon, *altIcon; RImage *xis = NULL; int i; RContext *rc = WMScreenRContext(scr); WMFont *font = WMSystemFontOfSize(scr, 10); char *path; path = LocateImage(ARQUIVO_XIS); if (path) { xis = RLoadImage(rc, path, 0); if (!xis) wwarning(_("could not load image file %s"), path); wfree(path); } panel->box = WMCreateBox(panel->parent); WMSetViewExpandsToParent(WMWidgetView(panel->box), 2, 2, 2, 2); /*********** Icon Slide Speed **********/ panel->icoF = WMCreateFrame(panel->box); WMResizeWidget(panel->icoF, 212, 45); WMMoveWidget(panel->icoF, 15, 10); WMSetFrameTitle(panel->icoF, _("Icon Slide Speed")); /*********** Shade Animation Speed **********/ panel->shaF = WMCreateFrame(panel->box); WMResizeWidget(panel->shaF, 212, 45); WMMoveWidget(panel->shaF, 15, 65); WMSetFrameTitle(panel->shaF, _("Shade Animation Speed")); buf1 = wmalloc(strlen(SPEED_IMAGE) + 1); buf2 = wmalloc(strlen(SPEED_IMAGE_S) + 1); for (i = 0; i < 5; i++) { panel->icoB[i] = WMCreateCustomButton(panel->icoF, WBBStateChangeMask); panel->shaB[i] = WMCreateCustomButton(panel->shaF, WBBStateChangeMask); WMResizeWidget(panel->icoB[i], 40, 24); WMMoveWidget(panel->icoB[i], 2 + (40 * i), 15); WMResizeWidget(panel->shaB[i], 40, 24); WMMoveWidget(panel->shaB[i], 2 + (40 * i), 15); WMSetButtonBordered(panel->icoB[i], False); WMSetButtonImagePosition(panel->icoB[i], WIPImageOnly); if (i > 0) { WMGroupButtons(panel->icoB[0], panel->icoB[i]); } WMSetButtonBordered(panel->shaB[i], False); WMSetButtonImagePosition(panel->shaB[i], WIPImageOnly); if (i > 0) { WMGroupButtons(panel->shaB[0], panel->shaB[i]); } sprintf(buf1, SPEED_IMAGE, i); sprintf(buf2, SPEED_IMAGE_S, i); path = LocateImage(buf1); if (path) { icon = WMCreatePixmapFromFile(scr, path); if (icon) { WMSetButtonImage(panel->icoB[i], icon); WMSetButtonImage(panel->shaB[i], icon); WMReleasePixmap(icon); } else { wwarning(_("could not load icon file %s"), path); } wfree(path); } path = LocateImage(buf2); if (path) { icon = WMCreatePixmapFromFile(scr, path); if (icon) { WMSetButtonAltImage(panel->icoB[i], icon); WMSetButtonAltImage(panel->shaB[i], icon); WMReleasePixmap(icon); } else { wwarning(_("could not load icon file %s"), path); } wfree(path); } } wfree(buf1); wfree(buf2); WMMapSubwidgets(panel->icoF); WMMapSubwidgets(panel->shaF); /***************** Smoothed Scaling *****************/ panel->smoF = WMCreateFrame(panel->box); WMResizeWidget(panel->smoF, 94, 100); WMMoveWidget(panel->smoF, 420, 10); WMSetFrameTitle(panel->smoF, _("Smooth Scaling")); panel->smoB = WMCreateButton(panel->smoF, WBTToggle); WMResizeWidget(panel->smoB, 64, 64); WMMoveWidget(panel->smoB, 15, 23); WMSetButtonImagePosition(panel->smoB, WIPImageOnly); path = LocateImage(SMOOTH_IMAGE); if (path) { RImage *image, *scaled; image = RLoadImage(WMScreenRContext(scr), path, 0); wfree(path); scaled = RScaleImage(image, 61, 61); icon = WMCreatePixmapFromRImage(scr, scaled, 128); RReleaseImage(scaled); if (icon) { WMSetButtonImage(panel->smoB, icon); WMReleasePixmap(icon); } scaled = RSmoothScaleImage(image, 61, 61); icon = WMCreatePixmapFromRImage(scr, scaled, 128); RReleaseImage(scaled); if (icon) { WMSetButtonAltImage(panel->smoB, icon); WMReleasePixmap(icon); } RReleaseImage(image); } WMSetBalloonTextForView(_("Smooth scaled background images, neutralizing\n" "the `pixelization' effect. This will slow\n" "down loading of background images considerably."), WMWidgetView(panel->smoB)); WMMapSubwidgets(panel->smoF); /***************** Titlebar Style Size ****************/ panel->titlF = WMCreateFrame(panel->box); WMResizeWidget(panel->titlF, 212, 97); WMMoveWidget(panel->titlF, 15, 120); WMSetFrameTitle(panel->titlF, _("Titlebar Style")); panel->oldsB = WMCreateButton(panel->titlF, WBTOnOff); WMResizeWidget(panel->oldsB, 60, 40); WMMoveWidget(panel->oldsB, 16, 32); WMSetButtonImagePosition(panel->oldsB, WIPImageOnly); path = LocateImage(OLDS_IMAGE); if (path) { icon = WMCreatePixmapFromFile(scr, path); if (icon) { WMSetButtonImage(panel->oldsB, icon); WMReleasePixmap(icon); } wfree(path); } panel->newsB = WMCreateButton(panel->titlF, WBTOnOff); WMResizeWidget(panel->newsB, 60, 40); WMMoveWidget(panel->newsB, 76, 32); WMSetButtonImagePosition(panel->newsB, WIPImageOnly); path = LocateImage(NEWS_IMAGE); if (path) { icon = WMCreatePixmapFromFile(scr, path); if (icon) { WMSetButtonImage(panel->newsB, icon); WMReleasePixmap(icon); } wfree(path); } panel->nextB = WMCreateButton(panel->titlF, WBTOnOff); WMResizeWidget(panel->nextB, 60, 40); WMMoveWidget(panel->nextB, 136, 32); WMSetButtonImagePosition(panel->nextB, WIPImageOnly); path = LocateImage(NEXT_IMAGE); if (path) { icon = WMCreatePixmapFromFile(scr, path); if (icon) { WMSetButtonImage(panel->nextB, icon); WMReleasePixmap(icon); } wfree(path); } WMGroupButtons(panel->newsB, panel->oldsB); WMGroupButtons(panel->newsB, panel->nextB); WMMapSubwidgets(panel->titlF); /**************** Features ******************/ panel->animF = WMCreateFrame(panel->box); WMResizeWidget(panel->animF, 173, 100); WMMoveWidget(panel->animF, 237, 10); WMSetFrameTitle(panel->animF, _("Animations")); panel->animB = WMCreateButton(panel->animF, WBTToggle); WMResizeWidget(panel->animB, 64, 64); WMMoveWidget(panel->animB, 15, 23); WMSetButtonFont(panel->animB, font); WMSetButtonText(panel->animB, _("Animations")); WMSetButtonImagePosition(panel->animB, WIPAbove); CreateImages(scr, rc, xis, ANIM_IMAGE, &altIcon, &icon); if (icon) { WMSetButtonImage(panel->animB, icon); WMReleasePixmap(icon); } if (altIcon) { WMSetButtonAltImage(panel->animB, altIcon); WMReleasePixmap(altIcon); } WMSetBalloonTextForView(_("Disable/enable animations such as those shown\n" "for window miniaturization, shading etc."), WMWidgetView(panel->animB)); panel->supB = WMCreateButton(panel->animF, WBTToggle); WMResizeWidget(panel->supB, 64, 64); WMMoveWidget(panel->supB, 94, 23); WMSetButtonFont(panel->supB, font); WMSetButtonText(panel->supB, _("Superfluous")); WMSetButtonImagePosition(panel->supB, WIPAbove); CreateImages(scr, rc, xis, SUPERF_IMAGE, &altIcon, &icon); if (icon) { WMSetButtonImage(panel->supB, icon); WMReleasePixmap(icon); } if (altIcon) { WMSetButtonAltImage(panel->supB, altIcon); WMReleasePixmap(altIcon); } WMSetBalloonTextForView(_("Disable/enable `superfluous' features and\n" "animations. These include the `ghosting' of the\n" "dock when it's being moved to another side and\n" "the explosion animation when undocking icons."), WMWidgetView(panel->supB)); WMMapSubwidgets(panel->animF); /*********** Dithering **********/ panel->cmapSize = 4; panel->dithF = WMCreateFrame(panel->box); WMResizeWidget(panel->dithF, 277, 97); WMMoveWidget(panel->dithF, 237, 120); WMSetFrameTitle(panel->dithF, _("Dithering colormap for 8bpp")); WMSetBalloonTextForView(_("Number of colors to reserve for Window Maker\n" "on displays that support only 8bpp (PseudoColor)."), WMWidgetView(panel->dithF)); panel->dithB = WMCreateSwitchButton(panel->dithF); WMResizeWidget(panel->dithB, 235, 32); WMMoveWidget(panel->dithB, 15, 15); WMSetButtonText(panel->dithB, _("Disable dithering in any visual/depth")); panel->dithL = WMCreateLabel(panel->dithF); WMResizeWidget(panel->dithL, 75, 16); WMMoveWidget(panel->dithL, 98, 50); WMSetLabelTextAlignment(panel->dithL, WACenter); WMSetLabelText(panel->dithL, "64"); panel->dithS = WMCreateSlider(panel->dithF); WMResizeWidget(panel->dithS, 95, 16); WMMoveWidget(panel->dithS, 90, 65); WMSetSliderMinValue(panel->dithS, 2); WMSetSliderMaxValue(panel->dithS, 6); WMSetSliderContinuous(panel->dithS, True); WMSetSliderAction(panel->dithS, updateLabel, panel); panel->dith1L = WMCreateLabel(panel->dithF); WMResizeWidget(panel->dith1L, 80, 35); WMMoveWidget(panel->dith1L, 5, 50); WMSetLabelTextAlignment(panel->dith1L, WACenter); WMSetLabelFont(panel->dith1L, font); WMSetLabelText(panel->dith1L, _("More colors for\napplications")); panel->dith2L = WMCreateLabel(panel->dithF); WMResizeWidget(panel->dith2L, 80, 35); WMMoveWidget(panel->dith2L, 190, 50); WMSetLabelTextAlignment(panel->dith2L, WACenter); WMSetLabelFont(panel->dith2L, font); WMSetLabelText(panel->dith2L, _("More colors for\nWindow Maker")); WMMapSubwidgets(panel->dithF); WMRealizeWidget(panel->box); WMMapSubwidgets(panel->box); if (xis) RReleaseImage(xis); WMReleaseFont(font); showData(panel); } static void storeData(_Panel *panel) { int i; for (i = 0; i < 5; i++) { if (WMGetButtonSelected(panel->icoB[i])) break; } SetSpeedForKey(i, "IconSlideSpeed"); for (i = 0; i < 5; i++) { if (WMGetButtonSelected(panel->shaB[i])) break; } SetSpeedForKey(i, "ShadeSpeed"); if (WMGetButtonSelected(panel->newsB)) { SetStringForKey("new", "NewStyle"); } else if (WMGetButtonSelected(panel->oldsB)) { SetStringForKey("old", "NewStyle"); } else { SetStringForKey("next", "NewStyle"); } SetBoolForKey(!WMGetButtonSelected(panel->animB), "DisableAnimations"); SetBoolForKey(WMGetButtonSelected(panel->supB), "Superfluous"); SetBoolForKey(WMGetButtonSelected(panel->smoB), "SmoothWorkspaceBack"); SetBoolForKey(WMGetButtonSelected(panel->dithB), "DisableDithering"); SetIntegerForKey(WMGetSliderValue(panel->dithS), "ColormapSize"); } Panel *InitConfigurations(WMWidget *parent) { _Panel *panel; panel = wmalloc(sizeof(_Panel)); panel->sectionName = _("Other Configurations"); panel->description = _("Animation speeds, titlebar styles, various option\n" "toggling and number of colors to reserve for\n" "Window Maker on 8bit displays."); panel->parent = parent; panel->callbacks.createWidgets = createPanel; panel->callbacks.updateDomain = storeData; AddSection(panel, ICON_FILE); return panel; } �������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/editmenu.h������������������������������������������������������������0000644�0001750�0001750�00000006627�13431646201�014751� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* editmenu.h - editable menus * * WPrefs - Window Maker Preferences Program * * Copyright (c) 2000-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef _editmenu_h_ #define _editmenu_h_ typedef struct W_EditMenu WEditMenu; typedef struct W_EditMenuItem WEditMenuItem; typedef struct WEditMenuDelegate { void *data; void (*itemCloned)(struct WEditMenuDelegate*, WEditMenu*, WEditMenuItem*, WEditMenuItem *); void (*itemEdited)(struct WEditMenuDelegate*, WEditMenu*, WEditMenuItem*); void (*itemSelected)(struct WEditMenuDelegate*, WEditMenu*, WEditMenuItem*); void (*itemDeselected)(struct WEditMenuDelegate*, WEditMenu*, WEditMenuItem*); Bool (*shouldRemoveItem)(struct WEditMenuDelegate*, WEditMenu*, WEditMenuItem*); } WEditMenuDelegate; WEditMenuItem *WCreateEditMenuItem(WMWidget *parent, const char *title, Bool isTitle); char *WGetEditMenuItemTitle(WEditMenuItem *item); void *WGetEditMenuItemData(WEditMenuItem *item); void WSetEditMenuItemData(WEditMenuItem *item, void *data, WMCallback *destroyer); void WSetEditMenuItemImage(WEditMenuItem *item, WMPixmap *pixmap); WEditMenu *WCreateEditMenu(WMScreen *scr, const char *title); WEditMenu *WCreateEditMenuPad(WMWidget *parent); void WSetEditMenuDelegate(WEditMenu *mPtr, WEditMenuDelegate *delegate); WEditMenuItem *WInsertMenuItemWithTitle(WEditMenu *mPtr, int index, const char *title); WEditMenuItem *WAddMenuItemWithTitle(WEditMenu *mPtr, const char *title); WEditMenuItem *WGetEditMenuItem(WEditMenu *mPtr, int index); void WSetEditMenuTitle(WEditMenu *mPtr, const char *title); char *WGetEditMenuTitle(WEditMenu *mPtr); void WSetEditMenuAcceptsDrop(WEditMenu *mPtr, Bool flag); void WSetEditMenuSubmenu(WEditMenu *mPtr, WEditMenuItem *item, WEditMenu *submenu); WEditMenu *WGetEditMenuSubmenu(WEditMenuItem *item); void WRemoveEditMenuItem(WEditMenu *mPtr, WEditMenuItem *item); void WSetEditMenuSelectable(WEditMenu *mPtr, Bool flag); void WSetEditMenuEditable(WEditMenu *mPtr, Bool flag); void WSetEditMenuIsFactory(WEditMenu *mPtr, Bool flag); void WSetEditMenuMinSize(WEditMenu *mPtr, WMSize size); void WSetEditMenuMaxSize(WEditMenu *mPtr, WMSize size); WMPoint WGetEditMenuLocationForSubmenu(WEditMenu *mPtr, WEditMenu *submenu); void WTearOffEditMenu(WEditMenu *menu, WEditMenu *submenu); Bool WEditMenuIsTornOff(WEditMenu *mPtr); void WEditMenuHide(WEditMenu *menu); void WEditMenuUnhide(WEditMenu *menu); void WEditMenuShowAt(WEditMenu *menu, int x, int y); #endif ���������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/WPrefs.h��������������������������������������������������������������0000644�0001750�0001750�00000012605�13431646201�014336� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* WPrefs.h- general definitions * * WPrefs - Window Maker Preferences Program * * Copyright (c) 1998-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef WPREFS_H_ #define WPREFS_H_ #include <stdlib.h> #include <stdio.h> #include <string.h> #include <strings.h> #include <signal.h> #include <X11/Xlib.h> #include <wraster.h> #include <WINGs/WINGs.h> /* Needed for HAVE_LIBINTL_H and EXTENDED_WINDOWSHORTCUT */ #include "../src/wconfig.h" /* * The macro 'wlengthof' should be used as much as possible, this macro * is reserved for the cases where wlengthof cannot be used because the * static_assert. Typical symptom is this compiler error (gcc): * * error: braced-group within expression allowed only inside a function * * which appears when you try to create an array whose size is determined using * wlengthof on some other array. */ #define wlengthof_nocheck(array) \ (sizeof(array) / sizeof(array[0])) /****/ extern char *NOptionValueChanged; extern Bool xext_xkb_supported; typedef struct _Panel Panel; typedef struct { unsigned flags; /* reserved for WPrefs.c Don't access it */ void (*createWidgets)(Panel*); /* called when showing for first time */ void (*updateDomain)(Panel*); /* save the changes to the dictionary */ Bool (*requiresRestart)(Panel*); /* return True if some static option was changed */ void (*undoChanges)(Panel*); /* reset values to those in the dictionary */ void (*prepareForClose)(Panel*); /* called when exiting WPrefs */ void (*showPanel)(Panel*); /* called when entering the panel */ void (*hidePanel)(Panel*); /* called when exiting the panel */ } CallbackRec; /* all Panels must start with the following layout */ typedef struct PanelRec { WMBox *box; char *sectionName; /* section name to display in titlebar */ char *description; CallbackRec callbacks; } PanelRec; /* ---[ Wprefs.c ] ------------------------------------------------------- */ void AddSection(Panel *panel, const char *iconFile); char *LocateImage(const char *name); void SetButtonAlphaImage(WMScreen *scr, WMButton *bPtr, const char *file); /* Loads `file' into `icon_normal'. If `icon_greyed' is not NULL, * combine `icon_normal' with some grey and then optionally with image * `xis', and store it in `icon_greyed' (typically to produce a * greyed-out, red-crossed version of `icon_normal') */ void CreateImages(WMScreen *scr, RContext *rc, RImage *xis, const char *file, WMPixmap **icon_normal, WMPixmap **icon_greyed); WMWindow *GetWindow(void); /* manipulate the dictionary for the WindowMaker domain */ WMPropList *GetObjectForKey(const char *defaultName); void SetObjectForKey(WMPropList *object, const char *defaultName); void RemoveObjectForKey(const char *defaultName); char *GetStringForKey(const char *defaultName); int GetIntegerForKey(const char *defaultName); Bool GetBoolForKey(const char *defaultName); int GetSpeedForKey(const char *defaultName); void SetIntegerForKey(int value, const char *defaultName); void SetStringForKey(const char *value, const char *defaultName); void SetBoolForKey(Bool value, const char *defaultName); void SetSpeedForKey(int speed, const char *defaultName); /* ---[ KeyboardShortcuts.c ] -------------------------------------------- */ char *capture_shortcut(Display *dpy, Bool *capturing, Bool convert_case); /* ---[ double.c ] ------------------------------------------------------- */ typedef struct W_DoubleTest DoubleTest; DoubleTest *CreateDoubleTest(WMWidget *parent, const char *text); /* ---[ main.c ] --------------------------------------------------------- */ void AddDeadChildHandler(pid_t pid, void (*handler)(void*), void *data); /* ---[ xmodifier.c ] ---------------------------------------------------- */ int ModifierFromKey(Display * dpy, const char *key); /* ---[ Panel Initializers ]---------------------------------------------- */ void Initialize(WMScreen *scr); /* in alphabetical order - in case you'd want to add one */ Panel *InitAppearance(WMWidget *parent); Panel *InitConfigurations(WMWidget *parent); Panel *InitDocks(WMWidget *parent); Panel *InitExpert(WMWidget *parent); Panel *InitFocus(WMWidget *parent); Panel *InitFontSimple(WMWidget *parent); Panel *InitIcons(WMWidget *parent); Panel *InitKeyboardShortcuts(WMWidget *parent); Panel *InitMenu(WMWidget *parent); Panel *InitMenuPreferences(WMWidget *parent); Panel *InitMouseSettings(WMWidget *parent); Panel *InitPaths(WMWidget *parent); Panel *InitPreferences(WMWidget *parent); Panel *InitWindowHandling(WMWidget *parent); Panel *InitWorkspace(WMWidget *parent); #define FRAME_TOP 105 #define FRAME_LEFT -2 #define FRAME_WIDTH 524 #define FRAME_HEIGHT 235 #endif /* WPREFS_H_ */ ���������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/�����������������������������������������������������������������0000755�0001750�0001750�00000000000�13642365214�013771� 5����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/workspacename.tiff�����������������������������������������������0000644�0001750�0001750�00000002456�13431646201�017423� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*�V��$h!B &l"F ;j 'n &~J&~b6t% @-*oXi *"~ѣm9T+*"5j&Ho.V0Uj&bƄ:6&EO7=ZJѶoIj ,+C@}sqL 3jO{g̜hYr6oT5p~ JJT_$^zTyp� BŒSsyފ^@�n #C"רM}?Hǀ6 $(O+)&C*T|kh<!",L\ՠ c!NP.`Vb�.!LT0()(e4L2$20X`I r cf VRVC}tQP�sq7GUP@K:I"/> tȹc$X,LʡB`+Q'\rE8 f@@v Ɔdi0>d%T`K+c+VP;avc!>ȩaޑsG|!goΐC)*j3sF}4Vǀn,:)M2j&AdGu/wDz~ , 36R3y ISx:4Ai~ƙCkԜUAߐÍt ǫ:$頃Z uZD*5qL# .HG�A$Edp:cTȠ h4=ebONA&?K+B o^9�.iA 1MŠg3?^?T+=36D'AUD4k{"Z?Bf[vGר2zԡlg'~* (Np35Z7,er=! iBFTG</xz7<1OyK^6\ o ('?yQ;?_3*JQfCTA(&Tckj{������2�������(����������������������� ������� �$��� ���������������������������6�������N���������=��������������/home/avatar/dcc/workspacename.tiff�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/keyshortcuts.tiff������������������������������������������������0000644�0001750�0001750�00000007317�13431646201�017334� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*� ��$h!B &l"F b)j 4bt<? $$~̥rx:<fX69t'0(\BQ|1%TBPn9JY`55ׂ_ZdAn\ܶs;y3ww@է  2'm|llP*ead3U|n10"\\ݺ+|m :گ az=2|F| ̀{*7AKEk>d*/RdU;0~γ=9?)0�ǠU=8yA?$ R&0EV2#Qp2*H2b1&) VQY}"w5}5,!֝SPK#JUtp=`-*(l4"HqDe&'s:|E5T@k$3 )uWHנy䦴|*SteP9pa4+.ު967| 7m";/02x ]B5[V)O+hӖm\>Plru{-掭+|3U2TRA1RO+K)Όe}8'!1FMVr+ b 2Q|L5?լEG2qQѣF"!srDu)ё] 2íT k1E]P+Th/ض)]Ԕ#seʇC0XȐ8PtL(پf 1[A0HqJ1_2!k tWt': z02ƫPmJzUЩmo@[-Y~5H|Q7]ks6Z"p0n,Da'~FSt|ZtT`G ϡ'#6k{ RMmCi =(t6KsL#( CVUCk8;tcX{$V "(sQ=PGbf)*)E^g''L @m~8E+Nq:j[lؓOVgnJdb)i\  NT%¦A8l$Ib6]4RFl(CzO>N2G@dh(:KtkO&2Ō{Re8BhkA- Ճ8U$zP !BtBX`ɵd遝I _$ZV cI) 3@ -JUASdӥT,fK R a#g>=J.tgٔڤlyqpFC ʓ"+]|Y ;Dd&hؑ +&3) [W9TuT7*$Y.I  huKsAȒ21cB2A]@2 Rb'(N0qBBa&&YRSAJ|l3I䣯N'� ]HS!ySp۽7t[ꑂ1&ˍ3nT' a9;!Lf 6JR$V7ϥadP*, X!&*s#10AӜ8-(jVNCWqCg~XHt_ ¥.:6~eSv+U \D#2(�d̃6R{2R;L7YsṪL:P(?a]s897Td PEyɄ`MM)Q3~Fm%[ӏ0Xv JQ&|=) O~5iDҞJ5ǓN.ŀ@` B&mAwLsBK2A5QM8DNIsNI{']H/e'+7oSX%ɄMXFp_vJi4.BMZKH!uqq#_7D +5Ѻ"+2ىdg*Emm RbRRDVӆʧ9+_rS>beN"2!Hodv6Hw":jG.I'2A͹|o^`iɊP_5'm-' $Z!+Q].BtBv;י|{9B!twӝ=_d"u> 4Az\ۋ̌�VS!vVik 6eBˆ]V/sn{fg͝`D>b<dþTSu>u nDsC sRD%+~C nD#47@I$l0RQXDp:.EC%3YX#Z<CcnVOItU0>/ !\ $ v4|2P$V @WkjVM̖=qu$;1|%Nܢ X@tF9gpc�GPt<-VO̧l v k#C54z,ka�` ~mgYEtk`nT#Z#]D+d!O*&hbY#}tE?75HC-u@?}Ȉ <#, WFV$O}B&JA D%>R&Prn "F>GrhD3UA%H#ZWHJD^P@O;$sT#+NT=$~"3'R`o( .%}EWz %b%+APR@ EDwY#DPJ!VDEtPO1`@+&V`{l^~|-lukT lҨG21aJ ENw]F Hzb¢&b%ZGW|%%tUD rRjn|R|$,~|z  mD|/Yc4'OR`(&,f` t`r|6T<R'  aKc@=!Zhuh&}HCI%#{>R^="|!;D B2*o-||Y%B%+z ,59l<|;�@M]G,wC6=#;jRM9~d `\`bd6YCWJbt @>ҕS9RY =V| ZTh#NX#] >0E�4fʧdNwQH|@W:0z@%Y#""^&4'B Gdq-a{-]!` H&+!@;Jf/b}$A%4D6Mo@5PQC7Bw Z|58*1"SQ\ ,~\Fw'gE% � Cl=b@0APŭjB�Tқ2&*k5#QJ=.Ft 2EA�@ AFΫF @ | j#B@%d$$A6$ңb#;i:X}V aB%R9#OA b#yA %lZClnm�������0�������0����������������������� ������� �)������������������������������8������� ���������=��������������/home/largo/newWPicons/keyshortcuts.tiff������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/Makefile.in������������������������������������������������������0000644�0001750�0001750�00000047126�13642360054�015765� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = WPrefs.app/tiff ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ $(top_srcdir)/m4/ax_pthread.m4 \ $(top_srcdir)/m4/ld-version-script.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/windowmaker.m4 \ $(top_srcdir)/m4/wm_attributes.m4 \ $(top_srcdir)/m4/wm_cflags_check.m4 \ $(top_srcdir)/m4/wm_i18n.m4 \ $(top_srcdir)/m4/wm_imgfmt_check.m4 \ $(top_srcdir)/m4/wm_libexif.m4 $(top_srcdir)/m4/wm_libmath.m4 \ $(top_srcdir)/m4/wm_prog_cc_c11.m4 \ $(top_srcdir)/m4/wm_xext_check.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__dist_tiffdata_DATA_DIST) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__dist_tiffdata_DATA_DIST = advancetonewworkspace.tiff \ animations.tiff appearance.tiff clip.tiff configs.tiff \ cycleworkspaces.tiff dock.tiff dockclipdrawersection.tiff \ dontlinkworkspaces.tiff drawer.tiff ergonomic.tiff expert.tiff \ fonts.tiff iconprefs.tiff keyboard.tiff keyboardprefs.tiff \ keyshortcuts.tiff menualign1.tiff menualign2.tiff \ menuprefs.tiff menus.tiff miscprefs2.tiff moreanim.tiff \ mousesettings.tiff mousespeed.tiff msty1.tiff msty2.tiff \ msty3.tiff newstyle.tiff nextstyle.tiff nonopaque.tiff \ noopaqueresize.tiff oldstyle.tiff opaque.tiff \ opaqueresize.tiff paths.tiff smallwindow.tiff smooth.tiff \ sound.tiff speed0.tiff speed0s.tiff speed1.tiff speed1s.tiff \ speed2.tiff speed2s.tiff speed3.tiff speed3s.tiff speed4.tiff \ speed4s.tiff tdel.tiff tedit.tiff temp.tiff textr.tiff \ theme.tiff timer0.tiff timer0s.tiff timer1.tiff timer1s.tiff \ timer2.tiff timer2s.tiff timer3.tiff timer3s.tiff timer4.tiff \ timer4s.tiff timer5.tiff timer5s.tiff tnew.tiff whandling.tiff \ windowfocus.tiff workspace.tiff workspacename.tiff xis.tiff am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(tiffdatadir)" DATA = $(dist_tiffdata_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in README DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ GFXLIBS = @GFXLIBS@ GREP = @GREP@ HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLIBS = @INTLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBBSD = @LIBBSD@ LIBEXIF = @LIBEXIF@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXINERAMA = @LIBXINERAMA@ LIBXMU = @LIBXMU@ LIBXRANDR = @LIBXRANDR@ LINGUAS = @LINGUAS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAGICKFLAGS = @MAGICKFLAGS@ MAGICKLIBS = @MAGICKLIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MANLANGDIRS = @MANLANGDIRS@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOLIBS = @PANGOLIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILMOFILES = @UTILMOFILES@ VERSION = @VERSION@ WINGSMOFILES = @WINGSMOFILES@ WINGS_VERSION = @WINGS_VERSION@ WMAKERMOFILES = @WMAKERMOFILES@ WPREFSMOFILES = @WPREFSMOFILES@ WRASTER_VERSION = @WRASTER_VERSION@ WUTIL_VERSION = @WUTIL_VERSION@ XCFLAGS = @XCFLAGS@ XFTCONFIG = @XFTCONFIG@ XFTFLAGS = @XFTFLAGS@ XFTLIBS = @XFTLIBS@ XGETTEXT = @XGETTEXT@ XLFLAGS = @XLFLAGS@ XLIBS = @XLIBS@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBRARY_PATH = @X_LIBRARY_PATH@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ defsdatadir = @defsdatadir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ inc_search_path = @inc_search_path@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lcov_output_directory = @lcov_output_directory@ lib_search_path = @lib_search_path@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pixmapdir = @pixmapdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ wprefs_bindir = @wprefs_bindir@ wprefs_datadir = @wprefs_datadir@ tiffdatadir = $(wprefs_datadir)/tiff @ICON_EXT_TIFF_TRUE@dist_tiffdata_DATA = \ @ICON_EXT_TIFF_TRUE@ advancetonewworkspace.tiff \ @ICON_EXT_TIFF_TRUE@ animations.tiff \ @ICON_EXT_TIFF_TRUE@ appearance.tiff \ @ICON_EXT_TIFF_TRUE@ clip.tiff \ @ICON_EXT_TIFF_TRUE@ configs.tiff \ @ICON_EXT_TIFF_TRUE@ cycleworkspaces.tiff \ @ICON_EXT_TIFF_TRUE@ dock.tiff \ @ICON_EXT_TIFF_TRUE@ dockclipdrawersection.tiff \ @ICON_EXT_TIFF_TRUE@ dontlinkworkspaces.tiff \ @ICON_EXT_TIFF_TRUE@ drawer.tiff \ @ICON_EXT_TIFF_TRUE@ ergonomic.tiff \ @ICON_EXT_TIFF_TRUE@ expert.tiff \ @ICON_EXT_TIFF_TRUE@ fonts.tiff \ @ICON_EXT_TIFF_TRUE@ iconprefs.tiff \ @ICON_EXT_TIFF_TRUE@ keyboard.tiff \ @ICON_EXT_TIFF_TRUE@ keyboardprefs.tiff \ @ICON_EXT_TIFF_TRUE@ keyshortcuts.tiff \ @ICON_EXT_TIFF_TRUE@ menualign1.tiff \ @ICON_EXT_TIFF_TRUE@ menualign2.tiff \ @ICON_EXT_TIFF_TRUE@ menuprefs.tiff \ @ICON_EXT_TIFF_TRUE@ menus.tiff \ @ICON_EXT_TIFF_TRUE@ miscprefs2.tiff \ @ICON_EXT_TIFF_TRUE@ moreanim.tiff \ @ICON_EXT_TIFF_TRUE@ mousesettings.tiff \ @ICON_EXT_TIFF_TRUE@ mousespeed.tiff \ @ICON_EXT_TIFF_TRUE@ msty1.tiff \ @ICON_EXT_TIFF_TRUE@ msty2.tiff \ @ICON_EXT_TIFF_TRUE@ msty3.tiff \ @ICON_EXT_TIFF_TRUE@ newstyle.tiff \ @ICON_EXT_TIFF_TRUE@ nextstyle.tiff \ @ICON_EXT_TIFF_TRUE@ nonopaque.tiff \ @ICON_EXT_TIFF_TRUE@ noopaqueresize.tiff \ @ICON_EXT_TIFF_TRUE@ oldstyle.tiff \ @ICON_EXT_TIFF_TRUE@ opaque.tiff \ @ICON_EXT_TIFF_TRUE@ opaqueresize.tiff \ @ICON_EXT_TIFF_TRUE@ paths.tiff \ @ICON_EXT_TIFF_TRUE@ smallwindow.tiff \ @ICON_EXT_TIFF_TRUE@ smooth.tiff \ @ICON_EXT_TIFF_TRUE@ sound.tiff \ @ICON_EXT_TIFF_TRUE@ speed0.tiff \ @ICON_EXT_TIFF_TRUE@ speed0s.tiff \ @ICON_EXT_TIFF_TRUE@ speed1.tiff \ @ICON_EXT_TIFF_TRUE@ speed1s.tiff \ @ICON_EXT_TIFF_TRUE@ speed2.tiff \ @ICON_EXT_TIFF_TRUE@ speed2s.tiff \ @ICON_EXT_TIFF_TRUE@ speed3.tiff \ @ICON_EXT_TIFF_TRUE@ speed3s.tiff \ @ICON_EXT_TIFF_TRUE@ speed4.tiff \ @ICON_EXT_TIFF_TRUE@ speed4s.tiff \ @ICON_EXT_TIFF_TRUE@ tdel.tiff \ @ICON_EXT_TIFF_TRUE@ tedit.tiff \ @ICON_EXT_TIFF_TRUE@ temp.tiff \ @ICON_EXT_TIFF_TRUE@ textr.tiff \ @ICON_EXT_TIFF_TRUE@ theme.tiff \ @ICON_EXT_TIFF_TRUE@ timer0.tiff \ @ICON_EXT_TIFF_TRUE@ timer0s.tiff \ @ICON_EXT_TIFF_TRUE@ timer1.tiff \ @ICON_EXT_TIFF_TRUE@ timer1s.tiff \ @ICON_EXT_TIFF_TRUE@ timer2.tiff \ @ICON_EXT_TIFF_TRUE@ timer2s.tiff \ @ICON_EXT_TIFF_TRUE@ timer3.tiff \ @ICON_EXT_TIFF_TRUE@ timer3s.tiff \ @ICON_EXT_TIFF_TRUE@ timer4.tiff \ @ICON_EXT_TIFF_TRUE@ timer4s.tiff \ @ICON_EXT_TIFF_TRUE@ timer5.tiff \ @ICON_EXT_TIFF_TRUE@ timer5s.tiff \ @ICON_EXT_TIFF_TRUE@ tnew.tiff \ @ICON_EXT_TIFF_TRUE@ whandling.tiff \ @ICON_EXT_TIFF_TRUE@ windowfocus.tiff \ @ICON_EXT_TIFF_TRUE@ workspace.tiff \ @ICON_EXT_TIFF_TRUE@ workspacename.tiff \ @ICON_EXT_TIFF_TRUE@ xis.tiff all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu WPrefs.app/tiff/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu WPrefs.app/tiff/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_tiffdataDATA: $(dist_tiffdata_DATA) @$(NORMAL_INSTALL) @list='$(dist_tiffdata_DATA)'; test -n "$(tiffdatadir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(tiffdatadir)'"; \ $(MKDIR_P) "$(DESTDIR)$(tiffdatadir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(tiffdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(tiffdatadir)" || exit $$?; \ done uninstall-dist_tiffdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_tiffdata_DATA)'; test -n "$(tiffdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(tiffdatadir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(tiffdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_tiffdataDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_tiffdataDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am \ install-dist_tiffdataDATA install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-dist_tiffdataDATA .PRECIOUS: Makefile # 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. .NOEXPORT: ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/advancetonewworkspace.tiff���������������������������������������0000644�0001750�0001750�00000002150�13431646201�021150� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*�N��� $h!B &l"F%j1bƊ'n &J$i)RJ&m2fʜ%k9rʝ'o *\h%J*]l\9PU�kV]NzjXQMZ6h?HCૡ2_R"_AQ� T<Ѕ(S3s]׼ӏ4 �Xrz?hj Q毳3gs;?ȋ[s7oݾ|>kNyC/^z FV(\�0,(|pCԳc렃ߠ@$JAÝB P5ߠ' 4$4D &:/ !PB #p/ˆ/;YK )Hv]wTB@t< }8 KΡxRN5(I=8L4̳:[S̓R:Z!E+ T|?α"ASK-05Û X|u?+k <I' KΥ1aꚪZj󪎺/(<^TocD|Ȼ�p<O I դ38"l/5\Ňdx�o v' m&t~7r x!yshL/]� h `B2"8d$7]Js]q-ےm6X-|37pKvdwusw89� $h!B &l"F%j1bƊ'n &J$i)RJ&m1������0�������0����������������������� ������� �2���������B������X��������������������*�������`���������R���������������/usr/home/fatal/alfredo/advancetonewworkspace.tif�Created with The GIMP������ ��9���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/README�����������������������������������������������������������0000644�0001750�0001750�00000000341�13431646201�014561� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Icon Contributors ----------------- Jesse Kaufman <glandix@linuxfreak.com> configs.tiff Largo <largo@windowmaker.info> All other graphics are copyright 1998,1999 by Marco van Hylckama Vlieg (marco@windowmaker.info) �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/mousespeed.tiff��������������������������������������������������0000644�0001750�0001750�00000005552�13431646201�016735� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*�` ��� $h!B &l"F%j1bƊ''B7iqJ͋m:)2f `6s*Go6̞h\@%�) ,?�# o5SkjUhPC($*p-"Ld7(/1ܓ,0Gr*Na�g0E^kx/ \_2Vlry�X;d@s̸ ꌌ.3ׯg_C7|kA=z 9RP~�+:?!gUF]t%W\ "'$ mXàO"50 ыT'3uc!`?, 섹&15@kEt~~ bf<?2K3i̒;S0�NJ2�EN'/~Iɗ8773&&2#X3?(?8ry:~=b%6~)X?:eشb/ޖC5GL`=ҫRa@|I $zmu7s(旨å7H? hqi"l>Oj8 <in_@@k"7nmTj6z&?No`[HW`9{0V :`~9rA݈_v,K A[s2Z%?8f;u_!yeB-z䘿&Xj|M \s 臟zݛ_VI~9?L~c7x?/ǽ 0=L.C|` b=p̠#1=E,�*!BbXtRYX 5~:"9fXgᏚ7yq>, f79'0#Y3bTh|9$2Lc >P1̬9GA}iF:$\&M|t?p'"l@៑@?#YD'Hg%'ɠL.%?@9�300qnR8V9Jg 01#ofHI!_`7ACv�J(f5!BVnpܧAHSySAxbkA $`]0D, G@w"Ϙ$22 q�%+bK#9ijzLeg_3l a :0 KegBQFlX d0Mp#5/k%Vf,'] lBAّ?;`7 Wk ?v�! gc ˥Z"4d 0 [s00OJb(5�춢_� js\J`iw"�l2;,l㣓$ GG<9̤м[b#jU-xa2_K0#^I ~ׁlD2x?n 070vQu5!VPĦ8_K9 # JWh:Ԧ _c|@fMWQ9>B̓2a}‚ɆNv 5񇭩x6^e3JHB;~D.2M%(ߌP1#Jz2x)L~r TϕbIEWQc?iI?iX s1Fu?Y5r.8�6 !m ZYXcx"7j|W::4D.@V0UR/521t}m:&1aH5!{go(v1堯|2Z,jCW*͹T*Pu=o|'ت n%j`V HҚs"<QDˌ5Uy![rui5Byײ[89%,A~ƚwJW(7l6V?i1\񇘇s7K+S4B E #C6%?bۨx8ĵjo|SxO7B?0 BtP o5*Wf=IߺU% vW`M.h�v?KdF +�&,?BPp X@ PB?j p? o 72HoC`�7DC~@[IP &x`�\sCpWzGpc?uX z^|hEA` Ja5�JIςQk2<P_ `pptMׂ/jxMq}V<7M�>XM89x9xs-HH/x`4(kR)` TK(DV"L TlQņFF TE�^򘌩B@�������(�������,������� ���������������� ������� �1���" ������T ���������������������������3�������W ���������R���������������/home/avatar/Devel/WM/WPrefs/data/mousespeed.tif��created with The GIMP�������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/tedit.tiff�������������������������������������������������������0000644�0001750�0001750�00000004404�13431646201�015670� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*���� $h!B &l` 0x`CE�_ ߁E� SF@D�E>HP3&<(X`hH�3�D\A'-PYW(i4TG/Yn(? @@@'.Pq (Jm3Cه9@~ތ*Y7 {�8#�0#{ L r`s hr`k@�H ;Uu� yW�,*@l�0Q��da[tT/eq@y Ĉ�X#` K�xFG@>?O��Dy8t^sy L�`Q'�ha�Y!p@ k~y0�`aWDO@ �04B>'x$"R�/ [^@ mg2@E/r pLഅ(`P8.}DØ8�*T�?`g?Q=�Y��WiAg4?G耔jf[`nXıbA4�A S>I6 m$�;�� *� ��Xq v$�ltp�i!J n8hƉ? a_o�l @o�d�T�ω ?6�?~��$xX�!88/N a] ?DjS='^�!�J9NxNY[~@?J�+iyd߆6sȾ�aJaplڱ|$y�?uM � ` ^�'}H(l��L,��)� � MO<Xx6g|$ 1qB� �v�A�D@ c<`�ȏQpHx�qG '2p*�)Ԡ �%a]|#P'0D0�Ha+`0`�5*p%<��7m p �2=((x0D-9L��pMTG&ш_8 A�rX&~D\?b*�dfe@�]a� �AJ�=`�? *AEC+aģ.' DB~= 5�P=sL�b` 06 0;A _�>ETyX<g1B&"8�!Ԁ @08# B�O3Lʪ}$ ZpD)GUp-ĵaTAV"�R6� bp�>~!rł ЕֱBdC)E��<`�%M"RF_|N�_1W cuȱ/ wz ~p\".yQ|H#xVx цn@0 I7�8DR*KukX'@&ڑ!T/�9*ZjtR/ � 0�6ЊB؂ Ԡ+T(EQa r ".q;Cŏ!Y.tD$l�H&*@�:ow#*[4@ q7A Ԑ 5 /4�cM7! FEO*_VȈ rLl` �oϰl@A HRGh@9N79ʶYr' ������������������������������������ ������� �3������������������������������������K����������������������������(�������=�������R���������������/usr/local/GNUstep/Apps/WPrefs.app/tiff/tedit.tiff��created with The GIMP����H������H���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/speed2.tiff������������������������������������������������������0000644�0001750�0001750�00000000604�13431646201�015737� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*����� $h!B &l"F%j1bƊ'n &J$i)RF ieL8sYeN.wr(.CyhLŋU\d%jT/^ZJkWi԰b5j\E-4۱C=zݧo$ ���������������������Z���������������� ������� � ���b������n���������������������������U�����������������R���������������speed2.tif��created with The GIMP�����������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/timer1s.tiff�����������������������������������������������������0000644�0001750�0001750�00000001112�13431646201�016134� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������MM�*��� P8$ BaPd6q(PD#Q}=#MC$r)f)%q9g/Y$GD┚%6.ƣVEEsJ_R4%nqgͥbXժ<{i^j -9ݥ%^N-r>'|cvK ;Xr~G%߫lΗMt.e6V j*mW λ lr^];J<Ϡttcߴ@������������������������������������� ������� ���� ������'����������������������������U���������������.������6�������(�������1���� ��>R���������������timer1s.tif� Imported from XPM image: timer1s.xpm��H������H������ImageMagick�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/moreanim.tiff����������������������������������������������������0000644�0001750�0001750�00000007350�13431646201�016371� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������MM�*�� � $h!B &l"F%j~c7v8&PDM`GO&Hd 0]r$X@Y#+LB1K7SƿUm`a6P\ @[w&O !⠫=V?6P-`D\|M71?<p.�1w .@+_h4Ymz-n~>l d\Ш7?� ]̒Y"Ъ~%w;o�H7j]?mrM,"~uHov@6wucO&,B㟵'62Z@`,H�c3caёg !O-95BF?y0 WU TtM`Xɑp(2 ψYP!% bgN0IDO<ɤH6y+h@4 x&|HK/wV�l4}q " >QC JR @[n`ƶ'VAI67& 25{u]d N`H,@�u |_`uЉ\T`І0u*t=%/�`QWG _o � 0|�Y�t!̭s}5Dpj*t@C,{t3CMl� X Y~X'u(6 x �3yDQC`*!v�oY,̢l[<yyx̧SK*)ߨl%q:d+�^\38E>C }h*¡0<8!`9@v>K NxO7+V# 1 Vw�d1iBp,$a2 \i1K̅:$#N(t 5Ů^'5CѲNؘ�@�JLnj"x N@Y`  g8ÅU5(?Df1'FP * _8 O,ı�H,C8�<iJ%G�M7(?rD  qb 3#A԰ yp4ͥw5&r {\ p"]v 8FM+rdI+Lw:ldT-j- !/`)0i ɆKFgR�ȷLG"1l̂uءU4+,xl#iSs7�$@�E`Kl-�”,)7tD 3Pf1 v, @"6FRH1G)KEn�B,jKfv qs[r%P Gg f, A$WK3&R&֞rC{KlmJJG�,/ss�ڠV.P7p$(#9Q+ -É,ZS8(ɓ�@=¿'Oualf+U3j We"8B?Y-Q$qe_[)O|#&W�BRV-nu9B1=|dŨ^lx}X|E4%`@bk𔣂 c��?` 5 s!bf!9V�AkX*|%?SmS3Ə8jB0rS7a^>kbbUzOtxƬA~:fW[lV cOnBF! ]s�4� IJ1Ȣ1+@۴ <㶟@Ӊ A%P[���1HԱ`sjYSmjauZk{1)`.HmB <'cT.Y�oK /ww<9 @IɄ�%/mX./]؛<@,j;)I+GE$ _(@:04Q 8>C#'7@vA岙?@_]]d^g%(A؝X. C›mJqb3aF8&oʃ%܅'"i tN[ }{?G{*(̅^<Vzd}P"tZ9p0wG tJC.i3 >)10n:UB@ uu}5q^B 05_Vmp8\ju6qo:y�ʀ:ցrU9zB "+?c23w<_W _tdV8pp > t\VE ��P3P@ <U Hcw*;0*" fc҈��w `WpVItאD$2,� dl\Feb�evp C;@`[�0N[si@P 'p )Vd[s. (PTVp+5b`k\WХE�̂Hq _zKp0\tpB`ZqX#f 8,HQdc!A`�wGq,Q'Vjt5d,`&7 StHGR>tp4vzrAN$PjXfR ć`NֶRM02t7i(Vr[plrO>0KNtkG4OARYfH(H%i6,�Ep57fH0O#EPe0wizW fI7 yHF O4G$I$Ppo,x'4JhiȄL1IbtȊ@�@eCMHGp d, ]?�Lk寤3ĵ`<; K5"M��ugELT o-0�45L+UP \aL7 HH ΝxZtw/(* ~V'#2WAN}G`�@@� $ P8�# (0u`tB/9q?"@![D> P?yϵ$( *%j vʜ*jp`h1l]Z?!F30knĴ#*�VVYL6 a�ED�Bxim6ȳYc צm2Rfɫ,2l 0fɚTe~q7lj��?ZT71Mdp% Y(  3,ArX? ;"�J+$Ql<HLt!ZQ/7>u mN��������0�������0���������������������� ������� �������������������������������������*���������������R���������������/usr/people/marco/moreanim.tif��created with The GIMP������ ]�� U������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/drawer.tiff������������������������������������������������������0000644�0001750�0001750�00000022524�13431646201�016046� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*�$����������������������������������������������������������������������������������������������������������}~688mnm dfeVXW" :>=VYXFHG466:<;prpsrt019��������������������������������������������������������������������������������������������������������{|6:9rut+/-/53afdEKI+1/W\ZTXWFIH587=@?mpoqor/18��������������������������������������������������������������������������������������������������������wy%+)7=:NUSY_^;C@AHE\b`PUSBGF376?BAln}lo|mp~./7��������������������������������������������������������������������������������������������������������uw.53FMK`hePXV@JGXa^T\ZIQN<C@.53BFEil{km{kn{-.6��������������������������������������������������������������������������������������������������������rs}!4<9;DAJTQLVSO[WV`\MXTCMI9B?3:8GLKhkyikyjmz+-5��������������������������������������������������������������������������������������������������������oqz#!8@>@IFHRONZVUb^S`[LXTEPL=FC6=;LPOfiwgjwgjx*,4��������������������������������������������������������������������������������������������������������lnw#!8A>@JGHSOP\XWd`Ub^MZUFPM>GD6=;OSRdguehufiv)+3��������������������������������������������������������������������������������������������������������iku #*()1./853>;6A>6@>2<9-63'/-!(&DHHbetcfscft(*1��������������������������������������������������������������������������������������������������������bcmUXeadqber')0��������������������������������������������������������������������������������������������������������hjv.02+,/*+.)+.)*-(*-(),')+&(+&'*&'*%')$&)&(+MOZ_bo_cp&(/��������������������������������������������������������������������������������������������������������|~z{rtoq~mo|ln{jmxhjwfiuegsberado_an]`l[^kZ]i]`m]am^an%'.��������������������������������������������������������������������������������������������������������{}|~z|xzvxtwrtpsnp~lo|jmzhkxfivdgtberadq^bn]`m[^k\_l#%-��������������������������������������������������������������������������������������������������������xz{}xzwytwsupsoqlp|km{ilygjwehucfsadq_bo]am[^kY]iZ]j"$,��������������������������������������������������������������������������������������������������������tvuwtvqtprmp}ln|ilyhkxehvdgtber`cp^an\_lZ^jX[hVZfTXdTXe ")BBGMABFMABFM&&)MKKMMLLMMKLMMKKMMJJMMIJMMIIMMHIMMHHMMGGLMFGKMFFKMEFJMEEIMDEIMDDIMCCHMCCGMBBGMABFMBBFM!@|}kltkltijsiisghqfgpefodenbclabk`aj_`i]_g\]f[]eZ[dYZcWYaVX`VXa+-1FHQ:;D@AI}z|y{78A}z|z|/08~|~z|{}67@|~{}y{78A^dah`f`f`d_c_b^a]_]^\]\\[Z[YZXXUuz|.08~|~{}{}67?{}xzxz57?rx`[ea]euq~~z}|ywvaetrqo}pmzesjp}|xz-.6|z~x|z{xzy{46>xzwyux45?ry! #336w~]_pr{noxlmwarfo|{vy,-6`B>969::8:6txwywz45=wyuwtv34=lq{{NNQ;C;pyr88:mmwhir_pdmzxtv+,4r@AA><:<<<:84swtwuw23<uwsuqt23<ioz{Yk_lxwru*+3ػeβ[̰Y˯Y˯Y˯YɬWǫWũUȬWaj)|/qvsusv13;suqspr02:^`435���llqjxupr(*2̮SCBCCB@>?=5xg#z*pspsqs019qsoqmp}/19vw%*$���������ffj\mYkwvnq~')1ˬRCD+449G<<.udz+mroqor/18oqmp}lo|./8_^������������`ad{{hhl���xxfrqmo}&'0DEKʬQCC5EtEJ;6.udu%lplo|mp~./7mp}kn{jlz,.7IrF���������������ddkeeh{{IJL������[jYhsrjmz%'/ghu*+-ʬQCC3Iؐ}>F87-q`sjnkm{kn{-.6kn{ilyhkx+-5XV������bbd���������`m]dpoily$%-|} ++-ʬRBA4C}4s6N53-p_phlhkxilz+-5ilygjwfiv*,4tu���������}~bcd���z}alkfiv#$,MMVȫQ@?BA@>@0o_qfjgjwgjw*,4gjwehudgt)*3IAxu������������ ~~]\_vnDy3_mgehu!#+ħO<=:7442���r`tdh|ehuehv)*3ehucfsber')2_b}|tvy���������%&' ffkBNF_iibes "*i%i&i"h#yav`t^s]������safzcfscfs(*1cfsadq`cp&)1]^pr{noxopr������������<J9\gfadq!)}9;fO43,{4���������aetadqadr')0adq_bo^bn%'/~\]noxlmwghqerk~&&&{|y{E`?=I8[ee_bo '~}{}\vyvxpuzwwor{ujlo}������������_bo_cp&'/_bo]am\_l$&.{}Z[lmwijsfhq_me]jb_bkwy}~Y[dUX`NiKACJdee5549F9Ydc]`m&|~{}z|wyvxsvrtornp~kn|jlz���������^an]am]`n%'.^an[_kZ^j"%,z|}~WUcvgauf_sdZu[XtYZl^VhZTfXTfXSdVMoGQbTM]PO^RJbFXbb[^k%{}|~z|wyvxtvrtprnp~ln|jmzhkx���\`l[^k[_l#%-\_lY]iX\h!#,wy{}s}r|pz}ox|lvyktxisvhqteordnpbknajm_hj]fi[egZbeY^hY]i$xz{}xzwytwsupsoqlo|km{hlxgjwehucfs������Y]iY]j"$,VYfTXdRVc!)suuwsuqtoqmp}km|ilygjxehucftadq`cp]`n\_lY]jX[hVYfTXdSVc#rtsurtornp~kn{jlzgjwfhvcftber_bp^an\_lZ]jTWdRVbRUb") #$' ���}}nnvmnvllukltjksiirghqggpefndencdlbckabj`ai_`h]^g\^f[\dZ[c[\d./3��������������������������������������������������������������������������������������������������������?@I��������������������������������������������������������������������������������������������������������~}z|{}67@��������������������������������������������������������������������������������������������������������vurovu}|~{}{}67?��������������������������������������������������������������������������������������������������������ut`\YU]Y_[YUQNXVnn}{}y{xzy{46>��������������������������������������������������������������������������������������������������������jgYUc`njuq{xfe|~z|wywywz45=��������������������������������������������������������������������������������������������������������ljVRc`khhgwyuxtwuw23;��������������������������������������������������������������������������������������������������������~YU\Xlia]XTtvsvsusv12;��������������������������������������������������������������������������������������������������������igXT]Yok{wjfYVROccqspsqs019��������������������������������������������������������������������������������������������������������]ZXT[WjfxuyuhdTQIM54ktwoqor/08��������������������������������������������������������������������������������������������������������WSXTgdnkVSIP88aQMnplo|mp~./7�������������������������������������������������������������������������������������������������������WSWSb_cg&'Z=;WSkm}km{kn{-.6���������������0�������0�������$���������������� �D���$������2%���������������������������@��������$������D%������L%���������(�������R���������������/home/daniel/WindowMaker/git/wmaker-crm/WPrefs.app/tiff/drawer.tiff�Created with GIMP����`������`�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/nonopaque.tiff���������������������������������������������������0000644�0001750�0001750�00000003762�13431646201�016572� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*���� P8$ BaPd6DbQ8V-FcQ � 8?!"4 Za$@I%Ӹ<s*@� K ta26N G`rUU뵫,@Rh mź*:zWU*\MC-d@ l,KUg1u3 `yB*UNS%i"-+r}eY&12�g0�ʇ.}WлQ}HJzS P愌:J2%=Dk!cP?[�=1xlL�H�ڿ .|h� oA�m4zO#N"qĜ.|%(mT,.E{(SH�cMx fz) c[o,O\7!C(�8; SBPaH�)R0sdlJ,dLMsk$j|AbD׉)�WH=0ta%<{RBPEF!20�kM˾UbH�6],TpȰ>@=Q4MSceWerV u/5*_ xWCרEE+lX>J,}"9�T0ƃԑ("X�1" Xp�o Pjsֆ.D&�ڨz�cZ�Bh;-s'Y Z XV⁖~K_dORK _XC A~h9Eg|:V�kco+vC#w>k!ElϴNSD +}*K:Za�7xW?/稻�>ߕG!JL0.ADB6%a0S\>"ɶfpV=�JT[ oE 9A `e PyT�_ғ"nG^D ) _)b!j$".(O@�t2D`46P܈B=d0L�"_% Y �UɃivT3"O +ѿ%JhY6SK%x%J@3tVQ)_DF4Ƹ?p#5)^pld6QEQC_ v&$��a19dB!`)ɢZ|H!Nq4B_:%^r�q8Y.K&E7mFo)4N(g2KҜPǺ@[&{ǘآ碡nH֐�&sm>¶5i,g1p�P4DaAh "~~b81e"TaL1jƎ' $7 Rt�4&ƩO3�(F"uJVFd0gEu1@`x X�+r4T![Q1#-!6'٫09p�L%A5H<0�#-BIDToK&E\�F`D () RʝC ;'Cv&ɯCfrY n؜s(�͢! @� P8$ BaOcDbQ8V A�1hv HdR9b7%Q(t]/B%3m-'@$i?NvϤLBP .U'q C>WXlV8$�������0�������0����������������������� �������������������������������*����������������)�������=�������>������?������R���������������L��s������T��� ףzT�L�ff&(\ P�X9T��������������WindowMaker-0.95.9/WPrefs.app/tiff/xis.tiff���������������������������������������������������������0000644�0001750�0001750�00000001562�13431646201�015364� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������MM�*��� P8$ ?PD6DbQ8> cP\^/HdR8\vL�I$q;Y(LfR)|[Ħs?O҉[AhtTOgj.eR)v ZT1K fZR,5cVz=Wt\5Ʌo[K _pFqq+`9|^vhlT fWisޫ]WжFSw>&ߍg\>?3ͪ5Nz^w٠Wy6nWd<?OG{[3?P0+A A#CmT,) l1BGď*A0t_*ͬg )ci QFc/l{.#:IO+& ԏ܎H 7Jqk,r]0H:� P8$ \" DaT-FcQr%92;'%RI S(LfS9LW%Bfys;PhQiڍCdTe6JөV2jv<U ��������0�������0���������������������� ������� ������ ����#��"������F�������������������*��������N������V������^�������(�������1���� ��fR���������������../data/tiff/xis.tif�� Imported from XPM image: xis.xpm������������pH������H������ImageMagick�����������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/expert.tiff������������������������������������������������������0000644�0001750�0001750�00000007317�13431646201�016074� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*� ��$h!B &l"F b)j 43 N�&$Q%L,NTi�(̝#GlysɗP(=gg2iiOv$-\T *oJ.:L4n"AzkVA<- /ޮm1 ık & 4PZ~zZ]4ѝSuE&ӬX鑓6:SL;;eKɛ?_~ Gv@ 6lh1bDM 7l{}R&:3F?zey~@9>\�?0L�`��`aFP@&S{}OvHCZi =d?]?~C ~8\� @~R$$Gp//i2 @ �l!B(4 0Y�Ǹs1O@ 袛.vfHP�@;K`.C _]N= eO@�减�@r�O �H /@|AV~Jt,0B/äec /�h ᓿt0#=�xN�6kY"D3ȠP r'F\ bcX`.8+l{,VZ9fjbq2o^ h?pۃOAH.@a @}s y šP`u?@o`$03D I G,Rt,1R5aYfyG& tJ!ww@^Q'w9�( Y~� 9 �&+SË,+fT!\�,` f"61i`xtW#, Z� p?xD7;‹Up˨�'ى_LѢ `|9QXr (- 0 A,a{d sƓ氆y EUqW< x+^ŧdz X 0|� H)jQ3"{`b�| M_P�Ar`;`K3n>1 b k a{!q5I3o(n{ E�>k@"NHL)[}ǛA~y�4>c$HA t ̈0(NqS\x0 J/(@�0*F\rq`P|{<^�Mf` h1@hD0bs xs7´p-"G$1�;1QfS6�Ý(K%x?@ P@'7gN���T%;iMr`B0e|!*G*ݵJSm,aXD7Zq( B&Wp{x e [;˼$(`h9Ϝb.�+A b )8o@0!aTj8*@cL Px«J\ JK0T YBGfPvK[@,X`)p2bIf AcB~#jƎW nq;m0#%m$>m[)H#Pe V_@ :T5(v6#a?$}P �@C�@,POJWz=8=_܌6&<ƒax x:hNI~|7E -6Lhy |xWx :^"�Xht ֜@| @.�HҽѝMF~pQ|^,k{\ax@�&raDsF BI"-�$(40sP^5"�+*o :#aEZu�8<a X*b1}< p)wƍ72JjD K$ N(x;ހ0pB YHC4نz eUUXXC@qMtp95/:kqg>&K.- ;Q Hh1 -6 tP]A�Zd8F @A{Ox!t�O@�x'C)8 Oᙱ&cf#oJ_A]x(1W=:Ј< a_`Xn'*<IOʤ+$LPRt p 9Ȁ\T( l!# 0QDhBxk8^*@B`�J J?؀ XGynxZ2nN:W5D8@8@\ LO$bFjjXeX995 �0is�jS/UCP@^h�)   T088S8'x;sEGfX�>g LXM  P%Amm2}}PPTH<Y#X2@8Q�8OnnEPX5XQT8%'s<FD^�Р(�4HHES]  %U,1@^@N؁{^^a B�i�t�t((xXX@IM9053��x^,`C)@JGnVpL"p�;p䏿ȈYED.�3;`xSwVdFS(">>OiHPePIrT�cLUSdAh x>fXcII$JƫqPUP=yKe�TcM _d�3X{Y &sk�,THNOHMW 15�PJiS0A@SH[DŽA~Y28G'k�hXUx~$:xS0A!,bCB@'` O-(X)vh,H~X u%@AV`V0C0FɼBSgȈ\|)p܁@t+ +6`!ZqeX|I;�pf"\*yX^x$@tx�`00NނCLA.l 2LoJˀP SXXeh2Ȇ#xEL.XE`|(�@^,tDJ,Dwrj&؄S0=0ʴE6L�JJ`6`hvh8g|,"SD"Q))`f`AA- +AH!CњaZEE^Ko磒,RbcCf<J)C~�}( E rj@{7.$KotƴȨZ)غZ--JF9TDn&m&o&phoʦofl&DB@������0�������0����������������������� ������� �#������������������������������8������� ���������=��������������/home/largo/newWPicons/expert.tiff������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/iconprefs.tiff���������������������������������������������������0000644�0001750�0001750�00000006456�13431646201�016560� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*� �� h!B &l"F%jK1�B &J$i�ԩ+p)2fʜ%kTibǍ"Ga)Q7u!  /WiTU*�5TzͪAjXQzu7jV&�(PZ@%U[l]m~ZmR�9wܵ\2TN8`M>kLH3I}ϙ1,n|bwt�=OnNN@pةȱV~6.nϹ5c�^��8_N54o�% � �<��=8K_�0 S 5".<˃SD'<7γ4*��h`�~��8b�y1@PP=t7��M��M3`432j>3�Ȭ`-;�Q$)�~+f�TX@�<87#@YOu͓bhaU M}٪09�>�31�sIs)I1 ��¸9� �x>> A��h�`� �.Y�С�p�e"\%7˃1OQޥ;ޘb)Cg9�G�э/h��CtG�h*ǧo�(rLfm (NDFEGZ�Wq#_ۢ AjzTQ�b�QE�xE�x�>#ѯ z <�(3M|'$71;�XQ5v`CC��05G]D@(.[ָ�Yh-#$7�r_MN9�0@/2!bG��@[W�0ŴT1>V#-�,|�!�> =t v݁��^` �e;JrCJOp�ĠQR$%p �0^&Ђ|`W]82o9�<D@TLs R�xU$mʒEwIƃ8l�b)"k\:r< �B>��b® ~�"+XŊv8�`X�3HB�G!J4=Ls35� ~yU\@xu;0��Hc*8#!�$0 � � OY y("IQ?@#Op �xrЄL̛4GpaL+dE�(_�DF@`CEЅmtz< OUMG"0g92K/lV^P}#Ӝ ^9����PU8Y�GFu �|؁*t8AN֭Pt :C|ư�"-[A0R.$�C:7q8 ϚL%Ti4>h M#f9Z �财, XV�p;a5q_��:: rp Ő9nQW|^W\"7c*J*�OR{͖N؄ X^N)}&k 8�&eMOHa9cx.!y]6Y] ]uhx}(=ýp<GXя}a�bk qlC`&2*QciU�+򏤑`2�85{R>y"MQ Lf:3(3lf:rtd!ЀDω3D 1spW^djN<IygV\b<ꅌsHX6�)/z$*<�i��P]5�:�ck�׺arDYig%, ]FH#`1$�j7 P9�@V6-x�@v�1\/υ,T )njq$[NF**6~2_.5\E4�^qXM*@:Pʚ6�=gYT"w|R7Qw;iyn~Hs02 rG.��`h2�@HCP>b|Q;AM86vqLnQhf� `Aam��*(�`w6>� �- sSA0y+[VVZǟ֝Bp@?ք&]iGa8 �AJ9S ��/h 7�;A�Z'�'^#p���r!0]2<��KONd}<{*CN�|�ckIk =��y( o_&| B5adZwS$� "jUWd7 KKs #&3P2 >u`5A�%t%P{�hc^,b(?t3C`! 2*���0VeU0'_7F>ilt~@)P>t9�H$Hfx�oQ)wԅmx'i@j(}9 Mi2Bq<^ (�2'H_FHZsH+)�`j�a6Z29�0b) ',4X�ѾH�VN[E Y6R{HQV}u Fu�2D(]` 30J 0�na8ɏ@#b uDrahTw()IT7@O #2رJD4{@>'s-33;9t|=K w�L@sRdB1J /2PKXÎ[dcBX�POTIC@ I�!BS'�G_(D#VD2a� \6)SD3�hbbL9t2eM`�X'y܉k3o2귌#mI+בظknjԽ5Vc-@#2=f2@gΚ=k*d+VUy6nڼevIڽg�������0�������0������� ���������������� ������� �?��� ������ ��������������������*�������& ���������=�������R���������������/usr/local/misc/WindowMaker-cvs/WPrefs.app/tiff/iconprefs.tiff�����C ��; �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/speed0.tiff������������������������������������������������������0000644�0001750�0001750�00000000540�13431646201�015734� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*�|���� $h!B &l"F%j1bƊ'n &J$i)R&G iҥJ1}Y3'͙=r%@b ,DRʔR*5j֪]n 6jܤv@��������������������6���������������� ������� � ���>������J���������������������������U�������t����������R���������������speed0.tif��created with The GIMP�����������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/temp.tiff��������������������������������������������������������0000644�0001750�0001750�00000022424�13431646201�015526� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*�$�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������*((|HH ����������������������������������������������������������������`ͨʔ���������@������������������������������������������������ZZ`eIrr5$$((̀���@��������������������������������������������`U;vvVVNꔔva,�����������������������������������������������`au::},,Z44���P��������������������������������������������hh`PPrr]RRN,,rr¸88_HHHK������@����������������������������������������e1DD=^^ll,,F88xx$hh_000������p���������������������������������������LfU00YάZxxb$hh_g -��������� ������������������������������������`㔔s+))^ʴbxxZߐ���~������`������������������������������������yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy.`}ͼ~22r|||000ߐ���������������������������������������������yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy((BBllRR"⼼BBB(((000PPP'%���J������������������������������������������yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy2hh ||JLL<<lllppp_ppp;A����������������������������������������������yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy}}^^=n22ȟ(((s���H�������������������������������������������yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyAA00y.bb2bxxBBB888XXXPPP���P��������������������������������������������yyILLnllllbxx$XXXhhhhhh444įPPP���P��������������������������������������������[[[RRbb"8 CCC/xxxPPP���P��������������������������������������������yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy|XX"<<<<<lll<<<QQQ/xxxPPP���P��������������������������������������������yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzRRRttt‚|||<<<lll,,, QQQ/xxxPPP���P��������������������������������������������yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy jjj\\\222\\\\\\lllyyy/xxxPPP���P��������������������������������������������yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyysss\\\,,,,,, QQQyyyyyy/xxxPPP���P��������������������������������������������yyyyyyyyyyyyyyyyyyyyyyyyyyy^^^lll<<<999jjj,,,111YYYyyyyyyyyy/xxxPPP���P�������������������������������������������� \\\ XXX888xxxDDD/xxxPPP���P��������������������������������������������[[[SSSAAA^^^iiieee/xxxPPP���P��������������������������������������������yyyyyyyyyyyyyyyyyyyyy 999 nnnBBB\\\***NNN111999yyyyyyyyyyyyyyyyyy/xxxPPP���P��������������������������������������������yyyyyyyyyyyyyyyyyyccc 999 nnn\\\qqqYYYyyyyyyyyyyyyyyyyyyyyyyyy/xxxPPP���P��������������������������������������������yyyyyyyyyyyy222ttt999 nnn YYYyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy/xxxPPP���P��������������������������������������������yyyyyyyyyyyyKKKbbbLLL nnn|||BBB^^^III999yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy/xxxPPP���P��������������������������������������������yyyyyyKKKBBB!!!999 ***~~~III999yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy/xxxPPP���P��������������������������������������������rrr,,,|||\\\hhh888|||/xxxPPP���P��������������������������������������������kkkccc<<<%%% /xxxPPP���P��������������������������������������������666999 nnn<<<\\\rrryyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy/xxxPPP���P������������������������������������LLLCCCO 666YYY ***<<<\\\rrryyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy/xxxPPP���P������������������������������������seeesccc111IIINNN<<<111yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy/xxxPPP���P����������������������������������������]]]Obbb111^^^&&&rrr***YYYyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy/xxxPPP���P����������������������������������������..qqq...***bbbjjj yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy/xxxPPP���P����������������������������������������kkk$$$ttt/PPPb���P����������������������������������������������Xˈȟ(((į///////////////////////W "����������������������������������������������@���xN#{;hhhSXXXxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxm888!�������������������������������������������������� UΐZPPP2PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP␐b"̀���@����������������������������������������������� ������������������p���P���P���P���P���P���P���P���P���P���P���P���P���P���P���P���P���P���P���P���P���P���P���P���P���P������������@�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������0�������0�������$���������������� ������� �$���$������$������%��������������������*������� %���������R���������������/usr/home/fatal/newprefs/menus.tiff�Created with The GIMP������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/timer0s.tiff�����������������������������������������������������0000644�0001750�0001750�00000001044�13431646201�016137� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������MM�*���܀� P8$ BaPd6q(PD#Q}=#MC$r)f)%q9g/Y$GRi3eKTjU:U6VkU5Z;%F-춻eVq'm;e]B^o3mG/;&U0ѬN6ݱK_'GrY{.V>Ys9E9^dmY<i{nj������������������������������������ ������� ����������&����������������������������U����������������������������(�������1���� ��R���������������../tiff/timer0.tiff� Imported from XPM image: timer0.xpm�H������H������ImageMagick���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/speed1.tiff������������������������������������������������������0000644�0001750�0001750�00000000562�13431646201�015741� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*����� $h!B &l"F%j1bƊ'n &J$i)R&F ieL8sxٲ3P٣ȟ;C" F)\hLe+,L,*)W%BڕkV~&-Zjݦm:vܥT@��������������������H���������������� ������� � ���P������\���������������������������U�����������������R���������������speed1.tif��created with The GIMP�����������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/dontlinkworkspaces.tiff������������������������������������������0000644�0001750�0001750�00000002670�13431646201�020506� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������MM�*��P� P8$ BaPd6DbQ8V-FcQv=HdR9$M'JeRd]/I�g5ͦs9%?Rg"N4 5V,[-_v_XiUVDmz]-?a@!z�6kz7;y1W+fj A[riKE!d--.3-3x<z?+=.S.;U{6sǭ-6{dwCz<__xvxc}.P =38n./ȱ-,: Al6;?;E/##lJ&(Z0<H AI҄#L2+))ī ,;"9#hv=3Iĥ@H`D3SΓt4l{AI4"mCtL9γ6HqCIì�JS=$4=AG*JUI&1cGca)V5k[H<5&2H1UM$T5VZVeCGwT. ZʻΠەսpYzl<Ԯ0'm_w1&I4Qj]]W%]* =\!M-/!|g[BJ! EU^ z8}+t-]ԝ_Ma7Q4g.Ni59Ie\8E\}Y+LS [td^7Dq%1$5l)j:P헦G=mRBV <%kju-1=Kt]GLIܭQYu>֤!VLg^c\8 EsZ:׼gҍSȔ[Kusr۟6UlAp] zBIbp[(o'S3{,u \(,!&*:ЎBHE aC%Bh[ a|'HJCXm 9PC}AQ"DXDIQ.&Dp@@� P8$ BaPd6DbQ8V-FcQv=HdR9$M'JeRd]/@@�������0�������0��������:�������������� ������� ������B����2��Z�������������������������*���������������������������(�������1���� ��R���������������dontlinkworkspaces.tif�� Imported from XPM image: dontlinkworkspaces.xpm�����������9H������H������ImageMagick�������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/noopaqueresize.tiff����������������������������������������������0000644�0001750�0001750�00000022462�13431646201�017634� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*�$�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ZZZ�������������������������������������������������������������������������������������������������������������������������8��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ɪǨ�����������������������������������������¤£��������������������������������������ϖ�������������������������������������������������������������������������������������������Êvv�����������������������������������������ll��������������������������������������__qeellぁ��������������������������������������������ssyYY}}j``^^�����������������������������������������������VVcWWzvvoRRii�����������������������������������������pptTTwssZPP|GGiixx}}��������������������������������������pp}__dYYtppdGGWWhhoooo]]~rrȐ��������������������������������������������ZNNvAA\\ddee]]uUU}qqrrǏ�����������������������������������������������iMMVVaa``YYyAA\PP{{~__xx�����������������������������������������mbbKK``bb]]NN]<<e``ZNNOOrrɑ��������������������������������������ddeeiibbUUn77B55E88r??\\llrrvvzzyy���yyyyss�����������������������������������������kkkkllaaPPZ77XSSZ88OO``ddffhhkkhh���|qqjj��������������������������������������������yy[[aaVV@@A++=00l55SS\\\\\\]]^^UUlLL}yy{\\qqee�����������������������������������������uiixEE//V--:00M,,HHVVXXWWVVTTKKi77I<<QEEKKjjssuuppSSmm��������������������������������������g]][AAPFFfbb^99NNVVUUSSRRJJh00F;;���a??VVffhhiillR��gg��������������������������������������������������������}}d@@Z����SSQQy��B��R22a]]���q99WW``````dd`��ZZyy�����������������������������������������bCCKKOORRPPGGd,,D88a]]Y99KKZZZZYYZZ]]eeffjj�����������������������������������������`UUbBBo88GGIIAAR22`\\H==m55QQXXWWUUUUXX``ff]]~~��������������������������������������WMM^??_;;W88I>>b^^Z::JJWWWWTTRRRRTT{��iieepp��������������������������������������~||rppMAAp88SSYYVVSSQQSSMMM��kktUU{qq�����������������������������������������{yybCCPP[[YYTTKKLLWW[55]==ZMMc\\�����������������������������������������������������������������������}FF[[_��T��HHf11������H@@�����������������������������������������x]]cc[[v??b>>Y<<KAAomm{zz��������������������������������������{jjmmsMMYNNyvv�����������������������������������������{{sggf``������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������000111��������������������������������111000000000000000000000000000111111111111111111000000//////...---,,,,,,------...//////000000000000000111111111111�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������0�������0�������$���������������� �@���$���������������������������@��������$������$������$���������(�������R�����������H������H����������/home/donamo/src/wmaker-crm/WPrefs.app/tiff/noopaquesresize.tif���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/whandling.tiff���������������������������������������������������0000644�0001750�0001750�00000003020�13431646201�016523� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*��� h!B &l"F%jK1�B &J$i�ԩ+p)2fʜ%kTibǍ-obEH[sD .R|KP\(U+ll6lI<mi a� C׎Iڕ0xP�hۚMkQg1S =\管gM:+,r6�v.aǮȋOh)'B: �9�l.reE6�=�?wc'-�.\" $3ŽpGh �҂8P/_YIQ� qy�#E YP"~ �x�#;.Pp:LX8�MQS ;\Dhdc `'#H<)A2,3#LJUH('A`�8@7m vThI&)s'A.9rv,,r6GA=E(BQ 1pS#*!bR�ج\c>K+ /R�*kHa1\Ԗ`i�`+Q&,#*h[Ӡj=Ušbd;{?,·i }�V[JGic(?NM1h1eAHG^קI�`m/Y>ٺXqڼgtܖ�6_JDXb)֦phluA!f\Y 9Ŗ_bw[sW}$; \-eY=}fU;jyAut/2�8m]O^x~8}T�# Un_{dNߧzy,�`5N>!nGOSs #F0|םZW^.rӐ?��x`s&*,0�+X}h0:B9lX&B+�@^x��)H>86f�ȏthā�Q� `6�P=�`>�P+Ty ��DZ�D!*w֗33.n 1 x>^ L|C;Iƨ'8A H(㟈$%&)\Dj I�!B &l"F ^�c@k &PN$@hK&mQ;n9"&I"U &ҠA48 *;yKW\jβy+T]n=�e5_i������0�������0����������������������� ������� �?������������������������������*����������������=�������R���������������/usr/local/misc/WindowMaker-cvs/WPrefs.app/tiff/whandling.tiff�������~��x�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/mousesettings.tiff�����������������������������������������������0000644�0001750�0001750�00000006676�13431646201�017505� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*� ��$h!B &l"F b)j 43 0.�M HℐC-9q@9$I(w -X (^XB(=g3,^rOb34nғO0a Hu4*RO~KSn`aE+*žS@7$y^!&]LY�2� _>B$.1|*G޵ ;N3adgjj3\:sƵúlX  3>۰jõ π �PmG-{glqVtL11M)ǀ(@-4@�d@,0$2@/*!T2|p�<]�x l8 4iH/x~xNUS$41=A02@�̩Z\Zh/.1RJD c̜t")ǀH@$@.GA3//,QYb<+4-I$Dfꡂ*@7ʳNŰk1ƒt\faRA%~Zi,3M\~a=:2�њI‰ tP@ Ƞ0U0O?+ Lh)B A5͌ٙУL}8Sn&!�%w[,dQXoj5m;Qչ[S02θ2J#(m؆JZ<3tS,6Fa n؄c0ȏt|2Gi9Γ:?ՙ|Nzh (yv. ѱ &[D:A10#Keʱ#Sa[&avnCv{LQA3xL d).զuB$4' .  �!/!~V0't 0!U3ᒆN�O9\xf ,#4"HGҕdہ` �6! 5p'!d�3\*mT'0Ѣ%@''/B)JPg<$  6�8WW 3XŒ谁%lp\�5(ԃ6@OsI2NqM25"^` +Ez<>0_ i`R?$L`Dd� ;05AUcj=xz^p7`K~78EIA,Ѓ`2R"[!la[$ sC@(# x3!̖!#)sJfe& /B� �{)8`:0»!LDaW N8 �x" ?W=j6k*=<еumZ2c*E(A1Jb8`q}j䪛a17f�;xsh7C|)rX:]$k�S9]L��/&F0QCab$ GP\Wx+^hӚc@PjGɓR'kF ֠ T 5I4lg, 9�@ym̒t&ĎJ ԁw5J&A‡t°Y@k�zF0$:" ! <B%Sj|18NAwFe)`<#1}d!Y�0 ЁR%�`$#t | 05Ls^ q "Nd:Nw$`z��PJ08|_:0a#&Ha8nzd%AR<$b)DP\1V"@@KF;@ґcA@>MTݴ%Uta�ݰ-O/BkvFm<@X2JQR`s@:@�uvic7 ! � d�j4"GrEfP匐Nd 8xD@\%0$I�PMs#"YΣM|rVG< _9 y\ ?** 4YȇR)˕V]5Su5ʸdHFq܁Y�{@?A6zFlc$> �,DLprMhrk.љZ-J8`3XݿEPׇ� ']L#0!id/~[j<]w^3Q%01&4`#A:ЋO~ -8@~ϒ&@Pp\KQ}-/ m_Vsx^ 3:%X%-{@6y`�`pc{i}9'm!sTsUe<`tHtjz6`6X3nD=K@fEDͷ@Wx!5 = |tF*؃ȃ|S%^v`v9T+{XЗ C6�  @LCXZ' `7UN Q$ <R+6ȅ,%S  v`v@TjEa�n WF0J9tc9 !![7w!<P2w#F:q GN`N>(cwS,7aT  E82w ؈x],|%hHDH,@P f^QJ%9@'ԷuQT25WΈu0HhȆ,fid@(@g@P4X�GQv{sCx S8O/ItF8Ձ|Ȇ�gvN~&!& 9J9b�QA`V)5cQNMd xKȶ* h6 7## <B/DPMPsB&= ac#Չ^<J#")hjZ0�ZoJ,A4BP(PuPj/8RԁTG}@r(ry0zg+p T!�n̲ʕCne=2jw1RN#a =Fxx_@~ I 7>QsuX$BO| |~uWsasXJ9HH+3L^ otJH_�p�F@^6{{~Tx]R*̒E&T+RR-5C}quˈVhVy,l/!9<~RGp�p +r-r/u������0�������0������� ���������������� ������� �*��� ���������������������������8������� ���������=��������������/home/largo/newWPicons/mousesettings.tiff�������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/msty2.tiff�������������������������������������������������������0000644�0001750�0001750�00000015040�13431646201�015633� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*�������������������������������������������������������������������������������������������������������������������������������������������MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM��������������������������MMM������������������������������������������������������������������������MMM������������������!ppp���������������MMM������������������������������������������������������������������������MMM���sss���sss������ 000"���������������MMM������������������������������������������������������������������������MMM���������������XXX퐐b���������������MMM������������������������������������������������������������������������MMM���sss���sss������퐐���������������MMM������������������������������������������������������������������������MMM������������������퐐���������������MMM���퐐���������������????_Ow7Wg'';[[K���dddPPP���������������?ϼWW;˼˼S==ͼU9ɼQQ~����LLLpppb���������������?ϼW;˼S=ͼUU9ɼQa~4����mb���������������?ϼW;;˼S=ͼU9ɼQa~����-PPP���������������?ϼW;˼SS=ͼͼU99ɼQa~����$$$͐"���������������_WW;˼S=ͼU9ɼQQa>~d����$$$͐"���������������~�~�~�~V�~�~&�~&�~�~z�~�~�~�~�~�~ �~�~R�~�~"�~"�~�~|�~�~�~�~�~L�~�~4�~�~d�~d����$$$000"���������������OOwg';[K ss���444000"���������������;˼SS=ͼU9ɼQa>μ~����,,,000"���������������;˼S=ͼU99ɼQaa>μ~����000"���������������;˼˼S==ͼU9ɼQQa>μμ~����000"���������������;˼S=ͼUU9ɼɼQa>μV~X����$$$͐"���������������;˼S=ͼU9ɼQa>>μVf~X����$$$͐"���������������O~&�~�~z�~�~�~�~�~�~ �~�~�~R�~�~"�~�~|�~|�~�~�~�~L�~�~�~4�~�~d�~�~�~�~�~X�~����$$$000"���������������wwg'';;[K sc#C���444000"���������������˼S=ͼU9ɼQa>μVf:~(����,,,000"���������������wS=ͼUU9ɼɼQa>>μVff:~����000"���������������SS=ͼͼU9ɼQa>μVVf:~p����000"���������������S=ͼU9ɼQaa>μVf:~p����$$$͐"���������������==ͼU9ɼQa>μμVf::ʼ~����$$$͐"���������������~�~�~�~ �~�~R�~�~�~"�~�~|�~�~�~�~�~L�~�~4�~�~d�~d�~�~�~�~X�~�~�~(�~�~p�~�~����$$$000"���������������g';[K scc#C=���444000"���������������=ͼͼU99ɼQaa>μVf:ʼʼR~����,,,000"���������������g=ͼU9ɼQQa>μμVf:ʼRb~@����000"���������������gͼU9ɼQa>μVf:ʼRbb~@����000"���������������'ͼU9ɼɼQa>>μVff:ʼRb~�����$$$͐"���������������ͼU99ɼQa>μVVf:ʼʼRb~�����͐"���������������~R�~�~"�~�~�~|�~�~�~�~L�~�~�~4�~�~d�~�~�~�~�~X�~�~(�~�~�~p�~�~�~�~@�~@�~��~�����DDDM"���������������������������������������������������������������������������������������������������������������������xxxU��������������������$$$-888888͸xxẍ́DDD$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$MDDDMxxxȾ�������������������� 4""""""""""""""""""""""""""""���H��������������������������������������������������������������������������������������������������������������������������������������������������������������������������(�������(����������������������� ������� � ������������������������������������3�����������������������������(�������R���������������msty2.tiff��Created with The GIMP����H������H���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/appearance.tiff��������������������������������������������������0000644�0001750�0001750�00000010520�13431646201�016652� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*�>�� h!B &l"F%jK1�B &J$i$~yIX%H%k9�� ;Oע#CL9K*]!�:L "�(�ԚUG�h]D=A �Jylܞ'�V-`Zu{N<tP�pQvm9ƵO�;`^u2Oټ%,pH@� #( yճ�\z`ۚ�hi`DE�@@��G<a^G#&.t�,�� `� T+ޤOyK87�`6}=,%m!�<7yi>y;-2_+5C0ÎWp�R r$Y~ax�.9�yJ'Ufjj/3�B:�@�>2(�`�r_.�xI n7s�`E6�`:*3ͼ$! $�ć%� ˁN|TnHJ^.Y (/́� d�D�v�@@Քo @y?@s�akc�v颴}T�@qA1ݷ�@Mm_Sy)~w a"e Yfm�EMk̓?ẁ Լ!- ΂]^tfA; x۝7gyhA= h}P͋kT/C3�Xbe�8Sp' nDͶ<vჷ<P/~OÁv6@ Ȁ\t]Na�8|Yą:<c6 f{TPARH}AP:bpG�X 2G(TP YK_IpMMa [O�FBE ܙ V'NЂlj#~YQ�z�d!��%�Iо rjtcy �/ 4)�EaBG86n8=laۓh <䠐M8hA&5_DG$ma@K_.?@o2 �L9�7��Ё1ƅ;0�\Ɩu7 BAT �(�hTf1�d#��XԐ P��+HCACS4%hGz{X<,bړnKNԓG84D�*�x Q73GN.�HO#0DQǰ3W daj[h@0Ёh$� �NG.0&7gBL @3�ulmR� h��f �8 V`Q~q7TVIF�`u,\ ��G89cU9)Ў3 2i%K_RşG}E_0jf@�3   ; 4hC0Ҋ�~ĩ%pݚZЋ�X VJ.R#~͌w* Ґ/�u%(@ (QX9�ğVюHQ# 0"Zb  61 LA32^oXS5!eM\D�2A"R �@`A'�hr;`+ CF^1X+�ᗧ3ns) | r:Y)S@\F_ш;�Ѕj̈Nwh %NR QXK dȏ0<Nx qUBbθȩЎk`"yS۔"�8@K( Q W35#; kFCPAQJ-.qE>\2GüԱR%mR(@R&i_ _�c@Vt ش�e(S�TJW7mYTI"[ Z ��7F_0h� �vyL8rpUKj"L_O>�9SR;Ov\.t&zXm3 F@-g�).XAԖ%9ҚXDVKalpT %pum";RBpCi"^sǐ}0@IH�Ox꾤ox\O\%p@�Vv2`G$#HHj2 4({Bñp"  @2PՀ7|ry3:&ZVŸWMPrhC (@g >�}WZ%?Ff$mppz[#5%*g.xqMGF^<@S�HN@QJH:4@A:nFP4Da&YM48c7�j#hPPjJ<ng5HW H'UB_UFe6Ra%x{f�e3^\= Ajw8e'oy"BS@ !?@j~j^?X`xp)�8N  2\�A0 pc$ jGc"8Svscq7@@�zxF5@ZHS,NhF҉U\:d@8xJg.dwff@{WAf:jyIsdJ$'\ ${�y;6aZG`ZFKR3�$xiW#`b%I@ep"` $5 �PT}G:W\o:&? {"wJwt(:f5:Q@&M MXCeXa/cjE#$!Rv`!XZxe @DR+?H@Ax7_U}&P4�<f*+�ǥt K@ Ag@a4cH&hD@V%�xДGS9YQa؇nˆr$4 f"@6VJ0Pb�$Lcxp`t@@P,4&�Gx�G,y~΂/R#̀OxC#Ag xW~�$$r W? W*dZpr-@@=hb:TV�T6P Jafq@d$EmxdfSSGj W8ctz�`8ï\RK҂/"'}G_ b y s�0R�t\䆄%$ߤΤB^)'_$Aւ7 R4MxC_Ԁ�uhQu I�!B 6H�B��8p5�O �A�ph/g/� �tb;q �0@��&;�D [.xV΋'�00�0s�+�[w.�x �h� \*�� f0~Cѳ}�.\:*S˶�Ө@ 4Ar da3ă¬~g,�,l�x]qo YNO�<N� �幝szUp0]bcv\_`Wx`�( 5Fy�- An9*,J ����*v0An5x�#sy\H BC~D昃d7�@R�H]U W?~"�0o~WZ<0,P]RhBU[8͹r�9 � @�$ 2(`;otyph`jz,XP:"77^g|�xMV?@�\FMY4'8wcw}By7{hx1n МO o[נV\R@n/h@`@+18D��TF_[`0۔Eߒ䚋,٣z�*B^T\T�w%~DC�om@dE}SېIOU�xk`+tXEЀ� �lqIx}__؅PB }O#ZOT\fMED> 8}3xy�������0�������0����������������������� ������� �@����������@��������������������*�������H���������=�������R���������������/usr/local/misc/WindowMaker-cvs/WPrefs.app/tiff/appearance.tiff���� �� ��]����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/smallwindow.tiff�������������������������������������������������0000644�0001750�0001750�00000000712�13431646201�017115� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*�����$� иd6 B,�Q&��0(^KG%Q#E`ylm Rto?DXGiLCdtVSժv]WeR-5?[u.ߣQ!bLd3������������������������������������ �������������������������������������������������)�������=�������>������?������R������������ ףzT�L�ff&(\ P�X9T������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/speed1s.tiff�����������������������������������������������������0000644�0001750�0001750�00000000756�13431646201�016131� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������MM�*���� P8$ BaPd6DbQ8V-FcQv=HdR9$M'JeR�K3 te5s>O`Sj6P(ty"E)*K"*^VhMrbj$2jYtl:`bNްX<& bqXf7������������������������������������ ������� ���� ������'����������������������������N����������������������������(�������1���� ��R���������������speed1s.tif� Imported from XPM image: speed1s.xpm��H������H������ImageMagick�������������������WindowMaker-0.95.9/WPrefs.app/tiff/clip.tiff��������������������������������������������������������0000644�0001750�0001750�00000022430�13431646201�015505� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*�$������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������333333333333333333333333333333333333333333333333333333333333333333��������������������������������������������������������������������������������������������������������333MMMMMMeee%%%iii)))\\\��������������������������������������������������������������������������������������������������������333MMMeee%%%iii)))aaa\\\��������������������������������������������������������������������������������������������������������333eee%%%iii)))aaa!!!\\\��������������������������������������������������������������������������������������������������������333))) 111QQQaaa!!!VVV!!!\\\��������������������������������������������������������������������������������������������������������333eee;;;+++sssKKKZZZ\\\��������������������������������������������������������������������������������������������������������333eee%%%J<2 <d DxxdYY\\\��������������������������������������������������������������������������������������������������������333eee%%%eeҒb"Z���D8$\\\��������������������������������������������������������������������������������������������������������333%%%eb:Bj$ lll4di\\\��������������������������������������������������������������������������������������������������������333kkk%%"BTl???CCCXXD()***nnn\\\��������������������������������������������������������������������������������������������������������333+++EEE\$--mhII)333nnn...\\\��������������������������������������������������������������������������������������������������������333KKK<*F f:&JZ::FbBISSS...\\\��������������������������������������������������������������������������������������������������������333iiiyy\A1f.&>>Ff  \\\��������������������������������������������������������������������������������������������������������333iii)))..N^vvn6֎&&FFfzjj555ccc\\\��������������������������������������������������������������������������������������������������������333iii)));;;[[[+++KKK333ccc###CCC\\\��������������������������������������������������������������������������������������������������������333)))########################ZZZ\\\��������������������������������������������������������������������������������������������������������333 &&&666fff\\\��������������������������������������������������������������������������������������������������������333aaannnYYYYYYYYYYYYYYYYYYJJJ666fff&&&\\\��������������������������������������������������������������������������������������������������������333aaa!!!^^^rrr222RRRfff&&&\\\��������������������������������������������������������������������������������������������������������333aaa!!!nnn...fff&&&\\\��������������������������������������������������������������������������������������������������������333aaa!!!nnn...fff&&&\\\��������������������������������������������������������������������������������������������������������333aaa!!!nnn...fff&&&\\\��������������������������������������������������������������������������������������������������������333\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\����������������������������������������������������333333333333333333333333333333333333333333333333333333333333333333333333333333333\\\333333333333333333333333333333333333333333333333333333333333iii)))\\\333MMMMMMeee%%%)))\\\333MMMMMMeee%%%iii)))aaa\\\333MMM���eee%%%iiinnnaaa\\\333MMMeee%%%iii)))aaa!!!\\\333���eee%%%iii)))YYYaaa!!!\\\333iii%%%iiiiii)))aaa!!!\\\333���eee%%%iii)))nnn%aaa!!!\\\333jjjZZʪ&&&&&&fff^^I)eS3gSg5uQ^^..\\\333eee%%%iiiqqqa)QAA!9i\\\333eeeAaq.!mmK7K+kwK7ݽ;::F\\\333eee%%%iii1 afff\\\333eee%%% .ijvN!.anUUq)IU+%%scfn!m::F\\\333eee%%%iii>>IV>fVV֖ FFF\\\333eee%%%FFFYCCCSSS k)ɽEm>=Z\\\333%%%ޞ>IQ:::ff&f333%%%&&&y>a~~~NNN>>>qqquy9EAvQQZnnn\\\333qqq!aiN���^^^NN333~### 6~+IIv~>=znnn...\\\333aaaɱIQ)VRRR������n^N***nnn...\\\3339E5yQQQQQQYYYE3EcQjj:...\\\333~~EqFF���������rrrfffnnn...\\\333fffyuIII6n&ZQ^"^6ZZAa\\\333޾%9!!222������������...\\\333iiifffAiA1SWg''IM^>.Vv~ ʚ\\\333iiiMe^nJJJJJ~~~���������NNN\\\333iii)))ZB"vJ*riq1qqNv4Tl||*9~ \\\333iii)))޾ޞI9���...\\\333iii)))%u2f6=qtF!-*nDTEza\\\!!!^ffQQ������\\\333)))em6:Z:,zZ4<~!ABZhhbF1R,ffffff\\\FFF~>>!Qzzzjjj666fff\\\3335I >>>vvvޞ5>u|lffffff&&&\\\333EEECCC>RRRnnn...fff&&&\\\333 bFF,X l"fff&&&\\\333YYYVVVfff...&&&fff&&&\\\333}}}['M'''gggzzzBLL\FFFfff&&&\\\333RRRfff&&&\\\333aaa!!!nnn...nnn...fff&&&\\\333aaa!!!|||fff&&&\\\333aaa!!!nnn......fff&&&\\\333aaa!!!qqq\\\nnn...fff&&&\\\333aaa!!!nnn...\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\333\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\333\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\������0�������0�������$���������������� ������� �'���$������$������%��������������������*�������%���������R���������������/usr/home/fatal/newprefs/clipdone.tiff��Created with The GIMP��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/speed4.tiff������������������������������������������������������0000644�0001750�0001750�00000000654�13431646201�015746� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*����� $h!B &l"F%j1bƊ'n &J$i)R1^^eH>cLiȝ=k y ͜+_ �P*Gl*.[B媡W*_NrE+U)R~իݰZݶ[uh֤eҩG>֫:v&&cO5ψfΚ=g .Zd������������������������������������� ������� � ������������������������������������U�����������������R���������������speed4.tif��created with The GIMP�������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/keyboardprefs.tiff�����������������������������������������������0000644�0001750�0001750�00000015776�13431646201�017435� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*������������������������������������������������������������������������������������������������������������������������������������������������֖���.NqѥeE!>&zjZɉ1a)qE9y96*&:jZ*vYiI%Y)y)Iy  V&*f:憺~9Y%YY!^???��� >[ 3Ks{3WG]\L2MVځݝGs3{S[yI1,4lLR"ގK[+gk닳V$B<Lj2uG;KgkkkkG#???���ƚj!NKs'sg3}\,| "V*USW%T"Z 6'sScS3 3ǻ!d&2g{;cû#;#Gs3Sjj???���^ֵ٩'Ӈo'G3F!^Ziaaӝ˧3;ホ÷M,VVjsGK3;C;C[c;3cّ!\Eqֆa~;S##{ssSj???���E);3kGs/G3.jΚKsS[˧3c;C;ӣgu|lj KsS˳;C;CC[SG{y||Yj[c};???���y) k#sc#Gs{cJby^z*k;3{##ûUeb\ "Ksӗ{#ûSC{Yb| 6NV;KS#[c#SV???���)#˳˳ k ~9>Fcg'g K+'sǫ #B~ΚJ+w;'sG3  3קY)iN;˧SSS{sKs+>N???���) S k kkSR:afZEk S++sS+SS+3닳%\, f:>Zrks+SK+Ӊa"\uinV&C+KsKSKsSK+ CnN???���ZʒJZbZ"*fzJ f ZafZr<ܲ*rBf: |< f^f:<:^ʆZrNz,UIanvƪ&J2b2ܒ ҆J???���FZJV*zֺJvz:jqֆ2|Jܪ2|R2R<za6Vjz*bZ"\RJ\溊^N>N~NJ\t" B|,¼*|^???���ZZN&*: :*Z"|Fjf:~&>v.ڶJvʲ|*|nf:"|\tNnz6޶F^F2BrjR|*.vFr "r"JrBJRr*I???���*qQvFVvF6FNf֖ʞ^ֆv&vJJ2VR|<zJV>&nzfZRb<ₜ""B2Nֆ B2ZJ* R 2"L"1a???���a~N c3[s;kK۫K;kˋ^vfn溾#[+S+SsS 33#~n6f޶F&q!#SKSS +ý z* R|N&5Qq>>}???���*3}퉾+Scg+ dz ;Ar*.;˗+ 3 3 3GӧKfDL:⹉G{W7++7w{۫trb\zc9ىqq???���:!..zeQ[C={C##{q~b̮V& g+;cC;cC{[F:*ZJrIaǻ{#{#;cCsSKsS8X 2FZyI^uuYI???���:ζK3]EY{[#;#燻L ގkӣ ;cۣccsVܬ%aA^G;3[c;C[c3+ $D8:j 2Bz*с".Zޖ???���v&:fzʛ+Wk'3S;;Y!̴6ڪqvkӣ;c#ۣ#;Sǻn q*3ۣC[c[c3c;kKF$* | )f6>???���zFZKs'󻓣;ÛC[S#W{%iq ўvCכkcSû;{ 31ނU)Q6ƻ+Gsc[[c{sS[k4 R*E-1)QY???���.VFJsۗۗ{;빉"v G;{GG;^Y:n&닳;7' 3Gӗ+{[+ގ,$J"Jr*b%C%m9 Mi???���.6FbI)eى9Iy))evjBJbᮖv*ia>Qi)Q%q59 B|Yz%S]ksSk#5 TJ"2|AfA^vFan???���JZrJ"|2Z2:rB6:JF*\VzJ* šr22|JJ|y~QvzJ*<JFZZr*|fFǯڪz*\|<<ޮV???���fƚ..fVڞ:nf:ֆb|ƞVΦZ.ڞֺ^ֺV:n暞ڞ:V^vjvF6*z*j&>vfv&TZ*JR|􄜜&???���ڪjҦ26Nj6Ʈ:Fjz*\Lt:jR6zJƪ6VzvFj*LZJ&Vʶ*nznVΖ:n6nFL,LdB,€bܜ4TxLL*???���)ѡEmͥyN&ZnzvF.cmu5i ]幝UEU9Zn:>FNގ#EY%ٽ5%yuVz*f&Y!>Y!^AfΖv&Aƚֺ*j???���U'kO۫fn>vzI;{WG{w{;';k>.fZ~)!ާk7w7' nVn6ֆCE#YE9]}???���Yi+ KsjDrzYA;{[cCC{+4DJZrގ[{㛣C#[#{KsS"<, $2bZ2EQ Mqi1-iqiq )%???���ũ ˽G3+ Fj ĸ:)aGۓ#C[##}S;kKVƚ^v{{cCC=KsJRxXh¼RzMiqI^~i~!މN%Q???���EI]''lt .f[k;Sc}[##C;G;ގ\LU!&ֆ;kcC[}[}=[cC>VDJ2 ҼUqɞN~Fq.FnFF^???��� }]'K'{[>{+c[[###;;a΂ F6+cC}[}=c;ydr*b VuQ!~9y>9A^!???���cC+{[NB\Lq.6!v[kG3GӇ {sKs{qœ,Unf6ƚ[sˇ3㻓gG ٌ4TbܺuQ#MY 1)5ɑu5ᝅY???���I3cCSQN9.FcCKsk3k3k3 3Kc^vœEQv6C5 k 3ӫ 3ӫ 3+ATdœ22Em M)эc9cCř#EYyu???��� fZVz.:ޖz*n1r& ƚj2&*"t*nFj&j22Frv& $"2 ҂*rJbBRanVɁn1!???���z.ZΦ>nVB,Jb!VnVz&6**jF6F>L$|6޶.f:Fvj*zjVܬzjZJbjrb*JRb\Ң",B̂L???���F:jvjNnf:DLj: ZZڊN&nz6FΖ.V ,f.溮nn溮f:..\4*ZJ:**:*:JZJꊢ r "J.???���Ζ6ўNq~rr.vV!66zJ^fVBnQvfNNANfZ溊:2b:b:**:*:R*2:jRN6???���K3{+[kk{+{+++S}>v6V])maIa55ᕉ 5Չa )Yqr<jF2RRRRꒆ>.???���y1˃{33333sSsSsӇsӇ ; n61vzֆىU U1%с%1%1%1%%1%1e!Y EQ~R*ZZr:FZ Z*FZ :ZrZ.6???��� [ۣ;CCC;[#ۣ#[c+ӒBDX4쬔F!&A& ~%AE~MTؘ \\\\ܜ\Z???���9 =mc;cCcccc[[[[3 Ӓ<H\,4FjRűA&Q%Q5itU)KS+Ã+##++}=][ӓ???���Y Qsmۣ;C;C;C;C;C;C;Cۣ[#{cKbؘh2bj=ɍE~Q>>)QCy\tMw;'Ggggg???���9)˃=3{3{3{3{3{3{3{3{3{c+ *XbܺZii-ɑqU 5U U !UUq! amɃ5eR"T3G'3'''3k???���YkSk;۫۫;k;kk'kxؘ:* A> >EىiͩMi1ͩ1YI#e9ey1vBl9G;#C#Cç???���ގV !i~鑾鑾鑾鑾鑾~AAY!C5ev8lfJrl|<tLʲ|2Rb\b\< BR|"\Td$);cGSGC=GCǓ#K???���:FZFZFZFZFZFZFZFZFNڎƺN&:*jª Br2ҼҼ2|||r2< R|ʲzRF:d^kSGc݇CGCGg#K???���fzV!ζ!ζ!ζ!ζ!ζ!ζζζζ!ζ. !4<4zڪZ"Zʢ B BZJZJZJJJJZʢ2:$FGsǓ'c'' ???���YQ!yyyyyṱٱ9ٱṱ1aEѵYIrRrn66:6z6z6:6zz:ڶڶڶ:NBVƇ/;[[[;G???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????������0�������0����������������������� ������� �+������������������������������������8������������������������/usr/home/fatal/newprefs/keyshortcuts.tiff��Created with The GIMP���WindowMaker-0.95.9/WPrefs.app/tiff/nextstyle.tiff���������������������������������������������������0000644�0001750�0001750�00000007644�13431646201�016627� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*�X��ttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuttttttttttttttttttttttttttttttttt���""""""""""""""""""""""""""""""""""""""""""""""""""""""&&&&&&&&&&&&&&&&&&&&&(((&&&(((&&&&&&&&&&&&&&&&&&&&&&&&���""""""""""""""""""""""""""""""""""""""""""""""""""""""&&&&&&&&&&&&&&&&&&&&&&&&((((((((((((((((((((((((((((((���""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""((((((���""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""((((((""""""""""""""""""""""""""""""""""""""""""""""""""""""&&&"""������������������������������������(((((((((""""""""""""""""""""""""""""""""""""""""""""""""""""""&&&"""������(((((((((""""""""""""""""""""""""""""""""""""""""""""""""""""""&&&"""���ͤ141���(((((((((""""""""""""""""""""""""""""""""""""""""""""""""""""""&&&"""���)()椥A@9���(((((((((""""""""""""""""""""""""""""""""""""""""""""""""""""""&&&"""���),)մ10)ޤ���(((((((((""""""""""""""""""""""""""""""""""""""""""""""""""""""&&&"""���)()Ŕ���(((((((((""""""""""""""""""""""""""""""""""""""""""""""""""""""&&&"""��� Ť���(((((((((""""""""""""""""""""""""""""""""""""""""""""""""""""""&&&"""���ޔ $ ͽ smsjus{���(((((((((""""""""""""""""""""""""""""""""""""""""""""""""""""""&&&"""��� ()ޤ ZUR{u{���(((((((((""""""""""""""""""""""""""""""""""""""""""""""""""""""&&&"""���9<A՜jmj���(((((((((""""""""""""""""""""""""""""""""""""""""""""""""""""""&&&"""���suj}���(((((((((""""""""""""""""""""""""""""""""""""""""""""""""""""""&&&"""������������������������������������(((((((((""""""""""""""""""""""""""""""""""""""""""""""""""""""&&&"""(((((((((""""""""""""""""""""""""""""""""""""""""""""""""""""""&&&&&&&&&&&&&&&&&&&&&&&&&&&(((((((((((((((((((((((((((""""""""""""""""""""""""""""""""""""""""""""""""""""""&&&&&&&&&&&&&&&&&&&&&(((&&&(((((((((((((((((((((((((((���������������������������������������������������������������������������������������������������������������������������SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS�������������������������������������������������������������������������������������������������������������������������������������%�������!�������*���������������� �N���0������~���������������������������@�������O���������������������(��������������/exports/home/wettoad/Coding/WM-0.80.0-patched/WPrefs.app/tiff/nextstyle.tiff�Created with The GIMP����H������H�����������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/menuprefs.tiff���������������������������������������������������0000644�0001750�0001750�00000002040�13431646201�016555� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*��� h!B &l"F%jK1�B &J$i�ԩ+p)2fʜ%kTibǍ-oBH'}%J&)Xp]JB*�5 � I|E� [6©-�� r7�zp@<$uڸh`*T88-Zy �4�gN^c3 ͝aD #Y @N]l 0+3..lTaY81�0Op~fyH{xБG"@]=�$]]zym/CC շD/>&~B(LR7P"/� LF+@ D B�P$!pD M0Š@BLĈ�$ب$" c¸cc?N)Mp<7(߄"MX+0PtI>%RNJ$ԋ_du-K_ S8L\NM:ݰ1ԃKSt�|EMrM;<E 8Фs7,)E+ȩ0ld8rR ܪȪjתBr*RB,ˮj.Lƅ8bhjE0R*lOiVvZL.jj N驡jͳ7ߘz)ck#Alp;HA~ƺ~G=f\ pn:XIr I�!B &l"F%j1"S'@ 4AL$i)R7~2fʜ%k4͐-oBH`%W*F ������0�������0����������������������� ������� �?�����������������������������*����������������=�������R���������������/usr/local/misc/WindowMaker-cvs/WPrefs.app/tiff/menuprefs.tiff���������_���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/dockclipdrawersection.tiff���������������������������������������0000644�0001750�0001750�00000010134�13431646201�021136� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*� ��DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDzttpDDDDDDDDDDDDDDDDDDDDDDDzzDDDDDDDDDDDDDDDDDDDDDDDyZZZazzzDDDDDDDDDDDDDDDDDDDDDDDK pzttpDDDDDDDDDDDDDDDDDDDDDDD ``ippDDDDDDDDDDDDDDDDDDDDDDD qllDDDDDDDDDDDDDDDDDDDDDDD liDDDDDDDDDDDDDDDDDDDDDDDziiDDDDDDDDDDDDDDDDDDDDDDDB!``DDDDDDDDDDDDDDDDDDDDDDDB?`]DDDDDDDDDDDDDDDDDDDDDDDB(*'2*?]]DDDDDDDDDDDDDDDDDDDDDDDB 8]TDDDDDDDDDDDDDDDDDDDDDDD< RRDDDDDDDDDDDDDDDDDDDDDDDy RRDDDDDDDDDDDDDDDDDDDDDDD󏏛) RLDDDDDDDDDDDDDDDDDDDDDDDH2'2LEDDDDDDDDDDDDDDDDDDDDDDD7G(ECDDDDDDDDDDDDDDDDDDDDDDD3;;@@DDDDDDDDDDDDDDDDDDDDDDDzi77731-)#%)---))0@@DDDDDDDDDDDDDDDDDDDDDDDzzzztppiii`]]RRPLE@@@DDDDDDDDDDDDDDDDDDDDDDDtzttlli``]]TRRLEC@@==ccccccccccccc__c______S.zE@@RzziH7z@zz/!zLzzt%#`E ytt{upiĹuppΑI<o]ي~oll{e<B?p A|soii,$)VBZ`ilɿ:rse``xH($1HO7a<``ɷŷ:nse``t<$%B`aw63]]vɿķ:rhe]]x.$/QizZ8/7]]vɷ^Ū:b^[]]ܫx$(<]iwd7$1BTTavɿ~ѡ:bUYRR×1$.Qii}k)$/BRRRQmɿ:U^[RRiث)%7a]BX#%7QRRRR ۩:b^[RR B(BiaO-$/BRRRRPP MFFF>999555b^NPLk3QH$%7RRRRRLLL s~rfg\JLLi1aϴo/$/BRRRRTLEEC 􃆀pllqej]]RWWJECC"LxN$(7H]]RRR RC@C 􀃀ztplli``]]RRRLEC@@&0-//! B1)#))zztplli``]]RRRLEC@@@&4t#ti@ = `@zzztplii`]]TRRLLE@@==zCBiR`7R1R0E))%zttpli``]]RRPLE@@@   ���������������0�������0������������������������ �S��� ������: ���������������������������@�������� ������L ������T ���������(�������@����\ ������/home/daniel/WindowMaker/git/wmaker-crm/WPrefs.app/tiff/dockclipdrawersection.tiff��Created with GIMP����`������`������� ## """"%%%%''))++++--0022//447788<<99==@@BB??BBEEFFFFJJCCHHMMMMKKPPQQSSRRllOOWWZZooll]][[XXrr__[[rr``]]^^__zzdddd^^^^aaaa||ggjjccggeeffggrrrrppiikkoo}}jjkkmmppnnyyttoo}}vvqqooxxsszzuu{{tt}}zzxxwwzz||{{~~žǽ˻ϵ !!$$$$##$$%%((((++--..000033555599::==>>>>BBCCDDCCFFHHHHJJIIKKMMNNPPSSTTUUVVWWWWXXYY[[[[[[\\]]]]__aa``aabbcccceeddffeeffeeeeeeddgggghhiikkmmiilljjmmllllnnnnppooppqqssqqpprruuuuttssssssuuvvxxvvwwwwyyyyyyyy{{yyyy{{||zz||yy~~~~~~}}}}��  !!$$&&$$&&!!++''--//++33**66884455==88AA==JJFFAAKKPPAAFFOOEEKKQQQQOOVV\\YYQQ]]cc^^``\\YYddjj aalliioo{{qq''ccmmmmxxhhrr))hhnnttppvvyyooWWttppuupp;;||$$zz vvvv//gg%%zzrr--33}}22??zz>>kk99qq,,%%44//uuNN2233,,yy44MM;;==66}}7711EE11;;<<qq>>MMSSCC??AAnnhhkknniiooͽ{{獍������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/msty1.tiff�������������������������������������������������������0000644�0001750�0001750�00000015120�13431646201�015631� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*�������������������������������������������������������������������������������������������������������������������������������������������MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM��������������������������MMM������������������������������������������������������������������������MMM������������������!ppp���������������MMM������������������������������������������������������������������������MMM���sss���sss������ 000"���������������MMM������������������������������������������������������������������������MMM���������������XXX퐐b���������������MMM������������������������������������������������������������������������MMM���sss���sss������퐐���������������MMM������������������������������������������������������������������������MMM������������������퐐���������������MMM���퐐���������������WWg;���dddPPP���������������SSSSSSSSSSSSSSSSSS=ͼU9ɼQ~����LLLpppb���������������SSSSSSSSSSSS=ͼU9ɼQa>μV~X����mb���������������SSSSSS=ͼU9ɼQa>μVf:ʼ~����-PPP���������������=ͼU9ɼQa>μVf:ʼbb~����$$$͐"���������������9ɼQa>μVf:ʼbbR:~����$$$͐"���������������~L�~�~�~d�~�~�~�~X�~�~(�~�~p�~�~�~@�~��~��~�@~�~�~�~�p~�~�(~�~�~�~�~�~�~�~����$$$000"���������������g;���444000"���������������SSSSSSSSSSSSSSSSSS=ͼU9ɼQ~����,,,000"���������������SSSSSSSSSSSS=ͼU9ɼQa>μV~X����000"���������������SSSSSS=ͼU9ɼQa>μVf:ʼ~����000"���������������=ͼU9ɼQa>μVf:ʼbb~����$$$͐"���������������9ɼQa>μVf:ʼbbR:~����$$$͐"���������������~L�~�~�~d�~�~�~�~X�~�~(�~�~p�~�~�~@�~��~��~�@~�~�~�~�p~�~�(~�~�~�~�~�~�~�~����$$$000"���������������g;���444000"���������������SSSSSSSSSSSSSSSSSS=ͼU9ɼQ~����,,,000"���������������SSSSSSSSSSSS=ͼU9ɼQa>μV~X����000"���������������SSSSSS=ͼU9ɼQa>μVf:ʼ~����000"���������������=ͼU9ɼQa>μVf:ʼbb~����$$$͐"���������������9ɼQa>μVf:ʼbbR:~����$$$͐"���������������~L�~�~�~d�~�~�~�~X�~�~(�~�~p�~�~�~@�~��~��~�@~�~�~�~�p~�~�(~�~�~�~�~�~�~�~����$$$000"���������������g;���444000"���������������SSSSSSSSSSSSSSSSSS=ͼU9ɼQ~����,,,000"���������������SSSSSSSSSSSS=ͼU9ɼQa>μV~X����000"���������������SSSSSS=ͼU9ɼQa>μVf:ʼ~����000"���������������=ͼU9ɼQa>μVf:ʼbb~����$$$͐"���������������9ɼQa>μVf:ʼbbR:~����͐"���������������~L�~�~�~d�~�~�~�~X�~�~(�~�~p�~�~�~@�~��~��~�@~�~�~�~�p~�~�(~�~�~�~�~�~�~�~����DDDM"���������������������������������������������������������������������������������������������������������������������xxxU��������������������$$$-888888͸xxẍ́DDD$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$MDDDMxxxȾ�������������������� 4""""""""""""""""""""""""""""���H��������������������������������������������������������������������������������������������������������������������������������������������������������������������������(�������(����������������������� ������� �<���������*���������������������������3��������������@������H���������(�������R���������������/home/id/development/WindowMaker/WPrefs.app/tiff/msty1.tiff�Created with The GIMP����H������H���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/newstyle.tiff����������������������������������������������������0000644�0001750�0001750�00000001722�13431646201�016431� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*���KA &DCE I:�1"G !nx\O'I�#K*Mjdi3Ϙ%st92<o!*57Y(YrV*]tE ը]n,^r[Zr*ڔެN5{WIeJjSF66^7g 5{SǏkRf,zP6b;j/+b{X;͡Cs7/Xyf_ݍ|?n˶]tȭCG3Ľ?z<ÕW?8CK{ ڦu71` 1p߃', 0�}q)C+ 7⨭0 +4dO/»bHv`kWέ=Ĝהr$M$T6=dc '8Q?|0=,s l30 ĺ5-00 װH.⋒M(,ݫЂluʍV*1*jZ먾Zꮽ:k!m&iof[h[i6i[T:i;oN趫Z{裷>hUGy(By~GaGiQw1 '`j뙶~gfJwXЫ&pXr#[\fWYh9VXuqmT_wWZM�������'�������!����������������������� ������� �������������������������������������4����������������R���������������newstyle.tiff�created with The GIMP�����������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/timer4s.tiff�����������������������������������������������������0000644�0001750�0001750�00000001132�13431646201�016141� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������MM�*��� P8$ BaPd6q(PD#Q}=#MC$r)f)%q9g/Y$GD┚%6.ƣVEEsJ_R4%.8%rbX;\J^i -Nd7%^ㇾ)x*{ \W$;dr,M/\)=&VрXL֗9G5zK6unw_Ww{ͶǸnxn6wr Kr[>i9IA?i������������������������������������ ������� ���� �� ����'����������������������������U��������������>������F�������(�������1���� ��NR���������������timer4s.tif� Imported from XPM image: timer4s.xpm��H������H������ImageMagick���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/speed3.tiff������������������������������������������������������0000644�0001750�0001750�00000000626�13431646201�015744� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*����� $h!B &l"F%j1bƊ'n &J$i)RG ieL8sYeϔ#sIe[p9_:rIWL咥V>vRի֪Tq oVh:ZWSm:.nz78K#F=f&N<eB@��������������������l���������������� ������� � ���t���������������������������������U�����������������R���������������speed3.tif��created with The GIMP�����������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/smooth.tiff������������������������������������������������������0000644�0001750�0001750�00000004142�13431646201�016067� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*�R��1, a +-` ; AL�a ” 3炒 ?$xYH06pĀ 6@$TdiEK$z:@01!@�!J6=a1 H(Bl8x@FK}�فX#]X@&@2=P! KT! ND".ZPq0%lg;0DBD>s0�0&MAP)rFJT`,@ qaDH80�V S``GK�fӡE< s`0rmtpG߀F`AP6 @@XvXS 0(Q� � %@C0NԁI`D8XP GPPeMaB!1 QQ`CX!@蒁%G �hPD 06KA p1Yl@Aܱ� &�E@GP!@ `Fd�S�E`p��rpyF 3P9�Dsks`B X%~k@�WҽV AHH�eE� q Q`d� E `C  @aU N�VZu[1`8P"�!�!NUE@Lıe S L@Gdq��Ỳ%@R ^A>�>p$1B� !CP1uPD1 IF '��=&� E`FdhkK�1�NLd<-[r.a,�|@ؐ h[qK=�w^���QBR3�A^B/� ��₃$L�\Ph +X))Q# P@`�0X0 h! x@a HD``�b0(` (@  $��!�Z�4ء萂5`萁,B> }@ >!E -@!;�H {� 8 k2� *p:ThP+ wA.�C(C�@ϱ L�h�AVL@WAH001GBN�*\  p� Ѕ&h* A<0`PR >@C*5x�P4f3�W�C�"7�A .3tvjԄ�4B5.y�ŵ`z8�D^5 Հ*\ r�( hFK_Zh *$l jA �l]WF�J [*@P�w�@�JtYP ��.'Slyx ` � V_0 Rz"g \`9�@�O-�0 P' ]lTC�@-� g�@P'� p\@h �XS�d �| ` VH�c {U8Z�88@��$�HxK.;L D-af�@.�4a۩jP@ [M8z j,`� 8�<`&XcYR):\:m$F l*N>�TP)  ���\@�������������������������������������� ������� �E���������L���������������������������q�������I����������������/home/avatar/Devel/WM/WindowMaker/cvs/wm/WPrefs.app/tiff/smooth.tiff��created with The GIMP�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/fonts.tiff�������������������������������������������������������0000644�0001750�0001750�00000004710�13431646201�015710� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*�z�� O BaPd6DbQ8V ӌ� BtHdR9$M'�e= LfS9 *F}?Bg侃GRd9OThR$aOU*M �!$R.T Svh� =OkjՂ>:m�M* H|So&]* � _2eP#^ n=: e2ى͢8 Г �N)Qkh퉏P,G>VC!H \I-e0�NyBlzf  X�OBJ ��z�A|c@JZ ۼ̷2 P\)0~,ܨőt`DBT*,TtJ!(�Gy� j�&LBUr"3M�`dDL$ m � A@aq ^^NޯTf`�J& ܦ�`�& 3+6�MQU�$�N 04�:��a�aXX�.v  Q<XX0aC@qEU{�7h�~�yWXz-d_h84 ��li(6W贻X�h����pG�6�Ęp">rMM~t'@�x'�|h�례w'!v0��cհ@sg APX�(�'�@`G8�k.SrZ&lGY�gyUj)@È!0? !à56mx(Fl� "�r2p�OW[տ wf�l} | ( * � hV[(<ua(Ih:XAx+u`>! ~xz\�{AP�9(�Xk`�  5���TK"L�0%�9F"<oq�6X,W`vH M�^ A{x FIpn�%>GB5` FGy aD ̄Fq�5�qx*=㙄T �5� *0F5�` 5`p ɂbD>��+ 5�>@HLv|�r:p/ U!vob" #]Qp1�34qW�� I&, ��CH�M1?R [|C(] x8%0#� q2S,xHf[spO�k: }*.v*}<ZyO<%B}RRMMǘp}ρg K j �Q$@:�悃,���1D�@z.LT V�:xn ѹM$ @O%Z@F�X)�m諘 }((�upc3}fϓ>^ 0c%Bh [jo1Gct1.('A'�n >&1'3fIDpǚm^\H8d%∂!~F)D�RY}( !, bH$ a t}&@A��k ɽQD% .W-f:@ �tQ.)]Fcniȶ{On@@콸9H1@t I1#b݇R/apH%9(ƌ5VIOYp`@!@+@w!H$Ay@X+Z[Kh�;I vWbOD�qO|i3QR-Ypyܷ]HF&"`9y$tBpP `��]wUqy(f槶@I{(| @Q�+qPqMvX{}�O��j9!>y[ Б~0Ek�x_T! $ ?��>+Mz 9#݈U6K̨C^wҸ@@����������������0�������0�������d ���������������� �6���l ������ ���������������������������@�������q������ ������ ���������(�������=�������R���������������/home/dan/work/WindowMaker/WPrefs.app/tiff/fonts.tiff�created with The GIMP����H������H�����������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/configs.tiff�����������������������������������������������������0000644�0001750�0001750�00000010154�13431646201�016206� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*��� h!B &l"F%jK1�B%J&J$*hPo9i"* l%k9Q=�G�y >Z!(=�,�9�`D�*T��J!Sl;Fh@ 9sv;oBϞ]�p*�l'�0 C'� v�& 1� @�bĘ�@7}qFv�V@j=;pH~<$JN�t,oJZ3�_�b]_f9mwߵ'i�ǜpRTu^?C�襗6� I><Dp�t�DRkx"niv� (;H}p �TС�A�Xa4 3 Mc=���q�^y%ش8N QDžA5T*j;rD牧c~�0"ʹM_<�0�("3 A:|ί  @묹!R+=0-n�Gdd "x�R�(/;Ÿ zfyt HoN��F۫s7@E\.E<R# { DH-~.XoF��01jr)lNv,ZB' A �2?fZ]wFZpx�c+T d!>NZ �@` QD@`>JLk@N�mYc#`>;ejuObkQp/-܌Iddy0p�)=^M�@9�j!(/a+vYnoV~x``WP!QAfQPlK#FdX%(A7lO;ϻsO0aCQ<7u?8+.a چ,� 90l@{#8BrțRꄇlDz3qPS=uڃ5DPpD&0�!OA~}ࡃEZV�/�WCJl1H4 �<� � ,B,�p8D=HB [Dij'E mC<$(U.:ܰ4+2Fg4@9�0��]VTǑP$q�? HG:R�]kZKt wzlpkVE4�,�"Ԡ��@(2�^��. ���^E�V|LJ#5is<Y JFq �]eD\B7$؊)#j9 +ը?{�(+㛮 G\ddJH"Ţ �_(�/x & �If �7�k4�@ P ppմj��Pj�(sG�$gRG݉|3p(DԖ$RuL��K)��\.jc�0E{9;".�mlc�N$��("D@ppXi�Z0a|^bHD^я>+j @�A(4Mx7lL� Xb$SxDF4!m/["ӏR _x=DTJ@ U͛Ʊ-,X��0 c S~�+�`'TbǗ(FCɉ2TuпzK0~(��$ _iGpVb6 ��x N5 CMR5Z8aH\AP*= UhF)Q u-~KR�;.hB+e01�PCw$Aswы>�ZP>�4a+0q�XF`0K>/@(lmќNP3�l{>�βHs{;إvIu 9,NUS �0q �;PDԫ JA I�"�HGס0D=]m&ls KRI5Ä/ T`0J*0<z"fA*!, Dΰ;$"՝/ ߳V  �hC-`^ ]$CpFnЏ<@,驓�*'-8+5!8ò�0c.`V؅C|/8h*!Q2mHl|q"H]؄]A cuA8rO+?tJ$0kC5w�L S|HD BnucpELBi3xHW`Qw�-0V0]8BP0Lf"4pQTp [ *m&;`t!%d?O;AFp�+BP$-DO-O'CHKAJ0�}o0mnl(fSywRzKVQepo=m#F8P�8C8_0gM`Fv3IXIPB(t 8JIdNXe"X>QXM�kqcCW\($R 9fPQY҂! 9؆]ӃoR�$Hq́bw+`�A`t4�pc88ȇe JT?c?�؅E|VQCu5=Qc�!Wx%-l4@EWs_x@ H�EXB/Nt7>h S}X%��Q"Q9|(>@doJ\Q5e'7�hrhHx%-u@�؄mnb oȄ<�EADW0i S}؇]1(Hw-3� Pq4xG6ZhVbbNw&|<E P}duO"�S!o�^CjeDk)X4+8҆@>ՇPeS$7{ ��Zȁ"D7iDPHD,0{s" -aHw`zH%[`֤{D;(\҂X#9`&\fXdZB t� |v zv.ZhD0QW}hJwUE).*vEdz؄-qDfhD�XN0[MqN`!-0 "hEݡ\)Uq^bL&3�7}$T:GNj%R؁uQ(rч0Y*e="-x1Q8$^`7�:�gVi&-l�P�M$4; (, 2g�h{8ȅQy!l*�6unV�PE"@d+e<@(��.`3f*i/-PQWe0 X5nhGssq)eʰDWpOfH%=pD0ᨆ7Y � E&%i�!B &lЮ];�*1B8s,z%f)BB" �.-;.S Rp� hb~*�4r׀fY1F ۤi-/8h:vܤuv]z@k2<dhӀ������0�������0����������������������� ������� �;���������6������L��������������������*�������T������\������d���������(�������=�������R���������������/Software/cvs/WindowMaker/WPrefs.app/tiff.bak/configs.tiff��Created with The GIMP����o��g��������H������H�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/miscprefs2.tiff��������������������������������������������������0000644�0001750�0001750�00000022432�13431646201�016635� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*�$������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\��������������������������������\\\NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN��������������������������������\\\NNffNNNNNNNNNNNNNNNNNNNNNNNN��������������������������������\\\NfNNfNNfNNfNNNNNNNNNNNNNNNNNNNNNNN��������������������������������\\\NfNNfNNfNNfNNNNNNNNNNNNNNNNNNNNNNN��������������������������������\\\NffNffNffNffNNNNNNNNNNNNNNNNNNNNNN��������������������������������\\\NfNNfNNNfNNfNNNNNNNNNNNNNNNNNNNNNN��������������������������������\\\NfNNfNNNfNNfNNNNNNNNNNNNNNNNNNNNNN��������������������������������\\\NNffNffNNNNNNNNNNNNNNNNNNNNNNN��������������������������������\\\NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������TT_T2&.qǤ[$=$s$$Duلq_v b B)i9�����������������������������������TT_T2&.qǤ[$=$s$$Duلq_v b B)i9�����������������������������������TT_T2&.qǤ[$=$s$$Duلq_v b B)i9�����������������������������������TT_T2&.qǤ[$=$s$$Duلq_v b B)i9�����������������������������������TT_T2&.qǤ[$=$s$$Duلq_v b B)i9������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������8:>==#W__77}#>pp8��������������������������������������������������������������������������������ZgG5e~NVFf CoO������������������������������������������������������������������������) ﯯ2bIi1aN&ze% ��������������������������������������������奥奥奥奥奥奥奥奥奥奥奥奥奥奥奥奥��������������������!AUOO^.bIyA>N^1Ncy9U����������������������������������������qqqqqqqqqq qqqqqqqqqq����������������<<aAbBuv&:&&ffFRBkK*������������������������������������nnnnnnnnnn � � � �xnnnnnnnnnn������������w zꚪjjZZ::zz&zLJw�������������������������������� xxxxx������������tt_VZV2rrRr J r r *jJj:B=b��������������������������������������������.Ύ g'ζV""bbbRR22r2r2r J*rN%E �������������������������������� ������������G]l 4|||<|B¢BB""B""RrRKG��������������������������������������������G{ߕl<\\<<<||<<<\|"""'{��������������������������������������������������������������������������������������������������������������������[ߥ9,t, lL\<<<<<\\lܜ<< ��������������������������������������������MG 4d ,LlL\lLlL,lL,\lܜ3=G��������������������������������������������֦& s} Lt, lL, lL,, lL,\l<lZj ��������������������������������奥奥奥奥奥奥奥奥奥奥奥奥奥奥奥奥������������$懳 T4, lLlLttlLlLt, tL|��������������������������������qqqqqqqqqq qqqqqqqqqq������������@@@-Ew~$LtTL,, , tt 4 4lL,Lt-Yw@@@��������������������������������nnnnnnnnnn XXXXXXXXfTTnnnnnnnnnn����������������4bL LTtT4, , t 4 ,4 4B~N62B������������������������������������ fTTfTTfTTfTTfTT��������������������z Uy!l 4ܜ,,LtLt4, , LtT LT\^6U����������������������������������������������������������������f yQ,|,LTLL4\<<F �������������������������������������������� ����������������������������|,^|t\,\BB RBQN b��������������������������������������������������������������������������������8>an#9^in#>8������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������0�������0�������$���������������� ������� �)���$������$������ %��������������������*�������%���������R���������������/usr/home/fatal/newprefs/miscprefs2.tiff��Created with The GIMP������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/menualign2.tiff��������������������������������������������������0000644�0001750�0001750�00000001442�13431646201�016617� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������MM�*��Ѐ� P8$ BaPd6DbQ8V-FcQkH�)$~M!2YDU.KSSUJ{<P'GhS]"FT),UM5U)M(rk!jjŖg׬)wf3~,% jap8|3&SV͖YhtZ=&MM5:f6UNz趵-q.n={>\m7s2<W:ݞS^3~,}^tx$<?3t<3? >$I; ' Pɪ;DDA OQ/GF *OhLccsP1i$";Đ(JQty+r8G1Lt2I\&1q9Ns=ϓ?  �������� ������� ���������������������� ������� ����&����������������������������������@���������������������������(�������1���� ��R���������������../../WPrefs/data/tiff/menualign2.tif� Imported from XPM image: m2�H������H������ImageMagick�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/speed3s.tiff�����������������������������������������������������0000644�0001750�0001750�00000001026�13431646201�016122� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������MM�*���Ԁ� P8$ BaPd6DbQ8V-FcQv=HdR9$M'JeR�K3 te5gm?': CRhJe*K* <ʛTԥbO֫U~WltfV\,՛k>t*xa/E9|n8!P33s5㥚=&MjuZf]lc������������������������������������� ������� ���� ������'����������������������������N����������������������������(�������1���� �� R���������������speed3s.tif� Imported from XPM image: speed3s.xpm��H������H������ImageMagick�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/windowfocus.tiff�������������������������������������������������0000644�0001750�0001750�00000003724�13431646201�017132� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*��� h!B &l"F%jK1�B &J$i�ԩ+p)2fʜ%kTibǍ-oBH'}%J&)X*J]$wpL.� *e~Ȳe(P&]5kSF}7�{@ߧQ{0�P6emQ @g�@c.�U zB_2+�İ4}Qc4צJa;Nc/��tSh`uR X;rM2a[aaxnRSoy=B ,^ �|�k ?B?oD者'(��@Cؐ04�e UUN8&80OȄ" Ph>:Acc<Hc;X9!�plwC"b'xbL R&ޔcM-4K=O5T`�8@7 OO&bvS?r�E8/�=p*� ^0�`(�+�J��dpDD.9v2JIp+�5ll� lC b��~(8XaE4LJJ(p+2�xo� [� j%i�0Z\2#̾tiYn v$)�{(�8 FsʩXVh&���@:�h��� . ׎{ 343&h)�b\'}Mp?�sJk@։;5 АB m02rl(o&3޿=9Ã2y_0 Xs 2�v?b#I7>?S3l_4C81.9/:˯jv6[`9�Bv!r�߸ /w~WxHQno`s}Nj0ROz'\{z\9!(( �^7۠Sy)�$`5&]'KON, YF$f7>%;yKyezy A ̨ȍ6�0z��;>ni�`-8$z �d&��@Kp$c 4pMHB )qĚT#8qw?&�VBHp&2>Q Q��Hs|0��"DҀ`$,*K1@1�D4tT,D%4F0|�`!�mv���[SpX"��ל3k YQuhF@ ��a~�58W*KBy�paRLஈ�@YQ/�y �Ȗ��/qPhŖJ 耓(%V $ hl� �PE�9lwLR,Le`يQ,)g�vu c61_e Q2W +j1k̲䈩s:أjYU)U=+Qp״!&f0rVjkrʑg\D(4Mm˩x@f=9}r`E>8` h*l>t�@`%rvT��j: �t�CB (<;�@�@KOLIG=A ;�@"Z7R I�!B &l"F%j1"S'@ 4AL$i)R7~2fʜ%k4͐-oBH`%W*F �������0�������0�������z���������������� ������� �A�����������������������������*����������������=�������R���������������/usr/local/misc/WindowMaker-cvs/WPrefs.app/tiff/windowfocus.tiff�����`��X��_�����������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/timer2s.tiff�����������������������������������������������������0000644�0001750�0001750�00000001116�13431646201�016141� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������MM�*�� � P8$ BaPd6q(PD#Q}=#MC$r)f)%q9g/Y$GD┚%6.ƣVEEsJ_R4%.8%rbX;\J^i -Nd7%^ㇾ)x*{ \W$;dr,M/\) FMOZZ9lh~3ec+i&ov;exoi!h9{[з: Q<^;L������������������������������������� ������� ���� ������'�� ��������������������������U��������������2������:�������(�������1���� ��BR���������������timer2s.tif� Imported from XPM image: timer2s.xpm��H������H������ImageMagick���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/tdel.tiff��������������������������������������������������������0000644�0001750�0001750�00000003472�13431646201�015513� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*�X��� $h( p�CHd`@6Q+0 �<UH2 %t`RC THP $P F(  |JA $`@8ej!bvC� >*`$6 c58L Р`R`j `Zoh`!d *Dpjv3xEz[�Ѣ?�U NG.qeK2R l!0S@ =i88xΈ/R5W~` sl:` �@%S`= S ,f_`X`� `wi?y~@wp�0h6x�!yP} >Թ'-@L3` bhQe� 7y a�8wavecyiK%%uK�-X`RG"> $Ė@C+C SB Fn@CI9(g?40?_,ƁNZ`L !+2{#7H?&?| ?\\›jC裏AFљÄH`f/\?Ȧj:?J(?H'lv TR#a!\tv⏲cy9]?ZWթ@`Fi#@ؔ@ݒ|v]—4'z&_9?BJ;?O|NA"~ w^ oi'B##u`AGp? D` 叀#9?:^oH*��8#Sߒ+7Rrl##8 ]ޞ<j$09,0Zٮ4<.0޶ W5$$p!`hH {``|=EP9!-CHT"At w g1^@3F*REH  �'p%0$p7a43Po"=qSR|@Ad#b D>JJ"5%e>Ml|.ErZȘ ~<ҋ?8f�ϰ<�v'8Qj%#xfv|=@* H 2@y?xI` e$]{>U0" Kp`*#QG`�$ 8@/8p pB~IKX27`S6Cyr4(BX%D!n$h �kf5 *SD&205:,DposQ'"(` !K`2�>AR" Bv@tS yn1 2l & P@e/^lJJB@EVU;$uD � �-�@'$rqOzJоgޛg������������������������������������� ������� � ���������$���������������������������K�������O���������R���������������tdel.tiff�created with The GIMP�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/timer0.tiff������������������������������������������������������0000644�0001750�0001750�00000001120�13431646201�015747� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������MM�*��� P8$ BaPd6q(PD#Q}=#MC$r)f)%q9g/Y$tѩMHh2X2NBq_k4%\ӪVWgn7 W=]nE9 s->dpKbr,C;# &'kQHuZݦGc.iunM.{d︼k~?k1Ѡh}c߶@@������������������������������������� ������� ����������&����������������������������U���������������4������<�������(�������1���� ��DR���������������../tiff/timer0.tiff� Imported from XPM image: timer0.xpm�H������H������ImageMagick�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/timer3.tiff������������������������������������������������������0000644�0001750�0001750�00000001174�13431646201�015763� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������MM�*��4� P8$ BaPd6q(PD#Q}=#MC$r)f)%q9g/Y$tѩ9\C#MHS%ܶwQUUK%ZHm3`[lvkb?ZV]'e`nx* y_g{^{].'+s֗ h\cE[.i0[WT*[&#S77wwnV ?ձtt:37xtǖTtYQ|^̿b6@*������������������������������������� ������� ������&����&��:��������������������������U��������+������`������h�������(�������1���� ��pR���������������../tiff/timer3.tiff� Imported from XPM image: timer3.xpm�H������H������ImageMagick�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/workspace.tiff���������������������������������������������������0000644�0001750�0001750�00000005202�13431646201�016552� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*�p �� h!B &l"F%jK1�B &J$iR28'&Vx eʜ%kt �h@��R�P�*KPP&] *V9� �Gn �h @IecǍ_m F7� 6j/�yZ((:c0u8& �M ijP8g\ �`Z 2�X̞ �6@v+�=;�=hH-ٵ1�NO��$_<[�nq�< i \פ2@_`��{[f׮�8�IuE@6B�d�xB/,� )�-"1/m�Vc���؃@?>�hK��:)�I�8D/I;( WP,�0Ē�(3!QHp!l^O~ 3Oq-4Vv0)HQI*> AbP}6LT`�U�v|n*R`�ʪFY"#z3J~�~ �[THS7LP&ϸQ�VYa �� �.�N"=�A�Ez魏鏇DVFAEVrʨJ[A �aIۈ-�iS�}‰p D7I㚇 h�aDfŀ^aVZeQa=e@ �@x[/CKUt�,;�d-v{�/aJxy Nj5I�E� PN�,9dI5i��>8@�{ -mz,0?Y�#�cI�8dp@gÏ?˯?/>Iˀ�ࠞ1Y+""oqnrI"UmE(W8.� 5�BP&ta`uBP-cp54[H5|JlO¾)N9)£%�Lt��j1 s/&eX.LspK*d" 0@� GF3y^,�p8?I}lc!iNzl΀2ߑ�|��Anm\S(3 }PMQ`Z$#z>̀e,�(Tb*v#&g<8&d$ �3�d*�@Mnr3!gesjPR��x>31A^<l ]qQ.�,v8'B%7;rR|0o'a 2"QdANg}Q* KRD+_s_劤 TF#Zt(R .7"Ӝ'<Q/is^Dt!Wt ��BSlٻ*E1G9Yꖷa`Ը"kkETT�<�tY@h�DU .�Yh77ŀI5UKBf�B�*0A Htr55yc&6PQ+u 8�.�.ؽnb,^S5pSL|J!5oyG>| 1#%9$kR 4:B|HhGjIah$?e H >V;1t#ګi%ESI4aunƗQM*tlrf42708'Ή`3 :4L㽫m0fc c2Iic,F"/L<-PB)L�& B�@ ZV+�aW`%+[�<  �z��IH2+*mU3.W Imp]m^jYRGJu]#~V6lugĻm7"9{~"{ݧI"=>'!! іjUJ" @{#Pj=1f˙;.qIm'(� 5�8�~ �� nLuB 1r(I '�2fʜ%k9rʝ' o�� �h9�*pY� L2U�<�� @�3L�u +z 5i֢Uv:K>#F_P.%K0:��عꩦ@!� �A��/ ��;tlŪ56lڲm!F:}&�b/ plY��}Ш-!| ;�>eO<[}g_spy܂�@:$Yh UeUWKi]}@42Ã)c1c������0�������0�������* ���������������� ������� �?���2 ������r ��������������������*�������z ���������=�������R���������������/usr/local/misc/WindowMaker-cvs/WPrefs.app/tiff/workspace.tiff����� ����d������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/timer5.tiff������������������������������������������������������0000644�0001750�0001750�00000001174�13431646201�015765� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������MM�*��4� P8$ BaPd6q(PD#Q}=#MC$r)f)%q9g/Y$tѩ9\C#MHS%ܶwQUUK%ZHm3`Wd6ZŚu.VU=X+Ŋ}_1V̖tdl{-TC18wM^%󚊶[-KptvijZ.f\ͿWC`O._A^rη/op%wy?>r}2@*������������������������������������� ������� ������&����&��:��������������������������U��������+������`������h�������(�������1���� ��pR���������������../tiff/timer5.tiff� Imported from XPM image: timer5.xpm�H������H������ImageMagick�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/timer3s.tiff�����������������������������������������������������0000644�0001750�0001750�00000001130�13431646201�016136� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������MM�*��� P8$ BaPd6q(PD#Q}=#MC$r)f)%q9g/Y$GD┚%6.ƣVEEsJ_R4%.8%rbX;\J^i -Nd7%^ㇾ)x*{ \W$;dr,M/\)=&VрZ,֗9g{=nw9Km=^98Z=%p}ʼk8l[4H|V۟d�������������������������������������� ������� ���� ������'����������������������������U�������� ������<������D�������(�������1���� ��LR���������������timer3s.tif� Imported from XPM image: timer3s.xpm��H������H������ImageMagick�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/menus.tiff�������������������������������������������������������0000644�0001750�0001750�00000022472�13431646201�015713� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*�$��,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,PPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPu,,,PPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPu,,,PPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPu,,,PPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPuPPu,,,PPuPPuPPuPPuPPu���������������������������������������������������������������������������������������������������������������������������,,,PPuPPuPPuPPuPPu���,,,PPuPPuPPuPPuPPu������������������������������������������������������������������������������������������������������������������������,,,PPuPPuPPuPPuPPu������������������������������������������������������������������������������������������������������������������������,,,PPuPPuPPuPPuPPu������������������������������������������������������������������������������������������������������������������������,,,PPuPPuPPuPPuPPu���������������������������������������������������������������������������������������������������������,,,PPuPPuPPuPPuPPu������������������������������������������������������������������������,,,PPuPPuPPuPPuPPu���������������������������������������������������������������������������������,,,PPuPPuPPuPPuPPu���������������������������������������������������������������������������,,,PPuPPuPPuPPuPPu������������������������������������������������������������������������������,,,PPuPPuPPuPPuPPu������������������������������������������������������������������,,,PPuPPuPPuPPuPPu������������������������������������������������������������������������������������������������������������������,,,PPuPPuPPuPPuPPu������������������������������������������������������������������������������������������������������������������������,,,PPuPPuPPuPPuPPu���`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````,,,PPuPPuPPuPPuPPu���������������������������������������������������������������������������������������������������������������������������,,,PPuPPuPPuPPuPPu������������������������������������������������������������������������������������������������������������������������,,,PPuPPuPPuPPuPPu������,,,PPuPPuPPuPPuPPu������������,,,PPuPPuPPuPPuPPu���������,,,PPuPPuPPuPPuPPu������������������������������,,,PPuPPuPPuPPuPPu������������������������������������������������������,,,PPuPPuPPuPPuPPu������������������������������������������������������������,,,PPuPPuPPuPPuPPu���������������������������������������������������,,,PPuPPuPPuPPuPPu������������������������������������������,,,PPuPPuPPuPPuPPu������������������������������������������������������,,,PPuPPuPPuPPuPPu������������,,,PPuPPuPPuPPuPPu������,,,PPuPPuPPuPPuPPu������������������������������������������������������������������������������������������������������������������������,,,PPuPPuPPuPPuPPu���������������������������������������������������������������������������������������������������������������������������,,,PPuPPuPPuPPuPPu���,,,PPuPPuPPuPPuPPu���,,,PPuPPuPPuPPuPPu������,,,PPuPPuPPuPPuPPu������������,,,PPuPPuPPuPPuPPu������������������������������,,,PPuPPuPPuPPuPPu������������������������������,,,PPuPPuPPuPPuPPu���������������������������,,,PPuPPuPPuPPuPPu���������������������������,,,PPuPPuPPuPPuPPu���������������������������������,,,PPuPPuPPuPPuPPu������,,,PPuPPuPPuPPuPPu���,,,PPuPPuPPuPPuPPu���WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW,,,PPuPPuPPuPPuPPu������������������������������������������������������������������������������������������������������������������������������������������0�������0�������$���������������� ����$������%������%��������������������*�������"%������*%������2%���������(�������R���������������/home/dan/menus.tiff��Created with The GIMP����������G���G���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/timer5s.tiff�����������������������������������������������������0000644�0001750�0001750�00000001134�13431646201�016144� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������MM�*��� P8$ BaPd6q(PD#Q}=#MC$r)f)%q9g/Y$GD┚%6.ƣVEEsJ_R4%nqgͥbXw8{i^j -Nݥ%^ㇾ)x* b;.,-ҳloChWuOMIvv; nmo[.aN?}`NmΡ2\FMFQw|~ wZ` ������������������������������������ ������� ���� �� ����'����������������������������U��������������@������H�������(�������1���� ��PR���������������timer5s.tif� Imported from XPM image: timer5s.xpm��H������H������ImageMagick�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/speed0s.tiff�����������������������������������������������������0000644�0001750�0001750�00000000734�13431646201�016124� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������MM�*���� P8$ BaPd6DbQ8V-FcQv=HdR9$M'JeR�K3 tY,S9e7`s@iwJKg2=Tb^UF+Zkx2[.W;w^oWz������������������������������������ ������� ���� ������'����������������������������N����������������������������(�������1���� ��R���������������speed0s.tif� Imported from XPM image: speed0s.xpm��H������H������ImageMagick�������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/ergonomic.tiff���������������������������������������������������0000644�0001750�0001750�00000003566�13642357774�016573� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*���� `P8$ BaPd6A_8@uF"n=Gd1I'dҩD]-0m7NgS? fP G)TdA2jU:WV_mSitcUmVɲQC͚wJejU51WuZdrY<W-ȂsFʎAm&'cfl[=#m۱[}`W6irN|77I@@ `OX# <aNc;"N,9NX<8dN #~Lݔ7%Mcj\ Yg5MSi{;Ph-<(SO;ؓ(:c=v89$7H7ֹSrXۗ\[A w^hw1SUusXlvWkoJv_4Z%F`lDKk N"pynw}s|-/E0N*Ym#gϘJwxx܈.v=Id\of, 2ϳߦ�<P�5 Ð=  0|qL*/ `N# �!Pd6�Cᆈv,ی6Qv= JK$Je<U.KScmPgF T"(hnRcdl O*UҧV͟Uvy XlV =6LZj{eXNw^oW=:[ Z51Xf7dqj|Uf06 =1,Mjss\i=AhŻl5ZyJ}rw+{R¸wS_ `E Pd" `-Eb!Hb29E`B,O/&QX^iKӹahj%GRiT֝6'TVWh2 lTKmVekJ%P*]wV*m[G;u [ظ_8<%9i\" ]iY,[mYfc5[N-kl m0 `E Pd" b8V"u�F_v=HdQ! by\-.KQ,k"NgS4ZQ(T$ƍ0htyUEj:a֓Uetv^AdNZmVe9\avo-y{c 5Xf7 @@ `MfU5a0p\*D`V CPF%8d7D%Y.Sm3e[#DGDe5 TiJU0NT2q_Xg6;xV!U*&SmT*ղqkzjeX6ImIs~"Rwaydpb>juZ1[li^[G=>W69'"|g6&;S>o@wvS]n'wA8(]o'|J/??/ýج , ����������������0�������0���������������������������������������������������������������������������(�������1�j��� ������������������������Z�����������-��������O��G��-����LIBTIFF, Version 4.0.9 Copyright (c) 1988-1996 Sam Leffler Copyright (c) 1991-1996 Silicon Graphics, Inc.�������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/animations.tiff��������������������������������������������������0000644�0001750�0001750�00000005620�13431646201�016722� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*� ��� $h!B &l"F%j1bƊ'nݲ?i))I27A�I(Qb!BE,QL)UEp<�kTnH*"K3D ߿7%�t!uڄ; D?7&YM1bd9rT�jhyѣq=WvXhx.n`cw30@XPYbޱ5OS $wx4Pqms_VRv� 0`ll gas` * :DŶ (2<'̧7X}Z! )b?.鍗$P uC`Ps *-M2ߌSL63]a]B1$Dd-#- aKMR-0#IPM?Ì4gyHsE:HXTh>JψR.´(J62KY(ࡇ $,·BjZ(2)mIؘJeiϑ{y!((o'Z*k/2|" X`fjRl4ZVmu?'IUĒd!$ғWUqd9 1z+Zo1i[?W)T 0gG`^ן}΍Nk[Lۦw]-+ 7 AƱ� :69*aKfOoǓSve=�0qP)$YnfΑî9U@?roៜ#.Ⱦ[/ '1֧Z3cRK;G<d Q @ VήЯ6~~oBN9=Y;cʮ$>%ZVF(m@9_(hߊ_!tq@/�GX%$ ;+8~ #2 ;b!p rMF`&0 3Q�~GEPmGCɘHk*^c?@#b(@*BF#p9+G|�@ c/!i%yEd�m`G =rmPJ.@ ӊY8r$ҕXg@=Dr<2Je"Cq)I3I6ULB>jOwvka%)Eiʐ&U@LyʗTX $p WP'|-d=m^A Fvr�rB予D`SN?> O@: %/Y?e*hY.YP+wV\9>+-_Yc-:"FUWU q[[,VeIqY3u)/Q�A ,У`U?'{5n0%*Y?KZ\"^ u-mCKЖ?xVk.?ڊ?JO9aeVP\G5ӑ#Lkw-8v2*WUFWХt~3J z^g| Ƌ;(,724 (�ؿ~^8  $аGx^7:"ixXDZU_x3Vox01jxEd4PS$ <թӜ)2O,!f$xF\\ 2>aN+Wрxk*]R <xEB3+V;O`X]Ѵ4xrF^Y<MiX1�ih+<LC� G+֋W.w~L7Ͽx%D[▷a+;SVҩb_e �$ W�`ȾɅy� T/941q8/ 3ײzk;u^Ĝ1/c"0Ns:k yf e!,yZ h1 74X0O!`W|d0cޒh;1uk9<0?:(^a?Nq;@鉦kFHHB <mϧ `|6/{>z2!40}l>c�O}~yzt2gS��=Xz�xI|Ag?8BDg# _BX:d~ ~d3, 0{>@0',@~D rX` H0s<@000 4C lp ]@@a>^2 :WBA@� �k`B�8L a`" -!x1ŀ+fq#J, m2aS ß&u4SJVXbD`) Xp�-HJ&eD*V\Jk .V bjKͱjݦmͰVX=�FAk �?7=ftO:+XŠj.V4 ڷ[fμYH͘4A6le 윸>c +NpA�^ko޺}>zw������0�������0�������: ���������������� ������� �'���B ������j ������ ��������������������*������� ���������R���������������/usr/home/fatal/alfredo/animations.tif��Created with The GIMP����x ��p ��������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/cycleworkspaces.tiff���������������������������������������������0000644�0001750�0001750�00000003416�13431646201�017762� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������MM�*��� P8$ BaPd6DbQ8V-F`Or5HaMF2Y\U/D)& [>ʖy>hKԳ jZgr8)/dT`@mۧ+wTjj^Z-l$V]igU5u1K+e2}/F=Ox [A0Zy2yz?[=m "acC$/LyR:f/1tve)W[qa}\ÏƜк^\z_qxxu@ P* *,K4M#SԼ2:`9CCQ@pF- jzp)<B�DtQzEF J�3t|H ɑ.4MC �C- vH :A(R;ҕb)5P4G$̐QRl>M,4OTENЩKUMUCR[F]eS')z H3Hj(3%%SW͎d~Z `oJkjq[3.Rď)XJ1Oc!'9t3$X `9aG,k?݈IHK^^M1s(wEldR̩T9/K ߗu'o^/fMid'8(d9K޸f^Ҵ  @凧3]!S…7Đ"Kץi.dSkhĦB(ޚ=vڭխExv_@i>eO:xoSō5~(lLG~/AZaѴ`c-bR5چ`̷|dDU|ʊ<p1r޵`F{rIϞ|Wc8ӂ2\;OUd A#7|Ѻ5UM/ԻTSD}HdPlSI 0C78Cx|BATp!&^IPSCiRaJC("(O)r3tJn*D-"i#/Vjn͆AUYNvٷ뜙p1VFf0/QE~j2|e'dۃ5Lih $y'ɒ:Q"2<șhe3 yDdcE5XdavRT/eZ(a̙ݳ:`Jh@@� P8$ AL A)_IFcQf(VWsÇ#̦K9m7APM(RT Dѩ4Q[!d\qkUa/F dZ,֛=lbQ �@ UguZkՌ p̳drXXM-s/w1cz=&Md �������0�������0���������������������� ������� ����!������/���������������������������*���������������������������(�������1���� ��R���������������../data/tiff/cycleworkspaces.tif�� Imported from XPM image: cycleworkspaces.xpm������������H������H������ImageMagick���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/oldstyle.tiff����������������������������������������������������0000644�0001750�0001750�00000007644�13431646201�016427� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*�X��ttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuttttttttttttttttttttttttttttttttt���""""""""""""""""""""""""""""""""""""""""""""""""""""""&&&&&&&&&&&&&&&&&&&&&(((&&&(((&&&&&&&&&&&&&&&&&&&&&&&&���""""""""""""""""""""""""""""""""""""""""""""""""""""""&&&&&&&&&&&&&&&&&&&&&&&&((((((((((((((((((((((((((((((���""""""""""""""""""""""""""""""""""""""""""""""""""""""&&&&&&&&&&&&&&&&&&&&&(((&&&(((((((((((((((((((((((((((���""""""""""""""""""""""""""""""""""""""""""""""""""""""&&&(((((((((""""""""""""""""""""""""""""""""""""""""""""""""""""""&&&SSS(((((((((""""""""""""""""""""""""""""""""""""""""""""""""""""""&&&���SSSSSS���SSS(((((((((""""""""""""""""""""""""""""""""""""""""""""""""""""""&&&SSS���SSSSSS���SSSSSS(((((((((""""""""""""""""""""""""""""""""""""""""""""""""""""""&&&SSS���SSSSSS���SSSSSS(((((((((""""""""""""""""""""""""""""""""""""""""""""""""""""""&&&SSS���SSSSSS���SSSSSS(((((((((""""""""""""""""""""""""""""""""""""""""""""""""""""""&&&SSS������SSSSSS(((((((((""""""""""""""""""""""""""""""""""""""""""""""""""""""&&&SSS������SSSSSS(((((((((""""""""""""""""""""""""""""""""""""""""""""""""""""""&&&SSS���SSSSSS���SSSSSS(((((((((""""""""""""""""""""""""""""""""""""""""""""""""""""""&&&SSS���SSSSSS���SSSSSS(((((((((""""""""""""""""""""""""""""""""""""""""""""""""""""""&&&SSS���SSSSSS���SSSSSS(((((((((""""""""""""""""""""""""""""""""""""""""""""""""""""""&&&���SSSSSS���SSS(((((((((""""""""""""""""""""""""""""""""""""""""""""""""""""""&&&SSS(((((((((""""""""""""""""""""""""""""""""""""""""""""""""""""""&&&SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS(((((((((""""""""""""""""""""""""""""""""""""""""""""""""""""""&&&&&&&&&&&&&&&&&&&&&&&&&&&(((((((((((((((((((((((((((""""""""""""""""""""""""""""""""""""""""""""""""""""""&&&&&&&&&&&&&&&&&&&&&(((&&&(((((((((((((((((((((((((((���������������������������������������������������������������������������������������������������������������������������SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS�������������������������������������������������������������������������������������������������������������������������������������%�������!�������*���������������� �M���0������~���������������������������@�������O���������������������(��������������/exports/home/wettoad/Coding/WM-0.80.0-patched/WPrefs.app/tiff/oldstyle.tiff��Created with The GIMP����H������H�����������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/sound.tiff�������������������������������������������������������0000644�0001750�0001750�00000011422�13431646201�015705� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*���� $h!B &l"F%j1bƊ'n &J ]2S2D ҤHɘYrn(ScnXrêh 3J!eŃ Lccv8`lL%I$[#G-„;<Xp'G?(LJdQ O?yTgG HkIj6Y$L'Ji"df$ Dj֛}dHGpQG?aA?l8Ą?.|?x?ܸq^l ^2< (tNC  bH&Xp1@X6ؽM/8`NCEG?DE?D@?v`t?H J(Z1=a}a(b(R=i8VX"h`9X`�AaDF Z n7aD̂:r! [mzM*!2D�=(! "p"4?ءKL'p}t1 /Ge4ssxb <HC�r#qJˤbl*Up(+` 70A5|G4G \Gq#=KFQk � �/ו+Bzꥷr* r(jjhA@ko$f(z\Vƃ`Xb;sFʟe *h$9X=ŏ2hpLP jgaȭ GD,dp .92Hn; \p,PAqffc?"n b f]EG 0!uhr ;5N*ܸ[^BAxz(pQ8c #,|Z:(53p '  | &eK^SAG'?@z ^a@?CmSm?X$!=! H%pV` {ߎ $_搀PbiCbG x 6bCC4@ rp "D)?: a4u<FhAܣ N$8?BmE9K[(%2D>P@”IG A %Ѐt@$ A(PG 8a@Z"TpE@/E@ O8H*P*s5<`$ �  � Kć>��T %p9 $ �@@BDYfr<Tv!>,4$ RKHBH7&畆 ā?`XC?aPRA 2`-T }D!�h jVH[�@h8Љf1L`?KiH-yBLRЃ'8M`38 4-l/V0` t8F_|(F#*� �iC�t'*'X.0n�m ;;$F0  N#lxU8&Ʌ��X@ $(@/P^i!C<"\Ѓ q�<p��|? 2i^�'0P|�k�.�@˱l?Z @G%{q Ʃ#N90xǿS1l4*P�x]hhґ �0:?`(@ b@|�ΰ5`Sr �Uk'0*0~� �T 9@alW G*51><2M4hs.@e �G rqhʑ"C6 J[n"7c�AЏV�?B9ZPR�t�QB�U'G@�ac�!s264V �V0ChB[8X8z](攽1j0@BG�q,[L1"1�@`�8.�p^�^o��$WGV�ǢD?� L=< 똝APD @nMa>W2ؔ9Ac|K40PAczba = � '�n �`0�,rЯS2!0a�`S�DcQlkCSU؅J(�� �Xop�Xpu s'5?_��C؃%$@$ PyHQ }>h1'h.G6?pcM �4�Op5/P�3V" 0cop�H ��1�?ۅ�XcUq)0u@v�psuhrZ��Pv "'Gw,? z\H1'%� [c;ls,H2Z5P20}\H4 }7vw#hwW, k�ؕ63 ?@`(F`HCEHSA kFX@0�Mpk�jHq'gK028MsZ I�05c+01'rA`5* \`6p5?7FW2!FSgSӄaf'�HkXs8<Qx09x ��`?P8z`Yt 62{?gυZ( h@ r 2Wd#HL/n ?ӳ<>E%hQ6Vw<MB 4!A`C``F x^ WQ�x6@H3' �tr�<@� |pp@%0�5�m[�-Xx 1�pύ'i@x@?ȇ u"$/ l<( "bh@`3#�w kF@08Sd0� �+�p" sY ܔp"X)�]L)�d@΍|<\mHXEeJEVQ؂9Nŧ5(?5V(ε@ Xy�7�W�T@nqt@r2f;xr�ja 39  V0W}5e#g4bf`:�`cc}X4@`XXbExx>;%@H)exK)q80'(" -T \!^?0NHV.C�48M'A Gخ DBR(Ic+7?bJ)蔪R< rJ?0#\d%lll�v`X %Q?YpB,'C{C@%Y#JeɁ`+! !(rT^1Q�AfRVgh`VljhnXB4Aj'JZengQ*RY`b$VFdyЃ?!d8&Jh nF-5t@n\6.`E`k<nr $3 � bDD4&Z`2&?@NAW_ Nцl?v(/@XEŁ?P503q`ds`&"N|?($\"?`/`F~dg @S1 yD]l�\@ �^Dv.-Ҏ_3b5�cR�jʡ(\h6d`5>4zf:`*N�G"("SMBJl@_ dGD@Xj` �xۂ?50?*xCv* eazdR�JA2Qaf!iW! Jo|aD}@JD'Ra@$@ Rs ?02F|" ecj ,``sR,,%"^E+>JN`:4Mbv�R;67DQ@X7f Q 2W+"r!P5P?0Ck�'2?Pu/`f abV`�J\l ^<Q3Ѕ2zC@� $h!BGT(0D"HBxp"! zG7A1EO?#?tCRF1b jxvB\8qS\ 6j$d`A-ʨDE ?hC[hB?˄-BuC5X)p ;Xp# X &D6l4z ><[[la0רP|V F~4#v1ƍe6<8Ǜ/6pbǹmB?ZPD Ă!1'$LEBDx`h4Ab11:n�b537������0�������0����������������������� ������� �"�����������������������������������*������� ���������R���������������/usr/home/fatal/alfredo/sound.tif�Created with The GIMP��������s������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/timer4.tiff������������������������������������������������������0000644�0001750�0001750�00000001172�13431646201�015762� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������MM�*��2� P8$ BaPd6q(PD#Q}=#MC$r)f)%q9g/Y$tѩ9\C#MHS%ܶwQUUK%ZHm3`[lvkb?ZV]'e`nx* y_g{^{].'+s֗ h\cE[.i0[Sn,;%}h*+wrvKg׼t)7cVñz,+/l*~l������������������������������������� ������� ������$����&��8��������������������������U��������)������^������f�������(�������1���� ��nR���������������../tiff/timer4.tiff� Imported from XPM image: timer4.xpm�H������H������ImageMagick�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/speed4s.tiff�����������������������������������������������������0000644�0001750�0001750�00000001052�13431646201�016122� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������MM�*���� P8$ BaPd6DbQ8V-FcQv=HdR9$M'JeR-L%ٜi2MSi}9'x8˨i}&LSh:WOꕘMB[lj͆XR궊dk7 Md-:}r]/˽ՅP80Y*ds8lvn`1|~SKWh3]b* mnw[}px\>$������������������������������������ ������� ���� ������'����������������������������N����������������������������(�������1���� ��R���������������speed4s.tif� Imported from XPM image: speed4s.xpm��H������H������ImageMagick���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/theme.tiff�������������������������������������������������������0000644�0001750�0001750�00000014334�13431646201�015664� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*���� $h!B &l"F1bƊ'n &J$i(Qb N?\#?2,#? $9qNHpG[RوF^ H@A\r(Iծ[Fѐ-mGGa?S׏_)9E^mɖCC yObf u` 3tXhg–1N0ˆe6ByD 2Dr"\MTX%Ҩyˡ\q0 73y&t逞s1-yh^?d e,[`2I`hjĀ&T&Tzfv^Ag1Ngigy.ggMg=#s^>W/~t_ ͵0c-EV=|BgLThL2Q9S/G [‚XǜhQd1ď|H .P"Q 7ʎ,.b-/I,I.RI-ұF ww?S$iS|6Q,MFFihZ*06TL`.iNJH J%2*Q(",ʨ>Ƙc=θ?M<ɤM>ŔSM=ʹM_LhR Tܑ1+ԲMJ SV4iHQgUGICܾbY`z#d1 i!l@fdF&~LdC>ƊIvbIx <wi]k/͝Wm2dr:˖F5PZ\K x6|ژ}. VGa@DNXZE*su\"6f+ vy5ȷ0ҩyOF#rEZ (;L i:(Zۦ(M?HsR0A(1ui0 t@NփVwJ`!=��#�Pa~1` = 7n89G5] D "#'`Bi `"f1�tZT֨SLHS.a�j`$yk@&# >Ђ'@/P(XbAYV> @@ l�R$kNA۰0CjXb{>Ӌh)6�?eD[șJːt!)'0>:~ mawCKpe`(٤x`N$dUhHa PA�pCyN `FX Ft( c4 Gz4[ņNStc8z4$qb4\eG+_eB+=(-1>FSY*QQ ieф6 ThB zR]L�(1kb 5CL`�/-4`;A D#!/!A`?xz<hAEgP01E '!D(<83p`MD"D+eG"~7B!\HEldK y(?|F ›nG�# Cb:"!@ Bd# Fb8xwm< 1 bbl * h@0N`#vZl9XG0<` xP8E2-tCa j@ UPЧ`HѨRVb:#cB*d#(GA1uhJBQC{$"r6HCD`DE%(?R@#~PL6�^{B Th>HfP$r3+(CD  #0?a>D"'!@ !�> Ww&6~AR&FhDMЀZ(*Q]"?"VDn7m#a3CXJdl ap3G8b" _�fQ?jGt4 Є~ E/@~Oʡq?G07MԶhș <3d!HC a•0s"F)2*M șP54bG 7#mE4"h!|"hND(@CkXްv X'0 .\7 p "HET{X$H-b^"(B%>.wH*G\$cN#ߠ/Jpԣ`hGy/щJKE'j+tHx䑇1t;B@_O opH;0SH00DdO GGt<| |օh;k�p>�Gv(4`(d$@\ T"A>)Ɯv<i%PPGC{&()h*(h*vhSewpdH0U`oPgN0�MІ{0-Ѕ0m d T�ttGLD R,L| REp!g/A `ب  茎vސ Yǃrg^1u;0m0*( #hF 5 �5yk$0c30a�UЀ{uЀ1x�D�p4C @tȈ,"zhd_>gkH`h@JDKI,L`$ c(e h2:7"\(;(bzSL I/]`'0=�}!0�]OpA9PeP{xЌH ,D4LP@MS[pvn[0=c`pswngOuBȤxȄ835I01DʤD&wtcmsM=$ Уh[j(KBsBp0#dc!0}sCt}HPGEP�d@ GFkde�9!�H JC|ϧ|IR),{a3Ѕ!p{%2cNh$B&ZhP)a'ES"KhJhpC '[0^0ȱbwn_pG9�EP{Ps\ 4H@ Q4`04]s@Zp-+Ou#],H7La.SH1Xa˄$G_t(„P%LȂh tbN|S&,>3JmC,-=2g�'%yEj)+@�D@T@/R,#d/̻2_L1Ĥ ȃtSȐ!(l[Pq#[Je޺6Ƞ蘵LAZPu*iy4P9*EBPy{FAq{nl9*Iv@/9@@Q@Ꚇx<GVp+ɧ+KDVp+d (p!Wp@ p{gpypG_B_H\;N)5/ihS#((|v"k;ȓҶR# Py^hhY4P�Y*l0)ziy͵?Dod@j@Ă*f70]dCAF|- !JDA`�2p>><ȧnm2^̛^uP >LGAP {PNq鴦Hc@J.*30B^P\�n~./AAAL/^*aP�%�!!^N56MPeC�]P'HDtD@跦.QQ#Hd0Dn<^&/A!qg�a,a0MC�5e0PE0DtQĂQ16B1)!1/: �0飘�~eə�AdA�mC0y@SR{0=pIQQ=tz;A鞀qXƎՅ_YYEZE4Zt{;as #0{0S03I!D믒` ?t?CIXA<^/`/YBP )¼Z!Y^>E0 5^3YXl_~n`xmiw0KYJإk]4LD B5J pI5bMM۔ M3ނ-Jq4M[04 :vmmؖm߶޾ݺ:s<�U�pBY(]E8,A HG`R3?K�7({`F ˽۽6`�}N`gv {y{�)`{NM=;ă;C=C;C?<C>F (8R{0xpc&& A,C pD`HWj<i~v`R>V`8i`S>Փ?i>`9:i0mC:;[:s<s>s9s;s=s8D@4* :j�zغH`(h>&+5 :��NӅNΓR<+?:իZ�NB+ ׯӆN�FiD`<8V[Tc囼%(P˛qJΑ$HLf l&KK*PBTk�f (J({ȇNM2^~Szz {@`('x|~'y'M.5~(`֧~ڧy'Wgxg})2g(;K(#RT@{N?.D  �~M`}76`r(v`J(7>{÷#'~w~~}{xz@8@@@폏Y(t@$(~I9IyYD~(xk7{~7xo7y\�DџԏT@_@Ol47~ xWxxثw}| 6v O1(!N�Q)Pє� L `@�PJ�QAT,h%P*\r͓&O"*)J�T`_�+\v:J+ Q4Ĉ\ lp`A[b0*eAqSB6(HlcB5"Qln0 A( HYV.λ&(d_*Y7lݿm}k,_r +Ԭ� $hP%!!E 򄔐$C B#hp+ uJF z%I&…+!;}IF O \Е S "8%€&dJ PJB�Ӱq&Л5j|jkкSZu*@QLnfJ`=&pL0aiSϚ9gg/`eKZ2xc7^` Y 4dn�{�<|cN8~ԉ^|%6)h˦�zaT� o?^}?7 ԟ-<t= $m2"0�+\Ë0Ž4܈,ȣ2裎1:w�DPCp/>M ބO0O4J6L!0H3I73034̳26s1s537�������2�������6����������������������� ������� ������������������������������������(����������������R���������������/usr/home/fatal/themes2.tiff��Created with The GIMP������ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/timer2.tiff������������������������������������������������������0000644�0001750�0001750�00000001160�13431646201�015755� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������MM�*��(� P8$ BaPd6q(PD#Q}=#MC$r)f)%q9g/Y$tѩ9\C#MHS%ܶwQUUK%ZHm3`[lvkb?ZV]'e`nx* y_g{^{].'+s֗ h\c~g`9wn[&P\|~^>/#9~aW~zo7&SQ~6GN>߿z������������������������������������� ������� ����������&��.��������������������������U��������������T������\�������(�������1���� ��dR���������������../tiff/timer2.tiff� Imported from XPM image: timer2.xpm�H������H������ImageMagick�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/msty3.tiff�������������������������������������������������������0000644�0001750�0001750�00000015120�13431646201�015633� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*�������������������������������������������������������������������������������������������������������������������������������������������MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM��������������������������MMM������������������������������������������������������������������������MMM������������������!ppp���������������MMM������������������������������������������������������������������������MMM���sss���sss������ 000"���������������MMM������������������������������������������������������������������������MMM���������������XXX퐐b���������������MMM������������������������������������������������������������������������MMM���sss���sss������퐐���������������MMM������������������������������������������������������������������������MMM������������������퐐���������������MMM���퐐���������������????_Ow7Wg'';[[K���dddPPP���������������?ϼWW;˼˼S==ͼU9ɼQQ~����LLLpppb���������������?ϼW;˼S=ͼUU9ɼQa~4����mb���������������?ϼW;;˼S=ͼU9ɼQa~����-PPP���������������?ϼW;˼SS=ͼͼU99ɼQa~����$$$͐"���������������_WW;˼S=ͼU9ɼQQa>~d����$$$͐"���������������W;˼S==ͼU9ɼQa>~d����$$$000"���������������W;;˼S=ͼUU9ɼɼQa>>~����444000"���������������;˼SS=ͼU9ɼQa>μ~����,,,000"���������������;˼S=ͼU99ɼQaa>μ~����000"���������������;˼˼S==ͼU9ɼQQa>μμ~����000"���������������;˼S=ͼUU9ɼɼQa>μV~X����$$$͐"���������������;˼S=ͼU9ɼQa>>μVf~X����$$$͐"���������������O˼SS=ͼͼU99ɼQaa>μVVf~����$$$000"���������������˼˼S=ͼU9ɼQQa>μμVf~(����444000"���������������˼S=ͼU9ɼQa>μVf:~(����,,,000"���������������wS=ͼUU9ɼɼQa>>μVff:~����000"���������������SS=ͼͼU9ɼQa>μVVf:~p����000"���������������S=ͼU9ɼQaa>μVf:~p����$$$͐"���������������==ͼU9ɼQa>μμVf::ʼ~����$$$͐"���������������=ͼUU9ɼɼQa>μVf:ʼ~����$$$000"���������������=ͼU9ɼQa>μVff:ʼ~����444000"���������������=ͼͼU99ɼQaa>μVf:ʼʼR~����,,,000"���������������g=ͼU9ɼQQa>μμVf:ʼRb~@����000"���������������gͼU9ɼQa>μVf:ʼRbb~@����000"���������������'ͼU9ɼɼQa>>μVff:ʼRb~�����$$$͐"���������������ͼU99ɼQa>μVVf:ʼʼRb~�����͐"���������������~R�~�~"�~�~�~|�~�~�~�~L�~�~�~4�~�~d�~�~�~�~�~X�~�~(�~�~�~p�~�~�~�~@�~@�~��~�����DDDM"���������������������������������������������������������������������������������������������������������������������xxxU��������������������$$$-888888͸xxẍ́DDD$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$MDDDMxxxȾ�������������������� 4""""""""""""""""""""""""""""���H��������������������������������������������������������������������������������������������������������������������������������������������������������������������������(�������(����������������������� ������� �<���������*���������������������������3��������������@������H���������(�������R���������������/home/id/development/WindowMaker/WPrefs.app/tiff/msty3.tiff�Created with The GIMP����H������H���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/menualign1.tiff��������������������������������������������������0000644�0001750�0001750�00000001442�13431646201�016616� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������MM�*��Ѐ� P8$ BaPd6q(PDQX^;Hb9$9U+d\Q.K9c7JY 3dR>R*dFQjTJNJkRj_׬6 Uemn n5:ңoA`pX;ffәlEc9 vNەVm%G*Z ln[+a nw[7o9I+5rx2NehF_pߡ=xGx6.o?_ +�@#įӲP; Ap@HD; p9 6qKE\\Pdިq ;mR0B#F0L#,LImZʐ:$G_/E LDl3*RDMS,7MT8-IJœh� �������� ������� ���������������������� ������� ����&����������������������������������@���������������������������(�������1���� ��R���������������../../WPrefs/data/tiff/menualign1.tif� Imported from XPM image: m1�H������H������ImageMagick�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/speed2s.tiff�����������������������������������������������������0000644�0001750�0001750�00000001002�13431646201�016113� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������MM�*���� P8$ BaPd6DbQ8V-FcQv=HdR9$M'JeRs�K3 te5g!8h4 _FOhY&BRS JQUJ}>Z+Պ6Sm5],-굶S\n֪fL+z'\o^19<W-fsYw=F ������������������������������������ ������� ���� ������'����������������������������N����������������������������(�������1���� ��R���������������speed2s.tif� Imported from XPM image: speed2s.xpm��H������H������ImageMagick�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/dock.tiff��������������������������������������������������������0000644�0001750�0001750�00000022430�13431646201�015476� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*�$����������������������������������������������������������������������������������������������������������333iiiy]RRR,,,---% ...\\\��������������������������������������������������������������������������������������������������������333iii))) 9t222BBB----NN\\\��������������������������������������������������������������������������������������������������������333iii)))qqqyy\\]]]}}}~~~M\\\��������������������������������������������������������������������������������������������������������333)))111YM6222LLL)))999-Mvv\\\��������������������������������������������������������������������������������������������������������333QQQIY%T ZZZQQQ```y!66fff\\\��������������������������������������������������������������������������������������������������������333)M888"^^ttPU~fff&&&\\\��������������������������������������������������������������������������������������������������������333Qqqy--emmm-5Y&&&\\\��������������������������������������������������������������������������������������������������������333aaa!!!aIIq))QI 11A!f&&&\\\��������������������������������������������������������������������������������������������������������333aaa!!!>>>^nnn...&&&\\\��������������������������������������������������������������������������������������������������������333aaa!!!nnn...fff&&&\\\��������������������������������������������������������������������������������������������������������333\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\��������������������������������������������������������������������������������������������������������AAAAAAAAAAAAAAAAAAAAAA��������������������������������������������������������������������������������������������������������AZZZAZZZAAAAA***AAJJJAA AAA222AAAAAbbbAAA��������������������������������������������������������������������������������������������������������AZZZAAAAA***AAJJJAA AAA222AAAAAbbbAA"""AA��������������������������������������������������������������������������������������������������������AAAAA***AAJJJAA AAA222AAAAAbbbAA"""AAA��������������������������������������������������������������������������������������������������������AAAAAARRRAAAAAAbbbAAA"""AABBBAlllAAAA��������������������������������������������������������������������������������������������������������AAA***AAAAvvvA666A666AVVVAAAfffAA&&&AAAAAAA��������������������������������������������������������������������������������������������������������AA***AAAjAD4AAxxdAxAAA((XAAAArr A666A444AAAA��������������������������������������������333333333333333333333333333333333333333333333333333333333333333333DA88$A A���AA""AhAApHArAA444AA|||AA��������������������������������������������333MMMMMMeee%%%iii)))\\\AHHA���AAANNNAhhAppA00A22rAVVVAA|||AAA��������������������������������������������333MMMeee%%%iii)))aaa\\\A(A A666AAFFFA(AAPPA2AATTTAA<<<AA��������������������������������������������333eee%%%iii)))aaa!!!\\\xAHA88A:AA(A00ApAARRAATTTA<<<AAA��������������������������������������������333))) 111QQQaaa!!!VVV!!!\\\TTAA,̜AttLAAttA$AAаARAfffAAAAA��������������������������������������������333eee;;;+++sssKKKZZZ\\\<BAA,,A\|ALlAA\AL,AppAAAAAAA��������������������������������������������333eee%%%J<2 <d DxxdYY\\\A\|A<A\AllALLA,AttA4AA&&&AAAAA��������������������������������������������333eee%%%eeҒb"Z���D8$\\\A666AAAAfffA&&&AAFFFAAAAAlllAA��������������������������������������������333%%%eb:Bj$ lll4di\\\AAAAAAAAAAAAlllAAA��������������������������������������������333kkk%%"BTl???CCCXXD()***nnn\\\ATTTATTTATTTATTTATTTATTTAAALLLAAlllAA,,,AA��������������������������������������������333+++EEE\$--mhII)333nnn...\\\rrrArrrArrrArrrArrrArrrArrrArrrAAAlllAA,,,ALLLAA��������������������������������������������333KKK<*F f:&JZ::FbBISSS...\\\TTTAAAdddAdddAAA$$$A444AlllAA,,,ALLLAAA��������������������������������������������333iiiyy\A.&>>Ff  \\\A|||AA<<<AAAAAlllAA,,,ALLLAA AA��������������������������������������������333iii)))..���֎&&FFfzjj555ccc\\\|||AA<<<AAAAAlllAA,,,ALLLAA AAA��������������������������������������������333iii)));;;[[[������ccc###CCC\\\A<<<AAAAAlllAA,,,ALLLAA AAtttAA��������������������������������������������333)))###���������######ZZZ\\\AAAAAAAAAAAAAAA��������������������������������������������333������������ &&&666fff\\\333333333333333333333333333333333333333333333��������������������������������������������333aaannn���������YYYJJJ666fff&&&\\\eee%%%iii)))\\\��������������������������������������������333aaa!!!^^^���fff&&&\\\%%%iii)))aaa\\\��������������������������������������������333aaa!!!������fff&&&\\\iii)))aaa!!!\\\��������������������������������������������333aaa!!!nnn...fff&&&\\\MՕEYIyIyy=aaa!!!\\\��������������������������������������������333aaa!!!nnn...fff&&&\\\???/_7OW'ww7K۷K;7k!!!\\\��������������������������������������������333\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\???o?o7Ww7/w\\\��������������������������������������������������������������������������������������������������������333eee%%%ݭ6]e???o￿W{/?\\\��������������������������������������������������������������������������������������������������������333%%%S95%[O???'[K-YA{??\\\��������������������������������������������������������������������������������������������������������333dR!]Ucў!ח??nnn\\\��������������������������������������������������������������������������������������������������������333X4X8T(4x"!~ww7??nnn...\\\��������������������������������������������������������������������������������������������������������333j\av Z&lL$(ag??nnn...\\\��������������������������������������������������������������������������������������������������������333vcEiZyY!ӣ-U 2C??...\\\��������������������������������������������������������������������������������������������������������333iiiV.E!Y! I*>2Db!.??\\\������0�������0�������$���������������� ������� �'���$������$������%��������������������*�������%���������R���������������/usr/home/fatal/newprefs/dockdone.tiff��Created with The GIMP��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/Makefile.am������������������������������������������������������0000644�0001750�0001750�00000002433�13431646201�015741� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������tiffdatadir = $(wprefs_datadir)/tiff if ICON_EXT_TIFF dist_tiffdata_DATA = \ advancetonewworkspace.tiff \ animations.tiff \ appearance.tiff \ clip.tiff \ configs.tiff \ cycleworkspaces.tiff \ dock.tiff \ dockclipdrawersection.tiff \ dontlinkworkspaces.tiff \ drawer.tiff \ ergonomic.tiff \ expert.tiff \ fonts.tiff \ iconprefs.tiff \ keyboard.tiff \ keyboardprefs.tiff \ keyshortcuts.tiff \ menualign1.tiff \ menualign2.tiff \ menuprefs.tiff \ menus.tiff \ miscprefs2.tiff \ moreanim.tiff \ mousesettings.tiff \ mousespeed.tiff \ msty1.tiff \ msty2.tiff \ msty3.tiff \ newstyle.tiff \ nextstyle.tiff \ nonopaque.tiff \ noopaqueresize.tiff \ oldstyle.tiff \ opaque.tiff \ opaqueresize.tiff \ paths.tiff \ smallwindow.tiff \ smooth.tiff \ sound.tiff \ speed0.tiff \ speed0s.tiff \ speed1.tiff \ speed1s.tiff \ speed2.tiff \ speed2s.tiff \ speed3.tiff \ speed3s.tiff \ speed4.tiff \ speed4s.tiff \ tdel.tiff \ tedit.tiff \ temp.tiff \ textr.tiff \ theme.tiff \ timer0.tiff \ timer0s.tiff \ timer1.tiff \ timer1s.tiff \ timer2.tiff \ timer2s.tiff \ timer3.tiff \ timer3s.tiff \ timer4.tiff \ timer4s.tiff \ timer5.tiff \ timer5s.tiff \ tnew.tiff \ whandling.tiff \ windowfocus.tiff \ workspace.tiff \ workspacename.tiff \ xis.tiff endif �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/keyboard.tiff����������������������������������������������������0000644�0001750�0001750�00000007704�13431646201�016365� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*���� $h!B &l"F%j1bƊ'n &J$i)RJ&m2fʜ%k9rʝ'orp(VJZS[FTb*5 `B0kÚ;֬lӖ?mbזvԵ=[~vumdq#͇8'9d<f֢[.Hv3l¨3ѿ Yߑs~]>{Ş:ߒ.+{�3x ʜUKM[0ߘ)mw3ֿB)r*(HjZR)b(Vi%6Xif]w+ywy]5R>cw9>OE* F+)taN6@0%�M25ldJ( ( ?fb?WwMcCGb)ecq蠛L(?*ʘP$ g1hFi˝';W~x>Z9ޘ>No!!qA)d!mr@[�Te4vc<Xf?h,>:j\;H%T6}fϛnz v8d .9s3gyra.oi?Zh?#? (If"b+衋.ca*xW^/ㅗx*k.'>Y_ VՉm-VWB~'+ :cz蝙b)-zcIzҋjnCK2&-sd?8c8wy=tvaa`I$XfΝ0B ڃ-٨[93i{f!Y`NEaYN?H|;gEͨ+&)UFЏME=uulc GCC`#G' mhQ6QaC1J5x qW8/f7$&Q 3vm h50N?]!4"3b <)kd1y]6.�*Џ>ӣ ECL}Z.a0Sa48eQDc{D*QDk,؍�zЃV/F0QhhB7TU.#v,2Jd`V%a8ZQ|)lnOy(zoFuL?6v<ԡ^4=:2 OB1 ك(:b[ G]_| uhF 1- ]X4ZVZ.,BK<C #6hF.Q2(A2# py($ fPHmH�X3>0-( шE 4$ETЖ!t 81J\E5V! z4ff7x bM{ o�a vG"Q|&_3\ *Plb~F9 CXQR"AkB#HN_@O0eaՓ!N‹}vbJGmшbh4uJu=leJ%=Em岠f4fI󈂕I C1뱎ç:q8p ]i,d[X1wt n?`Ku�SXs@Tۓy,KXR鄍IG.ĭ\c$sQ1$", ۂBM)N.9]ֲfg‗9Ꮦʆa2obc�Z�񇁄??:"h;(v0.;c͓XbNؤ/vlj?b8up[Q7s?`8kp~:I/Ë �j35T㏹~C20f:Ii_|* x05kMc\Ci,`bO X Ȯ  XcRi-O:Ys鄝a8v6q\U8 >1NCuO_F{܆gtNW1H eɁ[ # )F<X'!F_BK-y�B\T$?LB:y&M۷kc^ƅapjh>W\ax6Bx!nV'xG'xQ O?8S(%t8NM`HC$/r{Fb,?h*q. iz!f?g*g"]0k  QE@-Pn6(Wp7THLbg!%mC'u8L*?؅#S8a8YiY%j �nY6؀;dpg0fcpuKF'82p3m{X6\+*5RcgZ #uTGq� 24 &g7̄Wȁ<ȇoAf.EJ (@wt|u8S.3apxlb ϒ@i (*D/],,\A'iB;ns oZ$7�R87SR{@O&c>bJ.I KxXH2(8.6Agw (g8u 82PvoNd0؃]J1p]4{LAs/ghN4 ]xS:4)@IB0>�� Y7�<P MV�,*hK5}&lGpgp70OHTHoBRQ*h_fme_F_eeu^Kd W{j3 ΂-, WJs. L  |X`{$�(,_$40_ ,$H(HhD$ /<X�"u5]`)28 {P(:xbw(OȊU:hVFhmhv:.0%v[؃J+tJȏ҄dt0E%e0G��H}E��(` i/s�p| ,>z_Jh+L+zXL"8ʅ+Pxw̄ЁLJzhb,bG Sj?Э.Z4 }L,3/KE H<dZrr ` E^=*$P+0�dp ;HJ„-B`l.8G x'qOPl0xwXMVT`+BD >K��-F.cs@ZT @i`; iz5 l:FEFGn\�R،H:m`Ch@M2>S7.Lm)V ZLAƨI�h�>oYm쨎8C@� $h!B &l"F%j1bƊ'n &J$i)RJ&m1�������0�������0�������v���������������� ������� � ���~��������������������������������*����������������R���������������/usr/home/fatal/alfredo/kbp.tif�Created with The GIMP������z��9���������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/paths.tiff�������������������������������������������������������0000644�0001750�0001750�00000011156�13431646201�015700� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*���$h!B &l"F b)j 43 N�O 0iIS& 2E긩ɐ19 &N ޼sR0O< /dђsf=Fjf4m4Y$KU7k,M7/ۦ|rsXTe*Įj9[ݛc'm۱n&:T5s6,c q˵-GvŖu3?;}Ucxk6m۴eVJ`v|1Gd[<[wn O 0�;O.PNj0R([~Mٕǖ#[0$ ɹk_P@<`�*$!e#4f�.,By<׹NЈPƘkg9 *T!R?wlArb#9 Cp0,Mϐ=ЋP #aQiȑל)ϕ^x'{@FXPy! (iYC9R:`$jsت y٪-В(bhFi)m!Fʑ! .8gMVbQx[ x{as>aD ]v�k~ic-a~xSrʳIu%:y4\L Ygx E�hEC ha5rJ@1K&�5_YaE:U\h �x ��;^觟U tT+ �0EķX_tw�bၤt76`!pa\pA<`]`q 4 �`&A;޹㜗T FB Xf#9 ]?F|4azCH-`;<>yfa'?O>�/ vZA�Q?,�8qEMp�a@KR�v1)L`X"B \@ %B 4``c#1HVG>&1|�<r ( 9 B�ը8$! 6 ,`{#.v?(ΐV܄CP0&?d! ;�" @_?8P,H`,`;ӟ& ѤUh" -`f`9a7Ó8>V!IJf# a #pgF0|k4#V?Y7+�̟ x &ap�7%G31�;8Id#�HA| x#gQiJGf&0 �N2VA@<%O>+nH\wM0c8) Nh`&�8g)؞\ `cHZ ( JPbmCRN0#�F&).KP<dr��SX´g@iF:Ң ̣dPЃ 9+{V4M/!Ȃ @/@�o?"!-oӽZ6 jW_⒗xhE;Z8:$DiחS �G�GpX�PXD�A3\1 ^ۋZW)(@,|b[#A :.="")` vH1޾7` e`�B�#\B`+K>CR5_�xe�#W.&`S&V0H@# @!A0H 汯A"0AZ E# G`\&NcZvq5 �>pF /:V l ]AP_: p(LIBhD(A;n|/.B G/pYM> F~.E@~q(# p 5D�Ρ}`A._ WWXXt8=d�n 5HCza�}`(nqJ{>1mX # _85:`d@܁BP#Ɉ�4MV\E2\ @( 0'? XB2`D"P+W,�1P�شoh P=7jjq4�`>@1oPH&2X&R}~ f(ZцV| {x;.Vk*#/ ̈́^DbʀL`paS;q A*Xopxl�"D� @D83tMAmDc 88N(`t�8q/_?$D\B(z8S8TaD{4@hhW a_a_F7xsXbpX&\'OA  4$DS;-(bf H �j@PO1^ @�X`rhFE\XX- a+&,Cu؂=xB@|]�^.xkx1)�)g�BF`:PkUE*-Enh&hX� sD� @83�~=iVHdC~{'g+r8N84t?XX|~/xXA�IvP.ȀTYs@c=p b(bx'F8L$NF&'6%4V`VhNG+0MX.n  @7@8H�7'oM;7Ȃ$}D [̏aLʀ M~yk @]8%X0}0||JcB=AI?M\x1Xm؀TGVP6`O}Ct[b6+8ȄLH6O@UPsNYR7DW Il=AsY 4p425|E3mJeF!3CW,qbY"$$�$D$@^eBat)�y"H\ �\DF$8=81Rr$_G$@vO^�hzh4@8W5~qGP,�:Z"w؆}8?43 w c8?w|H\ \cv?g)-iRCCJZ PȆ,(�� i?Wpgpfh&J RtqAng)Xh*�sއX%�@;gpO�^O�Sȇ�<"+(*y*t+u B@ z�X 7r :[H4fh&J@P,vBrLhEPSP�op58+a{Y(zhcy/<pG|1xB%b/ .1G7 *h8tH*@d D-^%w%Wx!hrBPqWR(Gv)}d'p/8s=Q(\[\3 Ȳzn!- 5I}Ю*Z؅$b@VfIÁvh`>t~gC;hvn"�>aX%j5P�Inȇ6E^ x/mP< � 68-n1\FX&sCn bPHP� > Q)�'n`Q/C ${I-8!X-0nP^iHvo@%B B8Wjq:Y%].E\ _djhKD�o�*afCiX�"MЂhx' P�6@x3�@$�p." "Bzdm~~V.]O8@DF^$Ww%-T/ �/�$0Q}`AP|fh1g`z&S|B,h4.Ad" "Dxj�tUPx;Qf$Z]؀UX7a"8@ ~QK%�RCrp�Gpy5_"&4F< r n/ĉxjpmPmt" rm0 _)#YQąC{*kx;`�J AP"+ĕ,E$E6,HL�2IruB7`'H�'Z?aOc83-@L8@XBPp|DqFXBęoH|�R@8jNgRXpim}R&P8�N\к\BzDO_ǒCAEola\E_#_D-IB,I4B%Tٸ߄M$�pܬG@�������0�������0�������F���������������� ������� �"���L���������������������������8����������������=��������������/home/largo/newWPicons/paths.tiff�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/opaqueresize.tiff������������������������������������������������0000644�0001750�0001750�00000022457�13431646201�017303� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*�$�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������YYY����������������������������������������������������������������������������������������������������������������������������������7�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������||�����������������������������������������������yykkww�����������������������������������������������xxeezz~~�����������������������������������������������uu}}ZZnbbii~~}}�����������������������������������������������mmvVV{{h^^]]�����������������������������������������������||wwQQ`TTyuuoRRii�����������������������������������������������vvtthhoOOuqqYOO|GGiixx}}�����������������������������������������������{{ccuWW_TTrnncFFWWhhoooo]]~rrȐ�����������������������������������������������XLLvAA\\ddee]]uUU}qqrrǏ�����������������������������������������������gKKVV````YYyAA\PP{{~__xx;����������������������������������������������i^^II__aa]]NN]<<e``ZNNOOrrB��ɑ��������������������������������������������~__cchhbbUUn77B55E88r??\\llrrvvzzyy���yyyyss��������������������������������������������ffiikkaaPPZ77XSSZ88OO``ddffhhkkhh���|qqjj��������������������������������������������~ttYY``VV@@A++=00l55SS\\\\\\]]^^UU���}yy{\\qq��������������������������������������������sggxEE//V--:00M,,HHVVXXWWVVTTKKi77���QEEKKjjssuuoo ��ll�����������������������������������������������������������������������������������Z����������`�����������a??VVffhhiillR��ee�����������������������������������������}}d@@OOUUSSQQNNAAR22a]]K??q99WW``````dd`��XXvv�����������������������������������������bCCKKOORRPPGGd,,D88a]]Y99KKZZZZYYZZ]]w��eegg�����������������������������������������`UUbBBo88GGIIAAR22`\\H==m55QQXXWWUUUUXX��eeZZxx�����������������������������������������WMM^??_;;W88I>>b^^Z::JJWWWWTTRRRRTT{��hhbbjj�����������������������������������������~||rppMAAp88SSYYVVSSQQSSMMM��iiqRRukk��������������������������������������������������������������������������������������������������������B��y��~��w��`��M����������XKK`YY�����������������������������������������aVV}FF[[XXRRHHf11V66I<<H@@uss�����������������������������������������x]]cc[[v??b>>Y<<KAAomm{zz�����������������������������������������{jjmmsMMYNNyvv������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������))))))��������������������������������///---+++)))'''''''''((()))*********+++++++++******)))((('''&&&$$$#########$$$&&&'''(((((()))))))))((('''&&&''')))�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������0�������0�������$���������������� �=���$���������������������������@��������$������$������$���������(�������R�����������H������H����������/home/donamo/src/wmaker-crm/WPrefs.app/tiff/opaqueresize.tif������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/tnew.tiff��������������������������������������������������������0000644�0001750�0001750�00000003750�13431646201�015537� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*����� *Pa/0Q#�a�O<fL�&Bȴҧ���`" NP"� `ÛR�l �� ? �I%dQ{5(8@a s= �< 6ms\l9g׌YK `L�Wyf�4h`Y >kP$�ԀFkNpDЈw�u8gtRd,WeGG>`#~ t`=�SU\`��E@dj�X#UxU�4@ą"A~q pa!LS1�( �Ob-*0#`� !фc$B=1A$@��/UL �81*e"�L;ʐ,4�<2ZC&�odjcI[�# �Of�eTOvlQhHPAo]?r�@E 87h㵅j  bFtN8fITa([*:i [ ph3G@�>@fO?��|HP��[PZDCf3L``'v^�C+fiap�h g)9~cu1TCE�xf``z?:r{�Q8E@o�";M� U hfX䐻N��9i��PKVwiW C)y�RE>JF��G�d|�B0`jg X�+@޹a >A 5�@$G3&1�x�(\ �xu>�hz@B�;�sA�.X[G X`(Bʱ+_,{BF|"2u�R@�7 | � 9��^b`$J'3t' ;H% gBta# 6@j��BM0TH 2pi�'M�?A,� �Jb):?tFLlb@B! $4\#2D6p��NcZ0d)K;3G64�Џ } �CL &K/ C'8ç1 Dr2��f  (Id5OD@7TL Wa� I8 @/>*O`G #+ m? �6U^į PJj6T"H64]@@��T>,+p NP6&XB?\}H'Ћ~pXgNF7]GB $5و0 x? Or:F&"laAXh@rG�@|9`&e�0f-t@� @P S�e#� =0 Sa+XAP�(`dS+?@ &?< 0 �~x4q|'z00370 " ")\r3:5!N:DYf(da ������������������������������������� ������� �2������������������������������������K����������������������������(�������=�������R���������������/usr/local/GNUstep/Apps/WPrefs.app/tiff/tnew.tiff�created with The GIMP����H������H���������������������������WindowMaker-0.95.9/WPrefs.app/tiff/timer1.tiff������������������������������������������������������0000644�0001750�0001750�00000001160�13431646201�015754� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������MM�*��(� P8$ BaPd6q(PD#Q}=#MC$r)f)%q9g/Y$tѩ9\C#MHS%ܶwQUUK%ZHm3`Wd6ZŚu.VU/T"wK yK=Mka8W`d|NZ_;2}&{ W躝~[c-v}j-! #PynWW`u;]<Gc|8nW~[4:mwSmo>F������������������������������������� ������� ����������&��.��������������������������U��������������T������\�������(�������1���� ��dR���������������../tiff/timer1.tiff� Imported from XPM image: timer1.xpm�H������H������ImageMagick�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/tiff/opaque.tiff������������������������������������������������������0000644�0001750�0001750�00000003756�13431646201�016062� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������MM�*��� P8$ BaPd6DbQ8V-FcQH�'q4GR\[)Le)m$J%r} VZ DfޛLS2y#Ug=IBHiU*fYRZi\c ҧ:Y-wM!3ەwqW]ۍagL+Drٺ!hZf3&gMR,sa !kG[nz6">keVp#H{;cߑ�g/4VVvG#߽x$nX{A`RB D$򿰫vB"%4"Ns1JZĢx!=p)DRï=ǍKI =zĔlBH ˘%*ܻ.|J p i s@R, �t.B &˒h jBʹJΪlNn /$3"EJO1�U8=BBR%B,XT0es=IDRd+GԊFaBDLVcH1)đDDS[Zm%[)KW@)$JGqjCXiu}T:_C2P1&IuEy_ ו㔑Х^X[e!)]g3 RKO)sV+bR}wPc F 6dd_*$]PI.k=F!☶^-?N ԆM6EҲ/kggx́9 hB0 ^�b~O.ɪ1cZȃ^/pF}byԤ9Jsg+nX oօĦunĹN~~lKDUX1#!y^ufBЪG /sIx?L,'z l'euX}H#Q -%f% ^y> `p8VDɔe+n2T~7hcK% o\xJ2G|a5j/()% |JC(!Yh;ǘUDp[8VZ߄Rnح ;CDa}F(#|:}uڻQUGpC+.Et<]P^D # 9/$H]#Կ kQ.njdȕWŁ*^^NZBCXXg 1ID(rE9+# s=.)# ,]: Pn#ē$]!<'Sjmi7.eE̒Ix9A=% ^t.jz$2->5=URRGڅ!+2SaCMh4Qd,N4Fp"GIFp˛NR+EK(268W$}YE>W8iRMWl9{# $kcrM pjI-guȅZMi셣 � P8$ BaOd6DbQ8V-EoTv=Gc29$M'@d]&38U6N&y{;Ph9/Ra ULT)h1j*nZVlU _Uk5cJR*V^vݮz_W% ^pwێ7drR��������0�������0���������������������� ������� ���� ������&���������������������������*���������������������������(�������1���� ��R���������������opaque.tif�� Imported from XPM image: opaque.xpm�����������H������H������ImageMagick�������������������WindowMaker-0.95.9/WPrefs.app/tiff/textr.tiff�������������������������������������������������������0000644�0001750�0001750�00000004352�13431646201�015727� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*���� $h`�0�‡ ,0NJ'n@A�CPZzX:�p h�F��Wd�taB]3QAS63_C'&�D $p@aV*X�cƬ�tTĢ (*p%Z3ߕ9T�%XS4�d H0��6t`@9n�� C *@f=[9"YTTsG_/J)& =E Ҡ`B`\@ `]8 xE@@�0@au]Y1W$�d* Gz??j?jpÌQa?`d=shPPHBybܙ$Qyw�<V؁8# �*,Ap %yܠ*\KI nY>�넓'�s�bN dР!>R�$m�Q6ZU`E*Lu+j?q/*!2* vG0^y~Lj:N�:�:AN@Hm@^M�{S3}@D A g(Nkuq(ĸN~ >w0�aNyT�@Y�qlqڍduKAM ʛ G?@<!@Gq#/{� |�`X^vꄒ:aN:Aq^@RF TKpstXi$M|w Ab_�J`N�#��: aƘ3ڝh@[A&�I2(4PC̡gaagxX`зhBc pb_1( EnzP"p��ȉA<*D4�@xC,YH @`>Z�Pa\#,�U?5u x0^u#4[.�U`@(KL@0- � qH0رaH�r � cć{Xъ? - # 4Ђ?�3S>`B 8�AEJ�J`p!dFCn�, \HD V'`/s:0!�ekh!,!-p <D@MO$? ^Ϡ.3bPT!�h S V�e l2Z85p +"|x@?3$3!�SAP$ة pf 2`$AKe BD+tLL�@`DoT*}Q' @:܁7JĸG>Oe(D =!C)aFS$BX!BUnUC`@`�Jg.ڡ n@=܀)uxU,\8A|,Qxp2dH )`+|Lzx*#H Lu4ED,J` H|V,F)\r8kjY'T ?P7I4xA5b2vHmʑC"B8o~r@�0CD��$` H@dlJ8pyR XDCH4*PIT! DHQ L9a� @  F4-!Ƚ� (J=�0e=` " ᛤQW Ո ;MT#X%x!I04T"S�a N�ѐ�vP�]@ 0/` r~/J 6" !4 @ ٚvJ\�k<�H x�@�JZd"�r(#� B$�@wv8PA �DKB  t>Z``�@F" ������������������������������������� ������� � ������������������������������������K����������������R���������������textr.tiff��created with The GIMP���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/TexturePanel.h��������������������������������������������������������0000644�0001750�0001750�00000003411�13431646201�015543� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* TexturePanel.h- texture editting panel * * WPrefs - WindowMaker Preferences Program * * Copyright (c) 1998-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef TEXTUREPANEL_H_ #define TEXTUREPANEL_H_ typedef struct _TexturePanel TexturePanel; TexturePanel *CreateTexturePanel(WMWindow *keyWindow); void ShowTexturePanel(TexturePanel *panel); void HideTexturePanel(TexturePanel *panel); void SetTexturePanelTexture(TexturePanel *panel, const char *name, WMPropList *texture); char *GetTexturePanelTextureName(TexturePanel *panel); WMPropList *GetTexturePanelTexture(TexturePanel *panel); RImage *RenderTexturePanelTexture(TexturePanel *panel, unsigned width, unsigned height); void SetTexturePanelOkAction(TexturePanel *panel, WMCallback *action, void *clientData); void SetTexturePanelCancelAction(TexturePanel *panel, WMCallback *action, void *clientData); void SetTexturePanelPixmapPath(TexturePanel *panel, WMPropList *array); #endif �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/������������������������������������������������������������������0000755�0001750�0001750�00000000000�13642365214�013645� 5����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/Makefile.in�������������������������������������������������������0000644�0001750�0001750�00000046444�13642360054�015643� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = WPrefs.app/xpm ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ $(top_srcdir)/m4/ax_pthread.m4 \ $(top_srcdir)/m4/ld-version-script.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/windowmaker.m4 \ $(top_srcdir)/m4/wm_attributes.m4 \ $(top_srcdir)/m4/wm_cflags_check.m4 \ $(top_srcdir)/m4/wm_i18n.m4 \ $(top_srcdir)/m4/wm_imgfmt_check.m4 \ $(top_srcdir)/m4/wm_libexif.m4 $(top_srcdir)/m4/wm_libmath.m4 \ $(top_srcdir)/m4/wm_prog_cc_c11.m4 \ $(top_srcdir)/m4/wm_xext_check.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__dist_xpmdata_DATA_DIST) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__dist_xpmdata_DATA_DIST = advancetonewworkspace.xpm animations.xpm \ appearance.xpm clip.xpm configs.xpm cycleworkspaces.xpm \ dock.xpm dockclipdrawersection.xpm dontlinkworkspaces.xpm \ drawer.xpm ergonomic.xpm expert.xpm fonts.xpm iconprefs.xpm \ keyboard.xpm keyboardprefs.xpm keyshortcuts.xpm menualign1.xpm \ menualign2.xpm menuprefs.xpm menus.xpm moreanim.xpm \ mousesettings.xpm mousespeed.xpm msty1.xpm msty2.xpm msty3.xpm \ newstyle.xpm nextstyle.xpm nonopaque.xpm noopaqueresize.xpm \ oldstyle.xpm opaque.xpm opaqueresize.xpm paths.xpm \ smallwindow.xpm smooth.xpm sound.xpm speed0.xpm speed0s.xpm \ speed1.xpm speed1s.xpm speed2.xpm speed2s.xpm speed3.xpm \ speed3s.xpm speed4.xpm speed4s.xpm tdel.xpm tedit.xpm temp.xpm \ textr.xpm theme.xpm timer0.xpm timer0s.xpm timer1.xpm \ timer1s.xpm timer2.xpm timer2s.xpm timer3.xpm timer3s.xpm \ timer4.xpm timer4s.xpm timer5.xpm timer5s.xpm tnew.xpm \ whandling.xpm windowfocus.xpm workspace.xpm workspacename.xpm \ xis.xpm am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(xpmdatadir)" DATA = $(dist_xpmdata_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ GFXLIBS = @GFXLIBS@ GREP = @GREP@ HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLIBS = @INTLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBBSD = @LIBBSD@ LIBEXIF = @LIBEXIF@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXINERAMA = @LIBXINERAMA@ LIBXMU = @LIBXMU@ LIBXRANDR = @LIBXRANDR@ LINGUAS = @LINGUAS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAGICKFLAGS = @MAGICKFLAGS@ MAGICKLIBS = @MAGICKLIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MANLANGDIRS = @MANLANGDIRS@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOLIBS = @PANGOLIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILMOFILES = @UTILMOFILES@ VERSION = @VERSION@ WINGSMOFILES = @WINGSMOFILES@ WINGS_VERSION = @WINGS_VERSION@ WMAKERMOFILES = @WMAKERMOFILES@ WPREFSMOFILES = @WPREFSMOFILES@ WRASTER_VERSION = @WRASTER_VERSION@ WUTIL_VERSION = @WUTIL_VERSION@ XCFLAGS = @XCFLAGS@ XFTCONFIG = @XFTCONFIG@ XFTFLAGS = @XFTFLAGS@ XFTLIBS = @XFTLIBS@ XGETTEXT = @XGETTEXT@ XLFLAGS = @XLFLAGS@ XLIBS = @XLIBS@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBRARY_PATH = @X_LIBRARY_PATH@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ defsdatadir = @defsdatadir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ inc_search_path = @inc_search_path@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lcov_output_directory = @lcov_output_directory@ lib_search_path = @lib_search_path@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pixmapdir = @pixmapdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ wprefs_bindir = @wprefs_bindir@ wprefs_datadir = @wprefs_datadir@ xpmdatadir = $(wprefs_datadir)/xpm @ICON_EXT_XPM_TRUE@dist_xpmdata_DATA = \ @ICON_EXT_XPM_TRUE@ advancetonewworkspace.xpm \ @ICON_EXT_XPM_TRUE@ animations.xpm \ @ICON_EXT_XPM_TRUE@ appearance.xpm \ @ICON_EXT_XPM_TRUE@ clip.xpm \ @ICON_EXT_XPM_TRUE@ configs.xpm \ @ICON_EXT_XPM_TRUE@ cycleworkspaces.xpm \ @ICON_EXT_XPM_TRUE@ dock.xpm \ @ICON_EXT_XPM_TRUE@ dockclipdrawersection.xpm \ @ICON_EXT_XPM_TRUE@ dontlinkworkspaces.xpm \ @ICON_EXT_XPM_TRUE@ drawer.xpm \ @ICON_EXT_XPM_TRUE@ ergonomic.xpm \ @ICON_EXT_XPM_TRUE@ expert.xpm \ @ICON_EXT_XPM_TRUE@ fonts.xpm \ @ICON_EXT_XPM_TRUE@ iconprefs.xpm \ @ICON_EXT_XPM_TRUE@ keyboard.xpm \ @ICON_EXT_XPM_TRUE@ keyboardprefs.xpm \ @ICON_EXT_XPM_TRUE@ keyshortcuts.xpm \ @ICON_EXT_XPM_TRUE@ menualign1.xpm \ @ICON_EXT_XPM_TRUE@ menualign2.xpm \ @ICON_EXT_XPM_TRUE@ menuprefs.xpm \ @ICON_EXT_XPM_TRUE@ menus.xpm \ @ICON_EXT_XPM_TRUE@ moreanim.xpm \ @ICON_EXT_XPM_TRUE@ mousesettings.xpm \ @ICON_EXT_XPM_TRUE@ mousespeed.xpm \ @ICON_EXT_XPM_TRUE@ msty1.xpm \ @ICON_EXT_XPM_TRUE@ msty2.xpm \ @ICON_EXT_XPM_TRUE@ msty3.xpm \ @ICON_EXT_XPM_TRUE@ newstyle.xpm \ @ICON_EXT_XPM_TRUE@ nextstyle.xpm \ @ICON_EXT_XPM_TRUE@ nonopaque.xpm \ @ICON_EXT_XPM_TRUE@ noopaqueresize.xpm \ @ICON_EXT_XPM_TRUE@ oldstyle.xpm \ @ICON_EXT_XPM_TRUE@ opaque.xpm \ @ICON_EXT_XPM_TRUE@ opaqueresize.xpm \ @ICON_EXT_XPM_TRUE@ paths.xpm \ @ICON_EXT_XPM_TRUE@ smallwindow.xpm \ @ICON_EXT_XPM_TRUE@ smooth.xpm \ @ICON_EXT_XPM_TRUE@ sound.xpm \ @ICON_EXT_XPM_TRUE@ speed0.xpm \ @ICON_EXT_XPM_TRUE@ speed0s.xpm \ @ICON_EXT_XPM_TRUE@ speed1.xpm \ @ICON_EXT_XPM_TRUE@ speed1s.xpm \ @ICON_EXT_XPM_TRUE@ speed2.xpm \ @ICON_EXT_XPM_TRUE@ speed2s.xpm \ @ICON_EXT_XPM_TRUE@ speed3.xpm \ @ICON_EXT_XPM_TRUE@ speed3s.xpm \ @ICON_EXT_XPM_TRUE@ speed4.xpm \ @ICON_EXT_XPM_TRUE@ speed4s.xpm \ @ICON_EXT_XPM_TRUE@ tdel.xpm \ @ICON_EXT_XPM_TRUE@ tedit.xpm \ @ICON_EXT_XPM_TRUE@ temp.xpm \ @ICON_EXT_XPM_TRUE@ textr.xpm \ @ICON_EXT_XPM_TRUE@ theme.xpm \ @ICON_EXT_XPM_TRUE@ timer0.xpm \ @ICON_EXT_XPM_TRUE@ timer0s.xpm \ @ICON_EXT_XPM_TRUE@ timer1.xpm \ @ICON_EXT_XPM_TRUE@ timer1s.xpm \ @ICON_EXT_XPM_TRUE@ timer2.xpm \ @ICON_EXT_XPM_TRUE@ timer2s.xpm \ @ICON_EXT_XPM_TRUE@ timer3.xpm \ @ICON_EXT_XPM_TRUE@ timer3s.xpm \ @ICON_EXT_XPM_TRUE@ timer4.xpm \ @ICON_EXT_XPM_TRUE@ timer4s.xpm \ @ICON_EXT_XPM_TRUE@ timer5.xpm \ @ICON_EXT_XPM_TRUE@ timer5s.xpm \ @ICON_EXT_XPM_TRUE@ tnew.xpm \ @ICON_EXT_XPM_TRUE@ whandling.xpm \ @ICON_EXT_XPM_TRUE@ windowfocus.xpm \ @ICON_EXT_XPM_TRUE@ workspace.xpm \ @ICON_EXT_XPM_TRUE@ workspacename.xpm \ @ICON_EXT_XPM_TRUE@ xis.xpm all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu WPrefs.app/xpm/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu WPrefs.app/xpm/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_xpmdataDATA: $(dist_xpmdata_DATA) @$(NORMAL_INSTALL) @list='$(dist_xpmdata_DATA)'; test -n "$(xpmdatadir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(xpmdatadir)'"; \ $(MKDIR_P) "$(DESTDIR)$(xpmdatadir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(xpmdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(xpmdatadir)" || exit $$?; \ done uninstall-dist_xpmdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_xpmdata_DATA)'; test -n "$(xpmdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(xpmdatadir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(xpmdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_xpmdataDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_xpmdataDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am \ install-dist_xpmdataDATA install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-dist_xpmdataDATA .PRECIOUS: Makefile # 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. .NOEXPORT: ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/configs.xpm�������������������������������������������������������0000644�0001750�0001750�00000031727�13431646201�015747� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * configs_xpm[] = { "48 48 526 2", " c None", ". c #2C2C2C", "+ c #FEFEFE", "@ c #555577", "# c #FFF6A4", "$ c #000000", "% c #545476", "& c #51516E", "* c #424255", "= c #38384A", "- c #505055", "; c #2E2E32", "> c #262633", ", c #3F3F55", "' c #FFFFFF", ") c #48485F", "! c #2E2E34", "~ c #0E0E0E", "{ c #060607", "] c #211E0D", "^ c #6D6946", "/ c #1C1C1C", "( c #020201", "_ c #34321C", ": c #080809", "< c #1E1E28", "[ c #41415A", "} c #ACAAAC", "| c #616161", "1 c #44445C", "2 c #17171A", "3 c #050505", "4 c #080808", "5 c #171719", "6 c #3E3E50", "7 c #4D4D67", "8 c #505058", "9 c #0D0D0E", "0 c #020202", "a c #5E5E5F", "b c #A2A2A2", "c c #A3A3A3", "d c #969696", "e c #1E1E1F", "f c #0A0A0C", "g c #535260", "h c #646465", "i c #99956B", "j c #030303", "k c #8A8A8A", "l c #FCFCFC", "m c #FBFBFB", "n c #9A9A9C", "o c #0B0B0C", "p c #474758", "q c #151517", "r c #F8F8F8", "s c #59595C", "t c #474761", "u c #1B1B20", "v c #0A0A0B", "w c #C2C2C2", "x c #09090A", "y c #1B1B22", "z c #141416", "A c #070703", "B c #898989", "C c #FDFDFD", "D c #E1E1E1", "E c #242424", "F c #656565", "G c #F1F1F1", "H c #4F4F4F", "I c #ACAAAB", "J c #08080A", "K c #020203", "L c #888888", "M c #F2F2F2", "N c #555556", "O c #030304", "P c #454547", "Q c #C6C6C6", "R c #C4C4C4", "S c #C7C7C7", "T c #CBCBCB", "U c #E8E8E8", "V c #F4F4F4", "W c #565657", "X c #050506", "Y c #010101", "Z c #4C4C4C", "` c #FAFAFA", " . c #E0E0E0", ".. c #F9F9F9", "+. c #040405", "@. c #0F0F10", "#. c #BBBBBB", "$. c #070708", "%. c #555555", "&. c #4D4D4D", "*. c #EDEDED", "=. c #39393A", "-. c #191818", ";. c #010102", ">. c #737376", ",. c #0F0F15", "'. c #0B0B0B", "). c #787879", "!. c #939393", "~. c #B9B9B9", "{. c #F7F7F7", "]. c #9C9C9C", "^. c #43435E", "/. c #3D3D55", "(. c #292939", "_. c #262636", ":. c #1B1B24", "<. c #101016", "[. c #2B2B2B", "}. c #CCCCCC", "|. c #EAEAEA", "1. c #69696C", "2. c #5D5C76", "3. c #2C2C3D", "4. c #282838", "5. c #222230", "6. c #0D0D13", "7. c #060609", "8. c #050507", "9. c #121212", "0. c #535353", "a. c #A9A9A9", "b. c #D8D8D8", "c. c #E4E4E4", "d. c #303030", "e. c #060606", "f. c #44445F", "g. c #42425C", "h. c #313145", "i. c #272737", "j. c #171720", "k. c #030305", "l. c #131313", "m. c #181818", "n. c #191919", "o. c #2E2E2E", "p. c #444444", "q. c #616162", "r. c #5F5F60", "s. c #3D3D3D", "t. c #151515", "u. c #13120C", "v. c #0D0D0D", "w. c #626281", "x. c #61617B", "y. c #FEFCF2", "z. c #232331", "A. c #8E8548", "B. c #111113", "C. c #181819", "D. c #2F2F30", "E. c #666667", "F. c #ACACAD", "G. c #D4D4D6", "H. c #E3E3E4", "I. c #F7F7F8", "J. c #F6F6F7", "K. c #E0E0E1", "L. c #CCCCCD", "M. c #919192", "N. c #3B3B3D", "O. c #09090B", "P. c #101017", "Q. c #87879F", "R. c #838287", "S. c #FEF9D3", "T. c #B4B6B4", "U. c #2D2D3F", "V. c #0D0D12", "W. c #060608", "X. c #0C0C0E", "Y. c #232325", "Z. c #424244", "`. c #525254", " + c #626264", ".+ c #7A7A7C", "++ c #79797B", "@+ c #5D5D5E", "#+ c #3A3A3C", "$+ c #151518", "%+ c #1A1812", "&+ c #0A0A0E", "*+ c #1A1A24", "=+ c #626162", "-+ c #909093", ";+ c #4F4E44", ">+ c #34343A", ",+ c #424248", "'+ c #6C6C72", ")+ c #A1A1A7", "!+ c #C2C2C8", "~+ c #CDCDD4", "{+ c #DFDFE5", "]+ c #DFDFDF", "^+ c #D1D1D4", "/+ c #BBBBC1", "(+ c #ABA97F", "_+ c #44444A", ":+ c #14141B", "<+ c #1A1A20", "[+ c #21212F", "}+ c #FFFAFF", "|+ c #464441", "1+ c #32312D", "2+ c #191921", "3+ c #35353D", "4+ c #55555D", "5+ c #606068", "6+ c #6D6D75", "7+ c #848487", "8+ c #747474", "9+ c #4E4E46", "0+ c #4F4C16", "a+ c #19191E", "b+ c #282832", "c+ c #67676F", "d+ c #6D684D", "e+ c #525552", "f+ c #373747", "g+ c #3B3B4B", "h+ c #444454", "i+ c #5E5E6E", "j+ c #828292", "k+ c #9999A9", "l+ c #A2A2B2", "m+ c #ADADBD", "n+ c #A6A58B", "o+ c #898994", "p+ c #606065", "q+ c #3A3924", "r+ c #4E4A04", "s+ c #28260A", "t+ c #37373E", "u+ c #3D3D4C", "v+ c #515551", "w+ c #7E7B4E", "x+ c #303043", "y+ c #4C4C5F", "z+ c #4F4F62", "A+ c #4F4F61", "B+ c #505062", "C+ c #565669", "D+ c #5F5F71", "E+ c #7E7E81", "F+ c #585750", "G+ c #B2AB2F", "H+ c #474128", "I+ c #151516", "J+ c #312E00", "K+ c #565101", "L+ c #2B290B", "M+ c #2C2C3E", "N+ c #3D3D4A", "O+ c #5C5848", "P+ c #545475", "Q+ c #B8AE24", "R+ c #4D5057", "S+ c #454560", "T+ c #4D4D68", "U+ c #60607B", "V+ c #6D6D88", "W+ c #71718C", "X+ c #787893", "Y+ c #8E8F93", "Z+ c #565656", "`+ c #585529", " @ c #CFC619", ".@ c #545022", "+@ c #111111", "@@ c #777200", "#@ c #A09801", "$@ c #484213", "%@ c #656581", "&@ c #FCEE05", "*@ c #535374", "=@ c #B5AC0C", "-@ c #322E34", ";@ c #474764", ">@ c #4A4A67", ",@ c #5F6269", "'@ c #706E3F", ")@ c #CCC210", "!@ c #2D2B2E", "~@ c #3E3A01", "{@ c #B1A704", "]@ c #7F7915", "^@ c #100E10", "/@ c #938B01", "(@ c #7D7706", "_@ c #77720E", ":@ c #3F3B00", "<@ c #F5E806", "[@ c #5F5E70", "}@ c #A89E03", "|@ c #1D1C1E", "1@ c #666327", "2@ c #F1E503", "3@ c #272827", "4@ c #989103", "5@ c #E6D906", "6@ c #1A1515", "7@ c #7F7803", "8@ c #B9AF07", "9@ c #969017", "0@ c #C2B804", "a@ c #847D06", "b@ c #8E8811", "c@ c #232326", "d@ c #423F05", "e@ c #ECE10A", "f@ c #7C785B", "g@ c #A99F06", "h@ c #0B0A0B", "i@ c #7F7800", "j@ c #D9CE05", "k@ c #50461E", "l@ c #302B2E", "m@ c #100B0D", "n@ c #A49C02", "o@ c #C7BD06", "p@ c #2F280B", "q@ c #A69D03", "r@ c #A49C09", "s@ c #9A911B", "t@ c #29270A", "u@ c #B4AA07", "v@ c #484509", "w@ c #C6BC07", "x@ c #202024", "y@ c #837D06", "z@ c #D8CD12", "A@ c #858055", "B@ c #D4C91D", "C@ c #CFC405", "D@ c #100F10", "E@ c #807902", "F@ c #D4CA05", "G@ c #595B24", "H@ c #D2C707", "I@ c #AFA607", "J@ c #ABA202", "K@ c #AEA502", "L@ c #3A3700", "M@ c #A9A000", "N@ c #6A6009", "O@ c #CABF0C", "P@ c #45420A", "Q@ c #A79D0E", "R@ c #424004", "S@ c #C3BA06", "T@ c #ACA523", "U@ c #A19A41", "V@ c #15151D", "W@ c #F0E30A", "X@ c #747161", "Y@ c #D6CC08", "Z@ c #1F2023", "`@ c #C0B702", " # c #A89D0B", ".# c #6C6605", "+# c #FFF200", "@# c #CFC503", "## c #CAC000", "$# c #888102", "%# c #5E5A00", "&# c #C9BF00", "*# c #403D01", "=# c #C4BC06", "-# c #615C0C", ";# c #968D11", "># c #424005", ",# c #C7BC07", "'# c #CBC10F", ")# c #A69E1C", "!# c #333008", "~# c #DDD310", "{# c #9A9446", "]# c #DDD110", "^# c #121112", "/# c #564F0D", "(# c #9C9400", "_# c #BEB402", ":# c #B3AA00", "<# c #716B03", "[# c #8D8600", "}# c #A39B01", "|# c #78740C", "1# c #817913", "2# c #050605", "3# c #090909", "4# c #827D27", "5# c #9E9831", "6# c #6F6A0C", "7# c #B7AF18", "8# c #D9CD1A", "9# c #A09B31", "0# c #AAA328", "a# c #BEB628", "b# c #B9B031", "c# c #B0A705", "d# c #3B3700", "e# c #CEC303", "f# c #1B1A0C", "g# c #C1B702", "h# c #9A9206", "i# c #BDB403", "j# c #565201", "k# c #A79E00", "l# c #9C9401", "m# c #97900A", "n# c #766D22", "o# c #5B582F", "p# c #B3AC19", "q# c #A79D0F", "r# c #544F13", "s# c #B8AF10", "t# c #1E1E2A", "u# c #2A2A3B", "v# c #A89E05", "w# c #6A6402", "x# c #AAA107", "y# c #8B830B", "z# c #3F3B03", "A# c #C6BC00", "B# c #7B730A", "C# c #AAA108", "D# c #B8B008", "E# c #645E27", "F# c #D6CC1B", "G# c #464423", "H# c #B3AB0F", "I# c #D5CB12", "J# c #0F0E00", "K# c #989010", "L# c #C9BF25", "M# c #A59D03", "N# c #797308", "O# c #ADA512", "P# c #D7CB02", "Q# c #84791D", "R# c #111112", "S# c #A69E04", "T# c #C7BD07", "U# c #514531", "V# c #C4BA05", "W# c #716B04", "X# c #D7CD1D", "Y# c #1C1C27", "Z# c #D0C505", "`# c #DCD015", " $ c #252534", ".$ c #1B1B25", "+$ c #867F0A", "@$ c #B5AC04", "#$ c #8E8627", "$$ c #080708", "%$ c #E4D803", "&$ c #4B4517", "*$ c #120F12", "=$ c #9E9703", "-$ c #D6CB06", ";$ c #393333", ">$ c #050405", ",$ c #C2B904", "'$ c #9F9702", ")$ c #BBB447", "!$ c #D7CD03", "~$ c #DFD415", "{$ c #41415B", "]$ c #1D1D15", "^$ c #F1E603", "/$ c #918D65", "($ c #221D21", "_$ c #777006", ":$ c #D5CA09", "<$ c #5D5921", "[$ c #928C15", "}$ c #3D3C3D", "|$ c #0C0B0C", "1$ c #857E03", "2$ c #D9CD07", "3$ c #C0B602", "4$ c #A29905", "5$ c #BDB447", "6$ c #D1C604", "7$ c #BDB42E", "8$ c #505070", "9$ c #040406", "0$ c #F3E804", "a$ c #908C65", "b$ c #171312", "c$ c #787308", "d$ c #D3C805", "e$ c #4F4922", "f$ c #6B6870", "g$ c #736C01", "h$ c #ADA213", "i$ c #050305", "j$ c #847D05", "k$ c #DED201", "l$ c #9A976B", "m$ c #9C9514", "n$ c #6E6B43", "o$ c #1F1E21", "p$ c #4C4703", "q$ c #ECE002", "r$ c #0D080C", "s$ c #7F7901", "t$ c #DFD301", "u$ c #99966A", "v$ c #454561", "w$ c #404059", "x$ c #3B3800", "y$ c #EADF03", "z$ c #7B798E", "A$ c #524A1E", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # @ @ @ @ @ @ @ @ @ @ @ @ + ", ". $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ @ @ @ @ @ @ % & * = # # - ; # > , % @ @ @ @ @ @ @ + ", ". ' ' ' ' $ ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' $ @ @ @ @ @ @ ) ! ~ { ] ^ / ( _ $ : < [ @ @ @ @ @ @ + ", ". } } } | $ ' } } } } } } } } } } } } } | $ @ @ @ @ # 1 2 $ $ $ $ $ # $ $ $ 3 4 5 6 7 7 7 @ @ + ", ". } } } | $ ' } } } } } } } } } } } } } | $ @ @ @ @ 8 9 $ $ $ $ $ $ # $ $ 0 a b c d e f f @ @ + ", ". } } } | $ ' } } } } } } } } } } } } } | $ @ @ # g h i # $ $ $ $ $ $ $ $ j k l ' m n o $ @ @ + ", ". } } } | $ ' } } } $ $ } } } $ $ } } } | $ @ @ p q # $ $ $ $ $ $ $ $ $ $ j k l ' ' r s $ @ @ + ", ". } } } | $ ' } } } $ $ $ } $ $ $ } } } | $ # t u v # $ $ $ $ $ $ $ $ $ $ j k l ' ' ' w x @ @ + ", ". } } } | $ ' } } } } $ $ $ $ $ } } } } | $ # y z 3 A $ $ $ $ $ $ $ $ $ $ j B l C l C D E @ @ + ", ". } } } | $ ' } } } } } $ $ $ } } } } } | # F # # $ $ $ $ $ $ $ $ $ $ $ $ j B l C C l G H @ @ + ", ". } } } | $ ' } } } } $ $ $ $ $ } } } I | $ # J K $ $ $ $ $ $ $ $ $ $ $ $ j L m m l l M N @ @ + ", ". } } } | $ ' } } } $ $ $ } $ $ $ } } } | $ # O K $ $ $ $ $ $ P Q R S Q S T U l l l l V W @ @ + ", ". } } } | $ ' } } } $ $ } } } $ $ } } } | $ $ O X Y $ $ $ $ $ Z ` m l m C l m m C m m G Z @ @ m ", ". } } } | $ ' } } } } } } } } } } } } } | $ $ O # j $ $ $ $ $ Z ` m m C l m l l C l l .E @ @ ..", ". } } } | $ ' } } } } } } } } } } } } } | $ $ +.# @.$ $ $ $ $ Z ` C m l m m m l l m m #.$.@ @ ..", ". } } } | $ ' } } } } } } } } } } } } } | $ # # %.# # $ $ $ $ &.l ' ' ' ' ' ' C ' ' *.=.$ @ @ m ", ". | | | | $ ' | | | | | | | | | | | | | | $ $ -.4 O ;.$ Y Y Y H C ' ' ' ' ' ' C ' ..>.K $ @ @ + ", ". $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ,.# Y Y '.).!.!.~.+ ' ' ' ' ' ' l {.].~ $ $ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ^./.(._.:.<.<.# $ $ $ [.}.` + + ' ' ' ' + + |.1.$ $ $ $ 2.@ + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ^.[ 3.4.5.6.7.8.$ $ $ $ 9.0.a.b.U ' C c.}.k d.e.$ $ $ $ # @ + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ f.g.h.4.i.j.k.O $ Y e.l.m.n.n.o.p.q.r.s.t.Y Y Y 0 0 u.v.w.x.y.", ". $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ @ z.A.,.k.B.C.e D.E.F.G.H.I.J.K.L.M.N.O.7.7.P.P.# # Q.R.S.", ". T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.$ @ U.# V.W.X.Y.N.Z.Z.Z.`. +.+++@+#+$+%+# &+&+*+*+@ @ # @ + ", ". $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ =+$ @ # -+;+# >+,+'+)+!+~+{+]+^+/+(+_+:+<+# [+[+@ @ @ @ # @ + ", ". $ $ $ $ }+}+}+}+}+}+}+}+}+}+}+$ =+$ @ |+1+2+3+8 4+4+4+5+6+7+B 8+9+0+a+# b+c+# d+@ @ @ @ @ @ + ", ". $ $ $ $ }+} } } } } } } } } e+$ =+$ ^.f+# g+h+i+j+k+l+m+m+n+o+p+q+r+s+t+u+# @ @ @ @ @ @ @ % + ", ". $ $ $ $ }+} $ v+} } } v+$ } e+$ =+$ w+x+# y+z+A+B+C+D+E+F+G+H+I+J+K+L+M+N+O+@ @ P+@ @ @ @ @ + ", ". $ $ $ $ }+} v+$ v+} v+$ v+} e+$ =+$ Q+R+S+T+U+V+W+X+Y+Z+`+ @.@+@@@#@$@^.%@&@*@% @ @ @ @ @ @ + ", ". $ $ $ $ }+} } v+$ v+$ v+} } e+$ =+$ =@-@;@;@;@>@,@'@)@!@~@{@]@^@/@(@_@;@:@<@[@@ @ @ @ @ @ @ + ", ". $ $ $ $ }+} } } v+$ v+} } } e+$ =+$ }@|@1@2@@ @ 3@4@5@6@7@8@9@^@0@a@b@c@d@e@f@@ @ @ @ @ @ @ + ", ". $ $ $ $ }+} } v+$ v+$ v+} } e+$ =+$ g@h@i@j@k@l@m@n@o@p@q@r@s@t@u@v@w@x@y@z@A@@ B@@ @ @ @ @ + ", ". $ $ $ $ }+} v+$ v+} v+$ v+} e+$ =+$ C@D@E@F@G@H@I@J@K@L@M@N@O@P@Q@R@w@q S@T@U@V@W@X@@ @ @ @ + ", ". $ $ $ $ }+} $ v+} } } v+$ } e+$ =+$ Y@Z@`@ #.#+#@###$#%#&#*#=#-#;#>#,#x '#)#U@!#~#{#@ X@f@[@+ ", ". $ $ $ $ }+} } } } } } } } } e+$ =+$ ]#^#+#/#(#+#_#:#<#[#}#( +#|#1#2#+#3#+#4#5#6#7#8#9#0#a#b#+ ", ". $ $ $ $ }+e+e+e+e+e+e+e+e+e+e+$ =+$ c#d#e#f#+#g#h#i#j#k#l#$ +#m#n#$ +#$ +#o#p#q#r#+#s#t#z.u#+ ", ". $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ =+$ v#w#x#$ +#y#@ @ z#A#B#$ C#D#E#$ +#:@F#G#H#I#J#K#L#@ @ @ + ", ". =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+$ M#N#O#$ @ @ @ @ t@P#Q#R#S#T#U#$ V#W#X#Y#Z#`# $.$@ @ @ @ + ", ". $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ +$@$#$@ @ @ @ @ $$%$&$*$=$-$;$>$,$'$)$<.!$~$@ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ $ @ {$]$^$/$@ @ @ ($_$:$<$@ @ @ @ @ @ [$}$|$1$2$@ >$3$4$5$V.6$7$@ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ 8$9$0$a$@ @ @ b$c$d$e$@ @ @ @ @ @ f$@ @ g$h$@ i$j$k$l$,.m$X@@ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ 9$n$@ @ @ @ o$p$q$@ @ @ @ @ @ @ @ @ @ @ @ @ r$s$t$u$ $v$@ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ w$@ @ @ @ @ @ x$y$@ @ @ @ @ @ @ @ @ @ @ @ @ @ s$+#z$@ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ A$@ @ @ @ @ @ @ @ @ @ @ @ @ @ :@+#z$@ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + ", "+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + "}; �����������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/menus.xpm���������������������������������������������������������0000644�0001750�0001750�00000005231�13431646201�015435� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * menus_xpm[] = { "48 48 11 1", " c None", ". c #2C2C2C", "+ c #FEFEFE", "@ c #505075", "# c #000000", "$ c #B6B6BE", "% c #FFFFFF", "& c #606060", "* c #AAAAAA", "= c #FFFAFF", "- c #575757", "...............................................+", ".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+", ".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+", ".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+", ".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+", ".@@@@@#########################################+", ".@@@@@#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$+", ".@@@@@#$#######################################+", ".@@@@@#$#######################################+", ".@@@@@#$#######################################%", ".@@@@@#$#####%#############%#%############%##%#%", ".@@@@@#$####%#%##%%%##%%%##%####%%###%%##%%%###%", ".@@@@@#$####%#%##%##%#%##%#%#%#%##%####%##%##%#%", ".@@@@@#$####%%%##%##%#%##%#%#%#%#####%%%##%##%#%", ".@@@@@#$###%###%#%##%#%##%#%#%#%##%#%##%##%##%#%", ".@@@@@#$###%###%#%%%##%%%##%#%##%%###%%%##%%#%#%", ".@@@@@#$#########%####%########################%", ".@@@@@#$#######################################+", ".@@@@@#$&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&+", ".@@@@@#########################################+", ".@@@@@#%#######################################+", ".@@@@@#%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+", ".@@@@@#%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%#%%+", ".@@@@@#%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%+", ".@@@@@#%#%#%%#%%%%%%%%%%%%%####%%%%%#%%%%%%#%%%+", ".@@@@@#%#%##%#%%#%%#%#%#%%%#%%%%##%###%#%#%#%%%+", ".@@@@@#%#%##%#%#%#%#%#%#%%%####%#%#%#%%##%%#%%%+", ".@@@@@#%#%#%##%###%#%#%#%%%#%%%%#%#%#%%#%%%#%%%+", ".@@@@@#%#%#%##%#%%%%#%#%%%%#%%%%#%#%#%%#%%%#%%%+", ".@@@@@#%#%#%%#%%##%%#%#%%%%####%#%#%##%#%%%#%%%+", ".@@@@@#%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%#%%+", ".@@@@@#%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+", ".@@@@@#%#######################################+", ".@@@@@#########################################+", ".@@@@@#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+", ".@@@@@#%***************************************+", ".@@@@@#=*********#*****************************+", ".@@@@@#=****###********************************+", ".@@@@@#=***#*****#*####**###*******************+", ".@@@@@#=***#**##*#*#*#*#*#**#******************+", ".@@@@@#=***#***#*#*#*#*#*#**#******************+", ".@@@@@#=***#***#*#*#*#*#*#**#******************+", ".@@@@@#=****###**#*#*#*#*###*******************+", ".@@@@@#=*****************#*********************+", ".@@@@@#%***************************************+", ".@@@@@#=---------------------------------------+", ".@@@@@#########################################+", "++++++++++++++++++++++++++++++++++++++++++++++++"}; �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/menualign1.xpm����������������������������������������������������0000644�0001750�0001750�00000002427�13431646201�016352� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "32 32 5 1", " c None", ". c #000000000000", "X c #AD6AAD6AAD6A", "o c #529452945294", "O c #FFFFFFFFFFFF", " ", " ................ ", " .XXXXXXXXXXXXXX. ", " .X............o. ", " .X............o. ", " .oooooooooooooo. ", " ................ ", " .OOOOOOOOOOOOOO. ", " .OXXXXXXXXXXXXo. ", " .OXXXXXXXXXXXXo. ", " .oooooooooooooo. ", " .............................. ", " .OOOOOOOOOOOOOO..XXXXXXXXXXXX. ", " .OXXXXXXXXXXXXo..X..........o. ", " .OXXXXXXXXXXXXo..X..........o. ", " .oooooooooooooo..oooooooooooo. ", " .............................. ", " .OOOOOOOOOOOOOO..OOOOOOOOOOOO. ", " .OOOOOOOOOOOOOo..OXXXXXXXXXXo. ", " .OOOOOOOOOOOOOo..OXXXXXXXXXXo. ", " .oooooooooooooo..oooooooooooo. ", " .............................. ", " .OOOOOOOOOOOOOO..OOOOOOOOOOOO. ", " .OXXXXXXXXXXXXo..OXXXXXXXXXXo. ", " .OXXXXXXXXXXXXo..OXXXXXXXXXXo. ", " .oooooooooooooo..oooooooooooo. ", " .............................. ", " .OOOOOOOOOOOO. ", " .OXXXXXXXXXXo. ", " .OXXXXXXXXXXo. ", " .oooooooooooo. ", " .............. "}; �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/smooth.xpm��������������������������������������������������������0000644�0001750�0001750�00000007011�13431646201�015615� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "24 24 104 2", " c #318C5AD60842", ". c #318C63180842", "X c #39CE5AD60842", "o c #4210631818C6", "O c #18C6294A0842", "+ c #18C6294A0000", "@ c #18C6318C0000", "# c #210839CE0000", "$ c #421052941084", "% c #6B5A739C294A", "& c #63187BDE2108", "* c #5AD67BDE18C6", "= c #52946B5A2108", "- c #4A526B5A2108", "; c #4A5263181084", ": c #210842100000", "> c #18C639CE0000", ", c #318C63180000", "< c #42106B5A0842", "1 c #318C5AD60000", "2 c #294A52940842", "3 c #39CE63180000", "4 c #39CE52941084", "5 c #2108318C0000", "6 c #318C42100842", "7 c #42105AD618C6", "8 c #5AD6739C294A", "9 c #6B5A7BDE318C", "0 c #4A526B5A1084", "q c #4A526B5A0842", "w c #42106B5A0000", "e c #4A52739C0842", "r c #4A52739C1084", "t c #39CE63181084", "y c #294A4A520842", "u c #318C5AD61084", "i c #39CE63180842", "p c #421063181084", "a c #294A39CE1084", "s c #52946B5A294A", "d c #5AD66B5A2108", "f c #5AD6739C18C6", "g c #52946B5A18C6", "h c #318C52940842", "j c #318C4A521084", "k c #39CE5AD618C6", "l c #39CE6B5A0842", "z c #39CE6B5A0000", "x c #42106B5A1084", "c c #294A52940000", "v c #39CE5AD61084", "b c #5294739C294A", "n c #52947BDE18C6", "m c #4A526B5A18C6", "M c #5AD6739C1084", "N c #5AD6739C0842", "B c #318C4A520842", "V c #294A5AD60000", "C c #5294739C18C6", "Z c #5AD67BDE0842", "A c #294A4A520000", "S c #52946B5A0842", "D c #39CE52940000", "F c #318C52940000", "G c #210852940000", "H c #21084A520000", "J c #52946B5A0000", "K c #5294739C0842", "L c #318C4A5218C6", "P c #42105AD60000", "I c #18C642100000", "U c #4A526B5A0000", "Y c #42105AD61084", "T c #294A42100842", "R c #421063180000", "E c #4210529418C6", "W c #294A39CE0842", "Q c #39CE529418C6", "! c #42106B5A18C6", "~ c #4A5263180842", "^ c #4A52739C0000", "/ c #4A52631818C6", "( c #18C639CE0842", ") c #421063180842", "_ c #5294739C0000", "` c #294A42101084", "' c #2108294A1084", "] c #2108318C0842", "[ c #39CE5AD60000", "{ c #52946B5A1084", "} c #18C621080842", "| c #108410840000", " . c #18C618C60000", ".. c #39CE4A520842", "X. c #5AD67BDE0000", "o. c #5AD6739C0000", "O. c #318C42101084", "+. c #52947BDE0000", "@. c #108418C60842", "#. c #084208420842", "$. c #084208420000", "%. c #2108318C1084", "&. c #084218C60000", "*. c #108421080842", " . . X . o O + @ # $ % & * = - ; : > > ", ", < 1 2 1 1 3 4 + 5 6 7 8 9 & 0 0 q w e r t y ", "1 w 1 u , i p @ a 7 s d f g h j k . l z w < x ", ". i . c . x v 7 b n m M N q j B i , . z z l ", "1 V t < & & * n C C 0 N Z X h B A . , , , l ", "c c 2 v y p C S S g k h D F F v u . , , ", "G H 2 G 1 t 2 o 0 S J K 4 L B D P 0 p , , ", "G I y G 1 p 0 U J U K Y j 6 4 p w l < i , , ", "y T : G V - 0 < R U q M E W W 2 , z z l , , 1 ", "Q # : G ! x q R ~ U ^ ~ 5 @ # F 3 w w w w l l ", "/ # ( G o m q U ) R q _ ; @ @ : X < w w w 3 3 3 ", "m ( ( o m 0 ) 3 ~ U U U 4 @ > A 1 w w z z z , l ", "; ` W m ) i X ~ R ) U ~ ' O ] B i < w l w , . . ", "p ` Q o i i [ ) R R R { } | } ] ` y 4 o 0 C C r ", "X Y o [ . 3 ~ R 3 q q 4 | .+ 6 ..; C C Z N X.o.", "[ X [ i 1 [ P 3 R U 0 O } O.; M K _ _ ^ _ _ _ Z ", "3 1 1 3 1 ) 3 ) < U 4 T Y K +.K ^ _ ^ _ _ N _ Z ", "3 h X [ q R R U U U Y q K e ^ ^ ^ U _ _ _ _ X.M ", "X 1 1 ) ~ ) R R ) [ q U ^ U q U K _ ^ _ _ +.Z 4 ", "3 1 i 0 i 3 i 3 F < w < q U K S K U ^ ^ _ 0 6 @.", "[ 1 3 ~ w 3 i h i w ^ U S K U U ^ _ _ K Z a @.#.", "3 [ 0 R R < [ ) w U _ o.K U U U ^ K _ Z O.#.$.$.", "3 q q 3 U R R U U _ N J U ^ K U K _ Y %.#.#.#.| ", "R e U w R U U _ N U U U ^ ^ U K S $ } | @.@.&.*."}; �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/temp.xpm����������������������������������������������������������0000644�0001750�0001750�00000016070�13431646201�015256� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "48 48 108 2", " c None", ". c #108408420842", "X c #000000000000", "o c #084200000000", "O c #529408420842", "+ c #739C10841084", "@ c #421010841084", "# c #631863186318", "$ c #739C08420842", "% c #B5AC18C618C6", "& c #A52821082108", "* c #6B5A18C618C6", "= c #5294294A294A", "- c #18C618C618C6", "; c #294A294A294A", ": c #63185AD65AD6", "> c #842008420842", ", c #A52808420842", "< c #842010841084", "1 c #94A44A524A52", "2 c #AD6A318C318C", "3 c #5AD621082108", "4 c #4A5210841084", "5 c #084208420842", "6 c #AD6A08420842", "7 c #DEF66B5A6B5A", "8 c #AD6A6B5A6B5A", "9 c #BDEE42104210", "0 c #739C318C318C", "q c #5AD6294A294A", "w c #842018C618C6", "e c #AD6A5AD65AD6", "r c #7BDE318C318C", "t c #421021082108", "y c #4A5221082108", "u c #210818C618C6", "i c #B5AC08420842", "p c #A528318C318C", "a c #BDEE4A524A52", "s c #84204A524A52", "d c #108410841084", "f c #631808420842", "g c #8C6221082108", "h c #BDEE7BDE7BDE", "j c #AD6A39CE39CE", "k c #6318318C318C", "l c #318C294A294A", "z c #94A421082108", "x c #9CE652945294", "c c #BDEE39CE39CE", "v c #5AD6318C318C", "b c #DEF6DEF6DEF6", "n c #C630294A294A", "m c #CE7263186318", "M c #D6B494A494A4", "N c #7BDE39CE39CE", "B c #7BDE52945294", "V c #5294318C318C", "C c #5AD64A524A52", "Z c #5AD65AD65AD6", "A c #529452945294", "S c #9CE69CE69CE6", "D c #BDEE21082108", "F c #BDEE52945294", "G c #BDEE84208420", "H c #B5AC39CE39CE", "J c #7BDE4A524A52", "K c #4A5242104210", "L c #421042104210", "P c #BDEE18C618C6", "I c #B5AC42104210", "U c #4A52294A294A", "Y c #4A5239CE39CE", "T c #39CE39CE39CE", "R c #4A5208420842", "E c #BDEE5AD65AD6", "W c #CE72739C739C", "Q c #739C52945294", "! c #9CE694A494A4", "~ c #7BDE08420842", "^ c #739C39CE39CE", "/ c #4A524A524A52", "( c #A52884208420", ") c #9CE64A524A52", "_ c #C63084208420", "` c #739C4A524A52", "' c #210821082108", "] c #A5289CE69CE6", "[ c #94A4318C318C", "{ c #631839CE39CE", "} c #318C318C318C", "| c #CE72CE72CE72", " . c #63184A524A52", ".. c #6B5A4A524A52", "X. c #5AD652945294", "o. c #6B5A6B5A6B5A", "O. c #C630C630C630", "+. c #529439CE39CE", "@. c #421018C618C6", "#. c #8C628C628C62", "$. c #7BDE7BDE7BDE", "%. c #A528A528A528", "&. c #842084208420", "*. c #94A494A494A4", "=. c #739C739C739C", "-. c #D6B4D6B4D6B4", ";. c #B5ACB5ACB5AC", ":. c #AD6AAD6AAD6A", " ", " ", " ", " . X ", " o O + @ ", " # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ % & * = X X X ", " # - - - - - - - - - - - - - - - - - - - - - - - - ; : > , < 1 2 3 4 5 X X ", " # - - - - - - - - - - - - - - - - - - - - - - - - ; $ 6 7 8 9 0 q * - 5 X ", " # - - - - - - - - - - - - - - - - - - - - - - - - $ % w e 9 r q t y - 5 X ", " # - - - - - - - - - - - - - - - - - - - - - - u $ i p 1 a 0 s t t u d 5 X X ", " # - - - - - - - - - - - - - - - - - - - - - - f , g h j 0 k t y u d d 5 X X X ", " # ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; l f 6 z x c 0 v t t u d d 5 5 X X X ", " b b b b b b b b b b b b b b b b b b b b b $ n m M 9 N B V t C Z A d 5 X X X X ", " b S S S S S S S S S S S S S S S S S S S $ D F G H N J = y K L L - d 5 5 X X X ", " b S S S S S S S S S S S S S S S S S S O P a h I 0 J U t Y L L T - 5 5 5 X X X ", " b S S S S S S S S S S S S S S S S S R P E W I N Q V y Y L L T T - d d 5 X X ", " b S S S S S S S S S S S S S S S ! ~ P E h 9 ^ J V t Y / Y T T T - d - 5 X X ", " b S S S S S S S S S S S S S S S ( $ ) _ I ^ ` U t Y L L T T T L ' ' - 5 X ", " b L L L L L L L L L L L L L L L L ] y [ 0 { y y u - - - - - - ' } ' ' 5 X ", " b b b b b b b b b b b b b b b b | b .t ..= t X.A A A / / A o.S O.; ' 5 X ", " b S S S S S S S S S S S S S S | S Z A +.@.@.Y L T T T L L / o.#.L ; ' 5 X ", " b S S S S S S S S S S S S S | S Z / } $.X.L L L T T T L A o.#.S L ; ' 5 X ", " b S S S S S S S S S S S %.| S A / T &.$./ T T T T T L / o.#.S S L ; ' 5 X ", " b S S S S S S S S S S S | &.Z / T #.#.o./ T T T T L A o.#.S S S L ; ' 5 X ", " b S S S S S S S S S %.| $.Z T L S *.$.A L T T T L A =.#.S S S S L ; ' 5 X ", " b L L L L L L L L L | =.A } } L T } ' - - - ' ' ' } T L L L L L L ; ' 5 X ", " b b b b b b b b b O.&.# T # -.O.%.$.Z A Z =.*.%.;.O.-.b b b b b b ; ' 5 X ", " b S S S S S S S | =./ } # S *.=.Z L T L A =.#.*.S S S S S S S S L ; ' 5 X ", " b S S S S S S O.$.A T o.S *.=.A L T L A =.#.S S S S S S S S S S L ; ' 5 X ", " b S S S S %.| =./ } $.S *.=.A L T L Z $.*.S S S S S S S S S S S L ; ' 5 X ", " b S S S S | o./ } #.S *.=.A L T L Z $.*.S S S S S S S S S S S S L ; ' 5 X ", " b S S %.| =.L } &.S *.=.A L T / # $.*.S S S S S S S S S S S S S L ; ' 5 X ", " b Z T / &.T } L L T } ' - - ' ; T T L L L L L L L L L L L L L L L ; ' 5 X ", " -.| O.; L / O.b O.%.=.A A o.#.;.| b b b b b b b b b b b b b b b b ; ' 5 X ", " | O.O.o.L &.S #.=.A L T / o.&.S S S S S S S S S S S S S S S S S L ; ' 5 X ", " } O.| :.Z } o.S *.=.A L T / =.#.S S S S S S S S S S S S S S S S S S L ; ' 5 X ", " %.%.O.#.} $.*.&.=.A L L A =.#.S S S S S S S S S S S S S S S S S S S L ; ' 5 X ", " ;.;./ #.#.$.# / L L A =.#.S S S S S S S S S S S S S S S S S S S S L ; ' 5 X ", " d =.S #.=.# A / L A =.*.S S S S S S S S S S S S S S S S S S S S S L ; ' 5 X ", " 5 -.T } ; ' ' ' ; } T L L L L L L L L L L L L L L L L L L L L L L L ; ' 5 X ", " X X 5 d d d - - ' ' ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ' 5 X ", " X X 5 5 5 d d - - ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' - 5 X ", " X X X 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 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 X X X X X X X X X X ", " X X X X X ", " X X X X ", " ", " "}; ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/advancetonewworkspace.xpm�����������������������������������������0000644�0001750�0001750�00000006343�13431646201�020710� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "48 48 36 1", " c None", ". c #000000000000", "X c #0842842094A4", "o c #10847BDEAD6A", "O c #00007BDE9CE6", "+ c #18C67BDEA528", "@ c #08427BDEA528", "# c #10848420AD6A", "$ c #10848420A528", "% c #10847BDE9CE6", "& c #18C68420A528", "* c #B5ACB5ACB5AC", "= c #739C739C739C", "- c #39CE39CE39CE", "; c #084200009CE6", ": c #084284209CE6", "> c #08428420A528", ", c #08428420AD6A", "< c #FFFFFFFFFFFF", "1 c #1084739CA528", "2 c #00008420A528", "3 c #A528A528A528", "4 c #7BDE7BDE7BDE", "5 c #18C6739CA528", "6 c #18C68C6294A4", "7 c #08427BDEAD6A", "8 c #18C67BDE9CE6", "9 c #318C318C318C", "0 c #18C68C629CE6", "q c #10847BDE94A4", "w c #08427BDE9CE6", "e c #10848C62A528", "r c #10847BDEA528", "t c #00007BDEA528", "y c #000084209CE6", "u c #108484209CE6", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ............... ............... ", " .XoO+o@#$%&%*=.- ", " .$;;;;;:>,>%*=.- . .$;;;;;:>,>%*=.- ", " .o<<<<<>12%>34.- .. ", " .$<<<<<@#56&34.- . . ..... .$<<<<<@#56&34.- ", " .7<<<;;;;;>@*=.- . . ...... ", " .8999<<<<<%>*=.- . . ....... .8999<<<<<%>*=.- ", " .>%>0<<<<<8o34.- . . ...... ", " .%7q@<<<<<,q34.- . . ..... .%7q@<<<<<,q34.- ", " .$@%q99999@w*=.- .. ", " .*=er$1qt>%7*=.- . .*=er$1qt>%7*=.- ", " .99wy@%ryt,ru1.- ", " ...............- ...............- ", " --------------- ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "}; ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/timer0.xpm��������������������������������������������������������0000644�0001750�0001750�00000001442�13431646201�015506� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "24 24 4 1", " c None", ". c #000000000000", "X c #7BDE7BDE7BDE", "o c #BDEEBDEEBDEE", " ", " ..... ", " X.X ", " .. X.X .. ", " X.. X.....X ..X ", " ....ooooo.... ", " ..ooooooooo.. ", " .oooooooooooo.. ", " XXoooooooooooooXX ", " .ooooooooooooooo. ", " XXoooooooooooooooXX ", " .ooooooooooooooooo. ", " .ooooooooooooooooo. ", " .ooooooooooooooooo. ", " .ooooooooooooooooo. ", " .ooooooooooooooooo. ", " XXoooooooooooooooXX ", " .ooooooooooooooo. ", " XXoooooooooooooXX ", " .ooooooooooooo. ", " .Xooooooooo.. ", " X..ooooo..X ", " X.....X ", " "}; ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/ergonomic.xpm�����������������������������������������������������0000644�0001750�0001750�00000007402�13431646201�016272� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * ergonomic_xpm[] = { "48 48 86 1", " c None", ". c #2D2D2D", "+ c #FFFFFF", "@ c #505075", "# c #000000", "$ c #727272", "% c #151515", "& c #1E1E1E", "* c #040404", "= c #6D6D6D", "- c #0E0E0E", "; c #FDFDFD", "> c #1B1B1B", ", c #6C6C6C", "' c #060606", ") c #6A6A6A", "! c #0B0B0B", "~ c #181818", "{ c #111111", "] c #090909", "^ c #686868", "/ c #0A0A0A", "( c #161616", "_ c #CCCCCC", ": c #CBCBCB", "< c #CACACA", "[ c #C8C8C8", "} c #C7C7C7", "| c #C5C5C5", "1 c #C1C1C1", "2 c #BFBFBF", "3 c #C0C0C0", "4 c #D2D2D2", "5 c #737373", "6 c #F5F5F5", "7 c #F3F3F3", "8 c #F2F2F2", "9 c #F1F1F1", "0 c #EFEFEF", "a c #EEEEEE", "b c #EDEDED", "c c #ECECEC", "d c #EAEAEA", "e c #E9E9E9", "f c #E8E8E8", "g c #E6E6E6", "h c #E5E5E5", "i c #E4E4E4", "j c #E3E3E3", "k c #E1E1E1", "l c #E0E0E0", "m c #DFDFDF", "n c #DDDDDD", "o c #DCDCDC", "p c #DBDBDB", "q c #DADADA", "r c #F0F0F0", "s c #E7E7E7", "t c #E2E2E2", "u c #DEDEDE", "v c #EBEBEB", "w c #171717", "x c #FEFEFE", "y c #B3B3B3", "z c #0C0C0C", "A c #868686", "B c #D4D4D4", "C c #A7A7A7", "D c #D6D6D6", "E c #747474", "F c #555577", "G c #3C3C3C", "H c #D6D6D5", "I c #9A9A9A", "J c #C2C2C3", "K c #808080", "L c #424242", "M c #2F2E3A", "N c #414141", "O c #3F3F3F", "P c #3E3E3E", "Q c #5C5C62", "R c #7C7C7C", "S c #3B3B3B", "T c #A2A2A2", "U c #1D1D1D", "...............................................+", ".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+", ".#################$%.#&*@@@@@@@@@@@@@@@@@@@@@@@+", ".#################=-;#;>@@@@@@@@@@@@@@@@@@@@@@@+", ".#################,'&;##@@@@@@@@@@@@@@@@@@@@@@@+", ".#################)!;~;#@@@@@@@@@@@@@@@@@@@@@@@+", ".{{{{{{{{{{{{{{{{]^&*#/(@@@@@@@@@@@@@@@@@@@@@@@+", ".___:::<<[[[}}}||123||45@@@@@@@@@@@@@@@@@@@@@@@+", ".67890abcdefghijklmnopq(@@@@@@@@@@@@@@@@@@@@@@@+", ".789rabcdefshijtlmuopqq~@@@@@@@@@@@@@@@@@@@@@@@+", ".89r0bcvefsgijtlmunpqqq~@@@@@@@@@@@@@@@@@@@@@@@+", ".9r0bcvdfsghjtkmunoqqqq~@@@@@@@@@@@@@@@@@@@@@@@+", ".r0acvdesghjtklunoqqqqqw@@@@@@@@@@@@@@@@@@@@@@@+", ".0abvdesghitklmnopqqqqqw@@@@@@@@@@@@@@@@@@@@@@@+", ".axxxxxxxxxxxmnopqqqqqq(@@@@@@@@@@@@@@@@@@@@@@@+", ".bxyyyyyyyyy^uopqqqqqqqw@@@@@@@@@@@@@@@@@@@@@@@+", ".cxy#yyy#y#y^npqqqqqqqqw@@@@@@@@@@@@@@@@@@@@@@@+", ".vxy#y#y#y#y^oqqqqqqqqq'@@@@@@@@@@@@@@@@@@@@@@@+", ".dxyyyyyyyyy^qqqqqqqqqqz@@@@@@@@@@@@@@@@@@@@@@@+", ".ex^^^^^^^^^^qqqqqqqqqqA@@@@@@@@@@@@@@@@@@@@@@@+", ".BBBBBBBBBBBBBBBBCCDDDAA@@@@@@@@@@@@@@@@@@@@@@@+", ".AAAAAAAAAAAAAAxxE4AAxxx@@@@@@@@@@@@@@@@@@@@@@@+", ".@@@@@@@@@@@@@@x#xFxxx#x@@@@@@@@@@@@@@@@@@@@@@@+", ".@@@@@@@@@@@@@@@x#xx#x#x@@@@@@@@@@@@@@@@@@@@@@@+", ".@@@@@@@@@@@@@@@@x#x#x#x@@@@@@@@@@@@@@@@@@@@@@@+", ".@@@@@@@@@@@@@@@xxx##x#x@@@@@@@@@@@@@@@@@@@@@@@+", ".AAAAAAAAAAAAAAAx####x#x@@@@################@@@+", ".@@@@@@@@@@@@@@xxxxxxx#x@@@#++++++++++++++++#@@+", ".AAAAAAAAAAAAAAx#######x@@#++++++++++++++G+++#@+", ".@@@@@@@@@@@@@@xxxxxxxxx@@#++GG+G+G+G+G+GGG++#@+", ".@@@@@@@@@@@@@@@@@@@@@@@@@#++G+++G++G+G++G+++#@+", ".@@@@@@@@@@@@@@@@@@@@@@@@@#++G++G+G++G+++G+++#@+", ".@@@@@@@@@@@@@@@@@@@@@@@@@@#++++++++++++++++#@@+", ".@@@@@@@@@@@@@@@@@@@@@@@@@@@####+++#########@@@+", ".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++#@@@@@@@@@@@@+", ".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++#@@@@@@@@@@@@@+", ".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+#@@@@@@@@@@@@@@+", ".##############################@@@@@@@@@@@@@@@@+", ".##+#+#++####+#+#++####+#+#++##@@@@@@@@@@@@@@@@+", ".##############################@@@@@@@@@@@@@@@@+", ".HIJJJJKKILHIJJJJKKILHIJJJJKKIL@@@@@@@@@@@@@@@@+", ".HIJMMMMKINHIJMMMMKINHIJMMMMKIN@@@@@@@@@@@@@@@@+", ".HIJMMMMKIOHIJMMMMKIOHIJMMMMKIO@@@@@@@@@@@@@@@@+", ".HIJJKKKKIPHIJJKKKKIPHIJJKKKKIP@@@@@@@@@@@@@@@@+", ".HIQRRRQQIGHIQRRRQQIGHIQRRRQQIG@@@@@@@@@@@@@@@@+", ".HIIIIIIIISHIIIIIIIISHIIIIIIIIS@@@@@@@@@@@@@@@@+", ".TSSSSSSSSUTSSSSSSSSUTSSSSSSSSU@@@@@@@@@@@@@@@@+", "++++++++++++++++++++++++++++++++++++++++++++++++"}; ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/noopaqueresize.xpm������������������������������������������������0000644�0001750�0001750�00000031136�13431646202�017363� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * noopaqueresize_xpm[] = { "48 48 502 2", " c None", ". c #000000", "+ c #9C9C9C", "@ c #B5B5B5", "# c #FFFFFF", "$ c #5A5A5A", "% c #0F0000", "& c #380000", "* c #FEFEFE", "= c #FDFDFD", "- c #FAFAFA", "; c #EFEEEE", "> c #EDEBEB", ", c #EEEDED", "' c #F9F9F9", ") c #FCFCFC", "! c #EDECEC", "~ c #BEB3B3", "{ c #C9AAAA", "] c #C7A8A8", "^ c #BDB2B2", "/ c #EBE9E9", "( c #FBFBFB", "_ c #F7F7F7", ": c #DDDCDC", "< c #C2A4A4", "[ c #FEAEAE", "} c #FEADAD", "| c #C2A3A3", "1 c #E4E2E2", "2 c #F6F6F6", "3 c #E8E7E7", "4 c #B3A9A9", "5 c #CF9696", "6 c #FFAEAE", "7 c #FFABAB", "8 c #BE9A9A", "9 c #DCDADA", "0 c #F0F0F0", "a c #F5F5F5", "b c #F3F2F2", "c c #D6D5D5", "d c #B89999", "e c #FEA1A1", "f c #FFA6A6", "g c #FF9999", "h c #AC8D8D", "i c #D3D1D1", "j c #E8E8E8", "k c #F8F8F8", "l c #E4E3E3", "m c #ACA1A1", "n c #C38A8A", "o c #FF9C9C", "p c #FF9595", "q c #AE7676", "r c #8E8282", "s c #BBB9B9", "t c #CECDCD", "u c #DBDADA", "v c #EEEEEE", "w c #D3D0D0", "x c #B19292", "y c #FF9494", "z c #FF8080", "A c #8C6C6C", "B c #9A9696", "C c #8A8080", "D c #9B8484", "E c #A29898", "F c #AA9E9E", "G c #BC8484", "H c #FF9191", "I c #FF8484", "J c #975F5F", "K c #716565", "L c #8E8A8A", "M c #886C6C", "N c #E38181", "O c #B08080", "P c #A39797", "Q c #D5D3D3", "R c #F1F1F1", "S c #F3F1F1", "T c #B09393", "U c #FF9090", "V c #FF8C8C", "W c #F97373", "X c #795959", "Y c #817D7D", "Z c #6A6060", "` c #935E5E", " . c #FF8D8D", ".. c #B58383", "+. c #A79C9C", "@. c #E0DEDE", "#. c #F3F3F3", "$. c #F2F2F2", "%. c #EFEDED", "&. c #AE8D8D", "*. c #FF8E8E", "=. c #FF7F7F", "-. c #8E5656", ";. c #635757", ">. c #7A7676", ",. c #6F5252", "'. c #E46969", "). c #FF8181", "!. c #AA8B8B", "~. c #D2D1D1", "{. c #DEDDDD", "]. c #E2E1E1", "^. c #E9E8E8", "/. c #A28686", "(. c #F78080", "_. c #EE7070", ":. c #745454", "<. c #777373", "[. c #5A5050", "}. c #7C4747", "|. c #FF6969", "1. c #FF7878", "2. c #9C7D7D", "3. c #BDBABA", "4. c #B49A9A", "5. c #B2A8A8", "6. c #DAD9D9", "7. c #948B8B", "8. c #8E7070", "9. c #7D5F5F", "0. c #645959", "a. c #747070", "b. c #644747", "c. c #D25757", "d. c #FF6868", "e. c #FF6F6F", "f. c #955D5D", "g. c #7E7272", "h. c #A4A0A0", "i. c #A48484", "j. c #FE9696", "k. c #C89090", "l. c #BB9A9A", "m. c #B2A7A7", "n. c #EBEAEA", "o. c #EDEDED", "p. c #E6E6E6", "q. c #C2C1C1", "r. c #AFADAD", "s. c #9E9C9C", "t. c #888686", "u. c #5A4E4E", "v. c #764141", "w. c #F65C5C", "x. c #FF6464", "y. c #FF6565", "z. c #E35D5D", "A. c #755555", "B. c #8B8787", "C. c #7D7171", "D. c #AA7272", "E. c #FF9696", "F. c #FF9F9F", "G. c #FF9E9E", "H. c #C78F8F", "I. c #B4A9A9", "J. c #E5E3E3", "K. c #E8E6E6", "L. c #B9B0B0", "M. c #C1A6A6", "N. c #BBB2B2", "O. c #E5E5E5", "P. c #D1D1D1", "Q. c #C0C0C0", "R. c #AEAEAE", "S. c #8B8989", "T. c #694D4D", "U. c #D15656", "V. c #FF6161", "W. c #FF6060", "X. c #F65959", "Y. c #794141", "Z. c #5C5050", "`. c #7F7B7B", " + c #7E5F5F", ".+ c #FE7878", "++ c #FF9797", "@+ c #FE9A9A", "#+ c #B49595", "$+ c #D7D6D6", "%+ c #BC9E9E", "&+ c #FEA5A5", "*+ c #BFA1A1", "=+ c #D9D7D7", "-+ c #E7E7E7", ";+ c #D5D5D5", ">+ c #C5C5C5", ",+ c #AAA8A8", "'+ c #6D6262", ")+ c #834B4B", "!+ c #FB6060", "~+ c #FF6262", "{+ c #FF5D5D", "]+ c #D44E4E", "^+ c #5D3C3C", "/+ c #656060", "(+ c #874F4F", "_+ c #FF7272", ":+ c #FF8686", "<+ c #A58686", "[+ c #C0BDBD", "}+ c #A29696", "|+ c #BC8686", "1+ c #FFA1A1", "2+ c #C99191", "3+ c #ADA2A2", "4+ c #E2E0E0", "5+ c #EBEBEB", "6+ c #DBDBDB", "7+ c #CCCCCC", "8+ c #B0AEAE", "9+ c #836464", "0+ c #EB6565", "a+ c #F25555", "b+ c #6E3737", "c+ c #423535", "d+ c #453838", "e+ c #723F3F", "f+ c #E65C5C", "g+ c #FF6C6C", "h+ c #FF7676", "i+ c #FF7A7A", "j+ c #FF7979", "k+ c #857979", "l+ c #A6A2A2", "m+ c #977979", "n+ c #F57373", "o+ c #D7D5D5", "p+ c #F4F4F4", "q+ c #E1E1E1", "r+ c #B9B7B7", "s+ c #8A6B6B", "t+ c #F16B6B", "u+ c #DF5050", "v+ c #5A3737", "w+ c #585353", "x+ c #5A3838", "y+ c #D54F4F", "z+ c #FF6666", "A+ c #FF6B6B", "B+ c #7C7171", "C+ c #A26A6A", "D+ c #FF8383", "E+ c #FF9292", "F+ c #FF8F8F", "G+ c #C1BFBF", "H+ c #E2E2E2", "I+ c #EFEFEF", "J+ c #DCDCDC", "K+ c #C3C1C1", "L+ c #837979", "M+ c #8E5B5B", "N+ c #EA6161", "O+ c #F75656", "P+ c #A14040", "Q+ c #412B2B", "R+ c #3D3030", "S+ c #6C3535", "T+ c #F05353", "U+ c #FF5C5C", "V+ c #FF5E5E", "W+ c #DB5555", "X+ c #6C4C4C", "Y+ c #7D7979", "Z+ c #7B5C5C", "`+ c #F77171", " @ c #9D6565", ".@ c #8F8484", "+@ c #CFCDCD", "@@ c #ECECEC", "#@ c #E3E3E3", "$@ c #D3D3D3", "%@ c #756969", "&@ c #784545", "*@ c #9B2F2F", "=@ c #562D2D", "-@ c #3A3030", ";@ c #4D2C2C", ">@ c #CE4848", ",@ c #FF5656", "'@ c #FF5858", ")@ c #FF5757", "!@ c #FF5454", "~@ c #D54B4B", "{@ c #693737", "]@ c #493C3C", "^@ c #514545", "/@ c #FF6A6A", "(@ c #FF7373", "_@ c #FF7575", ":@ c #FF7070", "<@ c #D85353", "[@ c #8C6D6D", "}@ c #C4C2C2", "|@ c #C8C8C8", "1@ c #A2A0A0", "2@ c #675D5D", "3@ c #5B4141", "4@ c #504646", "5@ c #666262", "6@ c #5E3939", "7@ c #E64E4E", "8@ c #FF5555", "9@ c #FF5353", "0@ c #FF5252", "a@ c #E74A4A", "b@ c #683030", "c@ c #463B3B", "d@ c #613F3F", "e@ c #DC5656", "f@ c #520000", "g@ c #8B6767", "h@ c #D8D8D8", "i@ c #E9E9E9", "j@ c #151515", "k@ c #BCBCBC", "l@ c #A1A0A0", "m@ c #7F7D7D", "n@ c #644040", "o@ c #5A0000", "p@ c #7F0000", "q@ c #FF5151", "r@ c #790000", "s@ c #420000", "t@ c #523232", "u@ c #615D5D", "v@ c #713939", "w@ c #F45757", "x@ c #600000", "y@ c #905A5A", "z@ c #847979", "A@ c #C7C5C5", "B@ c #E4E4E4", "C@ c #D7D7D7", "D@ c #C7C7C7", "E@ c #B7B7B7", "F@ c #A9A9A9", "G@ c #9E9E9E", "H@ c #898787", "I@ c #624343", "J@ c #CB4B4B", "K@ c #EC4F4F", "L@ c #FF5050", "M@ c #E44747", "N@ c #642C2C", "O@ c #443838", "P@ c #593939", "Q@ c #D14B4B", "R@ c #FF5A5A", "S@ c #FF5959", "T@ c #E46666", "U@ c #866A6A", "V@ c #B4B2B2", "W@ c #DEDEDE", "X@ c #C3C3C3", "Y@ c #ABABAB", "Z@ c #969494", "`@ c #605555", " # c #624242", ".# c #6F3838", "+# c #CD4747", "@# c #E14949", "## c #C24141", "$# c #605C5C", "%# c #483D3D", "&# c #6D3535", "*# c #EE5151", "=# c #935D5D", "-# c #897E7E", ";# c #CCCBCB", "># c #C6C6C6", ",# c #BBBBBB", "'# c #AFAFAF", ")# c #999898", "!# c #848282", "~# c #574D4D", "{# c #5E3F3F", "]# c #5F3B3B", "^# c #573838", "/# c #493E3E", "(# c #625E5E", "_# c #5A3A3A", ":# c #D04A4A", "<# c #7B0000", "[# c #F66969", "}# c #CC6565", "|# c #887070", "1# c #C4C3C3", "2# c #CBCBCB", "3# c #C1C1C1", "4# c #A7A7A7", "5# c #919090", "6# c #878585", "7# c #828080", "8# c #7E7C7C", "9# c #727070", "0# c #4D4141", "a# c #703838", "b# c #FC5151", "c# c #F25353", "d# c #E44D4D", "e# c #4D0000", "f# c #A86B6B", "g# c #745555", "h# c #7B7171", "i# c #DFDFDF", "j# c #DADADA", "k# c #D0D0D0", "l# c #B9B9B9", "m# c #ACACAC", "n# c #A2A2A2", "o# c #9B9B9B", "p# c #949494", "q# c #7B7979", "r# c #D65050", "s# c #FF5B5B", "t# c #E84B4B", "u# c #D34C4C", "v# c #945757", "w# c #5B3535", "x# c #5D3D3D", "y# c #5A4D4D", "z# c #635C5C", "A# c #B2B2B2", "B# c #7D4646", "C# c #F35B5B", "D# c #5F0000", "E# c #540000", "F# c #C24848", "G# c #663131", "H# c #484040", "I# c #888787", "J# c #979696", "K# c #D9D9D9", "L# c #E0E0E0", "M# c #D6D6D6", "N# c #C2C2C2", "O# c #785D5D", "P# c #D56363", "Q# c #DC5B5B", "R# c #763F3F", "S# c #623E3E", "T# c #593C3C", "U# c #4B4141", "V# c #6F6D6D", "W# c #7B7A7A", "X# c #818080", "Y# c #929292", "Z# c #AAAAAA", "`# c #BABABA", " $ c #CACACA", ".$ c #D2D2D2", "+$ c #B1AFAF", "@$ c #7B6A6A", "#$ c #A36D6D", "$$ c #734D4D", "%$ c #594E4E", "&$ c #797676", "*$ c #817F7F", "=$ c #8D8D8D", "-$ c #939393", ";$ c #999999", ">$ c #A0A0A0", ",$ c #B4B4B4", "'$ c #EAEAEA", ")$ c #C0BFBF", "!$ c #827B7B", "~$ c #736767", "{$ c #666060", "]$ c #969696", "^$ c #979797", "/$ c #A1A1A1", "($ c #CDCDCD", "_$ c #BCBBBB", ":$ c #A3A3A3", "<$ c #B1B1B1", "[$ c #B6B6B6", "}$ c #C4C4C4", "|$ c #CECECE", "1$ c #BFBFBF", "2$ c #CFCFCF", "3$ c #B3B3B3", "4$ c #A4A4A4", "5$ c #A8A8A8", "6$ c #ADADAD", "7$ c #B0B0B0", "8$ c #303030", "9$ c #313131", "0$ c #2F2F2F", "a$ c #2E2E2E", "b$ c #2D2D2D", "c$ c #2C2C2C", " ", " ", " . . . . . + . . . . . . . . . . . . . . . . . . . . . . . . . . . . + . . . . . ", " . @ @ @ . + . . . . . . . . . . . . . . . . . . . . . . . . . . . . + . # . # . ", " . @ . @ . + . . . . . . . . . . . . . . . . . . . . . . . . . . . . + . . # . . ", " . @ @ @ . + . . . . . . . . . . . . . . . . . . . . . . . . . . . . + . # . # . ", " . . . . . + . . . . . . . . . . . . . . . . . . . . . . . . . . . . + . . . . . ", " @ @ @ . . @ . . @ . . $ . . @ . . @ . @ . . @ @ . . @ . . @ . . @ . . @ . . . . ", " . . . . . . . . . . % & . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . # # # # # # * * * = = = = * * * # # # # # # # . # # # # # # . # # # # # # # . ", " . # # # # * * = - ; > > , ' = = * * # # # # # # . # # # # # # . # # # . # # # . ", " . # # * * = = ) ! ~ { ] ^ / - ) = * * # # # # # # # # # # # # # # # # . # # # . ", " . # * * = = ( _ : < [ } | 1 2 ' ( = * # # # # # # # # # # # # # # # # # # # # . ", " . # * = = ( ' 3 4 5 6 7 8 9 0 a ' ) = * # # # # . # # # # # # . # # # # # # # . ", " . * * = ) - b c d e f g h i j 0 2 - ) = * # # # . # # # # # # . # # # . # # # . ", " . * = ) - k l m n o p q r s t u v _ ( = * * # # # # # # # # # # # # # . # # # . ", " . * = ( ' 2 w x y y z A B C D E i 0 k ( = * * # # # # # # # # # # # # # # # # . ", " . * = ( _ a F G H I J K L M N O P Q R k ( = = * . # # # # # # . # # # # # # # . ", " . = ) - a S T U V W X Y Z ` I ...+.@.#.k ( ) = . * # # # # # . # # # . # # # . ", " . = ) k $.%.&.*.=.-.;.>.,.'.). .V !.~.{.].^._ ( ) = = * * * * # # # # . # # # . ", " . = ( _ 0 / /.(._.:.<.[.}.|.1.).=.2.3.+.4.5.6.^._ ( ) = = = = = * * * # # # # . ", " . = ( 2 v ^.7.8.9.0.a.b.c.d.e.e.f.g.h.i.j.k.l.m.. 3 2 _ ! n., . = = * * # # # . ", " . = - a o.p.q.r.s.t.u.v.w.x.y.z.A.B.C.D.E.F.G.H.. I.J.K.L.M.N.. ' ) = . * # # . ", " . = - a o.O.P.Q.R.S.T.U.V.W.X.Y.Z.`. +.+*.++o o @+#+$+i %+&+*+=+$.' ( . = * # . ", " . = ( 2 v -+;+>+,+'+)+!+~+{+]+^+/+u.(+_+z :+V H V <+[+}+|+1+2+3+4+#.k ( = * * . ", " . = ( _ 0 5+6+7+8+9+0+|.~+a+b+c+d+e+f+g+_+h+i+j+. k+l+m+n+g g . o+o.p+' ( = * . ", " . = ) k #.v q+;+r+s+t+g+V.u+v+w+x+y+W.x.z+d.A+d.. L B+C+D+E+F+. G+H+I+. - ) * . ", " . = ) - 2 $.j J+K+L+M+N+O+P+Q+R+S+T+U+U+U+{+V+W+X+Y+Z+`+).I =. @.@+@j . k ) = . ", " . * = ( k a @@#@$@r.%@&@*@=@-@;@>@,@'@)@,@!@~@{@]@^@)+/@(@_@:@<@[@}@q+v 2 - = . ", " . * = ) ' _ 0 -+J+|@1@2@3@4@5@6@7@,@8@9@0@a@b@c@. d@e@z+d.|.g+f@g@8+h@i@#.' ) . ", " . . = ) . j@$.5+. . k@l@. . m@n@o@p@9@q@r@s@t@u@. v@w@W.W.W.x.x@y@z@A@. 0 _ ( . ", " . * = ) ( ' p+o.B@C@D@E@F@G@H@I@J@K@0@L@M@N@O@u@P@Q@R@R@S@R@{+y.T@U@V@. @@a - . ", " . * = ) ( - 2 R i@W@P.X@E@Y@Z@`@ #.#+#@###t@$#%#&#*#'@)@8@8@'@W.z+=#-#;#j $.' . ", " . * = ) ( - _ p+v p.J+P.>#,#'#)#!#~#{#]#^#/#(#_#:#)@)@!@0@0@!@<#[#}#|#1#B@I+_ . ", " . * = = ( - k 2 #.o.p.W@;+2#3#@ 4#5#6#7#8#9#0#a#T+S@,@9@b#c#d#e#f#g#h#. i#@@a . ", " . * = = ) - ' k 2 #.I+i@H+j#k#>+l#m#n#o#p#q#I@r#s#S@!@t#u#v#w#x#y#z#s.. 6+i@#.. ", " . . = = . j@- - . . a $.. . W@$@. . A#F@. . B#C#D#E#F#G#. . H#. I#J#A#|@K#j $.. ", " . * = = ) ( - - - - ' k p+0 i@L#M#7+N#l#1@O#P#Q#R#S#T#U#V#W#X#Y#G@Z#`# $j#j $.. ", " . * = = ) ( - ( ( ) ) ( ' 2 R 5+#@6+.$ $+$@$#$$$%$&$*$X#=$-$;$>$F@,$3#. W@'$#.. ", " . * = = ) ( ( ( ( ) = ) ) - _ #.v -+L#h@)$!$~${$6#]$]$^$+ /$4#'#E@3#($. O.v 2 . ", " . * . . ) ( . . ) ) . . = ) . . a R . . ;+_$. . :$n#. . Y@<$. . |@P.. . @@#.k . ", " . * = = ) ( ( ( ) = = * * = = ( ' 2 R '$i#P.>+l#A#'#<$[$k@}$2#.$K#i#p.@@$._ - . ", " . * = = ) ( ( ( ) = = * * * = = ) ' a I+O.j#|$>+1$1$N#|@2$M#J+H+-+@@0 p+k - ) . ", " . * = = ) ( ( ( ) = = * # # * * = ( k #.5+H+K#.$2$2$$@K#i#O.'$v R p+_ ' ( ) = . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " @ @ ,$3$3$A#A#A#3$3$,$,$@ @ @ @ ,$3$A#'#m#4#:$/$>$n#4$5$Y@6$'#7$<$A#8$3$,$,$@ 9$ ", " @ 9$8$8$8$8$8$8$8$8$8$9$9$9$9$9$9$8$8$0$0$a$b$c$c$b$b$a$0$0$8$8$8$8$8$,$9$9$9$9$ ", " "}; ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/timer1.xpm��������������������������������������������������������0000644�0001750�0001750�00000001442�13431646202�015510� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "24 24 4 1", " c None", ". c #000000000000", "X c #7BDE7BDE7BDE", "o c #BDEEBDEEBDEE", " ", " ..... ", " X.X ", " .. X.X .. ", " X.. X.....X ..X ", " ....oo.XX.... ", " ..oooo.XXXX.. ", " .oooooo.XXXXX.. ", " XXoooooo.XXXX.oXX ", " .ooooooo.XXX.ooo. ", " XXooooooo.XX.ooooXX ", " .oooooooo.X.oooooo. ", " .oooooooo..ooooooo. ", " ....ooooo.ooooo.... ", " .ooooooooooooooooo. ", " .ooooooooooooooooo. ", " XXoooooooooooooooXX ", " .ooooooooooooooo. ", " XXoooooooooooooXX ", " .oooooo.oooooo. ", " .Xoooo.oooo.. ", " X..oo.oo..X ", " X.....X ", " "}; ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/clip.xpm����������������������������������������������������������0000644�0001750�0001750�00000020362�13431646202�015240� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "48 48 163 2", " c None", ". c #CE72CE72CE72", "X c #B5ACB5ACB5AC", "o c #AD6AAD6AAD6A", "O c #A528A528A528", "+ c #9CE69CE69CE6", "@ c #94A494A494A4", "# c #8C628C628C62", "$ c #39CE39CE39CE", "% c #842084208420", "& c #6B5A6B5A6B5A", "* c #DEF6DEF6DEF6", "= c #EF7AEF7AEF7A", "- c #D6B4D6B4D6B4", "; c #C630C630C630", ": c #5AD65AD65AD6", "> c #7BDE7BDE7BDE", ", c #421042105AD6", "< c #421042105294", "1 c #39CE39CE4A52", "2 c #318C318C39CE", "3 c #21082108294A", "4 c #294A294A318C", "5 c #294A2108294A", "6 c #842084207BDE", "7 c #4A524A526318", "8 c #084208420842", "9 c #000000000000", "0 c #421042104210", "q c #18C618C62108", "w c #529452945294", "e c #94A494A49CE6", "r c #FFFFFFFFFFFF", "t c #18C618C618C6", "y c #739C739C739C", "u c #1084108418C6", "i c #529452946318", "p c #529452945AD6", "a c #6B5A6318739C", "s c #5AD65AD66318", "d c #4A524A524A52", "f c #39CE39CE4210", "g c #9CE69CE6AD6A", "h c #7BDE739C8420", "j c #842084208C62", "k c #739C739C7BDE", "l c #631863186B5A", "z c #7BDE7BDE8420", "x c #631863186318", "c c #210821082108", "v c #8C628C6294A4", "b c #739C739C8420", "n c #6B5A6B5A739C", "m c #BDEEBDEEBDEE", "M c #739C739C6B5A", "N c #739C842094A4", "B c #84207BDE7BDE", "V c #7BDE739C7BDE", "C c #94A494A4A528", "Z c #CE72CE72E738", "A c #AD6AAD6AC630", "S c #9CE69CE6B5AC", "D c #8C628C629CE6", "F c #94A48C629CE6", "G c #8C6284208C62", "H c #84207BDE8420", "J c #8C6284208420", "K c #9CE694A494A4", "L c #6B5A6B5A8C62", "P c #B5ACB5ACD6B4", "I c #CE72CE72EF7A", "U c #D6B4D6B4EF7A", "Y c #94A494A4BDEE", "T c #84208420B5AC", "R c #739C6B5A739C", "E c #6318739C94A4", "W c #52946B5A9CE6", "Q c #739C8420A528", "! c #739C8420AD6A", "~ c #739C8C62AD6A", "^ c #94A48C62BDEE", "/ c #AD6AA528D6B4", "( c #A528A528CE72", ") c #9CE69CE6CE72", "_ c #94A494A4C630", "` c #6B5A631894A4", "' c #7BDE7BDEAD6A", "] c #8C62842094A4", "[ c #84207BDE8C62", "{ c #94A49CE6A528", "} c #7BDE84209CE6", "| c #AD6AAD6AD6B4", " . c #739C6B5AA528", ".. c #8C628C62BDEE", "X. c #94A48C6294A4", "o. c #9CE69CE6C630", "O. c #631863187BDE", "+. c #A5289CE6C630", "@. c #84208420AD6A", "#. c #6B5A6B5AA528", "$. c #84207BDEAD6A", "%. c #7BDE8C629CE6", "&. c #A528A528D6B4", "*. c #7BDE7BDE9CE6", "=. c #739C6B5A7BDE", "-. c #9CE6A528AD6A", ";. c #84208420A528", ":. c #8C628420AD6A", ">. c #739C739CA528", ",. c #9CE69CE6A528", "<. c #84208C629CE6", "1. c #8C628420739C", "2. c #6B5A63185AD6", "3. c #739C5AD65294", "4. c #8C627BDE4210", "5. c #7BDE6B5A5AD6", "6. c #6B5A63186B5A", "7. c #63185AD65AD6", "8. c #8C628420B5AC", "9. c #A5289CE6A528", "0. c #94A48C626B5A", "q. c #CE72CE7294A4", "w. c #E738E738B5AC", "e. c #E738DEF6D6B4", "r. c #E738DEF6CE72", "t. c #AD6A94A4B5AC", "y. c #B5AC8C629CE6", "u. c #9CE67BDE8420", "i. c #94A46B5A8420", "p. c #84207BDE739C", "a. c #B5ACA528AD6A", "s. c #5AD652944210", "d. c #6B5A63184210", "f. c #7BDE6B5A5294", "g. c #52944A5239CE", "h. c #739C7BDEA528", "j. c #739C6B5A94A4", "k. c #6B5A6B5A9CE6", "l. c #7BDE739CAD6A", "z. c #9CE694A49CE6", "x. c #4A5252946318", "c. c #9CE694A46318", "v. c #CE72BDEE5AD6", "b. c #D6B4C6305AD6", "n. c #C630BDEE8420", "m. c #BDEEB5AC8C62", "M. c #318C318C4210", "N. c #631863188420", "B. c #5AD65AD67BDE", "V. c #5AD65AD68420", "C. c #A528AD6AB5AC", "Z. c #739C6B5A5AD6", "A. c #63185AD6318C", "S. c #5AD65294318C", "D. c #5AD65AD64A52", "F. c #318C318C4A52", "G. c #631863188C62", "H. c #4A524A526B5A", "J. c #8C6294A4A528", "K. c #AD6AB5ACBDEE", "L. c #318C318C318C", "P. c #D6B4DEF6E738", "I. c #E738E738E738", " ", " ", " . . . . . . . . . . . . . . . . . . . . . . ", " . X X o o o o O O O + + + + @ @ @ # # # # $ ", " . X o o o o O O O + + + + @ @ @ # # # # % $ ", " . o o o o O O O + + + + @ @ @ # # # # % % $ ", " . o o o # @ @ @ @ # # # # # # % % % & % % $ ", " . o o O * = * * - - . . . . ; ; . - : % > $ ", " . o O O * o , < 1 2 3 3 4 4 5 3 + - : 6 > $ ", " . O O O * O 7 , 1 8 9 0 # 5 3 q + - w > > $ ", " . O O + - O , , 4 9 $ % * 4 3 q e . w > > $ ", " . O O + - O , < 4 8 - r ; 3 q t e . w > y $ ", " . + + + - O , 1 4 $ X O 3 q q u @ . w y y $ ", " . + + + . O 1 i p a s p s d f q @ . w y y $ ", " . + + @ . g 1 h j a k l z y x c v . w y & $ ", " . + @ @ . X b k k n n n l x : w o ; d & & $ ", " . @ @ @ . * * * - . . . . ; ; ; m m d & & $ ", " . @ @ v M & X ; ; ; ; ; ; ; ; o 0 0 : & & $ ", " . @ # # # % : w w w w w w w w d x & & & x $ ", " . # # # # % y + + + + + + + + w & & & x x $ ", " . # # # % % > w d d d d d d d w & & x x x $ ", " . # # % % 6 N > > > y y y & & & & x x x : $ ", " . # % % % B > > V y y y & & & & x x x : : $ ", " . % % % > > > > y y y & & & & x x x : : : $ ", " . $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . $ . . . . . . . . . . . . . . . . . . . . ", "O + + + + @ @ @ # # # # $ . X X o o o o O O O O + + . % @ @ @ # # # $ . X X o o o o O O O + + + ", "+ + + + @ @ @ # # # # % $ . X X 9 o o O O O + + + + @ . y # # # # % $ . X o o o o O O O + + + + ", "+ + + @ @ @ # # # # % % $ . o o 9 o O O O + + + + @ @ + . % # # % % $ . o o o + O O O + + + + @ ", "+ + @ @ @ # # # # % % % $ . o o 9 O O O + + + + @ @ # # y O y % % % $ . o o o w : p x x x x x & ", "# z C Z Z A S D z y % > $ . o o O O O + + + + @ # j F G H J K : 6 > $ . o o O x j L O O O o o X ", "P I U U U U P Y T s z > $ . o O O O + + + + @ % j v % & x x R * : > $ . o O O p E W Q Q ! ! ! ~ ", "^ Y / ( ) _ ` ' T s > > $ . O O O O + + + @ > ] [ n x V & & & v m x $ . O O O x { } m ; ; ; ; . ", "| | Y ( ( T .' ..s > > $ . O O + + + + @ > X.r r d : & x l & > @ m : . O O + x g } o > y % > # ", "| o.3 O.+.@.#.$...: > y $ . O O + + + # % X.k r 9 r > R & l x > > # 0 . O O + x g %.; @ @ + o O ", "/ &.L *.| _ .' ..: y y $ . + + + + % X.X.& d r 9 9 r k =.w : > y y $ . + + + x -.%.X # # # % + ", ";.:.Y ) ( _ >.T ..p y y $ . + + + > ,.# x d : r 9 9 9 r d w x y y y $ . + + + x -.<.; @ & 1.2.M ", "3.4.5.6.7.:.>.8...p y n $ . + + > 9.% : d x > r 9 9 9 9 r x y y y & $ . + + @ x -.N 6 0.q.w.e.r.", "t.y.u.i.p.L #.$...p & & $ . + @ a.V w w & > > r 9 9 9 r & y y y & & $ . + @ @ & # 0 s.d.f.f.g.0.", "h.....j.4 < k.l.$.p & & $ . @ @ B x w y % > z.r r r 9 r y y y & & & $ . @ @ @ & O x.& c.v.b.n.m.", "M.N.T B.3 1 ` .V.p & & $ 0 : v % B & > G X.& d d r 9 9 r y & & & & $ . @ @ # & C.<.o x Z.A.S.D.", "2 B.T , t F.G.H.$ x & x $ . ; x # > V z.G : d w & y r r y & & & & x $ . @ v # & C.J.. @ > y y & ", "' $.T < u 1 1 $ x & x x $ . O ; : % B B w d : y y y y y & & & & x x $ . # # # y K.J.; + @ o O O ", "M.7 G.F.t L.0 & & x x x $ . # + * x > & : x : & & y x & & & & x x x $ . # # # K.P.K.I.I.I.I.= = ", ": 0 L.$ x & & & x x x : $ . # # + m : > > > 8 3 L.t d t w & x x x x $ . # # # J % > > > > y y y ", "y y y n & & & x x x : : $ . # % % v * : > > 0 f g.$ d $ w x x x : : $ . # % % % > > > > y y y & ", "y y & & & & x x x : : : $ . % % % 6 # X $ y y y n & & & x x x : : : $ . % % % > > > > y y y & & ", "$ $ $ $ $ $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ . $ $ $ $ $ $ $ $ $ $ $ $ "}; ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/expert.xpm��������������������������������������������������������0000644�0001750�0001750�00000041106�13431646202�015617� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * expert_xpm[] = { "48 48 757 2", " c None", ". c #2C2C2C", "+ c #FEFEFE", "@ c #8E8B8E", "# c #8F8B8F", "$ c #8F8C8F", "% c #908C90", "& c #918D91", "* c #928E92", "= c #928F92", "- c #938F93", "; c #949094", "> c #959195", ", c #969296", "' c #969396", ") c #979497", "! c #989598", "~ c #999699", "{ c #9A969A", "] c #9B979B", "^ c #9C989C", "/ c #9C999C", "( c #9E9A9E", "_ c #9D999D", ": c #908D90", "< c #939093", "[ c #949194", "} c #959295", "| c #979397", "1 c #989498", "2 c #999599", "3 c #9A979A", "4 c #9D9A9D", "5 c #9E9B9E", "6 c #908E90", "7 c #918E91", "8 c #9B989B", "9 c #9D9B9D", "0 c #9F9B9F", "a c #8C8A84", "b c #42423E", "c c #A09CA0", "d c #35312C", "e c #292322", "f c #271D1F", "g c #281D20", "h c #2B2224", "i c #232123", "j c #251F22", "k c #302C2D", "l c #4B4743", "m c #7E7874", "n c #9F9C9F", "o c #959395", "p c #4D4746", "q c #292329", "r c #272221", "s c #251C1E", "t c #251A1A", "u c #2A1C1F", "v c #201A17", "w c #251E1C", "x c #251819", "y c #25191D", "z c #231B1C", "A c #241A1D", "B c #24191F", "C c #271C1E", "D c #241C20", "E c #252021", "F c #423D3B", "G c #453C3B", "H c #504C48", "I c #878079", "J c #4E4646", "K c #2A2428", "L c #2C252A", "M c #2B2325", "N c #231D1F", "O c #251D1F", "P c #251F1B", "Q c #22161A", "R c #251C1D", "S c #271F1E", "T c #241C1E", "U c #25181A", "V c #22181A", "W c #251A1F", "X c #251B20", "Y c #261C1C", "Z c #271D1B", "` c #241A1E", " . c #2B2123", ".. c #281B1E", "+. c #2B191C", "@. c #26171C", "#. c #261A1A", "$. c #241B1D", "%. c #281A1F", "&. c #302122", "*. c #2B261F", "=. c #4F4440", "-. c #776E63", ";. c #8D8880", ">. c #938E81", ",. c #524F52", "'. c #2F2A26", "). c #2C2224", "!. c #241E22", "~. c #292122", "{. c #2E2229", "]. c #2C2124", "^. c #29242A", "/. c #271B1D", "(. c #292023", "_. c #261A1F", ":. c #231C1B", "<. c #271A1C", "[. c #26171B", "}. c #251A20", "|. c #241D1C", "1. c #251A1C", "2. c #282122", "3. c #271C21", "4. c #26161A", "5. c #2A1C22", "6. c #251A1E", "7. c #221616", "8. c #1F1316", "9. c #221418", "0. c #231A13", "a. c #261616", "b. c #261C1D", "c. c #25151A", "d. c #261723", "e. c #28191B", "f. c #302224", "g. c #4F4C47", "h. c #5F5C5D", "i. c #7E7B7E", "j. c #949294", "k. c #5D5457", "l. c #2B2424", "m. c #2B2227", "n. c #2E2526", "o. c #2F2627", "p. c #2B1F25", "q. c #2F2023", "r. c #2E1E22", "s. c #2B2021", "t. c #23181B", "u. c #201419", "v. c #221A1D", "w. c #2B1C1D", "x. c #2E171C", "y. c #1A0D0F", "z. c #110C0C", "A. c #160D0F", "B. c #231416", "C. c #24161A", "D. c #291B1E", "E. c #281B1C", "F. c #26171A", "G. c #23171B", "H. c #221315", "I. c #23181A", "J. c #2B1618", "K. c #130809", "L. c #1B0C0A", "M. c #221010", "N. c #271413", "O. c #372622", "P. c #4D4A44", "Q. c #272727", "R. c #5B595B", "S. c #4F474B", "T. c #322628", "U. c #2B2225", "V. c #2A2324", "W. c #2F2625", "X. c #2F2223", "Y. c #322225", "Z. c #2F2021", "`. c #26191F", " + c #2A2223", ".+ c #261A1B", "++ c #231619", "@+ c #401F1B", "#+ c #7E180E", "$+ c #8E1A0A", "%+ c #481E16", "&+ c #1E191D", "*+ c #251A21", "=+ c #2F2226", "-+ c #27191F", ";+ c #261B1E", ">+ c #2F2123", ",+ c #332423", "'+ c #26181D", ")+ c #251416", "!+ c #271919", "~+ c #28171D", "{+ c #221316", "]+ c #271F1A", "^+ c #311E25", "/+ c #2F2323", "(+ c #291F1E", "_+ c #362D26", ":+ c #484642", "<+ c #757275", "[+ c #797172", "}+ c #413E3F", "|+ c #352830", "1+ c #372C32", "2+ c #342C30", "3+ c #35292A", "4+ c #2E2628", "5+ c #312529", "6+ c #362727", "7+ c #2B1E21", "8+ c #2E2025", "9+ c #2B222A", "0+ c #43231F", "a+ c #942A11", "b+ c #87220E", "c+ c #3B1915", "d+ c #22191F", "e+ c #2B2121", "f+ c #2C2122", "g+ c #2C1D22", "h+ c #2E2024", "i+ c #2C1F24", "j+ c #2A1E20", "k+ c #2A1B20", "l+ c #2A1F22", "m+ c #2A1E1E", "n+ c #2F1E20", "o+ c #291919", "p+ c #2A1B1F", "q+ c #2F2125", "r+ c #2B2122", "s+ c #2C1D20", "t+ c #292020", "u+ c #352624", "v+ c #50493F", "w+ c #3C3B39", "x+ c #393839", "y+ c #706062", "z+ c #503E41", "A+ c #413638", "B+ c #3F3132", "C+ c #34272A", "D+ c #342B32", "E+ c #31272E", "F+ c #33282A", "G+ c #352929", "H+ c #2C2225", "I+ c #312928", "J+ c #3E2328", "K+ c #772A1D", "L+ c #7F260E", "M+ c #3A1510", "N+ c #282227", "O+ c #352529", "P+ c #292221", "Q+ c #2E2328", "R+ c #302329", "S+ c #292228", "T+ c #2A2225", "U+ c #2E2021", "V+ c #332829", "W+ c #342228", "X+ c #35282B", "Y+ c #2F2227", "Z+ c #302125", "`+ c #2E2129", " @ c #292024", ".@ c #332325", "+@ c #3D2F2E", "@@ c #615E54", "#@ c #31302F", "$@ c #4C4B4C", "%@ c #999799", "&@ c #554F4E", "*@ c #544749", "=@ c #433C3B", "-@ c #473E3E", ";@ c #3A3333", ">@ c #38272A", ",@ c #3B3030", "'@ c #34292B", ")@ c #332326", "!@ c #622018", "~@ c #7C1F0C", "{@ c #331812", "]@ c #2A1A22", "^@ c #2A1E25", "/@ c #281C24", "(@ c #2F1F27", "_@ c #30242A", ":@ c #2E1A22", "<@ c #2F2026", "[@ c #291B24", "}@ c #291E22", "|@ c #2F2024", "1@ c #301F25", "2@ c #322226", "3@ c #2A1B1D", "4@ c #2E2224", "5@ c #2B1F20", "6@ c #2C2023", "7@ c #2A1F23", "8@ c #2E2128", "9@ c #382E28", "0@ c #57554F", "a@ c #2B2A2B", "b@ c #616061", "c@ c #767376", "d@ c #575656", "e@ c #4B4A48", "f@ c #514E4B", "g@ c #4B4846", "h@ c #493E3D", "i@ c #403538", "j@ c #4F342F", "k@ c #98391B", "l@ c #32282E", "m@ c #342529", "n@ c #2A1D23", "o@ c #281B24", "p@ c #281A21", "q@ c #291E27", "r@ c #2B1922", "s@ c #27171F", "t@ c #281F25", "u@ c #271620", "v@ c #261821", "w@ c #282222", "x@ c #281C22", "y@ c #2C1F23", "z@ c #2B1D20", "A@ c #322126", "B@ c #312425", "C@ c #271A1D", "D@ c #26181E", "E@ c #291C1F", "F@ c #554A47", "G@ c #4D4B47", "H@ c #302F30", "I@ c #797779", "J@ c #828082", "K@ c #6B696B", "L@ c #725951", "M@ c #7C2719", "N@ c #1E161C", "O@ c #291B20", "P@ c #292028", "Q@ c #2E1E24", "R@ c #362930", "S@ c #372530", "T@ c #2E1E25", "U@ c #31222B", "V@ c #2A1C25", "W@ c #2A1B23", "X@ c #2A1924", "Y@ c #2C1E22", "Z@ c #2A1F27", "`@ c #251621", " # c #2E1C24", ".# c #2C2024", "+# c #26161F", "@# c #251920", "## c #221E1E", "$# c #45443F", "%# c #3D3C3D", "&# c #877779", "*# c #6A2222", "=# c #1D161B", "-# c #241B20", ";# c #2B2125", "># c #251D23", ",# c #221B20", "'# c #20171D", ")# c #181014", "!# c #201519", "~# c #291A24", "{# c #2F1C23", "]# c #2B2228", "^# c #33262F", "/# c #2C1F29", "(# c #321F22", "_# c #2A2128", ":# c #27161B", "<# c #23191C", "[# c #2A1621", "}# c #271D23", "|# c #43443C", "1# c #A19DA1", "2# c #7B6E70", "3# c #763F2B", "4# c #2B2027", "5# c #291F25", "6# c #302429", "7# c #352427", "8# c #231821", "9# c #181015", "0# c #140C0F", "a# c #12090C", "b# c #150D10", "c# c #11090B", "d# c #160D0E", "e# c #170E13", "f# c #27181C", "g# c #2F1C26", "h# c #2C1D25", "i# c #231319", "j# c #261820", "k# c #242023", "l# c #595750", "m# c #7C797C", "n# c #A09DA0", "o# c #82726A", "p# c #AF5533", "q# c #2E252D", "r# c #2F242B", "s# c #33252D", "t# c #35262E", "u# c #36262F", "v# c #2E2228", "w# c #1D141D", "x# c #161012", "y# c #161114", "z# c #180F10", "A# c #100B0E", "B# c #160D10", "C# c #150D15", "D# c #1B1418", "E# c #221C20", "F# c #261D1E", "G# c #312025", "H# c #281F24", "I# c #333531", "J# c #676565", "K# c #A19EA1", "L# c #B7806F", "M# c #AB2F19", "N# c #412B36", "O# c #35232E", "P# c #3E2530", "Q# c #3B2831", "R# c #392B31", "S# c #22181D", "T# c #1E1117", "U# c #150F12", "V# c #120B10", "W# c #1A1114", "X# c #130C11", "Y# c #1F171C", "Z# c #2B1E25", "`# c #23161C", " $ c #261A1D", ".$ c #2F2225", "+$ c #292926", "@$ c #A29EA2", "#$ c #BA5039", "$$ c #B1311E", "%$ c #512A32", "&$ c #392932", "*$ c #382A35", "=$ c #34252B", "-$ c #352328", ";$ c #302124", ">$ c #1F1619", ",$ c #22181F", "'$ c #1B1016", ")$ c #171210", "!$ c #1C1116", "~$ c #14060D", "{$ c #180D11", "]$ c #211718", "^$ c #261A20", "/$ c #2B1C25", "($ c #2B1E22", "_$ c #271C22", ":$ c #292725", "<$ c #373635", "[$ c #A39FA3", "}$ c #8A5957", "|$ c #A37469", "1$ c #392831", "2$ c #3F2F32", "3$ c #35252E", "4$ c #35242B", "5$ c #3C2F33", "6$ c #34242A", "7$ c #23161B", "8$ c #180C10", "9$ c #150C0F", "0$ c #191113", "a$ c #191114", "b$ c #180E12", "c$ c #180B10", "d$ c #201818", "e$ c #271E20", "f$ c #1F1319", "g$ c #25161B", "h$ c #2E2022", "i$ c #26171D", "j$ c #281A22", "k$ c #3A3732", "l$ c #40403F", "m$ c #A4A0A4", "n$ c #928976", "o$ c #B0998F", "p$ c #433236", "q$ c #392B34", "r$ c #372831", "s$ c #40343A", "t$ c #3A2A30", "u$ c #332228", "v$ c #1F141A", "w$ c #190F10", "x$ c #191010", "y$ c #170E10", "z$ c #1A1015", "A$ c #211619", "B$ c #1C1211", "C$ c #23171F", "D$ c #201318", "E$ c #261B1C", "F$ c #27191B", "G$ c #3A2C30", "H$ c #4A4943", "I$ c #4F4D4F", "J$ c #8E8A8E", "K$ c #B2927E", "L$ c #CA6853", "M$ c #572F32", "N$ c #493940", "O$ c #473840", "P$ c #422C34", "Q$ c #35232A", "R$ c #37242B", "S$ c #2E1C21", "T$ c #2E2125", "U$ c #26191D", "V$ c #28191E", "W$ c #271C1F", "X$ c #281D22", "Y$ c #25191E", "Z$ c #1C1118", "`$ c #281A1B", " % c #271A1E", ".% c #181114", "+% c #281A1E", "@% c #2C2C2B", "#% c #A5A1A5", "$% c #BD7559", "%% c #C25B32", "&% c #7B4740", "*% c #3F2E3B", "=% c #472934", "-% c #422E34", ";% c #432C3B", ">% c #3F2E33", ",% c #342227", "'% c #231515", ")% c #130B0A", "!% c #130D0F", "~% c #140C0C", "{% c #100909", "]% c #10080A", "^% c #160D0C", "/% c #231818", "(% c #2E1D19", "_% c #291B22", ":% c #3E3D3A", "<% c #484748", "[% c #AF4C3E", "}% c #BE4A21", "|% c #624F45", "1% c #42363C", "2% c #3C2830", "3% c #382A2A", "4% c #402B32", "5% c #33242A", "6% c #211616", "7% c #1A1416", "8% c #191212", "9% c #1B0F16", "0% c #1B1617", "a% c #170F10", "b% c #1A1211", "c% c #1F1917", "d% c #261D21", "e% c #281D1F", "f% c #423F3A", "g% c #2B2B2B", "h% c #A6A2A6", "i% c #B24F40", "j% c #C4622F", "k% c #645B50", "l% c #676666", "m% c #645C5E", "n% c #3C2B32", "o% c #2A191F", "p% c #38242F", "q% c #2A2126", "r% c #1C1010", "s% c #151115", "t% c #160E12", "u% c #1B0E0F", "v% c #1A1615", "w% c #181214", "x% c #1B0F12", "y% c #180C0D", "z% c #25131C", "A% c #2B2427", "B% c #524A45", "C% c #363534", "D% c #605F60", "E% c #B25142", "F% c #A83C22", "G% c #65594C", "H% c #7C7A7C", "I% c #747172", "J% c #4C4949", "K% c #3D3638", "L% c #271E24", "M% c #181113", "N% c #160E0C", "O% c #14080A", "P% c #1C1013", "Q% c #110A0B", "R% c #100A0C", "S% c #21191A", "T% c #35272B", "U% c #524A44", "V% c #413F3D", "W% c #373737", "X% c #D1CFD1", "Y% c #FCFCFC", "Z% c #B75A53", "`% c #B44C21", " & c #7E6A59", ".& c #A5A2A5", "+& c #848184", "@& c #646264", "#& c #3A3736", "$& c #403B39", "%& c #272022", "&& c #181213", "*& c #251719", "=& c #2E2722", "-& c #3A3430", ";& c #524E49", ">& c #4F4E4F", ",& c #FFFFFF", "'& c #EEEEEE", ")& c #4D4B4D", "!& c #AD5A46", "~& c #BD562C", "{& c #826E60", "]& c #696769", "^& c #A7A3A7", "/& c #A8A4A8", "(& c #A8A5A8", "_& c #737073", ":& c #474647", "<& c #2A2A2A", "[& c #343434", "}& c #504E50", "|& c #817F81", "1& c #F9F9F9", "2& c #DFDFDF", "3& c #070707", "4& c #B96865", "5& c #CD6431", "6& c #8A756A", "7& c #666466", "8& c #A4A1A4", "9& c #A7A4A7", "0& c #A9A5A9", "a& c #E8E7E8", "b& c #A4A3A4", "c& c #0F0E0F", "d& c #AD645B", "e& c #B75330", "f& c #856D62", "g& c #A3A0A3", "h& c #A6A3A6", "i& c #D4D3D4", "j& c #737273", "k& c #2C2B2C", "l& c #AF6458", "m& c #AF4A26", "n& c #9D7F72", "o& c #656365", "p& c #A29FA2", "q& c #A2A0A2", "r& c #C1BEC1", "s& c #3E3D3E", "t& c #474547", "u& c #A85A51", "v& c #B04229", "w& c #A28072", "x& c #555455", "y& c #AEAAAE", "z& c #1A1A1A", "A& c #696669", "B& c #AF5E54", "C& c #B34427", "D& c #A28674", "E& c #F4F4F4", "F& c #000000", "G& c #A05F62", "H& c #AB3522", "I& c #B06E4B", "J& c #3A393A", "K& c #E6E5E6", "L& c #0C0C0C", "M& c #A66970", "N& c #99281A", "O& c #AB6548", "P& c #272627", "Q& c #A46764", "R& c #901E15", "S& c #AA7A65", "T& c #353335", "U& c #A56060", "V& c #A42C1D", "W& c #AB654A", "X& c #C8C5C8", "Y& c #C5C3C5", "Z& c #9E6465", "`& c #AE3722", " * c #A34937", ".* c #F9F8F9", "+* c #E9E9E9", "@* c #555355", "#* c #A5666B", "$* c #A02A1F", "%* c #9F5745", "&* c #9F9D9F", "** c #F7F7F7", "=* c #090909", "-* c #B58883", ";* c #AC352A", ">* c #886055", ",* c #C1BFC1", "'* c #F5F5F5", ")* c #515051", "!* c #252525", "~* c #595859", "{* c #5A585A", "]* c #050505", "^* c #565456", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + ", ". @ # $ % & * = - ; > > , ' ) ) ! ~ ~ { ] ^ / ( ( _ / ^ ] { ~ ~ ! ) ) ' , > > ; - = * & % $ # + ", ". # % : & * - < < [ } } ' | 1 1 2 { 3 ] ^ _ 4 ( 5 ( 4 _ ^ ] 3 { 2 1 1 | ' } } [ < < - * & : % + ", ". % : 6 7 = < < ; > , , | 1 2 2 { ] 8 8 / 4 9 5 0 5 9 4 / 8 8 ] { 2 2 1 | , , > ; < < = 7 6 : + ", ". : & 7 * - ; [ > , | | 1 ! ~ ~ a b 8 ^ _ ( 5 0 c 0 5 ( _ ^ 8 8 3 ~ ~ ! 1 | | , > [ ; - * 7 & + ", ". & * = - ; > } , ' ) ) ! ~ { d e f g h i j k l m c n 0 ( _ / ^ ] { { ~ ! ) ) ' , } > ; - = * + ", ". * - < < [ } o ' | 1 1 2 p q r s t u v w x y z A B C D E F G H I ] ] { 2 1 1 | ' o } [ < < - + ", ". = - < ; > , ' | 1 2 J K L M E N O P Q R S T U V W X Y Z ` ...+.@.#.$.%.&.*.=.-.;.>.> ; < - + ", ". - ; [ > , | ) 1 ,.'.).!.~.{.].^./.(._.:.<.[.}.|.1.2.3.4.5.6.7.@.8.9.0.a.b.c.d.e.f.g.h.i.[ ; + ", ". ; [ j.} ' ) k.l.m.n...o.p.q.r.s.t.u.v.w.x.y.z.A.B.C.1.x D.E.F.G.H.I.J.K.L.M.N.O.P.Q.R.} j.[ + ", ". ; > } , S.T.U.V.W.X.Y.Z.l.`. +.+++@+#+$+%+&+*+=+-+U ;+>+,+'+)+!+~+{+]+^+/+(+_+:+. <+| , } > + ", ". > , [+}+|+1+2+3+4+5+6+7+&.8+9+0+a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+w+x+~ 2 1 | ' , + ", ". , | y+z+A+B+C+D+E+F+G+H+I+J+K+L+M+N+O+P+Q+l+R+S+T+U+=+V+W+X+Y+Z+`+ @.@+@@@#@$@3 %@~ ! ) ) | + ", ". , | ) &@*@=@-@;@>@,@'@)@!@~@{@h ]@^@/@(@_@:@<@[@}@|@1@2@3@4@5@6@7@8@9@0@a@b@^ ] 3 { 2 1 ) | + ", ". | 1 ! 2 c@d@e@f@g@h@i@j@k@l@m@n@o@p@q@r@s@t@u@v@w@x@y@z@A@B@C@D@E@F@G@H@I@( _ ^ 8 ] { 2 ! 1 + ", ". 1 2 ~ { ] ^ / / 4 J@K@L@M@N@O@P@Q@R@S@T@U@V@W@X@Y@Z@`@ #5..#+#@###$#%#n 5 5 4 / / ^ ] { ~ 2 + ", ". 1 2 ~ { ] ^ / _ ( 0 0 &#*#=#-#;#>#,#'#)#!#~#{#]#^#/#(#_#V@:#<#[#}#|#1#c 0 0 ( _ / ^ ] { ~ 2 + ", ". 2 { 3 ] ^ _ 4 ( 0 c c 2#3#4#5#6#7#'@8#9#0#a#b#c#d#e#` f#g#h#i#j#k#l#m#1#c c 0 ( 4 _ ^ ] 3 { + ", ". { ] 8 ^ _ ( 5 5 n n#n#o#p#q#r#s#t#u#v#w#x#y#z#A#B#C#D#E#;#W F#G#H#I#J#K#n#n#n 5 5 ( _ ^ 8 ] + ", ". { ] 8 ^ _ ( 5 0 c 1#1#L#M#N#O#P#Q#R#`.S#x#T#U#V#W#X#Y#Z#`#/. $.$8++$e@@$1#1#c 0 5 ( _ ^ 8 ] + ", ". ] ^ / _ ( 0 n c 1#@$@$#$$$%$&$*$=$-$;$>$,$'$)$!$~$z.{$]$'#^$/$($_$:$<$[$@$@$1#c n 0 ( _ / ^ + ", ". ^ _ 4 ( 0 c n#1#@$[$[$}$|$1$2$3$4$5$6$7$8$9$0$a$b$c$d$e$f$g$h$i$j$k$l$m$[$[$@$1#n#c 0 ( 4 _ + ", ". ^ _ 4 ( 0 c n#1#@$[$[$n$o$p$q$r$s$t$u$Q v$w$x$y$z$A$B$C$D$E$F$}@G$H$I$m$[$[$@$1#n#c 0 ( 4 _ + ", ". J$( 5 0 c 1#K#@$[$m$m$K$L$M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$`$ %.%+%Y@k$@%I@#%m$m$[$@$K#1#c 0 5 ( + ", ". J$_ 4 ( 0 c n#1#@$[$[$$%%%&%*%=%-%;%>%,%'%)%!%~%{%]%^%/%t.(%_%%.:%<%#%m$[$[$@$1#n#c 0 ( 4 _ + ", ". J$_ 4 ( 0 c n#1#@$[$[$[%}%|%1%2%Q#3%4%5%6%7%8%9%0%a%b%c%d%e%,%f%g%h%#%m$[$[$@$1#n#c 0 ( 4 _ + ", ". J$^ / _ ( 0 n c 1#@$@$i%j%k%l%m%n%o%p%q%r%s%t%u%v%w%x%y%z%A%B%C%D%#%m$[$@$@$1#c n 0 ( _ / ^ + ", ". J$] 8 ^ _ ( 5 0 c 1#1#E%F%G%H%#%I%J%K%L%M%y.N%O%P%Q%R%S%T%U%V%W%m$m$[$@$X%Y%X%0 5 ( _ ^ 8 ] + ", ". J$] 8 ^ _ ( 5 5 n n#n#Z%`% &H%m$#%.&+&@&<%#&$&%&&&*&=&-&;&Q.>&m$[$[$@$K#Y%,&'&)&5 ( _ ^ 8 ] + ", ". J${ 3 ] ^ _ 4 ( 0 c c !&~&{&]&m$#%.&h%^&/&(&(&_&:&. <&[&}&|&#%m$[$[$@$1#1&,&2&3&4 _ ^ ] 3 { + ", ". J$2 ~ { ] ^ / _ ( 0 0 4&5&6&7&[$m$8&#%h%^&9&/&0&/&9&^&h%#%8&m$[$@$@$1#c a&,&b&c&/ ^ ] { ~ 2 + ", ". J$2 ~ { ] ^ / / 4 5 5 d&e&f&7&@$[$g&m$#%h%h&^&/&^&h&h%#%m$g&[$@$1#1#c n i&,&j&k&/ ^ ] { ~ 2 + ", ". J$1 ! 2 { ] 8 ^ _ ( ( l&m&n&o&@$p&q&g&8&.&.&h%^&h%.&.&8&g&q&p&@$1#1#c 0 r&,&s&t&8 ] { 2 ! 1 + ", ". J$| ) 1 2 { 3 ] ^ _ _ u&v&w&x&1#@$p&[$m$#%.&h%^&h%.&#%m$[$p&@$1#c c 0 ( y&,&z&A&3 { 2 1 ) | + ", ". J$| ) ) ! ~ %@3 ] ^ ^ B&C&D&}&c 1#K#@$[$m$8&#%h%#%8&m$[$@$K#1#c 0 0 ( _ ^ E&F&J@%@~ ! ) ) | + ", ". J$, ' | 1 2 ~ { ] ^ ^ G&H&I&J&n c n#1#@$[$g&m$#%m$g&[$@$1#n#c n 5 5 4 / ^ K&L&{ ~ 2 1 | ' , + ", ". J$> } , | 1 ! 2 { ] ] M&N&O&J&0 c n#n#K#p&q&g&m$g&q&p&K#n#n#c 0 ( ( _ ^ ] y&P&2 ! 1 | , } > + ", ". J$[ j.} ' ) ) 1 2 { { Q&R&S&J&( 0 n c 1#@$p&[$m$[$p&@$1#c n 0 ( _ _ ^ ] { F&T&1 ) ) ' } j.[ + ", ". J$; [ > , | ) 1 2 { { U&V&W&J&4 ( 5 0 c 1#K#@$[$@$K#1#c 0 5 ( 4 / / 8 3 X&Y%Y&1 ) | , > [ ; + ", ". J$- < ; > , ' | 1 2 2 Z&`& *J&_ 4 9 5 n n#n#1#@$1#n#n#n 5 9 4 _ ^ ^ ] { .*,&+*@*' , > ; < - + ", ". J$- < < [ } o ' | 1 1 #*$*%*J&^ _ 4 ( 0 n &*n#K#n#&*n 0 ( 4 _ ^ ] ] { 2 **,&'&=*o } [ < < - + ", ". J$* = - ; > } , ' ) ) -*;*>*J&] ^ / _ ( 0 n c 1#c n 0 ( _ / ^ ] { { ~ ! ,*'*)*3&} > ; - = * + ", ". J$& 7 * - ; [ > , | | 1 R.!*~*3 8 8 ^ _ ( 5 0 c 0 5 ( _ ^ 8 8 3 ~ ~ ! 1 | {*]*^*[ ; - * 7 & + ", ". J$: 6 7 = < < ; > , , | 1 2 2 { ] 8 8 / 4 9 5 0 5 9 4 / 8 8 ] { 2 2 1 | , , > ; < < = 7 6 : + ", ". J$% : & * - < < [ } } ' | 1 1 2 { 3 ] ^ _ 4 ( 5 ( 4 _ ^ ] 3 { 2 1 1 | ' } } [ < < - * & : % + ", ". J$# $ % & * = - ; > > , ' ) ) ! ~ ~ { ] ^ / _ ( _ / ^ ] { ~ ~ ! ) ) ' , > > ; - = * & % $ # + ", ". J$J$J$J$J$J$J$J$J$J$J$J$J$J$J$J$J$J$J$J$J$J$J$J$J$J$J$J$J$J$J$J$J$J$J$J$J$J$J$J$J$J$J$J$J$J$+ ", "+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + "}; ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/whandling.xpm�����������������������������������������������������0000644�0001750�0001750�00000007173�13431646202�016271� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * whandling_xpm[] = { "48 48 77 1", " c None", ". c #2C2C2C", "+ c #FEFEFE", "@ c #505075", "# c #FFFFFF", "$ c #000000", "% c #707070", "& c #F8F8F8", "* c #6C6C6C", "= c #F3F3F3", "- c #6A6A6A", "; c #686868", "> c #090909", ", c #111111", "' c #727272", ") c #DADADA", "! c #CCCCCC", "~ c #CDCDCD", "{ c #C8C8C8", "] c #CACACA", "^ c #CECECE", "/ c #CBCBCB", "( c #C7C7C7", "_ c #C1C1C1", ": c #BFBFBF", "< c #C0C0C0", "[ c #C5C5C5", "} c #D0D0D0", "| c #717171", "1 c #181818", "2 c #F4F4F4", "3 c #F2F2F2", "4 c #F1F1F1", "5 c #F0F0F0", "6 c #EFEFEF", "7 c #EEEEEE", "8 c #EDEDED", "9 c #ECECEC", "0 c #EBEBEB", "a c #EAEAEA", "b c #E9E9E9", "c c #E7E7E7", "d c #E4E4E4", "e c #E3E3E3", "f c #E2E2E2", "g c #E1E1E1", "h c #191919", "i c #E8E8E8", "j c #E6E6E6", "k c #E5E5E5", "l c #1A1A1A", "m c #E0E0E0", "n c #171717", "o c #1B1B1B", "p c #DFDFDF", "q c #161616", "r c #FAFAFA", "s c #DEDEDE", "t c #DDDDDD", "u c #DCDCDC", "v c #DBDBDB", "w c #D8D8D8", "x c #141414", "y c #D9D9D9", "z c #D7D7D7", "A c #D5D5D5", "B c #131313", "C c #9E9E9E", "D c #9F9F9F", "E c #A0A0A0", "F c #060606", "G c #282828", "H c #C9C9C9", "I c #696969", "J c #2A2A2A", "K c #D1D1D1", "L c #0B0B0B", "...............................................+", ".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+", ".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+", ".@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@+", ".@@@@@@@@@@@@@@@@@@@@@@###@@@@@@@@@@@@@@@@@@@@@+", ".@@@@@@@@@@@@@@@@@@@@@#####@@@@@@@@@@@@@@@@@@@@+", ".@@@@@@@@@@@@@@@@@@@@#######@@@@@@@@@@@@@@@@@@@+", ".@@@@@@@@@@@@@@@@@@@@@$###$$$@@@@@@@@@@@@@@@@@@+", ".@@@@@@@@@@@@@@@@@@@@@@###$@@@@@@@@@@@@@@@@@@@@+", ".@@@@@@@@@@@@@@@@@@@@@@###$@@@@@@@@@@@@@@@@@@@@+", ".@@@@@@@@@@@@@@@@@@@@@@@$$$@@@@@@@@@@@@@@@@@@@@+", ".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+", ".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+", ".@@@@@@@@@@$$$$$%$$$$$$$$$$$$$$%$$$$$@@@@@@@@@@+", ".@@@@@@@@@@$++&$*$$$$$$$$$$$$$$*$+$+$@@@@@@@@@@+", ".@@@@@@@@@@$+$=$*$$$$$$$$$$$$$$*$$+$$@@@@@@@@@@+", ".@@@@@@@@@@$+++$-$$$$$$$$$$$$$$-$+$+$@@@@@@@@@@+", ".@@@@@@@@@@$$$$$;>,,,,,,,,,,,,>;$$$$$@@@@@@@@@@+", ".@@@@@@@@@@')!~{]]^^!!///]]{{(_:<[[}|@@@@@@@@@@+", ".@@@@@@@@@@12=33455678990aabcddedffg1@@@@@@@@@@+", ".@@@@#@@@@@h=456456689aicccjkddeefgg1@@@@#@@@@@+", ".@@@##$@@@@l=556556780biiiicjkdeffgmn@@@@##@@@@+", ".@@######@@o3566566790abcccjkkdeegmmn@######@@@+", ".@#######$@h366766779000abicjkkdffmpq@#######@@+", ".@@###+##$@o367767789990bcccjdeffmmpn@######$$@+", ".@@@##$$$$@o467867880aaabccjkefggmppn@@$$#r$$@@+", ".@@@@#$@@@@o477877890abbijkdeeefmppsn@@@@#$$@@@+", ".@@@@@$@@@@o578878890abbbijkeefggmssn@@@@@$@@@@+", ".@@@@@@@@@@l66788900bbiiijkdegmmpsttq@@@@@@@@@@+", ".@@@@@@@@@@l6778990abiccjkddeggggttuq@@@@@@@@@@+", ".@@@@@@@@@@l8789900abijkkdddemmpssuvq@@@@@@@@@@+", ".@@@@@@@@@@h098900abiijkkkdddgmpstvwq@@@@@@@@@@+", ".@@@@@@@@@@xjiba0abbccjkkddddfptvyzAx@@@@@@@@@@+", ".@@@@@@@@@@B/CDE**DDDDDDDDDDDD**DDD;F@@@@@@@@@@+", ".@@@@@@@@@@GH;I-JKD***********J}DI;GL@@@@@@@@@@+", ".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+", ".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+", ".@@@@@@@@@@@@@@@@@@@@@@###@@@@@@@@@@@@@@@@@@@@@+", ".@@@@@@@@@@@@@@@@@@@@@@###$@@@@@@@@@@@@@@@@@@@@+", ".@@@@@@@@@@@@@@@@@@@@@@###$@@@@@@@@@@@@@@@@@@@@+", ".@@@@@@@@@@@@@@@@@@@@#######@@@@@@@@@@@@@@@@@@@+", ".@@@@@@@@@@@@@@@@@@@@@#####$$@@@@@@@@@@@@@@@@@@+", ".@@@@@@@@@@@@@@@@@@@@@@###$$@@@@@@@@@@@@@@@@@@@+", ".@@@@@@@@@@@@@@@@@@@@@@@#$$@@@@@@@@@@@@@@@@@@@@+", ".@@@@@@@@@@@@@@@@@@@@@@@@$@@@@@@@@@@@@@@@@@@@@@+", ".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+", ".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+", "++++++++++++++++++++++++++++++++++++++++++++++++"}; �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/oldstyle.xpm������������������������������������������������������0000644�0001750�0001750�00000003141�13431646202�016144� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * oldstyle_xpm[] = { "37 33 15 1", " c None", ". c #747474", "+ c #757575", "@ c #000000", "# c #222222", "$ c #262626", "% c #282828", "& c #FFFFFF", "* c #080808", "= c #A5A5A5", "- c #535353", "; c #060606", "> c #070707", ", c #030303", "' c #ABABAB", "..................+++++++...........@", "##################$$$$$$$%$%$$$$$$$$@", "##################$$$$$$$$%%%%%%%%%%@", "##################$$$$$$$%$%%%%%%%%%@", "##################$&&&&&&&&&&&&&&%%%*", "##################$&============-%%%*", "##################$&=@-======-@=-%%%*", "##################$&=-@-====-@-=-%%%*", "##################$&==-@-==-@-==-%%%*", "##################$&===-@--@-===-%%%*", "##################$&====-@@-====-%%%*", "##################$&====-@@-====-%%%*", "##################$&===-@--@-===-%%%*", "##################$&==-@-==-@-==-%%%*", "##################$&=-@-====-@-=-%%%*", "##################$&=@-======-@=-%%%*", "##################$&============-%%%*", "##################$&-------------%%%*", "##################$$$$$$$$$%%%%%%%%%*", "##################$$$$$$$%$%%%%%%%%%*", ";;;;;;;;;;;;;;;;;;>>>>>>>>>>>>>*****,", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "''''''''''''''''''''''''''''''''''''@", "''''''''''''''''''''''''''''''''''''@", "''''''''''''''''''''''''''''''''''''@", "''''''''''''''''''''''''''''''''''''@", "---------------------------------&''@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'&''@", "&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'&''@", "&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'&''@", "&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'&''@", "&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'&''@", "&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'&''@"}; �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/speed3s.xpm�������������������������������������������������������0000644�0001750�0001750�00000001571�13431646202�015660� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "26 26 3 1", " c None", ". c #FFFFFFFF0000", "X c #000000000000", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ................ ", " .X.XX.XXX.XXXX.X. ", " .X.XX.XXX.XXXX.XX. ", " .X.XX.XXX.XXXX.XXX. ", " .X.XX.XXX.XXXX.XXXX. ", " .X.XX.XXX.XXXX.XXX. ", " .X.XX.XXX.XXXX.XX. ", " .X.XX.XXX.XXXX.X. ", " ................ ", " ", " ", " ", " ", " ", " ", " ", " "}; ���������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/workspace.xpm�����������������������������������������������������0000644�0001750�0001750�00000016571�13431646202�016316� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * workspace_xpm[] = { "48 48 168 2", " c None", ". c #2C2C2C", "+ c #FEFEFE", "@ c #505075", "# c #E8E8E8", "$ c #A2A2A3", "% c #A7A7A8", "& c #ACACAC", "* c #B0B0B0", "= c #B5B5B5", "- c #5E5E5E", "; c #050505", "> c #F2F2F2", ", c #BABABA", "' c #ADADAD", ") c #C0C0C0", "! c #2F2F2F", "~ c #000000", "{ c #6E6E6E", "] c #0F0F0F", "^ c #717171", "/ c #A3A3A3", "( c #1C1C1C", "_ c #070707", ": c #C3C3C3", "< c #212121", "[ c #BCBCBC", "} c #6D6D6D", "| c #1F1F1F", "1 c #6A6A6A", "2 c #BBBBBB", "3 c #C9C9C9", "4 c #2D2D2D", "5 c #6B6B6B", "6 c #0C0C0C", "7 c #DDDDDD", "8 c #191919", "9 c #2B2B2B", "0 c #111111", "a c #1B1B1B", "b c #696969", "c c #0A0A0A", "d c #121212", "e c #0B0B0B", "f c #171717", "g c #757575", "h c #CDCDCD", "i c #CECECE", "j c #CBCBCB", "k c #CFCFCF", "l c #CCCCCC", "m c #C8C8C8", "n c #C6C6C6", "o c #C2C2C2", "p c #C1C1C1", "q c #D3D3D3", "r c #747474", "s c #1A1A1A", "t c #AFAFAF", "u c #9B9B9B", "v c #837A73", "w c #8E867F", "x c #A39286", "y c #787571", "z c #989799", "A c #9995A0", "B c #96919D", "C c #939393", "D c #9A999B", "E c #919191", "F c #908379", "G c #A08773", "H c #896F5A", "I c #6E5742", "J c #5E5853", "K c #8F8E92", "L c #7F7B84", "M c #7D7B7C", "N c #8D8C8E", "O c #908E92", "P c #8A898B", "Q c #80766C", "R c #8B6D54", "S c #765D46", "T c #614D3A", "U c #6C6B69", "V c #888889", "W c #8C8992", "X c #8E8A96", "Y c #828583", "Z c #7C7F7D", "` c #7F766E", " . c #7C614B", ".. c #544537", "+. c #494542", "@. c #8E8E8E", "#. c #999E98", "$. c #B9B9B9", "%. c #B2B2B2", "&. c #8B8B8B", "*. c #989E97", "=. c #898989", "-. c #848484", ";. c #7D7A78", ">. c #605E5B", ",. c #7C7C7C", "'. c #9D9D9D", "). c #AEAEAE", "!. c #181818", "~. c #FFFFFF", "{. c #565656", "]. c #636363", "^. c #818187", "/. c #A7A7C5", "(. c #ACADCF", "_. c #7C7C98", ":. c #7D7D86", "<. c #777593", "[. c #8D8CBA", "}. c #78779D", "|. c #7B779B", "1. c #8B7D94", "2. c #545066", "3. c #6F6F91", "4. c #5B5B5B", "5. c #646475", "6. c #57556F", "7. c #505055", "8. c #9E9F9F", "9. c #262626", "0. c #787685", "a. c #605F90", "b. c #696880", "c. c #A8A8A8", "d. c #A8606F", "e. c #604E42", "f. c #75746D", "g. c #7F7F7B", "h. c #777777", "i. c #BB6A6A", "j. c #8D634E", "k. c #B9B756", "l. c #828275", "m. c #896F6F", "n. c #7E6A63", "o. c #AAA962", "p. c #89897F", "q. c #1D1D1D", "r. c #161616", "s. c #E7E7E7", "t. c #D7D7D7", "u. c #D8D8D8", "v. c #A8A8A9", "w. c #D4D4D4", "x. c #D6D6D6", "y. c #DADADA", "z. c #AAAAAA", "A. c #EEEEEE", "B. c #838383", "C. c #878787", "D. c #888888", "E. c #868686", "F. c #8A8A8A", "G. c #7E7E7E", "H. c #0D0D0D", "I. c #3C3C3C", "J. c #494949", "K. c #E9E9E9", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # $ % & * = - + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # % ; ; > , - + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # ' ; > , ) - + ", ". @ @ ! * * * ~ { ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ { ] * ^ / ( @ @ @ @ @ # * > , _ : - + ", ". @ @ < [ ~ * ~ } ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ } _ | + 1 ~ @ @ @ @ @ # = 2 ) : 3 - + ", ". @ @ 4 * * * ~ 5 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ 5 6 7 8 ' 9 @ @ @ @ @ # - - - - - - + ", ". @ @ 0 ~ ~ ~ a b c d d d d d d d d d d d d d d d d d d c b | ; ~ e f @ @ @ @ @ # # # # # # # + ", ". @ @ g 7 h i 3 j j k k h h h l l l j j 3 3 3 m m m n n o ) p n n q r @ @ @ @ @ # $ % & * = - + ", ". @ @ s t t t t t t t t t u v w x y t t t u v w x y t t t t t t t t f @ @ @ @ @ # z A B C , - + ", ". @ @ 8 t D A B E t t t t F G H I J t t t F G H I J t t t t t t t t 8 @ @ @ @ @ # K L M N ) - + ", ". @ @ 8 t O L M P t t t t Q R S T U t t t Q R S T U t t t t t t t t 8 @ @ @ @ @ # V W X Y : - + ", ". @ @ s t V W X Z t t t t ` ...+.@.t t t ` ...+.@.t t t t t t t t 8 @ @ @ @ @ # #.$.%.&.3 - + ", ". @ @ a t *.$.%.=.t t -.t ;.>.,.'.).t -.t ;.>.,.'.).t -.t t t t t t !.@ @ @ @ @ # - - - - - - + ", ". @ @ 8 t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t 8 @ @ @ @ @ # # # # # # # + ", ". @ @ 8 ~.~.~.~.~.~.~.~.~.~.~.t {.t {.t {.t {.t {.t {.t {.t {.t {.t 8 @ @ @ @ @ # $ % & * = - + ", ". @ @ s ~.t t t t ].t t t t ~ {.t {.t {.t {.t {.t {.t {.t {.t {.t {.8 @ @ @ @ @ # ^./.(._., - + ", ". @ @ a ~.~ ~ ~ ~ ~ ~ ~ ~ ~ ~ t {.t {.t {.t {.t {.t {.t {.t {.t {.t !.@ @ @ @ @ # :.<.[.}.) - + ", ". @ @ ( j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j !.@ @ @ @ @ # |.1.2.3.: - + ", ". @ @ a ~.~.~.t t t t t t ~.4.t 4.t t t t t t ~.4.t 4.t t t t t t t f @ @ @ @ @ # 5.6.7.8.3 - + ", ". @ @ ( ~.t 9.t t t t t t ~.4.4.t 4.t t t t t ~.4.4.t 4.t t t t t t !.@ @ @ @ @ # - - - - - - + ", ". @ @ ( ~.t 9.t t t t t t ~.4.t 4.t t t t t t ~.4.t 4.t t t t t t t !.@ @ @ @ @ # # # # # # # + ", ". @ @ ( ~.].9.t t t t t t ~.4.~.~.~.t t t t t ~.4.4.t 4.t t t t t t !.@ @ @ @ @ # 0.a.b.c.= - + ", ". @ @ ( ~.t 9.t t t t t t ~.4.~.t 0 t t t t t ~.4.t 4.t t t t t t t !.@ @ @ @ @ # d.e.f.g., - + ", ". @ @ ( ~.t 9.t t t t t t ~.4.~.h.0 t t t t t ~.4.4.t 4.t t t t t t !.@ @ @ @ @ # i.j.k.l.) - + ", ". @ @ a ~.t 9.t t t t t t ~.4.~.t 0 t t t t t ~.4.t 4.t t t t t t t !.@ @ @ @ @ # m.n.o.p.: - + ", ". @ @ a ~.9.9.t t t t t t ~.4.~.t 0 t t t t t ~.4.4.t 4.t t t t t t f @ @ @ @ @ # = 2 ) : 3 - + ", ". @ @ a t {.t t t t t t t ~.4.~.0 0 t t t t t ~.4.t 4.t t t t t t t f @ @ @ @ @ # - - - - - - + ", ". @ @ a {.t {.t t t t t t ~.4.4.t 4.t t t t t ~.4.4.t 4.t t t t t t f @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ a t {.t t t t t t t ~.4.t 4.t t t t t t ~.4.t 4.t t t t t t t f @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ q.{.t {.t t t t t t ~.4.4.t 4.t t t t t ~.4.4.t 4.t t t t t t !.@ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ r.t {.t t t t t t t ~.4.t 4.t t t t t t ~.4.t 4.t t t t t t t r.@ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ r.s.q t.u.v.% w.x.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.u.v.% w.x.y.z._ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ 9 A.B.C.D.g q / E.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.D.g q / E.F.G.H.@ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". ; ; ; ; ; ; I.I.; ; ; ; ; ; @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # + ", ". ; ; ; ; ; ; J.J.; ; ; ; ; ; @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # g % $ g - - + ", ". # z A B C , b K.z A B C , - @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # % $ * = g - + ", ". # K L M N ) - # K L M N ) - @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # $ * g , ) - + ", ". # V W X Y : - # V W X Y : - @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # g = , ) : - + ", ". # #.$.%.&.3 - # #.$.%.&.3 - @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # - g ) ) g - + ", ". # - - - - - - # - - - - - - @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # - - - - - - + ", "+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + "}; ���������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/opaqueresize.xpm��������������������������������������������������0000644�0001750�0001750�00000031034�13431646202�017023� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * opaqueresize_xpm[] = { "48 48 498 2", " c None", ". c #000000", "+ c #9C9C9C", "@ c #B5B5B5", "# c #FFFFFF", "$ c #B4B4B4", "% c #B3B3B3", "& c #595959", "* c #0F0000", "= c #370000", "- c #FEFEFE", "; c #FDFDFD", "> c #FCFCFC", ", c #FBFBFB", "' c #FAFAFA", ") c #F9F9F9", "! c #F7F7F7", "~ c #F6F6F6", "{ c #F5F5F5", "] c #F4F4F4", "^ c #F8F8F8", "/ c #F0F0F0", "( c #EFEFEF", "_ c #EBEBEB", ": c #E0DFDF", "< c #DFDDDD", "[ c #DEDCDC", "} c #EEEEEE", "| c #F1F1F1", "1 c #F3F3F3", "2 c #EAEAEA", "3 c #E8E8E8", "4 c #D9D8D8", "5 c #AA9F9F", "6 c #B69797", "7 c #B49595", "8 c #D8D6D6", "9 c #E7E7E7", "0 c #E9E9E9", "a c #EDEDED", "b c #E5E5E5", "c c #DFDFDF", "d c #C5C4C4", "e c #AB8D8D", "f c #FE9999", "g c #FE9898", "h c #AC8D8D", "i c #CFCDCD", "j c #E0E0E0", "k c #E4E4E4", "l c #E6E6E6", "m c #E1E1E1", "n c #D0CFCF", "o c #9B9191", "p c #B98080", "q c #FF9999", "r c #FF9797", "s c #AA8686", "t c #C8C6C6", "u c #DCDCDC", "v c #DBDADA", "w c #BFBEBE", "x c #A38484", "y c #FE8E8E", "z c #FF9595", "A c #FF8888", "B c #9B7C7C", "C c #C3C1C1", "D c #D8D8D8", "E c #ECECEC", "F c #CECDCD", "G c #988D8D", "H c #B27979", "I c #FF8E8E", "J c #A36B6B", "K c #837777", "L c #B0AEAE", "M c #C4C3C3", "N c #F2F2F2", "O c #BFBCBC", "P c #A08181", "Q c #FF8787", "R c #FF8A8A", "S c #FE7878", "T c #856565", "U c #949090", "V c #847A7A", "W c #957E7E", "X c #9C9292", "Y c #CDCBCB", "Z c #E5E4E4", "` c #988C8C", " . c #AD7575", ".. c #FF7D7D", "+. c #925A5A", "@. c #6E6262", "#. c #8B8787", "$. c #856969", "%. c #E07E7E", "&. c #AD7D7D", "*. c #A09494", "=. c #D2D0D0", "-. c #E1DFDF", ";. c #9F8282", ">. c #FF8282", ",. c #F36D6D", "'. c #765656", "). c #7F7B7B", "!. c #685E5E", "~. c #925D5D", "{. c #FF8383", "]. c #FF8C8C", "^. c #B38181", "/. c #A69B9B", "(. c #E2E2E2", "_. c #DDDBDB", ":. c #9D7C7C", "<. c #FF8181", "[. c #FF7777", "}. c #895151", "|. c #605454", "1. c #797575", "2. c #6F5252", "3. c #E46969", "4. c #FF8D8D", "5. c #AA8B8B", "6. c #D2D1D1", "7. c #DEDDDD", "8. c #E2E1E1", "9. c #E9E8E8", "0. c #D9D7D7", "a. c #927676", "b. c #EB7474", "c. c #E66868", "d. c #6F4F4F", "e. c #757171", "f. c #594F4F", "g. c #7C4747", "h. c #FF6969", "i. c #FF7878", "j. c #FF7F7F", "k. c #9C7D7D", "l. c #BCB9B9", "m. c #B39999", "n. c #B1A7A7", "o. c #DAD9D9", "p. c #DEDEDE", "q. c #D7D6D6", "r. c #847B7B", "s. c #816363", "t. c #755757", "u. c #5F5454", "v. c #726E6E", "w. c #634646", "x. c #D25757", "y. c #FF6868", "z. c #FF6F6F", "A. c #955D5D", "B. c #7E7272", "C. c #A4A0A0", "D. c #A48484", "E. c #FE9696", "F. c #C89090", "G. c #BB9A9A", "H. c #B2A7A7", "I. c #E8E7E7", "J. c #EDECEC", "K. c #EBEAEA", "L. c #EEEDED", "M. c #D7D7D7", "N. c #B2B1B1", "O. c #A2A0A0", "P. c #969494", "Q. c #838181", "R. c #584C4C", "S. c #764141", "T. c #F65C5C", "U. c #FF6464", "V. c #FF6565", "W. c #E35D5D", "X. c #755555", "Y. c #7D7171", "Z. c #AA7272", "`. c #FF9696", " + c #FF9F9F", ".+ c #FF9E9E", "++ c #C78F8F", "@+ c #B4A9A9", "#+ c #E5E3E3", "$+ c #E8E6E6", "%+ c #B9B0B0", "&+ c #C1A6A6", "*+ c #BAB1B1", "=+ c #DDDDDD", "-+ c #C1C1C1", ";+ c #A6A6A6", ">+ c #878585", ",+ c #674B4B", "'+ c #D15656", ")+ c #FF6060", "!+ c #F65959", "~+ c #794141", "{+ c #5C5050", "]+ c #7E5F5F", "^+ c #FF9C9C", "/+ c #3B0000", "(+ c #D3D1D1", "_+ c #BC9E9E", ":+ c #FEA5A5", "<+ c #BEA0A0", "[+ c #C4C4C4", "}+ c #B8B8B8", "|+ c #695E5E", "1+ c #814949", "2+ c #FA5F5F", "3+ c #FF6161", "4+ c #FF5D5D", "5+ c #D44E4E", "6+ c #5D3C3C", "7+ c #656060", "8+ c #5A4E4E", "9+ c #874F4F", "0+ c #FF7272", "a+ c #FF8080", "b+ c #FF8686", "c+ c #FF9191", "d+ c #420000", "e+ c #A58686", "f+ c #C0BDBD", "g+ c #A29696", "h+ c #BC8686", "i+ c #FFA1A1", "j+ c #C99191", "k+ c #CACACA", "l+ c #C0C0C0", "m+ c #A8A6A6", "n+ c #E96363", "o+ c #FF6262", "p+ c #F25555", "q+ c #6E3737", "r+ c #423535", "s+ c #453838", "t+ c #723F3F", "u+ c #E65C5C", "v+ c #FF6C6C", "w+ c #FF7676", "x+ c #FF7A7A", "y+ c #FF7979", "z+ c #857979", "A+ c #A6A2A2", "B+ c #977979", "C+ c #F57373", "D+ c #D6D4D4", "E+ c #E3E3E3", "F+ c #D1D1D1", "G+ c #C8C8C8", "H+ c #B1AFAF", "I+ c #856666", "J+ c #EF6969", "K+ c #FF6B6B", "L+ c #DF5050", "M+ c #5A3737", "N+ c #585353", "O+ c #5A3838", "P+ c #D54F4F", "Q+ c #FF6666", "R+ c #8E8A8A", "S+ c #7C7171", "T+ c #A26A6A", "U+ c #FF9292", "V+ c #FF8F8F", "W+ c #C0BEBE", "X+ c #D0D0D0", "Y+ c #BBB9B9", "Z+ c #7E7474", "`+ c #8C5959", " @ c #E96060", ".@ c #F75656", "+@ c #A14040", "@@ c #412B2B", "#@ c #3D3030", "$@ c #6C3535", "%@ c #F05353", "&@ c #FF5C5C", "*@ c #FF5E5E", "=@ c #DB5555", "-@ c #7D7979", ";@ c #7B5C5C", ">@ c #F77171", ",@ c #FF8484", "'@ c #8E8383", ")@ c #CCCACA", "!@ c #CBCBCB", "~@ c #ABA9A9", "{@ c #736767", "]@ c #784545", "^@ c #9B2F2F", "/@ c #562D2D", "(@ c #3A3030", "_@ c #4D2C2C", ":@ c #CE4848", "<@ c #FF5656", "[@ c #FF5858", "}@ c #FF5757", "|@ c #FF5454", "1@ c #D54B4B", "2@ c #693737", "3@ c #514545", "4@ c #834B4B", "5@ c #FF6A6A", "6@ c #FF7373", "7@ c #FF7575", "8@ c #200000", "9@ c #8B6C6C", "0@ c #C1BFBF", "a@ c #DBDBDB", "b@ c #151515", "c@ c #5A0000", "d@ c #7F0000", "e@ c #600000", "f@ c #613F3F", "g@ c #DC5656", "h@ c #520000", "i@ c #896565", "j@ c #ADABAB", "k@ c #D2D2D2", "l@ c #CDCDCD", "m@ c #BABABA", "n@ c #A09F9F", "o@ c #918F8F", "p@ c #898888", "q@ c #7F7D7D", "r@ c #644040", "s@ c #E74F4F", "t@ c #FF5555", "u@ c #FF5353", "v@ c #FF5151", "w@ c #FE4E4E", "x@ c #C74141", "y@ c #523232", "z@ c #615D5D", "A@ c #4B3F3F", "B@ c #713939", "C@ c #F45757", "D@ c #8E5858", "E@ c #817676", "F@ c #C5C5C5", "G@ c #B6B6B6", "H@ c #A9A9A9", "I@ c #9E9E9E", "J@ c #898787", "K@ c #624343", "L@ c #CB4B4B", "M@ c #EC4F4F", "N@ c #FF5252", "O@ c #FF5050", "P@ c #E44747", "Q@ c #642C2C", "R@ c #443838", "S@ c #593939", "T@ c #D14B4B", "U@ c #FF5A5A", "V@ c #FF5959", "W@ c #770000", "X@ c #E36565", "Y@ c #836767", "Z@ c #AEACAC", "`@ c #DADADA", " # c #CFCFCF", ".# c #C2C2C2", "+# c #ABABAB", "@# c #605555", "## c #624242", "$# c #6F3838", "%# c #CD4747", "&# c #E14949", "*# c #C24141", "=# c #605C5C", "-# c #483D3D", ";# c #6D3535", "># c #EE5151", ",# c #905A5A", "'# c #837878", ")# c #BBBBBB", "!# c #AFAFAF", "~# c #999898", "{# c #848282", "]# c #574D4D", "^# c #5E3F3F", "/# c #5F3B3B", "(# c #573838", "_# c #493E3E", ":# c #625E5E", "<# c #5A3A3A", "[# c #D04A4A", "}# c #7B0000", "|# c #F66868", "1# c #C96262", "2# c #826A6A", "3# c #D4D4D4", "4# c #D5D5D5", "5# c #A7A7A7", "6# c #919090", "7# c #828080", "8# c #7E7C7C", "9# c #727070", "0# c #4D4141", "a# c #703838", "b# c #FC5151", "c# c #F25353", "d# c #E44D4D", "e# c #4D0000", "f# c #A66969", "g# c #715252", "h# c #756B6B", "i# c #790000", "j# c #7E0000", "k# c #0E0000", "l# c #584B4B", "m# c #605959", "n# c #989696", "o# c #D6D6D6", "p# c #D3D3D3", "q# c #BCBCBC", "r# c #B2B2B2", "s# c #615656", "t# c #7D4646", "u# c #F35B5B", "v# c #F45858", "w# c #E45252", "x# c #C24848", "y# c #663131", "z# c #563636", "A# c #493C3C", "B# c #484040", "C# c #757373", "D# c #878686", "E# c #949393", "F# c #ACACAC", "G# c #CCCCCC", "H# c #B9B9B9", "I# c #785D5D", "J# c #D56363", "K# c #DC5B5B", "L# c #763F3F", "M# c #623E3E", "N# c #593C3C", "O# c #4B4141", "P# c #6F6D6D", "Q# c #7B7A7A", "R# c #818080", "S# c #929292", "T# c #9D9D9D", "U# c #7B6A6A", "V# c #A36D6D", "W# c #734D4D", "X# c #594E4E", "Y# c #797676", "Z# c #817F7F", "`# c #8D8D8D", " $ c #939393", ".$ c #989898", "+$ c #A0A0A0", "@$ c #A8A8A8", "#$ c #B1B1B1", "$$ c #CECECE", "%$ c #BBBABA", "&$ c #ACAAAA", "*$ c #A1A0A0", "=$ c #A3A3A3", "-$ c #A2A2A2", ";$ c #A5A5A5", ">$ c #AAAAAA", ",$ c #BFBFBF", "'$ c #C7C7C7", ")$ c #C3C3C3", "!$ c #B0B0B0", "~$ c #AEAEAE", "{$ c #D9D9D9", "]$ c #A1A1A1", "^$ c #969696", "/$ c #8F8F8F", "($ c #8B8B8B", "_$ c #898989", ":$ c #8E8E8E", "<$ c #979797", "[$ c #9B9B9B", "}$ c #9F9F9F", "|$ c #292929", "1$ c #2F2F2F", "2$ c #2D2D2D", "3$ c #2B2B2B", "4$ c #272727", "5$ c #282828", "6$ c #2A2A2A", "7$ c #262626", "8$ c #242424", "9$ c #232323", " ", " ", " . . . . . + . . . . . . . . . . . . . + . . . . . . + . . . + . . . + . . . . . ", " . @ @ @ . + . . . . . . . . . . . . . + . # . # . . + . # . + . # . + . # . # . ", " . @ . @ . + . . . . . . . . . . . . . + . . # . . . + . . # + . . # + . . # . . ", " . @ @ @ . + . . . . . . . . . . . . . + . # . # . . + . # . + . # . + . # . # . ", " . . . . . + . . . . . . . . . . . . . + . . . . . . + . . . + . . . + . . . . . ", " @ @ @ . . $ . . % . . & . . % . . % . . % . . . . . . % . . . % . . . % . . . . ", " . . . . . . . . . . * = . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . - ; ; > , ' ' ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) . ) ) ) ) ) ) . ) ) ) . ' ' , . ", " . ; > , ) ! ~ { { ] ] ] ] { { { { { { { { { { { . { { { { { { . { { { . { ~ ! . ", " . ; , ^ { { / ( _ : < [ : _ } ( / / / / / / / / . / / / / / / . / / / . / | 1 . ", " . > ) { | / 2 3 4 5 6 7 5 8 9 0 2 _ _ _ _ _ _ _ . _ _ _ _ _ _ . _ _ 2 . 2 _ } . ", " . , ! 1 a _ b c d e f g h i j k l 3 0 0 0 0 0 0 . 0 0 0 0 0 0 . 0 3 9 . l l 0 . ", " . ' ~ | 2 0 m n o p q r s t u m b 3 0 2 2 2 2 2 . 2 2 2 2 2 2 . 2 0 9 . k k l . ", " . ' { ( 0 9 v w x y z A B C D j l 2 E a } } } } . } } } } } } . a E 2 . b k l . ", " . ) { ( 3 l F G H I A J K L M n k E / N 1 1 ] ] . ] ] ] ] ] ] . 1 | ( . 3 l l . ", " . ) { } 9 l O P Q R S T U V W X Y 2 N { ! ^ ^ ^ . ^ ^ ^ ^ ^ ^ . ! ~ 1 . _ 3 9 . ", " . ) ] } l Z ` .Q ..+.@.#.$.%.&.*.=.} { ^ ' ' , . , , , , , , . ' ^ ~ . E 0 3 . ", " . ) ] a k -.;.>.>.,.'.).!.~.{.].^./.< N ! ' , > . ; ; ; ; ; ; . > ' ! . } 2 0 . ", " . ) ] E (._.:.<.[.}.|.1.2.3.<.4.].5.6.7.8.9.~ , . ; ; ; - - - . ; , ^ . } 2 0 . ", " . ) 1 2 j 0.a.b.c.d.e.f.g.h.i.<.j.k.l./.m.n.o.9.. , > > ; ; ; . > , ^ . } 2 0 . ", " . ^ N 0 p.q.r.s.t.u.v.w.x.y.z.z.A.B.C.D.E.F.G.H.. I.~ ! J.K.L.. > ' ^ . } 2 0 . ", " . ^ N 0 u M.N.O.P.Q.R.S.T.U.V.W.X.#.Y.Z.`. +.+++. @+#+$+%+&+*+. ^ ) ! . } 2 0 . ", " . ^ N 0 =+M.-+% ;+>+,+'+)+)+!+~+{+).]+S I r ^+^+/+7 q.(+_+:+<+. | ~ { . a 2 0 . ", " . ^ N 0 p.D [+}+O.|+1+2+3+4+5+6+7+8+9+0+a+b+].c+d+e+f+g+h+i+j+. -./ N . a 2 0 . ", " . ) 1 2 j u k+l+m+]+n+y.o+p+q+r+s+t+u+v+0+w+x+y+. z+A+B+C+q q . D+2 } . E 0 0 . ", " . ) ] E E+j F+G+H+I+J+K+3+L+M+N+O+P+)+U.Q+y.K+y.. R+S+T+{.U+V+. W+c 0 . 2 0 3 . ", " . ) ] a l E+M.X+Y+Z+`+ @.@+@@@#@$@%@&@&@&@4+*@=@. -@;@>@<.,@j.. '@)@(.. 3 3 3 . ", " . ) { } 3 l u M.!@~@{@]@^@/@(@_@:@<@[@}@<@|@1@2@. 3@4@5@6@7@z.8@9@0@a@. l l 3 . ", " . . . . . b@. . . . . . . . . . c@d@d@d@d@e@. . . f@g@Q+y.h.v+h@i@j@k@. E+b 9 . ", " . ) { ( 2 0 (.p.D l@m@n@o@p@q@r@s@t@u@v@w@x@y@z@A@B@C@)+)+)+U.e@D@E@0@. j E+l . ", " . ) { / 2 2 k m u k@F@G@H@I@J@K@L@M@N@O@P@Q@R@z@S@T@U@U@V@U@4+W@X@Y@Z@. =+m b . ", " . ) { / _ _ b k m `@ #.#G@+#P.@###$#%#&#*#y@=#-#;#>#[@}@t@t@[@d@V.,#'#. D p.k . ", " . ) { / _ _ 9 9 l (.`@X+F@)#!#~#{#]#^#/#(#_#:#<#[#}@}@|@N@N@|@}#|#1#2#. 3#a@(.. ", " . ) { / _ _ 3 2 _ 0 k =+4#!@-+@ 5#6#>+7#8#9#0#a#%@V@<@u@b#c#d#e#f#g#h#. #D j . ", " . . . . . b@. . . . . . . . . . . . . . . . . d+i#j#W@e@e#k#. . l#m#n#. !@o#p.. ", " . ) { / _ E 2 a | 1 1 | a 9 p.p#G+q#r#H@P.s#t#u#v#w#x#y#z#A#B#C#D#E#F#. k+3#=+. ", " . ) { / _ E 2 } N ~ ! ! ] / 0 j o#G#.#H#O.I#J#K#L#M#N#O#P#Q#R#S#T#5#$ . !@3#=+. ", " . ) { / _ E 2 } 1 ! ' ' ) ~ | _ E+a@k@k+H+U#V#W#X#Y#Z#R#`# $.$+$@$#$)#. $$M.p.. ", " . . . . . b@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4#`@j . ", " . ) { / _ E 2 } 1 ^ , > > > ' ^ { / 2 (.3#%$&$*$=$-$-$;$>$#$}+,$'$l@p#D u c E+. ", " . ) { / _ E 2 } 1 ! ' > > > , ' ^ { / 0 p.X+)$}+!$~$!$@ )#)$k+X+o#a@c m (.E+b . ", " . ) { / _ 3 0 E | { ^ ' , , , ' ) ! 1 E E+M.!@.#q#q#,$F@G#p#{$p.E+l 9 9 l b l . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " r#!#+#;$+$+ + I@]$;$5#H@H@>$>$H@H@@$;+-$+ ^$/$($_$($:$ $<$[$}$]$-$=$|$}$+ [$+ |$ ", " r#1$2$3$|$4$4$4$5$|$6$6$6$3$3$3$6$6$|$5$4$7$8$9$9$9$8$7$4$5$5$|$|$|$5$T#4$7$4$|$ ", " "}; ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/timer3s.xpm�������������������������������������������������������0000644�0001750�0001750�00000001467�13431646202�015704� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "24 24 5 1", " c None", ". c #000000000000", "X c #7BDE7BDE7BDE", "o c #FFFFFFFFFFFF", "O c #FFFF00000000", " ", " ..... ", " X.X ", " .. X.X .. ", " X.. X.....X ..X ", " ....oo.OO.... ", " ..oooo.OOOO.. ", " .oooooo.OOOOOO. ", " XXoooooo.OOOOOOXX ", " .ooooooo.OOOOOOO. ", " XXooooooo.OOOOOOOXX ", " .oooooooo.OOOOOOOO. ", " .oooooooo.OOOOOOOO. ", " ....ooooo.OOOOO.... ", " .ooooooooo.OOOOOOO. ", " .oooooooooo.OOOOOO. ", " XXoooooooooo.OOOOXX ", " .ooooooooooo.OOO. ", " XXooooooooooo.OXX ", " .oooooo.ooooo.. ", " .Xoooo.oooo.. ", " X..oo.oo..X ", " X.....X ", " "}; ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/animations.xpm����������������������������������������������������0000644�0001750�0001750�00000006613�13431646202�016456� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "48 48 44 1", " c None", ". c #FFFFEF7A6B5A", "X c #FFFFF7BCB5AC", "o c #084208420842", "O c #421042104210", "+ c #421042104A52", "@ c #39CE39CE4210", "# c #000000000000", "$ c #294A294A294A", "% c #4A524A525294", "& c #210821082108", "* c #8C62842039CE", "= c #FFFFF7BCA528", "- c #FFFFFFFFFFFF", "; c #318C318C318C", ": c #318C294A1084", "> c #4A524A52318C", ", c #9CE694A44A52", "< c #18C618C618C6", "1 c #39CE39CE39CE", "2 c #7BDE739C318C", "3 c #A528A528A528", "4 c #BDEEBDEEBDEE", "5 c #4A524A524A52", "6 c #CE72CE72CE72", "7 c #DEF6DEF6DEF6", "8 c #D6B4D6B4D6B4", "9 c #108410841084", "0 c #7BDE7BDE7BDE", "q c #F7BCF7BCF7BC", "w c #B5ACB5ACB5AC", "e c #A52894A44A52", "r c #9CE69CE69CE6", "t c #EF7AEF7AEF7A", "y c #529452945294", "u c #6B5A6B5A6B5A", "i c #94A494A494A4", "p c #E738E738E738", "a c #842084208420", "s c #739C739C739C", "d c #AD6AAD6AAD6A", "f c #631863186318", "g c #A5289CE65294", "h c #8C6284204210", " ", " ", " . ", " X ", " oooO+@@@@@Ooo# ", " #$%&&#*=#-#X.#&&# ", " #;$####:>########oo# ", " . #$o########X########&o ", " X#$##########,####o<<<<;11111 ", " #$###########2####&344445#### ", " *=#-oX.##############$6----7O### ", " :>&##################&6-----8&## ", " #&9X#################$6------0## ", " . #;o9,#################&6------79# ", " X #&###2#################$6------q1# ", " #&o#1###################&6-------0# ", " *= -&X.#o###################$6-------w< ", " :>#<o#######################&6-------6& ", " #<X#$######################$6-------6& ", " #<oe#o############Orrrrrr3r3wt-------6& ", " #o##2##############5------------------6& ", " #oo#&#####o#########5------------------4< ", " o#o#o#####1#########5------------------r# ", " ##########.##########5-----------------q5# ", " ###<#####o#X#9########5-----------------7<# ", " #o#o#####$###o########y-----------------u## ", " ########*=#-#X.#######5----------------6&## ", " o#####o#:>9###########5---------------7Oo## ", " ######&###oX####o;;;;;0--------------qy#### ", " ##########o,####9i8777t-------------p0o#### ", " ###o###9###2######u7---------------61###### ", " ###<###o###o#######;aq-----------qa$#######. ", " #######o#############<sd68---86ds<#########X ", " ####o##################o&;yyy;&o########### ", " 9##########ooo99@ittqqqqqqqqqtpa$#######*= - X.", " #######.###9<&&&$&Oaw68qqq86wa;9########:> ", " #######X####9&$$$$$$;O5uuu5O;&o#.####### X ", " ########oo9<<1a66666666666660&##X#### , ", " ###*=#-<X.;;;;O0rww666wwr0O<######## 2 ", " ##:>###9&;;;;;;15yfffy51$9#*=#-#X.# ", " #####ooXoo&yaaaaaaaaaaaaay<##:>### ", " #####9<g<<&&$5fssaaassf5&9######X# ", " ######9h&&&&&&&;;O>@;;&<o#######,# ", " #######o&;;;;;;;;11;;;<o####### 2 ", " #########o<&$;;;;;$&<o######### ", " ############oo999oo############ ", " ", " "}; ���������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/cycleworkspaces.xpm�����������������������������������������������0000644�0001750�0001750�00000006640�13431646202�017515� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "48 48 45 1", " c None", ". c #000000000000", "X c #0842842094A4", "o c #10847BDEAD6A", "O c #00007BDE9CE6", "+ c #18C67BDEA528", "@ c #08427BDEA528", "# c #10848420AD6A", "$ c #10848420A528", "% c #10847BDE9CE6", "& c #18C68420A528", "* c #B5ACB5ACB5AC", "= c #739C739C739C", "- c #39CE39CE39CE", "; c #084200009CE6", ": c #08428420A528", "> c #A528A528A528", ", c #7BDE7BDE7BDE", "< c #FFFFFFFFFFFF", "1 c #18C68C6294A4", "2 c #084284209CE6", "3 c #10847BDEA528", "4 c #18C67BDE9CE6", "5 c #318C318C318C", "6 c #08428420AD6A", "7 c #10847BDE94A4", "8 c #08427BDE9CE6", "9 c #10848C62A528", "0 c #1084739CA528", "q c #00008420A528", "w c #08427BDEAD6A", "e c #000084209CE6", "r c #108484209CE6", "t c #1084739C9CE6", "y c #18C6739CA528", "u c #A528AD6AA528", "i c #C630C630C630", "p c #BDEE5AD65AD6", "a c #739C18C618C6", "s c #739C21082108", "d c #94A45AD65AD6", "f c #529442104210", "g c #18C68C629CE6", "h c #8C6208420842", "j c #00007BDEA528", " ", " .. ", " ............... . ", " .XoO+o@#$%&%*=.- . ", " . .$;;;;;;;;:%*=.- . ", " .. .o>=>=>>=>%:>,.- ... ", " . .... .$><<<<<<<1&>,.- ", " .. ..... .#><<<<<<<:@*=.- .. .. . ", " ... .... .2<<<<<<<<3:*=.- .. .. .. ", " .. .:>>>>>>>>4o>,.- .. .. ... ", " ... . .@5555555567>,.- ", " ... . .$@%72:6:%@8*=.- ... ", " .. .*=9o:0q3:%w*=.- ....... ", " ... . .558e@#+1&63rt.- ..... ", " ... . ...............- ... ", " . --------------- . ", " ", " ............... ", " .XoO+o@#$%&%*=.- ............... ", " .$;;;;;2:6:%*=.- .XoO+o@#$%&%*=.- ", " .o<<<<<:0q%:>,.- .;;$%&%2:6:%*=.- ", " .$<<<<<@#y1&>,.- .ui:;;;;;q%:>,.- ", " .w<<<;;;;;:@*=.- .iu0<pas<&%&>,.- ", " .4555<<<<<3:*=.- .ui3<pdf<:3:*=.- ", " .:%:g<<<<<4o>,.- .iu6<shs<%::*=.- ", " .%w7@<<<<<67>,.- .uiq555551&o>,.- ", " .$@%755555@8*=.- .55+1&0q%:67>,.- ", " .*=93$t7j:%w*=.- .$@%7@#+1&@8*=.- ", " .558e@%3ej63rt.- .*=93$t7j:%w*=.- ", " ...............- .558e@%3ej63rt.- ", " --------------- ...............- ", " --------------- ", " . ", " ... ............... ... .. ", " ..... .XoO+o@#$%&%*=.- ... . ", " ....... .$;;;;;2:6:%*=.- . ", " ... .o<<<<<:0q%:>,.- ... . ", " .$<<<<<@#y1&>,.- . ... .. ", " ... .. .. .w<;;;;;;;;@*=.- .. ", " .. .. .. .45>=>=>>=>:*=.- .... ... ", " . .. .. .:%><<<<<<<o>,.- ..... .. ", " .%w><<<<<<<7>,.- .... . ", " . . .$@<<<<<<<<8*=.- .. ", " . . .*=>>>>>>>>w*=.- . ", " ... .55555555553rt.- ", " . ...............- ", " . --------------- ", " "}; ������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/keyshortcuts.xpm��������������������������������������������������0000644�0001750�0001750�00000016374�13431646202�017070� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * keyshortcuts_xpm[] = { "48 48 160 2", " c None", ". c #2C2C2C", "+ c #FEFEFE", "@ c #8A8A8A", "# c #969696", "$ c #A2A2A2", "% c #ADADAD", "& c #A9A9A9", "* c #A8A8A8", "= c #ACACAC", "- c #767676", "; c #646464", "> c #6B6B6B", ", c #A7A7A7", "' c #B6B6B6", ") c #BCBCBC", "! c #BBBBBB", "~ c #747474", "{ c #828282", "] c #888888", "^ c #9C9C9C", "/ c #858585", "( c #BABABA", "_ c #656565", ": c #B5B5B5", "< c #B3B3B3", "[ c #BDBDBD", "} c #696969", "| c #9E9E9E", "1 c #939393", "2 c #616161", "3 c #898989", "4 c #878787", "5 c #6D6D6D", "6 c #606060", "7 c #8E8E8E", "8 c #777777", "9 c #C5C5C5", "0 c #C1C1C1", "a c #CACACA", "b c #808080", "c c #8B8B8B", "d c #A6A6A6", "e c #A3A3A3", "f c #C9C9C9", "g c #848484", "h c #B7B7B7", "i c #C4C4C4", "j c #CBCBCB", "k c #727272", "l c #818181", "m c #9A9A9A", "n c #C8C8C8", "o c #676767", "p c #959595", "q c #8F8F8F", "r c #8C8C8C", "s c #737373", "t c #797979", "u c #7F7F7F", "v c #9F9F9F", "w c #9D9D9D", "x c #909090", "y c #CCCCCC", "z c #D4D4D4", "A c #D7D7D7", "B c #757575", "C c #ABABAB", "D c #D6D6D6", "E c #D9D9D9", "F c #AFAFAF", "G c #D3D3D3", "H c #CFCFCF", "I c #717171", "J c #7E7E7E", "K c #B0B0B0", "L c #989898", "M c #979797", "N c #999999", "O c #B4B4B4", "P c #AAAAAA", "Q c #B8B8B8", "R c #B2B2B2", "S c #DEDEDE", "T c #E5E5E5", "U c #E2E2E2", "V c #7B7B7B", "W c #9B9B9B", "X c #E0E0E0", "Y c #E1E1E1", "Z c #E3E3E3", "` c #E7E7E7", " . c #C2C2C2", ".. c #8D8D8D", "+. c #A1A1A1", "@. c #DBDBDB", "#. c #E4E4E4", "$. c #D2D2D2", "%. c #A4A4A4", "&. c #A5A5A5", "*. c #E8E8E8", "=. c #E9E9E9", "-. c #F3F3F3", ";. c #F4F4F4", ">. c #B9B9B9", ",. c #CDCDCD", "'. c #D8D8D8", "). c #EBEBEB", "!. c #EFEFEF", "~. c #F2F2F2", "{. c #EAEAEA", "]. c #DDDDDD", "^. c #CECECE", "/. c #BEBEBE", "(. c #F8F8F8", "_. c #FCFCFC", ":. c #FDFDFD", "<. c #FBFBFB", "[. c #F6F6F6", "}. c #FAFAFA", "|. c #F9F9F9", "1. c #EEEEEE", "2. c #EDEDED", "3. c #D5D5D5", "4. c #C7C7C7", "5. c #929292", "6. c #A0A0A0", "7. c #B1B1B1", "8. c #BFBFBF", "9. c #DADADA", "0. c #6F6F6F", "a. c #DCDCDC", "b. c #E6E6E6", "c. c #F7F7F7", "d. c #868686", "e. c #D1D1D1", "f. c #FFFFFF", "g. c #DFDFDF", "h. c #F5F5F5", "i. c #919191", "j. c #C6C6C6", "k. c #ECECEC", "l. c #838383", "m. c #AEAEAE", "n. c #7A7A7A", "o. c #C0C0C0", "p. c #949494", "q. c #575757", "r. c #C3C3C3", "s. c #F1F1F1", "t. c #D0D0D0", "u. c #F0F0F0", "v. c #6A6A6A", "w. c #787878", "x. c #6E6E6E", "y. c #6C6C6C", "z. c #7C7C7C", "A. c #666666", "B. c #5A5A5A", "C. c #7D7D7D", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + ", ". @ # $ % & % * = * - ; > , = ' ) ! ~ { ] ^ / % ) ( _ / $ : < ) [ @ } ] | $ $ * 1 2 3 4 ~ 5 6 + ", ". 7 3 8 { { ) 9 0 a = b c % d e f f g { 4 h ) i a j k l m ! f f n 7 o p # p q q r s r b t u { + ", ". v w k / x y ! z A f B x C 0 9 D E F ~ c ! G H E D I J F K e L e / B $ L M N $ O ! 9 ' O C v + ", ". P Q l 3 v A R S T U V W h X Y Z ` 9 - $ O ! .F ! ...., m # w +.R < D f @.Z Z Z #.$.a .C %.+ ", ". R 9 &.V %.*.=.-.;.;.+.7 K z T *.*.O V & % $ &.v O * %.>.,.'.U ).!.;.-.!.!.~.T ).~.{.].^.( O + ", ". ! y /.{ v D (._.:.!.= ..! 0 O P % P m & ( >.a U Z -.<._.:.;._.<.[.(._.:.}.<.|.1.2.3.( +., % + ", ". ! y ! b p n 4.H P < = 5.e 6.%.7.8.j 9.~.2.<.<.:.:.[.|.|.~.:._.<.<._.-._.T $.G ].2.Q 0.{ & K + ", ". &.P * g m K h 1 m : % 8.a.b.2.c.(.:.c._.|.<.-.|._._._.:._.{.2.y '.a.q 5.| a y (.:.;...M | & + ", ". t d.p ^ ) 0 n 9.U (.:._._.(.|._.|._.c.<._._._.<.T Y 3.O e W e.T _.f.,...% =.g.h.}.;.M c x ' + ", ". i.F j U [._._._.:.[.:.c.(._._.<.;.2.|.{.!.j.4.A @._.|.] $ n =.A [.+ k.l.F $.b.2.}.-.( 8 r m.+ ", ". ! y a.*.1.<.(.(.:.c.:._._._.Z H T Y *., n.| H j _.f.+ = ^ h @.~.<.:.f.4 $ o.Z 3._.[.G 5 m i.+ ", ". ( y @.=.(.f.:.(.[.2.=.3.i.p.6.S h.:.+ 1./ $ a T ~.(.f.4.] K X #.[.f.f.6.w 0 G X <.].6.q.5...+ ", ". ) y '.a.S 9 % 0 9 k._._.e 5.[ z b._.:.<.7 | i Y ~._.:.;.@ * y T (.:.|.w ..( .F 7.| c t L ] + ", ". W +.r.=.F l.| a {.!.:.+ y ..C *.s.c.:._.d x ! T [ + f.}.n.% ! j ) < ( 5.g P M &.7.% % Q 0 ! + ", ". i.: a.k.=.# e n <._.:.+ 3.g K A j.!.f.f.0 5.' S 4.'.].K { | = 6.d < | &.a !._.0 # Q ) h i ( + ", ". 6.* a.k.-...m < ;.` _.+ :.L e 9 #.{.:.b.R ] P m.& /.e +.e ' n t.| P H =._._.f.b.1 ,.9 8.[ ! + ", ". : y @.b.(.7.M ) T 3.+ f.;.{ w /.: < 7.%.N p : K C %.< 3.A U :.:.( C f $.$.~._._.r m.< .K ( + ", ". N Q z ).}.i ] C 8.,.].< +.m # * , P C R n E s.:.;.N 8.E r.@.<.:.f ^ [ ].` (.:.+ = C 0 R ' ) + ", ". i.( @.g.e.m.M K O m.L C m.( O 3.=.= 7.j.*.i ;.+ :.| h y T ~.<._.s.r .3.Y u.<.f.A p < O : * + ", ". c c &.m , +.# P ' O & < 4.Y |.f.+ 9 r [ {.^.#._.;.O P 4.h.h.;.<._.N O t.` <._.<.F J e * l v.+ ", ". J 1 w W % t.E -.f.(.w &.e.G ` s.:.!.N ' e._.<.:.:.0 m 0 =.h._.+ _., d 9 9 7.p q @ W ' r J ..+ ", ". O ^.'.i.F #.j.)._.[., * r.Y _._.:.=.x ! @.!._._.f.U p j f !.A 9 % b m h * % % : b.;.H w.# &.+ ", ". m.y D W < Z g.;._.+ Q 3 .U u.:._.f.e d j.c._._._.h c ) o.K +.W F i a.o., /.a.).[.-.#.d.q | + ", ". : y ].P d.'.[.[.|.:.Y N P g.:.:.+ :.O r f O %.W x d p y h K h z h.:.f.].7 ^.Z S ~.k.U L s N + ", ". ' f a.t.# f _.:.:.+ g.p.v 4.9.t.8., p.e .! % ' G #.:._.L f z a.` |.:.s.M 9 ,.).[.2.T : ; 7 + ", ". ) y ].^.i.< ~.h.s.` f # K h K %.v m.,.=.f P n Y T |.:._.h $ H ~.h.~.h.}.| /.H Y T *.T j ; ] + ", ". ' r.f ( 1 >.9 C v M W % ,.< 8.Q #.D + :.!.* 9 S '.{.!._.a.$ a z Z !.[.+ o.^ 9 ~.).k.z R x.u + ", ". u b l.q +.! K h /.S T :.:.>.$ a X Q =.[._.& ( e.[.h._.:.g.^ ( ,.#.}.+ + 3.| 0 h >.% q t t @ + ", ". ] N 0 z (.:.>.[ E 2.@._.:.z & 4.#.*.u.<._.0 & $.E :.;._._.N K t.D E H O p 5.o.F O ^ * h i O + ", ". r F ^.j c.:.z R ^.~.X c.(.Z 6.) 3.c.h.<.:.A p./.!.;.(.|.$.^ d K m M < e /.G *.<.$.q h [ >.@ + ", ". g d G H ~.(.Z h 0 -.h.|.}.[.v >.f !._._._.A ^ [ o.F % & M m.9 j '.C % ].=.y !._.h.x * ! ' W + ", ". ] ^ z Z ;.}.[.%.m.2._.}._._.%.' 0 3.f 9 F $ W >.F = e n e.S X _.:.$.d a ].1.c.k.|.& # = >.d + ", ". n...^.=.h._._.m < U h.=.b.^.L , % 6.W F K y j.!._.h.e ' z ~.G _.:.Z # 9 G s.).<.<.j.~ +.>.7.+ ", ". k i.9 Z #.b.^.%.: O d $ = +.7.9 U a.[ ( y #.H (.-._./.& ^.!.h.1.[.h.| O ,.s.u.|.+ A 0.v , # + ", ". n.5.w m v = +.# ! o.7.% j.i X n !.:.E 5.: X h.2.c.:.0 W 9 S {.}._.+ P * j.S '.e.! ^ l.%.t y.+ ", ". z.4 M p.L F K $.Z _.=.% ' t.u.+.j _.;.M R y h.h.u.:.b.| K $.:.:.h.s.v $ ! & p.7 N N @ ^ i...+ ", ". l.v 9 y >.( y 7.n |.}.>.K 8.b._.|.~.-.+.| Q k.u._.:.=.i.P 0 ^.m.P ^ p $ 8.4.[ H e.*.Z D 8.( + ", ". d $ t.{.3.5.: s.#.~.k.i P R g.1.<.-.+ 8.p K b.~.T 4.R 7 ' C ..+.N & ^.'.R ( i z h =.U D j.! + ", ". R { 7.=.!.M R }.=.h.c.D c : G _.<._.*., c R , q 4 W Q , 4.D t.Y k.(.:.:.e &.i ,., ,.Z D n < + ", ". P y E X 1.+.| 2._._.:.9.m & h < P m q ..1 7.6.7. .Q j.n |.(.j (.:.(.}.:.[ 6.[ #.2.-.Z ^.f ! + ", ". &.o.@.Y |.8.p E T e.f m.q P ! P e 6.! .H #.-._.:.< 6.! |.H b Z _.<.c.+ 2.p = #._.-.#.D f ( + ", ". N n A #.g.%.] p 1 J / { # = %.n /.b.c.c.(.;.-.1.|.'.| O g.[.@.s.c.[.c.|.h.c = D (.=.X $.9 ' + ", ". J d.3 g { { ] @ M O 8.e.=.).x m W f f f *.*.{.=.).S ] &.r.k.=.=.=.=.{.{.{.i.p.+.{.Z z j.O p.+ ", ". t 8 J &.R R r.@.9.a.9.9.a.].p.l...f @.$.@.@.@.a.].].{ L $ S ].].@.a.@.a.S %.d., e.) 6.d.b 0.+ ", ". A.d.| ( n y a a f n y y j.y %.~ b i.y y ,.y ,.y y ^.3 / 7 y ,.y ,.y y f n 5.v.w i.l V 0.5 o + ", ". c M e % Q ) ) ! ) ) ) [ ) ) % B./ 4 [ ) [ ) ) ) ) [ # y.C.: [ ! < v 7 l.J z.I 7 z.~ - ~ - C.+ ", "+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + "}; ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/drawer.xpm��������������������������������������������������������0000644�0001750�0001750�00000053627�13431646202�015607� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * drawer_xpm[] = { "48 48 1098 2", " c None", ". c #DEDFEE", "+ c #9091A0", "@ c #9293A2", "# c #7D7E88", "$ c #B2B2B2", "% c #363838", "& c #6D6E6D", "* c #1D201F", "= c #191D1B", "- c #646665", "; c #565857", "> c #1E2220", ", c #3A3E3D", "' c #565958", ") c #464847", "! c #343636", "~ c #3A3C3B", "{ c #91928F", "] c #707281", "^ c #707380", "/ c #727482", "( c #303139", "_ c #DCDDEC", ": c #8E8F9E", "< c #7B7C86", "[ c #B6B6B6", "} c #363A39", "| c #727574", "1 c #2B2F2D", "2 c #2F3533", "3 c #616664", "4 c #454B49", "5 c #2B312F", "6 c #575C5A", "7 c #545857", "8 c #464948", "9 c #353837", "0 c #3D403F", "a c #8F8F8D", "b c #6D707F", "c c #6F717F", "d c #6F727F", "e c #2F3138", "f c #DADBEA", "g c #8C8D9C", "h c #777983", "i c #BBBBBB", "j c #101414", "k c #252B29", "l c #373D3A", "m c #4E5553", "n c #595F5E", "o c #3B4340", "p c #414845", "q c #5C6260", "r c #505553", "s c #424746", "t c #333736", "u c #3F4241", "v c #8D8E8B", "w c #6C6E7D", "x c #6C6F7C", "y c #6D707E", "z c #2E2F37", "A c #D8D9E8", "B c #8A8C9A", "C c #757780", "D c #BEBEBE", "E c #171C1B", "F c #2E3533", "G c #464D4B", "H c #606865", "I c #505856", "J c #404A47", "K c #58615E", "L c #545C5A", "M c #49514E", "N c #3C4340", "O c #424645", "P c #8B8C88", "Q c #696C7B", "R c #6B6D7B", "S c #6B6E7B", "T c #2D2E36", "U c #D6D8E6", "V c #888998", "W c #8A8B9A", "X c #72737D", "Y c #C3C3C3", "Z c #1A211F", "` c #343C39", " . c #3B4441", ".. c #4A5451", "+. c #4C5653", "@. c #4F5B57", "#. c #56605C", "$. c #4D5854", "%. c #434D49", "&. c #39423F", "*. c #333A38", "=. c #474C4B", "-. c #888987", ";. c #686B79", ">. c #696B79", ",. c #6A6D7A", "'. c #2B2D35", "). c #D4D6E4", "!. c #868896", "~. c #6F717A", "{. c #C8C8C8", "]. c #1D2321", "^. c #38403E", "/. c #404946", "(. c #48524F", "_. c #4E5A56", ":. c #55625E", "<. c #53605B", "[. c #4C5854", "}. c #45504C", "|. c #3D4643", "1. c #363D3B", "2. c #4C504F", "3. c #878885", "4. c #666977", "5. c #676A77", "6. c #676A78", "7. c #2A2C34", "8. c #D3D4E3", "9. c #848694", "0. c #868796", "a. c #6C6E77", "b. c #CDCDCD", "c. c #1C2321", "d. c #38413E", "e. c #48534F", "f. c #505C58", "g. c #576460", "h. c #4D5A55", "i. c #46504D", "j. c #3E4744", "k. c #4F5352", "l. c #848582", "m. c #646775", "n. c #656875", "o. c #666976", "p. c #292B33", "q. c #D0D2E0", "r. c #828492", "s. c #696B75", "t. c #D3D3D3", "u. c #0A100E", "v. c #232A28", "w. c #29312E", "x. c #2F3835", "y. c #333E3B", "z. c #36413E", "A. c #36403E", "B. c #323C39", "C. c #2D3633", "D. c #272F2D", "E. c #212826", "F. c #444848", "G. c #828381", "H. c #626574", "I. c #636673", "J. c #636674", "K. c #282A31", "L. c #CFD0DF", "M. c #808290", "N. c #828392", "O. c #62636D", "P. c #D8D8D8", "Q. c #D5D6D6", "R. c #D7D7D7", "S. c #D7D8D7", "T. c #D7D8D8", "U. c #D8D9D8", "V. c #DFDFDF", "W. c #858684", "X. c #555865", "Y. c #616471", "Z. c #626572", "`. c #272930", " + c #CCCEDC", ".+ c #7F808F", "++ c #686A76", "@+ c #2E3032", "#+ c #2B2C2F", "$+ c #2A2B2E", "%+ c #292B2E", "&+ c #292A2D", "*+ c #282A2D", "=+ c #28292C", "-+ c #27292B", ";+ c #26282B", ">+ c #26272A", ",+ c #252729", "'+ c #242629", ")+ c #4D4F5A", "!+ c #5F626F", "~+ c #5F6370", "{+ c #26282F", "]+ c #CBCCDB", "^+ c #7C7E8C", "/+ c #7F818F", "(+ c #7A7B89", "_+ c #727480", ":+ c #6F717E", "<+ c #6D6F7C", "[+ c #6C6E7B", "}+ c #6A6D78", "|+ c #686A77", "1+ c #666975", "2+ c #656773", "3+ c #61646F", "4+ c #5F616E", "5+ c #5D606C", "6+ c #5B5E6B", "7+ c #5A5D69", "8+ c #5D606D", "9+ c #5D616D", "0+ c #5E616E", "a+ c #25272E", "b+ c #C8CAD8", "c+ c #7B7D8B", "d+ c #7A7C8A", "e+ c #787A88", "f+ c #767886", "g+ c #747784", "h+ c #6E707E", "i+ c #686B78", "j+ c #646774", "k+ c #5E626E", "l+ c #5C5F6C", "m+ c #23252D", "n+ c #C7C9D7", "o+ c #777987", "p+ c #737583", "q+ c #6C707C", "r+ c #696C79", "s+ c #595D69", "t+ c #5A5D6A", "u+ c #22242C", "v+ c #C0C2D0", "w+ c #747684", "x+ c #757785", "y+ c #717481", "z+ c #707280", "A+ c #6D707D", "B+ c #6C6E7C", "C+ c #656876", "D+ c #606370", "E+ c #5A5E6A", "F+ c #585B68", "G+ c #565A66", "H+ c #545864", "I+ c #545865", "J+ c #202229", "K+ c #7C7D84", "L+ c #6B6C74", "M+ c #696A73", "N+ c #696973", "O+ c #676871", "P+ c #666770", "Q+ c #65666F", "R+ c #64656E", "S+ c #62636C", "T+ c #61626B", "U+ c #60616A", "V+ c #5F6069", "W+ c #5D5F67", "X+ c #5C5D66", "Y+ c #5B5D65", "Z+ c #5A5B64", "`+ c #595A63", " @ c #575961", ".@ c #565860", "+@ c #565861", "@@ c #2B2D31", "#@ c #A5A7B5", "$@ c #A3A5B3", "%@ c #A2A4B2", "&@ c #464851", "*@ c #F7F7FF", "=@ c #C3C4D2", "-@ c #C4C4D3", ";@ c #C2C3D2", ">@ c #C0C1D0", ",@ c #BEBFCE", "'@ c #BCBDCC", ")@ c #BABBCA", "!@ c #B8B9C8", "~@ c #B7B8C7", "{@ c #B4B5C4", "]@ c #B3B4C3", "^@ c #B0B2C0", "/@ c #AFB0BF", "(@ c #ACAEBC", "_@ c #ABACBB", ":@ c #A8ABB8", "<@ c #A7A8B7", "[@ c #3A3B44", "}@ c #FFFFFF", "|@ c #C8C8D7", "1@ c #C6C7D6", "2@ c #C4C5D4", "3@ c #C2C2D2", "4@ c #BEBECE", "5@ c #BABBCB", "6@ c #B6B8C7", "7@ c #B2B4C3", "8@ c #B0B1C0", "9@ c #AEB0BF", "0@ c #AAACBB", "a@ c #A8AAB8", "b@ c #A7A9B7", "c@ c #A8AAB9", "d@ c #404149", "e@ c #7D7F8D", "f@ c #797B89", "g@ c #373841", "h@ c #F4F4FF", "i@ c #9898A9", "j@ c #9B9CAB", "k@ c #9D99AE", "l@ c #9B97AC", "m@ c #9995AA", "n@ c #9793A8", "o@ c #9591A6", "p@ c #9390A4", "q@ c #918DA2", "r@ c #8F8CA0", "s@ c #8D8A9E", "t@ c #8B889C", "u@ c #89869A", "v@ c #878498", "w@ c #858396", "x@ c #838094", "y@ c #807F92", "z@ c #7F7D90", "A@ c #7A7C8B", "B@ c #2F3038", "C@ c #9999AA", "D@ c #999AA9", "E@ c #9798A7", "F@ c #9596A5", "G@ c #9394A3", "H@ c #9193A1", "I@ c #848594", "J@ c #808190", "K@ c #7E808E", "L@ c #363740", "M@ c #F2F2FF", "N@ c #9999A9", "O@ c #9C9CAC", "P@ c #5EAA64", "Q@ c #61A768", "R@ c #60A566", "S@ c #60A364", "T@ c #5FA163", "U@ c #5F9F62", "V@ c #5E9E61", "W@ c #5D9C5F", "X@ c #5D9B5E", "Y@ c #5C995D", "Z@ c #5C985C", "`@ c #5B955A", " # c #5B9459", ".# c #5A9258", "+# c #589255", "@# c #758081", "## c #2E3038", "$# c #9797A7", "%# c #9495A4", "&# c #9192A1", "*# c #8D8E9D", "=# c #898B99", "-# c #858795", ";# c #818391", "># c #36373F", ",# c #35373F", "'# c #F0F1FF", ")# c #9A9AAA", "!# c #729D78", "~# c #605B65", "{# c #615D65", "]# c #75717E", "^# c #7E8B86", "/# c #7A8883", "(# c #807D8C", "_# c #93909D", ":# c #9794A0", "<# c #7C7987", "[# c #777683", "}# c #618465", "|# c #747280", "1# c #716F7D", "2# c #706D7A", "3# c #65736A", "4# c #707D7C", "5# c #787A89", "6# c #F0F0FF", "7# c #9898A8", "8# c #9697A6", "9# c #9595A5", "0# c #8D8FA2", "a# c #8A8EA2", "b# c #888CA0", "c# c #878A9F", "d# c #85889D", "e# c #83869B", "f# c #808498", "g# c #7F8296", "h# c #7C8094", "i# c #7A7E92", "j# c #787C90", "k# c #797B8A", "l# c #34363E", "m# c #757885", "n# c #34353F", "o# c #EEEFFE", "p# c #9899A8", "q# c #729F79", "r# c #212023", "s# c #E9E9ED", "t# c #333336", "u# c #82938B", "v# c #77887E", "w# c #B9BABF", "x# c #BDBEC5", "y# c #BCBDC5", "z# c #BCBDC1", "A# c #888990", "B# c #5D805F", "C# c #70727B", "D# c #6E6F78", "E# c #6C6D77", "F# c #617266", "G# c #6F7C7B", "H# c #767986", "I# c #2C2D36", "J# c #9696A6", "K# c #8D8FA3", "L# c #A89560", "M# c #B29642", "N# c #AD903E", "O# c #A88C39", "P# c #A58936", "Q# c #A98D39", "R# c #A98D3A", "S# c #A78B38", "T# c #A68A36", "U# c #74788D", "V# c #777A87", "W# c #34353D", "X# c #33343D", "Y# c #ECECFC", "Z# c #6C9871", "`# c #7B7B85", " $ c #4E4E51", ".$ c #A3A3A5", "+$ c #3B433B", "@$ c #707972", "#$ c #38383A", "$$ c #93939A", "%$ c #BBBCC4", "&$ c #B9BAC2", "*$ c #C1C2C8", "=$ c #AEACB5", "-$ c #878990", ";$ c #6D6D77", ">$ c #686972", ",$ c #5F7064", "'$ c #6D7A78", ")$ c #747685", "!$ c #2B2C34", "~$ c #9294A2", "{$ c #AC9B72", "]$ c #C09F40", "^$ c #BC9D41", "/$ c #B89B41", "($ c #B5973E", "_$ c #B4963C", ":$ c #B1933A", "<$ c #B3943C", "[$ c #B2953C", "}$ c #B3953C", "|$ c #B1923A", "1$ c #977F34", "2$ c #73778B", "3$ c #757786", "4$ c #32333C", "5$ c #EAEBFA", "6$ c #9191A1", "7$ c #69966F", "8$ c #85858F", "9$ c #95969E", "0$ c #1C1C1C", "a$ c #AAAAAC", "b$ c #101010", "c$ c #030303", "d$ c #7F8086", "e$ c #B9BAC1", "f$ c #B8B9C0", "g$ c #B7B8C0", "h$ c #B5B6BE", "i$ c #B2B2B7", "j$ c #7A7B83", "k$ c #596B5F", "l$ c #6C7877", "m$ c #727582", "n$ c #2A2B33", "o$ c #9292A2", "p$ c #8E8F9F", "q$ c #D8BB65", "r$ c #CEB25B", "s$ c #CCB059", "t$ c #CBAF59", "u$ c #C9AC57", "v$ c #C7AB57", "w$ c #C5A955", "x$ c #C8AC57", "y$ c #C1A861", "z$ c #7F6A29", "A$ c #947C2F", "B$ c #717689", "C$ c #737683", "D$ c #31333B", "E$ c #717381", "F$ c #30323A", "G$ c #E8E8F8", "H$ c #8F909F", "I$ c #9393A3", "J$ c #5E9860", "K$ c #909A97", "L$ c #343335", "M$ c #000000", "N$ c #141415", "O$ c #959597", "P$ c #6C6C71", "Q$ c #BEBFC8", "R$ c #B8B9C1", "S$ c #B6B7BF", "T$ c #B4B5BC", "U$ c #B2B3BB", "V$ c #BFC0C6", "W$ c #8B9E8A", "X$ c #6A7875", "Y$ c #282A32", "Z$ c #8C8E9E", "`$ c #CCAE53", " % c #B99D43", ".% c #B89C42", "+% c #BA9D43", "@% c #B99C43", "#% c #B59940", "$% c #B3973E", "%% c #B4983F", "&% c #B2973D", "*% c #A18735", "=% c #786723", "-% c #907A2A", ";% c #707388", ">% c #717382", ",% c #2F3139", "'% c #E6E7F6", ")% c #76AA77", "!% c #252A24", "~% c #131313", "{% c #ACACAF", "]% c #87888D", "^% c #BFC0C8", "/% c #BABBC4", "(% c #B4B5BD", "_% c #66666A", ":% c #5C6D59", "<% c #6B7776", "[% c #6E717E", "}% c #272931", "|% c #8A8C9C", "1% c #CBAC52", "2% c #BB9D44", "3% c #A3882B", "4% c #AA8E34", "5% c #AA8F34", "6% c #AC9139", "7% c #B19747", "8% c #B1963C", "9% c #B2973C", "0% c #9C832E", "a% c #75641D", "b% c #917A2B", "c% c #6D7285", "d% c #2E2F38", "e% c #E4E5F5", "f% c #8B8C9B", "g% c #8F8F9F", "h% c #5F885E", "i% c #050405", "j% c #0F0F0F", "k% c #88888A", "l% c #606164", "m% c #7B7B80", "n% c #B3B4BB", "o% c #68686C", "p% c #788878", "q% c #667271", "r% c #6D6F7D", "s% c #262730", "t% c #E4E5F4", "u% c #818290", "v% c #44454B", "w% c #888A99", "x% c #CAAC51", "y% c #AA8F35", "z% c #B89E45", "A% c #E0C874", "B% c #B79B45", "C% c #B2984A", "D% c #B0953B", "E% c #AB9036", "F% c #75641C", "G% c #8C7525", "H% c #6C7084", "I% c #6A6C7A", "J% c #2C2E37", "K% c #E2E3F2", "L% c #497246", "M% c #64646B", "N% c #656568", "O% c #D3D4D7", "P% c #D6D6D9", "Q% c #7B7B7F", "R% c #9E9FA5", "S% c #494A4C", "T% c #5B6A59", "U% c #687372", "V% c #25272F", "W% c #E2E3F3", "X% c #676875", "Y% c #0E0E10", "Z% c #2A2B2D", "`% c #868897", " & c #A88D33", ".& c #BCA049", "+& c #F3D890", "@& c #927D3E", "#& c #AB9246", "$& c #AD9238", "%& c #AC9037", "&& c #9B822D", "*& c #716016", "=& c #88731F", "-& c #6A6E82", ";& c #E1E2F1", ">& c #878897", ",& c #8B8B9B", "'& c #588056", ")& c #050506", "!& c #8F9097", "~& c #ACADB4", "{& c #A8A9AC", "]& c #DFDFE2", "^& c #E0E0E3", "/& c #E5E5E8", "(& c #626264", "_& c #606D5D", ":& c #64706F", "<& c #24252D", "[& c #E0E1F1", "}& c #7C7D8B", "|& c #1B1B20", "1& c #2B2B2D", "2& c #848696", "3& c #CAAC52", "4& c #B69A41", "5& c #A98E34", "6& c #B09643", "7& c #937D34", "8& c #877336", "9& c #AC944E", "0& c #AB8F35", "a& c #9B812D", "b& c #705F13", "c& c #867018", "d& c #686C81", "e& c #696C7A", "f& c #749875", "g& c #070507", "h& c #1E1E1F", "i& c #999AA0", "j& c #94949A", "k& c #7D7E7F", "l& c #E9EAEC", "m& c #DFDFE3", "n& c #DEDFE1", "o& c #626364", "p& c #121013", "q& c #7A867D", "r& c #616C6B", "s& c #23242C", "t& c #4D4D56", "u& c #828493", "v& c #C8AB51", "w& c #B69A40", "x& c #B39842", "y& c #B29741", "z& c #B09540", "A& c #AD923E", "B& c #AE9440", "C& c #9E8430", "D& c #6F5F12", "E& c #867117", "F& c #666A7F", "G& c #292A33", "H& c #DDDEED", "I& c #838593", "J& c #878797", "K& c #499D41", "L& c #789275", "M& c #080809", "N& c #98999E", "O& c #7E7E84", "P& c #A9AAAC", "Q& c #DFE0E2", "R& c #DEDEE1", "S& c #E1E2E5", "T& c #5D5C5F", "U& c #768F6E", "V& c #447933", "W& c #5F6D67", "X& c #21232B", "Y& c #DCDDED", "Z& c #818292", "`& c #C4A74F", " * c #AF933C", ".* c #B0943D", "+* c #AC923A", "@* c #AA8F37", "#* c #A68B34", "$* c #A58A32", "%* c #726017", "&* c #8A741F", "** c #64687C", "=* c #272932", "-* c #DADCEA", ";* c #848695", ">* c #5F8362", ",* c #7D7C88", "'* c #747679", ")* c #161615", "!* c #111111", "~* c #252627", "{* c #0E0D0E", "]* c #B1B1B4", "^* c #E4E5E8", "/* c #DDDEE0", "(* c #DADBDD", "_* c #66666B", ":* c #424E46", "<* c #5F6969", "[* c #626573", "}* c #20222A", "|* c #818291", "1* c #7F8190", "2* c #816925", "3* c #806926", "4* c #806922", "5* c #7F6823", "6* c #79611F", "7* c #76601C", "8* c #745E1B", "9* c #735D17", "0* c #8A731A", "a* c #61667A", "b* c #262931", "c* c #D9DAE9", "d* c #838393", "e* c #5D835E", "f* c #8C8D94", "g* c #6F7072", "h* c #10100F", "i* c #B4B4B6", "j* c #DDDEE1", "k* c #DDDDE0", "l* c #E3E4E7", "m* c #3C4A39", "n* c #5C6766", "o* c #1F2129", "p* c #D8D9E9", "q* c #7D7F8E", "r* c #B49239", "s* c #B08F3B", "t* c #918466", "u* c #9A854F", "v* c #A78834", "w* c #A48533", "x* c #9F812C", "y* c #937B34", "z* c #616574", "A* c #616472", "B* c #7E7F8E", "C* c #808291", "D* c #5C815D", "E* c #65726B", "F* c #7E8C84", "G* c #88898F", "H* c #262626", "I* c #7B7C80", "J* c #797B82", "K* c #45603F", "L* c #B7B8BA", "M* c #E6E7EA", "N* c #EAEBEE", "O* c #3D4938", "P* c #5B6565", "Q* c #1E2027", "R* c #96855C", "S* c #767989", "T* c #767885", "U* c #707587", "V* c #7A7777", "W* c #6F7281", "X* c #7B756A", "Y* c #6C6F7D", "Z* c #26272F", "`* c #24262E", " = c #D5D6E5", ".= c #5A805B", "+= c #666871", "@= c #5F6D65", "#= c #5D6A62", "$= c #5F626B", "%= c #77797F", "&= c #7D7E84", "*= c #595B64", "== c #555860", "-= c #4E694B", ";= c #41434A", ">= c #646565", ",= c #353534", "'= c #394639", ")= c #596463", "!= c #1D1F26", "~= c #D4D5E5", "{= c #777988", "]= c #6B6E7C", "^= c #5D606E", "/= c #5B5F6B", "(= c #22252C", "_= c #D2D4E2", ":= c #7D7E8D", "<= c #578455", "[= c #637667", "}= c #617566", "|= c #5F7364", "1= c #5A755B", "2= c #587459", "3= c #5A6C5E", "4= c #56685A", "5= c #546658", "6= c #536456", "7= c #4D6F47", "8= c #516254", "9= c #4D5D50", "0= c #4F5E52", "a= c #4A6246", "b= c #586262", "c= c #1B1E25", "d= c #5C606C", "e= c #5B5F6C", "f= c #585C68", "g= c #21232C", "h= c #D1D3E1", "i= c #737D80", "j= c #727C7F", "k= c #707A7D", "l= c #6F787C", "m= c #6C7679", "n= c #6B7478", "o= c #697376", "p= c #687174", "q= c #656F72", "r= c #646E70", "s= c #626B6E", "t= c #616A6D", "u= c #5F686A", "v= c #5D6669", "w= c #5B6567", "x= c #5A6265", "y= c #595E68", "z= c #1B1D24", "A= c #D0D2E1", "B= c #686C78", "C= c #595D6A", "D= c #565966", "E= c #525663", "F= c #737584", "G= c #6F7180", "H= c #6B6D7C", "I= c #535663", "J= c #191B23", "K= c #C6C8D6", "L= c #666876", "M= c #5F6270", "N= c #545764", "O= c #525662", "P= c #525562", "Q= c #1F2229", "R= c #16181C", "S= c #16171C", "T= c #15171B", "U= c #09090C", "V= c #37383D", "W= c #212126", "X= c #212227", "Y= c #212226", "Z= c #202126", "`= c #1F2025", " - c #1F1F24", ".- c #1E1F24", "+- c #1D1E23", "@- c #1D1D22", "#- c #1C1D21", "$- c #1B1C21", "%- c #1A1C20", "&- c #1A1B20", "*- c #191A1F", "=- c #191A1E", "-- c #18191D", ";- c #17181D", ">- c #7D7D84", ",- c #6E6E76", "'- c #6D6E76", ")- c #6C6C75", "!- c #6A6B73", "~- c #696972", "{- c #676770", "]- c #65666E", "^- c #63646C", "/- c #62636B", "(- c #61626A", "_- c #606169", ":- c #5F6068", "<- c #5D5E67", "[- c #5C5E66", "}- c #5B5C64", "|- c #5A5B63", "1- c #2E2F33", "2- c #F6F6FF", "3- c #C7C7D6", "4- c #C5C5D5", "5- c #C3C3D3", "6- c #C1C1D1", "7- c #BFBFCF", "8- c #BDBDCD", "9- c #BBBCCB", "0- c #B9BAC9", "a- c #B6B7C7", "b- c #B5B6C5", "c- c #B1B2C1", "d- c #ADAEBD", "e- c #A9AAB9", "f- c #A6A8B7", "g- c #3F4049", "h- c #E9EAF7", "i- c #9494A4", "j- c #8F919E", "k- c #8E909C", "l- c #8B8D9A", "m- c #888A98", "n- c #7B7D8C", "o- c #E8E8F7", "p- c #9495A3", "q- c #8F90A1", "r- c #8585A1", "s- c #7675A2", "t- c #726FA2", "u- c #7675A0", "v- c #81829A", "w- c #E5E6F6", "x- c #7574A4", "y- c #605CA6", "z- c #5955A9", "A- c #5D59AB", "B- c #5F5BAC", "C- c #5955AA", "D- c #514EA6", "E- c #58569F", "F- c #6E6E98", "G- c #81838E", "H- c #9394A2", "I- c #6A67A6", "J- c #5955A8", "K- c #6360AD", "L- c #6E6AB2", "M- c #7571B6", "N- c #7B78B9", "O- c #A7A4D0", "P- c #CECDE5", "Q- c #D3D2E7", "R- c #8B88C3", "S- c #66659D", "T- c #7C7E8B", "U- c #E2E2F2", "V- c #9495A2", "W- c #6C6AA5", "X- c #5652A8", "Y- c #918EC5", "Z- c #D4D3E8", "`- c #D0CEE5", " ; c #C5C3E0", ".; c #B5B4D7", "+; c #A9A7D2", "@; c #DEDDED", "#; c #6B68B2", "$; c #686797", "%; c #32333B", "&; c #E0E1F0", "*; c #7F7EA3", "=; c #5955A7", "-; c #5C58A9", ";; c #6C69B2", ">; c #A3A1CE", ",; c #FEFEFE", "'; c #FBFBFC", "); c #E8E8F2", "!; c #E6E6F1", "~; c #F2F2F7", "{; c #FFFFFE", "]; c #615DAC", "^; c #5854A7", "/; c #747686", "(; c #31323B", "_; c #DEDEEE", ":; c #9192A2", "<; c #6967A5", "[; c #5D59AA", "}; c #6F6BB4", "|; c #8380BD", "1; c #D9D8EA", "2; c #F6F6F9", "3; c #B1AED4", "4; c #9D9ACA", "5; c #8A86C1", "6; c #7B77B9", "7; c #6A66B0", "8; c #5956A8", "9; c #524FA6", "0; c #636383", "a; c #717380", "b; c #8E8FA0", "c; c #5D5AA6", "d; c #5854A8", "e; c #5B57A9", "f; c #6A66B1", "g; c #7875B8", "h; c #8986C0", "i; c #C5C3DF", "j; c #F8F8FA", "k; c #A4A1CE", "l; c #8885BF", "m; c #7975B7", "n; c #6864AF", "o; c #5451A3", "p; c #494D85", "q; c #35346B", "r; c #747781", "s; c #8C8D9E", "t; c #5753A8", "u; c #6764AF", "v; c #A29FCE", "w; c #D2D1E7", "x; c #E3E2EF", "y; c #E0DFED", "z; c #EDEDF5", "A; c #AAA8D2", "B; c #6E6BB2", "C; c #5653A6", "D; c #49509D", "E; c #383861", "F; c #514D9E", "G; c #6E707F", "H; c #8A8B9C", "I; c #5753A7", "J; c #E5E5F0", "K; c #ECECF5", "L; c #B8B7DA", "M; c #A5A2CF", "N; c #9A98C9", "O; c #8C89C3", "P; c #625FAC", "Q; c #6367AD", "R; c #26275A", "S; c #3D3B81", "T; c #5753A9", "U; c #6B6D7D", " . + @ # $ % & * = - ; > , ' ) ! ~ { ] ^ / ( ", " _ : + < [ } | 1 2 3 4 5 6 7 8 9 0 a b c d e ", " f g : h i j k l m n o p q r s t u v w x y z ", " A B g C D E F G H I J K L M N F O P Q R S T ", " U V W X Y Z ` ...+.@.#.$.%.&.*.=.-.;.>.,.'.", " ).!.V ~.{.].^./.(._.:.<.[.}.|.1.2.3.4.5.6.7.", " 8.9.0.a.b.c.d.J e.f.g.:.h.i.j.1.k.l.m.n.o.p.", " q.r.9.s.t.u.v.w.x.y.z.A.B.C.D.E.F.G.H.I.J.K.", " L.M.N.O.P.Q.R.S.T.P.U.U.P.T.R.R.V.W.X.Y.Z.`.", " +.+M.++@+#+$+%+&+*+=+-+;+>+>+,+'+;+)+!+~+{+", " ]+^+/+(+_+:+<+[+}+|+1+2+Z.3+4+5+6+7+8+9+0+a+", " b+c+^+d+e+f+g+/ ^ h+x ,.i+o.j+Z.Y.k+8+6+l+m+", " n+e+c+e+o+g+p+^ c q+R r+5.n.I.Y.!+9+6+s+t+u+", " v+w+x+w+y+z+A+B+r+i+C+j+Z.D+0+l+E+F+G+H+I+J+", " K+L+L+M+N+O+P+Q+R+S+T+U+V+W+X+Y+Z+`+ @.@+@@@", "#@$@%@&@*@=@-@;@>@,@'@)@!@~@{@]@^@/@(@_@:@<@#@$@$@[@}@|@|@1@2@3@>@4@'@5@!@6@{@7@8@9@(@0@a@b@c@d@", "e@d+f@g@h@i@j@k@l@m@n@o@p@q@r@s@t@u@v@w@x@y@z@A@d+B@h@C@j@D@E@F@G@H@+ : g W V 0.I@r.J@K@^+d+c+L@", "^+c+f@g@M@N@O@P@Q@R@R@S@T@U@V@W@X@Y@Z@`@ #.#+#@#d+##M@D@j@D@$#F@%#&#+ *#g =#V -#I@;#M.K@^+c+c+>#", "c+e+e+,#'#E@)#!#~#{#]#^#/#(#_#:#<#[#}#|#1#2#3#4#5#T 6#7#D@8#9#G@�#a#b#c#d#e#f#g#h#i#j#(+e+k#l#", "e+o+m#n#o#9#p#q#r#s#t#u#v#w#x#y#z#A#B#C#D#E#F#G#H#I#o#J#E@%#G@&#K#L#M#N#O#P#Q#R#R#S#R#T#U#o+V#W#", "o+x+w+X#Y#G@J#Z#`# $.$+$@$#$$$%$&$*$=$-$;$>$,$'$)$!$Y#%#J#~$&#{$]$^$/$($_$:$<$[$}$|$S#1$2$g+3$4$", "x+p+y+4$5$6$%#7$8$9$0$a$b$c$d$%$e$f$g$h$i$j$k$l$m$n$5$o$%#&#p$q$r$s$t$t$t$u$v$w$x$y$z$A$B$p+C$D$", "p+E$z+F$G$H$I$J$K$L$M$N$O$P$Q$R$f$S$h$T$U$V$W$X$] Y$G$+ @ : Z$`$ %.%+%@%.%#%$%%%&%*%=%-%;%^ >%( ", "E$c A+,%'%*#+ )%!%M$M$M$~%{%]%^%/%S$(%T$e$_%:%<%[%}%'%: + 8#|%1%+%2%3%4%5%6%7%8%9%0%a%b%c%c d e ", "c A+x d%e%f%g%h%i%M$M$M$M$j%k%l%m%T$(%n%o%M$p%q%r%s%t%: u%v%w%x%+%+%y%z%A%B%C%D%E%0%F%G%H%x y z ", "A+S I%J%K%=#g L%M$M$M$M$M$M%N%O%P%Q%R%S%M$M$T%U%,.V%W%X%Y%Z%`%x%+% % &.&+&@&#&$&%&&&*&=&-&R S T ", "S r+i+'.;&>&,&'&c$M$M$)&!&~&{&]&^&/&(&M$M$M$_&:&r+<&[&}&|&1&2&3&.%4&5&6&7&8&9&0& &a&b&c&d&i+e&'.", "r+5.o.7.. -#V f&g&M$M$M$h&i&j&k&l&m&n&o&M$p&q&r&o.s&. >&-#t&u&v&w&%%x&y&z&A&B&}@}@C&D&E&F&5.5.7.", "5.n.j+G&H&I&J&K&L&M$M$M$M$M&N&O&P&Q&R&S&T&U&V&W&n.X&Y&I@0.!.Z&`& *.*+*@*#*#*$*}@M$}@%*&***n.C+G&", "n.I.Z.=*-*;#;*>*,*'*)*M$M$M$!*~*{*]*^*/*(*_*:*<*[*}*f r.9.|*1*2*3*4*5*6*7*8*9*}@M$M$}@0*a*I.I.K.", "I.Y.D+b*c*/+d*e*C#D#f*g*h*M$M$M$M$N$i*j*k*l*m*n*Y.o*p*M.N./+q*r*s*t*u*v*w*x*y*}@M$M$M$}@z*Y.A*`.", "Y.!+k+V%U B*C*D*D#E#O+E*F*G*H*b$I*J*K*L*M*N*O*P*!+Q*U K@M.e@c+R*S*T*U*V*W*X*Y*}@M$M$M$M$}@!+~+Z*", "!+9+l+`* =c+/+.=E#M++=@=#=$=%=&=*===-=;=>=,='=)=8+!=~=^+/+c+d+{=f+C$/ d h+]=I%}@M$M$M$}@0+9+^=a+", "0+/=E+(=_=d+:=<=[=}=|=1=2=3=4=5=5=6=7=8=9=0=a=b=6+c=_=c+^+d+o+f+w+/ z+h+B+,.i+}@}@}@M$}@d=6+e=m+", "l+s+f=g=h=o+c+i=j=k=l=m=n=o=p=q=r=s=t=u=v=w=x=y=s+z=A=e+c+e+o+g+p+^ c x R B=5.n.I.}@M$M$}@s+C=u+", "D=H+E=o*n+p+x+F=y+G=A+H=r+6.n.J.Y.D+^=l+C=F+D=H+I=J=K=/ p+/ d h+S I%5.L=J.Z.M=0+l+t+}@}@N=O=P=Q=", "R=S=T=U=V=W=X=Y=Z=`= -.-+-@-#-$-%-&-*-=---;-R=S=T=M$>-,-'-)-L+!-~-O+{-]-R+^-/-(-_-:-<-[-}-|-}-1-", " 2-1@3-4-5-6-7-8-9-0-a-b-7@c-9@d-0@e-f-#@f-g-", " h-)#j@)#7#8#i-@ + j-k-l-m-0.9.r.M.K@e@d+n-L@", " o-D@j@D@$#F@p-q-r-s-t-u-v-2&I@;#J@e@^+c+c+>#", " w-7#D@8#%#@ x-y-z-A-B-C-D-E-F-G-e@c+f@e+f@l#", " t%F@E@%#H-I-J-K-L-M-N-O-P-Q-R-S-T-d+o+o+V#W#", " U-i-F@V-W-X-K-Y-Z-`- ;.;+;@;}@#;$;o+m#g+x+%;", " &;o$p-*;=;-;;;>;,;';);!;~;}@{;];^;/;C$p+C$(;", " _;+ :;<;^;[;};|;1;2;3;4;5;6;7;8;9;0;a;^ >%( ", " _ : b;c;d;e;f;g;h;i;j;k;l;m;n;o;p;q;r;c d B@", " f g s;t;^;u;v;w;x;y;z;}@A;B;C;D;E;F;G;x y z ", " A W H;t;I;J;}@}@K;L;M;N;O;P;Q;R;S;T;U;R S T "}; ���������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/opaque.xpm��������������������������������������������������������0000644�0001750�0001750�00000015766�13431646202�015617� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "48 48 105 2", " c None", ". c #000000000000", "X c #9CE69CE69CE6", "o c #B5ACB5ACB5AC", "O c #FFFFFFFFFFFF", "+ c #5AD65AD65AD6", "@ c #108400000000", "# c #39CE00000000", "$ c #6B5A00000000", "% c #739C00000000", "& c #18C600000000", "* c #B5AC00000000", "= c #18C600000842", "- c #4A5200000000", "; c #4A52294A294A", ": c #318C00000000", "> c #084208420842", ", c #9CE6318C318C", "< c #E738318C318C", "1 c #B5AC318C318C", "2 c #421039CE4210", "3 c #7BDE7BDE7BDE", "4 c #39CE39CE39CE", "5 c #A528A528A528", "6 c #210800000000", "7 c #5AD6294A294A", "8 c #18C618C618C6", "9 c #108410841084", "0 c #B5AC4A524A52", "q c #FFFF4A524A52", "w c #842000000000", "e c #318C318C318C", "r c #210821082108", "t c #9CE600000000", "y c #8C6200000000", "u c #4A524A524A52", "i c #AD6A00000000", "p c #294A00000000", "a c #EF7A4A524A52", "s c #C6304A524A52", "d c #421000000000", "f c #084200000000", "g c #A52800000000", "h c #421042104210", "j c #8C628C628C62", "k c #8420318C318C", "l c #6B5A6B5A6B5A", "z c #D6B4318C318C", "x c #94A4318C318C", "c c #4A52318C318C", "v c #A528318C318C", "b c #5294318C318C", "n c #529452945294", "m c #94A494A494A4", "M c #6B5A63186B5A", "N c #DEF6294A294A", "B c #210818C62108", "V c #108408421084", "C c #529400000000", "Z c #842084208420", "A c #E7384A524A52", "S c #631800000000", "D c #9CE64A524A52", "F c #5AD600000000", "G c #8C62294A294A", "H c #318C00000842", "J c #C630C630C630", "K c #318C08420842", "L c #39CE294A294A", "P c #DEF6DEF6DEF6", "I c #39CE318C318C", "U c #CE72318C318C", "Y c #631863186318", "T c #4210318C318C", "R c #5AD652945AD6", "E c #210818C618C6", "W c #5AD64A524A52", "Q c #63184A524A52", "! c #AD6A4A524A52", "~ c #D6B44A524A52", "^ c #94A484208420", "/ c #D6B4D6B4D6B4", "( c #52944A524A52", ") c #CE724A524A52", "_ c #6B5A52945294", "` c #EF7AF7BCEF7A", "' c #E738EF7AE738", "] c #AD6AAD6AAD6A", "[ c #7BDE4A524A52", "{ c #F7BCFFFFF7BC", "} c #EF7AEF7AEF7A", "| c #739C739C739C", " . c #8C6284208420", ".. c #E738E738E738", "X. c #DEF64A524A52", "o. c #A5284A524A52", "O. c #CE72D6B4CE72", "+. c #8C624A524A52", "@. c #F7BC4A524A52", "#. c #BDEE4A524A52", "$. c #6B5A4A524A52", "%. c #739C5AD65AD6", "&. c #7BDE63186318", "*. c #9CE663186318", "=. c #CE72CE72CE72", " ", " ", " . . . . . X . . . . . . . . . . . . . . . . . . . X . . . . . ", " . o o o . X . . . . . . . . . . . . . . . . . . . X . O . O . ", " . o . o . X . . . . . . . . . . . . . . . . . . . X . . O . . ", " . o o o . X . . . . . . . . . . . . . . . . . . . X . O . O . ", " . . . . . X . . . . . . . . . . . . . . . . . . . X . . . . . ", " o o o o o o o o o o o + o o o o o o o o o o o o o o o o o o o ", " . . . . . . . . X . @ # . . . . . . . . . . . . . . . . X . . . . . ", " . O O . o o o . X . $ % . . . . . . . . . . . . . . . . X . O . O . ", " . O O . o . o . X & * * = . . . . . . . . . . . . . . . X . . O . . ", " . O O . o o o . X $ * * - . . . . . . . . . . . . . . . X . O . O . ", " . O O . . . . . ; * * * : > . . . . . . . . . . . . . . X . . . . . ", " . O O o o o o o , < < 1 2 3 4 5 o o o o o o o o o o o o o o o o o o ", " . O O . . . . 6 * * * 7 8 9 & . . . . . . . . . . . . . . . . X . . . . . ", " . O O . O O . 0 q q w e r . t y @ . . . . . . . . . . . . . . X . O . O . ", " . O O . O O 6 q * q : u 9 - * i p . . . . . . . . . . . . . . X . . O . . ", " . O O . O O p a q s > + . t * * * d . . . . . . . . . . . . . X . O . O . ", " . O O . O O f g * : 8 h - * * * * @ . . @ . . . . . . . . . . X . . . . . ", " . O O . O O j k 1 2 l e z < < < x h l c < v b n m o o o 5 e M o o o o o o ", " . O O . O O . & & 8 9 - * * N * @ B V $ * * * % 6 . . . . C : . . . X . . . . . ", " . O O . O O . Z n r u A q * N S V B & * * * * * * d . . f i C > . . X . O . O . ", " . O O . O O . o 3 9 D * q * N @ B V $ * * * * * * 6 . . F * y > . . X . . O . . ", " . O O . O O . O j . a q q * G V B & * * * * * * $ > 8 @ i * * H . . X . O . O . ", " . O O . O O . O J K i * * * L B > $ * * * * * * & B V F * * * S > . X . . . . . ", " . O O . O O . O P M I U < x u + b < < < < < < , h Y T < < < < 1 R o o o o o o o ", " . . . . O O . O O . E $ i @ r > $ * * * * * * & B V S * * * * * @ . . . . . . . ", " o o o . O O . O O . X + W Y 3 Q q q q q q q 0 + 3 W q q q q q q ! J O O O O O . ", " o e e . O O . O O . J Z u 3 + 0 q q q q q q Q 3 + ! q q q q q q ~ ^ O O O O O . ", " . O O . O O . O / 3 3 ( ) q q q q q 0 + 3 W q q q q q q q a _ ` O O O O . ", " . O O . O O . O ' ] j j Y [ ) q q q W 3 + ! q q q q q q q q D o O O O O . ", " . O O . O O . O O { m } ] | n [ ) 0 + 3 W q q q q q q q q q a .O O O O . ", " . . . . O O . O O O ....j j j l n u 3 + 0 q q q q q q q q X.o.M O O O O . ", " o o o . O O . O O O O O O.X j j j 3 3 W q q q q q q X.s +.n | Z P O O O . ", " o e e . O O . O O O O O O O O.X j j + 0 q q @.A #.$.%.| 3 j j j J O O O . ", " . O O . O O O O O O O O O O.j W q q ! [ &.l Z j j j j j j o O O O . ", " . O O . O O O O O O O O O O Z W *.Y | j j j j j j j m 5 P ` O O O . ", " . O O . O O O O O O O O O } 3 =.] .j j j j j j o P ' O O O O O O . ", " . . . . O O O O O O O O O O O ..j j j j m o O.} O O O O O O O O O . ", " o o o . O O O O O O O O O O O o j X o O.O O O O O O O O O O O O O . ", " o e e . O O O O O O O O O O ` ] P { { O O O O O O O O O O O O O O . ", " . O O O O O O O O O O O O O O O O O O O O O O O O O O O O O . ", " . O O O O O O O O O O O O O O O O O O O O O O O O O O O O O . ", " . O O O O O O O O O O O O O O O O O O O O O O O O O O O O O . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " o o o o e o o o o o o o o o o o o o o o o o o o o e o o o o e ", " o e e e e o e e e e e e e e e e e e e e e e e e e e o e e e e ", " "}; ����������WindowMaker-0.95.9/WPrefs.app/xpm/keyboardprefs.xpm�������������������������������������������������0000644�0001750�0001750�00000020243�13431646202�017147� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "48 48 159 2", " c #000000000000", ". c #6B5A6B5A6318", "X c #739C739C739C", "o c #94A494A48C62", "O c #A528A5289CE6", "+ c #A5289CE69CE6", "@ c #8C6284207BDE", "# c #63185AD65294", "$ c #63185AD65AD6", "% c #631863185AD6", "& c #8C628C628420", "* c #9CE69CE694A4", "= c #739C739C6B5A", "- c #6B5A63185AD6", "; c #9CE694A494A4", ": c #9CE694A48C62", "> c #A52894A494A4", ", c #94A48C628C62", "< c #8C627BDE7BDE", "1 c #842084207BDE", "2 c #F7BCEF7AEF7A", "3 c #6B5A5AD65AD6", "4 c #DEF6D6B4CE72", "5 c #DEF6CE72CE72", "6 c #EF7AE738DEF6", "7 c #C630BDEEB5AC", "8 c #39CE318C318C", "9 c #294A294A2108", "0 c #4A524A5239CE", "q c #B5ACB5ACAD6A", "w c #84206B5A739C", "e c #CE72BDEEB5AC", "r c #EF7ADEF6D6B4", "t c #E738CE72CE72", "y c #DEF6CE72C630", "u c #DEF6DEF6D6B4", "i c #318C294A294A", "p c #39CE318C294A", "a c #4A52421039CE", "s c #7BDE739C6B5A", "d c #E738D6B4D6B4", "f c #E738DEF6D6B4", "g c #739C6B5A6318", "h c #318C294A2108", "j c #421039CE318C", "k c #63185AD64A52", "l c #AD6AA5289CE6", "z c #C630C630BDEE", "x c #5AD652945AD6", "c c #8420739C739C", "v c #E738D6B4CE72", "b c #F7BCE738E738", "n c #7BDE6B5A5AD6", "m c #6B5A5AD65294", "M c #5AD64A524210", "N c #6B5A52945294", "B c #C630B5ACAD6A", "V c #A5289CE694A4", "C c #7BDE6B5A6318", "Z c #DEF6D6B4D6B4", "A c #631852944A52", "S c #9CE694A48420", "D c #E738DEF6DEF6", "F c #DEF6C630C630", "G c #CE72CE72C630", "H c #5AD65AD65AD6", "J c #AD6A9CE694A4", "K c #739C63185AD6", "L c #9CE684207BDE", "P c #BDEEBDEEB5AC", "I c #94A484208420", "U c #B5ACAD6AA528", "Y c #8420739C6B5A", "T c #D6B4D6B4CE72", "R c #DEF6C630BDEE", "E c #9CE68C628420", "W c #A5288C628420", "Q c #94A484207BDE", "! c #D6B4C630BDEE", "~ c #F7BCDEF6DEF6", "^ c #94A47BDE739C", "/ c #5AD652944A52", "( c #D6B4CE72CE72", ") c #EF7AD6B4D6B4", "_ c #EF7AE738E738", "` c #5AD652944210", "' c #4A5242104210", "] c #B5AC9CE694A4", "[ c #6B5A63185294", "{ c #8C62739C6B5A", "} c #D6B4CE72C630", "| c #94A48420739C", " . c #4A524A524210", ".. c #AD6A94A494A4", "X. c #EF7ADEF6DEF6", "o. c #739C6B5A5AD6", "O. c #CE72C630BDEE", "+. c #B5ACA5289CE6", "@. c #AD6AA52894A4", "#. c #A52894A48C62", "$. c #8C627BDE739C", "%. c #BDEEB5ACB5AC", "&. c #421039CE39CE", "*. c #AD6A94A48C62", "=. c #739C63185294", "-. c #52944A5239CE", ";. c #52944A524210", ":. c #6B5A5AD64A52", ">. c #529452944210", ",. c #84207BDE6B5A", "<. c #631863185294", "1. c #AD6A94A48420", "2. c #8420739C6318", "3. c #6B5A6B5A5AD6", "4. c #7BDE63185AD6", "5. c #94A47BDE6B5A", "6. c #5AD65AD64A52", "7. c #84207BDE739C", "8. c #42104210318C", "9. c #7BDE739C6318", "0. c #39CE39CE318C", "q. c #8C628420739C", "w. c #8C627BDE6B5A", "e. c #739C739C6318", "r. c #CE72B5ACAD6A", "t. c #CE72C630C630", "y. c #A5288C627BDE", "u. c #9CE68C627BDE", "i. c #C630A5289CE6", "p. c #BDEE9CE694A4", "a. c #B5AC9CE68C62", "s. c #BDEEA528A528", "d. c #294A21082108", "f. c #4A524210318C", "g. c #18C618C618C6", "h. c #AD6A8C628420", "j. c #BDEEA5289CE6", "k. c #B5AC94A48C62", "l. c #84206B5A6318", "z. c #9CE68C628C62", "x. c #D6B4C630C630", "c. c #BDEEA52894A4", "v. c #318C318C294A", "b. c #94A48C627BDE", "n. c #C630AD6AA528", "m. c #94A48C628420", "M. c #CE72AD6AA528", "N. c #39CE294A2108", "B. c #D6B4BDEEBDEE", "V. c #318C21082108", "C. c #94A47BDE7BDE", "Z. c #739C5AD65294", "A. c #2108210818C6", "S. c #84207BDE6318", "D. c #18C610841084", "F. c #7BDE739C5AD6", "G. c #BDEE9CE69CE6", "H. c #210818C618C6", "J. c #E738C630BDEE", " . ", " X o O O + + @ # $ $ % o & o + + + + * = # $ # - ; + ; ; ; : > , . # % % < + + + + + + + 1 . 2 ", " 3 < 4 5 5 6 7 8 9 0 % q 3 w e r t y u : i p a s 4 r d d d d f 4 g h j k l u d d d d r 6 z x 2 ", " $ c 5 v y b e 8 p n m q M N B d y y 6 V i a m C Z v y y y y t u c i # A S D y F y F F Z G H 2 ", " s J d v y b y k K L k P I 7 d v F y 6 U 8 - Y % T 5 F F F R y D E j W - Q u y ! R R ! y G H 2 ", " > y d y y ~ y M K ^ / ( r ) v y F y _ q 8 C ^ ` ( v F F y R y D : ' ] [ Y Z y R R R ! 5 G . 2 ", " ; ! y y y ~ y / { L / } ~ t y y F y _ U ' | ^ .( d y F F R y D ; ' ..[ g Z 5 ! R R ! y ( . 2 ", " * y v v d ~ ( k C L k } b d 5 v 5 d _ B j Y ^ ` ( X.v 5 5 y 5 6 V ' ..- o.Z d 4 y y 4 5 4 1 2 ", " ; O.( ( ( ( +./ 3 L k @.( ( ( ( ( ( ( #.8 K $.k %.T ( ( u T ( ( I &.*.C - z ( ( ( ( ( ( z = 2 ", " / / ` / / # m # K I =.k k -.0 -.0 ;.% # j K $.:.# >.0 / ,.<.k o.K j 1.2.[ # .0 0 0 0 ./ 3.2 ", " # m m m m =.4.n 3 5.C C 3 ;.;.-.;.-.k n 0 6.Y C [ A ` -.-.-.-.# 7.8.$.$.9.;.0.j j 8.j j ;.7.2 ", " % K K m m m [ m -.=.K C Y C K [ =.;.-.K a j K o.C C C k ` ` ` k ,.j % Y - 0 >.` ;.;.;.-.;.* 2 ", " $ [ q.w.e.o.g g . Y m n Y C 3 C - ;.;.% 0 0 o.m g 9.o.:./ 0 a a % a / g >.a ` ;.;.;.0 8.a , 2 ", " % 1 ! r.T Z Z Z Z } ,.n Y K s t.Z ( ( T ( ( t.s K C K E t.} } } ( ( T z 6.-./ -.K *.W y.u.B 2 ", " # 1 z ^ } d y y 5 u ,.p a [ g Z d v v v y d Z % 9 a / S D d d ) ) ) r ( 0 h 0 0 o.i.p.a.a.s.2 ", " - 7.7 K #.R F R F D @ d.f.g k T v F F F R y Z $ d.m :.Q u y F y y F y ( j g.;. .K p.^ h...+.2 ", " - g } j.j.R y ! y D S i # $.k } d F F R F y u s 8 1.- @ u y R F F R y Z 6.d./ ;.m W M K C o.2 ", " - # Z d y y F ! y D E i m w./ y d F F R R y u < j a.[ Y u y F R R R y Z - 9 / -.k k.4.l.{ z.2 ", " - # ( v y y y ! y D #.j Y w.A x.d y y y y 4 D @ j *.m g Z 5 F R R R y u C h ` ;./ c.k.k.*.j.2 ", " g # t.D D D D D r u S f.9.w.m O.6 D D D D 6 D @ j L o.e.( D ) v y d r u 7.v.` ;.` i.i.] k.B 2 ", " g ` | #.V V J V J #.[ j A Y =.b.#.J #.#.#.l J # j b.9.$ E #.7 ( ( } l V k 9 ` ` ;.2.Y e.{ n.2 ", " C m :./ M M M M ` m K -.-.{ o.m A ` M M M M m A ;.u.w.m / 0 / k k k -.k A v./ / ;.0 j 0.8.1 2 ", " . - K K n n n n K n C -.f.9.n K K o.n n n o.n n -.n C [ - =.[ [ m [ K C C p 0 / / -.p h 0.<.2 ", " # k k m K n 9.o.K =.3 8 p m A k m K n 9.n [ =.:.j a k ` k m [ o.C o.o.C g i v.8.8.0 0.9 v.. 2 ", " m.U B +.K o.C [ q.B r.l + B j.U J o.o.C K $.M.B +.+.s.+.B l m o.9.n 9.L L C l.Y l.Y K % [ 1 2 ", " U d _ Z C o.C 3 #.D ~ D X.X.X.X.Z w.K C [ b.f ~ r r X.r b ( <.o.Y [ g i.i.i.i.i.c.i.p.j.c.e 2 ", " + ! d ( ` N.a / E f y y R y F 4 T k 9 -.:.$.Z y ! F F ! y ( a v.a 0 k j.k.W k.k.k.k.] k.k.j.2 ", " > B.t Z k V.:.K Q u y ! ! R ! y Z - 9 C [ Y Z y ! ! ! ! y T / g.8.-.6.k.^ 4.^ W ^ C.L ^ W U 2 ", " > B.v D Y j ^ Y @ u y ! ! ! ! y u 7.j h.K g Z y ! ! ! ! R u s d.;.` 0 h.^ Z.l.w.K 4.4.=.L s.2 ", " ; B.v D 7.p $.n Y Z y R ! ! ! y u 7.j 1.=.- T y ! ! ! ! R r z.h 0 ` a k.] { C.k.L I L L h.U 2 ", " > R d D $.j $.C ,.Z d 5 5 5 y 5 D < j 1.K - T d y y y y y 6 +.i a 6.0 *.i.k.] k.k.k.1.k.h.j.2 ", " ; O.Z t.$.` u.Y C z ( ( ( ( ( ( O.C j y.l.[ B ( ( ( ( ( ( ( E h 0 k ;.y.i.] k.k.i.i.i.i.p.e 2 ", " # k m o.n -.{ w.:.# k 6.k k k k % ` N.=.{ =.m :.k / 6.6.k - m v.8.k ;.;.;.0 8.-.w.| ^ $.Y b.2 ", " $ K K n { 8./ Y o.K [ [ [ =.3 =.n l.p -.w.C K K [ [ 3 3 =.n l.p p / / ;.;.;. .0 a 8.8.8.8.. 2 ", " # 3 =.K 4.i v.[ m k # m m K o.C Y Y p a 9.g K o.o.K K K o.n Y 0.h ;.` / / / / ` ` >.;.` ` e.2 ", " . Y { $.$.k k $.Y s s s Y C m C Y Y M K L w.Y Y Y Y Y 2.Y Y $.K # / ;.` / / / / / / 6./ 6.X 2 ", " * ( Z u u 4 T u Z Z u u u e [ C { s Y p.a.1.1.1.1.1.1.1.1.1.1.p.c.w.0 / k k k k / k k k k X 2 ", " : ! y y t t y y y y y 5 d Z g C w.m % ] 1.h.h.h.W W y.W W y.W 1.] y.0 / k k k # # # k k k 1 2 ", " z.e R R F F F F R R R R y ( a A.9 p k W S.2.5.W y.y.u.y.u.u.u.y.*.k.i g.8 &.&.j j &.&.j &.$ 2 ", " S e F F R F R F R R R R y ( a D.p 0 k y.2.F.2.y.W L y.y.y.y.u.y.*.G.h d.V } x.x.x.O.! B.B.Z 2 ", " : e F F F F F F F F F ! y T ;.g.;.6.A p.k.W y.W y.y.y.y.y.y.u.y.*.i.j i B 2 ~ b b b b b _ 2 2 ", " : ! y y y y y y y y y y 4 Z x g.a 6.` c.c.k.*.h.h.1.h.1.1.h.h.1.] n. .i U _ y t t t y t t 6 2 ", " * ( u D u d u d u u f u d Z <.H.a k >.2.n ^ p.i.] k.k.k.k.] i.i.W ,.j i l 6 y F y F F F F v 2 ", " s Q m.b.b.b.b.b.b.b.m.I E n.K H.8.<.;.a 0.j ;.;.0 a 0 a a 0 ;.>.0 0 a 9 m.D y F F F J.F y r 2 ", " m - K K K K K K K K K K K $.K A.j [ / >.>.>.;.;.0 ;.;.0 -.0 0 -.;.6.# 9 C u y J.F y F y y d 2 ", " K Y Y Y Y Y Y Y Y Y Y c Y ^ I 9 0.# ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` k k 9 . u t y y t t t y r 2 ", " @ E E E E E z.E z.E E E z.#.J ;. .e.o.3.3.3.3.3.3.- 3.3.3.3.- - 3.g = a g u ~ ~ ~ ~ ~ ~ ~ b 2 ", "2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 "}; �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/windowfocus.xpm���������������������������������������������������0000644�0001750�0001750�00000014673�13431646202�016670� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * windowfocus_xpm[] = { "48 48 108 2", " c None", ". c #2C2C2C", "+ c #FEFEFE", "@ c #505075", "# c #B5B5B5", "$ c #747474", "% c #060606", "& c #868686", "* c #050505", "= c #B3B3B3", "- c #0B0B0B", "; c #B4B4B4", "> c #1E1E1E", ", c #DCDCDC", "' c #CCCCCC", ") c #CDCDCD", "! c #C8C8C8", "~ c #CACACA", "{ c #CECECE", "] c #CBCBCB", "^ c #C7C7C7", "/ c #C5C5C5", "( c #C1C1C1", "_ c #BFBFBF", ": c #C0C0C0", "< c #D2D2D2", "[ c #737373", "} c #181818", "| c #F5F5F5", "1 c #F4F4F4", "2 c #F3F3F3", "3 c #F2F2F2", "4 c #F1F1F1", "5 c #F0F0F0", "6 c #EFEFEF", "7 c #EEEEEE", "8 c #EDEDED", "9 c #ECECEC", "0 c #EBEBEB", "a c #EAEAEA", "b c #E9E9E9", "c c #E8E8E8", "d c #E7E7E7", "e c #E6E6E6", "f c #E5E5E5", "g c #E4E4E4", "h c #E3E3E3", "i c #E2E2E2", "j c #151515", "k c #E1E1E1", "l c #000000", "m c #0F0F0F", "n c #727272", "o c #2D2D2D", "p c #040404", "q c #6D6D6D", "r c #0E0E0E", "s c #FDFDFD", "t c #1B1B1B", "u c #181817", "v c #F7F7F7", "w c #6C6C6C", "x c #6A6A6A", "y c #101010", "z c #1A1A1A", "A c #686868", "B c #090909", "C c #111111", "D c #0A0A0A", "E c #161616", "F c #191919", "G c #E0E0E0", "H c #171717", "I c #383838", "J c #DFDFDF", "K c #373737", "L c #D4D4D4", "M c #353535", "N c #303030", "O c #C9C9C9", "P c #DEDEDE", "Q c #2A2A2A", "R c #141414", "S c #D1D1D1", "T c #D5D4D5", "U c #D6D5D6", "V c #A6A6A6", "W c #515151", "X c #DDDDDD", "Y c #4D4D4D", "Z c #1C1C1C", "` c #0D0D0D", " . c #AAAAAA", ".. c #4F4F4F", "+. c #787878", "@. c #424242", "#. c #242424", "$. c #7F7F7F", "%. c #B1B1B1", "&. c #DBDBDB", "*. c #A5A5A5", "=. c #D6D6D6", "-. c #D7D7D7", ";. c #D8D8D8", ">. c #A8A8A8", ",. c #A7A7A7", "'. c #DADADA", "). c #0C0C0C", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ # # # # # $ # # # # # # # # # # # # # # # # # # # # $ # # # # # @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ # % % % # & # # # # # # # # # # # # # # # # # # # # & # * # * # @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ # % = - # & = = = = = = = = = = = = = = = = = = = ; & # # * # # @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ # % > % # & # # # # # # # # # # # # # # # # # # # # & # * # * # @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ $ , ' ) ! ~ ~ { { ' ' ' ] ] ] ~ ~ ! ! ! ^ ^ ^ / / ( _ : / / < [ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ } | 1 2 2 3 4 4 5 6 6 7 8 8 9 9 0 a a b c c d e e f g g h h i j @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ } 1 2 2 3 3 4 5 5 6 7 7 8 9 9 0 a a b b c d d e f f g h h i k } @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ } | 1 2 2 3 l m m m m n l l l l l l l l l l l l l l l l l l l l n j o l > p @ @ @ @ + ", ". @ @ @ @ } 1 2 2 3 3 m + + + l q l l l l l l l l l l l l l l l l l l l l q r s l s t @ @ @ @ + ", ". @ @ @ @ u | 1 2 3 3 m + l v l w l l l l l l l l l l l l l l l l l l l l w % > s l l @ @ @ @ + ", ". @ @ @ @ } | 1 2 2 3 m + + + l x l l l l l l l l l l l l l l l l l l l l x - s } s l @ @ @ @ + ", ". @ @ @ @ } 1 2 2 3 3 y l l l z A B C C C C C C C C C C C C C C C C C C B A > p l D E @ @ @ @ + ", ". @ @ @ @ } | 1 2 2 3 $ , ' ) ! ~ ~ { { ' ' ' ] ] ] ~ ~ ! ! ! ^ ^ ^ / / ( _ : / / < [ @ @ @ @ + ", ". @ @ @ @ } 1 2 2 3 3 } | 1 2 2 3 4 4 5 6 6 7 8 8 9 9 0 a a b c c d e e f g g h h i E @ @ @ @ + ", ". @ @ @ @ u | 1 2 3 3 } 1 2 2 3 3 4 5 5 6 7 7 8 9 9 0 a a b b c d d e f f g h h i k } @ @ @ @ + ", ". @ @ @ @ } | 1 2 2 3 } 1 2 3 3 4 5 5 6 6 7 8 8 9 0 0 a b b c d d e e f g g h i i k } @ @ @ @ + ", ". @ @ @ @ } 1 2 2 3 3 F 2 l 3 l 4 5 6 6 7 8 8 9 9 0 a a b c c d e e f f g h h i k k } @ @ @ @ + ", ". @ @ @ @ } | 1 2 2 3 z 2 3 l 4 5 5 6 7 7 8 9 9 0 0 a b b c d d e f f g h h i i k G H @ @ @ @ + ", ". @ @ @ @ } 1 2 2 3 3 t 3 3 l 4 5 6 6 7 8 8 9 0 0 a b b c c d e e f g g h i i k G G H @ @ @ @ + ", ". @ @ @ @ u | 1 2 3 3 F 3 4 l 5 6 6 7 7 8 9 9 0 a a b c c I , e f f g h h i k k G J E @ @ @ @ + ", ". @ @ @ @ } | 1 2 2 3 t 3 4 l 5 6 7 7 8 8 9 0 0 a b b c d l K L f g g h i i k G G J H @ @ @ @ + ", ". @ @ @ @ } 1 2 2 3 3 t 4 4 l 6 6 7 8 8 9 0 0 a a b c c d l l M { g h i i k k G J J H @ @ @ @ + ", ". @ @ @ @ u | 1 2 3 3 t 4 5 l 6 7 7 8 9 9 0 a a b c c d d l l l N O h i k k G J J P H @ @ @ @ + ", ". @ @ @ @ j 8 8 9 0 0 t 5 5 l 6 7 8 8 9 0 0 a b b c d d e l l l l Q ^ i k G G J P P H @ @ @ @ + ", ". @ @ @ @ R g S T U V t 5 l 6 l 8 8 9 9 0 a a b c c d e e l l l B N W k k G J J P X H @ @ @ @ + ", ". @ @ @ @ Q 8 & & & $ z 5 6 7 7 8 9 9 0 a a b b c d d e f l Y Z ` .k k G G J P P X H @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ z 6 6 7 8 8 9 0 0 a b b c c d e e f ..X +.l @.k G G J J P X X E @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ z 6 7 7 8 9 9 0 a a b c c d e e f f g h O #.B V G J J P X X , E @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ z 7 7 8 9 9 0 0 a b b c d d e f f g h h i $.- %.G J P P X , , E @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ z 7 8 8 9 0 0 a b b c c d e e f g g h i i k k G J J P X X , &.E @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ Z 7 8 9 9 0 a a b c c d d e f f g h h i k k G J J P P X , , &.H @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ j 8 8 9 0 0 a b b c d d e f f g g h i i k G G J P P X , , &.&.j @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ R g S T U V *.< L T =.-.-.-.-.-.-.-.-.-.-.-.-.-.;.>.,.L =.'.& % @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ Q 8 & & & $ < & & & & & & & & & & & & & & & & & & $ < & & & & ).@ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + ", "+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + "}; ���������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/nextstyle.xpm�����������������������������������������������������0000644�0001750�0001750�00000005155�13431646202�016353� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * nextstyle_xpm[] = { "37 33 84 1", " c None", ". c #747474", "+ c #757575", "@ c #000000", "# c #222222", "$ c #262626", "% c #282828", "& c #080808", "* c #FFFFFF", "= c #FFFAFF", "- c #FFFFF6", "; c #F6F6F6", "> c #F6F2F6", ", c #EEEEEE", "' c #B4B6B4", ") c #8B8D94", "! c #DEE6E6", "~ c #E6E6EE", "{ c #CDD2CD", "] c #A4A1A4", "^ c #313431", "/ c #94918B", "( c #EEF6F6", "_ c #292829", ": c #C5CACD", "< c #E6E6E6", "[ c #A4A5AC", "} c #414039", "| c #948D8B", "1 c #8B8D8B", "2 c #292C29", "3 c #D5D6D5", "4 c #B4BAB4", "5 c #313029", "6 c #DEDADE", "7 c #A4A5A4", "8 c #8B898B", "9 c #F6FAFF", "0 c #F6FFFF", "a c #DEDEDE", "b c #181818", "c c #E6EAE6", "d c #C5C6C5", "e c #8B8983", "f c #EEF2F6", "g c #EEEEF6", "h c #101010", "i c #201818", "j c #838183", "k c #838983", "l c #949594", "m c #202420", "n c #CDCECD", "o c #BDBABD", "p c #202018", "q c #736D73", "r c #6A7573", "s c #83817B", "t c #B4B2B4", "u c #202829", "v c #C5C2C5", "w c #201C18", "x c #5A5552", "y c #7B757B", "z c #393C41", "A c #CDD2D5", "B c #D5D2D5", "C c #9CA1A4", "D c #BDBAB4", "E c #8B8583", "F c #6A6D6A", "G c #949994", "H c #A4AAAC", "I c #94999C", "J c #94958B", "K c #94898B", "L c #83818B", "M c #73756A", "N c #837D83", "O c #060606", "P c #070707", "Q c #030303", "R c #ABABAB", "S c #535353", "..................+++++++...........@", "##################$$$$$$$%$%$$$$$$$$@", "##################$$$$$$$$%%%%%%%%%%@", "###################################%@", "###################################%&", "####################@@@@@@@@@@@@*%%%&", "####################@=****-;>,'@*%%%&", "####################@*)!=;~{]^/@*%%%&", "####################@*(_:><[}|1@*%%%&", "####################@**:2345678@*%%%&", "####################@*90ab_cd/e@*%%%&", "####################@9fg3hid7jk@*%%%&", "####################@;almnopqrs@*%%%&", "####################@>tuva67wxy@*%%%&", "####################@,zABClDEbF@*%%%&", "####################@'GHIJKeLMN@*%%%&", "####################@@@@@@@@@@@@*%%%&", "####################*************%%%&", "##################$$$$$$$$$%%%%%%%%%&", "##################$$$$$$$%$%%%%%%%%%&", "OOOOOOOOOOOOOOOOOOPPPPPPPPPPPPP&&&&&Q", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR@", "RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR@", "RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR@", "RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR@", "SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS*RR@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@R*RR@", "********************************R*RR@", "********************************R*RR@", "********************************R*RR@", "********************************R*RR@", "********************************R*RR@"}; �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/mousespeed.xpm����������������������������������������������������0000644�0001750�0001750�00000005164�13431646202�016465� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "40 44 33 1", " c None", ". c #084208420842", "X c #108410841084", "o c #000000000000", "O c #421042104210", "+ c #6B5A6B5A6B5A", "@ c #631863186318", "# c #739C739C739C", "$ c #7BDE7BDE7BDE", "% c #94A494A494A4", "& c #294A294A294A", "* c #210821082108", "= c #9CE69CE69CE6", "- c #4A524A524A52", "; c #18C618C618C6", ": c #BDEEBDEEBDEE", "> c #C630C630C630", ", c #B5ACB5ACB5AC", "< c #529452945294", "1 c #A528A528A528", "2 c #39CE39CE39CE", "3 c #AD6AAD6AAD6A", "4 c #8C628C628C62", "5 c #842084208420", "6 c #5AD65AD65AD6", "7 c #318C318C318C", "8 c #CE72CE72CE72", "9 c #DEF6DEF6DEF6", "0 c #EF7AEF7AEF7A", "q c #E738E738E738", "w c #FFFFFFFFFFFF", "e c #D6B4D6B4D6B4", "r c #F7BCF7BCF7BC", " ", " ", " .X ", " oO+ ", " o@#ooo ", " o.oo .$#.Xo ", " X@%#&.o o*=-;Xo ", " o@:>>,$O**<12;;o ", " o&3::>>>:,,31&*Xo ", " ;%:>:>>>>>:4:52Xo ", " .6::>>>>>>>3$::=&o ", " *=:::>>>>>:$3>>>,@X ", " .6$%3:>>>>>15>>>:::Ooo ", " o73,=551>>>>53>>>:::-.oo ", " ;%:::>:4#=,35>8>:::3O*Xo ", " .6,::>>>>:34@1>>>::,=2&X. ", " o&18:>>9>8808,5%:::,3#&&Xo ", " X4:88>>9q88008>w#%33=-&*.o ", " .6,:8%e>q@qe0708ww=+%52&;oo ", " o<3::8%%eq+@q0O70wow3$<&&X. ", " .21::>e%==0+++r272wXow4O&*.o ", " o2=,::>e%==8+++e227wXoXw7&;oo ", " .7=,::>>e===><++8*22woXo;w*.o ", " ;43::>>>e===8-<+8;*2r.o.Xow.o ", " o23,:>>>8e=1=8---e;;;ro.o.oow ", " X#3,:>>889==18+++e222wo.oo.oXr ", " &%3,:>>889=198++qe270w.oo.wwr0w ", " .613,::>8e9199>-0q8;rqwooworo ", " o@=3,::>8e99ee08e8ree1r.wwoow ", " .@=13::>8eeeee9=%e96<>ww.:wX0 ", " .@%13,:>8eeeeeee%8:e-,4>.:woow ", " .@4=3,:>88eeee8e%4>e-*%>.o:wow ", " o-5%13::>88888>:8>,=,%&*:: w.ow ", " &$4=1,::>>>>:::,,1$O&&Xoo ww ", " .6$4=13,,:::,,3334-&&;.o ", " o6=133333111=%<7&*Xo ", " .O#54%=====%%%4#2&&;oo ", " oX2+$$55444555#O&&;.o ", " oX&<+######+<27&*.o ", " o.;&2O-<---27&&&X.o ", " ooX;&&&&&&&&&*Xoo ", " oo.X;******;..o ", " ", " "}; ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/smallwindow.xpm���������������������������������������������������0000644�0001750�0001750�00000011413�13431646202�016646� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "31 27 105 2", " c None", ". c #000000000000", "X c #9CE69CE69CE6", "o c #B5ACB5ACB5AC", "O c #FFFFFFFFFFFF", "+ c #5AD65AD65AD6", "@ c #108400000000", "# c #39CE00000000", "$ c #6B5A00000000", "% c #739C00000000", "& c #18C600000000", "* c #B5AC00000000", "= c #18C600000842", "- c #4A5200000000", "; c #4A52294A294A", ": c #318C00000000", "> c #084208420842", ", c #9CE6318C318C", "< c #E738318C318C", "1 c #B5AC318C318C", "2 c #421039CE4210", "3 c #7BDE7BDE7BDE", "4 c #39CE39CE39CE", "5 c #A528A528A528", "6 c #210800000000", "7 c #5AD6294A294A", "8 c #18C618C618C6", "9 c #108410841084", "0 c #B5AC4A524A52", "q c #FFFF4A524A52", "w c #842000000000", "e c #318C318C318C", "r c #210821082108", "t c #9CE600000000", "y c #8C6200000000", "u c #4A524A524A52", "i c #AD6A00000000", "p c #294A00000000", "a c #EF7A4A524A52", "s c #C6304A524A52", "d c #421000000000", "f c #084200000000", "g c #A52800000000", "h c #421042104210", "j c #8C628C628C62", "k c #8420318C318C", "l c #6B5A6B5A6B5A", "z c #D6B4318C318C", "x c #94A4318C318C", "c c #4A52318C318C", "v c #A528318C318C", "b c #5294318C318C", "n c #529452945294", "m c #94A494A494A4", "M c #6B5A63186B5A", "N c #DEF6294A294A", "B c #210818C62108", "V c #108408421084", "C c #529400000000", "Z c #842084208420", "A c #E7384A524A52", "S c #631800000000", "D c #9CE64A524A52", "F c #5AD600000000", "G c #8C62294A294A", "H c #318C00000842", "J c #C630C630C630", "K c #318C08420842", "L c #39CE294A294A", "P c #DEF6DEF6DEF6", "I c #39CE318C318C", "U c #CE72318C318C", "Y c #631863186318", "T c #4210318C318C", "R c #5AD652945AD6", "E c #210818C618C6", "W c #5AD64A524A52", "Q c #63184A524A52", "! c #AD6A4A524A52", "~ c #D6B44A524A52", "^ c #94A484208420", "/ c #D6B4D6B4D6B4", "( c #52944A524A52", ") c #CE724A524A52", "_ c #6B5A52945294", "` c #EF7AF7BCEF7A", "' c #E738EF7AE738", "] c #AD6AAD6AAD6A", "[ c #7BDE4A524A52", "{ c #F7BCFFFFF7BC", "} c #EF7AEF7AEF7A", "| c #739C739C739C", " . c #8C6284208420", ".. c #E738E738E738", "X. c #DEF64A524A52", "o. c #A5284A524A52", "O. c #CE72D6B4CE72", "+. c #8C624A524A52", "@. c #F7BC4A524A52", "#. c #BDEE4A524A52", "$. c #6B5A4A524A52", "%. c #739C5AD65AD6", "&. c #7BDE63186318", "*. c #9CE663186318", "=. c #CE72CE72CE72", ". . . . . X . . . . . . . . . . . . . . . . . . . X . . . . . ", ". o o o . X . . . . . . . . . . . . . . . . . . . X . O . O . ", ". o . o . X . . . . . . . . . . . . . . . . . . . X . . O . . ", ". o o o . X . . . . . . . . . . . . . . . . . . . X . O . O . ", ". . . . . X . . . . . . . . . . . . . . . . . . . X . . . . . ", "o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". O O O O O O O O O O O O O O O O O O O O O O O O O O O O O . ", ". O O O O O O O O O O O O O O O O O O O O O O O O O O O O O . ", ". O O O O O O O O O O O O O O O O O O O O O O O O O O O O O . ", ". O O O O O O O O O O O O O O O O O O O O O O O O O O O O O . ", ". O O O O O O O O O O O O O O O O O O O O O O O O O O O O O . ", ". O O O O O O O O O O O O O O O O O O O O O O O O O O O O O . ", ". O O O O O O O O O O O O O O O O O O O O O O O O O O O O O . ", ". O O O O O O O O O O O O O O O O O O O O O O O O O O O O O . ", ". O O O O O O O O O O O O O O O O O O O O O O O O O O O O O . ", ". O O O O O O O O O O O O O O O O O O O O O O O O O O O O O . ", ". O O O O O O O O O O O O O O O O O O O O O O O O O O O O O . ", ". O O O O O O O O O O O O O O O O O O O O O O O O O O O O O . ", ". O O O O O O O O O O O O O O O O O O O O O O O O O O O O O . ", ". O O O O O O O O O O O O O O O O O O O O O O O O O O O O O . ", ". O O O O O O O O O O O O O O O O O O O O O O O O O O O O O . ", ". O O O O O O O O O O O O O O O O O O O O O O O O O O O O O . ", ". O O O O O O O O O O O O O O O O O O O O O O O O O O O O O . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", "o o o o e o o o o o o o o o o o o o o o o o o o o e o o o o e ", "o e e e e o e e e e e e e e e e e e e e e e e e e e o e e e e "}; �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/keyboard.xpm������������������������������������������������������0000644�0001750�0001750�00000015533�13431646202�016115� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "48 48 98 2", " c None", ". c #739C739C739C", "X c #EF7AEF7AEF7A", "o c #D6B4D6B4D6B4", "O c #AD6AAD6AAD6A", "+ c #842084208420", "@ c #631863186318", "# c #39CE39CE39CE", "$ c #18C618C618C6", "% c #000000000000", "& c #108410841084", "* c #CE72D6B4D6B4", "= c #D6B4DEF6D6B4", "- c #DEF6DEF6DEF6", "; c #D6B4DEF6DEF6", ": c #C630C630C630", "> c #9CE69CE69CE6", ", c #7BDE7BDE7BDE", "< c #529452945294", "1 c #318C318C318C", "2 c #084208420842", "3 c #B5ACBDEEB5AC", "4 c #739C84208420", "5 c #C630CE72C630", "6 c #E738E738E738", "7 c #E738EF7AE738", "8 c #EF7AEF7AE738", "9 c #EF7AF7BCF7BC", "0 c #B5ACB5ACB5AC", "q c #8C628C628C62", "w c #6B5A6B5A6B5A", "e c #421042104210", "r c #210821082108", "t c #CE72D6B4CE72", "y c #CE72CE72CE72", "u c #C630C630CE72", "i c #A528A528A528", "p c #A528AD6AA528", "a c #94A494A494A4", "s c #AD6AB5ACAD6A", "d c #EF7AF7BCEF7A", "f c #F7BCF7BCF7BC", "g c #F7BCF7BCEF7A", "h c #AD6AAD6AA528", "j c #5AD65AD65AD6", "k c #B5ACBDEEBDEE", "l c #94A494A48C62", "z c #F7BCFFFFF7BC", "x c #E738E738DEF6", "c c #BDEEC630C630", "v c #4A524A524A52", "b c #294A294A294A", "n c #BDEEBDEEBDEE", "m c #9CE6A528A528", "M c #AD6AB5ACB5AC", "N c #C630CE72CE72", "B c #A5289CE69CE6", "V c #9CE6A5289CE6", "C c #BDEEC630BDEE", "Z c #FFFFFFFFF7BC", "A c #C630BDEEBDEE", "S c #94A49CE69CE6", "D c #C630C630BDEE", "F c #EF7AE738E738", "G c #BDEEBDEEB5AC", "H c #B5ACB5ACAD6A", "J c #B5ACAD6AAD6A", "K c #A528A5289CE6", "L c #DEF6DEF6D6B4", "P c #9CE6A528AD6A", "I c #D6B4D6B4CE72", "U c #D6B4CE72CE72", "Y c #E738DEF6DEF6", "T c #CE72CE72C630", "R c #AD6AA528A528", "E c #B5ACBDEEAD6A", "W c #D6B4CE72C630", "Q c #FFFFFFFFFFFF", "! c #AD6AA5289CE6", "~ c #8C6294A494A4", "^ c #B5ACAD6AA528", "/ c #BDEEB5ACB5AC", "( c #9CE694A494A4", ") c #9CE69CE694A4", "_ c #DEF6DEF6E738", "` c #DEF6D6B4CE72", "' c #DEF6E738DEF6", "] c #DEF6E738E738", "[ c #8C628C628420", "{ c #F7BCFFFFFFFF", "} c #94A48C628C62", "| c #A528AD6AB5AC", " . c #BDEECE72C630", ".. c #94A494A49CE6", "X. c #A528AD6AAD6A", "o. c #DEF6D6B4D6B4", "O. c #739C7BDE7BDE", "+. c #B5ACB5ACBDEE", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " . X o O + @ # $ % ", " & * * = - ; = = = ; : > , < 1 2 ", " , 3 > 4 ; : 5 5 ; = 6 7 8 7 7 9 - 0 q w e r % ", " 2 t y u ; 5 i p a s p p 3 o y - d 7 f f f 9 9 g y h + j 1 & % ", " w : h p i y k o - y y 5 3 i h l : > : 0 8 y X X z z 9 9 9 X x c > . v b 2 ", " 2 : c t 0 n O m i M a O y 3 8 - 6 6 y N 0 0 > B y V 8 n C - X f Z g X X 7 g o 0 q # % ", " j : : : > h n p A 5 C o O 0 O O S t i = 7 x f - - : : i 0 l y + y D = 7 F X 8 x x 0 b % % ", " % c G 3 3 s p t H 5 G h G s J o s x 5 0 A 0 i : K o d L 6 d - 8 : D G P n M I D U Y 0 e 2 % ", " v N G G y 0 y n s H G h T D D 6 h D C p - p I L G x o R 0 0 G O 8 o x g X g Y I y Y J 1 & % ", " % : n y 0 y i G 0 O n 0 A o H D E 0 E o s Z s W A U Q 8 ! - H X V I K H ! D K x G g F i # & 2 ", " & - : i q ~ q 0 3 - X 8 o I D 0 T ^ X n o D G / U I d : ! : K n ( T ! L H x l U ) T R + 1 & % ", " r k : y o _ - : s m q q i : - X Q g H 5 R I R L Q O x J : Q Q Q 8 L D L ) ` ) 0 I I A @ 1 & % ", "% i = = - - t t = ; = ' X - : O V l ) l Y h Z H x 0 G U K 7 8 8 o X Q y W H / I n Z 0 A # b 2 % ", "% 9 = o = - - - ] 7 7 7 - ' - - x X X = y O J [ G a - n G Q D U J y X D H x R o K I R 0 1 b 2 % ", "% { * = = = o - - ] 6 7 8 X X X X 8 ' 6 ' ' 6 X X I : G i h } h A T D ` I ` ( A J F G > b & 2 % ", "% + | .o - - - - ] 7 6 6 7 8 7 X X d f f d d 8 ' ' - - x 8 Y W n 0 B h n / 0 D X y J w r & % % ", "% & # . ..X.: * - - ' - ' - - x 6 6 7 7 8 7 X X X X X X 7 - - - - - - F o.n 0 > O i n # r 2 2 % ", "% 2 $ b 1 1 v O.> | C t - - ' ' ' ' ' ' 6 6 6 6 6 6 F 6 7 6 6 8 8 8 - L - - - - 8 F G 1 $ 2 % % ", "% % 2 & $ r b b 1 1 e w ~ p X.3 : o - - 6 6 6 _ _ - - - - - _ - - - - x x x 8 6 - I w b & 2 % % ", " % % % 2 2 & & $ r b b 1 1 1 # < . + ..i M c * N N y o - - - - - = = - - - - x 6 - # r 2 % % % ", " % % % % 2 2 2 & & $ $ r b b b 1 1 1 1 # # # < . q > M 0 +.n o o = - - - - - 0 1 $ 2 2 % % ", " % % % % 2 2 2 2 & & & $ $ r r r b b b b 1 1 1 # # < , > p M n t o y j b & % % % % ", " % % % % % % 2 2 2 2 2 2 & & & & $ r r r b b b 1 1 # j + + < 1 r 2 % % 2 % ", " % % % % % % % % % 2 2 2 2 & & & $ $ r r b 1 1 1 r & 2 % % % % ", " % % % % % % % 2 2 2 & & $ $ $ & 2 % % % % % ", " % % % % % 2 2 2 % % % % % % ", " % % % % ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "}; ���������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/appearance.xpm����������������������������������������������������0000644�0001750�0001750�00000050272�13431646202�016413� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * appearance_xpm[] = { "48 48 988 2", " c None", ". c #2C2C2C", "+ c #FEFEFE", "@ c #505075", "# c #4C4E6A", "$ c #51586F", "% c #3F4A46", "& c #4E556A", "* c #4D6553", "= c #3B4641", "- c #596273", "; c #638363", "> c #5C7661", ", c #324B43", "' c #60687B", ") c #89A786", "! c #779876", "~ c #5E7668", "{ c #334847", "] c #5F677F", "^ c #99BB9D", "/ c #7FA286", "( c #5C7C69", "_ c #486762", ": c #2F4647", "< c #576279", "[ c #7A9F91", "} c #7AA290", "| c #6B9083", "1 c #60837B", "2 c #506C6F", "3 c #2B424B", "4 c #5C6580", "5 c #86ADAA", "6 c #88B2A9", "7 c #8EB9B0", "8 c #92BDB4", "9 c #87B0A6", "0 c #5F7F84", "a c #2B434C", "b c #606C84", "c c #7CA89E", "d c #7FAEA1", "e c #7DAC9F", "f c #76A294", "g c #6F9B8E", "h c #5D877A", "i c #496E6C", "j c #2D484F", "k c #5D6980", "l c #87B4A5", "m c #8FC2AC", "n c #86B8A4", "o c #7BAC98", "p c #74A392", "q c #629182", "r c #4C786B", "s c #456F69", "t c #32504E", "u c #5D6983", "v c #82B7A7", "w c #86BEAA", "x c #83BAA3", "y c #85B9A2", "z c #84B89F", "A c #77AA92", "B c #699A83", "C c #52806B", "D c #417268", "E c #335351", "F c #5B6985", "G c #85B5B3", "H c #95CEBE", "I c #8DC6B3", "J c #86BFAC", "K c #81B8A5", "L c #84BAA7", "M c #86BAA8", "N c #7AAC98", "O c #6A9887", "P c #507F7D", "Q c #2E5055", "R c #5B6687", "S c #7FAFBB", "T c #82B7BB", "U c #7FB6B4", "V c #8AC2B8", "W c #8EC6B7", "X c #90C7B9", "Y c #93C8BD", "Z c #85B8AD", "` c #75A89A", " . c #71A194", ".. c #59898D", "+. c #264C57", "@. c #586288", "#. c #71A2BF", "$. c #7EB3CA", "%. c #83B8C8", "&. c #7EB3BE", "*. c #77ACB4", "=. c #77AEAF", "-. c #78AFA9", ";. c #78AEA6", ">. c #7DB1A9", ",. c #81B4AB", "'. c #79AAA7", "). c #558692", "!. c #214459", "~. c #57628A", "{. c #6D94C1", "]. c #78A8CC", "^. c #74A7C5", "/. c #76ABC5", "(. c #7BB1C6", "_. c #7AAFC0", ":. c #7EB2BE", "<. c #71A6AD", "[. c #6DA2A5", "}. c #649998", "|. c #558985", "1. c #4C7C7B", "2. c #44707C", "3. c #234356", "4. c #576289", "5. c #729FCE", "6. c #719FD2", "7. c #719FCD", "8. c #79AAD2", "9. c #74A8CA", "0. c #6CA2C1", "a. c #76AEC8", "b. c #7AB1C5", "c. c #7FB4C6", "d. c #75A9B7", "e. c #689BA4", "f. c #61949B", "g. c #4E808A", "h. c #356676", "i. c #204357", "j. c #5B6790", "k. c #6B97C7", "l. c #75A6D6", "m. c #78A9DB", "n. c #6E9CD2", "o. c #6C9BCC", "p. c #78A9D4", "q. c #6FA3C7", "r. c #6AA0C1", "s. c #6EA7C1", "t. c #78B2C7", "u. c #7CB3C6", "v. c #79ADBC", "w. c #73A5B0", "x. c #6898A2", "y. c #4C7888", "z. c #1E465B", "A. c #576189", "B. c #719CCD", "C. c #6C9DD1", "D. c #6B9CCE", "E. c #6FA1D2", "F. c #74A4DA", "G. c #6C9AD1", "H. c #6897CB", "I. c #78ABD7", "J. c #72A7CD", "K. c #69A0BF", "L. c #74ADC6", "M. c #82BBCA", "N. c #84BEC9", "O. c #6AA0AB", "P. c #4F7D8F", "Q. c #1A475F", "R. c #000000", "S. c #74AEBE", "T. c #78B1BF", "U. c #588C9D", "V. c #19485E", "W. c #FFFFFF", "X. c #FDFFFF", "Y. c #FCFFFF", "Z. c #ECFFFF", "`. c #F2FFFF", " + c #DFFFFF", ".+ c #B9DBDB", "++ c #88B3B3", "@+ c #D5FFFF", "#+ c #FBFFF4", "$+ c #FFFFE3", "%+ c #FFFFEC", "&+ c #EDFFCF", "*+ c #FFFFEA", "=+ c #FDFFE4", "-+ c #FAFFE5", ";+ c #EEFFE0", ">+ c #53784B", ",+ c #629AAC", "'+ c #5A91A2", ")+ c #4A7F99", "!+ c #1A4A63", "~+ c #AEAAAE", "{+ c #5D86A7", "]+ c #84B3D2", "^+ c #416F87", "/+ c #DBFFFF", "(+ c #9BD0B9", "_+ c #9ECCB2", ":+ c #B4D7BB", "<+ c #A8CE9F", "[+ c #9EC692", "}+ c #AAD192", "|+ c #A6CD8F", "1+ c #9AC28B", "2+ c #95BB8C", "3+ c #99C192", "4+ c #A2C79B", "5+ c #537950", "6+ c #68A1B4", "7+ c #4C8394", "8+ c #3B6F88", "9+ c #194963", "0+ c #608BAB", "a+ c #8DBADD", "b+ c #89B9D3", "c+ c #427187", "d+ c #D0FFFF", "e+ c #93C9B5", "f+ c #8FC5A3", "g+ c #93C2A9", "h+ c #9AC2AF", "i+ c #A7CBB2", "j+ c #ACCFB4", "k+ c #A7CBAE", "l+ c #90B697", "m+ c #8AB190", "n+ c #91B798", "o+ c #98BC9E", "p+ c #507458", "q+ c #77AEC6", "r+ c #6196AD", "s+ c #3E7091", "t+ c #184761", "u+ c #638FAD", "v+ c #83AFD6", "w+ c #8EBEDD", "x+ c #89B7D4", "y+ c #346476", "z+ c #91C7BC", "A+ c #9DD4B7", "B+ c #7FAB9B", "C+ c #96C2B5", "D+ c #8BB4A6", "E+ c #8BB2A2", "F+ c #96BBA9", "G+ c #496F5D", "H+ c #7EAFD3", "I+ c #74A7C3", "J+ c #457694", "K+ c #19475F", "L+ c #618EAA", "M+ c #79A3C9", "N+ c #88B4DA", "O+ c #83B3D1", "P+ c #78A6C3", "Q+ c #316276", "R+ c #CAF9FF", "S+ c #88BBBA", "T+ c #96CCB6", "U+ c #92C3B1", "V+ c #95C3BC", "W+ c #98C5BE", "X+ c #48756D", "Y+ c #5D88BA", "Z+ c #6590BE", "`+ c #446E98", " @ c #163A55", ".@ c #6692AE", "+@ c #81AECF", "@@ c #7AA5D0", "#@ c #80AED5", "$@ c #83B4D1", "%@ c #79A7C6", "&@ c #2D5E74", "*@ c #CDFCFF", "=@ c #84B7BE", "-@ c #95CDBF", ";@ c #95CAB9", ">@ c #8CBEAF", ",@ c #7BAA9D", "'@ c #75A298", ")@ c #275249", "!@ c #4D75A7", "~@ c #517AA8", "{@ c #335B86", "]@ c #152E54", "^@ c #6590AC", "/@ c #82AFCE", "(@ c #81ADD3", "_@ c #80ACD9", ":@ c #85B5DB", "<@ c #82B3D2", "[@ c #75A4C4", "}@ c #32627C", "|@ c #C4F3FF", "1@ c #8FBFCD", "2@ c #89BDC0", "3@ c #8CC2B7", "4@ c #97CCBE", "5@ c #93C6B5", "6@ c #91C3B1", "7@ c #95C6B5", "8@ c #98CAB9", "9@ c #4A7D6A", "0@ c #5D85B5", "a@ c #5178A6", "b@ c #365D87", "c@ c #6B96AD", "d@ c #84B0D0", "e@ c #80AECE", "f@ c #78A3CD", "g@ c #7DA9D6", "h@ c #86B6DD", "i@ c #82B3D4", "j@ c #79A8CA", "k@ c #386985", "l@ c #CEFFFF", "m@ c #7EADC4", "n@ c #88BEC1", "o@ c #8FC4B5", "p@ c #8BC1AE", "q@ c #8CBFA9", "r@ c #43765D", "s@ c #71A0C4", "t@ c #5D87B4", "u@ c #335A8B", "v@ c #173358", "w@ c #618D9F", "x@ c #87B2CE", "y@ c #82AFD0", "z@ c #7EACD0", "A@ c #729CCB", "B@ c #7AA7D5", "C@ c #85B5DE", "D@ c #80B1D5", "E@ c #83B3D7", "F@ c #346484", "G@ c #C5F8FF", "H@ c #7BA9C4", "I@ c #8EC1D4", "J@ c #87BBB8", "K@ c #7AB19E", "L@ c #87BEAC", "M@ c #3E7562", "N@ c #5D91AA", "O@ c #5F8EB1", "P@ c #3D6493", "Q@ c #163257", "R@ c #76A4B1", "S@ c #85B1C8", "T@ c #85B2D6", "U@ c #7BA9D1", "V@ c #729CCF", "W@ c #79A5D6", "X@ c #81B1DD", "Y@ c #77A9CE", "Z@ c #87B6DC", "`@ c #346488", " # c #BFF0FF", ".# c #74A3C1", "+# c #8AC1C5", "@# c #8DC2C2", "## c #85BABA", "$# c #9CD5C5", "%# c #90C9B7", "&# c #28614A", "*# c #4F809E", "=# c #3F6E89", "-# c #2F527C", ";# c #193056", "># c #65959F", ",# c #95C2D2", "'# c #88B5CF", ")# c #83B0D2", "!# c #84B1D8", "~# c #7AA7D3", "{# c #719BD0", "]# c #78A4D7", "^# c #77A6D5", "/# c #73A5CB", "(# c #81B0D9", "_# c #225279", ":# c #C9FAFF", "<# c #80B2D4", "[# c #79A6C8", "}# c #81B2CF", "|# c #76A9C1", "1# c #7CB0C2", "2# c #8AC0C8", "3# c #8ABFC3", "4# c #7FB4B5", "5# c #84BAB9", "6# c #91CABC", "7# c #96CFBF", "8# c #548E7D", "9# c #588AA9", "0# c #457393", "a# c #335C85", "b# c #152A54", "c# c #64949D", "d# c #8ABAC6", "e# c #8EBDCF", "f# c #8CB9D5", "g# c #81AED3", "h# c #7EABD6", "i# c #78A5D4", "j# c #6F99D0", "k# c #77A3D9", "l# c #709ED0", "m# c #73A4CC", "n# c #80B0D9", "o# c #265680", "p# c #C7F8FF", "q# c #71A2C6", "r# c #74A1CB", "s# c #719FC4", "t# c #86B6D5", "u# c #6FA2BC", "v# c #82B6CA", "w# c #8CC2CF", "x# c #82B7BE", "y# c #76ABAE", "z# c #82BBB7", "A# c #3D7569", "B# c #699DB5", "C# c #467591", "D# c #335B87", "E# c #142E54", "F# c #515551", "G# c #1C4857", "H# c #3D6D77", "I# c #3F6F7E", "J# c #3B697E", "K# c #3E6B8A", "L# c #335F87", "M# c #315E8B", "N# c #2B5789", "O# c #224C84", "P# c #2D5990", "Q# c #2B5A8E", "R# c #2F5F8B", "S# c #34638F", "T# c #001F49", "U# c #77A8D2", "V# c #2F5F87", "W# c #32628B", "X# c #1F4C75", "Y# c #24527B", "Z# c #386987", "`# c #1D516C", " $ c #346880", ".$ c #396F80", "+$ c #396F7A", "@$ c #3C707A", "#$ c #20555B", "$$ c #2F666A", "%$ c #679BB2", "&$ c #5C8E9F", "*$ c #346080", "=$ c #163155", "-$ c #42768C", ";$ c #5D8FA0", ">$ c #508190", ",$ c #1E4052", "'$ c #5B6589", ")$ c #73A2CE", "!$ c #6D9CCB", "~$ c #699BCC", "{$ c #6B98CA", "]$ c #5C8CBE", "^$ c #608ECC", "/$ c #6796D9", "($ c #5684CB", "_$ c #5887CE", ":$ c #5684D0", "<$ c #5583CF", "[$ c #4A75C9", "}$ c #5885DA", "|$ c #507FCF", "1$ c #5B8CD9", "2$ c #5A8CD7", "3$ c #4F7FCB", "4$ c #4D7ACA", "5$ c #4471C3", "6$ c #527FCA", "7$ c #5F8ECC", "8$ c #6FA1D5", "9$ c #7CB3D6", "0$ c #79B1C3", "a$ c #6FAAB3", "b$ c #7FB7C4", "c$ c #72A7BB", "d$ c #699EB5", "e$ c #508698", "f$ c #3E7481", "g$ c #407281", "h$ c #1B485D", "i$ c #5A668A", "j$ c #7CA4C7", "k$ c #85B4DA", "l$ c #7AA9D5", "m$ c #709ECF", "n$ c #6EA0D1", "o$ c #6A98CB", "p$ c #5988B9", "q$ c #5B8BC3", "r$ c #6897D8", "s$ c #5585C9", "t$ c #5483C9", "u$ c #5281CA", "v$ c #5482CC", "w$ c #4A76C4", "x$ c #5580D5", "y$ c #4F7CCF", "z$ c #5181CD", "A$ c #598AD5", "B$ c #5182CC", "C$ c #5483D1", "D$ c #4976C6", "E$ c #4B79C6", "F$ c #5482C2", "G$ c #6A99CF", "H$ c #75A9D1", "I$ c #80B7CD", "J$ c #71ABB2", "K$ c #71ABB0", "L$ c #82B8C3", "M$ c #71A8B7", "N$ c #70A7B6", "O$ c #49808A", "P$ c #2F6070", "Q$ c #1C495D", "R$ c #5B6587", "S$ c #79A3C2", "T$ c #80ADD1", "U$ c #87B6DD", "V$ c #7CABD8", "W$ c #709FD3", "X$ c #74A5D9", "Y$ c #709FD4", "Z$ c #5E8DBD", "`$ c #598ABE", " % c #6392D1", ".% c #5D8DCE", "+% c #4E7CC1", "@% c #5382C8", "#% c #4F7DC5", "$% c #4F7CC5", "%% c #4C77C8", "&% c #507CCE", "*% c #4878C3", "=% c #5484CD", "-% c #4F80C7", ";% c #4E7CCA", ">% c #4A77C5", ",% c #5280C5", "'% c #5C8BC3", ")% c #72A3CD", "!% c #7BB0CE", "~% c #78B1BB", "{% c #6DA8A8", "]% c #76AEB1", "^% c #83BBC0", "/% c #74ABB4", "(% c #689BA6", "_% c #31657B", ":% c #1D4558", "<% c #5D6884", "[% c #83B0C1", "}% c #78A7C5", "|% c #7BA9CE", "1% c #84B1DA", "2% c #7FAEDB", "3% c #6B99CE", "4% c #709FD5", "5% c #6D9ED2", "6% c #6896C8", "7% c #5D8EBF", "8% c #5B8BC5", "9% c #6899D9", "0% c #4F7EBF", "a% c #5382C3", "b% c #4B7BBF", "c% c #4F7DC1", "d% c #4A75C0", "e% c #5A85D5", "f% c #4A78C3", "g% c #4979BE", "h% c #5282C5", "i% c #4C7FBF", "j% c #5281C8", "k% c #4470BA", "l% c #4C79C0", "m% c #5481BC", "n% c #6797C5", "o% c #71A5C9", "p% c #80B7C9", "q% c #76B0AF", "r% c #70ACA6", "s% c #83BBB7", "t% c #79B0AF", "u% c #6A9EA6", "v% c #4A7B93", "w% c #193A54", "x% c #5D6984", "y% c #85B2B2", "z% c #87B6C3", "A% c #75A3C0", "B% c #719FC5", "C% c #7EAEDB", "D% c #6997CB", "E% c #6593CA", "F% c #6799CD", "G% c #6B9ACA", "H% c #6092BE", "I% c #5A8BC1", "J% c #6C9EDC", "K% c #5686C5", "L% c #5281C0", "M% c #5282C3", "N% c #4674B4", "O% c #4D79BC", "P% c #537EC9", "Q% c #5783CC", "R% c #4676B7", "S% c #4E7EBC", "T% c #4A7DB8", "U% c #4A7BB9", "V% c #4775B9", "W% c #4571B6", "X% c #5481BF", "Y% c #5989B7", "Z% c #6EA0C5", "`% c #75AAC1", " & c #7FB9BD", ".& c #73B0A7", "+& c #78B3AA", "@& c #89BFB9", "#& c #6FA7A8", "$& c #487D91", "%& c #1B4053", "&& c #596480", "*& c #7EABA9", "=& c #8BBFB8", "-& c #86B6C0", ";& c #74A2BB", ">& c #6897BC", ",& c #7CA8D4", "'& c #81AEDD", ")& c #6A98CA", "!& c #608CC4", "~& c #699BCF", "{& c #6F9FCE", "]& c #6595BE", "^& c #5F90BE", "/& c #6395CD", "(& c #6193CB", "_& c #4D7CB6", ":& c #5383BF", "<& c #4C7DBA", "[& c #5482C1", "}& c #4B76BE", "|& c #5E8AD0", "1& c #5380C1", "2& c #4778B1", "3& c #5788BF", "4& c #4478AB", "5& c #4A79B3", "6& c #4671B1", "7& c #4C78B6", "8& c #5583B3", "9& c #5F8EB5", "0& c #70A3BD", "a& c #7AB2BB", "b& c #7AB4AD", "c& c #6FAC9C", "d& c #80B8AD", "e& c #84B9B4", "f& c #528790", "g& c #1F434F", "h& c #667389", "i& c #7BA9A4", "j& c #7DADA9", "k& c #82B7AF", "l& c #86B8BD", "m& c #76A4B9", "n& c #6896B9", "o& c #6D99C7", "p& c #84AFE1", "q& c #719DD0", "r& c #5E88BF", "s& c #6F9ECF", "t& c #6C9EC9", "u& c #6A9ABF", "v& c #5B8DB2", "w& c #5F92C1", "x& c #6DA1D2", "y& c #4A7BAE", "z& c #5282B6", "A& c #4C7CB3", "B& c #5483BD", "C& c #5985CA", "D& c #5D8ACB", "E& c #4D7FB7", "F& c #5F91C4", "G& c #5589B6", "H& c #487AAA", "I& c #4C79B3", "J& c #4974B0", "K& c #5480B5", "L& c #527EA7", "M& c #6B9AB7", "N& c #6FA4B2", "O& c #7AB4B0", "P& c #72AD9A", "Q& c #71AC98", "R& c #87BCB0", "S& c #639593", "T& c #224953", "U& c #5B657E", "V& c #91BCAE", "W& c #90C5B6", "X& c #7EAEA9", "Y& c #76A8A1", "Z& c #87BBBA", "`& c #7AA7B9", " * c #6490B0", ".* c #5D87B7", "+* c #7BA4D6", "@* c #779FD3", "#* c #5782B5", "$* c #6D9CCA", "%* c #6CA0C5", "&* c #74A5C5", "** c #5486A5", "=* c #588BB1", "-* c #6EA3CE", ";* c #578CB6", ">* c #5182AE", ",* c #4C7EAD", "'* c #4E7DB3", ")* c #5481BD", "!* c #527EBE", "~* c #638FCE", "{* c #5383B9", "]* c #6598C1", "^* c #4B81A5", "/* c #5081B2", "(* c #4E7AB4", "_* c #547FB8", ":* c #5A84B2", "<* c #6593B4", "[* c #6EA1B4", "}* c #7DB5B9", "|* c #73AB99", "1* c #6CA78A", "2* c #659C8B", "3* c #649291", "4* c #274A4D", "5* c #606B7E", "6* c #7BA88E", "7* c #80AFA1", "8* c #9BCEBF", "9* c #7DAEAA", "0* c #6F9E99", "a* c #80B4AF", "b* c #7FABB7", "c* c #6089A6", "d* c #537DA7", "e* c #6188B8", "f* c #78A1D2", "g* c #5A85B5", "h* c #5E8BB7", "i* c #74A8C6", "j* c #76A8C2", "k* c #6495B1", "l* c #5587A8", "m* c #6598BC", "n* c #6AA1C3", "o* c #578AAC", "p* c #4D80A3", "q* c #4172A1", "r* c #4775AB", "s* c #4C78B1", "t* c #6591CB", "u* c #5E8AC0", "v* c #4579A2", "w* c #5F93B6", "x* c #4C819E", "y* c #417598", "z* c #4C7AAC", "A* c #4F79AF", "B* c #5B86AB", "C* c #6492AE", "D* c #6C9EAB", "E* c #7CB4AC", "F* c #6DA78B", "G* c #559071", "H* c #4B7A71", "I* c #304D4B", "J* c #586373", "K* c #88B08B", "L* c #81AC8E", "M* c #719E97", "N* c #8CBBB0", "O* c #79AAA4", "P* c #6C9996", "Q* c #6EA298", "R* c #81AFB3", "S* c #678FA4", "T* c #567DA0", "U* c #5378A4", "V* c #6C94C0", "W* c #6793BE", "X* c #4E7DA6", "Y* c #71A3C0", "Z* c #6396AD", "`* c #6D9DB6", " = c #4D7C9B", ".= c #5C8EB0", "+= c #689EC1", "@= c #5C91B0", "#= c #5284A5", "$= c #396C92", "%= c #2E5C8B", "&= c #4975A7", "*= c #648DC3", "== c #6A94C7", "-= c #4777A3", ";= c #4B7E9D", ">= c #578BA5", ",= c #376F88", "'= c #3B6C91", ")= c #4772A2", "!= c #517BA8", "~= c #608BB0", "{= c #56819C", "]= c #6693A5", "^= c #619396", "/= c #6DA390", "(= c #548D6A", "_= c #3D725C", ":= c #2A564B", "<= c #566174", "[= c #5D8764", "}= c #659163", "|= c #7EA788", "1= c #6D9492", "2= c #7DA3A9", "3= c #709F97", "4= c #558181", "5= c #46766B", "6= c #6A9993", "7= c #7095A3", "8= c #537591", "9= c #3F6387", "0= c #51749B", "a= c #739CC3", "b= c #507EA0", "c= c #5280A1", "d= c #4E8098", "e= c #4C7C93", "f= c #3F6D89", "g= c #437395", "h= c #5B8EAE", "i= c #568BA8", "j= c #50809D", "k= c #386B88", "l= c #134367", "m= c #2D5883", "n= c #567DB0", "o= c #5E85B7", "p= c #517EA7", "q= c #3E718C", "r= c #4D7F92", "s= c #376E80", "t= c #275A73", "u= c #39638A", "v= c #3C658F", "w= c #5982A6", "x= c #446D85", "y= c #4E7987", "z= c #4E7283", "A= c #5A8783", "B= c #4D7F62", "C= c #3C6F53", "D= c #285342", "E= c #525B70", "F= c #638A6D", "G= c #597F64", "H= c #497256", "I= c #628775", "J= c #597D7F", "K= c #5B788E", "L= c #597C86", "M= c #456F7B", "N= c #335B64", "O= c #497879", "P= c #5C7F8C", "Q= c #42647B", "R= c #395B7A", "S= c #335274", "T= c #4D7095", "U= c #3F6789", "V= c #2E5883", "W= c #366387", "X= c #2A5477", "Y= c #325C7D", "Z= c #2B5A80", "`= c #436E95", " - c #417293", ".- c #316382", "+- c #356384", "@- c #194669", "#- c #1F4774", "$- c #365C8D", "%- c #396192", "&- c #386491", "*- c #3A6988", "=- c #346278", "-- c #356779", ";- c #255973", ">- c #2A5679", ",- c #28517B", "'- c #345980", ")- c #3A5F7C", "!- c #355B71", "~- c #405E74", "{- c #3D5E6C", "]- c #486F66", "^- c #35624E", "/- c #204A2B", "(- c #4B5667", "_- c #3E6141", ":- c #325A3D", "<- c #335A3C", "[- c #34563C", "}- c #375445", "|- c #324B4B", "1- c #2A404F", "2- c #264753", "3- c #234756", "4- c #294553", "5- c #2C4954", "6- c #244254", "7- c #264153", "8- c #254055", "9- c #1F3B58", "0- c #1D3658", "a- c #1B3D58", "b- c #13395D", "c- c #152F55", "d- c #183E5A", "e- c #1D445B", "f- c #1F4459", "g- c #173E5B", "h- c #1B415A", "i- c #17445E", "j- c #204458", "k- c #1B4158", "l- c #183858", "m- c #153156", "n- c #143056", "o- c #143256", "p- c #153E5C", "q- c #204658", "r- c #23495B", "s- c #1F465B", "t- c #1D4156", "u- c #163851", "v- c #143551", "w- c #1F3E4D", "x- c #1D3E4C", "y- c #203745", "z- c #213644", "A- c #264441", "B- c #1F4335", "C- c #184520", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ $ % + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ & * = + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ - ; > , + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ' ) ! ~ { + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ] ^ / ( _ : + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ < [ } | 1 2 3 + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 4 5 6 7 8 9 0 a + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ b c d e f g h i j + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ k l m n o p q r s t + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ u v w x y z A B C D E + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ F G H I J K L M N O P Q + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ R S T U V W X Y Z ` ...+.+ ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @.#.$.%.&.*.=.-.;.>.,.'.).!.+ ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ~.{.].^./.(._.:.<.[.}.|.1.2.3.+ ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 4.5.6.7.8.9.0.a.b.c.d.e.f.g.h.i.+ ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.+ ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ A.B.C.D.E.F.G.H.I.J.K.L.t.M.N.O.P.Q.+ ", ". R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.S.T.U.V.+ ", ". W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.X.Y.Z.Z.`. +.+++W.@+#+$+%+$+&+*+*+=+-+;+>+R.,+'+)+!++ ", ". ~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+{+]+^+/+(+_+:+<+[+}+|+1+2+3+4+5+R.6+7+8+9++ ", ". ~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+0+a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+R.q+r+s+t++ ", ". ~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+u+v+w+x+y+d+z+A+W.W.B+C+D+W.W.E+F+G+R.H+I+J+K++ ", ". ~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+L+M+N+O+P+Q+R+S+T+W.W.W.U+W.W.W.V+W+X+R.Y+Z+`+ @+ ", ". ~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+.@+@@@#@$@%@&@*@=@-@;@W.W.W.W.W.>@,@'@)@R.!@~@{@]@+ ", ". ~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+^@/@(@_@:@<@[@}@|@1@2@3@4@W.W.W.5@6@7@8@9@R.0@a@b@ @+ ", ". ~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+c@d@e@f@g@h@i@j@k@l@m@:.n@W.W.W.W.W.o@p@q@r@R.s@t@u@v@+ ", ". ~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+w@x@y@z@A@B@C@D@E@F@G@H@I@W.W.W.J@W.W.W.K@L@M@R.N@O@P@Q@+ ", ". ~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+R@S@d@T@U@V@W@X@Y@Z@`@ #j@.#W.W.+#@###W.W.$#%#&#R.*#=#-#;#+ ", ". ~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+>#,#'#)#!#~#{#]#^#/#(#_#:#<#[#}#|#1#2#3#4#5#6#7#8#R.9#0#a#b#+ ", ". ~+~+~+~+~+~+~+~+~+~+~+~+~+~+~+c#d#e#f#g#h#i#j#k#l#m#n#o#p#q#r#s#t#u#v#w#x#T y#z#A#R.B#C#D#E#+ ", ". F#F#F#F#F#F#F#F#F#F#F#F#F#F#G#H#I#J#K#L#M#N#O#P#Q#R#S#T#U#V#W#X#Y#Z#`# $.$+$@$#$$$R.%$&$*$=$+ ", ". R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.-$;$>$,$+ ", ". @ @ @ @ @ @ @ @ @ @ @ @ '$g#)$!$~${$]$^$/$($_$:$<$[$}$|$1$2$3$4$5$6$7$8$9$0$a$b$c$d$e$f$g$h$+ ", ". @ @ @ @ @ @ @ @ @ @ @ i$j$k$l$m$n$o$p$q$r$s$t$u$v$w$x$y$z$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$Q$+ ", ". @ @ @ @ @ @ @ @ @ @ R$S$T$U$V$W$X$Y$Z$`$ %.%+%@%#%$%%%&%*%=%-%=%;%>%,%'%)%!%~%{%]%^%/%(%_%:%+ ", ". @ @ @ @ @ @ @ @ @ <%[%}%|%1%2%3%4%5%6%7%8%9%0%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v%w%+ ", ". @ @ @ @ @ @ @ @ x%y%z%A%B%h#C%D%E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W%X%Y%Z%`% &.&+&@&#&$&%&+ ", ". @ @ @ @ @ @ @ &&*&=&-&;&>&,&'&)&!&~&{&]&^&/&(&_&:&<&[&}&|&1&2&3&4&5&6&7&8&9&0&a&b&c&d&e&f&g&+ ", ". @ @ @ @ @ @ h&i&j&k&l&m&n&o&p&q&r&s&t&u&v&w&x&y&z&A&B&O%C&D&E&F&G&H&I&J&K&L&M&N&O&P&Q&R&S&T&+ ", ". @ @ @ @ @ U&V&W&X&Y&Z&`& *.*+*@*#*$*%*&***=*-*;*>*,*'*)*!*~*{*G&]*^*/*(*_*:*<*[*}*|*1*2*3*4*+ ", ". @ @ @ @ 5*6*7*8*9*0*a*b*c*d*e*f*g*h*i*j*k*l*m*n*o*p*q*r*s*t*u*v*w*x*y*z*A*.*B*C*D*E*F*G*H*I*+ ", ". @ @ @ J*K*L*M*N*O*P*Q*R*S*T*U*V*W*X*Y*Z*`* =.=+=@=#=$=%=&=*===-=;=>=,='=)=!=~={=]=^=/=(=_=:=+ ", ". @ @ <=[=}=|=1=2=3=4=5=6=7=8=9=0=a=b=c=d=e=f=g=h=i=j=k=l=m=n=o=p=q=r=s=t=u=v=w=x=y=z=A=B=C=D=+ ", ". @ E=F=G=H=I=J=K=L=M=N=O=P=Q=R=S=T=U=V=W=X=Y=Z=`= -.-+-@-#-$-%-&-*-=---;->-,-'-)-!-~-{-]-^-/-+ ", ". (-_-:-<-[-}-|-1-2-3-4-5-6-7-8-9-0-a-b-c-d-e-f-g-h-i-j-k-l-m-n-o-p-q-r-s-t-u-v-w-x-y-z-A-B-C-+ ", "+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + "}; ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/speed1.xpm��������������������������������������������������������0000644�0001750�0001750�00000001370�13431646202�015470� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "24 24 2 1", " c None", ". c #210839CE7BDE", " ", " ", " ", " ", " ", " ", " ", " ", " ", " . .. . ", " . .. .. ", " . .. ... ", " . .. .... ", " . .. ... ", " . .. .. ", " . .. . ", " ", " ", " ", " ", " ", " ", " ", " "}; ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/msty1.xpm���������������������������������������������������������0000644�0001750�0001750�00000005523�13431646202�015370� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "40 40 52 1", " c None", ". c #631863186318", "X c #000000000000", "o c #294A294A294A", "O c #084208420842", "+ c #210821082108", "@ c #18C618C618C6", "# c #FFFFEF7AB5AC", "$ c #FFFFE738B5AC", "% c #FFFFDEF6B5AC", "& c #5294294A0000", "* c #FFFFCE7239CE", "= c #FFFFC63039CE", "- c #FFFFBDEE39CE", "; c #FFFFB5AC39CE", ": c #FFFFAD6A39CE", "> c #FFFFA52839CE", ", c #FFFF9CE639CE", "< c #FFFF94A439CE", "1 c #FFFF8C6239CE", "2 c #7BDE318C0000", "3 c #529418C60000", "4 c #318C318C318C", "5 c #FFFF842039CE", "6 c #FFFF7BDE39CE", "7 c #FFFF739C39CE", "8 c #FFFF6B5A39CE", "9 c #7BDE18C60000", "0 c #529410840000", "q c #FFFF631839CE", "w c #FFFF5AD639CE", "e c #FFFF529439CE", "r c #7BDE08420000", "t c #529400000000", "y c #FFFF4A5239CE", "u c #FFFF421039CE", "i c #FFFF39CE39CE", "p c #FFFF39CE4210", "a c #FFFF39CE4A52", "s c #7BDE00000842", "d c #529400000842", "f c #FFFF39CE5294", "g c #FFFF39CE5AD6", "h c #FFFF39CE6318", "j c #7BDE000018C6", "k c #529400001084", "l c #FFFFD6B4B5AC", "z c #7BDE294A0000", "x c #7BDE21080000", "c c #7BDE10840000", "v c #7BDE00000000", "b c #7BDE00001084", " ", " .................................. ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXoooO ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXoo+O ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXoo@O ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXoo@O ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXoo@O ", " .ooooooooooooooooooooooooooooooooo+O ", " ###########################$%%%%%&oO ", " #******************=--;::>>,<<11234O ", " #************=--;::>>,<<11566788904O ", " #******=--;::>>,<<11566788qqwweertoO ", " #=--;::>>,<<11566788qqwweeyuiipasdoO ", " %>>,<<11566788qqwweeyuiipaaffgghjkoO ", " l22zzxxx999ccrrvvvvsssbbjjjjjjjjjkoO ", " ###########################$%%%%%&4O ", " #******************=--;::>>,<<11234O ", " #************=--;::>>,<<11566788904O ", " #******=--;::>>,<<11566788qqwweertoO ", " #=--;::>>,<<11566788qqwweeyuiipasdoO ", " %>>,<<11566788qqwweeyuiipaaffgghjkoO ", " l22zzxxx999ccrrvvvvssbbbjjjjjjjjjkoO ", " ###########################$%%%%%&4O ", " #******************=--;::>>,<<11234O ", " #************=--;::>>,<<11566788904O ", " #******=--;::>>,<<11566788qqwweertoO ", " #=--;::>>,<<11566788qqwweeyuiipasdoO ", " %>>,<<11566788qqwweeyuiipaaffgghjkoO ", " l22zzxxx999ccrrvvvvsssbbjjjjjjjjjkoO ", " ###########################$%%%%%&4O ", " #******************=--;::>>,<<11234O ", " #************=--;::>>,<<11566788904O ", " #******=--;::>>,<<11566788qqwweertoO ", " #=--;::>>,<<11566788qqwweeyuiipasdoO ", " %>>,<<11566788qqwweeyuiipaaffgghjkoO ", " l22zzxxx999ccrrvvvvssbbbjjjjjjjjjk+O ", " Xoo+@@@+oooooooooooooooooooooooooo+O ", " oo++++++++ooooooooooooooooooooo++@O ", " OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX ", " "}; �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/mousesettings.xpm�������������������������������������������������0000644�0001750�0001750�00000023515�13431646202�017225� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * mousesettings_xpm[] = { "48 48 325 2", " c None", ". c #2C2C2C", "+ c #FEFEFE", "@ c #8F8B8F", "# c #908C90", "$ c #908D90", "% c #918D91", "& c #928E92", "* c #938F93", "= c #949094", "- c #949194", "; c #A6A0A6", "> c #C0BEC0", ", c #9A979A", "' c #807B80", ") c #817D81", "! c #999599", "~ c #9A969A", "{ c #9B979B", "] c #9C989C", "^ c #9D999D", "/ c #9E9A9E", "( c #989498", "_ c #979397", ": c #969296", "< c #959195", "[ c #8F8C8F", "} c #908E90", "| c #918E91", "1 c #928F92", "2 c #939093", "3 c #949294", "4 c #959295", "5 c #A6A3A6", "6 c #C3C3C3", "7 c #8C8A8C", "8 c #7E7A7E", "9 c #979297", "0 c #9B989B", "a c #9C999C", "b c #9D9A9D", "c c #9E9B9E", "d c #999699", "e c #989598", "f c #979497", "g c #969396", "h c #898389", "i c #9B959B", "j c #A49EA4", "k c #A39DA3", "l c #8F8F8F", "m c #787578", "n c #646064", "o c #837E83", "p c #9D989D", "q c #B7B4B7", "r c #C0BDC0", "s c #C9C8C9", "t c #CFCECF", "u c #C6C6C6", "v c #8F898F", "w c #A39EA3", "x c #BAB8BA", "y c #BBBBBB", "z c #B1B1B1", "A c #B5B4B5", "B c #C8C6C8", "C c #E0E0E0", "D c #A4A4A4", "E c #D4D4D4", "F c #D8D8D8", "G c #DDDDDD", "H c #DBDBDB", "I c #535053", "J c #5B585B", "K c #7A747A", "L c #989298", "M c #918F91", "N c #959395", "O c #A19DA1", "P c #EFEFEF", "Q c #EEEEEE", "R c #ECECEC", "S c #EBEBEB", "T c #E1E1E1", "U c #D2D2D2", "V c #D7D7D7", "W c #848384", "X c #353235", "Y c #524D52", "Z c #999799", "` c #A19BA1", " . c #F4F4F4", ".. c #FAFAFA", "+. c #F1F1F1", "@. c #BEBEBE", "#. c #9B9B9B", "$. c #CECECE", "%. c #DADADA", "&. c #575557", "*. c #353035", "=. c #605B60", "-. c #8A868A", ";. c #958F95", ">. c #BDBDBD", ",. c #FFFFFF", "'. c #FBFBFB", "). c #F7F7F7", "!. c #F2F2F2", "~. c #F5F5F5", "{. c #9D9D9D", "]. c #C9C9C9", "^. c #CFCFCF", "/. c #A3A1A3", "(. c #2A292A", "_. c #413D41", ":. c #6D696D", "<. c #DEDDDE", "[. c #CBCBCB", "}. c #D1D1D1", "|. c #D5D5D5", "1. c #787778", "2. c #272427", "3. c #4F4A4F", "4. c #7D787D", "5. c #9E989E", "6. c #A09BA0", "7. c #F4F2F4", "8. c #ACACAC", "9. c #C4C4C4", "0. c #C8C8C8", "a. c #CCCCCC", "b. c #322F32", "c. c #5D585D", "d. c #C9C4C9", "e. c #F8F8F8", "f. c #E5E5E5", "g. c #A7A7A7", "h. c #B7B7B7", "i. c #818181", "j. c #232023", "k. c #403D40", "l. c #6F6A6F", "m. c #C4C0C4", "n. c #B8B8B8", "o. c #C0C0C0", "p. c #BABABA", "q. c #7E7D7E", "r. c #3E3D3E", "s. c #2F2A2F", "t. c #575257", "u. c #BBB7BB", "v. c #878787", "w. c #727272", "x. c #646364", "y. c #242124", "z. c #413E41", "A. c #757075", "B. c #9D979D", "C. c #E3E3E3", "D. c #AFAFAF", "E. c #848484", "F. c #898789", "G. c #201D20", "H. c #333033", "I. c #615D61", "J. c #928C92", "K. c #ECEBEC", "L. c #8A8A8A", "M. c #A6A6A6", "N. c #C1C1C1", "O. c #7B7B7B", "P. c #7E7E7E", "Q. c #919191", "R. c #363536", "S. c #292629", "T. c #4D494D", "U. c #9F9B9F", "V. c #D7D4D7", "W. c #E8E8E8", "X. c #B2B2B2", "Y. c #A1A1A1", "Z. c #787878", "`. c #7D7D7D", " + c #ABABAB", ".+ c #A0A0A0", "++ c #636163", "@+ c #3E3B3E", "#+ c #A09CA0", "$+ c #989698", "%+ c #9D9B9D", "&+ c #9A9A9A", "*+ c #838383", "=+ c #A3A3A3", "-+ c #929292", ";+ c #777577", ">+ c #1B191B", ",+ c #948F94", "'+ c #A09DA0", ")+ c #9F9C9F", "!+ c #989898", "~+ c #E9E8E9", "{+ c #6A6A6A", "]+ c #B4B4B4", "^+ c #292729", "/+ c #2C292C", "(+ c #555255", "_+ c #898489", ":+ c #E0DDE0", "<+ c #A9A9A9", "[+ c #242324", "}+ c #474347", "|+ c #C8C3C8", "1+ c #5A5A5A", "2+ c #7B7A7B", "3+ c #1D191D", "4+ c #3A363A", "5+ c #6C676C", "6+ c #9A949A", "7+ c #A29EA2", "8+ c #9F9D9F", "9+ c #A19EA1", "0+ c #DEDEDE", "a+ c #1B181B", "b+ c #585558", "c+ c #8C868C", "d+ c #EEECEE", "e+ c #B5B5B5", "f+ c #262326", "g+ c #7B777B", "h+ c #A09AA0", "i+ c #8E8A8E", "j+ c #A39FA3", "k+ c #B2AFB2", "l+ c #E6E6E6", "m+ c #5B5B5B", "n+ c #494949", "o+ c #868486", "p+ c #383338", "q+ c #676367", "r+ c #979197", "s+ c #606060", "t+ c #444444", "u+ c #323032", "v+ c #2C272C", "w+ c #555055", "x+ c #C6C3C6", "y+ c #636363", "z+ c #535353", "A+ c #414041", "B+ c #444044", "C+ c #7A757A", "D+ c #A29FA2", "E+ c #EBE9EB", "F+ c #757575", "G+ c #9E9E9E", "H+ c #6A666A", "I+ c #A6A1A6", "J+ c #F2F1F2", "K+ c #707070", "L+ c #2F2C2F", "M+ c #D4D1D4", "N+ c #504C50", "O+ c #868186", "P+ c #464346", "Q+ c #E6E5E6", "R+ c #979797", "S+ c #959595", "T+ c #4C4A4C", "U+ c #211E21", "V+ c #3D3A3D", "W+ c #726D72", "X+ c #B8B4B8", "Y+ c #6C6A6C", "Z+ c #1E1B1E", "`+ c #363336", " @ c #696469", ".@ c #DDDADD", "+@ c #949494", "@@ c #302D30", "#@ c #948E94", "$@ c #8E8E8E", "%@ c #2D2A2D", "&@ c #8E898E", "*@ c #D2CFD2", "=@ c #898989", "-@ c #8C8C8C", ";@ c #524F52", ">@ c #E8E6E8", ",@ c #868086", "'@ c #BDB8BD", ")@ c #4A464A", "!@ c #837D83", "~@ c #E5E1E5", "{@ c #808080", "]@ c #161516", "^@ c #494649", "/@ c #868686", "(@ c #747474", "_@ c #7A7A7A", ":@ c #191819", "<@ c #C3C0C3", "[@ c #848084", "}@ c #646464", "|@ c #666666", "1@ c #807E80", "2@ c #2A272A", "3@ c #534F53", "4@ c #E9E9E9", "5@ c #666466", "6@ c #8F8A8F", "7@ c #6C6C6C", "8@ c #555555", "9@ c #3E3A3E", "0@ c #575757", "a@ c #5A585A", "b@ c #212021", "c@ c #B4B2B4", "d@ c #696969", "e@ c #7D7B7D", "f@ c #353335", "g@ c #ABA7AB", "h@ c #3B363B", "i@ c #434043", "j@ c #4C494C", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + ", ". @ @ # $ % & * * = - ; > , ' ) ! ! ~ { { ] ^ / / ^ ^ ] { { ~ ! ! ( _ _ : < - = * * & % $ # @ + ", ". [ [ $ } | 1 2 2 - 3 4 5 6 7 8 9 0 , 0 0 a b b c b b a 0 0 , d d e f f g 4 3 - 2 2 1 | } $ [ + ", ". [ # % | & * 2 = < 4 : ; > , ' ) h i 0 ] ^ / j j k { { { ] { ~ ~ ! ( f _ : 4 < = 2 * & | % # + ", ". $ % & 1 * = - < : g _ ( e 6 l m n o p ^ q r s t u c h v i { { { ~ ! e ( _ g : < - = * 1 & % + ", ". | & * 2 = < 4 : _ f ( ! w x y z A B C D E E F G H y I J K L ] ] { ~ d ! ( f _ : 4 < = 2 * & + ", ". M 1 2 2 - 4 N g f f e O e E P Q R S T T U U E F G V W X Y 8 a a 0 , Z d e f f g N 4 - 2 2 1 + ", ". 1 * 2 = < : g _ ( ` ! T ..... .Q +.R @.#.$.$.U %.C u &.*.=.-.] ] { , ~ ! ( ( _ g : < = 2 * + ", ". * = - < : g _ _ ;.B S >.,.'.).!. .~.!.6 {.u ].^.U H %./.(._.:.;.{ ] { { ~ ! ! ( _ g : < - = + ", ". = < 4 : _ f _ w <.,.,.T ~. .!.P +.~. .+.T >.u [.}.|.%.s 1.2.3.4.5.^ ] ] { ~ ~ ! ( f _ : 4 < + ", ". = < 4 : _ f 6.7.,.,.,.,.>.,.'.+.!.~.~. .@.8.9.0.a.U |.^.z &.b.c.-.] ] ] { ~ ~ ! ( f _ : 4 < + ", ". < : g _ ( e d.,.,.,.,.,.F ,.,.P .+.).e.8.f.g.9.[.}.U ^.h.i.j.k.l.L ^ a ] { , ~ ! e ( _ g : + ", ". : g _ ( e d m.,.,.,.,.,.,.n.,.!.+.+...'.~.o.{.u 0.a.a.[.p.q.r.s.t.h b b ^ ] 0 { ~ d e ( _ g + ", ". _ f ( ! d ~ u.,.,.,.,.,.,.v.,.e.P . .....8.].[.u ].0.6 g.w.x.y.z.A.B.c / ^ a ] { ~ d ! ( f + ", ". _ f ( ! d ~ { ,.,.,.,.,.,.~.H ,. .!.~.'.'.Q C.D.].0.o.8.w.E.F.G.H.I.J./ / ^ a ] { ~ d ! ( f + ", ". ( e ! ~ , { ; K.,.,.,.,.,.,.L.,.~.P .).~.!.M.n.$.0.N.O.P.{.Q.R.S.T.o U.U./ b ^ ] { , ~ ! e + ", ". e d ~ { 0 ] ^ V.,.,.,.,.,.,.y W.,.!. . .~.Q V X.Y.u Z.`. +.+l ++G.@+A.p #+U./ b ^ ] 0 { ~ d + ", ". $+d , 0 0 a b %+,.,.,.,.,.,.,.&+,.,.e. .+.R C.p.g.i.*+D =+.+-+;+>+*.n ,+'+)+c %+b a 0 0 , d + ", ". d ~ { 0 ] ^ / c ,.,.,.,.,.,.,.!+P ,...!.Q ~+H {.{+!+]+8.D &+#.l ^+/+(+_+#+#+U.c / ^ ] 0 { ~ + ", ". , { ] a ^ / U.j :+,.,.,.,.,.,.^.N.,.'.).S u <+&+y u z +=+.+.+&+r.[+}+4.6.O #+)+U./ ^ a ] { + ", ". 0 ] ^ b / U.)+'+|+,.,.,.,.,.,.,.1+~+C.].>.u [.$.0.o.z 8.=+.+Y..+2+3+4+5+6+7+O '+)+U./ b ^ ] + ", ". 0 a b %+c )+8+'+9+,.,.~+G Q G %.0.$.0+0+C.C %.a.6 >.]+ +M.Y.Y.Y.Q.a+s.b+c+O 9+'+8+)+c %+b a + ", ". ] ^ / c U.#+'+O 7+d+,.,.,.,.,.,.,.e.Q S C.0.D 8.M.y e+8.M.Y.Y.g.g.++f+}+g+h+7+O '+#+U.c / ^ + ", ". i+/ c U.#+O 9+7+j+k+,.,.,.,.,.,.,. .R l+&+m+n+M.p.e+p.z <+.+.+M.g.o+G.p+q+r+7+7+9+O #+U.c / + ", ". i+^ / c U.#+'+O 7+6+,.,.,.,.,.,.,.+.R U s+t+n+M.C.>.p.X.<+.+Y.Y. +D u+v+w+_+7+O '+#+U.c / ^ + ", ". i+a b %+c )+8+'+9+j x+,.,.,.,.,.,.!.R %.y+z+D 0+l+=+p.X.<+Y..+D +<+A+y.B+C+6.'+8+)+c %+b a + ", ". i+] ^ b / U.)+'+O 7+D+,.,.,.,.,.,.~.R E+L.m+6 +.[.F+ +]+g.G+.+=+ + +q.j.p+H+L '+)+U./ b ^ ] + ", ". i+{ ] a ^ / U.)+#+O I+J+,.,.,.,.,.'.Q S >.K+]+H y D.n.X.M.#.G+=+ + +7 f+L+J v )+U./ ^ a ] { + ", ". i+~ { 0 ] ^ / c U.#+I+M+,.,.,.,.,.,. .R C o.^.|.$.9.>.X.M.!+&+=+<+<+{./+S.N+O+j / ^ ] 0 { ~ + ", ". i+d , 0 0 a b %+c )+'+{ ,.,.,.,.,.,.,.!.R W.T %.}.0.@.D.M.!+!+.+g. +=+R.y.P+4.` b a 0 0 , d + ", ". i+d ~ { 0 ] ^ b / U.#+I+Q+,.,.,.,.,.,.e.!.S l+%.U 0.>.D.M.R+S+{.D +g.T+U+V+W+B.^ ] 0 { ~ d + ", ". i+e ! ~ , { ] ^ b / U.)+X+,.,.,.,.,.,.,.).R ~+H }.[.N.X.g.R+Q.{.=+ +<+Y+Z+`+ @L ] { , ~ ! e + ", ". i+f ( ! d ~ { ] a ^ / c k .@,.,.,.,.,.,.,.P E+f.F $.9.e+M.S+l +@.+M.<+2+3+@@=.#@{ ~ d ! ( f + ", ". i+f ( ! d ~ { ] a ^ / c U.#+,.,.,.,.,.,.,.~.Q W.G |.].p.M.-+$@$@#..+M.E.a+%@b+&@~ ~ d ! ( f + ", ". i+g _ ( e d ~ { 0 ] ^ b / U.*@,.,.,.,.,.,...+.E+C E ].p.D $@=@-@-+G+M.o+[+S.;@h d d e ( _ g + ", ". i+: g _ ( e ! ~ , { ] a ^ / 6.>@,.,.,.,.,.'.!.S T V [.n.=+-@v.L.l !+=+v.y.S.3.,@e e ( _ g : + ", ". i+< 4 : _ f ( ! ~ ~ { ] ] ^ / '@,.,.,.,.,.,.~.R C.F [.n.Y.=@i.i.=@-@#.*+G.f+)@!@f f _ : 4 < + ", ". i+< 4 : _ f ( ! ~ ~ { ] ] ^ / b ~@,.,.,.,.,.~.R l+%.a.h..+=@{@O.i.v.R+E.]@f+^@' f f _ : 4 < + ", ". i+= - < : g _ ( ! ! ~ { { ] ^ b / ,.,.,.,.,.~.Q l+V [.]+G+/@`.(@_@/@Q.P.:@f+)@!@g g : < - = + ", ". i+* 2 = < : g _ ( ( ! ~ , { ] a a <@,.,.,.,.e.P l+%.a.n.{.E.Z.K+w.P.-@P.3+S.T.[@: : < = 2 * + ", ". i+1 2 2 - 4 N g f f e d Z , 0 a a h+~@,.,.,.'.!.W.%.a.p.{.i.F+}@|@O.=@1@>+2@3@h 4 4 - 2 2 1 + ", ". i+& * 2 = < 4 : _ f ( ! d ~ { ] ] ^ ] J+,.,.'. .4@%.a.n.G+{@w.1+y+Z.&+5@Z+@@c.6@< < = 2 * & + ", ". i+% & 1 * = - < : g _ ( e ! ~ { { ] ] I+e.,.,.!.4@%.a.h.&+O.7@8@m+w.o+%@y.9@:.L - = * 1 & % + ", ". i+# % | & * 2 = < 4 : _ f ( ! ~ ~ { ] 0 <@K.'. .4@H a.e++@_@}@0@}@a@f+b@`+J O+2 2 * & | % # + ", ". i+[ $ } | 1 2 2 - 3 4 g f f e d d , 0 0 a < c@+.W.%.[.z Q.P.d@y+i.]@U+b.t.' 2 2 2 1 | } $ [ + ", ". i+@ # $ % & * * = - < : _ _ ( ! ! ~ { { ] ^ 6+c B F 9.8.$@e@i.(@f@2.*.Y g+= = * * & % $ # @ + ", ". i+i+i+i+i+i+i+i+i+i+i+i+i+i+i+i+i+i+i+i+i+i+i+i+6@&@g@3 ^@P+z.h@i@j@=.g+i+i+i+i+i+i+i+i+i+i++ ", "+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + "}; �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/dockclipdrawersection.xpm�����������������������������������������0000644�0001750�0001750�00000021410�13431646202�020666� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * dockclipdrawersection_xpm[] = { "48 48 256 2", " c #000100", ". c #000609", "+ c #030601", "@ c #0B080D", "# c #070A06", "$ c #080E10", "% c #110E12", "& c #131114", "* c #0E1315", "= c #121311", "- c #161417", "; c #18171A", "> c #191A21", ", c #1C1A1D", "' c #1C1C24", ") c #1E1F26", "! c #232124", "~ c #202426", "{ c #222421", "] c #22232B", "^ c #252427", "/ c #25252D", "( c #27282F", "_ c #29282B", ": c #2B2B33", "< c #2B2D2A", "[ c #2D2E36", "} c #303038", "| c #323034", "1 c #2F3335", "2 c #34353D", "3 c #373538", "4 c #383941", "5 c #3C3A3D", "6 c #393D4A", "7 c #3D3E46", "8 c #403E41", "9 c #42424B", "0 c #3F4350", "a c #424441", "b c #454346", "c c #46464F", "d c #464845", "e c #4A484B", "f c #434A51", "g c #484951", "h c #4D4B4F", "i c #4D4D56", "j c #4B4E5C", "k c #505059", "l c #515351", "m c #53545D", "n c #525563", "o c #6C5612", "p c #4F575E", "q c #575760", "r c #5A585C", "s c #6F591D", "t c #6C5B16", "u c #5D5B59", "v c #5B5B64", "w c #585C6A", "x c #725D20", "y c #5F5D61", "z c #5B5F6C", "A c #72611F", "B c #606069", "C c #5D616F", "D c #5E627B", "E c #5F6371", "F c #7A6327", "G c #646563", "H c #64646D", "I c #5E666D", "J c #5E6578", "K c #616668", "L c #616572", "M c #7C6529", "N c #676568", "O c #6A646E", "P c #636774", "Q c #676770", "R c #656876", "S c #666983", "T c #676B79", "U c #816D19", "V c #72696F", "W c #726C57", "X c #706A74", "Y c #696D70", "Z c #6B6C75", "` c #6F6C70", " . c #7D6E3B", ".. c #6A6E7C", "+. c #837024", "@. c #6B6F89", "#. c #6D707F", "$. c #70717A", "%. c #887320", "&. c #6E718C", "*. c #797076", "=. c #747276", "-. c #927503", ";. c #8B7519", ">. c #87742F", ",. c #6F7381", "'. c #7D7367", "). c #767382", "!. c #717583", "~. c #6F768A", "{. c #8D7825", "]. c #78767A", "^. c #737785", "/. c #7A7772", "(. c #8D792D", "_. c #8C7933", ":. c #757988", "<. c #7B797D", "[. c #747B8F", "}. c #7D798A", "|. c #807984", "1. c #7A7B84", "2. c #787C8A", "3. c #837A80", "4. c #977C32", "5. c #877986", "6. c #917E3F", "7. c #777E92", "8. c #7A7E8C", "9. c #807D8D", "0. c #877D7A", "a. c #7C808F", "b. c #837F90", "c. c #7B8296", "d. c #7E8291", "e. c #887F94", "f. c #98843E", "g. c #90826B", "h. c #9E8339", "i. c #828297", "j. c #898471", "k. c #9D862C", "l. c #A38525", "m. c #818593", "n. c #A28534", "o. c #8D8489", "p. c #85868F", "q. c #85859A", "r. c #A5872F", "s. c #8B8590", "t. c #838796", "u. c #918585", "v. c #8D8875", "w. c #8A8697", "x. c #9D884E", "y. c #868A99", "z. c #8C8993", "A. c #AD8932", "B. c #8C8A8E", "C. c #8A8A9F", "D. c #A58D33", "E. c #AB8C2C", "F. c #928C79", "G. c #858CA0", "H. c #AA8C34", "I. c #A58B4D", "J. c #9089A1", "K. c #A58E3B", "L. c #898D9C", "M. c #AC8E3D", "N. c #A99036", "O. c #938D98", "P. c #8B8F9E", "Q. c #9B8E7D", "R. c #8E8EA4", "S. c #AE9037", "T. c #B09131", "U. c #AB9145", "V. c #8D91A0", "W. c #AC9331", "X. c #9390A0", "Y. c #8F9396", "Z. c #8F93A2", "`. c #AE953B", " + c #9592A3", ".+ c #B3943C", "++ c #A19571", "@+ c #9195A4", "#+ c #A49194", "$+ c #9B94A0", "%+ c #9B93AB", "&+ c #B1983E", "*+ c #9497A6", "=+ c #9996A6", "-+ c #979996", ";+ c #9798A2", ">+ c #B5984D", ",+ c #B09A53", "'+ c #9D99AA", ")+ c #979BAA", "!+ c #A098B0", "~+ c #BC9C43", "{+ c #9A9FA1", "]+ c #BBA03F", "^+ c #C2A141", "/+ c #9EA2B1", "(+ c #AD9EB8", "_+ c #ACA2A8", ":+ c #AFA1AF", "<+ c #B9A66E", "[+ c #A9A7AB", "}+ c #A9ABA8", "|+ c #B7A9B6", "1+ c #B2ABB6", "2+ c #AFACBD", "3+ c #B0AEB2", "4+ c #BCABB3", "5+ c #C7B068", "6+ c #BDAEC8", "7+ c #CBB46B", "8+ c #BBB1B8", "9+ c #D3B56E", "0+ c #D3B769", "a+ c #CFB86F", "b+ c #B5BABD", "c+ c #B8BAB7", "d+ c #BFBDC1", "e+ c #BFBCCD", "f+ c #BEC1BD", "g+ c #C6C8C5", "h+ c #C6CCCE", "i+ c #E0CD7B", "j+ c #D0CDD1", "k+ c #D2D0D4", "l+ c #D6D4D8", "m+ c #D7D8E2", "n+ c #DBD8DD", "o+ c #DADCD9", "p+ c #D8DDE0", "q+ c #DCDDE7", "r+ c #F4E08D", "s+ c #E1E2EC", "t+ c #E3E5E1", "u+ c #E8E5EA", "v+ c #E5E6F0", "w+ c #ECE9EE", "x+ c #E9EAF4", "y+ c #EFEDF1", "z+ c #EDEEF8", "A+ c #F0F2EF", "B+ c #F4F1F6", "C+ c #F2F3FD", "D+ c #F8F5FA", "E+ c #FBF8FD", "F+ c #FCFEFB", "G+ c #FEFFFC", "+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ", "+ D D D D D D D D D D D D D D D D D D D D D D D E+B+B+B+y+y+z+y+y+y+x+x+x+w+w+u+u+u+s+s+s+s+[+G+", "+ D D D D D D D D D D D D D D D D D D D D D D D B+=+=+*+*+ +V.P.L.L.y.y.t.m.m.d.a.8.2.:.:.^.} G+", "+ D D D D D D D D D D D D D D D D D D D D D D D B+'+)+)+'+*+*+Z.V.P.L.L.y.y.t.m.m.d.a.8.2.2.2 G+", "+ D D D D D D D D D D D D D D D D D D D D D D D z+*+)+*+*+*+Z.*+Z.1.Z Z Z $.y.m.d.a.8.2.2.2.2 G+", "+ D D D D D D D D D D D D D D D D D D D D D D D z+=+*+*+*+Z.=+K @ # . . . + = ^.m.8.2.:.:.^.} G+", "+ D D D D D D D D D D D D D D D D D D D D D D D y+*+*+*+V.P._ + + + + + + + + + 4 #.#.,.^.^.} G+", "+ D D D D D D D D D D D D D D D D D D D D D D D y+ +*+Z./+, + + + + + + + + /.f+g+3 $ 2 !.!.} G+", "+ D D D D D D D D D D D D D D D D D D D D D D D y+X.Z.*+; + + + + + + + + + -+G+G+G+% _ !.,.} G+", "+ D D D D D D D D D D D D D D D D D D D D D D D y+P.V.2.@ + + + + + + + + + -+G+G+G+3+! ,.,.} G+", "+ D D D D D D D D D D D D D D D D D D D D D D D y+L.P.B + + + + + + + + + + -+G+G+G+o+5 #.#.[ G+", "+ D D D D D D D D D D D D D D D D D D D D D D D x+L.L.B + + + + + + + + + + -+G+G+G+A+y #...: G+", "+ D D D D D D D D D D D D D D D D D D D D D D D x+L.L.B + + + + % b d a l d f+G+G+G+A+y ....: G+", "+ D D D D D D D D D D D D D D D D D D D D D D D w+y.y.B + + + + = t+G+G+G+G+G+G+G+G+A+r ..T : G+", "+ D D D D D D D D D D D D D D D D D D D D D D D w+t.y.v + + + + = o+G+G+G+G+G+G+G+G+o+3 R R : G+", "+ D D D D D D D D D D D D D D D D D D D D D D D u+m.t.1.$ + + + = o+G+G+G+G+G+G+G+G+g+> R R ( G+", "+ D D D D D D D D D D D D D D D D D D D D D D D u+m.m.y.c + + + = o+G+G+G+G+G+G+G+D+= ~ R L ( G+", "+ D D D D D D D D D D D D D D D D D D D D D D D u+d.m.H ^ . l a l t+G+G+G+G+G+G+G+1 + ^ L E ( G+", "+ D D D D D D D D D D D D D D D D D D D D D D D s+a.d.q + + G t+G+G+G+G+G+G+G+p+b + + ! E C / G+", "+ D D D D D D D D D D D D D D D D D D D D D D D s+8.a.m + + + + u }+g+G+o+c+u # + + + ) z z / G+", "+ D D D D D D D D D D D D D D D D D D D D D D D s+2.8.,.q q q m k g c 7 9 c g g g c c j z z / G+", "+ D D D D D D D D D D D D D D D D D D D D D D D s+2.2.2.2.:.^.^.,.,.,.#.....R R P L E z z z ] G+", "+ D D D D D D D D D D D D D D D D D D D D D D D s+:.2.:.:.!.!.,.#.#.....T R R L E C z z w w ] G+", "+ &.&.&.&.&.&.&.&.&.&.&.&.&.@.@.&.@.@.@.@.@.@.S Y.} 2 } } } } } } } : : : : : ( ( ( ( / / ] ) G+", "+ D+s+s+s+s+q+q+q+q+q+q+m+m+m+b+m+m+m+m+m+m+m+B.B+n+n+n+n+n+n+n+l+l+l+l+l+l+k+k+j+j+j+j+j+j+{+G+", "+ B+=+)+'+*+Z.=+Z.V.P.L.L.y.t.V.h 2.a.E z z R ( D+'+'+)+'+*+=+Z.V.P.L.L.y.y.t.m.m.d.a.8.2.2.2 G+", "+ B+=+'+'+,.@ H Z.V.P.L.L.y.y.t.y.q 2.z . + | ( C+)+'+)+*+*+=+Z.V.P.L.L.y.y.t.m.m.d.a.8.2.2.2 G+", "+ B+=+)+=+y.t.i V.P.L.y.y.t.m.m.d.m.5 2.L + 3 / C+'+)+*+=+Z.Z.V.P.L.L.y.t.t.m.d.d.a.8.2.2.:.2 G+", "+ B+Z.*+=+P.9 t.P.L.y.y.t.m.m.d.a.8.m.7 #.E 4 / C+*+*+=+Z.Z.R.P.Q.Q.F.v.v.v.v.j.j.j.j.1.:.:.} G+", "+ y+X.*+Z.Z.Z.P.L.y.y.t.m.m.d.a.w.s.3.<.| ^.,.] C+=+*+Z.Z.R.++>+.+T.E.E.l.H.H.H.E.T.f.<.^.^.} G+", "+ z+X.*+V.V.P.L.y.y.t.m.m.d.J.(+o.I v ].o.! ..] C+Z.*+Z.R.0+a+7+7+5+7+5+5+5+5+5+5+h.6.].!.!.} G+", "+ z+P.Z.P.P.L.y.y.t.m.m.C.3.%+2+1+=.v B y ^.4 ' C+V.Z.V.R.a+^+^+^+^+^+]+]+]+^+~+A 4._.].,.,.} G+", "+ z+L.V.P.L.y.y.t.m.m.9.e.6+f 8 c V B Z #.,.!.. C+P.V.P.G.a+~+~+~+~+~+&+&+&+`..+t (._.=.#.#.} G+", "+ z+y.P.L.y.y.t.t.w.|.|+H b 8 k H O q $.v #.#.] z+L.P.a.q.a+~+~+`.r.H.N.E.,+`.`.t {._.=.#.#.[ G+", "+ x+y.P.y.y.t.m.:.|+:+v 8 9 B #.$.}.q.p m ....) z+L.*+< [.a+~+~+&+H.i+r+N.>+`.H.t (.>.=.....: G+", "+ x+t.L.y.t.d.=+_+|.h 8 i Q ,.2.Z 9.r i q ....) z+V.< < [.a+~+~+`.r.0+9++.,+N.H.t %.+.` ....: G+", "+ w+t.y.t.b.8+O.|.8 b v ..,.}.e.*.q 8 k B T T ' z+L.$.{ [.a+~+&+.+U.>+6.x.<+E.D.t %.U Y R R : G+", "+ u+m.t.;+u.1+k 8 h Q ,.,.!+5.).c 8 i B R R R ' z+t.y.Q ~.7+~+&+&+`.`.W.S.H.N.N.t U +.` R R : G+", "+ d+,.m.4+O.c 9 q $...t.:+B X 7 9 q Q R R R R > x+t.t.m.c.7+M.K.K.D.k.k.n.k.k.k.t %.+.` R R ( G+", "+ w+4 P.o.B b B ,.$.e+O s.g 8 i B R R R R P P > x+m.t.d.i.<+M F F F x s s s o o o %.+.N P L ( G+", "+ u+)+: ).0.m Q P.$+s.H 8 9 q R R R R R L L L > x+d.m.d.7..+U.I.I.x.A.h.l._.6.(.-.;. .J L L ( G+", "+ u+,.L.k $.#+_+X.].i 8 i B R R R R T L E E C > v+a.d.8.8.g.0.^.!.!./.=.'.....R W W J E C C / G+", "+ v+6 L L./ |._+N 8 b q H ....R R R , R C z C > v+8.a.8.2.:.^.!.!.,.#.#.....R R R L E C z z / G+", "+ s+0 + j L.g i i 5 4 + ^ B 2 k } _ . c 7 c c $ v+2.8.2.:.^.!.!.,.#.#.....R R R L E C z z z / G+", "+ s+0 + + n :.7 :.,.* z , w - : + #.$ * z ] + % v+2.2.2.:.^.!.,.,.#.....T R R L L E z z w w ] G+", "+ u+2.z.p.p.8.y.2 C B ,.R #.q R k R j E c c 9 @ x+8.a.8.2.:.:.^.!.,.#.#.....R R P L E z z z ] G+", "+ f+; ; ; ; ; - , $ & - - - - & & & % % % % $ @ h+; , ; ; ; ; - - - - - - & & * & % % % % % . G+", "+ G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+"}; ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/msty3.xpm���������������������������������������������������������0000644�0001750�0001750�00000005746�13431646202�015401� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "40 40 59 1", " c None", ". c #631863186318", "X c #000000000000", "o c #294A294A294A", "O c #084208420842", "+ c #210821082108", "@ c #18C618C618C6", "# c #FFFFFFFFB5AC", "$ c #FFFFF7BCB5AC", "% c #FFFFEF7AB5AC", "& c #FFFFE738B5AC", "* c #FFFFDEF6B5AC", "= c #FFFFD6B4B5AC", "- c #529421080000", "; c #FFFFF7BC39CE", ": c #FFFFEF7A39CE", "> c #FFFFE73839CE", ", c #FFFFDEF639CE", "< c #FFFFD6B439CE", "1 c #FFFFCE7239CE", "2 c #FFFFC63039CE", "3 c #FFFFBDEE39CE", "4 c #FFFFB5AC39CE", "5 c #FFFFAD6A39CE", "6 c #FFFFA52839CE", "7 c #FFFF9CE639CE", "8 c #FFFF94A439CE", "9 c #FFFF8C6239CE", "0 c #7BDE318C0000", "q c #318C318C318C", "w c #FFFF842039CE", "e c #529418C60000", "r c #7BDE294A0000", "t c #FFFF7BDE39CE", "y c #7BDE21080000", "u c #FFFF739C39CE", "i c #529410840000", "p c #FFFF6B5A39CE", "a c #7BDE18C60000", "s c #FFFF631839CE", "d c #529408420000", "f c #FFFF5AD639CE", "g c #7BDE10840000", "h c #FFFF529439CE", "j c #7BDE08420000", "k c #529400000000", "l c #FFFF4A5239CE", "z c #7BDE00000000", "x c #FFFF421039CE", "c c #FFFF39CE39CE", "v c #7BDE4A520000", "b c #7BDE42100000", "n c #7BDE39CE0000", "m c #5294294A0000", "M c #39CE21080000", "N c #318C18C60000", "B c #39CE18C60000", "V c #4A5221080000", "C c #108410841084", " ", " .................................. ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXoooO ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXoo+O ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXoo@O ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXoo@O ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXoo@O ", " .ooooooooooooooooooooooooooooooooo+O ", " ####$$$$$%%%%%%&&&&&&&&***=======-oO ", " #;;;:>>>,,<<<11233344556667889990-qO ", " #;;::>>,,<<<1123334455566788999w0eqO ", " #;;:>>,,,<<1122334455566788899wwreoO ", " #;:>>>,,<<1112334445566778899wwwreoO ", " $:>>>,,<<11123344455666788999wwtreoO ", " $:>>,,<<<1123334455666788999wwttreoO ", " $>>,,,<<1122334455566788899wwtttyeqO ", " $>,,,<<1112334455566788899wwwttuyiqO ", " $>,,<<1112334445566778899wwwttupyiqO ", " $,,<<<1123334455666788999wwttuupyioO ", " %,<<<1123334455566788899wwtttuppaioO ", " %,<<1122334455566788899wwtttuppsaioO ", " %<<1112334445566778899wwwttupppsaioO ", " %<<1123344455666788999wwttuuppssadqO ", " %<1123334455666788999wwtttuppssfadqO ", " %1122334455566788899wwtttuppsssfgdqO ", " %112334445566788899wwwttupppssffgdoO ", " %12334445566678899wwwttupppssfffgdoO ", " &23334455666788999wwttuuppssfffhjdoO ", " &3334455566788899wwtttuppsssffhhjdoO ", " &334455566788899wwwttuppsssffhhhjkqO ", " &34445566778899wwwttupppssffhhhljkqO ", " &34455666788999wwttuuppssfffhhllzkqO ", " &4455666788999wwtttuppsssffhhlllzkoO ", " &455566788899wwtttuppsssffhhhllxzkoO ", " &45566778899wwwttupppssffhhhllxczkoO ", " &vvvbbbnn00000rryyyyaaagggjjjzzzzk+O ", " XmmMNNNBVV---eeeeeiiiiiddddkkkkkkk+O ", " ooo+++++++ooooooooooooooooooooo++CO ", " OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX ", " "}; ��������������������������WindowMaker-0.95.9/WPrefs.app/xpm/msty2.xpm���������������������������������������������������������0000644�0001750�0001750�00000006216�13431646202�015371� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "40 40 67 1", " c None", ". c #631863186318", "X c #000000000000", "o c #294A294A294A", "O c #084208420842", "+ c #210821082108", "@ c #18C618C618C6", "# c #FFFFFFFFB5AC", "$ c #FFFFF7BCB5AC", "% c #FFFFEF7AB5AC", "& c #FFFFE738B5AC", "* c #FFFFDEF6B5AC", "= c #FFFFD6B4B5AC", "- c #529421080000", "; c #FFFFF7BC39CE", ": c #FFFFEF7A39CE", "> c #FFFFE73839CE", ", c #FFFFDEF639CE", "< c #FFFFD6B439CE", "1 c #FFFFCE7239CE", "2 c #FFFFC63039CE", "3 c #FFFFBDEE39CE", "4 c #FFFFB5AC39CE", "5 c #FFFFAD6A39CE", "6 c #FFFFA52839CE", "7 c #FFFF9CE639CE", "8 c #FFFF94A439CE", "9 c #FFFF8C6239CE", "0 c #7BDE318C0000", "q c #318C318C318C", "w c #FFFF842039CE", "e c #529418C60000", "r c #7BDE294A0000", "t c #FFFF7BDE39CE", "y c #7BDE739C0000", "u c #7BDE6B5A0000", "i c #7BDE63180000", "p c #7BDE5AD60000", "a c #7BDE52940000", "s c #7BDE4A520000", "d c #7BDE42100000", "f c #7BDE39CE0000", "g c #FFFFCE72B5AC", "h c #FFFF739C39CE", "j c #7BDE21080000", "k c #529410840000", "l c #FFFF6B5A39CE", "z c #7BDE18C60000", "x c #FFFF631839CE", "c c #FFFFC630B5AC", "v c #529408420000", "b c #FFFF5AD639CE", "n c #7BDE10840000", "m c #FFFF529439CE", "M c #7BDE08420000", "N c #FFFFBDEEB5AC", "B c #529400000000", "V c #FFFF4A5239CE", "C c #7BDE00000000", "Z c #FFFF421039CE", "A c #FFFF39CE39CE", "S c #5294294A0000", "D c #39CE21080000", "F c #318C18C60000", "G c #39CE18C60000", "H c #4A5221080000", "J c #108410841084", " ", " .................................. ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXoooO ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXoo+O ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXoo@O ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXoo@O ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXoo@O ", " .ooooooooooooooooooooooooooooooooo+O ", " ####$$$$$%%%%%%&&&&&&*****=======-oO ", " #;;;:>>>,,<<<11233344456667889990-qO ", " #;;::>>,,<<<1123334455566788999w0eqO ", " #;;:>>,,,<<1122334455566788899wwreoO ", " #;:>>>,,<<1112334445566778899wwwreoO ", " $:>>>,,<<11123344455666788999wwtreoO ", " $yyuuiiiipppaaaasssssdddf00000rrreoO ", " $$$%%%%%%&&&&&&******========ggggeqO ", " $>,,,<<1112334455566788899wwwtthjkqO ", " $>,,<<1<12334445566778899wwwtthljkqO ", " $,,<<<1123334455666788999wwtthhljkoO ", " %,<<<1123334455566788899wwttthllzkoO ", " %,<<1122334455566788899wwttthllxzkoO ", " %iippppaaasssssdddff00000rrjjjjzzkoO ", " %%%%%&&&&&******========gggggccccvqO ", " %<<123334445666788999wwttthllxxbzvqO ", " %1122334455566788899wwttthllxxxbnvqO ", " %112334445566788899wwwtthlllxxbbnvoO ", " %12334445566678899wwwtthlllxxbbbnvoO ", " &23334455666788999wwtthhllxxbbbmMvoO ", " &aaaasssssdddff0000rrrjjjzzzznnMMvoO ", " &&&&******=========ggggccccccNNNNBqO ", " &34445566778899wwwtthlllxxbbmmmVMBqO ", " &34455666788999wwtthhllxxbbbmmVVCBqO ", " &4455666788999wwttthllxxxbbmmVVVCBoO ", " &455566788899wwttthllxxxbbmmmVVZCBoO ", " *45566778899wwwtthlllxxbbmmmVVZACBoO ", " &sssdddff00000rrjjjjzzznnnMMMCCCCB+O ", " XSSDFFFGHH---eeeeekkkkkvvvvBBBBBBB+O ", " ooo+++++++ooooooooooooooooooooo++JO ", " OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOX ", " "}; ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/timer2s.xpm�������������������������������������������������������0000644�0001750�0001750�00000001467�13431646202�015703� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "24 24 5 1", " c None", ". c #000000000000", "X c #7BDE7BDE7BDE", "o c #FFFFFFFFFFFF", "O c #FFFF00000000", " ", " ..... ", " X.X ", " .. X.X .. ", " X.. X.....X ..X ", " ....oo.OO.... ", " ..oooo.OOOO.. ", " .oooooo.OOOOOO. ", " XXoooooo.OOOOOOXX ", " .ooooooo.OOOOOOO. ", " XXooooooo.OOOOOOOXX ", " .oooooooo.OOOOOOOO. ", " .oooooooo.OOOOOOOO. ", " ....ooooo.......... ", " .ooooooooooooooooo. ", " .ooooooooooooooooo. ", " XXoooooooooooooooXX ", " .ooooooooooooooo. ", " XXoooooooooooooXX ", " .oooooo.oooooo. ", " .Xoooo.oooo.. ", " X..oo.oo..X ", " X.....X ", " "}; ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/timer3.xpm��������������������������������������������������������0000644�0001750�0001750�00000001442�13431646202�015512� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "24 24 4 1", " c None", ". c #000000000000", "X c #7BDE7BDE7BDE", "o c #BDEEBDEEBDEE", " ", " ..... ", " X.X ", " .. X.X .. ", " X.. X.....X ..X ", " ....oo.XX.... ", " ..oooo.XXXX.. ", " .oooooo.XXXXXX. ", " XXoooooo.XXXXXXXX ", " .ooooooo.XXXXXXX. ", " XXooooooo.XXXXXXXXX ", " .oooooooo.XXXXXXXX. ", " .oooooooo.XXXXXXXX. ", " ....ooooo.XXXXX.... ", " .ooooooooo.XXXXXXX. ", " .oooooooooo.XXXXXX. ", " XXoooooooooo.XXXXXX ", " .ooooooooooo.XXX. ", " XXooooooooooo.XXX ", " .oooooo.ooooo.. ", " .Xoooo.oooo.. ", " X..oo.oo..X ", " X.....X ", " "}; ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/menuprefs.xpm�����������������������������������������������������0000644�0001750�0001750�00000005634�13431646202�016322� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * menuprefs_xpm[] = { "48 48 28 1", " c None", ". c #2C2C2C", "+ c #FEFEFE", "@ c #505075", "# c #5F5F5F", "$ c #A2A2A2", "% c #282828", "& c #000000", "* c #727272", "= c #151515", "- c #2D2D2D", "; c #1E1E1E", "> c #040404", ", c #6D6D6D", "' c #0E0E0E", ") c #FFFFFF", "! c #6C6C6C", "~ c #070707", "{ c #1F1F1F", "] c #6A6A6A", "^ c #0B0B0B", "/ c #181818", "( c #111111", "_ c #090909", ": c #686868", "< c #3E3E3E", "[ c #DADADA", "} c #9D9D9D", "...............................................+", ".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+", ".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+", ".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+", ".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+", ".@@#################$#####%@@@@@@@@@@@@@@@@@@@@+", ".@@#&&&&&&&&&&&&&&&&*=-&;>%@@@@@@@@@@@@@@@@@@@@+", ".@@#&&&&&&&&&&&&&&&&,')&)&%@@@@@@@@@@@@@@@@@@@@+", ".@@#&&&&&&&&&&&&&&&&!~{)&&%@@@@@@@@@@@@@@@@@@@@+", ".@@#&&&&&&&&&&&&&&&&]^)/)&%@@@@@@@@@@@@@@@@@@@@+", ".@@#&&&&(((((((((((_:&&&&&%@@@@@@@@@@@@@@@@@@@@+", ".@@#%%%%%%%%%%%%%%%%<%%%%%%@@@@@@@@@@@@@@@@@@@@+", ".@@[[[[[[[[[[[[[[[[[[[[[[[[@@@@@@@@@@@@@@@@@@@@+", ".@@[}}}}}}}}}}}}}}}}}}}}}}<@@@@@@@@@@@@@@@@@@@@+", ".@@[}}}}}}}}}}}}}}}}}}}}}}<@@@@@@@@@@@@@@@@@@@@+", ".@@[}}}}}}}}}}}}}}}}}}}}}}<@@@@@@@@@@@@@@@@@@@@+", ".@@[}}}}}}}}}}}}}}}}}}}}}}<@@@@@@@@@@@@@@@@@@@@+", ".@@[<<<<<<<<<<<<<<<<<<<<<<<#################%@@+", ".@@[[[[[[[[[[[[[[[[[[[[[[[[#&&&&&&&&&&&&&&&&%@@+", ".@@[}}}}}}}}}}}}}}}}}}}}}}<#&&&&&&&&&&&&&&&&%@@+", ".@@[}}}}}}}}}}}}}}}}}}}}}}<#&&&&&&&&&&&&&&&&%@@+", ".@@[}}}}}}}}}}}}}}}}}}}}}}<#&&&&&&&&&&&&&&&&%@@+", ".@@[}}}}}}}}}}}}}}}}}}}}}}<#&&&&&&&&&&&&&&&&%@@+", ".@@[<<<<<<<<<<<<<<<<<<<<<<<%%%%%%%%%%%%%%%%%%@@+", ".@@[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[@@+", ".@@[}}}}}}}}}}}}}}}}}}}}}}<[}}}}}}}}}}}}}}}}<@@+", ".@@[}}}}}}}}}}}}}}}}}}}}}}<[}}}}}}}}}}}}}}}}<@@+", ".@@[}}}}}}}}}}}}}}}}}}}}}}<[}}}}}}}}}}}}}}}}<@@+", ".@@[}}}}}}}}}}}}}}}}}}}}}}<[}}}}}}}}}}}}}}}}<@@+", ".@@[<<<<<<<<<<<<<<<<<<<<<<<[<<<<<<<<<<<<<<<<<@@+", ".@@@@@@@@@@@@@@@@@@@@@@@@@@[[[[[[[[[[[[[[[[[[@@+", ".@@@@@@@@@@@@@@@@@@@@@@@@@@[}}}}}}}}}}}}}}}}<@@+", ".@@@@@@@@@@@@@@@@@@@@@@@@@@[}}}}}}}}}}}}}}}}<@@+", ".@@@@@@@@@@@@@@@@@@@@@@@@@@[}}}}}}}}}}}}}}}}<@@+", ".@@@@@@@@@@@@@@@@@@@@@@@@@@[}}}}}}}}}}}}}}}}<@@+", ".@@@@@@@@@@@@@@@@@@@@@@@@@@[<<<<<<<<<<<<<<<<<@@+", ".@@@@@@@@@@@@@@@@@@@@@@@@@@[[[[[[[[[[[[[[[[[[@@+", ".@@@@@@@@@@@@@@@@@@@@@@@@@@[}}}}}}}}}}}}}}}}<@@+", ".@@@@@@@@@@@@@@@@@@@@@@@@@@[}}}}}}}}}}}}}}}}<@@+", ".@@@@@@@@@@@@@@@@@@@@@@@@@@[}}}}}}}}}}}}}}}}<@@+", ".@@@@@@@@@@@@@@@@@@@@@@@@@@[}}}}}}}}}}}}}}}}<@@+", ".@@@@@@@@@@@@@@@@@@@@@@@@@@[<<<<<<<<<<<<<<<<<@@+", ".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+", ".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+", ".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+", ".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+", ".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+", "++++++++++++++++++++++++++++++++++++++++++++++++"}; ����������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/tedit.xpm���������������������������������������������������������0000644�0001750�0001750�00000014366�13431646202�015431� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "27 24 225 2", " c None", ". c #000000000000", "X c #084208420000", "o c #210818C60000", "O c #5AD639CE0000", "+ c #D6B48C620000", "@ c #BDEE7BDE0000", "# c #210810840000", "$ c #39CE294A0000", "% c #4A52318C0000", "& c #AD6A6B5A0000", "* c #DEF694A40000", "= c #39CE21080000", "- c #294A18C60000", "; c #AD6A739C0000", ": c #084200000000", "> c #9CE663180000", ", c #631842100000", "< c #108408420000", "1 c #B5AC739C0000", "2 c #A5286B5A0000", "3 c #8C625AD60000", "4 c #739C4A520000", "5 c #210821082108", "6 c #9CE66B5A5AD6", "7 c #B5AC739C0842", "8 c #C630739C0000", "9 c #000008420000", "0 c #108439CE1084", "q c #5294CE725294", "w c #A528A528A528", "e c #CE727BDE0000", "r c #7BDE52940000", "t c #0000318C0000", "y c #00007BDE0000", "u c #00009CE60000", "i c #0842318C0842", "p c #18C610840000", "a c #108410841084", "s c #084208420842", "d c #C6308C62294A", "f c #18C621080000", "g c #18C6294A0842", "h c #21086B5A0000", "j c #5294BDEE2108", "k c #4A52BDEE294A", "l c #94A4529439CE", "z c #AD6A084239CE", "x c #4A5200000842", "c c #39CE39CE318C", "v c #BDEEBDEEAD6A", "b c #739C6B5A5294", "n c #00004A520000", "m c #0000C6300842", "M c #0000BDEE0842", "N c #000021080000", "B c #42106B5A1084", "V c #8420DEF64210", "C c #8C62E73839CE", "Z c #8420E7385AD6", "A c #8C62D6B4739C", "S c #842084205AD6", "D c #E7385294739C", "F c #CE7239CE5AD6", "G c #7BDE5AD64A52", "H c #AD6A9CE694A4", "J c #63185AD65AD6", "K c #000042100000", "L c #0000B5AC0842", "P c #000042100842", "I c #4210F7BC294A", "U c #C630EF7A94A4", "Y c #4210EF7A4210", "T c #6B5ADEF65AD6", "R c #AD6A63185294", "E c #D6B463186318", "W c #E7388C628C62", "Q c #DEF610844A52", "! c #5AD6000018C6", "~ c #631810844210", "^ c #F7BC39CE7BDE", "/ c #000010840000", "( c #0000CE720842", ") c #084218C60842", "_ c #294ABDEE18C6", "` c #1084FFFF294A", "' c #6B5AEF7A4A52", "] c #739CDEF6318C", "[ c #4A52BDEE4210", "{ c #DEF610845294", "} c #CE7200002108", "| c #EF7A21088420", " . c #F7BC294A6B5A", ".. c #BDEE084239CE", "X. c #739C00001084", "o. c #108400000000", "O. c #1084A5281084", "+. c #1084CE7218C6", "@. c #0842D6B41084", "#. c #0842B5AC1084", "$. c #0842294A0842", "%. c #1084E73818C6", "&. c #2108EF7A39CE", "*. c #4A52CE724A52", "=. c #4210A5286B5A", "-. c #294A739C8420", ";. c #5AD621087BDE", ":. c #8C6210845AD6", ">. c #EF7A0842318C", ",. c #FFFF18C6C630", "<. c #F7BC10848420", "1. c #E73810846318", "2. c #4A5208422108", "3. c #A52800000842", "4. c #9CE600000842", "5. c #842000000842", "6. c #CE7200000842", "7. c #1084AD6A18C6", "8. c #4210BDEE4210", "9. c #294ADEF6318C", "0. c #6B5ADEF6739C", "q. c #0000EF7A2108", "w. c #1084C6304A52", "e. c #18C6739CA528", "r. c #18C66B5AC630", "t. c #08425AD6CE72", "y. c #0000318CA528", "u. c #4A5210846B5A", "i. c #FFFF1084739C", "p. c #6B5A08424A52", "a. c #AD6A00000842", "s. c #D6B400000842", "d. c #AD6A39CE1084", "f. c #294ABDEE294A", "g. c #AD6AE738AD6A", "h. c #C630EF7AC630", "j. c #DEF6E738DEF6", "k. c #08424A522108", "l. c #00006B5A94A4", "z. c #0000294AC630", "x. c #0000294AB5AC", "c. c #10846318DEF6", "v. c #294A4210B5AC", "b. c #6B5A318C8C62", "n. c #D6B40000318C", "m. c #4210000018C6", "M. c #210800000000", "N. c #C63000000842", "B. c #F7BC00001084", "V. c #F7BC10842108", "C. c #E738318C39CE", "Z. c #84204210294A", "A. c #294A84200842", "S. c #D6B4D6B4D6B4", "D. c #0842529418C6", "F. c #0000E7382108", "G. c #0000294AD6B4", "H. c #084239CED6B4", "J. c #294A6318DEF6", "K. c #18C64210CE72", "L. c #18C65294DEF6", "P. c #52944A52C630", "I. c #DEF618C6A528", "U. c #8C6218C694A4", "Y. c #6B5A10846B5A", "T. c #294A08422108", "R. c #F7BC00000842", "E. c #FFFF18C62108", "W. c #FFFF4A525294", "Q. c #AD6A318C1084", "!. c #B5ACE738B5AC", "~. c #EF7AEF7AEF7A", "^. c #9CE6CE729CE6", "/. c #0000739C0842", "(. c #0000D6B4294A", "). c #000018C6AD6A", "_. c #294A5AD6E738", "`. c #000039CEE738", "'. c #421039CEDEF6", "]. c #F7BC294ABDEE", "[. c #739C318CC630", "{. c #108418C68C62", "}. c #10840842294A", "|. c #FFFF294A318C", " X c #BDEE318C1084", ".X c #39CEBDEE4210", "XX c #10848C6218C6", "oX c #00005294294A", "OX c #18C6294AB5AC", "+X c #10844A52E738", "@X c #21085294EF7A", "#X c #318C4210D6B4", "$X c #AD6A21087BDE", "%X c #0842294A8C62", "&X c #000008421084", "*X c #F7BCF7BCF7BC", "=X c #FFFF5AD66318", "-X c #B5AC21081084", ";X c #18C663182108", ":X c #000039CE0000", ">X c #000000000842", ",X c #000010848C62", "<X c #0000084294A4", "1X c #000018C6B5AC", "2X c #318C6318F7BC", "3X c #21084A52D6B4", "4X c #39CE5AD6BDEE", "5X c #084221085AD6", "6X c #F7BCD6B4D6B4", "7X c #FFFF318C4210", "8X c #318C318C318C", "9X c #000000002108", "0X c #000008428420", "qX c #1084294A8420", "wX c #108421085294", "eX c #C63052945AD6", "rX c #6B5A08420842", "tX c #084208421084", "yX c #084210844A52", "uX c #000010845AD6", "iX c #000010846B5A", "pX c #08420842739C", "aX c #000008424A52", "sX c #94A400000842", "dX c #7BDE00000842", " . X X ", " . o O + @ # $ . ", " % & * & = - . . @ ; : ", " : # > + ; , # X : . < 1 2 X . ", " < $ 3 > 4 $ X : . . < 1 > o : ", " 5 6 7 , # : : . . : 8 > o . ", " . . 9 0 q w w . . . . < e r < . ", ". . 9 t y u i . . . : . . . . . . . p 1 3 < . ", ". . . . . . . . : . 9 a a a a s s a d 3 f . ", ". . . : g h j k l z x : 9 s s a c v b s n m M M M N ", ". . . B V C Z A S D F F . . 9 G H J 9 . K L u u L t ", " P I U U Y T R E W Q ! : ~ ^ ~ . . / L L ( M N ", " ) _ ` ' ] [ 6 { } | ...X.X.! X o.: o h u O.+.@.#.9 ", " $.%.&.*.=.-.;.:.>.,.<.1.2.X o.3.4.5.6.} 7.8.*.9.0.s ", ". P q.w.e.r.t.y.u.z i.i.Q p.9 o.6.a.3.s.d.L f.g.h.j.a ", ". k.q.l.z.x.c.c.v.b.n.n...m.. M.N.B.V.C.Z.A.#.h.S.S.a ", ". D.F.y.G.H.J.K.L.P.I.U.Y.T.. n.R.E.W.W.W.Q.L !.~.^.s ", ". /.(.)._._.K.z.`.'.].[.{.}.9 W B.E.|.|.W. X7.f..XXX. ", " / oXOXOXOX+X@X@X#X$Xb.%X&X. w S.*X*XR.=X-X;Xn :X/ . ", ". . >X,X<X1X2X2X@X3X4Xv.5X>Xs w ~.6X=XR.7Xz 8X9 . ", ". . . 9X0Xz.H.H.).{.qXwX. . . eX6X*X7XR.R.rX9 . ", "a a s s tXyXuXiXpXaX9X. . . . x a.6.N.sXdXX ", "s s s s X X : 9 tX>X. . . . . . X M.o.. . ", ". . . >X. : : . . . . . . . . . "}; ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/timer4.xpm��������������������������������������������������������0000644�0001750�0001750�00000001442�13431646202�015513� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "24 24 4 1", " c None", ". c #000000000000", "X c #7BDE7BDE7BDE", "o c #BDEEBDEEBDEE", " ", " ..... ", " X.X ", " .. X.X .. ", " X.. X.....X ..X ", " ....oo.XX.... ", " ..oooo.XXXX.. ", " .oooooo.XXXXXX. ", " XXoooooo.XXXXXXXX ", " .ooooooo.XXXXXXX. ", " XXooooooo.XXXXXXXXX ", " .oooooooo.XXXXXXXX. ", " .oooooooo.XXXXXXXX. ", " ....ooooo.XXXXX.... ", " .oooooooo.XXXXXXXX. ", " .oooooooo.XXXXXXXX. ", " XXooooooo.XXXXXXXXX ", " .ooooooo.XXXXXXX. ", " XXoooooo.XXXXXXXX ", " .oooooo.XXXXXX. ", " .Xoooo.XXXX.. ", " X..oo.XX..X ", " X.....X ", " "}; ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/theme.xpm���������������������������������������������������������0000644�0001750�0001750�00000023676�13431646202�015426� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "50 54 205 2", " c None", ". c #FFFFFFFFFFFF", "X c #294A39CE5AD6", "o c #294A39CE6318", "O c #294A42106B5A", "+ c #294A4A52739C", "@ c #294A4A527BDE", "# c #318C52947BDE", "$ c #39CE5AD68420", "% c #318C4A526B5A", "& c #631863186318", "* c #000000000000", "= c #2108318C5294", "- c #294A4210739C", "; c #318C4A52739C", ": c #39CE52947BDE", "> c #A528AD6ADEF6", ", c #AD6AB5ACDEF6", "< c #B5ACBDEEDEF6", "1 c #BDEEBDEEE738", "2 c #C630C630E738", "3 c #CE72CE72E738", "4 c #D6B4D6B4E738", "5 c #DEF6DEF6EF7A", "6 c #E738E738F7BC", "7 c #E738EF7AF7BC", "8 c #EF7AEF7AF7BC", "9 c #F7BCF7BCF7BC", "0 c #F7BCF7BCFFFF", "q c #52946B5A8C62", "w c #4A5263188420", "e c #4A52739C94A4", "r c #63187BDE9CE6", "t c #DEF6E738EF7A", "y c #B5ACC630D6B4", "u c #7BDE94A4AD6A", "i c #B5ACB5ACDEF6", "p c #C630D6B4DEF6", "a c #5AD6739C94A4", "s c #318C42106B5A", "d c #2108294A4A52", "f c #2108318C4A52", "g c #8C6294A4AD6A", "h c #E738E738E738", "j c #6B5A7BDE8C62", "k c #AD6AAD6AC630", "l c #318C42106318", "z c #B5ACBDEECE72", "x c #5AD66318739C", "c c #7BDE842094A4", "v c #9CE6B5ACC630", "b c #739C7BDE9CE6", "n c #84208C62A528", "m c #4A524A526318", "M c #631863186B5A", "N c #BDEEC630C630", "B c #CE72CE72CE72", "V c #9CE6AD6AB5AC", "C c #42105AD68420", "Z c #294A318C4A52", "A c #294A318C5294", "S c #A528A528AD6A", "D c #D6B4D6B4D6B4", "F c #B5ACB5ACC630", "G c #AD6AB5ACBDEE", "H c #B5ACB5ACBDEE", "J c #C630CE72D6B4", "K c #B5ACBDEEC630", "L c #A528A528A528", "P c #2108294A39CE", "I c #4A524210318C", "U c #8C6284207BDE", "Y c #421039CE318C", "T c #39CE318C294A", "R c #39CE39CE4210", "E c #318C294A294A", "W c #294A294A294A", "Q c #6B5A63187BDE", "! c #7BDE739C7BDE", "~ c #84207BDE8420", "^ c #84207BDE7BDE", "/ c #7BDE739C8420", "( c #6B5A6B5A739C", ") c #94A48C628C62", "_ c #A5288C628C62", "` c #8C628C628C62", "' c #94A48C6294A4", "] c #94A494A49CE6", "[ c #A5289CE6A528", "{ c #7BDE739C739C", "} c #8C6284208420", "| c #9CE694A48C62", " . c #A52894A494A4", ".. c #C630B5ACAD6A", "X. c #A5289CE69CE6", "o. c #8C627BDE739C", "O. c #421042104210", "+. c #21082108318C", "@. c #39CE4A525AD6", "#. c #6B5A5AD65AD6", "$. c #63185AD65AD6", "%. c #6B5A63186318", "&. c #739C63186318", "*. c #739C63185AD6", "=. c #AD6A94A494A4", "-. c #DEF6B5ACA528", ";. c #52945AD6739C", ":. c #5AD65AD6739C", ">. c #8C6284208C62", ",. c #9CE694A494A4", "<. c #CE72C630B5AC", "1. c #B5ACAD6AB5AC", "2. c #B5ACAD6AA528", "3. c #94A47BDE7BDE", "4. c #8420739C6B5A", "5. c #294A294A318C", "6. c #52944A5239CE", "7. c #63184A524210", "8. c #6B5A5AD64A52", "9. c #A5288C628420", "0. c #6B5A63184A52", "q. c #84206B5A6318", "w. c #84206B5A5AD6", "e. c #B5AC9CE69CE6", "r. c #739C739C7BDE", "t. c #7BDE7BDE8420", "y. c #BDEEAD6AA528", "u. c #AD6AA528A528", "i. c #94A48C628420", "p. c #5AD652945294", "a. c #AD6A9CE68C62", "s. c #9CE694A48420", "d. c #9CE68C628420", "f. c #94A48C627BDE", "g. c #A52894A48C62", "h. c #AD6A9CE694A4", "j. c #A5289CE694A4", "k. c #B5ACA5289CE6", "l. c #C630B5ACB5AC", "z. c #7BDE6B5A6B5A", "x. c #739C6B5A6B5A", "c. c #21082108294A", "v. c #8C628C627BDE", "b. c #B5ACAD6A9CE6", "n. c #BDEEB5ACBDEE", "m. c #9CE6A528AD6A", "M. c #842084207BDE", "N. c #7BDE7BDE7BDE", "B. c #18C62108294A", "V. c #AD6AAD6AB5AC", "C. c #7BDE6B5A6318", "Z. c #0842108418C6", "A. c #084208421084", "S. c #108418C618C6", "D. c #18C618C62108", "F. c #39CE42104A52", "G. c #318C318C318C", "H. c #8C6294A494A4", "J. c #739C6B5A739C", "K. c #63185AD66318", "L. c #AD6AA5289CE6", "P. c #842084208420", "I. c #8420842094A4", "U. c #6B5A6B5A6B5A", "Y. c #5AD652945AD6", "T. c #5AD65AD65AD6", "R. c #7BDE739C6B5A", "E. c #AD6AAD6ABDEE", "W. c #5AD65AD66318", "Q. c #6B5A63185AD6", "!. c #084208420842", "~. c #739C6B5A6318", "^. c #A528A5289CE6", "/. c #AD6AAD6AAD6A", "(. c #BDEEB5ACAD6A", "). c #CE72C630BDEE", "_. c #529452945294", "`. c #52944A525294", "'. c #52944A524A52", "]. c #108410841084", "[. c #18C618C618C6", "{. c #4A524A525294", "}. c #4A524A524A52", "|. c #739C739C739C", " X c #A5289CE6AD6A", ".X c #4A52421039CE", "XX c #421039CE294A", "oX c #63185AD66B5A", "OX c #4A524A524210", "+X c #6B5A6B5A8C62", "@X c #842084209CE6", "#X c #4A524210294A", "$X c #52944210294A", "%X c #210818C618C6", "&X c #5AD652944A52", "*X c #739C739C9CE6", "=X c #318C318C294A", "-X c #5AD652944210", ";X c #39CE39CE318C", ":X c #108410840842", ">X c #39CE39CE294A", ",X c #18C610841084", "<X c #52944A524210", "1X c #294A294A2108", "2X c #210818C61084", " ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " . X o o O O + + + + + + + + + + + + + + + + @ @ @ @ # $ $ # # # # # + + % + # & * * * * ", " . = X o o o O O O - - - - + + + + + + + + + @ + @ @ # @ $ @ @ # # ; ; ; % ; : & * * * * ", " . = = > , < < 1 2 2 3 4 4 5 6 6 7 8 9 0 . @ + + + @ # # @ @ @ + @ ; % q w e r & * * * * ", " . = = > * < < 1 2 2 3 4 4 5 6 6 7 8 9 * . + @ + @ @ @ @ @ + + + # # # t y u : & * * * * ", " . = = > , i < 1 2 2 3 3 4 5 6 6 7 8 9 0 . @ + + @ @ @ @ + @ + + $ e y p a + s & * * * * ", " . d f > = X o o o O O g h g % j + + + + > + + @ @ + @ @ + % + $ k t y q s l s & * * * * ", " . f f > = * X * * * O g z k x % c w + + > + + + + + # # + ; ; w p v : s X X X & * * * * ", " . f f > = = X X o o O b k n m M N B V C > @ @ @ + + @ # # # % q a s X Z A X Z & * * * * ", " . Z g > X * * * * * o * w * * * S B D a > @ @ @ @ + + # $ w X s X X X Z A Z Z & * * * * ", " . d c > z F F F F F F G H J K y J h h J 5 z z z z z y y y H H H H H H H H H H B L L L L * * ", " . P A > 4 I U I I Y T R E W Q ! ~ ^ / ! ( ~ ) _ _ ) ~ ) ` ' ] [ { ^ } } ) | ...X.| o.O.* * * ", " . +.@.> H #.$.%.$.#.&.&.*.*.=.-._ ( ;.;.;.:.x Q Q >.' ,.[ L <.1.} >.>.` ) ) ,.2.) 3.4.O.* * * * ", " . +.5.> G 6.#.7.&.8.9.0.q.w.e.e.=.~ / r.r.r./ t. .y.....u.1.1.H ` ` } >.} i.) =.4.4.4.O.* * * * ", " . +.+.> G p.p.p.&.o._ 4.&.*.e.a.a.s.d.i.f.U U U i.g.g.h.j.h.k.l.} ` ` } } } ~ _ z.z.x.O.* * * * ", " . c.c.> 5 ) ) ) ' ,.,. . .X.[ g.g.g.g.g.| d.i.v.v.g.h.b.b.b.b.n.' m.m.] M.N./ ) %.%.%.O.* * * * ", " . B.B.+.V.C.4.4.Z.A.A.S.D.D.F.G.G.* * G.* * * G.* G.*.C.k.2.2.K ` H.H.} { ( J.~ $.K.$.O.* * * * ", " . D.B.B.V.4.4.z.A.V.A.A.Z.Z.F.G.G.G.G.G.G.G.G.G.D G.h.L.L.u.u.H P.I.c { U.M M ^ Y.Y.T.O.* * * * ", " . D.D.B.V.C.z.R.A.A.A.A.A.A.F.G.G.G.G.G.G.G.G.G.G.G.k.k.L.L.L E.N.^ { U.& W.K.{ Y.Y.Y.O.* * * * ", " . D.D.S.V.&.Q.*.!.&.~.4.z.&.[ d.o.Q.Q.R.2.h.g.| | G.h.h.L.^.^.E.^ N.x.& $.%.& ^ $.T.Y.O.* * * * ", " . S.D.D./.~.~.C.!.~.!.z.!.!.F.d.d.Q.~.C.| l.l.l.(.G.<.<.).).L.1.{ R.&.%.%.%.%.{ p._.`.O.* * * * ", " . S.S.S.V.$.#.$.!.*.*.*.~.*.[ | i.Q.Q.| ,.<.i.U U G.).i.i.i.h.1.R.%.$.$.$.T.T.{ '.'.'.O.* * * * ", " . ].S.[./.%.%.%.!.$.!.!.!.!.F.d.G.Q.G.G.G.,.j.j.X.G.h.h.j.j.j.S Q._.`.{.{._._.( }.}.`.O.* * * * ", " . ].S.[./.T.%.x.!.x.~.x.~.&.~ |.|.|.|.N.] X XS S F.S X X X X XT._._.{.{.{._.J.}.}.`.O.* * * * ", " . ].].]./.K.K.W.!..X!.I !.!.!.!.XX!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.p._.x.'.'.}.O.* * * * ", " . ].].]./.oXM %.!..XY XXXXXXXXXXXXXXXX!./.!.!.!.!.!.!.!.!.!.!.!.!.!.!./.!.Y.Y.! p.Y.Y.O.* * * * ", " . ].].]./.M M OX!.XX!.XX!.XX!.XX!.XXXX!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.M M ~ W.W.W.O.* * * * ", " . ].].]./.( ( Y !.XXXXXXXXXXXXXXXXXXI !.& & & & & & & & & & & & & & & & !.:.Q c oXoX:..X* * * * ", " . ].].]././ / ( !.!.!.!.!.!.!.!.!.!.!.!.& & & & & & & & & & & & & & & & !.+X+Xn Q +XQ O.* * * * ", " . ].].].V.c @X( .XXXXXXXXXXXY I #X$XI !.& & !.!.& !.!.!.& !.& !.!.& & & !.%XT n +X+X+XO.* * * * ", " . & & & B k k |.&X&X&X&X&X&X8.8.0.8.0.5.^ c N.^ c N.N.M.c N.^ c N.N.M.N.5.G.R ~ *X*X*XO.* * * * ", " * * * L r.Q T T T T T T T XXXX#X#X6.* T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.* !.S.m :.:.:.O.* * * * ", " * * * L '..XT T T T =X=XT XXT XX-X8.* T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.* !.].5.5.5.5.O.* * * * ", " * * * L I T T T =X=X=X;XXXT XXXXI I * T.T.T.T.T.T.L L L L T.L L L L T.* !.A.].[.D.%XO.* * * * ", " * * * L T T T T T T T R ;XT =XT T T * T.T.T.T.T.T.L G.G.;XT.L G.;XG.T.* !.!.!.!.:X[.O.* * * * ", " L >X>X>X>XT T T T G.T T =XT T * T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.* ].].].].,X,XO.* * * * ", " L XX>XT T T T T T T T T T T Y * * * * * * * * * * * * * * * * * * ,X,X].,X,X].O.* * * * ", " L T T T T T >XT T T T T T T T 6.Y I XX%X!.!.!.!.:X!.,X!.,X].,X,X].:X,X,X,X,X,XO.* * * * ", " L T T T T T T I T T XXI XXT XXI XXY =X].,X!.!.!.:X:X,X,X,X:X,X:X:X:X:X:X:X:X:XO.* * * * ", " L I <XI .XI I 6.T T Y Y 6.T T Y Y T 1X2X%X%X%X,X:X:X,X,X,X,X,X:X,X:X,X:X:X2X%XO.* * * * ", " L O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.* * * * ", " * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ", " * * * * * * * * * * !.* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ", " * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ", " * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ", " ", " ", " ", " ", " ", " ", " ", " "}; ������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/timer0s.xpm�������������������������������������������������������0000644�0001750�0001750�00000001442�13431646202�015672� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "24 24 4 1", " c None", ". c #000000000000", "X c #7BDE7BDE7BDE", "o c #FFFFFFFFFFFF", " ", " ..... ", " X.X ", " .. X.X .. ", " X.. X.....X ..X ", " ....ooooo.... ", " ..ooooooooo.. ", " .oooooooooooo.. ", " XXoooooooooooooXX ", " .ooooooooooooooo. ", " XXoooooooooooooooXX ", " .ooooooooooooooooo. ", " .ooooooooooooooooo. ", " .ooooooooooooooooo. ", " .ooooooooooooooooo. ", " .ooooooooooooooooo. ", " XXoooooooooooooooXX ", " .ooooooooooooooo. ", " XXoooooooooooooXX ", " .ooooooooooooo. ", " .Xooooooooo.. ", " X..ooooo..X ", " X.....X ", " "}; ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/textr.xpm���������������������������������������������������������0000644�0001750�0001750�00000012456�13431646202�015464� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "27 24 181 2", " c None", ". c #000000000000", "X c #084200000000", "o c #210810840000", "O c #421018C60000", "+ c #5294318C0000", "@ c #5AD6318C0000", "# c #6B5A39CE0000", "$ c #5294294A0000", "% c #210808420000", "& c #7BDE42100842", "* c #9CE65AD60842", "= c #AD6A63180842", "- c #AD6A63181084", "; c #A52863180842", ": c #AD6A63180000", "> c #9CE65AD60000", ", c #4210294A0000", "< c #084208420000", "1 c #8C624A520000", "2 c #A5286B5A1084", "3 c #AD6A6B5A1084", "4 c #6B5A42100842", "5 c #18C608420000", "6 c #AD6A6B5A18C6", "7 c #AD6A6B5A2108", "8 c #AD6A739C294A", "9 c #AD6A739C318C", "0 c #AD6A7BDE294A", "q c #A5287BDE318C", "w c #6B5A63185AD6", "e c #4A5242104A52", "r c #210818C618C6", "t c #318C18C60000", "y c #294A18C60000", "u c #108408420000", "i c #739C4A520000", "p c #AD6A7BDE39CE", "a c #AD6A7BDE318C", "s c #8420739C6318", "d c #42105294A528", "f c #108439CECE72", "g c #0000318CDEF6", "h c #00002108B5AC", "j c #0842108494A4", "k c #0842210894A4", "l c #10842108739C", "z c #18C6108418C6", "x c #39CE21080000", "c c #739C6B5A7BDE", "v c #21084A52D6B4", "b c #294A5AD6EF7A", "n c #18C64A52F7BC", "m c #000039CEF7BC", "M c #000039CEEF7A", "N c #0000318CE738", "B c #000039CEE738", "V c #0000294ACE72", "C c #000008428C62", "Z c #108418C6294A", "A c #AD6A739C2108", "S c #A528739C294A", "D c #21085AD6DEF6", "F c #5AD68420F7BC", "G c #BDEECE72FFFF", "H c #63188C62F7BC", "J c #00004210F7BC", "K c #00001084AD6A", "L c #0000000094A4", "P c #000008428420", "I c #0000000018C6", "U c #7BDE42100000", "Y c #5AD65294739C", "T c #08424A52EF7A", "R c #52948420FFFF", "E c #9CE6B5ACFFFF", "W c #318C6B5AF7BC", "Q c #00001084739C", "! c #94A4739C294A", "~ c #294A42109CE6", "^ c #21085AD6FFFF", "/ c #00004210FFFF", "( c #000039CEDEF6", ") c #000018C6BDEE", "_ c #000000001084", "` c #6B5A5AD64210", "' c #108439CEB5AC", "] c #18C64A52E738", "[ c #18C65294F7BC", "{ c #00004A52FFFF", "} c #0000294ADEF6", "| c #0000294AC630", " . c #08424210D6B4", ".. c #000018C6B5AC", "X. c #0000084239CE", "o. c #A5286B5A18C6", "O. c #52944A524A52", "+. c #0842318CDEF6", "@. c #08426B5AFFFF", "#. c #000039CECE72", "$. c #08424210C630", "%. c #08425AD6D6B4", "&. c #00000842A528", "*. c #1084294A94A4", "=. c #318C318C294A", "-. c #4A52294A0842", ";. c #94A463182108", ":. c #9CE66B5A2108", ">. c #4A524A525AD6", ",. c #0000318CCE72", "<. c #08426B5AEF7A", "1. c #08427BDEEF7A", "2. c #00005294D6B4", "3. c #000018C6AD6A", "4. c #6B5A5AD66318", "5. c #7BDE529418C6", "6. c #8420529418C6", "7. c #8C625AD61084", "8. c #84205AD618C6", "9. c #52944A5239CE", "0. c #1084318C94A4", "q. c #00002108C630", "w. c #00001084A528", "e. c #0842739CEF7A", "r. c #08424A52B5AC", "t. c #52945AD67BDE", "y. c #842063185294", "u. c #94A46B5A318C", "i. c #294A21080842", "p. c #94A463180842", "a. c #5AD64A524A52", "s. c #18C642106B5A", "d. c #000021084A52", "f. c #000000005AD6", "g. c #00002108BDEE", "h. c #08426318DEF6", "j. c #08425294CE72", "k. c #6B5A6B5A8420", "l. c #739C739C6318", "z. c #9CE68C625294", "x. c #A52884204A52", "c. c #AD6A842039CE", "v. c #AD6A6B5A0842", "b. c #A5286B5A0842", "n. c #AD6A739C1084", "m. c #AD6A739C18C6", "M. c #9CE66B5A18C6", "N. c #84205AD62108", "B. c #529439CE294A", "V. c #318C2108294A", "C. c #318C4A527BDE", "Z. c #8C62739C4A52", "A. c #A52894A46B5A", "S. c #AD6A9CE6739C", "D. c #AD6A94A45AD6", "F. c #AD6A8C624A52", "G. c #AD6A7BDE2108", "H. c #94A46B5A2108", "J. c #AD6A8C625AD6", "K. c #AD6A9CE67BDE", "L. c #AD6AA5288420", "P. c #A5289CE66B5A", "I. c #A52894A45AD6", "U. c #AD6A8420318C", "Y. c #A5286B5A294A", "T. c #AD6A8C626318", "R. c #A52894A46318", "E. c #A528739C18C6", "W. c #AD6A94A46B5A", "Q. c #AD6A84204210", "!. c #8C6263181084", "~. c #18C610840000", "^. c #739C42100000", "/. c #AD6A8C625294", "(. c #39CE294A0842", "). c #A528631818C6", "_. c #A5287BDE39CE", "`. c #8C6263182108", "'. c #63184A521084", "]. c #52944A522108", "[. c #210821081084", " . . . . . . . . ", " X o O + @ @ # @ @ @ $ % . ", " o & * = = = - ; ; : : > , X . . . . . . . ", " < 1 = - - - 2 - - - 3 3 4 X X < < X X X X X X X X . ", " 5 > 6 7 8 8 8 9 0 0 q w e r t y u < < < < < < < < < ", " . i 7 8 9 p a p p s d f g h j k l z X X < < < X < < ", " x 6 7 9 a 9 8 c v b n m M N B V C Z X . . . . . X ", " . u = 7 8 9 A S D F G H m J J B K L P I . ", " . < U 2 8 9 7 Y T R E W m J J B K L K Q ", " X < x = 6 8 ! ~ b H ^ / J N ( ( V ) K L _ ", " . < o 1 6 A ` ' ] F [ { J } | .g g ..L X.. ", " X < < @ o.o.O.| } +.J @.@.#.$.%.B g ) &.*.=.u . ", " . X X -.;.:.>.,.J J } V #.<.1.2.3.&.) } v 4.5.6.y ", " . . . t 7.8.9.0.#.J q.w.w.g e.2.h h ' r.t.y.u.:.i. ", " y : ; p.5.a.s.d.f.C g.h.j.h ~ k.l.z.x.c.0 i. ", " y : ; v.b.n.m.M.N.B.V.C.k.Z.A.S.A.D.F.c.G.i. ", " . . t : b.v.n.m.m.G.G.G.H.J.K.L.S.P.A.I.F.U.G.i. ", " . . . x : 2 m.m.m.m.G.G.A Y.T.K.S.P.A.R.F.U.0 A i. ", ". . . . t ; 2 o.E.A A A 0 A S J.W.R.R.I.Q.0 G.A !.~. ", " . . . < t ^.; 2 7 A 8 0 a S /.D.D./.c.0 A !.(.u ", " . . . . . < y # = - Y.Y.9 q /./.F.0 G.E.u u . ", " . . . u t # 1 * ).Y._.q `.'.u . ", " . X 5 o y + U * 8.].[.. ", " . X < < u o t o < . "}; ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/speed2.xpm��������������������������������������������������������0000644�0001750�0001750�00000001370�13431646202�015471� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "24 24 2 1", " c None", ". c #210839CE7BDE", " ", " ", " ", " ", " ", " ", " ", " ", " ", " . .. ... . ", " . .. ... .. ", " . .. ... ... ", " . .. ... .... ", " . .. ... ... ", " . .. ... .. ", " . .. ... . ", " ", " ", " ", " ", " ", " ", " ", " "}; ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/timer2.xpm��������������������������������������������������������0000644�0001750�0001750�00000001442�13431646202�015511� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "24 24 4 1", " c None", ". c #000000000000", "X c #7BDE7BDE7BDE", "o c #BDEEBDEEBDEE", " ", " ..... ", " X.X ", " .. X.X .. ", " X.. X.....X ..X ", " ....oo.XX.... ", " ..oooo.XXXX.. ", " .oooooo.XXXXXX. ", " XXoooooo.XXXXXXXX ", " .ooooooo.XXXXXXX. ", " XXooooooo.XXXXXXXXX ", " .oooooooo.XXXXXXXX. ", " .oooooooo.XXXXXXXX. ", " ....ooooo.......... ", " .ooooooooooooooooo. ", " .ooooooooooooooooo. ", " XXoooooooooooooooXX ", " .ooooooooooooooo. ", " XXoooooooooooooXX ", " .oooooo.oooooo. ", " .Xoooo.oooo.. ", " X..oo.oo..X ", " X.....X ", " "}; ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/tnew.xpm����������������������������������������������������������0000644�0001750�0001750�00000012074�13431646202�015267� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "27 24 170 2", " c None", ". c #000000000000", "X c #084200000000", "o c #084208420000", "O c #108408420842", "+ c #18C62108294A", "@ c #294A294A294A", "# c #18C610840842", "$ c #294A18C60000", "% c #210810840000", "& c #18C618C62108", "* c #294A39CE94A4", "= c #084239CECE72", "- c #18C64210D6B4", "; c #08422108AD6A", ": c #000010848C62", "> c #0842294A94A4", ", c #18C618C65294", "< c #18C608421084", "1 c #318C39CE5AD6", "2 c #21084A52CE72", "3 c #294A5AD6EF7A", "4 c #10844A52F7BC", "5 c #4A527BDEF7BC", "6 c #5294739CF7BC", "7 c #084239CEE738", "8 c #084239CEDEF6", "9 c #000018C6BDEE", "0 c #000008427BDE", "q c #108418C61084", "w c #18C610841084", "e c #18C64A52C630", "r c #739C9CE6F7BC", "t c #B5ACCE72FFFF", "y c #4210739CF7BC", "u c #21085294F7BC", "i c #294A5AD6FFFF", "p c #00004A52FFFF", "a c #0000318CDEF6", "s c #00001084A528", "d c #0000000094A4", "f c #000010847BDE", "g c #108418C64210", "h c #10844A52E738", "j c #6B5A94A4FFFF", "k c #8C62AD6AFFFF", "l c #21085AD6F7BC", "z c #00004210F7BC", "x c #00004A52F7BC", "c c #0000318CD6B4", "v c #000008429CE6", "b c #00000000318C", "n c #108410840842", "m c #0000294AB5AC", "M c #42106B5AF7BC", "N c #739C94A4F7BC", "B c #08424210FFFF", "V c #0000318CE738", "C c #000039CEDEF6", "Z c #00002108CE72", "A c #00002108AD6A", "S c #00000842294A", "D c #108418C62108", "F c #318C5AD6E738", "G c #52947BDEEF7A", "H c #0842318CC630", "J c #000039CED6B4", "K c #0000294ADEF6", "L c #0000294ABDEE", "P c #0000210894A4", "I c #18C6210839CE", "U c #18C639CEB5AC", "Y c #0842318CCE72", "T c #0842318CDEF6", "R c #08426318F7BC", "E c #08425AD6F7BC", "W c #000039CECE72", "Q c #0000294AC630", "! c #00002108B5AC", "~ c #00002108C630", "^ c #0000294AD6B4", "/ c #00001084B5AC", "( c #000018C6B5AC", ") c #000000002108", "_ c #39CE39CE5AD6", "` c #10844210C630", "' c #00005AD6DEF6", "] c #0842739CF7BC", "[ c #00004210D6B4", "{ c #00000000294A", "} c #421042105AD6", "| c #0842294ABDEE", " . c #08426318DEF6", ".. c #08426318E738", "X. c #08425AD6E738", "o. c #08424A52E738", "O. c #000039CEE738", "+. c #000008428420", "@. c #000000009CE6", "#. c #10845294D6B4", "$. c #08425294F7BC", "%. c #08424210EF7A", "&. c #10844210E738", "*. c #10841084294A", "=. c #000000004A52", "-. c #08424210D6B4", ";. c #0000294ACE72", ":. c #18C65294F7BC", ">. c #084218C67BDE", ",. c #108418C639CE", "<. c #0000000018C6", "1. c #000010849CE6", "2. c #00001084AD6A", "3. c #000039CEEF7A", "4. c #10845294F7BC", "5. c #294A5AD6F7BC", "6. c #318C6318F7BC", "7. c #21085294EF7A", "8. c #108421088C62", "9. c #18C621085AD6", "0. c #18C6108418C6", "q. c #000008426B5A", "w. c #0000084294A4", "e. c #00004210EF7A", "r. c #294A6318EF7A", "t. c #52947BDEF7BC", "y. c #084210848420", "u. c #000000001084", "i. c #0842318CBDEE", "p. c #294A5294CE72", "a. c #318C6318EF7A", "s. c #8C62A528FFFF", "d. c #BDEECE72F7BC", "f. c #6B5A8C62EF7A", "g. c #000008426318", "h. c #000008421084", "j. c #084218C6739C", "k. c #0000318CCE72", "l. c #0842294A9CE6", "z. c #294A5294D6B4", "x. c #94A4AD6AF7BC", "c. c #5AD68C62EF7A", "v. c #10844210D6B4", "b. c #108410841084", "n. c #084208420842", "m. c #08421084294A", "M. c #0000108439CE", "N. c #084210844210", "B. c #0000108494A4", "V. c #294A39CE7BDE", "C. c #18C618C66B5A", "Z. c #21084A52D6B4", "A. c #63188420EF7A", "S. c #18C66318DEF6", "D. c #08425AD6DEF6", "F. c #294A2108294A", "G. c #108410840000", "H. c #0000000039CE", "J. c #10842108AD6A", "K. c #08424A52F7BC", "L. c #084210841084", "P. c #63188C62F7BC", "I. c #294A421094A4", "U. c #0842084218C6", "Y. c #084210848C62", "T. c #42106318CE72", "R. c #294A294A318C", "E. c #108410842108", "W. c #08421084318C", "Q. c #18C621084210", ". . . . . . . . . X X o X X X X X X X . . ", ". . . . . . O + @ # $ % o o o o o o o o X X ", ". . . . . & * = - ; : > , < X X o o o o o X ", ". . . X 1 2 3 4 5 6 7 8 9 0 q . . . . . . . ", " . . w e r t y u i p a s d f . . . ", " . g h j k l z z x c v d 9 b ", " n m M N B z z V 8 C Z 9 s A S . ", " D c F G p p z Z H J a K s L P . . ", " . I U Y T x R E W Q ! ~ ^ / ( a ) . ", " . _ ` V V 9 ! ' ] [ ! 9 Z a a z { ", " . } | 9 ~ ~ W . ...X.o.V V a O.S . ", " n +.@.Z a a #.Q a x $.%.&.K L *.. ", " . =.d 9 ^ a -.;.V z z :.:.7 >.,.o . . . X . ", " . <.1.2.2.~ o.3.z z 4.5.6.7.| 8.9.0.X X X X ", " . . q.w.v 9 e.z z 3.r.t.6.y 5 6.a y.u.. . . ", ". . . . u.q.v Q O.z a ;.i.p.a.s.d.f.8 9 g.. ", "X . . X . h.j.k.;.^ 9 d : l.z.x.c.v.Q ~ s b.. ", "o o o o o X n.m.M.N.f B.V.C.Z.A.S.D.[ a c F.. ", "X o X o o o o o o X G.G.. H.J.r.- a K.6.- L. ", ". . . . X X X X o X . . . u.q.~ a 3.l P.I.X ", " . . . . . . . . U.Y.c 3.7.T.R.. ", " X o o O E.W.Q.w . . . ", " . . . . . . . . . . ", " "}; ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/timer1s.xpm�������������������������������������������������������0000644�0001750�0001750�00000001467�13431646202�015702� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "24 24 5 1", " c None", ". c #000000000000", "X c #7BDE7BDE7BDE", "o c #FFFFFFFFFFFF", "O c #FFFF00000000", " ", " ..... ", " X.X ", " .. X.X .. ", " X.. X.....X ..X ", " ....oo.OO.... ", " ..oooo.OOOO.. ", " .oooooo.OOOOO.. ", " XXoooooo.OOOO.oXX ", " .ooooooo.OOO.ooo. ", " XXooooooo.OO.ooooXX ", " .oooooooo.O.oooooo. ", " .oooooooo..ooooooo. ", " ....ooooo.ooooo.... ", " .ooooooooooooooooo. ", " .ooooooooooooooooo. ", " XXoooooooooooooooXX ", " .ooooooooooooooo. ", " XXoooooooooooooXX ", " .oooooo.oooooo. ", " .Xoooo.oooo.. ", " X..oo.oo..X ", " X.....X ", " "}; ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/timer5s.xpm�������������������������������������������������������0000644�0001750�0001750�00000001467�13431646202�015706� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "24 24 5 1", " c None", ". c #000000000000", "X c #7BDE7BDE7BDE", "o c #FFFFFFFFFFFF", "O c #FFFF00000000", " ", " ..... ", " X.X ", " .. X.X .. ", " X.. X.....X ..X ", " ....oo.OO.... ", " ..oooo.OOOO.. ", " .oooooo.OOOOO.. ", " XXoooooo.OOOOOOXX ", " .ooooooo.OOOOOOO. ", " XXooooooo.OOOOOOOXX ", " .oooooooo.OOOOOOOO. ", " .oooooooo.OOOOOOOO. ", " ....ooooo.OOOOO.... ", " .ooooooo.OOOOOOOOO. ", " .oooooo.OOOOOOOOOO. ", " XXoooo.OOOOOOOOOOXX ", " .ooo.OOOOOOOOOOO. ", " XXo.OOOOOOOOOOOXX ", " ..OOOOO.OOOOOO. ", " .XOOOO.OOOO.. ", " X..OO.OO..X ", " X.....X ", " "}; ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/speed1s.xpm�������������������������������������������������������0000644�0001750�0001750�00000001571�13431646202�015656� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "26 26 3 1", " c None", ". c #FFFFFFFF0000", "X c #000000000000", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ....... ", " .X.XX.X. ", " .X.XX.XX. ", " .X.XX.XXX. ", " .X.XX.XXXX. ", " .X.XX.XXX. ", " .X.XX.XX. ", " .X.XX.X. ", " ....... ", " ", " ", " ", " ", " ", " ", " ", " "}; ���������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/speed2s.xpm�������������������������������������������������������0000644�0001750�0001750�00000001571�13431646202�015657� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "26 26 3 1", " c None", ". c #FFFFFFFF0000", "X c #000000000000", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ........... ", " .X.XX.XXX.X. ", " .X.XX.XXX.XX. ", " .X.XX.XXX.XXX. ", " .X.XX.XXX.XXXX. ", " .X.XX.XXX.XXX. ", " .X.XX.XXX.XX. ", " .X.XX.XXX.X. ", " ........... ", " ", " ", " ", " ", " ", " ", " ", " "}; ���������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/newstyle.xpm������������������������������������������������������0000644�0001750�0001750�00000003152�13431646202�016161� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "39 33 8 1", " c #739C739C739C", ". c #4A524A524A52", "X c #000000000000", "o c #294A294A294A", "O c #084208420842", "+ c #FFFFFFFFFFFF", "@ c #AD6AAD6AAD6A", "# c #529452945294", " .X X", "oooooooooooooooOX ooooooooooooooooooooX", "oooooooooooooooOX ooooooooooooooooooooX", "oooooooooooooooOX ooooooooooooooooooooX", "oooooooooooooooOX ooooooooooooooooooooO", "oooooooooooooooOX ooooooooooooooooooooO", "oooooooooooooooOX ooooo++oooooo++oooooO", "oooooooooooooooOX ooooo+++oooo+++oooooO", "oooooooooooooooOX oooooo+++oo+++ooooooO", "oooooooooooooooOX ooooooo++++++oooooooO", "oooooooooooooooOX oooooooo++++ooooooooO", "oooooooooooooooOX oooooooo++++ooooooooO", "oooooooooooooooOX ooooooo++++++oooooooO", "oooooooooooooooOX oooooo+++oo+++ooooooO", "oooooooooooooooOX ooooo+++oooo+++oooooO", "oooooooooooooooOX ooooo++oooooo++oooooO", "oooooooooooooooOX ooooooooooooooooooooO", "oooooooooooooooOX ooooooooooooooooooooO", "oooooooooooooooOX ooooooooooooooooooooO", "oooooooooooooooOX ooooooooooooooooooooO", "OOOOOOOOOOOOOOOXX OOOOOOOOOOOOOOOOOOOOX", "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@X", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@X", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@X", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@X", "###################################+@@X", "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX@+@@X", "++++++++++++++++++++++++++++++++++@+@@X", "++++++++++++++++++++++++++++++++++@+@@X", "++++++++++++++++++++++++++++++++++@+@@X", "++++++++++++++++++++++++++++++++++@+@@X", "++++++++++++++++++++++++++++++++++@+@@X"}; ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/sound.xpm���������������������������������������������������������0000644�0001750�0001750�00000017546�13431646202�015453� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "48 48 145 2", " c None", ". c #294A294A294A", "X c #421042104210", "o c #529452945294", "O c #4A524A524A52", "+ c #631863186318", "@ c #6B5A6B5A6B5A", "# c #39CE39CE39CE", "$ c #318C39CE39CE", "% c #318C318C318C", "& c #39CE318C39CE", "* c #4A524A525294", "= c #52944A525294", "- c #52944A524A52", "; c #4A5242104A52", ": c #294A2108294A", "> c #210821082108", ", c #739C739C739C", "< c #39CE39CE4210", "1 c #421039CE39CE", "2 c #39CE421039CE", "3 c #421039CE4210", "4 c #210818C62108", "5 c #318C294A318C", "6 c #39CE318C294A", "7 c #318C294A294A", "8 c #294A294A2108", "9 c #39CE318C318C", "0 c #294A18C6294A", "q c #294A21082108", "w c #21082108294A", "e c #18C610841084", "r c #6B5A63186B5A", "t c #739C6B5A739C", "y c #5AD65AD66318", "u c #7BDE7BDE8420", "i c #529452945AD6", "p c #18C618C618C6", "a c #5AD65AD65AD6", "s c #210818C618C6", "d c #7BDE739C8420", "f c #108408420842", "g c #108410841084", "h c #63185AD66318", "j c #4A5242104210", "k c #18C6108418C6", "l c #6B5A63186318", "z c #739C6B5A6B5A", "x c #18C618C61084", "c c #6B5A6B5A739C", "v c #42104210318C", "b c #4A52421018C6", "n c #739C739C7BDE", "m c #5AD65AD62108", "M c #FFFFEF7A0000", "N c #8420842094A4", "B c #084208420842", "V c #4A5242100000", "C c #6B5A6B5A294A", "Z c #8C6284200000", "A c #DEF6D6B40000", "S c #5AD6529418C6", "D c #63185AD60000", "F c #108408421084", "G c #84207BDE4210", "H c #9CE694A46318", "J c #318C318C294A", "K c #F7BCE7380000", "L c #52944A5218C6", "P c #D6B4CE720000", "I c #000000000000", "U c #BDEEB5AC0000", "Y c #BDEEB5AC0842", "T c #B5ACAD6A2108", "R c #631863186B5A", "E c #421039CE0000", "W c #E738DEF60000", "Q c #63185AD62108", "! c #9CE694A40000", "~ c #CE72C6300000", "^ c #B5ACAD6A0000", "/ c #C630BDEE0000", "( c #B5ACAD6A0842", ") c #739C739C39CE", "_ c #E738D6B40000", "` c #CE72C6300842", "' c #9CE694A418C6", "] c #AD6AA5280000", "[ c #94A48C620842", "{ c #8C628C621084", "} c #EF7AE7380000", "| c #108410840000", " . c #A5289CE60000", ".. c #210821080842", "X. c #AD6A9CE60000", "o. c #94A494A40842", "O. c #84207BDE0000", "+. c #B5ACB5AC0842", "@. c #94A494A418C6", "#. c #84207BDE0842", "$. c #421042100000", "%. c #39CE39CE0000", "&. c #CE72BDEE0000", "*. c #94A48C621084", "=. c #8C6284200842", "-. c #529452940000", ";. c #AD6AA5280842", ":. c #7BDE7BDE0000", ">. c #D6B4CE720842", ",. c #52944A522108", "<. c #C630BDEE0842", "1. c #318C294A0842", "2. c #A5289CE60842", "3. c #294A294A0842", "4. c #4A5242100842", "5. c #318C294A0000", "6. c #4A524A520000", "7. c #6B5A63180842", "8. c #A5289CE61084", "9. c #94A48C620000", "0. c #739C6B5A0000", "q. c #210818C60000", "w. c #318C318C0842", "e. c #6B5A63180000", "r. c #63185AD60842", "t. c #7BDE739C0000", "y. c #DEF6D6B41084", "u. c #529452941084", "i. c #7BDE739C0842", "p. c #84207BDE18C6", "a. c #5AD652941084", "s. c #18C618C60842", "d. c #739C6B5A2108", "f. c #318C318C18C6", "g. c #AD6AA5281084", "h. c #52944210318C", "j. c #842084200842", "k. c #8C628420294A", "l. c #52945AD65AD6", "z. c #A5289CE62108", "x. c #318C318C39CE", "c. c #EF7ADEF60000", "v. c #739C6B5A318C", "b. c #5AD652946318", "n. c #63186318739C", " ", " ", " ", " . X o O O O o + @ @ @ + X X # $ $ $ # % ", " O O & % & * = = = = * - * O O O * ; ; O : > . ", " , . . : . % % $ & # < 1 2 # # # < # 3 : 4 . . ", " o . : % 5 5 . % $ & # 6 & 3 * 3 X < $ 7 4 8 . ", " X 4 . : > . < $ % $ $ 9 ; % . # # ; % 5 0 q 5 ", " X : w . e % % r t y r u i $ 1 w 3 & X . 0 q % ", " . . 4 p 9 * a s s > s s 3 d & ; > < < 5 0 q % ", " . . f . . = 4 . . . : 7 % % u 9 X > 1 5 s : % ", " . : g $ h % % . . s p . 5 # o @ j k # % 4 : % ", " . > p % h & % % > % ; s . & # u # % 7 % s : % ", " . k . # h & & - p l l z > < 9 , & X w $ s q . ", " . k . j h 9 9 a x O & x 3 & # c < ; s v b : . ", " . k > < @ 3 # o . . 3 - . 1 j n < X > m M : . ", " . > g . N 9 j v O > B q 3 1 j , 9 % x V M : . ", " . q B l X o X X 2 X O # 3 j o r C > : Z A S . ", " D D . : g F G H ; 1 O O # ; j ; u J K L p Z P S . B ", " I Z U . 4 k F Y T @ R 1 & v O y , % E W Q x ! ~ S . p M ", " I ^ U . p > B / ( < 3 R n n c ) _ 5 V ` ' k ] [ { 5 E } | ", " E E I .P . x > ..U X.> C } % % . o._ p O.+.@.g / #.{ . $._ %. ", " I ! ^ I &.~ *.=.> -. .;.B :.>.,.7 g .<.1.X.2.' 3.^ 4.<.w O.~ V U ", " I U ] 5.] ] 5.~ ` x .6.` g O.` m >.;.] ] %.] 7.` 4.8.$.<.x U 9.0.I W 5. ", " q.^ / %. . .%.U M w.` B >.> U 8.e.M ` &.Z D &.$.<.r.*.$.<.B <.9.0.5.~ e. 5.%.| ", "~ / . . . .! D ] O.t. .%.M ~ 0.#.B y.g M u.! M U ^ 0.Z .I M i.p.B M B M e.t.e.] / :.Z .9.:. ", "I | %.%.%.%.5.I t.] 0.t.e.M ! +.a.I ^ %.~ s.M U o.U -.X.! I M o.d.I M I M %. .! V M ] I I I ", "I I I I I I I Z ~ V 0.9.U e._ q B X.e.;.I M =.3.f.E / i.I ;.+.C I M E ` 5.] / | Z ] ", " I E } | V ^ / 5.( 4 B X.i.g.I x > . % 3.>.p.k X.<.h.I <.0.` I ~ ~ I I ", " I I M I %.~ *.I 4 k B j.^ k.l.a h y . B _ b g ! >.9 B / .z.I P ~ ", " I I | } m B 4 B 4 i.>.m k k s > O B *.< g #.>.& B U .z.I ~ ! ", " I I } m B x s x i.` ,.q : : 5 w g c % > 0.g.x.B #.A ) I Z 5. ", " I E . I g O > 6.c.q w F B k > . & y > F . & F O.A v.I I ", " I . B g . X %.c.. g > . q e . > R 7 1 w & F O.M X ", " . g > X # | ,.& g . . % k . . X ; j k & F E M ; ", " . g k 3 * 7 . j g . . 7 k . 5 9 a j F & F I 4 X ", " . B k $ R 9 & 1 : 4 > 4 k % 9 & i O F & k > k X ", " . B g o b.% 9 % # > B g 5 % % y 1 X k $ k . k X ", " . B k & $ y 5 % % 7 % % % & 7 c % % s & k 4 p X ", " . F 4 f b.O * . & % 7 % 9 . r < X e . & k > k X ", " . F w k x h * n.& > > > 9 c ; X % > 5 & p 4 > 5 ", " . F 7 q k w ; 3 i R c c l.& ; : . % 5 & > > a ", " . k . w q > : 5 ; 3 % X X 1 . . 7 % . < s # g ", " . p . : . . 7 . . . 9 5 . : . % 1 $ & 1 p X ", " . % . > . % % . > p p . % & & < # # < & X g ", " . o X X # # # O a & . p w % > ", " ", " "}; ����������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/paths.xpm���������������������������������������������������������0000644�0001750�0001750�00000046565�13431646202�015445� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * paths_xpm[] = { "48 48 936 2", " c None", ". c #2C2C2C", "+ c #FEFEFE", "@ c #8E8B8E", "# c #8F8B8F", "$ c #8F8C8F", "% c #928E92", "& c #918D91", "* c #928F92", "= c #938F93", "- c #949094", "; c #959195", "> c #969296", ", c #969396", "' c #979497", ") c #989598", "! c #999699", "~ c #9A969A", "{ c #9B979B", "] c #9C989C", "^ c #9C999C", "/ c #9E9A9E", "( c #9D999D", "_ c #908C90", ": c #8E8A8E", "< c #908D90", "[ c #939093", "} c #949194", "| c #959295", "1 c #979397", "2 c #989498", "3 c #999599", "4 c #9A979A", "5 c #9D9A9D", "6 c #9E9B9E", "7 c #908E90", "8 c #918E91", "9 c #888688", "0 c #6B6A6B", "a c #464646", "b c #343434", "c c #2E2E2E", "d c #484848", "e c #807E80", "f c #9B989B", "g c #9D9B9D", "h c #9F9B9F", "i c #6A686A", "j c #444444", "k c #454545", "l c #4B4B4B", "m c #515151", "n c #505050", "o c #333333", "p c #232323", "q c #606163", "r c #7F8186", "s c #8B888B", "t c #0A0A0A", "u c #525052", "v c #827E82", "w c #070704", "x c #1C1C13", "y c #595756", "z c #7E7C7E", "A c #7D7B7D", "B c #3C3C3C", "C c #414141", "D c #4D4D4D", "E c #575757", "F c #7C7C7C", "G c #545454", "H c #202020", "I c #8C898C", "J c #424242", "K c #9A9A9A", "L c #565656", "M c #5B595B", "N c #212116", "O c #8C8C5D", "P c #5A5A3B", "Q c #383825", "R c #625F62", "S c #777477", "T c #535253", "U c #353535", "V c #393939", "W c #3F3F3F", "X c #4A4A4A", "Y c #585858", "Z c #DDDDDD", "` c #ECECEC", " . c #9B9B9B", ".. c #636363", "+. c #3E3E3E", "@. c #9F9C9F", "#. c #8C8A8C", "$. c #4F4F4F", "%. c #FFFFFF", "&. c #F4F4F4", "*. c #8F8F8B", "=. c #81816D", "-. c #7C7C5C", ";. c #8E8E61", ">. c #525236", ",. c #4D4D3B", "'. c #444244", "). c #868286", "!. c #434143", "~. c #484648", "{. c #959395", "]. c #404040", "^. c #373737", "/. c #535353", "(. c #D9D9D9", "_. c #E4E4E4", ":. c #DBDBDB", "<. c #696969", "[. c #434343", "}. c #272727", "|. c #545354", "1. c #A09DA0", "2. c #8D8A8D", "3. c #F9F9F9", "4. c #E1E1E0", "5. c #BABAB5", "6. c #84847A", "7. c #967563", "8. c #837D57", "9. c #6C6C48", "0. c #38372F", "a. c #31302B", "b. c #74744D", "c. c #76754F", "d. c #776F4F", "e. c #705A4C", "f. c #262526", "g. c #575557", "h. c #323232", "i. c #363636", "j. c #3A3A3A", "k. c #3D3D3D", "l. c #D4D4D4", "m. c #7B7B7B", "n. c #525152", "o. c #2D2D23", "p. c #6D6D49", "q. c #21211A", "r. c #716F70", "s. c #7C797C", "t. c #4F4F4C", "u. c #FFFFF6", "v. c #FFFFFB", "w. c #FFFFFD", "x. c #FFFFFE", "y. c #FCFCFC", "z. c #F7F7F7", "A. c #CBC9C8", "B. c #83827D", "C. c #83836C", "D. c #7D7D5A", "E. c #88855B", "F. c #959463", "G. c #989865", "H. c #9B9A67", "I. c #9C9A67", "J. c #88885B", "K. c #474730", "L. c #626062", "M. c #949294", "N. c #474747", "O. c #313131", "P. c #888888", "Q. c #737373", "R. c #707070", "S. c #CDCDCD", "T. c #D5D5D5", "U. c #DEDEDE", "V. c #838383", "W. c #5C5B5C", "X. c #827F82", "Y. c #46462E", "Z. c #BABA7A", "`. c #58583A", " + c #353524", ".+ c #686858", "++ c #DFDFCE", "@+ c #F5F5E6", "#+ c #FFFFF2", "$+ c #FFFFF7", "%+ c #FFFFFC", "&+ c #F8F8F8", "*+ c #CFCFCF", "=+ c #959595", "-+ c #9D8C83", ";+ c #848065", ">+ c #888761", ",+ c #909061", "'+ c #959563", ")+ c #6B6B47", "!+ c #52504C", "~+ c #6B696B", "{+ c #2F2F2F", "]+ c #8C8C8C", "^+ c #BABABA", "/+ c #BFBFBF", "(+ c #C3C3C3", "_+ c #C9C9C9", ":+ c #CECECE", "<+ c #6C6A6C", "[+ c #A09CA0", "}+ c #838083", "|+ c #44442C", "1+ c #B6B676", "2+ c #B4B475", "3+ c #AFAF74", "4+ c #A8A776", "5+ c #A3A17F", "6+ c #BEBE9E", "7+ c #C8C8BA", "8+ c #FFFFEB", "9+ c #FFFFF1", "0+ c #FFFFFA", "a+ c #E8E8E8", "b+ c #B9B9B9", "c+ c #A0A097", "d+ c #818168", "e+ c #87875E", "f+ c #8E8E5E", "g+ c #929261", "h+ c #373724", "i+ c #7B787B", "j+ c #5E5D5E", "k+ c #383838", "l+ c #868686", "m+ c #B5B5B5", "n+ c #BDBDBD", "o+ c #C2C2C2", "p+ c #C6C6C6", "q+ c #CACACA", "r+ c #4C4C4C", "s+ c #626569", "t+ c #5A5852", "u+ c #7D7D50", "v+ c #B2B272", "w+ c #B0B070", "x+ c #AFAF6F", "y+ c #ADAC6E", "z+ c #A8A76C", "A+ c #A09F7B", "B+ c #BEBBA2", "C+ c #C2B7B3", "D+ c #EBE3DB", "E+ c #FFFFED", "F+ c #FFFFF9", "G+ c #EEEEEE", "H+ c #D5D5D3", "I+ c #8F8F82", "J+ c #858559", "K+ c #333322", "L+ c #5B5A5B", "M+ c #8D8D8D", "N+ c #A7A7A7", "O+ c #B1B1B1", "P+ c #B4B4B4", "Q+ c #B8B8B8", "R+ c #BCBCBC", "S+ c #C0C0C0", "T+ c #949494", "U+ c #868486", "V+ c #A19DA1", "W+ c #A19EA1", "X+ c #666366", "Y+ c #62623E", "Z+ c #ADAD6D", "`+ c #ACAC6C", " @ c #AAAA6A", ".@ c #A9A969", "+@ c #A7A769", "@@ c #A5A46A", "#@ c #A09E6B", "$@ c #9C9B72", "%@ c #979776", "&@ c #BFBFAA", "*@ c #F7F7E2", "=@ c #FCFCEA", "-@ c #B3B3B0", ";@ c #7D7D53", ">@ c #343324", ",@ c #7E7B7E", "'@ c #767476", ")@ c #777777", "!@ c #A6A6A6", "~@ c #B0B0B0", "{@ c #B2B2B2", "]@ c #B3B3B3", "^@ c #2D2D2D", "/@ c #A29EA2", "(@ c #A29FA2", "_@ c #666466", ":@ c #60603C", "<@ c #ABAB6B", "[@ c #A8A868", "}@ c #A7A767", "|@ c #A6A666", "1@ c #A5A565", "2@ c #A3A363", "3@ c #A2A262", "4@ c #9F9F61", "5@ c #9B9B62", "6@ c #919166", "7@ c #919076", "8@ c #C3C2A8", "9@ c #E3DEC3", "0@ c #FDFCE6", "a@ c #FFFFEE", "b@ c #FFFFF4", "c@ c #9C9C99", "d@ c #73734C", "e@ c #42422C", "f@ c #615E61", "g@ c #828082", "h@ c #757475", "i@ c #646464", "j@ c #A39FA3", "k@ c #A4A0A4", "l@ c #A2A0A2", "m@ c #817F81", "n@ c #545340", "o@ c #95955C", "p@ c #A4A464", "q@ c #A1A161", "r@ c #A0A060", "s@ c #9F9F5F", "t@ c #9E9E5E", "u@ c #9C9C5C", "v@ c #9B9B5B", "w@ c #99985C", "x@ c #94935A", "y@ c #928859", "z@ c #C4C3A4", "A@ c #F4F4DE", "B@ c #FFFFE7", "C@ c #767671", "D@ c #6A6A46", "E@ c #3C3C28", "F@ c #615F61", "G@ c #8A878A", "H@ c #727172", "I@ c #595859", "J@ c #717071", "K@ c #A5A1A5", "L@ c #A3A0A3", "M@ c #484748", "N@ c #7A7A4B", "O@ c #9A9A5A", "P@ c #999959", "Q@ c #979757", "R@ c #969656", "S@ c #959555", "T@ c #949454", "U@ c #858562", "V@ c #DDDDC6", "W@ c #FFFFD9", "X@ c #FDFDDC", "Y@ c #5F5F57", "Z@ c #606040", "`@ c #373729", " # c #625F65", ".# c #A4A1A4", "+# c #494749", "@# c #787848", "## c #9D9D5D", "$# c #989858", "%# c #939353", "&# c #929252", "*# c #909050", "=# c #938D6A", "-# c #CFCFB7", ";# c #FFFFCB", "># c #FAFACF", ",# c #57574A", "'# c #45452E", ")# c #41403F", "!# c #928E93", "~# c #A6A2A6", "{# c #A5A2A5", "]# c #676740", "^# c #9A9A5B", "/# c #919151", "(# c #8E8E4E", "_# c #8D8D4D", ":# c #8C8C4C", "<# c #8D8D54", "[# c #BEBDA3", "}# c #FFFFBB", "|# c #E6E6C3", "1# c #555543", "2# c #454445", "3# c #9A969B", "4# c #808091", "5# c #636590", "6# c #5B5AA7", "7# c #5A56B4", "8# c #5D5A9E", "9# c #737383", "0# c #9B999D", "a# c #947777", "b# c #8C7675", "c# c #A7A3A7", "d# c #2A292A", "e# c #8F8F53", "f# c #8B8B4B", "g# c #898949", "h# c #888848", "i# c #87864E", "j# c #ADAC90", "k# c #FFFFAC", "l# c #CCCCAE", "m# c #4C4C3A", "n# c #2F2E25", "o# c #676567", "p# c #99959A", "q# c #67639A", "r# c #5858C3", "s# c #5050C4", "t# c #4E4EC6", "u# c #4E4FC3", "v# c #28296E", "w# c #282F36", "x# c #949496", "y# c #915B62", "z# c #6A2F2E", "A# c #989193", "B# c #A8A4A8", "C# c #A6A3A6", "D# c #8B8B4F", "E# c #8F8F4F", "F# c #8A8A4A", "G# c #878747", "H# c #868646", "I# c #858545", "J# c #838348", "K# c #A7A57A", "L# c #FFFF9F", "M# c #B0B092", "N# c #3C3C2E", "O# c #282728", "P# c #73709A", "Q# c #5955C4", "R# c #594DB3", "S# c #8A616D", "T# c #7E4F84", "U# c #534DAC", "V# c #2E3766", "W# c #72676D", "X# c #969797", "Y# c #6B4F51", "Z# c #938A8D", "`# c #A7A4A7", " $ c #A9A5A9", ".$ c #8B878B", "+$ c #383823", "@$ c #848444", "#$ c #838343", "$$ c #828242", "%$ c #808043", "&$ c #A39F7D", "*$ c #F8F8B6", "=$ c #959573", "-$ c #2F2F23", ";$ c #605BA8", ">$ c #504EC6", ",$ c #564BAE", "'$ c #602E37", ")$ c #A8571B", "!$ c #624071", "~$ c #373C93", "{$ c #6F6C7A", "]$ c #C6CBB7", "^$ c #E5E6EB", "/$ c #82787A", "($ c #A09B9F", "_$ c #A8A5A8", ":$ c #AAA6AA", "<$ c #ABA7AB", "[$ c #1C1C14", "}$ c #818141", "|$ c #808040", "1$ c #7F7F3F", "2$ c #7D7D3D", "3$ c #7C7B3C", "4$ c #98946B", "5$ c #E5E4A6", "6$ c #797952", "7$ c #0F0F0F", "8$ c #6F6E6F", "9$ c #9F9D9F", "0$ c #5E56AF", "a$ c #4F4DC9", "b$ c #514FCB", "c$ c #454AAA", "d$ c #915940", "e$ c #8B3B2B", "f$ c #432D33", "g$ c #5E5659", "h$ c #D6D8D0", "i$ c #F5F9FB", "j$ c #898C8A", "k$ c #41403C", "l$ c #5E5E32", "m$ c #756F37", "n$ c #888443", "o$ c #7C7C3C", "p$ c #7A7A3A", "q$ c #797939", "r$ c #787838", "s$ c #898559", "t$ c #D2D18A", "u$ c #636337", "v$ c #6F6F6F", "w$ c #929192", "x$ c #595498", "y$ c #4F4EC3", "z$ c #5150BC", "A$ c #383D8A", "B$ c #432A20", "C$ c #804320", "D$ c #B36225", "E$ c #735D4E", "F$ c #DFE6E4", "G$ c #F8F9FA", "H$ c #9E9E9D", "I$ c #757275", "J$ c #A9A6A9", "K$ c #ACA8AC", "L$ c #514735", "M$ c #443E1D", "N$ c #827332", "O$ c #7E7E3E", "P$ c #777737", "Q$ c #767636", "R$ c #747434", "S$ c #7B784B", "T$ c #B7B58E", "U$ c #070708", "V$ c #787878", "W$ c #7F7F7F", "X$ c #6B6393", "Y$ c #4E4FC7", "Z$ c #4D50CB", "`$ c #4B44AC", " % c #6F6E7D", ".% c #EAE5E1", "+% c #DD804F", "@% c #B18171", "#% c #EEF8E7", "$% c #F4FAF8", "%% c #888489", "&% c #6E6A73", "*% c #ABA8AB", "=% c #362D18", "-% c #3A3518", ";% c #766B2F", ">% c #757535", ",% c #737333", "'% c #717131", ")% c #747042", "!% c #938D89", "~% c #343438", "{% c #19191A", "]% c #666666", "^% c #6D6D6D", "/% c #939193", "(% c #929098", "_% c #4C5384", ":% c #494FB5", "<% c #4345A1", "[% c #777D93", "}% c #F6F7FA", "|% c #C69A6C", "1% c #B66E1E", "2% c #E38B59", "3% c #D5CAC9", "4% c #3E4336", "5% c #7E7D77", "6% c #ACA9AC", "7% c #767373", "8% c #191610", "9% c #4C3D19", "0% c #6C682D", "a% c #717031", "b% c #707030", "c% c #6F6F2F", "d% c #6D6D2D", "e% c #726B39", "f% c #82786D", "g% c #292929", "h% c #303030", "i% c #686868", "j% c #757575", "k% c #929092", "l% c #7C8F7E", "m% c #53695C", "n% c #3E3D4D", "o% c #5F546C", "p% c #BAB1B4", "q% c #F7FAEE", "r% c #EDE5DF", "s% c #B3A8A9", "t% c #BA722F", "u% c #462F22", "v% c #4F5323", "w% c #707254", "x% c #AAA7AA", "y% c #5A575A", "z% c #423513", "A% c #5A5824", "B% c #696629", "C% c #6A6A2A", "D% c #696929", "E% c #69672A", "F% c #504D31", "G% c #5A5A5A", "H% c #41B246", "I% c #26EB28", "J% c #3C9439", "K% c #496A46", "L% c #8B898F", "M% c #CAC8CF", "N% c #A29383", "O% c #A55C1E", "P% c #5F451A", "Q% c #BFC054", "R% c #57553D", "S% c #3E3931", "T% c #353012", "U% c #4E4E24", "V% c #646425", "W% c #646424", "X% c #323211", "Y% c #5D5D5D", "Z% c #537E54", "`% c #136A15", " & c #156317", ".& c #295928", "+& c #313E31", "@& c #34362F", "#& c #2A2E21", "$& c #434129", "%& c #655417", "&& c #B4B440", "*& c #AAB334", "=& c #444533", "-& c #2A2A25", ";& c #292710", ">& c #504725", ",& c #2D2C11", "'& c #1E1E1E", ")& c #7F7D7F", "!& c #706E70", "~& c #6E6C6E", "{& c #7A787A", "]& c #959296", "^& c #858283", "/& c #625E57", "(& c #3D362B", "_& c #33351C", ":& c #6C6A6D", "<& c #8D898D", "[& c #747174", "}& c #0D0A07", "|& c #1C1C17", "1& c #6D6A6D", "2& c #01100F", "3& c #001212", "4& c #011415", "5& c #031414", "6& c #001615", "7& c #001617", "8& c #011615", "9& c #011712", "0& c #000E0E", "a& c #C4C2C9", "b& c #EAEBF0", "c& c #EBECED", "d& c #EBECF0", "e& c #EAEAF3", "f& c #ECECF4", "g& c #E7E7ED", "h& c #E1E1E3", "i& c #D8D9D7", "j& c #CFD2D7", "k& c #82818A", "l& c #00191A", "m& c #001B1D", "n& c #2E484A", "o& c #283C3E", "p& c #031B22", "q& c #011D24", "r& c #021B21", "s& c #2E4246", "t& c #36484A", "u& c #192F33", "v& c #02181C", "w& c #021418", "x& c #AAAAAA", "y& c #A5A5A5", "z& c #A0A0A0", "A& c #989898", "B& c #929292", "C& c #C9C7CD", "D& c #B1B2B9", "E& c #4C4C59", "F& c #504F62", "G& c #54526A", "H& c #524F67", "I& c #4E4B5F", "J& c #484654", "K& c #494850", "L& c #BABBC3", "M& c #6D6B75", "N& c #031E24", "O& c #022226", "P& c #213A40", "Q& c #D7E4E8", "R& c #3E565A", "S& c #02292C", "T& c #002A2C", "U& c #13363A", "V& c #90A9AC", "W& c #092A2C", "X& c #002325", "Y& c #011C21", "Z& c #828282", "`& c #C8C6CB", " * c #A0A0A7", ".* c #302C48", "+* c #443D67", "@* c #49436B", "#* c #403961", "$* c #352E59", "%* c #2B2549", "&* c #242136", "** c #B6B7BD", "=* c #696A6F", "-* c #002C31", ";* c #003033", ">* c #023333", ",* c #608486", "'* c #C5D8DA", ")* c #2D5350", "!* c #03333A", "~* c #033337", "{* c #608284", "]* c #023134", "^* c #003030", "/* c #012A2E", "(* c #7A7A7A", "_* c #C5C5C8", ":* c #A1A0AA", "<* c #383354", "[* c #4E4675", "}* c #504875", "|* c #474169", "1* c #3B345D", "2* c #302A4D", "3* c #262239", "4* c #B5B6BC", "5* c #68686D", "6* c #01373C", "7* c #033840", "8* c #023C43", "9* c #437075", "0* c #39686D", "a* c #D3DAE2", "b* c #23565C", "c* c #043D46", "d* c #62878B", "e* c #023B43", "f* c #02393C", "g* c #023239", "h* c #A0A0A8", "i* c #322D4B", "j* c #3C3561", "k* c #3F3862", "l* c #3C365A", "m* c #363053", "n* c #2D2848", "o* c #252138", "p* c #ACADB5", "q* c #636469", "r* c #02424B", "s* c #02464F", "t* c #014A52", "u* c #3F7A81", "v* c #025153", "w* c #477C82", "x* c #C6DAD8", "y* c #195A5C", "z* c #629397", "A* c #014954", "B* c #01484E", "C* c #033F48", "D* c #A2A2A7", "E* c #9F9FA6", "F* c #27243A", "G* c #2C264A", "H* c #302A4C", "I* c #2E2946", "J* c #2A2544", "K* c #272141", "L* c #A2A3AB", "M* c #606066", "N* c #03505D", "O* c #035560", "P* c #05575C", "Q* c #47858A", "R* c #075964", "S* c #035F63", "T* c #639D9E", "U* c #B6D1D7", "V* c #739FA2", "W* c #075661", "X* c #00565E", "Y* c #015059", "Z* c #676767", "`* c #A09D9F", " = c #ADABB2", ".= c #5A5663", "+= c #5A5564", "@= c #5B5566", "#= c #5B5665", "$= c #5D5666", "%= c #5D5469", "&= c #595764", "*= c #A09EA6", "== c #5E5C63", "-= c #155B66", ";= c #114A52", ">= c #133E42", ",= c #7E979C", "'= c #0E2427", ")= c #041616", "!= c #06151B", "~= c #464B47", "{= c #475456", "]= c #123A44", "^= c #124E56", "/= c #165A63", "(= c #616161", "_= c #AAAAAD", ":= c #BABABF", "<= c #B2B4B9", "[= c #A9ABB2", "}= c #A0A2AB", "|= c #999BA0", "1= c #939293", "2= c #87868A", "3= c #6E7372", "4= c #6E6D73", "5= c #5A585F", "6= c #010910", "7= c #010303", "8= c #333231", "9= c #656768", "0= c #2B2B2B", "a= c #020202", "b= c #000000", "c= c #020000", "d= c #020205", "e= c #060D13", "f= c #707075", "g= c #67666A", "h= c #737476", "i= c #6D6F73", "j= c #6A6B72", "k= c #43444F", "l= c #1B1926", "m= c #413F49", "n= c #414650", "o= c #525159", "p= c #807D82", "q= c #020004", "r= c #010100", "s= c #020200", "t= c #040003", "u= c #020102", "v= c #010101", "w= c #000100", "x= c #050004", "y= c #525252", "z= c #BCBAC1", "A= c #98979C", "B= c #A19DA4", "C= c #9C98A0", "D= c #9995A1", "E= c #9B97A3", "F= c #9C95A0", "G= c #9C969C", "H= c #82808B", "I= c #777580", "J= c #62656E", "K= c #000002", "L= c #010000", "M= c #000001", "N= c #000201", "O= c #CACDD0", "P= c #D4D6D7", "Q= c #D9D9DB", "R= c #D7D7D8", "S= c #D5D4D6", "T= c #CCCCCF", "U= c #C7C6CB", "V= c #ADABB1", "W= c #86858B", "X= c #9D9EA3", "Y= c #7D8087", "Z= c #00000A", "`= c #010008", " - c #010007", ".- c #000006", "+- c #000105", "@- c #010009", "#- c #000109", "$- c #B0B3B8", "%- c #A3A5AA", "&- c #A3A3A8", "*- c #9E9EA3", "=- c #98989D", "-- c #8F8F95", ";- c #8C8B92", ">- c #84848C", ",- c #75757D", "'- c #6B6D75", ")- c #4C4E57", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + ", ". @ # $ % & % * = - ; ; > , ' ' ) ! ! ~ { ] ^ / / ( ^ ] { ~ ! ! ) ' ' , > ; ; - = * % & _ $ # + ", ". : _ < % % = [ [ } | | , 1 2 2 3 ~ 4 { ] ( 5 / 6 / 5 ( ] { 4 ~ 3 2 2 1 , | | } [ [ = % & < _ + ", ". : < 7 8 * 9 0 a b c d e 1 3 3 ~ { f f ^ 5 g 6 h 6 g 5 ^ f f { ~ 3 3 2 1 > > ; - [ [ * 8 7 < + ", ". : & 8 & i j k l m n o p q r ' 4 f f ] ( / s t u v 7 w x y z f 4 ! ! ) 2 1 1 > ; } - = % 8 & + ", ". : % * A B B C d D E F G H c d { ] ^ ( / h I J K L M N O P Q R S ~ ~ ! ) ' ' , > | ; - = * % + ", ". : = [ T U V W j X Y Z ` ...+.] ( 5 / h @.#.$.%.&. .*.=.-.;.>.,.'.)._ !.!.!.~., {.| } [ [ = + ", ". : = [ ].U ^.B C a /.(._.:.<.[.( 5 }.|.@.1.2.$.%.%.%.3.4.5.6.7.8.9.0.a.b.c.d.e.f.g.> ; - [ = + ", ". : - } W h.i.j.k.C m l.Z _.m.n.5 / o.p.q.r.s.t.u.v.w.x.%.y.z.A.B.C.D.E.F.G.H.I.J.K.L.> ; } - + ", ". : } M.N.O.b m.P.Q.R.S.T.U.V.W./ h X.Y.Z.`. +.+++@+#+$+%+x.%.%.&+*+=+-+;+>+,+'+G.)+!+@ | M.} + ", ". : ; | ~+{+h.]+^+/+(+_+:+T.Q.<+h [+}+|+1+2+3+4+5+6+7+8+9+u.0+%+%.%.%.a+b+c+d+e+f+g+h+i+> | ; + ", ". : > , j+U k+l+m+b+n+o+p+q+r+s+@.[+' t+u+v+w+x+y+z+A+B+C+D+E+#+$+F+w.%.%.G+H+I+J+J.K+s.1 , > + ", ". : 1 ' L+^.M+N+O+P+Q+R+S+T+O.U+[+V+W+X+Y+x+Z+`+ @.@+@@@#@$@%@&@*@=@9+u.0+x.x.-@;@;@>@,@' ' 1 + ", ". : 1 ' '@X W )@!@~@{@]@P.J ^@* V+/@(@_@:@<@ @[@}@|@1@2@3@4@5@6@7@8@9@0@a@b@0+c@d@e@f@3 2 ' 1 + ", ". : 2 ! 2 1 8 g@h@Q.i@a ^.V k+^ j@k@l@m@n@o@|@1@p@3@q@r@s@t@u@v@w@x@y@z@A@B@8+C@D@E@F@~ 3 ) 2 + ", ". : 3 4 ~ { ] ^ ( ( { G@H@I@J@/@k@K@L@k@M@N@2@q@r@s@t@u@v@O@P@Q@R@S@T@U@V@W@X@Y@Z@`@ #{ ~ ! 3 + ", ". : 3 f { ] ( 5 / h [+[+V+/@j@j@k@K@.#K@+#@#s@t@##v@O@P@$#R@S@T@%#&#*#=#-#;#>#,#'#)#!#{ ~ ! 3 + ", ". : ~ f { ] ( 5 / h [+[+V+/@j@j@K@~#{#~#M ]#^#v@P@$#R@S@T@%#/#*#(#_#:#<#[#}#|#1#Q 2#( ] { 4 ~ + ", ". : { ^ ] 3#4#5#6#7#8#9#0#a#b#j@~#c#{#~#c#d#e#Q@R@S@%#&#/#*#(#:#f#g#h#i#j#k#l#m#n#o#/ ( ] f { + ", ". : { 5 p#q#r#s#t#u#v#w#x#y#z#A#c#B#C#c#B#d#D#T@&#/#*#E#_#:#F#g#G#H#I#J#K#L#M#N#O#6 / ( ] f { + ", ". : ] 5 P#Q#R#S#T#U#V#W#X#} Y#Z#c#B#`#B# $.$+$*#E#(#:#F#g#h#H#I#@$#$$$%$&$*$=$-$O#@.h / ( ^ ] + ", ". : ( 6 ;$>$,$'$)$!$~${$]$^$/$($B# $_$ $:$<$[$:#F#g#G#H#I#@$#$}$|$1$2$3$4$5$6$7$8$9$[+h / 5 ( + ", ". : ( 5 0$a$b$c$d$e$f$g$h$i$j$8 c#B#_$ $:$<$k$l$m$n$@$#$}$|$1$2$o$p$q$r$s$t$u$t v$w$) ( / 5 ( + ", ". : / 5 x$y$z$A$B$C$D$E$F$G$H$I$c#B#J$:$<$K$(@g.L$M$N$|$O$2$o$q$r$P$Q$R$S$T$,.U$<.V$W$7 h 6 / + ", ". : ( ^ X$Y$Z$`$ %.%+%@%#%$%%%&%~#c#_$ $:$<$*%K$= S =%-%;%q$r$Q$>%R$,%'%)%!%~%{%]%^%F /%/ 5 ( + ", ". : ( f (%_%:%<%[%}%|%1%2%3%4%5%K@~#_$ $:$<$*%*%6%*%! 7%8%9%0%a%'%b%c%d%e%f%g%h%i%j%k%h / 5 ( + ", ". : ] f l%m%n%o%p%q%r%s%t%u%v%w%k@K@`#B# $:$x%<$K$<$x%:$ $y%d#z%A%B%C%D%E%F%7$G%)@k%h / ( ^ ] + ", ". : { 4 H%I%J%K%L%M%o+N%O%P%Q%R%k@K@C#c#B# $J$:$<$:$J$ $B#c#C#+#S%T%U%V%W%X%t Y%k%6 / ( ] f { + ", ". : { ! Z%`% &.&+&@&#&$&%&&&*&=&j@k@{#~#c#B#_$ $:$ $_$B#c#~#{#K@2._@-&;&>&,&'&)&6 6 / ( ] f { + ", ". : ~ ! 1 !&~&{&1 h ]&^&/&(&_&:&/@j@{#~#c#B#_$_$J$_$_$B#c#~#{#K@k@j@<&[&}&|&1&( / 5 ( ] { 4 ~ + ", ". : 3 ) 3 ~ { f ] ( / / h [+V+V+/@(@.#K@~#c#`#B# $B#`#c#~#K@.#k@j@/@/@V+[+h h / ( ^ ] { ~ ! 3 + ", ". : 3 ! ~ { ] ^ ^ 5 6 6 @.[+V+V+/@j@L@k@K@~#C#c#B#c#C#~#K@k@L@j@/@V+V+[+@.6 6 5 ^ ^ ] { ~ ! 3 + ", ". : 2 ) 2&3&4&5&6&7&8&9&9&6&3&0&/@(@L@S+S+S+S+S+S+S+S+S+S+S+S+/@/@V+a&b&c&d&e&f&g&h&i&j&k&) 2 + ", ". : 1 ' l&m&n&o&p&q&r&s&t&u&v&w&V+/@j@S+n+Q+~@x&y&z&A&B&M+P.].V+V+[+C&D&E&F&G&H&I&J&K&L&M&' 1 + ", ". : 1 ' N&O&P&Q&R&S&T&U&V&W&X&Y&[+V+/@S+Q+~@x&y&z&A&B&M+P.Z&].[+h h `& *.*+*@*#*$*%*&***=*1 1 + ", ". : > , -*;*>*,*'*)*!*~*{*]*^*/*@.[+V+S+~@x&y&z&A&B&M+P.Z&(*].@.6 6 _*:*<*[*}*|*1*2*3*4*5*> > + ", ". : ; | 6*7*8*9*0*a*b*c*d*e*f*g*h [+1.S+x&y&z&A&B&M+P.Z&(*Q.].h / / `&h*i*j*k*l*m*n*o*p*q*; ; + ", ". : } M.r*s*t*u*v*w*x*y*z*A*B*C*/ h [+S+y&z&A&B&M+P.Z&(*Q.^%]./ ( / D*E*F*G*H*I*J*K*3*L*M*} } + ", ". : - } N*O*P*Q*R*S*T*U*V*W*X*Y*5 / h S+z&A&B&M+P.Z&(*Q.^%Z*].5 ^ ( `* =.=+=@=#=$=%=&=*===- - + ", ". : = [ -=;=>=,='=)=!=~={=]=^=/=( 5 6 S+A&B&M+P.Z&(*Q.^%Z*(=].( ] ] _=:=<=[=}=|=1=2=3=4=5== = + ", ". : = [ 6=7=8=9=0=a=b=b=b=c=d=e=] ( / S+B&M+P.Z&(*Q.^%Z*(=Y ].] { { f=g=h=i=j=k=l=m=n=o=p== = + ", ". : % * q=r=s=t=u=v=b=b=b=w=r=x={ ] ( S+M+P.Z&(*Q.^%Z*(=Y y=].{ ~ ~ z=A=B=C=D=E=F=G=H=I=J=% % + ", ". : & 8 K=w=w=b=b=b=b=b=L=M=N=N=4 f ] S+P.Z&(*Q.^%Z*(=Y y=r+].4 ! ! O=P=Q=R=S=T=U=V=W=X=Y=& & + ", ". : < 7 Z=`= -.-.-.-.-.-+-`=@-#-~ { f S+].].].].].].].].].].].~ ~ 3 $-%-&-*-=---;->-,-'-)-7 < + ", ". : _ < & % = [ [ } | | , 1 2 2 3 ~ 4 { ] ( 5 / 6 / 5 ( ] { 4 ~ 3 2 2 1 , | | } [ [ = % & < _ + ", ". : # $ _ & % * = - ; ; > , ' ' ) ! ! ~ { ] ^ ( / ( ^ ] { ~ ! ! ) ' ' , > ; ; - = * % & _ $ # + ", ". : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : + ", "+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + "}; �������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/menualign2.xpm����������������������������������������������������0000644�0001750�0001750�00000002427�13431646202�016354� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "32 32 5 1", " c None", ". c #000000000000", "X c #AD6AAD6AAD6A", "o c #529452945294", "O c #FFFFFFFFFFFF", " ", " ", " ", " .............................. ", " .XXXXXXXXXXXXXX..XXXXXXXXXXXX. ", " .X............o..X..........o. ", " .X............o..X..........o. ", " .oooooooooooooo..oooooooooooo. ", " .............................. ", " .OOOOOOOOOOOOOO..OOOOOOOOOOOO. ", " .OXXXXXXXXXXXXo..OXXXXXXXXXXo. ", " .OXXXXXXXXXXXXo..OXXXXXXXXXXo. ", " .oooooooooooooo..oooooooooooo. ", " .............................. ", " .OOOOOOOOOOOOOO..OOOOOOOOOOOO. ", " .OXXXXXXXXXXXXo..OXXXXXXXXXXo. ", " .OXXXXXXXXXXXXo..OXXXXXXXXXXo. ", " .oooooooooooooo..oooooooooooo. ", " .............................. ", " .OOOOOOOOOOOOOO..OOOOOOOOOOOO. ", " .OOOOOOOOOOOOOo..OXXXXXXXXXXo. ", " .OOOOOOOOOOOOOo..OXXXXXXXXXXo. ", " .oooooooooooooo..oooooooooooo. ", " .............................. ", " .OOOOOOOOOOOOOO. ", " .OXXXXXXXXXXXXo. ", " .OXXXXXXXXXXXXo. ", " .oooooooooooooo. ", " ................ ", " ", " ", " "}; �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/speed0.xpm��������������������������������������������������������0000644�0001750�0001750�00000001370�13431646202�015467� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "24 24 2 1", " c None", ". c #210839CE7BDE", " ", " ", " ", " ", " ", " ", " ", " ", " ", " . . ", " . .. ", " . ... ", " . .... ", " . ... ", " . .. ", " . . ", " ", " ", " ", " ", " ", " ", " ", " "}; ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/dock.xpm����������������������������������������������������������0000644�0001750�0001750�00000017314�13431646202�015234� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "48 48 138 2", " c None", ". c #CE72CE72CE72", "X c #9CE69CE69CE6", "o c #94A494A494A4", "O c #9CE6A528A528", "+ c #AD6ABDEEBDEE", "@ c #294A294A294A", "# c #4A524A524A52", "$ c #318C318C318C", "% c #E738E738E738", "& c #F7BCF7BCF7BC", "* c #B5ACB5ACB5AC", "= c #A528B5ACB5AC", "- c #8C6294A494A4", "; c #739C739C739C", ": c #6B5A6B5A6B5A", "> c #39CE39CE39CE", ", c #9CE6B5ACB5AC", "< c #421042104210", "1 c #7BDE7BDE7BDE", "2 c #842084208420", "3 c #D6B4D6B4D6B4", "4 c #DEF6DEF6DEF6", "5 c #8C628C628C62", "6 c #B5ACBDEEBDEE", "7 c #AD6AAD6AAD6A", "8 c #BDEEBDEEBDEE", "9 c #84208C628C62", "0 c #6B5A739C739C", "q c #94A49CE69CE6", "w c #6B5A7BDE7BDE", "e c #294A318C318C", "r c #5AD65AD65AD6", "t c #084208420842", "y c #631863186318", "u c #842084208C62", "i c #210821082108", "p c #084208421084", "a c #9CE6AD6AAD6A", "s c #7BDE84208420", "d c #84207BDE6B5A", "f c #7BDE7BDE8420", "g c #529452945AD6", "h c #529452945294", "j c #18C618C618C6", "k c #4A524A525294", "l c #21082108294A", "z c #18C618C62108", "x c #108410841084", "c c #1084108418C6", "v c #000000000000", "b c #A528A528A528", "n c #294A294A318C", "m c #318C318C39CE", "M c #EF7AEF7AEF7A", "N c #DEF6DEF6D6B4", "B c #C630C630C630", "V c #421039CE4210", "C c #421042104A52", "Z c #421042105AD6", "A c #421042105294", "S c #39CE39CE4A52", "D c #39CE39CE4210", "F c #4A524A526318", "G c #4A524A525AD6", "H c #94A494A49CE6", "J c #421039CE5294", "K c #FFFFFFFFFFFF", "L c #529452946318", "P c #63186318739C", "I c #5AD65AD66318", "U c #7BDE739C8420", "Y c #739C739C7BDE", "T c #631863186B5A", "R c #739C6B5A739C", "E c #8C628C6294A4", "W c #4A524210318C", "Q c #739C739C8420", "! c #6B5A6B5A739C", "~ c #318C21081084", "^ c #A5289CE6A528", "/ c #94A49CE6A528", "( c #8C6294A49CE6", ") c #AD6AAD6ABDEE", "_ c #F7BCF7BCFFFF", "` c #EF7AF7BCF7BC", "' c #E738E738EF7A", "] c #DEF6E738EF7A", "[ c #D6B4DEF6EF7A", "{ c #CE72D6B4E738", "} c #F7BCFFFFFFFF", "| c #EF7AEF7AF7BC", " . c #E738EF7AF7BC", ".. c #BDEEB5ACB5AC", "X. c #E738E738DEF6", "o. c #B5ACA5286B5A", "O. c #BDEEBDEEA528", "+. c #EF7AEF7AE738", "@. c #AD6AA528A528", "#. c #CE72C630B5AC", "$. c #A5289CE66B5A", "%. c #A528A5288420", "&. c #DEF6D6B4B5AC", "*. c #94A49CE68420", "=. c #39CE318C294A", "-. c #318C294A2108", ";. c #4210318C294A", ":. c #5AD64A5239CE", ">. c #BDEEB5ACAD6A", ",. c #D6B4C630A528", "<. c #8C627BDE5294", "1. c #294A18C61084", "2. c #318C21082108", "3. c #294A21081084", "4. c #294A210818C6", "5. c #4A5239CE294A", "6. c #9CE68C626B5A", "7. c #84207BDE6318", "8. c #BDEEB5ACA528", "9. c #52944A5239CE", "0. c #94A484206B5A", "q. c #94A48C625AD6", "w. c #8C6284206318", "e. c #8420739C6318", "r. c #8420739C5AD6", "t. c #A52894A45AD6", "y. c #9CE69CE68420", "u. c #B5ACAD6A8C62", "i. c #4210318C2108", "p. c #C630BDEEB5AC", "a. c #6B5A739C6318", "s. c #9CE684205294", "d. c #9CE694A4739C", "f. c #CE72B5AC7BDE", "g. c #5294529439CE", "h. c #A52894A47BDE", "j. c #4A52318C2108", "k. c #4A52294A2108", " . X X o o O + @ # # # # $ % & * = - ; ; : > ", " . X o o o O , $ # < : 1 2 3 4 * = 5 ; ; : > ", " . o o o 5 X 6 > # $ 5 o 7 8 8 1 , 9 0 : : > ", " . o o 5 5 q 6 w # $ 2 5 o X X $ = 9 : : : > ", " . o 5 5 5 q = e r ; 5 5 5 5 # t , 9 : : y > ", " . 5 5 5 u q = $ i # ; 1 y $ t p a s : y y > ", " . 5 5 5 2 5 O , + = = = = = , a q ; y y y > ", " . 5 5 2 2 2 9 - - - - 9 9 9 9 s ; y y y r > ", " . 5 2 2 2 d f 1 1 ; ; ; 0 : : : y y y r r > ", " . 2 2 2 s f 1 1 ; ; ; 0 : : : y y y r r r > ", " . > > > > > > > > > > > > > > > > > > > > > ", " : : : : : : : : : : : : : : : : : : : : : : ", " : r r r g h h h h h h # # # # # # # # # # j ", " : r r r r h h h h h h k # # # # # # # # # i ", " : r r h h h h h h h # # # # # # # # # # < i ", " y r h h # # # # # # # # # # # # # < $ < < i ", " : h h h ; 1 0 : : : : : : y y y : : $ < < i ", " : h h h : h l l l z x x j c c x k : $ < > i ", " . . . . . . . . . . . . . . . . . . . . . . l l v v i # c c x k : $ > < i ", " . * * 7 7 7 7 b b b X X X X o o o 5 5 5 5 > l c v j < ; z x x # : @ > > i ", " . * 7 7 7 7 b b b X X X o o o o 5 5 5 5 2 > l z v : 2 y c x p # : @ > > i ", " . 7 7 7 7 b b b X X X X o o o 5 5 5 5 2 2 > l c i r h c p p t # : @ > > i ", " . 7 7 7 5 o o o o 5 5 5 5 5 5 2 2 2 : 2 2 > n n m n @ n @ i p # y @ > > i ", " . 7 7 b 4 M 3 N 3 3 3 3 . B B B 3 3 r 2 1 > V C m > $ V > $ x # y @ > > i ", " . 7 b b 3 7 Z A S m l l n n l l X 3 r 1 1 > D > > m > $ $ $ @ r y @ $ > i ", " . b b b 3 b F Z S t v < u l l z X 3 h 1 1 > : : : : : y y y y y r @ > $ i ", " . b b X 3 b G Z n v $ 2 4 n l z H 3 h 1 1 > y y y y y y y y h i l $ $ > i ", " . b X X 3 b Z J n t 3 K B l z j H . h 1 ; > @ @ @ @ @ @ @ @ @ $ > > > $ i ", " . X X X 3 b A S n m * b @ z z c o . h ; ; > # # # # # # # # @ $ > > $ > i ", " . X X X 3 b J L g P I g I # V z o B h ; ; > @ @ @ @ @ @ @ @ $ > > $ $ $ i ", " . X o o 3 X S U K K Y T f R y i E B h ; : > W V > > > > > $ > $ > > $ $ i ", " . X o o 3 * Q Y K v K ! T y r g 7 B # 0 : > V > > > > > > > > $ $ $ $ $ i ", " . o o o B 4 3 N K v v K B B B B 8 8 # : : > > > > > > $ > $ > > $ $ $ $ i ", " . o o 5 ; : * B K v v v K B B b < # r : : > i i i i i i z ~ i i i i i i i ", " . o 5 5 5 2 r h K v v v v K h # y : : : y > . . . . . . . . . . . . . . . ", " . 5 5 5 5 2 ; X K v v v K X X h : : : y y > b b b X X X X o o o 5 5 5 5 > ", " . 5 5 5 2 2 1 h K K K v K # # h : : y y y > b b X X X X o o o 5 5 5 5 2 > ", " . 5 5 2 2 s d 1 1 1 K v v K : : : y y y r > b X X X X o o o 5 5 5 5 2 2 > ", " . 5 2 2 2 f f 1 1 ; ; K K : : : y y y r r > * 7 ^ / q ( ( ( ( ( ) 2 2 2 > ", " . 2 2 2 2 1 1 1 ; ; ; 0 : : : y y y r r r > K _ ` ' ] ] [ [ [ { [ 2 2 1 > ", " . > > > > > > > > > > > > > > > > > > > > > K K } ` ` ` ` | . . .2 2 1 > ", " . b b ..X.o.O.K K } } } +.N & } } & 1 1 1 > ", " . b b @.#.$.%.4 & K K X.&.*.4 K K K 1 1 1 > ", " . b X W =.-.;.:.d >.N ,.<.d +.K K K 1 1 ; > ", " . X X 1.1.2.1.3.4.5.6.7.8.M K K K K 1 ; ; > ", " . X X 9.0.q.w.e.5.2.~ r.% K K K K K ; ; ; > ", " . X X d #.t.y.#.u.i.~ 5.p.K K K K K ; ; : > ", " . X o a.%.s.d.f.g.h.j.k.e.& K K K K ; ; : > "}; ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/speed4.xpm��������������������������������������������������������0000644�0001750�0001750�00000001415�13431646202�015473� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "24 24 3 1", " c None", ". c #000000000000", "X c #210839CE7BDE", " ", " ", " ", " ", " ", " ", " ", " ", " ", ". XX XXX XXXX XXXXX X ", ". XX XXX XXXX XXXXX XX ", ". XX XXX XXXX XXXXX XXX ", ". XX XXX XXXX XXXXX XXXX", ". XX XXX XXXX XXXXX XXX ", ". XX XXX XXXX XXXXX XX ", ". XX XXX XXXX XXXXX X ", " ", " ", " ", " ", " ", " ", " ", " "}; ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/nonopaque.xpm�����������������������������������������������������0000644�0001750�0001750�00000015431�13431646202�016317� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "48 48 95 2", " c None", ". c #000000000000", "X c #9CE69CE69CE6", "o c #B5ACB5ACB5AC", "O c #FFFFFFFFFFFF", "+ c #5AD65AD65AD6", "@ c #108400000000", "# c #39CE00000000", "$ c #B5AC4A524A52", "% c #BDEE4A524A52", "& c #A528A528A528", "* c #63184A524A52", "= c #FFFF4A524A52", "- c #7BDE63186318", "; c #D6B4D6B4D6B4", ": c #94A44A524A52", "> c #631863186318", ", c #7BDE4A524A52", "< c #94A494A494A4", "1 c #CE72CE72CE72", "2 c #F7BCF7BCF7BC", "3 c #CE724A524A52", "4 c #529452945294", "5 c #E738E738E738", "6 c #210800000000", "7 c #B5AC00000000", "8 c #18C618C618C6", "9 c #108410841084", "0 c #C6304A524A52", "q c #842084208420", "w c #4A524A524A52", "e c #E7384A524A52", "r c #D6B44A524A52", "t c #AD6A94A494A4", "y c #739C4A524A52", "u c #739C739C739C", "i c #EF7A4A524A52", "p c #C630C630C630", "a c #294A00000000", "s c #8C624A524A52", "d c #DEF6E738DEF6", "f c #F7BCFFFFF7BC", "g c #084200000000", "h c #5AD64A524A52", "j c #DEF6DEF6DEF6", "k c #AD6A4A524A52", "l c #6B5A4A524A52", "z c #7BDE7BDE7BDE", "x c #6B5A52945294", "c c #529400000000", "v c #DEF6294A294A", "b c #210821082108", "n c #084208420842", "m c #6B5A00000000", "M c #739C00000000", "N c #318C00000000", "B c #631800000000", "V c #108408421084", "C c #210818C62108", "Z c #18C600000000", "A c #421000000000", "S c #AD6A00000000", "D c #5AD600000000", "F c #8C6200000000", "G c #8C628C628C62", "H c #8C62294A294A", "J c #318C00000842", "K c #318C08420842", "L c #39CE294A294A", "P c #39CE318C318C", "I c #CE72318C318C", "U c #E738318C318C", "Y c #94A4318C318C", "T c #5294318C318C", "R c #9CE6318C318C", "E c #421042104210", "W c #4210318C318C", "Q c #B5AC318C318C", "! c #5AD652945AD6", "~ c #210818C618C6", "^ c #318C318C318C", "/ c #94A484208420", "( c #52944A524A52", ") c #EF7AF7BCEF7A", "_ c #E738EF7AE738", "` c #AD6AAD6AAD6A", "' c #EF7AEF7AEF7A", "] c #8C6284208420", "[ c #6B5A6B5A6B5A", "{ c #DEF64A524A52", "} c #A5284A524A52", "| c #CE72D6B4CE72", " . c #F7BC4A524A52", ".. c #739C5AD65AD6", "X. c #9CE663186318", " ", " ", " . . . . . X . . . . . . . . . . . . . . . . . . . X . . . . . ", " . o o o . X . . . . . . . . . . . . . . . . . . . X . O . O . ", " . o . o . X . . . . . . . . . . . . . . . . . . . X . . O . . ", " . o o o . X . . . . . . . . . . . . . . . . . . . X . O . O . ", " . . . . . X . . . . . . . . . . . . . . . . . . . X . . . . . ", " o o o . . o . . o . . + . . o . . o . . o . . o . . o . . . . . . ", " . . . . . . . . . . @ # . . . . . . . . . . . . . . . . . . . . ", " . O O O O O O O O O $ % & O O O O O O O O O O O O O O O O O . ", " . O O . O O O O O * = = - ; O O O O O O O O O O O O O O O O . . ", " . O O . O O O O O $ = = : > O O O O O O O O O O O O O O O O . . ", " . O O O O O O O * = = = , < 1 2 O O O O O O O O O O O O O O . ", " . O O . O O O O $ = = 3 4 & 4 5 O O O O O O O O O O O O O O . . ", " . O O . O O . 6 = 7 7 , 8 9 * . . O . . O . . O . . O . . O . . . . . . ", " . O O O O O . $ = = 0 4 q w e r t O O O O O O O O O O O O O . . ", " . O O . O O * = = = y u > : = i y u p O O O O O O O O O O O . ", " . O O . O O a i = 0 4 q w e = = = s q d 1 O O O O O O O O f . . ", " . O O O O O g i = y u > : = = = = h j q h u 1 O O O O O O < . . ", " . O O . O O 1 : 0 4 q w e = = = k + < h = % l z 1 O O O 5 w . . ", " . O O . O O . x * 8 9 c 7 7 v 7 @ b n m 7 7 7 M 6 . . . . c N . . . X . . . . . ", " . O O O O O . q 4 b w e = 7 v B V C Z 7 7 7 7 7 7 A . . g S c n . . X . O . O . ", " . O O . O O O o z 9 : 7 = 7 v @ C n m 7 7 7 7 7 7 6 . . D 7 F n . . X . . O . . ", " . O O . O O . O G . i = = 7 H V C Z 7 7 7 7 7 7 m n 8 @ S 7 7 J . . X . O . O . ", " . O O O O O . O p K S 7 7 7 L C n m 7 7 7 7 7 7 Z 8 V D 7 7 7 B n . X . . . . . ", " . O O . O O O O d > P I U Y w + T U U U U U U R E > W U U U U Q ! o o o o o o o ", " . . . . . . . . . n ~ m S @ b n m 7 7 7 7 7 7 Z C V B 7 7 7 7 7 @ . . . . . . . ", " o o o o ^ o . o o . X + h > z * = = = = = = $ + z h = = = = = = k p O O O O O . ", " o ^ ^ . ^ o ^ ^ ^ . p q w q + $ = = = = = = * z + k = = = = = = r / O O O O O . ", " . . . O ; z z ( 3 = = = = = $ + z h = = = = = = = i x ) O O O O . ", " . . O _ ` G G > , 3 = = = h z + k = = = = = = = = : o O O O O . ", " . . O O f < ' ` u 4 , 3 $ + z h = = = = = = = = = i ] O O O O . ", " . . . O O O 5 5 G G G [ 4 w z + $ = = = = = = = = { } > O O O O . ", " . . . . O O O O O | X G G G z z h = = = = = = { 0 s 4 u q j O O O . ", " . O O O O O O O | X G G + $ = = .e % l ..u z G G G p O O O . ", " . . O O O O O O O O O | G h = = k , - [ q G G G G G G o O O O . ", " . . O O O O O O O O O O q h X.> [ G G G G G G G < & j ) O O O . ", " . O O O O O O O O O ' z 1 ` ] G G G G G G o j _ O O O O O O . ", " . . O O O O O O O O O O O d G G G G < o | ' O O O O O O O O O . ", " . . O O O O O O O O O O O o G X o | O O O O O O O O O O O O O . ", " . . . O O O O O O O O O O ) ` j f f O O O O O O O O O O O O O O . ", " . O O O O O O O O O O O O O O O O O O O O O O O O O O O O O . ", " . O O O O O O O O O O O O O O O O O O O O O O O O O O O O O . ", " . O O O O O O O O O O O O O O O O O O O O O O O O O O O O O . ", " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", " o o o o ^ o o o o o o o o o o o o o o o o o o o o ^ o o o o ^ ", " o ^ ^ ^ ^ o ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ o ^ ^ ^ ^ ", " "}; ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/speed3.xpm��������������������������������������������������������0000644�0001750�0001750�00000001370�13431646202�015472� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "24 24 2 1", " c None", ". c #210839CE7BDE", " ", " ", " ", " ", " ", " ", " ", " ", " ", " . .. ... .... . ", " . .. ... .... .. ", " . .. ... .... ... ", " . .. ... .... .... ", " . .. ... .... ... ", " . .. ... .... .. ", " . .. ... .... . ", " ", " ", " ", " ", " ", " ", " ", " "}; ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/speed4s.xpm�������������������������������������������������������0000644�0001750�0001750�00000001571�13431646202�015661� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "26 26 3 1", " c None", ". c #FFFFFFFF0000", "X c #000000000000", " ", " ", " ", " ", " ", " ", " ", " ", " ", "...................... ", ".X.XX.XXX.XXXX.XXXXX.X. ", ".X.XX.XXX.XXXX.XXXXX.XX. ", ".X.XX.XXX.XXXX.XXXXX.XXX. ", ".X.XX.XXX.XXXX.XXXXX.XXXX.", ".X.XX.XXX.XXXX.XXXXX.XXX. ", ".X.XX.XXX.XXXX.XXXXX.XX. ", ".X.XX.XXX.XXXX.XXXXX.X. ", "...................... ", " ", " ", " ", " ", " ", " ", " ", " "}; ���������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/dontlinkworkspaces.xpm��������������������������������������������0000644�0001750�0001750�00000007036�13431646202�020240� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "48 48 51 1", " c None", ". c #084200009CE6", "X c #000000000000", "o c #B5ACB5ACB5AC", "O c #FFFFFFFFFFFF", "+ c #BDEE5AD65AD6", "@ c #739C18C618C6", "# c #739C21082108", "$ c #94A45AD65AD6", "% c #529442104210", "& c #318C318C318C", "* c #0842842094A4", "= c #10847BDEAD6A", "- c #00007BDE9CE6", "; c #18C67BDEA528", ": c #08427BDEA528", "> c #10848420A528", ", c #10847BDE9CE6", "< c #18C68420A528", "1 c #739C739C739C", "2 c #39CE39CE39CE", "3 c #084284209CE6", "4 c #08428420A528", "5 c #08428420AD6A", "6 c #1084739CA528", "7 c #00008420A528", "8 c #A528A528A528", "9 c #7BDE7BDE7BDE", "0 c #A528AD6AA528", "q c #C630C630C630", "w c #18C6739CA528", "e c #18C68C6294A4", "r c #08427BDEAD6A", "t c #084239CE9CE6", "y c #10847BDEA528", "u c #18C67BDE9CE6", "i c #8420BDEECE72", "p c #63186B5A7BDE", "a c #42104A525AD6", "s c #18C68C629CE6", "d c #52946B5A7BDE", "f c #318C63186B5A", "g c #10847BDE94A4", "h c #210852946318", "j c #08427BDE9CE6", "k c #10848420AD6A", "l c #10848C62A528", "z c #1084739C9CE6", "x c #00007BDEA528", "c c #000084209CE6", "v c #108484209CE6", " ", " ", " ", " ", " ", " ", " ........X. ", " ..............X. ", " oOOOOO........XX ", " oOO+@#oOOOOOOOXXX ", " ...oOO+@#oOO+@#........X. ", " ...oOO+$%oOO+@#........XX ", " oOOoOO+$%oOO+$%oOOOOOOOXXX ", " oOOoOOOOOoOO+$%oOO@+@#OXXXX ", " oOO&&&&&&oOOOOOoOO@#@#OXXX ", " oOO+$%%OO&&&&&&oOO$%$%OXoX ", " oOO+$%%OOo oOO$%$%OOo X ", " XXXXXXXXXXXoOOOOOOOOo oOOOOOOOOoXXXXXXXX ", " X*=-;=:>>,<&&&&&&&&&& &&&&&&&&&&,,,<,o1X2 ", " X>ooooo3454,o1X2 X..>,<,3454,o1X2 ", " X=OOOOO467,489X2 X0q4.....7X489X2 ", " X>OOOOO:>we<89X2 Xq06O+@#O,X<89X2 ", " XrOOOttttt4:o1X2 X0qyO+$%O,,Xo1X2 ", " Xu&&&ipaai,4o1X2 Xq05O+$%O,44o1X2 ", " X4,4sipdfiu=89X2 X0q7&&&&&e<=89X2 ", " X,rg:ipdfi5g89X2 X&&;e<67,45g89X2 ", " X>:,ghhhhh:jo1X2 X>:,g:k;e<:jo1X2 ", " Xo1l=>zg-4,ro1X2 Xo1ly>zgx4,ro1X2 ", " X&&jc:yyc-5yvzX2 X&&jc:,ycx5yvzX2 ", " XXXXXXXXXXXXXXX2 XXXXXXXXXXXXXXX2 ", " 222222222222222 222222222222222 ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "}; ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/speed0s.xpm�������������������������������������������������������0000644�0001750�0001750�00000001571�13431646202�015655� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "26 26 3 1", " c None", ". c #FFFFFFFF0000", "X c #000000000000", " ", " ", " ", " ", " ", " ", " ", " ", " ", " .... ", " .X.X. ", " .X.XX. ", " .X.XXX. ", " .X.XXXX. ", " .X.XXX. ", " .X.XX. ", " .X.X. ", " .... ", " ", " ", " ", " ", " ", " ", " ", " "}; ���������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/xis.xpm�����������������������������������������������������������0000644�0001750�0001750�00000005030�13431646202�015107� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "48 48 2 1", " c None", ". c #FFFF00000000", " . . ", " ... ... ", " ..... ..... ", " ....... ....... ", " ......... ......... ", " ........... ........... ", " ............. ............. ", " ............... ............... ", "................. .................", " ................. ................. ", " ................. ................. ", " ................. ................. ", " ................. ................. ", " ................. ................. ", " ................. ................. ", " .................................. ", " ................................ ", " .............................. ", " ............................ ", " .......................... ", " ........................ ", " ...................... ", " .................... ", " .................. ", " .................. ", " .................... ", " ...................... ", " ........................ ", " .......................... ", " ............................ ", " .............................. ", " ................................ ", " .................................. ", " ................. ................. ", " ................. ................. ", " ................. ................. ", " ................. ................. ", " ................. ................. ", " ................. ................. ", "................. .................", " ............... ............... ", " ............. ............. ", " ........... ........... ", " ......... ......... ", " ....... ....... ", " ..... ..... ", " ... ... ", " . . "}; ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/workspacename.xpm�������������������������������������������������0000644�0001750�0001750�00000013212�13431646202�017144� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char *magick[] = { /* columns rows colors chars-per-pixel */ "50 40 95 2", " c Gray0", ". c #010101", "X c Gray2", "o c #040406", "O c #070707", "+ c #0a0a0d", "@ c #28292b", "# c #2a2a2b", "$ c #2d2d2d", "% c #292b36", "& c #343434", "* c #3c3c3c", "= c #383b4b", "- c #444546", "; c #494949", ": c #4e4e4e", "> c #505055", ", c #585858", "< c Gray37", "1 c #494d62", "2 c #545066", "3 c #57556f", "4 c #5d627c", "5 c #604e42", "6 c Gray39", "7 c Gray41", "8 c #646475", "9 c #7e6a63", "0 c #75746d", "q c #7d7b7c", "w c #7f7f7b", "e c #605f90", "r c #696880", "t c #6f6f91", "y c #787685", "u c #7f7b84", "i c #7d7d86", "p c #777593", "a c #7b779b", "s c #78779d", "d c #7c7c98", "f c #8d634e", "g c #896f6f", "h c #a8606f", "j c #bb6a6a", "k c #8b7d94", "l c #828275", "z c #89897f", "x c #b9b756", "c c #aaa962", "v c #818187", "b c #828583", "n c #888889", "m c #8b8b8b", "M c #8d8d8d", "N c #8d8c8e", "B c #8c8992", "V c #8e8a96", "C c #8f8e92", "Z c #939393", "A c #979797", "S c #96919d", "D c #989799", "F c #9b9b9b", "G c #999e98", "H c Gray62", "J c #9e9f9f", "K c #8d8cba", "L c #9995a0", "P c #a2a2a3", "I c #a7a7a8", "U c Gray66", "Y c #acacac", "T c Gray68", "R c Gray69", "E c #b2b2b2", "W c #b4b4b4", "Q c Gray71", "! c #b9b9b9", "~ c Gray73", "^ c #bbbbbb", "/ c #a7a7c5", "( c #acadcf", ") c #c0c0c0", "_ c #c3c3c3", "` c #c8c8c8", "' c Gray79", "] c Gray80", "[ c #dfdfdf", "{ c #e2e2e2", "} c Gray91", "| c #e9e9e9", " . c Gray95", ".. c #fbfbfb", "X. c Gray100", /* pixels */ "$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ } ", "$ 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 } } } } } } } } ", "$ 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 } P I Y E W < } ", "$ 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 } I o o .^ < } ", "$ 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 } Y o .^ _ < } ", "$ 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 } E .^ o _ < } ", "$ 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 } W ^ _ _ ` < } ", "$ 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 } < < < < < < } ", "$ 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 } } } } } } } } ", "$ 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 } P I Y E W < } ", "$ 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 } D L S Z ^ < } ", "$ 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 } C u q M _ < } ", "$ 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 } n B V b _ < } ", "$ 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 } G ^ E n ` < } ", "$ 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 } < < < < < < } ", "$ 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 } } } } } } } } ", "$ 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 1 4 4 4 4 4 4 4 4 4 4 4 4 4 } P I Y E W < } ", "$ 4 4 4 4 4 4 4 4 4 4 4 4 4 + F F = M F 4 4 { + 4 4 4 4 4 4 4 4 4 4 4 4 4 } v / ( d ^ < } ", "$ 4 4 4 4 4 4 4 4 4 4 4 4 4 + { .. o 6 X.X. A + + + + + 1 4 4 4 4 4 4 4 4 } i p K s _ < } ", "$ 4 4 4 4 4 4 4 4 4 4 4 4 4 + { X.6 o .X.X.- { { # 6 { 6 { ] { # % 4 4 4 4 4 4 4 4 } a k 2 t _ < } ", "$ 4 4 4 4 4 4 4 4 4 4 4 4 4 + { . ., .X.X.: # ^ { M { M X.& A { 4 4 4 4 4 4 4 4 } 8 3 > H ` < } ", "$ 4 4 4 4 4 4 4 4 4 4 4 4 4 + { ` [ W { F X.] .H { M { M { A { 4 4 4 4 4 4 4 4 } < < < < < < } ", "$ 4 4 4 4 4 4 4 4 4 4 4 4 4 + { ` F [ F X.{ ] { { M { M { A { 4 4 4 4 4 4 4 4 } } } } } } } } ", "$ 4 4 4 4 4 4 4 4 4 4 4 4 4 + { { { X.6 { # { 6 { & { - { 4 4 4 4 4 4 4 4 } y e r U W < } ", "$ 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 } h 5 0 w ^ < } ", "$ 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 } j f x l _ < } ", "$ 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 } g 9 c z _ < } ", "$ 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 } W ^ _ _ ` < } ", "$ 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 } < < < < < < } ", "$ 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 } ", "$ 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 } ", "$ 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 } ", "$ o o o o o o * * o X X X X X 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 } ", "$ o o o o o o ; ; o X . X X X 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 } ", "$ } D L S Z ^ 7 } D S S Z ^ < 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 } ", "$ } C u q N _ < } C k q M ) < 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 } ", "$ } n B V b _ < } n B V b _ < 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 } ", "$ } G ^ E n ` < } G ^ E n ` < 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 } ", "$ } < < < < < < } < < < < < < 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 } ", "} } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } " }; ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/iconprefs.xpm�����������������������������������������������������0000644�0001750�0001750�00000024251�13431646202�016302� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * iconprefs_xpm[] = { "48 48 347 2", " c None", ". c #2C2C2C", "+ c #FEFEFE", "@ c #505075", "# c #A8A8A8", "$ c #A7A7A7", "% c #A5A5A5", "& c #A4A4A4", "* c #A2A2A2", "= c #A0A0A0", "- c #9F9F9F", "; c #9D9D9D", "> c #9C9C9C", ", c #9A9A9A", "' c #989898", ") c #979797", "! c #959595", "~ c #949494", "{ c #929292", "] c #909090", "^ c #8F8F8F", "/ c #8D8D8D", "( c #000000", "_ c #A1A1A1", ": c #8C8C8C", "< c #969696", "[ c #919191", "} c #8B8B8B", "| c #8A8A8A", "1 c #888888", "2 c #6C6C6C", "3 c #DDDDDD", "4 c #E6E6E6", "5 c #C6C6C5", "6 c #C5C5C3", "7 c #C3C3C1", "8 c #C2C2C1", "9 c #C0C0C0", "0 c #BFBFBF", "a c #BCBCBC", "b c #BBBBBB", "c c #B6B6B6", "d c #CACACA", "e c #E7E7E7", "f c #5F5F5F", "g c #898989", "h c #A3A3A3", "i c #DADADA", "j c #949499", "k c #46445B", "l c #434257", "m c #3D3C4E", "n c #1F1E27", "o c #121218", "p c #262630", "q c #242330", "r c #22212E", "s c #1A1924", "t c #79797D", "u c #E1E1E1", "v c #5E5E5E", "w c #878787", "x c #889088", "y c #434343", "z c #3F5D3F", "A c #292929", "B c #3E5D3E", "C c #5C5C5C", "D c #959599", "E c #49485C", "F c #484659", "G c #212127", "H c #CDCDCD", "I c #414147", "J c #23222E", "K c #1B1B25", "L c #7B7A7F", "M c #5D5D5D", "N c #868686", "O c #9E9E9E", "P c #7F7F7F", "Q c #314231", "R c #3B723B", "S c #244324", "T c #577657", "U c #D8D8D8", "V c #969597", "W c #444358", "X c #454255", "Y c #101013", "Z c #242424", "` c #939393", " . c #FAFAFA", ".. c #6D6C72", "+. c #1F1E29", "@. c #17161F", "#. c #77777C", "$. c #DEDEDE", "%. c #848484", "&. c #AFAFAF", "*. c #224222", "=. c #060606", "-. c #517151", ";. c #ADCDAD", ">. c #D5D5D5", ",. c #969596", "'. c #424052", "). c #414050", "!. c #1C1A20", "~. c #6F6F6F", "{. c #FDFDFD", "]. c #24242A", "^. c #1A1A23", "/. c #13121A", "(. c #757579", "_. c #DBDBDB", ":. c #838383", "<. c #355435", "[. c #326132", "}. c #254425", "|. c #68A068", "1. c #DBFBDB", "2. c #C4FCC4", "3. c #B1D2B1", "4. c #858585", "5. c #9B9B9B", "6. c #D4D4D4", "7. c #969695", "8. c #3D3C4C", "9. c #3C3A4A", "0. c #21212C", "a. c #393841", "b. c #5F5F67", "c. c #1F1F26", "d. c #111018", "e. c #15141D", "f. c #0C0C12", "g. c #717174", "h. c #D9D9D9", "i. c #5B5B5B", "j. c #818181", "k. c #999999", "l. c #2A2A2A", "m. c #424242", "n. c #96B696", "o. c #CECECE", "p. c #C2E2C2", "q. c #C1C1C1", "r. c #D2D2D2", "s. c #939395", "t. c #393849", "u. c #8C8B92", "v. c #75757D", "w. c #838289", "x. c #9B9B9F", "y. c #8F8F94", "z. c #78777C", "A. c #69696E", "B. c #535357", "C. c #6F6F71", "D. c #D6D6D6", "E. c #5A5A5A", "F. c #808080", "G. c #EAE9EA", "H. c #678667", "I. c #807D7F", "J. c #375636", "K. c #828282", "L. c #D1D1D1", "M. c #8D8D8E", "N. c #2F2C3E", "O. c #52515D", "P. c #3C3B47", "Q. c #383742", "R. c #5A5961", "S. c #2E2E35", "T. c #3E3D43", "U. c #151419", "V. c #202023", "W. c #69696B", "X. c #D3D3D3", "Y. c #595959", "Z. c #7E7E7E", "`. c #99B899", " + c #BFDCBF", ".+ c #A2D8A2", "++ c #A1BEA1", "@+ c #7FB680", "#+ c #CFCFCF", "$+ c #F1F1F1", "%+ c #EFEEEF", "&+ c #EBEBEB", "*+ c #E8E8E6", "=+ c #E6E6E4", "-+ c #E3E3E3", ";+ c #E2E2E2", ">+ c #E0E0E0", ",+ c #DCDCDC", "'+ c #BFB4B9", ")+ c #CEA6A9", "!+ c #585858", "~+ c #7D7D7D", "{+ c #F3F3F3", "]+ c #B0AEB1", "^+ c #6A896A", "/+ c #605E60", "(+ c #779577", "_+ c #151515", ":+ c #6E6E6E", "<+ c #C3C3C3", "[+ c #C2C2C2", "}+ c #565656", "|+ c #7B7B7B", "1+ c #D9F9D9", "2+ c #92AF91", "3+ c #7BB17B", "4+ c #739273", "5+ c #6BA26B", "6+ c #496849", "7+ c #737373", "8+ c #747474", "9+ c #6D6D6D", "0+ c #7C7C7C", "a+ c #7A7A7A", "b+ c #B0AFB0", "c+ c #658464", "d+ c #504F50", "e+ c #4B6B4B", "f+ c #464646", "g+ c #8E8E8E", "h+ c #545454", "i+ c #787878", "j+ c #A9A9A9", "k+ c #A6A6A6", "l+ c #797979", "m+ c #777777", "n+ c #767676", "o+ c #2F2F2F", "p+ c #030303", "q+ c #0C0404", "r+ c #030000", "s+ c #262626", "t+ c #1C1C1C", "u+ c #707070", "v+ c #C5C5C5", "w+ c #373737", "x+ c #1B1B1B", "y+ c #011D1E", "z+ c #2F494B", "A+ c #24383B", "B+ c #031B22", "C+ c #011D24", "D+ c #051E24", "E+ c #334649", "F+ c #35474A", "G+ c #10272A", "H+ c #02181B", "I+ c #022226", "J+ c #294348", "K+ c #D4E2E5", "L+ c #324C4F", "M+ c #01292C", "N+ c #012A2D", "O+ c #234347", "P+ c #809A9C", "Q+ c #05272A", "R+ c #002224", "S+ c #003033", "T+ c #033333", "U+ c #6B8E8F", "V+ c #BFD3D4", "W+ c #214A48", "X+ c #03333A", "Y+ c #043235", "Z+ c #5E8184", "`+ c #013134", " @ c #002F2F", ".@ c #FBFBFB", "+@ c #CCCCCC", "@@ c #033840", "#@ c #033C43", "$@ c #416F74", "%@ c #4C777C", "&@ c #C6CFD8", "*@ c #164D53", "=@ c #063B44", "-@ c #5E868B", ";@ c #013B43", ">@ c #02383B", ",@ c #B8B8B8", "'@ c #1F1F1F", ")@ c #383838", "!@ c #02464F", "~@ c #034A52", "{@ c #3D7A7F", "]@ c #025053", "^@ c #5F8F93", "/@ c #B2CBC8", "(@ c #105054", "_@ c #5F9298", ":@ c #014A54", "<@ c #01464C", "[@ c #1E1E1E", "}@ c #035560", "|@ c #06575C", "1@ c #448489", "2@ c #065A65", "3@ c #055F62", "4@ c #7FB1B3", "5@ c #9BB9BE", "6@ c #6A9CA0", "7@ c #045661", "8@ c #00555D", "9@ c #E4E4E4", "0@ c #114A52", "a@ c #184246", "b@ c #779094", "c@ c #0C2224", "d@ c #041516", "e@ c #0A191E", "f@ c #4F534F", "g@ c #394A4D", "h@ c #14414A", "i@ c #14535A", "j@ c #F0F0F0", "k@ c #4F4F4F", "l@ c #0E0E0E", "m@ c #010303", "n@ c #393837", "o@ c #616365", "p@ c #252626", "q@ c #010101", "r@ c #020000", "s@ c #010206", "t@ c #C4C4C4", "u@ c #686868", "v@ c #010100", "w@ c #020201", "x@ c #040003", "y@ c #020202", "z@ c #000100", "A@ c #D7D7D7", "B@ c #2D2D2D", "C@ c #3C3C3C", "D@ c #000101", "E@ c #000200", "F@ c #2B2B2B", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ + + + + + + + + + + + + + + + + + + + + @ @ + + + + + + + + + + + + + + + + + + + + @ @ + ", ". @ @ + # $ % & * = - ; > , ' ) ! ~ { ] ^ / ( @ @ + # $ % & * = - ; > , ' ) ! ~ { ] ^ / ( @ @ + ", ". @ @ + $ % & * _ - ; > , ' ) ! ~ { ] ^ / : ( @ @ + $ % & * _ - ; > , ' ) ! ~ { ] ^ / : ( @ @ + ", ". @ @ + % & ] ) < ! ~ { [ ^ / : } | 1 2 : | ( @ @ + % & * _ - ; > , ' ) ! ~ { ] ^ / : | ( @ @ + ", ". @ @ + & * 3 4 5 6 7 8 9 0 a b c d e f | g ( @ @ + & * - ( ( ( ( ( ( ( ( ( ( ( + : | g ( @ @ + ", ". @ @ + h _ i j k l m n o p q r s t u v g w ( @ @ + h > - ( g f g x = y z A B C + : } g ( @ @ + ", ". @ @ + _ - i D E F G ( ( H I J K L u M w N ( @ @ + O - ; ( x P x P ^ Q R S R T + } g 1 ( @ @ + ", ". @ @ + = O U V W X Y Z ` ...+.@.#.$.C N %.( @ @ + - ; > ( &.0 &.*.=.=.-.a ;.& + g 1 N ( @ @ + ", ". @ @ + O > >.,.'.).!.~.{.e ].^./.(._.C %.:.( @ @ + ; > , ( <.[.*.R }.S |.1.2.3.+ 1 N 4.( @ @ + ", ". @ @ + ; 5.6.7.8.9.0.a.b.c.d.e.f.g.h.i.:.j.( @ @ + > , k.( l.}.=.}.m.P n.o.p.q.+ N 4.:.( @ @ + ", ". @ @ + 5., r.s.t.u.v.w.x.y.z.A.B.C.D.E.j.F.( @ @ + , k.' ( l.}.=.S P G.H.I.J.^ + 4.:.K.( @ @ + ", ". @ @ + , ' L.M.N.O.P.Q.R.S.T.U.V.W.X.Y.F.Z.( @ @ + k.' < ( z R -.|.`. +.+++@+<.+ :.K.j.( @ @ + ", ". @ @ + ' ) #+$+%+&+*+=+-+;+>+>+,+'+)+!+Z.~+( @ @ + ' < ! ( A S a 1.{+]+^+/+(+_++ K.j.P ( @ @ + ", ". @ @ + ) ! :+2 0 <+[+q.q.9 9 q.0 }+i.M ~+|+( @ @ + < ! ` ( B R ;.2.1+2+3+4+5+6++ j.P Z.( @ @ + ", ". @ @ + ! ~ { F.7+8+7+7+7+7+7+8+9+f 0+0+0+a+( @ @ + ! ` { ( C T & 3.q.b+c+d+e+f++ P Z.0+( @ @ + ", ". @ @ + ~ { [ ^ :+: / / / / / g+h+~+~+0+a+i+( @ @ + ` { ] + + + + + + + + + + + + Z.0+|+( @ @ + ", ". @ @ + { [ ^ / { # j+$ $ k+& & { ~+0+a+l+m+( @ @ + { ] ^ g+: } g 1 N 4.:.K.j.P Z.0+|+l+( @ @ + ", ". @ @ + [ ^ g+: | g w N %.K.j.P Z.0+a+l+m+n+( @ @ + ] ^ g+: } g 1 N %.K.j.j.P Z.0+|+l+i+( @ @ + ", ". @ @ + ^ g+: } g w N %.:.j.P Z.0+a+l+m+n+8+( @ @ + ^ g+: } g 1 N 4.:.K.j.P Z.0+|+l+i+n+( @ @ + ", ". @ @ + ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( @ @ + o+( p+q+r+( ( ( ( ( ( ( ( ( ( ( ( ( ( @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ + + + + + + + + + + + + + + + + + + + + @ @ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( @ @ + ", ". @ @ + # $ % & * = - ; > , ' ) ! ~ { ] ^ / s+@ @ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( @ @ + ", ". @ @ + $ % & * _ - ; > , ' ) ! ~ { ] ^ / : t+@ @ ( ( ( ( ( ( , 9+u+v+w+u+j+u+w+( ( ( ( ( @ @ + ", ". @ @ + % & * _ - ; > , ' ) ! ~ { ] ^ / : | ( @ @ ( ( ( ( ( ( $ h+: j+h+: j+: x+( ( ( ( ( @ @ + ", ". @ @ + & * - ( ( ( ( ( ( ( ( ( ( ( + : | g ( @ @ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( @ @ + ", ". @ @ + h > - ( y+z+A+B+C+D+E+F+G+H++ : } g ( @ @ + ` > - ; > , k.' < ! ` { ] ^ g+: } g ( @ @ + ", ". @ @ + O - ; ( I+J+K+L+M+N+O+P+Q+R++ } g 1 ( @ @ + O - ; > , k.' < ! ` { ] ^ g+: } g 1 ( @ @ + ", ". @ @ + - ; > ( S+T+U+V+W+X+Y+Z+`+ @+ g 1 N ( @ @ .@- ; > , k.' _ 4 4 $++@5.g+: } g 1 N ( @ @ + ", ". @ @ + ; > , ( @@#@$@%@&@*@=@-@;@>@+ 1 N 4.( @ @ + ; > , k.' < ,@+ '@)@;+X.0+} g 1 N 4.( @ @ + ", ". @ @ + > , k.( !@~@{@]@^@/@(@_@:@<@+ N 4.:.( @ @ + > , k.' < ! O ! ( ^ X.+ [@g 1 N 4.:.( @ @ + ", ". @ @ + , k.' ( }@|@1@2@3@4@5@6@7@8@+ 4.:.K.( @ @ + , k.' < ! ` { F.f g+9@4 ( 1 N 4.:.K.( @ @ + ", ". @ @ + k.' < ( 0@a@b@c@d@e@f@g@h@i@+ :.K.j.( @ @ + k.' < ! ` { ] ^ , U j@k@l@N 4.:.K.j.( @ @ + ", ". @ @ + ' < ! ( m@n@o@p@q@( ( ( r@s@+ K.j.P ( @ @ + ' < ! ` { ] ^ g+U t@y l@u@4.:.K.j.P ( @ @ + ", ". @ @ + < ! ` ( v@w@x@y@q@( ( ( z@r@+ j.P Z.( @ @ + < ! ` { ] ^ g+: A@B@C@m+4.:.K.j.P Z.( @ @ + ", ". @ @ + ! ` { ( z@( ( ( ( ( ( ( D@E@+ P Z.0+( @ @ + ! ` { ] ^ g+: } * . N 4.:.K.j.P Z.0+( @ @ + ", ". @ @ + ` { ] + + + + + + + + + + + + Z.0+|+( @ @ + ` { ] ^ g+: } * + +@4.:.K.j.P Z.0+|+( @ @ + ", ". @ @ + { ] ^ g+: } g 1 N 4.:.K.j.P Z.0+|+l+( @ @ + { ] ^ g+: } g ~ +@h+F@K.j.P Z.0+|+l+( @ @ + ", ". @ @ + ] ^ g+: } g 1 N %.K.j.j.P Z.0+|+l+i+( @ @ + ] ^ g+: } g 1 N n+F@}+j.P Z.0+|+l+i+( @ @ + ", ". @ @ + ^ g+: } g 1 N 4.:.K.j.P Z.0+|+l+i+n+( @ @ + ^ g+: } g 1 N 4.:.K.j.P Z.0+|+l+i+n+( @ @ + ", ". @ @ + ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( @ @ + ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + ", "+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + "}; �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/timer5.xpm��������������������������������������������������������0000644�0001750�0001750�00000001442�13431646202�015514� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "24 24 4 1", " c None", ". c #000000000000", "X c #7BDE7BDE7BDE", "o c #BDEEBDEEBDEE", " ", " ..... ", " X.X ", " .. X.X .. ", " X.. X.....X ..X ", " ....oo.XX.... ", " ..oooo.XXXX.. ", " .oooooo.XXXXX.. ", " XXoooooo.XXXXXXXX ", " .ooooooo.XXXXXXX. ", " XXooooooo.XXXXXXXXX ", " .oooooooo.XXXXXXXX. ", " .oooooooo.XXXXXXXX. ", " ....ooooo.XXXXX.... ", " .ooooooo.XXXXXXXXX. ", " .oooooo.XXXXXXXXXX. ", " XXoooo.XXXXXXXXXXXX ", " .ooo.XXXXXXXXXXX. ", " XXo.XXXXXXXXXXXXX ", " ..XXXXX.XXXXXX. ", " .XXXXX.XXXX.. ", " X..XX.XX..X ", " X.....X ", " "}; ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/Makefile.am�������������������������������������������������������0000644�0001750�0001750�00000002275�13431646202�015622� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������xpmdatadir = $(wprefs_datadir)/xpm if ICON_EXT_XPM dist_xpmdata_DATA = \ advancetonewworkspace.xpm \ animations.xpm \ appearance.xpm \ clip.xpm \ configs.xpm \ cycleworkspaces.xpm \ dock.xpm \ dockclipdrawersection.xpm \ dontlinkworkspaces.xpm \ drawer.xpm \ ergonomic.xpm \ expert.xpm \ fonts.xpm \ iconprefs.xpm \ keyboard.xpm \ keyboardprefs.xpm \ keyshortcuts.xpm \ menualign1.xpm \ menualign2.xpm \ menuprefs.xpm \ menus.xpm \ moreanim.xpm \ mousesettings.xpm \ mousespeed.xpm \ msty1.xpm \ msty2.xpm \ msty3.xpm \ newstyle.xpm \ nextstyle.xpm \ nonopaque.xpm \ noopaqueresize.xpm \ oldstyle.xpm \ opaque.xpm \ opaqueresize.xpm \ paths.xpm \ smallwindow.xpm \ smooth.xpm \ sound.xpm \ speed0.xpm \ speed0s.xpm \ speed1.xpm \ speed1s.xpm \ speed2.xpm \ speed2s.xpm \ speed3.xpm \ speed3s.xpm \ speed4.xpm \ speed4s.xpm \ tdel.xpm \ tedit.xpm \ temp.xpm \ textr.xpm \ theme.xpm \ timer0.xpm \ timer0s.xpm \ timer1.xpm \ timer1s.xpm \ timer2.xpm \ timer2s.xpm \ timer3.xpm \ timer3s.xpm \ timer4.xpm \ timer4s.xpm \ timer5.xpm \ timer5s.xpm \ tnew.xpm \ whandling.xpm \ windowfocus.xpm \ workspace.xpm \ workspacename.xpm \ xis.xpm endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/moreanim.xpm������������������������������������������������������0000644�0001750�0001750�00000006271�13431646202�016123� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "48 48 34 1", " c None", ". c #FFFFFFFFFFFF", "X c #AD6AAD6AAD6A", "o c #000000000000", "O c #421042104210", "+ c #D6B4D6B4D6B4", "@ c #CE72CE72CE72", "# c #842084208420", "$ c #DEF6DEF6DEF6", "% c #B5ACB5ACB5AC", "& c #210821082108", "* c #084208420842", "= c #8C628C628C62", "- c #318C318C318C", "; c #C630C630C630", ": c #BDEEBDEEBDEE", "> c #A528A528A528", ", c #529452945AD6", "< c #294A294A294A", "1 c #108410841084", "2 c #18C618C618C6", "3 c #9CE69CE69CE6", "4 c #F7BCF7BCF7BC", "5 c #39CE39CE39CE", "6 c #4A524A524A52", "7 c #E738E738E738", "8 c #739C739C739C", "9 c #EF7AEF7AEF7A", "0 c #5AD65AD65AD6", "q c #94A494A494A4", "w c #529452945294", "e c #631863186318", "r c #7BDE7BDE7BDE", "t c #6B5A6B5A6B5A", " ", " ......Xoo ", " ..ooo ......ooo O+@@@#oooo ....ooo ", " .$$oooo$$$++oooo o@@@@oooooo o%X&oooo ", " .$$oooo$$+++oo..ooo ooooo*ooo....Xoooo%X&oooo ", " oo*oooo$++++*o++=ooo ooo-;ooo:::%%%oooXX&*ooo ", " ooooooooo+@Oo*+++ooooooo;;:ooo:%%%%ooooooo*oo ", " oooooooooooo*o>,<*ooo***1-=ooo%%%%%ooooo*oooo ", " ooooo ooo*oo&2ooooooooooo**oooooX>*ooooooooo ", " oooo#*ooooooooooooo*ooooo*oooooooooo ", " .$$ooo oo*ooooo*oooooo13*ooooooo*ooo ", " .$$$ooo +oooooo*oooooo&4*53Xoooooooo ", " .$$+++oooooo**o*oooooo&o*o<6ooooXX&ooo ", " .$+++=ooooooooooooooo*o*o@:&*o66>>&oooo ", " .+++:ooooo2oooooooooooo*o..7oooo>>&oooo ", " oooo***ooooooooooooooooo4...***o>3&*ooo ", " ooo*.+++8ooooooooo*o*oo&4...9o8o33&*ooo ", " oooo.+++2oooooo**o*oooo&oo*o0*oo3q&o*oo ", " ooooo+@*oooooooo*ooooooooo*o*o*q-*o1oo ", " oo5@ooo*ooooooooooooooooooooooo*oooo ", " .+ooo ooo@oooooooooooooooooooo*oooo*oooo-&ooo ", " .+=ooo @oooo*o*ooo*5555Oo*o4...Xoooooo1qq&oooo", " .@@oooo ooooo*oooooO44.44o*&4....1ooooo5q=&oooo", " .@@*ooo ooo*o*ooooow..@*o*o3.....oooo 1==&oooo", " .@oo*oo @;ooooooooo*.*o*o*o......&oooo o=#&*ooo", " .o*oooo@;;2ooooo*ooooo*oooo......1*ooo oo#&o*oo", " ooo*oo.;;:eo2ooooooooooooooo....4o=ooo oro*ooo", " oooooo.;::Xo2o2<*o0oooooo oo...to**ooo ooooooo", " ooooo .:::<oooo*oow.oooo ooo.7**o#o2ooooo*ooo", " ooo .::%o**ooo*ow.*ooo ooo&ooo#r&oooooooo ", " o:%%o*ooooo5:.ooo0..ooooooooor8&ooooooo ", " o%%%*o*oo<7...**.....oooooooo88&oooo ", " oo%to*oooo13..oo......ooooooo88&*ooo ", " ooo*ooooooo*o**.......oooooo8o2o*oo ", " oooooooooo<0*oo.......4oooo8***o*oo ", " oooooooooooooo.....+>oooooooo*oooo ", " ooooooooooooo....*o**o*oooooooooo ", " 5%XX>>eooooooo>e*o*oo*ooooooooot*oo ", " .ooo XX>>>3ooooo oo=o*ootw2oooooo tt2ooo ", " .oooo &&&&&&&*ooo oooo1o.3*ooooo 8ttt&oooo ", " .%ooo oooo*o*o*o&eoooooo**oooooooo&&&&&oooo ", " .%%%oooooo*oo*oo-3qqooooo==##rrrooooooo*o*oo ", " .&&ooooooooooooo3qq==oooo=##rr8o*ooooo*o*ooo ", " oo*o*ooooooooooo&&&&&&oooo*&&&&*oooooooooooo ", " oooooooo oooo*o*oooooo*o*ooooooooooo ", " ooooooo ooo*o*ooooooooo*ooo ", " ooooo ooooooooooooooooooo ", " oooooooo oooooo "}; ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/fonts.xpm���������������������������������������������������������0000644�0001750�0001750�00000021245�13431646202�015443� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * fonts_xpm[] = { "48 48 251 2", " c None", ". c #2C2C2C", "+ c #FFFFFF", "@ c #A09CA0", "# c #BFB36A", "$ c #B4AA7C", "% c #FFE100", "& c #D0BB26", "* c #838083", "= c #BDB16A", "- c #6A6117", "; c #FADD00", "> c #B29F0B", ", c #4C4A4C", "' c #757375", ") c #CAB626", "! c #C6B008", "~ c #F6D901", "{ c #AF9C0C", "] c #827832", "^ c #F1D502", "/ c #232323", "( c #AC990D", "_ c #B9AD6A", ": c #EDD102", "< c #928310", "[ c #A9970D", "} c #B7AC6B", "| c #E9CE03", "1 c #9C914F", "2 c #A7950D", "3 c #B6AB6B", "4 c #E4CA04", "5 c #A3920E", "6 c #B4AA6B", "7 c #E0C604", "8 c #A69F8E", "9 c #988E4F", "0 c #A18F0E", "a c #B3A86B", "b c #DBC205", "c c #918D91", "d c #9D8D0F", "e c #B1A76C", "f c #D7BE06", "g c #9B8A0F", "h c #9E9A9E", "i c #9C989C", "j c #9A979A", "k c #9A969A", "l c #ACA268", "m c #D3BB07", "n c #9B979B", "o c #9F9B9F", "p c #AAA27D", "q c #C1B039", "r c #B0A66C", "s c #49441C", "t c #959295", "u c #898689", "v c #827F82", "w c #7F7C7F", "x c #7E7B7E", "y c #7D7A7D", "z c #7C797C", "A c #988E56", "B c #CEB707", "C c #807D80", "D c #8A878A", "E c #979397", "F c #AEA56C", "G c #9D999D", "H c #8F8B8F", "I c #777477", "J c #676567", "K c #5F5D5F", "L c #545254", "M c #4B494B", "N c #484648", "O c #454445", "P c #484748", "Q c #4C4B4C", "R c #4F4E4F", "S c #525152", "T c #797139", "U c #CAB308", "V c #4F4D4F", "W c #646264", "X c #848184", "Y c #979497", "Z c #ADA36C", "` c #888588", " . c #6F6C6F", ".. c #595759", "+. c #414041", "@. c #302F30", "#. c #282828", "$. c #272627", "%. c #292929", "&. c #2D2D2D", "*. c #3A393A", "=. c #565456", "-. c #7C733D", ";. c #C5AF09", ">. c #363636", ",. c #6A676A", "'. c #8B888B", "). c #B8A83B", "!. c #BBA929", "~. c #5D5B5D", "{. c #383838", "]. c #262526", "^. c #212021", "/. c #212121", "(. c #3E3D3E", "_. c #968D59", ":. c #C1AB09", "<. c #403F40", "[. c #525052", "}. c #817B6C", "|. c #A29965", "1. c #938F93", "2. c #4D4B4D", "3. c #2D2C2D", "4. c #222222", "5. c #252525", "6. c #393839", "7. c #636163", "8. c #A39968", "9. c #BDA80A", "0. c #6F6D6F", "a. c #555355", "b. c #4E4D4E", "c. c #817845", "d. c #615F61", "e. c #4D4C4D", "f. c #A19868", "g. c #B8A40B", "h. c #867913", "i. c #A99B35", "j. c #A2942F", "k. c #9B8E28", "l. c #A3931C", "m. c #939093", "n. c #767376", "o. c #4A494A", "p. c #999060", "q. c #B4A00B", "r. c #837613", "s. c #8F811E", "t. c #8E811E", "u. c #8C7F1C", "v. c #988915", "w. c #878387", "x. c #2B2B2B", "y. c #8C8355", "z. c #494849", "A. c #4A484A", "B. c #686031", "C. c #928E92", "D. c #737173", "E. c #2B2A2B", "F. c #242424", "G. c #383738", "H. c #797144", "I. c #AB980D", "J. c #8C888C", "K. c #9D978C", "L. c #847D4F", "M. c #999599", "N. c #5B595B", "O. c #353435", "P. c #2A292A", "Q. c #665F33", "R. c #A6940E", "S. c #959195", "T. c #95882F", "U. c #887A12", "V. c #908D90", "W. c #706E70", "X. c #454345", "Y. c #565125", "Z. c #A2910E", "`. c #868386", " + c #686136", ".+ c #989498", "++ c #827E82", "@+ c #585658", "#+ c #343334", "$+ c #4E481D", "%+ c #9E8D0F", "&+ c #464546", "*+ c #716E71", "=+ c #9E976F", "-+ c #6C6A6C", ";+ c #4A441C", ">+ c #998910", ",+ c #444344", "'+ c #5E5C5E", ")+ c #9D977F", "!+ c #8C8030", "~+ c #313131", "{+ c #47421B", "]+ c #958510", "^+ c #5C5A5C", "/+ c #8F8C8F", "(+ c #8E8B8E", "_+ c #46411B", ":+ c #918211", "<+ c #706D70", "[+ c #969396", "}+ c #535153", "|+ c #303030", "1+ c #443F1B", "2+ c #8C7E12", "3+ c #817E81", "4+ c #3D3C3D", "5+ c #262626", "6+ c #433E1C", "7+ c #969296", "8+ c #7B787B", "9+ c #423E1D", "0+ c #898589", "a+ c #3B3A3B", "b+ c #433F20", "c+ c #7F7214", "d+ c #908C90", "e+ c #444022", "f+ c #7A6E15", "g+ c #655E25", "h+ c #645B19", "i+ c #766B15", "j+ c #5A5319", "k+ c #827B57", "l+ c #7A755B", "m+ c #6C674D", "n+ c #5D583E", "o+ c #726716", "p+ c #645C1D", "q+ c #5B553B", "r+ c #7A745B", "s+ c #888272", "t+ c #8C898C", "u+ c #6D6317", "v+ c #68612D", "w+ c #7B7660", "x+ c #3A371F", "y+ c #323020", "z+ c #6E6C6E", "A+ c #6D6B6D", "B+ c #726F72", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ @ % % % % % % % % % % % % % % % % % % % % % % % % % % % % & * @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ @ = - - ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; > , @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ ' ' ) ! ~ ~ ~ ~ ~ ~ ~ { { { { { { { { { { { { ~ ~ ~ ~ { , @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ] ^ ^ ^ ^ ^ ^ ^ / , , , , , , , , , , , ^ ^ ^ ^ ( , @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ _ : : : : : : : / @ @ @ @ @ @ @ @ @ @ @ _ < : : [ , @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ } | | | | | | | / @ @ @ @ @ @ @ @ @ @ @ @ 1 | | 2 , @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 3 4 4 4 4 4 4 4 / @ @ @ @ @ @ @ @ @ @ @ @ 3 4 4 5 , @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 6 7 7 7 7 7 7 7 / @ @ @ @ @ @ @ @ @ @ @ @ 8 9 7 0 , @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ a b b b b b b b / @ @ @ @ @ @ @ @ @ @ @ @ @ c b d , @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ e f f f f f f f / @ @ @ @ @ @ @ @ @ @ @ @ @ @ f g , @ @ @ @ + ", ". @ @ h i j j k k k k k k k k k k l m m m m m m m / n i o @ @ @ p q @ @ @ @ @ @ r s , @ @ @ @ + ", ". @ h t u v w x y z z y z z y x x A B B B B B B B / C D E h @ @ F B , @ @ @ @ @ @ ' * @ @ @ @ + ", ". @ G H I J K L M N O O O P Q R S T U U U U U U U / V W X Y o @ Z U / @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ h t ` y ...+.@.#.$.%.&.*., =.-.;.;.;.;.;.;.;./ >.O ,.'.i ).!.;./ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ h n E H y ~.{.].^./.%.(.W z _.:.:.:.:.:.:.:./ P <.[.}.|.:.:.:./ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ o G 1.I 2.3.4./.5.6.7.u 8.9.9.9.9.9.9.9./ 0.a.b.c.9.9.9.9./ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ n u d.6.5./.4.&.e.z f.g.g.g.g.g.g.g.h.i.j.k.l.g.g.g.g./ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ h m.n.o.. 4./.5.6.W p.q.q.q.q.q.q.q.r.s.t.u.v.q.q.q.q./ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ k w.K >.5./.4.x., y.{ { { { { { { / z.A.P B.{ { { { / @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ h C.D.P E.4./.F.G.H.I.I.I.I.I.I.I./ J.i h K.L.I.I.I./ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ o M.X N.O.F./.4.P.Q.R.R.R.R.R.R.R./ I S.h @ c T.U.R./ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ G V.W.X.%.4./.F.Y.Z.Z.Z.Z.Z.Z.Z./ ~.`.j @ @ @ +Z./ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ o .+++@+#+/ /./.$+%+%+%+%+%+%+%+/ &+*+C.h @ @ =+%+/ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ i H -++.%././.;+>+>+>+>+>+>+>+/ ,+'+* .+o @ )+!+/ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ o E w a.~+/ /.{+]+]+]+]+]+]+]+/ K ^+D./+G @ @ * , @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ i (+,.(.%./._+:+:+:+:+:+:+:+/ * *+<+` k @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ h [+z }+|+/ 1+2+2+2+2+2+2+2+/ E u 3+J.M.o @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ i J.J 4+5+6+U.U.U.U.U.U.U./ h M.7+Y G @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ h S.8+V |+9+r.r.r.r.r.r.r./ @ @ o o @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ @ n 0+W a+b+c+c+c+c+c+c+c+/ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ @ i d+*+N e+f+f+f+f+f+f+f+/ i h o @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ i S.w.-+g+h+i+i+i+i+i+i+i+j+k+C.E i o @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ h 1.l+m+n+o+o+o+o+o+o+o+o+o+o+p+q+r+s+k o @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ G t+u+u+u+u+u+u+u+u+u+u+u+u+u+u+u+u+v+z h @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ h E w+x+x+x+x+x+x+x+x+x+x+x+x+x+x+x+y+z.h @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ h M.z+A+A+A+A+z+z+z+z+A+A+A+A+A+z+B+3+@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ o o o h h h h h h h h h o o o o @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + ", ". @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + ", "+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + "}; �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/tdel.xpm����������������������������������������������������������0000644�0001750�0001750�00000010314�13431646202�015235� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "27 24 130 2", " c None", ". c #000000000000", "X c #084200000000", "o c #1084108418C6", "O c #294A2108294A", "+ c #18C618C618C6", "@ c #210818C60842", "# c #294A10840000", "$ c #108408420000", "% c #2108294A5294", "& c #18C639CEB5AC", "* c #084239CED6B4", "= c #1084318CC630", "- c #084218C69CE6", "; c #000018C68C62", ": c #084221087BDE", "> c #18C618C6294A", ", c #18C618C61084", "< c #210839CEB5AC", "1 c #294A5294E738", "2 c #21085294F7BC", "3 c #18C65294F7BC", "4 c #6B5A8C62F7BC", "5 c #21085294EF7A", "6 c #000039CEDEF6", "7 c #0000318CCE72", "8 c #00001084A528", "9 c #0842108439CE", "0 c #18C6294A5AD6", "q c #39CE739CEF7A", "w c #AD6AC630F7BC", "e c #94A4AD6AFFFF", "r c #08424210F7BC", "t c #318C6318F7BC", "y c #10844A52F7BC", "u c #00004210EF7A", "i c #000018C6B5AC", "p c #000008429CE6", "a c #000008428C62", "s c #00000000294A", "d c #0842084218C6", "f c #0842294A94A4", "g c #318C6B5AF7BC", "h c #94A4B5ACFFFF", "j c #5AD68C62F7BC", "k c #00004210F7BC", "l c #00004A52EF7A", "z c #000010848C62", "x c #000000000842", "c c #108410841084", "v c #210821082108", "b c #294A4A52CE72", "n c #739C94A4EF7A", "m c #39CE6B5AF7BC", "M c #00004210DEF6", "N c #0000294AD6B4", "B c #00002108C630", "V c #000021088C62", "C c #084208420842", "Z c #421042104210", "A c #AD6AAD6AAD6A", "S c #9CE69CE69CE6", "D c #94A49CE6B5AC", "F c #6B5A8420BDEE", "G c #4A526B5ABDEE", "H c #4A526318BDEE", "J c #39CE5294BDEE", "K c #294A4210AD6A", "L c #21085294BDEE", "P c #18C64210C630", "I c #108439CECE72", "U c #5AD66318B5AC", "Y c #5AD66B5AB5AC", "T c #6B5A6B5A739C", "R c #318C318C318C", "E c #94A494A494A4", "W c #8C628C6294A4", "Q c #739C7BDE8C62", "! c #6B5A739C8C62", "~ c #7BDE8420A528", "^ c #A528AD6AC630", "/ c #BDEEBDEEBDEE", "( c #739C739C739C", ") c #294A294A294A", "_ c #A528A528A528", "` c #842094A48420", "' c #8C628C628C62", "] c #842084208420", "[ c #D6B4D6B4D6B4", "{ c #C630C630C630", "} c #B5ACB5ACB5AC", "| c #529452945294", " . c #7BDE7BDE7BDE", ".. c #7BDE94A48420", "X. c #1084739C2108", "o. c #2108739C318C", "O. c #7BDE8C627BDE", "+. c #631863186318", "@. c #9CE6A5289CE6", "#. c #4A5284205AD6", "$. c #39CE7BDE4210", "%. c #529484205AD6", "&. c #739C94A47BDE", "*. c #6B5A94A46B5A", "=. c #8C6294A48C62", "-. c #84208C628420", ";. c #421084204A52", ":. c #5AD67BDE5AD6", ">. c #6B5A6B5A6B5A", ",. c #6B5A84206B5A", "<. c #294A739C318C", "1. c #10846B5A2108", "2. c #18C618C62108", "3. c #6B5A7BDE6B5A", "4. c #00006B5A1084", "5. c #18C6739C294A", "6. c #739C8420739C", "7. c #08426B5A18C6", "8. c #39CE39CE39CE", "9. c #5AD65AD65AD6", "0. c #108408420842", "q. c #4A524A524A52", "w. c #10844210EF7A", "e. c #00000842318C", "r. c #294A318C4210", "t. c #21084210AD6A", "y. c #0000294ACE72", "u. c #000008424210", "i. c #0000000018C6", "p. c #084218C639CE", " . . . . . . . . X X X X X X . X X ", " . . . . . . o O + @ # $ X X X X X X X ", " . . . . . % & * = - ; : > X X . . X X ", " . . . . . , < 1 2 3 4 5 6 7 8 9 . . . . . ", " . . . . X 0 q w e r t y u i p a s . ", " . . . . . d f g h j k k k l i p p z x ", " . . . c v c c % b n m r k k 6 M N B i 8 V X . ", " . . . . . C Z A S D F G H J K L P I b U Y T v . ", " . . . R S S S S S E W Q Q ! ~ ^ / / ( . ", " . . . . . . ) S A A _ ` ` E E ' ] _ [ { } | ", " . . C c c . + .A A ..X.o.O.' ] ] A { } _ v ", " . + R + v c . c +._ @.#.$.o.%.] ] ] A } A S . ", " . . Z v . . . . . | S &.*.=.-.;.:. .' A _ E >. ", ". . C Z c . . . . . Z E X.%.=.,.<.1.( ] _ E ] 2. . . ", ". . C Z v . + . . . v 3.4.5.6.o.7.7.( ] E ] ( C . . ", " . c R + + + C . c >.E ' ' . .( >.] ] >.8.. . . . ", " . . C c + v + C . >.' ' ] .( >.>. . .9.+ . . . . ", " . . . . . C 0.0.C X q.] ] .( >.+.( ] +.Z c . . ", " . . . . . . . X X X ) . .( >.+.9.( +.G m w.e. ", " . . . . . . . . C ) ) v ) q.q.+.r.t.3 y.u. ", " . . . . . . . . . . C C . i.p.s . ", " . . ", " . ", " "}; ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/xpm/timer4s.xpm�������������������������������������������������������0000644�0001750�0001750�00000001467�13431646202�015705� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * image_name[] = { "24 24 5 1", " c None", ". c #000000000000", "X c #7BDE7BDE7BDE", "o c #FFFFFFFFFFFF", "O c #FFFF00000000", " ", " ..... ", " X.X ", " .. X.X .. ", " X.. X.....X ..X ", " ....oo.OO.... ", " ..oooo.OOOO.. ", " .oooooo.OOOOOO. ", " XXoooooo.OOOOOOXX ", " .ooooooo.OOOOOOO. ", " XXooooooo.OOOOOOOXX ", " .oooooooo.OOOOOOOO. ", " .oooooooo.OOOOOOOO. ", " ....ooooo.OOOOO.... ", " .oooooooo.OOOOOOOO. ", " .oooooooo.OOOOOOOO. ", " XXooooooo.OOOOOOOXX ", " .ooooooo.OOOOOOO. ", " XXoooooo.OOOOOOXX ", " .oooooo.OOOOOO. ", " .Xoooo.OOOO.. ", " X..oo.OO..X ", " X.....X ", " "}; ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/Themes.c��������������������������������������������������������������0000644�0001750�0001750�00000012064�13431646202�014350� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Themes.c- Theme stuff * * WPrefs - Window Maker Preferences Program * * Copyright (c) 1998-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "WPrefs.h" #include <unistd.h> typedef struct _Panel { WMBox *box; char *sectionName; CallbackRec callbacks; WMWidget *parent; WMButton *saveB; WMList *list; WMButton *loadB; WMButton *instB; WMFrame *totF; WMButton *totB; WMLabel *totL; WMFrame *botF; WMButton *botB; WMLabel *botL; pid_t tilePID; pid_t barPID; } _Panel; #define ICON_FILE "theme" static void showData(_Panel * panel) { } static void finishedTileDownload(void *data) { _Panel *panel = (_Panel *) data; WMSetButtonText(panel->totB, _("Set")); panel->tilePID = 0; } static void finishedBarDownload(void *data) { _Panel *panel = (_Panel *) data; WMSetButtonText(panel->botB, _("Set")); panel->barPID = 0; } static pid_t downloadFile(WMScreen * scr, _Panel * panel, const char *file) { pid_t pid; pid = fork(); if (pid < 0) { werror("could not fork() process"); WMRunAlertPanel(scr, GetWindow(), _("Error"), "Could not start download. fork() failed", _("OK"), NULL, NULL); return -1; } if (pid != 0) { return pid; } close(ConnectionNumber(WMScreenDisplay(scr))); exit(1); } static void downloadCallback(WMWidget * w, void *data) { _Panel *panel = (_Panel *) data; pid_t newPid; WMButton *button = (WMButton *) w; pid_t *pid; if (button == panel->totB) { pid = &panel->tilePID; } else { pid = &panel->barPID; } if (*pid == 0) { newPid = downloadFile(WMWidgetScreen(w), panel, NULL); if (newPid < 0) { return; } WMSetButtonText(button, _("Stop")); if (button == panel->totB) { AddDeadChildHandler(newPid, finishedTileDownload, data); } else { AddDeadChildHandler(newPid, finishedBarDownload, data); } *pid = newPid; } else { *pid = 0; WMSetButtonText(button, _("Download")); } } static void createPanel(Panel * p) { _Panel *panel = (_Panel *) p; panel->box = WMCreateBox(panel->parent); WMSetViewExpandsToParent(WMWidgetView(panel->box), 2, 2, 2, 2); panel->saveB = WMCreateCommandButton(panel->box); WMResizeWidget(panel->saveB, 154, 24); WMMoveWidget(panel->saveB, 15, 10); WMSetButtonText(panel->saveB, _("Save Current Theme")); panel->list = WMCreateList(panel->box); WMResizeWidget(panel->list, 154, 150); WMMoveWidget(panel->list, 15, 40); panel->loadB = WMCreateCommandButton(panel->box); WMResizeWidget(panel->loadB, 74, 24); WMMoveWidget(panel->loadB, 15, 200); WMSetButtonText(panel->loadB, _("Load")); panel->instB = WMCreateCommandButton(panel->box); WMResizeWidget(panel->instB, 74, 24); WMMoveWidget(panel->instB, 95, 200); WMSetButtonText(panel->instB, _("Install")); /**************** Tile of the day ****************/ panel->totF = WMCreateFrame(panel->box); WMResizeWidget(panel->totF, 210, 105); WMMoveWidget(panel->totF, 240, 10); WMSetFrameTitle(panel->totF, _("Tile of The Day")); panel->totL = WMCreateLabel(panel->totF); WMResizeWidget(panel->totL, 67, 67); WMMoveWidget(panel->totL, 25, 25); WMSetLabelRelief(panel->totL, WRSunken); panel->totB = WMCreateCommandButton(panel->totF); WMResizeWidget(panel->totB, 86, 24); WMMoveWidget(panel->totB, 105, 45); WMSetButtonText(panel->totB, _("Download")); WMSetButtonAction(panel->totB, downloadCallback, panel); WMMapSubwidgets(panel->totF); /**************** Bar of the day ****************/ panel->botF = WMCreateFrame(panel->box); WMResizeWidget(panel->botF, 315, 95); WMMoveWidget(panel->botF, 190, 125); WMSetFrameTitle(panel->botF, _("Bar of The Day")); panel->botL = WMCreateLabel(panel->botF); WMResizeWidget(panel->botL, 285, 32); WMMoveWidget(panel->botL, 15, 20); WMSetLabelRelief(panel->botL, WRSunken); panel->botB = WMCreateCommandButton(panel->botF); WMResizeWidget(panel->botB, 86, 24); WMMoveWidget(panel->botB, 110, 60); WMSetButtonText(panel->botB, _("Download")); WMSetButtonAction(panel->botB, downloadCallback, panel); WMMapSubwidgets(panel->botF); WMRealizeWidget(panel->box); WMMapSubwidgets(panel->box); showData(panel); } static void storeData(_Panel * panel) { } Panel *InitThemes(WMWidget *parent) { _Panel *panel; panel = wmalloc(sizeof(_Panel)); panel->sectionName = _("Themes"); panel->parent = parent; panel->callbacks.createWidgets = createPanel; panel->callbacks.updateDomain = storeData; AddSection(panel, ICON_FILE); return panel; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/Workspace.c�����������������������������������������������������������0000644�0001750�0001750�00000014522�13431646202�015062� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Workspace.c- workspace options * * WPrefs - Window Maker Preferences Program * * Copyright (c) 1998-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "WPrefs.h" typedef struct _Panel { WMBox *box; char *sectionName; char *description; CallbackRec callbacks; WMWidget *parent; WMFrame *navF; WMButton *linkB; WMButton *cyclB; WMButton *newB; WMLabel *linkL; WMLabel *cyclL; WMLabel *newL; WMLabel *posiL; WMLabel *posL; WMPopUpButton *posP; } _Panel; #define ICON_FILE "workspace" #define ARQUIVO_XIS "xis" #define DONT_LINK_FILE "dontlinkworkspaces" #define CYCLE_FILE "cycleworkspaces" #define ADVANCE_FILE "advancetonewworkspace" #define WSNAME_FILE "workspacename" static char *WSNamePositions[] = { "none", "center", "top", "bottom", "topleft", "topright", "bottomleft", "bottomright" }; static void showData(_Panel * panel) { int i, idx; char *str; WMSetButtonSelected(panel->linkB, !GetBoolForKey("DontLinkWorkspaces")); WMSetButtonSelected(panel->cyclB, GetBoolForKey("CycleWorkspaces")); WMSetButtonSelected(panel->newB, GetBoolForKey("AdvanceToNewWorkspace")); str = GetStringForKey("WorkspaceNameDisplayPosition"); if (!str) str = "center"; idx = 1; /* center */ for (i = 0; i < wlengthof(WSNamePositions); i++) { if (strcasecmp(WSNamePositions[i], str) == 0) { idx = i; break; } } WMSetPopUpButtonSelectedItem(panel->posP, idx); } static void createPanel(Panel * p) { _Panel *panel = (_Panel *) p; WMScreen *scr = WMWidgetScreen(panel->parent); WMPixmap *icon1; RImage *xis = NULL; RContext *rc = WMScreenRContext(scr); char *path; path = LocateImage(ARQUIVO_XIS); if (path) { xis = RLoadImage(rc, path, 0); if (!xis) { wwarning(_("could not load image file %s"), path); } wfree(path); } panel->box = WMCreateBox(panel->parent); WMSetViewExpandsToParent(WMWidgetView(panel->box), 2, 2, 2, 2); /***************** Workspace Navigation *****************/ panel->navF = WMCreateFrame(panel->box); WMResizeWidget(panel->navF, 490, 210); WMMoveWidget(panel->navF, 15, 8); WMSetFrameTitle(panel->navF, _("Workspace Navigation")); panel->cyclB = WMCreateSwitchButton(panel->navF); WMResizeWidget(panel->cyclB, 410, 34); WMMoveWidget(panel->cyclB, 75, 26); WMSetButtonText(panel->cyclB, _("Wrap to the first workspace from the last workspace")); panel->cyclL = WMCreateLabel(panel->navF); WMResizeWidget(panel->cyclL, 60, 60); WMMoveWidget(panel->cyclL, 10, 12); WMSetLabelImagePosition(panel->cyclL, WIPImageOnly); CreateImages(scr, rc, xis, CYCLE_FILE, &icon1, NULL); if (icon1) { WMSetLabelImage(panel->cyclL, icon1); WMReleasePixmap(icon1); } /**/ panel->linkB = WMCreateSwitchButton(panel->navF); WMResizeWidget(panel->linkB, 410, 34); WMMoveWidget(panel->linkB, 75, 73); WMSetButtonText(panel->linkB, _("Switch workspaces while dragging windows")); panel->linkL = WMCreateLabel(panel->navF); WMResizeWidget(panel->linkL, 60, 40); WMMoveWidget(panel->linkL, 10, 77); WMSetLabelImagePosition(panel->linkL, WIPImageOnly); CreateImages(scr, rc, xis, DONT_LINK_FILE, &icon1, NULL); if (icon1) { WMSetLabelImage(panel->linkL, icon1); WMReleasePixmap(icon1); } /**/ panel->newB = WMCreateSwitchButton(panel->navF); WMResizeWidget(panel->newB, 410, 34); WMMoveWidget(panel->newB, 75, 115); WMSetButtonText(panel->newB, _("Automatically create new workspaces")); panel->newL = WMCreateLabel(panel->navF); WMResizeWidget(panel->newL, 60, 20); WMMoveWidget(panel->newL, 10, 123); WMSetLabelImagePosition(panel->newL, WIPImageOnly); CreateImages(scr, rc, xis, ADVANCE_FILE, &icon1, NULL); if (icon1) { WMSetLabelImage(panel->newL, icon1); WMReleasePixmap(icon1); } /**/ panel->posL = WMCreateLabel(panel->navF); WMResizeWidget(panel->posL, 275, 30); WMMoveWidget(panel->posL, 75, 161); // WMSetLabelTextAlignment(panel->posL, WARight); WMSetLabelText(panel->posL, _("Position of workspace name display")); panel->posiL = WMCreateLabel(panel->navF); WMResizeWidget(panel->posiL, 60, 40); WMMoveWidget(panel->posiL, 10, 156); WMSetLabelImagePosition(panel->posiL, WIPImageOnly); CreateImages(scr, rc, xis, WSNAME_FILE, &icon1, NULL); if (icon1) { WMSetLabelImage(panel->posiL, icon1); WMReleasePixmap(icon1); } panel->posP = WMCreatePopUpButton(panel->navF); WMResizeWidget(panel->posP, 125, 20); WMMoveWidget(panel->posP, 350, 166); WMAddPopUpButtonItem(panel->posP, _("Disable")); WMAddPopUpButtonItem(panel->posP, _("Center")); WMAddPopUpButtonItem(panel->posP, _("Top")); WMAddPopUpButtonItem(panel->posP, _("Bottom")); WMAddPopUpButtonItem(panel->posP, _("Top/Left")); WMAddPopUpButtonItem(panel->posP, _("Top/Right")); WMAddPopUpButtonItem(panel->posP, _("Bottom/Left")); WMAddPopUpButtonItem(panel->posP, _("Bottom/Right")); WMMapSubwidgets(panel->navF); if (xis) RReleaseImage(xis); WMRealizeWidget(panel->box); WMMapSubwidgets(panel->box); showData(panel); } static void storeData(_Panel * panel) { SetBoolForKey(!WMGetButtonSelected(panel->linkB), "DontLinkWorkspaces"); SetBoolForKey(WMGetButtonSelected(panel->cyclB), "CycleWorkspaces"); SetBoolForKey(WMGetButtonSelected(panel->newB), "AdvanceToNewWorkspace"); SetStringForKey(WSNamePositions[WMGetPopUpButtonSelectedItem(panel->posP)], "WorkspaceNameDisplayPosition"); } Panel *InitWorkspace(WMWidget *parent) { _Panel *panel; panel = wmalloc(sizeof(_Panel)); panel->sectionName = _("Workspace Preferences"); panel->description = _("Workspace navigation features\n" "and workspace name display settings."); panel->parent = parent; panel->callbacks.createWidgets = createPanel; panel->callbacks.updateDomain = storeData; AddSection(panel, ICON_FILE); return panel; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/Makefile.am�����������������������������������������������������������0000644�0001750�0001750�00000002123�13431646202�015006� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������SUBDIRS = xpm tiff po AUTOMAKE_OPTIONS = wpexecbindir = @wprefs_bindir@ wpexecbin_PROGRAMS = WPrefs wpdatadir = @wprefs_datadir@ wpdata_DATA = WPrefs.tiff WPrefs.xpm EXTRA_DIST = $(wpdata_DATA) \ KeyboardSettings.c \ Themes.c WPrefs_SOURCES = \ main.c \ WPrefs.c \ WPrefs.h \ Appearance.c \ Configurations.c \ Docks.c \ Expert.c \ Focus.c \ FontSimple.c \ Icons.c \ KeyboardShortcuts.c \ Menu.c \ MenuPreferences.c \ MouseSettings.c \ Paths.c \ Preferences.c \ TexturePanel.c \ TexturePanel.h \ WindowHandling.c \ Workspace.c \ double.c \ editmenu.c \ editmenu.h \ xmodifier.c # not_yet_fully_implemented #WPrefs_SOURCES += \ # KeyboardSettings.c \ # Themes.c AM_CFLAGS = AM_CPPFLAGS = -DRESOURCE_PATH=\"$(wpdatadir)\" -DWMAKER_RESOURCE_PATH=\"$(pkgdatadir)\" \ -I$(top_srcdir)/wrlib -I$(top_srcdir)/WINGs @HEADER_SEARCH_PATH@ WPrefs_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.la WPrefs_LDADD = \ $(top_builddir)/WINGs/libWINGs.la\ $(top_builddir)/WINGs/libWUtil.la\ $(top_builddir)/wrlib/libwraster.la \ @XLFLAGS@ @XLIBS@ \ @LIBM@ \ @FCLIBS@ \ @INTLIBS@ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/Icons.c���������������������������������������������������������������0000644�0001750�0001750�00000034110�13642357773�014212� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Icons.c- icon preferences * * WPrefs - Window Maker Preferences Program * * Copyright (c) 1998-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "WPrefs.h" static const struct { const char *db_value; const char *label; } icon_animation[] = { { "zoom", N_("Shrinking/Zooming") }, { "twist", N_("Spinning/Twisting") }, { "flip", N_("3D-flipping") }, { "none", N_("None") } }; /* * The code is using a convenient trick to make the link between the icon * position and its representing number: * bit[0] tell if the icon are arranged horizontally or vertically * bit[2:1] tell the corner to which they are starting from: * bit[2] is for Top or Bottom choice * bit[1] is for Left or Right choice */ static const char icon_position_dbvalue[][4] = { /* 000: */ "tlv", /* 001: */ "tlh", /* 010: */ "trv", /* 011: */ "trh", /* 100: */ "blv", /* 101: */ "blh", /* 110: */ "brv", /* 111: */ "brh" }; typedef struct _Panel { WMBox *box; char *sectionName; char *description; CallbackRec callbacks; WMWidget *parent; WMFrame *posF; WMFrame *posVF; WMFrame *posV; struct { int width, height; } icon_position; WMButton *posB[wlengthof_nocheck(icon_position_dbvalue)]; WMFrame *animF; WMPopUpButton *animP; WMFrame *optF; WMButton *arrB; WMButton *omnB; WMButton *sclB; WMButton *marginB; struct { WMFrame *frame; WMSlider *slider; WMLabel *label; } minipreview; WMFrame *sizeF; WMPopUpButton *sizeP; int iconPos; } _Panel; /* * Minimum size for a Mini-Preview: * This value is actually twice the size of the minimum icon size choosable. * We set the slider min to taht number minus one, because when set to this * value WPrefs will consider that the user wants the feature turned off. */ static const int minipreview_minimum_size = 2 * 24 - 1; static const int minipreview_maximum_size = 512; /* Arbitrary limit for the slider */ #define ICON_FILE "iconprefs" static void showIconLayout(WMWidget * widget, void *data) { _Panel *panel = (_Panel *) data; int w, h; int i; for (i = 0; i < wlengthof(panel->posB); i++) { if (panel->posB[i] == widget) { panel->iconPos = i; break; } } if (panel->iconPos & 1) { w = 32; h = 8; } else { w = 8; h = 32; } WMResizeWidget(panel->posV, w, h); switch (panel->iconPos & ~1) { case 0: WMMoveWidget(panel->posV, 2, 2); break; case 2: WMMoveWidget(panel->posV, panel->icon_position.width - 2 - w, 2); break; case 4: WMMoveWidget(panel->posV, 2, panel->icon_position.height - 2 - h); break; default: WMMoveWidget(panel->posV, panel->icon_position.width - 2 - w, panel->icon_position.height - 2 - h); break; } } static void minipreview_slider_changed(WMWidget *w, void *data) { _Panel *panel = (_Panel *) data; char buffer[64]; int value; /* Parameter is not used, but tell the compiler that it is ok */ (void) w; value = WMGetSliderValue(panel->minipreview.slider); /* Round the value to a multiple of 8 because it makes the displayed value look better */ value &= ~7; if (value <= minipreview_minimum_size) sprintf(buffer, _("OFF")); else sprintf(buffer, "%i", value); WMSetLabelText(panel->minipreview.label, buffer); } static void showData(_Panel * panel) { int i; char *str; Bool b; WMSetButtonSelected(panel->arrB, GetBoolForKey("AutoArrangeIcons")); WMSetButtonSelected(panel->omnB, GetBoolForKey("StickyIcons")); WMSetButtonSelected(panel->sclB, GetBoolForKey("SingleClickLaunch")); WMSetButtonSelected(panel->marginB, GetBoolForKey("EnforceIconMargin")); str = GetStringForKey("IconPosition"); if (str != NULL) { for (i = 0; i < wlengthof(icon_position_dbvalue); i++) if (strcmp(str, icon_position_dbvalue[i]) == 0) { panel->iconPos = i; goto found_position_value; } wwarning(_("bad value \"%s\" for option %s, using default \"%s\""), str, "IconPosition", icon_position_dbvalue[5]); } panel->iconPos = 5; found_position_value: WMPerformButtonClick(panel->posB[panel->iconPos]); i = GetIntegerForKey("IconSize"); i = (i - 24) / 8; if (i < 0) i = 0; else if (i > 9) i = 9; WMSetPopUpButtonSelectedItem(panel->sizeP, i); /* Mini-Previews for Icons */ str = GetStringForKey("MiniwindowPreviewBalloons"); if (str != NULL) { /* New names found, use them in priority */ b = GetBoolForKey("MiniwindowPreviewBalloons"); if (b) { i = GetIntegerForKey("MiniPreviewSize"); if (i <= minipreview_minimum_size) i = minipreview_minimum_size; } else { i = minipreview_minimum_size; } } WMSetSliderValue(panel->minipreview.slider, i); minipreview_slider_changed(panel->minipreview.slider, panel); /* Animation */ str = GetStringForKey("IconificationStyle"); if (str != NULL) { for (i = 0; i < wlengthof(icon_animation); i++) { if (strcasecmp(str, icon_animation[i].db_value) == 0) { WMSetPopUpButtonSelectedItem(panel->animP, i); goto found_animation_value; } } wwarning(_("animation style \"%s\" is unknown, resetting to \"%s\""), str, icon_animation[0].db_value); } /* If we're here, no valid value have been found so we fall-back to the default */ WMSetPopUpButtonSelectedItem(panel->animP, 0); found_animation_value: ; } static void createPanel(Panel * p) { _Panel *panel = (_Panel *) p; WMScreen *scr; WMColor *color; int i; char buf[16]; int swidth, sheight; int width, height; int startx, starty; panel->box = WMCreateBox(panel->parent); WMSetViewExpandsToParent(WMWidgetView(panel->box), 2, 2, 2, 2); /***************** Positioning of Icons *****************/ panel->posF = WMCreateFrame(panel->box); WMResizeWidget(panel->posF, 268, 155); WMMoveWidget(panel->posF, 12, 6); WMSetFrameTitle(panel->posF, _("Icon Positioning")); /* * There is an available area of 240 x 122, starting at x=14 y=20 * We have to keep 14 pixels on each side for the buttons, * and an extra pixel for spacing. We also want the final dimension * to be an even number so we can have the 2 buttons per side of * the same size. * In this area, we want to have a rectangle with the same aspect * ratio as the screen. */ scr = WMWidgetScreen(panel->parent); swidth = WidthOfScreen(DefaultScreenOfDisplay(WMScreenDisplay(scr))); sheight = HeightOfScreen(DefaultScreenOfDisplay(WMScreenDisplay(scr))); width = swidth * (122 - 15 * 2) / sheight; if (width <= (240 - 15 * 2)) { height = 122 - 15 * 2; } else { width = 240 - 15 * 2; height = sheight * (240 - 15 * 2) / swidth; } panel->icon_position.width = width; panel->icon_position.height = height; startx = 14 + (240 - 15 * 2 - width) / 2; starty = 20 + (122 - 15 * 2 - height) / 2; for (i = 0; i < wlengthof(icon_position_dbvalue); i++) { int x, y, w, h; panel->posB[i] = WMCreateButton(panel->posF, WBTOnOff); WMSetButtonAction(panel->posB[i], showIconLayout, panel); if (i > 0) WMGroupButtons(panel->posB[0], panel->posB[i]); if (i & 1) { /* 0=Vertical, 1=Horizontal */ w = width / 2; h = 14; } else { w = 14; h = height / 2; } WMResizeWidget(panel->posB[i], w, h); x = startx; y = starty; switch (i) { case 0: x += 0; y += 15; break; case 1: x += 15; y += 0; break; case 2: x += 15 + width; y += 15; break; case 3: x += 15 + w; y += 0; break; case 4: x += 0; y += 15 + h; break; case 5: x += 15; y += 15 + height; break; case 6: x += 15 + width; y += 15 + h; break; case 7: x += 15 + w; y += 15 + height; break; } WMMoveWidget(panel->posB[i], x, y); } color = WMCreateRGBColor(WMWidgetScreen(panel->parent), 0x5100, 0x5100, 0x7100, True); panel->posVF = WMCreateFrame(panel->posF); WMResizeWidget(panel->posVF, width, height); WMMoveWidget(panel->posVF, startx + 15, starty + 15); WMSetFrameRelief(panel->posVF, WRSunken); WMSetWidgetBackgroundColor(panel->posVF, color); WMReleaseColor(color); panel->posV = WMCreateFrame(panel->posVF); WMSetFrameRelief(panel->posV, WRSimple); WMMapSubwidgets(panel->posF); /***************** Icon Size ****************/ panel->sizeF = WMCreateFrame(panel->box); WMResizeWidget(panel->sizeF, 100, 52); WMMoveWidget(panel->sizeF, 12, 168); WMSetFrameTitle(panel->sizeF, _("Icon Size")); WMSetBalloonTextForView(_("The size of the dock/application icon and miniwindows"), WMWidgetView(panel->sizeF)); panel->sizeP = WMCreatePopUpButton(panel->sizeF); WMResizeWidget(panel->sizeP, 80, 20); WMMoveWidget(panel->sizeP, 10, 19); for (i = 24; i <= 96; i += 8) { sprintf(buf, "%ix%i", i, i); WMAddPopUpButtonItem(panel->sizeP, buf); } WMMapSubwidgets(panel->sizeF); /***************** Mini-Previews ****************/ panel->minipreview.frame = WMCreateFrame(panel->box); WMResizeWidget(panel->minipreview.frame, 156, 52); WMMoveWidget(panel->minipreview.frame, 124, 168); WMSetFrameTitle(panel->minipreview.frame, _("Mini-Previews for Icons")); WMSetBalloonTextForView(_("The Mini-Preview provides a small view of the content of the\n" "window when the mouse is placed over the icon."), WMWidgetView(panel->minipreview.frame)); panel->minipreview.slider = WMCreateSlider(panel->minipreview.frame); WMResizeWidget(panel->minipreview.slider, 109, 15); WMMoveWidget(panel->minipreview.slider, 11, 23); WMSetSliderMinValue(panel->minipreview.slider, minipreview_minimum_size); WMSetSliderMaxValue(panel->minipreview.slider, minipreview_maximum_size); WMSetSliderAction(panel->minipreview.slider, minipreview_slider_changed, panel); panel->minipreview.label = WMCreateLabel(panel->minipreview.frame); WMResizeWidget(panel->minipreview.label, 33, 15); WMMoveWidget(panel->minipreview.label, 120, 23); WMSetLabelText(panel->minipreview.label, _("OFF")); WMMapSubwidgets(panel->minipreview.frame); /***************** Animation ****************/ panel->animF = WMCreateFrame(panel->box); WMResizeWidget(panel->animF, 215, 52); WMMoveWidget(panel->animF, 292, 6); WMSetFrameTitle(panel->animF, _("Iconification Animation")); panel->animP = WMCreatePopUpButton(panel->animF); WMResizeWidget(panel->animP, 195, 20); WMMoveWidget(panel->animP, 10, 19); for (i = 0; i < wlengthof(icon_animation); i++) WMAddPopUpButtonItem(panel->animP, _(icon_animation[i].label)); WMMapSubwidgets(panel->animF); /***************** Options ****************/ panel->optF = WMCreateFrame(panel->box); WMResizeWidget(panel->optF, 215, 148); WMMoveWidget(panel->optF, 292, 72); /* WMSetFrameTitle(panel->optF, _("Icon Display")); */ starty = 8 + 14; /* the last term centers the checkboxes within the panel; subtract 13 for a new option */ panel->arrB = WMCreateSwitchButton(panel->optF); WMResizeWidget(panel->arrB, 198, 26); WMMoveWidget(panel->arrB, 12, starty); starty += 26; WMSetButtonText(panel->arrB, _("Auto-arrange icons")); WMSetBalloonTextForView(_("Keep icons and miniwindows arranged all the time."), WMWidgetView(panel->arrB)); panel->omnB = WMCreateSwitchButton(panel->optF); WMResizeWidget(panel->omnB, 198, 26); WMMoveWidget(panel->omnB, 12, starty); starty += 26; WMSetButtonText(panel->omnB, _("Omnipresent miniwindows")); WMSetBalloonTextForView(_("Make miniwindows be present in all workspaces."), WMWidgetView(panel->omnB)); panel->sclB = WMCreateSwitchButton(panel->optF); WMResizeWidget(panel->sclB, 198, 26); WMMoveWidget(panel->sclB, 12, starty); starty += 26; WMSetButtonText(panel->sclB, _("Single click activation")); WMSetBalloonTextForView(_("Launch applications and restore windows with a single click."), WMWidgetView(panel->sclB)); panel->marginB = WMCreateSwitchButton(panel->optF); WMResizeWidget(panel->marginB, 198, 26); WMMoveWidget(panel->marginB, 12, starty); starty += 26; WMSetButtonText(panel->marginB, _("Enforce icon margin")); WMSetBalloonTextForView(_("Make sure that the icon image does not protrude into the icon frame."), WMWidgetView(panel->marginB)); WMMapSubwidgets(panel->optF); WMRealizeWidget(panel->box); WMMapSubwidgets(panel->box); showData(panel); } static void storeData(_Panel * panel) { int i; SetBoolForKey(WMGetButtonSelected(panel->arrB), "AutoArrangeIcons"); SetBoolForKey(WMGetButtonSelected(panel->omnB), "StickyIcons"); SetBoolForKey(WMGetButtonSelected(panel->sclB), "SingleClickLaunch"); SetBoolForKey(WMGetButtonSelected(panel->marginB), "EnforceIconMargin"); SetIntegerForKey(WMGetPopUpButtonSelectedItem(panel->sizeP) * 8 + 24, "IconSize"); SetStringForKey(icon_position_dbvalue[panel->iconPos], "IconPosition"); i = WMGetSliderValue(panel->minipreview.slider); if (i <= minipreview_minimum_size) { SetBoolForKey(False, "MiniwindowPreviewBalloons"); } else { SetBoolForKey(True, "MiniwindowPreviewBalloons"); if (i < minipreview_maximum_size) { /* * If the value is bigger, it means it was edited by the user manually * so we keep as-is. Otherwise, we round it to a multiple of 8 like it * was done for display */ i &= ~7; } SetIntegerForKey(i, "MiniPreviewSize"); } SetStringForKey(icon_animation[WMGetPopUpButtonSelectedItem(panel->animP)].db_value, "IconificationStyle"); } Panel *InitIcons(WMWidget *parent) { _Panel *panel; panel = wmalloc(sizeof(_Panel)); panel->sectionName = _("Icon Preferences"); panel->description = _("Icon/Miniwindow handling options. Icon positioning\n" "area, sizes of icons, miniaturization animation style."); panel->parent = parent; panel->callbacks.createWidgets = createPanel; panel->callbacks.updateDomain = storeData; AddSection(panel, ICON_FILE); return panel; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/WindowHandling.c������������������������������������������������������0000644�0001750�0001750�00000042512�13431646202�016040� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* WindowHandling.c- options for handling windows * * WPrefs - Window Maker Preferences Program * * Copyright (c) 1998-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "WPrefs.h" typedef struct _Panel { WMBox *box; char *sectionName; char *description; CallbackRec callbacks; WMWidget *parent; WMFrame *placF; WMPopUpButton *placP; WMLabel *porigL; WMLabel *porigvL; WMFrame *porigF; WMLabel *porigW; WMSlider *vsli; WMSlider *hsli; WMFrame *resF; WMSlider *resS; WMLabel *resL; WMButton *resaB; WMButton *resrB; WMFrame *maxiF; WMLabel *maxiL; WMButton *miconB; WMButton *mdockB; WMFrame *resizeF; WMLabel *resizeL; WMLabel *resizeTextL; WMSlider *resizeS; WMFrame *opaqF; WMButton *opaqB; WMButton *opaqresizeB; WMButton *opaqkeybB; WMFrame *dragmaxF; WMPopUpButton *dragmaxP; } _Panel; #define ICON_FILE "whandling" #define OPAQUE_MOVE_PIXMAP "opaque" #define NON_OPAQUE_MOVE_PIXMAP "nonopaque" #define OPAQUE_RESIZE_PIXMAP "opaqueresize" #define NON_OPAQUE_RESIZE_PIXMAP "noopaqueresize" #define PLACEMENT_WINDOW_PIXMAP "smallwindow" #define THUMB_SIZE 16 static const struct { const char *db_value; const char *label; } window_placements[] = { { "auto", N_("Automatic") }, { "random", N_("Random") }, { "manual", N_("Manual") }, { "cascade", N_("Cascade") }, { "smart", N_("Smart") }, { "center", N_("Center") } }; static const struct { const char *db_value; const char *label; } drag_maximized_window_options[] = { { "Move", N_("...changes its position (normal behavior)") }, { "RestoreGeometry", N_("...restores its unmaximized geometry") }, { "Unmaximize", N_("...considers the window now unmaximized") }, { "NoMove", N_("...does not move the window") } }; static void sliderCallback(WMWidget * w, void *data) { _Panel *panel = (_Panel *) data; int x, y, rx, ry; char buffer[64]; int swidth = WMGetSliderMaxValue(panel->hsli); int sheight = WMGetSliderMaxValue(panel->vsli); /* Parameter not used, but tell the compiler that it is ok */ (void) w; x = WMGetSliderValue(panel->hsli); y = WMGetSliderValue(panel->vsli); rx = x * (WMWidgetWidth(panel->porigF) - 3) / swidth + 2; ry = y * (WMWidgetHeight(panel->porigF) - 3) / sheight + 2; WMMoveWidget(panel->porigW, rx, ry); sprintf(buffer, "(%i,%i)", x, y); WMSetLabelText(panel->porigvL, buffer); } static void resistanceCallback(WMWidget * w, void *data) { _Panel *panel = (_Panel *) data; char buffer[64]; int i; /* Parameter not used, but tell the compiler that it is ok */ (void) w; i = WMGetSliderValue(panel->resS); if (i == 0) WMSetLabelText(panel->resL, _("OFF")); else { sprintf(buffer, "%i", i); WMSetLabelText(panel->resL, buffer); } } static void resizeCallback(WMWidget * w, void *data) { _Panel *panel = (_Panel *) data; char buffer[64]; int i; /* Parameter not used, but tell the compiler that it is ok */ (void) w; i = WMGetSliderValue(panel->resizeS); if (i == 0) WMSetLabelText(panel->resizeL, _("OFF")); else { sprintf(buffer, "%i", i); WMSetLabelText(panel->resizeL, buffer); } } static int getPlacement(const char *str) { int i; if (!str) return 0; for (i = 0; i < wlengthof(window_placements); i++) { if (strcasecmp(str, window_placements[i].db_value) == 0) return i; } wwarning(_("bad option value %s in WindowPlacement. Using default value"), str); return 0; } static int getDragMaximizedWindow(const char *str) { int i; if (!str) return 0; for (i = 0; i < wlengthof(drag_maximized_window_options); i++) { if (strcasecmp(str, drag_maximized_window_options[i].db_value) == 0) return i; } wwarning(_("bad option value %s in WindowPlacement. Using default value"), str); return 0; } static void showData(_Panel * panel) { char *str; WMPropList *arr; int x, y; str = GetStringForKey("WindowPlacement"); WMSetPopUpButtonSelectedItem(panel->placP, getPlacement(str)); arr = GetObjectForKey("WindowPlaceOrigin"); x = 0; y = 0; if (arr && (!WMIsPLArray(arr) || WMGetPropListItemCount(arr) != 2)) { wwarning(_("invalid data in option WindowPlaceOrigin. Using default (0,0)")); } else { if (arr) { x = atoi(WMGetFromPLString(WMGetFromPLArray(arr, 0))); y = atoi(WMGetFromPLString(WMGetFromPLArray(arr, 1))); } } WMSetSliderValue(panel->hsli, x); WMSetSliderValue(panel->vsli, y); sliderCallback(NULL, panel); x = GetIntegerForKey("EdgeResistance"); WMSetSliderValue(panel->resS, x); resistanceCallback(NULL, panel); str = GetStringForKey("DragMaximizedWindow"); WMSetPopUpButtonSelectedItem(panel->dragmaxP, getDragMaximizedWindow(str)); x = GetIntegerForKey("ResizeIncrement"); WMSetSliderValue(panel->resizeS, x); resizeCallback(NULL, panel); WMSetButtonSelected(panel->opaqB, GetBoolForKey("OpaqueMove")); WMSetButtonSelected(panel->opaqresizeB, GetBoolForKey("OpaqueResize")); WMSetButtonSelected(panel->opaqkeybB, GetBoolForKey("OpaqueMoveResizeKeyboard")); WMSetButtonSelected(panel->miconB, GetBoolForKey("NoWindowOverIcons")); WMSetButtonSelected(panel->mdockB, GetBoolForKey("NoWindowOverDock")); if (GetBoolForKey("Attraction")) WMPerformButtonClick(panel->resrB); else WMPerformButtonClick(panel->resaB); } static void storeData(_Panel * panel) { WMPropList *arr; WMPropList *x, *y; char buf[16]; SetBoolForKey(WMGetButtonSelected(panel->miconB), "NoWindowOverIcons"); SetBoolForKey(WMGetButtonSelected(panel->mdockB), "NoWindowOverDock"); SetBoolForKey(WMGetButtonSelected(panel->opaqB), "OpaqueMove"); SetBoolForKey(WMGetButtonSelected(panel->opaqresizeB), "OpaqueResize"); SetBoolForKey(WMGetButtonSelected(panel->opaqkeybB), "OpaqueMoveResizeKeyboard"); SetStringForKey(window_placements[WMGetPopUpButtonSelectedItem(panel->placP)].db_value, "WindowPlacement"); sprintf(buf, "%i", WMGetSliderValue(panel->hsli)); x = WMCreatePLString(buf); sprintf(buf, "%i", WMGetSliderValue(panel->vsli)); y = WMCreatePLString(buf); arr = WMCreatePLArray(x, y, NULL); WMReleasePropList(x); WMReleasePropList(y); SetObjectForKey(arr, "WindowPlaceOrigin"); SetIntegerForKey(WMGetSliderValue(panel->resS), "EdgeResistance"); SetStringForKey(drag_maximized_window_options[WMGetPopUpButtonSelectedItem(panel->dragmaxP)].db_value, "DragMaximizedWindow"); SetIntegerForKey(WMGetSliderValue(panel->resizeS), "ResizeIncrement"); SetBoolForKey(WMGetButtonSelected(panel->resrB), "Attraction"); WMReleasePropList(arr); } static void createPanel(Panel * p) { _Panel *panel = (Panel *) p; WMScreen *scr = WMWidgetScreen(panel->parent); WMColor *color; WMPixmap *pixmap; int width, height; int swidth, sheight; char *path; WMBox *hbox; int i; panel->box = WMCreateBox(panel->parent); WMSetViewExpandsToParent(WMWidgetView(panel->box), 2, 2, 2, 2); WMSetBoxHorizontal(panel->box, False); WMSetBoxBorderWidth(panel->box, 8); hbox = WMCreateBox(panel->box); WMSetBoxHorizontal(hbox, True); WMAddBoxSubview(panel->box, WMWidgetView(hbox), False, True, 110, 0, 10); /************** Window Placement ***************/ panel->placF = WMCreateFrame(panel->box); WMResizeWidget(panel->placF, 222, 163); WMMoveWidget(panel->placF, 8, 6); WMSetFrameTitle(panel->placF, _("Window Placement")); WMSetBalloonTextForView(_("How to place windows when they are first put\n" "on screen."), WMWidgetView(panel->placF)); panel->placP = WMCreatePopUpButton(panel->placF); WMResizeWidget(panel->placP, 90, 20); WMMoveWidget(panel->placP, 9, 19); for (i = 0; i < wlengthof(window_placements); i++) WMAddPopUpButtonItem(panel->placP, _(window_placements[i].label)); panel->porigL = WMCreateLabel(panel->placF); WMResizeWidget(panel->porigL, 50, 20); WMMoveWidget(panel->porigL, 100, 19); WMSetLabelTextAlignment(panel->porigL, WARight); WMSetLabelText(panel->porigL, _("Origin:")); panel->porigvL = WMCreateLabel(panel->placF); WMResizeWidget(panel->porigvL, 69, 20); WMMoveWidget(panel->porigvL, 150, 19); WMSetLabelTextAlignment(panel->porigvL, WACenter); color = WMCreateRGBColor(scr, 0x5100, 0x5100, 0x7100, True); panel->porigF = WMCreateFrame(panel->placF); WMSetWidgetBackgroundColor(panel->porigF, color); WMReleaseColor(color); WMSetFrameRelief(panel->porigF, WRSunken); /* * There is an available area of 204 x 109, starting at x=9 y=45 * We have to keep 12 pixels in each direction for the sliders, * and an extra pixel for spacing. * In this area, we want to have a rectangle with the same aspect * ratio as the screen. */ swidth = WidthOfScreen(DefaultScreenOfDisplay(WMScreenDisplay(scr))); sheight = HeightOfScreen(DefaultScreenOfDisplay(WMScreenDisplay(scr))); width = swidth * (109 - 13) / sheight; if (width <= (204 - 13)) { height = 109 - 13; } else { width = 204 - 13; height = sheight * (204 - 13) / swidth; } WMResizeWidget(panel->porigF, width, height); WMMoveWidget(panel->porigF, 9 + (204 - 13 - width) / 2, 45 + (109 - 13 - height) / 2); panel->porigW = WMCreateLabel(panel->porigF); WMMoveWidget(panel->porigW, 2, 2); path = LocateImage(PLACEMENT_WINDOW_PIXMAP); if (path) { pixmap = WMCreatePixmapFromFile(scr, path); if (pixmap) { WMSize size; WMSetLabelImagePosition(panel->porigW, WIPImageOnly); size = WMGetPixmapSize(pixmap); WMSetLabelImage(panel->porigW, pixmap); WMResizeWidget(panel->porigW, size.width, size.height); WMReleasePixmap(pixmap); } else { wwarning(_("could not load icon %s"), path); } wfree(path); if (!pixmap) goto use_old_window_representation; } else { use_old_window_representation: WMResizeWidget(panel->porigW, THUMB_SIZE, THUMB_SIZE); WMSetLabelRelief(panel->porigW, WRRaised); } panel->hsli = WMCreateSlider(panel->placF); WMResizeWidget(panel->hsli, width, 12); WMMoveWidget(panel->hsli, 9 + (204 - 13 - width) / 2, 45 + (109 - 13 - height) / 2 + height + 1); 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, 9 + (204 - 13 - width) / 2 + width + 1, 45 + (109 - 13 - height) / 2); WMSetSliderAction(panel->vsli, sliderCallback, panel); WMSetSliderMinValue(panel->vsli, 0); WMSetSliderMaxValue(panel->vsli, sheight); WMMapSubwidgets(panel->porigF); WMMapSubwidgets(panel->placF); /************** Opaque Move, Resize ***************/ panel->opaqF = WMCreateFrame(panel->box); WMResizeWidget(panel->opaqF, 140, 118); WMMoveWidget(panel->opaqF, 372, 103); WMSetFrameTitle(panel->opaqF, _("Opaque Move/Resize")); WMSetBalloonTextForView(_("Whether the window contents or only a frame should\n" "be displayed during a move or resize.\n"), WMWidgetView(panel->opaqF)); panel->opaqB = WMCreateButton(panel->opaqF, WBTToggle); WMResizeWidget(panel->opaqB, 54, 54); WMMoveWidget(panel->opaqB, 11, 22); WMSetButtonImagePosition(panel->opaqB, WIPImageOnly); path = LocateImage(NON_OPAQUE_MOVE_PIXMAP); if (path) { pixmap = WMCreatePixmapFromFile(scr, path); if (pixmap) { WMSetButtonImage(panel->opaqB, pixmap); WMReleasePixmap(pixmap); } else { wwarning(_("could not load icon %s"), path); } wfree(path); } path = LocateImage(OPAQUE_MOVE_PIXMAP); if (path) { pixmap = WMCreatePixmapFromFile(scr, path); if (pixmap) { WMSetButtonAltImage(panel->opaqB, pixmap); WMReleasePixmap(pixmap); } else { wwarning(_("could not load icon %s"), path); } wfree(path); } panel->opaqresizeB = WMCreateButton(panel->opaqF, WBTToggle); WMResizeWidget(panel->opaqresizeB, 54, 54); WMMoveWidget(panel->opaqresizeB, 75, 22); WMSetButtonImagePosition(panel->opaqresizeB, WIPImageOnly); path = LocateImage(NON_OPAQUE_RESIZE_PIXMAP); if (path) { pixmap = WMCreatePixmapFromFile(scr, path); if (pixmap) { WMSetButtonImage(panel->opaqresizeB, pixmap); WMReleasePixmap(pixmap); } else { wwarning(_("could not load icon %s"), path); } wfree(path); } path = LocateImage(OPAQUE_RESIZE_PIXMAP); if (path) { pixmap = WMCreatePixmapFromFile(scr, path); if (pixmap) { WMSetButtonAltImage(panel->opaqresizeB, pixmap); WMReleasePixmap(pixmap); } else { wwarning(_("could not load icon %s"), path); } wfree(path); } panel->opaqkeybB = WMCreateSwitchButton(panel->opaqF); WMResizeWidget(panel->opaqkeybB, 122, 25); WMMoveWidget(panel->opaqkeybB, 11, 85); WMSetButtonText(panel->opaqkeybB, _("by keyboard")); WMSetBalloonTextForView(_("When selected, moving or resizing windows\n" "using keyboard shortcuts will also display its\n" "content instead of just a frame."), WMWidgetView(panel->opaqkeybB)); WMMapSubwidgets(panel->opaqF); /**************** Account for Icon/Dock ***************/ panel->maxiF = WMCreateFrame(panel->box); WMResizeWidget(panel->maxiF, 140, 92); WMMoveWidget(panel->maxiF, 372, 6); WMSetFrameTitle(panel->maxiF, _("When maximizing...")); panel->maxiL = WMCreateLabel(panel->maxiF); WMSetLabelText(panel->maxiL, _("...do not cover:")); WMResizeWidget(panel->maxiL, 120, 20); WMMoveWidget(panel->maxiL, 10, 16); panel->miconB = WMCreateSwitchButton(panel->maxiF); WMResizeWidget(panel->miconB, 120, 25); WMMoveWidget(panel->miconB, 10, 36); WMSetButtonText(panel->miconB, _("Icons")); panel->mdockB = WMCreateSwitchButton(panel->maxiF); WMResizeWidget(panel->mdockB, 120, 25); WMMoveWidget(panel->mdockB, 10, 61); WMSetButtonText(panel->mdockB, _("The dock")); WMMapSubwidgets(panel->maxiF); /**************** Resize with Mod+Wheel ***************/ panel->resizeF = WMCreateFrame(panel->box); WMResizeWidget(panel->resizeF, 127, 66); WMMoveWidget(panel->resizeF, 238, 103); WMSetFrameTitle(panel->resizeF, _("Mod+Wheel")); panel->resizeTextL = WMCreateLabel(panel->resizeF); WMSetLabelText(panel->resizeTextL, _("Resize increment:")); WMResizeWidget(panel->resizeTextL, 118, 20); WMMoveWidget(panel->resizeTextL, 5, 16); panel->resizeS = WMCreateSlider(panel->resizeF); WMResizeWidget(panel->resizeS, 80, 15); WMMoveWidget(panel->resizeS, 9, 40); WMSetSliderMinValue(panel->resizeS, 0); WMSetSliderMaxValue(panel->resizeS, 100); WMSetSliderAction(panel->resizeS, resizeCallback, panel); panel->resizeL = WMCreateLabel(panel->resizeF); WMResizeWidget(panel->resizeL, 30, 15); WMMoveWidget(panel->resizeL, 90, 40); WMMapSubwidgets(panel->resizeF); /**************** Edge Resistance ****************/ panel->resF = WMCreateFrame(panel->box); WMResizeWidget(panel->resF, 127, 92); WMMoveWidget(panel->resF, 238, 6); WMSetFrameTitle(panel->resF, _("Edge Resistance")); WMSetBalloonTextForView(_("Edge resistance will make windows `resist'\n" "being moved further for the defined threshold\n" "when moved against other windows or the edges\n" "of the screen."), WMWidgetView(panel->resF)); panel->resS = WMCreateSlider(panel->resF); WMResizeWidget(panel->resS, 80, 15); WMMoveWidget(panel->resS, 9, 20); WMSetSliderMinValue(panel->resS, 0); WMSetSliderMaxValue(panel->resS, 80); WMSetSliderAction(panel->resS, resistanceCallback, panel); panel->resL = WMCreateLabel(panel->resF); WMResizeWidget(panel->resL, 30, 15); WMMoveWidget(panel->resL, 90, 22); panel->resaB = WMCreateRadioButton(panel->resF); WMMoveWidget(panel->resaB, 9, 39); WMResizeWidget(panel->resaB, 107, 23); WMSetButtonText(panel->resaB, _("Resist")); panel->resrB = WMCreateRadioButton(panel->resF); WMMoveWidget(panel->resrB, 9, 62); WMResizeWidget(panel->resrB, 107, 23); WMSetButtonText(panel->resrB, _("Attract")); WMGroupButtons(panel->resrB, panel->resaB); WMMapSubwidgets(panel->resF); /**************** Dragging a Maximized Window ****************/ panel->dragmaxF = WMCreateFrame(panel->box); WMResizeWidget(panel->dragmaxF, 357, 49); WMMoveWidget(panel->dragmaxF, 8, 172); WMSetFrameTitle(panel->dragmaxF, _("Dragging a maximized window...")); panel->dragmaxP = WMCreatePopUpButton(panel->dragmaxF); WMResizeWidget(panel->dragmaxP, 328, 20); WMMoveWidget(panel->dragmaxP, 15, 18); for (i = 0; i < wlengthof(drag_maximized_window_options); i++) WMAddPopUpButtonItem(panel->dragmaxP, _(drag_maximized_window_options[i].label)); WMMapSubwidgets(panel->dragmaxF); WMRealizeWidget(panel->box); WMMapSubwidgets(panel->box); /* show the config data */ showData(panel); } static void undo(_Panel * panel) { showData(panel); } Panel *InitWindowHandling(WMWidget *parent) { _Panel *panel; panel = wmalloc(sizeof(_Panel)); panel->sectionName = _("Window Handling Preferences"); panel->description = _("Window handling options. Initial placement style\n" "edge resistance, opaque move etc."); panel->parent = parent; panel->callbacks.createWidgets = createPanel; panel->callbacks.updateDomain = storeData; panel->callbacks.undoChanges = undo; AddSection(panel, ICON_FILE); return panel; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/WPrefs.c��������������������������������������������������������������0000644�0001750�0001750�00000052577�13642357773�014366� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* WPrefs.c- main window and other basic stuff * * WPrefs - Window Maker Preferences Program * * Copyright (c) 1998-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "config.h" #include "WPrefs.h" #include <assert.h> #ifdef HAVE_STDNORETURN #include <stdnoreturn.h> #endif #define MAX_SECTIONS 16 typedef struct _WPrefs { WMWindow *win; WMScrollView *scrollV; WMFrame *buttonF; WMButton *sectionB[MAX_SECTIONS]; int sectionCount; WMButton *saveBtn; WMButton *closeBtn; WMButton *undoBtn; WMButton *undosBtn; WMButton *balloonBtn; WMFrame *banner; WMLabel *nameL; WMLabel *versionL; WMLabel *statusL; Panel *currentPanel; } _WPrefs; static _WPrefs WPrefs; /* system wide defaults dictionary. Read-only */ static WMPropList *GlobalDB = NULL; /* user defaults dictionary */ static WMPropList *WindowMakerDB = NULL; static char *WindowMakerDBPath = NULL; static Bool TIFFOK = False; #define INITIALIZED_PANEL (1<<0) static void loadConfigurations(WMScreen * scr, WMWindow * mainw); static void savePanelData(Panel * panel); static void prepareForClose(void); static noreturn void quit(WMWidget *w, void *data) { /* Parameter not used, but tell the compiler that it is ok */ (void) w; (void) data; prepareForClose(); WMReleaseApplication(); exit(0); } static void save(WMWidget * w, void *data) { int i; WMPropList *p1, *p2; WMPropList *keyList; WMPropList *key; XEvent ev; /* Parameter not used, but tell the compiler that it is ok */ (void) data; /* puts("gathering data"); */ for (i = 0; i < WPrefs.sectionCount; i++) { PanelRec *rec = WMGetHangedData(WPrefs.sectionB[i]); if ((rec->callbacks.flags & INITIALIZED_PANEL)) savePanelData((Panel *) rec); } /* puts("compressing data"); */ /* compare the user dictionary with the global and remove redundant data */ keyList = WMGetPLDictionaryKeys(GlobalDB); /* puts(WMGetPropListDescription(WindowMakerDB, False)); */ for (i = 0; i < WMGetPropListItemCount(keyList); i++) { key = WMGetFromPLArray(keyList, i); /* We don't have this value anyway, so no problem. * Probably a new option */ p1 = WMGetFromPLDictionary(WindowMakerDB, key); if (!p1) continue; /* The global doesn't have it, so no problem either. */ p2 = WMGetFromPLDictionary(GlobalDB, key); if (!p2) continue; /* If both values are the same, don't save. */ if (WMIsPropListEqualTo(p1, p2)) WMRemoveFromPLDictionary(WindowMakerDB, key); } /* puts(WMGetPropListDescription(WindowMakerDB, False)); */ WMReleasePropList(keyList); /* puts("storing data"); */ WMWritePropListToFile(WindowMakerDB, WindowMakerDBPath); memset(&ev, 0, sizeof(XEvent)); ev.xclient.type = ClientMessage; ev.xclient.message_type = XInternAtom(WMScreenDisplay(WMWidgetScreen(w)), "_WINDOWMAKER_COMMAND", False); ev.xclient.window = DefaultRootWindow(WMScreenDisplay(WMWidgetScreen(w))); ev.xclient.format = 8; strncpy(ev.xclient.data.b, "Reconfigure", sizeof(ev.xclient.data.b)); XSendEvent(WMScreenDisplay(WMWidgetScreen(w)), DefaultRootWindow(WMScreenDisplay(WMWidgetScreen(w))), False, SubstructureRedirectMask, &ev); XFlush(WMScreenDisplay(WMWidgetScreen(w))); } static void undo(WMWidget * w, void *data) { PanelRec *rec = (PanelRec *) WPrefs.currentPanel; /* Parameter not used, but tell the compiler that it is ok */ (void) w; (void) data; if (!rec) return; if (rec->callbacks.undoChanges && (rec->callbacks.flags & INITIALIZED_PANEL)) { (*rec->callbacks.undoChanges) (WPrefs.currentPanel); } } static void undoAll(WMWidget * w, void *data) { int i; /* Parameter not used, but tell the compiler that it is ok */ (void) w; (void) data; for (i = 0; i < WPrefs.sectionCount; i++) { PanelRec *rec = WMGetHangedData(WPrefs.sectionB[i]); if (rec->callbacks.undoChanges && (rec->callbacks.flags & INITIALIZED_PANEL)) (*rec->callbacks.undoChanges) ((Panel *) rec); } } static void prepareForClose(void) { int i; for (i = 0; i < WPrefs.sectionCount; i++) { PanelRec *rec = WMGetHangedData(WPrefs.sectionB[i]); if (rec->callbacks.prepareForClose && (rec->callbacks.flags & INITIALIZED_PANEL)) (*rec->callbacks.prepareForClose) ((Panel *) rec); } } static void toggleBalloons(WMWidget *w, void *data) { WMUserDefaults *udb = WMGetStandardUserDefaults(); Bool flag; /* Parameter not used, but tell the compiler that it is ok */ (void) w; (void) data; flag = WMGetButtonSelected(WPrefs.balloonBtn); WMSetBalloonEnabled(WMWidgetScreen(WPrefs.win), flag); WMSetUDBoolForKey(udb, flag, "BalloonHelp"); } static void createMainWindow(WMScreen * scr) { WMScroller *scroller; WMFont *font; char buffer[128]; WPrefs.win = WMCreateWindow(scr, "wprefs"); WMResizeWidget(WPrefs.win, 520, 390); WMSetWindowTitle(WPrefs.win, _("Window Maker Preferences")); WMSetWindowCloseAction(WPrefs.win, quit, NULL); WMSetWindowMaxSize(WPrefs.win, 520, 390); WMSetWindowMinSize(WPrefs.win, 520, 390); WMSetWindowMiniwindowTitle(WPrefs.win, _("Preferences")); WPrefs.scrollV = WMCreateScrollView(WPrefs.win); WMResizeWidget(WPrefs.scrollV, 500, 87); WMMoveWidget(WPrefs.scrollV, 10, 10); WMSetScrollViewRelief(WPrefs.scrollV, WRSunken); WMSetScrollViewHasHorizontalScroller(WPrefs.scrollV, True); WMSetScrollViewHasVerticalScroller(WPrefs.scrollV, False); scroller = WMGetScrollViewHorizontalScroller(WPrefs.scrollV); WMSetScrollerArrowsPosition(scroller, WSANone); WPrefs.buttonF = WMCreateFrame(WPrefs.win); WMSetFrameRelief(WPrefs.buttonF, WRFlat); WMSetScrollViewContentView(WPrefs.scrollV, WMWidgetView(WPrefs.buttonF)); WPrefs.undosBtn = WMCreateCommandButton(WPrefs.win); WMResizeWidget(WPrefs.undosBtn, 90, 28); WMMoveWidget(WPrefs.undosBtn, 135, 350); WMSetButtonText(WPrefs.undosBtn, _("Revert Page")); WMSetButtonAction(WPrefs.undosBtn, undo, NULL); WPrefs.undoBtn = WMCreateCommandButton(WPrefs.win); WMResizeWidget(WPrefs.undoBtn, 90, 28); WMMoveWidget(WPrefs.undoBtn, 235, 350); WMSetButtonText(WPrefs.undoBtn, _("Revert All")); WMSetButtonAction(WPrefs.undoBtn, undoAll, NULL); WPrefs.saveBtn = WMCreateCommandButton(WPrefs.win); WMResizeWidget(WPrefs.saveBtn, 80, 28); WMMoveWidget(WPrefs.saveBtn, 335, 350); WMSetButtonText(WPrefs.saveBtn, _("Save")); WMSetButtonAction(WPrefs.saveBtn, save, NULL); WPrefs.closeBtn = WMCreateCommandButton(WPrefs.win); WMResizeWidget(WPrefs.closeBtn, 80, 28); WMMoveWidget(WPrefs.closeBtn, 425, 350); WMSetButtonText(WPrefs.closeBtn, _("Close")); WMSetButtonAction(WPrefs.closeBtn, quit, NULL); WPrefs.balloonBtn = WMCreateSwitchButton(WPrefs.win); WMResizeWidget(WPrefs.balloonBtn, 200, 28); WMMoveWidget(WPrefs.balloonBtn, 15, 350); WMSetButtonText(WPrefs.balloonBtn, _("Balloon Help")); WMSetButtonAction(WPrefs.balloonBtn, toggleBalloons, NULL); { WMUserDefaults *udb = WMGetStandardUserDefaults(); Bool flag = WMGetUDBoolForKey(udb, "BalloonHelp"); WMSetButtonSelected(WPrefs.balloonBtn, flag); WMSetBalloonEnabled(scr, flag); } /* banner */ WPrefs.banner = WMCreateFrame(WPrefs.win); WMResizeWidget(WPrefs.banner, FRAME_WIDTH, FRAME_HEIGHT); WMMoveWidget(WPrefs.banner, FRAME_LEFT, FRAME_TOP); WMSetFrameRelief(WPrefs.banner, WRFlat); font = WMCreateFont(scr, "Lucida Sans,URW Gothic L,Times New Roman,serif" ":bold:pixelsize=26:antialias=true"); WPrefs.nameL = WMCreateLabel(WPrefs.banner); WMSetLabelTextAlignment(WPrefs.nameL, WACenter); WMResizeWidget(WPrefs.nameL, FRAME_WIDTH - 20, 60); WMMoveWidget(WPrefs.nameL, 10, 50); WMSetLabelFont(WPrefs.nameL, font); WMSetLabelText(WPrefs.nameL, _("Window Maker Preferences")); WMReleaseFont(font); WPrefs.versionL = WMCreateLabel(WPrefs.banner); WMResizeWidget(WPrefs.versionL, FRAME_WIDTH - 20, 20); WMMoveWidget(WPrefs.versionL, 10, 120); WMSetLabelTextAlignment(WPrefs.versionL, WACenter); sprintf(buffer, _("Version %s"), VERSION); WMSetLabelText(WPrefs.versionL, buffer); WPrefs.statusL = WMCreateLabel(WPrefs.banner); WMResizeWidget(WPrefs.statusL, FRAME_WIDTH - 20, 60); WMMoveWidget(WPrefs.statusL, 10, 150); WMSetLabelTextAlignment(WPrefs.statusL, WACenter); WMSetLabelText(WPrefs.statusL, _("Starting...")); WMMapSubwidgets(WPrefs.win); WMUnmapWidget(WPrefs.undosBtn); WMUnmapWidget(WPrefs.undoBtn); WMUnmapWidget(WPrefs.saveBtn); } static void showPanel(Panel * panel) { PanelRec *rec = (PanelRec *) panel; if (!(rec->callbacks.flags & INITIALIZED_PANEL)) { (*rec->callbacks.createWidgets) (panel); rec->callbacks.flags |= INITIALIZED_PANEL; } WMSetWindowTitle(WPrefs.win, rec->sectionName); if (rec->callbacks.showPanel) (*rec->callbacks.showPanel) (panel); WMMapWidget(rec->box); } static void hidePanel(Panel * panel) { PanelRec *rec = (PanelRec *) panel; WMUnmapWidget(rec->box); if (rec->callbacks.hidePanel) (*rec->callbacks.hidePanel) (panel); } static void savePanelData(Panel * panel) { PanelRec *rec = (PanelRec *) panel; if (rec->callbacks.updateDomain) { (*rec->callbacks.updateDomain) (panel); } } static void changeSection(WMWidget * self, void *data) { /* Parameter not used, but tell the compiler that it is ok */ (void) self; if (WPrefs.currentPanel == data) return; if (WPrefs.currentPanel == NULL) { WMDestroyWidget(WPrefs.nameL); WMDestroyWidget(WPrefs.versionL); WMDestroyWidget(WPrefs.statusL); WMSetFrameRelief(WPrefs.banner, WRGroove); /* WMMapWidget(WPrefs.undosBtn); WMMapWidget(WPrefs.undoBtn); */ WMMapWidget(WPrefs.saveBtn); } showPanel(data); if (WPrefs.currentPanel) hidePanel(WPrefs.currentPanel); WPrefs.currentPanel = data; } char *LocateImage(const char *name) { char *path; char *tmp = wmalloc(strlen(name) + 8); if (TIFFOK) { sprintf(tmp, "%s.tiff", name); path = WMPathForResourceOfType(tmp, "tiff"); } else { sprintf(tmp, "%s.xpm", name); path = WMPathForResourceOfType(tmp, "xpm"); } wfree(tmp); if (!path) { wwarning(_("could not locate image file %s"), name); } return path; } void CreateImages(WMScreen *scr, RContext *rc, RImage *xis, const char *file, WMPixmap **icon_normal, WMPixmap **icon_greyed) { RImage *icon; char *path; RColor gray = { 0xae, 0xaa, 0xae, 0 }; path = LocateImage(file); if (!path) { *icon_normal = NULL; if (icon_greyed) *icon_greyed = NULL; return; } *icon_normal = WMCreatePixmapFromFile(scr, path); if (!*icon_normal) { wwarning(_("could not load icon %s"), path); if (icon_greyed) *icon_greyed = NULL; wfree(path); return; } if (!icon_greyed) // Greyed-out version not requested, we are done { wfree(path); return; } icon = RLoadImage(rc, path, 0); if (!icon) { wwarning(_("could not load icon %s"), path); *icon_greyed = NULL; wfree(path); return; } RCombineImageWithColor(icon, &gray); if (xis) { RCombineImagesWithOpaqueness(icon, xis, 180); } *icon_greyed = WMCreatePixmapFromRImage(scr, icon, 127); if (!*icon_greyed) { wwarning(_("could not process icon %s: %s"), path, RMessageForError(RErrorCode)); } RReleaseImage(icon); wfree(path); } void SetButtonAlphaImage(WMScreen *scr, WMButton *bPtr, const char *file) { WMPixmap *icon; RColor color; char *iconPath; iconPath = LocateImage(file); color.red = 0xae; color.green = 0xaa; color.blue = 0xae; color.alpha = 0; if (iconPath) { icon = WMCreateBlendedPixmapFromFile(scr, iconPath, &color); if (!icon) wwarning(_("could not load icon file %s"), iconPath); } else { icon = NULL; } WMSetButtonImage(bPtr, icon); color.red = 0xff; color.green = 0xff; color.blue = 0xff; color.alpha = 0; if (iconPath) { icon = WMCreateBlendedPixmapFromFile(scr, iconPath, &color); if (!icon) wwarning(_("could not load icon file %s"), iconPath); } else { icon = NULL; } WMSetButtonAltImage(bPtr, icon); if (icon) WMReleasePixmap(icon); if (iconPath) wfree(iconPath); } void AddSection(Panel * panel, const char *iconFile) { WMButton *bPtr; assert(WPrefs.sectionCount < MAX_SECTIONS); bPtr = WMCreateCustomButton(WPrefs.buttonF, WBBStateLightMask | WBBStateChangeMask); WMResizeWidget(bPtr, 64, 64); WMMoveWidget(bPtr, WPrefs.sectionCount * 64, 0); WMSetButtonImagePosition(bPtr, WIPImageOnly); WMSetButtonAction(bPtr, changeSection, panel); WMHangData(bPtr, panel); WMSetBalloonTextForView(((PanelRec *) panel)->description, WMWidgetView(bPtr)); SetButtonAlphaImage(WMWidgetScreen(bPtr), bPtr, iconFile); WMMapWidget(bPtr); WPrefs.sectionB[WPrefs.sectionCount] = bPtr; if (WPrefs.sectionCount > 0) WMGroupButtons(WPrefs.sectionB[0], bPtr); WPrefs.sectionCount++; WMResizeWidget(WPrefs.buttonF, WPrefs.sectionCount * 64, 64); } void Initialize(WMScreen * scr) { char **list; int i; char *path; list = RSupportedFileFormats(); for (i = 0; list[i] != NULL; i++) { if (strcmp(list[i], "TIFF") == 0) { TIFFOK = True; break; } } if (TIFFOK) path = WMPathForResourceOfType("WPrefs.tiff", NULL); else path = WMPathForResourceOfType("WPrefs.xpm", NULL); if (path) { RImage *tmp; tmp = RLoadImage(WMScreenRContext(scr), path, 0); if (!tmp) { wwarning(_("could not load image file %s:%s"), path, RMessageForError(RErrorCode)); } else { WMSetApplicationIconImage(scr, tmp); RReleaseImage(tmp); } wfree(path); } memset(&WPrefs, 0, sizeof(_WPrefs)); createMainWindow(scr); WMRealizeWidget(WPrefs.win); WMSetWindowMiniwindowImage(WPrefs.win, WMGetApplicationIconImage(scr)); WMMapWidget(WPrefs.win); XFlush(WMScreenDisplay(scr)); WMSetLabelText(WPrefs.statusL, _("Loading Window Maker configuration files...")); XFlush(WMScreenDisplay(scr)); loadConfigurations(scr, WPrefs.win); WMSetLabelText(WPrefs.statusL, _("Initializing configuration panels...")); InitFocus(WPrefs.banner); InitWindowHandling(WPrefs.banner); InitMenuPreferences(WPrefs.banner); InitIcons(WPrefs.banner); InitPreferences(WPrefs.banner); InitPaths(WPrefs.banner); InitDocks(WPrefs.banner); InitWorkspace(WPrefs.banner); InitConfigurations(WPrefs.banner); InitMenu(WPrefs.banner); #ifdef not_yet_fully_implemented InitKeyboardSettings(WPrefs.banner); #endif InitKeyboardShortcuts(WPrefs.banner); InitMouseSettings(WPrefs.banner); InitAppearance(WPrefs.banner); InitFontSimple(WPrefs.banner); #ifdef not_yet_fully_implemented InitThemes(WPrefs.banner); #endif InitExpert(WPrefs.banner); WMRealizeWidget(WPrefs.scrollV); WMSetLabelText(WPrefs.statusL, ""); } WMWindow *GetWindow(void) { return WPrefs.win; } static void loadConfigurations(WMScreen * scr, WMWindow * mainw) { WMPropList *db, *gdb; char *path; FILE *file; char buffer[1024]; char mbuf[1069]; /* Size of buffer and extra characters for the sprintfs */ int v1, v2, v3; path = wdefaultspathfordomain("WindowMaker"); WindowMakerDBPath = path; db = WMReadPropListFromFile(path); if (db) { if (!WMIsPLDictionary(db)) { WMReleasePropList(db); db = NULL; sprintf(mbuf, _("Window Maker domain (%s) is corrupted!"), path); WMRunAlertPanel(scr, mainw, _("Error"), mbuf, _("OK"), NULL, NULL); } } else { sprintf(mbuf, _("Could not load Window Maker domain (%s) from defaults database."), path); WMRunAlertPanel(scr, mainw, _("Error"), mbuf, _("OK"), NULL, NULL); } path = getenv("WMAKER_BIN_NAME"); if (!path) path = "wmaker"; { char *command; command = wstrconcat(path, " --version"); file = popen(command, "r"); wfree(command); } if (!file || !fgets(buffer, 1023, file)) { werror(_("could not extract version information from Window Maker")); wfatal(_("Make sure wmaker is in your search path.")); WMRunAlertPanel(scr, mainw, _("Error"), _ ("Could not extract version from Window Maker. Make sure it is correctly installed and is in your PATH environment variable."), _("OK"), NULL, NULL); exit(1); } if (file) pclose(file); 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 and the path " "where it installed is in the PATH environment " "variable."), _("OK"), NULL, NULL); exit(1); } if (v1 == 0 && (v2 < 18 || v3 < 0)) { sprintf(mbuf, _("WPrefs only supports Window Maker 0.18.0 or newer.\n" "The version installed is %i.%i.%i\n"), v1, v2, v3); WMRunAlertPanel(scr, mainw, _("Error"), mbuf, _("OK"), NULL, NULL); exit(1); } if (v1 > 1 || (v1 == 1 && (v2 > 0))) { sprintf(mbuf, _ ("Window Maker %i.%i.%i, which is installed in your system, is not fully supported by this version of WPrefs."), v1, v2, v3); WMRunAlertPanel(scr, mainw, _("Warning"), mbuf, _("OK"), NULL, NULL); } { char *command; command = wstrconcat(path, " --global_defaults_path"); file = popen(command, "r"); wfree(command); } if (!file || !fgets(buffer, 1023, file)) { werror(_("could not run \"%s --global_defaults_path\"."), path); exit(1); } else { char *ptr; ptr = strchr(buffer, '\n'); if (ptr) *ptr = 0; strcat(buffer, "/WindowMaker"); } if (file) pclose(file); gdb = WMReadPropListFromFile(buffer); if (gdb) { if (!WMIsPLDictionary(gdb)) { WMReleasePropList(gdb); gdb = NULL; sprintf(mbuf, _("Window Maker domain (%s) is corrupted!"), buffer); WMRunAlertPanel(scr, mainw, _("Error"), mbuf, _("OK"), NULL, NULL); } } else { sprintf(mbuf, _("Could not load global Window Maker domain (%s)."), buffer); WMRunAlertPanel(scr, mainw, _("Error"), mbuf, _("OK"), NULL, NULL); } if (!db) { db = WMCreatePLDictionary(NULL, NULL); } if (!gdb) { gdb = WMCreatePLDictionary(NULL, NULL); } GlobalDB = gdb; WindowMakerDB = db; } WMPropList *GetObjectForKey(const char *defaultName) { WMPropList *object = NULL; WMPropList *key = WMCreatePLString(defaultName); object = WMGetFromPLDictionary(WindowMakerDB, key); if (!object) object = WMGetFromPLDictionary(GlobalDB, key); WMReleasePropList(key); return object; } void SetObjectForKey(WMPropList * object, const char *defaultName) { WMPropList *key = WMCreatePLString(defaultName); WMPutInPLDictionary(WindowMakerDB, key, object); WMReleasePropList(key); } void RemoveObjectForKey(const char *defaultName) { WMPropList *key = WMCreatePLString(defaultName); WMRemoveFromPLDictionary(WindowMakerDB, key); WMReleasePropList(key); } char *GetStringForKey(const char *defaultName) { WMPropList *val; val = GetObjectForKey(defaultName); if (!val) return NULL; if (!WMIsPLString(val)) return NULL; return WMGetFromPLString(val); } WMPropList *GetArrayForKey(const char *defaultName) { WMPropList *val; val = GetObjectForKey(defaultName); if (!val) return NULL; if (!WMIsPLArray(val)) return NULL; return val; } WMPropList *GetDictionaryForKey(const char *defaultName) { WMPropList *val; val = GetObjectForKey(defaultName); if (!val) return NULL; if (!WMIsPLDictionary(val)) return NULL; return val; } int GetIntegerForKey(const char *defaultName) { WMPropList *val; char *str; int value; val = GetObjectForKey(defaultName); if (!val) return 0; if (!WMIsPLString(val)) return 0; str = WMGetFromPLString(val); if (!str) return 0; if (sscanf(str, "%i", &value) != 1) return 0; return value; } Bool GetBoolForKey(const char *defaultName) { int value; char *str; str = GetStringForKey(defaultName); if (!str) return False; if (sscanf(str, "%i", &value) == 1 && value != 0) return True; if (strcasecmp(str, "YES") == 0) return True; if (strcasecmp(str, "Y") == 0) return True; return False; } void SetIntegerForKey(int value, const char *defaultName) { WMPropList *object; char buffer[128]; sprintf(buffer, "%i", value); object = WMCreatePLString(buffer); SetObjectForKey(object, defaultName); WMReleasePropList(object); } void SetStringForKey(const char *value, const char *defaultName) { WMPropList *object; object = WMCreatePLString(value); SetObjectForKey(object, defaultName); WMReleasePropList(object); } void SetBoolForKey(Bool value, const char *defaultName) { static WMPropList *yes = NULL, *no = NULL; if (!yes) { yes = WMCreatePLString("YES"); no = WMCreatePLString("NO"); } SetObjectForKey(value ? yes : no, defaultName); } void SetSpeedForKey(int speed, const char *defaultName) { char *str; switch (speed) { case 0: str = "ultraslow"; break; case 1: str = "slow"; break; case 2: str = "medium"; break; case 3: str = "fast"; break; case 4: str = "ultrafast"; break; default: str = NULL; } if (str) SetStringForKey(str, defaultName); } int GetSpeedForKey(const char *defaultName) { char *str; int i; str = GetStringForKey(defaultName); if (!str) return 2; if (strcasecmp(str, "ultraslow") == 0) i = 0; else if (strcasecmp(str, "slow") == 0) i = 1; else if (strcasecmp(str, "medium") == 0) i = 2; else if (strcasecmp(str, "fast") == 0) i = 3; else if (strcasecmp(str, "ultrafast") == 0) i = 4; else { wwarning(_("bad speed value for option %s; using default Medium"), defaultName); i = 2; } return i; } ���������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/WPrefs.app/main.c����������������������������������������������������������������0000644�0001750�0001750�00000010051�13642357773�014061� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * WPrefs - Window Maker Preferences Program * * Copyright (c) 1998-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "config.h" #include "WPrefs.h" #include <assert.h> #include <X11/Xlocale.h> #include <X11/XKBlib.h> #include <sys/wait.h> #include <unistd.h> #ifdef HAVE_STDNORETURN #include <stdnoreturn.h> #endif char *NOptionValueChanged = "NOptionValueChanged"; Bool xext_xkb_supported = False; #define MAX_DEATHS 64 struct { pid_t pid; void *data; void (*handler) (void *); } DeadHandlers[MAX_DEATHS]; static pid_t DeadChildren[MAX_DEATHS]; static int DeadChildrenCount = 0; static noreturn void wAbort(Bool foo) { /* Parameter not used, but tell the compiler that it is ok */ (void) foo; exit(1); } static void print_help(const char *progname) { printf(_("usage: %s [options]\n"), progname); puts(_("options:")); puts(_(" -display <display> display to be used")); puts(_(" --version print version number and exit")); puts(_(" --help print this message and exit")); } void AddDeadChildHandler(pid_t pid, void (*handler) (void *), void *data) { int i; for (i = 0; i < MAX_DEATHS; i++) { if (DeadHandlers[i].pid == 0) { DeadHandlers[i].pid = pid; DeadHandlers[i].handler = handler; DeadHandlers[i].data = data; break; } } assert(i != MAX_DEATHS); } int main(int argc, char **argv) { Display *dpy; WMScreen *scr; char *path; int i; char *display_name = ""; wsetabort(wAbort); memset(DeadHandlers, 0, sizeof(DeadHandlers)); WMInitializeApplication("WPrefs", &argc, argv); WMSetResourcePath(RESOURCE_PATH); path = WMPathForResourceOfType("WPrefs.tiff", NULL); if (!path) { /* maybe it is run directly from the source directory */ WMSetResourcePath("."); path = WMPathForResourceOfType("WPrefs.tiff", NULL); if (!path) { WMSetResourcePath(".."); } } if (path) { wfree(path); } if (argc > 1) { for (i = 1; i < argc; i++) { if (strcmp(argv[i], "-version") == 0 || strcmp(argv[i], "--version") == 0) { printf("WPrefs (Window Maker) %s\n", VERSION); exit(0); } else if (strcmp(argv[i], "-display") == 0) { i++; if (i >= argc) { wwarning(_("too few arguments for %s"), argv[i - 1]); exit(0); } display_name = argv[i]; } else { print_help(argv[0]); exit(0); } } } setlocale(LC_ALL, ""); #ifdef I18N if (getenv("NLSPATH")) bindtextdomain("WPrefs", getenv("NLSPATH")); else bindtextdomain("WPrefs", LOCALEDIR); bind_textdomain_codeset("WPrefs", "UTF-8"); textdomain("WPrefs"); if (!XSupportsLocale()) { wwarning(_("X server does not support locale")); } if (XSetLocaleModifiers("") == NULL) { wwarning(_("cannot set locale modifiers")); } #endif dpy = XOpenDisplay(display_name); if (!dpy) { wfatal(_("could not open display %s"), XDisplayName(display_name)); exit(0); } scr = WMCreateScreen(dpy, DefaultScreen(dpy)); if (!scr) { wfatal(_("could not initialize application")); exit(0); } xext_xkb_supported = XkbQueryExtension(dpy, NULL, NULL, NULL, NULL, NULL); WMPLSetCaseSensitive(False); Initialize(scr); while (1) { XEvent event; WMNextEvent(dpy, &event); while (DeadChildrenCount-- > 0) { int i; for (i = 0; i < MAX_DEATHS; i++) { if (DeadChildren[i] == DeadHandlers[i].pid) { (*DeadHandlers[i].handler) (DeadHandlers[i].data); DeadHandlers[i].pid = 0; } } } WMHandleEvent(&event); } } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/ltmain.sh������������������������������������������������������������������������0000644�0001750�0001750�00001176714�13642360045�012632� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#! /bin/sh ## DO NOT EDIT - This file generated from ./build-aux/ltmain.in ## by inline-source v2014-01-03.01 # libtool (GNU libtool) 2.4.6 # Provide generalized library-building support services. # Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 # Copyright (C) 1996-2015 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool 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. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool 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, see <http://www.gnu.org/licenses/>. PROGRAM=libtool PACKAGE=libtool VERSION="2.4.6 Debian-2.4.6-11" package_revision=2.4.6 ## ------ ## ## Usage. ## ## ------ ## # Run './libtool --help' for help with using this script from the # command line. ## ------------------------------- ## ## User overridable command paths. ## ## ------------------------------- ## # After configure completes, it has a better idea of some of the # shell tools we need than the defaults used by the functions shared # with bootstrap, so set those here where they can still be over- # ridden by the user, but otherwise take precedence. : ${AUTOCONF="autoconf"} : ${AUTOMAKE="automake"} ## -------------------------- ## ## Source external libraries. ## ## -------------------------- ## # Much of our low-level functionality needs to be sourced from external # libraries, which are installed to $pkgauxdir. # Set a version string for this script. scriptversion=2015-01-20.17; # UTC # General shell script boiler plate, and helper functions. # Written by Gary V. Vaughan, 2004 # Copyright (C) 2004-2015 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # 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 3 of the License, or # (at your option) any later version. # As a special exception to the GNU General Public License, if you distribute # this file as part of a program or library that is built using GNU Libtool, # you may include this file under the same distribution terms that you use # for the rest of that program. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNES 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, see <http://www.gnu.org/licenses/>. # Please report bugs or propose patches to gary@gnu.org. ## ------ ## ## Usage. ## ## ------ ## # Evaluate this file near the top of your script to gain access to # the functions and variables defined here: # # . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh # # If you need to override any of the default environment variable # settings, do that before evaluating this file. ## -------------------- ## ## Shell normalisation. ## ## -------------------- ## # Some shells need a little help to be as Bourne compatible as possible. # Before doing anything else, make sure all that help has been provided! DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # NLS nuisances: We save the old values in case they are required later. _G_user_locale= _G_safe_locale= for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test set = \"\${$_G_var+set}\"; then save_$_G_var=\$$_G_var $_G_var=C export $_G_var _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\" _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" fi" done # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Make sure IFS has a sensible default sp=' ' nl=' ' IFS="$sp $nl" # There are apparently some retarded systems that use ';' as a PATH separator! if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi ## ------------------------- ## ## Locate command utilities. ## ## ------------------------- ## # func_executable_p FILE # ---------------------- # Check that FILE is an executable regular file. func_executable_p () { test -f "$1" && test -x "$1" } # func_path_progs PROGS_LIST CHECK_FUNC [PATH] # -------------------------------------------- # Search for either a program that responds to --version with output # containing "GNU", or else returned by CHECK_FUNC otherwise, by # trying all the directories in PATH with each of the elements of # PROGS_LIST. # # CHECK_FUNC should accept the path to a candidate program, and # set $func_check_prog_result if it truncates its output less than # $_G_path_prog_max characters. func_path_progs () { _G_progs_list=$1 _G_check_func=$2 _G_PATH=${3-"$PATH"} _G_path_prog_max=0 _G_path_prog_found=false _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:} for _G_dir in $_G_PATH; do IFS=$_G_save_IFS test -z "$_G_dir" && _G_dir=. for _G_prog_name in $_G_progs_list; do for _exeext in '' .EXE; do _G_path_prog=$_G_dir/$_G_prog_name$_exeext func_executable_p "$_G_path_prog" || continue case `"$_G_path_prog" --version 2>&1` in *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;; *) $_G_check_func $_G_path_prog func_path_progs_result=$func_check_prog_result ;; esac $_G_path_prog_found && break 3 done done done IFS=$_G_save_IFS test -z "$func_path_progs_result" && { echo "no acceptable sed could be found in \$PATH" >&2 exit 1 } } # We want to be able to use the functions in this file before configure # has figured out where the best binaries are kept, which means we have # to search for them ourselves - except when the results are already set # where we skip the searches. # Unless the user overrides by setting SED, search the path for either GNU # sed, or the sed that truncates its output the least. test -z "$SED" && { _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for _G_i in 1 2 3 4 5 6 7; do _G_sed_script=$_G_sed_script$nl$_G_sed_script done echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed _G_sed_script= func_check_prog_sed () { _G_path_prog=$1 _G_count=0 printf 0123456789 >conftest.in while : do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo '' >> conftest.nl "$_G_path_prog" -f conftest.sed <conftest.nl >conftest.out 2>/dev/null || break diff conftest.out conftest.nl >/dev/null 2>&1 || break _G_count=`expr $_G_count + 1` if test "$_G_count" -gt "$_G_path_prog_max"; then # Best one so far, save it but keep looking for a better one func_check_prog_result=$_G_path_prog _G_path_prog_max=$_G_count fi # 10*(2^10) chars as input seems more than enough test 10 -lt "$_G_count" && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out } func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin rm -f conftest.sed SED=$func_path_progs_result } # Unless the user overrides by setting GREP, search the path for either GNU # grep, or the grep that truncates its output the least. test -z "$GREP" && { func_check_prog_grep () { _G_path_prog=$1 _G_count=0 _G_path_prog_max=0 printf 0123456789 >conftest.in while : do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo 'GREP' >> conftest.nl "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' <conftest.nl >conftest.out 2>/dev/null || break diff conftest.out conftest.nl >/dev/null 2>&1 || break _G_count=`expr $_G_count + 1` if test "$_G_count" -gt "$_G_path_prog_max"; then # Best one so far, save it but keep looking for a better one func_check_prog_result=$_G_path_prog _G_path_prog_max=$_G_count fi # 10*(2^10) chars as input seems more than enough test 10 -lt "$_G_count" && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out } func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin GREP=$func_path_progs_result } ## ------------------------------- ## ## User overridable command paths. ## ## ------------------------------- ## # All uppercase variable names are used for environment variables. These # variables can be overridden by the user before calling a script that # uses them if a suitable command of that name is not already available # in the command search PATH. : ${CP="cp -f"} : ${ECHO="printf %s\n"} : ${EGREP="$GREP -E"} : ${FGREP="$GREP -F"} : ${LN_S="ln -s"} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} ## -------------------- ## ## Useful sed snippets. ## ## -------------------- ## sed_dirname='s|/[^/]*$||' sed_basename='s|^.*/||' # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='s|\([`"$\\]\)|\\\1|g' # Same as above, but do not quote variable references. sed_double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution that turns a string into a regex matching for the # string literally. sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g' # Sed substitution that converts a w32 file name or path # that contains forward slashes, into one that contains # (escaped) backslashes. A very naive implementation. sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' # Re-'\' parameter expansions in output of sed_double_quote_subst that # were '\'-ed in input to the same. If an odd number of '\' preceded a # '$' in input to sed_double_quote_subst, that '$' was protected from # expansion. Since each input '\' is now two '\'s, look for any number # of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'. _G_bs='\\' _G_bs2='\\\\' _G_bs4='\\\\\\\\' _G_dollar='\$' sed_double_backslash="\ s/$_G_bs4/&\\ /g s/^$_G_bs2$_G_dollar/$_G_bs&/ s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g s/\n//g" ## ----------------- ## ## Global variables. ## ## ----------------- ## # Except for the global variables explicitly listed below, the following # functions in the '^func_' namespace, and the '^require_' namespace # variables initialised in the 'Resource management' section, sourcing # this file will not pollute your global namespace with anything # else. There's no portable way to scope variables in Bourne shell # though, so actually running these functions will sometimes place # results into a variable named after the function, and often use # temporary variables in the '^_G_' namespace. If you are careful to # avoid using those namespaces casually in your sourcing script, things # should continue to work as you expect. And, of course, you can freely # overwrite any of the functions or variables defined here before # calling anything to customize them. EXIT_SUCCESS=0 EXIT_FAILURE=1 EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. # Allow overriding, eg assuming that you follow the convention of # putting '$debug_cmd' at the start of all your functions, you can get # bash to show function call trace with: # # debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name debug_cmd=${debug_cmd-":"} exit_cmd=: # By convention, finish your script with: # # exit $exit_status # # so that you can set exit_status to non-zero if you want to indicate # something went wrong during execution without actually bailing out at # the point of failure. exit_status=$EXIT_SUCCESS # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath=$0 # The name of this program. progname=`$ECHO "$progpath" |$SED "$sed_basename"` # Make sure we have an absolute progpath for reexecution: case $progpath in [\\/]*|[A-Za-z]:\\*) ;; *[\\/]*) progdir=`$ECHO "$progpath" |$SED "$sed_dirname"` progdir=`cd "$progdir" && pwd` progpath=$progdir/$progname ;; *) _G_IFS=$IFS IFS=${PATH_SEPARATOR-:} for progdir in $PATH; do IFS=$_G_IFS test -x "$progdir/$progname" && break done IFS=$_G_IFS test -n "$progdir" || progdir=`pwd` progpath=$progdir/$progname ;; esac ## ----------------- ## ## Standard options. ## ## ----------------- ## # The following options affect the operation of the functions defined # below, and should be set appropriately depending on run-time para- # meters passed on the command line. opt_dry_run=false opt_quiet=false opt_verbose=false # Categories 'all' and 'none' are always available. Append any others # you will pass as the first argument to func_warning from your own # code. warning_categories= # By default, display warnings according to 'opt_warning_types'. Set # 'warning_func' to ':' to elide all warnings, or func_fatal_error to # treat the next displayed warning as a fatal error. warning_func=func_warn_and_continue # Set to 'all' to display all warnings, 'none' to suppress all # warnings, or a space delimited list of some subset of # 'warning_categories' to display only the listed warnings. opt_warning_types=all ## -------------------- ## ## Resource management. ## ## -------------------- ## # This section contains definitions for functions that each ensure a # particular resource (a file, or a non-empty configuration variable for # example) is available, and if appropriate to extract default values # from pertinent package files. Call them using their associated # 'require_*' variable to ensure that they are executed, at most, once. # # It's entirely deliberate that calling these functions can set # variables that don't obey the namespace limitations obeyed by the rest # of this file, in order that that they be as useful as possible to # callers. # require_term_colors # ------------------- # Allow display of bold text on terminals that support it. require_term_colors=func_require_term_colors func_require_term_colors () { $debug_cmd test -t 1 && { # COLORTERM and USE_ANSI_COLORS environment variables take # precedence, because most terminfo databases neglect to describe # whether color sequences are supported. test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"} if test 1 = "$USE_ANSI_COLORS"; then # Standard ANSI escape sequences tc_reset='' tc_bold=''; tc_standout='' tc_red=''; tc_green='' tc_blue=''; tc_cyan='' else # Otherwise trust the terminfo database after all. test -n "`tput sgr0 2>/dev/null`" && { tc_reset=`tput sgr0` test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold` tc_standout=$tc_bold test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso` test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1` test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2` test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4` test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5` } fi } require_term_colors=: } ## ----------------- ## ## Function library. ## ## ----------------- ## # This section contains a variety of useful functions to call in your # scripts. Take note of the portable wrappers for features provided by # some modern shells, which will fall back to slower equivalents on # less featureful shells. # func_append VAR VALUE # --------------------- # Append VALUE onto the existing contents of VAR. # We should try to minimise forks, especially on Windows where they are # unreasonably slow, so skip the feature probes when bash or zsh are # being used: if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then : ${_G_HAVE_ARITH_OP="yes"} : ${_G_HAVE_XSI_OPS="yes"} # The += operator was introduced in bash 3.1 case $BASH_VERSION in [12].* | 3.0 | 3.0*) ;; *) : ${_G_HAVE_PLUSEQ_OP="yes"} ;; esac fi # _G_HAVE_PLUSEQ_OP # Can be empty, in which case the shell is probed, "yes" if += is # useable or anything else if it does not work. test -z "$_G_HAVE_PLUSEQ_OP" \ && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \ && _G_HAVE_PLUSEQ_OP=yes if test yes = "$_G_HAVE_PLUSEQ_OP" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_append () { $debug_cmd eval "$1+=\$2" }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_append () { $debug_cmd eval "$1=\$$1\$2" } fi # func_append_quoted VAR VALUE # ---------------------------- # Quote VALUE and append to the end of shell variable VAR, separated # by a space. if test yes = "$_G_HAVE_PLUSEQ_OP"; then eval 'func_append_quoted () { $debug_cmd func_quote_for_eval "$2" eval "$1+=\\ \$func_quote_for_eval_result" }' else func_append_quoted () { $debug_cmd func_quote_for_eval "$2" eval "$1=\$$1\\ \$func_quote_for_eval_result" } fi # func_append_uniq VAR VALUE # -------------------------- # Append unique VALUE onto the existing contents of VAR, assuming # entries are delimited by the first character of VALUE. For example: # # func_append_uniq options " --another-option option-argument" # # will only append to $options if " --another-option option-argument " # is not already present somewhere in $options already (note spaces at # each end implied by leading space in second argument). func_append_uniq () { $debug_cmd eval _G_current_value='`$ECHO $'$1'`' _G_delim=`expr "$2" : '\(.\)'` case $_G_delim$_G_current_value$_G_delim in *"$2$_G_delim"*) ;; *) func_append "$@" ;; esac } # func_arith TERM... # ------------------ # Set func_arith_result to the result of evaluating TERMs. test -z "$_G_HAVE_ARITH_OP" \ && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \ && _G_HAVE_ARITH_OP=yes if test yes = "$_G_HAVE_ARITH_OP"; then eval 'func_arith () { $debug_cmd func_arith_result=$(( $* )) }' else func_arith () { $debug_cmd func_arith_result=`expr "$@"` } fi # func_basename FILE # ------------------ # Set func_basename_result to FILE with everything up to and including # the last / stripped. if test yes = "$_G_HAVE_XSI_OPS"; then # If this shell supports suffix pattern removal, then use it to avoid # forking. Hide the definitions single quotes in case the shell chokes # on unsupported syntax... _b='func_basename_result=${1##*/}' _d='case $1 in */*) func_dirname_result=${1%/*}$2 ;; * ) func_dirname_result=$3 ;; esac' else # ...otherwise fall back to using sed. _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`' _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"` if test "X$func_dirname_result" = "X$1"; then func_dirname_result=$3 else func_append func_dirname_result "$2" fi' fi eval 'func_basename () { $debug_cmd '"$_b"' }' # func_dirname FILE APPEND NONDIR_REPLACEMENT # ------------------------------------------- # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. eval 'func_dirname () { $debug_cmd '"$_d"' }' # func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT # -------------------------------------------------------- # Perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # For efficiency, we do not delegate to the functions above but instead # duplicate the functionality here. eval 'func_dirname_and_basename () { $debug_cmd '"$_b"' '"$_d"' }' # func_echo ARG... # ---------------- # Echo program name prefixed message. func_echo () { $debug_cmd _G_message=$* func_echo_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_IFS $ECHO "$progname: $_G_line" done IFS=$func_echo_IFS } # func_echo_all ARG... # -------------------- # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } # func_echo_infix_1 INFIX ARG... # ------------------------------ # Echo program name, followed by INFIX on the first line, with any # additional lines not showing INFIX. func_echo_infix_1 () { $debug_cmd $require_term_colors _G_infix=$1; shift _G_indent=$_G_infix _G_prefix="$progname: $_G_infix: " _G_message=$* # Strip color escape sequences before counting printable length for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan" do test -n "$_G_tc" && { _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"` _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"` } done _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes func_echo_infix_1_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_infix_1_IFS $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2 _G_prefix=$_G_indent done IFS=$func_echo_infix_1_IFS } # func_error ARG... # ----------------- # Echo program name prefixed message to standard error. func_error () { $debug_cmd $require_term_colors func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2 } # func_fatal_error ARG... # ----------------------- # Echo program name prefixed message to standard error, and exit. func_fatal_error () { $debug_cmd func_error "$*" exit $EXIT_FAILURE } # func_grep EXPRESSION FILENAME # ----------------------------- # Check whether EXPRESSION matches any line of FILENAME, without output. func_grep () { $debug_cmd $GREP "$1" "$2" >/dev/null 2>&1 } # func_len STRING # --------------- # Set func_len_result to the length of STRING. STRING may not # start with a hyphen. test -z "$_G_HAVE_XSI_OPS" \ && (eval 'x=a/b/c; test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ && _G_HAVE_XSI_OPS=yes if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_len () { $debug_cmd func_len_result=${#1} }' else func_len () { $debug_cmd func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` } fi # func_mkdir_p DIRECTORY-PATH # --------------------------- # Make sure the entire path to DIRECTORY-PATH is available. func_mkdir_p () { $debug_cmd _G_directory_path=$1 _G_dir_list= if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then # Protect directory names starting with '-' case $_G_directory_path in -*) _G_directory_path=./$_G_directory_path ;; esac # While some portion of DIR does not yet exist... while test ! -d "$_G_directory_path"; do # ...make a list in topmost first order. Use a colon delimited # list incase some portion of path contains whitespace. _G_dir_list=$_G_directory_path:$_G_dir_list # If the last portion added has no slash in it, the list is done case $_G_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"` done _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'` func_mkdir_p_IFS=$IFS; IFS=: for _G_dir in $_G_dir_list; do IFS=$func_mkdir_p_IFS # mkdir can fail with a 'File exist' error if two processes # try to create one of the directories concurrently. Don't # stop in that case! $MKDIR "$_G_dir" 2>/dev/null || : done IFS=$func_mkdir_p_IFS # Bail out if we (or some other process) failed to create a directory. test -d "$_G_directory_path" || \ func_fatal_error "Failed to create '$1'" fi } # func_mktempdir [BASENAME] # ------------------------- # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If # given, BASENAME is the basename for that directory. func_mktempdir () { $debug_cmd _G_template=${TMPDIR-/tmp}/${1-$progname} if test : = "$opt_dry_run"; then # Return a directory name, but don't create it in dry-run mode _G_tmpdir=$_G_template-$$ else # If mktemp works, use that first and foremost _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null` if test ! -d "$_G_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race _G_tmpdir=$_G_template-${RANDOM-0}$$ func_mktempdir_umask=`umask` umask 0077 $MKDIR "$_G_tmpdir" umask $func_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure test -d "$_G_tmpdir" || \ func_fatal_error "cannot create temporary directory '$_G_tmpdir'" fi $ECHO "$_G_tmpdir" } # func_normal_abspath PATH # ------------------------ # Remove doubled-up and trailing slashes, "." path components, # and cancel out any ".." path components in PATH after making # it an absolute path. func_normal_abspath () { $debug_cmd # These SED scripts presuppose an absolute path with a trailing slash. _G_pathcar='s|^/\([^/]*\).*$|\1|' _G_pathcdr='s|^/[^/]*||' _G_removedotparts=':dotsl s|/\./|/|g t dotsl s|/\.$|/|' _G_collapseslashes='s|/\{1,\}|/|g' _G_finalslash='s|/*$|/|' # Start from root dir and reassemble the path. func_normal_abspath_result= func_normal_abspath_tpath=$1 func_normal_abspath_altnamespace= case $func_normal_abspath_tpath in "") # Empty path, that just means $cwd. func_stripname '' '/' "`pwd`" func_normal_abspath_result=$func_stripname_result return ;; # The next three entries are used to spot a run of precisely # two leading slashes without using negated character classes; # we take advantage of case's first-match behaviour. ///*) # Unusual form of absolute path, do nothing. ;; //*) # Not necessarily an ordinary path; POSIX reserves leading '//' # and for example Cygwin uses it to access remote file shares # over CIFS/SMB, so we conserve a leading double slash if found. func_normal_abspath_altnamespace=/ ;; /*) # Absolute path, do nothing. ;; *) # Relative path, prepend $cwd. func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath ;; esac # Cancel out all the simple stuff to save iterations. We also want # the path to end with a slash for ease of parsing, so make sure # there is one (and only one) here. func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"` while :; do # Processed it all yet? if test / = "$func_normal_abspath_tpath"; then # If we ascended to the root using ".." the result may be empty now. if test -z "$func_normal_abspath_result"; then func_normal_abspath_result=/ fi break fi func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_pathcar"` func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_pathcdr"` # Figure out what to do with it case $func_normal_abspath_tcomponent in "") # Trailing empty path component, ignore it. ;; ..) # Parent dir; strip last assembled component from result. func_dirname "$func_normal_abspath_result" func_normal_abspath_result=$func_dirname_result ;; *) # Actual path component, append it. func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent" ;; esac done # Restore leading double-slash if one was found on entry. func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result } # func_notquiet ARG... # -------------------- # Echo program name prefixed message only when not in quiet mode. func_notquiet () { $debug_cmd $opt_quiet || func_echo ${1+"$@"} # A bug in bash halts the script if the last line of a function # fails when set -e is in force, so we need another command to # work around that: : } # func_relative_path SRCDIR DSTDIR # -------------------------------- # Set func_relative_path_result to the relative path from SRCDIR to DSTDIR. func_relative_path () { $debug_cmd func_relative_path_result= func_normal_abspath "$1" func_relative_path_tlibdir=$func_normal_abspath_result func_normal_abspath "$2" func_relative_path_tbindir=$func_normal_abspath_result # Ascend the tree starting from libdir while :; do # check if we have found a prefix of bindir case $func_relative_path_tbindir in $func_relative_path_tlibdir) # found an exact match func_relative_path_tcancelled= break ;; $func_relative_path_tlibdir*) # found a matching prefix func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" func_relative_path_tcancelled=$func_stripname_result if test -z "$func_relative_path_result"; then func_relative_path_result=. fi break ;; *) func_dirname $func_relative_path_tlibdir func_relative_path_tlibdir=$func_dirname_result if test -z "$func_relative_path_tlibdir"; then # Have to descend all the way to the root! func_relative_path_result=../$func_relative_path_result func_relative_path_tcancelled=$func_relative_path_tbindir break fi func_relative_path_result=../$func_relative_path_result ;; esac done # Now calculate path; take care to avoid doubling-up slashes. func_stripname '' '/' "$func_relative_path_result" func_relative_path_result=$func_stripname_result func_stripname '/' '/' "$func_relative_path_tcancelled" if test -n "$func_stripname_result"; then func_append func_relative_path_result "/$func_stripname_result" fi # Normalisation. If bindir is libdir, return '.' else relative path. if test -n "$func_relative_path_result"; then func_stripname './' '' "$func_relative_path_result" func_relative_path_result=$func_stripname_result fi test -n "$func_relative_path_result" || func_relative_path_result=. : } # func_quote_for_eval ARG... # -------------------------- # Aesthetically quote ARGs to be evaled later. # This function returns two values: # i) func_quote_for_eval_result # double-quoted, suitable for a subsequent eval # ii) func_quote_for_eval_unquoted_result # has all characters that are still active within double # quotes backslashified. func_quote_for_eval () { $debug_cmd func_quote_for_eval_unquoted_result= func_quote_for_eval_result= while test 0 -lt $#; do case $1 in *[\\\`\"\$]*) _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;; *) _G_unquoted_arg=$1 ;; esac if test -n "$func_quote_for_eval_unquoted_result"; then func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg" else func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg" fi case $_G_unquoted_arg in # Double-quote args containing shell metacharacters to delay # word splitting, command substitution and variable expansion # for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") _G_quoted_arg=\"$_G_unquoted_arg\" ;; *) _G_quoted_arg=$_G_unquoted_arg ;; esac if test -n "$func_quote_for_eval_result"; then func_append func_quote_for_eval_result " $_G_quoted_arg" else func_append func_quote_for_eval_result "$_G_quoted_arg" fi shift done } # func_quote_for_expand ARG # ------------------------- # Aesthetically quote ARG to be evaled later; same as above, # but do not quote variable references. func_quote_for_expand () { $debug_cmd case $1 in *[\\\`\"]*) _G_arg=`$ECHO "$1" | $SED \ -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;; *) _G_arg=$1 ;; esac case $_G_arg in # Double-quote args containing shell metacharacters to delay # word splitting and command substitution for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") _G_arg=\"$_G_arg\" ;; esac func_quote_for_expand_result=$_G_arg } # func_stripname PREFIX SUFFIX NAME # --------------------------------- # strip PREFIX and SUFFIX from NAME, and store in func_stripname_result. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_stripname () { $debug_cmd # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary variable first. func_stripname_result=$3 func_stripname_result=${func_stripname_result#"$1"} func_stripname_result=${func_stripname_result%"$2"} }' else func_stripname () { $debug_cmd case $2 in .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;; *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;; esac } fi # func_show_eval CMD [FAIL_EXP] # ----------------------------- # Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. func_show_eval () { $debug_cmd _G_cmd=$1 _G_fail_exp=${2-':'} func_quote_for_expand "$_G_cmd" eval "func_notquiet $func_quote_for_expand_result" $opt_dry_run || { eval "$_G_cmd" _G_status=$? if test 0 -ne "$_G_status"; then eval "(exit $_G_status); $_G_fail_exp" fi } } # func_show_eval_locale CMD [FAIL_EXP] # ------------------------------------ # Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. Use the saved locale for evaluation. func_show_eval_locale () { $debug_cmd _G_cmd=$1 _G_fail_exp=${2-':'} $opt_quiet || { func_quote_for_expand "$_G_cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || { eval "$_G_user_locale $_G_cmd" _G_status=$? eval "$_G_safe_locale" if test 0 -ne "$_G_status"; then eval "(exit $_G_status); $_G_fail_exp" fi } } # func_tr_sh # ---------- # Turn $1 into a string suitable for a shell variable name. # Result is stored in $func_tr_sh_result. All characters # not in the set a-zA-Z0-9_ are replaced with '_'. Further, # if $1 begins with a digit, a '_' is prepended as well. func_tr_sh () { $debug_cmd case $1 in [0-9]* | *[!a-zA-Z0-9_]*) func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'` ;; * ) func_tr_sh_result=$1 ;; esac } # func_verbose ARG... # ------------------- # Echo program name prefixed message in verbose mode only. func_verbose () { $debug_cmd $opt_verbose && func_echo "$*" : } # func_warn_and_continue ARG... # ----------------------------- # Echo program name prefixed warning message to standard error. func_warn_and_continue () { $debug_cmd $require_term_colors func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2 } # func_warning CATEGORY ARG... # ---------------------------- # Echo program name prefixed warning message to standard error. Warning # messages can be filtered according to CATEGORY, where this function # elides messages where CATEGORY is not listed in the global variable # 'opt_warning_types'. func_warning () { $debug_cmd # CATEGORY must be in the warning_categories list! case " $warning_categories " in *" $1 "*) ;; *) func_internal_error "invalid warning category '$1'" ;; esac _G_category=$1 shift case " $opt_warning_types " in *" $_G_category "*) $warning_func ${1+"$@"} ;; esac } # func_sort_ver VER1 VER2 # ----------------------- # 'sort -V' is not generally available. # Note this deviates from the version comparison in automake # in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a # but this should suffice as we won't be specifying old # version formats or redundant trailing .0 in bootstrap.conf. # If we did want full compatibility then we should probably # use m4_version_compare from autoconf. func_sort_ver () { $debug_cmd printf '%s\n%s\n' "$1" "$2" \ | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n } # func_lt_ver PREV CURR # --------------------- # Return true if PREV and CURR are in the correct order according to # func_sort_ver, otherwise false. Use it like this: # # func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..." func_lt_ver () { $debug_cmd test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q` } # Local variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: #! /bin/sh # Set a version string for this script. scriptversion=2015-10-07.11; # UTC # A portable, pluggable option parser for Bourne shell. # Written by Gary V. Vaughan, 2010 # Copyright (C) 2010-2015 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # 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 3 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, see <http://www.gnu.org/licenses/>. # Please report bugs or propose patches to gary@gnu.org. ## ------ ## ## Usage. ## ## ------ ## # This file is a library for parsing options in your shell scripts along # with assorted other useful supporting features that you can make use # of too. # # For the simplest scripts you might need only: # # #!/bin/sh # . relative/path/to/funclib.sh # . relative/path/to/options-parser # scriptversion=1.0 # func_options ${1+"$@"} # eval set dummy "$func_options_result"; shift # ...rest of your script... # # In order for the '--version' option to work, you will need to have a # suitably formatted comment like the one at the top of this file # starting with '# Written by ' and ending with '# warranty; '. # # For '-h' and '--help' to work, you will also need a one line # description of your script's purpose in a comment directly above the # '# Written by ' line, like the one at the top of this file. # # The default options also support '--debug', which will turn on shell # execution tracing (see the comment above debug_cmd below for another # use), and '--verbose' and the func_verbose function to allow your script # to display verbose messages only when your user has specified # '--verbose'. # # After sourcing this file, you can plug processing for additional # options by amending the variables from the 'Configuration' section # below, and following the instructions in the 'Option parsing' # section further down. ## -------------- ## ## Configuration. ## ## -------------- ## # You should override these variables in your script after sourcing this # file so that they reflect the customisations you have added to the # option parser. # The usage line for option parsing errors and the start of '-h' and # '--help' output messages. You can embed shell variables for delayed # expansion at the time the message is displayed, but you will need to # quote other shell meta-characters carefully to prevent them being # expanded when the contents are evaled. usage='$progpath [OPTION]...' # Short help message in response to '-h' and '--help'. Add to this or # override it after sourcing this library to reflect the full set of # options your script accepts. usage_message="\ --debug enable verbose shell tracing -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] -v, --verbose verbosely report processing --version print version information and exit -h, --help print short or long help message and exit " # Additional text appended to 'usage_message' in response to '--help'. long_help_message=" Warning categories include: 'all' show all warnings 'none' turn off all the warnings 'error' warnings are treated as fatal errors" # Help message printed before fatal option parsing errors. fatal_help="Try '\$progname --help' for more information." ## ------------------------- ## ## Hook function management. ## ## ------------------------- ## # This section contains functions for adding, removing, and running hooks # to the main code. A hook is just a named list of of function, that can # be run in order later on. # func_hookable FUNC_NAME # ----------------------- # Declare that FUNC_NAME will run hooks added with # 'func_add_hook FUNC_NAME ...'. func_hookable () { $debug_cmd func_append hookable_fns " $1" } # func_add_hook FUNC_NAME HOOK_FUNC # --------------------------------- # Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must # first have been declared "hookable" by a call to 'func_hookable'. func_add_hook () { $debug_cmd case " $hookable_fns " in *" $1 "*) ;; *) func_fatal_error "'$1' does not accept hook functions." ;; esac eval func_append ${1}_hooks '" $2"' } # func_remove_hook FUNC_NAME HOOK_FUNC # ------------------------------------ # Remove HOOK_FUNC from the list of functions called by FUNC_NAME. func_remove_hook () { $debug_cmd eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`' } # func_run_hooks FUNC_NAME [ARG]... # --------------------------------- # Run all hook functions registered to FUNC_NAME. # It is assumed that the list of hook functions contains nothing more # than a whitespace-delimited list of legal shell function names, and # no effort is wasted trying to catch shell meta-characters or preserve # whitespace. func_run_hooks () { $debug_cmd _G_rc_run_hooks=false case " $hookable_fns " in *" $1 "*) ;; *) func_fatal_error "'$1' does not support hook funcions.n" ;; esac eval _G_hook_fns=\$$1_hooks; shift for _G_hook in $_G_hook_fns; do if eval $_G_hook '"$@"'; then # store returned options list back into positional # parameters for next 'cmd' execution. eval _G_hook_result=\$${_G_hook}_result eval set dummy "$_G_hook_result"; shift _G_rc_run_hooks=: fi done $_G_rc_run_hooks && func_run_hooks_result=$_G_hook_result } ## --------------- ## ## Option parsing. ## ## --------------- ## # In order to add your own option parsing hooks, you must accept the # full positional parameter list in your hook function, you may remove/edit # any options that you action, and then pass back the remaining unprocessed # options in '<hooked_function_name>_result', escaped suitably for # 'eval'. In this case you also must return $EXIT_SUCCESS to let the # hook's caller know that it should pay attention to # '<hooked_function_name>_result'. Returning $EXIT_FAILURE signalizes that # arguments are left untouched by the hook and therefore caller will ignore the # result variable. # # Like this: # # my_options_prep () # { # $debug_cmd # # # Extend the existing usage message. # usage_message=$usage_message' # -s, --silent don'\''t print informational messages # ' # # No change in '$@' (ignored completely by this hook). There is # # no need to do the equivalent (but slower) action: # # func_quote_for_eval ${1+"$@"} # # my_options_prep_result=$func_quote_for_eval_result # false # } # func_add_hook func_options_prep my_options_prep # # # my_silent_option () # { # $debug_cmd # # args_changed=false # # # Note that for efficiency, we parse as many options as we can # # recognise in a loop before passing the remainder back to the # # caller on the first unrecognised argument we encounter. # while test $# -gt 0; do # opt=$1; shift # case $opt in # --silent|-s) opt_silent=: # args_changed=: # ;; # # Separate non-argument short options: # -s*) func_split_short_opt "$_G_opt" # set dummy "$func_split_short_opt_name" \ # "-$func_split_short_opt_arg" ${1+"$@"} # shift # args_changed=: # ;; # *) # Make sure the first unrecognised option "$_G_opt" # # is added back to "$@", we could need that later # # if $args_changed is true. # set dummy "$_G_opt" ${1+"$@"}; shift; break ;; # esac # done # # if $args_changed; then # func_quote_for_eval ${1+"$@"} # my_silent_option_result=$func_quote_for_eval_result # fi # # $args_changed # } # func_add_hook func_parse_options my_silent_option # # # my_option_validation () # { # $debug_cmd # # $opt_silent && $opt_verbose && func_fatal_help "\ # '--silent' and '--verbose' options are mutually exclusive." # # false # } # func_add_hook func_validate_options my_option_validation # # You'll also need to manually amend $usage_message to reflect the extra # options you parse. It's preferable to append if you can, so that # multiple option parsing hooks can be added safely. # func_options_finish [ARG]... # ---------------------------- # Finishing the option parse loop (call 'func_options' hooks ATM). func_options_finish () { $debug_cmd _G_func_options_finish_exit=false if func_run_hooks func_options ${1+"$@"}; then func_options_finish_result=$func_run_hooks_result _G_func_options_finish_exit=: fi $_G_func_options_finish_exit } # func_options [ARG]... # --------------------- # All the functions called inside func_options are hookable. See the # individual implementations for details. func_hookable func_options func_options () { $debug_cmd _G_rc_options=false for my_func in options_prep parse_options validate_options options_finish do if eval func_$my_func '${1+"$@"}'; then eval _G_res_var='$'"func_${my_func}_result" eval set dummy "$_G_res_var" ; shift _G_rc_options=: fi done # Save modified positional parameters for caller. As a top-level # options-parser function we always need to set the 'func_options_result' # variable (regardless the $_G_rc_options value). if $_G_rc_options; then func_options_result=$_G_res_var else func_quote_for_eval ${1+"$@"} func_options_result=$func_quote_for_eval_result fi $_G_rc_options } # func_options_prep [ARG]... # -------------------------- # All initialisations required before starting the option parse loop. # Note that when calling hook functions, we pass through the list of # positional parameters. If a hook function modifies that list, and # needs to propagate that back to rest of this script, then the complete # modified list must be put in 'func_run_hooks_result' before # returning $EXIT_SUCCESS (otherwise $EXIT_FAILURE is returned). func_hookable func_options_prep func_options_prep () { $debug_cmd # Option defaults: opt_verbose=false opt_warning_types= _G_rc_options_prep=false if func_run_hooks func_options_prep ${1+"$@"}; then _G_rc_options_prep=: # save modified positional parameters for caller func_options_prep_result=$func_run_hooks_result fi $_G_rc_options_prep } # func_parse_options [ARG]... # --------------------------- # The main option parsing loop. func_hookable func_parse_options func_parse_options () { $debug_cmd func_parse_options_result= _G_rc_parse_options=false # this just eases exit handling while test $# -gt 0; do # Defer to hook functions for initial option parsing, so they # get priority in the event of reusing an option name. if func_run_hooks func_parse_options ${1+"$@"}; then eval set dummy "$func_run_hooks_result"; shift _G_rc_parse_options=: fi # Break out of the loop if we already parsed every option. test $# -gt 0 || break _G_match_parse_options=: _G_opt=$1 shift case $_G_opt in --debug|-x) debug_cmd='set -x' func_echo "enabling shell trace mode" $debug_cmd ;; --no-warnings|--no-warning|--no-warn) set dummy --warnings none ${1+"$@"} shift ;; --warnings|--warning|-W) if test $# = 0 && func_missing_arg $_G_opt; then _G_rc_parse_options=: break fi case " $warning_categories $1" in *" $1 "*) # trailing space prevents matching last $1 above func_append_uniq opt_warning_types " $1" ;; *all) opt_warning_types=$warning_categories ;; *none) opt_warning_types=none warning_func=: ;; *error) opt_warning_types=$warning_categories warning_func=func_fatal_error ;; *) func_fatal_error \ "unsupported warning category: '$1'" ;; esac shift ;; --verbose|-v) opt_verbose=: ;; --version) func_version ;; -\?|-h) func_usage ;; --help) func_help ;; # Separate optargs to long options (plugins may need this): --*=*) func_split_equals "$_G_opt" set dummy "$func_split_equals_lhs" \ "$func_split_equals_rhs" ${1+"$@"} shift ;; # Separate optargs to short options: -W*) func_split_short_opt "$_G_opt" set dummy "$func_split_short_opt_name" \ "$func_split_short_opt_arg" ${1+"$@"} shift ;; # Separate non-argument short options: -\?*|-h*|-v*|-x*) func_split_short_opt "$_G_opt" set dummy "$func_split_short_opt_name" \ "-$func_split_short_opt_arg" ${1+"$@"} shift ;; --) _G_rc_parse_options=: ; break ;; -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; *) set dummy "$_G_opt" ${1+"$@"}; shift _G_match_parse_options=false break ;; esac $_G_match_parse_options && _G_rc_parse_options=: done if $_G_rc_parse_options; then # save modified positional parameters for caller func_quote_for_eval ${1+"$@"} func_parse_options_result=$func_quote_for_eval_result fi $_G_rc_parse_options } # func_validate_options [ARG]... # ------------------------------ # Perform any sanity checks on option settings and/or unconsumed # arguments. func_hookable func_validate_options func_validate_options () { $debug_cmd _G_rc_validate_options=false # Display all warnings if -W was not given. test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" if func_run_hooks func_validate_options ${1+"$@"}; then # save modified positional parameters for caller func_validate_options_result=$func_run_hooks_result _G_rc_validate_options=: fi # Bail if the options were screwed! $exit_cmd $EXIT_FAILURE $_G_rc_validate_options } ## ----------------- ## ## Helper functions. ## ## ----------------- ## # This section contains the helper functions used by the rest of the # hookable option parser framework in ascii-betical order. # func_fatal_help ARG... # ---------------------- # Echo program name prefixed message to standard error, followed by # a help hint, and exit. func_fatal_help () { $debug_cmd eval \$ECHO \""Usage: $usage"\" eval \$ECHO \""$fatal_help"\" func_error ${1+"$@"} exit $EXIT_FAILURE } # func_help # --------- # Echo long help message to standard output and exit. func_help () { $debug_cmd func_usage_message $ECHO "$long_help_message" exit 0 } # func_missing_arg ARGNAME # ------------------------ # Echo program name prefixed message to standard error and set global # exit_cmd. func_missing_arg () { $debug_cmd func_error "Missing argument for '$1'." exit_cmd=exit } # func_split_equals STRING # ------------------------ # Set func_split_equals_lhs and func_split_equals_rhs shell variables after # splitting STRING at the '=' sign. test -z "$_G_HAVE_XSI_OPS" \ && (eval 'x=a/b/c; test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ && _G_HAVE_XSI_OPS=yes if test yes = "$_G_HAVE_XSI_OPS" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_split_equals () { $debug_cmd func_split_equals_lhs=${1%%=*} func_split_equals_rhs=${1#*=} test "x$func_split_equals_lhs" = "x$1" \ && func_split_equals_rhs= }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_split_equals () { $debug_cmd func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` func_split_equals_rhs= test "x$func_split_equals_lhs" = "x$1" \ || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` } fi #func_split_equals # func_split_short_opt SHORTOPT # ----------------------------- # Set func_split_short_opt_name and func_split_short_opt_arg shell # variables after splitting SHORTOPT after the 2nd character. if test yes = "$_G_HAVE_XSI_OPS" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_split_short_opt () { $debug_cmd func_split_short_opt_arg=${1#??} func_split_short_opt_name=${1%"$func_split_short_opt_arg"} }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_split_short_opt () { $debug_cmd func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'` func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` } fi #func_split_short_opt # func_usage # ---------- # Echo short help message to standard output and exit. func_usage () { $debug_cmd func_usage_message $ECHO "Run '$progname --help |${PAGER-more}' for full usage" exit 0 } # func_usage_message # ------------------ # Echo short help message to standard output. func_usage_message () { $debug_cmd eval \$ECHO \""Usage: $usage"\" echo $SED -n 's|^# || /^Written by/{ x;p;x } h /^Written by/q' < "$progpath" echo eval \$ECHO \""$usage_message"\" } # func_version # ------------ # Echo version message to standard output and exit. func_version () { $debug_cmd printf '%s\n' "$progname $scriptversion" $SED -n ' /(C)/!b go :more /\./!{ N s|\n# | | b more } :go /^# Written by /,/# warranty; / { s|^# || s|^# *$|| s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| p } /^# Written by / { s|^# || p } /^warranty; /q' < "$progpath" exit $? } # Local variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: # Set a version string. scriptversion='(GNU libtool) 2.4.6' # func_echo ARG... # ---------------- # Libtool also displays the current mode in messages, so override # funclib.sh func_echo with this custom definition. func_echo () { $debug_cmd _G_message=$* func_echo_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_IFS $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line" done IFS=$func_echo_IFS } # func_warning ARG... # ------------------- # Libtool warnings are not categorized, so override funclib.sh # func_warning with this simpler definition. func_warning () { $debug_cmd $warning_func ${1+"$@"} } ## ---------------- ## ## Options parsing. ## ## ---------------- ## # Hook in the functions to make sure our own options are parsed during # the option parsing loop. usage='$progpath [OPTION]... [MODE-ARG]...' # Short help message in response to '-h'. usage_message="Options: --config show all configuration variables --debug enable verbose shell tracing -n, --dry-run display commands without modifying any files --features display basic configuration information and exit --mode=MODE use operation mode MODE --no-warnings equivalent to '-Wnone' --preserve-dup-deps don't remove duplicate dependency libraries --quiet, --silent don't print informational messages --tag=TAG use configuration variables from tag TAG -v, --verbose print more informational messages than default --version print version information -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] -h, --help, --help-all print short, long, or detailed help message " # Additional text appended to 'usage_message' in response to '--help'. func_help () { $debug_cmd func_usage_message $ECHO "$long_help_message MODE must be one of the following: clean remove files from the build directory compile compile a source file into a libtool object execute automatically set library path, then run a program finish complete the installation of libtool libraries install install libraries or executables link create a library or an executable uninstall remove libraries from an installed directory MODE-ARGS vary depending on the MODE. When passed as first option, '--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that. Try '$progname --help --mode=MODE' for a more detailed description of MODE. When reporting a bug, please describe a test case to reproduce it and include the following information: host-triplet: $host shell: $SHELL compiler: $LTCC compiler flags: $LTCFLAGS linker: $LD (gnu? $with_gnu_ld) version: $progname $scriptversion Debian-2.4.6-11 automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` Report bugs to <bug-libtool@gnu.org>. GNU libtool home page: <http://www.gnu.org/s/libtool/>. General help using GNU software: <http://www.gnu.org/gethelp/>." exit 0 } # func_lo2o OBJECT-NAME # --------------------- # Transform OBJECT-NAME from a '.lo' suffix to the platform specific # object suffix. lo2o=s/\\.lo\$/.$objext/ o2lo=s/\\.$objext\$/.lo/ if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_lo2o () { case $1 in *.lo) func_lo2o_result=${1%.lo}.$objext ;; * ) func_lo2o_result=$1 ;; esac }' # func_xform LIBOBJ-OR-SOURCE # --------------------------- # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise) # suffix to a '.lo' libtool-object suffix. eval 'func_xform () { func_xform_result=${1%.*}.lo }' else # ...otherwise fall back to using sed. func_lo2o () { func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"` } func_xform () { func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'` } fi # func_fatal_configuration ARG... # ------------------------------- # Echo program name prefixed message to standard error, followed by # a configuration failure hint, and exit. func_fatal_configuration () { func__fatal_error ${1+"$@"} \ "See the $PACKAGE documentation for more information." \ "Fatal configuration error." } # func_config # ----------- # Display the configuration for all the tags in this script. func_config () { re_begincf='^# ### BEGIN LIBTOOL' re_endcf='^# ### END LIBTOOL' # Default configuration. $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" # Now print the configurations for the tags. for tagname in $taglist; do $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" done exit $? } # func_features # ------------- # Display the features supported by this script. func_features () { echo "host: $host" if test yes = "$build_libtool_libs"; then echo "enable shared libraries" else echo "disable shared libraries" fi if test yes = "$build_old_libs"; then echo "enable static libraries" else echo "disable static libraries" fi exit $? } # func_enable_tag TAGNAME # ----------------------- # Verify that TAGNAME is valid, and either flag an error and exit, or # enable the TAGNAME tag. We also add TAGNAME to the global $taglist # variable here. func_enable_tag () { # Global variable: tagname=$1 re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" sed_extractcf=/$re_begincf/,/$re_endcf/p # Validate tagname. case $tagname in *[!-_A-Za-z0-9,/]*) func_fatal_error "invalid tag name: $tagname" ;; esac # Don't test for the "default" C tag, as we know it's # there but not specially marked. case $tagname in CC) ;; *) if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then taglist="$taglist $tagname" # Evaluate the configuration. Be careful to quote the path # and the sed script, to avoid splitting on whitespace, but # also don't use non-portable quotes within backquotes within # quotes we have to do it in 2 steps: extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` eval "$extractedcf" else func_error "ignoring unknown tag $tagname" fi ;; esac } # func_check_version_match # ------------------------ # Ensure that we are using m4 macros, and libtool script from the same # release of libtool. func_check_version_match () { if test "$package_revision" != "$macro_revision"; then if test "$VERSION" != "$macro_version"; then if test -z "$macro_version"; then cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from an older release. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from $PACKAGE $macro_version. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF fi else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, $progname: but the definition of this LT_INIT comes from revision $macro_revision. $progname: You should recreate aclocal.m4 with macros from revision $package_revision $progname: of $PACKAGE $VERSION and run autoconf again. _LT_EOF fi exit $EXIT_MISMATCH fi } # libtool_options_prep [ARG]... # ----------------------------- # Preparation for options parsed by libtool. libtool_options_prep () { $debug_mode # Option defaults: opt_config=false opt_dlopen= opt_dry_run=false opt_help=false opt_mode= opt_preserve_dup_deps=false opt_quiet=false nonopt= preserve_args= _G_rc_lt_options_prep=: # Shorthand for --mode=foo, only valid as the first argument case $1 in clean|clea|cle|cl) shift; set dummy --mode clean ${1+"$@"}; shift ;; compile|compil|compi|comp|com|co|c) shift; set dummy --mode compile ${1+"$@"}; shift ;; execute|execut|execu|exec|exe|ex|e) shift; set dummy --mode execute ${1+"$@"}; shift ;; finish|finis|fini|fin|fi|f) shift; set dummy --mode finish ${1+"$@"}; shift ;; install|instal|insta|inst|ins|in|i) shift; set dummy --mode install ${1+"$@"}; shift ;; link|lin|li|l) shift; set dummy --mode link ${1+"$@"}; shift ;; uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) shift; set dummy --mode uninstall ${1+"$@"}; shift ;; *) _G_rc_lt_options_prep=false ;; esac if $_G_rc_lt_options_prep; then # Pass back the list of options. func_quote_for_eval ${1+"$@"} libtool_options_prep_result=$func_quote_for_eval_result fi $_G_rc_lt_options_prep } func_add_hook func_options_prep libtool_options_prep # libtool_parse_options [ARG]... # --------------------------------- # Provide handling for libtool specific options. libtool_parse_options () { $debug_cmd _G_rc_lt_parse_options=false # Perform our own loop to consume as many options as possible in # each iteration. while test $# -gt 0; do _G_match_lt_parse_options=: _G_opt=$1 shift case $_G_opt in --dry-run|--dryrun|-n) opt_dry_run=: ;; --config) func_config ;; --dlopen|-dlopen) opt_dlopen="${opt_dlopen+$opt_dlopen }$1" shift ;; --preserve-dup-deps) opt_preserve_dup_deps=: ;; --features) func_features ;; --finish) set dummy --mode finish ${1+"$@"}; shift ;; --help) opt_help=: ;; --help-all) opt_help=': help-all' ;; --mode) test $# = 0 && func_missing_arg $_G_opt && break opt_mode=$1 case $1 in # Valid mode arguments: clean|compile|execute|finish|install|link|relink|uninstall) ;; # Catch anything else as an error *) func_error "invalid argument for $_G_opt" exit_cmd=exit break ;; esac shift ;; --no-silent|--no-quiet) opt_quiet=false func_append preserve_args " $_G_opt" ;; --no-warnings|--no-warning|--no-warn) opt_warning=false func_append preserve_args " $_G_opt" ;; --no-verbose) opt_verbose=false func_append preserve_args " $_G_opt" ;; --silent|--quiet) opt_quiet=: opt_verbose=false func_append preserve_args " $_G_opt" ;; --tag) test $# = 0 && func_missing_arg $_G_opt && break opt_tag=$1 func_append preserve_args " $_G_opt $1" func_enable_tag "$1" shift ;; --verbose|-v) opt_quiet=false opt_verbose=: func_append preserve_args " $_G_opt" ;; # An option not handled by this hook function: *) set dummy "$_G_opt" ${1+"$@"} ; shift _G_match_lt_parse_options=false break ;; esac $_G_match_lt_parse_options && _G_rc_lt_parse_options=: done if $_G_rc_lt_parse_options; then # save modified positional parameters for caller func_quote_for_eval ${1+"$@"} libtool_parse_options_result=$func_quote_for_eval_result fi $_G_rc_lt_parse_options } func_add_hook func_parse_options libtool_parse_options # libtool_validate_options [ARG]... # --------------------------------- # Perform any sanity checks on option settings and/or unconsumed # arguments. libtool_validate_options () { # save first non-option argument if test 0 -lt $#; then nonopt=$1 shift fi # preserve --debug test : = "$debug_cmd" || func_append preserve_args " --debug" case $host in # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452 # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788 *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*) # don't eliminate duplications in $postdeps and $predeps opt_duplicate_compiler_generated_deps=: ;; *) opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps ;; esac $opt_help || { # Sanity checks first: func_check_version_match test yes != "$build_libtool_libs" \ && test yes != "$build_old_libs" \ && func_fatal_configuration "not configured to build any kind of library" # Darwin sucks eval std_shrext=\"$shrext_cmds\" # Only execute mode is allowed to have -dlopen flags. if test -n "$opt_dlopen" && test execute != "$opt_mode"; then func_error "unrecognized option '-dlopen'" $ECHO "$help" 1>&2 exit $EXIT_FAILURE fi # Change the help message to a mode-specific one. generic_help=$help help="Try '$progname --help --mode=$opt_mode' for more information." } # Pass back the unparsed argument list func_quote_for_eval ${1+"$@"} libtool_validate_options_result=$func_quote_for_eval_result } func_add_hook func_validate_options libtool_validate_options # Process options as early as possible so that --help and --version # can return quickly. func_options ${1+"$@"} eval set dummy "$func_options_result"; shift ## ----------- ## ## Main. ## ## ----------- ## magic='%%%MAGIC variable%%%' magic_exe='%%%MAGIC EXE variable%%%' # Global variables. extracted_archives= extracted_serial=0 # If this variable is set in any of the actions, the command in it # will be execed at the end. This prevents here-documents from being # left over by shells. exec_cmd= # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } # func_generated_by_libtool # True iff stdin has been generated by Libtool. This function is only # a basic sanity check; it will hardly flush out determined imposters. func_generated_by_libtool_p () { $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 } # func_lalib_p file # True iff FILE is a libtool '.la' library or '.lo' object file. # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_lalib_p () { test -f "$1" && $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p } # func_lalib_unsafe_p file # True iff FILE is a libtool '.la' library or '.lo' object file. # This function implements the same check as func_lalib_p without # resorting to external programs. To this end, it redirects stdin and # closes it afterwards, without saving the original file descriptor. # As a safety measure, use it only where a negative result would be # fatal anyway. Works if 'file' does not exist. func_lalib_unsafe_p () { lalib_p=no if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then for lalib_p_l in 1 2 3 4 do read lalib_p_line case $lalib_p_line in \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; esac done exec 0<&5 5<&- fi test yes = "$lalib_p" } # func_ltwrapper_script_p file # True iff FILE is a libtool wrapper script # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_script_p () { test -f "$1" && $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p } # func_ltwrapper_executable_p file # True iff FILE is a libtool wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_executable_p () { func_ltwrapper_exec_suffix= case $1 in *.exe) ;; *) func_ltwrapper_exec_suffix=.exe ;; esac $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 } # func_ltwrapper_scriptname file # Assumes file is an ltwrapper_executable # uses $file to determine the appropriate filename for a # temporary ltwrapper_script. func_ltwrapper_scriptname () { func_dirname_and_basename "$1" "" "." func_stripname '' '.exe' "$func_basename_result" func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper } # func_ltwrapper_p file # True iff FILE is a libtool wrapper script or wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_p () { func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" } # func_execute_cmds commands fail_cmd # Execute tilde-delimited COMMANDS. # If FAIL_CMD is given, eval that upon failure. # FAIL_CMD may read-access the current command in variable CMD! func_execute_cmds () { $debug_cmd save_ifs=$IFS; IFS='~' for cmd in $1; do IFS=$sp$nl eval cmd=\"$cmd\" IFS=$save_ifs func_show_eval "$cmd" "${2-:}" done IFS=$save_ifs } # func_source file # Source FILE, adding directory component if necessary. # Note that it is not necessary on cygwin/mingw to append a dot to # FILE even if both FILE and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing # 'FILE.' does not work on cygwin managed mounts. func_source () { $debug_cmd case $1 in */* | *\\*) . "$1" ;; *) . "./$1" ;; esac } # func_resolve_sysroot PATH # Replace a leading = in PATH with a sysroot. Store the result into # func_resolve_sysroot_result func_resolve_sysroot () { func_resolve_sysroot_result=$1 case $func_resolve_sysroot_result in =*) func_stripname '=' '' "$func_resolve_sysroot_result" func_resolve_sysroot_result=$lt_sysroot$func_stripname_result ;; esac } # func_replace_sysroot PATH # If PATH begins with the sysroot, replace it with = and # store the result into func_replace_sysroot_result. func_replace_sysroot () { case $lt_sysroot:$1 in ?*:"$lt_sysroot"*) func_stripname "$lt_sysroot" '' "$1" func_replace_sysroot_result='='$func_stripname_result ;; *) # Including no sysroot. func_replace_sysroot_result=$1 ;; esac } # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { $debug_cmd if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case "$@ " in " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then func_echo "unable to infer tagged configuration" func_fatal_error "specify a tag with '--tag'" # else # func_verbose "using $tagname tagged configuration" fi ;; esac fi } # func_write_libtool_object output_name pic_name nonpic_name # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. func_write_libtool_object () { write_libobj=$1 if test yes = "$build_libtool_libs"; then write_lobj=\'$2\' else write_lobj=none fi if test yes = "$build_old_libs"; then write_oldobj=\'$3\' else write_oldobj=none fi $opt_dry_run || { cat >${write_libobj}T <<EOF # $write_libobj - a libtool object file # Generated by $PROGRAM (GNU $PACKAGE) $VERSION # # Please DO NOT delete this file! # It is necessary for linking the library. # Name of the PIC object. pic_object=$write_lobj # Name of the non-PIC object non_pic_object=$write_oldobj EOF $MV "${write_libobj}T" "$write_libobj" } } ################################################## # FILE NAME AND PATH CONVERSION HELPER FUNCTIONS # ################################################## # func_convert_core_file_wine_to_w32 ARG # Helper function used by file name conversion functions when $build is *nix, # and $host is mingw, cygwin, or some other w32 environment. Relies on a # correctly configured wine environment available, with the winepath program # in $build's $PATH. # # ARG is the $build file name to be converted to w32 format. # Result is available in $func_convert_core_file_wine_to_w32_result, and will # be empty on error (or when ARG is empty) func_convert_core_file_wine_to_w32 () { $debug_cmd func_convert_core_file_wine_to_w32_result=$1 if test -n "$1"; then # Unfortunately, winepath does not exit with a non-zero error code, so we # are forced to check the contents of stdout. On the other hand, if the # command is not found, the shell will set an exit code of 127 and print # *an error message* to stdout. So we must check for both error code of # zero AND non-empty stdout, which explains the odd construction: func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null` if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | $SED -e "$sed_naive_backslashify"` else func_convert_core_file_wine_to_w32_result= fi fi } # end: func_convert_core_file_wine_to_w32 # func_convert_core_path_wine_to_w32 ARG # Helper function used by path conversion functions when $build is *nix, and # $host is mingw, cygwin, or some other w32 environment. Relies on a correctly # configured wine environment available, with the winepath program in $build's # $PATH. Assumes ARG has no leading or trailing path separator characters. # # ARG is path to be converted from $build format to win32. # Result is available in $func_convert_core_path_wine_to_w32_result. # Unconvertible file (directory) names in ARG are skipped; if no directory names # are convertible, then the result may be empty. func_convert_core_path_wine_to_w32 () { $debug_cmd # unfortunately, winepath doesn't convert paths, only file names func_convert_core_path_wine_to_w32_result= if test -n "$1"; then oldIFS=$IFS IFS=: for func_convert_core_path_wine_to_w32_f in $1; do IFS=$oldIFS func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" if test -n "$func_convert_core_file_wine_to_w32_result"; then if test -z "$func_convert_core_path_wine_to_w32_result"; then func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result else func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" fi fi done IFS=$oldIFS fi } # end: func_convert_core_path_wine_to_w32 # func_cygpath ARGS... # Wrapper around calling the cygpath program via LT_CYGPATH. This is used when # when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) # $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or # (2), returns the Cygwin file name or path in func_cygpath_result (input # file name or path is assumed to be in w32 format, as previously converted # from $build's *nix or MSYS format). In case (3), returns the w32 file name # or path in func_cygpath_result (input file name or path is assumed to be in # Cygwin format). Returns an empty string on error. # # ARGS are passed to cygpath, with the last one being the file name or path to # be converted. # # Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH # environment variable; do not put it in $PATH. func_cygpath () { $debug_cmd if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` if test "$?" -ne 0; then # on failure, ensure result is empty func_cygpath_result= fi else func_cygpath_result= func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'" fi } #end: func_cygpath # func_convert_core_msys_to_w32 ARG # Convert file name or path ARG from MSYS format to w32 format. Return # result in func_convert_core_msys_to_w32_result. func_convert_core_msys_to_w32 () { $debug_cmd # awkward: cmd appends spaces to result func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"` } #end: func_convert_core_msys_to_w32 # func_convert_file_check ARG1 ARG2 # Verify that ARG1 (a file name in $build format) was converted to $host # format in ARG2. Otherwise, emit an error message, but continue (resetting # func_to_host_file_result to ARG1). func_convert_file_check () { $debug_cmd if test -z "$2" && test -n "$1"; then func_error "Could not determine host file name corresponding to" func_error " '$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback: func_to_host_file_result=$1 fi } # end func_convert_file_check # func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH # Verify that FROM_PATH (a path in $build format) was converted to $host # format in TO_PATH. Otherwise, emit an error message, but continue, resetting # func_to_host_file_result to a simplistic fallback value (see below). func_convert_path_check () { $debug_cmd if test -z "$4" && test -n "$3"; then func_error "Could not determine the host path corresponding to" func_error " '$3'" func_error "Continuing, but uninstalled executables may not work." # Fallback. This is a deliberately simplistic "conversion" and # should not be "improved". See libtool.info. if test "x$1" != "x$2"; then lt_replace_pathsep_chars="s|$1|$2|g" func_to_host_path_result=`echo "$3" | $SED -e "$lt_replace_pathsep_chars"` else func_to_host_path_result=$3 fi fi } # end func_convert_path_check # func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG # Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT # and appending REPL if ORIG matches BACKPAT. func_convert_path_front_back_pathsep () { $debug_cmd case $4 in $1 ) func_to_host_path_result=$3$func_to_host_path_result ;; esac case $4 in $2 ) func_append func_to_host_path_result "$3" ;; esac } # end func_convert_path_front_back_pathsep ################################################## # $build to $host FILE NAME CONVERSION FUNCTIONS # ################################################## # invoked via '$to_host_file_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # Result will be available in $func_to_host_file_result. # func_to_host_file ARG # Converts the file name ARG from $build format to $host format. Return result # in func_to_host_file_result. func_to_host_file () { $debug_cmd $to_host_file_cmd "$1" } # end func_to_host_file # func_to_tool_file ARG LAZY # converts the file name ARG from $build format to toolchain format. Return # result in func_to_tool_file_result. If the conversion in use is listed # in (the comma separated) LAZY, no conversion takes place. func_to_tool_file () { $debug_cmd case ,$2, in *,"$to_tool_file_cmd",*) func_to_tool_file_result=$1 ;; *) $to_tool_file_cmd "$1" func_to_tool_file_result=$func_to_host_file_result ;; esac } # end func_to_tool_file # func_convert_file_noop ARG # Copy ARG to func_to_host_file_result. func_convert_file_noop () { func_to_host_file_result=$1 } # end func_convert_file_noop # func_convert_file_msys_to_w32 ARG # Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_file_result. func_convert_file_msys_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_to_host_file_result=$func_convert_core_msys_to_w32_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_w32 # func_convert_file_cygwin_to_w32 ARG # Convert file name ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_file_cygwin_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then # because $build is cygwin, we call "the" cygpath in $PATH; no need to use # LT_CYGPATH in this case. func_to_host_file_result=`cygpath -m "$1"` fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_cygwin_to_w32 # func_convert_file_nix_to_w32 ARG # Convert file name ARG from *nix to w32 format. Requires a wine environment # and a working winepath. Returns result in func_to_host_file_result. func_convert_file_nix_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_file_wine_to_w32 "$1" func_to_host_file_result=$func_convert_core_file_wine_to_w32_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_w32 # func_convert_file_msys_to_cygwin ARG # Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_file_msys_to_cygwin () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_cygpath -u "$func_convert_core_msys_to_w32_result" func_to_host_file_result=$func_cygpath_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_cygwin # func_convert_file_nix_to_cygwin ARG # Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed # in a wine environment, working winepath, and LT_CYGPATH set. Returns result # in func_to_host_file_result. func_convert_file_nix_to_cygwin () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. func_convert_core_file_wine_to_w32 "$1" func_cygpath -u "$func_convert_core_file_wine_to_w32_result" func_to_host_file_result=$func_cygpath_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_cygwin ############################################# # $build to $host PATH CONVERSION FUNCTIONS # ############################################# # invoked via '$to_host_path_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # The result will be available in $func_to_host_path_result. # # Path separators are also converted from $build format to $host format. If # ARG begins or ends with a path separator character, it is preserved (but # converted to $host format) on output. # # All path conversion functions are named using the following convention: # file name conversion function : func_convert_file_X_to_Y () # path conversion function : func_convert_path_X_to_Y () # where, for any given $build/$host combination the 'X_to_Y' value is the # same. If conversion functions are added for new $build/$host combinations, # the two new functions must follow this pattern, or func_init_to_host_path_cmd # will break. # func_init_to_host_path_cmd # Ensures that function "pointer" variable $to_host_path_cmd is set to the # appropriate value, based on the value of $to_host_file_cmd. to_host_path_cmd= func_init_to_host_path_cmd () { $debug_cmd if test -z "$to_host_path_cmd"; then func_stripname 'func_convert_file_' '' "$to_host_file_cmd" to_host_path_cmd=func_convert_path_$func_stripname_result fi } # func_to_host_path ARG # Converts the path ARG from $build format to $host format. Return result # in func_to_host_path_result. func_to_host_path () { $debug_cmd func_init_to_host_path_cmd $to_host_path_cmd "$1" } # end func_to_host_path # func_convert_path_noop ARG # Copy ARG to func_to_host_path_result. func_convert_path_noop () { func_to_host_path_result=$1 } # end func_convert_path_noop # func_convert_path_msys_to_w32 ARG # Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_path_result. func_convert_path_msys_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # Remove leading and trailing path separator characters from ARG. MSYS # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; # and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result=$func_convert_core_msys_to_w32_result func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_msys_to_w32 # func_convert_path_cygwin_to_w32 ARG # Convert path ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_path_cygwin_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_cygwin_to_w32 # func_convert_path_nix_to_w32 ARG # Convert path ARG from *nix to w32 format. Requires a wine environment and # a working winepath. Returns result in func_to_host_file_result. func_convert_path_nix_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result=$func_convert_core_path_wine_to_w32_result func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_nix_to_w32 # func_convert_path_msys_to_cygwin ARG # Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_path_msys_to_cygwin () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_msys_to_w32_result" func_to_host_path_result=$func_cygpath_result func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_msys_to_cygwin # func_convert_path_nix_to_cygwin ARG # Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a # a wine environment, working winepath, and LT_CYGPATH set. Returns result in # func_to_host_file_result. func_convert_path_nix_to_cygwin () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # Remove leading and trailing path separator characters from # ARG. msys behavior is inconsistent here, cygpath turns them # into '.;' and ';.', and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" func_to_host_path_result=$func_cygpath_result func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_nix_to_cygwin # func_dll_def_p FILE # True iff FILE is a Windows DLL '.def' file. # Keep in sync with _LT_DLL_DEF_P in libtool.m4 func_dll_def_p () { $debug_cmd func_dll_def_p_tmp=`$SED -n \ -e 's/^[ ]*//' \ -e '/^\(;.*\)*$/d' \ -e 's/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p' \ -e q \ "$1"` test DEF = "$func_dll_def_p_tmp" } # func_mode_compile arg... func_mode_compile () { $debug_cmd # Get the compilation command and the source file. base_compile= srcfile=$nonopt # always keep a non-empty value in "srcfile" suppress_opt=yes suppress_output= arg_mode=normal libobj= later= pie_flag= for arg do case $arg_mode in arg ) # do not "continue". Instead, add this to base_compile lastarg=$arg arg_mode=normal ;; target ) libobj=$arg arg_mode=normal continue ;; normal ) # Accept any command-line options. case $arg in -o) test -n "$libobj" && \ func_fatal_error "you cannot specify '-o' more than once" arg_mode=target continue ;; -pie | -fpie | -fPIE) func_append pie_flag " $arg" continue ;; -shared | -static | -prefer-pic | -prefer-non-pic) func_append later " $arg" continue ;; -no-suppress) suppress_opt=no continue ;; -Xcompiler) arg_mode=arg # the next one goes into the "base_compile" arg list continue # The current "srcfile" will either be retained or ;; # replaced later. I would guess that would be a bug. -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result lastarg= save_ifs=$IFS; IFS=, for arg in $args; do IFS=$save_ifs func_append_quoted lastarg "$arg" done IFS=$save_ifs func_stripname ' ' '' "$lastarg" lastarg=$func_stripname_result # Add the arguments to base_compile. func_append base_compile " $lastarg" continue ;; *) # Accept the current argument as the source file. # The previous "srcfile" becomes the current argument. # lastarg=$srcfile srcfile=$arg ;; esac # case $arg ;; esac # case $arg_mode # Aesthetically quote the previous argument. func_append_quoted base_compile "$lastarg" done # for arg case $arg_mode in arg) func_fatal_error "you must specify an argument for -Xcompile" ;; target) func_fatal_error "you must specify a target with '-o'" ;; *) # Get the name of the library object. test -z "$libobj" && { func_basename "$srcfile" libobj=$func_basename_result } ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo case $libobj in *.[cCFSifmso] | \ *.ada | *.adb | *.ads | *.asm | \ *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) func_xform "$libobj" libobj=$func_xform_result ;; esac case $libobj in *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; *) func_fatal_error "cannot determine name of library object from '$libobj'" ;; esac func_infer_tag $base_compile for arg in $later; do case $arg in -shared) test yes = "$build_libtool_libs" \ || func_fatal_configuration "cannot build a shared library" build_old_libs=no continue ;; -static) build_libtool_libs=no build_old_libs=yes continue ;; -prefer-pic) pic_mode=yes continue ;; -prefer-non-pic) pic_mode=no continue ;; esac done func_quote_for_eval "$libobj" test "X$libobj" != "X$func_quote_for_eval_result" \ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ && func_warning "libobj name '$libobj' may not contain shell special characters." func_dirname_and_basename "$obj" "/" "" objname=$func_basename_result xdir=$func_dirname_result lobj=$xdir$objdir/$objname test -z "$base_compile" && \ func_fatal_help "you must specify a compilation command" # Delete any leftover library objects. if test yes = "$build_old_libs"; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" fi # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2* | cegcc*) pic_mode=default ;; esac if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test no = "$compiler_c_o"; then output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext lockfile=$output_obj.lock else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test yes = "$need_locks"; then until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done elif test warn = "$need_locks"; then if test -f "$lockfile"; then $ECHO "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi func_append removelist " $output_obj" $ECHO "$srcfile" > "$lockfile" fi $opt_dry_run || $RM $removelist func_append removelist " $lockfile" trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 srcfile=$func_to_tool_file_result func_quote_for_eval "$srcfile" qsrcfile=$func_quote_for_eval_result # Only build a PIC object if we are building libtool libraries. if test yes = "$build_libtool_libs"; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile if test no != "$pic_mode"; then command="$base_compile $qsrcfile $pic_flag" else # Don't build PIC code command="$base_compile $qsrcfile" fi func_mkdir_p "$xdir$objdir" if test -z "$output_obj"; then # Place PIC objects in $objdir func_append command " -o $lobj" fi func_show_eval_locale "$command" \ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' if test warn = "$need_locks" && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then func_show_eval '$MV "$output_obj" "$lobj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi # Allow error messages only from the first compilation. if test yes = "$suppress_opt"; then suppress_output=' >/dev/null 2>&1' fi fi # Only build a position-dependent object if we build old libraries. if test yes = "$build_old_libs"; then if test yes != "$pic_mode"; then # Don't build PIC code command="$base_compile $qsrcfile$pie_flag" else command="$base_compile $qsrcfile $pic_flag" fi if test yes = "$compiler_c_o"; then func_append command " -o $obj" fi # Suppress compiler output if we already did a PIC compilation. func_append command "$suppress_output" func_show_eval_locale "$command" \ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' if test warn = "$need_locks" && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then func_show_eval '$MV "$output_obj" "$obj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi fi $opt_dry_run || { func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" # Unlock the critical section if it was locked if test no != "$need_locks"; then removelist=$lockfile $RM "$lockfile" fi } exit $EXIT_SUCCESS } $opt_help || { test compile = "$opt_mode" && func_mode_compile ${1+"$@"} } func_mode_help () { # We need to display help for each of the modes. case $opt_mode in "") # Generic help is extracted from the usage comments # at the start of this file. func_help ;; clean) $ECHO \ "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $ECHO \ "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -no-suppress do not suppress compiler output for multiple passes -prefer-pic try to build PIC objects only -prefer-non-pic try to build non-PIC objects only -shared do not build a '.o' file suitable for static linking -static only build a '.o' file suitable for static linking -Wc,FLAG pass FLAG directly to the compiler COMPILE-COMMAND is a command to be used in creating a 'standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix '.c' with the library object suffix, '.lo'." ;; execute) $ECHO \ "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to '-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $ECHO \ "Usage: $progname [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the '--dry-run' option if you just want to see what would be executed." ;; install) $ECHO \ "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the 'install' or 'cp' program. The following components of INSTALL-COMMAND are treated specially: -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $ECHO \ "Usage: $progname [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -bindir BINDIR specify path to binaries directory (for systems where libraries must be found in the PATH setting at runtime) -dlopen FILE '-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE use a list of object files found in FILE to specify objects -os2dllname NAME force a short DLL name on OS/2 (no effect on other OSes) -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -shared only do dynamic linking of libtool libraries -shrext SUFFIX override the standard shared library file extension -static do not do any dynamic linking of uninstalled libtool libraries -static-libtool-libs do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] -weak LIBNAME declare that the target provides the LIBNAME interface -Wc,FLAG -Xcompiler FLAG pass linker-specific FLAG directly to the compiler -Wl,FLAG -Xlinker FLAG pass linker-specific FLAG directly to the linker -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) All other options (arguments beginning with '-') are ignored. Every other argument is treated as a filename. Files ending in '.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in '.la', then a libtool library is created, only library objects ('.lo' files) may be specified, and '-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created using 'ar' and 'ranlib', or on Windows using 'lib'. If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $ECHO \ "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) func_fatal_help "invalid operation mode '$opt_mode'" ;; esac echo $ECHO "Try '$progname --help' for more information about other modes." } # Now that we've collected a possible --mode arg, show help if necessary if $opt_help; then if test : = "$opt_help"; then func_mode_help else { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do func_mode_help done } | $SED -n '1p; 2,$s/^Usage:/ or: /p' { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do echo func_mode_help done } | $SED '1d /^When reporting/,/^Report/{ H d } $x /information about other modes/d /more detailed .*MODE/d s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' fi exit $? fi # func_mode_execute arg... func_mode_execute () { $debug_cmd # The first argument is the command name. cmd=$nonopt test -z "$cmd" && \ func_fatal_help "you must specify a COMMAND" # Handle -dlopen flags immediately. for file in $opt_dlopen; do test -f "$file" \ || func_fatal_help "'$file' is not a file" dir= case $file in *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "'$lib' is not a valid libtool archive" # Read the libtool library. dlname= library_names= func_source "$file" # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && \ func_warning "'$file' was not linked with '-export-dynamic'" continue fi func_dirname "$file" "" "." dir=$func_dirname_result if test -f "$dir/$objdir/$dlname"; then func_append dir "/$objdir" else if test ! -f "$dir/$dlname"; then func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'" fi fi ;; *.lo) # Just add the directory containing the .lo file. func_dirname "$file" "" "." dir=$func_dirname_result ;; *) func_warning "'-dlopen' is ignored for non-libtool libraries and objects" continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir=$absdir # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic=$magic # Check if any of the arguments is a wrapper script. args= for file do case $file in -* | *.la | *.lo ) ;; *) # Do a test to see if this is really a libtool program. if func_ltwrapper_script_p "$file"; then func_source "$file" # Transform arg to wrapped name. file=$progdir/$program elif func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" func_source "$func_ltwrapper_scriptname_result" # Transform arg to wrapped name. file=$progdir/$program fi ;; esac # Quote arguments (to preserve shell metacharacters). func_append_quoted args "$file" done if $opt_dry_run; then # Display what would be done. if test -n "$shlibpath_var"; then eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" echo "export $shlibpath_var" fi $ECHO "$cmd$args" exit $EXIT_SUCCESS else if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved environment variables for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${save_$lt_var+set}\" = set; then $lt_var=\$save_$lt_var; export $lt_var else $lt_unset $lt_var fi" done # Now prepare to actually exec the command. exec_cmd=\$cmd$args fi } test execute = "$opt_mode" && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { $debug_cmd libs= libdirs= admincmds= for opt in "$nonopt" ${1+"$@"} do if test -d "$opt"; then func_append libdirs " $opt" elif test -f "$opt"; then if func_lalib_unsafe_p "$opt"; then func_append libs " $opt" else func_warning "'$opt' is not a valid libtool archive" fi else func_fatal_error "invalid argument '$opt'" fi done if test -n "$libs"; then if test -n "$lt_sysroot"; then sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" else sysroot_cmd= fi # Remove sysroot references if $opt_dry_run; then for lib in $libs; do echo "removing references to $lt_sysroot and '=' prefixes from $lib" done else tmpdir=`func_mktempdir` for lib in $libs; do $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ > $tmpdir/tmp-la mv -f $tmpdir/tmp-la $lib done ${RM}r "$tmpdir" fi fi if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. func_execute_cmds "$finish_cmds" 'admincmds="$admincmds '"$cmd"'"' fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $opt_dry_run || eval "$cmds" || func_append admincmds " $cmds" fi done fi # Exit here if they wanted silent mode. $opt_quiet && exit $EXIT_SUCCESS if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then echo "----------------------------------------------------------------------" echo "Libraries have been installed in:" for libdir in $libdirs; do $ECHO " $libdir" done echo echo "If you ever happen to want to link against installed libraries" echo "in a given directory, LIBDIR, you must either use libtool, and" echo "specify the full pathname of the library, or use the '-LLIBDIR'" echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then echo " - add LIBDIR to the '$shlibpath_var' environment variable" echo " during execution" fi if test -n "$runpath_var"; then echo " - add LIBDIR to the '$runpath_var' environment variable" echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" $ECHO " - use the '$flag' linker flag" fi if test -n "$admincmds"; then $ECHO " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then echo " - have your system administrator add LIBDIR to '/etc/ld.so.conf'" fi echo echo "See any operating system documentation about shared libraries for" case $host in solaris2.[6789]|solaris2.1[0-9]) echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" echo "pages." ;; *) echo "more information, such as the ld(1) and ld.so(8) manual pages." ;; esac echo "----------------------------------------------------------------------" fi exit $EXIT_SUCCESS } test finish = "$opt_mode" && func_mode_finish ${1+"$@"} # func_mode_install arg... func_mode_install () { $debug_cmd # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" || # Allow the use of GNU shtool's install command. case $nonopt in *shtool*) :;; *) false;; esac then # Aesthetically quote it. func_quote_for_eval "$nonopt" install_prog="$func_quote_for_eval_result " arg=$1 shift else install_prog= arg=$nonopt fi # The real first argument should be the name of the installation program. # Aesthetically quote it. func_quote_for_eval "$arg" func_append install_prog "$func_quote_for_eval_result" install_shared_prog=$install_prog case " $install_prog " in *[\\\ /]cp\ *) install_cp=: ;; *) install_cp=false ;; esac # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=false stripme= no_mode=: for arg do arg2= if test -n "$dest"; then func_append files " $dest" dest=$arg continue fi case $arg in -d) isdir=: ;; -f) if $install_cp; then :; else prev=$arg fi ;; -g | -m | -o) prev=$arg ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then if test X-m = "X$prev" && test -n "$install_override_mode"; then arg2=$install_override_mode no_mode=false fi prev= else dest=$arg continue fi ;; esac # Aesthetically quote the argument. func_quote_for_eval "$arg" func_append install_prog " $func_quote_for_eval_result" if test -n "$arg2"; then func_quote_for_eval "$arg2" fi func_append install_shared_prog " $func_quote_for_eval_result" done test -z "$install_prog" && \ func_fatal_help "you must specify an install program" test -n "$prev" && \ func_fatal_help "the '$prev' option requires an argument" if test -n "$install_override_mode" && $no_mode; then if $install_cp; then :; else func_quote_for_eval "$install_override_mode" func_append install_shared_prog " -m $func_quote_for_eval_result" fi fi if test -z "$files"; then if test -z "$dest"; then func_fatal_help "no file or destination specified" else func_fatal_help "you must specify a destination" fi fi # Strip any trailing slash from the destination. func_stripname '' '/' "$dest" dest=$func_stripname_result # Check to see that the destination is a directory. test -d "$dest" && isdir=: if $isdir; then destdir=$dest destname= else func_dirname_and_basename "$dest" "" "." destdir=$func_dirname_result destname=$func_basename_result # Not a directory, so check to see that there is only one file specified. set dummy $files; shift test "$#" -gt 1 && \ func_fatal_help "'$dest' is not a directory" fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) func_fatal_help "'$destdir' must be an absolute directory name" ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic=$magic staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. func_append staticlibs " $file" ;; *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "'$file' is not a valid libtool archive" library_names= old_library= relink_command= func_source "$file" # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) func_append current_libdirs " $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) func_append future_libdirs " $libdir" ;; esac fi func_dirname "$file" "/" "" dir=$func_dirname_result func_append dir "$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. test "$inst_prefix_dir" = "$destdir" && \ func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir" if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` fi func_warning "relinking '$file'" func_show_eval "$relink_command" \ 'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"' fi # See the names of the shared library. set dummy $library_names; shift if test -n "$1"; then realname=$1 shift srcname=$realname test -n "$relink_command" && srcname=${realname}T # Install the shared library and build the symlinks. func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 'exit $?' tstripme=$stripme case $host_os in cygwin* | mingw* | pw32* | cegcc*) case $realname in *.dll.a) tstripme= ;; esac ;; os2*) case $realname in *_dll.a) tstripme= ;; esac ;; esac if test -n "$tstripme" && test -n "$striplib"; then func_show_eval "$striplib $destdir/$realname" 'exit $?' fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. # Try 'ln -sf' first, because the 'ln' binary might depend on # the symlink we replace! Solaris /bin/ln does not understand -f, # so we also need to try rm && ln -s. for linkname do test "$linkname" != "$realname" \ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" done fi # Do each command in the postinstall commands. lib=$destdir/$realname func_execute_cmds "$postinstall_cmds" 'exit $?' fi # Install the pseudo-library for information purposes. func_basename "$file" name=$func_basename_result instname=$dir/${name}i func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' # Maybe install the static library, too. test -n "$old_library" && func_append staticlibs " $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile=$destdir/$destname else func_basename "$file" destfile=$func_basename_result destfile=$destdir/$destfile fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) func_lo2o "$destfile" staticdest=$func_lo2o_result ;; *.$objext) staticdest=$destfile destfile= ;; *) func_fatal_help "cannot copy a libtool object to '$destfile'" ;; esac # Install the libtool object if requested. test -n "$destfile" && \ func_show_eval "$install_prog $file $destfile" 'exit $?' # Install the old object if enabled. if test yes = "$build_old_libs"; then # Deduce the name of the old-style object file. func_lo2o "$file" staticobj=$func_lo2o_result func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' fi exit $EXIT_SUCCESS ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile=$destdir/$destname else func_basename "$file" destfile=$func_basename_result destfile=$destdir/$destfile fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install stripped_ext= case $file in *.exe) if test ! -f "$file"; then func_stripname '' '.exe' "$file" file=$func_stripname_result stripped_ext=.exe fi ;; esac # Do a test to see if this is really a libtool program. case $host in *cygwin* | *mingw*) if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" wrapper=$func_ltwrapper_scriptname_result else func_stripname '' '.exe' "$file" wrapper=$func_stripname_result fi ;; *) wrapper=$file ;; esac if func_ltwrapper_script_p "$wrapper"; then notinst_deplibs= relink_command= func_source "$wrapper" # Check the variables that should have been set. test -z "$generated_by_libtool_version" && \ func_fatal_error "invalid libtool wrapper script '$wrapper'" finalize=: for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then func_source "$lib" fi libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'` if test -n "$libdir" && test ! -f "$libfile"; then func_warning "'$lib' has not been installed in '$libdir'" finalize=false fi done relink_command= func_source "$wrapper" outputname= if test no = "$fast_install" && test -n "$relink_command"; then $opt_dry_run || { if $finalize; then tmpdir=`func_mktempdir` func_basename "$file$stripped_ext" file=$func_basename_result outputname=$tmpdir/$file # Replace the output file specification. relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` $opt_quiet || { func_quote_for_expand "$relink_command" eval "func_echo $func_quote_for_expand_result" } if eval "$relink_command"; then : else func_error "error: relink '$file' with the above command before installing it" $opt_dry_run || ${RM}r "$tmpdir" continue fi file=$outputname else func_warning "cannot relink '$file'" fi } else # Install the binary that we compiled earlier. file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyway case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) func_stripname '' '.exe' "$destfile" destfile=$func_stripname_result ;; esac ;; esac func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' $opt_dry_run || if test -n "$outputname"; then ${RM}r "$tmpdir" fi ;; esac done for file in $staticlibs; do func_basename "$file" name=$func_basename_result # Set up the ranlib parameters. oldlib=$destdir/$name func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result func_show_eval "$install_prog \$file \$oldlib" 'exit $?' if test -n "$stripme" && test -n "$old_striplib"; then func_show_eval "$old_striplib $tool_oldlib" 'exit $?' fi # Do each command in the postinstall commands. func_execute_cmds "$old_postinstall_cmds" 'exit $?' done test -n "$future_libdirs" && \ func_warning "remember to run '$progname --finish$future_libdirs'" if test -n "$current_libdirs"; then # Maybe just do a dry run. $opt_dry_run && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi } test install = "$opt_mode" && func_mode_install ${1+"$@"} # func_generate_dlsyms outputname originator pic_p # Extract symbols from dlprefiles and create ${outputname}S.o with # a dlpreopen symbol table. func_generate_dlsyms () { $debug_cmd my_outputname=$1 my_originator=$2 my_pic_p=${3-false} my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'` my_dlsyms= if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then if test -n "$NM" && test -n "$global_symbol_pipe"; then my_dlsyms=${my_outputname}S.c else func_error "not configured to extract global symbols from dlpreopened files" fi fi if test -n "$my_dlsyms"; then case $my_dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist=$output_objdir/$my_outputname.nm func_show_eval "$RM $nlist ${nlist}S ${nlist}T" # Parse the name list into a source file. func_verbose "creating $output_objdir/$my_dlsyms" $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ /* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */ /* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */ #ifdef __cplusplus extern \"C\" { #endif #if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) #pragma GCC diagnostic ignored \"-Wstrict-prototypes\" #endif /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) /* External symbol declarations for the compiler. */\ " if test yes = "$dlself"; then func_verbose "generating symbol list for '$output'" $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` for progfile in $progfiles; do func_to_tool_file "$progfile" func_convert_file_msys_to_w32 func_verbose "extracting global C symbols from '$func_to_tool_file_result'" $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $opt_dry_run || { eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi if test -n "$export_symbols_regex"; then $opt_dry_run || { eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols=$output_objdir/$outputname.exp $opt_dry_run || { $RM $export_symbols eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ;; esac } else $opt_dry_run || { eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; esac } fi fi for dlprefile in $dlprefiles; do func_verbose "extracting global C symbols from '$dlprefile'" func_basename "$dlprefile" name=$func_basename_result case $host in *cygwin* | *mingw* | *cegcc* ) # if an import library, we need to obtain dlname if func_win32_import_lib_p "$dlprefile"; then func_tr_sh "$dlprefile" eval "curr_lafile=\$libfile_$func_tr_sh_result" dlprefile_dlbasename= if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then # Use subshell, to avoid clobbering current variable values dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` if test -n "$dlprefile_dlname"; then func_basename "$dlprefile_dlname" dlprefile_dlbasename=$func_basename_result else # no lafile. user explicitly requested -dlpreopen <import library>. $sharedlib_from_linklib_cmd "$dlprefile" dlprefile_dlbasename=$sharedlib_from_linklib_result fi fi $opt_dry_run || { if test -n "$dlprefile_dlbasename"; then eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' else func_warning "Could not compute DLL name from $name" eval '$ECHO ": $name " >> "$nlist"' fi func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" } else # not an import lib $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } fi ;; *) $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } ;; esac done $opt_dry_run || { # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $MV "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if $GREP -v "^: " < "$nlist" | if sort -k 3 </dev/null >/dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else $GREP -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' else echo '/* NONE */' >> "$output_objdir/$my_dlsyms" fi func_show_eval '$RM "${nlist}I"' if test -n "$global_symbol_to_import"; then eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I' fi echo >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ typedef struct { const char *name; void *address; } lt_dlsymlist; extern LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[];\ " if test -s "$nlist"I; then echo >> "$output_objdir/$my_dlsyms" "\ static void lt_syminit(void) { LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols; for (; symbol->name; ++symbol) {" $SED 's/.*/ if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms" echo >> "$output_objdir/$my_dlsyms" "\ } }" fi echo >> "$output_objdir/$my_dlsyms" "\ LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = { {\"$my_originator\", (void *) 0}," if test -s "$nlist"I; then echo >> "$output_objdir/$my_dlsyms" "\ {\"@INIT@\", (void *) <_syminit}," fi case $need_lib_prefix in no) eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; *) eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; esac echo >> "$output_objdir/$my_dlsyms" "\ {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_${my_prefix}_LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " } # !$opt_dry_run pic_flag_for_symtable= case "$compile_command " in *" -static "*) ;; *) case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; *-*-hpux*) pic_flag_for_symtable=" $pic_flag" ;; *) $my_pic_p && pic_flag_for_symtable=" $pic_flag" ;; esac ;; esac symtab_cflags= for arg in $LTCFLAGS; do case $arg in -pie | -fpie | -fPIE) ;; *) func_append symtab_cflags " $arg" ;; esac done # Now compile the dynamic symbol file. func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' # Clean up the generated files. func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"' # Transform the symbol file into the correct name. symfileobj=$output_objdir/${my_outputname}S.$objext case $host in *cygwin* | *mingw* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` else compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` fi ;; *) compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` ;; esac ;; *) func_fatal_error "unknown suffix for '$my_dlsyms'" ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` fi } # func_cygming_gnu_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is a GNU/binutils-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_gnu_implib_p () { $debug_cmd func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` test -n "$func_cygming_gnu_implib_tmp" } # func_cygming_ms_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is an MS-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_ms_implib_p () { $debug_cmd func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` test -n "$func_cygming_ms_implib_tmp" } # func_win32_libid arg # return the library type of file 'arg' # # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. # Despite the name, also deal with 64 bit binaries. func_win32_libid () { $debug_cmd win32_libid_type=unknown win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then case $nm_interface in "MS dumpbin") if func_cygming_ms_implib_p "$1" || func_cygming_gnu_implib_p "$1" then win32_nmres=import else win32_nmres= fi ;; *) func_to_tool_file "$1" func_convert_file_msys_to_w32 win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | $SED -n -e ' 1,100{ / I /{ s|.*|import| p q } }'` ;; esac case $win32_nmres in import*) win32_libid_type="x86 archive import";; *) win32_libid_type="x86 archive static";; esac fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $ECHO "$win32_libid_type" } # func_cygming_dll_for_implib ARG # # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib () { $debug_cmd sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` } # func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs # # The is the core of a fallback implementation of a # platform-specific function to extract the name of the # DLL associated with the specified import library LIBNAME. # # SECTION_NAME is either .idata$6 or .idata$7, depending # on the platform and compiler that created the implib. # # Echos the name of the DLL associated with the # specified import library. func_cygming_dll_for_implib_fallback_core () { $debug_cmd match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` $OBJDUMP -s --section "$1" "$2" 2>/dev/null | $SED '/^Contents of section '"$match_literal"':/{ # Place marker at beginning of archive member dllname section s/.*/====MARK====/ p d } # These lines can sometimes be longer than 43 characters, but # are always uninteresting /:[ ]*file format pe[i]\{,1\}-/d /^In archive [^:]*:/d # Ensure marker is printed /^====MARK====/p # Remove all lines with less than 43 characters /^.\{43\}/!d # From remaining lines, remove first 43 characters s/^.\{43\}//' | $SED -n ' # Join marker and all lines until next marker into a single line /^====MARK====/ b para H $ b para b :para x s/\n//g # Remove the marker s/^====MARK====// # Remove trailing dots and whitespace s/[\. \t]*$// # Print /./p' | # we now have a list, one entry per line, of the stringified # contents of the appropriate section of all members of the # archive that possess that section. Heuristic: eliminate # all those that have a first or second character that is # a '.' (that is, objdump's representation of an unprintable # character.) This should work for all archives with less than # 0x302f exports -- but will fail for DLLs whose name actually # begins with a literal '.' or a single character followed by # a '.'. # # Of those that remain, print the first one. $SED -e '/^\./d;/^.\./d;q' } # func_cygming_dll_for_implib_fallback ARG # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # # This fallback implementation is for use when $DLLTOOL # does not support the --identify-strict option. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib_fallback () { $debug_cmd if func_cygming_gnu_implib_p "$1"; then # binutils import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` elif func_cygming_ms_implib_p "$1"; then # ms-generated import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` else # unknown sharedlib_from_linklib_result= fi } # func_extract_an_archive dir oldlib func_extract_an_archive () { $debug_cmd f_ex_an_ar_dir=$1; shift f_ex_an_ar_oldlib=$1 if test yes = "$lock_old_archive_extraction"; then lockfile=$f_ex_an_ar_oldlib.lock until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done fi func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 'stat=$?; rm -f "$lockfile"; exit $stat' if test yes = "$lock_old_archive_extraction"; then $opt_dry_run || rm -f "$lockfile" fi if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then : else func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" fi } # func_extract_archives gentop oldlib ... func_extract_archives () { $debug_cmd my_gentop=$1; shift my_oldlibs=${1+"$@"} my_oldobjs= my_xlib= my_xabs= my_xdir= for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac func_basename "$my_xlib" my_xlib=$func_basename_result my_xlib_u=$my_xlib while :; do case " $extracted_archives " in *" $my_xlib_u "*) func_arith $extracted_serial + 1 extracted_serial=$func_arith_result my_xlib_u=lt$extracted_serial-$my_xlib ;; *) break ;; esac done extracted_archives="$extracted_archives $my_xlib_u" my_xdir=$my_gentop/$my_xlib_u func_mkdir_p "$my_xdir" case $host in *-darwin*) func_verbose "Extracting $my_xabs" # Do not bother doing anything if just a dry run $opt_dry_run || { darwin_orig_dir=`pwd` cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` func_basename "$darwin_archive" darwin_base_archive=$func_basename_result darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` if test -n "$darwin_arches"; then darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" for darwin_arch in $darwin_arches; do func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch" $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive" cd "unfat-$$/$darwin_base_archive-$darwin_arch" func_extract_an_archive "`pwd`" "$darwin_base_archive" cd "$darwin_curdir" $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" done # $darwin_arches ## Okay now we've a bunch of thin objects, gotta fatten them up :) darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` $LIPO -create -output "$darwin_file" $darwin_files done # $darwin_filelist $RM -rf unfat-$$ cd "$darwin_orig_dir" else cd $darwin_orig_dir func_extract_an_archive "$my_xdir" "$my_xabs" fi # $darwin_arches } # !$opt_dry_run ;; *) func_extract_an_archive "$my_xdir" "$my_xabs" ;; esac my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` done func_extract_archives_result=$my_oldobjs } # func_emit_wrapper [arg=no] # # Emit a libtool wrapper script on stdout. # Don't directly open a file because we may want to # incorporate the script contents within a cygwin/mingw # wrapper executable. Must ONLY be called from within # func_mode_link because it depends on a number of variables # set therein. # # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR # variable will take. If 'yes', then the emitted script # will assume that the directory where it is stored is # the $objdir directory. This is a cygwin/mingw-specific # behavior. func_emit_wrapper () { func_emit_wrapper_arg1=${1-no} $ECHO "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM (GNU $PACKAGE) $VERSION # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='$sed_quote_subst' # Be Bourne compatible if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variables: generated_by_libtool_version='$macro_version' notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$ECHO are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then file=\"\$0\"" qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` $ECHO "\ # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } ECHO=\"$qECHO\" fi # Very basic option parsing. These options are (a) specific to # the libtool wrapper, (b) are identical between the wrapper # /script/ and the wrapper /executable/ that is used only on # windows platforms, and (c) all begin with the string "--lt-" # (application programs are unlikely to have options that match # this pattern). # # There are only two supported options: --lt-debug and # --lt-dump-script. There is, deliberately, no --lt-help. # # The first argument to this parsing function should be the # script's $0 value, followed by "$@". lt_option_debug= func_parse_lt_options () { lt_script_arg0=\$0 shift for lt_opt do case \"\$lt_opt\" in --lt-debug) lt_option_debug=1 ;; --lt-dump-script) lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` cat \"\$lt_dump_D/\$lt_dump_F\" exit 0 ;; --lt-*) \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 exit 1 ;; esac done # Print the debug banner immediately: if test -n \"\$lt_option_debug\"; then echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2 fi } # Used when --lt-debug. Prints its arguments to stdout # (redirection is the responsibility of the caller) func_lt_dump_args () { lt_dump_args_N=1; for lt_arg do \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\" lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` done } # Core function for launching the target application func_exec_program_core () { " case $host in # Backslashes separate directories on plain windows *-*-mingw | *-*-os2* | *-cegcc*) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} " ;; *) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir/\$program\" \${1+\"\$@\"} " ;; esac $ECHO "\ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 exit 1 } # A function to encapsulate launching the target application # Strips options in the --lt-* namespace from \$@ and # launches target application with the remaining arguments. func_exec_program () { case \" \$* \" in *\\ --lt-*) for lt_wr_arg do case \$lt_wr_arg in --lt-*) ;; *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; esac shift done ;; esac func_exec_program_core \${1+\"\$@\"} } # Parse options func_parse_lt_options \"\$0\" \${1+\"\$@\"} # Find the directory that this script lives in. thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` done # Usually 'no', except on cygwin/mingw when embedded into # the cwrapper. WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then # special case for '.' if test \"\$thisdir\" = \".\"; then thisdir=\`pwd\` fi # remove .libs from thisdir case \"\$thisdir\" in *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; $objdir ) thisdir=. ;; esac fi # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test yes = "$fast_install"; then $ECHO "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $MKDIR \"\$progdir\" else $RM \"\$progdir/\$file\" fi" $ECHO "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else \$ECHO \"\$relink_command_output\" >&2 $RM \"\$progdir/\$file\" exit 1 fi fi $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $RM \"\$progdir/\$program\"; $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } $RM \"\$progdir/\$file\" fi" else $ECHO "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi $ECHO "\ if test -f \"\$progdir/\$program\"; then" # fixup the dll searchpath if we need to. # # Fix the DLL searchpath if we need to. Do this before prepending # to shlibpath, because on Windows, both are PATH and uninstalled # libraries must come first. if test -n "$dllsearchpath"; then $ECHO "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi # Export our shlibpath_var if we have one. if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $ECHO "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` export $shlibpath_var " fi $ECHO "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. func_exec_program \${1+\"\$@\"} fi else # The program doesn't exist. \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " } # func_emit_cwrapperexe_src # emit the source code for a wrapper executable on stdout # Must ONLY be called from within func_mode_link because # it depends on a number of variable set therein. func_emit_cwrapperexe_src () { cat <<EOF /* $cwrappersource - temporary wrapper executable for $objdir/$outputname Generated by $PROGRAM (GNU $PACKAGE) $VERSION The $output program cannot be directly executed until all the libtool libraries that it depends on are installed. This wrapper executable should never be moved out of the build directory. If it is, it will not operate correctly. */ EOF cat <<"EOF" #ifdef _MSC_VER # define _CRT_SECURE_NO_DEPRECATE 1 #endif #include <stdio.h> #include <stdlib.h> #ifdef _MSC_VER # include <direct.h> # include <process.h> # include <io.h> #else # include <unistd.h> # include <stdint.h> # ifdef __CYGWIN__ # include <io.h> # endif #endif #include <malloc.h> #include <stdarg.h> #include <assert.h> #include <string.h> #include <ctype.h> #include <errno.h> #include <fcntl.h> #include <sys/stat.h> #define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) /* declarations of non-ANSI functions */ #if defined __MINGW32__ # ifdef __STRICT_ANSI__ int _putenv (const char *); # endif #elif defined __CYGWIN__ # ifdef __STRICT_ANSI__ char *realpath (const char *, char *); int putenv (char *); int setenv (const char *, const char *, int); # endif /* #elif defined other_platform || defined ... */ #endif /* portability defines, excluding path handling macros */ #if defined _MSC_VER # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv # define S_IXUSR _S_IEXEC #elif defined __MINGW32__ # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv #elif defined __CYGWIN__ # define HAVE_SETENV # define FOPEN_WB "wb" /* #elif defined other platforms ... */ #endif #if defined PATH_MAX # define LT_PATHMAX PATH_MAX #elif defined MAXPATHLEN # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef S_IXOTH # define S_IXOTH 0 #endif #ifndef S_IXGRP # define S_IXGRP 0 #endif /* path handling portability macros */ #ifndef DIR_SEPARATOR # define DIR_SEPARATOR '/' # define PATH_SEPARATOR ':' #endif #if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \ defined __OS2__ # define HAVE_DOS_BASED_FILE_SYSTEM # define FOPEN_WB "wb" # ifndef DIR_SEPARATOR_2 # define DIR_SEPARATOR_2 '\\' # endif # ifndef PATH_SEPARATOR_2 # define PATH_SEPARATOR_2 ';' # endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #ifndef PATH_SEPARATOR_2 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) #else /* PATH_SEPARATOR_2 */ # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) #endif /* PATH_SEPARATOR_2 */ #ifndef FOPEN_WB # define FOPEN_WB "w" #endif #ifndef _O_BINARY # define _O_BINARY 0 #endif #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free (stale); stale = 0; } \ } while (0) #if defined LT_DEBUGWRAPPER static int lt_debug = 1; #else static int lt_debug = 0; #endif const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ void *xmalloc (size_t num); char *xstrdup (const char *string); const char *base_name (const char *name); char *find_executable (const char *wrapper); char *chase_symlinks (const char *pathspec); int make_executable (const char *path); int check_executable (const char *path); char *strendzap (char *str, const char *pat); void lt_debugprintf (const char *file, int line, const char *fmt, ...); void lt_fatal (const char *file, int line, const char *message, ...); static const char *nonnull (const char *s); static const char *nonempty (const char *s); void lt_setenv (const char *name, const char *value); char *lt_extend_str (const char *orig_value, const char *add, int to_end); void lt_update_exe_path (const char *name, const char *value); void lt_update_lib_path (const char *name, const char *value); char **prepare_spawn (char **argv); void lt_dump_script (FILE *f); EOF cat <<EOF #if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5) # define externally_visible volatile #else # define externally_visible __attribute__((externally_visible)) volatile #endif externally_visible const char * MAGIC_EXE = "$magic_exe"; const char * LIB_PATH_VARNAME = "$shlibpath_var"; EOF if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then func_to_host_path "$temp_rpath" cat <<EOF const char * LIB_PATH_VALUE = "$func_to_host_path_result"; EOF else cat <<"EOF" const char * LIB_PATH_VALUE = ""; EOF fi if test -n "$dllsearchpath"; then func_to_host_path "$dllsearchpath:" cat <<EOF const char * EXE_PATH_VARNAME = "PATH"; const char * EXE_PATH_VALUE = "$func_to_host_path_result"; EOF else cat <<"EOF" const char * EXE_PATH_VARNAME = ""; const char * EXE_PATH_VALUE = ""; EOF fi if test yes = "$fast_install"; then cat <<EOF const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */ EOF else cat <<EOF const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */ EOF fi cat <<"EOF" #define LTWRAPPER_OPTION_PREFIX "--lt-" static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX; static const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script"; static const char *debug_opt = LTWRAPPER_OPTION_PREFIX "debug"; int main (int argc, char *argv[]) { char **newargz; int newargc; char *tmp_pathspec; char *actual_cwrapper_path; char *actual_cwrapper_name; char *target_name; char *lt_argv_zero; int rval = 127; int i; program_name = (char *) xstrdup (base_name (argv[0])); newargz = XMALLOC (char *, (size_t) argc + 1); /* very simple arg parsing; don't want to rely on getopt * also, copy all non cwrapper options to newargz, except * argz[0], which is handled differently */ newargc=0; for (i = 1; i < argc; i++) { if (STREQ (argv[i], dumpscript_opt)) { EOF case $host in *mingw* | *cygwin* ) # make stdout use "unix" line endings echo " setmode(1,_O_BINARY);" ;; esac cat <<"EOF" lt_dump_script (stdout); return 0; } if (STREQ (argv[i], debug_opt)) { lt_debug = 1; continue; } if (STREQ (argv[i], ltwrapper_option_prefix)) { /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX namespace, but it is not one of the ones we know about and have already dealt with, above (inluding dump-script), then report an error. Otherwise, targets might begin to believe they are allowed to use options in the LTWRAPPER_OPTION_PREFIX namespace. The first time any user complains about this, we'll need to make LTWRAPPER_OPTION_PREFIX a configure-time option or a configure.ac-settable value. */ lt_fatal (__FILE__, __LINE__, "unrecognized %s option: '%s'", ltwrapper_option_prefix, argv[i]); } /* otherwise ... */ newargz[++newargc] = xstrdup (argv[i]); } newargz[++newargc] = NULL; EOF cat <<EOF /* The GNU banner must be the first non-error debug message */ lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE) $VERSION\n"); EOF cat <<"EOF" lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]); lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name); tmp_pathspec = find_executable (argv[0]); if (tmp_pathspec == NULL) lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]); lt_debugprintf (__FILE__, __LINE__, "(main) found exe (before symlink chase) at: %s\n", tmp_pathspec); actual_cwrapper_path = chase_symlinks (tmp_pathspec); lt_debugprintf (__FILE__, __LINE__, "(main) found exe (after symlink chase) at: %s\n", actual_cwrapper_path); XFREE (tmp_pathspec); actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path)); strendzap (actual_cwrapper_path, actual_cwrapper_name); /* wrapper name transforms */ strendzap (actual_cwrapper_name, ".exe"); tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1); XFREE (actual_cwrapper_name); actual_cwrapper_name = tmp_pathspec; tmp_pathspec = 0; /* target_name transforms -- use actual target program name; might have lt- prefix */ target_name = xstrdup (base_name (TARGET_PROGRAM_NAME)); strendzap (target_name, ".exe"); tmp_pathspec = lt_extend_str (target_name, ".exe", 1); XFREE (target_name); target_name = tmp_pathspec; tmp_pathspec = 0; lt_debugprintf (__FILE__, __LINE__, "(main) libtool target name: %s\n", target_name); EOF cat <<EOF newargz[0] = XMALLOC (char, (strlen (actual_cwrapper_path) + strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1)); strcpy (newargz[0], actual_cwrapper_path); strcat (newargz[0], "$objdir"); strcat (newargz[0], "/"); EOF cat <<"EOF" /* stop here, and copy so we don't have to do this twice */ tmp_pathspec = xstrdup (newargz[0]); /* do NOT want the lt- prefix here, so use actual_cwrapper_name */ strcat (newargz[0], actual_cwrapper_name); /* DO want the lt- prefix here if it exists, so use target_name */ lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1); XFREE (tmp_pathspec); tmp_pathspec = NULL; EOF case $host_os in mingw*) cat <<"EOF" { char* p; while ((p = strchr (newargz[0], '\\')) != NULL) { *p = '/'; } while ((p = strchr (lt_argv_zero, '\\')) != NULL) { *p = '/'; } } EOF ;; esac cat <<"EOF" XFREE (target_name); XFREE (actual_cwrapper_path); XFREE (actual_cwrapper_name); lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */ lt_setenv ("DUALCASE", "1"); /* for MSK sh */ /* Update the DLL searchpath. EXE_PATH_VALUE ($dllsearchpath) must be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath) because on Windows, both *_VARNAMEs are PATH but uninstalled libraries must come first. */ lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE); lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE); lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n", nonnull (lt_argv_zero)); for (i = 0; i < newargc; i++) { lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n", i, nonnull (newargz[i])); } EOF case $host_os in mingw*) cat <<"EOF" /* execv doesn't actually work on mingw as expected on unix */ newargz = prepare_spawn (newargz); rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); if (rval == -1) { /* failed to start process */ lt_debugprintf (__FILE__, __LINE__, "(main) failed to launch target \"%s\": %s\n", lt_argv_zero, nonnull (strerror (errno))); return 127; } return rval; EOF ;; *) cat <<"EOF" execv (lt_argv_zero, newargz); return rval; /* =127, but avoids unused variable warning */ EOF ;; esac cat <<"EOF" } void * xmalloc (size_t num) { void *p = (void *) malloc (num); if (!p) lt_fatal (__FILE__, __LINE__, "memory exhausted"); return p; } char * xstrdup (const char *string) { return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL; } const char * base_name (const char *name) { const char *base; #if defined HAVE_DOS_BASED_FILE_SYSTEM /* Skip over the disk name in MSDOS pathnames. */ if (isalpha ((unsigned char) name[0]) && name[1] == ':') name += 2; #endif for (base = name; *name; name++) if (IS_DIR_SEPARATOR (*name)) base = name + 1; return base; } int check_executable (const char *path) { struct stat st; lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n", nonempty (path)); if ((!path) || (!*path)) return 0; if ((stat (path, &st) >= 0) && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) return 1; else return 0; } int make_executable (const char *path) { int rval = 0; struct stat st; lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", nonempty (path)); if ((!path) || (!*path)) return 0; if (stat (path, &st) >= 0) { rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); } return rval; } /* Searches for the full path of the wrapper. Returns newly allocated full path name if found, NULL otherwise Does not chase symlinks, even on platforms that support them. */ char * find_executable (const char *wrapper) { int has_slash = 0; const char *p; const char *p_next; /* static buffer for getcwd */ char tmp[LT_PATHMAX + 1]; size_t tmp_len; char *concat_name; lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", nonempty (wrapper)); if ((wrapper == NULL) || (*wrapper == '\0')) return NULL; /* Absolute path? */ #if defined HAVE_DOS_BASED_FILE_SYSTEM if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } else { #endif if (IS_DIR_SEPARATOR (wrapper[0])) { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } #if defined HAVE_DOS_BASED_FILE_SYSTEM } #endif for (p = wrapper; *p; p++) if (*p == '/') { has_slash = 1; break; } if (!has_slash) { /* no slashes; search PATH */ const char *path = getenv ("PATH"); if (path != NULL) { for (p = path; *p; p = p_next) { const char *q; size_t p_len; for (q = p; *q; q++) if (IS_PATH_SEPARATOR (*q)) break; p_len = (size_t) (q - p); p_next = (*q == '\0' ? q : q + 1); if (p_len == 0) { /* empty path: current directory */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); } else { concat_name = XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, p, p_len); concat_name[p_len] = '/'; strcpy (concat_name + p_len + 1, wrapper); } if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } } /* not found in PATH; assume curdir */ } /* Relative path | not found in path: prepend cwd */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); return NULL; } char * chase_symlinks (const char *pathspec) { #ifndef S_ISLNK return xstrdup (pathspec); #else char buf[LT_PATHMAX]; struct stat s; char *tmp_pathspec = xstrdup (pathspec); char *p; int has_symlinks = 0; while (strlen (tmp_pathspec) && !has_symlinks) { lt_debugprintf (__FILE__, __LINE__, "checking path component for symlinks: %s\n", tmp_pathspec); if (lstat (tmp_pathspec, &s) == 0) { if (S_ISLNK (s.st_mode) != 0) { has_symlinks = 1; break; } /* search backwards for last DIR_SEPARATOR */ p = tmp_pathspec + strlen (tmp_pathspec) - 1; while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) p--; if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) { /* no more DIR_SEPARATORS left */ break; } *p = '\0'; } else { lt_fatal (__FILE__, __LINE__, "error accessing file \"%s\": %s", tmp_pathspec, nonnull (strerror (errno))); } } XFREE (tmp_pathspec); if (!has_symlinks) { return xstrdup (pathspec); } tmp_pathspec = realpath (pathspec, buf); if (tmp_pathspec == 0) { lt_fatal (__FILE__, __LINE__, "could not follow symlinks for %s", pathspec); } return xstrdup (tmp_pathspec); #endif } char * strendzap (char *str, const char *pat) { size_t len, patlen; assert (str != NULL); assert (pat != NULL); len = strlen (str); patlen = strlen (pat); if (patlen <= len) { str += len - patlen; if (STREQ (str, pat)) *str = '\0'; } return str; } void lt_debugprintf (const char *file, int line, const char *fmt, ...) { va_list args; if (lt_debug) { (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); va_start (args, fmt); (void) vfprintf (stderr, fmt, args); va_end (args); } } static void lt_error_core (int exit_status, const char *file, int line, const char *mode, const char *message, va_list ap) { fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *file, int line, const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); va_end (ap); } static const char * nonnull (const char *s) { return s ? s : "(null)"; } static const char * nonempty (const char *s) { return (s && !*s) ? "(empty)" : nonnull (s); } void lt_setenv (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_setenv) setting '%s' to '%s'\n", nonnull (name), nonnull (value)); { #ifdef HAVE_SETENV /* always make a copy, for consistency with !HAVE_SETENV */ char *str = xstrdup (value); setenv (name, str, 1); #else size_t len = strlen (name) + 1 + strlen (value) + 1; char *str = XMALLOC (char, len); sprintf (str, "%s=%s", name, value); if (putenv (str) != EXIT_SUCCESS) { XFREE (str); } #endif } } char * lt_extend_str (const char *orig_value, const char *add, int to_end) { char *new_value; if (orig_value && *orig_value) { size_t orig_value_len = strlen (orig_value); size_t add_len = strlen (add); new_value = XMALLOC (char, add_len + orig_value_len + 1); if (to_end) { strcpy (new_value, orig_value); strcpy (new_value + orig_value_len, add); } else { strcpy (new_value, add); strcpy (new_value + add_len, orig_value); } } else { new_value = xstrdup (add); } return new_value; } void lt_update_exe_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); /* some systems can't cope with a ':'-terminated path #' */ size_t len = strlen (new_value); while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1])) { new_value[--len] = '\0'; } lt_setenv (name, new_value); XFREE (new_value); } } void lt_update_lib_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); lt_setenv (name, new_value); XFREE (new_value); } } EOF case $host_os in mingw*) cat <<"EOF" /* Prepares an argument vector before calling spawn(). Note that spawn() does not by itself call the command interpreter (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&v); v.dwPlatformId == VER_PLATFORM_WIN32_NT; }) ? "cmd.exe" : "command.com"). Instead it simply concatenates the arguments, separated by ' ', and calls CreateProcess(). We must quote the arguments since Win32 CreateProcess() interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a special way: - Space and tab are interpreted as delimiters. They are not treated as delimiters if they are surrounded by double quotes: "...". - Unescaped double quotes are removed from the input. Their only effect is that within double quotes, space and tab are treated like normal characters. - Backslashes not followed by double quotes are not special. - But 2*n+1 backslashes followed by a double quote become n backslashes followed by a double quote (n >= 0): \" -> " \\\" -> \" \\\\\" -> \\" */ #define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" #define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" char ** prepare_spawn (char **argv) { size_t argc; char **new_argv; size_t i; /* Count number of arguments. */ for (argc = 0; argv[argc] != NULL; argc++) ; /* Allocate new argument vector. */ new_argv = XMALLOC (char *, argc + 1); /* Put quoted arguments into the new argument vector. */ for (i = 0; i < argc; i++) { const char *string = argv[i]; if (string[0] == '\0') new_argv[i] = xstrdup ("\"\""); else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) { int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); size_t length; unsigned int backslashes; const char *s; char *quoted_string; char *p; length = 0; backslashes = 0; if (quote_around) length++; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') length += backslashes + 1; length++; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) length += backslashes + 1; quoted_string = XMALLOC (char, length + 1); p = quoted_string; backslashes = 0; if (quote_around) *p++ = '"'; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') { unsigned int j; for (j = backslashes + 1; j > 0; j--) *p++ = '\\'; } *p++ = c; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) { unsigned int j; for (j = backslashes; j > 0; j--) *p++ = '\\'; *p++ = '"'; } *p = '\0'; new_argv[i] = quoted_string; } else new_argv[i] = (char *) string; } new_argv[argc] = NULL; return new_argv; } EOF ;; esac cat <<"EOF" void lt_dump_script (FILE* f) { EOF func_emit_wrapper yes | $SED -n -e ' s/^\(.\{79\}\)\(..*\)/\1\ \2/ h s/\([\\"]\)/\\\1/g s/$/\\n/ s/\([^\n]*\).*/ fputs ("\1", f);/p g D' cat <<"EOF" } EOF } # end: func_emit_cwrapperexe_src # func_win32_import_lib_p ARG # True if ARG is an import lib, as indicated by $file_magic_cmd func_win32_import_lib_p () { $debug_cmd case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in *import*) : ;; *) false ;; esac } # func_suncc_cstd_abi # !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!! # Several compiler flags select an ABI that is incompatible with the # Cstd library. Avoid specifying it if any are in CXXFLAGS. func_suncc_cstd_abi () { $debug_cmd case " $compile_command " in *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*) suncc_use_cstd_abi=no ;; *) suncc_use_cstd_abi=yes ;; esac } # func_mode_link arg... func_mode_link () { $debug_cmd case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # what system we are compiling for in order to pass an extra # flag for every libtool invocation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying # to make a dll that has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. allow_undefined=yes ;; *) allow_undefined=yes ;; esac libtool_args=$nonopt base_compile="$nonopt $@" compile_command=$nonopt finalize_command=$nonopt compile_rpath= finalize_rpath= compile_shlibpath= finalize_shlibpath= convenience= old_convenience= deplibs= old_deplibs= compiler_flags= linker_flags= dllsearchpath= lib_search_path=`pwd` inst_prefix_dir= new_inherited_linker_flags= avoid_version=no bindir= dlfiles= dlprefiles= dlself=no export_dynamic=no export_symbols= export_symbols_regex= generated= libobjs= ltlibs= module=no no_install=no objs= os2dllname= non_pic_objects= precious_files_regex= prefer_static_libs=no preload=false prev= prevarg= release= rpath= xrpath= perm_rpath= temp_rpath= thread_safe=no vinfo= vinfo_number=no weak_libs= single_module=$wl-single_module func_infer_tag $base_compile # We need to know -static, to get the right output filenames. for arg do case $arg in -shared) test yes != "$build_libtool_libs" \ && func_fatal_configuration "cannot build a shared library" build_old_libs=no break ;; -all-static | -static | -static-libtool-libs) case $arg in -all-static) if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then func_warning "complete static linking is impossible in this configuration" fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; -static) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=built ;; -static-libtool-libs) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; esac build_libtool_libs=no build_old_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg=$1 shift func_quote_for_eval "$arg" qarg=$func_quote_for_eval_unquoted_result func_append libtool_args " $func_quote_for_eval_result" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) func_append compile_command " @OUTPUT@" func_append finalize_command " @OUTPUT@" ;; esac case $prev in bindir) bindir=$arg prev= continue ;; dlfiles|dlprefiles) $preload || { # Add the symbol object into the linking commands. func_append compile_command " @SYMFILE@" func_append finalize_command " @SYMFILE@" preload=: } case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test no = "$dlself"; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test dlprefiles = "$prev"; then dlself=yes elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test dlfiles = "$prev"; then func_append dlfiles " $arg" else func_append dlprefiles " $arg" fi prev= continue ;; esac ;; expsyms) export_symbols=$arg test -f "$arg" \ || func_fatal_error "symbol file '$arg' does not exist" prev= continue ;; expsyms_regex) export_symbols_regex=$arg prev= continue ;; framework) case $host in *-*-darwin*) case "$deplibs " in *" $qarg.ltframework "*) ;; *) func_append deplibs " $qarg.ltframework" # this is fixed later ;; esac ;; esac prev= continue ;; inst_prefix) inst_prefix_dir=$arg prev= continue ;; mllvm) # Clang does not use LLVM to link, so we can simply discard any # '-mllvm $arg' options when doing the link step. prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat "$save_arg"` do # func_append moreargs " $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test none = "$pic_object" && test none = "$non_pic_object"; then func_fatal_error "cannot find name of object for '$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result if test none != "$pic_object"; then # Prepend the subdirectory the object is found in. pic_object=$xdir$pic_object if test dlfiles = "$prev"; then if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test dlprefiles = "$prev"; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg=$pic_object fi # Non-PIC object. if test none != "$non_pic_object"; then # Prepend the subdirectory the object is found in. non_pic_object=$xdir$non_pic_object # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test none = "$pic_object"; then arg=$non_pic_object fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object=$pic_object func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "'$arg' is not a valid libtool object" fi fi done else func_fatal_error "link input file '$arg' does not exist" fi arg=$save_arg prev= continue ;; os2dllname) os2dllname=$arg prev= continue ;; precious_regex) precious_files_regex=$arg prev= continue ;; release) release=-$arg prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac if test rpath = "$prev"; then case "$rpath " in *" $arg "*) ;; *) func_append rpath " $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) func_append xrpath " $arg" ;; esac fi prev= continue ;; shrext) shrext_cmds=$arg prev= continue ;; weak) func_append weak_libs " $arg" prev= continue ;; xcclinker) func_append linker_flags " $qarg" func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xcompiler) func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xlinker) func_append linker_flags " $qarg" func_append compiler_flags " $wl$qarg" prev= func_append compile_command " $wl$qarg" func_append finalize_command " $wl$qarg" continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg=$arg case $arg in -all-static) if test -n "$link_static_flag"; then # See comment for -static flag below, for more details. func_append compile_command " $link_static_flag" func_append finalize_command " $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. func_fatal_error "'-allow-undefined' must not be used because it is the default" ;; -avoid-version) avoid_version=yes continue ;; -bindir) prev=bindir continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then func_fatal_error "more than one -exported-symbols argument is not allowed" fi if test X-export-symbols = "X$arg"; then prev=expsyms else prev=expsyms_regex fi continue ;; -framework) prev=framework continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) func_append compile_command " $arg" func_append finalize_command " $arg" ;; esac continue ;; -L*) func_stripname "-L" '' "$arg" if test -z "$func_stripname_result"; then if test "$#" -gt 0; then func_fatal_error "require no space between '-L' and '$1'" else func_fatal_error "need path for '-L' option" fi fi func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` test -z "$absdir" && \ func_fatal_error "cannot determine absolute directory name of '$dir'" dir=$absdir ;; esac case "$deplibs " in *" -L$dir "* | *" $arg "*) # Will only happen for absolute or sysroot arguments ;; *) # Preserve sysroot, but never include relative directories case $dir in [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; *) func_append deplibs " -L$dir" ;; esac func_append lib_search_path " $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; ::) dllsearchpath=$dir;; *) func_append dllsearchpath ":$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac continue ;; -l*) if test X-lc = "X$arg" || test X-lm = "X$arg"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) # These systems don't actually have a C or math library (as such) continue ;; *-*-os2*) # These systems don't actually have a C library (as such) test X-lc = "X$arg" && continue ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) # Do not include libc due to us having libc/libc_r. test X-lc = "X$arg" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework func_append deplibs " System.ltframework" continue ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype test X-lc = "X$arg" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work test X-lc = "X$arg" && continue ;; esac elif test X-lc_r = "X$arg"; then case $host in *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi func_append deplibs " $arg" continue ;; -mllvm) prev=mllvm continue ;; -module) module=yes continue ;; # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. # Darwin uses the -arch flag to determine output architecture. -model|-arch|-isysroot|--sysroot) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" prev=xcompiler continue ;; -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case "$new_inherited_linker_flags " in *" $arg "*) ;; * ) func_append new_inherited_linker_flags " $arg" ;; esac continue ;; -multi_module) single_module=$wl-multi_module continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. func_warning "'-no-install' is ignored for $host" func_warning "assuming '-no-fast-install' instead" fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -objectlist) prev=objectlist continue ;; -os2dllname) prev=os2dllname continue ;; -o) prev=output ;; -precious-files-regex) prev=precious_regex continue ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) func_stripname '-R' '' "$arg" dir=$func_stripname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; =*) func_stripname '=' '' "$dir" dir=$lt_sysroot$func_stripname_result ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac continue ;; -shared) # The effects of -shared are defined in a previous loop. continue ;; -shrext) prev=shrext continue ;; -static | -static-libtool-libs) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -version-number) prev=vinfo vinfo_number=yes continue ;; -weak) prev=weak continue ;; -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result arg= save_ifs=$IFS; IFS=, for flag in $args; do IFS=$save_ifs func_quote_for_eval "$flag" func_append arg " $func_quote_for_eval_result" func_append compiler_flags " $func_quote_for_eval_result" done IFS=$save_ifs func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Wl,*) func_stripname '-Wl,' '' "$arg" args=$func_stripname_result arg= save_ifs=$IFS; IFS=, for flag in $args; do IFS=$save_ifs func_quote_for_eval "$flag" func_append arg " $wl$func_quote_for_eval_result" func_append compiler_flags " $wl$func_quote_for_eval_result" func_append linker_flags " $func_quote_for_eval_result" done IFS=$save_ifs func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; -XCClinker) prev=xcclinker continue ;; # -msg_* for osf cc -msg_*) func_quote_for_eval "$arg" arg=$func_quote_for_eval_result ;; # Flags to be passed through unchanged, with rationale: # -64, -mips[0-9] enable 64-bit mode for the SGI compiler # -r[0-9][0-9]* specify processor for the SGI compiler # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler # +DA*, +DD* enable 64-bit mode for the HP compiler # -q* compiler args for the IBM compiler # -m*, -t[45]*, -txscale* architecture-specific flags for GCC # -F/path path to uninstalled frameworks, gcc on darwin # -p, -pg, --coverage, -fprofile-* profiling flags for GCC # -fstack-protector* stack protector flags for GCC # @file GCC response files # -tp=* Portland pgcc target processor selection # --sysroot=* for sysroot support # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization # -specs=* GCC specs files # -stdlib=* select c++ std lib with clang # -fsanitize=* Clang/GCC memory and address sanitizer # -fuse-ld=* Linker select flags for GCC -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \ -specs=*|-fsanitize=*|-fuse-ld=*) func_quote_for_eval "$arg" arg=$func_quote_for_eval_result func_append compile_command " $arg" func_append finalize_command " $arg" func_append compiler_flags " $arg" continue ;; -Z*) if test os2 = "`expr $host : '.*\(os2\)'`"; then # OS/2 uses -Zxxx to specify OS/2-specific options compiler_flags="$compiler_flags $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case $arg in -Zlinker | -Zstack) prev=xcompiler ;; esac continue else # Otherwise treat like 'Some other compiler flag' below func_quote_for_eval "$arg" arg=$func_quote_for_eval_result fi ;; # Some other compiler flag. -* | +*) func_quote_for_eval "$arg" arg=$func_quote_for_eval_result ;; *.$objext) # A standard object. func_append objs " $arg" ;; *.lo) # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test none = "$pic_object" && test none = "$non_pic_object"; then func_fatal_error "cannot find name of object for '$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result test none = "$pic_object" || { # Prepend the subdirectory the object is found in. pic_object=$xdir$pic_object if test dlfiles = "$prev"; then if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test dlprefiles = "$prev"; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg=$pic_object } # Non-PIC object. if test none != "$non_pic_object"; then # Prepend the subdirectory the object is found in. non_pic_object=$xdir$non_pic_object # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test none = "$pic_object"; then arg=$non_pic_object fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object=$pic_object func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "'$arg' is not a valid libtool object" fi fi ;; *.$libext) # An archive. func_append deplibs " $arg" func_append old_deplibs " $arg" continue ;; *.la) # A libtool-controlled library. func_resolve_sysroot "$arg" if test dlfiles = "$prev"; then # This library was specified with -dlopen. func_append dlfiles " $func_resolve_sysroot_result" prev= elif test dlprefiles = "$prev"; then # The library was specified with -dlpreopen. func_append dlprefiles " $func_resolve_sysroot_result" prev= else func_append deplibs " $func_resolve_sysroot_result" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. func_quote_for_eval "$arg" arg=$func_quote_for_eval_result ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then func_append compile_command " $arg" func_append finalize_command " $arg" fi done # argument parsing loop test -n "$prev" && \ func_fatal_help "the '$prevarg' option requires an argument" if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" func_append compile_command " $arg" func_append finalize_command " $arg" fi oldlibs= # calculate the name of the file, without its directory func_basename "$output" outputname=$func_basename_result libobjs_save=$libobjs if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" # Definition is injected by LT_CONFIG during libtool generation. func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH" func_dirname "$output" "/" "" output_objdir=$func_dirname_result$objdir func_to_tool_file "$output_objdir/" tool_output_objdir=$func_to_tool_file_result # Create the object directory. func_mkdir_p "$output_objdir" # Determine the type of output case $output in "") func_fatal_help "you must specify an output file" ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if $opt_preserve_dup_deps; then case "$libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append libs " $deplib" done if test lib = "$linkmode"; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps # $postdeps and mark them as special (i.e., whose duplicates are # not to be eliminated). pre_post_deps= if $opt_duplicate_compiler_generated_deps; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; esac func_append pre_post_deps " $pre_post_dep" done fi pre_post_deps= fi deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries notinst_path= # paths that contain not-installed libtool libraries case $linkmode in lib) passes="conv dlpreopen link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) func_fatal_help "libraries can '-dlopen' only libtool libraries: $file" ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=false newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do # The preopen pass in lib mode reverses $deplibs; put it back here # so that -L comes before libs that need it for instance... if test lib,link = "$linkmode,$pass"; then ## FIXME: Find the place where the list is rebuilt in the wrong ## order, and fix it there properly tmp_deplibs= for deplib in $deplibs; do tmp_deplibs="$deplib $tmp_deplibs" done deplibs=$tmp_deplibs fi if test lib,link = "$linkmode,$pass" || test prog,scan = "$linkmode,$pass"; then libs=$deplibs deplibs= fi if test prog = "$linkmode"; then case $pass in dlopen) libs=$dlfiles ;; dlpreopen) libs=$dlprefiles ;; link) libs="$deplibs %DEPLIBS%" test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" ;; esac fi if test lib,dlpreopen = "$linkmode,$pass"; then # Collect and forward deplibs of preopened libtool libs for lib in $dlprefiles; do # Ignore non-libtool-libs dependency_libs= func_resolve_sysroot "$lib" case $lib in *.la) func_source "$func_resolve_sysroot_result" ;; esac # Collect preopened libtool deplibs, except any this library # has declared as weak libs for deplib in $dependency_libs; do func_basename "$deplib" deplib_base=$func_basename_result case " $weak_libs " in *" $deplib_base "*) ;; *) func_append deplibs " $deplib" ;; esac done done libs=$dlprefiles fi if test dlopen = "$pass"; then # Collect dlpreopened libraries save_deplibs=$deplibs deplibs= fi for deplib in $libs; do lib= found=false case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append compiler_flags " $deplib" if test lib = "$linkmode"; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -l*) if test lib != "$linkmode" && test prog != "$linkmode"; then func_warning "'-l' is ignored for archives/objects" continue fi func_stripname '-l' '' "$deplib" name=$func_stripname_result if test lib = "$linkmode"; then searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" else searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" fi for searchdir in $searchdirs; do for search_ext in .la $std_shrext .so .a; do # Search the libtool library lib=$searchdir/lib$name$search_ext if test -f "$lib"; then if test .la = "$search_ext"; then found=: else found=false fi break 2 fi done done if $found; then # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $deplib "*) if func_lalib_p "$lib"; then library_names= old_library= func_source "$lib" for l in $old_library $library_names; do ll=$l done if test "X$ll" = "X$old_library"; then # only static version available found=false func_dirname "$lib" "" "." ladir=$func_dirname_result lib=$ladir/$old_library if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" fi continue fi fi ;; *) ;; esac fi else # deplib doesn't seem to be a libtool library if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" fi continue fi ;; # -l *.ltframework) if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" if test lib = "$linkmode"; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test conv = "$pass" && continue newdependency_libs="$deplib $newdependency_libs" func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; prog) if test conv = "$pass"; then deplibs="$deplib $deplibs" continue fi if test scan = "$pass"; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; *) func_warning "'-L' is ignored for archives/objects" ;; esac # linkmode continue ;; # -L -R*) if test link = "$pass"; then func_stripname '-R' '' "$deplib" func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) func_resolve_sysroot "$deplib" lib=$func_resolve_sysroot_result ;; *.$libext) if test conv = "$pass"; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) # Linking convenience modules into shared libraries is allowed, # but linking other static libraries is non-portable. case " $dlpreconveniencelibs " in *" $deplib "*) ;; *) valid_a_lib=false case $deplibs_check_method in match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then valid_a_lib=: fi ;; pass_all) valid_a_lib=: ;; esac if $valid_a_lib; then echo $ECHO "*** Warning: Linking the shared library $output against the" $ECHO "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" else echo $ECHO "*** Warning: Trying to link with static lib archive $deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because the file extensions .$libext of this argument makes me believe" echo "*** that it is just a static archive that I should not use here." fi ;; esac continue ;; prog) if test link != "$pass"; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test conv = "$pass"; then deplibs="$deplib $deplibs" elif test prog = "$linkmode"; then if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then # If there is no dlopen support or we're linking statically, # we need to preload. func_append newdlprefiles " $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append newdlfiles " $deplib" fi fi continue ;; %DEPLIBS%) alldeplibs=: continue ;; esac # case $deplib $found || test -f "$lib" \ || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'" # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$lib" \ || func_fatal_error "'$lib' is not a valid libtool archive" func_dirname "$lib" "" "." ladir=$func_dirname_result dlname= dlopen= dlpreopen= libdir= library_names= old_library= inherited_linker_flags= # If the library was installed with an old release of libtool, # it will not redefine variables installed, or shouldnotlink installed=yes shouldnotlink=no avoidtemprpath= # Read the .la file func_source "$lib" # Convert "-framework foo" to "foo.ltframework" if test -n "$inherited_linker_flags"; then tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do case " $new_inherited_linker_flags " in *" $tmp_inherited_linker_flag "*) ;; *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; esac done fi dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` if test lib,link = "$linkmode,$pass" || test prog,scan = "$linkmode,$pass" || { test prog != "$linkmode" && test lib != "$linkmode"; }; then test -n "$dlopen" && func_append dlfiles " $dlopen" test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" fi if test conv = "$pass"; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then func_fatal_error "cannot find name of link library for '$lib'" fi # It is a libtool convenience library, so add in its objects. func_append convenience " $ladir/$objdir/$old_library" func_append old_convenience " $ladir/$objdir/$old_library" tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done elif test prog != "$linkmode" && test lib != "$linkmode"; then func_fatal_error "'$lib' is not a convenience library" fi continue fi # $pass = conv # Get the name of the library we link against. linklib= if test -n "$old_library" && { test yes = "$prefer_static_libs" || test built,no = "$prefer_static_libs,$installed"; }; then linklib=$old_library else for l in $old_library $library_names; do linklib=$l done fi if test -z "$linklib"; then func_fatal_error "cannot find name of link library for '$lib'" fi # This library was specified with -dlopen. if test dlopen = "$pass"; then test -z "$libdir" \ && func_fatal_error "cannot -dlopen a convenience library: '$lib'" if test -z "$dlname" || test yes != "$dlopen_support" || test no = "$build_libtool_libs" then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. func_append dlprefiles " $lib $dependency_libs" else func_append newdlfiles " $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then func_warning "cannot determine absolute directory name of '$ladir'" func_warning "passing it literally to the linker, although it might fail" abs_ladir=$ladir fi ;; esac func_basename "$lib" laname=$func_basename_result # Find the relevant object directory and library name. if test yes = "$installed"; then if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then func_warning "library '$lib' was moved." dir=$ladir absdir=$abs_ladir libdir=$abs_ladir else dir=$lt_sysroot$libdir absdir=$lt_sysroot$libdir fi test yes = "$hardcode_automatic" && avoidtemprpath=yes else if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then dir=$ladir absdir=$abs_ladir # Remove this search path later func_append notinst_path " $abs_ladir" else dir=$ladir/$objdir absdir=$abs_ladir/$objdir # Remove this search path later func_append notinst_path " $abs_ladir" fi fi # $installed = yes func_stripname 'lib' '.la' "$laname" name=$func_stripname_result # This library was specified with -dlpreopen. if test dlpreopen = "$pass"; then if test -z "$libdir" && test prog = "$linkmode"; then func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'" fi case $host in # special handling for platforms with PE-DLLs. *cygwin* | *mingw* | *cegcc* ) # Linker will automatically link against shared library if both # static and shared are present. Therefore, ensure we extract # symbols from the import library if a shared library is present # (otherwise, the dlopen module name will be incorrect). We do # this by putting the import library name into $newdlprefiles. # We recover the dlopen module name by 'saving' the la file # name in a special purpose variable, and (later) extracting the # dlname from the la file. if test -n "$dlname"; then func_tr_sh "$dir/$linklib" eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" func_append newdlprefiles " $dir/$linklib" else func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" fi ;; * ) # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then func_append newdlprefiles " $dir/$dlname" else func_append newdlprefiles " $dir/$linklib" fi ;; esac fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test lib = "$linkmode"; then deplibs="$dir/$old_library $deplibs" elif test prog,link = "$linkmode,$pass"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" # used for prog,scan pass fi continue fi if test prog = "$linkmode" && test link != "$pass"; then func_append newlib_search_path " $ladir" deplibs="$lib $deplibs" linkalldeplibs=false if test no != "$link_all_deplibs" || test -z "$library_names" || test no = "$build_libtool_libs"; then linkalldeplibs=: fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; esac # Need to link against all dependency_libs? if $linkalldeplibs; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done # for deplib continue fi # $linkmode = prog... if test prog,link = "$linkmode,$pass"; then if test -n "$library_names" && { { test no = "$prefer_static_libs" || test built,yes = "$prefer_static_libs,$installed"; } || test -z "$old_library"; }; then # We need to hardcode the library path if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then # Make sure the rpath contains only unique directories. case $temp_rpath: in *"$absdir:"*) ;; *) func_append temp_rpath "$absdir:" ;; esac fi # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi # $linkmode,$pass = prog,link... if $alldeplibs && { test pass_all = "$deplibs_check_method" || { test yes = "$build_libtool_libs" && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi fi link_static=no # Whether the deplib will be linked statically use_static_libs=$prefer_static_libs if test built = "$use_static_libs" && test yes = "$installed"; then use_static_libs=no fi if test -n "$library_names" && { test no = "$use_static_libs" || test -z "$old_library"; }; then case $host in *cygwin* | *mingw* | *cegcc* | *os2*) # No point in relinking DLLs because paths are not encoded func_append notinst_deplibs " $lib" need_relink=no ;; *) if test no = "$installed"; then func_append notinst_deplibs " $lib" need_relink=yes fi ;; esac # This is a shared library # Warn about portability, can't link against -module's on some # systems (darwin). Don't bleat about dlopened modules though! dlopenmodule= for dlpremoduletest in $dlprefiles; do if test "X$dlpremoduletest" = "X$lib"; then dlopenmodule=$dlpremoduletest break fi done if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then echo if test prog = "$linkmode"; then $ECHO "*** Warning: Linking the executable $output against the loadable module" else $ECHO "*** Warning: Linking the shared library $output against the loadable module" fi $ECHO "*** $linklib is not portable!" fi if test lib = "$linkmode" && test yes = "$hardcode_into_libs"; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names shift realname=$1 shift libname=`eval "\\$ECHO \"$libname_spec\""` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname=$dlname elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin* | mingw* | *cegcc* | *os2*) func_arith $current - $age major=$func_arith_result versuffix=-$major ;; esac eval soname=\"$soname_spec\" else soname=$realname fi # Make a new name for the extract_expsyms_cmds to use soroot=$soname func_basename "$soroot" soname=$func_basename_result func_stripname 'lib' '.dll' "$soname" newlib=libimp-$func_stripname_result.a # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else func_verbose "extracting exported symbol list from '$soname'" func_execute_cmds "$extract_expsyms_cmds" 'exit $?' fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else func_verbose "generating import library for '$soname'" func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" if test prog = "$linkmode" || test relink != "$opt_mode"; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test no = "$hardcode_direct"; then add=$dir/$linklib case $host in *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;; *-*-sysv4*uw2*) add_dir=-L$dir ;; *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ *-*-unixware7*) add_dir=-L$dir ;; *-*-darwin* ) # if the lib is a (non-dlopened) module then we cannot # link against it, someone is ignoring the earlier warnings if /usr/bin/file -L $add 2> /dev/null | $GREP ": [^:]* bundle" >/dev/null; then if test "X$dlopenmodule" != "X$lib"; then $ECHO "*** Warning: lib $linklib is a module, not a shared library" if test -z "$old_library"; then echo echo "*** And there doesn't seem to be a static archive available" echo "*** The link will probably fail, sorry" else add=$dir/$old_library fi elif test -n "$old_library"; then add=$dir/$old_library fi fi esac elif test no = "$hardcode_minus_L"; then case $host in *-*-sunos*) add_shlibpath=$dir ;; esac add_dir=-L$dir add=-l$name elif test no = "$hardcode_shlibpath_var"; then add_shlibpath=$dir add=-l$name else lib_linked=no fi ;; relink) if test yes = "$hardcode_direct" && test no = "$hardcode_direct_absolute"; then add=$dir/$linklib elif test yes = "$hardcode_minus_L"; then add_dir=-L$absdir # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add=-l$name elif test yes = "$hardcode_shlibpath_var"; then add_shlibpath=$dir add=-l$name else lib_linked=no fi ;; *) lib_linked=no ;; esac if test yes != "$lib_linked"; then func_fatal_configuration "unsupported hardcode properties" fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) func_append compile_shlibpath "$add_shlibpath:" ;; esac fi if test prog = "$linkmode"; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" if test yes != "$hardcode_direct" && test yes != "$hardcode_minus_L" && test yes = "$hardcode_shlibpath_var"; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac fi fi fi if test prog = "$linkmode" || test relink = "$opt_mode"; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test yes = "$hardcode_direct" && test no = "$hardcode_direct_absolute"; then add=$libdir/$linklib elif test yes = "$hardcode_minus_L"; then add_dir=-L$libdir add=-l$name elif test yes = "$hardcode_shlibpath_var"; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac add=-l$name elif test yes = "$hardcode_automatic"; then if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib"; then add=$inst_prefix_dir$libdir/$linklib else add=$libdir/$linklib fi else # We cannot seem to hardcode it, guess we'll fake it. add_dir=-L$libdir # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add=-l$name fi if test prog = "$linkmode"; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" fi fi elif test prog = "$linkmode"; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test unsupported != "$hardcode_direct"; then test -n "$old_library" && linklib=$old_library compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi elif test yes = "$build_libtool_libs"; then # Not a shared library if test pass_all != "$deplibs_check_method"; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. echo $ECHO "*** Warning: This system cannot link to static lib archive $lib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have." if test yes = "$module"; then echo "*** But as you try to build a module library, libtool will still create " echo "*** a static module, that should work as long as the dlopening application" echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using 'nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** 'nm' from GNU binutils and a full rebuild may help." fi if test no = "$build_old_libs"; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test lib = "$linkmode"; then if test -n "$dependency_libs" && { test yes != "$hardcode_into_libs" || test yes = "$build_old_libs" || test yes = "$link_static"; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) func_stripname '-R' '' "$libdir" temp_xrpath=$func_stripname_result case " $xrpath " in *" $temp_xrpath "*) ;; *) func_append xrpath " $temp_xrpath";; esac;; *) func_append temp_deplibs " $libdir";; esac done dependency_libs=$temp_deplibs fi func_append newlib_search_path " $absdir" # Link against this library test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result";; *) func_resolve_sysroot "$deplib" ;; esac if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $func_resolve_sysroot_result "*) func_append specialdeplibs " $func_resolve_sysroot_result" ;; esac fi func_append tmp_libs " $func_resolve_sysroot_result" done if test no != "$link_all_deplibs"; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do path= case $deplib in -L*) path=$deplib ;; *.la) func_resolve_sysroot "$deplib" deplib=$func_resolve_sysroot_result func_dirname "$deplib" "" "." dir=$func_dirname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then func_warning "cannot determine absolute directory name of '$dir'" absdir=$dir fi ;; esac if $GREP "^installed=no" $deplib > /dev/null; then case $host in *-*-darwin*) depdepl= eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names"; then for tmp in $deplibrary_names; do depdepl=$tmp done if test -f "$absdir/$objdir/$depdepl"; then depdepl=$absdir/$objdir/$depdepl darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` if test -z "$darwin_install_name"; then darwin_install_name=`$OTOOL64 -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` fi func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl" func_append linker_flags " -dylib_file $darwin_install_name:$depdepl" path= fi fi ;; *) path=-L$absdir/$objdir ;; esac else eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ func_fatal_error "'$deplib' is not a valid libtool archive" test "$absdir" != "$libdir" && \ func_warning "'$deplib' seems to be moved" path=-L$absdir fi ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$path $deplibs" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs if test link = "$pass"; then if test prog = "$linkmode"; then compile_deplibs="$new_inherited_linker_flags $compile_deplibs" finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" else compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` fi fi dependency_libs=$newdependency_libs if test dlpreopen = "$pass"; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test dlopen != "$pass"; then test conv = "$pass" || { # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; *) func_append lib_search_path " $dir" ;; esac done newlib_search_path= } if test prog,link = "$linkmode,$pass"; then vars="compile_deplibs finalize_deplibs" else vars=deplibs fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do # FIXME: Pedantically, this is the right thing to do, so # that some nasty dependency loop isn't accidentally # broken: #new_libs="$deplib $new_libs" # Pragmatically, this seems to cause very few problems in # practice: case $deplib in -L*) new_libs="$deplib $new_libs" ;; -R*) ;; *) # And here is the reason: when a library appears more # than once as an explicit dependence of a library, or # is implicitly linked in more than once by the # compiler, it is considered special, and multiple # occurrences thereof are not removed. Compare this # with having the same library being listed as a # dependency of multiple other libraries: in this case, # we know (pedantically, we assume) the library does not # need to be listed more than once, so we keep only the # last copy. This is not always right, but it is rare # enough that we require users that really mean to play # such unportable linking tricks to link the library # using -Wl,-lname, so that libtool does not consider it # for duplicate removal. case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) func_append tmp_libs " $deplib" ;; esac ;; *) func_append tmp_libs " $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi # Add Sun CC postdeps if required: test CXX = "$tagname" && { case $host_os in linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 func_suncc_cstd_abi if test no != "$suncc_use_cstd_abi"; then func_append postdeps ' -library=Cstd -library=Crun' fi ;; esac ;; solaris*) func_cc_basename "$CC" case $func_cc_basename_result in CC* | sunCC*) func_suncc_cstd_abi if test no != "$suncc_use_cstd_abi"; then func_append postdeps ' -library=Cstd -library=Crun' fi ;; esac ;; esac } # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= for i in $dependency_libs; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) i= ;; esac if test -n "$i"; then func_append tmp_libs " $i" fi done dependency_libs=$tmp_libs done # for pass if test prog = "$linkmode"; then dlfiles=$newdlfiles fi if test prog = "$linkmode" || test lib = "$linkmode"; then dlprefiles=$newdlprefiles fi case $linkmode in oldlib) if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then func_warning "'-dlopen' is ignored for archives" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "'-l' and '-L' are ignored for archives" ;; esac test -n "$rpath" && \ func_warning "'-rpath' is ignored for archives" test -n "$xrpath" && \ func_warning "'-R' is ignored for archives" test -n "$vinfo" && \ func_warning "'-version-info/-version-number' is ignored for archives" test -n "$release" && \ func_warning "'-release' is ignored for archives" test -n "$export_symbols$export_symbols_regex" && \ func_warning "'-export-symbols' is ignored for archives" # Now set the variables for building old libraries. build_libtool_libs=no oldlibs=$output func_append objs "$old_deplibs" ;; lib) # Make sure we only generate libraries of the form 'libNAME.la'. case $outputname in lib*) func_stripname 'lib' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" ;; *) test no = "$module" \ && func_fatal_help "libtool library '$output' must begin with 'lib'" if test no != "$need_lib_prefix"; then # Add the "lib" prefix for modules if required func_stripname '' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" else func_stripname '' '.la' "$outputname" libname=$func_stripname_result fi ;; esac if test -n "$objs"; then if test pass_all != "$deplibs_check_method"; then func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs" else echo $ECHO "*** Warning: Linking the shared library $output against the non-libtool" $ECHO "*** objects $objs is not portable!" func_append libobjs " $objs" fi fi test no = "$dlself" \ || func_warning "'-dlopen self' is ignored for libtool libraries" set dummy $rpath shift test 1 -lt "$#" \ && func_warning "ignoring multiple '-rpath's for a libtool library" install_libdir=$1 oldlibs= if test -z "$rpath"; then if test yes = "$build_libtool_libs"; then # Building a libtool convenience library. # Some compilers have problems with a '.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi test -n "$vinfo" && \ func_warning "'-version-info/-version-number' is ignored for convenience libraries" test -n "$release" && \ func_warning "'-release' is ignored for convenience libraries" else # Parse the version information argument. save_ifs=$IFS; IFS=: set dummy $vinfo 0 0 0 shift IFS=$save_ifs test -n "$7" && \ func_fatal_help "too many parameters to '-version-info'" # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts # to make the code below a bit more comprehensible case $vinfo_number in yes) number_major=$1 number_minor=$2 number_revision=$3 # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix # that has an extra 1 added just for fun # case $version_type in # correct linux to gnu/linux during the next big refactor darwin|freebsd-elf|linux|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result age=$number_minor revision=$number_revision ;; freebsd-aout|qnx|sunos) current=$number_major revision=$number_minor age=0 ;; irix|nonstopux) func_arith $number_major + $number_minor current=$func_arith_result age=$number_minor revision=$number_minor lt_irix_increment=no ;; *) func_fatal_configuration "$modename: unknown library version type '$version_type'" ;; esac ;; no) current=$1 revision=$2 age=$3 ;; esac # Check that each of the things are valid numbers. case $current in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "CURRENT '$current' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac case $revision in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "REVISION '$revision' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac case $age in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "AGE '$age' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac if test "$age" -gt "$current"; then func_error "AGE '$age' is greater than the current interface number '$current'" func_fatal_error "'$vinfo' is not valid version information" fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision # Darwin ld doesn't like 0 for these options... func_arith $current + 1 minor_current=$func_arith_result xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" # On Darwin other compilers case $CC in nagfor*) verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" ;; *) verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ;; esac ;; freebsd-aout) major=.$current versuffix=.$current.$revision ;; freebsd-elf) func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision ;; irix | nonstopux) if test no = "$lt_irix_increment"; then func_arith $current - $age else func_arith $current - $age + 1 fi major=$func_arith_result case $version_type in nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac verstring=$verstring_prefix$major.$revision # Add in all the interfaces that we are compatible with. loop=$revision while test 0 -ne "$loop"; do func_arith $revision - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring=$verstring_prefix$major.$iface:$verstring done # Before this point, $major must not contain '.'. major=.$major versuffix=$major.$revision ;; linux) # correct to gnu/linux during the next big refactor func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision ;; osf) func_arith $current - $age major=.$func_arith_result versuffix=.$current.$age.$revision verstring=$current.$age.$revision # Add in all the interfaces that we are compatible with. loop=$age while test 0 -ne "$loop"; do func_arith $current - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring=$verstring:$iface.0 done # Make executables depend on our current version. func_append verstring ":$current.0" ;; qnx) major=.$current versuffix=.$current ;; sco) major=.$current versuffix=.$current ;; sunos) major=.$current versuffix=.$current.$revision ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 file systems. func_arith $current - $age major=$func_arith_result versuffix=-$major ;; *) func_fatal_configuration "unknown library version type '$version_type'" ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= case $version_type in darwin) # we can't check for "0.0" in archive_cmds due to quoting # problems, so we reset it completely verstring= ;; *) verstring=0.0 ;; esac if test no = "$need_version"; then versuffix= else versuffix=.0.0 fi fi # Remove version info from name if versioning should be avoided if test yes,no = "$avoid_version,$need_version"; then major= versuffix= verstring= fi # Check to see if the archive will have undefined symbols. if test yes = "$allow_undefined"; then if test unsupported = "$allow_undefined_flag"; then if test yes = "$build_old_libs"; then func_warning "undefined symbols not allowed in $host shared libraries; building static only" build_libtool_libs=no else func_fatal_error "can't build $host shared library unless -no-undefined is specified" fi fi else # Don't allow undefined symbols. allow_undefined_flag=$no_undefined_flag fi fi func_generate_dlsyms "$libname" "$libname" : func_append libobjs " $symfileobj" test " " = "$libobjs" && libobjs= if test relink != "$opt_mode"; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= tempremovelist=`$ECHO "$output_objdir/*"` for p in $tempremovelist; do case $p in *.$objext | *.gcno) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*) if test -n "$precious_files_regex"; then if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue fi fi func_append removelist " $p" ;; *) ;; esac done test -n "$removelist" && \ func_show_eval "${RM}r \$removelist" fi # Now set the variables for building old libraries. if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then func_append oldlibs " $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP` fi # Eliminate all temporary directories. #for path in $notinst_path; do # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` #done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do func_replace_sysroot "$libdir" func_append temp_xrpath " -R$func_replace_sysroot_result" case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened old_dlfiles=$dlfiles dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; *) func_append dlfiles " $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles=$dlprefiles dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) func_append dlprefiles " $lib" ;; esac done if test yes = "$build_libtool_libs"; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework func_append deplibs " System.ltframework" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work ;; *) # Add libc to deplibs on all other systems if necessary. if test yes = "$build_libtool_need_lc"; then func_append deplibs " -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release= versuffix= major= newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behavior. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $opt_dry_run || $RM conftest.c cat > conftest.c <<EOF int main() { return 0; } EOF $opt_dry_run || $RM conftest if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then ldd_output=`ldd conftest` for i in $deplibs; do case $i in -l*) func_stripname -l '' "$i" name=$func_stripname_result if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $i "*) func_append newdeplibs " $i" i= ;; esac fi if test -n "$i"; then libname=`eval "\\$ECHO \"$libname_spec\""` deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` set dummy $deplib_matches; shift deplib_match=$1 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then func_append newdeplibs " $i" else droppeddeps=yes echo $ECHO "*** Warning: dynamic linker does not accept needed library $i." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which I believe you do not have" echo "*** because a test_compile did reveal that the linker did not use it for" echo "*** its dynamic dependency list that programs get resolved with at runtime." fi fi ;; *) func_append newdeplibs " $i" ;; esac done else # Error occurred in the first compile. Let's try to salvage # the situation: Compile a separate program for each library. for i in $deplibs; do case $i in -l*) func_stripname -l '' "$i" name=$func_stripname_result $opt_dry_run || $RM conftest if $LTCC $LTCFLAGS -o conftest conftest.c $i; then ldd_output=`ldd conftest` if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $i "*) func_append newdeplibs " $i" i= ;; esac fi if test -n "$i"; then libname=`eval "\\$ECHO \"$libname_spec\""` deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` set dummy $deplib_matches; shift deplib_match=$1 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then func_append newdeplibs " $i" else droppeddeps=yes echo $ECHO "*** Warning: dynamic linker does not accept needed library $i." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because a test_compile did reveal that the linker did not use this one" echo "*** as a dynamic dependency that programs can get resolved with at runtime." fi fi else droppeddeps=yes echo $ECHO "*** Warning! Library $i is needed by this library but I was not able to" echo "*** make it link in! You will probably need to install it or some" echo "*** library that it depends on before this library will be fully" echo "*** functional. Installing it before continuing would be even better." fi ;; *) func_append newdeplibs " $i" ;; esac done fi ;; file_magic*) set dummy $deplibs_check_method; shift file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` for a_deplib in $deplibs; do case $a_deplib in -l*) func_stripname -l '' "$a_deplib" name=$func_stripname_result if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $a_deplib "*) func_append newdeplibs " $a_deplib" a_deplib= ;; esac fi if test -n "$a_deplib"; then libname=`eval "\\$ECHO \"$libname_spec\""` if test -n "$file_magic_glob"; then libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob` else libnameglob=$libname fi test yes = "$want_nocaseglob" && nocaseglob=`shopt -p nocaseglob` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do if test yes = "$want_nocaseglob"; then shopt -s nocaseglob potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` $nocaseglob else potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` fi for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null | $GREP " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib=$potent_lib while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | $SED 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;; *) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | $SED -e 10q | $EGREP "$file_magic_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib= break 2 fi done done fi if test -n "$a_deplib"; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib"; then $ECHO "*** with $libname but no candidates were found. (...for file magic test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a file magic. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` for a_deplib in $deplibs; do case $a_deplib in -l*) func_stripname -l '' "$a_deplib" name=$func_stripname_result if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $a_deplib "*) func_append newdeplibs " $a_deplib" a_deplib= ;; esac fi if test -n "$a_deplib"; then libname=`eval "\\$ECHO \"$libname_spec\""` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib=$potent_lib # see symlink-check above in file_magic test if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ $EGREP "$match_pattern_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib= break 2 fi done done fi if test -n "$a_deplib"; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib"; then $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a regex pattern. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; none | unknown | *) newdeplibs= tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` if test yes = "$allow_libtool_libs_with_static_runtimes"; then for i in $predeps $postdeps; do # can't use Xsed below, because $i might contain '/' tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"` done fi case $tmp_deplibs in *[!\ \ ]*) echo if test none = "$deplibs_check_method"; then echo "*** Warning: inter-library dependencies are not supported in this platform." else echo "*** Warning: inter-library dependencies are not known to be supported." fi echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes ;; esac ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library with the System framework newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac if test yes = "$droppeddeps"; then if test yes = "$module"; then echo echo "*** Warning: libtool could not satisfy all declared inter-library" $ECHO "*** dependencies of module $libname. Therefore, libtool will create" echo "*** a static module, that should work as long as the dlopening" echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using 'nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** 'nm' from GNU binutils and a full rebuild may help." fi if test no = "$build_old_libs"; then oldlibs=$output_objdir/$libname.$libext build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else echo "*** The inter-library dependencies that have been dropped here will be" echo "*** automatically added whenever a program is linked with this library" echo "*** or is declared to -dlopen it." if test no = "$allow_undefined"; then echo echo "*** Since this library must not contain undefined symbols," echo "*** because either the platform does not support them or" echo "*** it was explicitly requested with -no-undefined," echo "*** libtool will only create a static version of it." if test no = "$build_old_libs"; then oldlibs=$output_objdir/$libname.$libext build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" case $host in *-*-darwin*) newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done deplibs=$new_libs # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test yes = "$build_libtool_libs"; then # Remove $wl instances when linking with ld. # FIXME: should test the right _cmds variable. case $archive_cmds in *\$LD\ *) wl= ;; esac if test yes = "$hardcode_into_libs"; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath=$finalize_rpath test relink = "$opt_mode" || rpath=$compile_rpath$rpath for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then func_replace_sysroot "$libdir" libdir=$func_replace_sysroot_result if test -z "$hardcode_libdirs"; then hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append dep_rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir=$hardcode_libdirs eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath=$finalize_shlibpath test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval shared_ext=\"$shrext_cmds\" eval library_names=\"$library_names_spec\" set dummy $library_names shift realname=$1 shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname=$realname fi if test -z "$dlname"; then dlname=$soname fi lib=$output_objdir/$realname linknames= for link do func_append linknames " $link" done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` test "X$libobjs" = "X " && libobjs= delfiles= if test -n "$export_symbols" && test -n "$include_expsyms"; then $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" export_symbols=$output_objdir/$libname.uexp func_append delfiles " $export_symbols" fi orig_export_symbols= case $host_os in cygwin* | mingw* | cegcc*) if test -n "$export_symbols" && test -z "$export_symbols_regex"; then # exporting using user supplied symfile func_dll_def_p "$export_symbols" || { # and it's NOT already a .def file. Must figure out # which of the given symbols are data symbols and tag # them as such. So, trigger use of export_symbols_cmds. # export_symbols gets reassigned inside the "prepare # the list of exported symbols" if statement, so the # include_expsyms logic still works. orig_export_symbols=$export_symbols export_symbols= always_export_symbols=yes } fi ;; esac # Prepare the list of exported symbols if test -z "$export_symbols"; then if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then func_verbose "generating symbol list for '$libname.la'" export_symbols=$output_objdir/$libname.exp $opt_dry_run || $RM $export_symbols cmds=$export_symbols_cmds save_ifs=$IFS; IFS='~' for cmd1 in $cmds; do IFS=$save_ifs # Take the normal branch if the nm_file_list_spec branch # doesn't work or if tool conversion is not needed. case $nm_file_list_spec~$to_tool_file_cmd in *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) try_normal_branch=yes eval cmd=\"$cmd1\" func_len " $cmd" len=$func_len_result ;; *) try_normal_branch=no ;; esac if test yes = "$try_normal_branch" \ && { test "$len" -lt "$max_cmd_len" \ || test "$max_cmd_len" -le -1; } then func_show_eval "$cmd" 'exit $?' skipped_export=false elif test -n "$nm_file_list_spec"; then func_basename "$output" output_la=$func_basename_result save_libobjs=$libobjs save_output=$output output=$output_objdir/$output_la.nm func_to_tool_file "$output" libobjs=$nm_file_list_spec$func_to_tool_file_result func_append delfiles " $output" func_verbose "creating $NM input file list: $output" for obj in $save_libobjs; do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > "$output" eval cmd=\"$cmd1\" func_show_eval "$cmd" 'exit $?' output=$save_output libobjs=$save_libobjs skipped_export=false else # The command line is too long to execute in one step. func_verbose "using reloadable object file for export list..." skipped_export=: # Break out early, otherwise skipped_export may be # set to false by a later but shorter cmd. break fi done IFS=$save_ifs if test -n "$export_symbols_regex" && test : != "$skipped_export"; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols=$export_symbols test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test : != "$skipped_export" && test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for '$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands, which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi tmp_deplibs= for test_deplib in $deplibs; do case " $convenience " in *" $test_deplib "*) ;; *) func_append tmp_deplibs " $test_deplib" ;; esac done deplibs=$tmp_deplibs if test -n "$convenience"; then if test -n "$whole_archive_flag_spec" && test yes = "$compiler_needs_object" && test -z "$libobjs"; then # extract the archives, so we have objects to list. # TODO: could optimize this to just extract one archive. whole_archive_flag_spec= fi if test -n "$whole_archive_flag_spec"; then save_libobjs=$libobjs eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= else gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $convenience func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi fi if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" func_append linker_flags " $flag" fi # Make a backup of the uninstalled library when relinking if test relink = "$opt_mode"; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test yes = "$module" && test -n "$module_cmds"; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval test_cmds=\"$module_expsym_cmds\" cmds=$module_expsym_cmds else eval test_cmds=\"$module_cmds\" cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval test_cmds=\"$archive_expsym_cmds\" cmds=$archive_expsym_cmds else eval test_cmds=\"$archive_cmds\" cmds=$archive_cmds fi fi if test : != "$skipped_export" && func_len " $test_cmds" && len=$func_len_result && test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then : else # The command line is too long to link in one step, link piecewise # or, if using GNU ld and skipped_export is not :, use a linker # script. # Save the value of $output and $libobjs because we want to # use them later. If we have whole_archive_flag_spec, we # want to use save_libobjs as it was before # whole_archive_flag_spec was expanded, because we can't # assume the linker understands whole_archive_flag_spec. # This may have to be revisited, in case too many # convenience libraries get linked in and end up exceeding # the spec. if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then save_libobjs=$libobjs fi save_output=$output func_basename "$output" output_la=$func_basename_result # Clear the reloadable object creation command queue and # initialize k to one. test_cmds= concat_cmds= objlist= last_robj= k=1 if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then output=$output_objdir/$output_la.lnkscript func_verbose "creating GNU ld script: $output" echo 'INPUT (' > $output for obj in $save_libobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done echo ')' >> $output func_append delfiles " $output" func_to_tool_file "$output" output=$func_to_tool_file_result elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then output=$output_objdir/$output_la.lnk func_verbose "creating linker input file list: $output" : > $output set x $save_libobjs shift firstobj= if test yes = "$compiler_needs_object"; then firstobj="$1 " shift fi for obj do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done func_append delfiles " $output" func_to_tool_file "$output" output=$firstobj\"$file_list_spec$func_to_tool_file_result\" else if test -n "$save_libobjs"; then func_verbose "creating reloadable object files..." output=$output_objdir/$output_la-$k.$objext eval test_cmds=\"$reload_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 # Loop over the list of objects to be linked. for obj in $save_libobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result if test -z "$objlist" || test "$len" -lt "$max_cmd_len"; then func_append objlist " $obj" else # The command $test_cmds is almost too long, add a # command to the queue. if test 1 -eq "$k"; then # The first file doesn't have a previous command to add. reload_objs=$objlist eval concat_cmds=\"$reload_cmds\" else # All subsequent reloadable object files will link in # the last one created. reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" fi last_robj=$output_objdir/$output_la-$k.$objext func_arith $k + 1 k=$func_arith_result output=$output_objdir/$output_la-$k.$objext objlist=" $obj" func_len " $last_robj" func_arith $len0 + $func_len_result len=$func_arith_result fi done # Handle the remaining objects by creating one last # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds$reload_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi func_append delfiles " $output" else output= fi ${skipped_export-false} && { func_verbose "generating symbol list for '$libname.la'" export_symbols=$output_objdir/$libname.exp $opt_dry_run || $RM $export_symbols libobjs=$output # Append the command to create the export file. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi } test -n "$save_libobjs" && func_verbose "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. save_ifs=$IFS; IFS='~' for cmd in $concat_cmds; do IFS=$save_ifs $opt_quiet || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test relink = "$opt_mode"; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS=$save_ifs if test -n "$export_symbols_regex" && ${skipped_export-false}; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi ${skipped_export-false} && { if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols=$export_symbols test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for '$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands, which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi } libobjs=$output # Restore the value of output. output=$save_output if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= fi # Expand the library linking commands again to reset the # value of $libobjs for piecewise linking. # Do each of the archive commands. if test yes = "$module" && test -n "$module_cmds"; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then cmds=$module_expsym_cmds else cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then cmds=$archive_expsym_cmds else cmds=$archive_cmds fi fi fi if test -n "$delfiles"; then # Append the command to remove temporary files to $cmds. eval cmds=\"\$cmds~\$RM $delfiles\" fi # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi save_ifs=$IFS; IFS='~' for cmd in $cmds; do IFS=$sp$nl eval cmd=\"$cmd\" IFS=$save_ifs $opt_quiet || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test relink = "$opt_mode"; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS=$save_ifs # Restore the uninstalled library and exit if test relink = "$opt_mode"; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? if test -n "$convenience"; then if test -z "$whole_archive_flag_spec"; then func_show_eval '${RM}r "$gentop"' fi fi exit $EXIT_SUCCESS fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' fi done # If -module or -export-dynamic was specified, set the dlname. if test yes = "$module" || test yes = "$export_dynamic"; then # On all known operating systems, these are identical. dlname=$soname fi fi ;; obj) if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then func_warning "'-dlopen' is ignored for objects" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "'-l' and '-L' are ignored for objects" ;; esac test -n "$rpath" && \ func_warning "'-rpath' is ignored for objects" test -n "$xrpath" && \ func_warning "'-R' is ignored for objects" test -n "$vinfo" && \ func_warning "'-version-info' is ignored for objects" test -n "$release" && \ func_warning "'-release' is ignored for objects" case $output in *.lo) test -n "$objs$old_deplibs" && \ func_fatal_error "cannot build library object '$output' from non-libtool objects" libobj=$output func_lo2o "$libobj" obj=$func_lo2o_result ;; *) libobj= obj=$output ;; esac # Delete the old objects. $opt_dry_run || $RM $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # if reload_cmds runs $LD directly, get rid of -Wl from # whole_archive_flag_spec and hope we can get by with turning comma # into space. case $reload_cmds in *\$LD[\ \$]*) wl= ;; esac if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags else gentop=$output_objdir/${obj}x func_append generated " $gentop" func_extract_archives $gentop $convenience reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi # If we're not building shared, we need to use non_pic_objs test yes = "$build_libtool_libs" || libobjs=$non_pic_objects # Create the old-style object. reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs output=$obj func_execute_cmds "$reload_cmds" 'exit $?' # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS fi test yes = "$build_libtool_libs" || { if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. # $show "echo timestamp > $libobj" # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS } if test -n "$pic_flag" || test default != "$pic_mode"; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output=$libobj func_execute_cmds "$reload_cmds" 'exit $?' fi if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS ;; prog) case $host in *cygwin*) func_stripname '' '.exe' "$output" output=$func_stripname_result.exe;; esac test -n "$vinfo" && \ func_warning "'-version-info' is ignored for programs" test -n "$release" && \ func_warning "'-release' is ignored for programs" $preload \ && test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \ && func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support." case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac case $host in *-*-darwin*) # Don't allow lazy linking, it breaks C++ global constructors # But is supposedly fixed on 10.4 or later (yay!). if test CXX = "$tagname"; then case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 10.[0123]) func_append compile_command " $wl-bind_at_load" func_append finalize_command " $wl-bind_at_load" ;; esac fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $compile_deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $compile_deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done compile_deplibs=$new_libs func_append compile_command " $compile_deplibs" func_append finalize_command " $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; ::) dllsearchpath=$libdir;; *) func_append dllsearchpath ":$libdir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir=$hardcode_libdirs eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath=$rpath rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) func_append finalize_perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir=$hardcode_libdirs eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath=$rpath if test -n "$libobjs" && test yes = "$build_old_libs"; then # Transform all the library objects into standard objects. compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` fi func_generate_dlsyms "$outputname" "@PROGRAM@" false # template prelinking step if test -n "$prelink_cmds"; then func_execute_cmds "$prelink_cmds" 'exit $?' fi wrappers_required=: case $host in *cegcc* | *mingw32ce*) # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. wrappers_required=false ;; *cygwin* | *mingw* ) test yes = "$build_libtool_libs" || wrappers_required=false ;; *) if test no = "$need_relink" || test yes != "$build_libtool_libs"; then wrappers_required=false fi ;; esac $wrappers_required || { # Replace the output file specification. compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` link_command=$compile_command$compile_rpath # We have no uninstalled library dependencies, so finalize right now. exit_status=0 func_show_eval "$link_command" 'exit_status=$?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Delete the generated files. if test -f "$output_objdir/${outputname}S.$objext"; then func_show_eval '$RM "$output_objdir/${outputname}S.$objext"' fi exit $exit_status } if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do func_append rpath "$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test yes = "$no_install"; then # We don't need to create a wrapper script. link_command=$compile_var$compile_command$compile_rpath # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $opt_dry_run || $RM $output # Link the executable and exit func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi exit $EXIT_SUCCESS fi case $hardcode_action,$fast_install in relink,*) # Fast installation is not supported link_command=$compile_var$compile_command$compile_rpath relink_command=$finalize_var$finalize_command$finalize_rpath func_warning "this platform does not like uninstalled shared libraries" func_warning "'$output' will be relinked during installation" ;; *,yes) link_command=$finalize_var$compile_command$finalize_rpath relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` ;; *,no) link_command=$compile_var$compile_command$compile_rpath relink_command=$finalize_var$finalize_command$finalize_rpath ;; *,needless) link_command=$finalize_var$compile_command$finalize_rpath relink_command= ;; esac # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output_objdir/$outputname" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Now create the wrapper script. func_verbose "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done relink_command="(cd `pwd`; $relink_command)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` fi # Only actually do things if not in dry run mode. $opt_dry_run || { # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) func_stripname '' '.exe' "$output" output=$func_stripname_result ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe func_stripname '' '.exe' "$outputname" outputname=$func_stripname_result ;; *) exeext= ;; esac case $host in *cygwin* | *mingw* ) func_dirname_and_basename "$output" "" "." output_name=$func_basename_result output_path=$func_dirname_result cwrappersource=$output_path/$objdir/lt-$output_name.c cwrapper=$output_path/$output_name.exe $RM $cwrappersource $cwrapper trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 func_emit_cwrapperexe_src > $cwrappersource # The wrapper executable is built using the $host compiler, # because it contains $host paths and files. If cross- # compiling, it, like the target executable, must be # executed on the $host or under an emulation environment. $opt_dry_run || { $LTCC $LTCFLAGS -o $cwrapper $cwrappersource $STRIP $cwrapper } # Now, create the wrapper script for func_source use: func_ltwrapper_scriptname $cwrapper $RM $func_ltwrapper_scriptname_result trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 $opt_dry_run || { # note: this script will not be executed, so do not chmod. if test "x$build" = "x$host"; then $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result else func_emit_wrapper no > $func_ltwrapper_scriptname_result fi } ;; * ) $RM $output trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 func_emit_wrapper no > $output chmod +x $output ;; esac } exit $EXIT_SUCCESS ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do case $build_libtool_libs in convenience) oldobjs="$libobjs_save $symfileobj" addlibs=$convenience build_libtool_libs=no ;; module) oldobjs=$libobjs_save addlibs=$old_convenience build_libtool_libs=no ;; *) oldobjs="$old_deplibs $non_pic_objects" $preload && test -f "$symfileobj" \ && func_append oldobjs " $symfileobj" addlibs=$old_convenience ;; esac if test -n "$addlibs"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $addlibs func_append oldobjs " $func_extract_archives_result" fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then cmds=$old_archive_from_new_cmds else # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append oldobjs " $func_extract_archives_result" fi # POSIX demands no paths to be encoded in archives. We have # to avoid creating archives with duplicate basenames if we # might have to extract them afterwards, e.g., when creating a # static archive out of a convenience library, or when linking # the entirety of a libtool archive into another (currently # not supported by libtool). if (for obj in $oldobjs do func_basename "$obj" $ECHO "$func_basename_result" done | sort | sort -uc >/dev/null 2>&1); then : else echo "copying selected object files to avoid basename conflicts..." gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_mkdir_p "$gentop" save_oldobjs=$oldobjs oldobjs= counter=1 for obj in $save_oldobjs do func_basename "$obj" objbase=$func_basename_result case " $oldobjs " in " ") oldobjs=$obj ;; *[\ /]"$objbase "*) while :; do # Make sure we don't pick an alternate name that also # overlaps. newobj=lt$counter-$objbase func_arith $counter + 1 counter=$func_arith_result case " $oldobjs " in *[\ /]"$newobj "*) ;; *) if test ! -f "$gentop/$newobj"; then break; fi ;; esac done func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" func_append oldobjs " $gentop/$newobj" ;; *) func_append oldobjs " $obj" ;; esac done fi func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result eval cmds=\"$old_archive_cmds\" func_len " $cmds" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then cmds=$old_archive_cmds elif test -n "$archiver_list_spec"; then func_verbose "using command file archive linking..." for obj in $oldobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > $output_objdir/$libname.libcmd func_to_tool_file "$output_objdir/$libname.libcmd" oldobjs=" $archiver_list_spec$func_to_tool_file_result" cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts func_verbose "using piecewise archive linking..." save_RANLIB=$RANLIB RANLIB=: objlist= concat_cmds= save_oldobjs=$oldobjs oldobjs= # Is there a better way of finding the last object in the list? for obj in $save_oldobjs do last_oldobj=$obj done eval test_cmds=\"$old_archive_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 for obj in $save_oldobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result func_append objlist " $obj" if test "$len" -lt "$max_cmd_len"; then : else # the above command should be used before it gets too long oldobjs=$objlist if test "$obj" = "$last_oldobj"; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$old_archive_cmds\" objlist= len=$len0 fi done RANLIB=$save_RANLIB oldobjs=$objlist if test -z "$oldobjs"; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~\$old_archive_cmds\" fi fi fi func_execute_cmds "$cmds" 'exit $?' done test -n "$generated" && \ func_show_eval "${RM}r$generated" # Now create the libtool archive. case $output in *.la) old_library= test yes = "$build_old_libs" && old_library=$libname.$libext func_verbose "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` if test yes = "$hardcode_automatic"; then relink_command= fi # Only create the output if not a dry run. $opt_dry_run || { for installed in no yes; do if test yes = "$installed"; then if test -z "$install_libdir"; then break fi output=$output_objdir/${outputname}i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) func_basename "$deplib" name=$func_basename_result func_resolve_sysroot "$deplib" eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` test -z "$libdir" && \ func_fatal_error "'$deplib' is not a valid libtool archive" func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" ;; -L*) func_stripname -L '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -L$func_replace_sysroot_result" ;; -R*) func_stripname -R '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -R$func_replace_sysroot_result" ;; *) func_append newdependency_libs " $deplib" ;; esac done dependency_libs=$newdependency_libs newdlfiles= for lib in $dlfiles; do case $lib in *.la) func_basename "$lib" name=$func_basename_result eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "'$lib' is not a valid libtool archive" func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" ;; *) func_append newdlfiles " $lib" ;; esac done dlfiles=$newdlfiles newdlprefiles= for lib in $dlprefiles; do case $lib in *.la) # Only pass preopened files to the pseudo-archive (for # eventual linking with the app. that links it) if we # didn't already link the preopened objects directly into # the library: func_basename "$lib" name=$func_basename_result eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "'$lib' is not a valid libtool archive" func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" ;; esac done dlprefiles=$newdlprefiles else newdlfiles= for lib in $dlfiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlfiles " $abs" done dlfiles=$newdlfiles newdlprefiles= for lib in $dlprefiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlprefiles " $abs" done dlprefiles=$newdlprefiles fi $RM $output # place dlname in correct position for cygwin # In fact, it would be nice if we could use this code for all target # systems that can't hard-code library paths into their executables # and that have no shared library path variable independent of PATH, # but it turns out we can't easily determine that from inspecting # libtool variables, so we have to hard-code the OSs to which it # applies here; at the moment, that means platforms that use the PE # object format with DLL files. See the long comment at the top of # tests/bindir.at for full details. tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) # If a -bindir argument was supplied, place the dll there. if test -n "$bindir"; then func_relative_path "$install_libdir" "$bindir" tdlname=$func_relative_path_result/$dlname else # Otherwise fall back on heuristic. tdlname=../bin/$dlname fi ;; esac $ECHO > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM (GNU $PACKAGE) $VERSION # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Linker flags that cannot go in dependency_libs. inherited_linker_flags='$new_inherited_linker_flags' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Names of additional weak libraries provided by this library weak_library_names='$weak_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Should we warn about portability when linking against -modules? shouldnotlink=$module # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test no,yes = "$installed,$need_relink"; then $ECHO >> $output "\ relink_command=\"$relink_command\"" fi done } # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' ;; esac exit $EXIT_SUCCESS } if test link = "$opt_mode" || test relink = "$opt_mode"; then func_mode_link ${1+"$@"} fi # func_mode_uninstall arg... func_mode_uninstall () { $debug_cmd RM=$nonopt files= rmforce=false exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic=$magic for arg do case $arg in -f) func_append RM " $arg"; rmforce=: ;; -*) func_append RM " $arg" ;; *) func_append files " $arg" ;; esac done test -z "$RM" && \ func_fatal_help "you must specify an RM program" rmdirs= for file in $files; do func_dirname "$file" "" "." dir=$func_dirname_result if test . = "$dir"; then odir=$objdir else odir=$dir/$objdir fi func_basename "$file" name=$func_basename_result test uninstall = "$opt_mode" && odir=$dir # Remember odir for removal later, being careful to avoid duplicates if test clean = "$opt_mode"; then case " $rmdirs " in *" $odir "*) ;; *) func_append rmdirs " $odir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if { test -L "$file"; } >/dev/null 2>&1 || { test -h "$file"; } >/dev/null 2>&1 || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif $rmforce; then continue fi rmfiles=$file case $name in *.la) # Possibly a libtool archive, so verify it. if func_lalib_p "$file"; then func_source $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do func_append rmfiles " $odir/$n" done test -n "$old_library" && func_append rmfiles " $odir/$old_library" case $opt_mode in clean) case " $library_names " in *" $dlname "*) ;; *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; esac test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" ;; uninstall) if test -n "$library_names"; then # Do each command in the postuninstall commands. func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1' fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1' fi # FIXME: should reinstall the best remaining shared library. ;; esac fi ;; *.lo) # Possibly a libtool object, so verify it. if func_lalib_p "$file"; then # Read the .lo file func_source $dir/$name # Add PIC object to the list of files to remove. if test -n "$pic_object" && test none != "$pic_object"; then func_append rmfiles " $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" && test none != "$non_pic_object"; then func_append rmfiles " $dir/$non_pic_object" fi fi ;; *) if test clean = "$opt_mode"; then noexename=$name case $file in *.exe) func_stripname '' '.exe' "$file" file=$func_stripname_result func_stripname '' '.exe' "$name" noexename=$func_stripname_result # $file with .exe has already been added to rmfiles, # add $file without .exe func_append rmfiles " $file" ;; esac # Do a test to see if this is a libtool program. if func_ltwrapper_p "$file"; then if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" relink_command= func_source $func_ltwrapper_scriptname_result func_append rmfiles " $func_ltwrapper_scriptname_result" else relink_command= func_source $dir/$noexename fi # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles func_append rmfiles " $odir/$name $odir/${name}S.$objext" if test yes = "$fast_install" && test -n "$relink_command"; then func_append rmfiles " $odir/lt-$name" fi if test "X$noexename" != "X$name"; then func_append rmfiles " $odir/lt-$noexename.c" fi fi fi ;; esac func_show_eval "$RM $rmfiles" 'exit_status=1' done # Try to remove the $objdir's in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then func_show_eval "rmdir $dir >/dev/null 2>&1" fi done exit $exit_status } if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then func_mode_uninstall ${1+"$@"} fi test -z "$opt_mode" && { help=$generic_help func_fatal_help "you must specify a MODE" } test -z "$exec_cmd" && \ func_fatal_help "invalid operation mode '$opt_mode'" if test -n "$exec_cmd"; then eval exec "$exec_cmd" exit $EXIT_FAILURE fi exit $exit_status # The TAGs below are defined such that we never get into a situation # where we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support # them. This is particularly important on AIX, because we don't # support having both static and shared libraries enabled at the same # time on that platform, so we default to a shared-only configuration. # If a disable-shared tag is given, we'll fallback to a static-only # configuration. But we'll never go from static-only to shared-only. # ### BEGIN LIBTOOL TAG CONFIG: disable-shared build_libtool_libs=no build_old_libs=yes # ### END LIBTOOL TAG CONFIG: disable-shared # ### BEGIN LIBTOOL TAG CONFIG: disable-static build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` # ### END LIBTOOL TAG CONFIG: disable-static # Local Variables: # mode:shell-script # sh-indentation:2 # End: ����������������������������������������������������WindowMaker-0.95.9/doc/�����������������������������������������������������������������������������0000755�0001750�0001750�00000000000�13642365214�011621� 5����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/Makefile.in������������������������������������������������������������������0000644�0001750�0001750�00000065747�13642360054�013626� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = doc ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ $(top_srcdir)/m4/ax_pthread.m4 \ $(top_srcdir)/m4/ld-version-script.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/windowmaker.m4 \ $(top_srcdir)/m4/wm_attributes.m4 \ $(top_srcdir)/m4/wm_cflags_check.m4 \ $(top_srcdir)/m4/wm_i18n.m4 \ $(top_srcdir)/m4/wm_imgfmt_check.m4 \ $(top_srcdir)/m4/wm_libexif.m4 $(top_srcdir)/m4/wm_libmath.m4 \ $(top_srcdir)/m4/wm_prog_cc_c11.m4 \ $(top_srcdir)/m4/wm_xext_check.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } man1dir = $(mandir)/man1 am__installdirs = "$(DESTDIR)$(man1dir)" NROFF = nroff MANS = $(dist_man_MANS) $(man_MANS) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir distdir-am am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(dist_man_MANS) $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ GFXLIBS = @GFXLIBS@ GREP = @GREP@ HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLIBS = @INTLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBBSD = @LIBBSD@ LIBEXIF = @LIBEXIF@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXINERAMA = @LIBXINERAMA@ LIBXMU = @LIBXMU@ LIBXRANDR = @LIBXRANDR@ LINGUAS = @LINGUAS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAGICKFLAGS = @MAGICKFLAGS@ MAGICKLIBS = @MAGICKLIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MANLANGDIRS = @MANLANGDIRS@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOLIBS = @PANGOLIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILMOFILES = @UTILMOFILES@ VERSION = @VERSION@ WINGSMOFILES = @WINGSMOFILES@ WINGS_VERSION = @WINGS_VERSION@ WMAKERMOFILES = @WMAKERMOFILES@ WPREFSMOFILES = @WPREFSMOFILES@ WRASTER_VERSION = @WRASTER_VERSION@ WUTIL_VERSION = @WUTIL_VERSION@ XCFLAGS = @XCFLAGS@ XFTCONFIG = @XFTCONFIG@ XFTFLAGS = @XFTFLAGS@ XFTLIBS = @XFTLIBS@ XGETTEXT = @XGETTEXT@ XLFLAGS = @XLFLAGS@ XLIBS = @XLIBS@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBRARY_PATH = @X_LIBRARY_PATH@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ defsdatadir = @defsdatadir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ inc_search_path = @inc_search_path@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lcov_output_directory = @lcov_output_directory@ lib_search_path = @lib_search_path@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pixmapdir = @pixmapdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ wprefs_bindir = @wprefs_bindir@ wprefs_datadir = @wprefs_datadir@ SUBDIRS = build @MANLANGDIRS@ DIST_SUBDIRS = build cs ru sk dist_man_MANS = \ geticonset.1 \ getstyle.1 \ seticons.1 \ setstyle.1 \ wdread.1 \ wdwrite.1 \ WindowMaker.1 \ wmagnify.1 \ wmgenmenu.1 \ wmiv.1 \ wmmenugen.1 \ WPrefs.1 \ wxcopy.1 \ wxpaste.1 man_MANS = \ wmaker.1 \ wmsetbg.1 MOSTLYCLEANFILES = wmaker.1 wmsetbg.1 EXTRA_DIST = wmaker.in wmsetbg.in # Create a 'silent rule' for our make check the same way automake does AM_V_CHKOPTS = $(am__v_CHKOPTS_$(V)) am__v_CHKOPTS_ = $(am__v_CHKOPTS_$(AM_DEFAULT_VERBOSITY)) am__v_CHKOPTS_0 = @echo " CHK $@" ; am__v_CHKOPTS_1 = all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu doc/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-man1: $(dist_man_MANS) $(man_MANS) @$(NORMAL_INSTALL) @list1=''; \ list2='$(dist_man_MANS) $(man_MANS)'; \ test -n "$(man1dir)" \ && test -n "`echo $$list1$$list2`" \ || exit 0; \ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ { for i in $$list1; do echo "$$i"; done; \ if test -n "$$list2"; then \ for i in $$list2; do echo "$$i"; done \ | sed -n '/\.1[a-z]*$$/p'; \ fi; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ done; } uninstall-man1: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man1dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(dist_man_MANS) $(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.1[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) check-local check: check-recursive all-am: Makefile $(MANS) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(man1dir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-man install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-man1 install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-man uninstall-man: uninstall-man1 .MAKE: $(am__recursive_targets) check-am install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am check-local clean clean-generic clean-libtool \ cscopelist-am ctags ctags-am distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-man1 install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am uninstall-man \ uninstall-man1 .PRECIOUS: Makefile wmaker.1: wmaker.in Makefile $(top_builddir)/config.h $(AM_V_GEN)$(top_srcdir)/script/replace-ac-keywords.sh \ --header "$(top_builddir)/config.h" --filter "HAVE_INOTIFY" \ --filter "USE_ICCCM_WMREPLACE" \ -D"pkgdatadir=$(pkgdatadir)" --replace "pkgdatadir" \ -D"defsdatadir=$(defsdatadir)" --replace "defsdatadir" \ -o "wmaker.1" "$(srcdir)/wmaker.in" wmsetbg.1: wmsetbg.in Makefile $(top_builddir)/config.h $(AM_V_GEN)$(top_srcdir)/script/replace-ac-keywords.sh \ --header "$(top_builddir)/config.h" --filter "USE_XINERAMA" \ -o "wmsetbg.1" "$(srcdir)/wmsetbg.in" check-local: wmaker-args WPrefs-args wmagnify-args geticonset-args getstyle-args seticons-args setstyle-args \ wdread-args wdwrite-args wmgenmenu-args wmiv-args wmmenugen-args wmsetbg-args wxcopy-args wxpaste-args wmaker-args: $(AM_V_CHKOPTS)$(top_srcdir)/script/check-cmdline-options-doc.sh \ --program "$(top_builddir)/src/wmaker" --man-page "wmaker.1" WPrefs-args: $(AM_V_CHKOPTS)$(top_srcdir)/script/check-cmdline-options-doc.sh \ --program "$(top_builddir)/WPrefs.app/WPrefs" --man-page "$(top_srcdir)/doc/WPrefs.1" wmagnify-args: $(AM_V_CHKOPTS)$(top_srcdir)/script/check-cmdline-options-doc.sh \ --program "$(top_builddir)/util/wmagnify" --man-page "$(top_srcdir)/doc/wmagnify.1" geticonset-args: $(AM_V_CHKOPTS)$(top_srcdir)/script/check-cmdline-options-doc.sh \ --program "$(top_builddir)/util/geticonset" --man-page "$(top_srcdir)/doc/geticonset.1" getstyle-args: $(AM_V_CHKOPTS)$(top_srcdir)/script/check-cmdline-options-doc.sh \ --program "$(top_builddir)/util/getstyle" --man-page "$(top_srcdir)/doc/getstyle.1" seticons-args: $(AM_V_CHKOPTS)$(top_srcdir)/script/check-cmdline-options-doc.sh \ --program "$(top_builddir)/util/seticons" --man-page "$(top_srcdir)/doc/seticons.1" setstyle-args: $(AM_V_CHKOPTS)$(top_srcdir)/script/check-cmdline-options-doc.sh \ --program "$(top_builddir)/util/setstyle" --man-page "$(top_srcdir)/doc/setstyle.1" wdread-args: $(AM_V_CHKOPTS)$(top_srcdir)/script/check-cmdline-options-doc.sh \ --program "$(top_builddir)/util/wdread" --man-page "$(top_srcdir)/doc/wdread.1" wdwrite-args: $(AM_V_CHKOPTS)$(top_srcdir)/script/check-cmdline-options-doc.sh \ --program "$(top_builddir)/util/wdwrite" --man-page "$(top_srcdir)/doc/wdwrite.1" wmgenmenu-args: $(AM_V_CHKOPTS)$(top_srcdir)/script/check-cmdline-options-doc.sh \ --program "$(top_builddir)/util/wmgenmenu" --man-page "$(top_srcdir)/doc/wmgenmenu.1" wmiv-args: $(AM_V_CHKOPTS)$(top_srcdir)/script/check-cmdline-options-doc.sh \ --program "$(top_builddir)/util/wmiv" --man-page "$(top_srcdir)/doc/wmiv.1" wmmenugen-args: $(AM_V_CHKOPTS)$(top_srcdir)/script/check-cmdline-options-doc.sh \ --program "$(top_builddir)/util/wmmenugen" --man-page "$(top_srcdir)/doc/wmmenugen.1" wmsetbg-args: $(AM_V_CHKOPTS)$(top_srcdir)/script/check-cmdline-options-doc.sh \ --program "$(top_builddir)/util/wmsetbg" --man-page "wmsetbg.1" wxcopy-args: $(AM_V_CHKOPTS)$(top_srcdir)/script/check-cmdline-options-doc.sh \ --program "$(top_builddir)/util/wxcopy" --man-page "$(top_srcdir)/doc/wxcopy.1" wxpaste-args: $(AM_V_CHKOPTS)$(top_srcdir)/script/check-cmdline-options-doc.sh \ --program "$(top_builddir)/util/wxpaste" --man-page "$(top_srcdir)/doc/wxpaste.1" .PHONY: wmaker-args WPrefs-args wmagnify-args geticonset-args getstyle-args seticons-args setstyle-args \ wdread-args wdwrite-args wmgenmenu-args wmiv-args wmmenugen-args wmsetbg-args wxcopy-args wxpaste-args # 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. .NOEXPORT: �������������������������WindowMaker-0.95.9/doc/sk/��������������������������������������������������������������������������0000755�0001750�0001750�00000000000�13642365214�012236� 5����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/sk/wmaker.1������������������������������������������������������������������0000644�0001750�0001750�00000011012�13642357774�013535� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" Hey, Emacs! This is an -*- nroff -*- source file. .TH Window\ Maker 1 "August 1998" .SH MENO wmaker \- manar okien pre X11 so vzhadom NEXTSTEP .SH SYNTAX .B wmaker .I "[-voby]" .SH "POPIS" Window Maker je manar okien pre X11 so vzhadom NEXTSTEP. Sna sa napodobni vzhad NeXT ako je to len mon, ale v prpade potreby tento trend nedodruje. .SH "VOBY" .TP .B \-\-no\-cpp zakza preprocessing konfiguranch sborov .TP .B \-\-no\-dock neotvra Dok aplikci .TP .B \-\-no\-clip neotvra Spinku pracovnch plch .TP .B \-display host:display.screen poui dan display. Na strojoch s viacermi obrazovkami bude Window Maker automaticky spravova vetky obrazovky. Ak chcete, aby Window Maker spravoval len pecifick obrazovku, muste zada slo obrazovky pomocou argumentu prkazovho riadku .B \-display. Naprklad, ak chcete, aby Window Maker spravoval len obrazovku 1, spustite ho takto: .B wmaker -display :0.1 .TP .B \-\-version vype verziu a ukon sa .TP .B \-\-visual\-id urenie sla obrazovho reimu. Vi .BR xdpyinfo (1) pre zoznam obrazovch reimov dostupnch na vaom display-i. .TP .B \-\-help vype krtky pomocn text .PP .SH SBORY .TP .B ~/GNUstep/Defaults/WindowMaker veobecn nastavenia Window Makera. .TP .B ~/GNUstep/Defaults/WMState informcie o Doku a Spinke. NEeditujte za behu Window Makeru. Bude prepsan. .TP .B ~/GNUstep/Defaults/WMRootMenu Obsahuje meno sboru, z ktorho sa m nata hlavn menu alebo menu samotn vo formte proplist. .TP .B ~/GNUstep/Defaults/WMWindowAttributes Atribty pre rzne triedy a intancie aplikci. Pouite editor nastaven (ahajte prav tlatko na hornej lite aplikcie, zvote Nastavenia) namiesto priameho editovania tohto sboru. Je len mlo nastaven, ktor nie s dostupn z editora nastaven. .TP .B /usr/share/WindowMaker/Defaults/ Vetky spomenut sbory sa NATAJ odtiato ak sa nepodar njs ich, okrem WMState, ktor sa odtiato SKOPRUJE. Nezle na tom, odkia s natan, ak je potrebn zapsa zmenu konfigurcie sp do tchto sborov, zapu sa do uvateskch sborov. .TP .B ~/GNUstep/Library/WindowMaker/autostart Tento skript sa automaticky vykon pri tarte Window Makera. .TP .B ~/GNUstep/Library/WindowMaker/exitscript Tento skript sa automaticky vykon bezprostredne pred ukonenm Window Makera. .B Poznmka: Ak potrebujete spusti z tohto skriptu nieo, o vyaduje spusten X server, nepouvajte na ukonenie Window Makera prkaz .I SHUTDOWN z hlavnho menu. Inak sa me sta, e X server sa ukon skr ne sa vykon skript. .TP .B ~/GNUstep/Library/WindowMaker/ Sbor menu, ktorho nzov je vo WMRootMenu, sa had tu... .TP .B /etc/X11/WindowMaker/ a tu, v tomto porad, pokia nie je nzov absoltna cesta. .TP .B ~/GNUstep/Library/WindowMaker/Pixmaps/ Tu had Window Maker obrzky .TP .B ~/GNUstep/Library/WindowMaker/Backgrounds/ Tu had Window Maker pozadia .TP .B ~/GNUstep/Library/WindowMaker/Styles/ Tu had Window Maker sbory so tlmi (nie celkom... vyzer to tak, ale aj tak muste zada pln cestu. Je to len vyhraden miesto, aby boli veci pekne usporiadan) .TP .B ~/GNUstep/Library/WindowMaker/Themes/ Tu had Window Maker sbory s tmami (vi vyie) .TP .B /usr/share/WindowMaker/Pixmaps/ Obrzky spolon pre cel systm sa nachdzaj tu... .TP .B /usr/share/WindowMaker/Pixmaps/ a tu. .TP .B /usr/share/WindowMaker/Styles/ tly spolon pre cel systm sa nachdzaj tu .TP .B /usr/share/WindowMaker/Themes/ Teraz to sks sm... ;-) .SH PREMENN PROSTREDIA .IP WMAKER_USER_ROOT pecifikuje cestu k adresru Defaults. "Defaults/" je pridan k tejto premennej, m sa ur umiestnenie databz. Ak premenn nie je nastaven, jej implicitn hodnota je "~/GNUstep" .IP GNUSTEP_LOCAL_ROOT pecifikuje umiestnenie systmovho \fBloklneho\fP GNUstep adresra (toto je uiton v prpade, e umiestnenie adresra spolonho pre cel systm je v skutonosti spolon pre cel sie). Ak je tto premenn przdna, pouije sa GNUSTEP_SYSTEM_ROOT. .IP GNUSTEP_SYSTEM_ROOT pecifikuje umiestnenie systmovho GNUstep adresra. Ak je tto premenn przdna, jej implicitn hodnota je /etc/GNUstep .SH POZRI TIE The Window Maker User Guide .PP The Window Maker FAQ .PP .BR X (7), .BR wdwrite (1), .BR wxcopy (1), .BR geticonset (1), .BR seticons (1), .BR wmaker (1), .BR wxpaste (1), .BR getstyle (1), .BR setstyle (1), .BR wmsetbg (1) .SH AUTOR Autormi Window Makera s Alfredo K. Kojima <kojima@windowmaker.info>, Dan Pascu <dan@windowmaker.info> s pomocou mnohch ud z celho Internetu. .PP Tto manulov strnku napsal Marcelo E. Magallon, <mmagallo@debian.org>. ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/sk/Makefile.in���������������������������������������������������������������0000644�0001750�0001750�00000041334�13642360054�014225� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = doc/sk ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ $(top_srcdir)/m4/ax_pthread.m4 \ $(top_srcdir)/m4/ld-version-script.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/windowmaker.m4 \ $(top_srcdir)/m4/wm_attributes.m4 \ $(top_srcdir)/m4/wm_cflags_check.m4 \ $(top_srcdir)/m4/wm_i18n.m4 \ $(top_srcdir)/m4/wm_imgfmt_check.m4 \ $(top_srcdir)/m4/wm_libexif.m4 $(top_srcdir)/m4/wm_libmath.m4 \ $(top_srcdir)/m4/wm_prog_cc_c11.m4 \ $(top_srcdir)/m4/wm_xext_check.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } man1dir = $(mandir)/man1 am__installdirs = "$(DESTDIR)$(man1dir)" NROFF = nroff MANS = $(man_MANS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ GFXLIBS = @GFXLIBS@ GREP = @GREP@ HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLIBS = @INTLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBBSD = @LIBBSD@ LIBEXIF = @LIBEXIF@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXINERAMA = @LIBXINERAMA@ LIBXMU = @LIBXMU@ LIBXRANDR = @LIBXRANDR@ LINGUAS = @LINGUAS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAGICKFLAGS = @MAGICKFLAGS@ MAGICKLIBS = @MAGICKLIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MANLANGDIRS = @MANLANGDIRS@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOLIBS = @PANGOLIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILMOFILES = @UTILMOFILES@ VERSION = @VERSION@ WINGSMOFILES = @WINGSMOFILES@ WINGS_VERSION = @WINGS_VERSION@ WMAKERMOFILES = @WMAKERMOFILES@ WPREFSMOFILES = @WPREFSMOFILES@ WRASTER_VERSION = @WRASTER_VERSION@ WUTIL_VERSION = @WUTIL_VERSION@ XCFLAGS = @XCFLAGS@ XFTCONFIG = @XFTCONFIG@ XFTFLAGS = @XFTFLAGS@ XFTLIBS = @XFTLIBS@ XGETTEXT = @XGETTEXT@ XLFLAGS = @XLFLAGS@ XLIBS = @XLIBS@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBRARY_PATH = @X_LIBRARY_PATH@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ defsdatadir = @defsdatadir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ inc_search_path = @inc_search_path@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lcov_output_directory = @lcov_output_directory@ lib_search_path = @lib_search_path@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@/sk mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pixmapdir = @pixmapdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ wprefs_bindir = @wprefs_bindir@ wprefs_datadir = @wprefs_datadir@ man_MANS = \ geticonset.1 \ getstyle.1 \ seticons.1 \ setstyle.1 \ wdwrite.1 \ wmaker.1 \ wmsetbg.1 \ wxcopy.1 \ wxpaste.1 EXTRA_DIST = $(man_MANS) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/sk/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu doc/sk/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-man1: $(man_MANS) @$(NORMAL_INSTALL) @list1=''; \ list2='$(man_MANS)'; \ test -n "$(man1dir)" \ && test -n "`echo $$list1$$list2`" \ || exit 0; \ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ { for i in $$list1; do echo "$$i"; done; \ if test -n "$$list2"; then \ for i in $$list2; do echo "$$i"; done \ | sed -n '/\.1[a-z]*$$/p'; \ fi; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ done; } uninstall-man1: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man1dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.1[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(MANS) installdirs: for dir in "$(DESTDIR)$(man1dir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-man install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-man1 install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-man uninstall-man: uninstall-man1 .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-man1 install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags-am uninstall uninstall-am uninstall-man \ uninstall-man1 .PRECIOUS: Makefile # 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. .NOEXPORT: ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/sk/geticonset.1��������������������������������������������������������������0000644�0001750�0001750�00000001647�13642357774�014430� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" Hey, Emacs! This is an -*- nroff -*- source file. .TH geticonset 1 "January 1999" .SH MENO geticonset \- extrahuje aktulnu sadu ikon Window Makera .SH SYNTAX .B geticonset .I [voby] [sbor] .SH POPIS .B geticonset nata domnu WMWindowAttributes a zape sadu njdench ikon bu na tandardn vstup alebo do .I sboru. .SH VOBY .TP .B \-\-help vype pomocn text .TP .B \-\-version vype slo verzie .SH PREMENN PROSTREDIA .IP WMAKER_USER_ROOT pecifikuje cestu k adresru Defaults. "Defaults/" je pridan k tejto premennej, m sa ur umiestnenie databz. Ak premenn nie je nastaven, jej implicitn hodnota je "~/GNUstep" .SH SBORY .IP WMAKER_USER_ROOT/Defaults/WMWindowAttributes Toto je sbor, ktor sa zape. .SH POZRI TIE .BR seticons (1), .BR wmaker (1) .SH AUTOR Autorom Window Makera je Alfredo K. Kojima <kojima@windowmaker.info>. .PP Tto manulov strnku napsal Marcelo Magallon <mmagallo@debian.org>. �����������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/sk/seticons.1����������������������������������������������������������������0000644�0001750�0001750�00000001736�13642357774�014112� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" Hey, Emacs! This is an -*- nroff -*- source file. .TH seticons 1 "March 1998" .SH MENO seticons \- nastav obrzky ikon pre Window Maker .SH SYNTAX .B seticons .I sbor .SH POPIS .B seticons nata .I sbor a zape jeho obsah do domny WMWindowAttributes, m sa nastavia ikony, ktor pouva Window Maker pre dan triedy (naprklad XTerm, "xterm.XTerm", "pine.XTerm", at.) .SH VOBY .TP .B \-\-help vype pomocn text .TP .B \-\-version vype slo verzie .SH PREMENN PROSTREDIA .IP WMAKER_USER_ROOT pecifikuje cestu k adresru Defaults. "Defaults/" je pridan k tejto premennej, m sa ur umiestnenie databz. Ak premenn nie je nastaven, jej implicitn hodnota je "~/GNUstep" .SH SBORY .IP WMAKER_USER_ROOT/Defaults/WMWindowAttributes Toto je sbor, ktor sa zape. .SH POZRI TIE .BR geticonset (1), .BR wmaker (1) .SH AUTOR Autorom Window Makera je Alfredo K. Kojima <kojima@windowmaker.info>. .PP Tto manulov strnku napsal Marcelo Magallon <mmagallo@debian.org>. ����������������������������������WindowMaker-0.95.9/doc/sk/getstyle.1����������������������������������������������������������������0000644�0001750�0001750�00000005360�13642357774�014120� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" Hey, Emacs! This is an -*- nroff -*- source file. .TH getstyle 1 "January 1999" .SH MENO getstyle \- vytvorí balík s aktuálnym ¹týlom Window Makera. .SH SYNTAX .B getstyle [[\-t|\-\-theme-options] [\-p|\-\-pack] [súbor so ¹týlom]] .SH POPIS .B getstyle mô¾e buï vypísa» configuraèné informácie aktuálneho ¹týlu Window Makera do súboru/¹tandardného výstupu alebo vytvori» samostatný balík s témou. Balík s témou je adresár, ktorý obsahuje v¹etko potrebné pre distribuovateµnú tému, vrátane informácií o ¹týle a obrázkov. Dajte pozor na to, ¾e informácie o ¹týle ulo¾ené v globálnej konfigurácii systému sa nenaèítajú. ©tandardne sa ulo¾ia nasledovné vlastnosti: \fITitleJustify\fP, \fIClipTitleFont\fP, \fIWindowTitleFont\fP, \fIMenuTitleFont\fP, \fIMenuTextFont\fP, \fIIconTitleFont\fP, \fILargeDisplayFont\fP, \fIHighlightColor\fP, \fIHighlightTextColor\fP, \fIClipTitleColor\fP, \fICClipTitleColor\fP, \fIFTitleColor\fP, \fIPTitleColor\fP, \fIUTitleColor\fP, \fIFTitleBack\fP, \fIPTitleBack\fP, \fIUTitleBack\fP, \fIResizebarBack\fP, \fIMenuTitleColor\fP, \fIMenuTextColor\fP, \fIMenuDisabledColor\fP, \fIMenuTitleBack\fP, \fIMenuTextBack\fP, \fIIconBack\fP, \fIIconTitleColor\fP, \fIIconTitleBack\fP, \fIFrameBorderWidth\fP, \fIFrameBorderColor\fP, \fIFrameSelectedBorderColor\fP, \fIMenuStyle\fP, \fIWindowTitleExtendSpace\fP, \fIMenuTitleExtendSpace\fP, a \fIMenuTextExtendSpace\fP. Ak je daná voµba \fB-t\fP alebo \fB--theme-options\fP, vlastnos» \fIWorkspaceBack\fP sa \fItie¾\fP ulo¾í, spolu so všetkými myši nastavením kurzoru užívateľsky definovateľné (\fINormalCursor\fP, \fIArrowCursor\fP, \fIMoveCursor\fP, \fIResizeCursor\fP, \fITopLeftResizeCursor\fP, \fITopRightResizeCursor\fP, \fIBottomLeftResizeCursor\fP, \fIBottomRightResizeCursor\fP, \fIVerticalResizeCursor\fP, \fIHorizontalResizeCursor\fP, \fIWaitCursor\fP, \fIQuestionCursor\fP, \fITextCursor\fP, \fISelectCursor\fP) ktoré sú prítomné. .SH VO¥BY .TP .B \-t ulo¾í aj informácie súvisiace s témou, èo je textúra pozadia hlavného okna. Táto voµba je v¾dy nastavená, ak je pou¾itá voµba \-p. .TP .B \-p vytvorí balík s témou v adresári nazvanom podµa mena témy s príponou .themed. .SH PREMENNÉ PROSTREDIA .IP WMAKER_USER_ROOT ¹pecifikuje cestu k adresáru Defaults. "Defaults/" je pridané k tejto premennej, èím sa urèí umiestnenie databáz. Ak premenná nie je nastavená, jej implicitná hodnota je "~/GNUstep" .SH SÚBORY .IP WMAKER_USER_ROOT/Defaults/WindowMaker Toto je súbor, ktorý sa zapí¹e. .SH POZRI TIE® .BR setstyle (1), .BR wmaker (1) .SH AUTOR Autorom Window Makera je Alfredo K. Kojima <kojima@windowmaker.info>. .PP Túto manuálovú stránku napísal Marcelo Magallon <mmagallo@debian.org>. ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/sk/wdwrite.1�����������������������������������������������������������������0000644�0001750�0001750�00000001512�13642357774�013740� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" Hey, Emacs! This is an -*- nroff -*- source file. .TH wdwrite 1 "January 1999" .SH MENO wdwrite \- zape ke a hodnoty do databzy tandardnch nastaven .SH SYNTAX .B wdwrite .I domna .I voba .I hodnota .SH POPIS .B wdwrite zape .I vobu a .I hodnotu do danej .I domny. .SH VOBY .TP .B \-\-help vype pomocn text .TP .B \-\-version vype slo verzie .SH PREMENN PROSTREDIA .IP WMAKER_USER_ROOT pecifikuje cestu k adresru Defaults. "Defaults/" je pridan k tejto premennej, m sa ur umiestnenie databz. Ak premenn nie je nastaven, jej implicitn hodnota je "~/GNUstep" .SH SBORY Domny sa nachdzaj v WMAKER_USER_ROOT/Defaults/ .SH POZRI TIE .BR wmaker (1) .SH AUTOR Autorom Window Makera je Alfredo K. Kojima <kojima@windowmaker.info>. .PP Tto manulov strnku napsal Marcelo Magallon <mmagallo@debian.org>. ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/sk/setstyle.1����������������������������������������������������������������0000644�0001750�0001750�00000003544�13642357774�014136� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" Hey, Emacs! This is an -*- nroff -*- source file. .TH setstyle 1 "January 1999" .SH MENO setstyle \- zmení nastavenia Window Makera súvisiace so ¹týlmi alebo zavedie tému .SH SYNTAX .B setstyle .I "[--no-fonts] [--help] [--version]" .I súbor so ¹týlom .SH DESCRIPTION .B setstyle naèíta .I súbor so ¹týlom a zapí¹e jeho obsah do domény Window Makera, èím nastaví aktuálny ¹týl Window Makera. Ak je poskytnutá cesta adresár, bude pova¾ovaný za balík s témou a podµa toho bude aj zavedený. Ak je daný argument \fB\-\-no\-fonts\fP, nastavenia súvisiace s fontami (\fIIconTitleFont\fP, \fIClipTitleFont\fP, \fIMenuTextFont\fP, \fIMenuTitleFont\fP, \fIWindowTitleFont\fP) v súbore so ¹týlom budú ignorované. Pokiaľ je uvedené \fB\-\-no\-cursors\fP vlajky, definícia kurzora myši (\fINormalCursor\fP, \fIArrowCursor\fP, \fIMoveCursor\fP, \fIResizeCursor\fP, \fITopLeftResizeCursor\fP, \fITopRightResizeCursor\fP, \fIBottomLeftResizeCursor\fP, \fIBottomRightResizeCursor\fP, \fIVerticalResizeCursor\fP, \fIHorizontalResizeCursor\fP, \fIWaitCursor\fP, \fIQuestionCursor\fP, \fITextCursor\fP, \fISelectCursor\fP) v štýle a téme budú ignorované. .SH VO¥BY .TP .B \-\-no\-fonts ignorova» nastavenia fontov v súbore so ¹týlom. .TP .B \-\-help vypí¹e pomocný text .TP .B \-\-version vypí¹e èíslo verzie .SH PREMENNÉ PROSTREDIA .IP WMAKER_USER_ROOT ¹pecifikuje cestu k adresáru Defaults. "Defaults/" je pridané k tejto premennej, èím sa urèí umiestnenie databáz. Ak premenná nie je nastavená, jej implicitná hodnota je "~/GNUstep" .SH SÚBORY .IP WMAKER_USER_ROOT/Defaults/WindowMaker Toto je súbor, ktorý sa zapí¹e. .SH POZRI TIE® .BR getstyle (1), .BR wmaker (1) .SH AUTOR Autorom Window Makera je Alfredo K. Kojima <kojima@windowmaker.info>. .PP Túto manuálovú stránku napísal Marcelo Magallon <mmagallo@debian.org>. ������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/sk/wxpaste.1�����������������������������������������������������������������0000644�0001750�0001750�00000002201�13431646202�013721� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" Hey, Emacs! This is an -*- nroff -*- source file. .TH wxpaste 1 "March 1998" .SH MENO wxpaste \- zape cutbuffer na tandardn vstup .SH SYNTAX .B wxpaste [voby] .SH POPIS .B wxpaste vype obsah danho cutbuffera na tandardn vstup. Ak nie je dan iadny cutbuffer, pouije sa cutbuffer 0. .PP .SH VOBY .TP .B \-cutbuffer slo Dta bud vloen do danho cutbuffera namiesto tandardnho 0. .TP .B \-display displej Dta sa bud koprova do cutbufferov danho displeja/obrazovky. .TP .B \-selection [selekcia] Dta bud koprovan z danej selekcie. Ak sa vber zo selekcie nepodar, pouije sa cutbuffer. Implicitn hodnota pre selekciu je PRIMARY. .PP .SH CHYBY .TP \-selection mus by posled voba. Syntax me by upraven, ale brni tomu sptn kompatibilita. Typy selekci INCR a MULTIPLE nie s podporovan. V skutonosti je podporovan len jednoduch text, o by malo stai pre vinu uvateov takejto jednoduchej utilitky. .SH POZRI TIE .BR wxcopy (1), .BR wmaker (1) .SH AUTOR Autorom Window Makera je Alfredo K. Kojima <kojima@windowmaker.info>. .PP Tto manulov strnku napsal Marcelo Magallon <mmagallo@debian.org>. �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/sk/wxcopy.1������������������������������������������������������������������0000644�0001750�0001750�00000002404�13431646202�013564� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" Hey, Emacs! This is an -*- nroff -*- source file. .TH wxcopy 1 "September 1998" .SH NAME wxcopy \- kopruje tandardn vstup do cutbuffera .SH SYNOPSIS .B wxcopy [voby] [sbor] .SH DESCRIPTION .B wxcopy kopruje tandardn vstup alebo .I sbor do cutbuffera. Ak nie je dan cutbuffer, dta sa kopruj do cutbuffera 0 a ostan cutbuffery rotuj, ak existuj. Ak je dan cutbuffer, dta sa kopruj do toho cutbuffera a nevykon sa iadne rotovanie. .SH VOBY .TP .B \-cutbuffer slo pecifikuje slo cutbuffera, do ktorho sa bud koprova dta. .TP .B \-display displej Dta sa bud koprova do cutbufferov danho displeja/obrazovky. .TP .B \-nolimit Vypne normlny limit vekosti dt 64kb, m sa umon zvovanie buffera poda potreby. .TP .B \-clearselection Vyprzdni vlastnka PRIMARY selekcie. V praxi to znamen, e ke sa poksite vloi dta strednm tlatkom (naprklad), vloia sa dta z cutbuffera 0, namiesto prpadnej existujcej selelekcie myi. .PP .SH POZRI TIE .BR wxpaste (1), .BR wmaker (1) .SH AUTOR Autorom Window Makera je Alfredo K. Kojima <kojima@windowmaker.info>. .PP Tto manulov strnku napsal Marcelo Magallon <mmagallo@debian.org>. Kompatibilitu s binrnymi dtami a \-nolimit implementoval Luke Kendall <luke@research.canon.com.au>. ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/sk/wmsetbg.1�����������������������������������������������������������������0000644�0001750�0001750�00000003347�13431646202�013712� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" Hey, Emacs! This is an -*- nroff -*- source file. .TH wmsetbg 1 "January 1999" .SH MENO wmsetbg \- nastav pozadie hlavnho okna v X11 .SH SYNTAX .B wmsetbg [\-display] [\-\-version] [\-\-help] [{\-b|\-\-back\-color} \fIfarba\fP] [{\-t|\-\-tile}|{\-e|\-\-center}|{\-s|\-\-scale}|{\-a|\-\-maxscale} \fIobrzok\fP] [{\-d|\-\-dither}|{\-m|\-\-match}] [\-u|\-\-update\-wmaker] [{\-D|\-\-update\-domain} \fIdomna\fP] [{\-c|\-\-colors} \fIcpc\fP] [{\-p|\-\-parse} \fItextra\fP] [{\-w|\-\-workspace} \fIpracovn plocha\fP] .SH POPIS .B wmsetbg nata dan .I obrzok (XPM, PNG, jpeg, Tiff, raw PPM) a vlo ho do hlavnho okna. Obrzok mono zvi, alebo ho opakova aby vyplnil hlavn okno. Window Maker pouva tento prkaz interne na nastavenie pozadia pri tarte. .SH VOBY .TP .B \-a|\-\-maxscale zv dan \fIobrzok\fP pri dodran pomeru strn .TP .B \-e|\-\-center vlo \fIobrzok\fP do stredu okna .TP .B \-t|\-\-tile vytvra z \fIobrzku\fP dladice .TP .B \-s|\-\-scale roztiahne dan \fIobrzok\fP (tandardne) .TP .B \-d|\-\-dither rezervuje farby .TP .B \-m|\-\-match zhodn farby .TP .B \-u|\-\-update\-wmaker zape zmenu do databzy nastaven Window Makera .TP .B \-D|\-\-update\-domain zape zmenu do databzy \fIdomna\fP .TP .B \-c|\-\-colors poui poet farieb na kanl .TP .B \-p|\-\-parse parsuje dan \fItextru\fP ako \fIproplist style textru\fP .TP .B \-w|\-\-workspace nastav pozadie len na danej \fIpracovnej ploche\fP .TP .B \-\-help vype pomocn text .TP .B \-\-version vype slo verzie .SH POZRI TIE .BR wmaker (1) .SH AUTOR Autorom Window Makera je Alfredo K. Kojima <kojima@windowmaker.info>. wmsetbg napsal Dan Pascu <dan@windowmaker.info> .PP Tto manulov strnku napsal Marcelo Magallon <mmagallo@debian.org>. �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/sk/Makefile.am���������������������������������������������������������������0000644�0001750�0001750�00000000356�13431646202�014211� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������## Process this file with automake to produce Makefile.in mandir=@mandir@/sk man_MANS = \ geticonset.1 \ getstyle.1 \ seticons.1 \ setstyle.1 \ wdwrite.1 \ wmaker.1 \ wmsetbg.1 \ wxcopy.1 \ wxpaste.1 EXTRA_DIST = $(man_MANS) ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/geticonset.1�����������������������������������������������������������������0000644�0001750�0001750�00000002041�13642357774�014000� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" Hey, Emacs! This is an -*- nroff -*- source file. .TH geticonset 1 "January 1999" .SH NAME geticonset \- gets the current Window Maker icon set .SH SYNOPSIS .B geticonset .RI [ options ] .RI [ iconsetfile ] .SH DESCRIPTION .B geticonset reads the .I WMWindowAttributes domain, and writes the icon set found there either to stdout or to the file .IR iconsetfile . .SH OPTIONS .TP .B \-\-help print a help message with the list of options .TP .B \-\-version print the version of Window Maker from which the program comes .SH ENVIRONMENT .IP WMAKER_USER_ROOT specifies the initial path for the Defaults directory. "Defaults/" is appended to this variable to determine the actual location of the databases. If the variable is not set, it defaults to "~/GNUstep" .SH FILES .IP WMAKER_USER_ROOT/Defaults/WMWindowAttributes is the actual file that's read. .SH SEE ALSO .BR seticons (1), .BR wmaker (1) .SH AUTHOR This man page was written by Marcelo Magallon <mmagallo@debian.org>. .PP Window Maker was written by Alfredo K. Kojima <kojima@windowmaker.info>. �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/WindowMaker.1����������������������������������������������������������������0000644�0001750�0001750�00000000022�13431646202�014037� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.so man1/wmaker.1 ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/wdread.1���������������������������������������������������������������������0000644�0001750�0001750�00000002264�13431646202�013070� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.TH wdread 1 "April 2015" .SH "NAME" \fBwdread\fR \- read value from defaults database .PP .SH "SYNOPSIS" .B wdread .RI [ options ] .I domain .I key .PP .SH "DESCRIPTION" \fBwdread\fR\ gets the value associated with the key \fIkey\fR from the domain \fIdomain\fR and prints it on stdout. .PP .SH "OPTIONS" .TP .B \-\-help print a help message with the list of options .TP .B \-\-version print the version of Window Maker from which the program comes .PP .SH "EXIT STATUS" The program \fBwdread\fP will exit with the following code: .TP .B 0 when the \fIkey\fP was successfully found and its content printed. .TP .B 1 if the program was not invoked properly (unknown option or incorrect argument count). .TP .B 1 if the \fIdomain\fP's file could not be read (probably nonexistent domain). .TP .B 2 if the \fIkey\fP was not found in the \fIdomain\fP. .SH "SEE ALSO" .BR wdwrite (1), .BR wmaker (1) .SH "AUTHOR" Window Maker was written by Alfredo K. Kojima <kojima@windowmaker.info>, wdread is a part of Window Maker, was cowardly remade from wdwrite.c; by judas@hell on Jan 26 2001 .PP This manpage was written by Rodolfo García Peñas (kix) for the Debian GNU/Linux system (but may be used by others). ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/wmiv.1�����������������������������������������������������������������������0000644�0001750�0001750�00000001051�13431646202�012575� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.TH wmiv "1" "June 2015" .SH NAME wmiv \- quick image viewer using wrlib .SH SYNOPSIS .B wmiv .RI [ \,image(s)\/ | \,directory\/ ] .SH OPTIONS .TP .B \-\-help print help text .TP .B \-\-version print version .SH KEYS .TP [+] zoom in .TP [\-] zoom out .TP [Esc] actual size .TP [D] launch diaporama mode .TP [L] rotate image on the left .TP [Q] quit .TP [R] rotate image on the right .TP [▸] next image .TP [◂] previous image .TP [▴] first image .TP [▾] last image .SH AUTHOR .B wmiv is a part of Window Maker. It was written by David Maciejak. ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/wmsetbg.in�������������������������������������������������������������������0000644�0001750�0001750�00000007613�13431646202�013543� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" Hey, Emacs! This is an -*- nroff -*- source file. .TH wmsetbg 1 "April 2015" .SH NAME wmsetbg \- sets the background on the X11 display .SH SYNOPSIS .B wmsetbg .RI [ \-display " display]" .RI [ \-\-update-domain " domain|" \-\-update-wmaker ] .RI [ options ] .RI [ image ] .SH DESCRIPTION .B wmsetbg reads the specified .I image (in any format supported by the .I WRaster library) 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 .BR \-\-back\-color | \-b " \fIcolor\fP" the specified \fIcolor\fP is used as the background color for the \fItexture\fP. Window Maker temporary sets the background to this color while loading and processing the texture. You can specify colors using their X11 names or as an RGB triplet (either as "rgb:RR/GG/BB" or "#RRGGBB") (reference to appropriate manpage should be here). In the later case \fIcolor\fB is a quoted string. .TP .BR \-\-center | \-e centers the \fIimage\fP in the screen .TP .BR \-\-colors | \-c " \fIcount\fP" limit the number of colors per channel to use for the image .TP .BR \-display " \fIdisplay\fP" connect to the X \fIdisplay\fP .TP .BR \-\-dither | \-d enable color dithering on \fIimage\fP .TP .BR \-\-fillscale | \-f scales the specified \fIimage\fP to fill screen while preserving aspect ratio .TP .BR \-\-help | \-h print a help message with the list of options .TP .BR \-\-match | \-m use the best-matching-color algorithm when converting image to indexed color palette .TP .BR \-\-maxscale | \-a scales the specified \fIimage\fP to fit inside the screen preserving its aspect ratio .TP .BR \-\-parse | \-p " \fItexture\fP" parses the specified \fItexture\fP as a \fIproplist style texture\fP .TP .BR \-\-scale | \-s scales the specified \fIimage\fP to fill the screen (default) .TP .BR \-\-smooth | \-S use a smooth scaling algorithm when resizing \fIimage\fP .TP .BR \-\-tile | \-t tiles the specified \fIimage\fP .TP .BR \-\-update\-domain | \-D " \fIdomain\fP" updates the specified \fIdomain\fP database .TP .BR \-\-update\-wmaker | \-u updates the Window Maker defaults database .TP .BR \-\-version | \-v print the version of Window Maker from which the program comes .TP .BR \-\-workspace | \-w " \fIworkspace\fP" update background only for the specified \fIworkspace\fP @USE_XINERAMA@.TP @USE_XINERAMA@.BR \-\-xinerama | \-X @USE_XINERAMA@stretch image across Xinerama heads .SH "INDEXED COLOR SCREENS" If your screen is not in a \fBTrue Color\fP configuration (generally sold as 16,777,216 colors) but in a indexed color mode (256 colors, 16 colors, ... which are based on a \fBColorMap\fP) then Window Maker may need to process the image to convert it to a limited number of colors before using it for a background image. There are two options to choose what algorithm you want to use: .TP .BR \-\-match " or " \-m Search for the closest matching color from the current colormap; this is the fastest algorithm but may lead to less good-looking result. .TP .BR \-\-dither " or " \-d Use a more complex algorithm which modify surrounding pixels to get a closer-looking color on average; this is slower but provides better looking images. .LP If none is specified, then it is Window Maker's configuration choice that will be used. You can also use the option \fB\-\-colors\fP to reduce the total number of colors from the \fIimage\fP before the algorithm is applied. The value specified with the option defines the number of possible values for each primary color (red, green and blue), for example \fI8\fP would reduce the image to use only 8*8*8=512 colors before applying the conversion algorithm. .SH SEE ALSO .BR wmaker (1) .SH AUTHOR This man page was written by Marcelo Magallon <mmagallo@debian.org>. .PP Window Maker was written by Alfredo K. Kojima <kojima@windowmaker.info>. wmsetbg was written by Dan Pascu <dan@windowmaker.info> ���������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/seticons.1�������������������������������������������������������������������0000644�0001750�0001750�00000002146�13642357774�013471� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" Hey, Emacs! This is an -*- nroff -*- source file. .TH seticons 1 "March 1998" .SH NAME seticons \- sets the icon images used in Window Maker .SH SYNOPSIS .B seticons .I iconsfile .SH DESCRIPTION .B seticons reads .I iconsfile and writes its contents to the .I WMWindowAttributes domain, effectively 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 with the list of options .TP .B \-\-version print the version of Window Maker from which the program comes .SH ENVIRONMENT .IP WMAKER_USER_ROOT specifies the initial path for the Defaults directory. "Defaults/" is appended to this variable to determine the actual location of the databases. If the variable is not set, it defaults to "~/GNUstep" .SH FILES .IP WMAKER_USER_ROOT/Defaults/WMWindowAttributes This is the actual file that's written. .SH SEE ALSO .BR geticonset (1), .BR wmaker (1) .SH AUTHOR This man page was written by Marcelo Magallon <mmagallo@debian.org>. .PP Window Maker was written by Alfredo K. Kojima <kojima@windowmaker.info>. ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/wmagnify.1�������������������������������������������������������������������0000644�0001750�0001750�00000002644�13431646202�013445� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.TH wmagnify 1 "March 22, 2006" .SH NAME wmagnify \- magnify parts of the screen .SH SYNOPSIS .B wmagnify .RI [ options ] .SH DESCRIPTION \fBwmagnify\fR is a tool which allows you to magnify parts of the screen. The main difference from \fBxmag\fR is that the image is refreshed automatically, following the cursor on the screen. .SH OPTIONS The following command line options are available: .TP .BR \-display " \fIdisplay\fP" Show the magnified area on this \fIdisplay\fR. .TP .B \-\-help print a help message with the list of options. .TP .BR \-m " \fIfactor\fP" Change the magnification factor, default is 2. You can change this also while running the program, using the keys described below. .TP .BR \-r " \fIdelay\fP" Change the refresh delay, in milliseconds. Default is 200. .TP .BR \-vdisplay " \fIdisplay\fP" Take the area to be magnified from this \fIdisplay\fP instead of using the same display as for visualisation. .SH KEYS The following keys can be pressed while \fBwmagnify\fR is running to change its behaviour. .TP .BR 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 Change the magnification factor. .TP .BR <space> ", " f Freeze the camera, making it magnify only the current position. .TP .B n Create a new window. .TP .B m Show/hide the pointer hot spot mark. .SH SEE ALSO .BR xmag (1), .BR wmaker (1) .SH AUTHOR This manual page was written by Andrea Bolognani <eof@kiyuko.org> for the Debian project, but may be used by others. ��������������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/getstyle.1�������������������������������������������������������������������0000644�0001750�0001750�00000005575�13642357774�013513� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" Hey, Emacs! This is an -*- nroff -*- source file. .TH getstyle 1 "April 2015" .SH NAME getstyle \- dumps the current Window Maker style related configuration or creates a theme pack. .SH SYNOPSIS .B getstyle .RI [ \-t | \-\-theme-options "] [" \-p | \-\-pack "] [" "style file" ] .SH DESCRIPTION .B getstyle can either dump the current Window Maker style related configuration information to a file/stdout or create a self-contained theme pack. A theme pack is a directory that contains everything that is needed for a redistributable theme, including the style information and pixmaps used by it. Note that style information stored in the global configuration of the system is not read. .SH OPTIONS .TP .B \-\-help print a help message with the list of options. .TP .BR \-\-pack " or " \-p creates a theme pack in the directory named by the theme name appended with the .themed suffix. .TP .BR \-\-theme-options " or " \-t dumps theme related information too, which includes the root background texture. This option is always enabled when the \-p option is used. .TP .B \-\-version print the version of Window Maker from which the program comes. .SH "STYLE CONTENT" The following options are stored by default: .IR TitleJustify ", " ClipTitleFont ", " WindowTitleFont ", " MenuTitleFont , .IR MenuTextFont ", " IconTitleFont ", " LargeDisplayFont ", " HighlightColor , .IR HighlightTextColor ", " ClipTitleColor ", " CClipTitleColor ", " FTitleColor , .IR PTitleColor ", " UTitleColor ", " FTitleBack ", " PTitleBack , .IR UTitleBack ", " ResizebarBack ", " MenuTitleColor ", " MenuTextColor , .IR MenuDisabledColor ", " MenuTitleBack ", " MenuTextBack ", " IconBack , .IR IconTitleColor ", " IconTitleBack ", " FrameBorderWidth ", " FrameBorderColor , .IR FrameSelectedBorderColor ", " MenuStyle ", " WindowTitleExtendSpace , .IR MenuTitleExtendSpace ", and " MenuTextExtendSpace . If either \fB-t\fP or \fB--theme-options\fP is specified, in addition to the previous options, \fIWorkspaceBack\fP is also stored, along with any user-definable mouse cursor settings .RI ( NormalCursor ", " ArrowCursor ", " MoveCursor ", " ResizeCursor , .IR TopLeftResizeCursor ", " TopRightResizeCursor ", " BottomLeftResizeCursor , .IR BottomRightResizeCursor ", " VerticalResizeCursor ", " HorizontalResizeCursor , .IR WaitCursor ", " QuestionCursor ", " TextCursor ", " SelectCursor ) that are present. .SH ENVIRONMENT .IP WMAKER_USER_ROOT specifies the initial path for the Defaults directory. "Defaults/" is appended to this variable to determine the actual location of the databases. If the variable is not set, it defaults to "~/GNUstep" .SH FILES .IP WMAKER_USER_ROOT/Defaults/WindowMaker This is the actual file that gets written. .SH SEE ALSO .BR setstyle (1), .BR wmaker (1) .SH AUTHOR This man page was written by Marcelo Magallon <mmagallo@debian.org>. .PP Window Maker was written by Alfredo K. Kojima <kojima@windowmaker.info>. �����������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/wdwrite.1��������������������������������������������������������������������0000644�0001750�0001750�00000001663�13642357774�013332� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" Hey, Emacs! This is an -*- nroff -*- source file. .TH wdwrite 1 "January 1999" .SH NAME wdwrite \- writes keys and values to the defaults database .SH SYNOPSIS .B wdwrite .I domain .I option .I value .SH DESCRIPTION .B wdwrite writes .I option and .I value to the specified .IR domain . .SH OPTIONS .TP .B \-\-help print a help message with the list of options .TP .B \-\-version print the version of Window Maker from which the program comes .SH ENVIRONMENT .IP WMAKER_USER_ROOT specifies the initial path for the Defaults directory. "Defaults/" is appended to this variable to determine the actual location of the databases. If the variable is not set, it defaults to "~/GNUstep" .SH FILES The domains reside in WMAKER_USER_ROOT/Defaults/ .SH SEE ALSO .BR wdread (1), .BR wmaker (1) .SH AUTHOR This man page was written by Marcelo Magallon <mmagallo@debian.org>. .PP Window Maker was written by Alfredo K. Kojima <kojima@windowmaker.info>. �����������������������������������������������������������������������������WindowMaker-0.95.9/doc/ru/��������������������������������������������������������������������������0000755�0001750�0001750�00000000000�13642365214�012247� 5����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/ru/wmaker.1������������������������������������������������������������������0000644�0001750�0001750�00000016245�13642357774�013563� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" Hey, Emacs! This is an -*- nroff -*- source file. .TH Window\ Maker 1 "August 1998" .SH "НАИМЕНОВАНИЕ" wmaker \- оконный менеджер для X11 эмулирующий интерфейс NEXTSTEP. .SH "СИНТАКСИС" .B wmaker .I "[\-options]" .SH "ОПИСАНИЕ" Window Maker это оконный менеджер для X11 эмулирующий интерфейс NEXTSTEP. Он пытается быть максимально похожим на интерфейс NeXT, но отличается при необходимости. .SH "ОПЦИИ" .TP .B \-\-no\-cpp Отключить препроцессор файлов конфигурации. .TP .B \-\-no\-dock Не показывать док. .TP .B \-\-no\-clip Не показывать скрепку-индикатор рабочего стола. .TP .B \-display host:display.screen Указать дисплей для использования. На машинах с несколькими мониторами Window Maker автоматически будет контролировать все экраны. Если Вы хотите, чтобы Window Maker запустился только на определённом экране, то Вам понадобится указать номер экрана с помощью опции .B \-display Например, если Вы хотите, чтобы Window Maker запустился только на первом экране, то команда запуска будет выглядеть как: .B wmaker \-display :0.1 .TP .B \-\-version Указать номер версии и выйти. .TP .B \-\-visual\-id Указать ID графического режима. Смотрите .BR xdpyinfo (1) для списка доспупных графических режимов. .TP .B \-\-help Показать краткую справку. .PP .SH "ФАЙЛЫ" .TP .B ~/GNUstep/Defaults/WindowMaker Основные настройки Window Maker. .TP .B ~/GNUstep/Defaults/WMState Информация о доке (Dock) и индикаторе рабочих столов (Clip). НЕ редактируйте этот файл во время работы Window Maker. Он будет перезаписан. .TP .B ~/GNUstep/Defaults/WMRootMenu Содержит имя файла корневого меню или само меню в формате списка свойств. .TP .B ~/GNUstep/Defaults/WMWindowAttributes Атрибуты различных классов и копий приложений. Используйте редактор свойств (клик правой клавишей мыши на заголовке, в выпавшем меню выбрать пункт "Свойства...") вместо прямой модификации этого файла. Всего пара опций недоступны в редакторе свойств. .TP .B /usr/share/WindowMaker/Defaults/ Все указанные выше файлы ЧИТАЮТСЯ из этой папки, в том случае, если они отсутствуют среди пользовательских настроек, за исключением WMState, который КОПИРУЕТСЯ. Не важно, откуда файлы считаны; если необходимо записать настройки в эти файлы, то они будут записаны также и в пользовательские. .TP .B ~/GNUstep/Library/WindowMaker/autostart Этот скрипт автоматически выполняется при старте Window Maker. .TP .B ~/GNUstep/Library/WindowMaker/exitscript Этот скрипт автоматически выполняется перед завершением работы Window Maker. .B Заметка: Если Вы хотите запустить из этого скрипта что либо требующее работы сервера X, то убедитесь, что вы не используете команду .I SHUTDOWN из корневого меню для выхода из Window Maker. В противном случае сервер X может быть остановлен до исполнения срипта. .TP .B ~/GNUstep/Library/WindowMaker/ Здесь производится поиск файла меню, указанного в WMRootMenu… .TP .B /etc/X11/WindowMaker/ и здесь. В указанном порядке. В том случае, если указан не абсолютный путь. .TP .B ~/GNUstep/Library/WindowMaker/Pixmaps/ Здесь Window Maker производит поиск картинок. .TP .B ~/GNUstep/Library/WindowMaker/Backgrounds/ Здесь Window Maker ищет обои. .TP .B ~/GNUstep/Library/WindowMaker/Styles/ Здесь Window Maker производит поиск стилей (неправда… выглядит так, но Вам всё равно придётся указать полный путь; это просто место для красивой организации). .TP .B ~/GNUstep/Library/WindowMaker/Themes/ Здесь Window Maker ищет файлы тем (там же). .TP .B /usr/share/WindowMaker/Pixmaps/ Системные пиктограммы находятся здесь… .TP .B /usr/share/WindowMaker/Pixmaps/ и здесь. .TP .B /usr/share/WindowMaker/Styles/ Системные стили находятся здесь… .TP .B /usr/share/WindowMaker/Themes/ Угадайте… ;-) .SH "ОКРУЖЕНИЕ" .IP WMAKER_USER_ROOT Указывает начальный путь к папке Defaults. "Defaults/" приписывается к этой переменной, чтобы определить настоящее расположение данных. Если переменная не установлена, то её значение: "~/GNUstep". .IP GNUSTEP_LOCAL_ROOT Указыввает расположение общесистемной папки \fBlocal\fP GNUstep (это полезно, например, в тех случаях, где общесистемные настройки находятся на сетевом ресурсе). Если эта переменная пуста, то поиск происходит то ищется переменная GNUSTEP_SYSTEM_ROOT. .IP GNUSTEP_SYSTEM_ROOT указывает общесистемное расположение папки GNUstep. Если эта переменная пуста, то её значение: /etc/GNUstep .SH "СМОТРИ ТАКЖЕ" The Window Maker User Guide .PP The Window Maker FAQ .PP .BR X (7), .BR wdwrite (1), .BR wxcopy (1), .BR geticonset (1), .BR seticons (1), .BR wmaker (1), .BR wxpaste (1), .BR getstyle (1), .BR setstyle (1), .BR wmsetbg (1) .SH "АВТОРЫ" Window Maker написан Alfredo K. Kojima <kojima@windowmaker.info>, Dan Pascu <dan@windowmaker.org> и дополнен вкладом многих людей по всему интернету. .PP Это руководство было написано Marcelo E. Magallon, <mmagallo@debian.org>. Перевод на русский язык осуществил NIR aka Ginko <faust@gmx.com>. �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/ru/Makefile.in���������������������������������������������������������������0000644�0001750�0001750�00000041334�13642360054�014236� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = doc/ru ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ $(top_srcdir)/m4/ax_pthread.m4 \ $(top_srcdir)/m4/ld-version-script.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/windowmaker.m4 \ $(top_srcdir)/m4/wm_attributes.m4 \ $(top_srcdir)/m4/wm_cflags_check.m4 \ $(top_srcdir)/m4/wm_i18n.m4 \ $(top_srcdir)/m4/wm_imgfmt_check.m4 \ $(top_srcdir)/m4/wm_libexif.m4 $(top_srcdir)/m4/wm_libmath.m4 \ $(top_srcdir)/m4/wm_prog_cc_c11.m4 \ $(top_srcdir)/m4/wm_xext_check.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } man1dir = $(mandir)/man1 am__installdirs = "$(DESTDIR)$(man1dir)" NROFF = nroff MANS = $(man_MANS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ GFXLIBS = @GFXLIBS@ GREP = @GREP@ HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLIBS = @INTLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBBSD = @LIBBSD@ LIBEXIF = @LIBEXIF@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXINERAMA = @LIBXINERAMA@ LIBXMU = @LIBXMU@ LIBXRANDR = @LIBXRANDR@ LINGUAS = @LINGUAS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAGICKFLAGS = @MAGICKFLAGS@ MAGICKLIBS = @MAGICKLIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MANLANGDIRS = @MANLANGDIRS@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOLIBS = @PANGOLIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILMOFILES = @UTILMOFILES@ VERSION = @VERSION@ WINGSMOFILES = @WINGSMOFILES@ WINGS_VERSION = @WINGS_VERSION@ WMAKERMOFILES = @WMAKERMOFILES@ WPREFSMOFILES = @WPREFSMOFILES@ WRASTER_VERSION = @WRASTER_VERSION@ WUTIL_VERSION = @WUTIL_VERSION@ XCFLAGS = @XCFLAGS@ XFTCONFIG = @XFTCONFIG@ XFTFLAGS = @XFTFLAGS@ XFTLIBS = @XFTLIBS@ XGETTEXT = @XGETTEXT@ XLFLAGS = @XLFLAGS@ XLIBS = @XLIBS@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBRARY_PATH = @X_LIBRARY_PATH@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ defsdatadir = @defsdatadir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ inc_search_path = @inc_search_path@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lcov_output_directory = @lcov_output_directory@ lib_search_path = @lib_search_path@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@/ru mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pixmapdir = @pixmapdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ wprefs_bindir = @wprefs_bindir@ wprefs_datadir = @wprefs_datadir@ man_MANS = \ geticonset.1 \ getstyle.1 \ seticons.1 \ setstyle.1 \ wdwrite.1 \ wmaker.1 \ wmsetbg.1 \ wxcopy.1 \ wxpaste.1 EXTRA_DIST = $(man_MANS) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/ru/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu doc/ru/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-man1: $(man_MANS) @$(NORMAL_INSTALL) @list1=''; \ list2='$(man_MANS)'; \ test -n "$(man1dir)" \ && test -n "`echo $$list1$$list2`" \ || exit 0; \ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ { for i in $$list1; do echo "$$i"; done; \ if test -n "$$list2"; then \ for i in $$list2; do echo "$$i"; done \ | sed -n '/\.1[a-z]*$$/p'; \ fi; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ done; } uninstall-man1: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man1dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.1[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(MANS) installdirs: for dir in "$(DESTDIR)$(man1dir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-man install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-man1 install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-man uninstall-man: uninstall-man1 .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-man1 install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags-am uninstall uninstall-am uninstall-man \ uninstall-man1 .PRECIOUS: Makefile # 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. .NOEXPORT: ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/ru/geticonset.1��������������������������������������������������������������0000644�0001750�0001750�00000003110�13642357774�014424� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" Hey, Emacs! This is an -*- nroff -*- source file. .TH geticonset 1 "January 1999" .SH "НАИМЕНОВАНИЕ" geticonset \- считывает данные о наборе иконок Window Maker. .SH "СИНТАКСИС" .B geticonset .I [опции] [iconsetfile] .SH "ОПИСАНИЕ" .B geticonset читает домен WMWindowAttributes, и выводит настройки набора иконок на стандартный вывод или в файл .I iconsetfile. .SH "ОПЦИИ" .TP .B \-\-help Выводит справку. .TP .B \-\-version Выводит номер версии. .SH "ОКРУЖЕНИЕ" .IP WMAKER_USER_ROOT Указывает начальный путь к папке Defaults. "Defaults/" приписывается к этой переменной, чтобы определить настоящее расположение данных. Если переменная не установлена, то её значение: "~/GNUstep". .SH "ФАЙЛЫ" .IP WMAKER_USER_ROOT/Defaults/WMWindowAttributes Файл, из которого читаются данные. .SH "СМОТРИ ТАКЖЕ" .BR seticons (1), .BR wmaker (1) .SH "АВТОРЫ" Window Maker написан Alfredo K. Kojima <kojima@windowmaker.info>, Dan Pascu <dan@windowmaker.org> и дополнен вкладом многих людей по всему интернету. .PP Это руководство было написано Marcelo E. Magallon, <mmagallo@debian.org>. Перевод на русский язык осуществил NIR aka Ginko <faust@gmx.com>. ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/ru/seticons.1����������������������������������������������������������������0000644�0001750�0001750�00000003334�13642357774�014117� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" Hey, Emacs! This is an -*- nroff -*- source file. .TH seticons 1 "March 1998" .SH "НАИМЕНОВАНИЕ" seticons \- устанавливает набор иконок Window Maker. .SH "СИНТАКСИС" .B seticons .I iconsfile .SH "ОПИСАНИЕ" .B seticons читает .I iconsfile и пишет его содержимое в домен WMWindowAttributes, эффективно устанавливая набор иконок, который Window Maker использует для определённого класса программ (например: XTerm, "xterm.XTerm", "rxvt.XTerm", "pine.XTerm", etc.) .SH "ОПЦИИ" .TP .B \-\-help Выводит справку. .TP .B \-\-version Выводит номер версии. .SH "ОКРУЖЕНИЕ" .IP WMAKER_USER_ROOT Указывает начальный путь к папке Defaults. "Defaults/" приписывается к этой переменной, чтобы определить настоящее расположение данных. Если переменная не установлена, то её значение: "~/GNUstep". .SH "ОКРУЖЕНИЕ" .IP WMAKER_USER_ROOT/Defaults/WMWindowAttributes Это файл, в который идёт запись. .SH "СМОТРИ ТАКЖЕ" .BR geticonset (1), .BR wmaker (1) .SH "АВТОРЫ" Window Maker написан Alfredo K. Kojima <kojima@windowmaker.info>, Dan Pascu <dan@windowmaker.org> и дополнен вкладом многих людей по всему интернету. .PP Это руководство было написано Marcelo E. Magallon, <mmagallo@debian.org>. Перевод на русский язык осуществил NIR aka Ginko <faust@gmx.com>. ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/ru/getstyle.1����������������������������������������������������������������0000644�0001750�0001750�00000007402�13642357774�014130� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" Hey, Emacs! This is an -*- nroff -*- source file. .TH getstyle 1 "January 1999" .SH "НАИМЕНОВАНИЕ" getstyle \- делает дамп темы оформления Window Maker. .SH "СИНТАКСИС" .B getstyle [[\-t|\-\-theme-options] [\-p|\-\-pack] [файл стиля]] .SH "ОПИСАНИЕ" .B getstyle может как произвести дамп стиля Window Maker в файл или на стандартный вывод, так как создать файл темы оформления. Тема оформления это директория, содержащая всё, что необходимо для распространения темы оформления, включая настройки стиля и используемую графику. Заметьте, что информация о стиле не читается из файлов глобальных настроек. По умолчанию сохраняются указанные опции: \fITitleJustify\fP, \fIClipTitleFont\fP, \fIWindowTitleFont\fP, \fIMenuTitleFont\fP, \fIMenuTextFont\fP, \fIIconTitleFont\fP, \fILargeDisplayFont\fP, \fIHighlightColor\fP, \fIHighlightTextColor\fP, \fIClipTitleColor\fP, \fICClipTitleColor\fP, \fIFTitleColor\fP, \fIPTitleColor\fP, \fIUTitleColor\fP, \fIFTitleBack\fP, \fIPTitleBack\fP, \fIUTitleBack\fP, \fIResizebarBack\fP, \fIMenuTitleColor\fP, \fIMenuTextColor\fP, \fIMenuDisabledColor\fP, \fIMenuTitleBack\fP, \fIMenuTextBack\fP, \fIIconBack\fP, \fIIconTitleColor\fP, \fIIconTitleBack\fP, \fIFrameBorderWidth\fP, \fIFrameBorderColor\fP, \fIFrameSelectedBorderColor\fP, \fIMenuStyle\fP, \fIWindowTitleExtendSpace\fP, \fIMenuTitleExtendSpace\fP, и \fIMenuTextExtendSpace\fP. Если указан \fB\-t\fP или \fB\-\-theme-options\fP, то в дополнение к предыдущим опциям \fIтакже\fP сохраняется \fIWorkspaceBack\fP вместе с пользовательскими настройками стиля курсора мыши (\fINormalCursor\fP, \fIArrowCursor\fP, \fIMoveCursor\fP, \fIResizeCursor\fP, \fITopLeftResizeCursor\fP, \fITopRightResizeCursor\fP, \fIBottomLeftResizeCursor\fP, \fIBottomRightResizeCursor\fP, \fIVerticalResizeCursor\fP, \fIHorizontalResizeCursor\fP, \fIWaitCursor\fP, \fIQuestionCursor\fP, \fITextCursor\fP, \fISelectCursor\fP), которые указаны. .SH "ОПЦИИ" .TP .B \-t Делает дамп связанных с темой оформления данных, включая фон корневого окна. Эта опция всегда включена при применении опции \-p. .TP .B \-p Создаёт тему оформления в директории, названной по имени темы с добавлением суффикса .themed. .SH "ОКРУЖЕНИЕ" .IP WMAKER_USER_ROOT Указывает начальный путь к папке Defaults. "Defaults/" приписывается к этой переменной, чтобы определить настоящее расположение данных. Если переменная не установлена, то её значение: "~/GNUstep". .SH "ФАЙЛЫ" .IP WMAKER_USER_ROOT/Defaults/WindowMaker В указанный файл идёт запись данных. .SH "СМОТРИ ТАКЖЕ" .BR setstyle (1), .BR wmaker (1) .SH "АВТОРЫ" Window Maker написан Alfredo K. Kojima <kojima@windowmaker.info>, Dan Pascu <dan@windowmaker.org> и дополнен вкладом многих людей по всему интернету. .PP Это руководство было написано Marcelo E. Magallon, <mmagallo@debian.org>. Перевод на русский язык осуществил NIR aka Ginko <faust@gmx.com>. ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/ru/wdwrite.1�����������������������������������������������������������������0000644�0001750�0001750�00000002742�13642357774�013757� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" Hey, Emacs! This is an -*- nroff -*- source file. .TH wdwrite 1 "January 1999" .SH "НАИМЕНОВАНИЕ" wdwrite \- записывает пары ключ/значение в домен. .SH "СИНТАКСИС" .B wdwrite .I домен .I опция .I значение .SH "ОПИСАНИЕ" .B wdwrite записывает .I опцию и .I значение в указанный .I домен. .SH "ОПЦИИ" .TP .B \-\-help Вывести справочную информацию. .TP .B \-\-version Вывести номер версии. .SH "ОКРУЖЕНИЕ" .IP WMAKER_USER_ROOT Указывает начальный путь к папке Defaults. "Defaults/" приписывается к этой переменной, чтобы определить настоящее расположение данных. Если переменная не установлена, то её значение: "~/GNUstep". .SH "ФАЙЛЫ" Домены находятся в директории WMAKER_USER_ROOT/Defaults/ . .SH "СМОТРИ ТАКЖЕ" .BR wmaker (1) .SH "АВТОРЫ" Window Maker написан Alfredo K. Kojima <kojima@windowmaker.info>, Dan Pascu <dan@windowmaker.org> и дополнен вкладом многих людей по всему интернету. .PP Это руководство было написано Marcelo E. Magallon, <mmagallo@debian.org>. Перевод на русский язык осуществил NIR aka Ginko <faust@gmx.com>. ������������������������������WindowMaker-0.95.9/doc/ru/setstyle.1����������������������������������������������������������������0000644�0001750�0001750�00000005631�13642357774�014146� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" Hey, Emacs! This is an -*- nroff -*- source file. .TH setstyle 1 "January 1999" .SH "НАИМЕНОВАНИЕ" setstyle \- устанавливает опции связанные со стилем Window Maker или загружает тему оформления. .SH "СИНТАКСИС" .B setstyle .I "[\-\-no\-fonts] [\-\-no\-cursors] [\-\-help] [\-\-version]" .I файл .SH "ОПИСАНИЕ" .B setstyle читает .I файл и записывает его содержимое в домен WindowMaker, эффективно устанавливая тему оформления Window Maker. Если указанный путь является директорией, то он будет обработан как тема оформления и загружен соответственно. Если установлен флаг \fB\-\-no\-fonts\fP, то настройки, связанные со шрифтами (\fIIconTitleFont\fP, \fIClipTitleFont\fP, \fIMenuTextFont\fP, \fIMenuTitleFont\fP, \fIWindowTitleFont\fP), будут проигнорированы. Если указан флаг \fB\-\-no\-cursors\fP, то настройки курсора мыши (\fINormalCursor\fP, \fIArrowCursor\fP, \fIMoveCursor\fP, \fIResizeCursor\fP, \fITopLeftResizeCursor\fP, \fITopRightResizeCursor\fP, \fIBottomLeftResizeCursor\fP, \fIBottomRightResizeCursor\fP, \fIVerticalResizeCursor\fP, \fIHorizontalResizeCursor\fP, \fIWaitCursor\fP, \fIQuestionCursor\fP, \fITextCursor\fP, \fISelectCursor\fP) в стиле или теме будут игнорироваться. .SH "ОПЦИИ" .TP .B \-\-no\-fonts Игнорировать связанные со шрифтами настройки. .TP .B \-\-no\-cursors Игнорировать связанные со стилем курсора настройки .TP .B \-\-help Вывести справочную информацию .TP .B \-\-version Вывести номер версии .SH "ОКРУЖЕНИЕ" .IP WMAKER_USER_ROOT Указывает начальный путь к папке Defaults. "Defaults/" приписывается к этой переменной, чтобы определить настоящее расположение данных. Если переменная не установлена, то её значение: "~/GNUstep". .SH "ФАЙЛЫ" .IP WMAKER_USER_ROOT/Defaults/WindowMaker Это файл с которым идёт взаимодействие. .SH "СМОТРИ ТАКЖЕ" .BR getstyle (1), .BR wmaker (1) .SH "АВТОРЫ" Window Maker написан Alfredo K. Kojima <kojima@windowmaker.info>, Dan Pascu <dan@windowmaker.org> и дополнен вкладом многих людей по всему интернету. .PP Это руководство было написано Marcelo E. Magallon, <mmagallo@debian.org>. Перевод на русский язык осуществил NIR aka Ginko <faust@gmx.com>. �������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/ru/wxpaste.1�����������������������������������������������������������������0000644�0001750�0001750�00000004357�13431646202�013750� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" Hey, Emacs! This is an -*- nroff -*- source file. .TH wxpaste 1 "March 1998" .SH "НАИМЕНОВАНИЕ" wxpaste \- выводит содержимое буфера на стандартный вывод. .SH "СИНТАКСИС" .B wxpaste [опции] .SH "ОПИСАНИЕ" .B wxpaste выводит содержимое указанного буфера на стандартный вывод. Если буфер не указан, то по умолчанию будет использоваться буфер 0. .PP .SH "ОПЦИИ" .TP .B \-cutbuffer номер Данные будут браться из указанного буфера заместо умолчального буфера 0. .TP .B \-display имя\-дисплея Указывает дисплей откуда wxpaste будет брать данные. .TP .B \-selection [имя] Данные будут скопированы из именованого выбора. Если выборка из именованого выделения не удаётся, то используется буфер по умолчанию. Умолчальное значение именованого выбора \- PRIMARY. .PP .SH "ОШИБКИ" .TP Опция \-selection должна быть последней. Синтаксис мог бы быть и лучше, но обратная совместимость не позволяет этого сделать… Типы выбора INCR и MULTIPLE не поддерживаются. На самом деле поддерживаются только простые текстовые выделения, которых должно быть достаточно для большинства случаев использования этой утилиты. .SH "СМОТРИ ТАКЖЕ" .BR wxcopy (1), .BR wmaker (1) .SH "АВТОРЫ" Window Maker написан Alfredo K. Kojima <kojima@windowmaker.info>, Dan Pascu <dan@windowmaker.org> и дополнен вкладом многих людей по всему интернету. .PP Это руководство было написано Marcelo E. Magallon, <mmagallo@debian.org>. Перевод на русский язык осуществил NIR aka Ginko <faust@gmx.com>. ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/ru/wxcopy.1������������������������������������������������������������������0000644�0001750�0001750�00000004451�13431646202�013601� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" Hey, Emacs! This is an -*- nroff -*- source file. .TH wxcopy 1 "September 1998" .SH "НАИМЕНОВАНИЕ" wxcopy \- копирует стандартный ввод или файл в буфер. .SH "СИНТАКСИС" .B wxcopy [опции] [файл] .SH "ОПИСАНИЕ" .B wxcopy копирует стандартный ввод или .I файл в буфер. Если буфер не указан, то данные будут помещены в буфер 0 и содержимое других буферов будет смещено, в случае наличия такового. Если буфер указан, то данные будут скопированы в этот буфер и ротация буферов произведена не будет. .SH "ОПЦИИ" .TP .B \-cutbuffer номер Указывает номер буфера, в который будут скопированы данные. .TP .B \-display имя\-дисплея Данные будут скопированы в буфер указанного дисплея/экрана. .TP .B \-nolimit Отключает проверку допустимого размера данных в 64 килобайта, позволяя буферу расти до нужного размера. .TP .B \-clearselection Сбрасывает владельца PRIMARY буфера. На практике это означает, что когда Вы пытаетесь вставить данные кликом средней кнопки мыши (например), то данные будут выбираться из буфера 0, вместо существующего выделения. .PP .SH "СМОТРИ ТАКЖЕ" .BR wxpaste (1), .BR wmaker (1) .SH "АВТОРЫ" Window Maker написан Alfredo K. Kojima <kojima@windowmaker.info>, Dan Pascu <dan@windowmaker.org> и дополнен вкладом многих людей по всему интернету. Совместимость двоичных данных и опция \-nolimit реализованы Luke Kendall <luke@research.canon.com.au>. .PP Это руководство было написано Marcelo E. Magallon, <mmagallo@debian.org>. Перевод на русский язык осуществил NIR aka Ginko <faust@gmx.com>. �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/ru/wmsetbg.1�����������������������������������������������������������������0000644�0001750�0001750�00000007056�13431646202�013724� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" Hey, Emacs! This is an -*- nroff -*- source file. .TH wmsetbg 1 "January 1999" .SH "НАИМЕНОВАНИЕ" wmsetbg \- устанавливает фон дисплея X11. .SH "СИНТАКСИС" .B wmsetbg [\-display] [\-\-version] [\-\-help] [{\-b|\-\-back\-color} \fIцвет\fP] [{\-t|\-\-tile}|{\-e|\-\-center}|{\-s|\-\-scale}|{\-a|\-\-maxscale} . \fIизображение\fP] [{\-d|\-\-dither}|{\-m|\-\-match}] [\-u|\-\-update\-wmaker] [{\-D|\-\-update\-domain} \fIдомен\fP] [{\-c|\-\-colors} \fIцвета\fP] [{\-p|\-\-parse} \fIтекстура\fP] [{\-w|\-\-workspace} \fIрабочий стол\fP] .SH "ОПИСАНИЕ" .B wmsetbg читает указаное .I изображение (XPM, PNG, jpeg, Tiff, raw PPM) и размещает его в корневом окне. Возможно как растянуть изображение, так и расположить его аналогично плитке, чтобы оно заняло всё пространство. WindowMaker вызывает эту команду для установки изображения корневого окна при старте. .SH "ОПЦИИ" .TP .B \-a|\-\-maxscale Растягивает указаное \fIизображение\fP сохраняя соотношение сторон. .TP .B \-b|\-\-back\-color Указанный \fIцвет\fP используется как фоновый цвет для \fIтекстуры\fP. Window Maker временно устанавливает фон указанного цвета на то время, пока загружается и обрабатывается текстура. Вы можете указать цвета используя как их имена, так и RGB нотацию (или как "rgb:RR/GG/BB" или "#RRGGBB") (Смотрите .BR showrgb(1) для более полной информации). В последнем случае \fIцвет\fB указывается в кавычках. .TP .B \-e|\-\-center Центрирует указанное \fIизображение\fP. .TP .B \-t|\-\-tile Размещает указанное \fIизображение\fP аналогично плитке. .TP .B \-s|\-\-scale Растягивает указанное \fIизображение\fP (по умолчанию). .TP .B \-d|\-\-dither Размывать цвета. .TP .B \-m|\-\-match Соответствовать цветам. .TP .B \-u|\-\-update\-wmaker Обновить базу умолчальных настроек Window Maker. .TP .B \-D|\-\-update\-domain Обновить указанную \fIдоменную\fP базу. .TP .B \-c|\-\-colors Сколько цветов на канал использовать. .TP .B \-p|\-\-parse Обрабатывает указанную \fIтекстуру\fP как \fIтекстуру формата proplist\fP. .TP .B \-w|\-\-workspace Обновить фон только на указанном \fIрабочем столе\fP. .TP .B \-\-help Вывести справочную информацию. .TP .B \-\-version Вывести номер версии. .SH "СМОТРИ ТАКЖЕ" .BR wmaker (1) .SH "АВТОРЫ" Window Maker написан Alfredo K. Kojima <kojima@windowmaker.info>, Dan Pascu <dan@windowmaker.org> и дополнен вкладом многих людей по всему интернету. .PP Это руководство было написано Marcelo E. Magallon, <mmagallo@debian.org>. Перевод на русский язык осуществил NIR aka Ginko <faust@gmx.com>. ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/ru/Makefile.am���������������������������������������������������������������0000644�0001750�0001750�00000000355�13431646202�014221� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������## Process this file with automake to produce Makefile.in mandir=@mandir@/ru man_MANS = \ geticonset.1 \ getstyle.1 \ seticons.1 \ setstyle.1 \ wdwrite.1 \ wmaker.1 \ wmsetbg.1 \ wxcopy.1 \ wxpaste.1 EXTRA_DIST = $(man_MANS) �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/wmgenmenu.1������������������������������������������������������������������0000644�0001750�0001750�00000001711�13431646202�013620� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.TH wmgenmenu 1 "15 August 2011" .SH "NAME" \fBwmgenmenu\fR \- Writes a menu structure usable as ~/GNUstep/Defaults/WMRootMenu to stdout .PP .SH "SYNOPSIS" .B wmgenmenu .RI [ options ] .PP .SH "DESCRIPTION" \fBwmgenmenu\fR writes a menu structure usable as ~/GNUstep/Defaults/WMRootMenu to stdout. The output format is a \fIPropList\fP. .PP .SH "OPTIONS" .TP .B \-\-help print a help message with the list of options .TP .B \-\-version print the version of Window Maker from which the program comes .PP .SH "BUGS" The program is using a built-in structure and list of applications, which means it cannot discover new programs, but it filters the programs that cannot be found in the \fBPATH\fP. .SH "SEE ALSO" .BR wmmenugen (1), .BR wmaker (1) .SH "AUTHOR" wmgenmenu is a part of Window Maker. It was written by Carlos R. Mafra and Tamas TEVESZ. .PP This manpage was written by Rodolfo García Peñas (kix) for the Debian GNU/Linux system (but may be used by others). �������������������������������������������������������WindowMaker-0.95.9/doc/WPrefs.1���������������������������������������������������������������������0000644�0001750�0001750�00000003460�13431646202�013027� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.TH WPrefs 1 "March 2001" .SH NAME WPrefs \- Window Maker configuration tool .SH SYNOPSIS .B WPrefs .RI [ options ] .SH "DESCRIPTION" WPrefs.app is the preferences "editor" for the WindowMaker window manager. It can be used to set most of the preference options of WindowMaker and define it's applications menu. It also can change some settings that do not belong to WindowMaker. .PP Although WPrefs.app is designed to be easy to use, you should read the user guide to be fully aware of all available options and other features of WindowMaker that are not related to configuration. .PP \fIOnly options that have different values than what is found in the system-wide configuration file is saved.\fP .SH "OPTIONS" .TP .BI \-display " host:display.screen" specify display to use. .TP .B \-\-help print a help message with the list of options .TP .B \-\-version print the version of Window Maker from which the program comes .SH FILES .TP .B ~/GNUstep/Defaults/WindowMaker general Window Maker defaults. .TP .B /etc/GNUstep/Defaults/WindowMaker system wide Window Maker defaults. .TP .B ~/GNUstep/Defaults/WMRootMenu Contains the name of the file to read the root menu from or the menu itself, in property list format. .TP .B ~/GNUstep/Library/WindowMaker/autostart This script is automatically executed when Window Maker is started. WPrefs saves the mouse speed configuration is saved as a call for xset here. .SH SEE ALSO The Window Maker User Guide .PP The Window Maker FAQ .PP .BR wmaker (1), .BR wdread (1), .BR wdwrite (1) .SH AUTHOR Window Maker was written by Alfredo K. Kojima <kojima@windowmaker.info>, Dan Pascu <dan@windowmaker.info> with contributions from many people around the Internet. .PP This manual page was written by Marcelo E. Magallon, <mmagallo@debian.org>, for the Debian Project and might be used freely by others. ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/setstyle.1�������������������������������������������������������������������0000644�0001750�0001750�00000003716�13642357774�013522� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" Hey, Emacs! This is an -*- nroff -*- source file. .TH setstyle 1 "April 2015" .SH NAME setstyle \- set style related options for Window Maker or loads a theme .SH SYNOPSIS .B setstyle .RI [ options ] .IR stylefile | themepack .SH DESCRIPTION .B setstyle reads the file .I stylefile and writes its contents to the .I WMWindowMaker domain, effectively setting the Window Maker style. If the supplied path is a directory .RI ( themepack ), it will be treated as a theme pack and it will be loaded appropriately. .SH OPTIONS .TP .B \-\-help print a help message with the list of options. .TP .BR \-\-ignore " \fIkeyword\fP" ignore the attribute named \fIkeyword\fP from the style file. You can specify this option as many times as needed. You may find a non-exhaustive list of the keywords from the .BR getstyle (1) man page. .TP .B \-\-no\-cursors ignore cursor definition options from the style file .RI ( NormalCursor ", " ArrowCursor ", " MoveCursor ", " ResizeCursor , .IR TopLeftResizeCursor ", " TopRightResizeCursor ", " BottomLeftResizeCursor , .IR BottomRightResizeCursor ", " VerticalResizeCursor ", " HorizontalResizeCursor , .IR WaitCursor ", " QuestionCursor ", " TextCursor ", " SelectCursor ). .TP .B \-\-no\-fonts ignore font related options from the style file .RI ( IconTitleFont ", " ClipTitleFont ", " MenuTextFont , .IR MenuTitleFont ", " WindowTitleFont ). .TP .B \-\-version print the version of Window Maker from which the program comes. .SH ENVIRONMENT .IP WMAKER_USER_ROOT specifies the initial path for the Defaults directory. "Defaults/" is appended to this variable to determine the actual location of the databases. If the variable is not set, it defaults to "~/GNUstep" .SH FILES .IP WMAKER_USER_ROOT/Defaults/WindowMaker This is the actual file that's written. .SH SEE ALSO .BR getstyle (1), .BR wmaker (1) .SH AUTHOR This man page was written by Marcelo Magallon <mmagallo@debian.org>. .PP Window Maker was written by Alfredo K. Kojima <kojima@windowmaker.info>. ��������������������������������������������������WindowMaker-0.95.9/doc/wmaker.in��������������������������������������������������������������������0000644�0001750�0001750�00000013100�13642357774�013366� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" Hey, Emacs! This is an -*- nroff -*- source file. .TH "Window Maker" 1 "February 2015" .SH NAME wmaker \- X11 window manager with a NEXTSTEP look .SH SYNOPSIS .B wmaker .I "[-options]" .SH "DESCRIPTION" Window Maker is a X11 window manager with a NEXTSTEP look. It tries to emulate NeXT's look as much as possible, but it deviates from it as necessary. .SH "OPTIONS" .TP .BI \-display " host:display.screen" specify display to use. On multiheaded machines, Window Maker will automatically manage all screens. If you want Window Maker to manage only a specific screen, you must supply the screen number you want to have managed with the .B \-display command line argument. For example, if you want Window Maker to manage only screen 1, start it as: .EX wmaker -display :0.1 .EE .TP .B \-\-dont\-restore do not restore saved session .TP .B \-\-global_defaults_path print the path where the files for the default configuration are installed and exit .TP .B \-\-help print the list of command line options supported, one per line, and exit .TP .BI \-\-locale " locale" specify the locale (i18n language) to use; Window Maker will also set the variable .B LANG which will be inherited by all applications started from Window Maker .TP .B \-\-no\-autolaunch do not launch at start-up the applications that were marked in the configuration as autolanched .TP .B \-\-no\-clip do not show the workspace Clip .TP .B \-\-no\-dock do not show the application Dock .TP .B \-\-no\-drawer disable the Drawers in the Dock @!HAVE_INOTIFY@.TP @!HAVE_INOTIFY@.B \-\-no\-polling @!HAVE_INOTIFY@disable the periodic check on the configuration file to reload it automatically @USE_ICCCM_WMREPLACE@.TP @USE_ICCCM_WMREPLACE@.B \-\-replace @USE_ICCCM_WMREPLACE@ask the currently running window manager to let Window Maker take his place .TP .B \-\-static do not update or save automatically the configuration .TP .B \-\-version display Window Maker's version number and exit .TP .B \-\-visual\-id specify the ID of the visual to use; see .BR xdpyinfo (1) for a list of visuals available in your display .PP .SH FILES .TP .B ~/GNUstep/Defaults/WindowMaker general Window Maker defaults. .TP .B ~/GNUstep/Defaults/WMState information about the Dock and Clip. DON'T edit this while running Window Maker. It will be overwritten. .TP .B ~/GNUstep/Defaults/WMRootMenu Contains the name of the file to read the root menu from or the menu itself, in property list format. .TP .B ~/GNUstep/Defaults/WMWindowAttributes Attributes for different application classes and instances. Use the Attribute Editor (right drag the application's title bar, select Attributes) instead of modifying this file directly. There are just a few options not available using the Attributes Editor. .TP .B @defsdatadir@/ All the above-mentioned files are READ from here if not found except for WMState, which is COPIED from here. No matter where they are read from, if it's necessary to write configuration changes back into this files, user's files will be written to. .TP .B ~/GNUstep/Library/WindowMaker/autostart This script is automatically executed when Window Maker is started. .TP .B ~/GNUstep/Library/WindowMaker/exitscript This script is automatically executed immediately before Window Maker is exited. .B Note: If you need to run something that requires the X server to be running from this script, make sure you do not use the .I SHUTDOWN command from the root menu to exit Window Maker. Otherwise, the X server might be shut down before the script is executed. .TP .B ~/GNUstep/Library/WindowMaker/ The menu file indicated in WMRootMenu is looked for here... .TP .B @pkgdatadir@/ and here, in that order. Unless, the indicated path is an absolute path. .TP .B ~/GNUstep/Library/WindowMaker/Pixmaps/ Window Maker looks for \fBpixmaps\fP here .TP .B ~/GNUstep/Library/Icons/ Window Maker looks for \fBicons\fP here .TP .B ~/GNUstep/Library/WindowMaker/Backgrounds/ Window Maker looks for backgrounds here .TP .B ~/GNUstep/Library/WindowMaker/Styles/ Window Maker looks for style files here (not true... it looks like it does, but you have to specify the full path anyway, it's just a place to keep things nicely ordered) .TP .B ~/GNUstep/Library/WindowMaker/Themes/ Window Maker looks for theme files here (ibid) .TP .B @pkgdatadir@/Pixmaps/ System-wide (Window Maker-specific) pixmaps are located here .TP .B @pkgdatadir@/Styles/ System wide styles are here .TP .B @pkgdatadir@/Themes/ Guess... ;-) .SH ENVIRONMENT .IP WMAKER_USER_ROOT specifies the initial path for the Defaults directory. "Defaults/" is appended to this variable to determine the actual location of the databases. If the variable is not set, it defaults to "~/GNUstep" .IP GNUSTEP_LOCAL_ROOT specifies the location of the system-wide \fBlocal\fP GNUstep directory (this is useful, for example, in those cases where the system-wide location is really a network wide location). If this variable is empty, GNUSTEP_SYSTEM_ROOT is looked for. .IP GNUSTEP_SYSTEM_ROOT specifies the location of the system-wide GNUstep directory. If this variable is empty, it defaults to /etc/GNUstep .SH SEE ALSO The Window Maker User Guide .PP The Window Maker FAQ .PP .BR WPrefs (1), .BR X (7), .BR wxcopy (1), .BR wxpaste (1), .BR geticonset (1), .BR seticons (1), .BR getstyle (1), .BR setstyle (1), .BR wmsetbg (1), .BR wmgenmenu (1), .BR wmmenugen (1), .BR wdread (1), .BR wdwrite (1) .SH AUTHOR Window Maker was written by Alfredo K. Kojima <kojima@windowmaker.info>, Dan Pascu <dan@windowmaker.info> with contributions from many people around the Internet. .PP This manual page was created by Marcelo E. Magallon, <mmagallo@debian.org> and is maintained by the Window Maker team. ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/wxpaste.1��������������������������������������������������������������������0000644�0001750�0001750�00000002715�13431646202�013316� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" Hey, Emacs! This is an -*- nroff -*- source file. .TH wxpaste 1 "March 1998" .SH NAME wxpaste \- output a cutbuffer to stdout .SH SYNOPSIS .B wxpaste .RI [ options ] .SH DESCRIPTION .B wxpaste outputs the contents of the specified cutbuffer to stdout. If no cutbuffer is specified, the cutbuffer 0 will be used as default. .PP .SH OPTIONS .TP .BI \-\-cutbuffer " number" The data will be pasted from the specified cutbuffer, instead of the default 0. .TP .BI \-display " display\-name" Specifies the display where wxpaste should look for the data to be pasted. .TP .B \-\-help print a help message with the list of options. .TP .BR \-\-selection " [\fIselection\-name\fP]" The data will be copied from the named selection. If cutting from the selection fails, the cutbuffer will be used. The default value for the selection name is PRIMARY. .TP .B \-\-version print the version of Window Maker from which the program comes. .PP .SH BUGS When used without a selection name, the \fI\-\-selection\fP option must be the last one. The syntax could be cleaned, but backwards compatibility prevents that... \fIINCR\fP and \fIMULTIPLE\fP selection types are not handled. Actually, only simple text selections are handled, which should be enough for most uses of a utility such as this. .SH SEE ALSO .BR wxcopy (1), .BR wmaker (1) .SH AUTHOR This man page was written by Marcelo Magallon <mmagallo@debian.org>. .PP Window Maker was written by Alfredo K. Kojima <kojima@windowmaker.info>. ���������������������������������������������������WindowMaker-0.95.9/doc/cs/��������������������������������������������������������������������������0000755�0001750�0001750�00000000000�13642365214�012226� 5����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/cs/wmaker.1������������������������������������������������������������������0000644�0001750�0001750�00000011237�13642357774�013536� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" Hey, Emacs! This is an -*- nroff -*- source file. .TH Window\ Maker 1 "Srpen 1998" .SH JMNO wmaker \- okenn manaer pro X11 se vzhledem NEXTSTEPu .SH SYNTAXE .B wmaker .I "[-volby]" .SH "POPIS" Window Maker je okenn manaer pro X11 se vzhledem NEXTSTEPu. Sna se napodobit vzhled NeXTu jak jen to je mon, ale v ppad poteby tento trend nedodruje. .SH "VOLBY" .TP .B \-\-no\-cpp zakzat preprocessing konfiguranch soubor .TP .B \-\-no\-dock neotvrat Dok aplikac .TP .B \-\-no\-clip neotvrat Sponku pracovnch ploch .TP .B \-display host:display.screen pout danou obrazovku. Na strojch s vce obrazovkami bude Window Maker automaticky spravovat vechny obrazovky. Pokud chcete, aby Window Maker spravoval jen specifickou obrazovku, muste zadat slo obrazovky pomoc argumentu pkazov dky .B \-display. Napklad, pokud chcete, aby Window Maker spravoval jen obrazovku 1, spuste ho takto: .B wmaker -display :0.1 .TP .B \-\-version vype verzi a ukon se .TP .B \-\-visual\-id ur sla obrazovho reimu. Spuste .BR xdpyinfo (1) pro seznam obrazovch reim dostupnch na vaem displeji. .TP .B \-\-help vype krtk pomocn text .PP .SH SOUBORY .TP .B ~/GNUstep/Defaults/WindowMaker veobecn nastaven Window Makera. .TP .B ~/GNUstep/Defaults/WMState informace o Doku a Sponce. Neditujte za bhu Window Makera. Bude pepsan. .TP .B ~/GNUstep/Defaults/WMRootMenu Obsahuje jmno souboru, z kterho se m nast hlavn menu nebo menu samotn ve formtu proplist. .TP .B ~/GNUstep/Defaults/WMWindowAttributes Atributy pro rzn tdy a instance aplikac. Pouijte editor nastaven (stisknte prav tlatko myi na horn lit aplikace, zvolte Atributy) namsto pmho editovn tohoto souboru. Je jen mlo nastaven, kter nejsou dostupn z editora nastaven. .TP .B /usr/share/WindowMaker/Defaults/ Vechny ve uveden soubory se NATAJ odtud. Pokud se je nepoda najt, krom WMState, kter se odtud ZKOPRUJE. Nezle na tom, odkud jsou natan. Pokud je poteba zapsat zmnu konfigurace zpt do tchto soubor, zapou se do uivatelskch soubor. .TP .B ~/GNUstep/Library/WindowMaker/autostart Tento skript se automaticky vykon pri startu Window Makera. .TP .B ~/GNUstep/Library/WindowMaker/exitscript Tento skript se automaticky vykon bezprostedn ped ukonenm Window Makera. .B Poznmka: Kdy potebujete spustit z tohoto skriptu nco, co vyaduje sputn X server, tak nepouvejte na ukonen Window Makera pkaz .I SHUTDOWN z hlavnho menu. Jinak se me stt, e X server se ukon dv ne se vykon tento skript. .TP .B ~/GNUstep/Library/WindowMaker/ Soubor menu, jeho nzev je uveden v souboru WMRootMenu, se hled zde... .TP .B /etc/X11/WindowMaker/ a zde, v tomto poad, pokud nzev nen absolutn cesta. .TP .B ~/GNUstep/Library/WindowMaker/Pixmaps/ Zde hled Window Maker obrzky .TP .B ~/GNUstep/Library/WindowMaker/Backgrounds/ Zde hled Window Maker pozad .TP .B ~/GNUstep/Library/WindowMaker/Styles/ Zde hled Window Maker soubory se styly (ne pln... vypad to tak, ale i tak muste zadat plnou cestu. Je to jen vyhrazen msto, aby byly vci pkn uspodan) .TP .B ~/GNUstep/Library/WindowMaker/Themes/ Zde hled Window Maker soubory s tmaty (viz. ve) .TP .B /usr/share/WindowMaker/Pixmaps/ Obrzky spolon pro cel systm se nachzej zde... .TP .B /usr/share/WindowMaker/Pixmaps/ a zde. .TP .B /usr/share/WindowMaker/Styles/ Styly spolon pro cel systm se nachzej zde .TP .B /usr/share/WindowMaker/Themes/ A te to zkuste sami... ;-) .SH PROMNN PROSED .IP WMAKER_USER_ROOT specifikuje cestu k adresi Defaults. "Defaults/" je pidn k tto promnn, m se ur umstn databz. Pokud promnn nen nastaven, ta jej implicitn hodnota je "~/GNUstep" .IP GNUSTEP_LOCAL_ROOT specifikuje umstn systmovho \fBloklnho\fP GNUstep adrese (to je uiten v ppad, e umstn adrese spolenho pro cel systm je ve skutenosti spolen pro celou s). Kdy je tato promnn przdna, pouije se GNUSTEP_SYSTEM_ROOT. .IP GNUSTEP_SYSTEM_ROOT specifikuje umstn systmovho GNUstep adrese. Pokud je tato promnn przdna, tak jej implicitn hodnota je /etc/GNUstep .SH PODVEJTE SE TAK The Window Maker User Guide (Uivatelsk pruka Window Makera) .PP The Window Maker FAQ (asto kladen dotazy) .PP .BR X (7), .BR wdwrite (1), .BR wxcopy (1), .BR geticonset (1), .BR seticons (1), .BR wmaker (1), .BR wxpaste (1), .BR getstyle (1), .BR setstyle (1), .BR wmsetbg (1) .SH AUTOR Autoi Window Makera jsou Alfredo K. Kojima <kojima@windowmaker.info>, Dan Pascu <dan@windowmaker.info> a mnoho dalch lid z celho svta. .PP Tuto manulovou strnku napsal Marcelo E. Magallon, <mmagallo@debian.org>. .PP Do etiny peloil Ji Hndek <jiri.hnidek@vslib.cz> �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/cs/Makefile.in���������������������������������������������������������������0000644�0001750�0001750�00000041334�13642360054�014215� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = doc/cs ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ $(top_srcdir)/m4/ax_pthread.m4 \ $(top_srcdir)/m4/ld-version-script.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/windowmaker.m4 \ $(top_srcdir)/m4/wm_attributes.m4 \ $(top_srcdir)/m4/wm_cflags_check.m4 \ $(top_srcdir)/m4/wm_i18n.m4 \ $(top_srcdir)/m4/wm_imgfmt_check.m4 \ $(top_srcdir)/m4/wm_libexif.m4 $(top_srcdir)/m4/wm_libmath.m4 \ $(top_srcdir)/m4/wm_prog_cc_c11.m4 \ $(top_srcdir)/m4/wm_xext_check.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } man1dir = $(mandir)/man1 am__installdirs = "$(DESTDIR)$(man1dir)" NROFF = nroff MANS = $(man_MANS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ GFXLIBS = @GFXLIBS@ GREP = @GREP@ HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLIBS = @INTLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBBSD = @LIBBSD@ LIBEXIF = @LIBEXIF@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXINERAMA = @LIBXINERAMA@ LIBXMU = @LIBXMU@ LIBXRANDR = @LIBXRANDR@ LINGUAS = @LINGUAS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAGICKFLAGS = @MAGICKFLAGS@ MAGICKLIBS = @MAGICKLIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MANLANGDIRS = @MANLANGDIRS@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOLIBS = @PANGOLIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILMOFILES = @UTILMOFILES@ VERSION = @VERSION@ WINGSMOFILES = @WINGSMOFILES@ WINGS_VERSION = @WINGS_VERSION@ WMAKERMOFILES = @WMAKERMOFILES@ WPREFSMOFILES = @WPREFSMOFILES@ WRASTER_VERSION = @WRASTER_VERSION@ WUTIL_VERSION = @WUTIL_VERSION@ XCFLAGS = @XCFLAGS@ XFTCONFIG = @XFTCONFIG@ XFTFLAGS = @XFTFLAGS@ XFTLIBS = @XFTLIBS@ XGETTEXT = @XGETTEXT@ XLFLAGS = @XLFLAGS@ XLIBS = @XLIBS@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBRARY_PATH = @X_LIBRARY_PATH@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ defsdatadir = @defsdatadir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ inc_search_path = @inc_search_path@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lcov_output_directory = @lcov_output_directory@ lib_search_path = @lib_search_path@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@/cs mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pixmapdir = @pixmapdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ wprefs_bindir = @wprefs_bindir@ wprefs_datadir = @wprefs_datadir@ man_MANS = \ geticonset.1 \ getstyle.1 \ seticons.1 \ setstyle.1 \ wdwrite.1 \ wmaker.1 \ wmsetbg.1 \ wxcopy.1 \ wxpaste.1 EXTRA_DIST = $(man_MANS) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/cs/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu doc/cs/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-man1: $(man_MANS) @$(NORMAL_INSTALL) @list1=''; \ list2='$(man_MANS)'; \ test -n "$(man1dir)" \ && test -n "`echo $$list1$$list2`" \ || exit 0; \ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ { for i in $$list1; do echo "$$i"; done; \ if test -n "$$list2"; then \ for i in $$list2; do echo "$$i"; done \ | sed -n '/\.1[a-z]*$$/p'; \ fi; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ done; } uninstall-man1: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man1dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.1[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(MANS) installdirs: for dir in "$(DESTDIR)$(man1dir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-man install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-man1 install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-man uninstall-man: uninstall-man1 .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-man1 install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags-am uninstall uninstall-am uninstall-man \ uninstall-man1 .PRECIOUS: Makefile # 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. .NOEXPORT: ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/cs/geticonset.1��������������������������������������������������������������0000644�0001750�0001750�00000001765�13642357774�014421� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" Hey, Emacs! This is an -*- nroff -*- source file. .TH geticonset 1 "Leden 1999" .SH JMNO geticonset \- extrahuje aktuln sadu ikon Window Makera .SH SYNTAXE .B geticonset .I [volby] [soubor] .SH POPIS .B geticonset nata domnu WMWindowAttributes a zape sadu nalezench ikon bu na standardtn vstup nebo do .I souboru. .SH VOLBY .TP .B \-\-help vype npovdu .TP .B \-\-version vype slo verze .SH PROMNN PROSTED .IP WMAKER_USER_ROOT specifikuje cestu k adresi Defaults. etzec "Defaults/" je pidn k tto promnn, m se ur umstn databz. Jakmile promnn nen nastaven, tak jej implicitn hodnota je "~/GNUstep" .SH SOUBORY .IP WMAKER_USER_ROOT/Defaults/WMWindowAttributes Toto je soubor, kter se zape. .SH PODVEJTE SE TAK .BR seticons (1), .BR wmaker (1) .SH AUTOR Autorem Window Makera je Alfredo K. Kojima <kojima@windowmaker.info>. .PP Tuto manulovou strnku napsal Marcelo Magallon <mmagallo@debian.org>. .PP Do etiny peloil Ji Hndek <jiri.hnidek@vslib.cz>. �����������WindowMaker-0.95.9/doc/cs/seticons.1����������������������������������������������������������������0000644�0001750�0001750�00000002046�13642357774�014075� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" Hey, Emacs! This is an -*- nroff -*- source file. .TH seticons 1 "Bezen 1998" .SH JMNO seticons \- nastav ikony pro Window Maker .SH SYNTAXe .B seticons .I soubor .SH POPIS .B seticons nata .I soubor a zape jeho obsah do domny WMWindowAttributes, m se nastav ikony, kter pouv Window Maker pro dan tdy (napklad XTerm, "xterm.XTerm", "pine.XTerm", atd.) .SH VOLBY .TP .B \-\-help vype npovdu .TP .B \-\-version vype slo verze .SH PROMNN PROSTED .IP WMAKER_USER_ROOT specifikuje cestu k adresi Defaults. etzec "Defaults/" je pidn k tto promnn, m se ur umstn databz. Jakmile promnn nen nastaven, tak jej implicitn hodnota je "~/GNUstep" .SH SOUBORY .IP WMAKER_USER_ROOT/Defaults/WMWindowAttributes Toto je soubor, kter se zape. .SH PODVEJTE SE TAK .BR geticonset (1), .BR wmaker (1) .SH AUTOR Autorem Window Makera je Alfredo K. Kojima <kojima@windowmaker.info>. .PP Tuto manulovou strnku napsal Marcelo Magallon <mmagallo@debian.org>. .PP Do etiny peloil Ji Hndek <jiri.hnidek@vslib.cz>. ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/cs/getstyle.1����������������������������������������������������������������0000644�0001750�0001750�00000005500�13642357774�014104� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" Hey, Emacs! This is an -*- nroff -*- source file. .TH getstyle 1 "Leden 1999" .SH JMÉNO getstyle \- vytvoøí balík s aktuálním stylem Window Makera. .SH SYNTAXE .B getstyle [[\-t|\-\-theme-options] [\-p|\-\-pack] [soubor se stylem]] .SH POPIS .B getstyle mù¾e buï vypsat konfiguraèní informace aktuálního stylu Window Makera do souboru/standardního výstupu nebo vytvoøit samostatný balík s tématem. Balík s tématem je adresáø, který obsahuje v¹echno potøebné pro distributovatelné téma, informace o stylech a obrázcích. Dejte pozor na to, ¾e informace o stylu ulo¾ené v globální konfiguraci systému se nenaèítají. Standardnì se ulo¾í nasledné vlastnosti: \fITitleJustify\fP, \fIClipTitleFont\fP, \fIWindowTitleFont\fP, \fIMenuTitleFont\fP, \fIMenuTextFont\fP, \fIIconTitleFont\fP, \fILargeDisplayFont\fP, \fIHighlightColor\fP, \fIHighlightTextColor\fP, \fIClipTitleColor\fP, \fICClipTitleColor\fP, \fIFTitleColor\fP, \fIPTitleColor\fP, \fIUTitleColor\fP, \fIFTitleBack\fP, \fIPTitleBack\fP, \fIUTitleBack\fP, \fIResizebarBack\fP, \fIMenuTitleColor\fP, \fIMenuTextColor\fP, \fIMenuDisabledColor\fP, \fIMenuTitleBack\fP, \fIMenuTextBack\fP, \fIIconBack\fP, \fIIconTitleColor\fP, \fIIconTitleBack\fP, \fIFrameBorderWidth\fP, \fIFrameBorderColor\fP, \fIFrameSelectedBorderColor\fP, \fIMenuStyle\fP, \fIWindowTitleExtendSpace\fP, \fIMenuTitleExtendSpace\fP, a \fIMenuTextExtendSpace\fP. Jakmile je dána volba \fB-t\fP nebo \fB--theme-options\fP, vlastnost \fIWorkspaceBack\fP se ulo¾í také, spolu se všemi myši nastavením kurzoru uživatelsky definovatelné (\fINormalCursor\fP, \fIArrowCursor\fP, \fIMoveCursor\fP, \fIResizeCursor\fP, \fITopLeftResizeCursor\fP, \fITopRightResizeCursor\fP, \fIBottomLeftResizeCursor\fP, \fIBottomRightResizeCursor\fP, \fIVerticalResizeCursor\fP, \fIHorizontalResizeCursor\fP, \fIWaitCursor\fP, \fIQuestionCursor\fP, \fITextCursor\fP, \fISelectCursor\fP) které jsou přítomny. .SH VOLBY .TP .B \-t ulo¾í i informace související s tématem, co¾ je textura pozadí hlavního okna. Tato volba je v¾dy nastavená, jakmile je pou¾itá volba \-p. .TP .B \-p vytvoøí balík s tématem v adresáøi nazvaným podla jména tématu s pøíponou .themed. .SH PROMÌNNÉ PROSTØEDÍ .IP WMAKER_USER_ROOT specifikuje cestu k adresáøi Defaults. Øetìzec "Defaults/" je pøidán k této promìnné, èím¾ se urèí umístìní databází. Jakmile promìnná není nastavená, tak její implicitní hodnota je "~/GNUstep" .SH SOUBORY .IP WMAKER_USER_ROOT/Defaults/WindowMaker Toto je soubor, který se zapí¹e. .SH PODÍVEJTE SE TAKÉ .BR setstyle (1), .BR wmaker (1) .SH AUTOR Autorem Window Makera je Alfredo K. Kojima <kojima@windowmaker.info>. .PP Tuto manuálovou stránku napsal Marcelo Magallon <mmagallo@debian.org>. .PP Do èe¹tiny pølo¾il Jiøí Hnídek <jiri.hnidek@vslib.cz>. ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/cs/wdwrite.1�����������������������������������������������������������������0000644�0001750�0001750�00000001621�13642357774�013731� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" Hey, Emacs! This is an -*- nroff -*- source file. .TH wdwrite 1 "Leden 1999" .SH JMNO wdwrite \- zape kle a hodnoty do databze standardnch nastaven .SH SYNTAXE .B wdwrite .I domna .I volba .I hodnota .SH POPIS .B wdwrite zape .I volbu a .I hodnotu do dan .I domny. .SH VOLBY .TP .B \-\-help vype npovdu .TP .B \-\-version vype slo verze .SH PROMNN PROSTED .IP WMAKER_USER_ROOT specifikuje cestu k adresi Defaults. etzec "Defaults/" je pidn k tto promnn, m se ur umstn databz. Jakmile promnn nen nastaven, tak jej implicitn hodnota je "~/GNUstep" .SH SOUBORY Domny se nachzej v WMAKER_USER_ROOT/Defaults/ .SH PODVEJTE SE TAK .BR wmaker (1) .SH AUTOR Autorem Window Makera je Alfredo K. Kojima <kojima@windowmaker.info>. .PP Tuto manulovou strnku napsal Marcelo Magallon <mmagallo@debian.org>. .PP Do etiny peloil Ji Hndek <jiri.hnidek@vslib.cz> ���������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/cs/setstyle.1����������������������������������������������������������������0000644�0001750�0001750�00000003705�13642357774�014125� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" Hey, Emacs! This is an -*- nroff -*- source file. .TH setstyle 1 "Leden 1999" .SH JMÉNO setstyle \- zmìní nastavení Window Makera související se stylem nebo zavede téma .SH SYNTAXE .B setstyle .I "[--no-fonts] [--help] [--version]" .I soubor se stylem .SH DESCRIPTION .B setstyle naèítá .I soubor se stylem a zapí¹e jeho obsah do domény Window Makera, èím¾ nastaví aktuální styl Window Makera. Jakmile je poskytnutá cesta, adresáø bude pova¾ovaný za balík s tématem a podla toho bude i zavedený. Jakmile je daný argument \fB\-\-no\-fonts\fP, nastavení související s fonty (\fIIconTitleFont\fP, \fIClipTitleFont\fP, \fIMenuTextFont\fP, \fIMenuTitleFont\fP, \fIWindowTitleFont\fP) v souboru se stylem budou ignorované. Pokud je uvedeno \fB\-\-no\-cursors\fP vlajky, definice kurzoru myši (\fINormalCursor\fP, \fIArrowCursor\fP, \fIMoveCursor\fP, \fIResizeCursor\fP, \fITopLeftResizeCursor\fP, \fITopRightResizeCursor\fP, \fIBottomLeftResizeCursor\fP, \fIBottomRightResizeCursor\fP, \fIVerticalResizeCursor\fP, \fIHorizontalResizeCursor\fP, \fIWaitCursor\fP, \fIQuestionCursor\fP, \fITextCursor\fP, \fISelectCursor\fP) ve stylu a tématu budou ignorovány. .SH VOLBY .TP .B \-\-no\-fonts ignorovat nastavení fontù v souboru se stylem. .TP .B \-\-help vypí¹e nápovìdu .TP .B \-\-version vypí¹e èíslo verze .SH PROMìNNÉ PROSTØEDÍ .IP WMAKER_USER_ROOT specifikuje cestu k adresáøi Defaults. Øetìzec "Defaults/" je pøidán k této promìnné, èím¾ se urèí umístìní databází. Jakmile promìnná není nastavená, tak její implicitní hodnota je "~/GNUstep" .SH SOUBORY .IP WMAKER_USER_ROOT/Defaults/WindowMaker Toto je soubor, který se zapí¹e. .SH PODÍVEJTE SE TAKÉ .BR getstyle (1), .BR wmaker (1) .SH AUTOR Autorem Window Makera je Alfredo K. Kojima <kojima@windowmaker.info>. .PP Tuto manuálovou stránku napsal Marcelo Magallon <mmagallo@debian.org>. .PP Do èe¹tiny pøelo¾il Jiøí Hnídek <jiri.hnidek@vslib.cz>. �����������������������������������������������������������WindowMaker-0.95.9/doc/cs/wxpaste.1�����������������������������������������������������������������0000644�0001750�0001750�00000002403�13431646202�013715� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" Hey, Emacs! This is an -*- nroff -*- source file. .TH wxpaste 1 "Bezen 1998" .SH JMNO wxpaste \- zape vyrovnvac pam na standardn vstup .SH SYNTAXE .B wxpaste [volby] .SH POPIS .B wxpaste vype obsah dan vyrovnvac pamti na standardn vstup. Jakmile nen zadna dn vyrovnvac pam, tak se pouije vyrovnvac pam 0. .PP .SH VOLBY .TP .B \-cutbuffer slo Data budou vloena z dan vyrovnvac pamti namsto standardn 0. .TP .B \-display displej Data se budou koprovat z vyrovnvac pamti danho displeje/obrazovky. .TP .B \-selection [selekcia] Data budou koprovan z dan selekce. Jakmile se vbr ze selekce nepoda, tak se pouije vyrovnvac pam. Implicitn hodnota pro selekci je PRIMARY. .PP .SH CHYBY \-selection mus bt posledn volba. Syntaxe me bt upraven, ale brn tomu patn kompatibilita. Typy selekc INCR a MULTIPLE nejsou podporovan. Ve skutenosti je podporovan jen jednoduch text, co by mlo stait pro vtinu uivatel takovto jednoduch utilitky. .SH PODVEJTE SE TAK .BR wxcopy (1), .BR wmaker (1) .SH AUTOR Autorem Window Makera je Alfredo K. Kojima <kojima@windowmaker.info>. .PP Tuto manulovou strnku napsal Marcelo Magallon <mmagallo@debian.org>. .PP Do etiny peloil Ji Hndek <jiri.hnidek@vslib.cz>. �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/cs/wxcopy.1������������������������������������������������������������������0000644�0001750�0001750�00000002647�13431646202�013565� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" Hey, Emacs! This is an -*- nroff -*- source file. .TH wxcopy 1 "Z 1998" .SH JMNO wxcopy \- kopruje standartn vstup do vyrovnvac pamti .SH SYNOPSIS .B wxcopy [volby] [soubor] .SH POPIS .B wxcopy kopruje standartn vstup nebo .I soubor do vyrovnvac pamti. Jakmile nen dn njak vyrovnvac pam, tak se data kopruj do vyrovnvac pamti 0 a ostan vyrovnvac pamti rotuj, jestlie ovem existuj. Pokud je dn vyrovnvac pam, tak se data kopruj do n a nevykon se dn rotovn. .SH VOLBY .TP .B \-cutbuffer slo Specifikuje slo vyrovnvac pamti, do kter se budou koprovat data. .TP .B \-display displej Data se budou koprovat do vyrovnvac pamti danho displeje/obrazovky. .TP .B \-nolimit Vypne normln limit velikosti dat 64kb, m se umon zvtovn vyrovnvac pamti podla poteby. .TP .B \-clearselection Vyprzdn vlastnka PRIMARY selekce. V praxi to znamen, e kdy se pokuste vloit data prostednm tlatkem (napklad), tak vlo se data z vyrovnvac pamti 0, namsto ppadnho sputn selelekce myi. .PP .SH PODVEJTE SE TAK .BR wxpaste (1), .BR wmaker (1) .SH AUTOR Autorem Window Makera je Alfredo K. Kojima <kojima@windowmaker.info>. .PP Tuto manulovou strnku napsal Marcelo Magallon <mmagallo@debian.org>. .PP Do etiny peloil Ji Hndek <jiri.hnidek@vslib.cz>. .PP Kompatibilitu s binrnmi daty a \-nolimit implementoval Luke Kendall <luke@research.canon.com.au>. �����������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/cs/wmsetbg.1�����������������������������������������������������������������0000644�0001750�0001750�00000003445�13431646202�013701� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" Hey, Emacs! This is an -*- nroff -*- source file. .TH wmsetbg 1 "Leden 1999" .SH JMNO wmsetbg \- nastav pozad hlavnho okna v X11 .SH SYNTAXE .B wmsetbg [\-display] [\-\-version] [\-\-help] [{\-b|\-\-back\-color} \fIbarva\fP] [{\-t|\-\-tile}|{\-e|\-\-center}|{\-s|\-\-scale}|{\-a|\-\-maxscale} \fIobrzek\fP] [{\-d|\-\-dither}|{\-m|\-\-match}] [\-u|\-\-update\-wmaker] [{\-D|\-\-update\-domain} \fIdomna\fP] [{\-c|\-\-colors} \fIcpc\fP] [{\-p|\-\-parse} \fItextura\fP] [{\-w|\-\-workspace} \fIpracovn plocha\fP] .SH POPIS .B wmsetbg nat dan .I obrzek (XPM, PNG, jpeg, Tiff, raw PPM) a vlo ho do hlavnho okna. Obrzek je mon zvtit, nebo ho opakovat aby vyplnil hlavn okno. Window Maker pouva tento pkaz intern na nastaven pozad pi startu. .SH VOLBY .TP .B \-a|\-\-maxscale zvt dan \fIobrzek\fP pi dodren pomru stran .TP .B \-e|\-\-center vlo \fIobrzek\fP do stedu okna .TP .B \-t|\-\-tile vytvo z \fIobrzku\fP dladice .TP .B \-s|\-\-scale rozthne dan \fIobrzek\fP (standartn) .TP .B \-d|\-\-dither rezervuje barvy .TP .B \-m|\-\-match shodn barvy .TP .B \-u|\-\-update\-wmaker zape zmnu do databze nastaven Window Makera .TP .B \-D|\-\-update\-domain zape zmnu do databze \fIdomny\fP .TP .B \-c|\-\-colors pouje urit poet barev na kanl .TP .B \-p|\-\-parse parsuje danou \fItexturu\fP jako \fIproplist stylu textur\fP .TP .B \-w|\-\-workspace nastav pozad jen na dan \fIpracovn ploe\fP .TP .B \-\-help vype npovdu .TP .B \-\-version vype slo verze .SH PODVEJTE SE TAK .BR wmaker (1) .SH AUTOR Autorem Window Makera je Alfredo K. Kojima <kojima@windowmaker.info>. wmsetbg napsal Dan Pascu <dan@windowmaker.info> .PP Tuto manulovou strnku napsal Marcelo Magallon <mmagallo@debian.org>. .PP Do etiny peloil Ji Hndek <jiri.hnidek@vslib.cz>. ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/cs/Makefile.am���������������������������������������������������������������0000644�0001750�0001750�00000000356�13431646202�014201� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������## Process this file with automake to produce Makefile.in mandir=@mandir@/cs man_MANS = \ geticonset.1 \ getstyle.1 \ seticons.1 \ setstyle.1 \ wdwrite.1 \ wmaker.1 \ wmsetbg.1 \ wxcopy.1 \ wxpaste.1 EXTRA_DIST = $(man_MANS) ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/wxcopy.1���������������������������������������������������������������������0000644�0001750�0001750�00000003033�13431646202�013146� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" Hey, Emacs! This is an -*- nroff -*- source file. .TH wxcopy 1 "September 1998" .SH NAME wxcopy \- copy stdin or file into X11 cutbuffer .SH SYNOPSIS .B wxcopy .RI [ options ] .RI [ filename ] .SH DESCRIPTION .B wxcopy copies stdin or .I filename into the cutbuffer. If no cutbuffer is specified, the data will be copied into cutbuffer 0 and the other cutbuffers will be rotated, if present. If a cutbuffer is specified, the data is copied into that cutbuffer, and no rotation of buffers is performed. .SH OPTIONS .TP .B \-\-clear\-selection Clears the PRIMARY selection owner. In practice it means that when you try to paste the data with the middle mouse button (for example) it will paste the data from cut buffer 0, instead of any eventually existing mouse selection. .TP .BI \-\-cutbuffer " number" Specifies the number of the cutbuffer to copy data to. .TP .BR \-display " display\-name" The data will be copied in the cutbuffers of the specified display/screen. .TP .B \-\-help print a help message with the list of options. .TP .B \-\-no\-limit Makes the normal 64kb limit check not to be performed, making the buffer attempt to grow to whatever size is required. .TP .B \-\-version print the version of Window Maker from which the program comes. .PP .SH SEE ALSO .BR wxpaste (1), .BR wmaker (1) .SH AUTHOR This man page was written by Marcelo Magallon <mmagallo@debian.org>. .PP Window Maker was written by Alfredo K. Kojima <kojima@windowmaker.info>. Binary data compatibility and \-\-no\-limit stuff by Luke Kendall <luke@research.canon.com.au>. �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/build/�����������������������������������������������������������������������0000755�0001750�0001750�00000000000�13642365214�012720� 5����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/build/Makefile.in������������������������������������������������������������0000644�0001750�0001750�00000036770�13642360054�014717� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = doc/build ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ $(top_srcdir)/m4/ax_pthread.m4 \ $(top_srcdir)/m4/ld-version-script.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/windowmaker.m4 \ $(top_srcdir)/m4/wm_attributes.m4 \ $(top_srcdir)/m4/wm_cflags_check.m4 \ $(top_srcdir)/m4/wm_i18n.m4 \ $(top_srcdir)/m4/wm_imgfmt_check.m4 \ $(top_srcdir)/m4/wm_libexif.m4 $(top_srcdir)/m4/wm_libmath.m4 \ $(top_srcdir)/m4/wm_prog_cc_c11.m4 \ $(top_srcdir)/m4/wm_xext_check.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ GFXLIBS = @GFXLIBS@ GREP = @GREP@ HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLIBS = @INTLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBBSD = @LIBBSD@ LIBEXIF = @LIBEXIF@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXINERAMA = @LIBXINERAMA@ LIBXMU = @LIBXMU@ LIBXRANDR = @LIBXRANDR@ LINGUAS = @LINGUAS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAGICKFLAGS = @MAGICKFLAGS@ MAGICKLIBS = @MAGICKLIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MANLANGDIRS = @MANLANGDIRS@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOLIBS = @PANGOLIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILMOFILES = @UTILMOFILES@ VERSION = @VERSION@ WINGSMOFILES = @WINGSMOFILES@ WINGS_VERSION = @WINGS_VERSION@ WMAKERMOFILES = @WMAKERMOFILES@ WPREFSMOFILES = @WPREFSMOFILES@ WRASTER_VERSION = @WRASTER_VERSION@ WUTIL_VERSION = @WUTIL_VERSION@ XCFLAGS = @XCFLAGS@ XFTCONFIG = @XFTCONFIG@ XFTFLAGS = @XFTFLAGS@ XFTLIBS = @XFTLIBS@ XGETTEXT = @XGETTEXT@ XLFLAGS = @XLFLAGS@ XLIBS = @XLIBS@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBRARY_PATH = @X_LIBRARY_PATH@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ defsdatadir = @defsdatadir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ inc_search_path = @inc_search_path@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lcov_output_directory = @lcov_output_directory@ lib_search_path = @lib_search_path@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pixmapdir = @pixmapdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ wprefs_bindir = @wprefs_bindir@ wprefs_datadir = @wprefs_datadir@ # The list of sources are distributed, but none are to be # installed along with Window Maker: EXTRA_DIST = Readme \ Compilation.texi \ Translations.texi all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/build/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu doc/build/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook check-am: all-am check: check-am all-am: Makefile all-local installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am all-local check check-am clean clean-generic \ clean-libtool cscopelist-am ctags-am dist-hook distclean \ distclean-generic distclean-libtool distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am .PRECIOUS: Makefile # How to re-generate automatically the top-level text files all-local: $(top_srcdir)/INSTALL-WMAKER $(top_srcdir)/README.i18n # We also re-generate the documentation when "make dist" is used, because we cannot # be assured that the doc currently present in the directory is up-to-date, for example # if the user did not run "make (all)" for valid reason dist-hook: $(top_srcdir)/INSTALL-WMAKER $(top_srcdir)/README.i18n cp -f $(top_srcdir)/INSTALL-WMAKER $(top_distdir)/INSTALL-WMAKER cp -f $(top_srcdir)/README.i18n $(top_distdir)/README.i18n $(top_srcdir)/INSTALL-WMAKER: $(srcdir)/Compilation.texi $(top_srcdir)/script/generate-txt-from-texi.sh $(AM_V_GEN)if test ! -e "$(top_srcdir)/INSTALL-WMAKER" -o -w "$(top_srcdir)/INSTALL-WMAKER" ; then \ $(top_srcdir)/script/generate-txt-from-texi.sh \ $(srcdir)/Compilation.texi -o $(top_srcdir)/INSTALL-WMAKER \ -d "`LANG=C date -u -r $(top_srcdir)/ChangeLog '+%d %B %Y' | sed -e 's,^0,,' `" \ -Dversion="$(PACKAGE_VERSION)" -e "$(PACKAGE_BUGREPORT)" ; \ else \ echo "Warning: \"$(top_srcdir)/INSTALL-WMAKER\" is not writeable, not regenerated" ; \ fi $(top_srcdir)/README.i18n: $(srcdir)/Translations.texi $(top_srcdir)/script/generate-txt-from-texi.sh $(AM_V_GEN)if test ! -e "$(top_srcdir)/README.i18n" -o -w "$(top_srcdir)/README.i18n" ; then \ $(top_srcdir)/script/generate-txt-from-texi.sh \ $(srcdir)/Translations.texi -o $(top_srcdir)/README.i18n \ -d "`LANG=C date -u -r $(top_srcdir)/ChangeLog '+%d %B %Y' | sed -e 's,^0,,' `" \ -Dversion="$(PACKAGE_VERSION)" -e "$(PACKAGE_BUGREPORT)" ; \ else \ echo "Warning: \"$(top_srcdir)/README.i18n\" is not writeable, not regenerated" ; \ fi # 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. .NOEXPORT: ��������WindowMaker-0.95.9/doc/build/Readme�����������������������������������������������������������������0000644�0001750�0001750�00000000571�13431646202�013756� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������This directory contains the sources for the documentation about building the Window Maker project from sources. This documentation is meant to go into the distributed sources archive, but it is not supposed to be installed as it contains no relevant information. The documentaion are written in GNU Texinfo format and a script converts them into plain text for distribution. ���������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/build/Compilation.texi�������������������������������������������������������0000644�0001750�0001750�00000064535�13431646202�016021� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������\input texinfo @c -*-texinfo-*- @c %**start of header @setfilename wmaker_install.info @settitle Window Maker Compilation and Installation 1.0 @c %**end of header @c This documentation is written in Texinfo format: @c https://www.gnu.org/software/texinfo/manual/texinfo/ @c @c The reference checker is the GNU texi2any tool, which can be invoked like this: @c texi2any --plaintext --no-split --verbose Compilation.texi @c @c If you modify this file, you may want to spell-check it with: @c aspell --lang=en_GB --mode=texinfo check Compilation.texi @c @c The length of lines in this file is set to 100 because it tends to keep sentences together @c despite the embedded @commands{}; @c @c It is generally considered good practice for Tex and Texinfo formats to keep sentences on @c different lines, using the fact that in the end they will be merged in paragraph anyway, because @c it makes the patchs clearer about where the changes actually are. @finalout @c If the version was not given to texi2any with -D, assume we are being run @c on the git dev branch @ifclear version @set version git#next @end ifclear @c We provide the ability to change the email address for support from the @c command line @ifclear emailsupport @set emailsupport @email{wmaker-dev@@lists.windowmaker.org} @end ifclear @c ---------------------------------------------------------------------------------- Title Page --- @copying @noindent This manual is for @sc{Window Maker} window manager, version @value{version}. @noindent Copyright @copyright{} 2015 The Window Maker Team. @quotation 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, see file COPYING for details. @end quotation @end copying @titlepage @title Window Maker Compilation and Installation @subtitle A guide to configure, compile and install @subtitle @sc{Window Maker} from sources. @author The Window Maker Team @page @vskip 0pt plus 1filll @insertcopying @sp 1 Published by The Window Maker team on @today{}. @end titlepage @c ---------------------------------------------------------------------------- Table of Content --- @node Top @ifnottex @top Window Maker Compilation and Installation @ifclear cctexi2txt A guide to configure, compile and install @sc{Window Maker} from sources. @end ifclear @end ifnottex @contents @ifnottex @ifclear cctexi2txt @sp 1 This manual is for Window Maker, version @value{version}. @end ifclear @end ifnottex @menu * Prerequisites:: What you will need to build Window Maker * Building Window Maker:: How to build Window Maker * Miscellaneous:: Misc. information you may want to know * Troubleshooting:: Help on a few rare build problems @end menu @c ------------------------------------------------------------------------------- Prerequisites --- @node Prerequisites @chapter Prerequisites @section Supported Platforms @itemize - @item Intel GNU/Linux Systems in general, @t{ix86} and @t{x86_64} but other architectures should work @item BSD systems @item Solaris, at least on release 10 and 11 @end itemize Patches to make it work on other platforms are welcome. @section Software Dependencies @anchor{Software Dependencies} The following software is required to use @sc{Window Maker}: @itemize - @item X11R6.x Window Maker can be compiled in older versions of @emph{X}, like @emph{X11R5} (@emph{Solaris}) or @emph{X11R4} (@emph{OpenWindows}) but it will not work 100% correctly. In such servers there will not be application icons and you'll have trouble using the dock. Upgrading the client libraries (@emph{Xlib}, @emph{Xt}, etc.) will help if you can't upgrade the server. @end itemize @noindent The following is required to build @sc{Window Maker}: @itemize - @item Basic obvious stuff @itemize @item @emph{gcc} (or some other ANSI C compiler, supporting some C99 extensions) @item @emph{glibc} development files (usually @file{glibc-devel} in Linux distributions) @item @emph{X} development files (@file{XFree86-devel} or something similar) @end itemize @item @emph{Xft2} and its dependencies Dependencies include @emph{freetype2} and @emph{fontconfig}. You will also need the development files for them (@file{xft2-devel}). Sources are available at: @uref{http://www.freedesktop.org/wiki/Software/Xft/} @end itemize @noindent @b{Note}: @sc{Window Maker} is known to compile with @emph{gcc} and @emph{clang}; the code source is mostly ANSI C (also known as C89 and C90) but is uses very few of the C99 novelties; it also uses a few attributes introduced in the C11 standard but those are detected automatically, so most compilers should work. @section Special Dependencies @anchor{Special Dependencies} If you want to compile using the sources from the git repository instead of the distribution package, you will also need: @itemize @item @emph{git} @item @emph{autoconf} 2.69 @item @emph{automake} 1.12 @item @emph{libtool} 1.4.2 @end itemize @section Optional Dependencies @anchor{Optional Dependencies} These libraries are not required to make @sc{Window Maker} work, but they are supported in case you want to use them. Version numbers are indicative, but other versions might work too. @itemize - @item @emph{libXPM} 4.7 or newer Older versions may not work! Available from @uref{http://xlibs.freedesktop.org/release/} There is built-in support for @emph{XPM} files, but it will not load images in some uncommon encodings. @item @emph{libpng} 0.96 or newer and @emph{zlib} For @emph{PNG} image support, @uref{http://www.libpng.org/pub/png/libpng.html} @item @emph{libtiff} 3.4 or newer For @emph{TIFF} image support, @uref{http://www.libtiff.org/} @item @emph{libjpeg} 6.0.1 or newer For @emph{JPEG} image support, @uref{http://www.ijg.org/} Note that if you don't have it, @command{configure} will issue a big warning in the end, this is because JPEG images are often used in themes and for background images so you probably want this format supported. @item @emph{libgif} 2.2 or @emph{libungif} For @emph{GIF} image support, @uref{http://giflib.sourceforge.net/} @item @emph{WebP} 0.4.1 or newer The reference library from @emph{Google} for their image format, @uref{https://developers.google.com/speed/webp/download} @item @emph{GNU xgettext} If you want to use translated messages, you will need @emph{GNU gettext}. Other versions of @emph{gettext} are not compatible and will not work. Get the @emph{GNU} version from @uref{http://www.gnu.org/software/gettext/} @item @emph{Pango} 1.36.8 or newer This library can be used by the @emph{WINGs} toolkit to improve support for @emph{UTF-8} and for languages written in right-to-left direction, in some widgets. You have to explicitly ask for its support through (@pxref{Configure Options}). You can get it from @uref{http://www.pango.org/Download} @item @emph{libbsd} This library can be used by the @emph{WINGs} utility library to make use of @command{strlcat} and @command{strlcpy} instead of using built-in functions if your system does not provide them in its core @emph{libc}. You should let @sc{Window Maker}'s @command{configure} detect this for you. You can get it from @uref{http://libbsd.freedesktop.org/wiki/} @item @emph{Inotify} If you have Linux's @emph{inotify} support, @sc{Window Maker} will use it to check for configuration updates instead of polling regularly the file. The needed header comes with the kernel, typical packages names include: @itemize @item @file{kernel-headers} for @emph{Slackware} and @emph{Fedora} @item @file{linux-userspace-headers} for @emph{Mageia} @item @file{linux-libc-dev} for @emph{Debian} and @emph{Ubuntu} @item @file{linux-glibc-devel} for @emph{OpenSuSE} @end itemize @item @emph{MagickWand} 6.8.9-9 or newer If found, then the library @emph{WRaster} can use the @emph{ImageMagick} library to let @sc{Window Maker} support more image formats, like @emph{SVG}, @emph{BMP}, @emph{TGA}, ... You can get it from @uref{http://www.imagemagick.org/} @item @emph{Boehm GC} This library can be used by the @emph{WINGs} utility toolkit to use a @cite{Boehm-Demers-Weiser Garbage Collector} instead of the traditional @command{malloc}/@command{free} functions from the @emph{libc}. You have to explicitly ask for its support though (@pxref{Configure Options}). You can get it from @uref{http://www.hboehm.info/gc/} @end itemize @c ----------------------------------------------------------------------- Building Window Maker --- @node Building Window Maker @chapter Building @sc{Window Maker} @section Getting the Sources The latest version of @sc{Window Maker} (@t{-crm}) can be downloaded from @uref{http://www.windowmaker.org/} Alternatively, the development branch, called @t{#next} is in the @emph{git} repository at @uref{http://repo.or.cz/w/wmaker-crm.git} If you want to use the @emph{git} versions, you can get it with: @example git clone -b next git://repo.or.cz/wmaker-crm.git @end example @noindent then, assuming you have the dependencies listed in @ref{Special Dependencies}, you have to type: @example ./autogen.sh @end example @noindent to generate the configuration script. @section Build and Install For a quick start, type the following in your shell prompt: @example ./configure make @end example @noindent then, login as @emph{root} and type: @example make install ldconfig @end example @noindent or if you want to strip the debugging symbols from the binaries to make them smaller, you can type instead: @example make install-strip ldconfig @end example @noindent This will build and install @sc{Window Maker} with default parameters. If you want to customise some compile-time options, you can do the following: @enumerate @item (optional) Look at the @ref{Configure Options}, for the options available. Also run: @example ./configure --help @end example to get a complete list of options that are available. @item Run configure with the options you want. For example, if you want to use the @option{--enable-modelock} option, type: @example ./configure --enable-modelock @end example @item (optional) Edit @file{src/wconfig.h} with your favourite text editor and browse through it for some options you might want to change. @item Compile. Just type: @example make @end example @item Login as root (if you can't do that, read the @ref{No Root Password, , I don't have the @emph{root} password}) and install @sc{Window Maker} in your system: @example su root make install @end example @end enumerate @section User specific configuration These instructions do not need to be followed when upgrading @sc{Window Maker} from an older version, unless stated differently in the @cite{NEWS} file. Every user on your system that wishes to run @sc{Window Maker} must do the following: @enumerate @item Install Window Maker configuration files in your home directory. Type: @example wmaker.inst @end example @command{wmaker.inst} will install @sc{Window Maker} configuration files and will setup X to automatically launch @sc{Window Maker} at startup. @end enumerate That's it! You can type @command{man wmaker} to get some general help for configuration and other stuff. Read the @cite{User Guide} for a more in-depth explanation of @sc{Window Maker}. You might want to take a look at the @cite{FAQ} too. @section Locales/Internationalisation @sc{Window Maker} has national language support. The procedure to enable national language support is described in the dedicated @ref{Enabling Languages support,,,wmaker_i18n,@file{README.i18n}}. @section Configure Options @anchor{Configure Options} These options can be passed to the configure script to enable/disable some @sc{Window Maker} features. Example: @example ./configure --enable-modelock --disable-gif @end example will configure @sc{Window Maker} with @emph{modelock} supported and disable @emph{gif} support. Normally, you won't need any of them. To get the list of all options, run @command{./configure --help} @subsection Installation Directory The default installation path will be in the @file{/usr/local} hierarchy; a number of option can customise this: @table @option @item --prefix=@i{PREFIX} @itemx --exec-prefix=@i{EPREFIX} @itemx --bindir=@i{DIR} @itemx --sysconfdir=@i{DIR} @itemx --libdir=@i{DIR} @itemx --includedir=@i{DIR} @itemx --datarootdir=@i{DIR} @itemx --datadir=@i{DIR} @itemx --localedir=@i{DIR} @itemx --mandir=@i{DIR} Standard options from @emph{autoconf} to define target paths, you probably want to read @ref{Installation Names,,,INSTALL,@file{INSTALL}}. @item --sbindir=@i{DIR} @itemx --libexecdir=@i{DIR} @itemx --sharedstatedir=@i{DIR} @itemx --localstatedir=@i{DIR} @itemx --oldincludedir=@i{DIR} @itemx --infodir=@i{DIR} @itemx --docdir=@i{DIR} @itemx --htmldir=@i{DIR} @itemx --dvidir=@i{DIR} @itemx --pdfdir=@i{DIR} @itemx --psdir=@i{DIR} More standard options from @emph{autoconf}, today these are not used by @sc{Window Maker}; they are provided automatically by @emph{autoconf} for consistency. @item --with-gnustepdir=@i{PATH} Specific to @sc{Window Maker}, defines the directory where @file{WPrefs.app} will be installed, if you want to install it like a @emph{GNUstep} applications. If not specified, it will be installed like usual programs. @item --with-pixmapdir=@i{DIR} Specific to @sc{Window Maker}, this option defines an additional path where @emph{pixmaps} will be searched. Nothing will be installed there; the default path taken is @file{@emph{DATADIR}/pixmaps}, where @var{DATADIR} is the path defined from @option{--datadir}. @item --with-defsdatadir=@i{DIR} Specific to @sc{Window Maker}, defines the directory where system configuration files, e.g., @file{WindowMaker}, @file{WMRootMenu}, etc., are installed. The default value is @file{@emph{SYSCONFDIR}/WindowMaker}, where @var{SYSCONFDIR} is the path defined from @option{--sysconfdir}. @end table @subsection External Libraries Unless specifically written, @command{configure} will try to detect automatically for the libraries; if you explicitly provide @option{--enable-@emph{FEATURE}} then it will break with an error message if the library cannot be linked; if you specify @option{--disable-@emph{FEATURE}} then it will not try to search for the library. You can find more information about the libraries in the @ref{Optional Dependencies}. @table @option @item --enable-boehm-gc Never enabled by default, use Boehm GC instead of the default @emph{libc} @command{malloc()} @item --disable-gif Disable GIF support in @emph{WRaster} library; when enabled use @file{libgif} or @file{libungif}. @item --disable-jpeg Disable JPEG support in @emph{WRaster} library; when enabled use @file{libjpeg}. @item --without-libbsd Refuse use of the @file{libbsd} compatibility library in @emph{WINGs} utility library, even if your system provides it. @item --disable-magick Disable @emph{ImageMagick's MagickWand} support in @emph{WRaster}, used to support for image formats. @item --enable-pango Disabled by default, enable @emph{Pango} text layout support in @emph{WINGs}. @item --disable-png Disable PNG support in @emph{WRaster}; when enabled use @file{libpng}. @item --disable-tiff Disable TIFF support in @emph{WRaster}. when enabled use @file{libtiff}. @item --disable-webp Disable WEBP support in @emph{WRaster}. when enabled use @file{libwebp}. @item --disable-xpm Disable use of @file{libXpm} for XPM support in @emph{WRaster}, use internal code instead. @end table The following options can be used to tell @command{configure} about extra paths that needs to be used when compiling against libraries: @table @option @item --with-libs-from specify additional paths for libraries to be searched. The @option{-L} flag must precede each path, like: @example --with-libs-from="-L/opt/libs -L/usr/local/lib" @end example @item --with-incs-from specify additional paths for header files to be searched. The @option{-I} flag must precede each paths, like: @example --with-incs-from="-I/opt/headers -I/usr/local/include" @end example @end table @subsection X11 and Extensions @command{configure} will try to detect automatically the compilation paths for X11 headers and libraries, and which X Extensions support can be enabled. if you explicitly provide @option{--enable-@emph{FEATURE}} then it will break with an error message if the extension cannot be used; if you specify @option{--disable-@emph{FEATURE}} then it will not check for the extension. @table @option @item --x-includes=@i{DIR} @itemx --x-libraries=@i{DIR} @emph{Autoconf}'s option to specify search paths for @emph{X11}, for the case were it would not have been able to detect it automatically. @item --disable-xlocale If you activated support for Native Languages, then @emph{X11} may use a hack to also configure its locale support when the program configure the locale for itself. The @command{configure} script detects if the @emph{Xlib} supports this or not; this options explicitly disable this initialisation mechanism. @item --enable-modelock XKB language status lock support. If you don't know what it is you probably don't need it. The default is to not enable it. @item --disable-shm Disable use of the @emph{MIT shared memory} extension. This will slow down texture generation a little bit, but in some cases it seems to be necessary due to a bug that manifests as messed icons and textures. @item --disable-shape Disables support for @emph{shaped} windows (for @command{oclock}, @command{xeyes}, etc.). @item --enable-xinerama The @emph{Xinerama} extension provides information about the different screens connected when running a multi-head setting (if you plug more than one monitor). @item --enable-randr The @emph{RandR} extension provides feedback when changing the multiple-monitor configuration in X11 and allows to re-configure how screens are organised. At current time, it is not enabled by default because it is NOT recommended (buggy); @sc{Window Maker} only restart itself when the configuration change, to take into account the new screen size. @end table @subsection Feature Selection @table @option @item --disable-animations Disable animations permanently, by not compiling the corresponding code into @sc{Window Maker}. When enabled (the default), you still have a run-time configuration option in @emph{WPrefs}. @item --disable-mwm-hints Disable support for Motif's MWM Window Manager hints. These attributes were introduced by the Motif toolkit to ask for special window appearance requests. Nowadays this is covered by the NetWM/EWMH specification, but there are still applications that rely on MWM Hints. @item --enable-wmreplace Add support for the @emph{ICCCM} protocol for cooperative window manager replacement. This feature is disabled by default because you probably don't need to switch seamlessly the window manager; if you are making a package for a distribution you'd probably want to enable this because it allows users to give a try to different window managers without restarting everything for an extra cost that is not really big. @item --disable-xdnd Disable support for dragging and dropping files on the dock, which launches a user-specified command with that file. Starting from version 0.65.6 this feature is enabled by default. @item --enable-ld-version-script This feature is auto-detected, and you should not use this option. When compiling a library (@file{wrlib}, ...), @emph{gcc} has the possibility to filter the list of functions that will be visible, to keep only the public API, because it helps running programs faster. The @command{configure} script checks if this feature is available; if you specify this option it will not check anymore and blindly trust you that it is supposed to work, which is not a good idea as you may encounter problems later when compiling. @item --enable-usermenu This feature, disabled by default, allows to add a user-defined custom menu to applications; when choosing an entry of the menu it will send the key combination defined by the user to that application. @xref{Application User Menu,,,NEWS,@file{NEWS}} for more information. @item --with-menu-textdomain=@i{DOMAIN} Selection of the domain used for translation of the menus; @pxref{Translations for Menus,,,wmaker_i18n,@file{README.i18n}}. @end table @subsection Developer Stuff These options are disabled by default: @table @option @item --config-cache If you intend to re-run the @command{configure} script often, you probably want to include this option, so it will save and re-use the status of what have been detected in the file @file{config.cache}. @item --enable-debug Enable debugging features (debug symbol, some extra verbosity and checks) and add a number of check flags (warnings) for the compiler (in @emph{gcc} fashion). @item --enable-lcov=@i{DIRECTORY} Enable generation of code coverage and profiling data; if the @file{@i{DIRECTORY}} is not specified, use @file{coverage-report}. This option was meant to be use with @emph{gcc}; it was not used recently so it is probable that is does not work anymore; the @command{configure} script will not even check that your compiling environment has the appropriate requirements and works with this. Despite all this, if you think there's a use for it and feel in the mood to help, do not hesitate to discuss on the mailing list @value{emailsupport} to get it working. @end table @c ------------------------------------------------------------------------------- Miscelleanous --- @node Miscellaneous @chapter Miscellaneous @section Platform Specific Notes @itemize - @item @emph{GNU/Linux} in general Make sure you have @file{/usr/local/lib} in @file{/etc/ld.so.conf} and that you run @command{ldconfig} after installing. Uninstall any packaged version of @sc{Window Maker} before installing a new version. @item @emph{RedHat GNU/Linux} @emph{RedHat} systems have several annoying problems. If you use it, be sure to follow the steps below or @sc{Window Maker} will not work: @itemize @item if you installed the @sc{Window Maker} that comes with @emph{RedHat}, uninstall it before upgrading; @item make sure you have @file{/usr/local/bin} in your @env{PATH} environment variable; @item make sure you have @file{/usr/local/lib} in @file{/etc/ld.so.conf} before running @command{ldconfig}; @end itemize @item @emph{PowerPC MkLinux} You will need to have the latest version of @emph{Xpmac}. Older versions seem to have bugs that cause the system to hang. @item @emph{Debian GNU/Linux} If you want @emph{JPEG} and @emph{TIFF} support, make sure you have @file{libtiff-dev} and @file{libjpeg-dev} installed. @item @emph{SuSE GNU/Linux} If you installed the @sc{Window Maker} package from @emph{SuSE}, uninstall it before trying to compile @emph{Window Maker} or you might have problems. @item @emph{MetroX} (unknown version) @emph{MetroX} has a bug that corrupts pixmaps that are set as window backgrounds. If you use @emph{MetroX} and have weird problems with textures, do not use textures in title bars. Or use a different X server. @end itemize @section I don't have the @emph{root} password :( @anchor{No Root Password} If you can't get superuser privileges (can't be @i{root}) you can install @emph{Window Maker} in your own home directory. For that, supply the @option{--prefix} option when running configure in step 2 of building @sc{Window Maker}. You will also need to supply the @option{--with-gnustepdir} option, to specify the path for @command{WPrefs.app}. Example: @example ./configure --prefix=/home/jshmoe --with-gnustepdir=/home/jshmoe/GNUstep/Applications @end example Then make @file{/home/jshmoe/bin} be included in your search @env{PATH}, add @file{/home/jshmoe/lib} to your @env{LD_LIBRARY_PATH} environment variable and run @command{bin/wmaker.inst} Of course, @file{/home/jshmoe} is supposed to be replaced by your actual home directory path. @section Upgrading If you are upgrading from an older version of @sc{Window Maker}: @enumerate @item Configure and build @sc{Window Maker} as always @item Install @sc{Window Maker} (but do not run @command{wmaker.inst}) @item Read the @cite{NEWS} file and update your configuration files if necessary. @end enumerate @c ------------------------------------------------------------------------------- Miscelleanous --- @node Troubleshooting @chapter Troubleshooting When you have some trouble during configuration (while running configure), like not being able to use a graphic format library you think you have installed, look at the @file{config.log} file for clues of the problem. @section Error with loading fonts, even if they exist This is probably a problem with NLS (Native Language Support), you probably want to look at the @ref{Troubleshooting,,,wmaker_i18n,@file{README.i18n}} or try rebuilding without NLS support, which is done with: @example ./configure LINGUAS="" @end example @section configure doesn't detect @emph{libtiff}, or other graphic libraries Delete @file{config.cache}, then rerun configure adding the following options to @command{configure} (among the other options you use): @example --with-libs-from="-L/usr/local/lib" --with-incs-from="-I/usr/local/include -I/usr/local/include/tiff" @end example 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 @option{--with-incs-from} shows. Just put a space between them. @section configure doesn't detect @emph{libXpm} Check if you have a symbolic link from @file{libXpm.so.4.9} to @file{libXpm.so} @section Segmentation fault on startup @itemize @item Check if the version of @emph{libXPM} you have is at least 4.7 @item Check if you have an updated version of @file{~/GNUstep/Defaults/WindowMaker} @end itemize If you're not sure, try renaming @file{~/GNUstep} to @file{~/GNUtmp} and then run @command{wmaker.inst} @section "...: your machine is misconfigured. gethostname() returned (none)" the host name of your machine is set to something invalid, that starts with a parenthesis. Do a @command{man hostname} for info about how to set it. @section The root menu contains only 2 entries. ("XTerm" and "Exit...") @sc{Window Maker} could not read your menu definition file. You should check the output of @command{wmaker} for an error, it may be visible in the console or in the @file{.xsession-errors} file. @c ------------------------------------------------------------------------------------- The End --- @bye �������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/build/Translations.texi������������������������������������������������������0000644�0001750�0001750�00000052562�13431646202�016221� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������\input texinfo @c -*-texinfo-*- @c %**start of header @setfilename wmaker_i18n.info @settitle Window Maker Internationalisation 1.0 @c %**end of header @c This documentation is written in Texinfo format: @c https://www.gnu.org/software/texinfo/manual/texinfo/ @c @c The reference checker is the GNU texi2any tool, which can be invoked like this: @c texi2any --plaintext --no-split --verbose Translations.texi @c @c If you modify this file, you may want to spell-check it with: @c aspell --lang=en_GB --mode=texinfo check Translations.texi @c @c The length of lines in this file is set to 100 because it tends to keep sentences together @c despite the embedded @commands{}; @c @c It is generally considered good practice for Tex and Texinfo formats to keep sentences on @c different lines, using the fact that in the end they will be merged in paragraph anyway, because @c it makes the patchs clearer about where the changes actually are. @finalout @c If the version was not given to texi2any with -D, assume we are being run @c on the git dev branch @ifclear version @set version git#next @end ifclear @c We provide the ability to change the email address for support from the @c command line @ifclear emailsupport @set emailsupport @email{wmaker-dev@@lists.windowmaker.org} @end ifclear @c ---------------------------------------------------------------------------------- Title Page --- @copying @noindent This manual is for @sc{Window Maker} window manager, version @value{version}. @noindent Copyright @copyright{} 2015 The Window Maker Team. @quotation 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, see file COPYING for details. @end quotation @end copying @titlepage @title Window Maker Internationalisation @subtitle A guide to enable support for language translations @subtitle in @sc{Window Maker} and to the contributors @subtitle who want to help translating. @author Christophe CURIS @page @vskip 0pt plus 1filll @insertcopying @sp 1 Published by The Window Maker team on @today{}. @end titlepage @c ---------------------------------------------------------------------------- Table of Content --- @node Top @ifnottex @top Window Maker Internationalisation @ifclear cctexi2txt A guide to enable support for language translations in @sc{Window Maker} and to the contributors who want to help translating. @end ifclear @end ifnottex @contents @ifnottex @ifclear cctexi2txt @sp 1 This manual is for Window Maker, version @value{version}. @end ifclear @end ifnottex @menu * Enabling Languages support:: How to compile Window Maker with i18n support * Choosing the Language:: When installed, how to run wmaker with your language * Troubleshooting:: Some points to check if you have problems * Contribute to Translations:: What to do if you want to help translating @end menu @c ------------------------------------------------------------------ Enabling Languages support --- @node Enabling Languages support @chapter Enabling Languages support @sc{Window Maker} has the possibility to be translated in many languages, but by default none of them will be installed, and the support for translation will not be compiled. To enable the translation capabilities, you have to specify which language(s) you want to be installed: this is done with the variable @env{LINGUAS} when running the @command{configure} script. This variable should contain the space-separated list of languages you want to install. You could for instance enable both French (@code{fr}) and Dutch (@code{nl}) with this: @example ./configure LINGUAS="fr nl" @end example You can of course add any other option that you want to the @command{configure} command. From the moment you specify the variable, the @command{configure} script will check that you have the appropriate dependencies for this (basically the @code{gettext} function and the @code{libintl} library); when you run @command{make} to compile the project, it will also compile the translation (@code{mo} files) for the language(s) you asked (if available, of course), and during @command{make install} it will install them in the usual directory. The installation directory can be changed with the standard option @option{--localedir} to the @command{configure} script, the default path being @file{@emph{<prefix>}/share/locale/@emph{<lang>}/LC_MESSAGES}). @c ----------------------------------------------------------------- List of supported Languages --- @section Getting the list of supported languages The naming convention for the languages follows the @cite{ISO 639-1} standard, for which you can find a summary list in the @uref{https://www.gnu.org/software/gettext/manual/html_node/Usual-Language-Codes.html, GNU gettext manual}. But as @sc{Window Maker} does not support all of them, the @command{configure} script will print a warning for each language you specify that it does not know, and sum up at the end the list of enabled languages that will be installed. There is a non-standard possibility to set @env{LINGUAS} to @code{list}, in which case the @command{configure} script will provide you the list of languages it supports, and stop: @example ./configure LINGUAS="list" @end example There is also another non-standard possibility to enable all the languages that @sc{Window Maker} supports by setting @env{LINGUAS} to @code{*}. This is an internal trick implemented so the development team can have the command @command{make distcheck} include some checks on translations: @example ./configure LINGUAS='*' @end example @c ---------------------------------------------------------------------- Translations for Menus --- @section Translations for Menus In order to propose an @emph{Application Menu} (also called @emph{Root Menu}) that is also translated in the language of the interface, @sc{Window Maker} implements two complementary mechanisms: The first, always enabled when i18n support is enabled, is to look for the menu file containing the name of the locale. For example, if the file is called @file{menu} and the language is set as @env{LANG=fr_FR.utf-8}, then @sc{Window Maker} will search for, and use the first match found: @itemize @item @code{menu.fr_FR.utf-8} @item @code{menu.fr_FR} @item @code{menu.fr} @item @code{menu} @end itemize The second possibility, which is not enabled by default, is to be able to use a custom @file{po} file which contains the translations for the text of the menu. This feature is enabled at compile time, using the option @option{--with-menu-textdomain} to the @command{configure} script. For example, if you specify: @example ./configure --with-menu-textdomain=WMMenu @end example @noindent then the translations for the menu will be searched in the file @file{WMMenu.mo} located at the standard location, the default path being @file{@emph{<prefix>}/share/locale/@emph{<lang>}/LC_MESSAGES/@emph{WMMenu}.mo}. If you do not enable the feature (the default behaviour, or with an explicit @option{--without-menu-textdomain}), then @sc{Window Maker} will @b{not} try to translate the strings, even using its own domain file (@file{WindowMaker.mo}). @c --------------------------------------------------------------------- LINGUAS at system level --- @section Setting @env{LINGUAS} at system level As the variable @env{LINGUAS} is quite standard, you also have the possibility to set its value in the @file{config.site} file for @sc{Autoconf}. This file can be placed in one of these paths: @itemize @bullet @item @file{@emph{<prefix>}/share/config.site} @item @file{@emph{<prefix>}/etc/config.site} @end itemize This way, the same language list will be used for all the programs that use @sc{Autoconf} that you would compile. Please note that if you also specify a value on the command line, it will have precedence over the value in that file. @c ----------------------------------------------------------------------- Choosing the Language --- @node Choosing the Language @chapter Choosing the Language If you have compiled and installed @sc{Window Maker} with support for your language, the effective translation is done is the very same way as any other application on an @sc{Unix} system, you just have to set the shell variable @env{LANG} to your language before @command{wmaker} is started. In @command{sh} type of shell (@sc{sh}, @sc{ksh}, @sc{bash}, ...), this is done for example with (@code{fr} is for French): @example export LANG=fr @end example There is also a command line option @option{--locale} for @sc{Window Maker} which may be used to set the language: @example wmaker --locale fr @end example When using this option, @sc{Window Maker} will use the locale you specified, redefining the @env{LANG} environment variable to this value so all program started from @sc{Window Maker} will inherit its value. If your system is using @sc{systemd}, you can also configure the locale at system level using the command: @example localectl set-locale LANG=fr @end example You can check if the current value is properly supported with the command: @example locale @end example If this does not work, you may need first to activate the support for your locale in the system; you can get the list of currently enabled locales with the command: @example locale -a @end example You should be able to enable a new language support by editing the file @file{/etc/locale.gen} to uncomment the locale(s) you need (by removing the @code{#} character and space(s) in front of it, and by running the command @command{locale-gen} as root. For further information, you may wish to read dedicated documentation, for example from @uref{http://tldp.org/HOWTO/HOWTO-INDEX/other-lang.html, the Linux Documentation Project} or through pages like @uref{http://www.shellhacks.com/en/HowTo-Change-Locale-Language-and-Character-Set-in-Linux,Shell Hacks' note on Changing Locale}. @c ----------------------------------------------------------------------------- Troubleshooting --- @node Troubleshooting @chapter Troubleshooting If I18N support does not work for you, check these: @itemize @minus @item the @env{LANG} environment variable is set to your locale, and the locale is supported by your OS's locale or X's locale emulation. you can display all supported locales by executing "@command{locale -a}" command if it is available; you can check if your locale is supported by X's locale emulation, see @file{/usr/share/X11/locale/locale.alias} @item check if you are using an appropriate fonts for the locale you chose. If you're using a font set that has a different encoding than the one used by @sc{Xlib} or @sc{libc}, bad things can happen. Try specifically putting the encoding in the @env{LANG} variable, like @code{ru_RU.KOI8-R}. Again, see @file{/usr/share/X11/locale/locale.alias} @item the fonts you're using support your locale. if your font setting on @file{$HOME/GNUstep/Defaults/WindowMaker} is like... @example WindowTitleFont = "Trebuchet MS:bold:pixelsize=12"; MenuTitleFont = "Trebuchet MS:bold:pixelsize=12"; @end example then you can't display Asian languages (@code{ja}, @code{ko}, @code{ch}, ...) characters using @code{Trebuchet MS}. A font that is guaranteed to work for any language is @code{sans} (or @code{sans-serif}). @code{sans} is not a font itself, but an alias which points to multiple fonts and will load the first in that list that has the ability to show glyphs in your language. If you don't know a font that is suited for your language you can always set all your fonts to something like: @example "sans:pixelsize=12" @end example However, please note that if your font is something like: @example "Trebuchet MS,sans serif:pixelsize=12" @end example this will not be able to display Asian languages if any of the previous fonts before sans are installed. This is because unlike the proper font pickup that @code{sans} guarantees for your language, this construct only allows a font fallback mechanism, which tries all the fonts in the list in order, until it finds one that is available, even if it doesn't support your language. Also you need to change font settings in style files in the @file{$HOME/Library/WindowMaker/Style} directory. @item the @env{LC_CTYPE} environment variable is unset or it has the correct value. If you don't know what is the correct value, unset it. @end itemize @c ------------------------------------------------------------------ Contribute to Translations --- @node Contribute to Translations @chapter Contribute to Translations You may have noticed that many translations are not up to date, because the code has evolved but the persons who initially contributed may not have had the time to continue, so any help is welcome. Since @sc{Window Maker} 0.95.7 there are some targets to @command{make} that can help you in that task. @c ------------------------------------------------------------------ Install the latest sources --- @section Install the latest sources If you want to contribute, the first step is get the development branch of the code; this is done using @command{git}. If you do not feel confident at all with using @command{git}, you may also try to ask for a @emph{snapshot} on the developer's mailing list @value{emailsupport}. With @command{git} the procedure is: @example # Get your working copy of the sources git clone git://repo.or.cz/wmaker-crm.git # Go into that newly created directory cd wmaker-crm # Switch to the branch where everything happens git checkout next # Generate the configuration script ./autogen.sh @end example Now you should have an up-to-date working copy ready to be compiled; you will not need to go the full way but you should run the @command{configure} script, so it will create the @file{Makefile}s, and you may want to compile the code once so it will not do it again automatically later while you are doing something else: @example # Setup the build, enabling at least the language you want to work on ./configure LINGUAS="<list of iso 639 country code>" # Compile the code once make @end example @c ------------------------------------------------------------------- Updating the Translations --- @section Updating the Translations The typical process for translating one program is: @itemize @bullet @item generate a POT file (PO Template): this is done with @command{xgettext} which searches for all the strings from the sources that can be translated; @item update the PO file for your language: this is done with @command{msgmerge} which compares the PO file and aligns it to the latest template; @item edit the new PO file: this is done by you with your favourite editor, to add the missing @code{msgstr}, review the possible @emph{fuzzy matches}, ... @item check the PO file: unfortunately there is no definitive method for this; @item submit your contribution to the project: this is done with @command{git}. @end itemize In @sc{Window Maker}, you have actually 4 @code{po} files to take care of: @itemize @minus @item @file{po/@emph{<lang>}.po}: for @sc{Window Maker} itself @item @file{WPrefs.app/po/@emph{<lang>}.po}: for the Preference Editor program @item @file{WINGs/po/@emph{<lang>}.po}: for the graphic toolkit library @item @file{util/po/@emph{<lang>}.po}: for the command-line tools of @sc{Window Maker} @end itemize As stated previously, there is a @command{make} target that can help you to automatically generate the POT and update the PO for these 4 cases: @example make update-lang PO=<lang> @end example Once run, it will have updated as needed the 4 @code{po} files against the latest source code. You may wish to use the command @command{git gui} to view the changes; you can now edit the files to complete the translation, correct them, remove deprecated stuff, ... Please note that the encoding should be set to @emph{UTF-8} as this is now the standard. If you think an error message is too obscure, just ask on the developer mailing list @value{emailsupport}: in addition to clarifications there's even a chance for the original message to be improved! You may find some information on working with @code{po} file in the @uref{https://www.gnu.org/software/gettext/manual/html_node/Editing.html,GNU gettext documentation}. @c --------------------------------------------------------------------- Translate the Man Pages --- @section Translate the Man Pages You may want to extend the translation to the documentation that is provided to users in the form of Unix @i{man pages}. The sources of the man pages are located in the @file{doc/} directory; the translation should be placed in the directory @file{doc/@i{lang}/} with the same file name. The directory will also need a file @file{Makefile.am} which provides the list of man pages to be included in the distribution package and to be installed. You can probably get inspiration from an existing one from another language; if you do not feel confident about it do not hesitate to ask on the project's mailing list (@value{emailsupport}), either for help or to ask someone to make it for you. Please note that although most man pages sources are directly in man page format (@emph{nroff}, the file extension being a number), a few of them are processed by a script (those with the @file{.in} extension, like @file{wmaker.in}). This is done because in some case we want the man page to reflect the actual compilation options. You may not want to bother with this hassle, in which case you can simply name your translation file with the @file{.1} and remove the special @code{@@keyword@@} marks. If you are sure you want to keep that processing but do not feel confident about hacking the @file{Makefile.am} do not hesitate to ask on the project's mailing list (@value{emailsupport}). @c ------------------------------------------------------------------------- Checking the Result --- @section Checking the Result In the @sc{Window Maker} build tree you also have another target that can help you, it is @command{make check}. At current time, it does not check much, but if during the @command{make update-lang} new @code{po} file have been created you may get some errors, because you have to add these new files to the variable @var{EXTRA_DIST} in the corresponding @file{Makefile}. If you do not feel confident about doing it, do not worry, just tell about it when you submit your work, and some developer on the mailing list will just be happy to do it for you when integrating your valuable contribution (we always like when someone helps making @sc{Window Maker} better). @c ---------------------------------------------------------------- Submitting your Contribution --- @section Submitting your Contribution @emph{Preliminary Remark}: if the update process made changes in a @code{po} file but you did not change any @code{msgstr} content, it is probably a good idea to not submit the changes to that @code{po} file because it would just add noise. When you feel ready to send your changes, the first step is to prepare them. This is done with @command{git}: if you have not run the @command{git gui} previously then it is a good time to do it now. This window offers you the possibility to show your changes and to decide what you want to send. The window is divided in 4 panes: @itemize @bullet @item top-right show the current changes you have selected, for review (and also for cherry-picking stuff if you want to select precisely) @item top-left ("Unstaged Changes") the list of files with changes to be send, you can click on the name of the file to see the changes, you can click on the icon of the file if you want to send all the changes in this file; an icon in blue shows a file that have been changed and an icon in black shows a file that is new @item bottom-left ("Staged Changes") the list of files with changes that you have chosen to send so far, you can click on the file name to view these changes, you can click on the icon if you want to remove the changes from this file from the list to send @item bottom-right ("Commit Message") the message you want to attach to your changes when you submit them to the development team @end itemize The idea here is to pick your changes to the @code{po} files; for the @emph{commit message} you may wish to stuck to a simple, single line: @quotation "Updated translations for @emph{<lang>}" @end quotation The penultimate step is to click on the button @key{Sign Off} (it will add a line in the commit message), and then click on the button @key{Commit}. From this time, the commit message will clear itself and the "Staged Changes" also, showing that your action was done. You may now quit the @command{git gui}, the final step begins by running this command: @example git format-patch HEAD^ @end example This will generate a file named like @file{0001-@emph{updated-translations-for-XX}.patch} which contains your changes, ready for sending. The goal will now be to email this file to @value{emailsupport}. If you feel confident in having @command{git} send it for you, you may want to read the file @file{The-perfect-Window-Maker-patch.txt} to see how to configure @command{git} for mailing, so you can run: @example git send-email 0001-@emph{updated-translations-for-XX}.patch @end example @c ------------------------------------------------------------------------------------- The End --- @bye ����������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/build/Makefile.am������������������������������������������������������������0000644�0001750�0001750�00000003533�13642357774�014714� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# The list of sources are distributed, but none are to be # installed along with Window Maker: EXTRA_DIST = Readme \ Compilation.texi \ Translations.texi # How to re-generate automatically the top-level text files all-local: $(top_srcdir)/INSTALL-WMAKER $(top_srcdir)/README.i18n # We also re-generate the documentation when "make dist" is used, because we cannot # be assured that the doc currently present in the directory is up-to-date, for example # if the user did not run "make (all)" for valid reason dist-hook: $(top_srcdir)/INSTALL-WMAKER $(top_srcdir)/README.i18n cp -f $(top_srcdir)/INSTALL-WMAKER $(top_distdir)/INSTALL-WMAKER cp -f $(top_srcdir)/README.i18n $(top_distdir)/README.i18n $(top_srcdir)/INSTALL-WMAKER: $(srcdir)/Compilation.texi $(top_srcdir)/script/generate-txt-from-texi.sh $(AM_V_GEN)if test ! -e "$(top_srcdir)/INSTALL-WMAKER" -o -w "$(top_srcdir)/INSTALL-WMAKER" ; then \ $(top_srcdir)/script/generate-txt-from-texi.sh \ $(srcdir)/Compilation.texi -o $(top_srcdir)/INSTALL-WMAKER \ -d "`LANG=C date -u -r $(top_srcdir)/ChangeLog '+%d %B %Y' | sed -e 's,^0,,' `" \ -Dversion="$(PACKAGE_VERSION)" -e "$(PACKAGE_BUGREPORT)" ; \ else \ echo "Warning: \"$(top_srcdir)/INSTALL-WMAKER\" is not writeable, not regenerated" ; \ fi $(top_srcdir)/README.i18n: $(srcdir)/Translations.texi $(top_srcdir)/script/generate-txt-from-texi.sh $(AM_V_GEN)if test ! -e "$(top_srcdir)/README.i18n" -o -w "$(top_srcdir)/README.i18n" ; then \ $(top_srcdir)/script/generate-txt-from-texi.sh \ $(srcdir)/Translations.texi -o $(top_srcdir)/README.i18n \ -d "`LANG=C date -u -r $(top_srcdir)/ChangeLog '+%d %B %Y' | sed -e 's,^0,,' `" \ -Dversion="$(PACKAGE_VERSION)" -e "$(PACKAGE_BUGREPORT)" ; \ else \ echo "Warning: \"$(top_srcdir)/README.i18n\" is not writeable, not regenerated" ; \ fi ���������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/Makefile.am������������������������������������������������������������������0000644�0001750�0001750�00000010105�13642357774�013606� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������## Process this file with automake to produce Makefile.in SUBDIRS = build @MANLANGDIRS@ DIST_SUBDIRS = build cs ru sk dist_man_MANS = \ geticonset.1 \ getstyle.1 \ seticons.1 \ setstyle.1 \ wdread.1 \ wdwrite.1 \ WindowMaker.1 \ wmagnify.1 \ wmgenmenu.1 \ wmiv.1 \ wmmenugen.1 \ WPrefs.1 \ wxcopy.1 \ wxpaste.1 man_MANS = \ wmaker.1 \ wmsetbg.1 MOSTLYCLEANFILES = wmaker.1 wmsetbg.1 EXTRA_DIST = wmaker.in wmsetbg.in wmaker.1: wmaker.in Makefile $(top_builddir)/config.h $(AM_V_GEN)$(top_srcdir)/script/replace-ac-keywords.sh \ --header "$(top_builddir)/config.h" --filter "HAVE_INOTIFY" \ --filter "USE_ICCCM_WMREPLACE" \ -D"pkgdatadir=$(pkgdatadir)" --replace "pkgdatadir" \ -D"defsdatadir=$(defsdatadir)" --replace "defsdatadir" \ -o "wmaker.1" "$(srcdir)/wmaker.in" wmsetbg.1: wmsetbg.in Makefile $(top_builddir)/config.h $(AM_V_GEN)$(top_srcdir)/script/replace-ac-keywords.sh \ --header "$(top_builddir)/config.h" --filter "USE_XINERAMA" \ -o "wmsetbg.1" "$(srcdir)/wmsetbg.in" # Create a 'silent rule' for our make check the same way automake does AM_V_CHKOPTS = $(am__v_CHKOPTS_$(V)) am__v_CHKOPTS_ = $(am__v_CHKOPTS_$(AM_DEFAULT_VERBOSITY)) am__v_CHKOPTS_0 = @echo " CHK $@" ; am__v_CHKOPTS_1 = check-local: wmaker-args WPrefs-args wmagnify-args geticonset-args getstyle-args seticons-args setstyle-args \ wdread-args wdwrite-args wmgenmenu-args wmiv-args wmmenugen-args wmsetbg-args wxcopy-args wxpaste-args wmaker-args: $(AM_V_CHKOPTS)$(top_srcdir)/script/check-cmdline-options-doc.sh \ --program "$(top_builddir)/src/wmaker" --man-page "wmaker.1" WPrefs-args: $(AM_V_CHKOPTS)$(top_srcdir)/script/check-cmdline-options-doc.sh \ --program "$(top_builddir)/WPrefs.app/WPrefs" --man-page "$(top_srcdir)/doc/WPrefs.1" wmagnify-args: $(AM_V_CHKOPTS)$(top_srcdir)/script/check-cmdline-options-doc.sh \ --program "$(top_builddir)/util/wmagnify" --man-page "$(top_srcdir)/doc/wmagnify.1" geticonset-args: $(AM_V_CHKOPTS)$(top_srcdir)/script/check-cmdline-options-doc.sh \ --program "$(top_builddir)/util/geticonset" --man-page "$(top_srcdir)/doc/geticonset.1" getstyle-args: $(AM_V_CHKOPTS)$(top_srcdir)/script/check-cmdline-options-doc.sh \ --program "$(top_builddir)/util/getstyle" --man-page "$(top_srcdir)/doc/getstyle.1" seticons-args: $(AM_V_CHKOPTS)$(top_srcdir)/script/check-cmdline-options-doc.sh \ --program "$(top_builddir)/util/seticons" --man-page "$(top_srcdir)/doc/seticons.1" setstyle-args: $(AM_V_CHKOPTS)$(top_srcdir)/script/check-cmdline-options-doc.sh \ --program "$(top_builddir)/util/setstyle" --man-page "$(top_srcdir)/doc/setstyle.1" wdread-args: $(AM_V_CHKOPTS)$(top_srcdir)/script/check-cmdline-options-doc.sh \ --program "$(top_builddir)/util/wdread" --man-page "$(top_srcdir)/doc/wdread.1" wdwrite-args: $(AM_V_CHKOPTS)$(top_srcdir)/script/check-cmdline-options-doc.sh \ --program "$(top_builddir)/util/wdwrite" --man-page "$(top_srcdir)/doc/wdwrite.1" wmgenmenu-args: $(AM_V_CHKOPTS)$(top_srcdir)/script/check-cmdline-options-doc.sh \ --program "$(top_builddir)/util/wmgenmenu" --man-page "$(top_srcdir)/doc/wmgenmenu.1" wmiv-args: $(AM_V_CHKOPTS)$(top_srcdir)/script/check-cmdline-options-doc.sh \ --program "$(top_builddir)/util/wmiv" --man-page "$(top_srcdir)/doc/wmiv.1" wmmenugen-args: $(AM_V_CHKOPTS)$(top_srcdir)/script/check-cmdline-options-doc.sh \ --program "$(top_builddir)/util/wmmenugen" --man-page "$(top_srcdir)/doc/wmmenugen.1" wmsetbg-args: $(AM_V_CHKOPTS)$(top_srcdir)/script/check-cmdline-options-doc.sh \ --program "$(top_builddir)/util/wmsetbg" --man-page "wmsetbg.1" wxcopy-args: $(AM_V_CHKOPTS)$(top_srcdir)/script/check-cmdline-options-doc.sh \ --program "$(top_builddir)/util/wxcopy" --man-page "$(top_srcdir)/doc/wxcopy.1" wxpaste-args: $(AM_V_CHKOPTS)$(top_srcdir)/script/check-cmdline-options-doc.sh \ --program "$(top_builddir)/util/wxpaste" --man-page "$(top_srcdir)/doc/wxpaste.1" .PHONY: wmaker-args WPrefs-args wmagnify-args geticonset-args getstyle-args seticons-args setstyle-args \ wdread-args wdwrite-args wmgenmenu-args wmiv-args wmmenugen-args wmsetbg-args wxcopy-args wxpaste-args �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/doc/wmmenugen.1������������������������������������������������������������������0000644�0001750�0001750�00000004420�13642357774�013641� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.TH "wmmenugen" "1" "16 May 2015" .SH "NAME" \fBwmmenugen\fR \- Window Maker PropList menu generator .PP .SH "SYNOPSIS" .B wmmenugen .RI [ options ...] .BI \-parser= <name> .IR fspec " [" fspec "...]" .BI \fR[\fP\-parser= <name> .IR fspec " [" fspec "...]...]" .SH "DESCRIPTION" .B wmmenugen generates a menu in the .I PropList format for Window Maker from the input file .IR fspec . In the case where .I fspec is a directory instead of a file, then .B wmmenugen will read all the files present in the hierarchy of this directory. .SH "OPTIONS" .TP .BR \-\-help ", " \-h print a help message with the list of options .TP .B \-parser specify the format of the file to be parsed .TP .B \-\-version print the version of Window Maker from which the program comes .SH "PARSERS" .B wmmenugen supports these file formats for input files: .TP .I wmconfig the format of the menu generation tool for X of the same name .TP .I xdg the format of the menu specification as defined by the .I FreeDesktop standard, currently at version 1.1 .SH "RETURN VALUE" The exit status from the .B wmmenugen command provides information for the caller: .TP .B 0 when the .I PropList menu was successfully generated on .IR stdout . .TP .B 1 when a .I fspec caused a problem (non readable file, ...) .TP .B 2 the arguments of the command line where not recognised .TP .B 3 the program met an unexpected menu structure; you probably want to look at the section .B BUGS below. .SH "BUGS" If you get the exit status .B 3 with the unclear error message about .IR "unprocessed levels on the stack" , you encountered a limitation of .BR wmmenugen . It would be a good idea to prepare an archive with the files incriminated and submit them to the mailing list (wmaker-dev@googlegroups.com) with you command line, so the team can work on improving the behaviour of the program on this case. .SH "SEE ALSO" .BR wmgenmenu (1), the tool to generate a default menu .PP the .I Wmconfig program can be found at: <http://www.arrishq.net/index.html> .PP the .I xdg specification can be found at: <http://standards.freedesktop.org/menu-spec/menu-spec-1.1.html> .SH "AUTHOR" wmmenugen is a part of Window Maker. It was written by Tamas TEVESZ. .PP This manpage was written by Rodolfo García Peñas (kix) for the Debian GNU/Linux system (but may be used by others). ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/AUTHORS��������������������������������������������������������������������������0000644�0001750�0001750�00000015061�13431646202�012042� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������Information about locale translators is at src/po/README and Library/WindowMaker/README Many thanks to the following people who have contributed patches, bug fixes and other stuff for Window Maker: ABE Shige <sabe@ibm.net> I18N support, diagonal and vertical gradient, cosmetic additions to move/resize frames, window list menu, side swapping and other things for dock, Japanese local, icon arrangement fix, remember current workspace after restart, dock bug fixes Andrea Arcangeli <arcangeli@mbox.queen.it> Fix for cascade window placement Dmitry Astapov <adept@dimail.alpline.mao.kiev.ua> Fix and some additions on XKB lock language status. Peter Bentley <pete@sorted.org> fixed WM_STATE handling bug, fixed some memory leaks, made application menus be mapped near the windows for non-click-to-focus modes, timer bug Ulf Betlehem <flu@iki.fi> Window resize with Meta-Click3, fixed OpaqueMove to send only 1 synth. ConfigureNotify Olly Betts <olly@muscat.co.uk> shaded window indication in window list Tudor Bosman <tudorb@caltech.edu> autoraise bugfix Rob Clark <rclark@turing.cs.hmc.edu> Text input field, 15bpp support George Clernon <clernong@tinet.ie> bug fix in browser widget Omar Cornut / Zoop <cornut@capway.com> SteelBlueSilk theme Sylvain CORRE <sylvain.corre@wanadoo.fr> bug fix for MkLinux/PPC Frederic Devernay <devernay@istar.fr> dock fix for openwindows, made asclock be friendlier with colorcell impaired dpys, fixed wrlib to work with most visual/depth combinations, many miscellaneous bug fixes Adrian Drzewiecki <fsawd@aurora.alaska.edu> opaque window move Bjoern Giesler <giesler@ira.uka.de> Dynamic reconfiguration, libPropList Oliver Graf <ograf@fga.de> more configure.in fixes Chris Green <grapeape@uab.edu> FAQ author/maintainer Nicolai P Guba <nicolai@gnu.ai.mit.edu> Documentation help, autoconf cleanup Mark 'segfault' Guzman <root@lsd.pbx.org> Various bugfixes Ullrich Hafner <hafner@bigfoot.de> Better detection of gfx libraries, added IconTitleColor/IconTitleBack Matthew Hawkins <matt@mh.dropbear.id.au> former temporary project maintainer Greg Hayes <sdc@choice.net> Twisted miniaturization animation Alban Hertroys <dalroi@wit401310.student.utwente.nl> WINGs color panel HIDEKI Fujimoto <hideki70@osk2.threewebnet.or.jp> FreeBSD portability, icon arrangement fixes, dock initialization bug fix, some I18N related fixes Pascal Hofstee <daeron@wit401305.student.utwente.nl> WINGs bug fixes, WINGs color panel Robert A. Holak <panthar@tradeservices.com> bug fix Michael Hokenson <logan@dct.com> wkde2menu.pl script IKARASHI Akira <ikarashi@itlb.te.noda.sut.ac.jp> Workspace change bug fix Sudish Joseph <sj@eng.mindspring.net> Modifier binding fix and other bug fixes Luke Kendall <luke@research.canon.com.au> menu format converter, various enhancements to wxcopy and wxpaste Bradley M Keryan <keryan@andrew.cmu.edu> EMACS/keypad like cursor movement for WINGs textfield Jim Knoble <jmknoble@pobox.com> made autoarrange icons a run-time option, SHADOW_RESIZEBAR c-time option, no workspace switch to the same workspace, dashed icon selection, miscellaneous bug fixes, definable cursors, --no-polling command line option. The JED Text Editor <xjed@windowmaker.info> Project maintainer Alfredo K. Kojima <kojima@windowmaker.info> The guy who types random keys to feed JED with the necessary entropy Jay Kominek <jkominek@xtn.net> smart and random placement Alexander Kourakos <awk@bnt.com> Move/resize code fixes, button press/release fix Ryan Land <rland@bc1.com> workspace "layers" Largo <largo@current.nu> wm.current.nu maintainer, FAQ co-maintainer Stuart Luppescu <s-luppescu@uchicago.edu> Documentation help Marcelo E. Magallon <mmagallo@efis.ucr.ac.cr> CPP search path improvement, man pages, bug fixes Tim Malone <mrgone@eskimo.com> bug fix, jpeg bug fix MANOME Tomonori <manome@itlb.te.noda.sut.ac.jp> I18N bug fixes and Japanese locale, wsetfont script Brian Alexander Martin <brian@goober.wireless.ucsc.edu> PIPE_MENU Andrea Mistrali <andre@ulmo.aleph.it> 3D version of GNUstep icon. Jeff Meininger <jeffm@boxybutgood.com> Fix for unassociated alpha tiff Craig Nellist <crn@ozemail.com.au> selection in textfield Dan Pascu <dan@windowmaker.info> dock ghost (superfluous mode) fix, enhancement for scrollable menus, clip, numerous other stuff, project maintainer Biagio Pippa <1993s017@educ.disi.unige.it> fixed miniaturization with transient window Anthony Quinn <Anthony.Quinn@usa.xerox.com> Sound code. Andreas Saudemont <saudemon@depinfo.u-bourgogne.fr> Initial code for clip's collapse feature. Ture Pelsson <ture@lysator.liu.se> various portability fixes, replaced busy wait with select() in event handling code, fixed problem with some misbehaved kids after a fork(), some other bug fixes, support for poll() in event handling code Toby Sargeant <?> menu format converter Carsten Schaar <nhadcasc@fs-maphy.uni-hannover.de> SCO portability, German locale, autoconf enhancements Christopher Seawood <cls@seawood.org> REDUCE_APPICON/single-icon Chong Shang Shan <chongsha@sps.nus.edu.sg> flipping iconification animation Daniel Skarda <0rfelyus@atrey.karlin.mff.cuni.cz> SGI "black dialogs" bug fix Paul D. Smith <psmith@BayNetworks.COM> SunOS portability, configure fixes Phillip Smith <teknix@alloy.net> FTP, WWW, mailing list site provider/maintainer (Net logistics) Lauri Tarkkala <ltarkkal@cs.hut.fi> SIGHUP unblock bug fix Sam Varner <varner@nmr.physics.wm.edu> many fixes and enhancements for move, resize and window placement code. Marco van Hylckama Vlieg <fatal@global.uibk.ac.at> house icon for WINGs file dialogs, defaultAppIcon and Clip xpm tchX.tiff Plus the following icons: GNUterm.tiff clip2.tiff defaultterm.tiff draw.tiff linuxterm.tiff mixer.tiff notepad.tiff pdf.tiff ps.tiff real.tiff sgiterm.tiff sound.tiff staroffice2.tiff timer.tiff wilber.tiff write.tiff xdvi.tiff xv.tiff David Wang <dwang@cisco.com> edge resistance, 8bpp balloon bug fix, other 8bpp related fixes Franck Wolff <frawolff@club-internet.fr> various fixes/enhancements to WINGs Yoav Yerushalmi <yoav@mit.edu> Fixed -visualid for screens that can do multiple depths. Another fix in libproplist. Chooses best depth in screen. FRBall <frb@umr.edu> dgradient fix "]d" <id@windowmaker.info> Window list menu miniaturized/hidden hints, XDE support, XKB lock language status, WINGs enhancements, bug fixes, window commands menu enhancement, window move/resize by keyboard. GNUstepGlow.tiff icon, WINGs color panel, Appearance section icon(s) Trae Mc Combs <x@themes.org> BlueWaves.jpeg background image in BlueWaves theme. And a special thanks to Martin Eskildsen for giving me his copy of NEXTSTEP :-) �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/FAQ������������������������������������������������������������������������������0000644�0001750�0001750�00000155764�13431646202�011343� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ WindowMaker FAQ ==================================================================== Last modified: Tue Apr 20 20:15:17 EST 1999 the latest info can be found at http://www.dpo.uab.edu/~grapeape/wmfaq.html or http://wm.current.nu/wmfaq/ -------------------------- Summary of Contents: 1 - Introduction 1.1 What is Window Maker? 1.2 Where can I get Window Maker? 1.3 Where are the mailing list archives? 1.4 Where is more documentation on configuring Window Maker? 1.5 What is an App Icon? 1.6 How can I get a question added to the FAQ? 1.7 How do I report bugs? 1.8 Is there an anonymous cvs server? 2 - Installation 2.1 Where can I get proplist.h? 2.2 Why do no icons show up after installing Window Maker 0.15.0 when I've followed all the directions? 2.3 How do I get libtiff to work? 2.4 How do I get libjpeg to work? 2.5 How do I get libpng to work? 2.6 How do I get libgif (or libungif) to work? 2.7 Does wmsound work with 0.1x.x? 2.8 Can I use WindowMaker with KDE or GNOME or CDE? 2.9 How do I get Window Maker working with xdm in Redhat 5.[01]? 2.10 Do I need to rerun wmaker.inst with every new version of Window Maker? 2.11 When I install Window Maker, I've used wmaker.inst correctly and I only get a root menu with xterm and exit. How do I fix this? 2.12 How do I get Window Maker to use more than 16 colors on my SGI Indy Workstation? 2.13 Using WindowMaker with Solaris 2.6 CDE 2.14 How do I switch CDE's window manager to use Window Maker? 2.15 When I run wmaker it quits complaining about something "__register_frame_info". 2.16 When I run wmaker it complains about something like library is 62, caller expects 61 3 - Usage 3.1 How do I get new apps on the dock (The line of pixmaps on the right side of the screen by default) 3.2 What is the difference between the Exit and Exit Session Option? 3.3 How do I "dock" AppIcons on the Clip? 3.4 Why do none of my Key Bindings work in Window Maker 0.1x.x 3.5 How do I rename workspaces? 3.6 How can I resize a window if the window is larger than my current desktop? 3.7 How do I "undock" AppIcons? 3.8 I docked an application but when I run it the button is permanently shaded and I can't run new instances. 3.9 When I run wmaker it complains about not being able to load any fonts. 3.10 When I set the root background with wmsetbg by hand it works, but when I do that from the configuration files it doesn't! 3.11 When I run GNOME application they have no title bar. 4 - Configuration 4.1 What are those files inside my ~/GNUstep directory? 4.2 How do I enable the normal X sloppy focus mode? 4.3 How do I get my auto-arrange icons to work? 4.4 How do I get my Meta-Tab to cycle through windows correctly? 4.5 How can I define my own Icon for a program? (instead of the Icon the Application Supplies?) 4.6 How do I get a pixmap background for my appicons (those things in the dock)? 4.7 How do you dock <insert program here> that doesn't have an appicon in the new version of Window Maker? 4.8 How do I get x11amp to not have a title bar? (or any other program for that matter?) 4.9 How do I set a pixmap background? 4.10 Can I put pixmaps in my root menu and title bars? 4.11 How do I get my Minimize Icon to look like the triangle I see in screenshots? 4.12 How do I get superfluous bells and whistles working? 4.13 How do I get my old style back? 4.14 How do I get the window menu with only a two button mouse? 4.15 How do I edit my root menu? 4.16 How can I set dock/clip to use single click to launch applications, instead of double click? 5 - Other Applications 5.1 How do I assign gimp an appicon? 5.2 How do I get an appicon for XEmacs 20.3+? 5.3 Where do you get that clock program I always see on people's desktops? 5.4 How do you dock asclock? 5.5 How do you dock wmload? 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? 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 accumulate on title bars! 5.14 I'm using RedHat 6.0 and Netscape dies without reason. 6 - Programming 6.1 How do I get a normal X application to produce an appicon? 6.2 How do I get my tcl/tk application to produce an appicon? 6.3 What is WINGs? 6.4 Where can I get more information about WINGs? 7 - Miscellaneous Questions 7.1 Is there a pager for Window Maker? 7.2 Can I have folders like in AfterStep? 7.3 How do I use getstyle and setstyle? 7.4 Why don't you distribute {normal diff, xdelta} patches? 7.5 Will you add GNOME support? 8 - Themes 8.1 What exactly are Themes? 8.2 How do I install a Theme? 8.3 How do I make a Theme? ======================================================================== -=-=-=-=-=-=- Introduction: -=-=-=-=-=-=- 1.1 What is Window Maker? ---------------------------------- Window Maker is an elegant X11 window manger that emulates the OpenStep desktop with some noticeable enhancements. Look at http://wm.current.nu/themes/my-themes.html and http://wm.current.nu/themes/screenshots.html here for example screenshots. 1.2 Where can I get Window Maker? ---------------------------------- The official site to get new developmental versions from is http://windowmaker.org/pub/source/beta/ The mercurial repository is available at https://hg.windowmaker.org/wmaker The development versions are usually very stable themselves, so if you want to have all the newest features, you can rather safely go with the development versions. Just remember to save any unsaved data before you go playing around with the config files. Also, remember they are developmental versions, so your mileage may vary, don't get angry if they crash. 1.3 Where are the mailing list archives? ---------------------------------------- Please read the information on the web pages at http://lists.windowmaker.org/ for information on how to subscribe, the posting guidelines, and how to access the web archives. 1.4 Where is more documentation on configuring Window Maker? ---------------------------------- Besides the mailing list archives, there are nice documents in http://windowmaker.org/documentation.php 1.5 What is an appicon? ---------------------------------- An appicon is the icon (without the tiny title bar a minimized application icon has) produced by most applications that initially is in the bottom left corner of the screen while an application is running. For an example, run xterm and notice the icon in the corner. 1.6. How can I get a question added to the FAQ? ---------------------------------- Ask on the mailing list, or send your request to faqs@windowmaker.org Other avenues are the Window Maker wiki http://bugs.windowmaker.org/projects/wmaker/wiki and the forums http://bugs.windowmaker.org/projects/wmaker/boards 1.7. How do I report bugs? ---------------------------------- You can look at the BUGFORM file in your tarball of Window Maker. Alternatively, you can use the Window Maker Bugtracker at http://bugs.windowmaker.org/projects/wmaker/issues 1.8. Is there a public source code repository? ---------------------------------- Yes there is. To check out from mercurial use: hg clone http://hg.windowmaker.org/wmaker wmaker To update your source tree, cd to the wmaker directory and type hg pull -=-=-=-=-=-=- Installation: -=-=-=-=-=-=- 2.1 Where can I get libPropList/proplist.h? ------------------------------------------- starting with Window Maker 0.70.0, libPropList is no longer needed. It was obsoleted by adding property list handling code to the WINGs library. 2.2 Why do no icons show up after installing Window Maker >= 0.15.x when I've followed all the directions? ------------------------------------------------------------------- Under normal circumstances, this should not happen because Window Maker should detect if libtiff is going to be compiled in and then it will make the default theme use .tiff or .xpm icons, depending if TIFF support is compiled in or not. As of Window Maker version 0.15.0, the default setup includes .tiff icons which require you to have compiled Window Maker with libtiff support, if you want them to be used. If you are happy with the .xpm icons, then you don't need libtiff. Window Maker will detect that TIFF support is not available and use .xpm icons instead. For some help on compiling with libtiff, look at the libtiff section of this FAQ. 2.3 How do I get libtiff to work? ---------------------------------- The whole key to getting libtiff working for me was to upgrade to >= tiff-v3.4beta037-tar.gz available at ftp.sgi.com. Rerun ./configure and make and it should work. I had previously been using tiff-v3.4-tar.gz instead so the library was there just not working. A note to keep in mind, is that the tiff libs are versioned rather oddly, version tiff-v3.4beta037 is actually newer than tiff-v3.4. Make sure to rm config.cache and rerun ./configure before attempting to compile again. Also, make sure to use gnu-make for the Window Maker compile. 2.4 How do I get libjpeg to work? ---------------------------------- The newest jpeg libs are available at ftp://ftp.uu.net/graphics/jpeg/. How many of you have seen that darned "lib reports 62 caller expects 61" type of error? Well, I have more than once, and here are some answers to possibly help you out. First things first. As always, make sure there are not older copies of libjpeg floating around on your system. By default my Slackware distribution came with an old libjpeg.so.1 in the /usr/X11R6/lib/ directory. This can simply be deleted. Or if something complains after you delete it, recompile it if you can to look for the new lib in the right place, or if that fails, as a last resort, you might add a symlink to the new lib like so: ln -s /usr/local/lib/libjpeg.so.6.0.2 libjpeg.so.1 Now on to the error. This is basically caused by your application having been compiled to dynamically use the libjpeg.so shared library. When you install a new lib and then try to run your program again, it expects the lib it was compiled against, in this case the older libjpeg.so.6.0.1 and instead finds libjpeg.so.6.0.2 and reports the error. The fix is actually rather simple. Along with adding a libjpeg.so.6 symlink like so (just in case): ln -s libjpeg.so.6.0.2 libjpeg.so.6 where you installed your new lib, you simply need to recompile your app to link it against the new library. :) Make sure to rm config.cache and rerun ./configure before attempting to compile again. Also, make sure to use gnu-make for the Window Maker compile. 2.5 How do I get libpng to work? ---------------------------------- The newest png libs are available at http://www.cdrom.com/pub/png/pngcode.html. You should also get the newest zlib libs from http://www.cdrom.com/pub/infozip/zlib/. I had a few problems with this lib as well, basically I had an old libz.so in my /usr/X11R6/lib/ directory which configure was finding first, and which failed the test, being an older lib. Generally the same applies here as with libjpeg, make sure there are no older versions of the necessary libs floating around on your system, then try and configure and make again. Make sure to rm config.cache and rerun ./configure before attempting to compile again. Also, make sure to use gnu-make for the Window Maker compile. 2.6 How do I get libgif (or libungif) to work? ---------------------------------- The newest libgif is available at ftp://sunsite.unc.edu/pub/Linux/libs/giflib/. The newest libungif is available at ftp://sunsite.unc.edu/pub/Linux/libs/graphics/. I had a few problems with libgif... it seems that the install process didn't install the header file libgif.h, so although the Window Maker configure found the lib (libgif.so.x), when you actually try to compile, it fails when it looks for the header to include the make. I simply copied it from the libgif source directory to the system include directory. (/usr/local/include/ on my system). Make sure to rm config.cache and rerun ./configure before attempting to compile again. Also, make sure to use gnu-make for the Window Maker compile. 2.7 Does wmsound work with 0.1x.x? ---------------------------------- As of Window Maker 0.15.x, sound is now included by default but requires the authors sound server. For more information, read the NEWS file in the Window Maker distribution. The author Anthony Quinn <southgat@frontiernet.net> has released a version that works with Window Maker >= 0.15.x. It is available from it's home page at http://www.frontiernet.net/~southgat/wmsound/ or on Largo's site at http://wm.current.nu/files.html#wmsound for your convenience. 2.8 Can I use WindowMaker with KDE or GNOME or CDE? --------------------------------------------------- Contrary to what a lot of people think, KDE is NOT a window manager. KDE is a suite of various applications that includes a custom window manager (kwm). The same is true for CDE. Now, answering the question: Yes, you can use WindowMaker in these environments. To use Window Maker with GNOME, you don't need to do anything special, although you may want to look at the "When I run GNOME application they have no title bar" below. To use it with CDE, read the answer for "How do I switch CDE's window manager to use Window Maker?" To use it with KDE, read it's documentation to get rid of kwm (and possibly kpanel) and replace it with wmaker. Then, start WPrefs.app, go to "Mouse Preferences" and set the "Disable mouse actions" check box. You will need to restart Window Maker to make this change take effect. The "Disable mouse actions" change is needed to allow you to use krootwm, which enables you to use kfm's desktop icons, but will prevent you from accessing Window Maker's Applications and Window List menus with the mouse. 2.9 How do I get Window Maker working with xdm in Redhat 5.[01]? ---------------------------------------------------------------- After running wmaker.inst and letting it write to .xinitrc, cp .xinitrc .xsession and make sure that /usr/local/bin is in your $PATH for the Xserver. You can make sure of this by including a statement like export PATH=$PATH:/usr/local/bin in your .xsession file. Make sure to chmod +x .xsession so that the Xsession script of xdm can execute it. This is how the Xsession script is designed: startup=$HOME/.xsession if [ -x "$startup" ]; then exec "$startup" elif [ -x "$HOME/.Xclients" ]; then exec "$HOME/.Xclients" elif [ -x /etc/X11/xinit/Xclients ]; then exec /etc/X11/xinit/Xclients else if [ -f "$resources" ]; then xrdb -load "$resources" fi exec xsm fi You could also have a .Xclients file as was mentioned in previous revisions of this question. 2.10 Do I need to rerun wmaker.inst with every new version of Window Maker? ---------------------------------- There is no need to do this. You can do it, but keep in mind, that all your preferences will be lost, overwritten by the defaults. You can update the files and add the changes yourself if you need to, but else in most cases is sufficient to rely on WPrefs and it will update for you the new missing options if they differ from the default ones. The way domain files are read beginning from 0.15.0 makes the need for update almost redundant. The user config files are merged with the global ones in /usr/local/share/WindowMaker/Defaults. So even if new options are added, they will be reflected in the user configuration. Only if user wishes to change the default behavior, he needs to add that option to the config file. If there ever happens to be a need for all users to rerun wmaker.inst in a future version, this will be noted in the NEWS file. 2.11 When I install Window Maker, I've used wmaker.inst correctly and I only get a root menu with xterm and exit. How do I fix this? ---------------------------------- Most likely, the problem is that Window Maker can not find a copy of the C pre processor in a directory such as /lib. The file /lib/cpp should be a symbolic link to whatever c compiler's cpp you are using. Mine reads as: cpp -> ../usr/lib/gcc-lib/i586-pc-linux-gnu/pgcc-2.90.29/cpp* There seems to be another common problem that exhibits this same behavior. If you find another solution that matches this question please email <sprout@dok.org> or <largo@current.nu>. 2.12 How do I get Window Maker to use more than 16 colors on my SGI Indy Workstation? ---------------------------------- Thanks to Peter H. Chou <pchou@leland.Stanford.EDU> for this answer: By default, the SGI X Server uses 8-bit Pseudocolor mode. To change it, edit (as root) the file /usr/lib/X11/xdm/Xservers. Change it to read: :0 secure /usr/bin/X11/X -bs -c -class TrueColor -depth 24 2.13 Using WindowMaker with Solaris 2.6 CDE ---------------------------------- (thanks to Rob Funk, Unix God of osu.edu) Assuming you installed Window Maker according to the README's that come with the source, all you need to run Window Maker on a Solaris box is an entry in the .xinitrc. Only 0.17 - 0.19 versions have been tested, but when you run the configure script, let it make changes to the .xinitrc file. It should look something like this: #!/bin/sh # Window Maker Default .xinitrc exec /usr/local/bin/wmaker Believe it or not, that's all that it takes. This, in fact, runs WindowMaker instead of OpenWindows. In order to choose WindowMaker, you simply choose "OpenWindows Desktop" in the "Options - Session" Menus. Choose "CDE Desktop" if you want CDE. The Color schemes and settings for Window Maker are separate from CDE. Tested on a SPARC 10, Solaris x86 should work also. (better, hopefully) 2.14 How do I switch CDE's window-manager to use Window Maker? ---------------------------------- Method 1: Peter Ilberg <peter.ilberg@natinst.com> gives us this answer: Install WM wherever you want it, mine is in /opt/WindowMaker-0.16.0 (eg. use ./configure --prefix=/opt/WindowMaker-0.16.0). Run the install script wmaker.inst in your home directory. Add the following two lines to .dtprofile in your home directory: SESSIONTYPE=xdm; export SESSIONTYPE PATH=:/usr/contrib/bin/X11:$PATH:.; export PATH This tells CDE to go looking for an .xinitrc/.xsession instead of using the default environment. Make your .xsession/.xinitrc executable (VERY IMPORTANT, wmaker.inst did NOT do this automatically for me) using eg. chmod ugo+x .xsession Your .xsession/.xinitrc should look something like this: #!/bin/sh <some other init stuff that you want/need> exec wmaker Things to try if it doesn't work: (somewhat fuzzy and random) This should do it although I did have problems sometimes initially which I fixed by randomly trying absolute pathes for wmaker in .xsession/.xinitrc and/or making the dtprofile/.xinitrc/etc executable. It helps logging in on the console (select from CDE login screen) and start X manually using 'X'. If it works that way it should work when logging into the CDE environment. Remember to Check your paths! If it doesn't work, you can also substitute some other window manager for wmaker in the .xinitrc and see if that works. If it does you know at least that .xinitrc is getting called/executed, so your WM path is wrong or not set. Method 2: Thomas Hanselman gave this alternative answer (via Peter Ilberg): Build and install WM wherever you want, as described in Method 1. You can install and run WM just fine from your home directory. That's what I'm doing, since I don't have root access at work :(. Then, in your .Xdefaults file in your home directory, add the following line: Dtsession*wmStartupCommand: <path to Window Maker executable> Then, log out, and log back in, and, unless I've forgotten a step (or this is a custom Nortel thing), you should be in Window Maker heaven ;). Difference between the methods: (according to Thomas) I've been told that the difference between setting the resource and Peter's method is that if you override the window manager with the resource, you still get the CDE resources read into the resource database (so you still have your color settings & such from CDE), whereas with Peter's, the CDE resource don't get read into the database. I don't know if this is true or not, however. Also, another thing to note with Window Maker and HP-UX 10.20 -- if you select "Exit Session" from the WM root menu, Window Maker and all of your applications are killed, but you may not be logged out. Again, this might be an artifact from my work environment, or the way I start Window Maker. Owen Stenseth <iplenergy.com> adds: When using this method it is possible to exit Window Maker cleanly by using the dtaction command. I use the following in my Window Maker menu: "Exit Session" EXEC dtaction ExitSession The only problem I have at the moment is I seem to get multiple copies of asclock running when I log in again. You can also use the normal "Exit Session" command from the WM root menu and place additional commands required to shutdown CDE in ~/GNUstep/Library/WindowMaker/exitscript So, if you add "dtaction ExitSession" in that file, the command to shutdown CDE will be automatically executed when you exit WindowMaker. 2.15 When I run wmaker it quits complaining about something __register_frame_info. ---------------------------------- This is due to using gcc >= 2.8.0 or egcs to compile Window Maker or a library it uses, then running these precompiled binaries on a system using libraries compiled with gcc 2.7.2.x You will have to compile Window Maker yourself on this system. Please read the INSTALL file for the instructions on how to do so. 2.16 When I run wmaker it complains about something like expected libjpeg 61 got 62. ---------------------------------- Upgrade your libjpeg library and/or recompile Window Maker. 2.17 How do I fix an error such as "libwraster.so.1: cannot open shared object file" ? ---------------------------------- Like most software using GNU autoconf, Window Maker by default will install under the /usr/local prefix. This has the repercussion on many systems that the libraries that are part of Window Maker will be installed in /usr/local/lib, which is usually not in the default system LD_LIBRARY_PATH. This is why the library cannot be found. Under Linux, you will need to list this directory in /etc/ld.so.conf and run /sbin/ldconfig. Both these operations will need to be performed as the superuser. Under BSD, as the superuser you will need to run ldconfig -m /usr/local/lib which will merge this directory into the system library path. If the problem persists, you may be able to use "ldd" to track down why the library cannot be loaded (it will print a list of dynamic objects used by the executable or library listed on the command line, and where it is expecting to find it). -=-=-=- Usage: -=-=-=- 3.1 How do I get new apps on the dock (The icon or line of icons on the right side of the screen by default) ---------------------------------- Launch an application. If there is a little icon that pops up in the bottom corner of the screen, drag it over to the dock icon(s). You should see a whitish square indicating when it is close enough to dock, and where it will be placed. To make sure this application will be there next time you start up WindowMaker, exit WindowMaker with the "exit session" option. 3.2 What is the difference between the 'Exit' and 'Exit Session' Options? ---------------------------------- 'Exit' exits wmaker, but leaves the other apps running, and if wmaker was not the last app launched in the .xinitrc the X server is not closed, until the last app started by .xinitrc is closed. 'Exit session' will exit wmaker, but also will close all running apps, thus the X server will be closed, and your session will end. 3.3 How do I "dock" AppIcons on the Clip? ----------------------------------------- Just drag icons near it like you would for the dock. Note that if you place the clip near the dock, you may have problems docking appicons in either. Move the clip away first. 3.4 Why do none of my Key Bindings (ie: Alt+#) work in Window Maker 0.1x.x ---------------------------------- If you are using XFree86, make sure scroll lock and numlock are off or no bindings will work (XFree bug). You can try using the XFree86 Numlock Hack by editing the line #undef NUMLOCK_HACK in $WindowMakerdir/src/wconfig.h and changing it to #define NUMLOCK_HACK. As of 0.18.0, this hack functions properly. 3.5 How do I rename workspaces? ---------------------------------- Right click on the "desktop" (root window) to show the menu (don't hold the button down). Go to the workspaces menu and hold the Control key down and click on the workspace you would like to rename and type the name. If you use the clip, use the "Rename Workspace" command in the clip menu. 3.6 How can I resize a window if the window is larger than my current desktop? ---------------------------------- David Reviejo <dreviejo@arrakis.es> best summed up this answer: "Maybe you know: Alt+Left click and drag to move the window. Try this: Alt+Right click and drag to resize (by moving the nearest window corner) Another move/resize tip: while you are moving or resizing a window, you can change the move/resize mode by pressing the SHIFT key." 3.7 How do I "undock" AppIcons? ---------------------------------- If the program is not running, just drag the icon to the middle of your desktop (away from the dock and clip) and watch it disappear. If the program is running, hold down Meta (usually CTRL) and drag the icon off the dock. You can also right click on it and choose 'Kill', then undock as usual. 3.8 I docked an application but when I run it the button is permanently shaded and I can't run new instances. ---------------------------------- You probably docked the application with dockit. To fix it remove the icon and use the "Emulate Application Icon" checkbox in the Advanced Options section of the Attributes panel for the window. Then restart the application to get the application icon you must use to dock the application. It can also mean that you did something you shouldn't, which is changing the program that is ran from the docked icon. For example, if you docked rxvt you must NOT change it to xterm, for example. You also can't do any changes that might alter the contents of the WM_CLASS hint for the window, like the -name parameter for xterm, rxvt and other programs. 3.9 When I run wmaker it complains about not being able to load any fonts. ---------------------------------- Check if the locale settings are correct. If you're not sure what to do, unset the LANG environment variable before running wmaker. TODO: give complete explanation 3.10 When I set the root background with wmsetbg by hand it works, but when I do that from the configuration files it doesn't! ---------------------------------- DOH! If you set the root background with wmsetbg by hand, it will obviously find the image, since you have explicitly specified it by hand. But if you simply put it in ~/GNUstep/Defaults/WindowMaker in some option like WorkspaceBack, it will not find the image because Window Maker can't read your mind to figure where you put the image. So, to fix it, you have to either place the full path for the image in the texture specification or put the path for the directory you put your background images in the PixmapPath option. You can also put all your background images in places like ~/GNUstep/Library/WindowMaker/Backgrounds or /usr/local/share/WindowMaker/Backgrounds These directories will be listed under the "Search Path" section of WPrefs. 3.11 When I run GNOME application they have no title bar. ---------------------------------- The GNOME toolkit decided to behave his own way, so it draws its own title bar with buttons, and asks Window Maker to not draw anything (title bar, resize bar, close and miniaturise button, ...). The workaround is, for each application, to ask for Window Maker's window menu (that is likely <Ctrl>+<Escape> if you did not change it), get the Attributes, and click on the greyed "Disable titlebar" until it is white (the same can be done for other decoration attributes). If you use a lot of GNOME applications, you may want to ask Window Maker to just ignore the no-titlebar-and-all for all windows at once, which is done from WPrefs by going to the "Expert" panel and checking the "Ignore decoration hints for GTK applications" button. -=-=-=-=-=-=-=- Configuration: -=-=-=-=-=-=-=- 4.1 What are those files inside my ~/GNUstep directory? ---------------------------------- ~/GNUstep/WindowMaker/WindowMaker The main config file. This file controls options such as key bindings, fonts, pixmaps, and focus modes. ~/GNUstep/WindowMaker/WMWindowAttributes The Controls "attributes" for individual applications and appicons. Options such as what icon to use are set here. For the most part, this is now best accessed via a right click on a title bar of an application and selecting "Attributes" ~/GNUstep/Defaults/WMState This is the file that is automatically generated and contains the current dock settings. It is not recommended to edit this file by hand. ~/GNUstep/Defaults/WMRootMenu This file specifies what file to use as the root menu. In Window Maker 0.19.0 and higher, you can replace this file with the one called plmenu in ~/GNUstep/Defaults/WindowMaker, and you can then use WPrefs to edit the menu. ~/GNUstep/Library/WindowMaker/menu This is the file to edit to change your root menu. ~/GNUstep/Library/WindowMaker/plmenu This is the same menu file, in property list format - WPrefs needs a menu in this format if you wish to edit it using WPrefs. 4.2 How do I enable the normal X sloppy focus mode? ---------------------------------- In the ~/GNUstep/Defaults/WindowMaker, change the following: FocusMode = sloppy; 4.3 How do I get my auto-arrange icons to work? ---------------------------------- In ~/GNUstep/Defaults/WindowMaker set AutoArrangeIcons=Yes; and the icons should now auto-arrange. 4.4 How do I get my Meta-Tab to cycle through windows correctly? ---------------------------------- Make sure that these settings are true in your ~/GNUstep/Defaults/WindowMaker file: CirculateRaise = Yes; RaiseDelay = 1; This will not give you MS Windows(tm) style application switching where alt-tab is changes context. Paul Warren <<pdw@ferret.lmh.ox.ac.uk>> has released a patch that will give this style of Context Switching to Window Maker. It is available from http://ferret.lmh.ox.ac.uk/~pdw/patches/ 4.5 How can I define my own Icon for a program? (instead of the Icon the Application Supplies?) ---------------------------------- You can right click on the title bar of the running app and choose the "Attributes..." option, then click on the "Ignore client supplied icon" checkbox. Click "Apply", "Save" and close the Attributes Editor. Another method is to edit ~/GNUstep/Defaults/WMWindowAttributes by hand and use the AlwaysUserIcon=YES; option for the app. For example: xmcd = { Icon = "Radio.xpm"; AlwaysUserIcon=Yes; }; 4.6 How do I get a Tile background for my AppIcons (those things in the dock)? ---------------------------------- You need to change 1 line to your ~/GNUstep/Defaults/WindowMaker file. IconBack = (spixmap, tile.black.xpm, white); or IconBack = (tpixmap, tile.black.xpm, white); spixmap will scale the pixmap to fit the tile, tpixmap will tile it as is. As Random@efnet says, The last parameter is the color that fills in any Transparent parts of your icon. IconBack takes other options too, search the NEWS file. 4.7 How do you dock <insert program here> that doesn't have an appicon in the new version of Window Maker? ---------------------------------- There is now an option available to emulate appicons so that Window Maker can dock just about anything now. To dock a misbehaving application, right click on the title bar and select the attributes menu. Next, select the pull down menu's "Advanced Options" item. Under the ``Advanced Options'' menu, select the ``Emulate Application Icon'' Option then Save, Apply and close the dialog. This should allow you do dock the program normally. Emulate Appicon does exactly the same thing as dockit, a small app distributed with ancient versions of Window Maker before the Attribute Editor existed (now deprecated for the obvious reason). If Emulate Appicon does not work, dockit will not work either. Such applications violate the ICCCM (Inter-Client Communication Conventions Manual) and are considered badly coded for not setting the instance.class hints. 4.8 How do I get x11amp to not have a title bar? (or any other program for that matter?) ---------------------------------- Right Click on the title bar and choose "Attributes". Click on Panel 2 and click the "Disable titlebar" and "Disable resizebar" options. Click "Save", "Apply" and then close the Attributes panel. By Default, to get back to the attributes menu once you've removed the titlebar, hit the key F10 while the window is focused. Here is an example entry in ~/GNUstep/WMWindowAttributes for x11amp. x11amp={ Icon="x11amp.xpm"; NoTitlebar=Yes; NoResizebar=Yes; NoAppIcon=Yes; }; 4.9 How do I set a pixmap background? ---------------------------------- Here is the in depth explanation straight from the NEWS file: wmsetbg now accepts the following options: usage: wmsetbg [-options] image options: -d dither image -m match colors -t tile image -s scale image (default) -u update Window Maker domain database -D <domain> update <domain> database -c <cpc> colors per channel to use By default, it will try to guess if dithering is needed or not and proceed accordingly. Using -d or -m will force it to dither or match colors. Dithering for more than 15bpp is generally not needed, and will only result in a slower processing. Don't use dithering except when needed, because it is slower. Else rely on wmsetbg which will detect if dithering is needed and use it. -u will update the WorkspaceBack in the default database domain file in ~/GNUstep/Defaults/WindowMaker, and let Window Maker refresh the screen. Please note that this option only works under Window Maker, and will have no effect under other window managers, since it rely on Window Maker to update the image after it reads the updated defaults database. -D <domain> is same as above, but will update the domain <domain> instead of the default Window Maker domain. -c <cpc> will set the color per channel to use. Only needed for PseudoColor visuals. Window Maker will automatically pass the value read from the Window Maker domain database. The following line is straight from your WindowMaker-0.15.x ~/GNUstep/Library/WindowMaker/menu file and should all be on one line. "Images" OPEN_MENU BACKGROUNDS_DIR ~/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t This should give you an idea on how to add other entries for different image directories. See the help info at the top of the ~/GNUstep/Library/WindowMaker/menu file for more information. If you for some reason would like to set your background image with XV, for instance to use an image format not yet supported by wmsetbg or to use one of XV's special modes, edit the file ~/GNUstep/Library/WindowMaker/autostart and insert the line xv -root -quit -maxpect ~/background.jpg or xv -root -quit -max ~/background.jpg you can also try variations of this to get different tiling and other effects (where X is a number 1-9 I believe): 'xv -root -quit -rmodeX ~/background.jpg' If you would like xv functionality in your menu, here's a nice little tip from Alfredo: Add the following line to your ~/GNUstep/Library/WindowMaker/menu file. (all on one line) "More Backgrounds" OPEN_MENU /home/whoever/backgrounds xv -root -maxpect -quit 4.10 Can I put pixmaps in my root menu and title bars? ---------------------------------- With the release of WindowMaker-0.14.1, you can now put pixmaps anywhere you would have either a gradient or a color. This means now that MenuTextBack=(tpixmap, foo.xpm, acolor); in ~/GNUstep/Defaults/WindowMaker will put the correct pixmap tiled in your menu. FTitleBack = (spixmap, foo.xpm, black); Would have the effect of stretching a pixmap to fit the title bar of the active window. You can use png, gif, ppm, tiff, jpeg and xpm images interchangeably in Window Maker if you have compiled in support for those formats. 4.11 How do I get my Minimize Icon to look like the triangle I see in screenshots? ---------------------------------- This involves a minor source tweak. Instructions are available at http://wm.current.nu/tips.html#titlebar_icons Example screenshot at http://wm.current.nu/themes/images/screenshots/Midnight3.jpg 4.12 How do I get superfluous bells and whistles working? ---------------------------------- Add Superfluous=YES; to your ~/GNUstep/Defaults/Windowmaker file. This option was added as a run-time option in Window Maker >= 0.16.1. 4.13 How do I get the classic NeXT(tm)-like style back? ---------------------------------- Add NewStyle=NO; to your ~/GNUstep/Defaults/Windowmaker file. This option was added as a run-time option in Window Maker >= 0.16.1 4.14 How do I get the window menu with only a two button mouse? ---------------------------------- Jim Noble <jmknoble@ntrnet.net> writes: If you've got a two-button mouse under some versions of Solaris x86, there's no way (that I'm aware of) to emulate a 3-button mouse. The right button can be either MB2 or MB3, but chording doesn't work. ApplicationMenuMouseButton = Left; and WindowListMouseButton = Right; in ~/GNUstep/Defaults/WindowMaker ought to allow the left button to activate the root menu, and the right button (as MB2) to activate the windows menu. 4.15 How do I edit my root menu? ---------------------------------- You can now use WPrefs.app (see http://wm.current.nu/features/configuration.html for more info) if you have the new PropList style menu, or you can manually edit the old style menu file ~/GNUstep/Library/WindowMaker/menu (or you can also manually edit the new style menu file) ~/GNUstep/Defaults/WMRootMenu and save your changes. Window Maker should detect the change and automatically update. If you are having a problem getting it to reload the menu, try touch ~/GNUstep/Library/WindowMaker/menu (or 'touch ~/GNUstep/Defaults/WMRootMenu' for the new style menu) to force the modification time into the future. 4.16 How can I set dock/clip to use single click to launch applications, instead of double click? ---------------------------------- This question was officially answered as follows: You cannot do this. This is because single click is used to select app-icons, or to raise/lower the app-icon or the dock/clip. If this is implemented then you will be unable to select or raise/lower dock/clip or app-icons, without also launching the application it represents. So don't ask for this to be implemented, because it will not be. Double click is used for a reason, is not just some weird idea we got in a morning when we wake up too early. Regardless of that, there is now an option in WPrefs, under "Expert User Preferences," which allows you to set "Launch applications and restore windows with a single click." (See the files contrib/README and contrib/single_click.diff in the source package for details.) If you set that option, a left button single click will launch or restore, rather than select, the app-icon. You can use other methods (or temporarily turn the option off again) to select app-icons or raise/lower the dock/clip. You can toggle the selected state of any app-icon via its right button menu, and there are auto-raise and keep-on-top options for the dock and clip. 4.18 How do I restore the configuration app to the dock? ----------------------------------] You should start it from a terminal using its full path name, which is /usr/local/GNUstep/Applications/WPrefs.app/WPrefs by default. 4.19 How do I define my own icon for a program? I don't like the one it supplies. ---------------------------------- Right-click the title bar of the running application and start the Attributes Editor. Check the "Ignore client supplied icon" box. "Apply" and "Save", and close the Attributes Editor. Another method is to edit ~/GNUstep/Defaults/WMWindowAttributes by hand and use the AlwaysUserIcon=YES; option for the app. For example: xmcd = { Icon = "Radio.xpm"; AlwaysUserIcon=Yes; }; -=-=-=-=-=-=-=-=-=- Other Applications: -=-=-=-=-=-=-=-=-=- 5.1 How do I assign gimp an appicon? ---------------------------------- Window Maker now can assign Icons from within the window manager, to do so, right click on the title bar of an app or hit F10 while the desired app is focused, choose "Attributes...", click on the "4" Button, enter the icon file name (make sure this is in your pixmap path, or you can type in the full path without using ~/ type path names), click "Update", "Apply", "Save" and then close the Attributes Editor. You can also enter the following line in ~/GNUstep/Library/WindowMaker/WMWindowAttributes: gimp={Icon="gimp.xpm";}; 5.2 How do I get an appicon for XEmacs 20.3+? ---------------------------------- Thanks to Michael Hafner <hayfi@rz.fh-augsburg.de> for this answer. You don't need to patch the XEmacs code, just run ./configure --with-session=yes (in addition to any other options you use) in your XEmacs 20.3+ source dir and rebuild it. Then XEmacs shows an appicon when running and you can easily dock it. 5.3 Where do you get that clock program I always see on people's desktops? ---------------------------------- Its called asclock. It was included with each version of Window Maker until version 0.17.5, and was no longer included in 0.18.0 and above. You could find it in ./WindowMaker-0.xx.x/misc/asclock.tgz and it was pre-patched to be able to dock. Some other (older) versions you might find on the net don't dock. Since it was pulled from the distribution (probably to save space), I've included it at http://wm.current.nu/files.html#asclock for your convenience. 5.4 How do you dock asclock? ---------------------------------- asclock -shape -iconic -12 & Drag it from the top right corner of the clock to the dock. Right click on the icon and select autolaunch. You have to drag the appicon by clicking on the edge of the icon, because the actual pixmap belongs to the app itself, and any clicks on the pixmap are interpreted by the app rather than X or the window manager. Therefor, you need to click somewhere on the appicon where the background tile shows through (usually the edges), and drag it that way. 5.5 How do you dock wmload? ---------------------------------- wmload -withdrawn -shape & Then dock it similar to asclock. 5.6 What other apps exist for the dock? ---------------------------------- Several Nice applications are available: wmmixer and wmcd and wmmount http://www.geocities.com/SiliconValley/Vista/2471/linux.htm#xapps ascd, WMRack, asmixer, asmodem, and others ftp://ftp.windowmaker.info/pub/wmaker/contrib/srcs/apps/ wmavgload, wmmount, and wmload ftp://ftp.windowmaker.info/pub/wmaker/contrib/srcs/utils/ wmppp-wmifs, wmtime, wmmon and other nifty apps http://windowmaker.mezaway.org/ A huge index of most available dockapps is available at: http://www.bensinclair.com/dockapp/ 5.7 How do I get an appicon for rxvt so I can dock it? ---------------------------------- The default rxvt that comes with most distributions is an outdated version of rxvt. The newest development version of rxvt is available from ftp://ftp.math.fu-berlin.de/pub/rxvt/devel/. As of the time of this writing, the version is 2.4.7 and it natively produces an appicon without a patch. John Eikenberry has also created an rpm which is available from ftp://ftp.coe.uga.edu/users/jae/windowmaker/ For your convenience, I have rxvt-2.4.7.tar.gz at http://wm.current.nu/files/rxvt-2.4.7.tar.gz for download. As of version 2.4.7, rxvt includes Window Maker support as well as John Eikenberry's NeXT scrollbar hack. 5.8 How do I get different icons for rxvt's (or xterms) running different programs? ---------------------------------- The simplest way is to run each rxvt with a different -name parameter. For example, I want to run an rxvt for irc and one for mail. This is an example of what I'd do: for the irc rxvt: rxvt -name "irc" -e "irc" for the mail rxvt: rxvt -name "mail" -e "pine" This would result in each rxvt now having the instance and class of irc.Xterm and mail.Xterm respectively, so that Window Maker can now set Attributes for them individually. 5.9 How do I launch multiple instances of XTerm from one appicon? ---------------------------------- The easiest way to accomplish this is to dock XTerm as normal. Then Go to the 'Attributes menu' -> 'Application Specific' and select 'no application icon' for XTerm. You can also right-click on the docked appicon and select settings. Change the 'Application Path with arguments' section to foo.sh where foo.sh is the following script #!/bin/sh exec xterm This should allow unlimited XTerms without appicon clutter. 5.10 How do I allow Alt+# to work in an rxvt session? (with irc for example) ---------------------------------- First, Launch a unique instance of rxvt or xterm. This can be done using the -name option of rxvt. For example: rxvt -name foo -e irc Then, go to the Attributes menu (right click on title bar (or hit F10) and choose 'Attributes...') Then choose 'Advanced Options' from the listbox and enable 'Don't Bind Keyboard shortcuts'. Click 'Save' and 'Apply' and you should be able to run your session without the shortcuts. 5.11 Window Maker breaks scilab ---------------------------------- If you refer to the problem of the "graphics" window of scilab not showing up in Window Maker, this is caused by a bug in scilab. You can see the cause of the problem by yourself, by running xprop on the graphic window: WM_NORMAL_HINTS(WM_SIZE_HINTS): user specified location: 136679205, 1074468360 user specified size: 400 by 300 program specified minimum size: 400 by 300 Now, when scilab opens it's window, Window Maker nicely does exactly what it is told, that is, map the window at position 136679205, 1074468360 which obviously falls outside the screen no matter how big is your monitor ;) Meanwhile, the workaround for this is to open the window list menu (click on the root window with the middle mouse button) and click on the ScilabGraphic entry. The window should be brought to your reach. Then, open the window commands menu (right click on window's title bar) and open the Attributes panel. Go to the "Advanced Options" section, check the "Keep inside screen" option and save. If you can recompile Scilab, this came from a Scilab developer: replace size_hints.flags = USPosition | USSize | PMinSize; with size_hints.flags = /** USPosition |**/ USSize | PMinSize; in routines/xsci/jpc_SGraph.c 5.12 Netscape shows black and white icons ---------------------------------- I have seen this happen on some systems if you run Netscape in a high color depth (32bpp). That is a Netscape bug. Therefore, bug Netscape. 5.13 Snow flakes from xsnow don't accumulate on title bars! ---------------------------------- 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. 5.14 I'm using RedHat 6.0 and Netscape dies without reason. ---------------------------------- Er... well, I don't know why you're looking in this Window Maker FAQ for a RedHat/Netscape problem, but anyway, the answer is in: http://www.redhat.com/cgi-bin/support?solution&11-990511-0082&100-926468988&14-0&15-0&25-&3-&30- -=-=-=-=-=-=- Programming: -=-=-=-=-=-=- 6.1 How do I get a normal X application to produce an appicon? ---------------------------------- You must define the WM_CLASS (XSetClassHint()) and the CLIENT_LEADER or XWMHints.window_group properties, which are automatically set by most applications that use Xt (Motif, Athena ...), but if you use plain Xlib you must set them by hand. Also you must make a call to XSetCommand(dpy, leader, argv, argc); Take a look at Window Maker-0.1x.x/test/test.c that is an example for writing such an app (which also have an app menu). 6.2 How do I get my tcl/tk application to produce an appicon? ---------------------------------- Oliver Graf <ograf@fga.de> writes: The main window (normally this is called '.' [dot] in tk) should use the following lines: wm command . [concat $argv0 $argv] wm group . . All child windows attached to the same app-icon should use: toplevel .child wm group .child . where .child should be replaced by the actual window path. Replace '.' with the actual main-window path and 'wm group .child .' should be added for each 'toplevel .child' call. 6.3 What is WINGs? ---------------------------------- WINGs Is Not GNUstep. ;) It is the Widget Library written for the widgets in Window Maker. It is currently under heavy development but several people have started writing applications in it. Its goal is to emulate the NeXT(tm)-style widgets. http://www.ozemail.com.au/~crn/wm/wings.html is the closest thing to an information center about WINGs by <crn@ozemail.com.au>. 6.4 Where can I get more information about WINGs? ---------------------------------- Nic Berstein <nic@postilion.org> has created a WINGs Development list. The purpose of this list is to provide a forum for support, ideas, suggestions, bug reports etc. for the WINGs widget set library. To subscribe to this list, send a message with the word ``subscribe'' in the _BODY_ of the message to: <wings-request@postilion.org>. -=-=-=-=-=-=-=-=-=-=-=-=- Miscellaneous Questions: -=-=-=-=-=-=-=-=-=-=-=-=- 7.1 Is there a pager for Window Maker? ---------------------------------- Not at the moment because there is not a pressing need for a pager. The concept of multiple desktops does exist and there are currently 3 ways to switch between them. First, the Alt+Number combination will switch between desktops. The Workspaces menu will also let you switch workspaces. Lastly, the Clip will also scroll one through workspaces. For those that would like to send an application to a specific workspace, either drag it to an edge of the desktop onto the next workspace or you can right click on the title bar, choose "Move to..." and choose the appropriate workspace. BUT, Window Maker does support KDE and GNOME protocols, including the workspace management stuff, so you can use Window Maker in these environments and use their pagers. 7.2 Can I have folders like in AfterStep? ---------------------------------- No. Window Maker does however support the collapsible Clip per desktop for a similar functionality. 7.3 How do I use getstyle and setstyle? ---------------------------------- To capture the current Window Maker style, use the command getstyle > current.style To replace the current style, use the command setstyle filename.style 7.4 Why don't you distribute {normal diff, xdelta} patches? ---------------------------------- Whenever possible plain diff patches are distributed. If the new version has new binary files, normal diff won't be able to handle them, so a patch package is distributed, instead. We don't use xdelta because: - most systems do not have xdelta installed; - xdelta is picky and require the file to be patched to be exactly the same as the one used to make the patch. The patch package scheme used is much more flexible. We do not distribute a simple diff with the binary files separately (and variations, like uuencoding the binary files) because: - it is more complicated and error prone to require the user to manually move the files to the correct places; - the current patch package scheme *does* distribute the binary files and diff files separately. If the user wants to install everything by hand, nobody will object to that; - sooner or later someone will certainly ask for a script to automate the file moving stuff. So we hacked a script (mkpatch) that automatically creates a patch package with the normal text diff file, a list of removed files and the binary files that have changed or been added, plus a script that does the patching automatically. If you don't like the script, you can apply the patch and move the files manually. Or download the whole distribution. 7.5 Will you add GNOME or KDE support? -------------------------------------- Support for GNOME (and KDE) hints is included since 0.50.0. You have to enable them at compile-time using the appropriate arguments to ./configure. Please read the INSTALL file for more details. Note: starting with version 0.90.0, support for legacy Gnome-1.x and KDE-2.x was dropped in favor of NETWM support (used by both Gnome-2.x and KDE-3.x) -=-=-=-=- Themes: -=-=-=-=- 8.1 What exactly are themes? ---------------------------------- Themes are a great aspect of Window Maker allowing a user to simply save the entire 'look' of their desktop in a Archive to distribute freely among friends, fellow users and/or the whole net in general. :) See the theme-HOWTO at http://wm.current.nu/themes/theme-HOWTO.html for an in-depth walk-through on making a Theme archive. 8.2 How do I install a Theme? ---------------------------------- This should be as simple as untarring the Theme.tar.gz into one of two places. You can untar it to the global /usr/local/share/WindowMaker/* directory, and have it be accessible to all users, or you can untar it to your own ~/GNUstep/Library/WindowMaker/ directory for your own personal use. Use your favorite variation of the following: gzip -dc "Theme.tar.gz" | tar xvf - *(directory may differ on some systems) 8.3 How do I make a Theme? ---------------------------------- There is a neat little file called README.themes distributed with Window Maker that explains everything in intricate detail. You can also read http://wm.current.nu/themes/themepacks.html ==================================================================== and they lived happily ever after. ==================================================================== (The End.) ������������WindowMaker-0.95.9/wrlib/���������������������������������������������������������������������������0000755�0001750�0001750�00000000000�13642365212�012171� 5����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/rotate.c�������������������������������������������������������������������0000644�0001750�0001750�00000020445�13431646202�013555� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* rotate.c - image rotation * * Raster graphics library * * Copyright (c) 2000-2003 Alfredo K. Kojima * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301, USA. */ #include <config.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <X11/Xlib.h> #include "wraster.h" #include "rotate.h" #include <math.h> static RImage *rotate_image_90(RImage *source); static RImage *rotate_image_270(RImage *source); static RImage *rotate_image_any(RImage *source, float angle); RImage *RRotateImage(RImage *image, float angle) { /* * Angle steps below this value would represent a rotation * of less than 1 pixel for a 4k wide image, so not worth * bothering the difference. That makes it a perfect * candidate for an Epsilon when trying to compare angle * to known values */ static const float min_usable_angle = 0.00699F; angle = fmod(angle, 360.0); if (angle < 0.0F) angle += 360.0F; if (angle < min_usable_angle) { /* Rotate by 0 degree */ return RCloneImage(image); } else if ((angle > 90.0F - min_usable_angle) && (angle < 90.0F + min_usable_angle)) { return rotate_image_90(image); } else if ((angle > 180.0F - min_usable_angle) && (angle < 180.0F + min_usable_angle)) { return wraster_rotate_image_180(image); } else if ((angle > 270.0F - min_usable_angle) && (angle < 270.0F + min_usable_angle)) { return rotate_image_270(image); } else { return rotate_image_any(image, angle); } } static RImage *rotate_image_90(RImage *source) { RImage *target; int nwidth, nheight; int x, y; nwidth = source->height; nheight = source->width; target = RCreateImage(nwidth, nheight, (source->format != RRGBFormat)); if (!target) return NULL; if (source->format == RRGBFormat) { unsigned char *optr, *nptr; optr = source->data; for (x = nwidth; x; x--) { nptr = target->data + 3 * (x - 1); for (y = nheight; y; y--) { nptr[0] = *optr++; nptr[1] = *optr++; nptr[2] = *optr++; nptr += 3 * nwidth; } } } else { unsigned char *optr, *nptr; optr = source->data; for (x = nwidth; x; x--) { nptr = target->data + 4 * (x - 1); for (y = nheight; y; y--) { nptr[0] = *optr++; nptr[1] = *optr++; nptr[2] = *optr++; nptr[3] = *optr++; nptr += 4 * nwidth; } } } return target; } RImage *wraster_rotate_image_180(RImage *source) { RImage *target; int nwidth, nheight; int x, y; nwidth = source->width; nheight = source->height; target = RCreateImage(nwidth, nheight, (source->format != RRGBFormat)); if (!target) return NULL; if (source->format == RRGBFormat) { unsigned char *optr, *nptr; optr = source->data; nptr = target->data + nwidth * nheight * 3 - 3; for (y = 0; y < nheight; y++) { for (x = 0; x < nwidth; x++) { nptr[0] = optr[0]; nptr[1] = optr[1]; nptr[2] = optr[2]; optr += 3; nptr -= 3; } } } else { unsigned char *optr, *nptr; optr = source->data; nptr = target->data + nwidth * nheight * 4 - 4; for (y = nheight * nwidth - 1; y >= 0; y--) { nptr[0] = optr[0]; nptr[1] = optr[1]; nptr[2] = optr[2]; nptr[3] = optr[3]; optr += 4; nptr -= 4; } } return target; } static RImage *rotate_image_270(RImage *source) { RImage *target; int nwidth, nheight; int x, y; nwidth = source->height; nheight = source->width; target = RCreateImage(nwidth, nheight, (source->format != RRGBFormat)); if (!target) return NULL; if (source->format == RRGBFormat) { unsigned char *optr, *nptr; optr = source->data; for (x = nwidth; x; x--) { nptr = target->data + 3 * nwidth * nheight - x * 3; for (y = nheight; y; y--) { nptr[0] = *optr++; nptr[1] = *optr++; nptr[2] = *optr++; nptr -= 3 * nwidth; } } } else { unsigned char *optr, *nptr; optr = source->data; for (x = nwidth; x; x--) { nptr = target->data + 4 * nwidth * nheight - x * 4; for (y = nheight; y; y--) { nptr[0] = *optr++; nptr[1] = *optr++; nptr[2] = *optr++; nptr[3] = *optr++; nptr -= 4 * nwidth; } } } return target; } /* * Image rotation through Bresenham's line algorithm: * * If a square must be rotate by angle a, like in: * _______ * | B | * | /4\ | * | /3 8\| * | /2 7 /| * |A1 6 / | A_______B * | \5 / a| <--- |1 2 3 4| * |__C/_)_| |5 6 7 8| * C------- * * for each point P1 in the line from C to A * for each point P2 in the perpendicular line starting at P1 * get pixel from the source and plot at P2 * increment pixel location from source * */ #if 0 static void copyLine(int x1, int y1, int x2, int y2, int nwidth, int format, unsigned char *dst, unsigned char **src) { unsigned char *s = *src; int dx, dy; int xi, yi; int offset; int dpr, dpru, p; dx = abs(x2 - x1); dy = abs(y2 - y1); if (x1 > x2) xi = -1; else xi = 1; if (y1 > y2) yi = -1; else yi = 1; if (dx >= dy) { dpr = dy << 1; dpru = dpr - (dx << 1); p = dpr - dx; while (dx-- >= 0) { /* fetch and draw the pixel */ offset = (x1 + y1 * nwidth) << 2; dst[offset++] = *s++; dst[offset++] = *s++; dst[offset++] = *s++; if (format == RRGBAFormat) dst[offset++] = *s++; else dst[offset++] = 255; /* calc next step */ if (p > 0) { x1 += xi; y1 += yi; p += dpru; } else { x1 += xi; p += dpr; } } } else { dpr = dx << 1; dpru = dpr - (dy << 1); p = dpr - dy; while (dy-- >= 0) { /* fetch and draw the pixel */ offset = (x1 + y1 * nwidth) << 2; dst[offset++] = *s++; dst[offset++] = *s++; dst[offset++] = *s++; if (format == RRGBAFormat) dst[offset++] = *s++; else dst[offset++] = 255; /* calc next step */ if (p > 0) { x1 += xi; y1 += yi; p += dpru; } else { y1 += yi; p += dpr; } } } *src = s; } #endif static RImage *rotate_image_any(RImage *source, float angle) { (void) angle; puts("NOT FULLY IMPLEMENTED"); return RCloneImage(source); #if 0 RImage *img; int nwidth, nheight; int x1, y1; int x2, y2; int dx, dy; int xi, yi; int xx, yy; unsigned char *src, *dst; int dpr, dpru, p; /* only 180o for now */ if (angle > 180.0F) angle -= 180.0F; angle = (angle * WM_PI) / 180.0; nwidth = ceil(abs(cos(angle) * image->width)) + ceil(abs(cos(WM_PI / 2 - angle) * image->width)); nheight = ceil(abs(sin(angle) * image->height)) + ceil(abs(cos(WM_PI / 2 - angle) * image->height)); img = RCreateImage(nwidth, nheight, True); if (!img) return NULL; src = image->data; dst = img->data; x1 = floor(abs(cos(WM_PI / 2 - angle) * image->width)); y1 = 0; x2 = 0; y2 = floor(abs(sin(WM_PI / 2 - angle) * image->width)); xx = floor(abs(cos(angle) * image->height)) - 1; yy = nheight - 1; printf("%ix%i, %i %i %i %i %i\n", nwidth, nheight, x1, y1, x2, y2, (int)((angle * 180.0) / WM_PI)); dx = abs(x2 - x1); dy = abs(y2 - y1); if (x1 > x2) xi = -1; else xi = 1; if (y1 > y2) yi = -1; else yi = 1; if (dx >= dy) { dpr = dy << 1; dpru = dpr - (dx << 1); p = dpr - dx; while (dx-- >= 0) { copyLine(x1, y1, xx, yy, nwidth, image->format, dst, &src); /* calc next step */ if (p > 0) { x1 += xi; y1 += yi; xx += xi; yy += yi; p += dpru; } else { x1 += xi; xx += xi; p += dpr; } } } else { dpr = dx << 1; dpru = dpr - (dy << 1); p = dpr - dy; while (dy-- >= 0) { xx = abs(x1 * sin(angle * WM_PI / 180.0)); yy = abs(y1 * cos(angle * WM_PI / 180.0)); copyLine(x1, y1, xx, yy, nwidth, image->format, dst, &src); /* calc next step */ if (p > 0) { x1 += xi; y1 += yi; p += dpru; } else { y1 += yi; p += dpr; } } } return img; #endif } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/scale.h��������������������������������������������������������������������0000644�0001750�0001750�00000001625�13431646202�013352� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Raster graphics library * * Copyright (c) 2014 Window Maker Team * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library. */ #ifndef WRASTER_SCALE_H #define WRASTER_SCALE_H /* * Function to change the smoothing filter used for image scaling (RSmoothScaleImage) */ void wraster_change_filter(RScalingFilter type); #endif �����������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/Makefile.in����������������������������������������������������������������0000644�0001750�0001750�00000107046�13642360054�014165� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @HAVE_LD_VERSION_SCRIPT_TRUE@am__append_1 = -Wl,--version-script=libwraster.map @USE_GIF_TRUE@am__append_2 = load_gif.c @USE_JPEG_TRUE@am__append_3 = load_jpeg.c @USE_PNG_TRUE@am__append_4 = load_png.c @USE_TIFF_TRUE@am__append_5 = load_tiff.c @USE_XPM_TRUE@am__append_6 = load_xpm.c @USE_XPM_FALSE@am__append_7 = load_xpm_normalized.c @USE_WEBP_TRUE@am__append_8 = load_webp.c @USE_MAGICK_TRUE@am__append_9 = load_magick.c subdir = wrlib ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ $(top_srcdir)/m4/ax_pthread.m4 \ $(top_srcdir)/m4/ld-version-script.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/windowmaker.m4 \ $(top_srcdir)/m4/wm_attributes.m4 \ $(top_srcdir)/m4/wm_cflags_check.m4 \ $(top_srcdir)/m4/wm_i18n.m4 \ $(top_srcdir)/m4/wm_imgfmt_check.m4 \ $(top_srcdir)/m4/wm_libexif.m4 $(top_srcdir)/m4/wm_libmath.m4 \ $(top_srcdir)/m4/wm_prog_cc_c11.m4 \ $(top_srcdir)/m4/wm_xext_check.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(include_HEADERS) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)" \ "$(DESTDIR)$(includedir)" LTLIBRARIES = $(lib_LTLIBRARIES) libwraster_la_DEPENDENCIES = am__libwraster_la_SOURCES_DIST = imgformat.h raster.c alpha_combine.c \ draw.c color.c load.c save.c gradient.c xpixmap.c convert.h \ convert.c context.c misc.c scale.c scale.h rotate.c rotate.h \ flip.c convolve.c save_xpm.c xutil.c xutil.h load_ppm.c \ load_gif.c load_jpeg.c load_png.c load_tiff.c load_xpm.c \ load_xpm_normalized.c load_webp.c load_magick.c @USE_GIF_TRUE@am__objects_1 = load_gif.lo @USE_JPEG_TRUE@am__objects_2 = load_jpeg.lo @USE_PNG_TRUE@am__objects_3 = load_png.lo @USE_TIFF_TRUE@am__objects_4 = load_tiff.lo @USE_XPM_TRUE@am__objects_5 = load_xpm.lo @USE_XPM_FALSE@am__objects_6 = load_xpm_normalized.lo @USE_WEBP_TRUE@am__objects_7 = load_webp.lo @USE_MAGICK_TRUE@am__objects_8 = load_magick.lo am_libwraster_la_OBJECTS = raster.lo alpha_combine.lo draw.lo color.lo \ load.lo save.lo gradient.lo xpixmap.lo convert.lo context.lo \ misc.lo scale.lo rotate.lo flip.lo convolve.lo save_xpm.lo \ xutil.lo load_ppm.lo $(am__objects_1) $(am__objects_2) \ $(am__objects_3) $(am__objects_4) $(am__objects_5) \ $(am__objects_6) $(am__objects_7) $(am__objects_8) libwraster_la_OBJECTS = $(am_libwraster_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = libwraster_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(libwraster_la_LDFLAGS) $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/alpha_combine.Plo \ ./$(DEPDIR)/color.Plo ./$(DEPDIR)/context.Plo \ ./$(DEPDIR)/convert.Plo ./$(DEPDIR)/convolve.Plo \ ./$(DEPDIR)/draw.Plo ./$(DEPDIR)/flip.Plo \ ./$(DEPDIR)/gradient.Plo ./$(DEPDIR)/load.Plo \ ./$(DEPDIR)/load_gif.Plo ./$(DEPDIR)/load_jpeg.Plo \ ./$(DEPDIR)/load_magick.Plo ./$(DEPDIR)/load_png.Plo \ ./$(DEPDIR)/load_ppm.Plo ./$(DEPDIR)/load_tiff.Plo \ ./$(DEPDIR)/load_webp.Plo ./$(DEPDIR)/load_xpm.Plo \ ./$(DEPDIR)/load_xpm_normalized.Plo ./$(DEPDIR)/misc.Plo \ ./$(DEPDIR)/raster.Plo ./$(DEPDIR)/rotate.Plo \ ./$(DEPDIR)/save.Plo ./$(DEPDIR)/save_xpm.Plo \ ./$(DEPDIR)/scale.Plo ./$(DEPDIR)/xpixmap.Plo \ ./$(DEPDIR)/xutil.Plo am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libwraster_la_SOURCES) DIST_SOURCES = $(am__libwraster_la_SOURCES_DIST) RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DATA = $(pkgconfig_DATA) HEADERS = $(include_HEADERS) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir distdir-am am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp AUTHORS \ COPYING ChangeLog INSTALL NEWS README TODO DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ GFXLIBS = @GFXLIBS@ GREP = @GREP@ HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLIBS = @INTLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBBSD = @LIBBSD@ LIBEXIF = @LIBEXIF@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXINERAMA = @LIBXINERAMA@ LIBXMU = @LIBXMU@ LIBXRANDR = @LIBXRANDR@ LINGUAS = @LINGUAS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAGICKFLAGS = @MAGICKFLAGS@ MAGICKLIBS = @MAGICKLIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MANLANGDIRS = @MANLANGDIRS@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOLIBS = @PANGOLIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILMOFILES = @UTILMOFILES@ VERSION = @VERSION@ WINGSMOFILES = @WINGSMOFILES@ WINGS_VERSION = @WINGS_VERSION@ WMAKERMOFILES = @WMAKERMOFILES@ WPREFSMOFILES = @WPREFSMOFILES@ WRASTER_VERSION = @WRASTER_VERSION@ WUTIL_VERSION = @WUTIL_VERSION@ XCFLAGS = @XCFLAGS@ XFTCONFIG = @XFTCONFIG@ XFTFLAGS = @XFTFLAGS@ XFTLIBS = @XFTLIBS@ XGETTEXT = @XGETTEXT@ XLFLAGS = @XLFLAGS@ XLIBS = @XLIBS@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBRARY_PATH = @X_LIBRARY_PATH@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ defsdatadir = @defsdatadir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ inc_search_path = @inc_search_path@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lcov_output_directory = @lcov_output_directory@ lib_search_path = @lib_search_path@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pixmapdir = @pixmapdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ wprefs_bindir = @wprefs_bindir@ wprefs_datadir = @wprefs_datadir@ SUBDIRS = . DIST_SUBDIRS = $(SUBDIRS) tests AUTOMAKE_OPTIONS = EXTRA_DIST = tests lib_LTLIBRARIES = libwraster.la libwraster_la_LDFLAGS = -version-info @WRASTER_VERSION@ \ $(am__append_1) @HAVE_LD_VERSION_SCRIPT_TRUE@EXTRA_libwraster_la_DEPENDENCIES = libwraster.map @HAVE_LD_VERSION_SCRIPT_TRUE@CLEANFILES = libwraster.map include_HEADERS = wraster.h libwraster_la_SOURCES = imgformat.h raster.c alpha_combine.c draw.c \ color.c load.c save.c gradient.c xpixmap.c convert.h convert.c \ context.c misc.c scale.c scale.h rotate.c rotate.h flip.c \ convolve.c save_xpm.c xutil.c xutil.h load_ppm.c \ $(am__append_2) $(am__append_3) $(am__append_4) \ $(am__append_5) $(am__append_6) $(am__append_7) \ $(am__append_8) $(am__append_9) AM_CFLAGS = @MAGICKFLAGS@ AM_CPPFLAGS = $(DFLAGS) @HEADER_SEARCH_PATH@ libwraster_la_LIBADD = @LIBRARY_SEARCH_PATH@ @GFXLIBS@ @MAGICKLIBS@ @XLIBS@ @LIBXMU@ -lm pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = wrlib.pc DISTCLEANFILES = $(pkgconfig_DATA) all: all-recursive .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu wrlib/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu wrlib/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libwraster.la: $(libwraster_la_OBJECTS) $(libwraster_la_DEPENDENCIES) $(EXTRA_libwraster_la_DEPENDENCIES) $(AM_V_CCLD)$(libwraster_la_LINK) -rpath $(libdir) $(libwraster_la_OBJECTS) $(libwraster_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/alpha_combine.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/color.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/context.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/convert.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/convolve.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/draw.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/flip.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gradient.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/load.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/load_gif.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/load_jpeg.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/load_magick.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/load_png.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/load_ppm.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/load_tiff.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/load_webp.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/load_xpm.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/load_xpm_normalized.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/misc.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raster.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rotate.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/save.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/save_xpm.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scale.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xpixmap.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xutil.Plo@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @echo '# dummy' >$@-t && $(am__mv) $@-t $@ am--depfiles: $(am__depfiles_remade) .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-pkgconfigDATA: $(pkgconfig_DATA) @$(NORMAL_INSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ done uninstall-pkgconfigDATA: @$(NORMAL_UNINSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) install-includeHEADERS: $(include_HEADERS) @$(NORMAL_INSTALL) @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ done uninstall-includeHEADERS: @$(NORMAL_UNINSTALL) @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(includedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ mostlyclean-am distclean: distclean-recursive -rm -f ./$(DEPDIR)/alpha_combine.Plo -rm -f ./$(DEPDIR)/color.Plo -rm -f ./$(DEPDIR)/context.Plo -rm -f ./$(DEPDIR)/convert.Plo -rm -f ./$(DEPDIR)/convolve.Plo -rm -f ./$(DEPDIR)/draw.Plo -rm -f ./$(DEPDIR)/flip.Plo -rm -f ./$(DEPDIR)/gradient.Plo -rm -f ./$(DEPDIR)/load.Plo -rm -f ./$(DEPDIR)/load_gif.Plo -rm -f ./$(DEPDIR)/load_jpeg.Plo -rm -f ./$(DEPDIR)/load_magick.Plo -rm -f ./$(DEPDIR)/load_png.Plo -rm -f ./$(DEPDIR)/load_ppm.Plo -rm -f ./$(DEPDIR)/load_tiff.Plo -rm -f ./$(DEPDIR)/load_webp.Plo -rm -f ./$(DEPDIR)/load_xpm.Plo -rm -f ./$(DEPDIR)/load_xpm_normalized.Plo -rm -f ./$(DEPDIR)/misc.Plo -rm -f ./$(DEPDIR)/raster.Plo -rm -f ./$(DEPDIR)/rotate.Plo -rm -f ./$(DEPDIR)/save.Plo -rm -f ./$(DEPDIR)/save_xpm.Plo -rm -f ./$(DEPDIR)/scale.Plo -rm -f ./$(DEPDIR)/xpixmap.Plo -rm -f ./$(DEPDIR)/xutil.Plo -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-includeHEADERS install-pkgconfigDATA install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-libLTLIBRARIES install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f ./$(DEPDIR)/alpha_combine.Plo -rm -f ./$(DEPDIR)/color.Plo -rm -f ./$(DEPDIR)/context.Plo -rm -f ./$(DEPDIR)/convert.Plo -rm -f ./$(DEPDIR)/convolve.Plo -rm -f ./$(DEPDIR)/draw.Plo -rm -f ./$(DEPDIR)/flip.Plo -rm -f ./$(DEPDIR)/gradient.Plo -rm -f ./$(DEPDIR)/load.Plo -rm -f ./$(DEPDIR)/load_gif.Plo -rm -f ./$(DEPDIR)/load_jpeg.Plo -rm -f ./$(DEPDIR)/load_magick.Plo -rm -f ./$(DEPDIR)/load_png.Plo -rm -f ./$(DEPDIR)/load_ppm.Plo -rm -f ./$(DEPDIR)/load_tiff.Plo -rm -f ./$(DEPDIR)/load_webp.Plo -rm -f ./$(DEPDIR)/load_xpm.Plo -rm -f ./$(DEPDIR)/load_xpm_normalized.Plo -rm -f ./$(DEPDIR)/misc.Plo -rm -f ./$(DEPDIR)/raster.Plo -rm -f ./$(DEPDIR)/rotate.Plo -rm -f ./$(DEPDIR)/save.Plo -rm -f ./$(DEPDIR)/save_xpm.Plo -rm -f ./$(DEPDIR)/scale.Plo -rm -f ./$(DEPDIR)/xpixmap.Plo -rm -f ./$(DEPDIR)/xutil.Plo -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES \ uninstall-pkgconfigDATA .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--depfiles check check-am clean clean-generic \ clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am \ install-includeHEADERS install-info install-info-am \ install-libLTLIBRARIES install-man install-pdf install-pdf-am \ install-pkgconfigDATA install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ uninstall-includeHEADERS uninstall-libLTLIBRARIES \ uninstall-pkgconfigDATA .PRECIOUS: Makefile wrlib.pc: Makefile @echo "Generating $@" @echo 'Name: wrlib' > $@ @echo 'Description: Image manipulation and conversion library' >> $@ @echo 'Version: $(VERSION)' >> $@ @echo 'Libs: $(lib_search_path) -lwraster' >> $@ @echo 'Libs.private: $(GFXLIBS) $(MAGICKLIBS) $(XLIBS) -lm' >> $@ @echo 'Cflags: $(inc_search_path)' >> $@ @HAVE_LD_VERSION_SCRIPT_TRUE@libwraster.map: $(include_HEADERS) $(top_srcdir)/script/generate-mapfile-from-header.sh @HAVE_LD_VERSION_SCRIPT_TRUE@ $(AM_V_GEN)$(top_srcdir)/script/generate-mapfile-from-header.sh \ @HAVE_LD_VERSION_SCRIPT_TRUE@ -n LIBWRASTER -v $(WRASTER_VERSION) $(srcdir)/$(include_HEADERS) > libwraster.map # 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. .NOEXPORT: ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/INSTALL��������������������������������������������������������������������0000644�0001750�0001750�00000000040�13431646202�013131� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ ./configure make make install ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/README���������������������������������������������������������������������0000644�0001750�0001750�00000001513�13431646202�012766� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ WindowMaker raster graphics library This library is used to manipulate images and convert them to a format that can be displayed through the X window system. Read the wraster.h header for an idea of what is available This Library is LGPL and Copyright (c) Alfredo K. Kojima <kojima@inf.ufrgs.br> The following environment variables control some parameters: RIMAGE_CACHE <integer> Is the maximum number of images to store in the internal cache. Default is 8 RIMAGE_CACHE_SIZE <integer> Is the size of the biggest image to store in the cache. Default is 4k (64x64) Porting ======= It should be fairly easy to port it to other environments (svgalib, libggi etc), probably only requiring wraster.h, context.c and convert.c to be changed. Note that the X specific code should be disabled in that case, including support for libXpm. �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/misc.c���������������������������������������������������������������������0000644�0001750�0001750�00000014537�13431646202�013217� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Raster graphics library * * Copyright (c) 1997-2003 Alfredo K. Kojima * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301, USA. */ #include <config.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <X11/Xlib.h> #include "wraster.h" #include "imgformat.h" #include "convert.h" void RBevelImage(RImage * image, int bevel_type) { RColor color; RColor cdelta; int w, h; if (image->width < 3 || image->height < 3) return; w = image->width; h = image->height; if (bevel_type > 0) { /* raised */ /* top */ cdelta.alpha = 0; cdelta.red = cdelta.green = cdelta.blue = 80; ROperateLine(image, RAddOperation, 0, 0, w - 1, 0, &cdelta); if (bevel_type == RBEV_RAISED3 && w > 3) ROperateLine(image, RAddOperation, 1, 1, w - 3, 1, &cdelta); /* left */ ROperateLine(image, RAddOperation, 0, 1, 0, h - 1, &cdelta); if (bevel_type == RBEV_RAISED3 && h > 3) ROperateLine(image, RAddOperation, 1, 2, 1, h - 3, &cdelta); /* bottom */ color.alpha = 255; color.red = color.green = color.blue = 0; cdelta.red = cdelta.green = cdelta.blue = 40; if (bevel_type == RBEV_RAISED2 || bevel_type == RBEV_RAISED3) { ROperateLine(image, RSubtractOperation, 0, h - 2, w - 3, h - 2, &cdelta); RDrawLine(image, 0, h - 1, w - 1, h - 1, &color); } else { ROperateLine(image, RSubtractOperation, 0, h - 1, w - 1, h - 1, &cdelta); } /* right */ if (bevel_type == RBEV_RAISED2 || bevel_type == RBEV_RAISED3) { ROperateLine(image, RSubtractOperation, w - 2, 0, w - 2, h - 2, &cdelta); RDrawLine(image, w - 1, 0, w - 1, h - 2, &color); } else { ROperateLine(image, RSubtractOperation, w - 1, 0, w - 1, h - 2, &cdelta); } } else { /* sunken */ cdelta.alpha = 0; cdelta.red = cdelta.green = cdelta.blue = 40; ROperateLine(image, RSubtractOperation, 0, 0, w - 1, 0, &cdelta); /* top */ ROperateLine(image, RSubtractOperation, 0, 1, 0, h - 1, &cdelta); /* left */ cdelta.red = cdelta.green = cdelta.blue = 80; ROperateLine(image, RAddOperation, 0, h - 1, w - 1, h - 1, &cdelta); /* bottom */ ROperateLine(image, RAddOperation, w - 1, 0, w - 1, h - 2, &cdelta); /* right */ } } void RFillImage(RImage * image, const RColor * color) { unsigned char *d = image->data; unsigned lineSize; int i; if (image->format == RRGBAFormat) { for (i = 0; i < image->width; i++) { *d++ = color->red; *d++ = color->green; *d++ = color->blue; *d++ = color->alpha; } lineSize = image->width * 4; for (i = 1; i < image->height; i++, d += lineSize) { memcpy(d, image->data, lineSize); } } else { for (i = 0; i < image->width; i++) { *d++ = color->red; *d++ = color->green; *d++ = color->blue; } lineSize = image->width * 3; for (i = 1; i < image->height; i++, d += lineSize) { memcpy(d, image->data, lineSize); } } } void RClearImage(RImage * image, const RColor * color) { unsigned char *d = image->data; unsigned lineSize; int i; if (color->alpha == 255) { if (image->format == RRGBAFormat) { for (i = 0; i < image->width; i++) { *d++ = color->red; *d++ = color->green; *d++ = color->blue; *d++ = 0xff; } lineSize = image->width * 4; for (i = 1; i < image->height; i++, d += lineSize) { memcpy(d, image->data, lineSize); } } else { for (i = 0; i < image->width; i++) { *d++ = color->red; *d++ = color->green; *d++ = color->blue; } lineSize = image->width * 3; for (i = 1; i < image->height; i++, d += lineSize) { memcpy(d, image->data, lineSize); } } } else { int bytes = image->width * image->height; int alpha, nalpha, r, g, b, s; alpha = color->alpha; r = color->red * alpha; g = color->green * alpha; b = color->blue * alpha; nalpha = 255 - alpha; s = (image->format == RRGBAFormat) ? 4 : 3; for (i = 0; i < bytes; i++, d += s) { d[0] = (((int)d[0] * nalpha) + r)/256; d[1] = (((int)d[1] * nalpha) + g)/256; d[2] = (((int)d[2] * nalpha) + b)/256; } } } static inline unsigned char clip(int c) { if (c > 255) c = 255; return (unsigned char)c; } void RLightImage(RImage *image, const RColor *color) { unsigned char *d = image->data; unsigned char *dd; int alpha, r, g, b, s; s = (image->format == RRGBAFormat) ? 4 : 3; dd = d + s*image->width*image->height; r = color->red; g = color->green; b = color->blue; alpha = color->alpha; if (r == 0 && g == 0 && b == 0) { for (; d < dd; d += s) { d[0] = clip(((int)d[0] * alpha)/128); d[1] = clip(((int)d[1] * alpha)/128); d[2] = clip(((int)d[2] * alpha)/128); } } else { for (; d < dd; d += s) { d[0] = clip((((int)d[0] * alpha) + r)/128); d[1] = clip((((int)d[1] * alpha) + g)/128); d[2] = clip((((int)d[2] * alpha) + b)/128); } } } const char *RMessageForError(int errorCode) { switch (errorCode) { case RERR_NONE: return "no error"; case RERR_OPEN: return "could not open file"; case RERR_READ: return "error reading from file"; case RERR_WRITE: return "error writing to file"; case RERR_NOMEMORY: return "out of memory"; case RERR_NOCOLOR: return "out of color cells"; case RERR_BADIMAGEFILE: return "invalid or corrupted image file"; case RERR_BADFORMAT: return "the image format in the file is not supported and can't be loaded"; case RERR_BADINDEX: return "image file does not contain requested image index"; case RERR_BADVISUALID: return "request for an invalid visual ID"; case RERR_STDCMAPFAIL: return "failed to create standard colormap"; case RERR_XERROR: return "internal X error"; default: case RERR_INTERNAL: return "internal error"; } } /* * cleaning third-party libs at shutdown */ void RShutdown(void) { #ifdef USE_MAGICK RReleaseMagick(); #endif RReleaseCache(); r_destroy_conversion_tables(); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/COPYING��������������������������������������������������������������������0000644�0001750�0001750�00000061447�13431646202�013155� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ GNU LIBRARY GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1991 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the library GPL. It is numbered 2 because it goes with version 2 of the ordinary GPL.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Library General Public License, applies to some specially designated Free Software Foundation software, and to any other libraries whose authors decide to use it. You can use it for your libraries, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library, or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link a program with the library, you must provide complete object files to the recipients so that they can relink them with the library, after making changes to the library and recompiling it. And you must show them these terms so they know their rights. Our method of protecting your rights has two steps: (1) copyright the library, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the library. Also, for each distributor's protection, we want to make certain that everyone understands that there is no warranty for this free library. If the library is modified by someone else and passed on, we want its recipients to know that what they have is not the original version, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that companies distributing free software will individually obtain patent licenses, thus in effect transforming the program into proprietary software. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License, which was designed for utility programs. This license, the GNU Library General Public License, applies to certain designated libraries. This license is quite different from the ordinary one; be sure to read it in full, and don't assume that anything in it is the same as in the ordinary license. The reason we have a separate public license for some libraries is that they blur the distinction we usually make between modifying or adding to a program and simply using it. Linking a program with a library, without changing the library, is in some sense simply using the library, and is analogous to running a utility program or application program. However, in a textual and legal sense, the linked executable is a combined work, a derivative of the original library, and the ordinary General Public License treats it as such. Because of this blurred distinction, using the ordinary General Public License for libraries did not effectively promote software sharing, because most developers did not use the libraries. We concluded that weaker conditions might promote sharing better. However, unrestricted linking of non-free programs would deprive the users of those programs of all benefit from the free status of the libraries themselves. This Library General Public License is intended to permit developers of non-free programs to use free libraries, while preserving your freedom as a user of such programs to change the free libraries that are incorporated in them. (We have not seen how to achieve this as regards changes in header files, but we have achieved it as regards changes in the actual functions of the Library.) The hope is that this will lead to faster development of free libraries. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, while the latter only works together with the library. Note that it is possible for a library to be covered by the ordinary General Public License rather than by this special one. GNU LIBRARY GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Library General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, 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 Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also compile or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. c) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. d) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Library General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY 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 LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. <one line to give the library's name and a brief idea of what it does.> Copyright (C) <year> <name of author> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. <signature of Ty Coon>, 1 April 1990 Ty Coon, President of Vice That's all there is to it! �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/raster.c�������������������������������������������������������������������0000644�0001750�0001750�00000033152�13431646202�013556� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* raster.c - main and other misc stuff * * Raster graphics library * * Copyright (c) 1997-2003 Alfredo K. Kojima * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301, USA. */ #include <config.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <X11/Xlib.h> #include "wraster.h" #include <assert.h> char *WRasterLibVersion = "0.9"; int RErrorCode = RERR_NONE; #define HAS_ALPHA(I) ((I)->format == RRGBAFormat) #define MAX_WIDTH 20000 #define MAX_HEIGHT 20000 /* 20000^2*4 < 2G */ RImage *RCreateImage(unsigned width, unsigned height, int alpha) { RImage *image = NULL; assert(width > 0 && height > 0); if (width > MAX_WIDTH || height > MAX_HEIGHT) { RErrorCode = RERR_NOMEMORY; return NULL; } image = malloc(sizeof(RImage)); if (!image) { RErrorCode = RERR_NOMEMORY; return NULL; } memset(image, 0, sizeof(RImage)); image->width = width; image->height = height; image->format = alpha ? RRGBAFormat : RRGBFormat; image->refCount = 1; /* the +4 is to give extra bytes at the end of the buffer, * so that we can optimize image conversion for MMX(tm).. see convert.c */ image->data = malloc(width * height * (alpha ? 4 : 3) + 4); if (!image->data) { RErrorCode = RERR_NOMEMORY; free(image); image = NULL; } return image; } RImage *RRetainImage(RImage * image) { if (image) image->refCount++; return image; } void RReleaseImage(RImage * image) { assert(image != NULL); image->refCount--; if (image->refCount < 1) { free(image->data); free(image); } } RImage *RCloneImage(RImage * image) { RImage *new_image; assert(image != NULL); new_image = RCreateImage(image->width, image->height, HAS_ALPHA(image)); if (!new_image) return NULL; new_image->background = image->background; memcpy(new_image->data, image->data, image->width * image->height * (HAS_ALPHA(image) ? 4 : 3)); return new_image; } RImage *RGetSubImage(RImage * image, int x, int y, unsigned width, unsigned height) { int i, ofs; RImage *new_image; unsigned total_line_size, line_size; assert(image != NULL); assert(x >= 0 && y >= 0); assert(x < image->width && y < image->height); assert(width > 0 && height > 0); if (x + width > image->width) width = image->width - x; if (y + height > image->height) height = image->height - y; new_image = RCreateImage(width, height, HAS_ALPHA(image)); if (!new_image) return NULL; new_image->background = image->background; total_line_size = image->width * (HAS_ALPHA(image) ? 4 : 3); line_size = width * (HAS_ALPHA(image) ? 4 : 3); ofs = x * (HAS_ALPHA(image) ? 4 : 3) + y * total_line_size;; for (i = 0; i < height; i++) { memcpy(&new_image->data[i * line_size], &image->data[i * total_line_size + ofs], line_size); } return new_image; } /* *---------------------------------------------------------------------- * RCombineImages- * Combines two equal sized images with alpha image. The second * image will be placed on top of the first one. *---------------------------------------------------------------------- */ void RCombineImages(RImage * image, RImage * src) { assert(image->width == src->width); assert(image->height == src->height); if (!HAS_ALPHA(src)) { if (!HAS_ALPHA(image)) { memcpy(image->data, src->data, image->height * image->width * 3); } else { int x, y; unsigned char *d, *s; d = image->data; s = src->data; for (y = 0; y < image->height; y++) { for (x = 0; x < image->width; x++) { *d++ = *s++; *d++ = *s++; *d++ = *s++; *d++ = 255; } } } } else { register int i; unsigned char *d; unsigned char *s; int alpha, calpha; d = image->data; s = src->data; if (!HAS_ALPHA(image)) { for (i = 0; i < image->height * image->width; i++) { alpha = *(s + 3); calpha = 255 - alpha; *d = (((int)*d * calpha) + ((int)*s * alpha)) / 256; d++; s++; *d = (((int)*d * calpha) + ((int)*s * alpha)) / 256; d++; s++; *d = (((int)*d * calpha) + ((int)*s * alpha)) / 256; d++; s++; s++; } } else { RCombineAlpha(d, s, 1, image->width, image->height, 0, 0, 255); } } } void RCombineImagesWithOpaqueness(RImage * image, RImage * src, int opaqueness) { register int i; unsigned char *d; unsigned char *s; int c_opaqueness; assert(image->width == src->width); assert(image->height == src->height); d = image->data; s = src->data; c_opaqueness = 255 - opaqueness; #define OP opaqueness #define COP c_opaqueness if (!HAS_ALPHA(src)) { if (!HAS_ALPHA(image)) { for (i = 0; i < image->width * image->height; i++) { *d = (((int)*d * (int)COP) + ((int)*s * (int)OP)) / 256; d++; s++; *d = (((int)*d * (int)COP) + ((int)*s * (int)OP)) / 256; d++; s++; *d = (((int)*d * (int)COP) + ((int)*s * (int)OP)) / 256; d++; s++; } } else { RCombineAlpha(d, s, 0, image->width, image->height, 0, 0, OP); } } else { int tmp; if (!HAS_ALPHA(image)) { for (i = 0; i < image->width * image->height; i++) { tmp = (*(s + 3) * opaqueness) / 256; *d = (((int)*d * (255 - tmp)) + ((int)*s * tmp)) / 256; d++; s++; *d = (((int)*d * (255 - tmp)) + ((int)*s * tmp)) / 256; d++; s++; *d = (((int)*d * (255 - tmp)) + ((int)*s * tmp)) / 256; d++; s++; s++; } } else { RCombineAlpha(d, s, 1, image->width, image->height, 0, 0, opaqueness); } } #undef OP #undef COP } static int calculateCombineArea(RImage *des, int *sx, int *sy, unsigned int *swidth, unsigned int *sheight, int *dx, int *dy) { int width = (int)*swidth, height = (int)*sheight; if (*dx < 0) { *sx = -*dx; width = width + *dx; *dx = 0; } if (*dx + width > des->width) { width = des->width - *dx; } if (*dy < 0) { *sy = -*dy; height = height + *dy; *dy = 0; } if (*dy + height > des->height) { height = des->height - *dy; } if (height > 0 && width > 0) { *swidth = width; *sheight = height; return True; } return False; } void RCombineArea(RImage * image, RImage * src, int sx, int sy, unsigned width, unsigned height, int dx, int dy) { int x, y, dwi, swi; unsigned char *d; unsigned char *s; int alpha, calpha; if (!calculateCombineArea(image, &sx, &sy, &width, &height, &dx, &dy)) return; if (!HAS_ALPHA(src)) { if (!HAS_ALPHA(image)) { swi = src->width * 3; dwi = image->width * 3; s = src->data + (sy * (int)src->width + sx) * 3; d = image->data + (dy * (int)image->width + dx) * 3; for (y = 0; y < height; y++) { memcpy(d, s, width * 3); d += dwi; s += swi; } } else { swi = (src->width - width) * 3; dwi = (image->width - width) * 4; s = src->data + (sy * (int)src->width + sx) * 3; d = image->data + (dy * (int)image->width + dx) * 4; for (y = 0; y < height; y++) { for (x = 0; x < width; x++) { *d++ = *s++; *d++ = *s++; *d++ = *s++; *d++ = 255; } d += dwi; s += swi; } } } else { int dalpha = HAS_ALPHA(image); swi = (src->width - width) * 4; s = src->data + (sy * (int)src->width + sx) * 4; if (dalpha) { dwi = (image->width - width) * 4; d = image->data + (dy * (int)image->width + dx) * 4; } else { dwi = (image->width - width) * 3; d = image->data + (dy * (int)image->width + dx) * 3; } if (!dalpha) { for (y = 0; y < height; y++) { for (x = 0; x < width; x++) { alpha = *(s + 3); calpha = 255 - alpha; *d = (((int)*d * calpha) + ((int)*s * alpha)) / 256; s++; d++; *d = (((int)*d * calpha) + ((int)*s * alpha)) / 256; s++; d++; *d = (((int)*d * calpha) + ((int)*s * alpha)) / 256; s++; d++; s++; } d += dwi; s += swi; } } else { RCombineAlpha(d, s, 1, width, height, dwi, swi, 255); } } } void RCopyArea(RImage * image, RImage * src, int sx, int sy, unsigned width, unsigned height, int dx, int dy) { int x, y, dwi, swi; unsigned char *d; unsigned char *s; if (!calculateCombineArea(image, &sx, &sy, &width, &height, &dx, &dy)) return; if (!HAS_ALPHA(src)) { if (!HAS_ALPHA(image)) { swi = src->width * 3; dwi = image->width * 3; s = src->data + (sy * (int)src->width + sx) * 3; d = image->data + (dy * (int)image->width + dx) * 3; for (y = 0; y < height; y++) { memcpy(d, s, width * 3); d += dwi; s += swi; } } else { swi = (src->width - width) * 3; dwi = (image->width - width) * 4; s = src->data + (sy * (int)src->width + sx) * 3; d = image->data + (dy * (int)image->width + dx) * 4; for (y = 0; y < height; y++) { for (x = 0; x < width; x++) { *d++ = *s++; *d++ = *s++; *d++ = *s++; d++; } d += dwi; s += swi; } } } else { int dalpha = HAS_ALPHA(image); swi = src->width * 4; s = src->data + (sy * (int)src->width + sx) * 4; if (dalpha) { dwi = image->width * 4; d = image->data + (dy * (int)image->width + dx) * 4; } else { dwi = image->width * 3; d = image->data + (dy * (int)image->width + dx) * 3; } if (dalpha) { for (y = 0; y < height; y++) { memcpy(d, s, width * 4); d += dwi; s += swi; } } else { for (y = 0; y < height; y++) { for (x = 0; x < width; x++) { *d++ = *s++; *d++ = *s++; *d++ = *s++; s++; } d += dwi; s += swi; } } } } void RCombineAreaWithOpaqueness(RImage * image, RImage * src, int sx, int sy, unsigned width, unsigned height, int dx, int dy, int opaqueness) { int x, y, dwi, swi; int c_opaqueness; unsigned char *s, *d; int dalpha = HAS_ALPHA(image); int dch = (dalpha ? 4 : 3); if (!calculateCombineArea(image, &sx, &sy, &width, &height, &dx, &dy)) return; d = image->data + (dy * image->width + dx) * dch; dwi = (image->width - width) * dch; c_opaqueness = 255 - opaqueness; #define OP opaqueness #define COP c_opaqueness if (!HAS_ALPHA(src)) { s = src->data + (sy * src->width + sx) * 3; swi = (src->width - width) * 3; if (!dalpha) { for (y = 0; y < height; y++) { for (x = 0; x < width; x++) { *d = (((int)*d * (int)COP) + ((int)*s * (int)OP)) / 256; s++; d++; *d = (((int)*d * (int)COP) + ((int)*s * (int)OP)) / 256; s++; d++; *d = (((int)*d * (int)COP) + ((int)*s * (int)OP)) / 256; s++; d++; } d += dwi; s += swi; } } else { RCombineAlpha(d, s, 0, width, height, dwi, swi, OP); } } else { int tmp; s = src->data + (sy * src->width + sx) * 4; swi = (src->width - width) * 4; if (!dalpha) { for (y = 0; y < height; y++) { for (x = 0; x < width; x++) { tmp = (*(s + 3) * opaqueness) / 256; *d = (((int)*d * (255 - tmp)) + ((int)*s * tmp)) / 256; d++; s++; *d = (((int)*d * (255 - tmp)) + ((int)*s * tmp)) / 256; d++; s++; *d = (((int)*d * (255 - tmp)) + ((int)*s * tmp)) / 256; d++; s++; s++; } d += dwi; s += swi; } } else { RCombineAlpha(d, s, 1, width, height, dwi, swi, OP); } } #undef OP #undef COP } void RCombineImageWithColor(RImage * image, const RColor * color) { register int i; unsigned char *d; int alpha, nalpha, r, g, b; d = image->data; if (!HAS_ALPHA(image)) { /* Image has no alpha channel, so we consider it to be all 255. * Thus there are no transparent parts to be filled. */ return; } r = color->red; g = color->green; b = color->blue; for (i = 0; i < image->width * image->height; i++) { alpha = *(d + 3); nalpha = 255 - alpha; *d = (((int)*d * alpha) + (r * nalpha)) / 256; d++; *d = (((int)*d * alpha) + (g * nalpha)) / 256; d++; *d = (((int)*d * alpha) + (b * nalpha)) / 256; d++; d++; } } RImage *RMakeTiledImage(RImage * tile, unsigned width, unsigned height) { int x, y; unsigned w; unsigned long tile_size = tile->width * tile->height; unsigned long tx = 0; RImage *image; unsigned char *s, *d; if (width == tile->width && height == tile->height) image = RCloneImage(tile); else if (width <= tile->width && height <= tile->height) image = RGetSubImage(tile, 0, 0, width, height); else { int has_alpha = HAS_ALPHA(tile); image = RCreateImage(width, height, has_alpha); d = image->data; s = tile->data; for (y = 0; y < height; y++) { for (x = 0; x < width; x += tile->width) { w = (width - x < tile->width) ? width - x : tile->width; if (has_alpha) { w *= 4; memcpy(d, s + tx * 4, w); } else { w *= 3; memcpy(d, s + tx * 3, w); } d += w; } tx = (tx + tile->width) % tile_size; } } return image; } RImage *RMakeCenteredImage(RImage * image, unsigned width, unsigned height, const RColor * color) { int x, y, w, h, sx, sy; RImage *tmp; tmp = RCreateImage(width, height, HAS_ALPHA(image)); if (!tmp) { return NULL; } RFillImage(tmp, color); if (image->height < height) { h = image->height; y = (height - h) / 2; sy = 0; } else { sy = (image->height - height) / 2; y = 0; h = height; } if (image->width < width) { w = image->width; x = (width - w) / 2; sx = 0; } else { sx = (image->width - width) / 2; x = 0; w = width; } RCombineArea(tmp, image, sx, sy, w, h, x, y); return tmp; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/load_tiff.c����������������������������������������������������������������0000644�0001750�0001750�00000006057�13431646202�014211� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* tiff.c - load TIFF image from file * * Raster graphics library * * Copyright (c) 1997-2003 Alfredo K. Kojima * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301, USA. */ #include <config.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <tiff.h> #include <tiffio.h> #include "wraster.h" #include "imgformat.h" RImage *RLoadTIFF(const char *file, int index) { RImage *image = NULL; TIFF *tif; int i; unsigned char *r, *g, *b, *a; uint16 alpha, amode; uint32 width, height; uint32 *data, *ptr; uint16 extrasamples; uint16 *sampleinfo; int ch; tif = TIFFOpen(file, "r"); if (!tif) return NULL; /* seek index */ i = index; while (i > 0) { if (!TIFFReadDirectory(tif)) { RErrorCode = RERR_BADINDEX; TIFFClose(tif); return NULL; } i--; } /* get info */ TIFFGetField(tif, TIFFTAG_IMAGEWIDTH, &width); TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &height); TIFFGetFieldDefaulted(tif, TIFFTAG_EXTRASAMPLES, &extrasamples, &sampleinfo); alpha = (extrasamples == 1 && ((sampleinfo[0] == EXTRASAMPLE_ASSOCALPHA) || (sampleinfo[0] == EXTRASAMPLE_UNASSALPHA))); amode = (extrasamples == 1 && sampleinfo[0] == EXTRASAMPLE_ASSOCALPHA); if (width < 1 || height < 1) { RErrorCode = RERR_BADIMAGEFILE; TIFFClose(tif); return NULL; } /* read data */ ptr = data = (uint32 *) _TIFFmalloc(width * height * sizeof(uint32)); if (!data) { RErrorCode = RERR_NOMEMORY; } else { if (!TIFFReadRGBAImage(tif, width, height, data, 0)) { RErrorCode = RERR_BADIMAGEFILE; } else { /* convert data */ image = RCreateImage(width, height, alpha); if (alpha) ch = 4; else ch = 3; if (image) { int x, y; r = image->data; g = image->data + 1; b = image->data + 2; a = image->data + 3; /* data seems to be stored upside down */ data += width * (height - 1); for (y = 0; y < height; y++) { for (x = 0; x < width; x++) { *(r) = (*data) & 0xff; *(g) = (*data >> 8) & 0xff; *(b) = (*data >> 16) & 0xff; if (alpha) { *(a) = (*data >> 24) & 0xff; if (amode && (*a > 0)) { *r = (*r * 255) / *(a); *g = (*g * 255) / *(a); *b = (*b * 255) / *(a); } a += 4; } r += ch; g += ch; b += ch; data++; } data -= 2 * width; } } } _TIFFfree(ptr); } TIFFClose(tif); return image; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/xutil.c��������������������������������������������������������������������0000644�0001750�0001750�00000015171�13431646202�013424� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* xutil.c - utility functions for X * * Raster graphics library * * Copyright (c) 1997-2003 Alfredo K. Kojima * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301, USA. */ #include <config.h> #include <X11/Xlib.h> #include <X11/Xutil.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <assert.h> #ifdef USE_XSHM #include <sys/ipc.h> #include <sys/shm.h> #endif /* USE_XSHM */ #include "wraster.h" #include "xutil.h" #ifdef USE_XSHM static int shmError; static int (*oldErrorHandler)(Display *dpy, XErrorEvent *err); static int errorHandler(Display * dpy, XErrorEvent * err) { shmError = 1; if (err->error_code != BadAccess) (*oldErrorHandler) (dpy, err); return 0; } #endif RXImage *RCreateXImage(RContext * context, int depth, unsigned width, unsigned height) { RXImage *rximg; Visual *visual = context->visual; rximg = malloc(sizeof(RXImage)); if (!rximg) { RErrorCode = RERR_NOMEMORY; return NULL; } #ifndef USE_XSHM rximg->image = XCreateImage(context->dpy, visual, depth, ZPixmap, 0, NULL, width, height, 8, 0); if (!rximg->image) { free(rximg); RErrorCode = RERR_XERROR; return NULL; } rximg->image->data = malloc(rximg->image->bytes_per_line * height); if (!rximg->image->data) { XDestroyImage(rximg->image); free(rximg); RErrorCode = RERR_NOMEMORY; return NULL; } #else /* USE_XSHM */ if (!context->attribs->use_shared_memory) { retry_without_shm: context->attribs->use_shared_memory = 0; rximg->is_shared = 0; rximg->image = XCreateImage(context->dpy, visual, depth, ZPixmap, 0, NULL, width, height, 8, 0); if (!rximg->image) { free(rximg); RErrorCode = RERR_XERROR; return NULL; } rximg->image->data = malloc(rximg->image->bytes_per_line * height); if (!rximg->image->data) { XDestroyImage(rximg->image); free(rximg); RErrorCode = RERR_NOMEMORY; return NULL; } } else { rximg->is_shared = 1; rximg->info.readOnly = False; rximg->image = XShmCreateImage(context->dpy, visual, depth, ZPixmap, NULL, &rximg->info, width, height); rximg->info.shmid = shmget(IPC_PRIVATE, rximg->image->bytes_per_line * height, IPC_CREAT | 0777); if (rximg->info.shmid < 0) { context->attribs->use_shared_memory = 0; perror("wrlib: could not allocate shared memory segment"); XDestroyImage(rximg->image); goto retry_without_shm; } rximg->info.shmaddr = shmat(rximg->info.shmid, 0, 0); if (rximg->info.shmaddr == (void *)-1) { context->attribs->use_shared_memory = 0; if (shmctl(rximg->info.shmid, IPC_RMID, 0) < 0) perror("wrlib: shmctl"); perror("wrlib: could not allocate shared memory"); XDestroyImage(rximg->image); goto retry_without_shm; } shmError = 0; XSync(context->dpy, False); oldErrorHandler = XSetErrorHandler(errorHandler); XShmAttach(context->dpy, &rximg->info); XSync(context->dpy, False); XSetErrorHandler(oldErrorHandler); rximg->image->data = rximg->info.shmaddr; /* rximg->image->obdata = &(rximg->info); */ if (shmError) { context->attribs->use_shared_memory = 0; XDestroyImage(rximg->image); if (shmdt(rximg->info.shmaddr) < 0) perror("wrlib: shmdt"); if (shmctl(rximg->info.shmid, IPC_RMID, 0) < 0) perror("wrlib: shmctl"); /* printf("wrlib:error attaching shared memory segment to XImage\n"); */ goto retry_without_shm; } } #endif /* USE_XSHM */ return rximg; } void RDestroyXImage(RContext * context, RXImage * rximage) { #ifndef USE_XSHM /* Argument is not used in this case, tell the compiler it is ok */ (void) context; XDestroyImage(rximage->image); #else /* USE_XSHM */ if (rximage->is_shared) { XSync(context->dpy, False); XShmDetach(context->dpy, &rximage->info); XDestroyImage(rximage->image); if (shmdt(rximage->info.shmaddr) < 0) perror("wrlib: shmdt"); if (shmctl(rximage->info.shmid, IPC_RMID, 0) < 0) perror("wrlib: shmctl"); } else { XDestroyImage(rximage->image); } #endif free(rximage); } static unsigned getDepth(Display * dpy, Drawable d) { Window w; int foo; unsigned bar; unsigned depth; XGetGeometry(dpy, d, &w, &foo, &foo, &bar, &bar, &bar, &depth); return depth; } RXImage *RGetXImage(RContext * context, Drawable d, int x, int y, unsigned width, unsigned height) { RXImage *ximg = NULL; #ifdef USE_XSHM if (context->attribs->use_shared_memory && 0) { ximg = RCreateXImage(context, getDepth(context->dpy, d), width, height); if (ximg && !ximg->is_shared) { RDestroyXImage(context, ximg); ximg = NULL; } if (ximg) { XShmGetImage(context->dpy, d, ximg->image, x, y, AllPlanes); } } if (!ximg) { ximg = malloc(sizeof(RXImage)); if (!ximg) { RErrorCode = RERR_NOMEMORY; return NULL; } ximg->is_shared = 0; ximg->image = XGetImage(context->dpy, d, x, y, width, height, AllPlanes, ZPixmap); } #else /* !USE_XSHM */ ximg = malloc(sizeof(RXImage)); if (!ximg) { RErrorCode = RERR_NOMEMORY; return NULL; } ximg->image = XGetImage(context->dpy, d, x, y, width, height, AllPlanes, ZPixmap); #endif /* !USE_XSHM */ if (ximg->image == NULL) { free(ximg); return NULL; } return ximg; } void RPutXImage(RContext * context, Drawable d, GC gc, RXImage * ximage, int src_x, int src_y, int dest_x, int dest_y, unsigned int width, unsigned int height) { #ifndef USE_XSHM XPutImage(context->dpy, d, gc, ximage->image, src_x, src_y, dest_x, dest_y, width, height); #else if (ximage->is_shared) { XShmPutImage(context->dpy, d, gc, ximage->image, src_x, src_y, dest_x, dest_y, width, height, False); } else { XPutImage(context->dpy, d, gc, ximage->image, src_x, src_y, dest_x, dest_y, width, height); } XFlush(context->dpy); #endif /* USE_XSHM */ } #ifdef USE_XSHM Pixmap R_CreateXImageMappedPixmap(RContext * context, RXImage * rximage) { Pixmap pix; pix = XShmCreatePixmap(context->dpy, context->drawable, rximage->image->data, &rximage->info, rximage->image->width, rximage->image->height, rximage->image->depth); return pix; } #endif /* USE_XSHM */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/load_xpm.c�����������������������������������������������������������������0000644�0001750�0001750�00000010275�13431646202�014062� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* xpm.c - load XPM image from file using libXpm * * Raster graphics library * * Copyright (c) 1997-2003 Alfredo K. Kojima * Copyright (c) 2014 Window Maker Team * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301, USA. */ #include <config.h> #include <X11/Xlib.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <X11/xpm.h> #include "wraster.h" #include "imgformat.h" static RImage *create_rimage_from_xpm(RContext *context, XpmImage xpm) { Display *dpy = context->dpy; Colormap cmap = context->cmap; RImage *image; unsigned char *color_table[4]; unsigned char *data; int i; int *p; if (xpm.height < 1 || xpm.width < 1) { RErrorCode = RERR_BADIMAGEFILE; return NULL; } if (xpm.colorTable == NULL) { RErrorCode = RERR_BADIMAGEFILE; return NULL; } image = RCreateImage(xpm.width, xpm.height, True); if (!image) return NULL; /* make color table */ for (i = 0; i < 4; i++) { color_table[i] = malloc(xpm.ncolors * sizeof(unsigned char)); if (!color_table[i]) { for (i = i - 1; i >= 0; i--) { if (color_table[i]) free(color_table[i]); } RReleaseImage(image); RErrorCode = RERR_NOMEMORY; return NULL; } } for (i = 0; i < xpm.ncolors; i++) { XColor xcolor; char *color = NULL; if (xpm.colorTable[i].c_color) color = xpm.colorTable[i].c_color; else if (xpm.colorTable[i].g_color) color = xpm.colorTable[i].g_color; else if (xpm.colorTable[i].g4_color) color = xpm.colorTable[i].g4_color; else if (xpm.colorTable[i].m_color) color = xpm.colorTable[i].m_color; else if (xpm.colorTable[i].symbolic) color = xpm.colorTable[i].symbolic; if (!color) { color_table[0][i] = 0xbe; color_table[1][i] = 0xbe; color_table[2][i] = 0xbe; color_table[3][i] = 0xff; continue; } if (strncmp(color, "None", 4) == 0) { color_table[0][i] = 0; color_table[1][i] = 0; color_table[2][i] = 0; color_table[3][i] = 0; continue; } if (XParseColor(dpy, cmap, color, &xcolor)) { color_table[0][i] = xcolor.red >> 8; color_table[1][i] = xcolor.green >> 8; color_table[2][i] = xcolor.blue >> 8; color_table[3][i] = 0xff; } else { color_table[0][i] = 0xbe; color_table[1][i] = 0xbe; color_table[2][i] = 0xbe; color_table[3][i] = 0xff; } } /* convert pixmap to RImage */ p = (int *)xpm.data; data = image->data; for (i = 0; i < xpm.width * xpm.height; i++, p++) { *(data++) = color_table[0][*p]; *(data++) = color_table[1][*p]; *(data++) = color_table[2][*p]; *(data++) = color_table[3][*p]; } for (i = 0; i < 4; i++) free(color_table[i]); return image; } static int is_xpm_error(int status) { if (status == XpmSuccess) return 0; switch (status) { case XpmOpenFailed: RErrorCode = RERR_OPEN; break; case XpmFileInvalid: RErrorCode = RERR_BADIMAGEFILE; break; case XpmNoMemory: RErrorCode = RERR_NOMEMORY; break; default: RErrorCode = RERR_BADIMAGEFILE; break; } return 1; } RImage *RGetImageFromXPMData(RContext *context, char **xpmData) { RImage *image; XpmImage xpm; int status; status = XpmCreateXpmImageFromData(xpmData, &xpm, (XpmInfo *) NULL); if (is_xpm_error(status)) return NULL; image = create_rimage_from_xpm(context, xpm); XpmFreeXpmImage(&xpm); return image; } RImage *RLoadXPM(RContext *context, const char *file) { RImage *image; XpmImage xpm; int status; status = XpmReadFileToXpmImage((char *)file, &xpm, (XpmInfo *) NULL); if (is_xpm_error(status)) return NULL; image = create_rimage_from_xpm(context, xpm); XpmFreeXpmImage(&xpm); return image; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/alpha_combine.c������������������������������������������������������������0000644�0001750�0001750�00000003442�13431646202�015036� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* alpha_combine.c - Alpha channel combination, based on Gimp 1.1.24 * The GIMP -- an image manipulation program * Copyright (C) 1995 Spencer Kimball and Peter Mattis * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301, USA. */ #include "wraster.h" void RCombineAlpha(unsigned char *d, unsigned char *s, int s_has_alpha, int width, int height, int dwi, int swi, int opacity) { int x, y; int t, sa; int alpha; float ratio, cratio; for (y=0; y<height; y++) { for (x=0; x<width; x++) { sa=s_has_alpha?*(s+3):255; if (opacity!=255) { t = sa * opacity + 0x80; sa = ((t>>8)+t)>>8; } t = *(d+3) * (255-sa) + 0x80; alpha = sa + (((t>>8)+t)>>8); if (sa==0 || alpha==0) { ratio = 0; cratio = 1.0; } else if(sa == alpha) { ratio = 1.0; cratio = 0; } else { ratio = (float)sa / alpha; cratio = 1.0F - ratio; } *d = (int)*d * cratio + (int)*s * ratio; s++; d++; *d = (int)*d * cratio + (int)*s * ratio; s++; d++; *d = (int)*d * cratio + (int)*s * ratio; s++; d++; *d = alpha; d++; if (s_has_alpha) s++; } d+=dwi; s+=swi; } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/tests/���������������������������������������������������������������������0000755�0001750�0001750�00000000000�13642360104�013326� 5����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/tests/Makefile.in����������������������������������������������������������0000644�0001750�0001750�00000052073�13642360055�015327� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = testdraw$(EXEEXT) testgrad$(EXEEXT) testrot$(EXEEXT) \ view$(EXEEXT) subdir = wrlib/tests ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ $(top_srcdir)/m4/ax_pthread.m4 \ $(top_srcdir)/m4/ld-version-script.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/windowmaker.m4 \ $(top_srcdir)/m4/wm_attributes.m4 \ $(top_srcdir)/m4/wm_cflags_check.m4 \ $(top_srcdir)/m4/wm_i18n.m4 \ $(top_srcdir)/m4/wm_imgfmt_check.m4 \ $(top_srcdir)/m4/wm_libexif.m4 $(top_srcdir)/m4/wm_libmath.m4 \ $(top_srcdir)/m4/wm_prog_cc_c11.m4 \ $(top_srcdir)/m4/wm_xext_check.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) am_testdraw_OBJECTS = testdraw.$(OBJEXT) testdraw_OBJECTS = $(am_testdraw_OBJECTS) am__DEPENDENCIES_1 = $(top_builddir)/wrlib/libwraster.la testdraw_DEPENDENCIES = $(am__DEPENDENCIES_1) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = am_testgrad_OBJECTS = testgrad.$(OBJEXT) testgrad_OBJECTS = $(am_testgrad_OBJECTS) testgrad_DEPENDENCIES = $(am__DEPENDENCIES_1) am_testrot_OBJECTS = testrot.$(OBJEXT) testrot_OBJECTS = $(am_testrot_OBJECTS) testrot_DEPENDENCIES = $(am__DEPENDENCIES_1) am_view_OBJECTS = view.$(OBJEXT) view_OBJECTS = $(am_view_OBJECTS) view_DEPENDENCIES = $(am__DEPENDENCIES_1) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/testdraw.Po ./$(DEPDIR)/testgrad.Po \ ./$(DEPDIR)/testrot.Po ./$(DEPDIR)/view.Po am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(testdraw_SOURCES) $(testgrad_SOURCES) $(testrot_SOURCES) \ $(view_SOURCES) DIST_SOURCES = $(testdraw_SOURCES) $(testgrad_SOURCES) \ $(testrot_SOURCES) $(view_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ GFXLIBS = @GFXLIBS@ GREP = @GREP@ HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLIBS = @INTLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBBSD = @LIBBSD@ LIBEXIF = @LIBEXIF@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXINERAMA = @LIBXINERAMA@ LIBXMU = @LIBXMU@ LIBXRANDR = @LIBXRANDR@ LINGUAS = @LINGUAS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAGICKFLAGS = @MAGICKFLAGS@ MAGICKLIBS = @MAGICKLIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MANLANGDIRS = @MANLANGDIRS@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOLIBS = @PANGOLIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILMOFILES = @UTILMOFILES@ VERSION = @VERSION@ WINGSMOFILES = @WINGSMOFILES@ WINGS_VERSION = @WINGS_VERSION@ WMAKERMOFILES = @WMAKERMOFILES@ WPREFSMOFILES = @WPREFSMOFILES@ WRASTER_VERSION = @WRASTER_VERSION@ WUTIL_VERSION = @WUTIL_VERSION@ XCFLAGS = @XCFLAGS@ XFTCONFIG = @XFTCONFIG@ XFTFLAGS = @XFTFLAGS@ XFTLIBS = @XFTLIBS@ XGETTEXT = @XGETTEXT@ XLFLAGS = @XLFLAGS@ XLIBS = @XLIBS@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBRARY_PATH = @X_LIBRARY_PATH@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ defsdatadir = @defsdatadir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ inc_search_path = @inc_search_path@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lcov_output_directory = @lcov_output_directory@ lib_search_path = @lib_search_path@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pixmapdir = @pixmapdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ wprefs_bindir = @wprefs_bindir@ wprefs_datadir = @wprefs_datadir@ AUTOMAKE_OPTIONS = EXTRA_DIST = test.png tile.xpm ballot_box.xpm AM_CPPFLAGS = -I$(srcdir)/.. $(DFLAGS) @HEADER_SEARCH_PATH@ LIBLIST = $(top_builddir)/wrlib/libwraster.la @XLIBS@ testdraw_SOURCES = testdraw.c testdraw_LDADD = $(LIBLIST) testgrad_SOURCES = testgrad.c testgrad_LDADD = $(LIBLIST) testrot_SOURCES = testrot.c testrot_LDADD = $(LIBLIST) view_SOURCES = view.c view_LDADD = $(LIBLIST) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu wrlib/tests/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu wrlib/tests/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list testdraw$(EXEEXT): $(testdraw_OBJECTS) $(testdraw_DEPENDENCIES) $(EXTRA_testdraw_DEPENDENCIES) @rm -f testdraw$(EXEEXT) $(AM_V_CCLD)$(LINK) $(testdraw_OBJECTS) $(testdraw_LDADD) $(LIBS) testgrad$(EXEEXT): $(testgrad_OBJECTS) $(testgrad_DEPENDENCIES) $(EXTRA_testgrad_DEPENDENCIES) @rm -f testgrad$(EXEEXT) $(AM_V_CCLD)$(LINK) $(testgrad_OBJECTS) $(testgrad_LDADD) $(LIBS) testrot$(EXEEXT): $(testrot_OBJECTS) $(testrot_DEPENDENCIES) $(EXTRA_testrot_DEPENDENCIES) @rm -f testrot$(EXEEXT) $(AM_V_CCLD)$(LINK) $(testrot_OBJECTS) $(testrot_LDADD) $(LIBS) view$(EXEEXT): $(view_OBJECTS) $(view_DEPENDENCIES) $(EXTRA_view_DEPENDENCIES) @rm -f view$(EXEEXT) $(AM_V_CCLD)$(LINK) $(view_OBJECTS) $(view_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testdraw.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testgrad.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testrot.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/view.Po@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @echo '# dummy' >$@-t && $(am__mv) $@-t $@ am--depfiles: $(am__depfiles_remade) .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -f ./$(DEPDIR)/testdraw.Po -rm -f ./$(DEPDIR)/testgrad.Po -rm -f ./$(DEPDIR)/testrot.Po -rm -f ./$(DEPDIR)/view.Po -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/testdraw.Po -rm -f ./$(DEPDIR)/testgrad.Po -rm -f ./$(DEPDIR)/testrot.Po -rm -f ./$(DEPDIR)/view.Po -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \ ctags ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # 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. .NOEXPORT: ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/tests/ballot_box.xpm�������������������������������������������������������0000644�0001750�0001750�00000044152�13431646202�016131� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * ballot_box_xpm[] = { "48 48 855 2", " c None", ". c #B8B8B8", "+ c #A0A0A0", "@ c #4A2511", "# c #A7A7A7", "$ c #EDEDED", "% c #EBE8E7", "& c #A6948D", "* c #904B22", "= c #B4622D", "- c #9F5427", "; c #87431F", "> c #4B2410", ", c #BFBFBF", "' c #464646", ") c #818181", "! c #D4D4D4", "~ c #FEFEFE", "{ c #E79860", "] c #E38848", "^ c #F4E2D5", "/ c #F0E7E2", "( c #C1804A", "_ c #9B562B", ": c #7D3E1C", "< c #8A8A8A", "[ c #ECDEDF", "} c #B68183", "| c #E2E2E2", "1 c #6A6A6A", "2 c #686868", "3 c #C6C6C6", "4 c #F7F7F7", "5 c #F5D6C1", "6 c #E7C9B3", "7 c #D1D1D1", "8 c #FBFBFB", "9 c #E7A966", "0 c #E7AC69", "a c #D79A5D", "b c #B77642", "c c #9B562C", "d c #743819", "e c #3E1C0C", "f c #717171", "g c #B4B4B4", "h c #C1A7A8", "i c #B37F80", "j c #BC8E90", "k c #797979", "l c #343434", "m c #E0E0E0", "n c #DABFC0", "o c #924345", "p c #E3CFCF", "q c #A46264", "r c #D1B0B1", "s c #91857C", "t c #ABABAB", "u c #EADBCA", "v c #C98D54", "w c #E7AA67", "x c #E8AC69", "y c #E8AD6B", "z c #EAAF6C", "A c #D99E61", "B c #AD6E3E", "C c #884723", "D c #663015", "E c #503C33", "F c #565656", "G c #7E7878", "H c #978383", "I c #E8E8E8", "J c #DBDBDB", "K c #5F5F5F", "L c #444444", "M c #343130", "N c #EEEEEE", "O c #BF9192", "P c #C8A0A1", "Q c #9B5254", "R c #DDDDDD", "S c #BDBDBD", "T c #646464", "U c #CEC3BA", "V c #8D5730", "W c #E6A865", "X c #E2A466", "Y c #EAB270", "Z c #ECB472", "` c #BC8450", " . c #9A5C32", ".. c #763E20", "+. c #4F3120", "@. c #3A312C", "#. c #5D5D5D", "$. c #999999", "%. c #2C2C2C", "&. c #834D28", "*. c #3D3834", "=. c #C0C0C0", "-. c #E1E1E1", ";. c #414141", ">. c #BBBBBB", ",. c #3B1407", "'. c #2F2113", "). c #764A2A", "!. c #DFA061", "~. c #E8AC6A", "{. c #E9AE6B", "]. c #EAB06D", "^. c #EBB270", "/. c #EDB673", "(. c #D9A368", "_. c #B17848", ":. c #8A4B27", "<. c #470C06", "[. c #4B220E", "}. c #9D562A", "|. c #CB7F43", "1. c #D98D4C", "2. c #AF7B4F", "3. c #4F4F4F", "4. c #D3C0C0", "5. c #AB7D7E", "6. c #C7C7C7", "7. c #989898", "8. c #535353", "9. c #201714", "0. c #8E8E8E", "a. c #413531", "b. c #B07042", "c. c #E7AB68", "d. c #EAB77D", "e. c #ECB87E", "f. c #EAB06E", "g. c #EDB674", "h. c #EEB877", "i. c #F2C17E", "j. c #D0B17B", "k. c #693E29", "l. c #34160A", "m. c #854520", "n. c #BB6F38", "o. c #DC965F", "p. c #E4AE81", "q. c #F4E1D1", "r. c #C4C4C4", "s. c #333333", "t. c #929292", "u. c #DACDCD", "v. c #A47071", "w. c #7A7A7A", "x. c #212121", "y. c #252525", "z. c #626262", "A. c #CFD8D4", "B. c #F4DABD", "C. c #E9AF6C", "D. c #EAB16F", "E. c #EBB371", "F. c #EDB875", "G. c #F8D693", "H. c #FCDD9A", "I. c #E19151", "J. c #3A1407", "K. c #6B3316", "L. c #B16532", "M. c #D07F41", "N. c #DC9A67", "O. c #AEAEAE", "P. c #9E9E9E", "Q. c #9C9C9C", "R. c #2F2F2F", "S. c #8F8F8F", "T. c #B0B0B0", "U. c #9A9A9A", "V. c #6D6D6D", "W. c #363636", "X. c #0F0F0F", "Y. c #2D2D2D", "Z. c #757575", "`. c #A9ACAA", " + c #91A59C", ".+ c #C0CBC6", "++ c #637F72", "@+ c #F0CAA1", "#+ c #EEBB78", "$+ c #FADA98", "%+ c #F8D18E", "&+ c #E58D48", "*+ c #CB6830", "=+ c #502510", "-+ c #9B5328", ";+ c #C9773B", ">+ c #D27F40", ",+ c #D38141", "'+ c #D48344", ")+ c #BF8253", "!+ c #85532C", "~+ c #361A0C", "{+ c #686260", "]+ c #CFCFCF", "^+ c #5A5A5A", "/+ c #1A1A1A", "(+ c #5E5E5E", "_+ c #5C5C5C", ":+ c #3A3A3A", "<+ c #0D0D0D", "[+ c #3E3E3E", "}+ c #828282", "|+ c #C4C7C6", "1+ c #DFE4E2", "2+ c #15402C", "3+ c #A1B2AA", "4+ c #F6E2CD", "5+ c #EBB882", "6+ c #EFBE7C", "7+ c #FCE09D", "8+ c #F2BC79", "9+ c #D77334", "0+ c #DF7D3A", "a+ c #E07E3B", "b+ c #8B4821", "c+ c #BF6C34", "d+ c #CE7A3D", "e+ c #D07C3E", "f+ c #D17E3F", "g+ c #CA7A3E", "h+ c #864722", "i+ c #511F0C", "j+ c #491909", "k+ c #4B2211", "l+ c #6C6360", "m+ c #323232", "n+ c #131313", "o+ c #191919", "p+ c #393939", "q+ c #C9C9C9", "r+ c #728C80", "s+ c #967568", "t+ c #66331A", "u+ c #E6A965", "v+ c #F4CB88", "w+ c #FEE4A1", "x+ c #E89F5D", "y+ c #DC7736", "z+ c #DD7937", "A+ c #DE7A37", "B+ c #D77536", "C+ c #AF5F2C", "D+ c #E2813C", "E+ c #D77C3B", "F+ c #CD783C", "G+ c #CF7A3D", "H+ c #CA793D", "I+ c #B06733", "J+ c #B26835", "K+ c #815636", "L+ c #1D1715", "M+ c #1B0D08", "N+ c #706F6F", "O+ c #939393", "P+ c #050505", "Q+ c #040404", "R+ c #000000", "S+ c #0D0401", "T+ c #1F0A03", "U+ c #444140", "V+ c #F7E6D6", "W+ c #7A492D", "X+ c #A96F3F", "Y+ c #E6A966", "Z+ c #F8D491", "`+ c #F9D593", " @ c #DF8748", ".@ c #DA7434", "+@ c #DB7635", "@@ c #DB7736", "#@ c #D47234", "$@ c #793E24", "%@ c #361F1A", "&@ c #4D1C0A", "*@ c #783919", "=@ c #D87A38", "-@ c #D77B3B", ";@ c #CD773B", ">@ c #D07D3E", ",@ c #D27E40", "'@ c #D38041", ")@ c #D48243", "!@ c #D7894A", "~@ c #B28E5F", "{@ c #2A261D", "]@ c #030100", "^@ c #222121", "/@ c #171717", "(@ c #1B0F0B", "_@ c #441708", ":@ c #57240E", "<@ c #4D4743", "[@ c #FCF7F3", "}@ c #E5AA70", "|@ c #E2A05E", "1@ c #E8AE6B", "2@ c #FADC99", "3@ c #F3C685", "4@ c #D87638", "5@ c #D77132", "6@ c #D87233", "7@ c #D97334", "8@ c #BF642D", "9@ c #4F1F0D", "0@ c #3A3432", "a@ c #555555", "b@ c #C1C1C1", "c@ c #120000", "d@ c #411608", "e@ c #4D1B09", "f@ c #5C260F", "g@ c #A85A28", "h@ c #D77A3A", "i@ c #CC763A", "j@ c #CE793C", "k@ c #CF7B3D", "l@ c #D07D3F", "m@ c #D78849", "n@ c #FBDD9B", "o@ c #5F553C", "p@ c #1F1F1F", "q@ c #7D5737", "r@ c #D79154", "s@ c #DD9352", "t@ c #804724", "u@ c #733F21", "v@ c #E3A66E", "w@ c #E19C5B", "x@ c #ECB876", "y@ c #EBAE6F", "z@ c #D46B30", "A@ c #D56C30", "B@ c #D66E31", "C@ c #D77032", "D@ c #994B20", "E@ c #46190A", "F@ c #312825", "G@ c #6C6C6C", "H@ c #D2D2D2", "I@ c #B68F90", "J@ c #D7BDBE", "K@ c #060200", "L@ c #331106", "M@ c #8B3712", "N@ c #68270D", "O@ c #59240E", "P@ c #A35829", "Q@ c #CF7B3E", "R@ c #D17D3F", "S@ c #F1C584", "T@ c #7F7250", "U@ c #0D0804", "V@ c #5E3C20", "W@ c #B57642", "X@ c #DA8E4D", "Y@ c #DB8F4F", "Z@ c #DC9150", "`@ c #804725", " # c #D58F51", ".# c #E19D5C", "+# c #F2C886", "@# c #FBDC99", "## c #DD8D51", "$# c #D1682E", "%# c #D2692E", "&# c #D36B2F", "*# c #CC672E", "=# c #7D3918", "-# c #4D1A09", ";# c #290E05", "># c #321A11", ",# c #3B3B3B", "'# c #3D3D3D", ")# c #1E0A03", "!# c #903A13", "~# c #873511", "{# c #63250C", "]# c #693015", "^# c #AC5F2E", "/# c #CD783B", "(# c #D38142", "_# c #DD9656", ":# c #D68647", "<# c #D88848", "[# c #D88A49", "}# c #D98C4C", "|# c #DC9151", "1# c #DD9453", "2# c #E29F5E", "3# c #F8D592", "4# c #F4CB8A", "5# c #D67B41", "6# c #CD642C", "7# c #CF662D", "8# c #D0672E", "9# c #C15F2A", "0# c #632810", "a# c #7D3817", "b# c #C4642C", "c# c #873F1A", "d# c #7C2B0F", "e# c #8D401A", "f# c #290801", "g# c #803310", "h# c #823311", "i# c #5A210B", "j# c #6A3015", "k# c #BC6C35", "l# c #D37F40", "m# c #D58344", "n# c #D58445", "o# c #D88948", "p# c #D88B4A", "q# c #DA8F4E", "r# c #DB904F", "s# c #E4A665", "t# c #FCDF9C", "u# c #EAB274", "v# c #CD6831", "w# c #CB612A", "x# c #CC632B", "y# c #AD5324", "z# c #511D0B", "A# c #763013", "B# c #CB642C", "C# c #C9612B", "D# c #AC4A1E", "E# c #9D4F22", "F# c #1B0500", "G# c #180902", "H# c #50200A", "I# c #7E3110", "J# c #7B3D1C", "K# c #BE6E36", "L# c #D58546", "M# c #D78748", "N# c #D88949", "O# c #D98B4A", "P# c #ECB977", "Q# c #DE975C", "R# c #C75D27", "S# c #C85F28", "T# c #CA6029", "U# c #93421C", "V# c #622911", "W# c #943412", "X# c #BE5825", "Y# c #D56E31", "Z# c #A55525", "`# c #310802", " $ c #240601", ".$ c #150500", "+$ c #200C03", "@$ c #702D0E", "#$ c #752D0F", "$$ c #511D0A", "%$ c #82401D", "&$ c #C8773B", "*$ c #D68546", "=$ c #FADB99", "-$ c #D27C44", ";$ c #C55B25", ">$ c #C65C26", ",$ c #C05B26", "'$ c #793315", ")$ c #060606", "!$ c #2E2E2E", "~$ c #EEE1DB", "{$ c #F8EBE4", "]$ c #D5723B", "^$ c #A45425", "/$ c #260D04", "($ c #2C0F05", "_$ c #0C0501", ":$ c #070402", "<$ c #3C1807", "[$ c #883611", "}$ c #8D4B24", "|$ c #CA783C", "1$ c #D58444", "2$ c #DD9757", "3$ c #F6D290", "4$ c #F2C989", "5$ c #C55F2B", "6$ c #C25824", "7$ c #C35925", "8$ c #AF4F21", "9$ c #60250E", "0$ c #1C0A04", "a$ c #0A0A0A", "b$ c #87595A", "c$ c #F2D8C9", "d$ c #D0672D", "e$ c #A35224", "f$ c #0D0200", "g$ c #0F0501", "h$ c #282828", "i$ c #070707", "j$ c #0D0501", "k$ c #56220B", "l$ c #6C290E", "m$ c #9B5126", "n$ c #E4A766", "o$ c #FBDE9B", "p$ c #E5AD71", "q$ c #BE5322", "r$ c #BF5523", "s$ c #C15623", "t$ c #9D451C", "u$ c #4C1B0A", "v$ c #100704", "w$ c #3F2C2C", "x$ c #AB9898", "y$ c #EAE3E3", "z$ c #F7EAE3", "A$ c #CE662D", "B$ c #A25123", "C$ c #878787", "D$ c #7F7F7F", "E$ c #DFDFDF", "F$ c #425F51", "G$ c #3E4F47", "H$ c #121212", "I$ c #1F0C03", "J$ c #58210D", "K$ c #DEB67D", "L$ c #D38750", "M$ c #BB5020", "N$ c #BC5221", "O$ c #853816", "P$ c #3F1507", "Q$ c #0A0402", "R$ c #0E0E0E", "S$ c #616161", "T$ c #B69C9D", "U$ c #893336", "V$ c #DB926C", "W$ c #7C3617", "X$ c #EAEDEB", "Y$ c #ACB7B2", "Z$ c #8E9994", "`$ c #424E48", " % c #595959", ".% c #130602", "+% c #100601", "@% c #401907", "#% c #9F411D", "$% c #B84D1E", "%% c #B94F1F", "&% c #B54E20", "*% c #6D2B10", "=% c #160702", "-% c #554338", ";% c #787878", ">% c #382B24", ",% c #97481F", "'% c #C55F29", ")% c #723114", "!% c #230B02", "~% c #302A28", "{% c #C2C0BE", "]% c #EEF1F0", "^% c #A1AFA8", "/% c #C4CAC7", "(% c #585858", "_% c #280D05", ":% c #361207", "<% c #401708", "[% c #280F04", "}% c #551F09", "|% c #9A3E18", "1% c #B74C1D", "2% c #A4451B", "3% c #5E230D", "4% c #742E12", "5% c #963714", "6% c #883111", "7% c #77290E", "8% c #983814", "9% c #9A3814", "0% c #91421B", "a% c #C96029", "b% c #C25C28", "c% c #5E250E", "d% c #1F0A02", "e% c #0A0200", "f% c #311205", "g% c #B8A8A2", "h% c #82998E", "i% c #CECECE", "j% c #140602", "k% c #3F1608", "l% c #712B0F", "m% c #833311", "n% c #57210B", "o% c #170802", "p% c #250C03", "q% c #6B250C", "r% c #993D17", "s% c #B54A1D", "t% c #A2421A", "u% c #873615", "v% c #9D411A", "w% c #B95020", "x% c #BB5121", "y% c #A9441A", "z% c #9C3A15", "A% c #C05723", "B% c #C45B25", "C% c #C75C27", "D% c #B05122", "E% c #55200C", "F% c #160701", "G% c #9E8075", "H% c #BEBEBE", "I% c #371307", "J% c #6A280D", "K% c #813211", "L% c #803111", "M% c #7F3111", "N% c #7E3011", "O% c #762D0F", "P% c #451A08", "Q% c #360B03", "R% c #7C240B", "S% c #481808", "T% c #983C17", "U% c #782E11", "V% c #B74D1E", "W% c #BD5322", "X% c #B44C1E", "Y% c #B84F20", "Z% c #C35924", "`% c #C45A25", " & c #AE4F20", ".& c #461909", "+& c #130600", "@& c #2D1105", "#& c #66260D", "$& c #703D2A", "%& c #8F7165", "&& c #6E341C", "*& c #7D3010", "=& c #7C3010", "-& c #7B2F10", ";& c #7A2F10", ">& c #792E10", ",& c #782E10", "'& c #6A280E", ")& c #2F1205", "!& c #331206", "~& c #541E0B", "{& c #843313", "]& c #AE451A", "^& c #B1471B", "/& c #BF5422", "(& c #9C451C", "_& c #867872", ":& c #A68574", "<& c #3F1B0F", "[& c #0C0300", "}& c #2C1005", "|& c #501D0A", "1& c #772D10", "2& c #752C0F", "3& c #742C0F", "4& c #6F2A0E", "5& c #722B0F", "6& c #511E0A", "7& c #6E270E", "8& c #A93F18", "9& c #B0461B", "0& c #B4491C", "a& c #B54A1C", "b& c #BC5121", "c& c #9A431B", "d& c #3B3431", "e& c #E9E9E9", "f& c #838181", "g& c #260400", "h& c #6B280E", "i& c #732B0F", "j& c #712A0F", "k& c #702A0F", "l& c #6F2A0F", "m& c #6E290E", "n& c #5C220C", "o& c #3D1407", "p& c #832F11", "q& c #AD4419", "r& c #AF451A", "s& c #B2481B", "t& c #B84E1F", "u& c #8C3C18", "v& c #CACACA", "w& c #454545", "x& c #371506", "y& c #702A0E", "z& c #6D290E", "A& c #6C280E", "B& c #6A270E", "C& c #69270E", "D& c #3E1507", "E& c #8B3413", "F& c #AE431A", "G& c #B1461B", "H& c #B5491C", "I& c #893816", "J& c #452B1F", "K& c #A3A3A3", "L& c #DEDEE1", "M& c #E6E6E6", "N& c #0F0000", "O& c #090300", "P& c #160801", "Q& c #531F0A", "R& c #461A09", "S& c #545454", "T& c #724C3D", "U& c #68260E", "V& c #67260D", "W& c #66250D", "X& c #65250D", "Y& c #3D1507", "Z& c #863213", "`& c #AC4119", " * c #B0461A", ".* c #863514", "+* c #53382D", "@* c #959595", "#* c #C6C6C9", "$* c #4D4F60", "%* c #7F808D", "&* c #404154", "** c #CECED3", "=* c #BEBFC5", "-* c #040100", ";* c #0E0500", ">* c #270E04", ",* c #382F2C", "'* c #6B4638", ")* c #64250D", "!* c #63240D", "~* c #62230D", "{* c #401608", "]* c #722A0F", "^* c #AB4018", "/* c #AD421A", "(* c #AF441A", "_* c #7E3B20", ":* c #D3D1D1", "<* c #ECECEC", "[* c #5F6170", "}* c #EEEEEF", "|* c #303246", "1* c #969696", "2* c #CCCCCC", "3* c #5B3324", "4* c #61230C", "5* c #60230C", "6* c #5F230C", "7* c #5E220C", "8* c #70290F", "9* c #AA3F18", "0* c #973916", "a* c #301006", "b* c #312117", "c* c #31302F", "d* c #CDCDCD", "e* c #8F909B", "f* c #1E1E1E", "g* c #D2D2D1", "h* c #696969", "i* c #583224", "j* c #5E220B", "k* c #5D220B", "l* c #5C210B", "m* c #6E280F", "n* c #A83E17", "o* c #A43E18", "p* c #561E0C", "q* c #2B0E05", "r* c #505162", "s* c #9F9FA9", "t* c #BCBDC3", "u* c #D6D6D6", "v* c #9D9D9D", "w* c #737373", "x* c #694F45", "y* c #5B200B", "z* c #5A200B", "A* c #591F0B", "B* c #581F0A", "C* c #381306", "D* c #6D270E", "E* c #A63D17", "F* c #993915", "G* c #240500", "H* c #AEAFB7", "I* c #F0F0F0", "J* c #575757", "K* c #CCCCD1", "L* c #D8D7D7", "M* c #A49590", "N* c #561E0A", "O* c #551D0A", "P* c #351206", "Q* c #6B260E", "R* c #A53C16", "S* c #903514", "T* c #8E8E96", "U* c #9B9BA0", "V* c #F5F5F5", "W* c #342721", "X* c #290E04", "Y* c #4F1B09", "Z* c #521C0A", "`* c #511C09", " = c #69250D", ".= c #A33B15", "+= c #822F11", "@= c #1D0200", "#= c #838383", "$= c #6F707E", "%= c #030000", "&= c #0B0400", "*= c #140701", "== c #3B1406", "-= c #4E1A09", ";= c #311005", ">= c #68240C", ",= c #802D10", "'= c #050100", ")= c #919191", "!= c #010000", "~= c #0A0300", "{= c #1D0A02", "]= c #270D04", "^= c #351005", "/= c #100000", "(= c #111111", "_= c #0E0501", ":= c #0E0400", "<= c #070000", "[= c #909090", " ", " . + @ ", " # $ % & * = - ; > , # ' ", " ) ! ~ ~ ~ ~ { ] ^ / ( _ : > < [ } | + 1 1 ' ' ", " 2 3 4 ~ ~ ~ ~ ~ 5 6 7 8 9 0 a b c d e f g h i j ~ ~ 4 3 k ", " l m ~ n o p q r ~ 4 s t u v w x y z A B C D E F G H 7 I J K L ", " M N O P Q [ ~ I R S T U V W w x y X Y Z ` ...+.@.#.$.%. ", " D &.*.N p r ~ I J =.-.;.>.,.'.).!.~.{.].^.Z /.(._.:...<. ", " [.}.|.1.2.3.~ [ 4.5.7 6.7.8.f 9.0.a.b.c.d.e.f.^.Z g.h.i.j.k. ", " l.m.n.o.p.q.r.s.t.u.v.R S w.L x.y.z.! ~ ~ A.~ B.C.D.E.F.G.H.I.J. ", " K.L.M.N.O.P.N 4 Q.R.S.T.U.V.W.X.Y.Z.`. +.+++ +~ @+y z #+$+%+&+*+J. ", " =+-+;+>+,+'+)+!+~+{+]+^+/+(+_+:+<+[+}+|+++1+2+3+4+5+w x 6+7+8+9+0+a+J. ", " l.b+c+d+e+f+>+g+h+i+j+k+l+r.m+n+l o+p+(+q+~ ~ r+A.s+j+t+u+v+w+x+y+z+A+B+J. ", " K.C+D+E+F+G+e+f+H+I+J+K+L+M+N+O+P+Q+X.R+S+T+U+N ~ V+W+X+Y+Z+`+ @.@+@@@#@$@%@ ' ' ' ", " &@*@=@D+-@;@F+G+>@,@'@)@!@~@{@]@^@/@Q+R+(@_@j+:@<@[@}@|@1@2@3@4@5@6@7@8@9@0@a@b@| | t.", " c@d@e@f@g@h@i@;@j@k@l@,@'@m@n@o@R+]@p@X.q@r@s@t@j+u@v@w@x@w+y@z@A@B@C@D@E@F@G@H@I@J@| ' ", " K@L@M@N@j+O@P@i@;@j@Q@R@,@'@m@S@T@U@V@W@X@Y@Z@s@`@ #.#+#@###$#%#&#*#=#-#;#>#F ,#'#R+x. ", " K@)#!#!#~#{#j+]#^#/#j@e+f+>+(#'+_#:#<#[#}#X@Y@|#1#2#3#4#5#6#7#8#9#0#a#b#c#d#e#L@ ", " K@f#g#!#!#!#h#i#j+j#k#d+e+f+l#(#m#n#:#o#p#1.q#r#s#t#u#v#w#x#6#y#z#A#B#C#B@D#E#J. ", " c@F#G#H#!#!#!#!#I#i#j+J#K#e+f+'@)@m#L#M#N#O#1.P#w+Q#R#S#T#w#U#,.V#W#X#&#A@Y#Z#J. ", " `# $.$+$@$!#!#!#!##$$$j+%$&$,@'@)@m#*$M#q#+#=$-$;$>$R#,$'$;#)$!$~${$]$&#A@^$J. ", " `#/$($_$:$<$[$!#!#!#!##$$$i+}$|$'@)@1$2$3$4$5$6$7$;$8$9$0$a$W.b$N c$d$%#&#e$J. ", " f$g$_+#.h$i$j$k$!#!#!#!#M@l$e@i+m$R@n$o$p$q$r$s$6$t$u$v$X.w$x$y$z$6#A$d$%#B$J. ", " C$D$0.N E$F$G$p+n+H$I$@$!#!#!#!#M@l$j+J$K$L$M$N$q$r$O$P$Q$R$S$T$U$~ V$x#6#A$d$W$($ ", " k . 4 ~ X$Y$Z$`$ %L .%+%@%[$!#!#!#!#~#j+#%$%%%M$&%*%P$=%,.-%F ;%D$>%,%w#x#'%)%!% ", " ~%{%]%++^%/%(%_%:%<%[%G#}%!#!#!#!#j+|%1%$%2%3%4%5%6%7%W#8%9%0%R#S#a%b%c%d% ", " e%f%g%~ h%i%j%:%k%l%m%n%o%p%q%!#!#j+r%s%t%u%v%M$w%x%y%8%z%A%B%>$C%D%E%F% ", " e%/$:%G%1+H%I%J%K%L%M%N%O%P%+%Q%R%S%T%U%U%1%V%%%M$N$W%X%Y%6$Z%`% &.&+& ", " K@@&#&J.$&%&&&N%*&=&-&;&>&,&'&)&.$!&~&{&]&^&1%V%%%M$N$W%/&(&_&:&<&[& ", " K@}&M%l%|&|&#&;&>&,&1&O%2&3&4&5&6&L@7&8&9&0&a&1%V%%%M$b&c&d&T.e&f&' ", " g&-&;&>&3&h&O%2&3&i&5&j&k&l&m&n&o&p&q&r&s&0&a&1%V%t&u&d&# E$~ R v&< S$w& ", " +%x&y&2&3&i&h&j&k&l&m&z&A&h&B&C&D&E&F&r&G&s&0&H&I&J&p+K&-.8 L&~ ~ ~ M&| 3 . $.1 ", " N&O&P&Q&k&R&S&T&A&h&B&C&U&V&W&X&Y&Z&`&F&r& *.*+*S&@*q+#*$*%*&***=*~ ~ ~ ~ ~ ~ S. ", " R+R+-*;*>*,*@*}+'*V&W&X&)*!*!*~*{*]*^*`&/*(*_*m+. :*<*[*%*&*=*&*L&}*|*~ ~ ~ ! ", " R+R+R+f$1*2*O+Z.3*!*~*4*5*6*7*Y&8*9*^*`&0*:%a*b*c*d*=*e*=*&*}*}*&***~ ~ 4 f ", " R+R+f*8 g*2*7.h*i*7*j*k*l*l*J.m*n*9*^*o*p*q*[&R+R+D$~ r*}*~ [*s*~ ~ ~ , ", " R+f*i%L&t*-.u*v*w*x*y*z*A*B*C*D*E*n*9*F*_@G*R+R+R+R+!$i%~ e*e*H*~ ~ I*J* ", " R+R+R+R$3.0.~ ~ }*&*K*-.u*L*M*-#N*O*O*P*Q*R*E*S*_@[& R+R+R+R+D$~ %*s*~ 4 $. ", " l | ~ ~ ~ ~ ~ ~ T*%*L&&*U*-.V*W*X*Y*Z*`*L@ =.=+=J.@= R+R+R+!$i%~ e&$. ", " i$#=I*~ e***~ =***=*[*H*$=8 K&%=&=*===-=;=>=,=L@'= R+R+R$)=w. ", " R+o+$.4 }*$=s*L&&*[*s*s*~ ! l R+R+!=~={=]=C*^=/= R+R+(= ", " R+R+l # $ ~ s*$=L&s*L&~ e&K R+R+R+R+_=:=<= ", " R+R+s.[=e&~ **e*~ ~ | ) R+R+R+ ", " R+R+i$3.! ~ d*4 , ' ", " R+R+s.# J ) o+ ", " R+R+X.'# ", " ", " "}; ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/tests/view.c���������������������������������������������������������������0000644�0001750�0001750�00000003270�13431646202�014370� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include <X11/Xlib.h> #include "wraster.h" #include <stdlib.h> #include <stdio.h> #include "tile.xpm" Display *dpy; Window win; RContext *ctx; RImage *img; Pixmap pix; int main(int argc, char **argv) { RContextAttributes attr; dpy = XOpenDisplay(""); if (!dpy) { puts("cant open display"); exit(1); } attr.flags = RC_RenderMode | RC_ColorsPerChannel; attr.render_mode = RDitheredRendering; attr.colors_per_channel = 4; ctx = RCreateContext(dpy, DefaultScreen(dpy), &attr); if (argc < 2) { printf("using default image as none was provided\n"); img = RGetImageFromXPMData(ctx, image_name); } else img = RLoadImage(ctx, argv[1], 0); if (!img) { puts(RMessageForError(RErrorCode)); exit(1); } if (argc > 2) { RImage *tmp = img; img = RScaleImage(tmp, tmp->width * atol(argv[2]), tmp->height * atol(argv[2])); /*img = RSmoothScaleImage(tmp, tmp->width*atol(argv[2]), tmp->height*atol(argv[2])); */ RReleaseImage(tmp); } #if 0 if (argc > 2) { img = RScaleImage(img, img->width * atof(argv[2]), img->height * atof(argv[2])); } { RImage *tmp = RCreateImage(200, 200, True); RColor col = { 0, 0, 255, 255 }; if (img->format == RRGBAFormat) puts("alpha"); else puts("no alpha"); RClearImage(tmp, &col); RCombineArea(tmp, img, 0, 0, 20, 20, 10, 10); img = tmp; } #endif if (!RConvertImage(ctx, img, &pix)) { puts(RMessageForError(RErrorCode)); exit(1); } printf("size is %ix%i\n", img->width, img->height); win = XCreateSimpleWindow(dpy, DefaultRootWindow(dpy), 10, 10, img->width, img->height, 0, 0, 0); XSetWindowBackgroundPixmap(dpy, win, pix); XClearWindow(dpy, win); XMapRaised(dpy, win); XFlush(dpy); getchar(); return 0; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/tests/tile.xpm�������������������������������������������������������������0000644�0001750�0001750�00000012302�13431646202�014731� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char *image_name[] = { /* width height num_colors chars_per_pixel */ " 64 64 54 1", /* colors */ ". c #ffffff", "# c #000000", "a c #516161", "b c #a2a2b2", "c c #a2a2a2", "d c #a292b2", "e c #92a2a2", "f c #a292a2", "g c #9292a2", "h c #929292", "i c #9282a2", "j c #829292", "k c #928292", "l c #828292", "m c #828282", "n c #827192", "o c #615161", "p c #92a2b2", "q c #9292b2", "r c #8292a2", "s c #8282a2", "t c #718292", "u c #718282", "v c #515161", "w c #515151", "x c #827182", "y c #415151", "z c #514151", "A c #717192", "B c #717182", "C c #717171", "D c #414151", "E c #716182", "F c #617182", "G c #415141", "H c #414141", "I c #617171", "J c #413041", "K c #304141", "L c #716171", "M c #616171", "N c #616182", "O c #303030", "P c #616161", "Q c #303041", "R c #516171", "S c #304130", "T c #615171", "U c #203030", "V c #302030", "W c #515171", "X c #202030", "Y c #202020", "Z c #413051", /* pixels */ "...............................................................#", "..............................................................a#", "..bcbcdcdcdcdefgdefgfgfgggfgghihihihijijijklkjklklkllmlllmnmnmo#", "..bbebpbebebededeqegegegegegrgggjgjgjijijsjijsjljljllllltltlula#", "..bcdcbcfcdefefefgfefgfhfgghghghihijkhijkjkjklklkllmlmlmnmnmnmv#", "..pbbbededededeqefeqegggggggggjgrgjijijijijsjllljllllltlllununw#", "..dcdcdcdefgfefgfgfgghggghihihihijkjijklkjklllkllmlllmnmnunmnuv#", "..ebebebededeqegegegggegrgrgjgjgjijijsjkjsjljljlllllultlunulunw#", "..dcfcdefefefgfgfgfhfhghihghihijkjijkjkjklklkllmlmlmnmnmnmnuxuv#", "..ededededeqefegegggggggggjgjgjijijijijsjllljllllltlllununununy#", "..fcdefgfefgfgfgghggghihihihijkjijklklklllkllmnmlmnmnununuxunuz#", "..ebeqedeqegegegggggrgrgjgjgjijijsjkjsjljljlllllululununununuAy#", "..defefefgfgfgghfhghihghihijkjijkjkjklklkllmlmlmnmnmnmnuxuxuxBz#", "..ededeqegggegggggrgggjijgjijijijijsjllllllllltltlununununuAuBy#", "..fgfefgfgfgghggghihihihijklijklklklllkllmnmnmnmnununuxunuxBxBz#", "..efeqegegegggggjgrgjgjgjijijsjljsjljljltlllululununununuAuBuBy#", "..fefgfgfgghghghihghihijkjkjklkjklkmkllmlmlmnmnuxmnuxuxuxBxBxBz#", "..eqegggegggggrgggjijijijijijkjsjlllllllllultlununununuAuBBAuBy#", "..fgfgfgghghghihihihijklijklklkllllllmnmnmnmnununuxBxuxBBBxBBBz#", "..egegegggggjgrgjgjgjijijsjljljllljltltlululununununuAuBuBuBBBy#", "..fgfgghghghihihihijkjkjklklklkmkllmnmlmnmnuxunuxuxuxBxBxBBCBCz#", "..ggegggggjgggjijijijijsjkjsjlllllllllultlununununuAuBBBuBBBBBD#", "..fgghghghihijihijklijklklkllllllmnmnmnmnununuxBxBxBBBxBBCEBBCz#", "..egggggjgrgjijgjsjijsjljljllllltltlululununuAunuAuBuBuBBBBBFBG#", "..ghghghihihkhijkjkjklklkllmkllmnmlmnmnuxunuxuxuxBxBxBBCBCBCECD#", "..ggggjgrgjijijijijsjllsjllllltllluntlununununuAuBBBBBBBBBFBFBH#", "..ihghihijijijklkjklklkllmlllmnmnmnmnununuxBxBxBBBxBBCEBECECEIJ#", "..ggjgjgjijijsjijsjljljllllltltlululununuAuBuAuBuBuBFBBBIBFBIEH#", "..ghihijkhijkjkjklklkllmlmlmnmlmnmnuxunuxBxuxBxBxBBCBCBCECEIECH#", "..jgrgjijijijijsjllljllllltlllununununununuAuBBBBBBBBBFBFBIEIEK#", "..ihijkjijklkjklklkllmlllmnmnmnmnununuxBxBxBBBBBBCEBECECEIEIEIJ#", "..jgjijijsjijsjljljllllltltlululununuAuBuBuBBBuBFBFBIBIBIEIBIEK#", "..ijkjijkjkjklklkllmlmlmnmnmnmnuxunuxBxBxBxBxBBCECBCECEIECEILIJ#", "..jijijijijsjllljllllltlllununununuAunuAuBBBBBBBBBFBFBIEIEIEIEK#", "..kjijklkjklllkllmlllmnmnunmnuxunuxBxBxBBBBBBCECECECEIEIEILMEMJ#", "..jijsjkjsjljljlllllultlunulununuAuBuBuBBBBBFBFBIBIBIEIBINIEINK#", "..ijkjkjklklkllmlmlmnmnmnmnuxuxuxBxBxBBBxBBCECBCECEIECEILILILMJ#", "..jijijsjllljllllltltlununununuAuBBAuBBBBBFBBBIEFBIEIEIEIEINIMK#", "..klklklllkllmnmlmnmnununuxunuxBxBxBBBBBBCECECECEIEIEILMEMLMMMJ#", "..jkjsjljljlllllululununununuAuBuBuBBBBBFBFBIBIBIEIBINININIMIMK#", "..kjklklkllmlmlmnmnunmnuxuxuxBxBxBBCBCBCECBCECEIECEILMLILMLMLMJ#", "..jsjlllllllllultlununununuAuBBAuBBBBBFBBBIEIEIEIEIEIEINIMMMMMO#", "..klllkllmnmnmnmnununuxunuxBxBxBBBBBBCECECECEIEIEILMLMLMMMMMMPQ#", "..jllljltlllululununununuAuBuBuBBBBBFBFBIBIBIEIEINININIMMMIMRMS#", "..kmkllmnmlmnmnuxunuxuxuxBxBxBBCBCBCECECECEIECEILMLMLMLMLMMPTPQ#", "..llllllllultlununununuAuBBAuBBBBBFBBBIEIEIEIEINIEINIMMMMMMMMMU#", "..lllmnmnmnmnununuxBxuxBBBxBBCBBBCECEIECEIEIEILMLMLMMMMMMPTPTPV#", "..lltltlululununununuAuBuBuBBBBBFBFBIEIBIEIEINININIMMMMMRMRMaMU#", "..lmnmlmnmnuxunuxuxuxBxBxBBCBCBCECECECEILILILMLMLMMMLMMPTPMPTPO#", "..llllultlununununuAuBBBuBBBBBFBFBIEIEIEIEININMNIMMMMMRMMMRTRMU#", "..nmnmnmnununuxBxBxBBBxBBCEBBCECEIEIEIEIEILMLMLMMMMMMPTPTPTPTaV#", "..tlululununuAunuAuBuBuBBBBBFBFBIEIBIEIEINIMIMIMMMMMRMRMaMaMaTU#", "..lmnmnuxunuxBxuxBxBxBBCBCBCECEIECEILILILMLMLMMMMMMPTPMPTPTaTPV#", "..unulununununuAuBBBBBBBBBFBFBIEIEIEIEININMNIMMMMMRMMMRTRMaTaTU#", "..nmnununuxBxBxBBBxBBCEBECECEIEIEILIEILMLMLMMMMMMPTPTPTPTaTaTaV#", "..ulununuAuBuAuBBBuBFBBBIBFBIEIBIEIEINIMIMIMMMMMRMRMaMaMaTaTaWU#", "..nuxunuxBxBxBxBxBBCECBCECEIECEILILILMLMLMMMMMMPTPTPTPTaTPTaovV#", "..ununununuAuBBBBBBBBBFBFBIEIEIEIEINIMMNIMMMMMRMMMaTRMaTaTaWaTU#", "..nunuxBxBxBBBBBBCECECECEIEIEILMEILMMMLMMMMMMPTPTaTPTaTaTaovovV#", "..unuAuBuBuBBBBBFBFBIBIBIEIBIEIEINIMIMIMMMMMRMRMaTaMaTaTaWaWaWU#", "..nuxBxBxBxBxBBCECBCECEIECEILILILMLMLMMPMMMPTPTPTPTaTaTaovovovX#", "..uAunuAuBBBBBBBBBIBFBIEIEIEIEINIMMMIMMMMMRMRMaTRTaTaTaWaWvWavY#", "..owvwvwvwzwzyzyzGzDzHzHDHZHDHJHJKJKJSJOQOQOQOVOVOVOVUVXVYVYXYX#", ".###############################################################" }; ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/tests/testgrad.c�����������������������������������������������������������0000644�0001750�0001750�00000007460�13431646202�015240� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include <X11/Xlib.h> #include "wraster.h" #include <stdio.h> #include <stdlib.h> #include <string.h> Display *dpy; Window win; RContext *ctx; RImage *imgh, *imgv, *imgd; Pixmap pix; char *ProgName; void print_help() { printf("usage: %s [-options] color1 [color2 ...]\n", ProgName); puts("options:"); puts(" -m match colors"); puts(" -d dither colors (default)"); puts(" -c <cpc> colors per channel to use"); puts(" -v <vis-id> visual id to use"); } int main(int argc, char **argv) { RContextAttributes attr; RColor **colors = NULL; int i, rmode = RDitheredRendering, ncolors = 0, cpc = 4; char **color_name; XColor color; XSetWindowAttributes val; int visualID = -1; ProgName = strrchr(argv[0], '/'); if (!ProgName) ProgName = argv[0]; else ProgName++; color_name = (char **)malloc(sizeof(char *) * argc); if (color_name == NULL) { fprintf(stderr, "Cannot allocate memory!\n"); exit(1); } if (argc > 1) { for (i = 1; i < argc; i++) { if (strcmp(argv[i], "-m") == 0) { rmode = RBestMatchRendering; } else if (strcmp(argv[i], "-d") == 0) { rmode = RDitheredRendering; } else if (strcmp(argv[i], "-c") == 0) { i++; if (i >= argc) { fprintf(stderr, "too few arguments for %s\n", argv[i - 1]); exit(0); } if (sscanf(argv[i], "%i", &cpc) != 1) { fprintf(stderr, "bad value for colors per channel: \"%s\"\n", argv[i]); exit(0); } } else if (strcmp(argv[i], "-v") == 0) { i++; if (i >= argc) { fprintf(stderr, "too few arguments for %s\n", argv[i - 1]); exit(0); } if (sscanf(argv[i], "%i", &visualID) != 1) { fprintf(stderr, "bad value for visual ID: \"%s\"\n", argv[i]); exit(0); } } else if (argv[i][0] != '-') { color_name[ncolors++] = argv[i]; } else { print_help(); exit(1); } } } if (ncolors == 0) { print_help(); exit(1); } dpy = XOpenDisplay(""); if (!dpy) { puts("cant open display"); exit(1); } attr.flags = RC_RenderMode | RC_ColorsPerChannel; attr.render_mode = rmode; attr.colors_per_channel = cpc; if (visualID >= 0) { attr.flags |= RC_VisualID; attr.visualid = visualID; } ctx = RCreateContext(dpy, DefaultScreen(dpy), &attr); if (!ctx) { printf("could not initialize graphics library context: %s\n", RMessageForError(RErrorCode)); exit(1); } colors = malloc(sizeof(RColor *) * (ncolors + 1)); for (i = 0; i < ncolors; i++) { if (!XParseColor(dpy, ctx->cmap, color_name[i], &color)) { printf("could not parse color \"%s\"\n", color_name[i]); exit(1); } else { colors[i] = malloc(sizeof(RColor)); colors[i]->red = color.red >> 8; colors[i]->green = color.green >> 8; colors[i]->blue = color.blue >> 8; printf("0x%02x%02x%02x\n", colors[i]->red, colors[i]->green, colors[i]->blue); } } colors[i] = NULL; val.background_pixel = ctx->black; val.colormap = ctx->cmap; val.backing_store = Always; win = XCreateWindow(dpy, DefaultRootWindow(dpy), 10, 10, 750, 250, 0, ctx->depth, InputOutput, ctx->visual, CWColormap | CWBackPixel | CWBackingStore, &val); XMapRaised(dpy, win); XFlush(dpy); imgh = RRenderMultiGradient(250, 250, colors, RGRD_HORIZONTAL); imgv = RRenderMultiGradient(250, 250, colors, RGRD_VERTICAL); imgd = RRenderMultiGradient(250, 250, colors, RGRD_DIAGONAL); RConvertImage(ctx, imgh, &pix); XCopyArea(dpy, pix, win, ctx->copy_gc, 0, 0, 250, 250, 0, 0); RReleaseImage(imgh); RConvertImage(ctx, imgv, &pix); XCopyArea(dpy, pix, win, ctx->copy_gc, 0, 0, 250, 250, 250, 0); RReleaseImage(imgv); RConvertImage(ctx, imgd, &pix); XCopyArea(dpy, pix, win, ctx->copy_gc, 0, 0, 250, 250, 500, 0); RReleaseImage(imgd); XFlush(dpy); getchar(); free(color_name); for (i = 0; i < ncolors + 1; i++) free(colors[i]); free(colors); RDestroyContext(ctx); RShutdown(); XCloseDisplay(dpy); return 0; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/tests/.deps/���������������������������������������������������������������0000755�0001750�0001750�00000000000�13642360104�014337� 5����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/tests/.deps/view.Po��������������������������������������������������������0000644�0001750�0001750�00000000010�13642360104�015520� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# dummy ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/tests/.deps/testgrad.Po����������������������������������������������������0000644�0001750�0001750�00000000010�13642360104�016363� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# dummy ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/tests/.deps/testdraw.Po����������������������������������������������������0000644�0001750�0001750�00000000010�13642360104�016403� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# dummy ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/tests/.deps/testrot.Po�����������������������������������������������������0000644�0001750�0001750�00000000010�13642360104�016252� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# dummy ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/tests/testrot.c������������������������������������������������������������0000644�0001750�0001750�00000002345�13431646202�015124� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include <X11/Xlib.h> #include "wraster.h" #include <stdlib.h> #include <stdio.h> #include <unistd.h> #include "tile.xpm" Display *dpy; Window win; RContext *ctx; RImage *img; Pixmap pix; #define MAX(a,b) (a)>(b) ? (a) : (b) int main(int argc, char **argv) { RContextAttributes attr; float a; dpy = XOpenDisplay(""); if (!dpy) { puts("cant open display"); exit(1); } attr.flags = RC_RenderMode | RC_ColorsPerChannel; attr.render_mode = RDitheredRendering; attr.colors_per_channel = 4; ctx = RCreateContext(dpy, DefaultScreen(dpy), &attr); if (argc < 2) img = RGetImageFromXPMData(ctx, image_name); else img = RLoadImage(ctx, argv[1], 0); if (!img) { puts(RMessageForError(RErrorCode)); exit(1); } win = XCreateSimpleWindow(dpy, DefaultRootWindow(dpy), 10, 10, MAX(img->width, img->height), MAX(img->height, img->width), 0, 0, 0); XMapRaised(dpy, win); XFlush(dpy); a = 0; while (1) { RImage *tmp; a = a + 1.0; tmp = RRotateImage(img, a); if (!RConvertImage(ctx, tmp, &pix)) { puts(RMessageForError(RErrorCode)); exit(1); } RReleaseImage(tmp); XSetWindowBackgroundPixmap(dpy, win, pix); XFreePixmap(dpy, pix); XClearWindow(dpy, win); XSync(dpy, 0); usleep(50000); } exit(0); } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/tests/Makefile�������������������������������������������������������������0000644�0001750�0001750�00000051202�13642360103�014705� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.16.1 from Makefile.am. # wrlib/tests/Makefile. Generated from Makefile.in by configure. # Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/WindowMaker pkgincludedir = $(includedir)/WindowMaker pkglibdir = $(libdir)/WindowMaker pkglibexecdir = $(libexecdir)/WindowMaker am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = x86_64-pc-linux-gnu host_triplet = x86_64-pc-linux-gnu noinst_PROGRAMS = testdraw$(EXEEXT) testgrad$(EXEEXT) testrot$(EXEEXT) \ view$(EXEEXT) subdir = wrlib/tests ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ $(top_srcdir)/m4/ax_pthread.m4 \ $(top_srcdir)/m4/ld-version-script.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/windowmaker.m4 \ $(top_srcdir)/m4/wm_attributes.m4 \ $(top_srcdir)/m4/wm_cflags_check.m4 \ $(top_srcdir)/m4/wm_i18n.m4 \ $(top_srcdir)/m4/wm_imgfmt_check.m4 \ $(top_srcdir)/m4/wm_libexif.m4 $(top_srcdir)/m4/wm_libmath.m4 \ $(top_srcdir)/m4/wm_prog_cc_c11.m4 \ $(top_srcdir)/m4/wm_xext_check.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) am_testdraw_OBJECTS = testdraw.$(OBJEXT) testdraw_OBJECTS = $(am_testdraw_OBJECTS) am__DEPENDENCIES_1 = $(top_builddir)/wrlib/libwraster.la testdraw_DEPENDENCIES = $(am__DEPENDENCIES_1) AM_V_lt = $(am__v_lt_$(V)) am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) am__v_lt_0 = --silent am__v_lt_1 = am_testgrad_OBJECTS = testgrad.$(OBJEXT) testgrad_OBJECTS = $(am_testgrad_OBJECTS) testgrad_DEPENDENCIES = $(am__DEPENDENCIES_1) am_testrot_OBJECTS = testrot.$(OBJEXT) testrot_OBJECTS = $(am_testrot_OBJECTS) testrot_DEPENDENCIES = $(am__DEPENDENCIES_1) am_view_OBJECTS = view.$(OBJEXT) view_OBJECTS = $(am_view_OBJECTS) view_DEPENDENCIES = $(am__DEPENDENCIES_1) AM_V_P = $(am__v_P_$(V)) am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I. -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/testdraw.Po ./$(DEPDIR)/testgrad.Po \ ./$(DEPDIR)/testrot.Po ./$(DEPDIR)/view.Po am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_$(V)) am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_$(V)) am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(testdraw_SOURCES) $(testgrad_SOURCES) $(testrot_SOURCES) \ $(view_SOURCES) DIST_SOURCES = $(testdraw_SOURCES) $(testgrad_SOURCES) \ $(testrot_SOURCES) $(view_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = ${SHELL} /home/profzoom/src/wmaker/wmaker-crm/missing aclocal-1.16 AMTAR = $${TAR-tar} AM_DEFAULT_VERBOSITY = 1 AR = ar AUTOCONF = ${SHELL} /home/profzoom/src/wmaker/wmaker-crm/missing autoconf AUTOHEADER = ${SHELL} /home/profzoom/src/wmaker/wmaker-crm/missing autoheader AUTOMAKE = ${SHELL} /home/profzoom/src/wmaker/wmaker-crm/missing automake-1.16 AWK = gawk CC = gcc CCDEPMODE = depmode=gcc3 CFLAGS = -g -O2 -Wall -Wextra -Wno-sign-compare -Werror=trampolines -Wno-deprecated -Wno-deprecated-declarations CPP = gcc -E CPPFLAGS = -DNDEBUG -D_XOPEN_SOURCE=600 -D_GNU_SOURCE CYGPATH_W = echo DEFS = -DHAVE_CONFIG_H DEPDIR = .deps DLLTOOL = false DSYMUTIL = DUMPBIN = ECHO_C = ECHO_N = -n ECHO_T = EGREP = /bin/grep -E EXEEXT = FCLIBS = -lfontconfig -lfreetype FGREP = /bin/grep -F GFXLIBS = -lXpm -lpng -ljpeg -lgif -ltiff GREP = /bin/grep HEADER_SEARCH_PATH = -I${includedir} ICONEXT = tiff INSTALL = /usr/bin/install -c INSTALL_DATA = ${INSTALL} -m 644 INSTALL_PROGRAM = ${INSTALL} INSTALL_SCRIPT = ${INSTALL} INSTALL_STRIP_PROGRAM = $(install_sh) -c -s INTLIBS = LD = /usr/bin/ld -m elf_x86_64 LDFLAGS = LIBBSD = LIBEXIF = LIBM = -lm LIBOBJS = LIBRARY_SEARCH_PATH = -L${libdir} LIBS = LIBTOOL = $(SHELL) $(top_builddir)/libtool LIBXINERAMA = -lXinerama LIBXMU = -lXmu LIBXRANDR = LINGUAS = LIPO = LN_S = ln -s LTLIBOBJS = LT_SYS_LIBRARY_PATH = MAGICKFLAGS = MAGICKLIBS = MAKEINFO = ${SHELL} /home/profzoom/src/wmaker/wmaker-crm/missing makeinfo MANIFEST_TOOL = : MANLANGDIRS = MKDIR_P = /bin/mkdir -p MSGFMT = NM = /usr/bin/nm -B NMEDIT = OBJDUMP = objdump OBJEXT = o OTOOL = OTOOL64 = PACKAGE = WindowMaker PACKAGE_BUGREPORT = wmaker-dev@googlegroups.com PACKAGE_NAME = WindowMaker PACKAGE_STRING = WindowMaker 0.95.9 PACKAGE_TARNAME = WindowMaker PACKAGE_URL = http://www.windowmaker.org/ PACKAGE_VERSION = 0.95.9 PANGOLIBS = PATH_SEPARATOR = : PKG_CONFIG = /usr/bin/pkg-config PKG_CONFIG_LIBDIR = PKG_CONFIG_PATH = PTHREAD_CC = gcc PTHREAD_CFLAGS = -pthread PTHREAD_LIBS = RANLIB = ranlib SED = /bin/sed SET_MAKE = SHELL = /bin/bash STRIP = strip UTILMOFILES = VERSION = 0.95.9 WINGSMOFILES = WINGS_VERSION = 4:0:1 WMAKERMOFILES = WPREFSMOFILES = WRASTER_VERSION = 6:0:0 WUTIL_VERSION = 5:0:0 XCFLAGS = XFTCONFIG = /usr/bin/pkg-config xft XFTFLAGS = -I/usr/include/uuid -I/usr/include/freetype2 -I/usr/include/libpng16 XFTLIBS = -lXft XGETTEXT = xgettext XLFLAGS = XLIBS = -lX11 -lXext XMKMF = X_CFLAGS = X_EXTRA_LIBS = X_LIBRARY_PATH = X_LIBS = X_PRE_LIBS = -lSM -lICE abs_builddir = /home/profzoom/src/wmaker/wmaker-crm/wrlib/tests abs_srcdir = /home/profzoom/src/wmaker/wmaker-crm/wrlib/tests abs_top_builddir = /home/profzoom/src/wmaker/wmaker-crm abs_top_srcdir = /home/profzoom/src/wmaker/wmaker-crm ac_ct_AR = ar ac_ct_CC = gcc ac_ct_DUMPBIN = am__include = include am__leading_dot = . am__quote = am__tar = $${TAR-tar} chof - "$$tardir" am__untar = $${TAR-tar} xf - ax_pthread_config = bindir = ${exec_prefix}/bin build = x86_64-pc-linux-gnu build_alias = build_cpu = x86_64 build_os = linux-gnu build_vendor = pc builddir = . datadir = ${datarootdir} datarootdir = ${prefix}/share defsdatadir = ${sysconfdir}/WindowMaker docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} dvidir = ${docdir} exec_prefix = ${prefix} host = x86_64-pc-linux-gnu host_alias = host_cpu = x86_64 host_os = linux-gnu host_vendor = pc htmldir = ${docdir} inc_search_path = -I${includedir} includedir = ${prefix}/include infodir = ${datarootdir}/info install_sh = ${SHELL} /home/profzoom/src/wmaker/wmaker-crm/install-sh lcov_output_directory = lib_search_path = -L${libdir} libdir = ${exec_prefix}/lib libexecdir = ${exec_prefix}/libexec localedir = ${datarootdir}/locale localstatedir = ${prefix}/var mandir = ${datarootdir}/man mkdir_p = $(MKDIR_P) oldincludedir = /usr/include pdfdir = ${docdir} pixmapdir = ${datadir}/pixmaps prefix = /usr/local program_transform_name = s,x,x, psdir = ${docdir} runstatedir = ${localstatedir}/run sbindir = ${exec_prefix}/sbin sharedstatedir = ${prefix}/com srcdir = . sysconfdir = ${prefix}/etc target_alias = top_build_prefix = ../../ top_builddir = ../.. top_srcdir = ../.. wprefs_bindir = ${exec_prefix}/bin wprefs_datadir = ${datarootdir}/WPrefs AUTOMAKE_OPTIONS = EXTRA_DIST = test.png tile.xpm ballot_box.xpm AM_CPPFLAGS = -I$(srcdir)/.. $(DFLAGS) -I${includedir} LIBLIST = $(top_builddir)/wrlib/libwraster.la -lX11 -lXext testdraw_SOURCES = testdraw.c testdraw_LDADD = $(LIBLIST) testgrad_SOURCES = testgrad.c testgrad_LDADD = $(LIBLIST) testrot_SOURCES = testrot.c testrot_LDADD = $(LIBLIST) view_SOURCES = view.c view_LDADD = $(LIBLIST) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu wrlib/tests/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu wrlib/tests/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list testdraw$(EXEEXT): $(testdraw_OBJECTS) $(testdraw_DEPENDENCIES) $(EXTRA_testdraw_DEPENDENCIES) @rm -f testdraw$(EXEEXT) $(AM_V_CCLD)$(LINK) $(testdraw_OBJECTS) $(testdraw_LDADD) $(LIBS) testgrad$(EXEEXT): $(testgrad_OBJECTS) $(testgrad_DEPENDENCIES) $(EXTRA_testgrad_DEPENDENCIES) @rm -f testgrad$(EXEEXT) $(AM_V_CCLD)$(LINK) $(testgrad_OBJECTS) $(testgrad_LDADD) $(LIBS) testrot$(EXEEXT): $(testrot_OBJECTS) $(testrot_DEPENDENCIES) $(EXTRA_testrot_DEPENDENCIES) @rm -f testrot$(EXEEXT) $(AM_V_CCLD)$(LINK) $(testrot_OBJECTS) $(testrot_LDADD) $(LIBS) view$(EXEEXT): $(view_OBJECTS) $(view_DEPENDENCIES) $(EXTRA_view_DEPENDENCIES) @rm -f view$(EXEEXT) $(AM_V_CCLD)$(LINK) $(view_OBJECTS) $(view_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c include ./$(DEPDIR)/testdraw.Po # am--include-marker include ./$(DEPDIR)/testgrad.Po # am--include-marker include ./$(DEPDIR)/testrot.Po # am--include-marker include ./$(DEPDIR)/view.Po # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @echo '# dummy' >$@-t && $(am__mv) $@-t $@ am--depfiles: $(am__depfiles_remade) .c.o: $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po # $(AM_V_CC)source='$<' object='$@' libtool=no \ # DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ # $(AM_V_CC_no)$(COMPILE) -c -o $@ $< .c.obj: $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po # $(AM_V_CC)source='$<' object='$@' libtool=no \ # DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ # $(AM_V_CC_no)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo # $(AM_V_CC)source='$<' object='$@' libtool=yes \ # DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ # $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -f ./$(DEPDIR)/testdraw.Po -rm -f ./$(DEPDIR)/testgrad.Po -rm -f ./$(DEPDIR)/testrot.Po -rm -f ./$(DEPDIR)/view.Po -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/testdraw.Po -rm -f ./$(DEPDIR)/testgrad.Po -rm -f ./$(DEPDIR)/testrot.Po -rm -f ./$(DEPDIR)/view.Po -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \ ctags ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # 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. .NOEXPORT: ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/tests/testdraw.c�����������������������������������������������������������0000644�0001750�0001750�00000037700�13431646202�015260� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include <X11/Xlib.h> #include "wraster.h" #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/time.h> #include <time.h> Display *dpy; RContext *ctx; char *ProgName; void testDraw() { RImage *img, *tile, *icon, *tmp; RColor color, from, to; RColor cdelta; RSegment segs[20]; int i, x, y; XSetWindowAttributes val; Pixmap pix, back; Window win; val.background_pixel = ctx->black; val.colormap = ctx->cmap; win = XCreateWindow(dpy, DefaultRootWindow(dpy), 10, 10, 128, 256, 0, ctx->depth, InputOutput, ctx->visual, CWColormap | CWBackPixel, &val); back = XCreatePixmap(ctx->dpy, ctx->drawable, 128, 256, ctx->depth); /* Dark blue tile gradient */ from.red = 0x28; from.green = 0x45; from.blue = 0x69; from.alpha = 0xff; to.red = 0x08; to.green = 0x24; to.blue = 0x20; to.alpha = 0xff; /* Standard gray tile gradient */ /*from.red = 0xa6; from.green = 0xa6; from.blue = 0xb6; from.alpha = 0xff; to.red = 0x51; to.green = 0x55; to.blue = 0x61; to.alpha = 0xff; */ /* Make the tile, and put it as a sample in the first place */ tile = RRenderGradient(64, 64, &from, &to, RGRD_DIAGONAL); img = RCloneImage(tile); RConvertImage(ctx, img, &pix); XCopyArea(dpy, pix, back, ctx->copy_gc, 0, 0, 64, 64, 0, 0); /* Read the image, and combine it with the tile. Put it as a sample * in the second slot, and also save a copy for later use. */ icon = RLoadImage(ctx, "ballot_box.xpm", 0); if (!icon) { puts(RMessageForError(RErrorCode)); exit(1); } RCombineArea(img, icon, 0, 0, icon->width, icon->height, 8, 8); RReleaseImage(icon); tmp = img; RConvertImage(ctx, img, &pix); XCopyArea(dpy, pix, back, ctx->copy_gc, 0, 0, 64, 64, 64, 0); img = RCloneImage(tile); /* Draw random pixels on image */ for (i = 0; i < 200; i++) { color.red = rand() % 256; color.green = rand() % 256; color.blue = rand() % 256; color.alpha = 255; x = rand() % 64; y = rand() % 64; RPutPixel(img, x, y, &color); } RConvertImage(ctx, img, &pix); XCopyArea(dpy, pix, back, ctx->copy_gc, 0, 0, 64, 64, 0, 64); RReleaseImage(img); img = RCloneImage(tile); /* Alter random pixels in image with the same amount for r/g/b */ for (i = 0; i < 200; i++) { cdelta.red = cdelta.green = cdelta.blue = rand() % 511 - 255; cdelta.alpha = 0; x = rand() % 64; y = rand() % 64; ROperatePixel(img, RAddOperation, x, y, &cdelta); } RConvertImage(ctx, img, &pix); XCopyArea(dpy, pix, back, ctx->copy_gc, 0, 0, 64, 64, 64, 64); RReleaseImage(img); img = RCloneImage(tile); /* Draw lines in all directions to test different slopes */ color.red = 0xff; color.green = 0x7d; color.blue = 0x52; color.alpha = 0xff; for (i = 0; i < 16; i++) segs[i].x1 = segs[i].y1 = 31; segs[6].x2 = segs[7].x2 = segs[8].x2 = segs[9].x2 = segs[10].x2 = 0; segs[2].y2 = segs[3].y2 = segs[4].y2 = segs[5].y2 = segs[6].y2 = 0; segs[5].x2 = segs[11].x2 = 16; segs[1].y2 = segs[7].y2 = 16; segs[4].x2 = segs[12].x2 = 31; segs[0].y2 = segs[8].y2 = 31; segs[3].x2 = segs[13].x2 = 46; segs[9].y2 = segs[15].y2 = 46; segs[0].x2 = segs[1].x2 = segs[2].x2 = segs[14].x2 = segs[15].x2 = 62; segs[10].y2 = segs[11].y2 = segs[12].y2 = segs[13].y2 = segs[14].y2 = 62; RDrawSegments(img, segs, 9, &color); /* Also test how alpha channel behaves when drawing lines */ color.alpha = 0x80; RDrawSegments(img, &segs[9], 7, &color); RConvertImage(ctx, img, &pix); XCopyArea(dpy, pix, back, ctx->copy_gc, 0, 0, 64, 64, 0, 128); RReleaseImage(img); img = RCloneImage(tile); /* Alter lines in all directions (test different slopes) */ cdelta.red = cdelta.green = cdelta.blue = 80; cdelta.alpha = 0; ROperateSegments(img, RAddOperation, segs, 16, &cdelta); RConvertImage(ctx, img, &pix); XCopyArea(dpy, pix, back, ctx->copy_gc, 0, 0, 64, 64, 64, 128); RReleaseImage(img); /* Create a bevel around the icon, and save it for a later use */ img = tmp; cdelta.red = cdelta.green = cdelta.blue = 80; cdelta.alpha = 0; ROperateLine(img, RAddOperation, 8, 8, 56, 8, &cdelta); ROperateLine(img, RAddOperation, 8, 9, 8, 56, &cdelta); cdelta.red = cdelta.green = cdelta.blue = 40; cdelta.alpha = 0; ROperateLine(img, RSubtractOperation, 8, 56, 56, 56, &cdelta); ROperateLine(img, RSubtractOperation, 56, 8, 56, 55, &cdelta); RReleaseImage(tile); tmp = RCloneImage(img); /* Draw some solid lines over the icon */ color.red = 0xff; color.green = 0x7d; color.blue = 0x52; color.alpha = 0xff; for (i = 16; i < 24; i++) { RDrawLine(img, 9, i, 55, i, &color); } /* Also try some lines with alpha over the icon */ color.alpha = 0x80; for (i = 40; i < 48; i++) { RDrawLine(img, 9, i, 55, i, &color); } RConvertImage(ctx, img, &pix); XCopyArea(dpy, pix, back, ctx->copy_gc, 0, 0, 64, 64, 0, 192); RReleaseImage(img); /* Restore the image with the icon, and alter some lines */ img = tmp; cdelta.red = cdelta.green = cdelta.blue = 80; cdelta.alpha = 0; for (i = 16; i < 24; i++) { ROperateLine(img, RSubtractOperation, 9, i, 55, i, &cdelta); } cdelta.red = cdelta.green = cdelta.blue = 80; for (i = 40; i < 48; i++) { ROperateLine(img, RAddOperation, 9, i, 55, i, &cdelta); } RConvertImage(ctx, img, &pix); XCopyArea(dpy, pix, back, ctx->copy_gc, 0, 0, 64, 64, 64, 192); XSetWindowBackgroundPixmap(dpy, win, back); XMapRaised(dpy, win); XClearWindow(dpy, win); XFlush(dpy); } void testBevel() { RImage *img, *tile; RColor color, from, to; XSetWindowAttributes val; Pixmap pix, back; Window win; val.background_pixel = ctx->black; val.colormap = ctx->cmap; win = XCreateWindow(dpy, DefaultRootWindow(dpy), 10, 10, 140, 140, 0, ctx->depth, InputOutput, ctx->visual, CWColormap | CWBackPixel, &val); back = XCreatePixmap(ctx->dpy, ctx->drawable, 140, 140, ctx->depth); /* Standard gray tile gradient */ from.red = 0xa6; from.green = 0xa6; from.blue = 0xb6; from.alpha = 0xff; to.red = 0x51; to.green = 0x55; to.blue = 0x61; to.alpha = 0xff; /* Dark blue tile gradient */ /*from.red = 0x28; from.green = 0x45; from.blue = 0x69; from.alpha = 0xff; to.red = 0x08; to.green = 0x24; to.blue = 0x20; to.alpha = 0xff; */ /* Create Background */ img = RCreateImage(140, 140, True); color.red = 0x28; color.green = 0x45; color.blue = 0x69; color.alpha = 0xff; RClearImage(img, &color); RConvertImage(ctx, img, &pix); XCopyArea(dpy, pix, back, ctx->copy_gc, 0, 0, 140, 140, 0, 0); RReleaseImage(img); tile = RRenderGradient(64, 64, &from, &to, RGRD_DIAGONAL); img = RCloneImage(tile); RBevelImage(img, RBEV_SUNKEN); RConvertImage(ctx, img, &pix); XCopyArea(dpy, pix, back, ctx->copy_gc, 0, 0, 64, 64, 3, 3); RReleaseImage(img); img = RCloneImage(tile); RBevelImage(img, RBEV_RAISED); RConvertImage(ctx, img, &pix); XCopyArea(dpy, pix, back, ctx->copy_gc, 0, 0, 64, 64, 73, 3); RReleaseImage(img); img = RCloneImage(tile); RBevelImage(img, RBEV_RAISED2); RConvertImage(ctx, img, &pix); XCopyArea(dpy, pix, back, ctx->copy_gc, 0, 0, 64, 64, 3, 73); RReleaseImage(img); img = RCloneImage(tile); RBevelImage(img, RBEV_RAISED3); RConvertImage(ctx, img, &pix); XCopyArea(dpy, pix, back, ctx->copy_gc, 0, 0, 64, 64, 73, 73); RReleaseImage(img); XSetWindowBackgroundPixmap(dpy, win, back); XMapRaised(dpy, win); XClearWindow(dpy, win); XFlush(dpy); } void testScale() { RImage *image; RImage *scaled; XSetWindowAttributes val; Pixmap pix; Window win; val.background_pixel = ctx->black; val.colormap = ctx->cmap; win = XCreateWindow(dpy, DefaultRootWindow(dpy), 10, 10, 140, 140, 0, ctx->depth, InputOutput, ctx->visual, CWColormap | CWBackPixel, &val); XStoreName(dpy, win, "Scale"); pix = XCreatePixmap(ctx->dpy, ctx->drawable, 140, 140, ctx->depth); image = RLoadImage(ctx, "ballot_box.xpm", 0); if (!image) { puts("couldnt load ballot_box.xpm"); return; } scaled = RScaleImage(image, 140, 140); RReleaseImage(image); RConvertImage(ctx, scaled, &pix); XSetWindowBackgroundPixmap(dpy, win, pix); XMapRaised(dpy, win); XClearWindow(dpy, win); XFlush(dpy); } void testRotate() { RImage *image; RImage *rotated; XSetWindowAttributes val; Pixmap pix; Window win; image = RLoadImage(ctx, "ballot_box.xpm", 0); if (!image) { puts("couldnt load ballot_box.xpm"); return; } image = RScaleImage(image, 90, 180); val.background_pixel = ctx->black; val.colormap = ctx->cmap; win = XCreateWindow(dpy, DefaultRootWindow(dpy), 10, 10, image->height, image->width, 0, ctx->depth, InputOutput, ctx->visual, CWColormap | CWBackPixel, &val); XStoreName(dpy, win, "Rotate"); pix = XCreatePixmap(ctx->dpy, ctx->drawable, image->height, image->width, ctx->depth); rotated = RRotateImage(image, 90.0); RReleaseImage(image); RConvertImage(ctx, rotated, &pix); XSetWindowBackgroundPixmap(dpy, win, pix); XMapRaised(dpy, win); XClearWindow(dpy, win); XFlush(dpy); } void drawClip() { RImage *img; RColor color, from, to, tmp; RColor cdelta, cdelta1; RSegment segs[20]; XSetWindowAttributes val; Pixmap pix, back; Window win; val.background_pixel = ctx->black; val.colormap = ctx->cmap; win = XCreateWindow(dpy, DefaultRootWindow(dpy), 10, 10, 64, 64, 0, ctx->depth, InputOutput, ctx->visual, CWColormap | CWBackPixel, &val); back = XCreatePixmap(ctx->dpy, ctx->drawable, 64, 64, ctx->depth); /* Standard gray tile gradient */ from.red = 0xa6; from.green = 0xa6; from.blue = 0xb6; from.alpha = 0xff; to.red = 0x51; to.green = 0x55; to.blue = 0x61; to.alpha = 0xff; /* Dark blue tile gradient */ from.red = 0x28; from.green = 0x45; from.blue = 0x69; from.alpha = 0xff; to.red = 0x08; to.green = 0x24; to.blue = 0x20; to.alpha = 0xff; img = RRenderGradient(64, 64, &from, &to, RGRD_DIAGONAL); RBevelImage(img, RBEV_RAISED3); #if 1 color.alpha = 255; color.red = color.green = color.blue = 0; cdelta.alpha = 0; cdelta.red = cdelta.green = cdelta.blue = 80; cdelta1.alpha = 0; cdelta1.red = cdelta1.green = cdelta1.blue = 40; segs[0].x1 = segs[2].y1 = segs[4].x1 = segs[4].x2 = 63 - 21; segs[0].x2 = segs[2].y2 = segs[1].x2 = segs[3].y2 = 63 - 2; segs[0].y1 = segs[2].x1 = segs[1].y1 = segs[3].x1 = 2; segs[0].y2 = segs[2].x2 = segs[6].x1 = segs[6].x2 = 21; segs[1].x1 = segs[3].y1 = segs[5].x1 = segs[5].x2 = 63 - 22; segs[1].y2 = segs[3].x2 = segs[7].x1 = segs[7].x2 = 22; segs[4].y1 = segs[5].y1 = segs[10].x1 = segs[11].x1 = 0; segs[4].y2 = segs[5].y2 = segs[10].x2 = segs[11].x2 = 1; segs[6].y1 = segs[7].y1 = segs[8].x1 = segs[9].x1 = 63 - 1; segs[6].y2 = segs[7].y2 = segs[8].x2 = segs[9].x2 = 63; segs[8].y1 = segs[8].y2 = 21; segs[9].y1 = segs[9].y2 = 22; segs[10].y1 = segs[10].y2 = 63 - 21; segs[11].y1 = segs[11].y2 = 63 - 22; /* Black segments */ RDrawSegments(img, segs, 12, &color); segs[0].x1 = segs[3].y1 = 63 - 20; segs[0].x2 = segs[1].y2 = segs[2].x2 = segs[3].y2 = 63 - 2; segs[0].y1 = segs[1].x1 = segs[2].y1 = segs[3].x1 = 2; segs[1].y1 = segs[2].x1 = 63 - 23; segs[0].y2 = segs[3].x2 = 20; segs[1].x2 = segs[2].y2 = 23; /* Bevels arround black segments */ ROperateSegments(img, RAddOperation, segs, 2, &cdelta); ROperateSegments(img, RSubtractOperation, &segs[2], 2, &cdelta1); RGetPixel(img, 63 - 2, 20, &tmp); /*RPutPixel(img, 63-1, 23, &tmp); */ RDrawLine(img, 63 - 1, 23, 63, 23, &tmp); RGetPixel(img, 63 - 23, 2, &tmp); RDrawLine(img, 63 - 23, 0, 63 - 23, 1, &tmp); RGetPixel(img, 23, 63 - 2, &tmp); /*RPutPixel(img, 23, 63-1, &tmp); */ RDrawLine(img, 23, 63 - 1, 23, 63, &tmp); RGetPixel(img, 2, 63 - 20, &tmp); RDrawLine(img, 0, 63 - 23, 1, 63 - 23, &tmp); #else color.alpha = 255; color.red = color.green = color.blue = 0; cdelta.alpha = 0; cdelta.red = cdelta.green = cdelta.blue = 80; cdelta1.alpha = 0; cdelta1.red = cdelta1.green = cdelta1.blue = 40; RDrawLine(img, 63 - 21, 2, 63 - 2, 21, &color); /* upper 2 black lines */ ROperateLine(img, RAddOperation, 63 - 20, 2, 63 - 2, 20, &cdelta); /* the bevel arround them */ ROperateLine(img, RSubtractOperation, 63 - 22, 2, 63 - 2, 22, &cdelta1); RDrawLine(img, 63 - 21, 0, 63 - 21, 1, &color); /* upper small black lines */ RDrawLine(img, 63 - 1, 21, 63, 21, &color); RGetPixel(img, 63 - 2, 20, &tmp); RPutPixel(img, 63 - 1, 22, &tmp); RGetPixel(img, 2, 63 - 22, &tmp); RDrawLine(img, 63 - 22, 0, 63 - 22, 1, &tmp); RDrawLine(img, 2, 63 - 21, 21, 63 - 2, &color); /* lower 2 black lines */ ROperateLine(img, RSubtractOperation, 2, 63 - 20, 20, 63 - 2, &cdelta1); /* the bevel arround them */ ROperateLine(img, RAddOperation, 2, 63 - 22, 22, 63 - 2, &cdelta); RDrawLine(img, 21, 63 - 1, 21, 63, &color); /* lower small black lines */ RDrawLine(img, 0, 63 - 21, 1, 63 - 21, &color); ROperateLine(img, RAddOperation, 22, 63 - 1, 22, 63, &cdelta); /*ROperateLine(img, RAddOperation, 22, 63-1, 22, 63, &cdelta); *//* the bevel arround them */ ROperateLine(img, RSubtractOperation, 0, 63 - 22, 1, 63 - 22, &cdelta1); #endif RConvertImage(ctx, img, &pix); XCopyArea(dpy, pix, back, ctx->copy_gc, 0, 0, 64, 64, 0, 0); RReleaseImage(img); XSetWindowBackgroundPixmap(dpy, win, back); XMapRaised(dpy, win); XClearWindow(dpy, win); XFlush(dpy); } void benchmark() { RImage *img; RColor color; RColor cdelta; double t1, t2, total, d1 = 0, d2 = 0, d3 = 0; struct timeval timev; int i, j; puts("Starting benchmark"); gettimeofday(&timev, NULL); t1 = (double)timev.tv_sec + (((double)timev.tv_usec) / 1000000); img = RCreateImage(1024, 768, True); gettimeofday(&timev, NULL); t2 = (double)timev.tv_sec + (((double)timev.tv_usec) / 1000000); total = t2 - t1; printf("Image created in %f sec\n", total); gettimeofday(&timev, NULL); t1 = (double)timev.tv_sec + (((double)timev.tv_usec) / 1000000); color.red = 0x28; color.green = 0x45; color.blue = 0x69; color.alpha = 0xff; RClearImage(img, &color); color.red = 0xff; color.green = 0x7d; color.blue = 0x52; color.alpha = 0xff; cdelta.red = cdelta.green = cdelta.blue = 80; cdelta.alpha = 0; gettimeofday(&timev, NULL); t2 = (double)timev.tv_sec + (((double)timev.tv_usec) / 1000000); total = t2 - t1; printf("Image filled in %f sec\n", total); for (j = 1; j < 6; j++) { printf("Pass %d...\n", j); gettimeofday(&timev, NULL); t1 = (double)timev.tv_sec + (((double)timev.tv_usec) / 1000000); color.alpha = 0xff; for (i = 0; i < 10000; i++) { RDrawLine(img, 0, i % 64, i % 64, 63, &color); } gettimeofday(&timev, NULL); t2 = (double)timev.tv_sec + (((double)timev.tv_usec) / 1000000); total = t2 - t1; printf("Drawing 10000 lines in %f sec\n", total); d1 += total; gettimeofday(&timev, NULL); t1 = (double)timev.tv_sec + (((double)timev.tv_usec) / 1000000); color.alpha = 80; for (i = 0; i < 10000; i++) { RDrawLine(img, 0, i % 64, i % 64, 63, &color); } gettimeofday(&timev, NULL); t2 = (double)timev.tv_sec + (((double)timev.tv_usec) / 1000000); total = t2 - t1; printf("Drawing 10000 lines with alpha in %f sec\n", total); d2 += total; gettimeofday(&timev, NULL); t1 = (double)timev.tv_sec + (((double)timev.tv_usec) / 1000000); for (i = 0; i < 10000; i++) { ROperateLine(img, RAddOperation, 0, i % 64, i % 64, 63, &cdelta); } gettimeofday(&timev, NULL); t2 = (double)timev.tv_sec + (((double)timev.tv_usec) / 1000000); total = t2 - t1; printf("Altering 10000 lines in %f sec\n", total); d3 += total; } printf("Average: %f, %f, %f\n", d1 / 5, d2 / 5, d3 / 5); RReleaseImage(img); } int main(int argc, char **argv) { RContextAttributes attr; int visualID = -1; (void) argc; ProgName = strrchr(argv[0], '/'); if (!ProgName) ProgName = argv[0]; else ProgName++; dpy = XOpenDisplay(""); if (!dpy) { puts("cant open display"); exit(1); } attr.flags = RC_RenderMode | RC_ColorsPerChannel; attr.render_mode = RDitheredRendering; attr.colors_per_channel = 4; if (visualID >= 0) { attr.flags |= RC_VisualID; attr.visualid = visualID; } ctx = RCreateContext(dpy, DefaultScreen(dpy), &attr); if (!ctx) { printf("could not initialize graphics library context: %s\n", RMessageForError(RErrorCode)); exit(1); } /* Here are the things we want to test */ testDraw(); testBevel(); drawClip(); testScale(); testRotate(); /* benchmark(); */ getchar(); return 0; } ����������������������������������������������������������������WindowMaker-0.95.9/wrlib/tests/Makefile.am����������������������������������������������������������0000644�0001750�0001750�00000000747�13431646202�015314� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������## automake input file for wrlib AUTOMAKE_OPTIONS = noinst_PROGRAMS = testdraw testgrad testrot view EXTRA_DIST = test.png tile.xpm ballot_box.xpm AM_CPPFLAGS = -I$(srcdir)/.. $(DFLAGS) @HEADER_SEARCH_PATH@ LIBLIST = $(top_builddir)/wrlib/libwraster.la @XLIBS@ testdraw_SOURCES = testdraw.c testdraw_LDADD = $(LIBLIST) testgrad_SOURCES = testgrad.c testgrad_LDADD = $(LIBLIST) testrot_SOURCES = testrot.c testrot_LDADD = $(LIBLIST) view_SOURCES= view.c view_LDADD = $(LIBLIST) �������������������������WindowMaker-0.95.9/wrlib/tests/test.png�������������������������������������������������������������0000644�0001750�0001750�00000006575�13431646202�014752� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���#ꦷ���gAMA�1_���bKGD��~#�� "IDATxݙ_luKrM.ZK�ʴRM Y.R2Z[Ɋ^qb,ZɊ (0Pr�B&\)(D~D4KK/9wUU4AΝ;ww|猕i |�ؘ}}+M!3߀ޱ&}߯ZfF5[,@f.3rZtL017qHÿto Z?TR4٢:O~-{D`kEU4")sZHfn2@6RtXO)ޯ;voR'zֽO۴=5ߣDOqD Oc3`co47e� k$9SQ aȗ~U5`:O�E5CJ :u'|VMt?\3%'*JS_7W&; 42�@THtZ]m'Ի6tmrwK'Z׉^щ~QCbV b^NJ^Jr宁Z S _XfxNEOfͅz-/?ջu5Dp^vGVˏGW5| %˿\5ėf%XYhNf �uSSn6Ys;;�:p-'AW:UGpxqB?7GsZ g`/��f@%6mW#r?zf7k.{zzz _NF٪ At5Huta>4u-⋋=wTK\*< e7 M@x޶"&nܛ9f5|>IEtSqEUvvhƫ ^R\TjVz=Xtod�Ɏap~~ p}c ׍{3lvB}ކ|9:^TyJz5%WkFƫ%X<s`y YE`u < s7DO�Nl] #aL$7u4ݬP_}v-sj�ҵԷqM%q~SWϭVH8R;hd�QC_�D{S> go|h7#aL$7u)7ݬP?*>WU4^Y+/WZO?{1+^ |{ w� u'0oh5HM@3~ݸ7sf7k.7e-/NK?RxZ s'@/�eAY@ [?p�| HQtu yf�KϼQ-ѪHM@3~ݸ7sf7k.ԇ _|IV?4ħځN,'[3�kXf|>o�$_NY�%an� }MEFj0&fqo攛n\~|[~|!~ݻj%VyN&#āHFq@ ҊU;2t�`@2zKo�T۵3=-nj7#aL$7Vlvkeݻμ K@pR (#8g�rRKX<oM�0 UI XO"v�?>4L;V݌14׍{3\67aZi.3o~`i޻ {pi 3 =)opQqdv%)3�{>�5XaXiH4ь̤+[h7#aL$׀fiZV!_ Cɽ?x~;w1[o� zDE�3�ؓI~]Rl~%y�Z+1S5ISZj݈VF˜H.~xVv�: N]mx⁍/43�}Ȉ c���'ݛ l/�Ib*aS1Q&1%?3j݈VD\9߭;wR'3j=K3Y ҕx�{vi 1�\[S�Φx>lOcJF ޒ4ŨuWGjO9hn$83*}}§Rw~;@4�k7syv|�aE%�aL>  j0&3gƫˁȽ_BAqޓ=vA<S!w1m׮DMJp%x_x"ݯE?p-vB=rZ|25V)B3rILUJ' ,U;J?Q<gzL~YpO<ӘYX=I/U֪5 Ib۰^�Iwfx � KjʍZu3'SR"Q-Ɂϐ͊}'Aq$[TX<2F!)WG䞮+Im狟�$|f ;N M�pp :ۤn%l ̦ΪG!W+U}Yf2EDbW*[`VI DEA=+!svz%w ͚ �S�N \�9?h3:Ve]㼩Jqi廡3X 3d{`!8 =/y�u`@䏀Y`P2d?gcVȘ"{{3tPlt L�GMܦh\o}Rʺ/C@�}r 4sCBI�_c)ڿ}i U<$C<�e6;�t|_wAC`] �Uh3f1pi'I,TK)9 a9 ~a W'c�<K+2"$~P5 L`k ҂$IbW1Q';ޗM;,j-@<NI=XZlp̒tXU0 (CvVjAfT̒71K!o9p7At }'k= %IW%ߴcj'ݧcATwX)A3]t Qh5Ʋ%$5Vf) q4sA>&folnon4|6jd.dndoGq?eí۵����IENDB`�����������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/load_gif.c�����������������������������������������������������������������0000644�0001750�0001750�00000011761�13431646202�014024� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* gif.c - load GIF image from file * * Raster graphics library * * Copyright (c) 1998-2003 Alfredo K. Kojima * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301, USA. */ #include <config.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <gif_lib.h> #include "wraster.h" #include "imgformat.h" static int InterlacedOffset[] = { 0, 4, 2, 1 }; static int InterlacedJumps[] = { 8, 8, 4, 2 }; /* * Partially based on code in gif2rgb from giflib, by Gershon Elber. */ RImage *RLoadGIF(const char *file, int index) { RImage *image = NULL; unsigned char *cptr; GifFileType *gif = NULL; GifPixelType *buffer = NULL; int i, j, k; int width, height; GifRecordType recType; ColorMapObject *colormap; unsigned char rmap[256], gmap[256], bmap[256]; int gif_error; if (index < 0) index = 0; /* default error message */ RErrorCode = RERR_BADINDEX; #if USE_GIF == 4 gif = DGifOpenFileName(file); #else /* USE_GIF == 5 */ gif = DGifOpenFileName(file, &gif_error); #endif if (!gif) { #if USE_GIF == 4 gif_error = GifLastError(); #endif switch (gif_error) { case D_GIF_ERR_OPEN_FAILED: RErrorCode = RERR_OPEN; break; case D_GIF_ERR_READ_FAILED: RErrorCode = RERR_READ; break; default: RErrorCode = RERR_BADIMAGEFILE; break; } return NULL; } if (gif->SWidth < 1 || gif->SHeight < 1) { #if (USE_GIF == 5) && (GIFLIB_MINOR >= 1) DGifCloseFile(gif, NULL); #else DGifCloseFile(gif); #endif RErrorCode = RERR_BADIMAGEFILE; return NULL; } colormap = gif->SColorMap; i = 0; do { int extCode; GifByteType *extension; if (DGifGetRecordType(gif, &recType) == GIF_ERROR) goto giferr; switch (recType) { case IMAGE_DESC_RECORD_TYPE: if (i++ != index) break; if (DGifGetImageDesc(gif) == GIF_ERROR) goto giferr; width = gif->Image.Width; height = gif->Image.Height; if (gif->Image.ColorMap) colormap = gif->Image.ColorMap; /* the gif specs talk about a default colormap, but it * doesnt say what the heck is this default colormap * Render anything */ if (colormap) { for (j = 0; j < colormap->ColorCount; j++) { rmap[j] = colormap->Colors[j].Red; gmap[j] = colormap->Colors[j].Green; bmap[j] = colormap->Colors[j].Blue; } } buffer = malloc(width * sizeof(GifPixelType)); if (!buffer) { RErrorCode = RERR_NOMEMORY; goto bye; } image = RCreateImage(width, height, False); if (!image) goto bye; if (gif->Image.Interlace) { int l, pelsPerLine; if (RRGBAFormat == image->format) pelsPerLine = width * 4; else pelsPerLine = width * 3; for (j = 0; j < 4; j++) { for (k = InterlacedOffset[j]; k < height; k += InterlacedJumps[j]) { if (DGifGetLine(gif, buffer, width) == GIF_ERROR) goto giferr; cptr = image->data + (k * pelsPerLine); for (l = 0; l < width; l++) { int pixel = buffer[l]; *cptr++ = rmap[pixel]; *cptr++ = gmap[pixel]; *cptr++ = bmap[pixel]; } } } } else { cptr = image->data; for (j = 0; j < height; j++) { if (DGifGetLine(gif, buffer, width) == GIF_ERROR) goto giferr; for (k = 0; k < width; k++) { int pixel = buffer[k]; *cptr++ = rmap[pixel]; *cptr++ = gmap[pixel]; *cptr++ = bmap[pixel]; if (RRGBAFormat == image->format) cptr++; } } } break; case EXTENSION_RECORD_TYPE: /* skip all extension blocks */ if (DGifGetExtension(gif, &extCode, &extension) == GIF_ERROR) goto giferr; while (extension) if (DGifGetExtensionNext(gif, &extension) == GIF_ERROR) goto giferr; break; default: break; } } while (recType != TERMINATE_RECORD_TYPE && i <= index); /* yuck! */ goto did_not_get_any_errors; giferr: #if USE_GIF == 4 switch (GifLastError()) { case D_GIF_ERR_OPEN_FAILED: RErrorCode = RERR_OPEN; break; case D_GIF_ERR_READ_FAILED: RErrorCode = RERR_READ; break; default: RErrorCode = RERR_BADIMAGEFILE; break; } #else /* With gif_lib v5 there's no way to know what went wrong */ RErrorCode = RERR_BADIMAGEFILE; #endif bye: if (image) RReleaseImage(image); image = NULL; did_not_get_any_errors: if (buffer) free(buffer); if (gif) #if (USE_GIF == 5) && (GIFLIB_MINOR >= 1) DGifCloseFile(gif, NULL); #else DGifCloseFile(gif); #endif return image; } ���������������WindowMaker-0.95.9/wrlib/TODO�����������������������������������������������������������������������0000644�0001750�0001750�00000000332�13431646202�012574� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������- support for other types of displays and convertion modes (currently only supports PseudoColor and TrueColor in some depths) - Gimp's xcf format? - add clipping code to RCombineArea() - remake and optimize converters ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/gradient.c�����������������������������������������������������������������0000644�0001750�0001750�00000030126�13642357774�014072� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* gradient.c - renders gradients * * Raster graphics library * * Copyright (c) 1997-2003 Alfredo K. Kojima * Copyright (c) 1998-2003 Dan Pascu * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301, USA. */ #include <config.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <assert.h> #include "wraster.h" static RImage *renderHGradient(unsigned width, unsigned height, int r0, int g0, int b0, int rf, int gf, int bf); static RImage *renderVGradient(unsigned width, unsigned height, int r0, int g0, int b0, int rf, int gf, int bf); static RImage *renderDGradient(unsigned width, unsigned height, int r0, int g0, int b0, int rf, int gf, int bf); static RImage *renderMHGradient(unsigned width, unsigned height, RColor ** colors, int count); static RImage *renderMVGradient(unsigned width, unsigned height, RColor ** colors, int count); static RImage *renderMDGradient(unsigned width, unsigned height, RColor ** colors, int count); RImage *RRenderMultiGradient(unsigned width, unsigned height, RColor **colors, RGradientStyle style) { int count; count = 0; while (colors[count] != NULL) count++; if (count > 2) { switch (style) { case RHorizontalGradient: return renderMHGradient(width, height, colors, count); case RVerticalGradient: return renderMVGradient(width, height, colors, count); case RDiagonalGradient: return renderMDGradient(width, height, colors, count); } } else if (count > 1) { return RRenderGradient(width, height, colors[0], colors[1], style); } else if (count > 0) { return RRenderGradient(width, height, colors[0], colors[0], style); } assert(0); return NULL; } RImage *RRenderGradient(unsigned width, unsigned height, const RColor *from, const RColor *to, RGradientStyle style) { switch (style) { case RHorizontalGradient: return renderHGradient(width, height, from->red, from->green, from->blue, to->red, to->green, to->blue); case RVerticalGradient: return renderVGradient(width, height, from->red, from->green, from->blue, to->red, to->green, to->blue); case RDiagonalGradient: return renderDGradient(width, height, from->red, from->green, from->blue, to->red, to->green, to->blue); } assert(0); return NULL; } /* *---------------------------------------------------------------------- * renderHGradient-- * Renders a horizontal linear gradient of the specified size in the * RImage format with a border of the specified type. * * Returns: * A 24bit RImage with the gradient (no alpha channel). * * Side effects: * None *---------------------------------------------------------------------- */ static RImage *renderHGradient(unsigned width, unsigned height, int r0, int g0, int b0, int rf, int gf, int bf) { int i; long r, g, b, dr, dg, db; unsigned lineSize = width * 3; RImage *image; unsigned char *ptr; image = RCreateImage(width, height, False); if (!image) { return NULL; } ptr = image->data; r = r0 << 16; g = g0 << 16; b = b0 << 16; dr = ((rf - r0) << 16) / (int)width; dg = ((gf - g0) << 16) / (int)width; db = ((bf - b0) << 16) / (int)width; /* render the first line */ for (i = 0; i < width; i++) { *(ptr++) = (unsigned char)(r >> 16); *(ptr++) = (unsigned char)(g >> 16); *(ptr++) = (unsigned char)(b >> 16); r += dr; g += dg; b += db; } /* copy the first line to the other lines */ for (i = 1; i < height; i++) { memcpy(&(image->data[i * lineSize]), image->data, lineSize); } return image; } static inline unsigned char *renderGradientWidth(unsigned char *ptr, unsigned width, unsigned char r, unsigned char g, unsigned char b) { int i; for (i = width / 4; i--;) { *ptr++ = r; *ptr++ = g; *ptr++ = b; *ptr++ = r; *ptr++ = g; *ptr++ = b; *ptr++ = r; *ptr++ = g; *ptr++ = b; *ptr++ = r; *ptr++ = g; *ptr++ = b; } switch (width % 4) { case 3: *ptr++ = r; *ptr++ = g; *ptr++ = b; /* FALLTHRU */ case 2: *ptr++ = r; *ptr++ = g; *ptr++ = b; /* FALLTHRU */ case 1: *ptr++ = r; *ptr++ = g; *ptr++ = b; } return ptr; } /* *---------------------------------------------------------------------- * renderVGradient-- * Renders a vertical linear gradient of the specified size in the * RImage format with a border of the specified type. * * Returns: * A 24bit RImage with the gradient (no alpha channel). * * Side effects: * None *---------------------------------------------------------------------- */ static RImage *renderVGradient(unsigned width, unsigned height, int r0, int g0, int b0, int rf, int gf, int bf) { int i; long r, g, b, dr, dg, db; RImage *image; unsigned char *ptr; image = RCreateImage(width, height, False); if (!image) { return NULL; } ptr = image->data; r = r0 << 16; g = g0 << 16; b = b0 << 16; dr = ((rf - r0) << 16) / (int)height; dg = ((gf - g0) << 16) / (int)height; db = ((bf - b0) << 16) / (int)height; for (i = 0; i < height; i++) { ptr = renderGradientWidth(ptr, width, r >> 16, g >> 16, b >> 16); r += dr; g += dg; b += db; } return image; } /* *---------------------------------------------------------------------- * renderDGradient-- * Renders a diagonal linear gradient of the specified size in the * RImage format with a border of the specified type. * * Returns: * A 24bit RImage with the gradient (no alpha channel). * * Side effects: * None *---------------------------------------------------------------------- */ static RImage *renderDGradient(unsigned width, unsigned height, int r0, int g0, int b0, int rf, int gf, int bf) { RImage *image, *tmp; int j; float a, offset; unsigned char *ptr; if (width == 1) return renderVGradient(width, height, r0, g0, b0, rf, gf, bf); else if (height == 1) return renderHGradient(width, height, r0, g0, b0, rf, gf, bf); image = RCreateImage(width, height, False); if (!image) { return NULL; } tmp = renderHGradient(2 * width - 1, 1, r0, g0, b0, rf, gf, bf); if (!tmp) { RReleaseImage(image); return NULL; } ptr = tmp->data; a = ((float)(width - 1)) / ((float)(height - 1)); width = width * 3; /* copy the first line to the other lines with corresponding offset */ for (j = 0, offset = 0.0; j < width * height; j += width) { memcpy(&(image->data[j]), &ptr[3 * (int)offset], width); offset += a; } RReleaseImage(tmp); return image; } static RImage *renderMHGradient(unsigned width, unsigned height, RColor ** colors, int count) { int i, j, k; long r, g, b, dr, dg, db; unsigned lineSize = width * 3; RImage *image; unsigned char *ptr; unsigned width2; assert(count > 2); image = RCreateImage(width, height, False); if (!image) { return NULL; } ptr = image->data; if (count > width) count = width; if (count > 1) width2 = width / (count - 1); else width2 = width; k = 0; r = colors[0]->red << 16; g = colors[0]->green << 16; b = colors[0]->blue << 16; /* render the first line */ for (i = 1; i < count; i++) { dr = ((int)(colors[i]->red - colors[i - 1]->red) << 16) / (int)width2; dg = ((int)(colors[i]->green - colors[i - 1]->green) << 16) / (int)width2; db = ((int)(colors[i]->blue - colors[i - 1]->blue) << 16) / (int)width2; for (j = 0; j < width2; j++) { *ptr++ = (unsigned char)(r >> 16); *ptr++ = (unsigned char)(g >> 16); *ptr++ = (unsigned char)(b >> 16); r += dr; g += dg; b += db; k++; } r = colors[i]->red << 16; g = colors[i]->green << 16; b = colors[i]->blue << 16; } for (j = k; j < width; j++) { *ptr++ = (unsigned char)(r >> 16); *ptr++ = (unsigned char)(g >> 16); *ptr++ = (unsigned char)(b >> 16); } /* copy the first line to the other lines */ for (i = 1; i < height; i++) { memcpy(&(image->data[i * lineSize]), image->data, lineSize); } return image; } static RImage *renderMVGradient(unsigned width, unsigned height, RColor ** colors, int count) { int i, j, k; long r, g, b, dr, dg, db; unsigned lineSize = width * 3; RImage *image; unsigned char *ptr, *tmp; unsigned height2; assert(count > 2); image = RCreateImage(width, height, False); if (!image) { return NULL; } ptr = image->data; if (count > height) count = height; if (count > 1) height2 = height / (count - 1); else height2 = height; k = 0; r = colors[0]->red << 16; g = colors[0]->green << 16; b = colors[0]->blue << 16; for (i = 1; i < count; i++) { dr = ((int)(colors[i]->red - colors[i - 1]->red) << 16) / (int)height2; dg = ((int)(colors[i]->green - colors[i - 1]->green) << 16) / (int)height2; db = ((int)(colors[i]->blue - colors[i - 1]->blue) << 16) / (int)height2; for (j = 0; j < height2; j++) { ptr = renderGradientWidth(ptr, width, r >> 16, g >> 16, b >> 16); r += dr; g += dg; b += db; k++; } r = colors[i]->red << 16; g = colors[i]->green << 16; b = colors[i]->blue << 16; } if (k < height) { tmp = ptr; ptr = renderGradientWidth(ptr, width, r >> 16, g >> 16, b >> 16); for (j = k + 1; j < height; j++) { memcpy(ptr, tmp, lineSize); ptr += lineSize; } } return image; } static RImage *renderMDGradient(unsigned width, unsigned height, RColor ** colors, int count) { RImage *image, *tmp; float a, offset; int j; unsigned char *ptr; assert(count > 2); if (width == 1) return renderMVGradient(width, height, colors, count); else if (height == 1) return renderMHGradient(width, height, colors, count); image = RCreateImage(width, height, False); if (!image) { return NULL; } if (count > width) count = width; if (count > height) count = height; if (count > 2) tmp = renderMHGradient(2 * width - 1, 1, colors, count); else tmp = renderHGradient(2 * width - 1, 1, colors[0]->red << 8, colors[0]->green << 8, colors[0]->blue << 8, colors[1]->red << 8, colors[1]->green << 8, colors[1]->blue << 8); if (!tmp) { RReleaseImage(image); return NULL; } ptr = tmp->data; a = ((float)(width - 1)) / ((float)(height - 1)); width = width * 3; /* copy the first line to the other lines with corresponding offset */ for (j = 0, offset = 0; j < width * height; j += width) { memcpy(&(image->data[j]), &ptr[3 * (int)offset], width); offset += a; } RReleaseImage(tmp); return image; } RImage *RRenderInterwovenGradient(unsigned width, unsigned height, RColor colors1[2], int thickness1, RColor colors2[2], int thickness2) { int i, k, l, ll; long r1, g1, b1, dr1, dg1, db1; long r2, g2, b2, dr2, dg2, db2; RImage *image; unsigned char *ptr; image = RCreateImage(width, height, False); if (!image) { return NULL; } ptr = image->data; r1 = colors1[0].red << 16; g1 = colors1[0].green << 16; b1 = colors1[0].blue << 16; r2 = colors2[0].red << 16; g2 = colors2[0].green << 16; b2 = colors2[0].blue << 16; dr1 = ((colors1[1].red - colors1[0].red) << 16) / (int)height; dg1 = ((colors1[1].green - colors1[0].green) << 16) / (int)height; db1 = ((colors1[1].blue - colors1[0].blue) << 16) / (int)height; dr2 = ((colors2[1].red - colors2[0].red) << 16) / (int)height; dg2 = ((colors2[1].green - colors2[0].green) << 16) / (int)height; db2 = ((colors2[1].blue - colors2[0].blue) << 16) / (int)height; for (i = 0, k = 0, l = 0, ll = thickness1; i < height; i++) { if (k == 0) ptr = renderGradientWidth(ptr, width, r1 >> 16, g1 >> 16, b1 >> 16); else ptr = renderGradientWidth(ptr, width, r2 >> 16, g2 >> 16, b2 >> 16); if (++l == ll) { if (k == 0) { k = 1; ll = thickness2; } else { k = 0; ll = thickness1; } l = 0; } r1 += dr1; g1 += dg1; b1 += db1; r2 += dr2; g2 += dg2; b2 += db2; } return image; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/ChangeLog������������������������������������������������������������������0000644�0001750�0001750�00000004316�13431646202�013664� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������- removed obsoleted RDestroyImage() - removed Hermes code. - Put back asm/mmx optimized code. - fixed a bug in RCombineAreaWithOpaqueness() (Brad <lists@anomie.yi.org>) - Added retain/release mechanism to RImage by adding RRetainImage() and RReleaseImage(). RDestroyImage() is an alias to RReleaseImage() now, but will be removed in a future release because it no longer fits with the semantics. Will be kept for a while to allow a smoother transition. More about in NEWS - Fixed crashing for Pseudocolor visuals with BestMatchRendering - Small speed improvement for 24 and 32 bpp, if internal converter is used - Small speed improvement for generating gradients. - Fixed RSaveXPM() to output correct xpm images. - Fixed speckles (white dots) on dithered images (bug still present on the PowerPC architecture, because on LinuxPPC char is unsigned by default, not signed like on the other platforms). Bug fixed by Philip Derrin <philipd@student.unsw.edu.au> - Fixed not working Grayscale visual (was crashing) - Fixed wrong display of images with alpha in StaticGray and GrayScale visuals - fixed code dependant on the order of evaluation. code like *ptr++ = *ptr++ = *ptr++ = color; is wrong, because there is no guarantee that ptr will be incremented _between_ the assignment operations. it can be incremented after all assignment operations as well. Because of this both of these are valid implementations for a compiler: a. assign, increment, assign, increment, assign, increment b. assign, assign, assign, increment by 3 In case b. only the first memory location of the 3 will be modified, being assigned 3 times the same value, while the other 2 remain unchanged. For example egcs-2.91.66 (and possibly gcc-2.95.x too) implement this in the second way (like in case b.) Also the order in which the assignement is made is undefined (left to right or right to left). - added RMakeCenteredImage() - Added code to draw pixels and lines. Both writing absolute values, or offseting existing pixels with delta values are supported. - Remade the beveling code to be simpler, using the RAlterLine() functions. - Fixed some pixels in the bevels. - Changed RAlter* functions to more generic ROperate* ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/convolve.c�����������������������������������������������������������������0000644�0001750�0001750�00000005650�13431646202�014113� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Raster graphics library * * Copyright (c) 1997-2003 Alfredo K. Kojima * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301, USA. */ #include <config.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <X11/Xlib.h> #include "wraster.h" /* *---------------------------------------------------------------------- * RBlurImage-- * Apply 3x3 1 1 1 low pass, convolution mask to image. * 1 2 1 * 1 1 1 /10 *---------------------------------------------------------------------- */ int RBlurImage(RImage * image) { register int x, y; register int tmp; unsigned char *ptr, *nptr; unsigned char *pptr = NULL, *tmpp; int ch = image->format == RRGBAFormat ? 4 : 3; pptr = malloc(image->width * ch); if (!pptr) { RErrorCode = RERR_NOMEMORY; return False; } #define MASK(prev, cur, next, ch)\ (*(prev-ch) + *prev + *(prev+ch)\ +*(cur-ch) + 2 * *cur + *(cur+ch)\ +*(next-ch) + *next + *(next+ch)) / 10 memcpy(pptr, image->data, image->width * ch); ptr = image->data; nptr = ptr + image->width * ch; tmpp = pptr; if (ch == 3) { ptr += 3; nptr += 3; pptr += 3; for (y = 1; y < image->height - 1; y++) { for (x = 1; x < image->width - 1; x++) { tmp = *ptr; *ptr = MASK(pptr, ptr, nptr, 3); *pptr = tmp; ptr++; nptr++; pptr++; tmp = *ptr; *ptr = MASK(pptr, ptr, nptr, 3); *pptr = tmp; ptr++; nptr++; pptr++; tmp = *ptr; *ptr = MASK(pptr, ptr, nptr, 3); *pptr = tmp; ptr++; nptr++; pptr++; } pptr = tmpp; ptr += 6; nptr += 6; pptr += 6; } } else { ptr += 4; nptr += 4; pptr += 4; for (y = 1; y < image->height - 1; y++) { for (x = 1; x < image->width - 1; x++) { tmp = *ptr; *ptr = MASK(pptr, ptr, nptr, 4); *pptr = tmp; ptr++; nptr++; pptr++; tmp = *ptr; *ptr = MASK(pptr, ptr, nptr, 4); *pptr = tmp; ptr++; nptr++; pptr++; tmp = *ptr; *ptr = MASK(pptr, ptr, nptr, 4); *pptr = tmp; ptr++; nptr++; pptr++; tmp = *ptr; *ptr = MASK(pptr, ptr, nptr, 4); *pptr = tmp; ptr++; nptr++; pptr++; } pptr = tmpp; ptr += 8; nptr += 8; pptr += 8; } } free(tmpp); return True; } ����������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/color.c��������������������������������������������������������������������0000644�0001750�0001750�00000005167�13431646202�013401� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* color.c - color stuff (rgb -> hsv convertion etc.) * * Raster graphics library * * Copyright (c) 1998-2003 Alfredo K. Kojima * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301, USA. */ #include <config.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <X11/Xlib.h> #include <assert.h> #include "wraster.h" #define MIN(a,b) ((a)<(b) ? (a) : (b)) #define MAX(a,b) ((a)>(b) ? (a) : (b)) #define MIN3(a,b,c) MIN(MIN(a,b), c) #define MAX3(a,b,c) MAX(MAX(a,b), c) void RHSVtoRGB(const RHSVColor * hsv, RColor * rgb) { int h = hsv->hue % 360; int s = hsv->saturation; int v = hsv->value; int i, f; int p, q, t; if (s == 0) { rgb->red = rgb->green = rgb->blue = v; return; } i = h / 60; f = h % 60; p = v * (255 - s) / 255; q = v * (255 - s * f / 60) / 255; t = v * (255 - s * (60 - f) / 60) / 255; switch (i) { case 0: rgb->red = v; rgb->green = t; rgb->blue = p; break; case 1: rgb->red = q; rgb->green = v; rgb->blue = p; break; case 2: rgb->red = p; rgb->green = v; rgb->blue = t; break; case 3: rgb->red = p; rgb->green = q; rgb->blue = v; break; case 4: rgb->red = t; rgb->green = p; rgb->blue = v; break; case 5: rgb->red = v; rgb->green = p; rgb->blue = q; break; } } void RRGBtoHSV(const RColor * rgb, RHSVColor * hsv) { int h, s, v; int max = MAX3(rgb->red, rgb->green, rgb->blue); int min = MIN3(rgb->red, rgb->green, rgb->blue); v = max; if (max == 0) s = 0; else s = (max - min) * 255 / max; if (s == 0) h = 0; else { int rc, gc, bc; rc = (max - rgb->red) * 255 / (max - min); gc = (max - rgb->green) * 255 / (max - min); bc = (max - rgb->blue) * 255 / (max - min); if (rgb->red == max) { h = ((bc - gc) * 60 / 255); } else if (rgb->green == max) { h = 2 * 60 + ((rc - bc) * 60 / 255); } else { h = 4 * 60 + ((gc - rc) * 60 / 255); } if (h < 0) h += 360; } hsv->hue = h; hsv->saturation = s; hsv->value = v; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/load_magick.c��������������������������������������������������������������0000644�0001750�0001750�00000005473�13642357774�014536� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* load_magick.c - load image file using ImageMagick * * Raster graphics library * * Copyright (c) 2014 Window Maker Team * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301, USA. */ #include "config.h" #include <MagickWand/MagickWand.h> #include "wraster.h" #include "imgformat.h" static int RInitMagickIfNeeded(void); RImage *RLoadMagick(const char *file_name) { RImage *image = NULL; unsigned char *ptr; unsigned long w,h; MagickWand *m_wand = NULL; MagickBooleanType mrc; MagickBooleanType hasAlfa; PixelWand *bg_wand = NULL; if (RInitMagickIfNeeded()) { RErrorCode = RERR_BADFORMAT; return NULL; } /* Create a wand */ m_wand = NewMagickWand(); /* set the default background as transparent */ bg_wand = NewPixelWand(); PixelSetColor(bg_wand, "none"); MagickSetBackgroundColor(m_wand, bg_wand); /* Read the input image */ if (!MagickReadImage(m_wand, file_name)) { RErrorCode = RERR_BADIMAGEFILE; goto bye; } w = MagickGetImageWidth(m_wand); h = MagickGetImageHeight(m_wand); hasAlfa = MagickGetImageAlphaChannel(m_wand); image = RCreateImage(w, h, (unsigned int) hasAlfa); if (!image) { RErrorCode = RERR_NOMEMORY; goto bye; } ptr = image->data; if (hasAlfa == MagickFalse) mrc = MagickExportImagePixels(m_wand, 0, 0, (size_t)w, (size_t)h, "RGB", CharPixel, ptr); else mrc = MagickExportImagePixels(m_wand, 0, 0, (size_t)w, (size_t)h, "RGBA", CharPixel, ptr); if (mrc == MagickFalse) { RErrorCode = RERR_BADIMAGEFILE; RReleaseImage(image); image = NULL; goto bye; } bye: /* Tidy up */ DestroyPixelWand(bg_wand); MagickClearException(m_wand); DestroyMagickWand(m_wand); return image; } /* Track the state of the library in memory */ static enum { MW_NotReady, MW_Ready } magick_state; /* * Initialise MagickWand, but only if it was not already done * * Return ok(0) when MagickWand is usable and fail(!0) if not usable */ static int RInitMagickIfNeeded(void) { if (magick_state == MW_NotReady) { MagickWandGenesis(); magick_state = MW_Ready; } return 0; } void RReleaseMagick(void) { if (magick_state == MW_Ready) { MagickWandTerminus(); magick_state = MW_NotReady; } } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/rotate.h�������������������������������������������������������������������0000644�0001750�0001750�00000001561�13431646202�013560� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Raster graphics library * * Copyright (c) 2014 Window Maker Team * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library. */ #ifndef WRASTER_ROTATE_H #define WRASTER_ROTATE_H /* * Returns a new image, rotated by 180 degrees */ RImage *wraster_rotate_image_180(RImage *source); #endif �����������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/imgformat.h����������������������������������������������������������������0000644�0001750�0001750�00000004175�13431646202�014253� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Raster graphics library * * Copyright (c) 1997-2003 Alfredo K. Kojima * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301, USA. */ /* * Functions to load and save RImage from/to file in a specific file format * * These functions are for WRaster library's internal use only, please use * the RLoadImage function defined in 'wraster.h' */ #ifndef IMGFORMAT_INTERNAL_H #define IMGFORMAT_INTERNAL_H typedef enum { IM_ERROR = -1, IM_UNKNOWN = 0, IM_XPM = 1, IM_TIFF = 2, IM_PNG = 3, IM_PPM = 4, IM_JPEG = 5, IM_GIF = 6, IM_WEBP = 7 } WRImgFormat; /* How many image types we have. */ /* Increase this when adding new image types! */ #define IM_TYPES 7 /* * Function for Loading in a specific format */ RImage *RLoadPPM(const char *file); RImage *RLoadXPM(RContext *context, const char *file); #ifdef USE_TIFF RImage *RLoadTIFF(const char *file, int index); #endif #ifdef USE_PNG RImage *RLoadPNG(RContext *context, const char *file); #endif #ifdef USE_JPEG RImage *RLoadJPEG(const char *file); #endif #ifdef USE_GIF RImage *RLoadGIF(const char *file, int index); #endif #ifdef USE_WEBP RImage *RLoadWEBP(const char *file); #endif #ifdef USE_MAGICK RImage *RLoadMagick(const char *file_name); void RReleaseMagick(void); #endif /* * Function for Saving in a specific format */ Bool RSaveXPM(RImage *image, const char *file); /* * Function to terminate properly */ void RReleaseCache(void); #endif ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/load_webp.c����������������������������������������������������������������0000644�0001750�0001750�00000007074�13431646202�014216� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* load_webp.c - load WEBP image from file * * Raster graphics library * * Copyright (c) 2014 Window Maker Team * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301, USA. */ #include "config.h" #include <stdlib.h> #include <stdio.h> #include <string.h> #include <webp/decode.h> #include "wraster.h" #include "imgformat.h" RImage *RLoadWEBP(const char *file_name) { FILE *file; RImage *image = NULL; char buffer[20]; int raw_data_size; int r; uint8_t *raw_data; WebPBitstreamFeatures features; uint8_t *ret = NULL; file = fopen(file_name, "rb"); if (!file) { RErrorCode = RERR_OPEN; return NULL; } if (!fread(buffer, sizeof(buffer), 1, file)) { RErrorCode = RERR_BADIMAGEFILE; fclose(file); return NULL; } if (!(buffer[ 0] == 'R' && buffer[ 1] == 'I' && buffer[ 2] == 'F' && buffer[ 3] == 'F' && buffer[ 8] == 'W' && buffer[ 9] == 'E' && buffer[10] == 'B' && buffer[11] == 'P' && buffer[12] == 'V' && buffer[13] == 'P' && buffer[14] == '8' && #if WEBP_DECODER_ABI_VERSION < 0x0003 /* old versions don't support WEBPVP8X and WEBPVP8L */ buffer[15] == ' ')) { #else (buffer[15] == ' ' || buffer[15] == 'X' || buffer[15] == 'L'))) { #endif RErrorCode = RERR_BADFORMAT; fclose(file); return NULL; } fseek(file, 0L, SEEK_END); raw_data_size = ftell(file); if (raw_data_size <= 0) { fprintf(stderr, "wrlib: Failed to find the WEBP file size for \"%s\"\n", file_name); RErrorCode = RERR_BADIMAGEFILE; fclose(file); return NULL; } raw_data = (uint8_t *) malloc(raw_data_size); if (!raw_data) { RErrorCode = RERR_NOMEMORY; fclose(file); return NULL; } fseek(file, 0L, SEEK_SET); r = fread(raw_data, 1, raw_data_size, file); fclose(file); if (r != raw_data_size) { RErrorCode = RERR_READ; free(raw_data); return NULL; } if (WebPGetFeatures(raw_data, raw_data_size, &features) != VP8_STATUS_OK) { fprintf(stderr, "wrlib: WebPGetFeatures has failed on \"%s\"\n", file_name); RErrorCode = RERR_BADIMAGEFILE; free(raw_data); return NULL; } if (features.has_alpha) { image = RCreateImage(features.width, features.height, True); if (!image) { RErrorCode = RERR_NOMEMORY; free(raw_data); return NULL; } ret = WebPDecodeRGBAInto(raw_data, raw_data_size, image->data, features.width * features.height * 4, features.width * 4); } else { image = RCreateImage(features.width, features.height, False); if (!image) { RErrorCode = RERR_NOMEMORY; free(raw_data); return NULL; } ret = WebPDecodeRGBInto(raw_data, raw_data_size, image->data, features.width * features.height * 3, features.width * 3); } free(raw_data); if (!ret) { fprintf(stderr, "wrlib: Failed to decode WEBP from file \"%s\"\n", file_name); RErrorCode = RERR_BADIMAGEFILE; RReleaseImage(image); return NULL; } return image; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/context.c������������������������������������������������������������������0000644�0001750�0001750�00000044055�13642357774�013767� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* context.c - X context management * * Raster graphics library * * Copyright (c) 1997-2003 Alfredo K. Kojima * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301, USA. */ #include <config.h> #include <X11/Xlib.h> #include <X11/Xutil.h> #include <X11/Xatom.h> #ifdef HAVE_LIBXMU #include <X11/Xmu/StdCmap.h> #endif #include <stdio.h> #include <stdlib.h> #include <string.h> #include <assert.h> #include <math.h> #include "wraster.h" #include "scale.h" #ifndef HAVE_FLOAT_MATHFUNC #define powf(x, y) ((float) pow((double)(x), (double)(y))) #endif static Bool bestContext(Display * dpy, int screen_number, RContext * context); static const RContextAttributes DEFAULT_CONTEXT_ATTRIBS = { RC_UseSharedMemory | RC_RenderMode | RC_ColorsPerChannel, /* flags */ RDitheredRendering, /* render_mode */ 4, /* colors_per_channel */ 0, 0, 0, 0, True, /* use_shared_memory */ RMitchellFilter, RUseStdColormap }; /* * * Colormap allocation for PseudoColor visuals: * * * switch standardColormap: * none: * allocate colors according to colors_per_channel * * best/default: * if there's a std colormap defined then use it * * else * create a std colormap and set it */ /* *---------------------------------------------------------------------- * allocateStandardPseudoColor * Creates the internal colormap for PseudoColor, setting the * color values according to the supplied standard colormap. * * Returns: - * * Side effects: - * * Notes: - *---------------------------------------------------------------------- */ static Bool allocateStandardPseudoColor(RContext * ctx, XStandardColormap * stdcmap) { int i; ctx->ncolors = stdcmap->red_max * stdcmap->red_mult + stdcmap->green_max * stdcmap->green_mult + stdcmap->blue_max * stdcmap->blue_mult + 1; if (ctx->ncolors <= 1) { RErrorCode = RERR_INTERNAL; puts("wraster: bad standard colormap"); return False; } ctx->colors = malloc(sizeof(XColor) * ctx->ncolors); if (!ctx->colors) { RErrorCode = RERR_NOMEMORY; return False; } ctx->pixels = malloc(sizeof(unsigned long) * ctx->ncolors); if (!ctx->pixels) { free(ctx->colors); ctx->colors = NULL; RErrorCode = RERR_NOMEMORY; return False; } #define calc(max,mult) (((i / stdcmap->mult) % \ (stdcmap->max + 1)) * 65535) / stdcmap->max for (i = 0; i < ctx->ncolors; i++) { ctx->colors[i].pixel = i + stdcmap->base_pixel; ctx->colors[i].red = calc(red_max, red_mult); ctx->colors[i].green = calc(green_max, green_mult); ctx->colors[i].blue = calc(blue_max, blue_mult); ctx->pixels[i] = ctx->colors[i].pixel; } #undef calc return True; } static Bool setupStandardColormap(RContext * ctx, Atom property) { #ifdef HAVE_LIBXMU if (!XmuLookupStandardColormap(ctx->dpy, ctx->screen_number, ctx->visual->visualid, ctx->depth, property, True, True)) { RErrorCode = RERR_STDCMAPFAIL; return False; } return True; #else (void) ctx; (void) property; RErrorCode = RERR_STDCMAPFAIL; return False; #endif } static XColor *allocateColor(RContext *ctx, XColor *colors, int ncolors) { XColor avcolors[256]; int avncolors; int i, r, g, b; int retries; for (i = 0; i < ncolors; i++) { #ifdef WRLIB_DEBUG fprintf(stderr, "trying:%x,%x,%x\n", colors[i].red, colors[i].green, colors[i].blue); #endif if (!XAllocColor(ctx->dpy, ctx->cmap, &(colors[i]))) { colors[i].flags = 0; /* failed */ #ifdef WRLIB_DEBUG fprintf(stderr, "failed:%x,%x,%x\n", colors[i].red, colors[i].green, colors[i].blue); #endif } else { colors[i].flags = DoRed | DoGreen | DoBlue; #ifdef WRLIB_DEBUG fprintf(stderr, "success:%x,%x,%x\n", colors[i].red, colors[i].green, colors[i].blue); #endif } } /* try to allocate close values for the colors that couldn't * be allocated before */ avncolors = (1 << ctx->depth > 256 ? 256 : 1 << ctx->depth); for (i = 0; i < avncolors; i++) avcolors[i].pixel = i; XQueryColors(ctx->dpy, ctx->cmap, avcolors, avncolors); for (i = 0; i < ncolors; i++) { if (colors[i].flags == 0) { int j; unsigned long cdiff = 0xffffffff, diff; unsigned long closest = 0; retries = 2; while (retries--) { /* find closest color */ for (j = 0; j < avncolors; j++) { r = (colors[i].red - avcolors[i].red) >> 8; g = (colors[i].green - avcolors[i].green) >> 8; b = (colors[i].blue - avcolors[i].blue) >> 8; diff = r * r + g * g + b * b; if (diff < cdiff) { cdiff = diff; closest = j; } } /* allocate closest color found */ #ifdef WRLIB_DEBUG fprintf(stderr, "best match:%x,%x,%x => %x,%x,%x\n", colors[i].red, colors[i].green, colors[i].blue, avcolors[closest].red, avcolors[closest].green, avcolors[closest].blue); #endif colors[i].red = avcolors[closest].red; colors[i].green = avcolors[closest].green; colors[i].blue = avcolors[closest].blue; if (XAllocColor(ctx->dpy, ctx->cmap, &colors[i])) { colors[i].flags = DoRed | DoGreen | DoBlue; break; /* succeeded, don't need to retry */ } #ifdef WRLIB_DEBUG fputs("close color allocation failed. Retrying...\n", stderr); #endif } } } return colors; } static Bool allocatePseudoColor(RContext *ctx) { XColor *colors; int i, ncolors, r, g, b; int cpc = ctx->attribs->colors_per_channel; ncolors = cpc * cpc * cpc; if (ncolors > (1 << ctx->depth)) { /* reduce colormap size */ cpc = ctx->attribs->colors_per_channel = 1 << ((int)ctx->depth / 3); ncolors = cpc * cpc * cpc; } assert(cpc >= 2 && ncolors <= (1 << ctx->depth)); colors = malloc(sizeof(XColor) * ncolors); if (!colors) { RErrorCode = RERR_NOMEMORY; return False; } ctx->pixels = malloc(sizeof(unsigned long) * ncolors); if (!ctx->pixels) { free(colors); RErrorCode = RERR_NOMEMORY; return False; } i = 0; if ((ctx->attribs->flags & RC_GammaCorrection) && ctx->attribs->rgamma > 0 && ctx->attribs->ggamma > 0 && ctx->attribs->bgamma > 0) { float rg, gg, bg; float tmp; /* do gamma correction */ rg = 1.0F / ctx->attribs->rgamma; gg = 1.0F / ctx->attribs->ggamma; bg = 1.0F / ctx->attribs->bgamma; for (r = 0; r < cpc; r++) { for (g = 0; g < cpc; g++) { for (b = 0; b < cpc; b++) { colors[i].red = (r * 0xffff) / (cpc - 1); colors[i].green = (g * 0xffff) / (cpc - 1); colors[i].blue = (b * 0xffff) / (cpc - 1); colors[i].flags = DoRed | DoGreen | DoBlue; tmp = (float) colors[i].red / 65536.0F; colors[i].red = (unsigned short)(65536.0F * powf(tmp, rg)); tmp = (float) colors[i].green / 65536.0F; colors[i].green = (unsigned short)(65536.0F * powf(tmp, gg)); tmp = (float) colors[i].blue / 65536.0F; colors[i].blue = (unsigned short)(65536.0F * powf(tmp, bg)); i++; } } } } else { for (r = 0; r < cpc; r++) { for (g = 0; g < cpc; g++) { for (b = 0; b < cpc; b++) { colors[i].red = (r * 0xffff) / (cpc - 1); colors[i].green = (g * 0xffff) / (cpc - 1); colors[i].blue = (b * 0xffff) / (cpc - 1); colors[i].flags = DoRed | DoGreen | DoBlue; i++; } } } } /* try to allocate the colors */ ctx->colors = allocateColor(ctx, colors, ncolors); ctx->ncolors = ncolors; /* fill the pixels shortcut array */ for (i = 0; i < ncolors; i++) { ctx->pixels[i] = ctx->colors[i].pixel; } return True; } static XColor *allocateGrayScale(RContext * ctx) { XColor *colors; int i, ncolors; int cpc = ctx->attribs->colors_per_channel; ncolors = cpc * cpc * cpc; if (ctx->vclass == StaticGray) { /* we might as well use all grays */ ncolors = 1 << ctx->depth; } else { if (ncolors > (1 << ctx->depth)) { /* reduce colormap size */ cpc = ctx->attribs->colors_per_channel = 1 << ((int)ctx->depth / 3); ncolors = cpc * cpc * cpc; } assert(cpc >= 2 && ncolors <= (1 << ctx->depth)); } if (ncolors >= 256 && ctx->vclass == StaticGray) { /* don't need dithering for 256 levels of gray in StaticGray visual */ ctx->attribs->render_mode = RBestMatchRendering; } colors = malloc(sizeof(XColor) * ncolors); if (!colors) { RErrorCode = RERR_NOMEMORY; return False; } for (i = 0; i < ncolors; i++) { colors[i].red = (i * 0xffff) / (ncolors - 1); colors[i].green = (i * 0xffff) / (ncolors - 1); colors[i].blue = (i * 0xffff) / (ncolors - 1); colors[i].flags = DoRed | DoGreen | DoBlue; } /* try to allocate the colors */ return allocateColor(ctx, colors, ncolors); } static Bool setupPseudoColorColormap(RContext * context) { Atom property = 0; if (context->attribs->standard_colormap_mode == RCreateStdColormap) { property = XInternAtom(context->dpy, "RGB_DEFAULT_MAP", False); if (!setupStandardColormap(context, property)) { return False; } } if (context->attribs->standard_colormap_mode != RIgnoreStdColormap) { XStandardColormap *maps; int count, i; if (!property) { property = XInternAtom(context->dpy, "RGB_BEST_MAP", False); if (!XGetRGBColormaps(context->dpy, DefaultRootWindow(context->dpy), &maps, &count, property)) { maps = NULL; } if (!maps) { property = XInternAtom(context->dpy, "RGB_DEFAULT_MAP", False); if (!XGetRGBColormaps(context->dpy, DefaultRootWindow(context->dpy), &maps, &count, property)) { maps = NULL; } } } else { if (!XGetRGBColormaps(context->dpy, DefaultRootWindow(context->dpy), &maps, &count, property)) { maps = NULL; } } if (maps) { int theMap = -1; for (i = 0; i < count; i++) { if (maps[i].visualid == context->visual->visualid) { theMap = i; break; } } if (theMap < 0) { puts("wrlib: no std cmap found"); } if (theMap >= 0 && allocateStandardPseudoColor(context, &maps[theMap])) { context->std_rgb_map = XAllocStandardColormap(); *context->std_rgb_map = maps[theMap]; context->cmap = context->std_rgb_map->colormap; XFree(maps); return True; } XFree(maps); } } context->attribs->standard_colormap_mode = RIgnoreStdColormap; /* RIgnoreStdColormap and fallback */ return allocatePseudoColor(context); } static char *mygetenv(const char *var, int scr) { char *p; char varname[64]; snprintf(varname, sizeof(varname), "%s%i", var, scr); p = getenv(varname); if (!p) { p = getenv(var); } return p; } static void gatherconfig(RContext * context, int screen_n) { char *ptr; ptr = mygetenv("WRASTER_GAMMA", screen_n); if (ptr) { float g1, g2, g3; if (sscanf(ptr, "%f/%f/%f", &g1, &g2, &g3) != 3 || g1 <= 0.0F || g2 <= 0.0F || g3 <= 0.0F) { printf("wrlib: invalid value(s) for gamma correction \"%s\"\n", ptr); } else { context->attribs->flags |= RC_GammaCorrection; context->attribs->rgamma = g1; context->attribs->ggamma = g2; context->attribs->bgamma = g3; } } ptr = mygetenv("WRASTER_COLOR_RESOLUTION", screen_n); if (ptr) { int i; if (sscanf(ptr, "%d", &i) != 1 || i < 2 || i > 6) { printf("wrlib: invalid value for color resolution \"%s\"\n", ptr); } else { context->attribs->flags |= RC_ColorsPerChannel; context->attribs->colors_per_channel = i; } } } static void getColormap(RContext * context, int screen_number) { Colormap cmap = None; XStandardColormap *cmaps; int ncmaps, i; if (XGetRGBColormaps(context->dpy, RootWindow(context->dpy, screen_number), &cmaps, &ncmaps, XA_RGB_DEFAULT_MAP)) { for (i = 0; i < ncmaps; ++i) { if (cmaps[i].visualid == context->visual->visualid) { cmap = cmaps[i].colormap; break; } } XFree(cmaps); } if (cmap == None) { XColor color; cmap = XCreateColormap(context->dpy, RootWindow(context->dpy, screen_number), context->visual, AllocNone); color.red = color.green = color.blue = 0; XAllocColor(context->dpy, cmap, &color); context->black = color.pixel; color.red = color.green = color.blue = 0xffff; XAllocColor(context->dpy, cmap, &color); context->white = color.pixel; } context->cmap = cmap; } static int count_offset(unsigned long mask) { int i; i = 0; while ((mask & 1) == 0) { i++; mask = mask >> 1; } return i; } RContext *RCreateContext(Display * dpy, int screen_number, const RContextAttributes * attribs) { RContext *context; XGCValues gcv; context = malloc(sizeof(RContext)); if (!context) { RErrorCode = RERR_NOMEMORY; return NULL; } memset(context, 0, sizeof(RContext)); context->dpy = dpy; context->screen_number = screen_number; context->attribs = malloc(sizeof(RContextAttributes)); if (!context->attribs) { free(context); RErrorCode = RERR_NOMEMORY; return NULL; } if (!attribs) *context->attribs = DEFAULT_CONTEXT_ATTRIBS; else *context->attribs = *attribs; if (!(context->attribs->flags & RC_StandardColormap)) { context->attribs->standard_colormap_mode = RUseStdColormap; } if (!(context->attribs->flags & RC_ScalingFilter)) { context->attribs->flags |= RC_ScalingFilter; context->attribs->scaling_filter = RMitchellFilter; } /* get configuration from environment variables */ gatherconfig(context, screen_number); wraster_change_filter(context->attribs->scaling_filter); if ((context->attribs->flags & RC_VisualID)) { XVisualInfo *vinfo, templ; int nret; templ.screen = screen_number; templ.visualid = context->attribs->visualid; vinfo = XGetVisualInfo(context->dpy, VisualIDMask | VisualScreenMask, &templ, &nret); if (!vinfo || nret == 0) { free(context); RErrorCode = RERR_BADVISUALID; return NULL; } if (vinfo[0].visual == DefaultVisual(dpy, screen_number)) { context->attribs->flags |= RC_DefaultVisual; } else { XSetWindowAttributes attr; unsigned long mask; context->visual = vinfo[0].visual; context->depth = vinfo[0].depth; context->vclass = vinfo[0].class; getColormap(context, screen_number); attr.colormap = context->cmap; attr.override_redirect = True; attr.border_pixel = 0; attr.background_pixel = 0; mask = CWBorderPixel | CWColormap | CWOverrideRedirect | CWBackPixel; context->drawable = XCreateWindow(dpy, RootWindow(dpy, screen_number), 1, 1, 1, 1, 0, context->depth, CopyFromParent, context->visual, mask, &attr); } XFree(vinfo); } /* use default */ if (!context->visual) { if ((context->attribs->flags & RC_DefaultVisual) || !bestContext(dpy, screen_number, context)) { context->visual = DefaultVisual(dpy, screen_number); context->depth = DefaultDepth(dpy, screen_number); context->cmap = DefaultColormap(dpy, screen_number); context->drawable = RootWindow(dpy, screen_number); context->black = BlackPixel(dpy, screen_number); context->white = WhitePixel(dpy, screen_number); context->vclass = context->visual->class; } } gcv.function = GXcopy; gcv.graphics_exposures = False; context->copy_gc = XCreateGC(dpy, context->drawable, GCFunction | GCGraphicsExposures, &gcv); if (context->vclass == PseudoColor || context->vclass == StaticColor) { if (!setupPseudoColorColormap(context)) { free(context); return NULL; } } else if (context->vclass == GrayScale || context->vclass == StaticGray) { context->colors = allocateGrayScale(context); if (!context->colors) { free(context); return NULL; } } else if (context->vclass == TrueColor) { /* calc offsets to create a TrueColor pixel */ context->red_offset = count_offset(context->visual->red_mask); context->green_offset = count_offset(context->visual->green_mask); context->blue_offset = count_offset(context->visual->blue_mask); /* disable dithering on 24 bits visuals */ if (context->depth >= 24) context->attribs->render_mode = RBestMatchRendering; } /* check avaiability of MIT-SHM */ #ifdef USE_XSHM if (!(context->attribs->flags & RC_UseSharedMemory)) { context->attribs->flags |= RC_UseSharedMemory; context->attribs->use_shared_memory = True; } if (context->attribs->use_shared_memory) { int major, minor; Bool sharedPixmaps; context->flags.use_shared_pixmap = 0; if (!XShmQueryVersion(context->dpy, &major, &minor, &sharedPixmaps)) { context->attribs->use_shared_memory = False; } else { if (XShmPixmapFormat(context->dpy) == ZPixmap) context->flags.use_shared_pixmap = sharedPixmaps; } } #endif return context; } void RDestroyContext(RContext *context) { if (context) { if (context->copy_gc) XFreeGC(context->dpy, context->copy_gc); if (context->attribs) { if ((context->attribs->flags & RC_VisualID) && !(context->attribs->flags & RC_DefaultVisual)) XDestroyWindow(context->dpy, context->drawable); free(context->attribs); } free(context); } } static Bool bestContext(Display * dpy, int screen_number, RContext * context) { XVisualInfo *vinfo = NULL, rvinfo; int best = -1, numvis, i; long flags; XSetWindowAttributes attr; rvinfo.class = TrueColor; rvinfo.screen = screen_number; flags = VisualClassMask | VisualScreenMask; vinfo = XGetVisualInfo(dpy, flags, &rvinfo, &numvis); if (vinfo) { /* look for a TrueColor, 24-bit or more (pref 24) */ for (i = numvis - 1, best = -1; i >= 0; i--) { if (vinfo[i].depth == 24) best = i; else if (vinfo[i].depth > 24 && best < 0) best = i; } } if (best > -1) { context->visual = vinfo[best].visual; context->depth = vinfo[best].depth; context->vclass = vinfo[best].class; getColormap(context, screen_number); attr.colormap = context->cmap; attr.override_redirect = True; attr.border_pixel = 0; context->drawable = XCreateWindow(dpy, RootWindow(dpy, screen_number), 1, 1, 1, 1, 0, context->depth, CopyFromParent, context->visual, CWBorderPixel | CWColormap | CWOverrideRedirect, &attr); } if (vinfo) XFree((char *)vinfo); if (best < 0) return False; else return True; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/AUTHORS��������������������������������������������������������������������0000644�0001750�0001750�00000000000�13431646202�013144� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/flip.c���������������������������������������������������������������������0000644�0001750�0001750�00000006631�13431646202�013212� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* flip.c - image flip * * Raster graphics library * * Copyright (c) 2014 Window Maker Team * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301, USA. */ #include "config.h" #include <stdlib.h> #include <stdio.h> #include <string.h> #include <X11/Xlib.h> #include "wraster.h" #include "rotate.h" static RImage *r_flip_vertically(RImage *source); static RImage *r_flip_horizontally(RImage *source); /* Flip an image in the direction(s) specified */ RImage *RFlipImage(RImage *source, int mode) { /* Security */ if (source == NULL) return NULL; switch (mode & (RVerticalFlip | RHorizontalFlip)) { case RHorizontalFlip: return r_flip_horizontally(source); case RVerticalFlip: return r_flip_vertically(source); case RHorizontalFlip | RVerticalFlip: return wraster_rotate_image_180(source); default: return RRetainImage(source); } } RImage *r_flip_vertically(RImage *source) { RImage *target; int nwidth, nheight; int x, y; nwidth = source->width; nheight = source->height; target = RCreateImage(nwidth, nheight, (source->format != RRGBFormat)); if (!target) return NULL; if (source->format == RRGBFormat) { unsigned char *optr, *nptr; optr = source->data; nptr = target->data + 3 * (nwidth * nheight - nwidth); for (y = 0; y < nheight; y++) { for (x = 0; x < nwidth; x++) { nptr[0] = optr[0]; nptr[1] = optr[1]; nptr[2] = optr[2]; optr += 3; nptr += 3; } nptr -= (nwidth * 3) * 2; } } else { unsigned char *optr, *nptr; optr = source->data; nptr = target->data + 4 * (nwidth * nheight - nwidth); for (y = 0; y < nheight; y++) { for (x = 0; x < nwidth; x++) { nptr[0] = optr[0]; nptr[1] = optr[1]; nptr[2] = optr[2]; nptr[3] = optr[3]; optr += 4; nptr += 4; } nptr -= (nwidth * 4) * 2; } } return target; } RImage *r_flip_horizontally(RImage *source) { RImage *target; int nwidth, nheight; int x, y; nwidth = source->width; nheight = source->height; target = RCreateImage(nwidth, nheight, (source->format != RRGBFormat)); if (!target) return NULL; if (source->format == RRGBFormat) { unsigned char *optr, *nptr; optr = source->data; nptr = target->data + 3 * (nwidth - 1); for (y = nheight; y; y--) { for (x = 0; x < nwidth; x++) { nptr[0] = optr[0]; nptr[1] = optr[1]; nptr[2] = optr[2]; optr += 3; nptr -= 3; } nptr += (nwidth * 3) * 2; } } else { unsigned char *optr, *nptr; optr = source->data; nptr = target->data + 4 * (nwidth - 1); for (y = nheight; y; y--) { for (x = 0; x < nwidth; x++) { nptr[0] = optr[0]; nptr[1] = optr[1]; nptr[2] = optr[2]; nptr[3] = optr[3]; optr += 4; nptr -= 4; } nptr += (nwidth * 4) * 2; } } return target; } �������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/wraster.h������������������������������������������������������������������0000644�0001750�0001750�00000033126�13431646202�013753� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Raster graphics library * * Copyright (c) 1997-2003 Alfredo K. Kojima * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301, USA. */ /* * Environment variables: * * WRASTER_GAMMA <rgamma>/<ggamma>/<bgamma> * gamma correction value. Must be greater than 0 * Only for PseudoColor visuals. * * Default: * WRASTER_GAMMA 1/1/1 * * * If you want a specific value for a screen, append the screen number * preceded by a hash to the variable name as in * WRASTER_GAMMA#1 * for screen number 1 */ #ifndef RLRASTER_H_ #define RLRASTER_H_ /* version of the header for the library */ #define WRASTER_HEADER_VERSION 23 #include <X11/Xlib.h> #include <X11/Xutil.h> #ifdef USE_XSHM #include <X11/extensions/XShm.h> #endif /* * Define some macro to provide attributes for the compiler * * These attributes help producing better code and/or detecting bugs, however not all compiler support them * as they are not standard. * Because we're a public API header, we can't count on autoconf to detect them for us, so we use that #if * mechanism and define an internal macro appropriately. Please note that the macro are not considered being * part of the public API. */ #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) #define __wrlib_deprecated(msg) __attribute__ ((deprecated(msg))) #elif __GNUC__ >= 3 #define __wrlib_deprecated(msg) __attribute__ ((deprecated)) #else #define __wrlib_deprecated(msg) #endif #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* RBestMatchRendering or RDitheredRendering */ #define RC_RenderMode (1<<0) /* number of colors per channel for colormap in PseudoColor mode */ #define RC_ColorsPerChannel (1<<1) /* do gamma correction */ #define RC_GammaCorrection (1<<2) /* visual id to use */ #define RC_VisualID (1<<3) /* shared memory usage */ #define RC_UseSharedMemory (1<<4) /* use default instead of best visual */ #define RC_DefaultVisual (1<<5) /* filter type for smoothed scaling */ #define RC_ScalingFilter (1<<6) /* standard colormap usage */ #define RC_StandardColormap (1<<7) /* image display modes */ typedef enum { RDitheredRendering = 0, RBestMatchRendering = 1 } RRenderingMode; /* std colormap usage/creation modes */ typedef enum { RUseStdColormap, /* default: fallbacks to RIgnore if there is none defined */ RCreateStdColormap, RIgnoreStdColormap } RStdColormapMode; /* smoothed scaling filter types */ typedef enum { RBoxFilter, RTriangleFilter, RBellFilter, RBSplineFilter, RLanczos3Filter, RMitchellFilter } RScalingFilter; typedef struct RContextAttributes { int flags; RRenderingMode render_mode; int colors_per_channel; /* for PseudoColor */ float rgamma; /* gamma correction for red, */ float ggamma; /* green, */ float bgamma; /* and blue */ VisualID visualid; /* visual ID to use */ int use_shared_memory; /* True of False */ RScalingFilter scaling_filter; RStdColormapMode standard_colormap_mode; /* what to do with std cma */ } RContextAttributes; /* * describes a screen in terms of depth, visual, number of colors * we can use, if we should do dithering, and what colors to use for * dithering. */ typedef struct RContext { Display *dpy; int screen_number; Colormap cmap; RContextAttributes *attribs; GC copy_gc; Visual *visual; int depth; Window drawable; /* window to pass for XCreatePixmap().*/ /* generally = root */ int vclass; unsigned long black; unsigned long white; int red_offset; /* only used in 24bpp */ int green_offset; int blue_offset; /* only used for pseudocolor and grayscale */ XStandardColormap *std_rgb_map; /* standard RGB colormap */ XStandardColormap *std_gray_map; /* standard grayscale colormap */ int ncolors; /* total number of colors we can use */ XColor *colors; /* internal colormap */ unsigned long *pixels; /* RContext->colors[].pixel */ struct { unsigned int use_shared_pixmap:1; unsigned int optimize_for_speed:1 __wrlib_deprecated("Flag optimize_for_speed in RContext is not used anymore " "and will be removed in future version, please do not use"); } flags; } RContext; typedef struct RColor { unsigned char red; unsigned char green; unsigned char blue; unsigned char alpha; } RColor; typedef struct RHSVColor { unsigned short hue; /* 0-359 */ unsigned char saturation; /* 0-255 */ unsigned char value; /* 0-255 */ } RHSVColor; typedef struct RPoint { int x, y; } RPoint; typedef struct RSegment { int x1, y1, x2, y2; } RSegment; /* image formats */ enum RImageFormat { RRGBFormat, RRGBAFormat }; /* * internal 24bit+alpha image representation */ typedef struct RImage { unsigned char *data; /* image data RGBA or RGB */ int width, height; /* size of the image */ enum RImageFormat format; RColor background; /* background color */ int refCount; } RImage; /* * internal wrapper for XImage. Used for shm abstraction */ typedef struct RXImage { XImage *image; /* Private data. Do not access */ #ifdef USE_XSHM XShmSegmentInfo info; char is_shared; #endif } RXImage; /* note that not all operations are supported in all functions */ typedef enum { RClearOperation, /* clear with 0 */ RCopyOperation, RNormalOperation, /* same as combine */ RAddOperation, RSubtractOperation } RPixelOperation; typedef enum { RAbsoluteCoordinates = 0, RRelativeCoordinates = 1 } RCoordinatesMode; enum { RSunkenBevel = -1, RNoBevel = 0, RRaisedBevel = 1 }; /* bw compat */ #define RBEV_SUNKEN RSunkenBevel /* 1 pixel wide */ #define RBEV_RAISED RRaisedBevel /* 1 pixel wide on top/left 2 on bottom/right */ #define RBEV_RAISED2 2 /* 2 pixel width */ #define RBEV_RAISED3 3 typedef enum { RHorizontalGradient = 2, RVerticalGradient = 3, RDiagonalGradient = 4 } RGradientStyle; /* for backwards compatibility */ #define RGRD_HORIZONTAL RHorizontalGradient #define RGRD_VERTICAL RVerticalGradient #define RGRD_DIAGONAL RDiagonalGradient /* * How an image can be flipped, for RFlipImage * * Values are actually bit-mask which can be OR'd */ #define RHorizontalFlip 0x0001 #define RVerticalFlip 0x0002 /* error codes */ #define RERR_NONE 0 #define RERR_OPEN 1 /* cant open file */ #define RERR_READ 2 /* error reading from file */ #define RERR_WRITE 3 /* error writing to file */ #define RERR_NOMEMORY 4 /* out of memory */ #define RERR_NOCOLOR 5 /* out of color cells */ #define RERR_BADIMAGEFILE 6 /* image file is corrupted or invalid */ #define RERR_BADFORMAT 7 /* image file format is unknown */ #define RERR_BADINDEX 8 /* no such image index in file */ #define RERR_BADVISUALID 16 /* invalid visual ID requested for context */ #define RERR_STDCMAPFAIL 17 /* failed to created std colormap */ #define RERR_XERROR 127 /* internal X error */ #define RERR_INTERNAL 128 /* should not happen */ /* * Cleaning before application exit */ void RShutdown(void); /* * 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); char *RGetImageFileFormat(const char *file); /* * Xlib contexts */ RContext *RCreateContext(Display *dpy, int screen_number, const RContextAttributes *attribs); void RDestroyContext(RContext *context); Bool RGetClosestXColor(RContext *context, const RColor *color, XColor *retColor); /* * RImage creation */ RImage *RCreateImage(unsigned width, unsigned height, int alpha); RImage *RCreateImageFromXImage(RContext *context, XImage *image, XImage *mask); RImage *RCreateImageFromDrawable(RContext *context, Drawable drawable, Pixmap mask); RImage *RLoadImage(RContext *context, const char *file, int index); RImage* RRetainImage(RImage *image); void RReleaseImage(RImage *image); RImage *RGetImageFromXPMData(RContext *context, char **xpmData); /* * RImage storing */ Bool RSaveImage(RImage *image, const char *filename, const char *format); /* * Area manipulation */ RImage *RCloneImage(RImage *image); RImage *RGetSubImage(RImage *image, int x, int y, unsigned width, unsigned height); void RCombineImageWithColor(RImage *image, const RColor *color); void RCombineImages(RImage *image, RImage *src); void RCombineArea(RImage *image, RImage *src, int sx, int sy, unsigned width, unsigned height, int dx, int dy); void RCopyArea(RImage *image, RImage *src, int sx, int sy, unsigned width, unsigned height, int dx, int dy); void RCombineImagesWithOpaqueness(RImage *image, RImage *src, int opaqueness); void RCombineAreaWithOpaqueness(RImage *image, RImage *src, int sx, int sy, unsigned width, unsigned height, int dx, int dy, int opaqueness); void RCombineAlpha(unsigned char *d, unsigned char *s, int s_has_alpha, int width, int height, int dwi, int swi, int opacity); RImage *RScaleImage(RImage *image, unsigned new_width, unsigned new_height); RImage *RSmoothScaleImage(RImage *src, unsigned new_width, unsigned new_height); RImage *RRotateImage(RImage *image, float angle); RImage *RFlipImage(RImage *image, int mode); RImage *RMakeTiledImage(RImage *tile, unsigned width, unsigned height); RImage* RMakeCenteredImage(RImage *image, unsigned width, unsigned height, const RColor *color); /* * Drawing */ Bool RGetPixel(RImage *image, int x, int y, RColor *color); void RPutPixel(RImage *image, int x, int y, const RColor *color); void ROperatePixel(RImage *image, RPixelOperation operation, int x, int y, const RColor *color); void RPutPixels(RImage *image, const RPoint *points, int npoints, RCoordinatesMode mode, const RColor *color); void ROperatePixels(RImage *image, RPixelOperation operation, const RPoint *points, int npoints, RCoordinatesMode mode, const RColor *color); int RDrawLine(RImage *image, int x0, int y0, int x1, int y1, const RColor *color); int ROperateLine(RImage *image, RPixelOperation operation, int x0, int y0, int x1, int y1, const RColor *color); void RDrawLines(RImage *image, const RPoint *points, int npoints, RCoordinatesMode mode, const RColor *color); void ROperateLines(RImage *image, RPixelOperation operation, const RPoint *points, int npoints, RCoordinatesMode mode, const RColor *color); void ROperateRectangle(RImage *image, RPixelOperation operation, int x0, int y0, int x1, int y1, const RColor *color); void RDrawSegments(RImage *image, const RSegment *segs, int nsegs, const RColor *color); void ROperateSegments(RImage *image, RPixelOperation operation, const RSegment *segs, int nsegs, const RColor *color); /* * Color convertion */ void RRGBtoHSV(const RColor *color, RHSVColor *hsv); void RHSVtoRGB(const RHSVColor *hsv, RColor *rgb); /* * Painting */ void RClearImage(RImage *image, const RColor *color); void RLightImage(RImage *image, const RColor *color); void RFillImage(RImage *image, const RColor *color); void RBevelImage(RImage *image, int bevel_type); RImage *RRenderGradient(unsigned width, unsigned height, const RColor *from, const RColor *to, RGradientStyle style); RImage *RRenderMultiGradient(unsigned width, unsigned height, RColor **colors, RGradientStyle style); RImage *RRenderInterwovenGradient(unsigned width, unsigned height, RColor colors1[2], int thickness1, RColor colors2[2], int thickness2); /* * Convertion into X Pixmaps */ int RConvertImage(RContext *context, RImage *image, Pixmap *pixmap); int RConvertImageMask(RContext *context, RImage *image, Pixmap *pixmap, Pixmap *mask, int threshold); /* * misc. utilities */ RXImage *RCreateXImage(RContext *context, int depth, unsigned width, unsigned height); RXImage *RGetXImage(RContext *context, Drawable d, int x, int y, unsigned width, unsigned height); void RDestroyXImage(RContext *context, RXImage *ximage); void RPutXImage(RContext *context, Drawable d, GC gc, RXImage *ximage, int src_x, int src_y, int dest_x, int dest_y, unsigned width, unsigned height); /* do not free the returned string! */ const char *RMessageForError(int errorCode); int RBlurImage(RImage *image); /****** Global Variables *******/ extern int RErrorCode; #ifdef __cplusplus } #endif /* __cplusplus */ /* * The definitions below are done for internal use only * We undef them so users of the library may not misuse them */ #undef __wrlib_deprecated #endif ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/load_xpm_normalized.c������������������������������������������������������0000644�0001750�0001750�00000023464�13431646202�016312� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* nxpm.c - load "normalized" XPM image * * Raster graphics library * * Copyright (c) 1997-2003 Alfredo K. Kojima * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301, USA. */ #include <config.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <assert.h> #include <errno.h> #include "wraster.h" #include "imgformat.h" /* * Restricted support for XPM images. * * The images must be in the following "normalized" format: * * * line content * 1 signature comment * 2 ignored ( normally "static char *xpm[] = {" ) * 3 "width height color_count chars" where chars is 1 or 2 * 4 color definitions. Only c values with #rrggbb or #rrrrggggbbb * format OR None * n data * * - no comments or blank lines are allowed, except for the signature * - all lines must have at most 256 characters * - no white spaces allowed at left of each line */ #define LINEWIDTH 64 static void free_color_symbol_table(unsigned char *color_table[], unsigned short *symbol_table) { if (color_table[0]) free(color_table[0]); if (color_table[1]) free(color_table[1]); if (color_table[2]) free(color_table[2]); if (color_table[3]) free(color_table[3]); if (symbol_table) free(symbol_table); } RImage *RGetImageFromXPMData(RContext * context, char **data) { RImage *image = NULL; unsigned char *color_table[4] = { NULL, NULL, NULL, NULL }; unsigned short *symbol_table = NULL; unsigned char *r, *g, *b, *a; int i, j, k, line = 0; int transp; unsigned short color; int bsize; int w, h, ccount, csize; /* * When using libXpm we need the context argument but the code here does * not, so tell the compiler to not warn about it */ (void) context; if (sscanf(data[line++], "%i %i %i %i", &w, &h, &ccount, &csize) != 4 || w <= 0 || h <= 0 || ccount <= 0 || csize <= 0) goto bad_format; if (csize != 1 && csize != 2) goto bad_format; color_table[0] = malloc(ccount); color_table[1] = malloc(ccount); color_table[2] = malloc(ccount); color_table[3] = malloc(ccount); symbol_table = malloc(ccount * sizeof(unsigned short)); bsize = csize * w + 16; if (!color_table[0] || !color_table[1] || !color_table[2] || !color_table[3] || !symbol_table || !bsize) { RErrorCode = RERR_NOMEMORY; free_color_symbol_table(color_table, symbol_table); return NULL; } transp = 0; /* get color table */ for (i = 0; i < ccount; i++) { symbol_table[i] = data[line][0]; if (csize == 2) symbol_table[i] |= data[line][1] << 8; j = csize; while (data[line][j] != '#' && data[line][j] != 0 && data[line][j] != 'N') j++; if (data[line][j] == '#') { unsigned int red, green, blue; k = 0; j++; while (data[line][j + k] != 0) k++; if (k == 6) { if (sscanf(&(data[line][j]), "%2x%2x%2x", &red, &green, &blue) != 3) goto bad_format; } else if (k == 12) { if (sscanf(&(data[line][j]), "%4x%4x%4x", &red, &green, &blue) != 3) goto bad_format; red >>= 8; green >>= 8; blue >>= 8; } else goto bad_format; color_table[0][i] = red; color_table[1][i] = green; color_table[2][i] = blue; color_table[3][i] = 255; } else if (strncmp(&(data[line][j]), "None", 4) == 0 || strncmp(&(data[line][j]), "none", 4) == 0) { color_table[3][i] = 0; transp = 1; } else { goto bad_format; } line++; } image = RCreateImage(w, h, transp); if (!image) { free_color_symbol_table(color_table, symbol_table); return NULL; } r = image->data; g = image->data + 1; b = image->data + 2; if (image->format == RRGBAFormat) a = image->data + 3; else a = NULL; for (i = 0; i < h; i++) { if (csize == 1) { for (j = 0; j < w; j++) { color = data[line][j]; for (k = 0; k < ccount; k++) { if (symbol_table[k] == color) break; } if (k == ccount) k = 0; *r = color_table[0][k]; *g = color_table[1][k]; *b = color_table[2][k]; if (a) { *a = color_table[3][k]; r += 4; g += 4; b += 4; a += 4; } else { r += 3; g += 3; b += 3; } } } else { for (j = 0; j < w * 2; j++) { color = data[line][j++]; color |= data[line][j]; for (k = 0; k < ccount; k++) { if (symbol_table[k] == color) break; } if (k == ccount) k = 0; *r = color_table[0][k]; *g = color_table[1][k]; *b = color_table[2][k]; if (a) { *a = color_table[3][k]; r += 4; g += 4; b += 4; a += 4; } else { r += 3; g += 3; b += 3; } } } line++; } free_color_symbol_table(color_table, symbol_table); return image; bad_format: RErrorCode = RERR_BADIMAGEFILE; free_color_symbol_table(color_table, symbol_table); if (image) RReleaseImage(image); return NULL; } RImage *RLoadXPM(RContext * context, const char *file) { RImage *image = NULL; char line[LINEWIDTH + 1]; char *buffer = NULL; unsigned char *color_table[4] = { NULL, NULL, NULL, NULL }; unsigned short *symbol_table = NULL; unsigned char *r, *g, *b, *a; int i, j, k; int transp; unsigned short color; int bsize; int w, h, ccount, csize; FILE *f; /* * When using libXpm we need the context argument but the code here does * not, so tell the compiler to not warn about it */ (void) context; f = fopen(file, "rb"); if (!f) { RErrorCode = RERR_OPEN; return NULL; } /* sig */ if (!fgets(line, LINEWIDTH, f)) goto bad_file; /* declaration */ if (!fgets(line, LINEWIDTH, f)) goto bad_file; /* data */ if (!fgets(line, LINEWIDTH, f)) goto bad_file; if (line[0] == '/') if (!fgets(line, LINEWIDTH, f)) goto bad_file; if (sscanf(line, "\"%i %i %i %i\"", &w, &h, &ccount, &csize) != 4 || w <= 0 || h <= 0 || ccount <= 0 || csize <= 0) goto bad_file; if (csize != 1 && csize != 2) goto bad_format; color_table[0] = malloc(ccount); color_table[1] = malloc(ccount); color_table[2] = malloc(ccount); color_table[3] = malloc(ccount); symbol_table = malloc(ccount * sizeof(unsigned short)); bsize = csize * w + 16; buffer = malloc(bsize); if (!color_table[0] || !color_table[1] || !color_table[2] || !color_table[3] || !symbol_table || !bsize || !buffer) { RErrorCode = RERR_NOMEMORY; fclose(f); free_color_symbol_table(color_table, symbol_table); if (buffer) free(buffer); return NULL; } transp = 0; /* get color table */ for (i = 0; i < ccount; i++) { if (!fgets(line, LINEWIDTH, f)) goto bad_file; if (line[0] == '/') if (!fgets(line, LINEWIDTH, f)) goto bad_file; symbol_table[i] = line[1]; if (csize == 2) symbol_table[i] |= line[2] << 8; j = csize + 1; while (line[j] != '#' && line[j] != '"' && line[j] != 0 && line[j] != 'N') j++; if (line[j] == '#') { unsigned int red, green, blue; k = 0; j++; while (line[j + k] != '"' && line[j + k] != 0) k++; if (k == 6) { if (sscanf(&(line[j]), "%2x%2x%2x", &red, &green, &blue) != 3) goto bad_format; } else if (k == 12) { if (sscanf(&(line[j]), "%4x%4x%4x", &red, &green, &blue) != 3) goto bad_format; red >>= 8; green >>= 8; blue >>= 8; } else goto bad_format; color_table[0][i] = red; color_table[1][i] = green; color_table[2][i] = blue; color_table[3][i] = 255; } else if (strncmp(&(line[j]), "None", 4) == 0 || strncmp(&(line[j]), "none", 4) == 0) { color_table[3][i] = 0; transp = 1; } else { goto bad_format; } } image = RCreateImage(w, h, transp); if (!image) { fclose(f); free_color_symbol_table(color_table, symbol_table); if (buffer) free(buffer); return NULL; } r = image->data; g = image->data + 1; b = image->data + 2; if (image->format == RRGBAFormat) a = image->data + 3; else a = NULL; for (i = 0; i < h; i++) { if (!fgets(buffer, bsize, f)) goto bad_file; if (buffer[0] == '/') if (!fgets(buffer, bsize, f)) goto bad_file; if (csize == 1) { for (j = 1; j <= w; j++) { color = buffer[j]; for (k = 0; k < ccount; k++) { if (symbol_table[k] == color) break; } if (k == ccount) k = 0; *r = color_table[0][k]; *g = color_table[1][k]; *b = color_table[2][k]; if (a) { *a = color_table[3][k]; r += 4; g += 4; b += 4; a += 4; } else { r += 3; g += 3; b += 3; } } } else { for (j = 1; j <= w * 2; j++) { color = buffer[j++]; color |= buffer[j] << 8; for (k = 0; k < ccount; k++) { if (symbol_table[k] == color) break; } if (k == ccount) { k = 0; } *r = color_table[0][k]; *g = color_table[1][k]; *b = color_table[2][k]; if (a) { *a = color_table[3][k]; r += 4; g += 4; b += 4; a += 4; } else { r += 3; g += 3; b += 3; } } } } fclose(f); free_color_symbol_table(color_table, symbol_table); if (buffer) free(buffer); return image; bad_format: RErrorCode = RERR_BADIMAGEFILE; fclose(f); free_color_symbol_table(color_table, symbol_table); if (buffer) free(buffer); if (image) RReleaseImage(image); return NULL; bad_file: RErrorCode = RERR_BADIMAGEFILE; fclose(f); free_color_symbol_table(color_table, symbol_table); if (buffer) free(buffer); if (image) RReleaseImage(image); return NULL; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/load_jpeg.c����������������������������������������������������������������0000644�0001750�0001750�00000012611�13642357774�014220� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* jpeg.c - load JPEG image from file * * Raster graphics library * * Copyright (c) 1997-2003 Alfredo K. Kojima * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301, USA. */ #include <config.h> /* Avoid a compiler warning */ #undef HAVE_STDLIB_H #include <stdlib.h> #include <stdio.h> #include <string.h> #include <jpeglib.h> #ifdef HAVE_STDNORETURN #include <stdnoreturn.h> #endif #include "wraster.h" #include "imgformat.h" /* * <setjmp.h> is used for the optional error recovery mechanism shown in * the second part of the example. */ #include <setjmp.h> /* * ERROR HANDLING: * * The JPEG library's standard error handler (jerror.c) is divided into * several "methods" which you can override individually. This lets you * adjust the behavior without duplicating a lot of code, which you might * have to update with each future release. * * Our example here shows how to override the "error_exit" method so that * control is returned to the library's caller when a fatal error occurs, * rather than calling exit() as the standard error_exit method does. * * We use C's setjmp/longjmp facility to return control. This means that the * routine which calls the JPEG library must first execute a setjmp() call to * establish the return point. We want the replacement error_exit to do a * longjmp(). But we need to make the setjmp buffer accessible to the * error_exit routine. To do this, we make a private extension of the * standard JPEG error handler object. (If we were using C++, we'd say we * were making a subclass of the regular error handler.) * * Here's the extended error handler struct: */ struct my_error_mgr { struct jpeg_error_mgr pub; /* "public" fields */ jmp_buf setjmp_buffer; /* for return to caller */ }; typedef struct my_error_mgr *my_error_ptr; /* * Here's the routine that will replace the standard error_exit method: */ static noreturn void my_error_exit(j_common_ptr cinfo) { /* cinfo->err really points to a my_error_mgr struct, so coerce pointer */ my_error_ptr myerr = (my_error_ptr) cinfo->err; /* Always display the message. */ /* We could postpone this until after returning, if we chose. */ (*cinfo->err->output_message) (cinfo); /* Return control to the setjmp point */ longjmp(myerr->setjmp_buffer, 1); } RImage *RLoadJPEG(const char *file_name) { RImage *image = NULL; struct jpeg_decompress_struct cinfo; int i; unsigned char *ptr; JSAMPROW buffer[1], bptr; FILE *file; /* We use our private extension JPEG error handler. * Note that this struct must live as long as the main JPEG parameter * struct, to avoid dangling-pointer problems. */ struct my_error_mgr jerr; file = fopen(file_name, "rb"); if (!file) { RErrorCode = RERR_OPEN; return NULL; } cinfo.err = jpeg_std_error(&jerr.pub); jerr.pub.error_exit = my_error_exit; /* Establish the setjmp return context for my_error_exit to use. */ if (setjmp(jerr.setjmp_buffer)) { /* * If we get here, the JPEG code has signaled an error. * We need to clean up the JPEG object, close the input file, and return. */ jpeg_destroy_decompress(&cinfo); fclose(file); return NULL; } jpeg_create_decompress(&cinfo); jpeg_stdio_src(&cinfo, file); jpeg_read_header(&cinfo, TRUE); if (cinfo.image_width < 1 || cinfo.image_height < 1) { RErrorCode = RERR_BADIMAGEFILE; jpeg_destroy_decompress(&cinfo); fclose(file); return NULL; } buffer[0] = (JSAMPROW) malloc(cinfo.image_width * cinfo.num_components); if (!buffer[0]) { RErrorCode = RERR_NOMEMORY; jpeg_destroy_decompress(&cinfo); fclose(file); return NULL; } if (cinfo.jpeg_color_space == JCS_GRAYSCALE) cinfo.out_color_space = JCS_GRAYSCALE; else cinfo.out_color_space = JCS_RGB; cinfo.quantize_colors = FALSE; cinfo.do_fancy_upsampling = FALSE; cinfo.do_block_smoothing = FALSE; jpeg_calc_output_dimensions(&cinfo); image = RCreateImage(cinfo.image_width, cinfo.image_height, False); if (!image) { RErrorCode = RERR_NOMEMORY; jpeg_destroy_decompress(&cinfo); fclose(file); if (buffer[0]) free(buffer[0]); return NULL; } jpeg_start_decompress(&cinfo); ptr = image->data; if (cinfo.out_color_space == JCS_RGB) { while (cinfo.output_scanline < cinfo.output_height) { jpeg_read_scanlines(&cinfo, buffer, (JDIMENSION) 1); bptr = buffer[0]; memcpy(ptr, bptr, cinfo.image_width * 3); ptr += cinfo.image_width * 3; } } else { while (cinfo.output_scanline < cinfo.output_height) { jpeg_read_scanlines(&cinfo, buffer, (JDIMENSION) 1); bptr = buffer[0]; for (i = 0; i < cinfo.image_width; i++) { *ptr++ = *bptr; *ptr++ = *bptr; *ptr++ = *bptr++; } } } jpeg_finish_decompress(&cinfo); jpeg_destroy_decompress(&cinfo); fclose(file); if (buffer[0]) free(buffer[0]); return image; } �����������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/scale.c��������������������������������������������������������������������0000644�0001750�0001750�00000026005�13431646202�013344� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* scale.c - image scaling * * Raster graphics library * * Copyright (c) 1997-2003 Alfredo K. Kojima * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301, USA. */ #include <config.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <X11/Xlib.h> #include <math.h> #include <assert.h> #include "wraster.h" #include "scale.h" /* *---------------------------------------------------------------------- * RScaleImage-- * Creates a scaled copy of an image. * * Returns: * The new scaled image. * *---------------------------------------------------------------------- */ RImage *RScaleImage(RImage * image, unsigned new_width, unsigned new_height) { int ox; int px, py; register int x, y, t; int dx, dy; unsigned char *s; unsigned char *d; RImage *img; if (image == NULL) return NULL; if (new_width == image->width && new_height == image->height) return RCloneImage(image); img = RCreateImage(new_width, new_height, image->format == RRGBAFormat); if (!img) return NULL; /* fixed point math idea taken from Imlib by * Carsten Haitzler (Rasterman) */ dx = (image->width << 16) / new_width; dy = (image->height << 16) / new_height; py = 0; d = img->data; if (image->format == RRGBAFormat) { for (y = 0; y < new_height; y++) { t = image->width * (py >> 16); s = image->data + (t << 2); /* image->data+t*4 */ ox = 0; px = 0; for (x = 0; x < new_width; x++) { px += dx; *(d++) = *(s); *(d++) = *(s + 1); *(d++) = *(s + 2); *(d++) = *(s + 3); t = (px - ox) >> 16; ox += t << 16; s += t << 2; /* t*4 */ } py += dy; } } else { for (y = 0; y < new_height; y++) { t = image->width * (py >> 16); s = image->data + (t << 1) + t; /* image->data+t*3 */ ox = 0; px = 0; for (x = 0; x < new_width; x++) { px += dx; *(d++) = *(s); *(d++) = *(s + 1); *(d++) = *(s + 2); t = (px - ox) >> 16; ox += t << 16; s += (t << 1) + t; /* t*3 */ } py += dy; } } return img; } /* * Filtered Image Rescaling code copy/pasted from * Graphics Gems III * Public Domain 1991 by Dale Schumacher */ /* * filter function definitions */ #define box_support (0.5) static double box_filter(double t) { if ((t > -0.5) && (t <= 0.5)) return (1.0); return (0.0); } #define triangle_support (1.0) static double triangle_filter(double t) { if (t < 0.0) t = -t; if (t < 1.0) return (1.0 - t); return (0.0); } #define bell_support (1.5) static double bell_filter(double t) /* box (*) box (*) box */ { if (t < 0) t = -t; if (t < .5) return (.75 - (t * t)); if (t < 1.5) { t = (t - 1.5); return (.5 * (t * t)); } return (0.0); } #define B_spline_support (2.0) static double B_spline_filter(double t) /* box (*) box (*) box (*) box */ { double tt; if (t < 0) t = -t; if (t < 1) { tt = t * t; return ((.5 * tt * t) - tt + (2.0 / 3.0)); } else if (t < 2) { t = 2 - t; return ((1.0 / 6.0) * (t * t * t)); } return (0.0); } static double sinc(double x) { /* * The original code did this: * if (x != 0) ... * This code is unsafe, it should be: * if (fabs(x) > EPSILON) ... * * But the call to fabs is already done in the *ONLY* function * that call sinc: 'Lanczos3_filter' * * The goal was to avoid a Divide-by-0 error, now we also * avoid a +/-inf result too */ x *= WM_PI; if (x > 1.0E-9) return (sin(x) / x); return (1.0); } #define Lanczos3_support (3.0) static double Lanczos3_filter(double t) { if (t < 0) t = -t; if (t < 3.0) return (sinc(t) * sinc(t / 3.0)); return (0.0); } #define Mitchell_support (2.0) #define B (1.0 / 3.0) #define C (1.0 / 3.0) static double Mitchell_filter(double t) { double tt; tt = t * t; if (t < 0) t = -t; if (t < 1.0) { t = (((12.0 - 9.0 * B - 6.0 * C) * (t * tt)) + ((-18.0 + 12.0 * B + 6.0 * C) * tt) + (6.0 - 2 * B)); return (t / 6.0); } else if (t < 2.0) { t = (((-1.0 * B - 6.0 * C) * (t * tt)) + ((6.0 * B + 30.0 * C) * tt) + ((-12.0 * B - 48.0 * C) * t) + (8.0 * B + 24 * C)); return (t / 6.0); } return (0.0); } static double (*filterf)(double) = Mitchell_filter; static double fwidth = Mitchell_support; void wraster_change_filter(RScalingFilter type) { switch (type) { case RBoxFilter: filterf = box_filter; fwidth = box_support; break; case RTriangleFilter: filterf = triangle_filter; fwidth = triangle_support; break; case RBellFilter: filterf = bell_filter; fwidth = bell_support; break; case RBSplineFilter: filterf = B_spline_filter; fwidth = B_spline_support; break; case RLanczos3Filter: filterf = Lanczos3_filter; fwidth = Lanczos3_support; break; default: case RMitchellFilter: filterf = Mitchell_filter; fwidth = Mitchell_support; break; } } /* * image rescaling routine */ typedef struct { int pixel; double weight; } CONTRIB; typedef struct { int n; /* number of contributors */ CONTRIB *p; /* pointer to list of contributions */ } CLIST; /* clamp the input to the specified range */ #define CLAMP(v,l,h) ((v)<(l) ? (l) : (v) > (h) ? (h) : v) /* return of calloc is not checked if NULL in the function below! */ RImage *RSmoothScaleImage(RImage * src, unsigned new_width, unsigned new_height) { CLIST *contrib; /* array of contribution lists */ RImage *tmp; /* intermediate image */ double xscale, yscale; /* zoom scale factors */ int i, j, k; /* loop variables */ int n; /* pixel number */ double center, left, right; /* filter calculation variables */ double width, fscale; /* filter calculation variables */ double rweight, gweight, bweight; RImage *dst; unsigned char *p; unsigned char *sp; int sch = src->format == RRGBAFormat ? 4 : 3; dst = RCreateImage(new_width, new_height, False); /* create intermediate image to hold horizontal zoom */ tmp = RCreateImage(dst->width, src->height, False); xscale = (double)new_width / (double)src->width; yscale = (double)new_height / (double)src->height; /* pre-calculate filter contributions for a row */ contrib = (CLIST *) calloc(new_width, sizeof(CLIST)); if (xscale < 1.0) { width = fwidth / xscale; fscale = 1.0 / xscale; for (i = 0; i < new_width; ++i) { contrib[i].n = 0; contrib[i].p = (CONTRIB *) calloc((int) ceil(width * 2 + 1), sizeof(CONTRIB)); center = (double)i / xscale; left = ceil(center - width); right = floor(center + width); for (j = left; j <= right; ++j) { rweight = center - (double)j; rweight = (*filterf) (rweight / fscale) / fscale; if (j < 0) { n = -j; } else if (j >= src->width) { n = (src->width - j) + src->width - 1; } else { n = j; } k = contrib[i].n++; contrib[i].p[k].pixel = n * sch; contrib[i].p[k].weight = rweight; } } } else { for (i = 0; i < new_width; ++i) { contrib[i].n = 0; contrib[i].p = (CONTRIB *) calloc((int) ceil(fwidth * 2 + 1), sizeof(CONTRIB)); center = (double)i / xscale; left = ceil(center - fwidth); right = floor(center + fwidth); for (j = left; j <= right; ++j) { rweight = center - (double)j; rweight = (*filterf) (rweight); if (j < 0) { n = -j; } else if (j >= src->width) { n = (src->width - j) + src->width - 1; } else { n = j; } k = contrib[i].n++; contrib[i].p[k].pixel = n * sch; contrib[i].p[k].weight = rweight; } } } /* apply filter to zoom horizontally from src to tmp */ p = tmp->data; for (k = 0; k < tmp->height; ++k) { CONTRIB *pp; sp = src->data + src->width * k * sch; for (i = 0; i < tmp->width; ++i) { rweight = gweight = bweight = 0.0; pp = contrib[i].p; for (j = 0; j < contrib[i].n; ++j) { rweight += sp[pp[j].pixel] * pp[j].weight; gweight += sp[pp[j].pixel + 1] * pp[j].weight; bweight += sp[pp[j].pixel + 2] * pp[j].weight; } *p++ = CLAMP(rweight, 0, 255); *p++ = CLAMP(gweight, 0, 255); *p++ = CLAMP(bweight, 0, 255); } } /* free the memory allocated for horizontal filter weights */ for (i = 0; i < new_width; ++i) { free(contrib[i].p); } free(contrib); /* pre-calculate filter contributions for a column */ contrib = (CLIST *) calloc(dst->height, sizeof(CLIST)); if (yscale < 1.0) { width = fwidth / yscale; fscale = 1.0 / yscale; for (i = 0; i < dst->height; ++i) { contrib[i].n = 0; contrib[i].p = (CONTRIB *) calloc((int) ceil(width * 2 + 1), sizeof(CONTRIB)); center = (double)i / yscale; left = ceil(center - width); right = floor(center + width); for (j = left; j <= right; ++j) { rweight = center - (double)j; rweight = (*filterf) (rweight / fscale) / fscale; if (j < 0) { n = -j; } else if (j >= tmp->height) { n = (tmp->height - j) + tmp->height - 1; } else { n = j; } k = contrib[i].n++; contrib[i].p[k].pixel = n * 3; contrib[i].p[k].weight = rweight; } } } else { for (i = 0; i < dst->height; ++i) { contrib[i].n = 0; contrib[i].p = (CONTRIB *) calloc((int) ceil(fwidth * 2 + 1), sizeof(CONTRIB)); center = (double)i / yscale; left = ceil(center - fwidth); right = floor(center + fwidth); for (j = left; j <= right; ++j) { rweight = center - (double)j; rweight = (*filterf) (rweight); if (j < 0) { n = -j; } else if (j >= tmp->height) { n = (tmp->height - j) + tmp->height - 1; } else { n = j; } k = contrib[i].n++; contrib[i].p[k].pixel = n * 3; contrib[i].p[k].weight = rweight; } } } /* apply filter to zoom vertically from tmp to dst */ sp = malloc(tmp->height * 3); for (k = 0; k < new_width; ++k) { CONTRIB *pp; p = dst->data + k * 3; /* copy a column into a row */ { int i; unsigned char *p, *d; d = sp; for (i = tmp->height, p = tmp->data + k * 3; i-- > 0; p += tmp->width * 3) { *d++ = *p; *d++ = *(p + 1); *d++ = *(p + 2); } } for (i = 0; i < new_height; ++i) { rweight = gweight = bweight = 0.0; pp = contrib[i].p; for (j = 0; j < contrib[i].n; ++j) { rweight += sp[pp[j].pixel] * pp[j].weight; gweight += sp[pp[j].pixel + 1] * pp[j].weight; bweight += sp[pp[j].pixel + 2] * pp[j].weight; } *p = CLAMP(rweight, 0, 255); *(p + 1) = CLAMP(gweight, 0, 255); *(p + 2) = CLAMP(bweight, 0, 255); p += new_width * 3; } } free(sp); /* free the memory allocated for vertical filter weights */ for (i = 0; i < dst->height; ++i) { free(contrib[i].p); } free(contrib); RReleaseImage(tmp); return dst; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/xutil.h��������������������������������������������������������������������0000644�0001750�0001750�00000001545�13431646202�013431� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Raster graphics library * * Copyright (c) 2014 Window Maker Team * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library. */ #ifndef WRASTER_XUTIL_H #define WRASTER_XUTIL_H #ifdef USE_XSHM Pixmap R_CreateXImageMappedPixmap(RContext *context, RXImage *ximage); #endif #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/convert.c������������������������������������������������������������������0000644�0001750�0001750�00000063357�13431646202�013750� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* convert.c - convert RImage to Pixmap * * Raster graphics library * * Copyright (c) 1997-2003 Alfredo K. Kojima * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301, USA. */ /* Problems: * 1. Using Grayscale visual with Dithering crashes wmaker * 2. Ghost dock/appicon is wrong in Pseudocolor, Staticgray, Grayscale */ #include <config.h> #include <X11/Xlib.h> #include <X11/Xutil.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <assert.h> #include "wraster.h" #include "convert.h" #include "xutil.h" #define NFREE(n) if (n) free(n) #define HAS_ALPHA(I) ((I)->format == RRGBAFormat) typedef struct RConversionTable { unsigned short table[256]; unsigned short index; struct RConversionTable *next; } RConversionTable; typedef struct RStdConversionTable { unsigned int table[256]; unsigned short mult; unsigned short max; struct RStdConversionTable *next; } RStdConversionTable; static RConversionTable *conversionTable = NULL; static RStdConversionTable *stdConversionTable = NULL; static void release_conversion_table(void) { RConversionTable *tmp = conversionTable; while (tmp) { RConversionTable *tmp_to_delete = tmp; tmp = tmp->next; free(tmp_to_delete); } conversionTable = NULL; } static void release_std_conversion_table(void) { RStdConversionTable *tmp = stdConversionTable; while (tmp) { RStdConversionTable *tmp_to_delete = tmp; tmp = tmp->next; free(tmp_to_delete); } stdConversionTable = NULL; } void r_destroy_conversion_tables(void) { release_conversion_table(); release_std_conversion_table(); } static unsigned short *computeTable(unsigned short mask) { RConversionTable *tmp = conversionTable; int i; while (tmp) { if (tmp->index == mask) break; tmp = tmp->next; } if (tmp) return tmp->table; tmp = (RConversionTable *) malloc(sizeof(RConversionTable)); if (tmp == NULL) return NULL; for (i = 0; i < 256; i++) tmp->table[i] = (i * mask + 0x7f) / 0xff; tmp->index = mask; tmp->next = conversionTable; conversionTable = tmp; return tmp->table; } static unsigned int *computeStdTable(unsigned int mult, unsigned int max) { RStdConversionTable *tmp = stdConversionTable; unsigned int i; while (tmp) { if (tmp->mult == mult && tmp->max == max) break; tmp = tmp->next; } if (tmp) return tmp->table; tmp = (RStdConversionTable *) malloc(sizeof(RStdConversionTable)); if (tmp == NULL) return NULL; for (i = 0; i < 256; i++) { tmp->table[i] = (i * max) / 0xff * mult; } tmp->mult = mult; tmp->max = max; tmp->next = stdConversionTable; stdConversionTable = tmp; return tmp->table; } /***************************************************************************/ static void convertTrueColor_generic(RXImage * ximg, RImage * image, signed char *err, signed char *nerr, const unsigned short *rtable, const unsigned short *gtable, const unsigned short *btable, const int dr, const int dg, const int db, const unsigned short roffs, const unsigned short goffs, const unsigned short boffs) { signed char *terr; int x, y, r, g, b; int pixel; int rer, ger, ber; unsigned char *ptr = image->data; int channels = (HAS_ALPHA(image) ? 4 : 3); /* convert and dither the image to XImage */ for (y = 0; y < image->height; y++) { nerr[0] = 0; nerr[1] = 0; nerr[2] = 0; for (x = 0; x < image->width; x++, ptr += channels) { /* reduce pixel */ pixel = *ptr + err[x]; if (pixel < 0) pixel = 0; else if (pixel > 0xff) pixel = 0xff; r = rtable[pixel]; /* calc error */ rer = pixel - r * dr; /* reduce pixel */ pixel = *(ptr + 1) + err[x + 1]; if (pixel < 0) pixel = 0; else if (pixel > 0xff) pixel = 0xff; g = gtable[pixel]; /* calc error */ ger = pixel - g * dg; /* reduce pixel */ pixel = *(ptr + 2) + err[x + 2]; if (pixel < 0) pixel = 0; else if (pixel > 0xff) pixel = 0xff; b = btable[pixel]; /* calc error */ ber = pixel - b * db; pixel = (r << roffs) | (g << goffs) | (b << boffs); XPutPixel(ximg->image, x, y, pixel); /* distribute error */ r = (rer * 3) / 8; g = (ger * 3) / 8; b = (ber * 3) / 8; /* x+1, y */ err[x + 3 * 1] += r; err[x + 1 + 3 * 1] += g; err[x + 2 + 3 * 1] += b; /* x, y+1 */ nerr[x] += r; nerr[x + 1] += g; nerr[x + 2] += b; /* x+1, y+1 */ nerr[x + 3 * 1] = rer - 2 * r; nerr[x + 1 + 3 * 1] = ger - 2 * g; nerr[x + 2 + 3 * 1] = ber - 2 * b; } /* skip to next line */ terr = err; err = nerr; nerr = terr; } /* redither the 1st line to distribute error better */ ptr = image->data; y = 0; nerr[0] = 0; nerr[1] = 0; nerr[2] = 0; for (x = 0; x < image->width; x++, ptr += channels) { /* reduce pixel */ pixel = *ptr + err[x]; if (pixel < 0) pixel = 0; else if (pixel > 0xff) pixel = 0xff; r = rtable[pixel]; /* calc error */ rer = pixel - r * dr; /* reduce pixel */ pixel = *(ptr + 1) + err[x + 1]; if (pixel < 0) pixel = 0; else if (pixel > 0xff) pixel = 0xff; g = gtable[pixel]; /* calc error */ ger = pixel - g * dg; /* reduce pixel */ pixel = *(ptr + 2) + err[x + 2]; if (pixel < 0) pixel = 0; else if (pixel > 0xff) pixel = 0xff; b = btable[pixel]; /* calc error */ ber = pixel - b * db; pixel = (r << roffs) | (g << goffs) | (b << boffs); XPutPixel(ximg->image, x, y, pixel); /* distribute error */ r = (rer * 3) / 8; g = (ger * 3) / 8; b = (ber * 3) / 8; /* x+1, y */ err[x + 3 * 1] += r; err[x + 1 + 3 * 1] += g; err[x + 2 + 3 * 1] += b; /* x, y+1 */ nerr[x] += r; nerr[x + 1] += g; nerr[x + 2] += b; /* x+1, y+1 */ nerr[x + 3 * 1] = rer - 2 * r; nerr[x + 1 + 3 * 1] = ger - 2 * g; nerr[x + 2 + 3 * 1] = ber - 2 * b; } } static RXImage *image2TrueColor(RContext * ctx, RImage * image) { RXImage *ximg; unsigned short rmask, gmask, bmask; unsigned short roffs, goffs, boffs; unsigned short *rtable, *gtable, *btable; int channels = (HAS_ALPHA(image) ? 4 : 3); ximg = RCreateXImage(ctx, ctx->depth, image->width, image->height); if (!ximg) { return NULL; } roffs = ctx->red_offset; goffs = ctx->green_offset; boffs = ctx->blue_offset; rmask = ctx->visual->red_mask >> roffs; gmask = ctx->visual->green_mask >> goffs; bmask = ctx->visual->blue_mask >> boffs; rtable = computeTable(rmask); gtable = computeTable(gmask); btable = computeTable(bmask); if (rtable == NULL || gtable == NULL || btable == NULL) { RErrorCode = RERR_NOMEMORY; RDestroyXImage(ctx, ximg); return NULL; } if (ctx->attribs->render_mode == RBestMatchRendering) { int ofs; unsigned long r, g, b; int x, y; unsigned long pixel; unsigned char *ptr = image->data; /* fake match */ #ifdef WRLIB_DEBUG fputs("true color match\n", stderr); #endif if (rmask == 0xff && gmask == 0xff && bmask == 0xff) { for (y = 0; y < image->height; y++) { for (x = 0; x < image->width; x++, ptr += channels) { /* reduce pixel */ r = ptr[0]; g = ptr[1]; b = ptr[2]; pixel = (r << roffs) | (g << goffs) | (b << boffs); XPutPixel(ximg->image, x, y, pixel); } } } else { for (y = 0, ofs = 0; y < image->height; y++) { for (x = 0; x < image->width; x++, ofs += channels - 3) { /* reduce pixel */ r = rtable[ptr[ofs++]]; g = gtable[ptr[ofs++]]; b = btable[ptr[ofs++]]; pixel = (r << roffs) | (g << goffs) | (b << boffs); XPutPixel(ximg->image, x, y, pixel); } } } } else { /* dither */ const int dr = 0xff / rmask; const int dg = 0xff / gmask; const int db = 0xff / bmask; #ifdef WRLIB_DEBUG fputs("true color dither\n", stderr); #endif { signed char *err; signed char *nerr; int ch = (HAS_ALPHA(image) ? 4 : 3); err = malloc(ch * (image->width + 2)); nerr = malloc(ch * (image->width + 2)); if (!err || !nerr) { NFREE(err); NFREE(nerr); RErrorCode = RERR_NOMEMORY; RDestroyXImage(ctx, ximg); return NULL; } memset(err, 0, ch * (image->width + 2)); memset(nerr, 0, ch * (image->width + 2)); convertTrueColor_generic(ximg, image, err, nerr, rtable, gtable, btable, dr, dg, db, roffs, goffs, boffs); free(err); free(nerr); } } return ximg; } /***************************************************************************/ static void convertPseudoColor_to_8(RXImage * ximg, RImage * image, signed char *err, signed char *nerr, const unsigned short *rtable, const unsigned short *gtable, const unsigned short *btable, const int dr, const int dg, const int db, unsigned long *pixels, int cpc) { signed char *terr; int x, y, r, g, b; int pixel; int rer, ger, ber; unsigned char *ptr = image->data; unsigned char *optr = (unsigned char *)ximg->image->data; int channels = (HAS_ALPHA(image) ? 4 : 3); int cpcpc = cpc * cpc; /* convert and dither the image to XImage */ for (y = 0; y < image->height; y++) { nerr[0] = 0; nerr[1] = 0; nerr[2] = 0; for (x = 0; x < image->width * 3; x += 3, ptr += channels) { /* reduce pixel */ pixel = *ptr + err[x]; if (pixel < 0) pixel = 0; else if (pixel > 0xff) pixel = 0xff; r = rtable[pixel]; /* calc error */ rer = pixel - r * dr; /* reduce pixel */ pixel = *(ptr + 1) + err[x + 1]; if (pixel < 0) pixel = 0; else if (pixel > 0xff) pixel = 0xff; g = gtable[pixel]; /* calc error */ ger = pixel - g * dg; /* reduce pixel */ pixel = *(ptr + 2) + err[x + 2]; if (pixel < 0) pixel = 0; else if (pixel > 0xff) pixel = 0xff; b = btable[pixel]; /* calc error */ ber = pixel - b * db; *optr++ = pixels[r * cpcpc + g * cpc + b]; /* distribute error */ r = (rer * 3) / 8; g = (ger * 3) / 8; b = (ber * 3) / 8; /* x+1, y */ err[x + 3 * 1] += r; err[x + 1 + 3 * 1] += g; err[x + 2 + 3 * 1] += b; /* x, y+1 */ nerr[x] += r; nerr[x + 1] += g; nerr[x + 2] += b; /* x+1, y+1 */ nerr[x + 3 * 1] = rer - 2 * r; nerr[x + 1 + 3 * 1] = ger - 2 * g; nerr[x + 2 + 3 * 1] = ber - 2 * b; } /* skip to next line */ terr = err; err = nerr; nerr = terr; optr += ximg->image->bytes_per_line - image->width; } } static RXImage *image2PseudoColor(RContext * ctx, RImage * image) { RXImage *ximg; register int x, y, r, g, b; unsigned char *ptr; unsigned long pixel; const int cpc = ctx->attribs->colors_per_channel; const unsigned short rmask = cpc - 1; /* different sizes could be used */ const unsigned short gmask = rmask; /* for r,g,b */ const unsigned short bmask = rmask; unsigned short *rtable, *gtable, *btable; const int cpccpc = cpc * cpc; int channels = (HAS_ALPHA(image) ? 4 : 3); ximg = RCreateXImage(ctx, ctx->depth, image->width, image->height); if (!ximg) { return NULL; } ptr = image->data; /* Tables are same at the moment because rmask==gmask==bmask. */ rtable = computeTable(rmask); gtable = computeTable(gmask); btable = computeTable(bmask); if (rtable == NULL || gtable == NULL || btable == NULL) { RErrorCode = RERR_NOMEMORY; RDestroyXImage(ctx, ximg); return NULL; } if (ctx->attribs->render_mode == RBestMatchRendering) { /* fake match */ #ifdef WRLIB_DEBUG fprintf(stderr, "pseudo color match with %d colors per channel\n", cpc); #endif for (y = 0; y < image->height; y++) { for (x = 0; x < image->width; x++, ptr += channels - 3) { /* reduce pixel */ r = rtable[*ptr++]; g = gtable[*ptr++]; b = btable[*ptr++]; pixel = r * cpccpc + g * cpc + b; /*data[ofs] = ctx->colors[pixel].pixel; */ XPutPixel(ximg->image, x, y, ctx->colors[pixel].pixel); } } } else { /* dither */ signed char *err; signed char *nerr; const int dr = 0xff / rmask; const int dg = 0xff / gmask; const int db = 0xff / bmask; #ifdef WRLIB_DEBUG fprintf(stderr, "pseudo color dithering with %d colors per channel\n", cpc); #endif err = malloc(4 * (image->width + 3)); nerr = malloc(4 * (image->width + 3)); if (!err || !nerr) { NFREE(err); NFREE(nerr); RErrorCode = RERR_NOMEMORY; RDestroyXImage(ctx, ximg); return NULL; } memset(err, 0, 4 * (image->width + 3)); memset(nerr, 0, 4 * (image->width + 3)); convertPseudoColor_to_8(ximg, image, err + 4, nerr + 4, rtable, gtable, btable, dr, dg, db, ctx->pixels, cpc); free(err); free(nerr); } return ximg; } /* * For standard colormap */ static RXImage *image2StandardPseudoColor(RContext * ctx, RImage * image) { RXImage *ximg; register int x, y, r, g, b; unsigned char *ptr; unsigned long pixel; unsigned char *data; unsigned int *rtable, *gtable, *btable; unsigned int base_pixel = ctx->std_rgb_map->base_pixel; int channels = (HAS_ALPHA(image) ? 4 : 3); ximg = RCreateXImage(ctx, ctx->depth, image->width, image->height); if (!ximg) { return NULL; } ptr = image->data; data = (unsigned char *)ximg->image->data; rtable = computeStdTable(ctx->std_rgb_map->red_mult, ctx->std_rgb_map->red_max); gtable = computeStdTable(ctx->std_rgb_map->green_mult, ctx->std_rgb_map->green_max); btable = computeStdTable(ctx->std_rgb_map->blue_mult, ctx->std_rgb_map->blue_max); if (rtable == NULL || gtable == NULL || btable == NULL) { RErrorCode = RERR_NOMEMORY; RDestroyXImage(ctx, ximg); return NULL; } if (ctx->attribs->render_mode == RBestMatchRendering) { for (y = 0; y < image->height; y++) { for (x = 0; x < image->width; x++, ptr += channels) { /* reduce pixel */ pixel = (rtable[*ptr] + gtable[*(ptr + 1)] + btable[*(ptr + 2)] + base_pixel) & 0xffffffff; XPutPixel(ximg->image, x, y, pixel); } } } else { /* dither */ signed short *err, *nerr; signed short *terr; int rer, ger, ber; int x1, ofs; #ifdef WRLIB_DEBUG fprintf(stderr, "pseudo color dithering with %d colors per channel\n", ctx->attribs->colors_per_channel); #endif err = (short *)malloc(3 * (image->width + 2) * sizeof(short)); nerr = (short *)malloc(3 * (image->width + 2) * sizeof(short)); if (!err || !nerr) { NFREE(err); NFREE(nerr); RErrorCode = RERR_NOMEMORY; RDestroyXImage(ctx, ximg); return NULL; } for (x = 0, x1 = 0; x < image->width * 3; x1 += channels - 3) { err[x++] = ptr[x1++]; err[x++] = ptr[x1++]; err[x++] = ptr[x1++]; } err[x] = err[x + 1] = err[x + 2] = 0; /* convert and dither the image to XImage */ for (y = 0, ofs = 0; y < image->height; y++) { if (y < image->height - 1) { int x1; for (x = 0, x1 = (y + 1) * image->width * channels; x < image->width * 3; x1 += channels - 3) { nerr[x++] = ptr[x1++]; nerr[x++] = ptr[x1++]; nerr[x++] = ptr[x1++]; } /* last column */ x1 -= channels; nerr[x++] = ptr[x1++]; nerr[x++] = ptr[x1++]; nerr[x++] = ptr[x1++]; } for (x = 0; x < image->width * 3; x += 3, ofs++) { /* reduce pixel */ if (err[x] > 0xff) err[x] = 0xff; else if (err[x] < 0) err[x] = 0; if (err[x + 1] > 0xff) err[x + 1] = 0xff; else if (err[x + 1] < 0) err[x + 1] = 0; if (err[x + 2] > 0xff) err[x + 2] = 0xff; else if (err[x + 2] < 0) err[x + 2] = 0; r = rtable[err[x]]; g = gtable[err[x + 1]]; b = btable[err[x + 2]]; pixel = r + g + b; data[ofs] = base_pixel + pixel; /* calc error */ rer = err[x] - (ctx->colors[pixel].red >> 8); ger = err[x + 1] - (ctx->colors[pixel].green >> 8); ber = err[x + 2] - (ctx->colors[pixel].blue >> 8); /* distribute error */ err[x + 3 * 1] += (rer * 7) / 16; err[x + 1 + 3 * 1] += (ger * 7) / 16; err[x + 2 + 3 * 1] += (ber * 7) / 16; nerr[x] += (rer * 5) / 16; nerr[x + 1] += (ger * 5) / 16; nerr[x + 2] += (ber * 5) / 16; if (x > 0) { nerr[x - 3 * 1] += (rer * 3) / 16; nerr[x - 3 * 1 + 1] += (ger * 3) / 16; nerr[x - 3 * 1 + 2] += (ber * 3) / 16; } nerr[x + 3 * 1] += rer / 16; nerr[x + 1 + 3 * 1] += ger / 16; nerr[x + 2 + 3 * 1] += ber / 16; } /* skip to next line */ terr = err; err = nerr; nerr = terr; ofs += ximg->image->bytes_per_line - image->width; } free(err); free(nerr); } ximg->image->data = (char *)data; return ximg; } static RXImage *image2GrayScale(RContext * ctx, RImage * image) { RXImage *ximg; register int x, y, g; unsigned char *ptr; const int cpc = ctx->attribs->colors_per_channel; unsigned short gmask; unsigned short *table; unsigned char *data; int channels = (HAS_ALPHA(image) ? 4 : 3); ximg = RCreateXImage(ctx, ctx->depth, image->width, image->height); if (!ximg) { return NULL; } ptr = image->data; data = (unsigned char *)ximg->image->data; if (ctx->vclass == StaticGray) gmask = (1 << ctx->depth) - 1; /* use all grays */ else gmask = cpc * cpc * cpc - 1; table = computeTable(gmask); if (table == NULL) { RErrorCode = RERR_NOMEMORY; RDestroyXImage(ctx, ximg); return NULL; } if (ctx->attribs->render_mode == RBestMatchRendering) { /* fake match */ #ifdef WRLIB_DEBUG fprintf(stderr, "grayscale match with %d colors per channel\n", cpc); #endif for (y = 0; y < image->height; y++) { for (x = 0; x < image->width; x++) { /* reduce pixel */ g = table[(*ptr * 30 + *(ptr + 1) * 59 + *(ptr + 2) * 11) / 100]; ptr += channels; /*data[ofs] = ctx->colors[g].pixel; */ XPutPixel(ximg->image, x, y, ctx->colors[g].pixel); } } } else { /* dither */ short *gerr; short *ngerr; short *terr; int ger; const int dg = 0xff / gmask; #ifdef WRLIB_DEBUG fprintf(stderr, "grayscale dither with %d colors per channel\n", cpc); #endif gerr = (short *)malloc((image->width + 2) * sizeof(short)); ngerr = (short *)malloc((image->width + 2) * sizeof(short)); if (!gerr || !ngerr) { NFREE(gerr); NFREE(ngerr); RErrorCode = RERR_NOMEMORY; RDestroyXImage(ctx, ximg); return NULL; } for (x = 0, y = 0; x < image->width; x++, y += channels) { gerr[x] = (ptr[y] * 30 + ptr[y + 1] * 59 + ptr[y + 2] * 11) / 100; } gerr[x] = 0; /* convert and dither the image to XImage */ for (y = 0; y < image->height; y++) { if (y < image->height - 1) { int x1; for (x = 0, x1 = (y + 1) * image->width * channels; x < image->width; x++, x1 += channels) { ngerr[x] = (ptr[x1] * 30 + ptr[x1 + 1] * 59 + ptr[x1 + 2] * 11) / 100; } /* last column */ x1 -= channels; ngerr[x] = (ptr[x1] * 30 + ptr[x1 + 1] * 59 + ptr[x1 + 2] * 11) / 100; } for (x = 0; x < image->width; x++) { /* reduce pixel */ if (gerr[x] > 0xff) gerr[x] = 0xff; else if (gerr[x] < 0) gerr[x] = 0; g = table[gerr[x]]; /*data[ofs] = ctx->colors[g].pixel; */ XPutPixel(ximg->image, x, y, ctx->colors[g].pixel); /* calc error */ ger = gerr[x] - g * dg; /* distribute error */ g = (ger * 3) / 8; /* x+1, y */ gerr[x + 1] += g; /* x, y+1 */ ngerr[x] += g; /* x+1, y+1 */ ngerr[x + 1] += ger - 2 * g; } /* skip to next line */ terr = gerr; gerr = ngerr; ngerr = terr; } free(gerr); free(ngerr); } ximg->image->data = (char *)data; return ximg; } static RXImage *image2Bitmap(RContext * ctx, RImage * image, int threshold) { RXImage *ximg; unsigned char *alpha; int x, y; ximg = RCreateXImage(ctx, 1, image->width, image->height); if (!ximg) { return NULL; } alpha = image->data + 3; for (y = 0; y < image->height; y++) { for (x = 0; x < image->width; x++) { XPutPixel(ximg->image, x, y, (*alpha <= threshold ? 0 : 1)); alpha += 4; } } return ximg; } int RConvertImage(RContext * context, RImage * image, Pixmap * pixmap) { RXImage *ximg = NULL; #ifdef USE_XSHM Pixmap tmp; #endif assert(context != NULL); assert(image != NULL); assert(pixmap != NULL); switch (context->vclass) { case TrueColor: ximg = image2TrueColor(context, image); break; case PseudoColor: case StaticColor: if (context->attribs->standard_colormap_mode != RIgnoreStdColormap) ximg = image2StandardPseudoColor(context, image); else ximg = image2PseudoColor(context, image); break; case GrayScale: case StaticGray: ximg = image2GrayScale(context, image); break; } if (!ximg) { return False; } *pixmap = XCreatePixmap(context->dpy, context->drawable, image->width, image->height, context->depth); #ifdef USE_XSHM if (context->flags.use_shared_pixmap && ximg->is_shared) tmp = R_CreateXImageMappedPixmap(context, ximg); else tmp = None; if (tmp) { /* * We have to copy the shm Pixmap into a normal Pixmap because * otherwise, we would have to control when Pixmaps are freed so * that we can detach their shm segments. This is a problem if the * program crash, leaving stale shared memory segments in the * system (lots of them). But with some work, we can optimize * things and remove this XCopyArea. This will require * explicitly freeing all pixmaps when exiting or restarting * wmaker. */ XCopyArea(context->dpy, tmp, *pixmap, context->copy_gc, 0, 0, image->width, image->height, 0, 0); XFreePixmap(context->dpy, tmp); } else { RPutXImage(context, *pixmap, context->copy_gc, ximg, 0, 0, 0, 0, image->width, image->height); } #else /* !USE_XSHM */ RPutXImage(context, *pixmap, context->copy_gc, ximg, 0, 0, 0, 0, image->width, image->height); #endif /* !USE_XSHM */ RDestroyXImage(context, ximg); return True; } /* make the gc permanent (create with context creation). * GC creation is very expensive. altering its properties is not. -Dan */ int RConvertImageMask(RContext * context, RImage * image, Pixmap * pixmap, Pixmap * mask, int threshold) { GC gc; XGCValues gcv; RXImage *ximg = NULL; assert(context != NULL); assert(image != NULL); assert(pixmap != NULL); assert(mask != NULL); if (!RConvertImage(context, image, pixmap)) return False; if (image->format == RRGBFormat) { *mask = None; return True; } ximg = image2Bitmap(context, image, threshold); if (!ximg) { return False; } *mask = XCreatePixmap(context->dpy, context->drawable, image->width, image->height, 1); gcv.foreground = context->black; gcv.background = context->white; gcv.graphics_exposures = False; gc = XCreateGC(context->dpy, *mask, GCForeground | GCBackground | GCGraphicsExposures, &gcv); RPutXImage(context, *mask, gc, ximg, 0, 0, 0, 0, image->width, image->height); RDestroyXImage(context, ximg); XFreeGC(context->dpy, gc); return True; } Bool RGetClosestXColor(RContext * context, const RColor * color, XColor * retColor) { if (context->vclass == TrueColor) { unsigned short rmask, gmask, bmask; unsigned short roffs, goffs, boffs; unsigned short *rtable, *gtable, *btable; roffs = context->red_offset; goffs = context->green_offset; boffs = context->blue_offset; rmask = context->visual->red_mask >> roffs; gmask = context->visual->green_mask >> goffs; bmask = context->visual->blue_mask >> boffs; rtable = computeTable(rmask); gtable = computeTable(gmask); btable = computeTable(bmask); retColor->pixel = (((unsigned long) rtable[color->red]) << roffs) | (((unsigned long) gtable[color->green]) << goffs) | (((unsigned long) btable[color->blue]) << boffs); retColor->red = color->red << 8; retColor->green = color->green << 8; retColor->blue = color->blue << 8; retColor->flags = DoRed | DoGreen | DoBlue; } else if (context->vclass == PseudoColor || context->vclass == StaticColor) { if (context->attribs->standard_colormap_mode != RIgnoreStdColormap) { unsigned int *rtable, *gtable, *btable; rtable = computeStdTable(context->std_rgb_map->red_mult, context->std_rgb_map->red_max); gtable = computeStdTable(context->std_rgb_map->green_mult, context->std_rgb_map->green_max); btable = computeStdTable(context->std_rgb_map->blue_mult, context->std_rgb_map->blue_max); if (rtable == NULL || gtable == NULL || btable == NULL) { RErrorCode = RERR_NOMEMORY; return False; } retColor->pixel = (rtable[color->red] + gtable[color->green] + btable[color->blue] + context->std_rgb_map->base_pixel) & 0xffffffff; retColor->red = color->red << 8; retColor->green = color->green << 8; retColor->blue = color->blue << 8; retColor->flags = DoRed | DoGreen | DoBlue; } else { const int cpc = context->attribs->colors_per_channel; const unsigned short rmask = cpc - 1; /* different sizes could be used */ const unsigned short gmask = rmask; /* for r,g,b */ const unsigned short bmask = rmask; unsigned short *rtable, *gtable, *btable; const int cpccpc = cpc * cpc; int index; rtable = computeTable(rmask); gtable = computeTable(gmask); btable = computeTable(bmask); if (rtable == NULL || gtable == NULL || btable == NULL) { RErrorCode = RERR_NOMEMORY; return False; } index = rtable[color->red] * cpccpc + gtable[color->green] * cpc + btable[color->blue]; *retColor = context->colors[index]; } } else if (context->vclass == GrayScale || context->vclass == StaticGray) { const int cpc = context->attribs->colors_per_channel; unsigned short gmask; unsigned short *table; int index; if (context->vclass == StaticGray) gmask = (1 << context->depth) - 1; /* use all grays */ else gmask = cpc * cpc * cpc - 1; table = computeTable(gmask); if (!table) return False; index = table[(color->red * 30 + color->green * 59 + color->blue * 11) / 100]; *retColor = context->colors[index]; } else { RErrorCode = RERR_INTERNAL; return False; } return True; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/NEWS�����������������������������������������������������������������������0000644�0001750�0001750�00000002116�13431646202�012605� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������** API and ABI modifications since wmaker 0.92.0 RLightImage: ADDED ---------------------------------------------------- Sat Apr 21 09:12:09 EEST 2001 -Dan API change ---------- To allow a retain/release mechanism to be implemented for RImages, the following new functions were introduced: RImage* RRetainImage(RImage* image); void RReleaseImage(RImage* image); RDestroyImage() is now aliased to RReleaseImage(), but because it's no longer compatible with the new semantics, it was only kept to allow a smoother transition and the ability to run programs that were not updated yet. Do _NOT_ continue to use RDestroyImage(), because it will be removed in a future version. You should start using RReleaseImage() in your code, and also update all your existing programs to use RReleaseImage(). Also keep in mind that its name is also misleading: RDestroyImage() no longer destroys images, unless they are not retained in some other place. All existing code will continue to function with the new lib, even if not recompiled, but you are encouraged to update your code to these changes ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/load.c���������������������������������������������������������������������0000644�0001750�0001750�00000021451�13431646202�013174� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* load.c - load image from file * * Raster graphics library * * Copyright (c) 1997-2003 Alfredo K. Kojima * Copyright (c) 2014 Window Maker Team * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301, USA. */ #include <config.h> #include <errno.h> #include <X11/Xlib.h> #include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <fcntl.h> #include <sys/stat.h> #include <string.h> #include <time.h> #include <assert.h> #include "wraster.h" #include "imgformat.h" typedef struct RCachedImage { RImage *image; char *file; time_t last_modif; /* last time file was modified */ time_t last_use; /* last time image was used */ } RCachedImage; /* * Number of image to keep in the cache */ static int RImageCacheSize = -1; #define IMAGE_CACHE_DEFAULT_NBENTRIES 8 #define IMAGE_CACHE_MAXIMUM_NBENTRIES 256 /* * Max. size of image (in pixels) to store in the cache */ static int RImageCacheMaxImage = -1; /* 0 = any size */ #define IMAGE_CACHE_DEFAULT_MAXPIXELS (64 * 64) #define IMAGE_CACHE_MAXIMUM_MAXPIXELS (256 * 256) static RCachedImage *RImageCache; static WRImgFormat identFile(const char *path); char **RSupportedFileFormats(void) { static char *tmp[IM_TYPES + 2]; int i = 0; /* built-in */ tmp[i++] = "XPM"; /* built-in PNM here refers to anymap format: PPM, PGM, PBM */ tmp[i++] = "PNM"; /* * PPM is a just a sub-type of PNM, but it has to be in the list * for compatibility with legacy programs that may expect it but * not the new PNM type */ tmp[i++] = "PPM"; #ifdef USE_TIFF tmp[i++] = "TIFF"; #endif #ifdef USE_PNG tmp[i++] = "PNG"; #endif #ifdef USE_JPEG tmp[i++] = "JPEG"; #endif #ifdef USE_GIF tmp[i++] = "GIF"; #endif #ifdef USE_WEBP tmp[i++] = "WEBP"; #endif tmp[i] = NULL; return tmp; } static void init_cache(void) { char *tmp; tmp = getenv("RIMAGE_CACHE"); if (!tmp || sscanf(tmp, "%i", &RImageCacheSize) != 1) RImageCacheSize = IMAGE_CACHE_DEFAULT_NBENTRIES; if (RImageCacheSize < 0) RImageCacheSize = 0; if (RImageCacheSize > IMAGE_CACHE_MAXIMUM_NBENTRIES) RImageCacheSize = IMAGE_CACHE_MAXIMUM_NBENTRIES; tmp = getenv("RIMAGE_CACHE_SIZE"); if (!tmp || sscanf(tmp, "%i", &RImageCacheMaxImage) != 1) RImageCacheMaxImage = IMAGE_CACHE_DEFAULT_MAXPIXELS; if (RImageCacheMaxImage < 0) RImageCacheMaxImage = 0; if (RImageCacheMaxImage > IMAGE_CACHE_MAXIMUM_MAXPIXELS) RImageCacheMaxImage = IMAGE_CACHE_MAXIMUM_MAXPIXELS; if (RImageCacheSize > 0) { RImageCache = malloc(sizeof(RCachedImage) * RImageCacheSize); if (RImageCache == NULL) { printf("wrlib: out of memory for image cache\n"); return; } memset(RImageCache, 0, sizeof(RCachedImage) * RImageCacheSize); } } void RReleaseCache(void) { int i; if (RImageCacheSize > 0) { for (i = 0; i < RImageCacheSize; i++) { if (RImageCache[i].file) { RReleaseImage(RImageCache[i].image); free(RImageCache[i].file); } } free(RImageCache); RImageCache = NULL; RImageCacheSize = -1; } } RImage *RLoadImage(RContext *context, const char *file, int index) { RImage *image = NULL; int i; struct stat st; assert(file != NULL); if (RImageCacheSize < 0) init_cache(); if (RImageCacheSize > 0) { for (i = 0; i < RImageCacheSize; i++) { if (RImageCache[i].file && strcmp(file, RImageCache[i].file) == 0) { if (stat(file, &st) == 0 && st.st_mtime == RImageCache[i].last_modif) { RImageCache[i].last_use = time(NULL); return RCloneImage(RImageCache[i].image); } else { free(RImageCache[i].file); RImageCache[i].file = NULL; RReleaseImage(RImageCache[i].image); } } } } switch (identFile(file)) { case IM_ERROR: return NULL; case IM_UNKNOWN: #ifdef USE_MAGICK /* generic file format support using ImageMagick * BMP, PCX, PICT, SVG, ... */ image = RLoadMagick(file); break; #else RErrorCode = RERR_BADFORMAT; return NULL; #endif case IM_XPM: image = RLoadXPM(context, file); break; #ifdef USE_TIFF case IM_TIFF: image = RLoadTIFF(file, index); break; #endif /* USE_TIFF */ #ifdef USE_PNG case IM_PNG: image = RLoadPNG(context, file); break; #endif /* USE_PNG */ #ifdef USE_JPEG case IM_JPEG: image = RLoadJPEG(file); break; #endif /* USE_JPEG */ #ifdef USE_GIF case IM_GIF: image = RLoadGIF(file, index); break; #endif /* USE_GIF */ #ifdef USE_WEBP case IM_WEBP: image = RLoadWEBP(file); break; #endif /* USE_WEBP */ case IM_PPM: image = RLoadPPM(file); break; default: RErrorCode = RERR_BADFORMAT; return NULL; } /* store image in cache */ if (RImageCacheSize > 0 && image && (RImageCacheMaxImage == 0 || RImageCacheMaxImage >= image->width * image->height)) { time_t oldest = time(NULL); int oldest_idx = 0; int done = 0; for (i = 0; i < RImageCacheSize; i++) { if (!RImageCache[i].file) { RImageCache[i].file = malloc(strlen(file) + 1); strcpy(RImageCache[i].file, file); RImageCache[i].image = RCloneImage(image); RImageCache[i].last_modif = st.st_mtime; RImageCache[i].last_use = time(NULL); done = 1; break; } else { if (oldest > RImageCache[i].last_use) { oldest = RImageCache[i].last_use; oldest_idx = i; } } } /* if no slot available, dump least recently used one */ if (!done) { free(RImageCache[oldest_idx].file); RReleaseImage(RImageCache[oldest_idx].image); RImageCache[oldest_idx].file = malloc(strlen(file) + 1); strcpy(RImageCache[oldest_idx].file, file); RImageCache[oldest_idx].image = RCloneImage(image); RImageCache[oldest_idx].last_modif = st.st_mtime; RImageCache[oldest_idx].last_use = time(NULL); } } return image; } char *RGetImageFileFormat(const char *file) { switch (identFile(file)) { case IM_XPM: return "XPM"; #ifdef USE_TIFF case IM_TIFF: return "TIFF"; #endif /* USE_TIFF */ #ifdef USE_PNG case IM_PNG: return "PNG"; #endif /* USE_PNG */ #ifdef USE_JPEG case IM_JPEG: return "JPEG"; #endif /* USE_JPEG */ #ifdef USE_GIF case IM_GIF: return "GIF"; #endif /* USE_GIF */ #ifdef USE_WEBP case IM_WEBP: return "WEBP"; #endif /* USE_WEBP */ case IM_PPM: return "PPM"; default: return NULL; } } static WRImgFormat identFile(const char *path) { FILE *file; unsigned char buffer[32]; size_t nread; assert(path != NULL); for (;;) { file = fopen(path, "rb"); if (file != NULL) break; if (errno != EINTR) { RErrorCode = RERR_OPEN; return IM_ERROR; } } nread = fread(buffer, 1, sizeof(buffer), file); if (nread < sizeof(buffer) || ferror(file)) { fclose(file); RErrorCode = RERR_READ; return IM_ERROR; } fclose(file); /* check for XPM */ if (strncmp((char *)buffer, "/* XPM */", 9) == 0) return IM_XPM; /* check for TIFF */ if ((buffer[0] == 'I' && buffer[1] == 'I' && buffer[2] == '*' && buffer[3] == 0) || (buffer[0] == 'M' && buffer[1] == 'M' && buffer[2] == 0 && buffer[3] == '*')) return IM_TIFF; /* * check for PNG * * The signature is defined in the PNG specifiation: * http://www.libpng.org/pub/png/spec/1.2/PNG-Structure.html * it is valid for v1.0, v1.1, v1.2 and ISO version */ if (buffer[0] == 137 && buffer[1] == 80 && buffer[2] == 78 && buffer[3] == 71 && buffer[4] == 13 && buffer[5] == 10 && buffer[6] == 26 && buffer[7] == 10) return IM_PNG; /* check for PBM or PGM or PPM */ if (buffer[0] == 'P' && (buffer[1] > '0' && buffer[1] < '7') && (buffer[2] == 0x0a || buffer[2] == 0x20 || buffer[2] == 0x09 || buffer[2] == 0x0d)) return IM_PPM; /* check for JPEG */ if (buffer[0] == 0xff && buffer[1] == 0xd8) return IM_JPEG; /* check for GIF */ if (buffer[0] == 'G' && buffer[1] == 'I' && buffer[2] == 'F' && buffer[3] == '8' && (buffer[4] == '7' || buffer[4] == '9') && buffer[5] == 'a') return IM_GIF; /* check for WEBP */ if (buffer[0] == 'R' && buffer[1] == 'I' && buffer[2] == 'F' && buffer[3] == 'F' && buffer[8] == 'W' && buffer[9] == 'E' && buffer[10] == 'B' && buffer[11] == 'P' && buffer[12] == 'V' && buffer[13] == 'P' && buffer[14] == '8' && (buffer[15] == ' ' /* Simple File Format (Lossy) */ || buffer[15] == 'L' /* Simple File Format (Lossless) */ || buffer[15] == 'X')) /* Extended File Format */ return IM_WEBP; return IM_UNKNOWN; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/load_png.c�����������������������������������������������������������������0000644�0001750�0001750�00000012065�13642357774�014062� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* png.c - load PNG image from file * * Raster graphics library * * Copyright (c) 1997-2003 Alfredo K. Kojima * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301, USA. */ #include <config.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <png.h> #include "wraster.h" #include "imgformat.h" RImage *RLoadPNG(RContext *context, const char *file) { char *tmp; RImage *image = NULL; FILE *f; png_structp png; png_infop pinfo, einfo; png_color_16p bkcolor; int alpha; int x, y, i; double gamma, sgamma; png_uint_32 width, height; int depth, junk, color_type; png_bytep *png_rows; unsigned char *ptr; f = fopen(file, "rb"); if (!f) { RErrorCode = RERR_OPEN; return NULL; } png = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, (png_error_ptr) NULL, (png_error_ptr) NULL); if (!png) { RErrorCode = RERR_NOMEMORY; fclose(f); return NULL; } pinfo = png_create_info_struct(png); if (!pinfo) { RErrorCode = RERR_NOMEMORY; fclose(f); png_destroy_read_struct(&png, NULL, NULL); return NULL; } einfo = png_create_info_struct(png); if (!einfo) { RErrorCode = RERR_NOMEMORY; fclose(f); png_destroy_read_struct(&png, &pinfo, NULL); return NULL; } RErrorCode = RERR_INTERNAL; #if PNG_LIBPNG_VER - 0 < 10400 if (setjmp(png->jmpbuf)) { #else if (setjmp(png_jmpbuf(png))) { #endif fclose(f); png_destroy_read_struct(&png, &pinfo, &einfo); if (image) RReleaseImage(image); return NULL; } png_init_io(png, f); png_read_info(png, pinfo); png_get_IHDR(png, pinfo, &width, &height, &depth, &color_type, &junk, &junk, &junk); /* sanity check */ if (width < 1 || height < 1) { fclose(f); png_destroy_read_struct(&png, &pinfo, &einfo); RErrorCode = RERR_BADIMAGEFILE; return NULL; } /* check for an alpha channel */ if (png_get_valid(png, pinfo, PNG_INFO_tRNS)) alpha = True; else alpha = (color_type & PNG_COLOR_MASK_ALPHA); /* allocate RImage */ image = RCreateImage(width, height, alpha); if (!image) { fclose(f); png_destroy_read_struct(&png, &pinfo, &einfo); return NULL; } /* normalize to 8bpp with alpha channel */ if (color_type == PNG_COLOR_TYPE_PALETTE && depth <= 8) png_set_expand(png); if (color_type == PNG_COLOR_TYPE_GRAY && depth <= 8) png_set_expand(png); if (png_get_valid(png, pinfo, PNG_INFO_tRNS)) png_set_expand(png); if (depth == 16) png_set_strip_16(png); if (color_type == PNG_COLOR_TYPE_GRAY || color_type == PNG_COLOR_TYPE_GRAY_ALPHA) png_set_gray_to_rgb(png); /* set gamma correction */ if ((context->attribs->flags & RC_GammaCorrection) && context->depth != 8) { sgamma = (context->attribs->rgamma + context->attribs->ggamma + context->attribs->bgamma) / 3; } else if ((tmp = getenv("DISPLAY_GAMMA")) != NULL) { sgamma = atof(tmp); if (sgamma < 1.0E-3) sgamma = 1; } else { /* blah */ sgamma = 2.2; } if (png_get_gAMA(png, pinfo, &gamma)) png_set_gamma(png, sgamma, gamma); else png_set_gamma(png, sgamma, 0.45); /* do not remove, required for png_read_update_info */ png_set_interlace_handling(png); /* do the transforms */ png_read_update_info(png, pinfo); /* set background color */ if (png_get_bKGD(png, pinfo, &bkcolor)) { image->background.red = bkcolor->red >> 8; image->background.green = bkcolor->green >> 8; image->background.blue = bkcolor->blue >> 8; } png_rows = calloc(height, sizeof(png_bytep)); if (!png_rows) { RErrorCode = RERR_NOMEMORY; fclose(f); RReleaseImage(image); png_destroy_read_struct(&png, &pinfo, &einfo); return NULL; } for (y = 0; y < height; y++) { png_rows[y] = malloc(png_get_rowbytes(png, pinfo)); if (!png_rows[y]) { RErrorCode = RERR_NOMEMORY; fclose(f); RReleaseImage(image); png_destroy_read_struct(&png, &pinfo, &einfo); while (y-- > 0) if (png_rows[y]) free(png_rows[y]); free(png_rows); return NULL; } } /* read data */ png_read_image(png, png_rows); png_read_end(png, einfo); png_destroy_read_struct(&png, &pinfo, &einfo); fclose(f); ptr = image->data; /* convert to RImage */ if (alpha) { for (y = 0; y < height; y++) { for (x = 0, i = width * 4; x < i; x++, ptr++) { *ptr = *(png_rows[y] + x); } } } else { for (y = 0; y < height; y++) { for (x = 0, i = width * 3; x < i; x++, ptr++) { *ptr = *(png_rows[y] + x); } } } for (y = 0; y < height; y++) if (png_rows[y]) free(png_rows[y]); free(png_rows); return image; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/convert.h������������������������������������������������������������������0000644�0001750�0001750�00000002240�13431646202�013735� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Raster graphics library * * Copyright (c) 2014 Window Maker Team * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301, USA. */ /* * Functions to convert images to given color depths * * The functions here are for WRaster library's internal use only, * Please use functions in 'wraster.h' in applications */ #ifndef WRASTER_CONVERT_H #define WRASTER_CONVERT_H /* * Function for to release internal Conversion Tables */ void r_destroy_conversion_tables(void); #endif ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/load_ppm.c�����������������������������������������������������������������0000644�0001750�0001750�00000017735�13431646202�014062� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* ppm.c - load PPM image from file * * Raster graphics library * * Copyright (c) 1997-2003 Alfredo K. Kojima * Copyright (c) 2014 Window Maker Team * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301, USA. */ #include <config.h> #include <X11/Xlib.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <limits.h> #include "wraster.h" #include "imgformat.h" /* * fileio.c - routines to read elements based on Netpbm * * Copyright (C) 1988 by Jef Poskanzer. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation. This software is provided "as is" without express or * implied warranty. */ char pm_getc(FILE * const fileP) { int ich; char ch; ich = getc(fileP); if (ich == EOF) fprintf(stderr, "EOF / read error reading a byte\n"); ch = (char)ich; if (ch == '#') { do { ich = getc(fileP); if (ich == EOF) fprintf(stderr, "EOF / read error reading a byte\n"); ch = (char)ich; } while (ch != '\n' && ch != '\r'); } return ch; } unsigned char pm_getrawbyte(FILE * const file) { int iby; iby = getc(file); if (iby == EOF) fprintf(stderr, "EOF / read error reading a one-byte sample\n"); return (unsigned char)iby; } int pm_getuint(FILE * const ifP) { char ch; unsigned int i; do { ch = pm_getc(ifP); } while (ch == ' ' || ch == '\t' || ch == '\n' || ch == '\r'); if (ch < '0' || ch > '9') fprintf(stderr, "junk in file where an unsigned integer should be\n"); i = 0; do { unsigned int const digitVal = ch - '0'; if (i > INT_MAX / 10) { fprintf(stderr, "ASCII decimal integer in file is too large to be processed\n"); return -1; } i *= 10; if (i > INT_MAX - digitVal) { fprintf(stderr, "ASCII decimal integer in file is too large to be processed\n"); return -1; } i += digitVal; ch = pm_getc(ifP); } while (ch >= '0' && ch <= '9'); return i; } /* end of fileio.c re-used code */ /******************************************************************************************/ /* PGM: support for portable graymap ascii and binary encoding */ static RImage *load_graymap(FILE * file, int w, int h, int max, int raw) { RImage *image; unsigned char *ptr; int x, y; if (raw != '2' && raw != '5') { RErrorCode = RERR_BADFORMAT; return NULL; } image = RCreateImage(w, h, 0); if (!image) { RErrorCode = RERR_NOMEMORY; return NULL; } if (max < 256) { ptr = image->data; if (raw == '2') { int val; for (y = 0; y < h; y++) { for (x = 0; x < w; x++) { val = pm_getuint(file); if (val > max || val < 0) { RErrorCode = RERR_BADIMAGEFILE; RReleaseImage(image); return NULL; } val = val * 255 / max; *(ptr++) = val; *(ptr++) = val; *(ptr++) = val; } } } else { if (raw == '5') { char *buf; buf = malloc(w + 1); if (!buf) { RErrorCode = RERR_NOMEMORY; RReleaseImage(image); return NULL; } for (y = 0; y < h; y++) { if (!fread(buf, w, 1, file)) { free(buf); RErrorCode = RERR_BADIMAGEFILE; RReleaseImage(image); return NULL; } for (x = 0; x < w; x++) { *(ptr++) = buf[x]; *(ptr++) = buf[x]; *(ptr++) = buf[x]; } } free(buf); } } } return image; } /* PPM: support for portable pixmap ascii and binary encoding */ static RImage *load_pixmap(FILE * file, int w, int h, int max, int raw) { RImage *image; int i; unsigned char *ptr; if (raw != '3' && raw != '6') { RErrorCode = RERR_BADFORMAT; return NULL; } image = RCreateImage(w, h, 0); if (!image) { RErrorCode = RERR_NOMEMORY; return NULL; } ptr = image->data; if (max < 256) { if (raw == '3') { int x, y, val; for (y = 0; y < h; y++) { for (x = 0; x < w; x++) { for (i = 0; i < 3; i++) { val = pm_getuint(file); if (val > max || val < 0) { RErrorCode = RERR_BADIMAGEFILE; RReleaseImage(image); return NULL; } val = val * 255 / max; *(ptr++) = val; } } } } else if (raw == '6') { char buf[3]; i = 0; while (i < w * h) { if (fread(buf, 1, 3, file) != 3) { RErrorCode = RERR_BADIMAGEFILE; RReleaseImage(image); return NULL; } *(ptr++) = buf[0]; *(ptr++) = buf[1]; *(ptr++) = buf[2]; i++; } } } return image; } /* PBM: support for portable bitmap ascii and binary encoding */ static RImage *load_bitmap(FILE * file, int w, int h, int max, int raw) { RImage *image; int val; unsigned char *ptr; if (raw != '1' && raw != '4') { RErrorCode = RERR_BADFORMAT; return NULL; } image = RCreateImage(w, h, 0); if (!image) { RErrorCode = RERR_NOMEMORY; return NULL; } ptr = image->data; if (raw == '1') { int i = 0; while (i < w * h) { val = pm_getuint(file); if (val > max || val < 0) { RErrorCode = RERR_BADIMAGEFILE; RReleaseImage(image); return NULL; } val = (val == 0) ? 255 : 0; *(ptr++) = val; *(ptr++) = val; *(ptr++) = val; i++; } } else { if (raw == '4') { unsigned char buf; int bitshift; int x, y; for (y = 0; y < h; y++) { bitshift = -1; for (x = 0; x < w; x++) { if (bitshift == -1) { buf = pm_getrawbyte(file); bitshift = 7; } val = (buf >> bitshift) & 1; val = (val == 0) ? 255 : 0; --bitshift; *(ptr++) = val; *(ptr++) = val; *(ptr++) = val; } } } } return image; } RImage *RLoadPPM(const char *file_name) { FILE *file; RImage *image = NULL; char buffer[256]; int w, h, m; int type; file = fopen(file_name, "rb"); if (!file) { RErrorCode = RERR_OPEN; return NULL; } /* get signature */ if (!fgets(buffer, 255, file)) { RErrorCode = RERR_BADIMAGEFILE; fclose(file); return NULL; } /* accept bitmaps, pixmaps or graymaps */ if (buffer[0] != 'P' || (buffer[1] < '1' || buffer[1] > '6')) { RErrorCode = RERR_BADFORMAT; fclose(file); return NULL; } type = buffer[1]; /* skip comments */ while (1) { if (!fgets(buffer, 255, file)) { RErrorCode = RERR_BADIMAGEFILE; fclose(file); return NULL; } if (buffer[0] != '#') break; } /* get size */ if (sscanf(buffer, "%i %i", &w, &h) != 2 || w < 1 || h < 1) { /* Short file */ RErrorCode = RERR_BADIMAGEFILE; fclose(file); return NULL; } if (type != '1' && type != '4') { if (!fgets(buffer, 255, file)) { RErrorCode = RERR_BADIMAGEFILE; fclose(file); return NULL; } /* get max value */ if (sscanf(buffer, "%i", &m) != 1 || m < 1) { /* Short file */ RErrorCode = RERR_BADIMAGEFILE; fclose(file); return NULL; } } else { m = 1; } if (type == '1' || type == '4') { /* Portable Bit Map: P1 is for 'plain' (ascii, rare), P4 for 'regular' (binary) */ image = load_bitmap(file, w, h, m, type); } else if (type == '2' || type == '5') { /* Portable Gray Map: P2 is for 'plain' (ascii, rare), P5 for 'regular' (binary) */ image = load_graymap(file, w, h, m, type); } else if (type == '3' || type == '6') { /* Portable Pix Map: P3 is for 'plain' (ascii, rare), P6 for 'regular' (binary) */ image = load_pixmap(file, w, h, m, type); } fclose(file); return image; } �����������������������������������WindowMaker-0.95.9/wrlib/save_xpm.c�����������������������������������������������������������������0000644�0001750�0001750�00000013211�13431646202�014072� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* nxpm.c - load "normalized" XPM image * * Raster graphics library * * Copyright (c) 1997-2003 Alfredo K. Kojima * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301, USA. */ #include <config.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <assert.h> #include <errno.h> #include "wraster.h" #include "imgformat.h" /* * Restricted support for XPM images. * * The images must be in the following "normalized" format: * * * line content * 1 signature comment * 2 ignored ( normally "static char *xpm[] = {" ) * 3 "width height color_count chars" where chars is 1 or 2 * 4 color definitions. Only c values with #rrggbb or #rrrrggggbbb * format OR None * n data * * - no comments or blank lines are allowed, except for the signature * - all lines must have at most 256 characters * - no white spaces allowed at left of each line */ typedef struct XPMColor { unsigned char red; unsigned char green; unsigned char blue; int index; struct XPMColor *next; } XPMColor; #define I2CHAR(i) ((i)<12 ? (i)+'0' : ((i)<38 ? (i)+'A'-12 : (i)+'a'-38)) #define CINDEX(xpmc) (((unsigned)(xpmc)->red)<<16|((unsigned)(xpmc)->green)<<8|((unsigned)(xpmc)->blue)) static XPMColor *lookfor(XPMColor * list, int index) { if (!list) return NULL; for (; list != NULL; list = list->next) { if (CINDEX(list) == index) return list; } return NULL; } /* * Looks for the color in the colormap and inserts if it is not found. * * list is a binary search list. The unbalancing problem is just ignored. * * Returns False on error */ static Bool addcolor(XPMColor ** list, unsigned r, unsigned g, unsigned b, int *colors) { XPMColor *tmpc; XPMColor *newc; int index; index = r << 16 | g << 8 | b; tmpc = lookfor(*list, index); if (tmpc) return True; newc = malloc(sizeof(XPMColor)); if (!newc) { RErrorCode = RERR_NOMEMORY; return False; } newc->red = r; newc->green = g; newc->blue = b; newc->next = *list; *list = newc; (*colors)++; return True; } static char *index2str(char *buffer, int index, int charsPerPixel) { int i; for (i = 0; i < charsPerPixel; i++) { buffer[i] = I2CHAR(index & 63); index >>= 6; } buffer[i] = 0; return buffer; } static void outputcolormap(FILE * file, XPMColor * colormap, int charsPerPixel) { int index; char buf[128]; if (!colormap) return; for (index = 0; colormap != NULL; colormap = colormap->next, index++) { colormap->index = index; fprintf(file, "\"%s c #%02x%02x%02x\",\n", index2str(buf, index, charsPerPixel), colormap->red, colormap->green, colormap->blue); } } static void freecolormap(XPMColor * colormap) { XPMColor *tmp; while (colormap) { tmp = colormap->next; free(colormap); colormap = tmp; } } /* save routine is common to internal support and library support */ Bool RSaveXPM(RImage * image, const char *filename) { FILE *file; int x, y; int colorCount = 0; int charsPerPixel; XPMColor *colormap = NULL; XPMColor *tmpc; int i; int ok = 0; unsigned char *r, *g, *b, *a; char transp[16]; char buf[128]; file = fopen(filename, "wb+"); if (!file) { RErrorCode = RERR_OPEN; return False; } fprintf(file, "/* XPM */\n"); fprintf(file, "static char *image[] = {\n"); r = image->data; g = image->data + 1; b = image->data + 2; if (image->format == RRGBAFormat) a = image->data + 3; else a = NULL; /* first pass: make colormap for the image */ if (a) colorCount = 1; for (y = 0; y < image->height; y++) { for (x = 0; x < image->width; x++) { if (!a || *a > 127) { if (!addcolor(&colormap, *r, *g, *b, &colorCount)) { goto uhoh; } } if (a) { r += 4; g += 4; b += 4; a += 4; } else { r += 3; g += 3; b += 3; } } } charsPerPixel = 1; while ((1 << charsPerPixel * 6) < colorCount) charsPerPixel++; /* write header info */ fprintf(file, "\"%i %i %i %i\",\n", image->width, image->height, colorCount, charsPerPixel); /* write colormap data */ if (a) { for (i = 0; i < charsPerPixel; i++) transp[i] = ' '; transp[i] = 0; fprintf(file, "\"%s c None\",\n", transp); } outputcolormap(file, colormap, charsPerPixel); r = image->data; g = image->data + 1; b = image->data + 2; if (image->format == RRGBAFormat) a = image->data + 3; else a = NULL; /* write data */ for (y = 0; y < image->height; y++) { fprintf(file, "\""); for (x = 0; x < image->width; x++) { if (!a || *a > 127) { tmpc = lookfor(colormap, (unsigned)*r << 16 | (unsigned)*g << 8 | (unsigned)*b); fprintf(file, "%s", index2str(buf, tmpc->index, charsPerPixel)); } else { fprintf(file, "%s", transp); } if (a) { r += 4; g += 4; b += 4; a += 4; } else { r += 3; g += 3; b += 3; } } if (y < image->height - 1) fprintf(file, "\",\n"); else fprintf(file, "\"};\n"); } ok = 1; uhoh: errno = 0; fclose(file); if (ok && errno == ENOSPC) { RErrorCode = RERR_WRITE; } freecolormap(colormap); return ok ? True : False; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/draw.c���������������������������������������������������������������������0000644�0001750�0001750�00000026551�13431646202�013220� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* draw.c - pixel plotting, line drawing * * Raster graphics library * * Copyright (c) 1998-2003 Dan Pascu * Copyright (c) 2000-2003 Alfredo K. Kojima * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301, USA. */ #include <config.h> #include <stdio.h> #include <stdlib.h> #include <assert.h> #include "wraster.h" #define MIN(a,b) ((a) < (b) ? (a) : (b)) #define MAX(a,b) ((a) > (b) ? (a) : (b)) /* * Returns the color of the pixel at coordinates (x, y) in "color". */ Bool RGetPixel(RImage * image, int x, int y, RColor * color) { int ofs; assert(image != NULL); if (x < 0 || x >= image->width || y < 0 || y >= image->height) return False; if (image->format == RRGBAFormat) { ofs = (y * image->width + x) * 4; color->red = image->data[ofs++]; color->green = image->data[ofs++]; color->blue = image->data[ofs++]; color->alpha = image->data[ofs]; } else { ofs = (y * image->width + x) * 3; color->red = image->data[ofs++]; color->green = image->data[ofs++]; color->blue = image->data[ofs]; /* If the image does not have alpha channel, we consider alpha 255 */ color->alpha = 255; } return True; } void RPutPixel(RImage *image, int x, int y, const RColor *color) { unsigned char *ptr; assert(image != NULL); assert(color != NULL); if (x < 0 || x >= image->width || y < 0 || y >= image->height) return; if (image->format == RRGBAFormat) { ptr = image->data + (y * image->width + x) * 4; } else { ptr = image->data + (y * image->width + x) * 3; } if (color->alpha == 255) { *ptr++ = color->red; *ptr++ = color->green; *ptr++ = color->blue; if (image->format == RRGBAFormat) { *ptr = 255; } } else { register int alpha, nalpha, r, g, b; r = color->red; g = color->green; b = color->blue; alpha = color->alpha; nalpha = 255 - alpha; *ptr = (((int)*ptr * nalpha) + (r * alpha)) / 256; ptr++; *ptr = (((int)*ptr * nalpha) + (g * alpha)) / 256; ptr++; *ptr = (((int)*ptr * nalpha) + (b * alpha)) / 256; ptr++; if (image->format == RRGBAFormat) { *ptr = alpha + ((int)*ptr * nalpha) / 256; } } } static void operatePixel(RImage *image, int ofs, RPixelOperation operation, const RColor *color) { unsigned char *sr, *sg, *sb, *sa; register int alpha, nalpha, tmp; int hasAlpha = image->format == RRGBAFormat; alpha = color->alpha; nalpha = 255 - alpha; sr = image->data + ofs * (hasAlpha ? 4 : 3); sg = image->data + ofs * (hasAlpha ? 4 : 3) + 1; sb = image->data + ofs * (hasAlpha ? 4 : 3) + 2; sa = image->data + ofs * (hasAlpha ? 4 : 3) + 3; switch (operation) { case RClearOperation: *sr = 0; *sg = 0; *sb = 0; if (hasAlpha) *sa = 0; break; case RCopyOperation: *sr = color->red; *sg = color->green; *sb = color->blue; if (hasAlpha) *sa = color->alpha; break; case RNormalOperation: if (color->alpha == 255) { *sr = color->red; *sg = color->green; *sb = color->blue; if (hasAlpha) *sa = 255; } else { *sr = (((int)*sr * nalpha) + ((int)color->red * alpha)) / 256; *sg = (((int)*sg * nalpha) + ((int)color->green * alpha)) / 256; *sb = (((int)*sb * nalpha) + ((int)color->blue * alpha)) / 256; *sa = alpha + ((int)*sa * nalpha) / 256; } break; case RAddOperation: tmp = color->red + *sr; *sr = MIN(255, tmp); tmp = color->green + *sg; *sg = MIN(255, tmp); tmp = color->blue + *sb; *sb = MIN(255, tmp); if (hasAlpha) *sa = MIN(*sa, color->alpha); break; case RSubtractOperation: tmp = *sr - color->red; *sr = MAX(0, tmp); tmp = *sg - color->green; *sg = MAX(0, tmp); tmp = *sb - color->blue; *sb = MAX(0, tmp); if (hasAlpha) *sa = MIN(*sa, color->alpha); break; } } void ROperatePixel(RImage *image, RPixelOperation operation, int x, int y, const RColor *color) { int ofs; assert(image != NULL); assert(color != NULL); assert(x >= 0 && x < image->width); assert(y >= 0 && y < image->height); ofs = y * image->width + x; operatePixel(image, ofs, operation, color); } void RPutPixels(RImage *image, const RPoint *points, int npoints, RCoordinatesMode mode, const RColor *color) { register int x, y, i; assert(image != NULL); assert(points != NULL); x = y = 0; for (i = 0; i < npoints; i++) { if (mode == RAbsoluteCoordinates) { x = points[i].x; y = points[i].y; } else { x += points[i].x; y += points[i].y; } RPutPixel(image, x, y, color); } } void ROperatePixels(RImage *image, RPixelOperation operation, const RPoint *points, int npoints, RCoordinatesMode mode, const RColor *color) { register int x, y, i; assert(image != NULL); assert(points != NULL); x = y = 0; for (i = 0; i < npoints; i++) { if (mode == RAbsoluteCoordinates) { x = points[i].x; y = points[i].y; } else { x += points[i].x; y += points[i].y; } ROperatePixel(image, operation, x, y, color); } } static Bool clipLineInRectangle(int xmin, int ymin, int xmax, int ymax, int *x1, int *y1, int *x2, int *y2) { #define TOP (1<<0) #define BOT (1<<1) #define LEF (1<<2) #define RIG (1<<3) #define CHECK_OUT(X,Y) (((Y) > ymax ? TOP : ((Y) < ymin ? BOT : 0))\ | ((X) > xmax ? RIG : ((X) < xmin ? LEF : 0))) int ocode1, ocode2, ocode; int accept = 0; int x, y; ocode1 = CHECK_OUT(*x1, *y1); ocode2 = CHECK_OUT(*x2, *y2); for (;;) { if (!ocode1 && !ocode2) { /* completely inside */ accept = 1; break; } else if (ocode1 & ocode2) { break; } if (ocode1) ocode = ocode1; else ocode = ocode2; if (ocode & TOP) { x = *x1 + (*x2 - *x1) * (ymax - *y1) / (*y2 - *y1); y = ymax; } else if (ocode & BOT) { x = *x1 + (*x2 - *x1) * (ymin - *y1) / (*y2 - *y1); y = ymin; } else if (ocode & RIG) { y = *y1 + (*y2 - *y1) * (xmax - *x1) / (*x2 - *x1); x = xmax; } else { /* //if (ocode & LEF) { */ y = *y1 + (*y2 - *y1) * (xmax - *x1) / (*x2 - *x1); x = xmin; } if (ocode == ocode1) { *x1 = x; *y1 = y; ocode1 = CHECK_OUT(x, y); } else { *x2 = x; *y2 = y; ocode2 = CHECK_OUT(x, y); } } return accept; } /* * This routine is a generic drawing routine, based on Bresenham's line * drawing algorithm. */ static int genericLine(RImage *image, int x0, int y0, int x1, int y1, const RColor *color, RPixelOperation operation, int polyline) { int i, err, du, dv, du2, dv2, uofs, vofs, last; assert(image != NULL); if (!clipLineInRectangle(0, 0, image->width - 1, image->height - 1, &x0, &y0, &x1, &y1)) return True; if (x0 < x1) { du = x1 - x0; uofs = 1; } else { du = x0 - x1; uofs = -1; } if (y0 < y1) { dv = y1 - y0; vofs = image->width; } else { dv = y0 - y1; vofs = -image->width; } if (du < dv) { /* Swap coordinates between them, so that always du>dv */ i = du; du = dv; dv = i; i = uofs; uofs = vofs; vofs = i; } err = 0; du2 = du << 1; dv2 = dv << 1; last = (polyline) ? du - 1 : du; if (color->alpha == 255 || operation == RCopyOperation) { unsigned char *ptr; if (image->format == RRGBAFormat) i = (y0 * image->width + x0) * 4; else i = (y0 * image->width + x0) * 3; ptr = image->data + i; for (i = 0; i <= last; i++) { /* Draw the pixel */ *ptr = color->red; *(ptr + 1) = color->green; *(ptr + 2) = color->blue; if (image->format == RRGBAFormat) *(ptr + 3) = 255; /* Compute error for NeXT Step */ err += dv2; if (err >= du) { if (image->format == RRGBAFormat) ptr += vofs * 4; else ptr += vofs * 3; err -= du2; } if (image->format == RRGBAFormat) ptr += uofs * 4; else ptr += uofs * 3; } } else { register int ofs = y0 * image->width + x0; for (i = 0; i <= last; i++) { /* Draw the pixel */ operatePixel(image, ofs, operation, color); /* Compute error for NeXT Step */ err += dv2; if (err >= du) { ofs += vofs; err -= du2; } ofs += uofs; } } return True; } int RDrawLine(RImage * image, int x0, int y0, int x1, int y1, const RColor * color) { return genericLine(image, x0, y0, x1, y1, color, RNormalOperation, False); } int ROperateLine(RImage *image, RPixelOperation operation, int x0, int y0, int x1, int y1, const RColor *color) { return genericLine(image, x0, y0, x1, y1, color, operation, False); } void RDrawLines(RImage *image, const RPoint *points, int npoints, RCoordinatesMode mode, const RColor *color) { register int x1, y1, x2, y2, i; assert(points != NULL); if (npoints == 0) return; x1 = points[0].x; y1 = points[0].y; x2 = y2 = 0; for (i = 1; i < npoints - 1; i++) { if (mode == RAbsoluteCoordinates) { x2 = points[i].x; y2 = points[i].y; } else { x2 += points[i - 1].x; y2 += points[i - 1].y; } /* Don't draw pixels at junction points twice */ genericLine(image, x1, y1, x2, y2, color, RNormalOperation, True); x1 = x2; y1 = y2; } i = npoints - 1; /* last point */ if (mode == RAbsoluteCoordinates) { x2 = points[i].x; y2 = points[i].y; } else { x2 += points[i - 1].x; y2 += points[i - 1].y; } i = (points[0].x == x2 && points[0].y == y2 && npoints > 1); genericLine(image, x1, y1, x2, y2, color, RNormalOperation, i); } void ROperateLines(RImage *image, RPixelOperation operation, const RPoint *points, int npoints, RCoordinatesMode mode, const RColor *color) { register int x1, y1, x2, y2, i; assert(points != NULL); if (npoints == 0) return; x1 = points[0].x; y1 = points[0].y; x2 = y2 = 0; for (i = 1; i < npoints - 1; i++) { if (mode == RAbsoluteCoordinates) { x2 = points[i].x; y2 = points[i].y; } else { x2 += points[i - 1].x; y2 += points[i - 1].y; } /* Don't draw pixels at junction points twice */ genericLine(image, x1, y1, x2, y2, color, operation, True); x1 = x2; y1 = y2; } i = npoints - 1; /* last point */ if (mode == RAbsoluteCoordinates) { x2 = points[i].x; y2 = points[i].y; } else { x2 += points[i - 1].x; y2 += points[i - 1].y; } i = (points[0].x == x2 && points[0].y == y2 && npoints > 1); genericLine(image, x1, y1, x2, y2, color, operation, i); } void ROperateRectangle(RImage *image, RPixelOperation operation, int x0, int y0, int x1, int y1, const RColor *color) { int y; for (y = y0; y <= y1; y++) { genericLine(image, x0, y, x1, y, color, operation, False); } } void RDrawSegments(RImage *image, const RSegment *segs, int nsegs, const RColor *color) { register int i; assert(segs != NULL); for (i = 0; i < nsegs; i++) { genericLine(image, segs->x1, segs->y1, segs->x2, segs->y2, color, RNormalOperation, False); segs++; } } void ROperateSegments(RImage *image, RPixelOperation operation, const RSegment *segs, int nsegs, const RColor *color) { register int i; assert(segs != NULL); for (i = 0; i < nsegs; i++) { genericLine(image, segs->x1, segs->y1, segs->x2, segs->y2, color, operation, False); segs++; } } �������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/Makefile.am����������������������������������������������������������������0000644�0001750�0001750�00000003774�13642357774�014176� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������## automake input file for wrlib SUBDIRS = . DIST_SUBDIRS = $(SUBDIRS) tests AUTOMAKE_OPTIONS = EXTRA_DIST = tests lib_LTLIBRARIES = libwraster.la libwraster_la_LDFLAGS = -version-info @WRASTER_VERSION@ if HAVE_LD_VERSION_SCRIPT libwraster_la_LDFLAGS += -Wl,--version-script=libwraster.map EXTRA_libwraster_la_DEPENDENCIES = libwraster.map CLEANFILES = libwraster.map endif include_HEADERS = wraster.h libwraster_la_SOURCES = \ imgformat.h \ raster.c \ alpha_combine.c \ draw.c \ color.c \ load.c \ save.c \ gradient.c \ xpixmap.c \ convert.h \ convert.c \ context.c \ misc.c \ scale.c \ scale.h \ rotate.c \ rotate.h \ flip.c \ convolve.c \ save_xpm.c \ xutil.c \ xutil.h \ load_ppm.c if USE_GIF libwraster_la_SOURCES += load_gif.c endif if USE_JPEG libwraster_la_SOURCES += load_jpeg.c endif if USE_PNG libwraster_la_SOURCES += load_png.c endif if USE_TIFF libwraster_la_SOURCES += load_tiff.c endif if USE_XPM libwraster_la_SOURCES += load_xpm.c else libwraster_la_SOURCES += load_xpm_normalized.c endif if USE_WEBP libwraster_la_SOURCES += load_webp.c endif if USE_MAGICK libwraster_la_SOURCES += load_magick.c endif AM_CFLAGS = @MAGICKFLAGS@ AM_CPPFLAGS = $(DFLAGS) @HEADER_SEARCH_PATH@ libwraster_la_LIBADD = @LIBRARY_SEARCH_PATH@ @GFXLIBS@ @MAGICKLIBS@ @XLIBS@ @LIBXMU@ -lm pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = wrlib.pc DISTCLEANFILES = $(pkgconfig_DATA) wrlib.pc: Makefile @echo "Generating $@" @echo 'Name: wrlib' > $@ @echo 'Description: Image manipulation and conversion library' >> $@ @echo 'Version: $(VERSION)' >> $@ @echo 'Libs: $(lib_search_path) -lwraster' >> $@ @echo 'Libs.private: $(GFXLIBS) $(MAGICKLIBS) $(XLIBS) -lm' >> $@ @echo 'Cflags: $(inc_search_path)' >> $@ if HAVE_LD_VERSION_SCRIPT libwraster.map: $(include_HEADERS) $(top_srcdir)/script/generate-mapfile-from-header.sh $(AM_V_GEN)$(top_srcdir)/script/generate-mapfile-from-header.sh \ -n LIBWRASTER -v $(WRASTER_VERSION) $(srcdir)/$(include_HEADERS) > libwraster.map endif ����WindowMaker-0.95.9/wrlib/xpixmap.c������������������������������������������������������������������0000644�0001750�0001750�00000010554�13431646202�013745� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* xpixmap.c - Make RImage from Pixmap or XImage * * Raster graphics library * * Copyright (c) 1997-2003 Alfredo K. Kojima * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301, USA. */ #include <config.h> #include <X11/Xlib.h> #include <X11/Xutil.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <assert.h> #include "wraster.h" static int get_shifts(unsigned long mask) { int i = 0; while (mask) { mask >>= 1; i++; } return i; } #define NORMALIZE_RED(pixel) ((rshift>0) ? ((pixel) & rmask) >> rshift \ : ((pixel) & rmask) << -rshift) #define NORMALIZE_GREEN(pixel) ((gshift>0) ? ((pixel) & gmask) >> gshift \ : ((pixel) & gmask) << -gshift) #define NORMALIZE_BLUE(pixel) ((bshift>0) ? ((pixel) & bmask) >> bshift \ : ((pixel) & bmask) << -bshift) RImage *RCreateImageFromXImage(RContext * context, XImage * image, XImage * mask) { RImage *img; int x, y; unsigned long pixel; unsigned char *data; int rshift, gshift, bshift; int rmask, gmask, bmask; assert(image != NULL); assert(image->format == ZPixmap); assert(!mask || mask->format == ZPixmap); img = RCreateImage(image->width, image->height, mask != NULL); if (!img) { return NULL; } /* I don't know why, but XGetImage() for pixmaps don't set the * {red,green,blue}_mask values correctly. */ if (context->depth == image->depth) { rmask = context->visual->red_mask; gmask = context->visual->green_mask; bmask = context->visual->blue_mask; } else { rmask = image->red_mask; gmask = image->green_mask; bmask = image->blue_mask; } /* how many bits to shift to normalize the color into 8bpp */ rshift = get_shifts(rmask) - 8; gshift = get_shifts(gmask) - 8; bshift = get_shifts(bmask) - 8; data = img->data; if (image->depth == 1) { for (y = 0; y < image->height; y++) { for (x = 0; x < image->width; x++) { pixel = XGetPixel(image, x, y); if (pixel) { *data++ = 0; *data++ = 0; *data++ = 0; } else { *data++ = 0xff; *data++ = 0xff; *data++ = 0xff; } if (mask) data++; } } } else { for (y = 0; y < image->height; y++) { for (x = 0; x < image->width; x++) { pixel = XGetPixel(image, x, y); *(data++) = NORMALIZE_RED(pixel); *(data++) = NORMALIZE_GREEN(pixel); *(data++) = NORMALIZE_BLUE(pixel); if (mask) data++; } } } #define MIN(a,b) ((a)<(b)?(a):(b)) if (mask) { data = img->data + 3; /* Skip R, G & B */ for (y = 0; y < MIN(mask->height, image->height); y++) { for (x = 0; x < MIN(mask->width, image->width); x++) { if (mask->width <= image->width && XGetPixel(mask, x, y)) { *data = 0xff; } else { *data = 0; } data += 4; } for (; x < image->width; x++) { *data = 0; data += 4; } } for (; y < image->height; y++) { for (x = 0; x < image->width; x++) { *data = 0; data += 4; } } } return img; } RImage *RCreateImageFromDrawable(RContext * context, Drawable drawable, Pixmap mask) { RImage *image; XImage *pimg, *mimg; unsigned int w, h, bar; int foo; Window baz; assert(drawable != None); if (!XGetGeometry(context->dpy, drawable, &baz, &foo, &foo, &w, &h, &bar, &bar)) { printf("wrlib: invalid window or pixmap passed to RCreateImageFromDrawable\n"); return NULL; } pimg = XGetImage(context->dpy, drawable, 0, 0, w, h, AllPlanes, ZPixmap); if (!pimg) { RErrorCode = RERR_XERROR; return NULL; } mimg = NULL; if (mask) { if (XGetGeometry(context->dpy, mask, &baz, &foo, &foo, &w, &h, &bar, &bar)) { mimg = XGetImage(context->dpy, mask, 0, 0, w, h, AllPlanes, ZPixmap); } } image = RCreateImageFromXImage(context, pimg, mimg); XDestroyImage(pimg); if (mimg) XDestroyImage(mimg); return image; } ����������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wrlib/save.c���������������������������������������������������������������������0000644�0001750�0001750�00000002420�13431646202�013206� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* save.c - save image to file * * Raster graphics library * * Copyright (c) 1998-2003 Alfredo K. Kojima * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301, USA. */ #include <config.h> #include <X11/Xlib.h> #include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <fcntl.h> #include <sys/stat.h> #include <string.h> #include <time.h> #include "wraster.h" #include "imgformat.h" Bool RSaveImage(RImage * image, const char *filename, const char *format) { if (strcmp(format, "XPM") != 0) { RErrorCode = RERR_BADFORMAT; return False; } return RSaveXPM(image, filename); } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/README.i18n����������������������������������������������������������������������0000644�0001750�0001750�00000045316�13642365214�012443� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Window Maker Internationalisation ~ A guide to enable support for language translations ~ ~ in Window Maker and to the contributors ~ ~ who want to help translating. ~ -- Christophe CURIS -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This manual is for Window Maker window manager, version 0.95.9. Copyright (c) 2015 The Window Maker Team. 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, see file COPYING for details. Published by The Window Maker team on 15 February 2019. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 Enabling Languages support . . . . . . . . . . . . . . . . . 59 1.1 Getting the list of supported languages . . . . . . . . . 89 1.2 Translations for Menus . . . . . . . . . . . . . . . . . 114 1.3 Setting 'LINGUAS' at system level . . . . . . . . . . . . 148 2 Choosing the Language . . . . . . . . . . . . . . . . . . . . 164 3 Troubleshooting . . . . . . . . . . . . . . . . . . . . . . . 212 4 Contribute to Translations . . . . . . . . . . . . . . . . . 263 4.1 Install the latest sources . . . . . . . . . . . . . . . 274 4.2 Updating the Translations . . . . . . . . . . . . . . . . 307 4.3 Translate the Man Pages . . . . . . . . . . . . . . . . . 353 4.4 Checking the Result . . . . . . . . . . . . . . . . . . . 381 4.5 Submitting your Contribution . . . . . . . . . . . . . . 398 1 Enabling Languages support **************************** Window Maker has the possibility to be translated in many languages, but by default none of them will be installed, and the support for translation will not be compiled. To enable the translation capabilities, you have to specify which language(s) you want to be installed: this is done with the variable 'LINGUAS' when running the 'configure' script. This variable should contain the space-separated list of languages you want to install. You could for instance enable both French ('fr') and Dutch ('nl') with this: ./configure LINGUAS="fr nl" You can of course add any other option that you want to the 'configure' command. From the moment you specify the variable, the 'configure' script will check that you have the appropriate dependencies for this (basically the 'gettext' function and the 'libintl' library); when you run 'make' to compile the project, it will also compile the translation ('mo' files) for the language(s) you asked (if available, of course), and during 'make install' it will install them in the usual directory. The installation directory can be changed with the standard option '--localedir' to the 'configure' script, the default path being "<prefix>/share/locale/<lang>/LC_MESSAGES"). 1.1 Getting the list of supported languages =========================================== The naming convention for the languages follows the ISO 639-1 standard, for which you can find a summary list in the GNU gettext manual (https://www.gnu.org/software/gettext/manual/html_node/Usual-Language-Codes.html). But as Window Maker does not support all of them, the 'configure' script will print a warning for each language you specify that it does not know, and sum up at the end the list of enabled languages that will be installed. There is a non-standard possibility to set 'LINGUAS' to 'list', in which case the 'configure' script will provide you the list of languages it supports, and stop: ./configure LINGUAS="list" There is also another non-standard possibility to enable all the languages that Window Maker supports by setting 'LINGUAS' to '*'. This is an internal trick implemented so the development team can have the command 'make distcheck' include some checks on translations: ./configure LINGUAS='*' 1.2 Translations for Menus ========================== In order to propose an Application Menu (also called Root Menu) that is also translated in the language of the interface, Window Maker implements two complementary mechanisms: The first, always enabled when i18n support is enabled, is to look for the menu file containing the name of the locale. For example, if the file is called "menu" and the language is set as 'LANG=fr_FR.utf-8', then Window Maker will search for, and use the first match found: * 'menu.fr_FR.utf-8' * 'menu.fr_FR' * 'menu.fr' * 'menu' The second possibility, which is not enabled by default, is to be able to use a custom "po" file which contains the translations for the text of the menu. This feature is enabled at compile time, using the option '--with-menu-textdomain' to the 'configure' script. For example, if you specify: ./configure --with-menu-textdomain=WMMenu then the translations for the menu will be searched in the file "WMMenu.mo" located at the standard location, the default path being "<prefix>/share/locale/<lang>/LC_MESSAGES/WMMenu.mo". If you do not enable the feature (the default behaviour, or with an explicit '--without-menu-textdomain'), then Window Maker will *not* try to translate the strings, even using its own domain file ("WindowMaker.mo"). 1.3 Setting 'LINGUAS' at system level ===================================== As the variable 'LINGUAS' is quite standard, you also have the possibility to set its value in the "config.site" file for Autoconf. This file can be placed in one of these paths: * "<prefix>/share/config.site" * "<prefix>/etc/config.site" This way, the same language list will be used for all the programs that use Autoconf that you would compile. Please note that if you also specify a value on the command line, it will have precedence over the value in that file. 2 Choosing the Language *********************** If you have compiled and installed Window Maker with support for your language, the effective translation is done is the very same way as any other application on an Unix system, you just have to set the shell variable 'LANG' to your language before 'wmaker' is started. In 'sh' type of shell (sh, ksh, bash, ...), this is done for example with ('fr' is for French): export LANG=fr There is also a command line option '--locale' for Window Maker which may be used to set the language: wmaker --locale fr When using this option, Window Maker will use the locale you specified, redefining the 'LANG' environment variable to this value so all program started from Window Maker will inherit its value. If your system is using systemd, you can also configure the locale at system level using the command: localectl set-locale LANG=fr You can check if the current value is properly supported with the command: locale If this does not work, you may need first to activate the support for your locale in the system; you can get the list of currently enabled locales with the command: locale -a You should be able to enable a new language support by editing the file "/etc/locale.gen" to uncomment the locale(s) you need (by removing the '#' character and space(s) in front of it, and by running the command 'locale-gen' as root. For further information, you may wish to read dedicated documentation, for example from the Linux Documentation Project (http://tldp.org/HOWTO/HOWTO-INDEX/other-lang.html) or through pages like Shell Hacks' note on Changing Locale (http://www.shellhacks.com/en/HowTo-Change-Locale-Language-and-Character-Set-in-Linux). 3 Troubleshooting ***************** If I18N support does not work for you, check these: - the 'LANG' environment variable is set to your locale, and the locale is supported by your OS's locale or X's locale emulation. you can display all supported locales by executing "'locale -a'" command if it is available; you can check if your locale is supported by X's locale emulation, see "/usr/share/X11/locale/locale.alias" - check if you are using an appropriate fonts for the locale you chose. If you're using a font set that has a different encoding than the one used by Xlib or libc, bad things can happen. Try specifically putting the encoding in the 'LANG' variable, like 'ru_RU.KOI8-R'. Again, see "/usr/share/X11/locale/locale.alias" - the fonts you're using support your locale. if your font setting on "$HOME/GNUstep/Defaults/WindowMaker" is like... WindowTitleFont = "Trebuchet MS:bold:pixelsize=12"; MenuTitleFont = "Trebuchet MS:bold:pixelsize=12"; then you can't display Asian languages ('ja', 'ko', 'ch', ...) characters using 'Trebuchet MS'. A font that is guaranteed to work for any language is 'sans' (or 'sans-serif'). 'sans' is not a font itself, but an alias which points to multiple fonts and will load the first in that list that has the ability to show glyphs in your language. If you don't know a font that is suited for your language you can always set all your fonts to something like: "sans:pixelsize=12" However, please note that if your font is something like: "Trebuchet MS,sans serif:pixelsize=12" this will not be able to display Asian languages if any of the previous fonts before sans are installed. This is because unlike the proper font pickup that 'sans' guarantees for your language, this construct only allows a font fallback mechanism, which tries all the fonts in the list in order, until it finds one that is available, even if it doesn't support your language. Also you need to change font settings in style files in the "$HOME/Library/WindowMaker/Style" directory. - the 'LC_CTYPE' environment variable is unset or it has the correct value. If you don't know what is the correct value, unset it. 4 Contribute to Translations **************************** You may have noticed that many translations are not up to date, because the code has evolved but the persons who initially contributed may not have had the time to continue, so any help is welcome. Since Window Maker 0.95.7 there are some targets to 'make' that can help you in that task. 4.1 Install the latest sources ============================== If you want to contribute, the first step is get the development branch of the code; this is done using 'git'. If you do not feel confident at all with using 'git', you may also try to ask for a snapshot on the developer's mailing list <wmaker-dev@googlegroups.com>. With 'git' the procedure is: # Get your working copy of the sources git clone git://repo.or.cz/wmaker-crm.git # Go into that newly created directory cd wmaker-crm # Switch to the branch where everything happens git checkout next # Generate the configuration script ./autogen.sh Now you should have an up-to-date working copy ready to be compiled; you will not need to go the full way but you should run the 'configure' script, so it will create the "Makefile"s, and you may want to compile the code once so it will not do it again automatically later while you are doing something else: # Setup the build, enabling at least the language you want to work on ./configure LINGUAS="<list of iso 639 country code>" # Compile the code once make 4.2 Updating the Translations ============================= The typical process for translating one program is: * generate a POT file (PO Template): this is done with 'xgettext' which searches for all the strings from the sources that can be translated; * update the PO file for your language: this is done with 'msgmerge' which compares the PO file and aligns it to the latest template; * edit the new PO file: this is done by you with your favourite editor, to add the missing 'msgstr', review the possible fuzzy matches, ... * check the PO file: unfortunately there is no definitive method for this; * submit your contribution to the project: this is done with 'git'. In Window Maker, you have actually 4 'po' files to take care of: - "po/<lang>.po": for Window Maker itself - "WPrefs.app/po/<lang>.po": for the Preference Editor program - "WINGs/po/<lang>.po": for the graphic toolkit library - "util/po/<lang>.po": for the command-line tools of Window Maker As stated previously, there is a 'make' target that can help you to automatically generate the POT and update the PO for these 4 cases: make update-lang PO=<lang> Once run, it will have updated as needed the 4 'po' files against the latest source code. You may wish to use the command 'git gui' to view the changes; you can now edit the files to complete the translation, correct them, remove deprecated stuff, ... Please note that the encoding should be set to UTF-8 as this is now the standard. If you think an error message is too obscure, just ask on the developer mailing list <wmaker-dev@googlegroups.com>: in addition to clarifications there's even a chance for the original message to be improved! You may find some information on working with 'po' file in the GNU gettext documentation (https://www.gnu.org/software/gettext/manual/html_node/Editing.html). 4.3 Translate the Man Pages =========================== You may want to extend the translation to the documentation that is provided to users in the form of Unix _man pages_. The sources of the man pages are located in the "doc/" directory; the translation should be placed in the directory "doc/_lang_/" with the same file name. The directory will also need a file "Makefile.am" which provides the list of man pages to be included in the distribution package and to be installed. You can probably get inspiration from an existing one from another language; if you do not feel confident about it do not hesitate to ask on the project's mailing list (<wmaker-dev@googlegroups.com>), either for help or to ask someone to make it for you. Please note that although most man pages sources are directly in man page format (nroff, the file extension being a number), a few of them are processed by a script (those with the ".in" extension, like "wmaker.in"). This is done because in some case we want the man page to reflect the actual compilation options. You may not want to bother with this hassle, in which case you can simply name your translation file with the ".1" and remove the special '@keyword@' marks. If you are sure you want to keep that processing but do not feel confident about hacking the "Makefile.am" do not hesitate to ask on the project's mailing list (<wmaker-dev@googlegroups.com>). 4.4 Checking the Result ======================= In the Window Maker build tree you also have another target that can help you, it is 'make check'. At current time, it does not check much, but if during the 'make update-lang' new 'po' file have been created you may get some errors, because you have to add these new files to the variable 'EXTRA_DIST' in the corresponding "Makefile". If you do not feel confident about doing it, do not worry, just tell about it when you submit your work, and some developer on the mailing list will just be happy to do it for you when integrating your valuable contribution (we always like when someone helps making Window Maker better). 4.5 Submitting your Contribution ================================ Preliminary Remark: if the update process made changes in a 'po' file but you did not change any 'msgstr' content, it is probably a good idea to not submit the changes to that 'po' file because it would just add noise. When you feel ready to send your changes, the first step is to prepare them. This is done with 'git': if you have not run the 'git gui' previously then it is a good time to do it now. This window offers you the possibility to show your changes and to decide what you want to send. The window is divided in 4 panes: * top-right show the current changes you have selected, for review (and also for cherry-picking stuff if you want to select precisely) * top-left ("Unstaged Changes") the list of files with changes to be send, you can click on the name of the file to see the changes, you can click on the icon of the file if you want to send all the changes in this file; an icon in blue shows a file that have been changed and an icon in black shows a file that is new * bottom-left ("Staged Changes") the list of files with changes that you have chosen to send so far, you can click on the file name to view these changes, you can click on the icon if you want to remove the changes from this file from the list to send * bottom-right ("Commit Message") the message you want to attach to your changes when you submit them to the development team The idea here is to pick your changes to the 'po' files; for the commit message you may wish to stuck to a simple, single line: "Updated translations for <lang>" The penultimate step is to click on the button <Sign Off> (it will add a line in the commit message), and then click on the button <Commit>. From this time, the commit message will clear itself and the "Staged Changes" also, showing that your action was done. You may now quit the 'git gui', the final step begins by running this command: git format-patch HEAD^ This will generate a file named like "0001-updated-translations-for-XX.patch" which contains your changes, ready for sending. The goal will now be to email this file to <wmaker-dev@googlegroups.com>. If you feel confident in having 'git' send it for you, you may want to read the file "The-perfect-Window-Maker-patch.txt" to see how to configure 'git' for mailing, so you can run: git send-email 0001-updated-translations-for-XX.patch ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/install-sh�����������������������������������������������������������������������0000755�0001750�0001750�00000036010�13642360053�012774� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh # install - install a program, script, or datafile scriptversion=2018-03-11.20; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # 'make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. tab=' ' nl=' ' IFS=" $tab$nl" # Set DOITPROG to "echo" to test this script. doit=${DOITPROG-} doit_exec=${doit:-exec} # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false is_target_a_directory=possibly usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) is_target_a_directory=always dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) is_target_a_directory=never;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done # We allow the use of options -d and -T together, by making -d # take the precedence; this is for compatibility with GNU install. if test -n "$dir_arg"; then if test -n "$dst_arg"; then echo "$0: target directory not allowed when installing a directory." >&2 exit 1 fi fi if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then if test $# -gt 1 || test "$is_target_a_directory" = always; then if test ! -d "$dst_arg"; then echo "$0: $dst_arg: Is not a directory." >&2 exit 1 fi fi fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename. if test -d "$dst"; then if test "$is_target_a_directory" = never; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dstbase=`basename "$src"` case $dst in */) dst=$dst$dstbase;; *) dst=$dst/$dstbase;; esac dstdir_status=0 else dstdir=`dirname "$dst"` test -d "$dstdir" dstdir_status=$? fi fi case $dstdir in */) dstdirslash=$dstdir;; *) dstdirslash=$dstdir/;; esac obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) # Note that $RANDOM variable is not portable (e.g. dash); Use it # here however when possible just to lower collision chance. tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0 # Because "mkdir -p" follows existing symlinks and we likely work # directly in world-writeable /tmp, make sure that the '$tmpdir' # directory is successfully created first before we actually test # 'mkdir -p' feature. if (umask $mkdir_umask && $mkdirprog $mkdir_mode "$tmpdir" && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. test_tmpdir="$tmpdir/a" ls_ld_tmpdir=`ls -ld "$test_tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac oIFS=$IFS IFS=/ set -f set fnord $dstdir shift set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=${dstdirslash}_inst.$$_ rmtmp=${dstdirslash}_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wmlib/���������������������������������������������������������������������������0000755�0001750�0001750�00000000000�13642365214�012166� 5����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wmlib/Makefile.in����������������������������������������������������������������0000644�0001750�0001750�00000055425�13642360054�014163� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = wmlib ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ $(top_srcdir)/m4/ax_pthread.m4 \ $(top_srcdir)/m4/ld-version-script.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/windowmaker.m4 \ $(top_srcdir)/m4/wm_attributes.m4 \ $(top_srcdir)/m4/wm_cflags_check.m4 \ $(top_srcdir)/m4/wm_i18n.m4 \ $(top_srcdir)/m4/wm_imgfmt_check.m4 \ $(top_srcdir)/m4/wm_libexif.m4 $(top_srcdir)/m4/wm_libmath.m4 \ $(top_srcdir)/m4/wm_prog_cc_c11.m4 \ $(top_srcdir)/m4/wm_xext_check.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(include_HEADERS) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)" \ "$(DESTDIR)$(includedir)" LTLIBRARIES = $(lib_LTLIBRARIES) libWMaker_la_DEPENDENCIES = am_libWMaker_la_OBJECTS = menu.lo app.lo event.lo command.lo libWMaker_la_OBJECTS = $(am_libWMaker_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = libWMaker_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(libWMaker_la_LDFLAGS) $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = am__maybe_remake_depfiles = COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libWMaker_la_SOURCES) DIST_SOURCES = $(libWMaker_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DATA = $(pkgconfig_DATA) HEADERS = $(include_HEADERS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in COPYING.LIB DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ GFXLIBS = @GFXLIBS@ GREP = @GREP@ HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLIBS = @INTLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBBSD = @LIBBSD@ LIBEXIF = @LIBEXIF@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXINERAMA = @LIBXINERAMA@ LIBXMU = @LIBXMU@ LIBXRANDR = @LIBXRANDR@ LINGUAS = @LINGUAS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAGICKFLAGS = @MAGICKFLAGS@ MAGICKLIBS = @MAGICKLIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MANLANGDIRS = @MANLANGDIRS@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOLIBS = @PANGOLIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILMOFILES = @UTILMOFILES@ VERSION = @VERSION@ WINGSMOFILES = @WINGSMOFILES@ WINGS_VERSION = @WINGS_VERSION@ WMAKERMOFILES = @WMAKERMOFILES@ WPREFSMOFILES = @WPREFSMOFILES@ WRASTER_VERSION = @WRASTER_VERSION@ WUTIL_VERSION = @WUTIL_VERSION@ XCFLAGS = @XCFLAGS@ XFTCONFIG = @XFTCONFIG@ XFTFLAGS = @XFTFLAGS@ XFTLIBS = @XFTLIBS@ XGETTEXT = @XGETTEXT@ XLFLAGS = @XLFLAGS@ XLIBS = @XLIBS@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBRARY_PATH = @X_LIBRARY_PATH@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ defsdatadir = @defsdatadir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ inc_search_path = @inc_search_path@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lcov_output_directory = @lcov_output_directory@ lib_search_path = @lib_search_path@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pixmapdir = @pixmapdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ wprefs_bindir = @wprefs_bindir@ wprefs_datadir = @wprefs_datadir@ AUTOMAKE_OPTIONS = no-dependencies libWMaker_la_LDFLAGS = -version-info 1:1:0 lib_LTLIBRARIES = libWMaker.la include_HEADERS = WMaker.h AM_CPPFLAGS = $(DFLAGS) @XCFLAGS@ libWMaker_la_LIBADD = -lX11 libWMaker_la_SOURCES = \ menu.c \ app.c \ event.c \ command.c \ app.h \ menu.h pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = wmlib.pc DISTCLEANFILES = $(pkgconfig_DATA) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu wmlib/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu wmlib/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libWMaker.la: $(libWMaker_la_OBJECTS) $(libWMaker_la_DEPENDENCIES) $(EXTRA_libWMaker_la_DEPENDENCIES) $(AM_V_CCLD)$(libWMaker_la_LINK) -rpath $(libdir) $(libWMaker_la_OBJECTS) $(libWMaker_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c .c.o: $(AM_V_CC)$(COMPILE) -c -o $@ $< .c.obj: $(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: $(AM_V_CC)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-pkgconfigDATA: $(pkgconfig_DATA) @$(NORMAL_INSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ done uninstall-pkgconfigDATA: @$(NORMAL_UNINSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) install-includeHEADERS: $(include_HEADERS) @$(NORMAL_INSTALL) @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ done uninstall-includeHEADERS: @$(NORMAL_UNINSTALL) @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS) installdirs: for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(includedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-includeHEADERS install-pkgconfigDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-libLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES \ uninstall-pkgconfigDATA .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am \ install-includeHEADERS install-info install-info-am \ install-libLTLIBRARIES install-man install-pdf install-pdf-am \ install-pkgconfigDATA install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am uninstall-includeHEADERS \ uninstall-libLTLIBRARIES uninstall-pkgconfigDATA .PRECIOUS: Makefile wmlib.pc: Makefile @echo "Generating $@" @echo 'Name: wmlib' > $@ @echo 'Description: Window Maker interface definitions' >> $@ @echo 'Version: $(VERSION)' >> $@ @echo 'Requires: x11' >> $@ @echo 'Libs: $(lib_search_path) -lWMaker' >> $@ @echo 'Cflags: $(inc_search_path)' >> $@ # 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. .NOEXPORT: �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wmlib/WMaker.h�������������������������������������������������������������������0000644�0001750�0001750�00000011035�13431646202�013440� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * WindowMaker interface definitions * * Copyright (C) 1997-2003 Alfredo K. Kojima * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301, USA. */ #ifndef _WMLIB_H_ #define _WMLIB_H_ /* the definitions in this file can change at any time. WINGs has more * stable definitions */ #include <X11/Xlib.h> #include <X11/Xmd.h> #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ typedef struct { CARD32 flags; CARD32 window_style; CARD32 window_level; CARD32 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 */ CARD32 extra_flags; } GNUstepWMAttributes; #define GSWindowStyleAttr (1<<0) #define GSWindowLevelAttr (1<<1) #define GSMiniaturizePixmapAttr (1<<3) #define GSClosePixmapAttr (1<<4) #define GSMiniaturizeMaskAttr (1<<5) #define GSCloseMaskAttr (1<<6) #define GSExtraFlagsAttr (1<<7) #define GSClientResizeFlag (1<<0) #define GSFullKeyboardEventsFlag (1<<1) #define GSMenuWindowFlag (1<<2) #define GSIconWindowFlag (1<<3) #define GSSkipWindowListFlag (1<<4) #define GSNoApplicationIconFlag (1<<5) #define GSDarkGrayTitlebarFlag (1<<8) #define WMFHideOtherApplications 10 #define WMFHideApplication 12 #ifndef _DEFINED_GNUSTEP_WINDOW_INFO #define _DEFINED_GNUSTEP_WINDOW_INFO /* * Window levels are taken from GNUstep (gui/AppKit/NSWindow.h) * NSDesktopWindowLevel intended to be the level at which things * on the desktop sit ... so you should be able * to put a desktop background just below it. * * Applications are actually permitted to use any value in the * range INT_MIN+1 to INT_MAX */ enum { WMDesktopWindowLevel = -1000, /* GNUstep addition */ WMNormalWindowLevel = 0, WMFloatingWindowLevel = 3, WMSubmenuWindowLevel = 3, WMTornOffMenuWindowLevel = 3, WMMainMenuWindowLevel = 20, WMDockWindowLevel = 21, /* Deprecated - use NSStatusWindowLevel */ WMStatusWindowLevel = 21, WMModalPanelWindowLevel = 100, WMPopUpMenuWindowLevel = 101, WMScreenSaverWindowLevel = 1000 }; /* window attributes */ enum { WMBorderlessWindowMask = 0, WMTitledWindowMask = 1, WMClosableWindowMask = 2, WMMiniaturizableWindowMask = 4, WMResizableWindowMask = 8, WMIconWindowMask = 64, WMMiniWindowMask = 128 }; #endif typedef struct _wmAppContext WMAppContext; typedef struct _wmMenu WMMenu; typedef void (*WMMenuAction)(void *clientdata, int code, Time timestamp); typedef void (*WMFreeFunction)(void *clientdata); int WMProcessEvent(WMAppContext *app, XEvent *event); WMAppContext *WMAppCreateWithMain(Display *display, int screen_number, Window main_window); WMAppContext *WMAppCreate(Display *display, int screen_number); int WMAppAddWindow(WMAppContext *app, Window window); int WMAppSetMainMenu(WMAppContext *app, WMMenu *menu); int WMRealizeMenus(WMAppContext *app); void WMSetWindowAttributes(Display *dpy, Window window, GNUstepWMAttributes *attributes); void WMHideApplication(WMAppContext *app); void WMHideOthers(WMAppContext *app); /* * WARNING: the menu related functions might be removed in the future. */ WMMenu *WMMenuCreate(WMAppContext *app, char *title); int WMMenuAddItem(WMMenu *menu, char *text, WMMenuAction action, void *clientData, WMFreeFunction freedata, char *rtext); int WMMenuInsertItem(WMMenu *menu, int index, char *text, WMMenuAction *action, char *rtext); int WMMenuRemoveItem(WMMenu *menu, int index); int WMMenuAddSubmenu(WMMenu *menu, char *title, WMMenu *submenu); void WMMenuSetEnabled(WMMenu *menu, int index, int enabled); void WMMenuDestroy(WMMenu *menu, int submenus); #ifdef __cplusplus } #endif /* __cplusplus */ #endif ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wmlib/menu.c���������������������������������������������������������������������0000644�0001750�0001750�00000012225�13431646202�013213� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* menu.c - menu interface functions * * WMlib - WindowMaker application programming interface * * Copyright (C) 1997-2003 Alfredo K. Kojima * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301, USA. */ #include <stdlib.h> #include <stdio.h> #include <string.h> #include <X11/Xlib.h> #include <X11/Xutil.h> #include "WMaker.h" #include "app.h" #include "menu.h" WMMenu *WMMenuCreate(WMAppContext * app, char *title) { wmMenu *menu; if (strlen(title) > 255) return NULL; menu = malloc(sizeof(wmMenu)); if (!menu) return NULL; menu->appcontext = app; menu->parent = NULL; menu->title = title; menu->entries = NULL; menu->first = NULL; menu->realized = False; menu->code = app->last_menu_tag++; menu->entryline = malloc(strlen(title) + 32); menu->entryline2 = malloc(32); if (!menu->entryline || !menu->entryline2) { if (menu->entryline) free(menu->entryline); free(menu); return NULL; } sprintf(menu->entryline, "%i %i %s", wmBeginMenu, menu->code, title); sprintf(menu->entryline2, "%i %i", wmEndMenu, menu->code); return menu; } int WMMenuAddItem(WMMenu * menu, char *text, WMMenuAction action, void *clientData, WMFreeFunction freedata, char *rtext) { wmMenuEntry *entry; /* max size of right side text */ if (rtext && strlen(rtext) > 4) return -1; /* max size of menu text */ if (strlen(text) > 255) return -1; entry = malloc(sizeof(wmMenuEntry)); if (!entry) return -1; entry->entryline = malloc(strlen(text) + 100); if (!entry->entryline) { free(entry); return -1; } if (menu->entries) entry->order = menu->entries->order + 1; else { entry->order = 0; menu->first = entry; } entry->next = NULL; entry->prev = menu->entries; if (menu->entries) menu->entries->next = entry; menu->entries = entry; entry->menu = menu; entry->text = text; entry->shortcut = rtext; entry->callback = action; entry->clientData = clientData; entry->free = freedata; entry->tag = menu->appcontext->last_menu_tag++; entry->cascade = NULL; entry->enabled = True; if (!rtext) sprintf(entry->entryline, "%i %i %i %i %s", wmNormalItem, menu->code, entry->tag, True, text); else sprintf(entry->entryline, "%i %i %i %i %s %s", wmDoubleItem, menu->code, entry->tag, True, rtext, text); return entry->tag; } int WMMenuAddSubmenu(WMMenu * menu, char *text, WMMenu * submenu) { wmMenuEntry *entry; /* max size of menu text */ if (strlen(text) > 255) return -1; entry = malloc(sizeof(wmMenuEntry)); if (!entry) return -1; entry->entryline = malloc(strlen(text) + 100); if (!entry->entryline) { free(entry); return -1; } if (menu->entries) entry->order = menu->entries->order + 1; else { entry->order = 0; menu->first = entry; } entry->next = NULL; entry->prev = menu->entries; if (menu->entries) menu->entries->next = entry; menu->entries = entry; entry->menu = menu; entry->text = text; entry->shortcut = NULL; entry->callback = NULL; entry->clientData = NULL; entry->tag = menu->appcontext->last_menu_tag++; entry->cascade = submenu; entry->enabled = True; sprintf(entry->entryline, "%i %i %i %i %i %s", wmSubmenuItem, menu->code, entry->tag, True, submenu->code, text); return entry->tag; } static int countItems(WMMenu * menu) { wmMenuEntry *entry = menu->first; int c; c = 1; while (entry) { c++; if (entry->cascade) { c += countItems(entry->cascade); } entry = entry->next; } c++; return c; } static void addItems(char **slist, int *index, WMMenu * menu) { wmMenuEntry *entry = menu->first; slist[(*index)++] = menu->entryline; while (entry) { slist[(*index)++] = entry->entryline; if (entry->cascade) { addItems(slist, index, entry->cascade); } entry = entry->next; } slist[(*index)++] = menu->entryline2; } static Atom getatom(Display * dpy) { static Atom atom = 0; if (atom == 0) { atom = XInternAtom(dpy, WMMENU_PROPNAME, False); } return atom; } int WMRealizeMenus(WMAppContext * app) { int i, count; char **slist; XTextProperty text_prop; if (!app->main_menu) return False; /* first count how many menu items there are */ count = countItems(app->main_menu); if (count == 0) return True; count++; slist = malloc(count * sizeof(char *)); if (!slist) { return False; } slist[0] = "WMMenu 0"; i = 1; addItems(slist, &i, app->main_menu); if (!XStringListToTextProperty(slist, i, &text_prop)) { free(slist); return False; } free(slist); XSetTextProperty(app->dpy, app->main_window, &text_prop, getatom(app->dpy)); XFree(text_prop.value); return True; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wmlib/app.c����������������������������������������������������������������������0000644�0001750�0001750�00000003634�13431646202�013033� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* app.c - application context stuff * * WMlib - WindowMaker application programming interface * * Copyright (C) 1997-2003 Alfredo K. Kojima * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301, USA. */ #include <X11/Xlib.h> #include <stdlib.h> #include <string.h> #include "WMaker.h" #include "app.h" WMAppContext *WMAppCreateWithMain(Display * display, int screen_number, Window main_window) { wmAppContext *ctx; ctx = malloc(sizeof(wmAppContext)); if (!ctx) return NULL; ctx->dpy = display; ctx->screen_number = screen_number; ctx->our_leader_hint = False; ctx->main_window = main_window; ctx->windows = malloc(sizeof(Window)); if (!ctx->windows) { free(ctx); return NULL; } ctx->win_count = 1; ctx->windows[0] = main_window; ctx->main_menu = NULL; ctx->last_menu_tag = 100; return ctx; } int WMAppAddWindow(WMAppContext * app, Window window) { Window *win; win = malloc(sizeof(Window) * (app->win_count + 1)); if (!win) return False; memcpy(win, app->windows, sizeof(Window) * app->win_count); free(app->windows); win[app->win_count] = window; app->windows = win; app->win_count++; return True; } int WMAppSetMainMenu(WMAppContext * app, WMMenu * menu) { app->main_menu = menu; return True; } ����������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wmlib/app.h����������������������������������������������������������������������0000644�0001750�0001750�00000002450�13431646202�013033� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* app.h - private declarations for application context * * WMlib - WindowMaker application programming interface * * Copyright (C) 1997-2003 Alfredo K. Kojima * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301, USA. */ #ifndef _APP_H_ #define _APP_H_ typedef struct _wmAppContext { Display *dpy; int screen_number; int our_leader_hint; /* if app leader hint was set by us */ Window main_window; /* main window of the application */ Window *windows; int win_count; /* size of windows array */ WMMenu *main_menu; int last_menu_tag; } wmAppContext; #endif ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wmlib/event.c��������������������������������������������������������������������0000644�0001750�0001750�00000004307�13431646202�013372� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* event.c - WindowMaker event handler * * WMlib - WindowMaker application programming interface * * Copyright (C) 1997-2003 Alfredo K. Kojima * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301, USA. */ #include <stdlib.h> #include <stdio.h> #include <X11/Xlib.h> #include <X11/Xutil.h> #include "WMaker.h" #include "app.h" #include "menu.h" static Atom _XA_WINDOWMAKER_MENU = 0; enum { wmSelectItem = 1 }; static wmMenuEntry *findEntry(WMMenu * menu, int tag) { wmMenuEntry *entry = menu->first; while (entry) { if (entry->tag == tag) { return entry; } if (entry->cascade) { wmMenuEntry *tmp; tmp = findEntry(entry->cascade, tag); if (tmp) return tmp; } entry = entry->next; } return NULL; } static void wmHandleMenuEvents(WMAppContext * app, XEvent * event) { wmMenuEntry *entry; switch (event->xclient.data.l[1]) { case wmSelectItem: entry = findEntry(app->main_menu, event->xclient.data.l[2]); if (entry && entry->callback) { (*entry->callback) (entry->clientData, event->xclient.data.l[2], event->xclient.data.l[0]); } break; } } int WMProcessEvent(WMAppContext * app, XEvent * event) { int proc = False; if (!_XA_WINDOWMAKER_MENU) { _XA_WINDOWMAKER_MENU = XInternAtom(app->dpy, "_WINDOWMAKER_MENU", False); } switch (event->type) { case ClientMessage: if (event->xclient.format == 32 && event->xclient.message_type == _XA_WINDOWMAKER_MENU && event->xclient.window == app->main_window) { wmHandleMenuEvents(app, event); proc = True; } } return proc; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wmlib/menu.h���������������������������������������������������������������������0000644�0001750�0001750�00000003753�13431646202�013226� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* menu.h - private menu declarations * * WMlib - WindowMaker application programming interface * * Copyright (C) 1997-2003 Alfredo K. Kojima * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301, USA. */ #ifndef _MENU_H_ #define _MENU_H_ #define WMMENU_PROPNAME "_WINDOWMAKER_MENU" typedef struct _wmMenuEntry { struct _wmMenuEntry *next; struct _wmMenuEntry *prev; struct _wmMenu *menu; /* menu for the entry */ char *text; /* entry text */ char *shortcut; WMMenuAction callback; void *clientData; /* data to pass to callback */ WMFreeFunction free; /* function to free clientData */ int tag; /* unique entry ID */ struct _wmMenu *cascade; /* cascade menu */ short order; short enabled; /* entry is selectable */ char *entryline; } wmMenuEntry; typedef struct _wmMenu { wmAppContext *appcontext; int code; struct _wmMenu *parent; char *title; /* menu title */ wmMenuEntry *entries; /* list of entries */ wmMenuEntry *first; /* first of list of entries */ int realized; char *entryline; char *entryline2; } wmMenu; enum { wmBeginMenu = 1, wmEndMenu = 2, wmNormalItem = 10, wmDoubleItem = 11, wmSubmenuItem = 12 }; #endif ���������������������WindowMaker-0.95.9/wmlib/COPYING.LIB����������������������������������������������������������������0000644�0001750�0001750�00000061447�13431646202�013555� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ GNU LIBRARY GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1991 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the library GPL. It is numbered 2 because it goes with version 2 of the ordinary GPL.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Library General Public License, applies to some specially designated Free Software Foundation software, and to any other libraries whose authors decide to use it. You can use it for your libraries, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library, or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link a program with the library, you must provide complete object files to the recipients so that they can relink them with the library, after making changes to the library and recompiling it. And you must show them these terms so they know their rights. Our method of protecting your rights has two steps: (1) copyright the library, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the library. Also, for each distributor's protection, we want to make certain that everyone understands that there is no warranty for this free library. If the library is modified by someone else and passed on, we want its recipients to know that what they have is not the original version, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that companies distributing free software will individually obtain patent licenses, thus in effect transforming the program into proprietary software. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License, which was designed for utility programs. This license, the GNU Library General Public License, applies to certain designated libraries. This license is quite different from the ordinary one; be sure to read it in full, and don't assume that anything in it is the same as in the ordinary license. The reason we have a separate public license for some libraries is that they blur the distinction we usually make between modifying or adding to a program and simply using it. Linking a program with a library, without changing the library, is in some sense simply using the library, and is analogous to running a utility program or application program. However, in a textual and legal sense, the linked executable is a combined work, a derivative of the original library, and the ordinary General Public License treats it as such. Because of this blurred distinction, using the ordinary General Public License for libraries did not effectively promote software sharing, because most developers did not use the libraries. We concluded that weaker conditions might promote sharing better. However, unrestricted linking of non-free programs would deprive the users of those programs of all benefit from the free status of the libraries themselves. This Library General Public License is intended to permit developers of non-free programs to use free libraries, while preserving your freedom as a user of such programs to change the free libraries that are incorporated in them. (We have not seen how to achieve this as regards changes in header files, but we have achieved it as regards changes in the actual functions of the Library.) The hope is that this will lead to faster development of free libraries. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, while the latter only works together with the library. Note that it is possible for a library to be covered by the ordinary General Public License rather than by this special one. GNU LIBRARY GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Library General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, 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 Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also compile or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. c) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. d) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Library General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY 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 LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. <one line to give the library's name and a brief idea of what it does.> Copyright (C) <year> <name of author> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. <signature of Ty Coon>, 1 April 1990 Ty Coon, President of Vice That's all there is to it! �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wmlib/command.c������������������������������������������������������������������0000644�0001750�0001750�00000004625�13431646202�013672� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* command.c - WindowMaker commands * * WMlib - WindowMaker application programming interface * * Copyright (C) 1997-2003 Alfredo K. Kojima * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301, USA. */ #include <X11/Xlib.h> #include <stdlib.h> #include "WMaker.h" #include "app.h" static Atom getwmfunc(Display * dpy) { return XInternAtom(dpy, "_WINDOWMAKER_WM_FUNCTION", False); } void WMHideApplication(WMAppContext * app) { XEvent event; event.xclient.type = ClientMessage; event.xclient.message_type = getwmfunc(app->dpy); event.xclient.format = 32; event.xclient.display = app->dpy; event.xclient.window = app->main_window; event.xclient.data.l[0] = WMFHideApplication; event.xclient.data.l[1] = 0; event.xclient.data.l[2] = 0; event.xclient.data.l[3] = 0; XSendEvent(app->dpy, RootWindow(app->dpy, app->screen_number), False, SubstructureNotifyMask | SubstructureRedirectMask, &event); } void WMHideOthers(WMAppContext * app) { XEvent event; event.xclient.type = ClientMessage; event.xclient.message_type = getwmfunc(app->dpy); event.xclient.format = 32; event.xclient.display = app->dpy; event.xclient.window = app->main_window; event.xclient.data.l[0] = WMFHideOtherApplications; event.xclient.data.l[1] = 0; event.xclient.data.l[2] = 0; event.xclient.data.l[3] = 0; XSendEvent(app->dpy, RootWindow(app->dpy, app->screen_number), False, SubstructureNotifyMask | SubstructureRedirectMask, &event); } void WMSetWindowAttributes(Display * dpy, Window window, GNUstepWMAttributes * attributes) { Atom atom; atom = XInternAtom(dpy, "_GNUSTEP_WM_ATTR", False); XChangeProperty(dpy, window, atom, atom, 32, PropModeReplace, (unsigned char *)attributes, sizeof(GNUstepWMAttributes) / sizeof(CARD32)); } �����������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/wmlib/Makefile.am����������������������������������������������������������������0000644�0001750�0001750�00000001252�13431646202�014135� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ AUTOMAKE_OPTIONS = no-dependencies libWMaker_la_LDFLAGS = -version-info 1:1:0 lib_LTLIBRARIES = libWMaker.la include_HEADERS = WMaker.h AM_CPPFLAGS = $(DFLAGS) @XCFLAGS@ libWMaker_la_LIBADD = -lX11 libWMaker_la_SOURCES = \ menu.c \ app.c \ event.c \ command.c \ app.h \ menu.h pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = wmlib.pc DISTCLEANFILES = $(pkgconfig_DATA) wmlib.pc: Makefile @echo "Generating $@" @echo 'Name: wmlib' > $@ @echo 'Description: Window Maker interface definitions' >> $@ @echo 'Version: $(VERSION)' >> $@ @echo 'Requires: x11' >> $@ @echo 'Libs: $(lib_search_path) -lWMaker' >> $@ @echo 'Cflags: $(inc_search_path)' >> $@ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/compile��������������������������������������������������������������������������0000755�0001750�0001750�00000016327�13642360053�012357� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#! /bin/sh # Wrapper for compilers which do not understand '-c -o'. scriptversion=2018-03-07.03; # UTC # Copyright (C) 1999-2018 Free Software Foundation, Inc. # Written by Tom Tromey <tromey@cygnus.com>. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, 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, see <https://www.gnu.org/licenses/>. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to <bug-automake@gnu.org> or send patches to # <automake-patches@gnu.org>. nl=' ' # We need space, tab and new line, in precisely that order. Quoting is # there to prevent tools from complaining about whitespace usage. IFS=" "" $nl" file_conv= # func_file_conv build_file lazy # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. If the determined conversion # type is listed in (the comma separated) LAZY, no conversion will # take place. func_file_conv () { file=$1 case $file in / | /[!/]*) # absolute file, and not a UNC file if test -z "$file_conv"; then # lazily determine how to convert abs files case `uname -s` in MINGW*) file_conv=mingw ;; CYGWIN*) file_conv=cygwin ;; *) file_conv=wine ;; esac fi case $file_conv/,$2, in *,$file_conv,*) ;; mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; cygwin/*) file=`cygpath -m "$file" || echo "$file"` ;; wine/*) file=`winepath -w "$file" || echo "$file"` ;; esac ;; esac } # func_cl_dashL linkdir # Make cl look for libraries in LINKDIR func_cl_dashL () { func_file_conv "$1" if test -z "$lib_path"; then lib_path=$file else lib_path="$lib_path;$file" fi linker_opts="$linker_opts -LIBPATH:$file" } # func_cl_dashl library # Do a library search-path lookup for cl func_cl_dashl () { lib=$1 found=no save_IFS=$IFS IFS=';' for dir in $lib_path $LIB do IFS=$save_IFS if $shared && test -f "$dir/$lib.dll.lib"; then found=yes lib=$dir/$lib.dll.lib break fi if test -f "$dir/$lib.lib"; then found=yes lib=$dir/$lib.lib break fi if test -f "$dir/lib$lib.a"; then found=yes lib=$dir/lib$lib.a break fi done IFS=$save_IFS if test "$found" != yes; then lib=$lib.lib fi } # func_cl_wrapper cl arg... # Adjust compile command to suit cl func_cl_wrapper () { # Assume a capable shell lib_path= shared=: linker_opts= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. eat=1 case $2 in *.o | *.[oO][bB][jJ]) func_file_conv "$2" set x "$@" -Fo"$file" shift ;; *) func_file_conv "$2" set x "$@" -Fe"$file" shift ;; esac ;; -I) eat=1 func_file_conv "$2" mingw set x "$@" -I"$file" shift ;; -I*) func_file_conv "${1#-I}" mingw set x "$@" -I"$file" shift ;; -l) eat=1 func_cl_dashl "$2" set x "$@" "$lib" shift ;; -l*) func_cl_dashl "${1#-l}" set x "$@" "$lib" shift ;; -L) eat=1 func_cl_dashL "$2" ;; -L*) func_cl_dashL "${1#-L}" ;; -static) shared=false ;; -Wl,*) arg=${1#-Wl,} save_ifs="$IFS"; IFS=',' for flag in $arg; do IFS="$save_ifs" linker_opts="$linker_opts $flag" done IFS="$save_ifs" ;; -Xlinker) eat=1 linker_opts="$linker_opts $2" ;; -*) set x "$@" "$1" shift ;; *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) func_file_conv "$1" set x "$@" -Tp"$file" shift ;; *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) func_file_conv "$1" mingw set x "$@" "$file" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -n "$linker_opts"; then linker_opts="-link$linker_opts" fi exec "$@" $linker_opts exit 1 } eat= case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] Wrapper for compilers which do not understand '-c -o'. Remove '-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the right script to run: please start by reading the file 'INSTALL'. Report bugs to <bug-automake@gnu.org>. EOF exit $? ;; -v | --v*) echo "compile $scriptversion" exit $? ;; cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \ icl | *[/\\]icl | icl.exe | *[/\\]icl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac ofile= cfile= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. # So we strip '-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) ofile=$2 ;; *) set x "$@" -o "$2" shift ;; esac ;; *.c) cfile=$1 set x "$@" "$1" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -z "$ofile" || test -z "$cfile"; then # If no '-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no # '.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi # Name of file we expect compiler to create. cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. # Note: use '[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d while true; do if mkdir "$lockdir" >/dev/null 2>&1; then break fi sleep 1 done # FIXME: race condition here if user kills between mkdir and trap. trap "rmdir '$lockdir'; exit 1" 1 2 15 # Run the compile. "$@" ret=$? if test -f "$cofile"; then test "$cofile" = "$ofile" || mv "$cofile" "$ofile" elif test -f "${cofile}bj"; then test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" fi rmdir "$lockdir" exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/script/��������������������������������������������������������������������������0000755�0001750�0001750�00000000000�13642365212�012356� 5����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/script/replace-ac-keywords.sh����������������������������������������������������0000755�0001750�0001750�00000013064�13431646202�016477� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh ########################################################################### # # Window Maker window manager # # Copyright (c) 2015 Christophe CURIS # Copyright (c) 2015 Window Maker Team # # 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., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # ########################################################################### # # replace-ac-keywords.sh: # generate text file from a template text file, processing @keywords@ # from configure's detected stuff # # This follows the principle similar to what Autoconf does for the files # defined in AC_CONFIG_FILES; the reasons for this script are: # # - Autoconf recommends to only defined Makefiles in that macro and to # process the rest (if possible) through a Make rule; # # - we also take the opportunity to get access to the AC_DEFINE stuff # without needing to AC_SUBST them, which would grow unnecessarily the # makefile; # # - contrary to Autoconf, we also give the possibility to completely # remove lines from the template, where Autoconf only comments them (when # using AM_CONDITIONAL for example) # ########################################################################### # # Please note that this script is writen in sh+sed on purpose: this script # is gonna be run on the machine of the person who is trying to compile # WindowMaker, and as such we cannot be sure to find any scripting language # in a known version and that works (python/ruby/tcl/perl/php/you-name-it). # # So for portability, we stick to the same sh+awk constraint as Autotools # to limit the problem, see for example: # http://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.69/html_node/Portable-Shell.html # ########################################################################### # Report an error on stderr and exit with status 2 to tell make that we could # not do what we were asked arg_error() { echo "$0: $@" >&2 exit 2 } # print help and exit with success status print_help() { echo "$0: convert a Texinfo file into a plain text file" echo "Usage: $0 [options...] <template-file>" echo "valid options are:" echo " -Dkey=value : define 'key' to the value 'value'" echo " --filter key : remove lines containing @key@ if it is undefined" echo " --header file : C header file to parse for #define" echo " -o file : name for the output file" echo " --replace key : replace @key@ with its value" exit 0 } # Parse a C header file and add the defined lines to the list of known keys+values # We explicitely excludes macros defined on multiple lines and macros with arguments # Skip value defined to '0' to consider them as undefine extract_vars_from_c_header () { sed -n '/^#[ \t]*define[ \t][ \t]*[A-Za-z][A-Za-z_0-9]*[ \t].*[^\\]$/ { s/^#[ \t]*define[ \t]*// s/[ \t][ \t]*/=/ /=0$/d p }' "$1" } # Extract command line arguments while [ $# -gt 0 ]; do case $1 in -D*) echo "$1" | grep '^-D[a-zA-Z][a-z_A-Z0-9]*=' > /dev/null || arg_error "syntax error for '$1', expected -Dname=value" var_defs="$var_defs `echo "$1" | sed -e 's/^-D//' `" ;; --filter) shift list_filters="$list_filters $1" ;; --header) shift [ -r "$1" ] || arg_error "header file \"$1\" is not readable" var_defs="$var_defs `extract_vars_from_c_header "$1" `" ;; -h|-help|--help) print_help ;; -o) shift output_file="$1" ;; --replace) shift list_replaces="$list_replaces $1" ;; -*) arg_error "unknow option '$1'" ;; *) [ "x$input_file" = "x" ] || arg_error "only 1 input file can be specified, not \"$input_file\" and \"$1\"" input_file="$1" ;; esac shift done # Check consistency of command-line [ "x$input_file" != "x" ] || arg_error "no input template file given" [ "x$output_file" != "x" ] || arg_error "no output file given" [ "x$list_replaces$list_filters" != "x" ] || arg_error "no key to process from template" ########################################################################### # Generate the SED commands to replace the requested keys for key in $list_replaces do # if there are multiple possible values, keep the last value=`echo "$var_defs" | grep "^$key=" | tail -1 ` [ "x$value" != "x" ] || arg_error "key \"$key\" does not have a value" sed_cmd="$sed_cmd s#@$key@#`echo "$value" | sed -e 's/^[^=]*=//' `#" done # Generate the SED commands to filter lines with the specified keys for key in $list_filters do if echo "$var_defs" | grep "^$key=" > /dev/null ; then sed_cmd="$sed_cmd s#@$key@## /@!$key@/d" else sed_cmd="$sed_cmd s#@!$key@## /@$key@/d" fi done ########################################################################### sed -e "$sed_cmd" < "$input_file" > "$output_file" ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/script/nested-func-to-macro.sh���������������������������������������������������0000755�0001750�0001750�00000020104�13431646202�016561� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh ########################################################################### # # Window Maker window manager # # Copyright (c) 2014 Christophe CURIS # Copyright (c) 2014 Window Maker Team # # 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., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # ########################################################################### # # nested-func-to-macro.sh: # from a C source file specified with "-i", convert the functions # specified with "-f" into preprocessor macros ("#define") and save the # result as the file specified with "-o" # # The goal is to process nested functions (functions defined inside other # functions), because some compilers do not support that, despite the # advantages against macros: # - there is no side effect on arguments, like what macros does; # - the compiler can check the type used for arguments; # - the compiler can decide wether it is best to inline them or not; # - they are better handled by text editors, mainly for indentation but # also because there is no more '\' at end of lines; # - generaly, error message from the compiler are a lot clearer. # # As opposed to simple static functions, there is a strong benefit because # they can access the local variables of the function in which they are # defined without needing extra arguments that may get complicated. # # These added values are important for developpement because they help keep # code simple (and so maintainable and with lower bug risk). # # Because this script convert them to macros (only if 'configure' detected # that the compiler does not support nested functions, see the macro # WM_PROG_CC_NESTEDFUNC), there are a few constraints when writing such # nested functions in the code: # # - you cannot use the function's address (example: callback), but that # would be a bad idea anyway (in best case there's a penalty issue, in # worst case it can crash the program); # # - you should be careful on what you're doing with the arguments of the # function, otherwise the macro's side effects will re-appear; # # - you may need some extra '{}' when calling the function in an # if/for/while/... construct, because of the difference between a function # call and the macro that will be replaced (the macro will contain its own # pair of '{}' which will be followed by the ';' you use for the function # call; # # - the prototype of the function must be on a single line, it must not # spread across multiple lines or replace will fail; # # - you should follow the project's coding style, as hacky stuff may # make the script generate crap. And you don't want that to happen. # ########################################################################### # # Please note that this script is writen in sh+awk on purpose: this script # is gonna be run on the machine of the person who is trying to compile # WindowMaker, and as such we cannot be sure to find any scripting language # in a known version and that works (python/ruby/tcl/perl/php/you-name-it). # # So for portability, we stick to the same sh+awk constraint as Autotools # to limit the problem, see for example: # http://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.69/html_node/Portable-Shell.html # ########################################################################### # Report an error on stderr and exit with status 1 to tell make could not work arg_error() { echo "$0: $@" >&2 exit 1 } # print help and exit with success status print_help() { echo "$0: convert nested functions into macros in C source" echo "Usage: $0 [options...] input_file" echo "valid options are:" echo " -f name : add 'name' to the list of function to process" echo " -o file : set output file" exit 0 } # Extract command line arguments while [ $# -gt 0 ]; do case $1 in -f) shift echo "$1" | grep -q '^[A-Z_a-z][A-Z_a-z0-9]*$' || arg_error "function name \"$1\" is not valid" function_list="$function_list $1" ;; -h|-help|--help) print_help ;; -o) shift ; output_file="$1" ;; -*) arg_error "unknow option '$1'" ;; *) [ "x$input_file" = "x" ] || arg_error "only 1 input file can be specified, not \"$input_file\" and \"$1\"" input_file="$1" ;; esac shift done # Check consistency of command-line [ "x$input_file" = "x" ] && arg_error "no source file given" [ "x$function_list" = "x" ] && arg_error "no function name were given, nothing to do" [ "x$output_file" = "x" ] && arg_error "no output file name specified" [ -r "$input_file" ] || arg_error "source file \"$input_file\" is not readable" # Declare a function that takes care of converting the function code into a # macro definition. All the code is considered part of the C function's body # until we have matched the right number of {} pairs awk_function_handler=' function replace_definition(func_name) { # Isolate the list of arguments from the rest of the line # This code could be updated to handle arg list over multiple lines, but # it would add unnecessary complexity because a function that big should # probably be global static arg_start = index($0, "("); arg_end = index($0, ")"); argsubstr = substr($0, arg_start + 1, arg_end - arg_start - 1); remain = substr($0, arg_end); $0 = "#define " func_name "(" # Remove the types from the list of arguments split(argsubstr, arglist, /,/); separator = ""; for (i = 1; i <= length(arglist); i++) { argname = substr(arglist[i], match(arglist[i], /[A-Z_a-z][A-Z_a-z0-9]*$/)); $0 = $0 separator argname; separator = ", "; } delete arglist; $0 = $0 remain; # Count the number of pairs of {} and take next line until we get our matching count is_first_line = 1; nb_pair = 0; while (1) { # Count the opening braces split($0, dummy, /\{/); nb_pair = nb_pair + (length(dummy) - 1); delete dummy; # Count the closing braces split($0, dummy, /\}/); nb_pair = nb_pair - (length(dummy) - 1); delete dummy; # If we found the end of the function, stop now if (nb_pair <= 0 && !is_first_line) { # Note that we count on awk that is always executing the match-all # pattern to print the current line in the $0 pattern break; } # Otherwise, print current line with the macro continuation mark and grab # next line to process it $0 = $0 " \\"; print; getline; is_first_line = 0; } # We mark the current macro as defined so it can be undefined at the end func_defined[func_name] = 1; }' # Build the list of awk pattern matching for each function: # The regular expression matches function definition by the name of the function # that must be preceeded by at least one keyword (likely the return type), but # nothing like a math operator or other esoteric sign for function in $function_list ; do awk_function_handler="$awk_function_handler /^[\\t ]*([A-Za-z][A-Za-z_0-9]*[\\t ])+${function}[\\t ]*\\(/ { replace_definition(\"${function}\"); }" done # Finishing, undefine the macro at the most appropriate place we can easily # guess awk_function_handler="$awk_function_handler /^\\}/ { # If we are at the end of a function definition, undefine all macros that # have been defined so far for (func_name in func_defined) { print \"#undef \" func_name; delete func_defined[func_name]; } } # Print all other lines as-is { print } " # Find the specified functions and transform them into macros awk "$awk_function_handler" < "$input_file" > "$output_file" ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/script/check-translation-sources.sh����������������������������������������������0000755�0001750�0001750�00000017165�13431646202�017736� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh ########################################################################### # # Window Maker window manager # # Copyright (c) 2014-2015 Christophe CURIS # Copyright (c) 2015 Window Maker Team # # 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., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # ########################################################################### # # check-translation-sources.sh: # Make sure that the list of source files given as reference in a 'po/' # is aligned against the list of source files in the compilation # directory; # It also checks that the list of '*.po' files set in EXTRA_DIST is # aligned with the list of files in the repository. This is should be # checked by 'make distcheck' but today it is complicated to do that # automatically, so better safe than sorry... # ########################################################################### # # For portability, we stick to the same sh+awk constraint as Autotools to # limit problems, see for example: # http://www.gnu.org/software/autoconf/manual/autoconf-2.69/html_node/Portable-Shell.html # ########################################################################### # Report an error on stderr and exit with status 1 to tell make could not work arg_error() { echo "`basename $0`: $@" >&2 exit 1 } # print help and exit with success status print_help() { echo "$0: check list of source files for translation against compiled list" echo "Usage: $0 [options...] [translation_directory]" echo "valid options are:" echo " -s file : makefile.am for the compilation (the Source)" echo " -v name : name of the variable in source makefile defining the sources" echo " (the variable used in translation makefile is assumed to be 'POTFILES')" exit 0 } # Default setting trans_dir="." # Extract command line arguments while [ $# -gt 0 ]; do case $1 in -s) shift [ -z "$src_make" ] || arg_error "only 1 Makefile can be used for source (option: -s)" src_make="$1" ;; -v) shift echo "$1" | grep -q '^[A-Za-z][A-Z_a-z0-9]*$' || arg_error "variable name \"$1\" is not valid (option: -v)" src_variables="$src_variables $1" ;; -h|-help|--help) print_help ;; -*) arg_error "unknow option '$1'" ;; *) [ "x$trans_dir" != "x" ] || arg_error "only 1 directory can be specified for translation" trans_dir="$1" ;; esac shift done # Check consistency of command-line [ -z "$src_make" ] && arg_error "no makefile given for the compilation sources (option: -s)" [ -r "$src_make" ] || arg_error "source makefile '$src_make' is not readable (option: -s)" [ -d "$trans_dir" ] || arg_error "directory for translations is not a directory" # Detect what is the Makefile to use for the translations for mfile in Makefile.am Makefile.in Makefile ; do if [ -r "$trans_dir/$mfile" ] ; then trans_mfile="$trans_dir/$mfile" break fi done [ -z "$trans_mfile" ] && arg_error "could not find a Makefile in the translation directory" # Build the list of PO files that we will compare against EXTRA_DIST by the awk script awk_po_file_list="`ls "$trans_dir" | grep '\.po$' | sed -e 's/^/ pofile["/ ; s/$/"] = 1;/' `" [ -z "$awk_po_file_list" ] && arg_error "no \".po\" file found in translation directory, wrong path?" # If the list of sources was not specified, deduce it using Automake's syntax if [ -z "$src_variables" ]; then src_variables="`awk ' /^[A-Za-z][A-Za-z_0-9]*_SOURCES[ \t]*=/ { printf " %s", $1 } { } ' "$src_make" `" fi # Build the list of Source files defined in the compilation makefile awk_src_script=' function add_source_to_list() { # We assume the first instance is "=" and the next are "+=" # The script would misunderstand if the content of the variable is reset, but # that would be considered bad coding style anyway sub(/^[^=]*=/, ""); # Concatenate everything as long as there is a final back-slash on the line while (sub(/\\$/, "") > 0) { getline nxt; $0 = $0 nxt; } # Generate awk command to add the file(s) to the list split($0, list_src); for (key in list_src) { # We filter headers because it is very bad practice to include translatable strings # in a header. This script does not check this validity but assumes the code is ok if (list_src[key] !~ /\.h$/) { print " srcfile[\"" list_src[key] "\"] = 1;"; } delete list_src[key]; } }' for variable in $src_variables ; do awk_src_script="$awk_src_script /^[ \t]*$variable[ \t]* \+?=/ { add_source_to_list(); }" done # Tell awk to not print anything other than our explicit 'print' commands awk_src_script="$awk_src_script { }" awk_src_file_list="`awk "$awk_src_script" "$src_make" `" # Generate the script that performs the check of the Makefile in the Translation directory awk_trans_script=' function basename(filename, local_array, local_count) { local_count = split(filename, local_array, "/"); return local_array[local_count]; } function remove_source_from_list() { # We make the same assumption on "=" versus "+=" sub(/^[^=]*=/, ""); # Concatenate also every line with final back-slash while (sub(/\\$/, "") > 0) { getline nxt; $0 = $0 nxt; } # Remove source that are found, complain about extra files split($0, list_src); for (key in list_src) { file = basename(list_src[key]); if (srcfile[file]) { delete srcfile[file]; } else { print "Error: file \"" file "\" defined as source in Translation but is not in Compile makefile"; error_count++; } delete list_src[key]; } } function remove_dist_po_files() { # We make the same assumption on "=" versus "+=" sub(/^[^=]*=/, ""); # Concatenate also every line with final back-slash while (sub(/\\$/, "") > 0) { getline nxt; $0 = $0 nxt; } # Remove PO files that are listed, complain about extra PO files split($0, list_file); for (key in list_file) { if (pofile[list_file[key]]) { delete pofile[list_file[key]]; } else if (list_file[key] ~ /\.po$/) { print "Error: file \"" list_file[key] "\" defined in EXTRA_DIST but was not found in translation dir"; error_count++; } delete list_file[key]; } }' awk_trans_script="$awk_trans_script BEGIN { error_count = 0; $awk_src_file_list $awk_po_file_list } /^[ \\t]*POTFILES[ \\t]* \\+?=/ { remove_source_from_list(); } /^[ \\t]*EXTRA_DIST[ \\t]* \\+?=/ { remove_dist_po_files(); } END { # Make sure there is no un-translated source file for (key in srcfile) { print \"Error: source file \\\"\" key \"\\\" is not in the translation list\"; error_count++; } # Make sure there is no PO file left outside EXTRA_DIST for (key in pofile) { print \"Error: translation file \\\"\" key \"\\\" is not in EXTRA_DIST\"; error_count++; } # If error(s) occured, use non-zero status to stop 'make' # We use 3 to distinguish for awk's possible own problems (status 1 or 2) if (error_count > 0) { exit 3 } }" # Run the script; we use 'exec' so we are sure the exit code seen by 'make' will # come from 'awk' exec awk "$awk_trans_script" "$trans_mfile" �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/script/check-cmdline-options-doc.sh����������������������������������������������0000755�0001750�0001750�00000017307�13431646202�017564� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh ########################################################################### # # Window Maker window manager # # Copyright (c) 2015 Christophe CURIS # Copyright (c) 2015 Window Maker Team # # 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., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # ########################################################################### # # check-cmdline-options-doc.sh: # Compare the options listed in a program's --help text against its # documentation, check that all options are described and that there are # not deprecated options in the doc. # # A know limitation is that it assumes the help text from the program is # in line with what the program actually supports, because it would be too # complicated to actually check also in the sources the supported options. # ########################################################################### # # For portability, we stick to the same sh+sed constraint as Autotools to # limit problems, see for example: # http://www.gnu.org/software/autoconf/manual/autoconf-2.69/html_node/Portable-Shell.html # ########################################################################### # Report an error on stderr and exit with status 2 to tell make that we could # not do what we were asked arg_error() { echo "`basename $0`: $@" >&2 exit 2 } # print help and exit with success status print_help() { echo "$0: check program's list of options against its documentation" echo "Usage: $0 options..." echo "valid options are:" echo " --ignore-prg arg : ignore option '--arg' from program's output" echo " (syntax: 'arg1,arg2,... # reason', args without leading '--')" echo " --man-page file : program's documentation file, in man format" echo " --program name : name of the program to run with '--help'" echo " --text-doc file : program's documentation file, in plain text format" exit 0 } # Extract command line arguments while [ $# -gt 0 ]; do case $1 in --ignore-prg) shift echo "$1" | grep '#' > /dev/null || echo "Warning: no reason provided for --ignore-prg on \"$1\"" >&2 for arg in `echo "$1" | sed -e 's/#.*$// ; s/,/ /g' ` do ignore_arg_program="$ignore_arg_program --$arg" done ;; --man-page) shift [ -z "$man_page$text_doc" ] || arg_error "only 1 documentation file can be used (option: --man-page)" man_page="$1" ;; --program) shift [ -z "$prog_name" ] || arg_error "only 1 program can be used (option: --program)" prog_name="$1" ;; --text-doc) shift [ -z "$man_page$text_doc" ] || arg_error "only 1 documentation file can be used (option: --text-doc)" text_doc="$1" ;; -h|-help|--help) print_help ;; -*) arg_error "unknow option '$1'" ;; *) arg_error "argument '$1' is not understood" ;; esac shift done # Check consistency of command-line [ -z "$prog_name" ] && arg_error "no program given (option: --program)" [ -z "$man_page$text_doc" ] && arg_error "no documentation given" [ -z "$man_page" ] || [ -r "$man_page" ] || arg_error "man page file '$man_page' is not readable (option: --man-page)" [ -z "$text_doc" ] || [ -r "$text_doc" ] || arg_error "text file '$text_doc' is not readable (option: --text-doc)" # Make sure the program will not be searched in $PATH if ! echo "$prog_name" | grep '/' > /dev/null ; then prog_name="./$prog_name" fi [ -x "$prog_name" ] || arg_error "program '$prog_name' does not exist or is not executable" # Get the list of options that the program claims it supports # ----------------------------------------------------------- # We suppose (it is common practice) that the options are listed one per line # with no other text at the beginning of the line # If the line contains both a short option followed by a long option, we keep only the long # option because it is better to check for it prog_options=`$prog_name --help | sed -n '/^[ \t]*-/ { s/^[ \t]*// ; s/^-[^-],[ \t]*--/--/ ; s/[^-A-Z_a-z0-9].*$// ; p }' ` [ "x$prog_options" = "x" ] && arg_error "program '$prog_name --help' did not return any option" # We filter options that user wants us to, but we warn if the user asked to filter an option that is # not actually present, to make sure his command line invocation stays up to date for filter in $ignore_arg_program do if echo "$prog_options" | grep "^$filter\$" > /dev/null ; then prog_options=`echo "$prog_options" | grep -v "^$filter\$" ` else echo "Warning: program's option does not contain \"$filter\", specified in \"--ignore-prg\"" fi done if [ -n "$man_page" ]; then # In the man page format, the options must be grouped in the section "OPTIONS" # The name of the option is on the first line after the '.TP' command # The format requires the use of a backslash before the dash ('\-') sed_script='/^\.SH[ \t]*"*OPTIONS"*/,/^\.SH/ { /^\.TP/ { n s/^\.[A-Z]*// s/^[ \t]*// s/^\([^ \t]*\)[ \t].*$/\1/ s/\\-/-/g p } }' doc_options=`sed -n "$sed_script" "$man_page" ` fi # If no problem is found, we will exit with status OK exit_status=0 if [ -n "$text_doc" ]; then # In the plain-text format, there is no specific identification for the options, # as they may be described anywhere in the document. So we first try to get # everything that looks like a long option: sed_script=':restart /^\(.*[^-A-Za-z_0-9]\)*--[A-Za-z0-9]/ { h s/^.*--/--/ s/[^-A-Z_a-z0-9].*$// p g s/^\(.*\)--[A-Za-z0-9][-A-Z_a-z0-9]*/\1/ b restart }' doc_options=`sed -n "$sed_script" "$text_doc" ` # then we also explicitely search for the short options we got from the program for opt in `echo "$prog_options" | grep '^-[^-]' ` do if grep "^\\(.*[^-A-Za-z_0-9]\\)*$opt\\([^-A-Za-z_0-9].*\\)\$" "$text_doc" > /dev/null ; then doc_options="$doc_options $opt" fi done fi # Check that all program options are documented for opt in $prog_options do if ! echo "$doc_options" | grep "^$opt\$" > /dev/null ; then echo "Error: program option '$opt' is not in the documentation '$man_page$text_doc'" exit_status=1 fi done # Check that all documentation options are listed by the program for opt in $doc_options do if ! echo "$prog_options" | grep "^$opt\$" > /dev/null ; then echo "Error: option '$opt' is documented, but not in '$prog_name --help'" exit_status=1 fi done # It is recommended to list options in alphabetical order because it is then # easier to search for one if [ -n "$man_page" ]; then if ! echo "$doc_options" | sed -e 's/^-*//' | sort -c ; then echo "Error: options are not sorted alphabetically in '$man_page'" exit_status=1 fi fi # exit with appropriate return code, wether discrepancies were found or not exit $exit_status �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/script/generate-txt-from-texi.sh�������������������������������������������������0000755�0001750�0001750�00000130771�13642357774�017203� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh ########################################################################### # # Window Maker window manager # # Copyright (c) 2014-2015 Christophe CURIS # Copyright (c) 2015 Window Maker Team # # 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., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # ########################################################################### # # generate-txt-from-texi.sh: # generate a plain text file from a texinfo documentation # # The goal is to achieve a result similar to: # texi2any --plaintext --no-split <filename> # # The reason for this script is that we do not want to add a strict # dependancy on the 'makeinfo' tool suite (which has its own dependancies) # # There is also the problem that we use is to generate some documentations # that should be available before the 'configure' script have been run # (in the 'autogen.sh' script) because some of these documentation provide # information for running the 'configure' script; We distribute these # generated docs so normal user won't have the problem, but people that # want to build from the Git repository. # # This script is not a reference for Texinfo syntax, so if you modified the # texi source, you should really consider running texi2any at least once to # make sure everything is still ok. # ########################################################################### # # Despite trying to be close to the texi2any output, this script has a few # known differences: # # - texi2any does not generate a proper title header, it satisfy itself # with a rudimentary single line; this script generates a better looking # header with all the information provided # # - the table of content contains the line number for the section to ease # navigation contrary to texi2any that satisfy itself with a simplist toc # # - the paragraphs are properly justified, contrary to texi2any which only # flush left them in text outputs # # - There are 2 blank lines instead of 1 before chapter/section to make # them stand out more # # - when making cross-references, generate a decent-looking string with # the target line number, instead of the crypting "*Note:" label (inherited # from "info" format) that looks out of place # # - the line length is set to 76 instead of 72 # # - there are some difference in what characters are added when a style is # used for a string (@emph, @file, @sc, ...) because it assumes the text # will be read in a plain text tool with no special "smart" highlighting # # - it does not check that the syntax is valid; there are some simple # checks but it may misbehave, it does not replace a quality check with # texi2any # # - not all commands are implemented, some because they were not needed # so far, probably a few because they would be too complex to implement # # # There are a few limitations due to Texinfo being a cheesy format: # # - the @node should be followed immediately by its @chapter/@section # command, otherwise you may have mismatch on the line number if you make a # cross-reference to that @node # ########################################################################### # # Please note that this script is writen in sh+awk on purpose: this script # is gonna be run on the machine of the person who is trying to compile # WindowMaker, and as such we cannot be sure to find any scripting language # in a known version and that works (python/ruby/tcl/perl/php/you-name-it). # # So for portability, we stick to the same sh+awk constraint as Autotools # to limit the problem, see for example: # http://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.69/html_node/Portable-Shell.html # ########################################################################### # Report an error on stderr and exit with status 1 to tell make could not work arg_error() { echo "$0: $@" >&2 exit 1 } # print help and exit with success status print_help() { echo "$0: convert a Texinfo file into a plain text file" echo "Usage: $0 [options...] file.texi" echo "valid options are:" echo " -Dvar=val : set variable 'var' to value 'val'" echo " -d date : use 'date' for @today instead of current date" echo " -e email : set email address in variable 'emailsupport'" echo " -v version : version of the project" echo " -o file : name of text file to create" exit 0 } today_date="`LANG=C date '+%d %B %Y' | sed -e 's,^0,,' `" # Extract command line arguments while [ $# -gt 0 ]; do case $1 in -D*) echo "$1" | grep '^-D[a-zA-Z][a-zA-Z]*=' > /dev/null || arg_error "syntax error for '$1', expected -Dname=value" var_defs="$var_defs `echo "$1" | sed -e 's/^-D/ variable["/ ; s/=/"] = "/ ; s/$/";/' `" ;; -d) shift today_date="$1" ;; -e) shift var_defs="$var_defs variable[\"emailsupport\"] = \"@email{`echo "$1" | sed -e 's/@/@@/g' `}\";" ;; -h|-help|--help) print_help ;; -o) shift output_file="$1" ;; -v) shift project_version="$1" ;; -*) arg_error "unknow option '$1'" ;; *) [ "x$input_file" = "x" ] || arg_error "only 1 input file can be specified, not \"$input_file\" and \"$1\"" input_file="$1" ;; esac shift done var_defs="$var_defs variable[\"today\"] = \"$today_date\";" # Check consistency of command-line [ "x$input_file" != "x" ] || arg_error "no input texi file given" [ "x$output_file" != "x" ] || arg_error "no output file given" ########################################################################### # The script works in 2 passes, in the first pass we generate an almost # complete text file in the temporary file $temp_file, it also generates # the table of content in $toc_file as a sed script. # The second pass generate the $output_file from that $temp_file and the # $toc_file ########################################################################### # Create the temp file in the current directory temp_file="`echo "$input_file" | sed -e 's,^.*/\([^/]*\)$,\1, ; s,\.[^.]*$,,' `.tmp" toc_file="`echo "$temp_file" | sed -e 's,\.[^.]*$,,' `.toc" xref_file="`echo "$temp_file" | sed -e 's,\.[^.]*$,,' `.xrf" # Run awk for 1st pass, but if it fails stop now without deleting temp files awk ' # Stop processing everything, print the message for user and return error code # to tell "make" to not go further function report_error(message) { print "Error: " message > "/dev/stderr"; # When we call "exit", the block "END" is still called, we falsely set # this variable to skip a spurious second error message bye_marker_found = 1; # Code 1 is used when the script is invoked with incorrect arguments # Code 2 is used by awk to report problems exit 3; } # Conditionals for @ifXXX and @ifnotXXX commands # stored in a stack to allow embedding conditionals inside other conditionals # the global variable "cond_state" contains the current condition (0 or 1) function start_conditional(name, value, local_i) { cond_level++; cond_names[cond_level] = name; cond_value[cond_level] = value; cond_state = value; for (local_i = 1; local_i < cond_level; local_i++) { cond_state = cond_state && cond_value[local_i]; } } function end_conditional(name, local_i) { cond_level--; cond_state = 1; for (local_i = 1; local_i < cond_level; local_i++) { cond_state = cond_state && cond_value[local_i]; } } # Texinfo Variables # the texinfo standard allows to have variables set with @set and used # with @value; they can also be defined from command-line (-D) # they are stored in the global array "variable[name]" function set_variable(line, local_idx, local_name, local_value) { gsub(/^[ \t]+/, "", line); local_idx = match(line, /[ \t]/); if (local_idx > 0) { local_name = substr(line, 1, local_idx - 1); local_value = substr(line, local_idx + 1); gsub(/^[ \t]+/, "", local_value); } else { local_name = line; local_value = ""; } variable[ local_name ] = local_value; } # Write a single line to the output function write_line(line) { if (!cond_state) { return; } if (redirect_out == "no") { print line; line_number++; } else if (redirect_out == "copyright") { copyright_lines[copyright_count++] = line; } else { report_error("redirect output mode \"" redirect_out "\" is not supported (line " NR ")"); } } # Paragraph modes # the current mode for paragraph handling is a Stack to allow embedding # modes inside other modes # the global variable "par_mode" contains the active mode function par_mode_push(mode, local_i) { par_mode_count++; par_mode_save_previous[par_mode_count] = par_mode; par_mode_save_length[par_mode_count] = line_length; par_mode_save_prefix[par_mode_count] = line_prefix; par_mode_save_justify[par_mode_count] = par_justify; par_mode_save_itemmark[par_mode_count] = item_list_mark; par_mode = mode; # Check for quality of output if (length(line_prefix) + 25 > line_length) { print "Warning: too many paragraph modes imbricated at line " NR " for " mode > "/dev/stderr"; line_length = length(line_prefix) + 25; } } function par_mode_pop(mode, local_i) { if ((par_mode != mode) || (par_mode_count <= 0)) { report_error("found @end " mode " at line " NR " but not in @" mode " (current state is @" par_mode ")"); } par_mode = par_mode_save_previous[par_mode_count]; line_length = par_mode_save_length[par_mode_count]; line_prefix = par_mode_save_prefix[par_mode_count]; par_justify = par_mode_save_justify[par_mode_count]; item_list_mark = par_mode_save_itemmark[par_mode_count]; par_mode_count--; } # Discard all the lines in the file until the specified "@end" is found on a line by itself function discard_block(name, local_start_line) { local_start_line = NR; while (1) { if (getline == 0) { report_error("end of file reached while searching \"@end " name "\", started at line " local_start_line); } if ($0 == "@end " name) { break; } } } # Title Page generation function generate_title_page() { if (!cond_state) { return; } if (par_nb_words > 0) { generate_paragraph(); write_line(gen_underline(0, 76)); } # Title page start with 5 blank lines so the "title" coming after will # stand out a little bit write_line(""); write_line(""); write_line(""); par_mode_push("titlepage"); line_prefix = " "; line_length = 76 - 4; } function generate_title_page_title(title, local_array, local_count, local_i) { if (!cond_state) { return; } if (par_mode != "titlepage") { report_error("command @title used outside @titlepage, at line " NR); } generate_paragraph(); # Title deserves more space write_line(""); write_line(""); # Split long title if (length(title) < 60) { local_count = 1; local_array[1] = title; } else { local_count = int((length(title) + 59 ) / 60); sub_length = int((length(title) + local_count - 1) / local_count); local_count = 0; while (length(title) > 0) { if (length(title) > sub_length) { # Cut at first space before the length local_i = sub_length + 1; while (local_i > 0) { if (substr(title, local_i, 1) == " ") { break; } local_i--; } if (local_i == 0) { # Can not break first word, break at first possible place local_i = index(title, " "); if (local_i == 0) { local_i = length(title) + 1; } } } else { local_i = length(title) + 1; } local_count++; local_array[local_count] = substr(title, 1, local_i - 1); title = substr(title, local_i + 1); } } # Center the title for (local_i = 1; local_i <= local_count; local_i++) { write_line(gen_underline(-1, int((76 - length(local_array[local_i])) / 2)) local_array[local_i]); } write_line(""); write_line(""); } function generate_title_page_subtitle(title, local_array, local_count, local_i) { if (!cond_state) { return; } if (par_mode != "titlepage") { report_error("command @subtitle used outside @titlepage, at line " NR); } generate_paragraph(); # Split long lines if (length(title) < 65) { local_count = 1; local_array[1] = title; } else { local_count = int((length(title) + 64) / 65); sub_length = int((length(title) + local_count - 1) / local_count); local_count = 0; while (length(title) > 0) { if (length(title) > sub_length) { # Cut at first space before the length local_i = sub_length + 1; while (local_i > 0) { if (substr(title, local_i, 1) == " ") { break; } local_i--; } if (local_i == 0) { # Can not break first word, break at first possible place local_i = index(title, " "); if (local_i == 0) { local_i = length(title) + 1; } } } else { local_i = length(title) + 1; } local_count++; local_array[local_count] = substr(title, 1, local_i - 1); title = substr(title, local_i + 1); } } # Center the title for (local_i = 1; local_i <= local_count; local_i++) { write_line(gen_underline(-1, int((76 - length(local_array[local_i]) - 4) / 2)) "~ " local_array[local_i] " ~"); } } # Generate separation line to simulate page breaks in plain text file function generate_page_break() { if (!cond_state) { return; } generate_paragraph(); if (par_mode = "titlepage") { write_line(""); } write_line(""); write_line(gen_underline(0, 76)); par_indent = 1; } # Handle chapter and section declaration # take care of the automatic numbering and to put the line in the table of # content file, then generate the underlined line in output function new_section(level, title, is_numbered, local_i, local_line) { if (!cond_state) { return; } # Dump the current paragraph now generate_paragraph(); # Update the counters if (is_numbered) { section[level]++; for (local_i = level + 1; local_i <= 4; local_i++) { section[local_i] = 0; } } # Generate the line to be displayed if (is_numbered) { local_line = section[1]; for (local_i = 2; local_i <= level; local_i++) { local_line = local_line "." section[local_i]; } local_line = local_line " " title; } else { local_line = title; } # Add the entry to the ToC toc_count++; toc_entry_level[toc_count] = level; toc_entry_name[toc_count] = local_line; for (local_i = 1; local_i < level; local_i++) { toc_entry_name[toc_count] = " " toc_entry_name[toc_count]; } toc_entry_line[toc_count] = line_number + 3; # Print the section description write_line(""); write_line(""); write_line(local_line); write_line(gen_underline(level, length(local_line))); par_indent = 0; } # Do not generate anything for Node command, but keep the line information so # the nodes can be cross-referenced function new_node(args, local_nb, local_arr, local_i) { if (!cond_state) { return; } # Dump the current paragraph now generate_paragraph(); # The command takes many arguments, separate them because we care only for the 1st local_nb = split(args, local_arr, ","); if ((local_nb < 1) || (local_nb > 4)) { report_error("bad number of argument " local_nb " for @node at line " NR); } gsub(/^[ \t]+/, "", local_arr[1]); gsub(/[ \t]*$/, "", local_arr[1]); if (local_arr[1] == "") { report_error("missing node name for @node at line " NR); } # Consistency check if (node_address[local_arr[1]] != "") { report_error("node \"" local_arr[1] "\" is redefined at line " NR ", previous definition at line " node_defline[local_arr[1]]); } # Add a +3 offset to compensate for the position of the real location that will be the # chapter/section that should be following node_address[local_arr[1]] = line_number + 3; node_defline[local_arr[1]] = NR; } # List of Items function start_item_list(mark, type, default_mark) { par_mode_push(type); list_is_first_item = 1; list_item_wants_sepline = 0; par_indent = 1; if (line_prefix == "") { # First level of enumeration get one mode indentation space line_prefix = " "; } else { line_prefix = line_prefix " "; } if (mark == "") { item_list_mark = default_mark; } else { item_list_mark = execute_commands(mark); } write_line(""); } # One item in a Table function generate_item_in_table(line) { if (line !~ /^[ \t]*@itemx?[ \t]/) { report_error("bas usage for @item inside a @table, should be at start of line and followed by its value"); } generate_paragraph(); if (list_item_wants_sepline && !list_is_first_item) { write_line(""); } # Apply the global table style to this item gsub(/^[ \t]*@itemx?[ \t]*/, "", line); line = execute_commands(item_list_mark "{" line "}"); # Cancel the indentation added for the 2nd column for that line line = substr(line_prefix, 1, length(line_prefix)-5) line; write_line(line); list_item_wants_sepline = 0; } # Generate Underline string with the specified length function gen_underline(id, len, local) { if (id == -1) { local = " "; } else if (id == 1) { local = "**********"; } else if (id == 2) { local = "=========="; } else if (id == 3) { local = "----------"; } else if (id == 4) { local = ".........."; } else { local = "~~~~~~~~~~"; } while (length(local) < len) { local = local local; } return substr(local, 1, len); } # Generate text for an URL link function generate_url_reference(args, local_nb, local_arr) { local_nb = split(args, local_arr, ","); if (local_nb == 1) { return local_arr[1]; } else if (local_nb == 2) { return execute_commands(local_arr[2]) " (" local_arr[1] ")"; } else if (local_nb == 3) { return execute_commands(local_arr[3]); } else { report_error("bad number of argument " local_nb " for @uref at line " NR); } } # Generate text for a Cross-Reference into the document function generate_cross_reference(args, cmd, local_nb, local_arr, local_i) { local_nb = split(args, local_arr, ","); if ((local_nb < 1) || (local_nb > 5)) { report_error("bad number of argument " local_nb " for @" cmd " at line " NR); } local_arr[1] = execute_commands(local_arr[1]); for (local_i = 1; local_i <= local_nb; local_i++) { gsub(/^[ \t]+/, "", local_arr[local_i]); gsub(/[ \t]*$/, "", local_arr[local_i]); } if (local_arr[1] == "") { report_error("no node name specified in @" cmd " at line " NR); } if (local_arr[4] != "") { # If it is a link to an external documentation, do not create an xref_table entry local_i = "section [" local_arr[1] "]"; if (local_arr[5] != "") { local_i = local_i " in " execute_commands("@cite{" local_arr[5] "}"); } else { local_i = local_i " from " execute_commands("@file{" local_arr[4] "}"); } return local_i; } # Build the string to be displayed if (local_arr[3] != "") { local_i = "section [" execute_commands(local_arr[3]) "]"; } else { local_i = "section [" local_arr[1] "]"; } xref_idcount++; xref_table[xref_idcount] = local_arr[1]; xref_defline[xref_idcount] = NR; local_i = local_i sprintf(", at line @x%02X@", xref_idcount); return local_i; } # Generate a line with the name of an author # note, we assume the name(s) always fit on a line function generate_author_line(name, local_offset, local_attach_to_par) { if (!cond_state) { return; } local_attach_to_par = (par_nb_words > 0); generate_paragraph(); if (par_mode == "titlepage") { name = "-- " name " --"; local_offset = int((76 - length(name)) / 2); if (local_offset < 2) { local_offset = 2; } write_line(""); write_line(gen_underline(-1, local_offset) name); } else if (par_mode == "quotation") { name = "-- " name; local_offset = int((line_length - length(line_prefix) - length(name)) * 2/3); if (local_offset < length(line_prefix) + 2) { local_offset = length(line_prefix) + 2; } if (!local_attach_to_par) { write_line(""); } write_line(line_prefix gen_underline(-1, local_offset) name); } else { report_error("command @author used in an inappropriate mode (" par_mode ") at line " NR); } } # Add the specified line to the curren paragraph being built, do not print anything yet function add_text_to_paragraph(line) { nb = split(line, words, /[ \t]+/); for (i = 1; i <= nb; i++) { if (words[i] != "") { par_word[par_nb_words++] = words[i]; } } } # Print the paragraph from all the lines read so far function generate_paragraph( local_prefix, local_line, local_length, idx_word_start, idx_word_end, local_i) { if (par_nb_words <= 0) { return; } local_line = line_prefix; if (par_mode == "list") { if (list_item_wants_sepline && !list_is_first_item) { write_line(""); } list_is_first_item = 0; list_item_wants_sepline = 0; if (!par_indent) { local_prefix = item_list_mark " "; while (length(local_prefix) < 5) { local_prefix = " " local_prefix; } local_line = substr(local_line, 1, length(local_line) - 5) local_prefix; } } else if (par_mode == "enum") { if (list_item_wants_sepline && !list_is_first_item) { write_line(""); } list_is_first_item = 0; list_item_wants_sepline = 0; if (!par_indent) { local_prefix = " " item_list_mark ". "; local_line = substr(local_line, 1, length(local_line) - 5) local_prefix; # Increment the enumeration counter for the next item now if (item_list_mark + 0 == item_list_mark) { item_list_mark++; } else { local_i = index("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", item_list_mark); if (local_i == 0) { report_error("value \"" item_list_mark "\" is not supported for enumerated list - invalid @enumerate argument or list too long?"); } item_list_mark = substr("BCDEFGHIJKLMNOPQRSTUVWXYZ!bcdefghijklmnopqrstuvwxyz!", local_i, 1); } } } else if (par_mode == "table") { if (list_item_wants_sepline && !list_is_first_item) { write_line(""); } list_is_first_item = 0; list_item_wants_sepline = 0; } else if (par_mode == "titlepage") { write_line(""); } else if (par_mode == "par") { write_line(""); if (par_indent) { local_line = local_line " "; } } else if (par_mode == "quotation") { write_line(""); # There is no extra indentation of paragraphs in this mode } else { report_error("paragraph mode \"" par_mode "\" is not supported in generate_paragraph (line " NR ")"); } # Split the paragraph in lines idx_word_start = 0; while (idx_word_start < par_nb_words) { # First word is always printed, this makes sure that words too long for a line will # always be printed, very likely on a line by themselfs idx_word_end = idx_word_start; local_length = length(local_line) + length(par_word[idx_word_start]); idx_word_start++; # See how many word we can fit on the line while (idx_word_end < par_nb_words - 1) { if (local_length + 1 + length(par_word[idx_word_end + 1]) > line_length) { break; } idx_word_end++; local_length = local_length + 1 + length(par_word[idx_word_end]); } # Put all those words on the current line with the appropriate justification if (par_justify == "right") { local_line = local_line gen_underline(-1, line_length - local_length) par_word[idx_word_start - 1]; while (idx_word_start <= idx_word_end) { local_line = local_line " " par_word[idx_word_start++]; } } else { if ((par_justify == "left") || (idx_word_end == par_nb_words - 1) || (local_length >= line_length) || (idx_word_end < idx_word_start)) { local_line = local_line par_word[idx_word_start - 1]; while (idx_word_start <= idx_word_end) { local_line = local_line " " par_word[idx_word_start++]; } } else { # We calculate the ideal size of a space (as a real number) which would # make all the words perfectly fill the line, the formula being # ideal size = 1 + needed_extra_spaces / number_of_spaces_in_line ideal_space_length = 1 + (line_length - local_length) / (idx_word_end - idx_word_start + 1); count_spaces = 0; for (local_i = idx_word_start; local_i <= idx_word_end; local_i++) { count_spaces = count_spaces + ideal_space_length; word_space[local_i] = gen_underline(-1, int(count_spaces + 0.5)); count_spaces = count_spaces - length(word_space[local_i]); } local_line = local_line par_word[idx_word_start - 1]; while (idx_word_start <= idx_word_end) { local_line = local_line word_space[idx_word_start] par_word[idx_word_start++]; } } } write_line(local_line); # Reset for next line local_line = line_prefix; } par_nb_words = 0; par_indent = 1; } # Replace commands by text in the line, return the result function execute_commands(line, replaced_line, command) { replaced_line = ""; while (1) { idx = match(line, /@([a-zA-Z]+|.)/); if (idx == 0) { break; } # Separate the command and its arguments from the rest of the line replaced_line = replaced_line substr(line, 1, idx - 1); command = substr(line, idx + 1, RLENGTH - 1); line = substr(line, idx + RLENGTH); if (line ~ /^\{/) { # Command has argument(s), extract them brace_count = 0; for (i = 1; i <= length(line); i++) { if (substr(line, i, 1) == "{") { brace_count++; } if (substr(line, i, 1) == "}") { brace_count--; if (brace_count == 0) { break; } } } if (brace_count != 0) { report_error("closing brace not found for command \"@" command "\", at line " NR); } cmdargs = substr(line, 2, i-2); line = substr(line, i + 1); } else { # Command does not have arguments, discard the spaces used to separate it # from the next text cmdargs = ""; sub(/^[ \t]+/, "", line); } # Commands generating "special" characters ################################# if (command == "@") { replaced_line = replaced_line "@"; } else if (command == "bullet") { replaced_line = replaced_line "*"; } else if (command == "copyright") { replaced_line = replaced_line "(c)"; } else if (command == "minus") { replaced_line = replaced_line "-"; } else if (command == "registeredsymbol") { replaced_line = replaced_line "(r)"; } else if (command == "today") { # Make sure the date will be in english (we use "C" because it not certain # that the English locale is enabled on the machine of the user) replaced_line = replaced_line variable["today"]; # Commands to display text in a special style ############################## } else if (command == "asis") { line = cmdargs line; } else if (command == "b") { # bold line = "*" cmdargs "*" line; } else if (command == "emph") { line = cmdargs line; } else if ((command == "code") || (command == "command") || (command == "env") || (command == "option") || (command == "var")) { # Should be in fixed-spacing font; printed with single-quotes line = "'\''" cmdargs "'\''" line; } else if (command == "i") { # italic line = "_" cmdargs "_" line; } else if (command == "email") { line = "<" cmdargs ">" line; } else if (command == "file") { line = "\"" cmdargs "\"" line; } else if (command == "key") { line = "<" cmdargs ">" line; } else if (command == "r") { # roman font line = cmdargs line; } else if (command == "sc") { # Small-Caps, keep as-is in plain text line = cmdargs line; } else if (command == "t") { # typewriter-like line = cmdargs line; # References to other places ############################################### } else if (command == "anchor") { if (anchor_address[cmdargs] != "") { report_error("anchor \"" cmdargs "\" is redefined at line " NR ", previous definition at line " anchor_defline[cmdargs]); } # Set a -1 offset to compensate for the anchor being after the actual target anchor_address[cmdargs] = line_number - 1; anchor_defline[cmdargs] = NR; } else if (command == "cite") { # Reference to external document, we cannot do much line = cmdargs line; } else if (command == "pxref") { replaced_line = replaced_line "see " generate_cross_reference(cmdargs, command); } else if (command == "ref") { replaced_line = replaced_line generate_cross_reference(cmdargs, command); } else if (command == "uref") { replaced_line = replaced_line generate_url_reference(cmdargs); } else if (command == "xref") { replaced_line = replaced_line " See " generate_cross_reference(cmdargs, command); # Variable and Conditional commands ######################################## } else if (command == "value") { if (variable[cmdargs] == "") { report_error("variable '" cmdargs "' is unknow, for @value at line " NR); } line = variable[cmdargs] line; # Miscelleanous commands ################################################### } else if (command == "c") { # Comments: ignore everything to the end of line line = ""; } else { report_error("unknow command @" command " at line " NR); } } return (replaced_line line); } # Handle appropriately the "@end xxx" function process_end(line) { if (line == cond_names[cond_level]) { end_conditional(line); return; } if (line == "copying") { generate_paragraph(); redirect_out = "no"; } else if (line == "enumerate") { generate_paragraph(); par_mode_pop("enum"); par_indent = 1; } else if (line == "example") { generate_paragraph(); par_mode_pop("example"); par_indent = 1; } else if (line == "flushleft") { generate_paragraph(); par_mode_pop(par_mode); par_indent = 1; } else if (line == "flushright") { generate_paragraph(); par_mode_pop(par_mode); par_indent = 1; } else if (line == "itemize") { generate_paragraph(); par_mode_pop("list"); par_indent = 1; } else if (line == "quotation") { generate_paragraph(); par_mode_pop("quotation"); par_indent = 1; } else if ((line == "table") || (line == "ftable") || (line == "vtable")) { generate_paragraph(); par_mode_pop("table"); par_indent = 1; } else if (line == "titlepage") { generate_page_break(); par_mode_pop("titlepage"); par_indent = 0; } else { report_error("unknow command @end " line " at line " NR); } } BEGIN { # Count the lines generated for the Table of Content line_number = 0; # To perform some basic checks on the file top_was_found = 0; bye_marker_found = 0; # Paragraph generation parameters par_mode_count = 0; par_mode = "par"; par_nb_words = 0; par_indent = 1; par_justify = "justify"; redirect_out = "no"; line_length = 76; line_prefix = ""; # To handle conditional code cond_level = 0; cond_state = 1; # Number of entries in the Table of Content toc_count = 0; toc_file = "'"$toc_file"'"; # File to generate for the Cross-Reference tracking xref_file= "'"$xref_file"'"; # Define a custom variable so it is possible to differentiate between # texi2any and this script variable["cctexi2txt"] = "1.0"; # Variables inherited from the command line'"$var_defs"' } # First line is special, we always ignore it (NR == 1) { next; } /^[ \t]*@/ { # Treat the special commands that are supposed to be on a line by themselves idx = match($0, /^@([a-zA-Z]+)/); if (idx != 0) { # Remove the command from current line command = substr($0, idx + 1, RLENGTH - 1); line = substr($0, idx + 1 + RLENGTH); sub(/^[ \t]+/, "", line); # Commands for structuring the document #################################### if (command == "chapter") { new_section(1, execute_commands(line), 1); next; } else if (command == "section") { new_section(2, execute_commands(line), 1); next; } else if (command == "subsection") { new_section(3, execute_commands(line), 1); next; } else if (command == "subsubsection") { new_section(4, execute_commands(line), 1); next; } else if (command == "node") { new_node(execute_commands(line)); next; } else if (command == "top") { # This is mandatory for "info" format, but useless for plain text if (top_was_found > 0) { report_error("command @top at line " NR " but was already found at line " top_was_found); } top_was_found = NR; next; } else if (command == "unnumbered") { new_section(1, execute_commands(line), 0); next; # Commands for content in the Title Page ################################### } else if (command == "author") { generate_author_line(execute_commands(line)); next; } else if (command == "subtitle") { generate_title_page_subtitle(execute_commands(line)); next; } else if (command == "title") { generate_title_page_title(execute_commands(line)); next; # Commands changing the way paragraph are displayed ######################## } else if (command == "copying") { generate_paragraph(); redirect_out = "copyright"; copyright_count = 0; next; } else if (command == "end") { process_end(line); next; } else if (command == "enumerate") { if (cond_state) { generate_paragraph(); start_item_list(line, "enum", "1"); } next; } else if (command == "example") { if (cond_state) { generate_paragraph(); write_line(""); par_mode_push("example"); line_prefix = line_prefix " "; } next; } else if (command == "flushleft") { if (cond_state) { generate_paragraph(); par_mode_push(par_mode); par_justify = "left"; par_indent = 0; } next; } else if (command == "flushright") { if (cond_state) { generate_paragraph(); par_mode_push(par_mode); par_justify = "right"; par_indent = 0; } next; } else if (command == "itemize") { if (cond_state) { generate_paragraph(); start_item_list(line, "list", "*"); } next; } else if (command == "menu") { generate_paragraph(); discard_block(command); next; } else if (command == "quotation") { if (cond_state) { generate_paragraph(); par_mode_push("quotation"); line_prefix = line_prefix " "; line_length = line_length - 4; if (line != "") { add_text_to_paragraph(execute_commands(line)); # We add the ":" to the last word because we count on the function # "add_text_to_paragraph" to remove the trailing spaces on the line # first, which would not have happened if we just had appended the ":" # to the argument in the function call par_word[par_nb_words - 1] = par_word[par_nb_words - 1] ":"; line = ""; } } next; } else if ((command == "table") || (command == "ftable") || (command == "vtable")) { # "ftable" and "vtable" are the same as "table" except they are adding automatically # the item to the appropriate Index (respectively Function and Variable indexes). # As we do not generate index in the text file, we just treat them identically if (cond_state) { generate_paragraph(); par_mode_push("table"); list_is_first_item = 1; list_item_wants_sepline = 0; par_indent = 1; line_prefix = line_prefix " "; gsub(/[ \t]/, "", line); if (line !~ /^@[a-z][a-z]*$/) { report_error("invalid usage of @table, expecting a single style-changing command"); } item_list_mark = line; write_line(""); } next; } else if (command == "titlepage") { generate_title_page(); next; # Commands generating text automacitally ################################### } else if (command == "contents") { if (cond_state) { generate_paragraph(); write_line(""); write_line(""); print "@table_of_content@"; } next; } else if (command == "insertcopying") { if (cond_state) { generate_paragraph(); # The copying block was already formatted, we just have to print it as-is for (i = 0; i < copyright_count; i++) { write_line(copyright_lines[i]); } } next; } else if (command == "page") { generate_page_break(); next; } else if (command == "sp") { if (cond_state) { generate_paragraph(); while (line > 0) { write_line(""); line--; } } next; } else if (command == "vskip") { # Silently ignore, this is just for TeX if (cond_state) { generate_paragraph(); } next; # Variable and Conditional commands ######################################## } else if (command == "ifdocbook") { start_conditional(command, 0); line = ""; next; } else if (command == "ifhtml") { start_conditional(command, 0); line = ""; next; } else if (command == "ifinfo") { start_conditional(command, 1); line = ""; next; # "for historical compatibility" } else if (command == "ifplaintext") { start_conditional(command, 1); line = ""; next; } else if (command == "iftex") { start_conditional(command, 0); line = ""; next; } else if (command == "ifxml") { start_conditional(command, 0); line = ""; next; } else if (command == "ifnotdocbook") { start_conditional(command, 1); line = ""; next; } else if (command == "ifnothtml") { start_conditional(command, 1); line = ""; next; } else if (command == "ifnotinfo") { start_conditional(command, 0); line = ""; next; # "for historical compatibility" } else if (command == "ifnotplaintext") { start_conditional(command, 0); line = ""; next; } else if (command == "ifnottex") { start_conditional(command, 1); line = ""; next; } else if (command == "ifnotxml") { start_conditional(command, 1); line = ""; next; } else if (command == "ifclear") { start_conditional(command, (variable[line] == "")); next; } else if (command == "ifset") { start_conditional(command, (variable[line] != "")); next; } else if (command == "clear") { if (cond_state) { variable[ execute_commands(line) ] = ""; } next; } else if (command == "set") { if (cond_state) { set_variable(line); } next; # Miscelleanous commands ################################################### } else if (command == "bye") { # Mark the end of file, we are supposed to ignore everything after if (cond_state) { generate_paragraph(); while (getline != 0) { } bye_marker_found = 1; } next; } else if (command == "c") { # Comments: ignore everything to the end of line next; } else if (command == "errormsg") { print "Error: " execute_commands(cmdargs) > "/dev/stderr"; print " (from \"'"$input_file"'\", line " NR ")" > "/dev/stderr"; bye_marker_found = 1; exit 4; } else if (command == "finalout") { # Nothing to do, we are not generating anything in output file about long lines next; } else if (command == "ignore") { # These are multi-lines comments discard_block(command); next; } else if (command == "indent") { par_indent = 1; if (line == "") { next; } $0 = line; } else if (command == "noindent") { par_indent = 0; if (line == "") { next; } $0 = line; } else if (command == "setfilename") { # Should set the output file name automatically # at current time, we just ignore it next; } else if (command == "settitle") { # This is used for page headers # in a plain text file, it is useless next; } # Commands that were not recognised here may be commands that can be used # anywhere in a line but happenned to be at the beginning of the line this # time, we do nothing so they will be processed by "execute_commands" } } /@item/ { # We treat @item specially because it may generate more than 1 paragraph if (!cond_state) { next; } if (par_mode == "table") { generate_item_in_table($0); next; } else if ((par_mode != "list") && (par_mode != "enum")) { report_error("found @item at line " NR " but not inside an @itemize"); } while (1) { idx = match($0, /@item/); if (idx == 0) { break; } # We generate paragraph with all the text seen so far, which is part of # the previous item add_text_to_paragraph(substr($0, 1, idx - 1)); generate_paragraph(); $0 = substr($0, idx + 5); # When an item is found, we clear "par_ident" to actually place the item # mark on the next paragragh par_indent = 0; } # If the item is on a line by itself, stop processing the line to avoid # skipping lines more than necessary if (/^[ \t]*$/) { next; } } # Non-empty lines are added to the current paragraph { if (!cond_state) { next; } if ((par_mode == "list") || (par_mode == "enum") || (par_mode == "par") || (par_mode == "table") || (par_mode == "titlepage") || (par_mode == "quotation")) { if (/^[ \t]*$/) { # Empty lines separate paragraphs generate_paragraph(); # in list of items, they also tell us that user prefers an aerated list list_item_wants_sepline = 1; } else { add_text_to_paragraph(execute_commands($0)); } } else if (par_mode == "example") { # Line is printed unmodified, not split and not merged, but with an indentation $0 = line_prefix execute_commands($0); sub(/[ \t]*$/, ""); write_line($0); } else { report_error("paragraph mode \"" par_mode "\" is not supported for line processing (line " NR ")"); } } END { if (!bye_marker_found) { report_error("command \"@bye\" missing at end of file"); } if (!top_was_found) { report_error("command \"@top\" was not found in the file"); } # Count the number of lines that the ToC will occupy # we assume the ToC is at the beginning, so all sections will be shifted # by this number of lines down toc_nb_lines = 0; for (i = 1; i <= toc_count; i++) { if ((i > 1) && (toc_entry_level[i] == 1)) { toc_nb_lines++; } toc_nb_lines++; } # Generate the ToC for (i = 1; i <= toc_count; i++) { if ((i > 1) && (toc_entry_level[i] == 1)) { print "" > toc_file; } $0 = " " toc_entry_name[i] " "; if (length($0) % 2) { $0 = $0 " "; } while (length($0) < 76 - 4) { $0 = $0 " ."; } target_line = toc_entry_line[i] + toc_nb_lines; $0 = substr($0, 1, (76 - 5) - length(target_line)) " " target_line; print > toc_file; } # Generate the Cross-Reference line number update script print "# Generated Cross-Reference script for SED" > xref_file; for (i = 1; i <= xref_idcount; i++) { if (anchor_address[xref_table[i]] != "") { target_line = anchor_address[xref_table[i]] + toc_nb_lines; } else if (node_address[xref_table[i]] != "") { target_line = node_address[xref_table[i]] + toc_nb_lines; } else { report_error("cross reference to undefined node/anchor \"" xref_table[i] "\" found at line " xref_defline[i]); } printf "s/@x%02X@/%5d/g\n", i, target_line > xref_file; } } ' "$input_file" > "$temp_file" || exit $? # Run awk for 2nd pass, if it fails also stop now without deleting temp files awk ' /@table_of_content@/ { while (getline < "'"$toc_file"'") { print; } next; } { print } ' "$temp_file" | sed -f "$xref_file" > "$output_file" || exit $? # If all worked, remove the temp files rm -f "$temp_file" rm -f "$toc_file" rm -f "$xref_file" �������WindowMaker-0.95.9/script/generate-po-from-template.sh����������������������������������������������0000755�0001750�0001750�00000013631�13431646202�017616� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh ########################################################################### # # Window Maker window manager # # Copyright (c) 2014-2015 Christophe CURIS # Copyright (c) 2015 Window Maker Team # # 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., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # ########################################################################### # # generate-po-from-template.sh: # update an existing <lang>.po file from the POT (gettext template for # translations) # # The goal is to take the opportunity to do a little bit more than what # msgmerge does, including: # - copying the full template if the language file does not yet exist; # - post-process a few fields that it does not change but we may wish to # see updated (project name, version, ...) # ########################################################################### # # Please note that this script is writen in sh+awk on purpose: this script # is gonna be run on the machine of the person who is trying to compile # WindowMaker, and as such we cannot be sure to find any scripting language # in a known version and that works (python/ruby/tcl/perl/php/you-name-it). # # So for portability, we stick to the same sh+awk constraint as Autotools # to limit the problem, see for example: # http://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.69/html_node/Portable-Shell.html # ########################################################################### # Report an error on stderr and exit with status 1 to tell make could not work arg_error() { echo "$0: $@" >&2 exit 1 } # print help and exit with success status print_help() { echo "$0: update language po file from xgettext template" echo "Usage: $0 [options...] po_file" echo "valid options are:" echo " -b email : email address to place in 'Report-Msgid-Bugs-To'" echo " -n name : name of the project, to place in 'Project-Id-Version'" echo " -t file : template file to be used" echo " -v version : version of the project, to place in 'Project-Id-Version'" exit 0 } # Extract command line arguments while [ $# -gt 0 ]; do case $1 in -b) shift project_email="$1" ;; -h|-help|--help) print_help ;; -n) shift project_name="$1" ;; -t) shift [ "x$template" = "x" ] || arg_error "template already set to \"$template\", can't use also \"$1\"" template="$1" [ -r "$template" ] || arg_error "template file \"$1\" is not readable" ;; -v) shift project_version="$1" ;; -*) arg_error "unknow option '$1'" ;; *) [ "x$lang_file" = "x" ] || arg_error "only 1 po file can be specified, not \"$lang_file\" and \"$1\"" lang_file="$1" ;; esac shift done # Check consistency of command-line [ "x$lang_file" != "x" ] || arg_error "no po file given" [ "x$template" != "x" ] || arg_error "no template file given" # Generate the <lang>.po using the usual method if possible if [ -r "$lang_file" ] ; then msgmerge --update --silent "$lang_file" "$template" # Fuzzy matching is generally not great, so print a little message to make # sure the user will think about taking care of it grep ', fuzzy' "$lang_file" > /dev/null && \ echo "Warning: fuzzy matching was used in \"$lang_file\", please review" else # If the <lang>.po file does not exist, we create a dummy one now from the # template, updating a few fields that 'msgmerge' will not do: # - it won't touch 'Language', so let's handle it for the user; # - it won't like 'CHARSET' in content-type, we place a safe 'UTF-8' as default; echo "Warning: creating new \"$lang_file\"" lang="`echo "$lang_file" | sed -e 's,^.*/\([^/]*\)$,\1,' -e 's/\..*$//' `" sed -e '/^"Language:/s,:.*\\n,: '"$lang"'\\n,' \ -e '/^"Content-Type:/s,CHARSET,UTF-8,' < "$template" > "$lang_file" fi # We need to post-process the generated file because 'msgmerge' does not do # everything, there are some field for which we can give a value to xgettext # but msgmerge will not take the new value of the header on update temp_file="`echo "$lang_file" | sed -e 's,^.*/\([^/]*\)$,\1,' -e 's/\.po$//' `.tmp" # The 'PO-Revision-Date' is supposed to be automatically updated by the user's # po edition tool, but in case it does not, we feel safer with at least the # current date cmd_update="/PO-Revision-Date:/s,:.*\\\\n,: `date +"%Y-%m-%d %H:%M%z" `\\\\n," # We update the 'Project-Id-Version', because for historical reasons the PO # files did not have had a consistent name; it is also the opportunity to # place the current version of the project in the field if [ "x$project_name$project_version" != "x" ]; then cmd_update="$cmd_update;/Project-Id-Version:/s,:.*\\\\n,: $project_name $project_version\\\\n," fi # We update the 'Report-Msgid-Bugs-To', because for historical reasons the PO # files probably did not have this information; it is also an opportunity to be # sure it is in line with project's latest value if [ "x$project_email" != "x" ]; then cmd_update="$cmd_update;/Report-Msgid-Bugs-To:/s,:.*\\\\n,: $project_email\\\\n," fi mv "$lang_file" "$temp_file" sed -e "$cmd_update" < "$temp_file" > "$lang_file" rm -f "$temp_file" �������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/script/generate-mapfile-from-header.sh�������������������������������������������0000755�0001750�0001750�00000016457�13431646202�020243� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh ########################################################################### # # Window Maker window manager # # Copyright (c) 2014 Christophe CURIS # Copyright (c) 2014 Window Maker Team # # 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., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # ########################################################################### # # generate-mapfile-from-header.sh: # from a list of C header files, extract the name of the functions and # global variables that are considered public for a library, and generate # a 'version script' for ld with that list, so that all other symbols # will be considered local. # # The goal is that the symbol that are not part of the public API should # not be visible to the user because it can be a source of problems (from # name clash to evolutivity issues). # ########################################################################### # # Please note that this script is writen in sh+awk on purpose: this script # is gonna be run on the machine of the person who is trying to compile # WindowMaker, and as such we cannot be sure to find any scripting language # in a known version and that works (python/ruby/tcl/perl/php/you-name-it). # # So for portability, we stick to the same sh+awk constraint as Autotools # to limit the problem, see for example: # http://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.69/html_node/Portable-Shell.html # ########################################################################### # Report an error on stderr and exit with status 1 to tell make could not work arg_error() { echo "$0: $@" >&2 exit 1 } # print help and exit with success status print_help() { echo "$0: generate a script for ld to keep only the symbols from C header" echo "Usage: $0 [options...] input_file[s]" echo "valid options are:" echo " -l : add symbol's definition line number for debug" echo " -n name : name to use for the library" echo " -v version : set the library version for ld" exit 0 } # Extract command line arguments while [ $# -gt 0 ]; do case $1 in -l) debug_info=' /* " symbol_type " at " FILENAME ":" NR " */' ;; -n) shift echo "$1" | grep '^[A-Za-z][A-Za-z_0-9]*$' > /dev/null || arg_error "invalid name \"$1\" for a library" libname="$1" ;; -v) shift # Version may be 'x:y:z', we keep only 'x' version="`echo "$1" | sed -e 's,:.*$,,' `" # the version should only be a number echo "$version" | grep '^[1-9][0-9]*$' > /dev/null || \ arg_error "version \"$1\" is not valid" ;; -h|-help|--help) print_help ;; -*) arg_error "unknow option '$1'" ;; *) [ -r "$1" ] || arg_error "source file \"$1\" is not readable" input_files="$input_files $1" ;; esac shift done # Check consistency of command-line [ "x$input_files" = "x" ] && arg_error "no source file given" # Automatic values if [ -z "$libname" ]; then # build the library name from the first header name, remove path stuff, extension and invalid characters libname="`echo "$input_files" | sed -e 's,^ ,,;s, .*$,,;s,^.*/\([^/]*\)$,\1,;s,\.[^.]*$,,;s,[^A-Za-z_0-9],_,g;s,^_*,,' `" fi # Parse the input file and find the function declarations; extract the names # and place them in the 'global' section so that ld will keep the symbols; # generate the rest of the script so that other symbols will not be kept. awk ' BEGIN { print "/* Generated version-script for ld */"; print ""; print "'"$libname$version"'"; print "{"; print " global:"; } /^#[ \t]*define/ { # Ignore macro definition because their content could be mis-interpreted while (/\\$/) { if (getline == 0) { break; } } next; } /\/\*/ { # Remove comments to avoid mis-detection pos = index($0, "/*"); comment = substr($0, pos + 2); $0 = substr($0, 1, pos - 1); while (1) { pos = index(comment, "*/"); if (pos > 0) { break; } getline comment; } $0 = $0 substr(comment, pos + 2); } /extern[ \t].*;/ { line = $0; # Remove everything from the ";" sub(/;.*$/, "", line); # Check if it is a global variable nb = split(line, words, /[\t *]/); valid = 1; for (i = 1; i < nb; i++) { # If the word looks valid, do not abort if (words[i] ~ /^[A-Za-z_0-9]*$/) { continue; } # Treat the case were the variable is an array, and there was space(s) after the name if (words[i] ~ /^\[/) { nb = i - 1; break; } # If we are here, the word is not valid; we stop processing the line here but we do # not use "next" so the line may match function prototype handler below valid = 0; break; } if (valid) { # Remove array size, if any sub(/\[.*$/, "", words[nb]); if (words[nb] ~ /^[A-Za-z][A-Za-z_0-9]*$/) { symbol_type = "variable"; print " " words[nb] ";'"$debug_info"'"; next; } } } /^[ \t]*typedef/ { # Skip type definition because they could be mis-interpreted when it # defines a prototype for a callback function nb_braces = 0; while (1) { # Count the number of brace pairs to skip the content of the definition nb = split($0, dummy_array, /\{/); nb_braces = nb_braces + nb; nb = split($0, dummy_array, /\}/); nb_braces = nb_braces - nb; # Stop when we have out count of pair of braces and there is the final ";" if ((nb_braces == 0) && (dummy_array[nb] ~ /;/)) { break; } if (getline == 0) { break; } } next; } /[\t ]\**[A-Z_a-z][A-Z_a-z0-9]*[\t ]*\(/ { # Get everything until the end of the definition, to avoid mis-interpreting # arguments and attributes on next lines while (1) { pos = index($0, ";"); if (pos != 0) { break; } getline nxt; $0 = $0 nxt; } # Remove the argument list sub(/[ \t]*\(.*$/, ""); # Trim possible indentation at beginning of line sub(/^[\t ]*/, ""); # If it does not start by a keyword, it is probably not a valid function if (!/^[A-Z_a-z]/) { next; } nb = split($0, words, /[\t *]/); for (i = 1; i < nb; i++) { # Do not consider "static" because it is used for functions to be inlined if (words[i] == "static") { next; } # Allow empty keyword, that were just "*" if (words[i] == "") { continue; } # If it does not match, it is unlikely to be a function if (words[i] !~ /^[A-Z_a-z][A-Z_a-z0-9]*$/) { next; } } # If we arrived so far, everything looks valid and the last argument of # the array contains the name of the function symbol_type = "function"; print " " words[nb] ";'"$debug_info"'"; } END { print ""; print " local:"; print " *;"; print "};"; } ' $input_files �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/script/check-wmaker-loaddef-callbacks.sh�����������������������������������������0000755�0001750�0001750�00000042043�13431646202�020507� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh ########################################################################### # # Window Maker window manager # # Copyright (c) 2015 Christophe CURIS # Copyright (c) 2015 Window Maker Team # # 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, see <http://www.gnu.org/licenses/>. # ########################################################################### # # check-wmaker-loaddef-callbacks.sh: # Compare the type defined in a variable against the type use for the # associated call-back function. # # To load the configuration file, Window Maker is using a list of the known # keywords in a structure with the name of the keyword, the call-back # function that converts the string (from file) into the appropriate type, # and a pointer to the variable where the result is saved. # # Because the structure requires a little bit of genericity to be usefull, # it is not possible to provide the C compiler with the information to # check that the variable from the pointer has the same type as what the # conversion call-back assumes, so this script does that check for us. # # Unfortunately, the script cannot be completely generic and smart, but # it still tries to be, despite being made explicitely for the case of the # structures "staticOptionList" and "optionList" from Window Maker's source # file "src/defaults.c" # ########################################################################### # # For portability, we stick to the same sh+awk constraint as Autotools to # limit problems, see for example: # http://www.gnu.org/software/autoconf/manual/autoconf-2.69/html_node/Portable-Shell.html # ########################################################################### # Report an error on stderr and exit with status 2 to tell make that we could # not do what we were asked arg_error() { echo "`basename $0`: $@" >&2 exit 2 } # print help and exit with success status print_help() { echo "$0: check variable type against call-back expectation for WMaker's defaults.c" echo "Usage: $0 options..." echo "valid options are:" echo " --callback \"name=type\" : specify that function 'name' expects a variable of 'type'" echo " --field-callback idx : index (from 1) of the callback function in the struct" echo " --field-value-ptr idx : index (from 1) of the pointer-to-value in the struct" echo " --source file : C source file with the array to check" echo " --structure name : name of the variable with the array of struct to check" echo " --struct-def name=file : specify to get definition of struct 'name' from 'file'" exit 0 } # Extract command line arguments while [ $# -gt 0 ]; do case $1 in --callback) shift deflist="$1," while [ -n "$deflist" ]; do name_and_type=`echo "$deflist" | cut -d, -f1 | sed -e 's/^[ \t]*//;s/[ \t]*$//' ` deflist=`echo "$deflist" | cut -d, -f2-` echo "$name_and_type" | grep '^[A-Za-z][A-Za-z_0-9]*[ \t]*=[^=][^=]*$' > /dev/null || \ arg_error "invalid callback function type specification '$name_and_type' (options: --callback)" name=`echo "$name_and_type" | sed -e 's/=.*$// ; s/[ \t]//g' ` type=`echo "$name_and_type" | sed -e 's/^[^=]*=// ; s/^[ \t]*// ; s/[ \t][ \t]*/ /g' ` awk_callback_types="$awk_callback_types callback[\"$name\"] = \"$type\";" done ;; --field-callback) shift [ -z "$field_callback" ] || arg_error "field number specified more than once (option: --field-callback)" field_callback="$1" ;; --field-value-ptr) shift [ -z "$field_value" ] || arg_error "field number specified more than once (option: --field-value-ptr)" field_value="$1" ;; --source) shift [ -z "$source_file" ] || arg_error "only 1 source file can be used (option: --source)" source_file="$1" ;; --structure) shift [ -z "$struct_name" ] || arg_error "only 1 structure can be checked (option: --structure)" struct_name="$1" ;; --struct-def) shift echo "$1" | grep '^[A-Za-z][A-Z_a-z0-9]*=' > /dev/null || arg_error "invalid syntax in \"$1\" for --struct-def" [ -r "`echo $1 | sed -e 's/^[^=]*=//' `" ] || arg_error "file not readable in struct-def \"$1\"" list_struct_def="$list_struct_def $1" ;; -h|-help|--help) print_help ;; -*) arg_error "unknow option '$1'" ;; *) arg_error "argument '$1' is not understood" ;; esac shift done # Check consistency of command-line [ -z "$source_file" ] && arg_error "no source file given (option: --source)" [ -z "$struct_name" ] && arg_error "no variable name given for the array to check (option: --structure)" [ -z "$field_value" ] && arg_error "index of the value pointer in the struct no specified (option: --field-value-ptr)" [ -z "$field_callback" ] && arg_error "index of the call-back in the struct no specified (option: --field-callback)" echo "$field_value" | grep '^[1-9][0-9]*$' > /dev/null || arg_error "invalid index for the value pointer, expecting a number (option: --field-value-ptr)" echo "$field_callback" | grep '^[1-9][0-9]*$' > /dev/null || arg_error "invalid index for the call-back function, expecting a number (option: --field-callback)" ########################################################################### # This AWK script is extracting the types associated with the field members # from a specific structure defined in the parsed C source file awk_extract_struct=' # Parse all the lines until the end of current structure is found function parse_structure(prefix) { while (getline) { # Discard C comments, with support for multi-line comments while (1) { idx = index($0, "/*"); if (idx == 0) { break; } comment = substr($0, idx+2); $0 = substr($0, 1, idx-1); while (1) { idx = index(comment, "*/"); if (idx > 0) { break; } getline comment; } $0 = $0 substr(comment, idx+2); } # skip line that define nothing interresting gsub(/^[ \t]+/, ""); if (/^$/) { continue; } if (/^#/) { continue; } gsub(/[ \t]+$/, ""); # end of current structure: extract the name and return it if (/^[ \t]*\}/) { gsub(/^\}[ \t]*/, ""); name = $0; gsub(/[ \t]*;.*$/, "", name); gsub(/^[^;]*;/, ""); return name; } # Handle structure inside structure if (/^(struct|union)[ \t]+\{/) { name = parse_structure(prefix ",!"); # Update the name tracking the content of this struct to contain the name # of the struct itself match_prefix = "^" prefix ",!:"; for (var_id in member) { if (var_id !~ match_prefix) { continue; } new_id = var_id; gsub(/,!:/, ":" name ".", new_id); member[new_id] = member[var_id]; delete member[var_id]; } continue; } if (!/;$/) { print "Warning: line " FILENAME ":" NR " not understood inside struct" > "/dev/stderr"; continue; } gsub(/;$/, ""); # Skip the lines that define a bit-field because they cannot be safely # pointed to anyway if (/:/) { continue; } separate_type_and_names(); # In some rare case we cannot extract the name, that is likely a function pointer type if (type == "") { continue; } # Save this information in an array for (i = 1; i <= nb_names; i++) { # If it is an array, push that information into the type idx = index(name_list[i], "["); if (idx > 0) { member[prefix ":" substr(name_list[i], 1, idx-1) ] = type substr(name_list[i], idx); } else { member[prefix ":" name_list[i] ] = type; } } } } # Separate the declaration of an member of the struct: its type and the list of names # The result is returned through variables "name_list + nb_names" and "type" function separate_type_and_names() { # Separate by names first nb_names = split($0, name_list, /[ \t]*,[ \t]*/); # Separate the type from the 1st name if (name_list[1] ~ /\]$/) { idx = index(name_list[1], "[") - 1; } else { idx = length(name_list[1]); } while (substr(name_list[1], idx, 1) ~ /[A-Za-z_0-9]/) { idx--; } type = substr(name_list[1], 1, idx); name_list[1] = substr(name_list[1], idx + 1); if (type ~ /\(/) { # If therese is a parenthesis in the type, that means we are parsing a function pointer # declaration. This is not supported at current time (not needed), so we silently ignore type = ""; return; } # Remove size information from array declarations for (i in name_list) { gsub(/\[[^\]]+\]/, "[]", name_list[i]); } # Parse the type to make it into a "standard" format gsub(/[ \t]+$/, "", type); nb_elem = split(type, type_list, /[ \t]+/); type = ""; for (i = 1; i <= nb_elem; i++) { if (type_list[i] == "signed" || type_list[i] == "unsigned") { # The sign information is not a problem for pointer compatibility, so we do not keep it continue; } if (type_list[i] ~ /^\*+$/) { # If we have a pointer mark by itself, we glue it to the previous keyword type = type type_list[i]; } else { type = type " " type_list[i]; } } gsub(/^ /, "", type); if (type ~ /^\*/ || type == "") { # We have a signed/unsigned without explicit "int" specification, add it now type = "int" type; } } # The name of the variable is at the end, so find all structure definition /^([a-z]*[ \t][ \t]*)*struct[ \t]/ { # Discard all words to find the first ; or { gsub(/^([A-Za-z_0-9]*[ \t][ \t]*)+/, ""); # If not an { it is probably not what we are looking for if (/^[^\{]/) { next; } # Read everything until we find the end of the structure; we assume a # definition is limited to one line name = parse_structure("@"); # If the name is what we expect, generate the appropriate stuff if (name == expected_name) { struct_found++; for (i in member) { $0 = i; gsub(/^@:/, expected_name "."); print " variable[\"" $0 "\"] = \"" member[i] "\";"; } } # Purge the array to not mix fields between the different structures for (i in member) { delete member[i]; } } # Check that everything was ok END { if (struct_found == 0) { print "Error: structure \"" expected_name "\" was not found in " FILENAME > "/dev/stderr"; exit 1; } else if (struct_found > 1) { print "Error: structure \"" expected_name "\" was defined more than once in " FILENAME > "/dev/stderr"; exit 1; } } # Do not print anything else than what is generated while parsing structures { } ' # Extract the information for all the structures specified on the command line awk_array_types=`echo "$list_struct_def" | while IFS="=" read name file do [ -z "$name" ] && continue awk_script=" BEGIN { struct_found = 0; expected_name = \"$name\"; } $awk_extract_struct" echo " # $file" awk "$awk_script" "$file" [ $? -ne 0 ] && exit $? done` ########################################################################### # Parse the source file to extract the list of call-back functions that are # used; take the opportunity to extract information about the variable # being pointed to now to avoid re-parsing too many times the file awk_check_callbacks=' # Search the final } for the current element in the array, then split the # elements into the array "entry_elements" and remove that content from $0 function get_array_element_and_split() { nb_elements = 1; entry_elements[nb_elements] = ""; $0 = substr($0, 2); count_braces = 1; while (count_braces > 0) { char = substr($0, 1, 1); $0 = substr($0, 2); if (char == "{") { count_braces++; } else if (char == "}") { count_braces--; } else if (char ~ /[ \t]/) { # Just discard } else if (char == ",") { if (count_braces == 1) { nb_elements++; entry_elements[nb_elements] = ""; } } else if (char == "\"") { entry_elements[nb_elements] = entry_elements[nb_elements] extract_string_to_element(); } else if (char == "/") { if (substr($0, 1, 1) == "/") { getline; while (/^#/) { getline; } } else if (substr($0, 1, 1) == "*") { $0 = substr($0, 2); skip_long_comment(); } else { entry_elements[nb_elements] = entry_elements[nb_elements] char; } } else if (char == "") { getline; while (/^#/) { print "skip: " $0; getline; } } else { entry_elements[nb_elements] = entry_elements[nb_elements] char; } } } # When a string enclosed in "" is encountered as part of the elements of the # array, it requires special treatment, not to extract the information (we are # unlikely to care about these fields) but to avoid mis-parsing the fields function extract_string_to_element() { content = "\""; while (1) { char = substr($0, 1, 1); $0 = substr($0, 2); if (char == "\\") { content = content char substr($0, 1, 1); $0 = substr($0, 2); } else if (char == "\"") { break; } else if (char == "") { getline; } else { content = content char; } } return content "\""; } # Wherever a long C comment (/* comment */) is encountered, it is discarded function skip_long_comment() { while (1) { idx = index($0, "*/"); if (idx > 0) { $0 = substr($0, idx + 2); break; } getline; } } # Search for the definition of an array with the good name /^[ \t]*([A-Z_a-z][A-Z_a-z0-9*]*[ \t]+)+'$struct_name'[ \t]*\[\][ \t]*=[ \t]*\{/ { struct_found++; $0 = substr($0, index($0, "{") + 1); # Parse all the elements of the array while (1) { # Search for start of an element while (1) { gsub(/^[ \t]+/, ""); if (substr($0, 1, 1) == "{") { break; } if (substr($0, 1, 1) == "}") { break; } if (substr($0, 1, 1) == "#") { getline; continue; } if ($0 == "") { getline; continue; } # Remove comments if (substr($0, 1, 2) == "//") { getline; continue; } if (substr($0, 1, 2) == "/*") { $0 = substr($0, 3); skip_long_comment(); } else { print "Warning: line " NR " not understood in " FILENAME ", skipped" > "/dev/stderr"; getline; } } # Did we find the end of the array? if (substr($0, 1, 1) == "}") { break; } # Grab the whole content of the entry entry_start_line = NR; get_array_element_and_split(); gsub(/^[ \t]*,/, ""); # Extract the 2 fields we are interrested in if ((entry_elements[src_fvalue] != "NULL") && (entry_elements[src_ffunct] != "NULL")) { if (substr(entry_elements[src_fvalue], 1, 1) == "&") { entry_elements[src_fvalue] = substr(entry_elements[src_fvalue], 2); } else { print "Warning: value field used in entry at line " entry_start_line " does not looke like a pointer" > "/dev/stderr"; } if (variable[entry_elements[src_fvalue]] == "") { print "Warning: type is not known for \"" entry_elements[src_fvalue] "\" at line " entry_start_line ", cannot check" > "/dev/stderr"; } else if (callback[entry_elements[src_ffunct]] == "") { print "Error: expected type for callback function \"" entry_elements[src_ffunct] "\" is not known, from " FILENAME ":" entry_start_line > "/dev/stderr"; error_count++; } else if (callback[entry_elements[src_ffunct]] != variable[entry_elements[src_fvalue]]) { print "Error: type mismatch between function and variable in " FILENAME ":" entry_start_line > "/dev/stderr"; print " Function: " entry_elements[src_ffunct] " expects \"" callback[entry_elements[src_ffunct]] "\"" > "/dev/stderr"; print " Variable: " entry_elements[src_fvalue] " has type \"" variable[entry_elements[src_fvalue]] "\"" > "/dev/stderr"; error_count++; } } } } # Final checks END { if (error_count > 0) { exit 1; } if (struct_found == 0) { print "Error: structure \"'$struct_name'\" was not found in " FILENAME > "/dev/stderr"; exit 1; } else if (struct_found > 1) { print "Error: structure \"'$struct_name'\" was defined more than once in " FILENAME > "/dev/stderr"; exit 1; } } # Do not print anything else than what is generated while parsing the structure { } ' awk_script="BEGIN { $awk_array_types $awk_callback_types # Info on structure to be checked src_fvalue = $field_value; src_ffunct = $field_callback; # For checks struct_found = 0; error_count = 0; } $awk_check_callbacks" awk "$awk_script" "$source_file" || exit $? ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/configure.ac���������������������������������������������������������������������0000644�0001750�0001750�00000100306�13642357774�013276� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������dnl ============================================================================ dnl dnl Window Maker autoconf input dnl AC_COPYRIGHT([Copyright (c) 2001-2015 The Window Maker Team]) dnl dnl ============================================================================ dnl dnl This program is free software; you can redistribute it and/or modify dnl it under the terms of the GNU General Public License as published by dnl the Free Software Foundation; either version 2 of the License, or dnl (at your option) any later version. dnl dnl This program is distributed in the hope that it will be useful, dnl but WITHOUT ANY WARRANTY; without even the implied warranty of dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the dnl GNU General Public License for more details. dnl dnl You should have received a copy of the GNU General Public License along dnl with this program; see the file COPYING. dnl dnl ============================================================================ dnl dnl Process with: ./autogen.sh dnl Due to a bug in Autoconf 2.68 (apparently a regression), we need at least dnl version 2.68b which includes this patch: dnl http://git.savannah.gnu.org/gitweb/?p=autoconf.git;a=commit;h=2b0d95faef68d7ed7c08b0edb9ff1c38728376fa dnl dnl Because the 2.69 was released only a few month later, let's just ask for it AC_PREREQ([2.69]) dnl Configuration for Autoconf and Automake dnl ======================================= AC_INIT([WindowMaker],[0.95.9],[wmaker-dev@googlegroups.com],[WindowMaker],[http://www.windowmaker.org/]) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_HEADERS([config.h]) dnl We need the EXTRA_xxx_DEPENDENCIES keyword in Makefiles which have been dnl introduced in the version 1.11.3; because the 1.12 was realeased shortly dnl after, we just ask for it AM_INIT_AUTOMAKE([1.12 silent-rules]) dnl Reference file used by 'configure' to make sure the path to sources is valid AC_CONFIG_SRCDIR([src/WindowMaker.h]) dnl Include at the end of 'config.h', this file is generated by top-level Makefile AH_BOTTOM([@%:@include "config-paths.h"]) dnl libtool library versioning dnl ========================== dnl dnl current dnl revision dnl age dnl dnl 1. Start with version information of ‘0:0:0’ for each libtool library. dnl 2. Update the version information only immediately before a public dnl release of your software. More frequent updates are unnecessary, and dnl only guarantee that the current interface number gets larger faster. dnl 3. If the library source code has changed at all since the last dnl update, then increment revision (‘c:r:a’ becomes ‘c:r+1:a’). dnl 4. If any interfaces have been added, removed, or changed since the dnl last update, increment current, and set revision to 0. dnl 5. If any interfaces have been added since the last public release, dnl then increment age. dnl 6. If any interfaces have been removed or changed since the last dnl public release, then set age to 0. dnl dnl libwraster WRASTER_CURRENT=6 WRASTER_REVISION=0 WRASTER_AGE=0 WRASTER_VERSION=$WRASTER_CURRENT:$WRASTER_REVISION:$WRASTER_AGE AC_SUBST(WRASTER_VERSION) dnl dnl libWINGs WINGS_CURRENT=4 WINGS_REVISION=0 WINGS_AGE=1 WINGS_VERSION=$WINGS_CURRENT:$WINGS_REVISION:$WINGS_AGE AC_SUBST(WINGS_VERSION) dnl dnl libWUtil WUTIL_CURRENT=5 WUTIL_REVISION=0 WUTIL_AGE=0 WUTIL_VERSION=$WUTIL_CURRENT:$WUTIL_REVISION:$WUTIL_AGE AC_SUBST(WUTIL_VERSION) dnl Checks for programs dnl =================== AC_PROG_CC WM_PROG_CC_C11 AC_PROG_LN_S AC_PROG_GCC_TRADITIONAL LT_INIT dnl Debugging Options dnl ================= AC_ARG_ENABLE([debug], [AS_HELP_STRING([--enable-debug], [enable debugging options, @<:@default=no@:>@])], [AS_CASE(["$enableval"], [yes], [debug=yes], [no], [debug=no], [AC_MSG_ERROR([bad value $enableval for --enable-debug])] )], [debug=no]) AS_IF([test "x$debug" = "xyes"], [dnl This flag should have already been detected and added, but if user dnl provided an explicit CFLAGS it may not be the case AS_IF([echo " $CFLAGS " | grep " -g " 2>&1 > /dev/null], [@%:@ Debug symbol already activated], [AX_CFLAGS_GCC_OPTION([-g])]) dnl dnl This flag generally makes debugging nightmarish, remove it if present CFLAGS="`echo "$CFLAGS" | sed -e 's/-fomit-frame-pointer *//' `" dnl dnl Enable internal debug code CPPFLAGS="$CPPFLAGS -DDEBUG" ], [dnl dnl When debug is not enabled, the user probably does not wants to keep dnl assertions in the final program CPPFLAGS="$CPPFLAGS -DNDEBUG" ]) AX_CFLAGS_GCC_OPTION([-Wall]) AX_CFLAGS_GCC_OPTION([-Wextra -Wno-sign-compare]) dnl dnl The use of trampolines cause code that can crash on some secured OS, it is dnl also known to be a source of crash if not used properly, in a more general dnl way it tends to generate binary code that may not be optimal, and it is dnl not compatible with the 'nested-func-to-macro' workaround WM_CFLAGS_CHECK_FIRST([-Wtrampolines], [-Werror=trampolines dnl try to generate an error if possible -Wtrampolines dnl if not, try to fall back to a simple warning ]) dnl AS_IF([test "x$debug" = "xyes"], [dnl When debug is enabled, we try to activate more checks from dnl the compiler. They are on independant check because the dnl macro checks all the options at once, but we may have cases dnl where some options are not supported and we don't want to dnl loose all of them. dnl dnl clang, suggest parenthesis on bit operations that could be dnl misunderstood due to C operator precedence AX_CFLAGS_GCC_OPTION([-Wbitwise-op-parentheses]) dnl dnl Points at code that gcc thinks is so complicated that gcc dnl gives up trying to optimize, which probably also means it is dnl too complicated to maintain AX_CFLAGS_GCC_OPTION([-Wdisabled-optimization]) dnl dnl Because of C's type promotion, the compiler has to generate dnl less optimal code when a double constant is used in a dnl float expression AX_CFLAGS_GCC_OPTION([-Wdouble-promotion]) dnl dnl Floating-point comparison is not a good idea AX_CFLAGS_GCC_OPTION([-Wfloat-equal]) dnl dnl clang warns about constants that may have portability issues due dnl to the endianness of the host AX_CFLAGS_GCC_OPTION([-Wfour-char-constants]) dnl dnl clang warns about constant that may be too big to be portable AX_CFLAGS_GCC_OPTION([-Wliteral-range]) dnl dnl Try to report misuses of '&' versus '&&' and similar AX_CFLAGS_GCC_OPTION([-Wlogical-op]) dnl dnl clang, reports cases where the code assumes everyone is an dnl expert in C operator precedence... which is unlikely! AX_CFLAGS_GCC_OPTION([-Wlogical-op-parentheses]) dnl dnl Reports declaration of global things that are done inside dnl a local environment, instead of using the appropriate dnl header AX_CFLAGS_GCC_OPTION([-Wnested-externs]) dnl dnl Warn about constant strings that could pose portability issues AX_CFLAGS_GCC_OPTION([-Woverlength-strings]) dnl dnl Use of 'sizeof()' on inappropriate pointer types AX_CFLAGS_GCC_OPTION([-Wpointer-arith]) dnl dnl Having more than 1 prototype for a function makes code updates dnl more difficult, so try to avoid it AX_CFLAGS_GCC_OPTION([-Wredundant-decls]) dnl dnl clang, detect some misuses of sizeof. We also count in our code dnl on the use of the macro 'wlength' which contains a check if the dnl compiler support C11's static_assert AX_CFLAGS_GCC_OPTION([-Wsizeof-array-argument]) dnl dnl Prototype of function must be explicit, no deprecated K&R syntax dnl and no empty argument list which prevents compiler from doing dnl type checking when using the function WM_CFLAGS_GCC_OPTION_STRICTPROTO dnl dnl Proper attributes helps the compiler to produce better code WM_CFLAGS_CHECK_FIRST([format attribute suggest], [-Wsuggest-attribute=format dnl new gcc syntax -Wmissing-format-attribute dnl old gcc syntax, clang ]) WM_CFLAGS_CHECK_FIRST([no-return attribute suggest], [-Wsuggest-attribute=noreturn dnl gcc syntax -Wmissing-noreturn dnl clang syntax ]) dnl dnl GCC provides a couple of checks to detect incorrect macro uses AX_CFLAGS_GCC_OPTION([-Wundef]) WM_CFLAGS_GCC_OPTION_UNUSEDMACROS dnl dnl clang reports stuff marked unused but which is actually used AX_CFLAGS_GCC_OPTION([-Wused-but-marked-unused]) ], [dnl dnl When debug not enabled, we try to avoid some non-necessary dnl messages from the compiler dnl dnl To support legacy X servers, we have sometime to use dnl functions marked as deprecated. We do not wish our users dnl to be worried about it AX_CFLAGS_GCC_OPTION([-Wno-deprecated]) AX_CFLAGS_GCC_OPTION([-Wno-deprecated-declarations]) ]) dnl Support for Nested Functions by the compiler dnl ============================================ WM_PROG_CC_NESTEDFUNC dnl Posix thread dnl ============ dnl they are used by util/wmiv AX_PTHREAD dnl Tracking on what is detected for final status dnl ============================================= unsupported="" supported_core="" supported_xext="" supported_gfx="" dnl Platform-specific Makefile setup dnl ================================ AS_CASE(["$host"], [*-*-linux*|*-*-cygwin*|*-gnu*], [WM_OSDEP="linux" ; CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=600"], [*-*-freebsd*|*-k*bsd-gnu*], [WM_OSDEP="bsd" ; CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=600 -DFREEBSD"], [*-*-netbsd*], [WM_OSDEP="bsd" ; CPPFLAGS="$CPPFLAGS -DNETBSD"], [*-*-openbsd*], [WM_OSDEP="bsd" ; CPPFLAGS="$CPPFLAGS -DOPENBSD"], [*-*-dragonfly*], [WM_OSDEP="bsd" ; CPPFLAGS="$CPPFLAGS -DDRAGONFLYBSD"], [*-apple-darwin*], [WM_OSDEP="darwin"], [*-*-solaris*], [WM_OSDEP="stub"], dnl solaris.c when done [WM_OSDEP="stub"]) AM_CONDITIONAL([WM_OSDEP_LINUX], [test "x$WM_OSDEP" = "xlinux"]) AM_CONDITIONAL([WM_OSDEP_BSD], [test "x$WM_OSDEP" = "xbsd"]) AM_CONDITIONAL([WM_OSDEP_DARWIN], [test "x$WM_OSDEP" = "xdarwin"]) AM_CONDITIONAL([WM_OSDEP_GENERIC], [test "x$WM_OSDEP" = "xstub"]) dnl the prefix dnl ========== dnl dnl move this earlier in the script... anyone know why this is handled dnl in such a bizarre way? test "x$prefix" = xNONE && prefix=$ac_default_prefix 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='-I${includedir}' dnl =============================================== dnl Specify paths to look for libraries and headers dnl =============================================== AC_ARG_WITH(libs-from, AS_HELP_STRING([--with-libs-from], [pass compiler flags to look for libraries]), [lib_search_path="$withval $lib_search_path"]) AC_ARG_WITH(incs-from, AS_HELP_STRING([--with-incs-from], [pass compiler flags to look for header files]), [inc_search_path="$withval $inc_search_path"]) dnl Features Configuration dnl ====================== AC_ARG_ENABLE([animations], [AS_HELP_STRING([--disable-animations], [disable permanently animations @<:@default=enabled@:>@])], [AS_CASE(["$enableval"], [yes|no], [], [AC_MSG_ERROR([bad value $enableval for --enable-animations])])], [enable_animations="yes"]) AS_IF([test "x$enable_animations" = "xno"], [unsupported="$unsupported Animations"], [AC_DEFINE([USE_ANIMATIONS], [1], [Defined when user did not request to disable animations]) supported_core="$supported_core Animations"]) AC_ARG_ENABLE([mwm-hints], [AS_HELP_STRING([--disable-mwm-hints], [disable support for Motif WM hints @<:@default=enabled@:>@])], [AS_CASE(["$enableval"], [yes|no], [], [AC_MSG_ERROR([bad value $enableval for --enable-mwm-hints])])], [enable_mwm_hints="yes"]) AS_IF([test "x$enable_mwm_hints" = "xno"], [unsupported="$unsupported MWMHints"], [AC_DEFINE([USE_MWM_HINTS], [1], [Defined when used did not request to disable Motif WM hints]) supported_core="$supported_core MWMHints"]) AM_CONDITIONAL([USE_MWM_HINTS], [test "x$enable_mwm_hints" != "xno"]) dnl Boehm GC dnl ======== AC_ARG_ENABLE([boehm-gc], [AS_HELP_STRING([--enable-boehm-gc], [use Boehm GC instead of the default libc malloc() [default=no]])], [AS_CASE(["$enableval"], [yes], [with_boehm_gc=yes], [no], [with_boehm_gc=no], [AC_MSG_ERROR([bad value $enableval for --enable-boehm-gc])] )], [with_boehm_gc=no]) AS_IF([test "x$with_boehm_gc" = "xyes"], AC_SEARCH_LIBS([GC_malloc], [gc], [AC_DEFINE(USE_BOEHM_GC, 1, [Define if Boehm GC is to be used])], [AC_MSG_FAILURE([--enable-boehm-gc specified but test for libgc failed])])) dnl LCOV dnl ==== AC_ARG_ENABLE([lcov], [AS_HELP_STRING([--enable-lcov[=output-directory]], [enable coverage data generation using LCOV (GCC only) [default=no]])], [], [enable_lcov=no]) AS_IF([test "x$enable_lcov" != "xno"], [AX_CFLAGS_GCC_OPTION(-fprofile-arcs -ftest-coverage) AS_IF([test "x$enable_lcov" = "xyes"], [lcov_output_directory="coverage-report"], [lcov_output_directory="${enable_lcov}/coverage-report"]) AC_SUBST(lcov_output_directory)]) AM_CONDITIONAL([USE_LCOV], [test "x$enable_lcov" != "xno"]) dnl ============================ dnl Checks for library functions dnl ============================ AC_FUNC_MEMCMP AC_FUNC_VPRINTF WM_FUNC_SECURE_GETENV AC_CHECK_FUNCS(gethostname select poll strcasecmp strncasecmp \ setsid mallinfo mkstemp sysconf) AC_SEARCH_LIBS([strerror], [cposix]) dnl nanosleep is generally available in standard libc, although not always the dnl case. One known example is Solaris which needs -lrt AC_SEARCH_LIBS([nanosleep], [rt], [], [AC_MSG_ERROR([function 'nanosleep' not found, please report to wmaker-dev@googlegroups.com])]) dnl the flag 'O_NOFOLLOW' for 'open' is used in WINGs WM_FUNC_OPEN_NOFOLLOW dnl Check for strlcat/strlcpy dnl ========================= AC_ARG_WITH([libbsd], [AS_HELP_STRING([--without-libbsd], [do not use libbsd for strlcat and strlcpy [default=check]])], [AS_IF([test "x$with_libbsd" != "xno"], [with_libbsd=bsd] [with_libbsd=] )], [with_libbsd=bsd]) tmp_libs=$LIBS AC_SEARCH_LIBS([strlcat],[$with_libbsd], [AC_DEFINE(HAVE_STRLCAT, 1, [Define if strlcat is available])], [], [] ) AC_SEARCH_LIBS([strlcpy],[$with_libbsd], [AC_DEFINE(HAVE_STRLCAT, 1, [Define if strlcpy is available])], [], [] ) LIBS=$tmp_libs LIBBSD= AS_IF([test "x$ac_cv_search_strlcat" = "x-lbsd" -o "x$ac_cv_search_strlcpy" = "x-lbsd"], [LIBBSD=-lbsd AC_CHECK_HEADERS([bsd/string.h])] ) AC_SUBST(LIBBSD) dnl Check for OpenBSD kernel memory interface - kvm(3) dnl ================================================== AS_IF([test "x$WM_OSDEP" = "xbsd"], AC_SEARCH_LIBS([kvm_openfiles], [kvm]) ) dnl Check for inotify dnl ================= dnl It is used by WindowMaker to reload automatically the configuration when the dnl user changed it using WPref or wdwrite AC_CHECK_HEADERS([sys/inotify.h], [AC_DEFINE([HAVE_INOTIFY], [1], [Check for inotify])]) dnl Check for syslog dnl ================ dnl It is used by WUtil to log the wwarning, werror and wfatal AC_CHECK_HEADERS([syslog.h], [AC_DEFINE([HAVE_SYSLOG], [1], [Check for syslog])]) dnl Checks for header files dnl ======================= AC_HEADER_SYS_WAIT AC_HEADER_TIME AC_CHECK_HEADERS(fcntl.h limits.h sys/ioctl.h libintl.h poll.h malloc.h ctype.h \ string.h strings.h) dnl Checks for typedefs, structures, and compiler characteristics dnl ============================================================= AC_C_CONST AC_C_INLINE WM_C_NORETURN AC_TYPE_SIZE_T AC_TYPE_PID_T WM_TYPE_SIGNAL dnl pkg-config dnl ========== PKG_PROG_PKG_CONFIG AS_IF([test -z "$PKG_CONFIG"],[AC_MSG_ERROR([pkg-config is required.])]) dnl Internationalization dnl ==================== dnl Detect the language for translations to be installed and check dnl that the gettext environment works WM_I18N_LANGUAGES WM_I18N_XGETTEXT WM_I18N_MENUTEXTDOMAIN dnl =========================================== dnl Stuff that uses X dnl =========================================== AC_PATH_XTRA AS_IF([test "x$no_x" = "xyes"], [AC_MSG_ERROR([The path for the X11 files not found! Make sure you have X and it's headers and libraries (the -devel packages in Linux) installed.])]) X_LIBRARY_PATH=$x_libraries XCFLAGS="$X_CFLAGS" XLFLAGS="$X_LIBS" XLIBS="-lX11 $X_EXTRA_LIBS" lib_search_path="$lib_search_path $XLFLAGS" inc_search_path="$inc_search_path $XCFLAGS" AC_SUBST(X_LIBRARY_PATH) dnl Decide which locale function to use, setlocale() or _Xsetlocale() dnl by MANOME Tomonori dnl =========================================== WM_I18N_XLOCALE dnl Check whether XInternAtoms() exist dnl ================================== AC_CHECK_LIB([X11], [XInternAtoms], [AC_DEFINE([HAVE_XINTERNATOMS], [1], [define if your X server has XInternAtoms() (set by configure)])], [], [$XLFLAGS $XLIBS]) dnl Check whether XConvertCase() exist dnl ================================== AC_CHECK_LIB([X11], [XConvertCase], [AC_DEFINE([HAVE_XCONVERTCASE], [1], [define if your X server has XConvertCase() (set by configure)])], [], [$XLFLAGS $XLIBS]) dnl XKB keyboard language status dnl ============================ AC_ARG_ENABLE([modelock], [AS_HELP_STRING([--enable-modelock], [XKB keyboard language status support])], [AS_CASE([$enableval], [yes|no], [], [AC_MSG_ERROR([bad value '$enableval' for --enable-modelock])])], [enable_modelock=no]) AS_IF([test "x$enable_modelock" = "xyes"], [AC_DEFINE([XKB_MODELOCK], [1], [whether XKB language MODELOCK should be enabled]) ]) dnl XDND Drag-nd-Drop support dnl ========================= AC_ARG_ENABLE([xdnd], [AS_HELP_STRING([--disable-xdnd], [disable support for Drag-and-Drop on the dock @<:@default=enabled@:>@])], [AS_CASE(["$enableval"], [yes|no], [], [AC_MSG_ERROR([bad value $enableval for --disable-xdnd]) ]) ], [enable_xdnd=yes]) AS_IF([test "x$enable_xdnd" = "xyes"], [supported_core="$supported_core XDnD" AC_DEFINE([USE_DOCK_XDND], [1], [whether Drag-and-Drop on the dock should be enabled])], [unsupported="$unsupported XDnd"]) AM_CONDITIONAL([USE_DOCK_XDND], [test "x$enable_xdnd" != "xno"]) dnl Support for ICCCM 2.0 Window Manager replacement dnl ================================================ AC_ARG_ENABLE([wmreplace], [AS_HELP_STRING([--enable-wmreplace], [support for ICCCM window manager replacement])], [AS_CASE([$enableval], [yes|no], [], [AC_MSG_ERROR([bad value '$enableval' for --enable-wmreplace])])], [enable_wmreplace=no]) AS_IF([test "x$enable_wmreplace" = "xyes"], [AC_DEFINE([USE_ICCCM_WMREPLACE], [1], [define to support ICCCM protocol for window manager replacement]) supported_xext="$supported_xext WMReplace"]) dnl XShape support dnl ============== AC_ARG_ENABLE([shape], [AS_HELP_STRING([--disable-shape], [disable shaped window extension support])], [AS_CASE(["$enableval"], [yes|no], [], [AC_MSG_ERROR([bad value $enableval for --enable-shape]) ]) ], [enable_shape=auto]) WM_XEXT_CHECK_XSHAPE dnl MIT-SHM support dnl =============== AC_ARG_ENABLE([shm], [AS_HELP_STRING([--disable-shm], [disable usage of MIT-SHM extension])], [AS_CASE(["$enableval"], [yes|no], [], [AC_MSG_ERROR([bad value $enableval for --enable-shm]) ]) ], [enable_shm=auto]) WM_XEXT_CHECK_XSHM dnl X Misceleanous Utility dnl ====================== dnl the libXmu is used in WRaster WM_EXT_CHECK_XMU dnl XINERAMA support dnl ================ AC_ARG_ENABLE([xinerama], [AS_HELP_STRING([--enable-xinerama], [enable Xinerama extension support])], [AS_CASE(["$enableval"], [yes|no], [], [AC_MSG_ERROR([bad value $enableval for --enable-xinerama]) ]) ], [enable_xinerama=auto]) WM_XEXT_CHECK_XINERAMA dnl RandR support dnl ============= AC_ARG_ENABLE([randr], [AS_HELP_STRING([--enable-randr], [enable RandR extension support (NOT recommended, buggy)])], [AS_CASE(["$enableval"], [yes|no], [], [AC_MSG_ERROR([bad value $enableval for --enable-randr]) ]) ], [enable_randr=no]) WM_XEXT_CHECK_XRANDR dnl Math library dnl ============ dnl libWINGS uses math functions, check whether usage requires linking dnl against libm WM_CHECK_LIBM dnl FontConfig dnl ========== dnl libWINGS uses FcPatternDel from libfontconfig AC_MSG_CHECKING([for fontconfig library]) FCLIBS=`$PKG_CONFIG fontconfig --libs` if test "x$FCLIBS" = "x" ; then AC_MSG_RESULT([not found]) else AC_MSG_RESULT([found]) fi AC_SUBST(FCLIBS) dnl Xft2 antialiased font support dnl ============================= xft=yes XFTLIBS="" if test "x$PKG_CONFIG" != x -a "`$PKG_CONFIG xft; echo $?`" = 0; then XFTCONFIG="$PKG_CONFIG xft" pkgconfig_xft=yes else AC_CHECK_PROG(XFTCONFIG, xft-config, xft-config) fi AC_MSG_CHECKING([for the Xft2 library]) if test "x$XFTCONFIG" != x; then XFTLIBS=`$XFTCONFIG --libs` XFTFLAGS=`$XFTCONFIG --cflags` AC_MSG_RESULT([found]) else AC_MSG_RESULT([not found]) echo echo "ERROR!!! libXft2 is not installed or could not be found." echo " Xft2 is a requirement for building Window Maker." echo " Please install it (along with fontconfig) before continuing." echo exit 1 fi minXFT="2.1.0" goodxft="no" dnl dnl The macro below will use $XFTFLAGS (defined above) to find Xft.h dnl WM_CHECK_XFT_VERSION($minXFT, goodxft=yes, goodxft=no) if test "$goodxft" = no; then echo echo "ERROR!!! libXft on this system is an old version." echo " Please consider upgrading to at least version ${minXFT}." echo exit 1 fi AC_SUBST(XFTFLAGS) AC_SUBST(XFTLIBS) dnl PANGO support dnl ============= pango=no AC_ARG_ENABLE(pango, AS_HELP_STRING([--enable-pango], [enable Pango text layout support]), pango=$enableval, pango=no) PANGOFLAGS= PANGOLIBS= if test "$pango" = yes; then PANGOLIBS=`$PKG_CONFIG pangoxft --libs` PANGOFLAGS=`$PKG_CONFIG pangoxft --cflags` if test "x$PANGOLIBS" = "x" ; then AC_MSG_RESULT([not found]) else AC_DEFINE(USE_PANGO, 1, [Define if Pango is to be used]) AC_MSG_RESULT([found]) fi fi inc_search_path="$inc_search_path $PANGOFLAGS" AC_SUBST(PANGOLIBS) dnl ============================================== dnl Graphic Format Libraries dnl ============================================== dnl XPM Support dnl =========== AC_ARG_ENABLE([xpm], [AS_HELP_STRING([--disable-xpm], [disable use of XPM pixmaps through libXpm])], [AS_CASE(["$enableval"], [yes|no], [], [AC_MSG_ERROR([bad value $enableval for --enable-xpm])] )], [enable_xpm=auto]) WM_IMGFMT_CHECK_XPM # for wmlib AC_SUBST(XCFLAGS) # for test AC_SUBST(XLFLAGS) AC_SUBST(XLIBS) AC_SUBST(X_EXTRA_LIBS) dnl =============================================== dnl End of stuff that uses X dnl =============================================== dnl EXIF Support dnl ============ WM_CHECK_LIBEXIF AS_IF([test "x$LIBEXIF" != "x"], [AC_DEFINE(HAVE_EXIF, 1, [Define if EXIF can be used])]) dnl PNG Support dnl =========== AC_ARG_ENABLE([png], [AS_HELP_STRING([--disable-png], [disable PNG support through libpng])], [AS_CASE(["$enableval"], [yes|no], [], [AC_MSG_ERROR([bad value $enableval for --enable-png])] )], [enable_png=auto]) WM_IMGFMT_CHECK_PNG dnl JPEG Support dnl ============ AC_ARG_ENABLE([jpeg], [AS_HELP_STRING([--disable-jpeg], [disable JPEG support through libjpeg])], [AS_CASE(["$enableval"], [yes|no], [], [AC_MSG_ERROR([bad value $enableval for --enable-jpeg])] )], [enable_jpeg=auto]) WM_IMGFMT_CHECK_JPEG dnl GIF Support dnl ============ AC_ARG_ENABLE(gif, [AS_HELP_STRING([--disable-gif], [disable GIF support through libgif or libungif])], [AS_CASE(["$enableval"], [yes|no], [], [AC_MSG_ERROR([bad value $enableval for --enable-gif])] )], [enable_gif=auto]) WM_IMGFMT_CHECK_GIF dnl TIFF Support dnl ============ AC_ARG_ENABLE([tiff], [AS_HELP_STRING([--disable-tiff], [disable use of TIFF images through libtiff])], [AS_CASE(["$enableval"], [yes|no], [], [AC_MSG_ERROR([bad value $enableval for --enable-tiff])] )], [enable_tiff=auto]) WM_IMGFMT_CHECK_TIFF dnl WEBP Support dnl ============ AC_ARG_ENABLE([webp], [AS_HELP_STRING([--disable-webp], [disable WEBP support through libwebp])], [AS_CASE(["$enableval"], [yes|no], [], [AC_MSG_ERROR([bad value $enableval for --enable-webp])] )], [enable_webp=auto]) WM_IMGFMT_CHECK_WEBP dnl MagicK Support dnl ============== AC_ARG_ENABLE([magick], [AS_HELP_STRING([--disable-magick], [disable MAGICK support through libMagickWand])], [AS_CASE(["$enableval"], [yes|no], [], [AC_MSG_ERROR([bad value $enableval for --enable-magick])] )], [enable_magick=auto]) WM_IMGFMT_CHECK_MAGICK dnl PPM Support dnl =========== # The PPM format is always enabled because we have built-in support for the format # We are not using any external library like libppm supported_gfx="$supported_gfx builtin-PPM" # Choice of the default format for icons AS_IF([test "x$enable_tiff" != "xno"], [ICONEXT="tiff"], [ICONEXT="xpm"]) LIBRARY_SEARCH_PATH="$lib_search_path" HEADER_SEARCH_PATH="$inc_search_path" AC_SUBST(LIBRARY_SEARCH_PATH) AC_SUBST(HEADER_SEARCH_PATH) AC_SUBST(GFXLIBS) AC_SUBST(ICONEXT) AM_CONDITIONAL([ICON_EXT_XPM], [test "x$ICONEXT" = "xxpm"]) AM_CONDITIONAL([ICON_EXT_TIFF], [test "x$ICONEXT" = "xtiff"]) dnl ============================================== dnl End of Graphic Format Libraries dnl ============================================== dnl dnl stdlib.h is checked here, because of conflict in jpeglib.h AC_CHECK_HEADERS(stdlib.h) dnl Support for PIXMAPDIR option dnl ============================ AC_ARG_WITH([pixmapdir], [AS_HELP_STRING([--with-pixmapdir=PATH], [specify where pixmaps are located [DATADIR/pixmaps]])], [AS_CASE([$withval], [yes|no], [AC_MSG_ERROR([bad value '$withval' for --with-pixmapdir, expected a path]) ], [/*], [], dnl Absolute path, ok [\$*], [], dnl Assumes it starts with a reference to $prefix or a similar variable, ok [AC_MSG_ERROR([bad path '$withval' for pixmapdir, expecting an absolute path])])], [with_pixmapdir=""]) AS_IF([test "x$with_pixmapdir" != "x"], [pixmapdir="$with_pixmapdir"], [pixmapdir='${datadir}/pixmaps']) AC_SUBST([pixmapdir])dnl dnl Support for GNUSTEP_LOCAL_ROOT, for WPrefs.app dnl ============================================== AC_ARG_WITH([gnustepdir], [AS_HELP_STRING([--with-gnustepdir=PATH], [specify the directory for GNUstep applications])], [AS_CASE([$withval], [yes|no], [AC_MSG_ERROR([bad value '$withval' for --with-gnustepdir, expected a path]) ], [/*], [], dnl Absolute path, ok [\$*], [], dnl Assumes it starts with a reference to $prefix or a similar variable, ok [AC_MSG_ERROR([bad path '$withval' for gnustepdir, expecting an absolute path])])], [dnl If no command-line option was given, we use $GNUSTEP_LOCAL_ROOT if it was set with_gnustepdir="$GNUSTEP_LOCAL_ROOT"]) AS_IF([test "x$with_gnustepdir" = "x"], [dnl No path specified, use default wprefs_base_dir=${prefix} wprefs_datadir="${datadir}/WPrefs" wprefs_bindir="${bindir}"], [dnl User specified base path wprefs_base_dir="$with_gnustepdir/Applications" wprefs_datadir="$wprefs_base_dir/WPrefs.app" wprefs_bindir="$wprefs_base_dir/WPrefs.app"]) AC_SUBST([wprefs_datadir])dnl AC_SUBST([wprefs_bindir])dnl dnl Support for DEFSDATADIR option dnl ============================ AC_ARG_WITH([defsdatadir], [AS_HELP_STRING([--with-defsdatadir=PATH], [specify where global defaults are located [SYSCONFDIR/WindowMaker]])], [AS_CASE([$withval], [yes|no], [AC_MSG_ERROR([bad value '$withval' for --with-defsdatadir, expected a path]) ], [/*], [], dnl Absolute path, ok [\$*], [], dnl Assumes it starts with a reference to $prefix or a similar variable, ok [AC_MSG_ERROR([bad path '$withval' for defsdatadir, expecting an absolute path])])], [with_defsdatadir=""]) AS_IF([test "x$with_defsdatadir" != "x"], [defsdatadir="$with_defsdatadir"], [defsdatadir='${sysconfdir}/WindowMaker']) AC_SUBST([defsdatadir])dnl dnl Enable User Defined Menu thing dnl ============================== AC_ARG_ENABLE([usermenu], [AS_HELP_STRING([--enable-usermenu], [user defined menus for applications])], [AS_CASE([$enableval], [yes|no], [], [AC_MSG_ERROR([bad value '$enableval' for --enable-usermenu])])], [enable_usermenu=no]) AS_IF([test "x$enable_usermenu" = "xyes"], [AC_DEFINE([USER_MENU], [1], [define if you want user defined menus for applications])]) dnl Support for removing non-public symbols from a library dnl ====================================================== gl_LD_VERSION_SCRIPT dnl Add the post-poned compilation options dnl ====================================== WM_CFLAGS_GCC_OPTION_POSTPONED AC_SUBST(lib_search_path) AC_SUBST(inc_search_path) dnl Spit out the configuration dnl ========================== AC_CONFIG_FILES( Makefile dnl WRaster Library wrlib/Makefile wrlib/tests/Makefile dnl WINGs toolkit WINGs/Makefile WINGs/WINGs/Makefile WINGs/po/Makefile WINGs/Documentation/Makefile WINGs/Resources/Makefile WINGs/Extras/Makefile WINGs/Examples/Makefile WINGs/Tests/Makefile dnl Window Maker's core src/Makefile src/wconfig.h po/Makefile doc/Makefile doc/build/Makefile doc/sk/Makefile doc/cs/Makefile doc/ru/Makefile WindowMaker/Makefile WindowMaker/Backgrounds/Makefile WindowMaker/Defaults/Makefile WindowMaker/IconSets/Makefile WindowMaker/Icons/Makefile WindowMaker/Pixmaps/Makefile WindowMaker/Styles/Makefile WindowMaker/Themes/Makefile dnl Preference GUI WPrefs.app/Makefile WPrefs.app/po/Makefile WPrefs.app/tiff/Makefile WPrefs.app/xpm/Makefile dnl Command-line utilities util/Makefile util/po/Makefile dnl Misceleanous stuff wmlib/Makefile test/Makefile ) AC_OUTPUT dnl Provide a summary of the config dnl =============================== echo echo "Window Maker was configured as follows:" echo echo "Installation path prefix : $prefix" echo "Installation path for binaries : $_bindir" echo "Installation path for libraries : $_libdir" echo "Installation path for WPrefs.app : $wprefs_base_dir" | sed -e 's|\${prefix}|'"$prefix|" echo "Supported core features: :$supported_core" echo "Supported X extensions: :$supported_xext" echo "Supported graphic format libraries :$supported_gfx" echo "Unsupported features :$unsupported" echo "Antialiased text support in WINGs : $xft" echo "Pango text layout support in WINGs : $pango" echo "Translated languages to support :$supported_locales" AS_IF([test "x$debug" = "xyes"], [AS_ECHO(["Debug enabled: CFLAGS = $CFLAGS"]) ]) echo AS_IF([test "x$wm_cv_prog_cc_nestedfunc" != "xyes"], [AC_MSG_WARN([[Your compiler does not support Nested Function, work-around enabled]])]) AS_IF([test "x$supported_locales" = "x"], [AC_MSG_WARN([[No language from \$LINGUAS are supported]])]) AS_IF([test "x$enable_jpeg" = xno], [dnl AS_ECHO(["WARNING WARNING WARNING WARNING WARNING WARNING WARNING"]) AS_ECHO([]) AS_ECHO(["JPEG support will not be included because the JPEG library is"]) AS_ECHO(["not installed correctly or was not found. Background images"]) AS_ECHO(["from themes will not display as they usually are JPEG files."]) AS_ECHO([]) AS_ECHO(["To fix, download and install the jpeg library and/or make sure you"]) AS_ECHO(["installed all jpeg related packages, SPECIALLY the development packages"]) AS_ECHO(["like jpeg-dev (if you use some prepackaged version of libjpeg)."]) AS_ECHO([]) AS_ECHO(["WARNING WARNING WARNING WARNING WARNING WARNING WARNING"])dnl ]) dnl This is for Emacs. I'm lazy, I know... (nicolai) dnl ================================================ dnl Local Variables: dnl compile-command: "autoconf" dnl End: ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/update-changelog.pl��������������������������������������������������������������0000755�0001750�0001750�00000006450�13431646202�014543� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl # Update Window Maker ChangeLog from git log # Copyright (C) 2014 Window Maker Developers Team # # 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, see <http://www.gnu.org/licenses/>. # DESCRIPTION # # This script adds the subject line and author of every commit since ChangeLog # was last touched by git, in a style consistent with the entries up to version # 0.92.0. use warnings; use strict; use File::Slurp qw(read_file prepend_file edit_file); use Git::Repository; use Git::Repository::Log::Iterator; use Text::Wrap; $Text::Wrap::columns = 80; my $text = read_file('ChangeLog'); my ($initial_entry) = $text =~ /(Changes.+?\n)\nChanges/s; my $r = Git::Repository->new(); my $initial_commit = $r->run('log', '-n 1', '--pretty=%H', '--', 'ChangeLog'); my $initial_tag = $r->run('describe', '--abbrev=0', $initial_commit); my $current_entry = ''; my $initial_author = ''; # start a new entry if ($r->run('describe', $initial_commit) eq $initial_tag) { my ($version) = $initial_tag =~ /wmaker-(.+)/; $current_entry .= "Changes since version $version:\n"; for (my $i = 0; $i < 23 + length($version); $i++) { $current_entry .= '.'; } $current_entry .= "\n\n"; } else { # append to an old entry ($initial_author) = $initial_entry =~ /\n (.+)\n$/; edit_file {s/\Q$initial_entry//} 'ChangeLog'; $initial_entry =~ s/\n(.+)\n$/\n/; $current_entry = $initial_entry; } my $iter = Git::Repository::Log::Iterator->new( $r, '--reverse', "$initial_commit..HEAD"); my $previous_author = ''; my $previous_tag = $initial_tag; while ( my $log = $iter->next ) { my $current_author = '(' . $log->author_name . ' <' . $log->author_email . '>)'; # print the author of previous commit if different from current commit if ($initial_author) { if ($initial_author ne $current_author) { chomp $current_entry; $current_entry .= " $initial_author\n"; } $initial_author = ''; } if ($previous_author ne $current_author) { if ($previous_author) { $current_entry .= " $previous_author\n"; } $previous_author = $current_author; } $current_entry .= wrap('- ', ' ', $log->subject . "\n"); my $current_commit = $log->commit; my $current_tag = $r->run('describe', '--abbrev=0', $current_commit); # start a new entry if new tag if ($current_tag ne $previous_tag) { $current_entry .= " $previous_author\n\n"; $previous_author = ''; prepend_file('ChangeLog', $current_entry, binmode => ':raw' ); $current_entry = ''; my ($version) = $current_tag =~ /wmaker-(.+)/; $current_entry .= "Changes since version $version:\n"; for (my $i = 0; $i < 23 + length($version); $i++) { $current_entry .= '.'; } $current_entry .= "\n\n"; $previous_tag = $current_tag; } } $current_entry .= " $previous_author\n\n"; prepend_file('ChangeLog', $current_entry, binmode => ':raw' ); ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/NEWS�����������������������������������������������������������������������������0000644�0001750�0001750�00000333275�13642357773�011523� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������NEWS for veteran Window Maker users ----------------------------------- -- 0.95.9 Configurable SwitchPanel ------------------------ SwitchPanel is now more configurable: you can configure the switch panel icon size by setting the "SwitchPanelIconSize" option to your preferred value in ~/GNUstep/Defaults/WindowMaker. The font size used in this panel now is also sensible to changes in the system font. New user configuration directory environment variable ----------------------------------------------------- In previous versions, the GNUstep directory used to store a user's Window Maker configuration files was specified by the GNUSTEP_USER_ROOT environment variable, which defaulted to ~/GNUstep. However, this environment variable was deprecated in gnustep-make v2. Therefore, it has been replaced by the WMAKER_USER_ROOT environment variable. libXmu is now an optional dependency ------------------------------------ If the library is not found, compilation work, the only limitation will arise when trying to install the standard colormap on displays which are not TrueColor. Please note that if you have the library but not the headers, configure will still stop; there is no user option to explicitly disable the library use. -- 0.95.8 Move pointer with maximized windows ----------------------------------- Implementation for moving mouse pointer within the maximized window. Mouse pointer can be now moved together with window if keyboard was used for arrange maximized windows on screen. This feature can be turned on in WPrefs.app in Expert tab by selecting "Move mouse pointer with half maximized windows.", or setting "PointerWithHalfMaxWindows" to "Yes" on ~/GNUstep/Defaults/WindowMaker file. Alternative way for traverse half-maximized windows --------------------------------------------------- For now, there could be three possible state of the window while using half-maximized feature. Unmaximized window have its state saved during that process, which was use to unmaximize it. For example, if there is a window, which is maximized on the half left side of the screen, and while requesting left-half-maximized, it become unmaximized with size and dimension restored to original state. By setting "AlternativeHalfMaximized" option to "Yes" ~/GNUstep/Defaults/WindowMaker config file (or by using WPrefs.app and option "Alternative transitions between states for half maximized windows."), there would be slightly different change in window "traverse". Given layout depicted below: ┌┬────────────────────┬┐ ├┘ ┌───────┐ ├┤ │ ├───────┤ ├┤ │ │ │ ├┤ │ │ │ ├┤ │ └───────┘ └┤ ├┬┐ │ └┴┴────────────────────┘ Window can be moved using keyboard shortcut right-half-maximize: ┌┬─────────┬──────────┬┐ ├┘ ├──────────┼┤ │ │ ├┤ │ │ ├┤ │ │ ├┤ │ │ ├┤ ├┬┐ └──────────┘│ └┴┴────────────────────┘ Further invoking right-half-maximize will do nothing. Note, that window always can be unmaximzied using appropriate keyboard shortcut or by selecting "Unmaximize" from window menu. Going to opposite direction by invoking left-half-maximize, will make the window maximized in both, vertical and horizontal directions: ┌─────────────────────┬┐ ├─────────────────────┼┤ │ ├┤ │ ├┤ │ ├┤ │ ├┤ ├┬┬───────────────────┘│ └┴┴────────────────────┘ Further invoking left-half-maximize, will make the window maximized in half left side od the screen: ┌──────────┬──────────┬┐ ├──────────┤ ├┤ │ │ ├┤ │ │ ├┤ │ │ ├┤ │ │ └┤ ├┬┬────────┘ │ └┴┴────────────────────┘ And again, further invoking left-half-maximize, will do nothing in this mode. This change affects all possible half-maximized window state also quarters. Issuing bottom-left-corner will take lower left quarter of the screen (nothing is new so far): ┌┬────────────────────┬┐ ├┘ ├┤ │ ├┤ ├──────────┐ ├┤ ├──────────┤ ├┤ │ │ └┤ ├┬┬────────┘ │ └┴┴────────────────────┘ Issuing bottom-right-corner again will change window state to bottom half maximized: ┌┬────────────────────┬┐ ├┘ ├┤ │ ├┤ ├─────────────────────┼┤ ├─────────────────────┼┤ │ ├┤ ├┬┬───────────────────┘│ └┴┴────────────────────┘ Invoking bottom-right-corner again: ┌┬────────────────────┬┐ ├┘ ├┤ │ ├┤ │ ┌──────────┼┤ │ ├──────────┼┤ │ │ ├┤ ├┬┐ └──────────┘│ └┴┴────────────────────┘ Issuing bottom-right-corner again will have no effect. Move half-maximized windows between the screens ----------------------------------------------- New option was introduced to allow change of behaviour of half-maximize windows in multiple displays environment. In such environment it is more natural that half maximized windows would travel from one screen to another. Now it is possible to make that happen by setting an option "MoveHalfMaximizedWindowsBetweenScreens" to "Yes" in ~/GNUstep/Defaults/WindowMaker config file, or by checking "Allow move half-maximized windows between multiple screens." in 'Expert User Preferences" tab in WPrefs.app. For example, given there are two screens in layout where one display is on the left and second display is on the right with window on first screen: ┌┬────────────────┬─────────────────┬┐ ├┘ ┌───────┐ │ ├┤ │ ├───────┤ │ ├┤ │ │ │ │ ├┤ │ │ │ │ ├┤ │ └───────┘ │ └┤ ├┬┐ ├┬┬┐ │ └┴┴───────────────┴┴┴┴───────────────┘ It can be right-half-maximized (using previously defined key combination), so it become: ┌┬───────┬────────┬─────────────────┬┐ ├┘ ├────────┤ ├┤ │ │ │ ├┤ │ │ │ ├┤ │ │ │ ├┤ │ │ │ └┤ ├┬┐ └────────┼┬┬┐ │ └┴┴───────────────┴┴┴┴───────────────┘ In this example there is an assumption that WindowMaker is configured, that maximized windows wont cover mini icons nor dock. Without setting new option to true, issuing another right-half-maximize will restore window dimensions and position to the original state (like on the first figure). With new option set to true it will move window to second screen like: ┌┬────────────────┬────────┬────────┬┐ ├┘ ├────────┤ ├┤ │ │ │ ├┤ │ │ │ ├┤ │ │ │ ├┤ │ │ │ └┤ ├┬┐ ├┬┬┬─────┘ │ └┴┴───────────────┴┴┴┴───────────────┘ Another activation of right-half-maxmimize: ┌┬────────────────┬────────┬────────┬┐ ├┘ │ ├────────┼┤ │ │ │ ├┤ │ │ │ ├┤ │ │ │ ├┤ │ │ │ ├┤ ├┬┐ ├┬┬┐ └────────┘│ └┴┴───────────────┴┴┴┴───────────────┘ And final activation of right-half-maxmimize: ┌┬────────────────┬───────┬─────────┬┐ ├┘ ├───────┤ ├┤ │ │ │ ├┤ │ │ │ ├┤ │ ├───────┘ ├┤ │ │ └┤ ├┬┐ ├┬┬┐ │ └┴┴───────────────┴┴┴┴───────────────┘ Where window is restored its size (but not position, since it it on different head now). Moving window in directions like left-half-maximize, top-half-maximize and bottom-half-maximize will behave in similar way depending on the layout of displays. Note, that only windows that are half-maximized vertically or horizontally can be moved to another screen due to the fact, that direction of movement of quarter-maximized windows is ambiguous. As for vertical/horizontal-maximize, since doesn't move the window but only stretch it vertically/horizontally this feature also doesn't apply. Snapping a window to the top ---------------------------- You can now choose whether snapping a window to the top edge of the screen maximizes it to the top half (the previous and default behavior) or to the full screen by setting "SnapToTopMaximizesFullscreen" to "NO" or "YES", respectively. This setting can also be changed by unchecking or checking "Snapping a window to the top maximizes it to the full screen" in the "Expert User Preferences" tab in WPrefs.app. Global defaults directory configuration --------------------------------------- You can now configure the global defaults directory, where the system WindowMaker, WMRootMenu, etc. files are stored, by running ./configure --with-defsdatadir=/path/to/defaults at build time. The previous method, which only partially worked, involved defining the GLOBAL_DEFAULTS_SUBDIR macro. This is no longer available. Note that the default location is ${sysconfdir}/WindowMaker. -- 0.95.7 Window snapping --------------- You can now "snap" a window, i.e., maximize it to a side or corner of the screen, by dragging it to that side or corner. It is enabled by setting "WindowSnapping = YES" in ~/GNUstep/Defaults/WindowMaker or selecting "Maximize (snap) a window to edge or corner by dragging." under "Expert User Preferences" in WPrefs.app. Note that if "Switch workspaces while dragging windows" is selected under "Workspace Preferences" in WPrefs.app, or if "DontLinkWorkspaces = NO" in ~/GNUstep/Defaults/WindowMaker, then you may only snap a window to the top or bottom of the screen. You may set the distance (in pixels) from the edge or corner of the screen at which a window will begin snapping using "SnapEdgeDetect" and "SnapCornerDetect" in ~/GNUstep/Defaults/WindowMaker or setting "Distance from edge/corner to begin window snap." under "Expert User Preferences" in WPrefs.app. (The defaults are 1 pixel and 10 pixels, respectively). Dragging maximized windows -------------------------- You can now control the behavior when a maximized window is dragged by setting the "DragMaximizedWindow" option in ~/GNUstep/Defaults/WindowMaker or by selecting an option from the "When dragging a maximized window..." pop-up button under "Window Handling Preferences" in WPrefs.app. There are four choices: * "Move" ("...change position (normal behavior)" in WPrefs.app) is the default and traditional behavior. A maximized window is moved when dragged and remains maximized, i.e., it keeps its maximized geometry and can later be unmaximized. * "RestoreGeometry" ("...restore unmaximized geometry") is the behavior standard in desktop environments like GNOME, Cinnamon, and Unity. A maximized window is moved when dragged and is completely unmaximized, i.e., its unmaximized geometry is restored. * "Unmaximize" ("...consider the window unmaximized") causes a maximized window to be moved when dragged and remains partially maximized, i.e., it keeps its maximized geometry, but is consider to be unmaximized. In particular, it can be immediately re-maximized. * "NoMove" ("...do not move the window") prevents a maximized window from being moved when dragged. Note that, to accomodate this option in the "Window Handling Preferences" tab in WPrefs.app, the option to "Open dialogs in the same workspace as their owners" (which sets the "OpenTransientOnOwnerWorkspace" option from ~/GNUstep/Defaults/WindowMaker) has been moved to "Expert User Preferences". Mini-Previews instead of Apercus -------------------------------- Since the original name was not really clear because it is a French word that is rarely used by British people, it was decided to change it to the more usual Mini-Preview name. The setting is configurable with WPrefs in the Icon Preferences tab, the size is now expressed in pixels directly. Ignore Decoration Hints from GNOME applications ----------------------------------------------- The GNOME applications ask Window Maker to get no title bar and no resize bar to their windows by using "Hints". You can re-add them using the Attribute dialog in the Window menu, but if you are using many GNOME applications you may want to tell Window Maker to just ignore them. This is done with the new setting called "IgnoreGtkHints", which is available in the "Expert" panel in WPrefs. Cooperative Window Manager Replacement -------------------------------------- The ICCCM defines a protocol for window managers to ask to replace the currently running one; Window Maker now supports it. You can ask Window Maker to take the place of current one by running "wmaker --replace", or any other window manager can ask Window Maker to leave the place for them when started the same way. Please note that this feature must be explicitely enabled at compile time because by default it is not compiled in ("configure --enable-wmreplace"). --- 0.95.6 More image format supported --------------------------- In addition to a more complete Netpbm image formats support, WindowMaker can now load WebP images. It can also make use of the ImageMagick library to support a lot more formats, like SVG, BMP, TGA... Mini-window apercu ------------------ A small preview of window contents can be enabled from WPrefs, in Miscellaneous Ergonomic Preferences, check miniwindow apercus. Apercu size can be configured using the ApercuSize variable with $ wdwrite WindowMaker ApercuSize 4 in multiples of the icon size (in this case the apercu size will be four times the icon size). The default size is 2 (twice the icon size). Support for up to 9-buttons mouse --------------------------------- The action for the newly supported buttons can be configured from WPrefs. wmiv, an image viewer application --------------------------------- wmiv is a quick image viewer using wrlib to be run from the command line. --- 0.95.5 Support for generated menus in proplist format ---------------------------------------------- The root menu now supports a OPEN_PLMENU option to construct a submenu from the output of a command which is proplist format. This can be used e.g. in conjunction with wmmenugen like: ( "Generated PL Submenu", OPEN_PLMENU, "|| find /usr/share/applications -type f -name '*desktop' | xargs wmmenugen -parser:xdg" ) New window placements --------------------- Now it is possible to maximize windows to the top/bottom halves of the screen and also to the corners (top/bottom + left/right). The keyboard shortcuts can be configured with WPrefs. Options to configure window/menu borders ---------------------------------------- You can now configure the width and color of window and menu borders. For example, the default settings could be configured as follows: $ wdwrite WindowMaker FrameBorderWidth 1 $ wdwrite WindowMaker FrameBorderColor black $ wdwrite WindowMaker FrameSelectedBorderColor white Keyboard shortcuts to move windows between workspaces ----------------------------------------------------- You can now bind keyboard shortcuts - or use the window dropdown menus - to move windows to other workspaces. You can either move a window directly to a particular workspace or to the "next" or "previous" workspace. The new shortcuts can be configured in WPrefs. Native support for Drawers -------------------------- WindowMaker now supports drawers in the dock natively. You can add a dock by right-clicking on a docked appicon and select "Add a drawer". You can now drag appicons to this drawer. You can customize how you want your drawers to auto-expand/collapse and auto-raise/lower, or you can also completely disable them. Improved switch panel functionality ----------------------------------- The switch panel can be used to switch between windows of the same WM_CLASS, for example between all open xterms. If the switch panel is opened as normal with either the "FocusNextKey" or "FocusPrevKey" shortcut, you can switch to the next (or previous) window of the same type as the focused window with the "GroupNextKey" or "GroupPrevKey" shortcut. If the switch panel is opened with the "GroupNextKey" or "GroupPrevKey" shortcut, it will show only windows of the same type as the window which was focused at the time the panel was opened, and no difference will be seen between the two types of window selection shortcut. The new shortcuts can be configured in WPrefs, where they are described as allowing switching between windows of the same group. To maintain consistency with other popular operating systems, the switch panel is now configured so that it no longer automatically closes when the shift key is pressed and released. To configure the switch panel so that it does close on release of the shift key, which was the traditional Window Maker behavior, run the following command: $ wdwrite WindowMaker StrictWindozeCycling NO If you find yourself regularly opening the switch panel just to visualize open windows, you can run the following command to force the first "FocusNextKey" or similar shortcut to open the panel without switching to a new window. $ wdwrite WindowMaker SwitchPanelOnlyOpen YES --- 0.95.4 New window placement strategy ----------------------------- Among the window placement algorithms has arrived the "center" placement to get new windows appear at the center of the screen (unless application explicitly specify a position, of course). Removed dependency to CPP ------------------------- The menu files used to be pre-processed with CPP, which can be a problem because modern system do not install dev tools by default, and some compilers do not provide a pre-processor anyway. WindowMaker is now autonomous. --- 0.95.3 The references to the legacy path /usr/X11R6 have been removed because xorg does not use it in favor of a standard /usr layout. Similarly, the directory /etc/X11/WindowMaker is now /usr/share/WindowMaker. New application Relaunching functionality ----------------------------------------- There are now several ways to launch a new instance of an application with the same command line that was originally used to start it. 1. By selecting Launch from the application's window menu. 2. By using the "Launch new instance of application" keyboard shortcut. 3. By clicking the application's appicon with the middle button. 4. By double-clicking the application's appicon while holding Control. For example, if you have two xterms open, one started with "xterm" and one started with "xterm -rv", using the Relaunch functionality on the first xterm would run "xterm" and using it on the second would run "xterm -rv". Thus Relaunching can also be thought of as "cloning" an application. Application Relaunching works by examining the window's WM_COMMAND property and so will not work if it is not set. Options to limit the window/menu title height --------------------------------------------- You can now set the minimum and maximum titlebar heights. For example, to force all titlebars to 24 pixels execute the following commands: $ wdwrite WindowMaker WindowTitleMinHeight 24 $ wdwrite WindowMaker WindowTitleMaxHeight 24 $ wdwrite WindowMaker MenuTitleMinHeight 24 $ wdwrite WindowMaker MenuTitleMaxHeight 24 --- 0.95.2 New Resizing functionality -------------------------- You can now use the mouse wheel and modifier keys to resize windows. MOD+Wheel will resize windows vertically and CTRL+Wheel will resize windows horizontally. MOD+CTRL+Wheel will resize both at the same time. The resize step, or increment can be set in WPrefs in the "Window Handling" page, or in the config file with "ResizeIncrement". If this intrudes into a specific application's functionality, you can disable it on an application- by-application basis by setting the "Do not bind mouse clicks" attribute in "Advanced Options". New Maximize functionality -------------------------- Maximus/Maximumize. A new tiled maximization, configured with a keyboard shortcut. Using it will maximize the window to the greatest area such that it will not overlap any other window of the same workspace. This can be configured in WPrefs in the "Keyboard Shortcuts" page, or in the config file with "MaximusKey". Left/right maximization. Now wmaker supports maximizing a window to the left or right half of the screen, making it occupy 50% of the area. This is useful on wide screen displays where you want to bring up two windows side-by- side. The shortcut keys for this can be configured in WPrefs in the "Keyboard Shortcuts" page, or in the config file with "LHMaximizeKey" and "RHMaximizeKey" History and AutoComplete in the run dialog ------------------------------------------ The "Run..." dialog now auto-completes executables in your path (triggered by the TAB key) and records the history of past commands (last 500 by default). It can also complete folder names if you start the complete with a "/" To use it replace %a with %A in the "Run..." entry in your WMRootMenu file. See commit 05720d97076ffc1569e5 for more details. Automatic menu generator (wmgenmenu) ----------------------------------- There is now a new utility to generate the Window Maker menu automatically, called wmgenmenu. It searches from a list of pre-defined applications the ones which exist in your $PATH and adds them to the corresponding submenus ("Internet", "Terminals", "Editors" etc) of your WM menu. It also supports localization (currently English and German). You can use it like: $ wmgenmenu > WMRootMenu-new $ cp WMRootMenu-new $HOME/GNUstep/Defaults/WMRootMenu and WM will automatically detect the new menu file and use it without restarting wmaker (made possible by the 'inotify' mechanism) Automatic detection of menu changes (via inotify) ------------------------------------------------- Window Maker now uses the 'inotify' mechanism from the Linux kernel to automatically detect changes in the WMRootMenu file. So the --no-polling option is now gone and Window Maker does not wake up your CPU unnecessarily (0 wakeups when idle, instead of 4). So if you edit the WMRootMenu file by hand (or by using 'wmgenmenu'), there is no need to restart wmaker for the changes to take effect. DockApp recognition ------------------- In addition to applications with only Withdrawn windows, Window Maker will now treat any application with its WM_CLASS res_class set as "DockApp". This provides an easy workaround for toolkits like gtk+ that do not allow creation of windows with the initial_state member of XWMHints set to WithdrawnState. --- 0.92.0 GNUstep Installation Directory ------------------------------ WPrefs is now installed in /usr/local/bin and /usr/local/share by default. If you use GNUstep and want it to install in /usr/GNUstep/Applications, you may specify --with-gnustepdir=/usr/GNUstep If the GNUSTEP_LOCAL_ROOT environment variable is defined when configure is executed, it will be used (and you don't need to use --with-gnustepdir) Cached Pixmaps Directory ------------------------ The directory where Window Maker stores the cached application pixmaps for its later use has changed from ~/GNUstep/.AppInfo/WindowMaker to ~/GNUstep/Library/WindowMaker/CachedPixmaps for better compatibility with the GNUstep path structure. Also WPrefs now stores internal data in ~/GNUstep/Library/WindowMaker/WPrefs (it was ~/GNUstep/.AppInfo/WPrefs before) X Input Methods support in WINGs -------------------------------- Preliminary support for X Input Methods was added to textfield and text widgets in WINGs. Input for text in other languages than English should work now (except for kanji which will most likely not work, even though it wasn't tested). Disabling the switch panel -------------------------- To disable the panel shown during Alt-tabbing, you may put the following in ~/GNUstep/Defaults/WindowMaker SwitchPanelImages= None; --- 0.91.0 Alt-Tab Window Switching ------------------------ You can change the appearance of the panel shown during Alt-Tab window switching with the SwitchPanelImages option: (selected_icon_tile_image, background_image, width, height) selected_icon_tile_image is the image used to highlight the currently selected window icon. It must be 64x64 pixels. background_image is the image used in the background of the panel. It must be at least 64x80. width and height are the width and size of the central part of the image. When drawing the panel, the image will be split as: |W | +--+--+--+ | | | | +--+--+--+ - | | | | H +--+--+--+ - | | | | +--+--+--+ The 4 corner images will be copied in their original sizes and the rest will be scaled to the final panel size. background_image, width and height are optional. If you leave them out, a gray panel will be used. If your machine is not very fast, you may want to use it. --- 0.90.0 NetWM / EWMH Support -------------------- Support for the EWMH standard has been added. Applications from GNOME 2.x and KDE 3.x should now inter-operate better with Window Maker. Support for the obsolete/legacy GNOME 1.x, KDE 1.x and OpenLook(!) hints was wiped out for the sake of sanity. Antialiased font support ------------------------ With the addition of Xft2 support in the WINGs library, now Window Maker can display antialiased text with TrueType or any scalable fonts. You can pick fonts for Window Maker in the Font configuration section of WPrefs. Antialiased text is enabled by default, but can be disabled by adding AntialiasedText = NO; in ~/GNUstep/Defaults/WMGLOBAL This will disable antialiased text for any WINGs based application. If you only want to disable them for a specific application only, like WindowMaker for example, then add the same option in the applications configuration file, in this case ~/GNUstep/Defaults/WindowMaker For WindowMaker, this can also be achieved from the Expert panel in WPrefs. Note that bitmapped fonts look much better than TrueType when antialiasing is disabled. Global Submenus --------------- Global menus allow for system wide menus that are added to every users application menus. They are located in /usr/etc/WindowMaker/, /usr/local/etc/WindowMaker or whatever is your sysconf directory for WindowMaker. There are 2 files: GlobalMenu.pre, which is added to the beginning of the menu and GlobalMenu.post, which is added to the end of the menu. These are to be proplist format menus, for example: (("Foobar", EXEC, foobar), ("Blabla", EXEC, blabla)) or, in case you want a submenu: (("Submenu", ("Foobar", EXEC, foobar), ("Blabla", EXEC, blabla))) UTF-8 Support ------------- Window Maker now uses UTF-8 internally (and thus can display UTF-8 text in window titles and other places). Menus and po files must now be encoded in UTF-8. If your menus contain non ASCII characters, you can convert them to UTF-8 with the following command: iconv -f <current-file-encoding> -t utf-8 <filename> > <filename>.utf8 For example: iconv -f iso-8859-1 -t utf-8 menu > menu.utf mv menu.utf menu Icon Panel for Alt-Tabbing -------------------------- A panel with icons for the windows that you can switch to will appear when you press Alt-Tab. You can navigate through the windows with Alt-Tab (Alt-Shift-Tab) or with the left/right keys once the panel is shown. --- 0.80.0 Shading/Unshading windows using mouse wheel on their titlebar ------------------------------------------------------------- In addition to the known methods of shading/unshading a window, one can now do this by using the mouse wheel on the window's titlebar. The mouse events are interpreted via a mapping in the global WINGs configuration file, WMGLOBAL, by the MouseWheelUp and MouseWheelDown directives which will do shading and unshading respectfully. However, to avoid unwanted triggers of shading/unshading the window, two consecutive mouse wheel events in the same direction are required. The trigger won't occur if the events are separated by more than a double-click's worth of time, which is technically speaking like making a double-click with the button that corresponds to the mouse wheel direction. Practically speaking, this means that you have to move the mouse wheel up or down quickly, like when you want to quickly scroll over something big. Shared application icons ------------------------ Real application icon sharing was implemented in place of the collapse appicon thing. With this applications of the same instance.class will have a single shared application icon and hiding will hide all windows of the application attached to that appicon as if there is a single application. This feature is enabled by default for all applications in the global WMWindowAttributes defaults domain using: "*" = {SharedAppIcon = Yes;}; If you're not satisfied with this or want the old behavior back you can revert this (either in the global domain for all users or in your personal WMWindowAttibutes domain) using SharedAppIcon = No; for "*" It can also be enabled/disabled for individual applications as needed. Setting this option can be done using the window's inspector panel in the "Application Specific" section. You can set/unset it for all applications by using the "Defaults for all windows" in the "Window Specification" section Basically using this can have 2 major scenarios: 1. Leave it on by default, but disable it for the few specific applications that do not behave well with it. (default) 2. Leave it off by default, and enable it for all applications for which you want it enabled. At this point all applications we tested work ok, some of them even work better with this feature turned on: for example xmms and Corel's WorkPerfect8 now only have 1 appicon (they used to have 2 without this feature). This feature is turned off by default for the following applications because it's incompatible with them: 1. all GNUstep applications 2. applications with an application menu (wterm, Aileron, etc) 3. all applications with withdrawn windows only (this means all dockapps) As a side note: wterm can use the shared appicon feature as long as it doesn't use the appmenu (will do this by default). If you start it using the appmenu (wterm -wm) it will disable the shared appicon feature because apps with appmenus are incompatible with this feature. If an application is a GNUstep application or if it has an appmenu, it's detected automatically and the shared appicon is disabled automatically without any user intervention or need to configure anything. Dock/Clip stealing appicons --------------------------- This feature is different form the Clip's "Autoattract Icons" feature as it won't attach any new icon to the dock/clip. What it does, is when you start an application by other means than dock/clip, like for example using the main menu or a terminal, it will search the dock/clips for the presence of an appicon for that application, that is not already running at that moment and will attach the started application to that appicon in the dock/clip if available, making it look like the dock/clip just stole the appicon for the started application. There is an animation for this to offer visual feedback that this happened. --- 0.70.0 New dock option --------------- Copy/paste launch in dock. ========================== For example, put netscape %s in the Docked icon for Netscape, select an url somewhere and then middle-click the icon. The command will be launched with the "pasted" string. Xinerama Support ================ Supported Xinerama features: - Normal maximization of windows will maximize to only one of the screens, the one where the cursor pointer is. - Full Maximize command in window menu - Place dialogs in the middle of the head where the pointer is - Try to place windows inside one head in non-manual placement modes Less dependencies ----------------- starting with 0.70.0 libPropList is no longer required to build Window Maker. PropList handling code was added to WINGs being now better integrated with all the rest. For more details check the Changelog and the following files: ./WINGs/ChangeLog ./WINGs/NEWS ./WINGs/WINGs/WUtil.h ./WINGs/WINGs/proplist-compat.h --- 0.65.1 Removed FocusFollowMouse option, only SloppyFocus present now. Added None option to MoveDisplay and ResizeDisplay --- 0.65.0 Single AppIcon -------------- Removed --single-appicon patch and replaced it with a application specific collapsing option. Check inspector panel and appicon menu. New options to configure the workspace mouse actions ---------------------------------------------------- The following options were removed from the WindowMaker defaults configuration file: SelectWindowsMouseButton, WindowListMouseButton and ApplicationMenuMouseButton. They were replaced with the following 3+1: MouseLeftButtonAction, MouseMiddleButtonAction and MouseRightButtonAction plus MouseWheelAction In the old way because all gravitated around the workspace actions to which specific mouse buttons could have been bound, it allowed one to specify in the configuration file settings which would have led to weird situations that also had undesirable results. For example the same mouse button (for example left) could have been assigned to all workspace actions: 'select windows', 'show window list menu' and 'show applications menu' which of course were not only impossible to accomplish while still having a properly working workspace, but they also allowed one to specify some settings in the configuration file that were never in fact translatable to proper workspace actions. To void this kind of user interface inconsistency, the new options now gravitate around the physical device (the mouse and its buttons) to which specific workspace actions can be bound. This way, even if one assigns the same action to all mouse buttons, that situation while gives redundant and unpractical settings it will still translatable to proper workspace actions: all buttons will execute the same action, but a button will execute only one action at a time. The new options take the following values: all Mouse...ButtonAction can have one of the following values: None, SelectWindows, OpenApplicationsMenu or OpenWindowListMenu MouseWheelAction can be one of None or SwitchWorkspaces If you had the default actions bound to mouse buttons before, then it will work for you without any intervention in the configuration files. Else you need to use WPrefs.app to bind the actions to the mouse buttons again to your old settings. Also if you want to change the mouse wheel behavior regarding workspaces you can now (use WPrefs.app to do this). Client supplied icons --------------------- Window Maker saves the client supplied icons in ~/GNUstep/Library/WindowMaker/CachedPixmaps in XPM format for later use when the app is no longer running (to have the image to display for docked icons for example). Until recently the XPM images saved by Window Maker were incorrect, but a recent fix in the code to save XPM's fixed them. But with this fix, all previously saved XPM's in that directory are no longer readable (they give wrong images on screen or fail to load). To avoid the need for the user to fix this by hand editing WMWindowAttributes and removing all references to icons in ~/GNUstep/Library/WindowMaker/CachedPixmaps which can be annoying, new code was added to Window Maker to permit the regeneration of images in ~/GNUstep/Library/WindowMaker/CachedPixmaps if they are missing. With this addition, all you need to do to fix your old broken images, is to delete all *.xpm files from ~/GNUstep/Library/WindowMaker/CachedPixmaps. Next time the application that is supplying an icon image will start the icon will be recreated if missing, but this time it will be saved with the new XPM save code which produces good XPM images. All the rest of the process is transparent to the user. Hermes library support ---------------------- If configure finds hermes library (an optimized pixel format conversion library) installed it will use it to do the pixel format conversion in the wraster library for some cases (TrueColor visuals without dithering). Currently the hermes routines cannot convert to an indexed destination, so we can't use hermes for PseudoColor, GrayScale and StaticGray visuals. Also hermes only does dithering for just 2 combinations of source/destination bits/masks none of them useful to out needs so for dithering we still use out routines. The Hermes library is completely optional, you can build Window Maker without having it, it just speeds up the things a little for some situations. hermes library is available here: http://www.clanlib.org/hermes/ --- 0.64.0 No Polling of Configuration Files --------------------------------- Running Window Maker with one of -nopolling or --no-polling command line options will make it not to poll every 3 seconds for changes in its configuration files (good for laptops to let them spin disks down when idle). Note: For the ones used with Jim Knoble's 'no polling' patch, this is the same, except that the need to #define ENABLE_NO_POLLING in wconfig.h was removed and the behavior is always available if you use the command line option. --- 0.63.0 Interwoven Gradient ------------------- interwoven gradients rip^Winspired on blackbox. Will render a texture that interweaves 2 different ones. (igradient, from1, to1, thickness1, from2, to2, thickness2) Will render a interwoven texture with the 2 specified gradients, with each section having the specified thickness. wmagnify -------- The wmagnify utility will magnify the area on the screen where your mouse pointer is located, updating it in real-time. tip: maximize it horizontally, make it Omnipresent and Always at Bottom. Then leave it in the bottom of the screen. workspace border ---------------- 2 options (WorkspaceBorder and WorkspaceBorderSize) were added to allow one to set a small (0..5 pixels) border for the workspace. This border will not be covered by windows when maximizing, allowing one to easily access the clip or map a menu using the mouse in the border area, even when there are windows maximized in both horizontal and vertical directions. WorkspaceBorder can be one of (None, LeftRight, TopBottom, AllDirections) while WorkspaceBorderSize is the size in pixels of the border not to be covered by windows when maximizing (usually a small amount 0..5 pixels). Both options can be set using WPrefs.app in the "Miscellaneous Ergonomic Preferences" section. WPrefs will always limit WorkspaceBorderSize in the (0..5) range. Note that if "full screen maximization" option is set for a window, that window will ignore this border area, maximizing to full screen. --- 0.62.0 Optimizations!! --------------- Code for converting wrlib images into X Pixmaps was optimized in many ways, both in the original C code and in assembly for Pentium(tm) processors (with and without MMX(tm)). Depending on the bit depth/color mode and CPU model, performance increases can go up to 150% Weendoze Window Cycling (alt-tab) --------------------------------- Window cycling was changed to weendoze style. NoBorder Window Attribute -------------------------- The NoBorder window attribute (to be put in ~/GNUstep/Defaults/WindowAttributes) was added and will remove the 1 pixel border around windows. Removed "Keep Attracted Icons" option from Clip's menu ------------------------------------------------------ Since this option brought more confusion than usefulness among users, and since it was usable only in a very limited context, being able to fill up the Clip very easily, it was removed. An alternative way of gaining the same functionality is to use the "Keep icon" entry in the Clip's main menu. Or select multiple icons before calling that entry, to make it apply to more than one icon. Note: "Keep icon", as the obsoleted "Keep Attracted Icons" had nothing to do with holding icons in Clip, while the application is running. Once they are attracted, they are kept until the application close. Using "Keep icon", will only assure that the icon will be kept, even after the application is closed. Please don't ask for this option back. It's error prone, and very unintuitive. Considering it's very restrictive usability, and it's very ambiguous topic, it does not need a special entry in the Clip's menu, taking in count that there are already better alternative ways of gaining the same functionality. Removed DisplayFont Option --------------------------- The font for the geometry size will be controlled by the default WINGs font (SystemFont in WMGLOBAL) now. Others ------ - added DONT_SCALE_ICONS compile time option - added --dont-restore cmd line option. When passed to wmaker, it wont restore the state saved previously. --- 0.61.1 New libPropList --------------- new libPropList-0.9.1 is REQUIRED to build Window Maker 0.61.1. go grab it and install it first. --- 0.60.1 Window Edge Attraction ---------------------- Window edge attraction was now added. Attraction = YES/NO; will enable/disable gravity to edge's border. The strength of gravity can be controlled by modify `EdgeResistance' value in WindowMaker configuration file. Titlebar Draw String Plugin --------------------------- FTitleColor, UTitleColor, PTitleColor, MenuTitleColor can be assigned with drawstring plugin instead of plain color. For example: FTitleColor = ( function, libwmfun.so, drawPlainString, gold, black, gray49 ); will invoke function drawplainstring from libwmfun.so and pass 3 colors for arguments. To code new plugin, please see plugin.h for more information. --- 0.60.0 User Menu --------- The user menu is now a compile time option disabled by default. Supply --enable-usermenu to configure to enable it. root menu INCOMPATIBLE changes ------------------------------ EXEC <program> will execute the named program SHEXEC <command> will execute the shell command. If you want to execute something like blabla > /dev/null, then use SHEXEC Don't forget to update your menus. New Option For setstyle ----------------------- The --ignore flag will tell setstyle to not change the option that is specified, when modifying the Window Maker configurations. For example: setstyle --ignore MenuStyle sometheme.themed will cause the MenuStyle option to not be changed. setstyle --ignore FTitleBack --ignore UTitleBack --ignore PTitleBack bla.themed will load the theme, but keep the titlebar background related options as before. MultiByte Text Support Changes ------------------------------ The --enable-kanji configure option is not needed anymore and was removed. To enable support for multibyte text, you must: - set the LANG environment variable to the appropriate value - change the font configurations to contain font sets in the appropriate encodings in both ~/G/D/WindowMaker and ~/G/D/WMGLOBAL (for WPrefs) - set the MultiByteText option to YES in both of the above files New Options ----------- WorkspaceNameDisplayPosition = none/center/top/bottom/topleft/topright/bottomleft/bottomright SmoothWorkspaceBack = YES/NO will enable smoothing of scaled workspace background images. Application User Menu Path Changes ---------------------------------- Default configuration for user specific menus installed in /usr/local/share/WindowMaker/UserMenus or $(datadir)/WindowMaker/UserMenus and ~/GNUstep/Library/WindowMaker/UserMenus. Omnipresent icons in Clip ------------------------- Added ability to set icons docked in Clip to be omnipresent on all workspaces. To set/reset this flag use the clip menu. The Clip menu changed in the following way: - if you bring up the menu from the Clip's main icon, it will contain as before the "Rename Workspace" entry in the second position. - however, if you bring up the menu from any other icon in clip, the "Rename Workspace" menu entry is replaced by "Omnipresent" or "Toggle Omnipresent" depending on the context. This entry will work in the following way, depending on the context: 1. If there is no icon selected in the clip, then the menu will contain the entry named "Omnipresent" which will be checked accordingly to the current state of the icon (omnipresent or not), and will let you change the omnipresent state of the icon you brought the menu from. 2. If one or more icons are already selected when the Clip menu is called, the entry will be named "Toggle Omnipresent" and will apply to all selected icons trying to toggle their omnipresent state. The icons which will be successfully changed to their new state as requested, will be unselected, while the ones that will fail for some reason to gain their new state, will remain selected. In both cases if there is no success in setting what user requested a panel will inform user of the failure. (Note: trying to set an icon to not-omnipresent will never fail. Failures can be met only when trying to set omnipresent for an icon). The icons set to omnipresent will be marked with a triangle in the upper left corner, having the color of the IconTitleColor. An icon can be set to omnipresent, only if its position is free in all the workspaces, else you will be informed of the problem and asked to fix it first. Also when dragging an omnipresent icon around in Clip, all the icons docked in all the workspaces are shown while the dragging is done, to let one easily see where are free slots in all workspaces. For advanced users, there is also a shortcut to set/reset the omnipresent state of an icon: just use "Shift+MiddleButton" (button2) on the icon you want to change. In this case only the mark in the upper left corner will appear in case of success, or nothing will happen if icon cannot be made omnipresent (advanced users are expected to know why the icon failed to be made omnipresent, so they don't need a panel to explain them why ;) ). Now before you load your gun to start a flame war because this is against your principles you love so much, please sit down and think that this is a feature, which, if you don't use, the old behavior of the Clip is totally preserved. It just adds some extra capabilities to the Clip for people who think that this is useful. XDND drop on dock support ------------------------- Support for XDE on dock is now replaced by XDND. To enable, edit src/wconfig.h --- 0.53.0 New Options ----------- ** MenuStyle MenuStyle=<style>; will change the menu texture style. <style> can be: normal (default): for the traditional one texture per item, with bevels in each singleTexture: for a single texture that spans the whole menu, with bevels in each item flat: singleTexture without the bevels ** ResizebarBack ResizebarBack=<texture>; where <texture> is any of the textures you normally use in titlebars and other places. If the style file/theme does not contain a ResizebarBack option, setstyle will automatically hack it so that wmaker will make the theme work like before. New crash dialog panel ---------------------- From now on, whenever a fatal situation appears, Window Maker will display a dialog panel to the user and let him choose what to do. The options are: - Abort and leave a core file (useful for debugging and getting backtraces) - Restart Window Maker (default behavior) - Start alternate window manager (the one defined as fallback, or if not possible fvwm or twm in this order). If it will not be able to restart or start the alternate window manager, it will abort and leave the core file. Application User Menu --------------------- Applications with an appicon can have a user defined menu. This menu will emulate keyboard events, and will be sent to the applications' window(s), thus the application must accept key combinations (CTRL+N for instance). To enable this feature, #define USER_MENU in src/wconfig.h and place menu files in ~/GNUstep/Defaults/UserMenus (/usr/local/etc/WindowMaker/UserMenus globally). The user menu is in PropList format and the filename is in: <instance name>.<class name>.menu or application's main window. (Example: the menu for xcalc would be - xcalc.XCalc.menu) Example user menu syntax: ( "Calculator", ("Put 1", SHORTCUT, "2"), ("Functions", ("Put 2", SHORTCUT, "2"), ("Put 3,4 and 5", SHORTCUT, (3,4,5)) ), ("Exit", SHORTCUT, "Control+q") ) --- 0.52.0 Appearance Editing in WPrefs ---------------------------- Added Appearance/Texture editing capability in WPrefs. Workspace background selection is not yet finished. Themes ------ Removed all themes from the source tree, and moved them in a separate package. You can download the new package from the same place as this package: ftp://ftp.windowmaker.info/pub/beta/srcs/ Look after WindowMaker-extra-<version-number>.tar.gz Also WindowMaker-extra pack include the old WindowMaker-data.tar.gz which only contained icons. Look for the greatest version number when you download this package. get-wraster-flags script change ------------------------------- The name of the options passed to get-wraster-flags changed, to allow a better name compatibility with the naming conventions used by other software. The name change was as follows: --lflags was changed in --ldflags To allow backward compatibility, with already written software, the old --lflags option is still recognized, but you are encouraged to move the the new --ldflags. --- 0.51.2 New Themes ---------- Added 2 new cool themes (actually I added in 0.51.1, but forgot to put it here...) from largo (LeetWM) and BadlandZ (STEP2000). Full Screen Maximization ------------------------ The FullMaximize window attribute will allow the window to be maximized to the full size of the screen (ignoring anything like titlebar, resizebar, dock, panels etc). It should be useful for programs that must use the whole screen, like games or things like presentation programs. --- 0.51.1 KDE Application Menu script --------------------------- wkdemenu.pl 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). Title text drop shadow ---------------------- drop shadow option added for titlebar text. This is a compile time option which needs to be defined in src/wconfig.h after you run configure and before you run make. New options and syntax for your WindowMaker domain file are: Shadow = yes/no; FShadowColor = <color>; PShadowColor = <color>; UShadowColor = <color>; MShadowColor = <color>; The shadow option is dynamic (no need for a restart). MShadowColor is for the menu title text. libPropList ----------- WARNING!!! libPropList was removed from the Window Maker distribution and is being distributed separately. If you don't have it installed yet, get it from ftp.windowmaker.info/pub/libs and install before building Window Maker. signal handling change ---------------------- SIGHUP will exit wmaker instead of restarting it!!! This is because GNOME expects the window manager to exit instead of restarting... Complaints should go to gnome people. SIGUSR1 will restart wmaker now. script change ------------- WINGs-flags was removed, and replaced by get-wraster-flags. Please remove WINGs-flags from your system, since it was obsoleted by get-wraster-flags. Continuing to use WINGs-flags can lead to hazardous effects, since is no longer updated. docklib ------- docklib is a little library for making dock applets. It's in the docklib-0.0.tar.gz file. Unpack it and read the README file there. Option Changes -------------- Removed OnTopTransients option Added OpenTransientOnOwnerWorkspace Olwm Hint Support ----------------- OPEN LOOK(tm)/olwm hints support was added. Read the appropriate section in the README file. --- 0.50.1 New option for WorkspaceBack. mpixmap is the same as spixmap, but it will scale the pixmap by keeping the aspect ratio (maximize or maxpect). The option only works for workspace backgrounds. Also added IGNORE_PPOSITION compile time flag, which is equivalent to NoPPosition from fvwm. --- 0.50.0 KDE and GNOME ------------- Added full support for GNOME and KWM hints. Read the INSTALL file to see how enable them. Everything in the so called GNOME window manager bla bla bla pseudo-spec is implemented. As for KDE stuff, it implements 90% of everything kwm does, adds some Window Maker specific extensions to it and still uses half of the memory kwm does, which should be enough to let you dump kwm ;) For details on what exactly is implemented, see comments in src/kwm.c Read the README.KDE file for more information. WARNING: Some KDE hints are badly designed, so doing things like using kpanel's desktop switcher/pager and Window Maker's internal workspace management functions to create, destroy and rename workspaces at the same time might cause unknown effects. To be on the safe side, only use either of them to manage workspaces. Switching workspaces is hopefully, safe, so you can switch workspaces from wherever you want. Workspace Specific Background Images ------------------------------------ Use the WorkspaceSpecificBack to set background images for specific workspaces. The WorkspaceBack is used as the default background image. Example: WorkspaceSpecificBack = ((solid, red), (cpixmap, ship.jpg, gray), (), (dgradient, red, blue)) This will set the background image of workspace 1 to (solid, 0), 2 to ship.jpg and 4 to a gradient. Workspace 3 and other workspaces will have the image defined by WorkspaceBack. Note that this uses quite some memory... setstyle/getstyle ----------------- setstyle now accepts the -nofonts flag, which will load the style file ignoring all font related options. Example: setstyle -nofonts Blabla.style getstyle can be used to create theme packs. See the usage in the WindowMaker/README.themes file. New Texture Type ---------------- Textured gradients will tile a texture pixmap and combine it with a gradient, using an arbitrary opaqueness. Syntax is (thgradient, <file>, <opaqueness>, <color1>, <color2>) (tvgradient, <file>, <opaqueness>, <color1>, <color2>) (tdgradient, <file>, <opaqueness>, <color1>, <color2>) where: <color1> and <color2> are the colors for the gradient, <file> is the texture file and <opaqueness> is the opaqueness to merge the texture with the gradient, ranging from 0 to 255. Example: (thgradient, "BlueImage.jpeg", 120, white, black) The BlackTexture style and Checker theme are examples. Hints: You can use any type of pixmap file for this, but small (like 64x32) grayscale pixmap files should get the best results (fast and low memory usage). You can use color pixmaps, but it is harder to get the desired effect with them. Be warned that this texture type is the slowest. New Options ----------- IconTitleBack and IconTitleColor control the color of the miniwindow title. Both of them are colors. Example: IconTitleColor=white; IconTitleBack=black; Since this introduces an incompatibility in themes and getting flamed by the themes ppl isn't the most pleasant thing ("Whaddafuk you're thinking!? You just broke 500 themes!!!" ;) the setstyle command was hacked so that it will make old themes work as before, by trying to automatically set the above options. Note that in some cases it will not have exactly the same results as before. StartMaximized window attribute. Will maximize the window when it is mapped. AutoRaiseLower option for the Clip. This allows automatic Raise/Lower of the Clip icons when the mouse pointer enter/leave the Clip. To avoid unwanted raising/lowering there is a time threshold before raising/lowering. The thresholds can be changed in wconfig.h by changing one or both of AUTO_LOWER_DELAY and AUTO_RAISE_DELAY (expressed in milliseconds). For example if you set AUTO_RAISE_DELAY to 0, then the Clip will be raised as soon as the mouse pointer enters it's area. Setting AUTO_RAISE_DELAY to a very big value, will make the Clip to practically do not auto raise unless clicked, but to be automatically lowered after AUTO_LOWER_DELAY (ms) when leaved. New ThemePack Format -------------------- Starting with this version, a new format of themes is being supported. Before you open pine and start composing your flame, rest assured that the old format is still supported. The new format is documented in the WindowMaker/README.themes file. Root Menu --------- The -noext option for OPEN_MENU will strip whatever is after the last . in file names that appear on the opened directory. So, OPEN_MENU ~/bg WITH xv -root -quit will create a menu with all the images in ~/bg without the extension. --- 0.20.3 Icon (miniwindow) stacking -------------------------- If you want miniwindows to reside under normal windows, edit wconfig.h and change WNormalLevel (just grep for it) to WDesktopLevel 5 Button Mouse -------------- If you have a 5 button mouse and want to give some utility for the extra 2 buttons, edit the appropriate line in src/wconfig.h Clicking Button4 in the root window will switch you to the previous workspace and Button5 will do that for the next. Option Changes -------------- put NoWindowOverDock back KeepOnBottom window attribute -static command line option --------------------------- wmaker -static will start Window Maker in static mode. This will prevent wmaker from checking or making any configuration changes. That makes it possible to run wmaker before running wmaker.inst Hysteresis for menu item selection ---------------------------------- Hopefully it's intelligent enough, so you won't notice it. In case you want to know what's it, it's equivalent to that (insanely long) 2 second delay present in that Windoze95 menu, but more useful than annoying (I hope :). To see it, do the following with your current wmaker version and later with 0.20.3: - open the apps menu and stick it - click in the item for the "Workspaces" submenu and hold - drag the mouse to the 4th or bigger entry (like "Workspace 4") in a straight line, trying to select the target item before the submenu is unmapped when you dragged over other items in the main menu Window Shortcuts ---------------- Window shortcuts are shortcuts to arbitrary windows. You can make up to 4 shortcuts. To assign a previously bound shortcut to a window use the "Select Shortcut" submenu in the window commands menu. If the shortcut is not yet assigned for any window, you can hit the shortcut to assign it to the active window. The shortcut will do the same as clicking in an entry in the window list menu. The keys for the shortcuts are defined in the ~/G/D/WindowMaker file or in WPrefs.app Option names are: WindowShortcut1Key through WindowShortcut4Key --- 0.20.2 The name of WindowMaker was changed to Window Maker. Window creation animation disabled by default. xdaliclock -shape ----------------- If you use it edit src/wconfig.h and #define OPTIMIZE_SHAPE or disable the titlebar and resizebar for the window. OPTIMIZE_SHAPE will remove the flickering for xdaliclock and other programs that change their shapes often, but will increase network traffic considerably. So, if you use xdaliclock from a remote machine it can get slow. Applications Menu ----------------- The applications menu will now use the shell in the SHELL environment variable to execute EXEC menu commands. If it is unset (I think it's always automatically set by the shell program) it will use /bin/sh Extra fancy icon kaboom :) -------------------------- Edit src/wconfig.h and #define ICON_KABOOM_EXTRA to get more effects for the icon undocking animation. Options for superfluous stuff are even more superfluous, so this will not become run-time. XDE drag and drop support ------------------------- Support for XDE drag and drop was added (by "]d" <id@maliwan.org>). To enable, edit src/wconfig.h The support works with gtk 1.1.2 libPropList ----------- libPropList will now be built automatically by wmaker. Which means the (simplified) building process is now: ./configure make make install instead of: tar xzf libPropList.tar.gz (cd libPropList; make) make make install You also don't need to worry about GNOME libPropList incompatibilities anymore. Bug with focus lost in sloppy focus fixed ----------------------------------------- The bug only occurs in sloppy or auto focus modes, with AutoFocus disabled and Superfluous enabled. There is no easy/clean way to fix this, so Window Maker will disable the animation of window creation if the focus mode is either sloppy or auto AND AutoFocus=NO. If you want the animation, enable AutoFocus or use manual focus mode (preferred). The NoWindowUnderDock option was removed ---------------------------------------- To obtain the same result, use the "Keep Dock On Top" option in the dock menu. Persistent Program Supplied Icons --------------------------------- Application supplied icons are now stored, so that the dock will keep showing them after the app is exited. The icons are stored at ~/GNUstep/Library/WindowMaker/CachedPixmaps Sound support ------------- Sound support is now on by default. Even if you don't use sound the overhead is very small, and has no impact on performance. If you still want to optimize it and remove a few hundred of bytes, then use --disable-sound or --enable-sound=no options when you configure Window Maker. --- 0.20.0 Multihead support. wmaker will now manage all screens that are attached to the display. ------------------------------------------------------------------------------ It does so from a single process (instead of spawning a new process for each screen, like fvwm does). This keeps memory usage a lot lower than fvwm. State files have a suffix .n, where n is the number of the screen. Since I don't have a real multiheaded machine, it probably has bugs. Superfluous ----------- Yet another useless superfluous animation. Find out what exactly it is by yourself :) exitscript ---------- ~/G/L/W/exitscript will be called automatically when wmaker is exited. New runtime options ------------------- 1. Miniaturization animation is now selectable by a run-time option Add a line with IconificationStyle = <style>; to your WindowMaker configuration file. <style> can be one of: Zoom, Twist, Flip or None Case doesn't matter, and default is Zoom. 2. Edge resistance. This can be controlled by setting: EdgeResistance = xxx; in your WindowMaker configuration file. xxx is an integer greater than 0 and represents the number of pixels of edge resistance. Setting it to 0 (default) will disable this feature. New theme --------- A new theme named Night, is available in this distribution. --- 0.19.3 GIF support was added. You will need libgif 2.2 to use it. cpixmap added. Syntax is the same as tpixmap or spixmap --- 0.19.2 getstyle will include IconBack info in Style files. --- 0.19.0 libPropList was updated. If you have it installed, you must upgrade or WPrefs will crash because of bugs in libPropList. New options ----------- Balloons! --------- WindowTitleBalloons = YES; will enable balloons for window titles that are not fully visible. MiniwindowTitleBalloons = YES; will enable balloons for miniwindow titles. AppIconBalloons = YES; for application icons (docked or not) IconPosition ------------ IconPosition (the position of the icons) is specified as: IconPosition = c1c2c3; where: c1 can be t or b (meaning top or bottom) c2 can be l or r (meaning left or right) c3 can be v or h (meaning vertical or horizontal) case is insensitive. For example, IconPosition = blh; is the old iconPosition position. IconPosition = trv; will place the icons over the Dock. New window attribute -------------------- EmulateAppIcon = YES; will make the window have an application icon. Only use this option for fully specified windows (like rxvt.Rxvt). NEVER use in generic window specifications (like * or rxvt). You must restart the application for the attribute to take effect. WPrefs.app ---------- Read WPrefs/README --- 0.18.1 Boolean values have changed!!! YES, Y and any non-zero integer will mean TRUE and anything else (including True) will mean FALSE. This is to conform to the OpenStep values used for booleans and not cause headaches later, when GNUstep apps also starts using defaults and users will try using True which won't get recognized. --- 0.18.0 Clip ---- Clip button layout was changed. IT IS TEMPORARY AND THE DEFINITIVE LOOK WILL BE DIFFERENT!!! libPropList ----------- More bugs were fixed in it. Upgrade the library if you have an older version installed, with the one included. Property list menus ------------------- Format for property list menus has changed! The redundant array for submenus was removed, so a menu that looked like: ( Applications, ("Xterm", EXEC, "xterm"), ( (Paint, ("Gimp", EXEC, "gimp"), ("XV", EXEC, "xv") ) ) ) must be changed to: ( Applications, ("Xterm", EXEC, "xterm"), (Paint, ("Gimp", EXEC, "gimp"), ("XV", EXEC, "xv") ) ) Misc ---- NUMLOCK_HACK is back. This time it works and is enabled by default. If you think you don't need it and promise me that you won't send "bug" reports saying that shortcuts stop working after a while, you can disable it ;) It will save some memory and CPU. Configuration ------------- Removed the SwapMenuButton option and added 3 finer grained options: SelectWindowsMouseButton WindowListMouseButton ApplicationMenuMouseButton Values that can be used are Left, Middle, Right and Button1 through Button5 Left is equivalent to Button1, Middle to Button2 and Right to Button3 Removed the WorkspaceChangeDelay option and corresponding action. Removed AClipColor and IClipColor Added the SelectKey back Changed default binding of Window commands menu from F10 to Control+Escape --- 0.17.4 Misc ----- libPropList has changed! Upgrade it before compiling wmaker. Hopefully the bugs that caused wmaker to crash if an error is found in the config files is fixed. If you do crash wmaker with a bad file, please try to find out the smallest possible portion of the file that still crashes wmaker and send it to me. New Options ----------- PixmapPath was split to PixmapPath and IconPath. PixmapPath is the path for the pixmaps used as textures and IconPath is for the icons. Don't forget to add IconPath to your current configuration file. There's also a new library in ~/GNUstep/Library/Icons. You should place your icons there, since icons are not a WindowMaker specific resource. DontConfirmKill=YES; will disable the confirmation panel for Kill --- 0.17.3 Interface Changes ----------------- Unhide Here in the appicon menu was changed to be the first entry. This way you can unhide the appicon with a single click without even moving the pointer. Clip Commands ------------- The collect icons commands was renamed to attract icons and the attract icons options was renamed to Auto attract icons. The Remove Selected Icons was renamed to Remove Icon(s). It will act as before if some icon is selected and will remove the clicked icon (without confirmation) if it is not. Added a Keep Icon(s) command that will keep the selected icons if any is selected and the current one if none. The Move To command was renamed to Move Icon(s) To. --- 0.17.0 If you have libPropList installed, you might want to re-install it, replacing with the included libPropList. It has a small bug fix. Misc. Changes ------------- Removed --with-gnome and made MWM_HINTS defined by default. This means that "GNOME support" will work with no additional flags passed to configure. Added support for KDE, by adding a DisableWorkspaceMouseActions option. Set it to YES and run krootwm to be able to use everything in kfm. Shortcuts for Root Menu ----------------------- There is now a new SHORTCUT optional keyword for the menus. For example, you can bind Control-F1 to xterm with: "XTerm" SHORTCUT Control+F1 EXEC xterm or F2 to ARRANGE_ICONS with: "Arrange Icons" SHORTCUT F2 ARRANGE_ICONS All commands allowed in the menu file accept the keyword, except for MENU and OPEN_MENU Interface Changes ----------------- ** Configuration of docked applications is now done in a panel instead of in the menu. ** Added a command menu for application icons ** Shift double-click on the application icon will unhide the app in the current workspace. Option Changes -------------- NotMiniaturizable option changed to NoMiniaturizeButton NotClosable option changed to NoCloseButton Speed options values are now UltraFast, Fast, Medium, Slow or UltraSlow ^^^^^^ Removed the Select keyboard binding. You can access it in the window commands menu. Removed the ClipMaxIcons option and made it a compile time option. Removed the ConstrainWindowSize option Renamed NoSound to DisableSound Renamed NoAutowrap to DontLinkWorkspaces Renamed NoDithering to DisableDithering Renamed NoAnimations to DisableAnimations Removed the LeftHanded option and added a SwapMenuButton option. SwapMenuButton will make the rubberband selection in the root window be bound to the right button and the root menu to the left button. New way to display temporary icons ---------------------------------- The icons that are attracted by Clip, but will not be kept after the application close, are now using a different color for shading, unlike previous version that always used white. This will improve look for very different color combinations, and allow the user to control the look of the shaded icon. The color used for shading the icons is computed as follows: First a color is computed depending on the IconBack type: - for solid the color is the solid color itself. - for simple gradients the color is (from_color + to_color)/2. - for multiple gradients, the color is the first color in list. - for pixmaps, the color is the solid color specified for that pixmap. Then the color is made lighter by multiplying each red/green/blue filed with 1.7 and limiting each field to 0xff in case they exceed this value. Then this new color will be used by superposing it with the icon we want to shade, using a proper alpha value. To control the color for shading is simple: - In case of multi gradients you just need to put the first color, as the color you like. WindowMaker do not use the first color in the list to directly build the gradient, but only when it needs a solid color for something (like in this case). - For pixmaps, put the needed color as the solid color the syntax for pixmaps require. This color is also not used when displaying normal icons, just when solid colors are needed (like this case). - For solid color, or simple gradients, in case the color it uses after computing is not good enough, you can always convert the solid or simple gradient to a multi gradient with the same look, and use that one. In this case is simple, just put the needed color as first color in list. Please note that this will not slow down WindowMaker, because the IconBack is read only once at startup, and then only if it is changed. After reading it WM will construct the image of the tile, and use the image instead of recomputing the gradient every time. Here are 2 examples of converting solid or simple gradient to a same looking multi gradient: IconBack = (solid, Blue); will become IconBack = (mhgradient , LightBlue, Blue, Blue); using LightBlue as color for shading. IconBack = (dgradient, "#284569", "#082420"); will become IconBack = (mdgradient, "#183454", "#284569", "#082420"); looking the same, but using #183454 for shading. New Sound Server Location ------------------------- The sound server new URL is http://www.frontiernet.net/~southgat/wmsound Also it seems to be running on FreeBSD too (with little changes maybe). --- 0.16.1 WINGs ----- The path for the WINGs resource files was changed. If you don't do make install, you must move /usr/local/share/WindowMaker/Resources to /usr/local/share/WINGs New Options ----------- The following new options are available: NewStyle = Yes/No; (static) Replaces --enable-newstyle DisableDock = Yes/No; (static) Same as -nodock command line option. DisableClip = Yes/No; (static) Same as -noclip. Superfluous = Yes/No; (dynamic) Replaces --enable-superfluous. NOTES. - The static options are only read at startup. Changing them, needs to restart, so they will be accounted. - DisableDock and DisableClip have lower precedence than -nodock -noclip command line options. If both option/command line option are given, then the command line option will be accounted. Start Hidden option ------------------- The start hidden option was fixed, and made to be an application wide option. It will apply to every window the application owns. Also its place in the Attribute Inspector panel, changed accordingly, to reflect this. The start miniaturized is however still applying to particular windows of an application, unless the option is set for the class. Start miniaturized, will override start hidden if both set. IMPORTANT NOTE. Because of the way Netscape Communicator is implemented, it is NOT possible to set the start hidden or miniaturized flags for it. This is because Netscape chooses to send a second map event to the window it maps. This makes the window to receive a second map request and to be unhidden or maximized back, immediately after it was hidden or miniaturized by WindowMaker at startup. --- 0.16.0 Misc. Changes ------------- The NextMenuBehaviour option was renamed to WrapMenus The WorkspaceTiedMiniwindows option was renamed to StickyIcons The .tif files were renamed to .tiff Selecting Mini Windows ---------------------- Now miniaturized windows can be selected as well as normal windows. You can do this by Shift-Click-ing them. They will be marked, and will follow you through workspaces like normal selected windows do. Miniaturizing a window will no longer deselect the window, but will place the icon and mark it as selected. The only difference between miniaturized and normal window selection is that for the moment the rubber-band selecting method works only for normal windows. Icon Selection Panel in Attributes Editor ----------------------------------------- Now, selecting icons is as easy as clicking in the file name in a list. Simplified Options ------------------ IconSlideStep, IconSlideSlowDown and IconSlideDelay were merged to IconSlideSpeed MenuScrollStep and MenuScrollDelay were merged to MenuScrollSpeed ShadeStep and ShadeDelay were merged to ShadeSpeed Valid values for them are: Fast, Normal, Slow or UltraSlow If you want to fine tune the values, they can be changed in wconfig.h Send me your set of values with an indication of how fast is your hardware, so that I can make the default values more adequate. New Window Attributes --------------------- Added StartMiniaturized and StartHidden as window attributes and removed the previous implementation. Also removed the dock menu entries. They are now settable in the Attributes Panel. Also added DontSaveSession attribute. This way, you won't end up with multiple unwanted copies of the same app after the previous session is restored. I start X with a xterm in .xinitrc instead of wmaker, which will cause the xterm restored by wmaker be duplicate. Just add -name something to the xterm started form .xinitrc and mark DontSaveSession=YES for that window. User Specifiable Visual IDs --------------------------- wmaker now supports different visuals than the default one. It isn't of much use for most people, but can be useful for lucky SGI users who want it to use TrueColor instead of the default PseudoColor. wmaker -visualid VISUAL_ID where VISUAL_ID is the hex code for the visual you want. Note: I don't have an SGI box and haven't tested it... Starting Workspace ------------------ The starting workspace is identified in the following order: 1. If the app is omnipresent will be mapped on the current workspace. 2. Else if the application have a StartWorkspace option set as attribute then this one will be used. 3. Else, if the application was started from Clip, the workspace on which the Clip from where it was started is used. 4. Else the current workspace is used. Restoring saved sessions will always use the saved workspace, no matter what other options are, except omnipresent. --- 0.15.1 Workspace specific mini windows ------------------------------- The minimized windows can be workspace specific, being more consistent with the rest. This is because minimized window represents just another state of a window (like normal or shaded), which all are workspace specific. This (or the old "present anywhere") behavior can be set using an option in the WindowMaker database: WorkspaceTiedMiniWindows = Yes/No; New way to animate the blowing icons ------------------------------------ There is now a compile time option that allows one to set how the icons are animated when detaching from dock/clip in superfluous mode. By default the classic "Falling pieces" animation is used. If SPREAD_ICON is #define-ed in wconfig.h, then a "Spread in four directions" animation is used instead. Take a look at the section where this is described in src/wconfig.h By default there is #undef SPREAD_ICON to select "Falling pieces" animation. Auto Collapse for Clip ---------------------- The clip now supports an option named "Auto Collapse" which can be set from the clip main menu. When set, clip will stay collapsed, and will show itself when the mouse moves over it. While the mouse is over it, or over any of the icons attached to the clip, the clip will stay uncollapsed, letting you to access the attached icons. This is not true for applications like asclock, or applets of that kind, because the icon window do not belongs to WindowMaker, but to the application itself. For such icons you must keep the mouse over the icon groundplate, else it will collapse back. But usually these type of icons will not stay in a collapsed clip, since one needs to see what they show. When the clip is leaved it will collapse back after a delay of 1 second, unless the mouse is moved back to the clip area. The delay can be set modifying AUTO_COLLAPSE_DELAY in wconfig.h. Default is 1000 (ms) which means 1 second. --- 0.15.0 Changed name from Fiend to Clip ----------------------------------- All occurrences of word Fiend with or without capital F were replaced with the corresponding Clip (same capital). This affects all configuration files under ~/GNUstep that contain this word. It can be referred as "Workspace Dock" too. New option in Clip menu, and extended Clip behavior --------------------------------------------------- The following new items are available in the dock menu: 1. Attract Icons 2. Keep Attracted Icons 3. Collect Icons 4. (Un)select All Icons 5. Remove Selected Icons 6. Move To 7. Start miniaturized (also available for regular dock) 8. Start hidden (also available for regular dock) 9. Selected 10. Set icon... (also available for regular dock) Here is what they do: 1. "Attract Icons" will let the Clip to attract and attach any new appicon that is created when an application starts. It will not do this if the Clip is full. If the Clip is Collapsed then the appicon will be hidden after it is attached. 2. "Keep Attracted Icons" will tell the Clip to keep the attracted appicons, after the application is closed. Without this the appicons will vanish, leaving the Clip in the original state. If you move an appicon that was attracted from Clip to regular Dock, it will be kept when closed, no matter what "Keep Attracted Icons" is set to in Clip. 3. "Collect Icons" will collect all appicons that are not yet attached to Dock or Clip, and attach them to the current workspace Clip. The value of "Keep Attracted Icons" will apply when applications close. If Clip is collapsed, the appicons will be hidden. 4. "(Un)select All Icons" will select all icons in the clip if none is selected, or it will deselect all selected ones. The selected icons are marked using a small triangle in the bottom right corner of the appicon. The color of the mark is set using SClipColor in WindowMaker domain database. 5. "Remove Selected Icons" will remove from Clip all selected icons. The ones that still run, will be detached, all the others will vanish. 6. "Move To" will transfer all selected icons to another workspace and attach them to the Clip in that workspace. If none is selected, only the one the mouse was pressed on will be moved. 7. "Start miniaturized" will launch (or autolaunch if set) the application in a miniaturized state. 8. "Start hidden" will launch (or autolaunch if set) the application in a hidden state. Note that only one of the two can be set at a time. 9. "Selected" can be used to toggle the selected state of the appicon individually. The same can be achieved using Shift-LeftClick on the appicon. In fact the intended way of toggling the selected state is by using the Shift-LeftClick on icon. The menu entry is just another way to do the same. 10. "Set icon..." will allow one to set the image for the appicon. The image will be updated without restart, and also all appicons in the same instance.class as the one we set for, will be updated. So a simple way of avoiding the screen to be filled up with appicons is to set the "Attract Icons" in the Clip. Also the "Keep Attracted Icons" can be set to No, so the attracted icons will be deleted when application exits, thus leaving the Clip clean. If also one to not want to see the appicons that keep filling the Clip, he can set the Clip to be Collapsed. Getting rid of unneeded icons in Clip is as simple as selecting them individually using Shift-LeftClick, and then using the "Remove selected Icons" entry in menu. Support for different visuals. ------------------------------ WindowMaker is now able to support any visual, except DirectColor, in any depth from 1bpp to 32bpp. One can start the X server with different visuals, by passing the X server the right option. For XFree 3.3.x is -cc <id>. WindowMaker is not yet able to choose a different visual from the Default one on a given screen, but can use any default visual it finds, except the direct color visual. For example starting X like (for XFree 3.3.x, and if the driver for the card supports this. Read the man page for your X server): startx -- -bpp 8 -cc 0 will give you the StaticGray visual. startx -- -bpp 8 -cc 1 will give the GrayScale visual and so on. Wrlib code is now generic, and will support any visual except DirectColor in any depth. Programs written with wrlib can work on different visuals from the default visual for a given screen. Behavior in different visuals can be tested using the testgrad program in wrlib subdirectory in distribution. testgrad -h will show the usage. Multidiagonal gradients are also implemented now in wrlib, and a new algorithm is used to speed up the generation of diagonal gradients. New arrangement of the directory structure under ~/GNUstep/ --------------------------------------------------------------- To better adapt to theme support the directory structure changed under ~/GNUstep/Library/WindowMaker 1. Style directory moved to Styles. 2. Added the following directories: Backgrounds, IconSets, Pixmaps, Sounds and Themes. 3. The .style files no longer get copied in the user's Styles directory. Instead they are read from the global /usr/local/share/WindowMaker/Styles directory. Under ~/GNUstep/Defaults the following changes occurred: 1. A default WMState is installed by wmaker.inst. It contains the dockit program assigned to the top icon of the dock, and the wmsetbg program assigned for the drop command on both dock's and clip's main icon. Double clicking the dock's main icon will bring up dockit that will let you dock any application that do not have an application icon. Dropping an image on dock's or clip's main icon, from an Offix DND aware application, will put the image on the background tiled, and will update WindowMaker domain database file. 2. Syntax of WMState changed a little. The old position will not be restored when you will first start the new version, but after that it will be normally remembered. This is because now the main clip icons is only saved once, not for every workspace. You should replace Fiend with Clip in any place where it appears, if you want to keep the old WMState file, else it will not work. 3. At compile time, it will detect if you have support for tif, and will install a WMWindowAttributes with corresponding image name extension (.tif or .xpm). This is true only for pixmaps that come with the source distribution and get installed under /usr/local/share/WindowMaker/Pixmaps The menu file changed a lot. Old menu file will *not* work with new theme support, so please upgrade. New behavior of OPEN_MENU command --------------------------------- The OPEN_MENU command now supports the following 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. 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. // WITH is a required keyword!!! OPEN_MENU /some/dir [/some/other/dir ...] WITH command -options Please note that because of the 'WITH' keyword old menu files no longer work for the OPEN_MENU with a command. Theme support ------------- Theme support is now as easy as untar-ing a tarball in the right place. Because of the way OPEN_MENU works, they can be installed on a global shareable basis, or for personal user use. Themes installed under ~/GNUstep will be available only for a user, but if if they are installed under /usr/local/share/WindowMaker they will be seen by all users. This is also true for style files, background images, pixmaps, etc that get installed under /usr/local/share/WindowMaker. Themes can be saved or loaded using the Appearance menu. Also support for different IconSets is available. You can save or load a new IconSet using the Appearance menu. Setting background images is now as simple as putting the images in the right place (~/GNUstep/Library/WindowMaker/Backgrounds or /usr/local/share/WindowMaker/Backgrounds, or any other place in your PixmapPath). Then use the Appearance menu. They will be instantly available since they are opened by a OPEN_MENU command. Also the image do not need to have a .jpg or any other extension. It will be recognized anyhow. As an example please see the OpenStep theme supplied with WindowMaker. The OpenStep image is a jpeg file without extension. Please keep in mind that anything under /usr/local/share/WindowMaker will be available for all users. New options for wmsetbg and getstyle ------------------------------------ wmsetbg now accepts the following options: usage: wmsetbg [-options] image options: -d dither image -m match colors -t tile image -s scale image (default) -u update WindowMaker domain database -D <domain> update <domain> database -c <cpc> colors per channel to use By default, it will try to guess if dithering is needed or not and proceed accordingly. Using -d or -m will force it to dither or match colors. Dithering for more than 15bpp is generally not needed, and will only result in a slower processing. Don't use dithering except when needed, because it is slower. Else rely on wmsetbg which will detect if dithering is needed and use it. -u will update the WorkspaceBack in the default database domain file in ~/GNUstep/Defaults/WindowMaker, and let WindowMaker refresh the screen. Please note that this option only works under WindowMaker, and will have no effect under other window managers, since it rely on WindowMaker to update the image after it reads the updated defaults database. -D <domain> is same as above, but will update the domain <domain> instead of the default WindowMaker domain. -c <cpc> will set the color per channel to use. Only needed for PseudoColor visuals. WindowMaker will automatically pass the value read from the WindowMaker domain database. getstyle now have the -t option, that instructs it to read all options related to theme. Without -t getstyle will read only style options that means it will not read WorkspaceBack and IconBack. Use -t when you want to make a theme and need all theme options to be saved. Else it will extract just a style file. Session management support -------------------------- Two new commands are available for use in menus: SAVE_SESSION and CLEAR_SESSION. SAVE_SESSION: will take a snapshot of all running applications, and their current hints (shaded, hidden, minimized, geometry and workspace they are on), and save it inside the WMState file. Also the current workspace we are on is saved. The applications that are running and were started from dock or clip are marked, so they will be attached to the corresponding dock/clip when restored. This state is restored every next session, until a new one is saved or CLEAR_SESSION is used. CLEAR_SESSION: will clear any previous saved session. There is also a run time option named SaveSessionOnExit = Yes/No; that allows one to automatically save the state of desktop when leaving WindowMaker. This way next session, the state of the desktop before last exit is restored. Please note that if this option is set to Yes, than any manual saving of the state, or any clearing of the state will be overridden when exiting WindowMaker. These options are available under the "Workspace" menu. User WindowMaker configuration files are now merged with global ones -------------------------------------------------------------------- When starts WindowMaker will look for database domain files under $GNUSTEP_USER_ROOT/Defaults or ~/GNUstep/Defaults to be read. (In this order). If they are not available then it will scan for them in $GNUSTEP_LOCAL_ROOT/Defaults, $GNUSTEP_SYSTEM_ROOT/Defaults or /usr/local/GNUstep/Defaults (in this order). Even if the file was found or not, it will always load the corresponding domain file under /usr/local/share/WindowMaker/Defaults. Then if the user file was found it will merge it over the global file, else the global file will be used. This way any settings that are set by the system administrator in the shared file will be available for users that do not have them in their config files. Any option the user have in his config file will override the one in the shared domain file. So any new run-time options that appear in WindowMaker domain, do not need to be set in all user files, except the ones the user wants a different behavior from the default set for all users in the shared file. Also it is possible for the user to not have any personal domain databases, and the global shared ones will be used, but it still needs to have the directory structure, so WMState gets written on session exit. So all it needs to have is ~/GNUstep/Defaults directory available. New behavior of the Slide Icons ------------------------------- Animation constants are now run-time. They are: IconSlideDelay = 0; IconSlideStep = 5; IconSlideSlowDown = 50; To better adapt both slow and fast machines the behavior of sliding icons changed in the following manner: Old one was to keep moving the icon with a constant step (default 5 pixels) until it reached the destination. Now it will use a new parameter named IconSlideSlowDown to speed up or slow down the moving. Instead of moving it with a constant step it will use IconSlideSlowDown to divide the distance to the destination, and use this value as the first step. Then is will compute the remaining distance and will again use IconSlideSlowDown to divide it and get the new step. And so on. When the step to move becomes smaller than IconSlideStep, IconSlideStep will be used further until the destination is reached. This way a nice deceleration effect is achieved, since while the icon approaches destination, it will use smaller steps, gibing the illusion that the icons is moving slower. IconSlideDelay will give the pause between steps, and is expressed in ms. Giving large values to IconSlideSlowDown (>1024 for 1024x768 screen) will result in the old "constant step advance" behavior, since the computed step will always be smaller than IconSlideStep, and the last will be used instead. Making IconSlideSlowDown = 0 or 1, will result in an instant jump to the destination without any animation. Attribute editor ---------------- Because the icon images on screen automatically update after any change in WMWindowAttributes domain file, the use of both Save and Apply buttons is no longer needed. If one wants to just apply the setting to the current window only, he will only use the Apply button. If he wants them saved for all applications in the same instance and/or class the using the Save button will write them to disk, and automatically WindowMaker will update all the icons that need to be updated on screen. Sound support ------------- Some basic sound support is now part of WindowMaker. The sound server is not yet part of WindowMaker distribution, so you need to download it separately. This is because is Linux specific, and need some changes before it can be included. Until them if you have a Linux system and want to use sound, use the wmsound-0.5 available at http://www.geocities.com/SiliconValley/Bay/7874 Download that package, and only build the sound server there. DO NO APPLY ANY PATCHES FROM THERE!, because they are already applied. Just build the sound and copy the executable in /usr/local/bin Follow the rest of the install steps described there, except the patch-ing procedure. To enable sound for WindowMaker pass --enable-sound to configure. Also use NoSound = Yes/No; to enable/disable sound at run-time without killing the sound server. If you cannot set the sound to work yet, then is not for you. Wait until the sound server will be fixed and will be part of WindowMaker. New entries in WindowMaker domain database ------------------------------------------ The following entries have been added to the run-time options: SaveSessionOnExit = No; will autosave (or not) the session state on exit. WindowPlaceOrigin = "64, 64"; will offset all windows in auto or cascade placement mode with the value (in pixels) before placing them on screen. First is horizontal direction and second is vertical. This do not apply to windows that request a specific position on screen. This is useful if you want your Clip on the top left corner to not be overlapped by mapping windows. It will let it to have a row and a column of docked appicons near the screen edge, that will not be overlapped by windows. If you set it to "128, 128" it will have 2 rows and 2 columns not overlapped. NoSound = No; Enable/disable sound at run-time without the need of killing the sound server. MenuScrollDelay = 10; MenuScrollStep = 5; Constants for the menu scrolling animation. IconSlideDelay = 0; IconSlideStep = 5; IconSlideSlowDown = 50; Constants for the icons sliding on screen. Explained above. ShadeDelay = 0; ShadeSteps = 15; Animation parameters for shading a window. How many steps it will take, and the delay between steps in ms. DoubleClickTime = 250; The time for the double click to be considered so. Expressed in ms. SClipColor = "#6f8ae2"; Color for selected icons in Clip. All delays are expressed in ms. --- 0.14.1 *** Enhanced fiend clone. Here are the new fiend features: 1. Keys for raising/lowering the fiend, and their default values: FiendLowerKey = None; FiendRaiseKey = None; FiendRaiseLowerKey = None; All reside in WindowMaker configuration file. 2. Added possibility to launch the workspace menu with button1 click on the idle indicator of fiend, or with button3 click on workspace name on the fiend. 3. Added Control-button1-click on fiend's idle indicator, to create a new workspace and move to it. Same action as New item in Workspace menu. 4. Fiend's idle indicator do have a color that reflects its normal/collapsed state. 5. The delay between changing workspaces from fiend is now a run-time option: WorkspaceChangeDelay = 700; in WindowMaker configuration file. 6. Application icons can be moved between dock and fiend now. 7. The way workspaces are changed is controlled now by two run-time options: AdvanceToNewWorkspace=Yes/No; CycleWorkspaces=Yes/No; Both apply to either fiend navigating buttons or to next/prev workspace keybindings. Both default to No, and are in WindowMaker configuration file. 8. Also added possibility to advance to new workspace, no matter what value AdvanceToNewWorkspace have, with Control-button1-click on "next workspace" fiend button. *** Theme support *** Spixmap and tpixmap now work. Their syntax is: SomeStyleOption = (spixmap, file, color); SomeStyleOption = (tpixmap, file, color); - spixmap means scaled pixmap, so the image in the file will be scaled to adapt to the destination's size. - tpixmap means tiled pixmap, and the image from file will be tiled in the destination. file is searched in the PixmapPath, but can be a full path name. Color is used depending on which Style option is applied. For example in case of titlebars, color is used for miniwindows titles color. You are not restricted in selecting that color, but is better to put one that matches the overall color of the image. Currently they apply to all the options that accept (solid, color), or any type of gradient. This means they also apply to WorkspaceBack and IconBack, which allows theme support with the simple use of the setstyle and getstyle utilities. There is no need for an extra theme manager, just to include the needed options in the style files. In case of WorkspaceBack, color is used to be set in the background until the image gets loaded and displayed. This is to avoid the stippled screen the X server shows, in case the image is big and loads slow. There is a small utility in the util directory, named wmsetbg which is used to set the background image. This is needed for WindowMaker not to freeze while loading and scaling the image. Currently it is hardcoded in WindowMaker to use wmsetbg to set the background image, and is better to use it since is smaller that other image manipulation programs, and it is compiled with support for same image types as WindowMaker. Since it comes and is installed with WindowMaker, there will be no need to download and use an external app, which also may not have support for the same image types as WindowMaker. --- 0.14.0 *** Fiend clone. The fiend clone is a dock extender, that lets you dock more than the default 10-12 icons in the dock. It actually lets you dock how many icons you like, with a current default of 25 per workspace. The fiend have different docked icons on every workspace. Also the fiend main icon shows you the workspace you're on and lets you navigate through the workspaces with the small green buttons on the low right corner. To save screen space the fiend can be collapsed to the main icon either from the fiend menu (available with right click on the fiend icons), or with a double left click on the main fiend icon, which is a toggle for the collapsed/uncollapsed state. Collapsed state is marked by a different title color. Pressing on the small buttons on the low right corner, the workspaces are changed in increments of 1 to the left or right, but keeping the button pressed over them will continuously advance through workspaces until the mouse is moved away from the buttons or the button is released. The delay between workspace changes is set by FIEND_WKS_CHANGE_DELAY in src/wconfig.h, and defaults to 700 ms. Unlike the dock, fiend can hold icons in any directions, and can be placed in any position on screen. When an icons is to be docked, but the position can be either in the dock or in the fiend, the dock will be used first, and the icon will be docked there. Here are the new run-time options introduced by the fiend: Files are located in ~/GNUstep/Defaults/ In WMWindowAttributes: "Logo.WMFiend" = {Icon = "Cone.xpm";}; - icon for the fiend In WindowMaker: FiendMaxIcons = 25; - the max number of icons in fiend per workspace FiendTitleFont = "-*-helvetica-bold-r-normal-*-10-*-*-*-*-*-*-*"; - the font used to show the current workspace FiendTitleColor = black; - color for the uncollapsed fiend title CFiendTitleColor = "#616161"; - color for the collapsed fiend title AFiendColor = "#00ba70"; - color for the workspace changing buttons, when active IFiendColor = "#008000"; - color for the workspace changing buttons, when idle For the ones who don't want to use fiend, there is a option to wmaker named -nofiend that can be feed to the command line when starting wmaker. (This is the equivalent for -nodock, but removes fiend clone). The syntax of WMState file have changed, but you don't have to worry because WindowMaker will know to read the old format and will save it and further will use the new one. You do not need to change your file, for the new version to work. --- 0.13.1 *** Enhanced Attribute editor. Now you can save defaults for all windows. Please note that only Icon, KeepInsideScreen, and sometimes NoAppIcon can be useful in a normal environment. But others may have other opinion ;) If you set AlwaysUserIcon default for all windows, note that apps like asclock, wmload, wmmail, wmrack, will show that icon instead of their window. Now Attribute editor also counts for defaults saved for all windows, (not only the default "No" for all options hardcoded in WindowMaker), when saving options for some instance.class specification. This is to save disk space by saving only the options that differs from global defaults (either defaults for all windows or the hardcoded valued in WindowMaker). Attribute Editor now updates on the fly the appicon image or creates/deletes the appicon if you set that options in the Inspector panel and Apply them. Modifying Icon file, NoAppIcon or AlwaysUserIcon and Applying them will result in the image update for the app-icon. Note that if you apply but not save these options, the miniwindow image will not be updated. This is because app-icon is always on screen so it can be updated, but miniwindow image is read from the defaults database and from disk every time you minimize the window and is destroyed when you restore. --- 0.13.0 *** Attribute editor is working ;). How it works is quite obvious. Anyway, here is a short description. Save - only save the configuration in defaults database and updates WMWindowAttributes Apply - only applies the values to the current window Revert - reverts the values from the defaults database Note that Save and Revert count for the window specification (instance & class), that are selected, and save/use the values for/from that. The Update button will show the icon who's name was typed in the textfield If the textfield is empty, will try to use the default icon. Also saving with and empty textfield for icon, uses the default icon. The Default button will use the icon in the textfield as default icon and save that value in WMWindowAttributes (Note that in this case is no need to press the Save button!). Also if the textfield is empty it will try to use the old default icon, if available. *** Now menus are saved between sessions, or over a restart. Just stick them to the desktop, and you will find them over sessions until you close them. Please note that only the root_menu, the window switch_menu and the workspaces_menu can be saved this way. *** Changed the lousy Windoze menu behavior. This applies to 'NextMenuBehaviour = NO;' Now the items are no more automatically selected if you launch the menu and the mouse is over some item, if you use a short click to launch the menu (shorter than the default DBL click time). If you use a longer click or keep the mouse pressed, the item under mouse will be selected after that delay, and launched when you will release the mouse button. If the click was short, a second one is needed to launch the item. *** Auto-arrange icons is now a run-time option Use AutoArrangeIcons = YES/NO; in 'WindowMaker'. *** Added configurable horizontal resize threshold Use HorizontalResizeThreshold = <n>; This will make the n pixels at the exterior side of the corner handle of the resize bar to restrict to horizontal only resize. Also you can use Shift-click&drag anywhere on the corner handle to restrict the resize only to horizontal. Note that the Shift-click&drag does not depend of the configured threshold and works completely independent. *** New option for OPEN_MENU (pipe from command) OPEN_MENU | /foo/bar/script will make a menu that is dynamically constructed by /foo/bar/script --- 0.12.0 *** New option for OPEN_MENU OPEN_MENU /foo/bar/pics xv -root -quit will make a menu with all files in /foo/bar/pics and precede them with EXEC xv -root -quit thus, making a menu with entries like: "marble.gif" EXEC xv -root -quit marble.gif "water.jpg" EXEC xv -root -quit water.jpg ... *** Multicolor gradients (mhgradient, colorX, color1, color2, color3, ..., colorn) (mvgradient, colorX, color1, color2, color3, ..., colorn) You can put any number of colors >= 2. colorX is a special color that is used as the solid color of the texture when wmaker needs a solid color (like in miniwindow title and resizebar) *** PixmapPath format changed What used to be PixmapPath = "/usr/local/share/pixmaps:~/foobar"; must now be PixmapPath = ("/usr/local/share/pixmaps", "~/foobar"); *** Added OffiX DND in dock Use the "Set drop arguments..." command in the menu and put a %d where the dropped object string should be substituted, like: xedit %d *** Escape thingies for menu and dock commands: %w - substitute with current selected X window ID %s - substitute with current selection %d - substitute with last dropped object %a(some text) - opens a input box with "some text" as a title. Then, the text typed will be substituted there \r, \n - substitute with corresponding characters *** The WMState file format has changed a little. The Command field for the dock application list is now a normal string, instead of a list. So, remove the parentheses and the commas for the command and join all the parts. Example: if it used to be Command = ( xterm," -geometry", "+10+10" ); then make it Command = "xterm -geometry +10+10"; --- 0.10.2 AutoFocus = NO; disables automatic focusing of windows when they are first mapped --- 0.10.1 titlebar gradients are in a single piece now the WMDock file was merged into the WMState file. You can insert this file in WMState and set it's key to Dock. For example, if your WMDock contains: { Applications = { {Command = (); }}; Position = "-64,0"; Lowered = NO; } and WMState contains: { Workspaces = ( "Workspace 1" ); } then you can merge both and have: { Workspaces = ( "Workspace 1" ); Dock = { Applications = { {Command = (); }}; Position = "-64,0"; Lowered = NO; }; } The configuration format has changed!! Forget everything about the old format. dockapp was removed and the old version will not work anymore. the dialogs require tcl/tk. they will be rewritten in plain C These are some tips for people upgrading from older versions and don't want too many unused files around. There is no problem if you decide to keep them for a while. you can rm -r ~/gnustep if you don't want anything from there remove the files in /usr/local/share/WindowMaker before installation the /usr/local/share/pixmaps directory can be removed �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/aclocal.m4�����������������������������������������������������������������������0000644�0001750�0001750�00000146725�13642360050�012644� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# generated automatically by aclocal 1.16.1 -*- Autoconf -*- # Copyright (C) 1996-2018 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, [m4_warning([this file was generated for autoconf 2.69. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) dnl pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- dnl serial 11 (pkg-config-0.29.1) dnl dnl Copyright © 2004 Scott James Remnant <scott@netsplit.com>. dnl Copyright © 2012-2015 Dan Nicholson <dbn.lists@gmail.com> dnl dnl This program is free software; you can redistribute it and/or modify dnl it under the terms of the GNU General Public License as published by dnl the Free Software Foundation; either version 2 of the License, or dnl (at your option) any later version. dnl dnl This program is distributed in the hope that it will be useful, but dnl WITHOUT ANY WARRANTY; without even the implied warranty of dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU dnl General Public License for more details. dnl dnl You should have received a copy of the GNU General Public License dnl along with this program; if not, write to the Free Software dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA dnl 02111-1307, USA. dnl dnl As a special exception to the GNU General Public License, if you dnl distribute this file as part of a program that contains a dnl configuration script generated by Autoconf, you may include it under dnl the same distribution terms that you use for the rest of that dnl program. dnl PKG_PREREQ(MIN-VERSION) dnl ----------------------- dnl Since: 0.29 dnl dnl Verify that the version of the pkg-config macros are at least dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's dnl installed version of pkg-config, this checks the developer's version dnl of pkg.m4 when generating configure. dnl dnl To ensure that this macro is defined, also add: dnl m4_ifndef([PKG_PREREQ], dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])]) dnl dnl See the "Since" comment for each macro you use to see what version dnl of the macros you require. m4_defun([PKG_PREREQ], [m4_define([PKG_MACROS_VERSION], [0.29.1]) m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) ])dnl PKG_PREREQ dnl PKG_PROG_PKG_CONFIG([MIN-VERSION]) dnl ---------------------------------- dnl Since: 0.16 dnl dnl Search for the pkg-config tool and set the PKG_CONFIG variable to dnl first found in the path. Checks that the version of pkg-config found dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is dnl used since that's the first version where most current features of dnl pkg-config existed. AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) fi if test -n "$PKG_CONFIG"; then _pkg_min_version=m4_default([$1], [0.9.0]) AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) PKG_CONFIG="" fi fi[]dnl ])dnl PKG_PROG_PKG_CONFIG dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) dnl ------------------------------------------------------------------- dnl Since: 0.18 dnl dnl Check to see whether a particular set of modules exists. Similar to dnl PKG_CHECK_MODULES(), but does not set variables or print errors. dnl dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) dnl only at the first occurence in configure.ac, so if the first place dnl it's called might be skipped (such as if it is within an "if", you dnl have to call PKG_CHECK_EXISTS manually AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl if test -n "$PKG_CONFIG" && \ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then m4_default([$2], [:]) m4_ifvaln([$3], [else $3])dnl fi]) dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) dnl --------------------------------------------- dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting dnl pkg_failed based on the result. m4_define([_PKG_CONFIG], [if test -n "$$1"; then pkg_cv_[]$1="$$1" elif test -n "$PKG_CONFIG"; then PKG_CHECK_EXISTS([$3], [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes ], [pkg_failed=yes]) else pkg_failed=untried fi[]dnl ])dnl _PKG_CONFIG dnl _PKG_SHORT_ERRORS_SUPPORTED dnl --------------------------- dnl Internal check to see if pkg-config supports short errors. AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi[]dnl ])dnl _PKG_SHORT_ERRORS_SUPPORTED dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], dnl [ACTION-IF-NOT-FOUND]) dnl -------------------------------------------------------------- dnl Since: 0.4.0 dnl dnl Note that if there is a possibility the first call to dnl PKG_CHECK_MODULES might not happen, you should be sure to include an dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac AC_DEFUN([PKG_CHECK_MODULES], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl pkg_failed=no AC_MSG_CHECKING([for $1]) _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) _PKG_CONFIG([$1][_LIBS], [libs], [$2]) m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS and $1[]_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.]) if test $pkg_failed = yes; then AC_MSG_RESULT([no]) _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` else $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD m4_default([$4], [AC_MSG_ERROR( [Package requirements ($2) were not met: $$1_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. _PKG_TEXT])[]dnl ]) elif test $pkg_failed = untried; then AC_MSG_RESULT([no]) m4_default([$4], [AC_MSG_FAILURE( [The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. _PKG_TEXT To get pkg-config, see <http://pkg-config.freedesktop.org/>.])[]dnl ]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS $1[]_LIBS=$pkg_cv_[]$1[]_LIBS AC_MSG_RESULT([yes]) $3 fi[]dnl ])dnl PKG_CHECK_MODULES dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], dnl [ACTION-IF-NOT-FOUND]) dnl --------------------------------------------------------------------- dnl Since: 0.29 dnl dnl Checks for existence of MODULES and gathers its build flags with dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags dnl and VARIABLE-PREFIX_LIBS from --libs. dnl dnl Note that if there is a possibility the first call to dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to dnl include an explicit call to PKG_PROG_PKG_CONFIG in your dnl configure.ac. AC_DEFUN([PKG_CHECK_MODULES_STATIC], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl _save_PKG_CONFIG=$PKG_CONFIG PKG_CONFIG="$PKG_CONFIG --static" PKG_CHECK_MODULES($@) PKG_CONFIG=$_save_PKG_CONFIG[]dnl ])dnl PKG_CHECK_MODULES_STATIC dnl PKG_INSTALLDIR([DIRECTORY]) dnl ------------------------- dnl Since: 0.27 dnl dnl Substitutes the variable pkgconfigdir as the location where a module dnl should install pkg-config .pc files. By default the directory is dnl $libdir/pkgconfig, but the default can be changed by passing dnl DIRECTORY. The user can override through the --with-pkgconfigdir dnl parameter. AC_DEFUN([PKG_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) m4_pushdef([pkg_description], [pkg-config installation directory @<:@]pkg_default[@:>@]) AC_ARG_WITH([pkgconfigdir], [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, [with_pkgconfigdir=]pkg_default) AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) ])dnl PKG_INSTALLDIR dnl PKG_NOARCH_INSTALLDIR([DIRECTORY]) dnl -------------------------------- dnl Since: 0.27 dnl dnl Substitutes the variable noarch_pkgconfigdir as the location where a dnl module should install arch-independent pkg-config .pc files. By dnl default the directory is $datadir/pkgconfig, but the default can be dnl changed by passing DIRECTORY. The user can override through the dnl --with-noarch-pkgconfigdir parameter. AC_DEFUN([PKG_NOARCH_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) m4_pushdef([pkg_description], [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) AC_ARG_WITH([noarch-pkgconfigdir], [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, [with_noarch_pkgconfigdir=]pkg_default) AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) ])dnl PKG_NOARCH_INSTALLDIR dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) dnl ------------------------------------------- dnl Since: 0.28 dnl dnl Retrieves the value of the pkg-config variable for the given module. AC_DEFUN([PKG_CHECK_VAR], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl _PKG_CONFIG([$1], [variable="][$3]["], [$2]) AS_VAR_COPY([$1], [pkg_cv_][$1]) AS_VAR_IF([$1], [""], [$5], [$4])dnl ])dnl PKG_CHECK_VAR # Copyright (C) 2002-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.16' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.16.1], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.16.1])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to # '$srcdir', '$srcdir/..', or '$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is '.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], [$1], [CXX], [depcc="$CXX" am_compiler_list=], [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], [$1], [UPC], [depcc="$UPC" am_compiler_list=], [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES. AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl AS_HELP_STRING( [--enable-dependency-tracking], [do not reject slow dependency extractors]) AS_HELP_STRING( [--disable-dependency-tracking], [speeds up one-time build])]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. # TODO: see whether this extra hack can be removed once we start # requiring Autoconf 2.70 or later. AS_CASE([$CONFIG_FILES], [*\'*], [eval set x "$CONFIG_FILES"], [*], [set x $CONFIG_FILES]) shift # Used to flag and report bootstrapping failures. am_rc=0 for am_mf do # Strip MF so we end up with the name of the file. am_mf=`AS_ECHO(["$am_mf"]) | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile which includes # dependency-tracking related rules and includes. # Grep'ing the whole file directly is not great: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ || continue am_dirpart=`AS_DIRNAME(["$am_mf"])` am_filepart=`AS_BASENAME(["$am_mf"])` AM_RUN_LOG([cd "$am_dirpart" \ && sed -e '/# am--include-marker/d' "$am_filepart" \ | $MAKE -f - am--depfiles]) || am_rc=$? done if test $am_rc -ne 0; then AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments for automatic dependency tracking. Try re-running configure with the '--disable-dependency-tracking' option to at least be able to build the package (albeit without support for automatic dependency tracking).]) fi AS_UNSET([am_dirpart]) AS_UNSET([am_filepart]) AS_UNSET([am_mf]) AS_UNSET([am_rc]) rm -f conftest-deps.mk } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking is enabled. # This creates each '.Po' and '.Plo' makefile fragment that we'll need in # order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"])]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # 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. dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC]) [_AM_PROG_CC_C_O ]) # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [AC_DIAGNOSE([obsolete], [$0: two- and three-arguments forms are deprecated.]) m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if( m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) AM_MISSING_PROG([AUTOCONF], [autoconf]) AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) AM_MISSING_PROG([AUTOHEADER], [autoheader]) AM_MISSING_PROG([MAKEINFO], [makeinfo]) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # <https://lists.gnu.org/archive/html/automake/2012-07/msg00001.html> # <https://lists.gnu.org/archive/html/automake/2012-07/msg00014.html> AC_SUBST([mkdir_p], ['$(MKDIR_P)']) # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES([CC])], [m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES([CXX])], [m4_define([AC_PROG_CXX], m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES([OBJC])], [m4_define([AC_PROG_OBJC], m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], [_AM_DEPENDENCIES([OBJCXX])], [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) AC_REQUIRE([AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542> Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: <https://www.gnu.org/software/coreutils/>. If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) fi fi dnl The trailing newline in this macro's definition is deliberate, for dnl backward compatibility and to allow trailing 'dnl'-style comments dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. ]) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST([install_sh])]) # Copyright (C) 2003-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MAKE_INCLUDE() # ----------------- # Check whether make has an 'include' directive that can support all # the idioms we need for our automatic dependency tracking code. AC_DEFUN([AM_MAKE_INCLUDE], [AC_MSG_CHECKING([whether ${MAKE-make} supports the include directive]) cat > confinc.mk << 'END' am__doit: @echo this is the am__doit target >confinc.out .PHONY: am__doit END am__include="#" am__quote= # BSD make does it like this. echo '.include "confinc.mk" # ignored' > confmf.BSD # Other make implementations (GNU, Solaris 10, AIX) do it like this. echo 'include confinc.mk # ignored' > confmf.GNU _am_result=no for s in GNU BSD; do AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out]) AS_CASE([$?:`cat confinc.out 2>/dev/null`], ['0:this is the am__doit target'], [AS_CASE([$s], [BSD], [am__include='.include' am__quote='"'], [am__include='include' am__quote=''])]) if test "$am__include" != "#"; then _am_result="yes ($s style)" break fi done rm -f confinc.* confmf.* AC_MSG_RESULT([${_am_result}]) AC_SUBST([am__include])]) AC_SUBST([am__quote])]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it is modern enough. # If it is, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= AC_MSG_WARN(['missing' script is too old or missing]) fi ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Copyright (C) 1999-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_CC_C_O # --------------- # Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC # to automatically call this. AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([compile])dnl AC_LANG_PUSH([C])dnl AC_CACHE_CHECK( [whether $CC understands -c and -o together], [am_cv_prog_cc_c_o], [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i]) if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi AC_LANG_POP([C])]) # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) # Copyright (C) 2001-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_RUN_LOG(COMMAND) # ------------------- # Run COMMAND, save the exit status in ac_status, and log it. # (This has been adapted from Autoconf's _AC_RUN_LOG macro.) AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD (exit $ac_status); }]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi if test "$[2]" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT([yes]) # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi AC_CONFIG_COMMANDS_PRE( [AC_MSG_CHECKING([that generated files are newer than configure]) if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi AC_MSG_RESULT([done])]) rm -f conftest.file ]) # Copyright (C) 2009-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SILENT_RULES([DEFAULT]) # -------------------------- # Enable less verbose build rules; with the default set to DEFAULT # ("yes" being less verbose, "no" or empty being verbose). AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl AS_HELP_STRING( [--enable-silent-rules], [less verbose build output (undo: "make V=1")]) AS_HELP_STRING( [--disable-silent-rules], [verbose build output (undo: "make V=0")])dnl ]) case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac dnl dnl A few 'make' implementations (e.g., NonStop OS and NextStep) dnl do not support nested variable expansions. dnl See automake bug#9928 and bug#10237. am_make=${MAKE-make} AC_CACHE_CHECK([whether $am_make supports nested variables], [am_cv_make_support_nested_variables], [if AS_ECHO([['TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi]) if test $am_cv_make_support_nested_variables = yes; then dnl Using '$V' instead of '$(V)' breaks IRIX make. AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AC_SUBST([AM_V])dnl AM_SUBST_NOTMAKE([AM_V])dnl AC_SUBST([AM_DEFAULT_V])dnl AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) # Copyright (C) 2001-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor 'install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in "make install-strip", and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of 'v7', 'ustar', or 'pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar # AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar], [# The POSIX 1988 'ustar' format is defined with fixed-size fields. # There is notably a 21 bits limit for the UID and the GID. In fact, # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 # and bug#13588). am_max_uid=2097151 # 2^21 - 1 am_max_gid=$am_max_uid # The $UID and $GID variables are not portable, so we need to resort # to the POSIX-mandated id(1) utility. Errors in the 'id' calls # below are definitely unexpected, so allow the users to see them # (that is, avoid stderr redirection). am_uid=`id -u || echo unknown` am_gid=`id -g || echo unknown` AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) if test $am_uid -le $am_max_uid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) if test $am_gid -le $am_max_gid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi], [pax], [], [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. _am_tools=${am_cv_prog_tar_$1-$_am_tools} for _am_tool in $_am_tools; do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works. rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar <conftest.tar]) AM_RUN_LOG([cat conftest.dir/file]) grep GrepMe conftest.dir/file >/dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR m4_include([m4/ax_cflags_gcc_option.m4]) m4_include([m4/ax_pthread.m4]) m4_include([m4/ld-version-script.m4]) m4_include([m4/libtool.m4]) m4_include([m4/ltoptions.m4]) m4_include([m4/ltsugar.m4]) m4_include([m4/ltversion.m4]) m4_include([m4/lt~obsolete.m4]) m4_include([m4/windowmaker.m4]) m4_include([m4/wm_attributes.m4]) m4_include([m4/wm_cflags_check.m4]) m4_include([m4/wm_i18n.m4]) m4_include([m4/wm_imgfmt_check.m4]) m4_include([m4/wm_libexif.m4]) m4_include([m4/wm_libmath.m4]) m4_include([m4/wm_prog_cc_c11.m4]) m4_include([m4/wm_xext_check.m4]) �������������������������������������������WindowMaker-0.95.9/Makefile.am����������������������������������������������������������������������0000644�0001750�0001750�00000010262�13431646202�013024� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������## Process this file with automake to produce Makefile.in AUTOMAKE_OPTIONS = BUILT_SOURCES = config-paths.h DISTCLEANFILES = config-paths.h config.h: config-paths.h config-paths.h: Makefile @echo "Generating $@" @echo '/* this is a generated file - do not edit */' > $@ @echo '' >> $@ @echo '/* define where the translations are stored */' >> $@ @echo '#define LOCALEDIR "$(localedir)"' >> $@ @echo '' >> $@ @echo '/* define an extra path for pixmaps */' >> $@ @echo '#define PIXMAPDIR "$(pixmapdir)"' >> $@ @echo '' >> $@ @echo '/* where shared data is stored */' >> $@ @echo '#define PKGDATADIR "$(datadir)/WindowMaker"' >> $@ @echo '' >> $@ @echo '/* where the global defaults are stored */' >> $@ @echo '#define DEFSDATADIR "$(defsdatadir)"' >> $@ ACLOCAL_AMFLAGS = -I m4 # Improve coverage in 'make distcheck' by checking that translations work AM_DISTCHECK_CONFIGURE_FLAGS = --enable-silent-rules LINGUAS='*' SUBDIRS = wrlib WINGs src util po WindowMaker wmlib WPrefs.app doc DIST_SUBDIRS = $(SUBDIRS) test EXTRA_DIST = TODO BUGS BUGFORM FAQ INSTALL \ INSTALL-WMAKER README.i18n README.definable-cursor \ The-perfect-Window-Maker-patch.txt \ README COPYING.WTFPL autogen.sh \ email-clients.txt checkpatch.pl update-changelog.pl \ script/check-cmdline-options-doc.sh \ script/check-translation-sources.sh \ script/check-wmaker-loaddef-callbacks.sh \ script/generate-mapfile-from-header.sh \ script/generate-po-from-template.sh \ script/generate-txt-from-texi.sh \ script/nested-func-to-macro.sh \ script/replace-ac-keywords.sh .PHONY: coverage-reset coverage if USE_LCOV coverage-reset: find . -type f -name '*.gcda' -exec rm -f '{}' ';' lcov --directory . --zerocounters coverage: rm -rf coverage @lcov_output_directory@ -mkdir -p coverage @lcov_output_directory@ lcov --compat-libtool --capture --directory . --output-file coverage/coverage.info genhtml --output-directory @lcov_output_directory@ coverage/coverage.info endif # make update-lang PO=<lang> # ========================== # Update the PO files against the POT file in all the translation sub-directories # # We do not use an automatic recursive target from Automake (AM_EXTRA_RECURSIVE_TARGETS) # because we want to check only once that the variable PO was defined; the added bonus # being that we do not process all directories but only the related ones, which is # faster and a lot less verbose update-lang: if HAVE_XGETTEXT @if echo "$(PO)" | grep -v '^[a-z][a-z]\(_[A-Z][A-Z]\)\?$$' > /dev/null ; then \ echo "Error: invalid value \"$(PO)\" for update-lang, use PO=<lang>" >&2 ; exit 1 ; \ fi ; \ for subdir in $(SUBDIRS_PO); do \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) update-lang || exit $$?); \ done SUBDIRS_PO = WINGs/po po util/po WPrefs.app/po else @echo "Error: the program 'xgettext' was not found by configure, it is mandatory for this operation" >&2 ; exit 1 endif .PHONY: update-lang # Create a 'silent-rule' for our make check the same way automake does AM_V_CHKOPTS = $(am__v_CHKOPTS_$(V)) am__v_CHKOPTS_ = $(am__v_CHKOPTS_$(AM_DEFAULT_VERBOSITY)) am__v_CHKOPTS_0 = @echo " CHK $@" ; am__v_CHKOPTS_1 = check-local: configure-documentation configure-documentation: $(AM_V_CHKOPTS)$(top_srcdir)/script/check-cmdline-options-doc.sh \ --program "$(top_srcdir)/configure" --text-doc "$(top_srcdir)/INSTALL-WMAKER" \ --ignore-prg 'with-PACKAGE,without-PACKAGE # only template names from Autoconf' \ --ignore-prg 'program-prefix,program-suffix,program-transform-name # in INSTALL' \ --ignore-prg 'version,quiet,srcdir,build,host,cache-file,no-create # in INSTALL' \ --ignore-prg 'enable-silent-rules,disable-silent-rules # should be in INSTALL' \ --ignore-prg 'enable-dependency-tracking,disable-dependency-tracking # in INSTALL' \ --ignore-prg 'enable-shared,enable-static # should be in INSTALL' \ --ignore-prg 'disable-option-checking,enable-fast-install # should be in INSTALL' \ --ignore-prg 'disable-libtool-lock,with-pic,with-gnu-ld,with-sysroot # for libtool' \ --ignore-prg 'runstatedir #new in autoconf 2.70, backported in Debian' \ --ignore-prg 'with-aix-soname #new in libtool 2.4.4' \ --ignore-prg 'with-x # no use, it would not work without X' .PHONY: configure-documentation ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/BUGS�����������������������������������������������������������������������������0000644�0001750�0001750�00000002470�13431646202�011455� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������Newly added - after a crash, wmaker will forget the hidden state of the apps and just show their windows minimized. normal restart is unaffected - after a crash, wmaker will completely mess the window's saved geometries and maximizing will have weird results. restart is unaffected - wmaker will not stop managing a screen even if another window manager requests that, through the ICCCM 2.0 manager selection stuff - 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 fix bug (to support broken MetroX servers) or remove all useless references to the Pixmap (to save memory and drop bug compatibility). - host information is not saved/honored by the dock or save session stuff. It should at least check if the host is the local machine and only save it in the session/allow docking it if yes. - the SHELL environment variable support in the apps menu was removed because of a problem with tcsh. If ~/.tcshrc contains "stty erase ^H", it will block and the cmd will not be executed. - mouse grab being done in client window (in wWindowResetMouseGrabs()) instead of the frame window. If grab is done in frame, titlebar buttons dont work well - mysterious mess in dock icons (specially netscape) ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/checkpatch.pl��������������������������������������������������������������������0000755�0001750�0001750�00000317777�13431646202�013452� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl -w # (c) 2001, Dave Jones. (the file handling bit) # (c) 2005, Joel Schopp <jschopp@austin.ibm.com> (the ugly bit) # (c) 2007,2008, Andy Whitcroft <apw@uk.ibm.com> (new conditions, test suite) # (c) 2008-2010 Andy Whitcroft <apw@canonical.com> # Licensed under the terms of the GNU GPL License version 2 use strict; use POSIX; my $P = $0; $P =~ s@.*/@@g; my $V = '0.32'; use Getopt::Long qw(:config no_auto_abbrev); my $quiet = 0; my $chk_patch = 1; my $tst_only; my $emacs = 0; my $terse = 0; my $file = 0; my $check = 0; my $summary = 1; my $mailback = 0; my $summary_file = 0; my $show_types = 0; my $fix = 0; my $fix_inplace = 0; my $root; my %debug; my %camelcase = (); my %use_type = (); my @use = (); my %ignore_type = (); my @ignore = (); my $help = 0; my $configuration_file = ".checkpatch.conf"; my $max_line_length = 115; my $ignore_perl_version = 0; my $minimum_perl_version = 5.10.0; sub help { my ($exitcode) = @_; print << "EOM"; Usage: $P [OPTION]... [FILE]... Version: $V Options: -q, --quiet quiet --patch treat FILE as patchfile (default) --emacs emacs compile window format --terse one line per report -f, --file treat FILE as regular source file --subjective, --strict enable more subjective tests --types TYPE(,TYPE2...) show only these comma separated message types --ignore TYPE(,TYPE2...) ignore various comma separated message types --max-line-length=n set the maximum line length, if exceeded, warn --show-types show the message "types" in the output --root=PATH PATH to the kernel tree root --no-summary suppress the per-file summary --mailback only produce a report in case of warnings/errors --summary-file include the filename in summary --debug KEY=[0|1] turn on/off debugging of KEY, where KEY is one of 'values', 'possible', 'type', and 'attr' (default is all off) --test-only=WORD report only warnings/errors containing WORD literally --fix EXPERIMENTAL - may create horrible results If correctable single-line errors exist, create "<inputfile>.EXPERIMENTAL-checkpatch-fixes" with potential errors corrected to the preferred checkpatch style --fix-inplace EXPERIMENTAL - may create horrible results Is the same as --fix, but overwrites the input file. It's your fault if there's no backup or git --ignore-perl-version override checking of perl version. expect runtime errors. -h, --help, --version display this help and exit When FILE is - read standard input. EOM exit($exitcode); } my $conf = which_conf($configuration_file); if (-f $conf) { my @conf_args; open(my $conffile, '<', "$conf") or warn "$P: Can't find a readable $configuration_file file $!\n"; while (<$conffile>) { my $line = $_; $line =~ s/\s*\n?$//g; $line =~ s/^\s*//g; $line =~ s/\s+/ /g; next if ($line =~ m/^\s*#/); next if ($line =~ m/^\s*$/); my @words = split(" ", $line); foreach my $word (@words) { last if ($word =~ m/^#/); push (@conf_args, $word); } } close($conffile); unshift(@ARGV, @conf_args) if @conf_args; } GetOptions( 'q|quiet+' => \$quiet, 'patch!' => \$chk_patch, 'emacs!' => \$emacs, 'terse!' => \$terse, 'f|file!' => \$file, 'subjective!' => \$check, 'strict!' => \$check, 'ignore=s' => \@ignore, 'types=s' => \@use, 'show-types!' => \$show_types, 'max-line-length=i' => \$max_line_length, 'root=s' => \$root, 'summary!' => \$summary, 'mailback!' => \$mailback, 'summary-file!' => \$summary_file, 'fix!' => \$fix, 'fix-inplace!' => \$fix_inplace, 'ignore-perl-version!' => \$ignore_perl_version, 'debug=s' => \%debug, 'test-only=s' => \$tst_only, 'h|help' => \$help, 'version' => \$help ) or help(1); help(0) if ($help); $fix = 1 if ($fix_inplace); my $exit = 0; if ($^V && $^V lt $minimum_perl_version) { printf "$P: requires at least perl version %vd\n", $minimum_perl_version; if (!$ignore_perl_version) { exit(1); } } if ($#ARGV < 0) { print "$P: no input files\n"; exit(1); } sub hash_save_array_words { my ($hashRef, $arrayRef) = @_; my @array = split(/,/, join(',', @$arrayRef)); foreach my $word (@array) { $word =~ s/\s*\n?$//g; $word =~ s/^\s*//g; $word =~ s/\s+/ /g; $word =~ tr/[a-z]/[A-Z]/; next if ($word =~ m/^\s*#/); next if ($word =~ m/^\s*$/); $hashRef->{$word}++; } } sub hash_show_words { my ($hashRef, $prefix) = @_; if ($quiet == 0 && keys %$hashRef) { print "NOTE: $prefix message types:"; foreach my $word (sort keys %$hashRef) { print " $word"; } print "\n\n"; } } hash_save_array_words(\%ignore_type, \@ignore); hash_save_array_words(\%use_type, \@use); my $dbg_values = 0; my $dbg_possible = 0; my $dbg_type = 0; my $dbg_attr = 0; for my $key (keys %debug) { ## no critic eval "\${dbg_$key} = '$debug{$key}';"; die "$@" if ($@); } my $rpt_cleaners = 0; if ($terse) { $emacs = 1; $quiet++; } my $emitted_corrupt = 0; our $Ident = qr{ [A-Za-z_][A-Za-z\d_]* (?:\s*\#\#\s*[A-Za-z_][A-Za-z\d_]*)* }x; our $Storage = qr{extern|static|asmlinkage}; our $Sparse = qr{ __user| __kernel| __force| __iomem| __must_check| __init_refok| __kprobes| __ref| __rcu }x; our $InitAttributePrefix = qr{__(?:mem|cpu|dev|net_|)}; our $InitAttributeData = qr{$InitAttributePrefix(?:initdata\b)}; our $InitAttributeConst = qr{$InitAttributePrefix(?:initconst\b)}; our $InitAttributeInit = qr{$InitAttributePrefix(?:init\b)}; our $InitAttribute = qr{$InitAttributeData|$InitAttributeConst|$InitAttributeInit}; # Notes to $Attribute: # We need \b after 'init' otherwise 'initconst' will cause a false positive in a check our $Attribute = qr{ const| __percpu| __nocast| __safe| __bitwise__| __packed__| __packed2__| __naked| __maybe_unused| __always_unused| __noreturn| __used| __cold| __noclone| __deprecated| __read_mostly| __kprobes| $InitAttribute| ____cacheline_aligned| ____cacheline_aligned_in_smp| ____cacheline_internodealigned_in_smp| __weak }x; our $Modifier; our $Inline = qr{inline|__always_inline|noinline|__inline|__inline__}; our $Member = qr{->$Ident|\.$Ident|\[[^]]*\]}; our $Lval = qr{$Ident(?:$Member)*}; our $Int_type = qr{(?i)llu|ull|ll|lu|ul|l|u}; our $Binary = qr{(?i)0b[01]+$Int_type?}; our $Hex = qr{(?i)0x[0-9a-f]+$Int_type?}; our $Int = qr{[0-9]+$Int_type?}; our $Octal = qr{0[0-7]+$Int_type?}; our $Float_hex = qr{(?i)0x[0-9a-f]+p-?[0-9]+[fl]?}; our $Float_dec = qr{(?i)(?:[0-9]+\.[0-9]*|[0-9]*\.[0-9]+)(?:e-?[0-9]+)?[fl]?}; our $Float_int = qr{(?i)[0-9]+e-?[0-9]+[fl]?}; our $Float = qr{$Float_hex|$Float_dec|$Float_int}; our $Constant = qr{$Float|$Binary|$Octal|$Hex|$Int}; our $Assignment = qr{\*\=|/=|%=|\+=|-=|<<=|>>=|&=|\^=|\|=|=}; our $Compare = qr{<=|>=|==|!=|<|(?<!-)>}; our $Arithmetic = qr{\+|-|\*|\/|%}; our $Operators = qr{ <=|>=|==|!=| =>|->|<<|>>|<|>|!|~| &&|\|\||,|\^|\+\+|--|&|\||$Arithmetic }x; our $c90_Keywords = qr{do|for|while|if|else|return|goto|continue|switch|default|case|break}x; our $NonptrType; our $NonptrTypeWithAttr; our $Type; our $Declare; our $NON_ASCII_UTF8 = qr{ [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte | \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte | \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates | \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3 | [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15 | \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16 }x; our $UTF8 = qr{ [\x09\x0A\x0D\x20-\x7E] # ASCII | $NON_ASCII_UTF8 }x; our $typeTypedefs = qr{(?x: (?:__)?(?:u|s|be|le)(?:8|16|32|64)| atomic_t )}; our $logFunctions = qr{(?x: printk(?:_ratelimited|_once|)| (?:[a-z0-9]+_){1,2}(?:printk|emerg|alert|crit|err|warning|warn|notice|info|debug|dbg|vdbg|devel|cont|WARN)(?:_ratelimited|_once|)| WARN(?:_RATELIMIT|_ONCE|)| panic| MODULE_[A-Z_]+| seq_vprintf|seq_printf|seq_puts )}; our $signature_tags = qr{(?xi: Signed-off-by:| Acked-by:| Tested-by:| Reviewed-by:| Reported-by:| Suggested-by:| To:| Cc: )}; our @typeList = ( qr{void}, qr{(?:unsigned\s+)?char}, qr{(?:unsigned\s+)?short}, qr{(?:unsigned\s+)?int}, qr{(?:unsigned\s+)?long}, qr{(?:unsigned\s+)?long\s+int}, qr{(?:unsigned\s+)?long\s+long}, qr{(?:unsigned\s+)?long\s+long\s+int}, qr{unsigned}, qr{float}, qr{double}, qr{bool}, qr{struct\s+$Ident}, qr{union\s+$Ident}, qr{enum\s+$Ident}, qr{${Ident}_t}, qr{${Ident}_handler}, qr{${Ident}_handler_fn}, ); our @typeListWithAttr = ( @typeList, qr{struct\s+$InitAttribute\s+$Ident}, qr{union\s+$InitAttribute\s+$Ident}, ); our @modifierList = ( qr{fastcall}, ); our @mode_permission_funcs = ( ["module_param", 3], ["module_param_(?:array|named|string)", 4], ["module_param_array_named", 5], ["debugfs_create_(?:file|u8|u16|u32|u64|x8|x16|x32|x64|size_t|atomic_t|bool|blob|regset32|u32_array)", 2], ["proc_create(?:_data|)", 2], ["(?:CLASS|DEVICE|SENSOR)_ATTR", 2], ); #Create a search pattern for all these functions to speed up a loop below our $mode_perms_search = ""; foreach my $entry (@mode_permission_funcs) { $mode_perms_search .= '|' if ($mode_perms_search ne ""); $mode_perms_search .= $entry->[0]; } our $allowed_asm_includes = qr{(?x: irq| memory )}; # memory.h: ARM has a custom one sub build_types { my $mods = "(?x: \n" . join("|\n ", @modifierList) . "\n)"; my $all = "(?x: \n" . join("|\n ", @typeList) . "\n)"; my $allWithAttr = "(?x: \n" . join("|\n ", @typeListWithAttr) . "\n)"; $Modifier = qr{(?:$Attribute|$Sparse|$mods)}; $NonptrType = qr{ (?:$Modifier\s+|const\s+)* (?: (?:typeof|__typeof__)\s*\([^\)]*\)| (?:$typeTypedefs\b)| (?:${all}\b) ) (?:\s+$Modifier|\s+const)* }x; $NonptrTypeWithAttr = qr{ (?:$Modifier\s+|const\s+)* (?: (?:typeof|__typeof__)\s*\([^\)]*\)| (?:$typeTypedefs\b)| (?:${allWithAttr}\b) ) (?:\s+$Modifier|\s+const)* }x; $Type = qr{ $NonptrType (?:(?:\s|\*|\[\])+\s*const|(?:\s|\*|\[\])+|(?:\s*\[\s*\])+)? (?:\s+$Inline|\s+$Modifier)* }x; $Declare = qr{(?:$Storage\s+(?:$Inline\s+)?)?$Type}; } build_types(); our $Typecast = qr{\s*(\(\s*$NonptrType\s*\)){0,1}\s*}; # Using $balanced_parens, $LvalOrFunc, or $FuncArg # requires at least perl version v5.10.0 # Any use must be runtime checked with $^V our $balanced_parens = qr/(\((?:[^\(\)]++|(?-1))*\))/; our $LvalOrFunc = qr{((?:[\&\*]\s*)?$Lval)\s*($balanced_parens{0,1})\s*}; our $FuncArg = qr{$Typecast{0,1}($LvalOrFunc|$Constant)}; sub deparenthesize { my ($string) = @_; return "" if (!defined($string)); while ($string =~ /^\s*\(.*\)\s*$/) { $string =~ s@^\s*\(\s*@@; $string =~ s@\s*\)\s*$@@; } $string =~ s@\s+@ @g; return $string; } sub seed_camelcase_file { my ($file) = @_; return if (!(-f $file)); local $/; open(my $include_file, '<', "$file") or warn "$P: Can't read '$file' $!\n"; my $text = <$include_file>; close($include_file); my @lines = split('\n', $text); foreach my $line (@lines) { next if ($line !~ /(?:[A-Z][a-z]|[a-z][A-Z])/); if ($line =~ /^[ \t]*(?:#[ \t]*define|typedef\s+$Type)\s+(\w*(?:[A-Z][a-z]|[a-z][A-Z])\w*)/) { $camelcase{$1} = 1; } elsif ($line =~ /^\s*$Declare\s+(\w*(?:[A-Z][a-z]|[a-z][A-Z])\w*)\s*[\(\[,;]/) { $camelcase{$1} = 1; } elsif ($line =~ /^\s*(?:union|struct|enum)\s+(\w*(?:[A-Z][a-z]|[a-z][A-Z])\w*)\s*[;\{]/) { $camelcase{$1} = 1; } } } my $camelcase_seeded = 0; sub seed_camelcase_includes { return if ($camelcase_seeded); my $files; my $camelcase_cache = ""; my @include_files = (); $camelcase_seeded = 1; if (-e ".git") { my $git_last_include_commit = `git log --no-merges --pretty=format:"%h%n" -1 -- include`; chomp $git_last_include_commit; $camelcase_cache = ".checkpatch-camelcase.git.$git_last_include_commit"; } else { my $last_mod_date = 0; $files = `find $root/include -name "*.h"`; @include_files = split('\n', $files); foreach my $file (@include_files) { my $date = POSIX::strftime("%Y%m%d%H%M", localtime((stat $file)[9])); $last_mod_date = $date if ($last_mod_date < $date); } $camelcase_cache = ".checkpatch-camelcase.date.$last_mod_date"; } if ($camelcase_cache ne "" && -f $camelcase_cache) { open(my $camelcase_file, '<', "$camelcase_cache") or warn "$P: Can't read '$camelcase_cache' $!\n"; while (<$camelcase_file>) { chomp; $camelcase{$_} = 1; } close($camelcase_file); return; } if (-e ".git") { $files = `git ls-files "include/*.h"`; @include_files = split('\n', $files); } foreach my $file (@include_files) { seed_camelcase_file($file); } if ($camelcase_cache ne "") { unlink glob ".checkpatch-camelcase.*"; open(my $camelcase_file, '>', "$camelcase_cache") or warn "$P: Can't write '$camelcase_cache' $!\n"; foreach (sort { lc($a) cmp lc($b) } keys(%camelcase)) { print $camelcase_file ("$_\n"); } close($camelcase_file); } } my @rawlines = (); my @lines = (); my @fixed = (); my $vname; for my $filename (@ARGV) { my $FILE; if ($file) { open($FILE, '-|', "diff -u /dev/null $filename") || die "$P: $filename: diff failed - $!\n"; } elsif ($filename eq '-') { open($FILE, '<&STDIN'); } else { open($FILE, '<', "$filename") || die "$P: $filename: open failed - $!\n"; } if ($filename eq '-') { $vname = 'Your patch'; } else { $vname = $filename; } while (<$FILE>) { chomp; push(@rawlines, $_); } close($FILE); if (!process($filename)) { $exit = 1; } @rawlines = (); @lines = (); @fixed = (); } exit($exit); sub parse_email { my ($formatted_email) = @_; my $name = ""; my $address = ""; my $comment = ""; if ($formatted_email =~ /^(.*)<(\S+\@\S+)>(.*)$/) { $name = $1; $address = $2; $comment = $3 if defined $3; } elsif ($formatted_email =~ /^\s*<(\S+\@\S+)>(.*)$/) { $address = $1; $comment = $2 if defined $2; } elsif ($formatted_email =~ /(\S+\@\S+)(.*)$/) { $address = $1; $comment = $2 if defined $2; $formatted_email =~ s/$address.*$//; $name = $formatted_email; $name = trim($name); $name =~ s/^\"|\"$//g; # If there's a name left after stripping spaces and # leading quotes, and the address doesn't have both # leading and trailing angle brackets, the address # is invalid. ie: # "joe smith joe@smith.com" bad # "joe smith <joe@smith.com" bad if ($name ne "" && $address !~ /^<[^>]+>$/) { $name = ""; $address = ""; $comment = ""; } } $name = trim($name); $name =~ s/^\"|\"$//g; $address = trim($address); $address =~ s/^\<|\>$//g; if ($name =~ /[^\w \-]/i) { ##has "must quote" chars $name =~ s/(?<!\\)"/\\"/g; ##escape quotes $name = "\"$name\""; } return ($name, $address, $comment); } sub format_email { my ($name, $address) = @_; my $formatted_email; $name = trim($name); $name =~ s/^\"|\"$//g; $address = trim($address); if ($name =~ /[^\w \-]/i) { ##has "must quote" chars $name =~ s/(?<!\\)"/\\"/g; ##escape quotes $name = "\"$name\""; } if ("$name" eq "") { $formatted_email = "$address"; } else { $formatted_email = "$name <$address>"; } return $formatted_email; } sub which_conf { my ($conf) = @_; foreach my $path (split(/:/, ".:$ENV{HOME}:.scripts")) { if (-e "$path/$conf") { return "$path/$conf"; } } return ""; } sub expand_tabs { my ($str) = @_; my $res = ''; my $n = 0; for my $c (split(//, $str)) { if ($c eq "\t") { $res .= ' '; $n++; for (; ($n % 8) != 0; $n++) { $res .= ' '; } next; } $res .= $c; $n++; } return $res; } sub copy_spacing { (my $res = shift) =~ tr/\t/ /c; return $res; } sub line_stats { my ($line) = @_; # Drop the diff line leader and expand tabs $line =~ s/^.//; $line = expand_tabs($line); # Pick the indent from the front of the line. my ($white) = ($line =~ /^(\s*)/); return (length($line), length($white)); } my $sanitise_quote = ''; sub sanitise_line_reset { my ($in_comment) = @_; if ($in_comment) { $sanitise_quote = '*/'; } else { $sanitise_quote = ''; } } sub sanitise_line { my ($line) = @_; my $res = ''; my $l = ''; my $qlen = 0; my $off = 0; my $c; # Always copy over the diff marker. $res = substr($line, 0, 1); for ($off = 1; $off < length($line); $off++) { $c = substr($line, $off, 1); # Comments we are wacking completly including the begin # and end, all to $;. if ($sanitise_quote eq '' && substr($line, $off, 2) eq '/*') { $sanitise_quote = '*/'; substr($res, $off, 2, "$;$;"); $off++; next; } if ($sanitise_quote eq '*/' && substr($line, $off, 2) eq '*/') { $sanitise_quote = ''; substr($res, $off, 2, "$;$;"); $off++; next; } if ($sanitise_quote eq '' && substr($line, $off, 2) eq '//') { $sanitise_quote = '//'; substr($res, $off, 2, $sanitise_quote); $off++; next; } # A \ in a string means ignore the next character. if (($sanitise_quote eq "'" || $sanitise_quote eq '"') && $c eq "\\") { substr($res, $off, 2, 'XX'); $off++; next; } # Regular quotes. if ($c eq "'" || $c eq '"') { if ($sanitise_quote eq '') { $sanitise_quote = $c; substr($res, $off, 1, $c); next; } elsif ($sanitise_quote eq $c) { $sanitise_quote = ''; } } #print "c<$c> SQ<$sanitise_quote>\n"; if ($off != 0 && $sanitise_quote eq '*/' && $c ne "\t") { substr($res, $off, 1, $;); } elsif ($off != 0 && $sanitise_quote eq '//' && $c ne "\t") { substr($res, $off, 1, $;); } elsif ($off != 0 && $sanitise_quote && $c ne "\t") { substr($res, $off, 1, 'X'); } else { substr($res, $off, 1, $c); } } if ($sanitise_quote eq '//') { $sanitise_quote = ''; } # The pathname on a #include may be surrounded by '<' and '>'. if ($res =~ /^.\s*\#\s*include\s+\<(.*)\>/) { my $clean = 'X' x length($1); $res =~ s@\<.*\>@<$clean>@; # The whole of a #error is a string. } elsif ($res =~ /^.\s*\#\s*(?:error|warning)\s+(.*)\b/) { my $clean = 'X' x length($1); $res =~ s@(\#\s*(?:error|warning)\s+).*@$1$clean@; } return $res; } sub get_quoted_string { my ($line, $rawline) = @_; return "" if ($line !~ m/(\"[X]+\")/g); return substr($rawline, $-[0], $+[0] - $-[0]); } sub ctx_statement_block { my ($linenr, $remain, $off) = @_; my $line = $linenr - 1; my $blk = ''; my $soff = $off; my $coff = $off - 1; my $coff_set = 0; my $loff = 0; my $type = ''; my $level = 0; my @stack = (); my $p; my $c; my $len = 0; my $remainder; while (1) { @stack = (['', 0]) if ($#stack == -1); #warn "CSB: blk<$blk> remain<$remain>\n"; # If we are about to drop off the end, pull in more # context. if ($off >= $len) { for (; $remain > 0; $line++) { last if (!defined $lines[$line]); next if ($lines[$line] =~ /^-/); $remain--; $loff = $len; $blk .= $lines[$line] . "\n"; $len = length($blk); $line++; last; } # Bail if there is no further context. #warn "CSB: blk<$blk> off<$off> len<$len>\n"; if ($off >= $len) { last; } if ($level == 0 && substr($blk, $off) =~ /^.\s*#\s*define/) { $level++; $type = '#'; } } $p = $c; $c = substr($blk, $off, 1); $remainder = substr($blk, $off); #warn "CSB: c<$c> type<$type> level<$level> remainder<$remainder> coff_set<$coff_set>\n"; # Handle nested #if/#else. if ($remainder =~ /^#\s*(?:ifndef|ifdef|if)\s/) { push(@stack, [ $type, $level ]); } elsif ($remainder =~ /^#\s*(?:else|elif)\b/) { ($type, $level) = @{$stack[$#stack - 1]}; } elsif ($remainder =~ /^#\s*endif\b/) { ($type, $level) = @{pop(@stack)}; } # Statement ends at the ';' or a close '}' at the # outermost level. if ($level == 0 && $c eq ';') { last; } # An else is really a conditional as long as its not else if if ($level == 0 && $coff_set == 0 && (!defined($p) || $p =~ /(?:\s|\}|\+)/) && $remainder =~ /^(else)(?:\s|{)/ && $remainder !~ /^else\s+if\b/) { $coff = $off + length($1) - 1; $coff_set = 1; #warn "CSB: mark coff<$coff> soff<$soff> 1<$1>\n"; #warn "[" . substr($blk, $soff, $coff - $soff + 1) . "]\n"; } if (($type eq '' || $type eq '(') && $c eq '(') { $level++; $type = '('; } if ($type eq '(' && $c eq ')') { $level--; $type = ($level != 0)? '(' : ''; if ($level == 0 && $coff < $soff) { $coff = $off; $coff_set = 1; #warn "CSB: mark coff<$coff>\n"; } } if (($type eq '' || $type eq '{') && $c eq '{') { $level++; $type = '{'; } if ($type eq '{' && $c eq '}') { $level--; $type = ($level != 0)? '{' : ''; if ($level == 0) { if (substr($blk, $off + 1, 1) eq ';') { $off++; } last; } } # Preprocessor commands end at the newline unless escaped. if ($type eq '#' && $c eq "\n" && $p ne "\\") { $level--; $type = ''; $off++; last; } $off++; } # We are truly at the end, so shuffle to the next line. if ($off == $len) { $loff = $len + 1; $line++; $remain--; } my $statement = substr($blk, $soff, $off - $soff + 1); my $condition = substr($blk, $soff, $coff - $soff + 1); #warn "STATEMENT<$statement>\n"; #warn "CONDITION<$condition>\n"; #print "coff<$coff> soff<$off> loff<$loff>\n"; return ($statement, $condition, $line, $remain + 1, $off - $loff + 1, $level); } sub statement_lines { my ($stmt) = @_; # Strip the diff line prefixes and rip blank lines at start and end. $stmt =~ s/(^|\n)./$1/g; $stmt =~ s/^\s*//; $stmt =~ s/\s*$//; my @stmt_lines = ($stmt =~ /\n/g); return $#stmt_lines + 2; } sub statement_rawlines { my ($stmt) = @_; my @stmt_lines = ($stmt =~ /\n/g); return $#stmt_lines + 2; } sub statement_block_size { my ($stmt) = @_; $stmt =~ s/(^|\n)./$1/g; $stmt =~ s/^\s*{//; $stmt =~ s/}\s*$//; $stmt =~ s/^\s*//; $stmt =~ s/\s*$//; my @stmt_lines = ($stmt =~ /\n/g); my @stmt_statements = ($stmt =~ /;/g); my $stmt_lines = $#stmt_lines + 2; my $stmt_statements = $#stmt_statements + 1; if ($stmt_lines > $stmt_statements) { return $stmt_lines; } else { return $stmt_statements; } } sub ctx_statement_full { my ($linenr, $remain, $off) = @_; my ($statement, $condition, $level); my (@chunks); # Grab the first conditional/block pair. ($statement, $condition, $linenr, $remain, $off, $level) = ctx_statement_block($linenr, $remain, $off); #print "F: c<$condition> s<$statement> remain<$remain>\n"; push(@chunks, [ $condition, $statement ]); if (!($remain > 0 && $condition =~ /^\s*(?:\n[+-])?\s*(?:if|else|do)\b/s)) { return ($level, $linenr, @chunks); } # Pull in the following conditional/block pairs and see if they # could continue the statement. for (;;) { ($statement, $condition, $linenr, $remain, $off, $level) = ctx_statement_block($linenr, $remain, $off); #print "C: c<$condition> s<$statement> remain<$remain>\n"; last if (!($remain > 0 && $condition =~ /^(?:\s*\n[+-])*\s*(?:else|do)\b/s)); #print "C: push\n"; push(@chunks, [ $condition, $statement ]); } return ($level, $linenr, @chunks); } sub ctx_block_get { my ($linenr, $remain, $outer, $open, $close, $off) = @_; my $line; my $start = $linenr - 1; my $blk = ''; my @o; my @c; my @res = (); my $level = 0; my @stack = ($level); for ($line = $start; $remain > 0; $line++) { next if ($rawlines[$line] =~ /^-/); $remain--; $blk .= $rawlines[$line]; # Handle nested #if/#else. if ($lines[$line] =~ /^.\s*#\s*(?:ifndef|ifdef|if)\s/) { push(@stack, $level); } elsif ($lines[$line] =~ /^.\s*#\s*(?:else|elif)\b/) { $level = $stack[$#stack - 1]; } elsif ($lines[$line] =~ /^.\s*#\s*endif\b/) { $level = pop(@stack); } foreach my $c (split(//, $lines[$line])) { ##print "C<$c>L<$level><$open$close>O<$off>\n"; if ($off > 0) { $off--; next; } if ($c eq $close && $level > 0) { $level--; last if ($level == 0); } elsif ($c eq $open) { $level++; } } if (!$outer || $level <= 1) { push(@res, $rawlines[$line]); } last if ($level == 0); } return ($level, @res); } sub ctx_block_outer { my ($linenr, $remain) = @_; my ($level, @r) = ctx_block_get($linenr, $remain, 1, '{', '}', 0); return @r; } sub ctx_block { my ($linenr, $remain) = @_; my ($level, @r) = ctx_block_get($linenr, $remain, 0, '{', '}', 0); return @r; } sub ctx_statement { my ($linenr, $remain, $off) = @_; my ($level, @r) = ctx_block_get($linenr, $remain, 0, '(', ')', $off); return @r; } sub ctx_block_level { my ($linenr, $remain) = @_; return ctx_block_get($linenr, $remain, 0, '{', '}', 0); } sub ctx_statement_level { my ($linenr, $remain, $off) = @_; return ctx_block_get($linenr, $remain, 0, '(', ')', $off); } sub ctx_locate_comment { my ($first_line, $end_line) = @_; # Catch a comment on the end of the line itself. my ($current_comment) = ($rawlines[$end_line - 1] =~ m@.*(/\*.*\*/)\s*(?:\\\s*)?$@); return $current_comment if (defined $current_comment); # Look through the context and try and figure out if there is a # comment. my $in_comment = 0; $current_comment = ''; for (my $linenr = $first_line; $linenr < $end_line; $linenr++) { my $line = $rawlines[$linenr - 1]; #warn " $line\n"; if ($linenr == $first_line and $line =~ m@^.\s*\*@) { $in_comment = 1; } if ($line =~ m@/\*@) { $in_comment = 1; } if (!$in_comment && $current_comment ne '') { $current_comment = ''; } $current_comment .= $line . "\n" if ($in_comment); if ($line =~ m@\*/@) { $in_comment = 0; } } chomp($current_comment); return($current_comment); } sub ctx_has_comment { my ($first_line, $end_line) = @_; my $cmt = ctx_locate_comment($first_line, $end_line); ##print "LINE: $rawlines[$end_line - 1 ]\n"; ##print "CMMT: $cmt\n"; return ($cmt ne ''); } sub raw_line { my ($linenr, $cnt) = @_; my $offset = $linenr - 1; $cnt++; my $line; while ($cnt) { $line = $rawlines[$offset++]; next if (defined($line) && $line =~ /^-/); $cnt--; } return $line; } sub cat_vet { my ($vet) = @_; my ($res, $coded); $res = ''; while ($vet =~ /([^[:cntrl:]]*)([[:cntrl:]]|$)/g) { $res .= $1; if ($2 ne '') { $coded = sprintf("^%c", unpack('C', $2) + 64); $res .= $coded; } } $res =~ s/$/\$/; return $res; } my $av_preprocessor = 0; my $av_pending; my @av_paren_type; my $av_pend_colon; sub annotate_reset { $av_preprocessor = 0; $av_pending = '_'; @av_paren_type = ('E'); $av_pend_colon = 'O'; } sub annotate_values { my ($stream, $type) = @_; my $res; my $var = '_' x length($stream); my $cur = $stream; print "$stream\n" if ($dbg_values > 1); while (length($cur)) { @av_paren_type = ('E') if ($#av_paren_type < 0); print " <" . join('', @av_paren_type) . "> <$type> <$av_pending>" if ($dbg_values > 1); if ($cur =~ /^(\s+)/o) { print "WS($1)\n" if ($dbg_values > 1); if ($1 =~ /\n/ && $av_preprocessor) { $type = pop(@av_paren_type); $av_preprocessor = 0; } } elsif ($cur =~ /^(\(\s*$Type\s*)\)/ && $av_pending eq '_') { print "CAST($1)\n" if ($dbg_values > 1); push(@av_paren_type, $type); $type = 'c'; } elsif ($cur =~ /^($Type)\s*(?:$Ident|,|\)|\(|\s*$)/) { print "DECLARE($1)\n" if ($dbg_values > 1); $type = 'T'; } elsif ($cur =~ /^($Modifier)\s*/) { print "MODIFIER($1)\n" if ($dbg_values > 1); $type = 'T'; } elsif ($cur =~ /^(\#\s*define\s*$Ident)(\(?)/o) { print "DEFINE($1,$2)\n" if ($dbg_values > 1); $av_preprocessor = 1; push(@av_paren_type, $type); if ($2 ne '') { $av_pending = 'N'; } $type = 'E'; } elsif ($cur =~ /^(\#\s*(?:undef\s*$Ident|include\b))/o) { print "UNDEF($1)\n" if ($dbg_values > 1); $av_preprocessor = 1; push(@av_paren_type, $type); } elsif ($cur =~ /^(\#\s*(?:ifdef|ifndef|if))/o) { print "PRE_START($1)\n" if ($dbg_values > 1); $av_preprocessor = 1; push(@av_paren_type, $type); push(@av_paren_type, $type); $type = 'E'; } elsif ($cur =~ /^(\#\s*(?:else|elif))/o) { print "PRE_RESTART($1)\n" if ($dbg_values > 1); $av_preprocessor = 1; push(@av_paren_type, $av_paren_type[$#av_paren_type]); $type = 'E'; } elsif ($cur =~ /^(\#\s*(?:endif))/o) { print "PRE_END($1)\n" if ($dbg_values > 1); $av_preprocessor = 1; # Assume all arms of the conditional end as this # one does, and continue as if the #endif was not here. pop(@av_paren_type); push(@av_paren_type, $type); $type = 'E'; } elsif ($cur =~ /^(\\\n)/o) { print "PRECONT($1)\n" if ($dbg_values > 1); } elsif ($cur =~ /^(__attribute__)\s*\(?/o) { print "ATTR($1)\n" if ($dbg_values > 1); $av_pending = $type; $type = 'N'; } elsif ($cur =~ /^(sizeof)\s*(\()?/o) { print "SIZEOF($1)\n" if ($dbg_values > 1); if (defined $2) { $av_pending = 'V'; } $type = 'N'; } elsif ($cur =~ /^(if|while|for)\b/o) { print "COND($1)\n" if ($dbg_values > 1); $av_pending = 'E'; $type = 'N'; } elsif ($cur =~/^(case)/o) { print "CASE($1)\n" if ($dbg_values > 1); $av_pend_colon = 'C'; $type = 'N'; } elsif ($cur =~/^(return|else|goto|typeof|__typeof__)\b/o) { print "KEYWORD($1)\n" if ($dbg_values > 1); $type = 'N'; } elsif ($cur =~ /^(\()/o) { print "PAREN('$1')\n" if ($dbg_values > 1); push(@av_paren_type, $av_pending); $av_pending = '_'; $type = 'N'; } elsif ($cur =~ /^(\))/o) { my $new_type = pop(@av_paren_type); if ($new_type ne '_') { $type = $new_type; print "PAREN('$1') -> $type\n" if ($dbg_values > 1); } else { print "PAREN('$1')\n" if ($dbg_values > 1); } } elsif ($cur =~ /^($Ident)\s*\(/o) { print "FUNC($1)\n" if ($dbg_values > 1); $type = 'V'; $av_pending = 'V'; } elsif ($cur =~ /^($Ident\s*):(?:\s*\d+\s*(,|=|;))?/) { if (defined $2 && $type eq 'C' || $type eq 'T') { $av_pend_colon = 'B'; } elsif ($type eq 'E') { $av_pend_colon = 'L'; } print "IDENT_COLON($1,$type>$av_pend_colon)\n" if ($dbg_values > 1); $type = 'V'; } elsif ($cur =~ /^($Ident|$Constant)/o) { print "IDENT($1)\n" if ($dbg_values > 1); $type = 'V'; } elsif ($cur =~ /^($Assignment)/o) { print "ASSIGN($1)\n" if ($dbg_values > 1); $type = 'N'; } elsif ($cur =~/^(;|{|})/) { print "END($1)\n" if ($dbg_values > 1); $type = 'E'; $av_pend_colon = 'O'; } elsif ($cur =~/^(,)/) { print "COMMA($1)\n" if ($dbg_values > 1); $type = 'C'; } elsif ($cur =~ /^(\?)/o) { print "QUESTION($1)\n" if ($dbg_values > 1); $type = 'N'; } elsif ($cur =~ /^(:)/o) { print "COLON($1,$av_pend_colon)\n" if ($dbg_values > 1); substr($var, length($res), 1, $av_pend_colon); if ($av_pend_colon eq 'C' || $av_pend_colon eq 'L') { $type = 'E'; } else { $type = 'N'; } $av_pend_colon = 'O'; } elsif ($cur =~ /^(\[)/o) { print "CLOSE($1)\n" if ($dbg_values > 1); $type = 'N'; } elsif ($cur =~ /^(-(?![->])|\+(?!\+)|\*|\&\&|\&)/o) { my $variant; print "OPV($1)\n" if ($dbg_values > 1); if ($type eq 'V') { $variant = 'B'; } else { $variant = 'U'; } substr($var, length($res), 1, $variant); $type = 'N'; } elsif ($cur =~ /^($Operators)/o) { print "OP($1)\n" if ($dbg_values > 1); if ($1 ne '++' && $1 ne '--') { $type = 'N'; } } elsif ($cur =~ /(^.)/o) { print "C($1)\n" if ($dbg_values > 1); } if (defined $1) { $cur = substr($cur, length($1)); $res .= $type x length($1); } } return ($res, $var); } sub possible { my ($possible, $line) = @_; my $notPermitted = qr{(?: ^(?: $Modifier| $Storage| $Type| DEFINE_\S+ )$| ^(?: goto| return| case| else| asm|__asm__| do| \#| \#\#| )(?:\s|$)| ^(?:typedef|struct|enum)\b )}x; warn "CHECK<$possible> ($line)\n" if ($dbg_possible > 2); if ($possible !~ $notPermitted) { # Check for modifiers. $possible =~ s/\s*$Storage\s*//g; $possible =~ s/\s*$Sparse\s*//g; if ($possible =~ /^\s*$/) { } elsif ($possible =~ /\s/) { $possible =~ s/\s*$Type\s*//g; for my $modifier (split(' ', $possible)) { if ($modifier !~ $notPermitted) { warn "MODIFIER: $modifier ($possible) ($line)\n" if ($dbg_possible); push(@modifierList, $modifier); } } } else { warn "POSSIBLE: $possible ($line)\n" if ($dbg_possible); push(@typeList, $possible); } build_types(); } else { warn "NOTPOSS: $possible ($line)\n" if ($dbg_possible > 1); } } my $prefix = ''; sub show_type { my ($type) = @_; return defined $use_type{$type} if (scalar keys %use_type > 0); return !defined $ignore_type{$type}; } sub report { my ($level, $type, $msg) = @_; if (!show_type($type) || (defined $tst_only && $msg !~ /\Q$tst_only\E/)) { return 0; } my $line; if ($show_types) { $line = "$prefix$level:$type: $msg\n"; } else { $line = "$prefix$level: $msg\n"; } $line = (split('\n', $line))[0] . "\n" if ($terse); push(our @report, $line); return 1; } sub report_dump { our @report; } sub ERROR { my ($type, $msg) = @_; if (report("ERROR", $type, $msg)) { our $clean = 0; our $cnt_error++; return 1; } return 0; } sub WARN { my ($type, $msg) = @_; if (report("WARNING", $type, $msg)) { our $clean = 0; our $cnt_warn++; return 1; } return 0; } sub CHK { my ($type, $msg) = @_; if ($check && report("CHECK", $type, $msg)) { our $clean = 0; our $cnt_chk++; return 1; } return 0; } sub trim { my ($string) = @_; $string =~ s/^\s+|\s+$//g; return $string; } sub ltrim { my ($string) = @_; $string =~ s/^\s+//; return $string; } sub rtrim { my ($string) = @_; $string =~ s/\s+$//; return $string; } sub string_find_replace { my ($string, $find, $replace) = @_; $string =~ s/$find/$replace/g; return $string; } sub tabify { my ($leading) = @_; my $source_indent = 8; my $max_spaces_before_tab = $source_indent - 1; my $spaces_to_tab = " " x $source_indent; #convert leading spaces to tabs 1 while $leading =~ s@^([\t]*)$spaces_to_tab@$1\t@g; #Remove spaces before a tab 1 while $leading =~ s@^([\t]*)( {1,$max_spaces_before_tab})\t@$1\t@g; return "$leading"; } sub pos_last_openparen { my ($line) = @_; my $pos = 0; my $opens = $line =~ tr/\(/\(/; my $closes = $line =~ tr/\)/\)/; my $last_openparen = 0; if (($opens == 0) || ($closes >= $opens)) { return -1; } my $len = length($line); for ($pos = 0; $pos < $len; $pos++) { my $string = substr($line, $pos); if ($string =~ /^($FuncArg|$balanced_parens)/) { $pos += length($1) - 1; } elsif (substr($line, $pos, 1) eq '(') { $last_openparen = $pos; } elsif (index($string, '(') == -1) { last; } } return length(expand_tabs(substr($line, 0, $last_openparen))) + 1; } sub process { my $filename = shift; my $linenr=0; my $prevline=""; my $prevrawline=""; my $stashline=""; my $stashrawline=""; my $length; my $indent; my $previndent=0; my $stashindent=0; our $clean = 1; my $signoff = 0; my $is_patch = 0; my $in_header_lines = 1; my $in_commit_log = 0; #Scanning lines before patch my $non_utf8_charset = 0; our @report = (); our $cnt_lines = 0; our $cnt_error = 0; our $cnt_warn = 0; our $cnt_chk = 0; # Trace the real file/line as we go. my $realfile = ''; my $realline = 0; my $realcnt = 0; my $here = ''; my $in_comment = 0; my $comment_edge = 0; my $first_line = 0; my $p1_prefix = ''; my $prev_values = 'E'; # suppression flags my %suppress_ifbraces; my %suppress_whiletrailers; my %suppress_export; my $suppress_statement = 0; my %signatures = (); # Pre-scan the patch sanitizing the lines. # Pre-scan the patch looking for any __setup documentation. # my @setup_docs = (); my $setup_docs = 0; my $camelcase_file_seeded = 0; sanitise_line_reset(); my $line; foreach my $rawline (@rawlines) { $linenr++; $line = $rawline; push(@fixed, $rawline) if ($fix); if ($rawline=~/^\+\+\+\s+(\S+)/) { $setup_docs = 0; if ($1 =~ m@Documentation/kernel-parameters.txt$@) { $setup_docs = 1; } #next; } if ($rawline=~/^\@\@ -\d+(?:,\d+)? \+(\d+)(,(\d+))? \@\@/) { $realline=$1-1; if (defined $2) { $realcnt=$3+1; } else { $realcnt=1+1; } $in_comment = 0; # Guestimate if this is a continuing comment. Run # the context looking for a comment "edge". If this # edge is a close comment then we must be in a comment # at context start. my $edge; my $cnt = $realcnt; for (my $ln = $linenr + 1; $cnt > 0; $ln++) { next if (defined $rawlines[$ln - 1] && $rawlines[$ln - 1] =~ /^-/); $cnt--; #print "RAW<$rawlines[$ln - 1]>\n"; last if (!defined $rawlines[$ln - 1]); if ($rawlines[$ln - 1] =~ m@(/\*|\*/)@ && $rawlines[$ln - 1] !~ m@"[^"]*(?:/\*|\*/)[^"]*"@) { ($edge) = $1; last; } } if (defined $edge && $edge eq '*/') { $in_comment = 1; } # Guestimate if this is a continuing comment. If this # is the start of a diff block and this line starts # ' *' then it is very likely a comment. if (!defined $edge && $rawlines[$linenr] =~ m@^.\s*(?:\*\*+| \*)(?:\s|$)@) { $in_comment = 1; } ##print "COMMENT:$in_comment edge<$edge> $rawline\n"; sanitise_line_reset($in_comment); } elsif ($realcnt && $rawline =~ /^(?:\+| |$)/) { # Standardise the strings and chars within the input to # simplify matching -- only bother with positive lines. $line = sanitise_line($rawline); } push(@lines, $line); if ($realcnt > 1) { $realcnt-- if ($line =~ /^(?:\+| |$)/); } else { $realcnt = 0; } #print "==>$rawline\n"; #print "-->$line\n"; if ($setup_docs && $line =~ /^\+/) { push(@setup_docs, $line); } } $prefix = ''; $realcnt = 0; $linenr = 0; foreach my $line (@lines) { $linenr++; my $sline = $line; #copy of $line $sline =~ s/$;/ /g; #with comments as spaces my $rawline = $rawlines[$linenr - 1]; #extract the line range in the file after the patch is applied if ($line=~/^\@\@ -\d+(?:,\d+)? \+(\d+)(,(\d+))? \@\@/) { $is_patch = 1; $first_line = $linenr + 1; $realline=$1-1; if (defined $2) { $realcnt=$3+1; } else { $realcnt=1+1; } annotate_reset(); $prev_values = 'E'; %suppress_ifbraces = (); %suppress_whiletrailers = (); %suppress_export = (); $suppress_statement = 0; next; # track the line number as we move through the hunk, note that # new versions of GNU diff omit the leading space on completely # blank context lines so we need to count that too. } elsif ($line =~ /^( |\+|$)/) { $realline++; $realcnt-- if ($realcnt != 0); # Measure the line length and indent. ($length, $indent) = line_stats($rawline); # Track the previous line. ($prevline, $stashline) = ($stashline, $line); ($previndent, $stashindent) = ($stashindent, $indent); ($prevrawline, $stashrawline) = ($stashrawline, $rawline); #warn "line<$line>\n"; } elsif ($realcnt == 1) { $realcnt--; } my $hunk_line = ($realcnt != 0); #make up the handle for any error we report on this line $prefix = "$filename:$realline: " if ($emacs && $file); $prefix = "$filename:$linenr: " if ($emacs && !$file); $here = "#$linenr: " if (!$file); $here = "#$realline: " if ($file); # extract the filename as it passes if ($line =~ /^diff --git.*?(\S+)$/) { $realfile = $1; $realfile =~ s@^([^/]*)/@@ if (!$file); $in_commit_log = 0; } elsif ($line =~ /^\+\+\+\s+(\S+)/) { $realfile = $1; $realfile =~ s@^([^/]*)/@@ if (!$file); $in_commit_log = 0; next; } $here .= "FILE: $realfile:$realline:" if ($realcnt != 0); my $hereline = "$here\n$rawline\n"; my $herecurr = "$here\n$rawline\n"; my $hereprev = "$here\n$prevrawline\n$rawline\n"; $cnt_lines++ if ($realcnt != 0); # Check for incorrect file permissions if ($line =~ /^new (file )?mode.*[7531]\d{0,2}$/) { my $permhere = $here . "FILE: $realfile\n"; if ($realfile !~ m@scripts/@ && $realfile !~ /\.(py|pl|awk|sh)$/) { ERROR("EXECUTE_PERMISSIONS", "do not set execute permissions for source files\n" . $permhere); } } # Check the patch for a signoff: if ($line =~ /^\s*signed-off-by:/i) { $signoff++; $in_commit_log = 0; } # Check for wrappage within a valid hunk of the file if ($realcnt != 0 && $line !~ m{^(?:\+|-| |\\ No newline|$)}) { ERROR("CORRUPTED_PATCH", "patch seems to be corrupt (line wrapped?)\n" . $herecurr) if (!$emitted_corrupt++); } # UTF-8 regex found at http://www.w3.org/International/questions/qa-forms-utf-8.en.php if (($realfile =~ /^$/ || $line =~ /^\+/) && $rawline !~ m/^$UTF8*$/) { my ($utf8_prefix) = ($rawline =~ /^($UTF8*)/); my $blank = copy_spacing($rawline); my $ptr = substr($blank, 0, length($utf8_prefix)) . "^"; my $hereptr = "$hereline$ptr\n"; CHK("INVALID_UTF8", "Invalid UTF-8, patch and commit message should be encoded in UTF-8\n" . $hereptr); } # Check if it's the start of a commit log # (not a header line and we haven't seen the patch filename) if ($in_header_lines && $realfile =~ /^$/ && $rawline !~ /^(commit\b|from\b|[\w-]+:).+$/i) { $in_header_lines = 0; $in_commit_log = 1; } # Check if there is UTF-8 in a commit log when a mail header has explicitly # declined it, i.e defined some charset where it is missing. if ($in_header_lines && $rawline =~ /^Content-Type:.+charset="(.+)".*$/ && $1 !~ /utf-8/i) { $non_utf8_charset = 1; } if ($in_commit_log && $non_utf8_charset && $realfile =~ /^$/ && $rawline =~ /$NON_ASCII_UTF8/) { WARN("UTF8_BEFORE_PATCH", "8-bit UTF-8 used in possible commit log\n" . $herecurr); } # ignore non-hunk lines and lines being removed next if (!$hunk_line || $line =~ /^-/); #trailing whitespace if ($line =~ /^\+.*\015/) { my $herevet = "$here\n" . cat_vet($rawline) . "\n"; if (ERROR("DOS_LINE_ENDINGS", "DOS line endings\n" . $herevet) && $fix) { $fixed[$linenr - 1] =~ s/[\s\015]+$//; } } elsif ($rawline =~ /^\+.*\S\s+$/ || $rawline =~ /^\+\s+$/) { my $herevet = "$here\n" . cat_vet($rawline) . "\n"; if (ERROR("TRAILING_WHITESPACE", "trailing whitespace\n" . $herevet) && $fix) { $fixed[$linenr - 1] =~ s/\s+$//; } $rpt_cleaners = 1; } # Check for FSF mailing addresses. if ($rawline =~ /\bwrite to the Free/i || $rawline =~ /\b59\s+Temple\s+Pl/i || $rawline =~ /\b51\s+Franklin\s+St/i) { my $herevet = "$here\n" . cat_vet($rawline) . "\n"; my $msg_type = \&ERROR; $msg_type = \&CHK if ($file); &{$msg_type}("FSF_MAILING_ADDRESS", "Do not include the paragraph about writing to the Free Software Foundation's mailing address from the sample GPL notice. The FSF has changed addresses in the past, and may do so again. Linux already includes a copy of the GPL.\n" . $herevet) } # check we are in a valid source file if not then ignore this hunk next if ($realfile !~ /\.(h|c|s|S|pl|sh)$/); #line length limit if ($line =~ /^\+/ && $prevrawline !~ /\/\*\*/ && $rawline !~ /^.\s*\*\s*\@$Ident\s/ && !($line =~ /^\+\s*$logFunctions\s*\(\s*(?:(KERN_\S+\s*|[^"]*))?"[X\t]*"\s*(?:|,|\)\s*;)\s*$/ || $line =~ /^\+\s*"[^"]*"\s*(?:\s*|,|\)\s*;)\s*$/) && $length > $max_line_length) { WARN("LONG_LINE", "line over $max_line_length characters\n" . $herecurr); } # Check for user-visible strings broken across lines, which breaks the ability # to grep for the string. Make exceptions when the previous string ends in a # newline (multiple lines in one string constant) or '\t', '\r', ';', or '{' # (common in inline assembly) or is a octal \123 or hexadecimal \xaf value if ($line =~ /^\+\s*"/ && $prevline =~ /"\s*$/ && $prevrawline !~ /(?:\\(?:[ntr]|[0-7]{1,3}|x[0-9a-fA-F]{1,2})|;\s*|\{\s*)"\s*$/) { WARN("SPLIT_STRING", "quoted string split across lines\n" . $hereprev); } # check for spaces before a quoted newline if ($rawline =~ /^.*\".*\s\\n/) { if (WARN("QUOTED_WHITESPACE_BEFORE_NEWLINE", "unnecessary whitespace before a quoted newline\n" . $herecurr) && $fix) { $fixed[$linenr - 1] =~ s/^(\+.*\".*)\s+\\n/$1\\n/; } } # check for adding lines without a newline. if ($line =~ /^\+/ && defined $lines[$linenr] && $lines[$linenr] =~ /^\\ No newline at end of file/) { WARN("MISSING_EOF_NEWLINE", "adding a line without newline at end of file\n" . $herecurr); } # check we are in a valid source file C or perl if not then ignore this hunk next if ($realfile !~ /\.(h|c|pl)$/); # at the beginning of a line any tabs must come first and anything # more than 8 must use tabs. if ($rawline =~ /^\+\s* \t\s*\S/ || $rawline =~ /^\+\s* \s*/) { my $herevet = "$here\n" . cat_vet($rawline) . "\n"; $rpt_cleaners = 1; if (ERROR("CODE_INDENT", "code indent should use tabs where possible\n" . $herevet) && $fix) { $fixed[$linenr - 1] =~ s/^\+([ \t]+)/"\+" . tabify($1)/e; } } # check for space before tabs. if ($rawline =~ /^\+/ && $rawline =~ / \t/) { my $herevet = "$here\n" . cat_vet($rawline) . "\n"; if (WARN("SPACE_BEFORE_TAB", "please, no space before tabs\n" . $herevet) && $fix) { while ($fixed[$linenr - 1] =~ s/(^\+.*) {8,8}\t/$1\t\t/) {} while ($fixed[$linenr - 1] =~ s/(^\+.*) +\t/$1\t/) {} } } # check for && or || at the start of a line if ($rawline =~ /^\+\s*(&&|\|\|)/) { CHK("LOGICAL_CONTINUATIONS", "Logical continuations should be on the previous line\n" . $hereprev); } # check multi-line statement indentation matches previous line if ($^V && $^V ge 5.10.0 && $prevline =~ /^\+([ \t]*)((?:$c90_Keywords(?:\s+if)\s*)|(?:$Declare\s*)?(?:$Ident|\(\s*\*\s*$Ident\s*\))\s*|$Ident\s*=\s*$Ident\s*)\(.*(\&\&|\|\||,)\s*$/) { $prevline =~ /^\+(\t*)(.*)$/; my $oldindent = $1; my $rest = $2; my $pos = pos_last_openparen($rest); if ($pos >= 0) { $line =~ /^(\+| )([ \t]*)/; my $newindent = $2; my $goodtabindent = $oldindent . "\t" x ($pos / 8) . " " x ($pos % 8); my $goodspaceindent = $oldindent . " " x $pos; if ($newindent ne $goodtabindent && $newindent ne $goodspaceindent) { if (CHK("PARENTHESIS_ALIGNMENT", "Alignment should match open parenthesis\n" . $hereprev) && $fix && $line =~ /^\+/) { $fixed[$linenr - 1] =~ s/^\+[ \t]*/\+$goodtabindent/; } } } } if ($line =~ /^\+.*\*[ \t]*\)[ \t]+(?!$Assignment|$Arithmetic)/) { if (CHK("SPACING", "No space is necessary after a cast\n" . $hereprev) && $fix) { $fixed[$linenr - 1] =~ s/^(\+.*\*[ \t]*\))[ \t]+/$1/; } } # check for spaces at the beginning of a line. # Exceptions: # 1) within comments # 2) indented preprocessor commands # 3) hanging labels if ($rawline =~ /^\+ / && $line !~ /^\+ *(?:$;|#|$Ident:)/) { my $herevet = "$here\n" . cat_vet($rawline) . "\n"; if (WARN("LEADING_SPACE", "please, no spaces at the start of a line\n" . $herevet) && $fix) { $fixed[$linenr - 1] =~ s/^\+([ \t]+)/"\+" . tabify($1)/e; } } # check we are in a valid C source file if not then ignore this hunk next if ($realfile !~ /\.(h|c)$/); # check for RCS/CVS revision markers if ($rawline =~ /^\+.*\$(Revision|Log|Id)(?:\$|)/) { WARN("CVS_KEYWORD", "CVS style keyword markers, these will _not_ be updated\n". $herecurr); } # Check for potential 'bare' types my ($stat, $cond, $line_nr_next, $remain_next, $off_next, $realline_next); #print "LINE<$line>\n"; if ($linenr >= $suppress_statement && $realcnt && $sline =~ /.\s*\S/) { ($stat, $cond, $line_nr_next, $remain_next, $off_next) = ctx_statement_block($linenr, $realcnt, 0); $stat =~ s/\n./\n /g; $cond =~ s/\n./\n /g; #print "linenr<$linenr> <$stat>\n"; # If this statement has no statement boundaries within # it there is no point in retrying a statement scan # until we hit end of it. my $frag = $stat; $frag =~ s/;+\s*$//; if ($frag !~ /(?:{|;)/) { #print "skip<$line_nr_next>\n"; $suppress_statement = $line_nr_next; } # Find the real next line. $realline_next = $line_nr_next; if (defined $realline_next && (!defined $lines[$realline_next - 1] || substr($lines[$realline_next - 1], $off_next) =~ /^\s*$/)) { $realline_next++; } my $s = $stat; $s =~ s/{.*$//s; # Ignore goto labels. if ($s =~ /$Ident:\*$/s) { # Ignore functions being called } elsif ($s =~ /^.\s*$Ident\s*\(/s) { } elsif ($s =~ /^.\s*else\b/s) { # declarations always start with types } elsif ($prev_values eq 'E' && $s =~ /^.\s*(?:$Storage\s+)?(?:$Inline\s+)?(?:const\s+)?((?:\s*$Ident)+?)\b(?:\s+$Sparse)?\s*\**\s*(?:$Ident|\(\*[^\)]*\))(?:\s*$Modifier)?\s*(?:;|=|,|\()/s) { my $type = $1; $type =~ s/\s+/ /g; possible($type, "A:" . $s); # definitions in global scope can only start with types } elsif ($s =~ /^.(?:$Storage\s+)?(?:$Inline\s+)?(?:const\s+)?($Ident)\b\s*(?!:)/s) { possible($1, "B:" . $s); } # any (foo ... *) is a pointer cast, and foo is a type while ($s =~ /\(($Ident)(?:\s+$Sparse)*[\s\*]+\s*\)/sg) { possible($1, "C:" . $s); } # Check for any sort of function declaration. # int foo(something bar, other baz); # void (*store_gdt)(x86_descr_ptr *); if ($prev_values eq 'E' && $s =~ /^(.(?:typedef\s*)?(?:(?:$Storage|$Inline)\s*)*\s*$Type\s*(?:\b$Ident|\(\*\s*$Ident\))\s*)\(/s) { my ($name_len) = length($1); my $ctx = $s; substr($ctx, 0, $name_len + 1, ''); $ctx =~ s/\)[^\)]*$//; for my $arg (split(/\s*,\s*/, $ctx)) { if ($arg =~ /^(?:const\s+)?($Ident)(?:\s+$Sparse)*\s*\**\s*(:?\b$Ident)?$/s || $arg =~ /^($Ident)$/s) { possible($1, "D:" . $s); } } } } # # Checks which may be anchored in the context. # # Check for switch () and associated case and default # statements should be at the same indent. if ($line=~/\bswitch\s*\(.*\)/) { my $err = ''; my $sep = ''; my @ctx = ctx_block_outer($linenr, $realcnt); shift(@ctx); for my $ctx (@ctx) { my ($clen, $cindent) = line_stats($ctx); if ($ctx =~ /^\+\s*(case\s+|default:)/ && $indent != $cindent) { $err .= "$sep$ctx\n"; $sep = ''; } else { $sep = "[...]\n"; } } if ($err ne '') { ERROR("SWITCH_CASE_INDENT_LEVEL", "switch and case should be at the same indent\n$hereline$err"); } } # if/while/etc brace do not go on next line, unless defining a do while loop, # or if that brace on the next line is for something else if ($line =~ /(.*)\b((?:if|while|for|switch)\s*\(|do\b|else\b)/ && $line !~ /^.\s*\#/) { my $pre_ctx = "$1$2"; my ($level, @ctx) = ctx_statement_level($linenr, $realcnt, 0); if ($line =~ /^\+\t{6,}/) { WARN("DEEP_INDENTATION", "Too many leading tabs - consider code refactoring\n" . $herecurr); } my $ctx_cnt = $realcnt - $#ctx - 1; my $ctx = join("\n", @ctx); my $ctx_ln = $linenr; my $ctx_skip = $realcnt; while ($ctx_skip > $ctx_cnt || ($ctx_skip == $ctx_cnt && defined $lines[$ctx_ln - 1] && $lines[$ctx_ln - 1] =~ /^-/)) { ##print "SKIP<$ctx_skip> CNT<$ctx_cnt>\n"; $ctx_skip-- if (!defined $lines[$ctx_ln - 1] || $lines[$ctx_ln - 1] !~ /^-/); $ctx_ln++; } #print "realcnt<$realcnt> ctx_cnt<$ctx_cnt>\n"; #print "pre<$pre_ctx>\nline<$line>\nctx<$ctx>\nnext<$lines[$ctx_ln - 1]>\n"; if ($ctx !~ /{\s*/ && defined($lines[$ctx_ln -1]) && $lines[$ctx_ln - 1] =~ /^\+\s*{/) { ERROR("OPEN_BRACE", "that open brace { should be on the previous line\n" . "$here\n$ctx\n$rawlines[$ctx_ln - 1]\n"); } if ($level == 0 && $pre_ctx !~ /}\s*while\s*\($/ && $ctx =~ /\)\s*\;\s*$/ && defined $lines[$ctx_ln - 1]) { my ($nlength, $nindent) = line_stats($lines[$ctx_ln - 1]); if ($nindent > $indent) { WARN("TRAILING_SEMICOLON", "trailing semicolon indicates no statements, indent implies otherwise\n" . "$here\n$ctx\n$rawlines[$ctx_ln - 1]\n"); } } } # Check relative indent for conditionals and blocks. if ($line =~ /\b(?:(?:if|while|for)\s*\(|do\b)/ && $line !~ /^.\s*#/ && $line !~ /\}\s*while\s*/) { ($stat, $cond, $line_nr_next, $remain_next, $off_next) = ctx_statement_block($linenr, $realcnt, 0) if (!defined $stat); my ($s, $c) = ($stat, $cond); substr($s, 0, length($c), ''); # Make sure we remove the line prefixes as we have # none on the first line, and are going to readd them # where necessary. $s =~ s/\n./\n/gs; # Find out how long the conditional actually is. my @newlines = ($c =~ /\n/gs); my $cond_lines = 1 + $#newlines; # We want to check the first line inside the block # starting at the end of the conditional, so remove: # 1) any blank line termination # 2) any opening brace { on end of the line # 3) any do (...) { my $continuation = 0; my $check = 0; $s =~ s/^.*\bdo\b//; $s =~ s/^\s*{//; if ($s =~ s/^\s*\\//) { $continuation = 1; } if ($s =~ s/^\s*?\n//) { $check = 1; $cond_lines++; } # Also ignore a loop construct at the end of a # preprocessor statement. if (($prevline =~ /^.\s*#\s*define\s/ || $prevline =~ /\\\s*$/) && $continuation == 0) { $check = 0; } my $cond_ptr = -1; $continuation = 0; while ($cond_ptr != $cond_lines) { $cond_ptr = $cond_lines; # If we see an #else/#elif then the code # is not linear. if ($s =~ /^\s*\#\s*(?:else|elif)/) { $check = 0; } # Ignore: # 1) blank lines, they should be at 0, # 2) preprocessor lines, and # 3) labels. if ($continuation || $s =~ /^\s*?\n/ || $s =~ /^\s*#\s*?/ || $s =~ /^\s*$Ident\s*:/) { $continuation = ($s =~ /^.*?\\\n/) ? 1 : 0; if ($s =~ s/^.*?\n//) { $cond_lines++; } } } my (undef, $sindent) = line_stats("+" . $s); my $stat_real = raw_line($linenr, $cond_lines); # Check if either of these lines are modified, else # this is not this patch's fault. if (!defined($stat_real) || $stat !~ /^\+/ && $stat_real !~ /^\+/) { $check = 0; } if (defined($stat_real) && $cond_lines > 1) { $stat_real = "[...]\n$stat_real"; } #print "line<$line> prevline<$prevline> indent<$indent> sindent<$sindent> check<$check> continuation<$continuation> s<$s> cond_lines<$cond_lines> stat_real<$stat_real> stat<$stat>\n"; if ($check && (($sindent % 8) != 0 || ($sindent <= $indent && $s ne ''))) { WARN("SUSPECT_CODE_INDENT", "suspect code indent for conditional statements ($indent, $sindent)\n" . $herecurr . "$stat_real\n"); } } # Track the 'values' across context and added lines. my $opline = $line; $opline =~ s/^./ /; my ($curr_values, $curr_vars) = annotate_values($opline . "\n", $prev_values); $curr_values = $prev_values . $curr_values; if ($dbg_values) { my $outline = $opline; $outline =~ s/\t/ /g; print "$linenr > .$outline\n"; print "$linenr > $curr_values\n"; print "$linenr > $curr_vars\n"; } $prev_values = substr($curr_values, -1); #ignore lines not being added next if ($line =~ /^[^\+]/); # TEST: allow direct testing of the type matcher. if ($dbg_type) { if ($line =~ /^.\s*$Declare\s*$/) { ERROR("TEST_TYPE", "TEST: is type\n" . $herecurr); } elsif ($dbg_type > 1 && $line =~ /^.+($Declare)/) { ERROR("TEST_NOT_TYPE", "TEST: is not type ($1 is)\n". $herecurr); } next; } # TEST: allow direct testing of the attribute matcher. if ($dbg_attr) { if ($line =~ /^.\s*$Modifier\s*$/) { ERROR("TEST_ATTR", "TEST: is attr\n" . $herecurr); } elsif ($dbg_attr > 1 && $line =~ /^.+($Modifier)/) { ERROR("TEST_NOT_ATTR", "TEST: is not attr ($1 is)\n". $herecurr); } next; } # check for initialisation to aggregates open brace on the next line if ($line =~ /^.\s*{/ && $prevline =~ /(?:^|[^=])=\s*$/) { ERROR("OPEN_BRACE", "that open brace { should be on the previous line\n" . $hereprev); } # # Checks which are anchored on the added line. # # check for malformed paths in #include statements (uses RAW line) if ($rawline =~ m{^.\s*\#\s*include\s+[<"](.*)[">]}) { my $path = $1; if ($path =~ m{//}) { ERROR("MALFORMED_INCLUDE", "malformed #include filename\n" . $herecurr); } } # no C99 // comments if ($line =~ m{//}) { if (ERROR("C99_COMMENTS", "do not use C99 // comments\n" . $herecurr) && $fix) { my $line = $fixed[$linenr - 1]; if ($line =~ /\/\/(.*)$/) { my $comment = trim($1); $fixed[$linenr - 1] =~ s@\/\/(.*)$@/\* $comment \*/@; } } } # Remove C99 comments. $line =~ s@//.*@@; $opline =~ s@//.*@@; # check for global initialisers. if ($line =~ /^\+(\s*$Type\s*$Ident\s*(?:\s+$Modifier))*\s*=\s*(0|NULL|false)\s*;/) { if (ERROR("GLOBAL_INITIALISERS", "do not initialise globals to 0 or NULL\n" . $herecurr) && $fix) { $fixed[$linenr - 1] =~ s/($Type\s*$Ident\s*(?:\s+$Modifier))*\s*=\s*(0|NULL|false)\s*;/$1;/; } } # check for static initialisers. if ($line =~ /^\+.*\bstatic\s.*=\s*(0|NULL|false)\s*;/) { if (ERROR("INITIALISED_STATIC", "do not initialise statics to 0 or NULL\n" . $herecurr) && $fix) { $fixed[$linenr - 1] =~ s/(\bstatic\s.*?)\s*=\s*(0|NULL|false)\s*;/$1;/; } } # check for static const char * arrays. if ($line =~ /\bstatic\s+const\s+char\s*\*\s*(\w+)\s*\[\s*\]\s*=\s*/) { WARN("STATIC_CONST_CHAR_ARRAY", "static const char * array should probably be static const char * const\n" . $herecurr); } # check for static char foo[] = "bar" declarations. if ($line =~ /\bstatic\s+char\s+(\w+)\s*\[\s*\]\s*=\s*"/) { WARN("STATIC_CONST_CHAR_ARRAY", "static char array declaration should probably be static const char\n" . $herecurr); } # check for non-global char *foo[] = {"bar", ...} declarations. if ($line =~ /^.\s+(?:static\s+|const\s+)?char\s+\*\s*\w+\s*\[\s*\]\s*=\s*\{/) { WARN("STATIC_CONST_CHAR_ARRAY", "char * array declaration might be better as static const\n" . $herecurr); } # check for function declarations without arguments like "int foo()" if ($line =~ /(\b$Type\s+$Ident)\s*\(\s*\)/) { if (ERROR("FUNCTION_WITHOUT_ARGS", "Bad function definition - $1() should probably be $1(void)\n" . $herecurr) && $fix) { $fixed[$linenr - 1] =~ s/(\b($Type)\s+($Ident))\s*\(\s*\)/$2 $3(void)/; } } # check for new typedefs, only function parameters and sparse annotations # make sense. if ($line =~ /\btypedef\s/ && $line !~ /\btypedef\s+$Type\s*\(\s*\*?$Ident\s*\)\s*\(/ && $line !~ /\btypedef\s+$Type\s+$Ident\s*\(/ && $line !~ /\b$typeTypedefs\b/ && $line !~ /\b__bitwise(?:__|)\b/) { WARN("NEW_TYPEDEFS", "do not add new typedefs\n" . $herecurr); } # * goes on variable not on type # (char*[ const]) while ($line =~ m{(\($NonptrType(\s*(?:$Modifier\b\s*|\*\s*)+)\))}g) { #print "AA<$1>\n"; my ($ident, $from, $to) = ($1, $2, $2); # Should start with a space. $to =~ s/^(\S)/ $1/; # Should not end with a space. $to =~ s/\s+$//; # '*'s should not have spaces between. while ($to =~ s/\*\s+\*/\*\*/) { } ## print "1: from<$from> to<$to> ident<$ident>\n"; if ($from ne $to) { if (ERROR("POINTER_LOCATION", "\"(foo$from)\" should be \"(foo$to)\"\n" . $herecurr) && $fix) { my $sub_from = $ident; my $sub_to = $ident; $sub_to =~ s/\Q$from\E/$to/; $fixed[$linenr - 1] =~ s@\Q$sub_from\E@$sub_to@; } } } while ($line =~ m{(\b$NonptrType(\s*(?:$Modifier\b\s*|\*\s*)+)($Ident))}g) { #print "BB<$1>\n"; my ($match, $from, $to, $ident) = ($1, $2, $2, $3); # Should start with a space. $to =~ s/^(\S)/ $1/; # Should not end with a space. $to =~ s/\s+$//; # '*'s should not have spaces between. while ($to =~ s/\*\s+\*/\*\*/) { } # Modifiers should have spaces. $to =~ s/(\b$Modifier$)/$1 /; ## print "2: from<$from> to<$to> ident<$ident>\n"; if ($from ne $to && $ident !~ /^$Modifier$/) { if (ERROR("POINTER_LOCATION", "\"foo${from}bar\" should be \"foo${to}bar\"\n" . $herecurr) && $fix) { my $sub_from = $match; my $sub_to = $match; $sub_to =~ s/\Q$from\E/$to/; $fixed[$linenr - 1] =~ s@\Q$sub_from\E@$sub_to@; } } } # function brace can't be on same line, except for #defines of do while, # or if closed on same line if (($line=~/$Type\s*$Ident\(.*\).*\s{/) and !($line=~/\#\s*define.*do\s{/) and !($line=~/}/)) { ERROR("OPEN_BRACE", "open brace '{' following function declarations go on the next line\n" . $herecurr); } # open braces for enum, union and struct go on the same line. if ($line =~ /^.\s*{/ && $prevline =~ /^.\s*(?:typedef\s+)?(enum|union|struct)(?:\s+$Ident)?\s*$/) { ERROR("OPEN_BRACE", "open brace '{' following $1 go on the same line\n" . $hereprev); } # missing space after union, struct or enum definition if ($line =~ /^.\s*(?:typedef\s+)?(enum|union|struct)(?:\s+$Ident){1,2}[=\{]/) { if (WARN("SPACING", "missing space after $1 definition\n" . $herecurr) && $fix) { $fixed[$linenr - 1] =~ s/^(.\s*(?:typedef\s+)?(?:enum|union|struct)(?:\s+$Ident){1,2})([=\{])/$1 $2/; } } # Function pointer declarations # check spacing between type, funcptr, and args # canonical declaration is "type (*funcptr)(args...)" if ($line =~ /^.\s*($Declare)\((\s*)\*(\s*)($Ident)(\s*)\)(\s*)\(/) { my $declare = $1; my $pre_pointer_space = $2; my $post_pointer_space = $3; my $funcname = $4; my $post_funcname_space = $5; my $pre_args_space = $6; # the $Declare variable will capture all spaces after the type # so check it for a missing trailing missing space but pointer return types # don't need a space so don't warn for those. my $post_declare_space = ""; if ($declare =~ /(\s+)$/) { $post_declare_space = $1; $declare = rtrim($declare); } if ($declare !~ /\*$/ && $post_declare_space =~ /^$/) { WARN("SPACING", "missing space after return type\n" . $herecurr); $post_declare_space = " "; } # unnecessary space "type (*funcptr)(args...)" # This test is not currently implemented because these declarations are # equivalent to # int foo(int bar, ...) # and this is form shouldn't/doesn't generate a checkpatch warning. # # elsif ($declare =~ /\s{2,}$/) { # WARN("SPACING", # "Multiple spaces after return type\n" . $herecurr); # } # unnecessary space "type ( *funcptr)(args...)" if (defined $pre_pointer_space && $pre_pointer_space =~ /^\s/) { WARN("SPACING", "Unnecessary space after function pointer open parenthesis\n" . $herecurr); } # unnecessary space "type (* funcptr)(args...)" if (defined $post_pointer_space && $post_pointer_space =~ /^\s/) { WARN("SPACING", "Unnecessary space before function pointer name\n" . $herecurr); } # unnecessary space "type (*funcptr )(args...)" if (defined $post_funcname_space && $post_funcname_space =~ /^\s/) { WARN("SPACING", "Unnecessary space after function pointer name\n" . $herecurr); } # unnecessary space "type (*funcptr) (args...)" if (defined $pre_args_space && $pre_args_space =~ /^\s/) { WARN("SPACING", "Unnecessary space before function pointer arguments\n" . $herecurr); } if (show_type("SPACING") && $fix) { $fixed[$linenr - 1] =~ s/^(.\s*)$Declare\s*\(\s*\*\s*$Ident\s*\)\s*\(/$1 . $declare . $post_declare_space . '(*' . $funcname . ')('/ex; } } # check for spacing round square brackets; allowed: # 1. with a type on the left -- int [] a; # 2. at the beginning of a line for slice initialisers -- [0...10] = 5, # 3. inside a curly brace -- = { [0...10] = 5 } while ($line =~ /(.*?\s)\[/g) { my ($where, $prefix) = ($-[1], $1); if ($prefix !~ /$Type\s+$/ && ($where != 0 || $prefix !~ /^.\s+$/) && $prefix !~ /[{,]\s+$/) { if (ERROR("BRACKET_SPACE", "space prohibited before open square bracket '['\n" . $herecurr) && $fix) { $fixed[$linenr - 1] =~ s/^(\+.*?)\s+\[/$1\[/; } } } # check for spaces between functions and their parentheses. while ($line =~ /($Ident)\s+\(/g) { my $name = $1; my $ctx_before = substr($line, 0, $-[1]); my $ctx = "$ctx_before$name"; # Ignore those directives where spaces _are_ permitted. if ($name =~ /^(?: if|for|while|switch|return|case| volatile|__volatile__| __attribute__|format|__extension__| asm|__asm__)$/x) { # cpp #define statements have non-optional spaces, ie # if there is a space between the name and the open # parenthesis it is simply not a parameter group. } elsif ($ctx_before =~ /^.\s*\#\s*define\s*$/) { # cpp #elif statement condition may start with a ( } elsif ($ctx =~ /^.\s*\#\s*elif\s*$/) { # If this whole things ends with a type its most # likely a typedef for a function. } elsif ($ctx =~ /$Type$/) { } else { if (WARN("SPACING", "space prohibited between function name and open parenthesis '('\n" . $herecurr) && $fix) { $fixed[$linenr - 1] =~ s/\b$name\s+\(/$name\(/; } } } # Check operator spacing. if (!($line=~/\#\s*include/)) { my $fixed_line = ""; my $line_fixed = 0; my $ops = qr{ <<=|>>=|<=|>=|==|!=| \+=|-=|\*=|\/=|%=|\^=|\|=|&=| =>|->|<<|>>|<|>|=|!|~| &&|\|\||,|\^|\+\+|--|&|\||\+|-|\*|\/|%| \?:|\?|: }x; my @elements = split(/($ops|;)/, $opline); my @fix_elements = (); my $off = 0; foreach my $el (@elements) { push(@fix_elements, substr($rawline, $off, length($el))); $off += length($el); } $off = 0; my $blank = copy_spacing($opline); my $last_after = -1; for (my $n = 0; $n < $#elements; $n += 2) { my $good = $fix_elements[$n] . $fix_elements[$n + 1]; ## print("n: <$n> good: <$good>\n"); $off += length($elements[$n]); # Pick up the preceding and succeeding characters. my $ca = substr($opline, 0, $off); my $cc = ''; if (length($opline) >= ($off + length($elements[$n + 1]))) { $cc = substr($opline, $off + length($elements[$n + 1])); } my $cb = "$ca$;$cc"; my $a = ''; $a = 'V' if ($elements[$n] ne ''); $a = 'W' if ($elements[$n] =~ /\s$/); $a = 'C' if ($elements[$n] =~ /$;$/); $a = 'B' if ($elements[$n] =~ /(\[|\()$/); $a = 'O' if ($elements[$n] eq ''); $a = 'E' if ($ca =~ /^\s*$/); my $op = $elements[$n + 1]; my $c = ''; if (defined $elements[$n + 2]) { $c = 'V' if ($elements[$n + 2] ne ''); $c = 'W' if ($elements[$n + 2] =~ /^\s/); $c = 'C' if ($elements[$n + 2] =~ /^$;/); $c = 'B' if ($elements[$n + 2] =~ /^(\)|\]|;)/); $c = 'O' if ($elements[$n + 2] eq ''); $c = 'E' if ($elements[$n + 2] =~ /^\s*\\$/); } else { $c = 'E'; } my $ctx = "${a}x${c}"; my $at = "(ctx:$ctx)"; my $ptr = substr($blank, 0, $off) . "^"; my $hereptr = "$hereline$ptr\n"; # Pull out the value of this operator. my $op_type = substr($curr_values, $off + 1, 1); # Get the full operator variant. my $opv = $op . substr($curr_vars, $off, 1); # Ignore operators passed as parameters. if ($op_type ne 'V' && $ca =~ /\s$/ && $cc =~ /^\s*,/) { # # Ignore comments # } elsif ($op =~ /^$;+$/) { # ; should have either the end of line or a space or \ after it } elsif ($op eq ';') { if ($ctx !~ /.x[WEBC]/ && $cc !~ /^\\/ && $cc !~ /^;/) { if (ERROR("SPACING", "space required after that '$op' $at\n" . $hereptr)) { $good = $fix_elements[$n] . trim($fix_elements[$n + 1]) . " "; $line_fixed = 1; } } # // is a comment } elsif ($op eq '//') { # : when part of a bitfield } elsif ($opv eq ':B') { # skip the bitfield test for now # No spaces for: # -> } elsif ($op eq '->') { if ($ctx =~ /Wx.|.xW/) { if (ERROR("SPACING", "spaces prohibited around that '$op' $at\n" . $hereptr)) { $good = rtrim($fix_elements[$n]) . trim($fix_elements[$n + 1]); if (defined $fix_elements[$n + 2]) { $fix_elements[$n + 2] =~ s/^\s+//; } $line_fixed = 1; } } # , must have a space on the right. } elsif ($op eq ',') { if ($ctx !~ /.x[WEC]/ && $cc !~ /^}/) { if (ERROR("SPACING", "space required after that '$op' $at\n" . $hereptr)) { $good = $fix_elements[$n] . trim($fix_elements[$n + 1]) . " "; $line_fixed = 1; $last_after = $n; } } # '*' as part of a type definition -- reported already. } elsif ($opv eq '*_') { #warn "'*' is part of type\n"; # unary operators should have a space before and # none after. May be left adjacent to another # unary operator, or a cast } elsif ($op eq '!' || $op eq '~' || $opv eq '*U' || $opv eq '-U' || $opv eq '&U' || $opv eq '&&U') { if ($ctx !~ /[WEBC]x./ && $ca !~ /(?:\)|!|~|\*|-|\&|\||\+\+|\-\-|\{)$/) { if (ERROR("SPACING", "space required before that '$op' $at\n" . $hereptr)) { if ($n != $last_after + 2) { $good = $fix_elements[$n] . " " . ltrim($fix_elements[$n + 1]); $line_fixed = 1; } } } if ($op eq '*' && $cc =~/\s*$Modifier\b/) { # A unary '*' may be const } elsif ($ctx =~ /.xW/) { if (ERROR("SPACING", "space prohibited after that '$op' $at\n" . $hereptr)) { $good = $fix_elements[$n] . rtrim($fix_elements[$n + 1]); if (defined $fix_elements[$n + 2]) { $fix_elements[$n + 2] =~ s/^\s+//; } $line_fixed = 1; } } # unary ++ and unary -- are allowed no space on one side. } elsif ($op eq '++' or $op eq '--') { if ($ctx !~ /[WEOBC]x[^W]/ && $ctx !~ /[^W]x[WOBEC]/) { if (ERROR("SPACING", "space required one side of that '$op' $at\n" . $hereptr)) { $good = $fix_elements[$n] . trim($fix_elements[$n + 1]) . " "; $line_fixed = 1; } } if ($ctx =~ /Wx[BE]/ || ($ctx =~ /Wx./ && $cc =~ /^;/)) { if (ERROR("SPACING", "space prohibited before that '$op' $at\n" . $hereptr)) { $good = rtrim($fix_elements[$n]) . trim($fix_elements[$n + 1]); $line_fixed = 1; } } if ($ctx =~ /ExW/) { if (ERROR("SPACING", "space prohibited after that '$op' $at\n" . $hereptr)) { $good = $fix_elements[$n] . trim($fix_elements[$n + 1]); if (defined $fix_elements[$n + 2]) { $fix_elements[$n + 2] =~ s/^\s+//; } $line_fixed = 1; } } # << and >> may either have or not have spaces both sides } elsif ($op eq '<<' or $op eq '>>' or $op eq '&' or $op eq '^' or $op eq '|' or $op eq '+' or $op eq '-' or $op eq '*' or $op eq '/' or $op eq '%') { if ($ctx =~ /Wx[^WCE]|[^WCE]xW/) { if (ERROR("SPACING", "need consistent spacing around '$op' $at\n" . $hereptr)) { $good = rtrim($fix_elements[$n]) . " " . trim($fix_elements[$n + 1]) . " "; if (defined $fix_elements[$n + 2]) { $fix_elements[$n + 2] =~ s/^\s+//; } $line_fixed = 1; } } # A colon needs no spaces before when it is # terminating a case value or a label. } elsif ($opv eq ':C' || $opv eq ':L') { if ($ctx =~ /Wx./) { if (ERROR("SPACING", "space prohibited before that '$op' $at\n" . $hereptr)) { $good = rtrim($fix_elements[$n]) . trim($fix_elements[$n + 1]); $line_fixed = 1; } } # All the others need spaces both sides. } elsif ($ctx !~ /[EWC]x[CWE]/) { my $ok = 0; # Ignore email addresses <foo@bar> if (($op eq '<' && $cc =~ /^\S+\@\S+>/) || ($op eq '>' && $ca =~ /<\S+\@\S+$/)) { $ok = 1; } # messages are ERROR, but ?: are CHK if ($ok == 0) { my $msg_type = \&ERROR; $msg_type = \&CHK if (($op eq '?:' || $op eq '?' || $op eq ':') && $ctx =~ /VxV/); if (&{$msg_type}("SPACING", "spaces required around that '$op' $at\n" . $hereptr)) { $good = rtrim($fix_elements[$n]) . " " . trim($fix_elements[$n + 1]) . " "; if (defined $fix_elements[$n + 2]) { $fix_elements[$n + 2] =~ s/^\s+//; } $line_fixed = 1; } } } $off += length($elements[$n + 1]); ## print("n: <$n> GOOD: <$good>\n"); $fixed_line = $fixed_line . $good; } if (($#elements % 2) == 0) { $fixed_line = $fixed_line . $fix_elements[$#elements]; } if ($fix && $line_fixed && $fixed_line ne $fixed[$linenr - 1]) { $fixed[$linenr - 1] = $fixed_line; } } # check for whitespace before a non-naked semicolon if ($line =~ /^\+.*\S\s+;\s*$/) { if (WARN("SPACING", "space prohibited before semicolon\n" . $herecurr) && $fix) { 1 while $fixed[$linenr - 1] =~ s/^(\+.*\S)\s+;/$1;/; } } # check for multiple assignments if ($line =~ /^.\s*$Lval\s*=\s*$Lval\s*=(?!=)/) { CHK("MULTIPLE_ASSIGNMENTS", "multiple assignments should be avoided\n" . $herecurr); } #need space before brace following if, while, etc if (($line =~ /\(.*\){/ && $line !~ /\($Type\){/) || $line =~ /do{/) { if (ERROR("SPACING", "space required before the open brace '{'\n" . $herecurr) && $fix) { $fixed[$linenr - 1] =~ s/^(\+.*(?:do|\))){/$1 {/; } } # closing brace should have a space following it when it has anything # on the line if ($line =~ /}(?!(?:,|;|\)))\S/) { if (ERROR("SPACING", "space required after that close brace '}'\n" . $herecurr) && $fix) { $fixed[$linenr - 1] =~ s/}((?!(?:,|;|\)))\S)/} $1/; } } # check spacing on square brackets if ($line =~ /\[\s/ && $line !~ /\[\s*$/) { if (ERROR("SPACING", "space prohibited after that open square bracket '['\n" . $herecurr) && $fix) { $fixed[$linenr - 1] =~ s/\[\s+/\[/; } } if ($line =~ /\s\]/) { if (ERROR("SPACING", "space prohibited before that close square bracket ']'\n" . $herecurr) && $fix) { $fixed[$linenr - 1] =~ s/\s+\]/\]/; } } # check spacing on parentheses if ($line =~ /\(\s/ && $line !~ /\(\s*(?:\\)?$/ && $line !~ /for\s*\(\s+;/) { if (ERROR("SPACING", "space prohibited after that open parenthesis '('\n" . $herecurr) && $fix) { $fixed[$linenr - 1] =~ s/\(\s+/\(/; } } if ($line =~ /(\s+)\)/ && $line !~ /^.\s*\)/ && $line !~ /for\s*\(.*;\s+\)/ && $line !~ /:\s+\)/) { if (ERROR("SPACING", "space prohibited before that close parenthesis ')'\n" . $herecurr) && $fix) { $fixed[$linenr - 1] =~ s/\s+\)/\)/; } } #goto labels aren't indented, allow a single space however if ($line=~/^.\s+[A-Za-z\d_]+:(?![0-9]+)/ and !($line=~/^. [A-Za-z\d_]+:/) and !($line=~/^.\s+default:/)) { if (WARN("INDENTED_LABEL", "labels should not be indented\n" . $herecurr) && $fix) { $fixed[$linenr - 1] =~ s/^(.)\s+/$1/; } } # return is not a function if (defined($stat) && $stat =~ /^.\s*return(\s*)\(/s) { my $spacing = $1; if ($^V && $^V ge 5.10.0 && $stat =~ /^.\s*return\s*($balanced_parens)\s*;\s*$/) { my $value = $1; $value = deparenthesize($value); if ($value =~ m/^\s*$FuncArg\s*(?:\?|$)/) { ERROR("RETURN_PARENTHESES", "return is not a function, parentheses are not required\n" . $herecurr); } } elsif ($spacing !~ /\s+/) { ERROR("SPACING", "space required before the open parenthesis '('\n" . $herecurr); } } # if statements using unnecessary parentheses - ie: if ((foo == bar)) if ($^V && $^V ge 5.10.0 && $line =~ /\bif\s*((?:\(\s*){2,})/) { my $openparens = $1; my $count = $openparens =~ tr@\(@\(@; my $msg = ""; if ($line =~ /\bif\s*(?:\(\s*){$count,$count}$LvalOrFunc\s*($Compare)\s*$LvalOrFunc(?:\s*\)){$count,$count}/) { my $comp = $4; #Not $1 because of $LvalOrFunc $msg = " - maybe == should be = ?" if ($comp eq "=="); WARN("UNNECESSARY_PARENTHESES", "Unnecessary parentheses$msg\n" . $herecurr); } } # Return of what appears to be an errno should normally be -'ve if ($line =~ /^.\s*return\s*(E[A-Z]*)\s*;/) { my $name = $1; if ($name ne 'EOF' && $name ne 'ERROR') { WARN("USE_NEGATIVE_ERRNO", "return of an errno should typically be -ve (return -$1)\n" . $herecurr); } } # Need a space before open parenthesis after if, while etc if ($line =~ /\b(if|while|for|switch)\(/) { if (ERROR("SPACING", "space required before the open parenthesis '('\n" . $herecurr) && $fix) { $fixed[$linenr - 1] =~ s/\b(if|while|for|switch)\(/$1 \(/; } } # Check for illegal assignment in if conditional -- and check for trailing # statements after the conditional. if ($line =~ /do\s*(?!{)/) { ($stat, $cond, $line_nr_next, $remain_next, $off_next) = ctx_statement_block($linenr, $realcnt, 0) if (!defined $stat); my ($stat_next) = ctx_statement_block($line_nr_next, $remain_next, $off_next); $stat_next =~ s/\n./\n /g; ##print "stat<$stat> stat_next<$stat_next>\n"; if ($stat_next =~ /^\s*while\b/) { # If the statement carries leading newlines, # then count those as offsets. my ($whitespace) = ($stat_next =~ /^((?:\s*\n[+-])*\s*)/s); my $offset = statement_rawlines($whitespace) - 1; $suppress_whiletrailers{$line_nr_next + $offset} = 1; } } if (!defined $suppress_whiletrailers{$linenr} && defined($stat) && defined($cond) && $line =~ /\b(?:if|while|for)\s*\(/ && $line !~ /^.\s*#/) { my ($s, $c) = ($stat, $cond); if ($c =~ /\bif\s*\(.*[^<>!=]=[^=].*/s) { ERROR("ASSIGN_IN_IF", "do not use assignment in if condition\n" . $herecurr); } # Find out what is on the end of the line after the # conditional. substr($s, 0, length($c), ''); $s =~ s/\n.*//g; $s =~ s/$;//g; # Remove any comments if (length($c) && $s !~ /^\s*{?\s*\\*\s*$/ && $c !~ /}\s*while\s*/) { # Find out how long the conditional actually is. my @newlines = ($c =~ /\n/gs); my $cond_lines = 1 + $#newlines; my $stat_real = ''; $stat_real = raw_line($linenr, $cond_lines) . "\n" if ($cond_lines); if (defined($stat_real) && $cond_lines > 1) { $stat_real = "[...]\n$stat_real"; } ERROR("TRAILING_STATEMENTS", "trailing statements should be on next line\n" . $herecurr . $stat_real); } } # Check for bitwise tests written as boolean if ($line =~ / (?: (?:\[|\(|\&\&|\|\|) \s*0[xX][0-9]+\s* (?:\&\&|\|\|) | (?:\&\&|\|\|) \s*0[xX][0-9]+\s* (?:\&\&|\|\||\)|\]) )/x) { WARN("HEXADECIMAL_BOOLEAN_TEST", "boolean test with hexadecimal, perhaps just 1 \& or \|?\n" . $herecurr); } # if and else should not have general statements after it if ($line =~ /^.\s*(?:}\s*)?else\b(.*)/) { my $s = $1; $s =~ s/$;//g; # Remove any comments if ($s !~ /^\s*(?:\sif|(?:{|)\s*\\?\s*$)/) { ERROR("TRAILING_STATEMENTS", "trailing statements should be on next line\n" . $herecurr); } } # if should not continue a brace if ($line =~ /}\s*if\b/) { ERROR("TRAILING_STATEMENTS", "trailing statements should be on next line\n" . $herecurr); } # case and default should not have general statements after them if ($line =~ /^.\s*(?:case\s*.*|default\s*):/g && $line !~ /\G(?: (?:\s*$;*)(?:\s*{)?(?:\s*$;*)(?:\s*\\)?\s*$| \s*return\s+ )/xg) { ERROR("TRAILING_STATEMENTS", "trailing statements should be on next line\n" . $herecurr); } # Check for }<nl>else {, these must be at the same # indent level to be relevant to each other. if ($prevline=~/}\s*$/ and $line=~/^.\s*else\s*/ and $previndent == $indent) { ERROR("ELSE_AFTER_BRACE", "else should follow close brace '}'\n" . $hereprev); } if ($prevline=~/}\s*$/ and $line=~/^.\s*while\s*/ and $previndent == $indent) { my ($s, $c) = ctx_statement_block($linenr, $realcnt, 0); # Find out what is on the end of the line after the # conditional. substr($s, 0, length($c), ''); $s =~ s/\n.*//g; if ($s =~ /^\s*;/) { ERROR("WHILE_AFTER_BRACE", "while should follow close brace '}'\n" . $hereprev); } } #Specific variable tests while ($line =~ m{($Constant|$Lval)}g) { my $var = $1; #gcc binary extension if ($var =~ /^$Binary$/) { if (WARN("GCC_BINARY_CONSTANT", "Avoid gcc v4.3+ binary constant extension: <$var>\n" . $herecurr) && $fix) { my $hexval = sprintf("0x%x", oct($var)); $fixed[$linenr - 1] =~ s/\b$var\b/$hexval/; } } #CamelCase if ($var !~ /^$Constant$/ && $var =~ /[A-Z][a-z]|[a-z][A-Z]/ && #Ignore Page<foo> variants $var !~ /^(?:Clear|Set|TestClear|TestSet|)Page[A-Z]/ && #Ignore SI style variants like nS, mV and dB (ie: max_uV, regulator_min_uA_show) $var !~ /^(?:[a-z_]*?)_?[a-z][A-Z](?:_[a-z_]+)?$/) { while ($var =~ m{($Ident)}g) { my $word = $1; next if ($word !~ /[A-Z][a-z]|[a-z][A-Z]/); if ($check) { seed_camelcase_includes(); if (!$file && !$camelcase_file_seeded) { seed_camelcase_file($realfile); $camelcase_file_seeded = 1; } } if (!defined $camelcase{$word}) { $camelcase{$word} = 1; CHK("CAMELCASE", "Avoid CamelCase: <$word>\n" . $herecurr); } } } } #no spaces allowed after \ in define if ($line =~ /\#\s*define.*\\\s+$/) { if (WARN("WHITESPACE_AFTER_LINE_CONTINUATION", "Whitespace after \\ makes next lines useless\n" . $herecurr) && $fix) { $fixed[$linenr - 1] =~ s/\s+$//; } } # multi-statement macros should be enclosed in a do while loop, grab the # first statement and ensure its the whole macro if its not enclosed # in a known good container if ($realfile !~ m@/vmlinux.lds.h$@ && $line =~ /^.\s*\#\s*define\s*$Ident(\()?/) { my $ln = $linenr; my $cnt = $realcnt; my ($off, $dstat, $dcond, $rest); my $ctx = ''; ($dstat, $dcond, $ln, $cnt, $off) = ctx_statement_block($linenr, $realcnt, 0); $ctx = $dstat; #print "dstat<$dstat> dcond<$dcond> cnt<$cnt> off<$off>\n"; #print "LINE<$lines[$ln-1]> len<" . length($lines[$ln-1]) . "\n"; $dstat =~ s/^.\s*\#\s*define\s+$Ident(?:\([^\)]*\))?\s*//; $dstat =~ s/$;//g; $dstat =~ s/\\\n.//g; $dstat =~ s/^\s*//s; $dstat =~ s/\s*$//s; # Flatten any parentheses and braces while ($dstat =~ s/\([^\(\)]*\)/1/ || $dstat =~ s/\{[^\{\}]*\}/1/ || $dstat =~ s/\[[^\[\]]*\]/1/) { } # Flatten any obvious string concatentation. while ($dstat =~ s/("X*")\s*$Ident/$1/ || $dstat =~ s/$Ident\s*("X*")/$1/) { } my $exceptions = qr{ $Declare| module_param_named| MODULE_PARM_DESC| DECLARE_PER_CPU| DEFINE_PER_CPU| __typeof__\(| union| struct| \.$Ident\s*=\s*| ^\"|\"$ }x; #print "REST<$rest> dstat<$dstat> ctx<$ctx>\n"; if ($dstat ne '' && $dstat !~ /^(?:$Ident|-?$Constant),$/ && # 10, // foo(), $dstat !~ /^(?:$Ident|-?$Constant);$/ && # foo(); $dstat !~ /^[!~-]?(?:$Lval|$Constant)$/ && # 10 // foo() // !foo // ~foo // -foo // foo->bar // foo.bar->baz $dstat !~ /^'X'$/ && # character constants $dstat !~ /$exceptions/ && $dstat !~ /^\.$Ident\s*=/ && # .foo = $dstat !~ /^(?:\#\s*$Ident|\#\s*$Constant)\s*$/ && # stringification #foo $dstat !~ /^do\s*$Constant\s*while\s*$Constant;?$/ && # do {...} while (...); // do {...} while (...) $dstat !~ /^for\s*$Constant$/ && # for (...) $dstat !~ /^for\s*$Constant\s+(?:$Ident|-?$Constant)$/ && # for (...) bar() $dstat !~ /^do\s*{/ && # do {... $dstat !~ /^\({/ && # ({... $ctx !~ /^.\s*#\s*define\s+TRACE_(?:SYSTEM|INCLUDE_FILE|INCLUDE_PATH)\b/) { $ctx =~ s/\n*$//; my $herectx = $here . "\n"; my $cnt = statement_rawlines($ctx); for (my $n = 0; $n < $cnt; $n++) { $herectx .= raw_line($linenr, $n) . "\n"; } if ($dstat =~ /;/) { ERROR("MULTISTATEMENT_MACRO_USE_DO_WHILE", "Macros with multiple statements should be enclosed in a do - while loop\n" . "$herectx"); } else { ERROR("COMPLEX_MACRO", "Macros with complex values should be enclosed in parenthesis\n" . "$herectx"); } } # check for line continuations outside of #defines, preprocessor #, and asm } else { if ($prevline !~ /^..*\\$/ && $line !~ /^\+\s*\#.*\\$/ && # preprocessor $line !~ /^\+.*\b(__asm__|asm)\b.*\\$/ && # asm $line =~ /^\+.*\\$/) { WARN("LINE_CONTINUATIONS", "Avoid unnecessary line continuations\n" . $herecurr); } } # do {} while (0) macro tests: # single-statement macros do not need to be enclosed in do while (0) loop, # macro should not end with a semicolon if ($^V && $^V ge 5.10.0 && $realfile !~ m@/vmlinux.lds.h$@ && $line =~ /^.\s*\#\s*define\s+$Ident(\()?/) { my $ln = $linenr; my $cnt = $realcnt; my ($off, $dstat, $dcond, $rest); my $ctx = ''; ($dstat, $dcond, $ln, $cnt, $off) = ctx_statement_block($linenr, $realcnt, 0); $ctx = $dstat; $dstat =~ s/\\\n.//g; if ($dstat =~ /^\+\s*#\s*define\s+$Ident\s*${balanced_parens}\s*do\s*{(.*)\s*}\s*while\s*\(\s*0\s*\)\s*([;\s]*)\s*$/) { my $stmts = $2; my $semis = $3; $ctx =~ s/\n*$//; my $cnt = statement_rawlines($ctx); my $herectx = $here . "\n"; for (my $n = 0; $n < $cnt; $n++) { $herectx .= raw_line($linenr, $n) . "\n"; } if (($stmts =~ tr/;/;/) == 1 && $stmts !~ /^\s*(if|while|for|switch)\b/) { WARN("SINGLE_STATEMENT_DO_WHILE_MACRO", "Single statement macros should not use a do {} while (0) loop\n" . "$herectx"); } if (defined $semis && $semis ne "") { WARN("DO_WHILE_MACRO_WITH_TRAILING_SEMICOLON", "do {} while (0) macros should not be semicolon terminated\n" . "$herectx"); } } } # check for redundant bracing round if etc if ($line =~ /(^.*)\bif\b/ && $1 !~ /else\s*$/) { my ($level, $endln, @chunks) = ctx_statement_full($linenr, $realcnt, 1); #print "chunks<$#chunks> linenr<$linenr> endln<$endln> level<$level>\n"; #print "APW: <<$chunks[1][0]>><<$chunks[1][1]>>\n"; if ($#chunks > 0 && $level == 0) { my @allowed = (); my $allow = 0; my $seen = 0; my $herectx = $here . "\n"; my $ln = $linenr - 1; for my $chunk (@chunks) { my ($cond, $block) = @{$chunk}; # If the condition carries leading newlines, then count those as offsets. my ($whitespace) = ($cond =~ /^((?:\s*\n[+-])*\s*)/s); my $offset = statement_rawlines($whitespace) - 1; $allowed[$allow] = 0; #print "COND<$cond> whitespace<$whitespace> offset<$offset>\n"; # We have looked at and allowed this specific line. $suppress_ifbraces{$ln + $offset} = 1; $herectx .= "$rawlines[$ln + $offset]\n[...]\n"; $ln += statement_rawlines($block) - 1; substr($block, 0, length($cond), ''); $seen++ if ($block =~ /^\s*{/); #print "cond<$cond> block<$block> allowed<$allowed[$allow]>\n"; if (statement_lines($cond) > 1) { #print "APW: ALLOWED: cond<$cond>\n"; $allowed[$allow] = 1; } if ($block =~/\b(?:if|for|while)\b/) { #print "APW: ALLOWED: block<$block>\n"; $allowed[$allow] = 1; } if (statement_block_size($block) > 1) { #print "APW: ALLOWED: lines block<$block>\n"; $allowed[$allow] = 1; } $allow++; } if ($seen) { my $sum_allowed = 0; foreach (@allowed) { $sum_allowed += $_; } if ($sum_allowed == 0) { WARN("BRACES", "braces {} are not necessary for any arm of this statement\n" . $herectx); } elsif ($sum_allowed != $allow && $seen != $allow) { CHK("BRACES", "braces {} should be used on all arms of this statement\n" . $herectx); } } } } if (!defined $suppress_ifbraces{$linenr - 1} && $line =~ /\b(if|while|for|else)\b/) { my $allowed = 0; # Check the pre-context. if (substr($line, 0, $-[0]) =~ /(\}\s*)$/) { #print "APW: ALLOWED: pre<$1>\n"; $allowed = 1; } my ($level, $endln, @chunks) = ctx_statement_full($linenr, $realcnt, $-[0]); # Check the condition. my ($cond, $block) = @{$chunks[0]}; #print "CHECKING<$linenr> cond<$cond> block<$block>\n"; if (defined $cond) { substr($block, 0, length($cond), ''); } if (statement_lines($cond) > 1) { #print "APW: ALLOWED: cond<$cond>\n"; $allowed = 1; } if ($block =~/\b(?:if|for|while)\b/) { #print "APW: ALLOWED: block<$block>\n"; $allowed = 1; } if (statement_block_size($block) > 1) { #print "APW: ALLOWED: lines block<$block>\n"; $allowed = 1; } # Check the post-context. if (defined $chunks[1]) { my ($cond, $block) = @{$chunks[1]}; if (defined $cond) { substr($block, 0, length($cond), ''); } if ($block =~ /^\s*\{/) { #print "APW: ALLOWED: chunk-1 block<$block>\n"; $allowed = 1; } } if ($level == 0 && $block =~ /^\s*\{/ && !$allowed) { my $herectx = $here . "\n"; my $cnt = statement_rawlines($block); for (my $n = 0; $n < $cnt; $n++) { $herectx .= raw_line($linenr, $n) . "\n"; } WARN("BRACES", "braces {} are not necessary for single statement blocks\n" . $herectx); } } # check for unnecessary blank lines around braces if (($line =~ /^.\s*}\s*$/ && $prevrawline =~ /^.\s*$/)) { CHK("BRACES", "Blank lines aren't necessary before a close brace '}'\n" . $hereprev); } if (($rawline =~ /^.\s*$/ && $prevline =~ /^..*{\s*$/)) { CHK("BRACES", "Blank lines aren't necessary after an open brace '{'\n" . $hereprev); } # warn about #if 0 if ($line =~ /^.\s*\#\s*if\s+0\b/) { CHK("REDUNDANT_CODE", "if this code is redundant consider removing it\n" . $herecurr); } # check for needless "if (<foo>) fn(<foo>)" uses if ($prevline =~ /\bif\s*\(\s*($Lval)\s*\)/) { my $expr = '\s*\(\s*' . quotemeta($1) . '\s*\)\s*;'; if ($line =~ /\b(kfree|usb_free_urb|debugfs_remove(?:_recursive)?)$expr/) { WARN('NEEDLESS_IF', "$1(NULL) is safe this check is probably not required\n" . $hereprev); } } # check for bad placement of section $InitAttribute (e.g.: __initdata) if ($line =~ /(\b$InitAttribute\b)/) { my $attr = $1; if ($line =~ /^\+\s*static\s+(?:const\s+)?(?:$attr\s+)?($NonptrTypeWithAttr)\s+(?:$attr\s+)?($Ident(?:\[[^]]*\])?)\s*[=;]/) { my $ptr = $1; my $var = $2; if ((($ptr =~ /\b(union|struct)\s+$attr\b/ && ERROR("MISPLACED_INIT", "$attr should be placed after $var\n" . $herecurr)) || ($ptr !~ /\b(union|struct)\s+$attr\b/ && WARN("MISPLACED_INIT", "$attr should be placed after $var\n" . $herecurr))) && $fix) { $fixed[$linenr - 1] =~ s/(\bstatic\s+(?:const\s+)?)(?:$attr\s+)?($NonptrTypeWithAttr)\s+(?:$attr\s+)?($Ident(?:\[[^]]*\])?)\s*([=;])\s*/"$1" . trim(string_find_replace($2, "\\s*$attr\\s*", " ")) . " " . trim(string_find_replace($3, "\\s*$attr\\s*", "")) . " $attr" . ("$4" eq ";" ? ";" : " = ")/e; } } } # check for $InitAttributeData (ie: __initdata) with const if ($line =~ /\bconst\b/ && $line =~ /($InitAttributeData)/) { my $attr = $1; $attr =~ /($InitAttributePrefix)(.*)/; my $attr_prefix = $1; my $attr_type = $2; if (ERROR("INIT_ATTRIBUTE", "Use of const init definition must use ${attr_prefix}initconst\n" . $herecurr) && $fix) { $fixed[$linenr - 1] =~ s/$InitAttributeData/${attr_prefix}initconst/; } } # check for $InitAttributeConst (ie: __initconst) without const if ($line !~ /\bconst\b/ && $line =~ /($InitAttributeConst)/) { my $attr = $1; if (ERROR("INIT_ATTRIBUTE", "Use of $attr requires a separate use of const\n" . $herecurr) && $fix) { my $lead = $fixed[$linenr - 1] =~ /(^\+\s*(?:static\s+))/; $lead = rtrim($1); $lead = "$lead " if ($lead !~ /^\+$/); $lead = "${lead}const "; $fixed[$linenr - 1] =~ s/(^\+\s*(?:static\s+))/$lead/; } } # warn about #ifdefs in C files # if ($line =~ /^.\s*\#\s*if(|n)def/ && ($realfile =~ /\.c$/)) { # print "#ifdef in C files should be avoided\n"; # print "$herecurr"; # $clean = 0; # } # warn about spacing in #ifdefs if ($line =~ /^.\s*\#\s*(ifdef|ifndef|elif)\s\s+/) { if (ERROR("SPACING", "exactly one space required after that #$1\n" . $herecurr) && $fix) { $fixed[$linenr - 1] =~ s/^(.\s*\#\s*(ifdef|ifndef|elif))\s{2,}/$1 /; } } # Check that the storage class is at the beginning of a declaration if ($line =~ /\b$Storage\b/ && $line !~ /^.\s*$Storage\b/) { WARN("STORAGE_CLASS", "storage class should be at the beginning of the declaration\n" . $herecurr) } # check the location of the inline attribute, that it is between # storage class and type. if ($line =~ /\b$Type\s+$Inline\b/ || $line =~ /\b$Inline\s+$Storage\b/) { ERROR("INLINE_LOCATION", "inline keyword should sit between storage class and type\n" . $herecurr); } # Check for __inline__ and __inline, prefer inline if ($realfile !~ m@\binclude/uapi/@ && $line =~ /\b(__inline__|__inline)\b/) { if (WARN("INLINE", "plain inline is preferred over $1\n" . $herecurr) && $fix) { $fixed[$linenr - 1] =~ s/\b(__inline__|__inline)\b/inline/; } } # Check for __attribute__ packed, prefer __packed if ($realfile !~ m@\binclude/uapi/@ && $line =~ /\b__attribute__\s*\(\s*\(.*\bpacked\b/) { WARN("PREFER_PACKED", "__packed is preferred over __attribute__((packed))\n" . $herecurr); } # Check for __attribute__ aligned, prefer __aligned if ($realfile !~ m@\binclude/uapi/@ && $line =~ /\b__attribute__\s*\(\s*\(.*aligned/) { WARN("PREFER_ALIGNED", "__aligned(size) is preferred over __attribute__((aligned(size)))\n" . $herecurr); } # Check for __attribute__ format(printf, prefer __printf if ($realfile !~ m@\binclude/uapi/@ && $line =~ /\b__attribute__\s*\(\s*\(\s*format\s*\(\s*printf/) { if (WARN("PREFER_PRINTF", "__printf(string-index, first-to-check) is preferred over __attribute__((format(printf, string-index, first-to-check)))\n" . $herecurr) && $fix) { $fixed[$linenr - 1] =~ s/\b__attribute__\s*\(\s*\(\s*format\s*\(\s*printf\s*,\s*(.*)\)\s*\)\s*\)/"__printf(" . trim($1) . ")"/ex; } } # Check for __attribute__ format(scanf, prefer __scanf if ($realfile !~ m@\binclude/uapi/@ && $line =~ /\b__attribute__\s*\(\s*\(\s*format\s*\(\s*scanf\b/) { if (WARN("PREFER_SCANF", "__scanf(string-index, first-to-check) is preferred over __attribute__((format(scanf, string-index, first-to-check)))\n" . $herecurr) && $fix) { $fixed[$linenr - 1] =~ s/\b__attribute__\s*\(\s*\(\s*format\s*\(\s*scanf\s*,\s*(.*)\)\s*\)\s*\)/"__scanf(" . trim($1) . ")"/ex; } } # check for sizeof(&) if ($line =~ /\bsizeof\s*\(\s*\&/) { WARN("SIZEOF_ADDRESS", "sizeof(& should be avoided\n" . $herecurr); } # check for sizeof without parenthesis if ($line =~ /\bsizeof\s+((?:\*\s*|)$Lval|$Type(?:\s+$Lval|))/) { if (WARN("SIZEOF_PARENTHESIS", "sizeof $1 should be sizeof($1)\n" . $herecurr) && $fix) { $fixed[$linenr - 1] =~ s/\bsizeof\s+((?:\*\s*|)$Lval|$Type(?:\s+$Lval|))/"sizeof(" . trim($1) . ")"/ex; } } # check for line continuations in quoted strings with odd counts of " if ($rawline =~ /\\$/ && $rawline =~ tr/"/"/ % 2) { WARN("LINE_CONTINUATIONS", "Avoid line continuations in quoted strings\n" . $herecurr); } # Check for misused memsets if ($^V && $^V ge 5.10.0 && defined $stat && $stat =~ /^\+(?:.*?)\bmemset\s*\(\s*$FuncArg\s*,\s*$FuncArg\s*\,\s*$FuncArg\s*\)/s) { my $ms_addr = $2; my $ms_val = $7; my $ms_size = $12; if ($ms_size =~ /^(0x|)0$/i) { ERROR("MEMSET", "memset to 0's uses 0 as the 2nd argument, not the 3rd\n" . "$here\n$stat\n"); } elsif ($ms_size =~ /^(0x|)1$/i) { WARN("MEMSET", "single byte memset is suspicious. Swapped 2nd/3rd argument?\n" . "$here\n$stat\n"); } } # typecasts on min/max could be min_t/max_t if ($^V && $^V ge 5.10.0 && defined $stat && $stat =~ /^\+(?:.*?)\b(min|max)\s*\(\s*$FuncArg\s*,\s*$FuncArg\s*\)/) { if (defined $2 || defined $7) { my $call = $1; my $cast1 = deparenthesize($2); my $arg1 = $3; my $cast2 = deparenthesize($7); my $arg2 = $8; my $cast; if ($cast1 ne "" && $cast2 ne "" && $cast1 ne $cast2) { $cast = "$cast1 or $cast2"; } elsif ($cast1 ne "") { $cast = $cast1; } else { $cast = $cast2; } WARN("MINMAX", "$call() should probably be ${call}_t($cast, $arg1, $arg2)\n" . "$here\n$stat\n"); } } # check for naked sscanf if ($^V && $^V ge 5.10.0 && defined $stat && $line =~ /\bsscanf\b/ && ($stat !~ /$Ident\s*=\s*sscanf\s*$balanced_parens/ && $stat !~ /\bsscanf\s*$balanced_parens\s*(?:$Compare)/ && $stat !~ /(?:$Compare)\s*\bsscanf\s*$balanced_parens/)) { my $lc = $stat =~ tr@\n@@; $lc = $lc + $linenr; my $stat_real = raw_line($linenr, 0); for (my $count = $linenr + 1; $count <= $lc; $count++) { $stat_real = $stat_real . "\n" . raw_line($count, 0); } WARN("NAKED_SSCANF", "unchecked sscanf return value\n" . "$here\n$stat_real\n"); } # check for new externs in .h files. if ($realfile =~ /\.h$/ && $line =~ /^\+\s*(extern\s+)$Type\s*$Ident\s*\(/s) { if (CHK("AVOID_EXTERNS", "extern prototypes should be avoided in .h files\n" . $herecurr) && $fix) { $fixed[$linenr - 1] =~ s/(.*)\bextern\b\s*(.*)/$1$2/; } } # check for new externs in .c files. if ($realfile =~ /\.c$/ && defined $stat && $stat =~ /^.\s*(?:extern\s+)?$Type\s+($Ident)(\s*)\(/s) { my $function_name = $1; my $paren_space = $2; my $s = $stat; if (defined $cond) { substr($s, 0, length($cond), ''); } if ($s =~ /^\s*;/ && $function_name ne 'uninitialized_var') { WARN("AVOID_EXTERNS", "externs should be avoided in .c files\n" . $herecurr); } if ($paren_space =~ /\n/) { WARN("FUNCTION_ARGUMENTS", "arguments for function declarations should follow identifier\n" . $herecurr); } } elsif ($realfile =~ /\.c$/ && defined $stat && $stat =~ /^.\s*extern\s+/) { WARN("AVOID_EXTERNS", "externs should be avoided in .c files\n" . $herecurr); } # check for multiple semicolons if ($line =~ /;\s*;\s*$/) { if (WARN("ONE_SEMICOLON", "Statements terminations use 1 semicolon\n" . $herecurr) && $fix) { $fixed[$linenr - 1] =~ s/(\s*;\s*){2,}$/;/g; } } # check for case / default statements not preceeded by break/fallthrough/switch if ($line =~ /^.\s*(?:case\s+(?:$Ident|$Constant)\s*|default):/) { my $has_break = 0; my $has_statement = 0; my $count = 0; my $prevline = $linenr; while ($prevline > 1 && $count < 3 && !$has_break) { $prevline--; my $rline = $rawlines[$prevline - 1]; my $fline = $lines[$prevline - 1]; last if ($fline =~ /^\@\@/); next if ($fline =~ /^\-/); next if ($fline =~ /^.(?:\s*(?:case\s+(?:$Ident|$Constant)[\s$;]*|default):[\s$;]*)*$/); $has_break = 1 if ($rline =~ /fall[\s_-]*(through|thru)/i); next if ($fline =~ /^.[\s$;]*$/); $has_statement = 1; $count++; $has_break = 1 if ($fline =~ /\bswitch\b|\b(?:break\s*;[\s$;]*$|return\b|goto\b|continue\b)/); } if (!$has_break && $has_statement) { WARN("MISSING_BREAK", "Possible switch case/default not preceeded by break or fallthrough comment\n" . $herecurr); } } # check for switch/default statements without a break; if ($^V && $^V ge 5.10.0 && defined $stat && $stat =~ /^\+[$;\s]*(?:case[$;\s]+\w+[$;\s]*:[$;\s]*|)*[$;\s]*\bdefault[$;\s]*:[$;\s]*;/g) { my $ctx = ''; my $herectx = $here . "\n"; my $cnt = statement_rawlines($stat); for (my $n = 0; $n < $cnt; $n++) { $herectx .= raw_line($linenr, $n) . "\n"; } WARN("DEFAULT_NO_BREAK", "switch default: should use break\n" . $herectx); } # check for gcc specific __FUNCTION__ if ($line =~ /\b__FUNCTION__\b/) { if (WARN("USE_FUNC", "__func__ should be used instead of gcc specific __FUNCTION__\n" . $herecurr) && $fix) { $fixed[$linenr - 1] =~ s/\b__FUNCTION__\b/__func__/g; } } # check for comparisons against true and false if ($line =~ /\+\s*(.*?)\b(true|false|$Lval)\s*(==|\!=)\s*(true|false|$Lval)\b(.*)$/i) { my $lead = $1; my $arg = $2; my $test = $3; my $otype = $4; my $trail = $5; my $op = "!"; ($arg, $otype) = ($otype, $arg) if ($arg =~ /^(?:true|false)$/i); my $type = lc($otype); if ($type =~ /^(?:true|false)$/) { if (("$test" eq "==" && "$type" eq "true") || ("$test" eq "!=" && "$type" eq "false")) { $op = ""; } CHK("BOOL_COMPARISON", "Using comparison to $otype is error prone\n" . $herecurr); ## maybe suggesting a correct construct would better ## "Using comparison to $otype is error prone. Perhaps use '${lead}${op}${arg}${trail}'\n" . $herecurr); } } # check for %L{u,d,i} in strings my $string; while ($line =~ /(?:^|")([X\t]*)(?:"|$)/g) { $string = substr($rawline, $-[1], $+[1] - $-[1]); $string =~ s/%%/__/g; if ($string =~ /(?<!%)%L[udi]/) { WARN("PRINTF_L", "\%Ld/%Lu are not-standard C, use %lld/%llu\n" . $herecurr); last; } } # Mode permission misuses where it seems decimal should be octal # This uses a shortcut match to avoid unnecessary uses of a slow foreach loop if ($^V && $^V ge 5.10.0 && $line =~ /$mode_perms_search/) { foreach my $entry (@mode_permission_funcs) { my $func = $entry->[0]; my $arg_pos = $entry->[1]; my $skip_args = ""; if ($arg_pos > 1) { $arg_pos--; $skip_args = "(?:\\s*$FuncArg\\s*,\\s*){$arg_pos,$arg_pos}"; } my $test = "\\b$func\\s*\\(${skip_args}([\\d]+)\\s*[,\\)]"; if ($line =~ /$test/) { my $val = $1; $val = $6 if ($skip_args ne ""); if ($val !~ /^0$/ && (($val =~ /^$Int$/ && $val !~ /^$Octal$/) || length($val) ne 4)) { ERROR("NON_OCTAL_PERMISSIONS", "Use 4 digit octal (0777) not decimal permissions\n" . $herecurr); } } } } } # If we have no input at all, then there is nothing to report on # so just keep quiet. if ($#rawlines == -1) { exit(0); } # In mailback mode only produce a report in the negative, for # things that appear to be patches. if ($mailback && ($clean == 1 || !$is_patch)) { exit(0); } # This is not a patch, and we are are in 'no-patch' mode so # just keep quiet. if (!$chk_patch && !$is_patch) { exit(0); } if (!$is_patch) { ERROR("NOT_UNIFIED_DIFF", "Does not appear to be a unified-diff format patch\n"); } print report_dump(); if ($summary && !($clean == 1 && $quiet == 1)) { print "$filename " if ($summary_file); print "total: $cnt_error errors, $cnt_warn warnings, " . (($check)? "$cnt_chk checks, " : "") . "$cnt_lines lines checked\n"; print "\n" if ($quiet == 0); } if ($quiet == 0) { if ($^V lt 5.10.0) { print("NOTE: perl $^V is not modern enough to detect all possible issues.\n"); print("An upgrade to at least perl v5.10.0 is suggested.\n\n"); } # If there were whitespace errors which cleanpatch can fix # then suggest that. if ($rpt_cleaners) { print "NOTE: whitespace errors detected, you may wish to use scripts/cleanpatch or\n"; print " scripts/cleanfile\n\n"; $rpt_cleaners = 0; } } hash_show_words(\%use_type, "Used"); hash_show_words(\%ignore_type, "Ignored"); if ($clean == 0 && $fix && "@rawlines" ne "@fixed") { my $newfile = $filename; $newfile .= ".EXPERIMENTAL-checkpatch-fixes" if (!$fix_inplace); my $linecount = 0; my $f; open($f, '>', $newfile) or die "$P: Can't open $newfile for write\n"; foreach my $fixed_line (@fixed) { $linecount++; if ($file) { if ($linecount > 3) { $fixed_line =~ s/^\+//; print $f $fixed_line. "\n"; } } else { print $f $fixed_line . "\n"; } } close($f); if (!$quiet) { print << "EOM"; Wrote EXPERIMENTAL --fix correction(s) to '$newfile' Do _NOT_ trust the results written to this file. Do _NOT_ submit these changes without inspecting them for correctness. This EXPERIMENTAL file is simply a convenience to help rewrite patches. No warranties, expressed or implied... EOM } } if ($clean == 1 && $quiet == 0) { print "$vname has no obvious style problems and is ready for submission.\n" } if ($clean == 0 && $quiet == 0) { print << "EOM"; $vname has style problems, please review. EOM } return $clean; } �WindowMaker-0.95.9/util/����������������������������������������������������������������������������0000755�0001750�0001750�00000000000�13642365213�012030� 5����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/util/wmaker.inst.in��������������������������������������������������������������0000644�0001750�0001750�00000017020�13642357774�014557� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh # # Install Window Maker for the current user # # xx herbert if test "x$1" = "x--batch" ; then BATCH="1" else BATCH="" fi # /xx herbert # name of menu file we install (menu, plmenu) inst_menu="" LOCALE="${LC_ALL-${LC_MESSAGES-$LANG}}" # directory where system wide configuration is stored GLOBALDIR="#pkgdatadir#" GLOBALDEFDIR="#sysconfdir#" USERDIR="$HOME" VERSION="#version#" BINDIR="#bindir#" make_dir() { mkdir "$1" chmod +rwx "$1" } make_script() { ISCRIPT="$1" cat << EOF >> "$ISCRIPT" # Window Maker default X session startup script PATH="\$PATH:$BINDIR" # If you login from xdm, uncomment this to make error messages appear # in the console window. # # tail -f "$HOME"/.xsession-errors > /dev/console & exec wmaker EOF chmod +rx "$ISCRIPT" } # # Copy files considering special cases # copy() { source="$1" target="$2" file="$(basename "$source")" rm -f "$target" if [ "$file" = "WindowMaker" ]; then sed -e "s|~/GNUstep|$GSDIR|g" "$source" > "$target" else if test "x$WMAKER_USER_ROOT" != "x"; then sed -e "s|\$HOME/GNUstep|$GSDIR|g" \ "$source" > "$target" fi fi } # # Generate WMRootmenu # GenerateMenu() { wmgenmenu > $GSDIR/Defaults/WMRootMenu } 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 fi if [ ! -d "$USERDIR" ]; then echo "Could not find user directory $USERDIR" exit 1 fi if test "x$WMAKER_USER_ROOT" = "x"; then cd "$USERDIR" GSDIR="$USERDIR/GNUstep" if [ ! -d "$GSDIR" ]; then echo "Creating $GSDIR user directory" make_dir "$GSDIR" fi else GSDIR="$WMAKER_USER_ROOT" if [ ! -d "$GSDIR" ]; then # in this case, and in this case only, mkdir needs -p option mkdir -p $GSDIR || { echo "Directory specified in WMAKER_USER_ROOT environment variable does not exist and could not be created" exit 1 } chmod +rwx $GSDIR || exit 1 fi cd "$GSDIR" cd .. fi if [ ! -d "$GSDIR/Defaults" ]; then make_dir "$GSDIR/Defaults" fi echo "Copying defaults database..." FILES="$(cd "$GLOBALDEFDIR" && ls -d *)" all="" for i in $FILES; do if [ ! -d "$GLOBALDEFDIR/$i" ]; then if [ -f "$GSDIR/Defaults/$i" -a -z "$BATCH" ]; then echo "The configuration file \"$i\" already exists in your defaults database." echo "Do you wish to replace it? <y/n/a> [n] $all" if [ "$all" != "a" ]; then read foo if [ "$foo" = "a" -o "$foo" = "A" ]; then all="a" fi fi if [ "$foo" = "y" -o "$foo" = "Y" -o "$all" = "a" ]; then copy "$GLOBALDEFDIR/$i" "$GSDIR/Defaults/$i" fi else copy "$GLOBALDEFDIR/$i" "$GSDIR/Defaults/$i" fi fi done GenerateMenu if [ ! -d "$GSDIR/Library/Icons/" ]; then echo "Creating icon library directory $GSDIR/Library/Icons" if [ ! -d "$GSDIR/Library" ]; then make_dir "$GSDIR/Library" fi make_dir "$GSDIR/Library/Icons" fi if [ ! -d "$GSDIR/Library/WindowMaker/" ]; then echo "Creating WindowMaker data library directory $GSDIR/Library/WindowMaker" if [ ! -d "$GSDIR/Library" ]; then make_dir "$GSDIR/Library" fi make_dir "$GSDIR/Library/WindowMaker" fi if [ ! -d "$GSDIR/Library/WindowMaker/Styles" ]; then echo "Creating style library $GSDIR/Library/WindowMaker/Styles" make_dir "$GSDIR/Library/WindowMaker/Styles" fi if [ ! -d "$GSDIR/Library/WindowMaker/Themes" ]; then echo "Creating theme library $GSDIR/Library/WindowMaker/Themes" make_dir "$GSDIR/Library/WindowMaker/Themes" fi if [ ! -d "$GSDIR/Library/WindowMaker/Backgrounds" ]; then echo "Creating bg image library $GSDIR/Library/WindowMaker/Backgrounds" make_dir "$GSDIR/Library/WindowMaker/Backgrounds" else echo "Default Backgrounds directory already exists. Skipping..." fi if [ ! -d "$GSDIR/Library/WindowMaker/IconSets" ]; then echo "Creating icon setup library $GSDIR/Library/WindowMaker/IconSets" make_dir "$GSDIR/Library/WindowMaker/IconSets" else echo "Default IconSets directory already exists. Skipping..." fi if [ ! -d "$GSDIR/Library/WindowMaker/Pixmaps" ]; then echo "Creating pixmap library $GSDIR/Library/WindowMaker/Pixmaps" make_dir "$GSDIR/Library/WindowMaker/Pixmaps" else echo "Default Pixmaps directory already exists. Skipping..." fi if [ ! -d "$GSDIR/Library/WindowMaker/CachedPixmaps" ]; then make_dir "$GSDIR/Library/WindowMaker/CachedPixmaps" fi if [ ! -d "$GSDIR/Library/WindowMaker/WPrefs" ]; then make_dir "$GSDIR/Library/WindowMaker/WPrefs" fi if test -z "#LITE#" ; then FILES="$(cd "$GLOBALDIR" && ls menu menu.* plmenu plmenu.?? wmmacros)" for i in $FILES; do # xx herbert if [ -f "$GSDIR/Library/WindowMaker/$i" -a -z "$BATCH" ]; then # /xx herbert echo "The file \"$i\" already exists in $GSDIR/Library/WindowMaker" echo "Do you wish to replace it? <y/n/a> [n] $all" if [ "$all" != "a" ]; then read foo if [ "$foo" = "a" -o "$foo" = "A" ]; then all="a" fi fi if [ "$foo" = "y" -o "$foo" = "Y" -o "$foo" = "a" ]; then copy "$GLOBALDIR/$i" "$GSDIR/Library/WindowMaker/$i" fi else copy "$GLOBALDIR/$i" "$GSDIR/Library/WindowMaker/$i" fi done fi cp "$GLOBALDIR/README.themes" "$GSDIR/Library/WindowMaker" cp "$GLOBALDIR/README" "$GSDIR/Library/WindowMaker" test -f "$GSDIR/Library/WindowMaker/autostart" || \ cp "$GLOBALDIR/autostart.sh" "$GSDIR/Library/WindowMaker/autostart" chmod +rx "$GSDIR/Library/WindowMaker/autostart" test -f "$GSDIR/Library/WindowMaker/exitscript" || \ cp "$GLOBALDIR/exitscript.sh" "$GSDIR/Library/WindowMaker/exitscript" chmod +rx "$GSDIR/Library/WindowMaker/exitscript" # xx herbert if test -n "$BATCH" ; then echo "Installation Finished" exit 0 fi # /xx herbert # ####################### DATE="$(date +%b%d.%T)" show_end_message() { echo echo "Installation Finished" echo echo "There are menus in 2 different file formats. The plain text format and" echo "the property list format. The plain text format is more flexible, but" echo "the menu in the property list format can be edited graphically. The" echo "menu that will be used by default is the property list one. Read" echo " $GSDIR/Library/WindowMaker/README" echo "for information on how to change it." if [ "${inst_menu%.*}" = "menu" ]; then echo "However, since you have locale set to $LOCALE and plmenu for such locale" echo "was not found, your WMRootMenu contains path to text formated menu:" echo " $GSDIR/Library/WindowMaker/$inst_menu" fi } wmaker_found=0 for xinit in .xinitrc .Xclients .xsession; do test ! -f "$HOME/$xinit" && continue res="$(grep wmaker "$HOME/$xinit")" if test "x$res" != x; then wmaker_found=1 break fi done if test "$wmaker_found" = 1; then echo "Found Window Maker to already be your default window manager." show_end_message exit 0 fi trap "show_end_message;exit" 2 echo echo "Now the .xinitrc, .Xclients or .xsession script must be updated so that" echo "it calls wmaker when you start an X session." echo "Type the name of the file that must be changed (normally .xinitrc)." echo "If the file already exists, it will be backed up with a .old.$DATE " echo "extension" echo "If you want to edit it by hand, hit <Control>-C now." read file if test "x$file" = "x"; then echo "Using .xinitrc as a default value" file=.xinitrc fi if [ -f "$USERDIR/$file" ]; then mv "$USERDIR/$file" "$USERDIR/$file.old.$DATE" fi make_script "$USERDIR/$file" show_end_message ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/util/po/�������������������������������������������������������������������������0000755�0001750�0001750�00000000000�13642365213�012446� 5����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/util/po/Makefile.in��������������������������������������������������������������0000644�0001750�0001750�00000036266�13642360054�014446� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = util/po ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ $(top_srcdir)/m4/ax_pthread.m4 \ $(top_srcdir)/m4/ld-version-script.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/windowmaker.m4 \ $(top_srcdir)/m4/wm_attributes.m4 \ $(top_srcdir)/m4/wm_cflags_check.m4 \ $(top_srcdir)/m4/wm_i18n.m4 \ $(top_srcdir)/m4/wm_imgfmt_check.m4 \ $(top_srcdir)/m4/wm_libexif.m4 $(top_srcdir)/m4/wm_libmath.m4 \ $(top_srcdir)/m4/wm_prog_cc_c11.m4 \ $(top_srcdir)/m4/wm_xext_check.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in README DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ GFXLIBS = @GFXLIBS@ GREP = @GREP@ HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLIBS = @INTLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBBSD = @LIBBSD@ LIBEXIF = @LIBEXIF@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXINERAMA = @LIBXINERAMA@ LIBXMU = @LIBXMU@ LIBXRANDR = @LIBXRANDR@ LINGUAS = @LINGUAS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAGICKFLAGS = @MAGICKFLAGS@ MAGICKLIBS = @MAGICKLIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MANLANGDIRS = @MANLANGDIRS@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOLIBS = @PANGOLIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILMOFILES = @UTILMOFILES@ VERSION = @VERSION@ WINGSMOFILES = @WINGSMOFILES@ WINGS_VERSION = @WINGS_VERSION@ WMAKERMOFILES = @WMAKERMOFILES@ WPREFSMOFILES = @WPREFSMOFILES@ WRASTER_VERSION = @WRASTER_VERSION@ WUTIL_VERSION = @WUTIL_VERSION@ XCFLAGS = @XCFLAGS@ XFTCONFIG = @XFTCONFIG@ XFTFLAGS = @XFTFLAGS@ XFTLIBS = @XFTLIBS@ XGETTEXT = @XGETTEXT@ XLFLAGS = @XLFLAGS@ XLIBS = @XLIBS@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBRARY_PATH = @X_LIBRARY_PATH@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ defsdatadir = @defsdatadir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ inc_search_path = @inc_search_path@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lcov_output_directory = @lcov_output_directory@ lib_search_path = @lib_search_path@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pixmapdir = @pixmapdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ wprefs_bindir = @wprefs_bindir@ wprefs_datadir = @wprefs_datadir@ DOMAIN = wmgenmenu CATALOGS = @UTILMOFILES@ CLEANFILES = $(DOMAIN).pot $(CATALOGS) EXTRA_DIST = de.po es.po fr.po fy.po nl.po pt.po POTFILES = \ $(top_srcdir)/util/wmgenmenu.c \ $(top_srcdir)/util/wmgenmenu.h SUFFIXES = .po .mo all: all-am .SUFFIXES: .SUFFIXES: .po .mo $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu util/po/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu util/po/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile all-local installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-data-local install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-local .MAKE: install-am install-strip .PHONY: all all-am all-local check check-am clean clean-generic \ clean-libtool cscopelist-am ctags-am distclean \ distclean-generic distclean-libtool distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-data-local install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-local .PRECIOUS: Makefile .po.mo: $(AM_V_GEN)$(MSGFMT) -c -o $@ $< all-local: $(CATALOGS) .PHONY: update-lang @HAVE_XGETTEXT_TRUE@update-lang: $(DOMAIN).pot @HAVE_XGETTEXT_TRUE@ $(AM_V_GEN)$(top_srcdir)/script/generate-po-from-template.sh \ @HAVE_XGETTEXT_TRUE@ -n "$(PACKAGE_NAME)" -v "$(PACKAGE_VERSION)" -b "$(PACKAGE_BUGREPORT)" \ @HAVE_XGETTEXT_TRUE@ -t "$(DOMAIN).pot" "$(srcdir)/$(PO).po" @HAVE_XGETTEXT_TRUE@$(DOMAIN).pot: $(POTFILES) @HAVE_XGETTEXT_TRUE@ $(AM_V_GEN)$(XGETTEXT) --default-domain=$(DOMAIN) \ @HAVE_XGETTEXT_TRUE@ --add-comments --keyword=_ --keyword=N_ $(POTFILES) @HAVE_XGETTEXT_TRUE@ @if cmp -s $(DOMAIN).po $(DOMAIN).pot; then \ @HAVE_XGETTEXT_TRUE@ rm -f $(DOMAIN).po; \ @HAVE_XGETTEXT_TRUE@ else \ @HAVE_XGETTEXT_TRUE@ mv -f $(DOMAIN).po $(DOMAIN).pot; \ @HAVE_XGETTEXT_TRUE@ fi install-data-local: $(CATALOGS) $(mkinstalldirs) $(DESTDIR)$(localedir) for n in $(CATALOGS) __DuMmY ; do \ if test "$$n" -a "$$n" != "__DuMmY" ; then \ l=`basename $$n .mo`; \ $(mkinstalldirs) $(DESTDIR)$(localedir)/$$l/LC_MESSAGES; \ $(INSTALL_DATA) -m 644 $$n $(DESTDIR)$(localedir)/$$l/LC_MESSAGES/$(DOMAIN).mo; \ fi; \ done uninstall-local: for n in $(CATALOGS) ; do \ l=`basename $$n .mo`; \ rm -f $(DESTDIR)$(localedir)/$$l/LC_MESSAGES/$(DOMAIN).mo; \ done # 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. .NOEXPORT: ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/util/po/fr.po��������������������������������������������������������������������0000644�0001750�0001750�00000054214�13431646202�013337� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# wmgenmenu French translation # Copyright (C) 2011 Camille d'Alméras # This file is distributed under the same license as the Window Maker package. # Camille d'Alméras <camilledalmeras@yahoo.com>, 2011. # msgid "" msgstr "" "Project-Id-Version: wmgenmenu\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-02-10 00:04+0100\n" "PO-Revision-Date: 2011-02-05 12:19-0500\n" "Last-Translator: Camille d'Alméras <camilledalmeras@yahoo.com>\n" "Language-Team: French\n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. Root -> Applications #: ../../util/wmgenmenu.c:103 msgid "Applications" msgstr "Applications" #. Root -> Applications -> <category> #: ../../util/wmgenmenu.c:106 msgid "Terminals" msgstr "Terminaux" #. always keep terminals the top item #: ../../util/wmgenmenu.c:107 msgid "Internet" msgstr "Internet" #: ../../util/wmgenmenu.c:108 msgid "Email" msgstr "Courriel" #: ../../util/wmgenmenu.c:109 msgid "Mathematics" msgstr "Mathématiques" #: ../../util/wmgenmenu.c:110 msgid "File Managers" msgstr "Gestionnaires de fichiers" #: ../../util/wmgenmenu.c:111 msgid "Graphics" msgstr "Graphisme" #: ../../util/wmgenmenu.c:112 msgid "Multimedia" msgstr "Multimédia" #: ../../util/wmgenmenu.c:113 msgid "Editors" msgstr "Éditeurs" #: ../../util/wmgenmenu.c:114 msgid "Development" msgstr "Développement" #: ../../util/wmgenmenu.c:116 msgid "Office" msgstr "Bureautique" #: ../../util/wmgenmenu.c:117 msgid "Astronomy" msgstr "Astronomie" #: ../../util/wmgenmenu.c:118 msgid "Sound" msgstr "Son" #: ../../util/wmgenmenu.c:119 msgid "Comics" msgstr "Bandes dessinées" #: ../../util/wmgenmenu.c:120 msgid "Viewers" msgstr "Visualiseurs" #: ../../util/wmgenmenu.c:121 msgid "Utilities" msgstr "Utilitaires" #: ../../util/wmgenmenu.c:122 msgid "System" msgstr "Système" #: ../../util/wmgenmenu.c:123 msgid "Video" msgstr "Vidéo" #: ../../util/wmgenmenu.c:124 msgid "Chat and Talk" msgstr "Conversation" #: ../../util/wmgenmenu.c:125 msgid "P2P Network" msgstr "Partage poste à poste" #: ../../util/wmgenmenu.c:126 msgid "Games" msgstr "Jeux" #: ../../util/wmgenmenu.c:134 msgid "Run..." msgstr "Exécuter..." #: ../../util/wmgenmenu.c:136 #, c-format msgid "%A(Run, Type command:)" msgstr "%A(Exécuter, Tapez une commande:)" #. Root -> Appearance #: ../../util/wmgenmenu.c:142 msgid "Appearance" msgstr "Apparence" #: ../../util/wmgenmenu.c:146 msgid "Themes" msgstr "Thèmes" #: ../../util/wmgenmenu.c:155 msgid "Styles" msgstr "Styles" #: ../../util/wmgenmenu.c:164 msgid "Icon Sets" msgstr "Jeux d'icônes" #. Root -> Appearance -> Background #: ../../util/wmgenmenu.c:172 msgid "Background" msgstr "Fond d'écran" #. Root -> Appearance -> Background -> Solid #: ../../util/wmgenmenu.c:175 msgid "Solid" msgstr "Uni" #. Root -> Appearance -> Background -> Solid -> <color> #: ../../util/wmgenmenu.c:187 msgid "Black" msgstr "Noir" #: ../../util/wmgenmenu.c:188 msgid "Blue" msgstr "Bleu turquin" #: ../../util/wmgenmenu.c:189 msgid "Indigo" msgstr "Bleu de cobalt" #: ../../util/wmgenmenu.c:190 msgid "Bluemarine" msgstr "Bleu marine" #: ../../util/wmgenmenu.c:191 msgid "Purple" msgstr "Améthyste foncé" #: ../../util/wmgenmenu.c:192 msgid "Wheat" msgstr "Bistre" #: ../../util/wmgenmenu.c:193 msgid "Dark Gray" msgstr "Gris de Payne" #: ../../util/wmgenmenu.c:194 msgid "Wine" msgstr "Bordeaux" #. Root -> Appearance -> Background -> Gradient #: ../../util/wmgenmenu.c:199 msgid "Gradient" msgstr "Dégradé" #: ../../util/wmgenmenu.c:213 msgid "Sunset" msgstr "Coucher de soleil" #: ../../util/wmgenmenu.c:220 msgid "Sky" msgstr "Ciel" #: ../../util/wmgenmenu.c:221 msgid "Blue Shades" msgstr "Dégradé de bleu turquin" #: ../../util/wmgenmenu.c:222 msgid "Indigo Shades" msgstr "Dégradé de bleu de cobalt" #: ../../util/wmgenmenu.c:223 msgid "Purple Shades" msgstr "Dégradé d'améthyste foncé" #: ../../util/wmgenmenu.c:224 msgid "Wheat Shades" msgstr "Dégradé de bistre" #: ../../util/wmgenmenu.c:225 msgid "Grey Shades" msgstr "Dégradé d'anthracite" #: ../../util/wmgenmenu.c:226 msgid "Wine Shades" msgstr "Dégradé de bordeaux" #: ../../util/wmgenmenu.c:232 msgid "Images" msgstr "Images" #: ../../util/wmgenmenu.c:243 msgid "Save Theme" msgstr "Enregistrer le thème" #: ../../util/wmgenmenu.c:253 msgid "Save IconSet" msgstr "Enregistrer le jeu d'icônes" #: ../../util/wmgenmenu.c:264 msgid "Workspaces" msgstr "Bureaux" #. Root -> Workspace #: ../../util/wmgenmenu.c:271 msgid "Workspace" msgstr "Bureau" #: ../../util/wmgenmenu.c:273 msgid "Hide Others" msgstr "Cacher les autres" #: ../../util/wmgenmenu.c:281 msgid "Show All" msgstr "Tout montrer" #: ../../util/wmgenmenu.c:289 msgid "Arrange Icons" msgstr "Organiser les icônes" #: ../../util/wmgenmenu.c:297 msgid "Refresh" msgstr "Actualiser" #: ../../util/wmgenmenu.c:305 msgid "Save Session" msgstr "Enregistrer la session" #: ../../util/wmgenmenu.c:313 msgid "Clear Session" msgstr "Réinitialiser la session" #: ../../util/wmgenmenu.c:322 msgid "Configure Window Maker" msgstr "Configurer Window Maker" #: ../../util/wmgenmenu.c:331 msgid "Info Panel" msgstr "Panneau d'information" #: ../../util/wmgenmenu.c:339 msgid "Restart Window Maker" msgstr "Redémarrer Window Maker" #: ../../util/wmgenmenu.c:352 msgid "Lock Screen" msgstr "Verrouiller l'écran" #: ../../util/wmgenmenu.c:363 msgid "Exit Window Maker" msgstr "Quitter Window Maker" #: ../../util/wmgenmenu.c:458 #, c-format msgid "Start %s" msgstr "Lancer %s" #: ../../util/wmgenmenu.c:468 msgid "Other Window Managers" msgstr "Autres gestionnaires de fenêtres" #: ../../util/wmgenmenu.h:9 msgid "xterm" msgstr "" #: ../../util/wmgenmenu.h:10 msgid "mrxvt" msgstr "" #: ../../util/wmgenmenu.h:11 msgid "Konsole" msgstr "" #: ../../util/wmgenmenu.h:16 msgid "Dolphin" msgstr "" #: ../../util/wmgenmenu.h:17 msgid "Thunar" msgstr "" #: ../../util/wmgenmenu.h:18 msgid "ROX filer" msgstr "" #: ../../util/wmgenmenu.h:19 msgid "GWorkspace" msgstr "" #: ../../util/wmgenmenu.h:20 msgid "Midnight Commander" msgstr "" #: ../../util/wmgenmenu.h:21 msgid "XFTree" msgstr "" #: ../../util/wmgenmenu.h:22 ../../util/wmgenmenu.h:118 msgid "Konqueror" msgstr "" #: ../../util/wmgenmenu.h:23 msgid "Nautilus" msgstr "" #: ../../util/wmgenmenu.h:24 msgid "FSViewer" msgstr "" #: ../../util/wmgenmenu.h:25 msgid "Xfe" msgstr "" #: ../../util/wmgenmenu.h:30 msgid "Xmaxima" msgstr "" #: ../../util/wmgenmenu.h:31 msgid "Maxima" msgstr "" #: ../../util/wmgenmenu.h:32 msgid "Maple" msgstr "" #: ../../util/wmgenmenu.h:33 msgid "Scilab" msgstr "" #: ../../util/wmgenmenu.h:34 msgid "bc" msgstr "" #: ../../util/wmgenmenu.h:35 msgid "KCalc" msgstr "" #: ../../util/wmgenmenu.h:36 msgid "XCalc" msgstr "" #: ../../util/wmgenmenu.h:37 msgid "Mathematica" msgstr "" #: ../../util/wmgenmenu.h:38 msgid "Math" msgstr "" #. command-line Mathematica #: ../../util/wmgenmenu.h:39 msgid "Free42" msgstr "" #: ../../util/wmgenmenu.h:40 msgid "X48" msgstr "" #: ../../util/wmgenmenu.h:45 msgid "Xplns" msgstr "" #: ../../util/wmgenmenu.h:46 msgid "Stellarium" msgstr "" #: ../../util/wmgenmenu.h:51 msgid "GIMP" msgstr "" #: ../../util/wmgenmenu.h:52 msgid "Sodipodi" msgstr "" #: ../../util/wmgenmenu.h:53 msgid "Inkscape" msgstr "" #: ../../util/wmgenmenu.h:54 msgid "KIllustrator" msgstr "" #: ../../util/wmgenmenu.h:55 msgid "Krayon" msgstr "" #: ../../util/wmgenmenu.h:56 msgid "KPovModeler" msgstr "" #: ../../util/wmgenmenu.h:57 msgid "XBitmap" msgstr "" #: ../../util/wmgenmenu.h:58 msgid "XPaint" msgstr "" #: ../../util/wmgenmenu.h:59 msgid "XFig" msgstr "" #: ../../util/wmgenmenu.h:60 msgid "KPaint" msgstr "" #: ../../util/wmgenmenu.h:61 msgid "Blender" msgstr "" #: ../../util/wmgenmenu.h:62 msgid "KSnapshot" msgstr "" #: ../../util/wmgenmenu.h:63 msgid "GPhoto" msgstr "" #: ../../util/wmgenmenu.h:64 msgid "DigiKam" msgstr "" #: ../../util/wmgenmenu.h:65 msgid "Dia" msgstr "" #: ../../util/wmgenmenu.h:66 msgid "CompuPic" msgstr "" #: ../../util/wmgenmenu.h:67 msgid "GQview" msgstr "" #: ../../util/wmgenmenu.h:68 msgid "Geeqie" msgstr "" #: ../../util/wmgenmenu.h:69 msgid "KView" msgstr "" #: ../../util/wmgenmenu.h:70 msgid "Pixie" msgstr "" #: ../../util/wmgenmenu.h:71 msgid "ImageMagick Display" msgstr "" #: ../../util/wmgenmenu.h:72 msgid "XV" msgstr "" #: ../../util/wmgenmenu.h:73 msgid "Eye of GNOME" msgstr "" #: ../../util/wmgenmenu.h:74 msgid "Quick Image Viewer" msgstr "" #: ../../util/wmgenmenu.h:79 msgid "Audacious" msgstr "" #: ../../util/wmgenmenu.h:80 ../../util/wmgenmenu.h:216 msgid "Kaffeine" msgstr "" #: ../../util/wmgenmenu.h:81 msgid "Audacity" msgstr "" #: ../../util/wmgenmenu.h:82 msgid "Amarok" msgstr "" #: ../../util/wmgenmenu.h:83 msgid "XMMS" msgstr "" #: ../../util/wmgenmenu.h:84 msgid "K9Copy" msgstr "" #: ../../util/wmgenmenu.h:85 msgid "HandBrake" msgstr "" #: ../../util/wmgenmenu.h:86 msgid "OGMRip" msgstr "" #: ../../util/wmgenmenu.h:87 msgid "DVBcut" msgstr "" #: ../../util/wmgenmenu.h:88 msgid "AcidRip" msgstr "" #: ../../util/wmgenmenu.h:89 msgid "Avidemux" msgstr "" #: ../../util/wmgenmenu.h:90 msgid "GQmpeg" msgstr "" #: ../../util/wmgenmenu.h:91 msgid "Freeamp" msgstr "" #: ../../util/wmgenmenu.h:92 msgid "RealPlayer" msgstr "" #: ../../util/wmgenmenu.h:93 msgid "Mediathek" msgstr "" #: ../../util/wmgenmenu.h:94 msgid "KMid" msgstr "" #: ../../util/wmgenmenu.h:95 msgid "Kmidi" msgstr "" #: ../../util/wmgenmenu.h:96 msgid "Gtcd" msgstr "" #: ../../util/wmgenmenu.h:97 msgid "Grip" msgstr "" #: ../../util/wmgenmenu.h:98 msgid "AVIplay" msgstr "" #: ../../util/wmgenmenu.h:99 msgid "Gtv" msgstr "" #: ../../util/wmgenmenu.h:100 msgid "VLC" msgstr "" #: ../../util/wmgenmenu.h:101 msgid "Sinek" msgstr "" #: ../../util/wmgenmenu.h:102 msgid "xine" msgstr "" #: ../../util/wmgenmenu.h:103 msgid "aKtion" msgstr "" #: ../../util/wmgenmenu.h:104 msgid "Gcd" msgstr "" #: ../../util/wmgenmenu.h:105 msgid "XawTV" msgstr "" #: ../../util/wmgenmenu.h:106 msgid "X-CD-Roast" msgstr "" #: ../../util/wmgenmenu.h:107 msgid "XPlayCD" msgstr "" #: ../../util/wmgenmenu.h:112 ../../util/wmgenmenu.h:113 msgid "Chromium" msgstr "" #: ../../util/wmgenmenu.h:114 msgid "Google Chrome" msgstr "" #: ../../util/wmgenmenu.h:115 msgid "Mozilla Firefox" msgstr "" #: ../../util/wmgenmenu.h:116 msgid "Galeon" msgstr "" #: ../../util/wmgenmenu.h:117 msgid "SkipStone" msgstr "" #: ../../util/wmgenmenu.h:119 msgid "Dillo" msgstr "" #: ../../util/wmgenmenu.h:120 msgid "Epiphany" msgstr "" #: ../../util/wmgenmenu.h:121 msgid "Opera" msgstr "" #: ../../util/wmgenmenu.h:122 msgid "Midori" msgstr "" #: ../../util/wmgenmenu.h:123 msgid "Mozilla SeaMonkey" msgstr "" #: ../../util/wmgenmenu.h:124 msgid "Kazehakase" msgstr "" #: ../../util/wmgenmenu.h:125 msgid "Links" msgstr "" #: ../../util/wmgenmenu.h:126 msgid "Lynx" msgstr "" #: ../../util/wmgenmenu.h:127 msgid "W3M" msgstr "" #: ../../util/wmgenmenu.h:132 msgid "Mozilla Thunderbird" msgstr "" #: ../../util/wmgenmenu.h:133 msgid "Mutt" msgstr "" #: ../../util/wmgenmenu.h:134 msgid "GNUMail" msgstr "" #: ../../util/wmgenmenu.h:135 msgid "Evolution" msgstr "" #: ../../util/wmgenmenu.h:136 msgid "Kleopatra" msgstr "" #: ../../util/wmgenmenu.h:137 msgid "Sylpheed" msgstr "" #: ../../util/wmgenmenu.h:138 msgid "Spruce" msgstr "" #: ../../util/wmgenmenu.h:139 msgid "KMail" msgstr "" #: ../../util/wmgenmenu.h:140 msgid "Exmh" msgstr "" #: ../../util/wmgenmenu.h:141 msgid "Pine" msgstr "" #: ../../util/wmgenmenu.h:142 msgid "ELM" msgstr "" #: ../../util/wmgenmenu.h:143 msgid "Alpine" msgstr "" #: ../../util/wmgenmenu.h:148 msgid "soundKonverter" msgstr "" #: ../../util/wmgenmenu.h:149 msgid "Krecord" msgstr "" #: ../../util/wmgenmenu.h:150 msgid "Grecord" msgstr "" #: ../../util/wmgenmenu.h:151 msgid "ALSA mixer" msgstr "" #: ../../util/wmgenmenu.h:152 msgid "Sound configuration" msgstr "" #: ../../util/wmgenmenu.h:153 msgid "aumix" msgstr "" #: ../../util/wmgenmenu.h:154 msgid "Gmix" msgstr "" #: ../../util/wmgenmenu.h:159 msgid "XJed" msgstr "" #: ../../util/wmgenmenu.h:160 msgid "Jed" msgstr "" #: ../../util/wmgenmenu.h:161 msgid "Emacs" msgstr "" #: ../../util/wmgenmenu.h:162 msgid "XEmacs" msgstr "" #: ../../util/wmgenmenu.h:163 msgid "gVIM" msgstr "" #: ../../util/wmgenmenu.h:164 msgid "vi" msgstr "" #: ../../util/wmgenmenu.h:165 msgid "VIM" msgstr "" #: ../../util/wmgenmenu.h:166 msgid "gedit" msgstr "" #: ../../util/wmgenmenu.h:167 msgid "KEdit" msgstr "" #: ../../util/wmgenmenu.h:168 msgid "XEdit" msgstr "" #: ../../util/wmgenmenu.h:169 msgid "KWrite" msgstr "" #: ../../util/wmgenmenu.h:170 msgid "Kate" msgstr "" #: ../../util/wmgenmenu.h:171 msgid "Pico" msgstr "" #: ../../util/wmgenmenu.h:172 msgid "Nano" msgstr "" #: ../../util/wmgenmenu.h:173 msgid "Joe" msgstr "" #: ../../util/wmgenmenu.h:178 msgid "Omnia data" msgstr "" #: ../../util/wmgenmenu.h:179 msgid "Comix" msgstr "" #: ../../util/wmgenmenu.h:180 msgid "QComicBook" msgstr "" #: ../../util/wmgenmenu.h:185 msgid "Evince" msgstr "" #: ../../util/wmgenmenu.h:186 msgid "KGhostView" msgstr "" #: ../../util/wmgenmenu.h:187 msgid "gv" msgstr "" #: ../../util/wmgenmenu.h:188 msgid "GGv" msgstr "" #: ../../util/wmgenmenu.h:189 msgid "Xdvi" msgstr "" #: ../../util/wmgenmenu.h:190 msgid "KDVI" msgstr "" #: ../../util/wmgenmenu.h:191 msgid "Xpdf" msgstr "" #: ../../util/wmgenmenu.h:192 msgid "Adobe Reader" msgstr "" #: ../../util/wmgenmenu.h:193 msgid "Gless" msgstr "" #: ../../util/wmgenmenu.h:198 msgid "Google Desktop" msgstr "" #: ../../util/wmgenmenu.h:199 msgid "K3B" msgstr "" #: ../../util/wmgenmenu.h:200 msgid "gtkfind" msgstr "" #: ../../util/wmgenmenu.h:201 msgid "gdict" msgstr "" #: ../../util/wmgenmenu.h:202 msgid "gpsdrive" msgstr "" #: ../../util/wmgenmenu.h:203 msgid "wfcmgr" msgstr "" #: ../../util/wmgenmenu.h:204 msgid "switch" msgstr "" #: ../../util/wmgenmenu.h:205 msgid "kaddressbook" msgstr "" #: ../../util/wmgenmenu.h:206 msgid "kab" msgstr "" #: ../../util/wmgenmenu.h:207 msgid "kfind" msgstr "" #: ../../util/wmgenmenu.h:208 msgid "oclock" msgstr "" #: ../../util/wmgenmenu.h:209 msgid "rclock" msgstr "" #: ../../util/wmgenmenu.h:210 msgid "xclock" msgstr "" #: ../../util/wmgenmenu.h:211 msgid "kppp" msgstr "" #: ../../util/wmgenmenu.h:217 msgid "Ekiga" msgstr "" #: ../../util/wmgenmenu.h:222 msgid "Pidgin" msgstr "" #: ../../util/wmgenmenu.h:223 msgid "Skype" msgstr "" #: ../../util/wmgenmenu.h:224 msgid "Gizmo" msgstr "" #: ../../util/wmgenmenu.h:225 msgid "Kopete" msgstr "" #: ../../util/wmgenmenu.h:226 msgid "XChat" msgstr "" #: ../../util/wmgenmenu.h:227 msgid "KVIrc" msgstr "" #: ../../util/wmgenmenu.h:228 msgid "BitchX" msgstr "" #: ../../util/wmgenmenu.h:229 msgid "EPIC" msgstr "" #: ../../util/wmgenmenu.h:230 msgid "EPIC4" msgstr "" #: ../../util/wmgenmenu.h:231 msgid "Irssi" msgstr "" #: ../../util/wmgenmenu.h:232 msgid "TinyIRC" msgstr "" #: ../../util/wmgenmenu.h:233 msgid "Ksirc" msgstr "" #: ../../util/wmgenmenu.h:234 msgid "gtalk" msgstr "" #: ../../util/wmgenmenu.h:235 msgid "GnomeICU" msgstr "" #: ../../util/wmgenmenu.h:236 msgid "Licq" msgstr "" #: ../../util/wmgenmenu.h:237 msgid "aMSN" msgstr "" #: ../../util/wmgenmenu.h:242 msgid "aMule" msgstr "" #: ../../util/wmgenmenu.h:243 msgid "gFTP" msgstr "" #: ../../util/wmgenmenu.h:244 msgid "Smb4K" msgstr "" #: ../../util/wmgenmenu.h:245 msgid "KTorrent" msgstr "" #: ../../util/wmgenmenu.h:246 msgid "BitTorrent GUI" msgstr "" #: ../../util/wmgenmenu.h:247 msgid "ftp" msgstr "" #: ../../util/wmgenmenu.h:248 msgid "sftp" msgstr "" #: ../../util/wmgenmenu.h:249 msgid "Pavuk" msgstr "" #: ../../util/wmgenmenu.h:250 msgid "gtm" msgstr "" #: ../../util/wmgenmenu.h:251 msgid "Gnut" msgstr "" #: ../../util/wmgenmenu.h:252 msgid "GTK Gnutella" msgstr "" #: ../../util/wmgenmenu.h:253 msgid "Gnutmeg" msgstr "" #: ../../util/wmgenmenu.h:258 msgid "FlightGear Flight Simulator" msgstr "" #: ../../util/wmgenmenu.h:259 msgid "Tremulous" msgstr "" #: ../../util/wmgenmenu.h:260 msgid "XBoard" msgstr "" #: ../../util/wmgenmenu.h:261 msgid "GNOME Chess" msgstr "" #: ../../util/wmgenmenu.h:262 msgid "Quake 2" msgstr "" #: ../../util/wmgenmenu.h:263 msgid "Quake 3" msgstr "" #: ../../util/wmgenmenu.h:264 msgid "Quake 3: Urban Terror 2" msgstr "" #: ../../util/wmgenmenu.h:265 msgid "Soldier of Fortune" msgstr "" #: ../../util/wmgenmenu.h:266 msgid "Rune" msgstr "" #: ../../util/wmgenmenu.h:267 msgid "Tribes 2" msgstr "" #: ../../util/wmgenmenu.h:268 msgid "Unreal Tournament" msgstr "" #: ../../util/wmgenmenu.h:269 msgid "Descent 3" msgstr "" #: ../../util/wmgenmenu.h:270 msgid "Myth 2" msgstr "" #: ../../util/wmgenmenu.h:271 ../../util/wmgenmenu.h:272 msgid "Sauerbraten" msgstr "" #: ../../util/wmgenmenu.h:273 msgid "Railroad Tycoon 2" msgstr "" #: ../../util/wmgenmenu.h:274 msgid "Heretic 2" msgstr "" #: ../../util/wmgenmenu.h:275 msgid "Kohan" msgstr "" #: ../../util/wmgenmenu.h:276 msgid "XQF" msgstr "" #: ../../util/wmgenmenu.h:281 msgid "OpenOffice.org Writer" msgstr "" #: ../../util/wmgenmenu.h:282 msgid "OpenOffice.org Calc" msgstr "" #: ../../util/wmgenmenu.h:283 msgid "OpenOffice.org Draw" msgstr "" #: ../../util/wmgenmenu.h:284 msgid "OpenOffice.org Impress" msgstr "" #: ../../util/wmgenmenu.h:285 msgid "OpenOffice.org Math" msgstr "" #: ../../util/wmgenmenu.h:286 msgid "OpenOffice.org" msgstr "" #: ../../util/wmgenmenu.h:287 msgid "StarOffice Writer" msgstr "" #: ../../util/wmgenmenu.h:288 msgid "StarOffice Calc" msgstr "" #: ../../util/wmgenmenu.h:289 msgid "StarOffice Draw" msgstr "" #: ../../util/wmgenmenu.h:290 msgid "StarOffice Impress" msgstr "" #: ../../util/wmgenmenu.h:291 msgid "StarOffice Math" msgstr "" #: ../../util/wmgenmenu.h:292 msgid "StarOffice" msgstr "" #: ../../util/wmgenmenu.h:293 msgid "AbiWord" msgstr "" #: ../../util/wmgenmenu.h:294 msgid "KWord" msgstr "" #: ../../util/wmgenmenu.h:295 msgid "KPresenter" msgstr "" #: ../../util/wmgenmenu.h:296 msgid "KSpread" msgstr "" #: ../../util/wmgenmenu.h:297 msgid "KChart" msgstr "" #: ../../util/wmgenmenu.h:298 msgid "KOrganizer" msgstr "" #: ../../util/wmgenmenu.h:299 msgid "LyX" msgstr "" #: ../../util/wmgenmenu.h:300 msgid "Klyx" msgstr "" #: ../../util/wmgenmenu.h:301 msgid "GnuCash" msgstr "" #: ../../util/wmgenmenu.h:302 msgid "Gnumeric" msgstr "" #: ../../util/wmgenmenu.h:303 msgid "GnomeCal" msgstr "" #: ../../util/wmgenmenu.h:304 msgid "GnomeCard" msgstr "" #: ../../util/wmgenmenu.h:309 msgid "gitk" msgstr "" #: ../../util/wmgenmenu.h:310 msgid "gitview" msgstr "" #: ../../util/wmgenmenu.h:311 msgid "qgit" msgstr "" #: ../../util/wmgenmenu.h:312 msgid "git-gui" msgstr "" #: ../../util/wmgenmenu.h:313 msgid "glimmer" msgstr "" #: ../../util/wmgenmenu.h:314 msgid "glade" msgstr "" #: ../../util/wmgenmenu.h:315 msgid "kdevelop" msgstr "" #: ../../util/wmgenmenu.h:316 msgid "designer" msgstr "" #: ../../util/wmgenmenu.h:317 msgid "kbabel" msgstr "" #: ../../util/wmgenmenu.h:318 msgid "idle" msgstr "" #: ../../util/wmgenmenu.h:319 msgid "ghex" msgstr "" #: ../../util/wmgenmenu.h:320 msgid "hexedit" msgstr "" #: ../../util/wmgenmenu.h:321 msgid "memprof" msgstr "" #: ../../util/wmgenmenu.h:322 msgid "tclsh" msgstr "" #: ../../util/wmgenmenu.h:323 msgid "gdb" msgstr "" #: ../../util/wmgenmenu.h:324 msgid "xxgdb" msgstr "" #: ../../util/wmgenmenu.h:325 msgid "xev" msgstr "" #: ../../util/wmgenmenu.h:330 msgid "Iotop" msgstr "" #: ../../util/wmgenmenu.h:331 msgid "Iostat" msgstr "" #: ../../util/wmgenmenu.h:332 msgid "keybconf" msgstr "" #: ../../util/wmgenmenu.h:333 msgid "GNOME System Monitor" msgstr "" #: ../../util/wmgenmenu.h:334 msgid "top" msgstr "" #: ../../util/wmgenmenu.h:335 msgid "KDE Process Monitor" msgstr "" #: ../../util/wmgenmenu.h:336 msgid "gw" msgstr "" #: ../../util/wmgenmenu.h:337 msgid "GNOME Control Center" msgstr "" #: ../../util/wmgenmenu.h:338 msgid "GKrellM" msgstr "" #: ../../util/wmgenmenu.h:339 msgid "tksysv" msgstr "" #: ../../util/wmgenmenu.h:340 msgid "ksysv" msgstr "" #: ../../util/wmgenmenu.h:341 msgid "GNOME PPP" msgstr "" #: ../../util/wmgenmenu.h:346 msgid "YaST 2" msgstr "" #: ../../util/wmgenmenu.h:347 msgid "YaST" msgstr "" #: ../../util/wmgenmenu.h:348 msgid "System Settings" msgstr "" #: ../../util/wmgenmenu.h:349 msgid "UMTSMon" msgstr "" #: ../../util/wmgenmenu.h:354 msgid "DrakNetCenter" msgstr "" #: ../../util/wmgenmenu.h:355 msgid "RPMDrake" msgstr "" #: ../../util/wmgenmenu.h:356 msgid "HardDrake" msgstr "" #: ../../util/wmgenmenu.h:357 msgid "DrakConf" msgstr "" #: ../../util/wmgenmenu.h:358 msgid "MandrakeUpdate" msgstr "" #: ../../util/wmgenmenu.h:359 msgid "XDrakRes" msgstr "" #: ../../util/wmgenmenu.h:364 msgid "Docker" msgstr "" #: ../../util/wmgenmenu.h:365 msgid "Net" msgstr "" #: ../../util/wmgenmenu.h:366 ../../util/wmgenmenu.h:387 msgid "Power" msgstr "" #: ../../util/wmgenmenu.h:367 msgid "Laptop" msgstr "" #: ../../util/wmgenmenu.h:368 msgid "WiFi" msgstr "" #: ../../util/wmgenmenu.h:369 msgid "Interface Info" msgstr "" #: ../../util/wmgenmenu.h:370 ../../util/wmgenmenu.h:373 msgid "Weather" msgstr "" #: ../../util/wmgenmenu.h:371 msgid "Sticky Notes" msgstr "" #: ../../util/wmgenmenu.h:372 msgid "Mixer" msgstr "" #: ../../util/wmgenmenu.h:374 msgid "CPU Load" msgstr "" #: ../../util/wmgenmenu.h:375 msgid "CPU Freq" msgstr "" #: ../../util/wmgenmenu.h:376 msgid "Clock Mon" msgstr "" #: ../../util/wmgenmenu.h:377 msgid "Network Devices" msgstr "" #: ../../util/wmgenmenu.h:378 msgid "Calendar & Clock" msgstr "" #: ../../util/wmgenmenu.h:379 msgid "Time" msgstr "" #: ../../util/wmgenmenu.h:380 msgid "Date" msgstr "" #: ../../util/wmgenmenu.h:381 ../../util/wmgenmenu.h:382 msgid "System Monitor" msgstr "" #: ../../util/wmgenmenu.h:383 msgid "SMP Monitor" msgstr "" #: ../../util/wmgenmenu.h:384 msgid "Interfaces" msgstr "" #: ../../util/wmgenmenu.h:385 msgid "Button" msgstr "" #: ../../util/wmgenmenu.h:386 msgid "xmms" msgstr "" #: ../../util/wmgenmenu.h:388 msgid "Magnify" msgstr "" #: ../../util/wmgenmenu.h:393 msgid "IceWM" msgstr "" #: ../../util/wmgenmenu.h:394 msgid "KWin" msgstr "" #: ../../util/wmgenmenu.h:395 msgid "twm" msgstr "" #: ../../util/wmgenmenu.h:396 msgid "Fluxbox" msgstr "" #: ../../util/wmgenmenu.h:397 msgid "Blackbox" msgstr "" #: ../../util/wmgenmenu.h:398 msgid "Ion" msgstr "" #: ../../util/wmgenmenu.h:399 msgid "Motif Window Manager" msgstr "" #: ../../util/wmgenmenu.h:400 msgid "FVWM" msgstr "" ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/util/po/README�������������������������������������������������������������������0000644�0001750�0001750�00000000335�13431646202�013243� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������File Language Note Current Maintainer ------------------------------------------------------------------------------ nl.po Dutch Alwin <translations@ziggo.nl> fy.po Frisian Alwin <translations@ziggo.nl> Notes ----- ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/util/po/fy.po��������������������������������������������������������������������0000644�0001750�0001750�00000074015�13431646202�013347� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Translation into Western Frisian for Window Maker # Copyright (C) 2015-2016 Window Maker Developers Team # This file is distributed under the same license as the windowmaker package. # Original by Alwin <translations@ziggo.nl>, 2015. # msgid "" msgstr "" "Project-Id-Version: wmaker-0.95.7+\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-01-21 16:19+0100\n" "PO-Revision-Date: 2016-01-21 00:00+0000\n" "Last-Translator: Alwin <translations@ziggo.nl>\n" "Language-Team: Western Frisian\n" "Language: fy\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. Root -> Applications #: ../../util/wmgenmenu.c:117 msgid "Applications" msgstr "Programma's" #. Root -> Applications -> <category> #: ../../util/wmgenmenu.c:120 msgid "Terminals" msgstr "Terminals" #. always keep terminals the top item #: ../../util/wmgenmenu.c:121 msgid "Internet" msgstr "Ynternet" #: ../../util/wmgenmenu.c:122 msgid "Email" msgstr "E-mail" #: ../../util/wmgenmenu.c:123 msgid "Mathematics" msgstr "Wiskunde" #: ../../util/wmgenmenu.c:124 msgid "File Managers" msgstr "Bestânsbehearders" #: ../../util/wmgenmenu.c:125 msgid "Graphics" msgstr "Grafysk" #: ../../util/wmgenmenu.c:126 msgid "Multimedia" msgstr "Multymedia" #: ../../util/wmgenmenu.c:127 msgid "Editors" msgstr "Tekstbewurkers" #: ../../util/wmgenmenu.c:128 msgid "Development" msgstr "Untwikkeljen" #: ../../util/wmgenmenu.c:130 msgid "Office" msgstr "Kantoar" #: ../../util/wmgenmenu.c:131 msgid "Astronomy" msgstr "Stjerrekunde" #: ../../util/wmgenmenu.c:132 msgid "Sound" msgstr "Audio" #: ../../util/wmgenmenu.c:133 msgid "Comics" msgstr "Strips" #: ../../util/wmgenmenu.c:134 msgid "Viewers" msgstr "Viewers" #: ../../util/wmgenmenu.c:135 msgid "Utilities" msgstr "Helpmiddels" #: ../../util/wmgenmenu.c:136 msgid "System" msgstr "Systeem" #: ../../util/wmgenmenu.c:137 msgid "Video" msgstr "Fideo" #: ../../util/wmgenmenu.c:138 msgid "Chat and Talk" msgstr "Berjochten en spraak" #: ../../util/wmgenmenu.c:139 msgid "P2P Network" msgstr "P2P-netwurk" #: ../../util/wmgenmenu.c:140 msgid "Games" msgstr "Spultsjes" #: ../../util/wmgenmenu.c:148 msgid "Run..." msgstr "Utfiere..." #: ../../util/wmgenmenu.c:150 #, c-format msgid "%A(Run, Type command:)" msgstr "%A(Utfiere, Typ kommando:)" #. Root -> Appearance #: ../../util/wmgenmenu.c:156 msgid "Appearance" msgstr "Uterlik" #: ../../util/wmgenmenu.c:160 msgid "Themes" msgstr "Tema's" #: ../../util/wmgenmenu.c:169 msgid "Styles" msgstr "Stilen" #: ../../util/wmgenmenu.c:178 msgid "Icon Sets" msgstr "Ikoanesets" #. Root -> Appearance -> Background #: ../../util/wmgenmenu.c:186 msgid "Background" msgstr "Eftergrûn" #. Root -> Appearance -> Background -> Solid #: ../../util/wmgenmenu.c:189 msgid "Solid" msgstr "Effen" #. Root -> Appearance -> Background -> Solid -> <color> #: ../../util/wmgenmenu.c:201 msgid "Black" msgstr "Swart" #: ../../util/wmgenmenu.c:202 msgid "Blue" msgstr "Blau" #: ../../util/wmgenmenu.c:203 msgid "Indigo" msgstr "Indigo" #: ../../util/wmgenmenu.c:204 msgid "Bluemarine" msgstr "Marineblau" #: ../../util/wmgenmenu.c:205 msgid "Purple" msgstr "Poarper" #: ../../util/wmgenmenu.c:206 msgid "Wheat" msgstr "Weet" #: ../../util/wmgenmenu.c:207 msgid "Dark Gray" msgstr "Donkergriis" #: ../../util/wmgenmenu.c:208 msgid "Wine" msgstr "Wynread" #. Root -> Appearance -> Background -> Gradient #: ../../util/wmgenmenu.c:213 msgid "Gradient" msgstr "Kleurferrin" #: ../../util/wmgenmenu.c:227 msgid "Sunset" msgstr "Sinne-ûndergong" #: ../../util/wmgenmenu.c:234 msgid "Sky" msgstr "Loft" #: ../../util/wmgenmenu.c:235 msgid "Blue Shades" msgstr "Blautinten" #: ../../util/wmgenmenu.c:236 msgid "Indigo Shades" msgstr "Indigotinten" #: ../../util/wmgenmenu.c:237 msgid "Purple Shades" msgstr "Poarpertinten" #: ../../util/wmgenmenu.c:238 msgid "Wheat Shades" msgstr "Weettinten" #: ../../util/wmgenmenu.c:239 msgid "Grey Shades" msgstr "Griistinten" #: ../../util/wmgenmenu.c:240 msgid "Wine Shades" msgstr "Wynreadtinten" #: ../../util/wmgenmenu.c:246 msgid "Images" msgstr "Ofbyldingen" #: ../../util/wmgenmenu.c:257 msgid "Save Theme" msgstr "Tema bewarje" #: ../../util/wmgenmenu.c:266 msgid "Save IconSet" msgstr "Ikoaneset bewarje" #: ../../util/wmgenmenu.c:277 msgid "Workspaces" msgstr "Wurkromten" #. Root -> Workspace #: ../../util/wmgenmenu.c:284 msgid "Workspace" msgstr "Wurkromte" #: ../../util/wmgenmenu.c:286 msgid "Hide Others" msgstr "Oare ferbergje" #: ../../util/wmgenmenu.c:294 msgid "Show All" msgstr "Alles toane" #: ../../util/wmgenmenu.c:302 msgid "Arrange Icons" msgstr "Ikoanen skikke" #: ../../util/wmgenmenu.c:310 msgid "Refresh" msgstr "Fernije" #: ../../util/wmgenmenu.c:318 msgid "Save Session" msgstr "Sesje bewarje" #: ../../util/wmgenmenu.c:326 msgid "Clear Session" msgstr "Sesje wiskje" #: ../../util/wmgenmenu.c:335 msgid "Configure Window Maker" msgstr "Window Maker ynstelle" #: ../../util/wmgenmenu.c:344 msgid "Info Panel" msgstr "Ynfopaniel" #: ../../util/wmgenmenu.c:352 msgid "Restart Window Maker" msgstr "Window Maker werstarte" #: ../../util/wmgenmenu.c:365 msgid "Lock Screen" msgstr "Skerm beskoattelje" #: ../../util/wmgenmenu.c:376 msgid "Exit Window Maker" msgstr "Window Maker ôfslute" #: ../../util/wmgenmenu.c:480 #, c-format msgid "Start %s" msgstr "%s starte" #: ../../util/wmgenmenu.c:490 msgid "Other Window Managers" msgstr "Oare finsterbehearders" #: ../../util/wmgenmenu.h:26 msgid "xterm" msgstr "" #: ../../util/wmgenmenu.h:27 msgid "mrxvt" msgstr "" #: ../../util/wmgenmenu.h:28 msgid "Konsole" msgstr "" #: ../../util/wmgenmenu.h:29 msgid "Urxvt" msgstr "" #: ../../util/wmgenmenu.h:34 msgid "Dolphin" msgstr "" #: ../../util/wmgenmenu.h:35 msgid "Thunar" msgstr "" #: ../../util/wmgenmenu.h:36 msgid "ROX filer" msgstr "" #: ../../util/wmgenmenu.h:37 msgid "PCManFM" msgstr "" #: ../../util/wmgenmenu.h:38 msgid "GWorkspace" msgstr "" #: ../../util/wmgenmenu.h:39 msgid "Midnight Commander" msgstr "" #: ../../util/wmgenmenu.h:40 msgid "XFTree" msgstr "" #: ../../util/wmgenmenu.h:41 ../../util/wmgenmenu.h:140 msgid "Konqueror" msgstr "" #: ../../util/wmgenmenu.h:42 msgid "Nautilus" msgstr "" #: ../../util/wmgenmenu.h:43 msgid "FSViewer" msgstr "" #: ../../util/wmgenmenu.h:44 msgid "Xfe" msgstr "" #: ../../util/wmgenmenu.h:49 msgid "Xmaxima" msgstr "" #: ../../util/wmgenmenu.h:50 msgid "Maxima" msgstr "" #: ../../util/wmgenmenu.h:51 msgid "Maple" msgstr "" #: ../../util/wmgenmenu.h:52 msgid "Scilab" msgstr "" #: ../../util/wmgenmenu.h:53 msgid "bc" msgstr "" #: ../../util/wmgenmenu.h:54 msgid "KCalc" msgstr "" #: ../../util/wmgenmenu.h:55 msgid "XCalc" msgstr "" #: ../../util/wmgenmenu.h:56 msgid "Mathematica" msgstr "" #: ../../util/wmgenmenu.h:57 msgid "Math" msgstr "" #. command-line Mathematica #: ../../util/wmgenmenu.h:58 msgid "Free42" msgstr "" #: ../../util/wmgenmenu.h:59 msgid "X48" msgstr "" #: ../../util/wmgenmenu.h:64 msgid "Xplns" msgstr "" #: ../../util/wmgenmenu.h:65 msgid "Stellarium" msgstr "" #: ../../util/wmgenmenu.h:70 msgid "GIMP" msgstr "" #: ../../util/wmgenmenu.h:71 msgid "Sodipodi" msgstr "" #: ../../util/wmgenmenu.h:72 msgid "Inkscape" msgstr "" #: ../../util/wmgenmenu.h:73 msgid "KIllustrator" msgstr "" #: ../../util/wmgenmenu.h:74 msgid "Krayon" msgstr "" #: ../../util/wmgenmenu.h:75 msgid "KPovModeler" msgstr "" #: ../../util/wmgenmenu.h:76 msgid "XBitmap" msgstr "" #: ../../util/wmgenmenu.h:77 msgid "XPaint" msgstr "" #: ../../util/wmgenmenu.h:78 msgid "XFig" msgstr "" #: ../../util/wmgenmenu.h:79 msgid "KPaint" msgstr "" #: ../../util/wmgenmenu.h:80 msgid "Blender" msgstr "" #: ../../util/wmgenmenu.h:81 msgid "KSnapshot" msgstr "" #: ../../util/wmgenmenu.h:82 msgid "GPhoto" msgstr "" #: ../../util/wmgenmenu.h:83 msgid "DigiKam" msgstr "" #: ../../util/wmgenmenu.h:84 msgid "GQview" msgstr "" #: ../../util/wmgenmenu.h:85 msgid "Geeqie" msgstr "" #: ../../util/wmgenmenu.h:86 msgid "KView" msgstr "" #: ../../util/wmgenmenu.h:87 msgid "Dia" msgstr "" #: ../../util/wmgenmenu.h:88 msgid "CompuPic" msgstr "" #: ../../util/wmgenmenu.h:89 msgid "Pixie" msgstr "" #: ../../util/wmgenmenu.h:90 msgid "ImageMagick Display" msgstr "" #: ../../util/wmgenmenu.h:91 msgid "XV" msgstr "" #: ../../util/wmgenmenu.h:92 msgid "Eye of GNOME" msgstr "" #: ../../util/wmgenmenu.h:93 msgid "Quick Image Viewer" msgstr "" #: ../../util/wmgenmenu.h:98 ../../util/wmgenmenu.h:501 msgid "Audacious" msgstr "" #: ../../util/wmgenmenu.h:99 msgid "Kaffeine" msgstr "" #: ../../util/wmgenmenu.h:100 msgid "Audacity" msgstr "" #: ../../util/wmgenmenu.h:101 msgid "Amarok" msgstr "" #: ../../util/wmgenmenu.h:102 msgid "XMMS" msgstr "" #: ../../util/wmgenmenu.h:103 msgid "K9Copy" msgstr "" #: ../../util/wmgenmenu.h:104 msgid "HandBrake" msgstr "" #: ../../util/wmgenmenu.h:105 msgid "OGMRip" msgstr "" #: ../../util/wmgenmenu.h:106 msgid "DVBcut" msgstr "" #: ../../util/wmgenmenu.h:107 msgid "AcidRip" msgstr "" #: ../../util/wmgenmenu.h:108 msgid "RipperX" msgstr "" #: ../../util/wmgenmenu.h:109 msgid "Avidemux" msgstr "" #: ../../util/wmgenmenu.h:110 msgid "GQmpeg" msgstr "" #: ../../util/wmgenmenu.h:111 msgid "SMPlayer" msgstr "" #: ../../util/wmgenmenu.h:112 msgid "Linux MultiMedia Studio" msgstr "" #: ../../util/wmgenmenu.h:113 msgid "Freeamp" msgstr "" #: ../../util/wmgenmenu.h:114 msgid "RealPlayer" msgstr "" #: ../../util/wmgenmenu.h:115 msgid "Mediathek" msgstr "" #: ../../util/wmgenmenu.h:116 msgid "KMid" msgstr "" #: ../../util/wmgenmenu.h:117 msgid "Kmidi" msgstr "" #: ../../util/wmgenmenu.h:118 msgid "Gtcd" msgstr "" #: ../../util/wmgenmenu.h:119 msgid "Grip" msgstr "" #: ../../util/wmgenmenu.h:120 msgid "AVIplay" msgstr "" #: ../../util/wmgenmenu.h:121 msgid "Gtv" msgstr "" #: ../../util/wmgenmenu.h:122 msgid "VLC" msgstr "" #: ../../util/wmgenmenu.h:123 msgid "Sinek" msgstr "" #: ../../util/wmgenmenu.h:124 msgid "xine" msgstr "" #: ../../util/wmgenmenu.h:125 msgid "aKtion" msgstr "" #: ../../util/wmgenmenu.h:126 msgid "Gcd" msgstr "" #: ../../util/wmgenmenu.h:127 msgid "XawTV" msgstr "" #: ../../util/wmgenmenu.h:128 msgid "XPlayCD" msgstr "" #: ../../util/wmgenmenu.h:129 msgid "XBMC" msgstr "" #: ../../util/wmgenmenu.h:134 ../../util/wmgenmenu.h:135 msgid "Chromium" msgstr "" #: ../../util/wmgenmenu.h:136 msgid "Google Chrome" msgstr "" #: ../../util/wmgenmenu.h:137 msgid "Mozilla Firefox" msgstr "" #: ../../util/wmgenmenu.h:138 msgid "Galeon" msgstr "" #: ../../util/wmgenmenu.h:139 msgid "SkipStone" msgstr "" #: ../../util/wmgenmenu.h:141 msgid "Dillo" msgstr "" #: ../../util/wmgenmenu.h:142 msgid "Epiphany" msgstr "" #: ../../util/wmgenmenu.h:143 msgid "Opera" msgstr "" #: ../../util/wmgenmenu.h:144 msgid "Midori" msgstr "" #: ../../util/wmgenmenu.h:145 msgid "Mozilla SeaMonkey" msgstr "" #: ../../util/wmgenmenu.h:146 msgid "Kazehakase" msgstr "" #: ../../util/wmgenmenu.h:147 msgid "Links" msgstr "" #: ../../util/wmgenmenu.h:148 msgid "Lynx" msgstr "" #: ../../util/wmgenmenu.h:149 msgid "W3M" msgstr "" #: ../../util/wmgenmenu.h:154 msgid "Mozilla Thunderbird" msgstr "" #: ../../util/wmgenmenu.h:155 msgid "Mutt" msgstr "" #: ../../util/wmgenmenu.h:156 msgid "GNUMail" msgstr "" #: ../../util/wmgenmenu.h:157 msgid "Claws Mail" msgstr "" #: ../../util/wmgenmenu.h:158 msgid "Evolution" msgstr "" #: ../../util/wmgenmenu.h:159 msgid "Kleopatra" msgstr "" #: ../../util/wmgenmenu.h:160 msgid "Sylpheed" msgstr "" #: ../../util/wmgenmenu.h:161 msgid "Spruce" msgstr "" #: ../../util/wmgenmenu.h:162 msgid "KMail" msgstr "" #: ../../util/wmgenmenu.h:163 msgid "Exmh" msgstr "" #: ../../util/wmgenmenu.h:164 msgid "Pine" msgstr "" #: ../../util/wmgenmenu.h:165 msgid "ELM" msgstr "" #: ../../util/wmgenmenu.h:166 msgid "Alpine" msgstr "" #: ../../util/wmgenmenu.h:171 msgid "soundKonverter" msgstr "" #: ../../util/wmgenmenu.h:172 msgid "Krecord" msgstr "" #: ../../util/wmgenmenu.h:173 msgid "Grecord" msgstr "" #: ../../util/wmgenmenu.h:174 msgid "ALSA mixer" msgstr "" #: ../../util/wmgenmenu.h:175 msgid "VolWheel" msgstr "" #: ../../util/wmgenmenu.h:176 msgid "Sound configuration" msgstr "" #: ../../util/wmgenmenu.h:177 msgid "aumix" msgstr "" #: ../../util/wmgenmenu.h:178 msgid "Gmix" msgstr "" #: ../../util/wmgenmenu.h:183 msgid "XJed" msgstr "" #: ../../util/wmgenmenu.h:184 msgid "Jed" msgstr "" #: ../../util/wmgenmenu.h:185 msgid "Emacs" msgstr "" #: ../../util/wmgenmenu.h:186 msgid "XEmacs" msgstr "" #: ../../util/wmgenmenu.h:187 msgid "SciTE" msgstr "" #: ../../util/wmgenmenu.h:188 msgid "Bluefish" msgstr "" #: ../../util/wmgenmenu.h:189 msgid "gVIM" msgstr "" #: ../../util/wmgenmenu.h:190 msgid "vi" msgstr "" #: ../../util/wmgenmenu.h:191 msgid "VIM" msgstr "" #: ../../util/wmgenmenu.h:192 msgid "gedit" msgstr "" #: ../../util/wmgenmenu.h:193 msgid "KEdit" msgstr "" #: ../../util/wmgenmenu.h:194 msgid "XEdit" msgstr "" #: ../../util/wmgenmenu.h:195 msgid "KWrite" msgstr "" #: ../../util/wmgenmenu.h:196 msgid "Kate" msgstr "" #: ../../util/wmgenmenu.h:197 msgid "Pico" msgstr "" #: ../../util/wmgenmenu.h:198 msgid "Nano" msgstr "" #: ../../util/wmgenmenu.h:199 msgid "Joe" msgstr "" #: ../../util/wmgenmenu.h:204 msgid "Omnia data" msgstr "" #: ../../util/wmgenmenu.h:205 msgid "Comix" msgstr "" #: ../../util/wmgenmenu.h:206 msgid "QComicBook" msgstr "" #: ../../util/wmgenmenu.h:211 msgid "Evince" msgstr "" #: ../../util/wmgenmenu.h:212 msgid "KGhostView" msgstr "" #: ../../util/wmgenmenu.h:213 msgid "gv" msgstr "" #: ../../util/wmgenmenu.h:214 msgid "ePDFView" msgstr "" #: ../../util/wmgenmenu.h:215 msgid "GGv" msgstr "" #: ../../util/wmgenmenu.h:216 msgid "Xdvi" msgstr "" #: ../../util/wmgenmenu.h:217 msgid "KDVI" msgstr "" #: ../../util/wmgenmenu.h:218 msgid "Xpdf" msgstr "" #: ../../util/wmgenmenu.h:219 msgid "Adobe Reader" msgstr "" #: ../../util/wmgenmenu.h:220 msgid "Gless" msgstr "" #: ../../util/wmgenmenu.h:225 msgid "Google Desktop" msgstr "" #: ../../util/wmgenmenu.h:226 msgid "K3B" msgstr "" #: ../../util/wmgenmenu.h:227 msgid "X-CD-Roast" msgstr "" #: ../../util/wmgenmenu.h:228 msgid "Nero Linux" msgstr "" #: ../../util/wmgenmenu.h:229 msgid "Nero Linux Express" msgstr "" #: ../../util/wmgenmenu.h:230 msgid "gtkfind" msgstr "" #: ../../util/wmgenmenu.h:231 msgid "gdict" msgstr "" #: ../../util/wmgenmenu.h:232 msgid "gpsdrive" msgstr "" #: ../../util/wmgenmenu.h:233 msgid "Task Coach" msgstr "" #: ../../util/wmgenmenu.h:234 msgid "XSnap" msgstr "" #: ../../util/wmgenmenu.h:235 msgid "Screengrab" msgstr "" #: ../../util/wmgenmenu.h:236 msgid "XSane" msgstr "" #: ../../util/wmgenmenu.h:237 msgid "wfcmgr" msgstr "" #: ../../util/wmgenmenu.h:238 msgid "switch" msgstr "" #: ../../util/wmgenmenu.h:239 msgid "Cairo Clock" msgstr "" #: ../../util/wmgenmenu.h:240 msgid "Conky" msgstr "" #: ../../util/wmgenmenu.h:241 msgid "GNU Privacy Assistant" msgstr "" #: ../../util/wmgenmenu.h:242 msgid "Vidalia (tor)" msgstr "" #: ../../util/wmgenmenu.h:243 msgid "kaddressbook" msgstr "" #: ../../util/wmgenmenu.h:244 msgid "kab" msgstr "" #: ../../util/wmgenmenu.h:245 msgid "Filezilla" msgstr "" #: ../../util/wmgenmenu.h:246 msgid "Bleachbit" msgstr "" #: ../../util/wmgenmenu.h:247 msgid "Teamviewer" msgstr "" #: ../../util/wmgenmenu.h:248 msgid "gUVCView" msgstr "" #: ../../util/wmgenmenu.h:249 msgid "LinPopUp" msgstr "" #: ../../util/wmgenmenu.h:250 msgid "Wine Configurator" msgstr "" #: ../../util/wmgenmenu.h:251 msgid "NMap" msgstr "" #: ../../util/wmgenmenu.h:252 msgid "Hydra" msgstr "" #: ../../util/wmgenmenu.h:253 msgid "XTeddy" msgstr "" #: ../../util/wmgenmenu.h:254 msgid "XTeddy TEST" msgstr "" #: ../../util/wmgenmenu.h:255 msgid "VNC Viewer" msgstr "" #: ../../util/wmgenmenu.h:256 msgid "Java Control Panel" msgstr "" #: ../../util/wmgenmenu.h:257 msgid "kfind" msgstr "" #: ../../util/wmgenmenu.h:258 msgid "oclock" msgstr "" #: ../../util/wmgenmenu.h:259 msgid "rclock" msgstr "" #: ../../util/wmgenmenu.h:260 msgid "Isomaster" msgstr "" #: ../../util/wmgenmenu.h:261 msgid "xclock" msgstr "" #: ../../util/wmgenmenu.h:262 msgid "HP Systray" msgstr "" #: ../../util/wmgenmenu.h:263 msgid "kppp" msgstr "" #: ../../util/wmgenmenu.h:264 msgid "Xarchiver" msgstr "" #: ../../util/wmgenmenu.h:273 msgid "Pidgin" msgstr "" #: ../../util/wmgenmenu.h:274 msgid "Skype" msgstr "" #: ../../util/wmgenmenu.h:275 msgid "Gizmo" msgstr "" #: ../../util/wmgenmenu.h:276 msgid "Gajim" msgstr "" #: ../../util/wmgenmenu.h:277 msgid "Kopete" msgstr "" #: ../../util/wmgenmenu.h:278 msgid "XChat" msgstr "" #: ../../util/wmgenmenu.h:279 msgid "Ekiga" msgstr "" #: ../../util/wmgenmenu.h:280 msgid "KVIrc" msgstr "" #: ../../util/wmgenmenu.h:281 msgid "BitchX" msgstr "" #: ../../util/wmgenmenu.h:282 msgid "EPIC" msgstr "" #: ../../util/wmgenmenu.h:283 msgid "Linphone" msgstr "" #: ../../util/wmgenmenu.h:284 msgid "Mumble" msgstr "" #: ../../util/wmgenmenu.h:285 msgid "EPIC4" msgstr "" #: ../../util/wmgenmenu.h:286 msgid "Irssi" msgstr "" #: ../../util/wmgenmenu.h:287 msgid "TinyIRC" msgstr "" #: ../../util/wmgenmenu.h:288 msgid "Ksirc" msgstr "" #: ../../util/wmgenmenu.h:289 msgid "gtalk" msgstr "" #: ../../util/wmgenmenu.h:290 msgid "GnomeICU" msgstr "" #: ../../util/wmgenmenu.h:291 msgid "Licq" msgstr "" #: ../../util/wmgenmenu.h:292 msgid "aMSN" msgstr "" #: ../../util/wmgenmenu.h:297 msgid "aMule" msgstr "" #: ../../util/wmgenmenu.h:298 msgid "gFTP" msgstr "" #: ../../util/wmgenmenu.h:299 msgid "Smb4K" msgstr "" #: ../../util/wmgenmenu.h:300 msgid "KTorrent" msgstr "" #: ../../util/wmgenmenu.h:301 msgid "BitTorrent GUI" msgstr "" #: ../../util/wmgenmenu.h:302 msgid "Transmission GTK" msgstr "" #: ../../util/wmgenmenu.h:303 msgid "ftp" msgstr "" #: ../../util/wmgenmenu.h:304 msgid "Deluge" msgstr "" #: ../../util/wmgenmenu.h:305 msgid "sftp" msgstr "" #: ../../util/wmgenmenu.h:306 msgid "Pavuk" msgstr "" #: ../../util/wmgenmenu.h:307 msgid "gtm" msgstr "" #: ../../util/wmgenmenu.h:308 msgid "Gnut" msgstr "" #: ../../util/wmgenmenu.h:309 msgid "GTK Gnutella" msgstr "" #: ../../util/wmgenmenu.h:310 msgid "Gnutmeg" msgstr "" #: ../../util/wmgenmenu.h:315 msgid "FlightGear Flight Simulator" msgstr "" #: ../../util/wmgenmenu.h:316 msgid "Tremulous" msgstr "" #: ../../util/wmgenmenu.h:317 msgid "XBoard" msgstr "" #: ../../util/wmgenmenu.h:318 msgid "GNOME Chess" msgstr "" #: ../../util/wmgenmenu.h:319 msgid "Darkplaces (Quake 1)" msgstr "" #: ../../util/wmgenmenu.h:320 msgid "QuakeSpasm (Quake 1)" msgstr "" #: ../../util/wmgenmenu.h:321 msgid "Quake 2" msgstr "" #: ../../util/wmgenmenu.h:322 msgid "KM Quake 2 (Quake 2" msgstr "" #: ../../util/wmgenmenu.h:323 msgid "QMax (Quake 2" msgstr "" #: ../../util/wmgenmenu.h:324 msgid "Quake 3" msgstr "" #: ../../util/wmgenmenu.h:325 msgid "Quake 4" msgstr "" #: ../../util/wmgenmenu.h:326 msgid "Quake 4 SMP" msgstr "" #: ../../util/wmgenmenu.h:327 msgid "Openarena" msgstr "" #: ../../util/wmgenmenu.h:328 msgid "Quake 3: Urban Terror 2" msgstr "" #: ../../util/wmgenmenu.h:329 msgid "Soldier of Fortune" msgstr "" #: ../../util/wmgenmenu.h:330 msgid "Rune" msgstr "" #: ../../util/wmgenmenu.h:331 msgid "Doom 3" msgstr "" #: ../../util/wmgenmenu.h:332 msgid "Zelda Solarus" msgstr "" #: ../../util/wmgenmenu.h:333 msgid "Solarwolf" msgstr "" #: ../../util/wmgenmenu.h:334 msgid "Pachi" msgstr "" #: ../../util/wmgenmenu.h:335 msgid "Tribes 2" msgstr "" #: ../../util/wmgenmenu.h:336 msgid "GNUjump" msgstr "" #: ../../util/wmgenmenu.h:337 msgid "Supertransball 2" msgstr "" #: ../../util/wmgenmenu.h:338 msgid "Supertux" msgstr "" #: ../../util/wmgenmenu.h:339 msgid "Supertux 2" msgstr "" #: ../../util/wmgenmenu.h:340 msgid "Mega Mario" msgstr "" #: ../../util/wmgenmenu.h:341 msgid "Frogatto" msgstr "" #: ../../util/wmgenmenu.h:342 msgid "Minecraft" msgstr "" #: ../../util/wmgenmenu.h:343 msgid "Alienarena" msgstr "" #: ../../util/wmgenmenu.h:344 msgid "Nexuiz" msgstr "" #: ../../util/wmgenmenu.h:345 msgid "Bomberclone" msgstr "" #: ../../util/wmgenmenu.h:346 msgid "Chromium-BSU" msgstr "" #: ../../util/wmgenmenu.h:347 msgid "Clanbomber" msgstr "" #: ../../util/wmgenmenu.h:348 msgid "Clanbomber 2" msgstr "" #: ../../util/wmgenmenu.h:349 msgid "Defendguin" msgstr "" #: ../../util/wmgenmenu.h:350 msgid "Dosbox" msgstr "" #: ../../util/wmgenmenu.h:351 msgid "Duke Nukem 3D" msgstr "" #: ../../util/wmgenmenu.h:352 msgid "eDuke32" msgstr "" #: ../../util/wmgenmenu.h:353 msgid "Emilia Pinball" msgstr "" #: ../../util/wmgenmenu.h:354 msgid "Extreme-Tuxracer" msgstr "" #: ../../util/wmgenmenu.h:355 msgid "Freedroid RPG" msgstr "" #: ../../util/wmgenmenu.h:356 msgid "Frozen Bubble" msgstr "" #: ../../util/wmgenmenu.h:357 msgid "Frozen Bubble Editor" msgstr "" #: ../../util/wmgenmenu.h:358 msgid "GL 117" msgstr "" #: ../../util/wmgenmenu.h:359 msgid "LBreakout 2" msgstr "" #: ../../util/wmgenmenu.h:360 msgid "Legends" msgstr "" #: ../../util/wmgenmenu.h:361 msgid "Lincity-NG" msgstr "" #: ../../util/wmgenmenu.h:362 msgid "Neverball" msgstr "" #: ../../util/wmgenmenu.h:363 msgid "Neverput" msgstr "" #: ../../util/wmgenmenu.h:364 msgid "Openastromenace" msgstr "" #: ../../util/wmgenmenu.h:365 msgid "Penguin Command" msgstr "" #: ../../util/wmgenmenu.h:366 msgid "Powermanga" msgstr "" #: ../../util/wmgenmenu.h:367 msgid "Return to Castle Wolfenstein SP" msgstr "" #: ../../util/wmgenmenu.h:368 msgid "Return to Castle Wolfenstein MP" msgstr "" #: ../../util/wmgenmenu.h:369 msgid "Snes9X" msgstr "" #: ../../util/wmgenmenu.h:370 msgid "Slune" msgstr "" #: ../../util/wmgenmenu.h:371 msgid "Torcs" msgstr "" #: ../../util/wmgenmenu.h:372 msgid "Speed Dreams" msgstr "" #: ../../util/wmgenmenu.h:373 msgid "Trackballs" msgstr "" #: ../../util/wmgenmenu.h:374 msgid "VDrift" msgstr "" #: ../../util/wmgenmenu.h:375 msgid "Warmux" msgstr "" #: ../../util/wmgenmenu.h:376 msgid "Warsow" msgstr "" #: ../../util/wmgenmenu.h:377 msgid "Wesnoth" msgstr "" #: ../../util/wmgenmenu.h:378 msgid "World of Padman" msgstr "" #: ../../util/wmgenmenu.h:379 msgid "XBlast" msgstr "" #: ../../util/wmgenmenu.h:380 msgid "XPenguins" msgstr "" #: ../../util/wmgenmenu.h:381 msgid "XTux" msgstr "" #: ../../util/wmgenmenu.h:382 ../../util/wmgenmenu.h:383 msgid "The Mana World" msgstr "" #: ../../util/wmgenmenu.h:384 msgid "Super Mario Chronicles" msgstr "" #: ../../util/wmgenmenu.h:385 msgid "Unreal" msgstr "" #: ../../util/wmgenmenu.h:386 msgid "Unreal Tournament" msgstr "" #: ../../util/wmgenmenu.h:387 msgid "Unreal Tournament 2004" msgstr "" #: ../../util/wmgenmenu.h:388 msgid "Xonotic" msgstr "" #: ../../util/wmgenmenu.h:389 msgid "Descent 3" msgstr "" #: ../../util/wmgenmenu.h:390 msgid "Myth 2" msgstr "" #: ../../util/wmgenmenu.h:391 ../../util/wmgenmenu.h:392 #: ../../util/wmgenmenu.h:393 msgid "Sauerbraten" msgstr "" #: ../../util/wmgenmenu.h:394 msgid "Railroad Tycoon 2" msgstr "" #: ../../util/wmgenmenu.h:395 msgid "Heretic 2" msgstr "" #: ../../util/wmgenmenu.h:396 msgid "Kohan" msgstr "" #: ../../util/wmgenmenu.h:397 msgid "XQF" msgstr "" #: ../../util/wmgenmenu.h:402 msgid "OpenOffice.org Writer" msgstr "" #: ../../util/wmgenmenu.h:403 msgid "OpenOffice.org Calc" msgstr "" #: ../../util/wmgenmenu.h:404 msgid "OpenOffice.org Draw" msgstr "" #: ../../util/wmgenmenu.h:405 msgid "OpenOffice.org Impress" msgstr "" #: ../../util/wmgenmenu.h:406 msgid "OpenOffice.org Math" msgstr "" #: ../../util/wmgenmenu.h:407 msgid "OpenOffice.org" msgstr "" #: ../../util/wmgenmenu.h:408 msgid "StarOffice Writer" msgstr "" #: ../../util/wmgenmenu.h:409 msgid "StarOffice Calc" msgstr "" #: ../../util/wmgenmenu.h:410 msgid "StarOffice Draw" msgstr "" #: ../../util/wmgenmenu.h:411 msgid "StarOffice Impress" msgstr "" #: ../../util/wmgenmenu.h:412 msgid "StarOffice Math" msgstr "" #: ../../util/wmgenmenu.h:413 msgid "StarOffice" msgstr "" #: ../../util/wmgenmenu.h:414 msgid "LibreOffice Writer" msgstr "" #: ../../util/wmgenmenu.h:415 msgid "LibreOffice Calc" msgstr "" #: ../../util/wmgenmenu.h:416 msgid "LibreOffice Draw" msgstr "" #: ../../util/wmgenmenu.h:417 msgid "LibreOffice Impress" msgstr "" #: ../../util/wmgenmenu.h:418 msgid "LibreOffice Math" msgstr "" #: ../../util/wmgenmenu.h:419 msgid "LibreOffice Base" msgstr "" #: ../../util/wmgenmenu.h:420 msgid "LibreOffice Web" msgstr "" #: ../../util/wmgenmenu.h:421 msgid "LibreOffice" msgstr "" #: ../../util/wmgenmenu.h:422 msgid "AbiWord" msgstr "" #: ../../util/wmgenmenu.h:423 msgid "KWord" msgstr "" #: ../../util/wmgenmenu.h:424 msgid "KPresenter" msgstr "" #: ../../util/wmgenmenu.h:425 msgid "KSpread" msgstr "" #: ../../util/wmgenmenu.h:426 msgid "KChart" msgstr "" #: ../../util/wmgenmenu.h:427 msgid "KOrganizer" msgstr "" #: ../../util/wmgenmenu.h:428 msgid "LyX" msgstr "" #: ../../util/wmgenmenu.h:429 msgid "Klyx" msgstr "" #: ../../util/wmgenmenu.h:430 msgid "GnuCash" msgstr "" #: ../../util/wmgenmenu.h:431 msgid "Gnumeric" msgstr "" #: ../../util/wmgenmenu.h:432 msgid "GnomeCal" msgstr "" #: ../../util/wmgenmenu.h:433 msgid "GnomeCard" msgstr "" #: ../../util/wmgenmenu.h:438 msgid "gitk" msgstr "" #: ../../util/wmgenmenu.h:439 msgid "gitview" msgstr "" #: ../../util/wmgenmenu.h:440 msgid "qgit" msgstr "" #: ../../util/wmgenmenu.h:441 msgid "git-gui" msgstr "" #: ../../util/wmgenmenu.h:442 msgid "glimmer" msgstr "" #: ../../util/wmgenmenu.h:443 msgid "glade" msgstr "" #: ../../util/wmgenmenu.h:444 msgid "Geany" msgstr "" #: ../../util/wmgenmenu.h:445 msgid "Codeblocks" msgstr "" #: ../../util/wmgenmenu.h:446 msgid "kdevelop" msgstr "" #: ../../util/wmgenmenu.h:447 msgid "designer" msgstr "" #: ../../util/wmgenmenu.h:448 msgid "kbabel" msgstr "" #: ../../util/wmgenmenu.h:449 msgid "idle" msgstr "" #: ../../util/wmgenmenu.h:450 msgid "ghex" msgstr "" #: ../../util/wmgenmenu.h:451 msgid "hexedit" msgstr "" #: ../../util/wmgenmenu.h:452 msgid "memprof" msgstr "" #: ../../util/wmgenmenu.h:453 msgid "tclsh" msgstr "" #: ../../util/wmgenmenu.h:454 msgid "gdb" msgstr "" #: ../../util/wmgenmenu.h:455 msgid "xxgdb" msgstr "" #: ../../util/wmgenmenu.h:456 msgid "xev" msgstr "" #: ../../util/wmgenmenu.h:461 msgid "Iotop" msgstr "" #: ../../util/wmgenmenu.h:462 msgid "Iostat" msgstr "" #: ../../util/wmgenmenu.h:463 msgid "keybconf" msgstr "" #: ../../util/wmgenmenu.h:464 msgid "GNOME System Monitor" msgstr "" #: ../../util/wmgenmenu.h:465 msgid "top" msgstr "" #: ../../util/wmgenmenu.h:466 msgid "KDE Process Monitor" msgstr "" #: ../../util/wmgenmenu.h:467 msgid "gw" msgstr "" #: ../../util/wmgenmenu.h:468 msgid "GNOME Control Center" msgstr "" #: ../../util/wmgenmenu.h:469 msgid "GKrellM" msgstr "" #: ../../util/wmgenmenu.h:470 msgid "tksysv" msgstr "" #: ../../util/wmgenmenu.h:471 msgid "ksysv" msgstr "" #: ../../util/wmgenmenu.h:472 msgid "GNOME PPP" msgstr "" #: ../../util/wmgenmenu.h:477 msgid "YaST 2" msgstr "" #: ../../util/wmgenmenu.h:478 msgid "YaST" msgstr "" #: ../../util/wmgenmenu.h:479 msgid "System Settings" msgstr "" #: ../../util/wmgenmenu.h:480 msgid "UMTSMon" msgstr "" #: ../../util/wmgenmenu.h:485 msgid "DrakNetCenter" msgstr "" #: ../../util/wmgenmenu.h:486 msgid "RPMDrake" msgstr "" #: ../../util/wmgenmenu.h:487 msgid "HardDrake" msgstr "" #: ../../util/wmgenmenu.h:488 msgid "DrakConf" msgstr "" #: ../../util/wmgenmenu.h:489 msgid "MandrakeUpdate" msgstr "" #: ../../util/wmgenmenu.h:490 msgid "XDrakRes" msgstr "" #: ../../util/wmgenmenu.h:495 msgid "Docker" msgstr "" #: ../../util/wmgenmenu.h:496 msgid "Net" msgstr "" #: ../../util/wmgenmenu.h:497 msgid "Net Load" msgstr "" #: ../../util/wmgenmenu.h:498 ../../util/wmgenmenu.h:499 msgid "Ping" msgstr "" #: ../../util/wmgenmenu.h:500 ../../util/wmgenmenu.h:543 msgid "Power" msgstr "" #: ../../util/wmgenmenu.h:502 msgid "Harddisk Monitor" msgstr "" #: ../../util/wmgenmenu.h:503 msgid "Download" msgstr "" #: ../../util/wmgenmenu.h:504 msgid "Dots" msgstr "" #: ../../util/wmgenmenu.h:505 msgid "Matrix" msgstr "" #: ../../util/wmgenmenu.h:506 msgid "Fire" msgstr "" #: ../../util/wmgenmenu.h:507 msgid "Net send" msgstr "" #: ../../util/wmgenmenu.h:508 msgid "Laptop" msgstr "" #: ../../util/wmgenmenu.h:509 msgid "WiFi" msgstr "" #: ../../util/wmgenmenu.h:510 msgid "Interface Info" msgstr "" #: ../../util/wmgenmenu.h:511 ../../util/wmgenmenu.h:512 #: ../../util/wmgenmenu.h:517 msgid "Weather" msgstr "" #: ../../util/wmgenmenu.h:513 msgid "Sticky Notes" msgstr "" #: ../../util/wmgenmenu.h:514 msgid "Pinboard" msgstr "" #: ../../util/wmgenmenu.h:515 ../../util/wmgenmenu.h:516 msgid "Mixer" msgstr "" #: ../../util/wmgenmenu.h:518 msgid "CPU Load" msgstr "" #: ../../util/wmgenmenu.h:519 msgid "CPU Freq" msgstr "" #: ../../util/wmgenmenu.h:520 msgid "Memory Load" msgstr "" #: ../../util/wmgenmenu.h:521 msgid "Memory Free" msgstr "" #: ../../util/wmgenmenu.h:522 msgid "Memory Monitor" msgstr "" #: ../../util/wmgenmenu.h:523 msgid "Clock Mon" msgstr "" #: ../../util/wmgenmenu.h:524 msgid "Network Devices" msgstr "" #: ../../util/wmgenmenu.h:525 msgid "Calendar & Clock" msgstr "" #: ../../util/wmgenmenu.h:526 msgid "Time" msgstr "" #: ../../util/wmgenmenu.h:527 msgid "Date" msgstr "" #: ../../util/wmgenmenu.h:528 msgid "Time & Date" msgstr "" #: ../../util/wmgenmenu.h:529 ../../util/wmgenmenu.h:530 msgid "System Monitor" msgstr "" #: ../../util/wmgenmenu.h:531 msgid "Sensor Monitor" msgstr "" #: ../../util/wmgenmenu.h:532 ../../util/wmgenmenu.h:533 msgid "System Tray" msgstr "" #: ../../util/wmgenmenu.h:534 msgid "SMP Monitor" msgstr "" #: ../../util/wmgenmenu.h:535 msgid "Timer" msgstr "" #: ../../util/wmgenmenu.h:536 ../../util/wmgenmenu.h:537 msgid "Mounter" msgstr "" #: ../../util/wmgenmenu.h:538 msgid "Uptime" msgstr "" #: ../../util/wmgenmenu.h:539 msgid "Work Timer" msgstr "" #: ../../util/wmgenmenu.h:540 msgid "Interfaces" msgstr "" #: ../../util/wmgenmenu.h:541 msgid "Button" msgstr "" #: ../../util/wmgenmenu.h:542 msgid "xmms" msgstr "" #: ../../util/wmgenmenu.h:544 msgid "Magnify" msgstr "" #: ../../util/wmgenmenu.h:549 msgid "IceWM" msgstr "" #: ../../util/wmgenmenu.h:550 msgid "KWin" msgstr "" #: ../../util/wmgenmenu.h:551 msgid "twm" msgstr "" #: ../../util/wmgenmenu.h:552 msgid "Fluxbox" msgstr "" #: ../../util/wmgenmenu.h:553 msgid "Blackbox" msgstr "" #: ../../util/wmgenmenu.h:554 msgid "Ion" msgstr "" #: ../../util/wmgenmenu.h:555 msgid "Motif Window Manager" msgstr "" #: ../../util/wmgenmenu.h:556 msgid "FVWM" msgstr "" #: ../../util/wmgenmenu.h:557 msgid "FVWM-Crystal" msgstr "" �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/util/po/pt.po��������������������������������������������������������������������0000644�0001750�0001750�00000053731�13431646202�013356� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# wmgenmenu Portuguese translation # Copyright (C) 2012 Leandro Vital # This file is distributed under the same license as the Window Maker package. # Leandro Vital<leandro.vital@yahoo.com.br>, 2012. # msgid "" msgstr "" "Project-Id-Version: wmgenmenu\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-02-10 00:04+0100\n" "PO-Revision-Date: 2011-02-05 12:19-0500\n" "Last-Translator: Leandro Vital <leandro.vital@yahoo.com.br>\n" "Language-Team: Portuguese\n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. Root -> Applications #: ../../util/wmgenmenu.c:103 msgid "Applications" msgstr "Aplicativos" #. Root -> Applications -> <category> #: ../../util/wmgenmenu.c:106 msgid "Terminals" msgstr "Terminais" #. always keep terminals the top item #: ../../util/wmgenmenu.c:107 msgid "Internet" msgstr "Internet" #: ../../util/wmgenmenu.c:108 msgid "Email" msgstr "Email" #: ../../util/wmgenmenu.c:109 msgid "Mathematics" msgstr "Matemática" #: ../../util/wmgenmenu.c:110 msgid "File Managers" msgstr "Gerenciadores de arquivos" #: ../../util/wmgenmenu.c:111 msgid "Graphics" msgstr "Gráficos" #: ../../util/wmgenmenu.c:112 msgid "Multimedia" msgstr "Multimídia" #: ../../util/wmgenmenu.c:113 msgid "Editors" msgstr "Editores" #: ../../util/wmgenmenu.c:114 msgid "Development" msgstr "Desenvolvimento" #: ../../util/wmgenmenu.c:116 msgid "Office" msgstr "Suítes Office" #: ../../util/wmgenmenu.c:117 msgid "Astronomy" msgstr "Astronomía" #: ../../util/wmgenmenu.c:118 msgid "Sound" msgstr "Som" #: ../../util/wmgenmenu.c:119 msgid "Comics" msgstr "Revistas em quadrinhos" #: ../../util/wmgenmenu.c:120 msgid "Viewers" msgstr "Visualizadores" #: ../../util/wmgenmenu.c:121 msgid "Utilities" msgstr "Utilitários" #: ../../util/wmgenmenu.c:122 msgid "System" msgstr "Sistema" #: ../../util/wmgenmenu.c:123 msgid "Video" msgstr "Video" #: ../../util/wmgenmenu.c:124 msgid "Chat and Talk" msgstr "Bate-papo" #: ../../util/wmgenmenu.c:125 msgid "P2P Network" msgstr "Redes P2P" #: ../../util/wmgenmenu.c:126 msgid "Games" msgstr "Jogos" #: ../../util/wmgenmenu.c:134 msgid "Run..." msgstr "Executar..." #: ../../util/wmgenmenu.c:136 #, c-format msgid "%A(Run, Type command:)" msgstr "%A(Executar, digite o comando:)" #. Root -> Appearance #: ../../util/wmgenmenu.c:142 msgid "Appearance" msgstr "Aparência" #: ../../util/wmgenmenu.c:146 msgid "Themes" msgstr "Temas" #: ../../util/wmgenmenu.c:155 msgid "Styles" msgstr "Estilos" #: ../../util/wmgenmenu.c:164 msgid "Icon Sets" msgstr "Ícones" #. Root -> Appearance -> Background #: ../../util/wmgenmenu.c:172 msgid "Background" msgstr "Plano de fundo" #. Root -> Appearance -> Background -> Solid #: ../../util/wmgenmenu.c:175 msgid "Solid" msgstr "Sólido" #. Root -> Appearance -> Background -> Solid -> <color> #: ../../util/wmgenmenu.c:187 msgid "Black" msgstr "Preto" #: ../../util/wmgenmenu.c:188 msgid "Blue" msgstr "Ametista escuro" #: ../../util/wmgenmenu.c:189 msgid "Indigo" msgstr "Anil" #: ../../util/wmgenmenu.c:190 msgid "Bluemarine" msgstr "Turquesa" #: ../../util/wmgenmenu.c:191 msgid "Purple" msgstr "Púrpura" #: ../../util/wmgenmenu.c:192 msgid "Wheat" msgstr "Pardo" #: ../../util/wmgenmenu.c:193 msgid "Dark Gray" msgstr "Cinza escuro" #: ../../util/wmgenmenu.c:194 msgid "Wine" msgstr "Vinho" #. Root -> Appearance -> Background -> Gradient #: ../../util/wmgenmenu.c:199 msgid "Gradient" msgstr "Degradê" #: ../../util/wmgenmenu.c:213 msgid "Sunset" msgstr "Pôr do sol" #: ../../util/wmgenmenu.c:220 msgid "Sky" msgstr "Céu" #: ../../util/wmgenmenu.c:221 msgid "Blue Shades" msgstr "Ametista escuro" #: ../../util/wmgenmenu.c:222 msgid "Indigo Shades" msgstr "Anil" #: ../../util/wmgenmenu.c:223 msgid "Purple Shades" msgstr "Púrpura" #: ../../util/wmgenmenu.c:224 msgid "Wheat Shades" msgstr "Pardo" #: ../../util/wmgenmenu.c:225 msgid "Grey Shades" msgstr "Cinza Escuro" #: ../../util/wmgenmenu.c:226 msgid "Wine Shades" msgstr "Vinho" #: ../../util/wmgenmenu.c:232 msgid "Images" msgstr "Imagens" #: ../../util/wmgenmenu.c:243 msgid "Save Theme" msgstr "Salvar tema" #: ../../util/wmgenmenu.c:253 msgid "Save IconSet" msgstr "Salvar ícones" #: ../../util/wmgenmenu.c:264 msgid "Workspaces" msgstr "Áreas de trabalho" #. Root -> Workspace #: ../../util/wmgenmenu.c:271 msgid "Workspace" msgstr "Área de trabalho" #: ../../util/wmgenmenu.c:273 msgid "Hide Others" msgstr "Minimizar janelas" #: ../../util/wmgenmenu.c:281 msgid "Show All" msgstr "Maximizar janelas" #: ../../util/wmgenmenu.c:289 msgid "Arrange Icons" msgstr "Organizar ícones" #: ../../util/wmgenmenu.c:297 msgid "Refresh" msgstr "Atualizar" #: ../../util/wmgenmenu.c:305 msgid "Save Session" msgstr "Salvar sessão" #: ../../util/wmgenmenu.c:313 msgid "Clear Session" msgstr "Reiniciar sessão" #: ../../util/wmgenmenu.c:322 msgid "Configure Window Maker" msgstr "Configurar WindowMaker" #: ../../util/wmgenmenu.c:331 msgid "Info Panel" msgstr "Painel de informações" #: ../../util/wmgenmenu.c:339 msgid "Restart Window Maker" msgstr "Reiniciar Window Maker" #: ../../util/wmgenmenu.c:352 msgid "Lock Screen" msgstr "Bloquear sessão" #: ../../util/wmgenmenu.c:363 msgid "Exit Window Maker" msgstr "Sair do Window Maker" #: ../../util/wmgenmenu.c:458 #, c-format msgid "Start %s" msgstr "Iniciar %s" #: ../../util/wmgenmenu.c:468 msgid "Other Window Managers" msgstr "Gerenciadores de janela" #: ../../util/wmgenmenu.h:9 msgid "xterm" msgstr "" #: ../../util/wmgenmenu.h:10 msgid "mrxvt" msgstr "" #: ../../util/wmgenmenu.h:11 msgid "Konsole" msgstr "" #: ../../util/wmgenmenu.h:16 msgid "Dolphin" msgstr "" #: ../../util/wmgenmenu.h:17 msgid "Thunar" msgstr "" #: ../../util/wmgenmenu.h:18 msgid "ROX filer" msgstr "" #: ../../util/wmgenmenu.h:19 msgid "GWorkspace" msgstr "" #: ../../util/wmgenmenu.h:20 msgid "Midnight Commander" msgstr "" #: ../../util/wmgenmenu.h:21 msgid "XFTree" msgstr "" #: ../../util/wmgenmenu.h:22 ../../util/wmgenmenu.h:118 msgid "Konqueror" msgstr "" #: ../../util/wmgenmenu.h:23 msgid "Nautilus" msgstr "" #: ../../util/wmgenmenu.h:24 msgid "FSViewer" msgstr "" #: ../../util/wmgenmenu.h:25 msgid "Xfe" msgstr "" #: ../../util/wmgenmenu.h:30 msgid "Xmaxima" msgstr "" #: ../../util/wmgenmenu.h:31 msgid "Maxima" msgstr "" #: ../../util/wmgenmenu.h:32 msgid "Maple" msgstr "" #: ../../util/wmgenmenu.h:33 msgid "Scilab" msgstr "" #: ../../util/wmgenmenu.h:34 msgid "bc" msgstr "" #: ../../util/wmgenmenu.h:35 msgid "KCalc" msgstr "" #: ../../util/wmgenmenu.h:36 msgid "XCalc" msgstr "" #: ../../util/wmgenmenu.h:37 msgid "Mathematica" msgstr "" #: ../../util/wmgenmenu.h:38 msgid "Math" msgstr "" #. command-line Mathematica #: ../../util/wmgenmenu.h:39 msgid "Free42" msgstr "" #: ../../util/wmgenmenu.h:40 msgid "X48" msgstr "" #: ../../util/wmgenmenu.h:45 msgid "Xplns" msgstr "" #: ../../util/wmgenmenu.h:46 msgid "Stellarium" msgstr "" #: ../../util/wmgenmenu.h:51 msgid "GIMP" msgstr "" #: ../../util/wmgenmenu.h:52 msgid "Sodipodi" msgstr "" #: ../../util/wmgenmenu.h:53 msgid "Inkscape" msgstr "" #: ../../util/wmgenmenu.h:54 msgid "KIllustrator" msgstr "" #: ../../util/wmgenmenu.h:55 msgid "Krayon" msgstr "" #: ../../util/wmgenmenu.h:56 msgid "KPovModeler" msgstr "" #: ../../util/wmgenmenu.h:57 msgid "XBitmap" msgstr "" #: ../../util/wmgenmenu.h:58 msgid "XPaint" msgstr "" #: ../../util/wmgenmenu.h:59 msgid "XFig" msgstr "" #: ../../util/wmgenmenu.h:60 msgid "KPaint" msgstr "" #: ../../util/wmgenmenu.h:61 msgid "Blender" msgstr "" #: ../../util/wmgenmenu.h:62 msgid "KSnapshot" msgstr "" #: ../../util/wmgenmenu.h:63 msgid "GPhoto" msgstr "" #: ../../util/wmgenmenu.h:64 msgid "DigiKam" msgstr "" #: ../../util/wmgenmenu.h:65 msgid "Dia" msgstr "" #: ../../util/wmgenmenu.h:66 msgid "CompuPic" msgstr "" #: ../../util/wmgenmenu.h:67 msgid "GQview" msgstr "" #: ../../util/wmgenmenu.h:68 msgid "Geeqie" msgstr "" #: ../../util/wmgenmenu.h:69 msgid "KView" msgstr "" #: ../../util/wmgenmenu.h:70 msgid "Pixie" msgstr "" #: ../../util/wmgenmenu.h:71 msgid "ImageMagick Display" msgstr "" #: ../../util/wmgenmenu.h:72 msgid "XV" msgstr "" #: ../../util/wmgenmenu.h:73 msgid "Eye of GNOME" msgstr "" #: ../../util/wmgenmenu.h:74 msgid "Quick Image Viewer" msgstr "" #: ../../util/wmgenmenu.h:79 msgid "Audacious" msgstr "" #: ../../util/wmgenmenu.h:80 ../../util/wmgenmenu.h:216 msgid "Kaffeine" msgstr "" #: ../../util/wmgenmenu.h:81 msgid "Audacity" msgstr "" #: ../../util/wmgenmenu.h:82 msgid "Amarok" msgstr "" #: ../../util/wmgenmenu.h:83 msgid "XMMS" msgstr "" #: ../../util/wmgenmenu.h:84 msgid "K9Copy" msgstr "" #: ../../util/wmgenmenu.h:85 msgid "HandBrake" msgstr "" #: ../../util/wmgenmenu.h:86 msgid "OGMRip" msgstr "" #: ../../util/wmgenmenu.h:87 msgid "DVBcut" msgstr "" #: ../../util/wmgenmenu.h:88 msgid "AcidRip" msgstr "" #: ../../util/wmgenmenu.h:89 msgid "Avidemux" msgstr "" #: ../../util/wmgenmenu.h:90 msgid "GQmpeg" msgstr "" #: ../../util/wmgenmenu.h:91 msgid "Freeamp" msgstr "" #: ../../util/wmgenmenu.h:92 msgid "RealPlayer" msgstr "" #: ../../util/wmgenmenu.h:93 msgid "Mediathek" msgstr "" #: ../../util/wmgenmenu.h:94 msgid "KMid" msgstr "" #: ../../util/wmgenmenu.h:95 msgid "Kmidi" msgstr "" #: ../../util/wmgenmenu.h:96 msgid "Gtcd" msgstr "" #: ../../util/wmgenmenu.h:97 msgid "Grip" msgstr "" #: ../../util/wmgenmenu.h:98 msgid "AVIplay" msgstr "" #: ../../util/wmgenmenu.h:99 msgid "Gtv" msgstr "" #: ../../util/wmgenmenu.h:100 msgid "VLC" msgstr "" #: ../../util/wmgenmenu.h:101 msgid "Sinek" msgstr "" #: ../../util/wmgenmenu.h:102 msgid "xine" msgstr "" #: ../../util/wmgenmenu.h:103 msgid "aKtion" msgstr "" #: ../../util/wmgenmenu.h:104 msgid "Gcd" msgstr "" #: ../../util/wmgenmenu.h:105 msgid "XawTV" msgstr "" #: ../../util/wmgenmenu.h:106 msgid "X-CD-Roast" msgstr "" #: ../../util/wmgenmenu.h:107 msgid "XPlayCD" msgstr "" #: ../../util/wmgenmenu.h:112 ../../util/wmgenmenu.h:113 msgid "Chromium" msgstr "" #: ../../util/wmgenmenu.h:114 msgid "Google Chrome" msgstr "" #: ../../util/wmgenmenu.h:115 msgid "Mozilla Firefox" msgstr "" #: ../../util/wmgenmenu.h:116 msgid "Galeon" msgstr "" #: ../../util/wmgenmenu.h:117 msgid "SkipStone" msgstr "" #: ../../util/wmgenmenu.h:119 msgid "Dillo" msgstr "" #: ../../util/wmgenmenu.h:120 msgid "Epiphany" msgstr "" #: ../../util/wmgenmenu.h:121 msgid "Opera" msgstr "" #: ../../util/wmgenmenu.h:122 msgid "Midori" msgstr "" #: ../../util/wmgenmenu.h:123 msgid "Mozilla SeaMonkey" msgstr "" #: ../../util/wmgenmenu.h:124 msgid "Kazehakase" msgstr "" #: ../../util/wmgenmenu.h:125 msgid "Links" msgstr "" #: ../../util/wmgenmenu.h:126 msgid "Lynx" msgstr "" #: ../../util/wmgenmenu.h:127 msgid "W3M" msgstr "" #: ../../util/wmgenmenu.h:132 msgid "Mozilla Thunderbird" msgstr "" #: ../../util/wmgenmenu.h:133 msgid "Mutt" msgstr "" #: ../../util/wmgenmenu.h:134 msgid "GNUMail" msgstr "" #: ../../util/wmgenmenu.h:135 msgid "Evolution" msgstr "" #: ../../util/wmgenmenu.h:136 msgid "Kleopatra" msgstr "" #: ../../util/wmgenmenu.h:137 msgid "Sylpheed" msgstr "" #: ../../util/wmgenmenu.h:138 msgid "Spruce" msgstr "" #: ../../util/wmgenmenu.h:139 msgid "KMail" msgstr "" #: ../../util/wmgenmenu.h:140 msgid "Exmh" msgstr "" #: ../../util/wmgenmenu.h:141 msgid "Pine" msgstr "" #: ../../util/wmgenmenu.h:142 msgid "ELM" msgstr "" #: ../../util/wmgenmenu.h:143 msgid "Alpine" msgstr "" #: ../../util/wmgenmenu.h:148 msgid "soundKonverter" msgstr "" #: ../../util/wmgenmenu.h:149 msgid "Krecord" msgstr "" #: ../../util/wmgenmenu.h:150 msgid "Grecord" msgstr "" #: ../../util/wmgenmenu.h:151 msgid "ALSA mixer" msgstr "" #: ../../util/wmgenmenu.h:152 msgid "Sound configuration" msgstr "" #: ../../util/wmgenmenu.h:153 msgid "aumix" msgstr "" #: ../../util/wmgenmenu.h:154 msgid "Gmix" msgstr "" #: ../../util/wmgenmenu.h:159 msgid "XJed" msgstr "" #: ../../util/wmgenmenu.h:160 msgid "Jed" msgstr "" #: ../../util/wmgenmenu.h:161 msgid "Emacs" msgstr "" #: ../../util/wmgenmenu.h:162 msgid "XEmacs" msgstr "" #: ../../util/wmgenmenu.h:163 msgid "gVIM" msgstr "" #: ../../util/wmgenmenu.h:164 msgid "vi" msgstr "" #: ../../util/wmgenmenu.h:165 msgid "VIM" msgstr "" #: ../../util/wmgenmenu.h:166 msgid "gedit" msgstr "" #: ../../util/wmgenmenu.h:167 msgid "KEdit" msgstr "" #: ../../util/wmgenmenu.h:168 msgid "XEdit" msgstr "" #: ../../util/wmgenmenu.h:169 msgid "KWrite" msgstr "" #: ../../util/wmgenmenu.h:170 msgid "Kate" msgstr "" #: ../../util/wmgenmenu.h:171 msgid "Pico" msgstr "" #: ../../util/wmgenmenu.h:172 msgid "Nano" msgstr "" #: ../../util/wmgenmenu.h:173 msgid "Joe" msgstr "" #: ../../util/wmgenmenu.h:178 msgid "Omnia data" msgstr "" #: ../../util/wmgenmenu.h:179 msgid "Comix" msgstr "" #: ../../util/wmgenmenu.h:180 msgid "QComicBook" msgstr "" #: ../../util/wmgenmenu.h:185 msgid "Evince" msgstr "" #: ../../util/wmgenmenu.h:186 msgid "KGhostView" msgstr "" #: ../../util/wmgenmenu.h:187 msgid "gv" msgstr "" #: ../../util/wmgenmenu.h:188 msgid "GGv" msgstr "" #: ../../util/wmgenmenu.h:189 msgid "Xdvi" msgstr "" #: ../../util/wmgenmenu.h:190 msgid "KDVI" msgstr "" #: ../../util/wmgenmenu.h:191 msgid "Xpdf" msgstr "" #: ../../util/wmgenmenu.h:192 msgid "Adobe Reader" msgstr "" #: ../../util/wmgenmenu.h:193 msgid "Gless" msgstr "" #: ../../util/wmgenmenu.h:198 msgid "Google Desktop" msgstr "" #: ../../util/wmgenmenu.h:199 msgid "K3B" msgstr "" #: ../../util/wmgenmenu.h:200 msgid "gtkfind" msgstr "" #: ../../util/wmgenmenu.h:201 msgid "gdict" msgstr "" #: ../../util/wmgenmenu.h:202 msgid "gpsdrive" msgstr "" #: ../../util/wmgenmenu.h:203 msgid "wfcmgr" msgstr "" #: ../../util/wmgenmenu.h:204 msgid "switch" msgstr "" #: ../../util/wmgenmenu.h:205 msgid "kaddressbook" msgstr "" #: ../../util/wmgenmenu.h:206 msgid "kab" msgstr "" #: ../../util/wmgenmenu.h:207 msgid "kfind" msgstr "" #: ../../util/wmgenmenu.h:208 msgid "oclock" msgstr "" #: ../../util/wmgenmenu.h:209 msgid "rclock" msgstr "" #: ../../util/wmgenmenu.h:210 msgid "xclock" msgstr "" #: ../../util/wmgenmenu.h:211 msgid "kppp" msgstr "" #: ../../util/wmgenmenu.h:217 msgid "Ekiga" msgstr "" #: ../../util/wmgenmenu.h:222 msgid "Pidgin" msgstr "" #: ../../util/wmgenmenu.h:223 msgid "Skype" msgstr "" #: ../../util/wmgenmenu.h:224 msgid "Gizmo" msgstr "" #: ../../util/wmgenmenu.h:225 msgid "Kopete" msgstr "" #: ../../util/wmgenmenu.h:226 msgid "XChat" msgstr "" #: ../../util/wmgenmenu.h:227 msgid "KVIrc" msgstr "" #: ../../util/wmgenmenu.h:228 msgid "BitchX" msgstr "" #: ../../util/wmgenmenu.h:229 msgid "EPIC" msgstr "" #: ../../util/wmgenmenu.h:230 msgid "EPIC4" msgstr "" #: ../../util/wmgenmenu.h:231 msgid "Irssi" msgstr "" #: ../../util/wmgenmenu.h:232 msgid "TinyIRC" msgstr "" #: ../../util/wmgenmenu.h:233 msgid "Ksirc" msgstr "" #: ../../util/wmgenmenu.h:234 msgid "gtalk" msgstr "" #: ../../util/wmgenmenu.h:235 msgid "GnomeICU" msgstr "" #: ../../util/wmgenmenu.h:236 msgid "Licq" msgstr "" #: ../../util/wmgenmenu.h:237 msgid "aMSN" msgstr "" #: ../../util/wmgenmenu.h:242 msgid "aMule" msgstr "" #: ../../util/wmgenmenu.h:243 msgid "gFTP" msgstr "" #: ../../util/wmgenmenu.h:244 msgid "Smb4K" msgstr "" #: ../../util/wmgenmenu.h:245 msgid "KTorrent" msgstr "" #: ../../util/wmgenmenu.h:246 msgid "BitTorrent GUI" msgstr "" #: ../../util/wmgenmenu.h:247 msgid "ftp" msgstr "" #: ../../util/wmgenmenu.h:248 msgid "sftp" msgstr "" #: ../../util/wmgenmenu.h:249 msgid "Pavuk" msgstr "" #: ../../util/wmgenmenu.h:250 msgid "gtm" msgstr "" #: ../../util/wmgenmenu.h:251 msgid "Gnut" msgstr "" #: ../../util/wmgenmenu.h:252 msgid "GTK Gnutella" msgstr "" #: ../../util/wmgenmenu.h:253 msgid "Gnutmeg" msgstr "" #: ../../util/wmgenmenu.h:258 msgid "FlightGear Flight Simulator" msgstr "" #: ../../util/wmgenmenu.h:259 msgid "Tremulous" msgstr "" #: ../../util/wmgenmenu.h:260 msgid "XBoard" msgstr "" #: ../../util/wmgenmenu.h:261 msgid "GNOME Chess" msgstr "" #: ../../util/wmgenmenu.h:262 msgid "Quake 2" msgstr "" #: ../../util/wmgenmenu.h:263 msgid "Quake 3" msgstr "" #: ../../util/wmgenmenu.h:264 msgid "Quake 3: Urban Terror 2" msgstr "" #: ../../util/wmgenmenu.h:265 msgid "Soldier of Fortune" msgstr "" #: ../../util/wmgenmenu.h:266 msgid "Rune" msgstr "" #: ../../util/wmgenmenu.h:267 msgid "Tribes 2" msgstr "" #: ../../util/wmgenmenu.h:268 msgid "Unreal Tournament" msgstr "" #: ../../util/wmgenmenu.h:269 msgid "Descent 3" msgstr "" #: ../../util/wmgenmenu.h:270 msgid "Myth 2" msgstr "" #: ../../util/wmgenmenu.h:271 ../../util/wmgenmenu.h:272 msgid "Sauerbraten" msgstr "" #: ../../util/wmgenmenu.h:273 msgid "Railroad Tycoon 2" msgstr "" #: ../../util/wmgenmenu.h:274 msgid "Heretic 2" msgstr "" #: ../../util/wmgenmenu.h:275 msgid "Kohan" msgstr "" #: ../../util/wmgenmenu.h:276 msgid "XQF" msgstr "" #: ../../util/wmgenmenu.h:281 msgid "OpenOffice.org Writer" msgstr "" #: ../../util/wmgenmenu.h:282 msgid "OpenOffice.org Calc" msgstr "" #: ../../util/wmgenmenu.h:283 msgid "OpenOffice.org Draw" msgstr "" #: ../../util/wmgenmenu.h:284 msgid "OpenOffice.org Impress" msgstr "" #: ../../util/wmgenmenu.h:285 msgid "OpenOffice.org Math" msgstr "" #: ../../util/wmgenmenu.h:286 msgid "OpenOffice.org" msgstr "" #: ../../util/wmgenmenu.h:287 msgid "StarOffice Writer" msgstr "" #: ../../util/wmgenmenu.h:288 msgid "StarOffice Calc" msgstr "" #: ../../util/wmgenmenu.h:289 msgid "StarOffice Draw" msgstr "" #: ../../util/wmgenmenu.h:290 msgid "StarOffice Impress" msgstr "" #: ../../util/wmgenmenu.h:291 msgid "StarOffice Math" msgstr "" #: ../../util/wmgenmenu.h:292 msgid "StarOffice" msgstr "" #: ../../util/wmgenmenu.h:293 msgid "AbiWord" msgstr "" #: ../../util/wmgenmenu.h:294 msgid "KWord" msgstr "" #: ../../util/wmgenmenu.h:295 msgid "KPresenter" msgstr "" #: ../../util/wmgenmenu.h:296 msgid "KSpread" msgstr "" #: ../../util/wmgenmenu.h:297 msgid "KChart" msgstr "" #: ../../util/wmgenmenu.h:298 msgid "KOrganizer" msgstr "" #: ../../util/wmgenmenu.h:299 msgid "LyX" msgstr "" #: ../../util/wmgenmenu.h:300 msgid "Klyx" msgstr "" #: ../../util/wmgenmenu.h:301 msgid "GnuCash" msgstr "" #: ../../util/wmgenmenu.h:302 msgid "Gnumeric" msgstr "" #: ../../util/wmgenmenu.h:303 msgid "GnomeCal" msgstr "" #: ../../util/wmgenmenu.h:304 msgid "GnomeCard" msgstr "" #: ../../util/wmgenmenu.h:309 msgid "gitk" msgstr "" #: ../../util/wmgenmenu.h:310 msgid "gitview" msgstr "" #: ../../util/wmgenmenu.h:311 msgid "qgit" msgstr "" #: ../../util/wmgenmenu.h:312 msgid "git-gui" msgstr "" #: ../../util/wmgenmenu.h:313 msgid "glimmer" msgstr "" #: ../../util/wmgenmenu.h:314 msgid "glade" msgstr "" #: ../../util/wmgenmenu.h:315 msgid "kdevelop" msgstr "" #: ../../util/wmgenmenu.h:316 msgid "designer" msgstr "" #: ../../util/wmgenmenu.h:317 msgid "kbabel" msgstr "" #: ../../util/wmgenmenu.h:318 msgid "idle" msgstr "" #: ../../util/wmgenmenu.h:319 msgid "ghex" msgstr "" #: ../../util/wmgenmenu.h:320 msgid "hexedit" msgstr "" #: ../../util/wmgenmenu.h:321 msgid "memprof" msgstr "" #: ../../util/wmgenmenu.h:322 msgid "tclsh" msgstr "" #: ../../util/wmgenmenu.h:323 msgid "gdb" msgstr "" #: ../../util/wmgenmenu.h:324 msgid "xxgdb" msgstr "" #: ../../util/wmgenmenu.h:325 msgid "xev" msgstr "" #: ../../util/wmgenmenu.h:330 msgid "Iotop" msgstr "" #: ../../util/wmgenmenu.h:331 msgid "Iostat" msgstr "" #: ../../util/wmgenmenu.h:332 msgid "keybconf" msgstr "" #: ../../util/wmgenmenu.h:333 msgid "GNOME System Monitor" msgstr "" #: ../../util/wmgenmenu.h:334 msgid "top" msgstr "" #: ../../util/wmgenmenu.h:335 msgid "KDE Process Monitor" msgstr "" #: ../../util/wmgenmenu.h:336 msgid "gw" msgstr "" #: ../../util/wmgenmenu.h:337 msgid "GNOME Control Center" msgstr "" #: ../../util/wmgenmenu.h:338 msgid "GKrellM" msgstr "" #: ../../util/wmgenmenu.h:339 msgid "tksysv" msgstr "" #: ../../util/wmgenmenu.h:340 msgid "ksysv" msgstr "" #: ../../util/wmgenmenu.h:341 msgid "GNOME PPP" msgstr "" #: ../../util/wmgenmenu.h:346 msgid "YaST 2" msgstr "" #: ../../util/wmgenmenu.h:347 msgid "YaST" msgstr "" #: ../../util/wmgenmenu.h:348 msgid "System Settings" msgstr "" #: ../../util/wmgenmenu.h:349 msgid "UMTSMon" msgstr "" #: ../../util/wmgenmenu.h:354 msgid "DrakNetCenter" msgstr "" #: ../../util/wmgenmenu.h:355 msgid "RPMDrake" msgstr "" #: ../../util/wmgenmenu.h:356 msgid "HardDrake" msgstr "" #: ../../util/wmgenmenu.h:357 msgid "DrakConf" msgstr "" #: ../../util/wmgenmenu.h:358 msgid "MandrakeUpdate" msgstr "" #: ../../util/wmgenmenu.h:359 msgid "XDrakRes" msgstr "" #: ../../util/wmgenmenu.h:364 msgid "Docker" msgstr "" #: ../../util/wmgenmenu.h:365 msgid "Net" msgstr "" #: ../../util/wmgenmenu.h:366 ../../util/wmgenmenu.h:387 msgid "Power" msgstr "" #: ../../util/wmgenmenu.h:367 msgid "Laptop" msgstr "" #: ../../util/wmgenmenu.h:368 msgid "WiFi" msgstr "" #: ../../util/wmgenmenu.h:369 msgid "Interface Info" msgstr "" #: ../../util/wmgenmenu.h:370 ../../util/wmgenmenu.h:373 msgid "Weather" msgstr "" #: ../../util/wmgenmenu.h:371 msgid "Sticky Notes" msgstr "" #: ../../util/wmgenmenu.h:372 msgid "Mixer" msgstr "" #: ../../util/wmgenmenu.h:374 msgid "CPU Load" msgstr "" #: ../../util/wmgenmenu.h:375 msgid "CPU Freq" msgstr "" #: ../../util/wmgenmenu.h:376 msgid "Clock Mon" msgstr "" #: ../../util/wmgenmenu.h:377 msgid "Network Devices" msgstr "" #: ../../util/wmgenmenu.h:378 msgid "Calendar & Clock" msgstr "" #: ../../util/wmgenmenu.h:379 msgid "Time" msgstr "" #: ../../util/wmgenmenu.h:380 msgid "Date" msgstr "" #: ../../util/wmgenmenu.h:381 ../../util/wmgenmenu.h:382 msgid "System Monitor" msgstr "" #: ../../util/wmgenmenu.h:383 msgid "SMP Monitor" msgstr "" #: ../../util/wmgenmenu.h:384 msgid "Interfaces" msgstr "" #: ../../util/wmgenmenu.h:385 msgid "Button" msgstr "" #: ../../util/wmgenmenu.h:386 msgid "xmms" msgstr "" #: ../../util/wmgenmenu.h:388 msgid "Magnify" msgstr "" #: ../../util/wmgenmenu.h:393 msgid "IceWM" msgstr "" #: ../../util/wmgenmenu.h:394 msgid "KWin" msgstr "" #: ../../util/wmgenmenu.h:395 msgid "twm" msgstr "" #: ../../util/wmgenmenu.h:396 msgid "Fluxbox" msgstr "" #: ../../util/wmgenmenu.h:397 msgid "Blackbox" msgstr "" #: ../../util/wmgenmenu.h:398 msgid "Ion" msgstr "" #: ../../util/wmgenmenu.h:399 msgid "Motif Window Manager" msgstr "" #: ../../util/wmgenmenu.h:400 msgid "FVWM" msgstr "" ���������������������������������������WindowMaker-0.95.9/util/po/Makefile.am��������������������������������������������������������������0000644�0001750�0001750�00000002450�13431646202�014417� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������DOMAIN = wmgenmenu CATALOGS = @UTILMOFILES@ CLEANFILES = $(DOMAIN).pot $(CATALOGS) EXTRA_DIST = de.po es.po fr.po fy.po nl.po pt.po POTFILES = \ $(top_srcdir)/util/wmgenmenu.c \ $(top_srcdir)/util/wmgenmenu.h SUFFIXES = .po .mo .po.mo: $(AM_V_GEN)$(MSGFMT) -c -o $@ $< all-local: $(CATALOGS) .PHONY: update-lang if HAVE_XGETTEXT update-lang: $(DOMAIN).pot $(AM_V_GEN)$(top_srcdir)/script/generate-po-from-template.sh \ -n "$(PACKAGE_NAME)" -v "$(PACKAGE_VERSION)" -b "$(PACKAGE_BUGREPORT)" \ -t "$(DOMAIN).pot" "$(srcdir)/$(PO).po" $(DOMAIN).pot: $(POTFILES) $(AM_V_GEN)$(XGETTEXT) --default-domain=$(DOMAIN) \ --add-comments --keyword=_ --keyword=N_ $(POTFILES) @if cmp -s $(DOMAIN).po $(DOMAIN).pot; then \ rm -f $(DOMAIN).po; \ else \ mv -f $(DOMAIN).po $(DOMAIN).pot; \ fi endif install-data-local: $(CATALOGS) $(mkinstalldirs) $(DESTDIR)$(localedir) for n in $(CATALOGS) __DuMmY ; do \ if test "$$n" -a "$$n" != "__DuMmY" ; then \ l=`basename $$n .mo`; \ $(mkinstalldirs) $(DESTDIR)$(localedir)/$$l/LC_MESSAGES; \ $(INSTALL_DATA) -m 644 $$n $(DESTDIR)$(localedir)/$$l/LC_MESSAGES/$(DOMAIN).mo; \ fi; \ done uninstall-local: for n in $(CATALOGS) ; do \ l=`basename $$n .mo`; \ rm -f $(DESTDIR)$(localedir)/$$l/LC_MESSAGES/$(DOMAIN).mo; \ done ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/util/po/de.po��������������������������������������������������������������������0000644�0001750�0001750�00000007663�13431646202�013326� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# wmgenmenu German translation # Copyright (C) 2010 Carlos R. Mafra # This file is distributed under the same license as the Window Maker package. # Carlos R. Mafra <crmafra@gmail.com>, 2010. # msgid "" msgstr "" "Project-Id-Version: wmgenmenu\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-01-27 12:57+0100\n" "PO-Revision-Date: 2010-04-02 10:39+0200\n" "Last-Translator: Carlos R. Mafra <crmafra@gmail.com>\n" "Language-Team: German \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../../util/wmgenmenu.c:78 ../../util/wmgenmenu.c:91 msgid "Window Maker" msgstr "Window Maker" #: ../../util/wmgenmenu.c:79 msgid "Applications" msgstr "Anwendungen" #. Submenus in Applications #: ../../util/wmgenmenu.c:82 msgid "Terminals" msgstr "Terminals" #: ../../util/wmgenmenu.c:83 msgid "Internet" msgstr "Internet" #: ../../util/wmgenmenu.c:84 msgid "Email" msgstr "E-Mail" #: ../../util/wmgenmenu.c:85 msgid "Mathematics" msgstr "Mathematik" #: ../../util/wmgenmenu.c:86 msgid "File Managers" msgstr "Dateimanager" #: ../../util/wmgenmenu.c:87 msgid "Graphics" msgstr "Grafik" #: ../../util/wmgenmenu.c:88 msgid "Multimedia" msgstr "Multimedia" #: ../../util/wmgenmenu.c:89 msgid "Editors" msgstr "Text-Editoren" #: ../../util/wmgenmenu.c:90 msgid "Development" msgstr "Entwicklung" #: ../../util/wmgenmenu.c:92 msgid "Office" msgstr "Büro" #: ../../util/wmgenmenu.c:93 msgid "Astronomy" msgstr "Astronomie" #: ../../util/wmgenmenu.c:94 msgid "Sound" msgstr "Audio" #: ../../util/wmgenmenu.c:95 msgid "Comics" msgstr "Comic" #: ../../util/wmgenmenu.c:96 msgid "Viewers" msgstr "Dokumentbetrachter" #: ../../util/wmgenmenu.c:97 msgid "Utilities" msgstr "Hilfsprogramme" #: ../../util/wmgenmenu.c:98 msgid "System" msgstr "System" #: ../../util/wmgenmenu.c:99 msgid "Video" msgstr "Video" #: ../../util/wmgenmenu.c:100 msgid "Chat and Talk" msgstr "Chat und Besprechung" #: ../../util/wmgenmenu.c:101 msgid "P2P-Network" msgstr "P2P-Netzwerk" #: ../../util/wmgenmenu.c:102 msgid "Games" msgstr "Spiele" #: ../../util/wmgenmenu.c:103 msgid "OpenSUSE" msgstr "" #: ../../util/wmgenmenu.c:104 msgid "Mandriva" msgstr "" #: ../../util/wmgenmenu.c:110 msgid "Run..." msgstr "Ausführen..." #: ../../util/wmgenmenu.c:112 msgid "%A(Run, Type command:)" msgstr "%A(Ausführen, Befehl zum Ausführen eingeben:)" #. Appearance-related items #: ../../util/wmgenmenu.c:118 msgid "Appearance" msgstr "Erscheinungsbild" #: ../../util/wmgenmenu.c:120 msgid "Themes" msgstr "Themen" #: ../../util/wmgenmenu.c:128 msgid "Icons" msgstr "Iconsätze" #: ../../util/wmgenmenu.c:136 msgid "Background" msgstr "Hintergrund" #: ../../util/wmgenmenu.c:144 msgid "Save Theme" msgstr "Thema speichern" #: ../../util/wmgenmenu.c:152 msgid "Save Icons" msgstr "Iconsatz speichern" #: ../../util/wmgenmenu.c:162 msgid "Workspaces" msgstr "Arbeitsflächen" #: ../../util/wmgenmenu.c:168 msgid "Workspace" msgstr "Arbeitsfläche" #: ../../util/wmgenmenu.c:170 msgid "Hide Others" msgstr "Ändere verstecken" #: ../../util/wmgenmenu.c:176 msgid "Show All" msgstr "Alle anzeigen" #: ../../util/wmgenmenu.c:182 msgid "Arrange Icons" msgstr "Icons anordnen" #: ../../util/wmgenmenu.c:189 msgid "Refresh" msgstr "Neuzeichen" #: ../../util/wmgenmenu.c:195 msgid "Save Session" msgstr "Arbeitsplatz sichern" #: ../../util/wmgenmenu.c:201 msgid "Clear Session" msgstr "X Sitzung leeren" #: ../../util/wmgenmenu.c:209 msgid "Configure Window Maker" msgstr "Window Maker Einstellungen" #: ../../util/wmgenmenu.c:217 msgid "Info Panel" msgstr "Info-Panel" #: ../../util/wmgenmenu.c:224 msgid "Restart" msgstr "Neustart" #: ../../util/wmgenmenu.c:237 msgid "Lock Screen" msgstr "Bildschirm sperren" #: ../../util/wmgenmenu.c:248 msgid "Exit Window Maker" msgstr "Window Maker beenden" #: ../../util/wmgenmenu.c:317 #, c-format msgid "Start %s" msgstr "%s starten" #: ../../util/wmgenmenu.c:325 msgid "Other Window Managers" msgstr "Andere Fenstermanager" �����������������������������������������������������������������������������WindowMaker-0.95.9/util/po/es.po��������������������������������������������������������������������0000644�0001750�0001750�00000054145�13431646202�013342� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# wmgenmenu Spanish translation # Copyright (C) 2011 Camille d'Alméras # This file is distributed under the same license as the Window Maker package. # Camille d'Alméras <camilledalmeras@yahoo.com>, 2011. # msgid "" msgstr "" "Project-Id-Version: wmgenmenu\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-02-10 00:04+0100\n" "PO-Revision-Date: 2011-02-05 12:19-0500\n" "Last-Translator: Camille d'Alméras <camilledalmeras@yahoo.com>\n" "Language-Team: Spanish\n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. Root -> Applications #: ../../util/wmgenmenu.c:103 msgid "Applications" msgstr "Aplicaciones" #. Root -> Applications -> <category> #: ../../util/wmgenmenu.c:106 msgid "Terminals" msgstr "Terminales" #. always keep terminals the top item #: ../../util/wmgenmenu.c:107 msgid "Internet" msgstr "Internet" #: ../../util/wmgenmenu.c:108 msgid "Email" msgstr "Correo electrónico" #: ../../util/wmgenmenu.c:109 msgid "Mathematics" msgstr "Matemáticas" #: ../../util/wmgenmenu.c:110 msgid "File Managers" msgstr "Gestores de archivos" #: ../../util/wmgenmenu.c:111 msgid "Graphics" msgstr "Gráficos" #: ../../util/wmgenmenu.c:112 msgid "Multimedia" msgstr "Multimedia" #: ../../util/wmgenmenu.c:113 msgid "Editors" msgstr "Editores" #: ../../util/wmgenmenu.c:114 msgid "Development" msgstr "Desarrollo" #: ../../util/wmgenmenu.c:116 msgid "Office" msgstr "Ofimática" #: ../../util/wmgenmenu.c:117 msgid "Astronomy" msgstr "Astronomía" #: ../../util/wmgenmenu.c:118 msgid "Sound" msgstr "Sonido" #: ../../util/wmgenmenu.c:119 msgid "Comics" msgstr "Tiras cómicas" #: ../../util/wmgenmenu.c:120 msgid "Viewers" msgstr "Visualizadores" #: ../../util/wmgenmenu.c:121 msgid "Utilities" msgstr "Utilidades" #: ../../util/wmgenmenu.c:122 msgid "System" msgstr "Sistema" #: ../../util/wmgenmenu.c:123 msgid "Video" msgstr "Video" #: ../../util/wmgenmenu.c:124 msgid "Chat and Talk" msgstr "Conversación" #: ../../util/wmgenmenu.c:125 msgid "P2P Network" msgstr "Redes P2P" #: ../../util/wmgenmenu.c:126 msgid "Games" msgstr "Juegos" #: ../../util/wmgenmenu.c:134 msgid "Run..." msgstr "Ejecutar..." #: ../../util/wmgenmenu.c:136 #, c-format msgid "%A(Run, Type command:)" msgstr "%A(Ejecutar, Ingrese un comando:)" #. Root -> Appearance #: ../../util/wmgenmenu.c:142 msgid "Appearance" msgstr "Apariencia" #: ../../util/wmgenmenu.c:146 msgid "Themes" msgstr "Temas" #: ../../util/wmgenmenu.c:155 msgid "Styles" msgstr "Estilos" #: ../../util/wmgenmenu.c:164 msgid "Icon Sets" msgstr "Conjuntos de íconos" #. Root -> Appearance -> Background #: ../../util/wmgenmenu.c:172 msgid "Background" msgstr "Fondo de pantalla" #. Root -> Appearance -> Background -> Solid #: ../../util/wmgenmenu.c:175 msgid "Solid" msgstr "Plano" #. Root -> Appearance -> Background -> Solid -> <color> #: ../../util/wmgenmenu.c:187 msgid "Black" msgstr "Negro" #: ../../util/wmgenmenu.c:188 msgid "Blue" msgstr "Amatista oscuro" #: ../../util/wmgenmenu.c:189 msgid "Indigo" msgstr "Añil" #: ../../util/wmgenmenu.c:190 msgid "Bluemarine" msgstr "Turquí" #: ../../util/wmgenmenu.c:191 msgid "Purple" msgstr "Púrpura" #: ../../util/wmgenmenu.c:192 msgid "Wheat" msgstr "Pardo" #: ../../util/wmgenmenu.c:193 msgid "Dark Gray" msgstr "Gris de Payne" #: ../../util/wmgenmenu.c:194 msgid "Wine" msgstr "Vino tinto" #. Root -> Appearance -> Background -> Gradient #: ../../util/wmgenmenu.c:199 msgid "Gradient" msgstr "Degradado" #: ../../util/wmgenmenu.c:213 msgid "Sunset" msgstr "Puesta del sol" #: ../../util/wmgenmenu.c:220 msgid "Sky" msgstr "Cielo" #: ../../util/wmgenmenu.c:221 msgid "Blue Shades" msgstr "Degradado de amatista oscuro" #: ../../util/wmgenmenu.c:222 msgid "Indigo Shades" msgstr "Degradado de añil" #: ../../util/wmgenmenu.c:223 msgid "Purple Shades" msgstr "Degradado de púrpura" #: ../../util/wmgenmenu.c:224 msgid "Wheat Shades" msgstr "Degradado de pardo" #: ../../util/wmgenmenu.c:225 msgid "Grey Shades" msgstr "Degradado de gris de Payne" #: ../../util/wmgenmenu.c:226 msgid "Wine Shades" msgstr "Degradado de vino tinto" #: ../../util/wmgenmenu.c:232 msgid "Images" msgstr "Imágenes" #: ../../util/wmgenmenu.c:243 msgid "Save Theme" msgstr "Guardar el tema" #: ../../util/wmgenmenu.c:253 msgid "Save IconSet" msgstr "Guardar el conjunto de íconos" #: ../../util/wmgenmenu.c:264 msgid "Workspaces" msgstr "Escritorios" #. Root -> Workspace #: ../../util/wmgenmenu.c:271 msgid "Workspace" msgstr "Escritorio" #: ../../util/wmgenmenu.c:273 msgid "Hide Others" msgstr "Ocultar los demás" #: ../../util/wmgenmenu.c:281 msgid "Show All" msgstr "Mostrar todo" #: ../../util/wmgenmenu.c:289 msgid "Arrange Icons" msgstr "Ordenar los íconos" #: ../../util/wmgenmenu.c:297 msgid "Refresh" msgstr "Actualizar" #: ../../util/wmgenmenu.c:305 msgid "Save Session" msgstr "Guardar la sesión" #: ../../util/wmgenmenu.c:313 msgid "Clear Session" msgstr "Reiniciar la sesión" #: ../../util/wmgenmenu.c:322 msgid "Configure Window Maker" msgstr "Configurar Window Maker" #: ../../util/wmgenmenu.c:331 msgid "Info Panel" msgstr "Panel de información" #: ../../util/wmgenmenu.c:339 msgid "Restart Window Maker" msgstr "Reiniciar Window Maker" #: ../../util/wmgenmenu.c:352 msgid "Lock Screen" msgstr "Bloquear la pantalla" #: ../../util/wmgenmenu.c:363 msgid "Exit Window Maker" msgstr "Salir de Window Maker" #: ../../util/wmgenmenu.c:458 #, c-format msgid "Start %s" msgstr "Lanzar %s" #: ../../util/wmgenmenu.c:468 msgid "Other Window Managers" msgstr "Otros gestores de ventanas" #: ../../util/wmgenmenu.h:9 msgid "xterm" msgstr "" #: ../../util/wmgenmenu.h:10 msgid "mrxvt" msgstr "" #: ../../util/wmgenmenu.h:11 msgid "Konsole" msgstr "" #: ../../util/wmgenmenu.h:16 msgid "Dolphin" msgstr "" #: ../../util/wmgenmenu.h:17 msgid "Thunar" msgstr "" #: ../../util/wmgenmenu.h:18 msgid "ROX filer" msgstr "" #: ../../util/wmgenmenu.h:19 msgid "GWorkspace" msgstr "" #: ../../util/wmgenmenu.h:20 msgid "Midnight Commander" msgstr "" #: ../../util/wmgenmenu.h:21 msgid "XFTree" msgstr "" #: ../../util/wmgenmenu.h:22 ../../util/wmgenmenu.h:118 msgid "Konqueror" msgstr "" #: ../../util/wmgenmenu.h:23 msgid "Nautilus" msgstr "" #: ../../util/wmgenmenu.h:24 msgid "FSViewer" msgstr "" #: ../../util/wmgenmenu.h:25 msgid "Xfe" msgstr "" #: ../../util/wmgenmenu.h:30 msgid "Xmaxima" msgstr "" #: ../../util/wmgenmenu.h:31 msgid "Maxima" msgstr "" #: ../../util/wmgenmenu.h:32 msgid "Maple" msgstr "" #: ../../util/wmgenmenu.h:33 msgid "Scilab" msgstr "" #: ../../util/wmgenmenu.h:34 msgid "bc" msgstr "" #: ../../util/wmgenmenu.h:35 msgid "KCalc" msgstr "" #: ../../util/wmgenmenu.h:36 msgid "XCalc" msgstr "" #: ../../util/wmgenmenu.h:37 msgid "Mathematica" msgstr "" #: ../../util/wmgenmenu.h:38 msgid "Math" msgstr "" #. command-line Mathematica #: ../../util/wmgenmenu.h:39 msgid "Free42" msgstr "" #: ../../util/wmgenmenu.h:40 msgid "X48" msgstr "" #: ../../util/wmgenmenu.h:45 msgid "Xplns" msgstr "" #: ../../util/wmgenmenu.h:46 msgid "Stellarium" msgstr "" #: ../../util/wmgenmenu.h:51 msgid "GIMP" msgstr "" #: ../../util/wmgenmenu.h:52 msgid "Sodipodi" msgstr "" #: ../../util/wmgenmenu.h:53 msgid "Inkscape" msgstr "" #: ../../util/wmgenmenu.h:54 msgid "KIllustrator" msgstr "" #: ../../util/wmgenmenu.h:55 msgid "Krayon" msgstr "" #: ../../util/wmgenmenu.h:56 msgid "KPovModeler" msgstr "" #: ../../util/wmgenmenu.h:57 msgid "XBitmap" msgstr "" #: ../../util/wmgenmenu.h:58 msgid "XPaint" msgstr "" #: ../../util/wmgenmenu.h:59 msgid "XFig" msgstr "" #: ../../util/wmgenmenu.h:60 msgid "KPaint" msgstr "" #: ../../util/wmgenmenu.h:61 msgid "Blender" msgstr "" #: ../../util/wmgenmenu.h:62 msgid "KSnapshot" msgstr "" #: ../../util/wmgenmenu.h:63 msgid "GPhoto" msgstr "" #: ../../util/wmgenmenu.h:64 msgid "DigiKam" msgstr "" #: ../../util/wmgenmenu.h:65 msgid "Dia" msgstr "" #: ../../util/wmgenmenu.h:66 msgid "CompuPic" msgstr "" #: ../../util/wmgenmenu.h:67 msgid "GQview" msgstr "" #: ../../util/wmgenmenu.h:68 msgid "Geeqie" msgstr "" #: ../../util/wmgenmenu.h:69 msgid "KView" msgstr "" #: ../../util/wmgenmenu.h:70 msgid "Pixie" msgstr "" #: ../../util/wmgenmenu.h:71 msgid "ImageMagick Display" msgstr "" #: ../../util/wmgenmenu.h:72 msgid "XV" msgstr "" #: ../../util/wmgenmenu.h:73 msgid "Eye of GNOME" msgstr "" #: ../../util/wmgenmenu.h:74 msgid "Quick Image Viewer" msgstr "" #: ../../util/wmgenmenu.h:79 msgid "Audacious" msgstr "" #: ../../util/wmgenmenu.h:80 ../../util/wmgenmenu.h:216 msgid "Kaffeine" msgstr "" #: ../../util/wmgenmenu.h:81 msgid "Audacity" msgstr "" #: ../../util/wmgenmenu.h:82 msgid "Amarok" msgstr "" #: ../../util/wmgenmenu.h:83 msgid "XMMS" msgstr "" #: ../../util/wmgenmenu.h:84 msgid "K9Copy" msgstr "" #: ../../util/wmgenmenu.h:85 msgid "HandBrake" msgstr "" #: ../../util/wmgenmenu.h:86 msgid "OGMRip" msgstr "" #: ../../util/wmgenmenu.h:87 msgid "DVBcut" msgstr "" #: ../../util/wmgenmenu.h:88 msgid "AcidRip" msgstr "" #: ../../util/wmgenmenu.h:89 msgid "Avidemux" msgstr "" #: ../../util/wmgenmenu.h:90 msgid "GQmpeg" msgstr "" #: ../../util/wmgenmenu.h:91 msgid "Freeamp" msgstr "" #: ../../util/wmgenmenu.h:92 msgid "RealPlayer" msgstr "" #: ../../util/wmgenmenu.h:93 msgid "Mediathek" msgstr "" #: ../../util/wmgenmenu.h:94 msgid "KMid" msgstr "" #: ../../util/wmgenmenu.h:95 msgid "Kmidi" msgstr "" #: ../../util/wmgenmenu.h:96 msgid "Gtcd" msgstr "" #: ../../util/wmgenmenu.h:97 msgid "Grip" msgstr "" #: ../../util/wmgenmenu.h:98 msgid "AVIplay" msgstr "" #: ../../util/wmgenmenu.h:99 msgid "Gtv" msgstr "" #: ../../util/wmgenmenu.h:100 msgid "VLC" msgstr "" #: ../../util/wmgenmenu.h:101 msgid "Sinek" msgstr "" #: ../../util/wmgenmenu.h:102 msgid "xine" msgstr "" #: ../../util/wmgenmenu.h:103 msgid "aKtion" msgstr "" #: ../../util/wmgenmenu.h:104 msgid "Gcd" msgstr "" #: ../../util/wmgenmenu.h:105 msgid "XawTV" msgstr "" #: ../../util/wmgenmenu.h:106 msgid "X-CD-Roast" msgstr "" #: ../../util/wmgenmenu.h:107 msgid "XPlayCD" msgstr "" #: ../../util/wmgenmenu.h:112 ../../util/wmgenmenu.h:113 msgid "Chromium" msgstr "" #: ../../util/wmgenmenu.h:114 msgid "Google Chrome" msgstr "" #: ../../util/wmgenmenu.h:115 msgid "Mozilla Firefox" msgstr "" #: ../../util/wmgenmenu.h:116 msgid "Galeon" msgstr "" #: ../../util/wmgenmenu.h:117 msgid "SkipStone" msgstr "" #: ../../util/wmgenmenu.h:119 msgid "Dillo" msgstr "" #: ../../util/wmgenmenu.h:120 msgid "Epiphany" msgstr "" #: ../../util/wmgenmenu.h:121 msgid "Opera" msgstr "" #: ../../util/wmgenmenu.h:122 msgid "Midori" msgstr "" #: ../../util/wmgenmenu.h:123 msgid "Mozilla SeaMonkey" msgstr "" #: ../../util/wmgenmenu.h:124 msgid "Kazehakase" msgstr "" #: ../../util/wmgenmenu.h:125 msgid "Links" msgstr "" #: ../../util/wmgenmenu.h:126 msgid "Lynx" msgstr "" #: ../../util/wmgenmenu.h:127 msgid "W3M" msgstr "" #: ../../util/wmgenmenu.h:132 msgid "Mozilla Thunderbird" msgstr "" #: ../../util/wmgenmenu.h:133 msgid "Mutt" msgstr "" #: ../../util/wmgenmenu.h:134 msgid "GNUMail" msgstr "" #: ../../util/wmgenmenu.h:135 msgid "Evolution" msgstr "" #: ../../util/wmgenmenu.h:136 msgid "Kleopatra" msgstr "" #: ../../util/wmgenmenu.h:137 msgid "Sylpheed" msgstr "" #: ../../util/wmgenmenu.h:138 msgid "Spruce" msgstr "" #: ../../util/wmgenmenu.h:139 msgid "KMail" msgstr "" #: ../../util/wmgenmenu.h:140 msgid "Exmh" msgstr "" #: ../../util/wmgenmenu.h:141 msgid "Pine" msgstr "" #: ../../util/wmgenmenu.h:142 msgid "ELM" msgstr "" #: ../../util/wmgenmenu.h:143 msgid "Alpine" msgstr "" #: ../../util/wmgenmenu.h:148 msgid "soundKonverter" msgstr "" #: ../../util/wmgenmenu.h:149 msgid "Krecord" msgstr "" #: ../../util/wmgenmenu.h:150 msgid "Grecord" msgstr "" #: ../../util/wmgenmenu.h:151 msgid "ALSA mixer" msgstr "" #: ../../util/wmgenmenu.h:152 msgid "Sound configuration" msgstr "" #: ../../util/wmgenmenu.h:153 msgid "aumix" msgstr "" #: ../../util/wmgenmenu.h:154 msgid "Gmix" msgstr "" #: ../../util/wmgenmenu.h:159 msgid "XJed" msgstr "" #: ../../util/wmgenmenu.h:160 msgid "Jed" msgstr "" #: ../../util/wmgenmenu.h:161 msgid "Emacs" msgstr "" #: ../../util/wmgenmenu.h:162 msgid "XEmacs" msgstr "" #: ../../util/wmgenmenu.h:163 msgid "gVIM" msgstr "" #: ../../util/wmgenmenu.h:164 msgid "vi" msgstr "" #: ../../util/wmgenmenu.h:165 msgid "VIM" msgstr "" #: ../../util/wmgenmenu.h:166 msgid "gedit" msgstr "" #: ../../util/wmgenmenu.h:167 msgid "KEdit" msgstr "" #: ../../util/wmgenmenu.h:168 msgid "XEdit" msgstr "" #: ../../util/wmgenmenu.h:169 msgid "KWrite" msgstr "" #: ../../util/wmgenmenu.h:170 msgid "Kate" msgstr "" #: ../../util/wmgenmenu.h:171 msgid "Pico" msgstr "" #: ../../util/wmgenmenu.h:172 msgid "Nano" msgstr "" #: ../../util/wmgenmenu.h:173 msgid "Joe" msgstr "" #: ../../util/wmgenmenu.h:178 msgid "Omnia data" msgstr "" #: ../../util/wmgenmenu.h:179 msgid "Comix" msgstr "" #: ../../util/wmgenmenu.h:180 msgid "QComicBook" msgstr "" #: ../../util/wmgenmenu.h:185 msgid "Evince" msgstr "" #: ../../util/wmgenmenu.h:186 msgid "KGhostView" msgstr "" #: ../../util/wmgenmenu.h:187 msgid "gv" msgstr "" #: ../../util/wmgenmenu.h:188 msgid "GGv" msgstr "" #: ../../util/wmgenmenu.h:189 msgid "Xdvi" msgstr "" #: ../../util/wmgenmenu.h:190 msgid "KDVI" msgstr "" #: ../../util/wmgenmenu.h:191 msgid "Xpdf" msgstr "" #: ../../util/wmgenmenu.h:192 msgid "Adobe Reader" msgstr "" #: ../../util/wmgenmenu.h:193 msgid "Gless" msgstr "" #: ../../util/wmgenmenu.h:198 msgid "Google Desktop" msgstr "" #: ../../util/wmgenmenu.h:199 msgid "K3B" msgstr "" #: ../../util/wmgenmenu.h:200 msgid "gtkfind" msgstr "" #: ../../util/wmgenmenu.h:201 msgid "gdict" msgstr "" #: ../../util/wmgenmenu.h:202 msgid "gpsdrive" msgstr "" #: ../../util/wmgenmenu.h:203 msgid "wfcmgr" msgstr "" #: ../../util/wmgenmenu.h:204 msgid "switch" msgstr "" #: ../../util/wmgenmenu.h:205 msgid "kaddressbook" msgstr "" #: ../../util/wmgenmenu.h:206 msgid "kab" msgstr "" #: ../../util/wmgenmenu.h:207 msgid "kfind" msgstr "" #: ../../util/wmgenmenu.h:208 msgid "oclock" msgstr "" #: ../../util/wmgenmenu.h:209 msgid "rclock" msgstr "" #: ../../util/wmgenmenu.h:210 msgid "xclock" msgstr "" #: ../../util/wmgenmenu.h:211 msgid "kppp" msgstr "" #: ../../util/wmgenmenu.h:217 msgid "Ekiga" msgstr "" #: ../../util/wmgenmenu.h:222 msgid "Pidgin" msgstr "" #: ../../util/wmgenmenu.h:223 msgid "Skype" msgstr "" #: ../../util/wmgenmenu.h:224 msgid "Gizmo" msgstr "" #: ../../util/wmgenmenu.h:225 msgid "Kopete" msgstr "" #: ../../util/wmgenmenu.h:226 msgid "XChat" msgstr "" #: ../../util/wmgenmenu.h:227 msgid "KVIrc" msgstr "" #: ../../util/wmgenmenu.h:228 msgid "BitchX" msgstr "" #: ../../util/wmgenmenu.h:229 msgid "EPIC" msgstr "" #: ../../util/wmgenmenu.h:230 msgid "EPIC4" msgstr "" #: ../../util/wmgenmenu.h:231 msgid "Irssi" msgstr "" #: ../../util/wmgenmenu.h:232 msgid "TinyIRC" msgstr "" #: ../../util/wmgenmenu.h:233 msgid "Ksirc" msgstr "" #: ../../util/wmgenmenu.h:234 msgid "gtalk" msgstr "" #: ../../util/wmgenmenu.h:235 msgid "GnomeICU" msgstr "" #: ../../util/wmgenmenu.h:236 msgid "Licq" msgstr "" #: ../../util/wmgenmenu.h:237 msgid "aMSN" msgstr "" #: ../../util/wmgenmenu.h:242 msgid "aMule" msgstr "" #: ../../util/wmgenmenu.h:243 msgid "gFTP" msgstr "" #: ../../util/wmgenmenu.h:244 msgid "Smb4K" msgstr "" #: ../../util/wmgenmenu.h:245 msgid "KTorrent" msgstr "" #: ../../util/wmgenmenu.h:246 msgid "BitTorrent GUI" msgstr "" #: ../../util/wmgenmenu.h:247 msgid "ftp" msgstr "" #: ../../util/wmgenmenu.h:248 msgid "sftp" msgstr "" #: ../../util/wmgenmenu.h:249 msgid "Pavuk" msgstr "" #: ../../util/wmgenmenu.h:250 msgid "gtm" msgstr "" #: ../../util/wmgenmenu.h:251 msgid "Gnut" msgstr "" #: ../../util/wmgenmenu.h:252 msgid "GTK Gnutella" msgstr "" #: ../../util/wmgenmenu.h:253 msgid "Gnutmeg" msgstr "" #: ../../util/wmgenmenu.h:258 msgid "FlightGear Flight Simulator" msgstr "" #: ../../util/wmgenmenu.h:259 msgid "Tremulous" msgstr "" #: ../../util/wmgenmenu.h:260 msgid "XBoard" msgstr "" #: ../../util/wmgenmenu.h:261 msgid "GNOME Chess" msgstr "" #: ../../util/wmgenmenu.h:262 msgid "Quake 2" msgstr "" #: ../../util/wmgenmenu.h:263 msgid "Quake 3" msgstr "" #: ../../util/wmgenmenu.h:264 msgid "Quake 3: Urban Terror 2" msgstr "" #: ../../util/wmgenmenu.h:265 msgid "Soldier of Fortune" msgstr "" #: ../../util/wmgenmenu.h:266 msgid "Rune" msgstr "" #: ../../util/wmgenmenu.h:267 msgid "Tribes 2" msgstr "" #: ../../util/wmgenmenu.h:268 msgid "Unreal Tournament" msgstr "" #: ../../util/wmgenmenu.h:269 msgid "Descent 3" msgstr "" #: ../../util/wmgenmenu.h:270 msgid "Myth 2" msgstr "" #: ../../util/wmgenmenu.h:271 ../../util/wmgenmenu.h:272 msgid "Sauerbraten" msgstr "" #: ../../util/wmgenmenu.h:273 msgid "Railroad Tycoon 2" msgstr "" #: ../../util/wmgenmenu.h:274 msgid "Heretic 2" msgstr "" #: ../../util/wmgenmenu.h:275 msgid "Kohan" msgstr "" #: ../../util/wmgenmenu.h:276 msgid "XQF" msgstr "" #: ../../util/wmgenmenu.h:281 msgid "OpenOffice.org Writer" msgstr "" #: ../../util/wmgenmenu.h:282 msgid "OpenOffice.org Calc" msgstr "" #: ../../util/wmgenmenu.h:283 msgid "OpenOffice.org Draw" msgstr "" #: ../../util/wmgenmenu.h:284 msgid "OpenOffice.org Impress" msgstr "" #: ../../util/wmgenmenu.h:285 msgid "OpenOffice.org Math" msgstr "" #: ../../util/wmgenmenu.h:286 msgid "OpenOffice.org" msgstr "" #: ../../util/wmgenmenu.h:287 msgid "StarOffice Writer" msgstr "" #: ../../util/wmgenmenu.h:288 msgid "StarOffice Calc" msgstr "" #: ../../util/wmgenmenu.h:289 msgid "StarOffice Draw" msgstr "" #: ../../util/wmgenmenu.h:290 msgid "StarOffice Impress" msgstr "" #: ../../util/wmgenmenu.h:291 msgid "StarOffice Math" msgstr "" #: ../../util/wmgenmenu.h:292 msgid "StarOffice" msgstr "" #: ../../util/wmgenmenu.h:293 msgid "AbiWord" msgstr "" #: ../../util/wmgenmenu.h:294 msgid "KWord" msgstr "" #: ../../util/wmgenmenu.h:295 msgid "KPresenter" msgstr "" #: ../../util/wmgenmenu.h:296 msgid "KSpread" msgstr "" #: ../../util/wmgenmenu.h:297 msgid "KChart" msgstr "" #: ../../util/wmgenmenu.h:298 msgid "KOrganizer" msgstr "" #: ../../util/wmgenmenu.h:299 msgid "LyX" msgstr "" #: ../../util/wmgenmenu.h:300 msgid "Klyx" msgstr "" #: ../../util/wmgenmenu.h:301 msgid "GnuCash" msgstr "" #: ../../util/wmgenmenu.h:302 msgid "Gnumeric" msgstr "" #: ../../util/wmgenmenu.h:303 msgid "GnomeCal" msgstr "" #: ../../util/wmgenmenu.h:304 msgid "GnomeCard" msgstr "" #: ../../util/wmgenmenu.h:309 msgid "gitk" msgstr "" #: ../../util/wmgenmenu.h:310 msgid "gitview" msgstr "" #: ../../util/wmgenmenu.h:311 msgid "qgit" msgstr "" #: ../../util/wmgenmenu.h:312 msgid "git-gui" msgstr "" #: ../../util/wmgenmenu.h:313 msgid "glimmer" msgstr "" #: ../../util/wmgenmenu.h:314 msgid "glade" msgstr "" #: ../../util/wmgenmenu.h:315 msgid "kdevelop" msgstr "" #: ../../util/wmgenmenu.h:316 msgid "designer" msgstr "" #: ../../util/wmgenmenu.h:317 msgid "kbabel" msgstr "" #: ../../util/wmgenmenu.h:318 msgid "idle" msgstr "" #: ../../util/wmgenmenu.h:319 msgid "ghex" msgstr "" #: ../../util/wmgenmenu.h:320 msgid "hexedit" msgstr "" #: ../../util/wmgenmenu.h:321 msgid "memprof" msgstr "" #: ../../util/wmgenmenu.h:322 msgid "tclsh" msgstr "" #: ../../util/wmgenmenu.h:323 msgid "gdb" msgstr "" #: ../../util/wmgenmenu.h:324 msgid "xxgdb" msgstr "" #: ../../util/wmgenmenu.h:325 msgid "xev" msgstr "" #: ../../util/wmgenmenu.h:330 msgid "Iotop" msgstr "" #: ../../util/wmgenmenu.h:331 msgid "Iostat" msgstr "" #: ../../util/wmgenmenu.h:332 msgid "keybconf" msgstr "" #: ../../util/wmgenmenu.h:333 msgid "GNOME System Monitor" msgstr "" #: ../../util/wmgenmenu.h:334 msgid "top" msgstr "" #: ../../util/wmgenmenu.h:335 msgid "KDE Process Monitor" msgstr "" #: ../../util/wmgenmenu.h:336 msgid "gw" msgstr "" #: ../../util/wmgenmenu.h:337 msgid "GNOME Control Center" msgstr "" #: ../../util/wmgenmenu.h:338 msgid "GKrellM" msgstr "" #: ../../util/wmgenmenu.h:339 msgid "tksysv" msgstr "" #: ../../util/wmgenmenu.h:340 msgid "ksysv" msgstr "" #: ../../util/wmgenmenu.h:341 msgid "GNOME PPP" msgstr "" #: ../../util/wmgenmenu.h:346 msgid "YaST 2" msgstr "" #: ../../util/wmgenmenu.h:347 msgid "YaST" msgstr "" #: ../../util/wmgenmenu.h:348 msgid "System Settings" msgstr "" #: ../../util/wmgenmenu.h:349 msgid "UMTSMon" msgstr "" #: ../../util/wmgenmenu.h:354 msgid "DrakNetCenter" msgstr "" #: ../../util/wmgenmenu.h:355 msgid "RPMDrake" msgstr "" #: ../../util/wmgenmenu.h:356 msgid "HardDrake" msgstr "" #: ../../util/wmgenmenu.h:357 msgid "DrakConf" msgstr "" #: ../../util/wmgenmenu.h:358 msgid "MandrakeUpdate" msgstr "" #: ../../util/wmgenmenu.h:359 msgid "XDrakRes" msgstr "" #: ../../util/wmgenmenu.h:364 msgid "Docker" msgstr "" #: ../../util/wmgenmenu.h:365 msgid "Net" msgstr "" #: ../../util/wmgenmenu.h:366 ../../util/wmgenmenu.h:387 msgid "Power" msgstr "" #: ../../util/wmgenmenu.h:367 msgid "Laptop" msgstr "" #: ../../util/wmgenmenu.h:368 msgid "WiFi" msgstr "" #: ../../util/wmgenmenu.h:369 msgid "Interface Info" msgstr "" #: ../../util/wmgenmenu.h:370 ../../util/wmgenmenu.h:373 msgid "Weather" msgstr "" #: ../../util/wmgenmenu.h:371 msgid "Sticky Notes" msgstr "" #: ../../util/wmgenmenu.h:372 msgid "Mixer" msgstr "" #: ../../util/wmgenmenu.h:374 msgid "CPU Load" msgstr "" #: ../../util/wmgenmenu.h:375 msgid "CPU Freq" msgstr "" #: ../../util/wmgenmenu.h:376 msgid "Clock Mon" msgstr "" #: ../../util/wmgenmenu.h:377 msgid "Network Devices" msgstr "" #: ../../util/wmgenmenu.h:378 msgid "Calendar & Clock" msgstr "" #: ../../util/wmgenmenu.h:379 msgid "Time" msgstr "" #: ../../util/wmgenmenu.h:380 msgid "Date" msgstr "" #: ../../util/wmgenmenu.h:381 ../../util/wmgenmenu.h:382 msgid "System Monitor" msgstr "" #: ../../util/wmgenmenu.h:383 msgid "SMP Monitor" msgstr "" #: ../../util/wmgenmenu.h:384 msgid "Interfaces" msgstr "" #: ../../util/wmgenmenu.h:385 msgid "Button" msgstr "" #: ../../util/wmgenmenu.h:386 msgid "xmms" msgstr "" #: ../../util/wmgenmenu.h:388 msgid "Magnify" msgstr "" #: ../../util/wmgenmenu.h:393 msgid "IceWM" msgstr "" #: ../../util/wmgenmenu.h:394 msgid "KWin" msgstr "" #: ../../util/wmgenmenu.h:395 msgid "twm" msgstr "" #: ../../util/wmgenmenu.h:396 msgid "Fluxbox" msgstr "" #: ../../util/wmgenmenu.h:397 msgid "Blackbox" msgstr "" #: ../../util/wmgenmenu.h:398 msgid "Ion" msgstr "" #: ../../util/wmgenmenu.h:399 msgid "Motif Window Manager" msgstr "" #: ../../util/wmgenmenu.h:400 msgid "FVWM" msgstr "" ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/util/po/nl.po��������������������������������������������������������������������0000644�0001750�0001750�00000074026�13431646202�013344� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# New translation into Dutch for Window Maker # Copyright (C) 2014 Window Maker Developers Team # This file is distributed under the same license as the windowmaker package. # Original by Alwin <translations@ziggo.nl>, 2014. # msgid "" msgstr "" "Project-Id-Version: wmaker-0.95.6+\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-12-21 21:25+0100\n" "PO-Revision-Date: 2014-03-05 00:00+0000\n" "Last-Translator: Alwin <translations@ziggo.nl>\n" "Language-Team: Dutch\n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. Root -> Applications #: ../../util/wmgenmenu.c:117 msgid "Applications" msgstr "Programma's" #. Root -> Applications -> <category> #: ../../util/wmgenmenu.c:120 msgid "Terminals" msgstr "Terminals" #. always keep terminals the top item #: ../../util/wmgenmenu.c:121 msgid "Internet" msgstr "Internet" #: ../../util/wmgenmenu.c:122 msgid "Email" msgstr "E-mail" #: ../../util/wmgenmenu.c:123 msgid "Mathematics" msgstr "Wiskunde" #: ../../util/wmgenmenu.c:124 msgid "File Managers" msgstr "Bestandsbeheerders" #: ../../util/wmgenmenu.c:125 msgid "Graphics" msgstr "Grafisch" #: ../../util/wmgenmenu.c:126 msgid "Multimedia" msgstr "Multimedia" #: ../../util/wmgenmenu.c:127 msgid "Editors" msgstr "Tekstbewerkers" #: ../../util/wmgenmenu.c:128 msgid "Development" msgstr "Ontwikkelen" #: ../../util/wmgenmenu.c:130 msgid "Office" msgstr "Kantoor" #: ../../util/wmgenmenu.c:131 msgid "Astronomy" msgstr "Sterrenkunde" #: ../../util/wmgenmenu.c:132 msgid "Sound" msgstr "Audio" #: ../../util/wmgenmenu.c:133 msgid "Comics" msgstr "Strips" #: ../../util/wmgenmenu.c:134 msgid "Viewers" msgstr "Viewers" #: ../../util/wmgenmenu.c:135 msgid "Utilities" msgstr "Hulpmiddelen" #: ../../util/wmgenmenu.c:136 msgid "System" msgstr "Systeem" #: ../../util/wmgenmenu.c:137 msgid "Video" msgstr "Video" #: ../../util/wmgenmenu.c:138 msgid "Chat and Talk" msgstr "Berichten en spraak" #: ../../util/wmgenmenu.c:139 msgid "P2P Network" msgstr "P2P-netwerk" #: ../../util/wmgenmenu.c:140 msgid "Games" msgstr "Spellen" #: ../../util/wmgenmenu.c:148 msgid "Run..." msgstr "Uitvoeren..." #: ../../util/wmgenmenu.c:150 #, c-format msgid "%A(Run, Type command:)" msgstr "%A(Uitvoeren, Typ commando:)" #. Root -> Appearance #: ../../util/wmgenmenu.c:156 msgid "Appearance" msgstr "Uiterlijk" #: ../../util/wmgenmenu.c:160 msgid "Themes" msgstr "Thema's" #: ../../util/wmgenmenu.c:169 msgid "Styles" msgstr "Stijlen" #: ../../util/wmgenmenu.c:178 msgid "Icon Sets" msgstr "Iconensets" #. Root -> Appearance -> Background #: ../../util/wmgenmenu.c:186 msgid "Background" msgstr "Achtergrond" #. Root -> Appearance -> Background -> Solid #: ../../util/wmgenmenu.c:189 msgid "Solid" msgstr "Effen" #. Root -> Appearance -> Background -> Solid -> <color> #: ../../util/wmgenmenu.c:201 msgid "Black" msgstr "Zwart" #: ../../util/wmgenmenu.c:202 msgid "Blue" msgstr "Blauw" #: ../../util/wmgenmenu.c:203 msgid "Indigo" msgstr "Indigo" #: ../../util/wmgenmenu.c:204 msgid "Bluemarine" msgstr "Marineblauw" #: ../../util/wmgenmenu.c:205 msgid "Purple" msgstr "Purper" #: ../../util/wmgenmenu.c:206 msgid "Wheat" msgstr "Tarwe" #: ../../util/wmgenmenu.c:207 msgid "Dark Gray" msgstr "Donkergrijs" #: ../../util/wmgenmenu.c:208 msgid "Wine" msgstr "Wijnrood" #. Root -> Appearance -> Background -> Gradient #: ../../util/wmgenmenu.c:213 msgid "Gradient" msgstr "Kleurverloop" #: ../../util/wmgenmenu.c:227 msgid "Sunset" msgstr "Zonsondergang" #: ../../util/wmgenmenu.c:234 msgid "Sky" msgstr "Lucht" #: ../../util/wmgenmenu.c:235 msgid "Blue Shades" msgstr "Blauwtinten" #: ../../util/wmgenmenu.c:236 msgid "Indigo Shades" msgstr "Indigotinten" #: ../../util/wmgenmenu.c:237 msgid "Purple Shades" msgstr "Purpertinten" #: ../../util/wmgenmenu.c:238 msgid "Wheat Shades" msgstr "Tarwetinten" #: ../../util/wmgenmenu.c:239 msgid "Grey Shades" msgstr "Grijstinten" #: ../../util/wmgenmenu.c:240 msgid "Wine Shades" msgstr "Wijnroodtinten" #: ../../util/wmgenmenu.c:246 msgid "Images" msgstr "Afbeeldingen" #: ../../util/wmgenmenu.c:257 msgid "Save Theme" msgstr "Thema opslaan" #: ../../util/wmgenmenu.c:266 msgid "Save IconSet" msgstr "Iconenset opslaan" #: ../../util/wmgenmenu.c:277 msgid "Workspaces" msgstr "Werkruimten" #. Root -> Workspace #: ../../util/wmgenmenu.c:284 msgid "Workspace" msgstr "Werkruimte" #: ../../util/wmgenmenu.c:286 msgid "Hide Others" msgstr "Andere verbergen" #: ../../util/wmgenmenu.c:294 msgid "Show All" msgstr "Alles tonen" #: ../../util/wmgenmenu.c:302 msgid "Arrange Icons" msgstr "Iconen schikken" #: ../../util/wmgenmenu.c:310 msgid "Refresh" msgstr "Vernieuwen" #: ../../util/wmgenmenu.c:318 msgid "Save Session" msgstr "Sessie opslaan" #: ../../util/wmgenmenu.c:326 msgid "Clear Session" msgstr "Sessie wissen" #: ../../util/wmgenmenu.c:335 msgid "Configure Window Maker" msgstr "Window Maker instellen" #: ../../util/wmgenmenu.c:344 msgid "Info Panel" msgstr "Infopaneel" #: ../../util/wmgenmenu.c:352 msgid "Restart Window Maker" msgstr "Window Maker herstarten" #: ../../util/wmgenmenu.c:365 msgid "Lock Screen" msgstr "Scherm vergrendelen" #: ../../util/wmgenmenu.c:376 msgid "Exit Window Maker" msgstr "Window Maker afsluiten" #: ../../util/wmgenmenu.c:480 #, c-format msgid "Start %s" msgstr "%s starten" #: ../../util/wmgenmenu.c:490 msgid "Other Window Managers" msgstr "Andere vensterbeheerders" #: ../../util/wmgenmenu.h:26 msgid "xterm" msgstr "" #: ../../util/wmgenmenu.h:27 msgid "mrxvt" msgstr "" #: ../../util/wmgenmenu.h:28 msgid "Konsole" msgstr "" #: ../../util/wmgenmenu.h:29 msgid "Urxvt" msgstr "" #: ../../util/wmgenmenu.h:34 msgid "Dolphin" msgstr "" #: ../../util/wmgenmenu.h:35 msgid "Thunar" msgstr "" #: ../../util/wmgenmenu.h:36 msgid "ROX filer" msgstr "" #: ../../util/wmgenmenu.h:37 msgid "PCManFM" msgstr "" #: ../../util/wmgenmenu.h:38 msgid "GWorkspace" msgstr "" #: ../../util/wmgenmenu.h:39 msgid "Midnight Commander" msgstr "" #: ../../util/wmgenmenu.h:40 msgid "XFTree" msgstr "" #: ../../util/wmgenmenu.h:41 ../../util/wmgenmenu.h:140 msgid "Konqueror" msgstr "" #: ../../util/wmgenmenu.h:42 msgid "Nautilus" msgstr "" #: ../../util/wmgenmenu.h:43 msgid "FSViewer" msgstr "" #: ../../util/wmgenmenu.h:44 msgid "Xfe" msgstr "" #: ../../util/wmgenmenu.h:49 msgid "Xmaxima" msgstr "" #: ../../util/wmgenmenu.h:50 msgid "Maxima" msgstr "" #: ../../util/wmgenmenu.h:51 msgid "Maple" msgstr "" #: ../../util/wmgenmenu.h:52 msgid "Scilab" msgstr "" #: ../../util/wmgenmenu.h:53 msgid "bc" msgstr "" #: ../../util/wmgenmenu.h:54 msgid "KCalc" msgstr "" #: ../../util/wmgenmenu.h:55 msgid "XCalc" msgstr "" #: ../../util/wmgenmenu.h:56 msgid "Mathematica" msgstr "" #: ../../util/wmgenmenu.h:57 msgid "Math" msgstr "" #. command-line Mathematica #: ../../util/wmgenmenu.h:58 msgid "Free42" msgstr "" #: ../../util/wmgenmenu.h:59 msgid "X48" msgstr "" #: ../../util/wmgenmenu.h:64 msgid "Xplns" msgstr "" #: ../../util/wmgenmenu.h:65 msgid "Stellarium" msgstr "" #: ../../util/wmgenmenu.h:70 msgid "GIMP" msgstr "" #: ../../util/wmgenmenu.h:71 msgid "Sodipodi" msgstr "" #: ../../util/wmgenmenu.h:72 msgid "Inkscape" msgstr "" #: ../../util/wmgenmenu.h:73 msgid "KIllustrator" msgstr "" #: ../../util/wmgenmenu.h:74 msgid "Krayon" msgstr "" #: ../../util/wmgenmenu.h:75 msgid "KPovModeler" msgstr "" #: ../../util/wmgenmenu.h:76 msgid "XBitmap" msgstr "" #: ../../util/wmgenmenu.h:77 msgid "XPaint" msgstr "" #: ../../util/wmgenmenu.h:78 msgid "XFig" msgstr "" #: ../../util/wmgenmenu.h:79 msgid "KPaint" msgstr "" #: ../../util/wmgenmenu.h:80 msgid "Blender" msgstr "" #: ../../util/wmgenmenu.h:81 msgid "KSnapshot" msgstr "" #: ../../util/wmgenmenu.h:82 msgid "GPhoto" msgstr "" #: ../../util/wmgenmenu.h:83 msgid "DigiKam" msgstr "" #: ../../util/wmgenmenu.h:84 msgid "GQview" msgstr "" #: ../../util/wmgenmenu.h:85 msgid "Geeqie" msgstr "" #: ../../util/wmgenmenu.h:86 msgid "KView" msgstr "" #: ../../util/wmgenmenu.h:87 msgid "Dia" msgstr "" #: ../../util/wmgenmenu.h:88 msgid "CompuPic" msgstr "" #: ../../util/wmgenmenu.h:89 msgid "Pixie" msgstr "" #: ../../util/wmgenmenu.h:90 msgid "ImageMagick Display" msgstr "" #: ../../util/wmgenmenu.h:91 msgid "XV" msgstr "" #: ../../util/wmgenmenu.h:92 msgid "Eye of GNOME" msgstr "" #: ../../util/wmgenmenu.h:93 msgid "Quick Image Viewer" msgstr "" #: ../../util/wmgenmenu.h:98 ../../util/wmgenmenu.h:501 msgid "Audacious" msgstr "" #: ../../util/wmgenmenu.h:99 msgid "Kaffeine" msgstr "" #: ../../util/wmgenmenu.h:100 msgid "Audacity" msgstr "" #: ../../util/wmgenmenu.h:101 msgid "Amarok" msgstr "" #: ../../util/wmgenmenu.h:102 msgid "XMMS" msgstr "" #: ../../util/wmgenmenu.h:103 msgid "K9Copy" msgstr "" #: ../../util/wmgenmenu.h:104 msgid "HandBrake" msgstr "" #: ../../util/wmgenmenu.h:105 msgid "OGMRip" msgstr "" #: ../../util/wmgenmenu.h:106 msgid "DVBcut" msgstr "" #: ../../util/wmgenmenu.h:107 msgid "AcidRip" msgstr "" #: ../../util/wmgenmenu.h:108 msgid "RipperX" msgstr "" #: ../../util/wmgenmenu.h:109 msgid "Avidemux" msgstr "" #: ../../util/wmgenmenu.h:110 msgid "GQmpeg" msgstr "" #: ../../util/wmgenmenu.h:111 msgid "SMPlayer" msgstr "" #: ../../util/wmgenmenu.h:112 msgid "Linux MultiMedia Studio" msgstr "" #: ../../util/wmgenmenu.h:113 msgid "Freeamp" msgstr "" #: ../../util/wmgenmenu.h:114 msgid "RealPlayer" msgstr "" #: ../../util/wmgenmenu.h:115 msgid "Mediathek" msgstr "" #: ../../util/wmgenmenu.h:116 msgid "KMid" msgstr "" #: ../../util/wmgenmenu.h:117 msgid "Kmidi" msgstr "" #: ../../util/wmgenmenu.h:118 msgid "Gtcd" msgstr "" #: ../../util/wmgenmenu.h:119 msgid "Grip" msgstr "" #: ../../util/wmgenmenu.h:120 msgid "AVIplay" msgstr "" #: ../../util/wmgenmenu.h:121 msgid "Gtv" msgstr "" #: ../../util/wmgenmenu.h:122 msgid "VLC" msgstr "" #: ../../util/wmgenmenu.h:123 msgid "Sinek" msgstr "" #: ../../util/wmgenmenu.h:124 msgid "xine" msgstr "" #: ../../util/wmgenmenu.h:125 msgid "aKtion" msgstr "" #: ../../util/wmgenmenu.h:126 msgid "Gcd" msgstr "" #: ../../util/wmgenmenu.h:127 msgid "XawTV" msgstr "" #: ../../util/wmgenmenu.h:128 msgid "XPlayCD" msgstr "" #: ../../util/wmgenmenu.h:129 msgid "XBMC" msgstr "" #: ../../util/wmgenmenu.h:134 ../../util/wmgenmenu.h:135 msgid "Chromium" msgstr "" #: ../../util/wmgenmenu.h:136 msgid "Google Chrome" msgstr "" #: ../../util/wmgenmenu.h:137 msgid "Mozilla Firefox" msgstr "" #: ../../util/wmgenmenu.h:138 msgid "Galeon" msgstr "" #: ../../util/wmgenmenu.h:139 msgid "SkipStone" msgstr "" #: ../../util/wmgenmenu.h:141 msgid "Dillo" msgstr "" #: ../../util/wmgenmenu.h:142 msgid "Epiphany" msgstr "" #: ../../util/wmgenmenu.h:143 msgid "Opera" msgstr "" #: ../../util/wmgenmenu.h:144 msgid "Midori" msgstr "" #: ../../util/wmgenmenu.h:145 msgid "Mozilla SeaMonkey" msgstr "" #: ../../util/wmgenmenu.h:146 msgid "Kazehakase" msgstr "" #: ../../util/wmgenmenu.h:147 msgid "Links" msgstr "" #: ../../util/wmgenmenu.h:148 msgid "Lynx" msgstr "" #: ../../util/wmgenmenu.h:149 msgid "W3M" msgstr "" #: ../../util/wmgenmenu.h:154 msgid "Mozilla Thunderbird" msgstr "" #: ../../util/wmgenmenu.h:155 msgid "Mutt" msgstr "" #: ../../util/wmgenmenu.h:156 msgid "GNUMail" msgstr "" #: ../../util/wmgenmenu.h:157 msgid "Claws Mail" msgstr "" #: ../../util/wmgenmenu.h:158 msgid "Evolution" msgstr "" #: ../../util/wmgenmenu.h:159 msgid "Kleopatra" msgstr "" #: ../../util/wmgenmenu.h:160 msgid "Sylpheed" msgstr "" #: ../../util/wmgenmenu.h:161 msgid "Spruce" msgstr "" #: ../../util/wmgenmenu.h:162 msgid "KMail" msgstr "" #: ../../util/wmgenmenu.h:163 msgid "Exmh" msgstr "" #: ../../util/wmgenmenu.h:164 msgid "Pine" msgstr "" #: ../../util/wmgenmenu.h:165 msgid "ELM" msgstr "" #: ../../util/wmgenmenu.h:166 msgid "Alpine" msgstr "" #: ../../util/wmgenmenu.h:171 msgid "soundKonverter" msgstr "" #: ../../util/wmgenmenu.h:172 msgid "Krecord" msgstr "" #: ../../util/wmgenmenu.h:173 msgid "Grecord" msgstr "" #: ../../util/wmgenmenu.h:174 msgid "ALSA mixer" msgstr "" #: ../../util/wmgenmenu.h:175 msgid "VolWheel" msgstr "" #: ../../util/wmgenmenu.h:176 msgid "Sound configuration" msgstr "" #: ../../util/wmgenmenu.h:177 msgid "aumix" msgstr "" #: ../../util/wmgenmenu.h:178 msgid "Gmix" msgstr "" #: ../../util/wmgenmenu.h:183 msgid "XJed" msgstr "" #: ../../util/wmgenmenu.h:184 msgid "Jed" msgstr "" #: ../../util/wmgenmenu.h:185 msgid "Emacs" msgstr "" #: ../../util/wmgenmenu.h:186 msgid "XEmacs" msgstr "" #: ../../util/wmgenmenu.h:187 msgid "SciTE" msgstr "" #: ../../util/wmgenmenu.h:188 msgid "Bluefish" msgstr "" #: ../../util/wmgenmenu.h:189 msgid "gVIM" msgstr "" #: ../../util/wmgenmenu.h:190 msgid "vi" msgstr "" #: ../../util/wmgenmenu.h:191 msgid "VIM" msgstr "" #: ../../util/wmgenmenu.h:192 msgid "gedit" msgstr "" #: ../../util/wmgenmenu.h:193 msgid "KEdit" msgstr "" #: ../../util/wmgenmenu.h:194 msgid "XEdit" msgstr "" #: ../../util/wmgenmenu.h:195 msgid "KWrite" msgstr "" #: ../../util/wmgenmenu.h:196 msgid "Kate" msgstr "" #: ../../util/wmgenmenu.h:197 msgid "Pico" msgstr "" #: ../../util/wmgenmenu.h:198 msgid "Nano" msgstr "" #: ../../util/wmgenmenu.h:199 msgid "Joe" msgstr "" #: ../../util/wmgenmenu.h:204 msgid "Omnia data" msgstr "" #: ../../util/wmgenmenu.h:205 msgid "Comix" msgstr "" #: ../../util/wmgenmenu.h:206 msgid "QComicBook" msgstr "" #: ../../util/wmgenmenu.h:211 msgid "Evince" msgstr "" #: ../../util/wmgenmenu.h:212 msgid "KGhostView" msgstr "" #: ../../util/wmgenmenu.h:213 msgid "gv" msgstr "" #: ../../util/wmgenmenu.h:214 msgid "ePDFView" msgstr "" #: ../../util/wmgenmenu.h:215 msgid "GGv" msgstr "" #: ../../util/wmgenmenu.h:216 msgid "Xdvi" msgstr "" #: ../../util/wmgenmenu.h:217 msgid "KDVI" msgstr "" #: ../../util/wmgenmenu.h:218 msgid "Xpdf" msgstr "" #: ../../util/wmgenmenu.h:219 msgid "Adobe Reader" msgstr "" #: ../../util/wmgenmenu.h:220 msgid "Gless" msgstr "" #: ../../util/wmgenmenu.h:225 msgid "Google Desktop" msgstr "" #: ../../util/wmgenmenu.h:226 msgid "K3B" msgstr "" #: ../../util/wmgenmenu.h:227 msgid "X-CD-Roast" msgstr "" #: ../../util/wmgenmenu.h:228 msgid "Nero Linux" msgstr "" #: ../../util/wmgenmenu.h:229 msgid "Nero Linux Express" msgstr "" #: ../../util/wmgenmenu.h:230 msgid "gtkfind" msgstr "" #: ../../util/wmgenmenu.h:231 msgid "gdict" msgstr "" #: ../../util/wmgenmenu.h:232 msgid "gpsdrive" msgstr "" #: ../../util/wmgenmenu.h:233 msgid "Task Coach" msgstr "" #: ../../util/wmgenmenu.h:234 msgid "XSnap" msgstr "" #: ../../util/wmgenmenu.h:235 msgid "Screengrab" msgstr "" #: ../../util/wmgenmenu.h:236 msgid "XSane" msgstr "" #: ../../util/wmgenmenu.h:237 msgid "wfcmgr" msgstr "" #: ../../util/wmgenmenu.h:238 msgid "switch" msgstr "" #: ../../util/wmgenmenu.h:239 msgid "Cairo Clock" msgstr "" #: ../../util/wmgenmenu.h:240 msgid "Conky" msgstr "" #: ../../util/wmgenmenu.h:241 msgid "GNU Privacy Assistant" msgstr "" #: ../../util/wmgenmenu.h:242 msgid "Vidalia (tor)" msgstr "" #: ../../util/wmgenmenu.h:243 msgid "kaddressbook" msgstr "" #: ../../util/wmgenmenu.h:244 msgid "kab" msgstr "" #: ../../util/wmgenmenu.h:245 msgid "Filezilla" msgstr "" #: ../../util/wmgenmenu.h:246 msgid "Bleachbit" msgstr "" #: ../../util/wmgenmenu.h:247 msgid "Teamviewer" msgstr "" #: ../../util/wmgenmenu.h:248 msgid "gUVCView" msgstr "" #: ../../util/wmgenmenu.h:249 msgid "LinPopUp" msgstr "" #: ../../util/wmgenmenu.h:250 msgid "Wine Configurator" msgstr "" #: ../../util/wmgenmenu.h:251 msgid "NMap" msgstr "" #: ../../util/wmgenmenu.h:252 msgid "Hydra" msgstr "" #: ../../util/wmgenmenu.h:253 msgid "XTeddy" msgstr "" #: ../../util/wmgenmenu.h:254 msgid "XTeddy TEST" msgstr "" #: ../../util/wmgenmenu.h:255 msgid "VNC Viewer" msgstr "" #: ../../util/wmgenmenu.h:256 msgid "Java Control Panel" msgstr "" #: ../../util/wmgenmenu.h:257 msgid "kfind" msgstr "" #: ../../util/wmgenmenu.h:258 msgid "oclock" msgstr "" #: ../../util/wmgenmenu.h:259 msgid "rclock" msgstr "" #: ../../util/wmgenmenu.h:260 msgid "Isomaster" msgstr "" #: ../../util/wmgenmenu.h:261 msgid "xclock" msgstr "" #: ../../util/wmgenmenu.h:262 msgid "HP Systray" msgstr "" #: ../../util/wmgenmenu.h:263 msgid "kppp" msgstr "" #: ../../util/wmgenmenu.h:264 msgid "Xarchiver" msgstr "" #: ../../util/wmgenmenu.h:273 msgid "Pidgin" msgstr "" #: ../../util/wmgenmenu.h:274 msgid "Skype" msgstr "" #: ../../util/wmgenmenu.h:275 msgid "Gizmo" msgstr "" #: ../../util/wmgenmenu.h:276 msgid "Gajim" msgstr "" #: ../../util/wmgenmenu.h:277 msgid "Kopete" msgstr "" #: ../../util/wmgenmenu.h:278 msgid "XChat" msgstr "" #: ../../util/wmgenmenu.h:279 msgid "Ekiga" msgstr "" #: ../../util/wmgenmenu.h:280 msgid "KVIrc" msgstr "" #: ../../util/wmgenmenu.h:281 msgid "BitchX" msgstr "" #: ../../util/wmgenmenu.h:282 msgid "EPIC" msgstr "" #: ../../util/wmgenmenu.h:283 msgid "Linphone" msgstr "" #: ../../util/wmgenmenu.h:284 msgid "Mumble" msgstr "" #: ../../util/wmgenmenu.h:285 msgid "EPIC4" msgstr "" #: ../../util/wmgenmenu.h:286 msgid "Irssi" msgstr "" #: ../../util/wmgenmenu.h:287 msgid "TinyIRC" msgstr "" #: ../../util/wmgenmenu.h:288 msgid "Ksirc" msgstr "" #: ../../util/wmgenmenu.h:289 msgid "gtalk" msgstr "" #: ../../util/wmgenmenu.h:290 msgid "GnomeICU" msgstr "" #: ../../util/wmgenmenu.h:291 msgid "Licq" msgstr "" #: ../../util/wmgenmenu.h:292 msgid "aMSN" msgstr "" #: ../../util/wmgenmenu.h:297 msgid "aMule" msgstr "" #: ../../util/wmgenmenu.h:298 msgid "gFTP" msgstr "" #: ../../util/wmgenmenu.h:299 msgid "Smb4K" msgstr "" #: ../../util/wmgenmenu.h:300 msgid "KTorrent" msgstr "" #: ../../util/wmgenmenu.h:301 msgid "BitTorrent GUI" msgstr "" #: ../../util/wmgenmenu.h:302 msgid "Transmission GTK" msgstr "" #: ../../util/wmgenmenu.h:303 msgid "ftp" msgstr "" #: ../../util/wmgenmenu.h:304 msgid "Deluge" msgstr "" #: ../../util/wmgenmenu.h:305 msgid "sftp" msgstr "" #: ../../util/wmgenmenu.h:306 msgid "Pavuk" msgstr "" #: ../../util/wmgenmenu.h:307 msgid "gtm" msgstr "" #: ../../util/wmgenmenu.h:308 msgid "Gnut" msgstr "" #: ../../util/wmgenmenu.h:309 msgid "GTK Gnutella" msgstr "" #: ../../util/wmgenmenu.h:310 msgid "Gnutmeg" msgstr "" #: ../../util/wmgenmenu.h:315 msgid "FlightGear Flight Simulator" msgstr "" #: ../../util/wmgenmenu.h:316 msgid "Tremulous" msgstr "" #: ../../util/wmgenmenu.h:317 msgid "XBoard" msgstr "" #: ../../util/wmgenmenu.h:318 msgid "GNOME Chess" msgstr "" #: ../../util/wmgenmenu.h:319 msgid "Darkplaces (Quake 1)" msgstr "" #: ../../util/wmgenmenu.h:320 msgid "QuakeSpasm (Quake 1)" msgstr "" #: ../../util/wmgenmenu.h:321 msgid "Quake 2" msgstr "" #: ../../util/wmgenmenu.h:322 msgid "KM Quake 2 (Quake 2" msgstr "" #: ../../util/wmgenmenu.h:323 msgid "QMax (Quake 2" msgstr "" #: ../../util/wmgenmenu.h:324 msgid "Quake 3" msgstr "" #: ../../util/wmgenmenu.h:325 msgid "Quake 4" msgstr "" #: ../../util/wmgenmenu.h:326 msgid "Quake 4 SMP" msgstr "" #: ../../util/wmgenmenu.h:327 msgid "Openarena" msgstr "" #: ../../util/wmgenmenu.h:328 msgid "Quake 3: Urban Terror 2" msgstr "" #: ../../util/wmgenmenu.h:329 msgid "Soldier of Fortune" msgstr "" #: ../../util/wmgenmenu.h:330 msgid "Rune" msgstr "" #: ../../util/wmgenmenu.h:331 msgid "Doom 3" msgstr "" #: ../../util/wmgenmenu.h:332 msgid "Zelda Solarus" msgstr "" #: ../../util/wmgenmenu.h:333 msgid "Solarwolf" msgstr "" #: ../../util/wmgenmenu.h:334 msgid "Pachi" msgstr "" #: ../../util/wmgenmenu.h:335 msgid "Tribes 2" msgstr "" #: ../../util/wmgenmenu.h:336 msgid "GNUjump" msgstr "" #: ../../util/wmgenmenu.h:337 msgid "Supertransball 2" msgstr "" #: ../../util/wmgenmenu.h:338 msgid "Supertux" msgstr "" #: ../../util/wmgenmenu.h:339 msgid "Supertux 2" msgstr "" #: ../../util/wmgenmenu.h:340 msgid "Mega Mario" msgstr "" #: ../../util/wmgenmenu.h:341 msgid "Frogatto" msgstr "" #: ../../util/wmgenmenu.h:342 msgid "Minecraft" msgstr "" #: ../../util/wmgenmenu.h:343 msgid "Alienarena" msgstr "" #: ../../util/wmgenmenu.h:344 msgid "Nexuiz" msgstr "" #: ../../util/wmgenmenu.h:345 msgid "Bomberclone" msgstr "" #: ../../util/wmgenmenu.h:346 msgid "Chromium-BSU" msgstr "" #: ../../util/wmgenmenu.h:347 msgid "Clanbomber" msgstr "" #: ../../util/wmgenmenu.h:348 msgid "Clanbomber 2" msgstr "" #: ../../util/wmgenmenu.h:349 msgid "Defendguin" msgstr "" #: ../../util/wmgenmenu.h:350 msgid "Dosbox" msgstr "" #: ../../util/wmgenmenu.h:351 msgid "Duke Nukem 3D" msgstr "" #: ../../util/wmgenmenu.h:352 msgid "eDuke32" msgstr "" #: ../../util/wmgenmenu.h:353 msgid "Emilia Pinball" msgstr "" #: ../../util/wmgenmenu.h:354 msgid "Extreme-Tuxracer" msgstr "" #: ../../util/wmgenmenu.h:355 msgid "Freedroid RPG" msgstr "" #: ../../util/wmgenmenu.h:356 msgid "Frozen Bubble" msgstr "" #: ../../util/wmgenmenu.h:357 msgid "Frozen Bubble Editor" msgstr "" #: ../../util/wmgenmenu.h:358 msgid "GL 117" msgstr "" #: ../../util/wmgenmenu.h:359 msgid "LBreakout 2" msgstr "" #: ../../util/wmgenmenu.h:360 msgid "Legends" msgstr "" #: ../../util/wmgenmenu.h:361 msgid "Lincity-NG" msgstr "" #: ../../util/wmgenmenu.h:362 msgid "Neverball" msgstr "" #: ../../util/wmgenmenu.h:363 msgid "Neverput" msgstr "" #: ../../util/wmgenmenu.h:364 msgid "Openastromenace" msgstr "" #: ../../util/wmgenmenu.h:365 msgid "Penguin Command" msgstr "" #: ../../util/wmgenmenu.h:366 msgid "Powermanga" msgstr "" #: ../../util/wmgenmenu.h:367 msgid "Return to Castle Wolfenstein SP" msgstr "" #: ../../util/wmgenmenu.h:368 msgid "Return to Castle Wolfenstein MP" msgstr "" #: ../../util/wmgenmenu.h:369 msgid "Snes9X" msgstr "" #: ../../util/wmgenmenu.h:370 msgid "Slune" msgstr "" #: ../../util/wmgenmenu.h:371 msgid "Torcs" msgstr "" #: ../../util/wmgenmenu.h:372 msgid "Speed Dreams" msgstr "" #: ../../util/wmgenmenu.h:373 msgid "Trackballs" msgstr "" #: ../../util/wmgenmenu.h:374 msgid "VDrift" msgstr "" #: ../../util/wmgenmenu.h:375 msgid "Warmux" msgstr "" #: ../../util/wmgenmenu.h:376 msgid "Warsow" msgstr "" #: ../../util/wmgenmenu.h:377 msgid "Wesnoth" msgstr "" #: ../../util/wmgenmenu.h:378 msgid "World of Padman" msgstr "" #: ../../util/wmgenmenu.h:379 msgid "XBlast" msgstr "" #: ../../util/wmgenmenu.h:380 msgid "XPenguins" msgstr "" #: ../../util/wmgenmenu.h:381 msgid "XTux" msgstr "" #: ../../util/wmgenmenu.h:382 ../../util/wmgenmenu.h:383 msgid "The Mana World" msgstr "" #: ../../util/wmgenmenu.h:384 msgid "Super Mario Chronicles" msgstr "" #: ../../util/wmgenmenu.h:385 msgid "Unreal" msgstr "" #: ../../util/wmgenmenu.h:386 msgid "Unreal Tournament" msgstr "" #: ../../util/wmgenmenu.h:387 msgid "Unreal Tournament 2004" msgstr "" #: ../../util/wmgenmenu.h:388 msgid "Xonotic" msgstr "" #: ../../util/wmgenmenu.h:389 msgid "Descent 3" msgstr "" #: ../../util/wmgenmenu.h:390 msgid "Myth 2" msgstr "" #: ../../util/wmgenmenu.h:391 ../../util/wmgenmenu.h:392 #: ../../util/wmgenmenu.h:393 msgid "Sauerbraten" msgstr "" #: ../../util/wmgenmenu.h:394 msgid "Railroad Tycoon 2" msgstr "" #: ../../util/wmgenmenu.h:395 msgid "Heretic 2" msgstr "" #: ../../util/wmgenmenu.h:396 msgid "Kohan" msgstr "" #: ../../util/wmgenmenu.h:397 msgid "XQF" msgstr "" #: ../../util/wmgenmenu.h:402 msgid "OpenOffice.org Writer" msgstr "" #: ../../util/wmgenmenu.h:403 msgid "OpenOffice.org Calc" msgstr "" #: ../../util/wmgenmenu.h:404 msgid "OpenOffice.org Draw" msgstr "" #: ../../util/wmgenmenu.h:405 msgid "OpenOffice.org Impress" msgstr "" #: ../../util/wmgenmenu.h:406 msgid "OpenOffice.org Math" msgstr "" #: ../../util/wmgenmenu.h:407 msgid "OpenOffice.org" msgstr "" #: ../../util/wmgenmenu.h:408 msgid "StarOffice Writer" msgstr "" #: ../../util/wmgenmenu.h:409 msgid "StarOffice Calc" msgstr "" #: ../../util/wmgenmenu.h:410 msgid "StarOffice Draw" msgstr "" #: ../../util/wmgenmenu.h:411 msgid "StarOffice Impress" msgstr "" #: ../../util/wmgenmenu.h:412 msgid "StarOffice Math" msgstr "" #: ../../util/wmgenmenu.h:413 msgid "StarOffice" msgstr "" #: ../../util/wmgenmenu.h:414 msgid "LibreOffice Writer" msgstr "" #: ../../util/wmgenmenu.h:415 msgid "LibreOffice Calc" msgstr "" #: ../../util/wmgenmenu.h:416 msgid "LibreOffice Draw" msgstr "" #: ../../util/wmgenmenu.h:417 msgid "LibreOffice Impress" msgstr "" #: ../../util/wmgenmenu.h:418 msgid "LibreOffice Math" msgstr "" #: ../../util/wmgenmenu.h:419 msgid "LibreOffice Base" msgstr "" #: ../../util/wmgenmenu.h:420 msgid "LibreOffice Web" msgstr "" #: ../../util/wmgenmenu.h:421 msgid "LibreOffice" msgstr "" #: ../../util/wmgenmenu.h:422 msgid "AbiWord" msgstr "" #: ../../util/wmgenmenu.h:423 msgid "KWord" msgstr "" #: ../../util/wmgenmenu.h:424 msgid "KPresenter" msgstr "" #: ../../util/wmgenmenu.h:425 msgid "KSpread" msgstr "" #: ../../util/wmgenmenu.h:426 msgid "KChart" msgstr "" #: ../../util/wmgenmenu.h:427 msgid "KOrganizer" msgstr "" #: ../../util/wmgenmenu.h:428 msgid "LyX" msgstr "" #: ../../util/wmgenmenu.h:429 msgid "Klyx" msgstr "" #: ../../util/wmgenmenu.h:430 msgid "GnuCash" msgstr "" #: ../../util/wmgenmenu.h:431 msgid "Gnumeric" msgstr "" #: ../../util/wmgenmenu.h:432 msgid "GnomeCal" msgstr "" #: ../../util/wmgenmenu.h:433 msgid "GnomeCard" msgstr "" #: ../../util/wmgenmenu.h:438 msgid "gitk" msgstr "" #: ../../util/wmgenmenu.h:439 msgid "gitview" msgstr "" #: ../../util/wmgenmenu.h:440 msgid "qgit" msgstr "" #: ../../util/wmgenmenu.h:441 msgid "git-gui" msgstr "" #: ../../util/wmgenmenu.h:442 msgid "glimmer" msgstr "" #: ../../util/wmgenmenu.h:443 msgid "glade" msgstr "" #: ../../util/wmgenmenu.h:444 msgid "Geany" msgstr "" #: ../../util/wmgenmenu.h:445 msgid "Codeblocks" msgstr "" #: ../../util/wmgenmenu.h:446 msgid "kdevelop" msgstr "" #: ../../util/wmgenmenu.h:447 msgid "designer" msgstr "" #: ../../util/wmgenmenu.h:448 msgid "kbabel" msgstr "" #: ../../util/wmgenmenu.h:449 msgid "idle" msgstr "" #: ../../util/wmgenmenu.h:450 msgid "ghex" msgstr "" #: ../../util/wmgenmenu.h:451 msgid "hexedit" msgstr "" #: ../../util/wmgenmenu.h:452 msgid "memprof" msgstr "" #: ../../util/wmgenmenu.h:453 msgid "tclsh" msgstr "" #: ../../util/wmgenmenu.h:454 msgid "gdb" msgstr "" #: ../../util/wmgenmenu.h:455 msgid "xxgdb" msgstr "" #: ../../util/wmgenmenu.h:456 msgid "xev" msgstr "" #: ../../util/wmgenmenu.h:461 msgid "Iotop" msgstr "" #: ../../util/wmgenmenu.h:462 msgid "Iostat" msgstr "" #: ../../util/wmgenmenu.h:463 msgid "keybconf" msgstr "" #: ../../util/wmgenmenu.h:464 msgid "GNOME System Monitor" msgstr "" #: ../../util/wmgenmenu.h:465 msgid "top" msgstr "" #: ../../util/wmgenmenu.h:466 msgid "KDE Process Monitor" msgstr "" #: ../../util/wmgenmenu.h:467 msgid "gw" msgstr "" #: ../../util/wmgenmenu.h:468 msgid "GNOME Control Center" msgstr "" #: ../../util/wmgenmenu.h:469 msgid "GKrellM" msgstr "" #: ../../util/wmgenmenu.h:470 msgid "tksysv" msgstr "" #: ../../util/wmgenmenu.h:471 msgid "ksysv" msgstr "" #: ../../util/wmgenmenu.h:472 msgid "GNOME PPP" msgstr "" #: ../../util/wmgenmenu.h:477 msgid "YaST 2" msgstr "" #: ../../util/wmgenmenu.h:478 msgid "YaST" msgstr "" #: ../../util/wmgenmenu.h:479 msgid "System Settings" msgstr "" #: ../../util/wmgenmenu.h:480 msgid "UMTSMon" msgstr "" #: ../../util/wmgenmenu.h:485 msgid "DrakNetCenter" msgstr "" #: ../../util/wmgenmenu.h:486 msgid "RPMDrake" msgstr "" #: ../../util/wmgenmenu.h:487 msgid "HardDrake" msgstr "" #: ../../util/wmgenmenu.h:488 msgid "DrakConf" msgstr "" #: ../../util/wmgenmenu.h:489 msgid "MandrakeUpdate" msgstr "" #: ../../util/wmgenmenu.h:490 msgid "XDrakRes" msgstr "" #: ../../util/wmgenmenu.h:495 msgid "Docker" msgstr "" #: ../../util/wmgenmenu.h:496 msgid "Net" msgstr "" #: ../../util/wmgenmenu.h:497 msgid "Net Load" msgstr "" #: ../../util/wmgenmenu.h:498 ../../util/wmgenmenu.h:499 msgid "Ping" msgstr "" #: ../../util/wmgenmenu.h:500 ../../util/wmgenmenu.h:543 msgid "Power" msgstr "" #: ../../util/wmgenmenu.h:502 msgid "Harddisk Monitor" msgstr "" #: ../../util/wmgenmenu.h:503 msgid "Download" msgstr "" #: ../../util/wmgenmenu.h:504 msgid "Dots" msgstr "" #: ../../util/wmgenmenu.h:505 msgid "Matrix" msgstr "" #: ../../util/wmgenmenu.h:506 msgid "Fire" msgstr "" #: ../../util/wmgenmenu.h:507 msgid "Net send" msgstr "" #: ../../util/wmgenmenu.h:508 msgid "Laptop" msgstr "" #: ../../util/wmgenmenu.h:509 msgid "WiFi" msgstr "" #: ../../util/wmgenmenu.h:510 msgid "Interface Info" msgstr "" #: ../../util/wmgenmenu.h:511 ../../util/wmgenmenu.h:512 #: ../../util/wmgenmenu.h:517 msgid "Weather" msgstr "" #: ../../util/wmgenmenu.h:513 msgid "Sticky Notes" msgstr "" #: ../../util/wmgenmenu.h:514 msgid "Pinboard" msgstr "" #: ../../util/wmgenmenu.h:515 ../../util/wmgenmenu.h:516 msgid "Mixer" msgstr "" #: ../../util/wmgenmenu.h:518 msgid "CPU Load" msgstr "" #: ../../util/wmgenmenu.h:519 msgid "CPU Freq" msgstr "" #: ../../util/wmgenmenu.h:520 msgid "Memory Load" msgstr "" #: ../../util/wmgenmenu.h:521 msgid "Memory Free" msgstr "" #: ../../util/wmgenmenu.h:522 msgid "Memory Monitor" msgstr "" #: ../../util/wmgenmenu.h:523 msgid "Clock Mon" msgstr "" #: ../../util/wmgenmenu.h:524 msgid "Network Devices" msgstr "" #: ../../util/wmgenmenu.h:525 msgid "Calendar & Clock" msgstr "" #: ../../util/wmgenmenu.h:526 msgid "Time" msgstr "" #: ../../util/wmgenmenu.h:527 msgid "Date" msgstr "" #: ../../util/wmgenmenu.h:528 msgid "Time & Date" msgstr "" #: ../../util/wmgenmenu.h:529 ../../util/wmgenmenu.h:530 msgid "System Monitor" msgstr "" #: ../../util/wmgenmenu.h:531 msgid "Sensor Monitor" msgstr "" #: ../../util/wmgenmenu.h:532 ../../util/wmgenmenu.h:533 msgid "System Tray" msgstr "" #: ../../util/wmgenmenu.h:534 msgid "SMP Monitor" msgstr "" #: ../../util/wmgenmenu.h:535 msgid "Timer" msgstr "" #: ../../util/wmgenmenu.h:536 ../../util/wmgenmenu.h:537 msgid "Mounter" msgstr "" #: ../../util/wmgenmenu.h:538 msgid "Uptime" msgstr "" #: ../../util/wmgenmenu.h:539 msgid "Work Timer" msgstr "" #: ../../util/wmgenmenu.h:540 msgid "Interfaces" msgstr "" #: ../../util/wmgenmenu.h:541 msgid "Button" msgstr "" #: ../../util/wmgenmenu.h:542 msgid "xmms" msgstr "" #: ../../util/wmgenmenu.h:544 msgid "Magnify" msgstr "" #: ../../util/wmgenmenu.h:549 msgid "IceWM" msgstr "" #: ../../util/wmgenmenu.h:550 msgid "KWin" msgstr "" #: ../../util/wmgenmenu.h:551 msgid "twm" msgstr "" #: ../../util/wmgenmenu.h:552 msgid "Fluxbox" msgstr "" #: ../../util/wmgenmenu.h:553 msgid "Blackbox" msgstr "" #: ../../util/wmgenmenu.h:554 msgid "Ion" msgstr "" #: ../../util/wmgenmenu.h:555 msgid "Motif Window Manager" msgstr "" #: ../../util/wmgenmenu.h:556 msgid "FVWM" msgstr "" #: ../../util/wmgenmenu.h:557 msgid "FVWM-Crystal" msgstr "" ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/util/Makefile.in�����������������������������������������������������������������0000644�0001750�0001750�00000114450�13642360054�014020� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = wxcopy$(EXEEXT) wxpaste$(EXEEXT) wdwrite$(EXEEXT) \ wdread$(EXEEXT) getstyle$(EXEEXT) setstyle$(EXEEXT) \ convertfonts$(EXEEXT) seticons$(EXEEXT) geticonset$(EXEEXT) \ wmsetbg$(EXEEXT) wmagnify$(EXEEXT) wmgenmenu$(EXEEXT) \ wmmenugen$(EXEEXT) wmiv$(EXEEXT) subdir = util ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ $(top_srcdir)/m4/ax_pthread.m4 \ $(top_srcdir)/m4/ld-version-script.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/windowmaker.m4 \ $(top_srcdir)/m4/wm_attributes.m4 \ $(top_srcdir)/m4/wm_cflags_check.m4 \ $(top_srcdir)/m4/wm_i18n.m4 \ $(top_srcdir)/m4/wm_imgfmt_check.m4 \ $(top_srcdir)/m4/wm_libexif.m4 $(top_srcdir)/m4/wm_libmath.m4 \ $(top_srcdir)/m4/wm_prog_cc_c11.m4 \ $(top_srcdir)/m4/wm_xext_check.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) am_convertfonts_OBJECTS = convertfonts.$(OBJEXT) fontconv.$(OBJEXT) convertfonts_OBJECTS = $(am_convertfonts_OBJECTS) am__DEPENDENCIES_1 = convertfonts_DEPENDENCIES = $(top_builddir)/WINGs/libWUtil.la \ $(am__DEPENDENCIES_1) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = geticonset_SOURCES = geticonset.c geticonset_OBJECTS = geticonset.$(OBJEXT) geticonset_DEPENDENCIES = $(top_builddir)/WINGs/libWUtil.la \ $(am__DEPENDENCIES_1) am_getstyle_OBJECTS = getstyle.$(OBJEXT) fontconv.$(OBJEXT) getstyle_OBJECTS = $(am_getstyle_OBJECTS) getstyle_DEPENDENCIES = $(top_builddir)/WINGs/libWUtil.la \ $(am__DEPENDENCIES_1) seticons_SOURCES = seticons.c seticons_OBJECTS = seticons.$(OBJEXT) seticons_DEPENDENCIES = $(top_builddir)/WINGs/libWUtil.la \ $(am__DEPENDENCIES_1) am_setstyle_OBJECTS = setstyle.$(OBJEXT) fontconv.$(OBJEXT) setstyle_OBJECTS = $(am_setstyle_OBJECTS) setstyle_DEPENDENCIES = $(top_builddir)/WINGs/libWUtil.la \ $(am__DEPENDENCIES_1) wdread_SOURCES = wdread.c wdread_OBJECTS = wdread.$(OBJEXT) wdread_DEPENDENCIES = $(top_builddir)/WINGs/libWUtil.la \ $(am__DEPENDENCIES_1) wdwrite_SOURCES = wdwrite.c wdwrite_OBJECTS = wdwrite.$(OBJEXT) wdwrite_DEPENDENCIES = $(top_builddir)/WINGs/libWUtil.la \ $(am__DEPENDENCIES_1) wmagnify_SOURCES = wmagnify.c wmagnify_OBJECTS = wmagnify.$(OBJEXT) wmagnify_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.la \ $(top_builddir)/WINGs/libWUtil.la \ $(top_builddir)/wrlib/libwraster.la am_wmgenmenu_OBJECTS = wmgenmenu.$(OBJEXT) wmgenmenu_OBJECTS = $(am_wmgenmenu_OBJECTS) wmgenmenu_DEPENDENCIES = $(top_builddir)/WINGs/libWUtil.la am_wmiv_OBJECTS = wmiv.$(OBJEXT) wmiv_OBJECTS = $(am_wmiv_OBJECTS) wmiv_DEPENDENCIES = $(top_builddir)/wrlib/libwraster.la \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) am_wmmenugen_OBJECTS = wmmenugen.$(OBJEXT) wmmenugen_misc.$(OBJEXT) \ wmmenugen_parse_wmconfig.$(OBJEXT) \ wmmenugen_parse_xdg.$(OBJEXT) wmmenugen_OBJECTS = $(am_wmmenugen_OBJECTS) wmmenugen_DEPENDENCIES = $(top_builddir)/WINGs/libWUtil.la wmsetbg_SOURCES = wmsetbg.c wmsetbg_OBJECTS = wmsetbg.$(OBJEXT) wmsetbg_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.la \ $(top_builddir)/WINGs/libWUtil.la \ $(top_builddir)/wrlib/libwraster.la wxcopy_SOURCES = wxcopy.c wxcopy_OBJECTS = wxcopy.$(OBJEXT) wxcopy_DEPENDENCIES = wxpaste_SOURCES = wxpaste.c wxpaste_OBJECTS = wxpaste.$(OBJEXT) wxpaste_DEPENDENCIES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } SCRIPTS = $(bin_SCRIPTS) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/convertfonts.Po \ ./$(DEPDIR)/fontconv.Po ./$(DEPDIR)/geticonset.Po \ ./$(DEPDIR)/getstyle.Po ./$(DEPDIR)/seticons.Po \ ./$(DEPDIR)/setstyle.Po ./$(DEPDIR)/wdread.Po \ ./$(DEPDIR)/wdwrite.Po ./$(DEPDIR)/wmagnify.Po \ ./$(DEPDIR)/wmgenmenu.Po ./$(DEPDIR)/wmiv.Po \ ./$(DEPDIR)/wmmenugen.Po ./$(DEPDIR)/wmmenugen_misc.Po \ ./$(DEPDIR)/wmmenugen_parse_wmconfig.Po \ ./$(DEPDIR)/wmmenugen_parse_xdg.Po ./$(DEPDIR)/wmsetbg.Po \ ./$(DEPDIR)/wxcopy.Po ./$(DEPDIR)/wxpaste.Po am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(convertfonts_SOURCES) geticonset.c $(getstyle_SOURCES) \ seticons.c $(setstyle_SOURCES) wdread.c wdwrite.c wmagnify.c \ $(wmgenmenu_SOURCES) $(wmiv_SOURCES) $(wmmenugen_SOURCES) \ wmsetbg.c wxcopy.c wxpaste.c DIST_SOURCES = $(convertfonts_SOURCES) geticonset.c \ $(getstyle_SOURCES) seticons.c $(setstyle_SOURCES) wdread.c \ wdwrite.c wmagnify.c $(wmgenmenu_SOURCES) $(wmiv_SOURCES) \ $(wmmenugen_SOURCES) wmsetbg.c wxcopy.c wxpaste.c RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir distdir-am am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp README DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" pkgdatadir = $(datadir)/@PACKAGE@ ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ GFXLIBS = @GFXLIBS@ GREP = @GREP@ HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLIBS = @INTLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBBSD = @LIBBSD@ LIBEXIF = @LIBEXIF@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXINERAMA = @LIBXINERAMA@ LIBXMU = @LIBXMU@ LIBXRANDR = @LIBXRANDR@ LINGUAS = @LINGUAS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAGICKFLAGS = @MAGICKFLAGS@ MAGICKLIBS = @MAGICKLIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MANLANGDIRS = @MANLANGDIRS@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOLIBS = @PANGOLIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILMOFILES = @UTILMOFILES@ VERSION = @VERSION@ WINGSMOFILES = @WINGSMOFILES@ WINGS_VERSION = @WINGS_VERSION@ WMAKERMOFILES = @WMAKERMOFILES@ WPREFSMOFILES = @WPREFSMOFILES@ WRASTER_VERSION = @WRASTER_VERSION@ WUTIL_VERSION = @WUTIL_VERSION@ XCFLAGS = @XCFLAGS@ XFTCONFIG = @XFTCONFIG@ XFTFLAGS = @XFTFLAGS@ XFTLIBS = @XFTLIBS@ XGETTEXT = @XGETTEXT@ XLFLAGS = @XLFLAGS@ XLIBS = @XLIBS@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBRARY_PATH = @X_LIBRARY_PATH@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ defsdatadir = @defsdatadir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ inc_search_path = @inc_search_path@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lcov_output_directory = @lcov_output_directory@ lib_search_path = @lib_search_path@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pixmapdir = @pixmapdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ wprefs_bindir = @wprefs_bindir@ wprefs_datadir = @wprefs_datadir@ SUBDIRS = po AUTOMAKE_OPTIONS = bin_SCRIPTS = wmaker.inst wm-oldmenu2new wkdemenu.pl EXTRA_DIST = wmaker.inst.in bughint wm-oldmenu2new wkdemenu.pl AM_CPPFLAGS = \ $(DFLAGS) -I$(top_srcdir)/WINGs -I$(top_srcdir)/wrlib \ @HEADER_SEARCH_PATH@ \ -DETCDIR=\"sysconfdir\" -DDATADIR=\"pkgdatadir\" liblist = @LIBRARY_SEARCH_PATH@ @INTLIBS@ wdwrite_LDADD = $(top_builddir)/WINGs/libWUtil.la $(liblist) wdread_LDADD = $(top_builddir)/WINGs/libWUtil.la $(liblist) wxcopy_LDADD = @XLFLAGS@ @XLIBS@ wxpaste_LDADD = @XLFLAGS@ @XLIBS@ getstyle_LDADD = $(top_builddir)/WINGs/libWUtil.la $(liblist) getstyle_SOURCES = getstyle.c fontconv.c common.h setstyle_LDADD = \ $(top_builddir)/WINGs/libWUtil.la \ @XLFLAGS@ @XLIBS@ $(liblist) setstyle_SOURCES = setstyle.c fontconv.c common.h convertfonts_LDADD = $(top_builddir)/WINGs/libWUtil.la $(liblist) convertfonts_SOURCES = convertfonts.c fontconv.c common.h seticons_LDADD = $(top_builddir)/WINGs/libWUtil.la $(liblist) geticonset_LDADD = $(top_builddir)/WINGs/libWUtil.la $(liblist) wmagnify_LDADD = \ $(top_builddir)/WINGs/libWINGs.la \ $(top_builddir)/WINGs/libWUtil.la \ $(top_builddir)/wrlib/libwraster.la \ @XLFLAGS@ @XLIBS@ @INTLIBS@ wmsetbg_LDADD = \ $(top_builddir)/WINGs/libWINGs.la \ $(top_builddir)/WINGs/libWUtil.la \ $(top_builddir)/wrlib/libwraster.la \ @XLFLAGS@ @LIBXINERAMA@ @XLIBS@ @INTLIBS@ wmgenmenu_LDADD = \ $(top_builddir)/WINGs/libWUtil.la \ @INTLIBS@ wmgenmenu_SOURCES = wmgenmenu.c wmgenmenu.h wmmenugen_LDADD = \ $(top_builddir)/WINGs/libWUtil.la \ @INTLIBS@ wmmenugen_SOURCES = wmmenugen.c wmmenugen.h wmmenugen_misc.c \ wmmenugen_parse_wmconfig.c \ wmmenugen_parse_xdg.c wmiv_LDADD = \ $(top_builddir)/wrlib/libwraster.la \ @XLFLAGS@ @XLIBS@ \ @GFXLIBS@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) $(LIBEXIF) wmiv_SOURCES = wmiv.c wmiv.h CLEANFILES = wmaker.inst all: all-recursive .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu util/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu util/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ || test -f $$p1 \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list convertfonts$(EXEEXT): $(convertfonts_OBJECTS) $(convertfonts_DEPENDENCIES) $(EXTRA_convertfonts_DEPENDENCIES) @rm -f convertfonts$(EXEEXT) $(AM_V_CCLD)$(LINK) $(convertfonts_OBJECTS) $(convertfonts_LDADD) $(LIBS) geticonset$(EXEEXT): $(geticonset_OBJECTS) $(geticonset_DEPENDENCIES) $(EXTRA_geticonset_DEPENDENCIES) @rm -f geticonset$(EXEEXT) $(AM_V_CCLD)$(LINK) $(geticonset_OBJECTS) $(geticonset_LDADD) $(LIBS) getstyle$(EXEEXT): $(getstyle_OBJECTS) $(getstyle_DEPENDENCIES) $(EXTRA_getstyle_DEPENDENCIES) @rm -f getstyle$(EXEEXT) $(AM_V_CCLD)$(LINK) $(getstyle_OBJECTS) $(getstyle_LDADD) $(LIBS) seticons$(EXEEXT): $(seticons_OBJECTS) $(seticons_DEPENDENCIES) $(EXTRA_seticons_DEPENDENCIES) @rm -f seticons$(EXEEXT) $(AM_V_CCLD)$(LINK) $(seticons_OBJECTS) $(seticons_LDADD) $(LIBS) setstyle$(EXEEXT): $(setstyle_OBJECTS) $(setstyle_DEPENDENCIES) $(EXTRA_setstyle_DEPENDENCIES) @rm -f setstyle$(EXEEXT) $(AM_V_CCLD)$(LINK) $(setstyle_OBJECTS) $(setstyle_LDADD) $(LIBS) wdread$(EXEEXT): $(wdread_OBJECTS) $(wdread_DEPENDENCIES) $(EXTRA_wdread_DEPENDENCIES) @rm -f wdread$(EXEEXT) $(AM_V_CCLD)$(LINK) $(wdread_OBJECTS) $(wdread_LDADD) $(LIBS) wdwrite$(EXEEXT): $(wdwrite_OBJECTS) $(wdwrite_DEPENDENCIES) $(EXTRA_wdwrite_DEPENDENCIES) @rm -f wdwrite$(EXEEXT) $(AM_V_CCLD)$(LINK) $(wdwrite_OBJECTS) $(wdwrite_LDADD) $(LIBS) wmagnify$(EXEEXT): $(wmagnify_OBJECTS) $(wmagnify_DEPENDENCIES) $(EXTRA_wmagnify_DEPENDENCIES) @rm -f wmagnify$(EXEEXT) $(AM_V_CCLD)$(LINK) $(wmagnify_OBJECTS) $(wmagnify_LDADD) $(LIBS) wmgenmenu$(EXEEXT): $(wmgenmenu_OBJECTS) $(wmgenmenu_DEPENDENCIES) $(EXTRA_wmgenmenu_DEPENDENCIES) @rm -f wmgenmenu$(EXEEXT) $(AM_V_CCLD)$(LINK) $(wmgenmenu_OBJECTS) $(wmgenmenu_LDADD) $(LIBS) wmiv$(EXEEXT): $(wmiv_OBJECTS) $(wmiv_DEPENDENCIES) $(EXTRA_wmiv_DEPENDENCIES) @rm -f wmiv$(EXEEXT) $(AM_V_CCLD)$(LINK) $(wmiv_OBJECTS) $(wmiv_LDADD) $(LIBS) wmmenugen$(EXEEXT): $(wmmenugen_OBJECTS) $(wmmenugen_DEPENDENCIES) $(EXTRA_wmmenugen_DEPENDENCIES) @rm -f wmmenugen$(EXEEXT) $(AM_V_CCLD)$(LINK) $(wmmenugen_OBJECTS) $(wmmenugen_LDADD) $(LIBS) wmsetbg$(EXEEXT): $(wmsetbg_OBJECTS) $(wmsetbg_DEPENDENCIES) $(EXTRA_wmsetbg_DEPENDENCIES) @rm -f wmsetbg$(EXEEXT) $(AM_V_CCLD)$(LINK) $(wmsetbg_OBJECTS) $(wmsetbg_LDADD) $(LIBS) wxcopy$(EXEEXT): $(wxcopy_OBJECTS) $(wxcopy_DEPENDENCIES) $(EXTRA_wxcopy_DEPENDENCIES) @rm -f wxcopy$(EXEEXT) $(AM_V_CCLD)$(LINK) $(wxcopy_OBJECTS) $(wxcopy_LDADD) $(LIBS) wxpaste$(EXEEXT): $(wxpaste_OBJECTS) $(wxpaste_DEPENDENCIES) $(EXTRA_wxpaste_DEPENDENCIES) @rm -f wxpaste$(EXEEXT) $(AM_V_CCLD)$(LINK) $(wxpaste_OBJECTS) $(wxpaste_LDADD) $(LIBS) install-binSCRIPTS: $(bin_SCRIPTS) @$(NORMAL_INSTALL) @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/convertfonts.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fontconv.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/geticonset.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getstyle.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seticons.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setstyle.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wdread.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wdwrite.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wmagnify.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wmgenmenu.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wmiv.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wmmenugen.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wmmenugen_misc.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wmmenugen_parse_wmconfig.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wmmenugen_parse_xdg.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wmsetbg.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wxcopy.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wxpaste.Po@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @echo '# dummy' >$@-t && $(am__mv) $@-t $@ am--depfiles: $(am__depfiles_remade) .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(PROGRAMS) $(SCRIPTS) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f ./$(DEPDIR)/convertfonts.Po -rm -f ./$(DEPDIR)/fontconv.Po -rm -f ./$(DEPDIR)/geticonset.Po -rm -f ./$(DEPDIR)/getstyle.Po -rm -f ./$(DEPDIR)/seticons.Po -rm -f ./$(DEPDIR)/setstyle.Po -rm -f ./$(DEPDIR)/wdread.Po -rm -f ./$(DEPDIR)/wdwrite.Po -rm -f ./$(DEPDIR)/wmagnify.Po -rm -f ./$(DEPDIR)/wmgenmenu.Po -rm -f ./$(DEPDIR)/wmiv.Po -rm -f ./$(DEPDIR)/wmmenugen.Po -rm -f ./$(DEPDIR)/wmmenugen_misc.Po -rm -f ./$(DEPDIR)/wmmenugen_parse_wmconfig.Po -rm -f ./$(DEPDIR)/wmmenugen_parse_xdg.Po -rm -f ./$(DEPDIR)/wmsetbg.Po -rm -f ./$(DEPDIR)/wxcopy.Po -rm -f ./$(DEPDIR)/wxpaste.Po -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-binPROGRAMS install-binSCRIPTS install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f ./$(DEPDIR)/convertfonts.Po -rm -f ./$(DEPDIR)/fontconv.Po -rm -f ./$(DEPDIR)/geticonset.Po -rm -f ./$(DEPDIR)/getstyle.Po -rm -f ./$(DEPDIR)/seticons.Po -rm -f ./$(DEPDIR)/setstyle.Po -rm -f ./$(DEPDIR)/wdread.Po -rm -f ./$(DEPDIR)/wdwrite.Po -rm -f ./$(DEPDIR)/wmagnify.Po -rm -f ./$(DEPDIR)/wmgenmenu.Po -rm -f ./$(DEPDIR)/wmiv.Po -rm -f ./$(DEPDIR)/wmmenugen.Po -rm -f ./$(DEPDIR)/wmmenugen_misc.Po -rm -f ./$(DEPDIR)/wmmenugen_parse_wmconfig.Po -rm -f ./$(DEPDIR)/wmmenugen_parse_xdg.Po -rm -f ./$(DEPDIR)/wmsetbg.Po -rm -f ./$(DEPDIR)/wxcopy.Po -rm -f ./$(DEPDIR)/wxpaste.Po -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--depfiles check check-am clean clean-binPROGRAMS \ clean-generic clean-libtool cscopelist-am ctags ctags-am \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-binPROGRAMS \ install-binSCRIPTS install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am uninstall-binPROGRAMS uninstall-binSCRIPTS .PRECIOUS: Makefile wmaker.inst: $(srcdir)/wmaker.inst.in ./Makefile $(AM_V_GEN)sed -e "s|#pkgdatadir#|$(pkgdatadir)|" \ -e "s|#sysconfdir#|$(sysconfdir)/WindowMaker|" \ -e "s|#version#|$(VERSION)|" \ -e "s|#bindir#|$(bindir)|" \ $(srcdir)/wmaker.inst.in >wmaker.inst ; \ chmod 755 wmaker.inst # 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. .NOEXPORT: ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/util/geticonset.c����������������������������������������������������������������0000644�0001750�0001750�00000006313�13431646202�014257� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* geticonset.c - outputs icon configuration from WindowMaker to stdout * * Window Maker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifdef __GLIBC__ #define _GNU_SOURCE /* getopt_long */ #endif #include "config.h" #include <getopt.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #ifdef HAVE_STDNORETURN #include <stdnoreturn.h> #endif #include <WINGs/WUtil.h> #include "../src/wconfig.h" static const char *prog_name; static noreturn void print_help(int print_usage, int exitval) { printf("Usage: %s [-h] [-v] [file]\n", prog_name); if (print_usage) { puts("Retrieves program icon configuration and output to FILE or to stdout"); puts(""); puts(" -h, --help display this help and exit"); puts(" -v, --version output version information and exit"); } exit(exitval); } int main(int argc, char **argv) { WMPropList *window_name, *icon_key, *window_attrs, *icon_value; WMPropList *all_windows, *iconset, *keylist; char *path; int i, ch; struct option longopts[] = { { "version", no_argument, NULL, 'v' }, { "help", no_argument, NULL, 'h' }, { NULL, 0, NULL, 0 } }; prog_name = argv[0]; while ((ch = getopt_long(argc, argv, "hv", longopts, NULL)) != -1) switch(ch) { case 'v': printf("%s (Window Maker %s)\n", prog_name, VERSION); return 0; /* NOTREACHED */ case 'h': print_help(1, 0); /* NOTREACHED */ case 0: break; default: print_help(0, 1); /* NOTREACHED */ } argc -= optind; argv += optind; path = wdefaultspathfordomain("WMWindowAttributes"); all_windows = WMReadPropListFromFile(path); if (!all_windows) { printf("%s: could not load WindowMaker configuration file \"%s\".\n", prog_name, path); return 1; } iconset = WMCreatePLDictionary(NULL, NULL); keylist = WMGetPLDictionaryKeys(all_windows); icon_key = WMCreatePLString("Icon"); for (i = 0; i < WMGetPropListItemCount(keylist); i++) { WMPropList *icondic; window_name = WMGetFromPLArray(keylist, i); if (!WMIsPLString(window_name)) continue; window_attrs = WMGetFromPLDictionary(all_windows, window_name); if (window_attrs && WMIsPLDictionary(window_attrs)) { icon_value = WMGetFromPLDictionary(window_attrs, icon_key); if (icon_value) { icondic = WMCreatePLDictionary(icon_key, icon_value, NULL); WMPutInPLDictionary(iconset, window_name, icondic); } } } if (argc == 1) { WMWritePropListToFile(iconset, argv[0]); } else { puts(WMGetPropListDescription(iconset, True)); } return 0; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/util/README����������������������������������������������������������������������0000644�0001750�0001750�00000002203�13642357774�012642� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������wm-oldmenu2new - converts between the plain text file menu format to the property list menu format. bughint- gathers some information for bug reporting geticonset- outputs the current set of icon assignments. Good for making themes. setstyle- load style settings from a style file and setup WindowMaker getstyle - gets current style settings and save into a file or create a theme pack. seticons- merges icon definitions into WMWindowAttributes file wmaker.inst- quick and dirty script to install necessary files from global configuration to user's directory. Look in the script to adapt it to your site. wxcopy- copy input file or stdin into X cutbuffer wxpaste- copy content of X cutbuffer into stdout wmsetbg- set the workspace background into a image and make it persist between sessions. wdwrite- write data into the defaults database (configuration files). wdread- read Simple data from defaults database (for use in scripts for example) wmagnify- a program to magnify the area near the mouse pointer, with real-time update wkdemenu.pl- convert a KDE menu into a wmaker menu (for pipe) wmiv- quick image viewer using wrlib ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/util/wxcopy.c��������������������������������������������������������������������0000644�0001750�0001750�00000014652�13431646202�013451� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* wxcopy.c- copy stdin or file into cutbuffer * * Copyright (c) 1997-2003 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., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301, USA. */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <errno.h> #include <X11/Xlib.h> #include <X11/Xatom.h> #include "../src/wconfig.h" #define LINESIZE (4*1024) #define MAXDATA (64*1024) static const char *prog_name; static void print_help(void) { printf("Usage: %s [OPTIONS] [FILE]\n", prog_name); puts("Copies data from FILE or stdin into X cut buffer."); puts(""); puts(" -display <display> display to use"); puts(" --cutbuffer <number> cutbuffer number to put data"); puts(" --no-limit do not limit size of input data"); puts(" --clear-selection clears the current PRIMARY selection"); puts(" -h, --help display this help and exit"); puts(" -v, --version output version information and exit"); } static int errorHandler(Display * dpy, XErrorEvent * err) { /* Parameter not used, but tell the compiler that it is ok */ (void) dpy; (void) err; /* ignore all errors */ return 0; } int main(int argc, char **argv) { Display *dpy; int i; int buffer = -1; char *filename = NULL; FILE *file = stdin; char *buf = NULL; char *display_name = ""; int l = 0; int buf_len = 0; int limit_check = 1; int clear_selection = 0; prog_name = argv[0]; for (i = 1; i < argc; i++) { if (argv[i][0] == '-') { if (strcmp(argv[i], "-h") == 0 || strcmp(argv[i], "--help") == 0) { print_help(); exit(0); } else if (strcmp(argv[i], "-v") == 0 || strcmp(argv[i], "--version") == 0) { printf("%s (Window Maker %s)\n", prog_name, VERSION); exit(0); } else if (strcmp(argv[i], "-cutbuffer") == 0 || strcmp(argv[i], "--cutbuffer") == 0) { if (i < argc - 1) { i++; if (sscanf(argv[i], "%i", &buffer) != 1) { fprintf(stderr, "%s: could not convert '%s' to int\n", prog_name, argv[i]); exit(1); } if (buffer < 0 || buffer > 7) { fprintf(stderr, "%s: invalid buffer number %i\n", prog_name, buffer); exit(1); } } else { printf("%s: missing argument for '%s'\n", prog_name, argv[i]); printf("Try '%s --help' for more information\n", prog_name); exit(1); } } else if (strcmp(argv[i], "-display") == 0) { if (i < argc - 1) { display_name = argv[++i]; } else { printf("%s: missing argument for '%s'\n", prog_name, argv[i]); printf("Try '%s --help' for more information\n", prog_name); exit(1); } } else if (strcmp(argv[i], "-clearselection") == 0 || strcmp(argv[i], "--clear-selection") == 0) { clear_selection = 1; } else if (strcmp(argv[i], "-nolimit") == 0 || strcmp(argv[i], "--no-limit") == 0) { limit_check = 0; } else { printf("%s: invalid argument '%s'\n", prog_name, argv[i]); printf("Try '%s --help' for more information\n", prog_name); exit(1); } } else { filename = argv[i]; } } if (filename) { file = fopen(filename, "rb"); if (!file) { char line[1024]; snprintf(line, sizeof(line), "%s: could not open \"%s\"", prog_name, filename); perror(line); exit(1); } } dpy = XOpenDisplay(display_name); XSetErrorHandler(errorHandler); if (!dpy) { fprintf(stderr, "%s: could not open display \"%s\"\n", prog_name, XDisplayName(display_name)); exit(1); } if (buffer < 0) { Atom *rootWinProps; int exists[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; int i, count; /* Create missing CUT_BUFFERs */ rootWinProps = XListProperties(dpy, DefaultRootWindow(dpy), &count); for (i = 0; i < count; i++) { switch (rootWinProps[i]) { case XA_CUT_BUFFER0: exists[0] = 1; break; case XA_CUT_BUFFER1: exists[1] = 1; break; case XA_CUT_BUFFER2: exists[2] = 1; break; case XA_CUT_BUFFER3: exists[3] = 1; break; case XA_CUT_BUFFER4: exists[4] = 1; break; case XA_CUT_BUFFER5: exists[5] = 1; break; case XA_CUT_BUFFER6: exists[6] = 1; break; case XA_CUT_BUFFER7: exists[7] = 1; break; default: break; } } if (rootWinProps) { XFree(rootWinProps); } for (i = 0; i < 8; i++) { if (!exists[i]) { XStoreBuffer(dpy, "", 0, i); } } XRotateBuffers(dpy, 1); buffer = 0; } while (!feof(file)) { char *nbuf; char tmp[LINESIZE + 2]; int nl = 0; /* * Use read() instead of fgets() to preserve NULLs, since * especially since there's no reason to read one line at a time. */ if ((nl = fread(tmp, 1, LINESIZE, file)) <= 0) { break; } if (buf_len == 0) { nbuf = malloc(buf_len = l + nl + 1); } else if (buf_len < l + nl + 1) { /* * To avoid terrible performance on big input buffers, * grow by doubling, not by the minimum needed for the * current line. */ buf_len = 2 * buf_len + nl + 1; /* some realloc implementations don't do malloc if buf==NULL */ if (buf == NULL) { nbuf = malloc(buf_len); } else { nbuf = realloc(buf, buf_len); } } else { nbuf = buf; } if (!nbuf) { fprintf(stderr, "%s: out of memory\n", prog_name); exit(1); } buf = nbuf; /* * Don't strcat, since it would make the algorithm n-squared. * Don't use strcpy, since it stops on a NUL. */ memcpy(buf + l, tmp, nl); l += nl; if (limit_check && l >= MAXDATA) { fprintf (stderr, "%s: too much data in input - more than %d bytes\n" " use the -nolimit argument to remove the limit check.\n", prog_name, MAXDATA); exit(1); } } if (clear_selection) { XSetSelectionOwner(dpy, XA_PRIMARY, None, CurrentTime); } if (buf) { XStoreBuffer(dpy, buf, l, buffer); } XFlush(dpy); XCloseDisplay(dpy); exit(buf == NULL || errno != 0); } ��������������������������������������������������������������������������������������WindowMaker-0.95.9/util/wm-oldmenu2new��������������������������������������������������������������0000755�0001750�0001750�00000011760�13431646202�014557� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh # # wm-oldmenu2new: script to convert from old-style WindowMaker # menu file to the new PropertyList style of the WMRootMenu. # # Note: ex in all the Linux systems I've used is badly # broken, except for nex. perl can be relied on however. # Re-written to use perl. # # Local dependencies: # None. # # Authors: Luke Kendall, Toby J Sargeant # # Copyright waived; no warranty provided. # GLW=GNUstep/Library/WindowMaker GD=GNUstep/Defaults WLW=$HOME/$GLW WD=$HOME/$GD MYNAME=`basename $0` USAGE="usage: $MYNAME [menu-file-specifier] E.g. $MYNAME menu.pt or $MYNAME pt The default menu if no arguments are given is the English one, 'menu'." # # Process arguments - work out which language menu we're converting. # Note that foreign language locales do *not* have the .lang suffix # attached to the WMRootMenu name. # OLD_MENU=menu NEW_MENU=WMRootMenu if [ $# = 1 ] then if [ -s "$WLW/menu.$1" ] then OLD_MENU="menu.$1" NEW_MENU="WMRootMenu" elif [ -s "$WLW/$1" ] then OLD_MENU="$1" x=`expr "$1" : "menu\.\(.*\)"` [ "x$x" != "x" ] && NEW_MENU="WMRootMenu" else echo "$MYNAME: $WLW/$1 does not exist" >&2 exit 1 fi elif [ $# != 0 ] then echo "$USAGE" >&2 exit 1 fi # # For working out what cc is installed # which1() { oldpath=$PATH PATH=/bin:/usr/bin:/usr/local/bin IFS=":" for j in $oldpath do test -x $j/$1 && test ! -d $j/$1 && echo $j/$1 && return 0 done IFS=" " return 1 } # # Expand macros if necessary. # Create a temp copy of the menu file to edit to turn into the new. # TD=$(/bin/mktemp -d /tmp/wmmenu.XXXXXX) || { echo "$0: can not create temporary file" >& 2; exit 1; } T=$TD/wmmenu$$ echo "Converting $GLW/$OLD_MENU --> $GD/$NEW_MENU" cd $WLW || exit 1 if [ ! -s "$OLD_MENU" ] then echo "$MYNAME: $WLW/$OLD_MENU does not exist" >&2 exit 1 fi # # Always pre-process, to join lines split with \, and to strip comments. # Not to mention the main purpose, include & process wmmacros if used. # set -e CC=`which1 cc` [ "x$CC" = "x" ] && CC=`which1 gcc` [ "x$CC" = "x" ] && "$MYNAME: no cc, gcc found - can't preprocess" >&2 && exit 1 # # Use the "parse as if it's C option" if cc is gcc, because # newer versions apparently get confused. Apparently gcc -E does # not simply run the preprocessor (that's sad). # strings "$CC" | grep -l gcc > /dev/null && GCC_FLAGS="-x c" cp $OLD_MENU $T-c # # Given the set -e, the exit 1 shouldn't be needed. But it is, on my NeXT! # $CC -E -I. $GCC_FLAGS $T-c > $T+c || exit 1 sed '/^#/d;/^[ ]*$/d' $T+c > $T rm $T-c $T+c set +e # # This is the interesting bit. Edit the old style menu and # convert into new style property-list menu. # perl - $T <<-'EOF' > $T-p $v=chr(22); for (<>) { push @foo,$_; } for (@foo) { s/\s*$//; s/^(\s*)"*(Workspaces*)"*\s\s*(WORKSPACE_MENU)/\1(\2, \3),/; s/^(\s*)("[^"]*")\s+MENU/\1($v\n\1\2,/; push @foo2,split "\n"; } @foo=(); for (@foo2) { s/^(\s*)"([^"]*)"\s\s*END/\1),/; s/^(\s*)"([^"]*)"\s\s*EXEC\s\s*(.*)$/\1($v\n\1"\2",$v\n\1EXEC,$v\n\1"\3"$v\n\1),/; s/^(\s*)"([^"]*)"\s\s*SHEXEC\s\s*(.*)$/\1($v\n\1"\2",$v\n\1SHEXEC,$v\n\1"\3"$v\n\1),/; push @foo,split "\n"; } @foo2=(); for (@foo) { s/^(\s*)"([^"]*)"\s\s*OPEN_MENU\s\s*(.*)$/\1($v\n\1"\2",$v\n\1OPEN_MENU,$v\n\1"\3"$v\n\1),/; push @foo2,split "\n"; } @foo=(); for (@foo2) { s/^(\s*)([^ ]*)\s\s*MENU/\1($v\n\1"\2",/; push @foo,split "\n"; } @foo2=(); for (@foo) { s/^(\s*)([^ ]*)\s\s*END/\1),/; s/^(\s*)([^ ]*)\s\s*EXEC\s\s*(.*)$/\1($v\n\1"\2",$v\n\1EXEC,$v\n\1"\3"$v\n\1),/; s/^(\s*)([^ ]*)\s\s*SHEXEC\s\s*(.*)$/\1($v\n\1"\2",$v\n\1SHEXEC,$v\n\1"\3"$v\n\1),/; push @foo2,split "\n"; } @foo=(); for (@foo2) { s/^(\s*)([^ ]*)\s\s*OPEN_MENU\s\s*(.*)$/\1($v\n\1"\2",$v\n\1OPEN_MENU,$v\n\1"\3"$v\n\1),/; push @foo,split "\n"; } @foo2=(); for (@foo) { s/ WITH / QQQjjQQQ /; s/^(\s*)"([^"]*)"\s\s*([A-Z_][A-Z_]*)$/\1("\2", \3),/; s/^(\s*)"([^"]*)"\s+([A-Z_][A-Z_]*)\s\s*(.*)$/\1("\2", \3, \4),/; s/"(.*".*)"/JJJqqJJJ\1JJJqqJJJ/; /JJJqqJJJ/ && s/"/\\"/g; s/JJJqqJJJ/"/g; s/ QQQjjQQQ / WITH /; print "$_\n"; } EOF mv $T-p $T # # Now strip off spurious commas from lines like: # ), # ) # since comma is a property separator, not terminator. Sigh. # Also correct for another problem - Linux ex's require the CTRL-V # above; a real vi/ex doesn't; so we have to strip out any spurious # CTRL-V characters if we're using a real ex: # sed 's///g' $T | awk ' { if (last_line != null) { if ((last_line ~ /,$/) && ($0 ~ /^[ ]*\)/)) print substr(last_line, 0, length(last_line)-1) else print last_line } last_line = $0 } END { if (last_line != null) { if (last_line ~ /,$/) print substr(last_line, 0, length(last_line)-1) else print last_line } } ' > $WD/$NEW_MENU.new || exit 1 rm -f $T rm -fr $TD # # Now install it. # cd $WD if [ -s $NEW_MENU ] then echo "Preserving $NEW_MENU as $NEW_MENU.sav in $WD" mv $NEW_MENU $NEW_MENU.sav fi mv $NEW_MENU.new $NEW_MENU && echo "Created new $WD/$NEW_MENU" ����������������WindowMaker-0.95.9/util/wmiv.c����������������������������������������������������������������������0000755�0001750�0001750�00000057645�13642357774�013137� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 2014 Window Maker Team - David Maciejak * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #if !defined(_GNU_SOURCE) #define _GNU_SOURCE #endif #include <X11/keysym.h> #include <X11/XKBlib.h> #include <X11/Xatom.h> #include <X11/Xlib.h> #include "wraster.h" #include <stdlib.h> #include <stdio.h> #include <string.h> #include <dirent.h> #include <limits.h> #include <unistd.h> #include <sys/stat.h> #include <getopt.h> #include <math.h> #include "config.h" #ifdef HAVE_EXIF #include <libexif/exif-data.h> #endif #ifdef HAVE_PTHREAD #include <pthread.h> #endif #ifdef USE_XPM extern int XpmCreatePixmapFromData(Display *, Drawable, char **, Pixmap *, Pixmap *, void *); /* this is the icon from eog project git.gnome.org/browse/eog */ #include "wmiv.h" #endif #define WMIV_DEBUG 0 #define FILE_SEPARATOR '/' Display *dpy; Window win; RContext *ctx; RImage *img; Pixmap pix; const char *APPNAME = "wmiv"; int APPVERSION_MAJOR = 0; int APPVERSION_MINOR = 7; int NEXT = 0; int PREV = 1; float zoom_factor = 0; int max_width = 0; int max_height = 0; Bool fullscreen_flag = False; Bool focus = False; Bool back_from_fullscreen = False; #ifdef HAVE_PTHREAD Bool diaporama_flag = False; int diaporama_delay = 5; pthread_t tid = 0; #endif XTextProperty title_property; XTextProperty icon_property; unsigned current_index = 1; unsigned max_index = 1; RColor lightGray; RColor darkGray; RColor black; RColor red; typedef struct link link_t; struct link { const void *data; link_t *prev; link_t *next; }; typedef struct linked_list { int count; link_t *first; link_t *last; } linked_list_t; linked_list_t list; link_t *current_link; /* load_oriented_image: used to load an image and optionally get its orientation if libexif is available return the image on success, NULL on failure */ RImage *load_oriented_image(RContext *context, const char *file, int index) { RImage *image; #ifdef HAVE_EXIF int orientation = 0; #endif image = RLoadImage(context, file, index); if (!image) return NULL; #ifdef HAVE_EXIF ExifData *exifData = exif_data_new_from_file(file); if (exifData) { ExifByteOrder byteOrder = exif_data_get_byte_order(exifData); ExifEntry *exifEntry = exif_data_get_entry(exifData, EXIF_TAG_ORIENTATION); if (exifEntry) orientation = exif_get_short(exifEntry->data, byteOrder); exif_data_free(exifData); } /* 0th Row 0th Column 1 top left side 2 top right side 3 bottom right side 4 bottom left side 5 left side top 6 right side top 7 right side bottom 8 left side bottom */ if (image && (orientation > 1)) { RImage *tmp = NULL; switch (orientation) { case 2: tmp = RFlipImage(image, RHorizontalFlip); break; case 3: tmp = RRotateImage(image, 180); break; case 4: tmp = RFlipImage(image, RVerticalFlip); break; case 5: { RImage *tmp2; tmp2 = RFlipImage(image, RVerticalFlip); if (tmp2) { tmp = RRotateImage(tmp2, 90); RReleaseImage(tmp2); } } break; case 6: tmp = RRotateImage(image, 90); break; case 7: { RImage *tmp2; tmp2 = RFlipImage(image, RVerticalFlip); if (tmp2) { tmp = RRotateImage(tmp2, 270); RReleaseImage(tmp2); } } break; case 8: tmp = RRotateImage(image, 270); break; } if (tmp) { RReleaseImage(image); image = tmp; } } #endif return image; } /* change_title: used to change window title return EXIT_SUCCESS on success, 1 on failure */ int change_title(XTextProperty *prop, char *filename) { char *combined_title = NULL; if (!asprintf(&combined_title, "%s - %u/%u - %s", APPNAME, current_index, max_index, filename)) if (!asprintf(&combined_title, "%s - %u/%u", APPNAME, current_index, max_index)) return EXIT_FAILURE; XStringListToTextProperty(&combined_title, 1, prop); XSetWMName(dpy, win, prop); if (prop->value) XFree(prop->value); free(combined_title); return EXIT_SUCCESS; } /* rescale_image: used to rescale the current image based on the screen size return EXIT_SUCCESS on success */ int rescale_image(void) { long final_width = img->width; long final_height = img->height; /* check if there is already a zoom factor applied */ if (fabsf(zoom_factor) <= 0.0f) { final_width = img->width + (int)(img->width * zoom_factor); final_height = img->height + (int)(img->height * zoom_factor); } if ((max_width < final_width) || (max_height < final_height)) { long val = 0; if (final_width > final_height) { val = final_height * max_width / final_width; final_width = final_width * val / final_height; final_height = val; if (val > max_height) { val = final_width * max_height / final_height; final_height = final_height * val / final_width; final_width = val; } } else { val = final_width * max_height / final_height; final_height = final_height * val / final_width; final_width = val; if (val > max_width) { val = final_height * max_width / final_width; final_width = final_width * val / final_height; final_height = val; } } } if ((final_width != img->width) || (final_height != img->height)) { RImage *old_img = img; img = RScaleImage(img, final_width, final_height); if (!img) { img = old_img; return EXIT_FAILURE; } RReleaseImage(old_img); } if (!RConvertImage(ctx, img, &pix)) { fprintf(stderr, "%s\n", RMessageForError(RErrorCode)); return EXIT_FAILURE; } return EXIT_SUCCESS; } /* maximize_image: find the best image size for the current display return EXIT_SUCCESS on success */ int maximize_image(void) { rescale_image(); XCopyArea(dpy, pix, win, ctx->copy_gc, 0, 0, img->width, img->height, max_width/2-img->width/2, max_height/2-img->height/2); return EXIT_SUCCESS; } /* merge_with_background: merge the current image with with a checkboard background return EXIT_SUCCESS on success, 1 on failure */ int merge_with_background(RImage *i) { if (i) { RImage *back; back = RCreateImage(i->width, i->height, True); if (back) { int opaq = 255; int x = 0, y = 0; RFillImage(back, &lightGray); for (x = 0; x <= i->width; x += 8) { if (x/8 % 2) y = 8; else y = 0; for (; y <= i->height; y += 16) ROperateRectangle(back, RAddOperation, x, y, x+8, y+8, &darkGray); } RCombineImagesWithOpaqueness(i, back, opaq); RReleaseImage(back); return EXIT_SUCCESS; } } return EXIT_FAILURE; } /* turn_image: rotate the image by the angle passed return EXIT_SUCCESS on success, EXIT_FAILURE on failure */ int turn_image(float angle) { RImage *tmp; if (!img) return EXIT_FAILURE; tmp = RRotateImage(img, angle); if (!tmp) return EXIT_FAILURE; if (!fullscreen_flag) { if (img->width != tmp->width || img->height != tmp->height) XResizeWindow(dpy, win, tmp->width, tmp->height); } RReleaseImage(img); img = tmp; rescale_image(); if (!fullscreen_flag) { XCopyArea(dpy, pix, win, ctx->copy_gc, 0, 0, img->width, img->height, 0, 0); } else { XClearWindow(dpy, win); XCopyArea(dpy, pix, win, ctx->copy_gc, 0, 0, img->width, img->height, max_width/2-img->width/2, max_height/2-img->height/2); } return EXIT_SUCCESS; } /* turn_image_right: rotate the image by 90 degree return EXIT_SUCCESS on success, EXIT_FAILURE on failure */ int turn_image_right(void) { return turn_image(90.0); } /* turn_image_left: rotate the image by -90 degree return EXIT_SUCCESS on success, 1 on failure */ int turn_image_left(void) { return turn_image(-90.0); } /* draw_failed_image: create a red crossed image to indicate an error loading file return the image on success, NULL on failure */ RImage *draw_failed_image(void) { RImage *failed_image = NULL; XWindowAttributes attr; if (win && (XGetWindowAttributes(dpy, win, &attr) >= 0)) failed_image = RCreateImage(attr.width, attr.height, False); else failed_image = RCreateImage(50, 50, False); if (!failed_image) return NULL; RFillImage(failed_image, &black); ROperateLine(failed_image, RAddOperation, 0, 0, failed_image->width, failed_image->height, &red); ROperateLine(failed_image, RAddOperation, 0, failed_image->height, failed_image->width, 0, &red); return failed_image; } /* full_screen: sending event to the window manager to switch from/to full screen mode return EXIT_SUCCESS on success, 1 on failure */ int full_screen(void) { XEvent xev; Atom wm_state = XInternAtom(dpy, "_NET_WM_STATE", True); Atom fullscreen = XInternAtom(dpy, "_NET_WM_STATE_FULLSCREEN", True); long mask = SubstructureNotifyMask; if (fullscreen_flag) { fullscreen_flag = False; zoom_factor = 0; back_from_fullscreen = True; } else { fullscreen_flag = True; zoom_factor = 1000; } memset(&xev, 0, sizeof(xev)); xev.type = ClientMessage; xev.xclient.display = dpy; xev.xclient.window = win; xev.xclient.message_type = wm_state; xev.xclient.format = 32; xev.xclient.data.l[0] = fullscreen_flag; xev.xclient.data.l[1] = fullscreen; if (!XSendEvent(dpy, DefaultRootWindow(dpy), False, mask, &xev)) { fprintf(stderr, "Error: sending fullscreen event to xserver\n"); return EXIT_FAILURE; } return EXIT_SUCCESS; } /* zoom_in_out: apply a zoom factor on the current image arg: 1 to zoom in, 0 to zoom out return EXIT_SUCCESS on success, 1 on failure */ int zoom_in_out(int z) { RImage *old_img = img; RImage *tmp = load_oriented_image(ctx, current_link->data, 0); if (!tmp) return EXIT_FAILURE; if (z) { zoom_factor += 0.2f; img = RScaleImage(tmp, tmp->width + (int)(tmp->width * zoom_factor), tmp->height + (int)(tmp->height * zoom_factor)); if (!img) { img = old_img; return EXIT_FAILURE; } } else { zoom_factor -= 0.2f; int new_width = tmp->width + (int) (tmp->width * zoom_factor); int new_height = tmp->height + (int)(tmp->height * zoom_factor); if ((new_width <= 0) || (new_height <= 0)) { zoom_factor += 0.2f; RReleaseImage(tmp); return EXIT_FAILURE; } img = RScaleImage(tmp, new_width, new_height); if (!img) { img = old_img; return EXIT_FAILURE; } } RReleaseImage(old_img); RReleaseImage(tmp); XFreePixmap(dpy, pix); merge_with_background(img); if (!RConvertImage(ctx, img, &pix)) { fprintf(stderr, "%s\n", RMessageForError(RErrorCode)); return EXIT_FAILURE; } XResizeWindow(dpy, win, img->width, img->height); return EXIT_SUCCESS; } /* zoom_in: transitional fct used to call zoom_in_out with zoom in flag return EXIT_SUCCESS on success, 1 on failure */ int zoom_in(void) { return zoom_in_out(1); } /* zoom_out: transitional fct used to call zoom_in_out with zoom out flag return EXIT_SUCCESS on success, 1 on failure */ int zoom_out(void) { return zoom_in_out(0); } /* change_image: load previous or next image arg: way which could be PREV or NEXT constant return EXIT_SUCCESS on success, 1 on failure */ int change_image(int way) { if (img && current_link) { int old_img_width = img->width; int old_img_height = img->height; RReleaseImage(img); if (way == NEXT) { current_link = current_link->next; current_index++; } else { current_link = current_link->prev; current_index--; } if (current_link == NULL) { if (way == NEXT) { current_link = list.first; current_index = 1; } else { current_link = list.last; current_index = max_index; } } if (WMIV_DEBUG) fprintf(stderr, "current file is> %s\n", (char *)current_link->data); img = load_oriented_image(ctx, current_link->data, 0); if (!img) { fprintf(stderr, "Error: %s %s\n", (char *)current_link->data, RMessageForError(RErrorCode)); img = draw_failed_image(); } else { merge_with_background(img); } rescale_image(); if (!fullscreen_flag) { if ((old_img_width != img->width) || (old_img_height != img->height)) XResizeWindow(dpy, win, img->width, img->height); else XCopyArea(dpy, pix, win, ctx->copy_gc, 0, 0, img->width, img->height, 0, 0); change_title(&title_property, (char *)current_link->data); } else { XClearWindow(dpy, win); XCopyArea(dpy, pix, win, ctx->copy_gc, 0, 0, img->width, img->height, max_width/2-img->width/2, max_height/2-img->height/2); } return EXIT_SUCCESS; } return EXIT_FAILURE; } #ifdef HAVE_PTHREAD /* diaporama: send a xevent to display the next image at every delay set to diaporama_delay arg: not used return void */ void *diaporama(void *arg) { (void) arg; XKeyEvent event; event.display = dpy; event.window = win; event.root = DefaultRootWindow(dpy); event.subwindow = None; event.time = CurrentTime; event.x = 1; event.y = 1; event.x_root = 1; event.y_root = 1; event.same_screen = True; event.keycode = XKeysymToKeycode(dpy, XK_Right); event.state = 0; event.type = KeyPress; while (diaporama_flag) { int r; r = XSendEvent(event.display, event.window, True, KeyPressMask, (XEvent *)&event); if (!r) fprintf(stderr, "Error sending event\n"); XFlush(dpy); /* default sleep time between moving to next image */ sleep(diaporama_delay); } tid = 0; return arg; } #endif /* linked_list_init: init the linked list */ void linked_list_init(linked_list_t *list) { list->first = list->last = 0; list->count = 0; } /* linked_list_add: add an element to the linked list return EXIT_SUCCESS on success, 1 otherwise */ int linked_list_add(linked_list_t *list, const void *data) { link_t *link; /* calloc sets the "next" field to zero. */ link = calloc(1, sizeof(link_t)); if (!link) { fprintf(stderr, "Error: memory allocation failed\n"); return EXIT_FAILURE; } link->data = data; if (list->last) { /* Join the two final links together. */ list->last->next = link; link->prev = list->last; list->last = link; } else { list->first = link; list->last = link; } list->count++; return EXIT_SUCCESS; } /* linked_list_free: deallocate the whole linked list */ void linked_list_free(linked_list_t *list) { link_t *link; link_t *next; for (link = list->first; link; link = next) { /* Store the next value so that we don't access freed memory. */ next = link->next; if (link->data) free((char *)link->data); free(link); } } /* connect_dir: list and sort by name all files from a given directory arg: the directory path that contains images, the linked list where to add the new file refs return: the first argument of the list or NULL on failure */ link_t *connect_dir(char *dirpath, linked_list_t *li) { struct dirent **dir; int dv, idx; char path[PATH_MAX] = ""; if (!dirpath) return NULL; dv = scandir(dirpath, &dir, 0, alphasort); if (dv < 0) { /* maybe it's a file */ struct stat stDirInfo; if (lstat(dirpath, &stDirInfo) == 0) { linked_list_add(li, strdup(dirpath)); return li->first; } else { return NULL; } } for (idx = 0; idx < dv; idx++) { struct stat stDirInfo; if (dirpath[strlen(dirpath)-1] == FILE_SEPARATOR) snprintf(path, PATH_MAX, "%s%s", dirpath, dir[idx]->d_name); else snprintf(path, PATH_MAX, "%s%c%s", dirpath, FILE_SEPARATOR, dir[idx]->d_name); free(dir[idx]); if ((lstat(path, &stDirInfo) == 0) && !S_ISDIR(stDirInfo.st_mode)) linked_list_add(li, strdup(path)); } free(dir); return li->first; } /* main */ int main(int argc, char **argv) { int option = -1; RContextAttributes attr; XEvent e; KeySym keysym; char *reading_filename = ""; int screen, file_i; int quit = 0; XClassHint *class_hints; XSizeHints *size_hints; XWMHints *win_hints; #ifdef USE_XPM Pixmap icon_pixmap, icon_shape; #endif class_hints = XAllocClassHint(); if (!class_hints) { fprintf(stderr, "Error: failure allocating memory\n"); return EXIT_FAILURE; } class_hints->res_name = (char *)APPNAME; class_hints->res_class = "default"; /* init colors */ lightGray.red = lightGray.green = lightGray.blue = 211; darkGray.red = darkGray.green = darkGray.blue = 169; lightGray.alpha = darkGray.alpha = 1; black.red = black.green = black.blue = 0; red.red = 255; red.green = red.blue = 0; static struct option long_options[] = { {"version", no_argument, 0, 'v'}, {"help", no_argument, 0, 'h'}, {0, 0, 0, 0} }; int option_index = 0; option = getopt_long (argc, argv, "hv", long_options, &option_index); if (option != -1) { switch (option) { case 'h': printf("Usage: %s [image(s)|directory]\n" "Options:\n" " -h, --help print this help text\n" " -v, --version print version\n" "Keys:\n" " [+] zoom in\n" " [-] zoom out\n" " [Esc] actual size\n" #ifdef HAVE_PTHREAD " [D] launch diaporama mode\n" #endif " [L] rotate image on the left\n" " [Q] quit\n" " [R] rotate image on the right\n" " [▸] next image\n" " [◂] previous image\n" " [▴] first image\n" " [▾] last image\n", argv[0]); return EXIT_SUCCESS; case 'v': fprintf(stderr, "%s version %d.%d\n", APPNAME, APPVERSION_MAJOR, APPVERSION_MINOR); return EXIT_SUCCESS; case '?': return EXIT_FAILURE; } } linked_list_init(&list); dpy = XOpenDisplay(NULL); if (!dpy) { fprintf(stderr, "Error: can't open display"); linked_list_free(&list); return EXIT_FAILURE; } screen = DefaultScreen(dpy); max_width = DisplayWidth(dpy, screen); max_height = DisplayHeight(dpy, screen); attr.flags = RC_RenderMode | RC_ColorsPerChannel; attr.render_mode = RDitheredRendering; attr.colors_per_channel = 4; ctx = RCreateContext(dpy, DefaultScreen(dpy), &attr); if (argc < 2) { argv[1] = "."; argc = 2; } for (file_i = 1; file_i < argc; file_i++) { current_link = connect_dir(argv[file_i], &list); if (current_link) { reading_filename = (char *)current_link->data; max_index = list.count; } } img = load_oriented_image(ctx, reading_filename, 0); if (!img) { fprintf(stderr, "Error: %s %s\n", reading_filename, RMessageForError(RErrorCode)); img = draw_failed_image(); if (!current_link) return EXIT_FAILURE; } merge_with_background(img); rescale_image(); if (WMIV_DEBUG) fprintf(stderr, "display size: %dx%d\n", max_width, max_height); win = XCreateSimpleWindow(dpy, DefaultRootWindow(dpy), 0, 0, img->width, img->height, 0, 0, BlackPixel(dpy, screen)); XSelectInput(dpy, win, KeyPressMask|StructureNotifyMask|ExposureMask|ButtonPressMask|FocusChangeMask); size_hints = XAllocSizeHints(); if (!size_hints) { fprintf(stderr, "Error: failure allocating memory\n"); return EXIT_FAILURE; } size_hints->width = img->width; size_hints->height = img->height; Atom delWindow = XInternAtom(dpy, "WM_DELETE_WINDOW", 0); XSetWMProtocols(dpy, win, &delWindow, 1); change_title(&title_property, reading_filename); win_hints = XAllocWMHints(); if (win_hints) { win_hints->flags = StateHint|InputHint|WindowGroupHint; #ifdef USE_XPM if ((XpmCreatePixmapFromData(dpy, win, wmiv_xpm, &icon_pixmap, &icon_shape, NULL)) == 0) { win_hints->flags |= IconPixmapHint|IconMaskHint|IconPositionHint; win_hints->icon_pixmap = icon_pixmap; win_hints->icon_mask = icon_shape; win_hints->icon_x = 0; win_hints->icon_y = 0; } #endif win_hints->initial_state = NormalState; win_hints->input = True; win_hints->window_group = win; XStringListToTextProperty((char **)&APPNAME, 1, &icon_property); XSetWMProperties(dpy, win, NULL, &icon_property, argv, argc, size_hints, win_hints, class_hints); if (icon_property.value) XFree(icon_property.value); XFree(win_hints); XFree(class_hints); XFree(size_hints); } XMapWindow(dpy, win); XFlush(dpy); XCopyArea(dpy, pix, win, ctx->copy_gc, 0, 0, img->width, img->height, 0, 0); while (!quit) { XNextEvent(dpy, &e); if (e.type == ClientMessage) { if (e.xclient.data.l[0] == delWindow) quit = 1; /* * This break could be related to all ClientMessages or * related to delWindow. Before the patch about this comment * the break was indented with one tab more (at the same level * than "quit = 1;" in the previous line. */ break; } if (e.type == FocusIn) { focus = True; continue; } if (e.type == FocusOut) { focus = False; continue; } if (!fullscreen_flag && (e.type == Expose)) { XExposeEvent xev = e.xexpose; if (xev.count == 0) XCopyArea(dpy, pix, win, ctx->copy_gc, 0, 0, img->width, img->height, 0, 0); continue; } if (!fullscreen_flag && e.type == ConfigureNotify) { XConfigureEvent xce = e.xconfigure; if (xce.width != img->width || xce.height != img->height) { RImage *old_img = img; img = load_oriented_image(ctx, current_link->data, 0); if (!img) { /* keep the old img and window size */ img = old_img; XResizeWindow(dpy, win, img->width, img->height); } else { RImage *tmp2; if (!back_from_fullscreen) /* manually resized window */ tmp2 = RScaleImage(img, xce.width, xce.height); else { /* back from fullscreen mode, maybe img was rotated */ tmp2 = img; back_from_fullscreen = False; XClearWindow(dpy, win); } merge_with_background(tmp2); if (RConvertImage(ctx, tmp2, &pix)) { RReleaseImage(old_img); img = RCloneImage(tmp2); RReleaseImage(tmp2); change_title(&title_property, (char *)current_link->data); XSync(dpy, True); XResizeWindow(dpy, win, img->width, img->height); XCopyArea(dpy, pix, win, ctx->copy_gc, 0, 0, img->width, img->height, 0, 0); } } } continue; } if (fullscreen_flag && e.type == ConfigureNotify) { maximize_image(); continue; } if (e.type == ButtonPress) { switch (e.xbutton.button) { case Button1: { if (focus) { if (img && (e.xbutton.x > img->width/2)) change_image(NEXT); else change_image(PREV); } } break; case Button4: zoom_in(); break; case Button5: zoom_out(); break; case 8: change_image(PREV); break; case 9: change_image(NEXT); break; } continue; } if (e.type == KeyPress) { keysym = XkbKeycodeToKeysym(dpy, e.xkey.keycode, 0, e.xkey.state & ShiftMask?1:0); #ifdef HAVE_PTHREAD if (keysym != XK_Right) diaporama_flag = False; #endif switch (keysym) { case XK_Right: change_image(NEXT); break; case XK_Left: change_image(PREV); break; case XK_Up: if (current_link) { current_link = list.last; change_image(NEXT); } break; case XK_Down: if (current_link) { current_link = list.first; change_image(PREV); } break; #ifdef HAVE_PTHREAD case XK_F5: case XK_d: if (!tid) { if (current_link && !diaporama_flag) { diaporama_flag = True; pthread_create(&tid, NULL, &diaporama, NULL); } else { fprintf(stderr, "Can't use diaporama mode\n"); } } break; #endif case XK_q: quit = 1; break; case XK_Escape: if (!fullscreen_flag) { zoom_factor = -0.2f; /* zoom_in will increase the zoom factor by 0.2 */ zoom_in(); } else { /* we are in fullscreen mode already, want to return to normal size */ full_screen(); } break; case XK_plus: zoom_in(); break; case XK_minus: zoom_out(); break; case XK_F11: case XK_f: full_screen(); break; case XK_r: turn_image_right(); break; case XK_l: turn_image_left(); break; } } } if (img) RReleaseImage(img); if (pix) XFreePixmap(dpy, pix); #ifdef USE_XPM if (icon_pixmap) XFreePixmap(dpy, icon_pixmap); if (icon_shape) XFreePixmap(dpy, icon_shape); #endif linked_list_free(&list); RDestroyContext(ctx); RShutdown(); XCloseDisplay(dpy); return EXIT_SUCCESS; } �������������������������������������������������������������������������������������������WindowMaker-0.95.9/util/wmmenugen_parse_wmconfig.c��������������������������������������������������0000644�0001750�0001750�00000016071�13431646202�017202� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * wmmenugen - Window Maker PropList menu generator * * Wmconfig <http://www.arrishq.net/> parser functions * * Copyright (c) 2010. Tamas Tevesz <ice@extreme.hu> * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include <sys/types.h> #include <sys/stat.h> #include <ctype.h> #include <ftw.h> #if DEBUG #include <errno.h> #endif #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include "wmmenugen.h" typedef struct { char *Name; char *Exec; char *Category; char *Restart; int Flags; } WMConfigMenuEntry; static Bool wmc_to_wm(WMConfigMenuEntry **wmc, WMMenuEntry **wm); static void parse_wmconfig_line(char **label, char **key, char **value, const char *line); static void init_wmconfig_storage(WMConfigMenuEntry **wmc); void parse_wmconfig(const char *file, cb_add_menu_entry *addWMMenuEntryCallback) { FILE *fp; char buf[1024]; char *p, *lastlabel, *label, *key, *value; WMConfigMenuEntry *wmc; WMMenuEntry *wm; lastlabel = label = key = value = NULL; fp = fopen(file, "r"); if (!fp) { #if DEBUG fprintf(stderr, "Error opening file %s: %s\n", file, strerror(errno)); #endif return; } wmc = (WMConfigMenuEntry *)wmalloc(sizeof(WMConfigMenuEntry)); wmc->Name = NULL; wmc->Exec = NULL; wmc->Category = NULL; wmc->Restart = NULL; wmc->Flags = 0; wm = (WMMenuEntry *)wmalloc(sizeof(WMMenuEntry)); memset(buf, 0, sizeof(buf)); while (fgets(buf, sizeof(buf), fp)) { p = buf; /* skip whitespaces */ while (isspace(*p)) p++; /* skip comments, empty lines */ if (*p == '\r' || *p == '\n' || *p == '#') { memset(buf, 0, sizeof(buf)); continue; } /* trim crlf */ buf[strcspn(buf, "\r\n")] = '\0'; if (strlen(buf) == 0) continue; parse_wmconfig_line(&label, &key, &value, p); if (label && strlen(label) == 0) continue; if (!lastlabel && label) lastlabel = wstrdup(label); if (strcmp(lastlabel, label) != 0) { if (wmc_to_wm(&wmc, &wm)) { (*addWMMenuEntryCallback)(wm); init_wmconfig_storage(&wmc); } wfree(lastlabel); lastlabel = wstrdup(label); } if (key && value) { if (strcmp(key, "name") == 0) wmc->Name = value; else if (strcmp(key, "exec") == 0) wmc->Exec = value; else if (strcmp(key, "group") == 0) wmc->Category = value; else if (strcmp(key, "restart") == 0) wmc->Restart = value; else if (strcmp(key, "terminal") == 0) wmc->Flags |= F_TERMINAL; } } fclose(fp); if (wmc_to_wm(&wmc, &wm)) { (*addWMMenuEntryCallback)(wm); init_wmconfig_storage(&wmc); } } /* an example to illustrate validateFilename. * with wmconfig, no special handling is needed */ Bool wmconfig_validate_file(const char *filename, const struct stat *st, int tflags, struct FTW *ftw) { (void)filename; (void)st; (void)tflags; (void)ftw; return True; #if 0 /* not dead code, example */ /* or we could have gone intro extremes */ char *base_name; Bool ret; (void)tflags; base_name = wstrdup(filename + ftw->base); ret = True; if (!S_ISREG(st->st_mode) || /* not a regular file */ (st->st_uid != 0 && st->st_uid != getuid()) || /* bad guy injected this file */ strpbrk(base_name, ".") || /* wmconfig typically has no extension */ st->st_size >= 128 * 131072 || /* noone writes wmconfig files > 128K */ st->st_size == 0 || /* nor empty ones */ ftw->level > 16) /* how did we get this deep? */ ret = False; wfree(base_name); return ret; #endif } /* get a line allocating label, key and value as necessary */ static void parse_wmconfig_line(char **label, char **key, char **value, const char *line) { const char *p; int kstart, kend; p = line; *label = *key = *value = NULL; kstart = kend = 0; /* skip whitespace */ while (isspace(*(p + kstart))) kstart++; kend = kstart; /* find end of label */ while (*(p + kend) && !isspace(*(p + kend))) kend++; /* label */ *label = wstrndup(p + kstart, kend - kstart); kstart = kend + 1; /* skip whitespace */ while (isspace(*(p + kstart))) kstart++; kend = kstart; /* find end of key */ while (*(p + kend) && !isspace(*(p + kend))) kend++; /* key */ *key = wstrndup(p + kstart, kend - kstart); kstart = kend + 1; /* skip until after " */ while (*(p + kstart) && *(p + kstart) != '"') kstart++; kstart++; kend = kstart; /* skip until " */ while (*(p + kend) && *(p + kend) != '"') kend++; /* value */ *value = wstrndup(p + kstart, kend - kstart); } /* normalize and convert one wmconfig-format entry to wm format */ static Bool wmc_to_wm(WMConfigMenuEntry **wmc, WMMenuEntry **wm) { char *p; size_t slen; /* only Exec is mandatory, and it's better exist in a known place */ if (!((*wmc)->Exec && *(*wmc)->Exec && fileInPath((*wmc)->Exec))) return False; /* normalize Exec: wmconfig tends to stick an ampersand * at the end of everything, which we don't need */ slen = strlen((*wmc)->Exec) - 1; p = (*wmc)->Exec; while (slen > 0 && (isspace(*(p + slen)) || *(p + slen) == '&')) *(p + slen--) = '\0'; /* if there's no Name, use the first word of Exec; still better * than nothing. i realize it's highly arguable whether `xterm' from * `xterm -e "ssh dev push-to-prod"' is helpful or not, but since * the alternative is to completely lose the entry, i opt for this. * you could just fix the descriptor file to have a label <G> */ if (!(*wmc)->Name) { (*wmc)->Name = wstrdup((*wmc)->Exec); p = strchr((*wmc)->Name, ' '); if (p) *p = '\0'; } /* if there's no Category, use "Applications"; apparently "no category" * can manifest both as no `group' descriptor at all, or a group * descriptor of "" */ if (!(*wmc)->Category || !*(*wmc)->Category) (*wmc)->Category = wstrdup("Applications"); /* the `restart' type is used for restart, restart other * wm and quit current wm too. separate these cases. */ if ((*wmc)->Restart) { if (strcmp((*wmc)->Restart, "restart") == 0) (*wmc)->Flags |= F_RESTART_SELF; else if (strcmp((*wmc)->Restart, "quit") == 0) (*wmc)->Flags |= F_QUIT; else (*wmc)->Flags |= F_RESTART_OTHER; } (*wm)->Name = (*wmc)->Name; (*wm)->CmdLine = (*wmc)->Exec; (*wm)->SubMenu = (*wmc)->Category; (*wm)->Flags = (*wmc)->Flags; return True; } static void init_wmconfig_storage(WMConfigMenuEntry **wmc) { if ((*wmc)->Category) wfree((*wmc)->Category); (*wmc)->Category = NULL; if ((*wmc)->Name) wfree((*wmc)->Name); (*wmc)->Name = NULL; if ((*wmc)->Restart) wfree((*wmc)->Restart); (*wmc)->Restart = NULL; (*wmc)->Flags = 0; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/util/wmgenmenu.c�����������������������������������������������������������������0000644�0001750�0001750�00000033117�13642357774�014140� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Copyright (C) 2010 Carlos R. Mafra */ #ifdef __GLIBC__ #define _GNU_SOURCE /* getopt_long */ #endif #include "config.h" #include <ctype.h> #include <getopt.h> #include <limits.h> #include <locale.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #ifdef HAVE_STDNORETURN #include <stdnoreturn.h> #endif #include <WINGs/WUtil.h> #include "../src/wconfig.h" #define MAX_NR_APPS 128 /* Maximum number of entries in each apps list */ #define MAX_WMS 10 /* Maximum number of other window managers to check */ #include "wmgenmenu.h" static void find_and_write(const char *group, char *list[][2], int this_is_terminals); static void other_window_managers(void); static void print_help(int print_usage, int exitval); static const char *prog_name; char *path, *terminal = NULL; WMPropList *RMenu, *L1Menu, *L2Menu, *L3Menu, *L4Menu; int main(int argc, char *argv[]) { char *t; int ch; char *tmp, *theme_paths, *style_paths, *icon_paths; tmp = wstrconcat("-noext ", PKGDATADIR); theme_paths = wstrconcat(tmp, "/Themes $HOME/GNUstep/Library/WindowMaker/Themes WITH setstyle"); style_paths = wstrconcat(tmp, "/Styles $HOME/GNUstep/Library/WindowMaker/Styles WITH setstyle"); icon_paths = wstrconcat(tmp, "/IconSets $HOME/GNUstep/Library/WindowMaker/IconSets WITH seticons"); struct option longopts[] = { { "version", no_argument, NULL, 'v' }, { "help", no_argument, NULL, 'h' }, { NULL, 0, NULL, 0 } }; prog_name = argv[0]; while ((ch = getopt_long(argc, argv, "hv", longopts, NULL)) != -1) switch (ch) { case 'v': printf("%s (Window Maker %s)\n", prog_name, VERSION); return 0; /* NOTREACHED */ case 'h': print_help(1, 0); /* NOTREACHED */ default: print_help(0, 1); /* NOTREACHED */ } argc -= optind; argv += optind; if (argc != 0) print_help(0, 1); path = getenv("PATH"); setlocale(LC_ALL, ""); #if defined(HAVE_LIBINTL_H) && defined(I18N) if (getenv("NLSPATH")) bindtextdomain("wmgenmenu", getenv("NLSPATH")); else bindtextdomain("wmgenmenu", LOCALEDIR); bind_textdomain_codeset("wmgenmenu", "UTF-8"); textdomain("wmgenmenu"); #endif /* * The menu generated is a five-level hierarchy, of which the * top level (RMenu) is only used to hold the others (a single * PLString, which will be the title of the root menu) * * RMenu Window Maker * L1Menu Applications * L2Menu Terminals * L3Menu XTerm * L3Menu RXVT * L2Menu Internet * L3Menu Firefox * L2Menu E-mail * L1Menu Appearance * L2Menu Themes * L2Menu Background * L3Menu Solid * L4Menu Indigo * L1Menu Configure Window Maker * */ /* Root */ RMenu = WMCreatePLArray(WMCreatePLString("Window Maker"), NULL); /* Root -> Applications */ L1Menu = WMCreatePLArray(WMCreatePLString(_("Applications")), NULL); /* Root -> Applications -> <category> */ find_and_write(_("Terminals"), Terminals, 1); /* always keep terminals the top item */ find_and_write(_("Internet"), Internet, 0); find_and_write(_("Email"), Email, 0); find_and_write(_("Mathematics"), Mathematics, 0); find_and_write(_("File Managers"), File_managers, 0); find_and_write(_("Graphics"), Graphics, 0); find_and_write(_("Multimedia"), Multimedia, 0); find_and_write(_("Editors"), Editors, 0); find_and_write(_("Development"), Development, 0); find_and_write("Window Maker", WindowMaker, 0); find_and_write(_("Office"), Office, 0); find_and_write(_("Astronomy"), Astronomy, 0); find_and_write(_("Sound"), Sound, 0); find_and_write(_("Comics"), Comics, 0); find_and_write(_("Viewers"), Viewers, 0); find_and_write(_("Utilities"), Utilities, 0); find_and_write(_("System"), System, 0); find_and_write(_("Video"), Video, 0); find_and_write(_("Chat and Talk"), Chat, 0); find_and_write(_("P2P Network"), P2P, 0); find_and_write(_("Games"), Games, 0); find_and_write("OpenSUSE", OpenSUSE, 0); find_and_write("Mandriva", Mandriva, 0); WMAddToPLArray(RMenu, L1Menu); /* Root -> `Run' dialog */ L1Menu = WMCreatePLArray( WMCreatePLString(_("Run...")), WMCreatePLString("SHEXEC"), WMCreatePLString(_("%A(Run, Type command:)")), NULL ); WMAddToPLArray(RMenu, L1Menu); /* Root -> Appearance */ L1Menu = WMCreatePLArray(WMCreatePLString(_("Appearance")), NULL); /* Root -> Appearance -> Themes */ L2Menu = WMCreatePLArray( WMCreatePLString(_("Themes")), WMCreatePLString("OPEN_MENU"), WMCreatePLString(theme_paths), NULL ); WMAddToPLArray(L1Menu, L2Menu); /* Root -> Appearance -> Styles */ L2Menu = WMCreatePLArray( WMCreatePLString(_("Styles")), WMCreatePLString("OPEN_MENU"), WMCreatePLString(style_paths), NULL ); WMAddToPLArray(L1Menu, L2Menu); /* Root -> Appearance -> Icon Sets */ L2Menu = WMCreatePLArray( WMCreatePLString(_("Icon Sets")), WMCreatePLString("OPEN_MENU"), WMCreatePLString(icon_paths), NULL ); WMAddToPLArray(L1Menu, L2Menu); /* Root -> Appearance -> Background */ L2Menu = WMCreatePLArray(WMCreatePLString(_("Background")), NULL); /* Root -> Appearance -> Background -> Solid */ L3Menu = WMCreatePLArray(WMCreatePLString(_("Solid")), NULL); #define SOLID_BACK(label, colorspec) \ L4Menu = WMCreatePLArray( \ WMCreatePLString(label), \ WMCreatePLString("EXEC"), \ WMCreatePLString("wdwrite WindowMaker WorkspaceBack '(solid, \"" colorspec "\")'"), \ NULL \ ); \ WMAddToPLArray(L3Menu, L4Menu) /* Root -> Appearance -> Background -> Solid -> <color> */ SOLID_BACK(_("Black"), "black"); SOLID_BACK(_("Blue"), "#505075"); SOLID_BACK(_("Indigo"), "#243e6c"); SOLID_BACK(_("Bluemarine"), "#243e6c"); SOLID_BACK(_("Purple"), "#554466"); SOLID_BACK(_("Wheat"), "wheat4"); SOLID_BACK(_("Dark Gray"), "#333340"); SOLID_BACK(_("Wine"), "#400020"); #undef SOLID_BACK WMAddToPLArray(L2Menu, L3Menu); /* Root -> Appearance -> Background -> Gradient */ L3Menu = WMCreatePLArray(WMCreatePLString(_("Gradient")), NULL); #define GRADIENT_BACK(label, fcolorspec, tcolorspec) \ L4Menu = WMCreatePLArray( \ WMCreatePLString(label), \ WMCreatePLString("EXEC"), \ WMCreatePLString("wdwrite WindowMaker WorkspaceBack '(vgradient, \"" \ fcolorspec "\", \"" tcolorspec "\"'"), \ NULL \ ); \ WMAddToPLArray(L3Menu, L4Menu) /* Root -> Appearance -> Background -> Gradient -> <color> */ L4Menu = WMCreatePLArray( WMCreatePLString(_("Sunset")), WMCreatePLString("EXEC"), WMCreatePLString("wdwrite WindowMaker WorkspaceBack " "'(mvgradient, deepskyblue4, black, deepskyblue4, tomato4)'"), NULL ); WMAddToPLArray(L3Menu, L4Menu); GRADIENT_BACK(_("Sky"), "blue4", "white"); GRADIENT_BACK(_("Blue Shades"), "#7080a5", "#101020"); GRADIENT_BACK(_("Indigo Shades"), "#746ebc", "#242e4c"); GRADIENT_BACK(_("Purple Shades"), "#654c66", "#151426"); GRADIENT_BACK(_("Wheat Shades"), "#a09060", "#302010"); GRADIENT_BACK(_("Grey Shades"), "#636380", "#131318"); GRADIENT_BACK(_("Wine Shades"), "#600040", "#180010"); #undef GRADIENT_BACK WMAddToPLArray(L2Menu, L3Menu); /* Root -> Appearance -> Background -> Images */ L3Menu = WMCreatePLArray( WMCreatePLString(_("Images")), WMCreatePLString("OPEN_MENU"), WMCreatePLString("-noext $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t"), NULL ); WMAddToPLArray(L2Menu, L3Menu); WMAddToPLArray(L1Menu, L2Menu); /* Root -> Appearance -> Save Theme */ L2Menu = WMCreatePLArray( WMCreatePLString(_("Save Theme")), WMCreatePLString("SHEXEC"), WMCreatePLString("getstyle -p \"%a(Theme name, Name to save theme as)\""), NULL ); WMAddToPLArray(L1Menu, L2Menu); /* Root -> Appearance -> Save IconSet */ L2Menu = WMCreatePLArray( WMCreatePLString(_("Save IconSet")), WMCreatePLString("SHEXEC"), WMCreatePLString("geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/" "\"%a(IconSet name,Name to save icon set as)\""), NULL ); WMAddToPLArray(L1Menu, L2Menu); WMAddToPLArray(RMenu, L1Menu); /* Root -> Workspaces */ L1Menu = WMCreatePLArray( WMCreatePLString(_("Workspaces")), WMCreatePLString("WORKSPACE_MENU"), NULL ); WMAddToPLArray(RMenu, L1Menu); /* Root -> Workspace */ L1Menu = WMCreatePLArray(WMCreatePLString(_("Workspace")), NULL); L2Menu = WMCreatePLArray( WMCreatePLString(_("Hide Others")), WMCreatePLString("HIDE_OTHERS"), NULL ); WMAddToPLArray(L1Menu, L2Menu); /* Root -> Workspace -> Show All */ L2Menu = WMCreatePLArray( WMCreatePLString(_("Show All")), WMCreatePLString("SHOW_ALL"), NULL ); WMAddToPLArray(L1Menu, L2Menu); /* Root -> Workspace -> Arrange Icons */ L2Menu = WMCreatePLArray( WMCreatePLString(_("Arrange Icons")), WMCreatePLString("ARRANGE_ICONS"), NULL ); WMAddToPLArray(L1Menu, L2Menu); /* Root -> Workspace -> Refresh */ L2Menu = WMCreatePLArray( WMCreatePLString(_("Refresh")), WMCreatePLString("REFRESH"), NULL ); WMAddToPLArray(L1Menu, L2Menu); /* Root -> Workspace -> Save Session */ L2Menu = WMCreatePLArray( WMCreatePLString(_("Save Session")), WMCreatePLString("SAVE_SESSION"), NULL ); WMAddToPLArray(L1Menu, L2Menu); /* Root -> Workspace -> Clear Session */ L2Menu = WMCreatePLArray( WMCreatePLString(_("Clear Session")), WMCreatePLString("CLEAR_SESSION"), NULL ); WMAddToPLArray(L1Menu, L2Menu); WMAddToPLArray(RMenu, L1Menu); /* Root -> Configure Window Maker */ L1Menu = WMCreatePLArray( WMCreatePLString(_("Configure Window Maker")), WMCreatePLString("EXEC"), WMCreatePLString("WPrefs"), NULL ); WMAddToPLArray(RMenu, L1Menu); /* Root -> Info Panel */ L1Menu = WMCreatePLArray( WMCreatePLString(_("Info Panel")), WMCreatePLString("INFO_PANEL"), NULL ); WMAddToPLArray(RMenu, L1Menu); /* Root -> Restart Window Maker */ L1Menu = WMCreatePLArray( WMCreatePLString(_("Restart Window Maker")), WMCreatePLString("RESTART"), NULL ); WMAddToPLArray(RMenu, L1Menu); /* Root -> Other Window Managers [-> <other window manager> ...] */ other_window_managers(); /* Root -> Lock Screen */ t = wfindfile(path, "xlock"); if (t) { L1Menu = WMCreatePLArray( WMCreatePLString(_("Lock Screen")), WMCreatePLString("EXEC"), WMCreatePLString("xlock -allowroot -usefirst -mode matrix"), NULL ); WMAddToPLArray(RMenu, L1Menu); wfree(t); } /* Root -> Exit Window Maker */ L1Menu = WMCreatePLArray( WMCreatePLString(_("Exit Window Maker")), WMCreatePLString("EXIT"), NULL ); WMAddToPLArray(RMenu, L1Menu); printf("%s", WMGetPropListDescription(RMenu, True)); puts(""); return 0; } /* * Creates an L2Menu made of L3Menu items * Attaches to L1Menu * - make sure previous menus of these levels are * attached to their parent before calling */ static void find_and_write(const char *group, char *list[][2], int this_is_terminals) { int i, argc; char *t, **argv, buf[PATH_MAX]; /* or else pre-existing menus of these levels * will badly disturb empty group detection */ L2Menu = NULL; L3Menu = NULL; i = 0; while (list[i][0]) { /* Before checking if app exists, split its options */ wtokensplit(list[i][1], &argv, &argc); t = wfindfile(path, argv[0]); if (t) { /* find a terminal to be used for cmnds that need a terminal */ if (this_is_terminals && !terminal) terminal = wstrdup(list[i][1]); if (*(argv[argc-1]) != '!') { L3Menu = WMCreatePLArray( WMCreatePLString(_(list[i][0])), WMCreatePLString("EXEC"), WMCreatePLString(list[i][1]), NULL ); } else { char comm[PATH_MAX - 9], *ptr; strncpy(comm, list[i][1], sizeof(comm) - 1); comm[sizeof(comm) - 1] = '\0'; /* delete character " !" from the command */ ptr = strchr(comm, '!'); if (ptr != NULL) { while (ptr > comm) { if (!isspace(ptr[-1])) break; ptr--; } *ptr = '\0'; } snprintf(buf, sizeof(buf), "%s -e %s", terminal ? terminal : "xterm" , comm); /* Root -> Applications -> <category> -> <application> */ L3Menu = WMCreatePLArray( WMCreatePLString(_(list[i][0])), WMCreatePLString("EXEC"), WMCreatePLString(buf), NULL ); } if (!L2Menu) L2Menu = WMCreatePLArray( WMCreatePLString(group), NULL ); WMAddToPLArray(L2Menu, L3Menu); wfree(t); } i++; } if (L2Menu) WMAddToPLArray(L1Menu, L2Menu); } /* * Creates an L1Menu made of L2Menu items * - make sure previous menus of these levels are * attached to their parent before calling * Attaches to RMenu */ static void other_window_managers(void) { int i; char *t, buf[PATH_MAX]; /* or else pre-existing menus of these levels * will badly disturb empty group detection */ L1Menu = NULL; L2Menu = NULL; i = 0; while (other_wm[i][0]) { t = wfindfile(path, other_wm[i][1]); if (t) { snprintf(buf, sizeof(buf), _("Start %s"), _(other_wm[i][0])); /* Root -> Other Window Managers -> <other window manager> */ L2Menu = WMCreatePLArray( WMCreatePLString(buf), WMCreatePLString("RESTART"), WMCreatePLString(other_wm[i][1]), NULL ); if (!L1Menu) L1Menu = WMCreatePLArray( WMCreatePLString(_("Other Window Managers")), NULL ); WMAddToPLArray(L1Menu, L2Menu); wfree(t); } i++; } if (L1Menu) WMAddToPLArray(RMenu, L1Menu); } noreturn void print_help(int print_usage, int exitval) { printf("Usage: %s [-h] [-v]\n", prog_name); if (print_usage) { puts("Writes a menu structure usable as ~/GNUstep/Defaults/WMRootMenu to stdout"); puts(""); puts(" -h, --help display this help and exit"); puts(" -v, --version output version information and exit"); } exit(exitval); } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/util/seticons.c������������������������������������������������������������������0000644�0001750�0001750�00000006347�13431646202�013751� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* seticons.c - sets icon configuration in WindowMaker * * WindowMaker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifdef __GLIBC__ #define _GNU_SOURCE /* getopt_long */ #endif #include "config.h" #include <getopt.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #ifdef HAVE_STDNORETURN #include <stdnoreturn.h> #endif #include <WINGs/WUtil.h> #include "../src/wconfig.h" static const char *prog_name; static noreturn void print_help(int print_usage, int exitval) { printf("Usage: %s [-h] [-v] file\n", prog_name); if (print_usage) { puts("Reads icon configuration from FILE and updates Window Maker."); puts(""); puts(" -h, --help display this help and exit"); puts(" -v, --version output version information and exit"); } exit(exitval); } int main(int argc, char **argv) { WMPropList *window_name, *window_attrs, *icon_value; WMPropList *all_windows, *iconset, *keylist; int i, ch; char *path = NULL; struct option longopts[] = { { "version", no_argument, NULL, 'v' }, { "help", no_argument, NULL, 'h' }, { NULL, 0, NULL, 0 } }; prog_name = argv[0]; while ((ch = getopt_long(argc, argv, "hv", longopts, NULL)) != -1) switch(ch) { case 'v': printf("%s (Window Maker %s)\n", prog_name, VERSION); return 0; /* NOTREACHED */ case 'h': print_help(1, 0); /* NOTREACHED */ case 0: break; default: print_help(0, 1); /* NOTREACHED */ } argc -= optind; argv += optind; if (argc != 1) print_help(0, 1); path = wdefaultspathfordomain("WMWindowAttributes"); all_windows = WMReadPropListFromFile(path); if (!all_windows) { printf("%s: could not load WindowMaker configuration file \"%s\".\n", prog_name, path); return 1; } iconset = WMReadPropListFromFile(argv[0]); if (!iconset) { printf("%s: could not load icon set file \"%s\".\n", prog_name, argv[0]); return 1; } keylist = WMGetPLDictionaryKeys(iconset); for (i = 0; i < WMGetPropListItemCount(keylist); i++) { window_name = WMGetFromPLArray(keylist, i); if (!WMIsPLString(window_name)) continue; icon_value = WMGetFromPLDictionary(iconset, window_name); if (!icon_value || !WMIsPLDictionary(icon_value)) continue; window_attrs = WMGetFromPLDictionary(all_windows, window_name); if (window_attrs) { if (WMIsPLDictionary(window_attrs)) { WMMergePLDictionaries(window_attrs, icon_value, True); } } else { WMPutInPLDictionary(all_windows, window_name, icon_value); } } WMWritePropListToFile(all_windows, path); return 0; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/util/wmiv.h����������������������������������������������������������������������0000755�0001750�0001750�00000066365�13431646202�013122� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* XPM */ static char * wmiv_xpm[] = { "64 64 1212 2", " c None", ". c #DBDBDA", "+ c #E1E1E1", "@ c #D9D9D9", "# c #E4E4E4", "$ c #ECECEB", "% c #EAEAEA", "& c #E8E8E8", "* c #E2E2E2", "= c #D6D6D6", "- c #EDEDED", "; c #EDEDEC", "> c #EAEAE9", ", c #E9E9E8", "' c #EBEBEB", ") c #E3E3E3", "! c #EFEFEF", "~ c #ECECEC", "{ c #EBEBEA", "] c #E9E9E9", "^ c #E8E8E7", "/ c #A5A5A5", "( c #F2F2F1", "_ c #EFEFEE", ": c #E7E7E7", "< c #C7C7C7", "[ c #DEDEDD", "} c #F3F3F2", "| c #EEEEEE", "1 c #EEEEED", "2 c #F4F4F3", "3 c #F1F1F0", "4 c #F0F0F0", "5 c #F0F0EF", "6 c #E6E6E5", "7 c #F6F6F5", "8 c #F4F4F2", "9 c #EAEAED", "0 c #D6D5D9", "a c #CBCFC2", "b c #AFAFB0", "c c #F7F7F6", "d c #F2F2F2", "e c #F1F1F1", "f c #EFEEF0", "g c #DFDEE4", "h c #C9CDBD", "i c #B5C08E", "j c #A3B666", "k c #A6BF53", "l c #A7BF53", "m c #DDDCDF", "n c #D4D4D5", "o c #F8F8F7", "p c #F5F5F4", "q c #F4F4F4", "r c #E7E6EC", "s c #D1D3CC", "t c #BAC49A", "u c #A5B76A", "v c #A2BB4D", "w c #A7C04E", "x c #A8C055", "y c #AAC05A", "z c #ABC15F", "A c #ACC261", "B c #CACFB9", "C c #E5E5E5", "D c #F6F6F4", "E c #F3F3F3", "F c #F0EFF2", "G c #D9D9DB", "H c #C2CAA8", "I c #A9BA73", "J c #9FB74C", "K c #A3BF41", "L c #A5C04C", "M c #A7BF50", "N c #A8C056", "O c #A9C059", "P c #ABC15D", "Q c #ACC162", "R c #ADC266", "S c #AEC26A", "T c #BAC597", "U c #F0F0F1", "V c #8C8C8C", "W c #F5F5F5", "X c #F5F4F6", "Y c #E2E1E7", "Z c #CAD0B6", "` c #B0BF7F", " . c #9DB44E", ".. c #9FBD38", "+. c #A2BF40", "@. c #A4BE47", "#. c #A5BF4B", "$. c #A6BF4F", "%. c #A9C156", "&. c #A9C058", "*. c #AAC15C", "=. c #ABC161", "-. c #ADC265", ";. c #AFC36A", ">. c #AFC36D", ",. c #B1C372", "'. c #ADBD7B", "). c #EBEAED", "!. c #BABABA", "~. c #DDDDDC", "{. c #F7F6F7", "]. c #EAE8F0", "^. c #D2D5C7", "/. c #B8C58B", "(. c #9EB453", "_. c #9BBA33", ":. c #9EBE35", "<. c #A0BD3D", "[. c #A2BE42", "}. c #A3BE46", "|. c #A4BF4A", "1. c #A6BF4E", "2. c #A7C053", "3. c #A9C057", "4. c #ACC161", "5. c #ADC269", "6. c #AFC36C", "7. c #B0C370", "8. c #B3C476", "9. c #B2C478", "0. c #B3C479", "a. c #D6D7D6", "b. c #E0E0DF", "c. c #C5C5C5", "d. c #F6F6F6", "e. c #F1F0F5", "f. c #DADAD8", "g. c #BFC99B", "h. c #A3B85D", "i. c #98B631", "j. c #9BBC28", "k. c #9DBC33", "l. c #9CBB36", "m. c #AEC65E", "n. c #B2C864", "o. c #A1BC45", "p. c #A5BF4D", "q. c #A7C052", "r. c #AAC05B", "s. c #ABC15E", "t. c #B0C46C", "u. c #B0C46D", "v. c #B0C36F", "w. c #B5C57C", "x. c #B4C47E", "y. c #B6C581", "z. c #C8CDB7", "A. c #F7F6F9", "B. c #E1E0E5", "C. c #C7CFAD", "D. c #ABBD6F", "E. c #98B439", "F. c #98BB20", "G. c #97BA21", "H. c #96B726", "I. c #98B829", "J. c #9EBD37", "K. c #A0BD3B", "L. c #B1C367", "M. c #F7EBF7", "N. c #FFFCFF", "O. c #FFFFFF", "P. c #FEFEFE", "Q. c #B1C56E", "R. c #A9C05B", "S. c #ABC160", "T. c #A9BF5F", "U. c #AABF63", "V. c #B1C470", "W. c #B2C574", "X. c #B2C477", "Y. c #B1C274", "Z. c #B5C57D", "`. c #B5C67D", " + c #B3C37C", ".+ c #B2C37A", "++ c #B7C293", "@+ c #979797", "#+ c #F8F8F6", "$+ c #FAF9FB", "%+ c #EAE8EF", "&+ c #D0D5BF", "*+ c #B3C280", "=+ c #9BB445", "-+ c #98BA23", ";+ c #9ABC25", ">+ c #9ABB28", ",+ c #9ABB2A", "'+ c #A2BD40", ")+ c #E3E0CC", "!+ c #FFFBFF", "~+ c #F6F8EE", "{+ c #B1C665", "]+ c #9BB938", "^+ c #EAD8E1", "/+ c #FCF7FC", "(+ c #FDFCFC", "_+ c #E5E8D7", ":+ c #A3B95A", "<+ c #A8BD5F", "[+ c #CAD0A4", "}+ c #F0EDE7", "|+ c #F6F7F1", "1+ c #D6DFB8", "2+ c #AEC074", "3+ c #B6C683", "4+ c #AFC170", "5+ c #B2C377", "6+ c #B1C375", "7+ c #AFC272", "8+ c #A9BB6D", "9+ c #E5E5E9", "0+ c #C4C4C4", "a+ c #F2F1F5", "b+ c #D8DAD1", "c+ c #BCC992", "d+ c #A0B654", "e+ c #99BB23", "f+ c #9ABB27", "g+ c #9ABA2E", "h+ c #9BBC2B", "i+ c #96B729", "j+ c #EEDCE9", "k+ c #FAF5FA", "l+ c #FFFEFE", "m+ c #9CB254", "n+ c #F8E2FC", "o+ c #FEFCFE", "p+ c #FCFBFC", "q+ c #FBFBFB", "r+ c #F2F3EF", "s+ c #8C9F4B", "t+ c #E3DAD5", "u+ c #FBF3FC", "v+ c #DBDBDB", "w+ c #A5AA92", "x+ c #8A956A", "y+ c #8A9467", "z+ c #909D65", "A+ c #9EAE66", "B+ c #B2C56F", "C+ c #AFC46B", "D+ c #AABF60", "E+ c #D0D3CA", "F+ c #E7E7E6", "G+ c #BCBCBC", "H+ c #FCFBFD", "I+ c #A5BB5B", "J+ c #9ABB26", "K+ c #9BBB2A", "L+ c #9BBB2B", "M+ c #9CBC2F", "N+ c #9DBA3A", "O+ c #9BB444", "P+ c #F7E1FB", "Q+ c #FEFCFD", "R+ c #F9F8F9", "S+ c #DFE0D2", "T+ c #EFE3EC", "U+ c #FAFBFA", "V+ c #FBFAFA", "W+ c #D9DACF", "X+ c #D4CCC4", "Y+ c #EDE6ED", "Z+ c #A3A4A3", "`+ c #646663", " @ c #40433F", ".@ c #454743", "+@ c #484A47", "@@ c #494B49", "#@ c #484B48", "$@ c #444745", "%@ c #414243", "&@ c #404140", "*@ c #5B6249", "=@ c #829152", "-@ c #C0CAA2", ";@ c #BACA82", ">@ c #9ABB2B", ",@ c #9ABB29", "'@ c #9EBD34", ")@ c #A6C147", "!@ c #9AB734", "~@ c #92AF30", "{@ c #E5D4DD", "]@ c #FCF7FB", "^@ c #FDFDFD", "/@ c #F7F6F6", "(@ c #FCFFFF", "_@ c #FDFFFF", ":@ c #DADAD5", "<@ c #858384", "[@ c #434642", "}@ c #4F514D", "|@ c #545652", "1@ c #494A4C", "2@ c #3E4147", "3@ c #343641", "4@ c #30323F", "5@ c #323440", "6@ c #383A43", "7@ c #404247", "8@ c #484B49", "9@ c #494B47", "0@ c #404241", "a@ c #404141", "b@ c #9C9D9B", "c@ c #A7A6A7", "d@ c #D5DCC0", "e@ c #99BB22", "f@ c #9DBC31", "g@ c #99B92A", "h@ c #D0D2A7", "i@ c #FFF6FF", "j@ c #DDE5BE", "k@ c #A5AE75", "l@ c #F9EBFA", "m@ c #FDFDFE", "n@ c #F8F5F3", "o@ c #F5D394", "p@ c #F1BB5E", "q@ c #EEA832", "r@ c #EA9E1C", "s@ c #F2A31B", "t@ c #A78748", "u@ c #454847", "v@ c #52544F", "w@ c #4A4C4E", "x@ c #171930", "y@ c #0F122B", "z@ c #0C0E29", "A@ c #0C0E28", "B@ c #0D0F29", "C@ c #0F112A", "D@ c #12142B", "E@ c #15172D", "F@ c #191B30", "G@ c #272938", "H@ c #3C3F44", "I@ c #474946", "J@ c #3D403D", "K@ c #3D3F3D", "L@ c #CDCDCD", "M@ c #F1F0F6", "N@ c #96B724", "O@ c #9BBC2C", "P@ c #9CBC30", "Q@ c #9FBC3A", "R@ c #A7BA57", "S@ c #F8E4FB", "T@ c #E0DDD7", "U@ c #FDFDFF", "V@ c #F4D08D", "W@ c #ECA424", "X@ c #EDA12D", "Y@ c #EC9D32", "Z@ c #EB9A36", "`@ c #ED9833", " # c #756041", ".# c #494C4A", "+# c #4F5250", "@# c #2F313E", "## c #171A30", "$# c #13152D", "%# c #10122B", "&# c #090C29", "*# c #080A23", "=# c #1D1F35", "-# c #2B2D41", ";# c #2A2C3F", "># c #25263A", ",# c #0E1028", "'# c #13152C", ")# c #17192E", "!# c #1A1C2F", "~# c #242737", "{# c #3F4244", "]# c #424441", "^# c #3A3D3B", "/# c #ABABAB", "(# c #FDFCFF", "_# c #A6BD57", ":# c #A0BD3F", "<# c #ADB970", "[# c #F7E6F8", "}# c #FAFAFA", "|# c #EEBC57", "1# c #EFA722", "2# c #EC9E2B", "3# c #EB9630", "4# c #EA9135", "5# c #EC8D38", "6# c #665644", "7# c #4C4F4B", "8# c #47494B", "9# c #212335", "0# c #181B30", "a# c #14172F", "b# c #1B1B30", "c# c #4D4331", "d# c #837038", "e# c #A4A5A7", "f# c #A6A6A5", "g# c #A6A5A5", "h# c #A8A8A8", "i# c #A6A6A6", "j# c #8D8E89", "k# c #6E706E", "l# c #353C30", "m# c #191B2E", "n# c #1A1D2F", "o# c #1E2031", "p# c #35373F", "q# c #434542", "r# c #393B39", "s# c #C3CF99", "t# c #9EBD35", "u# c #A1BD3E", "v# c #A1BD3F", "w# c #A2BE44", "x# c #93AC42", "y# c #C9C2B7", "z# c #FFF7FF", "A# c #FDFCFD", "B# c #F1D293", "C# c #EFA912", "D# c #ED9D1A", "E# c #EB901D", "F# c #E98720", "G# c #EE8122", "H# c #71563F", "I# c #4A4D4A", "J# c #424549", "K# c #202334", "L# c #1B1D31", "M# c #181A31", "N# c #594933", "O# c #9C7C34", "P# c #9C8033", "Q# c #9D863B", "R# c #A6A8AB", "S# c #9A9B96", "T# c #86897D", "U# c #676C54", "V# c #4E5633", "W# c #4F592D", "X# c #566329", "Y# c #798453", "Z# c #728045", "`# c #3A432C", " $ c #1A1B30", ".$ c #1E2130", "+$ c #30313B", "@$ c #363937", "#$ c #DCDCDB", "$$ c #DEE1D4", "%$ c #9FBC37", "&$ c #A3BE43", "*$ c #A3BE4B", "=$ c #A4BC53", "-$ c #859B3E", ";$ c #889061", ">$ c #BFBFB0", ",$ c #E7E4E3", "'$ c #FFFDFF", ")$ c #EEB938", "!$ c #EFAA19", "~$ c #EE9E1E", "{$ c #EC9221", "]$ c #EB8A25", "^$ c #9F6935", "/$ c #444846", "($ c #474A4B", "_$ c #222435", ":$ c #1E2032", "<$ c #262531", "[$ c #8E6F3C", "}$ c #9F7D3B", "|$ c #A58534", "1$ c #AF943A", "2$ c #BDAC78", "3$ c #CECECF", "4$ c #D7D6D7", "5$ c #DDDCDD", "6$ c #DDDDDD", "7$ c #C5C7BF", "8$ c #A9AF94", "9$ c #839055", "0$ c #6A7A2F", "a$ c #667829", "b$ c #697A2D", "c$ c #56652B", "d$ c #202331", "e$ c #202230", "f$ c #31343C", "g$ c #3F413F", "h$ c #373937", "i$ c #C3C3C3", "j$ c #F8F6FC", "k$ c #A0B949", "l$ c #A6BF4D", "m$ c #A6BE57", "n$ c #A8C057", "o$ c #A5BD55", "p$ c #AEBC79", "q$ c #C1C3A9", "r$ c #CECEC2", "s$ c #E7E5E2", "t$ c #FCFEFF", "u$ c #EEB92C", "v$ c #F1AF17", "w$ c #EEA019", "x$ c #EC941B", "y$ c #DD8521", "z$ c #3F4545", "A$ c #4D4F4D", "B$ c #282B38", "C$ c #202233", "D$ c #2F2C34", "E$ c #967437", "F$ c #A68134", "G$ c #B38F36", "H$ c #BD9F40", "I$ c #C6AB48", "J$ c #D6D2C8", "K$ c #E0DFDF", "L$ c #EEEDED", "M$ c #F8F7F7", "N$ c #FAF9FA", "O$ c #D9D8DB", "P$ c #B0B59D", "Q$ c #738438", "R$ c #657629", "S$ c #66772A", "T$ c #62722E", "U$ c #212232", "V$ c #232531", "W$ c #373A3F", "X$ c #3E403E", "Y$ c #FCFCFC", "Z$ c #B5C57F", "`$ c #A8C054", " % c #A9C159", ".% c #A8C059", "+% c #DDD8C5", "@% c #FDF5FF", "#% c #FEFFFF", "$% c #F1CE6C", "%% c #F3BC1C", "&% c #EFA90F", "*% c #F19B0E", "=% c #795E33", "-% c #494B48", ";% c #393B42", ">% c #222434", ",% c #252735", "'% c #98772E", ")% c #AC8A33", "!% c #BB9B3F", "~% c #C7AA48", "{% c #CFB340", "]% c #D5C8A6", "^% c #E6E6E7", "/% c #FAFBF7", "(% c #DAD9DA", "_% c #AFB694", ":% c #6D802F", "<% c #66762A", "[% c #616F33", "}% c #272834", "|% c #3E4140", "1% c #313432", "2% c #CED5B4", "3% c #A9C158", "4% c #B9C483", "5% c #F7E4F8", "6% c #FEFDFE", "7% c #F9F8F8", "8% c #F8F8F8", "9% c #FAF9F9", "0% c #F7F1EB", "a% c #F2C62B", "b% c #F4C124", "c% c #E4A718", "d% c #383E42", "e% c #4B4E4B", "f% c #262835", "g% c #7D6930", "h% c #B1953D", "i% c #C0A543", "j% c #CEB344", "k% c #D2B64A", "l% c #DCD1B9", "m% c #EAEAEB", "n% c #F8F7F8", "o% c #ECEFE3", "p% c #BAC29D", "q% c #7C8E39", "r% c #6E7F2F", "s% c #677928", "t% c #464E3A", "u% c #21242F", "v% c #33353B", "w% c #383B38", "x% c #3E403F", "y% c #D5D5D5", "z% c #E5E5E4", "A% c #ADC268", "B% c #AEC36A", "C% c #AFB97F", "D% c #F7E5F8", "E% c #FFFEFF", "F% c #F3E9D9", "G% c #F1C837", "H% c #988635", "I% c #444644", "J% c #3D3F43", "K% c #262735", "L% c #3C3B35", "M% c #B6A03A", "N% c #C0A739", "O% c #C7AC51", "P% c #D4C498", "Q% c #E4E2E6", "R% c #EBEAEA", "S% c #F9F9F9", "T% c #EBECE8", "U% c #DCDED5", "V% c #EDEFE7", "W% c #DEE1D6", "X% c #97A75E", "Y% c #829739", "Z% c #7B8F36", "`% c #6B7D2D", " & c #6C7E2F", ".& c #272933", "+& c #3D403E", "@& c #2F3130", "#& c #B7B7B7", "$& c #FBFAFC", "%& c #ABBD71", "&& c #B0C36E", "*& c #93A55A", "=& c #E0D3DB", "-& c #F3F2F1", ";& c #B6B6A6", ">& c #E6DFE2", ",& c #55544A", "'& c #494C48", ")& c #30323B", "!& c #232533", "~& c #817968", "{& c #B8AC96", "]& c #C8C2C3", "^& c #DDE0DD", "/& c #EAE9E9", "(& c #EEEDEC", "_& c #F3F2F2", ":& c #F4F3F3", "<& c #FBFCFB", "[& c #FCFCFB", "}& c #9EA784", "|& c #757E53", "1& c #9CA385", "2& c #ABB195", "3& c #A7AE8C", "4& c #88994B", "5& c #8FA544", "6& c #89A03A", "7& c #84993B", "8& c #758832", "9& c #67792B", "0& c #667729", "a& c #484F3B", "b& c #24262F", "c& c #3A3D3D", "d& c #313332", "e& c #464846", "f& c #C1CB9F", "g& c #B2C473", "h& c #B3C477", "i& c #717F44", "j& c #7A835B", "k& c #7F8761", "l& c #6A7445", "m& c #697242", "n& c #F1E4EF", "o& c #FCF8FC", "p& c #323532", "q& c #4A4C49", "r& c #292B35", "s& c #242630", "t& c #BBBBB8", "u& c #CFCECF", "v& c #BCBDB5", "w& c #E1E3D8", "x& c #F2F1F1", "y& c #F4F4F1", "z& c #F7F5F5", "A& c #FDFDFC", "B& c #E4E9D4", "C& c #758C25", "D& c #73872D", "E& c #74882E", "F& c #829835", "G& c #8FA73A", "H& c #99AF4B", "I& c #90A83B", "J& c #8CA13F", "K& c #7D9136", "L& c #6E802E", "M& c #647139", "N& c #20232D", "O& c #343739", "P& c #363736", "Q& c #D6DBCA", "R& c #B3C478", "S& c #B5C57E", "T& c #B5C581", "U& c #ACBB78", "V& c #9AAA63", "W& c #94A560", "X& c #91A258", "Y& c #EFDDEC", "Z& c #FBFAFB", "`& c #D5D6D5", " * c #373A37", ".* c #464947", "+* c #282A35", "@* c #43454B", "#* c #C8C7C7", "$* c #D5D5D4", "%* c #A0A48F", "&* c #DEE2D0", "** c #F1F2E8", "=* c #E2E9C8", "-* c #90AF25", ";* c #92B02C", ">* c #93B02E", ",* c #94B22E", "'* c #98B23D", ")* c #99B045", "!* c #94AC40", "~* c #90A641", "{* c #829839", "]* c #74872F", "^* c #647625", "/* c #6D7C37", "(* c #262833", "_* c #2F3136", ":* c #383B39", "<* c #383A39", "[* c #CCCCCB", "}* c #EBEBED", "|* c #B3C37D", "1* c #B3C47D", "2* c #B4C37C", "3* c #B1C378", "4* c #ADC06B", "5* c #AEC16D", "6* c #AFB780", "7* c #F6E3F7", "8* c #BEBFBE", "9* c #3B3D3B", "0* c #424543", "a* c #282A34", "b* c #646568", "c* c #CCCCCC", "d* c #D8D9D4", "e* c #BABFA3", "f* c #7F8E48", "g* c #E8EBDD", "h* c #F8F9F5", "i* c #FCFBFB", "j* c #FEFDFD", "k* c #FEFEFD", "l* c #9BB04E", "m* c #94B328", "n* c #95B42A", "o* c #96B52C", "p* c #97B52D", "q* c #97B52F", "r* c #97B13D", "s* c #94AD3A", "t* c #97AD4D", "u* c #A0AE71", "v* c #A4AA8E", "w* c #A0A0A0", "x* c #869064", "y* c #34363D", "z* c #2D2F33", "A* c #393C3A", "B* c #2E302F", "C* c #A9A9A8", "D* c #B5C18D", "E* c #B1C276", "F* c #AFC270", "G* c #A9BE61", "H* c #ABBF66", "I* c #8FA151", "J* c #ECDAE9", "K* c #A1A39D", "L* c #3C3F3D", "M* c #424442", "N* c #6C6D6F", "O* c #D1D1D1", "P* c #D8DBCE", "Q* c #B4BD91", "R* c #88A038", "S* c #819341", "T* c #D1D6C2", "U* c #E6E8E1", "V* c #7E8D48", "W* c #87A425", "X* c #94B327", "Y* c #95B427", "Z* c #92B323", "`* c #96B42E", " = c #B2C76A", ".= c #CED9A5", "+= c #E2E4D9", "@= c #E2E0E5", "#= c #D1D1CF", "$= c #BCBCBB", "%= c #939785", "&= c #393C3C", "*= c #2D3032", "== c #3A3C3A", "-= c #2A2C2C", ";= c #F7F7F7", ">= c #A9BF61", ",= c #ACC06A", "'= c #A5BC55", ")= c #A8BE5E", "!= c #9FB553", "~= c #809145", "{= c #B6B89F", "]= c #BBC1A7", "^= c #8B9762", "/= c #5A682E", "(= c #3C3E3E", "_= c #424542", ":= c #292B34", "<= c #717274", "[= c #D4D3D4", "}= c #D7DBC8", "|= c #8C9D50", "1= c #97AF44", "2= c #8DA831", "3= c #788E2C", "4= c #72823D", "5= c #86915E", "6= c #6E7C41", "7= c #5E711A", "8= c #7B971E", "9= c #8BAB1B", "0= c #A8C153", "a= c #C6D592", "b= c #E4E9D1", "c= c #FAF8FD", "d= c #F6F5F6", "e= c #ECECEA", "f= c #E1E0DF", "g= c #D2D2D0", "h= c #C0BFBF", "i= c #9E9F9D", "j= c #333737", "k= c #2E3132", "l= c #292C2B", "m= c #DBDED2", "n= c #A1BB4C", "o= c #A5BD56", "p= c #A2BB4E", "q= c #9EB74B", "r= c #91A941", "s= c #8BA43A", "t= c #93AD3B", "u= c #7C9138", "v= c #383A3A", "w= c #434643", "x= c #2B2D34", "y= c #5F6063", "z= c #CACBC7", "A= c #919F60", "B= c #8CA141", "C= c #98B13E", "D= c #97B239", "E= c #92AF2D", "F= c #88A427", "G= c #7E9A1D", "H= c #8DA53E", "I= c #B0C178", "J= c #D7DFBA", "K= c #F8F7F9", "L= c #F8F7FA", "M= c #E2E2E0", "N= c #D3D3D2", "O= c #C1C1C0", "P= c #ABABAA", "Q= c #A09FA0", "R= c #2F3234", "S= c #323533", "T= c #2D302E", "U= c #F2F1F6", "V= c #A5BA60", "W= c #A4BC52", "X= c #A2BA4C", "Y= c #9EB942", "Z= c #A1BA4B", "`= c #A0BA48", " - c #9DB943", ".- c #9DB83F", "+- c #9BB73B", "@- c #99B736", "#- c #89A232", "$- c #333538", "%- c #434543", "&- c #2F3135", "*- c #647233", "=- c #8CA045", "-- c #96AE44", ";- c #95AE3B", ">- c #9AB836", ",- c #B6CA72", "'- c #D2DDAD", ")- c #EEEFE8", "!- c #F4F5F3", "~- c #F5F5F3", "{- c #F4F3F2", "]- c #F3F3F1", "^- c #E1E1E0", "/- c #D3D3D1", "(- c #C0C0BF", "_- c #AAA9A9", ":- c #919291", "<- c #25272A", "[- c #343735", "}- c #333634", "|- c #363837", "1- c #949494", "2- c #B0C07E", "3- c #9FBA46", "4- c #9BB73A", "5- c #9DB942", "6- c #9AB738", "7- c #9AB637", "8- c #98B533", "9- c #97B52E", "0- c #99BA29", "a- c #323435", "b- c #424541", "c- c #353737", "d- c #2E2F37", "e- c #7D8F3E", "f- c #A0B164", "g- c #C3CD9A", "h- c #E3E6D5", "i- c #F4F4F5", "j- c #F2F2F0", "k- c #EBEAE9", "l- c #DFDFDE", "m- c #BEBDBD", "n- c #A7A7A6", "o- c #767675", "p- c #272A2B", "q- c #373A38", "r- c #C7D0A9", "s- c #A1BB4A", "t- c #9CB83D", "u- c #9AB73A", "v- c #9AB739", "w- c #99B634", "x- c #96B52D", "y- c #90B11E", "z- c #94B625", "A- c #545C41", "B- c #2A2C31", "C- c #87878A", "D- c #D8D7D8", "E- c #E3E2E1", "F- c #F2F1F0", "G- c #F5F4F4", "H- c #F0EFEE", "I- c #E8E7E6", "J- c #DCDBDA", "K- c #BAB9B8", "L- c #464847", "M- c #2C2F2E", "N- c #393C39", "O- c #282B2A", "P- c #DEE0DA", "Q- c #9CB83C", "R- c #9CB83F", "S- c #99B635", "T- c #95B42C", "U- c #91B124", "V- c #C3D290", "W- c #DEE4CC", "X- c #F4F2F9", "Y- c #ACADAD", "Z- c #3F423F", "`- c #313333", " ; c #3D3F41", ".; c #DEDEDC", "+; c #F1F0EE", "@; c #E3E3E1", "#; c #D7D7D5", "$; c #C7C7C5", "%; c #B2B2B1", "&; c #898989", "*; c #292B2A", "=; c #343635", "-; c #292C2A", ";; c #B7B7B6", ">; c #99B342", ",; c #95B32D", "'; c #A3BD4D", "); c #BECE85", "!; c #D9E0BE", "~; c #F3F2F5", "{; c #3E403D", "]; c #2C2D30", "^; c #7F807F", "/; c #E4E4E2", "(; c #F1F2F0", "_; c #F5F4F3", ":; c #E8E8E6", "<; c #DDDCDB", "[; c #C3C3C2", "}; c #A2A2A1", "|; c #777777", "1; c #2A2D2C", "2; c #FBFBFA", "3; c #E6EAD7", "4; c #EEEFEA", "5; c #F6F5F9", "6; c #F2F1F2", "7; c #9A9A99", "8; c #2D3031", "9; c #B5B5B3", "0; c #E5E5E3", "a; c #F1F1EF", "b; c #E7E6E6", "c; c #CACAC9", "d; c #A7A6A6", "e; c #737373", "f; c #4E4E4E", "g; c #2E2E2E", "h; c #282B29", "i; c #252828", "j; c #303231", "k; c #333535", "l; c #BFBFBD", "m; c #E5E4E3", "n; c #EFEEED", "o; c #D9D8D7", "p; c #BBBABA", "q; c #8A8A89", "r; c #5D5D5C", "s; c #424141", "t; c #333331", "u; c #434341", "v; c #2C2F2D", "w; c #262929", "x; c #3B3E3C", "y; c #CACACA", "z; c #D1D2D0", "A; c #2A2D2B", "B; c #3B3D3C", "C; c #353836", "D; c #ADADAC", "E; c #E0E0DE", "F; c #E8E7E5", "G; c #DAD8D8", "H; c #C2C2C1", "I; c #9B9A9A", "J; c #656564", "K; c #474746", "L; c #2E2D2C", "M; c #2B2D2C", "N; c #A2A2A3", "O; c #D4D4D4", "P; c #A3A3A3", "Q; c #4E4F4E", "R; c #2E312F", "S; c #2B2E2C", "T; c #70716F", "U; c #9C9C9B", "V; c #6D6D6C", "W; c #515150", "X; c #353433", "Y; c #3B3A39", "Z; c #545453", "`; c #363936", " > c #262928", ".> c #DADADA", "+> c #B3B3B3", "@> c #343434", "#> c #050505", "$> c #000000", "%> c #383938", "&> c #323434", "*> c #454746", "=> c #595A58", "-> c #4C4D4B", ";> c #272A29", ">> c #CECECE", ",> c #C2C2C2", "'> c #848484", ")> c #424242", "!> c #141414", "~> c #323432", "{> c #333534", "]> c #393B3A", "^> c #323433", "/> c #343736", "(> c #252827", "_> c #909291", ":> c #C5CBCC", "<> c #272727", "[> c #7A7A7A", "}> c #545454", "|> c #222222", "1> c #333633", "2> c #2A2C2B", "3> c #242726", "4> c #7B7F80", "5> c #6F7270", "6> c #A2A29C", "7> c #D0D4D5", "8> c #CBB58E", "9> c #393C3B", "0> c #353735", "a> c #727675", "b> c #878A89", "c> c #B28D4F", "d> c #D2A158", "e> c #E4B573", "f> c #424443", "g> c #373939", "h> c #323534", "i> c #2B2E2D", "j> c #272928", "k> c #282A29", "l> c #2C2E2D", "m> c #785B2A", "n> c #A06A14", "o> c #B78433", "p> c #D9AA6A", "q> c #E6B87A", "r> c #E9BA74", "s> c #593805", "t> c #815103", "u> c #9F6A14", "v> c #BA883A", "w> c #DCAD71", "x> c #E6B97D", "y> c #E9BA75", "z> c #57390B", "A> c #7F4F02", "B> c #9E6913", "C> c #BD8B40", "D> c #DDAF75", "E> c #E6B87F", "F> c #E9BA77", "G> c #553A0E", "H> c #7D4E02", "I> c #C28F47", "J> c #DEB177", "K> c #E6B97F", "L> c #EABB78", "M> c #553B11", "N> c #7C4D01", "O> c #9E6914", "P> c #C3924C", "Q> c #DEB178", "R> c #E9BB79", "S> c #553C13", "T> c #7A4C01", "U> c #C5944F", "V> c #E6B87E", "W> c #563D16", "X> c #794B01", "Y> c #C79653", "Z> c #DEB078", "`> c #E5B77C", " , c #563E18", "., c #784B02", "+, c #9F6914", "@, c #C89856", "#, c #E4B67A", "$, c #56401B", "%, c #784B04", "&, c #9F6A16", "*, c #C99957", "=, c #DBAC71", "-, c #59411E", ";, c #7A4E08", ">, c #9B6712", ",, c #B48131", "', c #513811", "), c #734801", " ", " ", " ", " . + ", " @ # $ % & & * ", " = # - ; % > > , & & ' ", " ) ; ! ~ $ ' { % > ] , , ^ & / ", " + $ ( _ - ; ; ~ $ ' { % > ] ] & & : < ", " [ { } ( _ _ | 1 1 ; ~ ~ $ { { % > ] , & & : ^ ", " @ & } 2 3 4 5 5 _ _ | 1 - ; ; $ $ { % % > ] , & & : % ", " 6 ( 7 8 ( ( ( 3 4 5 5 _ _ | 1 - ; ~ $ $ { % > ] ] { 9 0 a > b ", " * _ c 7 2 2 } } d ( e 3 4 5 5 _ | | 1 - ; ~ $ ' { $ f g h i j k l m n ", " [ $ c o 7 p p q 2 2 } } d ( 3 3 4 5 5 _ | | 1 ; ; - e r s t u v w x y z A B ! ", " C o 7 7 7 7 7 D p 2 2 E } } ( ( 3 3 5 5 5 _ | 1 e F G H I J K L M N O P Q R S T U V ", " $ 7 7 7 7 7 7 W p q 2 2 } d ( ( e 3 5 5 e X Y Z ` ...+.@.#.$.%.&.*.=.-.;.>.,.'.).!. ", " ~.7 7 7 7 7 7 p p q 2 8 } d ( e ( {.].^./.(._.:.<.[.}.|.1.2.3.P 4.-.5.6.7.8.9.0.a.b. ", " c.c 7 7 7 7 7 p p 2 2 } } d.e.f.g.h.i.j.k...l.m.n.o.p.q.N r.s.Q t.u.v.,.9.w.x.y.z.d ", " c 7 7 7 7 7 p p d.A.B.C.D.E.F.G.H.I.J.K.L.M.N.O.P.Q.R.S.=.T.U.V.W.X.Y.Z.`. +.+++d @+ ", " { 7 7 7 #+$+%+&+*+=+-+;+>+,+'+)+!+~+{+]+^+/+(+P.O._+:+<+[+}+|+1+2+x.3+4+5+6+7+8+9+0+ ", " = 7 a+b+c+d+I.e+f+>+>+g+h+i+j+k+l+O.O.m+n+o+p+q+O.r+s+t+u+O.O.v+w+x+y+z+A+B+C+D+E+F+ ", " G+H+I+F.J+>+>+K+>+>+L+M+N+O+P+Q+R+P.O.S+T+o+U+V+O.W+X+Y+Z+`+ @.@+@@@#@$@%@&@*@=@-@E ", " 7 ;@>+>+>+>+>@,@,+'@)@!@~@{@]@^@/@l+O.' O.(@_@O.:@<@[@}@|@1@2@3@4@5@6@7@8@9@0@a@b@c@ ", " # d@e@>+>+,@f@g@h@i@O.O.j@k@l@o+m@n@o@p@q@r@s@t@u@v@w@4@x@y@z@A@B@C@D@E@F@G@H@I@J@K@ ", " L@M@N@>+O@P@Q@R@S@o+(+(+O.O.T@U@V@W@X@Y@Z@`@ #.#+#@###$#%#&#*#=#-#;#>#,#'#)#!#~#{#]#^# ", " /#(#_#M+k...:#<#[#l+P.V+{.}#O.|#1#2#3#4#5#6#7#8#9#0#a#b#c#d#e#f#g#h#i#j#k#l#m#n#o#p#q#r# ", " 3 s#t#u#v#w#x#y#z#o+O.P.A#B#C#D#E#F#G#H#I#J#K#L#M#N#O#P#Q#R#S#T#U#V#W#X#Y#Z#`# $.$+$]#@$ ", " #$$$%$&$*$#.=$-$;$>$,$'$O.)$!$~${$]$^$/$($_$:$<$[$}$|$1$2$3$4$5$6$7$8$9$0$a$b$c$d$e$f$g$h$ ", " i$j$k$l$l$m$n$o$p$q$r$s$t$u$v$w$x$y$z$A$B$C$D$E$F$G$H$I$J$K$L$M$N$A#e O$P$Q$R$S$T$U$V$W$r#X$ ", " Y$Z$x `$ %.%+%@%o+P.A##%$%%%&%*%=%-%;%>%,%'%)%!%~%{%]%^%$ {.q+A#q+/%} (%_%:%S$<%[%o#}%|%1% ", " $ 2%3%z Q 4%5%6%q+7%8%9%0%a%b%c%d%e%f%K#g%h%i%j%k%l%m%_ 2 n%V+Y$O.O.o%C p%q%r%S$s%t%u%v%w%x% ", " y%z%.%A%B%C%D%E%O.O.O.O.E%F%G%H%I%J%K%L%M%N%O%P%Q%R%2 c S%T%U%O.6%8%V%W%X%Y%Z%`%S$ &K%.&+&@& ", " #&$&%&&&7.*&=&N.O.O.-&;&>&N.E%,&'&)&!&~&{&]&^&/&(&_&:&<&[&O.}&|&1&2&3&4&5&6&7&8&9&0&a&b&c&d&e& ", " }#f&g&h&I i&j&k&l&m&n&o&n%M$p&q&r&s&t&u&v&w&x&y&z&{.7%Y$A&B&C&D&E&F&G&H&I&J&K&L&<%M&N&O&P&x% ", " C Q&R&S&T&U&V&W&X&Y&o&Z&p+`& *.*+*@*#*$*%*&*n%**n%Y$V+A&A&=*-*;*>*,*'*)*!*~*{*]*^*/*(*_*:*<* ", " [*}*|*1*2*3*4*5*6*7*6%P.O.8*9*0*a*b*c*d*e*f*g*h*i*Y$j*k*O.l*m*n*o*p*q*r*s*t*u*v*w*x*y*z*A*B* ", " C*A#D*E*F*F*G*H*I*J*]@O.O.K*L*M*a*N*O*P*Q*R*S*T*O.O.O.U*V*W*X*Y*Z*`* =.=+=@=#=$=/ %=&=*===-= ", " ;=C.F*>=,='=)=!=~={=]=^=/=(=_=:=<=[=}=|=1=2=3=4=5=6=7=8=9=0=a=b=c=d=( e=f=g=h=C*i=j=k=r#l= ", " [ m=T.U.'=n=o=p=q=r=s=t=u=v=w=x=y=z=A=B=C=D=E=F=G=H=I=J=K=L=p q q 8 -&$ M=N=O=P=Q=R=S=@$T= ", " i$U=V=W=X=Y=Z=`= -.-+-@-#-$-%-&-<**-=---;->-,-'-)-A.7 7 7 p p !-~-{-]-e=^-/-(-_-:-<-[-}-|- ", " 1-E%2-=$3-4-5-Y=6-7-8-9-0-a-b-c-d-e-f-g-h-j$i-2 2 p p p p p ~-q !-8 j-k-l-#=m-n-o-p-q-B*^# ", " e r-s-Y=t-u-v-w-x-n*y-z-A-J@9*B-C-D-E-$ F-{-~-p G-~-p p ~-q ~-8 } H-I-J-[*K-i#L-M-N-O- ", " y%P-Q-R-4-S-T-U-x V-W-X-Y-S=Z-`- ;g=.;^ +;{-8 2 ~-p q ~-q ~-2 8 -&$ @;#;$;%;&;*;d&=;-; ", " ;;j$>;,;';);!;a+~;! _ | } [-{;h$];^;f./;e=(;{-8 2 _;p 2 2 2 8 -&1 :;<;[;};|;K@1;q-1;:* ", " 2;3;4;5;6;3 4 5 ! _ | _ 7;1%X$1%8;9;#$0;$ a;} {-8 {-} 8 _;( b;c;d;e;f;g;|-h;d&S=i; ", " : d ( e 3 3 4 5 _ _ | 1 ( 0*r#N-j;k;l;#$m;> n;F-]-( 3 o;p;q;r;s;t;u; %-1;v;h$w;x; ", " y;( ( ( 3 4 5 5 _ _ | 1 - z;A;B;C;@&c-D;~.E;F;G;H;I;J;K;L; q#O-M;h$A;T= ", " N;7 ( ( 3 4 5 ! ! 5 | $ O;P;Q;R;^#C;R;S;T;U;V;W;X;Y; Z;`; >S;h$v;*; ", " d.( 3 3 e a;4 .>+>e;@>#>$> %>T=:*q-R;M;&>*>=> ->:*h;O-R;C;-=;> ", " >>p ( + ,>'>)>!>$> @&~>A*{>v;A;h;T=]>A*:*^>;> >h;v;/>S=(>M;_>:> ", " <>[>}>|>$>$> B;O-1>w%C;j;M-1;2>A;-=M-1%`;{>O-3>h$4>5>6>7>8> ", " 9>O-M;^>0>@$|-|-[-1%v;(> >[- a>b>c>d>e> ", " f>g>h>i>j>k>l>d&[- m>n>o>p>q>r> ", " s>t>u>v>w>x>y> ", " z>A>B>C>D>E>F> ", " G>H>B>I>J>K>L> ", " M>N>O>P>Q>E>R> ", " S>T>O>U>Q>V> ", " W>X>O>Y>Z>`> ", " ,.,+,@,Q>#, ", " $,%,&,*,=, ", " -,;,>,,, ", " ',), ", " ", " "}; ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/util/getstyle.c������������������������������������������������������������������0000644�0001750�0001750�00000022553�13431646202�013757� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* getstyle.c - outputs style related options from WindowMaker to stdout * * WindowMaker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifdef __GLIBC__ #define _GNU_SOURCE /* getopt_long */ #endif #include "config.h" #include <sys/types.h> #include <sys/stat.h> #include <errno.h> #include <fcntl.h> #include <getopt.h> #include <libgen.h> #include <limits.h> #include <pwd.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <strings.h> #include <unistd.h> #ifdef HAVE_STDNORETURN #include <stdnoreturn.h> #endif #include <WINGs/WUtil.h> #include "common.h" #ifndef PATH_MAX #define PATH_MAX 1024 #endif #include "../src/wconfig.h" /* table of style related options */ static char *options[] = { "TitleJustify", "ClipTitleFont", "WindowTitleFont", "MenuTitleFont", "MenuTextFont", "IconTitleFont", "LargeDisplayFont", "HighlightColor", "HighlightTextColor", "ClipTitleColor", "CClipTitleColor", "FTitleColor", "PTitleColor", "UTitleColor", "FTitleBack", "PTitleBack", "UTitleBack", "ResizebarBack", "MenuTitleColor", "MenuTextColor", "MenuDisabledColor", "MenuTitleBack", "MenuTextBack", "IconBack", "IconTitleColor", "IconTitleBack", "FrameBorderWidth", "FrameBorderColor", "FrameFocusedBorderColor", "FrameSelectedBorderColor", "MenuStyle", "WindowTitleExtendSpace", "MenuTitleExtendSpace", "MenuTextExtendSpace", NULL }; /* table of theme related options */ static char *theme_options[] = { "WorkspaceBack", "NormalCursor", "ArrowCursor", "MoveCursor", "ResizeCursor", "TopLeftResizeCursor", "TopRightResizeCursor", "BottomLeftResizeCursor", "BottomRightResizeCursor", "VerticalResizeCursor", "HorizontalResizeCursor", "WaitCursor", "QuestionCursor", "TextCursor", "SelectCursor", NULL }; /* table of style related fonts */ static char *font_options[] = { "ClipTitleFont", "WindowTitleFont", "MenuTitleFont", "MenuTextFont", "IconTitleFont", "LargeDisplayFont", NULL }; static const char *prog_name; WMPropList *PixmapPath = NULL; char *ThemePath = NULL; static noreturn void print_help(int print_usage, int exitval) { printf("Usage: %s [-t] [-p] [-h] [-v] [file]\n", prog_name); if (print_usage) { puts("Retrieves style/theme configuration and outputs to ~/GNUstep/Library/WindowMaker/Themes/file.themed/style or to stdout"); puts(""); puts(" -h, --help display this help and exit"); puts(" -v, --version output version information and exit"); puts(" -t, --theme-options output theme related options when producing a style file"); puts(" -p, --pack produce output as a theme pack"); } exit(exitval); } static Bool isFontOption(const char *option) { int i; for (i = 0; font_options[i] != NULL; i++) { if (strcasecmp(option, font_options[i]) == 0) { return True; } } return False; } static void findCopyFile(const char *dir, const char *file) { char *fullPath; fullPath = wfindfileinarray(PixmapPath, file); if (!fullPath) { wwarning("Could not find file %s", file); if (ThemePath) (void)wrmdirhier(ThemePath); return; } wcopy_file(dir, fullPath, file); wfree(fullPath); } #define THEME_SUBPATH "/Library/WindowMaker/Themes/" #define THEME_EXTDIR ".themed/" static void makeThemePack(WMPropList * style, const char *themeName) { WMPropList *keys; WMPropList *key; WMPropList *value; int i; size_t themeNameLen; char *themeDir; const char *user_base; user_base = wusergnusteppath(); if (user_base == NULL) return; themeNameLen = strlen(user_base) + sizeof(THEME_SUBPATH) + strlen(themeName) + sizeof(THEME_EXTDIR) + 1; themeDir = wmalloc(themeNameLen); snprintf(themeDir, themeNameLen, "%s" THEME_SUBPATH "%s" THEME_EXTDIR, user_base, themeName); ThemePath = themeDir; if (!wmkdirhier(themeDir)) { wwarning("Could not make theme dir %s\n", themeDir); return; } keys = WMGetPLDictionaryKeys(style); for (i = 0; i < WMGetPropListItemCount(keys); i++) { key = WMGetFromPLArray(keys, i); value = WMGetFromPLDictionary(style, key); if (value && WMIsPLArray(value) && WMGetPropListItemCount(value) > 2) { WMPropList *type; char *t; type = WMGetFromPLArray(value, 0); t = WMGetFromPLString(type); if (t == NULL) continue; if (strcasecmp(t, "tpixmap") == 0 || strcasecmp(t, "spixmap") == 0 || strcasecmp(t, "cpixmap") == 0 || strcasecmp(t, "mpixmap") == 0 || strcasecmp(t, "tdgradient") == 0 || strcasecmp(t, "tvgradient") == 0 || strcasecmp(t, "thgradient") == 0) { WMPropList *file; char *p; char *newPath; file = WMGetFromPLArray(value, 1); p = strrchr(WMGetFromPLString(file), '/'); if (p) { newPath = wstrdup(p + 1); wcopy_file(themeDir, WMGetFromPLString(file), newPath); WMDeleteFromPLArray(value, 1); WMInsertInPLArray(value, 1, WMCreatePLString(newPath)); free(newPath); } else { findCopyFile(themeDir, WMGetFromPLString(file)); } } else if (strcasecmp(t, "bitmap") == 0) { WMPropList *file; char *p; char *newPath; file = WMGetFromPLArray(value, 1); p = strrchr(WMGetFromPLString(file), '/'); if (p) { newPath = wstrdup(p + 1); wcopy_file(themeDir, WMGetFromPLString(file), newPath); WMDeleteFromPLArray(value, 1); WMInsertInPLArray(value, 1, WMCreatePLString(newPath)); free(newPath); } else { findCopyFile(themeDir, WMGetFromPLString(file)); } file = WMGetFromPLArray(value, 2); p = strrchr(WMGetFromPLString(file), '/'); if (p) { newPath = wstrdup(p + 1); wcopy_file(themeDir, WMGetFromPLString(file), newPath); WMDeleteFromPLArray(value, 2); WMInsertInPLArray(value, 2, WMCreatePLString(newPath)); free(newPath); } else { findCopyFile(themeDir, WMGetFromPLString(file)); } } } } WMReleasePropList(keys); } int main(int argc, char **argv) { WMPropList *prop, *style, *key, *val; char *path; int i, ch, theme_too = 0, make_pack = 0; char *style_file = NULL; struct option longopts[] = { { "pack", no_argument, NULL, 'p' }, { "theme-options", no_argument, NULL, 't' }, { "version", no_argument, NULL, 'v' }, { "help", no_argument, NULL, 'h' }, { NULL, 0, NULL, 0 } }; prog_name = argv[0]; while ((ch = getopt_long(argc, argv, "ptvh", longopts, NULL)) != -1) switch(ch) { case 'v': printf("%s (Window Maker %s)\n", prog_name, VERSION); return 0; /* NOTREACHED */ case 'h': print_help(1, 0); /* NOTREACHED */ case 'p': make_pack = 1; theme_too = 1; break; case 't': theme_too = 1; case 0: break; default: print_help(0, 1); /* NOTREACHED */ } /* At most one non-option ARGV-element is accepted (the theme name) */ if (argc - optind > 1) print_help(0, 1); if (argc - optind == 1) style_file = argv[argc - 1]; if (make_pack && !style_file) { printf("%s: you must supply a name for the theme pack\n", prog_name); return 1; } WMPLSetCaseSensitive(False); path = wdefaultspathfordomain("WindowMaker"); prop = WMReadPropListFromFile(path); if (!prop) { printf("%s: could not load WindowMaker configuration file \"%s\".\n", prog_name, path); return 1; } /* get global value */ path = wglobaldefaultspathfordomain("WindowMaker"); val = WMReadPropListFromFile(path); if (val) { WMMergePLDictionaries(val, prop, True); WMReleasePropList(prop); prop = val; } style = WMCreatePLDictionary(NULL, NULL); for (i = 0; options[i] != NULL; i++) { key = WMCreatePLString(options[i]); val = WMGetFromPLDictionary(prop, key); if (val) { WMRetainPropList(val); if (isFontOption(options[i])) { char *newfont, *oldfont; oldfont = WMGetFromPLString(val); newfont = convertFont(oldfont, False); /* newfont is a reference to old if conversion is not needed */ if (newfont != oldfont) { WMReleasePropList(val); val = WMCreatePLString(newfont); wfree(newfont); } } WMPutInPLDictionary(style, key, val); WMReleasePropList(val); } WMReleasePropList(key); } val = WMGetFromPLDictionary(prop, WMCreatePLString("PixmapPath")); if (val) PixmapPath = val; if (theme_too) { for (i = 0; theme_options[i] != NULL; i++) { key = WMCreatePLString(theme_options[i]); val = WMGetFromPLDictionary(prop, key); if (val) WMPutInPLDictionary(style, key, val); } } if (make_pack) { char *path; makeThemePack(style, style_file); path = wmalloc(strlen(ThemePath) + 32); strcpy(path, ThemePath); strcat(path, "/style"); WMWritePropListToFile(style, path); wfree(path); } else { if (style_file) { WMWritePropListToFile(style, style_file); } else { puts(WMGetPropListDescription(style, True)); } } return 0; } �����������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/util/bughint���������������������������������������������������������������������0000755�0001750�0001750�00000002335�13431646202�013335� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh # # Use this to gather data about your system and send me # the sysinfo.txt file with your bugreport, plus any error # messages you've received. This program should be run under X. # echo gathering information for bug tracking... uname -a > sysinfo.txt wmaker --version >> sysinfo.txt echo "=============== xdpyinfo ================" >> sysinfo.txt xdpyinfo >> sysinfo.txt echo "=============== env ================" >> sysinfo.txt env >> sysinfo.txt echo "=============== ldconfig ================" >> sysinfo.txt if [ `uname` = 'Linux' ]; then /sbin/ldconfig -p >> sysinfo.txt else /sbin/ldconfig -r >> sysinfo.txt fi echo "=============== config.cache ================" >> sysinfo.txt cat ../config.cache ../Version >> sysinfo.txt 2> /dev/null cat config.cache Version >> sysinfo.txt 2> /dev/null echo "=============== configuration dir ===========" >> sysinfo.txt WDIR=$HOME/GNUstep/Defaults if [ -d $WDIR ]; then for i in WMGLOBAL WMRootMenu WMState WMWindowAttributes WindowMaker; do if [ -f $WDIR/$i ]; then echo "============== $i ========" >> sysinfo.txt cat $WDIR/$i >> sysinfo.txt fi done else echo "No config directory found" >> sysinfo.txt fi bzip2 -9f sysinfo.txt || gzip -9f sysinfo.txt echo done. ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/util/wdread.c��������������������������������������������������������������������0000644�0001750�0001750�00000005220�13431646202�013355� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* wdread.c - read value from defaults database * * WindowMaker window manager * * Copyright (c) 1997-2003 Alfredo K. Kojima * (cowardly remade from wdwrite.c; by judas@hell on Jan 26 2001) * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifdef __GLIBC__ #define _GNU_SOURCE /* getopt_long */ #endif /* * WindowMaker defaults DB reader */ #include "config.h" #include <getopt.h> #include <limits.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #ifdef HAVE_STDNORETURN #include <stdnoreturn.h> #endif #include <WINGs/WUtil.h> #include "../src/wconfig.h" static const char *prog_name; static noreturn void print_help(int print_usage, int exitval) { printf("Usage: %s [OPTIONS] <domain> <key>\n", prog_name); if (print_usage) { puts("Read <key> from <domain>'s database"); puts(""); puts(" -h, --help display this help message"); puts(" -v, --version output version information and exit"); } exit(exitval); } int main(int argc, char **argv) { char path[PATH_MAX]; WMPropList *key, *value, *dict; int ch; struct option longopts[] = { { "version", no_argument, NULL, 'v' }, { "help", no_argument, NULL, 'h' }, { NULL, 0, NULL, 0 } }; prog_name = argv[0]; while ((ch = getopt_long(argc, argv, "hv", longopts, NULL)) != -1) switch(ch) { case 'v': printf("%s (Window Maker %s)\n", prog_name, VERSION); return 0; /* NOTREACHED */ case 'h': print_help(1, 0); /* NOTREACHED */ case 0: break; default: print_help(0, 1); /* NOTREACHED */ } argc -= optind; argv += optind; if (argc != 2) print_help(0, 1); key = WMCreatePLString(argv[1]); snprintf(path, sizeof(path), "%s", wdefaultspathfordomain(argv[0])); dict = WMReadPropListFromFile(path); if (dict == NULL) return 1; /* bad domain */ value = WMGetFromPLDictionary(dict, key); if (value == NULL) return 2; /* bad key */ printf("%s\n", WMGetPropListDescription(value, True)); return 0; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/util/common.h��������������������������������������������������������������������0000644�0001750�0001750�00000002140�13431646202�013402� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Command-line utilities for WindowMaker * * Copyright (c) 1997-2003 Alfredo K. Kojima * Copyright (c) 2004 Dan Pascu * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301, USA. */ /* * Functions that are used by more than one tool */ #ifndef UTIL_COMMON_H #define UTIL_COMMON_H /* ---[ util/fontconv.c ]------------------------------------------------- */ char *convertFont(char *font, Bool keepXLFD); #endif ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/util/wkdemenu.pl�����������������������������������������������������������������0000644�0001750�0001750�00000027363�13431646202�014133� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl # # # kde2wmaker.pl: # # # This script, made for users of Window Maker (http://windowmaker.info) is to # be used along with KDE (http://www.kde.org). # # # The default directory, /usr/share/applnk, will contain various # sub-directories such as Development, Editors, Internet, etc. If for some # reason, you wish to use an alternate (parent) directory that contains the # various applnk files, it can be specified on the command line. # # The directory, if an alternate is specified, MUST be a parent directory to # any/all sub-directories. # # Usage: kde2wmaker.pl [ Options... ] # # Options: # # -d <KDE App.kdelnk dir> # -f <output menufile> # -t <X terminal application> # # When the script is run, it will write out a proper Window Maker "External # Menu" entry, that can be included in the menu. When the External Menu has # been correctly configured, the root menu will display a sub-menu containing # all of the KDE related items found. The script only needs to be run when/if # KDE is updated. # # # Installation and Configuration: # # 1) If /usr/bin/perl is not the location of the perl binary on your system, # the first line should be changed to reflect upon it's location. # 2) Run the script. # 3) Configure Window Maker's menu by editing ~/GNUstep/Defaults/WMRootMenu # This could be done with any text editor, or by using WPrefs. Insert # the following line (if done with a text editor) into the WMRootMenu file. # ("External Menu", OPEN_MENU, "$HOME/.kde2wmaker.menu"), # If done using WPrefs, simply "Add External Menu" from the drop down menu, # then type: $HOME/.kde2wmaker.menu into the "Menu Path/Directory List" # textbox. # 4) Some KDE entries, such as "Pine" will require a terminal to # execute it. There is a terminal variable below. You may use any # terminal, XTerm is the default. Any command line options such as: # -fg -bg, etc. can be specified in this variable as well. # # # Michael Hokenson - logan@dct.com # # #--------------------------------------------------------------------- # # v1.2.0 -- 14th February 2001. # # Added alphabetic sorting of the menus. # # Directories are now displayed before files in the menu. # #--------------------------------------------------------------------- # # v1.1.5 -- 3rd February 2001. (No public release) # # Unsupported applnk files have a fallback entry in the menu tree so # that users can report menu entries that do not work. So far, # wkdemenu.pl assumes that there is an Exec= line in the application # definition, which is not always the case. # # -------------------------------------------------------------------- # # v1.1.0 -- 29th January 2001. # # Code cleanup and bug fixes. # # -------------------------------------------------------------------- # # v1.0.0 -- 21st January 2001. # # This script has been completely re-written to allow recursion of the # KDE menu directories to an arbitrary depth, fixing a major # functional limitation in the original script. To do this, I have # rewritten the code to traverse directories recursively, introducing # a subroutine, process_dir() to carry out the task. # # wkdemenu.pl provides an excellent extension to the user interface in # Window Maker, working well with the "Generated Submenu" feature. # # # Summary of New Features # ----------------------- # # Added support for menus of arbitrary depth. # # Added basic internationalisation based on KDE's language # setting. The language is taken from "~/.kde/share/config/kdeglobals" # or from "~/.kderc". # # Corrected the generation of menu names, incorporating # internationalisation, where appropriate. # # Changed the double quotes to two single quotes in application names # so that they do not break the Menu parser in Window Maker. # # Stripped off the arguments to commands on the Exec= line, except in # a few KDE specific cases (e.g. kfmclient). The extra options are # only usable by KDE and were preventing many applications from # launching, since they could parse the option %c or %s, for example. # This "feature" will probably need a more formal or interactive way # of specifying exceptions in the future. # # Added a command line option for specifying the X terminal to # use. This still defaults to xterm, but could be used to specify # aterm, etc. # # Malcolm Cowe, malk@271m.net. # # -------------------------------------------------------------------- # # To Do # ----- # # Programmatically determine the system location for the KDE menu # directory. # # Find a better way to parse the Exec= lines. In the short term, # provide a user mechanism for generating exceptions to the curtailing # of command line options. In the longer term, emulate what KDE does # with these command line features. # # Optimise the code. This is my first proper PERL script, and I'm sure # there's a better way. =) # # # Variables # # The External Menu file, this should NEVER point to the root menu file $menufile = "$ENV{'HOME'}/.kde2wmaker.menu"; # Base directory, location of all the KDE AppName.kdelnk files. # Change the base directory default to point at the system files, # not the user files. Need to find a way of determining the prefix # programmatically. $prefix="/usr"; $basedir = $prefix."/share/applnk"; # Terminal to use. May be specified on the command line with the -t # switch. $term = "xterm"; # Xmessage command line to invoke (can vary platform to platform) $ostype = `uname -s`; if ($ostype =~ /^HP-UX$/) { $xmsg = "xmessage -geometry 400x100 -f -"; } else { $xmsg = "xmessage -geometry 400x100 -file - -default \"okay\""; } # Print to STDOUT, default is YES, a filename is specified $stdout = 1; # KDE Locale Support # Support for KDE internationalisation so that menu entries appear # in the language chosen by the user. Also gets around some problems # with the KDE applnk file format. # The Locale is stored in one of two places, depending on the # version of KDE that is running. $kde2cf="$ENV{'HOME'}/.kde/share/config/kdeglobals"; $kde1cf="$ENV{'HOME'}/.kderc"; $kdeLanguage = ""; # Open the file, if it exists, otherwise provide a default language. unless(open KDERC, $kde2cf) { unless(open KDERC, $kde1cf) { $kdeLanguage = "C"; } } if ( $kdeLanguage == ""){ $kdeLanguage = "C"; # Search through the contents of the file while($line = <KDERC>) { chomp($line); # Grab the Language if($line =~ /^Language=/) { $kdeLanguage = $line; $kdeLanguage =~ s/Language=//; ($kdeLanguage) = split /:/,$kdeLanguage; last; } } close(KDERC); } # # Begin Main Iteration. # # Process command line arguments foreach $arg(@ARGV) { if($last) { if($last eq "-d") { $basedir = $arg; } elsif($last eq "-f") { $menufile = $arg; $stdout = 0; } elsif($last eq "-t") { $term = $arg; } undef($last); } elsif($arg =~ /^-/) { if($arg =~ /^-[dfst]$/) { $last = $arg; } else { die("Unknown option: $arg\n\nUsage: kde2wmaker.pl [ Options... ]\n". "\n\tOptions:\n\n". "\t\t-d <KDE App.kdelnk dir>\n". "\t\t-f <output menufile>\n". "\t\t-t <X terminal application>\n"); &Usage; } } } # Make sure the KDE Menu's Top Level Directory exists. if(-d $basedir) { # See if there is an old menu file. If there is, rename it unless($stdout) { if(-e $menufile) { print STDERR "\tFound $menufile, renaming\n\n"; rename $menufile, "$menufile.old"; } open(MENUFILE,"> $menufile"); } # Start the main menu entry if($stdout) { print STDOUT "\"KDE Applications\" MENU\n"; process_dir (STDOUT, $basedir); print STDOUT "\"KDE Applications\" END\n"; } else { print MENUFILE "\"KDE Applications\" MENU\n"; process_dir (MENUFILE, $basedir); print MENUFILE "\"KDE Applications\" END\n"; } } else { # Error out :/ print STDERR "ERROR:\n\t$basedir not found\n\tTry another directory.\n"; exit(0); } # End of Main Iteration. # process_dir() works it's way through each file and directory in # the tree and generates the menu output to be used by Window Maker. sub process_dir { my $OUT = @_[0]; my $path = @_[1]; my $item; my @tld; my @tlf; my @klist; my ($gotLang, $gotDef, $gotExec, $inTerm); my $inDesktop; # tld == Top Level Directory. opendir(TLD, $path) || return; # In order to display directories before files, the directory # contents must be split. Directories are added to one array, files # to a second. The lists are then sorted alphabetically by name and # combined into a single list for processing by the rest of the # subroutine. while (defined($file = readdir(TLD))) { next if $file =~ /^\./; if (-d "$path/$file") { @tld = (@tld, $file); } else { @tlf = (@tlf, $file); } } closedir(TLD); # At this stage, only sort the directories, since the application # sorting is done later, using the "Name=" field in the applnk file. @tld = sort (@tld); # Print out directory names first and then process the directories. foreach $item(@tld) { print $OUT "\"$item\" MENU\n"; process_dir($OUT, "$path/$item"); print $OUT "\"$item\" END\n"; } # Process the applnk files in the current directory. foreach $item(@tlf) { $gotLang = 0; $gotDef = 0; $gotExec = 0; $inTerm = 0; $inDesktop = 0; # Process the contents of the applnk file to generate a menu # entry for the application. open(SUB,"$path/$item"); # Set a default application warning to run in case there is no # Exec= line in the application definition. This will be # useful for debugging exceptions. $pname="$item"; $pargs="echo \"Could not extract executable information from:\\n\\n$path/$item.\"|".$xmsg; # Search through the contents of the file. Exit the loop at the # EOF or if we have processed the [Desktop Entry Section] of the # file. while($line = <SUB>) { chomp($line); # Get the application's name. This is stored in the # [Desktop Entry] section of the applnk description. # # The application's name can have one of these forms: # Name= # Name[]= # Name[language]= # # Get the default name anyway (one of the first two, just # in case there is no language specific entry). if ($inDesktop) { # Make sure we are in fact still in the [Desktop Entry] # section. if ($line =~ /^\[/) { $inDesktop = 0; } # Extract the Name of the Application elsif ($line =~ /^Name\[?\]?=/ && (!$gotDef || !gotLang)) { $pname = $line; $pname =~ s/^Name\[?\]?=//s; $pname =~ s/\"/\'\'/g; $gotDef = 1; } elsif ($line =~ /^Name\[$kdeLanguage\]=/ && !$gotLang) { $pname = $line; $pname =~ s/^Name\[$kdeLanguage\]=//s; $pname =~ s/\"/\'\'/g; $gotLang = 1; } # Grab the command elsif($line =~ /^Exec=/ && !$gotExec) { $pargs = $line; $pargs =~ s/^Exec=//s; # Strip off all command line options unless the # application is "kfmclient", etc. if ($pargs !~ /^kfmclient/ && $pargs !~ /^kcm/ && $pargs !~ /^\/bin\/bash/ && $pargs !~ /^kdesu/){ ($pargs) = split(/\s/, $pargs); } else { # A double check to remove any dubious characters from # the command line of the exceptions listed in the # above "if" statement. The only culprit so far is the # KDE 1 kfmclient command line. $pargs =~ s/\%[a-zA-Z]//g; } $gotExec = 1; } # If Terminal=1, then we need to execute application # within a terminal window. elsif($line =~ /^Terminal=(1|true)$/i) { $inTerm=1; } } elsif ($line =~ /^\[(KDE\ )?Desktop\ Entry\]/){ $inDesktop = 1; } } close(SUB); if ($inTerm) { $pargs = "$term -T \"$pname\" -e $pargs"; } @klist = (@klist, "\t\"$pname\" EXEC $pargs\n"); } @klist = sort(@klist); foreach (@klist) { print $OUT $_; } return; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/util/wdwrite.c�������������������������������������������������������������������0000644�0001750�0001750�00000005303�13431646202�013576� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* wdwrite.c - write key/value to defaults database * * WindowMaker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifdef __GLIBC__ #define _GNU_SOURCE /* getopt_long */ #endif /* * WindowMaker defaults DB writer */ #include "config.h" #include <getopt.h> #include <limits.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #ifdef HAVE_STDNORETURN #include <stdnoreturn.h> #endif #include <WINGs/WUtil.h> #include "../src/wconfig.h" static const char *prog_name; static noreturn void print_help(int print_usage, int exitval) { printf("Usage: %s [OPTIONS] <domain> <key> <value>\n", prog_name); if (print_usage) { puts("Write <value> for <key> in <domain>'s database"); puts(""); puts(" -h, --help display this help message"); puts(" -v, --version output version information and exit"); } exit(exitval); } int main(int argc, char **argv) { char path[PATH_MAX]; WMPropList *key, *value, *dict; int ch; struct option longopts[] = { { "version", no_argument, NULL, 'v' }, { "help", no_argument, NULL, 'h' }, { NULL, 0, NULL, 0 } }; prog_name = argv[0]; while ((ch = getopt_long(argc, argv, "hv", longopts, NULL)) != -1) switch(ch) { case 'v': printf("%s (Window Maker %s)\n", prog_name, VERSION); return 0; /* NOTREACHED */ case 'h': print_help(1, 0); /* NOTREACHED */ case 0: break; default: print_help(0, 1); /* NOTREACHED */ } argc -= optind; argv += optind; if (argc != 3) print_help(0, 1); key = WMCreatePLString(argv[1]); value = WMCreatePropListFromDescription(argv[2]); if (!value) { printf("%s: syntax error in value \"%s\"", prog_name, argv[2]); return 1; } snprintf(path, sizeof(path), "%s", wdefaultspathfordomain(argv[0])); dict = WMReadPropListFromFile(path); if (!dict) { dict = WMCreatePLDictionary(key, value, NULL); } else { WMPutInPLDictionary(dict, key, value); } WMWritePropListToFile(dict, path); return 0; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/util/wmmenugen_misc.c������������������������������������������������������������0000644�0001750�0001750�00000010145�13431646202�015126� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * wmmenugen - Window Maker PropList menu generator * * miscellaneous functions * * Copyright (c) 2010. Tamas Tevesz <ice@extreme.hu> * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include <libgen.h> #include <stdlib.h> #include <string.h> #include <WINGs/WUtil.h> static const char *const terminals[] = { "x-terminal-emulator", /* Debian wrapper to launch user's prefered X terminal */ "aterm", /* AfterStep's X terminal, which provides "transparency" */ "eterm", /* Enlightenment's terminal, designed for eye-candyness (and efficiency) */ "gnome-terminal", /* GNOME project's terminal */ "konsole", /* KDE project's terminals */ "kterm", /* a Multi-Lingual Terminal based on xterm, originally by Katsuya Sano */ "mlterm", /* a Multi-Lingual Terminal emulator written from scratch */ "rxvt", /* a slimmed-down xterm */ "mrxvt", /* rxvt with support for tabs amongst other things */ "pterm", /* terminal based on PuTTY, a popular SSH client for Windows */ "xterm", /* the standard terminal provided by the X Window System */ "dtterm" /* provided by CDE, a frequent Desktop Environment in proprietary UNIXs */ }; /* pick a terminal emulator by finding the first existing entry of `terminals' * in $PATH. the returned pointer should be wfreed later. * if $WMMENU_TERMINAL exists in the environment, it's value overrides this * detection. */ char *find_terminal_emulator(void) { char *path, *t; int i; t = getenv("WMMENU_TERMINAL"); if (t) return wstrdup(t); path = getenv("PATH"); if (!path) return NULL; for (i = 0; i < wlengthof(terminals); i++) { t = wfindfile(path, terminals[i]); if (t) { wfree(t); return wstrdup(terminals[i]); } } return NULL; } /* tokenize `what' (LC_MESSAGES or LANG if `what' is NULL) in the form of * `language[_territory][.codeset][@modifier]' into separate language, country, * encoding, modifier components, which are allocated on demand and should be * wfreed later. components that do not exist in `what' are set to NULL. */ void parse_locale(const char *what, char **language, char **country, char **encoding, char **modifier) { char *e, *p; *language = *country = *encoding = *modifier = NULL; if (what == NULL) { e = getenv("LC_MESSAGES"); if (e == NULL) { e = getenv("LANG"); /* this violates the spec */ if (e == NULL) return; } e = wstrdup(e); } else { e = wstrdup(what); } if (strlen(e) == 0 || strcmp(e, "POSIX") == 0 || strcmp(e, "C") == 0) goto out; p = strchr(e, '@'); if (p) { *modifier = wstrdup(p + 1); *p = '\0'; } p = strchr(e, '.'); if (p) { *encoding = wstrdup(p + 1); *p = '\0'; } p = strchr(e, '_'); if (p) { *country = wstrdup(p + 1); *p = '\0'; } if (strlen(e) > 0) *language = wstrdup(e); out: free(e); return; } /* determine whether (first token of) given file is in $PATH */ Bool fileInPath(const char *file) { char *p, *t; static char *path = NULL; if (!file || !*file) return False; /* if it's an absolute path spec, don't override the user. * s/he might just know better. */ if (*file == '/') return True; /* if it has a directory separator at random places, * we might know better. */ p = strchr(file, '/'); if (p) return False; if (!path) { path = getenv("PATH"); if (!path) return False; } p = wstrdup(file); t = strpbrk(p, " \t"); if (t) *t = '\0'; t = wfindfile(path, p); wfree(p); if (t) { wfree(t); return True; } return False; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/util/wxpaste.c�������������������������������������������������������������������0000644�0001750�0001750�00000013443�13431646202�013610� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* wxpaste.c- paste contents of cutbuffer to stdout * * Copyright (c) 1997-2003 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., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301, USA. */ #include "../config.h" #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <errno.h> #include <X11/Xlib.h> #include <X11/Xatom.h> #include <sys/time.h> #include <sys/types.h> #ifdef HAVE_SYS_SELECT_H # include <sys/select.h> #endif #define MAXDATA (4*1024*1024) static const char *prog_name; static void print_help(void) { printf("Usage: %s [OPTIONS]\n", prog_name); puts("Copies data from X selection or cutbuffer to stdout."); puts(""); puts(" -display display display to use"); puts(" --cutbuffer number cutbuffer number to get data from"); puts(" --selection [selection] reads data from named selection instead of cutbuffer"); puts(" -h, --help display this help and exit"); puts(" -v, --version output version information and exit"); } static Time getTimestamp(Display * dpy, Window win) { XEvent ev; /* So we do this trickery to get a time stamp: * * 1. Grab the server because we are paranoid and don't want to * get in a race with another instance of wxpaste being ran at the * same time. * * 2. Set a dummy property in our window. * * 3. Get the PropertyNotify event and get it's timestamp. * * 4. Ungrab the server. */ XSelectInput(dpy, win, PropertyChangeMask); /* Generate a PropertyNotify event */ XStoreName(dpy, win, "shit"); /* wait for the event */ while (1) { XNextEvent(dpy, &ev); if (ev.type == PropertyNotify) break; } return ev.xproperty.time; } static char *fetchSelection(Display *dpy, const char *selection) { Atom selatom = XInternAtom(dpy, selection, False); Atom clipatom = XInternAtom(dpy, "CLIPBOARD", False); Time now; XEvent ev; Window win; int ok = 0; struct timeval timeout; fd_set fdset; win = XCreateSimpleWindow(dpy, DefaultRootWindow(dpy), 0, 0, 1, 1, 0, 0, 0); /* * The ICCCM says that we can't pass CurrentTime as the timestamp * for XConvertSelection(), but we don't have anything to use as * a timestamp... */ now = getTimestamp(dpy, win); XConvertSelection(dpy, selatom, XA_STRING, clipatom, win, now); timeout.tv_sec = 1; timeout.tv_usec = 0; /* wait for the convertion */ while (0) { int res; if (XPending(dpy) == 0) { FD_ZERO(&fdset); FD_SET(ConnectionNumber(dpy), &fdset); res = select(ConnectionNumber(dpy) + 1, &fdset, NULL, NULL, &timeout); if (res <= 0) { ok = 0; break; } } if (res > 0 || XPending(dpy) > 0) { XNextEvent(dpy, &ev); if (ev.type == SelectionNotify && ev.xany.window == win) { ok = 1; break; } } } /* if success, return the data */ if (ok) { Atom rtype; int bits; unsigned long len, bytes; unsigned char *data; if (XGetWindowProperty(dpy, win, clipatom, 0, MAXDATA / 4, False, XA_STRING, &rtype, &bits, &len, &bytes, &data) != 0) return NULL; if ((rtype != XA_STRING) || (bits != 8)) { return NULL; } else { return (char *)data; } } return NULL; } int main(int argc, char **argv) { Display *dpy; int i, l; int buffer = 0; char *buf; int status; char *display_name = ""; char *selection_name = NULL; prog_name = argv[0]; for (i = 1; i < argc; i++) { if (argv[i][0] == '-') { if (argv[i][1] == 'h' || strcmp(argv[i], "--help") == 0) { print_help(); exit(0); } else if (argv[i][1] == 'v' || strcmp(argv[i], "--version") == 0) { printf("%s (Window Maker %s)\n", prog_name, VERSION); exit(0); } else if (strcmp(argv[i], "-selection") == 0 || strcmp(argv[i], "--selection") == 0) { if (i < argc - 1) { selection_name = argv[++i]; } else { selection_name = "PRIMARY"; } } else if (strcmp(argv[i], "-display") == 0) { if (i < argc - 1) { display_name = argv[++i]; } else { print_help(); exit(0); } } else if (strcmp(argv[i], "-cutbuffer") == 0 || strcmp(argv[i], "--cutbuffer") == 0) { if (i < argc - 1) { i++; if (sscanf(argv[i], "%i", &buffer) != 1) { fprintf(stderr, "%s: could not convert \"%s\" to int\n", prog_name, argv[i]); exit(1); } if (buffer < 0 || buffer > 7) { fprintf(stderr, "%s: invalid buffer number %i\n", prog_name, buffer); exit(1); } } else { fprintf(stderr, "%s: invalid argument '%s'\n", prog_name, argv[i]); fprintf(stderr, "Try '%s --help' for more information.\n", prog_name); exit(1); } } } else { fprintf(stderr, "%s: invalid argument '%s'\n", prog_name, argv[i]); fprintf(stderr, "Try '%s --help' for more information.\n", prog_name); exit(1); } } dpy = XOpenDisplay(display_name); if (!dpy) { fprintf(stderr, "%s: could not open display \"%s\"\n", prog_name, XDisplayName(display_name)); exit(1); } if (selection_name) { buf = fetchSelection(dpy, selection_name); } else { buf = NULL; } if (buf == NULL) { buf = XFetchBuffer(dpy, &l, buffer); } if (buf == NULL) { status = 1; } else { if (write(STDOUT_FILENO, buf, l) == -1) status = errno; else status = 0; } XCloseDisplay(dpy); exit(status); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/util/wmgenmenu.h�����������������������������������������������������������������0000644�0001750�0001750�00000042013�13642357774�014140� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* wmgenmenu.h * * Copyright (C) 2010 Carlos R. Mafra * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ /* * If the program should run from inside a terminal it has * to end with a space followed by '!', e.g. "mutt !" */ char *Terminals[MAX_NR_APPS][2] = { { N_("xterm"), "xterm" }, { N_("st"), "st" }, { N_("mrxvt"), "mrxvt" }, { N_("Konsole"), "konsole" }, { N_("Urxvt"), "urxvt" }, { NULL, NULL } }; char *File_managers[MAX_NR_APPS][2] = { { N_("Dolphin"), "dolphin" }, { N_("Thunar"), "thunar" }, { N_("ROX filer"), "rox" }, { N_("PCManFM"), "pcmanfm" }, { N_("GWorkspace"), "GWorkspace" }, { N_("Midnight Commander"), "mc !" }, { N_("XFTree"), "xftree" }, { N_("Konqueror"), "konqueror" }, { N_("Nautilus"), "nautilus --no-desktop" }, { N_("FSViewer"), "FSViewer" }, { N_("Xfe"), "xfe" }, { NULL, NULL } }; char *Mathematics[MAX_NR_APPS][2] = { { N_("Xmaxima"), "xmaxima" }, { N_("Maxima"), "maxima !" }, { N_("Maple"), "maple" }, { N_("Scilab"), "scilab" }, { N_("bc"), "bc !" }, { N_("KCalc"), "kcalc" }, { N_("XCalc"), "xcalc" }, { N_("Mathematica"), "mathematica" }, { N_("Math"), "math !" }, /* command-line Mathematica */ { N_("Free42"), "free42" }, { N_("X48"), "x48" }, { NULL, NULL } }; char *Astronomy[MAX_NR_APPS][2] = { { N_("Xplns"), "xplns" }, { N_("Stellarium"), "stellarium" }, { NULL, NULL } }; char *Graphics[MAX_NR_APPS][2] = { { N_("GIMP"), "gimp" }, { N_("Sodipodi"), "sodipodi" }, { N_("Inkscape"), "inkscape" }, { N_("KIllustrator"), "killustrator" }, { N_("Krayon"), "krayon" }, { N_("KPovModeler"), "kpovmodeler" }, { N_("XBitmap"), "bitmap" }, { N_("XPaint"), "xpaint" }, { N_("XFig"), "xfig" }, { N_("KPaint"), "kpaint" }, { N_("Blender"), "blender" }, { N_("KSnapshot"), "ksnapshot" }, { N_("Spectacle"), "spectacle" }, { N_("GPhoto"), "gphoto" }, { N_("DigiKam"), "digikam" }, { N_("GQview"), "gqview" }, { N_("Geeqie"), "geeqie" }, { N_("KView"), "kview" }, { N_("Dia"), "dia" }, { N_("CompuPic"), "compupic" }, { N_("Pixie"), "pixie" }, { N_("ImageMagick Display"), "display" }, { N_("XV"), "xv" }, { N_("Eye of GNOME"), "eog" }, { N_("Quick Image Viewer"), "qiv" }, { NULL, NULL }, }; char *Multimedia[MAX_NR_APPS][2] = { { N_("Audacious"), "audacious" }, { N_("Kaffeine"), "kaffeine", }, { N_("Audacity"), "audacity" }, { N_("Amarok"), "amarok" }, { N_("XMMS"), "xmms" }, { N_("K9Copy"), "k9copy" }, { N_("HandBrake"), "HandBrakeGUI" }, { N_("OGMRip"), "ogmrip" }, { N_("DVBcut"), "dvbcut" }, { N_("AcidRip"), "acidrip" }, { N_("RipperX"), "ripperX" }, { N_("Avidemux"), "avidemux2_gtk" }, { N_("GQmpeg"), "gqmpeg" }, { N_("SMPlayer"), "smplayer" }, { N_("Linux MultiMedia Studio"), "lmms" }, { N_("Freeamp"), "freeamp" }, { N_("RealPlayer"), "realplay" }, { N_("Mediathek"), "Mediathek.sh" }, { N_("KMid"), "kmid" }, { N_("Kmidi"), "kmidi" }, { N_("Gtcd"), "gtcd" }, { N_("Grip"), "grip" }, { N_("AVIplay"), "aviplay" }, { N_("Gtv"), "gtv" }, { N_("VLC"), "vlc" }, { N_("Sinek"), "sinek" }, { N_("xine"), "xine" }, { N_("aKtion"), "aktion" }, { N_("Gcd"), "gcd" }, { N_("XawTV"), "xawtv" }, { N_("XPlayCD"), "xplaycd" }, { N_("XBMC"), "xbmc" }, { N_("Kodi"), "kodi" }, { NULL, NULL} }; char *Internet[MAX_NR_APPS][2] = { { N_("Chromium"), "chromium" }, { N_("Chromium"), "chromium-browser" }, { N_("Google Chrome"), "google-chrome" }, { N_("Mozilla Firefox"), "firefox" }, { N_("Galeon"), "galeon" }, { N_("SkipStone"), "skipstone" }, { N_("Konqueror"), "konqueror" }, { N_("Dillo"), "dillo" }, { N_("Epiphany"), "epiphany" }, { N_("Opera"), "opera" }, { N_("Midori"), "midori" }, { N_("Mozilla SeaMonkey"), "seamonkey" }, { N_("Kazehakase"), "kazehakase" }, { N_("Links"), "links !" }, { N_("Lynx"), "lynx !" }, { N_("W3M"), "w3m !" }, { NULL, NULL } }; char *Email[MAX_NR_APPS][2] = { { N_("Mozilla Thunderbird"), "thunderbird" }, { N_("Mutt"), "mutt !" }, { N_("GNUMail"), "GNUMail" }, { N_("Claws Mail"), "claws-mail" }, { N_("Evolution"), "evolution" }, { N_("Kleopatra"), "kleopatra" }, { N_("Sylpheed"), "sylpheed" }, { N_("Spruce"), "spruce" }, { N_("KMail"), "kmail" }, { N_("Exmh"), "exmh" }, { N_("Pine"), "pine !" }, { N_("ELM"), "elm !" }, { N_("Alpine"), "alpine !" }, { NULL, NULL } }; char *Sound[MAX_NR_APPS][2] = { { N_("soundKonverter"), "soundkonverter" }, { N_("Krecord"), "krecord" }, { N_("Grecord"), "grecord" }, { N_("ALSA mixer"), "alsamixer !" }, { N_("VolWheel"), "volwheel" }, { N_("Sound configuration"), "sndconfig !" }, { N_("aumix"), "aumix !" }, { N_("Gmix"), "gmix" }, { NULL, NULL } }; char *Editors[MAX_NR_APPS][2] = { { N_("XJed"), "xjed" }, { N_("Jed"), "jed !" }, { N_("Emacs"), "emacs" }, { N_("XEmacs"), "xemacs" }, { N_("SciTE"), "scite" }, { N_("Bluefish"), "bluefish" }, { N_("gVIM"), "gvim" }, { N_("vi"), "vi !" }, { N_("VIM"), "vim !" }, { N_("gedit"), "gedit" }, { N_("KEdit"), "kedit" }, { N_("XEdit"), "xedit" }, { N_("KWrite"), "kwrite" }, { N_("Kate"), "kate" }, { N_("Pico"), "pico !" }, { N_("Nano"), "nano !" }, { N_("Joe"), "joe !" }, { NULL, NULL } }; char *Comics[MAX_NR_APPS][2] = { { N_("Omnia data"), "omnia_data" }, { N_("Comix"), "comix" }, { N_("QComicBook"), "qcomicbook" }, { NULL, NULL } }; char *Viewers[MAX_NR_APPS][2] = { { N_("Evince"), "evince" }, { N_("KGhostView"), "kghostview" }, { N_("gv"), "gv" }, { N_("ePDFView"), "epdfview" }, { N_("GGv"), "ggv" }, { N_("Xdvi"), "xdvi" }, { N_("KDVI"), "kdvi" }, { N_("Xpdf"), "xpdf" }, { N_("Adobe Reader"), "acroread" }, { N_("Gless"), "gless" }, { NULL, NULL } }; char *Utilities[MAX_NR_APPS][2] = { { N_("Google Desktop"), "gdlinux" }, { N_("K3B"), "k3b" }, { N_("X-CD-Roast"), "xcdroast" }, { N_("Nero Linux"), "nero" }, { N_("Nero Linux Express"), "neroexpress" }, { N_("gtkfind"), "gtkfind" }, { N_("gdict"), "gdict" }, { N_("gpsdrive"), "gpsdrive" }, { N_("Task Coach"), "taskcoach" }, { N_("XSnap"), "xsnap" }, { N_("Screengrab"), "screengrab" }, { N_("XSane"), "xsane" }, { N_("wfcmgr"), "wfcmgr" }, { N_("switch"), "switch" }, { N_("Cairo Clock"), "cairo-clock" }, { N_("Conky"), "conky" }, { N_("GNU Privacy Assistant"), "gpa" }, { N_("Vidalia (tor)"), "vidalia" }, { N_("kaddressbook"), "kaddressbook" }, { N_("kab"), "kab" }, { N_("Filezilla"), "filezilla" }, { N_("Bleachbit"), "bleachbit" }, { N_("Teamviewer"), "teamviewer" }, { N_("gUVCView"), "guvcview" }, { N_("LinPopUp"), "linpopup" }, { N_("Wine Configurator"), "winecfg" }, { N_("NMap"), "nmapfe" }, { N_("Hydra"), "xhydra" }, { N_("XTeddy"), "xteddy" }, { N_("XTeddy TEST"), "xteddy_test" }, { N_("VNC Viewer"), "vncviewer" }, { N_("Java Control Panel"), "ControlPanel" }, { N_("kfind"), "kfind" }, { N_("oclock"), "oclock" }, { N_("rclock"), "rclock" }, { N_("Isomaster"), "isomaster" }, { N_("xclock"), "xclock" }, { N_("HP Systray"), "hp-systray" }, { N_("kppp"), "kppp" }, { N_("Xarchiver"), "xarchiver" }, { NULL, NULL } }; char *Video[MAX_NR_APPS][2] = { { NULL, NULL } }; char *Chat[MAX_NR_APPS][2] = { { N_("Pidgin"), "pidgin" }, { N_("Skype"), "skype" }, { N_("Gizmo"), "gizmo" }, { N_("Gajim"), "gajim" }, { N_("Kopete"), "kopete" }, { N_("XChat"), "xchat" }, { N_("Ekiga"), "Ekiga" }, { N_("KVIrc"), "kvirc" }, { N_("BitchX"), "BitchX !" }, { N_("EPIC"), "epic !" }, { N_("Linphone"), "linphone" }, { N_("Mumble"), "mumble" }, { N_("EPIC4"), "epic4 !" }, { N_("Irssi"), "irssi !" }, { N_("TinyIRC"), "tinyirc !" }, { N_("Ksirc"), "ksirc" }, { N_("gtalk"), "gtalk" }, { N_("GnomeICU"), "gnome-icu" }, { N_("Licq"), "licq" }, { N_("aMSN"), "amsn" }, { NULL, NULL } }; char *P2P[MAX_NR_APPS][2] = { { N_("aMule"), "amule" }, { N_("gFTP"), "gftp" }, { N_("Smb4K"), "smb4k" }, { N_("KTorrent"), "ktorrent" }, { N_("BitTorrent GUI"), "bittorrent-gui" }, { N_("Transmission GTK"), "transmission-gtk" }, { N_("ftp"), "ftp !" }, { N_("Deluge"), "deluge-gtk" }, { N_("sftp"), "sftp !" }, { N_("Pavuk"), "pavuk" }, { N_("gtm"), "gtm !" }, { N_("Gnut"), "gnut !" }, { N_("GTK Gnutella"), "gtk-gnutella" }, { N_("Gnutmeg"), "gnutmeg" }, { NULL, NULL } }; char *Games[MAX_NR_APPS][2] = { { N_("FlightGear Flight Simulator"), "fgfs" }, { N_("Tremulous"), "tremulous" }, { N_("XBoard"), "xboard" }, { N_("GNOME Chess"), "gnome-chess" }, { N_("Darkplaces (Quake 1)"), "darkplaces" }, { N_("QuakeSpasm (Quake 1)"), "quakespasm" }, { N_("Quake 2"), "quake2" }, { N_("KM Quake 2 (Quake 2"), "kmquake2" }, { N_("QMax (Quake 2"), "quake2-qmax" }, { N_("Quake 3"), "quake3" }, { N_("Quake 4"), "quake4" }, { N_("Quake 4 SMP"), "quake4-smp" }, { N_("Openarena"), "openarena" }, { N_("Quake 3: Urban Terror 2"), "q3ut2" }, { N_("Soldier of Fortune"), "sof" }, { N_("Rune"), "rune" }, { N_("Doom 3"), "doom3" }, { N_("Zelda Solarus"), "solarus" }, { N_("Solarwolf"), "solarwolf" }, { N_("Pachi"), "pachi" }, { N_("Tribes 2"), "tribes2" }, { N_("GNUjump"), "gnujump" }, { N_("Supertransball 2"), "supertransball2" }, { N_("Supertux"), "supertux" }, { N_("Supertux 2"), "supertux2" }, { N_("Mega Mario"), "megamario" }, { N_("Frogatto"), "frogatto" }, { N_("Minecraft"), "minecraft" }, { N_("Alienarena"), "alienarena" }, { N_("Nexuiz"), "nexuiz" }, { N_("Bomberclone"), "bomberclone" }, { N_("Chromium-BSU"), "chromium-bsu" }, { N_("Clanbomber"), "clanbomber" }, { N_("Clanbomber 2"), "clanbomber2" }, { N_("Defendguin"), "defendguin" }, { N_("Dosbox"), "dosbox" }, { N_("Duke Nukem 3D"), "duke3d" }, { N_("eDuke32"), "eduke32" }, { N_("Emilia Pinball"), "emilia-pinball" }, { N_("Extreme-Tuxracer"), "etracer" }, { N_("Freedroid RPG"), "freedroidRPG" }, { N_("Frozen Bubble"), "frozen-bubble" }, { N_("Frozen Bubble Editor"), "frozen-bubble-editor" }, { N_("GL 117"), "gl-117" }, { N_("LBreakout 2"), "lbreakout2" }, { N_("Legends"), "legends" }, { N_("Lincity-NG"), "lincity-ng" }, { N_("Neverball"), "neverball" }, { N_("Neverput"), "neverput" }, { N_("Openastromenace"), "openastromenace" }, { N_("Penguin Command"), "penguin-command" }, { N_("Powermanga"), "powermanga" }, { N_("Return to Castle Wolfenstein SP"), "rtcwsp" }, { N_("Return to Castle Wolfenstein MP"), "rtcwmp" }, { N_("Snes9X"), "snes9x-gtk" }, { N_("Slune"), "slune" }, { N_("Torcs"), "torcs" }, { N_("Speed Dreams"), "speed-dreams" }, { N_("Trackballs"), "trackballs" }, { N_("VDrift"), "vdrift" }, { N_("Warmux"), "warmux" }, { N_("Warsow"), "warsow" }, { N_("Wesnoth"), "wesnoth" }, { N_("World of Padman"), "worldofpadman" }, { N_("XBlast"), "xblast" }, { N_("XPenguins"), "xpenguins" }, { N_("XTux"), "xtux" }, { N_("The Mana World"), "tmw" }, { N_("The Mana World"), "mana" }, { N_("Super Mario Chronicles"), "smc" }, { N_("Unreal"), "unreal" }, { N_("Unreal Tournament"), "ut" }, { N_("Unreal Tournament 2004"), "ut2004" }, { N_("Xonotic"), "xonotic" }, { N_("Descent 3"), "descent3" }, { N_("Myth 2"), "myth2" }, { N_("Sauerbraten"), "sauerbraten" }, { N_("Sauerbraten"), "sauerbraten-client" }, { N_("Sauerbraten"), "sauer_client" }, { N_("Railroad Tycoon 2"), "rt2" }, { N_("Heretic 2"), "heretic2" }, { N_("Kohan"), "kohan" }, { N_("XQF"), "xqf" }, { NULL, NULL } }; char *Office[MAX_NR_APPS][2] = { { N_("OpenOffice.org Writer"), "oowriter" }, { N_("OpenOffice.org Calc"), "oocalc" }, { N_("OpenOffice.org Draw"), "oodraw" }, { N_("OpenOffice.org Impress"), "ooimpress" }, { N_("OpenOffice.org Math"), "oomath" }, { N_("OpenOffice.org"), "ooffice" }, { N_("StarOffice Writer"), "swriter" }, { N_("StarOffice Calc"), "scalc" }, { N_("StarOffice Draw"), "sdraw" }, { N_("StarOffice Impress"), "simpress" }, { N_("StarOffice Math"), "smath" }, { N_("StarOffice"), "soffice" }, { N_("LibreOffice Writer"), "lowriter" }, { N_("LibreOffice Calc"), "localc" }, { N_("LibreOffice Draw"), "lodraw" }, { N_("LibreOffice Impress"), "loimpress" }, { N_("LibreOffice Math"), "lomath" }, { N_("LibreOffice Base"), "lobase" }, { N_("LibreOffice Web"), "loweb" }, { N_("LibreOffice"), "libreoffice" }, { N_("AbiWord"), "abiword" }, { N_("KWord"), "kword" }, { N_("KPresenter"), "kpresenter" }, { N_("KSpread"), "kspread" }, { N_("KChart"), "kchart" }, { N_("KOrganizer"), "Korganizer" }, { N_("LyX"), "lyx" }, { N_("Klyx"), "klyx" }, { N_("GnuCash"), "gnucash" }, { N_("Gnumeric"), "gnumeric" }, { N_("GnomeCal"), "gnomecal" }, { N_("GnomeCard"), "gnomecard" }, { NULL, NULL } }; char *Development[MAX_NR_APPS][2] = { { N_("gitk"), "gitk" }, { N_("gitview"), "gitview" }, { N_("qgit"), "qgit" }, { N_("git-gui"), "git-gui" }, { N_("glimmer"), "glimmer" }, { N_("glade"), "glade" }, { N_("Geany"), "geany" }, { N_("Codeblocks"), "codeblocks" }, { N_("kdevelop"), "kdevelop" }, { N_("designer"), "designer" }, { N_("kbabel"), "kbabel" }, { N_("idle"), "idle" }, { N_("ghex"), "ghex" }, { N_("hexedit"), "hexedit !" }, { N_("memprof"), "memprof" }, { N_("tclsh"), "tclsh !" }, { N_("gdb"), "gdb !" }, { N_("xxgdb"), "xxgdb" }, { N_("xev"), "xev !" }, { NULL, NULL } }; char *System[MAX_NR_APPS][2] = { { N_("Iotop"), "iotop -d 4 --only !" }, { N_("Iostat"), "iostat -p -k 5 !" }, { N_("keybconf"), "keybconf" }, { N_("GNOME System Monitor"), "gtop" }, { N_("top"), "top !" }, { N_("KDE Process Monitor"), "kpm" }, { N_("gw"), "gw" }, { N_("GNOME Control Center"), "gnomecc" }, { N_("GKrellM"), "gkrellm" }, { N_("tksysv"), "tksysv" }, { N_("ksysv"), "ksysv" }, { N_("GNOME PPP"), "gnome-ppp" }, { NULL, NULL } }; char *OpenSUSE[MAX_NR_APPS][2] = { { N_("YaST 2"), "yast2" }, { N_("YaST"), "yast !" }, { N_("System Settings"), "systemsettings" }, { N_("UMTSMon"), "umtsmon" }, { NULL, NULL } }; char *Mandriva[MAX_NR_APPS][2] = { { N_("DrakNetCenter"), "draknetcenter" }, { N_("RPMDrake"), "rpmdrake" }, { N_("HardDrake"), "harddrake" }, { N_("DrakConf"), "drakconf" }, { N_("MandrakeUpdate"), "MandrakeUpdate" }, { N_("XDrakRes"), "Xdrakres" }, { NULL, NULL } }; char *WindowMaker[MAX_NR_APPS][2] = { { N_("Docker"), "docker -wmaker" }, { N_("Net"), "wmnet -d 100000 -Weth0" }, { N_("Net Load"), "wmnetload" }, { N_("Ping"), "wmping" }, { N_("Ping"), "wmpiki" }, { N_("Power"), "wmpower" }, { N_("Audacious"), "wmauda" }, { N_("Harddisk Monitor"), "wmdiskmon" }, { N_("Download"), "wmdl" }, { N_("Dots"), "wmdots" }, { N_("Matrix"), "wmMatrix" }, { N_("Fire"), "wmfire" }, { N_("Net send"), "wmpopup" }, { N_("Laptop"), "wmlaptop2" }, { N_("WiFi"), "wmwifi -s" }, { N_("Interface Info"), "wmifinfo" }, { N_("Weather"), "wmWeather" }, { N_("Weather"), "wmWeather+" }, { N_("Sticky Notes"), "wmstickynotes" }, { N_("Pinboard"), "wmpinboard" }, { N_("Mixer"), "wmmixer++ -w" }, { N_("Mixer"), "wmmixer" }, { N_("Weather"), "wmWeather -m -s EDDB" }, { N_("CPU Load"), "wmcpuload" }, { N_("CPU Freq"), "wmcpufreq" }, { N_("Memory Load"), "wmmemload" }, { N_("Memory Free"), "wmmemfree" }, { N_("Memory Monitor"), "wmmemmon" }, { N_("Clock Mon"), "wmclockmon" }, { N_("Network Devices"), "wmnd" }, { N_("Calendar & Clock"), "wmCalclock -S" }, { N_("Time"), "wmtime" }, { N_("Date"), "wmdate" }, { N_("Time & Date"), "wmclock" }, { N_("System Monitor"), "wmmon" }, { N_("System Monitor"), "wmsysmon" }, { N_("Sensor Monitor"), "wmsorsen" }, { N_("System Tray"), "wmsystemtray" }, { N_("System Tray"), "wmsystray" }, { N_("SMP Monitor"), "wmSMPmon" }, { N_("Timer"), "wmtimer" }, { N_("Mounter"), "wmudmount" }, { N_("Mounter"), "wmvolman" }, { N_("Uptime"), "wmupmon" }, { N_("Work Timer"), "wmwork" }, { N_("Interfaces"), "wmifs" }, { N_("Button"), "wmbutton" }, { N_("xmms"), "wmxmms" }, { N_("Power"), "wmpower" }, { N_("Magnify"), "wmagnify" }, { NULL, NULL } }; char *other_wm[MAX_WMS][2] = { { N_("IceWM"), "icewm" }, { N_("KWin"), "kwin" }, { N_("twm"), "twm" }, { N_("Fluxbox"), "fluxbox" }, { N_("Blackbox"), "blackbox" }, { N_("Ion"), "ion" }, { N_("Motif Window Manager"), "mwm" }, { N_("FVWM"), "fvwm" }, { N_("FVWM-Crystal"), "fvwm-crystal" }, { NULL, NULL } }; ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/util/wmagnify.c������������������������������������������������������������������0000644�0001750�0001750�00000026011�13431646202�013731� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * magnify - a X utility for magnifying screen image * * 2000/5/21 Alfredo K. Kojima * * This program is in the Public Domain. */ #include <config.h> #include <X11/Xproto.h> #include <WINGs/WINGs.h> #include <stdlib.h> #include <string.h> #include <stdio.h> /* * TODO: * - lens that shows where it's magnifying * * */ int refreshrate = 200; typedef struct { Drawable d; XRectangle *rects; int rectP; unsigned long lastpixel; unsigned long *buffer; int width, height; int rwidth, rheight; /* size of window in real pixels */ int magfactor; int refreshrate; WMWindow *win; WMLabel *label; WMPixmap *pixmap; WMWindow *dlg; WMSlider *speed; WMSlider *magnify; WMButton *okB; WMButton *cancelB; WMButton *newB; int x, y; Bool frozen; Bool firstDraw; Bool markPointerHotspot; WMHandlerID tid; } BufferData; static BufferData *newWindow(int magfactor); int windowCount = 0; int rectBufferSize = 32; Display *dpy, *vdpy; WMScreen *scr; unsigned int black; WMColor *cursorColor1; WMColor *cursorColor2; static BufferData *makeBufferData(WMWindow * win, WMLabel * label, int width, int height, int magfactor) { BufferData *data; data = wmalloc(sizeof(BufferData)); data->rwidth = width; data->rheight = height; data->refreshrate = refreshrate; data->firstDraw = True; data->magfactor = magfactor; data->rects = wmalloc(sizeof(XRectangle) * rectBufferSize); data->rectP = 0; data->win = win; data->label = label; data->pixmap = WMCreatePixmap(scr, width, height, WMScreenDepth(scr), False); WMSetLabelImage(data->label, data->pixmap); data->d = WMGetPixmapXID(data->pixmap); data->frozen = False; width /= magfactor; height /= magfactor; data->buffer = wmalloc(sizeof(unsigned long) * width * height); data->width = width; data->height = height; return data; } static void resizeBufferData(BufferData * data, int width, int height, int magfactor) { int w = width / magfactor; int h = height / magfactor; data->rwidth = width; data->rheight = height; data->firstDraw = True; data->magfactor = magfactor; data->buffer = wrealloc(data->buffer, sizeof(unsigned long) * w * h); data->width = w; data->height = h; memset(data->buffer, 0, w * h * sizeof(unsigned long)); WMResizeWidget(data->label, width, height); WMReleasePixmap(data->pixmap); data->pixmap = WMCreatePixmap(scr, width, height, WMScreenDepth(scr), False); WMSetLabelImage(data->label, data->pixmap); data->d = WMGetPixmapXID(data->pixmap); } static int drawpoint(BufferData * data, unsigned long pixel, int x, int y) { static GC gc = NULL; Bool flush = (x < 0); if (!flush) { if (data->buffer[x + data->width * y] == pixel && !data->firstDraw) return 0; data->buffer[x + data->width * y] = pixel; } if (gc == NULL) { gc = XCreateGC(dpy, DefaultRootWindow(dpy), 0, NULL); } if (!flush && data->lastpixel == pixel && data->rectP < rectBufferSize) { data->rects[data->rectP].x = x * data->magfactor; data->rects[data->rectP].y = y * data->magfactor; data->rects[data->rectP].width = data->magfactor; data->rects[data->rectP].height = data->magfactor; data->rectP++; return 0; } XSetForeground(dpy, gc, data->lastpixel); XFillRectangles(dpy, data->d, gc, data->rects, data->rectP); data->rectP = 0; data->rects[data->rectP].x = x * data->magfactor; data->rects[data->rectP].y = y * data->magfactor; data->rects[data->rectP].width = data->magfactor; data->rects[data->rectP].height = data->magfactor; data->rectP++; data->lastpixel = pixel; return 1; } static inline unsigned long getpix(XImage * image, int x, int y, int xoffs, int yoffs) { if (x < xoffs || y < yoffs || x >= xoffs + image->width || y >= yoffs + image->height) { return black; } return XGetPixel(image, x - xoffs, y - yoffs); } static void updateImage(BufferData * data, int rx, int ry) { int gx, gy, gw, gh; int x, y; int xoffs, yoffs; int changedPixels = 0; XImage *image; gw = data->width; gh = data->height; gx = rx - gw / 2; gy = ry - gh / 2; xoffs = yoffs = 0; if (gx < 0) { xoffs = abs(gx); gw += gx; gx = 0; } if (gx + gw >= WidthOfScreen(DefaultScreenOfDisplay(vdpy))) { gw = WidthOfScreen(DefaultScreenOfDisplay(vdpy)) - gx; } if (gy < 0) { yoffs = abs(gy); gh += gy; gy = 0; } if (gy + gh >= HeightOfScreen(DefaultScreenOfDisplay(vdpy))) { gh = HeightOfScreen(DefaultScreenOfDisplay(vdpy)) - gy; } image = XGetImage(vdpy, DefaultRootWindow(vdpy), gx, gy, gw, gh, AllPlanes, ZPixmap); for (y = 0; y < data->height; y++) { for (x = 0; x < data->width; x++) { unsigned long pixel; pixel = getpix(image, x, y, xoffs, yoffs); if (drawpoint(data, pixel, x, y)) changedPixels++; } } /* flush the point cache */ drawpoint(data, 0, -1, -1); XDestroyImage(image); if (data->markPointerHotspot && !data->frozen) { XRectangle rects[4]; rects[0].x = (data->width / 2 - 3) * data->magfactor; rects[0].y = (data->height / 2) * data->magfactor; rects[0].width = 2 * data->magfactor; rects[0].height = data->magfactor; rects[1].x = (data->width / 2 + 2) * data->magfactor; rects[1].y = (data->height / 2) * data->magfactor; rects[1].width = 2 * data->magfactor; rects[1].height = data->magfactor; XFillRectangles(dpy, data->d, WMColorGC(cursorColor1), rects, 2); rects[2].y = (data->height / 2 - 3) * data->magfactor; rects[2].x = (data->width / 2) * data->magfactor; rects[2].height = 2 * data->magfactor; rects[2].width = data->magfactor; rects[3].y = (data->height / 2 + 2) * data->magfactor; rects[3].x = (data->width / 2) * data->magfactor; rects[3].height = 2 * data->magfactor; rects[3].width = data->magfactor; XFillRectangles(dpy, data->d, WMColorGC(cursorColor2), rects + 2, 2); } if (changedPixels > 0) { WMRedisplayWidget(data->label); } data->firstDraw = False; } static void update(void *d) { BufferData *data = (BufferData *) d; Window win; int rx, ry; int bla; unsigned ubla; if (data->frozen) { rx = data->x; ry = data->y; } else { XQueryPointer(dpy, DefaultRootWindow(dpy), &win, &win, &rx, &ry, &bla, &bla, &ubla); } updateImage(data, rx, ry); data->tid = WMAddTimerHandler(data->refreshrate, update, data); } static void resizedWindow(void *d, WMNotification * notif) { BufferData *data = (BufferData *) d; WMView *view = (WMView *) WMGetNotificationObject(notif); WMSize size; size = WMGetViewSize(view); resizeBufferData(data, size.width, size.height, data->magfactor); } static void closeWindow(WMWidget * w, void *d) { BufferData *data = (BufferData *) d; windowCount--; if (windowCount == 0) { WMReleaseApplication(); exit(0); } else { WMDeleteTimerHandler(data->tid); WMDestroyWidget(w); wfree(data->buffer); wfree(data->rects); WMReleasePixmap(data->pixmap); wfree(data); } } static void keyHandler(XEvent * event, void *d) { BufferData *data = (BufferData *) d; char buf[32]; KeySym ks; WMView *view = WMWidgetView(data->win); WMSize size; size = WMGetViewSize(view); if (XLookupString(&event->xkey, buf, 31, &ks, NULL) > 0) { switch (buf[0]) { case 'n': newWindow(data->magfactor); break; case 'm': data->markPointerHotspot = !data->markPointerHotspot; break; case 'f': case ' ': data->frozen = !data->frozen; if (data->frozen) { data->x = event->xkey.x_root; data->y = event->xkey.y_root; sprintf(buf, "[Magnify %ix]", data->magfactor); } else { sprintf(buf, "Magnify %ix", data->magfactor); } WMSetWindowTitle(data->win, buf); break; case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': resizeBufferData(data, size.width, size.height, buf[0] - '0'); if (data->frozen) { sprintf(buf, "[Magnify %ix]", data->magfactor); } else { sprintf(buf, "Magnify %ix", data->magfactor); } WMSetWindowTitle(data->win, buf); break; } } } static BufferData *newWindow(int magfactor) { WMWindow *win; WMLabel *label; BufferData *data; char buf[32]; windowCount++; win = WMCreateWindow(scr, "magnify"); WMResizeWidget(win, 300, 200); sprintf(buf, "Magnify %ix", magfactor); WMSetWindowTitle(win, buf); WMSetViewNotifySizeChanges(WMWidgetView(win), True); label = WMCreateLabel(win); WMResizeWidget(label, 300, 200); WMMoveWidget(label, 0, 0); WMSetLabelRelief(label, WRSunken); WMSetLabelImagePosition(label, WIPImageOnly); data = makeBufferData(win, label, 300, 200, magfactor); WMCreateEventHandler(WMWidgetView(win), KeyReleaseMask, keyHandler, data); WMAddNotificationObserver(resizedWindow, data, WMViewSizeDidChangeNotification, WMWidgetView(win)); WMRealizeWidget(win); WMMapSubwidgets(win); WMMapWidget(win); WMSetWindowCloseAction(win, closeWindow, data); data->tid = WMAddTimerHandler(refreshrate, update, data); return data; } int main(int argc, char **argv) { int i; char *display = ""; char *vdisplay = NULL; int magfactor = 2; WMInitializeApplication("Magnify", &argc, argv); for (i = 1; i < argc; i++) { if (strcmp(argv[i], "-display") == 0) { i++; if (i >= argc) goto help; display = argv[i]; } else if (strcmp(argv[i], "-vdisplay") == 0) { i++; if (i >= argc) goto help; vdisplay = argv[i]; } else if (strcmp(argv[i], "-m") == 0) { i++; if (i >= argc) goto help; magfactor = atoi(argv[i]); if (magfactor < 1 || magfactor > 32) { printf("%s:invalid magnification factor ``%s''\n", argv[0], argv[i]); exit(1); } } else if (strcmp(argv[i], "-r") == 0) { i++; if (i >= argc) goto help; refreshrate = atoi(argv[i]); if (refreshrate < 1) { printf("%s:invalid refresh rate ``%s''\n", argv[0], argv[i]); exit(1); } } else if (strcmp(argv[i], "-h") == 0 || strcmp(argv[i], "--help") == 0) { help: printf("Usage: %s [options]\n", argv[0]); puts("Options:"); puts(" -display <display>\tdisplay where to magnification is shown"); puts(" -m <number>\t\tchange magnification factor (default 2)"); puts(" -r <number>\t\tchange refresh delay, in milliseconds (default 200)"); puts(" -vdisplay <display>\tdisplay from which the magnification is taken"); puts(" -h, --help\t\tdisplay this help page"); puts("Keys:"); puts(" 1,2,3,4,5,6,7,8,9 change the magnification factor"); puts(" <space>, f freeze the 'camera', making it magnify only the current\n" " position"); puts(" n create a new window"); puts(" m show/hide the pointer hotspot mark"); exit(0); } } dpy = XOpenDisplay(display); if (!dpy) { puts("could not open display"); exit(1); } if (vdisplay) { vdpy = XOpenDisplay(vdisplay); if (!vdpy) { puts("could not open display to be viewed"); exit(1); } } else { vdpy = dpy; } /* calculate how many rectangles we can send in a trip to the server */ rectBufferSize = XMaxRequestSize(dpy) - 128; rectBufferSize /= sizeof(XRectangle); if (rectBufferSize < 1) rectBufferSize = 1; black = BlackPixel(dpy, DefaultScreen(dpy)); scr = WMCreateScreen(dpy, 0); cursorColor1 = WMCreateNamedColor(scr, "#ff0000", False); cursorColor2 = WMCreateNamedColor(scr, "#00ff00", False); newWindow(magfactor); WMScreenMainLoop(scr); return 0; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/util/convertfonts.c��������������������������������������������������������������0000644�0001750�0001750�00000010171�13431646202�014642� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* convertfonts.c - converts fonts in a style file to fontconfig format * * WindowMaker window manager * * Copyright (c) 2004 Dan Pascu * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifdef __GLIBC__ #define _GNU_SOURCE /* getopt_long */ #endif #include "config.h" #include <sys/stat.h> #include <getopt.h> #include <locale.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #ifdef HAVE_STDNORETURN #include <stdnoreturn.h> #endif #include <WINGs/WUtil.h> #include "../src/wconfig.h" #include "common.h" char *FontOptions[] = { "IconTitleFont", "ClipTitleFont", "LargeDisplayFont", "MenuTextFont", "MenuTitleFont", "WindowTitleFont", "SystemFont", "BoldSystemFont", NULL }; static const char *prog_name; static noreturn void print_help(int print_usage, int exitval) { printf("Usage: %s [-h] [-v] [--keep-xlfd] <style_file>\n", prog_name); if (print_usage) { puts("Converts fonts in a style file into fontconfig format"); puts(""); puts(" -h, --help display this help and exit"); puts(" -v, --version output version information and exit"); puts(" --keep-xlfd preserve the original xlfd by appending a ':xlfd=<xlfd>' hint"); puts(" to the font name. This property is not used by the fontconfig"); puts(" matching engine to find the font, but it is useful as a hint"); puts(" about what the original font was to allow hand tuning the"); puts(" result or restoring the xlfd. The default is to not add it"); puts(" as it results in long, unreadable and confusing names."); } exit(exitval); } int main(int argc, char **argv) { WMPropList *style, *key, *val; char *file = NULL, *oldfont, *newfont; struct stat st; Bool keepXLFD = False; int i, ch; struct option longopts[] = { { "version", no_argument, NULL, 'v' }, { "help", no_argument, NULL, 'h' }, { "keep-xlfd", no_argument, &keepXLFD, True }, { NULL, 0, NULL, 0 } }; prog_name = argv[0]; while ((ch = getopt_long(argc, argv, "hv", longopts, NULL)) != -1) switch(ch) { case 'v': printf("%s (Window Maker %s)\n", prog_name, VERSION); return 0; /* NOTREACHED */ case 'h': print_help(1, 0); /* NOTREACHED */ case 0: break; default: print_help(0, 1); /* NOTREACHED */ } argc -= optind; argv += optind; if (argc != 1) print_help(0, 1); file = argv[0]; if (stat(file, &st) != 0) { perror(file); return 1; } if (!S_ISREG(st.st_mode)) { /* maybe symlink too? */ fprintf(stderr, "%s: `%s' is not a regular file\n", prog_name, file); return 1; } /* we need this in order for MB_CUR_MAX to work */ /* this contradicts big time with getstyle */ setlocale(LC_ALL, ""); WMPLSetCaseSensitive(False); style = WMReadPropListFromFile(file); if (!style) { perror(file); printf("%s: could not load style file\n", prog_name); return 1; } if (!WMIsPLDictionary(style)) { printf("%s: '%s' is not a well formatted style file\n", prog_name, file); return 1; } for (i = 0; FontOptions[i] != NULL; i++) { key = WMCreatePLString(FontOptions[i]); val = WMGetFromPLDictionary(style, key); if (val) { oldfont = WMGetFromPLString(val); newfont = convertFont(oldfont, keepXLFD); if (oldfont != newfont) { val = WMCreatePLString(newfont); WMPutInPLDictionary(style, key, val); WMReleasePropList(val); wfree(newfont); } } WMReleasePropList(key); } WMWritePropListToFile(style, file); return 0; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/util/wmmenugen_parse_xdg.c�������������������������������������������������������0000644�0001750�0001750�00000040237�13642357774�016175� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * wmmenugen - Window Maker PropList menu generator * * Desktop Entry Specification parser functions * * Copyright (c) 2010. Tamas Tevesz <ice@extreme.hu> * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ /* * http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-1.1.html * http://standards.freedesktop.org/menu-spec/menu-spec-1.1.html * * We will only deal with Type == "Application" entries in [Desktop Entry] * groups. Since there is no passing of file name arguments or anything of * the sort to applications from the menu, execname is determined as follows: * - If `TryExec' is present, use that; * - else use `Exec' with any switches stripped * * Only the (first, though there should not be more than one) `Main Category' * is used to place the entry in a submenu. * * Basic validation of the .desktop file is done. */ #include <sys/types.h> #include <sys/stat.h> #include <ctype.h> #include <ftw.h> #if DEBUG #include <errno.h> #endif #include <stdio.h> #include <stdlib.h> #include <string.h> #include "wmmenugen.h" /* LocaleString match levels */ enum { MATCH_DEFAULT, MATCH_LANG, MATCH_LANG_MODIFIER, MATCH_LANG_COUNTRY, MATCH_LANG_COUNTRY_MODIFIER }; typedef struct { char *Name; /* Name */ /* localestring */ int MatchLevel; /* LocaleString match type */ /* int */ char *TryExec; /* TryExec */ /* string */ char *Exec; /* Exec */ /* string */ char *Path; /* Path */ /* string */ int Flags; /* Flags */ char *Category; /* Categories (first item only) */ /* string */ } XDGMenuEntry; static void getKey(char **target, const char *line); static void getStringValue(char **target, const char *line); static void getLocalizedStringValue(char **target, const char *line, int *match_level); static int getBooleanValue(const char *line); static void getMenuHierarchyFor(char **xdgmenuspec); static int compare_matchlevel(int *current_level, const char *found_locale); static Bool xdg_to_wm(XDGMenuEntry *xdg, WMMenuEntry *wmentry); static char *parse_xdg_exec(char *exec); static void init_xdg_storage(XDGMenuEntry *xdg); static void init_wm_storage(WMMenuEntry *wm); void parse_xdg(const char *file, cb_add_menu_entry *addWMMenuEntryCallback) { FILE *fp; char buf[1024]; char *p, *tmp, *key; WMMenuEntry *wm; XDGMenuEntry *xdg; int InGroup; fp = fopen(file, "r"); if (!fp) { #if DEBUG fprintf(stderr, "Error opening file %s: %s\n", file, strerror(errno)); #endif return; } xdg = (XDGMenuEntry *)wmalloc(sizeof(XDGMenuEntry)); wm = (WMMenuEntry *)wmalloc(sizeof(WMMenuEntry)); InGroup = 0; memset(buf, 0, sizeof(buf)); while (fgets(buf, sizeof(buf), fp)) { p = buf; /* skip whitespaces */ while (isspace(*p)) p++; /* skip comments, empty lines */ if (*p == '\r' || *p == '\n' || *p == '#') { memset(buf, 0, sizeof(buf)); continue; } /* trim crlf */ buf[strcspn(buf, "\r\n")] = '\0'; if (strlen(buf) == 0) continue; if (strcmp(p, "[Desktop Entry]") == 0) { /* if currently processing a group, we've just hit the * end of its definition, try processing it */ if (InGroup && xdg_to_wm(xdg, wm)) { (*addWMMenuEntryCallback)(wm); } init_xdg_storage(xdg); init_wm_storage(wm); InGroup = 1; /* start processing group */ memset(buf, 0, sizeof(buf)); continue; } else if (p[0] == '[') { /* If we find a new group and the previous group was the main one, * we stop all further processing */ if (InGroup) break; } if (!InGroup) { memset(buf, 0, sizeof(buf)); continue; } getKey(&key, p); if (key == NULL) { /* not `key' = `value' */ memset(buf, 0, sizeof(buf)); continue; } if (strcmp(key, "Type") == 0) { getStringValue(&tmp, p); if (strcmp(tmp, "Application") != 0) InGroup = 0; /* if not application, skip current group */ wfree(tmp); tmp = NULL; } else if (strcmp(key, "Name") == 0) { getLocalizedStringValue(&xdg->Name, p, &xdg->MatchLevel); } else if (strcmp(key, "NoDisplay") == 0) { if (getBooleanValue(p)) /* if nodisplay, skip current group */ InGroup = 0; } else if (strcmp(key, "Hidden") == 0) { if (getBooleanValue(p)) InGroup = 0; /* if hidden, skip current group */ } else if (strcmp(key, "TryExec") == 0) { getStringValue(&xdg->TryExec, p); } else if (strcmp(key, "Exec") == 0) { getStringValue(&xdg->Exec, p); } else if (strcmp(key, "Path") == 0) { getStringValue(&xdg->Path, p); } else if (strcmp(key, "Terminal") == 0) { if (getBooleanValue(p)) xdg->Flags |= F_TERMINAL; } else if (strcmp(key, "Categories") == 0) { getStringValue(&xdg->Category, p); getMenuHierarchyFor(&xdg->Category); } if (xdg->Category == NULL) xdg->Category = wstrdup(_("Other")); wfree(key); key = NULL; } fclose(fp); /* at the end of the file, might as well try to menuize what we have * unless there was no group at all or it was marked as hidden */ if (InGroup && xdg_to_wm(xdg, wm)) (*addWMMenuEntryCallback)(wm); } /* coerce an xdg entry type into a wm entry type */ static Bool xdg_to_wm(XDGMenuEntry *xdg, WMMenuEntry *wm) { char *p; /* Exec or TryExec is mandatory */ if (!(xdg->Exec || xdg->TryExec)) return False; /* if there's no Name, use the first word of Exec or TryExec */ if (xdg->Name) { wm->Name = xdg->Name; } else { if (xdg->TryExec) wm->Name = wstrdup(xdg->TryExec); else /* xdg->Exec */ wm->Name = wstrdup(xdg->Exec); p = strchr(wm->Name, ' '); if (p) *p = '\0'; } if (xdg->TryExec) wm->CmdLine = xdg->TryExec; else { /* xdg->Exec */ wm->CmdLine = parse_xdg_exec(xdg->Exec); if (!wm->CmdLine) return False; } wm->SubMenu = xdg->Category; wm->Flags = xdg->Flags; if (wm->CmdLine != xdg->TryExec) wm->Flags |= F_FREE_CMD_LINE; return True; } static char *parse_xdg_exec(char *exec) { char *cmd_line, *dst, *src; Bool quoted = False; cmd_line = wstrdup(exec); for (dst = src = cmd_line; *src; src++) { if (quoted) { if (*src == '"') quoted = False; else if (*src == '\\') switch (*++src) { case '"': case '`': case '$': case '\\': *dst++ = *src; break; default: goto err_out; } else *dst++ = *src; } else { if (*src == '"') quoted = True; else if (*src == '%') { src++; if (*src == '%') *dst++ = *src; else if (strchr ("fFuUdDnNickvm", *src)) /* * Skip valid field-code. */ ; else /* * Invalid field-code. */ goto err_out; } else *dst++ = *src; } } if (quoted) goto err_out; do *dst = '\0'; while (dst > cmd_line && isspace(*--dst)); return cmd_line; err_out: wfree(cmd_line); return NULL; } /* (re-)initialize a XDGMenuEntry storage */ static void init_xdg_storage(XDGMenuEntry *xdg) { if (xdg->Name) wfree(xdg->Name); if (xdg->TryExec) wfree(xdg->TryExec); if (xdg->Exec) wfree(xdg->Exec); if (xdg->Category) wfree(xdg->Category); if (xdg->Path) wfree(xdg->Path); xdg->Name = NULL; xdg->TryExec = NULL; xdg->Exec = NULL; xdg->Category = NULL; xdg->Path = NULL; xdg->Flags = 0; xdg->MatchLevel = -1; } /* (re-)initialize a WMMenuEntry storage */ static void init_wm_storage(WMMenuEntry *wm) { if (wm->Flags & F_FREE_CMD_LINE) wfree(wm->CmdLine); wm->Name = NULL; wm->CmdLine = NULL; wm->Flags = 0; } /* get a key from line. allocates target, which must be wfreed later */ static void getKey(char **target, const char *line) { const char *p; int kstart, kend; p = line; if (strchr(p, '=') == NULL) { /* not `key' = `value' */ *target = NULL; return; } kstart = 0; /* skip whitespace */ while (isspace(*(p + kstart))) kstart++; /* skip up until first whitespace or '[' (localestring) or '=' */ kend = kstart + 1; while (*(p + kend) && !isspace(*(p + kend)) && *(p + kend) != '=' && *(p + kend) != '[') kend++; *target = wstrndup(p + kstart, kend - kstart); } /* get a string value from line. allocates target, which must be wfreed later. */ static void getStringValue(char **target, const char *line) { const char *p; char *q; int kstart; p = line; kstart = 0; /* skip until after '=' */ while (*(p + kstart) && *(p + kstart) != '=') kstart++; kstart++; /* skip whitespace */ while (*(p + kstart) && isspace(*(p + kstart))) kstart++; *target = wstrdup(p + kstart); for (p = q = *target; *p; p++) { if (*p != '\\') { *q++ = *p; } else { switch (*++p) { case 's': *q++ = ' '; break; case 'n': *q++ = '\n'; break; case 't': *q++ = '\t'; break; case 'r': *q++ = '\r'; break; case '\\': *q++ = '\\'; break; default: /* * Skip invalid escape. */ break; } } } *q = '\0'; } /* get a localized string value from line. allocates target, which must be wfreed later. * matching is dependent on the current value of target as well as on the * level the current value is matched on. guts matching algorithm is in * compare_matchlevel(). */ static void getLocalizedStringValue(char **target, const char *line, int *match_level) { const char *p; char *locale; int kstart; int sqbstart, sqbend; p = line; kstart = 0; sqbstart = 0; sqbend = 0; locale = NULL; /* skip until after '=', mark if '[' and ']' is found */ while (*(p + kstart) && *(p + kstart) != '=') { switch (*(p + kstart)) { case '[': sqbstart = kstart + 1;break; case ']': sqbend = kstart; break; default : break; } kstart++; } kstart++; /* skip whitespace */ while (isspace(*(p + kstart))) kstart++; if (sqbstart > 0 && sqbend > sqbstart) locale = wstrndup(p + sqbstart, sqbend - sqbstart); /* if there is no value yet and this is the default key, return */ if (!*target && !locale) { *match_level = MATCH_DEFAULT; *target = wstrdup(p + kstart); return; } if (compare_matchlevel(match_level, locale)) { wfree(locale); *target = wstrdup(p + kstart); return; } return; } /* get a boolean value from line */ static Bool getBooleanValue(const char *line) { char *p; int ret; getStringValue(&p, line); ret = strcmp(p, "true") == 0 ? True : False; wfree(p); return ret; } /* perform locale matching by implementing the algorithm specified in * xdg desktop entry specification, section "localized values for keys". */ static Bool compare_matchlevel(int *current_level, const char *found_locale) { /* current key locale */ char *key_lang, *key_ctry, *key_enc, *key_mod; parse_locale(found_locale, &key_lang, &key_ctry, &key_enc, &key_mod); if (env_lang && key_lang && /* Shortcut: if key and env languages don't match, */ strcmp(env_lang, key_lang) != 0) /* don't even bother. This takes care of the great */ return False; /* majority of the cases without having to go through */ /* the more theoretical parts of the spec'd algo. */ if (!env_mod && key_mod) /* If LC_MESSAGES does not have a MODIFIER field, */ return False; /* then no key with a modifier will be matched. */ if (!env_ctry && key_ctry) /* Similarly, if LC_MESSAGES does not have a COUNTRY field, */ return False; /* then no key with a country specified will be matched. */ /* LC_MESSAGES value: lang_COUNTRY@MODIFIER */ if (env_lang && env_ctry && env_mod) { /* lang_COUNTRY@MODIFIER */ if (key_lang && key_ctry && key_mod && strcmp(env_lang, key_lang) == 0 && strcmp(env_ctry, key_ctry) == 0 && strcmp(env_mod, key_mod) == 0) { *current_level = MATCH_LANG_COUNTRY_MODIFIER; return True; } else if (key_lang && key_ctry && /* lang_COUNTRY */ strcmp(env_lang, key_lang) == 0 && strcmp(env_ctry, key_ctry) == 0 && *current_level < MATCH_LANG_COUNTRY) { *current_level = MATCH_LANG_COUNTRY; return True; } else if (key_lang && key_mod && /* lang@MODIFIER */ strcmp(env_lang, key_lang) == 0 && strcmp(env_mod, key_mod) == 0 && *current_level < MATCH_LANG_MODIFIER) { *current_level = MATCH_LANG_MODIFIER; return True; } else if (key_lang && /* lang */ strcmp(env_lang, key_lang) == 0 && *current_level < MATCH_LANG) { *current_level = MATCH_LANG; return True; } else { return False; } } /* LC_MESSAGES value: lang_COUNTRY */ if (env_lang && env_ctry) { /* lang_COUNTRY */ if (key_lang && key_ctry && strcmp(env_lang, key_lang) == 0 && strcmp(env_ctry, key_ctry) == 0 && *current_level < MATCH_LANG_COUNTRY) { *current_level = MATCH_LANG_COUNTRY; return True; } else if (key_lang && /* lang */ strcmp(env_lang, key_lang) == 0 && *current_level < MATCH_LANG) { *current_level = MATCH_LANG; return True; } else { return False; } } /* LC_MESSAGES value: lang@MODIFIER */ if (env_lang && env_mod) { /* lang@MODIFIER */ if (key_lang && key_mod && strcmp(env_lang, key_lang) == 0 && strcmp(env_mod, key_mod) == 0 && *current_level < MATCH_LANG_MODIFIER) { *current_level = MATCH_LANG_MODIFIER; return True; } else if (key_lang && /* lang */ strcmp(env_lang, key_lang) == 0 && *current_level < MATCH_LANG) { *current_level = MATCH_LANG; return True; } else { return False; } } /* LC_MESSAGES value: lang */ if (env_lang) { /* lang */ if (key_lang && strcmp(env_lang, key_lang) == 0 && *current_level < MATCH_LANG) { *current_level = MATCH_LANG; return True; } else { return False; } } /* MATCH_DEFAULT is handled in getLocalizedStringValue */ return False; } /* get the (first) xdg main category from a list of categories */ static void getMenuHierarchyFor(char **xdgmenuspec) { char *category, *p; char buf[1024]; if (!*xdgmenuspec || !**xdgmenuspec) return; category = wstrdup(*xdgmenuspec); wfree(*xdgmenuspec); memset(buf, 0, sizeof(buf)); p = strtok(category, ";"); while (p) { /* get a known category */ if (strcmp(p, "AudioVideo") == 0) { snprintf(buf, sizeof(buf), "%s", _("Audio & Video")); break; } else if (strcmp(p, "Audio") == 0) { snprintf(buf, sizeof(buf), "%s", _("Audio")); break; } else if (strcmp(p, "Video") == 0) { snprintf(buf, sizeof(buf), "%s", _("Video")); break; } else if (strcmp(p, "Development") == 0) { snprintf(buf, sizeof(buf), "%s", _("Development")); break; } else if (strcmp(p, "Education") == 0) { snprintf(buf, sizeof(buf), "%s", _("Education")); break; } else if (strcmp(p, "Game") == 0) { snprintf(buf, sizeof(buf), "%s", _("Game")); break; } else if (strcmp(p, "Graphics") == 0) { snprintf(buf, sizeof(buf), "%s", _("Graphics")); break; } else if (strcmp(p, "Network") == 0) { snprintf(buf, sizeof(buf), "%s", _("Network")); break; } else if (strcmp(p, "Office") == 0) { snprintf(buf, sizeof(buf), "%s", _("Office")); break; } else if (strcmp(p, "Science") == 0) { snprintf(buf, sizeof(buf), "%s", _("Science")); break; } else if (strcmp(p, "Settings") == 0) { snprintf(buf, sizeof(buf), "%s", _("Settings")); break; } else if (strcmp(p, "System") == 0) { snprintf(buf, sizeof(buf), "%s", _("System")); break; } else if (strcmp(p, "Utility") == 0) { snprintf(buf, sizeof(buf), "%s", _("Utility")); break; /* reserved categories */ } else if (strcmp(p, "Screensaver") == 0) { snprintf(buf, sizeof(buf), "%s", _("Screensaver")); break; } else if (strcmp(p, "TrayIcon") == 0) { snprintf(buf, sizeof(buf), "%s", _("Tray Icon")); break; } else if (strcmp(p, "Applet") == 0) { snprintf(buf, sizeof(buf), "%s", _("Applet")); break; } else if (strcmp(p, "Shell") == 0) { snprintf(buf, sizeof(buf), "%s", _("Shell")); break; } p = strtok(NULL, ";"); } if (!*buf) /* come up with something if nothing found */ snprintf(buf, sizeof(buf), "%s", _("Other")); *xdgmenuspec = wstrdup(buf); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/util/fontconv.c������������������������������������������������������������������0000644�0001750�0001750�00000007413�13431646202�013751� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <WINGs/WUtil.h> #include "../src/wconfig.h" #include "common.h" #define DEFAULT_FONT "sans serif:pixelsize=12" /* X Font Name Suffix field names */ enum { FOUNDRY, FAMILY_NAME, WEIGHT_NAME, SLANT, SETWIDTH_NAME, ADD_STYLE_NAME, PIXEL_SIZE, POINT_SIZE, RESOLUTION_X, RESOLUTION_Y, SPACING, AVERAGE_WIDTH, CHARSET_REGISTRY, CHARSET_ENCODING }; static int countChar(const char *str, char c) { int count = 0; if (!str) return 0; for (; *str != 0; str++) { if (*str == c) { count++; } } return count; } typedef struct str { const char *str; int len; } str; #define XLFD_TOKENS 14 static str *getXLFDTokens(const char *xlfd) { static str tokens[XLFD_TOKENS]; int i, len, size; const char *ptr; /* XXX: why does this assume there can't ever be XFNextPrefix? */ if (!xlfd || *xlfd != '-' || countChar(xlfd, '-') != XLFD_TOKENS) return NULL; memset(tokens, 0, sizeof(str) * XLFD_TOKENS); len = strlen(xlfd); for (ptr = xlfd, i = 0; i < XLFD_TOKENS && len > 0; i++) { /* skip one '-' */ ptr++; len--; if (len <= 0) break; size = strcspn(ptr, "-,"); tokens[i].str = ptr; tokens[i].len = size; ptr += size; len -= size; } return tokens; } static int strToInt(str * token) { static char buf[32]; /* enough for an Incredibly Big Number */ if (token->len == 0 || token->str[0] == '*' || token->len >= sizeof(buf)) return -1; memset(buf, 0, sizeof(buf)); strncpy(buf, token->str, token->len); /* the code using this will gracefully handle overflows */ return (int)strtol(buf, NULL, 10); } static char *mapWeightToName(str * weight) { static const char *normalNames[] = { "medium", "normal", "regular" }; static char buf[32]; size_t i; if (weight->len == 0) return ""; for (i = 0; i < wlengthof(normalNames); i++) { if (strlen(normalNames[i]) == weight->len && strncmp(normalNames[i], weight->str, weight->len)) { return ""; } } snprintf(buf, sizeof(buf), ":%.*s", weight->len, weight->str); return buf; } static char *mapSlantToName(str * slant) { if (slant->len == 0) return ""; switch (slant->str[0]) { case 'i': return ":italic"; case 'o': return ":oblique"; case 'r': default: return ""; } } static char *xlfdToFc(const char *xlfd, const char *useFamily, Bool keepXLFD) { str *tokens, *family, *weight, *slant; char *name, buf[64]; int size, pixelsize; tokens = getXLFDTokens(xlfd); if (!tokens) return wstrdup(DEFAULT_FONT); family = &(tokens[FAMILY_NAME]); weight = &(tokens[WEIGHT_NAME]); slant = &(tokens[SLANT]); pixelsize = strToInt(&tokens[PIXEL_SIZE]); size = strToInt(&tokens[POINT_SIZE]); if (useFamily) { name = wstrdup(useFamily); } else { if (family->len == 0 || family->str[0] == '*') return wstrdup(DEFAULT_FONT); snprintf(buf, sizeof(buf), "%.*s", family->len, family->str); name = wstrdup(buf); } if (size > 0 && pixelsize <= 0) { snprintf(buf, sizeof(buf), "-%d", size / 10); name = wstrappend(name, buf); } name = wstrappend(name, mapWeightToName(weight)); name = wstrappend(name, mapSlantToName(slant)); if (size <= 0 && pixelsize <= 0) { name = wstrappend(name, ":pixelsize=12"); } else if (pixelsize > 0) { /* if pixelsize is present size will be ignored so we skip it */ snprintf(buf, sizeof(buf), ":pixelsize=%d", pixelsize); name = wstrappend(name, buf); } if (keepXLFD) { name = wstrappend(name, ":xlfd="); name = wstrappend(name, xlfd); } return name; } /* return converted font (if conversion is needed) else the original font */ char *convertFont(char *font, Bool keepXLFD) { if (font[0] == '-') { if (MB_CUR_MAX < 2) { return xlfdToFc(font, NULL, keepXLFD); } else { return xlfdToFc(font, "sans serif", keepXLFD); } } else { return font; } } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/util/setstyle.c������������������������������������������������������������������0000644�0001750�0001750�00000031314�13642357774�014007� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* setstyle.c - loads style related options to wmaker * * WindowMaker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifdef __GLIBC__ #define _GNU_SOURCE /* getopt_long */ #endif #include "config.h" #include <sys/stat.h> #include <getopt.h> #include <limits.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <strings.h> #include <unistd.h> #include <X11/Xlib.h> #ifdef HAVE_STDNORETURN #include <stdnoreturn.h> #endif #include <WINGs/WUtil.h> #include "../src/wconfig.h" #include "common.h" #define MAX_OPTIONS 128 char *FontOptions[] = { "IconTitleFont", "ClipTitleFont", "LargeDisplayFont", "MenuTextFont", "MenuTitleFont", "WindowTitleFont", NULL }; char *CursorOptions[] = { "NormalCursor", "ArrowCursor", "MoveCursor", "ResizeCursor", "TopLeftResizeCursor", "TopRightResizeCursor", "BottomLeftResizeCursor", "BottomRightResizeCursor", "VerticalResizeCursor", "HorizontalResizeCursor", "WaitCursor", "QuestionCursor", "TextCursor", "SelectCursor", NULL }; static const char *prog_name; int ignoreFonts = 0; int ignoreCursors = 0; Display *dpy; static Bool isCursorOption(const char *option) { int i; for (i = 0; CursorOptions[i] != NULL; i++) { if (strcasecmp(option, CursorOptions[i]) == 0) { return True; } } return False; } static Bool isFontOption(const char *option) { int i; for (i = 0; FontOptions[i] != NULL; i++) { if (strcasecmp(option, FontOptions[i]) == 0) { return True; } } return False; } /* * finds elements in `texture' that reference external files, * prepends `prefix' to these files. `prefix' is a path component * that qualifies the external references to be absolute, possibly * pending further expansion */ static void hackPathInTexture(WMPropList * texture, const char *prefix) { WMPropList *type; char *t; /* get texture type */ type = WMGetFromPLArray(texture, 0); t = WMGetFromPLString(type); if (t == NULL) return; if (strcasecmp(t, "tpixmap") == 0 || strcasecmp(t, "spixmap") == 0 || strcasecmp(t, "mpixmap") == 0 || strcasecmp(t, "cpixmap") == 0 || strcasecmp(t, "fpixmap") == 0 || strcasecmp(t, "tvgradient") == 0 || strcasecmp(t, "thgradient") == 0 || strcasecmp(t, "tdgradient") == 0) { WMPropList *file; char buffer[4018]; /* get pixmap file path */ file = WMGetFromPLArray(texture, 1); sprintf(buffer, "%s/%s", prefix, WMGetFromPLString(file)); /* replace path with full path */ WMDeleteFromPLArray(texture, 1); WMInsertInPLArray(texture, 1, WMCreatePLString(buffer)); } else if (strcasecmp(t, "bitmap") == 0) { WMPropList *file; char buffer[4018]; /* get bitmap file path */ file = WMGetFromPLArray(texture, 1); sprintf(buffer, "%s/%s", prefix, WMGetFromPLString(file)); /* replace path with full path */ WMDeleteFromPLArray(texture, 1); WMInsertInPLArray(texture, 1, WMCreatePLString(buffer)); /* get mask file path */ file = WMGetFromPLArray(texture, 2); sprintf(buffer, "%s/%s", prefix, WMGetFromPLString(file)); /* replace path with full path */ WMDeleteFromPLArray(texture, 2); WMInsertInPLArray(texture, 2, WMCreatePLString(buffer)); } } static void hackPaths(WMPropList * style, const char *prefix) { WMPropList *keys; WMPropList *key; WMPropList *value; int i; keys = WMGetPLDictionaryKeys(style); for (i = 0; i < WMGetPropListItemCount(keys); i++) { key = WMGetFromPLArray(keys, i); value = WMGetFromPLDictionary(style, key); if (!value) continue; if (strcasecmp(WMGetFromPLString(key), "WorkspaceSpecificBack") == 0) { if (WMIsPLArray(value)) { int j; WMPropList *texture; for (j = 0; j < WMGetPropListItemCount(value); j++) { texture = WMGetFromPLArray(value, j); if (texture && WMIsPLArray(texture) && WMGetPropListItemCount(texture) > 2) { hackPathInTexture(texture, prefix); } } } } else { if (WMIsPLArray(value) && WMGetPropListItemCount(value) > 2) { hackPathInTexture(value, prefix); } } } WMReleasePropList(keys); } static WMPropList *getColor(WMPropList * texture) { WMPropList *value, *type; char *str; type = WMGetFromPLArray(texture, 0); if (!type) return NULL; value = NULL; str = WMGetFromPLString(type); if (strcasecmp(str, "solid") == 0) { value = WMGetFromPLArray(texture, 1); } else if (strcasecmp(str, "dgradient") == 0 || strcasecmp(str, "hgradient") == 0 || strcasecmp(str, "vgradient") == 0) { WMPropList *c1, *c2; int r1, g1, b1, r2, g2, b2; char buffer[32]; c1 = WMGetFromPLArray(texture, 1); c2 = WMGetFromPLArray(texture, 2); if (!dpy) { if (sscanf(WMGetFromPLString(c1), "#%2x%2x%2x", &r1, &g1, &b1) == 3 && sscanf(WMGetFromPLString(c2), "#%2x%2x%2x", &r2, &g2, &b2) == 3) { sprintf(buffer, "#%02x%02x%02x", (r1 + r2) / 2, (g1 + g2) / 2, (b1 + b2) / 2); value = WMCreatePLString(buffer); } else { value = c1; } } else { XColor color1; XColor color2; XParseColor(dpy, DefaultColormap(dpy, DefaultScreen(dpy)), WMGetFromPLString(c1), &color1); XParseColor(dpy, DefaultColormap(dpy, DefaultScreen(dpy)), WMGetFromPLString(c2), &color2); sprintf(buffer, "#%02x%02x%02x", (color1.red + color2.red) >> 9, (color1.green + color2.green) >> 9, (color1.blue + color2.blue) >> 9); value = WMCreatePLString(buffer); } } else if (strcasecmp(str, "mdgradient") == 0 || strcasecmp(str, "mhgradient") == 0 || strcasecmp(str, "mvgradient") == 0) { value = WMGetFromPLArray(texture, 1); } else if (strcasecmp(str, "tpixmap") == 0 || strcasecmp(str, "cpixmap") == 0 || strcasecmp(str, "spixmap") == 0) { value = WMGetFromPLArray(texture, 2); } return value; } /* * since some of the options introduce incompatibilities, we will need * to do a kluge here or the themes ppl will get real annoying. * So, treat for the absence of the following options: * IconTitleColor * IconTitleBack */ static void hackStyle(WMPropList * style) { WMPropList *keys, *tmp; int foundIconTitle = 0, foundResizebarBack = 0; int i; keys = WMGetPLDictionaryKeys(style); for (i = 0; i < WMGetPropListItemCount(keys); i++) { char *str; tmp = WMGetFromPLArray(keys, i); str = WMGetFromPLString(tmp); if (str) { if (ignoreFonts && isFontOption(str)) { WMRemoveFromPLDictionary(style, tmp); continue; } if (ignoreCursors && isCursorOption(str)) { WMRemoveFromPLDictionary(style, tmp); continue; } if (isFontOption(str)) { WMPropList *value; char *newfont, *oldfont; value = WMGetFromPLDictionary(style, tmp); if (value) { oldfont = WMGetFromPLString(value); newfont = convertFont(oldfont, False); if (newfont != oldfont) { value = WMCreatePLString(newfont); WMPutInPLDictionary(style, tmp, value); WMReleasePropList(value); wfree(newfont); } } } if (strcasecmp(str, "IconTitleColor") == 0 || strcasecmp(str, "IconTitleBack") == 0) { foundIconTitle = 1; } else if (strcasecmp(str, "ResizebarBack") == 0) { foundResizebarBack = 1; } } } WMReleasePropList(keys); if (!foundIconTitle) { /* set the default values */ tmp = WMGetFromPLDictionary(style, WMCreatePLString("FTitleColor")); if (tmp) { WMPutInPLDictionary(style, WMCreatePLString("IconTitleColor"), tmp); } tmp = WMGetFromPLDictionary(style, WMCreatePLString("FTitleBack")); if (tmp) { WMPropList *value; value = getColor(tmp); if (value) { WMPutInPLDictionary(style, WMCreatePLString("IconTitleBack"), value); } } } if (!foundResizebarBack) { /* set the default values */ tmp = WMGetFromPLDictionary(style, WMCreatePLString("UTitleBack")); if (tmp) { WMPropList *value; value = getColor(tmp); if (value) { WMPropList *t; t = WMCreatePLArray(WMCreatePLString("solid"), value, NULL); WMPutInPLDictionary(style, WMCreatePLString("ResizebarBack"), t); } } } if (!WMGetFromPLDictionary(style, WMCreatePLString("MenuStyle"))) { WMPutInPLDictionary(style, WMCreatePLString("MenuStyle"), WMCreatePLString("normal")); } } static noreturn void print_help(int print_usage, int exitval) { printf("Usage: %s [OPTIONS] FILE\n", prog_name); if (print_usage) { puts("Reads style/theme configuration from FILE and updates Window Maker."); puts(""); puts(" --no-fonts ignore font related options"); puts(" --no-cursors ignore cursor related options"); puts(" --ignore <option> ignore changes in the specified option"); puts(" -h, --help display this help and exit"); puts(" -v, --version output version information and exit"); } exit(exitval); } int main(int argc, char **argv) { WMPropList *prop, *style; char *path; char *file = NULL; struct stat st; int i, ch, ignflag = 0; int ignoreCount = 0; char *ignoreList[MAX_OPTIONS]; XEvent ev; struct option longopts[] = { { "version", no_argument, NULL, 'v' }, { "help", no_argument, NULL, 'h' }, { "no-fonts", no_argument, &ignoreFonts, 1 }, { "no-cursors", no_argument, &ignoreCursors, 1 }, { "ignore", required_argument, &ignflag, 1 }, { NULL, 0, NULL, 0 } }; prog_name = argv[0]; while ((ch = getopt_long(argc, argv, "hv", longopts, NULL)) != -1) switch(ch) { case 'v': printf("%s (Window Maker %s)\n", prog_name, VERSION); return 0; /* NOTREACHED */ case 'h': print_help(1, 0); /* NOTREACHED */ case 0: if (ignflag) { if (ignoreCount >= MAX_OPTIONS) { printf("Maximum %d `ignore' arguments\n", MAX_OPTIONS); return 1; } ignoreList[ignoreCount++] = optarg; ignflag = 0; }; break; default: print_help(0, 1); /* NOTREACHED */ } argc -= optind; argv += optind; if (argc != 1) print_help(0, 1); file = argv[0]; WMPLSetCaseSensitive(False); path = wdefaultspathfordomain("WindowMaker"); prop = WMReadPropListFromFile(path); if (!prop) { perror(path); printf("%s: could not load WindowMaker configuration file.\n", prog_name); return 1; } if (stat(file, &st) < 0) { perror(file); return 1; } if (S_ISDIR(st.st_mode)) { /* theme pack */ char buf[PATH_MAX]; char *homedir; if (realpath(file, buf) == NULL) { perror(file); return 1; } strncat(buf, "/style", sizeof(buf) - strlen(buf) - 1); if (stat(buf, &st) != 0 || !S_ISREG(st.st_mode)) { /* maybe symlink too? */ printf("%s: %s: style file not found or not a file\n", prog_name, buf); return 1; } style = WMReadPropListFromFile(buf); if (!style) { perror(buf); printf("%s: could not load style file.\n", prog_name); return 1; } buf[strlen(buf) - 6 /* strlen("/style") */] = '\0'; homedir = wstrdup(wgethomedir()); if (strlen(homedir) > 1 && /* this is insane, wgethomedir() returns `/' on error */ strncmp(homedir, buf, strlen(homedir)) == 0) { /* theme pack is under ${HOME}; exchange ${HOME} part * for `~' so it gets portable references to the user home dir */ *buf = '~'; memmove(buf + 1, buf + strlen(homedir), strlen(buf) - strlen(homedir) + 1); } wfree(homedir); hackPaths(style, buf); /* this will prefix pixmaps in the style * with absolute(ish) references */ } else { /* normal style file */ style = WMReadPropListFromFile(file); if (!style) { perror(file); printf("%s:could not load style file.\n", prog_name); return 1; } } if (!WMIsPLDictionary(style)) { printf("%s: '%s' is not a style file/theme\n", prog_name, file); return 1; } hackStyle(style); if (ignoreCount > 0) { for (i = 0; i < ignoreCount; i++) { WMRemoveFromPLDictionary(style, WMCreatePLString(ignoreList[i])); } } WMMergePLDictionaries(prop, style, True); WMWritePropListToFile(prop, path); dpy = XOpenDisplay(""); if (dpy) { memset(&ev, 0, sizeof(XEvent)); ev.xclient.type = ClientMessage; ev.xclient.message_type = XInternAtom(dpy, "_WINDOWMAKER_COMMAND", False); ev.xclient.window = DefaultRootWindow(dpy); ev.xclient.format = 8; strncpy(ev.xclient.data.b, "Reconfigure", sizeof(ev.xclient.data.b)); XSendEvent(dpy, DefaultRootWindow(dpy), False, SubstructureRedirectMask, &ev); XFlush(dpy); } return 0; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/util/wmmenugen.h�����������������������������������������������������������������0000644�0001750�0001750�00000004506�13642357774�014145� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * wmmenugen - Window Maker PropList menu generator * * Copyright (c) 2010. Tamas Tevesz <ice@extreme.hu> * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef WMMENUGEN_H #define WMMENUGEN_H #include <WINGs/WUtil.h> #include "../src/wconfig.h" /* flags attached to a particular WMMenuEntry */ #define F_TERMINAL (1 << 0) #define F_RESTART_SELF (1 << 1) #define F_RESTART_OTHER (1 << 2) #define F_QUIT (1 << 3) #define F_FREE_CMD_LINE (1 << 4) /* a representation of a Window Maker menu entry. all menus are * transformed into this form. */ typedef struct { char *Name; /* display name; submenu path of submenu */ char *CmdLine; /* command to execute, NULL if submenu */ char *SubMenu; /* submenu to place entry in; only used when an entry is */ /* added to the tree by the parser; new entries created in */ /* main (submenu creation) should set this to NULL */ int Flags; /* flags */ } WMMenuEntry; /* the abstract menu tree */ extern WMTreeNode *menu; extern char *env_lang, *env_ctry, *env_enc, *env_mod; /* Type for the call-back function to add a menu entry to the current menu */ typedef void cb_add_menu_entry(WMMenuEntry *entry); /* wmmenu_misc.c */ void parse_locale(const char *what, char **env_lang, char **env_ctry, char **env_enc, char **env_mod); char *find_terminal_emulator(void); Bool fileInPath(const char *file); /* implemented parsers */ void parse_xdg(const char *file, cb_add_menu_entry *addWMMenuEntryCallback); void parse_wmconfig(const char *file, cb_add_menu_entry *addWMMenuEntryCallback); Bool wmconfig_validate_file(const char *filename, const struct stat *st, int tflags, struct FTW *ftw); #endif /* WMMENUGEN_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/util/wmsetbg.c�������������������������������������������������������������������0000644�0001750�0001750�00000103130�13431646202�013556� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* wmsetbg.c- sets root window background image and also works as * workspace background setting helper for wmaker * * WindowMaker window manager * * Copyright (c) 1998-2003 Alfredo K. Kojima * Copyright (c) 1998-2003 Dan Pascu * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ /* * TODO: rewrite, too dirty */ #include "config.h" #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <X11/Xlib.h> #include <X11/Xutil.h> #include <X11/Xatom.h> #include <string.h> #include <strings.h> #include <pwd.h> #include <signal.h> #include <sys/types.h> #include <ctype.h> #ifdef USE_XINERAMA # ifdef SOLARIS_XINERAMA /* sucks */ # include <X11/extensions/xinerama.h> # else # include <X11/extensions/Xinerama.h> # endif #endif #ifdef HAVE_STDNORETURN #include <stdnoreturn.h> #endif #include "../src/wconfig.h" #include <WINGs/WINGs.h> #include <wraster.h> typedef struct { WMRect *screens; int count; /* screen count, 0 = inactive */ } WXineramaInfo; #define WORKSPACE_COUNT (MAX_WORKSPACES+1) Display *dpy; char *display = ""; Window root; int scr; int scrWidth; int scrHeight; int scrX, scrY; WXineramaInfo xineInfo; Bool smooth = False; #ifdef USE_XINERAMA Bool xineStretch = False; #endif Pixmap CurrentPixmap = None; char *PixmapPath = NULL; static const char *prog_name; typedef struct BackgroundTexture { int refcount; int solid; char *spec; XColor color; Pixmap pixmap; /* for all textures, including solid */ int width; /* size of the pixmap */ int height; } BackgroundTexture; static noreturn void quit(int rcode) { WMReleaseApplication(); exit(rcode); } static void initXinerama(void) { xineInfo.screens = NULL; xineInfo.count = 0; #ifdef USE_XINERAMA # ifdef SOLARIS_XINERAMA if (XineramaGetState(dpy, scr)) { XRectangle head[MAXFRAMEBUFFERS]; unsigned char hints[MAXFRAMEBUFFERS]; int i; if (XineramaGetInfo(dpy, scr, head, hints, &xineInfo.count)) { xineInfo.screens = wmalloc(sizeof(WMRect) * (xineInfo.count + 1)); for (i = 0; i < xineInfo.count; i++) { xineInfo.screens[i].pos.x = head[i].x; xineInfo.screens[i].pos.y = head[i].y; xineInfo.screens[i].size.width = head[i].width; xineInfo.screens[i].size.height = head[i].height; } } } # else /* !SOLARIS_XINERAMA */ if (XineramaIsActive(dpy)) { XineramaScreenInfo *xine_screens; int i; xine_screens = XineramaQueryScreens(dpy, &xineInfo.count); xineInfo.screens = wmalloc(sizeof(WMRect) * (xineInfo.count + 1)); for (i = 0; i < xineInfo.count; i++) { xineInfo.screens[i].pos.x = xine_screens[i].x_org; xineInfo.screens[i].pos.y = xine_screens[i].y_org; xineInfo.screens[i].size.width = xine_screens[i].width; xineInfo.screens[i].size.height = xine_screens[i].height; } XFree(xine_screens); } # endif /* !SOLARIS_XINERAMA */ #endif /* USE_XINERAMA */ } static RImage *loadImage(RContext * rc, const char *file) { char *path; RImage *image; if (access(file, F_OK) != 0) { path = wfindfile(PixmapPath, file); if (!path) { wwarning("%s:could not find image file used in texture", file); return NULL; } } else { path = wstrdup(file); } image = RLoadImage(rc, path, 0); if (!image) { wwarning("%s:could not load image file used in texture:%s", path, RMessageForError(RErrorCode)); } wfree(path); return image; } static void applyImage(RContext * rc, BackgroundTexture * texture, RImage * image, char type, int x, int y, int width, int height) { int w, h; Bool fimage = False; switch (toupper(type)) { case 'S': case 'M': case 'F': if (toupper(type) == 'S') { w = width; h = height; } else if(toupper(type) == 'F') { if (image->width * height > image->height * width) { w = (height * image->width) / image->height; h = height; } else { w = width; h = (width * image->height) / image->width; } } else { if (image->width * height > image->height * width) { w = width; h = (width * image->height) / image->width; } else { w = (height * image->width) / image->height; h = height; } } if (w != image->width || h != image->height) { RImage *simage; if (smooth) { simage = RSmoothScaleImage(image, w, h); } else { simage = RScaleImage(image, w, h); } if (!simage) { wwarning("could not scale image:%s", RMessageForError(RErrorCode)); return; } fimage = True; image = simage; } /* fall through */ case 'C': { Pixmap pixmap; if (!RConvertImage(rc, image, &pixmap)) { wwarning("could not convert texture:%s", RMessageForError(RErrorCode)); if (fimage) RReleaseImage(image); return; } if (image->width != width || image->height != height) { int sx, sy, w, h; if (image->height < height) { h = image->height; y += (height - h) / 2; sy = 0; } else { sy = (image->height - height) / 2; h = height; } if (image->width < width) { w = image->width; x += (width - w) / 2; sx = 0; } else { sx = (image->width - width) / 2; w = width; } XCopyArea(dpy, pixmap, texture->pixmap, DefaultGC(dpy, scr), sx, sy, w, h, x, y); } else XCopyArea(dpy, pixmap, texture->pixmap, DefaultGC(dpy, scr), 0, 0, width, height, x, y); XFreePixmap(dpy, pixmap); if (fimage) { RReleaseImage(image); } } break; } } static BackgroundTexture *parseTexture(RContext * rc, char *text) { BackgroundTexture *texture = NULL; WMPropList *texarray; WMPropList *val; int count; char *tmp; char *type; #define GETSTRORGOTO(val, str, i, label) \ val = WMGetFromPLArray(texarray, i);\ if (!WMIsPLString(val)) {\ wwarning("could not parse texture %s", text);\ goto label;\ }\ str = WMGetFromPLString(val) texarray = WMCreatePropListFromDescription(text); if (!texarray || !WMIsPLArray(texarray) || (count = WMGetPropListItemCount(texarray)) < 2) { wwarning("could not parse texture %s", text); if (texarray) WMReleasePropList(texarray); return NULL; } texture = wmalloc(sizeof(BackgroundTexture)); GETSTRORGOTO(val, type, 0, error); if (strcasecmp(type, "solid") == 0) { XColor color; Pixmap pixmap; texture->solid = 1; GETSTRORGOTO(val, tmp, 1, error); if (!XParseColor(dpy, DefaultColormap(dpy, scr), tmp, &color)) { wwarning("could not parse color %s in texture %s", tmp, text); goto error; } XAllocColor(dpy, DefaultColormap(dpy, scr), &color); pixmap = XCreatePixmap(dpy, root, 8, 8, DefaultDepth(dpy, scr)); XSetForeground(dpy, DefaultGC(dpy, scr), color.pixel); XFillRectangle(dpy, pixmap, DefaultGC(dpy, scr), 0, 0, 8, 8); texture->pixmap = pixmap; texture->color = color; texture->width = 8; texture->height = 8; } else if (strcasecmp(type, "vgradient") == 0 || strcasecmp(type, "dgradient") == 0 || strcasecmp(type, "hgradient") == 0) { XColor color; RColor color1, color2; RImage *image; Pixmap pixmap; RGradientStyle gtype; int iwidth, iheight; GETSTRORGOTO(val, tmp, 1, error); if (!XParseColor(dpy, DefaultColormap(dpy, scr), tmp, &color)) { wwarning("could not parse color %s in texture %s", tmp, text); goto error; } color1.red = color.red >> 8; color1.green = color.green >> 8; color1.blue = color.blue >> 8; GETSTRORGOTO(val, tmp, 2, error); if (!XParseColor(dpy, DefaultColormap(dpy, scr), tmp, &color)) { wwarning("could not parse color %s in texture %s", tmp, text); goto error; } color2.red = color.red >> 8; color2.green = color.green >> 8; color2.blue = color.blue >> 8; switch (type[0]) { 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(iwidth, iheight, &color1, &color2, gtype); if (!image) { wwarning("could not render gradient texture:%s", RMessageForError(RErrorCode)); goto error; } if (!RConvertImage(rc, image, &pixmap)) { wwarning("could not convert texture:%s", RMessageForError(RErrorCode)); RReleaseImage(image); goto error; } texture->width = image->width; texture->height = image->height; RReleaseImage(image); texture->pixmap = pixmap; } else if (strcasecmp(type, "mvgradient") == 0 || strcasecmp(type, "mdgradient") == 0 || strcasecmp(type, "mhgradient") == 0) { XColor color; RColor **colors; RImage *image; Pixmap pixmap; int i, j; RGradientStyle gtype; int iwidth, iheight; colors = malloc(sizeof(RColor *) * (count - 1)); if (!colors) { wwarning("out of memory while parsing texture"); goto error; } memset(colors, 0, sizeof(RColor *) * (count - 1)); for (i = 2; i < count; i++) { val = WMGetFromPLArray(texarray, i); if (!WMIsPLString(val)) { wwarning("could not parse texture %s", text); for (j = 0; colors[j] != NULL; j++) wfree(colors[j]); wfree(colors); goto error; } tmp = WMGetFromPLString(val); if (!XParseColor(dpy, DefaultColormap(dpy, scr), tmp, &color)) { wwarning("could not parse color %s in texture %s", tmp, text); for (j = 0; colors[j] != NULL; j++) wfree(colors[j]); wfree(colors); goto error; } if (!(colors[i - 2] = malloc(sizeof(RColor)))) { wwarning("out of memory while parsing texture"); for (j = 0; colors[j] != NULL; j++) wfree(colors[j]); wfree(colors); goto error; } colors[i - 2]->red = color.red >> 8; colors[i - 2]->green = color.green >> 8; colors[i - 2]->blue = color.blue >> 8; } switch (type[1]) { 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(iwidth, iheight, colors, gtype); for (j = 0; colors[j] != NULL; j++) wfree(colors[j]); wfree(colors); if (!image) { wwarning("could not render gradient texture:%s", RMessageForError(RErrorCode)); goto error; } if (!RConvertImage(rc, image, &pixmap)) { wwarning("could not convert texture:%s", RMessageForError(RErrorCode)); RReleaseImage(image); goto error; } texture->width = image->width; texture->height = image->height; RReleaseImage(image); texture->pixmap = pixmap; } else if (strcasecmp(type, "cpixmap") == 0 || strcasecmp(type, "spixmap") == 0 || strcasecmp(type, "fpixmap") == 0 || strcasecmp(type, "mpixmap") == 0 || strcasecmp(type, "tpixmap") == 0) { XColor color; Pixmap pixmap = None; RImage *image = NULL; int iwidth = 0, iheight = 0; RColor rcolor; GETSTRORGOTO(val, tmp, 1, error); /* if (toupper(type[0]) == 'T' || toupper(type[0]) == 'C') pixmap = LoadJPEG(rc, tmp, &iwidth, &iheight); */ if (!pixmap) { image = loadImage(rc, tmp); if (!image) { goto error; } iwidth = image->width; iheight = image->height; } GETSTRORGOTO(val, tmp, 2, error); if (!XParseColor(dpy, DefaultColormap(dpy, scr), tmp, &color)) { wwarning("could not parse color %s in texture %s", tmp, text); RReleaseImage(image); goto error; } if (!XAllocColor(dpy, DefaultColormap(dpy, scr), &color)) { rcolor.red = color.red >> 8; rcolor.green = color.green >> 8; rcolor.blue = color.blue >> 8; RGetClosestXColor(rc, &rcolor, &color); } else { rcolor.red = 0; rcolor.green = 0; rcolor.blue = 0; } /* for images with a transparent color */ if (image && image->data[3]) RCombineImageWithColor(image, &rcolor); switch (toupper(type[0])) { case 'T': texture->width = iwidth; texture->height = iheight; if (!pixmap && !RConvertImage(rc, image, &pixmap)) { wwarning("could not convert texture:%s", RMessageForError(RErrorCode)); RReleaseImage(image); goto error; } texture->pixmap = pixmap; texture->color = color; break; case 'S': case 'M': case 'C': case 'F': { Pixmap tpixmap = XCreatePixmap(dpy, root, scrWidth, scrHeight, DefaultDepth(dpy, scr)); XSetForeground(dpy, DefaultGC(dpy, scr), color.pixel); XFillRectangle(dpy, tpixmap, DefaultGC(dpy, scr), 0, 0, scrWidth, scrHeight); texture->pixmap = tpixmap; texture->color = color; texture->width = scrWidth; texture->height = scrHeight; if (!image) break; #ifdef USE_XINERAMA if (xineInfo.count && ! xineStretch) { int i; for (i = 0; i < xineInfo.count; ++i) { applyImage(rc, texture, image, type[0], xineInfo.screens[i].pos.x, xineInfo.screens[i].pos.y, xineInfo.screens[i].size.width, xineInfo.screens[i].size.height); } } else { applyImage(rc, texture, image, type[0], 0, 0, scrWidth, scrHeight); } #else /* !USE_XINERAMA */ applyImage(rc, texture, image, type[0], 0, 0, scrWidth, scrHeight); #endif /* !USE_XINERAMA */ } break; } if (image) RReleaseImage(image); } else if (strcasecmp(type, "thgradient") == 0 || strcasecmp(type, "tvgradient") == 0 || strcasecmp(type, "tdgradient") == 0) { XColor color; RColor color1, color2; RImage *image; RImage *gradient; RImage *tiled; Pixmap pixmap; int opaq; char *file; RGradientStyle gtype; int twidth, theight; GETSTRORGOTO(val, file, 1, error); GETSTRORGOTO(val, tmp, 2, error); opaq = atoi(tmp); GETSTRORGOTO(val, tmp, 3, error); if (!XParseColor(dpy, DefaultColormap(dpy, scr), tmp, &color)) { wwarning("could not parse color %s in texture %s", tmp, text); goto error; } color1.red = color.red >> 8; color1.green = color.green >> 8; color1.blue = color.blue >> 8; GETSTRORGOTO(val, tmp, 4, error); if (!XParseColor(dpy, DefaultColormap(dpy, scr), tmp, &color)) { wwarning("could not parse color %s in texture %s", tmp, text); goto error; } color2.red = color.red >> 8; color2.green = color.green >> 8; color2.blue = color.blue >> 8; image = loadImage(rc, file); if (!image) { goto error; } switch (type[1]) { case 'h': case 'H': gtype = RHorizontalGradient; twidth = scrWidth; theight = image->height > scrHeight ? scrHeight : image->height; break; case 'V': case 'v': gtype = RVerticalGradient; twidth = image->width > scrWidth ? scrWidth : image->width; theight = scrHeight; break; default: gtype = RDiagonalGradient; twidth = scrWidth; theight = scrHeight; break; } gradient = RRenderGradient(twidth, theight, &color1, &color2, gtype); if (!gradient) { wwarning("could not render texture:%s", RMessageForError(RErrorCode)); RReleaseImage(image); goto error; } tiled = RMakeTiledImage(image, twidth, theight); if (!tiled) { wwarning("could not render texture:%s", RMessageForError(RErrorCode)); RReleaseImage(gradient); RReleaseImage(image); goto error; } RReleaseImage(image); RCombineImagesWithOpaqueness(tiled, gradient, opaq); RReleaseImage(gradient); if (!RConvertImage(rc, tiled, &pixmap)) { wwarning("could not convert texture:%s", RMessageForError(RErrorCode)); RReleaseImage(tiled); goto error; } texture->width = tiled->width; texture->height = tiled->height; RReleaseImage(tiled); texture->pixmap = pixmap; } else if (strcasecmp(type, "function") == 0) { /* Leave this in to handle the unlikely case of * someone actually having function textures configured */ wwarning("function texture support has been removed"); goto error; } else { wwarning("invalid texture type %s", text); goto error; } texture->spec = wstrdup(text); return texture; error: if (texture) wfree(texture); if (texarray) WMReleasePropList(texarray); return NULL; } static void freeTexture(BackgroundTexture * texture) { if (texture->solid) { unsigned long pixel[1]; pixel[0] = texture->color.pixel; /* dont free black/white pixels */ if (pixel[0] != BlackPixelOfScreen(DefaultScreenOfDisplay(dpy)) && pixel[0] != WhitePixelOfScreen(DefaultScreenOfDisplay(dpy))) XFreeColors(dpy, DefaultColormap(dpy, scr), pixel, 1, 0); } if (texture->pixmap) { XFreePixmap(dpy, texture->pixmap); } wfree(texture->spec); wfree(texture); } static void setupTexture(RContext * rc, BackgroundTexture ** textures, int *maxTextures, int workspace, char *texture) { BackgroundTexture *newTexture = NULL; int i; /* unset the texture */ if (!texture) { if (textures[workspace] != NULL) { textures[workspace]->refcount--; if (textures[workspace]->refcount == 0) freeTexture(textures[workspace]); } textures[workspace] = NULL; return; } if (textures[workspace] && strcasecmp(textures[workspace]->spec, texture) == 0) { /* texture did not change */ return; } /* check if the same texture is already created */ for (i = 0; i < *maxTextures; i++) { if (textures[i] && strcasecmp(textures[i]->spec, texture) == 0) { newTexture = textures[i]; break; } } if (!newTexture) { /* create the texture */ newTexture = parseTexture(rc, texture); } if (!newTexture) return; if (textures[workspace] != NULL) { textures[workspace]->refcount--; if (textures[workspace]->refcount == 0) freeTexture(textures[workspace]); } newTexture->refcount++; textures[workspace] = newTexture; if (*maxTextures < workspace) *maxTextures = workspace; } static Pixmap duplicatePixmap(Pixmap pixmap, int width, int height) { Display *tmpDpy; Pixmap copyP; /* must open a new display or the RetainPermanent will * leave stuff allocated in RContext unallocated after exit */ tmpDpy = XOpenDisplay(display); if (!tmpDpy) { wwarning("could not open display to update background image information"); return None; } else { XSync(dpy, False); copyP = XCreatePixmap(tmpDpy, root, width, height, DefaultDepth(tmpDpy, scr)); XCopyArea(tmpDpy, pixmap, copyP, DefaultGC(tmpDpy, scr), 0, 0, width, height, 0, 0); XSync(tmpDpy, False); XSetCloseDownMode(tmpDpy, RetainPermanent); XCloseDisplay(tmpDpy); } return copyP; } static int dummyErrorHandler(Display * dpy, XErrorEvent * err) { /* Parameter not used, but tell the compiler that it is ok */ (void) dpy; (void) err; return 0; } static void setPixmapProperty(Pixmap pixmap) { static Atom prop = 0; Atom type; int format; unsigned long length, after; unsigned char *data; int mode; if (!prop) { prop = XInternAtom(dpy, "_XROOTPMAP_ID", False); } XGrabServer(dpy); /* Clear out the old pixmap */ XGetWindowProperty(dpy, root, prop, 0L, 1L, False, AnyPropertyType, &type, &format, &length, &after, &data); if ((type == XA_PIXMAP) && (format == 32) && (length == 1)) { XSetErrorHandler(dummyErrorHandler); XKillClient(dpy, *((Pixmap *) data)); XSync(dpy, False); XSetErrorHandler(NULL); mode = PropModeReplace; } else { mode = PropModeAppend; } if (pixmap) XChangeProperty(dpy, root, prop, XA_PIXMAP, 32, mode, (unsigned char *)&pixmap, 1); else XDeleteProperty(dpy, root, prop); XUngrabServer(dpy); XFlush(dpy); } static void changeTexture(BackgroundTexture * texture) { if (!texture) { return; } if (texture->solid) { XSetWindowBackground(dpy, root, texture->color.pixel); } else { XSetWindowBackgroundPixmap(dpy, root, texture->pixmap); } XClearWindow(dpy, root); XSync(dpy, False); { Pixmap pixmap; pixmap = duplicatePixmap(texture->pixmap, texture->width, texture->height); setPixmapProperty(pixmap); } } static int readmsg(int fd, char *buffer, int size) { int count; while (size > 0) { count = read(fd, buffer, size); if (count < 0) return -1; size -= count; buffer += count; *buffer = 0; } return size; } /* * Message Format: * sizeSntexture_spec - sets the texture for workspace n * sizeCn - change background texture to the one for workspace n * sizePpath - set the pixmap search path * * n is 4 bytes * size = 4 bytes for length of the message data */ static noreturn void helperLoop(RContext * rc) { BackgroundTexture *textures[WORKSPACE_COUNT]; int maxTextures = 0; char buffer[2048], buf[8]; int size; int errcount = 4; memset(textures, 0, WORKSPACE_COUNT * sizeof(BackgroundTexture *)); while (1) { int workspace = -1; /* get length of message */ if (readmsg(0, buffer, 4) < 0) { werror("error reading message from Window Maker"); errcount--; if (errcount == 0) { wfatal("quitting"); quit(1); } continue; } memcpy(buf, buffer, 4); buf[4] = 0; size = atoi(buf); if (size < 0 || size > sizeof(buffer)) { wfatal("received invalid size %d for message from WindowMaker", size); quit(1); } if (size == 0) { werror("received 0-sized message from WindowMaker, trying to continue"); continue; } /* get message */ if (readmsg(0, buffer, size) < 0) { werror("error reading message from Window Maker"); errcount--; if (errcount == 0) { wfatal("quitting"); quit(1); } continue; } #ifdef DEBUG printf("RECEIVED %s\n", buffer); #endif if (buffer[0] != 'P' && buffer[0] != 'K') { memcpy(buf, &buffer[1], 4); buf[4] = 0; workspace = atoi(buf); if (workspace < 0 || workspace >= WORKSPACE_COUNT) { wwarning("received message with invalid workspace number %i", workspace); continue; } } switch (buffer[0]) { case 'S': #ifdef DEBUG printf("set texture %s\n", &buffer[5]); #endif setupTexture(rc, textures, &maxTextures, workspace, &buffer[5]); break; case 'C': #ifdef DEBUG printf("change texture %i\n", workspace); #endif if (!textures[workspace]) { changeTexture(textures[0]); } else { changeTexture(textures[workspace]); } break; case 'P': #ifdef DEBUG printf("change pixmappath %s\n", &buffer[1]); #endif if (PixmapPath) wfree(PixmapPath); PixmapPath = wstrdup(&buffer[1]); break; case 'U': #ifdef DEBUG printf("unset workspace %i\n", workspace); #endif setupTexture(rc, textures, &maxTextures, workspace, NULL); break; case 'K': #ifdef DEBUG printf("exit command\n"); #endif quit(0); default: wwarning("unknown message received"); break; } } } static void updateDomain(const char *domain, const char *key, const char *texture) { int result; char *program = "wdwrite"; char cmd_smooth[1024]; snprintf(cmd_smooth, sizeof(cmd_smooth), "wdwrite %s SmoothWorkspaceBack %s", domain, smooth ? "YES" : "NO"); result = system(cmd_smooth); if (result == -1) werror("error executing system(\"%s\")", cmd_smooth); execlp(program, program, domain, key, texture, NULL); wwarning("warning could not run \"%s\"", program); } static WMPropList *getValueForKey(const char *domain, const char *keyName) { char *path; WMPropList *key, *val, *d; key = WMCreatePLString(keyName); /* try to find PixmapPath in user defaults */ path = wdefaultspathfordomain(domain); d = WMReadPropListFromFile(path); if (!d) { wwarning("could not open domain file %s", path); } wfree(path); if (d && !WMIsPLDictionary(d)) { WMReleasePropList(d); d = NULL; } if (d) { val = WMGetFromPLDictionary(d, key); } else { val = NULL; } /* try to find PixmapPath in global defaults */ if (!val) { path = wglobaldefaultspathfordomain(domain); if (!path) { wwarning("could not locate file for domain %s", domain); d = NULL; } else { d = WMReadPropListFromFile(path); wfree(path); } if (d && !WMIsPLDictionary(d)) { WMReleasePropList(d); d = NULL; } if (d) { val = WMGetFromPLDictionary(d, key); } else { val = NULL; } } if (val) WMRetainPropList(val); WMReleasePropList(key); if (d) WMReleasePropList(d); return val; } static char *getPixmapPath(const char *domain) { WMPropList *val; char *ptr, *data; int len, i, count; val = getValueForKey(domain, "PixmapPath"); if (!val || !WMIsPLArray(val)) { if (val) WMReleasePropList(val); return wstrdup(""); } count = WMGetPropListItemCount(val); len = 0; for (i = 0; i < count; i++) { WMPropList *v; v = WMGetFromPLArray(val, i); if (!v || !WMIsPLString(v)) { continue; } len += strlen(WMGetFromPLString(v)) + 1; } ptr = data = wmalloc(len + 1); *ptr = 0; for (i = 0; i < count; i++) { WMPropList *v; v = WMGetFromPLArray(val, i); if (!v || !WMIsPLString(v)) { continue; } strcpy(ptr, WMGetFromPLString(v)); ptr += strlen(WMGetFromPLString(v)); *ptr = ':'; ptr++; } if (i > 0) ptr--; *(ptr--) = 0; WMReleasePropList(val); return data; } static char *getFullPixmapPath(const char *file) { char *tmp; if (!PixmapPath || !(tmp = wfindfile(PixmapPath, file))) { int bsize = 512; char *path = wmalloc(bsize); while (!getcwd(path, bsize)) { bsize += bsize / 2; path = wrealloc(path, bsize); } tmp = wstrconcat(path, "/"); wfree(path); path = wstrconcat(tmp, file); wfree(tmp); return path; } /* the file is in the PixmapPath */ wfree(tmp); return wstrdup(file); } static void print_help(void) { printf("Usage: %s [options] [image]\n", prog_name); puts("Sets the workspace background to the specified image or a texture and"); puts("optionally update Window Maker configuration"); puts(""); puts(" -display <display> display to use"); puts(" -d, --dither dither image"); puts(" -m, --match match colors"); puts(" -S, --smooth smooth scaled image"); #ifdef USE_XINERAMA puts(" -X, --xinerama stretch image across Xinerama heads"); #endif puts(" -b, --back-color <color> background color"); puts(" -t, --tile tile image"); puts(" -e, --center center image"); puts(" -s, --scale scale image (default)"); puts(" -a, --maxscale scale image and keep aspect ratio"); puts(" -f, --fillscale scale image to fill screen and keep aspect ratio"); puts(" -u, --update-wmaker update WindowMaker domain database"); puts(" -D, --update-domain <domain> update <domain> database"); puts(" -c, --colors <cpc> colors per channel to use"); puts(" -p, --parse <texture> proplist style texture specification"); puts(" -w, --workspace <workspace> update background for the specified workspace"); puts(" -v, --version show version of wmsetbg and exit"); puts(" -h, --help show this help and exit"); } static void changeTextureForWorkspace(const char *domain, char *texture, int workspace) { WMPropList *array, *val; char *value; int j; val = WMCreatePropListFromDescription(texture); if (!val) { wwarning("could not parse texture %s", texture); return; } array = getValueForKey("WindowMaker", "WorkspaceSpecificBack"); if (!array) { array = WMCreatePLArray(NULL, NULL); } j = WMGetPropListItemCount(array); if (workspace >= j) { WMPropList *empty; empty = WMCreatePLArray(NULL, NULL); while (j++ < workspace - 1) { WMAddToPLArray(array, empty); } WMAddToPLArray(array, val); WMReleasePropList(empty); } else { WMDeleteFromPLArray(array, workspace); WMInsertInPLArray(array, workspace, val); } value = WMGetPropListDescription(array, False); updateDomain(domain, "WorkspaceSpecificBack", value); WMReleasePropList(array); } int main(int argc, char **argv) { int i; int helperMode = 0; RContext *rc; RContextAttributes rattr; char *style = "spixmap"; char *back_color = "gray20"; char *image_name = NULL; char *domain = "WindowMaker"; int update = 0, cpc = 4, obey_user = 0; RRenderingMode render_mode = RDitheredRendering; char *texture = NULL; int workspace = -1; signal(SIGINT, SIG_DFL); signal(SIGTERM, SIG_DFL); signal(SIGQUIT, SIG_DFL); signal(SIGSEGV, SIG_DFL); signal(SIGBUS, SIG_DFL); signal(SIGFPE, SIG_DFL); signal(SIGABRT, SIG_DFL); signal(SIGHUP, SIG_DFL); signal(SIGPIPE, SIG_DFL); signal(SIGCHLD, SIG_DFL); WMInitializeApplication("wmsetbg", &argc, argv); prog_name = argv[0]; for (i = 1; i < argc; i++) { if (strcmp(argv[i], "-helper") == 0) { helperMode = 1; } else if (strcmp(argv[i], "-display") == 0) { i++; if (i >= argc) { wfatal("too few arguments for %s", argv[i - 1]); quit(1); } display = argv[i]; } else if (strcmp(argv[i], "-s") == 0 || strcmp(argv[i], "--scale") == 0) { style = "spixmap"; } else if (strcmp(argv[i], "-t") == 0 || strcmp(argv[i], "--tile") == 0) { style = "tpixmap"; } else if (strcmp(argv[i], "-e") == 0 || strcmp(argv[i], "--center") == 0) { style = "cpixmap"; } else if (strcmp(argv[i], "-a") == 0 || strcmp(argv[i], "--maxscale") == 0) { style = "mpixmap"; } else if (strcmp(argv[i], "-f") == 0 || strcmp(argv[i], "--fillscale") == 0) { style = "fpixmap"; } else if (strcmp(argv[i], "-d") == 0 || strcmp(argv[i], "--dither") == 0) { render_mode = RDitheredRendering; obey_user++; } else if (strcmp(argv[i], "-m") == 0 || strcmp(argv[i], "--match") == 0) { render_mode = RBestMatchRendering; obey_user++; } else if (strcmp(argv[i], "-S") == 0 || strcmp(argv[i], "--smooth") == 0) { smooth = True; #ifdef USE_XINERAMA } else if (strcmp(argv[i], "-X") == 0 || strcmp(argv[i], "--xinerama") == 0) { xineStretch = True; #endif } else if (strcmp(argv[i], "-u") == 0 || strcmp(argv[i], "--update-wmaker") == 0) { update++; } else if (strcmp(argv[i], "-D") == 0 || strcmp(argv[i], "--update-domain") == 0) { update++; i++; if (i >= argc) { wfatal("too few arguments for %s", argv[i - 1]); quit(1); } domain = wstrdup(argv[i]); } else if (strcmp(argv[i], "-c") == 0 || strcmp(argv[i], "--colors") == 0) { i++; if (i >= argc) { wfatal("too few arguments for %s", argv[i - 1]); quit(1); } if (sscanf(argv[i], "%i", &cpc) != 1) { wfatal("bad value for colors per channel: \"%s\"", argv[i]); quit(1); } } else if (strcmp(argv[i], "-b") == 0 || strcmp(argv[i], "--back-color") == 0) { i++; if (i >= argc) { wfatal("too few arguments for %s", argv[i - 1]); quit(1); } back_color = argv[i]; } else if (strcmp(argv[i], "-p") == 0 || strcmp(argv[i], "--parse") == 0) { i++; if (i >= argc) { wfatal("too few arguments for %s", argv[i - 1]); quit(1); } texture = argv[i]; } else if (strcmp(argv[i], "-w") == 0 || strcmp(argv[i], "--workspace") == 0) { i++; if (i >= argc) { wfatal("too few arguments for %s", argv[i - 1]); quit(1); } if (sscanf(argv[i], "%i", &workspace) != 1) { wfatal("bad value for workspace number: \"%s\"", argv[i]); quit(1); } } else if (strcmp(argv[i], "-v") == 0 || strcmp(argv[i], "--version") == 0) { printf("%s (Window Maker %s)\n", prog_name, VERSION); quit(0); } else if (strcmp(argv[i], "-h") == 0 || strcmp(argv[i], "--help") == 0) { print_help(); quit(0); } else if (argv[i][0] != '-') { image_name = argv[i]; } else { printf("%s: invalid argument '%s'\n", prog_name, argv[i]); printf("Try '%s --help' for more information\n", prog_name); quit(1); } } if (!image_name && !texture && !helperMode) { printf("%s: you must specify a image file name or a texture\n", prog_name); printf("Try '%s --help' for more information\n", prog_name); quit(1); } PixmapPath = getPixmapPath(domain); if (!smooth) { WMPropList *val; /* carlos, don't remove this */ #if 0 /* some problem with Alpha... TODO: check if its right */ val = WMGetFromPLDictionary(domain, WMCreatePLString("SmoothWorkspaceBack")); #else val = getValueForKey(domain, "SmoothWorkspaceBack"); #endif if (val && WMIsPLString(val) && strcasecmp(WMGetFromPLString(val), "YES") == 0) smooth = True; } dpy = XOpenDisplay(display); if (!dpy) { wfatal("could not open display"); quit(1); } #if 0 XSynchronize(dpy, 1); #endif root = DefaultRootWindow(dpy); scr = DefaultScreen(dpy); scrWidth = WidthOfScreen(DefaultScreenOfDisplay(dpy)); scrHeight = HeightOfScreen(DefaultScreenOfDisplay(dpy)); scrX = scrY = 0; initXinerama(); if (!obey_user && DefaultDepth(dpy, scr) <= 8) render_mode = RDitheredRendering; rattr.flags = RC_RenderMode | RC_ColorsPerChannel | RC_StandardColormap | RC_DefaultVisual; rattr.render_mode = render_mode; rattr.colors_per_channel = cpc; rattr.standard_colormap_mode = RCreateStdColormap; rc = RCreateContext(dpy, scr, &rattr); if (!rc) { rattr.standard_colormap_mode = RIgnoreStdColormap; rc = RCreateContext(dpy, scr, &rattr); } if (!rc) { wfatal("could not initialize wrlib: %s", RMessageForError(RErrorCode)); quit(1); } if (helperMode) { int result; /* lower priority, so that it wont use all the CPU */ result = nice(15); if (result == -1) wwarning("error could not nice process"); helperLoop(rc); } else { BackgroundTexture *tex; char buffer[4098]; if (!texture) { char *image_path = getFullPixmapPath(image_name); snprintf(buffer, sizeof(buffer), "(%s, \"%s\", %s)", style, image_path, back_color); wfree(image_path); texture = (char *)buffer; } if (update && workspace < 0) { updateDomain(domain, "WorkspaceBack", texture); } tex = parseTexture(rc, texture); if (!tex) quit(1); if (workspace < 0) changeTexture(tex); else { /* always update domain */ changeTextureForWorkspace(domain, texture, workspace); } } WMReleaseApplication(); return 0; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/util/wmmenugen.c�����������������������������������������������������������������0000644�0001750�0001750�00000025161�13431646202�014117� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * wmmenugen - Window Maker PropList menu generator * * Copyright (c) 2010. Tamas Tevesz <ice@extreme.hu> * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include <sys/types.h> #include <sys/stat.h> #include <ctype.h> #include <ftw.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <strings.h> #include <unistd.h> #include <errno.h> #include "wmmenugen.h" static void addWMMenuEntryCallback(WMMenuEntry *aEntry); static void assemblePLMenuFunc(WMTreeNode *aNode, void *data); static int dirParseFunc(const char *filename, const struct stat *st, int tflags, struct FTW *ftw); static int menuSortFunc(const void *left, const void *right); static int nodeFindSubMenuByNameFunc(const void *item, const void *cdata); static WMTreeNode *findPositionInMenu(const char *submenu); typedef void fct_parse_menufile(const char *file, cb_add_menu_entry *addWMMenuEntryCallback); typedef Bool fct_validate_filename(const char *filename, const struct stat *st, int tflags, struct FTW *ftw); static WMArray *plMenuNodes; static const char *terminal; static fct_parse_menufile *parse; static fct_validate_filename *validateFilename; static const char *prog_name; /* Global Variables from wmmenugen.h */ WMTreeNode *menu; char *env_lang, *env_ctry, *env_enc, *env_mod; static void print_help(void) { printf("Usage: %s -parser:<parser> fspec [fspec...]\n", prog_name); puts("Dynamically generate a menu in Property List format for Window Maker"); puts(""); puts(" -h, --help\t\tdisplay this help and exit"); puts(" -parser=<name>\tspecify the format of the input, see below"); puts(" --version\t\toutput version information and exit"); puts(""); puts("fspec: the file to be converted or the directory containing all the menu files"); puts(""); puts("Known parsers:"); puts(" xdg\t\tDesktop Entry from FreeDesktop standard"); puts(" wmconfig\tfrom the menu generation tool by the same name"); } #ifdef DEBUG static const char *get_parser_name(void) { if (parse == &parse_xdg) return "xdg"; if (parse == &parse_wmconfig) return "wmconfig"; /* This case is not supposed to happen, but if it does it means that someone to update this list */ return "<unknown>"; } #endif int main(int argc, char **argv) { struct stat st; int i; int *previousDepth; prog_name = argv[0]; plMenuNodes = WMCreateArray(8); /* grows on demand */ menu = (WMTreeNode *)NULL; parse = NULL; validateFilename = NULL; /* assemblePLMenuFunc passes this around */ previousDepth = (int *)wmalloc(sizeof(int)); *previousDepth = -1; /* currently this is used only by the xdg parser, but it might be useful * in the future localizing other menus, so it won't hurt to have it here. */ parse_locale(NULL, &env_lang, &env_ctry, &env_enc, &env_mod); terminal = find_terminal_emulator(); for (i = 1; i < argc; i++) { if (strncmp(argv[i], "-parser", 7) == 0 && (argv[i][7] == '=' || argv[i][7] == ':' || /* for legacy compatibility */ argv[i][7] == '\0')) { const char *name; if (argv[i][7] == '\0') { if (++i > argc) { fprintf(stderr, "%s: Missing parser name after \"-parser\"\n", prog_name); return 2; } name = argv[i]; } else { name = argv[i] + 8; } if (strcmp(name, "xdg") == 0) { parse = &parse_xdg; } else if (strcmp(name, "wmconfig") == 0) { parse = &parse_wmconfig; validateFilename = &wmconfig_validate_file; } else { fprintf(stderr, "%s: Unknown parser \"%s\"\n", prog_name, name); return 2; } continue; } if (strcmp(argv[i], "--version") == 0) { printf("%s (Window Maker %s)\n", prog_name, VERSION); return 0; } if (strcmp(argv[i], "-h") == 0 || strcmp(argv[i], "-help") == 0 || strcmp(argv[i], "--help") == 0) { print_help(); return 0; } if (parse == NULL) { fprintf(stderr, "%s: argument \"%s\" with no valid parser\n", prog_name, argv[i]); return 2; } #if DEBUG fprintf(stderr, "%s: Using parser \"%s\" to process \"%s\"\n", prog_name, get_parser_name(), argv[i]); #endif if (stat(argv[i], &st) == -1) { fprintf(stderr, "%s: unable to stat \"%s\", %s\n", prog_name, argv[i], strerror(errno)); return 1; } else if (S_ISREG(st.st_mode)) { parse(argv[i], addWMMenuEntryCallback); } else if (S_ISDIR(st.st_mode)) { nftw(argv[i], dirParseFunc, 16, FTW_PHYS); } else { fprintf(stderr, "%s: \"%s\" is not a file or directory\n", prog_name, argv[i]); return 1; } } if (!menu) { fprintf(stderr, "%s: parsers failed to create a valid menu\n", prog_name); return 1; } WMSortTree(menu, menuSortFunc); WMTreeWalk(menu, assemblePLMenuFunc, previousDepth, True); i = WMGetArrayItemCount(plMenuNodes); if (i > 2) { /* more than one submenu unprocessed is almost certainly an error */ fprintf(stderr, "%s: unprocessed levels on the stack. fishy.\n", prog_name); return 3; } else if (i > 1 ) { /* possibly the top-level attachment is not yet done */ WMPropList *first, *next; next = WMPopFromArray(plMenuNodes); first = WMPopFromArray(plMenuNodes); WMAddToPLArray(first, next); WMAddToArray(plMenuNodes, first); } puts(WMGetPropListDescription((WMPropList *)WMGetFromArray(plMenuNodes, 0), True)); return 0; } static int dirParseFunc(const char *filename, const struct stat *st, int tflags, struct FTW *ftw) { (void)st; (void)tflags; (void)ftw; if (validateFilename && !validateFilename(filename, st, tflags, ftw)) return 0; parse(filename, addWMMenuEntryCallback); return 0; } /* upon fully deducing one particular menu entry, parsers call back to this * function to have said menu entry added to the wm menu. initializes wm menu * with a root element if needed. */ static void addWMMenuEntryCallback(WMMenuEntry *aEntry) { WMMenuEntry *wm; WMTreeNode *at; wm = (WMMenuEntry *)wmalloc(sizeof(WMMenuEntry)); /* this entry */ at = (WMTreeNode *)NULL; /* will be a child of this entry */ if (!menu) { WMMenuEntry *root; root = (WMMenuEntry *)wmalloc(sizeof(WMMenuEntry)); root->Name = "Applications"; root->CmdLine = NULL; root->SubMenu = NULL; root->Flags = 0; menu = WMCreateTreeNode(root); } if (aEntry->SubMenu) at = findPositionInMenu(aEntry->SubMenu); if (!at) at = menu; wm->Flags = aEntry->Flags; wm->Name = wstrdup(aEntry->Name); wm->CmdLine = wstrdup(aEntry->CmdLine); wm->SubMenu = NULL; WMAddItemToTree(at, wm); } /* creates the proplist menu out of the abstract menu representation in `menu'. */ static void assemblePLMenuFunc(WMTreeNode *aNode, void *data) { WMMenuEntry *wm; WMPropList *pl; int pDepth, cDepth; wm = (WMMenuEntry *)WMGetDataForTreeNode(aNode); cDepth = WMGetTreeNodeDepth(aNode); pDepth = *(int *)data; if (pDepth > cDepth) { /* just ascended out of a/several submenu(s) */ WMPropList *last, *but; /* merge the tail up to the current position */ int i; for (i = pDepth - cDepth; i > 0; i--) { last = WMPopFromArray(plMenuNodes); but = WMPopFromArray(plMenuNodes); WMAddToPLArray(but, last); WMAddToArray(plMenuNodes, but); } } if (!wm->CmdLine) { /* new submenu */ WMAddToArray(plMenuNodes, WMCreatePLArray(WMCreatePLString(wm->Name), NULL)); } else { /* new menu item */ pl = WMPopFromArray(plMenuNodes); if (wm->Flags & F_RESTART_OTHER) { /* RESTART, somewm */ char buf[1024]; memset(buf, 0, sizeof(buf)); snprintf(buf, sizeof(buf), "%s %s", _("Restart"), wm->Name); WMAddToPLArray(pl, WMCreatePLArray( WMCreatePLString(buf), WMCreatePLString("RESTART"), WMCreatePLString(wm->CmdLine), NULL) ); } else if (wm->Flags & F_RESTART_SELF) {/* RESTART */ WMAddToPLArray(pl, WMCreatePLArray( WMCreatePLString(_("Restart Window Maker")), WMCreatePLString("RESTART"), NULL) ); } else if (wm->Flags & F_QUIT) { /* EXIT */ WMAddToPLArray(pl, WMCreatePLArray( WMCreatePLString(_("Exit Window Maker")), WMCreatePLString("EXIT"), NULL) ); } else { /* plain simple command */ char buf[1024]; memset(buf, 0, sizeof(buf)); if (wm->Flags & F_TERMINAL) /* XXX: quoting! */ snprintf(buf, sizeof(buf), "%s -e \"%s\"", terminal, wm->CmdLine); else snprintf(buf, sizeof(buf), "%s", wm->CmdLine); WMAddToPLArray(pl, WMCreatePLArray( WMCreatePLString(wm->Name), WMCreatePLString("SHEXEC"), WMCreatePLString(buf), NULL) ); } WMAddToArray(plMenuNodes, pl); } *(int *)data = cDepth; return; } /* sort the menu tree; callback for WMSortTree() */ static int menuSortFunc(const void *left, const void *right) { WMMenuEntry *leftwm; WMMenuEntry *rightwm; leftwm = (WMMenuEntry *)WMGetDataForTreeNode(*(WMTreeNode **)left); rightwm = (WMMenuEntry *)WMGetDataForTreeNode(*(WMTreeNode **)right); /* submenus first */ if (!leftwm->CmdLine && rightwm->CmdLine) return -1; if (leftwm->CmdLine && !rightwm->CmdLine) return 1; /* the rest lexicographically */ return strcasecmp(leftwm->Name, rightwm->Name); } /* returns the leaf an entry with the submenu spec `submenu' attaches to. * creates `submenu' path (anchored to the root) along the way. */ static WMTreeNode *findPositionInMenu(const char *submenu) { char *q; WMMenuEntry *wm; WMTreeNode *node, *pnode; char buf[1024]; /* qualify submenu with "Applications/" (the root node) */ memset(buf, 0, sizeof(buf)); snprintf(buf, sizeof(buf), "Applications/%s", submenu); /* start at the root */ node = menu; q = strtok(buf, "/"); while (q) { pnode = node; node = WMFindInTreeWithDepthLimit(pnode, nodeFindSubMenuByNameFunc, q, 1); if (!node) { wm = (WMMenuEntry *)wmalloc(sizeof(WMMenuEntry)); wm->Flags = 0; wm->Name = wstrdup(q); wm->CmdLine = NULL; wm->SubMenu = NULL; node = WMAddNodeToTree(pnode, WMCreateTreeNode(wm)); } q = strtok(NULL, "/"); } return node; } /* find node where Name = cdata and node is a submenu */ static int nodeFindSubMenuByNameFunc(const void *item, const void *cdata) { WMMenuEntry *wm; wm = (WMMenuEntry *)item; if (wm->CmdLine) /* if it has a cmdline, it can't be a submenu */ return 0; return strcmp(wm->Name, (const char *)cdata) == 0; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/util/Makefile.am�����������������������������������������������������������������0000644�0001750�0001750�00000004430�13431646202�014001� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������SUBDIRS = po AUTOMAKE_OPTIONS = pkgdatadir = $(datadir)/@PACKAGE@ bin_PROGRAMS = wxcopy wxpaste wdwrite wdread getstyle setstyle convertfonts \ seticons geticonset wmsetbg wmagnify wmgenmenu wmmenugen wmiv bin_SCRIPTS = wmaker.inst wm-oldmenu2new wkdemenu.pl EXTRA_DIST = wmaker.inst.in bughint wm-oldmenu2new wkdemenu.pl AM_CPPFLAGS = \ $(DFLAGS) -I$(top_srcdir)/WINGs -I$(top_srcdir)/wrlib \ @HEADER_SEARCH_PATH@ \ -DETCDIR=\"sysconfdir\" -DDATADIR=\"pkgdatadir\" liblist= @LIBRARY_SEARCH_PATH@ @INTLIBS@ wdwrite_LDADD = $(top_builddir)/WINGs/libWUtil.la $(liblist) wdread_LDADD = $(top_builddir)/WINGs/libWUtil.la $(liblist) wxcopy_LDADD = @XLFLAGS@ @XLIBS@ wxpaste_LDADD = @XLFLAGS@ @XLIBS@ getstyle_LDADD = $(top_builddir)/WINGs/libWUtil.la $(liblist) getstyle_SOURCES = getstyle.c fontconv.c common.h setstyle_LDADD = \ $(top_builddir)/WINGs/libWUtil.la \ @XLFLAGS@ @XLIBS@ $(liblist) setstyle_SOURCES = setstyle.c fontconv.c common.h convertfonts_LDADD = $(top_builddir)/WINGs/libWUtil.la $(liblist) convertfonts_SOURCES = convertfonts.c fontconv.c common.h seticons_LDADD= $(top_builddir)/WINGs/libWUtil.la $(liblist) geticonset_LDADD= $(top_builddir)/WINGs/libWUtil.la $(liblist) wmagnify_LDADD = \ $(top_builddir)/WINGs/libWINGs.la \ $(top_builddir)/WINGs/libWUtil.la \ $(top_builddir)/wrlib/libwraster.la \ @XLFLAGS@ @XLIBS@ @INTLIBS@ wmsetbg_LDADD = \ $(top_builddir)/WINGs/libWINGs.la \ $(top_builddir)/WINGs/libWUtil.la \ $(top_builddir)/wrlib/libwraster.la \ @XLFLAGS@ @LIBXINERAMA@ @XLIBS@ @INTLIBS@ wmgenmenu_LDADD = \ $(top_builddir)/WINGs/libWUtil.la \ @INTLIBS@ wmgenmenu_SOURCES = wmgenmenu.c wmgenmenu.h wmmenugen_LDADD = \ $(top_builddir)/WINGs/libWUtil.la \ @INTLIBS@ wmmenugen_SOURCES = wmmenugen.c wmmenugen.h wmmenugen_misc.c \ wmmenugen_parse_wmconfig.c \ wmmenugen_parse_xdg.c wmiv_LDADD = \ $(top_builddir)/wrlib/libwraster.la \ @XLFLAGS@ @XLIBS@ \ @GFXLIBS@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) $(LIBEXIF) wmiv_SOURCES = wmiv.c wmiv.h CLEANFILES = wmaker.inst wmaker.inst: $(srcdir)/wmaker.inst.in ./Makefile $(AM_V_GEN)sed -e "s|#pkgdatadir#|$(pkgdatadir)|" \ -e "s|#sysconfdir#|$(sysconfdir)/WindowMaker|" \ -e "s|#version#|$(VERSION)|" \ -e "s|#bindir#|$(bindir)|" \ $(srcdir)/wmaker.inst.in >wmaker.inst ; \ chmod 755 wmaker.inst ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/INSTALL-WMAKER�������������������������������������������������������������������0000644�0001750�0001750�00000062212�13642365214�013014� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Window Maker Compilation and Installation ~ A guide to configure, compile and install ~ ~ Window Maker from sources. ~ -- The Window Maker Team -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This manual is for Window Maker window manager, version 0.95.9. Copyright (c) 2015 The Window Maker Team. 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, see file COPYING for details. Published by The Window Maker team on 15 February 2019. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 Prerequisites . . . . . . . . . . . . . . . . . . . . . . . . 73 1.1 Supported Platforms . . . . . . . . . . . . . . . . . . . 77 1.2 Software Dependencies . . . . . . . . . . . . . . . . . . 88 1.3 Special Dependencies . . . . . . . . . . . . . . . . . . 122 1.4 Optional Dependencies . . . . . . . . . . . . . . . . . . 134 2 Building Window Maker . . . . . . . . . . . . . . . . . . . . 223 2.1 Getting the Sources . . . . . . . . . . . . . . . . . . . 227 2.2 Build and Install . . . . . . . . . . . . . . . . . . . . 248 2.3 User specific configuration . . . . . . . . . . . . . . . 298 2.4 Locales/Internationalisation . . . . . . . . . . . . . . 324 2.5 Configure Options . . . . . . . . . . . . . . . . . . . . 332 2.5.1 Installation Directory . . . . . . . . . . . . . . . 346 2.5.2 External Libraries . . . . . . . . . . . . . . . . . 397 2.5.3 X11 and Extensions . . . . . . . . . . . . . . . . . 458 2.5.4 Feature Selection . . . . . . . . . . . . . . . . . . 506 2.5.5 Developer Stuff . . . . . . . . . . . . . . . . . . . 555 3 Miscellaneous . . . . . . . . . . . . . . . . . . . . . . . . 583 3.1 Platform Specific Notes . . . . . . . . . . . . . . . . . 587 3.2 I don't have the root password :( . . . . . . . . . . . . 632 3.3 Upgrading . . . . . . . . . . . . . . . . . . . . . . . . 651 4 Troubleshooting . . . . . . . . . . . . . . . . . . . . . . . 661 4.1 Error with loading fonts, even if they exist . . . . . . 669 4.2 configure doesn't detect libtiff, or other graphic librari 679 4.3 configure doesn't detect libXpm . . . . . . . . . . . . . 693 4.4 Segmentation fault on startup . . . . . . . . . . . . . . 699 4.5 "...: your machine is misconfigured. gethostname() returne 711 4.6 The root menu contains only 2 entries. ("XTerm" and "Exit. 718 1 Prerequisites *************** 1.1 Supported Platforms ======================= - Intel GNU/Linux Systems in general, ix86 and x86_64 but other architectures should work - BSD systems - Solaris, at least on release 10 and 11 Patches to make it work on other platforms are welcome. 1.2 Software Dependencies ========================= The following software is required to use Window Maker: - X11R6.x Window Maker can be compiled in older versions of X, like X11R5 (Solaris) or X11R4 (OpenWindows) but it will not work 100% correctly. In such servers there will not be application icons and you'll have trouble using the dock. Upgrading the client libraries (Xlib, Xt, etc.) will help if you can't upgrade the server. The following is required to build Window Maker: - Basic obvious stuff * gcc (or some other ANSI C compiler, supporting some C99 extensions) * glibc development files (usually "glibc-devel" in Linux distributions) * X development files ("XFree86-devel" or something similar) - Xft2 and its dependencies Dependencies include freetype2 and fontconfig. You will also need the development files for them ("xft2-devel"). Sources are available at: http://www.freedesktop.org/wiki/Software/Xft/ *Note*: Window Maker is known to compile with gcc and clang; the code source is mostly ANSI C (also known as C89 and C90) but is uses very few of the C99 novelties; it also uses a few attributes introduced in the C11 standard but those are detected automatically, so most compilers should work. 1.3 Special Dependencies ======================== If you want to compile using the sources from the git repository instead of the distribution package, you will also need: * git * autoconf 2.69 * automake 1.12 * libtool 1.4.2 1.4 Optional Dependencies ========================= These libraries are not required to make Window Maker work, but they are supported in case you want to use them. Version numbers are indicative, but other versions might work too. - libXPM 4.7 or newer Older versions may not work! Available from http://xlibs.freedesktop.org/release/ There is built-in support for XPM files, but it will not load images in some uncommon encodings. - libpng 0.96 or newer and zlib For PNG image support, http://www.libpng.org/pub/png/libpng.html - libtiff 3.4 or newer For TIFF image support, http://www.libtiff.org/ - libjpeg 6.0.1 or newer For JPEG image support, http://www.ijg.org/ Note that if you don't have it, 'configure' will issue a big warning in the end, this is because JPEG images are often used in themes and for background images so you probably want this format supported. - libgif 2.2 or libungif For GIF image support, http://giflib.sourceforge.net/ - WebP 0.4.1 or newer The reference library from Google for their image format, https://developers.google.com/speed/webp/download - 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 http://www.gnu.org/software/gettext/ - Pango 1.36.8 or newer This library can be used by the WINGs toolkit to improve support for UTF-8 and for languages written in right-to-left direction, in some widgets. You have to explicitly ask for its support through (see section [Configure Options], at line 332). You can get it from http://www.pango.org/Download - libbsd This library can be used by the WINGs utility library to make use of 'strlcat' and 'strlcpy' instead of using built-in functions if your system does not provide them in its core libc. You should let Window Maker's 'configure' detect this for you. You can get it from http://libbsd.freedesktop.org/wiki/ - Inotify If you have Linux's inotify support, Window Maker will use it to check for configuration updates instead of polling regularly the file. The needed header comes with the kernel, typical packages names include: * "kernel-headers" for Slackware and Fedora * "linux-userspace-headers" for Mageia * "linux-libc-dev" for Debian and Ubuntu * "linux-glibc-devel" for OpenSuSE - MagickWand 6.8.9-9 or newer If found, then the library WRaster can use the ImageMagick library to let Window Maker support more image formats, like SVG, BMP, TGA, ... You can get it from http://www.imagemagick.org/ - Boehm GC This library can be used by the WINGs utility toolkit to use a Boehm-Demers-Weiser Garbage Collector instead of the traditional 'malloc'/'free' functions from the libc. You have to explicitly ask for its support though (see section [Configure Options], at line 332). You can get it from http://www.hboehm.info/gc/ 2 Building Window Maker *********************** 2.1 Getting the Sources ======================= The latest version of Window Maker (-crm) can be downloaded from http://www.windowmaker.org/ Alternatively, the development branch, called #next is in the git repository at http://repo.or.cz/w/wmaker-crm.git If you want to use the git versions, you can get it with: git clone -b next git://repo.or.cz/wmaker-crm.git then, assuming you have the dependencies listed in section [Special Dependencies], at line 122, you have to type: ./autogen.sh to generate the configuration script. 2.2 Build and Install ===================== For a quick start, type the following in your shell prompt: ./configure make then, login as root and type: make install ldconfig or if you want to strip the debugging symbols from the binaries to make them smaller, you can type instead: make install-strip ldconfig This will build and install Window Maker with default parameters. If you want to customise some compile-time options, you can do the following: 1. (optional) Look at the section [Configure Options], at line 332, for the options available. Also run: ./configure --help to get a complete list of options that are available. 2. Run configure with the options you want. For example, if you want to use the '--enable-modelock' option, type: ./configure --enable-modelock 3. (optional) Edit "src/wconfig.h" with your favourite text editor and browse through it for some options you might want to change. 4. Compile. Just type: make 5. Login as root (if you can't do that, read the section [I don't have the root password], at line 632) and install Window Maker in your system: su root make install 2.3 User specific configuration =============================== These instructions do not need to be followed when upgrading Window Maker from an older version, unless stated differently in the NEWS file. Every user on your system that wishes to run Window Maker must do the following: 1. Install Window Maker configuration files in your home directory. Type: wmaker.inst 'wmaker.inst' will install Window Maker configuration files and will setup X to automatically launch Window Maker at startup. That's it! You can type 'man wmaker' to get some general help for configuration and other stuff. Read the User Guide for a more in-depth explanation of Window Maker. You might want to take a look at the FAQ too. 2.4 Locales/Internationalisation ================================ Window Maker has national language support. The procedure to enable national language support is described in the dedicated section [Enabling Languages support] in "README.i18n". 2.5 Configure Options ===================== These options can be passed to the configure script to enable/disable some Window Maker features. Example: ./configure --enable-modelock --disable-gif will configure Window Maker with modelock supported and disable gif support. Normally, you won't need any of them. To get the list of all options, run './configure --help' 2.5.1 Installation Directory ---------------------------- The default installation path will be in the "/usr/local" hierarchy; a number of option can customise this: '--prefix=_PREFIX_' '--exec-prefix=_EPREFIX_' '--bindir=_DIR_' '--sysconfdir=_DIR_' '--libdir=_DIR_' '--includedir=_DIR_' '--datarootdir=_DIR_' '--datadir=_DIR_' '--localedir=_DIR_' '--mandir=_DIR_' Standard options from autoconf to define target paths, you probably want to read section [Installation Names] in "INSTALL". '--sbindir=_DIR_' '--libexecdir=_DIR_' '--sharedstatedir=_DIR_' '--localstatedir=_DIR_' '--oldincludedir=_DIR_' '--infodir=_DIR_' '--docdir=_DIR_' '--htmldir=_DIR_' '--dvidir=_DIR_' '--pdfdir=_DIR_' '--psdir=_DIR_' More standard options from autoconf, today these are not used by Window Maker; they are provided automatically by autoconf for consistency. '--with-gnustepdir=_PATH_' Specific to Window Maker, defines the directory where "WPrefs.app" will be installed, if you want to install it like a GNUstep applications. If not specified, it will be installed like usual programs. '--with-pixmapdir=_DIR_' Specific to Window Maker, this option defines an additional path where pixmaps will be searched. Nothing will be installed there; the default path taken is "DATADIR/pixmaps", where 'DATADIR' is the path defined from '--datadir'. '--with-defsdatadir=_DIR_' Specific to Window Maker, defines the directory where system configuration files, e.g., "WindowMaker", "WMRootMenu", etc., are installed. The default value is "SYSCONFDIR/WindowMaker", where 'SYSCONFDIR' is the path defined from '--sysconfdir'. 2.5.2 External Libraries ------------------------ Unless specifically written, 'configure' will try to detect automatically for the libraries; if you explicitly provide '--enable-FEATURE' then it will break with an error message if the library cannot be linked; if you specify '--disable-FEATURE' then it will not try to search for the library. You can find more information about the libraries in the section [Optional Dependencies], at line 134. '--enable-boehm-gc' Never enabled by default, use Boehm GC instead of the default libc 'malloc()' '--disable-gif' Disable GIF support in WRaster library; when enabled use "libgif" or "libungif". '--disable-jpeg' Disable JPEG support in WRaster library; when enabled use "libjpeg". '--without-libbsd' Refuse use of the "libbsd" compatibility library in WINGs utility library, even if your system provides it. '--disable-magick' Disable ImageMagick's MagickWand support in WRaster, used to support for image formats. '--enable-pango' Disabled by default, enable Pango text layout support in WINGs. '--disable-png' Disable PNG support in WRaster; when enabled use "libpng". '--disable-tiff' Disable TIFF support in WRaster. when enabled use "libtiff". '--disable-webp' Disable WEBP support in WRaster. when enabled use "libwebp". '--disable-xpm' Disable use of "libXpm" for XPM support in WRaster, use internal code instead. The following options can be used to tell 'configure' about extra paths that needs to be used when compiling against libraries: '--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" 2.5.3 X11 and Extensions ------------------------ 'configure' will try to detect automatically the compilation paths for X11 headers and libraries, and which X Extensions support can be enabled. if you explicitly provide '--enable-FEATURE' then it will break with an error message if the extension cannot be used; if you specify '--disable-FEATURE' then it will not check for the extension. '--x-includes=_DIR_' '--x-libraries=_DIR_' Autoconf's option to specify search paths for X11, for the case were it would not have been able to detect it automatically. '--disable-xlocale' If you activated support for Native Languages, then X11 may use a hack to also configure its locale support when the program configure the locale for itself. The 'configure' script detects if the Xlib supports this or not; this options explicitly disable this initialisation mechanism. '--enable-modelock' XKB language status lock support. If you don't know what it is you probably don't need it. The default is to not enable it. '--disable-shm' Disable use of the MIT shared memory extension. This will slow down texture generation a little bit, but in some cases it seems to be necessary due to a bug that manifests as messed icons and textures. '--disable-shape' Disables support for shaped windows (for 'oclock', 'xeyes', etc.). '--enable-xinerama' The Xinerama extension provides information about the different screens connected when running a multi-head setting (if you plug more than one monitor). '--enable-randr' The RandR extension provides feedback when changing the multiple-monitor configuration in X11 and allows to re-configure how screens are organised. At current time, it is not enabled by default because it is NOT recommended (buggy); Window Maker only restart itself when the configuration change, to take into account the new screen size. 2.5.4 Feature Selection ----------------------- '--disable-animations' Disable animations permanently, by not compiling the corresponding code into Window Maker. When enabled (the default), you still have a run-time configuration option in WPrefs. '--disable-mwm-hints' Disable support for Motif's MWM Window Manager hints. These attributes were introduced by the Motif toolkit to ask for special window appearance requests. Nowadays this is covered by the NetWM/EWMH specification, but there are still applications that rely on MWM Hints. '--enable-wmreplace' Add support for the ICCCM protocol for cooperative window manager replacement. This feature is disabled by default because you probably don't need to switch seamlessly the window manager; if you are making a package for a distribution you'd probably want to enable this because it allows users to give a try to different window managers without restarting everything for an extra cost that is not really big. '--disable-xdnd' Disable support for dragging and dropping files on the dock, which launches a user-specified command with that file. Starting from version 0.65.6 this feature is enabled by default. '--enable-ld-version-script' This feature is auto-detected, and you should not use this option. When compiling a library ("wrlib", ...), gcc has the possibility to filter the list of functions that will be visible, to keep only the public API, because it helps running programs faster. The 'configure' script checks if this feature is available; if you specify this option it will not check anymore and blindly trust you that it is supposed to work, which is not a good idea as you may encounter problems later when compiling. '--enable-usermenu' This feature, disabled by default, allows to add a user-defined custom menu to applications; when choosing an entry of the menu it will send the key combination defined by the user to that application. See section [Application User Menu] in "NEWS" for more information. '--with-menu-textdomain=_DOMAIN_' Selection of the domain used for translation of the menus; see section [Translations for Menus] in "README.i18n". 2.5.5 Developer Stuff --------------------- These options are disabled by default: '--config-cache' If you intend to re-run the 'configure' script often, you probably want to include this option, so it will save and re-use the status of what have been detected in the file "config.cache". '--enable-debug' Enable debugging features (debug symbol, some extra verbosity and checks) and add a number of check flags (warnings) for the compiler (in gcc fashion). '--enable-lcov=_DIRECTORY_' Enable generation of code coverage and profiling data; if the "_DIRECTORY_" is not specified, use "coverage-report". This option was meant to be use with gcc; it was not used recently so it is probable that is does not work anymore; the 'configure' script will not even check that your compiling environment has the appropriate requirements and works with this. Despite all this, if you think there's a use for it and feel in the mood to help, do not hesitate to discuss on the mailing list <wmaker-dev@googlegroups.com> to get it working. 3 Miscellaneous *************** 3.1 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 have "/usr/local/bin" in your 'PATH' environment variable; * make sure you have "/usr/local/lib" in "/etc/ld.so.conf" before running 'ldconfig'; - PowerPC MkLinux You will need to have the latest version of Xpmac. Older versions seem to have bugs that cause the system to hang. - Debian GNU/Linux If you want JPEG and TIFF support, make sure you have "libtiff-dev" and "libjpeg-dev" installed. - SuSE GNU/Linux If you installed the Window Maker package from SuSE, uninstall it before trying to compile Window Maker or you might have problems. - MetroX (unknown version) MetroX has a bug that corrupts pixmaps that are set as window backgrounds. If you use MetroX and have weird problems with textures, do not use textures in title bars. Or use a different X server. 3.2 I don't have the root password :( ===================================== If you can't get superuser privileges (can't be _root_) you can install Window Maker in your own home directory. For that, supply the '--prefix' option when running configure in step 2 of building Window Maker. You will also need to supply the '--with-gnustepdir' option, to specify the path for 'WPrefs.app'. Example: ./configure --prefix=/home/jshmoe --with-gnustepdir=/home/jshmoe/GNUstep/Applications 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 by your actual home directory path. 3.3 Upgrading ============= If you are upgrading from an older version of Window Maker: 1. Configure and build Window Maker as always 2. Install Window Maker (but do not run 'wmaker.inst') 3. Read the NEWS file and update your configuration files if necessary. 4 Troubleshooting ***************** When you have some trouble during configuration (while running configure), like not being able to use a graphic format library you think you have installed, look at the "config.log" file for clues of the problem. 4.1 Error with loading fonts, even if they exist ================================================ This is probably a problem with NLS (Native Language Support), you probably want to look at the section [Troubleshooting] in "README.i18n" or try rebuilding without NLS support, which is done with: ./configure LINGUAS="" 4.2 configure doesn't detect libtiff, or other graphic libraries ================================================================ Delete "config.cache", then rerun configure adding the following options to 'configure' (among the other options you use): --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-incs-from' shows. Just put a space between them. 4.3 configure doesn't detect libXpm =================================== Check if you have a symbolic link from "libXpm.so.4.9" to "libXpm.so" 4.4 Segmentation fault on startup ================================= * Check if the version of libXPM you have is at least 4.7 * Check if you have an updated version of "~/GNUstep/Defaults/WindowMaker" If you're not sure, try renaming "~/GNUstep" to "~/GNUtmp" and then run 'wmaker.inst' 4.5 "...: your machine is misconfigured. gethostname() returned (none)" ======================================================================= the host name of your machine is set to something invalid, that starts with a parenthesis. Do a 'man hostname' for info about how to set it. 4.6 The root menu contains only 2 entries. ("XTerm" and "Exit...") ================================================================== Window Maker could not read your menu definition file. You should check the output of 'wmaker' for an error, it may be visible in the console or in the ".xsession-errors" file. ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/�����������������������������������������������������������������������������0000755�0001750�0001750�00000000000�13642365213�011642� 5����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/screen.h���������������������������������������������������������������������0000644�0001750�0001750�00000030040�13431646202�013203� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef WMSCREEN_H_ #define WMSCREEN_H_ #include "wconfig.h" #include "WindowMaker.h" #include <sys/types.h> #include <WINGs/WUtil.h> typedef struct { WMRect *screens; int count; /* screen count, 0 = inactive */ int primary_head; /* main working screen */ } WXineramaInfo; /* an area of the screen reserved by some window */ typedef struct WReservedArea { WArea area; Window window; struct WReservedArea *next; } WReservedArea; typedef struct WAppIconChain { struct WAppIcon *aicon; struct WAppIconChain *next; } WAppIconChain; /* Drawers, which are docks, really */ typedef struct WDrawerChain { struct WDock *adrawer; struct WDrawerChain *next; } WDrawerChain; /* * each WScreen is saved into a context associated with it's root window */ typedef struct _WScreen { int screen; /* screen number */ Window info_window; /* for our window manager info stuff */ #ifdef USE_ICCCM_WMREPLACE Atom sn_atom; /* window manager selection */ #endif int scr_width; /* size of the screen */ int scr_height; Window root_win; /* root window of screen */ int depth; /* depth of the default visual */ Colormap colormap; /* root colormap */ int root_colormap_install_count; struct WWindow *original_cmap_window; /* colormap before installing * root colormap temporarily */ struct WWindow *cmap_window; Colormap current_colormap; Window w_win; /* window to use as drawable * for new GCs, pixmaps etc. */ Visual *w_visual; int w_depth; Colormap w_colormap; /* our colormap */ WXineramaInfo xine_info; Window no_focus_win; /* window to get focus when nobody * else can do it */ struct WWindow *focused_window; /* window that has the focus * Use this list if you want to * traverse the entire window list */ struct WWindow *bfs_focused_window; /* window that had focus before * another window entered fullscreen */ WMArray *selected_windows; WMArray *fakeGroupLeaders; /* list of fake window group ids */ struct WAppIcon *app_icon_list; /* list of all app-icons on screen */ struct WApplication *wapp_list; /* list of all aplications */ WMBag *stacking_list; /* bag of lists of windows * in stacking order. * Indexed by window level * and each list on the array * is ordered from the topmost to * the lowest window */ int window_count; /* number of windows in window_list */ int workspace_count; /* number of workspaces */ struct WWorkspace **workspaces; /* workspace array */ int current_workspace; /* current workspace number */ int last_workspace; /* last used workspace number */ WReservedArea *reservedAreas; /* used to build totalUsableArea */ WArea *usableArea; /* area of the workspace where * we can put windows on, as defined * by other clients (not us) */ WArea *totalUsableArea; /* same as above, but including * the dock and other stuff */ WMColor *black; WMColor *white; WMColor *gray; WMColor *darkGray; /* shortcuts for the pixels of the above colors. just for convenience */ WMPixel black_pixel; WMPixel white_pixel; WMPixel light_pixel; WMPixel dark_pixel; Pixmap stipple_bitmap; Pixmap transp_stipple; /* for making holes in icon masks for * transparent icon simulation */ WMFont *title_font; /* default font for the titlebars */ WMFont *menu_title_font; /* font for menu titlebars */ WMFont *menu_entry_font; /* font for menu items */ WMFont *icon_title_font; /* for icon titles */ WMFont *clip_title_font; /* for clip titles */ WMFont *info_text_font; /* text on things like geometry * hint boxes */ XFontStruct *tech_draw_font; /* font for tech draw style geom view needs to be a core font so we can use it with a XORing GC */ WMFont *workspace_name_font; WMColor *select_color; WMColor *select_text_color; /* foreground colors */ WMColor *window_title_color[3]; /* window titlebar text (foc, unfoc, pfoc)*/ WMColor *menu_title_color[3]; /* menu titlebar text */ WMColor *clip_title_color[2]; /* clip title text */ WMColor *mtext_color; /* menu item text */ WMColor *dtext_color; /* disabled menu item text */ int frame_border_width; WMColor *frame_border_color; WMColor *frame_focused_border_color; WMColor *frame_selected_border_color; WMPixel line_pixel; WMPixel frame_border_pixel; /* frame border */ WMPixel frame_focused_border_pixel; /* frame border */ WMPixel frame_selected_border_pixel;/* frame border */ union WTexture *menu_title_texture[3];/* menu titlebar texture (tex, -, -) */ union WTexture *window_title_texture[3]; /* win textures (foc, unfoc, pfoc) */ union WTexture *resizebar_texture[3];/* window resizebar texture (tex, -, -) */ union WTexture *menu_item_texture; /* menu item texture */ struct WTexSolid *menu_item_auxtexture; /* additional texture to draw menu * cascade arrows */ struct WTexSolid *icon_title_texture;/* icon titles */ struct WTexSolid *widget_texture; struct WTexSolid *icon_back_texture; /* icon back color for shadowing */ WMColor *icon_title_color; /* icon title color */ GC icon_select_gc; GC frame_gc; /* gc for resize/move frame (root) */ GC line_gc; /* gc for drawing XORed lines (root) */ GC copy_gc; /* gc for XCopyArea() */ GC stipple_gc; /* gc for stippled filling */ GC draw_gc; /* gc for drawing misc things */ GC mono_gc; /* gc for 1 bit drawables */ struct WPixmap *b_pixmaps[PRED_BPIXMAPS]; /* internal pixmaps for buttons*/ struct WPixmap *menu_radio_indicator;/* left menu indicator */ struct WPixmap *menu_check_indicator;/* left menu indicator for checkmark */ struct WPixmap *menu_mini_indicator; /* for miniwindow */ struct WPixmap *menu_hide_indicator; /* for hidden window */ struct WPixmap *menu_shade_indicator; /* for shaded window */ int app_menu_x, app_menu_y; /* position for application menus */ struct WMenu *root_menu; /* root window menu */ struct WMenu *switch_menu; /* window list menu */ struct WMenu *workspace_menu; /* workspace operation */ struct WMenu *window_menu; /* window command menu */ struct WMenu *icon_menu; /* icon/appicon menu */ struct WMenu *workspace_submenu; /* workspace list for window_menu */ struct WDock *dock; /* the application dock */ struct WMenu *dock_pos_menu; /* Dock position menu */ struct WPixmap *dock_dots; /* 3 dots for the Dock */ Window dock_shadow; /* shadow for dock buttons */ struct WAppIcon *clip_icon; /* The clip main icon, or the dock's, if they are merged */ struct WMenu *clip_menu; /* Menu for clips */ struct WMenu *clip_submenu; /* Workspace list for clips */ struct WMenu *clip_options; /* Options for Clip */ struct WMenu *clip_ws_menu; /* workspace menu for clip */ struct WMenu *drawer_menu; /* Menu for drawers */ struct WDock *last_dock; WAppIconChain *global_icons; /* for omnipresent icons chain in clip */ int global_icon_count; /* How many global icons do we have */ WDrawerChain *drawers; /* Chain of drawers */ /* Cache the following two informations, as they are used quite a lot */ int drawer_count; /* Nb of drawers that */ struct WDock *attracting_drawer; /* The drawer that auto-attracts icons, or NULL */ struct RContext *rcontext; /* wrlib context */ WMScreen *wmscreen; /* for widget library */ struct RImage *icon_tile; struct RImage *clip_tile; /* tile with arrows to change workspace */ struct RImage *drawer_tile; /* tile for a drawer (tile + arrow) */ Pixmap icon_tile_pixmap; /* For app supplied icons */ struct RImage *def_icon_rimage; /* Default RImage icon */ struct WDialogData *dialog_data; struct W_GeometryView *gview; /* size/position view */ /* state and other informations */ short cascade_index; /* for cascade window placement */ WMPropList *session_state; /* for double-click detection */ Time last_click_time; Window last_click_window; int last_click_button; /* balloon help data */ struct _WBalloon *balloon; /* workspace name data */ Window workspace_name; WMHandlerID *workspace_name_timer; struct WorkspaceNameData *workspace_name_data; /* for raise-delay */ WMHandlerID *autoRaiseTimer; Window autoRaiseWindow; /* window that is scheduled to be * raised */ /* for window shortcuts */ WMArray *shortcutWindows[MAX_WINDOW_SHORTCUTS]; #ifdef USE_DOCK_XDND char *xdestring; #endif struct NetData *netdata; int helper_fd; pid_t helper_pid; struct { unsigned int startup:1; /* during window manager startup */ unsigned int regenerate_icon_textures:1; unsigned int dnd_data_convertion_status:1; unsigned int root_menu_changed_shortcuts:1; unsigned int added_workspace_menu:1; unsigned int added_windows_menu:1; unsigned int startup2:1; /* startup phase 2 */ unsigned int next_click_is_not_double:1; 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; unsigned int jump_back_pending:1; unsigned int ignore_focus_events:1; } flags; } WScreen; WScreen *wScreenInit(int screen_number); void wScreenSaveState(WScreen *scr); void wScreenRestoreState(WScreen *scr); int wScreenBringInside(WScreen *scr, int *x, int *y, int width, int height); int wScreenKeepInside(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 *wScreenForWindow(Window window); /* slower than above functions */ void wScreenFinish(WScreen *scr); void wScreenUpdateUsableArea(WScreen *scr); void create_logo_image(WScreen *scr); #endif ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/placement.h������������������������������������������������������������������0000644�0001750�0001750�00000002743�13431646202�013705� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* placement.h - window and icon placement on screen * * Window Maker window manager * * Copyright (c) 1997-2003 Alfredo K. Kojima * Copyright (c) 2013 Window Maker Team * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef PLACEMENT_H #define PLACEMENT_H void PlaceIcon(WScreen *scr, int *x_ret, int *y_ret, int head); /* Computes the intersecting length of two line sections */ int calcIntersectionLength(int p1, int l1, int p2, int l2); /* Computes the intersecting area of two rectangles */ int calcIntersectionArea(int x1, int y1, int w1, int h1, int x2, int y2, int w2, int h2); void PlaceWindow(WWindow *wwin, int *x_ret, int *y_ret, unsigned width, unsigned height); void InteractivePlaceWindow(WWindow * wwin, int *x_ret, int *y_ret, unsigned width, unsigned height); #endif /* PLACEMENT_H */ �����������������������������WindowMaker-0.95.9/src/monitor.c��������������������������������������������������������������������0000644�0001750�0001750�00000006757�13431646202�013430� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* monitor.c - monitors the wmaker process * * Window Maker window manager * * Copyright (c) 1997-2004 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "wconfig.h" #include <unistd.h> #include <stdlib.h> #include <time.h> #include <signal.h> #include <sys/wait.h> #ifdef __FreeBSD__ #include <sys/signal.h> #endif #include <X11/Xlib.h> #include <X11/Xutil.h> #include <X11/Xproto.h> #include "WindowMaker.h" #include "screen.h" #include "window.h" #include "dialog.h" #include "main.h" static int showCrashDialog(int sig) { int crashAction; dpy = XOpenDisplay(NULL); if (dpy) { /* XXX TODO make sure that window states are saved and restored via netwm */ XGrabServer(dpy); crashAction = wShowCrashingDialogPanel(sig); XCloseDisplay(dpy); dpy = NULL; } else { werror(_("cannot open connection for crashing dialog panel. Aborting.")); crashAction = WMAbort; } if (crashAction == WMStartAlternate) { int i; wmessage(_("trying to start alternate window manager...")); for (i = 0; i < WMGetArrayItemCount(wPreferences.fallbackWMs); i++) { Restart(WMGetFromArray(wPreferences.fallbackWMs, i), False); } wfatal(_("failed to start alternate window manager. Aborting.")); return 0; } else if (crashAction == WMAbort) return 0; else return 1; } int MonitorLoop(int argc, char **argv) { pid_t pid, exited; char **child_argv = wmalloc(sizeof(char *) * (argc + 2)); int i, status; time_t last_start; Bool error = False; for (i = 0; i < argc; i++) child_argv[i] = argv[i]; child_argv[i++] = "--for-real"; child_argv[i] = NULL; for (;;) { last_start = time(NULL); /* Start Window Maker */ pid = fork(); if (pid == 0) { execvp(child_argv[0], child_argv); werror(_("Error respawning Window Maker")); exit(1); } else if (pid < 0) { werror(_("Error respawning Window Maker")); exit(1); } do { exited = waitpid(-1, &status, 0); if (exited < 0) { werror(_("Error during monitoring of Window Maker process.")); error = True; break; } } while (exited != pid); if (error) break; child_argv[argc] = "--for-real-"; /* Check if the wmaker process exited due to a crash */ if (WIFSIGNALED(status) && (WTERMSIG(status) == SIGSEGV || WTERMSIG(status) == SIGBUS || WTERMSIG(status) == SIGILL || WTERMSIG(status) == SIGABRT || WTERMSIG(status) == SIGFPE)) { /* If so, we check when was the last restart. * If it was less than 3s ago, it's a bad sign, so we show * the crash panel and ask the user what to do */ if (time(NULL) - last_start < 3) { if (showCrashDialog(WTERMSIG(status)) == 0) { wfree(child_argv); return 1; } } wwarning(_("Window Maker exited due to a crash (signal %i) and will be restarted."), WTERMSIG(status)); } else break; } wfree(child_argv); return 0; } �����������������WindowMaker-0.95.9/src/dialog.h���������������������������������������������������������������������0000644�0001750�0001750�00000003151�13431646202�013166� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef WMDIALOG_H_ #define WMDIALOG_H_ enum { WMAbort=0, WMRestart, WMStartAlternate }; int wMessageDialog(WScreen *scr, const char *title, const char *message, const char *defBtn, const char *altBtn, const char *othBtn); int wAdvancedInputDialog(WScreen *scr, const char *title, const char *message, const char *name, char **text); int wInputDialog(WScreen *scr, const char *title, const char *message, char **text); int wExitDialog(WScreen *scr, const char *title, const char *message, const char *defBtn, const char *altBtn, const char *othBtn); Bool wIconChooserDialog(WScreen *scr, char **file, const char *instance, const char *class); void wShowInfoPanel(WScreen *scr); void wShowLegalPanel(WScreen *scr); int wShowCrashingDialogPanel(int whatSig); #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/balloon.c��������������������������������������������������������������������0000644�0001750�0001750�00000041651�13431646202�013357� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1998-2003 Alfredo K. Kojima * Copyright (c) 2014 Window Maker Team * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "wconfig.h" #ifdef BALLOON_TEXT #include <stdio.h> #include <X11/Xlib.h> #include <X11/Xutil.h> #ifdef SHAPED_BALLOON #include <X11/extensions/shape.h> #endif #include <stdlib.h> #include <string.h> #include <wraster.h> #include "WindowMaker.h" #include "screen.h" #include "texture.h" #include "framewin.h" #include "icon.h" #include "appicon.h" #include "workspace.h" #include "balloon.h" #include "misc.h" typedef struct _WBalloon { Window window; #ifdef SHAPED_BALLOON GC monoGC; #endif int prevType; Window objectWindow; char *text; int h; WMHandlerID timer; Pixmap contents; Pixmap mini_preview; char mapped; char ignoreTimer; } WBalloon; #define TOP 0 #define BOTTOM 1 #define LEFT 0 #define RIGHT 2 static int countLines(const char *text) { const char *p = text; int h = 1; while (*p) { if (*p == '\n' && p[1] != 0) h++; p++; } return h; } static int getMaxStringWidth(WMFont *font, const char *text) { const char *p = text; const char *pb = p; int pos = 0; int w = 0, wt; while (*p) { if (*p == '\n') { wt = WMWidthOfString(font, pb, pos); if (wt > w) w = wt; pos = 0; pb = p + 1; } else { pos++; } p++; } if (pos > 0) { wt = WMWidthOfString(font, pb, pos); if (wt > w) w = wt; } return w; } static void drawMultiLineString(WMScreen *scr, Pixmap pixmap, WMColor *color, WMFont *font, int x, int y, const char *text, int len) { const char *p = text; const char *pb = p; int l = 0, pos = 0; int height = WMFontHeight(font); while (*p && p - text < len) { if (*p == '\n') { WMDrawString(scr, pixmap, color, font, x, y + l * height, pb, pos); l++; pos = 0; pb = p + 1; } else { pos++; } p++; } if (pos > 0) WMDrawString(scr, pixmap, color, font, x, y + l * height, pb, pos); } #ifdef SHAPED_BALLOON #define SPACE 12 static void drawBalloon(WScreen *scr, Pixmap bitmap, Pixmap pix, int x, int y, int w, int h, int side) { GC bgc = scr->balloon->monoGC; GC gc = scr->draw_gc; int rad = h * 3 / 10; XPoint pt[3], ipt[3]; int w1; /* outline */ XSetForeground(dpy, bgc, 1); XFillArc(dpy, bitmap, bgc, x, y, rad, rad, 90 * 64, 90 * 64); XFillArc(dpy, bitmap, bgc, x, y + h - 1 - rad, rad, rad, 180 * 64, 90 * 64); XFillArc(dpy, bitmap, bgc, x + w - 1 - rad, y, rad, rad, 0 * 64, 90 * 64); XFillArc(dpy, bitmap, bgc, x + w - 1 - rad, y + h - 1 - rad, rad, rad, 270 * 64, 90 * 64); XFillRectangle(dpy, bitmap, bgc, x, y + rad / 2, w, h - rad); XFillRectangle(dpy, bitmap, bgc, x + rad / 2, y, w - rad, h); /* interior */ XSetForeground(dpy, gc, scr->white_pixel); XFillArc(dpy, pix, gc, x + 1, y + 1, rad, rad, 90 * 64, 90 * 64); XFillArc(dpy, pix, gc, x + 1, y + h - 2 - rad, rad, rad, 180 * 64, 90 * 64); XFillArc(dpy, pix, gc, x + w - 2 - rad, y + 1, rad, rad, 0 * 64, 90 * 64); XFillArc(dpy, pix, gc, x + w - 2 - rad, y + h - 2 - rad, rad, rad, 270 * 64, 90 * 64); XFillRectangle(dpy, pix, gc, x + 1, y + 1 + rad / 2, w - 2, h - 2 - rad); XFillRectangle(dpy, pix, gc, x + 1 + rad / 2, y + 1, w - 2 - rad, h - 2); if (side & BOTTOM) { pt[0].y = y + h - 1; pt[1].y = y + h - 1 + SPACE; pt[2].y = y + h - 1; ipt[0].y = pt[0].y - 1; ipt[1].y = pt[1].y - 1; ipt[2].y = pt[2].y - 1; } else { pt[0].y = y; pt[1].y = y - SPACE; pt[2].y = y; ipt[0].y = pt[0].y + 1; ipt[1].y = pt[1].y + 1; ipt[2].y = pt[2].y + 1; } /*w1 = WMAX(h, 24); */ w1 = WMAX(h, 21); if (side & RIGHT) { pt[0].x = x + w - w1 + 2 * w1 / 16; pt[1].x = x + w - w1 + 11 * w1 / 16; pt[2].x = x + w - w1 + 7 * w1 / 16; ipt[0].x = x + 1 + w - w1 + 2 * (w1 - 1) / 16; ipt[1].x = x + 1 + w - w1 + 11 * (w1 - 1) / 16; ipt[2].x = x + 1 + w - w1 + 7 * (w1 - 1) / 16; /*ipt[0].x = pt[0].x+1; ipt[1].x = pt[1].x; ipt[2].x = pt[2].x; */ } else { pt[0].x = x + w1 - 2 * w1 / 16; pt[1].x = x + w1 - 11 * w1 / 16; pt[2].x = x + w1 - 7 * w1 / 16; ipt[0].x = x - 1 + w1 - 2 * (w1 - 1) / 16; ipt[1].x = x - 1 + w1 - 11 * (w1 - 1) / 16; ipt[2].x = x - 1 + w1 - 7 * (w1 - 1) / 16; /*ipt[0].x = pt[0].x-1; ipt[1].x = pt[1].x; ipt[2].x = pt[2].x; */ } XFillPolygon(dpy, bitmap, bgc, pt, 3, Convex, CoordModeOrigin); XFillPolygon(dpy, pix, gc, ipt, 3, Convex, CoordModeOrigin); /* fix outline */ XSetForeground(dpy, gc, scr->black_pixel); XDrawLines(dpy, pix, gc, pt, 3, CoordModeOrigin); if (side & RIGHT) { pt[0].x++; pt[2].x--; } else { pt[0].x--; pt[2].x++; } XDrawLines(dpy, pix, gc, pt, 3, CoordModeOrigin); } static Pixmap makePixmap(WScreen *scr, int width, int height, int side, Pixmap *mask) { WBalloon *bal = scr->balloon; Pixmap bitmap; Pixmap pixmap; int x, y; bitmap = XCreatePixmap(dpy, scr->root_win, width + SPACE, height + SPACE, 1); if (!bal->monoGC) bal->monoGC = XCreateGC(dpy, bitmap, 0, NULL); XSetForeground(dpy, bal->monoGC, 0); XFillRectangle(dpy, bitmap, bal->monoGC, 0, 0, width + SPACE, height + SPACE); pixmap = XCreatePixmap(dpy, scr->root_win, width + SPACE, height + SPACE, scr->w_depth); XSetForeground(dpy, scr->draw_gc, scr->black_pixel); XFillRectangle(dpy, pixmap, scr->draw_gc, 0, 0, width + SPACE, height + SPACE); if (side & BOTTOM) y = 0; else y = SPACE; x = 0; drawBalloon(scr, bitmap, pixmap, x, y, width, height, side); *mask = bitmap; return pixmap; } static void showText(WScreen *scr, int x, int y, int h, int w, const char *text) { int width; int height; Pixmap pixmap; Pixmap mask; WMFont *font = scr->info_text_font; int side = 0; int ty; int bx, by; if (scr->balloon->contents) XFreePixmap(dpy, scr->balloon->contents); width = getMaxStringWidth(font, text) + 16; height = countLines(text) * WMFontHeight(font) + 4; if (height < 16) height = 16; if (width < height) width = height; if (x + width > scr->scr_width) { side = RIGHT; bx = x - width + w / 2; if (bx < 0) bx = 0; } else { side = LEFT; bx = x + w / 2; } if (bx + width > scr->scr_width) bx = scr->scr_width - width; if (y - (height + SPACE) < 0) { side |= TOP; by = y + h - 1; ty = SPACE; } else { side |= BOTTOM; by = y - (height + SPACE); ty = 0; } pixmap = makePixmap(scr, width, height, side, &mask); drawMultiLineString(scr->wmscreen, pixmap, scr->black, font, 8, ty + 2, text, strlen(text)); XSetWindowBackgroundPixmap(dpy, scr->balloon->window, pixmap); scr->balloon->contents = pixmap; XResizeWindow(dpy, scr->balloon->window, width, height + SPACE); XShapeCombineMask(dpy, scr->balloon->window, ShapeBounding, 0, 0, mask, ShapeSet); XFreePixmap(dpy, mask); XMoveWindow(dpy, scr->balloon->window, bx, by); XMapRaised(dpy, scr->balloon->window); scr->balloon->mapped = 1; } #else /* !SHAPED_BALLOON */ static void showText(WScreen *scr, int x, int y, int h, int w, const char *text) { int width; int height; Pixmap pixmap; WMFont *font = scr->info_text_font; if (scr->balloon->contents) XFreePixmap(dpy, scr->balloon->contents); width = getMaxStringWidth(font, text) + 8; /*width = WMWidthOfString(font, text, strlen(text))+8; */ height = countLines(text) * WMFontHeight(font) + 4; if (x < 0) x = 0; else if (x + width > scr->scr_width - 1) x = scr->scr_width - width; if (y - height - 2 < 0) { y += h; if (y < 0) y = 0; } else { y -= height + 2; } if (scr->window_title_texture[0]) XSetForeground(dpy, scr->draw_gc, scr->window_title_texture[0]->any.color.pixel); else XSetForeground(dpy, scr->draw_gc, scr->light_pixel); pixmap = XCreatePixmap(dpy, scr->root_win, width, height, scr->w_depth); XFillRectangle(dpy, pixmap, scr->draw_gc, 0, 0, width, height); drawMultiLineString(scr->wmscreen, pixmap, scr->window_title_color[0], font, 4, 2, text, strlen(text)); XResizeWindow(dpy, scr->balloon->window, width, height); XMoveWindow(dpy, scr->balloon->window, x, y); XSetWindowBackgroundPixmap(dpy, scr->balloon->window, pixmap); XClearWindow(dpy, scr->balloon->window); XMapRaised(dpy, scr->balloon->window); scr->balloon->contents = pixmap; scr->balloon->mapped = 1; } #endif /* !SHAPED_BALLOON */ static void show_minipreview(WScreen *scr, int x, int y, const char *title, Pixmap mini_preview) { Pixmap pixmap; WMFont *font = scr->info_text_font; int width, height; int titleHeight; char *shortenTitle; if (scr->balloon->contents) XFreePixmap(dpy, scr->balloon->contents); width = wPreferences.minipreview_size; height = wPreferences.minipreview_size; if (wPreferences.miniwin_title_balloon) { shortenTitle = ShrinkString(font, title, width - MINIPREVIEW_BORDER * 2); titleHeight = countLines(shortenTitle) * WMFontHeight(font) + 4; height += titleHeight; } else { shortenTitle = NULL; titleHeight = 0; } if (x < 0) x = 0; else if (x + width > scr->scr_width - 1) x = scr->scr_width - width - 1; if (y - height - 2 < 0) { y += wPreferences.icon_size; if (y < 0) y = 0; } else { y -= height + 2; } if (scr->window_title_texture[0]) XSetForeground(dpy, scr->draw_gc, scr->window_title_texture[0]->any.color.pixel); else XSetForeground(dpy, scr->draw_gc, scr->light_pixel); pixmap = XCreatePixmap(dpy, scr->root_win, width, height, scr->w_depth); XFillRectangle(dpy, pixmap, scr->draw_gc, 0, 0, width, height); if (shortenTitle != NULL) { drawMultiLineString(scr->wmscreen, pixmap, scr->window_title_color[0], font, MINIPREVIEW_BORDER, MINIPREVIEW_BORDER, shortenTitle, strlen(shortenTitle)); wfree(shortenTitle); } XCopyArea(dpy, mini_preview, pixmap, scr->draw_gc, 0, 0, (wPreferences.minipreview_size - 1 - MINIPREVIEW_BORDER * 2), (wPreferences.minipreview_size - 1 - MINIPREVIEW_BORDER * 2), MINIPREVIEW_BORDER, MINIPREVIEW_BORDER + titleHeight); #ifdef SHAPED_BALLOON XShapeCombineMask(dpy, scr->balloon->window, ShapeBounding, 0, 0, None, ShapeSet); #endif XResizeWindow(dpy, scr->balloon->window, width, height); XMoveWindow(dpy, scr->balloon->window, x, y); XSetWindowBackgroundPixmap(dpy, scr->balloon->window, pixmap); XClearWindow(dpy, scr->balloon->window); XMapRaised(dpy, scr->balloon->window); scr->balloon->contents = pixmap; scr->balloon->mapped = 1; } static void showBalloon(WScreen *scr) { int x, y; Window foow; unsigned foo, w; scr->balloon->timer = NULL; scr->balloon->ignoreTimer = 1; if (!XGetGeometry(dpy, scr->balloon->objectWindow, &foow, &x, &y, &w, &foo, &foo, &foo)) { scr->balloon->prevType = 0; return; } if (wPreferences.miniwin_preview_balloon && scr->balloon->mini_preview != None) /* used to display either the mini-preview alone or the mini-preview with the title */ show_minipreview(scr, x, y, scr->balloon->text, scr->balloon->mini_preview); else showText(scr, x, y, scr->balloon->h, w, scr->balloon->text); } static void frameBalloon(WObjDescriptor *object) { WFrameWindow *fwin = (WFrameWindow *) object->parent; WScreen *scr = fwin->core->screen_ptr; if (fwin->titlebar != object->self || !fwin->flags.is_client_window_frame) { wBalloonHide(scr); return; } if (fwin->title && fwin->flags.incomplete_title) { scr->balloon->h = (fwin->titlebar ? fwin->titlebar->height : 0); scr->balloon->text = wstrdup(fwin->title); scr->balloon->objectWindow = fwin->core->window; scr->balloon->timer = WMAddTimerHandler(BALLOON_DELAY, (WMCallback *) showBalloon, scr); } } static void miniwindowBalloon(WObjDescriptor *object) { WIcon *icon = (WIcon *) object->parent; WScreen *scr = icon->core->screen_ptr; if (!icon->icon_name) { wBalloonHide(scr); return; } scr->balloon->h = icon->core->height; scr->balloon->text = wstrdup(icon->icon_name); scr->balloon->mini_preview = icon->mini_preview; scr->balloon->objectWindow = icon->core->window; if ((scr->balloon->prevType == object->parent_type || scr->balloon->prevType == WCLASS_APPICON) && scr->balloon->ignoreTimer) { XUnmapWindow(dpy, scr->balloon->window); showBalloon(scr); } else { scr->balloon->timer = WMAddTimerHandler(BALLOON_DELAY, (WMCallback *) showBalloon, scr); } } static void appiconBalloon(WObjDescriptor *object) { WAppIcon *aicon = (WAppIcon *) object->parent; WScreen *scr = aicon->icon->core->screen_ptr; char *tmp; /* Show balloon if it is the Clip and the workspace name is > 5 chars */ if (object->parent == scr->clip_icon) { if (strlen(scr->workspaces[scr->current_workspace]->name) > 5) { scr->balloon->text = wstrdup(scr->workspaces[scr->current_workspace]->name); } else { wBalloonHide(scr); return; } } else if (aicon->command && aicon->wm_class) { int len; WApplication *app; unsigned int app_win_cnt = 0; const char *display_name; if (object->parent_type == WCLASS_DOCK_ICON) { if (aicon->main_window) { app = wApplicationOf(aicon->main_window); if (app && app->main_window_desc && app->main_window_desc->fake_group) app_win_cnt = app->main_window_desc->fake_group->retainCount - 1; } } /* * Check to see if it is a GNUstep app, because in this case we use the instance * instead of the class, otherwise the user will not be able to distinguish what * is being referred. */ if (strcmp(aicon->wm_class, "GNUstep") == 0) display_name = aicon->wm_instance; else display_name = aicon->wm_class; len = strlen(aicon->command) + strlen(display_name) + 8; if (app_win_cnt > 0) len += 1 + snprintf(NULL, 0, "%u", app_win_cnt); tmp = wmalloc(len); if (app_win_cnt > 0) snprintf(tmp, len, "%u %s\n(%s)", app_win_cnt, display_name, aicon->command); else snprintf(tmp, len, "%s\n(%s)", aicon->wm_instance, aicon->command); scr->balloon->text = tmp; } else if (aicon->command) { scr->balloon->text = wstrdup(aicon->command); } else if (aicon->wm_class) { /* Check to see if it is a GNUstep App */ if (strcmp(aicon->wm_class, "GNUstep") == 0) scr->balloon->text = wstrdup(aicon->wm_instance); else scr->balloon->text = wstrdup(aicon->wm_class); } else { wBalloonHide(scr); return; } scr->balloon->h = aicon->icon->core->height - 2; scr->balloon->objectWindow = aicon->icon->core->window; if ((scr->balloon->prevType == object->parent_type || scr->balloon->prevType == WCLASS_MINIWINDOW) && scr->balloon->ignoreTimer) { XUnmapWindow(dpy, scr->balloon->window); showBalloon(scr); } else { scr->balloon->timer = WMAddTimerHandler(BALLOON_DELAY, (WMCallback *) showBalloon, scr); } } void wBalloonInitialize(WScreen *scr) { WBalloon *bal; XSetWindowAttributes attribs; unsigned long vmask; bal = wmalloc(sizeof(WBalloon)); scr->balloon = bal; vmask = CWSaveUnder | CWOverrideRedirect | CWColormap | CWBackPixel | CWBorderPixel; attribs.save_under = True; attribs.override_redirect = True; attribs.colormap = scr->w_colormap; attribs.background_pixel = scr->icon_back_texture->normal.pixel; attribs.border_pixel = 0; /* do not care */ bal->window = XCreateWindow(dpy, scr->root_win, 1, 1, 10, 10, 1, scr->w_depth, CopyFromParent, scr->w_visual, vmask, &attribs); #if 0 /* select EnterNotify to so that the balloon will be unmapped * when the pointer is moved over it */ XSelectInput(dpy, bal->window, EnterWindowMask); #endif } void wBalloonEnteredObject(WScreen *scr, WObjDescriptor *object) { WBalloon *balloon = scr->balloon; if (balloon->timer) { WMDeleteTimerHandler(balloon->timer); balloon->timer = NULL; balloon->ignoreTimer = 0; } if (scr->balloon->text) wfree(scr->balloon->text); scr->balloon->text = NULL; scr->balloon->mini_preview = None; if (!object) { wBalloonHide(scr); balloon->ignoreTimer = 0; return; } switch (object->parent_type) { case WCLASS_FRAME: if (wPreferences.window_balloon) frameBalloon(object); break; case WCLASS_DOCK_ICON: if (wPreferences.appicon_balloon) appiconBalloon(object); break; case WCLASS_MINIWINDOW: if (wPreferences.miniwin_title_balloon || wPreferences.miniwin_preview_balloon) miniwindowBalloon(object); break; case WCLASS_APPICON: if (wPreferences.appicon_balloon) appiconBalloon(object); break; default: wBalloonHide(scr); break; } scr->balloon->prevType = object->parent_type; } void wBalloonHide(WScreen *scr) { if (scr) { if (scr->balloon->mapped) { XUnmapWindow(dpy, scr->balloon->window); scr->balloon->mapped = 0; } else if (scr->balloon->timer) { WMDeleteTimerHandler(scr->balloon->timer); scr->balloon->timer = NULL; } scr->balloon->prevType = 0; } } #endif ���������������������������������������������������������������������������������������WindowMaker-0.95.9/src/monitor.h��������������������������������������������������������������������0000644�0001750�0001750�00000001710�13431646202�013415� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2003 Alfredo K. Kojima * Copyright (c) 2013 Window Maker Team * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef WMMONITOR_H #define WMMONITOR_H int MonitorLoop(int argc, char **argv); #endif /* WMMONITOR_H */ ��������������������������������������������������������WindowMaker-0.95.9/src/wmspec.c���������������������������������������������������������������������0000644�0001750�0001750�00000154613�13642357774�013253� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* wmspec.c-- support for the wm-spec Hints * * Window Maker window manager * * Copyright (c) 1998-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ /* * TODO * ---- * * This file needs to be checked for all calls to XGetWindowProperty() and * proper checks need to be made on the returned values. Only checking for * return to be Success is not enough. -Dan */ #include "wconfig.h" #include <X11/Xlib.h> #include <X11/Xatom.h> #include <string.h> #include <WINGs/WUtil.h> #include "WindowMaker.h" #include "window.h" #include "screen.h" #include "workspace.h" #include "framewin.h" #include "actions.h" #include "client.h" #include "appicon.h" #include "wmspec.h" #include "icon.h" #include "stacking.h" #include "xinerama.h" #include "properties.h" /* Root Window Properties */ static Atom net_supported; static Atom net_client_list; static Atom net_client_list_stacking; static Atom net_number_of_desktops; static Atom net_desktop_geometry; static Atom net_desktop_viewport; static Atom net_current_desktop; static Atom net_desktop_names; static Atom net_active_window; static Atom net_workarea; static Atom net_supporting_wm_check; static Atom net_virtual_roots; /* N/A */ static Atom net_desktop_layout; /* XXX */ static Atom net_showing_desktop; /* Other Root Window Messages */ static Atom net_close_window; static Atom net_moveresize_window; /* TODO */ static Atom net_wm_moveresize; /* TODO */ /* Application Window Properties */ static Atom net_wm_name; static Atom net_wm_visible_name; /* TODO (unnecessary?) */ static Atom net_wm_icon_name; static Atom net_wm_visible_icon_name; /* TODO (unnecessary?) */ static Atom net_wm_desktop; static Atom net_wm_window_type; static Atom net_wm_window_type_desktop; static Atom net_wm_window_type_dock; static Atom net_wm_window_type_toolbar; static Atom net_wm_window_type_menu; static Atom net_wm_window_type_utility; static Atom net_wm_window_type_splash; static Atom net_wm_window_type_dialog; static Atom net_wm_window_type_dropdown_menu; static Atom net_wm_window_type_popup_menu; static Atom net_wm_window_type_tooltip; static Atom net_wm_window_type_notification; static Atom net_wm_window_type_combo; static Atom net_wm_window_type_dnd; static Atom net_wm_window_type_normal; static Atom net_wm_state; static Atom net_wm_state_modal; /* XXX: what is this?!? */ static Atom net_wm_state_sticky; static Atom net_wm_state_maximized_vert; static Atom net_wm_state_maximized_horz; static Atom net_wm_state_shaded; static Atom net_wm_state_skip_taskbar; static Atom net_wm_state_skip_pager; static Atom net_wm_state_hidden; static Atom net_wm_state_fullscreen; static Atom net_wm_state_above; static Atom net_wm_state_below; static Atom net_wm_allowed_actions; static Atom net_wm_action_move; static Atom net_wm_action_resize; static Atom net_wm_action_minimize; static Atom net_wm_action_shade; static Atom net_wm_action_stick; static Atom net_wm_action_maximize_horz; static Atom net_wm_action_maximize_vert; static Atom net_wm_action_fullscreen; static Atom net_wm_action_change_desktop; static Atom net_wm_action_close; static Atom net_wm_strut; static Atom net_wm_strut_partial; /* TODO: doesn't really fit into the current strut scheme */ static Atom net_wm_icon_geometry; /* FIXME: should work together with net_wm_handled_icons, gnome-panel-2.2.0.1 doesn't use _NET_WM_HANDLED_ICONS, thus present situation. */ static Atom net_wm_icon; static Atom net_wm_pid; /* TODO */ static Atom net_wm_handled_icons; /* FIXME: see net_wm_icon_geometry */ static Atom net_wm_window_opacity; static Atom net_frame_extents; /* Window Manager Protocols */ static Atom net_wm_ping; /* TODO */ static Atom utf8_string; typedef struct { char *name; Atom *atom; } atomitem_t; static atomitem_t atomNames[] = { {"_NET_SUPPORTED", &net_supported}, {"_NET_CLIENT_LIST", &net_client_list}, {"_NET_CLIENT_LIST_STACKING", &net_client_list_stacking}, {"_NET_NUMBER_OF_DESKTOPS", &net_number_of_desktops}, {"_NET_DESKTOP_GEOMETRY", &net_desktop_geometry}, {"_NET_DESKTOP_VIEWPORT", &net_desktop_viewport}, {"_NET_CURRENT_DESKTOP", &net_current_desktop}, {"_NET_DESKTOP_NAMES", &net_desktop_names}, {"_NET_ACTIVE_WINDOW", &net_active_window}, {"_NET_WORKAREA", &net_workarea}, {"_NET_SUPPORTING_WM_CHECK", &net_supporting_wm_check}, {"_NET_VIRTUAL_ROOTS", &net_virtual_roots}, {"_NET_DESKTOP_LAYOUT", &net_desktop_layout}, {"_NET_SHOWING_DESKTOP", &net_showing_desktop}, {"_NET_CLOSE_WINDOW", &net_close_window}, {"_NET_MOVERESIZE_WINDOW", &net_moveresize_window}, {"_NET_WM_MOVERESIZE", &net_wm_moveresize}, {"_NET_WM_NAME", &net_wm_name}, {"_NET_WM_VISIBLE_NAME", &net_wm_visible_name}, {"_NET_WM_ICON_NAME", &net_wm_icon_name}, {"_NET_WM_VISIBLE_ICON_NAME", &net_wm_visible_icon_name}, {"_NET_WM_DESKTOP", &net_wm_desktop}, {"_NET_WM_WINDOW_TYPE", &net_wm_window_type}, {"_NET_WM_WINDOW_TYPE_DESKTOP", &net_wm_window_type_desktop}, {"_NET_WM_WINDOW_TYPE_DOCK", &net_wm_window_type_dock}, {"_NET_WM_WINDOW_TYPE_TOOLBAR", &net_wm_window_type_toolbar}, {"_NET_WM_WINDOW_TYPE_MENU", &net_wm_window_type_menu}, {"_NET_WM_WINDOW_TYPE_UTILITY", &net_wm_window_type_utility}, {"_NET_WM_WINDOW_TYPE_SPLASH", &net_wm_window_type_splash}, {"_NET_WM_WINDOW_TYPE_DIALOG", &net_wm_window_type_dialog}, {"_NET_WM_WINDOW_TYPE_DROPDOWN_MENU", &net_wm_window_type_dropdown_menu}, {"_NET_WM_WINDOW_TYPE_POPUP_MENU", &net_wm_window_type_popup_menu}, {"_NET_WM_WINDOW_TYPE_TOOLTIP", &net_wm_window_type_tooltip}, {"_NET_WM_WINDOW_TYPE_NOTIFICATION", &net_wm_window_type_notification}, {"_NET_WM_WINDOW_TYPE_COMBO", &net_wm_window_type_combo}, {"_NET_WM_WINDOW_TYPE_DND", &net_wm_window_type_dnd}, {"_NET_WM_WINDOW_TYPE_NORMAL", &net_wm_window_type_normal}, {"_NET_WM_STATE", &net_wm_state}, {"_NET_WM_STATE_MODAL", &net_wm_state_modal}, {"_NET_WM_STATE_STICKY", &net_wm_state_sticky}, {"_NET_WM_STATE_MAXIMIZED_VERT", &net_wm_state_maximized_vert}, {"_NET_WM_STATE_MAXIMIZED_HORZ", &net_wm_state_maximized_horz}, {"_NET_WM_STATE_SHADED", &net_wm_state_shaded}, {"_NET_WM_STATE_SKIP_TASKBAR", &net_wm_state_skip_taskbar}, {"_NET_WM_STATE_SKIP_PAGER", &net_wm_state_skip_pager}, {"_NET_WM_STATE_HIDDEN", &net_wm_state_hidden}, {"_NET_WM_STATE_FULLSCREEN", &net_wm_state_fullscreen}, {"_NET_WM_STATE_ABOVE", &net_wm_state_above}, {"_NET_WM_STATE_BELOW", &net_wm_state_below}, {"_NET_WM_ALLOWED_ACTIONS", &net_wm_allowed_actions}, {"_NET_WM_ACTION_MOVE", &net_wm_action_move}, {"_NET_WM_ACTION_RESIZE", &net_wm_action_resize}, {"_NET_WM_ACTION_MINIMIZE", &net_wm_action_minimize}, {"_NET_WM_ACTION_SHADE", &net_wm_action_shade}, {"_NET_WM_ACTION_STICK", &net_wm_action_stick}, {"_NET_WM_ACTION_MAXIMIZE_HORZ", &net_wm_action_maximize_horz}, {"_NET_WM_ACTION_MAXIMIZE_VERT", &net_wm_action_maximize_vert}, {"_NET_WM_ACTION_FULLSCREEN", &net_wm_action_fullscreen}, {"_NET_WM_ACTION_CHANGE_DESKTOP", &net_wm_action_change_desktop}, {"_NET_WM_ACTION_CLOSE", &net_wm_action_close}, {"_NET_WM_STRUT", &net_wm_strut}, {"_NET_WM_STRUT_PARTIAL", &net_wm_strut_partial}, {"_NET_WM_ICON_GEOMETRY", &net_wm_icon_geometry}, {"_NET_WM_ICON", &net_wm_icon}, {"_NET_WM_PID", &net_wm_pid}, {"_NET_WM_HANDLED_ICONS", &net_wm_handled_icons}, {"_NET_WM_WINDOW_OPACITY", &net_wm_window_opacity}, {"_NET_FRAME_EXTENTS", &net_frame_extents}, {"_NET_WM_PING", &net_wm_ping}, {"UTF8_STRING", &utf8_string}, }; #define _NET_WM_STATE_ADD 1 #define _NET_WM_STATE_TOGGLE 2 #if 0 /* * These constant provide information on the kind of window move/resize when * it is initiated by the application instead of by WindowMaker. They are * parameter for the client message _NET_WM_MOVERESIZE, as defined by the * FreeDesktop wm-spec standard: * http://standards.freedesktop.org/wm-spec/1.5/ar01s04.html * * Today, WindowMaker does not support this at all (the corresponding Atom * is not added to the list in setSupportedHints), probably because there is * nothing it needs to do about it, the application is assumed to know what * it is doing, and WindowMaker won't get in the way. * * The definition of the constants (taken from the standard) are disabled to * avoid a spurious warning (-Wunused-macros). */ #define _NET_WM_MOVERESIZE_SIZE_TOPLEFT 0 #define _NET_WM_MOVERESIZE_SIZE_TOP 1 #define _NET_WM_MOVERESIZE_SIZE_TOPRIGHT 2 #define _NET_WM_MOVERESIZE_SIZE_RIGHT 3 #define _NET_WM_MOVERESIZE_SIZE_BOTTOMRIGHT 4 #define _NET_WM_MOVERESIZE_SIZE_BOTTOM 5 #define _NET_WM_MOVERESIZE_SIZE_BOTTOMLEFT 6 #define _NET_WM_MOVERESIZE_SIZE_LEFT 7 #define _NET_WM_MOVERESIZE_MOVE 8 /* movement only */ #define _NET_WM_MOVERESIZE_SIZE_KEYBOARD 9 /* size via keyboard */ #define _NET_WM_MOVERESIZE_MOVE_KEYBOARD 10 /* move via keyboard */ #endif static void observer(void *self, WMNotification *notif); static void wsobserver(void *self, WMNotification *notif); static void updateClientList(WScreen *scr); static void updateClientListStacking(WScreen *scr, WWindow *); static void updateWorkspaceNames(WScreen *scr); static void updateCurrentWorkspace(WScreen *scr); static void updateWorkspaceCount(WScreen *scr); static void wNETWMShowingDesktop(WScreen *scr, Bool show); typedef struct NetData { WScreen *scr; WReservedArea *strut; WWindow **show_desktop; } NetData; static void setSupportedHints(WScreen *scr) { Atom atom[wlengthof(atomNames)]; int i = 0; /* set supported hints list */ /* XXX: extend this !!! */ atom[i++] = net_client_list; atom[i++] = net_client_list_stacking; atom[i++] = net_number_of_desktops; atom[i++] = net_desktop_geometry; atom[i++] = net_desktop_viewport; atom[i++] = net_current_desktop; atom[i++] = net_desktop_names; atom[i++] = net_active_window; atom[i++] = net_workarea; atom[i++] = net_supporting_wm_check; atom[i++] = net_showing_desktop; #if 0 atom[i++] = net_wm_moveresize; #endif atom[i++] = net_wm_desktop; atom[i++] = net_wm_window_type; atom[i++] = net_wm_window_type_desktop; atom[i++] = net_wm_window_type_dock; atom[i++] = net_wm_window_type_toolbar; atom[i++] = net_wm_window_type_menu; atom[i++] = net_wm_window_type_utility; atom[i++] = net_wm_window_type_splash; atom[i++] = net_wm_window_type_dialog; atom[i++] = net_wm_window_type_dropdown_menu; atom[i++] = net_wm_window_type_popup_menu; atom[i++] = net_wm_window_type_tooltip; atom[i++] = net_wm_window_type_notification; atom[i++] = net_wm_window_type_combo; atom[i++] = net_wm_window_type_dnd; atom[i++] = net_wm_window_type_normal; atom[i++] = net_wm_state; /* atom[i++] = net_wm_state_modal; *//* XXX: not sure where/when to use it. */ atom[i++] = net_wm_state_sticky; atom[i++] = net_wm_state_shaded; atom[i++] = net_wm_state_maximized_horz; atom[i++] = net_wm_state_maximized_vert; atom[i++] = net_wm_state_skip_taskbar; atom[i++] = net_wm_state_skip_pager; atom[i++] = net_wm_state_hidden; atom[i++] = net_wm_state_fullscreen; atom[i++] = net_wm_state_above; atom[i++] = net_wm_state_below; atom[i++] = net_wm_allowed_actions; atom[i++] = net_wm_action_move; atom[i++] = net_wm_action_resize; atom[i++] = net_wm_action_minimize; atom[i++] = net_wm_action_shade; atom[i++] = net_wm_action_stick; atom[i++] = net_wm_action_maximize_horz; atom[i++] = net_wm_action_maximize_vert; atom[i++] = net_wm_action_fullscreen; atom[i++] = net_wm_action_change_desktop; atom[i++] = net_wm_action_close; atom[i++] = net_wm_strut; atom[i++] = net_wm_icon_geometry; atom[i++] = net_wm_icon; atom[i++] = net_wm_handled_icons; atom[i++] = net_wm_window_opacity; atom[i++] = net_frame_extents; atom[i++] = net_wm_name; atom[i++] = net_wm_icon_name; XChangeProperty(dpy, scr->root_win, net_supported, XA_ATOM, 32, PropModeReplace, (unsigned char *)atom, i); /* set supporting wm hint */ XChangeProperty(dpy, scr->root_win, net_supporting_wm_check, XA_WINDOW, 32, PropModeReplace, (unsigned char *)&scr->info_window, 1); XChangeProperty(dpy, scr->info_window, net_supporting_wm_check, XA_WINDOW, 32, PropModeReplace, (unsigned char *)&scr->info_window, 1); } void wNETWMUpdateDesktop(WScreen *scr) { long *views, sizes[2]; int count, i; if (scr->workspace_count == 0) return; count = scr->workspace_count * 2; views = wmalloc(sizeof(long) * count); sizes[0] = scr->scr_width; sizes[1] = scr->scr_height; for (i = 0; i < scr->workspace_count; i++) { views[2 * i + 0] = 0; views[2 * i + 1] = 0; } XChangeProperty(dpy, scr->root_win, net_desktop_geometry, XA_CARDINAL, 32, PropModeReplace, (unsigned char *)sizes, 2); XChangeProperty(dpy, scr->root_win, net_desktop_viewport, XA_CARDINAL, 32, PropModeReplace, (unsigned char *)views, count); wfree(views); } int wNETWMGetCurrentDesktopFromHint(WScreen *scr) { int count; unsigned char *prop; prop = PropGetCheckProperty(scr->root_win, net_current_desktop, XA_CARDINAL, 0, 1, &count); if (prop) { int desktop = *(long *)prop; XFree(prop); return desktop; } return -1; } static RImage *makeRImageFromARGBData(unsigned long *data) { int size, width, height, i; RImage *image; unsigned char *imgdata; unsigned long pixel; width = data[0]; height = data[1]; size = width * height; if (size == 0) return NULL; image = RCreateImage(width, height, True); for (imgdata = image->data, i = 2; i < size + 2; i++, imgdata += 4) { pixel = data[i]; imgdata[3] = (pixel >> 24) & 0xff; /* A */ imgdata[0] = (pixel >> 16) & 0xff; /* R */ imgdata[1] = (pixel >> 8) & 0xff; /* G */ imgdata[2] = (pixel >> 0) & 0xff; /* B */ } return image; } /* Find the best icon to be used by Window Maker for appicon/miniwindows. */ static RImage *findBestIcon(unsigned long *data, unsigned long items) { int wanted; int dx, dy, d; int sx, sy, size; int best_d, largest; unsigned long i; unsigned long *icon; RImage *src_image, *ret_image; double f; if (wPreferences.enforce_icon_margin) { /* better use only 75% of icon_size. For 64x64 this means 48x48 * This leaves room around the icon for the miniwindow title and * results in better overall aesthetics -Dan */ wanted = (int)((double)wPreferences.icon_size * 0.75 + 0.5); /* the size should be a multiple of 4 */ wanted = (wanted >> 2) << 2; } else { /* This is the "old" approach, which tries to find the largest * icon that still fits into icon_size. */ wanted = wPreferences.icon_size; } /* try to find an icon which is close to the wanted size, but not larger */ icon = NULL; best_d = wanted * wanted * 2; for (i = 0L; i < items - 1;) { /* get the current icon's size */ sx = (int)data[i]; sy = (int)data[i + 1]; if ((sx < 1) || (sy < 1)) break; size = sx * sy + 2; /* check the size difference if it's not too large */ if ((sx <= wanted) && (sy <= wanted)) { dx = wanted - sx; dy = wanted - sy; d = (dx * dx) + (dy * dy); if (d < best_d) { icon = &data[i]; best_d = d; } } i += size; } /* if an icon has been found, no transformation is needed */ if (icon) return makeRImageFromARGBData(icon); /* We need to scale down an icon. Find the largest one, for it usually * looks better to scale down a large image by a large scale than a * small image by a small scale. */ largest = 0; for (i = 0L; i < items - 1;) { size = (int)data[i] * (int)data[i + 1]; if (size == 0) break; if (size > largest) { icon = &data[i]; largest = size; } i += size + 2; } /* give up if there's no icon to work with */ if (!icon) return NULL; /* create a scaled down version of the icon */ src_image = makeRImageFromARGBData(icon); if (src_image->width > src_image->height) { f = (double)wanted / (double)src_image->width; ret_image = RScaleImage(src_image, wanted, (int)(f * (double)(src_image->height))); } else { f = (double)wanted / (double)src_image->height; ret_image = RScaleImage(src_image, (int)(f * (double)src_image->width), wanted); } RReleaseImage(src_image); return ret_image; } RImage *get_window_image_from_x11(Window window) { RImage *image; Atom type; int format; unsigned long items, rest; unsigned long *property; /* Get the icon from X11 Window */ if (XGetWindowProperty(dpy, window, net_wm_icon, 0L, LONG_MAX, False, XA_CARDINAL, &type, &format, &items, &rest, (unsigned char **)&property) != Success || !property) return NULL; if (type != XA_CARDINAL || format != 32 || items < 2) { XFree(property); return NULL; } /* Find the best icon */ image = findBestIcon(property, items); XFree(property); if (!image) return NULL; /* Resize the image to the correct value */ image = wIconValidateIconSize(image, wPreferences.icon_size); return image; } static void updateIconImage(WWindow *wwin) { /* Remove the icon image from X11 */ if (wwin->net_icon_image) RReleaseImage(wwin->net_icon_image); /* Save the icon in the X11 icon */ wwin->net_icon_image = get_window_image_from_x11(wwin->client_win); /* Refresh the Window Icon */ if (wwin->icon) wIconUpdate(wwin->icon); /* Refresh the application icon */ WApplication *app = wApplicationOf(wwin->main_window); if (app && app->app_icon) { wIconUpdate(app->app_icon->icon); wAppIconPaint(app->app_icon); } } static void updateWindowOpacity(WWindow *wwin) { Atom type; int format; unsigned long items, rest; unsigned long *property; if (!wwin->frame) return; /* We don't care about this ourselves, but other programs need us to copy * this to the frame window. */ if (XGetWindowProperty(dpy, wwin->client_win, net_wm_window_opacity, 0L, 1L, False, XA_CARDINAL, &type, &format, &items, &rest, (unsigned char **)&property) != Success) return; if (type == None) { XDeleteProperty(dpy, wwin->frame->core->window, net_wm_window_opacity); } else if (type == XA_CARDINAL && format == 32 && items == 1 && property) { XChangeProperty(dpy, wwin->frame->core->window, net_wm_window_opacity, XA_CARDINAL, 32, PropModeReplace, (unsigned char *)property, 1L); } if (property) XFree(property); } static void updateShowDesktop(WScreen *scr, Bool show) { long foo; foo = (show == True); XChangeProperty(dpy, scr->root_win, net_showing_desktop, XA_CARDINAL, 32, PropModeReplace, (unsigned char *)&foo, 1); } static void wNETWMShowingDesktop(WScreen *scr, Bool show) { if (show && scr->netdata->show_desktop == NULL) { WWindow *tmp, **wins; int i = 0; wins = (WWindow **) wmalloc(sizeof(WWindow *) * (scr->window_count + 1)); tmp = scr->focused_window; while (tmp) { if (!tmp->flags.hidden && !tmp->flags.miniaturized && !WFLAGP(tmp, skip_window_list)) { wins[i++] = tmp; tmp->flags.skip_next_animation = 1; tmp->flags.net_show_desktop = 1; wIconifyWindow(tmp); } tmp = tmp->prev; } wins[i++] = NULL; scr->netdata->show_desktop = wins; updateShowDesktop(scr, True); } else if (scr->netdata->show_desktop != NULL) { /* FIXME: get rid of workspace flashing ! */ int ws = scr->current_workspace; WWindow **tmp; for (tmp = scr->netdata->show_desktop; *tmp; ++tmp) { wDeiconifyWindow(*tmp); (*tmp)->flags.net_show_desktop = 0; } if (ws != scr->current_workspace) wWorkspaceChange(scr, ws); wfree(scr->netdata->show_desktop); scr->netdata->show_desktop = NULL; updateShowDesktop(scr, False); } } void wNETWMInitStuff(WScreen *scr) { NetData *data; int i; #ifdef DEBUG_WMSPEC wmessage("wNETWMInitStuff"); #endif #ifdef HAVE_XINTERNATOMS { Atom atoms[wlengthof(atomNames)]; char *names[wlengthof(atomNames)]; for (i = 0; i < wlengthof(atomNames); ++i) names[i] = atomNames[i].name; XInternAtoms(dpy, &names[0], wlengthof(atomNames), False, atoms); for (i = 0; i < wlengthof(atomNames); ++i) *atomNames[i].atom = atoms[i]; } #else for (i = 0; i < wlengthof(atomNames); i++) *atomNames[i].atom = XInternAtom(dpy, atomNames[i].name, False); #endif data = wmalloc(sizeof(NetData)); data->scr = scr; data->strut = NULL; data->show_desktop = NULL; scr->netdata = data; setSupportedHints(scr); WMAddNotificationObserver(observer, data, WMNManaged, NULL); WMAddNotificationObserver(observer, data, WMNUnmanaged, NULL); WMAddNotificationObserver(observer, data, WMNChangedWorkspace, NULL); WMAddNotificationObserver(observer, data, WMNChangedState, NULL); WMAddNotificationObserver(observer, data, WMNChangedFocus, NULL); WMAddNotificationObserver(observer, data, WMNChangedStacking, NULL); WMAddNotificationObserver(observer, data, WMNChangedName, NULL); WMAddNotificationObserver(wsobserver, data, WMNWorkspaceCreated, NULL); WMAddNotificationObserver(wsobserver, data, WMNWorkspaceDestroyed, NULL); WMAddNotificationObserver(wsobserver, data, WMNWorkspaceChanged, NULL); WMAddNotificationObserver(wsobserver, data, WMNWorkspaceNameChanged, NULL); updateClientList(scr); updateClientListStacking(scr, NULL); updateWorkspaceCount(scr); updateWorkspaceNames(scr); updateShowDesktop(scr, False); wScreenUpdateUsableArea(scr); } void wNETWMCleanup(WScreen *scr) { int i; for (i = 0; i < wlengthof(atomNames); i++) XDeleteProperty(dpy, scr->root_win, *atomNames[i].atom); } void wNETWMUpdateActions(WWindow *wwin, Bool del) { Atom action[10]; /* nr of actions atoms defined */ int i = 0; if (del) { XDeleteProperty(dpy, wwin->client_win, net_wm_allowed_actions); return; } if (IS_MOVABLE(wwin)) action[i++] = net_wm_action_move; if (IS_RESIZABLE(wwin)) action[i++] = net_wm_action_resize; if (!WFLAGP(wwin, no_miniaturizable)) action[i++] = net_wm_action_minimize; if (!WFLAGP(wwin, no_shadeable)) action[i++] = net_wm_action_shade; /* if (!WFLAGP(wwin, no_stickable)) */ action[i++] = net_wm_action_stick; /* if (!(WFLAGP(wwin, no_maximizeable) & MAX_HORIZONTAL)) */ if (IS_RESIZABLE(wwin)) action[i++] = net_wm_action_maximize_horz; /* if (!(WFLAGP(wwin, no_maximizeable) & MAX_VERTICAL)) */ if (IS_RESIZABLE(wwin)) action[i++] = net_wm_action_maximize_vert; /* if (!WFLAGP(wwin, no_fullscreen)) */ action[i++] = net_wm_action_fullscreen; /* if (!WFLAGP(wwin, no_change_desktop)) */ action[i++] = net_wm_action_change_desktop; if (!WFLAGP(wwin, no_closable)) action[i++] = net_wm_action_close; XChangeProperty(dpy, wwin->client_win, net_wm_allowed_actions, XA_ATOM, 32, PropModeReplace, (unsigned char *)action, i); } void wNETWMUpdateWorkarea(WScreen *scr) { WArea total_usable; int nb_workspace; if (!scr->netdata) { /* If the _NET_xxx were not initialised, it not necessary to do anything */ return; } if (!scr->usableArea) { /* If we don't have any info, we fall back on using the complete screen area */ total_usable.x1 = 0; total_usable.y1 = 0; total_usable.x2 = scr->scr_width; total_usable.y2 = scr->scr_height; } else { int i; /* * the _NET_WORKAREA is supposed to contain the total area of the screen that * is usable, so we merge the areas from all xrandr sub-screens */ total_usable = scr->usableArea[0]; for (i = 1; i < wXineramaHeads(scr); i++) { /* The merge is not subtle because _NET_WORKAREA does not need more */ if (scr->usableArea[i].x1 < total_usable.x1) total_usable.x1 = scr->usableArea[i].x1; if (scr->usableArea[i].y1 < total_usable.y1) total_usable.y1 = scr->usableArea[i].y1; if (scr->usableArea[i].x2 > total_usable.x2) total_usable.x2 = scr->usableArea[i].x2; if (scr->usableArea[i].y2 > total_usable.y2) total_usable.y2 = scr->usableArea[i].y2; } } /* We are expected to repeat the information for each workspace */ if (scr->workspace_count == 0) nb_workspace = 1; else nb_workspace = scr->workspace_count; { long property_value[nb_workspace * 4]; int i; for (i = 0; i < nb_workspace; i++) { property_value[4 * i + 0] = total_usable.x1; property_value[4 * i + 1] = total_usable.y1; property_value[4 * i + 2] = total_usable.x2 - total_usable.x1; property_value[4 * i + 3] = total_usable.y2 - total_usable.y1; } XChangeProperty(dpy, scr->root_win, net_workarea, XA_CARDINAL, 32, PropModeReplace, (unsigned char *) property_value, nb_workspace * 4); } } Bool wNETWMGetUsableArea(WScreen *scr, int head, WArea *area) { WReservedArea *cur; WMRect rect; if (!scr->netdata || !scr->netdata->strut) return False; area->x1 = area->y1 = area->x2 = area->y2 = 0; for (cur = scr->netdata->strut; cur; cur = cur->next) { WWindow *wwin = wWindowFor(cur->window); if (wWindowTouchesHead(wwin, head)) { if (cur->area.x1 > area->x1) area->x1 = cur->area.x1; if (cur->area.y1 > area->y1) area->y1 = cur->area.y1; if (cur->area.x2 > area->x2) area->x2 = cur->area.x2; if (cur->area.y2 > area->y2) area->y2 = cur->area.y2; } } if (area->x1 == 0 && area->x2 == 0 && area->y1 == 0 && area->y2 == 0) return False; rect = wGetRectForHead(scr, head); area->x1 = rect.pos.x + area->x1; area->x2 = rect.pos.x + rect.size.width - area->x2; area->y1 = rect.pos.y + area->y1; area->y2 = rect.pos.y + rect.size.height - area->y2; return True; } static void updateClientList(WScreen *scr) { WWindow *wwin; Window *windows; int count; windows = (Window *) wmalloc(sizeof(Window) * (scr->window_count + 1)); count = 0; wwin = scr->focused_window; while (wwin) { windows[count++] = wwin->client_win; wwin = wwin->prev; } XChangeProperty(dpy, scr->root_win, net_client_list, XA_WINDOW, 32, PropModeReplace, (unsigned char *)windows, count); wfree(windows); XFlush(dpy); } static void updateClientListStacking(WScreen *scr, WWindow *wwin_excl) { WWindow *wwin; Window *client_list, *client_list_reverse; int client_count, i; WCoreWindow *tmp; WMBagIterator iter; /* update client list */ i = scr->window_count + 1; client_list = (Window *) wmalloc(sizeof(Window) * i); client_list_reverse = (Window *) wmalloc(sizeof(Window) * i); client_count = 0; WM_ETARETI_BAG(scr->stacking_list, tmp, iter) { while (tmp) { wwin = wWindowFor(tmp->window); /* wwin_excl is a window to exclude from the list (e.g. it's now unmanaged) */ if (wwin && (wwin != wwin_excl)) client_list[client_count++] = wwin->client_win; tmp = tmp->stacking->under; } } for (i = 0; i < client_count; i++) { Window w = client_list[client_count - i - 1]; client_list_reverse[i] = w; } XChangeProperty(dpy, scr->root_win, net_client_list_stacking, XA_WINDOW, 32, PropModeReplace, (unsigned char *)client_list_reverse, client_count); wfree(client_list); wfree(client_list_reverse); XFlush(dpy); } static void updateWorkspaceCount(WScreen *scr) { /* changeable */ long count; count = scr->workspace_count; XChangeProperty(dpy, scr->root_win, net_number_of_desktops, XA_CARDINAL, 32, PropModeReplace, (unsigned char *)&count, 1); } static void updateCurrentWorkspace(WScreen *scr) { /* changeable */ long count; count = scr->current_workspace; XChangeProperty(dpy, scr->root_win, net_current_desktop, XA_CARDINAL, 32, PropModeReplace, (unsigned char *)&count, 1); } static void updateWorkspaceNames(WScreen *scr) { char buf[MAX_WORKSPACES * (MAX_WORKSPACENAME_WIDTH + 1)], *pos; unsigned int i, len, curr_size; pos = buf; len = 0; for (i = 0; i < scr->workspace_count; i++) { curr_size = strlen(scr->workspaces[i]->name); strcpy(pos, scr->workspaces[i]->name); pos += (curr_size + 1); len += (curr_size + 1); } XChangeProperty(dpy, scr->root_win, net_desktop_names, utf8_string, 8, PropModeReplace, (unsigned char *)buf, len); } static void updateFocusHint(WScreen *scr) { /* changeable */ Window window; if (!scr->focused_window || !scr->focused_window->flags.focused) window = None; else window = scr->focused_window->client_win; XChangeProperty(dpy, scr->root_win, net_active_window, XA_WINDOW, 32, PropModeReplace, (unsigned char *)&window, 1); } static void updateWorkspaceHint(WWindow *wwin, Bool fake, Bool del) { long l; if (del) { XDeleteProperty(dpy, wwin->client_win, net_wm_desktop); } else { l = ((fake || IS_OMNIPRESENT(wwin)) ? -1 : wwin->frame->workspace); XChangeProperty(dpy, wwin->client_win, net_wm_desktop, XA_CARDINAL, 32, PropModeReplace, (unsigned char *)&l, 1); } } static void updateStateHint(WWindow *wwin, Bool changedWorkspace, Bool del) { /* changeable */ if (del) { XDeleteProperty(dpy, wwin->client_win, net_wm_state); } else { Atom state[15]; /* nr of defined state atoms */ int i = 0; if (changedWorkspace || (wPreferences.sticky_icons && !IS_OMNIPRESENT(wwin))) updateWorkspaceHint(wwin, False, False); if (IS_OMNIPRESENT(wwin)) state[i++] = net_wm_state_sticky; if (wwin->flags.shaded) state[i++] = net_wm_state_shaded; if (wwin->flags.maximized & MAX_HORIZONTAL) state[i++] = net_wm_state_maximized_horz; if (wwin->flags.maximized & MAX_VERTICAL) state[i++] = net_wm_state_maximized_vert; if (WFLAGP(wwin, skip_window_list)) state[i++] = net_wm_state_skip_taskbar; if (wwin->flags.net_skip_pager) state[i++] = net_wm_state_skip_pager; if ((wwin->flags.hidden || wwin->flags.miniaturized) && !wwin->flags.net_show_desktop) { state[i++] = net_wm_state_hidden; state[i++] = net_wm_state_skip_pager; if (wwin->flags.miniaturized && wPreferences.sticky_icons) { if (!IS_OMNIPRESENT(wwin)) updateWorkspaceHint(wwin, True, False); state[i++] = net_wm_state_sticky; } } if (WFLAGP(wwin, sunken)) state[i++] = net_wm_state_below; if (WFLAGP(wwin, floating)) state[i++] = net_wm_state_above; if (wwin->flags.fullscreen) state[i++] = net_wm_state_fullscreen; XChangeProperty(dpy, wwin->client_win, net_wm_state, XA_ATOM, 32, PropModeReplace, (unsigned char *)state, i); } } static Bool updateStrut(WScreen *scr, Window w, Bool adding) { WReservedArea *area; Bool hasState = False; if (adding) { Atom type_ret; int fmt_ret; unsigned long nitems_ret, bytes_after_ret; long *data = NULL; if ((XGetWindowProperty(dpy, w, net_wm_strut, 0, 4, False, XA_CARDINAL, &type_ret, &fmt_ret, &nitems_ret, &bytes_after_ret, (unsigned char **)&data) == Success && data) || ((XGetWindowProperty(dpy, w, net_wm_strut_partial, 0, 12, False, XA_CARDINAL, &type_ret, &fmt_ret, &nitems_ret, &bytes_after_ret, (unsigned char **)&data) == Success && data))) { /* XXX: This is strictly incorrect in the case of net_wm_strut_partial... * Discard the start and end properties from the partial strut and treat it as * a (deprecated) strut. * This means we are marking the whole width or height of the screen as * reserved, which is not necessarily what the strut defines. However for the * purposes of determining placement or maximization it's probably good enough. */ area = (WReservedArea *) wmalloc(sizeof(WReservedArea)); area->area.x1 = data[0]; area->area.x2 = data[1]; area->area.y1 = data[2]; area->area.y2 = data[3]; area->window = w; area->next = scr->netdata->strut; scr->netdata->strut = area; XFree(data); hasState = True; } } else { /* deleting */ area = scr->netdata->strut; if (area) { if (area->window == w) { scr->netdata->strut = area->next; wfree(area); hasState = True; } else { while (area->next && area->next->window != w) area = area->next; if (area->next) { WReservedArea *next; next = area->next->next; wfree(area->next); area->next = next; hasState = True; } } } } return hasState; } static int getWindowLayer(WWindow *wwin) { int layer = WMNormalLevel; if (wwin->type == net_wm_window_type_desktop) { layer = WMDesktopLevel; } else if (wwin->type == net_wm_window_type_dock) { layer = WMDockLevel; } else if (wwin->type == net_wm_window_type_toolbar) { layer = WMMainMenuLevel; } else if (wwin->type == net_wm_window_type_menu) { layer = WMSubmenuLevel; } else if (wwin->type == net_wm_window_type_utility) { } else if (wwin->type == net_wm_window_type_splash) { } else if (wwin->type == net_wm_window_type_dialog) { if (wwin->transient_for) { WWindow *parent = wWindowFor(wwin->transient_for); if (parent && parent->flags.fullscreen) layer = WMFullscreenLevel; } /* //layer = WMPopUpLevel; // this seems a bad idea -Dan */ } else if (wwin->type == net_wm_window_type_dropdown_menu) { layer = WMSubmenuLevel; } else if (wwin->type == net_wm_window_type_popup_menu) { layer = WMSubmenuLevel; } else if (wwin->type == net_wm_window_type_tooltip) { } else if (wwin->type == net_wm_window_type_notification) { layer = WMPopUpLevel; } else if (wwin->type == net_wm_window_type_combo) { layer = WMSubmenuLevel; } else if (wwin->type == net_wm_window_type_dnd) { } else if (wwin->type == net_wm_window_type_normal) { } if (wwin->client_flags.sunken && WMSunkenLevel < layer) layer = WMSunkenLevel; if (wwin->client_flags.floating && WMFloatingLevel > layer) layer = WMFloatingLevel; return layer; } static void doStateAtom(WWindow *wwin, Atom state, int set, Bool init) { if (state == net_wm_state_sticky) { if (set == _NET_WM_STATE_TOGGLE) set = !IS_OMNIPRESENT(wwin); if (set != wwin->flags.omnipresent) wWindowSetOmnipresent(wwin, set); } else if (state == net_wm_state_shaded) { if (set == _NET_WM_STATE_TOGGLE) set = !wwin->flags.shaded; if (init) { wwin->flags.shaded = set; } else { if (set) wShadeWindow(wwin); else wUnshadeWindow(wwin); } } else if (state == net_wm_state_skip_taskbar) { if (set == _NET_WM_STATE_TOGGLE) set = !wwin->client_flags.skip_window_list; wwin->client_flags.skip_window_list = set; } else if (state == net_wm_state_skip_pager) { if (set == _NET_WM_STATE_TOGGLE) set = !wwin->flags.net_skip_pager; wwin->flags.net_skip_pager = set; } else if (state == net_wm_state_maximized_vert) { if (set == _NET_WM_STATE_TOGGLE) set = !(wwin->flags.maximized & MAX_VERTICAL); if (init) { wwin->flags.maximized |= (set ? MAX_VERTICAL : 0); } else { if (set) wMaximizeWindow(wwin, wwin->flags.maximized | MAX_VERTICAL, wGetHeadForWindow(wwin)); else wMaximizeWindow(wwin, wwin->flags.maximized & ~MAX_VERTICAL, wGetHeadForWindow(wwin)); } } else if (state == net_wm_state_maximized_horz) { if (set == _NET_WM_STATE_TOGGLE) set = !(wwin->flags.maximized & MAX_HORIZONTAL); if (init) { wwin->flags.maximized |= (set ? MAX_HORIZONTAL : 0); } else { if (set) wMaximizeWindow(wwin, wwin->flags.maximized | MAX_HORIZONTAL, wGetHeadForWindow(wwin)); else wMaximizeWindow(wwin, wwin->flags.maximized & ~MAX_HORIZONTAL, wGetHeadForWindow(wwin)); } } else if (state == net_wm_state_hidden) { if (set == _NET_WM_STATE_TOGGLE) set = !(wwin->flags.miniaturized); if (init) { wwin->flags.miniaturized = set; } else { if (set) wIconifyWindow(wwin); else wDeiconifyWindow(wwin); } } else if (state == net_wm_state_fullscreen) { if (set == _NET_WM_STATE_TOGGLE) set = !(wwin->flags.fullscreen); if (init) { wwin->flags.fullscreen = set; } else { if (set) wFullscreenWindow(wwin); else wUnfullscreenWindow(wwin); } } else if (state == net_wm_state_above) { if (set == _NET_WM_STATE_TOGGLE) set = !(wwin->client_flags.floating); if (init) { wwin->client_flags.floating = set; } else { wwin->client_flags.floating = set; ChangeStackingLevel(wwin->frame->core, getWindowLayer(wwin)); } } else if (state == net_wm_state_below) { if (set == _NET_WM_STATE_TOGGLE) set = !(wwin->client_flags.sunken); if (init) { wwin->client_flags.sunken = set; } else { wwin->client_flags.sunken = set; ChangeStackingLevel(wwin->frame->core, getWindowLayer(wwin)); } } else { #ifdef DEBUG_WMSPEC wmessage("doStateAtom unknown atom %s set %d", XGetAtomName(dpy, state), set); #endif } } static void removeIcon(WWindow *wwin) { if (wwin->icon == NULL) return; if (wwin->flags.miniaturized && wwin->icon->mapped) { XUnmapWindow(dpy, wwin->icon->core->window); RemoveFromStackList(wwin->icon->core); wIconDestroy(wwin->icon); wwin->icon = NULL; } } static Bool handleWindowType(WWindow *wwin, Atom type, int *layer) { Bool ret = True; if (type == net_wm_window_type_desktop) { wwin->client_flags.no_titlebar = 1; wwin->client_flags.no_resizable = 1; wwin->client_flags.no_miniaturizable = 1; wwin->client_flags.no_border = 1; wwin->client_flags.no_resizebar = 1; wwin->client_flags.no_shadeable = 1; wwin->client_flags.no_movable = 1; wwin->client_flags.omnipresent = 1; wwin->client_flags.skip_window_list = 1; wwin->client_flags.skip_switchpanel = 1; wwin->client_flags.dont_move_off = 1; wwin->client_flags.no_appicon = 1; wwin->flags.net_skip_pager = 1; wwin->frame_x = 0; wwin->frame_y = 0; } else if (type == net_wm_window_type_dock) { wwin->client_flags.no_titlebar = 1; wwin->client_flags.no_resizable = 1; wwin->client_flags.no_miniaturizable = 1; wwin->client_flags.no_border = 1; /* XXX: really not a single decoration. */ wwin->client_flags.no_resizebar = 1; wwin->client_flags.no_shadeable = 1; wwin->client_flags.no_movable = 1; wwin->client_flags.omnipresent = 1; wwin->client_flags.skip_window_list = 1; wwin->client_flags.skip_switchpanel = 1; wwin->client_flags.dont_move_off = 1; wwin->flags.net_skip_pager = 1; } else if (type == net_wm_window_type_toolbar || type == net_wm_window_type_menu) { wwin->client_flags.no_resizable = 1; wwin->client_flags.no_miniaturizable = 1; wwin->client_flags.no_resizebar = 1; wwin->client_flags.no_shadeable = 1; wwin->client_flags.skip_window_list = 1; wwin->client_flags.skip_switchpanel = 1; wwin->client_flags.dont_move_off = 1; wwin->client_flags.no_appicon = 1; } else if (type == net_wm_window_type_dropdown_menu || type == net_wm_window_type_popup_menu || type == net_wm_window_type_combo) { wwin->client_flags.no_titlebar = 1; wwin->client_flags.no_resizable = 1; wwin->client_flags.no_miniaturizable = 1; wwin->client_flags.no_resizebar = 1; wwin->client_flags.no_shadeable = 1; wwin->client_flags.skip_window_list = 1; wwin->client_flags.skip_switchpanel = 1; wwin->client_flags.dont_move_off = 1; wwin->client_flags.no_appicon = 1; } else if (type == net_wm_window_type_utility) { wwin->client_flags.no_appicon = 1; } else if (type == net_wm_window_type_splash) { wwin->client_flags.no_titlebar = 1; wwin->client_flags.no_resizable = 1; wwin->client_flags.no_miniaturizable = 1; wwin->client_flags.no_resizebar = 1; wwin->client_flags.no_shadeable = 1; wwin->client_flags.no_movable = 1; wwin->client_flags.skip_window_list = 1; wwin->client_flags.skip_switchpanel = 1; wwin->client_flags.dont_move_off = 1; wwin->client_flags.no_appicon = 1; wwin->flags.net_skip_pager = 1; } else if (type == net_wm_window_type_dialog) { /* These also seem a bad idea in our context -Dan // wwin->client_flags.skip_window_list = 1; // wwin->client_flags.no_appicon = 1; */ } else if (wwin->type == net_wm_window_type_tooltip) { wwin->client_flags.no_titlebar = 1; wwin->client_flags.no_resizable = 1; wwin->client_flags.no_miniaturizable = 1; wwin->client_flags.no_resizebar = 1; wwin->client_flags.no_shadeable = 1; wwin->client_flags.no_movable = 1; wwin->client_flags.skip_window_list = 1; wwin->client_flags.skip_switchpanel = 1; wwin->client_flags.dont_move_off = 1; wwin->client_flags.no_appicon = 1; wwin->client_flags.no_focusable = 1; wwin->flags.net_skip_pager = 1; } else if (wwin->type == net_wm_window_type_notification) { wwin->client_flags.no_titlebar = 1; wwin->client_flags.no_resizable = 1; wwin->client_flags.no_miniaturizable = 1; wwin->client_flags.no_border = 1; wwin->client_flags.no_resizebar = 1; wwin->client_flags.no_shadeable = 1; wwin->client_flags.no_movable = 1; wwin->client_flags.omnipresent = 1; wwin->client_flags.skip_window_list = 1; wwin->client_flags.skip_switchpanel = 1; wwin->client_flags.dont_move_off = 1; wwin->client_flags.no_hide_others= 1; wwin->client_flags.no_appicon = 1; wwin->client_flags.no_focusable = 1; wwin->flags.net_skip_pager = 1; } else if (wwin->type == net_wm_window_type_dnd) { wwin->client_flags.no_titlebar = 1; wwin->client_flags.no_resizable = 1; wwin->client_flags.no_miniaturizable = 1; wwin->client_flags.no_border = 1; wwin->client_flags.no_resizebar = 1; wwin->client_flags.no_shadeable = 1; wwin->client_flags.no_movable = 1; wwin->client_flags.skip_window_list = 1; wwin->client_flags.skip_switchpanel = 1; wwin->client_flags.dont_move_off = 1; wwin->client_flags.no_appicon = 1; wwin->flags.net_skip_pager = 1; } else if (type == net_wm_window_type_normal) { } else { ret = False; } /* Restore decoration if the user has enabled the * IgnoreDecorationChanges option */ if (WFLAGP(wwin, ignore_decoration_changes)) { wwin->client_flags.no_titlebar = 0; wwin->client_flags.no_resizable = 0; wwin->client_flags.no_miniaturizable = 0; wwin->client_flags.no_resizebar = 0; wwin->client_flags.no_border = 0; wwin->client_flags.no_movable = 0; } wwin->type = type; *layer = getWindowLayer(wwin); return ret; } void wNETWMPositionSplash(WWindow *wwin, int *x, int *y, int width, int height) { if (wwin->type == net_wm_window_type_splash) { WScreen *scr = wwin->screen_ptr; WMRect rect = wGetRectForHead(scr, wGetHeadForPointerLocation(scr)); *x = rect.pos.x + (rect.size.width - width) / 2; *y = rect.pos.y + (rect.size.height - height) / 2; } } static void updateWindowType(WWindow *wwin) { Atom type_ret; int fmt_ret, layer; unsigned long nitems_ret, bytes_after_ret; long *data = NULL; if (XGetWindowProperty(dpy, wwin->client_win, net_wm_window_type, 0, 1, False, XA_ATOM, &type_ret, &fmt_ret, &nitems_ret, &bytes_after_ret, (unsigned char **)&data) == Success && data) { int i; Atom *type = (Atom *) data; for (i = 0; i < nitems_ret; ++i) { if (handleWindowType(wwin, type[i], &layer)) break; } XFree(data); } if (wwin->frame != NULL) { ChangeStackingLevel(wwin->frame->core, layer); wwin->frame->flags.need_texture_change = 1; wWindowConfigureBorders(wwin); wFrameWindowPaint(wwin->frame); wNETWMUpdateActions(wwin, False); } } void wNETWMCheckClientHints(WWindow *wwin, int *layer, int *workspace) { Atom type_ret; int fmt_ret, i; unsigned long nitems_ret, bytes_after_ret; long *data = NULL; if (XGetWindowProperty(dpy, wwin->client_win, net_wm_desktop, 0, 1, False, XA_CARDINAL, &type_ret, &fmt_ret, &nitems_ret, &bytes_after_ret, (unsigned char **)&data) == Success && data) { long desktop = *data; XFree(data); if (desktop == -1) wwin->client_flags.omnipresent = 1; else *workspace = desktop; } if (XGetWindowProperty(dpy, wwin->client_win, net_wm_state, 0, 1, False, XA_ATOM, &type_ret, &fmt_ret, &nitems_ret, &bytes_after_ret, (unsigned char **)&data) == Success && data) { Atom *state = (Atom *) data; for (i = 0; i < nitems_ret; ++i) doStateAtom(wwin, state[i], _NET_WM_STATE_ADD, True); XFree(data); } if (XGetWindowProperty(dpy, wwin->client_win, net_wm_window_type, 0, 1, False, XA_ATOM, &type_ret, &fmt_ret, &nitems_ret, &bytes_after_ret, (unsigned char **)&data) == Success && data) { Atom *type = (Atom *) data; for (i = 0; i < nitems_ret; ++i) { if (handleWindowType(wwin, type[i], layer)) break; } XFree(data); } wNETWMUpdateActions(wwin, False); updateStrut(wwin->screen_ptr, wwin->client_win, False); updateStrut(wwin->screen_ptr, wwin->client_win, True); wScreenUpdateUsableArea(wwin->screen_ptr); } static Bool updateNetIconInfo(WWindow *wwin) { Atom type_ret; int fmt_ret; unsigned long nitems_ret, bytes_after_ret; long *data = NULL; Bool hasState = False; Bool old_state = wwin->flags.net_handle_icon; if (XGetWindowProperty(dpy, wwin->client_win, net_wm_handled_icons, 0, 1, False, XA_CARDINAL, &type_ret, &fmt_ret, &nitems_ret, &bytes_after_ret, (unsigned char **)&data) == Success && data) { long handled = *data; wwin->flags.net_handle_icon = (handled != 0); XFree(data); hasState = True; } else { wwin->flags.net_handle_icon = False; } if (XGetWindowProperty(dpy, wwin->client_win, net_wm_icon_geometry, 0, 4, False, XA_CARDINAL, &type_ret, &fmt_ret, &nitems_ret, &bytes_after_ret, (unsigned char **)&data) == Success && data) { #ifdef NETWM_PROPER if (wwin->flags.net_handle_icon) #else wwin->flags.net_handle_icon = True; #endif { wwin->icon_x = data[0]; wwin->icon_y = data[1]; wwin->icon_w = data[2]; wwin->icon_h = data[3]; } XFree(data); hasState = True; } else { wwin->flags.net_handle_icon = False; } if (wwin->flags.miniaturized && old_state != wwin->flags.net_handle_icon) { if (wwin->flags.net_handle_icon) { removeIcon(wwin); } else { wwin->flags.miniaturized = False; wwin->flags.skip_next_animation = True; wIconifyWindow(wwin); } } return hasState; } void wNETWMCheckInitialClientState(WWindow *wwin) { #ifdef DEBUG_WMSPEC wmessage("wNETWMCheckInitialClientState"); #endif wNETWMShowingDesktop(wwin->screen_ptr, False); updateWindowType(wwin); updateNetIconInfo(wwin); updateIconImage(wwin); } void wNETWMCheckInitialFrameState(WWindow *wwin) { #ifdef DEBUG_WMSPEC wmessage("wNETWMCheckInitialFrameState"); #endif updateWindowOpacity(wwin); } static void handleDesktopNames(WScreen *scr) { unsigned long nitems_ret, bytes_after_ret; char *data, *names[32]; int fmt_ret, i, n; Atom type_ret; if (XGetWindowProperty(dpy, scr->root_win, net_desktop_names, 0, 1, False, utf8_string, &type_ret, &fmt_ret, &nitems_ret, &bytes_after_ret, (unsigned char **)&data) != Success) return; if (data == NULL) return; if (type_ret != utf8_string || fmt_ret != 8) return; n = 0; names[n] = data; for (i = 0; i < nitems_ret; i++) { if (data[i] == 0) { n++; names[n] = &data[i]; } else if (*names[n] == 0) { names[n] = &data[i]; wWorkspaceRename(scr, n, names[n]); } } } Bool wNETWMProcessClientMessage(XClientMessageEvent *event) { WScreen *scr; WWindow *wwin; #ifdef DEBUG_WMSPEC wmessage("processClientMessage type %s", XGetAtomName(dpy, event->message_type)); #endif scr = wScreenForWindow(event->window); if (scr) { /* generic client messages */ if (event->message_type == net_current_desktop) { wWorkspaceChange(scr, event->data.l[0]); return True; } else if (event->message_type == net_number_of_desktops) { long value; value = event->data.l[0]; if (value > scr->workspace_count) { wWorkspaceMake(scr, value - scr->workspace_count); } else if (value < scr->workspace_count) { int i; Bool rebuild = False; for (i = scr->workspace_count - 1; i >= value; i--) { if (!wWorkspaceDelete(scr, i)) { rebuild = True; break; } } if (rebuild) updateWorkspaceCount(scr); } return True; } else if (event->message_type == net_showing_desktop) { wNETWMShowingDesktop(scr, event->data.l[0]); return True; } else if (event->message_type == net_desktop_names) { handleDesktopNames(scr); return True; } } /* window specific client messages */ wwin = wWindowFor(event->window); if (!wwin) return False; if (event->message_type == net_active_window) { /* * Satisfy a client's focus request only if * - request comes from a pager, or * - it's explicitly allowed in Advanced Options, or * - giving the client the focus does not cause a change in * the active workspace (XXX: or the active head if Xinerama) */ if (wwin->frame->workspace == wwin->screen_ptr->current_workspace /* No workspace change */ || event->data.l[0] == 2 /* Requested by pager */ || WFLAGP(wwin, focus_across_wksp) /* Explicitly allowed */) { wNETWMShowingDesktop(scr, False); wMakeWindowVisible(wwin); } return True; } else if (event->message_type == net_close_window) { if (!WFLAGP(wwin, no_closable)) { if (wwin->protocols.DELETE_WINDOW) wClientSendProtocol(wwin, w_global.atom.wm.delete_window, w_global.timestamp.last_event); } return True; } else if (event->message_type == net_wm_state) { int maximized = wwin->flags.maximized; long set = event->data.l[0]; #ifdef DEBUG_WMSPEC wmessage("net_wm_state set %ld a1 %s a2 %s", set, XGetAtomName(dpy, event->data.l[1]), XGetAtomName(dpy, event->data.l[2])); #endif doStateAtom(wwin, (Atom) event->data.l[1], set, False); if (event->data.l[2]) doStateAtom(wwin, (Atom) event->data.l[2], set, False); if (wwin->flags.maximized != maximized) { if (!wwin->flags.maximized) { wwin->flags.maximized = maximized; wUnmaximizeWindow(wwin); } else { wMaximizeWindow(wwin, wwin->flags.maximized, wGetHeadForWindow(wwin)); } } updateStateHint(wwin, False, False); return True; } else if (event->message_type == net_wm_handled_icons || event->message_type == net_wm_icon_geometry) { updateNetIconInfo(wwin); return True; } else if (event->message_type == net_wm_desktop) { long desktop = event->data.l[0]; if (desktop == -1) { wWindowSetOmnipresent(wwin, True); } else { if (IS_OMNIPRESENT(wwin)) wWindowSetOmnipresent(wwin, False); wWindowChangeWorkspace(wwin, desktop); } return True; } return False; } void wNETWMCheckClientHintChange(WWindow *wwin, XPropertyEvent *event) { #ifdef DEBUG_WMSPEC wmessage("clientHintChange type %s", XGetAtomName(dpy, event->atom)); #endif if (event->atom == net_wm_strut || event->atom == net_wm_strut_partial) { updateStrut(wwin->screen_ptr, wwin->client_win, False); updateStrut(wwin->screen_ptr, wwin->client_win, True); wScreenUpdateUsableArea(wwin->screen_ptr); } else if (event->atom == net_wm_handled_icons || event->atom == net_wm_icon_geometry) { updateNetIconInfo(wwin); } else if (event->atom == net_wm_window_type) { updateWindowType(wwin); } else if (event->atom == net_wm_name) { char *name = wNETWMGetWindowName(wwin->client_win); wWindowUpdateName(wwin, name); if (name) wfree(name); } else if (event->atom == net_wm_icon_name) { if (wwin->icon) { wIconChangeTitle(wwin->icon, wwin); wIconPaint(wwin->icon); } } else if (event->atom == net_wm_icon) { updateIconImage(wwin); } else if (event->atom == net_wm_window_opacity) { updateWindowOpacity(wwin); } } int wNETWMGetPidForWindow(Window window) { Atom type_ret; int fmt_ret; unsigned long nitems_ret, bytes_after_ret; long *data = NULL; int pid; if (XGetWindowProperty(dpy, window, net_wm_pid, 0, 1, False, XA_CARDINAL, &type_ret, &fmt_ret, &nitems_ret, &bytes_after_ret, (unsigned char **)&data) == Success && data) { pid = *data; XFree(data); } else { pid = 0; } return pid; } char *wNETWMGetWindowName(Window window) { char *name; char *ret; int size; name = (char *)PropGetCheckProperty(window, net_wm_name, utf8_string, 0, 0, &size); if (name) { ret = wstrndup(name, size); XFree(name); } else { ret = NULL; } return ret; } char *wNETWMGetIconName(Window window) { char *name; char *ret; int size; name = (char *)PropGetCheckProperty(window, net_wm_icon_name, utf8_string, 0, 0, &size); if (name) { ret = wstrndup(name, size); XFree(name); } else { ret = NULL; } return ret; } static void observer(void *self, WMNotification *notif) { WWindow *wwin = (WWindow *) WMGetNotificationObject(notif); const char *name = WMGetNotificationName(notif); void *data = WMGetNotificationClientData(notif); NetData *ndata = (NetData *) self; if (strcmp(name, WMNManaged) == 0 && wwin) { updateClientList(wwin->screen_ptr); updateClientListStacking(wwin->screen_ptr, NULL); updateStateHint(wwin, True, False); updateStrut(wwin->screen_ptr, wwin->client_win, False); updateStrut(wwin->screen_ptr, wwin->client_win, True); wScreenUpdateUsableArea(wwin->screen_ptr); } else if (strcmp(name, WMNUnmanaged) == 0 && wwin) { updateClientList(wwin->screen_ptr); updateClientListStacking(wwin->screen_ptr, wwin); updateWorkspaceHint(wwin, False, True); updateStateHint(wwin, False, True); wNETWMUpdateActions(wwin, True); updateStrut(wwin->screen_ptr, wwin->client_win, False); wScreenUpdateUsableArea(wwin->screen_ptr); } else if (strcmp(name, WMNResetStacking) == 0 && wwin) { updateClientListStacking(wwin->screen_ptr, NULL); updateStateHint(wwin, False, False); } else if (strcmp(name, WMNChangedStacking) == 0 && wwin) { updateClientListStacking(wwin->screen_ptr, NULL); updateStateHint(wwin, False, False); } else if (strcmp(name, WMNChangedFocus) == 0) { updateFocusHint(ndata->scr); } else if (strcmp(name, WMNChangedWorkspace) == 0 && wwin) { updateWorkspaceHint(wwin, False, False); updateStateHint(wwin, True, False); } else if (strcmp(name, WMNChangedState) == 0 && wwin) { updateStateHint(wwin, !strcmp(data, "omnipresent"), False); } } static void wsobserver(void *self, WMNotification *notif) { WScreen *scr = (WScreen *) WMGetNotificationObject(notif); const char *name = WMGetNotificationName(notif); /* Parameter not used, but tell the compiler that it is ok */ (void) self; if (strcmp(name, WMNWorkspaceCreated) == 0) { updateWorkspaceCount(scr); updateWorkspaceNames(scr); wNETWMUpdateWorkarea(scr); } else if (strcmp(name, WMNWorkspaceDestroyed) == 0) { updateWorkspaceCount(scr); updateWorkspaceNames(scr); wNETWMUpdateWorkarea(scr); } else if (strcmp(name, WMNWorkspaceChanged) == 0) { updateCurrentWorkspace(scr); } else if (strcmp(name, WMNWorkspaceNameChanged) == 0) { updateWorkspaceNames(scr); } } void wNETFrameExtents(WWindow *wwin) { long extents[4] = { 0, 0, 0, 0 }; /* The extents array describes dimensions which are not * part of the client window. In our case that means * widths of the border and heights of the titlebar and resizebar. * * Index 0 = left * 1 = right * 2 = top * 3 = bottom */ if (wwin->frame->titlebar) extents[2] = wwin->frame->titlebar->height; if (wwin->frame->resizebar) extents[3] = wwin->frame->resizebar->height; if (HAS_BORDER(wwin)) { extents[0] += wwin->screen_ptr->frame_border_width; extents[1] += wwin->screen_ptr->frame_border_width; extents[2] += wwin->screen_ptr->frame_border_width; extents[3] += wwin->screen_ptr->frame_border_width; } XChangeProperty(dpy, wwin->client_win, net_frame_extents, XA_CARDINAL, 32, PropModeReplace, (unsigned char *) extents, 4); } void wNETCleanupFrameExtents(WWindow *wwin) { XDeleteProperty(dpy, wwin->client_win, net_frame_extents); } ���������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/Makefile.in������������������������������������������������������������������0000644�0001750�0001750�00000113260�13642360054�013630� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = wmaker$(EXEEXT) @USE_DOCK_XDND_TRUE@am__append_1 = xdnd.c @USE_MWM_HINTS_TRUE@am__append_2 = motif.h motif.c @WM_OSDEP_BSD_TRUE@am__append_3 = osdep_bsd.c @WM_OSDEP_DARWIN_TRUE@am__append_4 = osdep_darwin.c @WM_OSDEP_LINUX_TRUE@am__append_5 = osdep_linux.c @WM_OSDEP_GENERIC_TRUE@am__append_6 = osdep_stub.c @USE_NESTED_FUNC_TRUE@am__append_7 = misc.c \ @USE_NESTED_FUNC_TRUE@ xmodifier.c subdir = src ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ $(top_srcdir)/m4/ax_pthread.m4 \ $(top_srcdir)/m4/ld-version-script.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/windowmaker.m4 \ $(top_srcdir)/m4/wm_attributes.m4 \ $(top_srcdir)/m4/wm_cflags_check.m4 \ $(top_srcdir)/m4/wm_i18n.m4 \ $(top_srcdir)/m4/wm_imgfmt_check.m4 \ $(top_srcdir)/m4/wm_libexif.m4 $(top_srcdir)/m4/wm_libmath.m4 \ $(top_srcdir)/m4/wm_prog_cc_c11.m4 \ $(top_srcdir)/m4/wm_xext_check.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = wconfig.h CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) am__wmaker_SOURCES_DIST = 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 \ colormap.h cycling.c cycling.h def_pixmaps.h defaults.c \ defaults.h dialog.c dialog.h dock.c dockedapp.c dockedapp.h \ dock.h event.c event.h extend_pixmaps.h framewin.c framewin.h \ geomview.c geomview.h osdep.h icon.c icon.h keybind.h main.c \ main.h menu.c menu.h misc.h monitor.c monitor.h moveres.c \ pixmap.c pixmap.h placement.c placement.h properties.c \ properties.h resources.c resources.h rootmenu.c rootmenu.h \ screen.c screen.h session.h session.c shutdown.h shutdown.c \ switchpanel.c switchpanel.h stacking.c stacking.h startup.c \ startup.h superfluous.c superfluous.h switchmenu.c \ switchmenu.h texture.c texture.h usermenu.c usermenu.h xdnd.h \ xinerama.h xinerama.c xmodifier.h xutil.c xutil.h wconfig.h \ wcore.c wcore.h wdefaults.c wdefaults.h window.c window.h \ winmenu.c winmenu.h winspector.h winspector.c wmspec.h \ wmspec.c workspace.c workspace.h wsmap.c wsmap.h xdnd.c \ motif.h motif.c osdep_bsd.c osdep_darwin.c osdep_linux.c \ osdep_stub.c misc.c xmodifier.c @USE_DOCK_XDND_TRUE@am__objects_1 = xdnd.$(OBJEXT) @USE_MWM_HINTS_TRUE@am__objects_2 = motif.$(OBJEXT) @WM_OSDEP_BSD_TRUE@am__objects_3 = osdep_bsd.$(OBJEXT) @WM_OSDEP_DARWIN_TRUE@am__objects_4 = osdep_darwin.$(OBJEXT) @WM_OSDEP_LINUX_TRUE@am__objects_5 = osdep_linux.$(OBJEXT) @WM_OSDEP_GENERIC_TRUE@am__objects_6 = osdep_stub.$(OBJEXT) @USE_NESTED_FUNC_TRUE@am__objects_7 = misc.$(OBJEXT) \ @USE_NESTED_FUNC_TRUE@ xmodifier.$(OBJEXT) am_wmaker_OBJECTS = actions.$(OBJEXT) appicon.$(OBJEXT) \ application.$(OBJEXT) appmenu.$(OBJEXT) balloon.$(OBJEXT) \ client.$(OBJEXT) colormap.$(OBJEXT) cycling.$(OBJEXT) \ defaults.$(OBJEXT) dialog.$(OBJEXT) dock.$(OBJEXT) \ dockedapp.$(OBJEXT) event.$(OBJEXT) framewin.$(OBJEXT) \ geomview.$(OBJEXT) icon.$(OBJEXT) main.$(OBJEXT) \ menu.$(OBJEXT) monitor.$(OBJEXT) moveres.$(OBJEXT) \ pixmap.$(OBJEXT) placement.$(OBJEXT) properties.$(OBJEXT) \ resources.$(OBJEXT) rootmenu.$(OBJEXT) screen.$(OBJEXT) \ session.$(OBJEXT) shutdown.$(OBJEXT) switchpanel.$(OBJEXT) \ stacking.$(OBJEXT) startup.$(OBJEXT) superfluous.$(OBJEXT) \ switchmenu.$(OBJEXT) texture.$(OBJEXT) usermenu.$(OBJEXT) \ xinerama.$(OBJEXT) xutil.$(OBJEXT) wcore.$(OBJEXT) \ wdefaults.$(OBJEXT) window.$(OBJEXT) winmenu.$(OBJEXT) \ winspector.$(OBJEXT) wmspec.$(OBJEXT) workspace.$(OBJEXT) \ wsmap.$(OBJEXT) $(am__objects_1) $(am__objects_2) \ $(am__objects_3) $(am__objects_4) $(am__objects_5) \ $(am__objects_6) $(am__objects_7) @USE_NESTED_FUNC_FALSE@nodist_wmaker_OBJECTS = misc.hack_nf.$(OBJEXT) \ @USE_NESTED_FUNC_FALSE@ xmodifier.hack_nf.$(OBJEXT) wmaker_OBJECTS = $(am_wmaker_OBJECTS) $(nodist_wmaker_OBJECTS) wmaker_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.la \ $(top_builddir)/WINGs/libWUtil.la \ $(top_builddir)/wrlib/libwraster.la AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/actions.Po ./$(DEPDIR)/appicon.Po \ ./$(DEPDIR)/application.Po ./$(DEPDIR)/appmenu.Po \ ./$(DEPDIR)/balloon.Po ./$(DEPDIR)/client.Po \ ./$(DEPDIR)/colormap.Po ./$(DEPDIR)/cycling.Po \ ./$(DEPDIR)/defaults.Po ./$(DEPDIR)/dialog.Po \ ./$(DEPDIR)/dock.Po ./$(DEPDIR)/dockedapp.Po \ ./$(DEPDIR)/event.Po ./$(DEPDIR)/framewin.Po \ ./$(DEPDIR)/geomview.Po ./$(DEPDIR)/icon.Po \ ./$(DEPDIR)/main.Po ./$(DEPDIR)/menu.Po ./$(DEPDIR)/misc.Po \ ./$(DEPDIR)/misc.hack_nf.Po ./$(DEPDIR)/monitor.Po \ ./$(DEPDIR)/motif.Po ./$(DEPDIR)/moveres.Po \ ./$(DEPDIR)/osdep_bsd.Po ./$(DEPDIR)/osdep_darwin.Po \ ./$(DEPDIR)/osdep_linux.Po ./$(DEPDIR)/osdep_stub.Po \ ./$(DEPDIR)/pixmap.Po ./$(DEPDIR)/placement.Po \ ./$(DEPDIR)/properties.Po ./$(DEPDIR)/resources.Po \ ./$(DEPDIR)/rootmenu.Po ./$(DEPDIR)/screen.Po \ ./$(DEPDIR)/session.Po ./$(DEPDIR)/shutdown.Po \ ./$(DEPDIR)/stacking.Po ./$(DEPDIR)/startup.Po \ ./$(DEPDIR)/superfluous.Po ./$(DEPDIR)/switchmenu.Po \ ./$(DEPDIR)/switchpanel.Po ./$(DEPDIR)/texture.Po \ ./$(DEPDIR)/usermenu.Po ./$(DEPDIR)/wcore.Po \ ./$(DEPDIR)/wdefaults.Po ./$(DEPDIR)/window.Po \ ./$(DEPDIR)/winmenu.Po ./$(DEPDIR)/winspector.Po \ ./$(DEPDIR)/wmspec.Po ./$(DEPDIR)/workspace.Po \ ./$(DEPDIR)/wsmap.Po ./$(DEPDIR)/xdnd.Po \ ./$(DEPDIR)/xinerama.Po ./$(DEPDIR)/xmodifier.Po \ ./$(DEPDIR)/xmodifier.hack_nf.Po ./$(DEPDIR)/xutil.Po am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(wmaker_SOURCES) $(nodist_wmaker_SOURCES) DIST_SOURCES = $(am__wmaker_SOURCES_DIST) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/wconfig.h.in \ $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FCLIBS = @FCLIBS@ FGREP = @FGREP@ GFXLIBS = @GFXLIBS@ GREP = @GREP@ HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLIBS = @INTLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBBSD = @LIBBSD@ LIBEXIF = @LIBEXIF@ LIBM = @LIBM@ LIBOBJS = @LIBOBJS@ LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXINERAMA = @LIBXINERAMA@ LIBXMU = @LIBXMU@ LIBXRANDR = @LIBXRANDR@ LINGUAS = @LINGUAS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAGICKFLAGS = @MAGICKFLAGS@ MAGICKLIBS = @MAGICKLIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MANLANGDIRS = @MANLANGDIRS@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOLIBS = @PANGOLIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UTILMOFILES = @UTILMOFILES@ VERSION = @VERSION@ WINGSMOFILES = @WINGSMOFILES@ WINGS_VERSION = @WINGS_VERSION@ WMAKERMOFILES = @WMAKERMOFILES@ WPREFSMOFILES = @WPREFSMOFILES@ WRASTER_VERSION = @WRASTER_VERSION@ WUTIL_VERSION = @WUTIL_VERSION@ XCFLAGS = @XCFLAGS@ XFTCONFIG = @XFTCONFIG@ XFTFLAGS = @XFTFLAGS@ XFTLIBS = @XFTLIBS@ XGETTEXT = @XGETTEXT@ XLFLAGS = @XLFLAGS@ XLIBS = @XLIBS@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBRARY_PATH = @X_LIBRARY_PATH@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ defsdatadir = @defsdatadir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ inc_search_path = @inc_search_path@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lcov_output_directory = @lcov_output_directory@ lib_search_path = @lib_search_path@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pixmapdir = @pixmapdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ wprefs_bindir = @wprefs_bindir@ wprefs_datadir = @wprefs_datadir@ AUTOMAKE_OPTIONS = BUILT_SOURCES = wconfig.h EXTRA_DIST = 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 colormap.h \ cycling.c cycling.h def_pixmaps.h defaults.c defaults.h \ dialog.c dialog.h dock.c dockedapp.c dockedapp.h dock.h \ event.c event.h extend_pixmaps.h framewin.c framewin.h \ geomview.c geomview.h osdep.h icon.c icon.h keybind.h main.c \ main.h menu.c menu.h misc.h monitor.c monitor.h moveres.c \ pixmap.c pixmap.h placement.c placement.h properties.c \ properties.h resources.c resources.h rootmenu.c rootmenu.h \ screen.c screen.h session.h session.c shutdown.h shutdown.c \ switchpanel.c switchpanel.h stacking.c stacking.h startup.c \ startup.h superfluous.c superfluous.h switchmenu.c \ switchmenu.h texture.c texture.h usermenu.c usermenu.h xdnd.h \ xinerama.h xinerama.c xmodifier.h xutil.c xutil.h wconfig.h \ wcore.c wcore.h wdefaults.c wdefaults.h window.c window.h \ winmenu.c winmenu.h winspector.h winspector.c wmspec.h \ wmspec.c workspace.c workspace.h wsmap.c wsmap.h \ $(am__append_1) $(am__append_2) $(am__append_3) \ $(am__append_4) $(am__append_5) $(am__append_6) \ $(am__append_7) @USE_NESTED_FUNC_FALSE@nodist_wmaker_SOURCES = misc.hack_nf.c \ @USE_NESTED_FUNC_FALSE@ xmodifier.hack_nf.c @USE_NESTED_FUNC_FALSE@CLEANFILES = $(nodist_wmaker_SOURCES) AM_CFLAGS = AM_CPPFLAGS = $(DFLAGS) \ -I$(top_srcdir)/wrlib \ -I$(top_srcdir)/WINGs @HEADER_SEARCH_PATH@ wmaker_LDADD = \ $(top_builddir)/WINGs/libWINGs.la\ $(top_builddir)/WINGs/libWUtil.la\ $(top_builddir)/wrlib/libwraster.la\ @XLFLAGS@ \ @LIBXRANDR@ \ @LIBXINERAMA@ \ @XLIBS@ \ @LIBM@ \ @INTLIBS@ ###################################################################### # Create a 'silent rule' for our make check the same way automake does AM_V_CHKOPTS = $(am__v_CHKOPTS_$(V)) am__v_CHKOPTS_ = $(am__v_CHKOPTS_$(AM_DEFAULT_VERBOSITY)) am__v_CHKOPTS_0 = @echo " CHK $@" ; am__v_CHKOPTS_1 = all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): wconfig.h: $(top_builddir)/config.status $(srcdir)/wconfig.h.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ || test -f $$p1 \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list wmaker$(EXEEXT): $(wmaker_OBJECTS) $(wmaker_DEPENDENCIES) $(EXTRA_wmaker_DEPENDENCIES) @rm -f wmaker$(EXEEXT) $(AM_V_CCLD)$(LINK) $(wmaker_OBJECTS) $(wmaker_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/actions.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/appicon.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/application.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/appmenu.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/balloon.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/client.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/colormap.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cycling.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/defaults.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dialog.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dock.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dockedapp.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/event.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/framewin.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/geomview.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icon.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/menu.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/misc.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/misc.hack_nf.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/monitor.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/motif.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/moveres.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/osdep_bsd.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/osdep_darwin.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/osdep_linux.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/osdep_stub.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pixmap.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/placement.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/properties.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/resources.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rootmenu.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/screen.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/session.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shutdown.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stacking.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/startup.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/superfluous.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/switchmenu.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/switchpanel.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/texture.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/usermenu.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wcore.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wdefaults.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/window.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/winmenu.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/winspector.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wmspec.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/workspace.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wsmap.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xdnd.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xinerama.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmodifier.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmodifier.hack_nf.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xutil.Po@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @echo '# dummy' >$@-t && $(am__mv) $@-t $@ am--depfiles: $(am__depfiles_remade) .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) check-local check: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) clean: clean-am clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f ./$(DEPDIR)/actions.Po -rm -f ./$(DEPDIR)/appicon.Po -rm -f ./$(DEPDIR)/application.Po -rm -f ./$(DEPDIR)/appmenu.Po -rm -f ./$(DEPDIR)/balloon.Po -rm -f ./$(DEPDIR)/client.Po -rm -f ./$(DEPDIR)/colormap.Po -rm -f ./$(DEPDIR)/cycling.Po -rm -f ./$(DEPDIR)/defaults.Po -rm -f ./$(DEPDIR)/dialog.Po -rm -f ./$(DEPDIR)/dock.Po -rm -f ./$(DEPDIR)/dockedapp.Po -rm -f ./$(DEPDIR)/event.Po -rm -f ./$(DEPDIR)/framewin.Po -rm -f ./$(DEPDIR)/geomview.Po -rm -f ./$(DEPDIR)/icon.Po -rm -f ./$(DEPDIR)/main.Po -rm -f ./$(DEPDIR)/menu.Po -rm -f ./$(DEPDIR)/misc.Po -rm -f ./$(DEPDIR)/misc.hack_nf.Po -rm -f ./$(DEPDIR)/monitor.Po -rm -f ./$(DEPDIR)/motif.Po -rm -f ./$(DEPDIR)/moveres.Po -rm -f ./$(DEPDIR)/osdep_bsd.Po -rm -f ./$(DEPDIR)/osdep_darwin.Po -rm -f ./$(DEPDIR)/osdep_linux.Po -rm -f ./$(DEPDIR)/osdep_stub.Po -rm -f ./$(DEPDIR)/pixmap.Po -rm -f ./$(DEPDIR)/placement.Po -rm -f ./$(DEPDIR)/properties.Po -rm -f ./$(DEPDIR)/resources.Po -rm -f ./$(DEPDIR)/rootmenu.Po -rm -f ./$(DEPDIR)/screen.Po -rm -f ./$(DEPDIR)/session.Po -rm -f ./$(DEPDIR)/shutdown.Po -rm -f ./$(DEPDIR)/stacking.Po -rm -f ./$(DEPDIR)/startup.Po -rm -f ./$(DEPDIR)/superfluous.Po -rm -f ./$(DEPDIR)/switchmenu.Po -rm -f ./$(DEPDIR)/switchpanel.Po -rm -f ./$(DEPDIR)/texture.Po -rm -f ./$(DEPDIR)/usermenu.Po -rm -f ./$(DEPDIR)/wcore.Po -rm -f ./$(DEPDIR)/wdefaults.Po -rm -f ./$(DEPDIR)/window.Po -rm -f ./$(DEPDIR)/winmenu.Po -rm -f ./$(DEPDIR)/winspector.Po -rm -f ./$(DEPDIR)/wmspec.Po -rm -f ./$(DEPDIR)/workspace.Po -rm -f ./$(DEPDIR)/wsmap.Po -rm -f ./$(DEPDIR)/xdnd.Po -rm -f ./$(DEPDIR)/xinerama.Po -rm -f ./$(DEPDIR)/xmodifier.Po -rm -f ./$(DEPDIR)/xmodifier.hack_nf.Po -rm -f ./$(DEPDIR)/xutil.Po -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/actions.Po -rm -f ./$(DEPDIR)/appicon.Po -rm -f ./$(DEPDIR)/application.Po -rm -f ./$(DEPDIR)/appmenu.Po -rm -f ./$(DEPDIR)/balloon.Po -rm -f ./$(DEPDIR)/client.Po -rm -f ./$(DEPDIR)/colormap.Po -rm -f ./$(DEPDIR)/cycling.Po -rm -f ./$(DEPDIR)/defaults.Po -rm -f ./$(DEPDIR)/dialog.Po -rm -f ./$(DEPDIR)/dock.Po -rm -f ./$(DEPDIR)/dockedapp.Po -rm -f ./$(DEPDIR)/event.Po -rm -f ./$(DEPDIR)/framewin.Po -rm -f ./$(DEPDIR)/geomview.Po -rm -f ./$(DEPDIR)/icon.Po -rm -f ./$(DEPDIR)/main.Po -rm -f ./$(DEPDIR)/menu.Po -rm -f ./$(DEPDIR)/misc.Po -rm -f ./$(DEPDIR)/misc.hack_nf.Po -rm -f ./$(DEPDIR)/monitor.Po -rm -f ./$(DEPDIR)/motif.Po -rm -f ./$(DEPDIR)/moveres.Po -rm -f ./$(DEPDIR)/osdep_bsd.Po -rm -f ./$(DEPDIR)/osdep_darwin.Po -rm -f ./$(DEPDIR)/osdep_linux.Po -rm -f ./$(DEPDIR)/osdep_stub.Po -rm -f ./$(DEPDIR)/pixmap.Po -rm -f ./$(DEPDIR)/placement.Po -rm -f ./$(DEPDIR)/properties.Po -rm -f ./$(DEPDIR)/resources.Po -rm -f ./$(DEPDIR)/rootmenu.Po -rm -f ./$(DEPDIR)/screen.Po -rm -f ./$(DEPDIR)/session.Po -rm -f ./$(DEPDIR)/shutdown.Po -rm -f ./$(DEPDIR)/stacking.Po -rm -f ./$(DEPDIR)/startup.Po -rm -f ./$(DEPDIR)/superfluous.Po -rm -f ./$(DEPDIR)/switchmenu.Po -rm -f ./$(DEPDIR)/switchpanel.Po -rm -f ./$(DEPDIR)/texture.Po -rm -f ./$(DEPDIR)/usermenu.Po -rm -f ./$(DEPDIR)/wcore.Po -rm -f ./$(DEPDIR)/wdefaults.Po -rm -f ./$(DEPDIR)/window.Po -rm -f ./$(DEPDIR)/winmenu.Po -rm -f ./$(DEPDIR)/winspector.Po -rm -f ./$(DEPDIR)/wmspec.Po -rm -f ./$(DEPDIR)/workspace.Po -rm -f ./$(DEPDIR)/wsmap.Po -rm -f ./$(DEPDIR)/xdnd.Po -rm -f ./$(DEPDIR)/xinerama.Po -rm -f ./$(DEPDIR)/xmodifier.Po -rm -f ./$(DEPDIR)/xmodifier.hack_nf.Po -rm -f ./$(DEPDIR)/xutil.Po -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS .MAKE: all check check-am install install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am \ check-local clean clean-binPROGRAMS clean-generic \ clean-libtool cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-binPROGRAMS install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am uninstall-binPROGRAMS .PRECIOUS: Makefile @USE_NESTED_FUNC_FALSE@misc.hack_nf.c: misc.c $(top_srcdir)/script/nested-func-to-macro.sh @USE_NESTED_FUNC_FALSE@ $(AM_V_GEN)$(top_srcdir)/script/nested-func-to-macro.sh \ @USE_NESTED_FUNC_FALSE@ $(srcdir)/misc.c -o $(builddir)/misc.hack_nf.c \ @USE_NESTED_FUNC_FALSE@ -f "append_string" -f "append_modifier" @USE_NESTED_FUNC_FALSE@xmodifier.hack_nf.c: xmodifier.c $(top_srcdir)/script/nested-func-to-macro.sh @USE_NESTED_FUNC_FALSE@ $(AM_V_GEN)$(top_srcdir)/script/nested-func-to-macro.sh \ @USE_NESTED_FUNC_FALSE@ $(srcdir)/xmodifier.c -o $(builddir)/xmodifier.hack_nf.c \ @USE_NESTED_FUNC_FALSE@ -f "modwarn" -f "modbarf" -f "check_modifier" -f "store_modifier" check-local: defaults-callbacks-static defaults-callbacks-dynamic # Check that the callback functions used to load the configuration match # the type of the variable where the value will be stored defaults-callbacks-static: $(AM_V_CHKOPTS)$(top_srcdir)/script/check-wmaker-loaddef-callbacks.sh \ --source "$(srcdir)/defaults.c" --structure "staticOptionList" \ --field-value-ptr 4 --field-callback 5 \ --struct-def "wPreferences=$(srcdir)/WindowMaker.h" \ --callback "getBool=char, getEnum=char, getInt=int" \ --callback "getModMask=int" defaults-callbacks-dynamic: $(AM_V_CHKOPTS)$(top_srcdir)/script/check-wmaker-loaddef-callbacks.sh \ --source "$(srcdir)/defaults.c" --structure "optionList" \ --field-value-ptr 4 --field-callback 5 \ --struct-def "wPreferences=$(srcdir)/WindowMaker.h" \ --struct-def "legacy_minipreview_config=$(srcdir)/defaults.c" \ --callback "getBool=char, getEnum=char, getInt=int" \ --callback "getPathList=char*, getCoord=WCoord" # 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. .NOEXPORT: ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/dock.h�����������������������������������������������������������������������0000644�0001750�0001750�00000010012�13431646202�012641� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* dock.h- built-in Dock module for WindowMaker * * Window Maker window manager * * Copyright (c) 1997-2003 Alfredo K. Kojima * Copyright (c) 1998-2003 Dan Pascu * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef WMDOCK_H_ #define WMDOCK_H_ #include "appicon.h" typedef struct WDock { WScreen *screen_ptr; int x_pos, y_pos; /* position of the first icon */ WAppIcon **icon_array; /* array of docked icons */ int max_icons; int icon_count; #define WM_DOCK 0 #define WM_CLIP 1 #define WM_DRAWER 2 int type; WMagicNumber auto_expand_magic; WMagicNumber auto_collapse_magic; WMagicNumber auto_raise_magic; WMagicNumber auto_lower_magic; unsigned int auto_collapse:1; /* if clip auto-collapse itself */ unsigned int auto_raise_lower:1; /* if clip should raise/lower when * entered/leaved */ unsigned int on_right_side:1; unsigned int collapsed:1; unsigned int mapped:1; unsigned int lowered:1; unsigned int attract_icons:1; /* If clip should attract app-icons */ unsigned int lclip_button_pushed:1; unsigned int rclip_button_pushed:1; struct WMenu *menu; struct WDDomain *defaults; } WDock; WDock *wDockCreate(WScreen *scr, int type, const char *name); WDock *wDockRestoreState(WScreen *scr, WMPropList *dock_state, int type); void wDockDestroy(WDock *dock); void wDockHideIcons(WDock *dock); void wDockShowIcons(WDock *dock); void wDockLower(WDock *dock); void wDockRaise(WDock *dock); void wDockRaiseLower(WDock *dock); void wDockSaveState(WScreen *scr, WMPropList *old_state); Bool wDockAttachIcon(WDock *dock, WAppIcon *icon, int x, int y, Bool update_icon); Bool wDockSnapIcon(WDock *dock, WAppIcon *icon, int req_x, int req_y, int *ret_x, int *ret_y, int redocking); Bool wDockFindFreeSlot(WDock *dock, int *req_x, int *req_y); void wDockDetach(WDock *dock, WAppIcon *icon); Bool wDockMoveIconBetweenDocks(WDock *src, WDock *dest, WAppIcon *icon, int x, int y); void wDockReattachIcon(WDock *dock, WAppIcon *icon, int x, int y); void wSlideAppicons(WAppIcon **appicons, int n, int to_the_left); void wDrawerFillTheGap(WDock *drawer, WAppIcon *aicon, Bool redocking); void wDockFinishLaunch(WAppIcon *icon); void wDockTrackWindowLaunch(WDock *dock, Window window); WAppIcon *wDockFindIconForWindow(WDock *dock, Window window); void wDockDoAutoLaunch(WDock *dock, int workspace); void wDockLaunchWithState(WAppIcon *btn, WSavedState *state); #ifdef USE_DOCK_XDND int wDockReceiveDNDDrop(WScreen *scr, XEvent *event); #endif void wClipIconPaint(WAppIcon *aicon); void wClipSaveState(WScreen *scr); WMPropList *wClipSaveWorkspaceState(WScreen *scr, int workspace); WAppIcon *wClipRestoreState(WScreen *scr, WMPropList *clip_state); void wDrawerIconPaint(WAppIcon *dicon); void wDrawersSaveState(WScreen *scr); void wDrawersRestoreState(WScreen *scr); int wIsADrawer(WAppIcon *aicon); void wClipUpdateForWorkspaceChange(WScreen *scr, int workspace); RImage *wClipMakeTile(RImage *normalTile); RImage* wDrawerMakeTile(WScreen *scr, RImage *normalTile); #define WO_FAILED 0 #define WO_NOT_APPLICABLE 1 #define WO_SUCCESS 2 typedef enum { P_NORMAL = 0, P_AUTO_RAISE_LOWER, P_KEEP_ON_TOP, } dockPosition; int wClipMakeIconOmnipresent(WAppIcon *aicon, int omnipresent); #endif ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/dock.c�����������������������������������������������������������������������0000644�0001750�0001750�00000402017�13642357774�012667� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* dock.c- built-in Dock module for WindowMaker * * Window Maker window manager * * Copyright (c) 1997-2003 Alfredo K. Kojima * Copyright (c) 1998-2003 Dan Pascu * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "wconfig.h" #include <X11/Xlib.h> #include <X11/Xutil.h> #include <stdio.h> #include <stdlib.h> #include <libgen.h> #include <string.h> #include <strings.h> #include <unistd.h> #include <math.h> #include <limits.h> #ifndef PATH_MAX #define PATH_MAX DEFAULT_PATH_MAX #endif #include "WindowMaker.h" #include "wcore.h" #include "window.h" #include "icon.h" #include "appicon.h" #include "actions.h" #include "stacking.h" #include "dock.h" #include "dockedapp.h" #include "dialog.h" #include "main.h" #include "properties.h" #include "menu.h" #include "client.h" #include "defaults.h" #include "workspace.h" #include "framewin.h" #include "superfluous.h" #include "xinerama.h" #include "placement.h" #include "misc.h" #include "event.h" /**** Local variables ****/ #define CLIP_REWIND 1 #define CLIP_IDLE 0 #define CLIP_FORWARD 2 #define MOD_MASK wPreferences.modifier_mask #define ICON_SIZE wPreferences.icon_size /***** Local variables ****/ static WMPropList *dCommand = NULL; static WMPropList *dPasteCommand = NULL; #ifdef USE_DOCK_XDND static WMPropList *dDropCommand = NULL; #endif static WMPropList *dAutoLaunch, *dLock; static WMPropList *dName, *dForced, *dBuggyApplication, *dYes, *dNo; static WMPropList *dHost, *dDock, *dClip; static WMPropList *dAutoAttractIcons; static WMPropList *dPosition, *dApplications, *dLowered, *dCollapsed; static WMPropList *dAutoCollapse, *dAutoRaiseLower, *dOmnipresent; static WMPropList *dDrawers = NULL; static void dockIconPaint(WAppIcon *btn); static void iconMouseDown(WObjDescriptor *desc, XEvent *event); static pid_t execCommand(WAppIcon *btn, const char *command, WSavedState *state); static void trackDeadProcess(pid_t pid, unsigned int status, void *cdata); static int getClipButton(int px, int py); static void toggleLowered(WDock *dock); static void toggleCollapsed(WDock *dock); static void clipIconExpose(WObjDescriptor *desc, XEvent *event); static void clipLeave(WDock *dock); static void handleClipChangeWorkspace(WScreen *scr, XEvent *event); static void clipEnterNotify(WObjDescriptor *desc, XEvent *event); static void clipLeaveNotify(WObjDescriptor *desc, XEvent *event); static void clipAutoCollapse(void *cdata); static void clipAutoExpand(void *cdata); static void launchDockedApplication(WAppIcon *btn, Bool withSelection); static void clipAutoLower(void *cdata); static void clipAutoRaise(void *cdata); static WAppIcon *mainIconCreate(WScreen *scr, int type, const char *name); static void drawerIconExpose(WObjDescriptor *desc, XEvent *event); static void removeDrawerCallback(WMenu *menu, WMenuEntry *entry); static void drawerAppendToChain(WScreen *scr, WDock *drawer); static char *findUniqueName(WScreen *scr, const char *instance_basename); static void addADrawerCallback(WMenu *menu, WMenuEntry *entry); static void swapDrawers(WScreen *scr, int new_x); static WDock* getDrawer(WScreen *scr, int y_index); static int indexOfHole(WDock *drawer, WAppIcon *moving_aicon, int redocking); static void drawerConsolidateIcons(WDock *drawer); static int onScreen(WScreen *scr, int x, int y); static void make_keys(void) { if (dCommand != NULL) return; dCommand = WMRetainPropList(WMCreatePLString("Command")); dPasteCommand = WMRetainPropList(WMCreatePLString("PasteCommand")); #ifdef USE_DOCK_XDND dDropCommand = WMRetainPropList(WMCreatePLString("DropCommand")); #endif dLock = WMRetainPropList(WMCreatePLString("Lock")); dAutoLaunch = WMRetainPropList(WMCreatePLString("AutoLaunch")); dName = WMRetainPropList(WMCreatePLString("Name")); dForced = WMRetainPropList(WMCreatePLString("Forced")); dBuggyApplication = WMRetainPropList(WMCreatePLString("BuggyApplication")); dYes = WMRetainPropList(WMCreatePLString("Yes")); dNo = WMRetainPropList(WMCreatePLString("No")); dHost = WMRetainPropList(WMCreatePLString("Host")); dPosition = WMCreatePLString("Position"); dApplications = WMCreatePLString("Applications"); dLowered = WMCreatePLString("Lowered"); dCollapsed = WMCreatePLString("Collapsed"); dAutoCollapse = WMCreatePLString("AutoCollapse"); dAutoRaiseLower = WMCreatePLString("AutoRaiseLower"); dAutoAttractIcons = WMCreatePLString("AutoAttractIcons"); dOmnipresent = WMCreatePLString("Omnipresent"); dDock = WMCreatePLString("Dock"); dClip = WMCreatePLString("Clip"); dDrawers = WMCreatePLString("Drawers"); } static void renameCallback(WMenu *menu, WMenuEntry *entry) { WDock *dock = entry->clientdata; char buffer[128]; int wspace; char *name; /* Parameter not used, but tell the compiler that it is ok */ (void) menu; assert(entry->clientdata != NULL); wspace = dock->screen_ptr->current_workspace; name = wstrdup(dock->screen_ptr->workspaces[wspace]->name); snprintf(buffer, sizeof(buffer), _("Type the name for workspace %i:"), wspace + 1); if (wInputDialog(dock->screen_ptr, _("Rename Workspace"), buffer, &name)) wWorkspaceRename(dock->screen_ptr, wspace, name); wfree(name); } static void toggleLoweredCallback(WMenu *menu, WMenuEntry *entry) { assert(entry->clientdata != NULL); toggleLowered(entry->clientdata); entry->flags.indicator_on = !(((WDock *) entry->clientdata)->lowered); wMenuPaint(menu); } static int matchWindow(const void *item, const void *cdata) { return (((WFakeGroupLeader *) item)->leader == (Window) cdata); } static void killCallback(WMenu *menu, WMenuEntry *entry) { WScreen *scr = menu->menu->screen_ptr; WAppIcon *icon; WFakeGroupLeader *fPtr; char *buffer, *shortname, **argv; int argc; if (!WCHECK_STATE(WSTATE_NORMAL)) return; assert(entry->clientdata != NULL); icon = (WAppIcon *) entry->clientdata; icon->editing = 1; WCHANGE_STATE(WSTATE_MODAL); /* strip away dir names */ shortname = basename(icon->command); /* separate out command options */ wtokensplit(shortname, &argv, &argc); buffer = wstrconcat(argv[0], _(" will be forcibly closed.\n" "Any unsaved changes will be lost.\n" "Please confirm.")); if (icon->icon && icon->icon->owner) { fPtr = icon->icon->owner->fake_group; } else { /* is this really necessary? can we kill a non-running dock icon? */ Window win = icon->main_window; int index; index = WMFindInArray(scr->fakeGroupLeaders, matchWindow, (void *)win); if (index != WANotFound) fPtr = WMGetFromArray(scr->fakeGroupLeaders, index); else fPtr = NULL; } if (wPreferences.dont_confirm_kill || wMessageDialog(menu->frame->screen_ptr, _("Kill Application"), buffer, _("Yes"), _("No"), NULL) == WAPRDefault) { if (fPtr != NULL) { WWindow *wwin, *twin; wwin = scr->focused_window; while (wwin) { twin = wwin->prev; if (wwin->fake_group == fPtr) wClientKill(wwin); wwin = twin; } } else if (icon->icon && icon->icon->owner) { wClientKill(icon->icon->owner); } } wfree(buffer); wtokenfree(argv, argc); icon->editing = 0; WCHANGE_STATE(WSTATE_NORMAL); } /* TODO: replace this function with a member of the dock struct */ static int numberOfSelectedIcons(WDock *dock) { WAppIcon *aicon; int i, n; n = 0; for (i = 1; i < dock->max_icons; i++) { aicon = dock->icon_array[i]; if (aicon && aicon->icon->selected) n++; } return n; } static WMArray *getSelected(WDock *dock) { WMArray *ret = WMCreateArray(8); WAppIcon *btn; int i; for (i = 1; i < dock->max_icons; i++) { btn = dock->icon_array[i]; if (btn && btn->icon->selected) WMAddToArray(ret, btn); } return ret; } static void paintClipButtons(WAppIcon *clipIcon, Bool lpushed, Bool rpushed) { Window win = clipIcon->icon->core->window; WScreen *scr = clipIcon->icon->core->screen_ptr; XPoint p[4]; int pt = CLIP_BUTTON_SIZE * ICON_SIZE / 64; int tp = ICON_SIZE - pt; int as = pt - 15; /* 15 = 5+5+5 */ GC gc = scr->draw_gc; /* maybe use WMColorGC() instead here? */ WMColor *color; color = scr->clip_title_color[CLIP_NORMAL]; XSetForeground(dpy, gc, WMColorPixel(color)); if (rpushed) { p[0].x = tp + 1; p[0].y = 1; p[1].x = ICON_SIZE - 2; p[1].y = 1; p[2].x = ICON_SIZE - 2; p[2].y = pt - 1; } else if (lpushed) { p[0].x = 1; p[0].y = tp; p[1].x = pt; p[1].y = ICON_SIZE - 2; p[2].x = 1; p[2].y = ICON_SIZE - 2; } if (lpushed || rpushed) { XSetForeground(dpy, scr->draw_gc, scr->white_pixel); XFillPolygon(dpy, win, scr->draw_gc, p, 3, Convex, CoordModeOrigin); XSetForeground(dpy, scr->draw_gc, scr->black_pixel); } /* top right arrow */ p[0].x = p[3].x = ICON_SIZE - 5 - as; p[0].y = p[3].y = 5; p[1].x = ICON_SIZE - 6; p[1].y = 5; p[2].x = ICON_SIZE - 6; p[2].y = 4 + as; if (rpushed) { XFillPolygon(dpy, win, scr->draw_gc, p, 3, Convex, CoordModeOrigin); XDrawLines(dpy, win, scr->draw_gc, p, 4, CoordModeOrigin); } else { XFillPolygon(dpy, win, gc, p, 3, Convex, CoordModeOrigin); XDrawLines(dpy, win, gc, p, 4, CoordModeOrigin); } /* bottom left arrow */ p[0].x = p[3].x = 5; p[0].y = p[3].y = ICON_SIZE - 5 - as; p[1].x = 5; p[1].y = ICON_SIZE - 6; p[2].x = 4 + as; p[2].y = ICON_SIZE - 6; if (lpushed) { XFillPolygon(dpy, win, scr->draw_gc, p, 3, Convex, CoordModeOrigin); XDrawLines(dpy, win, scr->draw_gc, p, 4, CoordModeOrigin); } else { XFillPolygon(dpy, win, gc, p, 3, Convex, CoordModeOrigin); XDrawLines(dpy, win, gc, p, 4, CoordModeOrigin); } } RImage *wClipMakeTile(RImage *normalTile) { RImage *tile = RCloneImage(normalTile); RColor black; RColor dark; RColor light; int pt, tp; int as; pt = CLIP_BUTTON_SIZE * wPreferences.icon_size / 64; tp = wPreferences.icon_size - 1 - pt; as = pt - 15; black.alpha = 255; black.red = black.green = black.blue = 0; dark.alpha = 0; dark.red = dark.green = dark.blue = 60; light.alpha = 0; light.red = light.green = light.blue = 80; /* top right */ ROperateLine(tile, RSubtractOperation, tp, 0, wPreferences.icon_size - 2, pt - 1, &dark); RDrawLine(tile, tp - 1, 0, wPreferences.icon_size - 1, pt + 1, &black); ROperateLine(tile, RAddOperation, tp, 2, wPreferences.icon_size - 3, pt, &light); /* arrow bevel */ ROperateLine(tile, RSubtractOperation, ICON_SIZE - 7 - as, 4, ICON_SIZE - 5, 4, &dark); ROperateLine(tile, RSubtractOperation, ICON_SIZE - 6 - as, 5, ICON_SIZE - 5, 6 + as, &dark); ROperateLine(tile, RAddOperation, ICON_SIZE - 5, 4, ICON_SIZE - 5, 6 + as, &light); /* bottom left */ ROperateLine(tile, RAddOperation, 2, tp + 2, pt - 2, wPreferences.icon_size - 3, &dark); RDrawLine(tile, 0, tp - 1, pt + 1, wPreferences.icon_size - 1, &black); ROperateLine(tile, RSubtractOperation, 0, tp - 2, pt + 1, wPreferences.icon_size - 2, &light); /* arrow bevel */ ROperateLine(tile, RSubtractOperation, 4, ICON_SIZE - 7 - as, 4, ICON_SIZE - 5, &dark); ROperateLine(tile, RSubtractOperation, 5, ICON_SIZE - 6 - as, 6 + as, ICON_SIZE - 5, &dark); ROperateLine(tile, RAddOperation, 4, ICON_SIZE - 5, 6 + as, ICON_SIZE - 5, &light); return tile; } static void omnipresentCallback(WMenu *menu, WMenuEntry *entry) { WAppIcon *clickedIcon = entry->clientdata; WAppIcon *aicon; WDock *dock; WMArray *selectedIcons; WMArrayIterator iter; int failed; /* Parameter not used, but tell the compiler that it is ok */ (void) menu; assert(entry->clientdata != NULL); dock = clickedIcon->dock; selectedIcons = getSelected(dock); if (!WMGetArrayItemCount(selectedIcons)) WMAddToArray(selectedIcons, clickedIcon); failed = 0; WM_ITERATE_ARRAY(selectedIcons, aicon, iter) { if (wClipMakeIconOmnipresent(aicon, !aicon->omnipresent) == WO_FAILED) failed++; else if (aicon->icon->selected) wIconSelect(aicon->icon); } WMFreeArray(selectedIcons); if (failed > 1) { wMessageDialog(dock->screen_ptr, _("Warning"), _("Some icons cannot be made omnipresent. " "Please make sure that no other icon is " "docked in the same positions on the other " "workspaces and the Clip is not full in " "some workspace."), _("OK"), NULL, NULL); } else if (failed == 1) { wMessageDialog(dock->screen_ptr, _("Warning"), _("Icon cannot be made omnipresent. " "Please make sure that no other icon is " "docked in the same position on the other " "workspaces and the Clip is not full in " "some workspace."), _("OK"), NULL, NULL); } } static void removeIcons(WMArray *icons, WDock *dock) { WAppIcon *aicon; int keepit; WMArrayIterator it; WM_ITERATE_ARRAY(icons, aicon, it) { keepit = aicon->running && wApplicationOf(aicon->main_window); wDockDetach(dock, aicon); if (keepit) { /* XXX: can: aicon->icon == NULL ? */ PlaceIcon(dock->screen_ptr, &aicon->x_pos, &aicon->y_pos, wGetHeadForWindow(aicon->icon->owner)); XMoveWindow(dpy, aicon->icon->core->window, aicon->x_pos, aicon->y_pos); if (!dock->mapped || dock->collapsed) XMapWindow(dpy, aicon->icon->core->window); } } WMFreeArray(icons); if (wPreferences.auto_arrange_icons) wArrangeIcons(dock->screen_ptr, True); } static void removeIconsCallback(WMenu *menu, WMenuEntry *entry) { WAppIcon *clickedIcon = (WAppIcon *) entry->clientdata; WDock *dock; WMArray *selectedIcons; /* Parameter not used, but tell the compiler that it is ok */ (void) menu; assert(clickedIcon != NULL); dock = clickedIcon->dock; selectedIcons = getSelected(dock); if (WMGetArrayItemCount(selectedIcons)) { if (wMessageDialog(dock->screen_ptr, dock->type == WM_CLIP ? _("Workspace Clip") : _("Drawer"), _("All selected icons will be removed!"), _("OK"), _("Cancel"), NULL) != WAPRDefault) { WMFreeArray(selectedIcons); return; } } else { if (clickedIcon->xindex == 0 && clickedIcon->yindex == 0) { WMFreeArray(selectedIcons); return; } WMAddToArray(selectedIcons, clickedIcon); } removeIcons(selectedIcons, dock); if (dock->type == WM_DRAWER) { drawerConsolidateIcons(dock); } } static void keepIconsCallback(WMenu *menu, WMenuEntry *entry) { WAppIcon *clickedIcon = (WAppIcon *) entry->clientdata; WDock *dock; WAppIcon *aicon; WMArray *selectedIcons; WMArrayIterator it; /* Parameter not used, but tell the compiler that it is ok */ (void) menu; assert(clickedIcon != NULL); dock = clickedIcon->dock; selectedIcons = getSelected(dock); if (!WMGetArrayItemCount(selectedIcons) && clickedIcon != dock->screen_ptr->clip_icon) { char *command = NULL; if (!clickedIcon->command && !clickedIcon->editing) { clickedIcon->editing = 1; if (wInputDialog(dock->screen_ptr, _("Keep Icon"), _("Type the command used to launch the application"), &command)) { if (command && (command[0] == 0 || (command[0] == '-' && command[1] == 0))) { wfree(command); command = NULL; } clickedIcon->command = command; clickedIcon->editing = 0; } else { clickedIcon->editing = 0; if (command) wfree(command); WMFreeArray(selectedIcons); return; } } WMAddToArray(selectedIcons, clickedIcon); } WM_ITERATE_ARRAY(selectedIcons, aicon, it) { if (aicon->icon->selected) wIconSelect(aicon->icon); if (aicon->attracted && aicon->command) { aicon->attracted = 0; if (aicon->icon->shadowed) { aicon->icon->shadowed = 0; /* * Update icon pixmap, RImage doesn't change, * so call wIconUpdate is not needed */ update_icon_pixmap(aicon->icon); /* Paint it */ wAppIconPaint(aicon); } } save_appicon(aicon); } WMFreeArray(selectedIcons); } static void toggleAutoAttractCallback(WMenu *menu, WMenuEntry *entry) { WDock *dock = (WDock *) entry->clientdata; WScreen *scr = dock->screen_ptr; assert(entry->clientdata != NULL); dock->attract_icons = !dock->attract_icons; entry->flags.indicator_on = dock->attract_icons; wMenuPaint(menu); if (dock->attract_icons) { if (dock->type == WM_DRAWER) { /* The newly auto-attracting dock is a drawer: disable any clip and * previously attracting drawer */ if (!wPreferences.flags.noclip) { int i; for (i = 0; i < scr->workspace_count; i++) scr->workspaces[ i ]->clip->attract_icons = False; /* dock menu will be updated later, when opened */ } if (scr->attracting_drawer != NULL) scr->attracting_drawer->attract_icons = False; scr->attracting_drawer = dock; } else { /* The newly auto-attracting dock is a clip: disable * previously attracting drawer, if applicable */ if (scr->attracting_drawer != NULL) { scr->attracting_drawer->attract_icons = False; /* again, its menu will be updated, later. */ scr->attracting_drawer = NULL; } } } } static void selectCallback(WMenu *menu, WMenuEntry *entry) { WAppIcon *icon = (WAppIcon *) entry->clientdata; assert(icon != NULL); wIconSelect(icon->icon); wMenuPaint(menu); } static void attractIconsCallback(WMenu *menu, WMenuEntry *entry) { WAppIcon *clickedIcon = (WAppIcon *) entry->clientdata; WDock *clip; /* clip... is a WM_CLIP or a WM_DRAWER */ WAppIcon *aicon; int x, y, x_pos, y_pos; Bool update_icon = False; /* Parameter not used, but tell the compiler that it is ok */ (void) menu; assert(entry->clientdata != NULL); clip = clickedIcon->dock; aicon = clip->screen_ptr->app_icon_list; while (aicon) { if (!aicon->docked && wDockFindFreeSlot(clip, &x, &y)) { x_pos = clip->x_pos + x * ICON_SIZE; y_pos = clip->y_pos + y * ICON_SIZE; if (aicon->x_pos != x_pos || aicon->y_pos != y_pos) move_window(aicon->icon->core->window, aicon->x_pos, aicon->y_pos, x_pos, y_pos); aicon->attracted = 1; if (!aicon->icon->shadowed) { aicon->icon->shadowed = 1; update_icon = True; } wDockAttachIcon(clip, aicon, x, y, update_icon); if (clip->collapsed || !clip->mapped) XUnmapWindow(dpy, aicon->icon->core->window); } aicon = aicon->next; } } static void selectIconsCallback(WMenu *menu, WMenuEntry *entry) { WAppIcon *clickedIcon = (WAppIcon *) entry->clientdata; WDock *dock; WMArray *selectedIcons; WMArrayIterator iter; WAppIcon *btn; int i; assert(clickedIcon != NULL); dock = clickedIcon->dock; selectedIcons = getSelected(dock); if (!WMGetArrayItemCount(selectedIcons)) { for (i = 1; i < dock->max_icons; i++) { btn = dock->icon_array[i]; if (btn && !btn->icon->selected) wIconSelect(btn->icon); } } else { WM_ITERATE_ARRAY(selectedIcons, btn, iter) { wIconSelect(btn->icon); } } WMFreeArray(selectedIcons); wMenuPaint(menu); } static void toggleCollapsedCallback(WMenu *menu, WMenuEntry *entry) { assert(entry->clientdata != NULL); toggleCollapsed(entry->clientdata); entry->flags.indicator_on = ((WDock *) entry->clientdata)->collapsed; wMenuPaint(menu); } static void toggleAutoCollapseCallback(WMenu *menu, WMenuEntry *entry) { WDock *dock; assert(entry->clientdata != NULL); dock = (WDock *) entry->clientdata; dock->auto_collapse = !dock->auto_collapse; entry->flags.indicator_on = ((WDock *) entry->clientdata)->auto_collapse; wMenuPaint(menu); } static void toggleAutoRaiseLower(WDock *dock) { WDrawerChain *dc; dock->auto_raise_lower = !dock->auto_raise_lower; if (dock->type == WM_DOCK) { for (dc = dock->screen_ptr->drawers; dc != NULL; dc = dc->next) { toggleAutoRaiseLower(dc->adrawer); } } } static void toggleAutoRaiseLowerCallback(WMenu *menu, WMenuEntry *entry) { WDock *dock; /* Parameter not used, but tell the compiler that it is ok */ (void) menu; assert(entry->clientdata != NULL); dock = (WDock *) entry->clientdata; toggleAutoRaiseLower(dock); entry->flags.indicator_on = ((WDock *) entry->clientdata)->auto_raise_lower; wMenuPaint(menu); } static void launchCallback(WMenu *menu, WMenuEntry *entry) { WAppIcon *btn = (WAppIcon *) entry->clientdata; /* Parameter not used, but tell the compiler that it is ok */ (void) menu; launchDockedApplication(btn, False); } static void settingsCallback(WMenu *menu, WMenuEntry *entry) { WAppIcon *btn = (WAppIcon *) entry->clientdata; /* Parameter not used, but tell the compiler that it is ok */ (void) menu; if (btn->editing) return; ShowDockAppSettingsPanel(btn); } static void hideCallback(WMenu *menu, WMenuEntry *entry) { WApplication *wapp; WAppIcon *btn = (WAppIcon *) entry->clientdata; /* Parameter not used, but tell the compiler that it is ok */ (void) menu; wapp = wApplicationOf(btn->icon->owner->main_window); if (wapp->flags.hidden) { wWorkspaceChange(btn->icon->core->screen_ptr, wapp->last_workspace); wUnhideApplication(wapp, False, False); } else { wHideApplication(wapp); } } static void unhideHereCallback(WMenu *menu, WMenuEntry *entry) { WApplication *wapp; WAppIcon *btn = (WAppIcon *) entry->clientdata; /* Parameter not used, but tell the compiler that it is ok */ (void) menu; wapp = wApplicationOf(btn->icon->owner->main_window); wUnhideApplication(wapp, False, True); } /* Name is only used when type == WM_DRAWER and when restoring a specific * drawer, with a specific name. When creating a drawer, leave name to NULL * and mainIconCreate will find the first unused unique name */ static WAppIcon *mainIconCreate(WScreen *scr, int type, const char *name) { WAppIcon *btn; int x_pos; switch(type) { case WM_CLIP: if (scr->clip_icon) return scr->clip_icon; btn = wAppIconCreateForDock(scr, NULL, "Logo", "WMClip", TILE_CLIP); btn->icon->core->descriptor.handle_expose = clipIconExpose; x_pos = 0; break; case WM_DOCK: default: /* to avoid a warning about btn and x_pos, basically */ btn = wAppIconCreateForDock(scr, NULL, "Logo", "WMDock", TILE_NORMAL); if (wPreferences.flags.clip_merged_in_dock) btn->icon->core->descriptor.handle_expose = clipIconExpose; x_pos = scr->scr_width - ICON_SIZE - DOCK_EXTRA_SPACE; break; case WM_DRAWER: if (name == NULL) name = findUniqueName(scr, "Drawer"); btn = wAppIconCreateForDock(scr, NULL, name, "WMDrawer", TILE_DRAWER); btn->icon->core->descriptor.handle_expose = drawerIconExpose; x_pos = 0; } btn->xindex = 0; btn->yindex = 0; btn->icon->core->descriptor.handle_mousedown = iconMouseDown; btn->icon->core->descriptor.handle_enternotify = clipEnterNotify; btn->icon->core->descriptor.handle_leavenotify = clipLeaveNotify; btn->icon->core->descriptor.parent_type = WCLASS_DOCK_ICON; btn->icon->core->descriptor.parent = btn; XMapWindow(dpy, btn->icon->core->window); btn->x_pos = x_pos; btn->y_pos = 0; btn->docked = 1; if (type == WM_CLIP || (type == WM_DOCK && wPreferences.flags.clip_merged_in_dock)) scr->clip_icon = btn; return btn; } static void switchWSCommand(WMenu *menu, WMenuEntry *entry) { WAppIcon *btn, *icon = (WAppIcon *) entry->clientdata; WScreen *scr = icon->icon->core->screen_ptr; WDock *src, *dest; WMArray *selectedIcons; int x, y; /* Parameter not used, but tell the compiler that it is ok */ (void) menu; if (entry->order == scr->current_workspace) return; src = icon->dock; dest = scr->workspaces[entry->order]->clip; selectedIcons = getSelected(src); if (WMGetArrayItemCount(selectedIcons)) { WMArrayIterator iter; WM_ITERATE_ARRAY(selectedIcons, btn, iter) { if (wDockFindFreeSlot(dest, &x, &y)) { wDockMoveIconBetweenDocks(src, dest, btn, x, y); XUnmapWindow(dpy, btn->icon->core->window); } } } else if (icon != scr->clip_icon) { if (wDockFindFreeSlot(dest, &x, &y)) { wDockMoveIconBetweenDocks(src, dest, icon, x, y); XUnmapWindow(dpy, icon->icon->core->window); } } WMFreeArray(selectedIcons); } static void launchDockedApplication(WAppIcon *btn, Bool withSelection) { WScreen *scr = btn->icon->core->screen_ptr; if (!btn->launching && ((!withSelection && btn->command != NULL) || (withSelection && btn->paste_command != NULL))) { if (!btn->forced_dock) { btn->relaunching = btn->running; btn->running = 1; } if (btn->wm_instance || btn->wm_class) { WWindowAttributes attr; memset(&attr, 0, sizeof(WWindowAttributes)); wDefaultFillAttributes(btn->wm_instance, btn->wm_class, &attr, NULL, True); if (!attr.no_appicon && !btn->buggy_app) btn->launching = 1; else btn->running = 0; } btn->drop_launch = 0; btn->paste_launch = withSelection; scr->last_dock = btn->dock; btn->pid = execCommand(btn, (withSelection ? btn->paste_command : btn->command), NULL); if (btn->pid > 0) { if (btn->buggy_app) { /* give feedback that the app was launched */ btn->launching = 1; dockIconPaint(btn); btn->launching = 0; WMAddTimerHandler(200, (WMCallback *) dockIconPaint, btn); } else { dockIconPaint(btn); } } else { wwarning(_("could not launch application %s"), btn->command); btn->launching = 0; if (!btn->relaunching) btn->running = 0; } } } static void updateWorkspaceMenu(WMenu *menu, WAppIcon *icon) { WScreen *scr = menu->frame->screen_ptr; int i; if (!menu || !icon) return; for (i = 0; i < scr->workspace_count; i++) { if (i < menu->entry_no) { if (strcmp(menu->entries[i]->text, scr->workspaces[i]->name) != 0) { wfree(menu->entries[i]->text); menu->entries[i]->text = wstrdup(scr->workspaces[i]->name); menu->flags.realized = 0; } menu->entries[i]->clientdata = (void *)icon; } else { wMenuAddCallback(menu, scr->workspaces[i]->name, switchWSCommand, (void *)icon); menu->flags.realized = 0; } if (i == scr->current_workspace) wMenuSetEnabled(menu, i, False); else wMenuSetEnabled(menu, i, True); } if (!menu->flags.realized) wMenuRealize(menu); } static WMenu *makeWorkspaceMenu(WScreen *scr) { WMenu *menu; menu = wMenuCreate(scr, NULL, False); if (!menu) wwarning(_("could not create workspace submenu for Clip menu")); wMenuAddCallback(menu, "", switchWSCommand, (void *)scr->clip_icon); menu->flags.realized = 0; wMenuRealize(menu); return menu; } static void updateClipOptionsMenu(WMenu *menu, WDock *dock) { WMenuEntry *entry; int index = 0; if (!menu || !dock) return; /* keep on top */ entry = menu->entries[index]; entry->flags.indicator_on = !dock->lowered; entry->clientdata = dock; wMenuSetEnabled(menu, index, dock->type == WM_CLIP); /* collapsed */ entry = menu->entries[++index]; entry->flags.indicator_on = dock->collapsed; entry->clientdata = dock; /* auto-collapse */ entry = menu->entries[++index]; entry->flags.indicator_on = dock->auto_collapse; entry->clientdata = dock; /* auto-raise/lower */ entry = menu->entries[++index]; entry->flags.indicator_on = dock->auto_raise_lower; entry->clientdata = dock; wMenuSetEnabled(menu, index, dock->lowered && (dock->type == WM_CLIP)); /* attract icons */ entry = menu->entries[++index]; entry->flags.indicator_on = dock->attract_icons; entry->clientdata = dock; menu->flags.realized = 0; wMenuRealize(menu); } static WMenu *makeClipOptionsMenu(WScreen *scr) { WMenu *menu; WMenuEntry *entry; menu = wMenuCreate(scr, NULL, False); if (!menu) { wwarning(_("could not create options submenu for Clip menu")); return NULL; } entry = wMenuAddCallback(menu, _("Keep on Top"), toggleLoweredCallback, NULL); entry->flags.indicator = 1; entry->flags.indicator_on = 1; entry->flags.indicator_type = MI_CHECK; entry = wMenuAddCallback(menu, _("Collapsed"), toggleCollapsedCallback, NULL); entry->flags.indicator = 1; entry->flags.indicator_on = 1; entry->flags.indicator_type = MI_CHECK; entry = wMenuAddCallback(menu, _("Autocollapse"), toggleAutoCollapseCallback, NULL); entry->flags.indicator = 1; entry->flags.indicator_on = 1; entry->flags.indicator_type = MI_CHECK; entry = wMenuAddCallback(menu, _("Autoraise"), toggleAutoRaiseLowerCallback, NULL); entry->flags.indicator = 1; entry->flags.indicator_on = 1; entry->flags.indicator_type = MI_CHECK; entry = wMenuAddCallback(menu, _("Autoattract Icons"), toggleAutoAttractCallback, NULL); entry->flags.indicator = 1; entry->flags.indicator_on = 1; entry->flags.indicator_type = MI_CHECK; menu->flags.realized = 0; wMenuRealize(menu); return menu; } static void setDockPositionNormalCallback(WMenu *menu, WMenuEntry *entry) { WDock *dock = (WDock *) entry->clientdata; WDrawerChain *dc; /* Parameter not used, but tell the compiler that it is ok */ (void) menu; if (entry->flags.indicator_on) // already set, nothing to do return; // Do we come from auto raise lower or keep on top? if (dock->auto_raise_lower) { dock->auto_raise_lower = 0; // Only for aesthetic purposes, can be removed when Autoraise status is no longer exposed in drawer option menu for (dc = dock->screen_ptr->drawers; dc != NULL; dc = dc->next) { dc->adrawer->auto_raise_lower = 0; } } else { // Will take care of setting lowered = 0 in drawers toggleLowered(dock); } entry->flags.indicator_on = 1; } static void setDockPositionAutoRaiseLowerCallback(WMenu *menu, WMenuEntry *entry) { WDock *dock = (WDock *) entry->clientdata; WDrawerChain *dc; /* Parameter not used, but tell the compiler that it is ok */ (void) menu; if (entry->flags.indicator_on) // already set, nothing to do return; // Do we come from normal or keep on top? if (!dock->lowered) { toggleLowered(dock); } dock->auto_raise_lower = 1; // Only for aesthetic purposes, can be removed when Autoraise status is no longer exposed in drawer option menu for (dc = dock->screen_ptr->drawers; dc != NULL; dc = dc->next) { dc->adrawer->auto_raise_lower = 1; } entry->flags.indicator_on = 1; } static void setDockPositionKeepOnTopCallback(WMenu *menu, WMenuEntry *entry) { WDock *dock = (WDock *) entry->clientdata; WDrawerChain *dc; /* Parameter not used, but tell the compiler that it is ok */ (void) menu; if (entry->flags.indicator_on) // already set, nothing to do return; dock->auto_raise_lower = 0; // Only for aesthetic purposes, can be removed when Autoraise status is no longer exposed in drawer option menu for (dc = dock->screen_ptr->drawers; dc != NULL; dc = dc->next) { dc->adrawer->auto_raise_lower = 0; } toggleLowered(dock); entry->flags.indicator_on = 1; } static void updateDockPositionMenu(WMenu *menu, WDock *dock) { WMenuEntry *entry; int index = 0; assert(menu); assert(dock); /* Normal level */ entry = menu->entries[index++]; entry->flags.indicator_on = (dock->lowered && !dock->auto_raise_lower); entry->clientdata = dock; /* Auto-raise/lower */ entry = menu->entries[index++]; entry->flags.indicator_on = dock->auto_raise_lower; entry->clientdata = dock; /* Keep on top */ entry = menu->entries[index++]; entry->flags.indicator_on = !dock->lowered; entry->clientdata = dock; } static WMenu *makeDockPositionMenu(WScreen *scr) { /* When calling this, the dock is being created, so scr->dock is still not set * Therefore the callbacks' clientdata and the indicators can't be set, * they will be updated when the dock menu is opened. */ WMenu *menu; WMenuEntry *entry; menu = wMenuCreate(scr, NULL, False); if (!menu) { wwarning(_("could not create options submenu for dock position menu")); return NULL; } entry = wMenuAddCallback(menu, _("Normal"), setDockPositionNormalCallback, NULL); entry->flags.indicator = 1; entry->flags.indicator_type = MI_DIAMOND; entry = wMenuAddCallback(menu, _("Auto raise & lower"), setDockPositionAutoRaiseLowerCallback, NULL); entry->flags.indicator = 1; entry->flags.indicator_type = MI_DIAMOND; entry = wMenuAddCallback(menu, _("Keep on Top"), setDockPositionKeepOnTopCallback, NULL); entry->flags.indicator = 1; entry->flags.indicator_type = MI_DIAMOND; menu->flags.realized = 0; wMenuRealize(menu); return menu; } static WMenu *dockMenuCreate(WScreen *scr, int type) { WMenu *menu; WMenuEntry *entry; if (type == WM_CLIP && scr->clip_menu) return scr->clip_menu; if (type == WM_DRAWER && scr->drawer_menu) return scr->drawer_menu; menu = wMenuCreate(scr, NULL, False); if (type == WM_DOCK) { entry = wMenuAddCallback(menu, _("Dock position"), NULL, NULL); if (scr->dock_pos_menu == NULL) scr->dock_pos_menu = makeDockPositionMenu(scr); wMenuEntrySetCascade(menu, entry, scr->dock_pos_menu); if (!wPreferences.flags.nodrawer) wMenuAddCallback(menu, _("Add a drawer"), addADrawerCallback, NULL); } else { if (type == WM_CLIP) entry = wMenuAddCallback(menu, _("Clip Options"), NULL, NULL); else /* if (type == WM_DRAWER) */ entry = wMenuAddCallback(menu, _("Drawer options"), NULL, NULL); if (scr->clip_options == NULL) scr->clip_options = makeClipOptionsMenu(scr); wMenuEntrySetCascade(menu, entry, scr->clip_options); /* The same menu is used for the dock and its appicons. If the menu * entry text is different between the two contexts, or if it can * change depending on some state, free the duplicated string (from * wMenuInsertCallback) and use gettext's string */ if (type == WM_CLIP) { entry = wMenuAddCallback(menu, _("Rename Workspace"), renameCallback, NULL); wfree(entry->text); entry->text = _("Rename Workspace"); /* can be: (Toggle) Omnipresent */ } entry = wMenuAddCallback(menu, _("Selected"), selectCallback, NULL); entry->flags.indicator = 1; entry->flags.indicator_on = 1; entry->flags.indicator_type = MI_CHECK; entry = wMenuAddCallback(menu, _("Select All Icons"), selectIconsCallback, NULL); wfree(entry->text); entry->text = _("Select All Icons"); /* can be: Unselect all icons */ entry = wMenuAddCallback(menu, _("Keep Icon"), keepIconsCallback, NULL); wfree(entry->text); entry->text = _("Keep Icon"); /* can be: Keep Icons */ if (type == WM_CLIP) { entry = wMenuAddCallback(menu, _("Move Icon To"), NULL, NULL); wfree(entry->text); entry->text = _("Move Icon To"); /* can be: Move Icons to */ scr->clip_submenu = makeWorkspaceMenu(scr); if (scr->clip_submenu) wMenuEntrySetCascade(menu, entry, scr->clip_submenu); } entry = wMenuAddCallback(menu, _("Remove Icon"), removeIconsCallback, NULL); wfree(entry->text); entry->text = _("Remove Icon"); /* can be: Remove Icons */ wMenuAddCallback(menu, _("Attract Icons"), attractIconsCallback, NULL); } wMenuAddCallback(menu, _("Launch"), launchCallback, NULL); wMenuAddCallback(menu, _("Unhide Here"), unhideHereCallback, NULL); entry = wMenuAddCallback(menu, _("Hide"), hideCallback, NULL); wfree(entry->text); entry->text = _("Hide"); /* can be: Unhide */ wMenuAddCallback(menu, _("Settings..."), settingsCallback, NULL); entry = wMenuAddCallback(menu, _("Kill"), killCallback, NULL); wfree(entry->text); entry->text = _("Kill"); /* can be: Remove drawer */ if (type == WM_CLIP) scr->clip_menu = menu; if (type == WM_DRAWER) scr->drawer_menu = menu; return menu; } WDock *wDockCreate(WScreen *scr, int type, const char *name) { WDock *dock; WAppIcon *btn; make_keys(); dock = wmalloc(sizeof(WDock)); switch (type) { case WM_CLIP: dock->max_icons = DOCK_MAX_ICONS; break; case WM_DRAWER: dock->max_icons = scr->scr_width / wPreferences.icon_size; break; case WM_DOCK: default: dock->max_icons = scr->scr_height / wPreferences.icon_size; } dock->icon_array = wmalloc(sizeof(WAppIcon *) * dock->max_icons); btn = mainIconCreate(scr, type, name); btn->dock = dock; dock->x_pos = btn->x_pos; dock->y_pos = btn->y_pos; dock->screen_ptr = scr; dock->type = type; dock->icon_count = 1; if (type == WM_DRAWER) dock->on_right_side = scr->dock->on_right_side; else dock->on_right_side = 1; dock->collapsed = 0; dock->auto_collapse = 0; dock->auto_collapse_magic = NULL; dock->auto_raise_lower = 0; dock->auto_lower_magic = NULL; dock->auto_raise_magic = NULL; dock->attract_icons = 0; dock->lowered = 1; dock->icon_array[0] = btn; wRaiseFrame(btn->icon->core); XMoveWindow(dpy, btn->icon->core->window, btn->x_pos, btn->y_pos); /* create dock menu */ dock->menu = dockMenuCreate(scr, type); if (type == WM_DRAWER) { drawerAppendToChain(scr, dock); dock->auto_collapse = 1; } return dock; } void wDockDestroy(WDock *dock) { int i; WAppIcon *aicon; for (i = (dock->type == WM_CLIP) ? 1 : 0; i < dock->max_icons; i++) { aicon = dock->icon_array[i]; if (aicon) { int keepit = aicon->running && wApplicationOf(aicon->main_window); wDockDetach(dock, aicon); if (keepit) { /* XXX: can: aicon->icon == NULL ? */ PlaceIcon(dock->screen_ptr, &aicon->x_pos, &aicon->y_pos, wGetHeadForWindow(aicon->icon->owner)); XMoveWindow(dpy, aicon->icon->core->window, aicon->x_pos, aicon->y_pos); if (!dock->mapped || dock->collapsed) XMapWindow(dpy, aicon->icon->core->window); } } } if (wPreferences.auto_arrange_icons) wArrangeIcons(dock->screen_ptr, True); wfree(dock->icon_array); if (dock->menu && dock->type != WM_CLIP) wMenuDestroy(dock->menu, True); if (dock->screen_ptr->last_dock == dock) dock->screen_ptr->last_dock = NULL; wfree(dock); } void wClipIconPaint(WAppIcon *aicon) { WScreen *scr = aicon->icon->core->screen_ptr; WWorkspace *workspace = scr->workspaces[scr->current_workspace]; WMColor *color; Window win = aicon->icon->core->window; int length, nlength; char *ws_name, ws_number[sizeof scr->current_workspace * CHAR_BIT / 3 + 1]; int ty, tx; wIconPaint(aicon->icon); length = strlen(workspace->name); ws_name = wmalloc(length + 1); snprintf(ws_name, length + 1, "%s", workspace->name); snprintf(ws_number, sizeof ws_number, "%u", scr->current_workspace + 1); nlength = strlen(ws_number); if (wPreferences.flags.noclip || !workspace->clip->collapsed) color = scr->clip_title_color[CLIP_NORMAL]; else color = scr->clip_title_color[CLIP_COLLAPSED]; ty = ICON_SIZE - WMFontHeight(scr->clip_title_font) - 3; tx = CLIP_BUTTON_SIZE * ICON_SIZE / 64; if(wPreferences.show_clip_title) WMDrawString(scr->wmscreen, win, color, scr->clip_title_font, tx, ty, ws_name, length); tx = (ICON_SIZE / 2 - WMWidthOfString(scr->clip_title_font, ws_number, nlength)) / 2; WMDrawString(scr->wmscreen, win, color, scr->clip_title_font, tx, 2, ws_number, nlength); wfree(ws_name); if (aicon->launching) XFillRectangle(dpy, aicon->icon->core->window, scr->stipple_gc, 0, 0, wPreferences.icon_size, wPreferences.icon_size); paintClipButtons(aicon, aicon->dock->lclip_button_pushed, aicon->dock->rclip_button_pushed); } static void clipIconExpose(WObjDescriptor *desc, XEvent *event) { /* Parameter not used, but tell the compiler that it is ok */ (void) desc; (void) event; wClipIconPaint(desc->parent); } static void dockIconPaint(WAppIcon *btn) { if (btn == btn->icon->core->screen_ptr->clip_icon) { wClipIconPaint(btn); } else if (wIsADrawer(btn)) { wDrawerIconPaint(btn); } else { wAppIconPaint(btn); save_appicon(btn); } } static WMPropList *make_icon_state(WAppIcon *btn) { WMPropList *node = NULL; WMPropList *command, *autolaunch, *lock, *name, *forced; WMPropList *position, *buggy, *omnipresent; char *tmp; char buffer[64]; if (btn) { if (!btn->command) command = WMCreatePLString("-"); else command = WMCreatePLString(btn->command); autolaunch = btn->auto_launch ? dYes : dNo; lock = btn->lock ? dYes : dNo; tmp = EscapeWM_CLASS(btn->wm_instance, btn->wm_class); name = WMCreatePLString(tmp); wfree(tmp); forced = btn->forced_dock ? dYes : dNo; buggy = btn->buggy_app ? dYes : dNo; if (!wPreferences.flags.clip_merged_in_dock && btn == btn->icon->core->screen_ptr->clip_icon) snprintf(buffer, sizeof(buffer), "%i,%i", btn->x_pos, btn->y_pos); else snprintf(buffer, sizeof(buffer), "%hi,%hi", btn->xindex, btn->yindex); position = WMCreatePLString(buffer); node = WMCreatePLDictionary(dCommand, command, dName, name, dAutoLaunch, autolaunch, dLock, lock, dForced, forced, dBuggyApplication, buggy, dPosition, position, NULL); WMReleasePropList(command); WMReleasePropList(name); WMReleasePropList(position); omnipresent = btn->omnipresent ? dYes : dNo; if (btn->dock != btn->icon->core->screen_ptr->dock && (btn->xindex != 0 || btn->yindex != 0)) WMPutInPLDictionary(node, dOmnipresent, omnipresent); #ifdef USE_DOCK_XDND if (btn->dnd_command) { command = WMCreatePLString(btn->dnd_command); WMPutInPLDictionary(node, dDropCommand, command); WMReleasePropList(command); } #endif /* USE_DOCK_XDND */ if (btn->paste_command) { command = WMCreatePLString(btn->paste_command); WMPutInPLDictionary(node, dPasteCommand, command); WMReleasePropList(command); } } return node; } static WMPropList *dockSaveState(WDock *dock) { int i; WMPropList *icon_info; WMPropList *list = NULL, *dock_state = NULL; WMPropList *value, *key; char buffer[256]; list = WMCreatePLArray(NULL); for (i = (dock->type == WM_DOCK ? 0 : 1); i < dock->max_icons; i++) { WAppIcon *btn = dock->icon_array[i]; if (!btn || btn->attracted) continue; icon_info = make_icon_state(dock->icon_array[i]); if (icon_info != NULL) { WMAddToPLArray(list, icon_info); WMReleasePropList(icon_info); } } dock_state = WMCreatePLDictionary(dApplications, list, NULL); if (dock->type == WM_DOCK) { snprintf(buffer, sizeof(buffer), "Applications%i", dock->screen_ptr->scr_height); key = WMCreatePLString(buffer); WMPutInPLDictionary(dock_state, key, list); WMReleasePropList(key); snprintf(buffer, sizeof(buffer), "%i,%i", (dock->on_right_side ? -ICON_SIZE : 0), dock->y_pos); value = WMCreatePLString(buffer); WMPutInPLDictionary(dock_state, dPosition, value); WMReleasePropList(value); } WMReleasePropList(list); if (dock->type == WM_CLIP || dock->type == WM_DRAWER) { value = (dock->collapsed ? dYes : dNo); WMPutInPLDictionary(dock_state, dCollapsed, value); value = (dock->auto_collapse ? dYes : dNo); WMPutInPLDictionary(dock_state, dAutoCollapse, value); value = (dock->attract_icons ? dYes : dNo); WMPutInPLDictionary(dock_state, dAutoAttractIcons, value); } if (dock->type == WM_DOCK || dock->type == WM_CLIP) { value = (dock->lowered ? dYes : dNo); WMPutInPLDictionary(dock_state, dLowered, value); value = (dock->auto_raise_lower ? dYes : dNo); WMPutInPLDictionary(dock_state, dAutoRaiseLower, value); } return dock_state; } void wDockSaveState(WScreen *scr, WMPropList *old_state) { WMPropList *dock_state; WMPropList *keys; dock_state = dockSaveState(scr->dock); /* * Copy saved states of docks with different sizes. */ if (old_state) { int i; WMPropList *tmp; keys = WMGetPLDictionaryKeys(old_state); for (i = 0; i < WMGetPropListItemCount(keys); i++) { tmp = WMGetFromPLArray(keys, i); if (strncasecmp(WMGetFromPLString(tmp), "applications", 12) == 0 && !WMGetFromPLDictionary(dock_state, tmp)) { WMPutInPLDictionary(dock_state, tmp, WMGetFromPLDictionary(old_state, tmp)); } } WMReleasePropList(keys); } WMPutInPLDictionary(scr->session_state, dDock, dock_state); WMReleasePropList(dock_state); } void wClipSaveState(WScreen *scr) { WMPropList *clip_state; clip_state = make_icon_state(scr->clip_icon); WMPutInPLDictionary(scr->session_state, dClip, clip_state); WMReleasePropList(clip_state); } WMPropList *wClipSaveWorkspaceState(WScreen *scr, int workspace) { return dockSaveState(scr->workspaces[workspace]->clip); } static Bool getBooleanDockValue(WMPropList *value, WMPropList *key) { if (value) { if (WMIsPLString(value)) { if (strcasecmp(WMGetFromPLString(value), "YES") == 0) return True; } else { wwarning(_("bad value in docked icon state info %s"), WMGetFromPLString(key)); } } return False; } static WAppIcon *restore_icon_state(WScreen *scr, WMPropList *info, int type, int index) { WAppIcon *aicon; WMPropList *cmd, *value; char *wclass, *winstance, *command; cmd = WMGetFromPLDictionary(info, dCommand); if (!cmd || !WMIsPLString(cmd)) return NULL; /* parse window name */ value = WMGetFromPLDictionary(info, dName); if (!value) return NULL; ParseWindowName(value, &winstance, &wclass, "dock"); if (!winstance && !wclass) return NULL; /* get commands */ command = wstrdup(WMGetFromPLString(cmd)); if (strcmp(command, "-") == 0) { wfree(command); if (wclass) wfree(wclass); if (winstance) wfree(winstance); return NULL; } aicon = wAppIconCreateForDock(scr, command, winstance, wclass, TILE_NORMAL); if (wclass) wfree(wclass); if (winstance) wfree(winstance); wfree(command); aicon->icon->core->descriptor.handle_mousedown = iconMouseDown; aicon->icon->core->descriptor.handle_enternotify = clipEnterNotify; aicon->icon->core->descriptor.handle_leavenotify = clipLeaveNotify; aicon->icon->core->descriptor.parent_type = WCLASS_DOCK_ICON; aicon->icon->core->descriptor.parent = aicon; #ifdef USE_DOCK_XDND cmd = WMGetFromPLDictionary(info, dDropCommand); if (cmd) aicon->dnd_command = wstrdup(WMGetFromPLString(cmd)); #endif cmd = WMGetFromPLDictionary(info, dPasteCommand); if (cmd) aicon->paste_command = wstrdup(WMGetFromPLString(cmd)); /* check auto launch */ value = WMGetFromPLDictionary(info, dAutoLaunch); aicon->auto_launch = getBooleanDockValue(value, dAutoLaunch); /* check lock */ value = WMGetFromPLDictionary(info, dLock); aicon->lock = getBooleanDockValue(value, dLock); /* check if it wasn't normally docked */ value = WMGetFromPLDictionary(info, dForced); aicon->forced_dock = getBooleanDockValue(value, dForced); /* check if we can rely on the stuff in the app */ value = WMGetFromPLDictionary(info, dBuggyApplication); aicon->buggy_app = getBooleanDockValue(value, dBuggyApplication); /* get position in the dock */ value = WMGetFromPLDictionary(info, dPosition); if (value && WMIsPLString(value)) { if (sscanf(WMGetFromPLString(value), "%hi,%hi", &aicon->xindex, &aicon->yindex) != 2) wwarning(_("bad value in docked icon state info %s"), WMGetFromPLString(dPosition)); /* check position sanity */ /* *Very* incomplete section! */ if (type == WM_DOCK) { aicon->xindex = 0; } } else { aicon->yindex = index; aicon->xindex = 0; } /* check if icon is omnipresent */ value = WMGetFromPLDictionary(info, dOmnipresent); aicon->omnipresent = getBooleanDockValue(value, dOmnipresent); aicon->running = 0; aicon->docked = 1; return aicon; } #define COMPLAIN(key) wwarning(_("bad value in dock state info:%s"), key) WAppIcon *wClipRestoreState(WScreen *scr, WMPropList *clip_state) { WAppIcon *icon; WMPropList *value; icon = mainIconCreate(scr, WM_CLIP, NULL); if (!clip_state) return icon; WMRetainPropList(clip_state); /* restore position */ value = WMGetFromPLDictionary(clip_state, dPosition); if (value) { if (!WMIsPLString(value)) { COMPLAIN("Position"); } else { if (sscanf(WMGetFromPLString(value), "%i,%i", &icon->x_pos, &icon->y_pos) != 2) COMPLAIN("Position"); /* check position sanity */ if (!onScreen(scr, icon->x_pos, icon->y_pos)) wScreenKeepInside(scr, &icon->x_pos, &icon->y_pos, ICON_SIZE, ICON_SIZE); } } #ifdef USE_DOCK_XDND value = WMGetFromPLDictionary(clip_state, dDropCommand); if (value && WMIsPLString(value)) icon->dnd_command = wstrdup(WMGetFromPLString(value)); #endif value = WMGetFromPLDictionary(clip_state, dPasteCommand); if (value && WMIsPLString(value)) icon->paste_command = wstrdup(WMGetFromPLString(value)); WMReleasePropList(clip_state); return icon; } WDock *wDockRestoreState(WScreen *scr, WMPropList *dock_state, int type) { WDock *dock; WMPropList *apps; WMPropList *value; WAppIcon *aicon, *old_top; int count, i; dock = wDockCreate(scr, type, NULL); if (!dock_state) return dock; WMRetainPropList(dock_state); /* restore position */ value = WMGetFromPLDictionary(dock_state, dPosition); if (value) { if (!WMIsPLString(value)) { COMPLAIN("Position"); } else { if (sscanf(WMGetFromPLString(value), "%i,%i", &dock->x_pos, &dock->y_pos) != 2) COMPLAIN("Position"); /* check position sanity */ if (!onScreen(scr, dock->x_pos, dock->y_pos)) { int x = dock->x_pos; wScreenKeepInside(scr, &x, &dock->y_pos, ICON_SIZE, ICON_SIZE); } /* Is this needed any more? */ 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 { 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; dock->on_right_side = 1; } } } } /* restore lowered/raised state */ dock->lowered = 0; value = WMGetFromPLDictionary(dock_state, dLowered); if (value) { if (!WMIsPLString(value)) { COMPLAIN("Lowered"); } else { if (strcasecmp(WMGetFromPLString(value), "YES") == 0) dock->lowered = 1; } } /* restore collapsed state */ dock->collapsed = 0; value = WMGetFromPLDictionary(dock_state, dCollapsed); if (value) { if (!WMIsPLString(value)) { COMPLAIN("Collapsed"); } else { if (strcasecmp(WMGetFromPLString(value), "YES") == 0) dock->collapsed = 1; } } /* restore auto-collapsed state */ value = WMGetFromPLDictionary(dock_state, dAutoCollapse); if (value) { if (!WMIsPLString(value)) { COMPLAIN("AutoCollapse"); } else { if (strcasecmp(WMGetFromPLString(value), "YES") == 0) { dock->auto_collapse = 1; dock->collapsed = 1; } } } /* restore auto-raise/lower state */ value = WMGetFromPLDictionary(dock_state, dAutoRaiseLower); if (value) { if (!WMIsPLString(value)) { COMPLAIN("AutoRaiseLower"); } else { if (strcasecmp(WMGetFromPLString(value), "YES") == 0) dock->auto_raise_lower = 1; } } /* restore attract icons state */ dock->attract_icons = 0; value = WMGetFromPLDictionary(dock_state, dAutoAttractIcons); if (value) { if (!WMIsPLString(value)) { COMPLAIN("AutoAttractIcons"); } else { if (strcasecmp(WMGetFromPLString(value), "YES") == 0) dock->attract_icons = 1; } } /* application list */ { WMPropList *tmp; char buffer[64]; /* * When saving, it saves the dock state in * Applications and Applicationsnnn * * When loading, it will first try Applicationsnnn. * If it does not exist, use Applications as default. */ snprintf(buffer, sizeof(buffer), "Applications%i", scr->scr_height); tmp = WMCreatePLString(buffer); apps = WMGetFromPLDictionary(dock_state, tmp); WMReleasePropList(tmp); if (!apps) apps = WMGetFromPLDictionary(dock_state, dApplications); } if (!apps) goto finish; count = WMGetPropListItemCount(apps); if (count == 0) goto finish; old_top = dock->icon_array[0]; /* dock->icon_count is set to 1 when dock is created. * Since Clip is already restored, we want to keep it so for clip, * but for dock we may change the default top tile, so we set it to 0. */ if (type == WM_DOCK) dock->icon_count = 0; for (i = 0; i < count; i++) { if (dock->icon_count >= dock->max_icons) { wwarning(_("there are too many icons stored in dock. Ignoring what doesn't fit")); break; } value = WMGetFromPLArray(apps, i); aicon = restore_icon_state(scr, value, type, dock->icon_count); dock->icon_array[dock->icon_count] = aicon; if (aicon) { aicon->dock = dock; aicon->x_pos = dock->x_pos + (aicon->xindex * ICON_SIZE); aicon->y_pos = dock->y_pos + (aicon->yindex * ICON_SIZE); if (dock->lowered) ChangeStackingLevel(aicon->icon->core, WMNormalLevel); else ChangeStackingLevel(aicon->icon->core, WMDockLevel); wCoreConfigure(aicon->icon->core, aicon->x_pos, aicon->y_pos, 0, 0); if (!dock->collapsed) XMapWindow(dpy, aicon->icon->core->window); wRaiseFrame(aicon->icon->core); dock->icon_count++; } else if (dock->icon_count == 0 && type == WM_DOCK) { dock->icon_count++; } } /* if the first icon is not defined, use the default */ if (dock->icon_array[0] == NULL) { /* update default icon */ old_top->x_pos = dock->x_pos; old_top->y_pos = dock->y_pos; if (dock->lowered) ChangeStackingLevel(old_top->icon->core, WMNormalLevel); else ChangeStackingLevel(old_top->icon->core, WMDockLevel); dock->icon_array[0] = old_top; XMoveWindow(dpy, old_top->icon->core->window, dock->x_pos, dock->y_pos); /* we don't need to increment dock->icon_count here because it was * incremented in the loop above. */ } else if (old_top != dock->icon_array[0]) { if (old_top == scr->clip_icon) // TODO dande: understand the logic scr->clip_icon = dock->icon_array[0]; wAppIconDestroy(old_top); } finish: WMReleasePropList(dock_state); return dock; } void wDockLaunchWithState(WAppIcon *btn, WSavedState *state) { if (btn && btn->command && !btn->running && !btn->launching) { btn->drop_launch = 0; btn->paste_launch = 0; btn->pid = execCommand(btn, btn->command, state); if (btn->pid > 0) { if (!btn->forced_dock && !btn->buggy_app) { btn->launching = 1; dockIconPaint(btn); } } } else { wfree(state); } } void wDockDoAutoLaunch(WDock *dock, int workspace) { WAppIcon *btn; WSavedState *state; int i; for (i = 0; i < dock->max_icons; i++) { btn = dock->icon_array[i]; if (!btn || !btn->auto_launch) continue; state = wmalloc(sizeof(WSavedState)); state->workspace = workspace; /* TODO: this is klugy and is very difficult to understand * what's going on. Try to clean up */ wDockLaunchWithState(btn, state); } } #ifdef USE_DOCK_XDND static WDock *findDock(WScreen *scr, XEvent *event, int *icon_pos) { WDock *dock; int i; dock = scr->dock; if (dock != NULL) { for (i = 0; i < dock->max_icons; i++) { if (dock->icon_array[i] && dock->icon_array[i]->icon->core->window == event->xclient.window) { *icon_pos = i; return dock; } } } dock = scr->workspaces[scr->current_workspace]->clip; if (dock != NULL) { for (i = 0; i < dock->max_icons; i++) { if (dock->icon_array[i] && dock->icon_array[i]->icon->core->window == event->xclient.window) { *icon_pos = i; return dock; } } } *icon_pos = -1; return NULL; } int wDockReceiveDNDDrop(WScreen *scr, XEvent *event) { WDock *dock; WAppIcon *btn; int icon_pos; dock = findDock(scr, event, &icon_pos); if (!dock) return False; /* * Return True if the drop was on an application icon window. * In this case, let the ClientMessage handler redirect the * message to the app. */ if (dock->icon_array[icon_pos]->icon->icon_win != None) return True; if (dock->icon_array[icon_pos]->dnd_command != NULL) { scr->flags.dnd_data_convertion_status = 0; btn = dock->icon_array[icon_pos]; if (!btn->forced_dock) { btn->relaunching = btn->running; btn->running = 1; } if (btn->wm_instance || btn->wm_class) { WWindowAttributes attr; memset(&attr, 0, sizeof(WWindowAttributes)); wDefaultFillAttributes(btn->wm_instance, btn->wm_class, &attr, NULL, True); if (!attr.no_appicon) btn->launching = 1; else btn->running = 0; } btn->paste_launch = 0; btn->drop_launch = 1; scr->last_dock = dock; btn->pid = execCommand(btn, btn->dnd_command, NULL); if (btn->pid > 0) { dockIconPaint(btn); } else { btn->launching = 0; if (!btn->relaunching) btn->running = 0; } } return False; } #endif /* USE_DOCK_XDND */ Bool wDockAttachIcon(WDock *dock, WAppIcon *icon, int x, int y, Bool update_icon) { WWindow *wwin; Bool lupdate_icon = False; char *command = NULL; int index; icon->editing = 0; if (update_icon) lupdate_icon = True; if (icon->command == NULL) { /* If icon->owner exists, it means the application is running */ if (icon->icon->owner) { wwin = icon->icon->owner; command = GetCommandForWindow(wwin->client_win); } if (command) { icon->command = command; } else { /* icon->forced_dock = 1; */ if (dock->type != WM_CLIP || !icon->attracted) { icon->editing = 1; if (wInputDialog(dock->screen_ptr, _("Dock Icon"), _("Type the command used to launch the application"), &command)) { if (command && (command[0] == 0 || (command[0] == '-' && command[1] == 0))) { wfree(command); command = NULL; } icon->command = command; icon->editing = 0; } else { icon->editing = 0; if (command) wfree(command); /* If the target is the dock, reject the icon. If * the target is the clip, make it an attracted icon */ if (dock->type == WM_CLIP) { icon->attracted = 1; if (!icon->icon->shadowed) { icon->icon->shadowed = 1; lupdate_icon = True; } } else { return False; } } } } } for (index = 1; index < dock->max_icons; index++) if (dock->icon_array[index] == NULL) break; /* if (index == dock->max_icons) return; */ assert(index < dock->max_icons); dock->icon_array[index] = icon; icon->yindex = y; icon->xindex = x; icon->omnipresent = 0; icon->x_pos = dock->x_pos + x * ICON_SIZE; icon->y_pos = dock->y_pos + y * ICON_SIZE; dock->icon_count++; icon->running = 1; icon->launching = 0; icon->docked = 1; icon->dock = dock; icon->icon->core->descriptor.handle_mousedown = iconMouseDown; icon->icon->core->descriptor.handle_enternotify = clipEnterNotify; icon->icon->core->descriptor.handle_leavenotify = clipLeaveNotify; icon->icon->core->descriptor.parent_type = WCLASS_DOCK_ICON; icon->icon->core->descriptor.parent = icon; MoveInStackListUnder(dock->icon_array[index - 1]->icon->core, icon->icon->core); wAppIconMove(icon, icon->x_pos, icon->y_pos); /* * Update icon pixmap, RImage doesn't change, * so call wIconUpdate is not needed */ if (lupdate_icon) update_icon_pixmap(icon->icon); /* Paint it */ wAppIconPaint(icon); /* Save it */ save_appicon(icon); if (wPreferences.auto_arrange_icons) wArrangeIcons(dock->screen_ptr, True); #ifdef USE_DOCK_XDND if (icon->command && !icon->dnd_command) { int len = strlen(icon->command) + 8; icon->dnd_command = wmalloc(len); snprintf(icon->dnd_command, len, "%s %%d", icon->command); } #endif if (icon->command && !icon->paste_command) { int len = strlen(icon->command) + 8; icon->paste_command = wmalloc(len); snprintf(icon->paste_command, len, "%s %%s", icon->command); } return True; } void wDockReattachIcon(WDock *dock, WAppIcon *icon, int x, int y) { int index; for (index = 1; index < dock->max_icons; index++) { if (dock->icon_array[index] == icon) break; } assert(index < dock->max_icons); icon->yindex = y; icon->xindex = x; icon->x_pos = dock->x_pos + x * ICON_SIZE; icon->y_pos = dock->y_pos + y * ICON_SIZE; } Bool wDockMoveIconBetweenDocks(WDock *src, WDock *dest, WAppIcon *icon, int x, int y) { WWindow *wwin; char *command = NULL; int index; Bool update_icon = False; if (src == dest) return True; /* No move needed, we're already there */ if (dest == NULL) return False; /* * For the moment we can't do this if we move icons in Clip from one * workspace to other, because if we move two or more icons without * command, the dialog box will not be able to tell us to which of the * moved icons it applies. -Dan */ if ((dest->type == WM_DOCK /*|| dest->keep_attracted */ ) && icon->command == NULL) { /* If icon->owner exists, it means the application is running */ if (icon->icon->owner) { wwin = icon->icon->owner; command = GetCommandForWindow(wwin->client_win); } if (command) { icon->command = command; } else { icon->editing = 1; /* icon->forced_dock = 1; */ if (wInputDialog(src->screen_ptr, _("Dock Icon"), _("Type the command used to launch the application"), &command)) { if (command && (command[0] == 0 || (command[0] == '-' && command[1] == 0))) { wfree(command); command = NULL; } icon->command = command; } else { icon->editing = 0; if (command) wfree(command); return False; } icon->editing = 0; } } if (dest->type == WM_DOCK || dest->type == WM_DRAWER) wClipMakeIconOmnipresent(icon, False); for (index = 1; index < src->max_icons; index++) { if (src->icon_array[index] == icon) break; } assert(index < src->max_icons); src->icon_array[index] = NULL; src->icon_count--; for (index = 1; index < dest->max_icons; index++) { if (dest->icon_array[index] == NULL) break; } assert(index < dest->max_icons); dest->icon_array[index] = icon; icon->dock = dest; /* deselect the icon */ if (icon->icon->selected) wIconSelect(icon->icon); icon->icon->core->descriptor.handle_enternotify = clipEnterNotify; icon->icon->core->descriptor.handle_leavenotify = clipLeaveNotify; /* set it to be kept when moving to dock. * Unless the icon does not have a command set */ if (icon->command && (dest->type == WM_DOCK || dest->type == WM_DRAWER)) { icon->attracted = 0; if (icon->icon->shadowed) { icon->icon->shadowed = 0; update_icon = True; } } if (src->auto_collapse || src->auto_raise_lower) clipLeave(src); icon->yindex = y; icon->xindex = x; icon->x_pos = dest->x_pos + x * ICON_SIZE; icon->y_pos = dest->y_pos + y * ICON_SIZE; dest->icon_count++; MoveInStackListUnder(dest->icon_array[index - 1]->icon->core, icon->icon->core); /* * Update icon pixmap, RImage doesn't change, * so call wIconUpdate is not needed */ if (update_icon) update_icon_pixmap(icon->icon); /* Paint it */ wAppIconPaint(icon); return True; } void wDockDetach(WDock *dock, WAppIcon *icon) { int index; Bool update_icon = False; /* make the settings panel be closed */ if (icon->panel) DestroyDockAppSettingsPanel(icon->panel); /* This must be called before icon->dock is set to NULL. * Don't move it. -Dan */ wClipMakeIconOmnipresent(icon, False); icon->docked = 0; icon->dock = NULL; icon->attracted = 0; icon->auto_launch = 0; if (icon->icon->shadowed) { icon->icon->shadowed = 0; update_icon = True; } /* deselect the icon */ if (icon->icon->selected) wIconSelect(icon->icon); if (icon->command) { wfree(icon->command); icon->command = NULL; } #ifdef USE_DOCK_XDND if (icon->dnd_command) { wfree(icon->dnd_command); icon->dnd_command = NULL; } #endif if (icon->paste_command) { wfree(icon->paste_command); icon->paste_command = NULL; } for (index = 1; index < dock->max_icons; index++) if (dock->icon_array[index] == icon) break; assert(index < dock->max_icons); dock->icon_array[index] = NULL; icon->yindex = -1; icon->xindex = -1; dock->icon_count--; /* Remove the Cached Icon */ remove_cache_icon(icon->icon->file); /* if the dock is not attached to an application or * the application did not set the appropriate hints yet, * destroy the icon */ if (!icon->running || !wApplicationOf(icon->main_window)) { wAppIconDestroy(icon); } else { icon->icon->core->descriptor.handle_mousedown = appIconMouseDown; icon->icon->core->descriptor.handle_enternotify = NULL; icon->icon->core->descriptor.handle_leavenotify = NULL; icon->icon->core->descriptor.parent_type = WCLASS_APPICON; icon->icon->core->descriptor.parent = icon; ChangeStackingLevel(icon->icon->core, NORMAL_ICON_LEVEL); /* * Update icon pixmap, RImage doesn't change, * so call wIconUpdate is not needed */ if (update_icon) update_icon_pixmap(icon->icon); /* Paint it */ wAppIconPaint(icon); if (wPreferences.auto_arrange_icons) wArrangeIcons(dock->screen_ptr, True); } if (dock->auto_collapse || dock->auto_raise_lower) clipLeave(dock); } /* * returns the closest Dock slot index for the passed * coordinates. * * Returns False if icon can't be docked. * * Note: this function should NEVER alter ret_x or ret_y, unless it will * return True. -Dan */ /* Redocking == true means either icon->dock == dock (normal case) * or we are called from handleDockMove for a drawer */ Bool wDockSnapIcon(WDock *dock, WAppIcon *icon, int req_x, int req_y, int *ret_x, int *ret_y, int redocking) { WScreen *scr = dock->screen_ptr; int dx, dy; int ex_x, ex_y; int i, offset = ICON_SIZE / 2; WAppIcon *aicon = NULL; WAppIcon *nicon = NULL; if (wPreferences.flags.noupdates) return False; dx = dock->x_pos; dy = dock->y_pos; /* if the dock is full */ if (!redocking && (dock->icon_count >= dock->max_icons)) return False; /* exact position */ if (req_y < dy) ex_y = (req_y - offset - dy) / ICON_SIZE; else ex_y = (req_y + offset - dy) / ICON_SIZE; if (req_x < dx) ex_x = (req_x - offset - dx) / ICON_SIZE; else ex_x = (req_x + offset - dx) / ICON_SIZE; /* check if the icon is outside the screen boundaries */ if (!onScreen(scr, dx + ex_x * ICON_SIZE, dy + ex_y * ICON_SIZE)) return False; switch (dock->type) { case WM_DOCK: /* We can return False right away if * - we do not come from this dock (which is a WM_DOCK), * - we are not right over it, and * - we are not the main tile of a drawer. * In the latter case, we are called from handleDockMove. */ if (icon->dock != dock && ex_x != 0 && !(icon->dock && icon->dock->type == WM_DRAWER && icon == icon->dock->icon_array[0])) return False; if (!redocking && ex_x != 0) return False; if (getDrawer(scr, ex_y)) /* Return false so that the drawer gets it. */ return False; aicon = NULL; for (i = 0; i < dock->max_icons; i++) { nicon = dock->icon_array[i]; if (nicon && nicon->yindex == ex_y) { aicon = nicon; break; } } if (redocking) { int sig, done, closest; /* Possible cases when redocking: * * icon dragged out of range of any slot -> false * icon dragged on a drawer -> false (to open the drawer) * icon dragged to range of free slot * icon dragged to range of same slot * icon dragged to range of different icon */ if (abs(ex_x) > DOCK_DETTACH_THRESHOLD) return False; if (aicon == icon || !aicon) { *ret_x = 0; *ret_y = ex_y; return True; } /* start looking at the upper slot or lower? */ if (ex_y * ICON_SIZE < (req_y + offset - dy)) sig = 1; else sig = -1; done = 0; /* look for closest free slot */ for (i = 0; i < (DOCK_DETTACH_THRESHOLD + 1) * 2 && !done; i++) { int j; done = 1; closest = sig * (i / 2) + ex_y; /* check if this slot is fully on the screen and not used */ if (onScreen(scr, dx, dy + closest * ICON_SIZE)) { for (j = 0; j < dock->max_icons; j++) { if (dock->icon_array[j] && dock->icon_array[j]->yindex == closest) { /* slot is used by someone else */ if (dock->icon_array[j] != icon) done = 0; break; } } /* slot is used by a drawer */ done = done && !getDrawer(scr, closest); } else // !onScreen done = 0; sig = -sig; } if (done && ((ex_y >= closest && ex_y - closest < DOCK_DETTACH_THRESHOLD + 1) || (ex_y < closest && closest - ex_y <= DOCK_DETTACH_THRESHOLD + 1))) { *ret_x = 0; *ret_y = closest; return True; } } else { /* !redocking */ /* if slot is free and the icon is close enough, return it */ if (!aicon && ex_x == 0) { *ret_x = 0; *ret_y = ex_y; return True; } } break; case WM_CLIP: { int neighbours = 0; int start, stop, k; start = icon->omnipresent ? 0 : scr->current_workspace; stop = icon->omnipresent ? scr->workspace_count : start + 1; aicon = NULL; for (k = start; k < stop; k++) { WDock *tmp = scr->workspaces[k]->clip; if (!tmp) continue; for (i = 0; i < tmp->max_icons; i++) { nicon = tmp->icon_array[i]; if (nicon && nicon->xindex == ex_x && nicon->yindex == ex_y) { aicon = nicon; break; } } if (aicon) break; } for (k = start; k < stop; k++) { WDock *tmp = scr->workspaces[k]->clip; if (!tmp) continue; for (i = 0; i < tmp->max_icons; i++) { nicon = tmp->icon_array[i]; if (nicon && nicon != icon && /* Icon can't be it's own neighbour */ (abs(nicon->xindex - ex_x) <= CLIP_ATTACH_VICINITY && abs(nicon->yindex - ex_y) <= CLIP_ATTACH_VICINITY)) { neighbours = 1; break; } } if (neighbours) break; } if (neighbours && (aicon == NULL || (redocking && aicon == icon))) { *ret_x = ex_x; *ret_y = ex_y; return True; } break; } case WM_DRAWER: { WAppIcon *aicons_to_shift[ dock->icon_count ]; int index_of_hole, j; if (ex_y != 0 || abs(ex_x) - dock->icon_count > DOCK_DETTACH_THRESHOLD || (ex_x < 0 && !dock->on_right_side) || (ex_x > 0 && dock->on_right_side)) { return False; } if (ex_x == 0) ex_x = (dock->on_right_side ? -1 : 1); /* "Reduce" ex_x but keep its sign */ if (redocking) { if (abs(ex_x) > dock->icon_count - 1) /* minus 1: do not take icon_array[0] into account */ ex_x = ex_x * (dock->icon_count - 1) / abs(ex_x); /* don't use *= ! */ } else { if (abs(ex_x) > dock->icon_count) ex_x = ex_x * dock->icon_count / abs(ex_x); } index_of_hole = indexOfHole(dock, icon, redocking); /* Find the appicons between where icon was (index_of_hole) and where * it wants to be (ex_x) and slide them. */ j = 0; for (i = 1; i < dock->max_icons; i++) { aicon = dock->icon_array[i]; if ((aicon != NULL) && (aicon != icon) && ((ex_x <= aicon->xindex && aicon->xindex < index_of_hole) || (index_of_hole < aicon->xindex && aicon->xindex <= ex_x))) aicons_to_shift[ j++ ] = aicon; } assert(j == abs(ex_x - index_of_hole)); wSlideAppicons(aicons_to_shift, j, (index_of_hole < ex_x)); *ret_x = ex_x; *ret_y = ex_y; return True; } } return False; } static int onScreen(WScreen *scr, int x, int y) { WMRect rect; int flags; rect.pos.x = x; rect.pos.y = y; rect.size.width = rect.size.height = ICON_SIZE; wGetRectPlacementInfo(scr, rect, &flags); return !(flags & (XFLAG_DEAD | XFLAG_PARTIAL)); } /* * returns true if it can find a free slot in the dock, * in which case it changes x_pos and y_pos accordingly. * Else returns false. */ Bool wDockFindFreeSlot(WDock *dock, int *x_pos, int *y_pos) { WScreen *scr = dock->screen_ptr; WAppIcon *btn; WAppIconChain *chain; unsigned char *slot_map; int mwidth; int r; int x, y; int i, done = False; int corner; int ex = scr->scr_width, ey = scr->scr_height; int extra_count = 0; if (dock->type == WM_DRAWER) { if (dock->icon_count >= dock->max_icons) { /* drawer is full */ return False; } *x_pos = dock->icon_count * (dock->on_right_side ? -1 : 1); *y_pos = 0; return True; } if (dock->type == WM_CLIP && dock != scr->workspaces[scr->current_workspace]->clip) extra_count = scr->global_icon_count; /* if the dock is full */ if (dock->icon_count + extra_count >= dock->max_icons) return False; if (!wPreferences.flags.nodock && scr->dock && scr->dock->on_right_side) { ex -= ICON_SIZE + DOCK_EXTRA_SPACE; } if (ex < dock->x_pos) ex = dock->x_pos; #define C_NONE 0 #define C_NW 1 #define C_NE 2 #define C_SW 3 #define C_SE 4 /* check if clip is in a corner */ if (dock->type == WM_CLIP) { if (dock->x_pos < 1 && dock->y_pos < 1) corner = C_NE; else if (dock->x_pos < 1 && dock->y_pos >= (ey - ICON_SIZE)) corner = C_SE; else if (dock->x_pos >= (ex - ICON_SIZE) && dock->y_pos >= (ey - ICON_SIZE)) corner = C_SW; else if (dock->x_pos >= (ex - ICON_SIZE) && dock->y_pos < 1) corner = C_NW; else corner = C_NONE; } else { corner = C_NONE; } /* If the clip is in the corner, use only slots that are in the border * of the screen */ if (corner != C_NONE) { char *hmap, *vmap; int hcount, vcount; hcount = WMIN(dock->max_icons, scr->scr_width / ICON_SIZE); vcount = WMIN(dock->max_icons, scr->scr_height / ICON_SIZE); hmap = wmalloc(hcount + 1); vmap = wmalloc(vcount + 1); /* mark used positions */ switch (corner) { case C_NE: for (i = 0; i < dock->max_icons; i++) { btn = dock->icon_array[i]; if (!btn) continue; if (btn->xindex == 0 && btn->yindex > 0 && btn->yindex < vcount) vmap[btn->yindex] = 1; else if (btn->yindex == 0 && btn->xindex > 0 && btn->xindex < hcount) hmap[btn->xindex] = 1; } for (chain = scr->global_icons; chain != NULL; chain = chain->next) { btn = chain->aicon; if (btn->xindex == 0 && btn->yindex > 0 && btn->yindex < vcount) vmap[btn->yindex] = 1; else if (btn->yindex == 0 && btn->xindex > 0 && btn->xindex < hcount) hmap[btn->xindex] = 1; } break; case C_NW: for (i = 0; i < dock->max_icons; i++) { btn = dock->icon_array[i]; if (!btn) continue; if (btn->xindex == 0 && btn->yindex > 0 && btn->yindex < vcount) vmap[btn->yindex] = 1; else if (btn->yindex == 0 && btn->xindex < 0 && btn->xindex > -hcount) hmap[-btn->xindex] = 1; } for (chain = scr->global_icons; chain != NULL; chain = chain->next) { btn = chain->aicon; if (btn->xindex == 0 && btn->yindex > 0 && btn->yindex < vcount) vmap[btn->yindex] = 1; else if (btn->yindex == 0 && btn->xindex < 0 && btn->xindex > -hcount) hmap[-btn->xindex] = 1; } break; case C_SE: for (i = 0; i < dock->max_icons; i++) { btn = dock->icon_array[i]; if (!btn) continue; if (btn->xindex == 0 && btn->yindex < 0 && btn->yindex > -vcount) vmap[-btn->yindex] = 1; else if (btn->yindex == 0 && btn->xindex > 0 && btn->xindex < hcount) hmap[btn->xindex] = 1; } for (chain = scr->global_icons; chain != NULL; chain = chain->next) { btn = chain->aicon; if (btn->xindex == 0 && btn->yindex < 0 && btn->yindex > -vcount) vmap[-btn->yindex] = 1; else if (btn->yindex == 0 && btn->xindex > 0 && btn->xindex < hcount) hmap[btn->xindex] = 1; } break; case C_SW: default: for (i = 0; i < dock->max_icons; i++) { btn = dock->icon_array[i]; if (!btn) continue; if (btn->xindex == 0 && btn->yindex < 0 && btn->yindex > -vcount) vmap[-btn->yindex] = 1; else if (btn->yindex == 0 && btn->xindex < 0 && btn->xindex > -hcount) hmap[-btn->xindex] = 1; } for (chain = scr->global_icons; chain != NULL; chain = chain->next) { btn = chain->aicon; if (btn->xindex == 0 && btn->yindex < 0 && btn->yindex > -vcount) vmap[-btn->yindex] = 1; else if (btn->yindex == 0 && btn->xindex < 0 && btn->xindex > -hcount) hmap[-btn->xindex] = 1; } } x = 0; y = 0; done = 0; /* search a vacant slot */ for (i = 1; i < WMAX(vcount, hcount); i++) { if (i < vcount && vmap[i] == 0) { /* found a slot */ x = 0; y = i; done = 1; break; } else if (i < hcount && hmap[i] == 0) { /* found a slot */ x = i; y = 0; done = 1; break; } } wfree(vmap); wfree(hmap); /* If found a slot, translate and return */ if (done) { if (corner == C_NW || corner == C_NE) *y_pos = y; else *y_pos = -y; if (corner == C_NE || corner == C_SE) *x_pos = x; else *x_pos = -x; return True; } /* else, try to find a slot somewhere else */ } /* a map of mwidth x mwidth would be enough if we allowed icons to be * placed outside of screen */ mwidth = (int)ceil(sqrt(dock->max_icons)); /* In the worst case (the clip is in the corner of the screen), * the amount of icons that fit in the clip is smaller. * Double the map to get a safe value. */ mwidth += mwidth; r = (mwidth - 1) / 2; slot_map = wmalloc(mwidth * mwidth); #define XY2OFS(x,y) (WMAX(abs(x),abs(y)) > r) ? 0 : (((y)+r)*(mwidth)+(x)+r) /* mark used slots in the map. If the slot falls outside the map * (for example, when all icons are placed in line), ignore them. */ for (i = 0; i < dock->max_icons; i++) { btn = dock->icon_array[i]; if (btn) slot_map[XY2OFS(btn->xindex, btn->yindex)] = 1; } for (chain = scr->global_icons; chain != NULL; chain = chain->next) slot_map[XY2OFS(chain->aicon->xindex, chain->aicon->yindex)] = 1; /* Find closest slot from the center that is free by scanning the * map from the center to outward in circular passes. * This will not result in a neat layout, but will be optimal * in the sense that there will not be holes left. */ done = 0; for (i = 1; i <= r && !done; i++) { int tx, ty; /* top and bottom parts of the ring */ for (x = -i; x <= i && !done; x++) { tx = dock->x_pos + x * ICON_SIZE; y = -i; ty = dock->y_pos + y * ICON_SIZE; if (slot_map[XY2OFS(x, y)] == 0 && onScreen(scr, tx, ty)) { *x_pos = x; *y_pos = y; done = 1; break; } y = i; ty = dock->y_pos + y * ICON_SIZE; if (slot_map[XY2OFS(x, y)] == 0 && onScreen(scr, tx, ty)) { *x_pos = x; *y_pos = y; done = 1; break; } } /* left and right parts of the ring */ for (y = -i + 1; y <= i - 1; y++) { ty = dock->y_pos + y * ICON_SIZE; x = -i; tx = dock->x_pos + x * ICON_SIZE; if (slot_map[XY2OFS(x, y)] == 0 && onScreen(scr, tx, ty)) { *x_pos = x; *y_pos = y; done = 1; break; } x = i; tx = dock->x_pos + x * ICON_SIZE; if (slot_map[XY2OFS(x, y)] == 0 && onScreen(scr, tx, ty)) { *x_pos = x; *y_pos = y; done = 1; break; } } } wfree(slot_map); #undef XY2OFS return done; } static void moveDock(WDock *dock, int new_x, int new_y) { WAppIcon *btn; WDrawerChain *dc; int i; if (dock->type == WM_DOCK) { for (dc = dock->screen_ptr->drawers; dc != NULL; dc = dc->next) moveDock(dc->adrawer, new_x, dc->adrawer->y_pos - dock->y_pos + new_y); } dock->x_pos = new_x; dock->y_pos = new_y; for (i = 0; i < dock->max_icons; i++) { btn = dock->icon_array[i]; if (btn) { btn->x_pos = new_x + btn->xindex * ICON_SIZE; btn->y_pos = new_y + btn->yindex * ICON_SIZE; XMoveWindow(dpy, btn->icon->core->window, btn->x_pos, btn->y_pos); } } } static void swapDock(WDock *dock) { WScreen *scr = dock->screen_ptr; WAppIcon *btn; int x, i; if (dock->on_right_side) x = dock->x_pos = scr->scr_width - ICON_SIZE - DOCK_EXTRA_SPACE; else x = dock->x_pos = DOCK_EXTRA_SPACE; swapDrawers(scr, x); for (i = 0; i < dock->max_icons; i++) { btn = dock->icon_array[i]; if (btn) { btn->x_pos = x; XMoveWindow(dpy, btn->icon->core->window, btn->x_pos, btn->y_pos); } } wScreenUpdateUsableArea(scr); } static pid_t execCommand(WAppIcon *btn, const char *command, WSavedState *state) { WScreen *scr = btn->icon->core->screen_ptr; pid_t pid; char **argv; int argc; char *cmdline; cmdline = ExpandOptions(scr, command); if (scr->flags.dnd_data_convertion_status || !cmdline) { if (cmdline) wfree(cmdline); if (state) wfree(state); return 0; } wtokensplit(cmdline, &argv, &argc); if (!argc) { if (cmdline) wfree(cmdline); if (state) wfree(state); return 0; } pid = fork(); if (pid == 0) { char **args; int i; SetupEnvironment(scr); #ifdef HAVE_SETSID setsid(); #endif args = malloc(sizeof(char *) * (argc + 1)); if (!args) exit(111); for (i = 0; i < argc; i++) args[i] = argv[i]; args[argc] = NULL; execvp(argv[0], args); exit(111); } wtokenfree(argv, argc); if (pid > 0) { if (!state) { state = wmalloc(sizeof(WSavedState)); state->hidden = -1; state->miniaturized = -1; state->shaded = -1; if (btn->dock == scr->dock || btn->dock->type == WM_DRAWER || btn->omnipresent) state->workspace = -1; else state->workspace = scr->current_workspace; } wWindowAddSavedState(btn->wm_instance, btn->wm_class, cmdline, pid, state); wAddDeathHandler(pid, trackDeadProcess, btn->dock); } else if (state) { wfree(state); } wfree(cmdline); return pid; } void wDockHideIcons(WDock *dock) { int i; if (dock == NULL) return; for (i = 1; i < dock->max_icons; i++) { if (dock->icon_array[i]) XUnmapWindow(dpy, dock->icon_array[i]->icon->core->window); } dock->mapped = 0; dockIconPaint(dock->icon_array[0]); } void wDockShowIcons(WDock *dock) { int i; WAppIcon *btn; if (dock == NULL) return; btn = dock->icon_array[0]; moveDock(dock, btn->x_pos, btn->y_pos); /* Deleting any change in stacking level, this function is now only about mapping icons */ if (!dock->collapsed) { for (i = 1; i < dock->max_icons; i++) { if (dock->icon_array[i]) XMapWindow(dpy, dock->icon_array[i]->icon->core->window); } } dock->mapped = 1; dockIconPaint(btn); } void wDockLower(WDock *dock) { int i; WDrawerChain *dc; if (dock->type == WM_DOCK) { for (dc = dock->screen_ptr->drawers; dc != NULL; dc = dc->next) wDockLower(dc->adrawer); } for (i = 0; i < dock->max_icons; i++) { if (dock->icon_array[i]) wLowerFrame(dock->icon_array[i]->icon->core); } } void wDockRaise(WDock *dock) { int i; WDrawerChain *dc; for (i = dock->max_icons - 1; i >= 0; i--) { if (dock->icon_array[i]) wRaiseFrame(dock->icon_array[i]->icon->core); } if (dock->type == WM_DOCK) { for (dc = dock->screen_ptr->drawers; dc != NULL; dc = dc->next) wDockRaise(dc->adrawer); } } void wDockRaiseLower(WDock *dock) { if (!dock->icon_array[0]->icon->core->stacking->above || (dock->icon_array[0]->icon->core->stacking->window_level != dock->icon_array[0]->icon->core->stacking->above->stacking->window_level)) wDockLower(dock); else wDockRaise(dock); } void wDockFinishLaunch(WAppIcon *icon) { icon->launching = 0; icon->relaunching = 0; dockIconPaint(icon); } WAppIcon *wDockFindIconForWindow(WDock *dock, Window window) { WAppIcon *icon; int i; for (i = 0; i < dock->max_icons; i++) { icon = dock->icon_array[i]; if (icon && icon->main_window == window) return icon; } return NULL; } void wDockTrackWindowLaunch(WDock *dock, Window window) { WAppIcon *icon; char *wm_class, *wm_instance; int i; Bool firstPass = True; Bool found = False; char *command = NULL; if (!PropGetWMClass(window, &wm_class, &wm_instance)) { free(wm_class); free(wm_instance); return; } command = GetCommandForWindow(window); retry: for (i = 0; i < dock->max_icons; i++) { icon = dock->icon_array[i]; if (!icon) continue; /* app is already attached to icon */ if (icon->main_window == window) { found = True; break; } if ((icon->wm_instance || icon->wm_class) && (icon->launching || !icon->running)) { if (icon->wm_instance && wm_instance && strcmp(icon->wm_instance, wm_instance) != 0) continue; if (icon->wm_class && wm_class && strcmp(icon->wm_class, wm_class) != 0) continue; if (firstPass && command && strcmp(icon->command, command) != 0) continue; if (!icon->relaunching) { WApplication *wapp; /* Possibly an application that was docked with dockit, * but the user did not update WMState to indicate that * it was docked by force */ wapp = wApplicationOf(window); if (!wapp) { icon->forced_dock = 1; icon->running = 0; } if (!icon->forced_dock) icon->main_window = window; } found = True; if (!wPreferences.no_animations && !icon->launching && !dock->screen_ptr->flags.startup && !dock->collapsed) { WAppIcon *aicon; int x0, y0; icon->launching = 1; dockIconPaint(icon); aicon = wAppIconCreateForDock(dock->screen_ptr, NULL, wm_instance, wm_class, TILE_NORMAL); /* XXX: can: aicon->icon == NULL ? */ PlaceIcon(dock->screen_ptr, &x0, &y0, wGetHeadForWindow(aicon->icon->owner)); wAppIconMove(aicon, x0, y0); /* Should this always be lowered? -Dan */ if (dock->lowered) wLowerFrame(aicon->icon->core); XMapWindow(dpy, aicon->icon->core->window); aicon->launching = 1; wAppIconPaint(aicon); slide_window(aicon->icon->core->window, x0, y0, icon->x_pos, icon->y_pos); XUnmapWindow(dpy, aicon->icon->core->window); wAppIconDestroy(aicon); } wDockFinishLaunch(icon); break; } } if (firstPass && !found) { firstPass = False; goto retry; } if (command) wfree(command); if (wm_class) free(wm_class); if (wm_instance) free(wm_instance); } void wClipUpdateForWorkspaceChange(WScreen *scr, int workspace) { if (!wPreferences.flags.noclip) { scr->clip_icon->dock = scr->workspaces[workspace]->clip; if (scr->current_workspace != workspace) { WDock *old_clip = scr->workspaces[scr->current_workspace]->clip; WAppIconChain *chain = scr->global_icons; while (chain) { wDockMoveIconBetweenDocks(chain->aicon->dock, scr->workspaces[workspace]->clip, chain->aicon, chain->aicon->xindex, chain->aicon->yindex); if (scr->workspaces[workspace]->clip->collapsed) XUnmapWindow(dpy, chain->aicon->icon->core->window); chain = chain->next; } wDockHideIcons(old_clip); if (old_clip->auto_raise_lower) { if (old_clip->auto_raise_magic) { WMDeleteTimerHandler(old_clip->auto_raise_magic); old_clip->auto_raise_magic = NULL; } wDockLower(old_clip); } if (old_clip->auto_collapse) { if (old_clip->auto_expand_magic) { WMDeleteTimerHandler(old_clip->auto_expand_magic); old_clip->auto_expand_magic = NULL; } old_clip->collapsed = 1; } wDockShowIcons(scr->workspaces[workspace]->clip); } } } static void trackDeadProcess(pid_t pid, unsigned int status, void *cdata) { WDock *dock = cdata; WAppIcon *icon; int i; for (i = 0; i < dock->max_icons; i++) { icon = dock->icon_array[i]; if (!icon) continue; if (icon->launching && icon->pid == pid) { if (!icon->relaunching) { icon->running = 0; icon->main_window = None; } wDockFinishLaunch(icon); icon->pid = 0; if (status == 111) { char msg[PATH_MAX]; char *cmd; #ifdef USE_DOCK_XDND if (icon->drop_launch) cmd = icon->dnd_command; else #endif if (icon->paste_launch) cmd = icon->paste_command; else cmd = icon->command; snprintf(msg, sizeof(msg), _("Could not execute command \"%s\""), cmd); wMessageDialog(dock->screen_ptr, _("Error"), msg, _("OK"), NULL, NULL); } break; } } } /* This function is called when the dock switches state between * "normal" (including auto-raise/lower) and "keep on top". It is * therefore clearly distinct from wDockLower/Raise, which are called * each time a not-kept-on-top dock is lowered/raised. */ static void toggleLowered(WDock *dock) { WAppIcon *tmp; WDrawerChain *dc; int newlevel, i; if (!dock->lowered) { newlevel = WMNormalLevel; dock->lowered = 1; } else { newlevel = WMDockLevel; dock->lowered = 0; } for (i = 0; i < dock->max_icons; i++) { tmp = dock->icon_array[i]; if (!tmp) continue; ChangeStackingLevel(tmp->icon->core, newlevel); /* When the dock is no longer "on top", explicitly lower it as well. * It saves some CPU cycles (probably) to do it ourselves here * rather than calling wDockLower at the end of toggleLowered */ if (dock->lowered) wLowerFrame(tmp->icon->core); } if (dock->type == WM_DOCK) { for (dc = dock->screen_ptr->drawers; dc != NULL; dc = dc->next) { toggleLowered(dc->adrawer); } wScreenUpdateUsableArea(dock->screen_ptr); } } static void toggleCollapsed(WDock *dock) { if (dock->collapsed) { dock->collapsed = 0; wDockShowIcons(dock); } else { dock->collapsed = 1; wDockHideIcons(dock); } } static void openDockMenu(WDock *dock, WAppIcon *aicon, XEvent *event) { WScreen *scr = dock->screen_ptr; WObjDescriptor *desc; WMenuEntry *entry; WApplication *wapp = NULL; int index = 0; int x_pos; int n_selected; int appIsRunning = aicon->running && aicon->icon && aicon->icon->owner; if (dock->type == WM_DOCK) { /* Dock position menu */ updateDockPositionMenu(scr->dock_pos_menu, dock); dock->menu->flags.realized = 0; if (!wPreferences.flags.nodrawer) { /* add a drawer */ entry = dock->menu->entries[++index]; entry->clientdata = aicon; wMenuSetEnabled(dock->menu, index, True); } } else { /* clip/drawer options */ if (scr->clip_options) updateClipOptionsMenu(scr->clip_options, dock); n_selected = numberOfSelectedIcons(dock); if (dock->type == WM_CLIP) { /* Rename Workspace */ entry = dock->menu->entries[++index]; if (aicon == scr->clip_icon) { entry->callback = renameCallback; entry->clientdata = dock; entry->flags.indicator = 0; entry->text = _("Rename Workspace"); } else { entry->callback = omnipresentCallback; entry->clientdata = aicon; if (n_selected > 0) { entry->flags.indicator = 0; entry->text = _("Toggle Omnipresent"); } else { entry->flags.indicator = 1; entry->flags.indicator_on = aicon->omnipresent; entry->flags.indicator_type = MI_CHECK; entry->text = _("Omnipresent"); } } } /* select/unselect icon */ entry = dock->menu->entries[++index]; entry->clientdata = aicon; entry->flags.indicator_on = aicon->icon->selected; wMenuSetEnabled(dock->menu, index, aicon != scr->clip_icon && !wIsADrawer(aicon)); /* select/unselect all icons */ entry = dock->menu->entries[++index]; entry->clientdata = aicon; if (n_selected > 0) entry->text = _("Unselect All Icons"); else entry->text = _("Select All Icons"); wMenuSetEnabled(dock->menu, index, dock->icon_count > 1); /* keep icon(s) */ entry = dock->menu->entries[++index]; entry->clientdata = aicon; if (n_selected > 1) entry->text = _("Keep Icons"); else entry->text = _("Keep Icon"); wMenuSetEnabled(dock->menu, index, dock->icon_count > 1); if (dock->type == WM_CLIP) { /* this is the workspace submenu part */ entry = dock->menu->entries[++index]; if (n_selected > 1) entry->text = _("Move Icons To"); else entry->text = _("Move Icon To"); if (scr->clip_submenu) updateWorkspaceMenu(scr->clip_submenu, aicon); wMenuSetEnabled(dock->menu, index, !aicon->omnipresent); } /* remove icon(s) */ entry = dock->menu->entries[++index]; entry->clientdata = aicon; if (n_selected > 1) entry->text = _("Remove Icons"); else entry->text = _("Remove Icon"); wMenuSetEnabled(dock->menu, index, dock->icon_count > 1); /* attract icon(s) */ entry = dock->menu->entries[++index]; entry->clientdata = aicon; dock->menu->flags.realized = 0; wMenuRealize(dock->menu); } if (aicon->icon->owner) wapp = wApplicationOf(aicon->icon->owner->main_window); else wapp = NULL; /* launch */ entry = dock->menu->entries[++index]; entry->clientdata = aicon; wMenuSetEnabled(dock->menu, index, aicon->command != NULL); /* unhide here */ entry = dock->menu->entries[++index]; entry->clientdata = aicon; if (wapp && wapp->flags.hidden) entry->text = _("Unhide Here"); else entry->text = _("Bring Here"); wMenuSetEnabled(dock->menu, index, appIsRunning); /* hide */ entry = dock->menu->entries[++index]; entry->clientdata = aicon; if (wapp && wapp->flags.hidden) entry->text = _("Unhide"); else entry->text = _("Hide"); wMenuSetEnabled(dock->menu, index, appIsRunning); /* settings */ entry = dock->menu->entries[++index]; entry->clientdata = aicon; wMenuSetEnabled(dock->menu, index, !aicon->editing && !wPreferences.flags.noupdates); /* kill or remove drawer */ entry = dock->menu->entries[++index]; entry->clientdata = aicon; if (wIsADrawer(aicon)) { entry->callback = removeDrawerCallback; entry->text = _("Remove drawer"); wMenuSetEnabled(dock->menu, index, True); } else { entry->callback = killCallback; entry->text = _("Kill"); wMenuSetEnabled(dock->menu, index, appIsRunning); } if (!dock->menu->flags.realized) wMenuRealize(dock->menu); if (dock->type == WM_CLIP || dock->type == WM_DRAWER) { /*x_pos = event->xbutton.x_root+2; */ x_pos = event->xbutton.x_root - dock->menu->frame->core->width / 2 - 1; if (x_pos < 0) { x_pos = 0; } else if (x_pos + dock->menu->frame->core->width > scr->scr_width - 2) { x_pos = scr->scr_width - dock->menu->frame->core->width - 4; } } else { x_pos = dock->on_right_side ? scr->scr_width - dock->menu->frame->core->width - 3 : 0; } wMenuMapAt(dock->menu, x_pos, event->xbutton.y_root + 2, False); /* allow drag select */ event->xany.send_event = True; desc = &dock->menu->menu->descriptor; (*desc->handle_mousedown) (desc, event); } /******************************************************************/ static void iconDblClick(WObjDescriptor *desc, XEvent *event) { WAppIcon *btn = desc->parent; WDock *dock = btn->dock; WApplication *wapp = NULL; int unhideHere = 0; if (btn->icon->owner && !(event->xbutton.state & ControlMask)) { wapp = wApplicationOf(btn->icon->owner->main_window); assert(wapp != NULL); unhideHere = (event->xbutton.state & ShiftMask); /* go to the last workspace that the user worked on the app */ if (wapp->last_workspace != dock->screen_ptr->current_workspace && !unhideHere) wWorkspaceChange(dock->screen_ptr, wapp->last_workspace); wUnhideApplication(wapp, event->xbutton.button == Button2, unhideHere); if (event->xbutton.state & MOD_MASK) wHideOtherApplications(btn->icon->owner); } else { if (event->xbutton.button == Button1) { if (event->xbutton.state & MOD_MASK) { /* raise/lower dock */ toggleLowered(dock); } else if (btn == dock->screen_ptr->clip_icon) { if (getClipButton(event->xbutton.x, event->xbutton.y) != CLIP_IDLE) handleClipChangeWorkspace(dock->screen_ptr, event); else if (wPreferences.flags.clip_merged_in_dock) { // Is actually the dock if (btn->command) { if (!btn->launching && (!btn->running || (event->xbutton.state & ControlMask))) launchDockedApplication(btn, False); } else { wShowInfoPanel(dock->screen_ptr); } } else toggleCollapsed(dock); } else if (wIsADrawer(btn)) { toggleCollapsed(dock); } else if (btn->command) { if (!btn->launching && (!btn->running || (event->xbutton.state & ControlMask))) launchDockedApplication(btn, False); } else if (btn->xindex == 0 && btn->yindex == 0 && btn->dock->type == WM_DOCK) { wShowInfoPanel(dock->screen_ptr); } } } } static void handleDockMove(WDock *dock, WAppIcon *aicon, XEvent *event) { WScreen *scr = dock->screen_ptr; int ofs_x = event->xbutton.x, ofs_y = event->xbutton.y; WIcon *icon = aicon->icon; WAppIcon *tmpaicon; WDrawerChain *dc; int x = aicon->x_pos, y = aicon->y_pos;; int shad_x = x, shad_y = y; XEvent ev; int grabbed = 0, done, previously_on_right, now_on_right, previous_x_pos, i; Pixmap ghost = None; int superfluous = wPreferences.superfluous; /* we catch it to avoid problems */ if (XGrabPointer(dpy, aicon->icon->core->window, True, ButtonMotionMask | ButtonReleaseMask | ButtonPressMask, GrabModeAsync, GrabModeAsync, None, None, CurrentTime) != GrabSuccess) wwarning("pointer grab failed for dock move"); if (dock->type == WM_DRAWER) { Window wins[2]; wins[0] = icon->core->window; wins[1] = scr->dock_shadow; XRestackWindows(dpy, wins, 2); XMoveResizeWindow(dpy, scr->dock_shadow, aicon->x_pos, aicon->y_pos, ICON_SIZE, ICON_SIZE); if (superfluous) { if (icon->pixmap!=None) ghost = MakeGhostIcon(scr, icon->pixmap); else ghost = MakeGhostIcon(scr, icon->core->window); XSetWindowBackgroundPixmap(dpy, scr->dock_shadow, ghost); XClearWindow(dpy, scr->dock_shadow); } XMapWindow(dpy, scr->dock_shadow); } previously_on_right = now_on_right = dock->on_right_side; previous_x_pos = dock->x_pos; done = 0; while (!done) { WMMaskEvent(dpy, PointerMotionMask | ButtonReleaseMask | ButtonPressMask | ButtonMotionMask | ExposureMask | EnterWindowMask, &ev); switch (ev.type) { case Expose: WMHandleEvent(&ev); break; case EnterNotify: /* It means the cursor moved so fast that it entered * something else (if moving slowly, it would have * stayed in the dock that is being moved. Ignore such * "spurious" EnterNotifiy's */ break; case MotionNotify: if (!grabbed) { if (abs(ofs_x - ev.xmotion.x) >= MOVE_THRESHOLD || abs(ofs_y - ev.xmotion.y) >= MOVE_THRESHOLD) { XChangeActivePointerGrab(dpy, ButtonMotionMask | ButtonReleaseMask | ButtonPressMask, wPreferences.cursor[WCUR_MOVE], CurrentTime); grabbed = 1; } break; } switch (dock->type) { case WM_CLIP: x = ev.xmotion.x_root - ofs_x; y = ev.xmotion.y_root - ofs_y; wScreenKeepInside(scr, &x, &y, ICON_SIZE, ICON_SIZE); moveDock(dock, x, y); break; case WM_DOCK: x = ev.xmotion.x_root - ofs_x; y = ev.xmotion.y_root - ofs_y; if (previously_on_right) { now_on_right = (ev.xmotion.x_root >= previous_x_pos - ICON_SIZE); } else { now_on_right = (ev.xmotion.x_root > previous_x_pos + ICON_SIZE * 2); } if (now_on_right != dock->on_right_side) { dock->on_right_side = now_on_right; swapDock(dock); wArrangeIcons(scr, False); } // Also perform the vertical move wScreenKeepInside(scr, &x, &y, ICON_SIZE, ICON_SIZE); moveDock(dock, dock->x_pos, y); if (wPreferences.flags.wrap_appicons_in_dock) { for (i = 0; i < dock->max_icons; i++) { int new_y, new_index, j, ok; tmpaicon = dock->icon_array[i]; if (tmpaicon == NULL) continue; if (onScreen(scr, tmpaicon->x_pos, tmpaicon->y_pos)) continue; new_y = (tmpaicon->y_pos + ICON_SIZE * dock->max_icons) % (ICON_SIZE * dock->max_icons); new_index = (new_y - dock->y_pos) / ICON_SIZE; if (!onScreen(scr, tmpaicon->x_pos, new_y)) continue; ok = 1; for (j = 0; j < dock->max_icons; j++) { if (dock->icon_array[j] != NULL && dock->icon_array[j]->yindex == new_index) { ok = 0; break; } } if (!ok || getDrawer(scr, new_index) != NULL) continue; wDockReattachIcon(dock, tmpaicon, tmpaicon->xindex, new_index); } for (dc = scr->drawers; dc != NULL; dc = dc->next) { int new_y, new_index, j, ok; tmpaicon = dc->adrawer->icon_array[0]; if (onScreen(scr, tmpaicon->x_pos, tmpaicon->y_pos)) continue; new_y = (tmpaicon->y_pos + ICON_SIZE * dock->max_icons) % (ICON_SIZE * dock->max_icons); new_index = (new_y - dock->y_pos) / ICON_SIZE; if (!onScreen(scr, tmpaicon->x_pos, new_y)) continue; ok = 1; for (j = 0; j < dock->max_icons; j++) { if (dock->icon_array[j] != NULL && dock->icon_array[j]->yindex == new_index) { ok = 0; break; } } if (!ok || getDrawer(scr, new_index) != NULL) continue; moveDock(dc->adrawer, tmpaicon->x_pos, new_y); } } break; case WM_DRAWER: { WDock *real_dock = dock->screen_ptr->dock; Bool snapped; int ix, iy; x = ev.xmotion.x_root - ofs_x; y = ev.xmotion.y_root - ofs_y; snapped = wDockSnapIcon(real_dock, aicon, x, y, &ix, &iy, True); if (snapped) { shad_x = real_dock->x_pos + ix * wPreferences.icon_size; shad_y = real_dock->y_pos + iy * wPreferences.icon_size; XMoveWindow(dpy, scr->dock_shadow, shad_x, shad_y); } moveDock(dock, x, y); break; } } break; case ButtonPress: break; case ButtonRelease: if (ev.xbutton.button != event->xbutton.button) break; XUngrabPointer(dpy, CurrentTime); if (dock->type == WM_DRAWER) { Window wins[dock->icon_count]; int offset_index; /* * When the dock is on the Right side, the index of the icons are negative to * reflect the fact that they are placed on the other side of the dock; we use * an offset here so we can have an always positive index for the storage in * the 'wins' array. */ if (dock->on_right_side) offset_index = dock->icon_count - 1; else offset_index = 0; for (i = 0; i < dock->max_icons; i++) { tmpaicon = dock->icon_array[i]; if (tmpaicon == NULL) continue; wins[tmpaicon->xindex + offset_index] = tmpaicon->icon->core->window; } slide_windows(wins, dock->icon_count, (dock->on_right_side ? x - (dock->icon_count - 1) * ICON_SIZE : x), y, (dock->on_right_side ? shad_x - (dock->icon_count - 1) * ICON_SIZE : shad_x), shad_y); XUnmapWindow(dpy, scr->dock_shadow); moveDock(dock, shad_x, shad_y); XResizeWindow(dpy, scr->dock_shadow, ICON_SIZE, ICON_SIZE); } done = 1; break; } } if (superfluous) { if (ghost != None) XFreePixmap(dpy, ghost); XSetWindowBackground(dpy, scr->dock_shadow, scr->white_pixel); } } static int getClipButton(int px, int py) { int pt = (CLIP_BUTTON_SIZE + 2) * ICON_SIZE / 64; if (px < 0 || py < 0 || px >= ICON_SIZE || py >= ICON_SIZE) return CLIP_IDLE; if (py <= pt - ((int)ICON_SIZE - 1 - px)) return CLIP_FORWARD; else if (px <= pt - ((int)ICON_SIZE - 1 - py)) return CLIP_REWIND; return CLIP_IDLE; } static void handleClipChangeWorkspace(WScreen *scr, XEvent *event) { XEvent ev; int done, direction, new_ws; int new_dir; WDock *clip = scr->clip_icon->dock; direction = getClipButton(event->xbutton.x, event->xbutton.y); clip->lclip_button_pushed = direction == CLIP_REWIND; clip->rclip_button_pushed = direction == CLIP_FORWARD; wClipIconPaint(scr->clip_icon); done = 0; while (!done) { WMMaskEvent(dpy, ExposureMask | ButtonMotionMask | ButtonReleaseMask | ButtonPressMask, &ev); switch (ev.type) { case Expose: WMHandleEvent(&ev); break; case MotionNotify: new_dir = getClipButton(ev.xmotion.x, ev.xmotion.y); if (new_dir != direction) { direction = new_dir; clip->lclip_button_pushed = direction == CLIP_REWIND; clip->rclip_button_pushed = direction == CLIP_FORWARD; wClipIconPaint(scr->clip_icon); } break; case ButtonPress: break; case ButtonRelease: if (ev.xbutton.button == event->xbutton.button) done = 1; } } clip->lclip_button_pushed = 0; clip->rclip_button_pushed = 0; new_ws = wPreferences.ws_advance || (event->xbutton.state & ControlMask); if (direction == CLIP_FORWARD) { if (scr->current_workspace < scr->workspace_count - 1) wWorkspaceChange(scr, scr->current_workspace + 1); else if (new_ws && scr->current_workspace < MAX_WORKSPACES - 1) wWorkspaceChange(scr, scr->current_workspace + 1); else if (wPreferences.ws_cycle) wWorkspaceChange(scr, 0); } else if (direction == CLIP_REWIND) { if (scr->current_workspace > 0) wWorkspaceChange(scr, scr->current_workspace - 1); else if (scr->current_workspace == 0 && wPreferences.ws_cycle) wWorkspaceChange(scr, scr->workspace_count - 1); } wClipIconPaint(scr->clip_icon); } static void iconMouseDown(WObjDescriptor *desc, XEvent *event) { WAppIcon *aicon = desc->parent; WDock *dock = aicon->dock; WScreen *scr = aicon->icon->core->screen_ptr; if (aicon->editing || WCHECK_STATE(WSTATE_MODAL)) return; scr->last_dock = dock; if (dock->menu->flags.mapped) wMenuUnmap(dock->menu); if (IsDoubleClick(scr, event)) { /* double-click was not in the main clip icon */ if (dock->type != WM_CLIP || aicon->xindex != 0 || aicon->yindex != 0 || getClipButton(event->xbutton.x, event->xbutton.y) == CLIP_IDLE) { iconDblClick(desc, event); return; } } if (event->xbutton.button == Button1) { if (event->xbutton.state & MOD_MASK) wDockLower(dock); else wDockRaise(dock); if ((event->xbutton.state & ShiftMask) && aicon != scr->clip_icon && dock->type != WM_DOCK) { wIconSelect(aicon->icon); return; } if (aicon->yindex == 0 && aicon->xindex == 0) { if (getClipButton(event->xbutton.x, event->xbutton.y) != CLIP_IDLE && (dock->type == WM_CLIP || (dock->type == WM_DOCK && wPreferences.flags.clip_merged_in_dock))) handleClipChangeWorkspace(scr, event); else handleDockMove(dock, aicon, event); } else { Bool hasMoved = wHandleAppIconMove(aicon, event); if (wPreferences.single_click && !hasMoved) iconDblClick(desc, event); } } else if (event->xbutton.button == Button2 && aicon == scr->clip_icon) { if (!scr->clip_ws_menu) scr->clip_ws_menu = wWorkspaceMenuMake(scr, False); if (scr->clip_ws_menu) { WMenu *wsMenu = scr->clip_ws_menu; int xpos; wWorkspaceMenuUpdate(scr, wsMenu); xpos = event->xbutton.x_root - wsMenu->frame->core->width / 2 - 1; if (xpos < 0) { xpos = 0; } else if (xpos + wsMenu->frame->core->width > scr->scr_width - 2) { xpos = scr->scr_width - wsMenu->frame->core->width - 4; } wMenuMapAt(wsMenu, xpos, event->xbutton.y_root + 2, False); desc = &wsMenu->menu->descriptor; event->xany.send_event = True; (*desc->handle_mousedown) (desc, event); } } else if (event->xbutton.button == Button2 && dock->type == WM_CLIP && (event->xbutton.state & ShiftMask) && aicon != scr->clip_icon) { wClipMakeIconOmnipresent(aicon, !aicon->omnipresent); } else if (event->xbutton.button == Button3) { if (event->xbutton.send_event && XGrabPointer(dpy, aicon->icon->core->window, True, ButtonMotionMask | ButtonReleaseMask | ButtonPressMask, GrabModeAsync, GrabModeAsync, None, None, CurrentTime) != GrabSuccess) { wwarning("pointer grab failed for dockicon menu"); return; } openDockMenu(dock, aicon, event); } else if (event->xbutton.button == Button2) { WAppIcon *btn = desc->parent; if (!btn->launching && (!btn->running || (event->xbutton.state & ControlMask))) launchDockedApplication(btn, True); } else if (event->xbutton.button == Button4 && dock->type == WM_CLIP) { wWorkspaceRelativeChange(scr, 1); } else if (event->xbutton.button == Button5 && dock->type == WM_CLIP) { wWorkspaceRelativeChange(scr, -1); } } static void clipEnterNotify(WObjDescriptor *desc, XEvent *event) { WAppIcon *btn = (WAppIcon *) desc->parent; WDock *dock, *tmp; WScreen *scr; /* Parameter not used, but tell the compiler that it is ok */ (void) event; assert(event->type == EnterNotify); if (desc->parent_type != WCLASS_DOCK_ICON) return; scr = btn->icon->core->screen_ptr; dock = btn->dock; if (dock == NULL) return; /* The auto raise/lower code */ tmp = (dock->type == WM_DRAWER ? scr->dock : dock); if (tmp->auto_lower_magic) { WMDeleteTimerHandler(tmp->auto_lower_magic); tmp->auto_lower_magic = NULL; } if (tmp->auto_raise_lower && !tmp->auto_raise_magic) tmp->auto_raise_magic = WMAddTimerHandler(wPreferences.clip_auto_raise_delay, clipAutoRaise, (void *) tmp); if (dock->type != WM_CLIP && dock->type != WM_DRAWER) return; /* The auto expand/collapse code */ if (dock->auto_collapse_magic) { WMDeleteTimerHandler(dock->auto_collapse_magic); dock->auto_collapse_magic = NULL; } if (dock->auto_collapse && !dock->auto_expand_magic) dock->auto_expand_magic = WMAddTimerHandler(wPreferences.clip_auto_expand_delay, clipAutoExpand, (void *)dock); } static void clipLeave(WDock *dock) { XEvent event; WObjDescriptor *desc = NULL; WDock *tmp; if (dock == NULL) return; if (XCheckTypedEvent(dpy, EnterNotify, &event) != False) { if (XFindContext(dpy, event.xcrossing.window, w_global.context.client_win, (XPointer *) & desc) != XCNOENT && desc && desc->parent_type == WCLASS_DOCK_ICON && ((WAppIcon *) desc->parent)->dock == dock) { /* We haven't left the dock/clip/drawer yet */ XPutBackEvent(dpy, &event); return; } XPutBackEvent(dpy, &event); } else { /* We entered a withdrawn window, so we're still in Clip */ return; } tmp = (dock->type == WM_DRAWER ? dock->screen_ptr->dock : dock); if (tmp->auto_raise_magic) { WMDeleteTimerHandler(tmp->auto_raise_magic); tmp->auto_raise_magic = NULL; } if (tmp->auto_raise_lower && !tmp->auto_lower_magic) tmp->auto_lower_magic = WMAddTimerHandler(wPreferences.clip_auto_lower_delay, clipAutoLower, (void *)tmp); if (dock->type != WM_CLIP && dock->type != WM_DRAWER) return; if (dock->auto_expand_magic) { WMDeleteTimerHandler(dock->auto_expand_magic); dock->auto_expand_magic = NULL; } if (dock->auto_collapse && !dock->auto_collapse_magic) dock->auto_collapse_magic = WMAddTimerHandler(wPreferences.clip_auto_collapse_delay, clipAutoCollapse, (void *)dock); } static void clipLeaveNotify(WObjDescriptor *desc, XEvent *event) { WAppIcon *btn = (WAppIcon *) desc->parent; /* Parameter not used, but tell the compiler that it is ok */ (void) event; assert(event->type == LeaveNotify); if (desc->parent_type != WCLASS_DOCK_ICON) return; clipLeave(btn->dock); } static void clipAutoCollapse(void *cdata) { WDock *dock = (WDock *) cdata; if (dock->type != WM_CLIP && dock->type != WM_DRAWER) return; if (dock->auto_collapse) { dock->collapsed = 1; wDockHideIcons(dock); } dock->auto_collapse_magic = NULL; } static void clipAutoExpand(void *cdata) { WDock *dock = (WDock *) cdata; if (dock->type != WM_CLIP && dock->type != WM_DRAWER) return; if (dock->auto_collapse) { dock->collapsed = 0; wDockShowIcons(dock); } dock->auto_expand_magic = NULL; } static void clipAutoLower(void *cdata) { WDock *dock = (WDock *) cdata; if (dock->auto_raise_lower) wDockLower(dock); dock->auto_lower_magic = NULL; } static void clipAutoRaise(void *cdata) { WDock *dock = (WDock *) cdata; if (dock->auto_raise_lower) wDockRaise(dock); dock->auto_raise_magic = NULL; } static Bool iconCanBeOmnipresent(WAppIcon *aicon) { WScreen *scr = aicon->icon->core->screen_ptr; WDock *clip; WAppIcon *btn; int i, j; for (i = 0; i < scr->workspace_count; i++) { clip = scr->workspaces[i]->clip; if (clip == aicon->dock) continue; if (clip->icon_count + scr->global_icon_count >= clip->max_icons) return False; /* Clip is full in some workspace */ for (j = 0; j < clip->max_icons; j++) { btn = clip->icon_array[j]; if (btn && btn->xindex == aicon->xindex && btn->yindex == aicon->yindex) return False; } } return True; } int wClipMakeIconOmnipresent(WAppIcon *aicon, int omnipresent) { WScreen *scr = aicon->icon->core->screen_ptr; WAppIconChain *new_entry, *tmp, *tmp1; int status = WO_SUCCESS; if ((scr->dock && aicon->dock == scr->dock) || aicon == scr->clip_icon) return WO_NOT_APPLICABLE; if (aicon->omnipresent == omnipresent) return WO_SUCCESS; if (omnipresent) { if (iconCanBeOmnipresent(aicon)) { aicon->omnipresent = 1; new_entry = wmalloc(sizeof(WAppIconChain)); new_entry->aicon = aicon; new_entry->next = scr->global_icons; scr->global_icons = new_entry; scr->global_icon_count++; } else { aicon->omnipresent = 0; status = WO_FAILED; } } else { aicon->omnipresent = 0; if (aicon == scr->global_icons->aicon) { tmp = scr->global_icons->next; wfree(scr->global_icons); scr->global_icons = tmp; scr->global_icon_count--; } else { tmp = scr->global_icons; while (tmp->next) { if (tmp->next->aicon == aicon) { tmp1 = tmp->next->next; wfree(tmp->next); tmp->next = tmp1; scr->global_icon_count--; break; } tmp = tmp->next; } } } wAppIconPaint(aicon); return status; } static void drawerAppendToChain(WScreen *scr, WDock *drawer) { WDrawerChain **where_to_add; where_to_add = &scr->drawers; while ((*where_to_add) != NULL) { where_to_add = &(*where_to_add)->next; } *where_to_add = wmalloc(sizeof(WDrawerChain)); (*where_to_add)->adrawer = drawer; (*where_to_add)->next = NULL; scr->drawer_count++; } static void drawerRemoveFromChain(WScreen *scr, WDock *drawer) { WDrawerChain *next, **to_remove; to_remove = &scr->drawers; while (True) { if (*to_remove == NULL) { wwarning("The drawer to be removed can not be found."); return; } if ((*to_remove)->adrawer == drawer) break; to_remove = &(*to_remove)->next; } next = (*to_remove)->next; wfree(*to_remove); *to_remove = next; scr->drawer_count--; } /* Don't free the returned string. Duplicate it. */ static char * findUniqueName(WScreen *scr, const char *instance_basename) { static char buffer[128]; WDrawerChain *dc; int i; Bool already_in_use = True; #define UNIQUE_NAME_WATCHDOG 128 for (i = 0; already_in_use && i < UNIQUE_NAME_WATCHDOG; i++) { snprintf(buffer, sizeof buffer, "%s%d", instance_basename, i); already_in_use = False; for (dc = scr->drawers; dc != NULL; dc = dc->next) { if (!strncmp(dc->adrawer->icon_array[0]->wm_instance, buffer, sizeof buffer)) { already_in_use = True; break; } } } if (i == UNIQUE_NAME_WATCHDOG) wwarning("Couldn't find a unique name for drawer in %d attempts.", i); #undef UNIQUE_NAME_WATCHDOG return buffer; } static void drawerIconExpose(WObjDescriptor *desc, XEvent *event) { /* Parameter not used, but tell the compiler that it is ok */ (void) event; wDrawerIconPaint((WAppIcon *) desc->parent); } static int addADrawer(WScreen *scr) { int i, y, sig, found_y; WDock *drawer, *dock = scr->dock; WDrawerChain *dc; char can_be_here[2 * dock->max_icons - 1]; if (dock->icon_count + scr->drawer_count >= dock->max_icons) return -1; for (y = -dock->max_icons + 1; y < dock->max_icons; y++) { can_be_here[y + dock->max_icons - 1] = True; } for (i = 0; i < dock->max_icons; i++) { if (dock->icon_array[i] != NULL) can_be_here[dock->icon_array[i]->yindex + dock->max_icons - 1] = False; } for (dc = scr->drawers; dc != NULL; dc = dc->next) { y = (int) ((dc->adrawer->y_pos - dock->y_pos) / ICON_SIZE); can_be_here[y + dock->max_icons - 1] = False; } found_y = False; for (sig = 1; !found_y && sig > -2; sig -= 2) // 1, then -1 { for (y = sig; sig * y < dock->max_icons; y += sig) { if (can_be_here[y + dock->max_icons - 1] && onScreen(scr, dock->x_pos, dock->y_pos + y * ICON_SIZE)) { found_y = True; break; } } } if (!found_y) /* This can happen even when dock->icon_count + scr->drawer_count * < dock->max_icons when the dock is not aligned on an * ICON_SIZE multiple, as some space is lost above and under it */ return -1; drawer = wDockCreate(scr, WM_DRAWER, NULL); drawer->lowered = scr->dock->lowered; if (!drawer->lowered) ChangeStackingLevel(drawer->icon_array[0]->icon->core, WMDockLevel); else ChangeStackingLevel(drawer->icon_array[0]->icon->core, WMNormalLevel); drawer->auto_raise_lower = scr->dock->auto_raise_lower; drawer->x_pos = dock->x_pos; drawer->y_pos = dock->y_pos + ICON_SIZE * y; drawer->icon_array[0]->xindex = 0; drawer->icon_array[0]->yindex = 0; drawer->icon_array[0]->x_pos = drawer->x_pos; drawer->icon_array[0]->y_pos = drawer->y_pos; XMoveWindow(dpy, drawer->icon_array[0]->icon->core->window, drawer->icon_array[0]->x_pos, drawer->icon_array[0]->y_pos); return 0; } static void addADrawerCallback(WMenu *menu, WMenuEntry *entry) { /* Parameter not used, but tell the compiler that it is ok */ (void) menu; assert(entry->clientdata!=NULL); addADrawer(((WAppIcon *) entry->clientdata)->dock->screen_ptr); } static void drawerDestroy(WDock *drawer) { WScreen *scr; int i; WAppIcon *aicon = NULL; WMArray *icons; if (drawer == NULL) return; scr = drawer->screen_ptr; /* Note regarding menus: we can't delete any dock/clip/drawer menu, because * that would (attempt to) wfree some memory in gettext library (see menu * entries that have several "versions", such like "Hide" and "Unhide"). */ wDefaultPurgeInfo(drawer->icon_array[0]->wm_instance, drawer->icon_array[0]->wm_class); if (drawer->icon_count == 2) { /* Drawer contains a single appicon: dock it where the drawer was */ for (i = 1; i < drawer->max_icons; i++) { aicon = drawer->icon_array[i]; if (aicon != NULL) break; } wDockMoveIconBetweenDocks(drawer, scr->dock, aicon, 0, (drawer->y_pos - scr->dock->y_pos) / ICON_SIZE); XMoveWindow(dpy, aicon->icon->core->window, drawer->x_pos, drawer->y_pos); XMapWindow(dpy, aicon->icon->core->window); } else if (drawer->icon_count > 2) { icons = WMCreateArray(drawer->icon_count - 1); for (i = 1; i < drawer->max_icons; i++) { aicon = drawer->icon_array[i]; if (aicon == NULL) continue; WMAddToArray(icons, aicon); } removeIcons(icons, drawer); } if (drawer->auto_collapse_magic) { WMDeleteTimerHandler(drawer->auto_collapse_magic); drawer->auto_collapse_magic = NULL; } if (drawer->auto_lower_magic) { WMDeleteTimerHandler(drawer->auto_lower_magic); drawer->auto_lower_magic = NULL; } wAppIconDestroy(drawer->icon_array[0]); wfree(drawer->icon_array); drawer->icon_array = NULL; drawerRemoveFromChain(scr, drawer); if (scr->last_dock == drawer) scr->last_dock = NULL; if (scr->attracting_drawer == drawer) scr->attracting_drawer = NULL; wfree(drawer); } static void removeDrawerCallback(WMenu *menu, WMenuEntry *entry) { WDock *dock = ((WAppIcon*)entry->clientdata)->dock; /* Parameter not used, but tell the compiler that it is ok */ (void) menu; assert(dock != NULL); if (dock->icon_count > 2) { if (wMessageDialog(dock->screen_ptr, _("Drawer"), _("All icons in this drawer will be detached!"), _("OK"), _("Cancel"), NULL) != WAPRDefault) return; } drawerDestroy(dock); } void wDrawerIconPaint(WAppIcon *dicon) { Window win = dicon->icon->core->window; WScreen *scr = dicon->icon->core->screen_ptr; XPoint p[4]; GC gc = scr->draw_gc; WMColor *color; wIconPaint(dicon->icon); if (!dicon->dock->collapsed) color = scr->clip_title_color[CLIP_NORMAL]; else color = scr->clip_title_color[CLIP_COLLAPSED]; XSetForeground(dpy, gc, WMColorPixel(color)); if (dicon->dock->on_right_side) { p[0].x = p[3].x = 10; p[0].y = p[3].y = ICON_SIZE / 2 - 5; p[1].x = 10; p[1].y = ICON_SIZE / 2 + 5; p[2].x = 5; p[2].y = ICON_SIZE / 2; } else { p[0].x = p[3].x = ICON_SIZE-1 - 10; p[0].y = p[3].y = ICON_SIZE / 2 - 5; p[1].x = ICON_SIZE-1 - 10; p[1].y = ICON_SIZE / 2 + 5; p[2].x = ICON_SIZE-1 - 5; p[2].y = ICON_SIZE / 2; } XFillPolygon(dpy, win, gc, p,3,Convex,CoordModeOrigin); XDrawLines(dpy, win, gc, p,4,CoordModeOrigin); } RImage* wDrawerMakeTile(WScreen *scr, RImage *normalTile) { RImage *tile = RCloneImage(normalTile); RColor dark; RColor light; dark.alpha = 0; dark.red = dark.green = dark.blue = 60; light.alpha = 0; light.red = light.green = light.blue = 80; /* arrow bevel */ if (!scr->dock || scr->dock->on_right_side) { ROperateLine(tile, RSubtractOperation, 11, ICON_SIZE / 2 - 7, 4, ICON_SIZE / 2, &dark); /* / */ ROperateLine(tile, RSubtractOperation, 11, ICON_SIZE / 2 + 7, 4, ICON_SIZE / 2, &dark); /* \ */ ROperateLine(tile, RAddOperation, 11, ICON_SIZE / 2 - 7, 11, ICON_SIZE / 2 + 7, &light); /* | */ } else { ROperateLine(tile, RSubtractOperation, ICON_SIZE-1 - 11, ICON_SIZE / 2 - 7, ICON_SIZE-1 - 4, ICON_SIZE / 2, &dark); /* \ */ ROperateLine(tile, RAddOperation, ICON_SIZE-1 - 11, ICON_SIZE / 2 + 7, ICON_SIZE-1 - 4, ICON_SIZE / 2, &light); /* / */ ROperateLine(tile, RSubtractOperation, ICON_SIZE-1 - 11, ICON_SIZE / 2 - 7, ICON_SIZE-1 - 11, ICON_SIZE / 2 + 7, &dark); /* | */ } return tile; } static void swapDrawer(WDock *drawer, int new_x) { int i; drawer->on_right_side = !drawer->on_right_side; drawer->x_pos = new_x; for (i = 0; i < drawer->max_icons; i++) { WAppIcon *ai; ai = drawer->icon_array[i]; if (ai == NULL) continue; ai->xindex *= -1; /* so A B C becomes C B A */ ai->x_pos = new_x + ai->xindex * ICON_SIZE; /* Update drawer's tile */ if (i == 0) { wIconUpdate(ai->icon); wDrawerIconPaint(ai); } XMoveWindow(dpy, ai->icon->core->window, ai->x_pos, ai->y_pos); } } static void swapDrawers(WScreen *scr, int new_x) { WDrawerChain *dc; if (scr->drawer_tile) RReleaseImage(scr->drawer_tile); scr->drawer_tile = wDrawerMakeTile(scr, scr->icon_tile); for (dc = scr->drawers; dc != NULL; dc = dc->next) swapDrawer(dc->adrawer, new_x); } int wIsADrawer(WAppIcon *aicon) { return aicon && aicon->dock && aicon->dock->type == WM_DRAWER && aicon->dock->icon_array[0] == aicon; } static WDock* getDrawer(WScreen *scr, int y_index) { WDrawerChain *dc; for (dc = scr->drawers; dc != NULL; dc = dc->next) { if (dc->adrawer->y_pos - scr->dock->y_pos == y_index * ICON_SIZE) return dc->adrawer; } return NULL; } /* Find the "hole" a moving appicon created when snapped into the * drawer. redocking is a boolean. If the moving appicon comes from the * drawer, drawer->icon_count is correct. If not, redocking is then false and * there are now drawer->icon_count plus one appicons in the drawer. */ static int indexOfHole(WDock *drawer, WAppIcon *moving_aicon, int redocking) { int index_of_hole, i; /* Classic interview question... * * We have n-1 (n = drawer->icon_count-1 or drawer->icon_count, see * redocking) appicons, whose xindex are unique in [1..n]. One is missing: * that's where the ghost of the moving appicon is, that's what the * function should return. * * We compute 1+2+...+n (this sum is equal to n*(n+1)/2), we subtract to * this sum the xindex of each of the n-1 appicons, and we get the correct * index! */ if (redocking) { index_of_hole = (drawer->icon_count - 1) * drawer->icon_count / 2; } else { index_of_hole = drawer->icon_count * (drawer->icon_count + 1) / 2; } index_of_hole *= (drawer->on_right_side ? -1 : 1); for (i = 1; i < drawer->max_icons; i++) { if (drawer->icon_array[i] && drawer->icon_array[i] != moving_aicon) index_of_hole -= drawer->icon_array[i]->xindex; } /* wmessage(" Index of the moving appicon is %d (%sredocking)", index_of_hole, (redocking ? "" : "not ")); */ if (abs(index_of_hole) > abs(drawer->icon_count) - (redocking ? 1 : 0)) wwarning(" index_of_hole is too large ! (%d greater than %d)", index_of_hole, abs(drawer->icon_count) - (redocking ? 1 : 0)); if (index_of_hole == 0) wwarning(" index_of_hole == 0 (%sredocking, icon_count == %d)", (redocking ? "" : "not "), drawer->icon_count); return index_of_hole; } void wSlideAppicons(WAppIcon **appicons, int n, int to_the_left) { int i; int leftmost = -1, min_index = 9999, from_x = -1; // leftmost and from_x initialized to avoid warning Window wins[n]; WAppIcon *aicon; if (n < 1) return; for (i = 0; i < n; i++) { aicon = appicons[i]; aicon->xindex += (to_the_left ? -1 : +1); if (aicon->xindex < min_index) { min_index = aicon->xindex; leftmost = i; from_x = aicon->x_pos; } aicon->x_pos += (to_the_left ? -ICON_SIZE : +ICON_SIZE); } for (i = 0; i < n; i++) { aicon = appicons[i]; wins[aicon->xindex - min_index] = aicon->icon->core->window; } aicon = appicons[leftmost]; slide_windows(wins, n, from_x, aicon->y_pos, aicon->x_pos, aicon->y_pos); } void wDrawerFillTheGap(WDock *drawer, WAppIcon *aicon, Bool redocking) { int i, j; int index_of_hole = indexOfHole(drawer, aicon, redocking); WAppIcon *aicons_to_shift[drawer->icon_count]; j = 0; for (i = 0; i < drawer->max_icons; i++) { WAppIcon *ai = drawer->icon_array[i]; if (ai && ai != aicon && abs(ai->xindex) > abs(index_of_hole)) aicons_to_shift[j++] = ai; } if (j != drawer->icon_count - abs(index_of_hole) - (redocking ? 1 : 0)) wwarning("Removing aicon at index %d from %s: j=%d but should be %d", index_of_hole, drawer->icon_array[0]->wm_instance, j, drawer->icon_count - abs(index_of_hole) - (redocking ? 1 : 0)); wSlideAppicons(aicons_to_shift, j, !drawer->on_right_side); } static void drawerConsolidateIcons(WDock *drawer) { WAppIcon *aicons_to_shift[drawer->icon_count]; int maxRemaining = 0; int sum = 0; int i; for (i = 0; i < drawer->max_icons; i++) { WAppIcon *ai = drawer->icon_array[i]; if (ai == NULL) continue; sum += abs(ai->xindex); if (abs(ai->xindex) > maxRemaining) maxRemaining = abs(ai->xindex); } while (sum != maxRemaining * (maxRemaining + 1) / 2) { // while there is a hole WAppIcon *ai; int n; // Look up for the hole at max position int maxDeleted; for (maxDeleted = maxRemaining - 1; maxDeleted > 0; maxDeleted--) { Bool foundAppIconThere = False; for (i = 0; i < drawer->max_icons; i++) { WAppIcon *ai = drawer->icon_array[i]; if (ai == NULL) continue; if (abs(ai->xindex) == maxDeleted) { foundAppIconThere = True; break; } } if (!foundAppIconThere) break; } assert(maxDeleted > 0); // would mean while test is wrong n = 0; for (i = 0; i < drawer->max_icons; i++) { ai = drawer->icon_array[i]; if (ai != NULL && abs(ai->xindex) > maxDeleted) aicons_to_shift[n++] = ai; } assert(n == maxRemaining - maxDeleted); // for the code review ;-) wSlideAppicons(aicons_to_shift, n, !drawer->on_right_side); // Efficient beancounting maxRemaining -= 1; sum -= n; } } /* similar to wDockRestoreState, but a lot a specific stuff too... */ static WDock * drawerRestoreState(WScreen *scr, WMPropList *drawer_state) { WDock *drawer; WMPropList *apps, *value, *dock_state; WAppIcon *aicon; int count, i; if (!drawer_state) return NULL; make_keys(); WMRetainPropList(drawer_state); /* Get the instance name, and create a drawer */ value = WMGetFromPLDictionary(drawer_state, dName); drawer = wDockCreate(scr, WM_DRAWER, WMGetFromPLString(value)); /* restore DnD command and paste command */ #ifdef USE_DOCK_XDND value = WMGetFromPLDictionary(drawer_state, dDropCommand); if (value && WMIsPLString(value)) drawer->icon_array[0]->dnd_command = wstrdup(WMGetFromPLString(value)); #endif /* USE_DOCK_XDND */ value = WMGetFromPLDictionary(drawer_state, dPasteCommand); if (value && WMIsPLString(value)) drawer->icon_array[0]->paste_command = wstrdup(WMGetFromPLString(value)); /* restore position */ value = WMGetFromPLDictionary(drawer_state, dPosition); if (!value || !WMIsPLString(value)) COMPLAIN("Position"); else { int x, y, y_index; if (sscanf(WMGetFromPLString(value), "%i,%i", &x, &y) != 2) COMPLAIN("Position"); /* check position sanity */ if (x != scr->dock->x_pos) { x = scr->dock->x_pos; } y_index = (y - scr->dock->y_pos) / ICON_SIZE; if (y_index >= scr->dock->max_icons) { /* Here we should do something more intelligent, since it * can happen even if the user hasn't hand-edited his * G/D/State file (but uses a lower resolution). */ y_index = scr->dock->max_icons - 1; } y = scr->dock->y_pos + y_index * ICON_SIZE; moveDock(drawer, x, y); } /* restore dock properties (applist and others) */ dock_state = WMGetFromPLDictionary(drawer_state, dDock); /* restore lowered/raised state: same as scr->dock, no matter what */ drawer->lowered = scr->dock->lowered; if (!drawer->lowered) ChangeStackingLevel(drawer->icon_array[0]->icon->core, WMDockLevel); else ChangeStackingLevel(drawer->icon_array[0]->icon->core, WMNormalLevel); wRaiseFrame(drawer->icon_array[0]->icon->core); /* restore collapsed state */ drawer->collapsed = 0; value = WMGetFromPLDictionary(dock_state, dCollapsed); if (value && strcasecmp(WMGetFromPLString(value), "YES") == 0) { drawer->collapsed = 1; } /* restore auto-collapsed state */ value = WMGetFromPLDictionary(dock_state, dAutoCollapse); if (value && strcasecmp(WMGetFromPLString(value), "YES") == 0) { drawer->auto_collapse = 1; drawer->collapsed = 1; } else { drawer->auto_collapse = 0; // because wDockCreate sets it (drawers only) } /* restore auto-raise/lower state: same as scr->dock, no matter what */ drawer->auto_raise_lower = scr->dock->auto_raise_lower; /* restore attract icons state */ drawer->attract_icons = 0; value = WMGetFromPLDictionary(dock_state, dAutoAttractIcons); if (value && strcasecmp(WMGetFromPLString(value), "YES") == 0) { drawer->attract_icons = 1; scr->attracting_drawer = drawer; } /* application list */ apps = WMGetFromPLDictionary(dock_state, dApplications); if (!apps) { goto finish; } count = WMGetPropListItemCount(apps); if (count == 0) goto finish; for (i=0; i<count; i++) { if (drawer->icon_count >= drawer->max_icons) { wwarning(_("there are too many icons stored in drawer. Ignoring what doesn't fit")); break; } value = WMGetFromPLArray(apps, i); aicon = restore_icon_state(scr, value, WM_DRAWER, drawer->icon_count); drawer->icon_array[drawer->icon_count] = aicon; if (aicon) { aicon->dock = drawer; aicon->x_pos = drawer->x_pos + (aicon->xindex * ICON_SIZE); aicon->y_pos = drawer->y_pos + (aicon->yindex * ICON_SIZE); if (!drawer->lowered) ChangeStackingLevel(aicon->icon->core, WMDockLevel); else ChangeStackingLevel(aicon->icon->core, WMNormalLevel); wCoreConfigure(aicon->icon->core, aicon->x_pos, aicon->y_pos, 0, 0); if (!drawer->collapsed) XMapWindow(dpy, aicon->icon->core->window); wRaiseFrame(aicon->icon->core); drawer->icon_count++; } } finish: WMReleasePropList(drawer_state); return drawer; } /* Same kind of comment than for previous function: this function is * very similar to make_icon_state, but has substential differences as * well. */ static WMPropList *drawerSaveState(WDock *drawer) { WMPropList *pstr, *drawer_state; WAppIcon *ai; char buffer[64]; ai = drawer->icon_array[0]; /* Store its name */ pstr = WMCreatePLString(ai->wm_instance); drawer_state = WMCreatePLDictionary(dName, pstr, NULL); /* we need this final NULL */ WMReleasePropList(pstr); /* Store its position */ snprintf(buffer, sizeof(buffer), "%i,%i", ai->x_pos, ai->y_pos); pstr = WMCreatePLString(buffer); WMPutInPLDictionary(drawer_state, dPosition, pstr); WMReleasePropList(pstr); #ifdef USE_DOCK_XDND /* Store its DnD command */ if (ai->dnd_command) { pstr = WMCreatePLString(ai->dnd_command); WMPutInPLDictionary(drawer_state, dDropCommand, pstr); WMReleasePropList(pstr); } #endif /* USE_DOCK_XDND */ /* Store its paste command */ if (ai->paste_command) { pstr = WMCreatePLString(ai->paste_command); WMPutInPLDictionary(drawer_state, dPasteCommand, pstr); WMReleasePropList(pstr); } /* Store applications list and other properties */ pstr = dockSaveState(drawer); WMPutInPLDictionary(drawer_state, dDock, pstr); WMReleasePropList(pstr); return drawer_state; } void wDrawersSaveState(WScreen *scr) { WMPropList *all_drawers, *drawer_state; int i; WDrawerChain *dc; make_keys(); all_drawers = WMCreatePLArray(NULL); for (i=0, dc = scr->drawers; i < scr->drawer_count; i++, dc = dc->next) { drawer_state = drawerSaveState(dc->adrawer); WMAddToPLArray(all_drawers, drawer_state); WMReleasePropList(drawer_state); } WMPutInPLDictionary(scr->session_state, dDrawers, all_drawers); WMReleasePropList(all_drawers); } void wDrawersRestoreState(WScreen *scr) { WMPropList *all_drawers, *drawer_state; int i; make_keys(); if (scr->session_state == NULL) return; all_drawers = WMGetFromPLDictionary(scr->session_state, dDrawers); if (!all_drawers) return; for (i = 0; i < WMGetPropListItemCount(all_drawers); i++) { drawer_state = WMGetFromPLArray(all_drawers, i); drawerRestoreState(scr, drawer_state); // Note: scr->drawers was updated when the the drawer was created } } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/startup.h��������������������������������������������������������������������0000644�0001750�0001750�00000002534�13431646202�013435� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2003 Alfredo K. Kojima * Copyright (c) 2013 Window Maker Team * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef WMSTARTUP_H #define WMSTARTUP_H void StartUp(Bool defaultScreenOnly); void wHackedGrabButton(unsigned int button, unsigned int modifiers, Window grab_window, Bool owner_events, unsigned int event_mask, int pointer_mode, int keyboard_mode, Window confine_to, Cursor cursor); #ifdef NUMLOCK_HACK void wHackedGrabKey(int keycode, unsigned int modifiers, Window grab_window, Bool owner_events, int pointer_mode, int keyboard_mode); #endif #endif /* WMSTARTUP_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/texture.c��������������������������������������������������������������������0000644�0001750�0001750�00000035414�13431646202�013431� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "wconfig.h" #include <X11/Xlib.h> #include <X11/Xutil.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <wraster.h> #include "WindowMaker.h" #include "texture.h" #include "window.h" #include "misc.h" static void bevelImage(RImage * image, int relief); static RImage * get_texture_image(WScreen *scr, const char *pixmap_file); WTexSolid *wTextureMakeSolid(WScreen * scr, XColor * color) { WTexSolid *texture; int gcm; XGCValues gcv; texture = wmalloc(sizeof(WTexture)); texture->type = WTEX_SOLID; texture->subtype = 0; XAllocColor(dpy, scr->w_colormap, color); texture->normal = *color; if (color->red == 0 && color->blue == 0 && color->green == 0) { texture->light.red = 0xb6da; texture->light.green = 0xb6da; texture->light.blue = 0xb6da; texture->dim.red = 0x6185; texture->dim.green = 0x6185; texture->dim.blue = 0x6185; } else { RColor rgb; RHSVColor hsv, hsv2; int v; rgb.red = color->red >> 8; rgb.green = color->green >> 8; rgb.blue = color->blue >> 8; RRGBtoHSV(&rgb, &hsv); RHSVtoRGB(&hsv, &rgb); hsv2 = hsv; v = hsv.value * 16 / 10; hsv.value = (v > 255 ? 255 : v); RHSVtoRGB(&hsv, &rgb); texture->light.red = rgb.red << 8; texture->light.green = rgb.green << 8; texture->light.blue = rgb.blue << 8; hsv2.value = hsv2.value / 2; RHSVtoRGB(&hsv2, &rgb); texture->dim.red = rgb.red << 8; texture->dim.green = rgb.green << 8; texture->dim.blue = rgb.blue << 8; } texture->dark.red = 0; texture->dark.green = 0; texture->dark.blue = 0; XAllocColor(dpy, scr->w_colormap, &texture->light); XAllocColor(dpy, scr->w_colormap, &texture->dim); XAllocColor(dpy, scr->w_colormap, &texture->dark); gcm = GCForeground | GCBackground | GCGraphicsExposures; gcv.graphics_exposures = False; gcv.background = gcv.foreground = texture->light.pixel; texture->light_gc = XCreateGC(dpy, scr->w_win, gcm, &gcv); gcv.background = gcv.foreground = texture->dim.pixel; texture->dim_gc = XCreateGC(dpy, scr->w_win, gcm, &gcv); gcv.background = gcv.foreground = texture->dark.pixel; texture->dark_gc = XCreateGC(dpy, scr->w_win, gcm, &gcv); gcv.background = gcv.foreground = color->pixel; texture->normal_gc = XCreateGC(dpy, scr->w_win, gcm, &gcv); return texture; } static int dummyErrorHandler(Display * foo, XErrorEvent * bar) { /* Parameter not used, but tell the compiler that it is ok */ (void) foo; (void) bar; return 0; } void wTextureDestroy(WScreen * scr, WTexture * texture) { int i; int count = 0; unsigned long colors[8]; /* * some stupid servers don't like white or black being freed... */ #define CANFREE(c) (c!=scr->black_pixel && c!=scr->white_pixel && c!=0) switch (texture->any.type) { case WTEX_SOLID: XFreeGC(dpy, texture->solid.light_gc); XFreeGC(dpy, texture->solid.dark_gc); XFreeGC(dpy, texture->solid.dim_gc); if (CANFREE(texture->solid.light.pixel)) colors[count++] = texture->solid.light.pixel; if (CANFREE(texture->solid.dim.pixel)) colors[count++] = texture->solid.dim.pixel; if (CANFREE(texture->solid.dark.pixel)) colors[count++] = texture->solid.dark.pixel; break; case WTEX_PIXMAP: RReleaseImage(texture->pixmap.pixmap); break; case WTEX_MHGRADIENT: case WTEX_MVGRADIENT: case WTEX_MDGRADIENT: for (i = 0; texture->mgradient.colors[i] != NULL; i++) { wfree(texture->mgradient.colors[i]); } wfree(texture->mgradient.colors); break; case WTEX_THGRADIENT: case WTEX_TVGRADIENT: case WTEX_TDGRADIENT: RReleaseImage(texture->tgradient.pixmap); break; } if (CANFREE(texture->any.color.pixel)) colors[count++] = texture->any.color.pixel; if (count > 0) { XErrorHandler oldhandler; /* ignore error from buggy servers that don't know how * to do reference counting for colors. */ XSync(dpy, 0); oldhandler = XSetErrorHandler(dummyErrorHandler); XFreeColors(dpy, scr->w_colormap, colors, count, 0); XSync(dpy, 0); XSetErrorHandler(oldhandler); } XFreeGC(dpy, texture->any.gc); wfree(texture); #undef CANFREE } WTexGradient *wTextureMakeGradient(WScreen *scr, int style, const RColor *from, const RColor *to) { WTexGradient *texture; XGCValues gcv; texture = wmalloc(sizeof(WTexture)); texture->type = style; texture->subtype = 0; texture->color1 = *from; texture->color2 = *to; texture->normal.red = (from->red + to->red) << 7; texture->normal.green = (from->green + to->green) << 7; texture->normal.blue = (from->blue + to->blue) << 7; XAllocColor(dpy, scr->w_colormap, &texture->normal); gcv.background = gcv.foreground = texture->normal.pixel; gcv.graphics_exposures = False; texture->normal_gc = XCreateGC(dpy, scr->w_win, GCForeground | GCBackground | GCGraphicsExposures, &gcv); return texture; } WTexIGradient *wTextureMakeIGradient(WScreen *scr, int thickness1, const RColor colors1[2], int thickness2, const RColor colors2[2]) { WTexIGradient *texture; XGCValues gcv; int i; texture = wmalloc(sizeof(WTexture)); texture->type = WTEX_IGRADIENT; for (i = 0; i < 2; i++) { texture->colors1[i] = colors1[i]; texture->colors2[i] = colors2[i]; } texture->thickness1 = thickness1; texture->thickness2 = thickness2; if (thickness1 >= thickness2) { texture->normal.red = (colors1[0].red + colors1[1].red) << 7; texture->normal.green = (colors1[0].green + colors1[1].green) << 7; texture->normal.blue = (colors1[0].blue + colors1[1].blue) << 7; } else { texture->normal.red = (colors2[0].red + colors2[1].red) << 7; texture->normal.green = (colors2[0].green + colors2[1].green) << 7; texture->normal.blue = (colors2[0].blue + colors2[1].blue) << 7; } XAllocColor(dpy, scr->w_colormap, &texture->normal); gcv.background = gcv.foreground = texture->normal.pixel; gcv.graphics_exposures = False; texture->normal_gc = XCreateGC(dpy, scr->w_win, GCForeground | GCBackground | GCGraphicsExposures, &gcv); return texture; } WTexMGradient *wTextureMakeMGradient(WScreen * scr, int style, RColor ** colors) { WTexMGradient *texture; XGCValues gcv; int i; texture = wmalloc(sizeof(WTexture)); texture->type = style; texture->subtype = 0; i = 0; while (colors[i] != NULL) i++; i--; texture->normal.red = (colors[0]->red << 8); texture->normal.green = (colors[0]->green << 8); texture->normal.blue = (colors[0]->blue << 8); texture->colors = colors; XAllocColor(dpy, scr->w_colormap, &texture->normal); gcv.background = gcv.foreground = texture->normal.pixel; gcv.graphics_exposures = False; texture->normal_gc = XCreateGC(dpy, scr->w_win, GCForeground | GCBackground | GCGraphicsExposures, &gcv); return texture; } WTexPixmap *wTextureMakePixmap(WScreen *scr, int style, const char *pixmap_file, XColor *color) { WTexPixmap *texture; XGCValues gcv; RImage *image; image = get_texture_image(scr, pixmap_file); if (!image) return NULL; texture = wmalloc(sizeof(WTexture)); texture->type = WTEX_PIXMAP; texture->subtype = style; texture->normal = *color; XAllocColor(dpy, scr->w_colormap, &texture->normal); gcv.background = gcv.foreground = texture->normal.pixel; gcv.graphics_exposures = False; texture->normal_gc = XCreateGC(dpy, scr->w_win, GCForeground | GCBackground | GCGraphicsExposures, &gcv); texture->pixmap = image; return texture; } WTexTGradient *wTextureMakeTGradient(WScreen *scr, int style, const RColor *from, const RColor *to, const char *pixmap_file, int opacity) { WTexTGradient *texture; XGCValues gcv; RImage *image; image = get_texture_image(scr, pixmap_file); if (!image) return NULL; texture = wmalloc(sizeof(WTexture)); texture->type = style; texture->opacity = opacity; texture->color1 = *from; texture->color2 = *to; texture->normal.red = (from->red + to->red) << 7; texture->normal.green = (from->green + to->green) << 7; texture->normal.blue = (from->blue + to->blue) << 7; XAllocColor(dpy, scr->w_colormap, &texture->normal); gcv.background = gcv.foreground = texture->normal.pixel; gcv.graphics_exposures = False; texture->normal_gc = XCreateGC(dpy, scr->w_win, GCForeground | GCBackground | GCGraphicsExposures, &gcv); texture->pixmap = image; return texture; } static RImage * get_texture_image(WScreen *scr, const char *pixmap_file) { char *file; RImage *image; file = FindImage(wPreferences.pixmap_path, pixmap_file); if (!file) { wwarning(_("image file \"%s\" used as texture could not be found."), pixmap_file); return NULL; } image = RLoadImage(scr->rcontext, file, 0); if (!image) { wwarning(_("could not load texture pixmap \"%s\":%s"), file, RMessageForError(RErrorCode)); wfree(file); return NULL; } wfree(file); return image; } RImage *wTextureRenderImage(WTexture * texture, int width, int height, int relief) { RImage *image = NULL; RColor color1; int d; int subtype; switch (texture->any.type) { case WTEX_SOLID: image = RCreateImage(width, height, False); color1.red = texture->solid.normal.red >> 8; color1.green = texture->solid.normal.green >> 8; color1.blue = texture->solid.normal.blue >> 8; color1.alpha = 255; RClearImage(image, &color1); break; case WTEX_PIXMAP: if (texture->pixmap.subtype == WTP_TILE) { image = RMakeTiledImage(texture->pixmap.pixmap, width, height); } else if (texture->pixmap.subtype == WTP_CENTER) { color1.red = texture->pixmap.normal.red >> 8; color1.green = texture->pixmap.normal.green >> 8; color1.blue = texture->pixmap.normal.blue >> 8; color1.alpha = 255; image = RMakeCenteredImage(texture->pixmap.pixmap, width, height, &color1); } else { image = RScaleImage(texture->pixmap.pixmap, width, height); } break; case WTEX_IGRADIENT: image = RRenderInterwovenGradient(width, height, texture->igradient.colors1, texture->igradient.thickness1, texture->igradient.colors2, texture->igradient.thickness2); break; case WTEX_HGRADIENT: subtype = RGRD_HORIZONTAL; goto render_gradient; case WTEX_VGRADIENT: subtype = RGRD_VERTICAL; goto render_gradient; case WTEX_DGRADIENT: subtype = RGRD_DIAGONAL; render_gradient: image = RRenderGradient(width, height, &texture->gradient.color1, &texture->gradient.color2, subtype); break; case WTEX_MHGRADIENT: subtype = RGRD_HORIZONTAL; goto render_mgradient; case WTEX_MVGRADIENT: subtype = RGRD_VERTICAL; goto render_mgradient; case WTEX_MDGRADIENT: subtype = RGRD_DIAGONAL; render_mgradient: image = RRenderMultiGradient(width, height, &(texture->mgradient.colors[1]), subtype); break; case WTEX_THGRADIENT: subtype = RGRD_HORIZONTAL; goto render_tgradient; case WTEX_TVGRADIENT: subtype = RGRD_VERTICAL; goto render_tgradient; case WTEX_TDGRADIENT: subtype = RGRD_DIAGONAL; render_tgradient: { RImage *grad; image = RMakeTiledImage(texture->tgradient.pixmap, width, height); if (!image) break; grad = RRenderGradient(width, height, &texture->tgradient.color1, &texture->tgradient.color2, subtype); if (!grad) { RReleaseImage(image); image = NULL; break; } RCombineImagesWithOpaqueness(image, grad, texture->tgradient.opacity); RReleaseImage(grad); } break; default: puts("ERROR in wTextureRenderImage()"); image = NULL; break; } if (!image) { RColor gray; wwarning(_("could not render texture: %s"), RMessageForError(RErrorCode)); image = RCreateImage(width, height, False); if (image == NULL) { wwarning(_("could not allocate image buffer")); return NULL; } gray.red = 190; gray.green = 190; gray.blue = 190; gray.alpha = 255; RClearImage(image, &gray); } /* render bevel */ switch (relief) { case WREL_ICON: d = RBEV_RAISED3; break; case WREL_RAISED: d = RBEV_RAISED2; break; case WREL_SUNKEN: d = RBEV_SUNKEN; break; case WREL_FLAT: d = 0; break; case WREL_MENUENTRY: d = -WREL_MENUENTRY; break; default: d = 0; } if (d > 0) { RBevelImage(image, d); } else if (d < 0) { bevelImage(image, -d); } return image; } static void bevelImage(RImage * image, int relief) { int width = image->width; int height = image->height; RColor color; switch (relief) { case WREL_MENUENTRY: color.red = color.green = color.blue = 80; color.alpha = 0; /**/ ROperateLine(image, RAddOperation, 1, 0, width - 2, 0, &color); /**/ ROperateLine(image, RAddOperation, 0, 0, 0, height - 1, &color); color.red = color.green = color.blue = 40; color.alpha = 0; ROperateLine(image, RSubtractOperation, width - 1, 0, width - 1, height - 1, &color); /**/ ROperateLine(image, RSubtractOperation, 1, height - 2, width - 2, height - 2, &color); color.red = color.green = color.blue = 0; color.alpha = 255; RDrawLine(image, 0, height - 1, width - 1, height - 1, &color); /**/ break; } } void wDrawBevel(Drawable d, unsigned width, unsigned height, WTexSolid * texture, int relief) { GC light, dim, dark; XSegment segs[4]; if (relief == WREL_FLAT) return; light = texture->light_gc; dim = texture->dim_gc; dark = texture->dark_gc; switch (relief) { case WREL_MENUENTRY: case WREL_RAISED: case WREL_ICON: segs[0].x1 = 1; segs[0].x2 = width - 2; segs[0].y2 = segs[0].y1 = height - 2; segs[1].x1 = width - 2; segs[1].y1 = 1; segs[1].x2 = width - 2; segs[1].y2 = height - 2; if (wPreferences.new_style == TS_NEXT) { XDrawSegments(dpy, d, dark, segs, 2); } else { XDrawSegments(dpy, d, dim, segs, 2); } segs[0].x1 = 0; segs[0].x2 = width - 1; segs[0].y2 = segs[0].y1 = height - 1; segs[1].x1 = segs[1].x2 = width - 1; segs[1].y1 = 0; segs[1].y2 = height - 1; if (wPreferences.new_style == TS_NEXT) { XDrawSegments(dpy, d, light, segs, 2); } else { XDrawSegments(dpy, d, dark, segs, 2); } segs[0].x1 = segs[0].y1 = segs[0].y2 = 0; segs[0].x2 = width - 2; segs[1].x1 = segs[1].y1 = 0; segs[1].x2 = 0; segs[1].y2 = height - 2; if (wPreferences.new_style == TS_NEXT) { XDrawSegments(dpy, d, dark, segs, 2); } else { XDrawSegments(dpy, d, light, segs, 2); } if (relief == WREL_ICON) { segs[0].x1 = segs[0].y1 = segs[0].y2 = 1; segs[0].x2 = width - 2; segs[1].x1 = segs[1].y1 = 1; segs[1].x2 = 1; segs[1].y2 = height - 2; XDrawSegments(dpy, d, light, segs, 2); } break; } } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/appmenu.c��������������������������������������������������������������������0000644�0001750�0001750�00000016237�13431646202�013400� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* appmenu.c- application defined menu * * Window Maker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "wconfig.h" #include <X11/Xlib.h> #include <X11/Xutil.h> #include <X11/Xproto.h> #include <X11/Xatom.h> #include <stdlib.h> #include <string.h> #include <stdio.h> #include <unistd.h> #include "WindowMaker.h" #include "menu.h" #include "actions.h" #include "appmenu.h" #include "framewin.h" typedef struct { short code; short tag; Window window; } WAppMenuData; enum { wmBeginMenu = 1, wmEndMenu = 2, wmNormalItem = 10, wmDoubleItem = 11, wmSubmenuItem = 12 }; enum { wmSelectItem = 1 }; static void sendMessage(Window window, int what, int tag) { XEvent event; event.xclient.type = ClientMessage; event.xclient.message_type = w_global.atom.wmaker.menu; event.xclient.format = 32; event.xclient.display = dpy; event.xclient.window = window; event.xclient.data.l[0] = w_global.timestamp.last_event; event.xclient.data.l[1] = what; event.xclient.data.l[2] = tag; event.xclient.data.l[3] = 0; XSendEvent(dpy, window, False, NoEventMask, &event); XFlush(dpy); } static void notifyClient(WMenu * menu, WMenuEntry * entry) { WAppMenuData *data = entry->clientdata; /* Parameter not used, but tell the compiler that it is ok */ (void) menu; sendMessage(data->window, wmSelectItem, data->tag); } static WMenu *parseMenuCommand(WScreen * scr, Window win, char **slist, int count, int *index) { WMenu *menu; int command; int code, pos; char title[300]; char rtext[300]; if (sscanf(slist[*index], "%i %i %n", &command, &code, &pos) < 2 || command != wmBeginMenu) { wwarning(_("appmenu: bad menu entry \"%s\" in window %lx"), slist[*index], win); return NULL; } if (wstrlcpy(title, &slist[*index][pos], sizeof(title)) >= sizeof(title)) { wwarning(_("appmenu: menu command size exceeded in window %lx"), win); return NULL; } menu = wMenuCreateForApp(scr, title, *index == 1); if (!menu) return NULL; *index += 1; while (*index < count) { int ecode, etag, enab; if (sscanf(slist[*index], "%i", &command) != 1) { wMenuDestroy(menu, True); wwarning(_("appmenu: bad menu entry \"%s\" in window %lx"), slist[*index], win); return NULL; } if (command == wmEndMenu) { *index += 1; break; } else if (command == wmNormalItem || command == wmDoubleItem) { WAppMenuData *data; WMenuEntry *entry; if (command == wmNormalItem) { if (sscanf(slist[*index], "%i %i %i %i %n", &command, &ecode, &etag, &enab, &pos) != 4 || ecode != code) { wMenuDestroy(menu, True); wwarning(_("appmenu: bad menu entry \"%s\" in window %lx"), slist[*index], win); return NULL; } wstrlcpy(title, &slist[*index][pos], sizeof(title)); rtext[0] = 0; } else { if (sscanf(slist[*index], "%i %i %i %i %s %n", &command, &ecode, &etag, &enab, rtext, &pos) != 5 || ecode != code) { wMenuDestroy(menu, True); wwarning(_("appmenu: bad menu entry \"%s\" in window %lx"), slist[*index], win); return NULL; } wstrlcpy(title, &slist[*index][pos], sizeof(title)); } data = malloc(sizeof(WAppMenuData)); if (data == NULL) { wwarning(_("appmenu: out of memory creating menu for window %lx"), win); wMenuDestroy(menu, True); return NULL; } data->code = code; data->tag = etag; data->window = win; entry = wMenuAddCallback(menu, title, notifyClient, data); if (!entry) { wMenuDestroy(menu, True); wwarning(_("appmenu: out of memory creating menu for window %lx"), win); free(data); return NULL; } if (rtext[0] != 0) entry->rtext = wstrdup(rtext); else entry->rtext = NULL; entry->free_cdata = free; *index += 1; } else if (command == wmSubmenuItem) { int ncode; WMenuEntry *entry; WMenu *submenu; if (sscanf(slist[*index], "%i %i %i %i %i %n", &command, &ecode, &etag, &enab, &ncode, &pos) != 5 || ecode != code) { wMenuDestroy(menu, True); wwarning(_("appmenu: bad menu entry \"%s\" in window %lx"), slist[*index], win); return NULL; } wstrlcpy(title, &slist[*index][pos], sizeof(title)); *index += 1; submenu = parseMenuCommand(scr, win, slist, count, index); entry = wMenuAddCallback(menu, title, NULL, NULL); if (!entry) { wMenuDestroy(menu, True); wMenuDestroy(submenu, True); wwarning(_("appmenu: out of memory creating menu for window %lx"), win); return NULL; } wMenuEntrySetCascade(menu, entry, submenu); } else { wMenuDestroy(menu, True); wwarning(_("appmenu: bad menu entry \"%s\" in window %lx"), slist[*index], win); return NULL; } } return menu; } WMenu *wAppMenuGet(WScreen * scr, Window window) { XTextProperty text_prop; int count, i; char **slist; WMenu *menu; if (!XGetTextProperty(dpy, window, &text_prop, w_global.atom.wmaker.menu)) { return NULL; } if (!XTextPropertyToStringList(&text_prop, &slist, &count) || count < 1) { XFree(text_prop.value); return NULL; } XFree(text_prop.value); if (strcmp(slist[0], "WMMenu 0") != 0) { wwarning(_("appmenu: unknown version of WMMenu in window %lx: %s"), window, slist[0]); XFreeStringList(slist); return NULL; } i = 1; menu = parseMenuCommand(scr, window, slist, count, &i); if (menu) menu->parent = NULL; XFreeStringList(slist); return menu; } void wAppMenuDestroy(WMenu * menu) { if (menu) wMenuDestroy(menu, True); } static void mapmenus(WMenu * menu) { int i; if (menu->flags.mapped) XMapWindow(dpy, menu->frame->core->window); if (menu->brother->flags.mapped) XMapWindow(dpy, menu->brother->frame->core->window); for (i = 0; i < menu->cascade_no; i++) { if (menu->cascades[i]) mapmenus(menu->cascades[i]); } } void wAppMenuMap(WMenu * menu, WWindow * wwin) { if (!menu) return; if (!menu->flags.mapped) { wMenuMap(menu); } if (wwin && (wPreferences.focus_mode != WKF_CLICK)) { int x, min; min = 20; /* Keep at least 20 pixels visible */ if (wwin->frame_x > min) { x = wwin->frame_x - menu->frame->core->width; } else { x = min - menu->frame->core->width; } wMenuMove(menu, x, wwin->frame_y, True); } mapmenus(menu); } static void unmapmenus(WMenu * menu) { int i; if (menu->flags.mapped) XUnmapWindow(dpy, menu->frame->core->window); if (menu->brother->flags.mapped) XUnmapWindow(dpy, menu->brother->frame->core->window); for (i = 0; i < menu->cascade_no; i++) { if (menu->cascades[i]) unmapmenus(menu->cascades[i]); } } void wAppMenuUnmap(WMenu * menu) { if (menu) unmapmenus(menu); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/main.h�����������������������������������������������������������������������0000644�0001750�0001750�00000002413�13431646202�012653� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2003 Alfredo K. Kojima * Copyright (c) 1998-2003 Dan Pascu * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef WMMAIN_H_ #define WMMAIN_H_ #include "config.h" #ifdef HAVE_STDNORETURN #include <stdnoreturn.h> #endif noreturn void Exit(int status); void Restart(char *manager, Bool abortOnFailure); void SetupEnvironment(WScreen *scr); void ExecuteShellCommand(WScreen *scr, const char *command); Bool RelaunchWindow(WWindow *wwin); noreturn void wAbort(Bool dumpCore); void ExecExitScript(void); int getWVisualID(int screen); #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/window.c���������������������������������������������������������������������0000644�0001750�0001750�00000253332�13642357774�013262� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* window.c - client window managing stuffs * * Window Maker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "wconfig.h" #include <X11/Xlib.h> #include <X11/Xutil.h> #ifdef USE_XSHAPE #include <X11/extensions/shape.h> #endif #ifdef KEEP_XKB_LOCK_STATUS #include <X11/XKBlib.h> #endif /* KEEP_XKB_LOCK_STATUS */ #include <stdlib.h> #include <stdio.h> #include <string.h> #include <stdint.h> #include <math.h> /* For getting mouse wheel mappings from WINGs */ #include <WINGs/WINGs.h> #include "WindowMaker.h" #include "GNUstep.h" #include "wcore.h" #include "framewin.h" #include "texture.h" #include "window.h" #include "winspector.h" #include "icon.h" #include "properties.h" #include "actions.h" #include "client.h" #include "colormap.h" #include "keybind.h" #include "stacking.h" #include "defaults.h" #include "workspace.h" #include "xinerama.h" #include "appmenu.h" #include "appicon.h" #include "superfluous.h" #include "rootmenu.h" #include "placement.h" #include "misc.h" #include "startup.h" #include "winmenu.h" #include "osdep.h" #ifdef USE_MWM_HINTS # include "motif.h" #endif #include "wmspec.h" #define MOD_MASK wPreferences.modifier_mask /***** Local Stuff *****/ static WWindowState *windowState = NULL; static FocusMode getFocusMode(WWindow *wwin); static int getSavedState(Window window, WSavedState **state); static void setupGNUstepHints(WWindow *wwin, GNUstepWMAttributes *gs_hints); /* frame window (during window grabs) */ static void frameMouseDown(WObjDescriptor *desc, XEvent *event); /* close button */ static void windowCloseClick(WCoreWindow *sender, void *data, XEvent *event); static void windowCloseDblClick(WCoreWindow *sender, void *data, XEvent *event); /* iconify button */ static void windowIconifyClick(WCoreWindow *sender, void *data, XEvent *event); #ifdef XKB_BUTTON_HINT static void windowLanguageClick(WCoreWindow *sender, void *data, XEvent *event); #endif static void titlebarMouseDown(WCoreWindow *sender, void *data, XEvent *event); static void titlebarDblClick(WCoreWindow *sender, void *data, XEvent *event); static void resizebarMouseDown(WCoreWindow *sender, void *data, XEvent *event); static void release_wwindowstate(WWindowState *wstate); /****** Notification Observers ******/ static void appearanceObserver(void *self, WMNotification * notif) { WWindow *wwin = (WWindow *) self; uintptr_t flags = (uintptr_t)WMGetNotificationClientData(notif); if (!wwin->frame || (!wwin->frame->titlebar && !wwin->frame->resizebar)) return; if (flags & WFontSettings) { wWindowConfigureBorders(wwin); if (wwin->flags.shaded) { wFrameWindowResize(wwin->frame, wwin->frame->core->width, wwin->frame->top_width - 1); wwin->client.y = wwin->frame_y - wwin->client.height + wwin->frame->top_width; wWindowSynthConfigureNotify(wwin); } } if (flags & WTextureSettings) wwin->frame->flags.need_texture_remake = 1; if (flags & (WTextureSettings | WColorSettings)) { if (wwin->frame->titlebar) XClearWindow(dpy, wwin->frame->titlebar->window); wFrameWindowPaint(wwin->frame); } } /* Return the WWindow associated with a given (Xlib) Window. */ WWindow *wWindowFor(Window window) { WObjDescriptor *desc; if (window == None) return NULL; if (XFindContext(dpy, window, w_global.context.client_win, (XPointer *) & desc) == XCNOENT) return NULL; if (desc->parent_type == WCLASS_WINDOW) return desc->parent; else if (desc->parent_type == WCLASS_FRAME) { WFrameWindow *frame = (WFrameWindow *) desc->parent; if (frame->flags.is_client_window_frame) return frame->child; } return NULL; } WWindow *wWindowCreate(void) { WWindow *wwin; wwin = wmalloc(sizeof(WWindow)); wretain(wwin); wwin->client_descriptor.handle_mousedown = frameMouseDown; wwin->client_descriptor.parent = wwin; wwin->client_descriptor.self = wwin; wwin->client_descriptor.parent_type = WCLASS_WINDOW; return wwin; } void wWindowDestroy(WWindow *wwin) { int i; if (wwin->screen_ptr->cmap_window == wwin) wwin->screen_ptr->cmap_window = NULL; WMRemoveNotificationObserver(wwin); wwin->flags.destroyed = 1; for (i = 0; i < MAX_WINDOW_SHORTCUTS; i++) { if (!wwin->screen_ptr->shortcutWindows[i]) continue; WMRemoveFromArray(wwin->screen_ptr->shortcutWindows[i], wwin); if (!WMGetArrayItemCount(wwin->screen_ptr->shortcutWindows[i])) { WMFreeArray(wwin->screen_ptr->shortcutWindows[i]); wwin->screen_ptr->shortcutWindows[i] = NULL; } } if (wwin->fake_group && wwin->fake_group->retainCount > 0) { wwin->fake_group->retainCount--; if (wwin->fake_group->retainCount == 0 && wwin->fake_group->leader != None) { XDestroyWindow(dpy, wwin->fake_group->leader); wwin->fake_group->leader = None; wwin->fake_group->origLeader = None; XFlush(dpy); } } if (wwin->normal_hints) XFree(wwin->normal_hints); if (wwin->wm_hints) XFree(wwin->wm_hints); if (wwin->wm_instance) XFree(wwin->wm_instance); if (wwin->wm_class) XFree(wwin->wm_class); if (wwin->wm_gnustep_attr) wfree(wwin->wm_gnustep_attr); if (wwin->cmap_windows) XFree(wwin->cmap_windows); XDeleteContext(dpy, wwin->client_win, w_global.context.client_win); if (wwin->frame) wFrameWindowDestroy(wwin->frame); if (wwin->icon) { RemoveFromStackList(wwin->icon->core); wIconDestroy(wwin->icon); if (wPreferences.auto_arrange_icons) wArrangeIcons(wwin->screen_ptr, True); } if (wwin->net_icon_image) RReleaseImage(wwin->net_icon_image); wrelease(wwin); } static void setupGNUstepHints(WWindow *wwin, GNUstepWMAttributes *gs_hints) { if (gs_hints->flags & GSWindowStyleAttr) { if (gs_hints->window_style == WMBorderlessWindowMask) { wwin->client_flags.no_border = 1; wwin->client_flags.no_titlebar = 1; wwin->client_flags.no_closable = 1; wwin->client_flags.no_miniaturizable = 1; wwin->client_flags.no_resizable = 1; wwin->client_flags.no_close_button = 1; wwin->client_flags.no_miniaturize_button = 1; wwin->client_flags.no_resizebar = 1; } else { wwin->client_flags.no_close_button = ((gs_hints->window_style & WMClosableWindowMask) ? 0 : 1); wwin->client_flags.no_closable = ((gs_hints->window_style & WMClosableWindowMask) ? 0 : 1); wwin->client_flags.no_miniaturize_button = ((gs_hints->window_style & WMMiniaturizableWindowMask) ? 0 : 1); wwin->client_flags.no_miniaturizable = wwin->client_flags.no_miniaturize_button; wwin->client_flags.no_resizebar = ((gs_hints->window_style & WMResizableWindowMask) ? 0 : 1); wwin->client_flags.no_resizable = wwin->client_flags.no_resizebar; /* these attributes supposedly imply in the existence * of a titlebar */ if (gs_hints->window_style & (WMResizableWindowMask | WMClosableWindowMask | WMMiniaturizableWindowMask)) { wwin->client_flags.no_titlebar = 0; } else { wwin->client_flags.no_titlebar = ((gs_hints->window_style & WMTitledWindowMask) ? 0 : 1); } } } else { /* setup the defaults */ wwin->client_flags.no_border = 0; wwin->client_flags.no_titlebar = 0; wwin->client_flags.no_closable = 0; wwin->client_flags.no_miniaturizable = 0; wwin->client_flags.no_resizable = 0; wwin->client_flags.no_close_button = 0; wwin->client_flags.no_miniaturize_button = 0; wwin->client_flags.no_resizebar = 0; } if (gs_hints->extra_flags & GSNoApplicationIconFlag) wwin->client_flags.no_appicon = 1; } static void discard_hints_from_gtk(WWindow *wwin) { Atom type; int format; unsigned long nb_item, nb_remain; unsigned char *result; int status; status = XGetWindowProperty(dpy, wwin->client_win, w_global.atom.desktop.gtk_object_path, 0, 16, False, AnyPropertyType, &type, &format, &nb_item, &nb_remain, &result); if (status != Success) return; /* If we're here, that means the Property exists. We don't care what is inside, it means it is a GTK-based application */ if (result != NULL) XFree(result); /* GTK is asking to remove these decorations: */ wwin->client_flags.no_titlebar = 0; wwin->client_flags.no_close_button = 0; wwin->client_flags.no_miniaturize_button = 0; wwin->client_flags.no_resizebar = 0; } void wWindowSetupInitialAttributes(WWindow *wwin, int *level, int *workspace) { WScreen *scr = wwin->screen_ptr; /* sets global default stuff */ wDefaultFillAttributes(wwin->wm_instance, wwin->wm_class, &wwin->user_flags, NULL, True); wwin->defined_user_flags = wwin->user_flags; /* * Decoration setting is done in this precedence (lower to higher) * - use global default in the resource database * - guess some settings * - use GNUstep/external window attributes * - set hints specified for the app in the resource DB * */ wwin->client_flags.broken_close = 0; if (wwin->protocols.DELETE_WINDOW) wwin->client_flags.kill_close = 0; else wwin->client_flags.kill_close = 1; /* transients can't be iconified or maximized */ if (wwin->transient_for != None && wwin->transient_for != scr->root_win) { wwin->client_flags.no_miniaturizable = 1; wwin->client_flags.no_miniaturize_button = 1; } /* if the window can't be resized, remove the resizebar */ if (wwin->normal_hints->flags & (PMinSize | PMaxSize) && (wwin->normal_hints->min_width == wwin->normal_hints->max_width) && (wwin->normal_hints->min_height == wwin->normal_hints->max_height)) { wwin->client_flags.no_resizable = 1; wwin->client_flags.no_resizebar = 1; } /* set GNUstep window attributes */ if (wwin->wm_gnustep_attr) { setupGNUstepHints(wwin, wwin->wm_gnustep_attr); if (wwin->wm_gnustep_attr->flags & GSWindowLevelAttr) { *level = wwin->wm_gnustep_attr->window_level; /* * INT_MIN is the only illegal window level. */ if (*level == INT_MIN) *level = INT_MIN + 1; } else { /* setup defaults */ *level = WMNormalLevel; } } else { int tmp_workspace = -1; int tmp_level = INT_MIN; /* INT_MIN is never used by the window levels */ #ifdef USE_MWM_HINTS wMWMCheckClientHints(wwin); #endif /* USE_MWM_HINTS */ wNETWMCheckClientHints(wwin, &tmp_level, &tmp_workspace); if (wPreferences.ignore_gtk_decoration_hints) discard_hints_from_gtk(wwin); /* window levels are between INT_MIN+1 and INT_MAX, so if we still * have INT_MIN that means that no window level was requested. -Dan */ if (tmp_level == INT_MIN) { if (WFLAGP(wwin, floating)) *level = WMFloatingLevel; else if (WFLAGP(wwin, sunken)) *level = WMSunkenLevel; else *level = WMNormalLevel; } else { *level = tmp_level; } if (wwin->transient_for != None && wwin->transient_for != scr->root_win) { WWindow *transientOwner = wWindowFor(wwin->transient_for); if (transientOwner) { int ownerLevel = transientOwner->frame->core->stacking->window_level; if (ownerLevel > *level) *level = ownerLevel; } } if (tmp_workspace >= 0) *workspace = tmp_workspace % scr->workspace_count; } /* * Set attributes specified only for that window/class. * This might do duplicate work with the 1st wDefaultFillAttributes(). */ wDefaultFillAttributes(wwin->wm_instance, wwin->wm_class, &wwin->user_flags, &wwin->defined_user_flags, False); /* Restore decoration if the user has enabled the * IgnoreDecorationChanges option */ if (wwin->user_flags.ignore_decoration_changes) { WSETUFLAG(wwin, no_titlebar, 0); WSETUFLAG(wwin, no_resizable, 0); WSETUFLAG(wwin, no_miniaturizable, 0); WSETUFLAG(wwin, no_resizebar, 0); WSETUFLAG(wwin, no_close_button, 0); WSETUFLAG(wwin, no_miniaturize_button, 0); WSETUFLAG(wwin, no_border, 0); WSETUFLAG(wwin, no_movable, 0); } /* * Sanity checks for attributes that depend on other attributes */ if (wwin->user_flags.no_appicon && wwin->defined_user_flags.no_appicon) wwin->user_flags.emulate_appicon = 0; if (wwin->main_window != None) { WApplication *wapp = wApplicationOf(wwin->main_window); if (wapp && !wapp->flags.emulated) wwin->user_flags.emulate_appicon = 0; } if (wwin->transient_for != None && wwin->transient_for != wwin->screen_ptr->root_win) wwin->user_flags.emulate_appicon = 0; if (wwin->user_flags.sunken && wwin->defined_user_flags.sunken && wwin->user_flags.floating && wwin->defined_user_flags.floating) wwin->user_flags.sunken = 0; /* A window that does not have a title cannot be Shaded and we don't let user override this */ wwin->client_flags.no_shadeable = WFLAGP(wwin, no_titlebar); wwin->defined_user_flags.no_shadeable = 0; /* windows that have takefocus=False shouldn't take focus at all */ if (wwin->focus_mode == WFM_NO_INPUT) wwin->client_flags.no_focusable = 1; } Bool wWindowObscuresWindow(WWindow *wwin, WWindow *obscured) { int w1, h1, w2, h2; w1 = wwin->frame->core->width; h1 = wwin->frame->core->height; w2 = obscured->frame->core->width; h2 = obscured->frame->core->height; if (!IS_OMNIPRESENT(wwin) && !IS_OMNIPRESENT(obscured) && wwin->frame->workspace != obscured->frame->workspace) return False; if (wwin->frame_x + w1 < obscured->frame_x || wwin->frame_y + h1 < obscured->frame_y || wwin->frame_x > obscured->frame_x + w2 || wwin->frame_y > obscured->frame_y + h2) return False; return True; } static void fixLeaderProperties(WWindow *wwin) { XClassHint *classHint; XWMHints *hints, *clientHints; XWindowAttributes attr; Window leaders[2], window; char **argv, *command; int argc, i, pid; Bool haveCommand; classHint = XAllocClassHint(); clientHints = XGetWMHints(dpy, wwin->client_win); pid = wNETWMGetPidForWindow(wwin->client_win); if (pid > 0) haveCommand = GetCommandForPid(pid, &argv, &argc); else haveCommand = False; leaders[0] = wwin->client_leader; leaders[1] = wwin->group_id; if (haveCommand) { command = GetCommandForWindow(wwin->client_win); if (command) wfree(command); /* command already set. nothing to do. */ else XSetCommand(dpy, wwin->client_win, argv, argc); } for (i = 0; i < 2; i++) { window = leaders[i]; if (window) { if (XGetClassHint(dpy, window, classHint) == 0) { classHint->res_name = wwin->wm_instance; classHint->res_class = wwin->wm_class; XSetClassHint(dpy, window, classHint); } hints = XGetWMHints(dpy, window); if (hints) { XFree(hints); } else if (clientHints) { /* set window group leader to self */ clientHints->window_group = window; clientHints->flags |= WindowGroupHint; XSetWMHints(dpy, window, clientHints); } if (haveCommand) { command = GetCommandForWindow(window); if (command) wfree(command); /* command already set. nothing to do. */ else XSetCommand(dpy, window, argv, argc); } /* Make sure we get notification when this window is destroyed */ if (XGetWindowAttributes(dpy, window, &attr)) XSelectInput(dpy, window, attr.your_event_mask | StructureNotifyMask | PropertyChangeMask); } } XFree(classHint); if (clientHints) XFree(clientHints); if (haveCommand) wfree(argv); } static Window createFakeWindowGroupLeader(WScreen *scr, Window win, char *instance, char *class) { XClassHint *classHint; XWMHints *hints; Window leader; int argc; char **argv; leader = XCreateSimpleWindow(dpy, scr->root_win, 10, 10, 10, 10, 0, 0, 0); /* set class hint */ classHint = XAllocClassHint(); classHint->res_name = instance; classHint->res_class = class; XSetClassHint(dpy, leader, classHint); XFree(classHint); /* inherit these from the original leader if available */ hints = XGetWMHints(dpy, win); if (!hints) { hints = XAllocWMHints(); hints->flags = 0; } /* set window group leader to self */ hints->window_group = leader; hints->flags |= WindowGroupHint; XSetWMHints(dpy, leader, hints); XFree(hints); if (XGetCommand(dpy, win, &argv, &argc) != 0 && argc > 0) { XSetCommand(dpy, leader, argv, argc); XFreeStringList(argv); } return leader; } static int matchIdentifier(const void *item, const void *cdata) { return (strcmp(((WFakeGroupLeader *) item)->identifier, (char *)cdata) == 0); } /* *---------------------------------------------------------------- * wManageWindow-- * reparents the window and allocates a descriptor for it. * Window manager hints and other hints are fetched to configure * the window decoration attributes and others. User preferences * for the window are used if available, to configure window * decorations and some behaviour. * If in startup, windows that are override redirect, * unmapped and never were managed and are Withdrawn are not * managed. * * Returns: * the new window descriptor * * Side effects: * The window is reparented and appropriate notification * is done to the client. Input mask for the window is setup. * The window descriptor is also associated with various window * contexts and inserted in the head of the window list. * Event handler contexts are associated for some objects * (buttons, titlebar and resizebar) * *---------------------------------------------------------------- */ WWindow *wManageWindow(WScreen *scr, Window window) { WWindow *wwin; int x, y; unsigned width, height; XWindowAttributes wattribs; XSetWindowAttributes attribs; WWindowState *win_state; WWindow *transientOwner = NULL; int window_level; int wm_state; int foo; int workspace = -1; char *title; Bool withdraw = False; Bool raise = False; /* mutex. */ XGrabServer(dpy); XSync(dpy, False); /* make sure the window is still there */ if (!XGetWindowAttributes(dpy, window, &wattribs)) { XUngrabServer(dpy); return NULL; } /* if it's an override-redirect, ignore it */ if (wattribs.override_redirect) { XUngrabServer(dpy); return NULL; } wm_state = PropGetWindowState(window); /* if it's startup and the window is unmapped, don't manage it */ if (scr->flags.startup && wm_state < 0 && wattribs.map_state == IsUnmapped) { XUngrabServer(dpy); return NULL; } wwin = wWindowCreate(); title = wNETWMGetWindowName(window); if (title) wwin->flags.net_has_title = 1; else if (!wFetchName(dpy, window, &title)) title = NULL; XSaveContext(dpy, window, w_global.context.client_win, (XPointer) & wwin->client_descriptor); #ifdef USE_XSHAPE if (w_global.xext.shape.supported) { int junk; unsigned int ujunk; int b_shaped; XShapeSelectInput(dpy, window, ShapeNotifyMask); XShapeQueryExtents(dpy, window, &b_shaped, &junk, &junk, &ujunk, &ujunk, &junk, &junk, &junk, &ujunk, &ujunk); wwin->flags.shaped = b_shaped; } #endif /* Get hints and other information in properties */ PropGetWMClass(window, &wwin->wm_class, &wwin->wm_instance); /* setup descriptor */ wwin->client_win = window; wwin->screen_ptr = scr; 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; XChangeWindowAttributes(dpy, window, CWEventMask | CWDontPropagate | CWSaveUnder, &attribs); XSetWindowBorderWidth(dpy, window, 0); /* get hints from GNUstep app */ if (wwin->wm_class != NULL && strcmp(wwin->wm_class, "GNUstep") == 0) wwin->flags.is_gnustep = 1; if (!PropGetGNUstepWMAttr(window, &wwin->wm_gnustep_attr)) wwin->wm_gnustep_attr = NULL; if (wwin->wm_class != NULL && strcmp(wwin->wm_class, "DockApp") == 0) { wwin->flags.is_dockapp = 1; withdraw = True; } wwin->client_leader = PropGetClientLeader(window); if (wwin->client_leader != None) wwin->main_window = wwin->client_leader; wwin->wm_hints = XGetWMHints(dpy, window); if (wwin->wm_hints) { if (wwin->wm_hints->flags & StateHint) { if (wwin->wm_hints->initial_state == IconicState) { wwin->flags.miniaturized = 1; } else if (wwin->wm_hints->initial_state == WithdrawnState) { wwin->flags.is_dockapp = 1; withdraw = True; } } if (wwin->wm_hints->flags & WindowGroupHint) { wwin->group_id = wwin->wm_hints->window_group; /* window_group has priority over CLIENT_LEADER */ wwin->main_window = wwin->group_id; } else { wwin->group_id = None; } if (wwin->wm_hints->flags & UrgencyHint) { wwin->flags.urgent = 1; wAppBounceWhileUrgent(wApplicationOf(wwin->main_window)); } } else { wwin->group_id = None; } PropGetProtocols(window, &wwin->protocols); if (!XGetTransientForHint(dpy, window, &wwin->transient_for)) { wwin->transient_for = None; } else { if (wwin->transient_for == None || wwin->transient_for == window) { wwin->transient_for = scr->root_win; } else { transientOwner = wWindowFor(wwin->transient_for); if (transientOwner && transientOwner->main_window != None) wwin->main_window = transientOwner->main_window; } } /* guess the focus mode */ wwin->focus_mode = getFocusMode(wwin); /* get geometry stuff */ wClientGetNormalHints(wwin, &wattribs, True, &x, &y, &width, &height); /* get colormap windows */ GetColormapWindows(wwin); /* * Setup the decoration/window attributes and * geometry */ wWindowSetupInitialAttributes(wwin, &window_level, &workspace); /* Make broken apps behave as a nice app. */ if (WFLAGP(wwin, emulate_appicon)) wwin->main_window = wwin->client_win; fixLeaderProperties(wwin); wwin->orig_main_window = wwin->main_window; if (wwin->flags.is_gnustep) wwin->client_flags.shared_appicon = 0; if (wwin->main_window) { XTextProperty text_prop; if (XGetTextProperty(dpy, wwin->main_window, &text_prop, w_global.atom.wmaker.menu)) wwin->client_flags.shared_appicon = 0; } if (wwin->flags.is_dockapp) wwin->client_flags.shared_appicon = 0; if (wwin->main_window) { WApplication *app = wApplicationOf(wwin->main_window); if (app && app->app_icon) wwin->client_flags.shared_appicon = 0; } if (!withdraw && wwin->main_window && WFLAGP(wwin, shared_appicon)) { char *buffer, *instance, *class; WFakeGroupLeader *fPtr; int index; #define ADEQUATE(x) ((x)!=None && (x)!=wwin->client_win && (x)!=fPtr->leader) /* // only enter here if PropGetWMClass() succeeds */ PropGetWMClass(wwin->main_window, &class, &instance); buffer = StrConcatDot(instance, class); index = WMFindInArray(scr->fakeGroupLeaders, matchIdentifier, (void *)buffer); if (index != WANotFound) { fPtr = WMGetFromArray(scr->fakeGroupLeaders, index); if (fPtr->retainCount == 0) fPtr->leader = createFakeWindowGroupLeader(scr, wwin->main_window, instance, class); fPtr->retainCount++; if (fPtr->origLeader == None) { if (ADEQUATE(wwin->main_window)) { fPtr->retainCount++; fPtr->origLeader = wwin->main_window; } } wwin->fake_group = fPtr; wwin->main_window = fPtr->leader; wfree(buffer); } else { fPtr = (WFakeGroupLeader *) wmalloc(sizeof(WFakeGroupLeader)); fPtr->identifier = buffer; fPtr->leader = createFakeWindowGroupLeader(scr, wwin->main_window, instance, class); fPtr->origLeader = None; fPtr->retainCount = 1; WMAddToArray(scr->fakeGroupLeaders, fPtr); if (ADEQUATE(wwin->main_window)) { fPtr->retainCount++; fPtr->origLeader = wwin->main_window; } wwin->fake_group = fPtr; wwin->main_window = fPtr->leader; } if (instance) free(instance); if (class) free(class); #undef ADEQUATE } /* * Setup the initial state of the window */ if (WFLAGP(wwin, start_miniaturized) && !WFLAGP(wwin, no_miniaturizable)) wwin->flags.miniaturized = 1; if (WFLAGP(wwin, start_maximized) && IS_RESIZABLE(wwin)) wwin->flags.maximized = MAX_VERTICAL | MAX_HORIZONTAL; wNETWMCheckInitialClientState(wwin); /* apply previous state if it exists and we're in startup */ if (scr->flags.startup && wm_state >= 0) { if (wm_state == IconicState) wwin->flags.miniaturized = 1; else if (wm_state == WithdrawnState) withdraw = True; } /* if there is a saved state (from file), restore it */ win_state = NULL; if (wwin->main_window != None) win_state = (WWindowState *) wWindowGetSavedState(wwin->main_window); else win_state = (WWindowState *) wWindowGetSavedState(window); if (win_state && !withdraw) { if (win_state->state->hidden > 0) wwin->flags.hidden = win_state->state->hidden; if (win_state->state->shaded > 0 && !WFLAGP(wwin, no_shadeable)) wwin->flags.shaded = win_state->state->shaded; if (win_state->state->miniaturized > 0 && !WFLAGP(wwin, no_miniaturizable)) wwin->flags.miniaturized = win_state->state->miniaturized; if (!IS_OMNIPRESENT(wwin)) { int w = wDefaultGetStartWorkspace(scr, wwin->wm_instance, wwin->wm_class); if (w < 0 || w >= scr->workspace_count) { workspace = win_state->state->workspace; if (workspace >= scr->workspace_count) workspace = scr->current_workspace; } else { workspace = w; } } else { workspace = scr->current_workspace; } } /* if we're restarting, restore saved state (from hints). * This will overwrite previous */ { WSavedState *wstate; if (getSavedState(window, &wstate)) { wwin->flags.shaded = wstate->shaded; wwin->flags.hidden = wstate->hidden; wwin->flags.miniaturized = wstate->miniaturized; wwin->flags.maximized = wstate->maximized; if (wwin->flags.maximized) { wwin->old_geometry.x = wstate->x; wwin->old_geometry.y = wstate->y; wwin->old_geometry.width = wstate->w; wwin->old_geometry.height = wstate->h; } workspace = wstate->workspace; } else { wstate = NULL; } /* restore window shortcut */ if (wstate != NULL || win_state != NULL) { unsigned mask = 0; if (win_state != NULL) mask = win_state->state->window_shortcuts; if (wstate != NULL && mask == 0) mask = wstate->window_shortcuts; if (mask > 0) { int i; for (i = 0; i < MAX_WINDOW_SHORTCUTS; i++) { if (mask & (1 << i)) { if (!scr->shortcutWindows[i]) scr->shortcutWindows[i] = WMCreateArray(4); WMAddToArray(scr->shortcutWindows[i], wwin); } } } } if (wstate != NULL) wfree(wstate); } /* don't let transients start miniaturized if their owners are not */ if (transientOwner && !transientOwner->flags.miniaturized && wwin->flags.miniaturized && !withdraw) { wwin->flags.miniaturized = 0; if (wwin->wm_hints) wwin->wm_hints->initial_state = NormalState; } /* set workspace on which the window starts */ if (workspace >= 0) { if (workspace > scr->workspace_count - 1) workspace = workspace % scr->workspace_count; } else { int w; w = wDefaultGetStartWorkspace(scr, wwin->wm_instance, wwin->wm_class); if (w >= 0 && w < scr->workspace_count && !(IS_OMNIPRESENT(wwin))) { workspace = w; } else { if (wPreferences.open_transients_with_parent && transientOwner) workspace = transientOwner->frame->workspace; else workspace = scr->current_workspace; } } /* setup window geometry */ if (win_state && win_state->state->w > 0) { width = win_state->state->w; height = win_state->state->h; } wWindowConstrainSize(wwin, &width, &height); /* do not ask for window placement if the window is * transient, during startup, or if the window wants * to start iconic. If geometry was saved, restore it. */ { Bool dontBring = False; if (win_state && win_state->state->w > 0) { x = win_state->state->x; y = win_state->state->y; } else if ((wwin->transient_for == None || wPreferences.window_placement != WPM_MANUAL) && !scr->flags.startup && !wwin->flags.miniaturized && !wwin->flags.maximized && !(wwin->normal_hints->flags & (USPosition | PPosition))) { if (transientOwner && transientOwner->flags.mapped) { int offs = WMAX(20, 2 * transientOwner->frame->top_width); WMRect rect; int head; x = transientOwner->frame_x + abs((transientOwner->frame->core->width - width) / 2) + offs; y = transientOwner->frame_y + abs((transientOwner->frame->core->height - height) / 3) + offs; /* limit transient windows to be inside their parent's head */ rect.pos.x = transientOwner->frame_x; rect.pos.y = transientOwner->frame_y; rect.size.width = transientOwner->frame->core->width; rect.size.height = transientOwner->frame->core->height; head = wGetHeadForRect(scr, rect); rect = wGetRectForHead(scr, head); if (x < rect.pos.x) x = rect.pos.x; else if (x + width > rect.pos.x + rect.size.width) x = rect.pos.x + rect.size.width - width; if (y < rect.pos.y) y = rect.pos.y; else if (y + height > rect.pos.y + rect.size.height) y = rect.pos.y + rect.size.height - height; } else { PlaceWindow(wwin, &x, &y, width, height); } if (wPreferences.window_placement == WPM_MANUAL) dontBring = True; } else if (scr->xine_info.count && (wwin->normal_hints->flags & PPosition)) { int head, flags; WMRect rect; int reposition = 0; /* Make spash screens come out in the center of a head * trouble is that most splashies never get here * they are managed trough atoms but god knows where. * Dan, do you know ? -peter * * Most of them are not managed, they have set * OverrideRedirect, which means we can't do anything about * them. -alfredo */ { /* xinerama checks for: across head and dead space */ rect.pos.x = x; rect.pos.y = y; rect.size.width = width; rect.size.height = height; head = wGetRectPlacementInfo(scr, rect, &flags); if (flags & XFLAG_DEAD) reposition = 1; if (flags & XFLAG_MULTIPLE) reposition = 2; } switch (reposition) { case 1: head = wGetHeadForPointerLocation(scr); rect = wGetRectForHead(scr, head); x = rect.pos.x + (x * rect.size.width) / scr->scr_width; y = rect.pos.y + (y * rect.size.height) / scr->scr_height; break; case 2: rect = wGetRectForHead(scr, head); if (x < rect.pos.x) x = rect.pos.x; else if (x + width > rect.pos.x + rect.size.width) x = rect.pos.x + rect.size.width - width; if (y < rect.pos.y) y = rect.pos.y; else if (y + height > rect.pos.y + rect.size.height) y = rect.pos.y + rect.size.height - height; break; default: break; } } if (WFLAGP(wwin, dont_move_off) && dontBring) wScreenBringInside(scr, &x, &y, width, height); } wNETWMPositionSplash(wwin, &x, &y, width, height); if (wwin->flags.urgent) { if (!IS_OMNIPRESENT(wwin)) wwin->flags.omnipresent ^= 1; } /* Create frame, borders and do reparenting */ foo = WFF_LEFT_BUTTON | WFF_RIGHT_BUTTON; #ifdef XKB_BUTTON_HINT if (wPreferences.modelock) foo |= WFF_LANGUAGE_BUTTON; #endif if (HAS_TITLEBAR(wwin)) foo |= WFF_TITLEBAR; if (HAS_RESIZEBAR(wwin)) foo |= WFF_RESIZEBAR; if (HAS_BORDER(wwin)) foo |= WFF_BORDER; wwin->frame = wFrameWindowCreate(scr, window_level, x, y, width, height, &wPreferences.window_title_clearance, &wPreferences.window_title_min_height, &wPreferences.window_title_max_height, foo, scr->window_title_texture, scr->resizebar_texture, scr->window_title_color, &scr->title_font, wattribs.depth, wattribs.visual, wattribs.colormap); wwin->frame->flags.is_client_window_frame = 1; wwin->frame->flags.justification = wPreferences.title_justification; wNETWMCheckInitialFrameState(wwin); /* setup button images */ wWindowUpdateButtonImages(wwin); /* hide unused buttons */ foo = 0; if (WFLAGP(wwin, no_close_button)) foo |= WFF_RIGHT_BUTTON; if (WFLAGP(wwin, no_miniaturize_button)) foo |= WFF_LEFT_BUTTON; #ifdef XKB_BUTTON_HINT if (WFLAGP(wwin, no_language_button) || WFLAGP(wwin, no_focusable)) foo |= WFF_LANGUAGE_BUTTON; #endif if (foo != 0) wFrameWindowHideButton(wwin->frame, foo); wwin->frame->child = wwin; wwin->frame->workspace = workspace; wwin->frame->on_click_left = windowIconifyClick; #ifdef XKB_BUTTON_HINT if (wPreferences.modelock) wwin->frame->on_click_language = windowLanguageClick; #endif wwin->frame->on_click_right = windowCloseClick; wwin->frame->on_dblclick_right = windowCloseDblClick; wwin->frame->on_mousedown_titlebar = titlebarMouseDown; wwin->frame->on_dblclick_titlebar = titlebarDblClick; 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; wClientGetGravityOffsets(wwin, &gx, &gy); /* if gravity is to the south, account for the border sizes */ 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 * related variables (frame_x,frame_y) */ 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) { WApplication *app; WWindow *leader; /* Leader windows do not necessary set themselves as leaders. * If this is the case, point the leader of this window to * itself */ leader = wWindowFor(wwin->main_window); if (leader && leader->main_window == None) leader->main_window = leader->client_win; app = wApplicationCreate(wwin); if (app) { app->last_workspace = workspace; /* Do application specific stuff, like setting application * wide attributes. */ if (wwin->flags.hidden) { /* if the window was set to hidden because it was hidden * in a previous incarnation and that state was restored */ app->flags.hidden = 1; } else if (app->flags.hidden) { if (WFLAGP(app->main_window_desc, start_hidden)) { wwin->flags.hidden = 1; } else { wUnhideApplication(app, False, False); raise = True; } } wAppBounce(app); } } /* setup the frame descriptor */ wwin->frame->core->descriptor.handle_mousedown = frameMouseDown; wwin->frame->core->descriptor.parent = wwin; wwin->frame->core->descriptor.parent_type = WCLASS_WINDOW; /* don't let windows go away if we die */ XAddToSaveSet(dpy, 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)) && !wwin->flags.hidden && !withdraw) { /* 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. */ if (wwin->wm_hints && (wwin->wm_hints->flags & StateHint)) wClientSetState(wwin, wwin->wm_hints->initial_state, None); else wClientSetState(wwin, NormalState, None); if (wPreferences.superfluous && !wPreferences.no_animations && !scr->flags.startup && (wwin->transient_for == None || wwin->transient_for == scr->root_win) && /* * The brain damaged idiotic non-click to focus modes will * have trouble with this because: * * 1. window is created and mapped by the client * 2. window is mapped by wmaker in small size * 3. window is animated to grow to normal size * 4. this function returns to normal event loop * 5. eventually, the EnterNotify event that would trigger * the window focusing (if the mouse is over that window) * will be processed by wmaker. * But since this event will be rather delayed * (step 3 has a large delay) the time when the event occurred * and when it is processed, the client that owns that window * will reject the XSetInputFocus() for it. */ (wPreferences.focus_mode == WKF_CLICK || wPreferences.auto_focus)) DoWindowBirth(wwin); wWindowMap(wwin); } /* setup stacking descriptor */ if (transientOwner) wwin->frame->core->stacking->child_of = transientOwner->frame->core; else wwin->frame->core->stacking->child_of = NULL; if (!scr->focused_window) { /* first window on the list */ wwin->next = NULL; wwin->prev = NULL; scr->focused_window = wwin; } else { WWindow *tmp; /* add window at beginning of focus window list */ tmp = scr->focused_window; while (tmp->prev) tmp = tmp->prev; tmp->prev = wwin; wwin->next = tmp; wwin->prev = NULL; } /* raise is set to true if we un-hid the app when this window was born. * we raise, else old windows of this app will be above this new one. */ if (raise) wRaiseFrame(wwin->frame->core); /* Update name must come after WApplication stuff is done */ wWindowUpdateName(wwin, title); if (title) XFree(title); XUngrabServer(dpy); /* Final preparations before window is ready to go */ wFrameWindowChangeState(wwin->frame, WS_UNFOCUSED); if (!wwin->flags.miniaturized && workspace == scr->current_workspace && !wwin->flags.hidden) { if (((transientOwner && transientOwner->flags.focused) || wPreferences.auto_focus) && !WFLAGP(wwin, no_focusable)) { /* only auto_focus if on same screen as mouse * (and same head for xinerama mode) * TODO: make it an option */ /*TODO add checking the head of the window, is it available? */ short same_screen = 0, same_head = 1; int foo; unsigned int bar; Window dummy; if (XQueryPointer(dpy, scr->root_win, &dummy, &dummy, &foo, &foo, &foo, &foo, &bar) != False) same_screen = 1; if (same_screen == 1 && same_head == 1) wSetFocusTo(scr, wwin); } } wWindowResetMouseGrabs(wwin); if (!WFLAGP(wwin, no_bind_keys)) wWindowSetKeyGrabs(wwin); WMPostNotificationName(WMNManaged, wwin, NULL); wColormapInstallForWindow(scr, scr->cmap_window); /* Setup Notification Observers */ WMAddNotificationObserver(appearanceObserver, wwin, WNWindowAppearanceSettingsChanged, wwin); /* Cleanup temporary stuff */ if (win_state) wWindowDeleteSavedState(win_state); /* If the window must be withdrawed, then do it now. * Must do some optimization, 'though */ if (withdraw) { wwin->flags.mapped = 0; wClientSetState(wwin, WithdrawnState, None); wUnmanageWindow(wwin, True, False); wwin = NULL; } return wwin; } WWindow *wManageInternalWindow(WScreen *scr, Window window, Window owner, const char *title, int x, int y, int width, int height) { WWindow *wwin; int foo; wwin = wWindowCreate(); WMAddNotificationObserver(appearanceObserver, wwin, WNWindowAppearanceSettingsChanged, wwin); wwin->flags.internal_window = 1; wwin->client_flags.omnipresent = 1; wwin->client_flags.no_shadeable = 1; wwin->client_flags.no_resizable = 1; wwin->client_flags.no_miniaturizable = 1; wwin->focus_mode = WFM_PASSIVE; wwin->client_win = window; wwin->screen_ptr = scr; wwin->transient_for = owner; wwin->client.x = x; wwin->client.y = y; wwin->client.width = width; wwin->client.height = height; wwin->frame_x = wwin->client.x; wwin->frame_y = wwin->client.y; foo = WFF_RIGHT_BUTTON | WFF_BORDER; foo |= WFF_TITLEBAR; #ifdef XKB_BUTTON_HINT foo |= WFF_LANGUAGE_BUTTON; #endif wwin->frame = wFrameWindowCreate(scr, WMFloatingLevel, wwin->frame_x, wwin->frame_y, width, height, &wPreferences.window_title_clearance, &wPreferences.window_title_min_height, &wPreferences.window_title_max_height, foo, scr->window_title_texture, scr->resizebar_texture, scr->window_title_color, &scr->title_font, scr->w_depth, scr->w_visual, scr->w_colormap); XSaveContext(dpy, window, w_global.context.client_win, (XPointer) & wwin->client_descriptor); wwin->frame->flags.is_client_window_frame = 1; wwin->frame->flags.justification = wPreferences.title_justification; wFrameWindowChangeTitle(wwin->frame, title); /* setup button images */ wWindowUpdateButtonImages(wwin); /* hide buttons */ wFrameWindowHideButton(wwin->frame, WFF_RIGHT_BUTTON); wwin->frame->child = wwin; wwin->frame->workspace = wwin->screen_ptr->current_workspace; #ifdef XKB_BUTTON_HINT if (wPreferences.modelock) wwin->frame->on_click_language = windowLanguageClick; #endif wwin->frame->on_click_right = windowCloseClick; wwin->frame->on_mousedown_titlebar = titlebarMouseDown; wwin->frame->on_dblclick_titlebar = titlebarDblClick; wwin->frame->on_mousedown_resizebar = resizebarMouseDown; wwin->client.y += wwin->frame->top_width; XReparentWindow(dpy, wwin->client_win, wwin->frame->core->window, 0, wwin->frame->top_width); wWindowConfigure(wwin, wwin->frame_x, wwin->frame_y, wwin->client.width, wwin->client.height); /* setup the frame descriptor */ wwin->frame->core->descriptor.handle_mousedown = frameMouseDown; wwin->frame->core->descriptor.parent = wwin; wwin->frame->core->descriptor.parent_type = WCLASS_WINDOW; XLowerWindow(dpy, window); XMapSubwindows(dpy, wwin->frame->core->window); /* setup stacking descriptor */ if (wwin->transient_for != None && wwin->transient_for != scr->root_win) { WWindow *tmp; tmp = wWindowFor(wwin->transient_for); if (tmp) wwin->frame->core->stacking->child_of = tmp->frame->core; } else { wwin->frame->core->stacking->child_of = NULL; } if (!scr->focused_window) { /* first window on the list */ wwin->next = NULL; wwin->prev = NULL; scr->focused_window = wwin; } else { WWindow *tmp; /* add window at beginning of focus window list */ tmp = scr->focused_window; while (tmp->prev) tmp = tmp->prev; tmp->prev = wwin; wwin->next = tmp; wwin->prev = NULL; } if (wwin->flags.is_gnustep == 0) wFrameWindowChangeState(wwin->frame, WS_UNFOCUSED); /* if (wPreferences.auto_focus) */ wSetFocusTo(scr, wwin); wWindowResetMouseGrabs(wwin); wWindowSetKeyGrabs(wwin); return wwin; } /* *---------------------------------------------------------------------- * wUnmanageWindow-- * Removes the frame window from a window and destroys all data * related to it. The window will be reparented back to the root window * if restore is True. * * Side effects: * Everything related to the window is destroyed and the window * is removed from the window lists. Focus is set to the previous on the * window list. *---------------------------------------------------------------------- */ void wUnmanageWindow(WWindow *wwin, Bool restore, Bool destroyed) { WCoreWindow *frame = wwin->frame->core; WWindow *owner = NULL; WWindow *newFocusedWindow = NULL; int wasFocused; WScreen *scr = wwin->screen_ptr; /* First close attribute editor window if open */ if (wwin->flags.inspector_open) wCloseInspectorForWindow(wwin); /* Close window menu if it's open for this window */ if (wwin->flags.menu_open_for_me) CloseWindowMenu(scr); /* Don't restore focus to this window after a window exits * fullscreen mode */ if (scr->bfs_focused_window == wwin) scr->bfs_focused_window = NULL; if (!destroyed) { if (!wwin->flags.internal_window) XRemoveFromSaveSet(dpy, wwin->client_win); /* If this is a leader window, we still need to listen for * DestroyNotify and PropertyNotify. */ if (wApplicationOf(wwin->client_win)) XSelectInput(dpy, wwin->client_win, StructureNotifyMask | PropertyChangeMask); else XSelectInput(dpy, wwin->client_win, NoEventMask); XUngrabButton(dpy, AnyButton, AnyModifier, wwin->client_win); XUngrabKey(dpy, AnyKey, AnyModifier, wwin->client_win); } XUnmapWindow(dpy, frame->window); XUnmapWindow(dpy, wwin->client_win); /* deselect window */ wSelectWindow(wwin, False); /* remove all pending events on window */ /* I think this only matters for autoraise */ if (wPreferences.raise_delay) WMDeleteTimerWithClientData(wwin->frame->core); XFlush(dpy); /* reparent the window back to the root */ if (restore) wClientRestore(wwin); if (wwin->transient_for != scr->root_win) { owner = wWindowFor(wwin->transient_for); if (owner) { if (!owner->flags.semi_focused) owner = NULL; else owner->flags.semi_focused = 0; } } wasFocused = wwin->flags.focused; /* remove from window focus list */ if (!wwin->prev && !wwin->next) { /* was the only window */ scr->focused_window = NULL; newFocusedWindow = NULL; } else { WWindow *tmp; if (wwin->prev) wwin->prev->next = wwin->next; if (wwin->next) wwin->next->prev = wwin->prev; else { scr->focused_window = wwin->prev; scr->focused_window->next = NULL; } if (wPreferences.focus_mode == WKF_CLICK) { /* if in click to focus mode and the window * was a transient, focus the owner window */ tmp = NULL; if (wPreferences.focus_mode == WKF_CLICK) { tmp = wWindowFor(wwin->transient_for); if (tmp && (!tmp->flags.mapped || WFLAGP(tmp, no_focusable))) { tmp = NULL; } } /* otherwise, focus the next one in the focus list */ if (!tmp) { tmp = scr->focused_window; while (tmp) { /* look for one in the window list first */ if (!WFLAGP(tmp, no_focusable) && !WFLAGP(tmp, skip_window_list) && (tmp->flags.mapped || tmp->flags.shaded)) break; tmp = tmp->prev; } if (!tmp) { /* if unsuccessful, choose any focusable window */ tmp = scr->focused_window; while (tmp) { if (!WFLAGP(tmp, no_focusable) && (tmp->flags.mapped || tmp->flags.shaded)) break; tmp = tmp->prev; } } } newFocusedWindow = tmp; } else if (wPreferences.focus_mode == WKF_SLOPPY) { unsigned int mask; int foo; Window bar, win; /* This is to let the root window get the keyboard input * if Sloppy focus mode and no other window get focus. * This way keybindings will not freeze. */ tmp = NULL; if (XQueryPointer(dpy, scr->root_win, &bar, &win, &foo, &foo, &foo, &foo, &mask)) tmp = wWindowFor(win); if (tmp == wwin) tmp = NULL; newFocusedWindow = tmp; } else { newFocusedWindow = NULL; } } if (!wwin->flags.internal_window) WMPostNotificationName(WMNUnmanaged, wwin, NULL); if (wasFocused) { if (newFocusedWindow != owner && owner) { if (wwin->flags.is_gnustep == 0) wFrameWindowChangeState(owner->frame, WS_UNFOCUSED); } wSetFocusTo(scr, newFocusedWindow); } /* Close menu and unhighlight */ WApplication *oapp = wApplicationOf(wwin->main_window); WApplication *napp = scr->focused_window ? wApplicationOf(scr->focused_window->main_window) : NULL; if (oapp && oapp != napp) { wAppMenuUnmap(oapp->menu); if (wPreferences.highlight_active_app) wApplicationDeactivate(oapp); } wNETCleanupFrameExtents(wwin); wWindowDestroy(wwin); XFlush(dpy); } 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; } } void wWindowUnmap(WWindow *wwin) { wwin->flags.mapped = 0; /* prevent window withdrawal when getting UnmapNotify */ XSelectInput(dpy, wwin->client_win, wwin->event_mask & ~StructureNotifyMask); XUnmapWindow(dpy, wwin->client_win); XSelectInput(dpy, wwin->client_win, wwin->event_mask); XUnmapWindow(dpy, wwin->frame->core->window); } void wWindowSingleFocus(WWindow *wwin) { WScreen *scr; int x, y, move = 0; if (!wwin) return; scr = wwin->screen_ptr; wMakeWindowVisible(wwin); x = wwin->frame_x; y = wwin->frame_y; /* bring window back to visible area */ move = wScreenBringInside(scr, &x, &y, wwin->frame->core->width, wwin->frame->core->height); if (move) { wWindowConfigure(wwin, x, y, wwin->client.width, wwin->client.height); } } void wWindowFocusPrev(WWindow *wwin, Bool inSameWorkspace) { WWindow *tmp; if (!wwin || !wwin->prev) return; tmp = wwin; while (tmp->prev) tmp = tmp->prev; if (inSameWorkspace) while (tmp && (tmp->frame->workspace != wwin->frame->workspace)) tmp = tmp->next; wWindowSingleFocus(tmp); } void wWindowFocusNext(WWindow *wwin, Bool inSameWorkspace) { WWindow *tmp; if (!wwin || !wwin->prev) return; tmp = wwin->prev; if (inSameWorkspace) while (tmp && (tmp->frame->workspace != wwin->frame->workspace)) tmp = tmp->prev; wWindowSingleFocus(tmp); } void wWindowFocus(WWindow *wwin, WWindow *owin) { WWindow *nowner; WWindow *oowner; #ifdef KEEP_XKB_LOCK_STATUS if (wPreferences.modelock) XkbLockGroup(dpy, XkbUseCoreKbd, wwin->frame->languagemode); #endif /* KEEP_XKB_LOCK_STATUS */ wwin->flags.semi_focused = 0; if (wwin->flags.is_gnustep == 0) wFrameWindowChangeState(wwin->frame, WS_FOCUSED); wwin->flags.focused = 1; wWindowResetMouseGrabs(wwin); WMPostNotificationName(WMNChangedFocus, wwin, (void *)True); 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; } oowner = wWindowFor(owin->transient_for); /* 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 */ 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) { CloseWindowMenu(wwin->screen_ptr); if (wwin->flags.is_gnustep == 0) wFrameWindowChangeState(wwin->frame, wwin->flags.semi_focused ? WS_PFOCUSED : WS_UNFOCUSED); if (wwin->transient_for != None && wwin->transient_for != wwin->screen_ptr->root_win) { WWindow *owner; owner = wWindowFor(wwin->transient_for); if (owner && owner->flags.semi_focused) { owner->flags.semi_focused = 0; if (owner->flags.mapped || owner->flags.shaded) { wWindowUnfocus(owner); wFrameWindowPaint(owner->frame); } } } wwin->flags.focused = 0; wWindowResetMouseGrabs(wwin); WMPostNotificationName(WMNChangedFocus, wwin, (void *)False); } void wWindowUpdateName(WWindow *wwin, const char *newTitle) { const char *title; if (!wwin->frame) return; if (!newTitle) title = DEF_WINDOW_TITLE; /* the hint was removed */ else title = newTitle; if (wFrameWindowChangeTitle(wwin->frame, title)) WMPostNotificationName(WMNChangedName, wwin, NULL); } /* *---------------------------------------------------------------------- * * wWindowConstrainSize-- * Constrains size for the client window, taking the maximal size, * window resize increments and other size hints into account. * * Returns: * The closest size to what was given that the client window can * have. * *---------------------------------------------------------------------- */ void wWindowConstrainSize(WWindow *wwin, unsigned int *nwidth, unsigned int *nheight) { int width = (int)*nwidth; int height = (int)*nheight; int winc = 1; int hinc = 1; int minW = 1, minH = 1; int maxW = wwin->screen_ptr->scr_width * 2; int maxH = wwin->screen_ptr->scr_height * 2; int minAX = -1, minAY = -1; int maxAX = -1, maxAY = -1; int baseW = 0; int baseH = 0; if (wwin->normal_hints) { winc = wwin->normal_hints->width_inc; hinc = wwin->normal_hints->height_inc; minW = wwin->normal_hints->min_width; minH = wwin->normal_hints->min_height; maxW = wwin->normal_hints->max_width; maxH = wwin->normal_hints->max_height; if (wwin->normal_hints->flags & PAspect) { minAX = wwin->normal_hints->min_aspect.x; minAY = wwin->normal_hints->min_aspect.y; maxAX = wwin->normal_hints->max_aspect.x; maxAY = wwin->normal_hints->max_aspect.y; } baseW = wwin->normal_hints->base_width; baseH = wwin->normal_hints->base_height; } if (width < minW) width = minW; if (height < minH) height = minH; if (width > maxW) width = maxW; if (height > maxH) height = maxH; /* aspect ratio code borrowed from olwm */ if (minAX > 0) { /* adjust max aspect ratio */ if (!(maxAX == 1 && maxAY == 1) && width * maxAY > height * maxAX) { if (maxAX > maxAY) { height = (width * maxAY) / maxAX; if (height > maxH) { height = maxH; width = (height * maxAX) / maxAY; } } else { width = (height * maxAX) / maxAY; if (width > maxW) { width = maxW; height = (width * maxAY) / maxAX; } } } /* adjust min aspect ratio */ if (!(minAX == 1 && minAY == 1) && width * minAY < height * minAX) { if (minAX > minAY) { height = (width * minAY) / minAX; if (height < minH) { height = minH; width = (height * minAX) / minAY; } } else { width = (height * minAX) / minAY; if (width < minW) { width = minW; height = (width * minAY) / minAX; } } } } if (baseW != 0) width = (((width - baseW) / winc) * winc) + baseW; else width = (((width - minW) / winc) * winc) + minW; if (baseH != 0) height = (((height - baseH) / hinc) * hinc) + baseH; else height = (((height - minH) / hinc) * hinc) + minH; /* broken stupid apps may cause preposterous values for these.. */ if (width > 0) *nwidth = width; if (height > 0) *nheight = height; } void wWindowCropSize(WWindow *wwin, unsigned int maxW, unsigned int maxH, unsigned int *width, unsigned int *height) { int baseW = 0, baseH = 0; int winc = 1, hinc = 1; if (wwin->normal_hints) { baseW = wwin->normal_hints->base_width; baseH = wwin->normal_hints->base_height; winc = wwin->normal_hints->width_inc; hinc = wwin->normal_hints->height_inc; } if (*width > maxW) *width = maxW - (maxW - baseW) % winc; if (*height > maxH) *height = maxH - (maxH - baseH) % hinc; } void wWindowChangeWorkspace(WWindow *wwin, int workspace) { WScreen *scr = wwin->screen_ptr; WApplication *wapp; int unmap = 0; if (workspace >= scr->workspace_count || workspace < 0 || workspace == wwin->frame->workspace) return; if (workspace != scr->current_workspace) { /* Sent to other workspace. Unmap window */ 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; if (wwin->flags.miniaturized) { if (wwin->icon) { 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.miniaturized && !wPreferences.sticky_icons) { if (wwin->icon) { XMapWindow(dpy, wwin->icon->core->window); wwin->icon->mapped = 1; } } else if (!wwin->flags.mapped && !(wwin->flags.miniaturized || wwin->flags.hidden)) { wWindowMap(wwin); } } if (!IS_OMNIPRESENT(wwin)) { int oldWorkspace = wwin->frame->workspace; wwin->frame->workspace = workspace; WMPostNotificationName(WMNChangedWorkspace, wwin, (void *)(uintptr_t) oldWorkspace); } if (unmap) wWindowUnmap(wwin); } void wWindowChangeWorkspaceRelative(WWindow *wwin, int amount) { WScreen *scr = wwin->screen_ptr; int w = scr->current_workspace + amount; if (amount < 0) { if (w >= 0) { wWindowChangeWorkspace(wwin, w); } else if (wPreferences.ws_cycle) { wWindowChangeWorkspace(wwin, scr->workspace_count + w); } } else if (amount > 0) { if (w < scr->workspace_count) { wWindowChangeWorkspace(wwin, w); } else if (wPreferences.ws_advance) { int workspace = WMIN(w, MAX_WORKSPACES - 1); wWorkspaceMake(scr, workspace); wWindowChangeWorkspace(wwin, workspace); } else if (wPreferences.ws_cycle) { wWindowChangeWorkspace(wwin, w % scr->workspace_count); } } } void wWindowSynthConfigureNotify(WWindow *wwin) { XEvent sevent; sevent.type = ConfigureNotify; sevent.xconfigure.display = dpy; sevent.xconfigure.event = wwin->client_win; sevent.xconfigure.window = wwin->client_win; sevent.xconfigure.x = wwin->client.x; sevent.xconfigure.y = wwin->client.y; sevent.xconfigure.width = wwin->client.width; sevent.xconfigure.height = wwin->client.height; sevent.xconfigure.border_width = wwin->old_border_width; if (HAS_TITLEBAR(wwin) && wwin->frame->titlebar) sevent.xconfigure.above = wwin->frame->titlebar->window; else sevent.xconfigure.above = None; sevent.xconfigure.override_redirect = False; XSendEvent(dpy, wwin->client_win, False, StructureNotifyMask, &sevent); XFlush(dpy); } /* *---------------------------------------------------------------------- * wWindowConfigure() * * req_x, req_y: new requested positions for the frame * req_width, req_height: new requested sizes for the client * * Configures the frame, decorations and client window to the specified * geometry, whose validity is not checked -- wWindowConstrainSize() * must be used for that. * The size parameters are for the client window, but the position is * for the frame. * The client window receives a ConfigureNotify event, according * to what ICCCM says. * * Returns: * None * * Side effects: * Window size and position are changed and client window receives * a ConfigureNotify event. *---------------------------------------------------------------------- */ void wWindowConfigure(WWindow *wwin, int req_x, int req_y, int req_width, int req_height) { int synth_notify = False; int resize; /* if window size is guaranteed to fail - fix it to some reasonable * defaults */ if (req_height > SHRT_MAX) req_height = 480; if (req_width > SHRT_MAX) req_height = 640; resize = (req_width != wwin->client.width || req_height != wwin->client.height); /* * if the window is being moved but not resized then * send a synthetic ConfigureNotify */ if ((req_x != wwin->frame_x || req_y != wwin->frame_y) && !resize) synth_notify = True; if (WFLAGP(wwin, dont_move_off)) wScreenBringInside(wwin->screen_ptr, &req_x, &req_y, req_width, req_height); if (resize) { if (req_width < MIN_WINDOW_SIZE) req_width = MIN_WINDOW_SIZE; if (req_height < MIN_WINDOW_SIZE) req_height = MIN_WINDOW_SIZE; /* If growing, resize inner part before frame, * if shrinking, resize frame before. * This will prevent the frame (that can have a different color) * to be exposed, causing flicker */ if (req_height > wwin->frame->core->height || req_width > wwin->frame->core->width) XResizeWindow(dpy, wwin->client_win, req_width, req_height); if (wwin->flags.shaded) { wFrameWindowConfigure(wwin->frame, req_x, req_y, req_width, wwin->frame->core->height); wwin->old_geometry.height = req_height; } else { int h; h = req_height + wwin->frame->top_width + wwin->frame->bottom_width; wFrameWindowConfigure(wwin->frame, req_x, req_y, req_width, h); } if (!(req_height > wwin->frame->core->height || req_width > wwin->frame->core->width)) XResizeWindow(dpy, wwin->client_win, req_width, req_height); wwin->client.x = req_x; wwin->client.y = req_y + wwin->frame->top_width; wwin->client.width = req_width; wwin->client.height = req_height; } else { wwin->client.x = req_x; wwin->client.y = req_y + wwin->frame->top_width; XMoveWindow(dpy, wwin->frame->core->window, req_x, req_y); } wwin->frame_x = req_x; wwin->frame_y = req_y; if (HAS_BORDER(wwin)) { wwin->client.x += wwin->screen_ptr->frame_border_width; wwin->client.y += wwin->screen_ptr->frame_border_width; } #ifdef USE_XSHAPE if (w_global.xext.shape.supported && wwin->flags.shaped && resize) wWindowSetShape(wwin); #endif if (synth_notify) wWindowSynthConfigureNotify(wwin); wNETFrameExtents(wwin); XFlush(dpy); } /* req_x, req_y: new position of the frame */ void wWindowMove(WWindow *wwin, int req_x, int req_y) { #ifdef CONFIGURE_WINDOW_WHILE_MOVING int synth_notify = False; /* Send a synthetic ConfigureNotify event for every window movement. */ if ((req_x != wwin->frame_x || req_y != wwin->frame_y)) synth_notify = True; #else /* A single synthetic ConfigureNotify event is sent at the end of * a completed (opaque) movement in moveres.c */ #endif if (WFLAGP(wwin, dont_move_off)) wScreenBringInside(wwin->screen_ptr, &req_x, &req_y, wwin->frame->core->width, wwin->frame->core->height); wwin->client.x = req_x; wwin->client.y = req_y + wwin->frame->top_width; if (HAS_BORDER(wwin)) { wwin->client.x += wwin->screen_ptr->frame_border_width; wwin->client.y += wwin->screen_ptr->frame_border_width; } XMoveWindow(dpy, wwin->frame->core->window, req_x, req_y); wwin->frame_x = req_x; wwin->frame_y = req_y; #ifdef CONFIGURE_WINDOW_WHILE_MOVING if (synth_notify) wWindowSynthConfigureNotify(wwin); #endif } void wWindowUpdateButtonImages(WWindow *wwin) { WScreen *scr = wwin->screen_ptr; Pixmap pixmap, mask; WFrameWindow *fwin = wwin->frame; if (!HAS_TITLEBAR(wwin)) return; /* miniaturize button */ if (!WFLAGP(wwin, no_miniaturize_button)) { if (wwin->wm_gnustep_attr && wwin->wm_gnustep_attr->flags & GSMiniaturizePixmapAttr) { pixmap = wwin->wm_gnustep_attr->miniaturize_pixmap; if (wwin->wm_gnustep_attr->flags & GSMiniaturizeMaskAttr) mask = wwin->wm_gnustep_attr->miniaturize_mask; else mask = None; if (fwin->lbutton_image && (fwin->lbutton_image->image != pixmap || fwin->lbutton_image->mask != mask)) { wPixmapDestroy(fwin->lbutton_image); fwin->lbutton_image = NULL; } if (!fwin->lbutton_image) { fwin->lbutton_image = wPixmapCreate(pixmap, mask); fwin->lbutton_image->client_owned = 1; fwin->lbutton_image->client_owned_mask = 1; } } else { if (fwin->lbutton_image && !fwin->lbutton_image->shared) wPixmapDestroy(fwin->lbutton_image); fwin->lbutton_image = scr->b_pixmaps[WBUT_ICONIFY]; } } #ifdef XKB_BUTTON_HINT if (!WFLAGP(wwin, no_language_button)) { if (fwin->languagebutton_image && !fwin->languagebutton_image->shared) wPixmapDestroy(fwin->languagebutton_image); fwin->languagebutton_image = scr->b_pixmaps[WBUT_XKBGROUP1 + fwin->languagemode]; } #endif /* close button */ /* redefine WFLAGP to MGFLAGP to allow broken close operation */ #define MGFLAGP(wwin, FLAG) (wwin)->client_flags.FLAG if (!WFLAGP(wwin, no_close_button)) { if (wwin->wm_gnustep_attr && wwin->wm_gnustep_attr->flags & GSClosePixmapAttr) { pixmap = wwin->wm_gnustep_attr->close_pixmap; if (wwin->wm_gnustep_attr->flags & GSCloseMaskAttr) mask = wwin->wm_gnustep_attr->close_mask; else mask = None; if (fwin->rbutton_image && (fwin->rbutton_image->image != pixmap || fwin->rbutton_image->mask != mask)) { wPixmapDestroy(fwin->rbutton_image); fwin->rbutton_image = NULL; } if (!fwin->rbutton_image) { fwin->rbutton_image = wPixmapCreate(pixmap, mask); fwin->rbutton_image->client_owned = 1; fwin->rbutton_image->client_owned_mask = 1; } } else if (WFLAGP(wwin, kill_close)) { if (fwin->rbutton_image && !fwin->rbutton_image->shared) wPixmapDestroy(fwin->rbutton_image); fwin->rbutton_image = scr->b_pixmaps[WBUT_KILL]; } else if (MGFLAGP(wwin, broken_close)) { if (fwin->rbutton_image && !fwin->rbutton_image->shared) wPixmapDestroy(fwin->rbutton_image); fwin->rbutton_image = scr->b_pixmaps[WBUT_BROKENCLOSE]; } else { if (fwin->rbutton_image && !fwin->rbutton_image->shared) wPixmapDestroy(fwin->rbutton_image); fwin->rbutton_image = scr->b_pixmaps[WBUT_CLOSE]; } } /* force buttons to be redrawn */ fwin->flags.need_texture_change = 1; wFrameWindowPaint(fwin); } /* *--------------------------------------------------------------------------- * wWindowConfigureBorders-- * Update window border configuration according to attribute flags. * *--------------------------------------------------------------------------- */ void wWindowConfigureBorders(WWindow *wwin) { if (wwin->frame) { int flags; int newy, oldh; flags = WFF_LEFT_BUTTON | WFF_RIGHT_BUTTON; #ifdef XKB_BUTTON_HINT if (wPreferences.modelock) flags |= WFF_LANGUAGE_BUTTON; #endif if (HAS_TITLEBAR(wwin)) flags |= WFF_TITLEBAR; if (HAS_RESIZEBAR(wwin) && IS_RESIZABLE(wwin)) flags |= WFF_RESIZEBAR; if (HAS_BORDER(wwin)) flags |= WFF_BORDER; if (wwin->flags.shaded) flags |= WFF_IS_SHADED; if (wwin->flags.selected) flags |= WFF_SELECTED; 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) flags |= WFF_LEFT_BUTTON; #ifdef XKB_BUTTON_HINT if (!WFLAGP(wwin, no_language_button) && wwin->frame->flags.hide_language_button) flags |= WFF_LANGUAGE_BUTTON; #endif if (!WFLAGP(wwin, no_close_button) && wwin->frame->flags.hide_right_button) flags |= WFF_RIGHT_BUTTON; if (flags != 0) { wWindowUpdateButtonImages(wwin); wFrameWindowShowButton(wwin->frame, flags); } flags = 0; if (WFLAGP(wwin, no_miniaturize_button) && !wwin->frame->flags.hide_left_button) flags |= WFF_LEFT_BUTTON; #ifdef XKB_BUTTON_HINT if (WFLAGP(wwin, no_language_button) && !wwin->frame->flags.hide_language_button) flags |= WFF_LANGUAGE_BUTTON; #endif if (WFLAGP(wwin, no_close_button) && !wwin->frame->flags.hide_right_button) flags |= WFF_RIGHT_BUTTON; if (flags != 0) wFrameWindowHideButton(wwin->frame, flags); #ifdef USE_XSHAPE if (w_global.xext.shape.supported && wwin->flags.shaped) wWindowSetShape(wwin); #endif } } void wWindowSaveState(WWindow *wwin) { long data[10]; int i; memset(data, 0, sizeof(long) * 10); data[0] = wwin->frame->workspace; data[1] = wwin->flags.miniaturized; data[2] = wwin->flags.shaded; data[3] = wwin->flags.hidden; data[4] = wwin->flags.maximized; if (wwin->flags.maximized == 0) { data[5] = wwin->frame_x; data[6] = wwin->frame_y; data[7] = wwin->frame->core->width; data[8] = wwin->frame->core->height; } else { data[5] = wwin->old_geometry.x; data[6] = wwin->old_geometry.y; data[7] = wwin->old_geometry.width; data[8] = wwin->old_geometry.height; } for (i = 0; i < MAX_WINDOW_SHORTCUTS; i++) { if (wwin->screen_ptr->shortcutWindows[i] && WMCountInArray(wwin->screen_ptr->shortcutWindows[i], wwin)) data[9] |= 1 << i; } XChangeProperty(dpy, wwin->client_win, w_global.atom.wmaker.state, w_global.atom.wmaker.state, 32, PropModeReplace, (unsigned char *)data, 10); } static int getSavedState(Window window, WSavedState ** state) { Atom type_ret; int fmt_ret; unsigned long nitems_ret; unsigned long bytes_after_ret; long *data; if (XGetWindowProperty(dpy, window, w_global.atom.wmaker.state, 0, 10, True, w_global.atom.wmaker.state, &type_ret, &fmt_ret, &nitems_ret, &bytes_after_ret, (unsigned char **)&data) != Success || !data || nitems_ret < 10) return 0; if (type_ret != w_global.atom.wmaker.state) { XFree(data); return 0; } *state = wmalloc(sizeof(WSavedState)); (*state)->workspace = data[0]; (*state)->miniaturized = data[1]; (*state)->shaded = data[2]; (*state)->hidden = data[3]; (*state)->maximized = data[4]; (*state)->x = data[5]; (*state)->y = data[6]; (*state)->w = data[7]; (*state)->h = data[8]; (*state)->window_shortcuts = data[9]; XFree(data); return 1; } #ifdef USE_XSHAPE void wWindowClearShape(WWindow * wwin) { XShapeCombineMask(dpy, wwin->frame->core->window, ShapeBounding, 0, wwin->frame->top_width, None, ShapeSet); XFlush(dpy); } void wWindowSetShape(WWindow * wwin) { XRectangle rect[2]; int count; #ifdef OPTIMIZE_SHAPE XRectangle *rects; XRectangle *urec; int ordering; /* only shape is the client's */ if (!HAS_TITLEBAR(wwin) && !HAS_RESIZEBAR(wwin)) goto alt_code; /* Get array of rectangles describing the shape mask */ rects = XShapeGetRectangles(dpy, wwin->client_win, ShapeBounding, &count, &ordering); if (!rects) goto alt_code; urec = malloc(sizeof(XRectangle) * (count + 2)); if (!urec) { XFree(rects); goto alt_code; } /* insert our decoration rectangles in the rect list */ memcpy(urec, rects, sizeof(XRectangle) * count); XFree(rects); if (HAS_TITLEBAR(wwin)) { urec[count].x = -1; urec[count].y = -1 - wwin->frame->top_width; urec[count].width = wwin->frame->core->width + 2; urec[count].height = wwin->frame->top_width + 1; count++; } if (HAS_RESIZEBAR(wwin)) { urec[count].x = -1; urec[count].y = wwin->frame->core->height - wwin->frame->bottom_width - wwin->frame->top_width; urec[count].width = wwin->frame->core->width + 2; urec[count].height = wwin->frame->bottom_width + 1; count++; } /* shape our frame window */ XShapeCombineRectangles(dpy, wwin->frame->core->window, ShapeBounding, 0, wwin->frame->top_width, urec, count, ShapeSet, Unsorted); XFlush(dpy); wfree(urec); return; alt_code: #endif /* OPTIMIZE_SHAPE */ count = 0; if (HAS_TITLEBAR(wwin)) { rect[count].x = -1; rect[count].y = -1; rect[count].width = wwin->frame->core->width + 2; rect[count].height = wwin->frame->top_width + 1; count++; } if (HAS_RESIZEBAR(wwin)) { rect[count].x = -1; rect[count].y = wwin->frame->core->height - wwin->frame->bottom_width; rect[count].width = wwin->frame->core->width + 2; rect[count].height = wwin->frame->bottom_width + 1; count++; } if (count > 0) { XShapeCombineRectangles(dpy, wwin->frame->core->window, ShapeBounding, 0, 0, rect, count, ShapeSet, Unsorted); } XShapeCombineShape(dpy, wwin->frame->core->window, ShapeBounding, 0, wwin->frame->top_width, wwin->client_win, ShapeBounding, (count > 0 ? ShapeUnion : ShapeSet)); XFlush(dpy); } #endif /* USE_XSHAPE */ /* ====================================================================== */ static FocusMode getFocusMode(WWindow * wwin) { FocusMode mode; if ((wwin->wm_hints) && (wwin->wm_hints->flags & InputHint)) { if (wwin->wm_hints->input == True) { if (wwin->protocols.TAKE_FOCUS) mode = WFM_LOCALLY_ACTIVE; else mode = WFM_PASSIVE; } else { if (wwin->protocols.TAKE_FOCUS) mode = WFM_GLOBALLY_ACTIVE; else mode = WFM_NO_INPUT; } } else { mode = WFM_PASSIVE; } return mode; } void wWindowSetKeyGrabs(WWindow * wwin) { int i; WShortKey *key; for (i = 0; i < WKBD_LAST; i++) { key = &wKeyBindings[i]; if (key->keycode == 0) continue; if (key->modifier != AnyModifier) { XGrabKey(dpy, key->keycode, key->modifier | LockMask, wwin->frame->core->window, True, GrabModeAsync, GrabModeAsync); #ifdef NUMLOCK_HACK /* Also grab all modifier combinations possible that include, * LockMask, ScrollLockMask and NumLockMask, so that keygrabs * work even if the NumLock/ScrollLock key is on. */ wHackedGrabKey(key->keycode, key->modifier, wwin->frame->core->window, True, GrabModeAsync, GrabModeAsync); #endif } XGrabKey(dpy, key->keycode, key->modifier, wwin->frame->core->window, True, GrabModeAsync, GrabModeAsync); } wRootMenuBindShortcuts(wwin->frame->core->window); } void wWindowResetMouseGrabs(WWindow * wwin) { /* Mouse grabs can't be done on the client window because of * ICCCM and because clients that try to do the same will crash. * * But there is a problem which makes tbar buttons of unfocused * windows not usable as the click goes to the frame window instead * of the button itself. Must figure a way to fix that. */ XUngrabButton(dpy, AnyButton, AnyModifier, wwin->client_win); if (!WFLAGP(wwin, no_bind_mouse)) { /* grabs for Meta+drag */ wHackedGrabButton(AnyButton, MOD_MASK, wwin->client_win, True, ButtonPressMask | ButtonReleaseMask, GrabModeSync, GrabModeAsync, None, None); /* for CTRL+Wheel to Scroll Horiz, we have to grab CTRL as well * but we only grab it for Button4 and Button 5 since a lot of apps * use CTRL+Button1-3 for app related functionality */ if (wPreferences.resize_increment > 0) { wHackedGrabButton(Button4, ControlMask, wwin->client_win, True, ButtonPressMask | ButtonReleaseMask, GrabModeSync, GrabModeAsync, None, None); wHackedGrabButton(Button5, ControlMask, wwin->client_win, True, ButtonPressMask | ButtonReleaseMask, GrabModeSync, GrabModeAsync, None, None); wHackedGrabButton(Button4, MOD_MASK | ControlMask, wwin->client_win, True, ButtonPressMask | ButtonReleaseMask, GrabModeSync, GrabModeAsync, None, None); wHackedGrabButton(Button5, MOD_MASK | ControlMask, wwin->client_win, True, ButtonPressMask | ButtonReleaseMask, GrabModeSync, GrabModeAsync, None, None); } } if (!wwin->flags.focused && !WFLAGP(wwin, no_focusable) && !wwin->flags.is_gnustep) { /* the passive grabs to focus the window */ /* if (wPreferences.focus_mode == WKF_CLICK) */ XGrabButton(dpy, AnyButton, AnyModifier, wwin->client_win, True, ButtonPressMask | ButtonReleaseMask, GrabModeSync, GrabModeAsync, None, None); } XFlush(dpy); } void wWindowUpdateGNUstepAttr(WWindow * wwin, GNUstepWMAttributes * attr) { if (attr->flags & GSExtraFlagsAttr) { if (MGFLAGP(wwin, broken_close) != (attr->extra_flags & GSDocumentEditedFlag)) { wwin->client_flags.broken_close = !MGFLAGP(wwin, broken_close); wWindowUpdateButtonImages(wwin); } } } WMagicNumber wWindowAddSavedState(const char *instance, const char *class, const char *command, pid_t pid, WSavedState * state) { WWindowState *wstate; wstate = malloc(sizeof(WWindowState)); if (!wstate) return NULL; memset(wstate, 0, sizeof(WWindowState)); wstate->pid = pid; if (instance) wstate->instance = wstrdup(instance); if (class) wstate->class = wstrdup(class); if (command) wstate->command = wstrdup(command); wstate->state = state; wstate->next = windowState; windowState = wstate; return wstate; } static inline int is_same(const char *x, const char *y) { if ((x == NULL) && (y == NULL)) return 1; if ((x == NULL) || (y == NULL)) return 0; if (strcmp(x, y) == 0) return 1; else return 0; } WMagicNumber wWindowGetSavedState(Window win) { char *instance, *class, *command = NULL; WWindowState *wstate = windowState; if (!wstate) return NULL; command = GetCommandForWindow(win); if (!command) return NULL; if (PropGetWMClass(win, &class, &instance)) { while (wstate) { if (is_same(instance, wstate->instance) && is_same(class, wstate->class) && is_same(command, wstate->command)) { break; } wstate = wstate->next; } } else { wstate = NULL; } if (command) wfree(command); if (instance) free(instance); if (class) free(class); return wstate; } void wWindowDeleteSavedState(WMagicNumber id) { WWindowState *tmp, *wstate = (WWindowState *) id; if (!wstate || !windowState) return; tmp = windowState; if (tmp == wstate) { windowState = wstate->next; release_wwindowstate(wstate); } else { while (tmp->next) { if (tmp->next == wstate) { tmp->next = wstate->next; release_wwindowstate(wstate); break; } tmp = tmp->next; } } } void wWindowDeleteSavedStatesForPID(pid_t pid) { WWindowState *tmp, *wstate; if (!windowState) return; tmp = windowState; if (tmp->pid == pid) { wstate = windowState; windowState = tmp->next; release_wwindowstate(wstate); } else { while (tmp->next) { if (tmp->next->pid == pid) { wstate = tmp->next; tmp->next = wstate->next; release_wwindowstate(wstate); break; } tmp = tmp->next; } } } static void release_wwindowstate(WWindowState *wstate) { if (wstate->instance) wfree(wstate->instance); if (wstate->class) wfree(wstate->class); if (wstate->command) wfree(wstate->command); wfree(wstate->state); wfree(wstate); } void wWindowSetOmnipresent(WWindow *wwin, Bool flag) { if (wwin->flags.omnipresent == flag) return; wwin->flags.omnipresent = flag; WMPostNotificationName(WMNChangedState, wwin, "omnipresent"); } static void resizebarMouseDown(WCoreWindow *sender, void *data, XEvent *event) { WWindow *wwin = data; /* Parameter not used, but tell the compiler that it is ok */ (void) sender; #ifndef NUMLOCK_HACK if ((event->xbutton.state & ValidModMask) != (event->xbutton.state & ~LockMask)) { wwarning(_("The NumLock, ScrollLock or similar key seems to be turned on. " "Turn it off or some mouse actions and keyboard shortcuts will not work.")); } #endif event->xbutton.state &= w_global.shortcut.modifiers_mask; CloseWindowMenu(wwin->screen_ptr); if (wPreferences.focus_mode == WKF_CLICK && !(event->xbutton.state & ControlMask) && !WFLAGP(wwin, no_focusable)) { wSetFocusTo(wwin->screen_ptr, wwin); } if (event->xbutton.button == Button1) wRaiseFrame(wwin->frame->core); if (event->xbutton.window != wwin->frame->resizebar->window) { if (XGrabPointer(dpy, wwin->frame->resizebar->window, True, ButtonMotionMask | ButtonReleaseMask | ButtonPressMask, GrabModeAsync, GrabModeAsync, None, None, CurrentTime) != GrabSuccess) { return; } } if (event->xbutton.state & MOD_MASK) { /* move the window */ wMouseMoveWindow(wwin, event); XUngrabPointer(dpy, CurrentTime); } else { wMouseResizeWindow(wwin, event); XUngrabPointer(dpy, CurrentTime); } } static void titlebarDblClick(WCoreWindow *sender, void *data, XEvent *event) { WWindow *wwin = data; /* Parameter not used, but tell the compiler that it is ok */ (void) sender; event->xbutton.state &= w_global.shortcut.modifiers_mask; if (event->xbutton.button == Button1) { if (event->xbutton.state == 0) { if (!WFLAGP(wwin, no_shadeable)) { /* shade window */ if (wwin->flags.shaded) wUnshadeWindow(wwin); else wShadeWindow(wwin); } } else { int dir = 0; if (event->xbutton.state & ControlMask) dir |= MAX_VERTICAL; if (event->xbutton.state & ShiftMask) { dir |= MAX_HORIZONTAL; if (!(event->xbutton.state & ControlMask)) wSelectWindow(wwin, !wwin->flags.selected); } /* maximize window */ if (dir != 0 && IS_RESIZABLE(wwin)) { int ndir = dir ^ wwin->flags.maximized; if (ndir != 0) wMaximizeWindow(wwin, ndir, wGetHeadForWindow(wwin)); else wUnmaximizeWindow(wwin); } } } else if (event->xbutton.button == Button3) { if (event->xbutton.state & MOD_MASK) wHideOtherApplications(wwin); } else if (event->xbutton.button == Button2) { wSelectWindow(wwin, !wwin->flags.selected); } else if (event->xbutton.button == W_getconf_mouseWheelUp()) { wShadeWindow(wwin); } else if (event->xbutton.button == W_getconf_mouseWheelDown()) { wUnshadeWindow(wwin); } } static void frameMouseDown(WObjDescriptor *desc, XEvent *event) { WWindow *wwin = desc->parent; unsigned int new_width, w_scale; unsigned int new_height, h_scale; unsigned int resize_width_increment = 0; unsigned int resize_height_increment = 0; if (wwin->normal_hints) { w_scale = (wPreferences.resize_increment + wwin->normal_hints->width_inc - 1) / wwin->normal_hints->width_inc; h_scale = (wPreferences.resize_increment + wwin->normal_hints->height_inc - 1) / wwin->normal_hints->height_inc; resize_width_increment = wwin->normal_hints->width_inc * w_scale; resize_height_increment = wwin->normal_hints->height_inc * h_scale; } if (resize_width_increment <= 1 && resize_height_increment <= 1) { resize_width_increment = wPreferences.resize_increment; resize_height_increment = wPreferences.resize_increment; } event->xbutton.state &= w_global.shortcut.modifiers_mask; CloseWindowMenu(wwin->screen_ptr); if (!(event->xbutton.state & ControlMask) && !WFLAGP(wwin, no_focusable)) wSetFocusTo(wwin->screen_ptr, wwin); if (event->xbutton.button == Button1) wRaiseFrame(wwin->frame->core); if (event->xbutton.state & ControlMask) { if (event->xbutton.button == Button4) { new_width = wwin->client.width - resize_width_increment; wWindowConstrainSize(wwin, &new_width, &wwin->client.height); wWindowConfigure(wwin, wwin->frame_x, wwin->frame_y, new_width, wwin->client.height); } if (event->xbutton.button == Button5) { new_width = wwin->client.width + resize_width_increment; wWindowConstrainSize(wwin, &new_width, &wwin->client.height); wWindowConfigure(wwin, wwin->frame_x, wwin->frame_y, new_width, wwin->client.height); } } if (event->xbutton.state & MOD_MASK) { /* move the window */ if (XGrabPointer(dpy, wwin->client_win, False, ButtonMotionMask | ButtonReleaseMask | ButtonPressMask, GrabModeAsync, GrabModeAsync, None, None, CurrentTime) != GrabSuccess) { return; } if (event->xbutton.button == Button3) { wMouseResizeWindow(wwin, event); } else if (event->xbutton.button == Button4) { new_height = wwin->client.height - resize_height_increment; wWindowConstrainSize(wwin, &wwin->client.width, &new_height); wWindowConfigure(wwin, wwin->frame_x, wwin->frame_y, wwin->client.width, new_height); } else if (event->xbutton.button == Button5) { new_height = wwin->client.height + resize_height_increment; wWindowConstrainSize(wwin, &wwin->client.width, &new_height); wWindowConfigure(wwin, wwin->frame_x, wwin->frame_y, wwin->client.width, new_height); } else if (event->xbutton.button == Button1 || event->xbutton.button == Button2) { wMouseMoveWindow(wwin, event); } XUngrabPointer(dpy, CurrentTime); } } static void titlebarMouseDown(WCoreWindow *sender, void *data, XEvent *event) { WWindow *wwin = (WWindow *) data; /* Parameter not used, but tell the compiler that it is ok */ (void) sender; #ifndef NUMLOCK_HACK if ((event->xbutton.state & ValidModMask) != (event->xbutton.state & ~LockMask)) wwarning(_("The NumLock, ScrollLock or similar key seems to be turned on. " "Turn it off or some mouse actions and keyboard shortcuts will not work.")); #endif event->xbutton.state &= w_global.shortcut.modifiers_mask; CloseWindowMenu(wwin->screen_ptr); if (wPreferences.focus_mode == WKF_CLICK && !(event->xbutton.state & ControlMask) && !WFLAGP(wwin, no_focusable)) wSetFocusTo(wwin->screen_ptr, wwin); if (event->xbutton.button == Button1 || event->xbutton.button == Button2) { if (event->xbutton.button == Button1) { if (event->xbutton.state & MOD_MASK) wLowerFrame(wwin->frame->core); else wRaiseFrame(wwin->frame->core); } if ((event->xbutton.state & ShiftMask) && !(event->xbutton.state & ControlMask)) { wSelectWindow(wwin, !wwin->flags.selected); return; } if (event->xbutton.window != wwin->frame->titlebar->window && XGrabPointer(dpy, wwin->frame->titlebar->window, False, ButtonMotionMask | ButtonReleaseMask | ButtonPressMask, GrabModeAsync, GrabModeAsync, None, None, CurrentTime) != GrabSuccess) { return; } /* move the window */ wMouseMoveWindow(wwin, event); XUngrabPointer(dpy, CurrentTime); } else if (event->xbutton.button == Button3 && event->xbutton.state == 0 && !wwin->flags.internal_window && !WCHECK_STATE(WSTATE_MODAL)) { WObjDescriptor *desc; if (event->xbutton.window != wwin->frame->titlebar->window && XGrabPointer(dpy, wwin->frame->titlebar->window, False, ButtonMotionMask | ButtonReleaseMask | ButtonPressMask, GrabModeAsync, GrabModeAsync, None, None, CurrentTime) != GrabSuccess) { return; } OpenWindowMenu(wwin, event->xbutton.x_root, wwin->frame_y + wwin->frame->top_width, False); /* allow drag select */ desc = &wwin->screen_ptr->window_menu->menu->descriptor; event->xany.send_event = True; (*desc->handle_mousedown) (desc, event); XUngrabPointer(dpy, CurrentTime); } } static void windowCloseClick(WCoreWindow *sender, void *data, XEvent *event) { WWindow *wwin = data; /* Parameter not used, but tell the compiler that it is ok */ (void) sender; event->xbutton.state &= w_global.shortcut.modifiers_mask; CloseWindowMenu(wwin->screen_ptr); if (event->xbutton.button < Button1 || event->xbutton.button > Button3) return; /* if control-click, kill the client */ if (event->xbutton.state & ControlMask) { wClientKill(wwin); } else { if (wwin->protocols.DELETE_WINDOW && event->xbutton.state == 0) { /* send delete message */ wClientSendProtocol(wwin, w_global.atom.wm.delete_window, w_global.timestamp.last_event); } } } static void windowCloseDblClick(WCoreWindow *sender, void *data, XEvent *event) { WWindow *wwin = data; /* Parameter not used, but tell the compiler that it is ok */ (void) sender; CloseWindowMenu(wwin->screen_ptr); if (event->xbutton.button < Button1 || event->xbutton.button > Button3) return; /* send delete message */ if (wwin->protocols.DELETE_WINDOW) wClientSendProtocol(wwin, w_global.atom.wm.delete_window, w_global.timestamp.last_event); else wClientKill(wwin); } #ifdef XKB_BUTTON_HINT static void windowLanguageClick(WCoreWindow *sender, void *data, XEvent *event) { WWindow *wwin = data; WFrameWindow *fwin = wwin->frame; WScreen *scr = fwin->screen_ptr; int tl; /* Parameter not used, but tell the compiler that it is ok */ (void) sender; if (event->xbutton.button != Button1 && event->xbutton.button != Button3) return; tl = wwin->frame->languagemode; wwin->frame->languagemode = wwin->frame->last_languagemode; wwin->frame->last_languagemode = tl; wSetFocusTo(scr, wwin); wwin->frame->languagebutton_image = wwin->frame->screen_ptr->b_pixmaps[WBUT_XKBGROUP1 + wwin->frame->languagemode]; wFrameWindowUpdateLanguageButton(wwin->frame); if (event->xbutton.button == Button3) return; wRaiseFrame(fwin->core); } #endif static void windowIconifyClick(WCoreWindow *sender, void *data, XEvent *event) { WWindow *wwin = data; /* Parameter not used, but tell the compiler that it is ok */ (void) sender; event->xbutton.state &= w_global.shortcut.modifiers_mask; CloseWindowMenu(wwin->screen_ptr); if (event->xbutton.button < Button1 || event->xbutton.button > Button3) return; if (wwin->protocols.MINIATURIZE_WINDOW && event->xbutton.state == 0) { wClientSendProtocol(wwin, w_global.atom.gnustep.wm_miniaturize_window, w_global.timestamp.last_event); } else { WApplication *wapp; if ((event->xbutton.state & ControlMask) || (event->xbutton.button == Button3)) { wapp = wApplicationOf(wwin->main_window); if (wapp && !WFLAGP(wwin, no_appicon)) wHideApplication(wapp); } else if (event->xbutton.state == 0) { wIconifyWindow(wwin); } } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/menu.c�����������������������������������������������������������������������0000644�0001750�0001750�00000174550�13642357774�012723� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* menu.c- generic menu, used for root menu, application menus etc. * * Window Maker window manager * * Copyright (c) 1997-2003 Alfredo K. Kojima * Copyright (c) 1998-2003 Dan Pascu * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "wconfig.h" #include <X11/Xlib.h> #include <X11/Xutil.h> #include <X11/keysym.h> #include <stdlib.h> #include <string.h> #include <stdio.h> #include <stdint.h> #include <unistd.h> #include <ctype.h> #include "WindowMaker.h" #include "wcore.h" #include "framewin.h" #include "menu.h" #include "actions.h" #include "winmenu.h" #include "stacking.h" #include "xinerama.h" #include "workspace.h" #include "dialog.h" #include "rootmenu.h" #include "switchmenu.h" #define MOD_MASK wPreferences.modifier_mask #define MENU_SCROLL_STEP menuScrollParameters[(int)wPreferences.menu_scroll_speed].steps #define MENU_SCROLL_DELAY menuScrollParameters[(int)wPreferences.menu_scroll_speed].delay #define MENUW(m) ((m)->frame->core->width+2*(m)->frame->screen_ptr->frame_border_width) #define MENUH(m) ((m)->frame->core->height+2*(m)->frame->screen_ptr->frame_border_width) /***** Local Stuff ******/ static struct { int steps; int delay; } menuScrollParameters[5] = { { MENU_SCROLL_STEPS_UF, MENU_SCROLL_DELAY_UF}, { MENU_SCROLL_STEPS_F, MENU_SCROLL_DELAY_F}, { MENU_SCROLL_STEPS_M, MENU_SCROLL_DELAY_M}, { MENU_SCROLL_STEPS_S, MENU_SCROLL_DELAY_S}, { MENU_SCROLL_STEPS_US, MENU_SCROLL_DELAY_US}}; static void menuMouseDown(WObjDescriptor * desc, XEvent * event); static void menuExpose(WObjDescriptor * desc, XEvent * event); static void menuTitleDoubleClick(WCoreWindow * sender, void *data, XEvent * event); static void menuTitleMouseDown(WCoreWindow * sender, void *data, XEvent * event); static void menuCloseClick(WCoreWindow * sender, void *data, XEvent * event); static void updateTexture(WMenu * menu); static int saveMenuRecurs(WMPropList * menus, WScreen * scr, WMenu * menu); static int restoreMenuRecurs(WScreen *scr, WMPropList *menus, WMenu *menu, const char *path); static void selectEntry(WMenu * menu, int entry_no); static void closeCascade(WMenu * menu); /****** Notification Observers ******/ static void appearanceObserver(void *self, WMNotification * notif) { WMenu *menu = (WMenu *) self; uintptr_t flags = (uintptr_t)WMGetNotificationClientData(notif); if (!menu->flags.realized) return; if (WMGetNotificationName(notif) == WNMenuAppearanceSettingsChanged) { if (flags & WFontSettings) { menu->flags.realized = 0; wMenuRealize(menu); } if (flags & WTextureSettings) { if (!menu->flags.brother) updateTexture(menu); } if (flags & (WTextureSettings | WColorSettings)) { wMenuPaint(menu); } } else if (menu->flags.titled) { if (flags & WFontSettings) { menu->flags.realized = 0; wMenuRealize(menu); } if (flags & WTextureSettings) { menu->frame->flags.need_texture_remake = 1; } if (flags & (WColorSettings | WTextureSettings)) { wFrameWindowPaint(menu->frame); } } } /************************************/ /* *---------------------------------------------------------------------- * wMenuCreate-- * Creates a new empty menu with the specified title. If main_menu * is True, the created menu will be a main menu, which has some special * properties such as being placed over other normal menus. * If title is NULL, the menu will have no titlebar. * * Returns: * The created menu. *---------------------------------------------------------------------- */ WMenu *wMenuCreate(WScreen *screen, const char *title, int main_menu) { WMenu *menu; static int brother = 0; int tmp, flags; menu = wmalloc(sizeof(WMenu)); #ifdef SINGLE_MENULEVEL tmp = WMSubmenuLevel; #else tmp = (main_menu ? WMMainMenuLevel : WMSubmenuLevel); #endif flags = WFF_SINGLE_STATE | WFF_BORDER; if (title) { flags |= WFF_TITLEBAR | WFF_RIGHT_BUTTON; menu->flags.titled = 1; } menu->frame = wFrameWindowCreate(screen, tmp, 8, 2, 1, 1, &wPreferences.menu_title_clearance, &wPreferences.menu_title_min_height, &wPreferences.menu_title_max_height, flags, screen->menu_title_texture, NULL, screen->menu_title_color, &screen->menu_title_font, screen->w_depth, screen->w_visual, screen->w_colormap); menu->frame->core->descriptor.parent = menu; menu->frame->core->descriptor.parent_type = WCLASS_MENU; menu->frame->core->descriptor.handle_mousedown = menuMouseDown; wFrameWindowHideButton(menu->frame, WFF_RIGHT_BUTTON); if (title) { menu->frame->title = wstrdup(title); } menu->frame->flags.justification = WTJ_LEFT; menu->frame->rbutton_image = screen->b_pixmaps[WBUT_CLOSE]; menu->entry_no = 0; menu->alloced_entries = 0; menu->selected_entry = -1; menu->entries = NULL; menu->frame_x = screen->app_menu_x; menu->frame_y = screen->app_menu_y; menu->frame->child = menu; menu->flags.lowered = 0; menu->flags.shaded = 0; /* create borders */ if (title) { /* setup object descriptors */ menu->frame->on_mousedown_titlebar = menuTitleMouseDown; menu->frame->on_dblclick_titlebar = menuTitleDoubleClick; } menu->frame->on_click_right = menuCloseClick; menu->menu = wCoreCreate(menu->frame->core, 0, menu->frame->top_width, menu->frame->core->width, 10); menu->menu->descriptor.parent = menu; menu->menu->descriptor.parent_type = WCLASS_MENU; menu->menu->descriptor.handle_expose = menuExpose; menu->menu->descriptor.handle_mousedown = menuMouseDown; menu->menu_texture_data = None; XMapWindow(dpy, menu->menu->window); XFlush(dpy); if (!brother) { brother = 1; menu->brother = wMenuCreate(screen, title, main_menu); brother = 0; menu->brother->flags.brother = 1; menu->brother->brother = menu; } WMAddNotificationObserver(appearanceObserver, menu, WNMenuAppearanceSettingsChanged, menu); WMAddNotificationObserver(appearanceObserver, menu, WNMenuTitleAppearanceSettingsChanged, menu); return menu; } WMenu *wMenuCreateForApp(WScreen *screen, const char *title, int main_menu) { WMenu *menu; menu = wMenuCreate(screen, title, main_menu); if (!menu) return NULL; menu->flags.app_menu = 1; menu->brother->flags.app_menu = 1; return menu; } static void insertEntry(WMenu * menu, WMenuEntry * entry, int index) { int i; for (i = menu->entry_no - 1; i >= index; i--) { menu->entries[i]->order++; menu->entries[i + 1] = menu->entries[i]; } menu->entries[index] = entry; } WMenuEntry *wMenuInsertCallback(WMenu *menu, int index, const char *text, void (*callback) (WMenu * menu, WMenuEntry * entry), void *clientdata) { WMenuEntry *entry; menu->flags.realized = 0; menu->brother->flags.realized = 0; /* reallocate array if it's too small */ if (menu->entry_no >= menu->alloced_entries) { void *tmp; tmp = wrealloc(menu->entries, sizeof(WMenuEntry) * (menu->alloced_entries + 5)); menu->entries = tmp; menu->alloced_entries += 5; menu->brother->entries = tmp; menu->brother->alloced_entries = menu->alloced_entries; } entry = wmalloc(sizeof(WMenuEntry)); entry->flags.enabled = 1; entry->text = wstrdup(text); entry->cascade = -1; entry->clientdata = clientdata; entry->callback = callback; if (index < 0 || index >= menu->entry_no) { entry->order = menu->entry_no; menu->entries[menu->entry_no] = entry; } else { entry->order = index; insertEntry(menu, entry, index); } menu->entry_no++; menu->brother->entry_no = menu->entry_no; return entry; } void wMenuEntrySetCascade(WMenu * menu, WMenuEntry * entry, WMenu * cascade) { WMenu *brother = menu->brother; int i, done; assert(menu->flags.brother == 0); if (entry->cascade >= 0) { menu->flags.realized = 0; brother->flags.realized = 0; } cascade->parent = menu; cascade->brother->parent = brother; done = 0; for (i = 0; i < menu->cascade_no; i++) { if (menu->cascades[i] == NULL) { menu->cascades[i] = cascade; brother->cascades[i] = cascade->brother; done = 1; entry->cascade = i; break; } } if (!done) { entry->cascade = menu->cascade_no; menu->cascades = wrealloc(menu->cascades, sizeof(menu->cascades[0]) * (menu->cascade_no + 1)); menu->cascades[menu->cascade_no++] = cascade; brother->cascades = wrealloc(brother->cascades, sizeof(brother->cascades[0]) * (brother->cascade_no + 1)); brother->cascades[brother->cascade_no++] = cascade->brother; } if (menu->flags.lowered) { cascade->flags.lowered = 1; ChangeStackingLevel(cascade->frame->core, WMNormalLevel); cascade->brother->flags.lowered = 1; ChangeStackingLevel(cascade->brother->frame->core, WMNormalLevel); } if (!menu->flags.realized) wMenuRealize(menu); } void wMenuEntryRemoveCascade(WMenu * menu, WMenuEntry * entry) { assert(menu->flags.brother == 0); /* destroy cascade menu */ if (entry->cascade >= 0 && menu->cascades && menu->cascades[entry->cascade] != NULL) { wMenuDestroy(menu->cascades[entry->cascade], True); menu->cascades[entry->cascade] = NULL; menu->brother->cascades[entry->cascade] = NULL; entry->cascade = -1; } } void wMenuRemoveItem(WMenu * menu, int index) { int i; if (menu->flags.brother) { wMenuRemoveItem(menu->brother, index); return; } if (index >= menu->entry_no) return; /* destroy cascade menu */ wMenuEntryRemoveCascade(menu, menu->entries[index]); /* destroy unshared data */ if (menu->entries[index]->text) wfree(menu->entries[index]->text); if (menu->entries[index]->rtext) wfree(menu->entries[index]->rtext); if (menu->entries[index]->free_cdata && menu->entries[index]->clientdata) (*menu->entries[index]->free_cdata) (menu->entries[index]->clientdata); wfree(menu->entries[index]); for (i = index; i < menu->entry_no - 1; i++) { menu->entries[i + 1]->order--; menu->entries[i] = menu->entries[i + 1]; } menu->entry_no--; menu->brother->entry_no--; } static Pixmap renderTexture(WMenu * menu) { RImage *img; Pixmap pix; int i; RColor light; RColor dark; RColor mid; WScreen *scr = menu->menu->screen_ptr; WTexture *texture = scr->menu_item_texture; if (wPreferences.menu_style == MS_NORMAL) { img = wTextureRenderImage(texture, menu->menu->width, menu->entry_height, WREL_MENUENTRY); } else { img = wTextureRenderImage(texture, menu->menu->width, menu->menu->height + 1, WREL_MENUENTRY); } if (!img) { wwarning(_("could not render texture: %s"), RMessageForError(RErrorCode)); return None; } if (wPreferences.menu_style == MS_SINGLE_TEXTURE) { light.alpha = 0; light.red = light.green = light.blue = 80; dark.alpha = 255; dark.red = dark.green = dark.blue = 0; mid.alpha = 0; mid.red = mid.green = mid.blue = 40; for (i = 1; i < menu->entry_no; i++) { ROperateLine(img, RSubtractOperation, 0, i * menu->entry_height - 2, menu->menu->width - 1, i * menu->entry_height - 2, &mid); RDrawLine(img, 0, i * menu->entry_height - 1, menu->menu->width - 1, i * menu->entry_height - 1, &dark); ROperateLine(img, RAddOperation, 0, i * menu->entry_height, menu->menu->width - 1, i * menu->entry_height, &light); } } if (!RConvertImage(scr->rcontext, img, &pix)) { wwarning(_("error rendering image:%s"), RMessageForError(RErrorCode)); } RReleaseImage(img); return pix; } static void updateTexture(WMenu * menu) { WScreen *scr = menu->menu->screen_ptr; /* setup background texture */ if (scr->menu_item_texture->any.type != WTEX_SOLID) { if (!menu->flags.brother) { FREE_PIXMAP(menu->menu_texture_data); menu->menu_texture_data = renderTexture(menu); XSetWindowBackgroundPixmap(dpy, menu->menu->window, menu->menu_texture_data); XClearWindow(dpy, menu->menu->window); XSetWindowBackgroundPixmap(dpy, menu->brother->menu->window, menu->menu_texture_data); XClearWindow(dpy, menu->brother->menu->window); } } else { XSetWindowBackground(dpy, menu->menu->window, scr->menu_item_texture->any.color.pixel); XClearWindow(dpy, menu->menu->window); } } void wMenuRealize(WMenu * menu) { int i; int width, rwidth, mrwidth, mwidth; int theight, twidth, eheight; WScreen *scr = menu->frame->screen_ptr; static int brother_done = 0; int flags; if (!brother_done) { brother_done = 1; wMenuRealize(menu->brother); brother_done = 0; } flags = WFF_SINGLE_STATE | WFF_BORDER; if (menu->flags.titled) flags |= WFF_TITLEBAR | WFF_RIGHT_BUTTON; wFrameWindowUpdateBorders(menu->frame, flags); if (menu->flags.titled) { twidth = WMWidthOfString(scr->menu_title_font, menu->frame->title, strlen(menu->frame->title)); theight = menu->frame->top_width; twidth += theight + (wPreferences.new_style == TS_NEW ? 16 : 8); } else { twidth = 0; theight = 0; } eheight = WMFontHeight(scr->menu_entry_font) + 6 + wPreferences.menu_text_clearance * 2; menu->entry_height = eheight; mrwidth = 0; mwidth = 0; for (i = 0; i < menu->entry_no; i++) { char *text; /* search widest text */ text = menu->entries[i]->text; width = WMWidthOfString(scr->menu_entry_font, text, strlen(text)) + 10; if (menu->entries[i]->flags.indicator) { width += MENU_INDICATOR_SPACE; } if (width > mwidth) mwidth = width; /* search widest text on right */ text = menu->entries[i]->rtext; if (text) rwidth = WMWidthOfString(scr->menu_entry_font, text, strlen(text)) + 10; else if (menu->entries[i]->cascade >= 0) rwidth = 16; else rwidth = 4; if (rwidth > mrwidth) mrwidth = rwidth; } mwidth += mrwidth; if (mwidth < twidth) mwidth = twidth; wCoreConfigure(menu->menu, 0, theight, mwidth, menu->entry_no * eheight - 1); wFrameWindowResize(menu->frame, mwidth, menu->entry_no * eheight - 1 + menu->frame->top_width + menu->frame->bottom_width); updateTexture(menu); menu->flags.realized = 1; if (menu->flags.mapped) wMenuPaint(menu); if (menu->brother->flags.mapped) wMenuPaint(menu->brother); } void wMenuDestroy(WMenu * menu, int recurse) { int i; WMRemoveNotificationObserver(menu); /* remove any pending timers */ if (menu->timer) WMDeleteTimerHandler(menu->timer); menu->timer = NULL; /* call destroy handler */ if (menu->on_destroy) (*menu->on_destroy) (menu); /* Destroy items if this menu own them. If this is the "brother" menu, * leave them alone as it is shared by them. */ if (!menu->flags.brother) { for (i = 0; i < menu->entry_no; i++) { wfree(menu->entries[i]->text); if (menu->entries[i]->rtext) wfree(menu->entries[i]->rtext); #ifdef USER_MENU if (menu->entries[i]->instances) { WMReleasePropList(menu->entries[i]->instances); } #endif /* USER_MENU */ if (menu->entries[i]->free_cdata && menu->entries[i]->clientdata) { (*menu->entries[i]->free_cdata) (menu->entries[i]->clientdata); } wfree(menu->entries[i]); } if (recurse) { for (i = 0; i < menu->cascade_no; i++) { if (menu->cascades[i]) { if (menu->cascades[i]->flags.brother) wMenuDestroy(menu->cascades[i]->brother, recurse); else wMenuDestroy(menu->cascades[i], recurse); } } } if (menu->entries) wfree(menu->entries); } FREE_PIXMAP(menu->menu_texture_data); if (menu->cascades) wfree(menu->cascades); wCoreDestroy(menu->menu); wFrameWindowDestroy(menu->frame); /* destroy copy of this menu */ if (!menu->flags.brother && menu->brother) wMenuDestroy(menu->brother, False); wfree(menu); } #define F_NORMAL 0 #define F_TOP 1 #define F_BOTTOM 2 #define F_NONE 3 static void drawFrame(WScreen * scr, Drawable win, int y, int w, int h, int type) { XSegment segs[2]; int i; i = 0; segs[i].x1 = segs[i].x2 = w - 1; segs[i].y1 = y; segs[i].y2 = y + h - 1; i++; if (type != F_TOP && type != F_NONE) { segs[i].x1 = 1; segs[i].y1 = segs[i].y2 = y + h - 2; segs[i].x2 = w - 1; i++; } XDrawSegments(dpy, win, scr->menu_item_auxtexture->dim_gc, segs, i); i = 0; segs[i].x1 = 0; segs[i].y1 = y; segs[i].x2 = 0; segs[i].y2 = y + h - 1; i++; if (type != F_BOTTOM && type != F_NONE) { segs[i].x1 = 0; segs[i].y1 = y; segs[i].x2 = w - 1; segs[i].y2 = y; i++; } XDrawSegments(dpy, win, scr->menu_item_auxtexture->light_gc, segs, i); if (type != F_TOP && type != F_NONE) XDrawLine(dpy, win, scr->menu_item_auxtexture->dark_gc, 0, y + h - 1, w - 1, y + h - 1); } static void paintEntry(WMenu * menu, int index, int selected) { WScreen *scr = menu->frame->screen_ptr; Window win = menu->menu->window; WMenuEntry *entry = menu->entries[index]; GC light, dim, dark; WMColor *color; int x, y, w, h, tw; int type; if (!menu->flags.realized) return; h = menu->entry_height; w = menu->menu->width; y = index * h; light = scr->menu_item_auxtexture->light_gc; dim = scr->menu_item_auxtexture->dim_gc; dark = scr->menu_item_auxtexture->dark_gc; if (wPreferences.menu_style == MS_FLAT && menu->entry_no > 1) { if (index == 0) type = F_TOP; else if (index == menu->entry_no - 1) type = F_BOTTOM; else type = F_NONE; } else { type = F_NORMAL; } /* paint background */ if (selected) { XFillRectangle(dpy, win, WMColorGC(scr->select_color), 1, y + 1, w - 2, h - 3); if (scr->menu_item_texture->any.type == WTEX_SOLID) drawFrame(scr, win, y, w, h, type); } else { if (scr->menu_item_texture->any.type == WTEX_SOLID) { XClearArea(dpy, win, 0, y + 1, w - 1, h - 3, False); /* draw the frame */ drawFrame(scr, win, y, w, h, type); } else { XClearArea(dpy, win, 0, y, w, h, False); } } if (selected) { if (entry->flags.enabled) color = scr->select_text_color; else color = scr->dtext_color; } else if (!entry->flags.enabled) { color = scr->dtext_color; } else { color = scr->mtext_color; } /* draw text */ x = 5; if (entry->flags.indicator) x += MENU_INDICATOR_SPACE + 2; WMDrawString(scr->wmscreen, win, color, scr->menu_entry_font, x, 3 + y + wPreferences.menu_text_clearance, entry->text, strlen(entry->text)); if (entry->cascade >= 0) { /* draw the cascade indicator */ XDrawLine(dpy, win, dim, w - 11, y + 6, w - 6, y + h / 2 - 1); XDrawLine(dpy, win, light, w - 11, y + h - 8, w - 6, y + h / 2 - 1); XDrawLine(dpy, win, dark, w - 12, y + 6, w - 12, y + h - 8); } /* draw indicator */ if (entry->flags.indicator && entry->flags.indicator_on) { int iw, ih; WPixmap *indicator; switch (entry->flags.indicator_type) { case MI_CHECK: indicator = scr->menu_check_indicator; break; case MI_MINIWINDOW: indicator = scr->menu_mini_indicator; break; case MI_HIDDEN: indicator = scr->menu_hide_indicator; break; case MI_SHADED: indicator = scr->menu_shade_indicator; break; case MI_DIAMOND: default: indicator = scr->menu_radio_indicator; break; } iw = indicator->width; ih = indicator->height; XSetClipMask(dpy, scr->copy_gc, indicator->mask); XSetClipOrigin(dpy, scr->copy_gc, 5, y + (h - ih) / 2); if (selected) { if (entry->flags.enabled) { XSetForeground(dpy, scr->copy_gc, WMColorPixel(scr->select_text_color)); } else { XSetForeground(dpy, scr->copy_gc, WMColorPixel(scr->dtext_color)); } } else { if (entry->flags.enabled) { XSetForeground(dpy, scr->copy_gc, WMColorPixel(scr->mtext_color)); } else { XSetForeground(dpy, scr->copy_gc, WMColorPixel(scr->dtext_color)); } } XFillRectangle(dpy, win, scr->copy_gc, 5, y + (h - ih) / 2, iw, ih); /* XCopyArea(dpy, indicator->image, win, scr->copy_gc, 0, 0, iw, ih, 5, y+(h-ih)/2); */ XSetClipOrigin(dpy, scr->copy_gc, 0, 0); } /* draw right text */ if (entry->rtext && entry->cascade < 0) { tw = WMWidthOfString(scr->menu_entry_font, entry->rtext, strlen(entry->rtext)); WMDrawString(scr->wmscreen, win, color, scr->menu_entry_font, w - 6 - tw, y + 3 + wPreferences.menu_text_clearance, entry->rtext, strlen(entry->rtext)); } } static void move_menus(WMenu * menu, int x, int y) { while (menu->parent) { menu = menu->parent; x -= MENUW(menu); if (!wPreferences.align_menus && menu->selected_entry >= 0) { y -= menu->selected_entry * menu->entry_height; } } wMenuMove(menu, x, y, True); } static void makeVisible(WMenu * menu) { WScreen *scr = menu->frame->screen_ptr; int x1, y1, x2, y2, new_x, new_y; WMRect rect = wGetRectForHead(scr, wGetHeadForPointerLocation(scr)); if (menu->entry_no < 0) return; x1 = menu->frame_x; y1 = menu->frame_y + menu->frame->top_width + menu->selected_entry * menu->entry_height; x2 = x1 + MENUW(menu); y2 = y1 + menu->entry_height; new_x = x1; new_y = y1; if (x1 < rect.pos.x) { new_x = rect.pos.x; } else if (x2 >= rect.pos.x + rect.size.width) { new_x = rect.pos.x + rect.size.width - MENUW(menu) - 1; } if (y1 < rect.pos.y) { new_y = rect.pos.y; } else if (y2 >= rect.pos.y + rect.size.height) { new_y = rect.pos.y + rect.size.height - menu->entry_height - 1; } new_y = new_y - menu->frame->top_width - menu->selected_entry * menu->entry_height; move_menus(menu, new_x, new_y); } static int check_key(WMenu * menu, XKeyEvent * event) { int i, ch, s; char buffer[32]; if (XLookupString(event, buffer, 32, NULL, NULL) < 1) return -1; ch = toupper(buffer[0]); s = (menu->selected_entry >= 0 ? menu->selected_entry + 1 : 0); again: for (i = s; i < menu->entry_no; i++) { if (ch == toupper(menu->entries[i]->text[0])) { return i; } } /* no match. Retry from start, if previous started from a selected entry */ if (s != 0) { s = 0; goto again; } return -1; } static int keyboardMenu(WMenu * menu) { XEvent event; KeySym ksym = NoSymbol; int done = 0; int index; WMenuEntry *entry; int old_pos_x = menu->frame_x; int old_pos_y = menu->frame_y; int new_x = old_pos_x, new_y = old_pos_y; WMRect rect = wGetRectForHead(menu->frame->screen_ptr, wGetHeadForPointerLocation(menu->frame->screen_ptr)); if (menu->flags.editing) return False; XGrabKeyboard(dpy, menu->frame->core->window, True, GrabModeAsync, GrabModeAsync, CurrentTime); if (menu->frame_y + menu->frame->top_width >= rect.pos.y + rect.size.height) new_y = rect.pos.y + rect.size.height - menu->frame->top_width; if (menu->frame_x + MENUW(menu) >= rect.pos.x + rect.size.width) new_x = rect.pos.x + rect.size.width - MENUW(menu) - 1; move_menus(menu, new_x, new_y); while (!done && menu->flags.mapped) { XAllowEvents(dpy, AsyncKeyboard, CurrentTime); WMMaskEvent(dpy, ExposureMask | ButtonMotionMask | ButtonPressMask | ButtonReleaseMask | KeyPressMask | KeyReleaseMask | SubstructureNotifyMask, &event); switch (event.type) { case KeyPress: ksym = XLookupKeysym(&event.xkey, 0); if (wPreferences.vi_key_menus) { switch (ksym) { case XK_h: ksym = XK_Left; break; case XK_j: ksym = XK_Down; break; case XK_k: ksym = XK_Up; break; case XK_l: ksym = XK_Right; break; } } switch (ksym) { case XK_Escape: done = 1; break; case XK_Home: #ifdef XK_KP_Home case XK_KP_Home: #endif selectEntry(menu, 0); makeVisible(menu); break; case XK_End: #ifdef XK_KP_End case XK_KP_End: #endif selectEntry(menu, menu->entry_no - 1); makeVisible(menu); break; case XK_Up: #ifdef XK_KP_Up case XK_KP_Up: #endif if (menu->selected_entry <= 0) selectEntry(menu, menu->entry_no - 1); else selectEntry(menu, menu->selected_entry - 1); makeVisible(menu); break; case XK_Down: #ifdef XK_KP_Down case XK_KP_Down: #endif if (menu->selected_entry < 0) selectEntry(menu, 0); else if (menu->selected_entry == menu->entry_no - 1) selectEntry(menu, 0); else if (menu->selected_entry < menu->entry_no - 1) selectEntry(menu, menu->selected_entry + 1); makeVisible(menu); break; case XK_Right: #ifdef XK_KP_Right case XK_KP_Right: #endif if (menu->selected_entry >= 0) { WMenuEntry *entry; entry = menu->entries[menu->selected_entry]; if (entry->cascade >= 0 && menu->cascades && menu->cascades[entry->cascade]->entry_no > 0) { XUngrabKeyboard(dpy, CurrentTime); selectEntry(menu->cascades[entry->cascade], 0); if (!keyboardMenu(menu->cascades[entry->cascade])) done = 1; XGrabKeyboard(dpy, menu->frame->core->window, True, GrabModeAsync, GrabModeAsync, CurrentTime); } } break; case XK_Left: #ifdef XK_KP_Left case XK_KP_Left: #endif if (menu->parent != NULL && menu->parent->selected_entry >= 0) { selectEntry(menu, -1); move_menus(menu, old_pos_x, old_pos_y); return True; } break; case XK_Return: #ifdef XK_KP_Enter case XK_KP_Enter: #endif done = 2; break; default: index = check_key(menu, &event.xkey); if (index >= 0) { selectEntry(menu, index); } } break; default: if (event.type == ButtonPress) done = 1; WMHandleEvent(&event); } } XUngrabKeyboard(dpy, CurrentTime); if (done == 2 && menu->selected_entry >= 0) { entry = menu->entries[menu->selected_entry]; } else { entry = NULL; } if (entry && entry->callback != NULL && entry->flags.enabled && entry->cascade < 0) { #if (MENU_BLINK_COUNT > 0) int sel = menu->selected_entry; int i; for (i = 0; i < MENU_BLINK_COUNT; i++) { paintEntry(menu, sel, False); XSync(dpy, 0); wusleep(MENU_BLINK_DELAY); paintEntry(menu, sel, True); XSync(dpy, 0); wusleep(MENU_BLINK_DELAY); } #endif selectEntry(menu, -1); if (!menu->flags.buttoned) { wMenuUnmap(menu); move_menus(menu, old_pos_x, old_pos_y); } closeCascade(menu); (*entry->callback) (menu, entry); } else { if (!menu->flags.buttoned) { wMenuUnmap(menu); move_menus(menu, old_pos_x, old_pos_y); } selectEntry(menu, -1); } /* returns True if returning from a submenu to a parent menu, * False if exiting from menu */ return False; } void wMenuMapAt(WMenu * menu, int x, int y, int keyboard) { if (!menu->flags.realized) { menu->flags.realized = 1; wMenuRealize(menu); } if (!menu->flags.mapped) { if (wPreferences.wrap_menus) { WScreen *scr = menu->frame->screen_ptr; WMRect rect = wGetRectForHead(scr, wGetHeadForPointerLocation(scr)); if (x < rect.pos.x) x = rect.pos.x; if (y < rect.pos.y) y = rect.pos.y; if (x + MENUW(menu) > rect.pos.x + rect.size.width) x = rect.pos.x + rect.size.width - MENUW(menu); if (y + MENUH(menu) > rect.pos.y + rect.size.height) y = rect.pos.y + rect.size.height - MENUH(menu); } XMoveWindow(dpy, menu->frame->core->window, x, y); menu->frame_x = x; menu->frame_y = y; XMapWindow(dpy, menu->frame->core->window); wRaiseFrame(menu->frame->core); menu->flags.mapped = 1; } else { selectEntry(menu, 0); } if (keyboard) keyboardMenu(menu); } void wMenuMap(WMenu * menu) { if (!menu->flags.realized) { menu->flags.realized = 1; wMenuRealize(menu); } if (menu->flags.app_menu && menu->parent == NULL) { menu->frame_x = menu->frame->screen_ptr->app_menu_x; menu->frame_y = menu->frame->screen_ptr->app_menu_y; XMoveWindow(dpy, menu->frame->core->window, menu->frame_x, menu->frame_y); } XMapWindow(dpy, menu->frame->core->window); wRaiseFrame(menu->frame->core); menu->flags.mapped = 1; } void wMenuUnmap(WMenu * menu) { int i; XUnmapWindow(dpy, menu->frame->core->window); if (menu->flags.titled && menu->flags.buttoned) { wFrameWindowHideButton(menu->frame, WFF_RIGHT_BUTTON); } menu->flags.buttoned = 0; menu->flags.mapped = 0; menu->flags.open_to_left = 0; if (menu->flags.shaded) { wFrameWindowResize(menu->frame, menu->frame->core->width, menu->frame->top_width + menu->entry_height*menu->entry_no + menu->frame->bottom_width - 1); menu->flags.shaded = 0; } for (i = 0; i < menu->cascade_no; i++) { if (menu->cascades[i] != NULL && menu->cascades[i]->flags.mapped && !menu->cascades[i]->flags.buttoned) { wMenuUnmap(menu->cascades[i]); } } menu->selected_entry = -1; } void wMenuPaint(WMenu * menu) { int i; if (!menu->flags.mapped) { return; } /* paint entries */ for (i = 0; i < menu->entry_no; i++) { paintEntry(menu, i, i == menu->selected_entry); } } void wMenuSetEnabled(WMenu * menu, int index, int enable) { if (index >= menu->entry_no) return; menu->entries[index]->flags.enabled = enable; paintEntry(menu, index, index == menu->selected_entry); paintEntry(menu->brother, index, index == menu->selected_entry); } static void selectEntry(WMenu * menu, int entry_no) { WMenuEntry *entry; WMenu *submenu; int old_entry; if (menu->entries == NULL) return; if (entry_no >= menu->entry_no) return; old_entry = menu->selected_entry; menu->selected_entry = entry_no; if (old_entry != entry_no) { /* unselect previous entry */ if (old_entry >= 0) { paintEntry(menu, old_entry, False); entry = menu->entries[old_entry]; /* unmap cascade */ if (entry->cascade >= 0 && menu->cascades) { if (!menu->cascades[entry->cascade]->flags.buttoned) { wMenuUnmap(menu->cascades[entry->cascade]); } } } if (entry_no < 0) { menu->selected_entry = -1; return; } entry = menu->entries[entry_no]; if (entry->cascade >= 0 && menu->cascades && entry->flags.enabled) { /* Callback for when the submenu is opened. */ submenu = menu->cascades[entry->cascade]; if (submenu && submenu->flags.brother) submenu = submenu->brother; if (entry->callback) { /* Only call the callback if the submenu is not yet mapped. */ if (menu->flags.brother) { if (!submenu || !submenu->flags.mapped) (*entry->callback) (menu->brother, entry); } else { if (!submenu || !submenu->flags.buttoned) (*entry->callback) (menu, entry); } } /* the submenu menu might have changed */ submenu = menu->cascades[entry->cascade]; /* map cascade */ if (!submenu->flags.mapped) { int x, y; if (!submenu->flags.realized) wMenuRealize(submenu); if (wPreferences.wrap_menus) { if (menu->flags.open_to_left) submenu->flags.open_to_left = 1; if (submenu->flags.open_to_left) { x = menu->frame_x - MENUW(submenu); if (x < 0) { x = 0; submenu->flags.open_to_left = 0; } } else { x = menu->frame_x + MENUW(menu); if (x + MENUW(submenu) >= menu->frame->screen_ptr->scr_width) { x = menu->frame_x - MENUW(submenu); submenu->flags.open_to_left = 1; } } } else { x = menu->frame_x + MENUW(menu); } if (wPreferences.align_menus) { y = menu->frame_y; } else { y = menu->frame_y + menu->entry_height * entry_no; if (menu->flags.titled) y += menu->frame->top_width; if (menu->cascades[entry->cascade]->flags.titled) y -= menu->cascades[entry->cascade]->frame->top_width; } wMenuMapAt(menu->cascades[entry->cascade], x, y, False); menu->cascades[entry->cascade]->parent = menu; } else { return; } } paintEntry(menu, entry_no, True); } } static WMenu *findMenu(WScreen * scr, int *x_ret, int *y_ret) { WMenu *menu; WObjDescriptor *desc; Window root_ret, win, junk_win; int x, y, wx, wy; unsigned int mask; XQueryPointer(dpy, scr->root_win, &root_ret, &win, &x, &y, &wx, &wy, &mask); if (win == None) return NULL; if (XFindContext(dpy, win, w_global.context.client_win, (XPointer *) & desc) == XCNOENT) return NULL; if (desc->parent_type == WCLASS_MENU) { menu = (WMenu *) desc->parent; XTranslateCoordinates(dpy, root_ret, menu->menu->window, wx, wy, x_ret, y_ret, &junk_win); return menu; } return NULL; } static void closeCascade(WMenu * menu) { WMenu *parent = menu->parent; if (menu->flags.brother || (!menu->flags.buttoned && (!menu->flags.app_menu || menu->parent != NULL))) { selectEntry(menu, -1); XSync(dpy, 0); #if (MENU_BLINK_DELAY > 2) wusleep(MENU_BLINK_DELAY / 2); #endif wMenuUnmap(menu); while (parent != NULL && (parent->parent != NULL || !parent->flags.app_menu || parent->flags.brother) && !parent->flags.buttoned) { selectEntry(parent, -1); wMenuUnmap(parent); parent = parent->parent; } if (parent) selectEntry(parent, -1); } } static void closeBrotherCascadesOf(WMenu * menu) { WMenu *tmp; int i; for (i = 0; i < menu->cascade_no; i++) { if (menu->cascades[i]->flags.brother) { tmp = menu->cascades[i]; } else { tmp = menu->cascades[i]->brother; } if (tmp->flags.mapped) { selectEntry(tmp->parent, -1); closeBrotherCascadesOf(tmp); break; } } } #define getEntryAt(menu, x, y) ((y)<0 ? -1 : (y)/(menu->entry_height)) static WMenu *parentMenu(WMenu * menu) { WMenu *parent; WMenuEntry *entry; if (menu->flags.buttoned) return menu; while (menu->parent && menu->parent->flags.mapped) { parent = menu->parent; if (parent->selected_entry < 0) break; entry = parent->entries[parent->selected_entry]; if (!entry->flags.enabled || entry->cascade < 0 || !parent->cascades || parent->cascades[entry->cascade] != menu) break; menu = parent; if (menu->flags.buttoned) break; } return menu; } /* * Will raise the passed menu, if submenu = 0 * If submenu > 0 will also raise all mapped submenus * until the first buttoned one * If submenu < 0 will also raise all mapped parent menus * until the first buttoned one */ static void raiseMenus(WMenu * menu, int submenus) { WMenu *submenu; int i; if (!menu) return; wRaiseFrame(menu->frame->core); if (submenus > 0 && menu->selected_entry >= 0) { i = menu->entries[menu->selected_entry]->cascade; if (i >= 0 && menu->cascades) { submenu = menu->cascades[i]; if (submenu->flags.mapped && !submenu->flags.buttoned) raiseMenus(submenu, submenus); } } if (submenus < 0 && !menu->flags.buttoned && menu->parent && menu->parent->flags.mapped) raiseMenus(menu->parent, submenus); } WMenu *wMenuUnderPointer(WScreen * screen) { WObjDescriptor *desc; Window root_ret, win; int dummy; unsigned int mask; XQueryPointer(dpy, screen->root_win, &root_ret, &win, &dummy, &dummy, &dummy, &dummy, &mask); if (win == None) return NULL; if (XFindContext(dpy, win, w_global.context.client_win, (XPointer *) & desc) == XCNOENT) return NULL; if (desc->parent_type == WCLASS_MENU) return (WMenu *) desc->parent; return NULL; } static void getPointerPosition(WScreen * scr, int *x, int *y) { Window root_ret, win; int wx, wy; unsigned int mask; XQueryPointer(dpy, scr->root_win, &root_ret, &win, x, y, &wx, &wy, &mask); } static void getScrollAmount(WMenu * menu, int *hamount, int *vamount) { WScreen *scr = menu->menu->screen_ptr; int menuX1 = menu->frame_x; int menuY1 = menu->frame_y; int menuX2 = menu->frame_x + MENUW(menu); int menuY2 = menu->frame_y + MENUH(menu); int xroot, yroot; WMRect rect = wGetRectForHead(scr, wGetHeadForPointerLocation(scr)); *hamount = 0; *vamount = 0; getPointerPosition(scr, &xroot, &yroot); if (xroot <= (rect.pos.x + 1) && menuX1 < rect.pos.x) { /* scroll to the right */ *hamount = WMIN(MENU_SCROLL_STEP, abs(menuX1)); } else if (xroot >= (rect.pos.x + rect.size.width - 2) && menuX2 > (rect.pos.x + rect.size.width - 1)) { /* scroll to the left */ *hamount = WMIN(MENU_SCROLL_STEP, abs(menuX2 - rect.pos.x - rect.size.width - 1)); if (*hamount == 0) *hamount = 1; *hamount = -*hamount; } if (yroot <= (rect.pos.y + 1) && menuY1 < rect.pos.y) { /* scroll down */ *vamount = WMIN(MENU_SCROLL_STEP, abs(menuY1)); } else if (yroot >= (rect.pos.y + rect.size.height - 2) && menuY2 > (rect.pos.y + rect.size.height - 1)) { /* scroll up */ *vamount = WMIN(MENU_SCROLL_STEP, abs(menuY2 - rect.pos.y - rect.size.height - 2)); *vamount = -*vamount; } } static void dragScrollMenuCallback(void *data) { WMenu *menu = (WMenu *) data; WScreen *scr = menu->menu->screen_ptr; WMenu *parent = parentMenu(menu); int hamount, vamount; int x, y; int newSelectedEntry; getScrollAmount(menu, &hamount, &vamount); if (hamount != 0 || vamount != 0) { wMenuMove(parent, parent->frame_x + hamount, parent->frame_y + vamount, True); if (findMenu(scr, &x, &y)) { newSelectedEntry = getEntryAt(menu, x, y); selectEntry(menu, newSelectedEntry); } else { /* Pointer fell outside of menu. If the selected entry is * not a submenu, unselect it */ if (menu->selected_entry >= 0 && menu->entries[menu->selected_entry]->cascade < 0) selectEntry(menu, -1); newSelectedEntry = 0; } /* paranoid check */ if (newSelectedEntry >= 0) { /* keep scrolling */ menu->timer = WMAddTimerHandler(MENU_SCROLL_DELAY, dragScrollMenuCallback, menu); } else { menu->timer = NULL; } } else { /* don't need to scroll anymore */ menu->timer = NULL; if (findMenu(scr, &x, &y)) { newSelectedEntry = getEntryAt(menu, x, y); selectEntry(menu, newSelectedEntry); } } } static void scrollMenuCallback(void *data) { WMenu *menu = (WMenu *) data; WMenu *parent = parentMenu(menu); int hamount = 0; /* amount to scroll */ int vamount = 0; getScrollAmount(menu, &hamount, &vamount); if (hamount != 0 || vamount != 0) { wMenuMove(parent, parent->frame_x + hamount, parent->frame_y + vamount, True); /* keep scrolling */ menu->timer = WMAddTimerHandler(MENU_SCROLL_DELAY, scrollMenuCallback, menu); } else { /* don't need to scroll anymore */ menu->timer = NULL; } } #define MENU_SCROLL_BORDER 5 static int isPointNearBorder(WMenu * menu, int x, int y) { int menuX1 = menu->frame_x; int menuY1 = menu->frame_y; int menuX2 = menu->frame_x + MENUW(menu); int menuY2 = menu->frame_y + MENUH(menu); int flag = 0; int head = wGetHeadForPoint(menu->frame->screen_ptr, wmkpoint(x, y)); WMRect rect = wGetRectForHead(menu->frame->screen_ptr, head); /* XXX: handle screen joins properly !! */ if (x >= menuX1 && x <= menuX2 && (y < rect.pos.y + MENU_SCROLL_BORDER || y >= rect.pos.y + rect.size.height - MENU_SCROLL_BORDER)) flag = 1; else if (y >= menuY1 && y <= menuY2 && (x < rect.pos.x + MENU_SCROLL_BORDER || x >= rect.pos.x + rect.size.width - MENU_SCROLL_BORDER)) flag = 1; return flag; } typedef struct _delay { WMenu *menu; int ox, oy; } _delay; static void callback_leaving(void *user_param) { _delay *dl = (_delay *) user_param; wMenuMove(dl->menu, dl->ox, dl->oy, True); dl->menu->jump_back = NULL; dl->menu->menu->screen_ptr->flags.jump_back_pending = 0; wfree(dl); } void wMenuScroll(WMenu *menu) { WMenu *smenu; WMenu *omenu = parentMenu(menu); WScreen *scr = menu->frame->screen_ptr; int done = 0; int jump_back = 0; int old_frame_x = omenu->frame_x; int old_frame_y = omenu->frame_y; XEvent ev; if (omenu->jump_back) WMDeleteTimerWithClientData(omenu->jump_back); if (( /*omenu->flags.buttoned && */ !wPreferences.wrap_menus) || omenu->flags.app_menu) { jump_back = 1; } if (!wPreferences.wrap_menus) raiseMenus(omenu, True); else raiseMenus(menu, False); if (!menu->timer) scrollMenuCallback(menu); while (!done) { int x, y, on_border, on_x_edge, on_y_edge, on_title; WMRect rect; WMNextEvent(dpy, &ev); switch (ev.type) { case EnterNotify: WMHandleEvent(&ev); /* Fall through. */ case MotionNotify: x = (ev.type == MotionNotify) ? ev.xmotion.x_root : ev.xcrossing.x_root; y = (ev.type == MotionNotify) ? ev.xmotion.y_root : ev.xcrossing.y_root; /* on_border is != 0 if the pointer is between the menu * and the screen border and is close enough to the border */ on_border = isPointNearBorder(menu, x, y); smenu = wMenuUnderPointer(scr); if ((smenu == NULL && !on_border) || (smenu && parentMenu(smenu) != omenu)) { done = 1; break; } rect = wGetRectForHead(scr, wGetHeadForPoint(scr, wmkpoint(x, y))); on_x_edge = x <= rect.pos.x + 1 || x >= rect.pos.x + rect.size.width - 2; on_y_edge = y <= rect.pos.y + 1 || y >= rect.pos.y + rect.size.height - 2; on_border = on_x_edge || on_y_edge; if (!on_border && !jump_back) { done = 1; break; } if (menu->timer && (smenu != menu || (!on_y_edge && !on_x_edge))) { WMDeleteTimerHandler(menu->timer); menu->timer = NULL; } if (smenu != NULL) menu = smenu; if (!menu->timer) scrollMenuCallback(menu); break; case ButtonPress: /* True if we push on title, or drag the omenu to other position */ on_title = ev.xbutton.x_root >= omenu->frame_x && ev.xbutton.x_root <= omenu->frame_x + MENUW(omenu) && ev.xbutton.y_root >= omenu->frame_y && ev.xbutton.y_root <= omenu->frame_y + omenu->frame->top_width; WMHandleEvent(&ev); smenu = wMenuUnderPointer(scr); if (smenu == NULL || (smenu && smenu->flags.buttoned && smenu != omenu)) done = 1; else if (smenu == omenu && on_title) { jump_back = 0; done = 1; } break; case KeyPress: done = 1; /* Fall through. */ default: WMHandleEvent(&ev); break; } } if (menu->timer) { WMDeleteTimerHandler(menu->timer); menu->timer = NULL; } if (jump_back) { _delay *delayer; if (!omenu->jump_back) { delayer = wmalloc(sizeof(_delay)); delayer->menu = omenu; delayer->ox = old_frame_x; delayer->oy = old_frame_y; omenu->jump_back = delayer; scr->flags.jump_back_pending = 1; } else delayer = omenu->jump_back; WMAddTimerHandler(MENU_JUMP_BACK_DELAY, callback_leaving, delayer); } } static void menuExpose(WObjDescriptor * desc, XEvent * event) { /* Parameter not used, but tell the compiler that it is ok */ (void) event; wMenuPaint(desc->parent); } typedef struct { int *delayed_select; WMenu *menu; WMHandlerID magic; } delay_data; static void delaySelection(void *data) { delay_data *d = (delay_data *) data; int x, y, entry_no; WMenu *menu; d->magic = NULL; menu = findMenu(d->menu->menu->screen_ptr, &x, &y); if (menu && (d->menu == menu || d->delayed_select)) { entry_no = getEntryAt(menu, x, y); selectEntry(menu, entry_no); } if (d->delayed_select) *(d->delayed_select) = 0; } static void menuMouseDown(WObjDescriptor * desc, XEvent * event) { WWindow *wwin; XButtonEvent *bev = &event->xbutton; WMenu *menu = desc->parent; WMenu *smenu; WScreen *scr = menu->frame->screen_ptr; WMenuEntry *entry = NULL; XEvent ev; int close_on_exit = 0; int done = 0; int delayed_select = 0; int entry_no; int x, y; int prevx, prevy; int old_frame_x = 0; int old_frame_y = 0; delay_data d_data = { NULL, NULL, NULL }; /* Doesn't seem to be needed anymore (if delayed selection handler is * added only if not present). there seem to be no other side effects * from removing this and it is also possible that it was only added * to avoid problems with adding the delayed selection timer handler * multiple times */ /*if (menu->flags.inside_handler) { return; } */ menu->flags.inside_handler = 1; if (!wPreferences.wrap_menus) { smenu = parentMenu(menu); old_frame_x = smenu->frame_x; old_frame_y = smenu->frame_y; } else if (event->xbutton.window == menu->frame->core->window) { /* This is true if the menu was launched with right click on root window */ if (!d_data.magic) { delayed_select = 1; d_data.delayed_select = &delayed_select; d_data.menu = menu; d_data.magic = WMAddTimerHandler(wPreferences.dblclick_time, delaySelection, &d_data); } } wRaiseFrame(menu->frame->core); close_on_exit = (bev->send_event || menu->flags.brother); smenu = findMenu(scr, &x, &y); if (!smenu) { x = -1; y = -1; } else { menu = smenu; } if (menu->flags.editing) { goto byebye; } entry_no = getEntryAt(menu, x, y); if (entry_no >= 0) { entry = menu->entries[entry_no]; if (!close_on_exit && (bev->state & ControlMask) && smenu && entry->flags.editable) { char buffer[128]; char *name; int number = entry_no - 3; /* Entries "New", "Destroy Last" and "Last Used" appear before workspaces */ name = wstrdup(scr->workspaces[number]->name); snprintf(buffer, sizeof(buffer), _("Type the name for workspace %i:"), number + 1); wMenuUnmap(scr->root_menu); if (wInputDialog(scr, _("Rename Workspace"), buffer, &name)) wWorkspaceRename(scr, number, name); if (name) wfree(name); goto byebye; } else if (bev->state & ControlMask) { goto byebye; } if (entry->flags.enabled && entry->cascade >= 0 && menu->cascades) { WMenu *submenu = menu->cascades[entry->cascade]; /* map cascade */ if (submenu->flags.mapped && !submenu->flags.buttoned && menu->selected_entry != entry_no) { wMenuUnmap(submenu); } if (!submenu->flags.mapped && !delayed_select) { selectEntry(menu, entry_no); } else if (!submenu->flags.buttoned) { selectEntry(menu, -1); } } else if (!delayed_select) { if (menu == scr->switch_menu && event->xbutton.button == Button3) { selectEntry(menu, entry_no); OpenWindowMenu2((WWindow *)entry->clientdata, event->xbutton.x_root, event->xbutton.y_root, False); wwin = (WWindow *)entry->clientdata; desc = &wwin->screen_ptr->window_menu->menu->descriptor; event->xany.send_event = True; (*desc->handle_mousedown)(desc, event); XUngrabPointer(dpy, CurrentTime); selectEntry(menu, -1); return; } else { selectEntry(menu, entry_no); } } if (!wPreferences.wrap_menus && !wPreferences.scrollable_menus) { if (!menu->timer) dragScrollMenuCallback(menu); } } prevx = bev->x_root; prevy = bev->y_root; while (!done) { int x, y; XAllowEvents(dpy, AsyncPointer | SyncPointer, CurrentTime); WMMaskEvent(dpy, ExposureMask | ButtonMotionMask | ButtonReleaseMask | ButtonPressMask, &ev); switch (ev.type) { case MotionNotify: smenu = findMenu(scr, &x, &y); if (smenu == NULL) { /* moved mouse out of menu */ if (!delayed_select && d_data.magic) { WMDeleteTimerHandler(d_data.magic); d_data.magic = NULL; } if (menu == NULL || (menu->selected_entry >= 0 && menu->entries[menu->selected_entry]->cascade >= 0)) { prevx = ev.xmotion.x_root; prevy = ev.xmotion.y_root; break; } selectEntry(menu, -1); menu = smenu; prevx = ev.xmotion.x_root; prevy = ev.xmotion.y_root; break; } else if (menu && menu != smenu && (menu->selected_entry < 0 || menu->entries[menu->selected_entry]->cascade < 0)) { selectEntry(menu, -1); if (!delayed_select && d_data.magic) { WMDeleteTimerHandler(d_data.magic); d_data.magic = NULL; } } else { /* hysteresis for item selection */ /* check if the motion was to the side, indicating that * the user may want to cross to a submenu */ if (!delayed_select && menu) { int dx; Bool moved_to_submenu; /* moved to direction of submenu */ dx = abs(prevx - ev.xmotion.x_root); moved_to_submenu = False; if (dx > 0 /* if moved enough to the side */ /* maybe a open submenu */ && menu->selected_entry >= 0 /* moving to the right direction */ && (wPreferences.align_menus || ev.xmotion.y_root >= prevy)) { int index; index = menu->entries[menu->selected_entry]->cascade; if (index >= 0) { if (menu->cascades[index]->frame_x > menu->frame_x) { if (prevx < ev.xmotion.x_root) moved_to_submenu = True; } else { if (prevx > ev.xmotion.x_root) moved_to_submenu = True; } } } if (menu != smenu) { if (d_data.magic) { WMDeleteTimerHandler(d_data.magic); d_data.magic = NULL; } } else if (moved_to_submenu) { /* while we are moving, postpone the selection */ if (d_data.magic) { WMDeleteTimerHandler(d_data.magic); } d_data.delayed_select = NULL; d_data.menu = menu; d_data.magic = WMAddTimerHandler(MENU_SELECT_DELAY, delaySelection, &d_data); prevx = ev.xmotion.x_root; prevy = ev.xmotion.y_root; break; } else { if (d_data.magic) { WMDeleteTimerHandler(d_data.magic); d_data.magic = NULL; } } } } prevx = ev.xmotion.x_root; prevy = ev.xmotion.y_root; if (menu != smenu) { /* pointer crossed menus */ if (menu && menu->timer) { WMDeleteTimerHandler(menu->timer); menu->timer = NULL; } if (smenu) dragScrollMenuCallback(smenu); } menu = smenu; if (!menu->timer) dragScrollMenuCallback(menu); if (!delayed_select) { entry_no = getEntryAt(menu, x, y); if (entry_no >= 0) { entry = menu->entries[entry_no]; if (entry->flags.enabled && entry->cascade >= 0 && menu->cascades) { WMenu *submenu = menu->cascades[entry->cascade]; if (submenu->flags.mapped && !submenu->flags.buttoned && menu->selected_entry != entry_no) { wMenuUnmap(submenu); } } } selectEntry(menu, entry_no); } break; case ButtonPress: break; case ButtonRelease: if (ev.xbutton.button == event->xbutton.button) done = 1; break; case Expose: WMHandleEvent(&ev); break; } } if (menu && menu->timer) { WMDeleteTimerHandler(menu->timer); menu->timer = NULL; } if (d_data.magic != NULL) { WMDeleteTimerHandler(d_data.magic); d_data.magic = NULL; } if (menu && menu->selected_entry >= 0) { entry = menu->entries[menu->selected_entry]; if (entry->callback != NULL && entry->flags.enabled && entry->cascade < 0) { /* blink and erase menu selection */ #if (MENU_BLINK_DELAY > 0) int sel = menu->selected_entry; int i; for (i = 0; i < MENU_BLINK_COUNT; i++) { paintEntry(menu, sel, False); XSync(dpy, 0); wusleep(MENU_BLINK_DELAY); paintEntry(menu, sel, True); XSync(dpy, 0); wusleep(MENU_BLINK_DELAY); } #endif /* unmap the menu, it's parents and call the callback */ if (!menu->flags.buttoned && (!menu->flags.app_menu || menu->parent != NULL)) { closeCascade(menu); } else { selectEntry(menu, -1); } (*entry->callback) (menu, entry); /* If the user double clicks an entry, the entry will * be executed twice, which is not good for things like * the root menu. So, ignore any clicks that were generated * while the entry was being executed */ while (XCheckTypedWindowEvent(dpy, menu->menu->window, ButtonPress, &ev)) ; } else if (entry->callback != NULL && entry->cascade < 0) { selectEntry(menu, -1); } else { if (entry->cascade >= 0 && menu->cascades && menu->cascades[entry->cascade]->flags.brother) { selectEntry(menu, -1); } } } if (((WMenu *) desc->parent)->flags.brother || close_on_exit || !smenu) closeCascade(desc->parent); /* close the cascade windows that should not remain opened */ closeBrotherCascadesOf(desc->parent); if (!wPreferences.wrap_menus) wMenuMove(parentMenu(desc->parent), old_frame_x, old_frame_y, True); byebye: /* Just to be sure in case we skip the 2 above because of a goto byebye */ if (menu && menu->timer) { WMDeleteTimerHandler(menu->timer); menu->timer = NULL; } if (d_data.magic != NULL) { WMDeleteTimerHandler(d_data.magic); d_data.magic = NULL; } ((WMenu *) desc->parent)->flags.inside_handler = 0; } void wMenuMove(WMenu * menu, int x, int y, int submenus) { WMenu *submenu; int i; if (!menu) return; menu->frame_x = x; menu->frame_y = y; XMoveWindow(dpy, menu->frame->core->window, x, y); if (submenus > 0 && menu->selected_entry >= 0) { i = menu->entries[menu->selected_entry]->cascade; if (i >= 0 && menu->cascades) { submenu = menu->cascades[i]; if (submenu->flags.mapped && !submenu->flags.buttoned) { if (wPreferences.align_menus) { wMenuMove(submenu, x + MENUW(menu), y, submenus); } else { wMenuMove(submenu, x + MENUW(menu), y + submenu->entry_height * menu->selected_entry, submenus); } } } } if (submenus < 0 && menu->parent != NULL && menu->parent->flags.mapped && !menu->parent->flags.buttoned) { if (wPreferences.align_menus) { wMenuMove(menu->parent, x - MENUW(menu->parent), y, submenus); } else { wMenuMove(menu->parent, x - MENUW(menu->parent), menu->frame_y - menu->parent->entry_height * menu->parent->selected_entry, submenus); } } } static void changeMenuLevels(WMenu * menu, int lower) { int i; if (!lower) { ChangeStackingLevel(menu->frame->core, (!menu->parent ? WMMainMenuLevel : WMSubmenuLevel)); wRaiseFrame(menu->frame->core); menu->flags.lowered = 0; } else { ChangeStackingLevel(menu->frame->core, WMNormalLevel); wLowerFrame(menu->frame->core); menu->flags.lowered = 1; } for (i = 0; i < menu->cascade_no; i++) { if (menu->cascades[i] && !menu->cascades[i]->flags.buttoned && menu->cascades[i]->flags.lowered != lower) { changeMenuLevels(menu->cascades[i], lower); } } } static void menuTitleDoubleClick(WCoreWindow * sender, void *data, XEvent * event) { WMenu *menu = data; int lower; /* Parameter not used, but tell the compiler that it is ok */ (void) sender; if (event->xbutton.state & MOD_MASK) { if (menu->flags.lowered) { lower = 0; } else { lower = 1; } changeMenuLevels(menu, lower); } else { if (menu->flags.shaded) { wFrameWindowResize(menu->frame, menu->frame->core->width, menu->frame->top_width + menu->entry_height*menu->entry_no + menu->frame->bottom_width - 1); menu->flags.shaded = 0; } else { wFrameWindowResize(menu->frame, menu->frame->core->width, menu->frame->top_width - 1); menu->flags.shaded = 1; } } } static void menuTitleMouseDown(WCoreWindow * sender, void *data, XEvent * event) { WMenu *menu = data; WMenu *tmp; XEvent ev; int x = menu->frame_x, y = menu->frame_y; int dx = event->xbutton.x_root, dy = event->xbutton.y_root; int i, lower; Bool started; /* Parameter not used, but tell the compiler that it is ok */ (void) sender; /* can't touch the menu copy */ if (menu->flags.brother) return; if (event->xbutton.button != Button1 && event->xbutton.button != Button2) return; if (event->xbutton.state & MOD_MASK) { wLowerFrame(menu->frame->core); lower = 1; } else { wRaiseFrame(menu->frame->core); lower = 0; } tmp = menu; /* lower/raise all submenus */ while (1) { if (tmp->selected_entry >= 0 && tmp->cascades && tmp->entries[tmp->selected_entry]->cascade >= 0) { tmp = tmp->cascades[tmp->entries[tmp->selected_entry]->cascade]; if (!tmp || !tmp->flags.mapped) break; if (lower) wLowerFrame(tmp->frame->core); else wRaiseFrame(tmp->frame->core); } else { break; } } /* tear off the menu if it's a root menu or a cascade application menu */ if (!menu->flags.buttoned && !menu->flags.brother && (!menu->flags.app_menu || menu->parent != NULL)) { menu->flags.buttoned = 1; wFrameWindowShowButton(menu->frame, WFF_RIGHT_BUTTON); if (menu->parent) { /* turn off selected menu entry in parent menu */ selectEntry(menu->parent, -1); /* make parent map the copy in place of the original */ for (i = 0; i < menu->parent->cascade_no; i++) { if (menu->parent->cascades[i] == menu) { menu->parent->cascades[i] = menu->brother; break; } } } } started = False; while (1) { WMMaskEvent(dpy, ButtonMotionMask | ButtonReleaseMask | ButtonPressMask | ExposureMask, &ev); switch (ev.type) { case MotionNotify: if (started) { x += ev.xmotion.x_root - dx; y += ev.xmotion.y_root - dy; dx = ev.xmotion.x_root; dy = ev.xmotion.y_root; wMenuMove(menu, x, y, True); } else { if (abs(ev.xmotion.x_root - dx) > 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, wPreferences.cursor[WCUR_MOVE], CurrentTime); } } break; case ButtonPress: break; case ButtonRelease: if (ev.xbutton.button != event->xbutton.button) break; XUngrabPointer(dpy, CurrentTime); return; default: WMHandleEvent(&ev); break; } } } /* *---------------------------------------------------------------------- * menuCloseClick-- * Handles mouse click on the close button of menus. The menu is * closed when the button is clicked. * * Side effects: * The closed menu is reinserted at it's parent menus * cascade list. *---------------------------------------------------------------------- */ static void menuCloseClick(WCoreWindow * sender, void *data, XEvent * event) { WMenu *menu = (WMenu *) data; WMenu *parent = menu->parent; int i; /* Parameter not used, but tell the compiler that it is ok */ (void) sender; (void) event; if (parent) { for (i = 0; i < parent->cascade_no; i++) { /* find the entry that points to the copy */ if (parent->cascades[i] == menu->brother) { /* make it point to the original */ parent->cascades[i] = menu; menu->parent = parent; break; } } } wMenuUnmap(menu); } static void saveMenuInfo(WMPropList * dict, WMenu * menu, WMPropList * key) { WMPropList *value, *list; char buffer[256]; snprintf(buffer, sizeof(buffer), "%i,%i", menu->frame_x, menu->frame_y); value = WMCreatePLString(buffer); list = WMCreatePLArray(value, NULL); if (menu->flags.lowered) WMAddToPLArray(list, WMCreatePLString("lowered")); WMPutInPLDictionary(dict, key, list); WMReleasePropList(value); WMReleasePropList(list); } void wMenuSaveState(WScreen * scr) { WMPropList *menus, *key; int save_menus = 0; menus = WMCreatePLDictionary(NULL, NULL); if (scr->switch_menu && scr->switch_menu->flags.buttoned) { key = WMCreatePLString("SwitchMenu"); saveMenuInfo(menus, scr->switch_menu, key); WMReleasePropList(key); save_menus = 1; } if (saveMenuRecurs(menus, scr, scr->root_menu)) save_menus = 1; if (scr->workspace_menu && scr->workspace_menu->flags.buttoned) { key = WMCreatePLString("WorkspaceMenu"); saveMenuInfo(menus, scr->workspace_menu, key); WMReleasePropList(key); save_menus = 1; } if (save_menus) { key = WMCreatePLString("Menus"); WMPutInPLDictionary(scr->session_state, key, menus); WMReleasePropList(key); } WMReleasePropList(menus); } static Bool getMenuPath(WMenu * menu, char *buffer, int bufSize) { Bool ok = True; int len = 0; if (!menu->flags.titled || !menu->frame->title[0]) return False; len = strlen(menu->frame->title); if (len >= bufSize) return False; if (menu->parent) { ok = getMenuPath(menu->parent, buffer, bufSize - len - 1); if (!ok) return False; } strcat(buffer, "\\"); strcat(buffer, menu->frame->title); return True; } static Bool saveMenuRecurs(WMPropList * menus, WScreen * scr, WMenu * menu) { WMPropList *key; int save_menus = 0, i; char buffer[512]; Bool ok = True; if (menu->flags.brother) menu = menu->brother; if (menu->flags.buttoned && menu != scr->switch_menu) { buffer[0] = '\0'; ok = getMenuPath(menu, buffer, 510); if (ok) { key = WMCreatePLString(buffer); saveMenuInfo(menus, menu, key); WMReleasePropList(key); save_menus = 1; } } if (ok) { for (i = 0; i < menu->cascade_no; i++) { if (saveMenuRecurs(menus, scr, menu->cascades[i])) save_menus = 1; } } return save_menus; } #define COMPLAIN(key) wwarning(_("bad value in menus state info: %s"), key) static Bool getMenuInfo(WMPropList * info, int *x, int *y, Bool * lowered) { WMPropList *pos; *lowered = False; if (WMIsPLArray(info)) { WMPropList *flags; pos = WMGetFromPLArray(info, 0); flags = WMGetFromPLArray(info, 1); if (flags != NULL && WMIsPLString(flags) && WMGetFromPLString(flags) != NULL && strcmp(WMGetFromPLString(flags), "lowered") == 0) { *lowered = True; } } else { pos = info; } if (pos != NULL && WMIsPLString(pos)) { if (sscanf(WMGetFromPLString(pos), "%i,%i", x, y) != 2) COMPLAIN("Position"); } else { COMPLAIN("(position, flags...)"); return False; } return True; } static int restoreMenu(WScreen *scr, WMPropList *menu) { int x, y; Bool lowered = False; WMenu *pmenu = NULL; if (!menu) return False; if (!getMenuInfo(menu, &x, &y, &lowered)) return False; OpenSwitchMenu(scr, x, y, False); pmenu = scr->switch_menu; if (pmenu) { int width = MENUW(pmenu); int height = MENUH(pmenu); WMRect rect = wGetRectForHead(scr, wGetHeadForPointerLocation(scr)); if (lowered) { changeMenuLevels(pmenu, True); } if (x < rect.pos.x - width) x = rect.pos.x; if (x > rect.pos.x + rect.size.width) x = rect.pos.x + rect.size.width - width; if (y < rect.pos.y) y = rect.pos.y; if (y > rect.pos.y + rect.size.height) y = rect.pos.y + rect.size.height - height; wMenuMove(pmenu, x, y, True); pmenu->flags.buttoned = 1; wFrameWindowShowButton(pmenu->frame, WFF_RIGHT_BUTTON); return True; } return False; } static int restoreMenuRecurs(WScreen *scr, WMPropList *menus, WMenu *menu, const char *path) { WMPropList *key, *entry; char buffer[512]; int i, x, y, res; Bool lowered; if (strlen(path) + strlen(menu->frame->title) > 510) return False; snprintf(buffer, sizeof(buffer), "%s\\%s", path, menu->frame->title); key = WMCreatePLString(buffer); entry = WMGetFromPLDictionary(menus, key); res = False; if (entry && getMenuInfo(entry, &x, &y, &lowered)) { if (!menu->flags.mapped) { int width = MENUW(menu); int height = MENUH(menu); WMRect rect = wGetRectForHead(scr, wGetHeadForPointerLocation(scr)); wMenuMapAt(menu, x, y, False); if (menu->parent) { /* make parent map the copy in place of the original */ for (i = 0; i < menu->parent->cascade_no; i++) { if (menu->parent->cascades[i] == menu) { menu->parent->cascades[i] = menu->brother; break; } } } if (lowered) { changeMenuLevels(menu, True); } if (x < rect.pos.x - width) x = rect.pos.x; if (x > rect.pos.x + rect.size.width) x = rect.pos.x + rect.size.width - width; if (y < rect.pos.y) y = rect.pos.y; if (y > rect.pos.y + rect.size.height) y = rect.pos.y + rect.size.height - height; wMenuMove(menu, x, y, True); menu->flags.buttoned = 1; wFrameWindowShowButton(menu->frame, WFF_RIGHT_BUTTON); res = True; } } WMReleasePropList(key); for (i = 0; i < menu->cascade_no; i++) { if (restoreMenuRecurs(scr, menus, menu->cascades[i], buffer) != False) res = True; } return res; } void wMenuRestoreState(WScreen * scr) { WMPropList *menus, *menu, *key, *skey; if (!scr->session_state) { return; } key = WMCreatePLString("Menus"); menus = WMGetFromPLDictionary(scr->session_state, key); WMReleasePropList(key); if (!menus) return; /* restore menus */ skey = WMCreatePLString("SwitchMenu"); menu = WMGetFromPLDictionary(menus, skey); WMReleasePropList(skey); restoreMenu(scr, menu); if (!scr->root_menu) { OpenRootMenu(scr, scr->scr_width * 2, 0, False); wMenuUnmap(scr->root_menu); } restoreMenuRecurs(scr, menus, scr->root_menu, ""); } ��������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/screen.c���������������������������������������������������������������������0000644�0001750�0001750�00000077177�13431646202�013224� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* screen.c - screen management * * Window Maker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "wconfig.h" #include <stdio.h> #include <stdlib.h> #include <string.h> #include <X11/Xlib.h> #include <X11/Xutil.h> #include <X11/Xatom.h> #ifdef KEEP_XKB_LOCK_STATUS #include <X11/XKBlib.h> #endif /* KEEP_XKB_LOCK_STATUS */ #ifdef USE_RANDR #include <X11/extensions/Xrandr.h> #endif #include <wraster.h> #include "WindowMaker.h" #include "def_pixmaps.h" #include "screen.h" #include "texture.h" #include "pixmap.h" #include "menu.h" #include "window.h" #include "main.h" #include "actions.h" #include "properties.h" #include "dock.h" #include "resources.h" #include "workspace.h" #include "session.h" #include "balloon.h" #include "geomview.h" #include "wmspec.h" #include "rootmenu.h" #include "xinerama.h" #include <WINGs/WUtil.h> #include "defaults.h" #define EVENT_MASK (LeaveWindowMask|EnterWindowMask|PropertyChangeMask\ |SubstructureNotifyMask|PointerMotionMask \ |SubstructureRedirectMask|ButtonPressMask|ButtonReleaseMask\ |KeyPressMask|KeyReleaseMask) #ifdef USE_ICCCM_WMREPLACE #define REPLACE_WM_TIMEOUT 15 #endif #define STIPPLE_WIDTH 2 #define STIPPLE_HEIGHT 2 static char STIPPLE_DATA[] = { 0x02, 0x01 }; static int CantManageScreen = 0; static WMPropList *dApplications = NULL; static WMPropList *dWorkspace; static WMPropList *dDock; static WMPropList *dClip; static WMPropList *dDrawers = NULL; static void make_keys(void) { if (dApplications != NULL) return; dApplications = WMCreatePLString("Applications"); dWorkspace = WMCreatePLString("Workspace"); dDock = WMCreatePLString("Dock"); dClip = WMCreatePLString("Clip"); dDrawers = WMCreatePLString("Drawers"); } /* * Support for ICCCM 2.0: Window Manager Replacement protocol * See: http://www.x.org/releases/X11R7.6/doc/xorg-docs/specs/ICCCM/icccm.html * * Basically, user should be able to dynamically change its window manager; this is done * cooperatively through a special Selection ("WM_Sn" where 'n' is the X screen number) * * This function does 2 things: * - it checks if this selection is already owned, which means that another window * manager is running. If it is the case and user specified '--replace' on the command * line, then it asks the WM to shut down; * - when ok, it sets the selection ownership to ourself, so another window manager * may ask us to shut down (this is handled in "event.c") */ static Bool replace_existing_wm(WScreen *scr) { #ifdef USE_ICCCM_WMREPLACE char atomName[16]; Window wm; XSetWindowAttributes attribs; XClientMessageEvent event; unsigned long current_time; int ret; /* Try to acquire the atom named WM_S<screen> */ ret = snprintf(atomName, sizeof(atomName), "WM_S%d", scr->screen); if (ret < 0 || ret == sizeof(atomName)) { werror("out of memory trying to allocate window manager selection atom for screen %d", scr->screen); return False; } scr->sn_atom = XInternAtom(dpy, atomName, False); if (! scr->sn_atom) return False; /* Check if an existing window manager owns the selection */ wm = XGetSelectionOwner(dpy, scr->sn_atom); if (wm) { if (!wPreferences.flags.replace) { wmessage(_("another window manager is running")); wwarning(_("use the --replace flag to replace it")); return False; } attribs.event_mask = StructureNotifyMask; if (!XChangeWindowAttributes(dpy, wm, CWEventMask, &attribs)) wm = None; } #endif /* for our window manager info notice board and the selection owner */ scr->info_window = XCreateSimpleWindow(dpy, scr->root_win, 0, 0, 10, 10, 0, 0, 0); #ifdef USE_ICCCM_WMREPLACE /* Try to acquire the selection */ current_time = CurrentTime; ret = XSetSelectionOwner(dpy, scr->sn_atom, scr->info_window, current_time); if (ret == BadAtom || ret == BadWindow) return False; /* Wait for other window manager to exit */ if (wm) { unsigned long wait = 0; unsigned long timeout = REPLACE_WM_TIMEOUT * 1000000L; XEvent event; while (wait < timeout) { if (!(wait % 1000000)) wmessage(_("waiting %lus for other window manager to exit"), (timeout - wait) / 1000000L); if (XCheckWindowEvent(dpy, wm, StructureNotifyMask, &event)) if (event.type == DestroyNotify) break; wusleep(100000); wait += 100000; } if (wait >= timeout) { wwarning(_("other window manager hasn't exited!")); return False; } wmessage(_("replacing the other window manager")); } if (XGetSelectionOwner(dpy, scr->sn_atom) != scr->info_window) return False; event.type = ClientMessage; event.message_type = scr->sn_atom; event.format = 32; event.data.l[0] = (long) current_time; event.data.l[1] = (long) scr->sn_atom; event.data.l[2] = (long) scr->info_window; event.data.l[3] = (long) 0L; event.data.l[4] = (long) 0L; event.window = scr->root_win; XSendEvent(dpy, scr->root_win, False, StructureNotifyMask, (XEvent *) &event); #endif return True; } /* *---------------------------------------------------------------------- * alreadyRunningError-- * X error handler used to catch errors when trying to do * XSelectInput() on the root window. These errors probably mean that * there already is some other window manager running. * * Returns: * Nothing, unless something really evil happens... * * Side effects: * CantManageScreen is set to 1; *---------------------------------------------------------------------- */ static int alreadyRunningError(Display * dpy, XErrorEvent * error) { /* Parameter not used, but tell the compiler that it is ok */ (void) dpy; (void) error; CantManageScreen = 1; return -1; } /* *---------------------------------------------------------------------- * allocButtonPixmaps-- * Allocate pixmaps used on window operation buttons (those in the * titlebar). The pixmaps are linked to the program. If XPM is supported * XPM pixmaps are used otherwise, equivalent bitmaps are used. * * Returns: * Nothing * * Side effects: * Allocates shared pixmaps for the screen. These pixmaps should * not be freed by anybody. *---------------------------------------------------------------------- */ static void allocButtonPixmaps(WScreen * scr) { WPixmap *pix; /* create predefined pixmaps */ if (wPreferences.new_style == TS_NEXT) { pix = wPixmapCreateFromXPMData(scr, NEXT_CLOSE_XPM); } else { pix = wPixmapCreateFromXPMData(scr, PRED_CLOSE_XPM); } if (pix) pix->shared = 1; scr->b_pixmaps[WBUT_CLOSE] = pix; if (wPreferences.new_style == TS_NEXT) { pix = wPixmapCreateFromXPMData(scr, NEXT_BROKEN_CLOSE_XPM); } else { pix = wPixmapCreateFromXPMData(scr, PRED_BROKEN_CLOSE_XPM); } if (pix) pix->shared = 1; scr->b_pixmaps[WBUT_BROKENCLOSE] = pix; if (wPreferences.new_style == TS_NEXT) { pix = wPixmapCreateFromXPMData(scr, NEXT_ICONIFY_XPM); } else { pix = wPixmapCreateFromXPMData(scr, PRED_ICONIFY_XPM); } if (pix) pix->shared = 1; scr->b_pixmaps[WBUT_ICONIFY] = pix; #ifdef XKB_BUTTON_HINT if (wPreferences.new_style == TS_NEXT) { pix = wPixmapCreateFromXPMData(scr, NEXT_XKBGROUP1_XPM); } else { pix = wPixmapCreateFromXPMData(scr, PRED_XKBGROUP1_XPM); } if (pix) pix->shared = 1; scr->b_pixmaps[WBUT_XKBGROUP1] = pix; if (wPreferences.new_style == TS_NEXT) { pix = wPixmapCreateFromXPMData(scr, NEXT_XKBGROUP2_XPM); } else { pix = wPixmapCreateFromXPMData(scr, PRED_XKBGROUP2_XPM); } if (pix) pix->shared = 1; scr->b_pixmaps[WBUT_XKBGROUP2] = pix; if (wPreferences.new_style == TS_NEXT) { pix = wPixmapCreateFromXPMData(scr, NEXT_XKBGROUP3_XPM); } else { pix = wPixmapCreateFromXPMData(scr, PRED_XKBGROUP3_XPM); } if (pix) pix->shared = 1; scr->b_pixmaps[WBUT_XKBGROUP3] = pix; if (wPreferences.new_style == TS_NEXT) { pix = wPixmapCreateFromXPMData(scr, NEXT_XKBGROUP4_XPM); } else { pix = wPixmapCreateFromXPMData(scr, PRED_XKBGROUP4_XPM); } if (pix) pix->shared = 1; scr->b_pixmaps[WBUT_XKBGROUP4] = pix; #endif if (wPreferences.new_style == TS_NEXT) { pix = wPixmapCreateFromXPMData(scr, NEXT_KILL_XPM); } else { pix = wPixmapCreateFromXPMData(scr, PRED_KILL_XPM); } if (pix) pix->shared = 1; scr->b_pixmaps[WBUT_KILL] = pix; } static void draw_dot(WScreen * scr, Drawable d, int x, int y, GC gc) { XSetForeground(dpy, gc, scr->black_pixel); XDrawLine(dpy, d, gc, x, y, x + 1, y); XDrawPoint(dpy, d, gc, x, y + 1); XSetForeground(dpy, gc, scr->white_pixel); XDrawLine(dpy, d, gc, x + 2, y, x + 2, y + 1); XDrawPoint(dpy, d, gc, x + 1, y + 1); } static WPixmap *make3Dots(WScreen * scr) { WPixmap *wpix; GC gc2, gc; XGCValues gcv; Pixmap pix, mask; gc = scr->copy_gc; pix = XCreatePixmap(dpy, scr->w_win, wPreferences.icon_size, wPreferences.icon_size, scr->w_depth); XSetForeground(dpy, gc, scr->black_pixel); XFillRectangle(dpy, pix, gc, 0, 0, wPreferences.icon_size, wPreferences.icon_size); XSetForeground(dpy, gc, scr->white_pixel); draw_dot(scr, pix, 4, wPreferences.icon_size - 6, gc); draw_dot(scr, pix, 9, wPreferences.icon_size - 6, gc); draw_dot(scr, pix, 14, wPreferences.icon_size - 6, gc); mask = XCreatePixmap(dpy, scr->w_win, wPreferences.icon_size, wPreferences.icon_size, 1); gcv.foreground = 0; gcv.graphics_exposures = False; gc2 = XCreateGC(dpy, mask, GCForeground | GCGraphicsExposures, &gcv); XFillRectangle(dpy, mask, gc2, 0, 0, wPreferences.icon_size, wPreferences.icon_size); XSetForeground(dpy, gc2, 1); XFillRectangle(dpy, mask, gc2, 4, wPreferences.icon_size - 6, 3, 2); XFillRectangle(dpy, mask, gc2, 9, wPreferences.icon_size - 6, 3, 2); XFillRectangle(dpy, mask, gc2, 14, wPreferences.icon_size - 6, 3, 2); XFreeGC(dpy, gc2); wpix = wPixmapCreate(pix, mask); wpix->shared = 1; return wpix; } static void allocGCs(WScreen * scr) { XGCValues gcv; XColor color; int gcm; scr->stipple_bitmap = XCreateBitmapFromData(dpy, scr->w_win, STIPPLE_DATA, STIPPLE_WIDTH, STIPPLE_HEIGHT); gcv.stipple = scr->stipple_bitmap; gcv.foreground = scr->white_pixel; gcv.fill_style = FillStippled; gcv.graphics_exposures = False; gcm = GCForeground | GCStipple | GCFillStyle | GCGraphicsExposures; scr->stipple_gc = XCreateGC(dpy, scr->w_win, gcm, &gcv); /* selected icon border GCs */ gcv.function = GXcopy; gcv.foreground = scr->white_pixel; gcv.background = scr->black_pixel; gcv.line_width = 1; gcv.line_style = LineDoubleDash; gcv.fill_style = FillSolid; gcv.dash_offset = 0; gcv.dashes = 4; gcv.graphics_exposures = False; gcm = GCFunction | GCGraphicsExposures; gcm |= GCForeground | GCBackground; gcm |= GCLineWidth | GCLineStyle; gcm |= GCFillStyle; gcm |= GCDashOffset | GCDashList; scr->icon_select_gc = XCreateGC(dpy, scr->w_win, gcm, &gcv); scr->menu_title_color[0] = WMRetainColor(scr->white); /* don't retain scr->black here because we may alter its alpha */ scr->mtext_color = WMCreateRGBColor(scr->wmscreen, 0, 0, 0, True); scr->dtext_color = WMCreateRGBColor(scr->wmscreen, 0, 0, 0, True); /* frame GC */ wGetColor(scr, DEF_FRAME_COLOR, &color); gcv.function = GXxor; /* this will raise the probability of the XORed color being different * of the original color in PseudoColor when not all color cells are * initialized */ if (DefaultVisual(dpy, scr->screen)->class == PseudoColor) gcv.plane_mask = (1 << (scr->depth - 1)) | 1; else gcv.plane_mask = AllPlanes; gcv.foreground = color.pixel; if (gcv.foreground == 0) gcv.foreground = 1; gcv.line_width = DEF_FRAME_THICKNESS; gcv.subwindow_mode = IncludeInferiors; gcv.graphics_exposures = False; scr->frame_gc = XCreateGC(dpy, scr->root_win, GCForeground | GCGraphicsExposures | GCFunction | GCSubwindowMode | GCLineWidth | GCPlaneMask, &gcv); /* line GC */ gcv.foreground = color.pixel; if (gcv.foreground == 0) /* XOR:ing with a zero is not going to be of much use, so in that case, we somewhat arbitrarily xor with 17 instead. */ gcv.foreground = 17; gcv.function = GXxor; gcv.subwindow_mode = IncludeInferiors; gcv.line_width = 1; gcv.cap_style = CapRound; gcv.graphics_exposures = False; gcm = GCForeground | GCFunction | GCSubwindowMode | GCLineWidth | GCCapStyle | GCGraphicsExposures; scr->line_gc = XCreateGC(dpy, scr->root_win, gcm, &gcv); scr->line_pixel = gcv.foreground; /* copy GC */ gcv.foreground = scr->white_pixel; gcv.background = scr->black_pixel; gcv.graphics_exposures = False; scr->copy_gc = XCreateGC(dpy, scr->w_win, GCForeground | GCBackground | GCGraphicsExposures, &gcv); /* misc drawing GC */ gcv.graphics_exposures = False; gcm = GCGraphicsExposures; scr->draw_gc = XCreateGC(dpy, scr->w_win, gcm, &gcv); assert(scr->stipple_bitmap != None); /* mono GC */ scr->mono_gc = XCreateGC(dpy, scr->stipple_bitmap, gcm, &gcv); } static void createPixmaps(WScreen * scr) { WPixmap *pix; /* load pixmaps */ pix = wPixmapCreateFromXBMData(scr, (char *)MENU_RADIO_INDICATOR_XBM_DATA, (char *)MENU_RADIO_INDICATOR_XBM_DATA, MENU_RADIO_INDICATOR_XBM_SIZE, MENU_RADIO_INDICATOR_XBM_SIZE, scr->black_pixel, scr->white_pixel); if (pix != NULL) pix->shared = 1; scr->menu_radio_indicator = pix; pix = wPixmapCreateFromXBMData(scr, (char *)MENU_CHECK_INDICATOR_XBM_DATA, (char *)MENU_CHECK_INDICATOR_XBM_DATA, MENU_CHECK_INDICATOR_XBM_SIZE, MENU_CHECK_INDICATOR_XBM_SIZE, scr->black_pixel, scr->white_pixel); if (pix != NULL) pix->shared = 1; scr->menu_check_indicator = pix; pix = wPixmapCreateFromXBMData(scr, (char *)MENU_MINI_INDICATOR_XBM_DATA, (char *)MENU_MINI_INDICATOR_XBM_DATA, MENU_MINI_INDICATOR_XBM_SIZE, MENU_MINI_INDICATOR_XBM_SIZE, scr->black_pixel, scr->white_pixel); if (pix != NULL) pix->shared = 1; scr->menu_mini_indicator = pix; pix = wPixmapCreateFromXBMData(scr, (char *)MENU_HIDE_INDICATOR_XBM_DATA, (char *)MENU_HIDE_INDICATOR_XBM_DATA, MENU_HIDE_INDICATOR_XBM_SIZE, MENU_HIDE_INDICATOR_XBM_SIZE, scr->black_pixel, scr->white_pixel); if (pix != NULL) pix->shared = 1; scr->menu_hide_indicator = pix; pix = wPixmapCreateFromXBMData(scr, (char *)MENU_SHADE_INDICATOR_XBM_DATA, (char *)MENU_SHADE_INDICATOR_XBM_DATA, MENU_SHADE_INDICATOR_XBM_SIZE, MENU_SHADE_INDICATOR_XBM_SIZE, scr->black_pixel, scr->white_pixel); if (pix != NULL) pix->shared = 1; scr->menu_shade_indicator = pix; create_logo_image(scr); scr->dock_dots = make3Dots(scr); /* titlebar button pixmaps */ allocButtonPixmaps(scr); } void create_logo_image(WScreen *scr) { RImage *image = get_icon_image(scr, "Logo", "WMPanel", 128); if (!image) { wwarning(_("could not load logo image for panels: %s"), RMessageForError(RErrorCode)); } else { WMSetApplicationIconImage(scr->wmscreen, image); RReleaseImage(image); } } /* *---------------------------------------------------------------------- * createInternalWindows-- * Creates some windows used internally by the program. One to * receive input focus when no other window can get it and another * to display window geometry information during window resize/move. * * Returns: * Nothing * * Side effects: * Windows are created and some colors are allocated for the * window background. *---------------------------------------------------------------------- */ static void createInternalWindows(WScreen * scr) { int vmask; XSetWindowAttributes attribs; /* InputOnly window to get the focus when no other window can get it */ vmask = CWEventMask | CWOverrideRedirect; attribs.event_mask = KeyPressMask | FocusChangeMask; attribs.override_redirect = True; scr->no_focus_win = XCreateWindow(dpy, scr->root_win, -10, -10, 4, 4, 0, 0, InputOnly, CopyFromParent, vmask, &attribs); XSelectInput(dpy, scr->no_focus_win, KeyPressMask | KeyReleaseMask); XMapWindow(dpy, scr->no_focus_win); XSetInputFocus(dpy, scr->no_focus_win, RevertToParent, CurrentTime); /* shadow window for dock buttons */ vmask = CWBorderPixel | CWBackPixmap | CWBackPixel | CWCursor | CWSaveUnder | CWOverrideRedirect; attribs.border_pixel = scr->black_pixel; attribs.save_under = True; attribs.override_redirect = True; attribs.background_pixmap = None; attribs.background_pixel = scr->white_pixel; attribs.cursor = wPreferences.cursor[WCUR_NORMAL]; vmask |= CWColormap; attribs.colormap = scr->w_colormap; scr->dock_shadow = XCreateWindow(dpy, scr->root_win, 0, 0, wPreferences.icon_size, wPreferences.icon_size, 0, scr->w_depth, CopyFromParent, scr->w_visual, vmask, &attribs); /* workspace name */ vmask = CWBackPixel | CWSaveUnder | CWOverrideRedirect | CWColormap | CWBorderPixel; attribs.save_under = True; attribs.override_redirect = True; attribs.colormap = scr->w_colormap; attribs.background_pixel = scr->icon_back_texture->normal.pixel; attribs.border_pixel = 0; /* do not care */ scr->workspace_name = XCreateWindow(dpy, scr->root_win, 0, 0, 10, 10, 0, scr->w_depth, CopyFromParent, scr->w_visual, vmask, &attribs); } /* *---------------------------------------------------------------------- * wScreenInit-- * Initializes the window manager for the given screen and * allocates a WScreen descriptor for it. Many resources are allocated * for the screen and the root window is setup appropriately. * * Returns: * The WScreen descriptor for the screen. * * Side effects: * Many resources are allocated and the IconSize property is * set on the root window. * The program can be aborted if some fatal error occurs. * * TODO: User specifiable visual. *---------------------------------------------------------------------- */ WScreen *wScreenInit(int screen_number) { WScreen *scr; XIconSize icon_size[1]; RContextAttributes rattr; long event_mask; XErrorHandler oldHandler; int i; scr = wmalloc(sizeof(WScreen)); scr->stacking_list = WMCreateTreeBag(); /* initialize globals */ scr->screen = screen_number; scr->root_win = RootWindow(dpy, screen_number); scr->depth = DefaultDepth(dpy, screen_number); scr->colormap = DefaultColormap(dpy, screen_number); scr->scr_width = WidthOfScreen(ScreenOfDisplay(dpy, screen_number)); scr->scr_height = HeightOfScreen(ScreenOfDisplay(dpy, screen_number)); wInitXinerama(scr); scr->usableArea = (WArea *) wmalloc(sizeof(WArea) * wXineramaHeads(scr)); scr->totalUsableArea = (WArea *) wmalloc(sizeof(WArea) * wXineramaHeads(scr)); for (i = 0; i < wXineramaHeads(scr); ++i) { WMRect rect = wGetRectForHead(scr, i); scr->usableArea[i].x1 = scr->totalUsableArea[i].x1 = rect.pos.x; scr->usableArea[i].y1 = scr->totalUsableArea[i].y1 = rect.pos.y; scr->usableArea[i].x2 = scr->totalUsableArea[i].x2 = rect.pos.x + rect.size.width; scr->usableArea[i].y2 = scr->totalUsableArea[i].y2 = rect.pos.y + rect.size.height; } scr->fakeGroupLeaders = WMCreateArray(16); CantManageScreen = 0; oldHandler = XSetErrorHandler(alreadyRunningError); /* Do we need to replace an existing window manager? */ if (!replace_existing_wm(scr)) { XDestroyWindow(dpy, scr->info_window); wfree(scr); return NULL; } event_mask = EVENT_MASK; XSelectInput(dpy, scr->root_win, event_mask); #ifdef KEEP_XKB_LOCK_STATUS /* Only GroupLock doesn't work correctly in my system since right-alt * can change mode while holding it too - ]d */ if (w_global.xext.xkb.supported) { XkbSelectEvents(dpy, XkbUseCoreKbd, XkbStateNotifyMask, XkbStateNotifyMask); } #endif /* KEEP_XKB_LOCK_STATUS */ #ifdef USE_RANDR if (w_global.xext.randr.supported) XRRSelectInput(dpy, scr->root_win, RRScreenChangeNotifyMask); #endif XSync(dpy, False); XSetErrorHandler(oldHandler); if (CantManageScreen) { wfree(scr); return NULL; } XDefineCursor(dpy, scr->root_win, wPreferences.cursor[WCUR_ROOT]); /* screen descriptor for raster graphic library */ rattr.flags = RC_RenderMode | RC_ColorsPerChannel | RC_StandardColormap; rattr.render_mode = wPreferences.no_dithering ? RBestMatchRendering : RDitheredRendering; /* if the std colormap stuff works ok, this will be ignored */ rattr.colors_per_channel = wPreferences.cmap_size; if (rattr.colors_per_channel < 2) rattr.colors_per_channel = 2; /* Use standard colormap */ rattr.standard_colormap_mode = RUseStdColormap; if (getWVisualID(screen_number) >= 0) { rattr.flags |= RC_VisualID; rattr.visualid = getWVisualID(screen_number); } scr->rcontext = RCreateContext(dpy, screen_number, &rattr); if (!scr->rcontext && RErrorCode == RERR_STDCMAPFAIL) { wwarning("%s", RMessageForError(RErrorCode)); rattr.flags &= ~RC_StandardColormap; rattr.standard_colormap_mode = RUseStdColormap; scr->rcontext = RCreateContext(dpy, screen_number, &rattr); } if (scr->rcontext == NULL) { wfatal(_("can't create Context on screen %d, %s"), screen_number, RMessageForError(RErrorCode)); goto abort_no_context; } scr->w_win = scr->rcontext->drawable; scr->w_visual = scr->rcontext->visual; scr->w_depth = scr->rcontext->depth; scr->w_colormap = scr->rcontext->cmap; /* create screen descriptor for WINGs */ scr->wmscreen = WMCreateScreenWithRContext(dpy, screen_number, scr->rcontext); if (!scr->wmscreen) { wfatal(_("could not initialize WINGs widget set")); RDestroyContext(scr->rcontext); abort_no_context: WMFreeArray(scr->fakeGroupLeaders); wfree(scr->totalUsableArea); wfree(scr->usableArea); WMFreeBag(scr->stacking_list); wfree(scr); return NULL; } scr->black = WMBlackColor(scr->wmscreen); scr->white = WMWhiteColor(scr->wmscreen); scr->gray = WMGrayColor(scr->wmscreen); scr->darkGray = WMDarkGrayColor(scr->wmscreen); scr->black_pixel = WMColorPixel(scr->black); /*scr->rcontext->black; */ scr->white_pixel = WMColorPixel(scr->white); /*scr->rcontext->white; */ scr->light_pixel = WMColorPixel(scr->gray); scr->dark_pixel = WMColorPixel(scr->darkGray); /* create GCs with default values */ allocGCs(scr); /* read defaults for this screen */ wReadDefaults(scr, w_global.domain.wmaker->dictionary); { XColor xcol; /* frame boder color */ wGetColor(scr, WMGetColorRGBDescription(scr->frame_border_color), &xcol); scr->frame_border_pixel = xcol.pixel; wGetColor(scr, WMGetColorRGBDescription(scr->frame_focused_border_color), &xcol); scr->frame_focused_border_pixel = xcol.pixel; wGetColor(scr, WMGetColorRGBDescription(scr->frame_selected_border_color), &xcol); scr->frame_selected_border_pixel = xcol.pixel; } createInternalWindows(scr); wNETWMInitStuff(scr); /* create initial workspace */ wWorkspaceNew(scr); /* create shared pixmaps */ createPixmaps(scr); /* set icon sizes we can accept from clients */ icon_size[0].min_width = 8; icon_size[0].min_height = 8; icon_size[0].max_width = wPreferences.icon_size - 4; icon_size[0].max_height = wPreferences.icon_size - 4; icon_size[0].width_inc = 1; icon_size[0].height_inc = 1; XSetIconSizes(dpy, scr->root_win, icon_size, 1); /* setup WindowMaker protocols property in the root window */ PropSetWMakerProtocols(scr->root_win); /* setup our noticeboard */ XChangeProperty(dpy, scr->info_window, w_global.atom.wmaker.noticeboard, XA_WINDOW, 32, PropModeReplace, (unsigned char *)&scr->info_window, 1); XChangeProperty(dpy, scr->root_win, w_global.atom.wmaker.noticeboard, XA_WINDOW, 32, PropModeReplace, (unsigned char *)&scr->info_window, 1); #ifdef BALLOON_TEXT /* initialize balloon text stuff */ wBalloonInitialize(scr); #endif scr->info_text_font = WMBoldSystemFontOfSize(scr->wmscreen, 12); scr->tech_draw_font = XLoadQueryFont(dpy, "-adobe-helvetica-bold-r-*-*-12-*-*-*-*-*-*-*"); if (!scr->tech_draw_font) scr->tech_draw_font = XLoadQueryFont(dpy, "fixed"); scr->gview = WCreateGeometryView(scr->wmscreen); WMRealizeWidget(scr->gview); wScreenUpdateUsableArea(scr); return scr; } void wScreenUpdateUsableArea(WScreen *scr) { /* * scr->totalUsableArea[] will become the usableArea used for Windowplacement, * scr->usableArea[] will be used for iconplacement, hence no iconyard nor * border. */ WArea area; int i; unsigned long tmp_area, best_area = 0; unsigned int size = wPreferences.workspace_border_size; unsigned int position = wPreferences.workspace_border_position; for (i = 0; i < wXineramaHeads(scr); ++i) { WMRect rect = wGetRectForHead(scr, i); scr->totalUsableArea[i].x1 = rect.pos.x; scr->totalUsableArea[i].y1 = rect.pos.y; scr->totalUsableArea[i].x2 = rect.pos.x + rect.size.width; scr->totalUsableArea[i].y2 = rect.pos.y + rect.size.height; if (wNETWMGetUsableArea(scr, i, &area)) { scr->totalUsableArea[i].x1 = WMAX(scr->totalUsableArea[i].x1, area.x1); scr->totalUsableArea[i].y1 = WMAX(scr->totalUsableArea[i].y1, area.y1); scr->totalUsableArea[i].x2 = WMIN(scr->totalUsableArea[i].x2, area.x2); scr->totalUsableArea[i].y2 = WMIN(scr->totalUsableArea[i].y2, area.y2); } scr->usableArea[i] = scr->totalUsableArea[i]; if (wPreferences.no_window_over_icons) { if (wPreferences.icon_yard & IY_VERT) { if (wPreferences.icon_yard & IY_RIGHT) scr->totalUsableArea[i].x2 -= wPreferences.icon_size; else scr->totalUsableArea[i].x1 += wPreferences.icon_size; } else { if (wPreferences.icon_yard & IY_TOP) scr->totalUsableArea[i].y1 += wPreferences.icon_size; else scr->totalUsableArea[i].y2 -= wPreferences.icon_size; } } if (scr->totalUsableArea[i].x2 - scr->totalUsableArea[i].x1 < rect.size.width / 2) { scr->totalUsableArea[i].x1 = rect.pos.x; scr->totalUsableArea[i].x2 = rect.pos.x + rect.size.width; } if (scr->totalUsableArea[i].y2 - scr->totalUsableArea[i].y1 < rect.size.height / 2) { scr->totalUsableArea[i].y1 = rect.pos.y; scr->totalUsableArea[i].y2 = rect.pos.y + rect.size.height; } tmp_area = (scr->totalUsableArea[i].x2 - scr->totalUsableArea[i].x1) * (scr->totalUsableArea[i].y2 - scr->totalUsableArea[i].y1); if (tmp_area > best_area) { best_area = tmp_area; area = scr->totalUsableArea[i]; } if (size > 0 && position != WB_NONE) { if (position & WB_LEFTRIGHT) { scr->totalUsableArea[i].x1 += size; scr->totalUsableArea[i].x2 -= size; } if (position & WB_TOPBOTTOM) { scr->totalUsableArea[i].y1 += size; scr->totalUsableArea[i].y2 -= size; } } } if (wPreferences.auto_arrange_icons) wArrangeIcons(scr, True); } void wScreenRestoreState(WScreen * scr) { WMPropList *state; char *path; OpenRootMenu(scr, -10000, -10000, False); wMenuUnmap(scr->root_menu); make_keys(); if (w_global.screen_count == 1) { path = wdefaultspathfordomain("WMState"); } else { char buf[16]; snprintf(buf, sizeof(buf), "WMState.%i", scr->screen); path = wdefaultspathfordomain(buf); } scr->session_state = WMReadPropListFromFile(path); wfree(path); if (!scr->session_state && w_global.screen_count > 1) { path = wdefaultspathfordomain("WMState"); scr->session_state = WMReadPropListFromFile(path); wfree(path); } if (!scr->session_state) scr->session_state = WMCreatePLDictionary(NULL, NULL); if (!wPreferences.flags.nodock) { state = WMGetFromPLDictionary(scr->session_state, dDock); scr->dock = wDockRestoreState(scr, state, WM_DOCK); } if (!wPreferences.flags.noclip) { state = WMGetFromPLDictionary(scr->session_state, dClip); scr->clip_icon = wClipRestoreState(scr, state); } if (!wPreferences.flags.nodrawer) { if (!scr->dock->on_right_side) { /* Drawer tile was created early in wScreenInit() -> wReadDefaults(). At * that time, scr->dock was NULL and the tile was created as if we were on * the right side. If we aren't, redo it now. */ assert(scr->drawer_tile); RReleaseImage(scr->drawer_tile); scr->drawer_tile = wDrawerMakeTile(scr, scr->icon_tile); } wDrawersRestoreState(scr); } wWorkspaceRestoreState(scr); wScreenUpdateUsableArea(scr); } void wScreenSaveState(WScreen * scr) { WWindow *wwin; char *str; WMPropList *old_state, *foo; make_keys(); /* save state of windows */ wwin = scr->focused_window; while (wwin) { wWindowSaveState(wwin); wwin = wwin->prev; } if (wPreferences.flags.noupdates) return; old_state = scr->session_state; scr->session_state = WMCreatePLDictionary(NULL, NULL); WMPLSetCaseSensitive(True); /* save dock state to file */ if (!wPreferences.flags.nodock) { wDockSaveState(scr, old_state); } else { foo = WMGetFromPLDictionary(old_state, dDock); if (foo != NULL) WMPutInPLDictionary(scr->session_state, dDock, foo); } if (!wPreferences.flags.noclip) { wClipSaveState(scr); } else { foo = WMGetFromPLDictionary(old_state, dClip); if (foo != NULL) WMPutInPLDictionary(scr->session_state, dClip, foo); } wWorkspaceSaveState(scr, old_state); if (!wPreferences.flags.nodrawer) { wDrawersSaveState(scr); } else { foo = WMGetFromPLDictionary(old_state, dDrawers); if (foo != NULL) WMPutInPLDictionary(scr->session_state, dDrawers, foo); } if (wPreferences.save_session_on_exit) { wSessionSaveState(scr); } else { foo = WMGetFromPLDictionary(old_state, dApplications); if (foo != NULL) WMPutInPLDictionary(scr->session_state, dApplications, foo); foo = WMGetFromPLDictionary(old_state, dWorkspace); if (foo != NULL) WMPutInPLDictionary(scr->session_state, dWorkspace, foo); } /* clean up */ WMPLSetCaseSensitive(False); wMenuSaveState(scr); if (w_global.screen_count == 1) { str = wdefaultspathfordomain("WMState"); } else { char buf[16]; snprintf(buf, sizeof(buf), "WMState.%i", scr->screen); str = wdefaultspathfordomain(buf); } if (!WMWritePropListToFile(scr->session_state, str)) { werror(_("could not save session state in %s"), str); } wfree(str); WMReleasePropList(old_state); } int wScreenBringInside(WScreen * scr, int *x, int *y, int width, int height) { int moved = 0; int tol_w, tol_h; /* * With respect to the head that contains most of the window. */ int sx1, sy1, sx2, sy2; WMRect rect; int head, flags; rect.pos.x = *x; rect.pos.y = *y; rect.size.width = width; rect.size.height = height; head = wGetRectPlacementInfo(scr, rect, &flags); rect = wGetRectForHead(scr, head); sx1 = rect.pos.x; sy1 = rect.pos.y; sx2 = sx1 + rect.size.width; sy2 = sy1 + rect.size.height; #if 0 /* NOTE: gives funky group movement */ if (flags & XFLAG_MULTIPLE) { /* * since we span multiple heads, pull window totaly inside */ if (*x < sx1) *x = sx1, moved = 1; else if (*x + width > sx2) *x = sx2 - width, moved = 1; if (*y < sy1) *y = sy1, moved = 1; else if (*y + height > sy2) *y = sy2 - height, moved = 1; return moved; } #endif if (width > 20) tol_w = width / 2; else tol_w = 20; if (height > 20) tol_h = height / 2; else tol_h = 20; if (*x + width < sx1 + 10) *x = sx1 - tol_w, moved = 1; else if (*x >= sx2 - 10) *x = sx2 - tol_w - 1, moved = 1; if (*y < sy1 - height + 10) *y = sy1 - tol_h, moved = 1; else if (*y >= sy2 - 10) *y = sy2 - tol_h - 1, moved = 1; return moved; } int wScreenKeepInside(WScreen * scr, int *x, int *y, int width, int height) { int moved = 0; int sx1, sy1, sx2, sy2; WMRect rect; int head; rect.pos.x = *x; rect.pos.y = *y; rect.size.width = width; rect.size.height = height; head = wGetHeadForRect(scr, rect); rect = wGetRectForHead(scr, head); sx1 = rect.pos.x; sy1 = rect.pos.y; sx2 = sx1 + rect.size.width; sy2 = sy1 + rect.size.height; if (*x < sx1) *x = sx1, moved = 1; else if (*x + width > sx2) *x = sx2 - width, moved = 1; if (*y < sy1) *y = sy1, moved = 1; else if (*y + height > sy2) *y = sy2 - height, moved = 1; return moved; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/switchpanel.h����������������������������������������������������������������0000644�0001750�0001750�00000002523�13431646202�014252� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2004 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef _SWITCHPANEL_H_ #define _SWITCHPANEL_H_ typedef struct SwitchPanel WSwitchPanel; WSwitchPanel *wInitSwitchPanel(WScreen *scr, WWindow *curwin, Bool class_only); void wSwitchPanelDestroy(WSwitchPanel *panel); WWindow *wSwitchPanelSelectNext(WSwitchPanel *panel, int back, int ignore_minimized, Bool class_only); WWindow *wSwitchPanelSelectFirst(WSwitchPanel *panel, int back); WWindow *wSwitchPanelHandleEvent(WSwitchPanel *panel, XEvent *event); Window wSwitchPanelGetWindow(WSwitchPanel *swpanel); #endif /* _SWITCHPANEL_H_ */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/usermenu.h�������������������������������������������������������������������0000644�0001750�0001750�00000002122�13431646202�013567� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* usermenu.h- user defined menu * * Window Maker window manager * * Copyright (c) hmmm... Should I put everybody's name here? * Where's my lawyer?? -- ]d :D * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifdef USER_MENU #ifndef _WUSERMENU_H_ #define _WUSERMENU_H_ WMenu *wUserMenuGet(WScreen *scr, WWindow *wwin); void wUserMenuRefreshInstances(WMenu *menu, WWindow *wwin); #endif #endif /* USER_MENU */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/geomview.c�������������������������������������������������������������������0000644�0001750�0001750�00000005426�13431646202�013553� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include <WINGs/WINGsP.h> #include "geomview.h" struct W_GeometryView { W_Class widgetClass; WMView *view; WMColor *color; WMColor *bgColor; WMFont *font; WMSize textSize; union { struct { int x, y; } pos; struct { unsigned width, height; } size; } data; unsigned showPosition:1; }; static void handleEvents(XEvent * event, void *clientData); static void paint(WGeometryView * gview); WGeometryView *WCreateGeometryView(WMScreen * scr) { WGeometryView *gview; char buffer[64]; static W_Class widgetClass = 0; if (!widgetClass) { widgetClass = W_RegisterUserWidget(); } gview = malloc(sizeof(WGeometryView)); if (!gview) { return NULL; } memset(gview, 0, sizeof(WGeometryView)); gview->widgetClass = widgetClass; gview->view = W_CreateTopView(scr); if (!gview->view) { wfree(gview); return NULL; } gview->view->self = gview; gview->font = WMSystemFontOfSize(scr, 12); if (!gview->font) { W_DestroyView(gview->view); wfree(gview); return NULL; } gview->bgColor = WMCreateRGBColor(scr, 0x3333, 0x6666, 0x9999, True); gview->color = WMWhiteColor(scr); WMCreateEventHandler(gview->view, ExposureMask, handleEvents, gview); snprintf(buffer, sizeof(buffer), "%+05i, %+05i", 0, 0); gview->textSize.width = WMWidthOfString(gview->font, buffer, strlen(buffer)); gview->textSize.height = WMFontHeight(gview->font); WMSetWidgetBackgroundColor(gview, gview->bgColor); W_ResizeView(gview->view, gview->textSize.width + 8, gview->textSize.height + 6); return gview; } void WSetGeometryViewShownPosition(WGeometryView * gview, int x, int y) { gview->showPosition = 1; gview->data.pos.x = x; gview->data.pos.y = y; paint(gview); } void WSetGeometryViewShownSize(WGeometryView * gview, unsigned width, unsigned height) { gview->showPosition = 0; gview->data.size.width = width; gview->data.size.height = height; paint(gview); } static void paint(WGeometryView * gview) { char buffer[64]; if (gview->showPosition) { snprintf(buffer, sizeof(buffer), "%+5i , %+5i ", gview->data.pos.x, gview->data.pos.y); } else { snprintf(buffer, sizeof(buffer), "%+5i x %+5i ", gview->data.size.width, gview->data.size.height); } WMDrawImageString(W_VIEW_SCREEN(gview->view), W_VIEW_DRAWABLE(gview->view), gview->color, gview->bgColor, gview->font, (W_VIEW_WIDTH(gview->view) - gview->textSize.width) / 2, (W_VIEW_HEIGHT(gview->view) - gview->textSize.height) / 2, buffer, strlen(buffer)); W_DrawRelief(W_VIEW_SCREEN(gview->view), W_VIEW_DRAWABLE(gview->view), 0, 0, W_VIEW_WIDTH(gview->view), W_VIEW_HEIGHT(gview->view), WRSimple); } static void handleEvents(XEvent * event, void *clientData) { WGeometryView *gview = (WGeometryView *) clientData; switch (event->type) { case Expose: paint(gview); break; } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/misc.c�����������������������������������������������������������������������0000644�0001750�0001750�00000057243�13431646202�012670� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "wconfig.h" #include <X11/Xlib.h> #include <X11/Xutil.h> #include <X11/Xatom.h> #include <sys/stat.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <strings.h> #include <unistd.h> #include <fcntl.h> #include <stdarg.h> #include <pwd.h> #include <math.h> #include <time.h> #include <errno.h> #include <X11/XKBlib.h> #include <WINGs/WUtil.h> #include <wraster.h> #include "window.h" #include "misc.h" #include "WindowMaker.h" #include "GNUstep.h" #include "screen.h" #include "wcore.h" #include "window.h" #include "framewin.h" #include "dialog.h" #include "xutil.h" #include "xmodifier.h" #include "main.h" #include "event.h" #define ICON_SIZE wPreferences.icon_size /**** Local prototypes *****/ static void UnescapeWM_CLASS(const char *str, char **name, char **class); /* XFetchName Wrapper */ Bool wFetchName(Display *dpy, Window win, char **winname) { XTextProperty text_prop; char **list; int num; if (XGetWMName(dpy, win, &text_prop)) { if (text_prop.value && text_prop.nitems > 0) { if (text_prop.encoding == XA_STRING) { *winname = wstrdup((char *)text_prop.value); XFree(text_prop.value); } else { text_prop.nitems = strlen((char *)text_prop.value); if (XmbTextPropertyToTextList(dpy, &text_prop, &list, &num) >= Success && num > 0 && *list) { XFree(text_prop.value); *winname = wstrdup(*list); XFreeStringList(list); } else { *winname = wstrdup((char *)text_prop.value); XFree(text_prop.value); } } } else { /* the title is set, but it was set to none */ *winname = wstrdup(""); } return True; } else { /* the hint is probably not set */ *winname = NULL; return False; } } /* XGetIconName Wrapper */ Bool wGetIconName(Display *dpy, Window win, char **iconname) { XTextProperty text_prop; char **list; int num; if (XGetWMIconName(dpy, win, &text_prop) != 0 && text_prop.value && text_prop.nitems > 0) { if (text_prop.encoding == XA_STRING) *iconname = (char *)text_prop.value; else { text_prop.nitems = strlen((char *)text_prop.value); if (XmbTextPropertyToTextList(dpy, &text_prop, &list, &num) >= Success && num > 0 && *list) { XFree(text_prop.value); *iconname = wstrdup(*list); XFreeStringList(list); } else *iconname = (char *)text_prop.value; } return True; } *iconname = NULL; return False; } static void eatExpose(void) { XEvent event, foo; /* compress all expose events into a single one */ if (XCheckMaskEvent(dpy, ExposureMask, &event)) { /* ignore other exposure events for this window */ while (XCheckWindowEvent(dpy, event.xexpose.window, ExposureMask, &foo)) ; /* eat exposes for other windows */ eatExpose(); event.xexpose.count = 0; XPutBackEvent(dpy, &event); } } void move_window(Window win, int from_x, int from_y, int to_x, int to_y) { #ifdef USE_ANIMATIONS if (wPreferences.no_animations) XMoveWindow(dpy, win, to_x, to_y); else slide_window(win, from_x, from_y, to_x, to_y); #else XMoveWindow(dpy, win, to_x, to_y); /* Tell the compiler it is normal that those parameters are not used in this case */ (void) from_x; (void) from_y; #endif } /* wins is an array of Window, sorted from left to right, the first is * going to be moved from (from_x,from_y) to (to_x,to_y) and the * following windows are going to be offset by (ICON_SIZE*i,0) */ void slide_windows(Window wins[], int n, int from_x, int from_y, int to_x, int to_y) { time_t time0 = time(NULL); float dx, dy, x = from_x, y = from_y, px, py; Bool is_dx_nul, is_dy_nul; int dx_is_bigger = 0, dx_int, dy_int; int slide_delay, slide_steps, slide_slowdown; int i; /* animation parameters */ static const struct { int delay; int steps; int slowdown; } apars[5] = { {ICON_SLIDE_DELAY_UF, ICON_SLIDE_STEPS_UF, ICON_SLIDE_SLOWDOWN_UF}, {ICON_SLIDE_DELAY_F, ICON_SLIDE_STEPS_F, ICON_SLIDE_SLOWDOWN_F}, {ICON_SLIDE_DELAY_M, ICON_SLIDE_STEPS_M, ICON_SLIDE_SLOWDOWN_M}, {ICON_SLIDE_DELAY_S, ICON_SLIDE_STEPS_S, ICON_SLIDE_SLOWDOWN_S}, {ICON_SLIDE_DELAY_US, ICON_SLIDE_STEPS_US, ICON_SLIDE_SLOWDOWN_US} }; slide_slowdown = apars[(int)wPreferences.icon_slide_speed].slowdown; slide_steps = apars[(int)wPreferences.icon_slide_speed].steps; slide_delay = apars[(int)wPreferences.icon_slide_speed].delay; dx_int = to_x - from_x; dy_int = to_y - from_y; is_dx_nul = (dx_int == 0); is_dy_nul = (dy_int == 0); dx = (float) dx_int; dy = (float) dy_int; if (abs(dx_int) > abs(dy_int)) { dx_is_bigger = 1; } if (dx_is_bigger) { px = dx / slide_slowdown; if (px < slide_steps && px > 0) px = slide_steps; else if (px > -slide_steps && px < 0) px = -slide_steps; py = (is_dx_nul ? 0.0F : px * dy / dx); } else { py = dy / slide_slowdown; if (py < slide_steps && py > 0) py = slide_steps; else if (py > -slide_steps && py < 0) py = -slide_steps; px = (is_dy_nul ? 0.0F : py * dx / dy); } while (((int)x) != to_x || ((int)y) != to_y) { x += px; y += py; if ((px < 0 && (int)x < to_x) || (px > 0 && (int)x > to_x)) x = (float)to_x; if ((py < 0 && (int)y < to_y) || (py > 0 && (int)y > to_y)) y = (float)to_y; if (dx_is_bigger) { px = px * (1.0F - 1 / (float)slide_slowdown); if (px < slide_steps && px > 0) px = slide_steps; else if (px > -slide_steps && px < 0) px = -slide_steps; py = (is_dx_nul ? 0.0F : px * dy / dx); } else { py = py * (1.0F - 1 / (float)slide_slowdown); if (py < slide_steps && py > 0) py = slide_steps; else if (py > -slide_steps && py < 0) py = -slide_steps; px = (is_dy_nul ? 0.0F : py * dx / dy); } for (i = 0; i < n; i++) { XMoveWindow(dpy, wins[i], (int)x + i * ICON_SIZE, (int)y); } XFlush(dpy); if (slide_delay > 0) { wusleep(slide_delay * 1000L); } else { wusleep(1000L); } if (time(NULL) - time0 > MAX_ANIMATION_TIME) break; } for (i = 0; i < n; i++) { XMoveWindow(dpy, wins[i], to_x + i * ICON_SIZE, to_y); } XSync(dpy, 0); /* compress expose events */ eatExpose(); } char *ShrinkString(WMFont *font, const char *string, int width) { int w, w1 = 0; int p; char *pos; char *text; int p1, p2, t; p = strlen(string); w = WMWidthOfString(font, string, p); text = wmalloc(strlen(string) + 8); strcpy(text, string); if (w <= width) return text; pos = strchr(text, ' '); if (!pos) pos = strchr(text, ':'); if (pos) { *pos = 0; p = strlen(text); w1 = WMWidthOfString(font, text, p); if (w1 > width) { p = 0; *pos = ' '; *text = 0; } else { *pos = 0; width -= w1; p++; } string += p; p = strlen(string); } else { *text = 0; } strcat(text, "..."); width -= WMWidthOfString(font, "...", 3); p1 = 0; p2 = p; t = (p2 - p1) / 2; while (p2 > p1 && p1 != t) { w = WMWidthOfString(font, &string[p - t], t); if (w > width) { p2 = t; t = p1 + (p2 - p1) / 2; } else if (w < width) { p1 = t; t = p1 + (p2 - p1) / 2; } else p2 = p1 = t; } strcat(text, &string[p - p1]); return text; } char *FindImage(const char *paths, const char *file) { char *tmp, *path = NULL; tmp = strrchr(file, ':'); if (tmp) { *tmp = 0; path = wfindfile(paths, file); *tmp = ':'; } if (!tmp || !path) path = wfindfile(paths, file); return path; } static void timeoutHandler(void *data) { *(int *)data = 1; } static char *getTextSelection(WScreen * screen, Atom selection) { int buffer = -1; switch (selection) { case XA_CUT_BUFFER0: buffer = 0; break; case XA_CUT_BUFFER1: buffer = 1; break; case XA_CUT_BUFFER2: buffer = 2; break; case XA_CUT_BUFFER3: buffer = 3; break; case XA_CUT_BUFFER4: buffer = 4; break; case XA_CUT_BUFFER5: buffer = 5; break; case XA_CUT_BUFFER6: buffer = 6; break; case XA_CUT_BUFFER7: buffer = 7; break; } if (buffer >= 0) { char *data; int size; data = XFetchBuffer(dpy, &size, buffer); return data; } else { char *data; int bits; Atom rtype; unsigned long len, bytes; WMHandlerID timer; int timeout = 0; XEvent ev; static Atom clipboard = 0; if (!clipboard) clipboard = XInternAtom(dpy, "CLIPBOARD", False); XDeleteProperty(dpy, screen->info_window, clipboard); XConvertSelection(dpy, selection, XA_STRING, clipboard, screen->info_window, CurrentTime); timer = WMAddTimerHandler(1000, timeoutHandler, &timeout); while (!XCheckTypedWindowEvent(dpy, screen->info_window, SelectionNotify, &ev) && !timeout) ; if (!timeout) { WMDeleteTimerHandler(timer); } else { wwarning("selection retrieval timed out"); return NULL; } /* nobody owns the selection or the current owner has * nothing to do with what we need */ if (ev.xselection.property == None) { return NULL; } if (XGetWindowProperty(dpy, screen->info_window, clipboard, 0, 1024, False, XA_STRING, &rtype, &bits, &len, &bytes, (unsigned char **)&data) != Success) { return NULL; } if (rtype != XA_STRING || bits != 8) { wwarning("invalid data in text selection"); if (data) XFree(data); return NULL; } return data; } } static char *getselection(WScreen * scr) { char *tmp; tmp = getTextSelection(scr, XA_PRIMARY); if (!tmp) tmp = getTextSelection(scr, XA_CUT_BUFFER0); return tmp; } static char* parseuserinputpart(const char *line, int *ptr, const char *endchars) { int depth = 0, begin; char *value = NULL; begin = ++*ptr; while(line[*ptr] != '\0') { if(line[*ptr] == '(') { ++depth; } else if(depth > 0 && line[*ptr] == ')') { --depth; } else if(depth == 0 && strchr(endchars, line[*ptr]) != NULL) { value = wmalloc(*ptr - begin + 1); strncpy(value, line + begin, *ptr - begin); value[*ptr - begin] = '\0'; break; } ++*ptr; } return value; } static char* getuserinput(WScreen *scr, const char *line, int *ptr, Bool advanced) { char *ret = NULL, *title = NULL, *prompt = NULL, *name = NULL; int rv; if(line[*ptr] == '(') title = parseuserinputpart(line, ptr, ",)"); if(title != NULL && line[*ptr] == ',') prompt = parseuserinputpart(line, ptr, ",)"); if(prompt != NULL && line[*ptr] == ',') name = parseuserinputpart(line, ptr, ")"); if(advanced) rv = wAdvancedInputDialog(scr, title ? _(title):_("Program Arguments"), prompt ? _(prompt):_("Enter command arguments:"), name, &ret); else rv = wInputDialog(scr, title ? _(title):_("Program Arguments"), prompt ? _(prompt):_("Enter command arguments:"), &ret); if(title) wfree(title); if(prompt) wfree(prompt); if(name) wfree(name); return rv ? ret : NULL; } #define S_NORMAL 0 #define S_ESCAPE 1 #define S_OPTION 2 /* * state input new-state output * NORMAL % OPTION <nil> * NORMAL \ ESCAPE <nil> * NORMAL etc. NORMAL <input> * ESCAPE any NORMAL <input> * OPTION s NORMAL <selection buffer> * OPTION w NORMAL <selected window id> * OPTION a NORMAL <input text> * OPTION d NORMAL <OffiX DND selection object> * OPTION W NORMAL <current workspace> * OPTION etc. NORMAL %<input> */ #define TMPBUFSIZE 64 char *ExpandOptions(WScreen *scr, const char *cmdline) { int ptr, optr, state, len, olen; char *out, *nout; char *selection = NULL; char *user_input = NULL; char tmpbuf[TMPBUFSIZE]; int slen; len = strlen(cmdline); olen = len + 1; out = malloc(olen); if (!out) { wwarning(_("out of memory during expansion of \"%s\""), cmdline); return NULL; } *out = 0; ptr = 0; /* input line pointer */ optr = 0; /* output line pointer */ state = S_NORMAL; while (ptr < len) { switch (state) { case S_NORMAL: switch (cmdline[ptr]) { case '\\': state = S_ESCAPE; break; case '%': state = S_OPTION; break; default: state = S_NORMAL; out[optr++] = cmdline[ptr]; break; } break; case S_ESCAPE: switch (cmdline[ptr]) { case 'n': out[optr++] = 10; break; case 'r': out[optr++] = 13; break; case 't': out[optr++] = 9; break; default: out[optr++] = cmdline[ptr]; } state = S_NORMAL; break; case S_OPTION: state = S_NORMAL; switch (cmdline[ptr]) { case 'w': if (scr->focused_window && scr->focused_window->flags.focused) { snprintf(tmpbuf, sizeof(tmpbuf), "0x%x", (unsigned int)scr->focused_window->client_win); slen = strlen(tmpbuf); olen += slen; nout = realloc(out, olen); if (!nout) { wwarning(_("out of memory during expansion of '%s' for command \"%s\""), "%w", cmdline); goto error; } out = nout; strcat(out, tmpbuf); optr += slen; } else { out[optr++] = ' '; } break; case 'W': snprintf(tmpbuf, sizeof(tmpbuf), "0x%x", (unsigned int)scr->current_workspace + 1); slen = strlen(tmpbuf); olen += slen; nout = realloc(out, olen); if (!nout) { wwarning(_("out of memory during expansion of '%s' for command \"%s\""), "%W", cmdline); goto error; } out = nout; strcat(out, tmpbuf); optr += slen; break; case 'a': case 'A': ptr++; user_input = getuserinput(scr, cmdline, &ptr, cmdline[ptr-1] == 'A'); if (user_input) { slen = strlen(user_input); olen += slen; nout = realloc(out, olen); if (!nout) { wwarning(_("out of memory during expansion of '%s' for command \"%s\""), "%a", cmdline); goto error; } out = nout; strcat(out, user_input); optr += slen; } else { /* Not an error, but user has Canceled the dialog box. * This will make the command to not be performed. */ goto error; } break; #ifdef USE_DOCK_XDND case 'd': if (!scr->xdestring) { scr->flags.dnd_data_convertion_status = 1; goto error; } slen = strlen(scr->xdestring); olen += slen; nout = realloc(out, olen); if (!nout) { wwarning(_("out of memory during expansion of '%s' for command \"%s\""), "%d", cmdline); goto error; } out = nout; strcat(out, scr->xdestring); optr += slen; break; #endif /* USE_DOCK_XDND */ case 's': if (!selection) { selection = getselection(scr); } if (!selection) { wwarning(_("selection not available")); goto error; } slen = strlen(selection); olen += slen; nout = realloc(out, olen); if (!nout) { wwarning(_("out of memory during expansion of '%s' for command \"%s\""), "%s", cmdline); goto error; } out = nout; strcat(out, selection); optr += slen; break; default: out[optr++] = '%'; out[optr++] = cmdline[ptr]; } break; } out[optr] = 0; ptr++; } if (selection) XFree(selection); return out; error: wfree(out); if (selection) XFree(selection); return NULL; } void ParseWindowName(WMPropList *value, char **winstance, char **wclass, const char *where) { char *name; *winstance = *wclass = NULL; if (!WMIsPLString(value)) { wwarning(_("bad window name value in %s state info"), where); return; } name = WMGetFromPLString(value); if (!name || strlen(name) == 0) { wwarning(_("bad window name value in %s state info"), where); return; } UnescapeWM_CLASS(name, winstance, wclass); } #if 0 static char *keysymToString(KeySym keysym, unsigned int state) { XKeyEvent kev; char *buf = wmalloc(20); int count; kev.display = dpy; kev.type = KeyPress; kev.send_event = False; kev.window = DefaultRootWindow(dpy); kev.root = DefaultRootWindow(dpy); kev.same_screen = True; kev.subwindow = kev.root; kev.serial = 0x12344321; kev.time = CurrentTime; kev.state = state; kev.keycode = XKeysymToKeycode(dpy, keysym); count = XLookupString(&kev, buf, 19, NULL, NULL); buf[count] = 0; return buf; } #endif char *GetShortcutString(const char *shortcut) { char *buffer = NULL; char *k, *tmp, *text; tmp = text = wstrdup(shortcut); /* get modifiers */ while ((k = strchr(text, '+')) != NULL) { int mod; const char *lbl; *k = 0; mod = wXModifierFromKey(text); if (mod < 0) { return wstrdup("bug"); } lbl = wXModifierToShortcutLabel(mod); if (lbl) buffer = wstrappend(buffer, lbl); else buffer = wstrappend(buffer, text); text = k + 1; } buffer = wstrappend(buffer, text); wfree(tmp); return buffer; } char *GetShortcutKey(WShortKey key) { const char *key_name; char buffer[256]; char *wr; void append_string(const char *text) { const char *string = text; while (*string) { if (wr >= buffer + sizeof(buffer) - 1) break; *wr++ = *string++; } } void append_modifier(int modifier_index, const char *fallback_name) { if (wPreferences.modifier_labels[modifier_index]) { append_string(wPreferences.modifier_labels[modifier_index]); } else { append_string(fallback_name); } } key_name = XKeysymToString(XkbKeycodeToKeysym(dpy, key.keycode, 0, 0)); if (!key_name) return NULL; wr = buffer; if (key.modifier & ControlMask) append_modifier(1, "Control+"); if (key.modifier & ShiftMask) append_modifier(0, "Shift+"); if (key.modifier & Mod1Mask) append_modifier(2, "Mod1+"); if (key.modifier & Mod2Mask) append_modifier(3, "Mod2+"); if (key.modifier & Mod3Mask) append_modifier(4, "Mod3+"); if (key.modifier & Mod4Mask) append_modifier(5, "Mod4+"); if (key.modifier & Mod5Mask) append_modifier(6, "Mod5+"); append_string(key_name); *wr = '\0'; return GetShortcutString(buffer); } char *EscapeWM_CLASS(const char *name, const char *class) { char *ret; char *ename = NULL, *eclass = NULL; int i, j, l; if (!name && !class) return NULL; if (name) { l = strlen(name); ename = wmalloc(l * 2 + 1); j = 0; for (i = 0; i < l; i++) { if (name[i] == '\\') { ename[j++] = '\\'; } else if (name[i] == '.') { ename[j++] = '\\'; } ename[j++] = name[i]; } ename[j] = 0; } if (class) { l = strlen(class); eclass = wmalloc(l * 2 + 1); j = 0; for (i = 0; i < l; i++) { if (class[i] == '\\') { eclass[j++] = '\\'; } else if (class[i] == '.') { eclass[j++] = '\\'; } eclass[j++] = class[i]; } eclass[j] = 0; } if (ename && eclass) { int len = strlen(ename) + strlen(eclass) + 4; ret = wmalloc(len); snprintf(ret, len, "%s.%s", ename, eclass); wfree(ename); wfree(eclass); } else if (ename) { ret = wstrdup(ename); wfree(ename); } else { ret = wstrdup(eclass); wfree(eclass); } return ret; } static void UnescapeWM_CLASS(const char *str, char **name, char **class) { int i, j, k, dot; int length_of_name; j = strlen(str); /* separate string in 2 parts */ length_of_name = 0; dot = -1; for (i = 0; i < j; i++, length_of_name++) { if (str[i] == '\\') { i++; continue; } else if (str[i] == '.') { dot = i; break; } } /* unescape the name */ if (length_of_name > 0) { *name = wmalloc(length_of_name + 1); for (i = 0, k = 0; i < dot; i++) { if (str[i] != '\\') (*name)[k++] = str[i]; } (*name)[k] = '\0'; } else { *name = NULL; } /* unescape the class */ if (dot < j-1) { *class = wmalloc(j - (dot + 1) + 1); for (i = dot + 1, k = 0; i < j; i++) { if (str[i] != '\\') (*class)[k++] = str[i]; } (*class)[k] = 0; } else { *class = NULL; } } static void track_bg_helper_death(pid_t pid, unsigned int status, void *client_data) { WScreen *scr = (WScreen *) client_data; /* Parameter not used, but tell the compiler that it is ok */ (void) pid; (void) status; close(scr->helper_fd); scr->helper_fd = 0; scr->helper_pid = 0; scr->flags.backimage_helper_launched = 0; } Bool start_bg_helper(WScreen *scr) { pid_t pid; int filedes[2]; if (pipe(filedes) < 0) { werror(_("%s failed, can't set workspace specific background image (%s)"), "pipe()", strerror(errno)); return False; } pid = fork(); if (pid < 0) { werror(_("%s failed, can't set workspace specific background image (%s)"), "fork()", strerror(errno)); close(filedes[0]); close(filedes[1]); return False; } else if (pid == 0) { const char *dither; /* We don't need this side of the pipe in the child process */ close(filedes[1]); SetupEnvironment(scr); close(STDIN_FILENO); if (dup2(filedes[0], STDIN_FILENO) < 0) { werror(_("%s failed, can't set workspace specific background image (%s)"), "dup2()", strerror(errno)); exit(1); } close(filedes[0]); dither = wPreferences.no_dithering ? "-m" : "-d"; if (wPreferences.smooth_workspace_back) execlp("wmsetbg", "wmsetbg", "-helper", "-S", dither, NULL); else execlp("wmsetbg", "wmsetbg", "-helper", dither, NULL); werror(_("could not execute \"%s\": %s"), "wmsetbg", strerror(errno)); exit(1); } else { /* We don't need this side of the pipe in the parent process */ close(filedes[0]); if (fcntl(filedes[1], F_SETFD, FD_CLOEXEC) < 0) wwarning(_("could not set close-on-exec flag for bg_helper's communication file handle (%s)"), strerror(errno)); scr->helper_fd = filedes[1]; scr->helper_pid = pid; scr->flags.backimage_helper_launched = 1; wAddDeathHandler(pid, track_bg_helper_death, scr); return True; } } void SendHelperMessage(WScreen *scr, char type, int workspace, const char *msg) { char *buffer; int len; int i; char buf[16]; if (!scr->flags.backimage_helper_launched) { return; } len = (msg ? strlen(msg) : 0) + (workspace >= 0 ? 4 : 0) + 1; buffer = wmalloc(len + 5); snprintf(buf, sizeof(buf), "%4i", len); memcpy(buffer, buf, 4); buffer[4] = type; i = 5; if (workspace >= 0) { snprintf(buf, sizeof(buf), "%4i", workspace); memcpy(&buffer[i], buf, 4); i += 4; buffer[i] = 0; } if (msg) strcpy(&buffer[i], msg); if (write(scr->helper_fd, buffer, len + 4) < 0) { werror(_("could not send message to background image helper")); } wfree(buffer); } Bool UpdateDomainFile(WDDomain * domain) { struct stat stbuf; char path[PATH_MAX]; WMPropList *shared_dict, *dict; Bool result, freeDict = False; dict = domain->dictionary; if (WMIsPLDictionary(domain->dictionary)) { /* retrieve global system dictionary */ snprintf(path, sizeof(path), "%s/%s", DEFSDATADIR, domain->domain_name); if (stat(path, &stbuf) >= 0) { shared_dict = WMReadPropListFromFile(path); if (shared_dict) { if (WMIsPLDictionary(shared_dict)) { freeDict = True; dict = WMDeepCopyPropList(domain->dictionary); WMSubtractPLDictionaries(dict, shared_dict, True); } WMReleasePropList(shared_dict); } } } result = WMWritePropListToFile(dict, domain->path); if (freeDict) { WMReleasePropList(dict); } return result; } char *StrConcatDot(const char *a, const char *b) { int len; char *str; if (!a) a = ""; if (!b) b = ""; len = strlen(a) + strlen(b) + 4; str = wmalloc(len); snprintf(str, len, "%s.%s", a, b); return str; } static char *getCommandForWindow(Window win, int elements) { char **argv, *command = NULL; int argc; if (XGetCommand(dpy, win, &argv, &argc)) { if (argc > 0 && argv != NULL) { if (elements == 0) elements = argc; command = wtokenjoin(argv, WMIN(argc, elements)); if (command[0] == 0) { wfree(command); command = NULL; } } if (argv) { XFreeStringList(argv); } } return command; } /* Free result when done */ char *GetCommandForWindow(Window win) { return getCommandForWindow(win, 0); } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/workspace.c������������������������������������������������������������������0000644�0001750�0001750�00000064172�13431646202�013732� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* workspace.c- Workspace management * * Window Maker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "wconfig.h" #include <X11/Xlib.h> #include <X11/Xutil.h> #ifdef USE_XSHAPE #include <X11/extensions/shape.h> #endif #include <stdlib.h> #include <stdio.h> #include <stdint.h> #include <unistd.h> #include <ctype.h> #include <string.h> #include <time.h> #include <sys/time.h> #include "WindowMaker.h" #include "framewin.h" #include "window.h" #include "icon.h" #include "misc.h" #include "menu.h" #include "application.h" #include "dock.h" #include "actions.h" #include "workspace.h" #include "appicon.h" #include "wmspec.h" #include "xinerama.h" #include "event.h" #include "wsmap.h" #include "dialog.h" #define MC_DESTROY_LAST 1 #define MC_LAST_USED 2 /* index of the first workspace menu entry */ #define MC_WORKSPACE1 3 #define WORKSPACE_NAME_DISPLAY_PADDING 32 static WMPropList *dWorkspaces = NULL; static WMPropList *dClip, *dName; static void make_keys(void) { if (dWorkspaces != NULL) return; dWorkspaces = WMCreatePLString("Workspaces"); dName = WMCreatePLString("Name"); dClip = WMCreatePLString("Clip"); } void wWorkspaceMake(WScreen * scr, int count) { while (count > 0) { wWorkspaceNew(scr); count--; } } int wWorkspaceNew(WScreen *scr) { WWorkspace *wspace, **list; int i; if (scr->workspace_count < MAX_WORKSPACES) { scr->workspace_count++; wspace = wmalloc(sizeof(WWorkspace)); wspace->name = NULL; wspace->clip = NULL; if (!wspace->name) { static const char *new_name = NULL; static size_t name_length; if (new_name == NULL) { new_name = _("Workspace %i"); name_length = strlen(new_name) + 8; } wspace->name = wmalloc(name_length); snprintf(wspace->name, name_length, new_name, scr->workspace_count); } if (!wPreferences.flags.noclip) wspace->clip = wDockCreate(scr, WM_CLIP, NULL); list = wmalloc(sizeof(WWorkspace *) * scr->workspace_count); for (i = 0; i < scr->workspace_count - 1; i++) list[i] = scr->workspaces[i]; list[i] = wspace; if (scr->workspaces) wfree(scr->workspaces); scr->workspaces = list; wWorkspaceMenuUpdate(scr, scr->workspace_menu); wWorkspaceMenuUpdate(scr, scr->clip_ws_menu); wNETWMUpdateDesktop(scr); WMPostNotificationName(WMNWorkspaceCreated, scr, (void *)(uintptr_t) (scr->workspace_count - 1)); XFlush(dpy); return scr->workspace_count - 1; } return -1; } Bool wWorkspaceDelete(WScreen * scr, int workspace) { WWindow *tmp; WWorkspace **list; int i, j; if (workspace <= 0) return False; /* verify if workspace is in use by some window */ tmp = scr->focused_window; while (tmp) { if (!IS_OMNIPRESENT(tmp) && tmp->frame->workspace == workspace) { char buf[256]; snprintf(buf, sizeof(buf), _("Workspace \"%s\" in use; cannot delete"), scr->workspaces[workspace]->name); wMessageDialog(scr, _("Error"), buf, _("OK"), NULL, NULL); return False; } tmp = tmp->prev; } if (!wPreferences.flags.noclip) { wDockDestroy(scr->workspaces[workspace]->clip); scr->workspaces[workspace]->clip = NULL; } list = wmalloc(sizeof(WWorkspace *) * (scr->workspace_count - 1)); j = 0; for (i = 0; i < scr->workspace_count; i++) { if (i != workspace) { list[j++] = scr->workspaces[i]; } else { if (scr->workspaces[i]->name) wfree(scr->workspaces[i]->name); if (scr->workspaces[i]->map) RReleaseImage(scr->workspaces[i]->map); wfree(scr->workspaces[i]); } } wfree(scr->workspaces); scr->workspaces = list; scr->workspace_count--; /* update menu */ wWorkspaceMenuUpdate(scr, scr->workspace_menu); /* clip workspace menu */ wWorkspaceMenuUpdate(scr, scr->clip_ws_menu); /* update also window menu */ if (scr->workspace_submenu) { WMenu *menu = scr->workspace_submenu; i = menu->entry_no; while (i > scr->workspace_count) wMenuRemoveItem(menu, --i); wMenuRealize(menu); } /* and clip menu */ if (scr->clip_submenu) { WMenu *menu = scr->clip_submenu; i = menu->entry_no; while (i > scr->workspace_count) wMenuRemoveItem(menu, --i); wMenuRealize(menu); } wNETWMUpdateDesktop(scr); WMPostNotificationName(WMNWorkspaceDestroyed, scr, (void *)(uintptr_t) (scr->workspace_count - 1)); if (scr->current_workspace >= scr->workspace_count) wWorkspaceChange(scr, scr->workspace_count - 1); if (scr->last_workspace >= scr->workspace_count) scr->last_workspace = 0; return True; } typedef struct WorkspaceNameData { int count; RImage *back; RImage *text; time_t timeout; } WorkspaceNameData; static void hideWorkspaceName(void *data) { WScreen *scr = (WScreen *) data; if (!scr->workspace_name_data || scr->workspace_name_data->count == 0 || time(NULL) > scr->workspace_name_data->timeout) { XUnmapWindow(dpy, scr->workspace_name); if (scr->workspace_name_data) { RReleaseImage(scr->workspace_name_data->back); RReleaseImage(scr->workspace_name_data->text); wfree(scr->workspace_name_data); scr->workspace_name_data = NULL; } scr->workspace_name_timer = NULL; } else { RImage *img = RCloneImage(scr->workspace_name_data->back); Pixmap pix; scr->workspace_name_timer = WMAddTimerHandler(WORKSPACE_NAME_FADE_DELAY, hideWorkspaceName, scr); RCombineImagesWithOpaqueness(img, scr->workspace_name_data->text, scr->workspace_name_data->count * 255 / 10); RConvertImage(scr->rcontext, img, &pix); RReleaseImage(img); XSetWindowBackgroundPixmap(dpy, scr->workspace_name, pix); XClearWindow(dpy, scr->workspace_name); XFreePixmap(dpy, pix); XFlush(dpy); scr->workspace_name_data->count--; } } static void showWorkspaceName(WScreen * scr, int workspace) { WorkspaceNameData *data; RXImage *ximg; Pixmap text, mask; int w, h; int px, py; char *name = scr->workspaces[workspace]->name; int len = strlen(name); int x, y; #ifdef USE_XINERAMA int head; WMRect rect; int xx, yy; #endif if (wPreferences.workspace_name_display_position == WD_NONE || scr->workspace_count < 2) return; if (scr->workspace_name_timer) { WMDeleteTimerHandler(scr->workspace_name_timer); XUnmapWindow(dpy, scr->workspace_name); XFlush(dpy); } scr->workspace_name_timer = WMAddTimerHandler(WORKSPACE_NAME_DELAY, hideWorkspaceName, scr); if (scr->workspace_name_data) { RReleaseImage(scr->workspace_name_data->back); RReleaseImage(scr->workspace_name_data->text); wfree(scr->workspace_name_data); } data = wmalloc(sizeof(WorkspaceNameData)); data->back = NULL; w = WMWidthOfString(scr->workspace_name_font, name, len); h = WMFontHeight(scr->workspace_name_font); #ifdef USE_XINERAMA head = wGetHeadForPointerLocation(scr); rect = wGetRectForHead(scr, head); if (scr->xine_info.count) { xx = rect.pos.x + (scr->xine_info.screens[head].size.width - (w + 4)) / 2; yy = rect.pos.y + (scr->xine_info.screens[head].size.height - (h + 4)) / 2; } else { xx = (scr->scr_width - (w + 4)) / 2; yy = (scr->scr_height - (h + 4)) / 2; } #endif switch (wPreferences.workspace_name_display_position) { case WD_TOP: #ifdef USE_XINERAMA px = xx; #else px = (scr->scr_width - (w + 4)) / 2; #endif py = WORKSPACE_NAME_DISPLAY_PADDING; break; case WD_BOTTOM: #ifdef USE_XINERAMA px = xx; #else px = (scr->scr_width - (w + 4)) / 2; #endif py = scr->scr_height - (h + 4 + WORKSPACE_NAME_DISPLAY_PADDING); break; case WD_TOPLEFT: px = WORKSPACE_NAME_DISPLAY_PADDING; py = WORKSPACE_NAME_DISPLAY_PADDING; break; case WD_TOPRIGHT: px = scr->scr_width - (w + 4 + WORKSPACE_NAME_DISPLAY_PADDING); py = WORKSPACE_NAME_DISPLAY_PADDING; break; case WD_BOTTOMLEFT: px = WORKSPACE_NAME_DISPLAY_PADDING; py = scr->scr_height - (h + 4 + WORKSPACE_NAME_DISPLAY_PADDING); break; case WD_BOTTOMRIGHT: px = scr->scr_width - (w + 4 + WORKSPACE_NAME_DISPLAY_PADDING); py = scr->scr_height - (h + 4 + WORKSPACE_NAME_DISPLAY_PADDING); break; case WD_CENTER: default: #ifdef USE_XINERAMA px = xx; py = yy; #else px = (scr->scr_width - (w + 4)) / 2; py = (scr->scr_height - (h + 4)) / 2; #endif break; } XResizeWindow(dpy, scr->workspace_name, w + 4, h + 4); XMoveWindow(dpy, scr->workspace_name, px, py); text = XCreatePixmap(dpy, scr->w_win, w + 4, h + 4, scr->w_depth); mask = XCreatePixmap(dpy, scr->w_win, w + 4, h + 4, 1); /*XSetForeground(dpy, scr->mono_gc, 0); XFillRectangle(dpy, mask, scr->mono_gc, 0, 0, w+4, h+4); */ XFillRectangle(dpy, text, WMColorGC(scr->black), 0, 0, w + 4, h + 4); for (x = 0; x <= 4; x++) for (y = 0; y <= 4; y++) WMDrawString(scr->wmscreen, text, scr->white, scr->workspace_name_font, x, y, name, len); XSetForeground(dpy, scr->mono_gc, 1); XSetBackground(dpy, scr->mono_gc, 0); XCopyPlane(dpy, text, mask, scr->mono_gc, 0, 0, w + 4, h + 4, 0, 0, 1 << (scr->w_depth - 1)); /*XSetForeground(dpy, scr->mono_gc, 1); */ XSetBackground(dpy, scr->mono_gc, 1); XFillRectangle(dpy, text, WMColorGC(scr->black), 0, 0, w + 4, h + 4); WMDrawString(scr->wmscreen, text, scr->white, scr->workspace_name_font, 2, 2, name, len); #ifdef USE_XSHAPE if (w_global.xext.shape.supported) XShapeCombineMask(dpy, scr->workspace_name, ShapeBounding, 0, 0, mask, ShapeSet); #endif XSetWindowBackgroundPixmap(dpy, scr->workspace_name, text); XClearWindow(dpy, scr->workspace_name); data->text = RCreateImageFromDrawable(scr->rcontext, text, None); XFreePixmap(dpy, text); XFreePixmap(dpy, mask); if (!data->text) { XMapRaised(dpy, scr->workspace_name); XFlush(dpy); goto erro; } ximg = RGetXImage(scr->rcontext, scr->root_win, px, py, data->text->width, data->text->height); if (!ximg) goto erro; XMapRaised(dpy, scr->workspace_name); XFlush(dpy); data->back = RCreateImageFromXImage(scr->rcontext, ximg->image, NULL); RDestroyXImage(scr->rcontext, ximg); if (!data->back) { goto erro; } data->count = 10; /* set a timeout for the effect */ data->timeout = time(NULL) + 2 + (WORKSPACE_NAME_DELAY + WORKSPACE_NAME_FADE_DELAY * data->count) / 1000; scr->workspace_name_data = data; return; erro: if (scr->workspace_name_timer) WMDeleteTimerHandler(scr->workspace_name_timer); if (data->text) RReleaseImage(data->text); if (data->back) RReleaseImage(data->back); wfree(data); scr->workspace_name_data = NULL; scr->workspace_name_timer = WMAddTimerHandler(WORKSPACE_NAME_DELAY + 10 * WORKSPACE_NAME_FADE_DELAY, hideWorkspaceName, scr); } void wWorkspaceChange(WScreen *scr, int workspace) { if (scr->flags.startup || scr->flags.startup2 || scr->flags.ignore_focus_events) return; if (workspace != scr->current_workspace) wWorkspaceForceChange(scr, workspace); } void wWorkspaceRelativeChange(WScreen * scr, int amount) { int w; /* While the deiconify animation is going on the window is * still "flying" to its final position and we don't want to * change workspace before the animation finishes, otherwise * the window will land in the new workspace */ if (w_global.ignore_workspace_change) return; w = scr->current_workspace + amount; if (amount < 0) { if (w >= 0) { wWorkspaceChange(scr, w); } else if (wPreferences.ws_cycle) { wWorkspaceChange(scr, scr->workspace_count + w); } } else if (amount > 0) { if (w < scr->workspace_count) { wWorkspaceChange(scr, w); } else if (wPreferences.ws_advance) { wWorkspaceChange(scr, WMIN(w, MAX_WORKSPACES - 1)); } else if (wPreferences.ws_cycle) { wWorkspaceChange(scr, w % scr->workspace_count); } } } void wWorkspaceForceChange(WScreen * scr, int workspace) { WWindow *tmp, *foc = NULL, *foc2 = NULL; if (workspace >= MAX_WORKSPACES || workspace < 0) return; if (wPreferences.enable_workspace_pager && !w_global.process_workspacemap_event) wWorkspaceMapUpdate(scr); SendHelperMessage(scr, 'C', workspace + 1, NULL); if (workspace > scr->workspace_count - 1) wWorkspaceMake(scr, workspace - scr->workspace_count + 1); wClipUpdateForWorkspaceChange(scr, workspace); scr->last_workspace = scr->current_workspace; scr->current_workspace = workspace; wWorkspaceMenuUpdate(scr, scr->workspace_menu); wWorkspaceMenuUpdate(scr, scr->clip_ws_menu); tmp = scr->focused_window; if (tmp != NULL) { WWindow **toUnmap; int toUnmapSize, toUnmapCount; if ((IS_OMNIPRESENT(tmp) && (tmp->flags.mapped || tmp->flags.shaded) && !WFLAGP(tmp, no_focusable)) || tmp->flags.changing_workspace) { foc = tmp; } toUnmapSize = 16; toUnmapCount = 0; toUnmap = wmalloc(toUnmapSize * sizeof(WWindow *)); /* foc2 = tmp; will fix annoyance with gnome panel * but will create annoyance for every other application */ while (tmp) { if (tmp->frame->workspace != workspace && !tmp->flags.selected) { /* unmap windows not on this workspace */ if ((tmp->flags.mapped || tmp->flags.shaded) && !IS_OMNIPRESENT(tmp) && !tmp->flags.changing_workspace) { if (toUnmapCount == toUnmapSize) { toUnmapSize *= 2; toUnmap = wrealloc(toUnmap, toUnmapSize * sizeof(WWindow *)); } toUnmap[toUnmapCount++] = tmp; } /* also unmap miniwindows not on this workspace */ if (!wPreferences.sticky_icons && tmp->flags.miniaturized && tmp->icon && !IS_OMNIPRESENT(tmp)) { XUnmapWindow(dpy, tmp->icon->core->window); tmp->icon->mapped = 0; } /* update current workspace of omnipresent windows */ if (IS_OMNIPRESENT(tmp)) { WApplication *wapp = wApplicationOf(tmp->main_window); tmp->frame->workspace = workspace; if (wapp) { wapp->last_workspace = workspace; } if (!foc2 && (tmp->flags.mapped || tmp->flags.shaded)) { foc2 = tmp; } } } else { /* change selected windows' workspace */ if (tmp->flags.selected) { wWindowChangeWorkspace(tmp, workspace); if (!tmp->flags.miniaturized && !foc) { foc = tmp; } } else { if (!tmp->flags.hidden) { if (!(tmp->flags.mapped || tmp->flags.miniaturized)) { /* remap windows that are on this workspace */ wWindowMap(tmp); if (!foc && !WFLAGP(tmp, no_focusable)) { foc = tmp; } } /* Also map miniwindow if not omnipresent */ if (!wPreferences.sticky_icons && tmp->flags.miniaturized && !IS_OMNIPRESENT(tmp) && tmp->icon) { tmp->icon->mapped = 1; XMapWindow(dpy, tmp->icon->core->window); } } } } tmp = tmp->prev; } while (toUnmapCount > 0) { wWindowUnmap(toUnmap[--toUnmapCount]); } wfree(toUnmap); /* Gobble up events unleashed by our mapping & unmapping. * These may trigger various grab-initiated focus & * crossing events. However, we don't care about them, * and ignore their focus implications altogether to avoid * flicker. */ scr->flags.ignore_focus_events = 1; ProcessPendingEvents(); scr->flags.ignore_focus_events = 0; if (!foc) foc = foc2; /* * Check that the window we want to focus still exists, because the application owning it * could decide to unmap/destroy it in response to unmap any of its other window following * the workspace change, this happening during our 'ProcessPendingEvents' loop. */ if (foc != NULL) { WWindow *parse; Bool found; found = False; for (parse = scr->focused_window; parse != NULL; parse = parse->prev) { if (parse == foc) { found = True; break; } } if (!found) foc = NULL; } if (scr->focused_window->flags.mapped && !foc) { foc = scr->focused_window; } if (wPreferences.focus_mode == WKF_CLICK) { wSetFocusTo(scr, foc); } else { unsigned int mask; int foo; Window bar, win; WWindow *tmp; tmp = NULL; if (XQueryPointer(dpy, scr->root_win, &bar, &win, &foo, &foo, &foo, &foo, &mask)) { tmp = wWindowFor(win); } /* If there's a window under the pointer, focus it. * (we ate all other focus events above, so it's * certainly not focused). Otherwise focus last * focused, or the root (depending on sloppiness) */ if (!tmp && wPreferences.focus_mode == WKF_SLOPPY) { wSetFocusTo(scr, foc); } else { wSetFocusTo(scr, tmp); } } } /* We need to always arrange icons when changing workspace, even if * no autoarrange icons, because else the icons in different workspaces * can be superposed. * This can be avoided if appicons are also workspace specific. */ if (!wPreferences.sticky_icons) wArrangeIcons(scr, False); if (scr->dock) wAppIconPaint(scr->dock->icon_array[0]); if (!wPreferences.flags.noclip && (scr->workspaces[workspace]->clip->auto_collapse || scr->workspaces[workspace]->clip->auto_raise_lower)) { /* to handle enter notify. This will also */ XUnmapWindow(dpy, scr->clip_icon->icon->core->window); XMapWindow(dpy, scr->clip_icon->icon->core->window); } else if (scr->clip_icon != NULL) { wClipIconPaint(scr->clip_icon); } wScreenUpdateUsableArea(scr); wNETWMUpdateDesktop(scr); showWorkspaceName(scr, workspace); WMPostNotificationName(WMNWorkspaceChanged, scr, (void *)(uintptr_t) workspace); /* XSync(dpy, False); */ } static void switchWSCommand(WMenu * menu, WMenuEntry * entry) { wWorkspaceChange(menu->frame->screen_ptr, (long)entry->clientdata); } static void lastWSCommand(WMenu *menu, WMenuEntry *entry) { /* Parameter not used, but tell the compiler that it is ok */ (void) entry; wWorkspaceChange(menu->frame->screen_ptr, menu->frame->screen_ptr->last_workspace); } static void deleteWSCommand(WMenu *menu, WMenuEntry *entry) { /* Parameter not used, but tell the compiler that it is ok */ (void) entry; wWorkspaceDelete(menu->frame->screen_ptr, menu->frame->screen_ptr->workspace_count - 1); } static void newWSCommand(WMenu *menu, WMenuEntry *foo) { int ws; /* Parameter not used, but tell the compiler that it is ok */ (void) foo; ws = wWorkspaceNew(menu->frame->screen_ptr); /* autochange workspace */ if (ws >= 0) wWorkspaceChange(menu->frame->screen_ptr, ws); } void wWorkspaceRename(WScreen *scr, int workspace, const char *name) { char buf[MAX_WORKSPACENAME_WIDTH + 1]; char *tmp; if (workspace >= scr->workspace_count) return; /* trim white spaces */ tmp = wtrimspace(name); if (strlen(tmp) == 0) { snprintf(buf, sizeof(buf), _("Workspace %i"), workspace + 1); } else { strncpy(buf, tmp, MAX_WORKSPACENAME_WIDTH); } buf[MAX_WORKSPACENAME_WIDTH] = 0; wfree(tmp); /* update workspace */ wfree(scr->workspaces[workspace]->name); scr->workspaces[workspace]->name = wstrdup(buf); if (scr->clip_ws_menu) { if (strcmp(scr->clip_ws_menu->entries[workspace + MC_WORKSPACE1]->text, buf) != 0) { wfree(scr->clip_ws_menu->entries[workspace + MC_WORKSPACE1]->text); scr->clip_ws_menu->entries[workspace + MC_WORKSPACE1]->text = wstrdup(buf); wMenuRealize(scr->clip_ws_menu); } } if (scr->workspace_menu) { if (strcmp(scr->workspace_menu->entries[workspace + MC_WORKSPACE1]->text, buf) != 0) { wfree(scr->workspace_menu->entries[workspace + MC_WORKSPACE1]->text); scr->workspace_menu->entries[workspace + MC_WORKSPACE1]->text = wstrdup(buf); wMenuRealize(scr->workspace_menu); } } if (scr->clip_icon) wClipIconPaint(scr->clip_icon); WMPostNotificationName(WMNWorkspaceNameChanged, scr, (void *)(uintptr_t) workspace); } /* callback for when menu entry is edited */ static void onMenuEntryEdited(WMenu * menu, WMenuEntry * entry) { char *tmp; tmp = entry->text; wWorkspaceRename(menu->frame->screen_ptr, (long)entry->clientdata, tmp); } WMenu *wWorkspaceMenuMake(WScreen * scr, Bool titled) { WMenu *wsmenu; WMenuEntry *entry; wsmenu = wMenuCreate(scr, titled ? _("Workspaces") : NULL, False); if (!wsmenu) { wwarning(_("could not create Workspace menu")); return NULL; } /* callback to be called when an entry is edited */ wsmenu->on_edit = onMenuEntryEdited; wMenuAddCallback(wsmenu, _("New"), newWSCommand, NULL); wMenuAddCallback(wsmenu, _("Destroy Last"), deleteWSCommand, NULL); entry = wMenuAddCallback(wsmenu, _("Last Used"), lastWSCommand, NULL); entry->rtext = GetShortcutKey(wKeyBindings[WKBD_LASTWORKSPACE]); return wsmenu; } void wWorkspaceMenuUpdate(WScreen * scr, WMenu * menu) { int i; long ws; char title[MAX_WORKSPACENAME_WIDTH + 1]; WMenuEntry *entry; int tmp; if (!menu) return; if (menu->entry_no < scr->workspace_count + MC_WORKSPACE1) { /* new workspace(s) added */ i = scr->workspace_count - (menu->entry_no - MC_WORKSPACE1); ws = menu->entry_no - MC_WORKSPACE1; while (i > 0) { wstrlcpy(title, scr->workspaces[ws]->name, MAX_WORKSPACENAME_WIDTH); entry = wMenuAddCallback(menu, title, switchWSCommand, (void *)ws); entry->flags.indicator = 1; entry->flags.editable = 1; i--; ws++; } } else if (menu->entry_no > scr->workspace_count + MC_WORKSPACE1) { /* removed workspace(s) */ for (i = menu->entry_no - 1; i >= scr->workspace_count + MC_WORKSPACE1; i--) wMenuRemoveItem(menu, i); } for (i = 0; i < scr->workspace_count; i++) { /* workspace shortcut labels */ if (i / 10 == scr->current_workspace / 10) menu->entries[i + MC_WORKSPACE1]->rtext = GetShortcutKey(wKeyBindings[WKBD_WORKSPACE1 + (i % 10)]); else menu->entries[i + MC_WORKSPACE1]->rtext = NULL; menu->entries[i + MC_WORKSPACE1]->flags.indicator_on = 0; } menu->entries[scr->current_workspace + MC_WORKSPACE1]->flags.indicator_on = 1; wMenuRealize(menu); /* don't let user destroy current workspace */ if (scr->current_workspace == scr->workspace_count - 1) wMenuSetEnabled(menu, MC_DESTROY_LAST, False); else wMenuSetEnabled(menu, MC_DESTROY_LAST, True); /* back to last workspace */ if (scr->workspace_count && scr->last_workspace != scr->current_workspace) wMenuSetEnabled(menu, MC_LAST_USED, True); else wMenuSetEnabled(menu, MC_LAST_USED, False); tmp = menu->frame->top_width + 5; /* if menu got unreachable, bring it to a visible place */ if (menu->frame_x < tmp - (int)menu->frame->core->width) wMenuMove(menu, tmp - (int)menu->frame->core->width, menu->frame_y, False); wMenuPaint(menu); } void wWorkspaceSaveState(WScreen * scr, WMPropList * old_state) { WMPropList *parr, *pstr, *wks_state, *old_wks_state, *foo, *bar; int i; make_keys(); old_wks_state = WMGetFromPLDictionary(old_state, dWorkspaces); parr = WMCreatePLArray(NULL); for (i = 0; i < scr->workspace_count; i++) { pstr = WMCreatePLString(scr->workspaces[i]->name); wks_state = WMCreatePLDictionary(dName, pstr, NULL); WMReleasePropList(pstr); if (!wPreferences.flags.noclip) { pstr = wClipSaveWorkspaceState(scr, i); WMPutInPLDictionary(wks_state, dClip, pstr); WMReleasePropList(pstr); } else if (old_wks_state != NULL) { foo = WMGetFromPLArray(old_wks_state, i); if (foo != NULL) { bar = WMGetFromPLDictionary(foo, dClip); if (bar != NULL) WMPutInPLDictionary(wks_state, dClip, bar); } } WMAddToPLArray(parr, wks_state); WMReleasePropList(wks_state); } WMPutInPLDictionary(scr->session_state, dWorkspaces, parr); WMReleasePropList(parr); } void wWorkspaceRestoreState(WScreen *scr) { WMPropList *parr, *pstr, *wks_state, *clip_state; int i, j; make_keys(); if (scr->session_state == NULL) return; parr = WMGetFromPLDictionary(scr->session_state, dWorkspaces); if (!parr) return; for (i = 0; i < WMIN(WMGetPropListItemCount(parr), MAX_WORKSPACES); i++) { wks_state = WMGetFromPLArray(parr, i); if (WMIsPLDictionary(wks_state)) pstr = WMGetFromPLDictionary(wks_state, dName); else pstr = wks_state; if (i >= scr->workspace_count) wWorkspaceNew(scr); if (scr->workspace_menu) { wfree(scr->workspace_menu->entries[i + MC_WORKSPACE1]->text); scr->workspace_menu->entries[i + MC_WORKSPACE1]->text = wstrdup(WMGetFromPLString(pstr)); scr->workspace_menu->flags.realized = 0; } wfree(scr->workspaces[i]->name); scr->workspaces[i]->name = wstrdup(WMGetFromPLString(pstr)); if (!wPreferences.flags.noclip) { int added_omnipresent_icons = 0; clip_state = WMGetFromPLDictionary(wks_state, dClip); if (scr->workspaces[i]->clip) wDockDestroy(scr->workspaces[i]->clip); scr->workspaces[i]->clip = wDockRestoreState(scr, clip_state, WM_CLIP); if (i > 0) wDockHideIcons(scr->workspaces[i]->clip); /* We set the global icons here, because scr->workspaces[i]->clip * was not valid in wDockRestoreState(). * There we only set icon->omnipresent to know which icons we * need to set here. */ for (j = 0; j < scr->workspaces[i]->clip->max_icons; j++) { WAppIcon *aicon = scr->workspaces[i]->clip->icon_array[j]; int k; if (!aicon || !aicon->omnipresent) continue; aicon->omnipresent = 0; if (wClipMakeIconOmnipresent(aicon, True) != WO_SUCCESS) continue; if (i == 0) continue; /* Move this appicon from workspace i to workspace 0 */ scr->workspaces[i]->clip->icon_array[j] = NULL; scr->workspaces[i]->clip->icon_count--; added_omnipresent_icons++; /* If there are too many omnipresent appicons, we are in trouble */ assert(scr->workspaces[0]->clip->icon_count + added_omnipresent_icons <= scr->workspaces[0]->clip->max_icons); /* Find first free spot on workspace 0 */ for (k = 0; k < scr->workspaces[0]->clip->max_icons; k++) if (scr->workspaces[0]->clip->icon_array[k] == NULL) break; scr->workspaces[0]->clip->icon_array[k] = aicon; aicon->dock = scr->workspaces[0]->clip; } scr->workspaces[0]->clip->icon_count += added_omnipresent_icons; } WMPostNotificationName(WMNWorkspaceNameChanged, scr, (void *)(uintptr_t) i); } } /* Returns the workspace number for a given workspace name */ int wGetWorkspaceNumber(WScreen *scr, const char *value) { int w, i; if (sscanf(value, "%i", &w) != 1) { w = -1; for (i = 0; i < scr->workspace_count; i++) { if (strcmp(scr->workspaces[i]->name, value) == 0) { w = i; break; } } } else { w--; } return w; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/session.h��������������������������������������������������������������������0000644�0001750�0001750�00000002033�13431646202�013410� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* session.h * * Copyright (c) 1999-2003 Alfredo K. Kojima * * Window Maker window manager * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef WMSESSION_H_ #define WMSESSION_H_ void wSessionSaveState(WScreen *scr); void wSessionClearState(WScreen *scr); void wSessionRestoreState(WScreen *scr); void wSessionRestoreLastWorkspace(WScreen *scr); #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/application.c����������������������������������������������������������������0000644�0001750�0001750�00000012356�13431646202�014234� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2003 Alfredo K. Kojima * Copyright (c) 1998-2003 Dan Pascu * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "wconfig.h" #include <X11/Xlib.h> #include <string.h> #include "WindowMaker.h" #include "menu.h" #include "window.h" #ifdef USER_MENU #include "usermenu.h" #endif /* USER_MENU */ #include "appicon.h" #include "application.h" #include "appmenu.h" #include "properties.h" #include "workspace.h" #include "dock.h" #include "defaults.h" /******** Local variables ********/ static WWindow *makeMainWindow(WScreen * scr, Window window) { WWindow *wwin; XWindowAttributes attr; if (!XGetWindowAttributes(dpy, window, &attr)) return NULL; wwin = wWindowCreate(); wwin->screen_ptr = scr; wwin->client_win = window; wwin->main_window = window; wwin->wm_hints = XGetWMHints(dpy, window); PropGetWMClass(window, &wwin->wm_class, &wwin->wm_instance); wDefaultFillAttributes(wwin->wm_instance, wwin->wm_class, &wwin->user_flags, &wwin->defined_user_flags, True); XSelectInput(dpy, window, attr.your_event_mask | PropertyChangeMask | StructureNotifyMask); return wwin; } WApplication *wApplicationOf(Window window) { WApplication *wapp; if (window == None) return NULL; if (XFindContext(dpy, window, w_global.context.app_win, (XPointer *) & wapp) != XCSUCCESS) return NULL; return wapp; } WApplication *wApplicationCreate(WWindow * wwin) { WScreen *scr = wwin->screen_ptr; Window main_window = wwin->main_window; WApplication *wapp; WWindow *leader; if (main_window == None || main_window == scr->root_win) return NULL; { Window root; int foo; unsigned int bar; /* check if the window is valid */ if (!XGetGeometry(dpy, main_window, &root, &foo, &foo, &bar, &bar, &bar, &bar)) return NULL; } wapp = wApplicationOf(main_window); if (wapp) { wapp->refcount++; if (wapp->app_icon && wapp->app_icon->docked && wapp->app_icon->relaunching && wapp->main_window_desc->fake_group) wDockFinishLaunch(wapp->app_icon); return wapp; } wapp = wmalloc(sizeof(WApplication)); wapp->refcount = 1; wapp->last_focused = NULL; wapp->urgent_bounce_timer = NULL; wapp->last_workspace = 0; wapp->main_window = main_window; wapp->main_window_desc = makeMainWindow(scr, main_window); if (!wapp->main_window_desc) { wfree(wapp); return NULL; } wapp->main_window_desc->fake_group = wwin->fake_group; wapp->main_window_desc->net_icon_image = RRetainImage(wwin->net_icon_image); leader = wWindowFor(main_window); if (leader) leader->main_window = main_window; wapp->menu = wAppMenuGet(scr, main_window); #ifdef USER_MENU if (!wapp->menu) wapp->menu = wUserMenuGet(scr, wapp->main_window_desc); wAppMenuMap(wapp->menu, wwin); #endif /* Set application wide attributes from the leader */ wapp->flags.hidden = WFLAGP(wapp->main_window_desc, start_hidden); wapp->flags.emulated = WFLAGP(wapp->main_window_desc, emulate_appicon); /* application descriptor */ XSaveContext(dpy, main_window, w_global.context.app_win, (XPointer) wapp); create_appicon_for_application(wapp, wwin); return wapp; } void wApplicationDestroy(WApplication *wapp) { WWindow *wwin; WScreen *scr; if (!wapp) return; wapp->refcount--; if (wapp->refcount > 0) return; if (wapp->urgent_bounce_timer) { WMDeleteTimerHandler(wapp->urgent_bounce_timer); wapp->urgent_bounce_timer = NULL; } if (wapp->flags.bouncing) { /* event.c:handleDestroyNotify forced this destroy and thereby overlooked the bounce callback */ wapp->refcount = 1; return; } scr = wapp->main_window_desc->screen_ptr; if (wapp == scr->wapp_list) { if (wapp->next) wapp->next->prev = NULL; scr->wapp_list = wapp->next; } else { if (wapp->next) wapp->next->prev = wapp->prev; if (wapp->prev) wapp->prev->next = wapp->next; } XDeleteContext(dpy, wapp->main_window, w_global.context.app_win); wAppMenuDestroy(wapp->menu); /* Remove application icon */ removeAppIconFor(wapp); wwin = wWindowFor(wapp->main_window_desc->client_win); wWindowDestroy(wapp->main_window_desc); if (wwin) { /* undelete client window context that was deleted in * wWindowDestroy */ XSaveContext(dpy, wwin->client_win, w_global.context.client_win, (XPointer) & wwin->client_descriptor); } wfree(wapp); } void wApplicationActivate(WApplication *wapp) { if (wapp->app_icon) { wIconSetHighlited(wapp->app_icon->icon, True); wAppIconPaint(wapp->app_icon); } } void wApplicationDeactivate(WApplication *wapp) { if (wapp->app_icon) { wIconSetHighlited(wapp->app_icon->icon, False); wAppIconPaint(wapp->app_icon); } } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/xinerama.c�������������������������������������������������������������������0000644�0001750�0001750�00000023727�13431646202�013541� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include <stdlib.h> #include "wconfig.h" #include "xinerama.h" #include "screen.h" #include "window.h" #include "framewin.h" #include "placement.h" #include "dock.h" #ifdef USE_XINERAMA # ifdef SOLARIS_XINERAMA /* sucks */ # include <X11/extensions/xinerama.h> # else # include <X11/extensions/Xinerama.h> # endif #endif void wInitXinerama(WScreen * scr) { scr->xine_info.primary_head = 0; scr->xine_info.screens = NULL; scr->xine_info.count = 0; #ifdef USE_XINERAMA # ifdef SOLARIS_XINERAMA if (XineramaGetState(dpy, scr->screen)) { WXineramaInfo *info = &scr->xine_info; XRectangle head[MAXFRAMEBUFFERS]; unsigned char hints[MAXFRAMEBUFFERS]; int i; if (XineramaGetInfo(dpy, scr->screen, head, hints, &info->count)) { info->screens = wmalloc(sizeof(WMRect) * (info->count + 1)); for (i = 0; i < info->count; i++) { info->screens[i].pos.x = head[i].x; info->screens[i].pos.y = head[i].y; info->screens[i].size.width = head[i].width; info->screens[i].size.height = head[i].height; } } } # else /* !SOLARIS_XINERAMA */ if (XineramaIsActive(dpy)) { XineramaScreenInfo *xine_screens; WXineramaInfo *info = &scr->xine_info; int i; xine_screens = XineramaQueryScreens(dpy, &info->count); info->screens = wmalloc(sizeof(WMRect) * (info->count + 1)); for (i = 0; i < info->count; i++) { info->screens[i].pos.x = xine_screens[i].x_org; info->screens[i].pos.y = xine_screens[i].y_org; info->screens[i].size.width = xine_screens[i].width; info->screens[i].size.height = xine_screens[i].height; } XFree(xine_screens); } # endif /* !SOLARIS_XINERAMA */ #endif /* USE_XINERAMA */ } int wGetRectPlacementInfo(WScreen * scr, WMRect rect, int *flags) { int best; unsigned long area, totalArea; int i; int rx = rect.pos.x; int ry = rect.pos.y; int rw = rect.size.width; int rh = rect.size.height; wassertrv(flags != NULL, 0); best = -1; area = 0; totalArea = 0; *flags = XFLAG_NONE; if (scr->xine_info.count <= 1) { unsigned long a; a = calcIntersectionArea(rx, ry, rw, rh, 0, 0, scr->scr_width, scr->scr_height); if (a == 0) { *flags |= XFLAG_DEAD; } else if (a != rw * rh) { *flags |= XFLAG_PARTIAL; } return scr->xine_info.primary_head; } for (i = 0; i < wXineramaHeads(scr); i++) { unsigned long a; a = calcIntersectionArea(rx, ry, rw, rh, scr->xine_info.screens[i].pos.x, scr->xine_info.screens[i].pos.y, scr->xine_info.screens[i].size.width, scr->xine_info.screens[i].size.height); totalArea += a; if (a > area) { if (best != -1) *flags |= XFLAG_MULTIPLE; area = a; best = i; } } if (best == -1) { *flags |= XFLAG_DEAD; best = wGetHeadForPointerLocation(scr); } else if (totalArea != rw * rh) *flags |= XFLAG_PARTIAL; return best; } /* get the head that covers most of the rectangle */ int wGetHeadForRect(WScreen * scr, WMRect rect) { int best; unsigned long area; int i; int rx = rect.pos.x; int ry = rect.pos.y; int rw = rect.size.width; int rh = rect.size.height; if (!scr->xine_info.count) return scr->xine_info.primary_head; best = -1; area = 0; for (i = 0; i < wXineramaHeads(scr); i++) { unsigned long a; a = calcIntersectionArea(rx, ry, rw, rh, scr->xine_info.screens[i].pos.x, scr->xine_info.screens[i].pos.y, scr->xine_info.screens[i].size.width, scr->xine_info.screens[i].size.height); if (a > area) { area = a; best = i; } } /* * in case rect is in dead space, return valid head */ if (best == -1) best = wGetHeadForPointerLocation(scr); return best; } Bool wWindowTouchesHead(WWindow * wwin, int head) { WScreen *scr; WMRect rect; int a; if (!wwin || !wwin->frame) return False; scr = wwin->screen_ptr; rect = wGetRectForHead(scr, head); a = calcIntersectionArea(wwin->frame_x, wwin->frame_y, wwin->frame->core->width, wwin->frame->core->height, rect.pos.x, rect.pos.y, rect.size.width, rect.size.height); return (a != 0); } Bool wAppIconTouchesHead(WAppIcon * aicon, int head) { WScreen *scr; WMRect rect; int a; if (!aicon || !aicon->icon) return False; scr = aicon->icon->core->screen_ptr; rect = wGetRectForHead(scr, head); a = calcIntersectionArea(aicon->x_pos, aicon->y_pos, aicon->icon->core->width, aicon->icon->core->height, rect.pos.x, rect.pos.y, rect.size.width, rect.size.height); return (a != 0); } int wGetHeadForWindow(WWindow * wwin) { WMRect rect; if (wwin == NULL || wwin->frame == NULL) return 0; rect.pos.x = wwin->frame_x; rect.pos.y = wwin->frame_y; rect.size.width = wwin->frame->core->width; rect.size.height = wwin->frame->core->height; return wGetHeadForRect(wwin->screen_ptr, rect); } /* Find head on left, right, up or down direction relative to current head. If there is no screen available on pointed direction, -1 will be returned.*/ int wGetHeadRelativeToCurrentHead(WScreen *scr, int current_head, int direction) { short int found = 0; int i; int distance = 0; int smallest_distance = 0; int nearest_head = scr->xine_info.primary_head; WMRect crect = wGetRectForHead(scr, current_head); for (i = 0; i < scr->xine_info.count; i++) { if (i == current_head) continue; WMRect *rect = &scr->xine_info.screens[i]; /* calculate distance from the next screen to current one */ switch (direction) { case DIRECTION_LEFT: if (rect->pos.x < crect.pos.x) { found = 1; distance = abs((rect->pos.x + rect->size.width) - crect.pos.x) + abs(rect->pos.y + crect.pos.y); } break; case DIRECTION_RIGHT: if (rect->pos.x > crect.pos.x) { found = 1; distance = abs((crect.pos.x + crect.size.width) - rect->pos.x) + abs(rect->pos.y + crect.pos.y); } break; case DIRECTION_UP: if (rect->pos.y < crect.pos.y) { found = 1; distance = abs((rect->pos.y + rect->size.height) - crect.pos.y) + abs(rect->pos.x + crect.pos.x); } break; case DIRECTION_DOWN: if (rect->pos.y > crect.pos.y) { found = 1; distance = abs((crect.pos.y + crect.size.height) - rect->pos.y) + abs(rect->pos.x + crect.pos.x); } break; } if (found && distance == 0) return i; if (smallest_distance == 0) smallest_distance = distance; if (abs(distance) <= smallest_distance) { smallest_distance = distance; nearest_head = i; } } if (found && smallest_distance != 0 && nearest_head != current_head) return nearest_head; return -1; } int wGetHeadForPoint(WScreen * scr, WMPoint point) { int i; for (i = 0; i < scr->xine_info.count; i++) { WMRect *rect = &scr->xine_info.screens[i]; if ((unsigned)(point.x - rect->pos.x) < rect->size.width && (unsigned)(point.y - rect->pos.y) < rect->size.height) return i; } return scr->xine_info.primary_head; } int wGetHeadForPointerLocation(WScreen * scr) { WMPoint point; Window bla; int ble; unsigned int blo; if (!scr->xine_info.count) return scr->xine_info.primary_head; if (!XQueryPointer(dpy, scr->root_win, &bla, &bla, &point.x, &point.y, &ble, &ble, &blo)) return scr->xine_info.primary_head; return wGetHeadForPoint(scr, point); } /* get the dimensions of the head */ WMRect wGetRectForHead(WScreen * scr, int head) { WMRect rect; if (head < scr->xine_info.count) { rect.pos.x = scr->xine_info.screens[head].pos.x; rect.pos.y = scr->xine_info.screens[head].pos.y; rect.size.width = scr->xine_info.screens[head].size.width; rect.size.height = scr->xine_info.screens[head].size.height; } else { rect.pos.x = 0; rect.pos.y = 0; rect.size.width = scr->scr_width; rect.size.height = scr->scr_height; } return rect; } WArea wGetUsableAreaForHead(WScreen * scr, int head, WArea * totalAreaPtr, Bool noicons) { WArea totalArea, usableArea; WMRect rect = wGetRectForHead(scr, head); totalArea.x1 = rect.pos.x; totalArea.y1 = rect.pos.y; totalArea.x2 = totalArea.x1 + rect.size.width; totalArea.y2 = totalArea.y1 + rect.size.height; if (totalAreaPtr != NULL) *totalAreaPtr = totalArea; if (head < wXineramaHeads(scr)) { usableArea = noicons ? scr->totalUsableArea[head] : scr->usableArea[head]; } else usableArea = totalArea; if (noicons) { /* check if user wants dock covered */ if (scr->dock && wPreferences.no_window_over_dock && wAppIconTouchesHead(scr->dock->icon_array[0], head)) { int offset = wPreferences.icon_size + DOCK_EXTRA_SPACE; if (scr->dock->on_right_side) usableArea.x2 -= offset; else usableArea.x1 += offset; } /* check if icons are on the same side as dock, and adjust if not done already */ if (scr->dock && wPreferences.no_window_over_icons && !wPreferences.no_window_over_dock && (wPreferences.icon_yard & IY_VERT)) { int offset = wPreferences.icon_size + DOCK_EXTRA_SPACE; if (scr->dock->on_right_side && (wPreferences.icon_yard & IY_RIGHT)) usableArea.x2 -= offset; /* can't use IY_LEFT in if, it's 0 ... */ if (!scr->dock->on_right_side && !(wPreferences.icon_yard & IY_RIGHT)) usableArea.x1 += offset; } } return usableArea; } WMPoint wGetPointToCenterRectInHead(WScreen * scr, int head, int width, int height) { WMPoint p; WMRect rect = wGetRectForHead(scr, head); p.x = rect.pos.x + (rect.size.width - width) / 2; p.y = rect.pos.y + (rect.size.height - height) / 2; return p; } �����������������������������������������WindowMaker-0.95.9/src/xutil.c����������������������������������������������������������������������0000644�0001750�0001750�00000010411�13431646202�013064� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * WindowMaker miscellaneous functions * * Copyright (c) 1997-2003 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., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301, USA. */ #include <X11/Xlib.h> #include <stdlib.h> #include <X11/Xutil.h> #include <X11/Xatom.h> #include <stdio.h> #include <string.h> #include "wconfig.h" #include "xutil.h" #include <WINGs/WUtil.h> #if 0 static Atom Clipboard = 0; #endif static const char *requestCodes[] = { "DUMMY", "X_CreateWindow", "X_ChangeWindowAttributes", "X_GetWindowAttributes", "X_DestroyWindow", "X_DestroySubwindows", "X_ChangeSaveSet", "X_ReparentWindow", "X_MapWindow", "X_MapSubwindows", "X_UnmapWindow", "X_UnmapSubwindows", "X_ConfigureWindow", "X_CirculateWindow", "X_GetGeometry", "X_QueryTree", "X_InternAtom", "X_GetAtomName", "X_ChangeProperty", "X_DeleteProperty", "X_GetProperty", "X_ListProperties", "X_SetSelectionOwner", "X_GetSelectionOwner", "X_ConvertSelection", "X_SendEvent", "X_GrabPointer", "X_UngrabPointer", "X_GrabButton", "X_UngrabButton", "X_ChangeActivePointerGrab", "X_GrabKeyboard", "X_UngrabKeyboard", "X_GrabKey", "X_UngrabKey", "X_AllowEvents", "X_GrabServer", "X_UngrabServer", "X_QueryPointer", "X_GetMotionEvents", "X_TranslateCoords", "X_WarpPointer", "X_SetInputFocus", "X_GetInputFocus", "X_QueryKeymap", "X_OpenFont", "X_CloseFont", "X_QueryFont", "X_QueryTextExtents", "X_ListFonts", "X_ListFontsWithInfo", "X_SetFontPath", "X_GetFontPath", "X_CreatePixmap", "X_FreePixmap", "X_CreateGC", "X_ChangeGC", "X_CopyGC", "X_SetDashes", "X_SetClipRectangles", "X_FreeGC", "X_ClearArea", "X_CopyArea", "X_CopyPlane", "X_PolyPoint", "X_PolyLine", "X_PolySegment", "X_PolyRectangle", "X_PolyArc", "X_FillPoly", "X_PolyFillRectangle", "X_PolyFillArc", "X_PutImage", "X_GetImage", "X_PolyText8", "X_PolyText16", "X_ImageText8", "X_ImageText16", "X_CreateColormap", "X_FreeColormap", "X_CopyColormapAndFree", "X_InstallColormap", "X_UninstallColormap", "X_ListInstalledColormaps", "X_AllocColor", "X_AllocNamedColor", "X_AllocColorCells", "X_AllocColorPlanes", "X_FreeColors", "X_StoreColors", "X_StoreNamedColor", "X_QueryColors", "X_LookupColor", "X_CreateCursor", "X_CreateGlyphCursor", "X_FreeCursor", "X_RecolorCursor", "X_QueryBestSize", "X_QueryExtension", "X_ListExtensions", "X_ChangeKeyboardMapping", "X_GetKeyboardMapping", "X_ChangeKeyboardControl", "X_GetKeyboardControl", "X_Bell", "X_ChangePointerControl", "X_GetPointerControl", "X_SetScreenSaver", "X_GetScreenSaver", "X_ChangeHosts", "X_ListHosts", "X_SetAccessControl", "X_SetCloseDownMode", "X_KillClient", "X_RotateProperties", "X_ForceScreenSaver", "X_SetPointerMapping", "X_GetPointerMapping", "X_SetModifierMapping", "X_GetModifierMapping", "X_NoOperation" }; void FormatXError(Display * dpy, XErrorEvent * error, char *buffer, int size) { int i, p; XGetErrorText(dpy, error->error_code, buffer, size); i = strlen(buffer); if (i > size - 100) return; buffer += i; if (error->request_code >= wlengthof(requestCodes)) { sprintf(buffer, "\n Request code: %i\n", error->request_code); } else { sprintf(buffer, "\n Request code: %i %s\n", error->request_code, requestCodes[error->request_code]); } i += p = strlen(buffer); if (i > size - 40) return; buffer += p; sprintf(buffer, " Request minor code: %i\n", error->minor_code); i += p = strlen(buffer); if (i > size - 30) return; buffer += p; sprintf(buffer, " Resource ID: 0x%x\n", (unsigned int)error->resourceid); i += p = strlen(buffer); if (i > size - 30) return; buffer += p; sprintf(buffer, " Error serial: %li\n", error->serial); return; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/framewin.h�������������������������������������������������������������������0000644�0001750�0001750�00000012717�13431646202�013547� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef WMFRAMEWINDOW_H_ #define WMFRAMEWINDOW_H_ #include "wcore.h" #include "pixmap.h" #define BORDER_TOP 1 #define BORDER_BOTTOM 2 #define BORDER_LEFT 4 #define BORDER_RIGHT 8 #define BORDER_ALL (1|2|4|8) #define WFF_TITLEBAR (1<<0) #define WFF_LEFT_BUTTON (1<<1) #define WFF_RIGHT_BUTTON (1<<2) #define WFF_RESIZEBAR (1<<3) #define WFF_BORDER (1<<4) #define WFF_SINGLE_STATE (1<<5) #ifdef XKB_BUTTON_HINT #define WFF_LANGUAGE_BUTTON (1<<6) #endif #define WFF_SELECTED (1<<7) #define WFF_IS_SHADED (1<<16) typedef struct WFrameWindow { WScreen *screen_ptr; /* pointer to the screen structure */ WCoreWindow *core; WCoreWindow *titlebar; /* the titlebar */ WCoreWindow *left_button; /* miniaturize button */ #ifdef XKB_BUTTON_HINT WCoreWindow *language_button; #endif WCoreWindow *right_button; /* close button */ short workspace; /* workspace that the window occupies */ short top_width; int *title_clearance; int *title_min_height; int *title_max_height; short bottom_width; short resizebar_corner_width; WCoreWindow *resizebar; /* bottom resizebar */ Pixmap title_back[3]; /* focused, unfocused, pfocused */ Pixmap resizebar_back[3]; /* any, None, None */ Pixmap lbutton_back[3]; Pixmap rbutton_back[3]; #ifdef XKB_BUTTON_HINT Pixmap languagebutton_back[3]; #endif WPixmap *lbutton_image; WPixmap *rbutton_image; #ifdef XKB_BUTTON_HINT WPixmap *languagebutton_image; #endif union WTexture **title_texture; union WTexture **resizebar_texture; WMColor **title_color; WMFont **font; char *title; /* window name (title) */ #ifdef KEEP_XKB_LOCK_STATUS int languagemode; int last_languagemode; #endif /* KEEP_XKB_LOCK_STATUS */ /* thing that uses this frame. passed as data to callbacks */ void *child; /* callbacks */ void (*on_click_left)(WCoreWindow *sender, void *data, XEvent *event); #ifdef XKB_BUTTON_HINT void (*on_click_language)(WCoreWindow *sender, void *data, XEvent *event); #endif void (*on_click_right)(WCoreWindow *sender, void *data, XEvent *event); void (*on_dblclick_right)(WCoreWindow *sender, void *data, XEvent *event); void (*on_mousedown_titlebar)(WCoreWindow *sender, void *data, XEvent *event); void (*on_dblclick_titlebar)(WCoreWindow *sender, void *data, XEvent *event); void (*on_mousedown_resizebar)(WCoreWindow *sender, void *data, XEvent *event); struct { unsigned int state:2; /* 3 possible states */ unsigned int justification:2; unsigned int titlebar:1; unsigned int resizebar:1; unsigned int left_button:1; unsigned int right_button:1; #ifdef XKB_BUTTON_HINT unsigned int language_button:1; #endif unsigned int need_texture_remake:1; unsigned int single_texture:1; unsigned int hide_left_button:1; unsigned int hide_right_button:1; #ifdef XKB_BUTTON_HINT unsigned int hide_language_button:1; #endif unsigned int need_texture_change:1; unsigned int lbutton_dont_fit:1; unsigned int rbutton_dont_fit:1; #ifdef XKB_BUTTON_HINT unsigned int languagebutton_dont_fit:1; #endif unsigned int repaint_only_titlebar:1; unsigned int repaint_only_resizebar:1; unsigned int is_client_window_frame:1; unsigned int incomplete_title:1; } flags; int depth; Visual *visual; Colormap colormap; unsigned long *border_pixel; unsigned long *focused_border_pixel; unsigned long *selected_border_pixel; } WFrameWindow; WFrameWindow* wFrameWindowCreate(WScreen *scr, int wlevel, int x, int y, int width, int height, int *clearance, int *title_min, int *title_max, int flags, union WTexture **title_texture, union WTexture **resize_texture, WMColor **color, WMFont **font, int depth, Visual *visual, Colormap colormap); void wFrameWindowUpdateBorders(WFrameWindow *fwin, int flags); void wFrameWindowDestroy(WFrameWindow *fwin); void wFrameWindowChangeState(WFrameWindow *fwin, int state); void wFrameWindowPaint(WFrameWindow *fwin); void wFrameWindowConfigure(WFrameWindow *fwin, int x, int y, int width, int height); void wFrameWindowResize(WFrameWindow *fwin, int width, int height); void wFrameWindowShowButton(WFrameWindow *fwin, int flags); void wFrameWindowHideButton(WFrameWindow *fwin, int flags); int wFrameWindowChangeTitle(WFrameWindow *fwin, const char *new_title); #ifdef XKB_BUTTON_HINT void wFrameWindowUpdateLanguageButton(WFrameWindow *fwin); #endif #endif �������������������������������������������������WindowMaker-0.95.9/src/placement.c������������������������������������������������������������������0000644�0001750�0001750�00000033627�13642357774�013726� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* placement.c - window and icon placement on screen * * Window Maker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "wconfig.h" #include <X11/Xlib.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <limits.h> #include "WindowMaker.h" #include "wcore.h" #include "framewin.h" #include "window.h" #include "icon.h" #include "appicon.h" #include "actions.h" #include "application.h" #include "dock.h" #include "xinerama.h" #include "placement.h" #define X_ORIGIN WMAX(usableArea.x1,\ wPreferences.window_place_origin.x) #define Y_ORIGIN WMAX(usableArea.y1,\ wPreferences.window_place_origin.y) /* Returns True if it is an icon and is in this workspace */ static Bool iconPosition(WCoreWindow *wcore, int sx1, int sy1, int sx2, int sy2, int workspace, int *retX, int *retY) { void *parent; int ok = 0; parent = wcore->descriptor.parent; /* if it is an application icon */ if (wcore->descriptor.parent_type == WCLASS_APPICON && !((WAppIcon *) parent)->docked) { *retX = ((WAppIcon *) parent)->x_pos; *retY = ((WAppIcon *) parent)->y_pos; ok = 1; } else if (wcore->descriptor.parent_type == WCLASS_MINIWINDOW && (((WIcon *) parent)->owner->frame->workspace == workspace || IS_OMNIPRESENT(((WIcon *) parent)->owner) || wPreferences.sticky_icons) && ((WIcon *) parent)->mapped) { *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)->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 */ if (ok) { if (*retX < sx1 - wPreferences.icon_size) ok = 0; else if (*retX > sx2) ok = 0; if (*retY < sy1 - wPreferences.icon_size) ok = 0; else if (*retY > sy2) ok = 0; } return ok; } void PlaceIcon(WScreen *scr, int *x_ret, int *y_ret, int head) { int pf; /* primary axis */ int sf; /* secondary axis */ int fullW; int fullH; char *map; int pi, si; WCoreWindow *obj; int sx1, sx2, sy1, sy2; /* screen boundary */ int sw, sh; int xo, yo; int xs, ys; int x, y; int isize = wPreferences.icon_size; int done = 0; WMBagIterator iter; WArea area = wGetUsableAreaForHead(scr, head, NULL, False); /* Do not place icons under the dock. */ if (scr->dock) { int offset = wPreferences.icon_size + DOCK_EXTRA_SPACE; if (scr->dock->on_right_side) area.x2 -= offset; else area.x1 += offset; } /* Find out screen boundaries. */ /* Allows each head to have miniwindows */ sx1 = area.x1; sy1 = area.y1; sx2 = area.x2; sy2 = area.y2; sw = sx2 - sx1; sh = sy2 - sy1; sw = isize * (sw / isize); sh = isize * (sh / isize); fullW = (sx2 - sx1) / isize; fullH = (sy2 - sy1) / isize; /* icon yard boundaries */ if (wPreferences.icon_yard & IY_VERT) { pf = fullH; sf = fullW; } else { pf = fullW; sf = fullH; } if (wPreferences.icon_yard & IY_RIGHT) { xo = sx2 - isize; xs = -1; } else { xo = sx1; xs = 1; } if (wPreferences.icon_yard & IY_TOP) { yo = sy1; ys = 1; } else { yo = sy2 - isize; ys = -1; } /* * Create a map with the occupied slots. 1 means the slot is used * or at least partially used. * The slot usage can be optimized by only marking fully used slots * or slots that have most of it covered. * Space usage is worse than the fvwm algorithm (used in the old version) * but complexity is much better (faster) than it. */ map = wmalloc((sw + 2) * (sh + 2)); #define INDEX(x,y) (((y)+1)*(sw+2) + (x) + 1) WM_ETARETI_BAG(scr->stacking_list, obj, iter) { while (obj) { int x, y; if (iconPosition(obj, sx1, sy1, sx2, sy2, scr->current_workspace, &x, &y)) { int xdi, ydi; /* rounded down */ int xui, yui; /* rounded up */ xdi = x / isize; ydi = y / isize; xui = (x + isize / 2) / isize; yui = (y + isize / 2) / isize; map[INDEX(xdi, ydi)] = 1; map[INDEX(xdi, yui)] = 1; map[INDEX(xui, ydi)] = 1; map[INDEX(xui, yui)] = 1; } obj = obj->stacking->under; } } /* Default position */ *x_ret = 0; *y_ret = 0; /* Look for an empty slot */ for (si = 0; si < sf; si++) { for (pi = 0; pi < pf; pi++) { if (wPreferences.icon_yard & IY_VERT) { x = xo + xs * (si * isize); y = yo + ys * (pi * isize); } else { x = xo + xs * (pi * isize); y = yo + ys * (si * isize); } if (!map[INDEX(x / isize, y / isize)]) { *x_ret = x; *y_ret = y; done = 1; break; } } if (done) break; } wfree(map); } /* Computes the intersecting length of two line sections */ int calcIntersectionLength(int p1, int l1, int p2, int l2) { int isect; int tmp; if (p1 > p2) { tmp = p1; p1 = p2; p2 = tmp; tmp = l1; l1 = l2; l2 = tmp; } if (p1 + l1 < p2) isect = 0; else if (p2 + l2 < p1 + l1) isect = l2; else isect = p1 + l1 - p2; return isect; } /* Computes the intersecting area of two rectangles */ int calcIntersectionArea(int x1, int y1, int w1, int h1, int x2, int y2, int w2, int h2) { return calcIntersectionLength(x1, w1, x2, w2) * calcIntersectionLength(y1, h1, y2, h2); } static int calcSumOfCoveredAreas(WWindow *wwin, int x, int y, int w, int h) { int sum_isect = 0; WWindow *test_window; int tw, tx, ty, th; test_window = wwin->screen_ptr->focused_window; for (; test_window != NULL && test_window->prev != NULL;) test_window = test_window->prev; for (; test_window != NULL; test_window = test_window->next) { if (test_window->frame->core->stacking->window_level < WMNormalLevel) { continue; } tw = test_window->frame->core->width; th = test_window->frame->core->height; tx = test_window->frame_x; ty = test_window->frame_y; if (test_window->flags.mapped || (test_window->flags.shaded && test_window->frame->workspace == wwin->screen_ptr->current_workspace && !(test_window->flags.miniaturized || test_window->flags.hidden))) { sum_isect += calcIntersectionArea(tx, ty, tw, th, x, y, w, h); } } return sum_isect; } static void set_width_height(WWindow *wwin, unsigned int *width, unsigned int *height) { if (wwin->frame) { *height += wwin->frame->top_width + wwin->frame->bottom_width; } else { if (HAS_TITLEBAR(wwin)) *height += TITLEBAR_HEIGHT; if (HAS_RESIZEBAR(wwin)) *height += RESIZEBAR_HEIGHT; } if (HAS_BORDER(wwin)) { *height += 2 * wwin->screen_ptr->frame_border_width; *width += 2 * wwin->screen_ptr->frame_border_width; } } static Bool window_overlaps(WWindow *win, int x, int y, int w, int h, Bool ignore_sunken) { int tw, th, tx, ty; if (ignore_sunken && win->frame->core->stacking->window_level < WMNormalLevel) { return False; } tw = win->frame->core->width; th = win->frame->core->height; tx = win->frame_x; ty = win->frame_y; if ((tx < (x + w)) && ((tx + tw) > x) && (ty < (y + h)) && ((ty + th) > y) && (win->flags.mapped || (win->flags.shaded && win->frame->workspace == win->screen_ptr->current_workspace && !(win->flags.miniaturized || win->flags.hidden)))) { return True; } return False; } static Bool screen_has_space(WScreen *scr, int x, int y, int w, int h, Bool ignore_sunken) { WWindow *focused = scr->focused_window, *i; for (i = focused; i; i = i->next) { if (window_overlaps(i, x, y, w, h, ignore_sunken)) { return False; } } for (i = focused; i; i = i->prev) { if (window_overlaps(i, x, y, w, h, ignore_sunken)) { return False; } } return True; } static void smartPlaceWindow(WWindow *wwin, int *x_ret, int *y_ret, unsigned int width, unsigned int height, WArea usableArea) { int test_x = 0, test_y = Y_ORIGIN; int from_x, to_x, from_y, to_y; int sx; int min_isect, min_isect_x, min_isect_y; int sum_isect; set_width_height(wwin, &width, &height); sx = X_ORIGIN; min_isect = INT_MAX; min_isect_x = sx; min_isect_y = test_y; while (((test_y + height) < usableArea.y2)) { test_x = sx; while ((test_x + width) < usableArea.x2) { sum_isect = calcSumOfCoveredAreas(wwin, test_x, test_y, width, height); if (sum_isect < min_isect) { min_isect = sum_isect; min_isect_x = test_x; min_isect_y = test_y; } test_x += PLACETEST_HSTEP; } test_y += PLACETEST_VSTEP; } from_x = min_isect_x - PLACETEST_HSTEP + 1; from_x = WMAX(from_x, X_ORIGIN); to_x = min_isect_x + PLACETEST_HSTEP; if (to_x + width > usableArea.x2) to_x = usableArea.x2 - width; from_y = min_isect_y - PLACETEST_VSTEP + 1; from_y = WMAX(from_y, Y_ORIGIN); to_y = min_isect_y + PLACETEST_VSTEP; if (to_y + height > usableArea.y2) to_y = usableArea.y2 - height; for (test_x = from_x; test_x < to_x; test_x++) { for (test_y = from_y; test_y < to_y; test_y++) { sum_isect = calcSumOfCoveredAreas(wwin, test_x, test_y, width, height); if (sum_isect < min_isect) { min_isect = sum_isect; min_isect_x = test_x; min_isect_y = test_y; } } } *x_ret = min_isect_x; *y_ret = min_isect_y; } static Bool center_place_window(WWindow *wwin, int *x_ret, int *y_ret, unsigned int width, unsigned int height, WArea usableArea) { int swidth, sheight; set_width_height(wwin, &width, &height); swidth = usableArea.x2 - usableArea.x1; sheight = usableArea.y2 - usableArea.y1; if (width > swidth || height > sheight) return False; *x_ret = (usableArea.x1 + usableArea.x2 - width) / 2; *y_ret = (usableArea.y1 + usableArea.y2 - height) / 2; return True; } static Bool autoPlaceWindow(WWindow *wwin, int *x_ret, int *y_ret, unsigned int width, unsigned int height, Bool ignore_sunken, WArea usableArea) { WScreen *scr = wwin->screen_ptr; int x, y; int sw, sh; set_width_height(wwin, &width, &height); sw = usableArea.x2 - usableArea.x1; sh = usableArea.y2 - usableArea.y1; /* try placing at center first */ if (center_place_window(wwin, &x, &y, width, height, usableArea) && screen_has_space(scr, x, y, width, height, False)) { *x_ret = x; *y_ret = y; return True; } /* this was based on fvwm2's smart placement */ for (y = Y_ORIGIN; (y + height) < sh; y += PLACETEST_VSTEP) { for (x = X_ORIGIN; (x + width) < sw; x += PLACETEST_HSTEP) { if (screen_has_space(scr, x, y, width, height, ignore_sunken)) { *x_ret = x; *y_ret = y; return True; } } } return False; } static void cascadeWindow(WScreen *scr, WWindow *wwin, int *x_ret, int *y_ret, unsigned int width, unsigned int height, int h, WArea usableArea) { set_width_height(wwin, &width, &height); *x_ret = h * scr->cascade_index + X_ORIGIN; *y_ret = h * scr->cascade_index + Y_ORIGIN; if (width + *x_ret > usableArea.x2 || height + *y_ret > usableArea.y2) { scr->cascade_index = 0; *x_ret = X_ORIGIN; *y_ret = Y_ORIGIN; } } static void randomPlaceWindow(WWindow *wwin, int *x_ret, int *y_ret, unsigned int width, unsigned int height, WArea usableArea) { int w, h; set_width_height(wwin, &width, &height); w = ((usableArea.x2 - X_ORIGIN) - width); h = ((usableArea.y2 - Y_ORIGIN) - height); if (w < 1) w = 1; if (h < 1) h = 1; *x_ret = X_ORIGIN + rand() % w; *y_ret = Y_ORIGIN + rand() % h; } void PlaceWindow(WWindow *wwin, int *x_ret, int *y_ret, unsigned width, unsigned height) { WScreen *scr = wwin->screen_ptr; int h = WMFontHeight(scr->title_font) + (wPreferences.window_title_clearance + TITLEBAR_EXTEND_SPACE) * 2; if (h > wPreferences.window_title_max_height) h = wPreferences.window_title_max_height; if (h < wPreferences.window_title_min_height) h = wPreferences.window_title_min_height; WArea usableArea = wGetUsableAreaForHead(scr, wGetHeadForPointerLocation(scr), NULL, True); switch (wPreferences.window_placement) { case WPM_MANUAL: InteractivePlaceWindow(wwin, x_ret, y_ret, width, height); break; case WPM_SMART: smartPlaceWindow(wwin, x_ret, y_ret, width, height, usableArea); break; case WPM_CENTER: if (center_place_window(wwin, x_ret, y_ret, width, height, usableArea)) break; /* Fall through. */ case WPM_AUTO: if (autoPlaceWindow(wwin, x_ret, y_ret, width, height, False, usableArea)) { break; } else if (autoPlaceWindow(wwin, x_ret, y_ret, width, height, True, usableArea)) { break; } /* there isn't a break here, because if we fail, it should fall through to cascade placement, as people who want tiling want automagicness aren't going to want to place their window */ /* Fall through. */ case WPM_CASCADE: if (wPreferences.window_placement == WPM_AUTO || wPreferences.window_placement == WPM_CENTER) scr->cascade_index++; cascadeWindow(scr, wwin, x_ret, y_ret, width, height, h, usableArea); if (wPreferences.window_placement == WPM_CASCADE) scr->cascade_index++; break; case WPM_RANDOM: randomPlaceWindow(wwin, x_ret, y_ret, width, height, usableArea); break; } /* * clip to usableArea instead of full screen * this will also take dock/clip etc.. into account * as well as being xinerama friendly */ if (*x_ret + width > usableArea.x2) *x_ret = usableArea.x2 - width; if (*x_ret < usableArea.x1) *x_ret = usableArea.x1; if (*y_ret + height > usableArea.y2) *y_ret = usableArea.y2 - height; if (*y_ret < usableArea.y1) *y_ret = usableArea.y1; } ���������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/colormap.c�������������������������������������������������������������������0000644�0001750�0001750�00000005650�13431646202�013544� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* colormap.c - colormap handling code * * Window Maker window manager * * Copyright (c) 1998-2003 Alfredo K. Kojima * * This code slightly based on fvwm code, * Copyright (c) Rob Nation and others * but completely rewritten. * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "wconfig.h" #include "WindowMaker.h" #include <X11/Xatom.h> #include "window.h" #include "framewin.h" #include "colormap.h" void wColormapInstallForWindow(WScreen * scr, WWindow * wwin) { int i; XWindowAttributes attributes; int done = 0; Window xwin = None; if (wwin) { xwin = wwin->client_win; } else { xwin = scr->root_win; } scr->cmap_window = wwin; if (scr->root_colormap_install_count > 0) { scr->original_cmap_window = wwin; return; } /* install colormap for all windows of the client */ if (wwin && wwin->cmap_window_no > 0 && wwin->cmap_windows) { for (i = wwin->cmap_window_no - 1; i >= 0; i--) { Window w; w = wwin->cmap_windows[i]; if (w == wwin->client_win) done = 1; XGetWindowAttributes(dpy, w, &attributes); if (attributes.colormap == None) attributes.colormap = scr->colormap; if (scr->current_colormap != attributes.colormap) { scr->current_colormap = attributes.colormap; /* * ICCCM 2.0: some client requested permission * to install colormaps by itself and we granted. * So, we can't install any colormaps. */ if (!scr->flags.colormap_stuff_blocked) XInstallColormap(dpy, attributes.colormap); } } } if (!done) { attributes.colormap = None; if (xwin != None) XGetWindowAttributes(dpy, xwin, &attributes); if (attributes.colormap == None) attributes.colormap = scr->colormap; if (scr->current_colormap != attributes.colormap) { scr->current_colormap = attributes.colormap; if (!scr->flags.colormap_stuff_blocked) XInstallColormap(dpy, attributes.colormap); } } XSync(dpy, False); } void wColormapAllowClientInstallation(WScreen * scr, Bool starting) { scr->flags.colormap_stuff_blocked = starting; /* * Client stopped managing the colormap stuff. Restore the colormap * that would be installed if the client did not request colormap * stuff. */ if (!starting) { XInstallColormap(dpy, scr->current_colormap); XSync(dpy, False); } } ����������������������������������������������������������������������������������������WindowMaker-0.95.9/src/properties.h�����������������������������������������������������������������0000644�0001750�0001750�00000003002�13431646202�014116� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef WMPROPERTIES_H_ #define WMPROPERTIES_H_ #include "GNUstep.h" unsigned char* PropGetCheckProperty(Window window, Atom hint, Atom type, int format, int count, int *retCount); int PropGetWindowState(Window window); int PropGetNormalHints(Window window, XSizeHints *size_hints, int *pre_iccm); void PropGetProtocols(Window window, WProtocols *prots); int PropGetWMClass(Window window, char **wm_class, char **wm_instance); int PropGetGNUstepWMAttr(Window window, GNUstepWMAttributes **attr); void PropSetWMakerProtocols(Window root); void PropCleanUp(Window root); void PropSetIconTileHint(WScreen *scr, RImage *image); Window PropGetClientLeader(Window window); #endif ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/winmenu.c��������������������������������������������������������������������0000644�0001750�0001750�00000054150�13431646202�013411� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* winmenu.c - command menu for windows * * Window Maker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "wconfig.h" #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <X11/Xlib.h> #include <X11/Xutil.h> #include <X11/XKBlib.h> #include "WindowMaker.h" #include "actions.h" #include "menu.h" #include "main.h" #include "window.h" #include "client.h" #include "application.h" #include "keybind.h" #include "misc.h" #include "framewin.h" #include "workspace.h" #include "winspector.h" #include "dialog.h" #include "stacking.h" #include "icon.h" #include "xinerama.h" #include "winmenu.h" static WMenu *makeWorkspaceMenu(WScreen *scr); static WMenu *makeOptionsMenu(WScreen *scr); static WMenu *makeMaximizeMenu(WScreen *scr); /* * Define the Menu entry that will be present in the Window menu * * The order of this list defines the order in which they will appear; * make sure to keep the structure below aligned with the list because * the constant index is used in many places. */ enum { MC_MAXIMIZE, MC_OTHERMAX, MC_MINIATURIZE, MC_SHADE, MC_HIDE, MC_MOVERESIZE, MC_SELECT, MC_CHANGEWKSPC, MC_PROPERTIES, MC_OPTIONS, MC_RELAUNCH, MC_CLOSE, MC_KILL }; static const struct { const char *label; WMenu *(*generate_submenu)(WScreen *scr); } window_menu_entries[] = { [MC_MAXIMIZE] = { N_("Maximize"), NULL }, [MC_OTHERMAX] = { N_("Other maximization"), makeMaximizeMenu }, [MC_MINIATURIZE] = { N_("Miniaturize"), NULL }, [MC_SHADE] = { N_("Shade"), NULL }, [MC_HIDE] = { N_("Hide"), NULL }, [MC_MOVERESIZE] = { N_("Resize/Move"), NULL }, [MC_SELECT] = { N_("Select"), NULL }, [MC_CHANGEWKSPC] = { N_("Move To"), makeWorkspaceMenu }, [MC_PROPERTIES] = { N_("Attributes..."), NULL }, [MC_OPTIONS] = { N_("Options"), makeOptionsMenu }, [MC_RELAUNCH] = { N_("Launch"), NULL }, [MC_CLOSE] = { N_("Close"), NULL }, [MC_KILL] = { N_("Kill"), NULL } }; /* * Defines the menu entries for the Options sub-menu * * These options will be placed at the beginning of the menu, the rest will * be populated with the Window Shortcut possibilities */ enum { WO_KEEP_ON_TOP, WO_KEEP_AT_BOTTOM, WO_OMNIPRESENT }; static const char *const menu_options_entries[] = { [WO_KEEP_ON_TOP] = N_("Keep on top"), [WO_KEEP_AT_BOTTOM] = N_("Keep at bottom"), [WO_OMNIPRESENT] = N_("Omnipresent") }; /* * Defines the menu entries for the Other maximization sub-menu */ static const struct { const char *label; unsigned int shortcut_idx; int maxim_direction; } menu_maximize_entries[] = { { N_("Maximize vertically"), WKBD_VMAXIMIZE, MAX_VERTICAL }, { N_("Maximize horizontally"), WKBD_HMAXIMIZE, MAX_HORIZONTAL }, { N_("Maximize left half"), WKBD_LHMAXIMIZE, MAX_VERTICAL | MAX_LEFTHALF }, { N_("Maximize right half"), WKBD_RHMAXIMIZE, MAX_VERTICAL | MAX_RIGHTHALF }, { N_("Maximize top half"), WKBD_THMAXIMIZE, MAX_HORIZONTAL | MAX_TOPHALF }, { N_("Maximize bottom half"), WKBD_BHMAXIMIZE, MAX_HORIZONTAL | MAX_BOTTOMHALF }, { N_("Maximize left top corner"), WKBD_LTCMAXIMIZE, MAX_LEFTHALF | MAX_TOPHALF }, { N_("Maximize right top corner"), WKBD_RTCMAXIMIZE, MAX_RIGHTHALF | MAX_TOPHALF }, { N_("Maximize left bottom corner"), WKBD_LBCMAXIMIZE, MAX_LEFTHALF | MAX_BOTTOMHALF }, { N_("Maximize right bottom corner"), WKBD_RBCMAXIMIZE, MAX_RIGHTHALF | MAX_BOTTOMHALF }, { N_("Maximus: tiled maximization"), WKBD_MAXIMUS, MAX_MAXIMUS } }; static void updateOptionsMenu(WMenu * menu, WWindow * wwin); static void execWindowOptionCommand(WMenu * menu, WMenuEntry * entry) { WWindow *wwin = (WWindow *) entry->clientdata; /* Parameter not used, but tell the compiler that it is ok */ (void) menu; switch (entry->order) { case WO_KEEP_ON_TOP: if (wwin->frame->core->stacking->window_level != WMFloatingLevel) ChangeStackingLevel(wwin->frame->core, WMFloatingLevel); else ChangeStackingLevel(wwin->frame->core, WMNormalLevel); break; case WO_KEEP_AT_BOTTOM: if (wwin->frame->core->stacking->window_level != WMSunkenLevel) ChangeStackingLevel(wwin->frame->core, WMSunkenLevel); else ChangeStackingLevel(wwin->frame->core, WMNormalLevel); break; case WO_OMNIPRESENT: wWindowSetOmnipresent(wwin, !wwin->flags.omnipresent); break; } } static void execMaximizeCommand(WMenu * menu, WMenuEntry * entry) { WWindow *wwin = (WWindow *) entry->clientdata; /* Parameter not used, but tell the compiler that it is ok */ (void) menu; handleMaximize(wwin, menu_maximize_entries[entry->order].maxim_direction); } static void updateUnmaximizeShortcut(WMenuEntry * entry, int flags) { int key; switch (flags & (MAX_HORIZONTAL | MAX_VERTICAL | MAX_LEFTHALF | MAX_RIGHTHALF | MAX_TOPHALF | MAX_BOTTOMHALF | MAX_MAXIMUS)) { case MAX_HORIZONTAL: key = WKBD_HMAXIMIZE; break; case MAX_VERTICAL: key = WKBD_VMAXIMIZE; break; case MAX_LEFTHALF | MAX_VERTICAL: key = WKBD_LHMAXIMIZE; break; case MAX_RIGHTHALF | MAX_VERTICAL: key = WKBD_RHMAXIMIZE; break; case MAX_TOPHALF | MAX_HORIZONTAL: key = WKBD_THMAXIMIZE; break; case MAX_BOTTOMHALF | MAX_HORIZONTAL: key = WKBD_BHMAXIMIZE; break; case MAX_LEFTHALF | MAX_TOPHALF: key = WKBD_LTCMAXIMIZE; break; case MAX_RIGHTHALF | MAX_TOPHALF: key = WKBD_RTCMAXIMIZE; break; case MAX_LEFTHALF | MAX_BOTTOMHALF: key = WKBD_LBCMAXIMIZE; break; case MAX_RIGHTHALF | MAX_BOTTOMHALF: key = WKBD_RBCMAXIMIZE; break; case MAX_MAXIMUS: key = WKBD_MAXIMUS; break; default: key = WKBD_MAXIMIZE; break; } entry->rtext = GetShortcutKey(wKeyBindings[key]); } static void execMenuCommand(WMenu * menu, WMenuEntry * entry) { WWindow *wwin = (WWindow *) entry->clientdata; WApplication *wapp; CloseWindowMenu(menu->frame->screen_ptr); switch (entry->order) { case MC_CLOSE: /* send delete message */ wClientSendProtocol(wwin, w_global.atom.wm.delete_window, w_global.timestamp.last_event); break; case MC_KILL: wretain(wwin); if (wPreferences.dont_confirm_kill || wMessageDialog(menu->frame->screen_ptr, _("Kill Application"), _ ("This will kill the application.\nAny unsaved changes will be lost.\nPlease confirm."), _("Yes"), _("No"), NULL) == WAPRDefault) { if (!wwin->flags.destroyed) wClientKill(wwin); } wrelease(wwin); break; case MC_MINIATURIZE: if (wwin->flags.miniaturized) { wDeiconifyWindow(wwin); } else { if (wwin->protocols.MINIATURIZE_WINDOW) { wClientSendProtocol(wwin, w_global.atom.gnustep.wm_miniaturize_window, w_global.timestamp.last_event); } else { wIconifyWindow(wwin); } } break; case MC_MAXIMIZE: if (wwin->flags.maximized) wUnmaximizeWindow(wwin); else wMaximizeWindow(wwin, MAX_VERTICAL | MAX_HORIZONTAL, wGetHeadForWindow(wwin)); break; case MC_SHADE: if (wwin->flags.shaded) wUnshadeWindow(wwin); else wShadeWindow(wwin); break; case MC_SELECT: if (!wwin->flags.miniaturized) wSelectWindow(wwin, !wwin->flags.selected); else wIconSelect(wwin->icon); break; case MC_MOVERESIZE: wKeyboardMoveResizeWindow(wwin); break; case MC_PROPERTIES: wShowInspectorForWindow(wwin); break; case MC_RELAUNCH: (void) RelaunchWindow(wwin); break; case MC_HIDE: wapp = wApplicationOf(wwin->main_window); wHideApplication(wapp); break; } } static void switchWSCommand(WMenu * menu, WMenuEntry * entry) { WWindow *wwin = (WWindow *) entry->clientdata; /* Parameter not used, but tell the compiler that it is ok */ (void) menu; wSelectWindow(wwin, False); wWindowChangeWorkspace(wwin, entry->order); } static void makeShortcutCommand(WMenu * menu, WMenuEntry * entry) { WWindow *wwin = (WWindow *) entry->clientdata; WScreen *scr = wwin->screen_ptr; int index = entry->order - wlengthof(menu_options_entries); /* Parameter not used, but tell the compiler that it is ok */ (void) menu; if (scr->shortcutWindows[index]) { WMFreeArray(scr->shortcutWindows[index]); scr->shortcutWindows[index] = NULL; } if (wwin->flags.selected && scr->selected_windows) { scr->shortcutWindows[index] = WMDuplicateArray(scr->selected_windows); /*WMRemoveFromArray(scr->shortcutWindows[index], wwin); WMInsertInArray(scr->shortcutWindows[index], 0, wwin); */ } else { scr->shortcutWindows[index] = WMCreateArray(4); WMAddToArray(scr->shortcutWindows[index], wwin); } wSelectWindow(wwin, !wwin->flags.selected); XFlush(dpy); wusleep(3000); wSelectWindow(wwin, !wwin->flags.selected); XFlush(dpy); } static void updateWorkspaceMenu(WMenu * menu) { WScreen *scr = menu->frame->screen_ptr; char title[MAX_WORKSPACENAME_WIDTH + 1]; WMenuEntry *entry; int i; for (i = 0; i < scr->workspace_count; i++) { if (i < menu->entry_no) { entry = menu->entries[i]; if (strcmp(entry->text, scr->workspaces[i]->name) != 0) { wfree(entry->text); strncpy(title, scr->workspaces[i]->name, MAX_WORKSPACENAME_WIDTH); title[MAX_WORKSPACENAME_WIDTH] = 0; menu->entries[i]->text = wstrdup(title); menu->entries[i]->rtext = GetShortcutKey(wKeyBindings[WKBD_MOVE_WORKSPACE1 + i]); menu->flags.realized = 0; } } else { strncpy(title, scr->workspaces[i]->name, MAX_WORKSPACENAME_WIDTH); title[MAX_WORKSPACENAME_WIDTH] = 0; entry = wMenuAddCallback(menu, title, switchWSCommand, NULL); entry->rtext = GetShortcutKey(wKeyBindings[WKBD_MOVE_WORKSPACE1 + i]); menu->flags.realized = 0; } /* workspace shortcut labels */ if (i / 10 == scr->current_workspace / 10) entry->rtext = GetShortcutKey(wKeyBindings[WKBD_MOVE_WORKSPACE1 + (i % 10)]); else entry->rtext = NULL; } if (!menu->flags.realized) wMenuRealize(menu); } static void updateMakeShortcutMenu(WMenu * menu, WWindow * wwin) { WMenu *smenu = menu->cascades[menu->entries[MC_OPTIONS]->cascade]; int i; char *buffer; int buflen; KeyCode kcode; if (!smenu) return; buflen = strlen(_("Set Shortcut")) + 16; buffer = wmalloc(buflen); for (i = wlengthof(menu_options_entries); i < smenu->entry_no; i++) { int shortcutNo = i - wlengthof(menu_options_entries); WMenuEntry *entry = smenu->entries[i]; WMArray *shortSelWindows = wwin->screen_ptr->shortcutWindows[shortcutNo]; snprintf(buffer, buflen, "%s %i", _("Set Shortcut"), shortcutNo + 1); if (!shortSelWindows) { entry->flags.indicator_on = 0; } else { entry->flags.indicator_on = 1; if (WMCountInArray(shortSelWindows, wwin)) entry->flags.indicator_type = MI_DIAMOND; else entry->flags.indicator_type = MI_CHECK; } if (strcmp(buffer, entry->text) != 0) { wfree(entry->text); entry->text = wstrdup(buffer); smenu->flags.realized = 0; } kcode = wKeyBindings[WKBD_WINDOW1 + shortcutNo].keycode; if (kcode) { char *tmp; tmp = GetShortcutKey(wKeyBindings[WKBD_WINDOW1 + shortcutNo]); if (tmp == NULL) { if (entry->rtext != NULL) { /* There was a shortcut, but there is no more */ wfree(entry->rtext); entry->rtext = NULL; smenu->flags.realized = 0; } } else if (entry->rtext == NULL) { /* There was no shortcut, but there is one now */ entry->rtext = tmp; smenu->flags.realized = 0; } else if (strcmp(tmp, entry->rtext) != 0) { /* There was a shortcut, but it has changed */ wfree(entry->rtext); entry->rtext = tmp; smenu->flags.realized = 0; } else { /* There was a shortcut but it did not change */ wfree(tmp); } wMenuSetEnabled(smenu, i, True); } else { wMenuSetEnabled(smenu, i, False); if (entry->rtext) { wfree(entry->rtext); entry->rtext = NULL; smenu->flags.realized = 0; } } entry->clientdata = wwin; } wfree(buffer); if (!smenu->flags.realized) wMenuRealize(smenu); } static void updateOptionsMenu(WMenu * menu, WWindow * wwin) { WMenu *smenu = menu->cascades[menu->entries[MC_OPTIONS]->cascade]; /* keep on top check */ 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); smenu->entries[WO_KEEP_ON_TOP]->rtext = GetShortcutKey(wKeyBindings[WKBD_KEEP_ON_TOP]); /* 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); smenu->entries[WO_KEEP_AT_BOTTOM]->rtext = GetShortcutKey(wKeyBindings[WKBD_KEEP_AT_BOTTOM]); /* omnipresent check */ smenu->entries[WO_OMNIPRESENT]->clientdata = wwin; smenu->entries[WO_OMNIPRESENT]->flags.indicator_on = IS_OMNIPRESENT(wwin); smenu->entries[WO_OMNIPRESENT]->rtext = GetShortcutKey(wKeyBindings[WKBD_OMNIPRESENT]); smenu->flags.realized = 0; wMenuRealize(smenu); } static void updateMaximizeMenu(WMenu * menu, WWindow * wwin) { WMenu *smenu = menu->cascades[menu->entries[MC_OTHERMAX]->cascade]; int i; for (i = 0; i < smenu->entry_no; i++) { smenu->entries[i]->clientdata = wwin; smenu->entries[i]->rtext = GetShortcutKey(wKeyBindings[menu_maximize_entries[i].shortcut_idx]); } smenu->flags.realized = 0; wMenuRealize(smenu); } static WMenu *makeWorkspaceMenu(WScreen * scr) { WMenu *menu; menu = wMenuCreate(scr, NULL, False); if (!menu) { wwarning(_("could not create submenu for window menu")); return NULL; } updateWorkspaceMenu(menu); /* * The Workspace Menu is made visible in the screen structure because * it is updated when there is a change on workspaces. This was done * to be efficient, avoiding re-generating completely the window menu * and its sub-menus every time it is needed. */ scr->workspace_submenu = menu; return menu; } static WMenu *makeOptionsMenu(WScreen * scr) { WMenu *menu; WMenuEntry *entry; int i; menu = wMenuCreate(scr, NULL, False); if (!menu) { wwarning(_("could not create submenu for window menu")); return NULL; } for (i = 0; i < wlengthof(menu_options_entries); i++) { entry = wMenuAddCallback(menu, _(menu_options_entries[i]), execWindowOptionCommand, NULL); entry->flags.indicator = 1; entry->flags.indicator_type = MI_CHECK; } for (i = 0; i < MAX_WINDOW_SHORTCUTS; i++) { entry = wMenuAddCallback(menu, "", makeShortcutCommand, NULL); entry->flags.indicator = 1; } return menu; } static WMenu *makeMaximizeMenu(WScreen * scr) { WMenu *menu; int i; menu = wMenuCreate(scr, NULL, False); if (!menu) { wwarning(_("could not create submenu for window menu")); return NULL; } for (i = 0; i < wlengthof(menu_maximize_entries); i++) wMenuAddCallback(menu, _(menu_maximize_entries[i].label), execMaximizeCommand, NULL); return menu; } static WMenu *createWindowMenu(WScreen * scr) { WMenu *menu; int i; menu = wMenuCreate(scr, NULL, False); for (i = 0; i < wlengthof(window_menu_entries); i++) { WMenuEntry *entry; entry = wMenuAddCallback(menu, _(window_menu_entries[i].label), (window_menu_entries[i].generate_submenu == NULL)?execMenuCommand:NULL, NULL); if (window_menu_entries[i].generate_submenu != NULL) { WMenu *submenu; submenu = window_menu_entries[i].generate_submenu(scr); wMenuEntrySetCascade(menu, entry, submenu); } } return menu; } void CloseWindowMenu(WScreen * scr) { if (scr->window_menu) { if (scr->window_menu->flags.mapped) wMenuUnmap(scr->window_menu); if (scr->window_menu->entries[0]->clientdata) { WWindow *wwin = (WWindow *) scr->window_menu->entries[0]->clientdata; wwin->flags.menu_open_for_me = 0; } scr->window_menu->entries[0]->clientdata = NULL; } } static void updateMenuForWindow(WMenu * menu, WWindow * wwin) { WApplication *wapp = wApplicationOf(wwin->main_window); WScreen *scr = wwin->screen_ptr; int i; updateOptionsMenu(menu, wwin); updateMaximizeMenu(menu, wwin); updateMakeShortcutMenu(menu, wwin); wMenuSetEnabled(menu, MC_HIDE, wapp != NULL && !WFLAGP(wapp->main_window_desc, no_appicon)); wMenuSetEnabled(menu, MC_CLOSE, (wwin->protocols.DELETE_WINDOW && !WFLAGP(wwin, no_closable))); if (wwin->flags.miniaturized) { static char *text = NULL; if (!text) text = _("Deminiaturize"); menu->entries[MC_MINIATURIZE]->text = text; } else { static char *text = NULL; if (!text) text = _("Miniaturize"); menu->entries[MC_MINIATURIZE]->text = text; } wMenuSetEnabled(menu, MC_MINIATURIZE, !WFLAGP(wwin, no_miniaturizable)); if (wwin->flags.maximized) { static char *text = NULL; if (!text) text = _("Unmaximize"); menu->entries[MC_MAXIMIZE]->text = text; updateUnmaximizeShortcut(menu->entries[MC_MAXIMIZE], wwin->flags.maximized); } else { static char *text = NULL; if (!text) text = _("Maximize"); menu->entries[MC_MAXIMIZE]->text = text; menu->entries[MC_MAXIMIZE]->rtext = GetShortcutKey(wKeyBindings[WKBD_MAXIMIZE]); } wMenuSetEnabled(menu, MC_MAXIMIZE, IS_RESIZABLE(wwin)); wMenuSetEnabled(menu, MC_MOVERESIZE, IS_RESIZABLE(wwin) && !wwin->flags.miniaturized); if (wwin->flags.shaded) { static char *text = NULL; if (!text) text = _("Unshade"); menu->entries[MC_SHADE]->text = text; } else { static char *text = NULL; if (!text) text = _("Shade"); menu->entries[MC_SHADE]->text = text; } wMenuSetEnabled(menu, MC_SHADE, !WFLAGP(wwin, no_shadeable) && !wwin->flags.miniaturized); if (wwin->flags.selected) { static char *text = NULL; if (!text) text = _("Deselect"); menu->entries[MC_SELECT]->text = text; } else { static char *text = NULL; if (!text) text = _("Select"); menu->entries[MC_SELECT]->text = text; } wMenuSetEnabled(menu, MC_CHANGEWKSPC, !IS_OMNIPRESENT(wwin)); if (!wwin->flags.inspector_open) { wMenuSetEnabled(menu, MC_PROPERTIES, True); } else { wMenuSetEnabled(menu, MC_PROPERTIES, False); } /* Update shortcut labels except for (Un)Maximize which is * handled separately. */ menu->entries[MC_MINIATURIZE]->rtext = GetShortcutKey(wKeyBindings[WKBD_MINIATURIZE]); menu->entries[MC_SHADE]->rtext = GetShortcutKey(wKeyBindings[WKBD_SHADE]); menu->entries[MC_HIDE]->rtext = GetShortcutKey(wKeyBindings[WKBD_HIDE]); menu->entries[MC_MOVERESIZE]->rtext = GetShortcutKey(wKeyBindings[WKBD_MOVERESIZE]); menu->entries[MC_SELECT]->rtext = GetShortcutKey(wKeyBindings[WKBD_SELECT]); menu->entries[MC_RELAUNCH]->rtext = GetShortcutKey(wKeyBindings[WKBD_RELAUNCH]); menu->entries[MC_CLOSE]->rtext = GetShortcutKey(wKeyBindings[WKBD_CLOSE]); /* set the client data of the entries to the window */ for (i = 0; i < menu->entry_no; i++) { menu->entries[i]->clientdata = wwin; } for (i = 0; i < scr->workspace_submenu->entry_no; i++) { scr->workspace_submenu->entries[i]->clientdata = wwin; if (i == scr->current_workspace) wMenuSetEnabled(scr->workspace_submenu, i, False); else wMenuSetEnabled(scr->workspace_submenu, i, True); } menu->flags.realized = 0; wMenuRealize(menu); } static WMenu *open_window_menu_core(WWindow *wwin) { WScreen *scr = wwin->screen_ptr; WMenu *menu; wwin->flags.menu_open_for_me = 1; if (!scr->window_menu) { scr->window_menu = createWindowMenu(scr); /* hack to save some memory allocation/deallocation */ wfree(scr->window_menu->entries[MC_MINIATURIZE]->text); wfree(scr->window_menu->entries[MC_MAXIMIZE]->text); wfree(scr->window_menu->entries[MC_SHADE]->text); wfree(scr->window_menu->entries[MC_SELECT]->text); } else { updateWorkspaceMenu(scr->workspace_submenu); } menu = scr->window_menu; if (menu->flags.mapped) { wMenuUnmap(menu); if (menu->entries[0]->clientdata == wwin) return NULL; } updateMenuForWindow(menu, wwin); return menu; } static void prepare_menu_position(WMenu *menu, int *x, int *y) { WMRect rect; rect = wGetRectForHead(menu->frame->screen_ptr, wGetHeadForPointerLocation(menu->frame->screen_ptr)); if (*x < rect.pos.x - menu->frame->core->width / 2) *x = rect.pos.x - menu->frame->core->width / 2; if (*y < rect.pos.y) *y = rect.pos.y; } void OpenWindowMenu(WWindow *wwin, int x, int y, int keyboard) { WMenu *menu; menu = open_window_menu_core(wwin); if (!menu) return; /* Specific menu position */ x -= menu->frame->core->width / 2; if (x + menu->frame->core->width > wwin->frame_x + wwin->frame->core->width) x = wwin->frame_x + wwin->frame->core->width - menu->frame->core->width; if (x < wwin->frame_x) x = wwin->frame_x; /* Common menu position */ prepare_menu_position(menu, &x, &y); if (!wwin->flags.internal_window) wMenuMapAt(menu, x, y, keyboard); } void OpenWindowMenu2(WWindow *wwin, int x, int y, int keyboard) { int i; WMenu *menu; WScreen *scr = wwin->screen_ptr; menu = open_window_menu_core(wwin); if (!menu) return; /* Specific menu position */ for (i = 0; i < scr->workspace_submenu->entry_no; i++) { scr->workspace_submenu->entries[i]->clientdata = wwin; wMenuSetEnabled(scr->workspace_submenu, i, True); } x -= menu->frame->core->width / 2; /* Common menu position */ prepare_menu_position(menu, &x, &y); if (!wwin->flags.internal_window) wMenuMapAt(menu, x, y, keyboard); } void OpenMiniwindowMenu(WWindow * wwin, int x, int y) { WMenu *menu; menu = open_window_menu_core(wwin); if (!menu) return; x -= menu->frame->core->width / 2; wMenuMapAt(menu, x, y, False); } void DestroyWindowMenu(WScreen *scr) { if (scr->window_menu) { scr->window_menu->entries[MC_MINIATURIZE]->text = NULL; scr->window_menu->entries[MC_MAXIMIZE]->text = NULL; scr->window_menu->entries[MC_SHADE]->text = NULL; scr->window_menu->entries[MC_SELECT]->text = NULL; wMenuDestroy(scr->window_menu, True); scr->window_menu = NULL; } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/winspector.c�����������������������������������������������������������������0000644�0001750�0001750�00000133724�13642357774�014152� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* winspector.c - window attribute inspector * * Window Maker window manager * * Copyright (c) 1997-2003 Alfredo K. Kojima * Copyright (c) 1998-2003 Dan Pascu * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "wconfig.h" #include <X11/Xlib.h> #include <X11/Xutil.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <strings.h> #include "WindowMaker.h" #include "screen.h" #include "wcore.h" #include "framewin.h" #include "window.h" #include "workspace.h" #include "defaults.h" #include "dialog.h" #include "icon.h" #include "stacking.h" #include "application.h" #include "appicon.h" #include "actions.h" #include "winspector.h" #include "dock.h" #include "client.h" #include "wmspec.h" #include "misc.h" #include "switchmenu.h" #include <WINGs/WUtil.h> #define USE_TEXT_FIELD 1 #define UPDATE_TEXT_FIELD 2 #define REVERT_TO_DEFAULT 4 #define PWIDTH 290 #define PHEIGHT 360 #define UNDEFINED_POS 0xffffff #define UPDATE_DEFAULTS 1 #define IS_BOOLEAN 2 static const struct { const char *key_name; WWindowAttributes flag; const char *caption; const char *description; } window_attribute[] = { { "NoTitlebar", { .no_titlebar = 1 }, N_("Disable titlebar"), N_("Remove the titlebar of this window.\n" "To access the window commands menu of a window\n" "without it's titlebar, press Control+Esc (or the\n" "equivalent shortcut, if you changed the default\n" "settings).") }, { "NoResizebar", { .no_resizebar = 1 }, N_("Disable resizebar"), N_("Remove the resizebar of this window.") }, { "NoCloseButton", { .no_close_button = 1 }, N_("Disable close button"), N_("Remove the `close window' button of this window.") }, { "NoMiniaturizeButton", { .no_miniaturize_button = 1 }, N_("Disable miniaturize button"), N_("Remove the `miniaturize window' button of the window.") }, { "NoBorder", { .no_border = 1 }, N_("Disable border"), N_("Remove the 1 pixel black border around the window.") }, { "KeepOnTop", { .floating = 1 }, N_("Keep on top (floating)"), N_("Keep the window over other windows, not allowing\n" "them to cover it.") }, { "KeepOnBottom", { .sunken = 1 }, N_("Keep at bottom (sunken)"), N_("Keep the window under all other windows.") }, { "Omnipresent", { .omnipresent = 1 }, N_("Omnipresent"), N_("Make window present in all workspaces.") }, { "StartMiniaturized", { .start_miniaturized = 1 }, N_("Start miniaturized"), N_("Make the window be automatically miniaturized when it's\n" "first shown.") }, { "StartMaximized", { .start_maximized = 1 }, N_("Start maximized"), N_("Make the window be automatically maximized when it's\n" "first shown.") }, { "FullMaximize", { .full_maximize = 1 }, N_("Full screen maximization"), N_("Make the window use the whole screen space when it's\n" "maximized. The titlebar and resizebar will be moved\n" "to outside the screen.") } }, advanced_option[] = { { "NoKeyBindings", { .no_bind_keys = 1 }, N_("Do not bind keyboard shortcuts"), N_("Do not bind keyboard shortcuts from Window Maker\n" "when this window is focused. This will allow the\n" "window to receive all key combinations regardless\n" "of your shortcut configuration.") }, { "NoMouseBindings", { .no_bind_mouse = 1 }, N_("Do not bind mouse clicks"), N_("Do not bind mouse actions, such as `Alt'+drag\n" "in the window (when Alt is the modifier you have\n" "configured).") }, { "SkipWindowList", { .skip_window_list = 1 }, N_("Do not show in the window list"), N_("Do not list the window in the window list menu.") }, { "SkipSwitchPanel", { .skip_switchpanel = 1 }, N_("Do not show in the switch panel"), N_("Do not include in switch panel while cycling windows.") }, { "Unfocusable", { .no_focusable = 1 }, N_("Do not let it take focus"), N_("Do not let the window take keyboard focus when you\n" "click on it.") }, { "KeepInsideScreen", { .dont_move_off = 1 }, N_("Keep inside screen"), N_("Do not allow the window to move itself completely\n" "outside the screen. For bug compatibility.\n") }, { "NoHideOthers", { .no_hide_others = 1 }, N_("Ignore 'Hide Others'"), N_("Do not hide the window when issuing the\n" "`HideOthers' command.") }, { "DontSaveSession", { .dont_save_session = 1 }, N_("Ignore 'Save Session'"), N_("Do not save the associated application in the\n" "session's state, so that it won't be restarted\n" "together with other applications when Window Maker\n" "starts.") }, { "EmulateAppIcon", { .emulate_appicon = 1 }, N_("Emulate application icon"), N_("Make this window act as an application that provides\n" "enough information to Window Maker for a dockable\n" "application icon to be created.") }, { "FocusAcrossWorkspace", { .focus_across_wksp = 1 }, N_("Focus across workspaces"), N_("Allow Window Maker to switch workspace to satisfy\n" "a focus request (annoying).") }, { "NoMiniaturizable", { .no_miniaturizable = 1 }, N_("Do not let it be minimized"), N_("Do not let the window of this application be\n" "minimized.\n") }, { "IgnoreDecorationChanges", { .ignore_decoration_changes = 1 }, N_("Ignore decoration changes"), N_("Ignore any request from the application to change\n" "window decorations (like hiding the titlebar).\n") } #ifdef XKB_BUTTON_HINT ,{ "NoLanguageButton", { .no_language_button = 1 }, N_("Disable language button"), N_("Remove the `toggle language' button of the window.") } #endif }, application_attr[] = { { "StartHidden", { .start_hidden = 1 }, N_("Start hidden"), N_("Automatically hide application when it's started.") }, { "NoAppIcon", { .no_appicon = 1 }, N_("No application icon"), N_("Disable the application icon for the application.\n" "Note that you won't be able to dock it anymore,\n" "and any icons that are already docked will stop\n" "working correctly.") }, { "SharedAppIcon", { .shared_appicon = 1 }, N_("Shared application icon"), N_("Use a single shared application icon for all of\n" "the instances of this application.\n") } }; typedef struct InspectorPanel { struct InspectorPanel *nextPtr; WWindow *frame; WWindow *inspected; /* the window that's being inspected */ WMWindow *win; Window parent; /* common stuff */ WMButton *revertBtn; WMButton *applyBtn; WMButton *saveBtn; WMPopUpButton *pagePopUp; /* first page. general stuff */ WMFrame *specFrm; WMButton *instRb; WMButton *clsRb; WMButton *bothRb; WMButton *defaultRb; WMButton *selWinB; WMLabel *specLbl; /* second page. attributes */ WMFrame *attrFrm; WMButton *attrChk[sizeof(window_attribute) / sizeof(window_attribute[0])]; /* 3rd page. more attributes */ WMFrame *moreFrm; WMButton *moreChk[sizeof(advanced_option) / sizeof(advanced_option[0])]; /* 4th page. icon and workspace */ WMFrame *iconFrm; WMLabel *iconLbl; WMLabel *fileLbl; WMTextField *fileText; WMButton *alwChk; WMButton *browseIconBtn; WMFrame *wsFrm; WMPopUpButton *wsP; /* 5th page. application wide attributes */ WMFrame *appFrm; WMButton *appChk[sizeof(application_attr) / sizeof(application_attr[0])]; unsigned int done:1; unsigned int destroyed:1; unsigned int choosingIcon:1; } InspectorPanel; static InspectorPanel *panelList = NULL; /* * We are supposed to use the 'key_name' from the the 'window_attribute' structure when we want to * save the user choice to the database, but as we will need to convert that name into a Property * List, we use here a Cache of Property Lists, generated only once, which can be reused. It will * also save on memory because of the re-use of the same storage space instead of allocating a new * one every time. */ static WMPropList *pl_attribute[sizeof(window_attribute) / sizeof(window_attribute[0])] = { [0] = NULL }; static WMPropList *pl_advoptions[sizeof(advanced_option) / sizeof(advanced_option[0])]; static WMPropList *pl_appattrib[sizeof(application_attr) / sizeof(application_attr[0])]; static WMPropList *AAlwaysUserIcon; static WMPropList *AStartWorkspace; static WMPropList *AIcon; /* application wide options */ static WMPropList *AnyWindow; static WMPropList *EmptyString; static WMPropList *Yes, *No; static char *spec_text; static void applySettings(WMWidget *button, void *panel); static InspectorPanel *createInspectorForWindow(WWindow *wwin, int xpos, int ypos, Bool showSelectPanel); static void create_tab_window_attributes(WWindow *wwin, InspectorPanel *panel, int frame_width); static void create_tab_window_advanced(WWindow *wwin, InspectorPanel *panel, int frame_width); static void create_tab_icon_workspace(WWindow *wwin, InspectorPanel *panel); static void create_tab_app_specific(WWindow *wwin, InspectorPanel *panel, int frame_width); /* * These 3 functions sets/clear/read a bit inside a bit-field in a generic manner; * they uses binary operators to be as effiscient as possible, also counting on compiler's * optimisations because the bit-field structure will fit in only 1 or 2 int but it is * depending on the processor architecture. */ static inline void set_attr_flag(WWindowAttributes *target, const WWindowAttributes *flag) { int i; const unsigned char *src; unsigned char *dst; src = (const unsigned char *) flag; dst = (unsigned char *) target; for (i = 0; i < sizeof(*flag); i++) dst[i] |= src[i]; } static inline void clear_attr_flag(WWindowAttributes *target, const WWindowAttributes *flag) { int i; const unsigned char *src; unsigned char *dst; src = (const unsigned char *) flag; dst = (unsigned char *) target; for (i = 0; i < sizeof(*flag); i++) dst[i] &= ~src[i]; } static inline int get_attr_flag(const WWindowAttributes *from, const WWindowAttributes *flag) { int i; const unsigned char *xpect, *field; field = (const unsigned char *) from; xpect = (const unsigned char *) flag; for (i = 0; i < sizeof(*flag); i++) if (field[i] & xpect[i]) return 1; return 0; } /* * This function is creating the Property List for the cache mentionned above */ static void make_keys(void) { int i; if (pl_attribute[0] != NULL) return; for (i = 0; i < wlengthof(window_attribute); i++) pl_attribute[i] = WMCreatePLString(window_attribute[i].key_name); for (i = 0; i < wlengthof(advanced_option); i++) pl_advoptions[i] = WMCreatePLString(advanced_option[i].key_name); for (i = 0; i < wlengthof(application_attr); i++) pl_appattrib[i] = WMCreatePLString(application_attr[i].key_name); AIcon = WMCreatePLString("Icon"); AAlwaysUserIcon = WMCreatePLString("AlwaysUserIcon"); AStartWorkspace = WMCreatePLString("StartWorkspace"); AnyWindow = WMCreatePLString("*"); EmptyString = WMCreatePLString(""); Yes = WMCreatePLString("Yes"); No = WMCreatePLString("No"); } static void freeInspector(InspectorPanel *panel) { panel->destroyed = 1; if (panel->choosingIcon) return; WMDestroyWidget(panel->win); XDestroyWindow(dpy, panel->parent); wfree(panel); } static void destroyInspector(WCoreWindow *foo, void *data, XEvent *event) { InspectorPanel *panel, *tmp; /* Parameter not used, but tell the compiler that it is ok */ (void) foo; (void) event; panel = panelList; while (panel->frame != data) panel = panel->nextPtr; if (panelList == panel) { panelList = panel->nextPtr; } else { tmp = panelList; while (tmp->nextPtr != panel) tmp = tmp->nextPtr; tmp->nextPtr = panel->nextPtr; } panel->inspected->flags.inspector_open = 0; panel->inspected->inspector = NULL; WMRemoveNotificationObserver(panel); wWindowUnmap(panel->frame); wUnmanageWindow(panel->frame, True, False); freeInspector(panel); } void wDestroyInspectorPanels(void) { InspectorPanel *panel; while (panelList != NULL) { panel = panelList; panelList = panelList->nextPtr; wUnmanageWindow(panel->frame, False, False); WMDestroyWidget(panel->win); panel->inspected->flags.inspector_open = 0; panel->inspected->inspector = NULL; wfree(panel); } } static void changePage(WMWidget *bPtr, void *client_data) { InspectorPanel *panel = (InspectorPanel *) client_data; int page; page = WMGetPopUpButtonSelectedItem(bPtr); if (page == 0) { WMMapWidget(panel->specFrm); WMMapWidget(panel->specLbl); } else if (page == 1) { WMMapWidget(panel->attrFrm); } else if (page == 2) { WMMapWidget(panel->moreFrm); } else if (page == 3) { WMMapWidget(panel->iconFrm); WMMapWidget(panel->wsFrm); } else { WMMapWidget(panel->appFrm); } if (page != 0) { WMUnmapWidget(panel->specFrm); WMUnmapWidget(panel->specLbl); } if (page != 1) WMUnmapWidget(panel->attrFrm); if (page != 2) WMUnmapWidget(panel->moreFrm); if (page != 3) { WMUnmapWidget(panel->iconFrm); WMUnmapWidget(panel->wsFrm); } if (page != 4 && panel->appFrm) WMUnmapWidget(panel->appFrm); } static int showIconFor(WMScreen *scrPtr, InspectorPanel *panel, const char *wm_instance, const char *wm_class, int flags) { WMPixmap *pixmap = (WMPixmap *) NULL; char *file = NULL, *path = NULL; if ((flags & USE_TEXT_FIELD) != 0) { file = WMGetTextFieldText(panel->fileText); if (file && file[0] == 0) { wfree(file); file = NULL; } } else if (flags & REVERT_TO_DEFAULT) { const char *db_icon; /* Get the application icon, default NOT included */ db_icon = wDefaultGetIconFile(wm_instance, wm_class, False); if (db_icon != NULL) { file = wstrdup(db_icon); flags |= UPDATE_TEXT_FIELD; } } if ((flags & UPDATE_TEXT_FIELD) != 0) WMSetTextFieldText(panel->fileText, file); if (file) { path = FindImage(wPreferences.icon_path, file); if (!path) { char *buf; int len = strlen(file) + 80; buf = wmalloc(len); snprintf(buf, len, _("Could not find icon \"%s\" specified for this window"), file); wMessageDialog(panel->frame->screen_ptr, _("Error"), buf, _("OK"), NULL, NULL); wfree(buf); wfree(file); return -1; } pixmap = WMCreatePixmapFromFile(scrPtr, path); wfree(path); if (!pixmap) { char *buf; int len = strlen(file) + 80; buf = wmalloc(len); snprintf(buf, len, _("Could not open specified icon \"%s\":%s"), file, RMessageForError(RErrorCode)); wMessageDialog(panel->frame->screen_ptr, _("Error"), buf, _("OK"), NULL, NULL); wfree(buf); wfree(file); return -1; } wfree(file); } WMSetLabelImage(panel->iconLbl, pixmap); if (pixmap) WMReleasePixmap(pixmap); return 0; } static int getBool(WMPropList *value) { char *val; if (!WMIsPLString(value)) return 0; val = WMGetFromPLString(value); if (val == NULL) return 0; if ((val[1] == '\0' && (val[0] == 'y' || val[0] == 'Y' || val[0] == 'T' || val[0] == 't' || val[0] == '1')) || (strcasecmp(val, "YES") == 0 || strcasecmp(val, "TRUE") == 0)) { return 1; } else if ((val[1] == '\0' && (val[0] == 'n' || val[0] == 'N' || val[0] == 'F' || val[0] == 'f' || val[0] == '0')) || (strcasecmp(val, "NO") == 0 || strcasecmp(val, "FALSE") == 0)) { return 0; } else { wwarning(_("can't convert \"%s\" to boolean"), val); return 0; } } /* Will insert the attribute = value; pair in window's list, * if it's different from the defaults. * Defaults means either defaults database, or attributes saved * for the default window "*". This is to let one revert options that are * global because they were saved for all windows ("*"). */ static int insertAttribute(WMPropList *dict, WMPropList *window, WMPropList *attr, WMPropList *value, int flags) { WMPropList *def_win, *def_value = NULL; int update = 0, modified = 0; if (!(flags & UPDATE_DEFAULTS) && dict) { def_win = WMGetFromPLDictionary(dict, AnyWindow); if (def_win != NULL) def_value = WMGetFromPLDictionary(def_win, attr); } /* If we could not find defaults in database, fall to hardcoded values. * Also this is true if we save defaults for all windows */ if (!def_value) def_value = ((flags & IS_BOOLEAN) != 0) ? No : EmptyString; if (flags & IS_BOOLEAN) update = (getBool(value) != getBool(def_value)); else update = !WMIsPropListEqualTo(value, def_value); if (update) { WMPutInPLDictionary(window, attr, value); modified = 1; } return modified; } static void saveSettings(WMWidget *button, void *client_data) { InspectorPanel *panel = (InspectorPanel *) client_data; WWindow *wwin = panel->inspected; WDDomain *db = w_global.domain.window_attr; WMPropList *dict = NULL; WMPropList *winDic, *appDic, *value, *value1, *key = NULL, *key2; char *icon_file, *buf1, *buf2; int flags = 0, i = 0, different = 0, different2 = 0; /* Save will apply the changes and save them */ applySettings(panel->applyBtn, panel); if (WMGetButtonSelected(panel->instRb) != 0) { key = WMCreatePLString(wwin->wm_instance); } else if (WMGetButtonSelected(panel->clsRb) != 0) { key = WMCreatePLString(wwin->wm_class); } else if (WMGetButtonSelected(panel->bothRb) != 0) { buf1 = StrConcatDot(wwin->wm_instance, wwin->wm_class); key = WMCreatePLString(buf1); wfree(buf1); } else if (WMGetButtonSelected(panel->defaultRb) != 0) { key = WMRetainPropList(AnyWindow); flags = UPDATE_DEFAULTS; } if (!key) return; dict = db->dictionary; if (!dict) { dict = WMCreatePLDictionary(NULL, NULL); if (dict) { db->dictionary = dict; } else { WMReleasePropList(key); return; } } if (showIconFor(WMWidgetScreen(button), panel, NULL, NULL, USE_TEXT_FIELD) < 0) return; WMPLSetCaseSensitive(True); winDic = WMCreatePLDictionary(NULL, NULL); appDic = WMCreatePLDictionary(NULL, NULL); /* Save the icon info */ /* The flag "Ignore client suplied icon is not selected" */ buf1 = wmalloc(4); snprintf(buf1, 4, "%s", (WMGetButtonSelected(panel->alwChk) != 0) ? "Yes" : "No"); value1 = WMCreatePLString(buf1); different |= insertAttribute(dict, winDic, AAlwaysUserIcon, value1, flags); WMReleasePropList(value1); wfree(buf1); /* The icon filename (if exists) */ icon_file = WMGetTextFieldText(panel->fileText); if (icon_file != NULL) { if (icon_file[0] != '\0') { value = WMCreatePLString(icon_file); different |= insertAttribute(dict, winDic, AIcon, value, flags); different2 |= insertAttribute(dict, appDic, AIcon, value, flags); WMReleasePropList(value); } wfree(icon_file); } i = WMGetPopUpButtonSelectedItem(panel->wsP) - 1; if (i >= 0 && i < panel->frame->screen_ptr->workspace_count) { value = WMCreatePLString(panel->frame->screen_ptr->workspaces[i]->name); different |= insertAttribute(dict, winDic, AStartWorkspace, value, flags); WMReleasePropList(value); } flags |= IS_BOOLEAN; /* Attributes... --> Window Attributes */ for (i = 0; i < wlengthof(window_attribute); i++) { value = (WMGetButtonSelected(panel->attrChk[i]) != 0) ? Yes : No; different |= insertAttribute(dict, winDic, pl_attribute[i], value, flags); } /* Attributes... --> Advanced Options */ for (i = 0; i < wlengthof(advanced_option); i++) { value = (WMGetButtonSelected(panel->moreChk[i]) != 0) ? Yes : No; different |= insertAttribute(dict, winDic, pl_advoptions[i], value, flags); } /* Attributes... --> Application Specific */ if (wwin->main_window != None && wApplicationOf(wwin->main_window) != NULL) { for (i = 0; i < wlengthof(application_attr); i++) { value = (WMGetButtonSelected(panel->appChk[i]) != 0) ? Yes : No; different2 |= insertAttribute(dict, appDic, pl_appattrib[i], value, flags); } } if (wwin->fake_group) { key2 = WMCreatePLString(wwin->fake_group->identifier); if (WMIsPropListEqualTo(key, key2)) { WMMergePLDictionaries(winDic, appDic, True); different |= different2; } else { WMRemoveFromPLDictionary(dict, key2); if (different2) WMPutInPLDictionary(dict, key2, appDic); } WMReleasePropList(key2); } else if (wwin->main_window != wwin->client_win) { WApplication *wapp = wApplicationOf(wwin->main_window); if (wapp) { buf2 = StrConcatDot(wapp->main_window_desc->wm_instance, wapp->main_window_desc->wm_class); key2 = WMCreatePLString(buf2); wfree(buf2); if (WMIsPropListEqualTo(key, key2)) { WMMergePLDictionaries(winDic, appDic, True); different |= different2; } else { WMRemoveFromPLDictionary(dict, key2); if (different2) WMPutInPLDictionary(dict, key2, appDic); } WMReleasePropList(key2); } } else { WMMergePLDictionaries(winDic, appDic, True); different |= different2; } WMReleasePropList(appDic); WMRemoveFromPLDictionary(dict, key); if (different) WMPutInPLDictionary(dict, key, winDic); WMReleasePropList(key); WMReleasePropList(winDic); UpdateDomainFile(db); /* clean up */ WMPLSetCaseSensitive(False); } static void applySettings(WMWidget *button, void *client_data) { InspectorPanel *panel = (InspectorPanel *) client_data; WWindow *wwin = panel->inspected; WApplication *wapp = wApplicationOf(wwin->main_window); int old_skip_window_list, old_omnipresent, old_no_bind_keys, old_no_bind_mouse; int i; old_skip_window_list = WFLAGP(wwin, skip_window_list); old_omnipresent = WFLAGP(wwin, omnipresent); old_no_bind_keys = WFLAGP(wwin, no_bind_keys); old_no_bind_mouse = WFLAGP(wwin, no_bind_mouse); showIconFor(WMWidgetScreen(button), panel, NULL, NULL, USE_TEXT_FIELD); /* Attributes... --> Window Attributes */ for (i = 0; i < wlengthof(window_attribute); i++) { if (WMGetButtonSelected(panel->attrChk[i])) set_attr_flag(&wwin->user_flags, &window_attribute[i].flag); else clear_attr_flag(&wwin->user_flags, &window_attribute[i].flag); set_attr_flag(&wwin->defined_user_flags, &window_attribute[i].flag); } /* Attributes... --> Advanced Options */ for (i = 0; i < wlengthof(advanced_option); i++) { if (WMGetButtonSelected(panel->moreChk[i])) set_attr_flag(&wwin->user_flags, &advanced_option[i].flag); else clear_attr_flag(&wwin->user_flags, &advanced_option[i].flag); set_attr_flag(&wwin->defined_user_flags, &advanced_option[i].flag); } WSETUFLAG(wwin, always_user_icon, WMGetButtonSelected(panel->alwChk)); if (WFLAGP(wwin, no_titlebar) && wwin->flags.shaded) wUnshadeWindow(wwin); WSETUFLAG(wwin, no_shadeable, WFLAGP(wwin, no_titlebar)); /* * Update the window level according to AlwaysOnTop/AlwaysOnBotton * if the level did not change, ChangeStackingLevel will do nothing anyway */ if (WFLAGP(wwin, floating)) ChangeStackingLevel(wwin->frame->core, WMFloatingLevel); else if (WFLAGP(wwin, sunken)) ChangeStackingLevel(wwin->frame->core, WMSunkenLevel); else ChangeStackingLevel(wwin->frame->core, WMNormalLevel); wwin->flags.omnipresent = 0; if (WFLAGP(wwin, skip_window_list) != old_skip_window_list) { UpdateSwitchMenu(wwin->screen_ptr, wwin, WFLAGP(wwin, skip_window_list)?ACTION_REMOVE:ACTION_ADD); } else { if (WFLAGP(wwin, omnipresent) != old_omnipresent) WMPostNotificationName(WMNChangedState, wwin, "omnipresent"); } if (WFLAGP(wwin, no_bind_keys) != old_no_bind_keys) { if (WFLAGP(wwin, no_bind_keys)) XUngrabKey(dpy, AnyKey, AnyModifier, wwin->frame->core->window); else wWindowSetKeyGrabs(wwin); } if (WFLAGP(wwin, no_bind_mouse) != old_no_bind_mouse) wWindowResetMouseGrabs(wwin); wwin->frame->flags.need_texture_change = 1; wWindowConfigureBorders(wwin); wFrameWindowPaint(wwin->frame); wNETWMUpdateActions(wwin, False); /* Can't apply emulate_appicon because it will probably cause problems. */ if (wapp) { /* do application wide stuff */ for (i = 0; i < wlengthof(application_attr); i++) { if (WMGetButtonSelected(panel->appChk[i])) set_attr_flag(&wapp->main_window_desc->user_flags, &application_attr[i].flag); else clear_attr_flag(&wapp->main_window_desc->user_flags, &application_attr[i].flag); set_attr_flag(&wapp->main_window_desc->defined_user_flags, &application_attr[i].flag); } if (WFLAGP(wapp->main_window_desc, no_appicon)) unpaint_app_icon(wapp); else paint_app_icon(wapp); char *file = WMGetTextFieldText(panel->fileText); if (file[0] == 0) { wfree(file); file = NULL; } /* If always_user_icon flag is set, but the user icon is not set * we use client supplied icon and we unset the flag */ if ((WFLAGP(wwin, always_user_icon) && (!file))) { /* Show the warning */ char *buf; int len = 100; buf = wmalloc(len); snprintf(buf, len, _("Ignore client supplied icon is set, but icon filename textbox is empty. Using client supplied icon")); wMessageDialog(panel->frame->screen_ptr, _("Warning"), buf, _("OK"), NULL, NULL); wfree(buf); wfree(file); /* Change the flags */ WSETUFLAG(wwin, always_user_icon, 0); WMSetButtonSelected(panel->alwChk, 0); } /* After test the always_user_icon flag value before, * the "else" block is used only if the flag is set and * the icon text box has an icon path */ if (!WFLAGP(wwin, always_user_icon)) { /* Change App Icon image, using the icon provided by the client */ if (wapp->app_icon) { RImage *image = get_rimage_icon_from_wm_hints(wapp->app_icon->icon); if (image) { set_icon_image_from_image(wapp->app_icon->icon, image); update_icon_pixmap(wapp->app_icon->icon); } else { wIconUpdate(wapp->app_icon->icon); } } /* Change icon image if the app is minimized, * using the icon provided by the client */ if (wwin->icon) { RImage *image = get_rimage_icon_from_wm_hints(wwin->icon); if (image) { set_icon_image_from_image(wwin->icon, image); update_icon_pixmap(wwin->icon); } else { wIconUpdate(wwin->icon); } } } else { /* Change App Icon image */ if (wapp->app_icon) wIconChangeImageFile(wapp->app_icon->icon, file); /* Change icon image if the app is minimized */ if (wwin->icon) wIconChangeImageFile(wwin->icon, file); } if (file) wfree(file); } wNETFrameExtents(wwin); } static void revertSettings(WMWidget *button, void *client_data) { InspectorPanel *panel = (InspectorPanel *) client_data; WWindow *wwin = panel->inspected; WApplication *wapp = wApplicationOf(wwin->main_window); int i, n, workspace, level; char *wm_instance = NULL, *wm_class = NULL; /* Parameter not used, but tell the compiler that it is ok */ (void) button; if (panel->instRb && WMGetButtonSelected(panel->instRb) != 0) wm_instance = wwin->wm_instance; else if (panel->clsRb && WMGetButtonSelected(panel->clsRb) != 0) wm_class = wwin->wm_class; else if (panel->bothRb && WMGetButtonSelected(panel->bothRb) != 0) { wm_instance = wwin->wm_instance; wm_class = wwin->wm_class; } memset(&wwin->defined_user_flags, 0, sizeof(WWindowAttributes)); memset(&wwin->user_flags, 0, sizeof(WWindowAttributes)); memset(&wwin->client_flags, 0, sizeof(WWindowAttributes)); wWindowSetupInitialAttributes(wwin, &level, &workspace); /* Attributes... --> Window Attributes */ for (i = 0; i < wlengthof(window_attribute); i++) { int is_userdef, flag; is_userdef = get_attr_flag(&wwin->defined_user_flags, &window_attribute[i].flag); if (is_userdef) flag = get_attr_flag(&wwin->user_flags, &window_attribute[i].flag); else flag = get_attr_flag(&wwin->client_flags, &window_attribute[i].flag); WMSetButtonSelected(panel->attrChk[i], flag); } /* Attributes... --> Advanced Options */ for (i = 0; i < wlengthof(advanced_option); i++) { int is_userdef, flag; is_userdef = get_attr_flag(&wwin->defined_user_flags, &advanced_option[i].flag); if (is_userdef) flag = get_attr_flag(&wwin->user_flags, &advanced_option[i].flag); else flag = get_attr_flag(&wwin->client_flags, &advanced_option[i].flag); WMSetButtonSelected(panel->moreChk[i], flag); } /* Attributes... --> Application Specific */ if (panel->appFrm && wapp) { for (i = 0; i < wlengthof(application_attr); i++) { int is_userdef, flag = 0; is_userdef = get_attr_flag(&wapp->main_window_desc->defined_user_flags, &application_attr[i].flag); if (is_userdef) flag = get_attr_flag(&wapp->main_window_desc->user_flags, &application_attr[i].flag); else flag = get_attr_flag(&wapp->main_window_desc->client_flags, &application_attr[i].flag); WMSetButtonSelected(panel->appChk[i], flag); } } WMSetButtonSelected(panel->alwChk, WFLAGP(wwin, always_user_icon)); showIconFor(WMWidgetScreen(panel->alwChk), panel, wm_instance, wm_class, REVERT_TO_DEFAULT); n = wDefaultGetStartWorkspace(wwin->screen_ptr, wm_instance, wm_class); if (n >= 0 && n < wwin->screen_ptr->workspace_count) WMSetPopUpButtonSelectedItem(panel->wsP, n + 1); else WMSetPopUpButtonSelectedItem(panel->wsP, 0); /* must auto apply, so that there wno't be internal * inconsistencies between the state in the flags and * the actual state of the window */ applySettings(panel->applyBtn, panel); } static void chooseIconCallback(WMWidget *self, void *clientData) { char *file; InspectorPanel *panel = (InspectorPanel *) clientData; int result; panel->choosingIcon = 1; WMSetButtonEnabled(panel->browseIconBtn, False); result = wIconChooserDialog(panel->frame->screen_ptr, &file, panel->inspected->wm_instance, panel->inspected->wm_class); panel->choosingIcon = 0; if (!panel->destroyed) { /* kluge */ if (result) { WMSetTextFieldText(panel->fileText, file); showIconFor(WMWidgetScreen(self), panel, NULL, NULL, USE_TEXT_FIELD); } WMSetButtonEnabled(panel->browseIconBtn, True); } else { freeInspector(panel); } if (result) wfree(file); } static void textEditedObserver(void *observerData, WMNotification *notification) { InspectorPanel *panel = (InspectorPanel *) observerData; if ((long)WMGetNotificationClientData(notification) != WMReturnTextMovement) return; showIconFor(WMWidgetScreen(panel->win), panel, NULL, NULL, USE_TEXT_FIELD); } static void selectSpecification(WMWidget *bPtr, void *data) { InspectorPanel *panel = (InspectorPanel *) data; char str[256]; WWindow *wwin = panel->inspected; if (bPtr == panel->defaultRb && (wwin->wm_instance || wwin->wm_class)) WMSetButtonEnabled(panel->applyBtn, False); else WMSetButtonEnabled(panel->applyBtn, True); snprintf(str, sizeof(str), _("Inspecting %s.%s"), wwin->wm_instance ? wwin->wm_instance : "?", wwin->wm_class ? wwin->wm_class : "?"); wFrameWindowChangeTitle(panel->frame->frame, str); } static void selectWindow(WMWidget *bPtr, void *data) { InspectorPanel *panel = (InspectorPanel *) data; WWindow *wwin = panel->inspected; WScreen *scr = wwin->screen_ptr; XEvent event; WWindow *iwin; /* Parameter not used, but tell the compiler that it is ok */ (void) bPtr; if (XGrabPointer(dpy, scr->root_win, True, ButtonPressMask, GrabModeAsync, GrabModeAsync, None, wPreferences.cursor[WCUR_SELECT], CurrentTime) != GrabSuccess) { wwarning("could not grab mouse pointer"); return; } WMSetLabelText(panel->specLbl, _("Click in the window you wish to inspect.")); WMMaskEvent(dpy, ButtonPressMask, &event); XUngrabPointer(dpy, CurrentTime); iwin = wWindowFor(event.xbutton.subwindow); if (iwin && !iwin->flags.internal_window && iwin != wwin && !iwin->flags.inspector_open) { iwin->flags.inspector_open = 1; iwin->inspector = createInspectorForWindow(iwin, panel->frame->frame_x, panel->frame->frame_y, True); wCloseInspectorForWindow(wwin); } else { WMSetLabelText(panel->specLbl, spec_text); } } static InspectorPanel *createInspectorForWindow(WWindow *wwin, int xpos, int ypos, Bool showSelectPanel) { WScreen *scr = wwin->screen_ptr; InspectorPanel *panel; Window parent; char *str = NULL, *tmp = NULL; int x, y, btn_width, frame_width; WMButton *selectedBtn = NULL; spec_text = _("The configuration will apply to all\n" "windows that have their WM_CLASS\n" "property set to the above selected\n" "name, when saved."); panel = wmalloc(sizeof(InspectorPanel)); memset(panel, 0, sizeof(InspectorPanel)); panel->destroyed = 0; panel->inspected = wwin; panel->nextPtr = panelList; panelList = panel; panel->win = WMCreateWindow(scr->wmscreen, "windowInspector"); WMResizeWidget(panel->win, PWIDTH, PHEIGHT); /**** create common stuff ****/ /* command buttons */ btn_width = (PWIDTH - (2 * 15) - (2 * 10)) / 3; panel->saveBtn = WMCreateCommandButton(panel->win); WMSetButtonAction(panel->saveBtn, saveSettings, panel); WMMoveWidget(panel->saveBtn, (2 * (btn_width + 10)) + 15, PHEIGHT - 40); WMSetButtonText(panel->saveBtn, _("Save")); WMResizeWidget(panel->saveBtn, btn_width, 28); if (wPreferences.flags.noupdates || !(wwin->wm_class || wwin->wm_instance)) WMSetButtonEnabled(panel->saveBtn, False); panel->applyBtn = WMCreateCommandButton(panel->win); WMSetButtonAction(panel->applyBtn, applySettings, panel); WMMoveWidget(panel->applyBtn, btn_width + 10 + 15, PHEIGHT - 40); WMSetButtonText(panel->applyBtn, _("Apply")); WMResizeWidget(panel->applyBtn, btn_width, 28); panel->revertBtn = WMCreateCommandButton(panel->win); WMSetButtonAction(panel->revertBtn, revertSettings, panel); WMMoveWidget(panel->revertBtn, 15, PHEIGHT - 40); WMSetButtonText(panel->revertBtn, _("Reload")); WMResizeWidget(panel->revertBtn, btn_width, 28); /* page selection popup button */ panel->pagePopUp = WMCreatePopUpButton(panel->win); WMSetPopUpButtonAction(panel->pagePopUp, changePage, panel); WMMoveWidget(panel->pagePopUp, 25, 15); WMResizeWidget(panel->pagePopUp, PWIDTH - 50, 20); WMAddPopUpButtonItem(panel->pagePopUp, _("Window Specification")); WMAddPopUpButtonItem(panel->pagePopUp, _("Window Attributes")); WMAddPopUpButtonItem(panel->pagePopUp, _("Advanced Options")); WMAddPopUpButtonItem(panel->pagePopUp, _("Icon and Initial Workspace")); WMAddPopUpButtonItem(panel->pagePopUp, _("Application Specific")); /**** window spec ****/ frame_width = PWIDTH - (2 * 15); panel->specFrm = WMCreateFrame(panel->win); WMSetFrameTitle(panel->specFrm, _("Window Specification")); WMMoveWidget(panel->specFrm, 15, 65); WMResizeWidget(panel->specFrm, frame_width, 145); panel->defaultRb = WMCreateRadioButton(panel->specFrm); WMMoveWidget(panel->defaultRb, 10, 78); WMResizeWidget(panel->defaultRb, frame_width - (2 * 10), 20); WMSetButtonText(panel->defaultRb, _("Defaults for all windows")); WMSetButtonSelected(panel->defaultRb, False); WMSetButtonAction(panel->defaultRb, selectSpecification, panel); if (wwin->wm_class && wwin->wm_instance) { tmp = wstrconcat(wwin->wm_instance, "."); str = wstrconcat(tmp, wwin->wm_class); panel->bothRb = WMCreateRadioButton(panel->specFrm); WMMoveWidget(panel->bothRb, 10, 18); WMResizeWidget(panel->bothRb, frame_width - (2 * 10), 20); WMSetButtonText(panel->bothRb, str); wfree(tmp); wfree(str); WMGroupButtons(panel->defaultRb, panel->bothRb); if (!selectedBtn) selectedBtn = panel->bothRb; WMSetButtonAction(panel->bothRb, selectSpecification, panel); } if (wwin->wm_instance) { panel->instRb = WMCreateRadioButton(panel->specFrm); WMMoveWidget(panel->instRb, 10, 38); WMResizeWidget(panel->instRb, frame_width - (2 * 10), 20); WMSetButtonText(panel->instRb, wwin->wm_instance); WMGroupButtons(panel->defaultRb, panel->instRb); if (!selectedBtn) selectedBtn = panel->instRb; WMSetButtonAction(panel->instRb, selectSpecification, panel); } if (wwin->wm_class) { panel->clsRb = WMCreateRadioButton(panel->specFrm); WMMoveWidget(panel->clsRb, 10, 58); WMResizeWidget(panel->clsRb, frame_width - (2 * 10), 20); WMSetButtonText(panel->clsRb, wwin->wm_class); WMGroupButtons(panel->defaultRb, panel->clsRb); if (!selectedBtn) selectedBtn = panel->clsRb; WMSetButtonAction(panel->clsRb, selectSpecification, panel); } panel->selWinB = WMCreateCommandButton(panel->specFrm); WMMoveWidget(panel->selWinB, 20, 145 - 24 - 10); WMResizeWidget(panel->selWinB, frame_width - 2 * 10 - 20, 24); WMSetButtonText(panel->selWinB, _("Select window")); WMSetButtonAction(panel->selWinB, selectWindow, panel); panel->specLbl = WMCreateLabel(panel->win); WMMoveWidget(panel->specLbl, 15, 210); WMResizeWidget(panel->specLbl, frame_width, 100); WMSetLabelText(panel->specLbl, spec_text); WMSetLabelWraps(panel->specLbl, True); WMSetLabelTextAlignment(panel->specLbl, WALeft); /**** attributes ****/ create_tab_window_attributes(wwin, panel, frame_width); create_tab_window_advanced(wwin, panel, frame_width); create_tab_icon_workspace(wwin, panel); create_tab_app_specific(wwin, panel, frame_width); /* if the window is a transient, don't let it have a miniaturize button */ if (wwin->transient_for != None && wwin->transient_for != scr->root_win) WMSetButtonEnabled(panel->attrChk[3], False); else WMSetButtonEnabled(panel->attrChk[3], True); if (!wwin->wm_class && !wwin->wm_instance) WMSetPopUpButtonItemEnabled(panel->pagePopUp, 0, False); WMRealizeWidget(panel->win); WMMapSubwidgets(panel->win); WMMapSubwidgets(panel->specFrm); WMMapSubwidgets(panel->attrFrm); WMMapSubwidgets(panel->moreFrm); WMMapSubwidgets(panel->iconFrm); WMMapSubwidgets(panel->wsFrm); if (panel->appFrm) WMMapSubwidgets(panel->appFrm); if (showSelectPanel) { WMSetPopUpButtonSelectedItem(panel->pagePopUp, 0); changePage(panel->pagePopUp, panel); } else { WMSetPopUpButtonSelectedItem(panel->pagePopUp, 1); changePage(panel->pagePopUp, panel); } parent = XCreateSimpleWindow(dpy, scr->root_win, 0, 0, PWIDTH, PHEIGHT, 0, 0, 0); XSelectInput(dpy, parent, KeyPressMask | KeyReleaseMask); panel->parent = parent; XReparentWindow(dpy, WMWidgetXID(panel->win), parent, 0, 0); WMMapWidget(panel->win); XSetTransientForHint(dpy, parent, wwin->client_win); if (xpos == UNDEFINED_POS) { x = wwin->frame_x + wwin->frame->core->width / 2; y = wwin->frame_y + wwin->frame->top_width * 2; if (y + PHEIGHT > scr->scr_height) y = scr->scr_height - PHEIGHT - 30; if (x + PWIDTH > scr->scr_width) x = scr->scr_width - PWIDTH; } else { x = xpos; y = ypos; } panel->frame = wManageInternalWindow(scr, parent, wwin->client_win, "Inspector", x, y, PWIDTH, PHEIGHT); if (!selectedBtn) selectedBtn = panel->defaultRb; WMSetButtonSelected(selectedBtn, True); selectSpecification(selectedBtn, panel); /* kluge to know who should get the key events */ panel->frame->client_leader = WMWidgetXID(panel->win); panel->frame->client_flags.no_closable = 0; panel->frame->client_flags.no_close_button = 0; wWindowUpdateButtonImages(panel->frame); wFrameWindowShowButton(panel->frame->frame, WFF_RIGHT_BUTTON); panel->frame->frame->on_click_right = destroyInspector; wWindowMap(panel->frame); showIconFor(WMWidgetScreen(panel->alwChk), panel, wwin->wm_instance, wwin->wm_class, REVERT_TO_DEFAULT); return panel; } void wShowInspectorForWindow(WWindow *wwin) { if (wwin->flags.inspector_open) return; WMSetBalloonEnabled(wwin->screen_ptr->wmscreen, wPreferences.help_balloon); make_keys(); wwin->flags.inspector_open = 1; wwin->inspector = createInspectorForWindow(wwin, UNDEFINED_POS, UNDEFINED_POS, False); } void wHideInspectorForWindow(WWindow *wwin) { WWindow *pwin = wwin->inspector->frame; wWindowUnmap(pwin); pwin->flags.hidden = 1; wClientSetState(pwin, IconicState, None); } void wUnhideInspectorForWindow(WWindow *wwin) { WWindow *pwin = wwin->inspector->frame; pwin->flags.hidden = 0; pwin->flags.mapped = 1; XMapWindow(dpy, pwin->client_win); XMapWindow(dpy, pwin->frame->core->window); wClientSetState(pwin, NormalState, None); } WWindow *wGetWindowOfInspectorForWindow(WWindow *wwin) { if (!wwin->inspector) return NULL; assert(wwin->flags.inspector_open != 0); return wwin->inspector->frame; } void wCloseInspectorForWindow(WWindow *wwin) { WWindow *pwin = wwin->inspector->frame; /* the inspector window */ (*pwin->frame->on_click_right) (NULL, pwin, NULL); } static void create_tab_window_attributes(WWindow *wwin, InspectorPanel *panel, int frame_width) { int i = 0; panel->attrFrm = WMCreateFrame(panel->win); WMSetFrameTitle(panel->attrFrm, _("Attributes")); WMMoveWidget(panel->attrFrm, 15, 45); WMResizeWidget(panel->attrFrm, frame_width, 250); for (i = 0; i < wlengthof(window_attribute); i++) { int is_userdef, flag; is_userdef = get_attr_flag(&wwin->defined_user_flags, &window_attribute[i].flag); if (is_userdef) flag = get_attr_flag(&wwin->user_flags, &window_attribute[i].flag); else flag = get_attr_flag(&wwin->client_flags, &window_attribute[i].flag); panel->attrChk[i] = WMCreateSwitchButton(panel->attrFrm); WMMoveWidget(panel->attrChk[i], 10, 20 * (i + 1)); WMResizeWidget(panel->attrChk[i], frame_width - 15, 20); WMSetButtonSelected(panel->attrChk[i], flag); WMSetButtonText(panel->attrChk[i], _(window_attribute[i].caption)); WMSetBalloonTextForView(_(window_attribute[i].description), WMWidgetView(panel->attrChk[i])); } } static void create_tab_window_advanced(WWindow *wwin, InspectorPanel *panel, int frame_width) { int i = 0; panel->moreFrm = WMCreateFrame(panel->win); WMSetFrameTitle(panel->moreFrm, _("Advanced")); WMMoveWidget(panel->moreFrm, 15, 45); WMResizeWidget(panel->moreFrm, frame_width, 265); for (i = 0; i < wlengthof(advanced_option); i++) { int is_userdef, flag; is_userdef = get_attr_flag(&wwin->defined_user_flags, &advanced_option[i].flag); if (is_userdef) flag = get_attr_flag(&wwin->user_flags, &advanced_option[i].flag); else flag = get_attr_flag(&wwin->client_flags, &advanced_option[i].flag); panel->moreChk[i] = WMCreateSwitchButton(panel->moreFrm); WMMoveWidget(panel->moreChk[i], 10, 20 * (i + 1) - 4); WMResizeWidget(panel->moreChk[i], frame_width - 15, 20); WMSetButtonSelected(panel->moreChk[i], flag); WMSetButtonText(panel->moreChk[i], _(advanced_option[i].caption)); WMSetBalloonTextForView(_(advanced_option[i].description), WMWidgetView(panel->moreChk[i])); } } static void create_tab_icon_workspace(WWindow *wwin, InspectorPanel *panel) { const char *db_icon; WScreen *scr = wwin->screen_ptr; int i = 0; /* miniwindow/workspace */ panel->iconFrm = WMCreateFrame(panel->win); WMMoveWidget(panel->iconFrm, 15, 50); WMResizeWidget(panel->iconFrm, PWIDTH - (2 * 15), 170); WMSetFrameTitle(panel->iconFrm, _("Miniwindow Image")); panel->iconLbl = WMCreateLabel(panel->iconFrm); WMMoveWidget(panel->iconLbl, PWIDTH - (2 * 15) - 22 - 64, 20); WMResizeWidget(panel->iconLbl, 64, 64); WMSetLabelRelief(panel->iconLbl, WRGroove); WMSetLabelImagePosition(panel->iconLbl, WIPImageOnly); panel->browseIconBtn = WMCreateCommandButton(panel->iconFrm); WMSetButtonAction(panel->browseIconBtn, chooseIconCallback, panel); WMMoveWidget(panel->browseIconBtn, 22, 32); WMResizeWidget(panel->browseIconBtn, 120, 26); WMSetButtonText(panel->browseIconBtn, _("Browse...")); panel->fileLbl = WMCreateLabel(panel->iconFrm); WMMoveWidget(panel->fileLbl, 20, 85); WMResizeWidget(panel->fileLbl, PWIDTH - (2 * 15) - (2 * 20), 14); WMSetLabelText(panel->fileLbl, _("Icon filename:")); panel->fileText = WMCreateTextField(panel->iconFrm); WMMoveWidget(panel->fileText, 20, 105); WMResizeWidget(panel->fileText, PWIDTH - (2 * 20) - (2 * 15), 20); db_icon = wDefaultGetIconFile(wwin->wm_instance, wwin->wm_class, False); WMSetTextFieldText(panel->fileText, db_icon); WMAddNotificationObserver(textEditedObserver, panel, WMTextDidEndEditingNotification, panel->fileText); panel->alwChk = WMCreateSwitchButton(panel->iconFrm); WMMoveWidget(panel->alwChk, 20, 130); WMResizeWidget(panel->alwChk, PWIDTH - (2 * 15) - (2 * 15), 30); WMSetButtonText(panel->alwChk, _("Ignore client supplied icon")); WMSetButtonSelected(panel->alwChk, WFLAGP(wwin, always_user_icon)); panel->wsFrm = WMCreateFrame(panel->win); WMMoveWidget(panel->wsFrm, 15, 225); WMResizeWidget(panel->wsFrm, PWIDTH - (2 * 15), 70); WMSetFrameTitle(panel->wsFrm, _("Initial Workspace")); WMSetBalloonTextForView(_("The workspace to place the window when it's" " first shown."), WMWidgetView(panel->wsFrm)); panel->wsP = WMCreatePopUpButton(panel->wsFrm); WMMoveWidget(panel->wsP, 20, 30); WMResizeWidget(panel->wsP, PWIDTH - (2 * 15) - (2 * 20), 20); WMAddPopUpButtonItem(panel->wsP, _("Nowhere in particular")); for (i = 0; i < wwin->screen_ptr->workspace_count; i++) WMAddPopUpButtonItem(panel->wsP, scr->workspaces[i]->name); i = wDefaultGetStartWorkspace(wwin->screen_ptr, wwin->wm_instance, wwin->wm_class); if (i >= 0 && i <= wwin->screen_ptr->workspace_count) WMSetPopUpButtonSelectedItem(panel->wsP, i + 1); else WMSetPopUpButtonSelectedItem(panel->wsP, 0); } static void create_tab_app_specific(WWindow *wwin, InspectorPanel *panel, int frame_width) { WScreen *scr = wwin->screen_ptr; int i = 0, tmp; if (wwin->main_window != None) { WApplication *wapp = wApplicationOf(wwin->main_window); panel->appFrm = WMCreateFrame(panel->win); WMSetFrameTitle(panel->appFrm, _("Application Attributes")); WMMoveWidget(panel->appFrm, 15, 50); WMResizeWidget(panel->appFrm, frame_width, 240); for (i = 0; i < wlengthof(application_attr); i++) { int is_userdef, flag; is_userdef = get_attr_flag(&wapp->main_window_desc->defined_user_flags, &application_attr[i].flag); if (is_userdef) flag = get_attr_flag(&wapp->main_window_desc->user_flags, &application_attr[i].flag); else flag = get_attr_flag(&wapp->main_window_desc->client_flags, &application_attr[i].flag); panel->appChk[i] = WMCreateSwitchButton(panel->appFrm); WMMoveWidget(panel->appChk[i], 10, 20 * (i + 1)); WMResizeWidget(panel->appChk[i], 205, 20); WMSetButtonSelected(panel->appChk[i], flag); WMSetButtonText(panel->appChk[i], _(application_attr[i].caption)); WMSetBalloonTextForView(_(application_attr[i].description), WMWidgetView(panel->appChk[i])); } if (WFLAGP(wwin, emulate_appicon)) { WMSetButtonEnabled(panel->appChk[1], False); WMSetButtonEnabled(panel->moreChk[7], True); } else { WMSetButtonEnabled(panel->appChk[1], True); WMSetButtonEnabled(panel->moreChk[7], False); } } else { if ((wwin->transient_for != None && wwin->transient_for != scr->root_win) || !wwin->wm_class || !wwin->wm_instance) tmp = False; else tmp = True; WMSetButtonEnabled(panel->moreChk[7], tmp); WMSetPopUpButtonItemEnabled(panel->pagePopUp, 4, False); panel->appFrm = NULL; } } ��������������������������������������������WindowMaker-0.95.9/src/event.c����������������������������������������������������������������������0000644�0001750�0001750�00000150622�13642357774�013072� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* event.c- event loop and handling * * Window Maker window manager * * Copyright (c) 1997-2003 Alfredo K. Kojima * Copyright (c) 2014 Window Maker Team * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "wconfig.h" #ifdef HAVE_INOTIFY #include <sys/select.h> #include <sys/inotify.h> #endif #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <strings.h> #include <time.h> #include <errno.h> #include <X11/Xlib.h> #include <X11/Xutil.h> #include <X11/Xatom.h> #ifdef USE_XSHAPE # include <X11/extensions/shape.h> #endif #ifdef USE_DOCK_XDND #include "xdnd.h" #endif #ifdef USE_RANDR #include <X11/extensions/Xrandr.h> #endif #ifdef KEEP_XKB_LOCK_STATUS #include <X11/XKBlib.h> #endif /* KEEP_XKB_LOCK_STATUS */ #include "WindowMaker.h" #include "window.h" #include "actions.h" #include "client.h" #include "main.h" #include "cycling.h" #include "keybind.h" #include "application.h" #include "stacking.h" #include "defaults.h" #include "workspace.h" #include "dock.h" #include "framewin.h" #include "properties.h" #include "balloon.h" #include "xinerama.h" #include "wmspec.h" #include "rootmenu.h" #include "colormap.h" #include "screen.h" #include "shutdown.h" #include "misc.h" #include "event.h" #include "winmenu.h" #include "switchmenu.h" #include "wsmap.h" #define MOD_MASK wPreferences.modifier_mask /************ Local stuff ***********/ static void saveTimestamp(XEvent *event); static void handleColormapNotify(XEvent *event); static void handleMapNotify(XEvent *event); static void handleUnmapNotify(XEvent *event); static void handleButtonPress(XEvent *event); static void handleExpose(XEvent *event); static void handleDestroyNotify(XEvent *event); static void handleConfigureRequest(XEvent *event); static void handleMapRequest(XEvent *event); static void handlePropertyNotify(XEvent *event); static void handleEnterNotify(XEvent *event); static void handleLeaveNotify(XEvent *event); static void handleExtensions(XEvent *event); static void handleClientMessage(XEvent *event); static void handleKeyPress(XEvent *event); static void handleFocusIn(XEvent *event); static void handleMotionNotify(XEvent *event); static void handleVisibilityNotify(XEvent *event); static void handle_inotify_events(void); static void handle_selection_request(XSelectionRequestEvent *event); static void handle_selection_clear(XSelectionClearEvent *event); static void wdelete_death_handler(WMagicNumber id); #ifdef USE_XSHAPE static void handleShapeNotify(XEvent *event); #endif #ifdef KEEP_XKB_LOCK_STATUS static void handleXkbIndicatorStateNotify(XkbEvent *event); #endif /* real dead process handler */ static void handleDeadProcess(void); typedef struct DeadProcesses { pid_t pid; unsigned char exit_status; } DeadProcesses; /* stack of dead processes */ static DeadProcesses deadProcesses[MAX_DEAD_PROCESSES]; static int deadProcessPtr = 0; typedef struct DeathHandler { WDeathHandler *callback; pid_t pid; void *client_data; } DeathHandler; static WMArray *deathHandlers = NULL; WMagicNumber wAddDeathHandler(pid_t pid, WDeathHandler * callback, void *cdata) { DeathHandler *handler; handler = malloc(sizeof(DeathHandler)); if (!handler) return 0; handler->pid = pid; handler->callback = callback; handler->client_data = cdata; if (!deathHandlers) deathHandlers = WMCreateArrayWithDestructor(8, free); WMAddToArray(deathHandlers, handler); return handler; } static void wdelete_death_handler(WMagicNumber id) { DeathHandler *handler = (DeathHandler *) id; if (!handler || !deathHandlers) return; /* array destructor will call free(handler) */ WMRemoveFromArray(deathHandlers, handler); } void DispatchEvent(XEvent * event) { if (deathHandlers) handleDeadProcess(); if (WCHECK_STATE(WSTATE_NEED_EXIT)) { WCHANGE_STATE(WSTATE_EXITING); /* received SIGTERM */ /* * WMHandleEvent() can't be called from anything * executed inside here, or we can get in a infinite * recursive loop. */ Shutdown(WSExitMode); } else if (WCHECK_STATE(WSTATE_NEED_RESTART)) { WCHANGE_STATE(WSTATE_RESTARTING); Shutdown(WSRestartPreparationMode); /* received SIGHUP */ Restart(NULL, True); } else if (WCHECK_STATE(WSTATE_NEED_REREAD)) { WCHANGE_STATE(WSTATE_NORMAL); wDefaultsCheckDomains(NULL); } /* for the case that all that is wanted to be dispatched is * the stuff above */ if (!event) return; saveTimestamp(event); switch (event->type) { case MapRequest: handleMapRequest(event); break; case KeyPress: handleKeyPress(event); break; case MotionNotify: handleMotionNotify(event); break; case ConfigureRequest: handleConfigureRequest(event); break; case DestroyNotify: handleDestroyNotify(event); break; case MapNotify: handleMapNotify(event); break; case UnmapNotify: handleUnmapNotify(event); break; case ButtonPress: handleButtonPress(event); break; case Expose: handleExpose(event); break; case PropertyNotify: handlePropertyNotify(event); break; case EnterNotify: handleEnterNotify(event); break; case LeaveNotify: handleLeaveNotify(event); break; case ClientMessage: handleClientMessage(event); break; case ColormapNotify: handleColormapNotify(event); break; case MappingNotify: if (event->xmapping.request == MappingKeyboard || event->xmapping.request == MappingModifier) XRefreshKeyboardMapping(&event->xmapping); break; case FocusIn: handleFocusIn(event); break; case VisibilityNotify: handleVisibilityNotify(event); break; case ConfigureNotify: #ifdef USE_RANDR if (event->xconfigure.window == DefaultRootWindow(dpy)) XRRUpdateConfiguration(event); #endif break; case SelectionRequest: handle_selection_request(&event->xselectionrequest); break; case SelectionClear: handle_selection_clear(&event->xselectionclear); break; default: handleExtensions(event); break; } } #ifdef HAVE_INOTIFY /* *---------------------------------------------------------------------- * handle_inotify_events- * Check for inotify events * * Returns: * After reading events for the given file descriptor (fd) and * watch descriptor (wd) * * Side effects: * Calls wDefaultsCheckDomains if config database is updated *---------------------------------------------------------------------- */ static void handle_inotify_events(void) { ssize_t eventQLength; size_t i = 0; /* Make room for at lease 5 simultaneous events, with path + filenames */ char buff[ (sizeof(struct inotify_event) + NAME_MAX + 1) * 5 ]; /* Check config only once per read of the event queue */ int oneShotFlag = 0; /* * Read off the queued events * queue overflow is not checked (IN_Q_OVERFLOW). In practise this should * not occur; the block is on Xevents, but a config file change will normally * occur as a result of an Xevent - so the event queue should never have more than * a few entries before a read(). */ eventQLength = read(w_global.inotify.fd_event_queue, buff, sizeof(buff) ); if (eventQLength < 0) { wwarning(_("read problem when trying to get INotify event: %s"), strerror(errno)); return; } /* check what events occurred */ /* Should really check wd here too, but for now we only have one watch! */ while (i < eventQLength) { struct inotify_event *pevent = (struct inotify_event *)&buff[i]; /* * see inotify.h for event types. */ if (pevent->mask & IN_DELETE_SELF) { wwarning(_("the defaults database has been deleted!" " Restart Window Maker to create the database" " with the default settings")); if (w_global.inotify.fd_event_queue >= 0) { close(w_global.inotify.fd_event_queue); w_global.inotify.fd_event_queue = -1; } } if (pevent->mask & IN_UNMOUNT) { wwarning(_("the unit containing the defaults database has" " been unmounted. Setting --static mode." " Any changes will not be saved.")); if (w_global.inotify.fd_event_queue >= 0) { close(w_global.inotify.fd_event_queue); w_global.inotify.fd_event_queue = -1; } wPreferences.flags.noupdates = 1; } if ((pevent->mask & IN_MODIFY) && oneShotFlag == 0) { wwarning(_("Inotify: Reading config files in defaults database.")); wDefaultsCheckDomains(NULL); oneShotFlag = 1; } /* move to next event in the buffer */ i += sizeof(struct inotify_event) + pevent->len; } } #endif /* HAVE_INOTIFY */ /* *---------------------------------------------------------------------- * EventLoop- * Processes X and internal events indefinitely. * * Returns: * Never returns * * Side effects: * The LastTimestamp global variable is updated. * Calls inotifyGetEvents if defaults database changes. *---------------------------------------------------------------------- */ noreturn void EventLoop(void) { XEvent event; #ifdef HAVE_INOTIFY struct timeval time; fd_set rfds; int retVal = 0; if (w_global.inotify.fd_event_queue < 0 || w_global.inotify.wd_defaults < 0) retVal = -1; #endif for (;;) { WMNextEvent(dpy, &event); /* Blocks here */ WMHandleEvent(&event); #ifdef HAVE_INOTIFY if (retVal != -1) { time.tv_sec = 0; time.tv_usec = 0; FD_ZERO(&rfds); FD_SET(w_global.inotify.fd_event_queue, &rfds); /* check for available read data from inotify - don't block! */ retVal = select(w_global.inotify.fd_event_queue + 1, &rfds, NULL, NULL, &time); if (retVal < 0) { /* an error has occurred */ wwarning(_("select failed. The inotify instance will be closed." " Changes to the defaults database will require" " a restart to take effect.")); close(w_global.inotify.fd_event_queue); w_global.inotify.fd_event_queue = -1; continue; } if (FD_ISSET(w_global.inotify.fd_event_queue, &rfds)) handle_inotify_events(); } #endif } } /* *---------------------------------------------------------------------- * ProcessPendingEvents -- * Processes the events that are currently pending (at the time * this function is called) in the display's queue. * * Returns: * After the pending events that were present at the function call * are processed. * * Side effects: * Many -- whatever handling events may involve. * *---------------------------------------------------------------------- */ void ProcessPendingEvents(void) { XEvent event; int count; XSync(dpy, False); /* Take a snapshot of the event count in the queue */ count = XPending(dpy); while (count > 0 && XPending(dpy)) { WMNextEvent(dpy, &event); WMHandleEvent(&event); count--; } } Bool 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.window == scr->last_click_window)) { scr->flags.next_click_is_not_double = 1; scr->last_click_time = 0; scr->last_click_window = event->xbutton.window; return True; } return False; } void NotifyDeadProcess(pid_t pid, unsigned char status) { if (deadProcessPtr >= MAX_DEAD_PROCESSES - 1) { wwarning("stack overflow: too many dead processes"); return; } /* stack the process to be handled later, * as this is called from the signal handler */ deadProcesses[deadProcessPtr].pid = pid; deadProcesses[deadProcessPtr].exit_status = status; deadProcessPtr++; } static void handleDeadProcess(void) { DeathHandler *tmp; int i; for (i = 0; i < deadProcessPtr; i++) { wWindowDeleteSavedStatesForPID(deadProcesses[i].pid); } if (!deathHandlers) { deadProcessPtr = 0; return; } /* get the pids on the queue and call handlers */ while (deadProcessPtr > 0) { deadProcessPtr--; for (i = WMGetArrayItemCount(deathHandlers) - 1; i >= 0; i--) { tmp = WMGetFromArray(deathHandlers, i); if (!tmp) continue; if (tmp->pid == deadProcesses[deadProcessPtr].pid) { (*tmp->callback) (tmp->pid, deadProcesses[deadProcessPtr].exit_status, tmp->client_data); wdelete_death_handler(tmp); } } } } static void saveTimestamp(XEvent * event) { /* * Never save CurrentTime as LastTimestamp because CurrentTime * it's not a real timestamp (it's the 0L constant) */ switch (event->type) { case ButtonRelease: case ButtonPress: w_global.timestamp.last_event = event->xbutton.time; break; case KeyPress: case KeyRelease: w_global.timestamp.last_event = event->xkey.time; break; case MotionNotify: w_global.timestamp.last_event = event->xmotion.time; break; case PropertyNotify: w_global.timestamp.last_event = event->xproperty.time; break; case EnterNotify: case LeaveNotify: w_global.timestamp.last_event = event->xcrossing.time; break; case SelectionClear: w_global.timestamp.last_event = event->xselectionclear.time; break; case SelectionRequest: w_global.timestamp.last_event = event->xselectionrequest.time; break; case SelectionNotify: w_global.timestamp.last_event = event->xselection.time; #ifdef USE_DOCK_XDND wXDNDProcessSelection(event); #endif break; } } static int matchWindow(const void *item, const void *cdata) { return (((WFakeGroupLeader *) item)->origLeader == (Window) cdata); } static void handleExtensions(XEvent * event) { #ifdef USE_XSHAPE if (w_global.xext.shape.supported && event->type == (w_global.xext.shape.event_base + ShapeNotify)) { handleShapeNotify(event); } #endif #ifdef KEEP_XKB_LOCK_STATUS if (wPreferences.modelock && (event->type == w_global.xext.xkb.event_base)) { handleXkbIndicatorStateNotify((XkbEvent *) event); } #endif /*KEEP_XKB_LOCK_STATUS */ #ifdef USE_RANDR if (w_global.xext.randr.supported && event->type == (w_global.xext.randr.event_base + RRScreenChangeNotify)) { /* From xrandr man page: "Clients must call back into Xlib using * XRRUpdateConfiguration when screen configuration change notify * events are generated */ XRRUpdateConfiguration(event); WCHANGE_STATE(WSTATE_RESTARTING); Shutdown(WSRestartPreparationMode); Restart(NULL,True); } #endif } static void handleMapRequest(XEvent * ev) { WWindow *wwin; WScreen *scr = NULL; Window window = ev->xmaprequest.window; wwin = wWindowFor(window); if (wwin != NULL) { if (wwin->flags.shaded) { wUnshadeWindow(wwin); } /* deiconify window */ if (wwin->flags.miniaturized) { wDeiconifyWindow(wwin); } else if (wwin->flags.hidden) { WApplication *wapp = wApplicationOf(wwin->main_window); /* go to the last workspace that the user worked on the app */ if (wapp) { wWorkspaceChange(wwin->screen_ptr, wapp->last_workspace); } wUnhideApplication(wapp, False, False); } return; } scr = wScreenForRootWindow(ev->xmaprequest.parent); wwin = wManageWindow(scr, window); /* * This is to let the Dock know that the application it launched * has already been mapped (eg: it has finished launching). * It is not necessary for normally docked apps, but is needed for * apps that were forcedly docked (like with dockit). */ if (scr->last_dock) { if (wwin && wwin->main_window != None && wwin->main_window != window) wDockTrackWindowLaunch(scr->last_dock, wwin->main_window); else wDockTrackWindowLaunch(scr->last_dock, window); } if (wwin) { wClientSetState(wwin, NormalState, None); if (wwin->flags.maximized) { wMaximizeWindow(wwin, wwin->flags.maximized, wGetHeadForWindow(wwin)); } if (wwin->flags.shaded) { wwin->flags.shaded = 0; wwin->flags.skip_next_animation = 1; wShadeWindow(wwin); } if (wwin->flags.miniaturized) { wwin->flags.miniaturized = 0; wwin->flags.skip_next_animation = 1; wIconifyWindow(wwin); } if (wwin->flags.fullscreen) { wwin->flags.fullscreen = 0; wFullscreenWindow(wwin); } if (wwin->flags.hidden) { WApplication *wapp = wApplicationOf(wwin->main_window); wwin->flags.hidden = 0; wwin->flags.skip_next_animation = 1; if (wapp) { wHideApplication(wapp); } } } } static void handleDestroyNotify(XEvent * event) { WWindow *wwin; WApplication *app; Window window = event->xdestroywindow.window; WScreen *scr = wScreenForRootWindow(event->xdestroywindow.event); int widx; wwin = wWindowFor(window); if (wwin) { wUnmanageWindow(wwin, False, True); } if (scr != NULL) { while ((widx = WMFindInArray(scr->fakeGroupLeaders, matchWindow, (void *)window)) != WANotFound) { WFakeGroupLeader *fPtr; fPtr = WMGetFromArray(scr->fakeGroupLeaders, widx); if (fPtr->retainCount > 0) { fPtr->retainCount--; if (fPtr->retainCount == 0 && fPtr->leader != None) { XDestroyWindow(dpy, fPtr->leader); fPtr->leader = None; XFlush(dpy); } } fPtr->origLeader = None; } } app = wApplicationOf(window); if (app) { if (window == app->main_window) { app->refcount = 0; wwin = app->main_window_desc->screen_ptr->focused_window; while (wwin) { if (wwin->main_window == window) { wwin->main_window = None; } wwin = wwin->prev; } } wApplicationDestroy(app); } } static void handleExpose(XEvent * event) { WObjDescriptor *desc; XEvent ev; while (XCheckTypedWindowEvent(dpy, event->xexpose.window, Expose, &ev)) ; if (XFindContext(dpy, event->xexpose.window, w_global.context.client_win, (XPointer *) & desc) == XCNOENT) { return; } if (desc->handle_expose) { (*desc->handle_expose) (desc, event); } } static void executeWheelAction(WScreen *scr, XEvent *event, int action) { WWindow *wwin; Bool next_direction; if (event->xbutton.button == Button5 || event->xbutton.button == Button6) next_direction = False; else next_direction = True; switch (action) { case WA_SWITCH_WORKSPACES: if (next_direction) wWorkspaceRelativeChange(scr, 1); else wWorkspaceRelativeChange(scr, -1); break; case WA_SWITCH_WINDOWS: wwin = scr->focused_window; if (next_direction) wWindowFocusNext(wwin, True); else wWindowFocusPrev(wwin, True); break; } } static void executeButtonAction(WScreen *scr, XEvent *event, int action) { WWindow *wwin; switch (action) { case WA_SELECT_WINDOWS: wUnselectWindows(scr); wSelectWindows(scr, event); break; case WA_OPEN_APPMENU: OpenRootMenu(scr, event->xbutton.x_root, event->xbutton.y_root, False); /* ugly hack */ if (scr->root_menu) { if (scr->root_menu->brother->flags.mapped) event->xbutton.window = scr->root_menu->brother->frame->core->window; else event->xbutton.window = scr->root_menu->frame->core->window; } break; case WA_OPEN_WINLISTMENU: OpenSwitchMenu(scr, event->xbutton.x_root, event->xbutton.y_root, False); if (scr->switch_menu) { if (scr->switch_menu->brother->flags.mapped) event->xbutton.window = scr->switch_menu->brother->frame->core->window; else event->xbutton.window = scr->switch_menu->frame->core->window; } break; case WA_MOVE_PREVWORKSPACE: wWorkspaceRelativeChange(scr, -1); break; case WA_MOVE_NEXTWORKSPACE: wWorkspaceRelativeChange(scr, 1); break; case WA_MOVE_PREVWINDOW: wwin = scr->focused_window; wWindowFocusPrev(wwin, True); break; case WA_MOVE_NEXTWINDOW: wwin = scr->focused_window; wWindowFocusNext(wwin, True); break; } } /* bindable */ static void handleButtonPress(XEvent * event) { WObjDescriptor *desc; WScreen *scr; scr = wScreenForRootWindow(event->xbutton.root); #ifdef BALLOON_TEXT wBalloonHide(scr); #endif if (!wPreferences.disable_root_mouse && event->xbutton.window == scr->root_win) { if (event->xbutton.button == Button1 && wPreferences.mouse_button1 != WA_NONE) { executeButtonAction(scr, event, wPreferences.mouse_button1); } else if (event->xbutton.button == Button2 && wPreferences.mouse_button2 != WA_NONE) { executeButtonAction(scr, event, wPreferences.mouse_button2); } else if (event->xbutton.button == Button3 && wPreferences.mouse_button3 != WA_NONE) { executeButtonAction(scr, event, wPreferences.mouse_button3); } else if (event->xbutton.button == Button8 && wPreferences.mouse_button8 != WA_NONE) { executeButtonAction(scr, event, wPreferences.mouse_button8); }else if (event->xbutton.button == Button9 && wPreferences.mouse_button9 != WA_NONE) { executeButtonAction(scr, event, wPreferences.mouse_button9); } else if (event->xbutton.button == Button4 && wPreferences.mouse_wheel_scroll != WA_NONE) { executeWheelAction(scr, event, wPreferences.mouse_wheel_scroll); } else if (event->xbutton.button == Button5 && wPreferences.mouse_wheel_scroll != WA_NONE) { executeWheelAction(scr, event, wPreferences.mouse_wheel_scroll); } else if (event->xbutton.button == Button6 && wPreferences.mouse_wheel_tilt != WA_NONE) { executeWheelAction(scr, event, wPreferences.mouse_wheel_tilt); } else if (event->xbutton.button == Button7 && wPreferences.mouse_wheel_tilt != WA_NONE) { executeWheelAction(scr, event, wPreferences.mouse_wheel_tilt); } } desc = NULL; if (XFindContext(dpy, event->xbutton.subwindow, w_global.context.client_win, (XPointer *) & desc) == XCNOENT) { if (XFindContext(dpy, event->xbutton.window, w_global.context.client_win, (XPointer *) & desc) == XCNOENT) { return; } } if (desc->parent_type == WCLASS_WINDOW) { XSync(dpy, 0); if (event->xbutton.state & ( MOD_MASK | ControlMask )) { XAllowEvents(dpy, AsyncPointer, CurrentTime); } else { /* if (wPreferences.focus_mode == WKF_CLICK) { */ if (wPreferences.ignore_focus_click) { XAllowEvents(dpy, AsyncPointer, CurrentTime); } XAllowEvents(dpy, ReplayPointer, CurrentTime); /* } */ } XSync(dpy, 0); } else if (desc->parent_type == WCLASS_APPICON || desc->parent_type == WCLASS_MINIWINDOW || desc->parent_type == WCLASS_DOCK_ICON) { if (event->xbutton.state & MOD_MASK) { XSync(dpy, 0); XAllowEvents(dpy, AsyncPointer, CurrentTime); XSync(dpy, 0); } } 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.window; } } static void handleMapNotify(XEvent * event) { WWindow *wwin; wwin = wWindowFor(event->xmap.event); if (wwin && wwin->client_win == event->xmap.event) { if (wwin->flags.miniaturized) { wDeiconifyWindow(wwin); } else { XGrabServer(dpy); wWindowMap(wwin); wClientSetState(wwin, NormalState, None); XUngrabServer(dpy); } } } static void handleUnmapNotify(XEvent * event) { WWindow *wwin; XEvent ev; Bool withdraw = False; /* only process windows with StructureNotify selected * (ignore SubstructureNotify) */ wwin = wWindowFor(event->xunmap.window); if (!wwin) return; /* 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; XGrabServer(dpy); XUnmapWindow(dpy, wwin->frame->core->window); wwin->flags.mapped = 0; XSync(dpy, 0); /* check if the window was destroyed */ if (XCheckTypedWindowEvent(dpy, wwin->client_win, DestroyNotify, &ev)) { DispatchEvent(&ev); } else { Bool reparented = False; if (XCheckTypedWindowEvent(dpy, wwin->client_win, ReparentNotify, &ev)) reparented = True; /* withdraw window */ wwin->flags.mapped = 0; if (!reparented) wClientSetState(wwin, WithdrawnState, None); /* if the window was reparented, do not reparent it back to the * root window */ wUnmanageWindow(wwin, !reparented, False); } XUngrabServer(dpy); } static void handleConfigureRequest(XEvent * event) { WWindow *wwin; wwin = wWindowFor(event->xconfigurerequest.window); if (wwin == NULL) { /* * Configure request for unmapped window */ wClientConfigure(NULL, &(event->xconfigurerequest)); } else { wClientConfigure(wwin, &(event->xconfigurerequest)); } } static void handlePropertyNotify(XEvent * event) { WWindow *wwin; WApplication *wapp; Window jr; int ji; unsigned int ju; wwin = wWindowFor(event->xproperty.window); if (wwin) { if (!XGetGeometry(dpy, wwin->client_win, &jr, &ji, &ji, &ju, &ju, &ju, &ju)) { return; } wClientCheckProperty(wwin, &event->xproperty); } wapp = wApplicationOf(event->xproperty.window); if (wapp) { wClientCheckProperty(wapp->main_window_desc, &event->xproperty); } } static void handleClientMessage(XEvent * event) { WWindow *wwin; WObjDescriptor *desc; /* handle transition from Normal to Iconic state */ if (event->xclient.message_type == w_global.atom.wm.change_state && event->xclient.format == 32 && event->xclient.data.l[0] == IconicState) { wwin = wWindowFor(event->xclient.window); if (!wwin) return; if (!wwin->flags.miniaturized) wIconifyWindow(wwin); } else if (event->xclient.message_type == w_global.atom.wm.colormap_notify && event->xclient.format == 32) { WScreen *scr = wScreenForRootWindow(event->xclient.window); if (!scr) return; if (event->xclient.data.l[1] == 1) { /* starting */ wColormapAllowClientInstallation(scr, True); } else { /* stopping */ wColormapAllowClientInstallation(scr, False); } } else if (event->xclient.message_type == w_global.atom.wmaker.command) { char *command; size_t len; len = sizeof(event->xclient.data.b); command = wmalloc(len + 1); strncpy(command, event->xclient.data.b, len); if (strncmp(command, "Reconfigure", sizeof("Reconfigure")) == 0) { wwarning(_("Got Reconfigure command")); wDefaultsCheckDomains(NULL); } else { wwarning(_("Got unknown command %s"), command); } wfree(command); } else if (event->xclient.message_type == w_global.atom.wmaker.wm_function) { WApplication *wapp; int done = 0; wapp = wApplicationOf(event->xclient.window); if (wapp) { switch (event->xclient.data.l[0]) { case WMFHideOtherApplications: wHideOtherApplications(wapp->main_window_desc); done = 1; break; case WMFHideApplication: wHideApplication(wapp); done = 1; break; } } if (!done) { wwin = wWindowFor(event->xclient.window); if (wwin) { switch (event->xclient.data.l[0]) { case WMFHideOtherApplications: wHideOtherApplications(wwin); break; case WMFHideApplication: wHideApplication(wApplicationOf(wwin->main_window)); break; } } } } else if (event->xclient.message_type == w_global.atom.gnustep.wm_attr) { wwin = wWindowFor(event->xclient.window); if (!wwin) return; switch (event->xclient.data.l[0]) { case GSWindowLevelAttr: { int level = (int)event->xclient.data.l[1]; if (WINDOW_LEVEL(wwin) != level) { ChangeStackingLevel(wwin->frame->core, level); } } break; } } else if (event->xclient.message_type == w_global.atom.gnustep.titlebar_state) { wwin = wWindowFor(event->xclient.window); if (!wwin) return; switch (event->xclient.data.l[0]) { case WMTitleBarNormal: wFrameWindowChangeState(wwin->frame, WS_UNFOCUSED); break; case WMTitleBarMain: wFrameWindowChangeState(wwin->frame, WS_PFOCUSED); break; case WMTitleBarKey: wFrameWindowChangeState(wwin->frame, WS_FOCUSED); break; } } else if (event->xclient.message_type == w_global.atom.wm.ignore_focus_events) { WScreen *scr = wScreenForRootWindow(event->xclient.window); if (!scr) return; scr->flags.ignore_focus_events = event->xclient.data.l[0] ? 1 : 0; } else if (wNETWMProcessClientMessage(&event->xclient)) { /* do nothing */ #ifdef USE_DOCK_XDND } else if (wXDNDProcessClientMessage(&event->xclient)) { /* do nothing */ #endif /* USE_DOCK_XDND */ } else { /* * Non-standard thing, but needed by OffiX DND. * For when the icon frame gets a ClientMessage * that should have gone to the icon_window. */ if (XFindContext(dpy, event->xbutton.window, w_global.context.client_win, (XPointer *) & desc) != XCNOENT) { struct WIcon *icon = NULL; if (desc->parent_type == WCLASS_MINIWINDOW) { icon = (WIcon *) desc->parent; } else if (desc->parent_type == WCLASS_DOCK_ICON || desc->parent_type == WCLASS_APPICON) { icon = ((WAppIcon *) desc->parent)->icon; } if (icon && (wwin = icon->owner)) { if (wwin->client_win != event->xclient.window) { event->xclient.window = wwin->client_win; XSendEvent(dpy, wwin->client_win, False, NoEventMask, event); } } } } } static void raiseWindow(WScreen * scr) { WWindow *wwin; scr->autoRaiseTimer = NULL; wwin = wWindowFor(scr->autoRaiseWindow); if (!wwin) return; if (!wwin->flags.destroyed && wwin->flags.focused) { wRaiseFrame(wwin->frame->core); /* this is needed or a race condition will occur */ XSync(dpy, False); } } static void handleEnterNotify(XEvent * event) { WWindow *wwin; WObjDescriptor *desc = NULL; XEvent ev; WScreen *scr = wScreenForRootWindow(event->xcrossing.root); if (XCheckTypedWindowEvent(dpy, event->xcrossing.window, LeaveNotify, &ev)) { /* already left the window... */ saveTimestamp(&ev); if (ev.xcrossing.mode == event->xcrossing.mode && ev.xcrossing.detail == event->xcrossing.detail) { return; } } if (XFindContext(dpy, event->xcrossing.window, w_global.context.client_win, (XPointer *) & desc) != XCNOENT) { if (desc->handle_enternotify) (*desc->handle_enternotify) (desc, event); } /* enter to window */ wwin = wWindowFor(event->xcrossing.window); if (!wwin) { if (wPreferences.colormap_mode == WCM_POINTER) { wColormapInstallForWindow(scr, NULL); } if (scr->autoRaiseTimer && event->xcrossing.root == event->xcrossing.window) { WMDeleteTimerHandler(scr->autoRaiseTimer); scr->autoRaiseTimer = NULL; } } else { /* set auto raise timer even if in focus-follows-mouse mode * and the event is for the frame window, even if the window * has focus already. useful if you move the pointer from a focused * window to the root window and back pretty fast * * set focus if in focus-follows-mouse mode and the event * is for the frame window and window doesn't have focus yet */ if (wPreferences.focus_mode == WKF_SLOPPY && wwin->frame->core->window == event->xcrossing.window && !scr->flags.doing_alt_tab) { if (!wwin->flags.focused && !WFLAGP(wwin, no_focusable)) wSetFocusTo(scr, wwin); if (scr->autoRaiseTimer) WMDeleteTimerHandler(scr->autoRaiseTimer); scr->autoRaiseTimer = NULL; if (wPreferences.raise_delay && !WFLAGP(wwin, no_focusable)) { scr->autoRaiseWindow = wwin->frame->core->window; scr->autoRaiseTimer = WMAddTimerHandler(wPreferences.raise_delay, (WMCallback *) raiseWindow, scr); } } /* Install colormap for window, if the colormap installation mode * is colormap_follows_mouse */ if (wPreferences.colormap_mode == WCM_POINTER) { if (wwin->client_win == event->xcrossing.window) wColormapInstallForWindow(scr, wwin); else wColormapInstallForWindow(scr, NULL); } } if (event->xcrossing.window == event->xcrossing.root && event->xcrossing.detail == NotifyNormal && event->xcrossing.detail != NotifyInferior && wPreferences.focus_mode != WKF_CLICK) { wSetFocusTo(scr, scr->focused_window); } #ifdef BALLOON_TEXT wBalloonEnteredObject(scr, desc); #endif } static void handleLeaveNotify(XEvent * event) { WObjDescriptor *desc = NULL; if (XFindContext(dpy, event->xcrossing.window, w_global.context.client_win, (XPointer *) & desc) != XCNOENT) { if (desc->handle_leavenotify) (*desc->handle_leavenotify) (desc, event); } } #ifdef USE_XSHAPE static void handleShapeNotify(XEvent * event) { XShapeEvent *shev = (XShapeEvent *) event; WWindow *wwin; union { XEvent xevent; XShapeEvent xshape; } ev; while (XCheckTypedWindowEvent(dpy, shev->window, event->type, &ev.xevent)) { if (ev.xshape.kind == ShapeBounding) { if (ev.xshape.shaped == shev->shaped) { *shev = ev.xshape; } else { XPutBackEvent(dpy, &ev.xevent); break; } } } wwin = wWindowFor(shev->window); if (!wwin || shev->kind != ShapeBounding) return; if (!shev->shaped && wwin->flags.shaped) { wwin->flags.shaped = 0; wWindowClearShape(wwin); } else if (shev->shaped) { wwin->flags.shaped = 1; wWindowSetShape(wwin); } } #endif /* USE_XSHAPE */ #ifdef KEEP_XKB_LOCK_STATUS /* please help ]d if you know what to do */ static void handleXkbIndicatorStateNotify(XkbEvent *event) { WWindow *wwin; WScreen *scr; XkbStateRec staterec; int i; for (i = 0; i < w_global.screen_count; i++) { scr = wScreenWithNumber(i); wwin = scr->focused_window; if (wwin && wwin->flags.focused) { XkbGetState(dpy, XkbUseCoreKbd, &staterec); if (wwin->frame->languagemode != staterec.group) { wwin->frame->last_languagemode = wwin->frame->languagemode; wwin->frame->languagemode = staterec.group; } #ifdef XKB_BUTTON_HINT if (wwin->frame->titlebar) { wFrameWindowPaint(wwin->frame); } #endif } } } #endif /*KEEP_XKB_LOCK_STATUS */ static void handleColormapNotify(XEvent * event) { WWindow *wwin; WScreen *scr; Bool reinstall = False; wwin = wWindowFor(event->xcolormap.window); if (!wwin) return; scr = wwin->screen_ptr; do { if (wwin) { if (event->xcolormap.new) { XWindowAttributes attr; XGetWindowAttributes(dpy, wwin->client_win, &attr); if (wwin == scr->cmap_window && wwin->cmap_window_no == 0) scr->current_colormap = attr.colormap; reinstall = True; } else if (event->xcolormap.state == ColormapUninstalled && scr->current_colormap == event->xcolormap.colormap) { /* some bastard app (like XV) removed our colormap */ /* * can't enforce or things like xscreensaver won't work * reinstall = True; */ } else if (event->xcolormap.state == ColormapInstalled && scr->current_colormap == event->xcolormap.colormap) { /* someone has put our colormap back */ reinstall = False; } } } while (XCheckTypedEvent(dpy, ColormapNotify, event) && ((wwin = wWindowFor(event->xcolormap.window)) || 1)); if (reinstall && scr->current_colormap != None) { if (!scr->flags.colormap_stuff_blocked) XInstallColormap(dpy, scr->current_colormap); } } static void handleFocusIn(XEvent * event) { WWindow *wwin; /* * For applications that like stealing the focus. */ while (XCheckTypedEvent(dpy, FocusIn, event)) ; saveTimestamp(event); if (event->xfocus.mode == NotifyUngrab || event->xfocus.mode == NotifyGrab || event->xfocus.detail > NotifyNonlinearVirtual) { return; } wwin = wWindowFor(event->xfocus.window); if (wwin && !wwin->flags.focused) { if (wwin->flags.mapped) wSetFocusTo(wwin->screen_ptr, wwin); else wSetFocusTo(wwin->screen_ptr, NULL); } else if (!wwin) { WScreen *scr = wScreenForWindow(event->xfocus.window); if (scr) wSetFocusTo(scr, NULL); } } static WWindow *windowUnderPointer(WScreen * scr) { unsigned int mask; int foo; Window bar, win; if (XQueryPointer(dpy, scr->root_win, &bar, &win, &foo, &foo, &foo, &foo, &mask)) return wWindowFor(win); return NULL; } static int CheckFullScreenWindowFocused(WScreen * scr) { if (scr->focused_window && scr->focused_window->flags.fullscreen) return 1; else return 0; } static void handleKeyPress(XEvent * event) { WScreen *scr = wScreenForRootWindow(event->xkey.root); WWindow *wwin = scr->focused_window; short i, widx; int modifiers; int command = -1; #ifdef KEEP_XKB_LOCK_STATUS XkbStateRec staterec; #endif /*KEEP_XKB_LOCK_STATUS */ /* ignore CapsLock */ modifiers = event->xkey.state & w_global.shortcut.modifiers_mask; for (i = 0; i < WKBD_LAST; i++) { if (wKeyBindings[i].keycode == 0) continue; if (wKeyBindings[i].keycode == event->xkey.keycode && ( /*wKeyBindings[i].modifier==0 || */ wKeyBindings[i].modifier == modifiers)) { command = i; break; } } if (command < 0) { if (!wRootMenuPerformShortcut(event)) { static int dontLoop = 0; if (dontLoop > 10) { wwarning("problem with key event processing code"); return; } dontLoop++; /* if the focused window is an internal window, try redispatching * the event to the managed window, as it can be a WINGs window */ if (wwin && wwin->flags.internal_window && wwin->client_leader != None) { /* client_leader contains the WINGs toplevel */ event->xany.window = wwin->client_leader; WMHandleEvent(event); } dontLoop--; } return; } #define ISMAPPED(w) ((w) && !(w)->flags.miniaturized && ((w)->flags.mapped || (w)->flags.shaded)) #define ISFOCUSED(w) ((w) && (w)->flags.focused) switch (command) { case WKBD_ROOTMENU: /*OpenRootMenu(scr, event->xkey.x_root, event->xkey.y_root, True); */ if (!CheckFullScreenWindowFocused(scr)) { WMRect rect = wGetRectForHead(scr, wGetHeadForPointerLocation(scr)); OpenRootMenu(scr, rect.pos.x + rect.size.width / 2, rect.pos.y + rect.size.height / 2, True); } break; case WKBD_WINDOWLIST: if (!CheckFullScreenWindowFocused(scr)) { WMRect rect = wGetRectForHead(scr, wGetHeadForPointerLocation(scr)); OpenSwitchMenu(scr, rect.pos.x + rect.size.width / 2, rect.pos.y + rect.size.height / 2, True); } break; case WKBD_WINDOWMENU: if (ISMAPPED(wwin) && ISFOCUSED(wwin)) OpenWindowMenu(wwin, wwin->frame_x, wwin->frame_y + wwin->frame->top_width, True); break; case WKBD_MINIMIZEALL: CloseWindowMenu(scr); wHideAll(scr); break; case WKBD_MINIATURIZE: if (ISMAPPED(wwin) && ISFOCUSED(wwin) && !WFLAGP(wwin, no_miniaturizable)) { CloseWindowMenu(scr); if (wwin->protocols.MINIATURIZE_WINDOW) wClientSendProtocol(wwin, w_global.atom.gnustep.wm_miniaturize_window, event->xbutton.time); else { wIconifyWindow(wwin); } } break; case WKBD_HIDE: if (ISMAPPED(wwin) && ISFOCUSED(wwin)) { WApplication *wapp = wApplicationOf(wwin->main_window); CloseWindowMenu(scr); if (wapp && !WFLAGP(wapp->main_window_desc, no_appicon)) { wHideApplication(wapp); } } break; case WKBD_HIDE_OTHERS: if (ISMAPPED(wwin) && ISFOCUSED(wwin)) { CloseWindowMenu(scr); wHideOtherApplications(wwin); } break; case WKBD_MAXIMIZE: if (ISMAPPED(wwin) && ISFOCUSED(wwin) && IS_RESIZABLE(wwin)) { CloseWindowMenu(scr); handleMaximize(wwin, MAX_VERTICAL | MAX_HORIZONTAL | MAX_KEYBOARD); } break; case WKBD_VMAXIMIZE: if (ISMAPPED(wwin) && ISFOCUSED(wwin) && IS_RESIZABLE(wwin)) { CloseWindowMenu(scr); handleMaximize(wwin, MAX_VERTICAL | MAX_KEYBOARD); } break; case WKBD_HMAXIMIZE: if (ISMAPPED(wwin) && ISFOCUSED(wwin) && IS_RESIZABLE(wwin)) { CloseWindowMenu(scr); handleMaximize(wwin, MAX_HORIZONTAL | MAX_KEYBOARD); movePionterToWindowCenter(wwin); } break; case WKBD_LHMAXIMIZE: if (ISMAPPED(wwin) && ISFOCUSED(wwin) && IS_RESIZABLE(wwin)) { CloseWindowMenu(scr); handleMaximize(wwin, MAX_VERTICAL | MAX_LEFTHALF | MAX_KEYBOARD); movePionterToWindowCenter(wwin); } break; case WKBD_RHMAXIMIZE: if (ISMAPPED(wwin) && ISFOCUSED(wwin) && IS_RESIZABLE(wwin)) { CloseWindowMenu(scr); handleMaximize(wwin, MAX_VERTICAL | MAX_RIGHTHALF | MAX_KEYBOARD); movePionterToWindowCenter(wwin); } break; case WKBD_THMAXIMIZE: if (ISMAPPED(wwin) && ISFOCUSED(wwin) && IS_RESIZABLE(wwin)) { CloseWindowMenu(scr); handleMaximize(wwin, MAX_HORIZONTAL | MAX_TOPHALF | MAX_KEYBOARD); movePionterToWindowCenter(wwin); } break; case WKBD_BHMAXIMIZE: if (ISMAPPED(wwin) && ISFOCUSED(wwin) && IS_RESIZABLE(wwin)) { CloseWindowMenu(scr); handleMaximize(wwin, MAX_HORIZONTAL | MAX_BOTTOMHALF | MAX_KEYBOARD); movePionterToWindowCenter(wwin); } break; case WKBD_LTCMAXIMIZE: if (ISMAPPED(wwin) && ISFOCUSED(wwin) && IS_RESIZABLE(wwin)) { CloseWindowMenu(scr); handleMaximize(wwin, MAX_LEFTHALF | MAX_TOPHALF | MAX_KEYBOARD); movePionterToWindowCenter(wwin); } break; case WKBD_RTCMAXIMIZE: if (ISMAPPED(wwin) && ISFOCUSED(wwin) && IS_RESIZABLE(wwin)) { CloseWindowMenu(scr); handleMaximize(wwin, MAX_RIGHTHALF | MAX_TOPHALF | MAX_KEYBOARD); movePionterToWindowCenter(wwin); } break; case WKBD_LBCMAXIMIZE: if (ISMAPPED(wwin) && ISFOCUSED(wwin) && IS_RESIZABLE(wwin)) { CloseWindowMenu(scr); handleMaximize(wwin, MAX_LEFTHALF | MAX_BOTTOMHALF | MAX_KEYBOARD); movePionterToWindowCenter(wwin); } break; case WKBD_RBCMAXIMIZE: if (ISMAPPED(wwin) && ISFOCUSED(wwin) && IS_RESIZABLE(wwin)) { CloseWindowMenu(scr); handleMaximize(wwin, MAX_RIGHTHALF | MAX_BOTTOMHALF | MAX_KEYBOARD); movePionterToWindowCenter(wwin); } break; case WKBD_MAXIMUS: if (ISMAPPED(wwin) && ISFOCUSED(wwin) && IS_RESIZABLE(wwin)) { CloseWindowMenu(scr); handleMaximize(wwin, MAX_MAXIMUS | MAX_KEYBOARD); } break; case WKBD_KEEP_ON_TOP: if (ISMAPPED(wwin) && ISFOCUSED(wwin)) { CloseWindowMenu(scr); if (wwin->frame->core->stacking->window_level != WMFloatingLevel) ChangeStackingLevel(wwin->frame->core, WMFloatingLevel); else ChangeStackingLevel(wwin->frame->core, WMNormalLevel); } break; case WKBD_KEEP_AT_BOTTOM: if (ISMAPPED(wwin) && ISFOCUSED(wwin)) { CloseWindowMenu(scr); if (wwin->frame->core->stacking->window_level != WMSunkenLevel) ChangeStackingLevel(wwin->frame->core, WMSunkenLevel); else ChangeStackingLevel(wwin->frame->core, WMNormalLevel); } break; case WKBD_OMNIPRESENT: if (ISMAPPED(wwin) && ISFOCUSED(wwin)) { CloseWindowMenu(scr); wWindowSetOmnipresent(wwin, !wwin->flags.omnipresent); } break; case WKBD_RAISE: if (ISMAPPED(wwin) && ISFOCUSED(wwin)) { CloseWindowMenu(scr); wRaiseFrame(wwin->frame->core); } break; case WKBD_LOWER: if (ISMAPPED(wwin) && ISFOCUSED(wwin)) { CloseWindowMenu(scr); wLowerFrame(wwin->frame->core); } break; case WKBD_RAISELOWER: /* raise or lower the window under the pointer, not the * focused one */ wwin = windowUnderPointer(scr); if (wwin) wRaiseLowerFrame(wwin->frame->core); break; case WKBD_SHADE: if (ISMAPPED(wwin) && ISFOCUSED(wwin) && !WFLAGP(wwin, no_shadeable)) { if (wwin->flags.shaded) wUnshadeWindow(wwin); else wShadeWindow(wwin); } break; case WKBD_MOVERESIZE: if (ISMAPPED(wwin) && ISFOCUSED(wwin) && (IS_RESIZABLE(wwin) || IS_MOVABLE(wwin))) { CloseWindowMenu(scr); wKeyboardMoveResizeWindow(wwin); } break; case WKBD_CLOSE: if (ISMAPPED(wwin) && ISFOCUSED(wwin) && !WFLAGP(wwin, no_closable)) { CloseWindowMenu(scr); if (wwin->protocols.DELETE_WINDOW) wClientSendProtocol(wwin, w_global.atom.wm.delete_window, event->xkey.time); } break; case WKBD_SELECT: if (ISMAPPED(wwin) && ISFOCUSED(wwin)) { wSelectWindow(wwin, !wwin->flags.selected); } break; case WKBD_WORKSPACEMAP: if (wPreferences.enable_workspace_pager) StartWorkspaceMap(scr); break; case WKBD_FOCUSNEXT: StartWindozeCycle(wwin, event, True, False); break; case WKBD_FOCUSPREV: StartWindozeCycle(wwin, event, False, False); break; case WKBD_GROUPNEXT: StartWindozeCycle(wwin, event, True, True); break; case WKBD_GROUPPREV: StartWindozeCycle(wwin, event, False, True); break; case WKBD_WORKSPACE1 ... WKBD_WORKSPACE10: widx = command - WKBD_WORKSPACE1; i = (scr->current_workspace / 10) * 10 + widx; if (wPreferences.ws_advance || i < scr->workspace_count) wWorkspaceChange(scr, i); break; case WKBD_NEXTWORKSPACE: wWorkspaceRelativeChange(scr, 1); break; case WKBD_PREVWORKSPACE: wWorkspaceRelativeChange(scr, -1); break; case WKBD_LASTWORKSPACE: wWorkspaceChange(scr, scr->last_workspace); break; case WKBD_MOVE_WORKSPACE1 ... WKBD_MOVE_WORKSPACE10: widx = command - WKBD_MOVE_WORKSPACE1; i = (scr->current_workspace / 10) * 10 + widx; if (wwin && (wPreferences.ws_advance || i < scr->workspace_count)) wWindowChangeWorkspace(wwin, i); break; case WKBD_MOVE_NEXTWORKSPACE: if (wwin) wWindowChangeWorkspaceRelative(wwin, 1); break; case WKBD_MOVE_PREVWORKSPACE: if (wwin) wWindowChangeWorkspaceRelative(wwin, -1); break; case WKBD_MOVE_LASTWORKSPACE: if (wwin) wWindowChangeWorkspace(wwin, scr->last_workspace); break; case WKBD_MOVE_NEXTWSLAYER: case WKBD_MOVE_PREVWSLAYER: { if (wwin) { int row, column; row = scr->current_workspace / 10; column = scr->current_workspace % 10; if (command == WKBD_MOVE_NEXTWSLAYER) { if ((row + 1) * 10 < scr->workspace_count) wWindowChangeWorkspace(wwin, column + (row + 1) * 10); } else { if (row > 0) wWindowChangeWorkspace(wwin, column + (row - 1) * 10); } } } break; case WKBD_WINDOW1: case WKBD_WINDOW2: case WKBD_WINDOW3: case WKBD_WINDOW4: case WKBD_WINDOW5: case WKBD_WINDOW6: case WKBD_WINDOW7: case WKBD_WINDOW8: case WKBD_WINDOW9: case WKBD_WINDOW10: widx = command - WKBD_WINDOW1; if (scr->shortcutWindows[widx]) { WMArray *list = scr->shortcutWindows[widx]; int cw; int count = WMGetArrayItemCount(list); WWindow *twin; WMArrayIterator iter; WWindow *wwin; wUnselectWindows(scr); cw = scr->current_workspace; WM_ETARETI_ARRAY(list, wwin, iter) { if (count > 1) wWindowChangeWorkspace(wwin, cw); wMakeWindowVisible(wwin); if (count > 1) wSelectWindow(wwin, True); } /* rotate the order of windows, to create a cycling effect */ twin = WMGetFromArray(list, 0); WMDeleteFromArray(list, 0); WMAddToArray(list, twin); } else if (wwin && ISMAPPED(wwin) && ISFOCUSED(wwin)) { if (scr->shortcutWindows[widx]) { WMFreeArray(scr->shortcutWindows[widx]); scr->shortcutWindows[widx] = NULL; } if (wwin->flags.selected && scr->selected_windows) { scr->shortcutWindows[widx] = WMDuplicateArray(scr->selected_windows); /*WMRemoveFromArray(scr->shortcutWindows[index], wwin); WMInsertInArray(scr->shortcutWindows[index], 0, wwin); */ } else { scr->shortcutWindows[widx] = WMCreateArray(4); WMAddToArray(scr->shortcutWindows[widx], wwin); } wSelectWindow(wwin, !wwin->flags.selected); XFlush(dpy); wusleep(3000); wSelectWindow(wwin, !wwin->flags.selected); XFlush(dpy); } else if (scr->selected_windows && WMGetArrayItemCount(scr->selected_windows)) { if (wwin->flags.selected && scr->selected_windows) { if (scr->shortcutWindows[widx]) { WMFreeArray(scr->shortcutWindows[widx]); } scr->shortcutWindows[widx] = WMDuplicateArray(scr->selected_windows); } } break; case WKBD_MOVE_12_TO_6_HEAD: case WKBD_MOVE_6_TO_12_HEAD: if (wwin) moveBetweenHeads(wwin, command - WKBD_MOVE_12_TO_6_HEAD); break; case WKBD_RELAUNCH: if (ISMAPPED(wwin) && ISFOCUSED(wwin)) (void) RelaunchWindow(wwin); break; case WKBD_SWITCH_SCREEN: if (w_global.screen_count > 1) { WScreen *scr2; int i; /* find index of this screen */ for (i = 0; i < w_global.screen_count; i++) { if (wScreenWithNumber(i) == scr) break; } i++; if (i >= w_global.screen_count) { i = 0; } scr2 = wScreenWithNumber(i); if (scr2) { XWarpPointer(dpy, scr->root_win, scr2->root_win, 0, 0, 0, 0, scr2->scr_width / 2, scr2->scr_height / 2); } } break; case WKBD_RUN: { char *cmdline; cmdline = ExpandOptions(scr, _("exec %A(Run,Type command to run:)")); if (cmdline) { XGrabPointer(dpy, scr->root_win, True, 0, GrabModeAsync, GrabModeAsync, None, wPreferences.cursor[WCUR_WAIT], CurrentTime); XSync(dpy, False); ExecuteShellCommand(scr, cmdline); wfree(cmdline); XUngrabPointer(dpy, CurrentTime); XSync(dpy, False); } break; } case WKBD_NEXTWSLAYER: case WKBD_PREVWSLAYER: { int row, column; row = scr->current_workspace / 10; column = scr->current_workspace % 10; if (command == WKBD_NEXTWSLAYER) { if ((row + 1) * 10 < scr->workspace_count) wWorkspaceChange(scr, column + (row + 1) * 10); } else { if (row > 0) wWorkspaceChange(scr, column + (row - 1) * 10); } } break; case WKBD_CLIPRAISELOWER: if (!wPreferences.flags.noclip) wDockRaiseLower(scr->workspaces[scr->current_workspace]->clip); break; case WKBD_DOCKRAISELOWER: if (!wPreferences.flags.nodock) wDockRaiseLower(scr->dock); break; #ifdef KEEP_XKB_LOCK_STATUS case WKBD_TOGGLE: if (wPreferences.modelock) { /*toggle */ wwin = scr->focused_window; if (wwin && wwin->flags.mapped && wwin->frame->workspace == wwin->screen_ptr->current_workspace && !wwin->flags.miniaturized && !wwin->flags.hidden) { XkbGetState(dpy, XkbUseCoreKbd, &staterec); wwin->frame->languagemode = wwin->frame->last_languagemode; wwin->frame->last_languagemode = staterec.group; XkbLockGroup(dpy, XkbUseCoreKbd, wwin->frame->languagemode); } } break; #endif /* KEEP_XKB_LOCK_STATUS */ } } static void handleMotionNotify(XEvent * event) { WScreen *scr = wScreenForRootWindow(event->xmotion.root); if (wPreferences.scrollable_menus) { WMPoint p = wmkpoint(event->xmotion.x_root, event->xmotion.y_root); WMRect rect = wGetRectForHead(scr, wGetHeadForPoint(scr, p)); if (scr->flags.jump_back_pending || p.x <= (rect.pos.x + 1) || p.x >= (rect.pos.x + rect.size.width - 2) || p.y <= (rect.pos.y + 1) || p.y >= (rect.pos.y + rect.size.height - 2)) { WMenu *menu; menu = wMenuUnderPointer(scr); if (menu != NULL) wMenuScroll(menu); } } } static void handleVisibilityNotify(XEvent * event) { WWindow *wwin; wwin = wWindowFor(event->xvisibility.window); if (!wwin) return; wwin->flags.obscured = (event->xvisibility.state == VisibilityFullyObscured); } static void handle_selection_request(XSelectionRequestEvent *event) { #ifdef USE_ICCCM_WMREPLACE static Atom atom_version = None; WScreen *scr; XSelectionEvent notify; /* * This event must be sent to the slection requester to not block him * * We create it with the answer 'there is no selection' by default */ notify.type = SelectionNotify; notify.display = dpy; notify.requestor = event->requestor; notify.selection = event->selection; notify.target = event->target; notify.property = None; /* This says that there is no selection */ notify.time = event->time; scr = wScreenForWindow(event->owner); if (!scr) goto not_our_selection; if (event->owner != scr->info_window) goto not_our_selection; if (event->selection != scr->sn_atom) goto not_our_selection; if (atom_version == None) atom_version = XInternAtom(dpy, "VERSION", False); if (event->target == atom_version) { static const long icccm_version[] = { 2, 0 }; /* * This protocol is defined in ICCCM 2.0: * http://www.x.org/releases/X11R7.7/doc/xorg-docs/icccm/icccm.html * "Communication with the Window Manager by Means of Selections" */ /* * Setting the property means the content of the selection is available * According to the ICCCM spec, we need to support being asked for a property * set to 'None' for compatibility with old clients */ notify.property = (event->property == None)?(event->target):(event->property); XChangeProperty(dpy, event->requestor, notify.property, XA_INTEGER, 32, PropModeReplace, (unsigned char *) icccm_version, wlengthof(icccm_version)); } not_our_selection: if (notify.property == None) wwarning("received SelectionRequest(%s) for target=\"%s\" from requestor 0x%lX but we have no answer", XGetAtomName(dpy, event->selection), XGetAtomName(dpy, event->target), (long) event->requestor); /* Send the answer to the requestor */ XSendEvent(dpy, event->requestor, False, 0L, (XEvent *) ¬ify); #else /* * If the support for ICCCM window manager replacement was not enabled, we should not receive * this kind of event, so we just ignore it (Conceptually, we should reply with 'SelectionNotify' * event with property set to 'None' to tell that we don't have this selection, but that is a bit * costly for an event that shall never happen). */ (void) event; #endif } static void handle_selection_clear(XSelectionClearEvent *event) { #ifdef USE_ICCCM_WMREPLACE WScreen *scr = wScreenForWindow(event->window); if (!scr) return; if (event->selection != scr->sn_atom) return; wmessage(_("another window manager is replacing us!")); Shutdown(WSExitMode); #else /* * If the support for ICCCM window manager replacement was not enabled, we should not receive * this kind of event, so we simply do nothing. */ (void) event; #endif } ��������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/motif.c����������������������������������������������������������������������0000644�0001750�0001750�00000013052�13642357774�013062� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* motif.c-- stuff for support for mwm hints * * Window Maker window manager * * Copyright (c) 1998-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "wconfig.h" #include <X11/Xlib.h> #include <X11/Xutil.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include "WindowMaker.h" #include "framewin.h" #include "window.h" #include "properties.h" #include "icon.h" #include "client.h" #include "motif.h" /* Motif window hints */ #define MWM_HINTS_FUNCTIONS (1L << 0) #define MWM_HINTS_DECORATIONS (1L << 1) /* bit definitions for MwmHints.functions */ #define MWM_FUNC_ALL (1L << 0) #define MWM_FUNC_RESIZE (1L << 1) #define MWM_FUNC_MOVE (1L << 2) #define MWM_FUNC_MINIMIZE (1L << 3) #define MWM_FUNC_MAXIMIZE (1L << 4) #define MWM_FUNC_CLOSE (1L << 5) /* bit definitions for MwmHints.decorations */ #define MWM_DECOR_ALL (1L << 0) #define MWM_DECOR_BORDER (1L << 1) #define MWM_DECOR_RESIZEH (1L << 2) #define MWM_DECOR_TITLE (1L << 3) #define MWM_DECOR_MENU (1L << 4) #define MWM_DECOR_MINIMIZE (1L << 5) #define MWM_DECOR_MAXIMIZE (1L << 6) /* Motif window hints */ typedef struct { long flags; long functions; long decorations; long inputMode; long unknown; } MWMHints; static Atom _XA_MOTIF_WM_HINTS; static void setupMWMHints(WWindow *wwin, MWMHints *mwm_hints) { /* * We will ignore all decoration hints that have an equivalent as * functions, because wmaker does not distinguish decoration hints */ if (mwm_hints->flags & MWM_HINTS_DECORATIONS) { wwin->client_flags.no_titlebar = 1; wwin->client_flags.no_close_button = 1; wwin->client_flags.no_miniaturize_button = 1; wwin->client_flags.no_resizebar = 1; wwin->client_flags.no_border = 1; if (mwm_hints->decorations & MWM_DECOR_ALL) { wwin->client_flags.no_titlebar = 0; wwin->client_flags.no_close_button = 0; wwin->client_flags.no_closable = 0; wwin->client_flags.no_miniaturize_button = 0; wwin->client_flags.no_miniaturizable = 0; wwin->client_flags.no_resizebar = 0; wwin->client_flags.no_resizable = 0; wwin->client_flags.no_border = 0; } if (mwm_hints->decorations & MWM_DECOR_BORDER) { wwin->client_flags.no_border = 0; } if (mwm_hints->decorations & MWM_DECOR_RESIZEH) wwin->client_flags.no_resizebar = 0; if (mwm_hints->decorations & MWM_DECOR_TITLE) { wwin->client_flags.no_titlebar = 0; wwin->client_flags.no_close_button = 0; wwin->client_flags.no_closable = 0; } if (mwm_hints->decorations & MWM_DECOR_MENU) { /* * WindowMaker does not include a button to display the menu * for windows, this is done using right mouse button on the * title bar. As a consequence, we ignore this flag because we * have nothing to hide. */ } if (mwm_hints->decorations & MWM_DECOR_MINIMIZE) { wwin->client_flags.no_miniaturize_button = 0; wwin->client_flags.no_miniaturizable = 0; } if (mwm_hints->decorations & MWM_DECOR_MAXIMIZE) { /* * WindowMaker does not display a button to maximize windows, * so we don't need to hide anything more for that flag */ } } if (mwm_hints->flags & MWM_HINTS_FUNCTIONS) { wwin->client_flags.no_closable = 1; wwin->client_flags.no_miniaturizable = 1; wwin->client_flags.no_resizable = 1; if (mwm_hints->functions & MWM_FUNC_ALL) { wwin->client_flags.no_closable = 0; wwin->client_flags.no_miniaturizable = 0; wwin->client_flags.no_resizable = 0; } if (mwm_hints->functions & MWM_FUNC_RESIZE) wwin->client_flags.no_resizable = 0; if (mwm_hints->functions & MWM_FUNC_MOVE) { /* * WindowMaker does not allow a window to not be moved, and this * is a good thing, so we explicitly ignore this flag. */ } if (mwm_hints->functions & MWM_FUNC_MINIMIZE) wwin->client_flags.no_miniaturizable = 0; if (mwm_hints->functions & MWM_FUNC_MAXIMIZE) { /* a window must be resizable to be maximizable */ wwin->client_flags.no_resizable = 0; } if (mwm_hints->functions & MWM_FUNC_CLOSE) wwin->client_flags.no_closable = 0; } } static int getMWMHints(Window window, MWMHints *mwmhints) { unsigned long *data; int count; if (!_XA_MOTIF_WM_HINTS) _XA_MOTIF_WM_HINTS = XInternAtom(dpy, "_MOTIF_WM_HINTS", False); data = (unsigned long *)PropGetCheckProperty(window, _XA_MOTIF_WM_HINTS, _XA_MOTIF_WM_HINTS, 32, 0, &count); if (!data) return 0; mwmhints->flags = 0; if (count >= 4) { mwmhints->flags = data[0]; mwmhints->functions = data[1]; mwmhints->decorations = data[2]; mwmhints->inputMode = data[3]; if (count > 5) mwmhints->unknown = data[4]; } XFree(data); return 1; } void wMWMCheckClientHints(WWindow *wwin) { MWMHints hints; if (getMWMHints(wwin->client_win, &hints)) setupMWMHints(wwin, &hints); } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/wsmap.h����������������������������������������������������������������������0000644�0001750�0001750�00000001507�13431646202�013061� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 2014 Window Maker Team * * 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, see the file COPYING. */ #ifndef WSMAP_H #define WSMAP_H void wWorkspaceMapUpdate(WScreen *scr); void StartWorkspaceMap(WScreen *scr); #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/icon.h�����������������������������������������������������������������������0000644�0001750�0001750�00000005256�13431646202�012667� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef WMICON_H_ #define WMICON_H_ #include "wcore.h" #include "window.h" #define TILE_NORMAL 0 #define TILE_CLIP 1 #define TILE_DRAWER 2 /* This is the border, in pixel, drawn around a Mini-Preview */ #define MINIPREVIEW_BORDER 1 typedef struct WIcon { WCoreWindow *core; WWindow *owner; /* owner window */ char *icon_name; /* the icon name hint */ Window icon_win; /* client suplied icon window */ char *file; /* the file with the icon image */ RImage *file_image; /* the image from the file */ unsigned int tile_type:4; unsigned int show_title:1; unsigned int selected:1; unsigned int step:3; /* selection cycle step */ unsigned int shadowed:1; /* If the icon is to be blured */ unsigned int mapped:1; unsigned int highlighted:1; Pixmap pixmap; Pixmap mini_preview; WMHandlerID handlerID; /* timer handler ID for cycling select * color */ } WIcon; WIcon *icon_create_for_dock(WScreen *scr, const char *command, const char *wm_instance, const char *wm_class, int tile); WIcon *icon_create_for_wwindow(WWindow *wwin); void set_icon_image_from_database(WIcon *icon, const char *wm_instance, const char *wm_class, const char *command); void wIconDestroy(WIcon *icon); void wIconPaint(WIcon *icon); void wIconUpdate(WIcon *icon); void wIconSelect(WIcon *icon); void wIconChangeTitle(WIcon *icon, WWindow *wwin); void update_icon_pixmap(WIcon *icon); int wIconChangeImageFile(WIcon *icon, const char *file); RImage *wIconValidateIconSize(RImage *icon, int max_size); RImage *get_rimage_icon_from_wm_hints(WIcon *icon); char *wIconStore(WIcon *icon); char *get_name_for_instance_class(const char *wm_instance, const char *wm_class); void wIconSetHighlited(WIcon *icon, Bool flag); void set_icon_image_from_image(WIcon *icon, RImage *image); void set_icon_minipreview(WIcon *icon, RImage *image); void remove_cache_icon(char *filename); #endif /* WMICON_H_ */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/def_pixmaps.h����������������������������������������������������������������0000644�0001750�0001750�00000014421�13431646202�014230� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* diamond mark */ #define MENU_RADIO_INDICATOR_XBM_SIZE 9 static unsigned char MENU_RADIO_INDICATOR_XBM_DATA[] = { 0x10, 0x00, 0x38, 0x00, 0x7c, 0x00, 0xee, 0x00, 0xc7, 0x01, 0xee, 0x00, 0x7c, 0x00, 0x38, 0x00, 0x10, 0x00}; /* check mark */ #define MENU_CHECK_INDICATOR_XBM_SIZE 9 static unsigned char MENU_CHECK_INDICATOR_XBM_DATA[] = { 0x00, 0x01, 0x83, 0x01, 0xc3, 0x00, 0x63, 0x00, 0x33, 0x00, 0x1b, 0x00, 0x0f, 0x00, 0x07, 0x00, 0x03, 0x00}; #define MENU_MINI_INDICATOR_XBM_SIZE 9 static unsigned char MENU_MINI_INDICATOR_XBM_DATA[] = { 0xff, 0x01, 0xff, 0x01, 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff, 0x01}; #define MENU_HIDE_INDICATOR_XBM_SIZE 9 static unsigned char MENU_HIDE_INDICATOR_XBM_DATA[] = { 0x99, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x33, 0x01}; #define MENU_SHADE_INDICATOR_XBM_SIZE 9 static unsigned char MENU_SHADE_INDICATOR_XBM_DATA[] = { 0xff, 0x01, 0xff, 0x01, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; /* button pixmaps */ /* the first one is for normal state, the second is for when * the button is pushed */ static char *PRED_CLOSE_XPM[] = { "10 10 3 1", " c #000000", ". c #616561", "X c None", " .XXXXXX. ", ". .XXXX. .", "X. .XX. .X", "XX. .. .XX", "XXX. .XXX", "XXX. .XXX", "XX. .. .XX", "X. .XX. .X", ". .XXXX. .", " .XXXXXX. "}; static char *PRED_BROKEN_CLOSE_XPM[] = { "10 10 3 1", " c #000000", ". c #616561", "X c None", " .XXXXXX. ", ". .XXXX. .", "X. XXXX .X", "XXXXXXXXXX", "XXXXXXXXXX", "XXXXXXXXXX", "XXXXXXXXXX", "X. XXXX .X", ". .XXXX. .", " .XXXXXX. "}; static char *PRED_KILL_XPM[] = { "10 10 3 1", " c #000000", ". c #616561", "X c None", " .XXXXXX. ", ". XXXXXX .", "XXXXXXXXXX", "XXX .. XXX", "XXX. .XXX", "XXX. .XXX", "XXX .. XXX", "XXXXXXXXXX", ". XXXXXX .", " .XXXXXX. "}; static char *PRED_ICONIFY_XPM[] = { " 10 10 2 1", ". c #000000", "# c None", "..........", "..........", "..........", ".########.", ".########.", ".########.", ".########.", ".########.", ".########.", ".........." }; static char *NEXT_CLOSE_XPM[] = { "10 10 69 1", " c None", ". c #FBFBFB", "+ c #F9F9F9", "@ c #F7F7F7", "# c #F4F4F4", "$ c #F0F0F0", "% c #EDEDED", "& c #E8E8E8", "* c #AFAFAF", "= c #FCFCFC", "- c #8B8B8B", "; c #DEDEDE", "> c #E0E0E0", ", c #C7C7C7", "' c #999999", ") c #2B2B2B", "! c #878787", "~ c #F1F1F1", "{ c #222222", "] c #C2C2C2", "^ c #EBEBEB", "/ c #DCDCDC", "( c #9F9F9F", "_ c #363636", ": c #FEFEFE", "< c #C1C1C1", "[ c #232323", "} c #CFCFCF", "| c #282828", "1 c #D5D5D5", "2 c #FAFAFA", "3 c #F6F6F6", "4 c #D3D3D3", "5 c #121212", "6 c #BEBEBE", "7 c #898989", "8 c #838383", "9 c #EEEEEE", "0 c #E9E9E9", "a c #CDCDCD", "b c #080808", "c c #131313", "d c #A1A1A1", "e c #7F7F7F", "f c #808080", "g c #D9D9D9", "h c #8D8D8D", "i c #1D1D1D", "j c #C9C9C9", "k c #B4B4B4", "l c #191919", "m c #6A6A6A", "n c #6C6C6C", "o c #7A7A7A", "p c #B1B1B1", "q c #202020", "r c #BBBBBB", "s c #D4D4D4", "t c #151515", "u c #515151", "v c #747474", "w c #3A3A3A", "x c #CCCCCC", "y c #B3B3B3", "z c #939393", "A c #A3A3A3", "B c #919191", "C c #858585", "D c #7C7C7C", "...+@#$%&*", "=-;#%>,')!", "=~{]^/(_!!", "=:<[}*|1(!", "2@345[>678", "@90abc6def", "#ghijklmno", "~pqrgs(tuv", "%wxx'-p8tn", "yzAB7C8enD"}; static char *NEXT_BROKEN_CLOSE_XPM[] = { "10 10 8 1", " c None", ". c #E0E0E0", "+ c #7D7D7D", "@ c #DBDBDB", "# c #BDBDBD", "$ c #080808", "% c #363636", "& c #D4D4D4", ".........+", ".+@...#+$+", "..$#.@+%++", "..###++&++", "...&...#++", "...&..#+++", ".@+##+%%%+", ".+$#@&+$%%", ".%##++++$%", "++++++++%+"}; static char *NEXT_KILL_XPM[] = { "10 10 64 1", " c None", ". c #FBFBFB", "+ c #FAFAFA", "@ c #F7F7F7", "# c #F5F5F5", "$ c #F6F6F6", "% c #EEEEEE", "& c #B3B3B3", "* c #FCFCFC", "= c #8B8B8B", "- c #E3E3E3", "; c #F4F4F4", "> c #ECECEC", ", c #EAEAEA", "' c #BFBFBF", ") c #474747", "! c #A5A5A5", "~ c #EFEFEF", "{ c #262626", "] c #B6B6B6", "^ c #B4B4B4", "/ c #282828", "( c #A3A3A3", "_ c #FEFEFE", ": c #E0E0E0", "< c #B8B8B8", "[ c #C5C5C5", "} c #DCDCDC", "| c #D3D3D3", "1 c #E4E4E4", "2 c #B1B1B1", "3 c #878787", "4 c #D5D5D5", "5 c #202020", "6 c #222222", "7 c #F1F1F1", "8 c #959595", "9 c #838383", "0 c #DBDBDB", "a c #252525", "b c #E9E9E9", "c c #F0F0F0", "d c #999999", "e c #808080", "f c #9B9B9B", "g c #C2C2C2", "h c #7C7C7C", "i c #7A7A7A", "j c #232323", "k c #CCCCCC", "l c #C1C1C1", "m c #181818", "n c #404040", "o c #747474", "p c #E7E7E7", "q c #303030", "r c #C9C9C9", "s c #ACACAC", "t c #787878", "u c #141414", "v c #6C6C6C", "w c #8F8F8F", "x c #858585", "y c #7F7F7F", "...+@#$$%&", "*=-+;>,')!", "*~{];#^/((", "*_:<[}|123", "+@+456;789", "@~706abcde", "#0fg#$3ehi", "c=jk>%lmno", "pqr}s(^tuv", "2w!d=x9yvh"}; static char *NEXT_ICONIFY_XPM[] = { "10 10 72 1", " c None", ". c #FCFCFC", "+ c #FAFAFA", "@ c #F8F8F8", "# c #F6F6F6", "$ c #F2F2F2", "% c #EFEFEF", "& c #EAEAEA", "* c #A6A6A6", "= c #FEFEFE", "- c #FDFDFD", "; c #F9F9F9", "> c #E2E2E2", ", c #CBCBCB", "' c #AFAFAF", ") c #808080", "! c #717171", "~ c #FFFFFF", "{ c #FBFBFB", "] c #F1F1F1", "^ c #E5E5E5", "/ c #CCCCCC", "( c #838383", "_ c #A0A0A0", ": c #989898", "< c #8B8B8B", "[ c #7F7F7F", "} c #E8E8E8", "| c #ADADAD", "1 c #181818", "2 c #171717", "3 c #161616", "4 c #141414", "5 c #0A0A0A", "6 c #000000", "7 c #A2A2A2", "8 c #747474", "9 c #6C6C6C", "0 c #F0F0F0", "a c #B9B9B9", "b c #B7B7B7", "c c #B1B1B1", "d c #868686", "e c #020202", "f c #EDEDED", "g c #939393", "h c #676767", "i c #696969", "j c #8E8E8E", "k c #787878", "l c #757575", "m c #777777", "n c #767676", "o c #EBEBEB", "p c #525252", "q c #626262", "r c #F3F3F3", "s c #E1E1E1", "t c #B5B5B5", "u c #5F5F5F", "v c #424242", "w c #5B5B5B", "x c #9D9D9D", "y c #969696", "z c #E4E4E4", "A c #444444", "B c #2E2E2E", "C c #A9A9A9", "D c #7C7C7C", "E c #797979", "F c #5D5D5D", "G c #646464", "...+@#$%&*", ".=-;%>,')!", "-~={]^/'(!", "_'*:<[}|)!", "123456%789", "0abcdefghi", "jklmneonpq", "rs^>te}uvw", "f_xy9ezABp", "CDDEue7FpG"}; #ifdef XKB_BUTTON_HINT #include "extend_pixmaps.h" #endif /* XKB_BUTTON_HINT */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/cycling.h��������������������������������������������������������������������0000644�0001750�0001750�00000001762�13431646202�013365� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2003 Alfredo K. Kojima * Copyright (c) 2013 Window Maker Team * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef WMCYCLING_H #define WMCYCLING_H void StartWindozeCycle(WWindow *wwin, XEvent *event, Bool next, Bool class_only); #endif /* WMCYCLING_H */ ��������������WindowMaker-0.95.9/src/switchmenu.h�����������������������������������������������������������������0000644�0001750�0001750�00000002111�13431646202�014110� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2003 Alfredo K. Kojima * Copyright (c) 2013 Window Maker Team * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef WMSWITCHMENU_H #define WMSWITCHMENU_H void UpdateSwitchMenu(WScreen *scr, WWindow *wwin, int action); void OpenSwitchMenu(WScreen *scr, int x, int y, int keyboard); void InitializeSwitchMenu(void); #endif /* WMSWITCHMENU_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/moveres.c��������������������������������������������������������������������0000644�0001750�0001750�00000205317�13431646202�013412� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "wconfig.h" #include <X11/Xlib.h> #include <X11/Xutil.h> #include <X11/keysym.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include "WindowMaker.h" #include "framewin.h" #include "window.h" #include "client.h" #include "icon.h" #include "dock.h" #include "actions.h" #include "workspace.h" #include "placement.h" #include "geomview.h" #include "screen.h" #include "xinerama.h" #include <WINGs/WINGsP.h> /* How many different types of geometry/position display thingies are there? */ #define NUM_DISPLAYS 5 #define LEFT 1 #define RIGHT 2 #define UP 4 #define DOWN 8 /* True if window currently has a border. This also includes borderless * windows which are currently selected */ #define HAS_BORDER_WITH_SELECT(w) ((w)->flags.selected || HAS_BORDER(w)) /* *---------------------------------------------------------------------- * checkMouseSamplingRate- * For lowering the mouse motion sampling rate for machines where * it's too high (SGIs). If it returns False then the event should be * ignored. *---------------------------------------------------------------------- */ static Bool checkMouseSamplingRate(XEvent * ev) { static Time previousMotion = 0; if (ev->type == MotionNotify) { if (ev->xmotion.time - previousMotion < DELAY_BETWEEN_MOUSE_SAMPLING) { return False; } else { previousMotion = ev->xmotion.time; } } return True; } /* *---------------------------------------------------------------------- * moveGeometryDisplayCentered * * routine that moves the geometry/position window on scr so it is * centered over the given coordinates (x,y). Also the window position * is clamped so it stays on the screen at all times. *---------------------------------------------------------------------- */ static void moveGeometryDisplayCentered(WScreen * scr, int x, int y) { unsigned int w = WMWidgetWidth(scr->gview); unsigned int h = WMWidgetHeight(scr->gview); int x1 = 0, y1 = 0, x2 = scr->scr_width, y2 = scr->scr_height; x -= w / 2; y -= h / 2; /* dead area check */ if (scr->xine_info.count) { WMRect rect; int head, flags; rect.pos.x = x; rect.pos.y = y; rect.size.width = w; rect.size.height = h; head = wGetRectPlacementInfo(scr, rect, &flags); if (flags & (XFLAG_DEAD | XFLAG_PARTIAL)) { rect = wGetRectForHead(scr, head); x1 = rect.pos.x; y1 = rect.pos.y; x2 = x1 + rect.size.width; y2 = y1 + rect.size.height; } } if (x < x1 + 1) x = x1 + 1; else if (x > (x2 - w)) x = x2 - w; if (y < y1 + 1) y = y1 + 1; else if (y > (y2 - h)) y = y2 - h; WMMoveWidget(scr->gview, x, y); } static void showPosition(WWindow * wwin, int x, int y) { WScreen *scr = wwin->screen_ptr; if (wPreferences.move_display == WDIS_NEW) { #if 0 int width = wwin->frame->core->width; int height = wwin->frame->core->height; GC lgc = scr->line_gc; XSetForeground(dpy, lgc, scr->line_pixel); sprintf(num, "%i", x); XDrawLine(dpy, scr->root_win, lgc, 0, y - 1, scr->scr_width, y - 1); XDrawLine(dpy, scr->root_win, lgc, 0, y + height + 2, scr->scr_width, y + height + 2); XDrawLine(dpy, scr->root_win, lgc, x - 1, 0, x - 1, scr->scr_height); XDrawLine(dpy, scr->root_win, lgc, x + width + 2, 0, x + width + 2, scr->scr_height); #endif } else { WSetGeometryViewShownPosition(scr->gview, x, y); } } static void cyclePositionDisplay(WWindow * wwin, int x, int y, int w, int h) { WScreen *scr = wwin->screen_ptr; WMRect rect; wPreferences.move_display++; wPreferences.move_display %= NUM_DISPLAYS; if (wPreferences.move_display == WDIS_NEW) { wPreferences.move_display++; wPreferences.move_display %= NUM_DISPLAYS; } if (wPreferences.move_display == WDIS_NONE) { WMUnmapWidget(scr->gview); } else { if (wPreferences.move_display == WDIS_CENTER) { rect = wGetRectForHead(scr, wGetHeadForWindow(wwin)); moveGeometryDisplayCentered(scr, rect.pos.x + rect.size.width / 2, rect.pos.y + rect.size.height / 2); } else if (wPreferences.move_display == WDIS_TOPLEFT) { rect = wGetRectForHead(scr, wGetHeadForWindow(wwin)); moveGeometryDisplayCentered(scr, rect.pos.x + 1, rect.pos.y + 1); } else if (wPreferences.move_display == WDIS_FRAME_CENTER) { moveGeometryDisplayCentered(scr, x + w / 2, y + h / 2); } WMMapWidget(scr->gview); } } static void mapPositionDisplay(WWindow * wwin, int x, int y, int w, int h) { WScreen *scr = wwin->screen_ptr; WMRect rect; if (wPreferences.move_display == WDIS_NEW || wPreferences.move_display == WDIS_NONE) { return; } else if (wPreferences.move_display == WDIS_CENTER) { rect = wGetRectForHead(scr, wGetHeadForWindow(wwin)); moveGeometryDisplayCentered(scr, rect.pos.x + rect.size.width / 2, rect.pos.y + rect.size.height / 2); } else if (wPreferences.move_display == WDIS_TOPLEFT) { rect = wGetRectForHead(scr, wGetHeadForWindow(wwin)); moveGeometryDisplayCentered(scr, rect.pos.x + 1, rect.pos.y + 1); } else if (wPreferences.move_display == WDIS_FRAME_CENTER) { moveGeometryDisplayCentered(scr, x + w / 2, y + h / 2); } WMMapWidget(scr->gview); WSetGeometryViewShownPosition(scr->gview, x, y); } static void showGeometry(WWindow * wwin, int x1, int y1, int x2, int y2, int direction) { WScreen *scr = wwin->screen_ptr; Window root = scr->root_win; GC gc = scr->line_gc; int ty, by, my, x, y, mx, s; char num[16]; XSegment segment[4]; int fw, fh; /* This seems necessary for some odd reason (too lazy to write x1-1 and * x2-1 everywhere below in the code). But why only for x? */ x1--; x2--; if (HAS_BORDER_WITH_SELECT(wwin)) { x1 += scr->frame_border_width; x2 += scr->frame_border_width; y1 += scr->frame_border_width; y2 += scr->frame_border_width; } ty = y1 + wwin->frame->top_width; by = y2 - wwin->frame->bottom_width; if (wPreferences.size_display == WDIS_NEW) { fw = XTextWidth(scr->tech_draw_font, "8888", 4); fh = scr->tech_draw_font->ascent + scr->tech_draw_font->descent; XSetForeground(dpy, gc, scr->line_pixel); /* vertical geometry */ if (((direction & LEFT) && (x2 < scr->scr_width - fw)) || (x1 < fw)) { x = x2; s = -15; } else { x = x1; s = 15; } my = (ty + by) / 2; /* top arrow & end bar */ segment[0].x1 = x - (s + 6); segment[0].y1 = ty; segment[0].x2 = x - (s - 10); segment[0].y2 = ty; /* arrowhead */ segment[1].x1 = x - (s - 2); segment[1].y1 = ty + 1; segment[1].x2 = x - (s - 5); segment[1].y2 = ty + 7; segment[2].x1 = x - (s - 2); segment[2].y1 = ty + 1; segment[2].x2 = x - (s + 1); segment[2].y2 = ty + 7; /* line */ segment[3].x1 = x - (s - 2); segment[3].y1 = ty + 1; segment[3].x2 = x - (s - 2); segment[3].y2 = my - fh / 2 - 1; XDrawSegments(dpy, root, gc, segment, 4); /* bottom arrow & end bar */ segment[0].y1 = by; segment[0].y2 = by; /* arrowhead */ segment[1].y1 = by - 1; segment[1].y2 = by - 7; segment[2].y1 = by - 1; segment[2].y2 = by - 7; /* line */ segment[3].y1 = my + fh / 2 + 2; segment[3].y2 = by - 1; XDrawSegments(dpy, root, gc, segment, 4); snprintf(num, sizeof(num), "%i", (by - ty - wwin->normal_hints->base_height) / wwin->normal_hints->height_inc); fw = XTextWidth(scr->tech_draw_font, num, strlen(num)); /* Display the height. */ XSetFont(dpy, gc, scr->tech_draw_font->fid); XDrawString(dpy, root, gc, x - s + 3 - fw / 2, my + scr->tech_draw_font->ascent - fh / 2 + 1, num, strlen(num)); /* horizontal geometry */ if (y1 < 15) { y = y2; s = -15; } else { y = y1; s = 15; } mx = x1 + (x2 - x1) / 2; snprintf(num, sizeof(num), "%i", (x2 - x1 - wwin->normal_hints->base_width) / wwin->normal_hints->width_inc); fw = XTextWidth(scr->tech_draw_font, num, strlen(num)); /* left arrow & end bar */ segment[0].x1 = x1; segment[0].y1 = y - (s + 6); segment[0].x2 = x1; segment[0].y2 = y - (s - 10); /* arrowhead */ segment[1].x1 = x1 + 7; segment[1].y1 = y - (s + 1); segment[1].x2 = x1 + 1; segment[1].y2 = y - (s - 2); segment[2].x1 = x1 + 1; segment[2].y1 = y - (s - 2); segment[2].x2 = x1 + 7; segment[2].y2 = y - (s - 5); /* line */ segment[3].x1 = x1 + 1; segment[3].y1 = y - (s - 2); segment[3].x2 = mx - fw / 2 - 2; segment[3].y2 = y - (s - 2); XDrawSegments(dpy, root, gc, segment, 4); /* right arrow & end bar */ segment[0].x1 = x2 + 1; segment[0].x2 = x2 + 1; /* arrowhead */ segment[1].x1 = x2 - 6; segment[1].x2 = x2; segment[2].x1 = x2; segment[2].x2 = x2 - 6; /* line */ segment[3].x1 = mx + fw / 2 + 2; segment[3].x2 = x2; XDrawSegments(dpy, root, gc, segment, 4); /* Display the width. */ XDrawString(dpy, root, gc, mx - fw / 2 + 1, y - s + scr->tech_draw_font->ascent - fh / 2 + 1, num, strlen(num)); } else { WSetGeometryViewShownSize(scr->gview, (x2 - x1 - wwin->normal_hints->base_width) / wwin->normal_hints->width_inc, (by - ty - wwin->normal_hints->base_height) / wwin->normal_hints->height_inc); } } static void cycleGeometryDisplay(WWindow * wwin, int x, int y, int w, int h, int dir) { WScreen *scr = wwin->screen_ptr; WMRect rect; wPreferences.size_display++; wPreferences.size_display %= NUM_DISPLAYS; if (wPreferences.size_display == WDIS_NEW || wPreferences.size_display == WDIS_NONE) { WMUnmapWidget(scr->gview); } else { if (wPreferences.size_display == WDIS_CENTER) { rect = wGetRectForHead(scr, wGetHeadForWindow(wwin)); moveGeometryDisplayCentered(scr, rect.pos.x + rect.size.width / 2, rect.pos.y + rect.size.height / 2); } else if (wPreferences.size_display == WDIS_TOPLEFT) { rect = wGetRectForHead(scr, wGetHeadForWindow(wwin)); moveGeometryDisplayCentered(scr, rect.pos.x + 1, rect.pos.y + 1); } else if (wPreferences.size_display == WDIS_FRAME_CENTER) { moveGeometryDisplayCentered(scr, x + w / 2, y + h / 2); } WMMapWidget(scr->gview); showGeometry(wwin, x, y, x + w, y + h, dir); } } static void mapGeometryDisplay(WWindow * wwin, int x, int y, int w, int h) { WScreen *scr = wwin->screen_ptr; WMRect rect; if (wPreferences.size_display == WDIS_NEW || wPreferences.size_display == WDIS_NONE) return; if (wPreferences.size_display == WDIS_CENTER) { rect = wGetRectForHead(scr, wGetHeadForWindow(wwin)); moveGeometryDisplayCentered(scr, rect.pos.x + rect.size.width / 2, rect.pos.y + rect.size.height / 2); } else if (wPreferences.size_display == WDIS_TOPLEFT) { rect = wGetRectForHead(scr, wGetHeadForWindow(wwin)); moveGeometryDisplayCentered(scr, rect.pos.x + 1, rect.pos.y + 1); } else if (wPreferences.size_display == WDIS_FRAME_CENTER) { moveGeometryDisplayCentered(scr, x + w / 2, y + h / 2); } WMMapWidget(scr->gview); showGeometry(wwin, x, y, x + w, y + h, 0); } static void doWindowMove(WWindow * wwin, WMArray * array, int dx, int dy) { WWindow *tmpw; WScreen *scr = wwin->screen_ptr; int x, y; if (!array || !WMGetArrayItemCount(array)) { wWindowMove(wwin, wwin->frame_x + dx, wwin->frame_y + dy); } else { WMArrayIterator iter; WM_ITERATE_ARRAY(array, tmpw, iter) { x = tmpw->frame_x + dx; y = tmpw->frame_y + dy; #if 1 /* XXX: with xinerama patch was #if 0, check this */ /* don't let windows become unreachable */ if (x + (int)tmpw->frame->core->width < 20) x = 20 - (int)tmpw->frame->core->width; else if (x + 20 > scr->scr_width) x = scr->scr_width - 20; if (y + (int)tmpw->frame->core->height < 20) y = 20 - (int)tmpw->frame->core->height; else if (y + 20 > scr->scr_height) y = scr->scr_height - 20; #else wScreenBringInside(scr, &x, &y, (int)tmpw->frame->core->width, (int)tmpw->frame->core->height); #endif wWindowMove(tmpw, x, y); } } } static void drawTransparentFrame(WWindow * wwin, int x, int y, int width, int height) { Window root = wwin->screen_ptr->root_win; GC gc = wwin->screen_ptr->frame_gc; int h = 0; int bottom = 0; if (HAS_BORDER_WITH_SELECT(wwin)) { x += wwin->screen_ptr->frame_border_width; y += wwin->screen_ptr->frame_border_width; } if (HAS_TITLEBAR(wwin) && !wwin->flags.shaded) { h = WMFontHeight(wwin->screen_ptr->title_font) + (wPreferences.window_title_clearance + TITLEBAR_EXTEND_SPACE) * 2; if (h > wPreferences.window_title_max_height) h = wPreferences.window_title_max_height; if (h < wPreferences.window_title_min_height) h = wPreferences.window_title_min_height; } if (HAS_RESIZEBAR(wwin) && !wwin->flags.shaded) { /* Can't use wwin-frame->bottom_width because, in some cases (e.g. interactive placement), frame does not point to anything. */ bottom = RESIZEBAR_HEIGHT; } XDrawRectangle(dpy, root, gc, x - 1, y - 1, width + 1, height + 1); if (h > 0) { XDrawLine(dpy, root, gc, x, y + h - 1, x + width, y + h - 1); } if (bottom > 0) { XDrawLine(dpy, root, gc, x, y + height - bottom, x + width, y + height - bottom); } } static void drawFrames(WWindow * wwin, WMArray * array, int dx, int dy) { WWindow *tmpw; int scr_width = wwin->screen_ptr->scr_width; int scr_height = wwin->screen_ptr->scr_height; int x, y; if (!array) { x = wwin->frame_x + dx; y = wwin->frame_y + dy; drawTransparentFrame(wwin, x, y, wwin->frame->core->width, wwin->frame->core->height); } else { WMArrayIterator iter; WM_ITERATE_ARRAY(array, tmpw, iter) { x = tmpw->frame_x + dx; y = tmpw->frame_y + dy; /* don't let windows become unreachable */ #if 1 /* XXX: was 0 in XINERAMA patch, check */ if (x + (int)tmpw->frame->core->width < 20) x = 20 - (int)tmpw->frame->core->width; else if (x + 20 > scr_width) x = scr_width - 20; if (y + (int)tmpw->frame->core->height < 20) y = 20 - (int)tmpw->frame->core->height; else if (y + 20 > scr_height) y = scr_height - 20; #else wScreenBringInside(wwin->screen_ptr, &x, &y, (int)tmpw->frame->core->width, (int)tmpw->frame->core->height); #endif drawTransparentFrame(tmpw, x, y, tmpw->frame->core->width, tmpw->frame->core->height); } } } static void flushMotion(void) { XEvent ev; XSync(dpy, False); while (XCheckMaskEvent(dpy, ButtonMotionMask, &ev)) ; } static void crossWorkspace(WScreen * scr, WWindow * wwin, int opaque_move, int new_workspace, int rewind) { /* do not let window be unmapped */ if (opaque_move) { wwin->flags.changing_workspace = 1; wWindowChangeWorkspace(wwin, new_workspace); } /* go to new workspace */ wWorkspaceChange(scr, new_workspace); wwin->flags.changing_workspace = 0; if (rewind) XWarpPointer(dpy, None, None, 0, 0, 0, 0, scr->scr_width - 20, 0); else XWarpPointer(dpy, None, None, 0, 0, 0, 0, -(scr->scr_width - 20), 0); flushMotion(); if (!opaque_move) { XGrabPointer(dpy, scr->root_win, True, PointerMotionMask | ButtonReleaseMask | ButtonPressMask, GrabModeAsync, GrabModeAsync, None, wPreferences.cursor[WCUR_MOVE], CurrentTime); } } 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 */ enum { SNAP_NONE, SNAP_LEFT, SNAP_RIGHT, SNAP_TOP, SNAP_BOTTOM, SNAP_TOPLEFT, SNAP_TOPRIGHT, SNAP_BOTTOMLEFT, SNAP_BOTTOMRIGHT } snap; } MoveData; #define WTOP(w) (w)->frame_y #define WLEFT(w) (w)->frame_x #define WRIGHT(w) ((w)->frame_x + (int)(w)->frame->core->width - 1 + \ (HAS_BORDER_WITH_SELECT(w) ? 2*(w)->screen_ptr->frame_border_width : 0)) #define WBOTTOM(w) ((w)->frame_y + (int)(w)->frame->core->height - 1 + \ (HAS_BORDER_WITH_SELECT(w) ? 2*(w)->screen_ptr->frame_border_width : 0)) 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(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) wfree(data->topList); if (data->leftList) wfree(data->leftList); if (data->rightList) wfree(data->rightList); if (data->bottomList) wfree(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.miniaturized && !tmp->flags.hidden && !tmp->flags.obscured && !WFLAGP(tmp, sunken)) { 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(data->topList[0]), compareWTop); qsort(data->leftList, data->count, sizeof(data->leftList[0]), compareWLeft); qsort(data->rightList, data->count, sizeof(data->rightList[0]), compareWRight); qsort(data->bottomList, data->count, sizeof(data->bottomList[0]), 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) { 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 + (HAS_BORDER_WITH_SELECT(wwin) ? 2 * wwin->screen_ptr->frame_border_width : 0); data->winHeight = wwin->frame->core->height + (HAS_BORDER_WITH_SELECT(wwin) ? 2 * wwin->screen_ptr->frame_border_width : 0); data->snap = SNAP_NONE; } 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 attract; hresist = False; vresist = 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 l_edge, r_edge; int edge_l, edge_r; int t_edge, b_edge; int edge_t, edge_b; int resist; resist = WIN_RESISTANCE(wPreferences.edge_resistance); attract = wPreferences.attract; /* horizontal movement: check horizontal edge resistances */ if (dx || dy) { WMRect rect; int i, head; /* window is the leftmost window: check against screen edge */ /* Add inter head resistance 1/2 (if needed) */ head = wGetHeadForPointerLocation(scr); rect = wGetRectForHead(scr, head); l_edge = WMAX(scr->totalUsableArea[head].x1, rect.pos.x); edge_l = l_edge - resist; edge_r = WMIN(scr->totalUsableArea[head].x2, rect.pos.x + rect.size.width); r_edge = edge_r + resist; /* 1 */ if ((data->rightIndex >= 0) && (data->rightIndex <= data->count)) { WWindow *looprw; for (i = data->rightIndex - 1; i >= 0; i--) { looprw = data->rightList[i]; if (!(data->realY > WBOTTOM(looprw) || (data->realY + data->winHeight) < WTOP(looprw))) { if (attract || ((data->realX < (WRIGHT(looprw) + 2)) && dx < 0)) { l_edge = WRIGHT(looprw) + 1; resist = WIN_RESISTANCE(wPreferences.edge_resistance); } break; } } if (attract) { for (i = data->rightIndex; i < data->count; i++) { looprw = data->rightList[i]; if (!(data->realY > WBOTTOM(looprw) || (data->realY + data->winHeight) < WTOP(looprw))) { r_edge = WRIGHT(looprw) + 1; resist = WIN_RESISTANCE(wPreferences.edge_resistance); break; } } } } if ((data->leftIndex >= 0) && (data->leftIndex <= data->count)) { WWindow *looprw; for (i = data->leftIndex - 1; i >= 0; i--) { looprw = data->leftList[i]; if (!(data->realY > WBOTTOM(looprw) || (data->realY + data->winHeight) < WTOP(looprw))) { if (attract || (((data->realX + data->winWidth) > (WLEFT(looprw) - 1)) && dx > 0)) { edge_r = WLEFT(looprw); resist = WIN_RESISTANCE(wPreferences.edge_resistance); } break; } } if (attract) for (i = data->leftIndex; i < data->count; i++) { looprw = data->leftList[i]; if (!(data->realY > WBOTTOM(looprw) || (data->realY + data->winHeight) < WTOP(looprw))) { edge_l = WLEFT(looprw); resist = WIN_RESISTANCE(wPreferences.edge_resistance); break; } } } /* printf("%d %d\n",winL,winR); printf("l_ %d r_ %d _l %d _r %d\n",l_edge,r_edge,edge_l,edge_r); */ if ((winL - l_edge) < (r_edge - winL)) { if (resist > 0) { if ((attract && winL <= l_edge + resist && winL >= l_edge - resist) || (dx < 0 && winL <= l_edge && winL >= l_edge - resist)) { newX = l_edge; hresist = True; } } } else { if (resist > 0 && attract && winL >= r_edge - resist && winL <= r_edge + resist) { newX = r_edge; hresist = True; } } if ((winR - edge_l) < (edge_r - winR)) { if (resist > 0 && attract && winR <= edge_l + resist && winR >= edge_l - resist) { newX = edge_l - data->winWidth; hresist = True; } } else { if (resist > 0) { if ((attract && winR >= edge_r - resist && winR <= edge_r + resist) || (dx > 0 && winR >= edge_r && winR <= edge_r + resist)) { newX = edge_r - data->winWidth; hresist = True; } } } /* VeRT */ /* Add inter head resistance 2/2 (if needed) */ t_edge = WMAX(scr->totalUsableArea[head].y1, rect.pos.y); edge_t = t_edge - resist; edge_b = WMIN(scr->totalUsableArea[head].y2, rect.pos.y + rect.size.height); b_edge = edge_b + resist; if ((data->bottomIndex >= 0) && (data->bottomIndex <= data->count)) { WWindow *looprw; for (i = data->bottomIndex - 1; i >= 0; i--) { looprw = data->bottomList[i]; if (!(data->realX > WRIGHT(looprw) || (data->realX + data->winWidth) < WLEFT(looprw))) { if (attract || ((data->realY < (WBOTTOM(looprw) + 2)) && dy < 0)) { t_edge = WBOTTOM(looprw) + 1; resist = WIN_RESISTANCE(wPreferences.edge_resistance); } break; } } if (attract) { for (i = data->bottomIndex; i < data->count; i++) { looprw = data->bottomList[i]; if (!(data->realX > WRIGHT(looprw) || (data->realX + data->winWidth) < WLEFT(looprw))) { b_edge = WBOTTOM(looprw) + 1; resist = WIN_RESISTANCE(wPreferences.edge_resistance); break; } } } } if ((data->topIndex >= 0) && (data->topIndex <= data->count)) { WWindow *looprw; for (i = data->topIndex - 1; i >= 0; i--) { looprw = data->topList[i]; if (!(data->realX > WRIGHT(looprw) || (data->realX + data->winWidth) < WLEFT(looprw))) { if (attract || (((data->realY + data->winHeight) > (WTOP(looprw) - 1)) && dy > 0)) { edge_b = WTOP(looprw); resist = WIN_RESISTANCE(wPreferences.edge_resistance); } break; } } if (attract) for (i = data->topIndex; i < data->count; i++) { looprw = data->topList[i]; if (!(data->realX > WRIGHT(looprw) || (data->realX + data->winWidth) < WLEFT(looprw))) { edge_t = WTOP(looprw); resist = WIN_RESISTANCE(wPreferences.edge_resistance); break; } } } if ((winT - t_edge) < (b_edge - winT)) { if (resist > 0) { if ((attract && winT <= t_edge + resist && winT >= t_edge - resist) || (dy < 0 && winT <= t_edge && winT >= t_edge - resist)) { newY = t_edge; vresist = True; } } } else { if (resist > 0 && attract && winT >= b_edge - resist && winT <= b_edge + resist) { newY = b_edge; vresist = True; } } if ((winB - edge_t) < (edge_b - winB)) { if (resist > 0 && attract && winB <= edge_t + resist && winB >= edge_t - resist) { newY = edge_t - data->winHeight; vresist = True; } } else { if (resist > 0) { if ((attract && winB >= edge_b - resist && winB <= edge_b + resist) || (dy > 0 && winB >= edge_b && winB <= edge_b + resist)) { newY = edge_b - data->winHeight; vresist = True; } } } } /* END VeRT */ } /* 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 (wPreferences.move_display == WDIS_NEW && !scr->selected_windows) { showPosition(wwin, data->realX, data->realY); } 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); } if (!scr->selected_windows && wPreferences.move_display == WDIS_FRAME_CENTER) { moveGeometryDisplayCentered(scr, newX + data->winWidth / 2, newY + data->winHeight / 2); } if (!opaqueMove) { /* draw frames */ drawFrames(wwin, scr->selected_windows, newX - wwin->frame_x, newY - wwin->frame_y); } if (!scr->selected_windows) { showPosition(wwin, newX, newY); } } /* recalc relative window position */ if (doResistance && (data->realX != newX || data->realY != newY)) { updateResistance(data, newX, newY); } data->realX = newX; data->realY = newY; } static void draw_snap_frame(WWindow *wwin, int direction) { WScreen *scr; scr = wwin->screen_ptr; switch (direction) { case SNAP_LEFT: drawTransparentFrame(wwin, 0, 0, scr->scr_width/2, scr->scr_height); break; case SNAP_RIGHT: drawTransparentFrame(wwin, scr->scr_width/2, 0, scr->scr_width/2, scr->scr_height); break; case SNAP_TOP: if (wPreferences.snap_to_top_maximizes_fullscreen) drawTransparentFrame(wwin, 0, 0, scr->scr_width, scr->scr_height); else drawTransparentFrame(wwin, 0, 0, scr->scr_width, scr->scr_height/2); break; case SNAP_BOTTOM: drawTransparentFrame(wwin, 0, scr->scr_height/2, scr->scr_width, scr->scr_height/2); break; case SNAP_TOPLEFT: drawTransparentFrame(wwin, 0, 0, scr->scr_width/2, scr->scr_height/2); break; case SNAP_TOPRIGHT: drawTransparentFrame(wwin, scr->scr_width/2, 0, scr->scr_width/2, scr->scr_height/2); break; case SNAP_BOTTOMLEFT: drawTransparentFrame(wwin, 0, scr->scr_height/2, scr->scr_width/2, scr->scr_height/2); break; case SNAP_BOTTOMRIGHT: drawTransparentFrame(wwin, scr->scr_width/2, scr->scr_height/2, scr->scr_width/2, scr->scr_height/2); break; } } static int get_snap_direction(WScreen *scr, int x, int y) { int edge, corner; edge = wPreferences.snap_edge_detect; corner = wPreferences.snap_corner_detect; if (x < corner && y < corner) return SNAP_TOPLEFT; if (x < corner && y >= scr->scr_height - corner) return SNAP_BOTTOMLEFT; if (x < edge) return SNAP_LEFT; if (x >= scr->scr_width - corner && y < corner) return SNAP_TOPRIGHT; if (x >= scr->scr_width - corner && y >= scr->scr_height - corner) return SNAP_BOTTOMRIGHT; if (x >= scr->scr_width - edge) return SNAP_RIGHT; if (y < edge) return SNAP_TOP; if (y >= scr->scr_height - edge) return SNAP_BOTTOM; return SNAP_NONE; } static void do_snap(WWindow *wwin, MoveData *data, Bool opaqueMove) { int directions; WScreen *scr; directions = 0; scr = wwin->screen_ptr; /* erase frames */ if (!opaqueMove) drawFrames(wwin, scr->selected_windows, data->realX - wwin->frame_x, data->realY - wwin->frame_y); draw_snap_frame(wwin, data->snap); switch (data->snap) { case SNAP_NONE: return; case SNAP_LEFT: directions = MAX_VERTICAL | MAX_LEFTHALF; break; case SNAP_RIGHT: directions = MAX_VERTICAL | MAX_RIGHTHALF; break; case SNAP_TOP: if (wPreferences.snap_to_top_maximizes_fullscreen) directions = MAX_HORIZONTAL | MAX_VERTICAL; else directions = MAX_HORIZONTAL | MAX_TOPHALF; break; case SNAP_BOTTOM: directions = MAX_HORIZONTAL | MAX_BOTTOMHALF; break; case SNAP_TOPLEFT: directions = MAX_TOPHALF | MAX_LEFTHALF; break; case SNAP_TOPRIGHT: directions = MAX_TOPHALF | MAX_RIGHTHALF; break; case SNAP_BOTTOMLEFT: directions = MAX_BOTTOMHALF | MAX_LEFTHALF; break; case SNAP_BOTTOMRIGHT: directions = MAX_BOTTOMHALF | MAX_RIGHTHALF; break; } if (directions) handleMaximize(wwin, directions); data->snap = SNAP_NONE; } #define _KS KEY_CONTROL_WINDOW_WEIGHT #define MOVABLE_BIT 0x01 #define RESIZABLE_BIT 0x02 int wKeyboardMoveResizeWindow(WWindow * wwin) { WScreen *scr = wwin->screen_ptr; Window root = scr->root_win; XEvent event; int w = wwin->frame->core->width; int h = wwin->frame->core->height; int scr_width = wwin->screen_ptr->scr_width; int scr_height = wwin->screen_ptr->scr_height; int vert_border = wwin->frame->top_width + wwin->frame->bottom_width; int src_x = wwin->frame_x; int src_y = wwin->frame_y; int original_w = w; int original_h = h; int done, off_x, off_y, ww, wh; int kspeed = _KS; int opaqueMoveResize = wPreferences.opaque_move_resize_keyboard; Time lastTime = 0; KeyCode shiftl, shiftr, ctrlmode; KeySym keysym = NoSymbol; int moment = 0; int modes = ((IS_MOVABLE(wwin) ? MOVABLE_BIT : 0) | (IS_RESIZABLE(wwin) ? RESIZABLE_BIT : 0)); int head = ((wPreferences.auto_arrange_icons && wXineramaHeads(scr) > 1) ? wGetHeadForWindow(wwin) : scr->xine_info.primary_head); shiftl = XKeysymToKeycode(dpy, XK_Shift_L); shiftr = XKeysymToKeycode(dpy, XK_Shift_R); ctrlmode = done = off_x = off_y = 0; if (modes == RESIZABLE_BIT) { ctrlmode = 1; } XSync(dpy, False); wusleep(10000); XGrabKeyboard(dpy, root, False, GrabModeAsync, GrabModeAsync, CurrentTime); if (!wwin->flags.selected) { wUnselectWindows(scr); } XGrabServer(dpy); XGrabPointer(dpy, scr->root_win, True, PointerMotionMask | ButtonReleaseMask | ButtonPressMask, GrabModeAsync, GrabModeAsync, None, wPreferences.cursor[WCUR_NORMAL], CurrentTime); if (!opaqueMoveResize) { if (wwin->flags.shaded || scr->selected_windows) { if (scr->selected_windows) drawFrames(wwin, scr->selected_windows, off_x, off_y); else drawTransparentFrame(wwin, src_x + off_x, src_y + off_y, w, h); } else { drawTransparentFrame(wwin, src_x + off_x, src_y + off_y, w, h); } } if ((wwin->flags.shaded || scr->selected_windows) && (!scr->selected_windows)) { mapPositionDisplay(wwin, src_x, src_y, w, h); } ww = w; wh = h; while (1) { /* looper.ox=off_x; looper.oy=off_y; */ do { WMMaskEvent(dpy, KeyPressMask | ButtonReleaseMask | ButtonPressMask | ExposureMask, &event); if (event.type == Expose) { WMHandleEvent(&event); } } while (event.type == Expose); if (!opaqueMoveResize) { if (wwin->flags.shaded || scr->selected_windows) { if (scr->selected_windows) 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 ***/ } else { drawTransparentFrame(wwin, src_x + off_x, src_y + off_y, ww, wh); } } if (ctrlmode) showGeometry(wwin, src_x + off_x, src_y + off_y, src_x + off_x + ww, src_y + off_y + wh, 0); XUngrabServer(dpy); XSync(dpy, False); switch (event.type) { case KeyPress: /* accelerate */ if (event.xkey.time - lastTime > 50) { kspeed /= (1 + (event.xkey.time - lastTime) / 100); } else { if (kspeed < 20) { kspeed++; } } if (kspeed < _KS) kspeed = _KS; lastTime = event.xkey.time; if (modes == (MOVABLE_BIT | RESIZABLE_BIT)) { if ((event.xkey.state & ControlMask) && !wwin->flags.shaded) { ctrlmode = 1; wUnselectWindows(scr); } else { ctrlmode = 0; } } if (event.xkey.keycode == shiftl || event.xkey.keycode == shiftr) { if (ctrlmode) cycleGeometryDisplay(wwin, src_x + off_x, src_y + off_y, ww, wh, 0); else cyclePositionDisplay(wwin, src_x + off_x, src_y + off_y, ww, wh); } else { keysym = XLookupKeysym(&event.xkey, 0); switch (keysym) { case XK_Return: #ifdef XK_KP_Enter case XK_KP_Enter: #endif done = 2; break; case XK_Escape: done = 1; break; case XK_Up: #ifdef XK_KP_Up case XK_KP_Up: #endif case XK_k: if (ctrlmode) { if (moment != UP) h = wh; h -= kspeed; moment = UP; if (h < 1) h = 1; } else off_y -= kspeed; break; case XK_Down: #ifdef XK_KP_Down case XK_KP_Down: #endif case XK_j: if (ctrlmode) { if (moment != DOWN) h = wh; h += kspeed; moment = DOWN; } else off_y += kspeed; break; case XK_Left: #ifdef XK_KP_Left case XK_KP_Left: #endif case XK_h: if (ctrlmode) { if (moment != LEFT) w = ww; w -= kspeed; if (w < 1) w = 1; moment = LEFT; } else off_x -= kspeed; break; case XK_Right: #ifdef XK_KP_Right case XK_KP_Right: #endif case XK_l: if (ctrlmode) { if (moment != RIGHT) w = ww; w += kspeed; moment = RIGHT; } else off_x += kspeed; break; } ww = w; wh = h; wh -= vert_border; wWindowConstrainSize(wwin, (unsigned int *)&ww, (unsigned int *)&wh); wh += vert_border; if (wPreferences.ws_cycle) { if (src_x + off_x + ww < 20) { if (!scr->current_workspace) wWorkspaceChange(scr, scr->workspace_count - 1); else wWorkspaceChange(scr, scr->current_workspace - 1); off_x += scr_width; } else if (src_x + off_x + 20 > scr_width) { if (scr->current_workspace == scr->workspace_count - 1) wWorkspaceChange(scr, 0); else wWorkspaceChange(scr, scr->current_workspace + 1); off_x -= scr_width; } } else { if (src_x + off_x + ww < 20) off_x = 20 - ww - src_x; else if (src_x + off_x + 20 > scr_width) off_x = scr_width - 20 - src_x; } if (src_y + off_y + wh < 20) { off_y = 20 - wh - src_y; } else if (src_y + off_y + 20 > scr_height) { off_y = scr_height - 20 - src_y; } } break; case ButtonPress: case ButtonRelease: done = 1; break; case Expose: WMHandleEvent(&event); while (XCheckTypedEvent(dpy, Expose, &event)) { WMHandleEvent(&event); } break; default: WMHandleEvent(&event); break; } XGrabServer(dpy); /*xxx */ if (wwin->flags.shaded && !scr->selected_windows) { moveGeometryDisplayCentered(scr, src_x + off_x + w / 2, src_y + off_y + h / 2); } else { if (ctrlmode) { WMUnmapWidget(scr->gview); mapGeometryDisplay(wwin, src_x + off_x, src_y + off_y, ww, wh); } else if (!scr->selected_windows) { WMUnmapWidget(scr->gview); mapPositionDisplay(wwin, src_x + off_x, src_y + off_y, ww, wh); } } if (!opaqueMoveResize) { if (wwin->flags.shaded || scr->selected_windows) { if (scr->selected_windows) drawFrames(wwin, scr->selected_windows, off_x, off_y); else drawTransparentFrame(wwin, src_x + off_x, src_y + off_y, w, h); } else { drawTransparentFrame(wwin, src_x + off_x, src_y + off_y, ww, wh); } } if (ctrlmode) { showGeometry(wwin, src_x + off_x, src_y + off_y, src_x + off_x + ww, src_y + off_y + wh, 0); } else if (!scr->selected_windows) showPosition(wwin, src_x + off_x, src_y + off_y); if (opaqueMoveResize) { XUngrabServer(dpy); wWindowConfigure(wwin, src_x + off_x, src_y + off_y, ww, wh - vert_border); }; if (done) { if (!opaqueMoveResize) { /* ctrlmode => resize */ if (wwin->flags.shaded || scr->selected_windows) { if (scr->selected_windows) drawFrames(wwin, scr->selected_windows, off_x, off_y); else drawTransparentFrame(wwin, src_x + off_x, src_y + off_y, w, h); } else { drawTransparentFrame(wwin, src_x + off_x, src_y + off_y, ww, wh); } } if (ctrlmode) { showGeometry(wwin, src_x + off_x, src_y + off_y, src_x + off_x + ww, src_y + off_y + wh, 0); WMUnmapWidget(scr->gview); } else WMUnmapWidget(scr->gview); XUngrabKeyboard(dpy, CurrentTime); XUngrabPointer(dpy, CurrentTime); XUngrabServer(dpy); if (done == 2) { if (wwin->flags.shaded || scr->selected_windows) { if (!scr->selected_windows) { wWindowMove(wwin, src_x + off_x, src_y + off_y); wWindowSynthConfigureNotify(wwin); } else { WMArrayIterator iter; WWindow *foo; doWindowMove(wwin, scr->selected_windows, off_x, off_y); WM_ITERATE_ARRAY(scr->selected_windows, foo, iter) { wWindowSynthConfigureNotify(foo); } } } else { if (ww != original_w) wwin->flags.maximized &= ~(MAX_HORIZONTAL | MAX_TOPHALF | MAX_BOTTOMHALF | MAX_MAXIMUS); if (wh != original_h) wwin->flags.maximized &= ~(MAX_VERTICAL | MAX_LEFTHALF | MAX_RIGHTHALF | MAX_MAXIMUS); wWindowConfigure(wwin, src_x + off_x, src_y + off_y, ww, wh - vert_border); wWindowSynthConfigureNotify(wwin); } wWindowChangeWorkspace(wwin, scr->current_workspace); wSetFocusTo(scr, wwin); } if (wPreferences.auto_arrange_icons && wXineramaHeads(scr) > 1 && head != wGetHeadForWindow(wwin)) { wArrangeIcons(scr, True); } update_saved_geometry(wwin); return 1; } } } /* *---------------------------------------------------------------------- * 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) { WScreen *scr = wwin->screen_ptr; XEvent event; Window root = scr->root_win; KeyCode shiftl, shiftr; Bool done = False; int started = 0; int warped = 0; /* This needs not to change while moving, else bad things can happen */ int opaqueMove = wPreferences.opaque_move; MoveData moveData; int head = ((wPreferences.auto_arrange_icons && wXineramaHeads(scr) > 1) ? wGetHeadForWindow(wwin) : scr->xine_info.primary_head); if (!IS_MOVABLE(wwin)) return False; if (wPreferences.opaque_move && !wPreferences.use_saveunders) { XSetWindowAttributes attr; attr.save_under = True; XChangeWindowAttributes(dpy, wwin->frame->core->window, CWSaveUnder, &attr); } 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); } shiftl = XKeysymToKeycode(dpy, XK_Shift_L); shiftr = XKeysymToKeycode(dpy, XK_Shift_R); while (!done) { if (warped) { int junk; Window junkw; /* XWarpPointer() doesn't seem to generate Motion events, so * we've got to simulate them */ XQueryPointer(dpy, root, &junkw, &junkw, &event.xmotion.x_root, &event.xmotion.y_root, &junk, &junk, (unsigned *)&junk); } else { WMMaskEvent(dpy, KeyPressMask | ButtonMotionMask | PointerMotionHintMask | ButtonReleaseMask | ButtonPressMask | ExposureMask, &event); if (event.type == MotionNotify) { /* compress MotionNotify events */ while (XCheckMaskEvent(dpy, ButtonMotionMask, &event)) ; if (!checkMouseSamplingRate(&event)) continue; } } switch (event.type) { case KeyPress: if ((event.xkey.keycode == shiftl || event.xkey.keycode == shiftr) && started && !scr->selected_windows) { if (!opaqueMove) { drawFrames(wwin, scr->selected_windows, moveData.realX - wwin->frame_x, moveData.realY - wwin->frame_y); } if (wPreferences.move_display == WDIS_NEW && !scr->selected_windows) { showPosition(wwin, moveData.realX, moveData.realY); XUngrabServer(dpy); } cyclePositionDisplay(wwin, moveData.realX, moveData.realY, moveData.winWidth, moveData.winHeight); if (wPreferences.move_display == WDIS_NEW && !scr->selected_windows) { XGrabServer(dpy); showPosition(wwin, moveData.realX, moveData.realY); } if (!opaqueMove) { drawFrames(wwin, scr->selected_windows, moveData.realX - wwin->frame_x, moveData.realY - wwin->frame_y); } /*} else { WMHandleEvent(&event); this causes problems needs fixing */ } break; case MotionNotify: if (IS_RESIZABLE(wwin) && wPreferences.window_snapping) { int snap_direction; snap_direction = get_snap_direction(scr, moveData.mouseX, moveData.mouseY); if (!wPreferences.no_autowrap && snap_direction != SNAP_TOP && snap_direction != SNAP_BOTTOM) snap_direction = SNAP_NONE; if (moveData.snap != snap_direction) { /* erase old frame */ if (moveData.snap) draw_snap_frame(wwin, moveData.snap); /* draw new frame */ if (snap_direction) draw_snap_frame(wwin, snap_direction); moveData.snap = snap_direction; } } if (started) { /* erase snap frame */ if (moveData.snap) draw_snap_frame(wwin, moveData.snap); updateWindowPosition(wwin, &moveData, scr->selected_windows == NULL && wPreferences.edge_resistance > 0, opaqueMove, event.xmotion.x_root, event.xmotion.y_root); /* redraw snap frame */ if (moveData.snap) draw_snap_frame(wwin, moveData.snap); if (!warped && !wPreferences.no_autowrap) { int oldWorkspace = scr->current_workspace; if (wPreferences.move_display == WDIS_NEW && !scr->selected_windows) { showPosition(wwin, moveData.realX, moveData.realY); XUngrabServer(dpy); } if (!opaqueMove) { drawFrames(wwin, scr->selected_windows, moveData.realX - wwin->frame_x, moveData.realY - wwin->frame_y); } if (checkWorkspaceChange(wwin, &moveData, opaqueMove)) { if (scr->current_workspace != oldWorkspace && wPreferences.edge_resistance > 0 && scr->selected_windows == NULL) updateMoveData(wwin, &moveData); warped = 1; } if (!opaqueMove) { drawFrames(wwin, scr->selected_windows, moveData.realX - wwin->frame_x, moveData.realY - wwin->frame_y); } if (wPreferences.move_display == WDIS_NEW && !scr->selected_windows) { XSync(dpy, False); showPosition(wwin, moveData.realX, moveData.realY); XGrabServer(dpy); } } else { warped = 0; } } else if (abs(ev->xmotion.x_root - event.xmotion.x_root) >= MOVE_THRESHOLD || abs(ev->xmotion.y_root - event.xmotion.y_root) >= MOVE_THRESHOLD) { if (wwin->flags.maximized) { if (wPreferences.drag_maximized_window == DRAGMAX_RESTORE) { float titlebar_ratio; int new_x, new_y; titlebar_ratio = (moveData.mouseX - wwin->frame_x) / (float)wwin->frame->core->width; new_y = wwin->frame_y; wUnmaximizeWindow(wwin); new_x = moveData.mouseX - titlebar_ratio * wwin->frame->core->width; wWindowMove(wwin, new_x, new_y); moveData.realX = moveData.calcX = wwin->frame_x; moveData.realY = moveData.calcY = wwin->frame_y; } if (wPreferences.drag_maximized_window == DRAGMAX_UNMAXIMIZE) { wwin->flags.maximized = 0; wwin->flags.old_maximized = 0; } } XChangeActivePointerGrab(dpy, ButtonMotionMask | ButtonReleaseMask | ButtonPressMask, wPreferences.cursor[WCUR_MOVE], CurrentTime); started = 1; XGrabKeyboard(dpy, root, False, GrabModeAsync, GrabModeAsync, CurrentTime); if (!scr->selected_windows) mapPositionDisplay(wwin, moveData.realX, moveData.realY, moveData.winWidth, moveData.winHeight); if (started && !opaqueMove) drawFrames(wwin, scr->selected_windows, 0, 0); if (!opaqueMove || (wPreferences.move_display == WDIS_NEW && !scr->selected_windows)) { XGrabServer(dpy); if (wPreferences.move_display == WDIS_NEW) showPosition(wwin, moveData.realX, moveData.realY); } } break; case ButtonPress: break; case ButtonRelease: if (event.xbutton.button != ev->xbutton.button) break; if (started) { XEvent e; if (moveData.snap) do_snap(wwin, &moveData, opaqueMove); else if (!opaqueMove) { drawFrames(wwin, scr->selected_windows, moveData.realX - wwin->frame_x, moveData.realY - wwin->frame_y); XSync(dpy, 0); 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 (!opaqueMove) { wWindowChangeWorkspace(wwin, scr->current_workspace); wSetFocusTo(scr, wwin); } if (wPreferences.move_display == WDIS_NEW) showPosition(wwin, moveData.realX, moveData.realY); /* discard all enter/leave events that happened until * the time the button was released */ while (XCheckTypedEvent(dpy, EnterNotify, &e)) { if (e.xcrossing.time > event.xbutton.time) { XPutBackEvent(dpy, &e); break; } } while (XCheckTypedEvent(dpy, LeaveNotify, &e)) { if (e.xcrossing.time > event.xbutton.time) { XPutBackEvent(dpy, &e); break; } } if (!scr->selected_windows) { /* get rid of the geometry window */ WMUnmapWidget(scr->gview); } } done = True; break; default: 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, moveData.realX - wwin->frame_x, moveData.realY - wwin->frame_y); } else { WMHandleEvent(&event); } break; } } if (wPreferences.opaque_move && !wPreferences.use_saveunders) { XSetWindowAttributes attr; attr.save_under = False; XChangeWindowAttributes(dpy, wwin->frame->core->window, CWSaveUnder, &attr); } freeMoveData(&moveData); if (started && wPreferences.auto_arrange_icons && wXineramaHeads(scr) > 1 && head != wGetHeadForWindow(wwin)) { wArrangeIcons(scr, True); } if (started) update_saved_geometry(wwin); return started; } #define RESIZEBAR 1 #define HCONSTRAIN 2 static int getResizeDirection(WWindow * wwin, int x, int y, int dy, int flags) { int w = wwin->frame->core->width - 1; int cw = wwin->frame->resizebar_corner_width; int dir; /* if not resizing through the resizebar */ if (!(flags & RESIZEBAR)) { int xdir = (abs(x) < (wwin->client.width / 2)) ? LEFT : RIGHT; int ydir = (abs(y) < (wwin->client.height / 2)) ? UP : DOWN; /* How much resize space is allowed */ int spacew = abs(wwin->client.width / 3); int spaceh = abs(wwin->client.height / 3); /* Determine where x fits */ if ((abs(x) > wwin->client.width/2 - spacew/2) && (abs(x) < wwin->client.width/2 + spacew/2)) { /* Resize vertically */ xdir = 0; } else if ((abs(y) > wwin->client.height/2 - spaceh/2) && (abs(y) < wwin->client.height/2 + spaceh/2)) { /* Resize horizontally */ ydir = 0; } return (xdir | ydir); } /* window is too narrow. allow diagonal resize */ if (cw * 2 >= w) { int ydir; if (flags & HCONSTRAIN) ydir = 0; else ydir = DOWN; if (x < cw) return (LEFT | ydir); else return (RIGHT | ydir); } /* vertical resize */ if ((x > cw) && (x < w - cw)) return DOWN; if (x < cw) dir = LEFT; else dir = RIGHT; if ((abs(dy) > 0) && !(flags & HCONSTRAIN)) dir |= DOWN; return dir; } void wMouseResizeWindow(WWindow * wwin, XEvent * ev) { XEvent event; WScreen *scr = wwin->screen_ptr; Window root = scr->root_win; int vert_border = wwin->frame->top_width + wwin->frame->bottom_width; int fw = wwin->frame->core->width; int fh = wwin->frame->core->height; int fx = wwin->frame_x; int fy = wwin->frame_y; int is_resizebar = (wwin->frame->resizebar && ev->xany.window == wwin->frame->resizebar->window); int orig_x, orig_y; int started; int dw, dh; int rw = fw, rh = fh; int rx1, ry1, rx2, ry2; int res = 0; KeyCode shiftl, shiftr; int orig_fx = fx; int orig_fy = fy; int orig_fw = fw; int orig_fh = fh; int original_fw = fw; int original_fh = fh; int head = ((wPreferences.auto_arrange_icons && wXineramaHeads(scr) > 1) ? wGetHeadForWindow(wwin) : scr->xine_info.primary_head); int opaqueResize = wPreferences.opaque_resize; if (!IS_RESIZABLE(wwin)) return; if (wwin->flags.shaded) { wwarning("internal error: tryein"); return; } orig_x = ev->xbutton.x_root; orig_y = ev->xbutton.y_root; started = 0; wUnselectWindows(scr); rx1 = fx; rx2 = fx + fw - 1; ry1 = fy; ry2 = fy + fh - 1; shiftl = XKeysymToKeycode(dpy, XK_Shift_L); shiftr = XKeysymToKeycode(dpy, XK_Shift_R); while (1) { WMMaskEvent(dpy, KeyPressMask | ButtonMotionMask | ButtonReleaseMask | PointerMotionHintMask | ButtonPressMask | ExposureMask, &event); if (!checkMouseSamplingRate(&event)) continue; switch (event.type) { case KeyPress: showGeometry(wwin, fx, fy, fx + fw, fy + fh, res); if (!opaqueResize) { if ((event.xkey.keycode == shiftl || event.xkey.keycode == shiftr) && started) { drawTransparentFrame(wwin, fx, fy, fw, fh); cycleGeometryDisplay(wwin, fx, fy, fw, fh, res); drawTransparentFrame(wwin, fx, fy, fw, fh); } }; showGeometry(wwin, fx, fy, fx + fw, fy + fh, res); break; case MotionNotify: if (started) { while (XCheckMaskEvent(dpy, ButtonMotionMask, &event)) ; dw = 0; dh = 0; orig_fx = fx; orig_fy = fy; orig_fw = fw; orig_fh = fh; if (res & LEFT) dw = orig_x - event.xmotion.x_root; else if (res & RIGHT) dw = event.xmotion.x_root - orig_x; if (res & UP) dh = orig_y - event.xmotion.y_root; else if (res & DOWN) dh = event.xmotion.y_root - orig_y; orig_x = event.xmotion.x_root; orig_y = event.xmotion.y_root; rw += dw; rh += dh; fw = rw; fh = rh - vert_border; wWindowConstrainSize(wwin, (unsigned int *)&fw, (unsigned int *)&fh); fh += vert_border; if (res & LEFT) fx = rx2 - fw + 1; else if (res & RIGHT) fx = rx1; if (res & UP) fy = ry2 - fh + 1; else if (res & DOWN) fy = ry1; } else if (abs(orig_x - event.xmotion.x_root) >= MOVE_THRESHOLD || abs(orig_y - event.xmotion.y_root) >= MOVE_THRESHOLD) { int tx, ty; Window junkw; int flags; XTranslateCoordinates(dpy, root, wwin->frame->core->window, orig_x, orig_y, &tx, &ty, &junkw); /* check if resizing through resizebar */ if (is_resizebar) flags = RESIZEBAR; else flags = 0; if (is_resizebar && ((ev->xbutton.state & ShiftMask) || abs(orig_y - event.xmotion.y_root) < HRESIZE_THRESHOLD)) flags |= HCONSTRAIN; res = getResizeDirection(wwin, tx, ty, orig_y - event.xmotion.y_root, flags); if (res == (UP | LEFT)) XChangeActivePointerGrab(dpy, ButtonMotionMask | ButtonReleaseMask | ButtonPressMask, wPreferences.cursor[WCUR_TOPLEFTRESIZE], CurrentTime); else if (res == (UP | RIGHT)) XChangeActivePointerGrab(dpy, ButtonMotionMask | ButtonReleaseMask | ButtonPressMask, wPreferences.cursor[WCUR_TOPRIGHTRESIZE], CurrentTime); else if (res == (DOWN | LEFT)) XChangeActivePointerGrab(dpy, ButtonMotionMask | ButtonReleaseMask | ButtonPressMask, wPreferences.cursor[WCUR_BOTTOMLEFTRESIZE], CurrentTime); else if (res == (DOWN | RIGHT)) XChangeActivePointerGrab(dpy, ButtonMotionMask | ButtonReleaseMask | ButtonPressMask, wPreferences.cursor[WCUR_BOTTOMRIGHTRESIZE], CurrentTime); else if (res == DOWN || res == UP) XChangeActivePointerGrab(dpy, ButtonMotionMask | ButtonReleaseMask | ButtonPressMask, wPreferences.cursor[WCUR_VERTICALRESIZE], CurrentTime); else if (res & (DOWN | UP)) XChangeActivePointerGrab(dpy, ButtonMotionMask | ButtonReleaseMask | ButtonPressMask, wPreferences.cursor[WCUR_VERTICALRESIZE], CurrentTime); else if (res & (LEFT | RIGHT)) XChangeActivePointerGrab(dpy, ButtonMotionMask | ButtonReleaseMask | ButtonPressMask, wPreferences.cursor[WCUR_HORIZONRESIZE], CurrentTime); XGrabKeyboard(dpy, root, False, GrabModeAsync, GrabModeAsync, CurrentTime); XGrabServer(dpy); /* Draw the resize frame for the first time. */ mapGeometryDisplay(wwin, fx, fy, fw, fh); if (!opaqueResize) drawTransparentFrame(wwin, fx, fy, fw, fh); showGeometry(wwin, fx, fy, fx + fw, fy + fh, res); started = 1; } if (started) { if (!opaqueResize) drawTransparentFrame(wwin, orig_fx, orig_fy, orig_fw, orig_fh); if (wPreferences.size_display == WDIS_FRAME_CENTER) moveGeometryDisplayCentered(scr, fx + fw / 2, fy + fh / 2); if (!opaqueResize) drawTransparentFrame(wwin, fx, fy, fw, fh); if (fh != orig_fh || fw != orig_fw) { if (wPreferences.size_display == WDIS_NEW) showGeometry(wwin, orig_fx, orig_fy, orig_fx + orig_fw, orig_fy + orig_fh, res); showGeometry(wwin, fx, fy, fx + fw, fy + fh, res); } if (opaqueResize) { /* Fist clean the geometry line */ showGeometry(wwin, fx, fy, fx + fw, fy + fh, res); /* Now, continue drawing */ XUngrabServer(dpy); moveGeometryDisplayCentered(scr, fx + fw / 2, fy + fh / 2); wWindowConfigure(wwin, fx, fy, fw, fh - vert_border); showGeometry(wwin, fx, fy, fx + fw, fy + fh, res); }; } break; case ButtonPress: break; case ButtonRelease: if (event.xbutton.button != ev->xbutton.button) break; if (started) { showGeometry(wwin, fx, fy, fx + fw, fy + fh, res); if (!opaqueResize) drawTransparentFrame(wwin, fx, fy, fw, fh); XUngrabKeyboard(dpy, CurrentTime); WMUnmapWidget(scr->gview); XUngrabServer(dpy); if (fw != original_fw) wwin->flags.maximized &= ~(MAX_HORIZONTAL | MAX_TOPHALF | MAX_BOTTOMHALF | MAX_MAXIMUS); if (fh != original_fh) wwin->flags.maximized &= ~(MAX_VERTICAL | MAX_LEFTHALF | MAX_RIGHTHALF | MAX_MAXIMUS); wWindowConfigure(wwin, fx, fy, fw, fh - vert_border); wWindowSynthConfigureNotify(wwin); } return; default: WMHandleEvent(&event); } } if (wPreferences.auto_arrange_icons && wXineramaHeads(scr) > 1 && head != wGetHeadForWindow(wwin)) wArrangeIcons(scr, True); } #undef LEFT #undef RIGHT #undef UP #undef DOWN #undef HCONSTRAIN #undef RESIZEBAR void wUnselectWindows(WScreen * scr) { WWindow *wwin; if (!scr->selected_windows) return; while (WMGetArrayItemCount(scr->selected_windows)) { wwin = WMGetFromArray(scr->selected_windows, 0); if (wwin->flags.miniaturized && wwin->icon && wwin->icon->selected) wIconSelect(wwin->icon); wSelectWindow(wwin, False); } WMFreeArray(scr->selected_windows); scr->selected_windows = NULL; } static void selectWindowsInside(WScreen * scr, int x1, int y1, int x2, int y2) { WWindow *tmpw; /* select the windows and put them in the selected window list */ tmpw = scr->focused_window; while (tmpw != NULL) { if (!(tmpw->flags.miniaturized || tmpw->flags.hidden)) { if ((tmpw->frame->workspace == scr->current_workspace || IS_OMNIPRESENT(tmpw)) && (tmpw->frame_x >= x1) && (tmpw->frame_y >= y1) && (tmpw->frame->core->width + tmpw->frame_x <= x2) && (tmpw->frame->core->height + tmpw->frame_y <= y2)) { wSelectWindow(tmpw, True); } } tmpw = tmpw->prev; } } void wSelectWindows(WScreen * scr, XEvent * ev) { XEvent event; Window root = scr->root_win; GC gc = scr->frame_gc; int xp = ev->xbutton.x_root; int yp = ev->xbutton.y_root; int w = 0, h = 0; int x = xp, y = yp; if (XGrabPointer(dpy, scr->root_win, False, ButtonMotionMask | ButtonReleaseMask | ButtonPressMask, GrabModeAsync, GrabModeAsync, None, wPreferences.cursor[WCUR_NORMAL], CurrentTime) != Success) { return; } XGrabServer(dpy); wUnselectWindows(scr); XDrawRectangle(dpy, root, gc, xp, yp, w, h); while (1) { WMMaskEvent(dpy, ButtonReleaseMask | PointerMotionMask | ButtonPressMask, &event); switch (event.type) { case MotionNotify: XDrawRectangle(dpy, root, gc, x, y, w, h); x = event.xmotion.x_root; if (x < xp) { w = xp - x; } else { w = x - xp; x = xp; } y = event.xmotion.y_root; if (y < yp) { h = yp - y; } else { h = y - yp; y = yp; } XDrawRectangle(dpy, root, gc, x, y, w, h); break; case ButtonPress: break; case ButtonRelease: if (event.xbutton.button != ev->xbutton.button) break; XDrawRectangle(dpy, root, gc, x, y, w, h); XUngrabServer(dpy); XUngrabPointer(dpy, CurrentTime); selectWindowsInside(scr, x, y, x + w, y + h); return; default: WMHandleEvent(&event); break; } } } void InteractivePlaceWindow(WWindow * wwin, int *x_ret, int *y_ret, unsigned width, unsigned height) { WScreen *scr = wwin->screen_ptr; Window root = scr->root_win; int x, y, h = 0; XEvent event; KeyCode shiftl, shiftr; Window junkw; int junk; if (XGrabPointer(dpy, root, True, PointerMotionMask | ButtonPressMask, GrabModeAsync, GrabModeAsync, None, wPreferences.cursor[WCUR_NORMAL], CurrentTime) != Success) { *x_ret = 0; *y_ret = 0; return; } if (HAS_TITLEBAR(wwin)) { h = WMFontHeight(scr->title_font) + (wPreferences.window_title_clearance + TITLEBAR_EXTEND_SPACE) * 2; if (h > wPreferences.window_title_max_height) h = wPreferences.window_title_max_height; if (h < wPreferences.window_title_min_height) h = wPreferences.window_title_min_height; height += h; } if (HAS_RESIZEBAR(wwin)) { height += RESIZEBAR_HEIGHT; } XGrabKeyboard(dpy, root, False, GrabModeAsync, GrabModeAsync, CurrentTime); XQueryPointer(dpy, root, &junkw, &junkw, &x, &y, &junk, &junk, (unsigned *)&junk); mapPositionDisplay(wwin, x - width / 2, y - h / 2, width, height); drawTransparentFrame(wwin, x - width / 2, y - h / 2, width, height); shiftl = XKeysymToKeycode(dpy, XK_Shift_L); shiftr = XKeysymToKeycode(dpy, XK_Shift_R); while (1) { WMMaskEvent(dpy, PointerMotionMask | ButtonPressMask | ExposureMask | KeyPressMask, &event); if (!checkMouseSamplingRate(&event)) continue; switch (event.type) { case KeyPress: if ((event.xkey.keycode == shiftl) || (event.xkey.keycode == shiftr)) { drawTransparentFrame(wwin, x - width / 2, y - h / 2, width, height); cyclePositionDisplay(wwin, x - width / 2, y - h / 2, width, height); drawTransparentFrame(wwin, x - width / 2, y - h / 2, width, height); } break; case MotionNotify: drawTransparentFrame(wwin, x - width / 2, y - h / 2, width, height); x = event.xmotion.x_root; y = event.xmotion.y_root; if (wPreferences.move_display == WDIS_FRAME_CENTER) moveGeometryDisplayCentered(scr, x, y + (height - h) / 2); showPosition(wwin, x - width / 2, y - h / 2); drawTransparentFrame(wwin, x - width / 2, y - h / 2, width, height); break; case ButtonPress: drawTransparentFrame(wwin, x - width / 2, y - h / 2, width, height); XSync(dpy, 0); *x_ret = x - width / 2; *y_ret = y - h / 2; XUngrabPointer(dpy, CurrentTime); XUngrabKeyboard(dpy, CurrentTime); /* get rid of the geometry window */ WMUnmapWidget(scr->gview); return; default: WMHandleEvent(&event); break; } } } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/wsmap.c����������������������������������������������������������������������0000644�0001750�0001750�00000043072�13431646202�013057� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* wsmap.c - worskpace map * * Window Maker window manager * * Copyright (c) 2014 Window Maker Team - David Maciejak * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "wconfig.h" #include <stdlib.h> #include <stdio.h> #ifdef USE_XSHAPE #include <X11/extensions/shape.h> #endif #include "screen.h" #include "window.h" #include "misc.h" #include "workspace.h" #include "wsmap.h" #include "WINGs/WINGsP.h" static const int WORKSPACE_MAP_RATIO = 10; static const int WORKSPACE_SEPARATOR_WIDTH = 12; static const int mini_workspace_per_line = 5; /* * Used to store the index of the tenth displayed mini workspace * will be 0 for workspaces number 0 to 9 * 1 for workspaces number 10 -> 19 */ static int wsmap_bulk_index; static WMPixmap *frame_bg_focused; static WMPixmap *frame_bg_unfocused; typedef struct { WScreen *scr; WMWindow *win; int xcount, ycount; int wswidth, wsheight; int mini_workspace_width, mini_workspace_height; int edge; int border_width; } WWorkspaceMap; typedef struct { WMButton *workspace_img_button; WMLabel *workspace_label; } W_WorkspaceMap; void wWorkspaceMapUpdate(WScreen *scr) { XImage *pimg; pimg = XGetImage(dpy, scr->root_win, 0, 0, scr->scr_width, scr->scr_height, AllPlanes, ZPixmap); if (pimg) { RImage *mini_preview; mini_preview = RCreateImageFromXImage(scr->rcontext, pimg, NULL); XDestroyImage(pimg); if (mini_preview) { RImage *tmp = scr->workspaces[scr->current_workspace]->map; if (tmp) RReleaseImage(tmp); scr->workspaces[scr->current_workspace]->map = RSmoothScaleImage(mini_preview, scr->scr_width / WORKSPACE_MAP_RATIO, scr->scr_height / WORKSPACE_MAP_RATIO); RReleaseImage(mini_preview); } } } static void workspace_map_slide(WWorkspaceMap *wsmap) { if (wsmap->edge == WD_TOP) slide_window(WMWidgetXID(wsmap->win), 0, -1 * wsmap->wsheight, wsmap->xcount, wsmap->ycount); else slide_window(WMWidgetXID(wsmap->win), 0, wsmap->scr->scr_height, wsmap->xcount, wsmap->ycount); } static void workspace_map_unslide(WWorkspaceMap *wsmap) { if (wsmap->edge == WD_TOP) slide_window(WMWidgetXID(wsmap->win), wsmap->xcount, wsmap->ycount, 0, -1 * wsmap->wsheight); else slide_window(WMWidgetXID(wsmap->win), wsmap->xcount, wsmap->ycount, 0, wsmap->scr->scr_height); } static void workspace_map_destroy(WWorkspaceMap *wsmap) { workspace_map_unslide(wsmap); WMUnmapWidget(wsmap->win); if (wsmap->win) { Window info_win = wsmap->scr->info_window; XEvent ev; ev.xclient.type = ClientMessage; ev.xclient.message_type = w_global.atom.wm.ignore_focus_events; ev.xclient.format = 32; ev.xclient.data.l[0] = True; XSendEvent(dpy, info_win, True, EnterWindowMask, &ev); WMUnmapWidget(wsmap->win); ev.xclient.data.l[0] = False; XSendEvent(dpy, info_win, True, EnterWindowMask, &ev); WMDestroyWidget(wsmap->win); if (frame_bg_focused) WMReleasePixmap(frame_bg_focused); if (frame_bg_unfocused) WMReleasePixmap(frame_bg_unfocused); } wfree(wsmap); } static void selected_workspace_callback(WMWidget *w, void *data) { WWorkspaceMap *wsmap = (WWorkspaceMap *) data; WMButton *click_button = w; if (w && wsmap) { int workspace_id = atoi(WMGetButtonText(click_button)); wWorkspaceChange(wsmap->scr, workspace_id); w_global.process_workspacemap_event = False; } } static void set_workspace_map_background_image(WWorkspaceMap *wsmap) { Pixmap pixmap, mask; if (wPreferences.wsmbackTexture->any.type == WTEX_PIXMAP) { RImage *tmp = wTextureRenderImage(wPreferences.wsmbackTexture, wsmap->wswidth, wsmap->wsheight, WREL_FLAT); if (!tmp) return; RConvertImageMask(wsmap->scr->rcontext, tmp, &pixmap, &mask, 250); RReleaseImage(tmp); if (!pixmap) return; XSetWindowBackgroundPixmap(dpy, WMWidgetXID(wsmap->win), pixmap); #ifdef USE_XSHAPE if (mask && w_global.xext.shape.supported) XShapeCombineMask(dpy, WMWidgetXID(wsmap->win), ShapeBounding, 0, 0, mask, ShapeSet); #endif if (pixmap) XFreePixmap(dpy, pixmap); if (mask) XFreePixmap(dpy, mask); } } static void workspace_map_show(WWorkspaceMap *wsmap) { WMMapSubwidgets(wsmap->win); WMMapWidget(wsmap->win); workspace_map_slide(wsmap); } static WMPixmap *get_frame_background_color(WWorkspaceMap *wsmap, unsigned int width, unsigned int height, int type) { RImage *img; WMPixmap *pix; if (!wsmap->scr->window_title_texture[type]) return NULL; img = wTextureRenderImage(wsmap->scr->window_title_texture[type], width, height, WREL_FLAT); if (!img) return NULL; pix = WMCreatePixmapFromRImage(wsmap->scr->wmscreen, img, 128); RReleaseImage(img); return pix; } static void workspace_map_realize(WWorkspaceMap *wsmap, WMFrame *frame_border, W_WorkspaceMap *wsmap_array) { int i, mini_workspace_cnt, general_index; WMPixmap *frame_border_pixmap; WMSize label_size; WMRealizeWidget(wsmap->win); set_workspace_map_background_image(wsmap); frame_border_pixmap = get_frame_background_color(wsmap, wsmap->wswidth, wsmap->border_width, WS_FOCUSED); WMSetWidgetBackgroundPixmap(frame_border, frame_border_pixmap); WMReleasePixmap(frame_border_pixmap); label_size = WMGetViewSize(W_VIEW(wsmap_array[0].workspace_label)); frame_bg_focused = get_frame_background_color(wsmap, label_size.width, label_size.height, WS_FOCUSED); frame_bg_unfocused = get_frame_background_color(wsmap, label_size.width, label_size.height, WS_UNFOCUSED); mini_workspace_cnt = (wsmap->scr->workspace_count <= 2 * mini_workspace_per_line) ? wsmap->scr->workspace_count : 2 * mini_workspace_per_line; for (i = 0; i < mini_workspace_cnt; i++) { general_index = i + wsmap_bulk_index * 2 * mini_workspace_per_line; if (general_index == wsmap->scr->current_workspace) { WMSetWidgetBackgroundPixmap(wsmap_array[i].workspace_label, frame_bg_focused); WMSetLabelTextColor(wsmap_array[i].workspace_label, wsmap->scr->window_title_color[WS_FOCUSED]); } else { WMSetWidgetBackgroundPixmap(wsmap_array[i].workspace_label, frame_bg_unfocused); WMSetLabelTextColor(wsmap_array[i].workspace_label, wsmap->scr->window_title_color[WS_UNFOCUSED]); } } } static WMPixmap *enlight_workspace(WScreen *scr, RImage *mini_wkspace_map) { RImage *tmp = RCloneImage(mini_wkspace_map); RColor color; WMPixmap *icon; color.red = color.green = color.blue = 0; color.alpha = 160; RLightImage(tmp, &color); icon = WMCreatePixmapFromRImage(scr->wmscreen, tmp, 128); RReleaseImage(tmp); return icon; } static WMPixmap *dummy_background_pixmap(WWorkspaceMap *wsmap) { RImage *img; WMPixmap *icon; img = RCreateImage(wsmap->wswidth, wsmap->wsheight, 0); if (!img) return NULL; /* the workspace texture is not saved anywhere, so just using the default unfocus color */ if (wsmap->scr->window_title_texture[WS_UNFOCUSED]) { RColor frame_bg_color; frame_bg_color.red = wsmap->scr->window_title_texture[WS_UNFOCUSED]->solid.normal.red; frame_bg_color.green = wsmap->scr->window_title_texture[WS_UNFOCUSED]->solid.normal.green; frame_bg_color.blue = wsmap->scr->window_title_texture[WS_UNFOCUSED]->solid.normal.blue; RFillImage(img, &frame_bg_color); } icon = WMCreatePixmapFromRImage(wsmap->scr->wmscreen, img, 128); RReleaseImage(img); return icon; } static void show_mini_workspace(WWorkspaceMap *wsmap, W_WorkspaceMap *wsmap_array, int max_mini_workspace) { int index, space_width; int border_width_adjustement = (wsmap->edge == WD_TOP) ? 0 : wsmap->border_width; int font_height = WMFontHeight(wsmap->scr->info_text_font); if (max_mini_workspace > mini_workspace_per_line) space_width = (wsmap->wswidth - mini_workspace_per_line * wsmap->mini_workspace_width) / (mini_workspace_per_line + 1); else space_width = (wsmap->wswidth - max_mini_workspace * wsmap->mini_workspace_width) / (max_mini_workspace + 1); for (index = 0; index < max_mini_workspace; index++) { int i , j; j = index; if (index >= mini_workspace_per_line) { i = 1; j -= mini_workspace_per_line; } else { i = 0; } if (wsmap_array[index].workspace_img_button) { WMResizeWidget(wsmap_array[index].workspace_img_button, wsmap->mini_workspace_width, wsmap->mini_workspace_height); WMMoveWidget(wsmap_array[index].workspace_img_button, j * wsmap->mini_workspace_width + (j + 1) * space_width, border_width_adjustement + WORKSPACE_SEPARATOR_WIDTH + i * (wsmap->mini_workspace_height + 2 * WORKSPACE_SEPARATOR_WIDTH) + font_height); WMMapWidget(wsmap_array[index].workspace_img_button); } if (wsmap_array[index].workspace_label) { WMResizeWidget(wsmap_array[index].workspace_label, wsmap->mini_workspace_width, font_height); WMMoveWidget(wsmap_array[index].workspace_label, j * wsmap->mini_workspace_width + (j + 1) * space_width, border_width_adjustement + WORKSPACE_SEPARATOR_WIDTH + i * (wsmap->mini_workspace_height + 2 * WORKSPACE_SEPARATOR_WIDTH)); WMMapWidget(wsmap_array[index].workspace_label); } } } static void hide_mini_workspace(W_WorkspaceMap *wsmap_array, int i) { if (wsmap_array[i].workspace_img_button) WMUnmapWidget(wsmap_array[i].workspace_img_button); if (wsmap_array[i].workspace_label) WMUnmapWidget(wsmap_array[i].workspace_label); } static WMPixmap *get_mini_workspace(WWorkspaceMap *wsmap, int index) { if (!wsmap->scr->workspaces[index]->map) return dummy_background_pixmap(wsmap); if (index == wsmap->scr->current_workspace) return enlight_workspace(wsmap->scr, wsmap->scr->workspaces[index]->map); return WMCreatePixmapFromRImage(wsmap->scr->wmscreen, wsmap->scr->workspaces[index]->map, 128); } static void create_mini_workspace(WScreen *scr, WWorkspaceMap *wsmap, W_WorkspaceMap *wsmap_array) { int workspace_index; int mini_workspace_cnt; char name[10]; WMButton *mini_workspace_btn; WMPixmap *icon; /* by default display the 10 first mini workspaces */ wsmap_bulk_index = 0; mini_workspace_cnt = (scr->workspace_count <= 2 * mini_workspace_per_line) ? scr->workspace_count : 2 * mini_workspace_per_line; for (workspace_index = 0; workspace_index < mini_workspace_cnt; workspace_index++) { mini_workspace_btn = WMCreateButton(wsmap->win, WBTOnOff); WMSetButtonBordered(mini_workspace_btn, 0); WMLabel *workspace_name_label = WMCreateLabel(wsmap->win); WMSetLabelFont(workspace_name_label, scr->info_text_font); WMSetLabelText(workspace_name_label, scr->workspaces[workspace_index]->name); wsmap_array[workspace_index].workspace_img_button = mini_workspace_btn; wsmap_array[workspace_index].workspace_label = workspace_name_label; WMSetButtonImagePosition(mini_workspace_btn, WIPImageOnly); icon = get_mini_workspace(wsmap, workspace_index); if (icon) { WMSetButtonImage(mini_workspace_btn, icon); WMReleasePixmap(icon); } snprintf(name, sizeof(name), "%d", workspace_index); WMSetButtonText(mini_workspace_btn, name); WMSetButtonAction(mini_workspace_btn, selected_workspace_callback, wsmap); } show_mini_workspace(wsmap, wsmap_array, mini_workspace_cnt); } static WWorkspaceMap *create_workspace_map(WScreen *scr, W_WorkspaceMap *wsmap_array, int edge) { WWorkspaceMap *wsmap; if (scr->workspace_count == 0) return NULL; wsmap = wmalloc(sizeof(*wsmap)); wsmap->border_width = 5; wsmap->edge = edge; wsmap->mini_workspace_width = scr->scr_width / WORKSPACE_MAP_RATIO; wsmap->mini_workspace_height = scr->scr_height / WORKSPACE_MAP_RATIO; wsmap->scr = scr; wsmap->win = WMCreateWindow(scr->wmscreen, "wsmap"); wsmap->wswidth = WidthOfScreen(DefaultScreenOfDisplay(dpy)); wsmap->wsheight = WMFontHeight(scr->info_text_font) + (wsmap->mini_workspace_height + 2 * WORKSPACE_SEPARATOR_WIDTH) * (scr->workspace_count > mini_workspace_per_line ? 2 : 1); if (wPreferences.wsmbackTexture->any.type == WTEX_SOLID) { WMColor *tmp = WMCreateRGBColor(scr->wmscreen, wPreferences.wsmbackTexture->any.color.red, wPreferences.wsmbackTexture->any.color.green, wPreferences.wsmbackTexture->any.color.blue, False); WMSetWidgetBackgroundColor(wsmap->win, tmp); WMReleaseColor(tmp); } WMResizeWidget(wsmap->win, wsmap->wswidth, wsmap->wsheight + wsmap->border_width); WMFrame *framel = WMCreateFrame(wsmap->win); WMResizeWidget(framel, wsmap->wswidth, wsmap->border_width); WMSetFrameRelief(framel, WRSimple); wWorkspaceMapUpdate(scr); wsmap->xcount = 0; if (edge == WD_TOP) { wsmap->ycount = 0; WMMoveWidget(framel, 0, wsmap->wsheight); } else { wsmap->ycount = scr->scr_height - wsmap->wsheight - wsmap->border_width; WMMoveWidget(framel, 0, 0); } create_mini_workspace(scr, wsmap, wsmap_array); workspace_map_realize(wsmap, framel, wsmap_array); return wsmap; } static void update_mini_workspace(WWorkspaceMap *wsmap, W_WorkspaceMap *wsmap_array, int bulk_of_ten) { int local_index, general_index; int mini_workspace_cnt; char name[10]; WMPixmap *icon; if (bulk_of_ten == wsmap_bulk_index) return; if (bulk_of_ten < 0) return; if (wsmap->scr->workspace_count <= bulk_of_ten * 2 * mini_workspace_per_line) return; wsmap_bulk_index = bulk_of_ten; mini_workspace_cnt = wsmap->scr->workspace_count - wsmap_bulk_index * 2 * mini_workspace_per_line; if (mini_workspace_cnt > 2 * mini_workspace_per_line) mini_workspace_cnt = 2 * mini_workspace_per_line; for (local_index = 0; local_index < 2 * mini_workspace_per_line; local_index++) { general_index = local_index + wsmap_bulk_index * 2 * mini_workspace_per_line; if (general_index < wsmap->scr->workspace_count) { /* updating label */ WMSetLabelText(wsmap_array[local_index].workspace_label, wsmap->scr->workspaces[general_index]->name); snprintf(name, sizeof(name), "%d", general_index); WMSetButtonText(wsmap_array[local_index].workspace_img_button, name); /* updating label background*/ if (general_index == wsmap->scr->current_workspace) { WMSetWidgetBackgroundPixmap(wsmap_array[local_index].workspace_label, frame_bg_focused); WMSetLabelTextColor(wsmap_array[local_index].workspace_label, wsmap->scr->window_title_color[WS_FOCUSED]); } else { WMSetWidgetBackgroundPixmap(wsmap_array[local_index].workspace_label, frame_bg_unfocused); WMSetLabelTextColor(wsmap_array[local_index].workspace_label, wsmap->scr->window_title_color[WS_UNFOCUSED]); } icon = get_mini_workspace(wsmap, general_index); if (icon) { WMSetButtonImage(wsmap_array[local_index].workspace_img_button, icon); WMReleasePixmap(icon); } } else { if (local_index < wsmap->scr->workspace_count) hide_mini_workspace(wsmap_array, local_index); } } show_mini_workspace(wsmap, wsmap_array, mini_workspace_cnt); } static void handle_event(WWorkspaceMap *wsmap, W_WorkspaceMap *wsmap_array) { XEvent ev; int modifiers; KeyCode escKey = XKeysymToKeycode(dpy, XK_Escape); XGrabKeyboard(dpy, WMWidgetXID(wsmap->win), False, GrabModeAsync, GrabModeAsync, CurrentTime); XGrabPointer(dpy, WMWidgetXID(wsmap->win), True, ButtonMotionMask | ButtonReleaseMask | ButtonPressMask, GrabModeAsync, GrabModeAsync, WMWidgetXID(wsmap->win), None, CurrentTime); w_global.process_workspacemap_event = True; while (w_global.process_workspacemap_event) { WMMaskEvent(dpy, KeyPressMask | KeyReleaseMask | ExposureMask | PointerMotionMask | ButtonPressMask | ButtonReleaseMask | EnterWindowMask, &ev); modifiers = ev.xkey.state & w_global.shortcut.modifiers_mask; switch (ev.type) { case KeyPress: if (ev.xkey.keycode == escKey || (wKeyBindings[WKBD_WORKSPACEMAP].keycode != 0 && wKeyBindings[WKBD_WORKSPACEMAP].keycode == ev.xkey.keycode && wKeyBindings[WKBD_WORKSPACEMAP].modifier == modifiers)) { w_global.process_workspacemap_event = False; } else { KeySym ks; int bulk_id; XLookupString(&ev.xkey, NULL, 16, &ks, NULL); bulk_id = -1; if (ks >= 0x30 && ks <= 0x39) bulk_id = ks - 0x30; else if (ks == XK_Left) bulk_id = wsmap_bulk_index - 1; else if (ks == XK_Right) bulk_id = wsmap_bulk_index + 1; if (bulk_id >= 0) update_mini_workspace(wsmap, wsmap_array, bulk_id); } break; case ButtonPress: switch (ev.xbutton.button) { case Button6: update_mini_workspace(wsmap, wsmap_array, wsmap_bulk_index - 1); break; case Button7: update_mini_workspace(wsmap, wsmap_array, wsmap_bulk_index + 1); break; default: WMHandleEvent(&ev); } break; default: WMHandleEvent(&ev); break; } } XUngrabPointer(dpy, CurrentTime); XUngrabKeyboard(dpy, CurrentTime); workspace_map_destroy(wsmap); } static WWorkspaceMap *init_workspace_map(WScreen *scr, W_WorkspaceMap *wsmap_array) { WWorkspaceMap *wsmap; wsmap = create_workspace_map(scr, wsmap_array, WD_BOTTOM); return wsmap; } void StartWorkspaceMap(WScreen *scr) { WWorkspaceMap *wsmap; W_WorkspaceMap wsmap_array[2 * mini_workspace_per_line]; /* save the current screen before displaying the workspace map */ wWorkspaceMapUpdate(scr); wsmap = init_workspace_map(scr, wsmap_array); if (wsmap) { workspace_map_show(wsmap); handle_event(wsmap, wsmap_array); } } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/defaults.h�������������������������������������������������������������������0000644�0001750�0001750�00000004321�13431646202�013536� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef WMDEFAULTS_H_ #define WMDEFAULTS_H_ typedef struct WDDomain { const char *domain_name; WMPropList *dictionary; const char *path; time_t timestamp; } WDDomain; WDDomain * wDefaultsInitDomain(const char *domain, Bool requireDictionary); void wDefaultsMergeGlobalMenus(WDDomain *menuDomain); void wReadDefaults(WScreen *scr, WMPropList *new_dict); void wDefaultUpdateIcons(WScreen *scr); void wReadStaticDefaults(WMPropList *dict); void wDefaultsCheckDomains(void *arg); void wSaveDefaults(WScreen *scr); void wDefaultFillAttributes(const char *instance, const char *class, WWindowAttributes *attr, WWindowAttributes *mask, Bool useGlobalDefault); char *get_default_image_path(void); RImage *get_default_image(WScreen *scr); char *wDefaultGetIconFile(const char *instance, const char *class, Bool default_icon); RImage *get_icon_image(WScreen *scr, const char *winstance, const char *wclass, int max_size); char *get_icon_filename(const char *winstance, const char *wclass, const char *command, Bool default_icon); int wDefaultGetStartWorkspace(WScreen *scr, const char *instance, const char *class); void wDefaultChangeIcon(const char *instance, const char* class, const char *file); RImage *get_rimage_from_file(WScreen *scr, const char *file_name, int max_size); void wDefaultPurgeInfo(const char *instance, const char *class); #endif /* WMDEFAULTS_H_ */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/framewin.c�������������������������������������������������������������������0000644�0001750�0001750�00000126154�13431646202�013543� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "wconfig.h" #include <X11/Xlib.h> #include <X11/Xutil.h> #ifdef KEEP_XKB_LOCK_STATUS #include <X11/XKBlib.h> #endif /* KEEP_XKB_LOCK_STATUS */ #include <stdlib.h> #include <string.h> #include <wraster.h> #include "WindowMaker.h" #include "GNUstep.h" #include "texture.h" #include "resources.h" #include "screen.h" #include "wcore.h" #include "window.h" #include "framewin.h" #include "stacking.h" #include "misc.h" #include "event.h" static void handleExpose(WObjDescriptor * desc, XEvent * event); static void handleButtonExpose(WObjDescriptor * desc, XEvent * event); static void buttonMouseDown(WObjDescriptor * desc, XEvent * event); static void titlebarMouseDown(WObjDescriptor * desc, XEvent * event); static void resizebarMouseDown(WObjDescriptor * desc, XEvent * event); static void checkTitleSize(WFrameWindow * fwin); static void paintButton(WCoreWindow * button, WTexture * texture, unsigned long color, WPixmap * image, int pushed); static void updateTitlebar(WFrameWindow * fwin); static void allocFrameBorderPixel(Colormap colormap, const char *color_name, unsigned long **pixel); static void allocFrameBorderPixel(Colormap colormap, const char *color_name, unsigned long **pixel) { XColor xcol; *pixel = NULL; if (! wGetColorForColormap(colormap, color_name, &xcol)) return; *pixel = wmalloc(sizeof(unsigned long)); if (*pixel) **pixel = xcol.pixel; } WFrameWindow *wFrameWindowCreate(WScreen * scr, int wlevel, int x, int y, int width, int height, int *clearance, int *title_min, int *title_max, int flags, WTexture ** title_texture, WTexture ** resize_texture, WMColor ** color, WMFont ** font, int depth, Visual *visual, Colormap colormap) { WFrameWindow *fwin; fwin = wmalloc(sizeof(WFrameWindow)); fwin->screen_ptr = scr; fwin->flags.single_texture = (flags & WFF_SINGLE_STATE) ? 1 : 0; fwin->title_texture = title_texture; fwin->resizebar_texture = resize_texture; fwin->title_color = color; fwin->title_clearance = clearance; fwin->title_min_height = title_min; fwin->title_max_height = title_max; fwin->font = font; #ifdef KEEP_XKB_LOCK_STATUS fwin->languagemode = XkbGroup1Index; fwin->last_languagemode = XkbGroup2Index; #endif fwin->depth = depth; fwin->visual = visual; fwin->colormap = colormap; fwin->core = wCoreCreateTopLevel(scr, x, y, width, height, (flags & WFF_BORDER) ? scr->frame_border_width : 0, fwin->depth, fwin->visual, fwin->colormap, scr->frame_border_pixel); /* setup stacking information */ fwin->core->stacking = wmalloc(sizeof(WStacking)); fwin->core->stacking->above = NULL; fwin->core->stacking->under = NULL; fwin->core->stacking->child_of = NULL; fwin->core->stacking->window_level = wlevel; AddToStackList(fwin->core); wFrameWindowUpdateBorders(fwin, flags); return fwin; } void wFrameWindowUpdateBorders(WFrameWindow * fwin, int flags) { int theight; int bsize; int width, height; int i; WScreen *scr = fwin->screen_ptr; width = fwin->core->width; if (flags & WFF_IS_SHADED) height = -1; else height = fwin->core->height - fwin->top_width - fwin->bottom_width; if (flags & WFF_TITLEBAR) { theight = WMFontHeight(*fwin->font) + (*fwin->title_clearance + TITLEBAR_EXTEND_SPACE) * 2; if (theight > *fwin->title_max_height) theight = *fwin->title_max_height; if (theight < *fwin->title_min_height) theight = *fwin->title_min_height; } else { theight = 0; } if (wPreferences.new_style == TS_NEW) { bsize = theight; } else if (wPreferences.new_style == TS_OLD) { bsize = theight - 7; } else { bsize = theight - 8; } if (fwin->titlebar) { /* if we had a titlebar and is requesting for one, * check if the size has changed and resize it */ if (flags & WFF_TITLEBAR) { fwin->top_width = theight; fwin->flags.need_texture_remake = 1; if (wPreferences.new_style == TS_NEW) { if (fwin->left_button) wCoreConfigure(fwin->left_button, 0, 0, bsize, bsize); #ifdef XKB_BUTTON_HINT if (fwin->language_button) { if (fwin->flags.hide_left_button || !fwin->left_button || fwin->flags.lbutton_dont_fit) wCoreConfigure(fwin->language_button, 0, 0, bsize, bsize); else wCoreConfigure(fwin->language_button, bsize, 0, bsize, bsize); } #endif if (fwin->right_button) wCoreConfigure(fwin->right_button, width - bsize + 1, 0, bsize, bsize); } else { /* !new_style */ if (fwin->left_button) wCoreConfigure(fwin->left_button, 3, (theight - bsize) / 2, bsize, bsize); #ifdef XKB_BUTTON_HINT if (fwin->language_button) wCoreConfigure(fwin->language_button, 6 + bsize, (theight - bsize) / 2, bsize, bsize); #endif if (fwin->right_button) wCoreConfigure(fwin->right_button, width - bsize - 3, (theight - bsize) / 2, bsize, bsize); } updateTitlebar(fwin); } else { /* we had a titlebar, but now we don't need it anymore */ for (i = 0; i < (fwin->flags.single_texture ? 1 : 3); i++) { FREE_PIXMAP(fwin->title_back[i]); if (wPreferences.new_style == TS_NEW) { FREE_PIXMAP(fwin->lbutton_back[i]); FREE_PIXMAP(fwin->rbutton_back[i]); #ifdef XKB_BUTTON_HINT FREE_PIXMAP(fwin->languagebutton_back[i]); #endif } } if (fwin->left_button) wCoreDestroy(fwin->left_button); fwin->left_button = NULL; #ifdef XKB_BUTTON_HINT if (fwin->language_button) wCoreDestroy(fwin->language_button); fwin->language_button = NULL; #endif if (fwin->right_button) wCoreDestroy(fwin->right_button); fwin->right_button = NULL; wCoreDestroy(fwin->titlebar); fwin->titlebar = NULL; fwin->top_width = 0; } } else { /* if we didn't have a titlebar and are being requested for * one, create it */ if (flags & WFF_TITLEBAR) { fwin->top_width = theight; fwin->flags.titlebar = 1; fwin->titlebar = wCoreCreate(fwin->core, 0, 0, width + 1, theight); if (flags & WFF_LEFT_BUTTON) { fwin->flags.left_button = 1; if (wPreferences.new_style == TS_NEW) { fwin->left_button = wCoreCreate(fwin->core, 0, 0, bsize, bsize); if (width < theight * 4) fwin->flags.lbutton_dont_fit = 1; else XMapRaised(dpy, fwin->left_button->window); } else if (wPreferences.new_style == TS_OLD) { fwin->left_button = wCoreCreate(fwin->titlebar, 3, (theight - bsize) / 2, bsize, bsize); XSetWindowBackground(dpy, fwin->left_button->window, scr->widget_texture->normal.pixel); if (width < theight * 3) fwin->flags.lbutton_dont_fit = 1; else XMapRaised(dpy, fwin->left_button->window); } else { fwin->left_button = wCoreCreate(fwin->titlebar, 3, (theight-bsize)/2, bsize, bsize); XSetWindowBackground(dpy, fwin->left_button->window, scr->widget_texture->dark.pixel); if (width < theight * 3) fwin->flags.lbutton_dont_fit = 1; else XMapRaised(dpy, fwin->left_button->window); } } #ifdef XKB_BUTTON_HINT if (flags & WFF_LANGUAGE_BUTTON) { fwin->flags.language_button = 1; if (wPreferences.new_style == TS_NEW) { fwin->language_button = wCoreCreate(fwin->core, bsize, 0, bsize, bsize); if (width < theight * 4) fwin->flags.languagebutton_dont_fit = 1; else XMapRaised(dpy, fwin->language_button->window); } else { fwin->language_button = wCoreCreate(fwin->titlebar, bsize + 6, (theight - bsize) / 2, bsize, bsize); XSetWindowBackground(dpy, fwin->language_button->window, scr->widget_texture->normal.pixel); if (width < theight * 3) fwin->flags.languagebutton_dont_fit = 1; else XMapRaised(dpy, fwin->language_button->window); } } #endif if (flags & WFF_RIGHT_BUTTON) { fwin->flags.right_button = 1; if (wPreferences.new_style == TS_NEW) { fwin->right_button = wCoreCreate(fwin->core, width - bsize + 1, 0, bsize, bsize); } else if (wPreferences.new_style == TS_OLD) { fwin->right_button = wCoreCreate(fwin->titlebar, width - bsize - 3, (theight - bsize) / 2, bsize, bsize); XSetWindowBackground(dpy, fwin->right_button->window, scr->widget_texture->normal.pixel); } else { fwin->right_button = wCoreCreate(fwin->titlebar, width-bsize-3, (theight-bsize)/2, bsize, bsize); XSetWindowBackground(dpy, fwin->right_button->window, scr->widget_texture->dark.pixel); } if (width < theight * 2) fwin->flags.rbutton_dont_fit = 1; else XMapRaised(dpy, fwin->right_button->window); } if (wPreferences.new_style == TS_NEW) updateTitlebar(fwin); XMapRaised(dpy, fwin->titlebar->window); fwin->flags.need_texture_remake = 1; } } checkTitleSize(fwin); if (flags & WFF_RESIZEBAR) { fwin->bottom_width = RESIZEBAR_HEIGHT; if (!fwin->resizebar) { fwin->flags.resizebar = 1; fwin->resizebar = wCoreCreate(fwin->core, 0, height + fwin->top_width, width, RESIZEBAR_HEIGHT); fwin->resizebar_corner_width = RESIZEBAR_CORNER_WIDTH; if (width < RESIZEBAR_CORNER_WIDTH * 2 + RESIZEBAR_MIN_WIDTH) { fwin->resizebar_corner_width = (width - RESIZEBAR_MIN_WIDTH) / 2; if (fwin->resizebar_corner_width < 0) fwin->resizebar_corner_width = 0; } XMapWindow(dpy, fwin->resizebar->window); XLowerWindow(dpy, fwin->resizebar->window); fwin->flags.need_texture_remake = 1; } else { if (height + fwin->top_width + fwin->bottom_width != fwin->core->height) wCoreConfigure(fwin->resizebar, 0, height + fwin->top_width, width, RESIZEBAR_HEIGHT); } } else { fwin->bottom_width = 0; if (fwin->resizebar) { fwin->bottom_width = 0; wCoreDestroy(fwin->resizebar); fwin->resizebar = NULL; } } 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); if (flags & WFF_BORDER) XSetWindowBorderWidth(dpy, fwin->core->window, scr->frame_border_width); else XSetWindowBorderWidth(dpy, fwin->core->window, 0); /* setup object descriptors */ if (fwin->titlebar) { fwin->titlebar->descriptor.handle_expose = handleExpose; fwin->titlebar->descriptor.parent = fwin; fwin->titlebar->descriptor.parent_type = WCLASS_FRAME; fwin->titlebar->descriptor.handle_mousedown = titlebarMouseDown; } if (fwin->resizebar) { fwin->resizebar->descriptor.handle_expose = handleExpose; fwin->resizebar->descriptor.parent = fwin; fwin->resizebar->descriptor.parent_type = WCLASS_FRAME; fwin->resizebar->descriptor.handle_mousedown = resizebarMouseDown; } if (fwin->left_button) { fwin->left_button->descriptor.handle_expose = handleButtonExpose; fwin->left_button->descriptor.parent = fwin; fwin->left_button->descriptor.parent_type = WCLASS_FRAME; fwin->left_button->descriptor.handle_mousedown = buttonMouseDown; } #ifdef XKB_BUTTON_HINT if (fwin->language_button) { fwin->language_button->descriptor.handle_expose = handleButtonExpose; fwin->language_button->descriptor.parent = fwin; fwin->language_button->descriptor.parent_type = WCLASS_FRAME; fwin->language_button->descriptor.handle_mousedown = buttonMouseDown; } #endif if (fwin->right_button) { fwin->right_button->descriptor.parent = fwin; fwin->right_button->descriptor.parent_type = WCLASS_FRAME; fwin->right_button->descriptor.handle_expose = handleButtonExpose; fwin->right_button->descriptor.handle_mousedown = buttonMouseDown; } checkTitleSize(fwin); allocFrameBorderPixel(fwin->colormap, WMGetColorRGBDescription(scr->frame_border_color), &fwin->border_pixel); allocFrameBorderPixel(fwin->colormap, WMGetColorRGBDescription(scr->frame_focused_border_color), &fwin->focused_border_pixel); allocFrameBorderPixel(fwin->colormap, WMGetColorRGBDescription(scr->frame_selected_border_color), &fwin->selected_border_pixel); if (flags & WFF_SELECTED) { if (fwin->selected_border_pixel) XSetWindowBorder(dpy, fwin->core->window, *fwin->selected_border_pixel); } else { if (fwin->flags.state == WS_FOCUSED) { if (fwin->focused_border_pixel) XSetWindowBorder(dpy, fwin->core->window, *fwin->focused_border_pixel); } else { if (fwin->border_pixel) XSetWindowBorder(dpy, fwin->core->window, *fwin->border_pixel); } } } void wFrameWindowDestroy(WFrameWindow * fwin) { int i; if (fwin->left_button) wCoreDestroy(fwin->left_button); #ifdef XKB_BUTTON_HINT if (fwin->language_button) wCoreDestroy(fwin->language_button); #endif if (fwin->right_button) wCoreDestroy(fwin->right_button); if (fwin->resizebar) wCoreDestroy(fwin->resizebar); if (fwin->titlebar) wCoreDestroy(fwin->titlebar); RemoveFromStackList(fwin->core); wCoreDestroy(fwin->core); if (fwin->title) wfree(fwin->title); for (i = 0; i < (fwin->flags.single_texture ? 1 : 3); i++) { FREE_PIXMAP(fwin->title_back[i]); if (wPreferences.new_style == TS_NEW) { FREE_PIXMAP(fwin->lbutton_back[i]); #ifdef XKB_BUTTON_HINT FREE_PIXMAP(fwin->languagebutton_back[i]); #endif FREE_PIXMAP(fwin->rbutton_back[i]); } } wfree(fwin); } void wFrameWindowChangeState(WFrameWindow * fwin, int state) { if (fwin->flags.state == state) return; fwin->flags.state = state; fwin->flags.need_texture_change = 1; if (fwin->flags.state == WS_FOCUSED) { if (fwin->focused_border_pixel) XSetWindowBorder(dpy, fwin->core->window, *fwin->focused_border_pixel); } else { if (fwin->border_pixel) XSetWindowBorder(dpy, fwin->core->window, *fwin->border_pixel); } wFrameWindowPaint(fwin); } static void updateTitlebar(WFrameWindow * fwin) { int x, w; int theight; theight = WMFontHeight(*fwin->font) + (*fwin->title_clearance + TITLEBAR_EXTEND_SPACE) * 2; if (theight > *fwin->title_max_height) theight = *fwin->title_max_height; if (theight < *fwin->title_min_height) theight = *fwin->title_min_height; x = 0; w = fwin->core->width + 1; if (wPreferences.new_style == TS_NEW) { if (fwin->flags.hide_left_button || !fwin->left_button || fwin->flags.lbutton_dont_fit) { x = 0; #ifdef XKB_BUTTON_HINT if (fwin->language_button) wCoreConfigure(fwin->language_button, 0, 0, fwin->language_button->width, fwin->language_button->width); #endif } else { #ifdef XKB_BUTTON_HINT if (fwin->language_button) wCoreConfigure(fwin->language_button, fwin->left_button->width, 0, fwin->language_button->width, fwin->language_button->width); #endif x = fwin->left_button->width; w -= fwin->left_button->width; } #ifdef XKB_BUTTON_HINT if (fwin->flags.hide_language_button || !fwin->language_button || fwin->flags.languagebutton_dont_fit) { } else { x += fwin->language_button->width; w -= fwin->language_button->width; } #endif } #ifdef XKB_BUTTON_HINT else { int bsize = theight - 7; if (fwin->flags.hide_left_button || !fwin->left_button || fwin->flags.lbutton_dont_fit) { if (fwin->language_button) wCoreConfigure(fwin->language_button, 3, (theight - bsize) / 2, fwin->language_button->width, fwin->language_button->width); } else { if (fwin->language_button) wCoreConfigure(fwin->language_button, 6 + fwin->left_button->width, (theight - bsize) / 2, fwin->language_button->width, fwin->language_button->width); } } #endif if (wPreferences.new_style == TS_NEW) { if (!fwin->flags.hide_right_button && fwin->right_button && !fwin->flags.rbutton_dont_fit) w -= fwin->right_button->width; } if (wPreferences.new_style == TS_NEW || fwin->titlebar->width != w) fwin->flags.need_texture_remake = 1; wCoreConfigure(fwin->titlebar, x, 0, w, theight); } void wFrameWindowHideButton(WFrameWindow * fwin, int flags) { if ((flags & WFF_RIGHT_BUTTON) && fwin->right_button) { XUnmapWindow(dpy, fwin->right_button->window); fwin->flags.hide_right_button = 1; } if ((flags & WFF_LEFT_BUTTON) && fwin->left_button) { XUnmapWindow(dpy, fwin->left_button->window); fwin->flags.hide_left_button = 1; } #ifdef XKB_BUTTON_HINT if ((flags & WFF_LANGUAGE_BUTTON) && fwin->language_button) { XUnmapWindow(dpy, fwin->language_button->window); fwin->flags.hide_language_button = 1; } #endif if (fwin->titlebar) { if (wPreferences.new_style == TS_NEW) { updateTitlebar(fwin); } else { #ifdef XKB_BUTTON_HINT updateTitlebar(fwin); #else XClearWindow(dpy, fwin->titlebar->window); wFrameWindowPaint(fwin); #endif } checkTitleSize(fwin); } } void wFrameWindowShowButton(WFrameWindow * fwin, int flags) { if ((flags & WFF_RIGHT_BUTTON) && fwin->right_button && fwin->flags.hide_right_button) { if (!fwin->flags.rbutton_dont_fit) XMapWindow(dpy, fwin->right_button->window); fwin->flags.hide_right_button = 0; } #ifdef XKB_BUTTON_HINT if ((flags & WFF_LANGUAGE_BUTTON) && fwin->language_button && fwin->flags.hide_language_button) { if (!fwin->flags.languagebutton_dont_fit) XMapWindow(dpy, fwin->language_button->window); fwin->flags.hide_language_button = 0; } #endif if ((flags & WFF_LEFT_BUTTON) && fwin->left_button && fwin->flags.hide_left_button) { if (!fwin->flags.lbutton_dont_fit) XMapWindow(dpy, fwin->left_button->window); fwin->flags.hide_left_button = 0; } if (fwin->titlebar) { if (wPreferences.new_style == TS_NEW) { updateTitlebar(fwin); } else { XClearWindow(dpy, fwin->titlebar->window); wFrameWindowPaint(fwin); } checkTitleSize(fwin); } } static void #ifdef XKB_BUTTON_HINT renderTexture(WScreen * scr, WTexture * texture, int width, int height, int bwidth, int bheight, int left, int language, int right, Pixmap * title, Pixmap * lbutton, Pixmap * languagebutton, Pixmap * rbutton) #else renderTexture(WScreen * scr, WTexture * texture, int width, int height, int bwidth, int bheight, int left, int right, Pixmap * title, Pixmap * lbutton, Pixmap * rbutton) #endif { RImage *img; RImage *limg, *rimg, *mimg; #ifdef XKB_BUTTON_HINT RImage *timg; #endif int x, w; *title = None; *lbutton = None; *rbutton = None; #ifdef XKB_BUTTON_HINT *languagebutton = None; #endif img = wTextureRenderImage(texture, width, height, WREL_FLAT); if (!img) { wwarning(_("could not render texture: %s"), RMessageForError(RErrorCode)); return; } if (wPreferences.new_style == TS_NEW) { if (left) limg = RGetSubImage(img, 0, 0, bwidth, bheight); else limg = NULL; x = 0; w = img->width; #ifdef XKB_BUTTON_HINT if (language) timg = RGetSubImage(img, bwidth * left, 0, bwidth, bheight); else timg = NULL; #endif if (limg) { RBevelImage(limg, RBEV_RAISED2); if (!RConvertImage(scr->rcontext, limg, lbutton)) wwarning(_("error rendering image:%s"), RMessageForError(RErrorCode)); x += limg->width; w -= limg->width; RReleaseImage(limg); } #ifdef XKB_BUTTON_HINT if (timg) { RBevelImage(timg, RBEV_RAISED2); if (!RConvertImage(scr->rcontext, timg, languagebutton)) wwarning(_("error rendering image:%s"), RMessageForError(RErrorCode)); x += timg->width; w -= timg->width; RReleaseImage(timg); } #endif if (right) rimg = RGetSubImage(img, width - bwidth, 0, bwidth, bheight); else rimg = NULL; if (rimg) { RBevelImage(rimg, RBEV_RAISED2); if (!RConvertImage(scr->rcontext, rimg, rbutton)) wwarning(_("error rendering image:%s"), RMessageForError(RErrorCode)); w -= rimg->width; RReleaseImage(rimg); } if (w != width) { mimg = RGetSubImage(img, x, 0, w, img->height); RBevelImage(mimg, RBEV_RAISED2); if (!RConvertImage(scr->rcontext, mimg, title)) wwarning(_("error rendering image:%s"), RMessageForError(RErrorCode)); RReleaseImage(mimg); } else { RBevelImage(img, RBEV_RAISED2); if (!RConvertImage(scr->rcontext, img, title)) wwarning(_("error rendering image:%s"), RMessageForError(RErrorCode)); } } else { RBevelImage(img, RBEV_RAISED2); if (!RConvertImage(scr->rcontext, img, title)) wwarning(_("error rendering image:%s"), RMessageForError(RErrorCode)); } RReleaseImage(img); } static void renderResizebarTexture(WScreen * scr, WTexture * texture, int width, int height, int cwidth, Pixmap * pmap) { RImage *img; RColor light; RColor dark; *pmap = None; img = wTextureRenderImage(texture, width, height, WREL_FLAT); if (!img) { wwarning(_("could not render texture: %s"), RMessageForError(RErrorCode)); return; } light.alpha = 0; light.red = light.green = light.blue = 80; dark.alpha = 0; dark.red = dark.green = dark.blue = 40; ROperateLine(img, RSubtractOperation, 0, 0, width - 1, 0, &dark); ROperateLine(img, RAddOperation, 0, 1, width - 1, 1, &light); ROperateLine(img, RSubtractOperation, cwidth, 2, cwidth, height - 1, &dark); ROperateLine(img, RAddOperation, cwidth + 1, 2, cwidth + 1, height - 1, &light); if (width > 1) ROperateLine(img, RSubtractOperation, width - cwidth - 2, 2, width - cwidth - 2, height - 1, &dark); ROperateLine(img, RAddOperation, width - cwidth - 1, 2, width - cwidth - 1, height - 1, &light); #ifdef SHADOW_RESIZEBAR ROperateLine(img, RAddOperation, 0, 1, 0, height - 1, &light); ROperateLine(img, RSubtractOperation, width - 1, 1, width - 1, height - 1, &dark); ROperateLine(img, RSubtractOperation, 0, height - 1, width - 1, height - 1, &dark); #endif /* SHADOW_RESIZEBAR */ if (!RConvertImage(scr->rcontext, img, pmap)) wwarning(_("error rendering image: %s"), RMessageForError(RErrorCode)); RReleaseImage(img); } static void updateTexture(WFrameWindow * fwin) { int i; unsigned long pixel; i = fwin->flags.state; if (fwin->titlebar) { if (fwin->title_texture[i]->any.type != WTEX_SOLID) { XSetWindowBackgroundPixmap(dpy, fwin->titlebar->window, fwin->title_back[i]); if (wPreferences.new_style == TS_NEW) { if (fwin->left_button && fwin->lbutton_back[i]) XSetWindowBackgroundPixmap(dpy, fwin->left_button->window, fwin->lbutton_back[i]); #ifdef XKB_BUTTON_HINT if (fwin->language_button && fwin->languagebutton_back[i]) XSetWindowBackgroundPixmap(dpy, fwin->language_button->window, fwin->languagebutton_back[i]); #endif if (fwin->right_button && fwin->rbutton_back[i]) XSetWindowBackgroundPixmap(dpy, fwin->right_button->window, fwin->rbutton_back[i]); } } else { pixel = fwin->title_texture[i]->solid.normal.pixel; XSetWindowBackground(dpy, fwin->titlebar->window, pixel); if (wPreferences.new_style == TS_NEW) { if (fwin->left_button) XSetWindowBackground(dpy, fwin->left_button->window, pixel); #ifdef XKB_BUTTON_HINT if (fwin->language_button) XSetWindowBackground(dpy, fwin->language_button->window, pixel); #endif if (fwin->right_button) XSetWindowBackground(dpy, fwin->right_button->window, pixel); } } XClearWindow(dpy, fwin->titlebar->window); if (fwin->left_button) { XClearWindow(dpy, fwin->left_button->window); handleButtonExpose(&fwin->left_button->descriptor, NULL); } #ifdef XKB_BUTTON_HINT if (fwin->language_button) { XClearWindow(dpy, fwin->language_button->window); handleButtonExpose(&fwin->language_button->descriptor, NULL); } #endif if (fwin->right_button) { XClearWindow(dpy, fwin->right_button->window); handleButtonExpose(&fwin->right_button->descriptor, NULL); } } } static void remakeTexture(WFrameWindow * fwin, int state) { Pixmap pmap, lpmap, rpmap; #ifdef XKB_BUTTON_HINT Pixmap tpmap; #endif if (fwin->title_texture[state] && fwin->titlebar) { FREE_PIXMAP(fwin->title_back[state]); if (wPreferences.new_style == TS_NEW) { FREE_PIXMAP(fwin->lbutton_back[state]); FREE_PIXMAP(fwin->rbutton_back[state]); #ifdef XKB_BUTTON_HINT FREE_PIXMAP(fwin->languagebutton_back[state]); #endif } if (fwin->title_texture[state]->any.type != WTEX_SOLID) { int left, right; int width; #ifdef XKB_BUTTON_HINT int language; #endif /* eventually surrounded by if new_style */ left = fwin->left_button && !fwin->flags.hide_left_button && !fwin->flags.lbutton_dont_fit; #ifdef XKB_BUTTON_HINT language = fwin->language_button && !fwin->flags.hide_language_button && !fwin->flags.languagebutton_dont_fit; #endif right = fwin->right_button && !fwin->flags.hide_right_button && !fwin->flags.rbutton_dont_fit; width = fwin->core->width + 1; #ifdef XKB_BUTTON_HINT renderTexture(fwin->screen_ptr, fwin->title_texture[state], width, fwin->titlebar->height, fwin->titlebar->height, fwin->titlebar->height, left, language, right, &pmap, &lpmap, &tpmap, &rpmap); #else renderTexture(fwin->screen_ptr, fwin->title_texture[state], width, fwin->titlebar->height, fwin->titlebar->height, fwin->titlebar->height, left, right, &pmap, &lpmap, &rpmap); #endif fwin->title_back[state] = pmap; if (wPreferences.new_style == TS_NEW) { fwin->lbutton_back[state] = lpmap; fwin->rbutton_back[state] = rpmap; #ifdef XKB_BUTTON_HINT fwin->languagebutton_back[state] = tpmap; #endif } } } if (fwin->resizebar_texture && fwin->resizebar_texture[0] && fwin->resizebar && state == 0) { FREE_PIXMAP(fwin->resizebar_back[0]); if (fwin->resizebar_texture[0]->any.type != WTEX_SOLID) { renderResizebarTexture(fwin->screen_ptr, fwin->resizebar_texture[0], fwin->resizebar->width, fwin->resizebar->height, fwin->resizebar_corner_width, &pmap); fwin->resizebar_back[0] = pmap; } /* this part should be in updateTexture() */ if (fwin->resizebar_texture[0]->any.type != WTEX_SOLID) XSetWindowBackgroundPixmap(dpy, fwin->resizebar->window, fwin->resizebar_back[0]); else XSetWindowBackground(dpy, fwin->resizebar->window, fwin->resizebar_texture[0]->solid.normal.pixel); XClearWindow(dpy, fwin->resizebar->window); } } void wFrameWindowPaint(WFrameWindow * fwin) { WScreen *scr = fwin->screen_ptr; int state; state = fwin->flags.state; if (fwin->flags.is_client_window_frame) fwin->flags.justification = wPreferences.title_justification; if (fwin->flags.need_texture_remake) { int i; fwin->flags.need_texture_remake = 0; fwin->flags.need_texture_change = 0; if (fwin->flags.single_texture) { remakeTexture(fwin, 0); updateTexture(fwin); } else { /* first render the texture for the current state... */ remakeTexture(fwin, state); /* ... and paint it */ updateTexture(fwin); for (i = 0; i < 3; i++) { if (i != state) remakeTexture(fwin, i); } } } if (fwin->flags.need_texture_change) { fwin->flags.need_texture_change = 0; updateTexture(fwin); } if (fwin->titlebar && !fwin->flags.repaint_only_resizebar && fwin->title_texture[state]->any.type == WTEX_SOLID) { wDrawBevel(fwin->titlebar->window, fwin->titlebar->width, fwin->titlebar->height, (WTexSolid *) fwin->title_texture[state], WREL_RAISED); } if (fwin->resizebar && !fwin->flags.repaint_only_titlebar && fwin->resizebar_texture[0]->any.type == WTEX_SOLID) { Window win; int w, h; int cw; GC light_gc, dim_gc; WTexSolid *texture = (WTexSolid *) fwin->resizebar_texture[0]; w = fwin->resizebar->width; h = fwin->resizebar->height; cw = fwin->resizebar_corner_width; light_gc = texture->light_gc; dim_gc = texture->dim_gc; win = fwin->resizebar->window; XDrawLine(dpy, win, dim_gc, 0, 0, w, 0); XDrawLine(dpy, win, light_gc, 0, 1, w, 1); XDrawLine(dpy, win, dim_gc, cw, 2, cw, h); XDrawLine(dpy, win, light_gc, cw + 1, 2, cw + 1, h); XDrawLine(dpy, win, dim_gc, w - cw - 2, 2, w - cw - 2, h); XDrawLine(dpy, win, light_gc, w - cw - 1, 2, w - cw - 1, h); #ifdef SHADOW_RESIZEBAR XDrawLine(dpy, win, light_gc, 0, 1, 0, h - 1); XDrawLine(dpy, win, dim_gc, w - 1, 2, w - 1, h - 1); XDrawLine(dpy, win, dim_gc, 1, h - 1, cw, h - 1); XDrawLine(dpy, win, dim_gc, cw + 2, h - 1, w - cw - 2, h - 1); XDrawLine(dpy, win, dim_gc, w - cw, h - 1, w - 1, h - 1); #endif /* SHADOW_RESIZEBAR */ } if (fwin->titlebar && !fwin->flags.repaint_only_resizebar) { int x, y, w, h; int lofs = 6, rofs = 6; int titlelen; int allButtons = 1; if (!wPreferences.new_style == TS_NEW) { if (fwin->left_button && !fwin->flags.hide_left_button && !fwin->flags.lbutton_dont_fit) lofs += fwin->left_button->width + 3; else allButtons = 0; #ifdef XKB_BUTTON_HINT if (fwin->language_button && !fwin->flags.hide_language_button && !fwin->flags.languagebutton_dont_fit) lofs += fwin->language_button->width; else allButtons = 0; #endif if (fwin->right_button && !fwin->flags.hide_right_button && !fwin->flags.rbutton_dont_fit) rofs += fwin->right_button->width + 3; else allButtons = 0; } #ifdef XKB_BUTTON_HINT fwin->languagebutton_image = scr->b_pixmaps[WBUT_XKBGROUP1 + fwin->languagemode]; #endif if (fwin->title) { Drawable buf; char *title; title = ShrinkString(*fwin->font, fwin->title, fwin->titlebar->width - lofs - rofs); titlelen = strlen(title); w = WMWidthOfString(*fwin->font, title, titlelen); switch (fwin->flags.justification) { case WTJ_LEFT: x = lofs; break; case WTJ_RIGHT: x = fwin->titlebar->width - w - rofs; break; default: if (!allButtons) x = lofs + (fwin->titlebar->width - w - lofs - rofs) / 2; else x = (fwin->titlebar->width - w) / 2; break; } y = *fwin->title_clearance + TITLEBAR_EXTEND_SPACE; h = WMFontHeight(*fwin->font); if (y*2 + h > *fwin->title_max_height) y = (*fwin->title_max_height - h) / 2; if (y*2 + h < *fwin->title_min_height) y = (*fwin->title_min_height - h) / 2; /* We use a w+2 buffer to have an extra pixel on the left and * another one on the right. This is because for some odd reason, * sometimes when using AA fonts (when libfreetype2 is compiled * with bytecode interpreter turned off), some fonts are drawn * starting from x = -1 not from 0 as requested. Observed with * capital A letter on the bold 'trebuchet ms' font. -Dan */ buf = XCreatePixmap(dpy, fwin->titlebar->window, w + 2, h, scr->w_depth); XSetClipMask(dpy, scr->copy_gc, None); if (fwin->title_texture[state]->any.type != WTEX_SOLID) { XCopyArea(dpy, fwin->title_back[state], buf, scr->copy_gc, x - 1, y, w + 2, h, 0, 0); } else { XSetForeground(dpy, scr->copy_gc, fwin->title_texture[state]->solid.normal.pixel); XFillRectangle(dpy, buf, scr->copy_gc, 0, 0, w + 2, h); } /*XDrawRectangle(dpy, buf, WMColorGC(scr->white),1,0,w,h-1); */ WMDrawString(scr->wmscreen, buf, fwin->title_color[state], *fwin->font, 1, 0, title, titlelen); XCopyArea(dpy, buf, fwin->titlebar->window, scr->copy_gc, 0, 0, w + 2, h, x - 1, y); XFreePixmap(dpy, buf); wfree(title); } if (fwin->left_button) handleButtonExpose(&fwin->left_button->descriptor, NULL); if (fwin->right_button) handleButtonExpose(&fwin->right_button->descriptor, NULL); #ifdef XKB_BUTTON_HINT if (fwin->language_button) handleButtonExpose(&fwin->language_button->descriptor, NULL); #endif } } static void reconfigure(WFrameWindow * fwin, int x, int y, int width, int height, Bool dontMove) { int k = (wPreferences.new_style == TS_NEW ? 4 : 3); int resizedHorizontally = 0; if (dontMove) XResizeWindow(dpy, fwin->core->window, width, height); else XMoveResizeWindow(dpy, fwin->core->window, x, y, width, height); if (fwin->core->width != width) { fwin->flags.need_texture_remake = 1; resizedHorizontally = 1; } fwin->core->width = width; fwin->core->height = height; if (fwin->titlebar && resizedHorizontally) { /* Check if the titlebar is wide enough to hold the buttons. * Temporarily remove them if can't */ if (fwin->left_button) { if (width < fwin->top_width * k && !fwin->flags.lbutton_dont_fit) { if (!fwin->flags.hide_left_button) XUnmapWindow(dpy, fwin->left_button->window); fwin->flags.lbutton_dont_fit = 1; } else if (width >= fwin->top_width * k && fwin->flags.lbutton_dont_fit) { if (!fwin->flags.hide_left_button) XMapWindow(dpy, fwin->left_button->window); fwin->flags.lbutton_dont_fit = 0; } } #ifdef XKB_BUTTON_HINT if (fwin->language_button) { if (width < fwin->top_width * k && !fwin->flags.languagebutton_dont_fit) { if (!fwin->flags.hide_language_button) XUnmapWindow(dpy, fwin->language_button->window); fwin->flags.languagebutton_dont_fit = 1; } else if (width >= fwin->top_width * k && fwin->flags.languagebutton_dont_fit) { if (!fwin->flags.hide_language_button) XMapWindow(dpy, fwin->language_button->window); fwin->flags.languagebutton_dont_fit = 0; } } #endif if (fwin->right_button) { if (width < fwin->top_width * 2 && !fwin->flags.rbutton_dont_fit) { if (!fwin->flags.hide_right_button) XUnmapWindow(dpy, fwin->right_button->window); fwin->flags.rbutton_dont_fit = 1; } else if (width >= fwin->top_width * 2 && fwin->flags.rbutton_dont_fit) { if (!fwin->flags.hide_right_button) XMapWindow(dpy, fwin->right_button->window); fwin->flags.rbutton_dont_fit = 0; } } if (wPreferences.new_style == TS_NEW) { if (fwin->right_button) XMoveWindow(dpy, fwin->right_button->window, width - fwin->right_button->width + 1, 0); } else { if (fwin->right_button) XMoveWindow(dpy, fwin->right_button->window, width - fwin->right_button->width - 3, (fwin->titlebar->height - fwin->right_button->height) / 2); } updateTitlebar(fwin); checkTitleSize(fwin); } if (fwin->resizebar) { wCoreConfigure(fwin->resizebar, 0, fwin->core->height - fwin->resizebar->height, fwin->core->width, fwin->resizebar->height); fwin->resizebar_corner_width = RESIZEBAR_CORNER_WIDTH; if (fwin->core->width < RESIZEBAR_CORNER_WIDTH * 2 + RESIZEBAR_MIN_WIDTH) fwin->resizebar_corner_width = fwin->core->width / 2; } } void wFrameWindowConfigure(WFrameWindow * fwin, int x, int y, int width, int height) { reconfigure(fwin, x, y, width, height, False); } void wFrameWindowResize(WFrameWindow * fwin, int width, int height) { reconfigure(fwin, 0, 0, width, height, True); } int wFrameWindowChangeTitle(WFrameWindow *fwin, const char *new_title) { if (new_title == NULL) return 0; /* check if the title is the same as before */ if (fwin->title) { if (strcmp(fwin->title, new_title) == 0) return 0; } if (fwin->title) wfree(fwin->title); fwin->title = wstrdup(new_title); if (fwin->titlebar) { XClearWindow(dpy, fwin->titlebar->window); wFrameWindowPaint(fwin); } checkTitleSize(fwin); return 1; } #ifdef XKB_BUTTON_HINT void wFrameWindowUpdateLanguageButton(WFrameWindow * fwin) { paintButton(fwin->language_button, fwin->title_texture[fwin->flags.state], WMColorPixel(fwin->title_color[fwin->flags.state]), fwin->languagebutton_image, True); } #endif /* XKB_BUTTON_HINT */ /*********************************************************************/ static void handleExpose(WObjDescriptor * desc, XEvent * event) { WFrameWindow *fwin = (WFrameWindow *) desc->parent; if (fwin->titlebar && fwin->titlebar->window == event->xexpose.window) fwin->flags.repaint_only_titlebar = 1; if (fwin->resizebar && fwin->resizebar->window == event->xexpose.window) fwin->flags.repaint_only_resizebar = 1; wFrameWindowPaint(fwin); fwin->flags.repaint_only_titlebar = 0; fwin->flags.repaint_only_resizebar = 0; } static void checkTitleSize(WFrameWindow * fwin) { int width; if (!fwin->title) { fwin->flags.incomplete_title = 0; return; } if (!fwin->titlebar) { fwin->flags.incomplete_title = 1; return; } else { width = fwin->titlebar->width - 6 - 6; } if (!wPreferences.new_style == TS_NEW) { if (fwin->left_button && !fwin->flags.hide_left_button && !fwin->flags.lbutton_dont_fit) width -= fwin->left_button->width + 3; #ifdef XKB_BUTTON_HINT if (fwin->language_button && !fwin->flags.hide_language_button && !fwin->flags.languagebutton_dont_fit) width -= fwin->language_button->width + 3; #endif if (fwin->right_button && !fwin->flags.hide_right_button && !fwin->flags.rbutton_dont_fit) width -= fwin->right_button->width + 3; } if (WMWidthOfString(*fwin->font, fwin->title, strlen(fwin->title)) > width) fwin->flags.incomplete_title = 1; else fwin->flags.incomplete_title = 0; } static void paintButton(WCoreWindow * button, WTexture * texture, unsigned long color, WPixmap * image, int pushed) { WScreen *scr = button->screen_ptr; GC copy_gc = scr->copy_gc; int x = 0, y = 0, d = 0; int left = 0, width = 0; /* setup stuff according to the state */ if (pushed) { if (image) { if (image->width >= image->height * 2) { /* the image contains 2 pictures: the second is for the * pushed state */ width = image->width / 2; left = image->width / 2; } else { width = image->width; } } XSetClipMask(dpy, copy_gc, None); if (wPreferences.new_style == TS_NEXT) XSetForeground(dpy, copy_gc, scr->black_pixel); else XSetForeground(dpy, copy_gc, scr->white_pixel); d = 1; if (wPreferences.new_style == TS_NEW) { XFillRectangle(dpy, button->window, copy_gc, 0, 0, button->width - 1, button->height - 1); XSetForeground(dpy, copy_gc, scr->black_pixel); XDrawRectangle(dpy, button->window, copy_gc, 0, 0, button->width - 1, button->height - 1); } else if (wPreferences.new_style == TS_OLD) { XFillRectangle(dpy, button->window, copy_gc, 0, 0, button->width, button->height); XSetForeground(dpy, copy_gc, scr->black_pixel); XDrawRectangle(dpy, button->window, copy_gc, 0, 0, button->width, button->height); } else { XFillRectangle(dpy, button->window, copy_gc, 0, 0, button->width-3, button->height-3); XSetForeground(dpy, copy_gc, scr->black_pixel); XDrawRectangle(dpy, button->window, copy_gc, 0, 0, button->width-3, button->height-3); } } else { XClearWindow(dpy, button->window); if (image) { if (image->width >= image->height * 2) width = image->width / 2; else width = image->width; } d = 0; if (wPreferences.new_style == TS_NEW) { if (texture->any.type == WTEX_SOLID || pushed) wDrawBevel(button->window, button->width, button->height, (WTexSolid *) texture, WREL_RAISED); } else { wDrawBevel(button->window, button->width, button->height, scr->widget_texture, WREL_RAISED); } } if (image) { /* display image */ XSetClipMask(dpy, copy_gc, image->mask); x = (button->width - width) / 2 + d; y = (button->height - image->height) / 2 + d; XSetClipOrigin(dpy, copy_gc, x - left, y); if (!wPreferences.new_style == TS_NEW) { XSetForeground(dpy, copy_gc, scr->black_pixel); if (!pushed) { if (image->depth == 1) XCopyPlane(dpy, image->image, button->window, copy_gc, left, 0, width, image->height, x, y, 1); else XCopyArea(dpy, image->image, button->window, copy_gc, left, 0, width, image->height, x, y); } else { if (wPreferences.new_style == TS_OLD) { XSetForeground(dpy, copy_gc, scr->dark_pixel); XFillRectangle(dpy, button->window, copy_gc, 0, 0, button->width, button->height); } else { XSetForeground(dpy, copy_gc, scr->black_pixel); XCopyArea(dpy, image->image, button->window, copy_gc, left, 0, width, image->height, x, y); } } } else { if (pushed) { XSetForeground(dpy, copy_gc, scr->black_pixel); } else { XSetForeground(dpy, copy_gc, color); XSetBackground(dpy, copy_gc, texture->any.color.pixel); } XFillRectangle(dpy, button->window, copy_gc, 0, 0, button->width, button->height); } } } static void handleButtonExpose(WObjDescriptor * desc, XEvent * event) { WFrameWindow *fwin = (WFrameWindow *) desc->parent; WCoreWindow *button = (WCoreWindow *) desc->self; /* Parameter not used, but tell the compiler that it is ok */ (void) event; #ifdef XKB_BUTTON_HINT if (button == fwin->language_button) { if (wPreferences.modelock) paintButton(button, fwin->title_texture[fwin->flags.state], WMColorPixel(fwin->title_color[fwin->flags.state]), fwin->languagebutton_image, False); } else #endif if (button == fwin->left_button) paintButton(button, fwin->title_texture[fwin->flags.state], WMColorPixel(fwin->title_color[fwin->flags.state]), fwin->lbutton_image, False); else paintButton(button, fwin->title_texture[fwin->flags.state], WMColorPixel(fwin->title_color[fwin->flags.state]), fwin->rbutton_image, False); } static void titlebarMouseDown(WObjDescriptor * desc, XEvent * event) { WFrameWindow *fwin = desc->parent; WCoreWindow *titlebar = desc->self; if (IsDoubleClick(fwin->core->screen_ptr, event)) { if (fwin->on_dblclick_titlebar) (*fwin->on_dblclick_titlebar) (titlebar, fwin->child, event); } else { if (fwin->on_mousedown_titlebar) (*fwin->on_mousedown_titlebar) (titlebar, fwin->child, event); } } static void resizebarMouseDown(WObjDescriptor * desc, XEvent * event) { WFrameWindow *fwin = desc->parent; WCoreWindow *resizebar = desc->self; if (fwin->on_mousedown_resizebar) (*fwin->on_mousedown_resizebar) (resizebar, fwin->child, event); } static void buttonMouseDown(WObjDescriptor * desc, XEvent * event) { WFrameWindow *fwin = desc->parent; WCoreWindow *button = desc->self; WPixmap *image; XEvent ev; int done = 0, execute = 1; WTexture *texture; unsigned long pixel; int clickButton = event->xbutton.button; if (IsDoubleClick(fwin->core->screen_ptr, event)) { if (button == fwin->right_button && fwin->on_dblclick_right) (*fwin->on_dblclick_right) (button, fwin->child, event); return; } if (button == fwin->left_button) image = fwin->lbutton_image; else image = fwin->rbutton_image; #ifdef XKB_BUTTON_HINT if (button == fwin->language_button) { if (!wPreferences.modelock) return; image = fwin->languagebutton_image; } #endif pixel = WMColorPixel(fwin->title_color[fwin->flags.state]); texture = fwin->title_texture[fwin->flags.state]; paintButton(button, texture, pixel, image, True); while (!done) { WMMaskEvent(dpy, LeaveWindowMask | EnterWindowMask | ButtonReleaseMask | ButtonPressMask | ExposureMask, &ev); switch (ev.type) { case LeaveNotify: execute = 0; paintButton(button, texture, pixel, image, False); break; case EnterNotify: execute = 1; paintButton(button, texture, pixel, image, True); break; case ButtonPress: break; case ButtonRelease: if (ev.xbutton.button == clickButton) done = 1; break; default: WMHandleEvent(&ev); } } paintButton(button, texture, pixel, image, False); if (execute) { if (button == fwin->left_button) { if (fwin->on_click_left) (*fwin->on_click_left) (button, fwin->child, &ev); } else if (button == fwin->right_button) { if (fwin->on_click_right) (*fwin->on_click_right) (button, fwin->child, &ev); } #ifdef XKB_BUTTON_HINT else if (button == fwin->language_button) { if (fwin->on_click_language) (*fwin->on_click_language) (button, fwin->child, &ev); } #endif } } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/wcore.h����������������������������������������������������������������������0000644�0001750�0001750�00000003301�13431646202�013043� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef WMCORE_H_ #define WMCORE_H_ #include "screen.h" typedef struct WStacking { struct _WCoreWindow *above; struct _WCoreWindow *under; short window_level; struct _WCoreWindow *child_of; /* owner for transient window */ } WStacking; typedef struct _WCoreWindow { Window window; int width; /* size of the window */ int height; WScreen *screen_ptr; /* ptr to screen of the window */ WObjDescriptor descriptor; WStacking *stacking; /* window stacking information */ } WCoreWindow; WCoreWindow *wCoreCreateTopLevel(WScreen *screen, int x, int y, int width, int height, int bwidth, int depth, Visual *visual, Colormap colormap, WMPixel border_pixel); WCoreWindow *wCoreCreate(WCoreWindow *parent, int x, int y, int width, int height); void wCoreDestroy(WCoreWindow *core); void wCoreConfigure(WCoreWindow *core, int req_x, int req_y, int req_w, int req_h); #endif �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/xinerama.h�������������������������������������������������������������������0000644�0001750�0001750�00000003607�13431646202�013541� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2001 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef _WMXINERAMA_H_ #define _WMXINERAMA_H_ #include "appicon.h" #include "screen.h" #include "window.h" #include <WINGs/WINGs.h> void wInitXinerama(WScreen *scr); #define wXineramaHeads(scr) ((scr)->xine_info.count ? (scr)->xine_info.count : 1) #define XFLAG_NONE 0x00 #define XFLAG_DEAD 0x01 #define XFLAG_MULTIPLE 0x02 #define XFLAG_PARTIAL 0x04 enum { DIRECTION_LEFT, DIRECTION_RIGHT, DIRECTION_UP, DIRECTION_DOWN }; int wGetRectPlacementInfo(WScreen *scr, WMRect rect, int *flags); int wGetHeadForRect(WScreen *scr, WMRect rect); int wGetHeadForWindow(WWindow *wwin); int wGetHeadRelativeToCurrentHead(WScreen *scr, int current_head, int direction); int wGetHeadForPoint(WScreen *scr, WMPoint point); int wGetHeadForPointerLocation(WScreen *scr); WMRect wGetRectForHead(WScreen *scr, int head); WArea wGetUsableAreaForHead(WScreen *scr, int head, WArea *totalAreaPtr, Bool noicons); WMPoint wGetPointToCenterRectInHead(WScreen *scr, int head, int width, int height); Bool wWindowTouchesHead(WWindow *wwin, int head); Bool wAppIconTouchesHead(WAppIcon *aicon, int head); #endif �������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/rootmenu.h�������������������������������������������������������������������0000644�0001750�0001750�00000002064�13431646202�013601� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* rootmenu.h- user defined menu * * Window Maker window manager * * Copyright (c) 2000-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef WMROOTMENU_H #define WMROOTMENU_H Bool wRootMenuPerformShortcut(XEvent * event); void wRootMenuBindShortcuts(Window window); void OpenRootMenu(WScreen * scr, int x, int y, int keyboard); #endif /* WMROOTMENU_H */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/icon.c�����������������������������������������������������������������������0000644�0001750�0001750�00000057614�13431646202�012667� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* icon.c - window icon and dock and appicon parent * * Window Maker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "wconfig.h" #include <X11/Xlib.h> #include <X11/Xutil.h> #include <stdlib.h> #include <stdio.h> #include <stdint.h> #include <string.h> #include <unistd.h> #include <ctype.h> #include <wraster.h> #include <sys/stat.h> #include "WindowMaker.h" #include "wcore.h" #include "texture.h" #include "window.h" #include "icon.h" #include "actions.h" #include "stacking.h" #include "application.h" #include "defaults.h" #include "appicon.h" #include "wmspec.h" #include "misc.h" #include "startup.h" #include "event.h" #include "winmenu.h" /**** Global varianebles ****/ #define MOD_MASK wPreferences.modifier_mask #define CACHE_ICON_PATH "/Library/WindowMaker/CachedPixmaps" #define ICON_BORDER 3 static void miniwindowExpose(WObjDescriptor *desc, XEvent *event); static void miniwindowMouseDown(WObjDescriptor *desc, XEvent *event); static void miniwindowDblClick(WObjDescriptor *desc, XEvent *event); static WIcon *icon_create_core(WScreen *scr, int coord_x, int coord_y); static void set_dockapp_in_icon(WIcon *icon); static void get_rimage_icon_from_icon_win(WIcon *icon); static void get_rimage_icon_from_user_icon(WIcon *icon); static void get_rimage_icon_from_default_icon(WIcon *icon); static void get_rimage_icon_from_x11(WIcon *icon); static void icon_update_pixmap(WIcon *icon, RImage *image); static void unset_icon_image(WIcon *icon); /****** Notification Observers ******/ static void appearanceObserver(void *self, WMNotification *notif) { WIcon *icon = (WIcon *) self; uintptr_t flags = (uintptr_t)WMGetNotificationClientData(notif); if ((flags & WTextureSettings) || (flags & WFontSettings)) { /* If the rimage exists, update the icon, else create it */ if (icon->file_image) update_icon_pixmap(icon); else wIconPaint(icon); } /* so that the appicon expose handlers will paint the appicon specific * stuff */ XClearArea(dpy, icon->core->window, 0, 0, icon->core->width, icon->core->height, True); } static void tileObserver(void *self, WMNotification *notif) { WIcon *icon = (WIcon *) self; /* Parameter not used, but tell the compiler that it is ok */ (void) notif; update_icon_pixmap(icon); XClearArea(dpy, icon->core->window, 0, 0, 1, 1, True); } /************************************/ static int getSize(Drawable d, unsigned int *w, unsigned int *h, unsigned int *dep) { Window rjunk; int xjunk, yjunk; unsigned int bjunk; return XGetGeometry(dpy, d, &rjunk, &xjunk, &yjunk, w, h, &bjunk, dep); } WIcon *icon_create_for_wwindow(WWindow *wwin) { WScreen *scr = wwin->screen_ptr; WIcon *icon; icon = icon_create_core(scr, wwin->icon_x, wwin->icon_y); icon->owner = wwin; if (wwin->wm_hints && (wwin->wm_hints->flags & IconWindowHint)) { if (wwin->client_win == wwin->main_window) { WApplication *wapp; /* do not let miniwindow steal app-icon's icon window */ wapp = wApplicationOf(wwin->client_win); if (!wapp || wapp->app_icon == NULL) icon->icon_win = wwin->wm_hints->icon_window; } else { icon->icon_win = wwin->wm_hints->icon_window; } } #ifdef NO_MINIWINDOW_TITLES icon->show_title = 0; #else icon->show_title = 1; #endif wIconChangeTitle(icon, wwin); icon->tile_type = TILE_NORMAL; set_icon_image_from_database(icon, wwin->wm_instance, wwin->wm_class, NULL); /* Update the icon, because icon could be NULL */ wIconUpdate(icon); WMAddNotificationObserver(appearanceObserver, icon, WNIconAppearanceSettingsChanged, icon); WMAddNotificationObserver(tileObserver, icon, WNIconTileSettingsChanged, icon); return icon; } WIcon *icon_create_for_dock(WScreen *scr, const char *command, const char *wm_instance, const char *wm_class, int tile) { WIcon *icon; icon = icon_create_core(scr, 0, 0); icon->tile_type = tile; set_icon_image_from_database(icon, wm_instance, wm_class, command); /* Update the icon, because icon could be NULL */ wIconUpdate(icon); WMAddNotificationObserver(appearanceObserver, icon, WNIconAppearanceSettingsChanged, icon); WMAddNotificationObserver(tileObserver, icon, WNIconTileSettingsChanged, icon); return icon; } static WIcon *icon_create_core(WScreen *scr, int coord_x, int coord_y) { WIcon *icon; icon = wmalloc(sizeof(WIcon)); icon->core = wCoreCreateTopLevel(scr, coord_x, coord_y, wPreferences.icon_size, wPreferences.icon_size, 0, scr->w_depth, scr->w_visual, scr->w_colormap, scr->white_pixel); /* will be overriden if this is a application icon */ icon->core->descriptor.handle_mousedown = miniwindowMouseDown; icon->core->descriptor.handle_expose = miniwindowExpose; icon->core->descriptor.parent_type = WCLASS_MINIWINDOW; icon->core->descriptor.parent = icon; icon->core->stacking = wmalloc(sizeof(WStacking)); icon->core->stacking->above = NULL; icon->core->stacking->under = NULL; icon->core->stacking->window_level = NORMAL_ICON_LEVEL; icon->core->stacking->child_of = NULL; /* Icon image */ icon->file = NULL; icon->file_image = NULL; return icon; } void wIconDestroy(WIcon *icon) { WCoreWindow *core = icon->core; WScreen *scr = core->screen_ptr; WMRemoveNotificationObserver(icon); if (icon->handlerID) WMDeleteTimerHandler(icon->handlerID); if (icon->icon_win) { int x = 0, y = 0; if (icon->owner) { x = icon->owner->icon_x; y = icon->owner->icon_y; } XUnmapWindow(dpy, icon->icon_win); XReparentWindow(dpy, icon->icon_win, scr->root_win, x, y); } if (icon->icon_name) XFree(icon->icon_name); if (icon->pixmap) XFreePixmap(dpy, icon->pixmap); if (icon->mini_preview) XFreePixmap(dpy, icon->mini_preview); unset_icon_image(icon); wCoreDestroy(icon->core); wfree(icon); } static void drawIconTitleBackground(WScreen *scr, Pixmap pixmap, int height) { XFillRectangle(dpy, pixmap, scr->icon_title_texture->normal_gc, 0, 0, wPreferences.icon_size, height + 1); XDrawLine(dpy, pixmap, scr->icon_title_texture->light_gc, 0, 0, wPreferences.icon_size, 0); XDrawLine(dpy, pixmap, scr->icon_title_texture->light_gc, 0, 0, 0, height + 1); XDrawLine(dpy, pixmap, scr->icon_title_texture->dim_gc, wPreferences.icon_size - 1, 0, wPreferences.icon_size - 1, height + 1); } static void icon_update_pixmap(WIcon *icon, RImage *image) { RImage *tile; Pixmap pixmap; int x, y, sx, sy; unsigned w, h; int theight = 0; WScreen *scr = icon->core->screen_ptr; switch (icon->tile_type) { case TILE_NORMAL: tile = RCloneImage(scr->icon_tile); break; case TILE_CLIP: tile = RCloneImage(scr->clip_tile); break; case TILE_DRAWER: tile = RCloneImage(scr->drawer_tile); break; default: /* * The icon has always rigth value, this case is * only to avoid a compiler warning with "tile" * "may be used uninitialized" */ wwarning("Unknown tile type: %d.\n", icon->tile_type); tile = RCloneImage(scr->icon_tile); } if (image) { w = (image->width > wPreferences.icon_size) ? wPreferences.icon_size : image->width; x = (wPreferences.icon_size - w) / 2; sx = (image->width - w) / 2; if (icon->show_title) theight = WMFontHeight(scr->icon_title_font); h = (image->height + theight > wPreferences.icon_size ? wPreferences.icon_size - theight : image->height); y = theight + (wPreferences.icon_size - theight - h) / 2; sy = (image->height - h) / 2; RCombineArea(tile, image, sx, sy, w, h, x, y); } if (icon->shadowed) { RColor color; color.red = scr->icon_back_texture->light.red >> 8; color.green = scr->icon_back_texture->light.green >> 8; color.blue = scr->icon_back_texture->light.blue >> 8; color.alpha = 150; /* about 60% */ RClearImage(tile, &color); } if (icon->highlighted) { RColor color; color.red = color.green = color.blue = 0; color.alpha = 160; RLightImage(tile, &color); } if (!RConvertImage(scr->rcontext, tile, &pixmap)) wwarning(_("error rendering image:%s"), RMessageForError(RErrorCode)); RReleaseImage(tile); /* Draw the icon's title background (without text) */ if (icon->show_title) drawIconTitleBackground(scr, pixmap, theight); icon->pixmap = pixmap; } void wIconChangeTitle(WIcon *icon, WWindow *wwin) { if (!icon || !wwin) return; /* Remove the previous icon title */ if (icon->icon_name != NULL) XFree(icon->icon_name); /* Set the new one, using two methods to identify the icon name or switch back to window name */ icon->icon_name = wNETWMGetIconName(wwin->client_win); if (!icon->icon_name) if (!wGetIconName(dpy, wwin->client_win, &icon->icon_name)) icon->icon_name = wNETWMGetWindowName(wwin->client_win); } RImage *wIconValidateIconSize(RImage *icon, int max_size) { RImage *nimage; if (!icon) return NULL; /* We should hold "ICON_BORDER" (~2) pixels to include the icon border */ if (((max_size + ICON_BORDER) < icon->width) || ((max_size + ICON_BORDER) < icon->height)) { if (icon->width > icon->height) nimage = RScaleImage(icon, max_size - ICON_BORDER, (icon->height * (max_size - ICON_BORDER) / icon->width)); else nimage = RScaleImage(icon, (icon->width * (max_size - ICON_BORDER) / icon->height), max_size - ICON_BORDER); RReleaseImage(icon); icon = nimage; } return icon; } int wIconChangeImageFile(WIcon *icon, const char *file) { WScreen *scr = icon->core->screen_ptr; char *path; RImage *image = NULL; /* If no new image, don't do nothing */ if (!file) return 1; /* Find the new image */ path = FindImage(wPreferences.icon_path, file); if (!path) return 0; image = get_rimage_from_file(scr, path, wPreferences.icon_size); if (!image) { wfree(path); return 0; } /* Set the new image */ set_icon_image_from_image(icon, image); icon->file = wstrdup(path); update_icon_pixmap(icon); wfree(path); return 1; } static char *get_name_for_wwin(WWindow *wwin) { return get_name_for_instance_class(wwin->wm_instance, wwin->wm_class); } char *get_name_for_instance_class(const char *wm_instance, const char *wm_class) { char *suffix; int len; if (wm_class && wm_instance) { len = strlen(wm_class) + strlen(wm_instance) + 2; suffix = wmalloc(len); snprintf(suffix, len, "%s.%s", wm_instance, wm_class); } else if (wm_class) { len = strlen(wm_class) + 1; suffix = wmalloc(len); snprintf(suffix, len, "%s", wm_class); } else if (wm_instance) { len = strlen(wm_instance) + 1; suffix = wmalloc(len); snprintf(suffix, len, "%s", wm_instance); } else { return NULL; } return suffix; } static char *get_icon_cache_path(void) { const char *prefix; char *path; int len, ret; prefix = wusergnusteppath(); len = strlen(prefix) + strlen(CACHE_ICON_PATH) + 2; path = wmalloc(len); snprintf(path, len, "%s%s/", prefix, CACHE_ICON_PATH); /* If the folder exists, exit */ if (access(path, F_OK) == 0) return path; /* Create the folder */ ret = wmkdirhier((const char *) path); /* Exit 1 on success, 0 on failure */ if (ret == 1) return path; /* Fail */ wfree(path); return NULL; } static RImage *get_wwindow_image_from_wmhints(WWindow *wwin, WIcon *icon) { RImage *image = NULL; XWMHints *hints = wwin->wm_hints; if (hints && (hints->flags & IconPixmapHint) && hints->icon_pixmap != None) image = RCreateImageFromDrawable(icon->core->screen_ptr->rcontext, hints->icon_pixmap, (hints->flags & IconMaskHint) ? hints->icon_mask : None); return image; } /* * wIconStore-- * Stores the client supplied icon at CACHE_ICON_PATH * and returns the path for that icon. Returns NULL if there is no * client supplied icon or on failure. * * Side effects: * New directories might be created. */ char *wIconStore(WIcon *icon) { char *path, *dir_path, *file, *filename; int len = 0; RImage *image = NULL; WWindow *wwin = icon->owner; if (!wwin) return NULL; dir_path = get_icon_cache_path(); if (!dir_path) return NULL; file = get_name_for_wwin(wwin); if (!file) { wfree(dir_path); return NULL; } /* Create the file name */ len = strlen(file) + 5; filename = wmalloc(len); snprintf(filename, len, "%s.xpm", file); wfree(file); /* Create the full path, including the filename */ len = strlen(dir_path) + strlen(filename) + 1; path = wmalloc(len); snprintf(path, len, "%s%s", dir_path, filename); wfree(dir_path); /* If icon exists, exit */ if (access(path, F_OK) == 0) { wfree(path); return filename; } if (wwin->net_icon_image) image = RRetainImage(wwin->net_icon_image); else image = get_wwindow_image_from_wmhints(wwin, icon); if (!image) { wfree(path); wfree(filename); return NULL; } if (!RSaveImage(image, path, "XPM")) { wfree(path); wfree(filename); path = NULL; } wfree(path); RReleaseImage(image); return filename; } void remove_cache_icon(char *filename) { char *cachepath; if (!filename) return; cachepath = get_icon_cache_path(); if (!cachepath) return; /* Filename check/parse could be here */ if (!strncmp(filename, cachepath, strlen(cachepath))) unlink(filename); wfree(cachepath); } static void cycleColor(void *data) { WIcon *icon = (WIcon *) data; WScreen *scr = icon->core->screen_ptr; XGCValues gcv; icon->step--; gcv.dash_offset = icon->step; XChangeGC(dpy, scr->icon_select_gc, GCDashOffset, &gcv); XDrawRectangle(dpy, icon->core->window, scr->icon_select_gc, 0, 0, icon->core->width - 1, icon->core->height - 1); icon->handlerID = WMAddTimerHandler(COLOR_CYCLE_DELAY, cycleColor, icon); } void wIconSetHighlited(WIcon *icon, Bool flag) { if (icon->highlighted == flag) return; icon->highlighted = flag; update_icon_pixmap(icon); } void wIconSelect(WIcon *icon) { WScreen *scr = icon->core->screen_ptr; icon->selected = !icon->selected; if (icon->selected) { icon->step = 0; if (!wPreferences.dont_blink) icon->handlerID = WMAddTimerHandler(10, cycleColor, icon); else XDrawRectangle(dpy, icon->core->window, scr->icon_select_gc, 0, 0, icon->core->width - 1, icon->core->height - 1); } else { if (icon->handlerID) { WMDeleteTimerHandler(icon->handlerID); icon->handlerID = NULL; } XClearArea(dpy, icon->core->window, 0, 0, icon->core->width, icon->core->height, True); } } static void unset_icon_image(WIcon *icon) { if (icon->file) { wfree(icon->file); icon->file = NULL; } if (icon->file_image) { RReleaseImage(icon->file_image); icon->file_image = NULL; } } void set_icon_image_from_image(WIcon *icon, RImage *image) { if (!icon) return; unset_icon_image(icon); icon->file_image = NULL; icon->file_image = image; } void set_icon_minipreview(WIcon *icon, RImage *image) { Pixmap tmp; RImage *scaled_mini_preview; WScreen *scr = icon->core->screen_ptr; scaled_mini_preview = RSmoothScaleImage(image, wPreferences.minipreview_size - 2 * MINIPREVIEW_BORDER, wPreferences.minipreview_size - 2 * MINIPREVIEW_BORDER); if (RConvertImage(scr->rcontext, scaled_mini_preview, &tmp)) { if (icon->mini_preview != None) XFreePixmap(dpy, icon->mini_preview); icon->mini_preview = tmp; } RReleaseImage(scaled_mini_preview); } void wIconUpdate(WIcon *icon) { WWindow *wwin = NULL; if (icon && icon->owner) wwin = icon->owner; if (wwin && WFLAGP(wwin, always_user_icon)) { /* Forced use user_icon */ get_rimage_icon_from_user_icon(icon); } else if (icon->icon_win != None) { /* Get the Pixmap from the WIcon */ get_rimage_icon_from_icon_win(icon); } else if (wwin && wwin->net_icon_image) { /* Use _NET_WM_ICON icon */ get_rimage_icon_from_x11(icon); } else if (wwin && wwin->wm_hints && (wwin->wm_hints->flags & IconPixmapHint)) { /* Get the Pixmap from the wm_hints, else, from the user */ unset_icon_image(icon); icon->file_image = get_rimage_icon_from_wm_hints(icon); if (!icon->file_image) get_rimage_icon_from_user_icon(icon); } else { /* Get the Pixmap from the user */ get_rimage_icon_from_user_icon(icon); } update_icon_pixmap(icon); } void update_icon_pixmap(WIcon *icon) { if (icon->pixmap != None) XFreePixmap(dpy, icon->pixmap); icon->pixmap = None; /* Create the pixmap */ if (icon->file_image) icon_update_pixmap(icon, icon->file_image); /* If dockapp, put inside the icon */ if (icon->icon_win != None) { /* file_image is NULL, because is docked app */ icon_update_pixmap(icon, NULL); set_dockapp_in_icon(icon); } /* No pixmap, set default background */ if (icon->pixmap != None) XSetWindowBackgroundPixmap(dpy, icon->core->window, icon->pixmap); /* Paint it */ wIconPaint(icon); } static void get_rimage_icon_from_x11(WIcon *icon) { /* Remove the icon image */ unset_icon_image(icon); /* Set the new icon image */ icon->file_image = RRetainImage(icon->owner->net_icon_image); } static void get_rimage_icon_from_user_icon(WIcon *icon) { if (icon->file_image) return; get_rimage_icon_from_default_icon(icon); } static void get_rimage_icon_from_default_icon(WIcon *icon) { WScreen *scr = icon->core->screen_ptr; /* If the icon don't have image, we should use the default image. */ if (!scr->def_icon_rimage) scr->def_icon_rimage = get_default_image(scr); /* Remove the icon image */ unset_icon_image(icon); /* Set the new icon image */ icon->file_image = RRetainImage(scr->def_icon_rimage); } /* Get the RImage from the WIcon of the WWindow */ static void get_rimage_icon_from_icon_win(WIcon *icon) { RImage *image; /* Create the new RImage */ image = get_window_image_from_x11(icon->icon_win); /* Free the icon info */ unset_icon_image(icon); /* Set the new info */ icon->file_image = image; } /* Set the dockapp in the WIcon */ static void set_dockapp_in_icon(WIcon *icon) { XWindowAttributes attr; WScreen *scr = icon->core->screen_ptr; unsigned int w, h, d; /* Reparent the dock application to the icon */ /* We need the application size to center it * and show in the correct position */ getSize(icon->icon_win, &w, &h, &d); /* Set the background pixmap */ XSetWindowBackgroundPixmap(dpy, icon->core->window, scr->icon_tile_pixmap); /* Set the icon border */ XSetWindowBorderWidth(dpy, icon->icon_win, 0); /* Put the dock application in the icon */ XReparentWindow(dpy, icon->icon_win, icon->core->window, (wPreferences.icon_size - w) / 2, (wPreferences.icon_size - h) / 2); /* Show it and save */ XMapWindow(dpy, icon->icon_win); XAddToSaveSet(dpy, icon->icon_win); /* Needed to move the icon clicking on the application part */ if ((XGetWindowAttributes(dpy, icon->icon_win, &attr)) && (attr.all_event_masks & ButtonPressMask)) wHackedGrabButton(Button1, MOD_MASK, icon->core->window, True, ButtonPressMask, GrabModeSync, GrabModeAsync, None, wPreferences.cursor[WCUR_ARROW]); } /* Get the RImage from the XWindow wm_hints */ RImage *get_rimage_icon_from_wm_hints(WIcon *icon) { RImage *image = NULL; unsigned int w, h, d; WWindow *wwin; if ((!icon) || (!icon->owner)) return NULL; wwin = icon->owner; if (!getSize(wwin->wm_hints->icon_pixmap, &w, &h, &d)) { icon->owner->wm_hints->flags &= ~IconPixmapHint; return NULL; } image = get_wwindow_image_from_wmhints(wwin, icon); if (!image) return NULL; /* Resize the icon to the wPreferences.icon_size size */ image = wIconValidateIconSize(image, wPreferences.icon_size); return image; } /* This function updates in the screen the icon title */ static void update_icon_title(WIcon *icon) { WScreen *scr = icon->core->screen_ptr; int x, l, w; char *tmp; /* draw the icon title */ if (icon->show_title && icon->icon_name != NULL) { tmp = ShrinkString(scr->icon_title_font, icon->icon_name, wPreferences.icon_size - 4); w = WMWidthOfString(scr->icon_title_font, tmp, l = strlen(tmp)); if (w > icon->core->width - 4) x = (icon->core->width - 4) - w; else x = (icon->core->width - w) / 2; WMDrawString(scr->wmscreen, icon->core->window, scr->icon_title_color, scr->icon_title_font, x, 1, tmp, l); wfree(tmp); } } void wIconPaint(WIcon *icon) { if (!icon || !icon->core || !icon->core->screen_ptr) return; WScreen *scr = icon->core->screen_ptr; XClearWindow(dpy, icon->core->window); update_icon_title(icon); if (icon->selected) XDrawRectangle(dpy, icon->core->window, scr->icon_select_gc, 0, 0, icon->core->width - 1, icon->core->height - 1); } /******************************************************************/ static void miniwindowExpose(WObjDescriptor *desc, XEvent *event) { /* Parameter not used, but tell the compiler that it is ok */ (void) event; wIconPaint(desc->parent); } static void miniwindowDblClick(WObjDescriptor *desc, XEvent *event) { WIcon *icon = desc->parent; /* Parameter not used, but tell the compiler that it is ok */ (void) event; assert(icon->owner != NULL); wDeiconifyWindow(icon->owner); } static void miniwindowMouseDown(WObjDescriptor *desc, XEvent *event) { WIcon *icon = desc->parent; WWindow *wwin = icon->owner; XEvent ev; int x = wwin->icon_x, y = wwin->icon_y; int dx = event->xbutton.x, dy = event->xbutton.y; int grabbed = 0; int clickButton = event->xbutton.button; Bool hasMoved = False; if (WCHECK_STATE(WSTATE_MODAL)) return; if (IsDoubleClick(icon->core->screen_ptr, event)) { miniwindowDblClick(desc, event); return; } if (event->xbutton.button == Button1) { if (event->xbutton.state & MOD_MASK) wLowerFrame(icon->core); else wRaiseFrame(icon->core); if (event->xbutton.state & ShiftMask) { wIconSelect(icon); wSelectWindow(icon->owner, !wwin->flags.selected); } } else if (event->xbutton.button == Button3) { WObjDescriptor *desc; OpenMiniwindowMenu(wwin, event->xbutton.x_root, event->xbutton.y_root); /* allow drag select of menu */ desc = &wwin->screen_ptr->window_menu->menu->descriptor; event->xbutton.send_event = True; (*desc->handle_mousedown) (desc, event); return; } if (XGrabPointer(dpy, icon->core->window, False, ButtonMotionMask | ButtonReleaseMask | ButtonPressMask, GrabModeAsync, GrabModeAsync, None, None, CurrentTime) != GrabSuccess) { } while (1) { WMMaskEvent(dpy, PointerMotionMask | ButtonReleaseMask | ButtonPressMask | ButtonMotionMask | ExposureMask, &ev); switch (ev.type) { case Expose: WMHandleEvent(&ev); break; case MotionNotify: hasMoved = True; if (!grabbed) { if (abs(dx - ev.xmotion.x) >= MOVE_THRESHOLD || abs(dy - ev.xmotion.y) >= MOVE_THRESHOLD) { XChangeActivePointerGrab(dpy, ButtonMotionMask | ButtonReleaseMask | ButtonPressMask, wPreferences.cursor[WCUR_MOVE], CurrentTime); grabbed = 1; } else { break; } } x = ev.xmotion.x_root - dx; y = ev.xmotion.y_root - dy; XMoveWindow(dpy, icon->core->window, x, y); break; case ButtonPress: break; case ButtonRelease: if (ev.xbutton.button != clickButton) break; if (wwin->icon_x != x || wwin->icon_y != y) wwin->flags.icon_moved = 1; XMoveWindow(dpy, icon->core->window, x, y); wwin->icon_x = x; wwin->icon_y = y; XUngrabPointer(dpy, CurrentTime); if (wPreferences.auto_arrange_icons) wArrangeIcons(wwin->screen_ptr, True); if (wPreferences.single_click && !hasMoved) miniwindowDblClick(desc, event); return; } } } void set_icon_image_from_database(WIcon *icon, const char *wm_instance, const char *wm_class, const char *command) { char *file = NULL; file = get_icon_filename(wm_instance, wm_class, command, False); if (file) { icon->file = wstrdup(file); icon->file_image = get_rimage_from_file(icon->core->screen_ptr, icon->file, wPreferences.icon_size); wfree(file); } } ��������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/xmodifier.h������������������������������������������������������������������0000644�0001750�0001750�00000002005�13431646202�013712� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* xmodifier.h * * Sudish Joseph <sj@vild.mindspring.com>, Sept. 1997 * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef _XMODIFIER_H_INCLUDED #define _XMODIFIER_H_INCLUDED void wXModifierInitialize(void); int wXModifierFromKey(const char *key); const char *wXModifierToShortcutLabel(int mask); #endif /* _XMODIFIER_H_INCLUDED */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/wconfig.h��������������������������������������������������������������������0000644�0001750�0001750�00000030034�13642360103�013360� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * wconfig.h- default configuration and definitions + compile time options * * WindowMaker window manager * * Copyright (c) 1997-2003 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., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301, USA. */ #ifndef WMCONFIG_H_ #define WMCONFIG_H_ #include "config.h" /*** Change this file (wconfig.h) *after* you ran configure ***/ /* * Comment out the following #defines if you want to disable a feature. * Also check the features you can enable through configure. */ /* * Undefine BALLOON_TEXT if you don't want balloons for showing extra * information, like window titles that are not fully visible. */ #define BALLOON_TEXT /* * If balloons should be shaped or be simple rectangles. * The X server must support the shape extensions and it's support * must be enabled (default). */ #define SHAPED_BALLOON /* * Turn on a hack to make mouse and keyboard actions work even if * the NumLock or ScrollLock modifiers are turned on. They might * inflict a performance/memory penalty. * * If you're an X expert (knows the implementation of XGrabKey() in X) * and knows that the penalty is small (or not), please tell me. */ #define NUMLOCK_HACK /* * define OPTIMIZE_SHAPE if you want the shape setting code to be optimized * for applications that change their shape frequently (like xdaliclock * -shape), removing flickering. If wmaker and your display are on * different machines and the network connection is slow, it is not * recommended. */ #undef OPTIMIZE_SHAPE /* define CONFIGURE_WINDOW_WHILE_MOVING if you want WindowMaker to send * the synthetic ConfigureNotify event to windows while moving at every * single movement. Default is to send a synthetic ConfigureNotify event * only at the end of window moving, which improves performance. */ #undef CONFIGURE_WINDOW_WHILE_MOVING /* disable/enable workspace indicator in the dock */ #undef WS_INDICATOR /* * define HIDDENDOT if you want a dot to be shown in the application icon * of applications that are hidden. */ #define HIDDENDOT /* * Ignores the PPosition hint from clients. This is needed for some * programs that have buggy implementations of such hint and place * themselves in strange locations. */ #undef IGNORE_PPOSITION /* * The following options WILL NOT BE MADE RUN-TIME. Please do not request. * They will only add unneeded bloat. */ /* * define SHADOW_RESIZEBAR if you want a resizebar with shadows like in * AfterStep, instead of the default Openstep look. * NEXTSTEP 3.3 also does not have these shadows. */ #undef SHADOW_RESIZEBAR #define NORMAL_ICON_KABOOM /* * #define if you want the window creation animation when superfluous * is enabled. */ #undef WINDOW_BIRTH_ZOOM /* * Some of the following options can be configured in the preference files, * but if for some reason they can't, these are their defaults. * * There are also some options that can only be configured here, at compile time. */ /* list of paths to look for the config files, searched in order of appearance */ #define DEF_CONFIG_PATHS "~/GNUstep/Library/WindowMaker:"PKGDATADIR #define DEF_MENU_FILE "menu" /* name of the script to execute at startup */ #define DEF_INIT_SCRIPT "autostart" #define DEF_EXIT_SCRIPT "exitscript" #define DEFAULTS_DIR "Defaults" #ifdef USE_TIFF #define DEF_BUTTON_IMAGES PKGDATADIR"/buttons.tiff" #else #define DEF_BUTTON_IMAGES PKGDATADIR"/buttons.xpm" #endif /* the file of the system wide submenu to be forced into the main menu */ #define GLOBAL_PREAMBLE_MENU_FILE "GlobalMenu.pre" #define GLOBAL_EPILOGUE_MENU_FILE "GlobalMenu.post" /* pixmap path */ #define DEF_PIXMAP_PATHS \ "(" \ "\"~/GNUstep/Library/WindowMaker/Pixmaps\"," \ "\"~/GNUstep/Library/WindowMaker/Backgrounds\"," \ "\"~/GNUstep/Library/WindowMaker/CachedPixmaps\"," \ "\"~/pixmaps\"," \ "\""PKGDATADIR"/Pixmaps\"," \ "\""PKGDATADIR"/Backgrounds\"," \ "\""PIXMAPDIR"\"" \ ")" #ifdef USER_MENU #define GLOBAL_USER_MENU_PATH PKGDATADIR"/UserMenus" #define DEF_USER_MENU_PATHS \ "~/GNUstep/Library/WindowMaker/UserMenus:"GLOBAL_USER_MENU_PATH #endif /* icon path */ #define DEF_ICON_PATHS \ "(" \ "\"~/GNUstep/Library/Icons\"," \ "\"~/GNUstep/Library/WindowMaker/Pixmaps\"," \ "\"~/GNUstep/Library/WindowMaker/CachedPixmaps\"," \ "\"~/pixmaps\"," \ "\""PKGDATADIR"/Icons\"," \ "\""PKGDATADIR"/Pixmaps\"," \ "\""PIXMAPDIR"\"" \ ")" /* window title to use for untitled windows */ #define DEF_WINDOW_TITLE "Untitled" /* default style */ #define DEF_FRAME_COLOR "white" /* default fonts */ #define DEF_TITLE_FONT "\"Sans:bold:pixelsize=12\"" #define DEF_MENU_TITLE_FONT "\"Sans:bold:pixelsize=12\"" #define DEF_MENU_ENTRY_FONT "\"Sans:pixelsize=12\"" #define DEF_ICON_TITLE_FONT "\"Sans:pixelsize=9\"" #define DEF_CLIP_TITLE_FONT "\"Sans:bold:pixelsize=10\"" #define DEF_WORKSPACE_NAME_FONT "\"Sans:pixelsize=24\"" /* line width of the move/resize frame */ #define DEF_FRAME_THICKNESS 1 #define DEF_WINDOW_TITLE_EXTEND_SPACE "0" #define DEF_MENU_TITLE_EXTEND_SPACE "0" #define DEF_MENU_TEXT_EXTEND_SPACE "0" #define TITLEBAR_EXTEND_SPACE 4 #define DEF_XPM_CLOSENESS 40000 /* default position of application menus */ #define DEF_APPMENU_X 10 #define DEF_APPMENU_Y 10 /* calculate window edge resistance from edge resistance */ #define WIN_RESISTANCE(x) (((x)*20)/30) /* Window level where icons reside */ #define NORMAL_ICON_LEVEL WMNormalLevel /* do not divide main menu and submenu in different tiers, * opposed to OpenStep */ #define SINGLE_MENULEVEL /* max. time to spend doing animations in seconds. If the animation * time exceeds this value, it is immediately finished. Useful for * moments of high-load. DO NOT set *_DELAY_{Z,T,F} to zero! */ #define MAX_ANIMATION_TIME 1 /* Zoom animation */ #define MINIATURIZE_ANIMATION_FRAMES_Z 7 #define MINIATURIZE_ANIMATION_STEPS_Z 16 #define MINIATURIZE_ANIMATION_DELAY_Z 10000 /* Twist animation */ #define MINIATURIZE_ANIMATION_FRAMES_T 12 #define MINIATURIZE_ANIMATION_STEPS_T 16 #define MINIATURIZE_ANIMATION_DELAY_T 20000 #define MINIATURIZE_ANIMATION_TWIST_T 0.5 /* Flip animation */ #define MINIATURIZE_ANIMATION_FRAMES_F 12 #define MINIATURIZE_ANIMATION_STEPS_F 16 #define MINIATURIZE_ANIMATION_DELAY_F 20000 #define MINIATURIZE_ANIMATION_TWIST_F 0.5 /* delays in ms...*/ #define BALLOON_DELAY 1000 /* ...before balloon is shown */ #define MENU_SELECT_DELAY 200 /* ...for menu item selection hysteresis */ #define MENU_JUMP_BACK_DELAY 400 /* ...for jumpback of scrolled menus */ /* animation speed constants */ #define ICON_SLIDE_SLOWDOWN_UF 1 #define ICON_SLIDE_DELAY_UF 0 #define ICON_SLIDE_STEPS_UF 50 #define ICON_SLIDE_SLOWDOWN_F 3 #define ICON_SLIDE_DELAY_F 0 #define ICON_SLIDE_STEPS_F 50 #define ICON_SLIDE_SLOWDOWN_M 5 #define ICON_SLIDE_DELAY_M 0 #define ICON_SLIDE_STEPS_M 30 #define ICON_SLIDE_SLOWDOWN_S 10 #define ICON_SLIDE_DELAY_S 0 #define ICON_SLIDE_STEPS_S 20 #define ICON_SLIDE_SLOWDOWN_US 20 #define ICON_SLIDE_DELAY_US 1 #define ICON_SLIDE_STEPS_US 10 /* menu scrolling */ #define MENU_SCROLL_STEPS_UF 14 #define MENU_SCROLL_DELAY_UF 1 #define MENU_SCROLL_STEPS_F 10 #define MENU_SCROLL_DELAY_F 5 #define MENU_SCROLL_STEPS_M 6 #define MENU_SCROLL_DELAY_M 5 #define MENU_SCROLL_STEPS_S 4 #define MENU_SCROLL_DELAY_S 6 #define MENU_SCROLL_STEPS_US 1 #define MENU_SCROLL_DELAY_US 8 /* shade animation */ #define SHADE_STEPS_UF 5 #define SHADE_DELAY_UF 0 #define SHADE_STEPS_F 10 #define SHADE_DELAY_F 0 #define SHADE_STEPS_M 15 #define SHADE_DELAY_M 0 #define SHADE_STEPS_S 30 #define SHADE_DELAY_S 0 #define SHADE_STEPS_US 40 #define SHADE_DELAY_US 10 /* workspace name on switch display */ #define WORKSPACE_NAME_FADE_DELAY 30 #define WORKSPACE_NAME_DELAY 400 /* Delay when cycling colors of selected icons. */ #define COLOR_CYCLE_DELAY 200 /* size of the pieces in the undocked icon explosion */ #define ICON_KABOOM_PIECE_SIZE 4 /* * Position increment for smart placement: >= 1 * Raise these values if it's too slow for you */ #define PLACETEST_HSTEP 8 #define PLACETEST_VSTEP 8 #define DOCK_EXTRA_SPACE 0 /* Vicinity in which an icon can be attached to the clip */ #define CLIP_ATTACH_VICINITY 1 #define CLIP_BUTTON_SIZE 23 /* The amount of space (in multiples of the icon size) * a docked icon must be dragged out to detach it */ #define DOCK_DETTACH_THRESHOLD 3 /* Max. number of icons the dock and clip can have */ #define DOCK_MAX_ICONS 32 /* blink interval when invoking a menu item */ #define MENU_BLINK_DELAY 60000 #define MENU_BLINK_COUNT 2 #define CURSOR_BLINK_RATE 300 /* how many pixels to move before dragging windows and other objects */ #define MOVE_THRESHOLD 5 #define HRESIZE_THRESHOLD 3 #define MAX_WORKSPACENAME_WIDTH 64 /* max width of window title in window list */ #define MAX_WINDOWLIST_WIDTH 400 #ifndef HAVE_INOTIFY /* Check defaults database for changes every this many milliseconds */ #define DEFAULTS_CHECK_INTERVAL 2000 #endif #define KEY_CONTROL_WINDOW_WEIGHT 1 /* don't put titles in miniwindows */ #undef NO_MINIWINDOW_TITLES /* for boxes with high mouse sampling rates (SGI) */ #define DELAY_BETWEEN_MOUSE_SAMPLING 10 /* * You should not modify the following values, unless you know * what you're doing. */ /* number of window shortcuts */ #define MAX_WINDOW_SHORTCUTS 10 #define MIN_TITLEFONT_HEIGHT(h) ((h)>14 ? (h) : 14) #define TITLEBAR_HEIGHT 18 /* window's titlebar height */ #define RESIZEBAR_HEIGHT 8 /* height of the resizebar */ #define RESIZEBAR_MIN_WIDTH 20 /* min width of handles-corner_width */ #define RESIZEBAR_CORNER_WIDTH 28 /* width of the corner of resizebars */ #define MENU_INDICATOR_SPACE 12 #define MIN_WINDOW_SIZE 5 /* minimum size for windows */ #define ICON_WIDTH 64 /* size of the icon window */ #define ICON_HEIGHT 64 #define ICON_BORDER_WIDTH 2 #define MAX_ICON_WIDTH 60 /* size of the icon pixmap */ #define MAX_ICON_HEIGHT 48 #define MAX_WORKSPACES 100 #define MAX_MENU_TEXT_LENGTH 512 #define MAX_RESTART_ARGS 16 #define MAX_DEAD_PROCESSES 128 #define MAXLINE 1024 #ifdef _MAX_PATH # define DEFAULT_PATH_MAX _MAX_PATH #else # define DEFAULT_PATH_MAX 512 #endif /* some rules */ #ifndef USE_XSHAPE #undef SHAPED_BALLOON #endif #ifdef XKB_MODELOCK #define KEEP_XKB_LOCK_STATUS /* This is a hidden feature. * Choose just one of LANGUAGE_* hints. * Icon can be changed in def_pixmaps.h. * More icons are welcome. */ #define XKB_BUTTON_HINT #undef LANGUAGE_TH #undef LANGUAGE_SK #endif #if defined(HAVE_LIBINTL_H) && defined(I18N) #include <libintl.h> #define _(text) gettext(text) /* Use N_() in initializers, it will make xgettext pick * the string up for translation */ #define N_(text) (text) #if defined(MENU_TEXTDOMAIN) #define M_(text) dgettext(MENU_TEXTDOMAIN, text) #else #define M_(text) (text) #endif #else #define _(text) (text) #define N_(text) (text) #define M_(text) (text) #endif #endif /* WMCONFIG_H_ */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/pixmap.h���������������������������������������������������������������������0000644�0001750�0001750�00000003176�13431646202�013234� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef WMPIXMAP_H_ #define WMPIXMAP_H_ #include "screen.h" typedef struct WPixmap { Pixmap image; /* icon image */ Pixmap mask; /* icon mask */ int width, height; /* size of pixmap */ int depth; /* depth of pixmap */ unsigned int shared:1; /* if pixmaps should be kept * when structure is freed */ unsigned int client_owned:1; unsigned int client_owned_mask:1; } WPixmap; WPixmap *wPixmapCreate(Pixmap image, Pixmap mask); WPixmap *wPixmapCreateFromXPMData(WScreen *scr, char **data); WPixmap *wPixmapCreateFromXBMData(WScreen *scr, char *data, char *mask, int width, int height, unsigned long fg, unsigned long bg); void wPixmapDestroy(WPixmap *pix); #endif ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/appicon.h��������������������������������������������������������������������0000644�0001750�0001750�00000006245�13431646202�013367� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* appicon.h- application icon * * Window Maker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef WMAPPICON_H_ #define WMAPPICON_H_ #include <wraster.h> #include "window.h" #include "icon.h" #include "application.h" typedef struct WAppIcon { short xindex; short yindex; struct WAppIcon *next; struct WAppIcon *prev; WIcon *icon; int x_pos, y_pos; /* absolute screen coordinate */ char *command; /* command used to launch app */ #ifdef USE_DOCK_XDND char *dnd_command; /* command to use when something is */ /* dropped on us */ #endif char *paste_command; /* command to run when * something is pasted */ char *wm_class; char *wm_instance; pid_t pid; /* for apps launched from the dock */ Window main_window; struct WDock *dock; /* In which dock is docked. */ struct _AppSettingsPanel *panel; /* Settings Panel */ unsigned int docked:1; unsigned int omnipresent:1; /* If omnipresent when * docked in clip */ unsigned int attracted:1; /* If it was attracted by the clip */ unsigned int launching:1; unsigned int running:1; /* application is already running */ unsigned int relaunching:1; /* launching 2nd instance */ unsigned int forced_dock:1; unsigned int auto_launch:1; /* launch app on startup */ unsigned int remote_start:1; unsigned int updated:1; unsigned int editing:1; /* editing docked icon */ unsigned int drop_launch:1; /* launching from drop action */ unsigned int paste_launch:1; /* launching from paste action */ unsigned int destroyed:1; /* appicon was destroyed */ unsigned int buggy_app:1; /* do not make dock rely on hints * set by app */ unsigned int lock:1; /* do not allow to be destroyed */ } WAppIcon; WAppIcon *wAppIconCreateForDock(WScreen *scr, const char *command, const char *wm_instance, const char *wm_class, int tile); Bool wHandleAppIconMove(WAppIcon *aicon, XEvent *event); void wAppIconDestroy(WAppIcon *aicon); void wAppIconPaint(WAppIcon *aicon); void wAppIconMove(WAppIcon *aicon, int x, int y); void create_appicon_for_application(WApplication *wapp, WWindow *wwin); void removeAppIconFor(WApplication * wapp); void save_appicon(WAppIcon *aicon); void paint_app_icon(WApplication *wapp); void unpaint_app_icon(WApplication *wapp); void wApplicationExtractDirPackIcon(const char *path, const char *wm_instance, const char *wm_class); WAppIcon *wAppIconFor(Window window); void appIconMouseDown(WObjDescriptor * desc, XEvent * event); #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/wconfig.h.in�����������������������������������������������������������������0000644�0001750�0001750�00000030034�13642357774�014011� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * wconfig.h- default configuration and definitions + compile time options * * WindowMaker window manager * * Copyright (c) 1997-2003 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., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301, USA. */ #ifndef WMCONFIG_H_ #define WMCONFIG_H_ #include "config.h" /*** Change this file (wconfig.h) *after* you ran configure ***/ /* * Comment out the following #defines if you want to disable a feature. * Also check the features you can enable through configure. */ /* * Undefine BALLOON_TEXT if you don't want balloons for showing extra * information, like window titles that are not fully visible. */ #define BALLOON_TEXT /* * If balloons should be shaped or be simple rectangles. * The X server must support the shape extensions and it's support * must be enabled (default). */ #define SHAPED_BALLOON /* * Turn on a hack to make mouse and keyboard actions work even if * the NumLock or ScrollLock modifiers are turned on. They might * inflict a performance/memory penalty. * * If you're an X expert (knows the implementation of XGrabKey() in X) * and knows that the penalty is small (or not), please tell me. */ #define NUMLOCK_HACK /* * define OPTIMIZE_SHAPE if you want the shape setting code to be optimized * for applications that change their shape frequently (like xdaliclock * -shape), removing flickering. If wmaker and your display are on * different machines and the network connection is slow, it is not * recommended. */ #undef OPTIMIZE_SHAPE /* define CONFIGURE_WINDOW_WHILE_MOVING if you want WindowMaker to send * the synthetic ConfigureNotify event to windows while moving at every * single movement. Default is to send a synthetic ConfigureNotify event * only at the end of window moving, which improves performance. */ #undef CONFIGURE_WINDOW_WHILE_MOVING /* disable/enable workspace indicator in the dock */ #undef WS_INDICATOR /* * define HIDDENDOT if you want a dot to be shown in the application icon * of applications that are hidden. */ #define HIDDENDOT /* * Ignores the PPosition hint from clients. This is needed for some * programs that have buggy implementations of such hint and place * themselves in strange locations. */ #undef IGNORE_PPOSITION /* * The following options WILL NOT BE MADE RUN-TIME. Please do not request. * They will only add unneeded bloat. */ /* * define SHADOW_RESIZEBAR if you want a resizebar with shadows like in * AfterStep, instead of the default Openstep look. * NEXTSTEP 3.3 also does not have these shadows. */ #undef SHADOW_RESIZEBAR #define NORMAL_ICON_KABOOM /* * #define if you want the window creation animation when superfluous * is enabled. */ #undef WINDOW_BIRTH_ZOOM /* * Some of the following options can be configured in the preference files, * but if for some reason they can't, these are their defaults. * * There are also some options that can only be configured here, at compile time. */ /* list of paths to look for the config files, searched in order of appearance */ #define DEF_CONFIG_PATHS "~/GNUstep/Library/WindowMaker:"PKGDATADIR #define DEF_MENU_FILE "menu" /* name of the script to execute at startup */ #define DEF_INIT_SCRIPT "autostart" #define DEF_EXIT_SCRIPT "exitscript" #define DEFAULTS_DIR "Defaults" #ifdef USE_TIFF #define DEF_BUTTON_IMAGES PKGDATADIR"/buttons.tiff" #else #define DEF_BUTTON_IMAGES PKGDATADIR"/buttons.xpm" #endif /* the file of the system wide submenu to be forced into the main menu */ #define GLOBAL_PREAMBLE_MENU_FILE "GlobalMenu.pre" #define GLOBAL_EPILOGUE_MENU_FILE "GlobalMenu.post" /* pixmap path */ #define DEF_PIXMAP_PATHS \ "(" \ "\"~/GNUstep/Library/WindowMaker/Pixmaps\"," \ "\"~/GNUstep/Library/WindowMaker/Backgrounds\"," \ "\"~/GNUstep/Library/WindowMaker/CachedPixmaps\"," \ "\"~/pixmaps\"," \ "\""PKGDATADIR"/Pixmaps\"," \ "\""PKGDATADIR"/Backgrounds\"," \ "\""PIXMAPDIR"\"" \ ")" #ifdef USER_MENU #define GLOBAL_USER_MENU_PATH PKGDATADIR"/UserMenus" #define DEF_USER_MENU_PATHS \ "~/GNUstep/Library/WindowMaker/UserMenus:"GLOBAL_USER_MENU_PATH #endif /* icon path */ #define DEF_ICON_PATHS \ "(" \ "\"~/GNUstep/Library/Icons\"," \ "\"~/GNUstep/Library/WindowMaker/Pixmaps\"," \ "\"~/GNUstep/Library/WindowMaker/CachedPixmaps\"," \ "\"~/pixmaps\"," \ "\""PKGDATADIR"/Icons\"," \ "\""PKGDATADIR"/Pixmaps\"," \ "\""PIXMAPDIR"\"" \ ")" /* window title to use for untitled windows */ #define DEF_WINDOW_TITLE "Untitled" /* default style */ #define DEF_FRAME_COLOR "white" /* default fonts */ #define DEF_TITLE_FONT "\"Sans:bold:pixelsize=12\"" #define DEF_MENU_TITLE_FONT "\"Sans:bold:pixelsize=12\"" #define DEF_MENU_ENTRY_FONT "\"Sans:pixelsize=12\"" #define DEF_ICON_TITLE_FONT "\"Sans:pixelsize=9\"" #define DEF_CLIP_TITLE_FONT "\"Sans:bold:pixelsize=10\"" #define DEF_WORKSPACE_NAME_FONT "\"Sans:pixelsize=24\"" /* line width of the move/resize frame */ #define DEF_FRAME_THICKNESS 1 #define DEF_WINDOW_TITLE_EXTEND_SPACE "0" #define DEF_MENU_TITLE_EXTEND_SPACE "0" #define DEF_MENU_TEXT_EXTEND_SPACE "0" #define TITLEBAR_EXTEND_SPACE 4 #define DEF_XPM_CLOSENESS 40000 /* default position of application menus */ #define DEF_APPMENU_X 10 #define DEF_APPMENU_Y 10 /* calculate window edge resistance from edge resistance */ #define WIN_RESISTANCE(x) (((x)*20)/30) /* Window level where icons reside */ #define NORMAL_ICON_LEVEL WMNormalLevel /* do not divide main menu and submenu in different tiers, * opposed to OpenStep */ #define SINGLE_MENULEVEL /* max. time to spend doing animations in seconds. If the animation * time exceeds this value, it is immediately finished. Useful for * moments of high-load. DO NOT set *_DELAY_{Z,T,F} to zero! */ #define MAX_ANIMATION_TIME 1 /* Zoom animation */ #define MINIATURIZE_ANIMATION_FRAMES_Z 7 #define MINIATURIZE_ANIMATION_STEPS_Z 16 #define MINIATURIZE_ANIMATION_DELAY_Z 10000 /* Twist animation */ #define MINIATURIZE_ANIMATION_FRAMES_T 12 #define MINIATURIZE_ANIMATION_STEPS_T 16 #define MINIATURIZE_ANIMATION_DELAY_T 20000 #define MINIATURIZE_ANIMATION_TWIST_T 0.5 /* Flip animation */ #define MINIATURIZE_ANIMATION_FRAMES_F 12 #define MINIATURIZE_ANIMATION_STEPS_F 16 #define MINIATURIZE_ANIMATION_DELAY_F 20000 #define MINIATURIZE_ANIMATION_TWIST_F 0.5 /* delays in ms...*/ #define BALLOON_DELAY 1000 /* ...before balloon is shown */ #define MENU_SELECT_DELAY 200 /* ...for menu item selection hysteresis */ #define MENU_JUMP_BACK_DELAY 400 /* ...for jumpback of scrolled menus */ /* animation speed constants */ #define ICON_SLIDE_SLOWDOWN_UF 1 #define ICON_SLIDE_DELAY_UF 0 #define ICON_SLIDE_STEPS_UF 50 #define ICON_SLIDE_SLOWDOWN_F 3 #define ICON_SLIDE_DELAY_F 0 #define ICON_SLIDE_STEPS_F 50 #define ICON_SLIDE_SLOWDOWN_M 5 #define ICON_SLIDE_DELAY_M 0 #define ICON_SLIDE_STEPS_M 30 #define ICON_SLIDE_SLOWDOWN_S 10 #define ICON_SLIDE_DELAY_S 0 #define ICON_SLIDE_STEPS_S 20 #define ICON_SLIDE_SLOWDOWN_US 20 #define ICON_SLIDE_DELAY_US 1 #define ICON_SLIDE_STEPS_US 10 /* menu scrolling */ #define MENU_SCROLL_STEPS_UF 14 #define MENU_SCROLL_DELAY_UF 1 #define MENU_SCROLL_STEPS_F 10 #define MENU_SCROLL_DELAY_F 5 #define MENU_SCROLL_STEPS_M 6 #define MENU_SCROLL_DELAY_M 5 #define MENU_SCROLL_STEPS_S 4 #define MENU_SCROLL_DELAY_S 6 #define MENU_SCROLL_STEPS_US 1 #define MENU_SCROLL_DELAY_US 8 /* shade animation */ #define SHADE_STEPS_UF 5 #define SHADE_DELAY_UF 0 #define SHADE_STEPS_F 10 #define SHADE_DELAY_F 0 #define SHADE_STEPS_M 15 #define SHADE_DELAY_M 0 #define SHADE_STEPS_S 30 #define SHADE_DELAY_S 0 #define SHADE_STEPS_US 40 #define SHADE_DELAY_US 10 /* workspace name on switch display */ #define WORKSPACE_NAME_FADE_DELAY 30 #define WORKSPACE_NAME_DELAY 400 /* Delay when cycling colors of selected icons. */ #define COLOR_CYCLE_DELAY 200 /* size of the pieces in the undocked icon explosion */ #define ICON_KABOOM_PIECE_SIZE 4 /* * Position increment for smart placement: >= 1 * Raise these values if it's too slow for you */ #define PLACETEST_HSTEP 8 #define PLACETEST_VSTEP 8 #define DOCK_EXTRA_SPACE 0 /* Vicinity in which an icon can be attached to the clip */ #define CLIP_ATTACH_VICINITY 1 #define CLIP_BUTTON_SIZE 23 /* The amount of space (in multiples of the icon size) * a docked icon must be dragged out to detach it */ #define DOCK_DETTACH_THRESHOLD 3 /* Max. number of icons the dock and clip can have */ #define DOCK_MAX_ICONS 32 /* blink interval when invoking a menu item */ #define MENU_BLINK_DELAY 60000 #define MENU_BLINK_COUNT 2 #define CURSOR_BLINK_RATE 300 /* how many pixels to move before dragging windows and other objects */ #define MOVE_THRESHOLD 5 #define HRESIZE_THRESHOLD 3 #define MAX_WORKSPACENAME_WIDTH 64 /* max width of window title in window list */ #define MAX_WINDOWLIST_WIDTH 400 #ifndef HAVE_INOTIFY /* Check defaults database for changes every this many milliseconds */ #define DEFAULTS_CHECK_INTERVAL 2000 #endif #define KEY_CONTROL_WINDOW_WEIGHT 1 /* don't put titles in miniwindows */ #undef NO_MINIWINDOW_TITLES /* for boxes with high mouse sampling rates (SGI) */ #define DELAY_BETWEEN_MOUSE_SAMPLING 10 /* * You should not modify the following values, unless you know * what you're doing. */ /* number of window shortcuts */ #define MAX_WINDOW_SHORTCUTS 10 #define MIN_TITLEFONT_HEIGHT(h) ((h)>14 ? (h) : 14) #define TITLEBAR_HEIGHT 18 /* window's titlebar height */ #define RESIZEBAR_HEIGHT 8 /* height of the resizebar */ #define RESIZEBAR_MIN_WIDTH 20 /* min width of handles-corner_width */ #define RESIZEBAR_CORNER_WIDTH 28 /* width of the corner of resizebars */ #define MENU_INDICATOR_SPACE 12 #define MIN_WINDOW_SIZE 5 /* minimum size for windows */ #define ICON_WIDTH 64 /* size of the icon window */ #define ICON_HEIGHT 64 #define ICON_BORDER_WIDTH 2 #define MAX_ICON_WIDTH 60 /* size of the icon pixmap */ #define MAX_ICON_HEIGHT 48 #define MAX_WORKSPACES 100 #define MAX_MENU_TEXT_LENGTH 512 #define MAX_RESTART_ARGS 16 #define MAX_DEAD_PROCESSES 128 #define MAXLINE 1024 #ifdef _MAX_PATH # define DEFAULT_PATH_MAX _MAX_PATH #else # define DEFAULT_PATH_MAX 512 #endif /* some rules */ #ifndef USE_XSHAPE #undef SHAPED_BALLOON #endif #ifdef XKB_MODELOCK #define KEEP_XKB_LOCK_STATUS /* This is a hidden feature. * Choose just one of LANGUAGE_* hints. * Icon can be changed in def_pixmaps.h. * More icons are welcome. */ #define XKB_BUTTON_HINT #undef LANGUAGE_TH #undef LANGUAGE_SK #endif #if defined(HAVE_LIBINTL_H) && defined(I18N) #include <libintl.h> #define _(text) gettext(text) /* Use N_() in initializers, it will make xgettext pick * the string up for translation */ #define N_(text) (text) #if defined(MENU_TEXTDOMAIN) #define M_(text) dgettext(MENU_TEXTDOMAIN, text) #else #define M_(text) (text) #endif #else #define _(text) (text) #define N_(text) (text) #define M_(text) (text) #endif #endif /* WMCONFIG_H_ */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/client.h���������������������������������������������������������������������0000644�0001750�0001750�00000002744�13431646202�013214� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef WMCLIENT_H_ #define WMCLIENT_H_ void wClientSetState(WWindow *wwin, int state, Window icon_win); void wClientRestore(WWindow *wwin); void wClientConfigure(WWindow *wwin, XConfigureRequestEvent *xcre); void wClientGetGravityOffsets(WWindow *wwin, int *ofs_x, int *ofs_y); void wClientSendProtocol(WWindow *wwin, Atom protocol, Time time); void wClientKill(WWindow *wwin); void wClientCheckProperty(WWindow *wwin, XPropertyEvent *event); void wClientGetNormalHints(WWindow *wwin, XWindowAttributes *wattribs, Bool geometry, int *x, int *y, unsigned *width, unsigned *height); void GetColormapWindows(WWindow *wwin); #endif ����������������������������WindowMaker-0.95.9/src/cycling.c��������������������������������������������������������������������0000644�0001750�0001750�00000016656�13431646202�013370� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* cycling.c- window cycling * * Window Maker window manager * * Copyright (c) 2000-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "wconfig.h" #include <stdlib.h> #include <X11/Xlib.h> #include <X11/Xutil.h> #include <X11/keysym.h> #include "WindowMaker.h" #include "GNUstep.h" #include "screen.h" #include "window.h" #include "framewin.h" #include "keybind.h" #include "actions.h" #include "stacking.h" #include "cycling.h" #include "xinerama.h" #include "switchpanel.h" static void raiseWindow(WSwitchPanel * swpanel, WWindow * wwin) { Window swwin = wSwitchPanelGetWindow(swpanel); if (wwin->flags.mapped || wwin->flags.shaded) { if (swwin != None) { Window win[2]; win[0] = swwin; win[1] = wwin->frame->core->window; XRestackWindows(dpy, win, 2); } else XRaiseWindow(dpy, wwin->frame->core->window); } } static WWindow *change_focus_and_raise(WWindow *newFocused, WWindow *oldFocused, WSwitchPanel *swpanel, WScreen *scr, Bool esc_cancel) { if (!newFocused) return oldFocused; /* allow the focused window to float on top of a fullscreen window */ if (oldFocused->flags.fullscreen) ChangeStackingLevel(oldFocused->frame->core, WMNormalLevel); wWindowFocus(newFocused, oldFocused); oldFocused = newFocused; if (wPreferences.circ_raise) { CommitStacking(scr); if (!esc_cancel) raiseWindow(swpanel, newFocused); } return oldFocused; } void StartWindozeCycle(WWindow *wwin, XEvent *event, Bool next, Bool class_only) { WShortKey binding; WSwitchPanel *swpanel = NULL; WScreen *scr = wScreenForRootWindow(event->xkey.root); KeyCode leftKey = XKeysymToKeycode(dpy, XK_Left); KeyCode rightKey = XKeysymToKeycode(dpy, XK_Right); KeyCode homeKey = XKeysymToKeycode(dpy, XK_Home); KeyCode endKey = XKeysymToKeycode(dpy, XK_End); KeyCode shiftLKey = XKeysymToKeycode(dpy, XK_Shift_L); KeyCode shiftRKey = XKeysymToKeycode(dpy, XK_Shift_R); KeyCode escapeKey = XKeysymToKeycode(dpy, XK_Escape); KeyCode returnKey = XKeysymToKeycode(dpy, XK_Return); Bool esc_cancel = False; Bool somethingElse = False; Bool done = False; Bool hasModifier; int modifiers; WWindow *newFocused; WWindow *oldFocused; XEvent ev; if (!wwin) return; if (next) { if (class_only) binding = wKeyBindings[WKBD_GROUPNEXT]; else binding = wKeyBindings[WKBD_FOCUSNEXT]; } else { if (class_only) binding = wKeyBindings[WKBD_GROUPPREV]; else binding = wKeyBindings[WKBD_FOCUSPREV]; } hasModifier = (binding.modifier != 0); if (hasModifier) XGrabKeyboard(dpy, scr->root_win, False, GrabModeAsync, GrabModeAsync, CurrentTime); scr->flags.doing_alt_tab = 1; swpanel = wInitSwitchPanel(scr, wwin, class_only); oldFocused = wwin; if (swpanel) { if (wwin->flags.mapped && !wPreferences.panel_only_open) newFocused = wSwitchPanelSelectNext(swpanel, !next, True, False); else newFocused = wSwitchPanelSelectFirst(swpanel, False); oldFocused = change_focus_and_raise(newFocused, oldFocused, swpanel, scr, False); } else { if (wwin->frame->workspace == scr->current_workspace) newFocused = wwin; else newFocused = NULL; } while (hasModifier && !done) { WMMaskEvent(dpy, KeyPressMask | KeyReleaseMask | ExposureMask | PointerMotionMask | ButtonReleaseMask | EnterWindowMask, &ev); /* ignore CapsLock */ modifiers = ev.xkey.state & w_global.shortcut.modifiers_mask; if (!swpanel) break; switch (ev.type) { case KeyPress: if ((wKeyBindings[WKBD_FOCUSNEXT].keycode == ev.xkey.keycode && wKeyBindings[WKBD_FOCUSNEXT].modifier == modifiers) || (wKeyBindings[WKBD_GROUPNEXT].keycode == ev.xkey.keycode && wKeyBindings[WKBD_GROUPNEXT].modifier == modifiers) || ev.xkey.keycode == rightKey) { newFocused = wSwitchPanelSelectNext(swpanel, False, ev.xkey.keycode != rightKey, (!class_only && wKeyBindings[WKBD_GROUPNEXT].keycode == ev.xkey.keycode && wKeyBindings[WKBD_GROUPNEXT].modifier == modifiers)); oldFocused = change_focus_and_raise(newFocused, oldFocused, swpanel, scr, False); } else if ((wKeyBindings[WKBD_FOCUSPREV].keycode == ev.xkey.keycode && wKeyBindings[WKBD_FOCUSPREV].modifier == modifiers) || (wKeyBindings[WKBD_GROUPPREV].keycode == ev.xkey.keycode && wKeyBindings[WKBD_GROUPPREV].modifier == modifiers) || ev.xkey.keycode == leftKey) { newFocused = wSwitchPanelSelectNext(swpanel, True, ev.xkey.keycode != leftKey, (!class_only && wKeyBindings[WKBD_GROUPPREV].keycode == ev.xkey.keycode && wKeyBindings[WKBD_GROUPPREV].modifier == modifiers)); oldFocused = change_focus_and_raise(newFocused, oldFocused, swpanel, scr, False); } else if (ev.xkey.keycode == homeKey || ev.xkey.keycode == endKey) { newFocused = wSwitchPanelSelectFirst(swpanel, ev.xkey.keycode != homeKey); oldFocused = change_focus_and_raise(newFocused, oldFocused, swpanel, scr, False); } else if (ev.xkey.keycode == escapeKey) { /* Focus the first window of the swpanel, despite the 'False' */ newFocused = wSwitchPanelSelectFirst(swpanel, False); oldFocused = change_focus_and_raise(newFocused, oldFocused, swpanel, scr, True); esc_cancel = True; done = True; } else if (ev.xkey.keycode == returnKey) { /* Close the switch panel without eating the keypress */ done = True; } else if (ev.xkey.keycode != shiftLKey && ev.xkey.keycode != shiftRKey) { somethingElse = True; done = True; } break; case KeyRelease: if (ev.xkey.keycode == shiftLKey || ev.xkey.keycode == shiftRKey) if (wPreferences.strict_windoze_cycle) break; if (ev.xkey.keycode == leftKey || ev.xkey.keycode == rightKey) break; if (ev.xkey.keycode == XK_Return) break; if (ev.xkey.keycode != binding.keycode) done = True; break; case EnterNotify: /* ignore unwanted EnterNotify's */ break; case LeaveNotify: case MotionNotify: case ButtonRelease: { WWindow *tmp; tmp = wSwitchPanelHandleEvent(swpanel, &ev); if (tmp) { newFocused = tmp; oldFocused = change_focus_and_raise(newFocused, oldFocused, swpanel, scr, False); if (ev.type == ButtonRelease) done = True; } } break; default: WMHandleEvent(&ev); break; } } if (hasModifier) XUngrabKeyboard(dpy, CurrentTime); if (swpanel) wSwitchPanelDestroy(swpanel); if (newFocused && !esc_cancel) { wRaiseFrame(newFocused->frame->core); CommitStacking(scr); if (!newFocused->flags.mapped) wMakeWindowVisible(newFocused); wSetFocusTo(scr, newFocused); } scr->flags.doing_alt_tab = 0; if (somethingElse) WMHandleEvent(&ev); } ����������������������������������������������������������������������������������WindowMaker-0.95.9/src/stacking.h�������������������������������������������������������������������0000644�0001750�0001750�00000002641�13431646202�013535� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef WMSTACKING_H_ #define WMSTACKING_H_ void wRaiseFrame(WCoreWindow *frame); void wLowerFrame(WCoreWindow *frame); void wRaiseLowerFrame(WCoreWindow *frame); void AddToStackList(WCoreWindow *frame); void MoveInStackListAbove(WCoreWindow *next, WCoreWindow *frame); void MoveInStackListUnder(WCoreWindow *prev, WCoreWindow *frame); void RemoveFromStackList(WCoreWindow *frame); void ChangeStackingLevel(WCoreWindow *frame, int new_level); void RemakeStackList(WScreen *scr); void CommitStacking(WScreen *scr); void CommitStackingForFrame(WCoreWindow *frame); void CommitStackingForWindow(WCoreWindow * frame); #endif �����������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/xdnd.c�����������������������������������������������������������������������0000644�0001750�0001750�00000020665�13431646202�012670� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2003 Alfredo K. Kojima * Copyright (c) 2014 Window Maker Team * * 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 */ /* Many part of code are ripped of an example from JX's site */ #include "config.h" #include <stdlib.h> #include <stdio.h> #include <string.h> #include <X11/Xlib.h> #include <X11/Xatom.h> #include "WindowMaker.h" #include "dock.h" #include "xdnd.h" #include "workspace.h" static Atom _XA_XdndAware; static Atom _XA_XdndEnter; static Atom _XA_XdndLeave; static Atom _XA_XdndDrop; static Atom _XA_XdndPosition; static Atom _XA_XdndStatus; static Atom _XA_XdndActionCopy; static Atom _XA_XdndSelection; static Atom _XA_XdndFinished; static Atom _XA_XdndTypeList; static Atom _XA_WINDOWMAKER_XDNDEXCHANGE; static Atom supported_typelist; static Atom selected_typelist; void wXDNDInitializeAtoms(void) { _XA_XdndAware = XInternAtom(dpy, "XdndAware", False); _XA_XdndEnter = XInternAtom(dpy, "XdndEnter", False); _XA_XdndLeave = XInternAtom(dpy, "XdndLeave", False); _XA_XdndDrop = XInternAtom(dpy, "XdndDrop", False); _XA_XdndPosition = XInternAtom(dpy, "XdndPosition", False); _XA_XdndStatus = XInternAtom(dpy, "XdndStatus", False); _XA_XdndActionCopy = XInternAtom(dpy, "XdndActionCopy", False); _XA_XdndSelection = XInternAtom(dpy, "XdndSelection", False); _XA_XdndFinished = XInternAtom(dpy, "XdndFinished", False); _XA_XdndTypeList = XInternAtom(dpy, "XdndTypeList", False); _XA_WINDOWMAKER_XDNDEXCHANGE = XInternAtom(dpy, "_WINDOWMAKER_XDNDEXCHANGE", False); supported_typelist = XInternAtom(dpy, "text/uri-list", False); } void wXDNDMakeAwareness(Window window) { long int xdnd_version = XDND_VERSION; XChangeProperty(dpy, window, _XA_XdndAware, XA_ATOM, 32, PropModeAppend, (unsigned char *)&xdnd_version, 1); } static void wXDNDDecodeURI(char *uri) { char *last = uri + strlen(uri); while (uri < last-2) { if (*uri == '%') { int h; if (sscanf(uri+1, "%2X", &h) != 1) break; *uri = h; memmove(uri+1, uri+3, last - (uri+2)); last -= 2; } uri++; } } Bool wXDNDProcessSelection(XEvent *event) { WScreen *scr = wScreenForWindow(event->xselection.requestor); char *retain; Atom ret_type; int ret_format; unsigned long ret_item; unsigned long remain_byte; char *delme; XEvent xevent; Window selowner = XGetSelectionOwner(dpy, _XA_XdndSelection); XGetWindowProperty(dpy, event->xselection.requestor, _XA_WINDOWMAKER_XDNDEXCHANGE, 0, 65536, True, selected_typelist, &ret_type, &ret_format, &ret_item, &remain_byte, (unsigned char **)&delme); /*send finished */ memset(&xevent, 0, sizeof(xevent)); xevent.xany.type = ClientMessage; xevent.xany.display = dpy; xevent.xclient.window = selowner; xevent.xclient.message_type = _XA_XdndFinished; xevent.xclient.format = 32; XDND_FINISHED_TARGET_WIN(&xevent) = event->xselection.requestor; XSendEvent(dpy, selowner, 0, 0, &xevent); /*process dropping */ if (delme) { WMArray *items; WMArrayIterator iter; int length, str_size; int total_size = 0; char *tmp; scr->xdestring = delme; items = WMCreateArray(4); retain = wstrdup(scr->xdestring); XFree(scr->xdestring); /* since xdestring was created by Xlib */ length = strlen(retain); /* search in string */ while (length--) { if (retain[length] == '\r') { /* useless char, nuke it */ retain[length] = 0; } if (retain[length] == '\n') { str_size = strlen(&retain[length + 1]); if (str_size) { WMAddToArray(items, wstrdup(&retain[length + 1])); total_size += str_size + 3; /* reserve for " \"\"" */ /* this is nonsense -- if (length) WMAppendArray(items, WMCreateArray(1)); */ } retain[length] = 0; } } /* final one */ WMAddToArray(items, wstrdup(retain)); total_size += strlen(retain) + 3; wfree(retain); /* now pack new string */ scr->xdestring = wmalloc(total_size); scr->xdestring[0] = 0; /* empty string */ WM_ETARETI_ARRAY(items, tmp, iter) { /* only supporting file: URI objects */ if (!strncmp(tmp, "file://", 7)) { /* drag-and-drop file name format as per the spec is encoded as an URI */ wXDNDDecodeURI(&tmp[7]); strcat(scr->xdestring, " \""); strcat(scr->xdestring, &tmp[7]); strcat(scr->xdestring, "\""); } wfree(tmp); } WMFreeArray(items); if (scr->xdestring[0]) wDockReceiveDNDDrop(scr, event); wfree(scr->xdestring); /* this xdestring is not from Xlib (no XFree) */ } return True; } static Bool isAwareXDND(Window window) { Atom actual; int format; unsigned long count, remaining; unsigned char *data = 0; if (!window) return False; XGetWindowProperty(dpy, window, _XA_XdndAware, 0, 0x8000000L, False, XA_ATOM, &actual, &format, &count, &remaining, &data); if (actual != XA_ATOM || format != 32 || count == 0 || !data) { if (data) XFree(data); return False; } if (data) XFree(data); return True; } static Bool acceptXDND(Window window) { WScreen *scr = wScreenForWindow(window); WDock *dock; int icon_pos, i; icon_pos = -1; dock = scr->dock; if (dock) { for (i = 0; i < dock->max_icons; i++) { if (dock->icon_array[i] && dock->icon_array[i]->icon->core->window == window) { icon_pos = i; break; } } } if (icon_pos < 0) { dock = scr->workspaces[scr->current_workspace]->clip; if (dock) { for (i = 0; i < dock->max_icons; i++) { if (dock->icon_array[i] && dock->icon_array[i]->icon->core->window == window) { icon_pos = i; break; } } } } if (icon_pos < 0) return False; if (isAwareXDND(dock->icon_array[icon_pos]->icon->icon_win)) return False; if (dock->icon_array[icon_pos]->dnd_command != NULL) return True; return False; } static void wXDNDGetTypeList(Display *dpy, Window window) { Atom type, *a; Atom *typelist; int format, i; unsigned long count, remaining; unsigned char *data = NULL; XGetWindowProperty(dpy, window, _XA_XdndTypeList, 0, 0x8000000L, False, XA_ATOM, &type, &format, &count, &remaining, &data); if (type != XA_ATOM || format != 32 || count == 0 || !data) { if (data) XFree(data); wwarning(_("wXDNDGetTypeList failed = %ld"), _XA_XdndTypeList); return; } typelist = malloc((count + 1) * sizeof(Atom)); a = (Atom *) data; for (i = 0; i < count; i++) { typelist[i] = a[i]; if (typelist[i] == supported_typelist) { selected_typelist = typelist[i]; break; } } typelist[count] = 0; XFree(data); free(typelist); } Bool wXDNDProcessClientMessage(XClientMessageEvent *event) { if (event->message_type == _XA_XdndEnter) { if (XDND_ENTER_THREE_TYPES(event)) { selected_typelist = XDND_ENTER_TYPE(event, 0); } else { wXDNDGetTypeList(dpy, XDND_ENTER_SOURCE_WIN(event)); /* char *name = XGetAtomName(dpy, selected_typelist); fprintf(stderr, "Get %s\n",name); XFree(name); */ } return True; } else if (event->message_type == _XA_XdndLeave) { return True; } else if (event->message_type == _XA_XdndDrop) { if (XDND_DROP_SOURCE_WIN(event) == XGetSelectionOwner(dpy, _XA_XdndSelection)) { XConvertSelection(dpy, _XA_XdndSelection, selected_typelist, _XA_WINDOWMAKER_XDNDEXCHANGE, event->window, CurrentTime); } return True; } else if (event->message_type == _XA_XdndPosition) { XEvent xevent; Window srcwin = XDND_POSITION_SOURCE_WIN(event); if (selected_typelist == supported_typelist) { memset(&xevent, 0, sizeof(xevent)); xevent.xany.type = ClientMessage; xevent.xany.display = dpy; xevent.xclient.window = srcwin; xevent.xclient.message_type = _XA_XdndStatus; xevent.xclient.format = 32; XDND_STATUS_TARGET_WIN(&xevent) = event->window; XDND_STATUS_WILL_ACCEPT_SET(&xevent, acceptXDND(event->window)); XDND_STATUS_WANT_POSITION_SET(&xevent, True); XDND_STATUS_RECT_SET(&xevent, 0, 0, 0, 0); XDND_STATUS_ACTION(&xevent) = _XA_XdndActionCopy; XSendEvent(dpy, srcwin, 0, 0, &xevent); } return True; } return False; } ���������������������������������������������������������������������������WindowMaker-0.95.9/src/pixmap.c���������������������������������������������������������������������0000644�0001750�0001750�00000007132�13431646202�013223� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "wconfig.h" #include <X11/Xlib.h> #include <X11/Xutil.h> #include <wraster.h> #include <stdlib.h> #include <string.h> #include "WindowMaker.h" #include "pixmap.h" /* *---------------------------------------------------------------------- * wPixmapCreateFromXPMData-- * Creates a WPixmap structure and initializes it with the supplied * XPM structure data. * * Returns: * A WPixmap structure or NULL on failure. * * Notes: * DEF_XPM_CLOSENESS specifies the XpmCloseness *---------------------------------------------------------------------- */ WPixmap *wPixmapCreateFromXPMData(WScreen * scr, char **data) { RImage *image; WPixmap *pix; image = RGetImageFromXPMData(scr->rcontext, data); if (!image) return NULL; pix = wmalloc(sizeof(WPixmap)); RConvertImageMask(scr->rcontext, image, &pix->image, &pix->mask, 128); pix->width = image->width; pix->height = image->height; pix->depth = scr->w_depth; RReleaseImage(image); return pix; } /* *---------------------------------------------------------------------- * wPixmapCreateFromXBMData-- * Creates a WPixmap structure and initializes it with the supplied * XBM structure data, size and mask. * * Returns: * A WPixmap structure or NULL on failure. * *---------------------------------------------------------------------- */ WPixmap *wPixmapCreateFromXBMData(WScreen * scr, char *data, char *mask, int width, int height, unsigned long fg, unsigned long bg) { WPixmap *pix; pix = wmalloc(sizeof(WPixmap)); pix->image = XCreatePixmapFromBitmapData(dpy, scr->w_win, data, width, height, fg, bg, scr->w_depth); if (pix->image == None) { wfree(pix); return NULL; } if (mask) { pix->mask = XCreateBitmapFromData(dpy, scr->w_win, mask, width, height); } else { pix->mask = None; } pix->width = width; pix->height = height; pix->depth = scr->w_depth; return pix; } WPixmap *wPixmapCreate(Pixmap image, Pixmap mask) { WPixmap *pix; Window foo; int bar; unsigned int width, height, depth, baz; pix = wmalloc(sizeof(WPixmap)); pix->image = image; pix->mask = mask; if (!XGetGeometry(dpy, image, &foo, &bar, &bar, &width, &height, &baz, &depth)) { wwarning("XGetGeometry() failed during wPixmapCreate()"); wfree(pix); return NULL; } pix->width = width; pix->height = height; pix->depth = depth; return pix; } /* *---------------------------------------------------------------------- * wPixmapDestroy-- * Destroys a WPixmap structure and the pixmap/mask it holds. * * Returns: * None *---------------------------------------------------------------------- */ void wPixmapDestroy(WPixmap * pix) { if (!pix->shared) { if (pix->mask && !pix->client_owned_mask) { XFreePixmap(dpy, pix->mask); } if (pix->image && !pix->client_owned) { XFreePixmap(dpy, pix->image); } } wfree(pix); } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/motif.h����������������������������������������������������������������������0000644�0001750�0001750�00000001667�13431646202�013057� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* motif.h-- stuff for support for mwm hints * * Window Maker window manager * * Copyright (c) 1998-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef WMMWM_H_ #define WMMWM_H_ void wMWMCheckClientHints(WWindow *wwin); #endif �������������������������������������������������������������������������WindowMaker-0.95.9/src/resources.c������������������������������������������������������������������0000644�0001750�0001750�00000003444�13431646202�013741� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* resources.c - manage X resources (colors etc) * * Window Maker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "wconfig.h" #include <stdio.h> #include <stdlib.h> #include <string.h> #include <X11/Xlib.h> #include <X11/Xutil.h> #include <wraster.h> #include "WindowMaker.h" #include "texture.h" #include "resources.h" #include "screen.h" int wGetColorForColormap(Colormap colormap, const char *color_name, XColor *color) { if (!XParseColor(dpy, colormap, color_name, color)) { wwarning(_("could not parse color \"%s\""), color_name); return False; } if (!XAllocColor(dpy, colormap, color)) { wwarning(_("could not allocate color \"%s\""), color_name); return False; } return True; } int wGetColor(WScreen *scr, const char *color_name, XColor *color) { return wGetColorForColormap(scr->w_colormap, color_name, color); } void wFreeColor(WScreen * scr, unsigned long pixel) { if (pixel != scr->white_pixel && pixel != scr->black_pixel) { unsigned long colors[1]; colors[0] = pixel; XFreeColors(dpy, scr->w_colormap, colors, 1, 0); } } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/event.h����������������������������������������������������������������������0000644�0001750�0001750�00000002567�13431646202�013062� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2003 Alfredo K. Kojima * Copyright (c) 2013 Window Maker Team * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef WMEVENT_H #define WMEVENT_H #include "config.h" #ifdef HAVE_STDNORETURN #include <stdnoreturn.h> #endif typedef void (WDeathHandler)(pid_t pid, unsigned int status, void *cdata); noreturn void EventLoop(void); void DispatchEvent(XEvent *event); void ProcessPendingEvents(void); WMagicNumber wAddDeathHandler(pid_t pid, WDeathHandler *callback, void *cdata); Bool IsDoubleClick(WScreen *scr, XEvent *event); /* called from the signal handler */ void NotifyDeadProcess(pid_t pid, unsigned char status); #endif /* WMEVENT_H */ �����������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/GNUstep.h��������������������������������������������������������������������0000644�0001750�0001750�00000006253�13431646202�013262� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* GNUstep.h-- stuff for compatibility with GNUstep applications * * Window Maker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef WMGNUSTEP_H_ #define WMGNUSTEP_H_ #include <X11/Xproto.h> #define GNUSTEP_WM_MINIATURIZE_WINDOW "_GNUSTEP_WM_MINIATURIZE_WINDOW" #define GNUSTEP_WM_ATTR_NAME "_GNUSTEP_WM_ATTR" #define GNUSTEP_TITLEBAR_STATE "_GNUSTEP_TITLEBAR_STATE" enum { WMTitleBarKey = 0, WMTitleBarNormal = 1, WMTitleBarMain = 2 }; #ifndef _DEFINED_GNUSTEP_WINDOW_INFO #define _DEFINED_GNUSTEP_WINDOW_INFO /* * Window levels are taken from GNUstep (gui/AppKit/NSWindow.h) * NSDesktopWindowLevel intended to be the level at which things * on the desktop sit ... so you should be able * to put a desktop background just below it. * * Applications are actually permitted to use any value in the * range INT_MIN+1 to INT_MAX */ enum { WMDesktopWindowLevel = -1000, /* GNUstep addition */ WMNormalWindowLevel = 0, WMFloatingWindowLevel = 3, WMSubmenuWindowLevel = 3, WMTornOffMenuWindowLevel = 3, WMMainMenuWindowLevel = 20, WMDockWindowLevel = 21, /* Deprecated - use NSStatusWindowLevel */ WMStatusWindowLevel = 21, WMModalPanelWindowLevel = 100, WMPopUpMenuWindowLevel = 101, WMScreenSaverWindowLevel = 1000 }; /* window attributes */ enum { WMBorderlessWindowMask = 0, WMTitledWindowMask = 1, WMClosableWindowMask = 2, WMMiniaturizableWindowMask = 4, WMResizableWindowMask = 8, WMIconWindowMask = 64, WMMiniWindowMask = 128 }; #endif /* window manager -> appkit notifications */ #define GNUSTEP_WM_NOTIFICATION "GNUSTEP_WM_NOTIFICATION" typedef struct { CARD32 flags; CARD32 window_style; CARD32 window_level; CARD32 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 */ CARD32 extra_flags; } GNUstepWMAttributes; #define GSWindowStyleAttr (1<<0) #define GSWindowLevelAttr (1<<1) #define GSMiniaturizePixmapAttr (1<<3) #define GSClosePixmapAttr (1<<4) #define GSMiniaturizeMaskAttr (1<<5) #define GSCloseMaskAttr (1<<6) #define GSExtraFlagsAttr (1<<7) /* extra flags */ #define GSDocumentEditedFlag (1<<0) #define GSNoApplicationIconFlag (1<<5) #define WMFHideOtherApplications 10 #define WMFHideApplication 12 #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/dockedapp.c������������������������������������������������������������������0000644�0001750�0001750�00000034605�13642357774�013705� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* dockedapp.c- docked application settings panel * * Window Maker window manager * * Copyright (c) 1998-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "wconfig.h" #include <X11/Xlib.h> #include <X11/Xutil.h> #include <stdlib.h> #include <string.h> #include <stdio.h> #include "WindowMaker.h" #include "window.h" #include "icon.h" #include "appicon.h" #include "dock.h" #include "dockedapp.h" #include "dialog.h" #include "misc.h" #include "defaults.h" #include "framewin.h" #include "xinerama.h" static void updateCommand(WAppIcon * icon, char *command) { if (icon->command) wfree(icon->command); if (command && (command[0] == 0 || (command[0] == '-' && command[1] == 0))) { wfree(command); command = NULL; } icon->command = command; if (!icon->wm_class && !icon->wm_instance && icon->command && strlen(icon->command) > 0) { icon->forced_dock = 1; } } static void updatePasteCommand(WAppIcon * icon, char *command) { if (icon->paste_command) wfree(icon->paste_command); if (command && (command[0] == 0 || (command[0] == '-' && command[1] == 0))) { wfree(command); command = NULL; } icon->paste_command = command; } #ifdef USE_DOCK_XDND static void updateDNDCommand(WAppIcon * icon, char *command) { if (icon->dnd_command) wfree(icon->dnd_command); if (command && (command[0] == 0 || (command[0] == '-' && command[1] == 0))) { wfree(command); command = NULL; } icon->dnd_command = command; } #endif /* USE_DOCK_XDND */ static void updateSettingsPanelIcon(AppSettingsPanel * panel) { char *file; int size; file = WMGetTextFieldText(panel->iconField); if (!file) WMSetLabelImage(panel->iconLabel, NULL); else { char *path; path = FindImage(wPreferences.icon_path, file); if (!path) { wwarning(_("could not find icon %s, used in a docked application"), file); wfree(file); WMSetLabelImage(panel->iconLabel, NULL); return; } else { WMPixmap *pixmap; RColor color; color.red = 0xae; color.green = 0xaa; color.blue = 0xae; color.alpha = 0; size = wPreferences.icon_size; pixmap = WMCreateScaledBlendedPixmapFromFile(WMWidgetScreen(panel->win), path, &color, size, size); if (!pixmap) { WMSetLabelImage(panel->iconLabel, NULL); } else { WMSetLabelImage(panel->iconLabel, pixmap); WMReleasePixmap(pixmap); } } wfree(file); wfree(path); } } static void chooseIconCallback(WMWidget * self, void *clientData) { char *file; AppSettingsPanel *panel = (AppSettingsPanel *) clientData; int result; /* Parameter not used, but tell the compiler that it is ok */ (void) self; panel->choosingIcon = 1; WMSetButtonEnabled(panel->browseBtn, False); result = wIconChooserDialog(panel->wwin->screen_ptr, &file, panel->editedIcon->wm_instance, panel->editedIcon->wm_class); panel->choosingIcon = 0; if (!panel->destroyed) { if (result) { WMSetTextFieldText(panel->iconField, file); updateSettingsPanelIcon(panel); } WMSetButtonEnabled(panel->browseBtn, True); } else { /* kluge for the case, the user asked to close the panel before * the icon chooser */ DestroyDockAppSettingsPanel(panel); } if (result) wfree(file); } static void panelBtnCallback(WMWidget * self, void *data) { WMButton *btn = self; AppSettingsPanel *panel = (AppSettingsPanel *) data; char *text; if (panel->okBtn == btn) { text = WMGetTextFieldText(panel->iconField); if (text[0] == 0) { wfree(text); text = NULL; } if (!wIconChangeImageFile(panel->editedIcon->icon, text)) { char *buf; int len = strlen(text) + 64; buf = wmalloc(len); snprintf(buf, len, _("Could not open specified icon file: %s"), text); if (wMessageDialog(panel->wwin->screen_ptr, _("Error"), buf, _("OK"), _("Ignore"), NULL) == WAPRDefault) { wfree(text); wfree(buf); return; } wfree(buf); } else { WAppIcon *aicon = panel->editedIcon; // Cf dock.c:dockIconPaint(WAppIcon *aicon)? if (aicon == aicon->icon->core->screen_ptr->clip_icon) wClipIconPaint(aicon); else if (wIsADrawer(aicon)) wDrawerIconPaint(aicon); else wAppIconPaint(aicon); wDefaultChangeIcon(aicon->wm_instance, aicon->wm_class, text); } if (text) wfree(text); /* cannot free text from this, because it will be not be duplicated * in updateCommand */ text = WMGetTextFieldText(panel->commandField); if (text[0] == 0) { wfree(text); text = NULL; } updateCommand(panel->editedIcon, text); #ifdef USE_DOCK_XDND /* cannot free text from this, because it will be not be duplicated * in updateDNDCommand */ text = WMGetTextFieldText(panel->dndCommandField); updateDNDCommand(panel->editedIcon, text); #endif text = WMGetTextFieldText(panel->pasteCommandField); updatePasteCommand(panel->editedIcon, text); panel->editedIcon->auto_launch = WMGetButtonSelected(panel->autoLaunchBtn); panel->editedIcon->lock = WMGetButtonSelected(panel->lockBtn); } DestroyDockAppSettingsPanel(panel); } void ShowDockAppSettingsPanel(WAppIcon * aicon) { AppSettingsPanel *panel; WScreen *scr = aicon->icon->core->screen_ptr; Window parent; WMFont *font; int x, y; WMBox *vbox; int wmScaleWidth, wmScaleHeight; int pwidth, pheight; int iconSize; /* get the width and height values of the system font for use with the WMScaleX/WMScaleY macros */ WMGetScaleBaseFromSystemFont(scr->wmscreen, &wmScaleWidth, &wmScaleHeight); /* calculate the required width and height for the panel */ iconSize = wPreferences.icon_size; pwidth = WMScaleX(300); pheight = WMScaleY(10) /* upper margin */ + iconSize /* icon and its label */ + WMScaleY(10) /* padding */ + WMScaleY(20) + WMScaleY(2) /* start option */ + WMScaleY(20) + WMScaleY(5) /* lock option */ + WMScaleY(50) + WMScaleY(5) /* app path and arguments */ + WMScaleY(70) + WMScaleY(5) /* middle-click command */ + WMScaleY(70) + WMScaleY(5) /* drag&drop command */ + WMScaleY(50) + WMScaleY(10) /* icon file */ + WMScaleY(24) /* buttons */ + WMScaleY(10); /* lower margin */ panel = wmalloc(sizeof(AppSettingsPanel)); panel->editedIcon = aicon; aicon->panel = panel; aicon->editing = 1; panel->win = WMCreateWindow(scr->wmscreen, "applicationSettings"); WMResizeWidget(panel->win, pwidth, pheight); panel->iconLabel = WMCreateLabel(panel->win); WMResizeWidget(panel->iconLabel, iconSize, iconSize); WMMoveWidget(panel->iconLabel, WMScaleX(10), WMScaleY(10)); WMSetLabelImagePosition(panel->iconLabel, WIPImageOnly); panel->nameLabel = WMCreateLabel(panel->win); font = WMBoldSystemFontOfSize(scr->wmscreen, WMScaleY(14)); WMResizeWidget(panel->nameLabel, WMScaleX(190), WMScaleY(18)); WMMoveWidget(panel->nameLabel, 2 * WMScaleX(10) + iconSize, WMScaleY(10) + ((iconSize - WMFontHeight(font)) / 2)); WMSetLabelTextAlignment(panel->nameLabel, WALeft); WMSetLabelFont(panel->nameLabel, font); WMReleaseFont(font); if (aicon->wm_class && strcmp(aicon->wm_class, "DockApp") == 0) WMSetLabelText(panel->nameLabel, aicon->wm_instance); else WMSetLabelText(panel->nameLabel, aicon->wm_class); vbox = WMCreateBox(panel->win); WMResizeWidget(vbox, pwidth - 2 * WMScaleX(10), pheight - iconSize - 3 * WMScaleY(10)); WMMoveWidget(vbox, WMScaleX(10), iconSize + 2 * WMScaleY(10)); panel->autoLaunchBtn = WMCreateSwitchButton(vbox); WMAddBoxSubview(vbox, WMWidgetView(panel->autoLaunchBtn), False, True, WMScaleY(20), WMScaleY(20), WMScaleY(2)); WMSetButtonText(panel->autoLaunchBtn, _("Start when Window Maker is started")); WMSetButtonSelected(panel->autoLaunchBtn, aicon->auto_launch); panel->lockBtn = WMCreateSwitchButton(vbox); WMAddBoxSubview(vbox, WMWidgetView(panel->lockBtn), False, True, WMScaleY(20), WMScaleY(20), WMScaleY(5)); WMSetButtonText(panel->lockBtn, _("Lock (prevent accidental removal)")); WMSetButtonSelected(panel->lockBtn, aicon->lock); panel->commandFrame = WMCreateFrame(vbox); WMSetFrameTitle(panel->commandFrame, _("Application path and arguments")); WMAddBoxSubview(vbox, WMWidgetView(panel->commandFrame), False, True, WMScaleY(50), WMScaleY(50), WMScaleY(5)); panel->commandField = WMCreateTextField(panel->commandFrame); WMResizeWidget(panel->commandField, WMScaleX(260), WMScaleY(20)); WMMoveWidget(panel->commandField, WMScaleX(10), WMScaleY(20)); WMSetTextFieldText(panel->commandField, aicon->command); WMMapSubwidgets(panel->commandFrame); panel->pasteCommandFrame = WMCreateFrame(vbox); WMSetFrameTitle(panel->pasteCommandFrame, _("Command for middle-click launch")); WMAddBoxSubview(vbox, WMWidgetView(panel->pasteCommandFrame), False, True, WMScaleY(70), WMScaleY(70), WMScaleY(5)); panel->pasteCommandField = WMCreateTextField(panel->pasteCommandFrame); WMResizeWidget(panel->pasteCommandField, WMScaleX(260), WMScaleY(20)); WMMoveWidget(panel->pasteCommandField, WMScaleX(10), WMScaleY(20)); panel->pasteCommandLabel = WMCreateLabel(panel->pasteCommandFrame); WMResizeWidget(panel->pasteCommandLabel, WMScaleX(260), WMScaleY(18)); WMMoveWidget(panel->pasteCommandLabel, WMScaleX(10), WMScaleY(45)); WMSetTextFieldText(panel->pasteCommandField, aicon->paste_command); WMSetLabelText(panel->pasteCommandLabel, _("%s will be replaced with current selection")); WMMapSubwidgets(panel->pasteCommandFrame); panel->dndCommandFrame = WMCreateFrame(vbox); WMSetFrameTitle(panel->dndCommandFrame, _("Command for dragged and dropped files")); WMAddBoxSubview(vbox, WMWidgetView(panel->dndCommandFrame), False, True, WMScaleY(70), WMScaleY(70), WMScaleY(5)); panel->dndCommandField = WMCreateTextField(panel->dndCommandFrame); WMResizeWidget(panel->dndCommandField, WMScaleX(260), WMScaleY(20)); WMMoveWidget(panel->dndCommandField, WMScaleX(10), WMScaleY(20)); panel->dndCommandLabel = WMCreateLabel(panel->dndCommandFrame); WMResizeWidget(panel->dndCommandLabel, WMScaleX(260), WMScaleY(18)); WMMoveWidget(panel->dndCommandLabel, WMScaleX(10), WMScaleY(45)); #ifdef USE_DOCK_XDND WMSetTextFieldText(panel->dndCommandField, aicon->dnd_command); WMSetLabelText(panel->dndCommandLabel, _("%d will be replaced with the file name")); #else WMSetTextFieldEditable(panel->dndCommandField, False); WMSetLabelText(panel->dndCommandLabel, _("XDnD support was not compiled in")); WMSetFrameTitleColor(panel->dndCommandFrame, WMDarkGrayColor(scr->wmscreen)); WMSetLabelTextColor(panel->dndCommandLabel, WMDarkGrayColor(scr->wmscreen)); #endif WMMapSubwidgets(panel->dndCommandFrame); panel->iconFrame = WMCreateFrame(vbox); WMSetFrameTitle(panel->iconFrame, _("Icon Image")); WMAddBoxSubview(vbox, WMWidgetView(panel->iconFrame), False, True, WMScaleY(50), WMScaleY(50), WMScaleY(10)); panel->iconField = WMCreateTextField(panel->iconFrame); WMResizeWidget(panel->iconField, WMScaleX(180), WMScaleY(20)); WMMoveWidget(panel->iconField, WMScaleX(10), WMScaleY(20)); WMSetTextFieldText(panel->iconField, wDefaultGetIconFile(aicon->wm_instance, aicon->wm_class, False)); panel->browseBtn = WMCreateCommandButton(panel->iconFrame); WMResizeWidget(panel->browseBtn, WMScaleX(70), WMScaleY(24)); WMMoveWidget(panel->browseBtn, WMScaleX(200), WMScaleY(18)); WMSetButtonText(panel->browseBtn, _("Browse...")); WMSetButtonAction(panel->browseBtn, chooseIconCallback, panel); { WMBox *hbox; hbox = WMCreateBox(vbox); WMSetBoxHorizontal(hbox, True); WMAddBoxSubview(vbox, WMWidgetView(hbox), False, True, WMScaleY(24), WMScaleY(24), 0); panel->okBtn = WMCreateCommandButton(hbox); WMSetButtonText(panel->okBtn, _("OK")); WMSetButtonAction(panel->okBtn, panelBtnCallback, panel); WMAddBoxSubviewAtEnd(hbox, WMWidgetView(panel->okBtn), False, True, WMScaleX(80), WMScaleX(80), 0); panel->cancelBtn = WMCreateCommandButton(hbox); WMSetButtonText(panel->cancelBtn, _("Cancel")); WMSetButtonAction(panel->cancelBtn, panelBtnCallback, panel); WMAddBoxSubviewAtEnd(hbox, WMWidgetView(panel->cancelBtn), False, True, WMScaleX(80), WMScaleX(80), 5); WMMapSubwidgets(hbox); } WMRealizeWidget(panel->win); WMMapSubwidgets(panel->win); WMMapSubwidgets(vbox); WMMapSubwidgets(panel->iconFrame); updateSettingsPanelIcon(panel); parent = XCreateSimpleWindow(dpy, scr->root_win, 0, 0, pwidth, pheight, 0, 0, 0); XSelectInput(dpy, parent, KeyPressMask | KeyReleaseMask); XReparentWindow(dpy, WMWidgetXID(panel->win), parent, 0, 0); /* * make things relative to head */ { WMRect rect = wGetRectForHead(scr, wGetHeadForPointerLocation(scr)); y = aicon->y_pos; if (y < 0) y = 0; else if (y + pheight > rect.pos.y + rect.size.height) y = rect.pos.y + rect.size.height - pheight - 3 * WMScaleY(10); if (aicon->dock && aicon->dock->type == WM_DOCK) { if (aicon->dock->on_right_side) x = rect.pos.x + rect.size.width / 2; else x = rect.pos.x + rect.size.width / 2 - pwidth - WMScaleX(2); } else { x = rect.pos.x + (rect.size.width - pwidth) / 2; } } panel->wwin = wManageInternalWindow(scr, parent, None, _("Docked Application Settings"), x, y, pwidth, pheight); panel->wwin->client_leader = WMWidgetXID(panel->win); panel->parent = parent; WMMapWidget(panel->win); wWindowMap(panel->wwin); } void DestroyDockAppSettingsPanel(AppSettingsPanel * panel) { if (!panel->destroyed) { XUnmapWindow(dpy, panel->wwin->client_win); XReparentWindow(dpy, panel->wwin->client_win, panel->wwin->screen_ptr->root_win, 0, 0); wUnmanageWindow(panel->wwin, False, False); } panel->destroyed = 1; /* * kluge. If we destroy the panel before the icon chooser is closed, * we will crash when it does close, trying to access something in the * destroyed panel. Could use wretain()/wrelease() in the panel, * but it is not working for some reason. */ if (panel->choosingIcon) return; WMDestroyWidget(panel->win); XDestroyWindow(dpy, panel->parent); panel->editedIcon->panel = NULL; panel->editedIcon->editing = 0; wfree(panel); } ���������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/osdep.h����������������������������������������������������������������������0000644�0001750�0001750�00000001634�13431646202�013045� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef WMOSDEP_H_ #define WMOSDEP_H_ Bool GetCommandForPid(int pid, char ***argv, int *argc); #endif ����������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/winmenu.h��������������������������������������������������������������������0000644�0001750�0001750�00000002241�13431646202�013410� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2003 Alfredo K. Kojima * Copyright (c) 2013 Window Maker Team * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef WMWINMENU_H #define WMWINMENU_H void OpenWindowMenu(WWindow *wwin, int x, int y, int keyboard); void OpenWindowMenu2(WWindow *wwin, int x, int y, int keyboard); void OpenMiniwindowMenu(WWindow *wwin, int x, int y); void CloseWindowMenu(WScreen *scr); void DestroyWindowMenu(WScreen *scr); #endif /* WMWINMENU_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/resources.h������������������������������������������������������������������0000644�0001750�0001750�00000002067�13431646202�013746� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef WMRESOURCES_H_ #define WMRESOURCES_H_ int wGetColorForColormap(Colormap colormap, const char *color_name, XColor *color); int wGetColor(WScreen *scr, const char *color_name, XColor *color); void wFreeColor(WScreen *scr, unsigned long pixel); #endif �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/colormap.h�������������������������������������������������������������������0000644�0001750�0001750�00000001774�13431646202�013554� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 2000-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef WMCOLORMAP_H #define WMCOLORMAP_H void wColormapInstallForWindow(WScreen *scr, WWindow *wwin); void wColormapAllowClientInstallation(WScreen * scr, Bool starting); #endif /* WMCOLORMAP_H */ ����WindowMaker-0.95.9/src/application.h����������������������������������������������������������������0000644�0001750�0001750�00000003676�13431646202�014246� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef WMAPPLICATION_H_ #define WMAPPLICATION_H_ /* for tracking single application instances */ typedef struct WApplication { struct WApplication *next; struct WApplication *prev; Window main_window; /* ID of the group leader */ struct WWindow *main_window_desc; /* main (leader) window descriptor */ WMenu *menu; /* application menu */ struct WAppIcon *app_icon; int refcount; struct WWindow *last_focused; /* focused window before hide */ int last_workspace; /* last workspace used to work on the * app */ WMHandlerID *urgent_bounce_timer; struct { unsigned int skip_next_animation:1; unsigned int hidden:1; unsigned int emulated:1; unsigned int bouncing:1; } flags; } WApplication; WApplication *wApplicationCreate(struct WWindow *wwin); WApplication *wApplicationOf(Window window); void wApplicationDestroy(WApplication *wapp); void wAppBounce(WApplication *); void wAppBounceWhileUrgent(WApplication *); void wApplicationActivate(WApplication *); void wApplicationDeactivate(WApplication *); #endif ������������������������������������������������������������������WindowMaker-0.95.9/src/keybind.h��������������������������������������������������������������������0000644�0001750�0001750�00000006470�13642357774�013404� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2003 Alfredo K. Kojima * Copyright (c) 2014 Window Maker Team * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef WMKEYBIND_H #define WMKEYBIND_H /* <X11/X.h> doesn't define these, even though XFree supports them */ #ifndef Button6 #define Button6 6 #endif #ifndef Button7 #define Button7 7 #endif #ifndef Button8 #define Button8 8 #endif #ifndef Button9 #define Button9 9 #endif enum { /* anywhere */ WKBD_ROOTMENU, WKBD_WINDOWMENU, WKBD_WINDOWLIST, /* window */ WKBD_MINIATURIZE, WKBD_MINIMIZEALL, WKBD_HIDE, WKBD_HIDE_OTHERS, WKBD_MAXIMIZE, WKBD_VMAXIMIZE, WKBD_HMAXIMIZE, WKBD_LHMAXIMIZE, WKBD_RHMAXIMIZE, WKBD_THMAXIMIZE, WKBD_BHMAXIMIZE, WKBD_LTCMAXIMIZE, WKBD_RTCMAXIMIZE, WKBD_LBCMAXIMIZE, WKBD_RBCMAXIMIZE, WKBD_MAXIMUS, WKBD_SELECT, WKBD_KEEP_ON_TOP, WKBD_KEEP_AT_BOTTOM, WKBD_OMNIPRESENT, WKBD_RAISE, WKBD_LOWER, WKBD_RAISELOWER, WKBD_MOVERESIZE, WKBD_SHADE, WKBD_WORKSPACEMAP, WKBD_FOCUSNEXT, WKBD_FOCUSPREV, WKBD_GROUPNEXT, WKBD_GROUPPREV, /* window, menu */ WKBD_CLOSE, /* Dock */ WKBD_DOCKRAISELOWER, /* Clip */ WKBD_CLIPRAISELOWER, /* workspace */ WKBD_WORKSPACE1, WKBD_WORKSPACE2, WKBD_WORKSPACE3, WKBD_WORKSPACE4, WKBD_WORKSPACE5, WKBD_WORKSPACE6, WKBD_WORKSPACE7, WKBD_WORKSPACE8, WKBD_WORKSPACE9, WKBD_WORKSPACE10, WKBD_NEXTWORKSPACE, WKBD_PREVWORKSPACE, WKBD_LASTWORKSPACE, WKBD_NEXTWSLAYER, WKBD_PREVWSLAYER, /* move to workspace */ WKBD_MOVE_WORKSPACE1, WKBD_MOVE_WORKSPACE2, WKBD_MOVE_WORKSPACE3, WKBD_MOVE_WORKSPACE4, WKBD_MOVE_WORKSPACE5, WKBD_MOVE_WORKSPACE6, WKBD_MOVE_WORKSPACE7, WKBD_MOVE_WORKSPACE8, WKBD_MOVE_WORKSPACE9, WKBD_MOVE_WORKSPACE10, WKBD_MOVE_NEXTWORKSPACE, WKBD_MOVE_PREVWORKSPACE, WKBD_MOVE_LASTWORKSPACE, WKBD_MOVE_NEXTWSLAYER, WKBD_MOVE_PREVWSLAYER, /* window shortcuts */ WKBD_WINDOW1, WKBD_WINDOW2, WKBD_WINDOW3, WKBD_WINDOW4, WKBD_WINDOW5, WKBD_WINDOW6, WKBD_WINDOW7, WKBD_WINDOW8, WKBD_WINDOW9, WKBD_WINDOW10, /* shortcuts to move window between heads */ WKBD_MOVE_12_TO_6_HEAD, WKBD_MOVE_6_TO_12_HEAD, /* launch a new instance of the active window */ WKBD_RELAUNCH, /* screen */ WKBD_SWITCH_SCREEN, /* open "run" dialog */ WKBD_RUN, #ifdef KEEP_XKB_LOCK_STATUS WKBD_TOGGLE, #endif /* keep this last */ WKBD_LAST }; typedef struct WShortKey { unsigned int modifier; KeyCode keycode; } WShortKey; /* ---[ Global Variables ]------------------------------------------------ */ extern WShortKey wKeyBindings[WKBD_LAST]; /* ---[ Functions ]------------------------------------------------------- */ void wKeyboardInitialize(void); #endif /* WMKEYBIND_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/shutdown.c�������������������������������������������������������������������0000644�0001750�0001750�00000011611�13431646202�013575� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "wconfig.h" #include <stdlib.h> #include <signal.h> #include <unistd.h> #include <X11/Xlib.h> #include <X11/Xutil.h> #include "WindowMaker.h" #include "window.h" #include "client.h" #include "main.h" #include "properties.h" #include "session.h" #include "winspector.h" #include "wmspec.h" #include "colormap.h" #include "shutdown.h" static void wipeDesktop(WScreen * scr); /* *---------------------------------------------------------------------- * Shutdown- * Exits the window manager cleanly. If mode is WSLogoutMode, * the whole X session will be closed, by killing all clients if * no session manager is running or by asking a shutdown to * it if its present. * *---------------------------------------------------------------------- */ void Shutdown(WShutdownMode mode) { int i; switch (mode) { case WSLogoutMode: case WSKillMode: case WSExitMode: /* if there is no session manager, send SAVE_YOURSELF to * the clients */ #ifdef HAVE_INOTIFY if (w_global.inotify.fd_event_queue >= 0) { close(w_global.inotify.fd_event_queue); w_global.inotify.fd_event_queue = -1; } #endif for (i = 0; i < w_global.screen_count; i++) { WScreen *scr; scr = wScreenWithNumber(i); if (scr) { if (scr->helper_pid) kill(scr->helper_pid, SIGKILL); wScreenSaveState(scr); if (mode == WSKillMode) wipeDesktop(scr); else RestoreDesktop(scr); } } ExecExitScript(); Exit(0); break; case WSRestartPreparationMode: for (i = 0; i < w_global.screen_count; i++) { WScreen *scr; #ifdef HAVE_INOTIFY if (w_global.inotify.fd_event_queue >= 0) { close(w_global.inotify.fd_event_queue); w_global.inotify.fd_event_queue = -1; } #endif scr = wScreenWithNumber(i); if (scr) { if (scr->helper_pid) kill(scr->helper_pid, SIGKILL); wScreenSaveState(scr); RestoreDesktop(scr); } } break; } } static void restoreWindows(WMBag * bag, WMBagIterator iter) { WCoreWindow *next; WCoreWindow *core; WWindow *wwin; if (iter == NULL) { core = WMBagFirst(bag, &iter); } else { core = WMBagNext(bag, &iter); } if (core == NULL) return; restoreWindows(bag, iter); /* go to the end of the list */ while (core->stacking->under) core = core->stacking->under; while (core) { next = core->stacking->above; if (core->descriptor.parent_type == WCLASS_WINDOW) { Window window; wwin = core->descriptor.parent; window = wwin->client_win; wUnmanageWindow(wwin, !wwin->flags.internal_window, False); XMapWindow(dpy, window); } core = next; } } /* *---------------------------------------------------------------------- * RestoreDesktop-- * Puts the desktop in a usable state when exiting. * * Side effects: * All frame windows are removed and windows are reparented * back to root. Windows that are outside the screen are * brought to a viable place. * *---------------------------------------------------------------------- */ void RestoreDesktop(WScreen * scr) { if (scr->helper_pid > 0) { kill(scr->helper_pid, SIGTERM); scr->helper_pid = 0; } XGrabServer(dpy); wDestroyInspectorPanels(); /* reparent windows back to the root window, keeping the stacking order */ restoreWindows(scr->stacking_list, NULL); XUngrabServer(dpy); XSetInputFocus(dpy, PointerRoot, RevertToParent, CurrentTime); wColormapInstallForWindow(scr, NULL); PropCleanUp(scr->root_win); wNETWMCleanup(scr); XSync(dpy, 0); } /* *---------------------------------------------------------------------- * wipeDesktop-- * Kills all windows in a screen. Send DeleteWindow to all windows * that support it and KillClient on all windows that don't. * * Side effects: * All managed windows are closed. * * TODO: change to XQueryTree() *---------------------------------------------------------------------- */ static void wipeDesktop(WScreen * scr) { WWindow *wwin; wwin = scr->focused_window; while (wwin) { if (wwin->protocols.DELETE_WINDOW) wClientSendProtocol(wwin, w_global.atom.wm.delete_window, w_global.timestamp.last_event); else wClientKill(wwin); wwin = wwin->prev; } XSync(dpy, False); } �����������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/xdnd.h�����������������������������������������������������������������������0000644�0001750�0001750�00000003727�13431646202�012675� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2003 Alfredo K. Kojima * Copyright (c) 2014 Window Maker Team * * 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 */ #ifndef _XDND_H_ #define _XDND_H_ void wXDNDInitializeAtoms(void); Bool wXDNDProcessSelection(XEvent *event); Bool wXDNDProcessClientMessage(XClientMessageEvent *event); void wXDNDMakeAwareness(Window window); #define XDND_VERSION 3L #define XDND_ENTER_SOURCE_WIN(e) ((e)->data.l[0]) #define XDND_ENTER_THREE_TYPES(e) (((e)->data.l[1] & 0x1UL) == 0) #define XDND_ENTER_TYPE(e, i) ((e)->data.l[2 + i]) /* i => (0, 1, 2) */ /* XdndPosition */ #define XDND_POSITION_SOURCE_WIN(e) ((e)->data.l[0]) /* XdndStatus */ #define XDND_STATUS_TARGET_WIN(e) ((e)->xclient.data.l[0]) #define XDND_STATUS_WILL_ACCEPT_SET(e, b) (e)->xclient.data.l[1] = ((e)->xclient.data.l[1] & ~0x1UL) | (((b) == 0) ? 0 : 0x1UL) #define XDND_STATUS_WANT_POSITION_SET(e, b) (e)->xclient.data.l[1] = ((e)->xclient.data.l[1] & ~0x2UL) | (((b) == 0) ? 0 : 0x2UL) #define XDND_STATUS_RECT_SET(e, x, y, w, h) {(e)->xclient.data.l[2] = ((x) << 16) | ((y) & 0xFFFFUL); (e)->xclient.data.l[3] = ((w) << 16) | ((h) & 0xFFFFUL); } #define XDND_STATUS_ACTION(e) ((e)->xclient.data.l[4]) /* XdndDrop */ #define XDND_DROP_SOURCE_WIN(e) ((e)->data.l[0]) /* XdndFinished */ #define XDND_FINISHED_TARGET_WIN(e) ((e)->xclient.data.l[0]) #endif �����������������������������������������WindowMaker-0.95.9/src/shutdown.h�������������������������������������������������������������������0000644�0001750�0001750�00000002136�13431646202�013604� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* shutdown.c - Shutdown functions * * Window Maker window manager * * Copyright (c) 2013 Window Maker Team * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef SHUTDOWN_H #define SHUTDOWN_H /* shutdown modes */ typedef enum { WSExitMode, WSLogoutMode, WSKillMode, WSRestartPreparationMode } WShutdownMode; void Shutdown(WShutdownMode mode); void RestoreDesktop(WScreen *scr); #endif /* SHUTDOWN_H */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/appicon.c��������������������������������������������������������������������0000644�0001750�0001750�00000104544�13642357774�013404� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* appicon.c- icon for applications (not mini-window) * * Window Maker window manager * * Copyright (c) 1997-2003 Alfredo K. Kojima * Copyright (c) 1998-2003 Dan Pascu * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "wconfig.h" #include <X11/Xlib.h> #include <X11/Xutil.h> #include <stdlib.h> #include <libgen.h> #include <string.h> #include <unistd.h> #include <sys/stat.h> #include <errno.h> #include "WindowMaker.h" #include "window.h" #include "icon.h" #include "application.h" #include "appicon.h" #include "actions.h" #include "stacking.h" #include "dock.h" #include "main.h" #include "defaults.h" #include "workspace.h" #include "superfluous.h" #include "menu.h" #include "framewin.h" #include "dialog.h" #include "xinerama.h" #include "client.h" #include "placement.h" #include "misc.h" #include "event.h" #ifdef USE_DOCK_XDND #include "xdnd.h" #endif /* * icon_file for the dock is got from the preferences file by * using the classname/instancename */ #define MOD_MASK wPreferences.modifier_mask #define ICON_SIZE wPreferences.icon_size static void iconDblClick(WObjDescriptor * desc, XEvent * event); static void iconExpose(WObjDescriptor * desc, XEvent * event); static void wApplicationSaveIconPathFor(const char *iconPath, const char *wm_instance, const char *wm_class); static WAppIcon *wAppIconCreate(WWindow * leader_win); static void add_to_appicon_list(WScreen *scr, WAppIcon *appicon); static void remove_from_appicon_list(WScreen *scr, WAppIcon *appicon); static void create_appicon_from_dock(WWindow *wwin, WApplication *wapp, Window main_window); /* This function is used if the application is a .app. It checks if it has an icon in it * like for example /usr/local/GNUstep/Applications/WPrefs.app/WPrefs.tiff */ void wApplicationExtractDirPackIcon(const char *path, const char *wm_instance, const char *wm_class) { char *iconPath = NULL; char *tmp = NULL; if (strstr(path, ".app")) { tmp = wmalloc(strlen(path) + 16); if (wPreferences.supports_tiff) { strcpy(tmp, path); strcat(tmp, ".tiff"); if (access(tmp, R_OK) == 0) iconPath = tmp; } if (!iconPath) { strcpy(tmp, path); strcat(tmp, ".xpm"); if (access(tmp, R_OK) == 0) iconPath = tmp; } if (!iconPath) wfree(tmp); if (iconPath) { wApplicationSaveIconPathFor(iconPath, wm_instance, wm_class); wfree(iconPath); } } } WAppIcon *wAppIconCreateForDock(WScreen *scr, const char *command, const char *wm_instance, const char *wm_class, int tile) { WAppIcon *aicon; aicon = wmalloc(sizeof(WAppIcon)); wretain(aicon); aicon->yindex = -1; aicon->xindex = -1; add_to_appicon_list(scr, aicon); if (command) aicon->command = wstrdup(command); if (wm_class) aicon->wm_class = wstrdup(wm_class); if (wm_instance) aicon->wm_instance = wstrdup(wm_instance); if (wPreferences.flags.clip_merged_in_dock && wm_class != NULL && strcmp(wm_class, "WMDock") == 0) tile = TILE_CLIP; aicon->icon = icon_create_for_dock(scr, command, wm_instance, wm_class, tile); #ifdef USE_DOCK_XDND wXDNDMakeAwareness(aicon->icon->core->window); #endif /* will be overriden by dock */ aicon->icon->core->descriptor.handle_mousedown = appIconMouseDown; aicon->icon->core->descriptor.handle_expose = iconExpose; aicon->icon->core->descriptor.parent_type = WCLASS_APPICON; aicon->icon->core->descriptor.parent = aicon; AddToStackList(aicon->icon->core); return aicon; } void create_appicon_for_application(WApplication *wapp, WWindow *wwin) { /* Try to create an icon from the dock or clip */ create_appicon_from_dock(wwin, wapp, wapp->main_window); /* If app_icon was not found, create it */ if (!wapp->app_icon) { /* Create the icon */ wapp->app_icon = wAppIconCreate(wapp->main_window_desc); wIconUpdate(wapp->app_icon->icon); /* Now, paint the icon */ if (!WFLAGP(wapp->main_window_desc, no_appicon)) paint_app_icon(wapp); } /* At this point the application is fully set up and all icon and * window data are known - so try to save the icon file for docked * applications to ensure that the file exists when window maker * starts up next time. */ if (wapp->app_icon->docked && !WFLAGP(wapp->main_window_desc, no_appicon)) save_appicon(wapp->app_icon); } void unpaint_app_icon(WApplication *wapp) { WAppIcon *aicon; WScreen *scr; WDock *clip; if (!wapp || !wapp->app_icon) return; aicon = wapp->app_icon; /* If the icon is docked, don't continue */ if (aicon->docked) return; scr = wapp->main_window_desc->screen_ptr; clip = scr->workspaces[scr->current_workspace]->clip; if (!clip || !aicon->attracted || !clip->collapsed) XUnmapWindow(dpy, aicon->icon->core->window); /* We want to avoid having it on the list because otherwise * there will be a hole when the icons are arranged with * wArrangeIcons() */ remove_from_appicon_list(scr, aicon); if (wPreferences.auto_arrange_icons && !aicon->attracted) wArrangeIcons(scr, True); } void paint_app_icon(WApplication *wapp) { WIcon *icon; WScreen *scr; WDock *attracting_dock; int x = 0, y = 0; Bool update_icon = False; if (!wapp || !wapp->app_icon || !wapp->main_window_desc) return; icon = wapp->app_icon->icon; scr = wapp->main_window_desc->screen_ptr; wapp->app_icon->main_window = wapp->main_window; /* If the icon is docked, don't continue */ if (wapp->app_icon->docked) return; attracting_dock = scr->attracting_drawer != NULL ? scr->attracting_drawer : scr->workspaces[scr->current_workspace]->clip; if (attracting_dock && attracting_dock->attract_icons && wDockFindFreeSlot(attracting_dock, &x, &y)) { wapp->app_icon->attracted = 1; if (!icon->shadowed) { icon->shadowed = 1; update_icon = True; } wDockAttachIcon(attracting_dock, wapp->app_icon, x, y, update_icon); } else { /* We must know if the icon is painted in the screen, * because if painted, then PlaceIcon will return the next * space on the screen, and the icon will move */ if (wapp->app_icon->next == NULL && wapp->app_icon->prev == NULL) { PlaceIcon(scr, &x, &y, wGetHeadForWindow(wapp->main_window_desc)); wAppIconMove(wapp->app_icon, x, y); wLowerFrame(icon->core); } } /* If we want appicon (no_appicon is not set) and the icon is not * in the appicon_list, we must add it. Else, we want to avoid * having it on the list */ if (!WFLAGP(wapp->main_window_desc, no_appicon) && wapp->app_icon->next == NULL && wapp->app_icon->prev == NULL) add_to_appicon_list(scr, wapp->app_icon); if (!attracting_dock || !wapp->app_icon->attracted || !attracting_dock->collapsed) XMapWindow(dpy, icon->core->window); if (wPreferences.auto_arrange_icons && !wapp->app_icon->attracted) wArrangeIcons(scr, True); } void removeAppIconFor(WApplication *wapp) { if (!wapp->app_icon) return; if (wPreferences.highlight_active_app) wIconSetHighlited(wapp->app_icon->icon, False); if (wapp->app_icon->docked && !wapp->app_icon->attracted) { wapp->app_icon->running = 0; /* since we keep it, we don't care if it was attracted or not */ wapp->app_icon->attracted = 0; wapp->app_icon->icon->shadowed = 0; wapp->app_icon->main_window = None; wapp->app_icon->pid = 0; wapp->app_icon->icon->owner = NULL; wapp->app_icon->icon->icon_win = None; /* Set the icon image */ set_icon_image_from_database(wapp->app_icon->icon, wapp->app_icon->wm_instance, wapp->app_icon->wm_class, wapp->app_icon->command); /* Update the icon, because wapp->app_icon->icon could be NULL */ wIconUpdate(wapp->app_icon->icon); /* Paint it */ wAppIconPaint(wapp->app_icon); } else if (wapp->app_icon->docked) { wapp->app_icon->running = 0; if (wapp->app_icon->dock->type == WM_DRAWER) { wDrawerFillTheGap(wapp->app_icon->dock, wapp->app_icon, True); } wDockDetach(wapp->app_icon->dock, wapp->app_icon); } else { wAppIconDestroy(wapp->app_icon); } wapp->app_icon = NULL; if (wPreferences.auto_arrange_icons) wArrangeIcons(wapp->main_window_desc->screen_ptr, True); } static WAppIcon *wAppIconCreate(WWindow *leader_win) { WAppIcon *aicon; aicon = wmalloc(sizeof(WAppIcon)); wretain(aicon); aicon->yindex = -1; aicon->xindex = -1; aicon->prev = NULL; aicon->next = NULL; if (leader_win->wm_class) aicon->wm_class = wstrdup(leader_win->wm_class); if (leader_win->wm_instance) aicon->wm_instance = wstrdup(leader_win->wm_instance); aicon->icon = icon_create_for_wwindow(leader_win); #ifdef USE_DOCK_XDND wXDNDMakeAwareness(aicon->icon->core->window); #endif /* will be overriden if docked */ aicon->icon->core->descriptor.handle_mousedown = appIconMouseDown; aicon->icon->core->descriptor.handle_expose = iconExpose; aicon->icon->core->descriptor.parent_type = WCLASS_APPICON; aicon->icon->core->descriptor.parent = aicon; AddToStackList(aicon->icon->core); aicon->icon->show_title = 0; return aicon; } void wAppIconDestroy(WAppIcon * aicon) { WScreen *scr = aicon->icon->core->screen_ptr; RemoveFromStackList(aicon->icon->core); wIconDestroy(aicon->icon); if (aicon->command) wfree(aicon->command); #ifdef USE_DOCK_XDND if (aicon->dnd_command) wfree(aicon->dnd_command); #endif if (aicon->wm_instance) wfree(aicon->wm_instance); if (aicon->wm_class) wfree(aicon->wm_class); remove_from_appicon_list(scr, aicon); aicon->destroyed = 1; wrelease(aicon); } static void drawCorner(WIcon * icon) { WScreen *scr = icon->core->screen_ptr; XPoint points[3]; points[0].x = 1; points[0].y = 1; points[1].x = 12; points[1].y = 1; points[2].x = 1; points[2].y = 12; XFillPolygon(dpy, icon->core->window, scr->icon_title_texture->normal_gc, points, 3, Convex, CoordModeOrigin); XDrawLine(dpy, icon->core->window, scr->icon_title_texture->light_gc, 0, 0, 0, 12); XDrawLine(dpy, icon->core->window, scr->icon_title_texture->light_gc, 0, 0, 12, 0); } void wAppIconMove(WAppIcon * aicon, int x, int y) { XMoveWindow(dpy, aicon->icon->core->window, x, y); aicon->x_pos = x; aicon->y_pos = y; } #ifdef WS_INDICATOR static void updateDockNumbers(WScreen *scr) { int length; char ws_numbers[20]; WAppIcon *dicon = scr->dock->icon_array[0]; snprintf(ws_numbers, sizeof(ws_numbers), "%i [ %i ]", scr->current_workspace + 1, ((scr->current_workspace / 10) + 1)); length = strlen(ws_numbers); XClearArea(dpy, dicon->icon->core->window, 2, 2, 50, WMFontHeight(scr->icon_title_font) + 1, False); WMDrawString(scr->wmscreen, dicon->icon->core->window, scr->black, scr->icon_title_font, 4, 3, ws_numbers, length); WMDrawString(scr->wmscreen, dicon->icon->core->window, scr->white, scr->icon_title_font, 3, 2, ws_numbers, length); } #endif /* WS_INDICATOR */ void wAppIconPaint(WAppIcon *aicon) { WApplication *wapp; WScreen *scr = aicon->icon->core->screen_ptr; if (aicon->icon->owner) wapp = wApplicationOf(aicon->icon->owner->main_window); else wapp = NULL; wIconPaint(aicon->icon); # ifdef WS_INDICATOR if (aicon->docked && scr->dock && scr->dock == aicon->dock && aicon->yindex == 0) updateDockNumbers(scr); # endif if (aicon->docked && !aicon->running && aicon->command != NULL) { XSetClipMask(dpy, scr->copy_gc, scr->dock_dots->mask); XSetClipOrigin(dpy, scr->copy_gc, 0, 0); XCopyArea(dpy, scr->dock_dots->image, aicon->icon->core->window, scr->copy_gc, 0, 0, scr->dock_dots->width, scr->dock_dots->height, 0, 0); } #ifdef HIDDENDOT if (wapp && wapp->flags.hidden) { XSetClipMask(dpy, scr->copy_gc, scr->dock_dots->mask); XSetClipOrigin(dpy, scr->copy_gc, 0, 0); XCopyArea(dpy, scr->dock_dots->image, aicon->icon->core->window, scr->copy_gc, 0, 0, 7, scr->dock_dots->height, 0, 0); } #endif /* HIDDENDOT */ if (aicon->omnipresent) drawCorner(aicon->icon); XSetClipMask(dpy, scr->copy_gc, None); if (aicon->launching) XFillRectangle(dpy, aicon->icon->core->window, scr->stipple_gc, 0, 0, wPreferences.icon_size, wPreferences.icon_size); } /* Save the application icon, if it's a dockapp then use it with dock = True */ void save_appicon(WAppIcon *aicon) { char *path; if (!aicon) return; if (!aicon->docked || aicon->attracted) return; path = wIconStore(aicon->icon); if (!path) return; wApplicationSaveIconPathFor(path, aicon->wm_instance, aicon->wm_class); wfree(path); } #define canBeDocked(wwin) ((wwin) && ((wwin)->wm_class||(wwin)->wm_instance)) /* main_window may not have the full command line; try to find one which does */ static void relaunchApplication(WApplication *wapp) { WScreen *scr; WWindow *wlist, *next; scr = wapp->main_window_desc->screen_ptr; wlist = scr->focused_window; if (! wlist) return; while (wlist->prev) wlist = wlist->prev; while (wlist) { next = wlist->next; if (wlist->main_window == wapp->main_window) { if (RelaunchWindow(wlist)) return; } wlist = next; } } static void relaunchCallback(WMenu * menu, WMenuEntry * entry) { WApplication *wapp = (WApplication *) entry->clientdata; /* Parameter not used, but tell the compiler that it is ok */ (void) menu; relaunchApplication(wapp); } static void hideCallback(WMenu * menu, WMenuEntry * entry) { WApplication *wapp = (WApplication *) entry->clientdata; if (wapp->flags.hidden) { wWorkspaceChange(menu->menu->screen_ptr, wapp->last_workspace); wUnhideApplication(wapp, False, False); } else { wHideApplication(wapp); } } static void unhideHereCallback(WMenu * menu, WMenuEntry * entry) { WApplication *wapp = (WApplication *) entry->clientdata; /* Parameter not used, but tell the compiler that it is ok */ (void) menu; wUnhideApplication(wapp, False, True); } static void setIconCallback(WMenu *menu, WMenuEntry *entry) { WAppIcon *icon = ((WApplication *) entry->clientdata)->app_icon; char *file = NULL; WScreen *scr; int result; /* Parameter not used, but tell the compiler that it is ok */ (void) menu; assert(icon != NULL); if (icon->editing) return; icon->editing = 1; scr = icon->icon->core->screen_ptr; wretain(icon); result = wIconChooserDialog(scr, &file, icon->wm_instance, icon->wm_class); if (result) { if (!icon->destroyed) { if (!wIconChangeImageFile(icon->icon, file)) { wMessageDialog(scr, _("Error"), _("Could not open specified icon file"), _("OK"), NULL, NULL); } else { wDefaultChangeIcon(icon->wm_instance, icon->wm_class, file); wAppIconPaint(icon); } } if (file) wfree(file); } icon->editing = 0; wrelease(icon); } static void killCallback(WMenu * menu, WMenuEntry * entry) { WApplication *wapp = (WApplication *) entry->clientdata; WFakeGroupLeader *fPtr; char *buffer; char *shortname; if (!WCHECK_STATE(WSTATE_NORMAL)) return; WCHANGE_STATE(WSTATE_MODAL); assert(entry->clientdata != NULL); shortname = basename(wapp->app_icon->wm_instance); buffer = wstrconcat(wapp->app_icon ? shortname : NULL, _(" will be forcibly closed.\n" "Any unsaved changes will be lost.\n" "Please confirm.")); fPtr = wapp->main_window_desc->fake_group; wretain(wapp->main_window_desc); if (wPreferences.dont_confirm_kill || wMessageDialog(menu->frame->screen_ptr, _("Kill Application"), buffer, _("Yes"), _("No"), NULL) == WAPRDefault) { if (fPtr != NULL) { WWindow *wwin, *twin; wwin = wapp->main_window_desc->screen_ptr->focused_window; while (wwin) { twin = wwin->prev; if (wwin->fake_group == fPtr) wClientKill(wwin); wwin = twin; } } else if (!wapp->main_window_desc->flags.destroyed) { wClientKill(wapp->main_window_desc); } } wrelease(wapp->main_window_desc); wfree(buffer); WCHANGE_STATE(WSTATE_NORMAL); } static WMenu *createApplicationMenu(WScreen *scr) { WMenu *menu; menu = wMenuCreate(scr, NULL, False); wMenuAddCallback(menu, _("Unhide Here"), unhideHereCallback, NULL); wMenuAddCallback(menu, _("Hide"), hideCallback, NULL); wMenuAddCallback(menu, _("Launch"), relaunchCallback, NULL); wMenuAddCallback(menu, _("Set Icon..."), setIconCallback, NULL); wMenuAddCallback(menu, _("Kill"), killCallback, NULL); return menu; } static void openApplicationMenu(WApplication * wapp, int x, int y) { WMenu *menu; WScreen *scr = wapp->main_window_desc->screen_ptr; int i; if (!scr->icon_menu) { scr->icon_menu = createApplicationMenu(scr); wfree(scr->icon_menu->entries[1]->text); } menu = scr->icon_menu; if (wapp->flags.hidden) menu->entries[1]->text = _("Unhide"); else menu->entries[1]->text = _("Hide"); menu->flags.realized = 0; wMenuRealize(menu); x -= menu->frame->core->width / 2; if (x + menu->frame->core->width > scr->scr_width) x = scr->scr_width - menu->frame->core->width; if (x < 0) x = 0; /* set client data */ for (i = 0; i < menu->entry_no; i++) menu->entries[i]->clientdata = wapp; wMenuMapAt(menu, x, y, False); } /******************************************************************/ static void iconExpose(WObjDescriptor *desc, XEvent *event) { /* Parameter not used, but tell the compiler that it is ok */ (void) event; wAppIconPaint(desc->parent); } static void iconDblClick(WObjDescriptor *desc, XEvent *event) { WAppIcon *aicon = desc->parent; WApplication *wapp; WScreen *scr = aicon->icon->core->screen_ptr; int unhideHere; assert(aicon->icon->owner != NULL); wapp = wApplicationOf(aicon->icon->owner->main_window); if (event->xbutton.state & ControlMask) { relaunchApplication(wapp); return; } unhideHere = (event->xbutton.state & ShiftMask); /* go to the last workspace that the user worked on the app */ if (!unhideHere && wapp->last_workspace != scr->current_workspace) wWorkspaceChange(scr, wapp->last_workspace); wUnhideApplication(wapp, event->xbutton.button == Button2, unhideHere); if (event->xbutton.state & MOD_MASK) wHideOtherApplications(aicon->icon->owner); } void appIconMouseDown(WObjDescriptor * desc, XEvent * event) { WAppIcon *aicon = desc->parent; WScreen *scr = aicon->icon->core->screen_ptr; Bool hasMoved; if (aicon->editing || WCHECK_STATE(WSTATE_MODAL)) return; if (IsDoubleClick(scr, event)) { /* Middle or right mouse actions were handled on first click */ if (event->xbutton.button == Button1) iconDblClick(desc, event); return; } if (event->xbutton.button == Button2) { WApplication *wapp = wApplicationOf(aicon->icon->owner->main_window); if (wapp) relaunchApplication(wapp); return; } if (event->xbutton.button == Button3) { WObjDescriptor *desc; WApplication *wapp = wApplicationOf(aicon->icon->owner->main_window); if (!wapp) return; if (event->xbutton.send_event && XGrabPointer(dpy, aicon->icon->core->window, True, ButtonMotionMask | ButtonReleaseMask | ButtonPressMask, GrabModeAsync, GrabModeAsync, None, None, CurrentTime) != GrabSuccess) { wwarning("pointer grab failed for appicon menu"); return; } openApplicationMenu(wapp, event->xbutton.x_root, event->xbutton.y_root); /* allow drag select of menu */ desc = &scr->icon_menu->menu->descriptor; event->xbutton.send_event = True; (*desc->handle_mousedown) (desc, event); return; } hasMoved = wHandleAppIconMove(aicon, event); if (wPreferences.single_click && !hasMoved && aicon->dock != NULL) { iconDblClick(desc, event); } } Bool wHandleAppIconMove(WAppIcon *aicon, XEvent *event) { WIcon *icon = aicon->icon; WScreen *scr = icon->core->screen_ptr; WDock *originalDock = aicon->dock; /* can be NULL */ WDock *lastDock = originalDock; WDock *allDocks[scr->drawer_count + 2]; /* clip, dock and drawers (order determined at runtime) */ WDrawerChain *dc; Bool dockable, ondock; Bool grabbed = False; Bool collapsed = False; /* Stores the collapsed state of lastDock, before the moving appicon entered it */ int superfluous = wPreferences.superfluous; /* we cache it to avoid problems */ int omnipresent = aicon->omnipresent; /* this must be cached */ Bool showed_all_clips = False; int clickButton = event->xbutton.button; Pixmap ghost = None; Window wins[2]; /* Managing shadow window */ XEvent ev; int x = aicon->x_pos, y = aicon->y_pos; int ofs_x = event->xbutton.x, ofs_y = event->xbutton.y; int shad_x = x, shad_y = y; int ix = aicon->xindex, iy = aicon->yindex; int i; int oldX = x; int oldY = y; Bool hasMoved = False; if (wPreferences.flags.noupdates && originalDock != NULL) return False; if (!(event->xbutton.state & MOD_MASK)) wRaiseFrame(icon->core); else { /* If Mod is pressed for an docked appicon, assume it is to undock it, * so don't lower it */ if (originalDock == NULL) wLowerFrame(icon->core); } if (XGrabPointer(dpy, icon->core->window, True, ButtonMotionMask | ButtonReleaseMask | ButtonPressMask, GrabModeAsync, GrabModeAsync, None, None, CurrentTime) != GrabSuccess) { wwarning("Pointer grab failed in wHandleAppIconMove"); } if (originalDock != NULL) { dockable = True; ondock = True; } else { ondock = False; if (wPreferences.flags.nodock && wPreferences.flags.noclip && wPreferences.flags.nodrawer) dockable = 0; else dockable = canBeDocked(icon->owner); } /* We try the various docks in that order: * - First, the dock the appicon comes from, if any * - Then, the drawers * - Then, the "dock" (WM_DOCK) * - Finally, the clip */ i = 0; if (originalDock != NULL) allDocks[ i++ ] = originalDock; /* Testing scr->drawers is enough, no need to test wPreferences.flags.nodrawer */ for (dc = scr->drawers; dc != NULL; dc = dc->next) { if (dc->adrawer != originalDock) allDocks[ i++ ] = dc->adrawer; } if (!wPreferences.flags.nodock && scr->dock != originalDock) allDocks[ i++ ] = scr->dock; if (!wPreferences.flags.noclip && originalDock != scr->workspaces[scr->current_workspace]->clip) allDocks[ i++ ] = scr->workspaces[scr->current_workspace]->clip; for ( ; i < scr->drawer_count + 2; i++) /* In case the clip, the dock, or both, are disabled */ allDocks[ i ] = NULL; wins[0] = icon->core->window; wins[1] = scr->dock_shadow; XRestackWindows(dpy, wins, 2); XMoveResizeWindow(dpy, scr->dock_shadow, aicon->x_pos, aicon->y_pos, ICON_SIZE, ICON_SIZE); if (superfluous) { if (icon->pixmap != None) ghost = MakeGhostIcon(scr, icon->pixmap); else ghost = MakeGhostIcon(scr, icon->core->window); XSetWindowBackgroundPixmap(dpy, scr->dock_shadow, ghost); XClearWindow(dpy, scr->dock_shadow); } if (ondock) XMapWindow(dpy, scr->dock_shadow); while (1) { WMMaskEvent(dpy, PointerMotionMask | ButtonReleaseMask | ButtonPressMask | ButtonMotionMask | ExposureMask | EnterWindowMask, &ev); switch (ev.type) { case Expose: WMHandleEvent(&ev); break; case EnterNotify: /* It means the cursor moved so fast that it entered * something else (if moving slowly, it would have * stayed in the appIcon that is being moved. Ignore * such "spurious" EnterNotifiy's */ break; case MotionNotify: hasMoved = True; if (!grabbed) { if (abs(ofs_x - ev.xmotion.x) >= MOVE_THRESHOLD || abs(ofs_y - ev.xmotion.y) >= MOVE_THRESHOLD) { XChangeActivePointerGrab(dpy, ButtonMotionMask | ButtonReleaseMask | ButtonPressMask, wPreferences.cursor[WCUR_MOVE], CurrentTime); grabbed = 1; } else { break; } } if (omnipresent && !showed_all_clips) { int i; for (i = 0; i < scr->workspace_count; i++) { if (i == scr->current_workspace) continue; wDockShowIcons(scr->workspaces[i]->clip); /* Note: if dock is collapsed (for instance, because it auto-collapses), its icons still won't show up */ } showed_all_clips = True; /* To prevent flickering */ } x = ev.xmotion.x_root - ofs_x; y = ev.xmotion.y_root - ofs_y; wAppIconMove(aicon, x, y); WDock *theNewDock = NULL; if (!(ev.xmotion.state & MOD_MASK) || aicon->launching || aicon->lock || originalDock == NULL) { for (i = 0; dockable && i < scr->drawer_count + 2; i++) { WDock *theDock = allDocks[i]; if (theDock == NULL) break; if (wDockSnapIcon(theDock, aicon, x, y, &ix, &iy, (theDock == originalDock))) { theNewDock = theDock; break; } } if (originalDock != NULL && theNewDock == NULL && (aicon->launching || aicon->lock || aicon->running)) { /* In those cases, stay in lastDock if no dock really wants us */ theNewDock = lastDock; } } if (lastDock != NULL && lastDock != theNewDock) { /* Leave lastDock in the state we found it */ if (lastDock->type == WM_DRAWER) { wDrawerFillTheGap(lastDock, aicon, (lastDock == originalDock)); } if (collapsed) { lastDock->collapsed = 1; wDockHideIcons(lastDock); collapsed = False; } if (lastDock->auto_raise_lower) { wDockLower(lastDock); } } if (theNewDock != NULL) { if (lastDock != theNewDock) { collapsed = theNewDock->collapsed; if (collapsed) { theNewDock->collapsed = 0; wDockShowIcons(theNewDock); } if (theNewDock->auto_raise_lower) { wDockRaise(theNewDock); /* And raise the moving tile above it */ wRaiseFrame(aicon->icon->core); } lastDock = theNewDock; } shad_x = lastDock->x_pos + ix*wPreferences.icon_size; shad_y = lastDock->y_pos + iy*wPreferences.icon_size; XMoveWindow(dpy, scr->dock_shadow, shad_x, shad_y); if (!ondock) { XMapWindow(dpy, scr->dock_shadow); } ondock = 1; } else { lastDock = theNewDock; // i.e., NULL if (ondock) { XUnmapWindow(dpy, scr->dock_shadow); /* * Leaving that weird comment for now. * But if we see no gap, there is no need to fill one! * We could test ondock first and the lastDock to NULL afterwards if (lastDock_before_it_was_null->type == WM_DRAWER) { wDrawerFillTheGap(lastDock, aicon, (lastDock == originalDock)); } */ } ondock = 0; } break; case ButtonPress: break; case ButtonRelease: if (ev.xbutton.button != clickButton) break; XUngrabPointer(dpy, CurrentTime); Bool docked = False; if (ondock) { slide_window(icon->core->window, x, y, shad_x, shad_y); XUnmapWindow(dpy, scr->dock_shadow); if (originalDock == NULL) { // docking an undocked appicon docked = wDockAttachIcon(lastDock, aicon, ix, iy, False); if (!docked) { /* AppIcon got rejected (happens only when we can't get the command for that appicon, and the user cancels the wInputDialog asking for one). Make the rejection obvious by sliding the icon to its old position */ if (lastDock->type == WM_DRAWER) { // Also fill the gap left in the drawer wDrawerFillTheGap(lastDock, aicon, False); } slide_window(icon->core->window, x, y, oldX, oldY); } } else { // moving a docked appicon to a dock if (originalDock == lastDock) { docked = True; wDockReattachIcon(originalDock, aicon, ix, iy); } else { docked = wDockMoveIconBetweenDocks(originalDock, lastDock, aicon, ix, iy); if (!docked) { /* Possible scenario: user moved an auto-attracted appicon from the clip to the dock, and cancelled the wInputDialog asking for a command */ if (lastDock->type == WM_DRAWER) { wDrawerFillTheGap(lastDock, aicon, False); } /* If aicon comes from a drawer, make some room to reattach it */ if (originalDock->type == WM_DRAWER) { WAppIcon *aiconsToShift[ originalDock->icon_count ]; int j = 0; for (i = 0; i < originalDock->max_icons; i++) { WAppIcon *ai = originalDock->icon_array[ i ]; if (ai && ai != aicon && abs(ai->xindex) >= abs(aicon->xindex)) aiconsToShift[j++] = ai; } if (j != originalDock->icon_count - abs(aicon->xindex) - 1) // Trust this never happens? wwarning("Shifting j=%d appicons (instead of %d!) to reinsert aicon at index %d.", j, originalDock->icon_count - abs(aicon->xindex) - 1, aicon->xindex); wSlideAppicons(aiconsToShift, j, originalDock->on_right_side); // Trust the appicon is inserted at exactly the same place, so its oldX/oldY are consistent with its "new" location? } slide_window(icon->core->window, x, y, oldX, oldY); wDockReattachIcon(originalDock, aicon, aicon->xindex, aicon->yindex); } else { if (originalDock->auto_collapse && !originalDock->collapsed) { originalDock->collapsed = 1; wDockHideIcons(originalDock); } if (originalDock->auto_raise_lower) wDockLower(originalDock); } } } // No matter what happened above, check to lower lastDock // Don't see why I commented out the following 2 lines /* if (lastDock->auto_raise_lower) wDockLower(lastDock); */ /* If docked (or tried to dock) to a auto_collapsing dock, unset * collapsed, so that wHandleAppIconMove doesn't collapse it * right away (the timer will take care of it) */ if (lastDock->auto_collapse) collapsed = 0; } else { if (originalDock != NULL) { /* Detaching a docked appicon */ if (superfluous) { if (!aicon->running && !wPreferences.no_animations) { /* We need to deselect it, even if is deselected in * wDockDetach(), because else DoKaboom() will fail. */ if (aicon->icon->selected) wIconSelect(aicon->icon); DoKaboom(scr, aicon->icon->core->window, x, y); } } wDockDetach(originalDock, aicon); if (originalDock->auto_collapse && !originalDock->collapsed) { originalDock->collapsed = 1; wDockHideIcons(originalDock); } if (originalDock->auto_raise_lower) wDockLower(originalDock); } } // Can't remember why the icon hiding is better done above than below (commented out) // Also, lastDock is quite different from originalDock /* if (collapsed) { lastDock->collapsed = 1; wDockHideIcons(lastDock); collapsed = 0; } */ if (superfluous) { if (ghost != None) XFreePixmap(dpy, ghost); XSetWindowBackground(dpy, scr->dock_shadow, scr->white_pixel); } if (showed_all_clips) { int i; for (i = 0; i < scr->workspace_count; i++) { if (i == scr->current_workspace) continue; wDockHideIcons(scr->workspaces[i]->clip); } } if (wPreferences.auto_arrange_icons && !(originalDock != NULL && docked)) /* Need to rearrange unless moving from dock to dock */ wArrangeIcons(scr, True); return hasMoved; } } } /* This function save the application icon and store the path in the Dictionary */ static void wApplicationSaveIconPathFor(const char *iconPath, const char *wm_instance, const char *wm_class) { WMPropList *dict = w_global.domain.window_attr->dictionary; WMPropList *adict, *key, *iconk; WMPropList *val; char *tmp; tmp = get_name_for_instance_class(wm_instance, wm_class); key = WMCreatePLString(tmp); wfree(tmp); adict = WMGetFromPLDictionary(dict, key); iconk = WMCreatePLString("Icon"); if (adict) { val = WMGetFromPLDictionary(adict, iconk); } else { /* no dictionary for app, so create one */ adict = WMCreatePLDictionary(NULL, NULL); WMPutInPLDictionary(dict, key, adict); WMReleasePropList(adict); val = NULL; } if (!val) { val = WMCreatePLString(iconPath); WMPutInPLDictionary(adict, iconk, val); WMReleasePropList(val); } else { val = NULL; } WMReleasePropList(key); WMReleasePropList(iconk); if (val && !wPreferences.flags.noupdates) UpdateDomainFile(w_global.domain.window_attr); } static WAppIcon *findDockIconFor(WDock *dock, Window main_window) { WAppIcon *aicon = NULL; aicon = wDockFindIconForWindow(dock, main_window); if (!aicon) { wDockTrackWindowLaunch(dock, main_window); aicon = wDockFindIconForWindow(dock, main_window); } return aicon; } static void create_appicon_from_dock(WWindow *wwin, WApplication *wapp, Window main_window) { WScreen *scr = wwin->screen_ptr; wapp->app_icon = NULL; if (scr->last_dock) wapp->app_icon = findDockIconFor(scr->last_dock, main_window); /* check main dock if we did not find it in last dock */ if (!wapp->app_icon && scr->dock) wapp->app_icon = findDockIconFor(scr->dock, main_window); /* check clips */ if (!wapp->app_icon) { int i; for (i = 0; i < scr->workspace_count; i++) { WDock *dock = scr->workspaces[i]->clip; if (dock) wapp->app_icon = findDockIconFor(dock, main_window); if (wapp->app_icon) break; } } /* Finally check drawers */ if (!wapp->app_icon) { WDrawerChain *dc; for (dc = scr->drawers; dc != NULL; dc = dc->next) { wapp->app_icon = findDockIconFor(dc->adrawer, main_window); if (wapp->app_icon) break; } } /* If created, then set some flags */ if (wapp->app_icon && !WFLAGP(wapp->main_window_desc, no_appicon)) { WWindow *mainw = wapp->main_window_desc; wapp->app_icon->running = 1; wapp->app_icon->icon->owner = mainw; if (mainw->wm_hints && (mainw->wm_hints->flags & IconWindowHint)) wapp->app_icon->icon->icon_win = mainw->wm_hints->icon_window; /* Update the icon images */ wIconUpdate(wapp->app_icon->icon); /* Paint it */ wAppIconPaint(wapp->app_icon); } } /* Add the appicon to the appiconlist */ static void add_to_appicon_list(WScreen *scr, WAppIcon *appicon) { appicon->prev = NULL; appicon->next = scr->app_icon_list; if (scr->app_icon_list) scr->app_icon_list->prev = appicon; scr->app_icon_list = appicon; } /* Remove the appicon from the appiconlist */ static void remove_from_appicon_list(WScreen *scr, WAppIcon *appicon) { if (appicon == scr->app_icon_list) { if (appicon->next) appicon->next->prev = NULL; scr->app_icon_list = appicon->next; } else { if (appicon->next) appicon->next->prev = appicon->prev; if (appicon->prev) appicon->prev->next = appicon->next; } appicon->prev = NULL; appicon->next = NULL; } /* Return the AppIcon associated with a given (Xlib) Window. */ WAppIcon *wAppIconFor(Window window) { WObjDescriptor *desc; if (window == None) return NULL; if (XFindContext(dpy, window, w_global.context.client_win, (XPointer *) & desc) == XCNOENT) return NULL; if (desc->parent_type == WCLASS_APPICON || desc->parent_type == WCLASS_DOCK_ICON) return desc->parent; return NULL; } ������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/geomview.h�������������������������������������������������������������������0000644�0001750�0001750�00000002175�13431646202�013556� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* geomview.h * * Copyright (c) 2000 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef GEOMVIEW_H #define GEOMVIEW_H typedef struct W_GeometryView WGeometryView; WGeometryView *WCreateGeometryView(WMScreen *scr); void WSetGeometryViewShownPosition(WGeometryView *gview, int x, int y); void WSetGeometryViewShownSize(WGeometryView *gview, unsigned width, unsigned height); #endif /* GEOMVIEW_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/winspector.h�����������������������������������������������������������������0000644�0001750�0001750�00000002317�13431646202�014127� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* winspector.h - window attribute inspector header file * * Window Maker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef WINSPECTOR_H_ #define WINSPECTOR_H_ #include "window.h" void wShowInspectorForWindow(WWindow *wwin); void wHideInspectorForWindow(WWindow *wwin); void wUnhideInspectorForWindow(WWindow *wwin); void wDestroyInspectorPanels(void); WWindow *wGetWindowOfInspectorForWindow(WWindow *wwin); void wCloseInspectorForWindow(WWindow *wwin); #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/menu.h�����������������������������������������������������������������������0000644�0001750�0001750�00000011114�13431646202�012671� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef WMMENU_H_ #define WMMENU_H_ #include "wcore.h" #define MI_DIAMOND 0 #define MI_CHECK 1 #define MI_MINIWINDOW 2 #define MI_HIDDEN 3 #define MI_SHADED 4 typedef struct WMenuEntry { int order; char *text; /* entry text */ char *rtext; /* text to show in the right part */ void (*callback)(struct WMenu *menu, struct WMenuEntry *entry); void (*free_cdata)(void *data); /* proc to be used to free clientdata */ void *clientdata; /* data to pass to callback */ int cascade; /* cascade menu index */ #ifdef USER_MENU WMPropList *instances; /* allowed instances */ #endif /* USER_MENU */ struct { unsigned int enabled:1; /* entry is selectable */ unsigned int indicator:1; /* left indicator */ unsigned int indicator_on:1; unsigned int indicator_type:3; unsigned int editable:1; } flags; } WMenuEntry; typedef struct WMenu { struct WMenu *parent; struct WMenu *brother; time_t timestamp; /* for the root menu. Last time * menu was reloaded */ /* decorations */ struct WFrameWindow *frame; WCoreWindow *menu; /* the window menu */ Pixmap menu_texture_data; int frame_x, frame_y; /* position of the frame in root*/ WMenuEntry **entries; /* array of entries. This is shared * by the menu and it's "brother" */ short alloced_entries; /* number of entries allocated in * entry array */ struct WMenu **cascades; /* array of cascades */ short cascade_no; short entry_no; /* number of entries */ short selected_entry; short entry_height; /* height of each entry */ WMHandlerID timer; /* timer for the autoscroll */ void *jump_back; /* jump back data */ /* to be called when some entry is edited */ void (*on_edit)(struct WMenu *menu, struct WMenuEntry *entry); /* to be called when destroyed */ void (*on_destroy)(struct WMenu *menu); struct { unsigned int titled:1; unsigned int realized:1; /* whether the window was configured */ unsigned int app_menu:1; /* this is a application or root menu */ unsigned int mapped:1; /* if menu is already mapped on screen*/ unsigned int buttoned:1; /* if the close button is visible * (menu was torn off) */ unsigned int open_to_left:1; /* direction to open submenus */ unsigned int lowered:1; unsigned int brother:1; /* if this is a copy of the menu*/ unsigned int editing:1; unsigned int jump_back_pending:1; unsigned int inside_handler:1; unsigned int shaded:1; } flags; } WMenu; void wMenuPaint(WMenu *menu); void wMenuDestroy(WMenu *menu, int recurse); void wMenuRealize(WMenu *menu); WMenuEntry *wMenuInsertCascade(WMenu *menu, int index, const char *text, WMenu *cascade); WMenuEntry *wMenuInsertCallback(WMenu *menu, int index, const char *text, void (*callback)(WMenu *menu, WMenuEntry *entry), void *clientdata); void wMenuEntrySetCascade(WMenu *menu, WMenuEntry *entry, WMenu *cascade); #define wMenuAddCallback(menu, text, callback, data) \ wMenuInsertCallback(menu, -1, text, callback, data) void wMenuRemoveItem(WMenu *menu, int index); WMenu *wMenuCreate(WScreen *screen, const char *title, int main_menu); WMenu *wMenuCreateForApp(WScreen *screen, const char *title, int main_menu); void wMenuMap(WMenu *menu); void wMenuMapAt(WMenu *menu, int x, int y, int keyboard); #define wMenuMapCopyAt(menu, x, y) wMenuMapAt((menu)->brother, (x), (y), False) void wMenuUnmap(WMenu *menu); void wMenuSetEnabled(WMenu *menu, int index, int enable); void wMenuMove(WMenu *menu, int x, int y, int submenus); void wMenuEntryRemoveCascade(WMenu *menu, WMenuEntry *entry); void wMenuScroll(WMenu *menu); WMenu *wMenuUnderPointer(WScreen *screen); void wMenuSaveState(WScreen *scr); void wMenuRestoreState(WScreen *scr); #endif ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/defaults.c�������������������������������������������������������������������0000644�0001750�0001750�00000307312�13642357774�013560� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* defaults.c - manage configuration through defaults db * * Window Maker window manager * * Copyright (c) 1997-2003 Alfredo K. Kojima * Copyright (c) 1998-2003 Dan Pascu * Copyright (c) 2014 Window Maker Team * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "wconfig.h" #include <stdio.h> #include <stdint.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <strings.h> #include <ctype.h> #include <time.h> #include <sys/types.h> #include <sys/stat.h> #include <limits.h> #include <signal.h> #ifndef PATH_MAX #define PATH_MAX DEFAULT_PATH_MAX #endif #include <X11/Xlib.h> #include <X11/Xutil.h> #include <X11/keysym.h> #include <wraster.h> #include "WindowMaker.h" #include "framewin.h" #include "window.h" #include "texture.h" #include "screen.h" #include "resources.h" #include "defaults.h" #include "keybind.h" #include "xmodifier.h" #include "icon.h" #include "main.h" #include "actions.h" #include "dock.h" #include "workspace.h" #include "properties.h" #include "misc.h" #include "winmenu.h" #define MAX_SHORTCUT_LENGTH 32 typedef struct _WDefaultEntry WDefaultEntry; typedef int (WDECallbackConvert) (WScreen *scr, WDefaultEntry *entry, WMPropList *plvalue, void *addr, void **tdata); typedef int (WDECallbackUpdate) (WScreen *scr, WDefaultEntry *entry, void *tdata, void *extra_data); struct _WDefaultEntry { const char *key; const char *default_value; void *extra_data; void *addr; WDECallbackConvert *convert; WDECallbackUpdate *update; WMPropList *plkey; WMPropList *plvalue; /* default value */ }; /* used to map strings to integers */ typedef struct { const char *string; short value; char is_alias; } WOptionEnumeration; /* type converters */ static WDECallbackConvert getBool; static WDECallbackConvert getInt; static WDECallbackConvert getCoord; static WDECallbackConvert getPathList; static WDECallbackConvert getEnum; static WDECallbackConvert getTexture; static WDECallbackConvert getWSBackground; static WDECallbackConvert getWSSpecificBackground; static WDECallbackConvert getFont; static WDECallbackConvert getColor; static WDECallbackConvert getKeybind; static WDECallbackConvert getModMask; static WDECallbackConvert getPropList; /* value setting functions */ static WDECallbackUpdate setJustify; static WDECallbackUpdate setClearance; static WDECallbackUpdate setIfDockPresent; static WDECallbackUpdate setClipMergedInDock; static WDECallbackUpdate setWrapAppiconsInDock; static WDECallbackUpdate setStickyIcons; static WDECallbackUpdate setWidgetColor; static WDECallbackUpdate setIconTile; static WDECallbackUpdate setWinTitleFont; static WDECallbackUpdate setMenuTitleFont; static WDECallbackUpdate setMenuTextFont; static WDECallbackUpdate setIconTitleFont; static WDECallbackUpdate setIconTitleColor; static WDECallbackUpdate setIconTitleBack; static WDECallbackUpdate setFrameBorderWidth; static WDECallbackUpdate setFrameBorderColor; static WDECallbackUpdate setFrameFocusedBorderColor; static WDECallbackUpdate setFrameSelectedBorderColor; static WDECallbackUpdate setLargeDisplayFont; static WDECallbackUpdate setWTitleColor; static WDECallbackUpdate setFTitleBack; static WDECallbackUpdate setPTitleBack; static WDECallbackUpdate setUTitleBack; static WDECallbackUpdate setResizebarBack; static WDECallbackUpdate setWorkspaceBack; static WDECallbackUpdate setWorkspaceSpecificBack; static WDECallbackUpdate setMenuTitleColor; static WDECallbackUpdate setMenuTextColor; static WDECallbackUpdate setMenuDisabledColor; static WDECallbackUpdate setMenuTitleBack; static WDECallbackUpdate setMenuTextBack; static WDECallbackUpdate setHightlight; static WDECallbackUpdate setHightlightText; static WDECallbackUpdate setKeyGrab; static WDECallbackUpdate setDoubleClick; static WDECallbackUpdate setIconPosition; static WDECallbackUpdate setWorkspaceMapBackground; static WDECallbackUpdate setClipTitleFont; static WDECallbackUpdate setClipTitleColor; static WDECallbackUpdate setMenuStyle; static WDECallbackUpdate setSwPOptions; static WDECallbackUpdate updateUsableArea; static WDECallbackUpdate setModifierKeyLabels; static WDECallbackConvert getCursor; static WDECallbackUpdate setCursor; /* * Tables to convert strings to enumeration values. * Values stored are char */ /* WARNING: sum of length of all value strings must not exceed * this value */ #define TOTAL_VALUES_LENGTH 80 #define REFRESH_WINDOW_TEXTURES (1<<0) #define REFRESH_MENU_TEXTURE (1<<1) #define REFRESH_MENU_FONT (1<<2) #define REFRESH_MENU_COLOR (1<<3) #define REFRESH_MENU_TITLE_TEXTURE (1<<4) #define REFRESH_MENU_TITLE_FONT (1<<5) #define REFRESH_MENU_TITLE_COLOR (1<<6) #define REFRESH_WINDOW_TITLE_COLOR (1<<7) #define REFRESH_WINDOW_FONT (1<<8) #define REFRESH_ICON_TILE (1<<9) #define REFRESH_ICON_FONT (1<<10) #define REFRESH_BUTTON_IMAGES (1<<11) #define REFRESH_ICON_TITLE_COLOR (1<<12) #define REFRESH_ICON_TITLE_BACK (1<<13) #define REFRESH_WORKSPACE_MENU (1<<14) #define REFRESH_FRAME_BORDER REFRESH_MENU_FONT|REFRESH_WINDOW_FONT static WOptionEnumeration seFocusModes[] = { {"Manual", WKF_CLICK, 0}, {"ClickToFocus", WKF_CLICK, 1}, {"Sloppy", WKF_SLOPPY, 0}, {"SemiAuto", WKF_SLOPPY, 1}, {"Auto", WKF_SLOPPY, 1}, {NULL, 0, 0} }; static WOptionEnumeration seTitlebarModes[] = { {"new", TS_NEW, 0}, {"old", TS_OLD, 0}, {"next", TS_NEXT, 0}, {NULL, 0, 0} }; static WOptionEnumeration seColormapModes[] = { {"Manual", WCM_CLICK, 0}, {"ClickToFocus", WCM_CLICK, 1}, {"Auto", WCM_POINTER, 0}, {"FocusFollowMouse", WCM_POINTER, 1}, {NULL, 0, 0} }; static WOptionEnumeration sePlacements[] = { {"Auto", WPM_AUTO, 0}, {"Smart", WPM_SMART, 0}, {"Cascade", WPM_CASCADE, 0}, {"Random", WPM_RANDOM, 0}, {"Manual", WPM_MANUAL, 0}, {"Center", WPM_CENTER, 0}, {NULL, 0, 0} }; static WOptionEnumeration seGeomDisplays[] = { {"None", WDIS_NONE, 0}, {"Center", WDIS_CENTER, 0}, {"Corner", WDIS_TOPLEFT, 0}, {"Floating", WDIS_FRAME_CENTER, 0}, {"Line", WDIS_NEW, 0}, {NULL, 0, 0} }; static WOptionEnumeration seSpeeds[] = { {"UltraFast", SPEED_ULTRAFAST, 0}, {"Fast", SPEED_FAST, 0}, {"Medium", SPEED_MEDIUM, 0}, {"Slow", SPEED_SLOW, 0}, {"UltraSlow", SPEED_ULTRASLOW, 0}, {NULL, 0, 0} }; static WOptionEnumeration seMouseButtonActions[] = { {"None", WA_NONE, 0}, {"SelectWindows", WA_SELECT_WINDOWS, 0}, {"OpenApplicationsMenu", WA_OPEN_APPMENU, 0}, {"OpenWindowListMenu", WA_OPEN_WINLISTMENU, 0}, {"MoveToPrevWorkspace", WA_MOVE_PREVWORKSPACE, 0}, {"MoveToNextWorkspace", WA_MOVE_NEXTWORKSPACE, 0}, {"MoveToPrevWindow", WA_MOVE_PREVWINDOW, 0}, {"MoveToNextWindow", WA_MOVE_NEXTWINDOW, 0}, {NULL, 0, 0} }; static WOptionEnumeration seMouseWheelActions[] = { {"None", WA_NONE, 0}, {"SwitchWorkspaces", WA_SWITCH_WORKSPACES, 0}, {"SwitchWindows", WA_SWITCH_WINDOWS, 0}, {NULL, 0, 0} }; static WOptionEnumeration seIconificationStyles[] = { {"Zoom", WIS_ZOOM, 0}, {"Twist", WIS_TWIST, 0}, {"Flip", WIS_FLIP, 0}, {"None", WIS_NONE, 0}, {"random", WIS_RANDOM, 0}, {NULL, 0, 0} }; static WOptionEnumeration seJustifications[] = { {"Left", WTJ_LEFT, 0}, {"Center", WTJ_CENTER, 0}, {"Right", WTJ_RIGHT, 0}, {NULL, 0, 0} }; static WOptionEnumeration seIconPositions[] = { {"blv", IY_BOTTOM | IY_LEFT | IY_VERT, 0}, {"blh", IY_BOTTOM | IY_LEFT | IY_HORIZ, 0}, {"brv", IY_BOTTOM | IY_RIGHT | IY_VERT, 0}, {"brh", IY_BOTTOM | IY_RIGHT | IY_HORIZ, 0}, {"tlv", IY_TOP | IY_LEFT | IY_VERT, 0}, {"tlh", IY_TOP | IY_LEFT | IY_HORIZ, 0}, {"trv", IY_TOP | IY_RIGHT | IY_VERT, 0}, {"trh", IY_TOP | IY_RIGHT | IY_HORIZ, 0}, {NULL, 0, 0} }; static WOptionEnumeration seMenuStyles[] = { {"normal", MS_NORMAL, 0}, {"singletexture", MS_SINGLE_TEXTURE, 0}, {"flat", MS_FLAT, 0}, {NULL, 0, 0} }; static WOptionEnumeration seDisplayPositions[] = { {"none", WD_NONE, 0}, {"center", WD_CENTER, 0}, {"top", WD_TOP, 0}, {"bottom", WD_BOTTOM, 0}, {"topleft", WD_TOPLEFT, 0}, {"topright", WD_TOPRIGHT, 0}, {"bottomleft", WD_BOTTOMLEFT, 0}, {"bottomright", WD_BOTTOMRIGHT, 0}, {NULL, 0, 0} }; static WOptionEnumeration seWorkspaceBorder[] = { {"None", WB_NONE, 0}, {"LeftRight", WB_LEFTRIGHT, 0}, {"TopBottom", WB_TOPBOTTOM, 0}, {"AllDirections", WB_ALLDIRS, 0}, {NULL, 0, 0} }; static WOptionEnumeration seDragMaximizedWindow[] = { {"Move", DRAGMAX_MOVE, 0}, {"RestoreGeometry", DRAGMAX_RESTORE, 0}, {"Unmaximize", DRAGMAX_UNMAXIMIZE, 0}, {"NoMove", DRAGMAX_NOMOVE, 0}, {NULL, 0, 0} }; /* * ALL entries in the tables below NEED to have a default value * defined, and this value needs to be correct. * * Also add the default key/value pair to WindowMaker/Defaults/WindowMaker.in */ /* these options will only affect the window manager on startup * * static defaults can't access the screen data, because it is * created after these defaults are read */ WDefaultEntry staticOptionList[] = { {"ColormapSize", "4", NULL, &wPreferences.cmap_size, getInt, NULL, NULL, NULL}, {"DisableDithering", "NO", NULL, &wPreferences.no_dithering, getBool, NULL, NULL, NULL}, {"IconSize", "64", NULL, &wPreferences.icon_size, getInt, NULL, NULL, NULL}, {"ModifierKey", "Mod1", NULL, &wPreferences.modifier_mask, getModMask, NULL, NULL, NULL}, {"FocusMode", "manual", seFocusModes, /* have a problem when switching from */ &wPreferences.focus_mode, getEnum, NULL, NULL, NULL}, /* manual to sloppy without restart */ {"NewStyle", "new", seTitlebarModes, &wPreferences.new_style, getEnum, NULL, NULL, NULL}, {"DisableDock", "NO", (void *)WM_DOCK, NULL, getBool, setIfDockPresent, NULL, NULL}, {"DisableClip", "NO", (void *)WM_CLIP, NULL, getBool, setIfDockPresent, NULL, NULL}, {"DisableDrawers", "NO", (void *)WM_DRAWER, NULL, getBool, setIfDockPresent, NULL, NULL}, {"ClipMergedInDock", "NO", NULL, NULL, getBool, setClipMergedInDock, NULL, NULL}, {"DisableMiniwindows", "NO", NULL, &wPreferences.disable_miniwindows, getBool, NULL, NULL, NULL}, {"EnableWorkspacePager", "NO", NULL, &wPreferences.enable_workspace_pager, getBool, NULL, NULL, NULL}, {"SwitchPanelIconSize", "64", NULL, &wPreferences.switch_panel_icon_size, getInt, NULL, NULL, NULL}, }; #define NUM2STRING_(x) #x #define NUM2STRING(x) NUM2STRING_(x) WDefaultEntry optionList[] = { /* dynamic options */ {"IconPosition", "blh", seIconPositions, &wPreferences.icon_yard, getEnum, setIconPosition, NULL, NULL}, {"IconificationStyle", "Zoom", seIconificationStyles, &wPreferences.iconification_style, getEnum, NULL, NULL, NULL}, {"EnforceIconMargin", "NO", NULL, &wPreferences.enforce_icon_margin, getBool, NULL, NULL, NULL}, {"DisableWSMouseActions", "NO", NULL, &wPreferences.disable_root_mouse, getBool, NULL, NULL, NULL}, {"MouseLeftButtonAction", "SelectWindows", seMouseButtonActions, &wPreferences.mouse_button1, getEnum, NULL, NULL, NULL}, {"MouseMiddleButtonAction", "OpenWindowListMenu", seMouseButtonActions, &wPreferences.mouse_button2, getEnum, NULL, NULL, NULL}, {"MouseRightButtonAction", "OpenApplicationsMenu", seMouseButtonActions, &wPreferences.mouse_button3, getEnum, NULL, NULL, NULL}, {"MouseBackwardButtonAction", "None", seMouseButtonActions, &wPreferences.mouse_button8, getEnum, NULL, NULL, NULL}, {"MouseForwardButtonAction", "None", seMouseButtonActions, &wPreferences.mouse_button9, getEnum, NULL, NULL, NULL}, {"MouseWheelAction", "None", seMouseWheelActions, &wPreferences.mouse_wheel_scroll, getEnum, NULL, NULL, NULL}, {"MouseWheelTiltAction", "None", seMouseWheelActions, &wPreferences.mouse_wheel_tilt, getEnum, NULL, NULL, NULL}, {"PixmapPath", DEF_PIXMAP_PATHS, NULL, &wPreferences.pixmap_path, getPathList, NULL, NULL, NULL}, {"IconPath", DEF_ICON_PATHS, NULL, &wPreferences.icon_path, getPathList, NULL, NULL, NULL}, {"ColormapMode", "auto", seColormapModes, &wPreferences.colormap_mode, getEnum, NULL, NULL, NULL}, {"AutoFocus", "YES", NULL, &wPreferences.auto_focus, getBool, NULL, NULL, NULL}, {"RaiseDelay", "0", NULL, &wPreferences.raise_delay, getInt, NULL, NULL, NULL}, {"CirculateRaise", "NO", NULL, &wPreferences.circ_raise, getBool, NULL, NULL, NULL}, {"Superfluous", "YES", NULL, &wPreferences.superfluous, getBool, NULL, NULL, NULL}, {"AdvanceToNewWorkspace", "NO", NULL, &wPreferences.ws_advance, getBool, NULL, NULL, NULL}, {"CycleWorkspaces", "NO", NULL, &wPreferences.ws_cycle, getBool, NULL, NULL, NULL}, {"WorkspaceNameDisplayPosition", "center", seDisplayPositions, &wPreferences.workspace_name_display_position, getEnum, NULL, NULL, NULL}, {"WorkspaceBorder", "None", seWorkspaceBorder, &wPreferences.workspace_border_position, getEnum, updateUsableArea, NULL, NULL}, {"WorkspaceBorderSize", "0", NULL, &wPreferences.workspace_border_size, getInt, updateUsableArea, NULL, NULL}, {"StickyIcons", "NO", NULL, &wPreferences.sticky_icons, getBool, setStickyIcons, NULL, NULL}, {"SaveSessionOnExit", "NO", NULL, &wPreferences.save_session_on_exit, getBool, NULL, NULL, NULL}, {"WrapMenus", "NO", NULL, &wPreferences.wrap_menus, getBool, NULL, NULL, NULL}, {"ScrollableMenus", "YES", NULL, &wPreferences.scrollable_menus, getBool, NULL, NULL, NULL}, {"MenuScrollSpeed", "fast", seSpeeds, &wPreferences.menu_scroll_speed, getEnum, NULL, NULL, NULL}, {"IconSlideSpeed", "fast", seSpeeds, &wPreferences.icon_slide_speed, getEnum, NULL, NULL, NULL}, {"ShadeSpeed", "fast", seSpeeds, &wPreferences.shade_speed, getEnum, NULL, NULL, NULL}, {"BounceAppIconsWhenUrgent", "YES", NULL, &wPreferences.bounce_appicons_when_urgent, getBool, NULL, NULL, NULL}, {"RaiseAppIconsWhenBouncing", "NO", NULL, &wPreferences.raise_appicons_when_bouncing, getBool, NULL, NULL, NULL}, {"DoNotMakeAppIconsBounce", "NO", NULL, &wPreferences.do_not_make_appicons_bounce, getBool, NULL, NULL, NULL}, {"DoubleClickTime", "250", (void *)&wPreferences.dblclick_time, &wPreferences.dblclick_time, getInt, setDoubleClick, NULL, NULL}, {"ClipAutoraiseDelay", "600", NULL, &wPreferences.clip_auto_raise_delay, getInt, NULL, NULL, NULL}, {"ClipAutolowerDelay", "1000", NULL, &wPreferences.clip_auto_lower_delay, getInt, NULL, NULL, NULL}, {"ClipAutoexpandDelay", "600", NULL, &wPreferences.clip_auto_expand_delay, getInt, NULL, NULL, NULL}, {"ClipAutocollapseDelay", "1000", NULL, &wPreferences.clip_auto_collapse_delay, getInt, NULL, NULL, NULL}, {"WrapAppiconsInDock", "YES", NULL, NULL, getBool, setWrapAppiconsInDock, NULL, NULL}, {"AlignSubmenus", "NO", NULL, &wPreferences.align_menus, getBool, NULL, NULL, NULL}, {"ViKeyMenus", "NO", NULL, &wPreferences.vi_key_menus, getBool, NULL, NULL, NULL}, {"OpenTransientOnOwnerWorkspace", "NO", NULL, &wPreferences.open_transients_with_parent, getBool, NULL, NULL, NULL}, {"WindowPlacement", "auto", sePlacements, &wPreferences.window_placement, getEnum, NULL, NULL, NULL}, {"IgnoreFocusClick", "NO", NULL, &wPreferences.ignore_focus_click, getBool, NULL, NULL, NULL}, {"UseSaveUnders", "NO", NULL, &wPreferences.use_saveunders, getBool, NULL, NULL, NULL}, {"OpaqueMove", "YES", NULL, &wPreferences.opaque_move, getBool, NULL, NULL, NULL}, {"OpaqueResize", "NO", NULL, &wPreferences.opaque_resize, getBool, NULL, NULL, NULL}, {"OpaqueMoveResizeKeyboard", "NO", NULL, &wPreferences.opaque_move_resize_keyboard, getBool, NULL, NULL, NULL}, {"DisableAnimations", "NO", NULL, &wPreferences.no_animations, getBool, NULL, NULL, NULL}, {"DontLinkWorkspaces", "YES", NULL, &wPreferences.no_autowrap, getBool, NULL, NULL, NULL}, {"WindowSnapping", "NO", NULL, &wPreferences.window_snapping, getBool, NULL, NULL, NULL}, {"SnapEdgeDetect", "1", NULL, &wPreferences.snap_edge_detect, getInt, NULL, NULL, NULL}, {"SnapCornerDetect", "10", NULL, &wPreferences.snap_corner_detect, getInt, NULL, NULL, NULL}, {"SnapToTopMaximizesFullscreen", "NO", NULL, &wPreferences.snap_to_top_maximizes_fullscreen, getBool, NULL, NULL, NULL}, {"DragMaximizedWindow", "Move", seDragMaximizedWindow, &wPreferences.drag_maximized_window, getEnum, NULL, NULL, NULL}, {"MoveHalfMaximizedWindowsBetweenScreens", "NO", NULL, &wPreferences.move_half_max_between_heads, getBool, NULL, NULL, NULL}, {"AlternativeHalfMaximized", "NO", NULL, &wPreferences.alt_half_maximize, getBool, NULL, NULL, NULL}, {"PointerWithHalfMaxWindows", "NO", NULL, &wPreferences.pointer_with_half_max_windows, getBool, NULL, NULL, NULL}, {"HighlightActiveApp", "YES", NULL, &wPreferences.highlight_active_app, getBool, NULL, NULL, NULL}, {"AutoArrangeIcons", "NO", NULL, &wPreferences.auto_arrange_icons, getBool, NULL, NULL, NULL}, {"NoWindowOverDock", "NO", NULL, &wPreferences.no_window_over_dock, getBool, updateUsableArea, NULL, NULL}, {"NoWindowOverIcons", "NO", NULL, &wPreferences.no_window_over_icons, getBool, updateUsableArea, NULL, NULL}, {"WindowPlaceOrigin", "(64, 0)", NULL, &wPreferences.window_place_origin, getCoord, NULL, NULL, NULL}, {"ResizeDisplay", "center", seGeomDisplays, &wPreferences.size_display, getEnum, NULL, NULL, NULL}, {"MoveDisplay", "floating", seGeomDisplays, &wPreferences.move_display, getEnum, NULL, NULL, NULL}, {"DontConfirmKill", "NO", NULL, &wPreferences.dont_confirm_kill, getBool, NULL, NULL, NULL}, {"WindowTitleBalloons", "YES", NULL, &wPreferences.window_balloon, getBool, NULL, NULL, NULL}, {"MiniwindowTitleBalloons", "NO", NULL, &wPreferences.miniwin_title_balloon, getBool, NULL, NULL, NULL}, {"MiniwindowPreviewBalloons", "NO", NULL, &wPreferences.miniwin_preview_balloon, getBool, NULL, NULL, NULL}, {"AppIconBalloons", "NO", NULL, &wPreferences.appicon_balloon, getBool, NULL, NULL, NULL}, {"HelpBalloons", "NO", NULL, &wPreferences.help_balloon, getBool, NULL, NULL, NULL}, {"EdgeResistance", "30", NULL, &wPreferences.edge_resistance, getInt, NULL, NULL, NULL}, {"ResizeIncrement", "0", NULL, &wPreferences.resize_increment, getInt, NULL, NULL, NULL}, {"Attraction", "NO", NULL, &wPreferences.attract, getBool, NULL, NULL, NULL}, {"DisableBlinking", "NO", NULL, &wPreferences.dont_blink, getBool, NULL, NULL, NULL}, {"SingleClickLaunch", "NO", NULL, &wPreferences.single_click, getBool, NULL, NULL, NULL}, {"StrictWindozeCycle", "YES", NULL, &wPreferences.strict_windoze_cycle, getBool, NULL, NULL, NULL}, {"SwitchPanelOnlyOpen", "NO", NULL, &wPreferences.panel_only_open, getBool, NULL, NULL, NULL}, {"MiniPreviewSize", "128", NULL, &wPreferences.minipreview_size, getInt, NULL, NULL, NULL}, {"IgnoreGtkHints", "NO", NULL, &wPreferences.ignore_gtk_decoration_hints, getBool, NULL, NULL, NULL}, /* style options */ {"MenuStyle", "normal", seMenuStyles, &wPreferences.menu_style, getEnum, setMenuStyle, NULL, NULL}, {"WidgetColor", "(solid, gray)", NULL, NULL, getTexture, setWidgetColor, NULL, NULL}, {"WorkspaceSpecificBack", "()", NULL, NULL, getWSSpecificBackground, setWorkspaceSpecificBack, NULL, NULL}, /* WorkspaceBack must come after WorkspaceSpecificBack or * WorkspaceBack won't know WorkspaceSpecificBack was also * specified and 2 copies of wmsetbg will be launched */ {"WorkspaceBack", "(solid, \"rgb:50/50/75\")", NULL, NULL, getWSBackground, setWorkspaceBack, NULL, NULL}, {"SmoothWorkspaceBack", "NO", NULL, NULL, getBool, NULL, NULL, NULL}, {"IconBack", "(dgradient, \"rgb:a6/a6/b6\", \"rgb:51/55/61\")", NULL, NULL, getTexture, setIconTile, NULL, NULL}, {"TitleJustify", "center", seJustifications, &wPreferences.title_justification, getEnum, setJustify, NULL, NULL}, {"WindowTitleFont", DEF_TITLE_FONT, NULL, NULL, getFont, setWinTitleFont, NULL, NULL}, {"WindowTitleExtendSpace", DEF_WINDOW_TITLE_EXTEND_SPACE, NULL, &wPreferences.window_title_clearance, getInt, setClearance, NULL, NULL}, {"WindowTitleMinHeight", "0", NULL, &wPreferences.window_title_min_height, getInt, setClearance, NULL, NULL}, {"WindowTitleMaxHeight", NUM2STRING(INT_MAX), NULL, &wPreferences.window_title_max_height, getInt, setClearance, NULL, NULL}, {"MenuTitleExtendSpace", DEF_MENU_TITLE_EXTEND_SPACE, NULL, &wPreferences.menu_title_clearance, getInt, setClearance, NULL, NULL}, {"MenuTitleMinHeight", "0", NULL, &wPreferences.menu_title_min_height, getInt, setClearance, NULL, NULL}, {"MenuTitleMaxHeight", NUM2STRING(INT_MAX), NULL, &wPreferences.menu_title_max_height, getInt, setClearance, NULL, NULL}, {"MenuTextExtendSpace", DEF_MENU_TEXT_EXTEND_SPACE, NULL, &wPreferences.menu_text_clearance, getInt, setClearance, NULL, NULL}, {"MenuTitleFont", DEF_MENU_TITLE_FONT, NULL, NULL, getFont, setMenuTitleFont, NULL, NULL}, {"MenuTextFont", DEF_MENU_ENTRY_FONT, NULL, NULL, getFont, setMenuTextFont, NULL, NULL}, {"IconTitleFont", DEF_ICON_TITLE_FONT, NULL, NULL, getFont, setIconTitleFont, NULL, NULL}, {"ClipTitleFont", DEF_CLIP_TITLE_FONT, NULL, NULL, getFont, setClipTitleFont, NULL, NULL}, {"ShowClipTitle", "YES", NULL, &wPreferences.show_clip_title, getBool, NULL, NULL, NULL}, {"LargeDisplayFont", DEF_WORKSPACE_NAME_FONT, NULL, NULL, getFont, setLargeDisplayFont, NULL, NULL}, {"HighlightColor", "white", NULL, NULL, getColor, setHightlight, NULL, NULL}, {"HighlightTextColor", "black", NULL, NULL, getColor, setHightlightText, NULL, NULL}, {"ClipTitleColor", "black", (void *)CLIP_NORMAL, NULL, getColor, setClipTitleColor, NULL, NULL}, {"CClipTitleColor", "\"rgb:61/61/61\"", (void *)CLIP_COLLAPSED, NULL, getColor, setClipTitleColor, NULL, NULL}, {"FTitleColor", "white", (void *)WS_FOCUSED, NULL, getColor, setWTitleColor, NULL, NULL}, {"PTitleColor", "white", (void *)WS_PFOCUSED, NULL, getColor, setWTitleColor, NULL, NULL}, {"UTitleColor", "black", (void *)WS_UNFOCUSED, NULL, getColor, setWTitleColor, NULL, NULL}, {"FTitleBack", "(solid, black)", NULL, NULL, getTexture, setFTitleBack, NULL, NULL}, {"PTitleBack", "(solid, gray40)", NULL, NULL, getTexture, setPTitleBack, NULL, NULL}, {"UTitleBack", "(solid, \"rgb:aa/aa/aa\")", NULL, NULL, getTexture, setUTitleBack, NULL, NULL}, {"ResizebarBack", "(solid, \"rgb:aa/aa/aa\")", NULL, NULL, getTexture, setResizebarBack, NULL, NULL}, {"MenuTitleColor", "white", NULL, NULL, getColor, setMenuTitleColor, NULL, NULL}, {"MenuTextColor", "black", NULL, NULL, getColor, setMenuTextColor, NULL, NULL}, {"MenuDisabledColor", "gray50", NULL, NULL, getColor, setMenuDisabledColor, NULL, NULL}, {"MenuTitleBack", "(solid, black)", NULL, NULL, getTexture, setMenuTitleBack, NULL, NULL}, {"MenuTextBack", "(solid, \"rgb:aa/aa/aa\")", NULL, NULL, getTexture, setMenuTextBack, NULL, NULL}, {"IconTitleColor", "white", NULL, NULL, getColor, setIconTitleColor, NULL, NULL}, {"IconTitleBack", "black", NULL, NULL, getColor, setIconTitleBack, NULL, NULL}, {"SwitchPanelImages", "(swtile.png, swback.png, 30, 40)", &wPreferences, NULL, getPropList, setSwPOptions, NULL, NULL}, {"ModifierKeyLabels", "(\"Shift+\", \"Control+\", \"Mod1+\", \"Mod2+\", \"Mod3+\", \"Mod4+\", \"Mod5+\")", &wPreferences, NULL, getPropList, setModifierKeyLabels, NULL, NULL}, {"FrameBorderWidth", "1", NULL, NULL, getInt, setFrameBorderWidth, NULL, NULL}, {"FrameBorderColor", "black", NULL, NULL, getColor, setFrameBorderColor, NULL, NULL}, {"FrameFocusedBorderColor", "black", NULL, NULL, getColor, setFrameFocusedBorderColor, NULL, NULL}, {"FrameSelectedBorderColor", "white", NULL, NULL, getColor, setFrameSelectedBorderColor, NULL, NULL}, {"WorkspaceMapBack", "(solid, black)", NULL, NULL, getTexture, setWorkspaceMapBackground, NULL, NULL}, /* keybindings */ {"RootMenuKey", "F12", (void *)WKBD_ROOTMENU, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"WindowListKey", "F11", (void *)WKBD_WINDOWLIST, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"WindowMenuKey", "Control+Escape", (void *)WKBD_WINDOWMENU, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"DockRaiseLowerKey", "None", (void*)WKBD_DOCKRAISELOWER, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"ClipRaiseLowerKey", "None", (void *)WKBD_CLIPRAISELOWER, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"MiniaturizeKey", "Mod1+M", (void *)WKBD_MINIATURIZE, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"MinimizeAllKey", "None", (void *)WKBD_MINIMIZEALL, NULL, getKeybind, setKeyGrab, NULL, NULL }, {"HideKey", "Mod1+H", (void *)WKBD_HIDE, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"HideOthersKey", "None", (void *)WKBD_HIDE_OTHERS, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"MoveResizeKey", "None", (void *)WKBD_MOVERESIZE, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"CloseKey", "None", (void *)WKBD_CLOSE, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"MaximizeKey", "None", (void *)WKBD_MAXIMIZE, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"VMaximizeKey", "None", (void *)WKBD_VMAXIMIZE, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"HMaximizeKey", "None", (void *)WKBD_HMAXIMIZE, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"LHMaximizeKey", "None", (void*)WKBD_LHMAXIMIZE, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"RHMaximizeKey", "None", (void*)WKBD_RHMAXIMIZE, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"THMaximizeKey", "None", (void*)WKBD_THMAXIMIZE, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"BHMaximizeKey", "None", (void*)WKBD_BHMAXIMIZE, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"LTCMaximizeKey", "None", (void*)WKBD_LTCMAXIMIZE, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"RTCMaximizeKey", "None", (void*)WKBD_RTCMAXIMIZE, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"LBCMaximizeKey", "None", (void*)WKBD_LBCMAXIMIZE, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"RBCMaximizeKey", "None", (void*)WKBD_RBCMAXIMIZE, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"MaximusKey", "None", (void*)WKBD_MAXIMUS, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"KeepOnTopKey", "None", (void *)WKBD_KEEP_ON_TOP, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"KeepAtBottomKey", "None", (void *)WKBD_KEEP_AT_BOTTOM, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"OmnipresentKey", "None", (void *)WKBD_OMNIPRESENT, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"RaiseKey", "Mod1+Up", (void *)WKBD_RAISE, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"LowerKey", "Mod1+Down", (void *)WKBD_LOWER, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"RaiseLowerKey", "None", (void *)WKBD_RAISELOWER, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"ShadeKey", "None", (void *)WKBD_SHADE, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"SelectKey", "None", (void *)WKBD_SELECT, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"WorkspaceMapKey", "None", (void *)WKBD_WORKSPACEMAP, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"FocusNextKey", "Mod1+Tab", (void *)WKBD_FOCUSNEXT, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"FocusPrevKey", "Mod1+Shift+Tab", (void *)WKBD_FOCUSPREV, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"GroupNextKey", "None", (void *)WKBD_GROUPNEXT, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"GroupPrevKey", "None", (void *)WKBD_GROUPPREV, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"NextWorkspaceKey", "Mod1+Control+Right", (void *)WKBD_NEXTWORKSPACE, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"PrevWorkspaceKey", "Mod1+Control+Left", (void *)WKBD_PREVWORKSPACE, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"LastWorkspaceKey", "None", (void *)WKBD_LASTWORKSPACE, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"NextWorkspaceLayerKey", "None", (void *)WKBD_NEXTWSLAYER, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"PrevWorkspaceLayerKey", "None", (void *)WKBD_PREVWSLAYER, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"Workspace1Key", "Mod1+1", (void *)WKBD_WORKSPACE1, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"Workspace2Key", "Mod1+2", (void *)WKBD_WORKSPACE2, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"Workspace3Key", "Mod1+3", (void *)WKBD_WORKSPACE3, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"Workspace4Key", "Mod1+4", (void *)WKBD_WORKSPACE4, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"Workspace5Key", "Mod1+5", (void *)WKBD_WORKSPACE5, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"Workspace6Key", "Mod1+6", (void *)WKBD_WORKSPACE6, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"Workspace7Key", "Mod1+7", (void *)WKBD_WORKSPACE7, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"Workspace8Key", "Mod1+8", (void *)WKBD_WORKSPACE8, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"Workspace9Key", "Mod1+9", (void *)WKBD_WORKSPACE9, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"Workspace10Key", "Mod1+0", (void *)WKBD_WORKSPACE10, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"MoveToWorkspace1Key", "None", (void *)WKBD_MOVE_WORKSPACE1, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"MoveToWorkspace2Key", "None", (void *)WKBD_MOVE_WORKSPACE2, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"MoveToWorkspace3Key", "None", (void *)WKBD_MOVE_WORKSPACE3, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"MoveToWorkspace4Key", "None", (void *)WKBD_MOVE_WORKSPACE4, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"MoveToWorkspace5Key", "None", (void *)WKBD_MOVE_WORKSPACE5, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"MoveToWorkspace6Key", "None", (void *)WKBD_MOVE_WORKSPACE6, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"MoveToWorkspace7Key", "None", (void *)WKBD_MOVE_WORKSPACE7, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"MoveToWorkspace8Key", "None", (void *)WKBD_MOVE_WORKSPACE8, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"MoveToWorkspace9Key", "None", (void *)WKBD_MOVE_WORKSPACE9, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"MoveToWorkspace10Key", "None", (void *)WKBD_MOVE_WORKSPACE10, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"MoveToNextWorkspaceKey", "None", (void *)WKBD_MOVE_NEXTWORKSPACE, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"MoveToPrevWorkspaceKey", "None", (void *)WKBD_MOVE_PREVWORKSPACE, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"MoveToLastWorkspaceKey", "None", (void *)WKBD_MOVE_LASTWORKSPACE, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"MoveToNextWorkspaceLayerKey", "None", (void *)WKBD_MOVE_NEXTWSLAYER, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"MoveToPrevWorkspaceLayerKey", "None", (void *)WKBD_MOVE_PREVWSLAYER, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"WindowShortcut1Key", "None", (void *)WKBD_WINDOW1, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"WindowShortcut2Key", "None", (void *)WKBD_WINDOW2, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"WindowShortcut3Key", "None", (void *)WKBD_WINDOW3, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"WindowShortcut4Key", "None", (void *)WKBD_WINDOW4, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"WindowShortcut5Key", "None", (void *)WKBD_WINDOW5, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"WindowShortcut6Key", "None", (void *)WKBD_WINDOW6, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"WindowShortcut7Key", "None", (void *)WKBD_WINDOW7, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"WindowShortcut8Key", "None", (void *)WKBD_WINDOW8, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"WindowShortcut9Key", "None", (void *)WKBD_WINDOW9, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"WindowShortcut10Key", "None", (void *)WKBD_WINDOW10, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"MoveTo12to6Head", "None", (void *)WKBD_MOVE_12_TO_6_HEAD, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"MoveTo6to12Head", "None", (void *)WKBD_MOVE_6_TO_12_HEAD, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"WindowRelaunchKey", "None", (void *)WKBD_RELAUNCH, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"ScreenSwitchKey", "None", (void *)WKBD_SWITCH_SCREEN, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"RunKey", "None", (void *)WKBD_RUN, NULL, getKeybind, setKeyGrab, NULL, NULL}, #ifdef KEEP_XKB_LOCK_STATUS {"ToggleKbdModeKey", "None", (void *)WKBD_TOGGLE, NULL, getKeybind, setKeyGrab, NULL, NULL}, {"KbdModeLock", "NO", NULL, &wPreferences.modelock, getBool, NULL, NULL, NULL}, #endif /* KEEP_XKB_LOCK_STATUS */ {"NormalCursor", "(builtin, left_ptr)", (void *)WCUR_ROOT, NULL, getCursor, setCursor, NULL, NULL}, {"ArrowCursor", "(builtin, top_left_arrow)", (void *)WCUR_ARROW, NULL, getCursor, setCursor, NULL, NULL}, {"MoveCursor", "(builtin, fleur)", (void *)WCUR_MOVE, NULL, getCursor, setCursor, NULL, NULL}, {"ResizeCursor", "(builtin, sizing)", (void *)WCUR_RESIZE, NULL, getCursor, setCursor, NULL, NULL}, {"TopLeftResizeCursor", "(builtin, top_left_corner)", (void *)WCUR_TOPLEFTRESIZE, NULL, getCursor, setCursor, NULL, NULL}, {"TopRightResizeCursor", "(builtin, top_right_corner)", (void *)WCUR_TOPRIGHTRESIZE, NULL, getCursor, setCursor, NULL, NULL}, {"BottomLeftResizeCursor", "(builtin, bottom_left_corner)", (void *)WCUR_BOTTOMLEFTRESIZE, NULL, getCursor, setCursor, NULL, NULL}, {"BottomRightResizeCursor", "(builtin, bottom_right_corner)", (void *)WCUR_BOTTOMRIGHTRESIZE, NULL, getCursor, setCursor, NULL, NULL}, {"VerticalResizeCursor", "(builtin, sb_v_double_arrow)", (void *)WCUR_VERTICALRESIZE, NULL, getCursor, setCursor, NULL, NULL}, {"HorizontalResizeCursor", "(builtin, sb_h_double_arrow)", (void *)WCUR_HORIZONRESIZE, NULL, getCursor, setCursor, NULL, NULL}, {"WaitCursor", "(builtin, watch)", (void *)WCUR_WAIT, NULL, getCursor, setCursor, NULL, NULL}, {"QuestionCursor", "(builtin, question_arrow)", (void *)WCUR_QUESTION, NULL, getCursor, setCursor, NULL, NULL}, {"TextCursor", "(builtin, xterm)", (void *)WCUR_TEXT, NULL, getCursor, setCursor, NULL, NULL}, {"SelectCursor", "(builtin, cross)", (void *)WCUR_SELECT, NULL, getCursor, setCursor, NULL, NULL}, {"DialogHistoryLines", "500", NULL, &wPreferences.history_lines, getInt, NULL, NULL, NULL}, {"CycleActiveHeadOnly", "NO", NULL, &wPreferences.cycle_active_head_only, getBool, NULL, NULL, NULL}, {"CycleIgnoreMinimized", "NO", NULL, &wPreferences.cycle_ignore_minimized, getBool, NULL, NULL, NULL} }; static void initDefaults(void) { unsigned int i; WDefaultEntry *entry; WMPLSetCaseSensitive(False); for (i = 0; i < wlengthof(optionList); i++) { entry = &optionList[i]; entry->plkey = WMCreatePLString(entry->key); if (entry->default_value) entry->plvalue = WMCreatePropListFromDescription(entry->default_value); else entry->plvalue = NULL; } for (i = 0; i < wlengthof(staticOptionList); i++) { entry = &staticOptionList[i]; entry->plkey = WMCreatePLString(entry->key); if (entry->default_value) entry->plvalue = WMCreatePropListFromDescription(entry->default_value); else entry->plvalue = NULL; } } static WMPropList *readGlobalDomain(const char *domainName, Bool requireDictionary) { WMPropList *globalDict = NULL; char path[PATH_MAX]; struct stat stbuf; snprintf(path, sizeof(path), "%s/%s", DEFSDATADIR, domainName); if (stat(path, &stbuf) >= 0) { globalDict = WMReadPropListFromFile(path); if (globalDict && requireDictionary && !WMIsPLDictionary(globalDict)) { wwarning(_("Domain %s (%s) of global defaults database is corrupted!"), domainName, path); WMReleasePropList(globalDict); globalDict = NULL; } else if (!globalDict) { wwarning(_("could not load domain %s from global defaults database"), domainName); } } return globalDict; } #if defined(GLOBAL_PREAMBLE_MENU_FILE) || defined(GLOBAL_EPILOGUE_MENU_FILE) static void prependMenu(WMPropList * destarr, WMPropList * array) { WMPropList *item; int i; for (i = 0; i < WMGetPropListItemCount(array); i++) { item = WMGetFromPLArray(array, i); if (item) WMInsertInPLArray(destarr, i + 1, item); } } static void appendMenu(WMPropList * destarr, WMPropList * array) { WMPropList *item; int i; for (i = 0; i < WMGetPropListItemCount(array); i++) { item = WMGetFromPLArray(array, i); if (item) WMAddToPLArray(destarr, item); } } #endif void wDefaultsMergeGlobalMenus(WDDomain * menuDomain) { WMPropList *menu = menuDomain->dictionary; WMPropList *submenu; if (!menu || !WMIsPLArray(menu)) return; #ifdef GLOBAL_PREAMBLE_MENU_FILE submenu = WMReadPropListFromFile(DEFSDATADIR "/" GLOBAL_PREAMBLE_MENU_FILE); if (submenu && !WMIsPLArray(submenu)) { wwarning(_("invalid global menu file %s"), GLOBAL_PREAMBLE_MENU_FILE); WMReleasePropList(submenu); submenu = NULL; } if (submenu) { prependMenu(menu, submenu); WMReleasePropList(submenu); } #endif #ifdef GLOBAL_EPILOGUE_MENU_FILE submenu = WMReadPropListFromFile(DEFSDATADIR "/" GLOBAL_EPILOGUE_MENU_FILE); if (submenu && !WMIsPLArray(submenu)) { wwarning(_("invalid global menu file %s"), GLOBAL_EPILOGUE_MENU_FILE); WMReleasePropList(submenu); submenu = NULL; } if (submenu) { appendMenu(menu, submenu); WMReleasePropList(submenu); } #endif menuDomain->dictionary = menu; } WDDomain *wDefaultsInitDomain(const char *domain, Bool requireDictionary) { WDDomain *db; struct stat stbuf; static int inited = 0; WMPropList *shared_dict = NULL; if (!inited) { inited = 1; initDefaults(); } db = wmalloc(sizeof(WDDomain)); db->domain_name = domain; db->path = wdefaultspathfordomain(domain); if (stat(db->path, &stbuf) >= 0) { db->dictionary = WMReadPropListFromFile(db->path); if (db->dictionary) { if (requireDictionary && !WMIsPLDictionary(db->dictionary)) { WMReleasePropList(db->dictionary); db->dictionary = NULL; wwarning(_("Domain %s (%s) of defaults database is corrupted!"), domain, db->path); } db->timestamp = stbuf.st_mtime; } else { wwarning(_("could not load domain %s from user defaults database"), domain); } } /* global system dictionary */ shared_dict = readGlobalDomain(domain, requireDictionary); if (shared_dict && db->dictionary && WMIsPLDictionary(shared_dict) && WMIsPLDictionary(db->dictionary)) { WMMergePLDictionaries(shared_dict, db->dictionary, True); WMReleasePropList(db->dictionary); db->dictionary = shared_dict; if (stbuf.st_mtime > db->timestamp) db->timestamp = stbuf.st_mtime; } else if (!db->dictionary) { db->dictionary = shared_dict; if (stbuf.st_mtime > db->timestamp) db->timestamp = stbuf.st_mtime; } return db; } void wReadStaticDefaults(WMPropList * dict) { WMPropList *plvalue; WDefaultEntry *entry; unsigned int i; void *tdata; for (i = 0; i < wlengthof(staticOptionList); i++) { entry = &staticOptionList[i]; if (dict) plvalue = WMGetFromPLDictionary(dict, entry->plkey); else plvalue = NULL; /* no default in the DB. Use builtin default */ if (!plvalue) plvalue = entry->plvalue; if (plvalue) { /* convert data */ (*entry->convert) (NULL, entry, plvalue, entry->addr, &tdata); if (entry->update) (*entry->update) (NULL, entry, tdata, entry->extra_data); } } } void wDefaultsCheckDomains(void* arg) { WScreen *scr; struct stat stbuf; WMPropList *shared_dict = NULL; WMPropList *dict; int i; /* Parameter not used, but tell the compiler that it is ok */ (void) arg; if (stat(w_global.domain.wmaker->path, &stbuf) >= 0 && w_global.domain.wmaker->timestamp < stbuf.st_mtime) { w_global.domain.wmaker->timestamp = stbuf.st_mtime; /* Global dictionary */ shared_dict = readGlobalDomain("WindowMaker", True); /* User dictionary */ dict = WMReadPropListFromFile(w_global.domain.wmaker->path); if (dict) { if (!WMIsPLDictionary(dict)) { WMReleasePropList(dict); dict = NULL; wwarning(_("Domain %s (%s) of defaults database is corrupted!"), "WindowMaker", w_global.domain.wmaker->path); } else { if (shared_dict) { WMMergePLDictionaries(shared_dict, dict, True); WMReleasePropList(dict); dict = shared_dict; shared_dict = NULL; } for (i = 0; i < w_global.screen_count; i++) { scr = wScreenWithNumber(i); if (scr) wReadDefaults(scr, dict); } if (w_global.domain.wmaker->dictionary) WMReleasePropList(w_global.domain.wmaker->dictionary); w_global.domain.wmaker->dictionary = dict; } } else { wwarning(_("could not load domain %s from user defaults database"), "WindowMaker"); } if (shared_dict) WMReleasePropList(shared_dict); } if (stat(w_global.domain.window_attr->path, &stbuf) >= 0 && w_global.domain.window_attr->timestamp < stbuf.st_mtime) { /* global dictionary */ shared_dict = readGlobalDomain("WMWindowAttributes", True); /* user dictionary */ dict = WMReadPropListFromFile(w_global.domain.window_attr->path); if (dict) { if (!WMIsPLDictionary(dict)) { WMReleasePropList(dict); dict = NULL; wwarning(_("Domain %s (%s) of defaults database is corrupted!"), "WMWindowAttributes", w_global.domain.window_attr->path); } else { if (shared_dict) { WMMergePLDictionaries(shared_dict, dict, True); WMReleasePropList(dict); dict = shared_dict; shared_dict = NULL; } if (w_global.domain.window_attr->dictionary) WMReleasePropList(w_global.domain.window_attr->dictionary); w_global.domain.window_attr->dictionary = dict; for (i = 0; i < w_global.screen_count; i++) { scr = wScreenWithNumber(i); if (scr) { wDefaultUpdateIcons(scr); /* Update the panel image if changed */ /* Don't worry. If the image is the same these * functions will have no performance impact. */ create_logo_image(scr); } } } } else { wwarning(_("could not load domain %s from user defaults database"), "WMWindowAttributes"); } w_global.domain.window_attr->timestamp = stbuf.st_mtime; if (shared_dict) WMReleasePropList(shared_dict); } if (stat(w_global.domain.root_menu->path, &stbuf) >= 0 && w_global.domain.root_menu->timestamp < stbuf.st_mtime) { dict = WMReadPropListFromFile(w_global.domain.root_menu->path); if (dict) { if (!WMIsPLArray(dict) && !WMIsPLString(dict)) { WMReleasePropList(dict); dict = NULL; wwarning(_("Domain %s (%s) of defaults database is corrupted!"), "WMRootMenu", w_global.domain.root_menu->path); } else { if (w_global.domain.root_menu->dictionary) WMReleasePropList(w_global.domain.root_menu->dictionary); w_global.domain.root_menu->dictionary = dict; wDefaultsMergeGlobalMenus(w_global.domain.root_menu); } } else { wwarning(_("could not load domain %s from user defaults database"), "WMRootMenu"); } w_global.domain.root_menu->timestamp = stbuf.st_mtime; } #ifndef HAVE_INOTIFY if (!arg) WMAddTimerHandler(DEFAULTS_CHECK_INTERVAL, wDefaultsCheckDomains, arg); #endif } void wReadDefaults(WScreen * scr, WMPropList * new_dict) { WMPropList *plvalue, *old_value; WDefaultEntry *entry; unsigned int i; int update_workspace_back = 0; /* kluge :/ */ unsigned int needs_refresh; void *tdata; WMPropList *old_dict = (w_global.domain.wmaker->dictionary != new_dict ? w_global.domain.wmaker->dictionary : NULL); needs_refresh = 0; for (i = 0; i < wlengthof(optionList); i++) { entry = &optionList[i]; if (new_dict) plvalue = WMGetFromPLDictionary(new_dict, entry->plkey); else plvalue = NULL; if (!old_dict) old_value = NULL; else old_value = WMGetFromPLDictionary(old_dict, entry->plkey); if (!plvalue && !old_value) { /* no default in the DB. Use builtin default */ plvalue = entry->plvalue; if (plvalue && new_dict) WMPutInPLDictionary(new_dict, entry->plkey, plvalue); } else if (!plvalue) { /* value was deleted from DB. Keep current value */ continue; } else if (!old_value) { /* set value for the 1st time */ } else if (!WMIsPropListEqualTo(plvalue, old_value)) { /* value has changed */ } else { if (strcmp(entry->key, "WorkspaceBack") == 0 && update_workspace_back && scr->flags.backimage_helper_launched) { } else { /* value was not changed since last time */ continue; } } if (plvalue) { /* convert data */ if ((*entry->convert) (scr, entry, plvalue, entry->addr, &tdata)) { /* * If the WorkspaceSpecificBack data has been changed * so that the helper will be launched now, we must be * sure to send the default background texture config * to the helper. */ if (strcmp(entry->key, "WorkspaceSpecificBack") == 0 && !scr->flags.backimage_helper_launched) update_workspace_back = 1; if (entry->update) needs_refresh |= (*entry->update) (scr, entry, tdata, entry->extra_data); } } } if (needs_refresh != 0 && !scr->flags.startup) { int foo; foo = 0; if (needs_refresh & REFRESH_MENU_TITLE_TEXTURE) foo |= WTextureSettings; if (needs_refresh & REFRESH_MENU_TITLE_FONT) foo |= WFontSettings; if (needs_refresh & REFRESH_MENU_TITLE_COLOR) foo |= WColorSettings; if (foo) WMPostNotificationName(WNMenuTitleAppearanceSettingsChanged, NULL, (void *)(uintptr_t) foo); foo = 0; if (needs_refresh & REFRESH_MENU_TEXTURE) foo |= WTextureSettings; if (needs_refresh & REFRESH_MENU_FONT) foo |= WFontSettings; if (needs_refresh & REFRESH_MENU_COLOR) foo |= WColorSettings; if (foo) WMPostNotificationName(WNMenuAppearanceSettingsChanged, NULL, (void *)(uintptr_t) foo); foo = 0; if (needs_refresh & REFRESH_WINDOW_FONT) foo |= WFontSettings; if (needs_refresh & REFRESH_WINDOW_TEXTURES) foo |= WTextureSettings; if (needs_refresh & REFRESH_WINDOW_TITLE_COLOR) foo |= WColorSettings; if (foo) WMPostNotificationName(WNWindowAppearanceSettingsChanged, NULL, (void *)(uintptr_t) foo); if (!(needs_refresh & REFRESH_ICON_TILE)) { foo = 0; if (needs_refresh & REFRESH_ICON_FONT) foo |= WFontSettings; if (needs_refresh & REFRESH_ICON_TITLE_COLOR) foo |= WTextureSettings; if (needs_refresh & REFRESH_ICON_TITLE_BACK) foo |= WTextureSettings; if (foo) WMPostNotificationName(WNIconAppearanceSettingsChanged, NULL, (void *)(uintptr_t) foo); } if (needs_refresh & REFRESH_ICON_TILE) WMPostNotificationName(WNIconTileSettingsChanged, NULL, NULL); if (needs_refresh & REFRESH_WORKSPACE_MENU) { if (scr->workspace_menu) wWorkspaceMenuUpdate(scr, scr->workspace_menu); if (scr->clip_ws_menu) wWorkspaceMenuUpdate(scr, scr->clip_ws_menu); if (scr->workspace_submenu) scr->workspace_submenu->flags.realized = 0; if (scr->clip_submenu) scr->clip_submenu->flags.realized = 0; } } } void wDefaultUpdateIcons(WScreen *scr) { WAppIcon *aicon = scr->app_icon_list; WDrawerChain *dc; WWindow *wwin = scr->focused_window; while (aicon) { /* Get the application icon, default included */ wIconChangeImageFile(aicon->icon, NULL); wAppIconPaint(aicon); aicon = aicon->next; } if (!wPreferences.flags.noclip || wPreferences.flags.clip_merged_in_dock) wClipIconPaint(scr->clip_icon); for (dc = scr->drawers; dc != NULL; dc = dc->next) wDrawerIconPaint(dc->adrawer->icon_array[0]); while (wwin) { if (wwin->icon && wwin->flags.miniaturized) wIconChangeImageFile(wwin->icon, NULL); wwin = wwin->prev; } } /* --------------------------- Local ----------------------- */ #define GET_STRING_OR_DEFAULT(x, var) if (!WMIsPLString(value)) { \ wwarning(_("Wrong option format for key \"%s\". Should be %s."), \ entry->key, x); \ wwarning(_("using default \"%s\" instead"), entry->default_value); \ var = entry->default_value;\ } else var = WMGetFromPLString(value)\ static int string2index(WMPropList *key, WMPropList *val, const char *def, WOptionEnumeration * values) { char *str; WOptionEnumeration *v; char buffer[TOTAL_VALUES_LENGTH]; if (WMIsPLString(val) && (str = WMGetFromPLString(val))) { for (v = values; v->string != NULL; v++) { if (strcasecmp(v->string, str) == 0) return v->value; } } buffer[0] = 0; for (v = values; v->string != NULL; v++) { if (!v->is_alias) { if (buffer[0] != 0) strcat(buffer, ", "); snprintf(buffer+strlen(buffer), sizeof(buffer)-strlen(buffer)-1, "\"%s\"", v->string); } } wwarning(_("wrong option value for key \"%s\"; got \"%s\", should be one of %s."), WMGetFromPLString(key), WMIsPLString(val) ? WMGetFromPLString(val) : "(unknown)", buffer); if (def) { return string2index(key, val, NULL, values); } return -1; } /* * value - is the value in the defaults DB * addr - is the address to store the data * ret - is the address to store a pointer to a temporary buffer. ret * must not be freed and is used by the set functions */ static int getBool(WScreen * scr, WDefaultEntry * entry, WMPropList * value, void *addr, void **ret) { static char data; const char *val; int second_pass = 0; /* Parameter not used, but tell the compiler that it is ok */ (void) scr; GET_STRING_OR_DEFAULT("Boolean", val); again: if ((val[1] == '\0' && (val[0] == 'y' || val[0] == 'Y')) || strcasecmp(val, "YES") == 0) { data = 1; } else if ((val[1] == '\0' && (val[0] == 'n' || val[0] == 'N')) || strcasecmp(val, "NO") == 0) { data = 0; } else { int i; if (sscanf(val, "%i", &i) == 1) { if (i != 0) data = 1; else data = 0; } else { wwarning(_("can't convert \"%s\" to boolean for key \"%s\""), val, entry->key); if (second_pass == 0) { val = WMGetFromPLString(entry->plvalue); second_pass = 1; wwarning(_("using default \"%s\" instead"), val); goto again; } return False; } } if (ret) *ret = &data; if (addr) *(char *)addr = data; return True; } static int getInt(WScreen * scr, WDefaultEntry * entry, WMPropList * value, void *addr, void **ret) { static int data; const char *val; /* Parameter not used, but tell the compiler that it is ok */ (void) scr; GET_STRING_OR_DEFAULT("Integer", val); if (sscanf(val, "%i", &data) != 1) { wwarning(_("can't convert \"%s\" to integer for key \"%s\""), val, entry->key); val = WMGetFromPLString(entry->plvalue); wwarning(_("using default \"%s\" instead"), val); if (sscanf(val, "%i", &data) != 1) { return False; } } if (ret) *ret = &data; if (addr) *(int *)addr = data; return True; } static int getCoord(WScreen * scr, WDefaultEntry * entry, WMPropList * value, void *addr, void **ret) { static WCoord data; char *val_x, *val_y; int nelem, changed = 0; WMPropList *elem_x, *elem_y; again: if (!WMIsPLArray(value)) { wwarning(_("Wrong option format for key \"%s\". Should be %s."), entry->key, "Coordinate"); if (changed == 0) { value = entry->plvalue; changed = 1; wwarning(_("using default \"%s\" instead"), entry->default_value); goto again; } return False; } nelem = WMGetPropListItemCount(value); if (nelem != 2) { wwarning(_("Incorrect number of elements in array for key \"%s\"."), entry->key); if (changed == 0) { value = entry->plvalue; changed = 1; wwarning(_("using default \"%s\" instead"), entry->default_value); goto again; } return False; } elem_x = WMGetFromPLArray(value, 0); elem_y = WMGetFromPLArray(value, 1); if (!elem_x || !elem_y || !WMIsPLString(elem_x) || !WMIsPLString(elem_y)) { wwarning(_("Wrong value for key \"%s\". Should be Coordinate."), entry->key); if (changed == 0) { value = entry->plvalue; changed = 1; wwarning(_("using default \"%s\" instead"), entry->default_value); goto again; } return False; } val_x = WMGetFromPLString(elem_x); val_y = WMGetFromPLString(elem_y); if (sscanf(val_x, "%i", &data.x) != 1 || sscanf(val_y, "%i", &data.y) != 1) { wwarning(_("can't convert array to integers for \"%s\"."), entry->key); if (changed == 0) { value = entry->plvalue; changed = 1; wwarning(_("using default \"%s\" instead"), entry->default_value); goto again; } return False; } if (data.x < 0) data.x = 0; else if (data.x > scr->scr_width / 3) data.x = scr->scr_width / 3; if (data.y < 0) data.y = 0; else if (data.y > scr->scr_height / 3) data.y = scr->scr_height / 3; if (ret) *ret = &data; if (addr) *(WCoord *) addr = data; return True; } static int getPropList(WScreen * scr, WDefaultEntry * entry, WMPropList * value, void *addr, void **ret) { /* Parameter not used, but tell the compiler that it is ok */ (void) scr; (void) entry; (void) addr; WMRetainPropList(value); *ret = value; return True; } static int getPathList(WScreen * scr, WDefaultEntry * entry, WMPropList * value, void *addr, void **ret) { static char *data; int i, count, len; char *ptr; WMPropList *d; int changed = 0; /* Parameter not used, but tell the compiler that it is ok */ (void) scr; (void) ret; again: if (!WMIsPLArray(value)) { wwarning(_("Wrong option format for key \"%s\". Should be %s."), entry->key, "an array of paths"); if (changed == 0) { value = entry->plvalue; changed = 1; wwarning(_("using default \"%s\" instead"), entry->default_value); goto again; } return False; } i = 0; count = WMGetPropListItemCount(value); if (count < 1) { if (changed == 0) { value = entry->plvalue; changed = 1; wwarning(_("using default \"%s\" instead"), entry->default_value); goto again; } return False; } len = 0; for (i = 0; i < count; i++) { d = WMGetFromPLArray(value, i); if (!d || !WMIsPLString(d)) { count = i; break; } len += strlen(WMGetFromPLString(d)) + 1; } ptr = data = wmalloc(len + 1); for (i = 0; i < count; i++) { d = WMGetFromPLArray(value, i); if (!d || !WMIsPLString(d)) { break; } strcpy(ptr, WMGetFromPLString(d)); ptr += strlen(WMGetFromPLString(d)); *ptr = ':'; ptr++; } ptr--; *(ptr--) = 0; if (*(char **)addr != NULL) { wfree(*(char **)addr); } *(char **)addr = data; return True; } static int getEnum(WScreen * scr, WDefaultEntry * entry, WMPropList * value, void *addr, void **ret) { static signed char data; /* Parameter not used, but tell the compiler that it is ok */ (void) scr; data = string2index(entry->plkey, value, entry->default_value, (WOptionEnumeration *) entry->extra_data); if (data < 0) return False; if (ret) *ret = &data; if (addr) *(signed char *)addr = data; return True; } /* * (solid <color>) * (hgradient <color> <color>) * (vgradient <color> <color>) * (dgradient <color> <color>) * (mhgradient <color> <color> ...) * (mvgradient <color> <color> ...) * (mdgradient <color> <color> ...) * (igradient <color1> <color1> <thickness1> <color2> <color2> <thickness2>) * (tpixmap <file> <color>) * (spixmap <file> <color>) * (cpixmap <file> <color>) * (thgradient <file> <opaqueness> <color> <color>) * (tvgradient <file> <opaqueness> <color> <color>) * (tdgradient <file> <opaqueness> <color> <color>) * (function <lib> <function> ...) */ static WTexture *parse_texture(WScreen * scr, WMPropList * pl) { WMPropList *elem; char *val; int nelem; WTexture *texture = NULL; nelem = WMGetPropListItemCount(pl); if (nelem < 1) return NULL; elem = WMGetFromPLArray(pl, 0); if (!elem || !WMIsPLString(elem)) return NULL; val = WMGetFromPLString(elem); if (strcasecmp(val, "solid") == 0) { XColor color; if (nelem != 2) return NULL; /* get color */ elem = WMGetFromPLArray(pl, 1); if (!elem || !WMIsPLString(elem)) return NULL; val = WMGetFromPLString(elem); if (!XParseColor(dpy, scr->w_colormap, val, &color)) { wwarning(_("\"%s\" is not a valid color name"), val); return NULL; } texture = (WTexture *) wTextureMakeSolid(scr, &color); } else if (strcasecmp(val, "dgradient") == 0 || strcasecmp(val, "vgradient") == 0 || strcasecmp(val, "hgradient") == 0) { RColor color1, color2; XColor xcolor; int type; if (nelem != 3) { wwarning(_("bad number of arguments in gradient specification")); return NULL; } if (val[0] == 'd' || val[0] == 'D') type = WTEX_DGRADIENT; else if (val[0] == 'h' || val[0] == 'H') type = WTEX_HGRADIENT; else type = WTEX_VGRADIENT; /* get from color */ elem = WMGetFromPLArray(pl, 1); if (!elem || !WMIsPLString(elem)) return NULL; val = WMGetFromPLString(elem); if (!XParseColor(dpy, scr->w_colormap, val, &xcolor)) { wwarning(_("\"%s\" is not a valid color name"), val); return NULL; } color1.alpha = 255; color1.red = xcolor.red >> 8; color1.green = xcolor.green >> 8; color1.blue = xcolor.blue >> 8; /* get to color */ elem = WMGetFromPLArray(pl, 2); if (!elem || !WMIsPLString(elem)) { return NULL; } val = WMGetFromPLString(elem); if (!XParseColor(dpy, scr->w_colormap, val, &xcolor)) { wwarning(_("\"%s\" is not a valid color name"), val); return NULL; } color2.alpha = 255; color2.red = xcolor.red >> 8; color2.green = xcolor.green >> 8; color2.blue = xcolor.blue >> 8; texture = (WTexture *) wTextureMakeGradient(scr, type, &color1, &color2); } else if (strcasecmp(val, "igradient") == 0) { RColor colors1[2], colors2[2]; int th1, th2; XColor xcolor; int i; if (nelem != 7) { wwarning(_("bad number of arguments in gradient specification")); return NULL; } /* get from color */ for (i = 0; i < 2; i++) { elem = WMGetFromPLArray(pl, 1 + i); if (!elem || !WMIsPLString(elem)) return NULL; val = WMGetFromPLString(elem); if (!XParseColor(dpy, scr->w_colormap, val, &xcolor)) { wwarning(_("\"%s\" is not a valid color name"), val); return NULL; } colors1[i].alpha = 255; colors1[i].red = xcolor.red >> 8; colors1[i].green = xcolor.green >> 8; colors1[i].blue = xcolor.blue >> 8; } elem = WMGetFromPLArray(pl, 3); if (!elem || !WMIsPLString(elem)) return NULL; val = WMGetFromPLString(elem); th1 = atoi(val); /* get from color */ for (i = 0; i < 2; i++) { elem = WMGetFromPLArray(pl, 4 + i); if (!elem || !WMIsPLString(elem)) return NULL; val = WMGetFromPLString(elem); if (!XParseColor(dpy, scr->w_colormap, val, &xcolor)) { wwarning(_("\"%s\" is not a valid color name"), val); return NULL; } colors2[i].alpha = 255; colors2[i].red = xcolor.red >> 8; colors2[i].green = xcolor.green >> 8; colors2[i].blue = xcolor.blue >> 8; } elem = WMGetFromPLArray(pl, 6); if (!elem || !WMIsPLString(elem)) return NULL; val = WMGetFromPLString(elem); th2 = atoi(val); texture = (WTexture *) wTextureMakeIGradient(scr, th1, colors1, th2, colors2); } else if (strcasecmp(val, "mhgradient") == 0 || strcasecmp(val, "mvgradient") == 0 || strcasecmp(val, "mdgradient") == 0) { XColor color; RColor **colors; int i, count; int type; if (nelem < 3) { wwarning(_("too few arguments in multicolor gradient specification")); return NULL; } if (val[1] == 'h' || val[1] == 'H') type = WTEX_MHGRADIENT; else if (val[1] == 'v' || val[1] == 'V') type = WTEX_MVGRADIENT; else type = WTEX_MDGRADIENT; count = nelem - 1; colors = wmalloc(sizeof(RColor *) * (count + 1)); for (i = 0; i < count; i++) { elem = WMGetFromPLArray(pl, i + 1); if (!elem || !WMIsPLString(elem)) { for (--i; i >= 0; --i) { wfree(colors[i]); } wfree(colors); return NULL; } val = WMGetFromPLString(elem); if (!XParseColor(dpy, scr->w_colormap, val, &color)) { wwarning(_("\"%s\" is not a valid color name"), val); for (--i; i >= 0; --i) { wfree(colors[i]); } wfree(colors); return NULL; } else { colors[i] = wmalloc(sizeof(RColor)); colors[i]->red = color.red >> 8; colors[i]->green = color.green >> 8; colors[i]->blue = color.blue >> 8; } } colors[i] = NULL; texture = (WTexture *) wTextureMakeMGradient(scr, type, colors); } else if (strcasecmp(val, "spixmap") == 0 || strcasecmp(val, "cpixmap") == 0 || strcasecmp(val, "tpixmap") == 0) { XColor color; int type; if (nelem != 3) return NULL; if (val[0] == 's' || val[0] == 'S') type = WTP_SCALE; else if (val[0] == 'c' || val[0] == 'C') type = WTP_CENTER; else type = WTP_TILE; /* get color */ elem = WMGetFromPLArray(pl, 2); if (!elem || !WMIsPLString(elem)) { return NULL; } val = WMGetFromPLString(elem); if (!XParseColor(dpy, scr->w_colormap, val, &color)) { wwarning(_("\"%s\" is not a valid color name"), val); return NULL; } /* file name */ elem = WMGetFromPLArray(pl, 1); if (!elem || !WMIsPLString(elem)) return NULL; val = WMGetFromPLString(elem); texture = (WTexture *) wTextureMakePixmap(scr, type, val, &color); } else if (strcasecmp(val, "thgradient") == 0 || strcasecmp(val, "tvgradient") == 0 || strcasecmp(val, "tdgradient") == 0) { RColor color1, color2; XColor xcolor; int opacity; int style; if (val[1] == 'h' || val[1] == 'H') style = WTEX_THGRADIENT; else if (val[1] == 'v' || val[1] == 'V') style = WTEX_TVGRADIENT; else style = WTEX_TDGRADIENT; if (nelem != 5) { wwarning(_("bad number of arguments in textured gradient specification")); return NULL; } /* get from color */ elem = WMGetFromPLArray(pl, 3); if (!elem || !WMIsPLString(elem)) return NULL; val = WMGetFromPLString(elem); if (!XParseColor(dpy, scr->w_colormap, val, &xcolor)) { wwarning(_("\"%s\" is not a valid color name"), val); return NULL; } color1.alpha = 255; color1.red = xcolor.red >> 8; color1.green = xcolor.green >> 8; color1.blue = xcolor.blue >> 8; /* get to color */ elem = WMGetFromPLArray(pl, 4); if (!elem || !WMIsPLString(elem)) { return NULL; } val = WMGetFromPLString(elem); if (!XParseColor(dpy, scr->w_colormap, val, &xcolor)) { wwarning(_("\"%s\" is not a valid color name"), val); return NULL; } color2.alpha = 255; color2.red = xcolor.red >> 8; color2.green = xcolor.green >> 8; color2.blue = xcolor.blue >> 8; /* get opacity */ elem = WMGetFromPLArray(pl, 2); if (!elem || !WMIsPLString(elem)) opacity = 128; else val = WMGetFromPLString(elem); if (!val || (opacity = atoi(val)) < 0 || opacity > 255) { wwarning(_("bad opacity value for tgradient texture \"%s\". Should be [0..255]"), val); opacity = 128; } /* get file name */ elem = WMGetFromPLArray(pl, 1); if (!elem || !WMIsPLString(elem)) return NULL; val = WMGetFromPLString(elem); texture = (WTexture *) wTextureMakeTGradient(scr, style, &color1, &color2, val, opacity); } else if (strcasecmp(val, "function") == 0) { /* Leave this in to handle the unlikely case of * someone actually having function textures configured */ wwarning("function texture support has been removed"); return NULL; } else { wwarning(_("invalid texture type %s"), val); return NULL; } return texture; } static int getTexture(WScreen * scr, WDefaultEntry * entry, WMPropList * value, void *addr, void **ret) { static WTexture *texture; int changed = 0; again: if (!WMIsPLArray(value)) { wwarning(_("Wrong option format for key \"%s\". Should be %s."), entry->key, "Texture"); if (changed == 0) { value = entry->plvalue; changed = 1; wwarning(_("using default \"%s\" instead"), entry->default_value); goto again; } return False; } if (strcmp(entry->key, "WidgetColor") == 0 && !changed) { WMPropList *pl; pl = WMGetFromPLArray(value, 0); if (!pl || !WMIsPLString(pl) || !WMGetFromPLString(pl) || strcasecmp(WMGetFromPLString(pl), "solid") != 0) { wwarning(_("Wrong option format for key \"%s\". Should be %s."), entry->key, "Solid Texture"); value = entry->plvalue; changed = 1; wwarning(_("using default \"%s\" instead"), entry->default_value); goto again; } } texture = parse_texture(scr, value); if (!texture) { wwarning(_("Error in texture specification for key \"%s\""), entry->key); if (changed == 0) { value = entry->plvalue; changed = 1; wwarning(_("using default \"%s\" instead"), entry->default_value); goto again; } return False; } if (ret) *ret = &texture; if (addr) *(WTexture **) addr = texture; return True; } static int getWSBackground(WScreen * scr, WDefaultEntry * entry, WMPropList * value, void *addr, void **ret) { WMPropList *elem; int changed = 0; char *val; int nelem; /* Parameter not used, but tell the compiler that it is ok */ (void) scr; (void) addr; again: if (!WMIsPLArray(value)) { wwarning(_("Wrong option format for key \"%s\". Should be %s."), "WorkspaceBack", "Texture or None"); if (changed == 0) { value = entry->plvalue; changed = 1; wwarning(_("using default \"%s\" instead"), entry->default_value); goto again; } return False; } /* only do basic error checking and verify for None texture */ nelem = WMGetPropListItemCount(value); if (nelem > 0) { elem = WMGetFromPLArray(value, 0); if (!elem || !WMIsPLString(elem)) { wwarning(_("Wrong type for workspace background. Should be a texture type.")); if (changed == 0) { value = entry->plvalue; changed = 1; wwarning(_("using default \"%s\" instead"), entry->default_value); goto again; } return False; } val = WMGetFromPLString(elem); if (strcasecmp(val, "None") == 0) return True; } *ret = WMRetainPropList(value); return True; } static int getWSSpecificBackground(WScreen * scr, WDefaultEntry * entry, WMPropList * value, void *addr, void **ret) { WMPropList *elem; int nelem; int changed = 0; /* Parameter not used, but tell the compiler that it is ok */ (void) scr; (void) addr; again: if (!WMIsPLArray(value)) { wwarning(_("Wrong option format for key \"%s\". Should be %s."), "WorkspaceSpecificBack", "an array of textures"); if (changed == 0) { value = entry->plvalue; changed = 1; wwarning(_("using default \"%s\" instead"), entry->default_value); goto again; } return False; } /* only do basic error checking and verify for None texture */ nelem = WMGetPropListItemCount(value); if (nelem > 0) { while (nelem--) { elem = WMGetFromPLArray(value, nelem); if (!elem || !WMIsPLArray(elem)) { wwarning(_("Wrong type for background of workspace %i. Should be a texture."), nelem); } } } *ret = WMRetainPropList(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) { WMPropList *key = WMCreatePLString("WorkspaceBack"); WMRemoveFromPLDictionary(w_global.domain.wmaker->dictionary, key); WMReleasePropList(key); } #endif return True; } static int getFont(WScreen * scr, WDefaultEntry * entry, WMPropList * value, void *addr, void **ret) { static WMFont *font; const char *val; (void) addr; GET_STRING_OR_DEFAULT("Font", val); font = WMCreateFont(scr->wmscreen, val); if (!font) font = WMCreateFont(scr->wmscreen, "fixed"); if (!font) { wfatal(_("could not load any usable font!!!")); exit(1); } if (ret) *ret = font; /* can't assign font value outside update function */ wassertrv(addr == NULL, True); return True; } static int getColor(WScreen * scr, WDefaultEntry * entry, WMPropList * value, void *addr, void **ret) { static XColor color; const char *val; int second_pass = 0; (void) addr; GET_STRING_OR_DEFAULT("Color", val); again: if (!wGetColor(scr, val, &color)) { wwarning(_("could not get color for key \"%s\""), entry->key); if (second_pass == 0) { val = WMGetFromPLString(entry->plvalue); second_pass = 1; wwarning(_("using default \"%s\" instead"), val); goto again; } return False; } if (ret) *ret = &color; assert(addr == NULL); /* if (addr) *(unsigned long*)addr = pixel; */ return True; } static int getKeybind(WScreen * scr, WDefaultEntry * entry, WMPropList * value, void *addr, void **ret) { static WShortKey shortcut; KeySym ksym; const char *val; char *k; char buf[MAX_SHORTCUT_LENGTH], *b; /* Parameter not used, but tell the compiler that it is ok */ (void) scr; (void) addr; GET_STRING_OR_DEFAULT("Key spec", val); if (!val || strcasecmp(val, "NONE") == 0) { shortcut.keycode = 0; shortcut.modifier = 0; if (ret) *ret = &shortcut; return True; } wstrlcpy(buf, val, MAX_SHORTCUT_LENGTH); b = (char *)buf; /* get modifiers */ shortcut.modifier = 0; while ((k = strchr(b, '+')) != NULL) { int mod; *k = 0; mod = wXModifierFromKey(b); if (mod < 0) { wwarning(_("%s: invalid key modifier \"%s\""), entry->key, b); return False; } shortcut.modifier |= mod; b = k + 1; } /* get key */ ksym = XStringToKeysym(b); if (ksym == NoSymbol) { wwarning(_("%s:invalid kbd shortcut specification \"%s\""), entry->key, val); return False; } shortcut.keycode = XKeysymToKeycode(dpy, ksym); if (shortcut.keycode == 0) { wwarning(_("%s:invalid key in shortcut \"%s\""), entry->key, val); return False; } if (ret) *ret = &shortcut; return True; } static int getModMask(WScreen * scr, WDefaultEntry * entry, WMPropList * value, void *addr, void **ret) { static int mask; const char *str; /* Parameter not used, but tell the compiler that it is ok */ (void) scr; GET_STRING_OR_DEFAULT("Modifier Key", str); if (!str) return False; mask = wXModifierFromKey(str); if (mask < 0) { wwarning(_("%s: modifier key %s is not valid"), entry->key, str); mask = 0; return False; } if (addr) *(int *)addr = mask; if (ret) *ret = &mask; return True; } # include <X11/cursorfont.h> typedef struct { const char *name; int id; } WCursorLookup; #define CURSOR_ID_NONE (XC_num_glyphs) static const WCursorLookup cursor_table[] = { {"X_cursor", XC_X_cursor}, {"arrow", XC_arrow}, {"based_arrow_down", XC_based_arrow_down}, {"based_arrow_up", XC_based_arrow_up}, {"boat", XC_boat}, {"bogosity", XC_bogosity}, {"bottom_left_corner", XC_bottom_left_corner}, {"bottom_right_corner", XC_bottom_right_corner}, {"bottom_side", XC_bottom_side}, {"bottom_tee", XC_bottom_tee}, {"box_spiral", XC_box_spiral}, {"center_ptr", XC_center_ptr}, {"circle", XC_circle}, {"clock", XC_clock}, {"coffee_mug", XC_coffee_mug}, {"cross", XC_cross}, {"cross_reverse", XC_cross_reverse}, {"crosshair", XC_crosshair}, {"diamond_cross", XC_diamond_cross}, {"dot", XC_dot}, {"dotbox", XC_dotbox}, {"double_arrow", XC_double_arrow}, {"draft_large", XC_draft_large}, {"draft_small", XC_draft_small}, {"draped_box", XC_draped_box}, {"exchange", XC_exchange}, {"fleur", XC_fleur}, {"gobbler", XC_gobbler}, {"gumby", XC_gumby}, {"hand1", XC_hand1}, {"hand2", XC_hand2}, {"heart", XC_heart}, {"icon", XC_icon}, {"iron_cross", XC_iron_cross}, {"left_ptr", XC_left_ptr}, {"left_side", XC_left_side}, {"left_tee", XC_left_tee}, {"leftbutton", XC_leftbutton}, {"ll_angle", XC_ll_angle}, {"lr_angle", XC_lr_angle}, {"man", XC_man}, {"middlebutton", XC_middlebutton}, {"mouse", XC_mouse}, {"pencil", XC_pencil}, {"pirate", XC_pirate}, {"plus", XC_plus}, {"question_arrow", XC_question_arrow}, {"right_ptr", XC_right_ptr}, {"right_side", XC_right_side}, {"right_tee", XC_right_tee}, {"rightbutton", XC_rightbutton}, {"rtl_logo", XC_rtl_logo}, {"sailboat", XC_sailboat}, {"sb_down_arrow", XC_sb_down_arrow}, {"sb_h_double_arrow", XC_sb_h_double_arrow}, {"sb_left_arrow", XC_sb_left_arrow}, {"sb_right_arrow", XC_sb_right_arrow}, {"sb_up_arrow", XC_sb_up_arrow}, {"sb_v_double_arrow", XC_sb_v_double_arrow}, {"shuttle", XC_shuttle}, {"sizing", XC_sizing}, {"spider", XC_spider}, {"spraycan", XC_spraycan}, {"star", XC_star}, {"target", XC_target}, {"tcross", XC_tcross}, {"top_left_arrow", XC_top_left_arrow}, {"top_left_corner", XC_top_left_corner}, {"top_right_corner", XC_top_right_corner}, {"top_side", XC_top_side}, {"top_tee", XC_top_tee}, {"trek", XC_trek}, {"ul_angle", XC_ul_angle}, {"umbrella", XC_umbrella}, {"ur_angle", XC_ur_angle}, {"watch", XC_watch}, {"xterm", XC_xterm}, {NULL, CURSOR_ID_NONE} }; static void check_bitmap_status(int status, const char *filename, Pixmap bitmap) { switch (status) { case BitmapOpenFailed: wwarning(_("failed to open bitmap file \"%s\""), filename); break; case BitmapFileInvalid: wwarning(_("\"%s\" is not a valid bitmap file"), filename); break; case BitmapNoMemory: wwarning(_("out of memory reading bitmap file \"%s\""), filename); break; case BitmapSuccess: XFreePixmap(dpy, bitmap); break; } } /* * (none) * (builtin, <cursor_name>) * (bitmap, <cursor_bitmap>, <cursor_mask>) */ static int parse_cursor(WScreen * scr, WMPropList * pl, Cursor * cursor) { WMPropList *elem; char *val; int nelem; int status = 0; nelem = WMGetPropListItemCount(pl); if (nelem < 1) { return (status); } elem = WMGetFromPLArray(pl, 0); if (!elem || !WMIsPLString(elem)) { return (status); } val = WMGetFromPLString(elem); if (strcasecmp(val, "none") == 0) { status = 1; *cursor = None; } else if (strcasecmp(val, "builtin") == 0) { int i; int cursor_id = CURSOR_ID_NONE; if (nelem != 2) { wwarning(_("bad number of arguments in cursor specification")); return (status); } elem = WMGetFromPLArray(pl, 1); if (!elem || !WMIsPLString(elem)) { return (status); } val = WMGetFromPLString(elem); for (i = 0; cursor_table[i].name != NULL; i++) { if (strcasecmp(val, cursor_table[i].name) == 0) { cursor_id = cursor_table[i].id; break; } } if (CURSOR_ID_NONE == cursor_id) { wwarning(_("unknown builtin cursor name \"%s\""), val); } else { *cursor = XCreateFontCursor(dpy, cursor_id); status = 1; } } else if (strcasecmp(val, "bitmap") == 0) { char *bitmap_name; char *mask_name; int bitmap_status; int mask_status; Pixmap bitmap; Pixmap mask; unsigned int w, h; int x, y; XColor fg, bg; if (nelem != 3) { wwarning(_("bad number of arguments in cursor specification")); return (status); } elem = WMGetFromPLArray(pl, 1); if (!elem || !WMIsPLString(elem)) { return (status); } val = WMGetFromPLString(elem); bitmap_name = FindImage(wPreferences.pixmap_path, val); if (!bitmap_name) { wwarning(_("could not find cursor bitmap file \"%s\""), val); return (status); } elem = WMGetFromPLArray(pl, 2); if (!elem || !WMIsPLString(elem)) { wfree(bitmap_name); return (status); } val = WMGetFromPLString(elem); mask_name = FindImage(wPreferences.pixmap_path, val); if (!mask_name) { wfree(bitmap_name); wwarning(_("could not find cursor bitmap file \"%s\""), val); return (status); } mask_status = XReadBitmapFile(dpy, scr->w_win, mask_name, &w, &h, &mask, &x, &y); bitmap_status = XReadBitmapFile(dpy, scr->w_win, bitmap_name, &w, &h, &bitmap, &x, &y); if ((BitmapSuccess == bitmap_status) && (BitmapSuccess == mask_status)) { fg.pixel = scr->black_pixel; bg.pixel = scr->white_pixel; XQueryColor(dpy, scr->w_colormap, &fg); XQueryColor(dpy, scr->w_colormap, &bg); *cursor = XCreatePixmapCursor(dpy, bitmap, mask, &fg, &bg, x, y); status = 1; } check_bitmap_status(bitmap_status, bitmap_name, bitmap); check_bitmap_status(mask_status, mask_name, mask); wfree(bitmap_name); wfree(mask_name); } return (status); } static int getCursor(WScreen * scr, WDefaultEntry * entry, WMPropList * value, void *addr, void **ret) { static Cursor cursor; int status; int changed = 0; again: if (!WMIsPLArray(value)) { wwarning(_("Wrong option format for key \"%s\". Should be %s."), entry->key, "cursor specification"); if (!changed) { value = entry->plvalue; changed = 1; wwarning(_("using default \"%s\" instead"), entry->default_value); goto again; } return (False); } status = parse_cursor(scr, value, &cursor); if (!status) { wwarning(_("Error in cursor specification for key \"%s\""), entry->key); if (!changed) { value = entry->plvalue; changed = 1; wwarning(_("using default \"%s\" instead"), entry->default_value); goto again; } return (False); } if (ret) { *ret = &cursor; } if (addr) { *(Cursor *) addr = cursor; } return (True); } #undef CURSOR_ID_NONE /* ---------------- value setting functions --------------- */ static int setJustify(WScreen * scr, WDefaultEntry * entry, void *tdata, void *extra_data) { /* Parameter not used, but tell the compiler that it is ok */ (void) scr; (void) entry; (void) tdata; (void) extra_data; return REFRESH_WINDOW_TITLE_COLOR; } static int setClearance(WScreen * scr, WDefaultEntry * entry, void *bar, void *foo) { /* Parameter not used, but tell the compiler that it is ok */ (void) scr; (void) entry; (void) bar; (void) foo; return REFRESH_WINDOW_FONT | REFRESH_BUTTON_IMAGES | REFRESH_MENU_TITLE_FONT | REFRESH_MENU_FONT; } static int setIfDockPresent(WScreen * scr, WDefaultEntry * entry, void *tdata, void *extra_data) { char *flag = tdata; long which = (long) extra_data; /* Parameter not used, but tell the compiler that it is ok */ (void) scr; (void) entry; switch (which) { case WM_DOCK: wPreferences.flags.nodock = wPreferences.flags.nodock || *flag; // Drawers require the dock wPreferences.flags.nodrawer = wPreferences.flags.nodrawer || wPreferences.flags.nodock; break; case WM_CLIP: wPreferences.flags.noclip = wPreferences.flags.noclip || *flag; break; case WM_DRAWER: wPreferences.flags.nodrawer = wPreferences.flags.nodrawer || *flag; break; default: break; } return 0; } static int setClipMergedInDock(WScreen *scr, WDefaultEntry *entry, void *tdata, void *foo) { char *flag = tdata; /* Parameter not used, but tell the compiler that it is ok */ (void) scr; (void) entry; (void) foo; wPreferences.flags.clip_merged_in_dock = *flag; wPreferences.flags.noclip = wPreferences.flags.noclip || *flag; return 0; } static int setWrapAppiconsInDock(WScreen *scr, WDefaultEntry *entry, void *tdata, void *foo) { char *flag = tdata; /* Parameter not used, but tell the compiler that it is ok */ (void) scr; (void) entry; (void) foo; wPreferences.flags.wrap_appicons_in_dock = *flag; return 0; } static int setStickyIcons(WScreen * scr, WDefaultEntry * entry, void *bar, void *foo) { /* Parameter not used, but tell the compiler that it is ok */ (void) entry; (void) bar; (void) foo; if (scr->workspaces) { wWorkspaceForceChange(scr, scr->current_workspace); wArrangeIcons(scr, False); } return 0; } static int setIconTile(WScreen * scr, WDefaultEntry * entry, void *tdata, void *foo) { Pixmap pixmap; RImage *img; WTexture ** texture = tdata; int reset = 0; /* Parameter not used, but tell the compiler that it is ok */ (void) foo; img = wTextureRenderImage(*texture, wPreferences.icon_size, wPreferences.icon_size, ((*texture)->any.type & WREL_BORDER_MASK) ? WREL_ICON : WREL_FLAT); if (!img) { wwarning(_("could not render texture for icon background")); if (!entry->addr) wTextureDestroy(scr, *texture); return 0; } RConvertImage(scr->rcontext, img, &pixmap); if (scr->icon_tile) { reset = 1; RReleaseImage(scr->icon_tile); XFreePixmap(dpy, scr->icon_tile_pixmap); } scr->icon_tile = img; /* put the icon in the noticeboard hint */ PropSetIconTileHint(scr, img); if (!wPreferences.flags.noclip || wPreferences.flags.clip_merged_in_dock) { if (scr->clip_tile) { RReleaseImage(scr->clip_tile); } scr->clip_tile = wClipMakeTile(img); } if (!wPreferences.flags.nodrawer) { if (scr->drawer_tile) { RReleaseImage(scr->drawer_tile); } scr->drawer_tile = wDrawerMakeTile(scr, img); } scr->icon_tile_pixmap = pixmap; if (scr->def_icon_rimage) { RReleaseImage(scr->def_icon_rimage); scr->def_icon_rimage = NULL; } if (scr->icon_back_texture) wTextureDestroy(scr, (WTexture *) scr->icon_back_texture); scr->icon_back_texture = wTextureMakeSolid(scr, &((*texture)->any.color)); /* Free the texture as nobody else will use it, nor refer to it. */ if (!entry->addr) wTextureDestroy(scr, *texture); return (reset ? REFRESH_ICON_TILE : 0); } static int setWinTitleFont(WScreen * scr, WDefaultEntry * entry, void *tdata, void *foo) { WMFont *font = tdata; /* Parameter not used, but tell the compiler that it is ok */ (void) entry; (void) foo; if (scr->title_font) { WMReleaseFont(scr->title_font); } scr->title_font = font; return REFRESH_WINDOW_FONT | REFRESH_BUTTON_IMAGES; } static int setMenuTitleFont(WScreen * scr, WDefaultEntry * entry, void *tdata, void *foo) { WMFont *font = tdata; /* Parameter not used, but tell the compiler that it is ok */ (void) entry; (void) foo; if (scr->menu_title_font) { WMReleaseFont(scr->menu_title_font); } scr->menu_title_font = font; return REFRESH_MENU_TITLE_FONT; } static int setMenuTextFont(WScreen * scr, WDefaultEntry * entry, void *tdata, void *foo) { WMFont *font = tdata; /* Parameter not used, but tell the compiler that it is ok */ (void) entry; (void) foo; if (scr->menu_entry_font) { WMReleaseFont(scr->menu_entry_font); } scr->menu_entry_font = font; return REFRESH_MENU_FONT; } static int setIconTitleFont(WScreen * scr, WDefaultEntry * entry, void *tdata, void *foo) { WMFont *font = tdata; /* Parameter not used, but tell the compiler that it is ok */ (void) entry; (void) foo; if (scr->icon_title_font) { WMReleaseFont(scr->icon_title_font); } scr->icon_title_font = font; return REFRESH_ICON_FONT; } static int setClipTitleFont(WScreen * scr, WDefaultEntry * entry, void *tdata, void *foo) { WMFont *font = tdata; /* Parameter not used, but tell the compiler that it is ok */ (void) entry; (void) foo; if (scr->clip_title_font) { WMReleaseFont(scr->clip_title_font); } scr->clip_title_font = font; return REFRESH_ICON_FONT; } static int setLargeDisplayFont(WScreen *scr, WDefaultEntry *entry, void *tdata, void *foo) { WMFont *font = tdata; /* Parameter not used, but tell the compiler that it is ok */ (void) scr; (void) entry; (void) foo; if (scr->workspace_name_font) WMReleaseFont(scr->workspace_name_font); scr->workspace_name_font = font; return 0; } static int setHightlight(WScreen * scr, WDefaultEntry * entry, void *tdata, void *foo) { XColor *color = tdata; /* Parameter not used, but tell the compiler that it is ok */ (void) entry; (void) foo; if (scr->select_color) WMReleaseColor(scr->select_color); scr->select_color = WMCreateRGBColor(scr->wmscreen, color->red, color->green, color->blue, True); wFreeColor(scr, color->pixel); return REFRESH_MENU_COLOR; } static int setHightlightText(WScreen * scr, WDefaultEntry * entry, void *tdata, void *foo) { XColor *color = tdata; /* Parameter not used, but tell the compiler that it is ok */ (void) entry; (void) foo; if (scr->select_text_color) WMReleaseColor(scr->select_text_color); scr->select_text_color = WMCreateRGBColor(scr->wmscreen, color->red, color->green, color->blue, True); wFreeColor(scr, color->pixel); return REFRESH_MENU_COLOR; } static int setClipTitleColor(WScreen * scr, WDefaultEntry * entry, void *tdata, void *extra_data) { XColor *color = tdata; long widx = (long) extra_data; /* Parameter not used, but tell the compiler that it is ok */ (void) entry; if (scr->clip_title_color[widx]) WMReleaseColor(scr->clip_title_color[widx]); scr->clip_title_color[widx] = WMCreateRGBColor(scr->wmscreen, color->red, color->green, color->blue, True); wFreeColor(scr, color->pixel); return REFRESH_ICON_TITLE_COLOR; } static int setWTitleColor(WScreen * scr, WDefaultEntry * entry, void *tdata, void *extra_data) { XColor *color = tdata; long widx = (long) extra_data; /* Parameter not used, but tell the compiler that it is ok */ (void) entry; if (scr->window_title_color[widx]) WMReleaseColor(scr->window_title_color[widx]); scr->window_title_color[widx] = WMCreateRGBColor(scr->wmscreen, color->red, color->green, color->blue, True); wFreeColor(scr, color->pixel); return REFRESH_WINDOW_TITLE_COLOR; } static int setMenuTitleColor(WScreen * scr, WDefaultEntry * entry, void *tdata, void *extra_data) { XColor *color = tdata; /* Parameter not used, but tell the compiler that it is ok */ (void) entry; (void) extra_data; if (scr->menu_title_color[0]) WMReleaseColor(scr->menu_title_color[0]); scr->menu_title_color[0] = WMCreateRGBColor(scr->wmscreen, color->red, color->green, color->blue, True); wFreeColor(scr, color->pixel); return REFRESH_MENU_TITLE_COLOR; } static int setMenuTextColor(WScreen * scr, WDefaultEntry * entry, void *tdata, void *foo) { XColor *color = tdata; /* Parameter not used, but tell the compiler that it is ok */ (void) entry; (void) foo; if (scr->mtext_color) WMReleaseColor(scr->mtext_color); scr->mtext_color = WMCreateRGBColor(scr->wmscreen, color->red, color->green, color->blue, True); if (WMColorPixel(scr->dtext_color) == WMColorPixel(scr->mtext_color)) { WMSetColorAlpha(scr->dtext_color, 0x7fff); } else { WMSetColorAlpha(scr->dtext_color, 0xffff); } wFreeColor(scr, color->pixel); return REFRESH_MENU_COLOR; } static int setMenuDisabledColor(WScreen * scr, WDefaultEntry * entry, void *tdata, void *foo) { XColor *color = tdata; /* Parameter not used, but tell the compiler that it is ok */ (void) entry; (void) foo; if (scr->dtext_color) WMReleaseColor(scr->dtext_color); scr->dtext_color = WMCreateRGBColor(scr->wmscreen, color->red, color->green, color->blue, True); if (WMColorPixel(scr->dtext_color) == WMColorPixel(scr->mtext_color)) { WMSetColorAlpha(scr->dtext_color, 0x7fff); } else { WMSetColorAlpha(scr->dtext_color, 0xffff); } wFreeColor(scr, color->pixel); return REFRESH_MENU_COLOR; } static int setIconTitleColor(WScreen * scr, WDefaultEntry * entry, void *tdata, void *foo) { XColor *color = tdata; /* Parameter not used, but tell the compiler that it is ok */ (void) entry; (void) foo; if (scr->icon_title_color) WMReleaseColor(scr->icon_title_color); scr->icon_title_color = WMCreateRGBColor(scr->wmscreen, color->red, color->green, color->blue, True); wFreeColor(scr, color->pixel); return REFRESH_ICON_TITLE_COLOR; } static int setIconTitleBack(WScreen * scr, WDefaultEntry * entry, void *tdata, void *foo) { XColor *color = tdata; /* Parameter not used, but tell the compiler that it is ok */ (void) entry; (void) foo; if (scr->icon_title_texture) { wTextureDestroy(scr, (WTexture *) scr->icon_title_texture); } scr->icon_title_texture = wTextureMakeSolid(scr, color); return REFRESH_ICON_TITLE_BACK; } static int setFrameBorderWidth(WScreen * scr, WDefaultEntry * entry, void *tdata, void *foo) { int *value = tdata; /* Parameter not used, but tell the compiler that it is ok */ (void) entry; (void) foo; scr->frame_border_width = *value; return REFRESH_FRAME_BORDER; } static int setFrameBorderColor(WScreen * scr, WDefaultEntry * entry, void *tdata, void *foo) { XColor *color = tdata; /* Parameter not used, but tell the compiler that it is ok */ (void) entry; (void) foo; if (scr->frame_border_color) WMReleaseColor(scr->frame_border_color); scr->frame_border_color = WMCreateRGBColor(scr->wmscreen, color->red, color->green, color->blue, True); wFreeColor(scr, color->pixel); return REFRESH_FRAME_BORDER; } static int setFrameFocusedBorderColor(WScreen *scr, WDefaultEntry *entry, void *tdata, void *foo) { XColor *color = tdata; /* Parameter not used, but tell the compiler that it is ok */ (void) entry; (void) foo; if (scr->frame_focused_border_color) WMReleaseColor(scr->frame_focused_border_color); scr->frame_focused_border_color = WMCreateRGBColor(scr->wmscreen, color->red, color->green, color->blue, True); wFreeColor(scr, color->pixel); return REFRESH_FRAME_BORDER; } static int setFrameSelectedBorderColor(WScreen * scr, WDefaultEntry * entry, void *tdata, void *foo) { XColor *color = tdata; /* Parameter not used, but tell the compiler that it is ok */ (void) entry; (void) foo; if (scr->frame_selected_border_color) WMReleaseColor(scr->frame_selected_border_color); scr->frame_selected_border_color = WMCreateRGBColor(scr->wmscreen, color->red, color->green, color->blue, True); wFreeColor(scr, color->pixel); return REFRESH_FRAME_BORDER; } static int setWorkspaceSpecificBack(WScreen * scr, WDefaultEntry * entry, void *tdata, void *bar) { WMPropList *value = tdata; WMPropList *val; char *str; int i; /* Parameter not used, but tell the compiler that it is ok */ (void) entry; (void) bar; if (scr->flags.backimage_helper_launched) { if (WMGetPropListItemCount(value) == 0) { SendHelperMessage(scr, 'C', 0, NULL); SendHelperMessage(scr, 'K', 0, NULL); WMReleasePropList(value); return 0; } } else { if (WMGetPropListItemCount(value) == 0) return 0; if (!start_bg_helper(scr)) { WMReleasePropList(value); return 0; } SendHelperMessage(scr, 'P', -1, wPreferences.pixmap_path); } for (i = 0; i < WMGetPropListItemCount(value); i++) { val = WMGetFromPLArray(value, i); if (val && WMIsPLArray(val) && WMGetPropListItemCount(val) > 0) { str = WMGetPropListDescription(val, False); SendHelperMessage(scr, 'S', i + 1, str); wfree(str); } else { SendHelperMessage(scr, 'U', i + 1, NULL); } } sleep(1); WMReleasePropList(value); return 0; } static int setWorkspaceBack(WScreen * scr, WDefaultEntry * entry, void *tdata, void *bar) { WMPropList *value = tdata; /* Parameter not used, but tell the compiler that it is ok */ (void) entry; (void) bar; if (scr->flags.backimage_helper_launched) { char *str; if (WMGetPropListItemCount(value) == 0) { SendHelperMessage(scr, 'U', 0, NULL); } else { /* set the default workspace background to this one */ str = WMGetPropListDescription(value, False); if (str) { SendHelperMessage(scr, 'S', 0, str); wfree(str); SendHelperMessage(scr, 'C', scr->current_workspace + 1, NULL); } else { SendHelperMessage(scr, 'U', 0, NULL); } } } else if (WMGetPropListItemCount(value) > 0) { char *text; char *dither; int len; text = WMGetPropListDescription(value, False); len = strlen(text) + 40; dither = wPreferences.no_dithering ? "-m" : "-d"; if (!strchr(text, '\'') && !strchr(text, '\\')) { char command[len]; if (wPreferences.smooth_workspace_back) snprintf(command, len, "wmsetbg %s -S -p '%s' &", dither, text); else snprintf(command, len, "wmsetbg %s -p '%s' &", dither, text); ExecuteShellCommand(scr, command); } else wwarning(_("Invalid arguments for background \"%s\""), text); wfree(text); } WMReleasePropList(value); return 0; } static int setWidgetColor(WScreen * scr, WDefaultEntry * entry, void *tdata, void *foo) { WTexture **texture = tdata; /* Parameter not used, but tell the compiler that it is ok */ (void) entry; (void) foo; if (scr->widget_texture) { wTextureDestroy(scr, (WTexture *) scr->widget_texture); } scr->widget_texture = *(WTexSolid **) texture; return 0; } static int setFTitleBack(WScreen * scr, WDefaultEntry * entry, void *tdata, void *foo) { WTexture **texture = tdata; /* Parameter not used, but tell the compiler that it is ok */ (void) entry; (void) foo; if (scr->window_title_texture[WS_FOCUSED]) { wTextureDestroy(scr, scr->window_title_texture[WS_FOCUSED]); } scr->window_title_texture[WS_FOCUSED] = *texture; return REFRESH_WINDOW_TEXTURES; } static int setPTitleBack(WScreen * scr, WDefaultEntry * entry, void *tdata, void *foo) { WTexture **texture = tdata; /* Parameter not used, but tell the compiler that it is ok */ (void) entry; (void) foo; if (scr->window_title_texture[WS_PFOCUSED]) { wTextureDestroy(scr, scr->window_title_texture[WS_PFOCUSED]); } scr->window_title_texture[WS_PFOCUSED] = *texture; return REFRESH_WINDOW_TEXTURES; } static int setUTitleBack(WScreen * scr, WDefaultEntry * entry, void *tdata, void *foo) { WTexture **texture = tdata; /* Parameter not used, but tell the compiler that it is ok */ (void) entry; (void) foo; if (scr->window_title_texture[WS_UNFOCUSED]) { wTextureDestroy(scr, scr->window_title_texture[WS_UNFOCUSED]); } scr->window_title_texture[WS_UNFOCUSED] = *texture; return REFRESH_WINDOW_TEXTURES; } static int setResizebarBack(WScreen * scr, WDefaultEntry * entry, void *tdata, void *foo) { WTexture **texture = tdata; /* Parameter not used, but tell the compiler that it is ok */ (void) entry; (void) foo; if (scr->resizebar_texture[0]) { wTextureDestroy(scr, scr->resizebar_texture[0]); } scr->resizebar_texture[0] = *texture; return REFRESH_WINDOW_TEXTURES; } static int setMenuTitleBack(WScreen * scr, WDefaultEntry * entry, void *tdata, void *foo) { WTexture **texture = tdata; /* Parameter not used, but tell the compiler that it is ok */ (void) entry; (void) foo; if (scr->menu_title_texture[0]) { wTextureDestroy(scr, scr->menu_title_texture[0]); } scr->menu_title_texture[0] = *texture; return REFRESH_MENU_TITLE_TEXTURE; } static int setMenuTextBack(WScreen * scr, WDefaultEntry * entry, void *tdata, void *foo) { WTexture **texture = tdata; /* Parameter not used, but tell the compiler that it is ok */ (void) entry; (void) foo; if (scr->menu_item_texture) { wTextureDestroy(scr, scr->menu_item_texture); wTextureDestroy(scr, (WTexture *) scr->menu_item_auxtexture); } scr->menu_item_texture = *texture; scr->menu_item_auxtexture = wTextureMakeSolid(scr, &scr->menu_item_texture->any.color); return REFRESH_MENU_TEXTURE; } static int setKeyGrab(WScreen * scr, WDefaultEntry * entry, void *tdata, void *extra_data) { WShortKey *shortcut = tdata; WWindow *wwin; long widx = (long) extra_data; /* Parameter not used, but tell the compiler that it is ok */ (void) entry; wKeyBindings[widx] = *shortcut; wwin = scr->focused_window; while (wwin != NULL) { XUngrabKey(dpy, AnyKey, AnyModifier, wwin->frame->core->window); if (!WFLAGP(wwin, no_bind_keys)) { wWindowSetKeyGrabs(wwin); } wwin = wwin->prev; } /* do we need to update window menus? */ if (widx >= WKBD_WORKSPACE1 && widx <= WKBD_WORKSPACE10) return REFRESH_WORKSPACE_MENU; if (widx == WKBD_LASTWORKSPACE) return REFRESH_WORKSPACE_MENU; if (widx >= WKBD_MOVE_WORKSPACE1 && widx <= WKBD_MOVE_WORKSPACE10) return REFRESH_WORKSPACE_MENU; return 0; } static int setIconPosition(WScreen * scr, WDefaultEntry * entry, void *bar, void *foo) { /* Parameter not used, but tell the compiler that it is ok */ (void) entry; (void) bar; (void) foo; wScreenUpdateUsableArea(scr); wArrangeIcons(scr, True); return 0; } static int updateUsableArea(WScreen * scr, WDefaultEntry * entry, void *bar, void *foo) { /* Parameter not used, but tell the compiler that it is ok */ (void) entry; (void) bar; (void) foo; wScreenUpdateUsableArea(scr); return 0; } static int setWorkspaceMapBackground(WScreen *scr, WDefaultEntry *entry, void *tdata, void *foo) { WTexture **texture = tdata; /* Parameter not used, but tell the compiler that it is ok */ (void) entry; (void) foo; if (wPreferences.wsmbackTexture) wTextureDestroy(scr, wPreferences.wsmbackTexture); wPreferences.wsmbackTexture = *texture; return REFRESH_WINDOW_TEXTURES; } static int setMenuStyle(WScreen * scr, WDefaultEntry * entry, void *tdata, void *foo) { /* Parameter not used, but tell the compiler that it is ok */ (void) scr; (void) entry; (void) tdata; (void) foo; return REFRESH_MENU_TEXTURE; } static RImage *chopOffImage(RImage * image, int x, int y, int w, int h) { RImage *img = RCreateImage(w, h, image->format == RRGBAFormat); RCopyArea(img, image, x, y, w, h, 0, 0); return img; } static int setSwPOptions(WScreen * scr, WDefaultEntry * entry, void *tdata, void *foo) { WMPropList *array = tdata; char *path; RImage *bgimage; int cwidth, cheight; struct WPreferences *prefs = foo; if (!WMIsPLArray(array) || WMGetPropListItemCount(array) == 0) { if (prefs->swtileImage) RReleaseImage(prefs->swtileImage); prefs->swtileImage = NULL; WMReleasePropList(array); return 0; } switch (WMGetPropListItemCount(array)) { case 4: if (!WMIsPLString(WMGetFromPLArray(array, 1))) { wwarning(_("Invalid arguments for option \"%s\""), entry->key); break; } else path = FindImage(wPreferences.pixmap_path, WMGetFromPLString(WMGetFromPLArray(array, 1))); if (!path) { wwarning(_("Could not find image \"%s\" for option \"%s\""), WMGetFromPLString(WMGetFromPLArray(array, 1)), entry->key); } else { bgimage = RLoadImage(scr->rcontext, path, 0); if (!bgimage) { wwarning(_("Could not load image \"%s\" for option \"%s\""), path, entry->key); wfree(path); } else { wfree(path); cwidth = atoi(WMGetFromPLString(WMGetFromPLArray(array, 2))); cheight = atoi(WMGetFromPLString(WMGetFromPLArray(array, 3))); if (cwidth <= 0 || cheight <= 0 || cwidth >= bgimage->width - 2 || cheight >= bgimage->height - 2) wwarning(_("Invalid split sizes for switch panel back image.")); else { int i; int swidth, theight; for (i = 0; i < 9; i++) { if (prefs->swbackImage[i]) RReleaseImage(prefs->swbackImage[i]); prefs->swbackImage[i] = NULL; } swidth = (bgimage->width - cwidth) / 2; theight = (bgimage->height - cheight) / 2; prefs->swbackImage[0] = chopOffImage(bgimage, 0, 0, swidth, theight); prefs->swbackImage[1] = chopOffImage(bgimage, swidth, 0, cwidth, theight); prefs->swbackImage[2] = chopOffImage(bgimage, swidth + cwidth, 0, swidth, theight); prefs->swbackImage[3] = chopOffImage(bgimage, 0, theight, swidth, cheight); prefs->swbackImage[4] = chopOffImage(bgimage, swidth, theight, cwidth, cheight); prefs->swbackImage[5] = chopOffImage(bgimage, swidth + cwidth, theight, swidth, cheight); prefs->swbackImage[6] = chopOffImage(bgimage, 0, theight + cheight, swidth, theight); prefs->swbackImage[7] = chopOffImage(bgimage, swidth, theight + cheight, cwidth, theight); prefs->swbackImage[8] = chopOffImage(bgimage, swidth + cwidth, theight + cheight, swidth, theight); // check if anything failed for (i = 0; i < 9; i++) { if (!prefs->swbackImage[i]) { for (; i >= 0; --i) { RReleaseImage(prefs->swbackImage[i]); prefs->swbackImage[i] = NULL; } break; } } } RReleaseImage(bgimage); } } /* Fall through. */ case 1: if (!WMIsPLString(WMGetFromPLArray(array, 0))) { wwarning(_("Invalid arguments for option \"%s\""), entry->key); break; } else path = FindImage(wPreferences.pixmap_path, WMGetFromPLString(WMGetFromPLArray(array, 0))); if (!path) { wwarning(_("Could not find image \"%s\" for option \"%s\""), WMGetFromPLString(WMGetFromPLArray(array, 0)), entry->key); } else { if (prefs->swtileImage) RReleaseImage(prefs->swtileImage); prefs->swtileImage = RLoadImage(scr->rcontext, path, 0); if (!prefs->swtileImage) { wwarning(_("Could not load image \"%s\" for option \"%s\""), path, entry->key); } wfree(path); } break; default: wwarning(_("Invalid number of arguments for option \"%s\""), entry->key); break; } WMReleasePropList(array); return 0; } static int setModifierKeyLabels(WScreen * scr, WDefaultEntry * entry, void *tdata, void *foo) { WMPropList *array = tdata; int i; struct WPreferences *prefs = foo; if (!WMIsPLArray(array) || WMGetPropListItemCount(array) != 7) { wwarning(_("Value for option \"%s\" must be an array of 7 strings"), entry->key); WMReleasePropList(array); return 0; } DestroyWindowMenu(scr); for (i = 0; i < 7; i++) { if (prefs->modifier_labels[i]) wfree(prefs->modifier_labels[i]); if (WMIsPLString(WMGetFromPLArray(array, i))) { prefs->modifier_labels[i] = wstrdup(WMGetFromPLString(WMGetFromPLArray(array, i))); } else { wwarning(_("Invalid argument for option \"%s\" item %d"), entry->key, i); prefs->modifier_labels[i] = NULL; } } WMReleasePropList(array); return 0; } static int setDoubleClick(WScreen *scr, WDefaultEntry *entry, void *tdata, void *foo) { int *value = tdata; /* Parameter not used, but tell the compiler that it is ok */ (void) entry; (void) scr; if (*value <= 0) *(int *)foo = 1; W_setconf_doubleClickDelay(*value); return 0; } static int setCursor(WScreen * scr, WDefaultEntry * entry, void *tdata, void *extra_data) { Cursor *cursor = tdata; long widx = (long) extra_data; /* Parameter not used, but tell the compiler that it is ok */ (void) entry; if (wPreferences.cursor[widx] != None) { XFreeCursor(dpy, wPreferences.cursor[widx]); } wPreferences.cursor[widx] = *cursor; if (widx == WCUR_ROOT && *cursor != None) { XDefineCursor(dpy, scr->root_win, *cursor); } return 0; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/workspace.h������������������������������������������������������������������0000644�0001750�0001750�00000003234�13431646202�013727� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* workspace.c- Workspace management * * Window Maker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef WMWORKSPACE_H_ #define WMWORKSPACE_H_ typedef struct WWorkspace { char *name; struct WDock *clip; RImage *map; } WWorkspace; void wWorkspaceMake(WScreen *scr, int count); int wWorkspaceNew(WScreen *scr); int wGetWorkspaceNumber(WScreen *scr, const char *value); Bool wWorkspaceDelete(WScreen *scr, int workspace); void wWorkspaceChange(WScreen *scr, int workspace); void wWorkspaceForceChange(WScreen *scr, int workspace); WMenu *wWorkspaceMenuMake(WScreen *scr, Bool titled); void wWorkspaceMenuUpdate(WScreen *scr, WMenu *menu); void wWorkspaceMenuEdit(WScreen *scr); void wWorkspaceSaveState(WScreen *scr, WMPropList *old_state); void wWorkspaceRestoreState(WScreen *scr); void wWorkspaceRename(WScreen *scr, int workspace, const char *name); void wWorkspaceRelativeChange(WScreen *scr, int amount); #endif ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/balloon.h��������������������������������������������������������������������0000644�0001750�0001750�00000001761�13431646202�013362� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef _BALLOON_H_ #define _BALLOON_H_ void wBalloonInitialize(WScreen *scr); void wBalloonEnteredObject(WScreen *scr, WObjDescriptor *object); void wBalloonHide(WScreen *scr); #endif ���������������WindowMaker-0.95.9/src/osdep_linux.c����������������������������������������������������������������0000644�0001750�0001750�00000003264�13431646202�014260� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include <sys/types.h> #include <sys/stat.h> #include <errno.h> #include <fcntl.h> #include <limits.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <WINGs/WUtil.h> #include "wconfig.h" #include "osdep.h" /* * copy argc and argv for an existing process identified by `pid' * into suitable storage given in ***argv and *argc. * * subsequent calls use the same static area for argv and argc. * * returns 0 for failure, in which case argc := 0 and argv := NULL * returns 1 for success */ Bool GetCommandForPid(int pid, char ***argv, int *argc) { static char buf[_POSIX_ARG_MAX]; int fd, i, j; ssize_t count; *argv = NULL; *argc = 0; /* cmdline is a flattened series of null-terminated strings */ snprintf(buf, sizeof(buf), "/proc/%d/cmdline", pid); while (1) { /* not switching this to stdio yet, as this does not need * to be portable, and i'm lazy */ fd = open(buf, O_RDONLY); if (fd != -1) break; if (errno == EINTR) continue; return False; } while (1) { count = read(fd, buf, sizeof(buf)); if (count != -1) break; if (errno == EINTR) continue; close(fd); return False; } close(fd); /* count args */ for (i = 0; i < count; i++) if (buf[i] == '\0') (*argc)++; if (*argc == 0) return False; *argv = (char **)wmalloc(sizeof(char *) * (*argc + 1 /* term. null ptr */)); (*argv)[0] = buf; /* go through buf, set argv[$next] to the beginning of each string */ for (i = 0, j = 1; i < count; i++) { if (buf[i] != '\0') continue; if (i < count - 1) (*argv)[j++] = &buf[i + 1]; if (j == *argc) break; } /* the list of arguments must be terminated by a null pointer */ (*argv)[j] = NULL; return True; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/actions.h��������������������������������������������������������������������0000644�0001750�0001750�00000005464�13642357774�013421� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef WMACTIONS_H_ #define WMACTIONS_H_ #include "window.h" #define MAX_HORIZONTAL (1 << 0) #define MAX_VERTICAL (1 << 1) #define MAX_LEFTHALF (1 << 2) #define MAX_RIGHTHALF (1 << 3) #define MAX_TOPHALF (1 << 4) #define MAX_BOTTOMHALF (1 << 5) #define MAX_MAXIMUS (1 << 6) #define MAX_IGNORE_XINERAMA (1 << 7) #define MAX_KEYBOARD (1 << 8) #define SAVE_GEOMETRY_X (1 << 0) #define SAVE_GEOMETRY_Y (1 << 1) #define SAVE_GEOMETRY_WIDTH (1 << 2) #define SAVE_GEOMETRY_HEIGHT (1 << 3) #define SAVE_GEOMETRY_ALL SAVE_GEOMETRY_X | SAVE_GEOMETRY_Y | SAVE_GEOMETRY_WIDTH | SAVE_GEOMETRY_HEIGHT void wSetFocusTo(WScreen *scr, WWindow *wwin); int wMouseMoveWindow(WWindow *wwin, XEvent *ev); int wKeyboardMoveResizeWindow(WWindow *wwin); void wMouseResizeWindow(WWindow *wwin, XEvent *ev); void wShadeWindow(WWindow *wwin); void wUnshadeWindow(WWindow *wwin); void wIconifyWindow(WWindow *wwin); void wDeiconifyWindow(WWindow *wwin); void wSelectWindows(WScreen *scr, XEvent *ev); void wSelectWindow(WWindow *wwin, Bool flag); void wUnselectWindows(WScreen *scr); void wMaximizeWindow(WWindow *wwin, int directions, int head); void wUnmaximizeWindow(WWindow *wwin); void handleMaximize(WWindow *wwin, int directions); void wHideAll(WScreen *src); void wHideOtherApplications(WWindow *wwin); void wShowAllWindows(WScreen *scr); void wHideApplication(WApplication *wapp); void wUnhideApplication(WApplication *wapp, Bool miniwindows, Bool bringToCurrentWS); void wRefreshDesktop(WScreen *scr); void wArrangeIcons(WScreen *scr, Bool arrangeAll); void wMakeWindowVisible(WWindow *wwin); void wFullscreenWindow(WWindow *wwin); void wUnfullscreenWindow(WWindow *wwin); void animateResize(WScreen *scr, int x, int y, int w, int h, int fx, int fy, int fw, int fh); void update_saved_geometry(WWindow *wwin); void movePionterToWindowCenter(WWindow *wwin); void moveBetweenHeads(WWindow *wwin, int direction); #endif ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/xmodifier.c������������������������������������������������������������������0000644�0001750�0001750�00000025112�13431646202�013711� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Grok X modifier mappings for shortcuts. Most of this code was taken from src/event-Xt.c in XEmacs 20.3-b17. The copyright(s) from the original XEmacs code are included below. Perpetrator: Sudish Joseph <sj@eng.mindspring.net>, Sept. 1997. */ /* The event_stream interface for X11 with Xt, and/or tty frames. Copyright (C) 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc. Copyright (C) 1995 Sun Microsystems, Inc. Copyright (C) 1996 Ben Wing. This file is part of XEmacs. XEmacs is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. XEmacs 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 XEmacs; see the file COPYING. if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "wconfig.h" #include <string.h> #include <strings.h> #include <X11/Xlib.h> #include <X11/keysym.h> #include <X11/XKBlib.h> #include <WINGs/WUtil.h> #include "WindowMaker.h" #include "xmodifier.h" /************************************************************************/ /* keymap handling */ /************************************************************************/ /* X bogusly doesn't define the interpretations of any bits besides ModControl, ModShift, and ModLock; so the Interclient Communication Conventions Manual says that we have to bend over backwards to figure out what the other modifier bits mean. According to ICCCM: - Any keycode which is assigned ModControl is a "control" key. - Any modifier bit which is assigned to a keycode which generates Meta_L or Meta_R is the modifier bit meaning "meta". Likewise for Super, Hyper, etc. - Any keypress event which contains ModControl in its state should be interpreted as a "control" character. - Any keypress event which contains a modifier bit in its state which is generated by a keycode whose corresponding keysym is Meta_L or Meta_R should be interpreted as a "meta" character. Likewise for Super, Hyper, etc. - It is illegal for a keysym to be associated with more than one modifier bit. This means that the only thing that emacs can reasonably interpret as a "meta" key is a key whose keysym is Meta_L or Meta_R, and which generates one of the modifier bits Mod1-Mod5. Unfortunately, many keyboards don't have Meta keys in their default configuration. So, if there are no Meta keys, but there are "Alt" keys, emacs will interpret Alt as Meta. If there are both Meta and Alt keys, then the Meta keys mean "Meta", and the Alt keys mean "Alt" (it used to mean "Symbol," but that just confused the hell out of way too many people). This works with the default configurations of the 19 keyboard-types I've checked. Emacs detects keyboard configurations which violate the above rules, and prints an error message on the standard-error-output. (Perhaps it should use a pop-up-window instead.) */ static int MetaMask, HyperMask, SuperMask, AltMask, ModeMask; static const char *index_to_name(int indice) { switch (indice) { case ShiftMapIndex: return "ModShift"; case LockMapIndex: return "ModLock"; case ControlMapIndex: return "ModControl"; case Mod1MapIndex: return "Mod1"; case Mod2MapIndex: return "Mod2"; case Mod3MapIndex: return "Mod3"; case Mod4MapIndex: return "Mod4"; case Mod5MapIndex: return "Mod5"; default: return "???"; } } static void x_reset_modifier_mapping(Display * display) { int modifier_index, modifier_key, column, mkpm; int meta_bit = 0; int hyper_bit = 0; int super_bit = 0; int alt_bit = 0; int mode_bit = 0; XModifierKeymap *x_modifier_keymap = XGetModifierMapping(display); mkpm = x_modifier_keymap->max_keypermod; for (modifier_index = 0; modifier_index < 8; modifier_index++) for (modifier_key = 0; modifier_key < mkpm; modifier_key++) { KeySym last_sym = 0; for (column = 0; column < 4; column += 2) { KeyCode code; KeySym sym; inline void modwarn(const char *key_name, int old_mod, const char *other_key) { wwarning(_("key %s (0x%x) generates %s, which is generated by %s"), key_name, code, index_to_name(old_mod), other_key); } inline void modbarf(const char *key_name, const char *other_mod) { wwarning(_("key %s (0x%x) generates %s, which is nonsensical"), key_name, code, other_mod); } inline void check_modifier(const char *key_name, int mask) { if ((1 << modifier_index) != mask) modbarf(key_name, index_to_name(modifier_index)); } inline void store_modifier(const char *key_name, int *old_mod) { if (*old_mod && *old_mod != modifier_index) wwarning(_("key %s (0x%x) generates both %s and %s, which is nonsensical"), key_name, code, index_to_name(*old_mod), index_to_name(modifier_index)); if (modifier_index == ShiftMapIndex) { modbarf(key_name, "ModShift"); } else if (modifier_index == LockMapIndex) { modbarf(key_name, "ModLock"); } else if (modifier_index == ControlMapIndex) { modbarf(key_name, "ModControl"); } else if (sym == XK_Mode_switch) { mode_bit = modifier_index; /* Mode_switch is special, see below... */ } else if (modifier_index == meta_bit && *old_mod != meta_bit) { modwarn(key_name, meta_bit, "Meta"); } else if (modifier_index == super_bit && *old_mod != super_bit) { modwarn(key_name, super_bit, "Super"); } else if (modifier_index == hyper_bit && *old_mod != hyper_bit) { modwarn(key_name, hyper_bit, "Hyper"); } else if (modifier_index == alt_bit && *old_mod != alt_bit) { modwarn(key_name, alt_bit, "Alt"); } else { *(old_mod) = modifier_index; } } code = x_modifier_keymap->modifiermap[modifier_index * mkpm + modifier_key]; sym = (code ? XkbKeycodeToKeysym(display, code, 0, column) : NoSymbol); if (sym == last_sym) continue; last_sym = sym; switch (sym) { case XK_Mode_switch: store_modifier("Mode_switch", &mode_bit); break; case XK_Meta_L: store_modifier("Meta_L", &meta_bit); break; case XK_Meta_R: store_modifier("Meta_R", &meta_bit); break; case XK_Super_L: store_modifier("Super_L", &super_bit); break; case XK_Super_R: store_modifier("Super_R", &super_bit); break; case XK_Hyper_L: store_modifier("Hyper_L", &hyper_bit); break; case XK_Hyper_R: store_modifier("Hyper_R", &hyper_bit); break; case XK_Alt_L: store_modifier("Alt_L", &alt_bit); break; case XK_Alt_R: store_modifier("Alt_R", &alt_bit); break; case XK_Control_L: check_modifier("Control_L", ControlMask); break; case XK_Control_R: check_modifier("Control_R", ControlMask); break; case XK_Shift_L: check_modifier("Shift_L", ShiftMask); break; case XK_Shift_R: check_modifier("Shift_R", ShiftMask); break; case XK_Shift_Lock: check_modifier("Shift_Lock", LockMask); break; case XK_Caps_Lock: check_modifier("Caps_Lock", LockMask); break; /* It probably doesn't make any sense for a modifier bit to be assigned to a key that is not one of the above, but OpenWindows assigns modifier bits to a couple of random function keys for no reason that I can discern, so printing a warning here would be annoying. */ } } } /* If there was no Meta key, then try using the Alt key instead. If there is both a Meta key and an Alt key, then the Alt key is not disturbed and remains an Alt key. */ if (!meta_bit && alt_bit) meta_bit = alt_bit, alt_bit = 0; /* mode_bit overrides everything, since it's processed down inside of XLookupString() instead of by us. If Meta and Mode_switch both generate the same modifier bit (which is an error), then we don't interpret that bit as Meta, because we can't make XLookupString() not interpret it as Mode_switch; and interpreting it as both would be totally wrong. */ if (mode_bit) { const char *warn = NULL; if (mode_bit == meta_bit) warn = "Meta", meta_bit = 0; else if (mode_bit == hyper_bit) warn = "Hyper", hyper_bit = 0; else if (mode_bit == super_bit) warn = "Super", super_bit = 0; else if (mode_bit == alt_bit) warn = "Alt", alt_bit = 0; if (warn) { wwarning("%s is being used for both Mode_switch and %s.", index_to_name(mode_bit), warn); } } MetaMask = (meta_bit ? (1 << meta_bit) : 0); HyperMask = (hyper_bit ? (1 << hyper_bit) : 0); SuperMask = (super_bit ? (1 << super_bit) : 0); AltMask = (alt_bit ? (1 << alt_bit) : 0); ModeMask = (mode_bit ? (1 << mode_bit) : 0); /* unused */ XFreeModifiermap(x_modifier_keymap); } const char *wXModifierToShortcutLabel(int mask) { if (mask < 0) return NULL; if (mask == ShiftMask) return "Sh+"; if (mask == ControlMask) return "^"; if (mask == AltMask) return "A+"; if (mask == Mod1Mask) return "M1+"; if (mask == Mod2Mask) return "M2+"; if (mask == Mod3Mask) return "M3+"; if (mask == Mod4Mask) return "M4+"; if (mask == Mod5Mask) return "M5+"; if (mask == MetaMask) return "M+"; wwarning(_("Can't convert keymask 0x%04X to a shortcut label"), mask); return NULL; } int wXModifierFromKey(const char *key) { if (strcasecmp(key, "SHIFT") == 0 && ShiftMask != 0) return ShiftMask; else if (strcasecmp(key, "CONTROL") == 0 && ControlMask != 0) return ControlMask; else if (strcasecmp(key, "ALT") == 0 && AltMask != 0) return AltMask; else if (strcasecmp(key, "META") == 0 && MetaMask != 0) return MetaMask; else if (strcasecmp(key, "SUPER") == 0 && SuperMask != 0) return SuperMask; else if (strcasecmp(key, "HYPER") == 0 && HyperMask != 0) return HyperMask; else if (strcasecmp(key, "MOD1") == 0 && Mod1Mask != 0) return Mod1Mask; else if (strcasecmp(key, "MOD2") == 0 && Mod2Mask != 0) return Mod2Mask; else if (strcasecmp(key, "MOD3") == 0 && Mod3Mask != 0) return Mod3Mask; else if (strcasecmp(key, "MOD4") == 0 && Mod4Mask != 0) return Mod4Mask; else if (strcasecmp(key, "MOD5") == 0 && Mod5Mask != 0) return Mod5Mask; else return -1; } /* Wrapper so that we may fit the WM naming conventions, yet leave the original XEmacs function name in place. */ void wXModifierInitialize(void) { x_reset_modifier_mapping(dpy); } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/properties.c�����������������������������������������������������������������0000644�0001750�0001750�00000014023�13431646202�014116� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "wconfig.h" #include <X11/Xlib.h> #include <X11/Xutil.h> #include <X11/Xatom.h> #include <string.h> #include <stdlib.h> #include "WindowMaker.h" #include "window.h" #include "GNUstep.h" #include "properties.h" int PropGetNormalHints(Window window, XSizeHints * size_hints, int *pre_iccm) { long supplied_hints; if (!XGetWMNormalHints(dpy, window, size_hints, &supplied_hints)) { return False; } if (supplied_hints == (USPosition | USSize | PPosition | PSize | PMinSize | PMaxSize | PResizeInc | PAspect)) { *pre_iccm = 1; } else { *pre_iccm = 0; } return True; } int PropGetWMClass(Window window, char **wm_class, char **wm_instance) { XClassHint *class_hint; class_hint = XAllocClassHint(); if (XGetClassHint(dpy, window, class_hint) == 0) { *wm_class = strdup("default"); *wm_instance = strdup("default"); XFree(class_hint); return False; } *wm_instance = strdup(class_hint->res_name); *wm_class = strdup(class_hint->res_class); XFree(class_hint->res_name); XFree(class_hint->res_class); XFree(class_hint); return True; } void PropGetProtocols(Window window, WProtocols * prots) { Atom *protocols; int count, i; memset(prots, 0, sizeof(WProtocols)); if (!XGetWMProtocols(dpy, window, &protocols, &count)) { return; } for (i = 0; i < count; i++) { if (protocols[i] == w_global.atom.wm.take_focus) prots->TAKE_FOCUS = 1; else if (protocols[i] == w_global.atom.wm.delete_window) prots->DELETE_WINDOW = 1; else if (protocols[i] == w_global.atom.wm.save_yourself) prots->SAVE_YOURSELF = 1; else if (protocols[i] == w_global.atom.gnustep.wm_miniaturize_window) prots->MINIATURIZE_WINDOW = 1; } XFree(protocols); } unsigned char *PropGetCheckProperty(Window window, Atom hint, Atom type, int format, int count, int *retCount) { Atom type_ret; int fmt_ret; unsigned long nitems_ret; unsigned long bytes_after_ret; unsigned char *data; int tmp; if (count <= 0) tmp = 0xffffff; else tmp = count; if (XGetWindowProperty(dpy, window, hint, 0, tmp, False, type, &type_ret, &fmt_ret, &nitems_ret, &bytes_after_ret, (unsigned char **)&data) != Success || !data) return NULL; if ((type != AnyPropertyType && type != type_ret) || (count > 0 && nitems_ret != count) || (format != 0 && format != fmt_ret)) { XFree(data); return NULL; } if (retCount) *retCount = nitems_ret; return data; } int PropGetGNUstepWMAttr(Window window, GNUstepWMAttributes ** attr) { unsigned long *data; data = (unsigned long *)PropGetCheckProperty(window, w_global.atom.gnustep.wm_attr, w_global.atom.gnustep.wm_attr, 32, 9, NULL); if (!data) return False; *attr = malloc(sizeof(GNUstepWMAttributes)); if (!*attr) { XFree(data); return False; } (*attr)->flags = data[0]; (*attr)->window_style = data[1]; (*attr)->window_level = data[2]; (*attr)->reserved = data[3]; (*attr)->miniaturize_pixmap = data[4]; (*attr)->close_pixmap = data[5]; (*attr)->miniaturize_mask = data[6]; (*attr)->close_mask = data[7]; (*attr)->extra_flags = data[8]; XFree(data); return True; } void PropSetWMakerProtocols(Window root) { Atom protocols[3]; int count = 0; protocols[count++] = w_global.atom.wmaker.menu; protocols[count++] = w_global.atom.wmaker.wm_function; protocols[count++] = w_global.atom.wmaker.noticeboard; XChangeProperty(dpy, root, w_global.atom.wmaker.wm_protocols, XA_ATOM, 32, PropModeReplace, (unsigned char *)protocols, count); } void PropSetIconTileHint(WScreen * scr, RImage * image) { static Atom imageAtom = 0; unsigned char *tmp; int x, y; if (scr->info_window == None) return; if (!imageAtom) { /* * WIDTH, HEIGHT (16 bits, MSB First) * array of R,G,B,A bytes */ imageAtom = XInternAtom(dpy, "_RGBA_IMAGE", False); } tmp = malloc(image->width * image->height * 4 + 4); if (!tmp) { wwarning("could not allocate memory to set _WINDOWMAKER_ICON_TILE hint"); return; } tmp[0] = image->width >> 8; tmp[1] = image->width & 0xff; tmp[2] = image->height >> 8; tmp[3] = image->height & 0xff; if (image->format == RRGBAFormat) { memcpy(&tmp[4], image->data, image->width * image->height * 4); } else { char *ptr = (char *)(tmp + 4); char *src = (char *)image->data; for (y = 0; y < image->height; y++) { for (x = 0; x < image->width; x++) { *ptr++ = *src++; *ptr++ = *src++; *ptr++ = *src++; *ptr++ = 255; } } } XChangeProperty(dpy, scr->info_window, w_global.atom.wmaker.icon_tile, imageAtom, 8, PropModeReplace, tmp, image->width * image->height * 4 + 4); wfree(tmp); } Window PropGetClientLeader(Window window) { Window *win; Window leader; win = (Window *) PropGetCheckProperty(window, w_global.atom.wm.client_leader, XA_WINDOW, 32, 1, NULL); if (!win) return None; leader = (Window) * win; XFree(win); return leader; } int PropGetWindowState(Window window) { long *data; long state; data = (long *)PropGetCheckProperty(window, w_global.atom.wm.state, w_global.atom.wm.state, 32, 1, NULL); if (!data) return -1; state = *data; XFree(data); return state; } void PropCleanUp(Window root) { XDeleteProperty(dpy, root, w_global.atom.wmaker.wm_protocols); XDeleteProperty(dpy, root, w_global.atom.wmaker.noticeboard); XDeleteProperty(dpy, root, XA_WM_ICON_SIZE); } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/superfluous.h����������������������������������������������������������������0000644�0001750�0001750�00000002020�13431646202�014315� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef WMSUPERFLUOUS_H #define WMSUPERFLUOUS_H #include "dock.h" void DoKaboom(WScreen *scr, Window win, int x, int y); Pixmap MakeGhostIcon(WScreen *scr, Drawable drawable); void DoWindowBirth(WWindow *wwin); #endif ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/switchpanel.c����������������������������������������������������������������0000644�0001750�0001750�00000044024�13642357774�014270� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2004 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "wconfig.h" #include <stdint.h> #include <stdlib.h> #include <string.h> #include <sys/time.h> #include "WindowMaker.h" #include "screen.h" #include "framewin.h" #include "icon.h" #include "window.h" #include "defaults.h" #include "switchpanel.h" #include "misc.h" #include "xinerama.h" #ifdef USE_XSHAPE #include <X11/extensions/shape.h> #endif struct SwitchPanel { WScreen *scr; WMWindow *win; WMFrame *iconBox; WMArray *icons; WMArray *images; WMArray *windows; WMArray *flags; RImage *bg; int current; int firstVisible; int visibleCount; WMLabel *label; RImage *tileTmp; RImage *tile; WMFont *font; WMColor *white; }; /* these values will be updated whenever the switch panel * is created to to match the size defined in switch_panel_icon_size * and the selected font size */ static short int icon_size; static short int border_space; static short int icon_tile_size; static short int label_height; #define SCREEN_BORDER_SPACING 2*20 #define ICON_SELECTED (1<<1) #define ICON_DIM (1<<2) static int canReceiveFocus(WWindow *wwin) { if (wwin->frame->workspace != wwin->screen_ptr->current_workspace) return 0; if (wPreferences.cycle_active_head_only && wGetHeadForWindow(wwin) != wGetHeadForPointerLocation(wwin->screen_ptr)) return 0; if (WFLAGP(wwin, no_focusable)) return 0; if (!wwin->flags.mapped) { if (!wwin->flags.shaded && !wwin->flags.miniaturized && !wwin->flags.hidden) return 0; else return -1; } return 1; } static Bool sameWindowClass(WWindow *wwin, WWindow *curwin) { if (!wwin->wm_class || !curwin->wm_class) return False; if (strcmp(wwin->wm_class, curwin->wm_class)) return False; return True; } static void changeImage(WSwitchPanel *panel, int idecks, int selected, Bool dim, Bool force) { WMFrame *icon = NULL; RImage *image = NULL; int flags; int desired = 0; /* This whole function is a no-op if we aren't drawing the panel */ if (!wPreferences.swtileImage) return; icon = WMGetFromArray(panel->icons, idecks); image = WMGetFromArray(panel->images, idecks); flags = (int) (uintptr_t) WMGetFromArray(panel->flags, idecks); if (selected) desired |= ICON_SELECTED; if (dim) desired |= ICON_DIM; if (flags == desired && !force) return; WMReplaceInArray(panel->flags, idecks, (void *) (uintptr_t) desired); if (!panel->bg && !panel->tile && !selected) WMSetFrameRelief(icon, WRFlat); if (image && icon) { RImage *back; int opaq = (dim) ? 75 : 255; RImage *tile; WMPoint pos; Pixmap p; if (canReceiveFocus(WMGetFromArray(panel->windows, idecks)) < 0) opaq = 50; pos = WMGetViewPosition(WMWidgetView(icon)); back = panel->tileTmp; if (panel->bg) { RCopyArea(back, panel->bg, border_space + pos.x - panel->firstVisible * icon_tile_size, border_space + pos.y, back->width, back->height, 0, 0); } else { RColor color; WMScreen *wscr = WMWidgetScreen(icon); color.red = 255; color.red = WMRedComponentOfColor(WMGrayColor(wscr)) >> 8; color.green = WMGreenComponentOfColor(WMGrayColor(wscr)) >> 8; color.blue = WMBlueComponentOfColor(WMGrayColor(wscr)) >> 8; RFillImage(back, &color); } if (selected) { tile = panel->tile; RCombineArea(back, tile, 0, 0, tile->width, tile->height, (back->width - tile->width) / 2, (back->height - tile->height) / 2); } RCombineAreaWithOpaqueness(back, image, 0, 0, image->width, image->height, (back->width - image->width) / 2, (back->height - image->height) / 2, opaq); RConvertImage(panel->scr->rcontext, back, &p); XSetWindowBackgroundPixmap(dpy, WMWidgetXID(icon), p); XClearWindow(dpy, WMWidgetXID(icon)); XFreePixmap(dpy, p); } if (!panel->bg && !panel->tile && selected) WMSetFrameRelief(icon, WRSimple); } static void addIconForWindow(WSwitchPanel *panel, WMWidget *parent, WWindow *wwin, int x, int y) { WMFrame *icon = WMCreateFrame(parent); RImage *image = NULL; WMSetFrameRelief(icon, WRFlat); WMResizeWidget(icon, icon_tile_size, icon_tile_size); WMMoveWidget(icon, x, y); if (!WFLAGP(wwin, always_user_icon) && wwin->net_icon_image) image = RRetainImage(wwin->net_icon_image); /* get_icon_image() includes the default icon image */ if (!image) image = get_icon_image(panel->scr, wwin->wm_instance, wwin->wm_class, icon_tile_size); /* We must resize the icon size (~64) to the switch panel icon size (~48) */ image = wIconValidateIconSize(image, icon_size); WMAddToArray(panel->images, image); WMAddToArray(panel->icons, icon); } static void scrollIcons(WSwitchPanel *panel, int delta) { int nfirst = panel->firstVisible + delta; int i; int count = WMGetArrayItemCount(panel->windows); Bool dim; if (count <= panel->visibleCount) return; if (nfirst < 0) nfirst = 0; else if (nfirst >= count - panel->visibleCount) nfirst = count - panel->visibleCount; if (nfirst == panel->firstVisible) return; WMMoveWidget(panel->iconBox, -nfirst * icon_tile_size, 0); panel->firstVisible = nfirst; for (i = panel->firstVisible; i < panel->firstVisible + panel->visibleCount; i++) { if (i == panel->current) continue; dim = ((int) (uintptr_t) WMGetFromArray(panel->flags, i) & ICON_DIM); changeImage(panel, i, 0, dim, True); } } /* * 0 1 2 * 3 4 5 * 6 7 8 */ static RImage *assemblePuzzleImage(RImage **images, int width, int height) { RImage *img; RImage *tmp; int tw, th; RColor color; tw = width - images[0]->width - images[2]->width; th = height - images[0]->height - images[6]->height; if (tw <= 0 || th <= 0) return NULL; img = RCreateImage(width, height, 1); if (!img) return NULL; color.red = 0; color.green = 0; color.blue = 0; color.alpha = 255; RFillImage(img, &color); /* top */ tmp = RSmoothScaleImage(images[1], tw, images[1]->height); RCopyArea(img, tmp, 0, 0, tmp->width, tmp->height, images[0]->width, 0); RReleaseImage(tmp); /* bottom */ tmp = RSmoothScaleImage(images[7], tw, images[7]->height); RCopyArea(img, tmp, 0, 0, tmp->width, tmp->height, images[6]->width, height - images[6]->height); RReleaseImage(tmp); /* left */ tmp = RSmoothScaleImage(images[3], images[3]->width, th); RCopyArea(img, tmp, 0, 0, tmp->width, tmp->height, 0, images[0]->height); RReleaseImage(tmp); /* right */ tmp = RSmoothScaleImage(images[5], images[5]->width, th); RCopyArea(img, tmp, 0, 0, tmp->width, tmp->height, width - images[5]->width, images[2]->height); RReleaseImage(tmp); /* center */ tmp = RSmoothScaleImage(images[4], tw, th); RCopyArea(img, tmp, 0, 0, tmp->width, tmp->height, images[0]->width, images[0]->height); RReleaseImage(tmp); /* corners */ RCopyArea(img, images[0], 0, 0, images[0]->width, images[0]->height, 0, 0); RCopyArea(img, images[2], 0, 0, images[2]->width, images[2]->height, width - images[2]->width, 0); RCopyArea(img, images[6], 0, 0, images[6]->width, images[6]->height, 0, height - images[6]->height); RCopyArea(img, images[8], 0, 0, images[8]->width, images[8]->height, width - images[8]->width, height - images[8]->height); return img; } static RImage *createBackImage(int width, int height) { return assemblePuzzleImage(wPreferences.swbackImage, width, height); } static RImage *getTile(void) { RImage *stile; if (!wPreferences.swtileImage) return NULL; stile = RScaleImage(wPreferences.swtileImage, icon_tile_size, icon_tile_size); if (!stile) return wPreferences.swtileImage; return stile; } static void drawTitle(WSwitchPanel *panel, int idecks, const char *title) { char *ntitle; int width = WMWidgetWidth(panel->win); int x; if (title) ntitle = ShrinkString(panel->font, title, width - 2 * border_space); else ntitle = NULL; if (panel->bg) { if (ntitle) { if (strcmp(ntitle, title) != 0) { x = border_space; } else { int w = WMWidthOfString(panel->font, ntitle, strlen(ntitle)); x = border_space + (idecks - panel->firstVisible) * icon_tile_size+ icon_tile_size/ 2 - w / 2; if (x < border_space) x = border_space; else if (x + w > width - border_space) x = width - border_space - w; } } XClearWindow(dpy, WMWidgetXID(panel->win)); if (ntitle) WMDrawString(panel->scr->wmscreen, WMWidgetXID(panel->win), panel->white, panel->font, x, WMWidgetHeight(panel->win) - border_space - label_height + WMFontHeight(panel->font) / 2, ntitle, strlen(ntitle)); } else { if (ntitle) WMSetLabelText(panel->label, ntitle); } if (ntitle) free(ntitle); } static WMArray *makeWindowListArray(WScreen *scr, int include_unmapped, Bool class_only) { WMArray *windows = WMCreateArray(10); WWindow *wwin = scr->focused_window; while (wwin) { if ((canReceiveFocus(wwin) != 0) && (wwin->flags.mapped || wwin->flags.shaded || include_unmapped)) { if (class_only) if (!sameWindowClass(scr->focused_window, wwin)) { wwin = wwin->prev; continue; } if (!WFLAGP(wwin, skip_switchpanel)) WMAddToArray(windows, wwin); } wwin = wwin->prev; } return windows; } static WMArray *makeWindowFlagsArray(int count) { WMArray *flags = WMCreateArray(count); int i; for (i = 0; i < count; i++) WMAddToArray(flags, (void *) 0); return flags; } WSwitchPanel *wInitSwitchPanel(WScreen *scr, WWindow *curwin, Bool class_only) { int wmScaleWidth, wmScaleHeight; WMGetScaleBaseFromSystemFont(scr->wmscreen, &wmScaleWidth, &wmScaleHeight); icon_size = wPreferences.switch_panel_icon_size; icon_tile_size = (short int)(((float)icon_size * (float)1.2) + 0.5); border_space = WMScaleY(10); label_height = WMScaleY(25); WWindow *wwin; WSwitchPanel *panel = wmalloc(sizeof(WSwitchPanel)); WMFrame *viewport; int i, width, height, iconsThatFitCount, count; WMRect rect = wGetRectForHead(scr, wGetHeadForPointerLocation(scr)); panel->scr = scr; panel->windows = makeWindowListArray(scr, wPreferences.swtileImage != NULL, class_only); count = WMGetArrayItemCount(panel->windows); if (count) panel->flags = makeWindowFlagsArray(count); if (count == 0) { WMFreeArray(panel->windows); wfree(panel); return NULL; } width = icon_tile_size* count; iconsThatFitCount = count; if (width > (int)rect.size.width) { iconsThatFitCount = (rect.size.width - SCREEN_BORDER_SPACING) / icon_tile_size; width = iconsThatFitCount * icon_tile_size; } panel->visibleCount = iconsThatFitCount; if (!wPreferences.swtileImage) return panel; height = label_height + icon_tile_size; panel->tileTmp = RCreateImage(icon_tile_size, icon_tile_size, 1); panel->tile = getTile(); if (panel->tile && wPreferences.swbackImage[8]) panel->bg = createBackImage(width + 2 * border_space, height + 2 * border_space); if (!panel->tileTmp || !panel->tile) { if (panel->bg) RReleaseImage(panel->bg); panel->bg = NULL; if (panel->tile) RReleaseImage(panel->tile); panel->tile = NULL; if (panel->tileTmp) RReleaseImage(panel->tileTmp); panel->tileTmp = NULL; } panel->white = WMWhiteColor(scr->wmscreen); panel->font = WMBoldSystemFontOfSize(scr->wmscreen, WMScaleY(12)); panel->icons = WMCreateArray(count); panel->images = WMCreateArray(count); panel->win = WMCreateWindow(scr->wmscreen, ""); if (!panel->bg) { WMFrame *frame = WMCreateFrame(panel->win); WMColor *darkGray = WMDarkGrayColor(scr->wmscreen); WMSetFrameRelief(frame, WRSimple); WMSetViewExpandsToParent(WMWidgetView(frame), 0, 0, 0, 0); panel->label = WMCreateLabel(panel->win); WMResizeWidget(panel->label, width, label_height); WMMoveWidget(panel->label, border_space, border_space + icon_tile_size+ 5); WMSetLabelRelief(panel->label, WRSimple); WMSetWidgetBackgroundColor(panel->label, darkGray); WMSetLabelFont(panel->label, panel->font); WMSetLabelTextColor(panel->label, panel->white); WMReleaseColor(darkGray); height += 5; } WMResizeWidget(panel->win, width + 2 * border_space, height + 2 * border_space); viewport = WMCreateFrame(panel->win); WMResizeWidget(viewport, width, icon_tile_size); WMMoveWidget(viewport, border_space, border_space); WMSetFrameRelief(viewport, WRFlat); panel->iconBox = WMCreateFrame(viewport); WMMoveWidget(panel->iconBox, 0, 0); WMResizeWidget(panel->iconBox, icon_tile_size* count, icon_tile_size); WMSetFrameRelief(panel->iconBox, WRFlat); WM_ITERATE_ARRAY(panel->windows, wwin, i) { addIconForWindow(panel, panel->iconBox, wwin, i * icon_tile_size, 0); } WMMapSubwidgets(panel->win); WMRealizeWidget(panel->win); WM_ITERATE_ARRAY(panel->windows, wwin, i) { changeImage(panel, i, 0, False, True); } if (panel->bg) { Pixmap pixmap, mask; RConvertImageMask(scr->rcontext, panel->bg, &pixmap, &mask, 250); XSetWindowBackgroundPixmap(dpy, WMWidgetXID(panel->win), pixmap); #ifdef USE_XSHAPE if (mask && w_global.xext.shape.supported) XShapeCombineMask(dpy, WMWidgetXID(panel->win), ShapeBounding, 0, 0, mask, ShapeSet); #endif if (pixmap) XFreePixmap(dpy, pixmap); if (mask) XFreePixmap(dpy, mask); } { WMPoint center; center = wGetPointToCenterRectInHead(scr, wGetHeadForPointerLocation(scr), width + 2 * border_space, height + 2 * border_space); WMMoveWidget(panel->win, center.x, center.y); } panel->current = WMGetFirstInArray(panel->windows, curwin); if (panel->current >= 0) changeImage(panel, panel->current, 1, False, False); WMMapWidget(panel->win); return panel; } void wSwitchPanelDestroy(WSwitchPanel *panel) { int i; RImage *image; if (panel->win) { Window info_win = panel->scr->info_window; XEvent ev; ev.xclient.type = ClientMessage; ev.xclient.message_type = w_global.atom.wm.ignore_focus_events; ev.xclient.format = 32; ev.xclient.data.l[0] = True; XSendEvent(dpy, info_win, True, EnterWindowMask, &ev); WMUnmapWidget(panel->win); ev.xclient.data.l[0] = False; XSendEvent(dpy, info_win, True, EnterWindowMask, &ev); } if (panel->images) { WM_ITERATE_ARRAY(panel->images, image, i) { if (image) RReleaseImage(image); } WMFreeArray(panel->images); } if (panel->win) WMDestroyWidget(panel->win); if (panel->icons) WMFreeArray(panel->icons); if (panel->flags) WMFreeArray(panel->flags); WMFreeArray(panel->windows); if (panel->tile) RReleaseImage(panel->tile); if (panel->tileTmp) RReleaseImage(panel->tileTmp); if (panel->bg) RReleaseImage(panel->bg); if (panel->font) WMReleaseFont(panel->font); if (panel->white) WMReleaseColor(panel->white); wfree(panel); } WWindow *wSwitchPanelSelectNext(WSwitchPanel *panel, int back, int ignore_minimized, Bool class_only) { WWindow *wwin, *curwin, *tmpwin; int count = WMGetArrayItemCount(panel->windows); int orig = panel->current; int i; Bool dim = False; if (count == 0) return NULL; if (!wPreferences.cycle_ignore_minimized) ignore_minimized = False; if (ignore_minimized && canReceiveFocus(WMGetFromArray(panel->windows, (count + panel->current) % count)) < 0) ignore_minimized = False; curwin = WMGetFromArray(panel->windows, orig); do { do { if (back) panel->current--; else panel->current++; panel->current = (count + panel->current) % count; wwin = WMGetFromArray(panel->windows, panel->current); if (!class_only) break; if (panel->current == orig) break; } while (!sameWindowClass(wwin, curwin)); } while (ignore_minimized && panel->current != orig && canReceiveFocus(wwin) < 0); WM_ITERATE_ARRAY(panel->windows, tmpwin, i) { if (i == panel->current) continue; if (!class_only || sameWindowClass(tmpwin, curwin)) changeImage(panel, i, 0, False, False); else { if (i == orig) dim = True; changeImage(panel, i, 0, True, False); } } if (panel->current < panel->firstVisible) scrollIcons(panel, panel->current - panel->firstVisible); else if (panel->current - panel->firstVisible >= panel->visibleCount) scrollIcons(panel, panel->current - panel->firstVisible - panel->visibleCount + 1); if (panel->win) { drawTitle(panel, panel->current, wwin->frame->title); if (panel->current != orig) changeImage(panel, orig, 0, dim, False); changeImage(panel, panel->current, 1, False, False); } return wwin; } WWindow *wSwitchPanelSelectFirst(WSwitchPanel *panel, int back) { WWindow *wwin; int count = WMGetArrayItemCount(panel->windows); char *title; int i; if (count == 0) return NULL; if (back) { panel->current = count - 1; scrollIcons(panel, count); } else { panel->current = 0; scrollIcons(panel, -count); } wwin = WMGetFromArray(panel->windows, panel->current); title = wwin->frame->title; if (panel->win) { for (WMArrayFirst(panel->windows, &(i)); (i) != WANotFound; WMArrayNext(panel->windows, &(i))) changeImage(panel, i, i == panel->current, False, False); drawTitle(panel, panel->current, title); } return wwin; } WWindow *wSwitchPanelHandleEvent(WSwitchPanel *panel, XEvent *event) { WMFrame *icon; int i; int focus = -1; if (!panel->win) return NULL; if (event->type == MotionNotify) { WM_ITERATE_ARRAY(panel->icons, icon, i) { if (WMWidgetXID(icon) == event->xmotion.window) { focus = i; break; } } } if (focus >= 0 && panel->current != focus) { WWindow *wwin; WM_ITERATE_ARRAY(panel->windows, wwin, i) { changeImage(panel, i, i == focus, False, False); } panel->current = focus; wwin = WMGetFromArray(panel->windows, focus); drawTitle(panel, panel->current, wwin->frame->title); return wwin; } return NULL; } Window wSwitchPanelGetWindow(WSwitchPanel *swpanel) { if (!swpanel->win) return None; return WMWidgetXID(swpanel->win); } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/stacking.c�������������������������������������������������������������������0000644�0001750�0001750�00000037516�13431646202�013541� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2003 Alfredo K. Kojima * Copyright (c) 1998-2003 Dan Pascu * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "wconfig.h" #include <stdio.h> #include <stdlib.h> #include <string.h> #include <X11/Xlib.h> #include <X11/Xutil.h> #include "WindowMaker.h" #include "screen.h" #include "window.h" #include "actions.h" #include "properties.h" #include "stacking.h" #include "workspace.h" static void notifyStackChange(WCoreWindow * frame, char *detail) { WWindow *wwin = wWindowFor(frame->window); WMPostNotificationName(WMNChangedStacking, wwin, detail); } /* *---------------------------------------------------------------------- * RemakeStackList-- * Remakes the stacking_list for the screen, getting the real * stacking order from the server and reordering windows that are not * in the correct stacking. * * Side effects: * The stacking order list and the actual window stacking * may be changed (corrected) * *---------------------------------------------------------------------- */ void RemakeStackList(WScreen * scr) { Window *windows; unsigned int nwindows; Window junkr, junkp; WCoreWindow *frame; WCoreWindow *tmp; int level; int i, c; if (!XQueryTree(dpy, scr->root_win, &junkr, &junkp, &windows, &nwindows)) { wwarning(_("could not get window list!!")); return; } else { WMEmptyBag(scr->stacking_list); /* verify list integrity */ c = 0; for (i = 0; i < nwindows; i++) { if (XFindContext(dpy, windows[i], w_global.context.stack, (XPointer *) & frame) == XCNOENT) { continue; } if (!frame) continue; c++; level = frame->stacking->window_level; tmp = WMGetFromBag(scr->stacking_list, level); if (tmp) tmp->stacking->above = frame; frame->stacking->under = tmp; frame->stacking->above = NULL; WMSetInBag(scr->stacking_list, level, frame); } XFree(windows); scr->window_count = c; } CommitStacking(scr); } /* *---------------------------------------------------------------------- * CommitStacking-- * Reorders the actual window stacking, so that it has the stacking * order in the internal window stacking lists. It does the opposite * of RemakeStackList(). * * Side effects: * Windows may be restacked. *---------------------------------------------------------------------- */ void CommitStacking(WScreen * scr) { WCoreWindow *tmp; int nwindows, i; Window *windows; WMBagIterator iter; nwindows = scr->window_count; windows = wmalloc(sizeof(Window) * nwindows); i = 0; WM_ETARETI_BAG(scr->stacking_list, tmp, iter) { while (tmp) { windows[i++] = tmp->window; tmp = tmp->stacking->under; } } XRestackWindows(dpy, windows, i); wfree(windows); WMPostNotificationName(WMNResetStacking, scr, NULL); } /* *---------------------------------------------------------------------- * moveFrameToUnder-- * Reestacks windows so that "frame" is under "under". * * Returns: * None * * Side effects: * Changes the stacking order of frame. *---------------------------------------------------------------------- */ static void moveFrameToUnder(WCoreWindow * under, WCoreWindow * frame) { Window wins[2]; wins[0] = under->window; wins[1] = frame->window; XRestackWindows(dpy, wins, 2); } /* *---------------------------------------------------------------------- * CommitStackingForWindow-- * Reorders the stacking for the specified window, so that it has the * stacking order in the internal window stacking lists. * * Side effects: * Windows may be restacked. *---------------------------------------------------------------------- */ void CommitStackingForWindow(WCoreWindow * frame) { int level = frame->stacking->window_level; WScreen *scr = frame->screen_ptr; if (frame->stacking->above == NULL) { WMBagIterator iter; WCoreWindow *above = WMBagLast(scr->stacking_list, &iter); int i, last = above->stacking->window_level; /* find the 1st level above us which has windows in it */ for (i = level + 1, above = NULL; i <= last; i++) { above = WMGetFromBag(scr->stacking_list, i); if (above != NULL) break; } if (above != frame && above != NULL) { while (above->stacking->under) above = above->stacking->under; moveFrameToUnder(above, frame); } else { /* no window above us */ XRaiseWindow(dpy, frame->window); } } else { moveFrameToUnder(frame->stacking->above, frame); } } /* *---------------------------------------------------------------------- * wRaiseFrame-- * Raises a frame taking the window level into account. * * Returns: * None * * Side effects: * Window stacking order and stacking list are changed. * *---------------------------------------------------------------------- */ void wRaiseFrame(WCoreWindow * frame) { WCoreWindow *wlist = frame; int level = frame->stacking->window_level; WScreen *scr = frame->screen_ptr; /* already on top */ if (frame->stacking->above == NULL) { return; } /* insert it on top of other windows on the same level */ if (frame->stacking->under) frame->stacking->under->stacking->above = frame->stacking->above; if (frame->stacking->above) frame->stacking->above->stacking->under = frame->stacking->under; frame->stacking->above = NULL; frame->stacking->under = WMGetFromBag(scr->stacking_list, level); if (frame->stacking->under) { frame->stacking->under->stacking->above = frame; } WMSetInBag(scr->stacking_list, level, frame); /* raise transients under us from bottom to top * so that the order is kept */ again: wlist = frame->stacking->under; while (wlist && wlist->stacking->under) wlist = wlist->stacking->under; while (wlist && wlist != frame) { if (wlist->stacking->child_of == frame) { wRaiseFrame(wlist); goto again; } wlist = wlist->stacking->above; } /* try to optimize things a little */ if (frame->stacking->above == NULL) { WMBagIterator iter; WCoreWindow *above = WMBagLast(scr->stacking_list, &iter); int i, last = above->stacking->window_level; /* find the 1st level above us which has windows in it */ for (i = level + 1, above = NULL; i <= last; i++) { above = WMGetFromBag(scr->stacking_list, i); if (above != NULL) break; } if (above != frame && above != NULL) { while (above->stacking->under) above = above->stacking->under; moveFrameToUnder(above, frame); } else { /* no window above us */ above = NULL; XRaiseWindow(dpy, frame->window); } } else { moveFrameToUnder(frame->stacking->above, frame); } notifyStackChange(frame, "raise"); } void wRaiseLowerFrame(WCoreWindow * frame) { if (!frame->stacking->above || (frame->stacking->window_level != frame->stacking->above->stacking->window_level)) { wLowerFrame(frame); } else { WCoreWindow *scan = frame->stacking->above; WWindow *frame_wwin = (WWindow *) frame->descriptor.parent; while (scan) { if (scan->descriptor.parent_type == WCLASS_WINDOW) { WWindow *scan_wwin = (WWindow *) scan->descriptor.parent; if (wWindowObscuresWindow(scan_wwin, frame_wwin) && scan_wwin->flags.mapped) { break; } } scan = scan->stacking->above; } if (scan) { wRaiseFrame(frame); } else { wLowerFrame(frame); } } } void wLowerFrame(WCoreWindow * frame) { WScreen *scr = frame->screen_ptr; WCoreWindow *wlist = frame; int level = frame->stacking->window_level; /* already in bottom */ if (wlist->stacking->under == NULL) { return; } /* can't lower transient below below its owner */ if (wlist->stacking->under == wlist->stacking->child_of) { return; } /* remove from the list */ if (WMGetFromBag(scr->stacking_list, level) == frame) { /* it was the top window */ WMSetInBag(scr->stacking_list, level, frame->stacking->under); frame->stacking->under->stacking->above = NULL; } else { if (frame->stacking->under) frame->stacking->under->stacking->above = frame->stacking->above; if (frame->stacking->above) frame->stacking->above->stacking->under = frame->stacking->under; } wlist = WMGetFromBag(scr->stacking_list, level); /* look for place to put this window */ if (wlist) { WCoreWindow *owner = frame->stacking->child_of; if (owner != wlist) { while (wlist->stacking->under) { /* if this is a transient, it should not be placed under * it's owner */ if (owner == wlist->stacking->under) break; wlist = wlist->stacking->under; } } } /* insert under the place found */ frame->stacking->above = wlist; if (wlist) { frame->stacking->under = wlist->stacking->under; if (wlist->stacking->under) wlist->stacking->under->stacking->above = frame; wlist->stacking->under = frame; } else { frame->stacking->under = NULL; } if (frame->stacking->above == NULL) { WMBagIterator iter; WCoreWindow *above = WMBagLast(scr->stacking_list, &iter); int i, last = above->stacking->window_level; /* find the 1st level above us which has windows in it */ for (i = level + 1, above = NULL; i <= last; i++) { above = WMGetFromBag(scr->stacking_list, i); if (above != NULL) break; } if (above != frame && above != NULL) { while (above->stacking->under) above = above->stacking->under; moveFrameToUnder(above, frame); } else { /* no window below us */ XLowerWindow(dpy, frame->window); } } else { moveFrameToUnder(frame->stacking->above, frame); } notifyStackChange(frame, "lower"); } /* *---------------------------------------------------------------------- * AddToStackList-- * Inserts the frame in the top of the stacking list. The * stacking precedence is obeyed. * * Returns: * None * * Side effects: * The frame is added to it's screen's window list. *---------------------------------------------------------------------- */ void AddToStackList(WCoreWindow * frame) { WCoreWindow *curtop, *wlist; int index = frame->stacking->window_level; WScreen *scr = frame->screen_ptr; WCoreWindow *trans = NULL; frame->screen_ptr->window_count++; XSaveContext(dpy, frame->window, w_global.context.stack, (XPointer) frame); curtop = WMGetFromBag(scr->stacking_list, index); /* first window in this level */ if (curtop == NULL) { WMSetInBag(scr->stacking_list, index, frame); frame->stacking->above = NULL; frame->stacking->under = NULL; CommitStacking(scr); return; } /* check if this is a transient owner */ wlist = curtop; while (wlist) { if (wlist->stacking->child_of == frame) trans = wlist; wlist = wlist->stacking->under; } /* trans will hold the transient in the lowest position * in stacking list */ frame->stacking->above = trans; if (trans != NULL) { /* window is owner of a transient.. put it below * the lowest transient */ frame->stacking->under = trans->stacking->under; if (trans->stacking->under) { trans->stacking->under->stacking->above = frame; } trans->stacking->under = frame; } else { /* window is not owner of transients.. just put it in the * top of other windows */ frame->stacking->under = curtop; curtop->stacking->above = frame; WMSetInBag(scr->stacking_list, index, frame); } CommitStacking(scr); } /* *---------------------------------------------------------------------- * MoveInStackListAbove-- * Moves the frame above "next". * * Returns: * None * * Side effects: * Stacking order may be changed. * Window level for frame may be changed. *---------------------------------------------------------------------- */ void MoveInStackListAbove(WCoreWindow * next, WCoreWindow * frame) { WCoreWindow *tmpw; WScreen *scr = frame->screen_ptr; int index; if (!next || frame->stacking->under == next) return; if (frame->stacking->window_level != next->stacking->window_level) ChangeStackingLevel(frame, next->stacking->window_level); index = frame->stacking->window_level; tmpw = WMGetFromBag(scr->stacking_list, index); if (tmpw == frame) WMSetInBag(scr->stacking_list, index, frame->stacking->under); if (frame->stacking->under) frame->stacking->under->stacking->above = frame->stacking->above; if (frame->stacking->above) frame->stacking->above->stacking->under = frame->stacking->under; if (next->stacking->above) next->stacking->above->stacking->under = frame; frame->stacking->under = next; frame->stacking->above = next->stacking->above; next->stacking->above = frame; if (tmpw == next) WMSetInBag(scr->stacking_list, index, frame); /* try to optimize things a little */ if (frame->stacking->above == NULL) { WCoreWindow *above = NULL; WMBagIterator iter; for (above = WMBagIteratorAtIndex(scr->stacking_list, index + 1, &iter); above != NULL; above = WMBagNext(scr->stacking_list, &iter)) { /* can't optimize */ while (above->stacking->under) above = above->stacking->under; break; } if (above == NULL) { XRaiseWindow(dpy, frame->window); } else { moveFrameToUnder(above, frame); } } else { moveFrameToUnder(frame->stacking->above, frame); } WMPostNotificationName(WMNResetStacking, scr, NULL); } /* *---------------------------------------------------------------------- * MoveInStackListUnder-- * Moves the frame to under "prev". * * Returns: * None * * Side effects: * Stacking order may be changed. * Window level for frame may be changed. *---------------------------------------------------------------------- */ void MoveInStackListUnder(WCoreWindow * prev, WCoreWindow * frame) { WCoreWindow *tmpw; int index; WScreen *scr = frame->screen_ptr; if (!prev || frame->stacking->above == prev) return; if (frame->stacking->window_level != prev->stacking->window_level) ChangeStackingLevel(frame, prev->stacking->window_level); index = frame->stacking->window_level; tmpw = WMGetFromBag(scr->stacking_list, index); if (tmpw == frame) WMSetInBag(scr->stacking_list, index, frame->stacking->under); if (frame->stacking->under) frame->stacking->under->stacking->above = frame->stacking->above; if (frame->stacking->above) frame->stacking->above->stacking->under = frame->stacking->under; if (prev->stacking->under) prev->stacking->under->stacking->above = frame; frame->stacking->above = prev; frame->stacking->under = prev->stacking->under; prev->stacking->under = frame; moveFrameToUnder(prev, frame); WMPostNotificationName(WMNResetStacking, scr, NULL); } void RemoveFromStackList(WCoreWindow * frame) { int index = frame->stacking->window_level; if (XDeleteContext(dpy, frame->window, w_global.context.stack) == XCNOENT) { wwarning("RemoveFromStackingList(): window not in list "); return; } /* remove from the window stack list */ if (frame->stacking->under) frame->stacking->under->stacking->above = frame->stacking->above; if (frame->stacking->above) frame->stacking->above->stacking->under = frame->stacking->under; else /* this was the first window on the list */ WMSetInBag(frame->screen_ptr->stacking_list, index, frame->stacking->under); frame->screen_ptr->window_count--; WMPostNotificationName(WMNResetStacking, frame->screen_ptr, NULL); } void ChangeStackingLevel(WCoreWindow * frame, int new_level) { int old_level; if (frame->stacking->window_level == new_level) return; old_level = frame->stacking->window_level; RemoveFromStackList(frame); frame->stacking->window_level = new_level; AddToStackList(frame); if (old_level > new_level) { wRaiseFrame(frame); } else { wLowerFrame(frame); } } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/superfluous.c����������������������������������������������������������������0000644�0001750�0001750�00000022112�13431646202�014314� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2003 Alfredo K. Kojima * Copyright (c) 1998-2003 Dan Pascu * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "wconfig.h" #include <X11/Xlib.h> #include <X11/Xutil.h> #include <stdlib.h> #include <unistd.h> #include <math.h> #include <time.h> #include <wraster.h> #include "WindowMaker.h" #include "screen.h" #include "superfluous.h" #include "framewin.h" #include "window.h" #include "actions.h" #include "xinerama.h" #include "stacking.h" #define PIECES ((64/ICON_KABOOM_PIECE_SIZE)*(64/ICON_KABOOM_PIECE_SIZE)) #define KAB_PRECISION 4 #define BOUNCE_HZ 25 #define BOUNCE_DELAY (1000/BOUNCE_HZ) #define BOUNCE_HEIGHT 24 #define BOUNCE_LENGTH 0.3 #define BOUNCE_DAMP 0.6 #define URGENT_BOUNCE_DELAY 3000 void DoKaboom(WScreen * scr, Window win, int x, int y) { #ifdef NORMAL_ICON_KABOOM int i, j, k; int sw = scr->scr_width, sh = scr->scr_height; int px[PIECES]; short py[PIECES]; char pvx[PIECES], pvy[PIECES]; /* in MkLinux/PPC gcc seems to think that char is unsigned? */ signed char ax[PIECES], ay[PIECES]; Pixmap tmp; XSetClipMask(dpy, scr->copy_gc, None); tmp = XCreatePixmap(dpy, scr->root_win, wPreferences.icon_size, wPreferences.icon_size, scr->depth); if (scr->w_visual == DefaultVisual(dpy, scr->screen)) XCopyArea(dpy, win, tmp, scr->copy_gc, 0, 0, wPreferences.icon_size, wPreferences.icon_size, 0, 0); else { XImage *image; image = XGetImage(dpy, win, 0, 0, wPreferences.icon_size, wPreferences.icon_size, AllPlanes, ZPixmap); if (!image) { XUnmapWindow(dpy, win); return; } XPutImage(dpy, tmp, scr->copy_gc, image, 0, 0, 0, 0, wPreferences.icon_size, wPreferences.icon_size); XDestroyImage(image); } for (i = 0, k = 0; i < wPreferences.icon_size / ICON_KABOOM_PIECE_SIZE && k < PIECES; i++) { for (j = 0; j < wPreferences.icon_size / ICON_KABOOM_PIECE_SIZE && k < PIECES; j++) { if (rand() % 2) { ax[k] = i; ay[k] = j; px[k] = (x + i * ICON_KABOOM_PIECE_SIZE) << KAB_PRECISION; py[k] = y + j * ICON_KABOOM_PIECE_SIZE; pvx[k] = rand() % (1 << (KAB_PRECISION + 3)) - (1 << (KAB_PRECISION + 3)) / 2; pvy[k] = -15 - rand() % 7; k++; } else { ax[k] = -1; } } } XUnmapWindow(dpy, win); j = k; while (k > 0) { XEvent foo; if (XCheckTypedEvent(dpy, ButtonPress, &foo)) { XPutBackEvent(dpy, &foo); XClearWindow(dpy, scr->root_win); break; } for (i = 0; i < j; i++) { if (ax[i] >= 0) { int _px = px[i] >> KAB_PRECISION; XClearArea(dpy, scr->root_win, _px, py[i], ICON_KABOOM_PIECE_SIZE, ICON_KABOOM_PIECE_SIZE, False); px[i] += pvx[i]; py[i] += pvy[i]; _px = px[i] >> KAB_PRECISION; pvy[i]++; if (_px < -wPreferences.icon_size || _px > sw || py[i] >= sh) { ax[i] = -1; k--; } else { XCopyArea(dpy, tmp, scr->root_win, scr->copy_gc, ax[i] * ICON_KABOOM_PIECE_SIZE, ay[i] * ICON_KABOOM_PIECE_SIZE, ICON_KABOOM_PIECE_SIZE, ICON_KABOOM_PIECE_SIZE, _px, py[i]); } } } XFlush(dpy); wusleep(MINIATURIZE_ANIMATION_DELAY_Z * 2); } XFreePixmap(dpy, tmp); #endif /* NORMAL_ICON_KABOOM */ } Pixmap MakeGhostIcon(WScreen * scr, Drawable drawable) { RImage *back; RColor color; Pixmap pixmap; if (!drawable) return None; back = RCreateImageFromDrawable(scr->rcontext, drawable, None); if (!back) return None; color.red = 0xff; color.green = 0xff; color.blue = 0xff; color.alpha = 200; RClearImage(back, &color); RConvertImage(scr->rcontext, back, &pixmap); RReleaseImage(back); return pixmap; } void DoWindowBirth(WWindow *wwin) { #ifdef WINDOW_BIRTH_ZOOM int center_x, center_y; int width = wwin->frame->core->width; int height = wwin->frame->core->height; int w = WMIN(width, 20); int h = WMIN(height, 20); WScreen *scr = wwin->screen_ptr; center_x = wwin->frame_x + (width - w) / 2; center_y = wwin->frame_y + (height - h) / 2; animateResize(scr, center_x, center_y, 1, 1, wwin->frame_x, wwin->frame_y, width, height); #else /* Parameter not used, but tell the compiler that it is ok */ (void) wwin; #endif } typedef struct AppBouncerData { WApplication *wapp; int count; int pow; int dir; WMHandlerID *timer; } AppBouncerData; static void doAppBounce(void *arg) { AppBouncerData *data = (AppBouncerData*)arg; WAppIcon *aicon = data->wapp->app_icon; if (!aicon) return; reinit: if (data->wapp->refcount > 1) { if (wPreferences.raise_appicons_when_bouncing) XRaiseWindow(dpy, aicon->icon->core->window); const double ticks = BOUNCE_HZ * BOUNCE_LENGTH; const double s = sqrt(BOUNCE_HEIGHT)/(ticks/2); double h = BOUNCE_HEIGHT*pow(BOUNCE_DAMP, data->pow); double sqrt_h = sqrt(h); if (h > 3) { double offset, x = s * data->count - sqrt_h; if (x > sqrt_h) { ++data->pow; data->count = 0; goto reinit; } else ++data->count; offset = h - x*x; switch (data->dir) { case 0: /* left, bounce to right */ XMoveWindow(dpy, aicon->icon->core->window, aicon->x_pos + (int)offset, aicon->y_pos); break; case 1: /* right, bounce to left */ XMoveWindow(dpy, aicon->icon->core->window, aicon->x_pos - (int)offset, aicon->y_pos); break; case 2: /* top, bounce down */ XMoveWindow(dpy, aicon->icon->core->window, aicon->x_pos, aicon->y_pos + (int)offset); break; case 3: /* bottom, bounce up */ XMoveWindow(dpy, aicon->icon->core->window, aicon->x_pos, aicon->y_pos - (int)offset); break; } return; } } XMoveWindow(dpy, aicon->icon->core->window, aicon->x_pos, aicon->y_pos); CommitStackingForWindow(aicon->icon->core); data->wapp->flags.bouncing = 0; WMDeleteTimerHandler(data->timer); wApplicationDestroy(data->wapp); free(data); } static int bounceDirection(WAppIcon *aicon) { enum { left_e = 1, right_e = 2, top_e = 4, bottom_e = 8 }; WScreen *scr = aicon->icon->core->screen_ptr; WMRect rr, sr; int l, r, t, b, h, v; int dir = 0; rr.pos.x = aicon->x_pos; rr.pos.y = aicon->y_pos; rr.size.width = rr.size.height = 64; sr = wGetRectForHead(scr, wGetHeadForRect(scr, rr)); l = rr.pos.x - sr.pos.x; r = sr.pos.x + sr.size.width - rr.pos.x - rr.size.width; t = rr.pos.y - sr.pos.y; b = sr.pos.y + sr.size.height - rr.pos.y - rr.size.height; if (l < r) { dir |= left_e; h = l; } else { dir |= right_e; h = r; } if (t < b) { dir |= top_e; v = t; } else { dir |= bottom_e; v = b; } if (aicon->dock && abs(aicon->xindex) != abs(aicon->yindex)) { if (abs(aicon->xindex) < abs(aicon->yindex)) dir &= ~(top_e | bottom_e); else dir &= ~(left_e | right_e); } else { if (h < v) dir &= ~(top_e | bottom_e); else dir &= ~(left_e | right_e); } switch (dir) { case left_e: dir = 0; break; case right_e: dir = 1; break; case top_e: dir = 2; break; case bottom_e: dir = 3; break; default: wwarning(_("Impossible direction: %d"), dir); dir = 3; break; } return dir; } void wAppBounce(WApplication *wapp) { if (!wPreferences.no_animations && wapp->app_icon && !wapp->flags.bouncing && !wPreferences.do_not_make_appicons_bounce) { ++wapp->refcount; wapp->flags.bouncing = 1; AppBouncerData *data = (AppBouncerData *)malloc(sizeof(AppBouncerData)); data->wapp = wapp; data->count = data->pow = 0; data->dir = bounceDirection(wapp->app_icon); data->timer = WMAddPersistentTimerHandler(BOUNCE_DELAY, doAppBounce, data); } } static int appIsUrgent(WApplication *wapp) { WScreen *scr; WWindow *wlist; if (!wapp->main_window_desc) { wwarning("group leader not found for window group"); return 0; } scr = wapp->main_window_desc->screen_ptr; wlist = scr->focused_window; if (!wlist) return 0; while (wlist) { if (wlist->main_window == wapp->main_window) { if (wlist->flags.urgent) return 1; } wlist = wlist->prev; } return 0; } static void doAppUrgentBounce(void *arg) { WApplication *wapp = (WApplication *)arg; if (appIsUrgent(wapp)) { if(wPreferences.bounce_appicons_when_urgent) wAppBounce(wapp); } else { WMDeleteTimerHandler(wapp->urgent_bounce_timer); wapp->urgent_bounce_timer = NULL; } } void wAppBounceWhileUrgent(WApplication *wapp) { if (!wapp) return; if (appIsUrgent(wapp)) { if (!wapp->urgent_bounce_timer) { wapp->urgent_bounce_timer = WMAddPersistentTimerHandler(URGENT_BOUNCE_DELAY, doAppUrgentBounce, wapp); doAppUrgentBounce(wapp); } } else { if (wapp->urgent_bounce_timer) { WMDeleteTimerHandler(wapp->urgent_bounce_timer); wapp->urgent_bounce_timer = NULL; } } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/actions.c��������������������������������������������������������������������0000644�0001750�0001750�00000175171�13642357774�013417� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* action.c- misc. window commands (miniaturize, hide etc.) * * Window Maker window manager * * Copyright (c) 1997-2003 Alfredo K. Kojima * Copyright (c) 1998-2003 Dan Pascu * Copyright (c) 2014 Window Maker Team * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "wconfig.h" #include <X11/Xlib.h> #include <X11/Xutil.h> #include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <math.h> #include <time.h> #include "WindowMaker.h" #include "framewin.h" #include "window.h" #include "client.h" #include "icon.h" #include "colormap.h" #include "application.h" #include "actions.h" #include "stacking.h" #include "appicon.h" #include "dock.h" #include "appmenu.h" #include "winspector.h" #include "workspace.h" #include "xinerama.h" #include "usermenu.h" #include "placement.h" #include "misc.h" #include "event.h" #ifndef HAVE_FLOAT_MATHFUNC #define sinf(x) ((float)sin((double)(x))) #define cosf(x) ((float)cos((double)(x))) #define sqrtf(x) ((float)sqrt((double)(x))) #define atan2f(y, x) ((float)atan((double)(y) / (double)(x))) #endif static void find_Maximus_geometry(WWindow *wwin, WArea usableArea, int *new_x, int *new_y, unsigned int *new_width, unsigned int *new_height); static void save_old_geometry(WWindow *wwin, int directions); /******* Local Variables *******/ #ifdef USE_ANIMATIONS static struct { int steps; int delay; } shadePars[5] = { { SHADE_STEPS_UF, SHADE_DELAY_UF }, { SHADE_STEPS_F, SHADE_DELAY_F }, { SHADE_STEPS_M, SHADE_DELAY_M }, { SHADE_STEPS_S, SHADE_DELAY_S }, { SHADE_STEPS_US, SHADE_DELAY_US } }; #define SHADE_STEPS shadePars[(int)wPreferences.shade_speed].steps #define SHADE_DELAY shadePars[(int)wPreferences.shade_speed].delay #endif #define UNSHADE 0 #define SHADE 1 static int compareTimes(Time t1, Time t2) { Time diff; if (t1 == t2) return 0; diff = t1 - t2; return (diff < 60000) ? 1 : -1; } #ifdef USE_ANIMATIONS static void shade_animate(WWindow *wwin, Bool what); #else static inline void shade_animate(WWindow *wwin, Bool what) { /* * This function is empty on purpose, so tell the compiler * to not warn about parameters being not used */ (void) wwin; (void) what; } #endif /* *---------------------------------------------------------------------- * wSetFocusTo-- * Changes the window focus to the one passed as argument. * If the window to focus is not already focused, it will be brought * to the head of the list of windows. Previously focused window is * unfocused. * * Side effects: * Window list may be reordered and the window focus is changed. * *---------------------------------------------------------------------- */ void wSetFocusTo(WScreen *scr, WWindow *wwin) { static WScreen *old_scr = NULL; WWindow *old_focused; WWindow *focused = scr->focused_window; Time timestamp = w_global.timestamp.last_event; WApplication *oapp = NULL, *napp = NULL; int wasfocused; if (scr->flags.ignore_focus_events || compareTimes(w_global.timestamp.focus_change, timestamp) > 0) return; if (!old_scr) old_scr = scr; old_focused = old_scr->focused_window; w_global.timestamp.focus_change = timestamp; if (old_focused) oapp = wApplicationOf(old_focused->main_window); if (wwin == NULL) { XSetInputFocus(dpy, scr->no_focus_win, RevertToParent, CurrentTime); if (old_focused) wWindowUnfocus(old_focused); if (oapp) { wAppMenuUnmap(oapp->menu); if (wPreferences.highlight_active_app) wApplicationDeactivate(oapp); } WMPostNotificationName(WMNChangedFocus, NULL, (void *)True); return; } if (old_scr != scr && old_focused) wWindowUnfocus(old_focused); wasfocused = wwin->flags.focused; napp = wApplicationOf(wwin->main_window); /* remember last workspace where the app has been */ if (napp) napp->last_workspace = wwin->frame->workspace; if (wwin->flags.mapped && !WFLAGP(wwin, no_focusable)) { /* install colormap if colormap mode is lock mode */ if (wPreferences.colormap_mode == WCM_CLICK) wColormapInstallForWindow(scr, wwin); /* set input focus */ switch (wwin->focus_mode) { case WFM_NO_INPUT: XSetInputFocus(dpy, scr->no_focus_win, RevertToParent, CurrentTime); break; case WFM_PASSIVE: case WFM_LOCALLY_ACTIVE: XSetInputFocus(dpy, wwin->client_win, RevertToParent, CurrentTime); break; case WFM_GLOBALLY_ACTIVE: break; } XFlush(dpy); if (wwin->protocols.TAKE_FOCUS) wClientSendProtocol(wwin, w_global.atom.wm.take_focus, timestamp); XSync(dpy, False); } else { XSetInputFocus(dpy, scr->no_focus_win, RevertToParent, CurrentTime); } if (WFLAGP(wwin, no_focusable)) return; /* if this is not the focused window focus it */ if (focused != wwin) { /* change the focus window list order */ if (wwin->prev) wwin->prev->next = wwin->next; if (wwin->next) wwin->next->prev = wwin->prev; wwin->prev = focused; focused->next = wwin; wwin->next = NULL; scr->focused_window = wwin; if (oapp && oapp != napp) { wAppMenuUnmap(oapp->menu); if (wPreferences.highlight_active_app) wApplicationDeactivate(oapp); } /* reset fullscreen if temporarily removed due to lost focus*/ if (wwin->flags.fullscreen) ChangeStackingLevel(wwin->frame->core, WMFullscreenLevel); } wWindowFocus(wwin, focused); if (napp && !wasfocused) { #ifdef USER_MENU wUserMenuRefreshInstances(napp->menu, wwin); #endif /* USER_MENU */ /* kix: Only menu map with mouse, not alt+tab! */ if (wwin->flags.mapped) wAppMenuMap(napp->menu, wwin); } if (napp && wPreferences.highlight_active_app) wApplicationActivate(napp); XFlush(dpy); old_scr = scr; } void wShadeWindow(WWindow *wwin) { if (wwin->flags.shaded) return; XLowerWindow(dpy, wwin->client_win); shade_animate(wwin, SHADE); wwin->flags.skip_next_animation = 0; wwin->flags.shaded = 1; wwin->flags.mapped = 0; /* prevent window withdrawal when getting UnmapNotify */ XSelectInput(dpy, wwin->client_win, wwin->event_mask & ~StructureNotifyMask); XUnmapWindow(dpy, wwin->client_win); XSelectInput(dpy, wwin->client_win, wwin->event_mask); /* for the client it's just like iconification */ wFrameWindowResize(wwin->frame, wwin->frame->core->width, wwin->frame->top_width - 1); wwin->client.y = wwin->frame_y - wwin->client.height + wwin->frame->top_width; wWindowSynthConfigureNotify(wwin); /* wClientSetState(wwin, IconicState, None); */ WMPostNotificationName(WMNChangedState, wwin, "shade"); #ifdef USE_ANIMATIONS if (!wwin->screen_ptr->flags.startup) { /* Catch up with events not processed while animation was running */ ProcessPendingEvents(); } #endif } void wUnshadeWindow(WWindow *wwin) { if (!wwin->flags.shaded) return; wwin->flags.shaded = 0; wwin->flags.mapped = 1; XMapWindow(dpy, wwin->client_win); shade_animate(wwin, UNSHADE); wwin->flags.skip_next_animation = 0; wFrameWindowResize(wwin->frame, wwin->frame->core->width, wwin->frame->top_width + wwin->client.height + wwin->frame->bottom_width); wwin->client.y = wwin->frame_y + wwin->frame->top_width; wWindowSynthConfigureNotify(wwin); /* if the window is focused, set the focus again as it was disabled during * shading */ if (wwin->flags.focused) wSetFocusTo(wwin->screen_ptr, wwin); WMPostNotificationName(WMNChangedState, wwin, "shade"); } /* Set the old coordinates using the current values */ static void save_old_geometry(WWindow *wwin, int directions) { /* never been saved? */ if (!wwin->old_geometry.width) directions |= SAVE_GEOMETRY_X | SAVE_GEOMETRY_WIDTH; if (!wwin->old_geometry.height) directions |= SAVE_GEOMETRY_Y | SAVE_GEOMETRY_HEIGHT; if (directions & SAVE_GEOMETRY_X) wwin->old_geometry.x = wwin->frame_x; if (directions & SAVE_GEOMETRY_Y) wwin->old_geometry.y = wwin->frame_y; if (directions & SAVE_GEOMETRY_WIDTH) wwin->old_geometry.width = wwin->client.width; if (directions & SAVE_GEOMETRY_HEIGHT) wwin->old_geometry.height = wwin->client.height; } static void remember_geometry(WWindow *wwin, int *x, int *y, int *w, int *h) { WMRect old_geom_rect; int old_head; Bool same_head; old_geom_rect = wmkrect(wwin->old_geometry.x, wwin->old_geometry.y, wwin->old_geometry.width, wwin->old_geometry.height); old_head = wGetHeadForRect(wwin->screen_ptr, old_geom_rect); same_head = (wGetHeadForWindow(wwin) == old_head); *x = ((wwin->old_geometry.x || wwin->old_geometry.width) && same_head) ? wwin->old_geometry.x : wwin->frame_x; *y = ((wwin->old_geometry.y || wwin->old_geometry.height) && same_head) ? wwin->old_geometry.y : wwin->frame_y; *w = wwin->old_geometry.width ? wwin->old_geometry.width : wwin->client.width; *h = wwin->old_geometry.height ? wwin->old_geometry.height : wwin->client.height; } /* Remember geometry for unmaximizing */ void update_saved_geometry(WWindow *wwin) { /* NOT if we aren't already maximized * we'll save geometry when maximizing */ if (!wwin->flags.maximized) return; /* NOT if we are fully maximized */ if ((wwin->flags.maximized & MAX_MAXIMUS) || ((wwin->flags.maximized & MAX_HORIZONTAL) && (wwin->flags.maximized & MAX_VERTICAL))) return; /* save the co-ordinate in the axis in which we AREN'T maximized */ if (wwin->flags.maximized & MAX_HORIZONTAL) save_old_geometry(wwin, SAVE_GEOMETRY_Y); if (wwin->flags.maximized & MAX_VERTICAL) save_old_geometry(wwin, SAVE_GEOMETRY_X); } void wMaximizeWindow(WWindow *wwin, int directions, int head) { unsigned int new_width, new_height, half_scr_width, half_scr_height; int new_x = 0; int new_y = 0; int maximus_x = 0; int maximus_y = 0; unsigned int maximus_width = 0; unsigned int maximus_height = 0; WArea usableArea, totalArea; Bool has_border = 1; int adj_size; WScreen *scr = wwin->screen_ptr; if (!IS_RESIZABLE(wwin)) return; if (!HAS_BORDER(wwin)) has_border = 0; if (wPreferences.drag_maximized_window == DRAGMAX_NOMOVE) wwin->client_flags.no_movable = 1; /* the size to adjust the geometry */ adj_size = scr->frame_border_width * 2 * has_border; /* save old coordinates before we change the current values */ if (!wwin->flags.maximized) save_old_geometry(wwin, SAVE_GEOMETRY_ALL); totalArea.x2 = scr->scr_width; totalArea.y2 = scr->scr_height; totalArea.x1 = 0; totalArea.y1 = 0; /* In case of mouse initiated maximize, use the head in which pointer is located, rather than window position, which is passed to the function */ if (!(directions & MAX_IGNORE_XINERAMA) && !(directions & MAX_KEYBOARD)) { WScreen *scr = wwin->screen_ptr; head = wGetHeadForPointerLocation(scr); } usableArea = wGetUsableAreaForHead(scr, head, &totalArea, True); /* Only save directions, not kbd or xinerama hints */ directions &= (MAX_HORIZONTAL | MAX_VERTICAL | MAX_LEFTHALF | MAX_RIGHTHALF | MAX_TOPHALF | MAX_BOTTOMHALF | MAX_MAXIMUS); if (WFLAGP(wwin, full_maximize)) usableArea = totalArea; half_scr_width = (usableArea.x2 - usableArea.x1)/2; half_scr_height = (usableArea.y2 - usableArea.y1)/2; if (wwin->flags.shaded) { wwin->flags.skip_next_animation = 1; wUnshadeWindow(wwin); } if (directions & MAX_MAXIMUS) { find_Maximus_geometry(wwin, usableArea, &maximus_x, &maximus_y, &maximus_width, &maximus_height); new_width = maximus_width - adj_size; new_height = maximus_height - adj_size; new_x = maximus_x; new_y = maximus_y; if (WFLAGP(wwin, full_maximize) && (new_y == 0)) { new_height += wwin->frame->bottom_width - 1; new_y -= wwin->frame->top_width; } wwin->maximus_x = new_x; wwin->maximus_y = new_y; wwin->flags.old_maximized |= MAX_MAXIMUS; } else { /* set default values if no option set then */ if (!(directions & (MAX_HORIZONTAL | MAX_LEFTHALF | MAX_RIGHTHALF | MAX_MAXIMUS))) { new_width = (wwin->old_geometry.width) ? wwin->old_geometry.width : wwin->frame->core->width; new_x = (wwin->old_geometry.x) ? wwin->old_geometry.x : wwin->frame_x; } if (!(directions & (MAX_VERTICAL | MAX_TOPHALF | MAX_BOTTOMHALF | MAX_MAXIMUS))) { new_height = (wwin->old_geometry.height) ? wwin->old_geometry.height : wwin->frame->core->height; new_y = (wwin->old_geometry.y) ? wwin->old_geometry.y : wwin->frame_y; } /* left|right position */ if (directions & MAX_LEFTHALF) { new_width = half_scr_width - adj_size; new_x = usableArea.x1; } else if (directions & MAX_RIGHTHALF) { new_width = half_scr_width - adj_size; new_x = usableArea.x1 + half_scr_width; } /* top|bottom position */ if (directions & MAX_TOPHALF) { new_height = half_scr_height - adj_size; new_y = usableArea.y1; } else if (directions & MAX_BOTTOMHALF) { new_height = half_scr_height - adj_size; new_y = usableArea.y1 + half_scr_height; } /* vertical|horizontal position */ if (directions & MAX_HORIZONTAL) { new_width = usableArea.x2 - usableArea.x1 - adj_size; new_x = usableArea.x1; } if (directions & MAX_VERTICAL) { new_height = usableArea.y2 - usableArea.y1 - adj_size; new_y = usableArea.y1; if (WFLAGP(wwin, full_maximize) && (new_y == 0)) new_y -= wwin->frame->top_width; } } if (!WFLAGP(wwin, full_maximize) && !(directions == MAX_MAXIMUS || directions == MAX_HORIZONTAL)) new_height -= wwin->frame->top_width + wwin->frame->bottom_width; /* set maximization state */ wwin->flags.maximized = directions; if ((wwin->flags.old_maximized & MAX_MAXIMUS) && !wwin->flags.maximized) wwin->flags.maximized = MAX_MAXIMUS; wWindowConstrainSize(wwin, &new_width, &new_height); wWindowCropSize(wwin, usableArea.x2 - usableArea.x1, usableArea.y2 - usableArea.y1, &new_width, &new_height); wWindowConfigure(wwin, new_x, new_y, new_width, new_height); wWindowSynthConfigureNotify(wwin); WMPostNotificationName(WMNChangedState, wwin, "maximize"); } /* generic (un)maximizer */ void handleMaximize(WWindow *wwin, int directions) { int current = wwin->flags.maximized; int requested = directions & (MAX_HORIZONTAL | MAX_VERTICAL | MAX_LEFTHALF | MAX_RIGHTHALF | MAX_TOPHALF | MAX_BOTTOMHALF | MAX_MAXIMUS); int effective = requested ^ current; int flags = directions & ~requested; int head = wGetHeadForWindow(wwin); int dest_head = -1; if (!effective) { /* allow wMaximizeWindow to restore the Maximusized size */ if ((wwin->flags.old_maximized & MAX_MAXIMUS) && !(requested & MAX_MAXIMUS)) wMaximizeWindow(wwin, MAX_MAXIMUS | flags, head); else if (wPreferences.alt_half_maximize && current & MAX_HORIZONTAL && current & MAX_VERTICAL && requested & MAX_HORIZONTAL && requested & MAX_VERTICAL) wUnmaximizeWindow(wwin); /* Apply for window state, which is only horizontally or vertically * maximized. Quarters cannot be handled here, since there is not clear * on which direction user intend to move such window. */ else if (wPreferences.move_half_max_between_heads && current & (MAX_VERTICAL | MAX_HORIZONTAL)) { if (requested & MAX_LEFTHALF && current & MAX_LEFTHALF) { dest_head = wGetHeadRelativeToCurrentHead(wwin->screen_ptr, head, DIRECTION_LEFT); if (dest_head != -1) { effective |= MAX_RIGHTHALF; effective |= MAX_VERTICAL; effective &= ~(MAX_HORIZONTAL | MAX_LEFTHALF); } } else if (requested & MAX_RIGHTHALF && current & MAX_RIGHTHALF) { dest_head = wGetHeadRelativeToCurrentHead(wwin->screen_ptr, head, DIRECTION_RIGHT); if (dest_head != -1) { effective |= MAX_LEFTHALF; effective |= MAX_VERTICAL; effective &= ~(MAX_HORIZONTAL | MAX_RIGHTHALF); } } else if (requested & MAX_TOPHALF && current & MAX_TOPHALF) { dest_head = wGetHeadRelativeToCurrentHead(wwin->screen_ptr, head, DIRECTION_UP); if (dest_head != -1) { effective |= MAX_BOTTOMHALF; effective |= MAX_HORIZONTAL; effective &= ~(MAX_VERTICAL | MAX_TOPHALF); } } else if (requested & MAX_BOTTOMHALF && current & MAX_BOTTOMHALF) { dest_head = wGetHeadRelativeToCurrentHead(wwin->screen_ptr, head, DIRECTION_DOWN); if (dest_head != -1) { effective |= MAX_TOPHALF; effective |= MAX_HORIZONTAL; effective &= ~(MAX_VERTICAL | MAX_BOTTOMHALF); } } } if (dest_head != -1) /* tell wMaximizeWindow that we were using keyboard, not mouse, * so that it will use calculated head as destination for * move_half_max_between_heads feature, not from mouse pointer */ wMaximizeWindow(wwin, (effective | flags | MAX_KEYBOARD), dest_head); else if (!wPreferences.alt_half_maximize) wUnmaximizeWindow(wwin); return; } /* these alone mean vertical|horizontal toggle */ if ((effective == MAX_LEFTHALF) || (effective == MAX_RIGHTHALF) || (effective == MAX_TOPHALF) || (effective == MAX_BOTTOMHALF)) wUnmaximizeWindow(wwin); /* Following conditions might look complicated, but they are really simple: * allow fullscreen transition only for half maximized state (and not * corners) and only when requested state is also half maximized, but on * opposite side of the screen. As for corners, it is similar, but * expected is that only quarter maximized windows on corner can change * it's state to half maximized window, depending on direction. Note, that * MAX_KEYBOARD is passed to the wMaximizeWindow function, to preserve the * head, even if mouse was used for triggering the action. */ /* Quarters alternative transition. */ else if (wPreferences.alt_half_maximize && ((requested & MAX_LEFTHALF && requested & MAX_TOPHALF && current & MAX_RIGHTHALF && current & MAX_TOPHALF) || (requested & MAX_RIGHTHALF && requested & MAX_TOPHALF && current & MAX_LEFTHALF && current & MAX_TOPHALF))) wMaximizeWindow(wwin, (MAX_TOPHALF | MAX_HORIZONTAL | MAX_KEYBOARD), head); else if (wPreferences.alt_half_maximize && ((requested & MAX_LEFTHALF && requested & MAX_BOTTOMHALF && current & MAX_RIGHTHALF && current & MAX_BOTTOMHALF) || (requested & MAX_RIGHTHALF && requested & MAX_BOTTOMHALF && current & MAX_LEFTHALF && current & MAX_BOTTOMHALF))) wMaximizeWindow(wwin, (MAX_BOTTOMHALF | MAX_HORIZONTAL | MAX_KEYBOARD), head); else if (wPreferences.alt_half_maximize && ((requested & MAX_LEFTHALF && requested & MAX_BOTTOMHALF && current & MAX_LEFTHALF && current & MAX_TOPHALF) || (requested & MAX_LEFTHALF && requested & MAX_TOPHALF && current & MAX_LEFTHALF && current & MAX_BOTTOMHALF))) wMaximizeWindow(wwin, (MAX_LEFTHALF | MAX_VERTICAL| MAX_KEYBOARD), head); else if (wPreferences.alt_half_maximize && ((requested & MAX_RIGHTHALF && requested & MAX_BOTTOMHALF && current & MAX_RIGHTHALF && current & MAX_TOPHALF) || (requested & MAX_RIGHTHALF && requested & MAX_TOPHALF && current & MAX_RIGHTHALF && current & MAX_BOTTOMHALF))) wMaximizeWindow(wwin, (MAX_RIGHTHALF | MAX_VERTICAL| MAX_KEYBOARD), head); /* Half-maximized alternative transition */ else if (wPreferences.alt_half_maximize && ( (requested & MAX_LEFTHALF && requested & MAX_VERTICAL && current & MAX_RIGHTHALF && current & MAX_VERTICAL) || (requested & MAX_RIGHTHALF && requested & MAX_VERTICAL && current & MAX_LEFTHALF && current & MAX_VERTICAL) || (requested & MAX_TOPHALF && requested & MAX_HORIZONTAL && current & MAX_BOTTOMHALF && current & MAX_HORIZONTAL) || (requested & MAX_BOTTOMHALF && requested & MAX_HORIZONTAL && current & MAX_TOPHALF && current & MAX_HORIZONTAL))) wMaximizeWindow(wwin, (MAX_HORIZONTAL|MAX_VERTICAL|MAX_KEYBOARD), head); else { if ((requested == (MAX_HORIZONTAL | MAX_VERTICAL)) || (requested == MAX_MAXIMUS)) effective = requested; else { if (requested & MAX_LEFTHALF) { if (!(requested & (MAX_TOPHALF | MAX_BOTTOMHALF))) effective |= MAX_VERTICAL; else effective |= requested & (MAX_TOPHALF | MAX_BOTTOMHALF); effective |= MAX_LEFTHALF; effective &= ~(MAX_HORIZONTAL | MAX_RIGHTHALF); } else if (requested & MAX_RIGHTHALF) { if (!(requested & (MAX_TOPHALF | MAX_BOTTOMHALF))) effective |= MAX_VERTICAL; else effective |= requested & (MAX_TOPHALF | MAX_BOTTOMHALF); effective |= MAX_RIGHTHALF; effective &= ~(MAX_HORIZONTAL | MAX_LEFTHALF); } if (requested & MAX_TOPHALF) { if (!(requested & (MAX_LEFTHALF | MAX_RIGHTHALF))) effective |= MAX_HORIZONTAL; else effective |= requested & (MAX_LEFTHALF | MAX_RIGHTHALF); effective |= MAX_TOPHALF; effective &= ~(MAX_VERTICAL | MAX_BOTTOMHALF); } else if (requested & MAX_BOTTOMHALF) { if (!(requested & (MAX_LEFTHALF | MAX_RIGHTHALF))) effective |= MAX_HORIZONTAL; else effective |= requested & (MAX_LEFTHALF | MAX_RIGHTHALF); effective |= MAX_BOTTOMHALF; effective &= ~(MAX_VERTICAL | MAX_TOPHALF); } if (requested & MAX_HORIZONTAL) effective &= ~(MAX_LEFTHALF | MAX_RIGHTHALF); if (requested & MAX_VERTICAL) effective &= ~(MAX_TOPHALF | MAX_BOTTOMHALF); effective &= ~MAX_MAXIMUS; } wMaximizeWindow(wwin, effective | flags, head); } } /* Moving window between heads * * Window is moved between all avaiable heads for current screen in * requested direction. * * If heads have different sizes, window position will be adjusted to be inside * screen. Window will be unmaximized on move, so that it can be immediately be * maximixed by another shortcut. * * * direction = 0 means move clock-wise from 12h position to 6h * (first try moving right, then bottom, then left, then up) * direction = 1 means move clock-wise from 6h position to 12h * (first try moving left, then up, then right, then bottom) * * * As side effect this mean if you have 9 monitors - you will not be able to * move window into central cell without mouse. * * For common cases with 1 or 2 extra monitors this should work just fine. * * */ void moveBetweenHeads(WWindow *wwin, int direction) { int head = wGetHeadForWindow(wwin); int destHead = -1; unsigned int new_width, new_height; int offsetX, newX = 0; int offsetY, newY = 0; WArea totalArea, oldHeadArea, destHeadArea; WScreen *scr = wwin->screen_ptr; int try_movements[2][4] = { {DIRECTION_RIGHT, DIRECTION_DOWN, DIRECTION_LEFT, DIRECTION_UP}, {DIRECTION_LEFT, DIRECTION_UP, DIRECTION_RIGHT, DIRECTION_DOWN} }; /* loop through directions array and try movements until one works */ for (int try_movement_idx = 0; destHead == -1 && try_movement_idx < 4; try_movement_idx++) { destHead = wGetHeadRelativeToCurrentHead(wwin->screen_ptr, head, try_movements[direction][try_movement_idx]); } if (destHead != -1) { totalArea.x1 = 0; totalArea.y1 = 0; totalArea.x2 = scr->scr_width; totalArea.y2 = scr->scr_height; oldHeadArea = wGetUsableAreaForHead(scr, head, &totalArea, True); destHeadArea = wGetUsableAreaForHead(scr, destHead, &totalArea, True); offsetX = wwin->frame_x - oldHeadArea.x1; offsetY = wwin->frame_y - oldHeadArea.y1; newX = destHeadArea.x1 + offsetX; newY = destHeadArea.y1 + offsetY; new_width = wwin->client.width; new_height = wwin->client.height; /* try to brind window inside head coordinates */ if (newX > destHeadArea.x2) newX = destHeadArea.x2 - wwin->client.width; if (newX < destHeadArea.x1) newX = destHeadArea.x1; if (newY > destHeadArea.y2) newY = destHeadArea.y2 - wwin->client.height; if (newY < destHeadArea.y1) newY = destHeadArea.y1; /* unset maximization state */ wwin->flags.maximized = 0; wWindowConfigure(wwin, newX, newY, new_width, new_height); } return; } /* the window boundary coordinates */ typedef struct { int left; int right; int bottom; int top; int width; int height; } win_coords; static void set_window_coords(WWindow *wwin, win_coords *obs) { obs->left = wwin->frame_x; obs->top = wwin->frame_y; obs->width = wwin->frame->core->width; obs->height = wwin->frame->core->height; obs->bottom = obs->top + obs->height; obs->right = obs->left + obs->width; } /* * Maximus: tiled maximization (maximize without overlapping other windows) * * The original window 'orig' will be maximized to new coordinates 'new'. * The windows obstructing the maximization of 'orig' are denoted 'obs'. */ static void find_Maximus_geometry(WWindow *wwin, WArea usableArea, int *new_x, int *new_y, unsigned int *new_width, unsigned int *new_height) { WWindow *tmp; short int tbar_height_0 = 0, rbar_height_0 = 0, bd_width_0 = 0; short int adjust_height; int x_intsect, y_intsect; /* the obstructing, original and new windows */ win_coords obs, orig, new; /* set the original coordinate positions of the window to be Maximumized */ if (wwin->flags.maximized) { /* window is already maximized; consider original geometry */ remember_geometry(wwin, &orig.left, &orig.top, &orig.width, &orig.height); orig.bottom = orig.top + orig.height; orig.right = orig.left + orig.width; } else set_window_coords(wwin, &orig); /* Try to fully maximize first, then readjust later */ new.left = usableArea.x1; new.right = usableArea.x2; new.top = usableArea.y1; new.bottom = usableArea.y2; if (HAS_TITLEBAR(wwin)) tbar_height_0 = TITLEBAR_HEIGHT; if (HAS_RESIZEBAR(wwin)) rbar_height_0 = RESIZEBAR_HEIGHT; if (HAS_BORDER(wwin)) bd_width_0 = wwin->screen_ptr->frame_border_width; /* the length to be subtracted if the window has titlebar, etc */ adjust_height = tbar_height_0 + 2 * bd_width_0 + rbar_height_0; tmp = wwin; /* The focused window is always the last in the list */ while (tmp->prev) { /* ignore windows in other workspaces etc */ if (tmp->prev->frame->workspace != wwin->screen_ptr->current_workspace || tmp->prev->flags.miniaturized || tmp->prev->flags.hidden) { tmp = tmp->prev; continue; } tmp = tmp->prev; /* Set the coordinates of obstructing window */ set_window_coords(tmp, &obs); /* Try to maximize in the y direction first */ x_intsect = calcIntersectionLength(orig.left, orig.width, obs.left, obs.width); if (x_intsect != 0) { /* TODO: Consider the case when coords are equal */ if (obs.bottom < orig.top && obs.bottom > new.top) { /* w_0 is below the bottom of w_j */ new.top = obs.bottom + 1; } if (orig.bottom < obs.top && obs.top < new.bottom) { /* The bottom of w_0 is above the top of w_j */ new.bottom = obs.top - 1; } } } tmp = wwin; while (tmp->prev) { if (tmp->prev->frame->workspace != wwin->screen_ptr->current_workspace || tmp->prev->flags.miniaturized || tmp->prev->flags.hidden) { tmp = tmp->prev; continue; } tmp = tmp->prev; set_window_coords(tmp, &obs); /* * Use the new.top and new.height instead of original values * as they may have different intersections with the obstructing windows */ new.height = new.bottom - new.top - adjust_height; y_intsect = calcIntersectionLength(new.top, new.height, obs.top, obs.height); if (y_intsect != 0) { if (obs.right < orig.left && obs.right > new.left) { /* w_0 is completely to the right of w_j */ new.left = obs.right + 1; } if (orig.right < obs.left && obs.left < new.right) { /* w_0 is completely to the left of w_j */ new.right = obs.left - 1; } } } *new_x = new.left; *new_y = new.top; /* xcalc needs -7 here, but other apps don't */ *new_height = new.bottom - new.top - adjust_height - 1; *new_width = new.right - new.left; } void wUnmaximizeWindow(WWindow *wwin) { int x, y, w, h; if (!wwin->flags.maximized) return; if (wwin->flags.shaded) { wwin->flags.skip_next_animation = 1; wUnshadeWindow(wwin); } if (wPreferences.drag_maximized_window == DRAGMAX_NOMOVE) wwin->client_flags.no_movable = 0; /* Use old coordinates if they are set, current values otherwise */ remember_geometry(wwin, &x, &y, &w, &h); /* unMaximusize relative to original position */ if (wwin->flags.maximized & MAX_MAXIMUS) { x += wwin->frame_x - wwin->maximus_x; y += wwin->frame_y - wwin->maximus_y; } wwin->flags.maximized = 0; wwin->flags.old_maximized = 0; wWindowConfigure(wwin, x, y, w, h); wWindowSynthConfigureNotify(wwin); WMPostNotificationName(WMNChangedState, wwin, "maximize"); } void wFullscreenWindow(WWindow *wwin) { int head; WMRect rect; if (wwin->flags.fullscreen) return; wwin->flags.fullscreen = True; wWindowConfigureBorders(wwin); ChangeStackingLevel(wwin->frame->core, WMFullscreenLevel); wwin->bfs_geometry.x = wwin->frame_x; wwin->bfs_geometry.y = wwin->frame_y; wwin->bfs_geometry.width = wwin->frame->core->width; wwin->bfs_geometry.height = wwin->frame->core->height; head = wGetHeadForWindow(wwin); rect = wGetRectForHead(wwin->screen_ptr, head); wWindowConfigure(wwin, rect.pos.x, rect.pos.y, rect.size.width, rect.size.height); wwin->screen_ptr->bfs_focused_window = wwin->screen_ptr->focused_window; wSetFocusTo(wwin->screen_ptr, wwin); WMPostNotificationName(WMNChangedState, wwin, "fullscreen"); } void wUnfullscreenWindow(WWindow *wwin) { if (!wwin->flags.fullscreen) return; wwin->flags.fullscreen = False; if (wwin->frame->core->stacking->window_level == WMFullscreenLevel) { if (WFLAGP(wwin, sunken)) { ChangeStackingLevel(wwin->frame->core, WMSunkenLevel); } else if (WFLAGP(wwin, floating)) { ChangeStackingLevel(wwin->frame->core, WMFloatingLevel); } else { ChangeStackingLevel(wwin->frame->core, WMNormalLevel); } } wWindowConfigure(wwin, wwin->bfs_geometry.x, wwin->bfs_geometry.y, wwin->bfs_geometry.width, wwin->bfs_geometry.height); wWindowConfigureBorders(wwin); /* // seems unnecessary, but also harmless (doesn't generate flicker) -Dan wFrameWindowPaint(wwin->frame); */ WMPostNotificationName(WMNChangedState, wwin, "fullscreen"); if (wwin->screen_ptr->bfs_focused_window) { wSetFocusTo(wwin->screen_ptr, wwin->screen_ptr->bfs_focused_window); wwin->screen_ptr->bfs_focused_window = NULL; } } #ifdef USE_ANIMATIONS static void animateResizeFlip(WScreen *scr, int x, int y, int w, int h, int fx, int fy, int fw, int fh, int steps) { #define FRAMES (MINIATURIZE_ANIMATION_FRAMES_F) float cx, cy, cw, ch; float xstep, ystep, wstep, hstep; XPoint points[5]; float dx, dch, midy; float angle, final_angle, delta; xstep = (float)(fx - x) / steps; ystep = (float)(fy - y) / steps; wstep = (float)(fw - w) / steps; hstep = (float)(fh - h) / steps; cx = (float)x; cy = (float)y; cw = (float)w; ch = (float)h; final_angle = 2 * WM_PI * MINIATURIZE_ANIMATION_TWIST_F; delta = (float)(final_angle / FRAMES); for (angle = 0;; angle += delta) { if (angle > final_angle) angle = final_angle; dx = (cw / 10) - ((cw / 5) * sinf(angle)); dch = (ch / 2) * cosf(angle); midy = cy + (ch / 2); points[0].x = cx + dx; points[0].y = midy - dch; points[1].x = cx + cw - dx; points[1].y = points[0].y; points[2].x = cx + cw + dx; points[2].y = midy + dch; points[3].x = cx - dx; points[3].y = points[2].y; points[4].x = points[0].x; points[4].y = points[0].y; XGrabServer(dpy); XDrawLines(dpy, scr->root_win, scr->frame_gc, points, 5, CoordModeOrigin); XFlush(dpy); wusleep(MINIATURIZE_ANIMATION_DELAY_F); XDrawLines(dpy, scr->root_win, scr->frame_gc, points, 5, CoordModeOrigin); XUngrabServer(dpy); cx += xstep; cy += ystep; cw += wstep; ch += hstep; if (angle >= final_angle) break; } XFlush(dpy); } #undef FRAMES static void animateResizeTwist(WScreen *scr, int x, int y, int w, int h, int fx, int fy, int fw, int fh, int steps) { #define FRAMES (MINIATURIZE_ANIMATION_FRAMES_T) float cx, cy, cw, ch; float xstep, ystep, wstep, hstep; XPoint points[5]; float angle, final_angle, a, d, delta; x += w / 2; y += h / 2; fx += fw / 2; fy += fh / 2; xstep = (float)(fx - x) / steps; ystep = (float)(fy - y) / steps; wstep = (float)(fw - w) / steps; hstep = (float)(fh - h) / steps; cx = (float)x; cy = (float)y; cw = (float)w; ch = (float)h; final_angle = 2 * WM_PI * MINIATURIZE_ANIMATION_TWIST_T; delta = (float)(final_angle / FRAMES); for (angle = 0;; angle += delta) { if (angle > final_angle) angle = final_angle; a = atan2f(ch, cw); d = sqrtf((cw / 2) * (cw / 2) + (ch / 2) * (ch / 2)); points[0].x = cx + cosf(angle - a) * d; points[0].y = cy + sinf(angle - a) * d; points[1].x = cx + cosf(angle + a) * d; points[1].y = cy + sinf(angle + a) * d; points[2].x = cx + cosf(angle - a + (float)WM_PI) * d; points[2].y = cy + sinf(angle - a + (float)WM_PI) * d; points[3].x = cx + cosf(angle + a + (float)WM_PI) * d; points[3].y = cy + sinf(angle + a + (float)WM_PI) * d; points[4].x = cx + cosf(angle - a) * d; points[4].y = cy + sinf(angle - a) * d; XGrabServer(dpy); XDrawLines(dpy, scr->root_win, scr->frame_gc, points, 5, CoordModeOrigin); XFlush(dpy); wusleep(MINIATURIZE_ANIMATION_DELAY_T); XDrawLines(dpy, scr->root_win, scr->frame_gc, points, 5, CoordModeOrigin); XUngrabServer(dpy); cx += xstep; cy += ystep; cw += wstep; ch += hstep; if (angle >= final_angle) break; } XFlush(dpy); } #undef FRAMES static void animateResizeZoom(WScreen *scr, int x, int y, int w, int h, int fx, int fy, int fw, int fh, int steps) { #define FRAMES (MINIATURIZE_ANIMATION_FRAMES_Z) float cx[FRAMES], cy[FRAMES], cw[FRAMES], ch[FRAMES]; float xstep, ystep, wstep, hstep; int i, j; xstep = (float)(fx - x) / steps; ystep = (float)(fy - y) / steps; wstep = (float)(fw - w) / steps; hstep = (float)(fh - h) / steps; for (j = 0; j < FRAMES; j++) { cx[j] = (float)x; cy[j] = (float)y; cw[j] = (float)w; ch[j] = (float)h; } XGrabServer(dpy); for (i = 0; i < steps; i++) { for (j = 0; j < FRAMES; j++) { XDrawRectangle(dpy, scr->root_win, scr->frame_gc, (int)cx[j], (int)cy[j], (int)cw[j], (int)ch[j]); } XFlush(dpy); wusleep(MINIATURIZE_ANIMATION_DELAY_Z); for (j = 0; j < FRAMES; j++) { XDrawRectangle(dpy, scr->root_win, scr->frame_gc, (int)cx[j], (int)cy[j], (int)cw[j], (int)ch[j]); if (j < FRAMES - 1) { cx[j] = cx[j + 1]; cy[j] = cy[j + 1]; cw[j] = cw[j + 1]; ch[j] = ch[j + 1]; } else { cx[j] += xstep; cy[j] += ystep; cw[j] += wstep; ch[j] += hstep; } } } for (j = 0; j < FRAMES; j++) XDrawRectangle(dpy, scr->root_win, scr->frame_gc, (int)cx[j], (int)cy[j], (int)cw[j], (int)ch[j]); XFlush(dpy); wusleep(MINIATURIZE_ANIMATION_DELAY_Z); for (j = 0; j < FRAMES; j++) XDrawRectangle(dpy, scr->root_win, scr->frame_gc, (int)cx[j], (int)cy[j], (int)cw[j], (int)ch[j]); XUngrabServer(dpy); } #undef FRAMES void animateResize(WScreen *scr, int x, int y, int w, int h, int fx, int fy, int fw, int fh) { int style = wPreferences.iconification_style; /* Catch the value */ int steps; if (style == WIS_NONE) return; if (style == WIS_RANDOM) style = rand() % 3; switch (style) { case WIS_TWIST: steps = MINIATURIZE_ANIMATION_STEPS_T; if (steps > 0) animateResizeTwist(scr, x, y, w, h, fx, fy, fw, fh, steps); break; case WIS_FLIP: steps = MINIATURIZE_ANIMATION_STEPS_F; if (steps > 0) animateResizeFlip(scr, x, y, w, h, fx, fy, fw, fh, steps); break; case WIS_ZOOM: default: steps = MINIATURIZE_ANIMATION_STEPS_Z; if (steps > 0) animateResizeZoom(scr, x, y, w, h, fx, fy, fw, fh, steps); break; } } #endif /* USE_ANIMATIONS */ static void flushExpose(void) { XEvent tmpev; while (XCheckTypedEvent(dpy, Expose, &tmpev)) WMHandleEvent(&tmpev); XSync(dpy, 0); } static void unmapTransientsFor(WWindow *wwin) { WWindow *tmp; tmp = wwin->screen_ptr->focused_window; while (tmp) { /* unmap the transients for this transient */ if (tmp != wwin && tmp->transient_for == wwin->client_win && (tmp->flags.mapped || wwin->screen_ptr->flags.startup || tmp->flags.shaded)) { unmapTransientsFor(tmp); tmp->flags.miniaturized = 1; if (!tmp->flags.shaded) wWindowUnmap(tmp); else XUnmapWindow(dpy, tmp->frame->core->window); /* if (!tmp->flags.shaded) */ wClientSetState(tmp, IconicState, None); WMPostNotificationName(WMNChangedState, tmp, "iconify-transient"); } tmp = tmp->prev; } } static void mapTransientsFor(WWindow *wwin) { WWindow *tmp; tmp = wwin->screen_ptr->focused_window; while (tmp) { /* recursively map the transients for this transient */ if (tmp != wwin && tmp->transient_for == wwin->client_win && /*!tmp->flags.mapped */ tmp->flags.miniaturized && tmp->icon == NULL) { mapTransientsFor(tmp); tmp->flags.miniaturized = 0; if (!tmp->flags.shaded) wWindowMap(tmp); else XMapWindow(dpy, tmp->frame->core->window); tmp->flags.semi_focused = 0; /* if (!tmp->flags.shaded) */ wClientSetState(tmp, NormalState, None); WMPostNotificationName(WMNChangedState, tmp, "iconify-transient"); } tmp = tmp->prev; } } static WWindow *recursiveTransientFor(WWindow *wwin) { int i; if (!wwin) return None; /* hackish way to detect transient_for cycle */ i = wwin->screen_ptr->window_count + 1; while (wwin && wwin->transient_for != None && i > 0) { wwin = wWindowFor(wwin->transient_for); i--; } if (i == 0 && wwin) { wwarning(_("window \"%s\" has a severely broken WM_TRANSIENT_FOR hint"), wwin->frame->title); return NULL; } return wwin; } #ifdef USE_ANIMATIONS static int getAnimationGeometry(WWindow *wwin, int *ix, int *iy, int *iw, int *ih) { if (wwin->screen_ptr->flags.startup || wPreferences.no_animations || wwin->flags.skip_next_animation || wwin->icon == NULL) return 0; if (!wPreferences.disable_miniwindows && !wwin->flags.net_handle_icon) { *ix = wwin->icon_x; *iy = wwin->icon_y; *iw = wwin->icon->core->width; *ih = wwin->icon->core->height; } else { if (wwin->flags.net_handle_icon) { *ix = wwin->icon_x; *iy = wwin->icon_y; *iw = wwin->icon_w; *ih = wwin->icon_h; } else { *ix = 0; *iy = 0; *iw = wwin->screen_ptr->scr_width; *ih = wwin->screen_ptr->scr_height; } } return 1; } #endif /* USE_ANIMATIONS */ void wIconifyWindow(WWindow *wwin) { XWindowAttributes attribs; int present; if (!XGetWindowAttributes(dpy, wwin->client_win, &attribs)) return; /* the window doesn't exist anymore */ if (wwin->flags.miniaturized) return; /* already miniaturized */ if (wwin->transient_for != None && wwin->transient_for != wwin->screen_ptr->root_win) { WWindow *owner = wWindowFor(wwin->transient_for); if (owner && owner->flags.miniaturized) return; } present = wwin->frame->workspace == wwin->screen_ptr->current_workspace; /* if the window is in another workspace, simplify process */ if (present) { /* icon creation may take a while */ XGrabPointer(dpy, wwin->screen_ptr->root_win, False, ButtonMotionMask | ButtonReleaseMask, GrabModeAsync, GrabModeAsync, None, None, CurrentTime); } if (!wPreferences.disable_miniwindows && !wwin->flags.net_handle_icon) { if (!wwin->flags.icon_moved) PlaceIcon(wwin->screen_ptr, &wwin->icon_x, &wwin->icon_y, wGetHeadForWindow(wwin)); wwin->icon = icon_create_for_wwindow(wwin); wwin->icon->mapped = 1; /* extract the window screenshot every time, as the option can be enable anytime */ if (wwin->client_win && wwin->flags.mapped) { RImage *mini_preview; XImage *pimg; unsigned int w, h; int x, y; Window baz; XRaiseWindow(dpy, wwin->frame->core->window); XTranslateCoordinates(dpy, wwin->client_win, wwin->screen_ptr->root_win, 0, 0, &x, &y, &baz); w = attribs.width; h = attribs.height; if (x - attribs.x + attribs.width > wwin->screen_ptr->scr_width) w = wwin->screen_ptr->scr_width - x + attribs.x; if (y - attribs.y + attribs.height > wwin->screen_ptr->scr_height) h = wwin->screen_ptr->scr_height - y + attribs.y; pimg = XGetImage(dpy, wwin->client_win, 0, 0, w, h, AllPlanes, ZPixmap); if (pimg) { mini_preview = RCreateImageFromXImage(wwin->screen_ptr->rcontext, pimg, NULL); XDestroyImage(pimg); if (mini_preview) { set_icon_minipreview(wwin->icon, mini_preview); RReleaseImage(mini_preview); } else { const char *title; char title_buf[32]; if (wwin->frame->title) { title = wwin->frame->title; } else { snprintf(title_buf, sizeof(title_buf), "(id=0x%lx)", wwin->client_win); title = title_buf; } wwarning(_("creation of mini-preview failed for window \"%s\""), title); } } } } wwin->flags.miniaturized = 1; wwin->flags.mapped = 0; /* unmap transients */ unmapTransientsFor(wwin); if (present) { #ifdef USE_ANIMATIONS int ix, iy, iw, ih; #endif XUngrabPointer(dpy, CurrentTime); wWindowUnmap(wwin); /* let all Expose events arrive so that we can repaint * something before the animation starts (and the server is grabbed) */ XSync(dpy, 0); if (wPreferences.disable_miniwindows || wwin->flags.net_handle_icon) wClientSetState(wwin, IconicState, None); else wClientSetState(wwin, IconicState, wwin->icon->icon_win); flushExpose(); #ifdef USE_ANIMATIONS if (getAnimationGeometry(wwin, &ix, &iy, &iw, &ih)) animateResize(wwin->screen_ptr, wwin->frame_x, wwin->frame_y, wwin->frame->core->width, wwin->frame->core->height, ix, iy, iw, ih); #endif } wwin->flags.skip_next_animation = 0; if (!wPreferences.disable_miniwindows && !wwin->flags.net_handle_icon) { if (wwin->screen_ptr->current_workspace == wwin->frame->workspace || IS_OMNIPRESENT(wwin) || wPreferences.sticky_icons) XMapWindow(dpy, wwin->icon->core->window); AddToStackList(wwin->icon->core); wLowerFrame(wwin->icon->core); } if (present) { WWindow *owner = recursiveTransientFor(wwin->screen_ptr->focused_window); /* * It doesn't seem to be working and causes button event hangup * when deiconifying a transient window. setupIconGrabs(wwin->icon); */ if ((wwin->flags.focused || (owner && wwin->client_win == owner->client_win)) && wPreferences.focus_mode == WKF_CLICK) { WWindow *tmp; tmp = wwin->prev; while (tmp) { if (!WFLAGP(tmp, no_focusable) && !(tmp->flags.hidden || tmp->flags.miniaturized) && (wwin->frame->workspace == tmp->frame->workspace)) break; tmp = tmp->prev; } wSetFocusTo(wwin->screen_ptr, tmp); } else if (wPreferences.focus_mode != WKF_CLICK) { wSetFocusTo(wwin->screen_ptr, NULL); } #ifdef USE_ANIMATIONS if (!wwin->screen_ptr->flags.startup) { /* Catch up with events not processed while animation was running */ Window clientwin = wwin->client_win; ProcessPendingEvents(); /* the window can disappear while ProcessPendingEvents() runs */ if (!wWindowFor(clientwin)) return; } #endif } /* maybe we want to do this regardless of net_handle_icon * it seems to me we might break behaviour this way. */ if (wwin->flags.selected && !wPreferences.disable_miniwindows && !wwin->flags.net_handle_icon) wIconSelect(wwin->icon); WMPostNotificationName(WMNChangedState, wwin, "iconify"); if (wPreferences.auto_arrange_icons) wArrangeIcons(wwin->screen_ptr, True); } void wDeiconifyWindow(WWindow *wwin) { /* Let's avoid changing workspace while deiconifying */ w_global.ignore_workspace_change = True; /* we're hiding for show_desktop */ int netwm_hidden = wwin->flags.net_show_desktop && wwin->frame->workspace != wwin->screen_ptr->current_workspace; if (!netwm_hidden) wWindowChangeWorkspace(wwin, wwin->screen_ptr->current_workspace); if (!wwin->flags.miniaturized) { w_global.ignore_workspace_change = False; return; } if (wwin->transient_for != None && wwin->transient_for != wwin->screen_ptr->root_win) { WWindow *owner = recursiveTransientFor(wwin); if (owner && owner->flags.miniaturized) { wDeiconifyWindow(owner); wSetFocusTo(wwin->screen_ptr, wwin); wRaiseFrame(wwin->frame->core); w_global.ignore_workspace_change = False; return; } } wwin->flags.miniaturized = 0; if (!netwm_hidden && !wwin->flags.shaded) wwin->flags.mapped = 1; if (!netwm_hidden || wPreferences.sticky_icons) { /* maybe we want to do this regardless of net_handle_icon * it seems to me we might break behaviour this way. */ if (!wPreferences.disable_miniwindows && !wwin->flags.net_handle_icon && wwin->icon != NULL) { if (wwin->icon->selected) wIconSelect(wwin->icon); XUnmapWindow(dpy, wwin->icon->core->window); } } /* if the window is in another workspace, do it silently */ if (!netwm_hidden) { #ifdef USE_ANIMATIONS int ix, iy, iw, ih; if (getAnimationGeometry(wwin, &ix, &iy, &iw, &ih)) animateResize(wwin->screen_ptr, ix, iy, iw, ih, wwin->frame_x, wwin->frame_y, wwin->frame->core->width, wwin->frame->core->height); #endif wwin->flags.skip_next_animation = 0; XGrabServer(dpy); if (!wwin->flags.shaded) XMapWindow(dpy, wwin->client_win); XMapWindow(dpy, wwin->frame->core->window); wRaiseFrame(wwin->frame->core); if (!wwin->flags.shaded) wClientSetState(wwin, NormalState, None); mapTransientsFor(wwin); } if (!wPreferences.disable_miniwindows && wwin->icon != NULL && !wwin->flags.net_handle_icon) { RemoveFromStackList(wwin->icon->core); wSetFocusTo(wwin->screen_ptr, wwin); wIconDestroy(wwin->icon); wwin->icon = NULL; } if (!netwm_hidden) { XUngrabServer(dpy); wSetFocusTo(wwin->screen_ptr, wwin); #ifdef USE_ANIMATIONS if (!wwin->screen_ptr->flags.startup) { /* Catch up with events not processed while animation was running */ Window clientwin = wwin->client_win; ProcessPendingEvents(); /* the window can disappear while ProcessPendingEvents() runs */ if (!wWindowFor(clientwin)) { w_global.ignore_workspace_change = False; return; } } #endif } if (wPreferences.auto_arrange_icons) wArrangeIcons(wwin->screen_ptr, True); WMPostNotificationName(WMNChangedState, wwin, "iconify"); /* In case we were shaded and iconified, also unshade */ if (!netwm_hidden) wUnshadeWindow(wwin); w_global.ignore_workspace_change = False; } static void hideWindow(WIcon *icon, int icon_x, int icon_y, WWindow *wwin, int animate) { if (wwin->flags.miniaturized) { if (wwin->icon) { XUnmapWindow(dpy, wwin->icon->core->window); wwin->icon->mapped = 0; } wwin->flags.hidden = 1; WMPostNotificationName(WMNChangedState, wwin, "hide"); return; } if (wwin->flags.inspector_open) wHideInspectorForWindow(wwin); wwin->flags.hidden = 1; wWindowUnmap(wwin); wClientSetState(wwin, IconicState, icon->icon_win); flushExpose(); #ifdef USE_ANIMATIONS if (!wwin->screen_ptr->flags.startup && !wPreferences.no_animations && !wwin->flags.skip_next_animation && animate) { animateResize(wwin->screen_ptr, wwin->frame_x, wwin->frame_y, wwin->frame->core->width, wwin->frame->core->height, icon_x, icon_y, icon->core->width, icon->core->height); } #else /* Tell the compiler it is normal that those parameters are not used in this case */ (void) icon_x; (void) icon_y; (void) animate; #endif wwin->flags.skip_next_animation = 0; WMPostNotificationName(WMNChangedState, wwin, "hide"); } void wHideAll(WScreen *scr) { WWindow *wwin; WWindow **windows; WMenu *menu; unsigned int wcount = 0; int i; if (!scr) return; menu = scr->switch_menu; windows = wmalloc(sizeof(WWindow *)); if (menu != NULL) { for (i = 0; i < menu->entry_no; i++) { windows[wcount] = (WWindow *) menu->entries[i]->clientdata; wcount++; windows = wrealloc(windows, sizeof(WWindow *) * (wcount + 1)); } } else { wwin = scr->focused_window; while (wwin) { windows[wcount] = wwin; wcount++; windows = wrealloc(windows, sizeof(WWindow *) * (wcount + 1)); wwin = wwin->prev; } } for (i = 0; i < wcount; i++) { wwin = windows[i]; if (wwin->frame->workspace == scr->current_workspace && !(wwin->flags.miniaturized || wwin->flags.hidden) && !wwin->flags.internal_window && !WFLAGP(wwin, no_miniaturizable) ) { wwin->flags.skip_next_animation = 1; wIconifyWindow(wwin); } } wfree(windows); } void wHideOtherApplications(WWindow *awin) { WWindow *wwin; WApplication *tapp; if (!awin) return; wwin = awin->screen_ptr->focused_window; while (wwin) { if (wwin != awin && wwin->frame->workspace == awin->screen_ptr->current_workspace && !(wwin->flags.miniaturized || wwin->flags.hidden) && !wwin->flags.internal_window && wGetWindowOfInspectorForWindow(wwin) != awin && !WFLAGP(wwin, no_hide_others)) { if (wwin->main_window == None || WFLAGP(wwin, no_appicon)) { if (!WFLAGP(wwin, no_miniaturizable)) { wwin->flags.skip_next_animation = 1; wIconifyWindow(wwin); } } else if (wwin->main_window != None && awin->main_window != wwin->main_window) { tapp = wApplicationOf(wwin->main_window); if (tapp) { tapp->flags.skip_next_animation = 1; wHideApplication(tapp); } else { if (!WFLAGP(wwin, no_miniaturizable)) { wwin->flags.skip_next_animation = 1; wIconifyWindow(wwin); } } } } wwin = wwin->prev; } /* wSetFocusTo(awin->screen_ptr, awin); */ } void wHideApplication(WApplication *wapp) { WScreen *scr; WWindow *wlist; int hadfocus; int animate; if (!wapp) { wwarning("trying to hide a non grouped window"); return; } if (!wapp->main_window_desc) { wwarning("group leader not found for window group"); return; } scr = wapp->main_window_desc->screen_ptr; hadfocus = 0; wlist = scr->focused_window; if (!wlist) return; if (wlist->main_window == wapp->main_window) wapp->last_focused = wlist; else wapp->last_focused = NULL; animate = !wapp->flags.skip_next_animation; while (wlist) { if (wlist->main_window == wapp->main_window) { if (wlist->flags.focused) hadfocus = 1; if (wapp->app_icon) { hideWindow(wapp->app_icon->icon, wapp->app_icon->x_pos, wapp->app_icon->y_pos, wlist, animate); animate = False; } } wlist = wlist->prev; } wapp->flags.skip_next_animation = 0; if (hadfocus) { if (wPreferences.focus_mode == WKF_CLICK) { wlist = scr->focused_window; while (wlist) { if (!WFLAGP(wlist, no_focusable) && !wlist->flags.hidden && (wlist->flags.mapped || wlist->flags.shaded)) break; wlist = wlist->prev; } wSetFocusTo(scr, wlist); } else { wSetFocusTo(scr, NULL); } } wapp->flags.hidden = 1; if (wPreferences.auto_arrange_icons) wArrangeIcons(scr, True); #ifdef HIDDENDOT if (wapp->app_icon) wAppIconPaint(wapp->app_icon); #endif } static void unhideWindow(WIcon *icon, int icon_x, int icon_y, WWindow *wwin, int animate, int bringToCurrentWS) { if (bringToCurrentWS) wWindowChangeWorkspace(wwin, wwin->screen_ptr->current_workspace); wwin->flags.hidden = 0; #ifdef USE_ANIMATIONS if (!wwin->screen_ptr->flags.startup && !wPreferences.no_animations && animate) { animateResize(wwin->screen_ptr, icon_x, icon_y, icon->core->width, icon->core->height, wwin->frame_x, wwin->frame_y, wwin->frame->core->width, wwin->frame->core->height); } #else /* Tell the compiler it is normal that those parameters are not used in this case */ (void) icon; (void) icon_x; (void) icon_y; (void) animate; #endif wwin->flags.skip_next_animation = 0; if (wwin->screen_ptr->current_workspace == wwin->frame->workspace) { XMapWindow(dpy, wwin->client_win); XMapWindow(dpy, wwin->frame->core->window); wClientSetState(wwin, NormalState, None); wwin->flags.mapped = 1; wRaiseFrame(wwin->frame->core); } if (wwin->flags.inspector_open) wUnhideInspectorForWindow(wwin); WMPostNotificationName(WMNChangedState, wwin, "hide"); } void wUnhideApplication(WApplication *wapp, Bool miniwindows, Bool bringToCurrentWS) { WScreen *scr; WWindow *wlist, *next; WWindow *focused = NULL; int animate; if (!wapp) return; scr = wapp->main_window_desc->screen_ptr; wlist = scr->focused_window; if (!wlist) return; /* goto beginning of list */ while (wlist->prev) wlist = wlist->prev; animate = !wapp->flags.skip_next_animation; while (wlist) { next = wlist->next; if (wlist->main_window == wapp->main_window) { if (wlist->flags.focused) focused = wlist; else if (!focused || !focused->flags.focused) focused = wlist; if (wlist->flags.miniaturized) { if ((bringToCurrentWS || wPreferences.sticky_icons || wlist->frame->workspace == scr->current_workspace) && wlist->icon) { if (!wlist->icon->mapped) { int x, y; PlaceIcon(scr, &x, &y, wGetHeadForWindow(wlist)); if (wlist->icon_x != x || wlist->icon_y != y) XMoveWindow(dpy, wlist->icon->core->window, x, y); wlist->icon_x = x; wlist->icon_y = y; XMapWindow(dpy, wlist->icon->core->window); wlist->icon->mapped = 1; } wRaiseFrame(wlist->icon->core); } if (bringToCurrentWS) wWindowChangeWorkspace(wlist, scr->current_workspace); wlist->flags.hidden = 0; if (miniwindows && wlist->frame->workspace == scr->current_workspace) wDeiconifyWindow(wlist); WMPostNotificationName(WMNChangedState, wlist, "hide"); } else if (wlist->flags.shaded) { if (bringToCurrentWS) wWindowChangeWorkspace(wlist, scr->current_workspace); wlist->flags.hidden = 0; wRaiseFrame(wlist->frame->core); if (wlist->frame->workspace == scr->current_workspace) { XMapWindow(dpy, wlist->frame->core->window); if (miniwindows) wUnshadeWindow(wlist); } WMPostNotificationName(WMNChangedState, wlist, "hide"); } else if (wlist->flags.hidden) { unhideWindow(wapp->app_icon->icon, wapp->app_icon->x_pos, wapp->app_icon->y_pos, wlist, animate, bringToCurrentWS); animate = False; } else { if (bringToCurrentWS && wlist->frame->workspace != scr->current_workspace) wWindowChangeWorkspace(wlist, scr->current_workspace); wRaiseFrame(wlist->frame->core); } } wlist = next; } wapp->flags.skip_next_animation = 0; wapp->flags.hidden = 0; if (wapp->last_focused && wapp->last_focused->flags.mapped) { wRaiseFrame(wapp->last_focused->frame->core); wSetFocusTo(scr, wapp->last_focused); } else if (focused) { wSetFocusTo(scr, focused); } wapp->last_focused = NULL; if (wPreferences.auto_arrange_icons) wArrangeIcons(scr, True); #ifdef HIDDENDOT wAppIconPaint(wapp->app_icon); #endif } void wShowAllWindows(WScreen *scr) { WWindow *wwin, *old_foc; WApplication *wapp; old_foc = wwin = scr->focused_window; while (wwin) { if (!wwin->flags.internal_window && (scr->current_workspace == wwin->frame->workspace || IS_OMNIPRESENT(wwin))) { if (wwin->flags.miniaturized) { wwin->flags.skip_next_animation = 1; wDeiconifyWindow(wwin); } else if (wwin->flags.hidden) { wapp = wApplicationOf(wwin->main_window); if (wapp) { wUnhideApplication(wapp, False, False); } else { wwin->flags.skip_next_animation = 1; wDeiconifyWindow(wwin); } } } wwin = wwin->prev; } wSetFocusTo(scr, old_foc); /*wRaiseFrame(old_foc->frame->core); */ } void wRefreshDesktop(WScreen *scr) { Window win; XSetWindowAttributes attr; attr.backing_store = NotUseful; attr.save_under = False; win = XCreateWindow(dpy, scr->root_win, 0, 0, scr->scr_width, scr->scr_height, 0, CopyFromParent, CopyFromParent, (Visual *) CopyFromParent, CWBackingStore | CWSaveUnder, &attr); XMapRaised(dpy, win); XDestroyWindow(dpy, win); XFlush(dpy); } void wArrangeIcons(WScreen *scr, Bool arrangeAll) { WWindow *wwin; WAppIcon *aicon; int head; const int heads = wXineramaHeads(scr); struct HeadVars { int pf; /* primary axis */ int sf; /* secondary axis */ int fullW; int fullH; int pi, si; int sx1, sx2, sy1, sy2; /* screen boundary */ int sw, sh; int xo, yo; int xs, ys; } *vars; int isize = wPreferences.icon_size; vars = (struct HeadVars *)wmalloc(sizeof(struct HeadVars) * heads); for (head = 0; head < heads; ++head) { WArea area = wGetUsableAreaForHead(scr, head, NULL, False); WMRect rect; if (scr->dock) { int offset = wPreferences.icon_size + DOCK_EXTRA_SPACE; if (scr->dock->on_right_side) area.x2 -= offset; else area.x1 += offset; } rect = wmkrect(area.x1, area.y1, area.x2 - area.x1, area.y2 - area.y1); vars[head].pi = vars[head].si = 0; vars[head].sx1 = rect.pos.x; vars[head].sy1 = rect.pos.y; vars[head].sw = rect.size.width; vars[head].sh = rect.size.height; vars[head].sx2 = vars[head].sx1 + vars[head].sw; vars[head].sy2 = vars[head].sy1 + vars[head].sh; vars[head].sw = isize * (vars[head].sw / isize); vars[head].sh = isize * (vars[head].sh / isize); vars[head].fullW = (vars[head].sx2 - vars[head].sx1) / isize; vars[head].fullH = (vars[head].sy2 - vars[head].sy1) / isize; /* icon yard boundaries */ if (wPreferences.icon_yard & IY_VERT) { vars[head].pf = vars[head].fullH; vars[head].sf = vars[head].fullW; } else { vars[head].pf = vars[head].fullW; vars[head].sf = vars[head].fullH; } if (wPreferences.icon_yard & IY_RIGHT) { vars[head].xo = vars[head].sx2 - isize; vars[head].xs = -1; } else { vars[head].xo = vars[head].sx1; vars[head].xs = 1; } if (wPreferences.icon_yard & IY_TOP) { vars[head].yo = vars[head].sy1; vars[head].ys = 1; } else { vars[head].yo = vars[head].sy2 - isize; vars[head].ys = -1; } } #define X ((wPreferences.icon_yard & IY_VERT) \ ? vars[head].xo + vars[head].xs*(vars[head].si*isize) \ : vars[head].xo + vars[head].xs*(vars[head].pi*isize)) #define Y ((wPreferences.icon_yard & IY_VERT) \ ? vars[head].yo + vars[head].ys*(vars[head].pi*isize) \ : vars[head].yo + vars[head].ys*(vars[head].si*isize)) /* arrange application icons */ aicon = scr->app_icon_list; /* reverse them to avoid unnecessarily sliding of icons */ while (aicon && aicon->next) aicon = aicon->next; while (aicon) { if (!aicon->docked) { /* CHECK: can icon be NULL here ? */ /* The intention here is to place the AppIcon on the head that * contains most of the applications _main_ window. */ head = wGetHeadForWindow(aicon->icon->owner); if (aicon->x_pos != X || aicon->y_pos != Y) { #ifdef USE_ANIMATIONS if (!wPreferences.no_animations) slide_window(aicon->icon->core->window, aicon->x_pos, aicon->y_pos, X, Y); #endif /* USE_ANIMATIONS */ } wAppIconMove(aicon, X, Y); vars[head].pi++; if (vars[head].pi >= vars[head].pf) { vars[head].pi = 0; vars[head].si++; } } aicon = aicon->prev; } /* arrange miniwindows */ wwin = scr->focused_window; /* reverse them to avoid unnecessarily shuffling */ while (wwin && wwin->prev) wwin = wwin->prev; while (wwin) { if (wwin->icon && wwin->flags.miniaturized && !wwin->flags.hidden && (wwin->frame->workspace == scr->current_workspace || IS_OMNIPRESENT(wwin) || wPreferences.sticky_icons)) { head = wGetHeadForWindow(wwin); if (arrangeAll || !wwin->flags.icon_moved) { if (wwin->icon_x != X || wwin->icon_y != Y) move_window(wwin->icon->core->window, wwin->icon_x, wwin->icon_y, X, Y); wwin->icon_x = X; wwin->icon_y = Y; vars[head].pi++; if (vars[head].pi >= vars[head].pf) { vars[head].pi = 0; vars[head].si++; } } } if (arrangeAll) wwin->flags.icon_moved = 0; /* we reversed the order, so we use next */ wwin = wwin->next; } wfree(vars); } void wSelectWindow(WWindow *wwin, Bool flag) { WScreen *scr = wwin->screen_ptr; if (flag) { wwin->flags.selected = 1; if (wwin->frame->selected_border_pixel) XSetWindowBorder(dpy, wwin->frame->core->window, *wwin->frame->selected_border_pixel); else XSetWindowBorder(dpy, wwin->frame->core->window, scr->white_pixel); if (!HAS_BORDER(wwin)) XSetWindowBorderWidth(dpy, wwin->frame->core->window, wwin->screen_ptr->frame_border_width); if (!scr->selected_windows) scr->selected_windows = WMCreateArray(4); WMAddToArray(scr->selected_windows, wwin); } else { wwin->flags.selected = 0; if (wwin->flags.focused) { if (wwin->frame->focused_border_pixel) XSetWindowBorder(dpy, wwin->frame->core->window, *wwin->frame->focused_border_pixel); else XSetWindowBorder(dpy, wwin->frame->core->window, scr->frame_focused_border_pixel); } else { if (wwin->frame->border_pixel) XSetWindowBorder(dpy, wwin->frame->core->window, *wwin->frame->border_pixel); else XSetWindowBorder(dpy, wwin->frame->core->window, scr->frame_border_pixel); } if (!HAS_BORDER(wwin)) XSetWindowBorderWidth(dpy, wwin->frame->core->window, 0); if (scr->selected_windows) WMRemoveFromArray(scr->selected_windows, wwin); } } void wMakeWindowVisible(WWindow *wwin) { if (wwin->frame->workspace != wwin->screen_ptr->current_workspace) wWorkspaceChange(wwin->screen_ptr, wwin->frame->workspace); if (wwin->flags.shaded) wUnshadeWindow(wwin); if (wwin->flags.hidden) { WApplication *app; app = wApplicationOf(wwin->main_window); if (app) { /* trick to get focus to this window */ app->last_focused = wwin; wUnhideApplication(app, False, False); } } if (wwin->flags.miniaturized) { wDeiconifyWindow(wwin); } else { if (!WFLAGP(wwin, no_focusable)) wSetFocusTo(wwin->screen_ptr, wwin); wRaiseFrame(wwin->frame->core); } } void movePionterToWindowCenter(WWindow *wwin) { if (!wPreferences.pointer_with_half_max_windows) return; XSelectInput(dpy, wwin->client_win, wwin->event_mask); XWarpPointer(dpy, None, wwin->screen_ptr->root_win, 0, 0, 0, 0, wwin->frame_x + wwin->client.width / 2, wwin->frame_y + wwin->client.height / 2); XFlush(dpy); } /* * Do the animation while shading (called with what = SHADE) * or unshading (what = UNSHADE). */ #ifdef USE_ANIMATIONS static void shade_animate(WWindow *wwin, Bool what) { int y, s, w, h; time_t time0 = time(NULL); if (wwin->flags.skip_next_animation || wPreferences.no_animations) return; switch (what) { case SHADE: if (!wwin->screen_ptr->flags.startup) { /* do the shading animation */ h = wwin->frame->core->height; s = h / SHADE_STEPS; if (s < 1) s = 1; w = wwin->frame->core->width; y = wwin->frame->top_width; while (h > wwin->frame->top_width + 1) { XMoveWindow(dpy, wwin->client_win, 0, y); XResizeWindow(dpy, wwin->frame->core->window, w, h); XFlush(dpy); if (time(NULL) - time0 > MAX_ANIMATION_TIME) break; if (SHADE_DELAY > 0) wusleep(SHADE_DELAY * 1000L); else wusleep(10); h -= s; y -= s; } XMoveWindow(dpy, wwin->client_win, 0, wwin->frame->top_width); } break; case UNSHADE: h = wwin->frame->top_width + wwin->frame->bottom_width; y = wwin->frame->top_width - wwin->client.height; s = abs(y) / SHADE_STEPS; if (s < 1) s = 1; w = wwin->frame->core->width; XMoveWindow(dpy, wwin->client_win, 0, y); if (s > 0) { while (h < wwin->client.height + wwin->frame->top_width + wwin->frame->bottom_width) { XResizeWindow(dpy, wwin->frame->core->window, w, h); XMoveWindow(dpy, wwin->client_win, 0, y); XFlush(dpy); if (SHADE_DELAY > 0) wusleep(SHADE_DELAY * 2000L / 3); else wusleep(10); h += s; y += s; if (time(NULL) - time0 > MAX_ANIMATION_TIME) break; } } XMoveWindow(dpy, wwin->client_win, 0, wwin->frame->top_width); break; } } #endif �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/wdefaults.h������������������������������������������������������������������0000644�0001750�0001750�00000002660�13431646202�013731� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef WMWDEFAULTS_H_ #define WMWDEFAULTS_H_ /* bit flags for the above window attributes */ #define WA_TITLEBAR (1<<0) #define WA_RESIZABLE (1<<1) #define WA_CLOSABLE (1<<2) #define WA_MINIATURIZABLE (1<<3) #define WA_BROKEN_CLOSE (1<<4) #define WA_SHADEABLE (1<<5) #define WA_FOCUSABLE (1<<6) #define WA_OMNIPRESENT (1<<7) #define WA_SKIP_WINDOW_LIST (1<<8) #define WA_SKIP_SWITCHPANEL (1<<9) #define WA_FLOATING (1<<10) #define WA_IGNORE_KEYS (1<<11) #define WA_IGNORE_MOUSE (1<<12) #define WA_IGNORE_HIDE_OTHERS (1<<13) #define WA_NOT_APPLICATION (1<<14) #define WA_DONT_MOVE_OFF (1<<15) #endif ��������������������������������������������������������������������������������WindowMaker-0.95.9/src/xutil.h����������������������������������������������������������������������0000644�0001750�0001750�00000002014�13431646202�013071� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* xutil.h * * Copyright (c) 1998 scottc * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef _WM_XUTIL_H_ #define _WM_XUTIL_H_ void FormatXError(Display *dpy, XErrorEvent *error, char *buffer, int size); void RequestSelection(Display *dpy, Window requestor, Time timestamp); char *GetSelection(Display *dpy, Window requestor); #endif ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/rootmenu.c�������������������������������������������������������������������0000644�0001750�0001750�00000123033�13642357774�013615� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* rootmenu.c- user defined menu * * Window Maker window manager * * Copyright (c) 1997-2003 Alfredo K. Kojima * Copyright (c) 1998-2003 Dan Pascu * Copyright (c) 2014 Window Maker Team * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "wconfig.h" #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/stat.h> #include <sys/wait.h> #include <sys/types.h> #include <string.h> #include <strings.h> #include <ctype.h> #include <time.h> #include <dirent.h> #include <errno.h> #include <X11/Xlib.h> #include <X11/Xutil.h> #include <X11/Xatom.h> #include "WindowMaker.h" #include "actions.h" #include "menu.h" #include "misc.h" #include "main.h" #include "dialog.h" #include "keybind.h" #include "stacking.h" #include "workspace.h" #include "defaults.h" #include "framewin.h" #include "session.h" #include "shutdown.h" #include "xmodifier.h" #include "rootmenu.h" #include "startup.h" #include "switchmenu.h" #include <WINGs/WUtil.h> #define MAX_SHORTCUT_LENGTH 32 static WMenu *readMenuPipe(WScreen * scr, char **file_name); static WMenu *readPLMenuPipe(WScreen * scr, char **file_name); static WMenu *readMenuFile(WScreen *scr, const char *file_name); static WMenu *readMenuDirectory(WScreen *scr, const char *title, char **file_name, const char *command); static WMenu *configureMenu(WScreen *scr, WMPropList *definition); static void menu_parser_register_macros(WMenuParser parser); typedef struct Shortcut { struct Shortcut *next; int modifier; KeyCode keycode; WMenuEntry *entry; WMenu *menu; } Shortcut; static Shortcut *shortcutList = NULL; /* * Syntax: * # main menu * "Menu Name" MENU * "Title" EXEC command_to_exec -params * "Submenu" MENU * "Title" EXEC command_to_exec -params * "Submenu" END * "Workspaces" WORKSPACE_MENU * "Title" built_in_command * "Quit" EXIT * "Quick Quit" EXIT QUICK * "Menu Name" END * * Commands may be preceded by SHORTCUT key * * Built-in commands: * * INFO_PANEL - shows the Info Panel * LEGAL_PANEL - shows the Legal info panel * SHUTDOWN [QUICK] - closes the X server [without confirmation] * REFRESH - forces the desktop to be repainted * EXIT [QUICK] - exit the window manager [without confirmation] * EXEC <program> - execute an external program * SHEXEC <command> - execute a shell command * WORKSPACE_MENU - places the workspace submenu * ARRANGE_ICONS * RESTART [<window manager>] - restarts the window manager * SHOW_ALL - unhide all windows on workspace * HIDE_OTHERS - hides all windows excep the focused one * OPEN_MENU file - read menu data from file which must be a valid menu file. * OPEN_MENU /some/dir [/some/other/dir ...] [WITH command -options] * - read menu data from directory(ies) and * eventually precede each with a command. * OPEN_MENU | command * - opens command and uses its stdout to construct and insert * the resulting menu in current position. The output of * command must be a valid menu description. * The space between '|' and command is optional. * || will do the same, but will not cache the contents. * OPEN_PLMENU | command * - opens command and uses its stdout which must be in proplist * fromat to construct and insert the resulting menu in current * position. * The space between '|' and command is optional. * || will do the same, but will not cache the contents. * 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). Also save * dock state now. * CLEAR_SESSION - clears any previous saved session. This will not have * any effect if SaveSessionOnExit is True. * */ #define M_QUICK 1 /* menu commands */ static void execCommand(WMenu * menu, WMenuEntry * entry) { char *cmdline; cmdline = ExpandOptions(menu->frame->screen_ptr, (char *)entry->clientdata); XGrabPointer(dpy, menu->frame->screen_ptr->root_win, True, 0, GrabModeAsync, GrabModeAsync, None, wPreferences.cursor[WCUR_WAIT], CurrentTime); XSync(dpy, 0); if (cmdline) { ExecuteShellCommand(menu->frame->screen_ptr, cmdline); wfree(cmdline); } XUngrabPointer(dpy, CurrentTime); XSync(dpy, 0); } static void exitCommand(WMenu * menu, WMenuEntry * entry) { static int inside = 0; int result; /* prevent reentrant calls */ if (inside) return; inside = 1; #define R_CANCEL 0 #define R_EXIT 1 result = R_CANCEL; if ((long)entry->clientdata == M_QUICK) { result = R_EXIT; } else { int r, oldSaveSessionFlag; oldSaveSessionFlag = wPreferences.save_session_on_exit; r = wExitDialog(menu->frame->screen_ptr, _("Exit"), _("Exit window manager?"), _("Exit"), _("Cancel"), NULL); if (r == WAPRDefault) { result = R_EXIT; } else if (r == WAPRAlternate) { /* Don't modify the "save session on exit" flag if the * user canceled the operation. */ wPreferences.save_session_on_exit = oldSaveSessionFlag; } } if (result == R_EXIT) Shutdown(WSExitMode); #undef R_EXIT #undef R_CANCEL inside = 0; } static void shutdownCommand(WMenu * menu, WMenuEntry * entry) { static int inside = 0; int result; /* prevent reentrant calls */ if (inside) return; inside = 1; #define R_CANCEL 0 #define R_CLOSE 1 #define R_KILL 2 result = R_CANCEL; if ((long)entry->clientdata == M_QUICK) result = R_CLOSE; else { int r, oldSaveSessionFlag; oldSaveSessionFlag = wPreferences.save_session_on_exit; r = wExitDialog(menu->frame->screen_ptr, _("Kill X session"), _("Kill Window System session?\n" "(all applications will be closed)"), _("Kill"), _("Cancel"), NULL); if (r == WAPRDefault) { result = R_KILL; } else if (r == WAPRAlternate) { /* Don't modify the "save session on exit" flag if the * user canceled the operation. */ wPreferences.save_session_on_exit = oldSaveSessionFlag; } } if (result != R_CANCEL) { Shutdown(WSKillMode); } #undef R_CLOSE #undef R_CANCEL #undef R_KILL inside = 0; } static void restartCommand(WMenu * menu, WMenuEntry * entry) { /* Parameter not used, but tell the compiler that it is ok */ (void) menu; (void) entry; Shutdown(WSRestartPreparationMode); Restart((char *)entry->clientdata, False); Restart(NULL, True); } static void refreshCommand(WMenu * menu, WMenuEntry * entry) { /* Parameter not used, but tell the compiler that it is ok */ (void) entry; wRefreshDesktop(menu->frame->screen_ptr); } static void arrangeIconsCommand(WMenu * menu, WMenuEntry * entry) { /* Parameter not used, but tell the compiler that it is ok */ (void) entry; wArrangeIcons(menu->frame->screen_ptr, True); } static void showAllCommand(WMenu * menu, WMenuEntry * entry) { /* Parameter not used, but tell the compiler that it is ok */ (void) entry; wShowAllWindows(menu->frame->screen_ptr); } static void hideOthersCommand(WMenu * menu, WMenuEntry * entry) { /* Parameter not used, but tell the compiler that it is ok */ (void) entry; wHideOtherApplications(menu->frame->screen_ptr->focused_window); } static void saveSessionCommand(WMenu * menu, WMenuEntry * entry) { /* Parameter not used, but tell the compiler that it is ok */ (void) entry; if (!wPreferences.save_session_on_exit) wSessionSaveState(menu->frame->screen_ptr); wScreenSaveState(menu->frame->screen_ptr); } static void clearSessionCommand(WMenu * menu, WMenuEntry * entry) { /* Parameter not used, but tell the compiler that it is ok */ (void) entry; wSessionClearState(menu->frame->screen_ptr); wScreenSaveState(menu->frame->screen_ptr); } static void infoPanelCommand(WMenu * menu, WMenuEntry * entry) { /* Parameter not used, but tell the compiler that it is ok */ (void) entry; wShowInfoPanel(menu->frame->screen_ptr); } static void legalPanelCommand(WMenu * menu, WMenuEntry * entry) { /* Parameter not used, but tell the compiler that it is ok */ (void) entry; wShowLegalPanel(menu->frame->screen_ptr); } /********************************************************************/ static char *getLocalizedMenuFile(const char *menu) { char *buffer, *ptr, *locale; int len; if (!w_global.locale) return NULL; len = strlen(menu) + strlen(w_global.locale) + 8; buffer = wmalloc(len); /* try menu.locale_name */ snprintf(buffer, len, "%s.%s", menu, w_global.locale); if (access(buffer, F_OK) == 0) return buffer; /* position of locale in our buffer */ locale = buffer + strlen(menu) + 1; /* 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(locale, '_'); if (ptr) { *ptr = 0; if (access(buffer, F_OK) == 0) return buffer; } wfree(buffer); return NULL; } Bool wRootMenuPerformShortcut(XEvent * event) { WScreen *scr = wScreenForRootWindow(event->xkey.root); Shortcut *ptr; int modifiers; int done = 0; /* ignore CapsLock */ modifiers = event->xkey.state & w_global.shortcut.modifiers_mask; for (ptr = shortcutList; ptr != NULL; ptr = ptr->next) { if (ptr->keycode == 0 || ptr->menu->menu->screen_ptr != scr) continue; if (ptr->keycode == event->xkey.keycode && ptr->modifier == modifiers) { (*ptr->entry->callback) (ptr->menu, ptr->entry); done = True; } } return done; } void wRootMenuBindShortcuts(Window window) { Shortcut *ptr; ptr = shortcutList; while (ptr) { if (ptr->modifier != AnyModifier) { XGrabKey(dpy, ptr->keycode, ptr->modifier | LockMask, window, True, GrabModeAsync, GrabModeAsync); #ifdef NUMLOCK_HACK wHackedGrabKey(ptr->keycode, ptr->modifier, window, True, GrabModeAsync, GrabModeAsync); #endif } XGrabKey(dpy, ptr->keycode, ptr->modifier, window, True, GrabModeAsync, GrabModeAsync); ptr = ptr->next; } } static void rebindKeygrabs(WScreen * scr) { WWindow *wwin; wwin = scr->focused_window; while (wwin != NULL) { XUngrabKey(dpy, AnyKey, AnyModifier, wwin->frame->core->window); if (!WFLAGP(wwin, no_bind_keys)) { wWindowSetKeyGrabs(wwin); } wwin = wwin->prev; } } static void removeShortcutsForMenu(WMenu * menu) { Shortcut *ptr, *tmp; Shortcut *newList = NULL; ptr = shortcutList; while (ptr != NULL) { tmp = ptr->next; if (ptr->menu == menu) { wfree(ptr); } else { ptr->next = newList; newList = ptr; } ptr = tmp; } shortcutList = newList; menu->menu->screen_ptr->flags.root_menu_changed_shortcuts = 1; } static Bool addShortcut(const char *file, const char *shortcutDefinition, WMenu *menu, WMenuEntry *entry) { Shortcut *ptr; KeySym ksym; char *k; char buf[MAX_SHORTCUT_LENGTH], *b; ptr = wmalloc(sizeof(Shortcut)); wstrlcpy(buf, shortcutDefinition, MAX_SHORTCUT_LENGTH); b = (char *)buf; /* get modifiers */ ptr->modifier = 0; while ((k = strchr(b, '+')) != NULL) { int mod; *k = 0; mod = wXModifierFromKey(b); if (mod < 0) { wwarning(_("%s: invalid key modifier \"%s\""), file, b); wfree(ptr); return False; } ptr->modifier |= mod; b = k + 1; } /* get key */ ksym = XStringToKeysym(b); if (ksym == NoSymbol) { wwarning(_("%s:invalid kbd shortcut specification \"%s\" for entry %s"), file, shortcutDefinition, entry->text); wfree(ptr); return False; } ptr->keycode = XKeysymToKeycode(dpy, ksym); if (ptr->keycode == 0) { wwarning(_("%s:invalid key in shortcut \"%s\" for entry %s"), file, shortcutDefinition, entry->text); wfree(ptr); return False; } ptr->menu = menu; ptr->entry = entry; ptr->next = shortcutList; shortcutList = ptr; menu->menu->screen_ptr->flags.root_menu_changed_shortcuts = 1; return True; } static char *next_token(char *line, char **next) { char *tmp, c; char *ret; *next = NULL; while (*line == ' ' || *line == '\t') line++; tmp = line; if (*tmp == '"') { tmp++; line++; while (*tmp != 0 && *tmp != '"') tmp++; if (*tmp != '"') { wwarning(_("%s: unmatched '\"' in menu file"), line); return NULL; } } else { do { if (*tmp == '\\') tmp++; if (*tmp != 0) tmp++; } while (*tmp != 0 && *tmp != ' ' && *tmp != '\t'); } c = *tmp; *tmp = 0; ret = wstrdup(line); *tmp = c; if (c == 0) return ret; else tmp++; /* skip blanks */ while (*tmp == ' ' || *tmp == '\t') tmp++; if (*tmp != 0) *next = tmp; return ret; } static void separateCommand(char *line, char ***file, char **command) { char *token, *tmp = line; WMArray *array = WMCreateArray(4); int count, i; *file = NULL; *command = NULL; do { token = next_token(tmp, &tmp); if (token) { if (strcmp(token, "WITH") == 0) { if (tmp != NULL && *tmp != 0) *command = wstrdup(tmp); else wwarning(_("%s: missing command"), line); wfree(token); break; } WMAddToArray(array, token); } } while (token != NULL && tmp != NULL); count = WMGetArrayItemCount(array); if (count > 0) { *file = wmalloc(sizeof(char *) * (count + 1)); (*file)[count] = NULL; for (i = 0; i < count; i++) { (*file)[i] = WMGetFromArray(array, i); } } WMFreeArray(array); } static WMenu *constructPLMenu(WScreen *screen, const char *path) { WMPropList *pl = NULL; WMenu *menu = NULL; if (!path) return NULL; pl = WMReadPropListFromFile(path); if (!pl) return NULL; menu = configureMenu(screen, pl); WMReleasePropList(pl); if (!menu) return NULL; menu->on_destroy = removeShortcutsForMenu; return menu; } static void constructMenu(WMenu * menu, WMenuEntry * entry) { WMenu *submenu; struct stat stat_buf; char **path; char *cmd; char *lpath = NULL; int i, first = -1; time_t last = 0; separateCommand((char *)entry->clientdata, &path, &cmd); if (path == NULL || *path == NULL || **path == 0) { wwarning(_("invalid OPEN_MENU specification: %s"), (char *)entry->clientdata); if (path) { for (i = 0; path[i] != NULL; i++) wfree(path[i]); wfree(path); } if (cmd) wfree(cmd); return; } if (path[0][0] == '|') { /* pipe menu */ if (!menu->cascades[entry->cascade] || menu->cascades[entry->cascade]->timestamp == 0) { /* parse pipe */ submenu = readMenuPipe(menu->frame->screen_ptr, path); if (submenu != NULL) { if (path[0][1] == '|') submenu->timestamp = 0; else submenu->timestamp = 1; /* there's no automatic reloading */ } } else { submenu = NULL; } } else { /* try interpreting path as a proplist file */ submenu = constructPLMenu(menu->frame->screen_ptr, path[0]); /* if unsuccessful, try it as an old-style file */ if (!submenu) { i = 0; while (path[i] != NULL) { char *tmp; if (strcmp(path[i], "-noext") == 0) { i++; continue; } tmp = wexpandpath(path[i]); if (strstr(tmp, "#usergnusteppath#") == tmp) tmp = wstrconcat(wusergnusteppath(), tmp + 17); wfree(path[i]); lpath = getLocalizedMenuFile(tmp); if (lpath) { wfree(tmp); path[i] = lpath; lpath = NULL; } else { path[i] = tmp; } if (stat(path[i], &stat_buf) == 0) { if (last < stat_buf.st_mtime) last = stat_buf.st_mtime; if (first < 0) first = i; } else { werror(_("%s:could not stat menu"), path[i]); /*goto finish; */ } i++; } if (first < 0) { werror(_("%s:could not stat menu:%s"), "OPEN_MENU", (char *)entry->clientdata); goto finish; } stat(path[first], &stat_buf); if (!menu->cascades[entry->cascade] || menu->cascades[entry->cascade]->timestamp < last) { if (S_ISDIR(stat_buf.st_mode)) { /* menu directory */ submenu = readMenuDirectory(menu->frame->screen_ptr, entry->text, path, cmd); if (submenu) submenu->timestamp = last; } else if (S_ISREG(stat_buf.st_mode)) { /* menu file */ if (cmd || path[1]) wwarning(_("too many parameters in OPEN_MENU: %s"), (char *)entry->clientdata); submenu = readMenuFile(menu->frame->screen_ptr, path[first]); if (submenu) submenu->timestamp = stat_buf.st_mtime; } else { submenu = NULL; } } else { submenu = NULL; } } } if (submenu) { wMenuEntryRemoveCascade(menu, entry); wMenuEntrySetCascade(menu, entry, submenu); } finish: i = 0; while (path[i] != NULL) wfree(path[i++]); wfree(path); if (cmd) wfree(cmd); } static void constructPLMenuFromPipe(WMenu * menu, WMenuEntry * entry) { WMenu *submenu = NULL; char **path; char *cmd; int i; separateCommand((char *)entry->clientdata, &path, &cmd); if (path == NULL || *path == NULL || **path == 0) { wwarning(_("invalid OPEN_PLMENU specification: %s"), (char *)entry->clientdata); if (path) { for (i = 0; path[i] != NULL; i++) wfree(path[i]); wfree(path); } if (cmd) wfree(cmd); return; } if (path[0][0] == '|') { /* pipe menu */ if (!menu->cascades[entry->cascade] || menu->cascades[entry->cascade]->timestamp == 0) { /* parse pipe */ submenu = readPLMenuPipe(menu->frame->screen_ptr, path); if (submenu != NULL) { if (path[0][1] == '|') submenu->timestamp = 0; else submenu->timestamp = 1; /* there's no automatic reloading */ } } } if (submenu) { wMenuEntryRemoveCascade(menu, entry); wMenuEntrySetCascade(menu, entry, submenu); } i = 0; while (path[i] != NULL) wfree(path[i++]); wfree(path); if (cmd) wfree(cmd); } static void cleanupWorkspaceMenu(WMenu *menu) { if (menu->frame->screen_ptr->workspace_menu == menu) menu->frame->screen_ptr->workspace_menu = NULL; } static WMenuEntry *addWorkspaceMenu(WScreen *scr, WMenu *menu, const char *title) { WMenu *wsmenu; WMenuEntry *entry; if (scr->flags.added_workspace_menu) { wwarning(_ ("There are more than one WORKSPACE_MENU commands in the applications menu. Only one is allowed.")); return NULL; } else { scr->flags.added_workspace_menu = 1; wsmenu = wWorkspaceMenuMake(scr, True); wsmenu->on_destroy = cleanupWorkspaceMenu; scr->workspace_menu = wsmenu; entry = wMenuAddCallback(menu, title, NULL, NULL); wMenuEntrySetCascade(menu, entry, wsmenu); wWorkspaceMenuUpdate(scr, wsmenu); } return entry; } static void cleanupWindowsMenu(WMenu * menu) { if (menu->frame->screen_ptr->switch_menu == menu) menu->frame->screen_ptr->switch_menu = NULL; } static WMenuEntry *addWindowsMenu(WScreen *scr, WMenu *menu, const char *title) { WMenu *wwmenu; WWindow *wwin; WMenuEntry *entry; if (scr->flags.added_windows_menu) { wwarning(_ ("There are more than one WINDOWS_MENU commands in the applications menu. Only one is allowed.")); return NULL; } else { scr->flags.added_windows_menu = 1; wwmenu = wMenuCreate(scr, _("Window List"), False); wwmenu->on_destroy = cleanupWindowsMenu; scr->switch_menu = wwmenu; wwin = scr->focused_window; while (wwin) { UpdateSwitchMenu(scr, wwin, ACTION_ADD); wwin = wwin->prev; } entry = wMenuAddCallback(menu, title, NULL, NULL); wMenuEntrySetCascade(menu, entry, wwmenu); } return entry; } static WMenuEntry *addMenuEntry(WMenu *menu, const char *title, const char *shortcut, const char *command, const char *params, const char *file_name) { WScreen *scr; WMenuEntry *entry = NULL; Bool shortcutOk = False; if (!menu) return NULL; scr = menu->frame->screen_ptr; if (strcmp(command, "OPEN_MENU") == 0) { if (!params) { wwarning(_("%s:missing parameter for menu command \"%s\""), file_name, command); } else { WMenu *dummy; char *path; path = wfindfile(DEF_CONFIG_PATHS, params); if (!path) { path = wstrdup(params); } dummy = wMenuCreate(scr, title, False); dummy->on_destroy = removeShortcutsForMenu; entry = wMenuAddCallback(menu, title, constructMenu, path); entry->free_cdata = wfree; wMenuEntrySetCascade(menu, entry, dummy); } } else if (strcmp(command, "OPEN_PLMENU") == 0) { if (!params) { wwarning(_("%s:missing parameter for menu command \"%s\""), file_name, command); } else { WMenu *dummy; char *path; path = wfindfile(DEF_CONFIG_PATHS, params); if (!path) path = wstrdup(params); dummy = wMenuCreate(scr, title, False); dummy->on_destroy = removeShortcutsForMenu; entry = wMenuAddCallback(menu, title, constructPLMenuFromPipe, path); entry->free_cdata = wfree; wMenuEntrySetCascade(menu, entry, dummy); } } else if (strcmp(command, "EXEC") == 0) { if (!params) wwarning(_("%s:missing parameter for menu command \"%s\""), file_name, command); else { entry = wMenuAddCallback(menu, title, execCommand, wstrconcat("exec ", params)); entry->free_cdata = wfree; shortcutOk = True; } } else if (strcmp(command, "SHEXEC") == 0) { if (!params) wwarning(_("%s:missing parameter for menu command \"%s\""), file_name, command); else { entry = wMenuAddCallback(menu, title, execCommand, wstrdup(params)); entry->free_cdata = wfree; shortcutOk = True; } } else if (strcmp(command, "EXIT") == 0) { if (params && strcmp(params, "QUICK") == 0) entry = wMenuAddCallback(menu, title, exitCommand, (void *)M_QUICK); else entry = wMenuAddCallback(menu, title, exitCommand, NULL); shortcutOk = True; } else if (strcmp(command, "SHUTDOWN") == 0) { if (params && strcmp(params, "QUICK") == 0) entry = wMenuAddCallback(menu, title, shutdownCommand, (void *)M_QUICK); else entry = wMenuAddCallback(menu, title, shutdownCommand, NULL); shortcutOk = True; } else if (strcmp(command, "REFRESH") == 0) { entry = wMenuAddCallback(menu, title, refreshCommand, NULL); shortcutOk = True; } else if (strcmp(command, "WORKSPACE_MENU") == 0) { entry = addWorkspaceMenu(scr, menu, title); shortcutOk = True; } else if (strcmp(command, "WINDOWS_MENU") == 0) { entry = addWindowsMenu(scr, menu, title); shortcutOk = True; } else if (strcmp(command, "ARRANGE_ICONS") == 0) { entry = wMenuAddCallback(menu, title, arrangeIconsCommand, NULL); shortcutOk = True; } else if (strcmp(command, "HIDE_OTHERS") == 0) { entry = wMenuAddCallback(menu, title, hideOthersCommand, NULL); shortcutOk = True; } else if (strcmp(command, "SHOW_ALL") == 0) { entry = wMenuAddCallback(menu, title, showAllCommand, NULL); shortcutOk = True; } else if (strcmp(command, "RESTART") == 0) { entry = wMenuAddCallback(menu, title, restartCommand, params ? wstrdup(params) : NULL); entry->free_cdata = wfree; shortcutOk = True; } else if (strcmp(command, "SAVE_SESSION") == 0) { entry = wMenuAddCallback(menu, title, saveSessionCommand, NULL); shortcutOk = True; } else if (strcmp(command, "CLEAR_SESSION") == 0) { entry = wMenuAddCallback(menu, title, clearSessionCommand, NULL); shortcutOk = True; } else if (strcmp(command, "INFO_PANEL") == 0) { entry = wMenuAddCallback(menu, title, infoPanelCommand, NULL); shortcutOk = True; } else if (strcmp(command, "LEGAL_PANEL") == 0) { entry = wMenuAddCallback(menu, title, legalPanelCommand, NULL); shortcutOk = True; } else { wwarning(_("%s:unknown command \"%s\" in menu config."), file_name, command); return NULL; } if (shortcut && entry) { if (!shortcutOk) { wwarning(_("%s:can't add shortcut for entry \"%s\""), file_name, title); } else { if (addShortcut(file_name, shortcut, menu, entry)) { entry->rtext = GetShortcutString(shortcut); /* entry->rtext = wstrdup(shortcut); */ } } } return entry; } /******************* Menu Configuration From File *******************/ static void freeline(char *title, char *command, char *parameter, char *shortcut) { wfree(title); wfree(command); wfree(parameter); wfree(shortcut); } static WMenu *parseCascade(WScreen * scr, WMenu * menu, WMenuParser parser) { char *command, *params, *shortcut, *title; while (WMenuParserGetLine(parser, &title, &command, ¶ms, &shortcut)) { if (command == NULL || !command[0]) { WMenuParserError(parser, _("missing command in menu config") ); freeline(title, command, params, shortcut); goto error; } if (strcasecmp(command, "MENU") == 0) { WMenu *cascade; /* start submenu */ cascade = wMenuCreate(scr, M_(title), False); cascade->on_destroy = removeShortcutsForMenu; if (!parseCascade(scr, cascade, parser)) { wMenuDestroy(cascade, True); } else { wMenuEntrySetCascade(menu, wMenuAddCallback(menu, M_(title), NULL, NULL), cascade); } } else if (strcasecmp(command, "END") == 0) { /* end of menu */ freeline(title, command, params, shortcut); return menu; } else { /* normal items */ addMenuEntry(menu, M_(title), shortcut, command, params, WMenuParserGetFilename(parser)); } freeline(title, command, params, shortcut); } WMenuParserError(parser, _("syntax error in menu file: END declaration missing") ); error: return NULL; } static WMenu *readMenu(WScreen *scr, const char *flat_file, FILE *file) { WMenu *menu = NULL; WMenuParser parser; char *title, *command, *params, *shortcut; parser = WMenuParserCreate(flat_file, file, DEF_CONFIG_PATHS); menu_parser_register_macros(parser); while (WMenuParserGetLine(parser, &title, &command, ¶ms, &shortcut)) { if (command == NULL || !command[0]) { WMenuParserError(parser, _("missing command in menu config") ); freeline(title, command, params, shortcut); break; } if (strcasecmp(command, "MENU") == 0) { menu = wMenuCreate(scr, M_(title), True); menu->on_destroy = removeShortcutsForMenu; if (!parseCascade(scr, menu, parser)) { wMenuDestroy(menu, True); menu = NULL; } freeline(title, command, params, shortcut); break; } else { WMenuParserError(parser, _("invalid menu, no menu title given") ); freeline(title, command, params, shortcut); break; } freeline(title, command, params, shortcut); } WMenuParserDelete(parser); return menu; } static WMenu *readMenuFile(WScreen *scr, const char *file_name) { WMenu *menu = NULL; FILE *file = NULL; file = fopen(file_name, "rb"); if (!file) { werror(_("could not open menu file \"%s\": %s"), file_name, strerror(errno)); return NULL; } menu = readMenu(scr, file_name, file); fclose(file); return menu; } static inline int generate_command_from_list(char *buffer, size_t buffer_size, char **command_elements) { char *rd; int wr_idx; int i; wr_idx = 0; for (i = 0; command_elements[i] != NULL; i++) { if (i > 0) if (wr_idx < buffer_size - 1) buffer[wr_idx++] = ' '; for (rd = command_elements[i]; *rd != '\0'; rd++) { if (wr_idx < buffer_size - 1) buffer[wr_idx++] = *rd; else return 1; } } buffer[wr_idx] = '\0'; return 0; } /************ Menu Configuration From Pipe *************/ static WMenu *readPLMenuPipe(WScreen * scr, char **file_name) { WMPropList *plist = NULL; WMenu *menu = NULL; char *filename; char flat_file[MAXLINE]; if (generate_command_from_list(flat_file, sizeof(flat_file), file_name)) { werror(_("could not open menu file \"%s\": %s"), file_name[0], _("pipe command for PropertyList is too long")); return NULL; } filename = flat_file + (flat_file[1] == '|' ? 2 : 1); plist = WMReadPropListFromPipe(filename); if (!plist) return NULL; menu = configureMenu(scr, plist); WMReleasePropList(plist); if (!menu) return NULL; menu->on_destroy = removeShortcutsForMenu; return menu; } static WMenu *readMenuPipe(WScreen * scr, char **file_name) { WMenu *menu = NULL; FILE *file = NULL; char *filename; char flat_file[MAXLINE]; if (generate_command_from_list(flat_file, sizeof(flat_file), file_name)) { werror(_("could not open menu file \"%s\": %s"), file_name[0], _("pipe command is too long")); return NULL; } filename = flat_file + (flat_file[1] == '|' ? 2 : 1); /* * In case of memory problem, 'popen' will not set the errno, so we initialise it * to be able to display a meaningful message. For other problems, 'popen' will * properly set errno, so we'll still get a good message */ errno = ENOMEM; file = popen(filename, "r"); if (!file) { werror(_("could not open menu file \"%s\": %s"), filename, strerror(errno)); return NULL; } menu = readMenu(scr, flat_file, file); pclose(file); return menu; } typedef struct { char *name; int index; } dir_data; static int myCompare(const void *d1, const void *d2) { dir_data *p1 = *(dir_data **) d1; dir_data *p2 = *(dir_data **) d2; return strcmp(p1->name, p2->name); } /***** Preset some macro for file parser *****/ static void menu_parser_register_macros(WMenuParser parser) { Visual *visual; char buf[32]; // Used to return CPP verion, now returns wmaker's version WMenuParserRegisterSimpleMacro(parser, "__VERSION__", VERSION); // All macros below were historically defined by WindowMaker visual = DefaultVisual(dpy, DefaultScreen(dpy)); snprintf(buf, sizeof(buf), "%d", visual->class); WMenuParserRegisterSimpleMacro(parser, "VISUAL", buf); snprintf(buf, sizeof(buf), "%d", DefaultDepth(dpy, DefaultScreen(dpy)) ); WMenuParserRegisterSimpleMacro(parser, "DEPTH", buf); snprintf(buf, sizeof(buf), "%d", WidthOfScreen(DefaultScreenOfDisplay(dpy)) ); WMenuParserRegisterSimpleMacro(parser, "SCR_WIDTH", buf); snprintf(buf, sizeof(buf), "%d", HeightOfScreen(DefaultScreenOfDisplay(dpy)) ); WMenuParserRegisterSimpleMacro(parser, "SCR_HEIGHT", buf); WMenuParserRegisterSimpleMacro(parser, "DISPLAY", XDisplayName(DisplayString(dpy)) ); WMenuParserRegisterSimpleMacro(parser, "WM_VERSION", "\"" VERSION "\""); } /************ Menu Configuration From Directory *************/ static Bool isFilePackage(const char *file) { int l; /* check if the extension indicates this file is a * file package. For now, only recognize .themed */ l = strlen(file); if (l > 7 && strcmp(&(file[l - 7]), ".themed") == 0) { return True; } else { return False; } } static WMenu *readMenuDirectory(WScreen *scr, const char *title, char **path, const char *command) { DIR *dir; struct dirent *dentry; struct stat stat_buf; WMenu *menu = NULL; char *buffer; WMArray *dirs = NULL, *files = NULL; WMArrayIterator iter; int length, i, have_space = 0; dir_data *data; int stripExtension = 0; dirs = WMCreateArray(16); files = WMCreateArray(16); i = 0; while (path[i] != NULL) { if (strcmp(path[i], "-noext") == 0) { stripExtension = 1; i++; continue; } dir = opendir(path[i]); if (!dir) { i++; continue; } while ((dentry = readdir(dir))) { if (strcmp(dentry->d_name, ".") == 0 || strcmp(dentry->d_name, "..") == 0) continue; if (dentry->d_name[0] == '.') continue; buffer = malloc(strlen(path[i]) + strlen(dentry->d_name) + 4); if (!buffer) { werror(_("out of memory while constructing directory menu %s"), path[i]); break; } strcpy(buffer, path[i]); strcat(buffer, "/"); strcat(buffer, dentry->d_name); if (stat(buffer, &stat_buf) != 0) { werror(_("%s:could not stat file \"%s\" in menu directory"), path[i], dentry->d_name); } else { Bool isFilePack = False; data = NULL; if (S_ISDIR(stat_buf.st_mode) && !(isFilePack = isFilePackage(dentry->d_name))) { /* access always returns success for user root */ if (access(buffer, X_OK) == 0) { /* Directory is accesible. Add to directory list */ data = (dir_data *) wmalloc(sizeof(dir_data)); data->name = wstrdup(dentry->d_name); data->index = i; WMAddToArray(dirs, data); } } else if (S_ISREG(stat_buf.st_mode) || isFilePack) { /* Hack because access always returns X_OK success for user root */ #define S_IXANY (S_IXUSR | S_IXGRP | S_IXOTH) if ((command != NULL && access(buffer, R_OK) == 0) || (command == NULL && access(buffer, X_OK) == 0 && (stat_buf.st_mode & S_IXANY))) { data = (dir_data *) wmalloc(sizeof(dir_data)); data->name = wstrdup(dentry->d_name); data->index = i; WMAddToArray(files, data); } } } free(buffer); } closedir(dir); i++; } if (!WMGetArrayItemCount(dirs) && !WMGetArrayItemCount(files)) { WMFreeArray(dirs); WMFreeArray(files); return NULL; } WMSortArray(dirs, myCompare); WMSortArray(files, myCompare); menu = wMenuCreate(scr, M_(title), False); menu->on_destroy = removeShortcutsForMenu; WM_ITERATE_ARRAY(dirs, data, iter) { /* New directory. Use same OPEN_MENU command that was used * for the current directory. */ length = strlen(path[data->index]) + strlen(data->name) + 6; if (stripExtension) length += 7; if (command) length += strlen(command) + 6; buffer = malloc(length); if (!buffer) { werror(_("out of memory while constructing directory menu %s"), path[data->index]); break; } buffer[0] = '\0'; if (stripExtension) strcat(buffer, "-noext "); have_space = strchr(path[data->index], ' ') != NULL || strchr(data->name, ' ') != NULL; if (have_space) strcat(buffer, "\""); strcat(buffer, path[data->index]); strcat(buffer, "/"); strcat(buffer, data->name); if (have_space) strcat(buffer, "\""); if (command) { strcat(buffer, " WITH "); strcat(buffer, command); } addMenuEntry(menu, M_(data->name), NULL, "OPEN_MENU", buffer, path[data->index]); wfree(buffer); wfree(data->name); wfree(data); } WM_ITERATE_ARRAY(files, data, iter) { /* executable: add as entry */ length = strlen(path[data->index]) + strlen(data->name) + 6; if (command) length += strlen(command); buffer = malloc(length); if (!buffer) { werror(_("out of memory while constructing directory menu %s"), path[data->index]); break; } have_space = strchr(path[data->index], ' ') != NULL || strchr(data->name, ' ') != NULL; if (command != NULL) { strcpy(buffer, command); strcat(buffer, " "); if (have_space) strcat(buffer, "\""); strcat(buffer, path[data->index]); } else { if (have_space) { buffer[0] = '"'; buffer[1] = 0; strcat(buffer, path[data->index]); } else { strcpy(buffer, path[data->index]); } } strcat(buffer, "/"); strcat(buffer, data->name); if (have_space) strcat(buffer, "\""); if (stripExtension) { char *ptr = strrchr(data->name, '.'); if (ptr && ptr != data->name) *ptr = 0; } addMenuEntry(menu, M_(data->name), NULL, "SHEXEC", buffer, path[data->index]); wfree(buffer); wfree(data->name); wfree(data); } WMFreeArray(files); WMFreeArray(dirs); return menu; } /************ Menu Configuration From WMRootMenu *************/ static WMenu *makeDefaultMenu(WScreen * scr) { WMenu *menu = NULL; menu = wMenuCreate(scr, _("Commands"), True); wMenuAddCallback(menu, M_("XTerm"), execCommand, "xterm"); wMenuAddCallback(menu, M_("rxvt"), execCommand, "rxvt"); wMenuAddCallback(menu, _("Restart"), restartCommand, NULL); wMenuAddCallback(menu, _("Exit..."), exitCommand, NULL); return menu; } /* *---------------------------------------------------------------------- * configureMenu-- * Reads root menu configuration from defaults database. * *---------------------------------------------------------------------- */ static WMenu *configureMenu(WScreen *scr, WMPropList *definition) { WMenu *menu = NULL; WMPropList *elem; int i, count; WMPropList *title, *command, *params; char *tmp, *mtitle; if (WMIsPLString(definition)) { struct stat stat_buf; char *path = NULL; Bool menu_is_default = False; /* menu definition is a string. Probably a path, so parse the file */ tmp = wexpandpath(WMGetFromPLString(definition)); path = getLocalizedMenuFile(tmp); if (!path) path = wfindfile(DEF_CONFIG_PATHS, tmp); if (!path) { path = wfindfile(DEF_CONFIG_PATHS, DEF_MENU_FILE); menu_is_default = True; } if (!path) { werror(_("could not find menu file \"%s\" referenced in WMRootMenu"), tmp); wfree(tmp); return NULL; } if (stat(path, &stat_buf) < 0) { werror(_("could not access menu \"%s\" referenced in WMRootMenu"), path); wfree(path); wfree(tmp); return NULL; } if (!scr->root_menu || stat_buf.st_mtime > scr->root_menu->timestamp /* if the pointer in WMRootMenu has changed */ || w_global.domain.root_menu->timestamp > scr->root_menu->timestamp) { WMPropList *menu_from_file = NULL; if (menu_is_default) { wwarning(_ ("using default menu file \"%s\" as the menu referenced in WMRootMenu could not be found "), path); } menu_from_file = WMReadPropListFromFile(path); if (menu_from_file == NULL) { /* old style menu */ menu = readMenuFile(scr, path); } else { menu = configureMenu(scr, menu_from_file); WMReleasePropList(menu_from_file); } if (menu) menu->timestamp = WMAX(stat_buf.st_mtime, w_global.domain.root_menu->timestamp); } else { menu = NULL; } wfree(path); wfree(tmp); return menu; } count = WMGetPropListItemCount(definition); if (count == 0) return NULL; elem = WMGetFromPLArray(definition, 0); if (!WMIsPLString(elem)) { tmp = WMGetPropListDescription(elem, False); wwarning(_("%s:format error in root menu configuration \"%s\""), "WMRootMenu", tmp); wfree(tmp); return NULL; } mtitle = WMGetFromPLString(elem); menu = wMenuCreate(scr, M_(mtitle), False); menu->on_destroy = removeShortcutsForMenu; for (i = 1; i < count; i++) { elem = WMGetFromPLArray(definition, i); #if 0 if (WMIsPLString(elem)) { char *file; file = WMGetFromPLString(elem); } #endif if (!WMIsPLArray(elem) || WMGetPropListItemCount(elem) < 2) goto error; if (WMIsPLArray(WMGetFromPLArray(elem, 1))) { WMenu *submenu; WMenuEntry *mentry; /* submenu */ submenu = configureMenu(scr, elem); if (submenu) { mentry = wMenuAddCallback(menu, submenu->frame->title, NULL, NULL); wMenuEntrySetCascade(menu, mentry, submenu); } } else { int idx = 0; WMPropList *shortcut; /* normal entry */ title = WMGetFromPLArray(elem, idx++); shortcut = WMGetFromPLArray(elem, idx++); if (strcmp(WMGetFromPLString(shortcut), "SHORTCUT") == 0) { shortcut = WMGetFromPLArray(elem, idx++); command = WMGetFromPLArray(elem, idx++); } else { command = shortcut; shortcut = NULL; } params = WMGetFromPLArray(elem, idx++); if (!title || !command) goto error; addMenuEntry(menu, M_(WMGetFromPLString(title)), shortcut ? WMGetFromPLString(shortcut) : NULL, WMGetFromPLString(command), params ? WMGetFromPLString(params) : NULL, "WMRootMenu"); } continue; error: tmp = WMGetPropListDescription(elem, False); wwarning(_("%s:format error in root menu configuration \"%s\""), "WMRootMenu", tmp); wfree(tmp); } return menu; } /* *---------------------------------------------------------------------- * OpenRootMenu-- * Opens the root menu, parsing the menu configuration from the * defaults database. * If the menu is already mapped and is not sticked to the * root window, it will be unmapped. * * Side effects: * The menu may be remade. * * Notes: * Construction of OPEN_MENU entries are delayed to the moment the * user map's them. *---------------------------------------------------------------------- */ void OpenRootMenu(WScreen * scr, int x, int y, int keyboard) { WMenu *menu = NULL; WMPropList *definition; /* static WMPropList *domain=NULL; if (!domain) { domain = WMCreatePLString("WMRootMenu"); } */ scr->flags.root_menu_changed_shortcuts = 0; scr->flags.added_workspace_menu = 0; scr->flags.added_windows_menu = 0; if (scr->root_menu && scr->root_menu->flags.mapped) { menu = scr->root_menu; if (!menu->flags.buttoned) { wMenuUnmap(menu); } else { wRaiseFrame(menu->frame->core); if (keyboard) wMenuMapAt(menu, 0, 0, True); else wMenuMapCopyAt(menu, x - menu->frame->core->width / 2, y); } return; } definition = w_global.domain.root_menu->dictionary; /* definition = PLGetDomain(domain); */ if (definition) { if (WMIsPLArray(definition)) { if (!scr->root_menu || w_global.domain.root_menu->timestamp > scr->root_menu->timestamp) { menu = configureMenu(scr, definition); if (menu) menu->timestamp = w_global.domain.root_menu->timestamp; } else menu = NULL; } else { menu = configureMenu(scr, definition); } } if (!menu) { /* menu hasn't changed or could not be read */ if (!scr->root_menu) { wMessageDialog(scr, _("Error"), _("The applications menu could not be loaded. " "Look at the console output for a detailed " "description of the errors."), _("OK"), NULL, NULL); menu = makeDefaultMenu(scr); scr->root_menu = menu; } menu = scr->root_menu; } else { /* new root menu */ if (scr->root_menu) { wMenuDestroy(scr->root_menu, True); } scr->root_menu = menu; } if (menu) { int newx, newy; if (keyboard && x == 0 && y == 0) { newx = newy = 0; } else if (keyboard && x == scr->scr_width / 2 && y == scr->scr_height / 2) { newx = x - menu->frame->core->width / 2; newy = y - menu->frame->core->height / 2; } else { newx = x - menu->frame->core->width / 2; newy = y; } wMenuMapAt(menu, newx, newy, keyboard); } if (scr->flags.root_menu_changed_shortcuts) rebindKeygrabs(scr); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/wcore.c����������������������������������������������������������������������0000644�0001750�0001750�00000011136�13431646202�013043� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "wconfig.h" #include <X11/Xlib.h> #include <X11/Xutil.h> #include <stdlib.h> #include <string.h> #include "WindowMaker.h" #include "wcore.h" /*---------------------------------------------------------------------- * wCoreCreateTopLevel-- * Creates a toplevel window used for icons, menus and dialogs. * * Returns: * The created window. *--------------------------------------------------------------------- */ WCoreWindow *wCoreCreateTopLevel(WScreen *screen, int x, int y, int width, int height, int bwidth, int depth, Visual *visual, Colormap colormap, WMPixel border_pixel) { WCoreWindow *core; int vmask; XSetWindowAttributes attribs; core = wmalloc(sizeof(WCoreWindow)); vmask = CWBorderPixel | CWCursor | CWEventMask | CWOverrideRedirect | CWColormap; attribs.override_redirect = True; attribs.cursor = wPreferences.cursor[WCUR_NORMAL]; attribs.background_pixmap = None; attribs.background_pixel = screen->black_pixel; attribs.border_pixel = border_pixel; attribs.event_mask = SubstructureRedirectMask | ButtonPressMask | ButtonReleaseMask | ButtonMotionMask | ExposureMask | EnterWindowMask | LeaveWindowMask; attribs.colormap = colormap; if (wPreferences.use_saveunders) { vmask |= CWSaveUnder; attribs.save_under = True; } core->window = XCreateWindow(dpy, screen->root_win, x, y, width, height, bwidth, depth, CopyFromParent, visual, vmask, &attribs); core->width = width; core->height = height; core->screen_ptr = screen; core->descriptor.self = core; XClearWindow(dpy, core->window); XSaveContext(dpy, core->window, w_global.context.client_win, (XPointer) & core->descriptor); return core; } /*---------------------------------------------------------------------- * wCoreCreate-- * Creates a brand new child window. * The window will have a border width of 0 and color is black. * * Returns: * A initialized core window structure. * * Side effects: * A window context for the created window is saved. * * Notes: * The event mask is initialized to a default value. *--------------------------------------------------------------------- */ WCoreWindow *wCoreCreate(WCoreWindow *parent, int x, int y, int width, int height) { WCoreWindow *core; int vmask; XSetWindowAttributes attribs; core = wmalloc(sizeof(WCoreWindow)); vmask = CWBorderPixel | CWCursor | CWEventMask | CWColormap; attribs.cursor = wPreferences.cursor[WCUR_NORMAL]; attribs.background_pixmap = None; attribs.background_pixel = parent->screen_ptr->black_pixel; attribs.event_mask = KeyPressMask | KeyReleaseMask | ButtonPressMask | ButtonReleaseMask | ButtonMotionMask | ExposureMask | EnterWindowMask | LeaveWindowMask; attribs.colormap = parent->screen_ptr->w_colormap; core->window = XCreateWindow(dpy, parent->window, x, y, width, height, 0, parent->screen_ptr->w_depth, CopyFromParent, parent->screen_ptr->w_visual, vmask, &attribs); core->width = width; core->height = height; core->screen_ptr = parent->screen_ptr; core->descriptor.self = core; XSaveContext(dpy, core->window, w_global.context.client_win, (XPointer) & core->descriptor); return core; } void wCoreDestroy(WCoreWindow * core) { if (core->stacking) wfree(core->stacking); XDeleteContext(dpy, core->window, w_global.context.client_win); XDestroyWindow(dpy, core->window); wfree(core); } void wCoreConfigure(WCoreWindow * core, int req_x, int req_y, int req_w, int req_h) { XWindowChanges xwc; unsigned int mask; mask = CWX | CWY; xwc.x = req_x; xwc.y = req_y; if (req_w <= 0) req_w = core->width; if (req_h <= 0) req_h = core->height; if (req_w != core->width || req_h != core->height) { mask |= CWWidth | CWHeight; xwc.width = req_w; xwc.height = req_h; core->width = req_w; core->height = req_h; } XConfigureWindow(dpy, core->window, mask, &xwc); } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/startup.c��������������������������������������������������������������������0000644�0001750�0001750�00000060331�13431646202�013427� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2003 Alfredo K. Kojima * Copyright (c) 1998-2003 Dan Pascu * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "wconfig.h" #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <errno.h> #include <signal.h> #include <sys/wait.h> #ifdef __FreeBSD__ #include <sys/signal.h> #endif #include <X11/Xlib.h> #include <X11/Xresource.h> #include <X11/Xutil.h> #include <X11/cursorfont.h> #include <X11/Xproto.h> #include <X11/keysym.h> #ifdef USE_XSHAPE #include <X11/extensions/shape.h> #endif #ifdef KEEP_XKB_LOCK_STATUS #include <X11/XKBlib.h> #endif #ifdef USE_RANDR #include <X11/extensions/Xrandr.h> #endif #include "WindowMaker.h" #include "GNUstep.h" #include "texture.h" #include "screen.h" #include "window.h" #include "actions.h" #include "client.h" #include "main.h" #include "startup.h" #include "dock.h" #include "workspace.h" #include "keybind.h" #include "framewin.h" #include "session.h" #include "defaults.h" #include "properties.h" #include "dialog.h" #include "wmspec.h" #include "event.h" #include "switchmenu.h" #ifdef USE_DOCK_XDND #include "xdnd.h" #endif #include "xutil.h" /* for SunOS */ #ifndef SA_RESTART # define SA_RESTART 0 #endif /* Just in case, for weirdo systems */ #ifndef SA_NODEFER # define SA_NODEFER 0 #endif /***** Local *****/ static WScreen **wScreen = NULL; static unsigned int _NumLockMask = 0; static unsigned int _ScrollLockMask = 0; static void manageAllWindows(WScreen * scr, int crashed); static int catchXError(Display * dpy, XErrorEvent * error) { char buffer[MAXLINE]; /* ignore some errors */ if (error->resourceid != None && ((error->error_code == BadDrawable && error->request_code == X_GetGeometry) || (error->error_code == BadMatch && (error->request_code == X_SetInputFocus)) || (error->error_code == BadWindow) /* && (error->request_code == X_GetWindowAttributes || error->request_code == X_SetInputFocus || error->request_code == X_ChangeWindowAttributes || error->request_code == X_GetProperty || error->request_code == X_ChangeProperty || error->request_code == X_QueryTree || error->request_code == X_GrabButton || error->request_code == X_UngrabButton || error->request_code == X_SendEvent || error->request_code == X_ConfigureWindow)) */ || (error->request_code == X_InstallColormap))) { return 0; } FormatXError(dpy, error, buffer, MAXLINE); wwarning(_("internal X error: %s"), buffer); return -1; } /* *---------------------------------------------------------------------- * handleXIO- * Handle X shutdowns and other stuff. *---------------------------------------------------------------------- */ static int handleXIO(Display * xio_dpy) { /* Parameter not used, but tell the compiler that it is ok */ (void) xio_dpy; dpy = NULL; Exit(0); return 0; } /* *---------------------------------------------------------------------- * handleExitSig-- * User generated exit signal handler. *---------------------------------------------------------------------- */ static RETSIGTYPE handleExitSig(int sig) { sigset_t sigs; sigfillset(&sigs); sigprocmask(SIG_BLOCK, &sigs, NULL); if (sig == SIGUSR1) { wwarning("got signal %i - restarting", sig); SIG_WCHANGE_STATE(WSTATE_NEED_RESTART); } else if (sig == SIGUSR2) { wwarning("got signal %i - rereading defaults", sig); SIG_WCHANGE_STATE(WSTATE_NEED_REREAD); } else if (sig == SIGTERM || sig == SIGINT || sig == SIGHUP) { wwarning("got signal %i - exiting...", sig); SIG_WCHANGE_STATE(WSTATE_NEED_EXIT); } sigprocmask(SIG_UNBLOCK, &sigs, NULL); DispatchEvent(NULL); /* Dispatch events immediately. */ } /* Dummy signal handler */ static void dummyHandler(int sig) { /* Parameter is not used, but tell the compiler that it is ok */ (void) sig; } /* *---------------------------------------------------------------------- * handleSig-- * general signal handler. Exits the program gently. *---------------------------------------------------------------------- */ static RETSIGTYPE handleSig(int sig) { wfatal("got signal %i", sig); /* Setting the signal behaviour back to default and then reraising the * signal is a cleaner way to make program exit and core dump than calling * abort(), since it correctly returns from the signal handler and sets * the flags accordingly. -Dan */ if (sig == SIGSEGV || sig == SIGFPE || sig == SIGBUS || sig == SIGILL || sig == SIGABRT) { signal(sig, SIG_DFL); kill(getpid(), sig); return; } wAbort(0); } static RETSIGTYPE buryChild(int foo) { pid_t pid; int status; int save_errno = errno; sigset_t sigs; /* Parameter not used, but tell the compiler that it is ok */ (void) foo; sigfillset(&sigs); /* Block signals so that NotifyDeadProcess() doesn't get fux0red */ sigprocmask(SIG_BLOCK, &sigs, NULL); /* R.I.P. */ /* If 2 or more kids exit in a small time window, before this handler gets * the chance to get invoked, the SIGCHLD signals will be merged and only * one SIGCHLD signal will be sent to us. We use a while loop to get all * exited child status because we can't count on the number of SIGCHLD * signals to know exactly how many kids have exited. -Dan */ while ((pid = waitpid(-1, &status, WNOHANG)) > 0 || (pid < 0 && errno == EINTR)) { NotifyDeadProcess(pid, WEXITSTATUS(status)); } sigprocmask(SIG_UNBLOCK, &sigs, NULL); errno = save_errno; } static void getOffendingModifiers(void) { int i; XModifierKeymap *modmap; KeyCode nlock, slock; static int mask_table[8] = { ShiftMask, LockMask, ControlMask, Mod1Mask, Mod2Mask, Mod3Mask, Mod4Mask, Mod5Mask }; nlock = XKeysymToKeycode(dpy, XK_Num_Lock); slock = XKeysymToKeycode(dpy, XK_Scroll_Lock); /* * Find out the masks for the NumLock and ScrollLock modifiers, * so that we can bind the grabs for when they are enabled too. */ modmap = XGetModifierMapping(dpy); if (modmap != NULL && modmap->max_keypermod > 0) { for (i = 0; i < 8 * modmap->max_keypermod; i++) { if (modmap->modifiermap[i] == nlock && nlock != 0) _NumLockMask = mask_table[i / modmap->max_keypermod]; else if (modmap->modifiermap[i] == slock && slock != 0) _ScrollLockMask = mask_table[i / modmap->max_keypermod]; } } if (modmap) XFreeModifiermap(modmap); } #ifdef NUMLOCK_HACK void wHackedGrabKey(int keycode, unsigned int modifiers, Window grab_window, Bool owner_events, int pointer_mode, int keyboard_mode) { if (modifiers == AnyModifier) return; /* grab all combinations of the modifier with CapsLock, NumLock and * ScrollLock. How much memory/CPU does such a monstrosity consume * in the server? */ if (_NumLockMask) XGrabKey(dpy, keycode, modifiers | _NumLockMask, grab_window, owner_events, pointer_mode, keyboard_mode); if (_ScrollLockMask) XGrabKey(dpy, keycode, modifiers | _ScrollLockMask, grab_window, owner_events, pointer_mode, keyboard_mode); if (_NumLockMask && _ScrollLockMask) XGrabKey(dpy, keycode, modifiers | _NumLockMask | _ScrollLockMask, grab_window, owner_events, pointer_mode, keyboard_mode); if (_NumLockMask) XGrabKey(dpy, keycode, modifiers | _NumLockMask | LockMask, grab_window, owner_events, pointer_mode, keyboard_mode); if (_ScrollLockMask) XGrabKey(dpy, keycode, modifiers | _ScrollLockMask | LockMask, grab_window, owner_events, pointer_mode, keyboard_mode); if (_NumLockMask && _ScrollLockMask) XGrabKey(dpy, keycode, modifiers | _NumLockMask | _ScrollLockMask | LockMask, grab_window, owner_events, pointer_mode, keyboard_mode); /* phew, I guess that's all, right? */ } #endif void wHackedGrabButton(unsigned int button, unsigned int modifiers, Window grab_window, Bool owner_events, unsigned int event_mask, int pointer_mode, int keyboard_mode, Window confine_to, Cursor cursor) { XGrabButton(dpy, button, modifiers, grab_window, owner_events, event_mask, pointer_mode, keyboard_mode, confine_to, cursor); if (modifiers == AnyModifier) return; XGrabButton(dpy, button, modifiers | LockMask, grab_window, owner_events, event_mask, pointer_mode, keyboard_mode, confine_to, cursor); #ifdef NUMLOCK_HACK /* same as above, but for mouse buttons */ if (_NumLockMask) XGrabButton(dpy, button, modifiers | _NumLockMask, grab_window, owner_events, event_mask, pointer_mode, keyboard_mode, confine_to, cursor); if (_ScrollLockMask) XGrabButton(dpy, button, modifiers | _ScrollLockMask, grab_window, owner_events, event_mask, pointer_mode, keyboard_mode, confine_to, cursor); if (_NumLockMask && _ScrollLockMask) XGrabButton(dpy, button, modifiers | _ScrollLockMask | _NumLockMask, grab_window, owner_events, event_mask, pointer_mode, keyboard_mode, confine_to, cursor); if (_NumLockMask) XGrabButton(dpy, button, modifiers | _NumLockMask | LockMask, grab_window, owner_events, event_mask, pointer_mode, keyboard_mode, confine_to, cursor); if (_ScrollLockMask) XGrabButton(dpy, button, modifiers | _ScrollLockMask | LockMask, grab_window, owner_events, event_mask, pointer_mode, keyboard_mode, confine_to, cursor); if (_NumLockMask && _ScrollLockMask) XGrabButton(dpy, button, modifiers | _ScrollLockMask | _NumLockMask | LockMask, grab_window, owner_events, event_mask, pointer_mode, keyboard_mode, confine_to, cursor); #endif /* NUMLOCK_HACK */ } WScreen *wScreenWithNumber(int i) { assert(i < w_global.screen_count); return wScreen[i]; } WScreen *wScreenForRootWindow(Window window) { int i; if (w_global.screen_count == 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 < w_global.screen_count; i++) if (wScreen[i]->root_win == window) return wScreen[i]; return wScreenForWindow(window); } WScreen *wScreenForWindow(Window window) { XWindowAttributes attr; if (w_global.screen_count == 1) return wScreen[0]; if (XGetWindowAttributes(dpy, window, &attr)) return wScreenForRootWindow(attr.root); return NULL; } static char *atomNames[] = { "WM_STATE", "WM_CHANGE_STATE", "WM_PROTOCOLS", "WM_TAKE_FOCUS", "WM_DELETE_WINDOW", "WM_SAVE_YOURSELF", "WM_CLIENT_LEADER", "WM_COLORMAP_WINDOWS", "WM_COLORMAP_NOTIFY", "_WINDOWMAKER_MENU", "_WINDOWMAKER_STATE", "_WINDOWMAKER_WM_PROTOCOLS", "_WINDOWMAKER_WM_FUNCTION", "_WINDOWMAKER_NOTICEBOARD", "_WINDOWMAKER_COMMAND", "_WINDOWMAKER_ICON_SIZE", "_WINDOWMAKER_ICON_TILE", GNUSTEP_WM_ATTR_NAME, GNUSTEP_WM_MINIATURIZE_WINDOW, GNUSTEP_TITLEBAR_STATE, "_GTK_APPLICATION_OBJECT_PATH", "WM_IGNORE_FOCUS_EVENTS" }; /* *---------------------------------------------------------- * StartUp-- * starts the window manager and setup global data. * Called from main() at startup. * * Side effects: * global data declared in main.c is initialized *---------------------------------------------------------- */ void StartUp(Bool defaultScreenOnly) { struct sigaction sig_action; int i, j, max; char **formats; Atom atom[wlengthof(atomNames)]; /* * Ignore CapsLock in modifiers */ w_global.shortcut.modifiers_mask = 0xff & ~LockMask; getOffendingModifiers(); /* * Ignore NumLock and ScrollLock too */ w_global.shortcut.modifiers_mask &= ~(_NumLockMask | _ScrollLockMask); memset(&wKeyBindings, 0, sizeof(wKeyBindings)); w_global.context.client_win = XUniqueContext(); w_global.context.app_win = XUniqueContext(); w_global.context.stack = XUniqueContext(); /* _XA_VERSION = XInternAtom(dpy, "VERSION", False); */ #ifdef HAVE_XINTERNATOMS XInternAtoms(dpy, atomNames, wlengthof(atomNames), False, atom); #else { int i; for (i = 0; i < wlengthof(atomNames); i++) atom[i] = XInternAtom(dpy, atomNames[i], False); } #endif w_global.atom.wm.state = atom[0]; w_global.atom.wm.change_state = atom[1]; w_global.atom.wm.protocols = atom[2]; w_global.atom.wm.take_focus = atom[3]; w_global.atom.wm.delete_window = atom[4]; w_global.atom.wm.save_yourself = atom[5]; w_global.atom.wm.client_leader = atom[6]; w_global.atom.wm.colormap_windows = atom[7]; w_global.atom.wm.colormap_notify = atom[8]; w_global.atom.wmaker.menu = atom[9]; w_global.atom.wmaker.state = atom[10]; w_global.atom.wmaker.wm_protocols = atom[11]; w_global.atom.wmaker.wm_function = atom[12]; w_global.atom.wmaker.noticeboard = atom[13]; w_global.atom.wmaker.command = atom[14]; w_global.atom.wmaker.icon_size = atom[15]; w_global.atom.wmaker.icon_tile = atom[16]; w_global.atom.gnustep.wm_attr = atom[17]; w_global.atom.gnustep.wm_miniaturize_window = atom[18]; w_global.atom.gnustep.titlebar_state = atom[19]; w_global.atom.desktop.gtk_object_path = atom[20]; w_global.atom.wm.ignore_focus_events = atom[21]; #ifdef USE_DOCK_XDND wXDNDInitializeAtoms(); #endif /* cursors */ wPreferences.cursor[WCUR_NORMAL] = None; /* inherit from root */ wPreferences.cursor[WCUR_ROOT] = XCreateFontCursor(dpy, XC_left_ptr); wPreferences.cursor[WCUR_ARROW] = XCreateFontCursor(dpy, XC_top_left_arrow); wPreferences.cursor[WCUR_MOVE] = XCreateFontCursor(dpy, XC_fleur); wPreferences.cursor[WCUR_RESIZE] = XCreateFontCursor(dpy, XC_sizing); wPreferences.cursor[WCUR_TOPLEFTRESIZE] = XCreateFontCursor(dpy, XC_top_left_corner); wPreferences.cursor[WCUR_TOPRIGHTRESIZE] = XCreateFontCursor(dpy, XC_top_right_corner); wPreferences.cursor[WCUR_BOTTOMLEFTRESIZE] = XCreateFontCursor(dpy, XC_bottom_left_corner); wPreferences.cursor[WCUR_BOTTOMRIGHTRESIZE] = XCreateFontCursor(dpy, XC_bottom_right_corner); wPreferences.cursor[WCUR_VERTICALRESIZE] = XCreateFontCursor(dpy, XC_sb_v_double_arrow); wPreferences.cursor[WCUR_HORIZONRESIZE] = XCreateFontCursor(dpy, XC_sb_h_double_arrow); wPreferences.cursor[WCUR_WAIT] = XCreateFontCursor(dpy, XC_watch); wPreferences.cursor[WCUR_QUESTION] = XCreateFontCursor(dpy, XC_question_arrow); wPreferences.cursor[WCUR_TEXT] = XCreateFontCursor(dpy, XC_xterm); /* odd name??? */ wPreferences.cursor[WCUR_SELECT] = XCreateFontCursor(dpy, XC_cross); Pixmap cur = XCreatePixmap(dpy, DefaultRootWindow(dpy), 16, 16, 1); GC gc = XCreateGC(dpy, cur, 0, NULL); XColor black; memset(&black, 0, sizeof(XColor)); XSetForeground(dpy, gc, 0); XFillRectangle(dpy, cur, gc, 0, 0, 16, 16); XFreeGC(dpy, gc); wPreferences.cursor[WCUR_EMPTY] = XCreatePixmapCursor(dpy, cur, cur, &black, &black, 0, 0); XFreePixmap(dpy, cur); /* emergency exit... */ sig_action.sa_handler = handleSig; sigemptyset(&sig_action.sa_mask); sig_action.sa_flags = SA_RESTART; sigaction(SIGQUIT, &sig_action, NULL); /* instead of catching these, we let the default handler abort the * program. The new monitor process will take appropriate action * when it detects the crash. sigaction(SIGSEGV, &sig_action, NULL); sigaction(SIGBUS, &sig_action, NULL); sigaction(SIGFPE, &sig_action, NULL); sigaction(SIGABRT, &sig_action, NULL); */ sig_action.sa_handler = handleExitSig; /* Here we set SA_RESTART for safety, because SIGUSR1 may not be handled * immediately. -Dan */ sig_action.sa_flags = SA_RESTART; sigaction(SIGTERM, &sig_action, NULL); sigaction(SIGINT, &sig_action, NULL); sigaction(SIGHUP, &sig_action, NULL); sigaction(SIGUSR1, &sig_action, NULL); sigaction(SIGUSR2, &sig_action, NULL); /* ignore dead pipe */ /* Because POSIX mandates that only signal with handlers are reset * across an exec*(), we do not want to propagate ignoring SIGPIPEs * to children. Hence the dummy handler. * Philippe Troin <phil@fifi.org> */ sig_action.sa_handler = &dummyHandler; sig_action.sa_flags = SA_RESTART; sigaction(SIGPIPE, &sig_action, NULL); /* handle dead children */ sig_action.sa_handler = buryChild; sig_action.sa_flags = SA_NOCLDSTOP | SA_RESTART; sigaction(SIGCHLD, &sig_action, NULL); /* Now we unblock all signals, that may have been blocked by the parent * who exec()-ed us. This can happen for example if Window Maker crashes * and restarts itself or another window manager from the signal handler. * In this case, the new process inherits the blocked signal mask and * will no longer react to that signal, until unblocked. * This is because the signal handler of the process who crashed (parent) * didn't return, and the signal remained blocked. -Dan */ sigfillset(&sig_action.sa_mask); sigprocmask(SIG_UNBLOCK, &sig_action.sa_mask, NULL); /* handle X shutdowns a such */ XSetIOErrorHandler(handleXIO); /* set hook for out event dispatcher in WINGs event dispatcher */ WMHookEventHandler(DispatchEvent); /* initialize defaults stuff */ w_global.domain.wmaker = wDefaultsInitDomain("WindowMaker", True); if (!w_global.domain.wmaker->dictionary) wwarning(_("could not read domain \"%s\" from defaults database"), "WindowMaker"); /* read defaults that don't change until a restart and are * screen independent */ wReadStaticDefaults(w_global.domain.wmaker ? w_global.domain.wmaker->dictionary : NULL); /* check sanity of some values */ if (wPreferences.icon_size < 16) { wwarning(_("icon size is configured to %i, but it's too small. Using 16 instead"), wPreferences.icon_size); wPreferences.icon_size = 16; } /* init other domains */ w_global.domain.root_menu = wDefaultsInitDomain("WMRootMenu", False); if (!w_global.domain.root_menu->dictionary) wwarning(_("could not read domain \"%s\" from defaults database"), "WMRootMenu"); wDefaultsMergeGlobalMenus(w_global.domain.root_menu); w_global.domain.window_attr = wDefaultsInitDomain("WMWindowAttributes", True); if (!w_global.domain.window_attr->dictionary) wwarning(_("could not read domain \"%s\" from defaults database"), "WMWindowAttributes"); XSetErrorHandler((XErrorHandler) catchXError); #ifdef USE_XSHAPE /* ignore j */ w_global.xext.shape.supported = XShapeQueryExtension(dpy, &w_global.xext.shape.event_base, &j); #endif #ifdef USE_RANDR w_global.xext.randr.supported = XRRQueryExtension(dpy, &w_global.xext.randr.event_base, &j); #endif #ifdef KEEP_XKB_LOCK_STATUS w_global.xext.xkb.supported = XkbQueryExtension(dpy, NULL, &w_global.xext.xkb.event_base, NULL, NULL, NULL); if (wPreferences.modelock && !w_global.xext.xkb.supported) { wwarning(_("XKB is not supported. KbdModeLock is automatically disabled.")); wPreferences.modelock = 0; } #endif if (defaultScreenOnly) max = 1; else max = ScreenCount(dpy); wScreen = wmalloc(sizeof(WScreen *) * max); w_global.screen_count = 0; /* Check if TIFF images are supported */ formats = RSupportedFileFormats(); if (formats) { for (i = 0; formats[i] != NULL; i++) { if (strcmp(formats[i], "TIFF") == 0) { wPreferences.supports_tiff = 1; break; } } } /* manage the screens */ for (j = 0; j < max; j++) { if (defaultScreenOnly || max == 1) { wScreen[w_global.screen_count] = wScreenInit(DefaultScreen(dpy)); if (!wScreen[w_global.screen_count]) { wfatal(_("it seems that there is already a window manager running")); Exit(1); } } else { wScreen[w_global.screen_count] = wScreenInit(j); if (!wScreen[w_global.screen_count]) { wwarning(_("could not manage screen %i"), j); continue; } } w_global.screen_count++; } InitializeSwitchMenu(); /* initialize/restore state for the screens */ for (j = 0; j < w_global.screen_count; j++) { int lastDesktop; lastDesktop = wNETWMGetCurrentDesktopFromHint(wScreen[j]); wScreenRestoreState(wScreen[j]); /* manage all windows that were already here before us */ if (!wPreferences.flags.nodock && wScreen[j]->dock) wScreen[j]->last_dock = wScreen[j]->dock; manageAllWindows(wScreen[j], wPreferences.flags.restarting == 2); /* restore saved menus */ wMenuRestoreState(wScreen[j]); /* If we're not restarting, restore session */ if (wPreferences.flags.restarting == 0 && !wPreferences.flags.norestore) wSessionRestoreState(wScreen[j]); if (!wPreferences.flags.noautolaunch) { /* auto-launch apps */ if (!wPreferences.flags.nodock && wScreen[j]->dock) { wScreen[j]->last_dock = wScreen[j]->dock; wDockDoAutoLaunch(wScreen[j]->dock, 0); } /* auto-launch apps in clip */ if (!wPreferences.flags.noclip) { int i; for (i = 0; i < wScreen[j]->workspace_count; i++) { if (wScreen[j]->workspaces[i]->clip) { wScreen[j]->last_dock = wScreen[j]->workspaces[i]->clip; wDockDoAutoLaunch(wScreen[j]->workspaces[i]->clip, i); } } } /* auto-launch apps in drawers */ if (!wPreferences.flags.nodrawer) { WDrawerChain *dc; for (dc = wScreen[j]->drawers; dc; dc = dc->next) { wScreen[j]->last_dock = dc->adrawer; wDockDoAutoLaunch(dc->adrawer, 0); } } } /* go to workspace where we were before restart */ if (lastDesktop >= 0) wWorkspaceForceChange(wScreen[j], lastDesktop); else wSessionRestoreLastWorkspace(wScreen[j]); } if (w_global.screen_count == 0) { wfatal(_("could not manage any screen")); Exit(1); } #ifndef HAVE_INOTIFY /* setup defaults file polling */ if (!wPreferences.flags.noupdates) WMAddTimerHandler(3000, wDefaultsCheckDomains, NULL); #endif } static Bool windowInList(Window window, Window * list, int count) { for (; count >= 0; count--) { if (window == list[count]) return True; } return False; } /* *----------------------------------------------------------------------- * manageAllWindows-- * Manages all windows in the screen. * * Notes: * Called when the wm is being started. * No events can be processed while the windows are being * reparented/managed. *----------------------------------------------------------------------- */ static void manageAllWindows(WScreen * scr, int crashRecovery) { Window root, parent; Window *children; unsigned int nchildren; unsigned int i, j; WWindow *wwin; XGrabServer(dpy); XQueryTree(dpy, scr->root_win, &root, &parent, &children, &nchildren); scr->flags.startup = 1; /* first remove all icon windows */ for (i = 0; i < nchildren; i++) { XWMHints *wmhints; if (children[i] == None) continue; wmhints = XGetWMHints(dpy, children[i]); if (wmhints && (wmhints->flags & IconWindowHint)) { for (j = 0; j < nchildren; j++) { if (children[j] == wmhints->icon_window) { XFree(wmhints); wmhints = NULL; children[j] = None; break; } } } if (wmhints) { XFree(wmhints); } } for (i = 0; i < nchildren; i++) { if (children[i] == None) continue; wwin = wManageWindow(scr, children[i]); if (wwin) { /* apply states got from WSavedState */ /* shaded + minimized is not restored correctly */ if (wwin->flags.shaded) { wwin->flags.shaded = 0; wShadeWindow(wwin); } if (wwin->flags.miniaturized && (wwin->transient_for == None || wwin->transient_for == scr->root_win || !windowInList(wwin->transient_for, children, nchildren))) { wwin->flags.skip_next_animation = 1; wwin->flags.miniaturized = 0; wIconifyWindow(wwin); } else { wClientSetState(wwin, NormalState, None); } if (crashRecovery) { int border; border = (!HAS_BORDER(wwin) ? 0 : scr->frame_border_width); wWindowMove(wwin, wwin->frame_x - border, wwin->frame_y - border - (wwin->frame->titlebar ? wwin->frame->titlebar->height : 0)); } } } 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; while (XPending(dpy)) { XEvent ev; WMNextEvent(dpy, &ev); WMHandleEvent(&ev); } scr->last_workspace = 0; wWorkspaceForceChange(scr, 0); if (!wPreferences.flags.noclip) wDockShowIcons(scr->workspaces[scr->current_workspace]->clip); scr->flags.startup2 = 0; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/session.c��������������������������������������������������������������������0000644�0001750�0001750�00000033043�13431646202�013410� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* session.c - session state handling and R6 style session management * * Copyright (c) 1998-2003 Dan Pascu * Copyright (c) 1998-2003 Alfredo Kojima * * Window Maker window manager * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ /* * * If defined(XSMP_ENABLED) and session manager is running then * do normal stuff * else * do pre-R6 session management stuff (save window state and relaunch) * * When doing a checkpoint: * * = Without XSMP * Open "Stop"/status Dialog * Send SAVE_YOURSELF to clients and wait for reply * Save restart info * Save state of clients * * = With XSMP * Send checkpoint request to sm * * When exiting: * ------------- * * = Without XSMP * * Open "Exit Now"/status Dialog * Send SAVE_YOURSELF to clients and wait for reply * Save restart info * Save state of clients * Send DELETE to all clients * When no more clients are left or user hit "Exit Now", exit * * = With XSMP * * Send Shutdown request to session manager * if SaveYourself message received, save state of clients * if the Die message is received, exit. */ #include "wconfig.h" #include <X11/Xlib.h> #include <X11/Xutil.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <strings.h> #include <unistd.h> #include <time.h> #include "WindowMaker.h" #include "screen.h" #include "window.h" #include "client.h" #include "session.h" #include "framewin.h" #include "workspace.h" #include "main.h" #include "properties.h" #include "application.h" #include "appicon.h" #include "dock.h" #include "misc.h" #include <WINGs/WUtil.h> static WMPropList *sApplications = NULL; static WMPropList *sCommand; static WMPropList *sName; static WMPropList *sHost; static WMPropList *sWorkspace; static WMPropList *sShaded; static WMPropList *sMiniaturized; static WMPropList *sHidden; static WMPropList *sGeometry; static WMPropList *sShortcutMask; static WMPropList *sDock; static WMPropList *sYes, *sNo; static void make_keys(void) { if (sApplications != NULL) return; sApplications = WMCreatePLString("Applications"); sCommand = WMCreatePLString("Command"); sName = WMCreatePLString("Name"); sHost = WMCreatePLString("Host"); sWorkspace = WMCreatePLString("Workspace"); sShaded = WMCreatePLString("Shaded"); sMiniaturized = WMCreatePLString("Miniaturized"); sHidden = WMCreatePLString("Hidden"); sGeometry = WMCreatePLString("Geometry"); sDock = WMCreatePLString("Dock"); sShortcutMask = WMCreatePLString("ShortcutMask"); sYes = WMCreatePLString("Yes"); sNo = WMCreatePLString("No"); } static int getBool(WMPropList * value) { char *val; if (!WMIsPLString(value)) { return 0; } val = WMGetFromPLString(value); if (val == NULL) return 0; if ((val[1] == '\0' && (val[0] == 'y' || val[0] == 'Y')) || strcasecmp(val, "YES") == 0) { return 1; } else if ((val[1] == '\0' && (val[0] == 'n' || val[0] == 'N')) || strcasecmp(val, "NO") == 0) { return 0; } else { int i; if (sscanf(val, "%i", &i) == 1) { return (i != 0); } else { wwarning(_("can't convert \"%s\" to boolean"), val); return 0; } } } static unsigned getInt(WMPropList * value) { char *val; unsigned n; if (!WMIsPLString(value)) return 0; val = WMGetFromPLString(value); if (!val) return 0; if (sscanf(val, "%u", &n) != 1) return 0; return n; } static WMPropList *makeWindowState(WWindow * wwin, WApplication * wapp) { WScreen *scr = wwin->screen_ptr; Window win; int i; unsigned mask; char *class, *instance, *command = NULL, buffer[512]; WMPropList *win_state, *cmd, *name, *workspace; WMPropList *shaded, *miniaturized, *hidden, *geometry; WMPropList *dock, *shortcut; if (wwin->orig_main_window != None && wwin->orig_main_window != wwin->client_win) win = wwin->orig_main_window; else win = wwin->client_win; command = GetCommandForWindow(win); if (!command) return NULL; if (PropGetWMClass(win, &class, &instance)) { if (class && instance) snprintf(buffer, sizeof(buffer), "%s.%s", instance, class); else if (instance) snprintf(buffer, sizeof(buffer), "%s", instance); else if (class) snprintf(buffer, sizeof(buffer), ".%s", class); else snprintf(buffer, sizeof(buffer), "."); name = WMCreatePLString(buffer); cmd = WMCreatePLString(command); workspace = WMCreatePLString(scr->workspaces[wwin->frame->workspace]->name); shaded = wwin->flags.shaded ? sYes : sNo; miniaturized = wwin->flags.miniaturized ? sYes : sNo; hidden = wwin->flags.hidden ? sYes : sNo; snprintf(buffer, sizeof(buffer), "%ix%i+%i+%i", wwin->client.width, wwin->client.height, wwin->frame_x, wwin->frame_y); geometry = WMCreatePLString(buffer); for (mask = 0, i = 0; i < MAX_WINDOW_SHORTCUTS; i++) { if (scr->shortcutWindows[i] != NULL && WMGetFirstInArray(scr->shortcutWindows[i], wwin) != WANotFound) mask |= 1 << i; } snprintf(buffer, sizeof(buffer), "%u", mask); shortcut = WMCreatePLString(buffer); win_state = WMCreatePLDictionary(sName, name, sCommand, cmd, sWorkspace, workspace, sShaded, shaded, sMiniaturized, miniaturized, sHidden, hidden, sShortcutMask, shortcut, sGeometry, geometry, NULL); WMReleasePropList(name); WMReleasePropList(cmd); WMReleasePropList(workspace); WMReleasePropList(geometry); WMReleasePropList(shortcut); if (wapp && wapp->app_icon && wapp->app_icon->dock) { int i; char *name = NULL; if (wapp->app_icon->dock == scr->dock) name = "Dock"; /* Try the clips */ if (name == NULL) { for (i = 0; i < scr->workspace_count; i++) if (scr->workspaces[i]->clip == wapp->app_icon->dock) break; if (i < scr->workspace_count) name = scr->workspaces[i]->name; } /* Try the drawers */ if (name == NULL) { WDrawerChain *dc; for (dc = scr->drawers; dc != NULL; dc = dc->next) { if (dc->adrawer == wapp->app_icon->dock) break; } assert(dc != NULL); name = dc->adrawer->icon_array[0]->wm_instance; } dock = WMCreatePLString(name); WMPutInPLDictionary(win_state, sDock, dock); WMReleasePropList(dock); } } else { win_state = NULL; } if (instance) free(instance); if (class) free(class); if (command) wfree(command); return win_state; } void wSessionSaveState(WScreen * scr) { WWindow *wwin = scr->focused_window; WMPropList *win_info, *wks; WMPropList *list = NULL; WMArray *wapp_list = NULL; make_keys(); if (!scr->session_state) { scr->session_state = WMCreatePLDictionary(NULL, NULL); if (!scr->session_state) return; } list = WMCreatePLArray(NULL); wapp_list = WMCreateArray(16); while (wwin) { WApplication *wapp = wApplicationOf(wwin->main_window); Window appId = wwin->orig_main_window; if ((wwin->transient_for == None || wwin->transient_for == wwin->screen_ptr->root_win) && (WMGetFirstInArray(wapp_list, (void *)appId) == WANotFound || WFLAGP(wwin, shared_appicon)) && !WFLAGP(wwin, dont_save_session)) { /* A entry for this application was not yet saved. Save one. */ win_info = makeWindowState(wwin, wapp); if (win_info != NULL) { WMAddToPLArray(list, win_info); WMReleasePropList(win_info); /* If we were successful in saving the info for this window * add the application the window belongs to, to the * application list, so no multiple entries for the same * application are saved. */ WMAddToArray(wapp_list, (void *)appId); } } wwin = wwin->prev; } WMRemoveFromPLDictionary(scr->session_state, sApplications); WMPutInPLDictionary(scr->session_state, sApplications, list); WMReleasePropList(list); wks = WMCreatePLString(scr->workspaces[scr->current_workspace]->name); WMPutInPLDictionary(scr->session_state, sWorkspace, wks); WMReleasePropList(wks); WMFreeArray(wapp_list); } void wSessionClearState(WScreen * scr) { make_keys(); if (!scr->session_state) return; WMRemoveFromPLDictionary(scr->session_state, sApplications); WMRemoveFromPLDictionary(scr->session_state, sWorkspace); } static pid_t execCommand(WScreen *scr, char *command) { pid_t pid; char **argv; int argc; wtokensplit(command, &argv, &argc); if (!argc) { return 0; } pid = fork(); if (pid == 0) { char **args; int i; SetupEnvironment(scr); args = malloc(sizeof(char *) * (argc + 1)); if (!args) exit(111); for (i = 0; i < argc; i++) { args[i] = argv[i]; } args[argc] = NULL; execvp(argv[0], args); exit(111); } while (argc > 0) wfree(argv[--argc]); wfree(argv); return pid; } static WSavedState *getWindowState(WScreen * scr, WMPropList * win_state) { WSavedState *state = wmalloc(sizeof(WSavedState)); WMPropList *value; char *tmp; unsigned mask; int i; state->workspace = -1; value = WMGetFromPLDictionary(win_state, sWorkspace); if (value && WMIsPLString(value)) { tmp = WMGetFromPLString(value); if (sscanf(tmp, "%i", &state->workspace) != 1) { state->workspace = -1; for (i = 0; i < scr->workspace_count; i++) { if (strcmp(scr->workspaces[i]->name, tmp) == 0) { state->workspace = i; break; } } } else { state->workspace--; } } value = WMGetFromPLDictionary(win_state, sShaded); if (value != NULL) state->shaded = getBool(value); value = WMGetFromPLDictionary(win_state, sMiniaturized); if (value != NULL) state->miniaturized = getBool(value); value = WMGetFromPLDictionary(win_state, sHidden); if (value != NULL) state->hidden = getBool(value); value = WMGetFromPLDictionary(win_state, sShortcutMask); if (value != NULL) { mask = getInt(value); state->window_shortcuts = mask; } value = WMGetFromPLDictionary(win_state, sGeometry); if (value && WMIsPLString(value)) { if (!(sscanf(WMGetFromPLString(value), "%ix%i+%i+%i", &state->w, &state->h, &state->x, &state->y) == 4 && (state->w > 0 && state->h > 0))) { state->w = 0; state->h = 0; } } return state; } static inline int is_same(const char *x, const char *y) { if ((x == NULL) && (y == NULL)) return 1; if ((x == NULL) || (y == NULL)) return 0; if (strcmp(x, y) == 0) return 1; else return 0; } void wSessionRestoreState(WScreen *scr) { WSavedState *state; char *instance, *class, *command; WMPropList *win_info, *apps, *cmd, *value; pid_t pid; int i, count; WDock *dock; WAppIcon *btn = NULL; int j, n, found; char *tmp; make_keys(); if (!scr->session_state) return; WMPLSetCaseSensitive(True); apps = WMGetFromPLDictionary(scr->session_state, sApplications); if (!apps) return; count = WMGetPropListItemCount(apps); if (count == 0) return; for (i = 0; i < count; i++) { win_info = WMGetFromPLArray(apps, i); cmd = WMGetFromPLDictionary(win_info, sCommand); if (!cmd || !WMIsPLString(cmd) || !(command = WMGetFromPLString(cmd))) { continue; } value = WMGetFromPLDictionary(win_info, sName); if (!value) continue; ParseWindowName(value, &instance, &class, "session"); if (!instance && !class) continue; state = getWindowState(scr, win_info); dock = NULL; value = WMGetFromPLDictionary(win_info, sDock); if (value && WMIsPLString(value) && (tmp = WMGetFromPLString(value)) != NULL) { if (sscanf(tmp, "%i", &n) != 1) { if (!strcasecmp(tmp, "DOCK")) dock = scr->dock; /* Try the clips */ if (dock == NULL) { for (j = 0; j < scr->workspace_count; j++) { if (strcmp(scr->workspaces[j]->name, tmp) == 0) { dock = scr->workspaces[j]->clip; break; } } } if (dock == NULL) // Try the drawers { WDrawerChain *dc; for (dc = scr->drawers; dc != NULL; dc = dc->next) { if (strcmp(dc->adrawer->icon_array[0]->wm_instance, tmp) == 0) { dock = dc->adrawer; break; } } } } else { if (n == 0) { dock = scr->dock; } else if (n > 0 && n <= scr->workspace_count) { dock = scr->workspaces[n - 1]->clip; } } } found = 0; if (dock != NULL) { for (j = 0; j < dock->max_icons; j++) { btn = dock->icon_array[j]; if (btn && is_same(instance, btn->wm_instance) && is_same(class, btn->wm_class) && is_same(command, btn->command) && !btn->launching) { found = 1; break; } } } if (found) { wDockLaunchWithState(btn, state); } else if ((pid = execCommand(scr, command)) > 0) { wWindowAddSavedState(instance, class, command, pid, state); } else { wfree(state); } if (instance) wfree(instance); if (class) wfree(class); } /* clean up */ WMPLSetCaseSensitive(False); } void wSessionRestoreLastWorkspace(WScreen * scr) { WMPropList *wks; int w; char *value; make_keys(); if (!scr->session_state) return; WMPLSetCaseSensitive(True); wks = WMGetFromPLDictionary(scr->session_state, sWorkspace); if (!wks || !WMIsPLString(wks)) return; value = WMGetFromPLString(wks); if (!value) return; /* clean up */ WMPLSetCaseSensitive(False); /* Get the workspace number for the workspace name */ w = wGetWorkspaceNumber(scr, value); if (w != scr->current_workspace && w < scr->workspace_count) wWorkspaceChange(scr, w); } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/switchmenu.c�����������������������������������������������������������������0000644�0001750�0001750�00000026364�13431646202�014123� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997 Shige Abe * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "wconfig.h" #include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdint.h> #include <X11/Xlib.h> #include <X11/Xutil.h> #include "WindowMaker.h" #include "window.h" #include "actions.h" #include "client.h" #include "misc.h" #include "stacking.h" #include "workspace.h" #include "framewin.h" #include "switchmenu.h" #define IS_GNUSTEP_MENU(w) ((w)->wm_gnustep_attr && \ ((w)->wm_gnustep_attr->flags & GSWindowLevelAttr) && \ ((w)->wm_gnustep_attr->window_level == WMMainMenuWindowLevel || \ (w)->wm_gnustep_attr->window_level == WMSubmenuWindowLevel)) static int initialized = 0; static void observer(void *self, WMNotification * notif); static void wsobserver(void *self, WMNotification * notif); /* * FocusWindow * * - Needs to check if already in the right workspace before * calling wChangeWorkspace? * * Order: * Switch to correct workspace * Unshade if shaded * If iconified then deiconify else focus/raise. */ static void focusWindow(WMenu * menu, WMenuEntry * entry) { WWindow *wwin; /* Parameter not used, but tell the compiler that it is ok */ (void) menu; wwin = (WWindow *) entry->clientdata; wWindowSingleFocus(wwin); } void InitializeSwitchMenu(void) { if (!initialized) { initialized = 1; WMAddNotificationObserver(observer, NULL, WMNManaged, NULL); WMAddNotificationObserver(observer, NULL, WMNUnmanaged, NULL); WMAddNotificationObserver(observer, NULL, WMNChangedWorkspace, NULL); WMAddNotificationObserver(observer, NULL, WMNChangedState, NULL); WMAddNotificationObserver(observer, NULL, WMNChangedFocus, NULL); WMAddNotificationObserver(observer, NULL, WMNChangedStacking, NULL); WMAddNotificationObserver(observer, NULL, WMNChangedName, NULL); WMAddNotificationObserver(wsobserver, NULL, WMNWorkspaceChanged, NULL); WMAddNotificationObserver(wsobserver, NULL, WMNWorkspaceNameChanged, NULL); } } /* * * Open switch menu * */ void OpenSwitchMenu(WScreen * scr, int x, int y, int keyboard) { WMenu *switchmenu = scr->switch_menu; WWindow *wwin; if (switchmenu) { if (switchmenu->flags.mapped) { if (!switchmenu->flags.buttoned) { wMenuUnmap(switchmenu); } else { wRaiseFrame(switchmenu->frame->core); if (keyboard) wMenuMapAt(switchmenu, 0, 0, True); else wMenuMapCopyAt(switchmenu, x - switchmenu->frame->core->width / 2, y); } } else { if (keyboard && x == scr->scr_width / 2 && y == scr->scr_height / 2) { y = y - switchmenu->frame->core->height / 2; } wMenuMapAt(switchmenu, x - switchmenu->frame->core->width / 2, y, keyboard); } return; } switchmenu = wMenuCreate(scr, _("Windows"), True); scr->switch_menu = switchmenu; wwin = scr->focused_window; while (wwin) { UpdateSwitchMenu(scr, wwin, ACTION_ADD); wwin = wwin->prev; } if (switchmenu) { int newx, newy; if (!switchmenu->flags.realized) wMenuRealize(switchmenu); if (keyboard && x == 0 && y == 0) { newx = newy = 0; } else if (keyboard && x == scr->scr_width / 2 && y == scr->scr_height / 2) { newx = x - switchmenu->frame->core->width / 2; newy = y - switchmenu->frame->core->height / 2; } else { newx = x - switchmenu->frame->core->width / 2; newy = y; } wMenuMapAt(switchmenu, newx, newy, keyboard); } } static int menuIndexForWindow(WMenu * menu, WWindow * wwin, int old_pos) { int idx, move_down; if (menu->entry_no <= old_pos) return -1; for (idx = 0, move_down = 0; idx < menu->entry_no; idx++) { WWindow *tw = (WWindow *) menu->entries[idx]->clientdata; /* Is the window moving down in the menu? If so, we'll need to adjust its new index by 1. */ if (tw == wwin) move_down = 1; if (IS_OMNIPRESENT(tw) || (tw != wwin && tw->frame->workspace >= wwin->frame->workspace)) return idx - move_down; } return idx; } /* * Update switch menu */ void UpdateSwitchMenu(WScreen * scr, WWindow * wwin, int action) { WMenu *switchmenu = scr->switch_menu; WMenuEntry *entry; char title[MAX_MENU_TEXT_LENGTH + 6]; int len = sizeof(title); int i; int checkVisibility = 0; if (!wwin->screen_ptr->switch_menu) return; /* * This menu is updated under the following conditions: * * 1. When a window is created. * 2. When a window is destroyed. * * 3. When a window changes it's title. * 4. When a window changes its workspace. */ if (action == ACTION_ADD) { char *t; int idx; if (wwin->flags.internal_window || WFLAGP(wwin, skip_window_list) || IS_GNUSTEP_MENU(wwin)) { return; } if (wwin->frame->title) snprintf(title, len, "%s", wwin->frame->title); else snprintf(title, len, "%s", DEF_WINDOW_TITLE); t = ShrinkString(scr->menu_entry_font, title, MAX_WINDOWLIST_WIDTH); if (IS_OMNIPRESENT(wwin)) idx = -1; else { idx = menuIndexForWindow(switchmenu, wwin, 0); } entry = wMenuInsertCallback(switchmenu, idx, t, focusWindow, wwin); wfree(t); entry->flags.indicator = 1; entry->rtext = wmalloc(MAX_WORKSPACENAME_WIDTH + 8); if (IS_OMNIPRESENT(wwin)) snprintf(entry->rtext, MAX_WORKSPACENAME_WIDTH, "[*]"); else snprintf(entry->rtext, MAX_WORKSPACENAME_WIDTH, "[%s]", scr->workspaces[wwin->frame->workspace]->name); if (wwin->flags.hidden) { entry->flags.indicator_type = MI_HIDDEN; entry->flags.indicator_on = 1; } else if (wwin->flags.miniaturized) { entry->flags.indicator_type = MI_MINIWINDOW; entry->flags.indicator_on = 1; } else if (wwin->flags.focused) { entry->flags.indicator_type = MI_DIAMOND; entry->flags.indicator_on = 1; } else if (wwin->flags.shaded) { entry->flags.indicator_type = MI_SHADED; entry->flags.indicator_on = 1; } wMenuRealize(switchmenu); checkVisibility = 1; } else { char *t; for (i = 0; i < switchmenu->entry_no; i++) { entry = switchmenu->entries[i]; /* this is the entry that was changed */ if (entry->clientdata == wwin) { switch (action) { case ACTION_REMOVE: wMenuRemoveItem(switchmenu, i); wMenuRealize(switchmenu); checkVisibility = 1; break; case ACTION_CHANGE: if (entry->text) wfree(entry->text); if (wwin->frame->title) snprintf(title, MAX_MENU_TEXT_LENGTH, "%s", wwin->frame->title); else snprintf(title, MAX_MENU_TEXT_LENGTH, "%s", DEF_WINDOW_TITLE); t = ShrinkString(scr->menu_entry_font, title, MAX_WINDOWLIST_WIDTH); entry->text = t; wMenuRealize(switchmenu); checkVisibility = 1; break; case ACTION_CHANGE_WORKSPACE: if (entry->rtext) { int idx = -1; char *t, *rt; int it, ion; if (IS_OMNIPRESENT(wwin)) { snprintf(entry->rtext, MAX_WORKSPACENAME_WIDTH, "[*]"); } else { snprintf(entry->rtext, MAX_WORKSPACENAME_WIDTH, "[%s]", scr->workspaces[wwin->frame->workspace]->name); } rt = entry->rtext; entry->rtext = NULL; t = entry->text; entry->text = NULL; it = entry->flags.indicator_type; ion = entry->flags.indicator_on; if (!IS_OMNIPRESENT(wwin) && idx < 0) { idx = menuIndexForWindow(switchmenu, wwin, i); } wMenuRemoveItem(switchmenu, i); entry = wMenuInsertCallback(switchmenu, idx, t, focusWindow, wwin); wfree(t); entry->rtext = rt; entry->flags.indicator = 1; entry->flags.indicator_type = it; entry->flags.indicator_on = ion; } wMenuRealize(switchmenu); checkVisibility = 1; break; case ACTION_CHANGE_STATE: if (wwin->flags.hidden) { entry->flags.indicator_type = MI_HIDDEN; entry->flags.indicator_on = 1; } else if (wwin->flags.miniaturized) { entry->flags.indicator_type = MI_MINIWINDOW; entry->flags.indicator_on = 1; } else if (wwin->flags.shaded && !wwin->flags.focused) { entry->flags.indicator_type = MI_SHADED; entry->flags.indicator_on = 1; } else { entry->flags.indicator_on = wwin->flags.focused; entry->flags.indicator_type = MI_DIAMOND; } break; } break; } } } if (checkVisibility) { int tmp; tmp = switchmenu->frame->top_width + 5; /* if menu got unreachable, bring it to a visible place */ if (switchmenu->frame_x < tmp - (int)switchmenu->frame->core->width) { wMenuMove(switchmenu, tmp - (int)switchmenu->frame->core->width, switchmenu->frame_y, False); } } wMenuPaint(switchmenu); } static void UpdateSwitchMenuWorkspace(WScreen *scr, int workspace) { WMenu *menu = scr->switch_menu; int i; WWindow *wwin; if (!menu) return; for (i = 0; i < menu->entry_no; i++) { wwin = (WWindow *) menu->entries[i]->clientdata; if (wwin->frame->workspace == workspace && !IS_OMNIPRESENT(wwin)) { if (IS_OMNIPRESENT(wwin)) snprintf(menu->entries[i]->rtext, MAX_WORKSPACENAME_WIDTH, "[*]"); else snprintf(menu->entries[i]->rtext, MAX_WORKSPACENAME_WIDTH, "[%s]", scr->workspaces[wwin->frame->workspace]->name); menu->flags.realized = 0; } } if (!menu->flags.realized) wMenuRealize(menu); } static void observer(void *self, WMNotification * notif) { WWindow *wwin = (WWindow *) WMGetNotificationObject(notif); const char *name = WMGetNotificationName(notif); void *data = WMGetNotificationClientData(notif); /* Parameter not used, but tell the compiler that it is ok */ (void) self; if (!wwin) return; if (strcmp(name, WMNManaged) == 0) UpdateSwitchMenu(wwin->screen_ptr, wwin, ACTION_ADD); else if (strcmp(name, WMNUnmanaged) == 0) UpdateSwitchMenu(wwin->screen_ptr, wwin, ACTION_REMOVE); else if (strcmp(name, WMNChangedWorkspace) == 0) UpdateSwitchMenu(wwin->screen_ptr, wwin, ACTION_CHANGE_WORKSPACE); else if (strcmp(name, WMNChangedFocus) == 0) UpdateSwitchMenu(wwin->screen_ptr, wwin, ACTION_CHANGE_STATE); else if (strcmp(name, WMNChangedName) == 0) UpdateSwitchMenu(wwin->screen_ptr, wwin, ACTION_CHANGE); else if (strcmp(name, WMNChangedState) == 0) { if (strcmp((char *)data, "omnipresent") == 0) { UpdateSwitchMenu(wwin->screen_ptr, wwin, ACTION_CHANGE_WORKSPACE); } else { UpdateSwitchMenu(wwin->screen_ptr, wwin, ACTION_CHANGE_STATE); } } } static void wsobserver(void *self, WMNotification * notif) { WScreen *scr = (WScreen *) WMGetNotificationObject(notif); const char *name = WMGetNotificationName(notif); void *data = WMGetNotificationClientData(notif); /* Parameter not used, but tell the compiler that it is ok */ (void) self; if (strcmp(name, WMNWorkspaceNameChanged) == 0) { UpdateSwitchMenuWorkspace(scr, (uintptr_t)data); } else if (strcmp(name, WMNWorkspaceChanged) == 0) { } } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/window.h���������������������������������������������������������������������0000644�0001750�0001750�00000031136�13642357774�013263� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef WMWINDOW_H_ #define WMWINDOW_H_ #include <wraster.h> #include "wconfig.h" #include "GNUstep.h" #include "texture.h" #include "menu.h" #include "application.h" /* not defined in my X11 headers */ #ifndef UrgencyHint #define UrgencyHint (1L << 8) #endif #define BORDER_TOP 1 #define BORDER_BOTTOM 2 #define BORDER_LEFT 4 #define BORDER_RIGHT 8 #define BORDER_ALL (1|2|4|8) #define CLIENT_EVENTS (StructureNotifyMask | PropertyChangeMask\ | EnterWindowMask | LeaveWindowMask | ColormapChangeMask \ | FocusChangeMask | VisibilityChangeMask) typedef enum { WFM_PASSIVE, WFM_NO_INPUT, WFM_LOCALLY_ACTIVE, WFM_GLOBALLY_ACTIVE } FocusMode; /* * window attribute flags. * * Note: attributes that should apply to the application as a * whole should only access the flags from app->main_window_desc->window_flags * This is to make sure that the application doesn't have many different * values for the same option. For example, imagine xfoo, which has * foo.bar as leader and it a child window named foo.baz. If you set * StartHidden YES for foo.bar and NO for foo.baz we must *always* guarantee * that the value that will be used will be that of the leader foo.bar. * The attributes inspector must always save application wide options * in the name of the leader window, not the child. * */ /* * All flags must have their default values = 0 * * New flag scheme: * * user_flags, defined_flags * client_flags * * if defined window_flag then window_flag else client_flag * */ #define WFLAGP(wwin, FLAG) ((wwin)->defined_user_flags.FLAG \ ? (wwin)->user_flags.FLAG \ : (wwin)->client_flags.FLAG) #define WSETUFLAG(wwin, FLAG, VAL) (wwin)->user_flags.FLAG = (VAL),\ (wwin)->defined_user_flags.FLAG = 1 typedef struct { /* OpenStep */ unsigned int no_titlebar:1; /* draw titlebar? */ unsigned int no_resizable:1; unsigned int no_closable:1; unsigned int no_miniaturizable:1; unsigned int no_border:1; /* 1 pixel border around window */ #ifdef XKB_BUTTON_HINT unsigned int no_language_button:1; #endif unsigned int no_movable:1; /* decorations */ unsigned int no_resizebar:1; /* draw the bottom handle? */ unsigned int no_close_button:1; /* draw a close button? */ unsigned int no_miniaturize_button:1; /* draw an iconify button? */ unsigned int broken_close:1; /* is the close button broken? */ /* ours */ unsigned int kill_close:1; /* can't send WM_DELETE_WINDOW */ unsigned int no_shadeable:1; unsigned int omnipresent:1; unsigned int skip_window_list:1; unsigned int skip_switchpanel:1; unsigned int floating:1; /* put in WMFloatingLevel */ unsigned int sunken:1; /* put in WMSunkenLevel */ unsigned int no_bind_keys:1; /* intercept wm kbd binds * while window is focused */ unsigned int no_bind_mouse:1; /* intercept mouse events * on client area while window * is focused */ unsigned int no_hide_others:1; /* hide window when doing hideothers */ unsigned int no_appicon:1; /* make app icon */ unsigned int shared_appicon:1; unsigned int dont_move_off:1; unsigned int no_focusable:1; unsigned int focus_across_wksp:1; /* let wmaker switch workspace to follow * a focus request */ unsigned int always_user_icon:1; /* ignore client IconPixmap or * IconWindow */ unsigned int start_miniaturized:1; unsigned int start_hidden:1; unsigned int start_maximized:1; unsigned int dont_save_session:1; /* do not save app's state in session */ unsigned int full_maximize:1; /* * emulate_app_icon must be automatically disabled for apps that can * generate their own appicons and for apps that have no_appicon=1 */ unsigned int emulate_appicon:1; /* Ignore any changes to the decoration elements (titlebar, etc) */ unsigned int ignore_decoration_changes:1; } WWindowAttributes; /* * Window manager protocols that both the client as we understand. */ typedef struct { unsigned int TAKE_FOCUS:1; unsigned int DELETE_WINDOW:1; unsigned int SAVE_YOURSELF:1; /* WindowMaker specific */ unsigned int MINIATURIZE_WINDOW:1; } WProtocols; /* * Structure used for storing fake window group information */ typedef struct WFakeGroupLeader { char *identifier; Window leader; Window origLeader; int retainCount; } WFakeGroupLeader; /* * Stores client window information. Each client window has it's * structure created when it's being first mapped. */ typedef struct WWindow { struct WWindow *prev; /* window focus list */ struct WWindow *next; WScreen *screen_ptr; /* pointer to the screen structure */ WWindowAttributes user_flags; /* window attribute flags set by user */ WWindowAttributes defined_user_flags; /* mask for user_flags */ WWindowAttributes client_flags; /* window attribute flags set by app * initialized with global defaults */ struct InspectorPanel *inspector; /* pointer to attribute editor panel */ struct WFrameWindow *frame; /* the frame window */ int frame_x, frame_y; /* position of the frame in root*/ struct { int x, y; unsigned int width, height; /* original geometry of the window */ } old_geometry; /* (before things like maximize) */ struct { int x, y; unsigned int width, height; /* original geometry of the window */ } bfs_geometry; /* (before fullscreen) */ int maximus_x; /* size after Maximusizing */ int maximus_y; /* client window info */ short old_border_width; /* original border width of client_win*/ Window client_win; /* the window we're managing */ WObjDescriptor client_descriptor; /* dummy descriptor for client */ struct { int x, y; /* position of *client* relative * to root */ unsigned int width, height; /* size of the client window */ } client; XSizeHints *normal_hints; /* WM_NORMAL_HINTS */ XWMHints *wm_hints; /* WM_HINTS (optional) */ char *wm_instance; /* instance of WM_CLASS */ char *wm_class; /* class of WM_CLASS */ GNUstepWMAttributes *wm_gnustep_attr; /* GNUstep window attributes */ int state; /* state as in ICCCM */ Window transient_for; /* WM_TRANSIENT_FOR */ WFakeGroupLeader *fake_group; /* Fake group leader for grouping into * a single appicon */ Window group_id; /* the leader window of the group */ Window client_leader; /* WM_CLIENT_LEADER if not * internal_window */ Window main_window; /* main window for the application */ Window orig_main_window; /* original main window of application. * used for the shared appicon thing */ int cmap_window_no; Window *cmap_windows; /* protocols */ WProtocols protocols; /* accepted WM_PROTOCOLS */ FocusMode focus_mode; /* type of keyboard input focus */ long event_mask; /* the event mask thats selected */ /* state flags */ struct { unsigned int mapped:1; unsigned int focused:1; unsigned int miniaturized:1; unsigned int hidden:1; unsigned int shaded:1; unsigned int maximized:7; unsigned int old_maximized:7; unsigned int fullscreen:1; unsigned int omnipresent:1; unsigned int semi_focused:1; /* window type flags */ unsigned int urgent:1; /* if wm_hints says this is urgent */ #ifdef USE_XSHAPE unsigned int shaped:1; #endif /* info flags */ unsigned int is_gnustep:1; /* 1 if the window belongs to a GNUstep * app */ unsigned int is_dockapp:1; /* 1 if the window belongs to a DockApp */ unsigned int icon_moved:1; /* icon for this window was moved * by the user */ 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 obscured:1; /* window is obscured */ unsigned int net_skip_pager:1; unsigned int net_handle_icon:1; unsigned int net_show_desktop:1; unsigned int net_has_title:1; /* use netwm version of WM_NAME */ } flags; /* state of the window */ struct WIcon *icon; /* Window icon when miminized * else is NULL! */ int icon_x, icon_y; /* position of the icon */ int icon_w, icon_h; RImage *net_icon_image; /* Window Image */ Atom type; } WWindow; #define HAS_TITLEBAR(w) (!(WFLAGP((w), no_titlebar) || (w)->flags.fullscreen)) #define HAS_RESIZEBAR(w) (!(WFLAGP((w), no_resizebar) || (w)->flags.fullscreen)) #define HAS_BORDER(w) (!(WFLAGP((w), no_border) || (w)->flags.fullscreen)) #define IS_MOVABLE(w) (!(WFLAGP((w), no_movable) || (w)->flags.fullscreen)) #define IS_RESIZABLE(w) (!(WFLAGP((w), no_resizable) || (w)->flags.fullscreen)) #define IS_OMNIPRESENT(w) ((w)->flags.omnipresent | WFLAGP(w, omnipresent)) #define WINDOW_LEVEL(w) ((w)->frame->core->stacking->window_level) /* * Changes to this must update wWindowSaveState/getSavedState */ typedef struct WSavedState { int workspace; int miniaturized; int shaded; int hidden; int maximized; int x; /* original geometry of the */ int y; /* window if it's maximized */ unsigned int w; unsigned int h; unsigned window_shortcuts; /* mask like 1<<shortcut_number */ } WSavedState; typedef struct WWindowState { char *instance; char *class; char *command; pid_t pid; WSavedState *state; struct WWindowState *next; } WWindowState; typedef void* WMagicNumber; void wWindowDestroy(WWindow *wwin); WWindow *wWindowCreate(void); #ifdef USE_XSHAPE void wWindowSetShape(WWindow *wwin); void wWindowClearShape(WWindow *wwin); #endif WWindow *wManageWindow(WScreen *scr, Window window); void wUnmanageWindow(WWindow *wwin, Bool restore, Bool destroyed); void wWindowSingleFocus(WWindow *wwin); void wWindowFocusPrev(WWindow *wwin, Bool inSameWorkspace); void wWindowFocusNext(WWindow *wwin, Bool inSameWorkspace); void wWindowFocus(WWindow *wwin, WWindow *owin); void wWindowUnfocus(WWindow *wwin); void wWindowUpdateName(WWindow *wwin, const char *newTitle); void wWindowConstrainSize(WWindow *wwin, unsigned int *nwidth, unsigned int *nheight); void wWindowCropSize(WWindow *wwin, unsigned int maxw, unsigned int maxh, unsigned int *nwidth, unsigned int *nheight); void wWindowConfigure(WWindow *wwin, int req_x, int req_y, int req_width, int req_height); void wWindowMove(WWindow *wwin, int req_x, int req_y); void wWindowSynthConfigureNotify(WWindow *wwin); WWindow *wWindowFor(Window window); void wWindowConfigureBorders(WWindow *wwin); void wWindowUpdateButtonImages(WWindow *wwin); void wWindowSaveState(WWindow *wwin); void wWindowChangeWorkspace(WWindow *wwin, int workspace); void wWindowChangeWorkspaceRelative(WWindow *wwin, int amount); void wWindowSetKeyGrabs(WWindow *wwin); void wWindowResetMouseGrabs(WWindow *wwin); WWindow *wManageInternalWindow(WScreen *scr, Window window, Window owner, const char *title, int x, int y, int width, int height); void wWindowSetupInitialAttributes(WWindow *wwin, int *level, int *workspace); void wWindowUpdateGNUstepAttr(WWindow *wwin, GNUstepWMAttributes *attr); void wWindowMap(WWindow *wwin); void wWindowUnmap(WWindow *wwin); void wWindowDeleteSavedStatesForPID(pid_t pid); WMagicNumber wWindowAddSavedState(const char *instance, const char *class, const char *command, pid_t pid, WSavedState *state); WMagicNumber wWindowGetSavedState(Window win); void wWindowDeleteSavedState(WMagicNumber id); Bool wWindowObscuresWindow(WWindow *wwin, WWindow *obscured); void wWindowSetOmnipresent(WWindow *wwin, Bool flag); #endif ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/dialog.c���������������������������������������������������������������������0000644�0001750�0001750�00000132656�13642357774�013217� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* dialog.c - dialog windows for internal use * * Window Maker window manager * * Copyright (c) 1997-2003 Alfredo K. Kojima * Copyright (c) 1998-2003 Dan Pascu * Copyright (c) 2014 Window Maker Team * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "wconfig.h" #include <X11/Xlib.h> #include <X11/Xutil.h> #include <X11/keysym.h> #include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <string.h> #include <sys/types.h> #include <sys/stat.h> #include <dirent.h> #include <limits.h> #include <errno.h> #ifdef HAVE_MALLOC_H #include <malloc.h> #endif #include <signal.h> #ifdef __FreeBSD__ #include <sys/signal.h> #endif #ifndef PATH_MAX #define PATH_MAX DEFAULT_PATH_MAX #endif #include "WindowMaker.h" #include "GNUstep.h" #include "screen.h" #include "window.h" #include "dialog.h" #include "misc.h" #include "stacking.h" #include "framewin.h" #include "window.h" #include "actions.h" #include "xinerama.h" static WMPoint getCenter(WScreen * scr, int width, int height) { return wGetPointToCenterRectInHead(scr, wGetHeadForPointerLocation(scr), width, height); } int wMessageDialog(WScreen *scr, const char *title, const char *message, const char *defBtn, const char *altBtn, const char *othBtn) { WMAlertPanel *panel; Window parent; WWindow *wwin; int result; WMPoint center; int pwidth, pheight; panel = WMCreateScaledAlertPanel(scr->wmscreen, NULL, title, message, defBtn, altBtn, othBtn); pwidth = WMWidgetWidth(panel->win); pheight = WMWidgetHeight(panel->win); parent = XCreateSimpleWindow(dpy, scr->root_win, 0, 0, pwidth, pheight, 0, 0, 0); XReparentWindow(dpy, WMWidgetXID(panel->win), parent, 0, 0); center = getCenter(scr, pwidth, pheight); wwin = wManageInternalWindow(scr, parent, None, NULL, center.x, center.y, pwidth, pheight); wwin->client_leader = WMWidgetXID(panel->win); WMMapWidget(panel->win); wWindowMap(wwin); WMRunModalLoop(WMWidgetScreen(panel->win), WMWidgetView(panel->win)); result = panel->result; WMUnmapWidget(panel->win); wUnmanageWindow(wwin, False, False); WMDestroyAlertPanel(panel); XDestroyWindow(dpy, parent); return result; } static void toggleSaveSession(WMWidget *w, void *data) { /* Parameter not used, but tell the compiler that it is ok */ (void) data; wPreferences.save_session_on_exit = WMGetButtonSelected((WMButton *) w); } int wExitDialog(WScreen *scr, const char *title, const char *message, const char *defBtn, const char *altBtn, const char *othBtn) { WMAlertPanel *panel; WMButton *saveSessionBtn; Window parent; WWindow *wwin; WMPoint center; int result; int pwidth, pheight; panel = WMCreateScaledAlertPanel(scr->wmscreen, NULL, title, message, defBtn, altBtn, othBtn); pwidth = WMWidgetWidth(panel->win); pheight = WMWidgetHeight(panel->win); /* add save session button */ saveSessionBtn = WMCreateSwitchButton(panel->hbox); WMSetButtonAction(saveSessionBtn, toggleSaveSession, NULL); WMAddBoxSubview(panel->hbox, WMWidgetView(saveSessionBtn), False, True, pwidth / 2, 0, 0); WMSetButtonText(saveSessionBtn, _("Save workspace state")); WMSetButtonSelected(saveSessionBtn, wPreferences.save_session_on_exit); WMRealizeWidget(saveSessionBtn); WMMapWidget(saveSessionBtn); parent = XCreateSimpleWindow(dpy, scr->root_win, 0, 0, pwidth, pheight, 0, 0, 0); XReparentWindow(dpy, WMWidgetXID(panel->win), parent, 0, 0); center = getCenter(scr, pwidth, pheight); wwin = wManageInternalWindow(scr, parent, None, NULL, center.x, center.y, pwidth, pheight); wwin->client_leader = WMWidgetXID(panel->win); WMMapWidget(panel->win); wWindowMap(wwin); WMRunModalLoop(WMWidgetScreen(panel->win), WMWidgetView(panel->win)); result = panel->result; WMUnmapWidget(panel->win); wUnmanageWindow(wwin, False, False); WMDestroyAlertPanel(panel); XDestroyWindow(dpy, parent); return result; } typedef struct _WMInputPanelWithHistory { WMInputPanel *panel; WMArray *history; int histpos; char *prefix; char *suffix; char *rest; WMArray *variants; int varpos; } WMInputPanelWithHistory; static char *HistoryFileName(const char *name) { char *filename = NULL; filename = wstrdup(wusergnusteppath()); filename = wstrappend(filename, "/.AppInfo/WindowMaker/History"); if (name && strlen(name)) { filename = wstrappend(filename, "."); filename = wstrappend(filename, name); } return filename; } static int strmatch(const void *str1, const void *str2) { return !strcmp((const char *)str1, (const char *)str2); } static WMArray *LoadHistory(const char *filename, int max) { WMPropList *plhistory; WMPropList *plitem; WMArray *history; int i, num; char *str; history = WMCreateArrayWithDestructor(1, wfree); WMAddToArray(history, wstrdup("")); plhistory = WMReadPropListFromFile(filename); if (plhistory) { if (WMIsPLArray(plhistory)) { num = WMGetPropListItemCount(plhistory); for (i = 0; i < num; ++i) { plitem = WMGetFromPLArray(plhistory, i); if (WMIsPLString(plitem)) { str = WMGetFromPLString(plitem); if (WMFindInArray(history, strmatch, str) == WANotFound) { /* * The string here is duplicated because it will be freed * automatically when the array is deleted. This is not really * great because it is already an allocated string, * unfortunately we cannot re-use it because it will be freed * when we discard the PL (and we don't want to waste the PL's * memory either) */ WMAddToArray(history, wstrdup(str)); if (--max <= 0) break; } } } } WMReleasePropList(plhistory); } return history; } static void SaveHistory(WMArray * history, const char *filename) { int i; WMPropList *plhistory; plhistory = WMCreatePLArray(NULL); for (i = 0; i < WMGetArrayItemCount(history); ++i) WMAddToPLArray(plhistory, WMCreatePLString(WMGetFromArray(history, i))); WMWritePropListToFile(plhistory, filename); WMReleasePropList(plhistory); } static int pstrcmp(const char **str1, const char **str2) { return strcmp(*str1, *str2); } static void ScanFiles(const char *dir, const char *prefix, unsigned acceptmask, unsigned declinemask, WMArray * result) { int prefixlen; DIR *d; struct dirent *de; struct stat sb; char *fullfilename, *suffix; prefixlen = strlen(prefix); d = opendir(dir); if (d != NULL) { while ((de = readdir(d)) != NULL) { if (strlen(de->d_name) > prefixlen && !strncmp(prefix, de->d_name, prefixlen) && strcmp(de->d_name, ".") != 0 && strcmp(de->d_name, "..")) { fullfilename = wstrconcat((char *)dir, "/"); fullfilename = wstrappend(fullfilename, de->d_name); if (stat(fullfilename, &sb) == 0 && (sb.st_mode & acceptmask) && !(sb.st_mode & declinemask) && WMFindInArray(result, (WMMatchDataProc *) strmatch, de->d_name + prefixlen) == WANotFound) { suffix = wstrdup(de->d_name + prefixlen); if (sb.st_mode & S_IFDIR) suffix = wstrappend(suffix, "/"); WMAddToArray(result, suffix); } wfree(fullfilename); } } closedir(d); } } static WMArray *GenerateVariants(const char *complete) { Bool firstWord = True; WMArray *variants = NULL; char *pos = NULL, *path = NULL, *tmp = NULL, *dir = NULL, *prefix = NULL; variants = WMCreateArrayWithDestructor(0, wfree); while (*complete == ' ') ++complete; pos = strrchr(complete, ' '); if (pos != NULL) { complete = pos + 1; firstWord = False; } pos = strrchr(complete, '/'); if (pos != NULL) { tmp = wstrndup((char *)complete, pos - complete + 1); if (*tmp == '~' && *(tmp + 1) == '/' && getenv("HOME")) { dir = wstrdup(getenv("HOME")); dir = wstrappend(dir, tmp + 1); wfree(tmp); } else { dir = tmp; } prefix = wstrdup(pos + 1); ScanFiles(dir, prefix, (unsigned)-1, 0, variants); wfree(dir); wfree(prefix); } else if (*complete == '~') { WMAddToArray(variants, wstrdup("/")); } else if (firstWord) { path = getenv("PATH"); while (path) { pos = strchr(path, ':'); if (pos) { tmp = wstrndup(path, pos - path); path = pos + 1; } else if (*path != '\0') { tmp = wstrdup(path); path = NULL; } else break; ScanFiles(tmp, complete, S_IXOTH | S_IXGRP | S_IXUSR, S_IFDIR, variants); wfree(tmp); } } WMSortArray(variants, (WMCompareDataProc *) pstrcmp); return variants; } static void handleHistoryKeyPress(XEvent * event, void *clientData) { char *text; unsigned pos; WMInputPanelWithHistory *p = (WMInputPanelWithHistory *) clientData; KeySym ksym; ksym = XLookupKeysym(&event->xkey, 0); switch (ksym) { case XK_Up: if (p->histpos < WMGetArrayItemCount(p->history) - 1) { if (p->histpos == 0) wfree(WMReplaceInArray(p->history, 0, WMGetTextFieldText(p->panel->text))); p->histpos++; WMSetTextFieldText(p->panel->text, WMGetFromArray(p->history, p->histpos)); } break; case XK_Down: if (p->histpos > 0) { p->histpos--; WMSetTextFieldText(p->panel->text, WMGetFromArray(p->history, p->histpos)); } break; case XK_Tab: if (!p->variants) { text = WMGetTextFieldText(p->panel->text); pos = WMGetTextFieldCursorPosition(p->panel->text); p->prefix = wstrndup(text, pos); p->suffix = wstrdup(text + pos); wfree(text); p->variants = GenerateVariants(p->prefix); p->varpos = 0; if (!p->variants) { wfree(p->prefix); wfree(p->suffix); p->prefix = NULL; p->suffix = NULL; } } if (p->variants && p->prefix && p->suffix) { p->varpos++; if (p->varpos > WMGetArrayItemCount(p->variants)) p->varpos = 0; if (p->varpos > 0) text = wstrconcat(p->prefix, WMGetFromArray(p->variants, p->varpos - 1)); else text = wstrdup(p->prefix); pos = strlen(text); text = wstrappend(text, p->suffix); WMSetTextFieldText(p->panel->text, text); WMSetTextFieldCursorPosition(p->panel->text, pos); wfree(text); } break; } if (ksym != XK_Tab) { if (p->prefix) { wfree(p->prefix); p->prefix = NULL; } if (p->suffix) { wfree(p->suffix); p->suffix = NULL; } if (p->variants) { WMFreeArray(p->variants); p->variants = NULL; } } } int wAdvancedInputDialog(WScreen *scr, const char *title, const char *message, const char *name, char **text) { WWindow *wwin; Window parent; char *result; WMPoint center; WMInputPanelWithHistory *p; char *filename; int pwidth, pheight; filename = HistoryFileName(name); p = wmalloc(sizeof(WMInputPanelWithHistory)); p->panel = WMCreateScaledInputPanel(scr->wmscreen, NULL, title, message, *text, _("OK"), _("Cancel")); p->history = LoadHistory(filename, wPreferences.history_lines); p->histpos = 0; p->prefix = NULL; p->suffix = NULL; p->rest = NULL; p->variants = NULL; p->varpos = 0; WMCreateEventHandler(WMWidgetView(p->panel->text), KeyPressMask, handleHistoryKeyPress, p); pwidth = WMWidgetWidth(p->panel->win); pheight = WMWidgetHeight(p->panel->win); parent = XCreateSimpleWindow(dpy, scr->root_win, 0, 0, pwidth, pheight, 0, 0, 0); XSelectInput(dpy, parent, KeyPressMask | KeyReleaseMask); XReparentWindow(dpy, WMWidgetXID(p->panel->win), parent, 0, 0); center = getCenter(scr, pwidth, pheight); wwin = wManageInternalWindow(scr, parent, None, NULL, center.x, center.y, pwidth, pheight); wwin->client_leader = WMWidgetXID(p->panel->win); WMMapWidget(p->panel->win); wWindowMap(wwin); WMRunModalLoop(WMWidgetScreen(p->panel->win), WMWidgetView(p->panel->win)); if (p->panel->result == WAPRDefault) { result = WMGetTextFieldText(p->panel->text); wfree(WMReplaceInArray(p->history, 0, wstrdup(result))); SaveHistory(p->history, filename); } else result = NULL; wUnmanageWindow(wwin, False, False); WMDestroyInputPanel(p->panel); WMFreeArray(p->history); wfree(p); wfree(filename); XDestroyWindow(dpy, parent); if (result == NULL) return False; else { if (*text) wfree(*text); *text = result; return True; } } int wInputDialog(WScreen *scr, const char *title, const char *message, char **text) { WWindow *wwin; Window parent; WMInputPanel *panel; char *result; WMPoint center; int pwidth, pheight; panel = WMCreateScaledInputPanel(scr->wmscreen, NULL, title, message, *text, _("OK"), _("Cancel")); pwidth = WMWidgetWidth(panel->win); pheight = WMWidgetHeight(panel->win); parent = XCreateSimpleWindow(dpy, scr->root_win, 0, 0, pwidth, pheight, 0, 0, 0); XSelectInput(dpy, parent, KeyPressMask | KeyReleaseMask); XReparentWindow(dpy, WMWidgetXID(panel->win), parent, 0, 0); center = getCenter(scr, pwidth, pheight); wwin = wManageInternalWindow(scr, parent, None, NULL, center.x, center.y, pwidth, pheight); wwin->client_leader = WMWidgetXID(panel->win); WMMapWidget(panel->win); wWindowMap(wwin); WMRunModalLoop(WMWidgetScreen(panel->win), WMWidgetView(panel->win)); if (panel->result == WAPRDefault) result = WMGetTextFieldText(panel->text); else result = NULL; wUnmanageWindow(wwin, False, False); WMDestroyInputPanel(panel); XDestroyWindow(dpy, parent); if (result == NULL) return False; else { if (*text) wfree(*text); *text = result; return True; } } /* ***************************************************************** * Icon Selection Panel ***************************************************************** */ typedef struct IconPanel { WScreen *scr; WMWindow *win; WMLabel *dirLabel; WMLabel *iconLabel; WMList *dirList; WMList *iconList; WMFont *normalfont; WMButton *previewButton; WMLabel *iconView; WMLabel *fileLabel; WMTextField *fileField; WMButton *okButton; WMButton *cancelButton; #if 0 WMButton *chooseButton; #endif short done; short result; short preview; } IconPanel; static void listPixmaps(WScreen *scr, WMList *lPtr, const char *path) { struct dirent *dentry; DIR *dir; char pbuf[PATH_MAX + 16]; char *apath; IconPanel *panel = WMGetHangedData(lPtr); panel->preview = False; apath = wexpandpath(path); dir = opendir(apath); if (!dir) { wfree(apath); snprintf(pbuf, sizeof(pbuf), _("Could not open directory \"%s\":\n%s"), path, strerror(errno)); wMessageDialog(scr, _("Error"), pbuf, _("OK"), NULL, NULL); return; } /* list contents in the column */ while ((dentry = readdir(dir))) { struct stat statb; if (strcmp(dentry->d_name, ".") == 0 || strcmp(dentry->d_name, "..") == 0) continue; if (wstrlcpy(pbuf, apath, sizeof(pbuf)) >= sizeof(pbuf) || wstrlcat(pbuf, "/", sizeof(pbuf)) >= sizeof(pbuf) || wstrlcat(pbuf, dentry->d_name, sizeof(pbuf)) >= sizeof(pbuf)) { wwarning(_("full path for file \"%s\" in \"%s\" is longer than %d bytes, skipped"), dentry->d_name, path, (int) (sizeof(pbuf) - 1) ); continue; } if (stat(pbuf, &statb) < 0) continue; if (statb.st_mode & (S_IRUSR | S_IRGRP | S_IROTH) && statb.st_mode & (S_IFREG | S_IFLNK)) { WMAddListItem(lPtr, dentry->d_name); } } WMSortListItems(lPtr); closedir(dir); wfree(apath); panel->preview = True; } static void setViewedImage(IconPanel *panel, const char *file) { WMPixmap *pixmap; RColor color; int iwidth, iheight; color.red = 0xae; color.green = 0xaa; color.blue = 0xae; color.alpha = 0; iwidth = WMWidgetWidth(panel->iconView); iheight = WMWidgetHeight(panel->iconView); pixmap = WMCreateScaledBlendedPixmapFromFile(WMWidgetScreen(panel->win), file, &color, iwidth, iheight); if (!pixmap) { WMSetButtonEnabled(panel->okButton, False); WMSetLabelText(panel->iconView, _("Could not load image file ")); WMSetLabelImage(panel->iconView, NULL); } else { WMSetButtonEnabled(panel->okButton, True); WMSetLabelText(panel->iconView, NULL); WMSetLabelImage(panel->iconView, pixmap); WMReleasePixmap(pixmap); } } static void listCallback(void *self, void *data) { WMList *lPtr = (WMList *) self; IconPanel *panel = (IconPanel *) data; char *path; if (lPtr == panel->dirList) { WMListItem *item = WMGetListSelectedItem(lPtr); if (item == NULL) return; path = item->text; WMSetTextFieldText(panel->fileField, path); WMSetLabelImage(panel->iconView, NULL); WMSetButtonEnabled(panel->okButton, False); WMClearList(panel->iconList); listPixmaps(panel->scr, panel->iconList, path); } else { char *tmp, *iconFile; WMListItem *item = WMGetListSelectedItem(panel->dirList); if (item == NULL) return; path = item->text; item = WMGetListSelectedItem(panel->iconList); if (item == NULL) return; iconFile = item->text; tmp = wexpandpath(path); path = wmalloc(strlen(tmp) + strlen(iconFile) + 4); strcpy(path, tmp); strcat(path, "/"); strcat(path, iconFile); wfree(tmp); WMSetTextFieldText(panel->fileField, path); setViewedImage(panel, path); wfree(path); } } static void listIconPaths(WMList * lPtr) { char *paths; char *path; paths = wstrdup(wPreferences.icon_path); path = strtok(paths, ":"); do { char *tmp; tmp = wexpandpath(path); /* do not sort, because the order implies the order of * directories searched */ if (access(tmp, X_OK) == 0) WMAddListItem(lPtr, path); wfree(tmp); } while ((path = strtok(NULL, ":")) != NULL); wfree(paths); } static void drawIconProc(WMList * lPtr, int index, Drawable d, char *text, int state, WMRect * rect) { IconPanel *panel = WMGetHangedData(lPtr); WScreen *scr = panel->scr; GC gc = scr->draw_gc; GC copygc = scr->copy_gc; char *file, *dirfile; WMPixmap *pixmap; WMColor *back; WMSize size; WMScreen *wmscr = WMWidgetScreen(panel->win); RColor color; int x, y, width, height, len; /* Parameter not used, but tell the compiler that it is ok */ (void) index; if (!panel->preview) return; x = rect->pos.x; y = rect->pos.y; width = rect->size.width; height = rect->size.height; back = (state & WLDSSelected) ? scr->white : scr->gray; dirfile = wexpandpath(WMGetListSelectedItem(panel->dirList)->text); len = strlen(dirfile) + strlen(text) + 4; file = wmalloc(len); snprintf(file, len, "%s/%s", dirfile, text); wfree(dirfile); color.red = WMRedComponentOfColor(back) >> 8; color.green = WMGreenComponentOfColor(back) >> 8; color.blue = WMBlueComponentOfColor(back) >> 8; color.alpha = WMGetColorAlpha(back) >> 8; pixmap = WMCreateScaledBlendedPixmapFromFile(wmscr, file, &color, width - 2, height - 2); wfree(file); if (!pixmap) { /*WMRemoveListItem(lPtr, index); */ return; } XFillRectangle(dpy, d, WMColorGC(back), x, y, width, height); XSetClipMask(dpy, gc, None); /*XDrawRectangle(dpy, d, WMColorGC(white), x+5, y+5, width-10, 54); */ XDrawLine(dpy, d, WMColorGC(scr->white), x, y + height - 1, x + width, y + height - 1); size = WMGetPixmapSize(pixmap); XSetClipMask(dpy, copygc, WMGetPixmapMaskXID(pixmap)); XSetClipOrigin(dpy, copygc, x + (width - size.width) / 2, y + 2); XCopyArea(dpy, WMGetPixmapXID(pixmap), d, copygc, 0, 0, size.width > 100 ? 100 : size.width, size.height > 64 ? 64 : size.height, x + (width - size.width) / 2, y + 2); { int i, j; int fheight = WMFontHeight(panel->normalfont); int tlen = strlen(text); int twidth = WMWidthOfString(panel->normalfont, text, tlen); int ofx, ofy; ofx = x + (width - twidth) / 2; ofy = y + 64 - fheight; for (i = -1; i < 2; i++) for (j = -1; j < 2; j++) WMDrawString(wmscr, d, scr->white, panel->normalfont, ofx + i, ofy + j, text, tlen); WMDrawString(wmscr, d, scr->black, panel->normalfont, ofx, ofy, text, tlen); } WMReleasePixmap(pixmap); /* I hope it is better to do not use cache / on my box it is fast nuff */ XFlush(dpy); } static void buttonCallback(void *self, void *clientData) { WMButton *bPtr = (WMButton *) self; IconPanel *panel = (IconPanel *) clientData; if (bPtr == panel->okButton) { panel->done = True; panel->result = True; } else if (bPtr == panel->cancelButton) { panel->done = True; panel->result = False; } else if (bPtr == panel->previewButton) { /**** Previewer ****/ WMSetButtonEnabled(bPtr, False); WMSetListUserDrawItemHeight(panel->iconList, 68); WMSetListUserDrawProc(panel->iconList, drawIconProc); WMRedisplayWidget(panel->iconList); /* for draw proc to access screen/gc */ /*** end preview ***/ } #if 0 else if (bPtr == panel->chooseButton) { WMOpenPanel *op; op = WMCreateOpenPanel(WMWidgetScreen(bPtr)); if (WMRunModalFilePanelForDirectory(op, NULL, "/usr/local", NULL, NULL)) { char *path; path = WMGetFilePanelFile(op); WMSetTextFieldText(panel->fileField, path); setViewedImage(panel, path); wfree(path); } WMDestroyFilePanel(op); } #endif } static void keyPressHandler(XEvent * event, void *data) { IconPanel *panel = (IconPanel *) data; char buffer[32]; KeySym ksym; int iidx; int didx; int item = 0; WMList *list = NULL; if (event->type == KeyRelease) return; buffer[0] = 0; XLookupString(&event->xkey, buffer, sizeof(buffer), &ksym, NULL); iidx = WMGetListSelectedItemRow(panel->iconList); didx = WMGetListSelectedItemRow(panel->dirList); switch (ksym) { case XK_Up: if (iidx > 0) item = iidx - 1; else item = iidx; list = panel->iconList; break; case XK_Down: if (iidx < WMGetListNumberOfRows(panel->iconList) - 1) item = iidx + 1; else item = iidx; list = panel->iconList; break; case XK_Home: item = 0; list = panel->iconList; break; case XK_End: item = WMGetListNumberOfRows(panel->iconList) - 1; list = panel->iconList; break; case XK_Next: if (didx < WMGetListNumberOfRows(panel->dirList) - 1) item = didx + 1; else item = didx; list = panel->dirList; break; case XK_Prior: if (didx > 0) item = didx - 1; else item = 0; list = panel->dirList; break; case XK_Return: WMPerformButtonClick(panel->okButton); break; case XK_Escape: WMPerformButtonClick(panel->cancelButton); break; } if (list) { WMSelectListItem(list, item); WMSetListPosition(list, item - 5); listCallback(list, panel); } } Bool wIconChooserDialog(WScreen *scr, char **file, const char *instance, const char *class) { WWindow *wwin; Window parent; IconPanel *panel; WMColor *color; WMFont *boldFont; Bool result; int wmScaleWidth, wmScaleHeight; int pwidth, pheight; panel = wmalloc(sizeof(IconPanel)); panel->scr = scr; panel->win = WMCreateWindow(scr->wmscreen, "iconChooser"); WMGetScaleBaseFromSystemFont(scr->wmscreen, &wmScaleWidth, &wmScaleHeight); pwidth = WMScaleX(450); pheight = WMScaleY(280); WMResizeWidget(panel->win, pwidth, pheight); WMCreateEventHandler(WMWidgetView(panel->win), KeyPressMask | KeyReleaseMask, keyPressHandler, panel); boldFont = WMBoldSystemFontOfSize(scr->wmscreen, WMScaleY(12)); panel->normalfont = WMSystemFontOfSize(WMWidgetScreen(panel->win), WMScaleY(12)); panel->dirLabel = WMCreateLabel(panel->win); WMResizeWidget(panel->dirLabel, WMScaleX(200), WMScaleY(20)); WMMoveWidget(panel->dirLabel, WMScaleX(10), WMScaleY(7)); WMSetLabelText(panel->dirLabel, _("Directories")); WMSetLabelFont(panel->dirLabel, boldFont); WMSetLabelTextAlignment(panel->dirLabel, WACenter); WMSetLabelRelief(panel->dirLabel, WRSunken); panel->iconLabel = WMCreateLabel(panel->win); WMResizeWidget(panel->iconLabel, WMScaleX(140), WMScaleY(20)); WMMoveWidget(panel->iconLabel, WMScaleX(215), WMScaleY(7)); WMSetLabelText(panel->iconLabel, _("Icons")); WMSetLabelFont(panel->iconLabel, boldFont); WMSetLabelTextAlignment(panel->iconLabel, WACenter); WMReleaseFont(boldFont); color = WMWhiteColor(scr->wmscreen); WMSetLabelTextColor(panel->dirLabel, color); WMSetLabelTextColor(panel->iconLabel, color); WMReleaseColor(color); color = WMDarkGrayColor(scr->wmscreen); WMSetWidgetBackgroundColor(panel->iconLabel, color); WMSetWidgetBackgroundColor(panel->dirLabel, color); WMReleaseColor(color); WMSetLabelRelief(panel->iconLabel, WRSunken); panel->dirList = WMCreateList(panel->win); WMResizeWidget(panel->dirList, WMScaleX(200), WMScaleY(170)); WMMoveWidget(panel->dirList, WMScaleX(10), WMScaleY(30)); WMSetListAction(panel->dirList, listCallback, panel); panel->iconList = WMCreateList(panel->win); WMResizeWidget(panel->iconList, WMScaleX(140), WMScaleY(170)); WMMoveWidget(panel->iconList, WMScaleX(215), WMScaleY(30)); WMSetListAction(panel->iconList, listCallback, panel); WMHangData(panel->iconList, panel); panel->previewButton = WMCreateCommandButton(panel->win); WMResizeWidget(panel->previewButton, WMScaleX(75), WMScaleY(26)); WMMoveWidget(panel->previewButton, WMScaleX(365), WMScaleY(130)); WMSetButtonText(panel->previewButton, _("Preview")); WMSetButtonAction(panel->previewButton, buttonCallback, panel); panel->iconView = WMCreateLabel(panel->win); WMResizeWidget(panel->iconView, WMScaleX(75), WMScaleY(75)); WMMoveWidget(panel->iconView, WMScaleX(365), WMScaleY(40)); WMSetLabelImagePosition(panel->iconView, WIPOverlaps); WMSetLabelRelief(panel->iconView, WRSunken); WMSetLabelTextAlignment(panel->iconView, WACenter); panel->fileLabel = WMCreateLabel(panel->win); WMResizeWidget(panel->fileLabel, WMScaleX(80), WMScaleY(20)); WMMoveWidget(panel->fileLabel, WMScaleX(10), WMScaleY(210)); WMSetLabelText(panel->fileLabel, _("File Name:")); panel->fileField = WMCreateTextField(panel->win); WMSetViewNextResponder(WMWidgetView(panel->fileField), WMWidgetView(panel->win)); WMResizeWidget(panel->fileField, WMScaleX(345), WMScaleY(20)); WMMoveWidget(panel->fileField, WMScaleX(95), WMScaleY(210)); WMSetTextFieldEditable(panel->fileField, False); panel->okButton = WMCreateCommandButton(panel->win); WMResizeWidget(panel->okButton, WMScaleX(80), WMScaleY(26)); WMMoveWidget(panel->okButton, WMScaleX(360), WMScaleY(242)); WMSetButtonText(panel->okButton, _("OK")); WMSetButtonEnabled(panel->okButton, False); WMSetButtonAction(panel->okButton, buttonCallback, panel); panel->cancelButton = WMCreateCommandButton(panel->win); WMResizeWidget(panel->cancelButton, WMScaleX(80), WMScaleY(26)); WMMoveWidget(panel->cancelButton, WMScaleX(270), WMScaleY(242)); WMSetButtonText(panel->cancelButton, _("Cancel")); WMSetButtonAction(panel->cancelButton, buttonCallback, panel); #if 0 panel->chooseButton = WMCreateCommandButton(panel->win); WMResizeWidget(panel->chooseButton, WMScaleX(110), WMScaleY(26)); WMMoveWidget(panel->chooseButton, WMScaleX(150), WMScaleY(242)); WMSetButtonText(panel->chooseButton, _("Choose File")); WMSetButtonAction(panel->chooseButton, buttonCallback, panel); #endif WMRealizeWidget(panel->win); WMMapSubwidgets(panel->win); parent = XCreateSimpleWindow(dpy, scr->root_win, 0, 0, pwidth, pheight, 0, 0, 0); XReparentWindow(dpy, WMWidgetXID(panel->win), parent, 0, 0); { static const char *prefix = NULL; char *title; int len; WMPoint center; if (prefix == NULL) prefix = _("Icon Chooser"); len = strlen(prefix) + 2 // " [" + (instance ? strlen(instance) : 0) + 1 // "." + (class ? strlen(class) : 0) + 1 // "]" + 1; // final NUL title = wmalloc(len); strcpy(title, prefix); if (instance || class) { strcat(title, " ["); if (instance != NULL) strcat(title, instance); if (instance && class) strcat(title, "."); if (class != NULL) strcat(title, class); strcat(title, "]"); } center = getCenter(scr, pwidth, pheight); wwin = wManageInternalWindow(scr, parent, None, title, center.x, center.y, pwidth, pheight); wfree(title); } /* put icon paths in the list */ listIconPaths(panel->dirList); WMMapWidget(panel->win); wWindowMap(wwin); while (!panel->done) { XEvent event; WMNextEvent(dpy, &event); WMHandleEvent(&event); } if (panel->result) { char *defaultPath, *wantedPath; /* check if the file the user selected is not the one that * would be loaded by default with the current search path */ *file = WMGetListSelectedItem(panel->iconList)->text; if (**file == 0) { wfree(*file); *file = NULL; } else { defaultPath = FindImage(wPreferences.icon_path, *file); wantedPath = WMGetTextFieldText(panel->fileField); /* if the file is not the default, use full path */ if (strcmp(wantedPath, defaultPath) != 0) { *file = wantedPath; } else { *file = wstrdup(*file); wfree(wantedPath); } wfree(defaultPath); } } else { *file = NULL; } result = panel->result; WMReleaseFont(panel->normalfont); WMUnmapWidget(panel->win); WMDestroyWidget(panel->win); wUnmanageWindow(wwin, False, False); wfree(panel); XDestroyWindow(dpy, parent); return result; } /* *********************************************************************** * Info Panel *********************************************************************** */ typedef struct { WScreen *scr; WWindow *wwin; WMWindow *win; WMLabel *logoL; WMLabel *name1L; WMFrame *lineF; WMLabel *name2L; WMLabel *versionL; WMLabel *infoL; WMLabel *copyrL; } InfoPanel; #define COPYRIGHT_TEXT \ "Copyright \xc2\xa9 1997-2006 Alfredo K. Kojima\n"\ "Copyright \xc2\xa9 1998-2006 Dan Pascu\n"\ "Copyright \xc2\xa9 2013-2020 Window Maker Developers Team" static InfoPanel *infoPanel = NULL; static void destroyInfoPanel(WCoreWindow *foo, void *data, XEvent *event) { /* Parameter not used, but tell the compiler that it is ok */ (void) foo; (void) data; (void) event; WMUnmapWidget(infoPanel); wUnmanageWindow(infoPanel->wwin, False, False); WMDestroyWidget(infoPanel->win); wfree(infoPanel); infoPanel = NULL; } void wShowInfoPanel(WScreen *scr) { InfoPanel *panel; WMPixmap *logo; WMFont *font; char *strbuf = NULL; const char *separator; char buffer[256]; Window parent; WWindow *wwin; WMPoint center; char **strl; int i, width = 50, sepHeight; char *visuals[] = { "StaticGray", "GrayScale", "StaticColor", "PseudoColor", "TrueColor", "DirectColor" }; int wmScaleWidth, wmScaleHeight; int pwidth, pheight; if (infoPanel) { if (infoPanel->scr == scr) { wRaiseFrame(infoPanel->wwin->frame->core); wSetFocusTo(scr, infoPanel->wwin); } return; } panel = wmalloc(sizeof(InfoPanel)); panel->scr = scr; panel->win = WMCreateWindow(scr->wmscreen, "info"); WMGetScaleBaseFromSystemFont(scr->wmscreen, &wmScaleWidth, &wmScaleHeight); pwidth = WMScaleX(382); pheight = WMScaleY(250); WMResizeWidget(panel->win, pwidth, pheight); logo = WMCreateApplicationIconBlendedPixmap(scr->wmscreen, (RColor *) NULL); if (!logo) { logo = WMRetainPixmap(WMGetApplicationIconPixmap(scr->wmscreen)); } if (logo) { panel->logoL = WMCreateLabel(panel->win); WMResizeWidget(panel->logoL, WMScaleX(64), WMScaleY(64)); WMMoveWidget(panel->logoL, WMScaleX(30), WMScaleY(20)); WMSetLabelImagePosition(panel->logoL, WIPImageOnly); WMSetLabelImage(panel->logoL, logo); WMReleasePixmap(logo); } sepHeight = WMScaleY(3); panel->name1L = WMCreateLabel(panel->win); WMResizeWidget(panel->name1L, WMScaleX(240), WMScaleY(30) + WMScaleY(2)); WMMoveWidget(panel->name1L, WMScaleX(100), WMScaleY(30) - WMScaleY(2) - sepHeight); snprintf(buffer, sizeof(buffer), "Lucida Sans,Comic Sans MS,URW Gothic L,Trebuchet MS:italic:pixelsize=%d:antialias=true", WMScaleY(24)); font = WMCreateFont(scr->wmscreen, buffer); strbuf = "Window Maker"; if (font) { width = WMWidthOfString(font, strbuf, strlen(strbuf)); WMSetLabelFont(panel->name1L, font); WMReleaseFont(font); } WMSetLabelTextAlignment(panel->name1L, WACenter); WMSetLabelText(panel->name1L, strbuf); panel->lineF = WMCreateFrame(panel->win); WMResizeWidget(panel->lineF, width, sepHeight); WMMoveWidget(panel->lineF, WMScaleX(100) + (WMScaleX(240) - width) / 2, WMScaleY(60) - sepHeight); WMSetFrameRelief(panel->lineF, WRSimple); WMSetWidgetBackgroundColor(panel->lineF, scr->black); panel->name2L = WMCreateLabel(panel->win); WMResizeWidget(panel->name2L, WMScaleX(240), WMScaleY(24)); WMMoveWidget(panel->name2L, WMScaleX(100), WMScaleY(60)); snprintf(buffer, sizeof(buffer), "URW Gothic L,Nimbus Sans L:pixelsize=%d:antialias=true", WMScaleY(16)); font = WMCreateFont(scr->wmscreen, buffer); if (font) { WMSetLabelFont(panel->name2L, font); WMReleaseFont(font); font = NULL; } WMSetLabelTextAlignment(panel->name2L, WACenter); WMSetLabelText(panel->name2L, _("Window Manager for X")); snprintf(buffer, sizeof(buffer), _("Version %s"), VERSION); panel->versionL = WMCreateLabel(panel->win); WMResizeWidget(panel->versionL, WMScaleX(310), WMScaleY(16)); WMMoveWidget(panel->versionL, WMScaleX(30), WMScaleY(95)); WMSetLabelTextAlignment(panel->versionL, WARight); WMSetLabelText(panel->versionL, buffer); WMSetLabelWraps(panel->versionL, False); panel->copyrL = WMCreateLabel(panel->win); WMResizeWidget(panel->copyrL, WMScaleX(360), WMScaleY(60)); WMMoveWidget(panel->copyrL, WMScaleX(15), WMScaleY(190)); WMSetLabelTextAlignment(panel->copyrL, WALeft); WMSetLabelText(panel->copyrL, COPYRIGHT_TEXT); font = WMSystemFontOfSize(scr->wmscreen, WMScaleY(11)); if (font) { WMSetLabelFont(panel->copyrL, font); WMReleaseFont(font); font = NULL; } strbuf = NULL; snprintf(buffer, sizeof(buffer), _("Using visual 0x%x: %s %ibpp "), (unsigned)scr->w_visual->visualid, visuals[scr->w_visual->class], scr->w_depth); strbuf = wstrappend(strbuf, buffer); switch (scr->w_depth) { case 15: strbuf = wstrappend(strbuf, _("(32 thousand colors)\n")); break; case 16: strbuf = wstrappend(strbuf, _("(64 thousand colors)\n")); break; case 24: case 32: strbuf = wstrappend(strbuf, _("(16 million colors)\n")); break; default: snprintf(buffer, sizeof(buffer), _("(%d colors)\n"), 1 << scr->w_depth); strbuf = wstrappend(strbuf, buffer); break; } #if defined(HAVE_MALLOC_H) && defined(HAVE_MALLINFO) { struct mallinfo ma = mallinfo(); snprintf(buffer, sizeof(buffer), #ifdef DEBUG _("Total memory allocated: %i kB (in use: %i kB, %d free chunks).\n"), #else _("Total memory allocated: %i kB (in use: %i kB).\n"), #endif (ma.arena + ma.hblkhd) / 1024, (ma.uordblks + ma.hblkhd) / 1024 #ifdef DEBUG /* * This information is representative of the memory * fragmentation. In ideal case it should be 1, but * that is never possible */ , ma.ordblks #endif ); strbuf = wstrappend(strbuf, buffer); } #endif strbuf = wstrappend(strbuf, _("Image formats: ")); strl = RSupportedFileFormats(); separator = NULL; for (i = 0; strl[i] != NULL; i++) { if (separator != NULL) strbuf = wstrappend(strbuf, separator); strbuf = wstrappend(strbuf, strl[i]); separator = ", "; } strbuf = wstrappend(strbuf, _("\nAdditional support for: ")); strbuf = wstrappend(strbuf, "WMSPEC"); #ifdef USE_MWM_HINTS strbuf = wstrappend(strbuf, ", MWM"); #endif #ifdef USE_DOCK_XDND strbuf = wstrappend(strbuf, ", XDnD"); #endif #ifdef USE_MAGICK strbuf = wstrappend(strbuf, ", ImageMagick"); #endif #ifdef USE_XINERAMA strbuf = wstrappend(strbuf, _("\n")); #ifdef SOLARIS_XINERAMA strbuf = wstrappend(strbuf, _("Solaris ")); #endif strbuf = wstrappend(strbuf, _("Xinerama: ")); { char tmp[128]; snprintf(tmp, sizeof(tmp) - 1, _("%d head(s) found."), scr->xine_info.count); strbuf = wstrappend(strbuf, tmp); } #endif #ifdef USE_RANDR strbuf = wstrappend(strbuf, _("\n")); strbuf = wstrappend(strbuf, "RandR: "); if (w_global.xext.randr.supported) strbuf = wstrappend(strbuf, _("supported")); else strbuf = wstrappend(strbuf, _("unsupported")); strbuf = wstrappend(strbuf, "."); #endif panel->infoL = WMCreateLabel(panel->win); WMResizeWidget(panel->infoL, WMScaleX(350), WMScaleY(80)); WMMoveWidget(panel->infoL, WMScaleX(15), WMScaleY(115)); WMSetLabelText(panel->infoL, strbuf); font = WMSystemFontOfSize(scr->wmscreen, WMScaleY(11)); if (font) { WMSetLabelFont(panel->infoL, font); WMReleaseFont(font); font = NULL; } wfree(strbuf); WMRealizeWidget(panel->win); WMMapSubwidgets(panel->win); parent = XCreateSimpleWindow(dpy, scr->root_win, 0, 0, pwidth, pheight, 0, 0, 0); XReparentWindow(dpy, WMWidgetXID(panel->win), parent, 0, 0); WMMapWidget(panel->win); center = getCenter(scr, pwidth, pheight); wwin = wManageInternalWindow(scr, parent, None, _("Info"), center.x, center.y, pwidth, pheight); WSETUFLAG(wwin, no_closable, 0); WSETUFLAG(wwin, no_close_button, 0); #ifdef XKB_BUTTON_HINT wFrameWindowHideButton(wwin->frame, WFF_LANGUAGE_BUTTON); #endif wWindowUpdateButtonImages(wwin); wFrameWindowShowButton(wwin->frame, WFF_RIGHT_BUTTON); wwin->frame->on_click_right = destroyInfoPanel; wWindowMap(wwin); panel->wwin = wwin; infoPanel = panel; } /* *********************************************************************** * Legal Panel *********************************************************************** */ typedef struct { WScreen *scr; WWindow *wwin; WMWindow *win; WMFrame *frame; WMLabel *licenseL; } LegalPanel; static LegalPanel *legalPanel = NULL; static void destroyLegalPanel(WCoreWindow * foo, void *data, XEvent * event) { /* Parameter not used, but tell the compiler that it is ok */ (void) foo; (void) data; (void) event; WMUnmapWidget(legalPanel->win); WMDestroyWidget(legalPanel->win); wUnmanageWindow(legalPanel->wwin, False, False); wfree(legalPanel); legalPanel = NULL; } void wShowLegalPanel(WScreen *scr) { LegalPanel *panel; Window parent; WWindow *wwin; WMPoint center; int wmScaleWidth, wmScaleHeight; int pwidth, pheight; if (legalPanel) { if (legalPanel->scr == scr) { wRaiseFrame(legalPanel->wwin->frame->core); wSetFocusTo(scr, legalPanel->wwin); } return; } panel = wmalloc(sizeof(LegalPanel)); panel->scr = scr; panel->win = WMCreateWindow(scr->wmscreen, "legal"); WMGetScaleBaseFromSystemFont(scr->wmscreen, &wmScaleWidth, &wmScaleHeight); pwidth = WMScaleX(440); pheight = WMScaleY(270); WMResizeWidget(panel->win, pwidth, pheight); panel->frame = WMCreateFrame(panel->win); WMResizeWidget(panel->frame, pwidth - (2 * WMScaleX(10)), pheight - (2 * WMScaleY(10))); WMMoveWidget(panel->frame, WMScaleX(10), WMScaleY(10)); WMSetFrameTitle(panel->frame, NULL); panel->licenseL = WMCreateLabel(panel->frame); WMSetLabelWraps(panel->licenseL, True); WMResizeWidget(panel->licenseL, pwidth - (4 * WMScaleX(10)), pheight - (4 * WMScaleY(10))); WMMoveWidget(panel->licenseL, WMScaleX(8), WMScaleY(8)); WMSetLabelTextAlignment(panel->licenseL, WALeft); WMSetLabelText(panel->licenseL, _(" Window Maker 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.\n\n" " Window Maker 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.\n\n" " You should have received a copy of the GNU General Public " "License along with this program; if not, write to the Free Software " "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA" "02110-1301 USA.")); WMRealizeWidget(panel->win); WMMapSubwidgets(panel->win); WMMapSubwidgets(panel->frame); parent = XCreateSimpleWindow(dpy, scr->root_win, 0, 0, pwidth, pheight, 0, 0, 0); XReparentWindow(dpy, WMWidgetXID(panel->win), parent, 0, 0); center = getCenter(scr, pwidth, pheight); wwin = wManageInternalWindow(scr, parent, None, _("Legal"), center.x, center.y, pwidth, pheight); WSETUFLAG(wwin, no_closable, 0); WSETUFLAG(wwin, no_close_button, 0); wWindowUpdateButtonImages(wwin); wFrameWindowShowButton(wwin->frame, WFF_RIGHT_BUTTON); #ifdef XKB_BUTTON_HINT wFrameWindowHideButton(wwin->frame, WFF_LANGUAGE_BUTTON); #endif wwin->frame->on_click_right = destroyLegalPanel; panel->wwin = wwin; WMMapWidget(panel->win); wWindowMap(wwin); legalPanel = panel; } /* *********************************************************************** * Crashing Dialog Panel *********************************************************************** */ typedef struct _CrashPanel { WMWindow *win; /* main window */ WMLabel *iconL; /* application icon */ WMLabel *nameL; /* title of panel */ WMFrame *sepF; /* separator frame */ WMLabel *noteL; /* Title of note */ WMLabel *note2L; /* body of note with what happened */ WMFrame *whatF; /* "what to do next" frame */ WMPopUpButton *whatP; /* action selection popup button */ WMButton *okB; /* ok button */ Bool done; /* if finished with this dialog */ int action; /* what to do after */ KeyCode retKey; } CrashPanel; static void handleKeyPress(XEvent * event, void *clientData) { CrashPanel *panel = (CrashPanel *) clientData; if (event->xkey.keycode == panel->retKey) { WMPerformButtonClick(panel->okB); } } static void okButtonCallback(void *self, void *clientData) { CrashPanel *panel = (CrashPanel *) clientData; /* Parameter not used, but tell the compiler that it is ok */ (void) self; panel->done = True; } static void setCrashAction(void *self, void *clientData) { WMPopUpButton *pop = (WMPopUpButton *) self; CrashPanel *panel = (CrashPanel *) clientData; panel->action = WMGetPopUpButtonSelectedItem(pop); } /* Make this read the logo from a compiled in pixmap -Dan */ static WMPixmap *getWindowMakerIconImage(WMScreen *scr) { WMPixmap *pix = NULL; char *path = NULL; /* Get the Logo icon, without the default icon */ path = get_icon_filename("Logo", "WMPanel", NULL, False); if (path) { RColor gray; gray.red = 0xae; gray.green = 0xaa; gray.blue = 0xae; gray.alpha = 0; pix = WMCreateBlendedPixmapFromFile(scr, path, &gray); wfree(path); } return pix; } #define PWIDTH 295 #define PHEIGHT 345 int wShowCrashingDialogPanel(int whatSig) { CrashPanel *panel; WMScreen *scr; WMFont *font; WMPixmap *logo; int screen_no, scr_width, scr_height; int action; char buf[256]; screen_no = DefaultScreen(dpy); scr_width = WidthOfScreen(ScreenOfDisplay(dpy, screen_no)); scr_height = HeightOfScreen(ScreenOfDisplay(dpy, screen_no)); scr = WMCreateScreen(dpy, screen_no); if (!scr) { werror(_("cannot open connection for crashing dialog panel. Aborting.")); return WMAbort; } panel = wmalloc(sizeof(CrashPanel)); panel->retKey = XKeysymToKeycode(dpy, XK_Return); panel->win = WMCreateWindow(scr, "crashingDialog"); WMResizeWidget(panel->win, PWIDTH, PHEIGHT); WMMoveWidget(panel->win, (scr_width - PWIDTH) / 2, (scr_height - PHEIGHT) / 2); logo = getWindowMakerIconImage(scr); if (logo) { panel->iconL = WMCreateLabel(panel->win); WMResizeWidget(panel->iconL, 64, 64); WMMoveWidget(panel->iconL, 10, 10); WMSetLabelImagePosition(panel->iconL, WIPImageOnly); WMSetLabelImage(panel->iconL, logo); } panel->nameL = WMCreateLabel(panel->win); WMResizeWidget(panel->nameL, 200, 30); WMMoveWidget(panel->nameL, 80, 25); WMSetLabelTextAlignment(panel->nameL, WALeft); font = WMBoldSystemFontOfSize(scr, 24); WMSetLabelFont(panel->nameL, font); WMReleaseFont(font); WMSetLabelText(panel->nameL, _("Fatal error")); panel->sepF = WMCreateFrame(panel->win); WMResizeWidget(panel->sepF, PWIDTH + 4, 2); WMMoveWidget(panel->sepF, -2, 80); panel->noteL = WMCreateLabel(panel->win); WMResizeWidget(panel->noteL, PWIDTH - 20, 40); WMMoveWidget(panel->noteL, 10, 90); WMSetLabelTextAlignment(panel->noteL, WAJustified); snprintf(buf, sizeof(buf), _("Window Maker received signal %i."), whatSig); WMSetLabelText(panel->noteL, buf); panel->note2L = WMCreateLabel(panel->win); WMResizeWidget(panel->note2L, PWIDTH - 20, 100); WMMoveWidget(panel->note2L, 10, 130); WMSetLabelTextAlignment(panel->note2L, WALeft); snprintf(buf, sizeof(buf), /* Comment for the PO file: the %s is an email address */ _(" This fatal error occurred probably due to a bug." " Please fill the included BUGFORM and report it to %s."), PACKAGE_BUGREPORT); WMSetLabelText(panel->note2L, buf); WMSetLabelWraps(panel->note2L, True); panel->whatF = WMCreateFrame(panel->win); WMResizeWidget(panel->whatF, PWIDTH - 20, 50); WMMoveWidget(panel->whatF, 10, 240); WMSetFrameTitle(panel->whatF, _("What do you want to do now?")); panel->whatP = WMCreatePopUpButton(panel->whatF); WMResizeWidget(panel->whatP, PWIDTH - 20 - 70, 20); WMMoveWidget(panel->whatP, 35, 20); WMSetPopUpButtonPullsDown(panel->whatP, False); WMSetPopUpButtonText(panel->whatP, _("Select action")); WMAddPopUpButtonItem(panel->whatP, _("Abort and leave a core file")); WMAddPopUpButtonItem(panel->whatP, _("Restart Window Maker")); WMAddPopUpButtonItem(panel->whatP, _("Start alternate window manager")); WMSetPopUpButtonAction(panel->whatP, setCrashAction, panel); WMSetPopUpButtonSelectedItem(panel->whatP, WMRestart); panel->action = WMRestart; WMMapSubwidgets(panel->whatF); panel->okB = WMCreateCommandButton(panel->win); WMResizeWidget(panel->okB, 80, 26); WMMoveWidget(panel->okB, 205, 309); WMSetButtonText(panel->okB, _("OK")); WMSetButtonImage(panel->okB, WMGetSystemPixmap(scr, WSIReturnArrow)); WMSetButtonAltImage(panel->okB, WMGetSystemPixmap(scr, WSIHighlightedReturnArrow)); WMSetButtonImagePosition(panel->okB, WIPRight); WMSetButtonAction(panel->okB, okButtonCallback, panel); panel->done = 0; WMCreateEventHandler(WMWidgetView(panel->win), KeyPressMask, handleKeyPress, panel); WMRealizeWidget(panel->win); WMMapSubwidgets(panel->win); WMMapWidget(panel->win); XSetInputFocus(dpy, WMWidgetXID(panel->win), RevertToParent, CurrentTime); while (!panel->done) { XEvent event; WMNextEvent(dpy, &event); WMHandleEvent(&event); } action = panel->action; WMUnmapWidget(panel->win); WMDestroyWidget(panel->win); wfree(panel); return action; } ����������������������������������������������������������������������������������WindowMaker-0.95.9/src/WindowMaker.h����������������������������������������������������������������0000644�0001750�0001750�00000046150�13642357774�014205� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2003 Alfredo K. Kojima * Copyright (c) 2014 Window Maker Team * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef WINDOWMAKER_H_ #define WINDOWMAKER_H_ #include "wconfig.h" #include <assert.h> #include <limits.h> #include <WINGs/WINGs.h> /* class codes */ typedef enum { WCLASS_UNKNOWN = 0, WCLASS_WINDOW = 1, /* managed client windows */ WCLASS_MENU = 2, /* root menus */ WCLASS_APPICON = 3, WCLASS_DUMMYWINDOW = 4, /* window that holds window group leader */ WCLASS_MINIWINDOW = 5, WCLASS_DOCK_ICON = 6, WCLASS_PAGER = 7, WCLASS_TEXT_INPUT = 8, WCLASS_FRAME = 9 } WClassType; /* * generic window levels (a superset of the N*XTSTEP ones) * Applications should use levels between WMDesktopLevel and * WMScreensaverLevel anything boyond that range is allowed, * but discouraged. */ enum { WMBackLevel = INT_MIN+1, /* Very lowest level */ WMDesktopLevel = -1000, /* Lowest level of normal use */ WMSunkenLevel = -1, WMNormalLevel = 0, WMFloatingLevel = 3, WMDockLevel = 5, WMSubmenuLevel = 15, WMMainMenuLevel = 20, WMStatusLevel = 21, WMFullscreenLevel = 50, WMModalLevel = 100, WMPopUpLevel = 101, WMScreensaverLevel = 1000, WMOuterSpaceLevel = INT_MAX }; /* * WObjDescriptor will be used by the event dispatcher to * send events to a particular object through the methods in the * method table. If all objects of the same class share the * same methods, the class method table should be used, otherwise * a new method table must be created for each object. * It is also assigned to find the parent structure of a given * window (like the WWindow or WMenu for a button) */ typedef struct WObjDescriptor { void *self; /* the object that will be called */ /* event handlers */ void (*handle_expose)(struct WObjDescriptor *sender, XEvent *event); void (*handle_mousedown)(struct WObjDescriptor *sender, XEvent *event); void (*handle_enternotify)(struct WObjDescriptor *sender, XEvent *event); void (*handle_leavenotify)(struct WObjDescriptor *sender, XEvent *event); WClassType parent_type; /* type code of the parent */ void *parent; /* parent object (WWindow or WMenu) */ } WObjDescriptor; /* internal buttons */ #define WBUT_CLOSE 0 #define WBUT_BROKENCLOSE 1 #define WBUT_ICONIFY 2 #define WBUT_KILL 3 #ifdef XKB_BUTTON_HINT #define WBUT_XKBGROUP1 4 #define WBUT_XKBGROUP2 5 #define WBUT_XKBGROUP3 6 #define WBUT_XKBGROUP4 7 #define PRED_BPIXMAPS 8 /* reserved for 4 groups */ #else #define PRED_BPIXMAPS 4 /* count of WBUT icons */ #endif /* XKB_BUTTON_HINT */ /* Mouse cursors */ typedef enum { WCUR_NORMAL, WCUR_MOVE, WCUR_RESIZE, WCUR_TOPLEFTRESIZE, WCUR_TOPRIGHTRESIZE, WCUR_BOTTOMLEFTRESIZE, WCUR_BOTTOMRIGHTRESIZE, WCUR_VERTICALRESIZE, WCUR_HORIZONRESIZE, WCUR_WAIT, WCUR_ARROW, WCUR_QUESTION, WCUR_TEXT, WCUR_SELECT, WCUR_ROOT, WCUR_EMPTY, /* Count of the number of cursors defined */ WCUR_LAST } w_cursor; /* geometry displays */ #define WDIS_NEW 0 /* new style */ #define WDIS_CENTER 1 /* center of screen */ #define WDIS_TOPLEFT 2 /* top left corner of screen */ #define WDIS_FRAME_CENTER 3 /* center of the frame */ #define WDIS_NONE 4 /* keyboard input focus mode */ #define WKF_CLICK 0 #define WKF_SLOPPY 2 /* colormap change mode */ #define WCM_CLICK 0 #define WCM_POINTER 1 /* window placement mode */ #define WPM_MANUAL 0 #define WPM_CASCADE 1 #define WPM_SMART 2 #define WPM_RANDOM 3 #define WPM_AUTO 4 #define WPM_CENTER 5 /* text justification */ #define WTJ_CENTER 0 #define WTJ_LEFT 1 #define WTJ_RIGHT 2 /* iconification styles */ #define WIS_ZOOM 0 #define WIS_TWIST 1 #define WIS_FLIP 2 #define WIS_NONE 3 #define WIS_RANDOM 4 /* secret */ /* switchmenu actions */ #define ACTION_ADD 0 #define ACTION_REMOVE 1 #define ACTION_CHANGE 2 #define ACTION_CHANGE_WORKSPACE 3 #define ACTION_CHANGE_STATE 4 /* speeds */ #define SPEED_ULTRAFAST 0 #define SPEED_FAST 1 #define SPEED_MEDIUM 2 #define SPEED_SLOW 3 #define SPEED_ULTRASLOW 4 /* window states */ #define WS_FOCUSED 0 #define WS_UNFOCUSED 1 #define WS_PFOCUSED 2 /* clip title colors */ #define CLIP_NORMAL 0 #define CLIP_COLLAPSED 1 /* icon yard position */ #define IY_VERT 1 #define IY_HORIZ 0 #define IY_TOP 2 #define IY_BOTTOM 0 #define IY_RIGHT 4 #define IY_LEFT 0 /* menu styles */ #define MS_NORMAL 0 #define MS_SINGLE_TEXTURE 1 #define MS_FLAT 2 /* workspace actions */ #define WA_NONE 0 #define WA_SELECT_WINDOWS 1 #define WA_OPEN_APPMENU 2 #define WA_OPEN_WINLISTMENU 3 #define WA_SWITCH_WORKSPACES 4 #define WA_MOVE_PREVWORKSPACE 5 #define WA_MOVE_NEXTWORKSPACE 6 #define WA_SWITCH_WINDOWS 7 #define WA_MOVE_PREVWINDOW 8 #define WA_MOVE_NEXTWINDOW 9 /* workspace display position */ #define WD_NONE 0 #define WD_CENTER 1 #define WD_TOP 2 #define WD_BOTTOM 3 #define WD_TOPLEFT 4 #define WD_TOPRIGHT 5 #define WD_BOTTOMLEFT 6 #define WD_BOTTOMRIGHT 7 /* titlebar style */ #define TS_NEW 0 #define TS_OLD 1 #define TS_NEXT 2 /* workspace border position */ #define WB_NONE 0 #define WB_LEFTRIGHT 1 #define WB_TOPBOTTOM 2 #define WB_ALLDIRS (WB_LEFTRIGHT|WB_TOPBOTTOM) /* drag maximized window behaviors */ enum { DRAGMAX_MOVE, DRAGMAX_RESTORE, DRAGMAX_UNMAXIMIZE, DRAGMAX_NOMOVE }; /* program states */ typedef enum { WSTATE_NORMAL = 0, WSTATE_NEED_EXIT = 1, WSTATE_NEED_RESTART = 2, WSTATE_EXITING = 3, WSTATE_RESTARTING = 4, WSTATE_MODAL = 5, WSTATE_NEED_REREAD = 6 } wprog_state; #define WCHECK_STATE(chk_state) (w_global.program.state == (chk_state)) #define WCHANGE_STATE(nstate) {\ if (w_global.program.state == WSTATE_NORMAL \ || (nstate) != WSTATE_MODAL) \ w_global.program.state = (nstate); \ if (w_global.program.signal_state != 0) \ w_global.program.state = w_global.program.signal_state; \ } /* only call inside signal handlers, with signals blocked */ #define SIG_WCHANGE_STATE(nstate) {\ w_global.program.signal_state = (nstate); \ w_global.program.state = (nstate); \ } /* Flags for the Window Maker state when restarting/crash situations */ #define WFLAGS_NONE (0) #define WFLAGS_CRASHED (1<<0) /* notifications */ #ifdef MAINFILE #define NOTIFICATION(n) const char WN##n [] = #n #else #define NOTIFICATION(n) extern const char WN##n [] #endif NOTIFICATION(WindowAppearanceSettingsChanged); NOTIFICATION(IconAppearanceSettingsChanged); NOTIFICATION(IconTileSettingsChanged); NOTIFICATION(MenuAppearanceSettingsChanged); NOTIFICATION(MenuTitleAppearanceSettingsChanged); /* appearance settings clientdata flags */ enum { WFontSettings = 1 << 0, WTextureSettings = 1 << 1, WColorSettings = 1 << 2 }; typedef struct { int x1, y1; int x2, y2; } WArea; typedef struct WCoord { int x, y; } WCoord; extern struct WPreferences { char *pixmap_path; /* : separated list of paths to find pixmaps */ char *icon_path; /* : separated list of paths to find icons */ WMArray *fallbackWMs; /* fallback window manager list */ char *logger_shell; /* shell to log child stdi/o */ RImage *button_images; /* titlebar button images */ char smooth_workspace_back; signed char size_display; /* display type for resize geometry */ signed char move_display; /* display type for move geometry */ signed char window_placement; /* window placement mode */ signed char colormap_mode; /* colormap focus mode */ signed char focus_mode; /* window focusing mode */ char opaque_move; /* update window position during move */ char opaque_resize; /* update window position during resize */ char opaque_move_resize_keyboard; /* update window position during move,resize with keyboard */ char wrap_menus; /* wrap menus at edge of screen */ char scrollable_menus; /* let them be scrolled */ char vi_key_menus; /* use h/j/k/l to select */ char align_menus; /* align menu with their parents */ char use_saveunders; /* turn on SaveUnders for menus, icons etc. */ char no_window_over_dock; char no_window_over_icons; WCoord window_place_origin; /* Offset for windows placed on screen */ char constrain_window_size; /* don't let windows get bigger than screen */ char windows_cycling; /* windoze cycling */ char circ_raise; /* raise window after Alt-tabbing */ char ignore_focus_click; char open_transients_with_parent; /* open transient window in same workspace as parent */ signed char title_justification; /* titlebar text alignment */ int window_title_clearance; int window_title_min_height; int window_title_max_height; int menu_title_clearance; int menu_title_min_height; int menu_title_max_height; int menu_text_clearance; char multi_byte_text; #ifdef KEEP_XKB_LOCK_STATUS char modelock; #endif char no_dithering; /* use dithering or not */ char no_animations; /* enable/disable animations */ char no_autowrap; /* wrap workspace when window is moved to the edge */ char window_snapping; /* enable window snapping */ int snap_edge_detect; /* how far from edge to begin snap */ int snap_corner_detect; /* how far from corner to begin snap */ char snap_to_top_maximizes_fullscreen; char drag_maximized_window; /* behavior when a maximized window is dragged */ char move_half_max_between_heads; /* move half maximized window between available heads */ char alt_half_maximize; /* alternative half-maximize feature behavior */ char pointer_with_half_max_windows; char highlight_active_app; /* show the focused app by highlighting its icon */ char auto_arrange_icons; /* automagically arrange icons */ char icon_box_position; /* position to place icons */ signed char iconification_style; /* position to place icons */ char disable_root_mouse; /* disable button events in root window */ char auto_focus; /* focus window when it's mapped */ char *icon_back_file; /* background image for icons */ char enforce_icon_margin; /* auto-shrink icon images */ WCoord *root_menu_pos; /* initial position of the root menu*/ WCoord *app_menu_pos; WCoord *win_menu_pos; signed char icon_yard; /* aka iconbox */ int raise_delay; /* delay for autoraise. 0 is disabled */ int cmap_size; /* size of dithering colormap in colors per channel */ int icon_size; /* size of the icon */ signed char menu_style; /* menu decoration style */ signed char workspace_name_display_position; unsigned int modifier_mask; /* mask to use as kbd modifier */ char *modifier_labels[7]; /* Names of the modifiers */ unsigned int supports_tiff; /* Use tiff files */ char ws_advance; /* Create new workspace and advance */ char ws_cycle; /* Cycle existing workspaces */ char save_session_on_exit; /* automatically save session on exit */ char sticky_icons; /* If miniwindows will be onmipresent */ char dont_confirm_kill; /* do not confirm Kill application */ char disable_miniwindows; char enable_workspace_pager; char ignore_gtk_decoration_hints; char dont_blink; /* do not blink icon selection */ /* Appearance options */ char new_style; /* Use newstyle buttons */ char superfluous; /* Use superfluous things */ /* root window mouse bindings */ signed char mouse_button1; /* action for left mouse button */ signed char mouse_button2; /* action for middle mouse button */ signed char mouse_button3; /* action for right mouse button */ signed char mouse_button8; /* action for 4th button aka backward mouse button */ signed char mouse_button9; /* action for 5th button aka forward mouse button */ signed char mouse_wheel_scroll; /* action for mouse wheel scroll */ signed char mouse_wheel_tilt; /* action for mouse wheel tilt */ /* balloon text */ char window_balloon; char miniwin_title_balloon; char miniwin_preview_balloon; char appicon_balloon; char help_balloon; /* some constants */ int dblclick_time; /* double click delay time in ms */ /* animate menus */ signed char menu_scroll_speed; /* how fast menus are scrolled */ /* animate icon sliding */ signed char icon_slide_speed; /* icon slide animation speed */ /* shading animation */ signed char shade_speed; /* bouncing animation */ char bounce_appicons_when_urgent; char raise_appicons_when_bouncing; char do_not_make_appicons_bounce; int edge_resistance; int resize_increment; char attract; unsigned int workspace_border_size; /* Size in pixels of the workspace border */ char workspace_border_position; /* Where to leave a workspace border */ char single_click; /* single click to lauch applications */ int history_lines; /* history of "Run..." dialog */ char cycle_active_head_only; /* Cycle only windows on the active head */ char cycle_ignore_minimized; /* Ignore minimized windows when cycling */ char strict_windoze_cycle; /* don't close switch panel when shift is released */ char panel_only_open; /* Only open the switch panel; don't switch */ int minipreview_size; /* Size of Mini-Previews in pixels */ /* All delays here are in ms. 0 means instant auto-action. */ int clip_auto_raise_delay; /* Delay after which the clip will be raised when entered */ int clip_auto_lower_delay; /* Delay after which the clip will be lowered when leaved */ int clip_auto_expand_delay; /* Delay after which the clip will expand when entered */ int clip_auto_collapse_delay; /* Delay after which the clip will collapse when leaved */ RImage *swtileImage; RImage *swbackImage[9]; union WTexture *wsmbackTexture; char show_clip_title; struct { #ifdef USE_ICCCM_WMREPLACE unsigned int replace:1; /* replace existing window manager */ #endif unsigned int nodock:1; /* don't display the dock */ unsigned int noclip:1; /* don't display the clip */ unsigned int clip_merged_in_dock:1; /* disable clip, switch workspaces with dock */ unsigned int nodrawer:1; /* don't use drawers */ unsigned int wrap_appicons_in_dock:1; /* Whether to wrap appicons when Dock is moved up and down */ unsigned int noupdates:1; /* don't require ~/GNUstep (-static) */ unsigned int noautolaunch:1; /* don't autolaunch apps */ unsigned int norestore:1; /* don't restore session */ unsigned int restarting:2; } flags; /* internal flags */ /* Map table between w_cursor and actual X id */ Cursor cursor[WCUR_LAST]; int switch_panel_icon_size; /* icon size in switch panel */ } wPreferences; /****** Global Variables ******/ extern Display *dpy; extern struct wmaker_global_variables { /* Tracking of the state of the program */ struct { wprog_state state; wprog_state signal_state; } program; /* locale to use. NULL==POSIX or C */ const char *locale; /* Tracking of X events timestamps */ struct { /* ts of the last event we received */ Time last_event; /* ts on the last time we did XSetInputFocus() */ Time focus_change; } timestamp; /* Global Domains, for storing dictionaries */ struct { /* Note: you must #include <defaults.h> if you want to use them */ struct WDDomain *wmaker; struct WDDomain *window_attr; struct WDDomain *root_menu; } domain; /* Screens related */ int screen_count; /* * Ignore Workspace Change: * this variable is used to prevent workspace switch while certain * operations are ongoing. */ Bool ignore_workspace_change; /* * Process WorkspaceMap Event: * this variable is set when the Workspace Map window is being displayed, * it is mainly used to avoid re-opening another one at the same time */ Bool process_workspacemap_event; #ifdef HAVE_INOTIFY struct { int fd_event_queue; /* Inotify's queue file descriptor */ int wd_defaults; /* Watch Descriptor for the 'Defaults' configuration file */ } inotify; #endif /* definition for X Atoms */ struct { /* Window-Manager related */ struct { Atom state; Atom change_state; Atom protocols; Atom take_focus; Atom delete_window; Atom save_yourself; Atom client_leader; Atom colormap_windows; Atom colormap_notify; Atom ignore_focus_events; } wm; /* GNUStep related */ struct { Atom wm_attr; Atom wm_miniaturize_window; Atom wm_resizebar; Atom titlebar_state; } gnustep; /* Destkop-environment related */ struct { Atom gtk_object_path; } desktop; /* WindowMaker specific */ struct { Atom menu; Atom wm_protocols; Atom state; Atom wm_function; Atom noticeboard; Atom command; Atom icon_size; Atom icon_tile; } wmaker; } atom; /* X Contexts */ struct { XContext client_win; XContext app_win; XContext stack; } context; /* X Extensions */ struct { #ifdef USE_XSHAPE struct { Bool supported; int event_base; } shape; #endif #ifdef KEEP_XKB_LOCK_STATUS struct { Bool supported; int event_base; } xkb; #endif #ifdef USE_RANDR struct { Bool supported; int event_base; } randr; #endif /* * If no extension were activated, we would end up with an empty * structure, which old compilers may not appreciate, so let's * work around this with a simple: */ int dummy; } xext; /* Keyboard and shortcuts */ struct { /* * Bit-mask to hide special key modifiers which we don't want to * impact the shortcuts (typically: CapsLock, NumLock, ScrollLock) */ unsigned int modifiers_mask; } shortcut; } w_global; /****** Notifications ******/ extern const char WMNManaged[]; extern const char WMNUnmanaged[]; extern const char WMNChangedWorkspace[]; extern const char WMNChangedState[]; extern const char WMNChangedFocus[]; extern const char WMNChangedStacking[]; extern const char WMNChangedName[]; extern const char WMNWorkspaceCreated[]; extern const char WMNWorkspaceDestroyed[]; extern const char WMNWorkspaceChanged[]; extern const char WMNWorkspaceNameChanged[]; extern const char WMNResetStacking[]; #endif ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/usermenu.c�������������������������������������������������������������������0000644�0001750�0001750�00000020305�13431646202�013565� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* usermenu.c- user defined menu * * Window Maker window manager * * Copyright (c) hmmm... Should I put everybody's name here? * Where's my lawyer?? -- ]d :D * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * * * * * * * * * * * User defined menu is good, but beer's always better * if someone wanna start hacking something, He heard... * TODO * - enhance commands. (eg, exit, hide, list all app's member * window and etc) * - cache menu... dunno.. if people really use this feature :P * - Violins, senseless violins! * that's all, right now :P * - external! WINGs menu editor. * TODONOT * - allow applications to share their menu. ] think it * looks weird since there still are more than 1 appicon. * * Syntax... * ( * "Program Name", * ("Command 1", SHORTCUT, 1), * ("Command 2", SHORTCUT, 2, ("Allowed_instant_1", "Allowed_instant_2")), * ("Command 3", SHORTCUT, (3,4,5), ("Allowed_instant_1")), * ( * "Submenu", * ("Kill Command", KILL), * ("Hide Command", HIDE), * ("Hide Others Command", HIDE_OTHERS), * ("Members", MEMBERS), * ("Exit Command", EXIT) * ) * ) * * Tips: * - If you don't want short cut keys to be listed * in the right side of entries, you can just put them * in array instead of using the string directly. * */ #include "wconfig.h" #ifdef USER_MENU #include <X11/Xlib.h> #include <X11/Xutil.h> #include <X11/Xproto.h> #include <X11/Xatom.h> #include <stdlib.h> #include <string.h> #include <stdio.h> #include <unistd.h> #include "WindowMaker.h" #include "menu.h" #include "actions.h" #include "keybind.h" #include "xmodifier.h" #include "misc.h" #include "framewin.h" #define MAX_SHORTCUT_LENGTH 32 typedef struct { WScreen *screen; WShortKey *key; int key_no; } WUserMenuData; static void notifyClient(WMenu *menu, WMenuEntry *entry) { XEvent event; WUserMenuData *data = entry->clientdata; WScreen *scr = data->screen; Window window; int i; (void) menu; window = scr->focused_window->client_win; for (i = 0; i < data->key_no; i++) { event.xkey.type = KeyPress; event.xkey.display = dpy; event.xkey.window = window; event.xkey.root = DefaultRootWindow(dpy); event.xkey.subwindow = (Window) None; event.xkey.x = 0x0; event.xkey.y = 0x0; event.xkey.x_root = 0x0; event.xkey.y_root = 0x0; event.xkey.keycode = data->key[i].keycode; event.xkey.state = data->key[i].modifier; event.xkey.same_screen = True; event.xkey.time = CurrentTime; if (XSendEvent(dpy, window, False, KeyPressMask, &event)) { event.xkey.type = KeyRelease; event.xkey.time = CurrentTime; XSendEvent(dpy, window, True, KeyReleaseMask, &event); } } } static void removeUserMenudata(void *menudata) { WUserMenuData *data = menudata; if (data->key) wfree(data->key); wfree(data); } static WUserMenuData *convertShortcuts(WScreen *scr, WMPropList *shortcut) { WUserMenuData *data; KeySym ksym; char *k, buf[MAX_SHORTCUT_LENGTH], *b; int keycount, i, j, mod; if (WMIsPLString(shortcut)) keycount = 1; else if (WMIsPLArray(shortcut)) keycount = WMGetPropListItemCount(shortcut); else return NULL; data = wmalloc(sizeof(WUserMenuData)); if (!data) return NULL; data->key = wmalloc(sizeof(WShortKey) * keycount); if (!data->key) { wfree(data); return NULL; } for (i = 0, j = 0; i < keycount; i++) { data->key[j].modifier = 0; if (WMIsPLArray(shortcut)) wstrlcpy(buf, WMGetFromPLString(WMGetFromPLArray(shortcut, i)), MAX_SHORTCUT_LENGTH); else wstrlcpy(buf, WMGetFromPLString(shortcut), MAX_SHORTCUT_LENGTH); b = (char *) buf; while ((k = strchr(b, '+')) != NULL) { *k = 0; mod = wXModifierFromKey(b); if (mod < 0) break; data->key[j].modifier |= mod; b = k + 1; } ksym = XStringToKeysym(b); if (ksym == NoSymbol) continue; data->key[j].keycode = XKeysymToKeycode(dpy, ksym); if (data->key[j].keycode) j++; } /* get key */ if (!j) { puts("fatal j"); wfree(data->key); wfree(data); return NULL; } data->key_no = j; data->screen = scr; return data; } static WMenu *configureUserMenu(WScreen *scr, WMPropList *plum) { char *mtitle; WMenu *menu = NULL; WMPropList *elem, *title, *command, *params = NULL; int count, i; WUserMenuData *data; if (!plum) return NULL; if (!WMIsPLArray(plum)) return NULL; count = WMGetPropListItemCount(plum); if (!count) return NULL; elem = WMGetFromPLArray(plum, 0); if (!WMIsPLString(elem)) return NULL; mtitle = WMGetFromPLString(elem); menu = wMenuCreateForApp(scr, mtitle, True); for (i = 1; i < count; i++) { elem = WMGetFromPLArray(plum, i); if (WMIsPLArray(WMGetFromPLArray(elem, 1))) { WMenu *submenu; WMenuEntry *mentry = NULL; submenu = configureUserMenu(scr, elem); if (submenu) mentry = wMenuAddCallback(menu, submenu->frame->title, NULL, NULL); wMenuEntrySetCascade(menu, mentry, submenu); } else { int idx = 0; WMPropList *instances = 0; title = WMGetFromPLArray(elem, idx++); command = WMGetFromPLArray(elem, idx++); if (WMGetPropListItemCount(elem) >= 3) params = WMGetFromPLArray(elem, idx++); if (!title || !command) return menu; if (!strcmp("SHORTCUT", WMGetFromPLString(command))) { WMenuEntry *entry; data = convertShortcuts(scr, params); if (data) { entry = wMenuAddCallback(menu, WMGetFromPLString(title), notifyClient, data); if (entry) { if (WMIsPLString(params)) entry->rtext = GetShortcutString(WMGetFromPLString(params)); entry->free_cdata = removeUserMenudata; if (WMGetPropListItemCount(elem) >= 4) { instances = WMGetFromPLArray(elem, idx++); if (WMIsPLArray(instances)) if (instances && WMGetPropListItemCount(instances) && WMIsPLArray(instances)) { entry->instances = WMRetainPropList(instances); } } } } } } } return menu; } void wUserMenuRefreshInstances(WMenu *menu, WWindow *wwin) { int i, j, count, paintflag; paintflag = 0; if (!menu) return; for (i = 0; i < menu->entry_no; i++) { if (menu->entries[i]->instances) { WMPropList *ins; int oldflag; count = WMGetPropListItemCount(menu->entries[i]->instances); oldflag = menu->entries[i]->flags.enabled; menu->entries[i]->flags.enabled = 0; for (j = 0; j < count; j++) { ins = WMGetFromPLArray(menu->entries[i]->instances, j); if (!strcmp(wwin->wm_instance, WMGetFromPLString(ins))) { menu->entries[i]->flags.enabled = 1; break; } } if (oldflag != menu->entries[i]->flags.enabled) paintflag = 1; } } for (i = 0; i < menu->cascade_no; i++) { if (!menu->cascades[i]->flags.brother) wUserMenuRefreshInstances(menu->cascades[i], wwin); else wUserMenuRefreshInstances(menu->cascades[i]->brother, wwin); } if (paintflag) wMenuPaint(menu); } static WMenu *readUserMenuFile(WScreen *scr, const char *file_name) { WMenu *menu = NULL; WMPropList *plum; plum = WMReadPropListFromFile(file_name); if (plum) { menu = configureUserMenu(scr, plum); WMReleasePropList(plum); } return menu; } WMenu *wUserMenuGet(WScreen *scr, WWindow *wwin) { WMenu *menu = NULL; char *tmp, *path = NULL; if (wwin && wwin->wm_instance && wwin->wm_class) { int len = strlen(wwin->wm_instance) + strlen(wwin->wm_class) + 7; tmp = wmalloc(len); snprintf(tmp, len, "%s.%s.menu", wwin->wm_instance, wwin->wm_class); path = wfindfile(DEF_USER_MENU_PATHS, tmp); wfree(tmp); if (!path) return NULL; menu = readUserMenuFile(scr, path); wfree(path); } return menu; } #endif /* USER_MENU */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/extend_pixmaps.h�������������������������������������������������������������0000644�0001750�0001750�00000006354�13431646202�014767� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "wconfig.h" static char *PRED_XKBGROUP1_XPM[] = { " 10 10 2 1", ". c #000000", "# c None", "........##", ".......###", "..########", "..########", "......####", ".....#####", "..########", "..########", "........##", "........##" }; #ifdef LANGUAGE_TH static char *PRED_XKBGROUP2_XPM[] = { " 10 10 2 1", ". c #000000", "# c None", "#..###..##", ".#..#.#..#", ".#...###..", "#...####..", "##..####..", "##..####..", "##..####..", "##..####..", "##..####..", "##.#####.#" }; #elif defined LANGUAGE_SK static char *PRED_XKBGROUP2_XPM[] = { " 10 10 2 1", ". c #000000", "# c None", "####..####", "####..####", "##......##", "##......##", "####..####", "#........#", "#........#", "####..####", "###....###", "##......##"}; #elif defined LANGUAGE_EL static char *PRED_XKBGROUP2_XPM[] = { " 10 10 2 1", ". c #000000", "# c None", "##..######", "##..##....", "......####", "##..##....", "##..######", "..........", "##########", "..........", "##########", "##########"}; #else static char *PRED_XKBGROUP2_XPM[] = { " 10 10 2 1", ". c #000000", "# c None", "##########", "#...##...#", "..........", "..........", "..........", "..........", "#........#", "##......##", "###....###", "####..####" }; #endif static char *PRED_XKBGROUP3_XPM[] = { " 10 10 2 1", ". c #000000", "# c None", "..........", "..........", "..##..##..", "..##..##..", "..........", "..........", "..######..", "...####...", "....##....", ".........." }; static char *PRED_XKBGROUP4_XPM[] = { " 10 10 2 1", ". c #000000", "# c None", "..........", ".########.", ".#..##..#.", ".#..##..#.", ".########.", ".#......#.", ".##....##.", ".###..###.", ".########.", ".........." }; static char *NEXT_XKBGROUP1_XPM[] = { "10 10 6 1", " c None", ". c #E0E0E0", "+ c #7D7D7D", "@ c #363636", "# c #080808", "$ c #BDBDBD", ".........+", "..@@@@@@++", "..@####+++", "..#+$$$$++", "..###+.$++", "..#++..$++", "..#$.$$$++", "..#@@@@+++", ".$+#####@@", "+++++++@@@"}; static char *NEXT_XKBGROUP2_XPM[] = { "10 10 6 1", " c None", ". c #E0E0E0", "+ c #7D7D7D", "@ c #BDBDBD", "# c #080808", "$ c #363636", ".........+", ".@##@@$#++", ".#.+#+###+", ".#+######+", ".########+", "..######++", "..@####+++", ".@@@#$++++", ".@++#$++$$", "+++++++$$$"}; static char *NEXT_XKBGROUP3_XPM[] = { "10 10 6 1", " c None", ". c #E0E0E0", "+ c #7D7D7D", "@ c #BDBDBD", "# c #080808", "$ c #363636", ".........+", "..@####.++", ".@######.+", ".#.+##.+#+", ".#++##++#+", ".########+", ".##@##@##+", ".+##@@##$+", ".@+####$$$", "+++++++$$$"}; static char *NEXT_XKBGROUP4_XPM[] = { "10 10 6 1", " c None", ". c #E0E0E0", "+ c #7D7D7D", "@ c #BDBDBD", "# c #080808", "$ c #363636", ".........+", "..@####.++", ".@#@@@@#.+", ".##$@@#$#+", ".#$$@@$$#+", ".#@@@@++#+", ".#+#++#.#+", ".+#+##$#$+", ".@+####$$$", "+++++++$$$"}; ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/dockedapp.h������������������������������������������������������������������0000644�0001750�0001750�00000003164�13431646202�013665� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2003 Alfredo K. Kojima * Copyright (c) 1998-2003 Dan Pascu * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef WMDOCKEDAPP_H_ #define WMDOCKEDAPP_H_ typedef struct _AppSettingsPanel { WMWindow *win; WAppIcon *editedIcon; WWindow *wwin; WMLabel *iconLabel; WMLabel *nameLabel; WMFrame *commandFrame; WMTextField *commandField; WMFrame *dndCommandFrame; WMTextField *dndCommandField; WMLabel *dndCommandLabel; WMFrame *pasteCommandFrame; WMTextField *pasteCommandField; WMLabel *pasteCommandLabel; WMFrame *iconFrame; WMTextField *iconField; WMButton *browseBtn; WMButton *autoLaunchBtn; WMButton *lockBtn; WMButton *okBtn; WMButton *cancelBtn; Window parent; /* kluge */ unsigned int destroyed:1; unsigned int choosingIcon:1; } AppSettingsPanel; void DestroyDockAppSettingsPanel(AppSettingsPanel *panel); void ShowDockAppSettingsPanel(WAppIcon *aicon); #endif ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/osdep_darwin.c���������������������������������������������������������������0000644�0001750�0001750�00000004151�13431646202�014401� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include <sys/types.h> #include <sys/sysctl.h> #include <assert.h> #include <stdlib.h> #include <string.h> #include <WINGs/WUtil.h> #include "wconfig.h" #include "osdep.h" /* * copy argc and argv for an existing process identified by `pid' * into suitable storage given in ***argv and *argc. * * subsequent calls use the same static area for argv and argc. * * returns 0 for failure, in which case argc := 0 and argv := NULL * returns 1 for success */ Bool GetCommandForPid(int pid, char ***argv, int *argc) #ifdef KERN_PROCARGS2 { int j, mib[4]; unsigned int i, idx; size_t count; static char *args = NULL; static int argmax = 0; *argv = NULL; *argc = 0; /* the system-wide limit */ if (argmax == 0) { /* it hopefully doesn't change at runtime *g* */ mib[0] = CTL_KERN; mib[1] = KERN_ARGMAX; mib[2] = 0; mib[3] = 0; count = sizeof(argmax); if (sysctl(mib, 2, &argmax, &count, NULL, 0) == -1) return False; } /* if argmax is still 0, something went very seriously wrong */ assert(argmax > 0); /* space for args; no need to free before returning even on errors */ if (args == NULL) args = (char *)wmalloc(argmax); /* get process args */ mib[0] = CTL_KERN; mib[1] = KERN_PROCARGS2; mib[2] = pid; count = argmax; if (sysctl(mib, 3, args, &count, NULL, 0) == -1 || count == 0) return False; /* get argc, skip */ memcpy(argc, args, sizeof(*argc)); idx = sizeof(*argc); while (args[idx++] != '\0') /* skip execname */ ; while (args[idx] == '\0') /* padding too */ idx++; /* args[idx] is at at begininng of args now */ *argv = (char **)wmalloc(sizeof(char *) * (*argc + 1 /* term. null ptr */)); (*argv)[0] = args + idx; /* go through args, set argv[$next] to the beginning of each string */ for (i = 0, j = 1; i < count - idx /* do not overrun */; i++) { if (args[idx + i] != '\0') continue; if (args[idx + i] == '\0') (*argv)[j++] = &args[idx + i + 1]; if (j == *argc) break; } /* the list of arguments must be terminated by a null pointer */ (*argv)[j] = NULL; return True; } #else /* !KERN_PROCARGS2 */ { *argv = NULL; *argc = 0; return False; } #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/appmenu.h��������������������������������������������������������������������0000644�0001750�0001750�00000002063�13431646202�013375� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* appmenu.h- application defined menu * * Window Maker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef _WAPPMENU_H_ #define _WAPPMENU_H_ WMenu *wAppMenuGet(WScreen *scr, Window window); void wAppMenuDestroy(WMenu *menu); void wAppMenuMap(WMenu *menu, WWindow *wwin); void wAppMenuUnmap(WMenu *menu); #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/Makefile.am������������������������������������������������������������������0000644�0001750�0001750�00000007676�13431646202�013632� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������AUTOMAKE_OPTIONS = BUILT_SOURCES = wconfig.h bin_PROGRAMS = wmaker EXTRA_DIST = 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 \ colormap.h \ cycling.c \ cycling.h \ def_pixmaps.h \ defaults.c \ defaults.h \ dialog.c \ dialog.h \ dock.c \ dockedapp.c \ dockedapp.h \ dock.h \ event.c \ event.h \ extend_pixmaps.h \ framewin.c \ framewin.h \ geomview.c \ geomview.h \ osdep.h \ icon.c \ icon.h \ keybind.h \ main.c \ main.h \ menu.c \ menu.h \ misc.h \ monitor.c \ monitor.h \ moveres.c \ pixmap.c \ pixmap.h \ placement.c \ placement.h \ properties.c \ properties.h \ resources.c \ resources.h \ rootmenu.c \ rootmenu.h \ screen.c \ screen.h \ session.h \ session.c \ shutdown.h \ shutdown.c \ switchpanel.c \ switchpanel.h \ stacking.c \ stacking.h \ startup.c \ startup.h \ superfluous.c \ superfluous.h \ switchmenu.c \ switchmenu.h \ texture.c \ texture.h \ usermenu.c \ usermenu.h \ xdnd.h \ xinerama.h \ xinerama.c \ xmodifier.h \ xutil.c \ xutil.h \ wconfig.h \ wcore.c \ wcore.h \ wdefaults.c \ wdefaults.h \ window.c \ window.h \ winmenu.c \ winmenu.h \ winspector.h \ winspector.c \ wmspec.h \ wmspec.c \ workspace.c \ workspace.h \ wsmap.c \ wsmap.h if USE_DOCK_XDND wmaker_SOURCES += xdnd.c endif if USE_MWM_HINTS wmaker_SOURCES += motif.h motif.c endif if WM_OSDEP_BSD wmaker_SOURCES += osdep_bsd.c endif if WM_OSDEP_DARWIN wmaker_SOURCES += osdep_darwin.c endif if WM_OSDEP_LINUX wmaker_SOURCES += osdep_linux.c endif if WM_OSDEP_GENERIC wmaker_SOURCES += osdep_stub.c endif if USE_NESTED_FUNC wmaker_SOURCES += misc.c \ xmodifier.c else nodist_wmaker_SOURCES = misc.hack_nf.c \ xmodifier.hack_nf.c CLEANFILES = $(nodist_wmaker_SOURCES) misc.hack_nf.c: misc.c $(top_srcdir)/script/nested-func-to-macro.sh $(AM_V_GEN)$(top_srcdir)/script/nested-func-to-macro.sh \ $(srcdir)/misc.c -o $(builddir)/misc.hack_nf.c \ -f "append_string" -f "append_modifier" xmodifier.hack_nf.c: xmodifier.c $(top_srcdir)/script/nested-func-to-macro.sh $(AM_V_GEN)$(top_srcdir)/script/nested-func-to-macro.sh \ $(srcdir)/xmodifier.c -o $(builddir)/xmodifier.hack_nf.c \ -f "modwarn" -f "modbarf" -f "check_modifier" -f "store_modifier" endif AM_CFLAGS = AM_CPPFLAGS = $(DFLAGS) \ -I$(top_srcdir)/wrlib \ -I$(top_srcdir)/WINGs @HEADER_SEARCH_PATH@ wmaker_LDADD = \ $(top_builddir)/WINGs/libWINGs.la\ $(top_builddir)/WINGs/libWUtil.la\ $(top_builddir)/wrlib/libwraster.la\ @XLFLAGS@ \ @LIBXRANDR@ \ @LIBXINERAMA@ \ @XLIBS@ \ @LIBM@ \ @INTLIBS@ ###################################################################### # Create a 'silent rule' for our make check the same way automake does AM_V_CHKOPTS = $(am__v_CHKOPTS_$(V)) am__v_CHKOPTS_ = $(am__v_CHKOPTS_$(AM_DEFAULT_VERBOSITY)) am__v_CHKOPTS_0 = @echo " CHK $@" ; am__v_CHKOPTS_1 = check-local: defaults-callbacks-static defaults-callbacks-dynamic # Check that the callback functions used to load the configuration match # the type of the variable where the value will be stored defaults-callbacks-static: $(AM_V_CHKOPTS)$(top_srcdir)/script/check-wmaker-loaddef-callbacks.sh \ --source "$(srcdir)/defaults.c" --structure "staticOptionList" \ --field-value-ptr 4 --field-callback 5 \ --struct-def "wPreferences=$(srcdir)/WindowMaker.h" \ --callback "getBool=char, getEnum=char, getInt=int" \ --callback "getModMask=int" defaults-callbacks-dynamic: $(AM_V_CHKOPTS)$(top_srcdir)/script/check-wmaker-loaddef-callbacks.sh \ --source "$(srcdir)/defaults.c" --structure "optionList" \ --field-value-ptr 4 --field-callback 5 \ --struct-def "wPreferences=$(srcdir)/WindowMaker.h" \ --struct-def "legacy_minipreview_config=$(srcdir)/defaults.c" \ --callback "getBool=char, getEnum=char, getInt=int" \ --callback "getPathList=char*, getCoord=WCoord" ������������������������������������������������������������������WindowMaker-0.95.9/src/client.c���������������������������������������������������������������������0000644�0001750�0001750�00000047473�13431646202�013217� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "wconfig.h" #include <X11/Xlib.h> #include <X11/Xutil.h> #include <X11/Xatom.h> #ifdef USE_XSHAPE #include <X11/extensions/shape.h> #endif #include <stdlib.h> #include <stdio.h> #include <string.h> #include "WindowMaker.h" #include "framewin.h" #include "window.h" #include "properties.h" #include "actions.h" #include "icon.h" #include "client.h" #include "colormap.h" #include "stacking.h" #include "appicon.h" #include "appmenu.h" #include "wmspec.h" #include "misc.h" /* *-------------------------------------------------------------------- * wClientRestore-- * Reparent the window back to the root window. * *-------------------------------------------------------------------- */ void wClientRestore(WWindow * wwin) { #if 0 int gx, gy; wClientGetGravityOffsets(wwin, &gx, &gy); /* set the position of the frame on screen */ wwin->frame_x -= gx * wwin->screen_ptr->frame_border_width; wwin->frame_y -= gy * wwin->screen_ptr->frame_border_width; /* if gravity is to the south, account for the border sizes */ if (gy > 0) wwin->frame_y += (wwin->frame->top_width + wwin->frame->bottom_width); #endif 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); /* don't let the window get iconified after restart */ /* if (wwin->flags.shaded) wClientSetState(wwin, NormalState, None); */ } /* *---------------------------------------------------------------------- * wClientSetState-- * Set the state of the client window to one of the window * states defined in ICCCM (Iconic, Withdrawn, Normal) * * Side effects: * The WM_STATE property of the window is updated as well as the * WWindow.state variable. *---------------------------------------------------------------------- */ void wClientSetState(WWindow * wwin, int state, Window icon_win) { long data[2]; wwin->state = state; data[0] = (unsigned long)state; data[1] = (unsigned long)icon_win; XChangeProperty(dpy, wwin->client_win, w_global.atom.wm.state, w_global.atom.wm.state, 32, PropModeReplace, (unsigned char *)data, 2); } void wClientGetGravityOffsets(WWindow * wwin, int *ofs_x, int *ofs_y) { switch (wwin->normal_hints->win_gravity) { case ForgetGravity: case CenterGravity: case StaticGravity: *ofs_x = 0; *ofs_y = 0; break; case NorthWestGravity: *ofs_x = -1; *ofs_y = -1; break; case NorthGravity: *ofs_x = 0; *ofs_y = -1; break; case NorthEastGravity: *ofs_x = 1; *ofs_y = -1; break; case WestGravity: *ofs_x = -1; *ofs_y = 0; break; case EastGravity: *ofs_x = 1; *ofs_y = 0; break; case SouthWestGravity: *ofs_x = -1; *ofs_y = 1; break; case SouthGravity: *ofs_x = 0; *ofs_y = 1; break; case SouthEastGravity: *ofs_x = 1; *ofs_y = 1; break; } } void wClientConfigure(WWindow * wwin, XConfigureRequestEvent * xcre) { XWindowChanges xwc; int nx, ny, nwidth, nheight; int ofs_x, ofs_y; /* printf("configure event: %d %d %d %d\n", xcre->x, xcre->y, xcre->width, xcre->height); */ if (wwin == NULL) { /* * configure a window that was not mapped by us */ xwc.x = xcre->x; xwc.y = xcre->y; xwc.width = xcre->width; xwc.height = xcre->height; xwc.border_width = xcre->border_width; xwc.stack_mode = xcre->detail; xwc.sibling = xcre->above; XConfigureWindow(dpy, xcre->window, xcre->value_mask, &xwc); return; } #ifdef USE_XSHAPE if (w_global.xext.shape.supported) { int junk; unsigned int ujunk; int b_shaped; XShapeSelectInput(dpy, wwin->client_win, ShapeNotifyMask); XShapeQueryExtents(dpy, wwin->client_win, &b_shaped, &junk, &junk, &ujunk, &ujunk, &junk, &junk, &junk, &ujunk, &ujunk); wwin->flags.shaped = b_shaped; } #endif if (xcre->value_mask & CWStackMode) { WObjDescriptor *desc; WWindow *sibling; if ((xcre->value_mask & CWSibling) && (XFindContext(dpy, xcre->above, w_global.context.client_win, (XPointer *) & desc) == XCSUCCESS) && (desc->parent_type == WCLASS_WINDOW)) { sibling = desc->parent; xwc.sibling = sibling->frame->core->window; } else { xwc.sibling = xcre->above; } xwc.stack_mode = xcre->detail; XConfigureWindow(dpy, wwin->frame->core->window, xcre->value_mask & (CWSibling | CWStackMode), &xwc); /* fix stacking order */ RemakeStackList(wwin->screen_ptr); } wClientGetGravityOffsets(wwin, &ofs_x, &ofs_y); if (xcre->value_mask & CWBorderWidth) { wwin->old_border_width = xcre->border_width; } if (!wwin->flags.shaded) { /* If the window is shaded, wrong height will be set for the window */ if (xcre->value_mask & CWX) { nx = xcre->x; /* Subtracting the border makes the window shift by 1 pixel -Dan */ /*if (HAS_BORDER(wwin)) { nx -= wwin->screen_ptr->frame_border_width; } */ } else { nx = wwin->frame_x; } if (xcre->value_mask & CWY) { ny = xcre->y - ((ofs_y < 0) ? 0 : wwin->frame->top_width); /* Subtracting the border makes the window shift by 1 pixel -Dan */ /*if (HAS_BORDER(wwin)) { ny -= wwin->screen_ptr->frame_border_width; } */ } else { ny = wwin->frame_y; } if (xcre->value_mask & CWWidth) nwidth = xcre->width; else nwidth = wwin->frame->core->width; if (xcre->value_mask & CWHeight) nheight = xcre->height; else nheight = wwin->frame->core->height - wwin->frame->top_width - wwin->frame->bottom_width; /* Don't overwrite the saved geometry unnecessarily. */ if (!(xcre->value_mask & (CWX | CWY | CWWidth | CWHeight))) return; if (nwidth != wwin->old_geometry.width) wwin->flags.maximized &= ~(MAX_HORIZONTAL | MAX_TOPHALF | MAX_BOTTOMHALF | MAX_MAXIMUS); if (nheight != wwin->old_geometry.height) wwin->flags.maximized &= ~(MAX_VERTICAL | MAX_LEFTHALF | MAX_RIGHTHALF | MAX_MAXIMUS); wWindowConfigure(wwin, nx, ny, nwidth, nheight); wwin->old_geometry.x = nx; wwin->old_geometry.y = ny; wwin->old_geometry.width = nwidth; wwin->old_geometry.height = nheight; } } void wClientSendProtocol(WWindow * wwin, Atom protocol, Time time) { XEvent event; event.xclient.type = ClientMessage; event.xclient.message_type = w_global.atom.wm.protocols; event.xclient.format = 32; event.xclient.display = dpy; event.xclient.window = wwin->client_win; event.xclient.data.l[0] = protocol; event.xclient.data.l[1] = time; event.xclient.data.l[2] = 0; event.xclient.data.l[3] = 0; XSendEvent(dpy, wwin->client_win, False, NoEventMask, &event); XSync(dpy, False); } void wClientKill(WWindow * wwin) { XKillClient(dpy, wwin->client_win); XFlush(dpy); } /* *---------------------------------------------------------------------- * wClientCheckProperty-- * Handles PropertyNotify'es, verifying which property was * changed and updating internal state according to that, like redrawing * the icon title when it is changed. * * Side effects: * Depends on the changed property. * * TODO: _GNUSTEP_WM_ATTR *---------------------------------------------------------------------- */ void wClientCheckProperty(WWindow * wwin, XPropertyEvent * event) { XWindowAttributes attribs; XWMHints *new_hints; int i, g1, g2; char *tmp = NULL; switch (event->atom) { case XA_WM_NAME: if (!wwin->flags.net_has_title) { /* window title was changed */ if (!wFetchName(dpy, wwin->client_win, &tmp)) { wWindowUpdateName(wwin, NULL); } else { wWindowUpdateName(wwin, tmp); } if (tmp) XFree(tmp); } break; case XA_WM_ICON_NAME: /* Title has changed, update the icon title */ if (wwin->icon) { wIconChangeTitle(wwin->icon, wwin); wIconPaint(wwin->icon); } break; case XA_WM_COMMAND: if (wwin->main_window != None) { WApplication *wapp = wApplicationOf(wwin->main_window); char *command; if (!wapp || !wapp->app_icon || wapp->app_icon->docked) break; command = GetCommandForWindow(wwin->main_window); if (command) { if (wapp->app_icon->command) wfree(wapp->app_icon->command); wapp->app_icon->command = command; } } break; case XA_WM_HINTS: /* WM_HINTS */ new_hints = XGetWMHints(dpy, wwin->client_win); /* group leader update * * This means that the window is setting the leader after * it was mapped, changing leaders or removing the leader. * * Valid state transitions are: * * _1 __2 * / \ / \ * v | v | * (GC) (GC') * / ^ / ^ * 3| |4 5| |6 * | | | | * v / v / * (G'C) (G'C') * * Where G is the window_group hint, C is CLIENT_LEADER property * and ' indicates the hint is unset. * * 1,2 - change group leader to new value of window_group * 3 - change leader to value of CLIENT_LEADER * 4 - change leader to value of window_group * 5 - destroy application * 6 - create application */ if (new_hints && (new_hints->flags & WindowGroupHint) && new_hints->window_group != None) { g2 = 1; } else { g2 = 0; } if (wwin->wm_hints && (wwin->wm_hints->flags & WindowGroupHint) && wwin->wm_hints->window_group != None) { g1 = 1; } else { g1 = 0; } if (wwin->client_leader) { if (g1 && g2 && wwin->wm_hints->window_group != new_hints->window_group) { i = 1; } else if (g1 && !g2) { i = 3; } else if (!g1 && g2) { i = 4; } else { i = 0; } } else { if (g1 && g2 && wwin->wm_hints->window_group != new_hints->window_group) { i = 2; } else if (g1 && !g2) { i = 5; } else if (!g1 && g2) { i = 6; } else { i = 0; } } /* Handling this may require more work. -Dan */ if (wwin->fake_group != NULL) { i = 7; } if (wwin->wm_hints) XFree(wwin->wm_hints); wwin->wm_hints = new_hints; /* do action according to state transition */ switch (i) { /* 3 - change leader to value of CLIENT_LEADER */ case 3: wApplicationDestroy(wApplicationOf(wwin->main_window)); wwin->main_window = wwin->client_leader; wwin->group_id = None; wApplicationCreate(wwin); break; /* 1,2,4 - change leader to new value of window_group */ case 1: case 2: case 4: wApplicationDestroy(wApplicationOf(wwin->main_window)); wwin->main_window = new_hints->window_group; wwin->group_id = wwin->main_window; wApplicationCreate(wwin); break; /* 5 - destroy application */ case 5: wApplicationDestroy(wApplicationOf(wwin->main_window)); wwin->main_window = None; wwin->group_id = None; break; /* 6 - create application */ case 6: wwin->main_window = new_hints->window_group; wwin->group_id = wwin->main_window; wApplicationCreate(wwin); break; /* 7 - we have a fake window group id, so just ignore anything else */ case 7: break; } if (wwin->wm_hints) { /* update icon */ if ((wwin->wm_hints->flags & IconPixmapHint) || (wwin->wm_hints->flags & IconWindowHint)) { WApplication *wapp; if (wwin->flags.miniaturized && wwin->icon) wIconUpdate(wwin->icon); wapp = wApplicationOf(wwin->main_window); if (wapp && wapp->app_icon) { wIconUpdate(wapp->app_icon->icon); wAppIconPaint(wapp->app_icon); } } if (wwin->wm_hints->flags & UrgencyHint) wwin->flags.urgent = 1; else wwin->flags.urgent = 0; wAppBounceWhileUrgent(wApplicationOf(wwin->main_window)); /*} else if (wwin->fake_group!=NULL) { wwin->group_id = wwin->fake_group->leader; */ } else { wwin->group_id = None; } break; case XA_WM_NORMAL_HINTS: /* normal (geometry) hints */ { int foo; unsigned bar; if (XGetWindowAttributes(dpy, wwin->client_win, &attribs) != 0) wClientGetNormalHints(wwin, &attribs, False, &foo, &foo, &bar, &bar); /* TODO: should we check for consistency of the current * size against the new geometry hints? */ } break; case XA_WM_TRANSIENT_FOR: { Window new_owner; WWindow *owner; if (!XGetTransientForHint(dpy, wwin->client_win, &new_owner)) { new_owner = None; } else { if (new_owner == 0 || new_owner == wwin->client_win) { new_owner = wwin->screen_ptr->root_win; } } if (new_owner != wwin->transient_for) { owner = wWindowFor(wwin->transient_for); if (owner) { if (owner->flags.semi_focused) { owner->flags.semi_focused = 0; if ((owner->flags.mapped || owner->flags.shaded) && owner->frame) wFrameWindowPaint(owner->frame); } } owner = wWindowFor(new_owner); if (owner) { if (!owner->flags.semi_focused) { owner->flags.semi_focused = 1; if ((owner->flags.mapped || owner->flags.shaded) && owner->frame) wFrameWindowPaint(owner->frame); } } wwin->transient_for = new_owner; if (new_owner == None) { if (WFLAGP(wwin, no_miniaturizable)) { wwin->client_flags.no_miniaturizable = 0; wwin->client_flags.no_miniaturize_button = 0; if (wwin->frame) wWindowConfigureBorders(wwin); } } else if (!WFLAGP(wwin, no_miniaturizable)) { wwin->client_flags.no_miniaturizable = 1; wwin->client_flags.no_miniaturize_button = 1; if (wwin->frame) wWindowConfigureBorders(wwin); } } } break; default: if (event->atom == w_global.atom.wm.protocols) { PropGetProtocols(wwin->client_win, &wwin->protocols); wwin->client_flags.kill_close = !wwin->protocols.DELETE_WINDOW; if (wwin->frame) wWindowUpdateButtonImages(wwin); } else if (event->atom == w_global.atom.wm.colormap_windows) { GetColormapWindows(wwin); wColormapInstallForWindow(wwin->screen_ptr, wwin); } else if (event->atom == w_global.atom.wmaker.menu) { WApplication *wapp; wapp = wApplicationOf(wwin->main_window); if (wapp) { if (wapp->menu) { /* update menu */ /* TODO: remake appmenu update */ wAppMenuDestroy(wapp->menu); } if (wwin->fake_group) { WScreen *scr = wwin->screen_ptr; WWindow *foo = scr->focused_window; WFakeGroupLeader *fPtr = wwin->fake_group; wApplicationDestroy(wapp); while (foo) { if (foo->fake_group && foo->fake_group == fPtr) { foo->client_flags.shared_appicon = 0; foo->fake_group = NULL; if (foo->group_id != None) foo->main_window = foo->group_id; else if (foo->client_leader != None) foo->main_window = foo->client_leader; else if (WFLAGP(foo, emulate_appicon)) foo->main_window = foo->client_win; else foo->main_window = None; if (foo->main_window) wApplicationCreate(foo); } foo = foo->prev; } if (fPtr->leader != None) XDestroyWindow(dpy, fPtr->leader); fPtr->retainCount = 0; fPtr->leader = None; fPtr->origLeader = None; wapp = wApplicationOf(wwin->main_window); if (wapp) { wapp->menu = wAppMenuGet(scr, wwin->main_window); } if (wPreferences.auto_arrange_icons) { wArrangeIcons(wwin->screen_ptr, True); } } else { wapp->menu = wAppMenuGet(wwin->screen_ptr, wwin->main_window); } /* make the appmenu be mapped */ wSetFocusTo(wwin->screen_ptr, NULL); wSetFocusTo(wwin->screen_ptr, wwin->screen_ptr->focused_window); } } else if (event->atom == w_global.atom.gnustep.wm_attr) { GNUstepWMAttributes *attr; PropGetGNUstepWMAttr(wwin->client_win, &attr); wWindowUpdateGNUstepAttr(wwin, attr); XFree(attr); } else { wNETWMCheckClientHintChange(wwin, event); } } } /* *---------------------------------------------------------------------- * wClientGetNormalHints-- * Get size (normal) hints and a default geometry for the client * window. The hints are also checked for inconsistency. If geometry is * True, the returned data will account for client specified initial * geometry. * * Side effects: * normal_hints is filled with valid data. *---------------------------------------------------------------------- */ void wClientGetNormalHints(WWindow * wwin, XWindowAttributes * wattribs, Bool geometry, int *x, int *y, unsigned *width, unsigned *height) { int pre_icccm = 0; /* not used */ /* find a position for the window */ if (!wwin->normal_hints) wwin->normal_hints = XAllocSizeHints(); if (!PropGetNormalHints(wwin->client_win, wwin->normal_hints, &pre_icccm)) { wwin->normal_hints->flags = 0; } *x = wattribs->x; *y = wattribs->y; *width = wattribs->width; *height = wattribs->height; if (!(wwin->normal_hints->flags & PWinGravity)) { wwin->normal_hints->win_gravity = NorthWestGravity; } if (!(wwin->normal_hints->flags & PMinSize)) { wwin->normal_hints->min_width = MIN_WINDOW_SIZE; wwin->normal_hints->min_height = MIN_WINDOW_SIZE; } if (!(wwin->normal_hints->flags & PBaseSize)) { wwin->normal_hints->base_width = 0; wwin->normal_hints->base_height = 0; } if (!(wwin->normal_hints->flags & PMaxSize)) { wwin->normal_hints->max_width = wwin->screen_ptr->scr_width * 2; wwin->normal_hints->max_height = wwin->screen_ptr->scr_height * 2; } /* some buggy apps set weird hints.. */ if (wwin->normal_hints->min_width <= 0) wwin->normal_hints->min_width = MIN_WINDOW_SIZE; if (wwin->normal_hints->min_height <= 0) wwin->normal_hints->min_height = MIN_WINDOW_SIZE; if (wwin->normal_hints->max_width < wwin->normal_hints->min_width) wwin->normal_hints->max_width = wwin->normal_hints->min_width; if (wwin->normal_hints->max_height < wwin->normal_hints->min_height) wwin->normal_hints->max_height = wwin->normal_hints->min_height; if (!(wwin->normal_hints->flags & PResizeInc)) { wwin->normal_hints->width_inc = 1; wwin->normal_hints->height_inc = 1; } else { if (wwin->normal_hints->width_inc <= 0) wwin->normal_hints->width_inc = 1; if (wwin->normal_hints->height_inc <= 0) wwin->normal_hints->height_inc = 1; } if (wwin->normal_hints->flags & PAspect) { if (wwin->normal_hints->min_aspect.x < 1) wwin->normal_hints->min_aspect.x = 1; if (wwin->normal_hints->min_aspect.y < 1) wwin->normal_hints->min_aspect.y = 1; if (wwin->normal_hints->max_aspect.x < 1) wwin->normal_hints->max_aspect.x = 1; if (wwin->normal_hints->max_aspect.y < 1) wwin->normal_hints->max_aspect.y = 1; } if (wwin->normal_hints->min_height > wwin->normal_hints->max_height) { wwin->normal_hints->min_height = wwin->normal_hints->max_height; } if (wwin->normal_hints->min_width > wwin->normal_hints->max_width) { wwin->normal_hints->min_width = wwin->normal_hints->max_width; } #ifdef IGNORE_PPOSITION wwin->normal_hints->flags &= ~PPosition; #endif if (pre_icccm && !wwin->screen_ptr->flags.startup && geometry) { if (wwin->normal_hints->flags & (USPosition | PPosition)) { *x = wwin->normal_hints->x; *y = wwin->normal_hints->y; } if (wwin->normal_hints->flags & (USSize | PSize)) { *width = wwin->normal_hints->width; *height = wwin->normal_hints->height; } } } void GetColormapWindows(WWindow * wwin) { #ifndef NO_CRASHES if (wwin->cmap_windows) { XFree(wwin->cmap_windows); } wwin->cmap_windows = NULL; wwin->cmap_window_no = 0; if (!XGetWMColormapWindows(dpy, wwin->client_win, &(wwin->cmap_windows), &(wwin->cmap_window_no)) || !wwin->cmap_windows) { wwin->cmap_window_no = 0; wwin->cmap_windows = NULL; } #endif } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/wdefaults.c������������������������������������������������������������������0000644�0001750�0001750�00000046703�13642357774�013753� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* wdefaults.c - window specific defaults * * Window Maker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "wconfig.h" #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <strings.h> #include <ctype.h> #include <X11/Xlib.h> #include <X11/Xutil.h> #include <X11/keysym.h> #include <wraster.h> #include "WindowMaker.h" #include "window.h" #include "appicon.h" #include "screen.h" #include "workspace.h" #include "defaults.h" #include "icon.h" #include "misc.h" #define APPLY_VAL(value, flag, attrib) \ if (value) {attr->flag = getBool(attrib, value); \ if (mask) mask->flag = 1;} /* Local stuff */ /* type converters */ static int getBool(WMPropList *, WMPropList *); static char *getString(WMPropList *, WMPropList *); static WMPropList *ANoTitlebar = NULL; static WMPropList *ANoResizebar; static WMPropList *ANoMiniaturizeButton; static WMPropList *ANoMiniaturizable; static WMPropList *ANoCloseButton; static WMPropList *ANoBorder; static WMPropList *ANoHideOthers; static WMPropList *ANoMouseBindings; static WMPropList *ANoKeyBindings; static WMPropList *ANoAppIcon; /* app */ static WMPropList *AKeepOnTop; static WMPropList *AKeepOnBottom; static WMPropList *AOmnipresent; static WMPropList *ASkipWindowList; static WMPropList *ASkipSwitchPanel; static WMPropList *AKeepInsideScreen; static WMPropList *AUnfocusable; static WMPropList *AAlwaysUserIcon; static WMPropList *AStartMiniaturized; static WMPropList *AStartMaximized; static WMPropList *AStartHidden; /* app */ static WMPropList *ADontSaveSession; /* app */ static WMPropList *AEmulateAppIcon; static WMPropList *AFocusAcrossWorkspace; static WMPropList *AFullMaximize; static WMPropList *ASharedAppIcon; /* app */ #ifdef XKB_BUTTON_HINT static WMPropList *ANoLanguageButton; #endif static WMPropList *AStartWorkspace; static WMPropList *AIgnoreDecorationChanges; static WMPropList *AIcon; static WMPropList *AnyWindow; static WMPropList *No; static void init_wdefaults(void) { AIcon = WMCreatePLString("Icon"); ANoTitlebar = WMCreatePLString("NoTitlebar"); ANoResizebar = WMCreatePLString("NoResizebar"); ANoMiniaturizeButton = WMCreatePLString("NoMiniaturizeButton"); ANoMiniaturizable = WMCreatePLString("NoMiniaturizable"); ANoCloseButton = WMCreatePLString("NoCloseButton"); ANoBorder = WMCreatePLString("NoBorder"); ANoHideOthers = WMCreatePLString("NoHideOthers"); ANoMouseBindings = WMCreatePLString("NoMouseBindings"); ANoKeyBindings = WMCreatePLString("NoKeyBindings"); ANoAppIcon = WMCreatePLString("NoAppIcon"); AKeepOnTop = WMCreatePLString("KeepOnTop"); AKeepOnBottom = WMCreatePLString("KeepOnBottom"); AOmnipresent = WMCreatePLString("Omnipresent"); ASkipWindowList = WMCreatePLString("SkipWindowList"); ASkipSwitchPanel = WMCreatePLString("SkipSwitchPanel"); AKeepInsideScreen = WMCreatePLString("KeepInsideScreen"); AUnfocusable = WMCreatePLString("Unfocusable"); AAlwaysUserIcon = WMCreatePLString("AlwaysUserIcon"); AStartMiniaturized = WMCreatePLString("StartMiniaturized"); AStartHidden = WMCreatePLString("StartHidden"); AStartMaximized = WMCreatePLString("StartMaximized"); ADontSaveSession = WMCreatePLString("DontSaveSession"); AEmulateAppIcon = WMCreatePLString("EmulateAppIcon"); AFocusAcrossWorkspace = WMCreatePLString("FocusAcrossWorkspace"); AFullMaximize = WMCreatePLString("FullMaximize"); ASharedAppIcon = WMCreatePLString("SharedAppIcon"); #ifdef XKB_BUTTON_HINT ANoLanguageButton = WMCreatePLString("NoLanguageButton"); #endif AStartWorkspace = WMCreatePLString("StartWorkspace"); AIgnoreDecorationChanges = WMCreatePLString("IgnoreDecorationChanges"); AnyWindow = WMCreatePLString("*"); No = WMCreatePLString("No"); } /* Returns the correct WMPropList, using instance+class or instance, or class, or default */ static WMPropList *get_value(WMPropList * dict_win, WMPropList * dict_class, WMPropList * dict_name, WMPropList * dict_any, WMPropList * option, WMPropList * default_value, Bool useGlobalDefault) { WMPropList *value; if (dict_win) { value = WMGetFromPLDictionary(dict_win, option); if (value) return value; } if (dict_name) { value = WMGetFromPLDictionary(dict_name, option); if (value) return value; } if (dict_class) { value = WMGetFromPLDictionary(dict_class, option); if (value) return value; } if (!useGlobalDefault) return NULL; if (dict_any) { value = WMGetFromPLDictionary(dict_any, option); if (value) return value; } return default_value; } static WMPropList *get_value_from_instanceclass(const char *value) { WMPropList *key, *val = NULL; if (!value) return NULL; key = WMCreatePLString(value); WMPLSetCaseSensitive(True); if (w_global.domain.window_attr->dictionary) val = key ? WMGetFromPLDictionary(w_global.domain.window_attr->dictionary, key) : NULL; if (key) WMReleasePropList(key); WMPLSetCaseSensitive(False); return val; } /* *---------------------------------------------------------------------- * wDefaultFillAttributes-- * Retrieves attributes for the specified instance/class and * fills attr with it. Values that are actually defined are also * set in mask. If useGlobalDefault is True, the default for * all windows ("*") will be used for when no values are found * for that instance/class. * *---------------------------------------------------------------------- */ void wDefaultFillAttributes(const char *instance, const char *class, WWindowAttributes *attr, WWindowAttributes *mask, Bool useGlobalDefault) { WMPropList *value, *dw, *dc, *dn, *da; char *buffer; dw = dc = dn = da = NULL; if (!ANoTitlebar) init_wdefaults(); if (class && instance) { buffer = StrConcatDot(instance, class); dw = get_value_from_instanceclass(buffer); wfree(buffer); } dn = get_value_from_instanceclass(instance); dc = get_value_from_instanceclass(class); WMPLSetCaseSensitive(True); if ((w_global.domain.window_attr->dictionary) && (useGlobalDefault)) da = WMGetFromPLDictionary(w_global.domain.window_attr->dictionary, AnyWindow); /* get the data */ value = get_value(dw, dc, dn, da, ANoTitlebar, No, useGlobalDefault); APPLY_VAL(value, no_titlebar, ANoTitlebar); value = get_value(dw, dc, dn, da, ANoResizebar, No, useGlobalDefault); APPLY_VAL(value, no_resizebar, ANoResizebar); value = get_value(dw, dc, dn, da, ANoMiniaturizeButton, No, useGlobalDefault); APPLY_VAL(value, no_miniaturize_button, ANoMiniaturizeButton); value = get_value(dw, dc, dn, da, ANoMiniaturizable, No, useGlobalDefault); APPLY_VAL(value, no_miniaturizable, ANoMiniaturizable); value = get_value(dw, dc, dn, da, ANoCloseButton, No, useGlobalDefault); APPLY_VAL(value, no_close_button, ANoCloseButton); value = get_value(dw, dc, dn, da, ANoBorder, No, useGlobalDefault); APPLY_VAL(value, no_border, ANoBorder); value = get_value(dw, dc, dn, da, ANoHideOthers, No, useGlobalDefault); APPLY_VAL(value, no_hide_others, ANoHideOthers); value = get_value(dw, dc, dn, da, ANoMouseBindings, No, useGlobalDefault); APPLY_VAL(value, no_bind_mouse, ANoMouseBindings); value = get_value(dw, dc, dn, da, ANoKeyBindings, No, useGlobalDefault); APPLY_VAL(value, no_bind_keys, ANoKeyBindings); value = get_value(dw, dc, dn, da, ANoAppIcon, No, useGlobalDefault); APPLY_VAL(value, no_appicon, ANoAppIcon); value = get_value(dw, dc, dn, da, ASharedAppIcon, No, useGlobalDefault); APPLY_VAL(value, shared_appicon, ASharedAppIcon); value = get_value(dw, dc, dn, da, AKeepOnTop, No, useGlobalDefault); APPLY_VAL(value, floating, AKeepOnTop); value = get_value(dw, dc, dn, da, AKeepOnBottom, No, useGlobalDefault); APPLY_VAL(value, sunken, AKeepOnBottom); value = get_value(dw, dc, dn, da, AOmnipresent, No, useGlobalDefault); APPLY_VAL(value, omnipresent, AOmnipresent); value = get_value(dw, dc, dn, da, ASkipWindowList, No, useGlobalDefault); APPLY_VAL(value, skip_window_list, ASkipWindowList); value = get_value(dw, dc, dn, da, ASkipSwitchPanel, No, useGlobalDefault); APPLY_VAL(value, skip_switchpanel, ASkipSwitchPanel); value = get_value(dw, dc, dn, da, AKeepInsideScreen, No, useGlobalDefault); APPLY_VAL(value, dont_move_off, AKeepInsideScreen); value = get_value(dw, dc, dn, da, AUnfocusable, No, useGlobalDefault); APPLY_VAL(value, no_focusable, AUnfocusable); value = get_value(dw, dc, dn, da, AAlwaysUserIcon, No, useGlobalDefault); APPLY_VAL(value, always_user_icon, AAlwaysUserIcon); value = get_value(dw, dc, dn, da, AStartMiniaturized, No, useGlobalDefault); APPLY_VAL(value, start_miniaturized, AStartMiniaturized); value = get_value(dw, dc, dn, da, AStartHidden, No, useGlobalDefault); APPLY_VAL(value, start_hidden, AStartHidden); value = get_value(dw, dc, dn, da, AStartMaximized, No, useGlobalDefault); APPLY_VAL(value, start_maximized, AStartMaximized); value = get_value(dw, dc, dn, da, ADontSaveSession, No, useGlobalDefault); APPLY_VAL(value, dont_save_session, ADontSaveSession); value = get_value(dw, dc, dn, da, AEmulateAppIcon, No, useGlobalDefault); APPLY_VAL(value, emulate_appicon, AEmulateAppIcon); value = get_value(dw, dc, dn, da, AFocusAcrossWorkspace, No, useGlobalDefault); APPLY_VAL(value, focus_across_wksp, AFocusAcrossWorkspace); value = get_value(dw, dc, dn, da, AFullMaximize, No, useGlobalDefault); APPLY_VAL(value, full_maximize, AFullMaximize); value = get_value(dw, dc, dn, da, AIgnoreDecorationChanges, No, useGlobalDefault); APPLY_VAL(value, ignore_decoration_changes, AIgnoreDecorationChanges); #ifdef XKB_BUTTON_HINT value = get_value(dw, dc, dn, da, ANoLanguageButton, No, useGlobalDefault); APPLY_VAL(value, no_language_button, ANoLanguageButton); #endif /* clean up */ WMPLSetCaseSensitive(False); } static WMPropList *get_generic_value(const char *instance, const char *class, WMPropList *option, Bool default_icon) { WMPropList *value, *key, *dict; value = NULL; WMPLSetCaseSensitive(True); /* Search the icon name using class and instance */ if (class && instance) { char *buffer; buffer = wmalloc(strlen(class) + strlen(instance) + 2); sprintf(buffer, "%s.%s", instance, class); key = WMCreatePLString(buffer); wfree(buffer); dict = WMGetFromPLDictionary(w_global.domain.window_attr->dictionary, key); WMReleasePropList(key); if (dict) value = WMGetFromPLDictionary(dict, option); } /* Search the icon name using instance */ if (!value && instance) { key = WMCreatePLString(instance); dict = WMGetFromPLDictionary(w_global.domain.window_attr->dictionary, key); WMReleasePropList(key); if (dict) value = WMGetFromPLDictionary(dict, option); } /* Search the icon name using class */ if (!value && class) { key = WMCreatePLString(class); dict = WMGetFromPLDictionary(w_global.domain.window_attr->dictionary, key); WMReleasePropList(key); if (dict) value = WMGetFromPLDictionary(dict, option); } /* Search the default icon name - See default_icon argument! */ if (!value && default_icon) { /* AnyWindow is "*" - see wdefaults.c */ dict = WMGetFromPLDictionary(w_global.domain.window_attr->dictionary, AnyWindow); if (dict) value = WMGetFromPLDictionary(dict, option); } WMPLSetCaseSensitive(False); return value; } /* Get the file name of the image, using instance and class */ char *get_icon_filename(const char *winstance, const char *wclass, const char *command, Bool default_icon) { char *file_name; char *file_path; /* Get the file name of the image, using instance and class */ file_name = wDefaultGetIconFile(winstance, wclass, default_icon); /* Check if the file really exists in the disk */ if (file_name) file_path = FindImage(wPreferences.icon_path, file_name); else file_path = NULL; /* If the specific icon filename is not found, and command is specified, * then include the .app icons and re-do the search. */ if (!file_path && command) { wApplicationExtractDirPackIcon(command, winstance, wclass); file_name = wDefaultGetIconFile(winstance, wclass, False); if (file_name) { file_path = FindImage(wPreferences.icon_path, file_name); if (!file_path) wwarning(_("icon \"%s\" doesn't exist, check your config files"), file_name); /* FIXME: Here, if file_path does not exist then the icon is still in the * "icon database" (w_global.domain.window_attr->dictionary), but the file * for the icon is no more on disk. Therefore, we should remove it from the * database. Is possible to do that using wDefaultChangeIcon() */ } } /* * Don't wfree(file_name) because it is a direct pointer inside the icon * dictionary (w_global.domain.window_attr->dictionary) and not a result * allocated with wstrdup() */ if (!file_path && default_icon) file_path = get_default_image_path(); return file_path; } /* This function returns the image picture for the file_name file */ RImage *get_rimage_from_file(WScreen *scr, const char *file_name, int max_size) { RImage *image = NULL; if (!file_name) return NULL; image = RLoadImage(scr->rcontext, file_name, 0); if (!image) wwarning(_("error loading image file \"%s\": %s"), file_name, RMessageForError(RErrorCode)); image = wIconValidateIconSize(image, max_size); return image; } /* This function returns the default icon's full path * If the path for an icon is not found, returns NULL */ char *get_default_image_path(void) { char *path = NULL, *file = NULL; /* Get the default icon */ file = wDefaultGetIconFile(NULL, NULL, True); if (file) path = FindImage(wPreferences.icon_path, file); return path; } /* This function creates the RImage using the default icon */ RImage *get_default_image(WScreen *scr) { RImage *image = NULL; char *path = NULL; /* Get the filename full path */ path = get_default_image_path(); if (!path) return NULL; /* Get the default icon */ image = get_rimage_from_file(scr, path, wPreferences.icon_size); if (!image) wwarning(_("could not find default icon \"%s\""), path); /* Resize the icon to the wPreferences.icon_size size * usually this function will return early, because size is right */ image = wIconValidateIconSize(image, wPreferences.icon_size); return image; } RImage *get_icon_image(WScreen *scr, const char *winstance, const char *wclass, int max_size) { char *file_name = NULL; /* Get the file name of the image, using instance and class */ file_name = get_icon_filename(winstance, wclass, NULL, True); return get_rimage_from_file(scr, file_name, max_size); } int wDefaultGetStartWorkspace(WScreen *scr, const char *instance, const char *class) { WMPropList *value; int w; char *tmp; if (!ANoTitlebar) init_wdefaults(); if (!w_global.domain.window_attr->dictionary) return -1; value = get_generic_value(instance, class, AStartWorkspace, True); if (!value) return -1; tmp = getString(AStartWorkspace, value); if (!tmp || strlen(tmp) == 0) return -1; /* Get the workspace number for the workspace name */ w = wGetWorkspaceNumber(scr, tmp); return w; } /* Get the name of the Icon File. If default_icon is True, then, default value included */ char *wDefaultGetIconFile(const char *instance, const char *class, Bool default_icon) { WMPropList *value; char *tmp; if (!ANoTitlebar) init_wdefaults(); if (!w_global.domain.window_attr || !w_global.domain.window_attr->dictionary) return NULL; value = get_generic_value(instance, class, AIcon, default_icon); if (!value) return NULL; tmp = getString(AIcon, value); return tmp; } void wDefaultChangeIcon(const char *instance, const char *class, const char *file) { WDDomain *db = w_global.domain.window_attr; WMPropList *icon_value = NULL, *value, *attr, *key, *def_win, *def_icon = NULL; WMPropList *dict = db->dictionary; int same = 0; if (!dict) { dict = WMCreatePLDictionary(NULL, NULL); if (dict) db->dictionary = dict; else return; } WMPLSetCaseSensitive(True); if (instance && class) { char *buffer; buffer = StrConcatDot(instance, class); key = WMCreatePLString(buffer); wfree(buffer); } else if (instance) { key = WMCreatePLString(instance); } else if (class) { key = WMCreatePLString(class); } else { key = WMRetainPropList(AnyWindow); } if (file) { value = WMCreatePLString(file); icon_value = WMCreatePLDictionary(AIcon, value, NULL); WMReleasePropList(value); def_win = WMGetFromPLDictionary(dict, AnyWindow); if (def_win != NULL) def_icon = WMGetFromPLDictionary(def_win, AIcon); if (def_icon && !strcmp(WMGetFromPLString(def_icon), file)) same = 1; } attr = WMGetFromPLDictionary(dict, key); if (attr != NULL) { if (WMIsPLDictionary(attr)) { if (icon_value != NULL && !same) WMMergePLDictionaries(attr, icon_value, False); else WMRemoveFromPLDictionary(attr, AIcon); } } else if (icon_value != NULL && !same) { WMPutInPLDictionary(dict, key, icon_value); } if (!wPreferences.flags.noupdates) UpdateDomainFile(db); WMReleasePropList(key); if (icon_value) WMReleasePropList(icon_value); WMPLSetCaseSensitive(False); } void wDefaultPurgeInfo(const char *instance, const char *class) { WMPropList *value, *key, *dict; char *buffer; if (!AIcon) { /* Unnecessary precaution */ init_wdefaults(); } WMPLSetCaseSensitive(True); buffer = wmalloc(strlen(class) + strlen(instance) + 2); sprintf(buffer, "%s.%s", instance, class); key = WMCreatePLString(buffer); dict = WMGetFromPLDictionary(w_global.domain.window_attr->dictionary, key); if (dict) { value = WMGetFromPLDictionary(dict, AIcon); if (value) { WMRemoveFromPLDictionary(dict, AIcon); } WMRemoveFromPLDictionary(w_global.domain.window_attr->dictionary, key); UpdateDomainFile(w_global.domain.window_attr); } wfree(buffer); WMReleasePropList(key); WMPLSetCaseSensitive(False); } /* --------------------------- Local ----------------------- */ static int getBool(WMPropList * key, WMPropList * value) { char *val; if (!WMIsPLString(value)) { wwarning(_("Wrong option format for key \"%s\". Should be %s."), WMGetFromPLString(key), "Boolean"); return 0; } val = WMGetFromPLString(value); if ((val[1] == '\0' && (val[0] == 'y' || val[0] == 'Y' || val[0] == 'T' || val[0] == 't' || val[0] == '1')) || (strcasecmp(val, "YES") == 0 || strcasecmp(val, "TRUE") == 0)) { return 1; } else if ((val[1] == '\0' && (val[0] == 'n' || val[0] == 'N' || val[0] == 'F' || val[0] == 'f' || val[0] == '0')) || (strcasecmp(val, "NO") == 0 || strcasecmp(val, "FALSE") == 0)) { return 0; } else { wwarning(_("can't convert \"%s\" to boolean"), val); /* We return False if we can't convert to BOOLEAN. * This is because all options defaults to False. * -1 is not checked and thus is interpreted as True, * which is not good.*/ return 0; } } /* WARNING: Do not free the value returned by this function!! */ static char *getString(WMPropList * key, WMPropList * value) { if (!WMIsPLString(value)) { wwarning(_("Wrong option format for key \"%s\". Should be %s."), WMGetFromPLString(key), "String"); return NULL; } return WMGetFromPLString(value); } �������������������������������������������������������������WindowMaker-0.95.9/src/wmspec.h���������������������������������������������������������������������0000644�0001750�0001750�00000003620�13431646202�013226� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* wmspec.h-- support for the wm-spec Hints * * Window Maker window manager * * Copyright (c) 1998-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef _WMSPEC_H_ #define _WMSPEC_H_ #include "screen.h" #include "window.h" #include <X11/Xlib.h> void wNETWMInitStuff(WScreen *scr); void wNETWMCleanup(WScreen *scr); void wNETWMUpdateWorkarea(WScreen *scr); Bool wNETWMGetUsableArea(WScreen *scr, int head, WArea *area); void wNETWMCheckInitialClientState(WWindow *wwin); void wNETWMCheckInitialFrameState(WWindow *wwin); Bool wNETWMProcessClientMessage(XClientMessageEvent *event); void wNETWMCheckClientHints(WWindow *wwin, int *layer, int *workspace); void wNETWMCheckClientHintChange(WWindow *wwin, XPropertyEvent *event); void wNETWMUpdateActions(WWindow *wwin, Bool del); void wNETWMUpdateDesktop(WScreen *scr); void wNETWMPositionSplash(WWindow *wwin, int *x, int *y, int width, int height); int wNETWMGetPidForWindow(Window window); int wNETWMGetCurrentDesktopFromHint(WScreen *scr); char *wNETWMGetIconName(Window window); char *wNETWMGetWindowName(Window window); void wNETFrameExtents(WWindow *wwin); void wNETCleanupFrameExtents(WWindow *wwin); RImage *get_window_image_from_x11(Window window); #endif ����������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/osdep_bsd.c������������������������������������������������������������������0000644�0001750�0001750�00000011501�13431646202�013662� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Until FreeBSD gets their act together; * http://www.mail-archive.com/freebsd-hackers@freebsd.org/msg69469.html */ #if defined( FREEBSD ) # undef _XOPEN_SOURCE #endif #if defined( FREEBSD ) || defined( DRAGONFLYBSD ) # include <sys/types.h> #else /* OPENBSD || NETBSD */ # include <sys/param.h> #endif #include <sys/sysctl.h> #include <assert.h> #if defined( OPENBSD ) # include <kvm.h> # include <limits.h> /* _POSIX2_LINE_MAX */ #endif #include <stdio.h> #include <stdlib.h> #if defined( OPENBSD ) # include <string.h> #endif #include <unistd.h> #include <WINGs/WUtil.h> #include "wconfig.h" #include "osdep.h" /* * copy argc and argv for an existing process identified by `pid' * into suitable storage given in ***argv and *argc. * * subsequent calls use the same static area for argv and argc. * * returns 0 for failure, in which case argc := 0 and argv := NULL * returns 1 for success */ /* * NetBSD, FreeBSD and DragonFlyBSD supply the necessary information via * sysctl(3). The result is a plain simple flat octet stream and its length. * The octet stream represents argv, with members separated by a null character. * The argv array returned by GetCommandForPid() consists of pointers into this * stream (which is stored in a static array, `args'). Net and Free/DFly only * differ slightly in the MIB vector given to sysctl(3). Free and DFly are * identical. * * OpenBSD supplies the necessary informationvia kvm(3) in the form of a real * argv array. This array is flattened to be in the same way as Net/Free/DFly * returns the arguments in the first place. This is done in order for the * storage (`args') to easily be made static, which means some memory bytes * are sacrificed to save hoops of memory management. */ Bool GetCommandForPid(int pid, char ***argv, int *argc) { /* * it just returns failure if the sysctl calls fail; since there's * apparently no harm done to the caller because of this, it seems * more user-friendly than to bomb out. */ int j, mib[4]; unsigned int i; size_t count; static char *args = NULL; static int argmax = 0; #if defined( OPENBSD ) char kvmerr[_POSIX2_LINE_MAX]; /* for kvm*() error reporting */ int procs; /* kvm_getprocs() */ kvm_t *kd; struct kinfo_proc *kp; char **nargv; /* kvm_getarg() */ #endif *argv = NULL; *argc = 0; /* the system-wide limit */ if (argmax == 0) { /* it hopefully doesn't change at runtime *g* */ mib[0] = CTL_KERN; mib[1] = KERN_ARGMAX; mib[2] = 0; mib[3] = 0; count = sizeof(argmax); if (sysctl(mib, 2, &argmax, &count, NULL, 0) == -1) return False; } /* if argmax is still 0, something went very seriously wrong */ assert( argmax > 0); /* space for args; no need to free before returning even on errors */ if (args == NULL) args = (char *)wmalloc(argmax); #if defined( OPENBSD ) /* kvm descriptor */ kd = kvm_openfiles(NULL, NULL, NULL, KVM_NO_FILES, kvmerr); if (kd == NULL) return False; procs = 0; /* the process we are interested in */ kp = kvm_getprocs(kd, KERN_PROC_PID, pid, sizeof(*kp), &procs); if (kp == NULL || procs == 0) /* if kvm_getprocs() bombs out or does not find the process */ return False; /* get its argv */ nargv = kvm_getargv(kd, kp, 0); if (nargv == NULL) return False; /* flatten nargv into args */ count = 0; memset(args, 0, argmax); /* * must have this much free space in `args' in order for the current * iteration not to overflow it: we are at `count', and will append * the next (*argc) arg and a nul (+1) * technically, overflow (or truncation, which isn't handled) can not * happen (should not, at least). */ #define ARGSPACE ( count + strlen(nargv[ (*argc) ] ) + 1 ) while (nargv[*argc] && ARGSPACE < argmax ) { memcpy(args + count, nargv[*argc], strlen(nargv[*argc])); count += strlen(nargv[*argc]) + 1; (*argc)++; } #undef ARGSPACE /* by now *argc is correct as a byproduct */ kvm_close(kd); #else /* FREEBSD || NETBSD || DRAGONFLYBSD */ mib[0] = CTL_KERN; #if defined( NETBSD ) mib[1] = KERN_PROC_ARGS; mib[2] = pid; mib[3] = KERN_PROC_ARGV; #elif defined( FREEBSD ) || defined( DRAGONFLYBSD ) mib[1] = KERN_PROC; mib[2] = KERN_PROC_ARGS; mib[3] = pid; #endif count = argmax; /* canary */ *args = 0; if (sysctl(mib, 4, args, &count, NULL, 0) == -1 || *args == 0) return False; /* args is a flattened series of null-terminated strings */ for (i = 0; i < count; i++) if (args[i] == '\0') (*argc)++; #endif *argv = (char **)wmalloc(sizeof(char *) * (*argc + 1 /* term. null ptr */)); (*argv)[0] = args; /* go through args, set argv[$next] to the beginning of each string */ for (i = 0, j = 1; i < count; i++) { if (args[i] != '\0') continue; if (i < count - 1) (*argv)[j++] = &args[i + 1]; if (j == *argc) break; } /* the list of arguments must be terminated by a null pointer */ (*argv)[j] = NULL; return True; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/misc.h�����������������������������������������������������������������������0000644�0001750�0001750�00000004141�13431646202�012662� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2003 Alfredo K. Kojima * Copyright (c) 2013 Window Maker Team * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef WMMISC_H_ #define WMMISC_H_ #include "defaults.h" #include "keybind.h" #include "appicon.h" Bool wFetchName(Display *dpy, Window win, char **winname); Bool wGetIconName(Display *dpy, Window win, char **iconname); Bool UpdateDomainFile(WDDomain * domain); void move_window(Window win, int from_x, int from_y, int to_x, int to_y); void slide_windows(Window wins[], int n, int from_x, int from_y, int to_x, int to_y); void ParseWindowName(WMPropList *value, char **winstance, char **wclass, const char *where); static inline void slide_window(Window win, int from_x, int from_y, int to_x, int to_y) { slide_windows(&win, 1, from_x, from_y, to_x, to_y); } /* Helper is a 'wmsetbg' subprocess with sets the background for the current workspace */ Bool start_bg_helper(WScreen *scr); void SendHelperMessage(WScreen *scr, char type, int workspace, const char *msg); char *ShrinkString(WMFont *font, const char *string, int width); char *FindImage(const char *paths, const char *file); char *ExpandOptions(WScreen * scr, const char *cmdline); char *GetShortcutString(const char *text); char *GetShortcutKey(WShortKey key); char *EscapeWM_CLASS(const char *name, const char *class); char *StrConcatDot(const char *a, const char *b); char *GetCommandForWindow(Window win); #endif �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/main.c�����������������������������������������������������������������������0000644�0001750�0001750�00000050567�13431646202�012663� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "wconfig.h" #ifdef HAVE_INOTIFY #include <sys/inotify.h> #endif #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <sys/stat.h> #include <sys/types.h> #include <fcntl.h> #include <X11/Xlib.h> #include <X11/Xutil.h> /* Xlocale.h and locale.h are the same if X_LOCALE is undefind in wconfig.h, * and if X_LOCALE is defined, X's locale emulating functions will be used. * See Xlocale.h for more information. */ #include <X11/Xlocale.h> #define MAINFILE #include "WindowMaker.h" #include "window.h" #include "defaults.h" #include "event.h" #include "startup.h" #include "menu.h" #include "keybind.h" #include "xmodifier.h" #include "session.h" #include "shutdown.h" #include "dialog.h" #include "main.h" #include "monitor.h" #include <WINGs/WUtil.h> /****** Global Variables ******/ struct wmaker_global_variables w_global; /* general info */ Display *dpy; char *ProgName; struct WPreferences wPreferences; WShortKey wKeyBindings[WKBD_LAST]; /* notifications */ const char WMNManaged[] = "WMNManaged"; const char WMNUnmanaged[] = "WMNUnmanaged"; const char WMNChangedWorkspace[] = "WMNChangedWorkspace"; const char WMNChangedState[] = "WMNChangedState"; const char WMNChangedFocus[] = "WMNChangedFocus"; const char WMNChangedStacking[] = "WMNChangedStacking"; const char WMNChangedName[] = "WMNChangedName"; const char WMNWorkspaceCreated[] = "WMNWorkspaceCreated"; const char WMNWorkspaceDestroyed[] = "WMNWorkspaceDestroyed"; const char WMNWorkspaceChanged[] = "WMNWorkspaceChanged"; const char WMNWorkspaceNameChanged[] = "WMNWorkspaceNameChanged"; const char WMNResetStacking[] = "WMNResetStacking"; /******** End Global Variables *****/ static char *DisplayName = NULL; static char **Arguments; static int ArgCount; static Bool multiHead = True; static int *wVisualID = NULL; static int wVisualID_len = 0; static int real_main(int argc, char **argv); int getWVisualID(int screen) { if (wVisualID == NULL) return -1; if (screen < 0 || screen >= wVisualID_len) return -1; return wVisualID[screen]; } static void setWVisualID(int screen, int val) { int i; if (screen < 0) return; if (wVisualID == NULL) { /* no array at all, alloc space for screen + 1 entries * and init with default value */ wVisualID_len = screen + 1; wVisualID = (int *)malloc(wVisualID_len * sizeof(int)); for (i = 0; i < wVisualID_len; i++) { wVisualID[i] = -1; } } else if (screen >= wVisualID_len) { /* larger screen number than previously allocated so enlarge array */ int oldlen = wVisualID_len; wVisualID_len = screen + 1; wVisualID = (int *)wrealloc(wVisualID, wVisualID_len * sizeof(int)); for (i = oldlen; i < wVisualID_len; i++) { wVisualID[i] = -1; } } wVisualID[screen] = val; } /* * this function splits a given string at the comma into tokens * and set the wVisualID variable to each parsed number */ static int initWVisualID(const char *user_str) { char *mystr = strdup(user_str); int cur_in_pos = 0; int cur_out_pos = 0; int cur_screen = 0; int error_found = 0; for (;;) { /* check for delimiter */ if (user_str[cur_in_pos] == '\0' || user_str[cur_in_pos] == ',') { int v; mystr[cur_out_pos] = '\0'; if (sscanf(mystr, "%i", &v) != 1) { error_found = 1; break; } setWVisualID(cur_screen, v); cur_screen++; cur_out_pos = 0; } /* break in case last char has been consumed */ if (user_str[cur_in_pos] == '\0') break; /* if the current char is no delimiter put it into mystr */ if (user_str[cur_in_pos] != ',') { mystr[cur_out_pos++] = user_str[cur_in_pos]; } cur_in_pos++; } free(mystr); if (cur_screen == 0||error_found != 0) return 1; return 0; } noreturn void Exit(int status) { if (dpy) XCloseDisplay(dpy); RShutdown(); /* wrlib clean exit */ wutil_shutdown(); /* WUtil clean-up */ exit(status); } void Restart(char *manager, Bool abortOnFailure) { char *prog = NULL; char *argv[MAX_RESTART_ARGS]; int i; if (manager && manager[0] != 0) { prog = argv[0] = strtok(manager, " "); for (i = 1; i < MAX_RESTART_ARGS; i++) { argv[i] = strtok(NULL, " "); if (argv[i] == NULL) { break; } } } if (dpy) { XCloseDisplay(dpy); dpy = NULL; } if (!prog) { execvp(Arguments[0], Arguments); wfatal(_("failed to restart Window Maker.")); } else { execvp(prog, argv); werror(_("could not exec %s"), prog); } if (abortOnFailure) exit(7); } void SetupEnvironment(WScreen * scr) { char *tmp, *ptr; char buf[16]; if (multiHead) { int len = strlen(DisplayName) + 64; tmp = wmalloc(len); snprintf(tmp, len, "DISPLAY=%s", XDisplayName(DisplayName)); /* Search from the end to be compatible with ipv6 address */ ptr = strrchr(tmp, ':'); if (ptr == NULL) { static Bool message_already_displayed = False; if (!message_already_displayed) wwarning(_("the display name has an unexpected syntax: \"%s\""), XDisplayName(DisplayName)); message_already_displayed = True; } else { /* If found, remove the screen specification from the display variable */ ptr = strchr(ptr, '.'); if (ptr) *ptr = 0; } snprintf(buf, sizeof(buf), ".%i", scr->screen); strcat(tmp, buf); putenv(tmp); } tmp = wmalloc(60); snprintf(tmp, 60, "WRASTER_COLOR_RESOLUTION%i=%i", scr->screen, scr->rcontext->attribs->colors_per_channel); putenv(tmp); } typedef struct { WScreen *scr; char *command; } _tuple; static void shellCommandHandler(pid_t pid, unsigned int status, void *client_data) { _tuple *data = (_tuple *) client_data; /* Parameter not used, but tell the compiler that it is ok */ (void) pid; if (status == 127) { char *buffer; buffer = wstrconcat(_("Could not execute command: "), data->command); wMessageDialog(data->scr, _("Error"), buffer, _("OK"), NULL, NULL); wfree(buffer); } else if (status != 127) { /* printf("%s: %i\n", data->command, status); */ } wfree(data->command); wfree(data); } void ExecuteShellCommand(WScreen *scr, const char *command) { static char *shell = NULL; pid_t pid; /* * This have a problem: if the shell is tcsh (not sure about others) * and ~/.tcshrc have /bin/stty erase ^H somewhere on it, the shell * will block and the command will not be executed. if (!shell) { shell = getenv("SHELL"); if (!shell) shell = "/bin/sh"; } */ shell = "/bin/sh"; pid = fork(); if (pid == 0) { SetupEnvironment(scr); #ifdef HAVE_SETSID setsid(); #endif execl(shell, shell, "-c", command, NULL); werror("could not execute %s -c %s", shell, command); Exit(-1); } else if (pid < 0) { werror("cannot fork a new process"); } else { _tuple *data = wmalloc(sizeof(_tuple)); data->scr = scr; data->command = wstrdup(command); wAddDeathHandler(pid, shellCommandHandler, data); } } /* *--------------------------------------------------------------------- * RelaunchWindow-- * Launch a new instance of the active window * *---------------------------------------------------------------------- */ Bool RelaunchWindow(WWindow *wwin) { if (! wwin || ! wwin->client_win) { werror("no window to relaunch"); return False; } char **argv; int argc; if (! XGetCommand(dpy, wwin->client_win, &argv, &argc) || argc == 0 || argv == NULL) { werror("cannot relaunch the application because no WM_COMMAND property is set"); return False; } pid_t pid = fork(); if (pid == 0) { SetupEnvironment(wwin->screen_ptr); #ifdef HAVE_SETSID setsid(); #endif /* argv is not null-terminated */ char **a = (char **) malloc(argc + 1); if (! a) { werror("out of memory trying to relaunch the application"); Exit(-1); } int i; for (i = 0; i < argc; i++) a[i] = argv[i]; a[i] = NULL; execvp(a[0], a); Exit(-1); } else if (pid < 0) { werror("cannot fork a new process"); XFreeStringList(argv); return False; } else { _tuple *data = wmalloc(sizeof(_tuple)); data->scr = wwin->screen_ptr; data->command = wtokenjoin(argv, argc); /* not actually a shell command */ wAddDeathHandler(pid, shellCommandHandler, data); XFreeStringList(argv); } return True; } /* *--------------------------------------------------------------------- * wAbort-- * Do a major cleanup and exit the program * *---------------------------------------------------------------------- */ noreturn void wAbort(Bool dumpCore) { int i; WScreen *scr; for (i = 0; i < w_global.screen_count; i++) { scr = wScreenWithNumber(i); if (scr) RestoreDesktop(scr); } printf(_("%s aborted.\n"), ProgName); if (dumpCore) abort(); else exit(1); } static void print_help(void) { printf(_("Usage: %s [options]\n"), ProgName); puts(_("The Window Maker window manager for the X window system")); puts(""); puts(_(" -display host:dpy display to use")); #ifdef USE_ICCCM_WMREPLACE puts(_(" --replace replace running window manager")); #endif puts(_(" --no-dock do not open the application Dock")); puts(_(" --no-clip do not open the workspace Clip")); puts(_(" --no-autolaunch do not autolaunch applications")); puts(_(" --no-drawer disable drawers in the dock")); puts(_(" --dont-restore do not restore saved session")); puts(_(" --locale locale locale to use")); puts(_(" --visual-id visualid visual id of visual to use")); puts(_(" --static do not update or save configurations")); #ifndef HAVE_INOTIFY puts(_(" --no-polling do not periodically check for configuration updates")); #endif puts(_(" --global_defaults_path print the path for default config and exit")); puts(_(" --version print version and exit")); puts(_(" --help show this message")); } static void check_defaults(void) { char *path; path = wdefaultspathfordomain("WindowMaker"); if (access(path, R_OK) != 0) { wwarning(_("could not find user GNUstep directory (%s)."), path); if (system("wmaker.inst --batch") != 0) { wwarning(_("There was an error while creating GNUstep directory, please " "make sure you have installed Window Maker correctly and run wmaker.inst")); } else { wwarning(_("%s directory created with default configuration."), path); } } wfree(path); } #ifdef HAVE_INOTIFY /* * Add watch here, used to notify if configuration * files have changed, using linux kernel inotify mechanism */ static void inotifyWatchConfig(void) { char *watchPath = NULL; w_global.inotify.fd_event_queue = inotify_init(); /* Initialise an inotify instance */ if (w_global.inotify.fd_event_queue < 0) { wwarning(_("could not initialise an inotify instance." " Changes to the defaults database will require" " a restart to take effect. Check your kernel!")); } else { watchPath = wstrconcat(wusergnusteppath(), "/Defaults"); /* Add the watch; really we are only looking for modify events * but we might want more in the future so check all events for now. * The individual events are checked for in event.c. */ w_global.inotify.wd_defaults = inotify_add_watch(w_global.inotify.fd_event_queue, watchPath, IN_ALL_EVENTS); if (w_global.inotify.wd_defaults < 0) { wwarning(_("could not add an inotify watch on path %s." " Changes to the defaults database will require" " a restart to take effect."), watchPath); close(w_global.inotify.fd_event_queue); w_global.inotify.fd_event_queue = -1; } } wfree(watchPath); } #endif /* HAVE_INOTIFY */ static void execInitScript(void) { char *file, *paths; paths = wstrconcat(wusergnusteppath(), "/Library/WindowMaker"); paths = wstrappend(paths, ":" DEF_CONFIG_PATHS); file = wfindfile(paths, DEF_INIT_SCRIPT); wfree(paths); if (file) { if (system(file) != 0) werror(_("%s:could not execute initialization script"), file); wfree(file); } } void ExecExitScript(void) { char *file, *paths; paths = wstrconcat(wusergnusteppath(), "/Library/WindowMaker"); paths = wstrappend(paths, ":" DEF_CONFIG_PATHS); file = wfindfile(paths, DEF_EXIT_SCRIPT); wfree(paths); if (file) { if (system(file) != 0) werror(_("%s:could not execute exit script"), file); wfree(file); } } int main(int argc, char **argv) { int i_am_the_monitor, i, len; char *str, *alt; memset(&w_global, 0, sizeof(w_global)); w_global.program.state = WSTATE_NORMAL; w_global.program.signal_state = WSTATE_NORMAL; w_global.timestamp.last_event = CurrentTime; w_global.timestamp.focus_change = CurrentTime; w_global.ignore_workspace_change = False; w_global.shortcut.modifiers_mask = 0xff; /* setup common stuff for the monitor and wmaker itself */ WMInitializeApplication("WindowMaker", &argc, argv); memset(&wPreferences, 0, sizeof(wPreferences)); wPreferences.fallbackWMs = WMCreateArray(8); alt = getenv("WINDOWMAKER_ALT_WM"); if (alt != NULL) WMAddToArray(wPreferences.fallbackWMs, wstrdup(alt)); WMAddToArray(wPreferences.fallbackWMs, wstrdup("blackbox")); WMAddToArray(wPreferences.fallbackWMs, wstrdup("metacity")); WMAddToArray(wPreferences.fallbackWMs, wstrdup("fvwm")); WMAddToArray(wPreferences.fallbackWMs, wstrdup("twm")); WMAddToArray(wPreferences.fallbackWMs, NULL); WMAddToArray(wPreferences.fallbackWMs, wstrdup("rxvt")); WMAddToArray(wPreferences.fallbackWMs, wstrdup("xterm")); i_am_the_monitor = 1; for (i = 1; i < argc; i++) { if (strncmp(argv[i], "--for-real", strlen("--for-real")) == 0) { i_am_the_monitor = 0; break; } else if (strcmp(argv[i], "-display") == 0 || strcmp(argv[i], "--display") == 0) { i++; if (i >= argc) { wwarning(_("too few arguments for %s"), argv[i - 1]); exit(0); } DisplayName = argv[i]; } } DisplayName = XDisplayName(DisplayName); len = strlen(DisplayName) + 64; str = wmalloc(len); snprintf(str, len, "DISPLAY=%s", DisplayName); putenv(str); if (i_am_the_monitor) return MonitorLoop(argc, argv); else return real_main(argc, argv); } static int real_main(int argc, char **argv) { int i; char *pos; int d, s; setlocale(LC_ALL, ""); wsetabort(wAbort); /* for telling WPrefs what's the name of the wmaker binary being ran */ setenv("WMAKER_BIN_NAME", argv[0], 1); ArgCount = argc; Arguments = wmalloc(sizeof(char *) * (ArgCount + 1)); for (i = 0; i < argc; i++) { Arguments[i] = argv[i]; } /* add the extra option to signal that we're just restarting wmaker */ Arguments[argc - 1] = "--for-real="; Arguments[argc] = NULL; ProgName = strrchr(argv[0], '/'); if (!ProgName) ProgName = argv[0]; else ProgName++; if (argc > 1) { for (i = 1; i < argc; i++) { if (strcmp(argv[i], "-nocpp") == 0 || strcmp(argv[i], "--no-cpp") == 0) { wwarning(_("option \"%s\" is deprecated, please remove it from your script"), argv[i]); } else if (strcmp(argv[i], "--for-real") == 0) { wPreferences.flags.restarting = 0; } else if (strcmp(argv[i], "--for-real=") == 0) { wPreferences.flags.restarting = 1; } else if (strcmp(argv[i], "--for-real-") == 0) { wPreferences.flags.restarting = 2; } else if (strcmp(argv[i], "-no-autolaunch") == 0 || strcmp(argv[i], "--no-autolaunch") == 0) { wPreferences.flags.noautolaunch = 1; } else if (strcmp(argv[i], "-dont-restore") == 0 || strcmp(argv[i], "--dont-restore") == 0) { wPreferences.flags.norestore = 1; } else if (strcmp(argv[i], "-nodock") == 0 || strcmp(argv[i], "--no-dock") == 0) { wPreferences.flags.nodock = 1; wPreferences.flags.nodrawer = 1; } else if (strcmp(argv[i], "-noclip") == 0 || strcmp(argv[i], "--no-clip") == 0) { wPreferences.flags.noclip = 1; } else if (strcmp(argv[i], "-nodrawer") == 0 || strcmp(argv[i], "--no-drawer") == 0) { wPreferences.flags.nodrawer = 1; #ifdef USE_ICCCM_WMREPLACE } else if (strcmp(argv[i], "-replace") == 0 || strcmp(argv[i], "--replace") == 0) { wPreferences.flags.replace = 1; #endif } else if (strcmp(argv[i], "-version") == 0 || strcmp(argv[i], "--version") == 0) { printf("Window Maker %s\n", VERSION); exit(0); } else if (strcmp(argv[i], "--global_defaults_path") == 0) { printf("%s\n", DEFSDATADIR); exit(0); } else if (strcmp(argv[i], "-locale") == 0 || strcmp(argv[i], "--locale") == 0) { i++; if (i >= argc) { wwarning(_("too few arguments for %s"), argv[i - 1]); exit(0); } w_global.locale = argv[i]; } else if (strcmp(argv[i], "-display") == 0 || strcmp(argv[i], "--display") == 0) { i++; if (i >= argc) { wwarning(_("too few arguments for %s"), argv[i - 1]); exit(0); } DisplayName = argv[i]; } else if (strcmp(argv[i], "-visualid") == 0 || strcmp(argv[i], "--visual-id") == 0) { i++; if (i >= argc) { wwarning(_("too few arguments for %s"), argv[i - 1]); exit(0); } if (initWVisualID(argv[i]) != 0) { wwarning(_("bad value for visualid: \"%s\""), argv[i]); exit(0); } } else if (strcmp(argv[i], "-static") == 0 || strcmp(argv[i], "--static") == 0) { wPreferences.flags.noupdates = 1; } else if (strcmp(argv[i], "--no-polling") == 0) { #ifndef HAVE_INOTIFY wPreferences.flags.noupdates = 1; #else wmessage(_("your version of Window Maker was compiled with INotify support, so \"--no-polling\" has no effect")); #endif } else if (strcmp(argv[i], "--help") == 0) { print_help(); exit(0); } else { printf(_("%s: invalid argument '%s'\n"), argv[0], argv[i]); printf(_("Try '%s --help' for more information\n"), argv[0]); exit(1); } } } if (!wPreferences.flags.noupdates) { /* check existence of Defaults DB directory */ check_defaults(); } if (w_global.locale) { setenv("LANG", w_global.locale, 1); } else { w_global.locale = getenv("LC_ALL"); if (!w_global.locale) { w_global.locale = getenv("LANG"); } } setlocale(LC_ALL, ""); if (!w_global.locale || strcmp(w_global.locale, "C") == 0 || strcmp(w_global.locale, "POSIX") == 0) w_global.locale = NULL; #ifdef I18N if (getenv("NLSPATH")) { bindtextdomain("WindowMaker", getenv("NLSPATH")); #if defined(MENU_TEXTDOMAIN) bindtextdomain(MENU_TEXTDOMAIN, getenv("NLSPATH")); #endif } else { bindtextdomain("WindowMaker", LOCALEDIR); #if defined(MENU_TEXTDOMAIN) bindtextdomain(MENU_TEXTDOMAIN, LOCALEDIR); #endif } bind_textdomain_codeset("WindowMaker", "UTF-8"); #if defined(MENU_TEXTDOMAIN) bind_textdomain_codeset(MENU_TEXTDOMAIN, "UTF-8"); #endif textdomain("WindowMaker"); if (!XSupportsLocale()) { wwarning(_("X server does not support locale")); } if (XSetLocaleModifiers("") == NULL) { wwarning(_("cannot set locale modifiers")); } #endif if (w_global.locale) { char *ptr; w_global.locale = wstrdup(w_global.locale); ptr = strchr(w_global.locale, '.'); if (ptr) *ptr = 0; } /* open display */ dpy = XOpenDisplay(DisplayName); if (dpy == NULL) { wfatal(_("could not open display \"%s\""), XDisplayName(DisplayName)); exit(1); } if (fcntl(ConnectionNumber(dpy), F_SETFD, FD_CLOEXEC) < 0) { werror("error setting close-on-exec flag for X connection"); exit(1); } if (getWVisualID(0) < 0) { /* * If unspecified, use default visual instead of waiting * for wrlib/context.c:bestContext() that may end up choosing * the "fake" 24 bits added by the Composite extension. * This is required to avoid all sort of corruptions when * composite is enabled, and at a depth other than 24. */ setWVisualID(0, (int)DefaultVisual(dpy, DefaultScreen(dpy))->visualid); } /* check if the user specified a complete display name (with screen). * If so, only manage the specified screen */ if (DisplayName) pos = strchr(DisplayName, ':'); else pos = NULL; if (pos && sscanf(pos, ":%i.%i", &d, &s) == 2) multiHead = False; DisplayName = XDisplayName(DisplayName); setenv("DISPLAY", DisplayName, 1); wXModifierInitialize(); StartUp(!multiHead); if (w_global.screen_count == 1) multiHead = False; execInitScript(); #ifdef HAVE_INOTIFY inotifyWatchConfig(); #endif EventLoop(); return -1; } �����������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/osdep_stub.c�����������������������������������������������������������������0000644�0001750�0001750�00000001342�13431646202�014071� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ #include <sys/utsname.h> #include <WINGs/WUtil.h> #include "wconfig.h" #include "osdep.h" Bool GetCommandForPid(int pid, char ***argv, int *argc) { static int notified = 0; if (!notified) { struct utsname un; /* The comment below is placed in the PO file by xgettext to help translator */ if (uname(&un) != -1) { /* * 1st %s is a function name * 2nd %s is an email address * 3rd %s is the name of the operating system */ wwarning(_("%s is not implemented on this platform; " "tell %s you are running %s release %s version %s"), __FUNCTION__, PACKAGE_BUGREPORT, un.sysname, un.release, un.version); notified = 1; } } *argv = NULL; *argc = 0; return False; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WindowMaker-0.95.9/src/texture.h��������������������������������������������������������������������0000644�0001750�0001750�00000011023�13431646202�013424� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Window Maker window manager * * Copyright (c) 1997-2003 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef WMTEXTURE_H_ #define WMTEXTURE_H_ #include "screen.h" #include "wcore.h" /* texture relief */ #define WREL_RAISED 0 #define WREL_SUNKEN 1 #define WREL_FLAT 2 #define WREL_ICON 4 #define WREL_MENUENTRY 6 /* texture types */ #define WREL_BORDER_MASK 1 #define WTEX_SOLID ((1<<1)|WREL_BORDER_MASK) #define WTEX_HGRADIENT ((1<<2)|WREL_BORDER_MASK) #define WTEX_VGRADIENT ((1<<3)|WREL_BORDER_MASK) #define WTEX_DGRADIENT ((1<<4)|WREL_BORDER_MASK) #define WTEX_MHGRADIENT ((1<<5)|WREL_BORDER_MASK) #define WTEX_MVGRADIENT ((1<<6)|WREL_BORDER_MASK) #define WTEX_MDGRADIENT ((1<<7)|WREL_BORDER_MASK) #define WTEX_IGRADIENT ((1<<8)|WREL_BORDER_MASK) #define WTEX_PIXMAP (1<<10) #define WTEX_THGRADIENT ((1<<11)|WREL_BORDER_MASK) #define WTEX_TVGRADIENT ((1<<12)|WREL_BORDER_MASK) #define WTEX_TDGRADIENT ((1<<13)|WREL_BORDER_MASK) #define WTEX_FUNCTION ((1<<14)|WREL_BORDER_MASK) /* pixmap subtypes */ #define WTP_TILE 2 #define WTP_SCALE 4 #define WTP_CENTER 6 typedef struct { short type; /* type of texture */ char subtype; /* subtype of the texture */ XColor color; /* default background color */ GC gc; /* gc for the background color */ } WTexAny; typedef struct WTexSolid { short type; char subtype; XColor normal; GC normal_gc; GC light_gc; GC dim_gc; GC dark_gc; XColor light; XColor dim; XColor dark; } WTexSolid; typedef struct WTexGradient { short type; char subtype; XColor normal; GC normal_gc; RColor color1; RColor color2; } WTexGradient; typedef struct WTexMGradient { short type; char subtype; XColor normal; GC normal_gc; RColor **colors; } WTexMGradient; typedef struct WTexIGradient { short type; char dummy; XColor normal; GC normal_gc; RColor colors1[2]; RColor colors2[2]; int thickness1; int thickness2; } WTexIGradient; typedef struct WTexPixmap { short type; char subtype; XColor normal; GC normal_gc; struct RImage *pixmap; } WTexPixmap; typedef struct WTexTGradient { short type; char subtype; XColor normal; GC normal_gc; RColor color1; RColor color2; struct RImage *pixmap; int opacity; } WTexTGradient; typedef struct WTexFunction { short type; char subtype; XColor normal; GC normal_gc; void *handle; RImage *(*render) (int, char**, int, int, int); int argc; char **argv; } WTexFunction; typedef union WTexture { WTexAny any; WTexSolid solid; WTexGradient gradient; WTexIGradient igradient; WTexMGradient mgradient; WTexPixmap pixmap; WTexTGradient tgradient; WTexFunction function; } WTexture; WTexSolid *wTextureMakeSolid(WScreen*, XColor*); WTexGradient *wTextureMakeGradient(WScreen*, int, const RColor*, const RColor*); WTexMGradient *wTextureMakeMGradient(WScreen*, int, RColor**); WTexTGradient *wTextureMakeTGradient(WScreen*, int, const RColor*, const RColor*, const char *, int); WTexIGradient *wTextureMakeIGradient(WScreen*, int, const RColor[], int, const RColor[]); WTexPixmap *wTextureMakePixmap(WScreen *scr, int style, const char *pixmap_file, XColor *color); void wTextureDestroy(WScreen*, WTexture*); void wTexturePaint(WTexture *, Pixmap *, WCoreWindow*, int, int); void wTextureRender(WScreen*, WTexture*, Pixmap*, int, int, int); struct RImage *wTextureRenderImage(WTexture*, int, int, int); void wTexturePaintTitlebar(struct WWindow *wwin, WTexture *texture, Pixmap *tdata, int repaint); #define FREE_PIXMAP(p) if ((p)!=None) XFreePixmap(dpy, (p)), (p)=None void wDrawBevel(Drawable d, unsigned width, unsigned height, WTexSolid *texture, int relief); #endif ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������